thatgfsj-code 3.0.4 → 3.0.6
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/README.md +64 -21
- package/dist/app/index.d.ts +93 -22
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +232 -40
- package/dist/app/index.js.map +1 -1
- package/dist/cmd/index.d.ts +12 -20
- package/dist/cmd/index.d.ts.map +1 -1
- package/dist/cmd/index.js +192 -146
- package/dist/cmd/index.js.map +1 -1
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +5 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +5 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/llm/anthropic.d.ts +1 -1
- package/dist/llm/anthropic.d.ts.map +1 -1
- package/dist/llm/anthropic.js +116 -84
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/gemini.d.ts +27 -3
- package/dist/llm/gemini.d.ts.map +1 -1
- package/dist/llm/gemini.js +196 -73
- package/dist/llm/gemini.js.map +1 -1
- package/dist/llm/index.d.ts +20 -1
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +66 -6
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/openai.d.ts +5 -1
- package/dist/llm/openai.d.ts.map +1 -1
- package/dist/llm/openai.js +96 -56
- package/dist/llm/openai.js.map +1 -1
- package/dist/mcp/client.d.ts +84 -34
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +291 -126
- package/dist/mcp/client.js.map +1 -1
- package/dist/session/compactor.d.ts +27 -7
- package/dist/session/compactor.d.ts.map +1 -1
- package/dist/session/compactor.js +78 -23
- package/dist/session/compactor.js.map +1 -1
- package/dist/session/index.d.ts +96 -33
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +278 -60
- package/dist/session/index.js.map +1 -1
- package/dist/tools/file.d.ts +10 -2
- package/dist/tools/file.d.ts.map +1 -1
- package/dist/tools/file.js +54 -5
- package/dist/tools/file.js.map +1 -1
- package/dist/tools/git.d.ts +16 -2
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/git.js +61 -18
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/nwt.d.ts.map +1 -1
- package/dist/tools/nwt.js +8 -1
- package/dist/tools/nwt.js.map +1 -1
- package/dist/tools/search.d.ts +8 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +105 -34
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/shell.d.ts +0 -4
- package/dist/tools/shell.d.ts.map +1 -1
- package/dist/tools/shell.js +11 -26
- package/dist/tools/shell.js.map +1 -1
- package/dist/tools/types.d.ts +7 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tui/app.d.ts.map +1 -1
- package/dist/tui/app.js +90 -18
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/components/ChatMessage.d.ts.map +1 -1
- package/dist/tui/components/ChatMessage.js +9 -2
- package/dist/tui/components/ChatMessage.js.map +1 -1
- package/dist/tui/components/ConfirmPrompt.d.ts +21 -0
- package/dist/tui/components/ConfirmPrompt.d.ts.map +1 -0
- package/dist/tui/components/ConfirmPrompt.js +45 -0
- package/dist/tui/components/ConfirmPrompt.js.map +1 -0
- package/dist/tui/components/Header.d.ts +10 -5
- package/dist/tui/components/Header.d.ts.map +1 -1
- package/dist/tui/components/Header.js +13 -5
- package/dist/tui/components/Header.js.map +1 -1
- package/dist/tui/components/StatusBar.d.ts +7 -0
- package/dist/tui/components/StatusBar.d.ts.map +1 -1
- package/dist/tui/components/StatusBar.js +8 -3
- package/dist/tui/components/StatusBar.js.map +1 -1
- package/dist/tui/components/Thinking.d.ts +5 -0
- package/dist/tui/components/Thinking.d.ts.map +1 -1
- package/dist/tui/components/Thinking.js +24 -2
- package/dist/tui/components/Thinking.js.map +1 -1
- package/dist/tui/components/ToolCall.d.ts +6 -1
- package/dist/tui/components/ToolCall.d.ts.map +1 -1
- package/dist/tui/components/ToolCall.js +50 -22
- package/dist/tui/components/ToolCall.js.map +1 -1
- package/dist/tui/components/UserInput.d.ts +5 -0
- package/dist/tui/components/UserInput.d.ts.map +1 -1
- package/dist/tui/components/UserInput.js +9 -13
- package/dist/tui/components/UserInput.js.map +1 -1
- package/dist/tui/hooks/useChat.d.ts +1 -0
- package/dist/tui/hooks/useChat.d.ts.map +1 -1
- package/dist/tui/hooks/useChat.js +36 -16
- package/dist/tui/hooks/useChat.js.map +1 -1
- package/dist/tui/hooks/useCommands.d.ts +7 -1
- package/dist/tui/hooks/useCommands.d.ts.map +1 -1
- package/dist/tui/hooks/useCommands.js +77 -41
- package/dist/tui/hooks/useCommands.js.map +1 -1
- package/dist/tui/theme.d.ts +34 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +34 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/welcome.d.ts.map +1 -1
- package/dist/tui/welcome.js +9 -7
- package/dist/tui/welcome.js.map +1 -1
- package/dist/types.d.ts +16 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/diff.d.ts +5 -0
- package/dist/utils/diff.d.ts.map +1 -1
- package/dist/utils/diff.js +15 -0
- package/dist/utils/diff.js.map +1 -1
- package/dist/version.d.ts +12 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +29 -0
- package/dist/version.js.map +1 -0
- package/package.json +19 -7
- package/CHANGELOG.md +0 -192
- package/DEVELOPMENT.md +0 -286
- package/ROADMAP.md +0 -91
- package/docs/API_KEY_GUIDE.md +0 -236
- package/docs/FAQ.md +0 -182
- package/install.bat +0 -63
- package/install.ps1 +0 -238
- package/install.sh +0 -113
- package/src/app/index.ts +0 -197
- package/src/cache/fingerprint.ts +0 -101
- package/src/cache/index.ts +0 -21
- package/src/cache/smartModel.ts +0 -133
- package/src/cache/stats.ts +0 -199
- package/src/cache/volatile.ts +0 -47
- package/src/cmd/index.tsx +0 -288
- package/src/config/index.ts +0 -156
- package/src/config/providers.ts +0 -234
- package/src/config/types.ts +0 -71
- package/src/hooks/index.ts +0 -111
- package/src/llm/anthropic.ts +0 -413
- package/src/llm/gemini.ts +0 -169
- package/src/llm/index.ts +0 -303
- package/src/llm/openai.ts +0 -243
- package/src/llm/provider.ts +0 -71
- package/src/mcp/client.ts +0 -330
- package/src/prompts/index.ts +0 -260
- package/src/session/compactor.ts +0 -103
- package/src/session/index.ts +0 -181
- package/src/session/message.ts +0 -42
- package/src/skills/brainstorming.ts +0 -43
- package/src/skills/code-review.ts +0 -45
- package/src/skills/executing-plans.ts +0 -27
- package/src/skills/frontend-design.ts +0 -35
- package/src/skills/git-workflow.ts +0 -36
- package/src/skills/improve-architecture.ts +0 -38
- package/src/skills/index.ts +0 -136
- package/src/skills/neuroweave.ts +0 -47
- package/src/skills/playwright.ts +0 -72
- package/src/skills/prototype.ts +0 -30
- package/src/skills/subagent.ts +0 -28
- package/src/skills/supabase.ts +0 -44
- package/src/skills/systematic-debugging.ts +0 -44
- package/src/skills/tdd.ts +0 -39
- package/src/skills/triage.ts +0 -35
- package/src/skills/verification.ts +0 -31
- package/src/skills/writing-plans.ts +0 -42
- package/src/tools/file.ts +0 -143
- package/src/tools/git.ts +0 -132
- package/src/tools/index.ts +0 -111
- package/src/tools/nwt.ts +0 -598
- package/src/tools/search.ts +0 -263
- package/src/tools/shell.ts +0 -136
- package/src/tools/types.ts +0 -122
- package/src/tui/app.tsx +0 -159
- package/src/tui/components/ChatList.tsx +0 -41
- package/src/tui/components/ChatMessage.tsx +0 -54
- package/src/tui/components/Header.tsx +0 -66
- package/src/tui/components/InitWizard.tsx +0 -247
- package/src/tui/components/Markdown.tsx +0 -35
- package/src/tui/components/ModelSelector.tsx +0 -107
- package/src/tui/components/StatusBar.tsx +0 -30
- package/src/tui/components/Thinking.tsx +0 -17
- package/src/tui/components/ToolCall.tsx +0 -102
- package/src/tui/components/UserInput.tsx +0 -151
- package/src/tui/hooks/useChat.ts +0 -287
- package/src/tui/hooks/useCommands.ts +0 -271
- package/src/tui/index.ts +0 -6
- package/src/tui/welcome.ts +0 -177
- package/src/types.ts +0 -104
- package/src/utils/diff.ts +0 -71
- package/src/utils/project.ts +0 -99
- package/src/utils/stableStringify.ts +0 -47
- package/src/utils/thinking.ts +0 -119
- package/tests/cache/fingerprint.test.ts +0 -75
- package/tests/cache/providerCatalog.test.ts +0 -31
- package/tests/cache/smartModel.test.ts +0 -100
- package/tests/cache/stableStringify.test.ts +0 -43
- package/tests/cache/stats.test.ts +0 -146
- package/tests/cache/volatile.test.ts +0 -75
- package/tests/smoke-pollution.mjs +0 -78
- package/tests/smoke-thinking.mjs +0 -110
- package/tests/smoke-tool-stream.mjs +0 -69
- package/tests/smoke-tool.mjs +0 -117
- package/tsconfig.json +0 -21
package/dist/llm/gemini.js
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Google Gemini Provider
|
|
3
|
+
*
|
|
4
|
+
* v3.0.5 fixes:
|
|
5
|
+
* - API key moved out of the URL query string into the x-goog-api-key
|
|
6
|
+
* header (keys in URLs leak into proxy/server logs).
|
|
7
|
+
* - Multi-turn tool calling now round-trips correctly: assistant
|
|
8
|
+
* tool_calls are mapped back to model functionCall parts and tool
|
|
9
|
+
* results are sent as functionResponse parts. Previously tool results
|
|
10
|
+
* were flattened into a plain text user message, so the model lost the
|
|
11
|
+
* call->result linkage and multi-step tool chains broke.
|
|
12
|
+
* - ALL system messages are concatenated into systemInstruction (the
|
|
13
|
+
* previous code silently dropped every system message after the first).
|
|
14
|
+
* - Streaming now captures usageMetadata and yields a { type: 'usage' }
|
|
15
|
+
* chunk like the other providers.
|
|
16
|
+
* - Caller cancellation via options.signal + 120s idle watchdog.
|
|
3
17
|
*/
|
|
4
18
|
export class GeminiProvider {
|
|
5
19
|
name = 'gemini';
|
|
@@ -20,13 +34,108 @@ export class GeminiProvider {
|
|
|
20
34
|
})),
|
|
21
35
|
}];
|
|
22
36
|
}
|
|
37
|
+
/** Extract message text whether content is a string or ContentBlock[]. */
|
|
38
|
+
static textOf(content) {
|
|
39
|
+
if (typeof content === 'string')
|
|
40
|
+
return content;
|
|
41
|
+
return content.filter(b => b.type === 'text').map(b => b.text).join('');
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Convert our canonical ChatMessage[] into Gemini `contents`.
|
|
45
|
+
* Tool-call pairing is preserved: assistant.tool_calls -> model
|
|
46
|
+
* functionCall parts; tool messages -> user functionResponse parts.
|
|
47
|
+
*/
|
|
48
|
+
buildContents(messages) {
|
|
49
|
+
const contents = [];
|
|
50
|
+
for (const m of messages) {
|
|
51
|
+
if (m.role === 'system')
|
|
52
|
+
continue;
|
|
53
|
+
if (m.role === 'tool') {
|
|
54
|
+
// Tool result -> user turn with functionResponse part.
|
|
55
|
+
// Gemini requires the function name on the response, which travels
|
|
56
|
+
// on our message as `name` (set by the agent loop).
|
|
57
|
+
contents.push({
|
|
58
|
+
role: 'user',
|
|
59
|
+
parts: [{
|
|
60
|
+
functionResponse: {
|
|
61
|
+
name: m.name || 'unknown_tool',
|
|
62
|
+
response: { result: m.content },
|
|
63
|
+
},
|
|
64
|
+
}],
|
|
65
|
+
});
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (m.role === 'assistant' && m.tool_calls && m.tool_calls.length > 0) {
|
|
69
|
+
// Assistant turn with tool calls -> model functionCall parts.
|
|
70
|
+
const parts = [];
|
|
71
|
+
const text = GeminiProvider.textOf(m.content);
|
|
72
|
+
if (text)
|
|
73
|
+
parts.push({ text });
|
|
74
|
+
for (const tc of m.tool_calls) {
|
|
75
|
+
let args = {};
|
|
76
|
+
try {
|
|
77
|
+
args = JSON.parse(tc.function.arguments || '{}');
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
args = {};
|
|
81
|
+
}
|
|
82
|
+
parts.push({ functionCall: { name: tc.function.name, args } });
|
|
83
|
+
}
|
|
84
|
+
contents.push({ role: 'model', parts });
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
contents.push({
|
|
88
|
+
role: m.role === 'assistant' ? 'model' : 'user',
|
|
89
|
+
parts: [{ text: GeminiProvider.textOf(m.content) }],
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return contents;
|
|
93
|
+
}
|
|
94
|
+
buildRequest(messages, options, tools) {
|
|
95
|
+
// Concatenate ALL system messages into one instruction block — the
|
|
96
|
+
// previous `find()` dropped every system message after the first.
|
|
97
|
+
const systemText = messages
|
|
98
|
+
.filter(m => m.role === 'system')
|
|
99
|
+
.map(m => GeminiProvider.textOf(m.content))
|
|
100
|
+
.join('\n\n');
|
|
101
|
+
const body = {
|
|
102
|
+
contents: this.buildContents(messages),
|
|
103
|
+
generationConfig: {
|
|
104
|
+
temperature: options?.temperature ?? this.config.temperature,
|
|
105
|
+
maxOutputTokens: options?.maxTokens ?? this.config.maxTokens,
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
if (systemText) {
|
|
109
|
+
body.systemInstruction = { parts: [{ text: systemText }] };
|
|
110
|
+
}
|
|
111
|
+
if (tools && tools.length > 0) {
|
|
112
|
+
body.tools = this.buildTools(tools);
|
|
113
|
+
}
|
|
114
|
+
return body;
|
|
115
|
+
}
|
|
116
|
+
authHeaders() {
|
|
117
|
+
// v3.0.5: key in a header, not the URL — URLs end up in proxy and
|
|
118
|
+
// server access logs.
|
|
119
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
120
|
+
if (this.config.apiKey)
|
|
121
|
+
headers['x-goog-api-key'] = this.config.apiKey;
|
|
122
|
+
return headers;
|
|
123
|
+
}
|
|
124
|
+
normalizeUsage(raw) {
|
|
125
|
+
return {
|
|
126
|
+
prompt_tokens: raw.promptTokenCount || 0,
|
|
127
|
+
completion_tokens: raw.candidatesTokenCount || 0,
|
|
128
|
+
total_tokens: raw.totalTokenCount || 0,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
23
131
|
async chat(messages, options, tools) {
|
|
24
132
|
const body = this.buildRequest(messages, options, tools);
|
|
25
|
-
const url = `${this.config.baseUrl}/models/${this.config.model}:generateContent
|
|
133
|
+
const url = `${this.config.baseUrl}/models/${this.config.model}:generateContent`;
|
|
26
134
|
const response = await fetch(url, {
|
|
27
135
|
method: 'POST',
|
|
28
|
-
headers:
|
|
136
|
+
headers: this.authHeaders(),
|
|
29
137
|
body: JSON.stringify(body),
|
|
138
|
+
signal: options?.signal,
|
|
30
139
|
});
|
|
31
140
|
if (!response.ok) {
|
|
32
141
|
const text = await response.text().catch(() => '');
|
|
@@ -47,98 +156,112 @@ export class GeminiProvider {
|
|
|
47
156
|
return {
|
|
48
157
|
content: text,
|
|
49
158
|
role: 'assistant',
|
|
50
|
-
usage: data.usageMetadata ?
|
|
51
|
-
prompt_tokens: data.usageMetadata.promptTokenCount || 0,
|
|
52
|
-
completion_tokens: data.usageMetadata.candidatesTokenCount || 0,
|
|
53
|
-
total_tokens: data.usageMetadata.totalTokenCount || 0,
|
|
54
|
-
} : undefined,
|
|
159
|
+
usage: data.usageMetadata ? this.normalizeUsage(data.usageMetadata) : undefined,
|
|
55
160
|
tool_calls: functionCalls.length > 0 ? functionCalls : undefined,
|
|
56
161
|
};
|
|
57
162
|
}
|
|
58
163
|
async *chatStream(messages, options, tools) {
|
|
59
164
|
const body = this.buildRequest(messages, options, tools);
|
|
60
|
-
const url = `${this.config.baseUrl}/models/${this.config.model}:streamGenerateContent?alt=sse
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
165
|
+
const url = `${this.config.baseUrl}/models/${this.config.model}:streamGenerateContent?alt=sse`;
|
|
166
|
+
const controller = new AbortController();
|
|
167
|
+
const upstream = options?.signal;
|
|
168
|
+
const onUpstreamAbort = () => controller.abort();
|
|
169
|
+
upstream?.addEventListener('abort', onUpstreamAbort, { once: true });
|
|
170
|
+
let idleTimer;
|
|
171
|
+
const resetIdle = () => {
|
|
172
|
+
if (idleTimer)
|
|
173
|
+
clearTimeout(idleTimer);
|
|
174
|
+
idleTimer = setTimeout(() => controller.abort(), 120000);
|
|
175
|
+
};
|
|
176
|
+
resetIdle();
|
|
72
177
|
let fullContent = '';
|
|
73
178
|
let buffer = '';
|
|
74
179
|
const functionCalls = [];
|
|
180
|
+
let capturedUsage;
|
|
75
181
|
try {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
182
|
+
const response = await fetch(url, {
|
|
183
|
+
method: 'POST',
|
|
184
|
+
headers: this.authHeaders(),
|
|
185
|
+
body: JSON.stringify(body),
|
|
186
|
+
signal: controller.signal,
|
|
187
|
+
});
|
|
188
|
+
resetIdle();
|
|
189
|
+
if (!response.ok || !response.body) {
|
|
190
|
+
const text = await response.text().catch(() => '');
|
|
191
|
+
throw new Error(`Gemini API error ${response.status}: ${text}`);
|
|
192
|
+
}
|
|
193
|
+
const reader = response.body.getReader();
|
|
194
|
+
const decoder = new TextDecoder();
|
|
195
|
+
try {
|
|
196
|
+
while (true) {
|
|
197
|
+
const { done, value } = await reader.read();
|
|
198
|
+
resetIdle();
|
|
199
|
+
if (done)
|
|
200
|
+
break;
|
|
201
|
+
buffer += decoder.decode(value, { stream: true });
|
|
202
|
+
const lines = buffer.split('\n');
|
|
203
|
+
buffer = lines.pop() || '';
|
|
204
|
+
for (const line of lines) {
|
|
205
|
+
const trimmed = line.trim();
|
|
206
|
+
if (!trimmed || !trimmed.startsWith('data: '))
|
|
207
|
+
continue;
|
|
208
|
+
try {
|
|
209
|
+
const data = JSON.parse(trimmed.slice(6));
|
|
210
|
+
if (data.usageMetadata) {
|
|
211
|
+
capturedUsage = this.normalizeUsage(data.usageMetadata);
|
|
94
212
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
213
|
+
const parts = data.candidates?.[0]?.content?.parts || [];
|
|
214
|
+
for (const part of parts) {
|
|
215
|
+
if (part.text) {
|
|
216
|
+
fullContent += part.text;
|
|
217
|
+
yield { type: 'text', content: part.text };
|
|
218
|
+
}
|
|
219
|
+
if (part.functionCall) {
|
|
220
|
+
functionCalls.push({
|
|
221
|
+
id: `call_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
|
|
222
|
+
type: 'function',
|
|
223
|
+
function: {
|
|
224
|
+
name: part.functionCall.name,
|
|
225
|
+
arguments: JSON.stringify(part.functionCall.args || {}),
|
|
226
|
+
},
|
|
227
|
+
});
|
|
228
|
+
}
|
|
104
229
|
}
|
|
105
230
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
231
|
+
catch {
|
|
232
|
+
// Skip invalid JSON
|
|
233
|
+
}
|
|
109
234
|
}
|
|
110
235
|
}
|
|
111
236
|
}
|
|
237
|
+
finally {
|
|
238
|
+
if (idleTimer)
|
|
239
|
+
clearTimeout(idleTimer);
|
|
240
|
+
upstream?.removeEventListener('abort', onUpstreamAbort);
|
|
241
|
+
reader.releaseLock();
|
|
242
|
+
}
|
|
112
243
|
}
|
|
113
|
-
|
|
114
|
-
|
|
244
|
+
catch (error) {
|
|
245
|
+
if (idleTimer)
|
|
246
|
+
clearTimeout(idleTimer);
|
|
247
|
+
upstream?.removeEventListener('abort', onUpstreamAbort);
|
|
248
|
+
if (controller.signal.aborted && !upstream?.aborted) {
|
|
249
|
+
throw new Error('Stream stalled: no data received for 120s');
|
|
250
|
+
}
|
|
251
|
+
throw error;
|
|
115
252
|
}
|
|
116
253
|
if (functionCalls.length > 0) {
|
|
117
254
|
yield { type: 'tool_calls', toolCalls: functionCalls };
|
|
118
255
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
buildRequest(messages, options, tools) {
|
|
122
|
-
const systemMsg = messages.find(m => m.role === 'system');
|
|
123
|
-
const nonSystemMsgs = messages.filter(m => m.role !== 'system');
|
|
124
|
-
const contents = nonSystemMsgs.map(m => ({
|
|
125
|
-
role: m.role === 'assistant' ? 'model' : 'user',
|
|
126
|
-
parts: [{ text: m.content }],
|
|
127
|
-
}));
|
|
128
|
-
const body = {
|
|
129
|
-
contents,
|
|
130
|
-
...(systemMsg && {
|
|
131
|
-
systemInstruction: { parts: [{ text: systemMsg.content }] },
|
|
132
|
-
}),
|
|
133
|
-
generationConfig: {
|
|
134
|
-
temperature: options?.temperature ?? this.config.temperature,
|
|
135
|
-
maxOutputTokens: options?.maxTokens ?? this.config.maxTokens,
|
|
136
|
-
},
|
|
137
|
-
};
|
|
138
|
-
if (tools && tools.length > 0) {
|
|
139
|
-
body.tools = this.buildTools(tools);
|
|
256
|
+
if (capturedUsage) {
|
|
257
|
+
yield { type: 'usage', usage: capturedUsage };
|
|
140
258
|
}
|
|
141
|
-
return
|
|
259
|
+
return {
|
|
260
|
+
content: fullContent,
|
|
261
|
+
role: 'assistant',
|
|
262
|
+
usage: capturedUsage,
|
|
263
|
+
tool_calls: functionCalls.length > 0 ? functionCalls : undefined,
|
|
264
|
+
};
|
|
142
265
|
}
|
|
143
266
|
}
|
|
144
267
|
//# sourceMappingURL=gemini.js.map
|
package/dist/llm/gemini.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/llm/gemini.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/llm/gemini.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/index.d.ts
CHANGED
|
@@ -11,14 +11,22 @@
|
|
|
11
11
|
* which the TUI cache stats store consumes.
|
|
12
12
|
*/
|
|
13
13
|
import type { ChatMessage, ChatResponse, ChatOptions, StreamChunk } from '../types.js';
|
|
14
|
-
import type { Tool } from '../tools/types.js';
|
|
14
|
+
import type { Tool, ToolContext } from '../tools/types.js';
|
|
15
15
|
import type { LLMProvider } from './provider.js';
|
|
16
16
|
import type { AIConfig, Config } from '../config/types.js';
|
|
17
17
|
export declare class LLMService {
|
|
18
18
|
private provider;
|
|
19
19
|
private tools;
|
|
20
20
|
private apiKey;
|
|
21
|
+
/**
|
|
22
|
+
* v3.0.5: execution context handed to every tool (confirmAction, abort
|
|
23
|
+
* signal, working directory). Previously tools were called with no
|
|
24
|
+
* context at all, which made the whole permission pipeline dead code.
|
|
25
|
+
*/
|
|
26
|
+
private toolCtx;
|
|
21
27
|
constructor(provider: LLMProvider, apiKey: string);
|
|
28
|
+
/** v3.0.5: wire the execution context (confirm/signal/cwd) into tool calls. */
|
|
29
|
+
setToolContext(ctx: ToolContext): void;
|
|
22
30
|
/**
|
|
23
31
|
* v3.0.3: TTL resolved from config + smart routing. Stays null until
|
|
24
32
|
* the first round, then never changes for the session. Anthropic
|
|
@@ -32,6 +40,16 @@ export declare class LLMService {
|
|
|
32
40
|
cache?: Config['cache'];
|
|
33
41
|
}): LLMService;
|
|
34
42
|
registerTools(tools: Tool[]): void;
|
|
43
|
+
/** v3.0.5: drop all registered tools (used by reloadModel to re-register cleanly). */
|
|
44
|
+
clearTools(): void;
|
|
45
|
+
/**
|
|
46
|
+
* v3.0.5: pin the Anthropic cache TTL immediately (from /ttl). Changing
|
|
47
|
+
* TTL mid-session invalidates the upstream cache prefix once — the user
|
|
48
|
+
* explicitly asked for it, so that cost is accepted.
|
|
49
|
+
*/
|
|
50
|
+
setTtl(ttl: '5m' | '1h'): void;
|
|
51
|
+
/** v3.0.5: reset TTL resolution (used when the model/service is rebuilt). */
|
|
52
|
+
resetTtl(): void;
|
|
35
53
|
getProviderName(): string;
|
|
36
54
|
hasApiKey(): boolean;
|
|
37
55
|
chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>;
|
|
@@ -51,6 +69,7 @@ export declare class LLMService {
|
|
|
51
69
|
*/
|
|
52
70
|
chatStream(messages: ChatMessage[], options?: ChatOptions & {
|
|
53
71
|
maxIterations?: number;
|
|
72
|
+
signal?: AbortSignal;
|
|
54
73
|
}): AsyncGenerator<StreamChunk, ChatResponse>;
|
|
55
74
|
private truncateArgs;
|
|
56
75
|
private getNoKeyMessage;
|
package/dist/llm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAY,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAY,WAAW,EAAkB,MAAM,aAAa,CAAC;AACjH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAOzE,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,MAAM,CAAS;IACvB;;;;OAIG;IACH,OAAO,CAAC,OAAO,CAAmB;gBAEtB,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM;IAKjD,+EAA+E;IAC/E,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAItC;;;;;OAKG;IACH,OAAO,CAAC,WAAW,CAA4B;IAE/C,2EAA2E;IAC3E,cAAc,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI;IAIpC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;KAAE,GAAG,UAAU;IAkC7E,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAMlC,sFAAsF;IACtF,UAAU,IAAI,IAAI;IAIlB;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;IAO9B,6EAA6E;IAC7E,QAAQ,IAAI,IAAI;IAIhB,eAAe,IAAI,MAAM;IACzB,SAAS,IAAI,OAAO;IAEd,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAMjF;;;;;;;;;;;;;OAaG;IACI,UAAU,CACf,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,CAAC,EAAE,WAAW,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACvE,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC;IAgM5C,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,eAAe;CAYxB;AAED,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/llm/index.js
CHANGED
|
@@ -19,10 +19,20 @@ export class LLMService {
|
|
|
19
19
|
provider;
|
|
20
20
|
tools = new Map();
|
|
21
21
|
apiKey;
|
|
22
|
+
/**
|
|
23
|
+
* v3.0.5: execution context handed to every tool (confirmAction, abort
|
|
24
|
+
* signal, working directory). Previously tools were called with no
|
|
25
|
+
* context at all, which made the whole permission pipeline dead code.
|
|
26
|
+
*/
|
|
27
|
+
toolCtx = {};
|
|
22
28
|
constructor(provider, apiKey) {
|
|
23
29
|
this.provider = provider;
|
|
24
30
|
this.apiKey = apiKey;
|
|
25
31
|
}
|
|
32
|
+
/** v3.0.5: wire the execution context (confirm/signal/cwd) into tool calls. */
|
|
33
|
+
setToolContext(ctx) {
|
|
34
|
+
this.toolCtx = ctx;
|
|
35
|
+
}
|
|
26
36
|
/**
|
|
27
37
|
* v3.0.3: TTL resolved from config + smart routing. Stays null until
|
|
28
38
|
* the first round, then never changes for the session. Anthropic
|
|
@@ -68,6 +78,25 @@ export class LLMService {
|
|
|
68
78
|
this.tools.set(tool.name, tool);
|
|
69
79
|
}
|
|
70
80
|
}
|
|
81
|
+
/** v3.0.5: drop all registered tools (used by reloadModel to re-register cleanly). */
|
|
82
|
+
clearTools() {
|
|
83
|
+
this.tools.clear();
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* v3.0.5: pin the Anthropic cache TTL immediately (from /ttl). Changing
|
|
87
|
+
* TTL mid-session invalidates the upstream cache prefix once — the user
|
|
88
|
+
* explicitly asked for it, so that cost is accepted.
|
|
89
|
+
*/
|
|
90
|
+
setTtl(ttl) {
|
|
91
|
+
this.resolvedTtl = ttl;
|
|
92
|
+
if (typeof this.provider.setResolvedTTL === 'function') {
|
|
93
|
+
this.provider.setResolvedTTL(ttl);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/** v3.0.5: reset TTL resolution (used when the model/service is rebuilt). */
|
|
97
|
+
resetTtl() {
|
|
98
|
+
this.resolvedTtl = null;
|
|
99
|
+
}
|
|
71
100
|
getProviderName() { return this.provider.name; }
|
|
72
101
|
hasApiKey() { return !!this.apiKey; }
|
|
73
102
|
async chat(messages, options) {
|
|
@@ -169,6 +198,10 @@ export class LLMService {
|
|
|
169
198
|
// tool_call message. This preserves the upstream cache prefix —
|
|
170
199
|
// re-writing an earlier message would shift the prefix by N bytes
|
|
171
200
|
// and bust the cache for every subsequent round.
|
|
201
|
+
// v3.0.5: execute tools with the shared ToolContext (confirm/signal/cwd)
|
|
202
|
+
// and collect index-aligned results so consumers (TUI, headless --json)
|
|
203
|
+
// can render per-tool outcomes.
|
|
204
|
+
const callResults = [];
|
|
172
205
|
for (const toolCall of detectedToolCalls) {
|
|
173
206
|
const tool = this.tools.get(toolCall.function.name);
|
|
174
207
|
if (!tool) {
|
|
@@ -186,11 +219,37 @@ export class LLMService {
|
|
|
186
219
|
tool_call_id: toolCall.id,
|
|
187
220
|
name: toolCall.function.name,
|
|
188
221
|
});
|
|
222
|
+
callResults.push({ name: toolCall.function.name, ok: false, output: errMsg });
|
|
189
223
|
continue;
|
|
190
224
|
}
|
|
191
225
|
try {
|
|
192
|
-
const
|
|
193
|
-
|
|
226
|
+
const parsed = JSON.parse(toolCall.function.arguments || '{}');
|
|
227
|
+
// v3.0.5 fix (found in live testing): validate required params
|
|
228
|
+
// BEFORE executing. A missing `content` on file write used to
|
|
229
|
+
// silently create an EMPTY file and report success — the model
|
|
230
|
+
// got no signal to correct itself and re-issued the same broken
|
|
231
|
+
// call. Fail fast with a repair message instead.
|
|
232
|
+
const required = (tool.parameters || []).filter(p => p.required);
|
|
233
|
+
const missing = required
|
|
234
|
+
.filter(p => parsed?.[p.name] === undefined || parsed?.[p.name] === null || parsed?.[p.name] === '')
|
|
235
|
+
.map(p => p.name);
|
|
236
|
+
if (required.length > 0 && missing.length > 0) {
|
|
237
|
+
const errMsg = `[PARAM_ERROR] Missing required parameter(s): ${missing.join(', ')}. Retry the call with all required parameters filled.`;
|
|
238
|
+
currentMessages.push({
|
|
239
|
+
role: 'tool',
|
|
240
|
+
content: errMsg,
|
|
241
|
+
tool_call_id: toolCall.id,
|
|
242
|
+
name: toolCall.function.name,
|
|
243
|
+
});
|
|
244
|
+
currentMessages.push({
|
|
245
|
+
role: 'system',
|
|
246
|
+
content: `[TOOL_REPAIR] Tool "${toolCall.function.name}" was called with missing required parameters (${missing.join(', ')}). Re-issue the call and include them.`,
|
|
247
|
+
});
|
|
248
|
+
callResults.push({ name: toolCall.function.name, ok: false, output: errMsg });
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
const params = parsed;
|
|
252
|
+
const result = await tool.execute(params, this.toolCtx);
|
|
194
253
|
const output = result.success ? (result.output || JSON.stringify(result.data)) : (result.error || 'Tool failed');
|
|
195
254
|
currentMessages.push({
|
|
196
255
|
role: 'tool',
|
|
@@ -198,6 +257,7 @@ export class LLMService {
|
|
|
198
257
|
tool_call_id: toolCall.id,
|
|
199
258
|
name: toolCall.function.name,
|
|
200
259
|
});
|
|
260
|
+
callResults.push({ name: toolCall.function.name, ok: result.success, output });
|
|
201
261
|
if (!result.success) {
|
|
202
262
|
// Soft failure: tool returned success=false. Same repair pattern.
|
|
203
263
|
currentMessages.push({
|
|
@@ -214,6 +274,7 @@ export class LLMService {
|
|
|
214
274
|
tool_call_id: toolCall.id,
|
|
215
275
|
name: toolCall.function.name,
|
|
216
276
|
});
|
|
277
|
+
callResults.push({ name: toolCall.function.name, ok: false, output: errMsg });
|
|
217
278
|
// Hard failure: tool.execute threw. Repair message so the model
|
|
218
279
|
// can see the failure next round and adjust (e.g. fix a path
|
|
219
280
|
// typo, retry without the optional arg).
|
|
@@ -223,10 +284,9 @@ export class LLMService {
|
|
|
223
284
|
});
|
|
224
285
|
}
|
|
225
286
|
}
|
|
226
|
-
// Emit one tool_calls chunk for this iteration
|
|
227
|
-
//
|
|
228
|
-
|
|
229
|
-
yield { type: 'tool_calls', toolCalls: detectedToolCalls };
|
|
287
|
+
// Emit one tool_calls chunk for this iteration, with per-tool results
|
|
288
|
+
// attached (index-aligned). TUI / headless render outcomes from here.
|
|
289
|
+
yield { type: 'tool_calls', toolCalls: detectedToolCalls, results: callResults };
|
|
230
290
|
continue;
|
|
231
291
|
}
|
|
232
292
|
// No tool calls - done. Return final response (with usage if we have it).
|
package/dist/llm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,MAAM,OAAO,UAAU;IACb,QAAQ,CAAc;IACtB,KAAK,GAAsB,IAAI,GAAG,EAAE,CAAC;IACrC,MAAM,CAAS;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/llm/index.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/openai.d.ts
CHANGED
|
@@ -38,8 +38,12 @@ export declare class OpenAIProvider implements LLMProvider {
|
|
|
38
38
|
/**
|
|
39
39
|
* Execute the HTTP request. Serializes via stableStringify so the byte
|
|
40
40
|
* sequence is deterministic across requests.
|
|
41
|
+
*
|
|
42
|
+
* v3.0.5: accepts an external AbortSignal (combined with the 60s connect
|
|
43
|
+
* timeout via AbortSignal.any) so caller-side cancellation and the
|
|
44
|
+
* streaming idle watchdog can kill the request.
|
|
41
45
|
*/
|
|
42
|
-
protected doRequest(body: any): Promise<Response>;
|
|
46
|
+
protected doRequest(body: any, external?: AbortSignal): Promise<Response>;
|
|
43
47
|
/**
|
|
44
48
|
* Map upstream usage JSON to the canonical Usage shape. Different providers
|
|
45
49
|
* attach different cache-related fields; we pass everything through so the
|
package/dist/llm/openai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAY,WAAW,EAAE,MAAM,aAAa,CAAC;AACjG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGjE,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;gBAErB,MAAM,EAAE,cAAc;IAIlC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE;IAiB1B,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/llm/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAY,WAAW,EAAE,MAAM,aAAa,CAAC;AACjG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGjE,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;gBAErB,MAAM,EAAE,cAAc;IAIlC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE;IAiB1B,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAsB1F,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC;IAiI5H;;;;;;;;;;OAUG;IACH,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE;IA2BtG;;;;;;;OAOG;cACa,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsB/E;;;;OAIG;IACH,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC;CAa1D"}
|