thatgfsj-code 3.0.3 → 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/cache/smartModel.d.ts +29 -22
- package/dist/cache/smartModel.d.ts.map +1 -1
- package/dist/cache/smartModel.js +33 -40
- package/dist/cache/smartModel.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 +9 -6
- 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 +71 -10
- 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/InitWizard.d.ts.map +1 -1
- package/dist/tui/components/InitWizard.js +8 -13
- package/dist/tui/components/InitWizard.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 +83 -49
- 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 -145
- 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 -158
- 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 -302
- 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 -251
- 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 -273
- 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 -112
- 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) {
|
|
@@ -93,10 +122,11 @@ export class LLMService {
|
|
|
93
122
|
async *chatStream(messages, options) {
|
|
94
123
|
if (!this.hasApiKey())
|
|
95
124
|
throw new Error(this.getNoKeyMessage());
|
|
96
|
-
// v3.0.3: Resolve TTL once per session.
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
//
|
|
125
|
+
// v3.0.3: Resolve TTL once per session.
|
|
126
|
+
// v3.0.4: default is 1h (long-task). 'auto' (legacy config value)
|
|
127
|
+
// resolves via decideTTL which now always returns 1h — we cannot
|
|
128
|
+
// predict task length at round 0, so we default to the TTL that
|
|
129
|
+
// cannot expire mid-task. '5m'/'1h' are explicit user pins.
|
|
100
130
|
const configTtl = this.provider.config?.cache?.ttl;
|
|
101
131
|
if (configTtl === 'auto' && this.resolvedTtl === null) {
|
|
102
132
|
const decision = decideTTL(messages, null);
|
|
@@ -168,6 +198,10 @@ export class LLMService {
|
|
|
168
198
|
// tool_call message. This preserves the upstream cache prefix —
|
|
169
199
|
// re-writing an earlier message would shift the prefix by N bytes
|
|
170
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 = [];
|
|
171
205
|
for (const toolCall of detectedToolCalls) {
|
|
172
206
|
const tool = this.tools.get(toolCall.function.name);
|
|
173
207
|
if (!tool) {
|
|
@@ -185,11 +219,37 @@ export class LLMService {
|
|
|
185
219
|
tool_call_id: toolCall.id,
|
|
186
220
|
name: toolCall.function.name,
|
|
187
221
|
});
|
|
222
|
+
callResults.push({ name: toolCall.function.name, ok: false, output: errMsg });
|
|
188
223
|
continue;
|
|
189
224
|
}
|
|
190
225
|
try {
|
|
191
|
-
const
|
|
192
|
-
|
|
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);
|
|
193
253
|
const output = result.success ? (result.output || JSON.stringify(result.data)) : (result.error || 'Tool failed');
|
|
194
254
|
currentMessages.push({
|
|
195
255
|
role: 'tool',
|
|
@@ -197,6 +257,7 @@ export class LLMService {
|
|
|
197
257
|
tool_call_id: toolCall.id,
|
|
198
258
|
name: toolCall.function.name,
|
|
199
259
|
});
|
|
260
|
+
callResults.push({ name: toolCall.function.name, ok: result.success, output });
|
|
200
261
|
if (!result.success) {
|
|
201
262
|
// Soft failure: tool returned success=false. Same repair pattern.
|
|
202
263
|
currentMessages.push({
|
|
@@ -213,6 +274,7 @@ export class LLMService {
|
|
|
213
274
|
tool_call_id: toolCall.id,
|
|
214
275
|
name: toolCall.function.name,
|
|
215
276
|
});
|
|
277
|
+
callResults.push({ name: toolCall.function.name, ok: false, output: errMsg });
|
|
216
278
|
// Hard failure: tool.execute threw. Repair message so the model
|
|
217
279
|
// can see the failure next round and adjust (e.g. fix a path
|
|
218
280
|
// typo, retry without the optional arg).
|
|
@@ -222,10 +284,9 @@ export class LLMService {
|
|
|
222
284
|
});
|
|
223
285
|
}
|
|
224
286
|
}
|
|
225
|
-
// Emit one tool_calls chunk for this iteration
|
|
226
|
-
//
|
|
227
|
-
|
|
228
|
-
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 };
|
|
229
290
|
continue;
|
|
230
291
|
}
|
|
231
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"}
|