Skip to content

Commit 23d840f

Browse files
Merge pull request #5 from Chintanpatel24/fix-installation-and-symlink
fix: resolve installation symlinks, support skip setup, and add relea…
2 parents 936cb2a + ed3dc9f commit 23d840f

3 files changed

Lines changed: 60 additions & 4 deletions

File tree

src/config/load.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,30 @@ function providerDefaults(provider: ProviderId): {
146146
model: "qwen2.5-coder:14b",
147147
envKey: "OLLAMA_API_KEY",
148148
};
149+
case "groq":
150+
return {
151+
baseUrl: "https://api.groq.com/openai/v1",
152+
model: "llama-3.3-70b-versatile",
153+
envKey: "GROQ_API_KEY",
154+
};
155+
case "deepseek":
156+
return {
157+
baseUrl: "https://api.deepseek.com/v1",
158+
model: "deepseek-chat",
159+
envKey: "DEEPSEEK_API_KEY",
160+
};
161+
case "gemini":
162+
return {
163+
baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
164+
model: "gemini-2.5-flash",
165+
envKey: "GEMINI_API_KEY",
166+
};
167+
case "openrouter":
168+
return {
169+
baseUrl: "https://openrouter.ai/api/v1",
170+
model: "google/gemini-2.5-flash",
171+
envKey: "OPENROUTER_API_KEY",
172+
};
149173
default:
150174
return {
151175
baseUrl: DEFAULT_OPENAI_BASE,

src/config/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/** Shared types for ArrowCode — swarm multi-agent coding harness. */
22

3-
export type ProviderId = "nim" | "openai" | "anthropic" | "ollama" | "custom";
3+
export type ProviderId = "nim" | "openai" | "anthropic" | "ollama" | "groq" | "deepseek" | "gemini" | "openrouter" | "custom";
44

55
export type AgentId = "orchestrator" | "frontend" | "backend" | "tester";
66

src/setup/wizard.ts

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,15 @@ export async function runSetupWizard(): Promise<boolean> {
7575
console.log(" 2) OpenAI");
7676
console.log(" 3) Anthropic");
7777
console.log(" 4) Ollama (local, no key)");
78-
console.log(" 5) Custom OpenAI-compatible base URL");
78+
console.log(" 5) Groq (fast, api.groq.com)");
79+
console.log(" 6) DeepSeek (api.deepseek.com)");
80+
console.log(" 7) Gemini (Google OpenAI-compatible API)");
81+
console.log(" 8) OpenRouter (openrouter.ai)");
82+
console.log(" 9) Custom OpenAI-compatible base URL");
7983
console.log(" 0) Cancel / Set up later");
8084
console.log("");
8185

82-
const pAns = await ask(rl, " Choose [0-5] (default 1): ");
86+
const pAns = await ask(rl, " Choose [0-9] (default 1): ");
8387
if (pAns === "0" || pAns.toLowerCase() === "cancel") {
8488
console.log("");
8589
console.log(" No problem! You can configure ArrowCode later by running: arrowcode --setup");
@@ -93,7 +97,11 @@ export async function runSetupWizard(): Promise<boolean> {
9397
"2": "openai",
9498
"3": "anthropic",
9599
"4": "ollama",
96-
"5": "custom",
100+
"5": "groq",
101+
"6": "deepseek",
102+
"7": "gemini",
103+
"8": "openrouter",
104+
"9": "custom",
97105
};
98106
const provider = map[pAns] || "nim";
99107

@@ -136,6 +144,30 @@ export async function runSetupWizard(): Promise<boolean> {
136144
baseUrl = b || baseUrl;
137145
const m = await ask(rl, ` Model (default ${model}): `);
138146
model = m || model;
147+
} else if (provider === "groq") {
148+
baseUrl = "https://api.groq.com/openai/v1";
149+
model = "llama-3.3-70b-versatile";
150+
apiKey = await ask(rl, " Groq API key: ");
151+
const m = await ask(rl, ` Model (default ${model}): `);
152+
model = m || model;
153+
} else if (provider === "deepseek") {
154+
baseUrl = "https://api.deepseek.com/v1";
155+
model = "deepseek-chat";
156+
apiKey = await ask(rl, " DeepSeek API key: ");
157+
const m = await ask(rl, ` Model (default ${model}): `);
158+
model = m || model;
159+
} else if (provider === "gemini") {
160+
baseUrl = "https://generativelanguage.googleapis.com/v1beta/openai";
161+
model = "gemini-2.5-flash";
162+
apiKey = await ask(rl, " Gemini API key: ");
163+
const m = await ask(rl, ` Model (default ${model}): `);
164+
model = m || model;
165+
} else if (provider === "openrouter") {
166+
baseUrl = "https://openrouter.ai/api/v1";
167+
model = "google/gemini-2.5-flash";
168+
apiKey = await ask(rl, " OpenRouter API key: ");
169+
const m = await ask(rl, ` Model (default ${model}): `);
170+
model = m || model;
139171
} else {
140172
baseUrl =
141173
(await ask(rl, " Base URL (e.g. http://localhost:8000/v1): ")) ||

0 commit comments

Comments
 (0)