1use serde::{Deserialize, Serialize};
2use strum::{Display, EnumIter, EnumString};
3
4pub const EXPIRED_LLM_TOKEN_HEADER_NAME: &str = "x-zed-expired-token";
5
6#[derive(
7 Debug, PartialEq, Eq, Hash, Clone, Copy, Serialize, Deserialize, EnumString, EnumIter, Display,
8)]
9#[serde(rename_all = "snake_case")]
10#[strum(serialize_all = "snake_case")]
11pub enum LanguageModelProvider {
12 Anthropic,
13 OpenAi,
14 Google,
15}
16
17#[derive(Debug, Serialize, Deserialize)]
18pub struct LanguageModel {
19 pub provider: LanguageModelProvider,
20 pub name: String,
21}
22
23#[derive(Debug, Serialize, Deserialize)]
24pub struct ListModelsResponse {
25 pub models: Vec<LanguageModel>,
26}
27
28#[derive(Debug, Serialize, Deserialize)]
29pub struct PerformCompletionParams {
30 pub provider: LanguageModelProvider,
31 pub model: String,
32 pub provider_request: Box<serde_json::value::RawValue>,
33}