vegas-chat 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/autocomplete.d.ts +11 -0
- package/dist/autocomplete.d.ts.map +1 -0
- package/dist/autocomplete.js +215 -0
- package/dist/autocomplete.js.map +1 -0
- package/dist/coding/analyzer.d.ts +14 -0
- package/dist/coding/analyzer.d.ts.map +1 -0
- package/dist/coding/analyzer.js +245 -0
- package/dist/coding/analyzer.js.map +1 -0
- package/dist/coding/linter.d.ts +15 -0
- package/dist/coding/linter.d.ts.map +1 -0
- package/dist/coding/linter.js +118 -0
- package/dist/coding/linter.js.map +1 -0
- package/dist/coding/refactor.d.ts +14 -0
- package/dist/coding/refactor.d.ts.map +1 -0
- package/dist/coding/refactor.js +158 -0
- package/dist/coding/refactor.js.map +1 -0
- package/dist/coding/tester.d.ts +16 -0
- package/dist/coding/tester.d.ts.map +1 -0
- package/dist/coding/tester.js +118 -0
- package/dist/coding/tester.js.map +1 -0
- package/dist/commands/apikey.d.ts +4 -0
- package/dist/commands/apikey.d.ts.map +1 -0
- package/dist/commands/apikey.js +48 -0
- package/dist/commands/apikey.js.map +1 -0
- package/dist/commands/clear.d.ts +3 -0
- package/dist/commands/clear.d.ts.map +1 -0
- package/dist/commands/clear.js +11 -0
- package/dist/commands/clear.js.map +1 -0
- package/dist/commands/coding.d.ts +3 -0
- package/dist/commands/coding.d.ts.map +1 -0
- package/dist/commands/coding.js +106 -0
- package/dist/commands/coding.js.map +1 -0
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +56 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/exit.d.ts +3 -0
- package/dist/commands/exit.d.ts.map +1 -0
- package/dist/commands/exit.js +10 -0
- package/dist/commands/exit.js.map +1 -0
- package/dist/commands/help.d.ts +3 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +46 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/index.d.ts +4 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +52 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/model.d.ts +4 -0
- package/dist/commands/model.d.ts.map +1 -0
- package/dist/commands/model.js +36 -0
- package/dist/commands/model.js.map +1 -0
- package/dist/commands/models.d.ts +4 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +123 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/provider.d.ts +4 -0
- package/dist/commands/provider.d.ts.map +1 -0
- package/dist/commands/provider.js +118 -0
- package/dist/commands/provider.js.map +1 -0
- package/dist/commands/session.d.ts +5 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +255 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/skills.d.ts +3 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +69 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/tools.d.ts +4 -0
- package/dist/commands/tools.d.ts.map +1 -0
- package/dist/commands/tools.js +59 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commands/version.d.ts +4 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +17 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/config.d.ts +21 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +110 -0
- package/dist/config.js.map +1 -0
- package/dist/database.d.ts +59 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +212 -0
- package/dist/database.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/loop/autoFix.d.ts +12 -0
- package/dist/loop/autoFix.d.ts.map +1 -0
- package/dist/loop/autoFix.js +42 -0
- package/dist/loop/autoFix.js.map +1 -0
- package/dist/modelCache.d.ts +3 -0
- package/dist/modelCache.d.ts.map +1 -0
- package/dist/modelCache.js +10 -0
- package/dist/modelCache.js.map +1 -0
- package/dist/provider/anthropic.d.ts +10 -0
- package/dist/provider/anthropic.d.ts.map +1 -0
- package/dist/provider/anthropic.js +106 -0
- package/dist/provider/anthropic.js.map +1 -0
- package/dist/provider/google.d.ts +11 -0
- package/dist/provider/google.d.ts.map +1 -0
- package/dist/provider/google.js +113 -0
- package/dist/provider/google.js.map +1 -0
- package/dist/provider/interface.d.ts +3 -0
- package/dist/provider/interface.d.ts.map +1 -0
- package/dist/provider/interface.js +2 -0
- package/dist/provider/interface.js.map +1 -0
- package/dist/provider/openai-compatible.d.ts +10 -0
- package/dist/provider/openai-compatible.d.ts.map +1 -0
- package/dist/provider/openai-compatible.js +90 -0
- package/dist/provider/openai-compatible.js.map +1 -0
- package/dist/provider/registry.d.ts +9 -0
- package/dist/provider/registry.d.ts.map +1 -0
- package/dist/provider/registry.js +118 -0
- package/dist/provider/registry.js.map +1 -0
- package/dist/provider/zen.d.ts +11 -0
- package/dist/provider/zen.d.ts.map +1 -0
- package/dist/provider/zen.js +120 -0
- package/dist/provider/zen.js.map +1 -0
- package/dist/repl.d.ts +23 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +387 -0
- package/dist/repl.js.map +1 -0
- package/dist/skills/loader.d.ts +14 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +109 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/matcher.d.ts +11 -0
- package/dist/skills/matcher.d.ts.map +1 -0
- package/dist/skills/matcher.js +51 -0
- package/dist/skills/matcher.js.map +1 -0
- package/dist/tools/bash.d.ts +3 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +59 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/edit.d.ts +3 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +75 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/glob.d.ts +3 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +93 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +3 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +119 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/read.d.ts +3 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +52 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/registry.d.ts +6 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +48 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/webFetch.d.ts +3 -0
- package/dist/tools/webFetch.d.ts.map +1 -0
- package/dist/tools/webFetch.js +57 -0
- package/dist/tools/webFetch.js.map +1 -0
- package/dist/tools/webSearch.d.ts +5 -0
- package/dist/tools/webSearch.d.ts.map +1 -0
- package/dist/tools/webSearch.js +107 -0
- package/dist/tools/webSearch.js.map +1 -0
- package/dist/tools/write.d.ts +3 -0
- package/dist/tools/write.d.ts.map +1 -0
- package/dist/tools/write.js +41 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/types.d.ts +74 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui.d.ts +179 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +481 -0
- package/dist/ui.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { LLMProvider, LLMMessage, LLMResponse, ToolDefinition } from "../types.js";
|
|
2
|
+
export declare class GoogleProvider implements LLMProvider {
|
|
3
|
+
name: string;
|
|
4
|
+
private apiKey;
|
|
5
|
+
private model;
|
|
6
|
+
constructor(apiKey: string, model: string);
|
|
7
|
+
chat(messages: LLMMessage[], tools: ToolDefinition[]): Promise<LLMResponse>;
|
|
8
|
+
private extractSystem;
|
|
9
|
+
private convertMessages;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=google.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/provider/google.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAY,MAAM,aAAa,CAAC;AA2BlG,qBAAa,cAAe,YAAW,WAAW;IAChD,IAAI,SAAY;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKnC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAoEjF,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;CAwCxB"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
export class GoogleProvider {
|
|
2
|
+
name = "google";
|
|
3
|
+
apiKey;
|
|
4
|
+
model;
|
|
5
|
+
constructor(apiKey, model) {
|
|
6
|
+
this.apiKey = apiKey;
|
|
7
|
+
this.model = model;
|
|
8
|
+
}
|
|
9
|
+
async chat(messages, tools) {
|
|
10
|
+
const url = `https://generativelanguage.googleapis.com/v1beta/models/${this.model}:generateContent?key=${this.apiKey}`;
|
|
11
|
+
const body = {
|
|
12
|
+
contents: this.convertMessages(messages),
|
|
13
|
+
systemInstruction: this.extractSystem(messages),
|
|
14
|
+
};
|
|
15
|
+
if (tools.length > 0) {
|
|
16
|
+
body.tools = [
|
|
17
|
+
{
|
|
18
|
+
functionDeclarations: tools.map(t => ({
|
|
19
|
+
name: t.name,
|
|
20
|
+
description: t.description,
|
|
21
|
+
parameters: t.parameters,
|
|
22
|
+
})),
|
|
23
|
+
},
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
const res = await fetch(url, {
|
|
27
|
+
method: "POST",
|
|
28
|
+
headers: { "Content-Type": "application/json" },
|
|
29
|
+
body: JSON.stringify(body),
|
|
30
|
+
});
|
|
31
|
+
if (!res.ok) {
|
|
32
|
+
const err = await res.text();
|
|
33
|
+
throw new Error(`[Google] ${res.status}: ${err}`);
|
|
34
|
+
}
|
|
35
|
+
const data = (await res.json());
|
|
36
|
+
if (!data.candidates || data.candidates.length === 0) {
|
|
37
|
+
throw new Error("[Google] No candidates returned");
|
|
38
|
+
}
|
|
39
|
+
const candidate = data.candidates[0];
|
|
40
|
+
let content = "";
|
|
41
|
+
const toolCalls = [];
|
|
42
|
+
for (const part of candidate.content?.parts || []) {
|
|
43
|
+
if (part.text) {
|
|
44
|
+
content += part.text;
|
|
45
|
+
}
|
|
46
|
+
if (part.functionCall) {
|
|
47
|
+
toolCalls.push({
|
|
48
|
+
id: `fc-${part.functionCall.name}`,
|
|
49
|
+
type: "function",
|
|
50
|
+
function: {
|
|
51
|
+
name: part.functionCall.name,
|
|
52
|
+
arguments: JSON.stringify(part.functionCall.args || {}),
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
content,
|
|
59
|
+
tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
60
|
+
model: this.model,
|
|
61
|
+
usage: data.usageMetadata
|
|
62
|
+
? { input: data.usageMetadata.promptTokenCount, output: data.usageMetadata.candidatesTokenCount }
|
|
63
|
+
: undefined,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
extractSystem(messages) {
|
|
67
|
+
const sys = messages.filter(m => m.role === "system");
|
|
68
|
+
if (sys.length === 0)
|
|
69
|
+
return undefined;
|
|
70
|
+
return { parts: sys.map(m => ({ text: m.content })) };
|
|
71
|
+
}
|
|
72
|
+
convertMessages(messages) {
|
|
73
|
+
const result = [];
|
|
74
|
+
const filtered = messages.filter(m => m.role !== "system");
|
|
75
|
+
for (const msg of filtered) {
|
|
76
|
+
if (msg.role === "tool") {
|
|
77
|
+
result.push({
|
|
78
|
+
role: "function",
|
|
79
|
+
parts: [
|
|
80
|
+
{
|
|
81
|
+
functionResponse: {
|
|
82
|
+
name: msg.name || "unknown",
|
|
83
|
+
response: { content: msg.content },
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
else if (msg.role === "assistant") {
|
|
90
|
+
const parts = [];
|
|
91
|
+
if (msg.content) {
|
|
92
|
+
parts.push({ text: msg.content });
|
|
93
|
+
}
|
|
94
|
+
if (msg.tool_calls) {
|
|
95
|
+
for (const tc of msg.tool_calls) {
|
|
96
|
+
parts.push({
|
|
97
|
+
functionCall: {
|
|
98
|
+
name: tc.function.name,
|
|
99
|
+
args: JSON.parse(tc.function.arguments),
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
result.push({ role: "model", parts });
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
result.push({ role: "user", parts: [{ text: msg.content }] });
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=google.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/provider/google.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/provider/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAExF,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/provider/interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { LLMProvider, LLMMessage, LLMResponse, ToolDefinition } from "../types.js";
|
|
2
|
+
export declare class OpenAICompatibleProvider implements LLMProvider {
|
|
3
|
+
name: string;
|
|
4
|
+
private baseUrl;
|
|
5
|
+
private apiKey;
|
|
6
|
+
private model;
|
|
7
|
+
constructor(name: string, baseUrl: string, apiKey: string, model: string);
|
|
8
|
+
chat(messages: LLMMessage[], tools: ToolDefinition[]): Promise<LLMResponse>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=openai-compatible.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-compatible.d.ts","sourceRoot":"","sources":["../../src/provider/openai-compatible.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAY,MAAM,aAAa,CAAC;AAsBlG,qBAAa,wBAAyB,YAAW,WAAW;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAOlE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;CAmFlF"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export class OpenAICompatibleProvider {
|
|
2
|
+
name;
|
|
3
|
+
baseUrl;
|
|
4
|
+
apiKey;
|
|
5
|
+
model;
|
|
6
|
+
constructor(name, baseUrl, apiKey, model) {
|
|
7
|
+
this.name = name;
|
|
8
|
+
this.baseUrl = baseUrl.replace(/\/+$/, "");
|
|
9
|
+
this.apiKey = apiKey;
|
|
10
|
+
this.model = model;
|
|
11
|
+
}
|
|
12
|
+
async chat(messages, tools) {
|
|
13
|
+
const url = `${this.baseUrl}/chat/completions`;
|
|
14
|
+
const body = {
|
|
15
|
+
model: this.model,
|
|
16
|
+
messages: messages.map(m => {
|
|
17
|
+
const msg = { role: m.role, content: m.content };
|
|
18
|
+
if (m.tool_calls)
|
|
19
|
+
msg.tool_calls = m.tool_calls;
|
|
20
|
+
if (m.tool_call_id)
|
|
21
|
+
msg.tool_call_id = m.tool_call_id;
|
|
22
|
+
if (m.name)
|
|
23
|
+
msg.name = m.name;
|
|
24
|
+
return msg;
|
|
25
|
+
}),
|
|
26
|
+
};
|
|
27
|
+
if (tools.length > 0) {
|
|
28
|
+
body.tools = tools.map(t => ({
|
|
29
|
+
type: "function",
|
|
30
|
+
function: {
|
|
31
|
+
name: t.name,
|
|
32
|
+
description: t.description,
|
|
33
|
+
parameters: t.parameters,
|
|
34
|
+
},
|
|
35
|
+
}));
|
|
36
|
+
body.tool_choice = "auto";
|
|
37
|
+
}
|
|
38
|
+
const headers = {
|
|
39
|
+
"Content-Type": "application/json",
|
|
40
|
+
};
|
|
41
|
+
if (this.apiKey) {
|
|
42
|
+
headers["Authorization"] = `Bearer ${this.apiKey}`;
|
|
43
|
+
}
|
|
44
|
+
const res = await fetch(url, {
|
|
45
|
+
method: "POST",
|
|
46
|
+
headers,
|
|
47
|
+
body: JSON.stringify(body),
|
|
48
|
+
});
|
|
49
|
+
if (!res.ok) {
|
|
50
|
+
const err = await res.text();
|
|
51
|
+
throw new Error(`[${this.name}] ${res.status}: ${err.slice(0, 500)}`);
|
|
52
|
+
}
|
|
53
|
+
const buf = await res.arrayBuffer();
|
|
54
|
+
let raw = new TextDecoder("utf-8", { fatal: false }).decode(buf);
|
|
55
|
+
const lastBrace = raw.lastIndexOf("}");
|
|
56
|
+
if (lastBrace > 0)
|
|
57
|
+
raw = raw.slice(0, lastBrace + 1);
|
|
58
|
+
let data;
|
|
59
|
+
try {
|
|
60
|
+
data = JSON.parse(raw);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
const preview = raw.length > 500 ? raw.slice(0, 500) + "..." : raw;
|
|
64
|
+
throw new Error(`[${this.name}] Invalid JSON (${buf.byteLength} bytes)\n` +
|
|
65
|
+
`First 500 chars:\n${preview}\n` +
|
|
66
|
+
`Last 10 chars (hex): ${raw.slice(-10).split("").map(c => c.charCodeAt(0).toString(16)).join(" ")}`);
|
|
67
|
+
}
|
|
68
|
+
const choice = data.choices[0];
|
|
69
|
+
if (!choice) {
|
|
70
|
+
throw new Error(`[${this.name}] No choices returned`);
|
|
71
|
+
}
|
|
72
|
+
const toolCalls = choice.message.tool_calls?.map(tc => ({
|
|
73
|
+
id: tc.id,
|
|
74
|
+
type: "function",
|
|
75
|
+
function: {
|
|
76
|
+
name: tc.function.name,
|
|
77
|
+
arguments: tc.function.arguments,
|
|
78
|
+
},
|
|
79
|
+
}));
|
|
80
|
+
return {
|
|
81
|
+
content: choice.message.content ?? "",
|
|
82
|
+
tool_calls: toolCalls,
|
|
83
|
+
model: data.model,
|
|
84
|
+
usage: data.usage
|
|
85
|
+
? { input: data.usage.prompt_tokens, output: data.usage.completion_tokens }
|
|
86
|
+
: undefined,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=openai-compatible.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/provider/openai-compatible.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { LLMProvider } from "../types.js";
|
|
2
|
+
import { ConfigManager } from "../config.js";
|
|
3
|
+
export declare function getProviderNames(): string[];
|
|
4
|
+
export declare function getProviderLabel(name: string): string;
|
|
5
|
+
export declare function buildProvider(config: ConfigManager): LLMProvider | null;
|
|
6
|
+
export declare function fetchAvailableModels(providerName: string, baseUrl: string, apiKey: string): Promise<string[]>;
|
|
7
|
+
export declare function getDefaultModel(provider: string): string;
|
|
8
|
+
export declare function hasApiKey(provider: string, config: ConfigManager): boolean;
|
|
9
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/provider/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AA6B7C,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,GAAG,IAAI,CAsCvE;AAED,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,EAAE,CAAC,CAoBnB;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAG1E"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { OpenAICompatibleProvider } from "./openai-compatible.js";
|
|
2
|
+
import { AnthropicProvider } from "./anthropic.js";
|
|
3
|
+
import { GoogleProvider } from "./google.js";
|
|
4
|
+
import { OpenCodeZenProvider } from "./zen.js";
|
|
5
|
+
const PROVIDER_DEFAULTS = {
|
|
6
|
+
openai: { baseUrl: "https://api.openai.com/v1", defaultModel: "gpt-4o" },
|
|
7
|
+
groq: { baseUrl: "https://api.groq.com/openai/v1", defaultModel: "llama-3.3-70b-versatile" },
|
|
8
|
+
deepseek: { baseUrl: "https://api.deepseek.com/v1", defaultModel: "deepseek-chat" },
|
|
9
|
+
openrouter: { baseUrl: "https://openrouter.ai/api/v1", defaultModel: "auto" },
|
|
10
|
+
"9router": { baseUrl: "http://localhost:20128/v1", defaultModel: "oc/deepseek-v4-flash-free" },
|
|
11
|
+
together: { baseUrl: "https://api.together.xyz/v1", defaultModel: "mistralai/Mixtral-8x22B-Instruct-v0.1" },
|
|
12
|
+
xai: { baseUrl: "https://api.x.ai/v1", defaultModel: "grok-2" },
|
|
13
|
+
mistral: { baseUrl: "https://api.mistral.ai/v1", defaultModel: "mistral-large-latest" },
|
|
14
|
+
ollama: { baseUrl: "http://localhost:11434/v1", defaultModel: "llama3" },
|
|
15
|
+
};
|
|
16
|
+
const PROVIDER_NAMES = {
|
|
17
|
+
openai: "OpenAI",
|
|
18
|
+
anthropic: "Anthropic",
|
|
19
|
+
google: "Google Gemini",
|
|
20
|
+
groq: "Groq",
|
|
21
|
+
deepseek: "DeepSeek",
|
|
22
|
+
openrouter: "OpenRouter",
|
|
23
|
+
"9router": "9Router",
|
|
24
|
+
together: "Together AI",
|
|
25
|
+
xai: "xAI (Grok)",
|
|
26
|
+
mistral: "Mistral AI",
|
|
27
|
+
ollama: "Ollama",
|
|
28
|
+
zen: "OpenCode Zen",
|
|
29
|
+
};
|
|
30
|
+
export function getProviderNames() {
|
|
31
|
+
return Object.keys(PROVIDER_NAMES);
|
|
32
|
+
}
|
|
33
|
+
export function getProviderLabel(name) {
|
|
34
|
+
return PROVIDER_NAMES[name] || name;
|
|
35
|
+
}
|
|
36
|
+
export function buildProvider(config) {
|
|
37
|
+
const providerName = config.getProvider();
|
|
38
|
+
const apiKey = config.getApiKey(providerName) || "";
|
|
39
|
+
const model = config.getModel();
|
|
40
|
+
if (!apiKey && !["9router", "ollama"].includes(providerName)) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
const custom = config.get().customProviders[providerName];
|
|
44
|
+
if (custom) {
|
|
45
|
+
if (custom.type === "anthropic") {
|
|
46
|
+
return new AnthropicProvider(custom.apiKey || apiKey, model);
|
|
47
|
+
}
|
|
48
|
+
return new OpenAICompatibleProvider(providerName, custom.baseUrl, custom.apiKey || apiKey, model);
|
|
49
|
+
}
|
|
50
|
+
switch (providerName) {
|
|
51
|
+
case "anthropic": {
|
|
52
|
+
if (!apiKey)
|
|
53
|
+
return null;
|
|
54
|
+
return new AnthropicProvider(apiKey, model || "claude-sonnet-4-20250514");
|
|
55
|
+
}
|
|
56
|
+
case "google": {
|
|
57
|
+
if (!apiKey)
|
|
58
|
+
return null;
|
|
59
|
+
return new GoogleProvider(apiKey, model || "gemini-2.0-flash");
|
|
60
|
+
}
|
|
61
|
+
case "zen": {
|
|
62
|
+
if (!apiKey)
|
|
63
|
+
return null;
|
|
64
|
+
return new OpenCodeZenProvider(apiKey, model || "gpt-4o");
|
|
65
|
+
}
|
|
66
|
+
default: {
|
|
67
|
+
const defaults = PROVIDER_DEFAULTS[providerName];
|
|
68
|
+
if (defaults) {
|
|
69
|
+
return new OpenAICompatibleProvider(providerName, defaults.baseUrl, apiKey, model || defaults.defaultModel);
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export async function fetchAvailableModels(providerName, baseUrl, apiKey) {
|
|
76
|
+
try {
|
|
77
|
+
const url = `${baseUrl.replace(/\/+$/, "")}/models`;
|
|
78
|
+
const headers = {};
|
|
79
|
+
if (providerName === "anthropic") {
|
|
80
|
+
headers["x-api-key"] = apiKey;
|
|
81
|
+
headers["anthropic-version"] = "2023-06-01";
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
headers["Authorization"] = `Bearer ${apiKey}`;
|
|
85
|
+
}
|
|
86
|
+
const res = await fetch(url, { headers });
|
|
87
|
+
if (!res.ok)
|
|
88
|
+
return [];
|
|
89
|
+
const data = (await res.json());
|
|
90
|
+
return data.data?.map(m => m.id) || [];
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export function getDefaultModel(provider) {
|
|
97
|
+
const modelMap = {
|
|
98
|
+
openai: "gpt-4o",
|
|
99
|
+
anthropic: "claude-sonnet-4-20250514",
|
|
100
|
+
google: "gemini-2.0-flash",
|
|
101
|
+
groq: "llama-3.3-70b-versatile",
|
|
102
|
+
deepseek: "deepseek-chat",
|
|
103
|
+
openrouter: "auto",
|
|
104
|
+
"9router": "oc/deepseek-v4-flash-free",
|
|
105
|
+
together: "mistralai/Mixtral-8x22B-Instruct-v0.1",
|
|
106
|
+
xai: "grok-2",
|
|
107
|
+
mistral: "mistral-large-latest",
|
|
108
|
+
ollama: "llama3",
|
|
109
|
+
zen: "gpt-4o",
|
|
110
|
+
};
|
|
111
|
+
return modelMap[provider] || "gpt-4o";
|
|
112
|
+
}
|
|
113
|
+
export function hasApiKey(provider, config) {
|
|
114
|
+
if (provider === "9router" || provider === "ollama")
|
|
115
|
+
return true;
|
|
116
|
+
return !!config.getApiKey(provider);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/provider/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { LLMProvider, LLMMessage, LLMResponse, ToolDefinition } from "../types.js";
|
|
2
|
+
export declare class OpenCodeZenProvider implements LLMProvider {
|
|
3
|
+
name: string;
|
|
4
|
+
private apiKey;
|
|
5
|
+
private model;
|
|
6
|
+
constructor(apiKey: string, model: string);
|
|
7
|
+
chat(messages: LLMMessage[], tools: ToolDefinition[]): Promise<LLMResponse>;
|
|
8
|
+
private googleChat;
|
|
9
|
+
private convertGoogleMessages;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=zen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zen.d.ts","sourceRoot":"","sources":["../../src/provider/zen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAY,MAAM,aAAa,CAAC;AAUlG,qBAAa,mBAAoB,YAAW,WAAW;IACrD,IAAI,SAAS;IACb,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKnC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;YAwBnE,UAAU;IAwExB,OAAO,CAAC,qBAAqB;CA+B9B"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { OpenAICompatibleProvider } from "./openai-compatible.js";
|
|
2
|
+
import { AnthropicProvider } from "./anthropic.js";
|
|
3
|
+
const ZEN_BASE = "https://opencode.ai/zen/v1";
|
|
4
|
+
const CLAUDE_PREFIXES = ["claude", "opencode/claude"];
|
|
5
|
+
const GEMINI_PREFIXES = ["gemini", "opencode/gemini"];
|
|
6
|
+
const GPT_PREFIXES = ["gpt", "opencode/gpt", "o1", "o3"];
|
|
7
|
+
export class OpenCodeZenProvider {
|
|
8
|
+
name = "zen";
|
|
9
|
+
apiKey;
|
|
10
|
+
model;
|
|
11
|
+
constructor(apiKey, model) {
|
|
12
|
+
this.apiKey = apiKey;
|
|
13
|
+
this.model = model;
|
|
14
|
+
}
|
|
15
|
+
async chat(messages, tools) {
|
|
16
|
+
const modelId = this.model.replace(/^opencode\//, "");
|
|
17
|
+
if (CLAUDE_PREFIXES.some(p => modelId.startsWith(p))) {
|
|
18
|
+
const provider = new AnthropicProvider(this.apiKey, modelId);
|
|
19
|
+
provider.name = "zen (claude)";
|
|
20
|
+
const anthropicFetch = provider.chat.bind(provider);
|
|
21
|
+
return await anthropicFetch(messages, tools);
|
|
22
|
+
}
|
|
23
|
+
if (GEMINI_PREFIXES.some(p => modelId.startsWith(p))) {
|
|
24
|
+
const url = `https://generativelanguage.googleapis.com/v1beta/models/${modelId}:generateContent?key=${this.apiKey}`;
|
|
25
|
+
return await this.googleChat(url, messages, tools);
|
|
26
|
+
}
|
|
27
|
+
const oaiProvider = new OpenAICompatibleProvider("zen", ZEN_BASE, this.apiKey, modelId);
|
|
28
|
+
return await oaiProvider.chat(messages, tools);
|
|
29
|
+
}
|
|
30
|
+
async googleChat(url, messages, tools) {
|
|
31
|
+
const systemMessages = messages.filter(m => m.role === "system");
|
|
32
|
+
const nonSystem = messages.filter(m => m.role !== "system");
|
|
33
|
+
const body = {
|
|
34
|
+
contents: this.convertGoogleMessages(nonSystem),
|
|
35
|
+
};
|
|
36
|
+
if (systemMessages.length > 0) {
|
|
37
|
+
body.systemInstruction = {
|
|
38
|
+
parts: systemMessages.map(m => ({ text: m.content })),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
if (tools.length > 0) {
|
|
42
|
+
body.tools = [
|
|
43
|
+
{
|
|
44
|
+
functionDeclarations: tools.map(t => ({
|
|
45
|
+
name: t.name,
|
|
46
|
+
description: t.description,
|
|
47
|
+
parameters: t.parameters,
|
|
48
|
+
})),
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
}
|
|
52
|
+
const res = await fetch(url, {
|
|
53
|
+
method: "POST",
|
|
54
|
+
headers: { "Content-Type": "application/json" },
|
|
55
|
+
body: JSON.stringify(body),
|
|
56
|
+
});
|
|
57
|
+
if (!res.ok) {
|
|
58
|
+
const err = await res.text();
|
|
59
|
+
throw new Error(`[Zen/Gemini] ${res.status}: ${err}`);
|
|
60
|
+
}
|
|
61
|
+
const data = (await res.json());
|
|
62
|
+
if (!data.candidates || data.candidates.length === 0) {
|
|
63
|
+
throw new Error("[Zen/Gemini] No candidates");
|
|
64
|
+
}
|
|
65
|
+
let content = "";
|
|
66
|
+
const toolCalls = [];
|
|
67
|
+
const parts = data.candidates[0].content?.parts || [];
|
|
68
|
+
for (const part of parts) {
|
|
69
|
+
if (part.text)
|
|
70
|
+
content += part.text;
|
|
71
|
+
if (part.functionCall) {
|
|
72
|
+
toolCalls.push({
|
|
73
|
+
id: `fc-${Date.now()}`,
|
|
74
|
+
type: "function",
|
|
75
|
+
function: {
|
|
76
|
+
name: part.functionCall.name,
|
|
77
|
+
arguments: JSON.stringify(part.functionCall.args || {}),
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return { content, tool_calls: toolCalls.length > 0 ? toolCalls : undefined, model: this.model };
|
|
83
|
+
}
|
|
84
|
+
convertGoogleMessages(messages) {
|
|
85
|
+
const result = [];
|
|
86
|
+
for (const msg of messages) {
|
|
87
|
+
if (msg.role === "system")
|
|
88
|
+
continue;
|
|
89
|
+
if (msg.role === "tool") {
|
|
90
|
+
result.push({
|
|
91
|
+
role: "function",
|
|
92
|
+
parts: [{
|
|
93
|
+
functionResponse: {
|
|
94
|
+
name: msg.name || "unknown",
|
|
95
|
+
response: { content: msg.content },
|
|
96
|
+
},
|
|
97
|
+
}],
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
else if (msg.role === "assistant") {
|
|
101
|
+
const parts = [];
|
|
102
|
+
if (msg.content)
|
|
103
|
+
parts.push({ text: msg.content });
|
|
104
|
+
if (msg.tool_calls) {
|
|
105
|
+
for (const tc of msg.tool_calls) {
|
|
106
|
+
parts.push({
|
|
107
|
+
functionCall: { name: tc.function.name, args: JSON.parse(tc.function.arguments) },
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
result.push({ role: "model", parts });
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
result.push({ role: "user", parts: [{ text: msg.content }] });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=zen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zen.js","sourceRoot":"","sources":["../../src/provider/zen.ts"],"names":[],"mappings":"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"}
|
package/dist/repl.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ConfigManager } from "./config.js";
|
|
2
|
+
export declare class REPL {
|
|
3
|
+
private config;
|
|
4
|
+
private commands;
|
|
5
|
+
private history;
|
|
6
|
+
private activeSkills;
|
|
7
|
+
private sessionId;
|
|
8
|
+
private modelCache;
|
|
9
|
+
constructor(config: ConfigManager);
|
|
10
|
+
private initSession;
|
|
11
|
+
private persistHistory;
|
|
12
|
+
checkFirstRun(): boolean;
|
|
13
|
+
private ctx;
|
|
14
|
+
private showFooter;
|
|
15
|
+
private getCompletions;
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
private handleCommand;
|
|
18
|
+
private handleRetry;
|
|
19
|
+
private handleChat;
|
|
20
|
+
private buildSystemPrompt;
|
|
21
|
+
private processLLMResponse;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=repl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA0E5C,qBAAa,IAAI;IACf,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAuD;gBAE7D,MAAM,EAAE,aAAa;IAYjC,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,cAAc;IAOtB,aAAa,IAAI,OAAO;IAKxB,OAAO,CAAC,GAAG;IAQX,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,cAAc;IAmChB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAoDZ,aAAa;YAsBb,WAAW;YAaX,UAAU;IAuDxB,OAAO,CAAC,iBAAiB;YAiBX,kBAAkB;CA+IjC"}
|