Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ See the full history in [CHANGELOG.md](CHANGELOG.md).
| MiniMax | API / Cookies | Usage, Billing Summary |
| Kiro | Cookies / CLI | Monthly Credits, Overage |
| Vertex AI | gcloud OAuth | Cost |
| v0 | API Key | Billing quota, API rate limits, on-demand balance |
| Augment | Cookies | Credits |
| OpenCode | Local Config | Usage |
| Kimi | Cookies | 5h Rate, Weekly |
Expand All @@ -89,6 +90,7 @@ See the full history in [CHANGELOG.md](CHANGELOG.md).
| Ollama | Cookies / API Key | Usage, Cloud Models, Pace windows |
| Azure OpenAI | API Key | Deployment |
| T3 Chat | Cookies / cURL | Base, Overage |
| TypeSafe | Browser cookies / manual Cookie header | Billing-cycle spend, balance, expiring credits |
| OpenRouter | API Key | Credits |
| JetBrains AI | Local Config | Usage |
| Alibaba | Cookies | Usage |
Expand All @@ -112,6 +114,7 @@ See the full history in [CHANGELOG.md](CHANGELOG.md).
| Venice | API Key | USD / DIEM Balance |
| OpenAI | Admin API / API Key | Usage, Requests, Project-scoped cost, Credit Balance |
| Grok | Cookies / auth.json | Billing |
| Helmcode (also NaN Builders) | Browser cookies / manual Cookie header | Per-model token quotas, reset windows, Helmcode prepaid balance |
| Replicate | Cookies / token accounts | Monthly spend, credit balance |
| ElevenLabs | API Key | Subscription Credits, Voice Slots |
| Deepgram | API Key | Project Usage |
Expand Down
36 changes: 36 additions & 0 deletions apps/desktop-tauri/src-tauri/src/commands/provider_settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,8 @@ fn cookie_source_provider(provider_id: &str) -> Option<codexbar::core::ProviderI
"notion" => ProviderId::Notion,
"grok" => ProviderId::Grok,
"replicate" => ProviderId::Replicate,
"helmcode" => ProviderId::Helmcode,
"typesafe" => ProviderId::TypeSafe,
_ => return None,
})
}
Expand Down Expand Up @@ -325,6 +327,8 @@ fn workspace_provider(provider_id: &str) -> Option<codexbar::core::ProviderId> {
"opencodego" => ProviderId::OpenCodeGo,
"zed" => ProviderId::Zed,
"xai" => ProviderId::Xai,
"v0" => ProviderId::V0,
"helmcode" => ProviderId::Helmcode,
_ => return None,
})
}
Expand Down Expand Up @@ -745,6 +749,38 @@ pub fn cookie_source_options_for(provider_id: &str, lang: Language) -> Vec<Cooki
None,
),
],
"helmcode" => vec![
cookie_option(
lang,
"auto",
"Automatically imports the signed-in Helmcode or NaN Builders browser session.",
"",
None,
),
cookie_option(
lang,
"manual",
"",
"Paste a Cookie header and select the tenant in the workspace field.",
None,
),
],
"typesafe" => vec![
cookie_option(
lang,
"auto",
"Automatically imports the signed-in TypeSafe console session.",
"",
None,
),
cookie_option(
lang,
"manual",
"",
"Paste a Cookie header from the TypeSafe billing page.",
None,
),
],
_ => Vec::new(),
}
}
Expand Down
3 changes: 3 additions & 0 deletions apps/desktop-tauri/src/components/providers/providerIcons.ts
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,9 @@ export const PROVIDER_ICON_REGISTRY: Record<string, ProviderIcon> = {
grok: { id: "grok", brandColor: "#111827", fallbackLetter: "G", svgPath: RAW.grok },
groq: { id: "groq", brandColor: "#f55036", fallbackLetter: "G", svgPath: RAW.groq },
huggingface: { id: "huggingface", brandColor: "#ffd21e", fallbackLetter: "H", svgPath: RAW.huggingface },
helmcode: { id: "helmcode", brandColor: "#4f46e5", fallbackLetter: "H" },
v0: { id: "v0", brandColor: "#111827", fallbackLetter: "V" },
typesafe: { id: "typesafe", brandColor: "#2563eb", fallbackLetter: "T" },
jetbrains: { id: "jetbrains", brandColor: "#ff3399", fallbackLetter: "J", svgPath: RAW.jetbrains },
kilo: { id: "kilo", brandColor: "#5d87ff", fallbackLetter: "K", svgPath: RAW.kilo },
bedrock: { id: "bedrock", brandColor: "#ff9900", fallbackLetter: "B", svgPath: RAW.bedrock },
Expand Down
3 changes: 3 additions & 0 deletions apps/desktop-tauri/src/test/providerCatalog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ export const TEST_PROVIDER_CATALOG: Array<[string, string]> = [
["deepgram", "Deepgram"],
["groq", "Groq"],
["huggingface", "Hugging Face"],
["helmcode", "Helmcode"],
["v0", "v0"],
["typesafe", "TypeSafe"],
["llmproxy", "LLM Proxy"],
["chutes", "Chutes"],
["litellm", "LiteLLM"],
Expand Down
29 changes: 28 additions & 1 deletion rust/src/core/provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@ pub enum ProviderId {
Deepgram,
Groq,
HuggingFace,
Helmcode,
V0,
TypeSafe,
LLMProxy,
Chutes,
LiteLLM,
Expand Down Expand Up @@ -148,6 +151,9 @@ impl ProviderId {
ProviderId::Deepgram,
ProviderId::Groq,
ProviderId::HuggingFace,
ProviderId::Helmcode,
ProviderId::V0,
ProviderId::TypeSafe,
ProviderId::LLMProxy,
ProviderId::Chutes,
ProviderId::LiteLLM,
Expand Down Expand Up @@ -235,6 +241,9 @@ impl ProviderId {
ProviderId::Deepgram => "deepgram",
ProviderId::Groq => "groq",
ProviderId::HuggingFace => "huggingface",
ProviderId::Helmcode => "helmcode",
ProviderId::V0 => "v0",
ProviderId::TypeSafe => "typesafe",
ProviderId::LLMProxy => "llmproxy",
ProviderId::Chutes => "chutes",
ProviderId::LiteLLM => "litellm",
Expand Down Expand Up @@ -319,6 +328,9 @@ impl ProviderId {
ProviderId::Deepgram => "Deepgram",
ProviderId::Groq => "Groq",
ProviderId::HuggingFace => "Hugging Face",
ProviderId::Helmcode => "Helmcode",
ProviderId::V0 => "v0",
ProviderId::TypeSafe => "TypeSafe",
ProviderId::LLMProxy => "LLM Proxy",
ProviderId::Chutes => "Chutes",
ProviderId::LiteLLM => "LiteLLM",
Expand Down Expand Up @@ -413,6 +425,9 @@ impl ProviderId {
ProviderId::Deepgram => None,
ProviderId::Groq => None,
ProviderId::HuggingFace => None,
ProviderId::Helmcode => Some("helmcode.com"),
ProviderId::TypeSafe => Some("typesafe.ai"),
ProviderId::V0 => None,
ProviderId::LLMProxy => None,
ProviderId::Chutes => None,
ProviderId::LiteLLM => None,
Expand Down Expand Up @@ -502,6 +517,9 @@ impl ProviderId {
"deepgram" | "dg" => Some(ProviderId::Deepgram),
"groq" | "groqcloud" | "groq-cloud" | "groq cloud" => Some(ProviderId::Groq),
"huggingface" | "hugging-face" | "hugging face" | "hf" => Some(ProviderId::HuggingFace),
"helmcode" | "nan-builders" | "nan builders" => Some(ProviderId::Helmcode),
"v0" | "v0-dev" | "v0.dev" => Some(ProviderId::V0),
"typesafe" | "type-safe" | "type safe" => Some(ProviderId::TypeSafe),
"llmproxy" | "llm-proxy" | "llm proxy" => Some(ProviderId::LLMProxy),
"chutes" | "chutes-ai" | "chutes ai" => Some(ProviderId::Chutes),
"litellm" | "lite-llm" | "lite llm" => Some(ProviderId::LiteLLM),
Expand Down Expand Up @@ -988,6 +1006,9 @@ pub fn cli_name_map() -> HashMap<&'static str, ProviderId> {
map.insert("groq-cloud", ProviderId::Groq);
map.insert("hugging-face", ProviderId::HuggingFace);
map.insert("hf", ProviderId::HuggingFace);
map.insert("nan-builders", ProviderId::Helmcode);
map.insert("v0-dev", ProviderId::V0);
map.insert("type-safe", ProviderId::TypeSafe);
map.insert("chutes-ai", ProviderId::Chutes);
map.insert("lite-llm", ProviderId::LiteLLM);
map.insert("zed-ai", ProviderId::Zed);
Expand Down Expand Up @@ -1057,6 +1078,9 @@ pub fn brand_color(id: ProviderId) -> &'static str {
ProviderId::Deepgram => "#13EF93",
ProviderId::Groq => "#F55036",
ProviderId::HuggingFace => "#FFD21E",
ProviderId::Helmcode => "#4F46E5",
ProviderId::V0 => "#111827",
ProviderId::TypeSafe => "#2563EB",
ProviderId::LLMProxy => "#4F46E5",
ProviderId::Chutes => "#FF5C35",
ProviderId::LiteLLM => "#0EA5E9",
Expand Down Expand Up @@ -1096,7 +1120,7 @@ mod tests {
#[test]
fn test_provider_id_all() {
let all = ProviderId::all();
assert_eq!(all.len(), 77);
assert_eq!(all.len(), 80);
assert!(all.contains(&ProviderId::Claude));
assert!(all.contains(&ProviderId::Codex));
assert!(all.contains(&ProviderId::Pi));
Expand Down Expand Up @@ -1130,6 +1154,9 @@ mod tests {
assert!(all.contains(&ProviderId::Deepgram));
assert!(all.contains(&ProviderId::Groq));
assert!(all.contains(&ProviderId::HuggingFace));
assert!(all.contains(&ProviderId::Helmcode));
assert!(all.contains(&ProviderId::V0));
assert!(all.contains(&ProviderId::TypeSafe));
assert!(all.contains(&ProviderId::LLMProxy));
assert!(all.contains(&ProviderId::Chutes));
assert!(all.contains(&ProviderId::LiteLLM));
Expand Down
22 changes: 13 additions & 9 deletions rust/src/core/provider_factory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,16 @@ use crate::providers::{
CodexProvider, CommandCodeProvider, CopilotProvider, CrofProvider, CrossModelProvider,
CursorProvider, DeepInfraProvider, DeepSeekProvider, DeepgramProvider, DevinProvider,
DoubaoProvider, ElevenLabsProvider, FactoryProvider, FireworksProvider, GeminiProvider,
GrokProvider, GroqProvider, HuggingFaceProvider, InfiniProvider, JetBrainsProvider,
KiloProvider, KimiK2Provider, KimiProvider, KiroProvider, LLMProxyProvider, LiteLLMProvider,
LongCatProvider, ManusProvider, MetaProvider, MiMoProvider, MiniMaxProvider, MistralProvider,
MuseProvider, NanoGPTProvider, NeuralwattProvider, NotionProvider, NousProvider,
OllamaProvider, OpenAIApiProvider, OpenCodeGoProvider, OpenCodeProvider, OpenRouterProvider,
PerplexityProvider, PiProvider, PoeProvider, QoderProvider, QwenCloudProvider,
ReplicateProvider, SakanaProvider, StepFunProvider, Sub2ApiProvider, T3ChatProvider,
VeniceProvider, VertexAIProvider, WarpProvider, WayfinderProvider, WindsurfProvider,
XaiProvider, ZaiProvider, ZedProvider, ZenMuxProvider, ZoomMateProvider,
GrokProvider, GroqProvider, HelmcodeProvider, HuggingFaceProvider, InfiniProvider,
JetBrainsProvider, KiloProvider, KimiK2Provider, KimiProvider, KiroProvider, LLMProxyProvider,
LiteLLMProvider, LongCatProvider, ManusProvider, MetaProvider, MiMoProvider, MiniMaxProvider,
MistralProvider, MuseProvider, NanoGPTProvider, NeuralwattProvider, NotionProvider,
NousProvider, OllamaProvider, OpenAIApiProvider, OpenCodeGoProvider, OpenCodeProvider,
OpenRouterProvider, PerplexityProvider, PiProvider, PoeProvider, QoderProvider,
QwenCloudProvider, ReplicateProvider, SakanaProvider, StepFunProvider, Sub2ApiProvider,
T3ChatProvider, TypeSafeProvider, V0Provider, VeniceProvider, VertexAIProvider, WarpProvider,
WayfinderProvider, WindsurfProvider, XaiProvider, ZaiProvider, ZedProvider, ZenMuxProvider,
ZoomMateProvider,
};

/// Instantiate the concrete [`Provider`] implementation for a given [`ProviderId`].
Expand Down Expand Up @@ -82,6 +83,9 @@ pub fn instantiate(id: ProviderId) -> Box<dyn Provider> {
ProviderId::Deepgram => Box::new(DeepgramProvider::new()),
ProviderId::Groq => Box::new(GroqProvider::new()),
ProviderId::HuggingFace => Box::new(HuggingFaceProvider::new()),
ProviderId::Helmcode => Box::new(HelmcodeProvider::new()),
ProviderId::V0 => Box::new(V0Provider::new()),
ProviderId::TypeSafe => Box::new(TypeSafeProvider::new()),
ProviderId::LLMProxy => Box::new(LLMProxyProvider::new()),
ProviderId::Chutes => Box::new(ChutesProvider::new()),
ProviderId::LiteLLM => Box::new(LiteLLMProvider::new()),
Expand Down
3 changes: 3 additions & 0 deletions rust/src/core/token_accounts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,9 @@ impl TokenAccountSupport {
| ProviderId::ElevenLabs
| ProviderId::Deepgram
| ProviderId::Groq
| ProviderId::Helmcode
| ProviderId::V0
| ProviderId::TypeSafe
| ProviderId::LLMProxy
| ProviderId::Chutes
| ProviderId::LiteLLM
Expand Down
Loading