thatgfsj-code 2.2.9 → 3.0.0
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/CHANGELOG.md +15 -67
- package/dist/app/index.d.ts +28 -5
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +69 -10
- package/dist/app/index.js.map +1 -1
- package/dist/cache/fingerprint.d.ts +49 -0
- package/dist/cache/fingerprint.d.ts.map +1 -0
- package/dist/cache/fingerprint.js +100 -0
- package/dist/cache/fingerprint.js.map +1 -0
- package/dist/cache/index.d.ts +15 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +15 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/smartModel.d.ts +40 -0
- package/dist/cache/smartModel.d.ts.map +1 -0
- package/dist/cache/smartModel.js +43 -0
- package/dist/cache/smartModel.js.map +1 -0
- package/dist/cache/stats.d.ts +93 -0
- package/dist/cache/stats.d.ts.map +1 -0
- package/dist/cache/stats.js +155 -0
- package/dist/cache/stats.js.map +1 -0
- package/dist/cache/volatile.d.ts +32 -0
- package/dist/cache/volatile.d.ts.map +1 -0
- package/dist/cache/volatile.js +44 -0
- package/dist/cache/volatile.js.map +1 -0
- package/dist/cmd/index.js +49 -57
- package/dist/cmd/index.js.map +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +14 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/llm/anthropic.d.ts +55 -5
- package/dist/llm/anthropic.d.ts.map +1 -1
- package/dist/llm/anthropic.js +172 -26
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/index.d.ts +26 -8
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +83 -15
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/openai.d.ts +28 -8
- package/dist/llm/openai.d.ts.map +1 -1
- package/dist/llm/openai.js +58 -8
- package/dist/llm/openai.js.map +1 -1
- package/dist/llm/provider.d.ts +40 -8
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +8 -1
- package/dist/llm/provider.js.map +1 -1
- package/dist/prompts/index.d.ts +32 -0
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +33 -11
- package/dist/prompts/index.js.map +1 -1
- package/dist/session/index.d.ts +32 -3
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +51 -36
- package/dist/session/index.js.map +1 -1
- package/dist/skills/brainstorming.js +33 -33
- package/dist/skills/code-review.js +35 -35
- package/dist/skills/executing-plans.js +18 -18
- package/dist/skills/frontend-design.js +25 -25
- package/dist/skills/git-workflow.js +26 -26
- package/dist/skills/improve-architecture.js +28 -28
- package/dist/skills/neuroweave.js +37 -37
- package/dist/skills/playwright.js +62 -62
- package/dist/skills/prototype.js +20 -20
- package/dist/skills/subagent.js +19 -19
- package/dist/skills/supabase.js +34 -34
- package/dist/skills/systematic-debugging.js +34 -34
- package/dist/skills/tdd.js +29 -29
- package/dist/skills/triage.js +25 -25
- package/dist/skills/verification.js +22 -22
- package/dist/skills/writing-plans.js +32 -32
- package/dist/tools/nwt.js +16 -16
- package/dist/tui/app.d.ts.map +1 -1
- package/dist/tui/app.js +9 -2
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/components/Header.d.ts +8 -0
- package/dist/tui/components/Header.d.ts.map +1 -1
- package/dist/tui/components/Header.js +17 -4
- package/dist/tui/components/Header.js.map +1 -1
- package/dist/tui/components/InitWizard.d.ts +12 -1
- package/dist/tui/components/InitWizard.d.ts.map +1 -1
- package/dist/tui/components/InitWizard.js +58 -3
- package/dist/tui/components/InitWizard.js.map +1 -1
- package/dist/tui/components/ToolCall.d.ts.map +1 -1
- package/dist/tui/components/ToolCall.js +1 -6
- package/dist/tui/components/ToolCall.js.map +1 -1
- package/dist/tui/hooks/useChat.d.ts +22 -0
- package/dist/tui/hooks/useChat.d.ts.map +1 -1
- package/dist/tui/hooks/useChat.js +82 -46
- package/dist/tui/hooks/useChat.js.map +1 -1
- package/dist/tui/hooks/useCommands.d.ts.map +1 -1
- package/dist/tui/hooks/useCommands.js +57 -0
- package/dist/tui/hooks/useCommands.js.map +1 -1
- package/dist/tui/welcome.d.ts.map +1 -1
- package/dist/tui/welcome.js +2 -3
- package/dist/tui/welcome.js.map +1 -1
- package/dist/types.d.ts +79 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/stableStringify.d.ts +21 -0
- package/dist/utils/stableStringify.d.ts.map +1 -0
- package/dist/utils/stableStringify.js +53 -0
- package/dist/utils/stableStringify.js.map +1 -0
- package/dist/utils/thinking.d.ts.map +1 -1
- package/dist/utils/thinking.js +0 -3
- package/dist/utils/thinking.js.map +1 -1
- package/package.json +6 -6
- package/src/app/index.ts +180 -124
- package/src/cache/fingerprint.ts +101 -0
- package/src/cache/index.ts +15 -0
- package/src/cache/smartModel.ts +52 -0
- package/src/cache/stats.ts +199 -0
- package/src/cache/volatile.ts +47 -0
- package/src/cmd/index.tsx +288 -292
- package/src/config/index.ts +156 -148
- package/src/config/providers.ts +234 -234
- package/src/config/types.ts +67 -53
- package/src/hooks/index.ts +111 -111
- package/src/llm/anthropic.ts +388 -243
- package/src/llm/gemini.ts +169 -169
- package/src/llm/index.ts +265 -200
- package/src/llm/openai.ts +243 -196
- package/src/llm/provider.ts +66 -34
- package/src/prompts/index.ts +260 -220
- package/src/session/compactor.ts +103 -103
- package/src/session/index.ts +181 -168
- package/src/session/message.ts +42 -42
- package/src/skills/brainstorming.ts +43 -43
- package/src/skills/code-review.ts +45 -45
- package/src/skills/executing-plans.ts +27 -27
- package/src/skills/frontend-design.ts +35 -35
- package/src/skills/git-workflow.ts +36 -36
- package/src/skills/improve-architecture.ts +38 -38
- package/src/skills/index.ts +136 -136
- package/src/skills/neuroweave.ts +47 -47
- package/src/skills/playwright.ts +72 -72
- package/src/skills/prototype.ts +30 -30
- package/src/skills/subagent.ts +28 -28
- package/src/skills/supabase.ts +44 -44
- package/src/skills/systematic-debugging.ts +44 -44
- package/src/skills/tdd.ts +39 -39
- package/src/skills/triage.ts +35 -35
- package/src/skills/verification.ts +31 -31
- package/src/skills/writing-plans.ts +42 -42
- package/src/tools/nwt.ts +598 -598
- package/src/tools/types.ts +122 -122
- package/src/tui/app.tsx +199 -186
- package/src/tui/components/ChatList.tsx +41 -41
- package/src/tui/components/ChatMessage.tsx +54 -54
- package/src/tui/components/Header.tsx +56 -29
- package/src/tui/components/InitWizard.tsx +217 -132
- package/src/tui/components/Markdown.tsx +35 -35
- package/src/tui/components/ModelSelector.tsx +87 -87
- package/src/tui/components/StatusBar.tsx +30 -30
- package/src/tui/components/Thinking.tsx +17 -17
- package/src/tui/components/ToolCall.tsx +102 -107
- package/src/tui/components/UserInput.tsx +131 -131
- package/src/tui/hooks/useChat.ts +287 -238
- package/src/tui/hooks/useCommands.ts +234 -176
- package/src/tui/index.ts +6 -6
- package/src/tui/welcome.ts +177 -178
- package/src/types.ts +104 -42
- package/src/utils/diff.ts +71 -71
- package/src/utils/project.ts +99 -99
- package/src/utils/stableStringify.ts +47 -0
- package/src/utils/thinking.ts +118 -121
- package/tests/cache/fingerprint.test.ts +75 -0
- package/tests/cache/stableStringify.test.ts +43 -0
- package/tests/cache/stats.test.ts +146 -0
- package/tests/cache/volatile.test.ts +75 -0
- package/tests/smoke-pollution.mjs +78 -0
- package/tests/smoke-thinking.mjs +110 -0
- package/tests/smoke-tool-stream.mjs +69 -0
- package/tests/smoke-tool.mjs +117 -0
- package/.nwt/meta.json +0 -5
- package/dist/version.d.ts +0 -16
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -16
- package/dist/version.js.map +0 -1
- package/src/version.ts +0 -16
package/dist/llm/anthropic.d.ts
CHANGED
|
@@ -8,14 +8,35 @@
|
|
|
8
8
|
* Streaming: SSE with "event: ..." and "data: {...}" lines
|
|
9
9
|
*
|
|
10
10
|
* Key differences from OpenAI:
|
|
11
|
-
* - System message is separate (top-level "system" field)
|
|
11
|
+
* - System message is separate (top-level "system" field, an array of blocks)
|
|
12
12
|
* - No "system" role in messages array
|
|
13
13
|
* - Tool use blocks have type "tool_use" with "input" (not "arguments")
|
|
14
14
|
* - Tool results use role "tool_result" (not "tool")
|
|
15
|
+
*
|
|
16
|
+
* v3.0.0: prompt caching support
|
|
17
|
+
* - The top-level "system" field is now an array of content blocks. The
|
|
18
|
+
* last block carries cache_control: { type: 'ephemeral', ttl: '5m' }
|
|
19
|
+
* by default, so Anthropic caches the entire system prefix across rounds.
|
|
20
|
+
* The previous buildRequest silently dropped any system messages after
|
|
21
|
+
* the first (`find` + `system` string) — that bug is fixed here: we
|
|
22
|
+
* forward every system message and let the provider concatenate.
|
|
23
|
+
* - The last tool definition gets a cache_control marker too, so tool
|
|
24
|
+
* schemas are cached on subsequent rounds (Anthropic charges full price
|
|
25
|
+
* for uncached tool descriptions, which can be the largest single block
|
|
26
|
+
* in tool-heavy sessions).
|
|
27
|
+
* - The stream's trailing message_delta carries a `usage` object with
|
|
28
|
+
* cache_creation_input_tokens / cache_read_input_tokens. We yield a
|
|
29
|
+
* structured { type: 'usage' } chunk so the cache stats layer can
|
|
30
|
+
* record hit-rates.
|
|
31
|
+
* - JSON serialization uses stableStringify so the byte sequence of the
|
|
32
|
+
* request body is deterministic across rounds. Although Anthropic does
|
|
33
|
+
* not do byte-level prefix cache (it relies on its own fingerprint),
|
|
34
|
+
* deterministic serialization makes the on-the-wire body easy to diff
|
|
35
|
+
* when debugging cache misses.
|
|
15
36
|
*/
|
|
16
|
-
import type { ChatMessage, ChatResponse, ChatOptions } from '../types.js';
|
|
37
|
+
import type { ChatMessage, ChatResponse, ChatOptions, StreamChunk, Usage } from '../types.js';
|
|
17
38
|
import type { Tool } from '../tools/types.js';
|
|
18
|
-
import type { LLMProvider,
|
|
39
|
+
import type { LLMProvider, ProviderConfig } from './provider.js';
|
|
19
40
|
export declare class AnthropicProvider implements LLMProvider {
|
|
20
41
|
readonly name = "anthropic";
|
|
21
42
|
protected config: ProviderConfig;
|
|
@@ -24,12 +45,41 @@ export declare class AnthropicProvider implements LLMProvider {
|
|
|
24
45
|
chat(messages: ChatMessage[], options?: ChatOptions, tools?: Tool[]): Promise<ChatResponse>;
|
|
25
46
|
chatStream(messages: ChatMessage[], options?: ChatOptions, tools?: Tool[]): AsyncGenerator<StreamChunk, ChatResponse>;
|
|
26
47
|
/**
|
|
27
|
-
* Build request body for Anthropic API
|
|
48
|
+
* Build request body for Anthropic API.
|
|
49
|
+
*
|
|
50
|
+
* v3.0.0 changes:
|
|
51
|
+
* 1. `system` is now an array of content blocks (was a single string).
|
|
52
|
+
* 2. ALL system messages are forwarded (the previous code used `find`
|
|
53
|
+
* and dropped every system message after the first, which broke
|
|
54
|
+
* `[Earlier conversation...]` summaries).
|
|
55
|
+
* 3. The LAST system block carries cache_control, marking the entire
|
|
56
|
+
* system prefix as cacheable.
|
|
57
|
+
* 4. The LAST tool definition carries cache_control, marking the entire
|
|
58
|
+
* tool list as cacheable.
|
|
59
|
+
* 5. Per-message cache_control markers are forwarded when set on
|
|
60
|
+
* ChatMessage (rare, but supports fine-grained breakpoints).
|
|
61
|
+
* 6. JSON.parse on tool arguments is wrapped in try/catch — interrupted
|
|
62
|
+
* streams can leave a half-parsed JSON string that previously
|
|
63
|
+
* crashed the entire buildRequest.
|
|
28
64
|
*/
|
|
29
65
|
protected buildRequest(messages: ChatMessage[], stream: boolean, options?: ChatOptions, tools?: Tool[]): any;
|
|
30
66
|
/**
|
|
31
|
-
* Execute the HTTP request
|
|
67
|
+
* Execute the HTTP request.
|
|
68
|
+
*
|
|
69
|
+
* v3.0.0: serialization via stableStringify; also send the
|
|
70
|
+
* `anthropic-beta: prompt-caching-2024-07-31` header so the API returns
|
|
71
|
+
* cache_read_input_tokens / cache_creation_input_tokens in the streaming
|
|
72
|
+
* usage fields. Some relay stations do not forward this header — that is
|
|
73
|
+
* fine, the rest of the provider still works (just without cache stats).
|
|
32
74
|
*/
|
|
33
75
|
protected doRequest(body: any): Promise<Response>;
|
|
76
|
+
/**
|
|
77
|
+
* Map Anthropic usage JSON to the canonical Usage shape. Anthropic reports
|
|
78
|
+
* input_tokens / output_tokens on the message_start event, and adds
|
|
79
|
+
* cache_creation_input_tokens / cache_read_input_tokens on message_delta.
|
|
80
|
+
* Either can arrive first depending on the streaming order, so we accept
|
|
81
|
+
* either and merge.
|
|
82
|
+
*/
|
|
83
|
+
protected normalizeUsage(raw: any): Usage;
|
|
34
84
|
}
|
|
35
85
|
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/llm/anthropic.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/llm/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAY,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACxG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAMjE,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,IAAI,eAAe;IAC5B,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;gBAErB,MAAM,EAAE,cAAc;IAIlC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE;IAc1B,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAkC1F,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC;IA6H5H;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE;IAgGtG;;;;;;;;OAQG;cACa,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsBvD;;;;;;OAMG;IACH,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK;CAS1C"}
|
package/dist/llm/anthropic.js
CHANGED
|
@@ -8,11 +8,35 @@
|
|
|
8
8
|
* Streaming: SSE with "event: ..." and "data: {...}" lines
|
|
9
9
|
*
|
|
10
10
|
* Key differences from OpenAI:
|
|
11
|
-
* - System message is separate (top-level "system" field)
|
|
11
|
+
* - System message is separate (top-level "system" field, an array of blocks)
|
|
12
12
|
* - No "system" role in messages array
|
|
13
13
|
* - Tool use blocks have type "tool_use" with "input" (not "arguments")
|
|
14
14
|
* - Tool results use role "tool_result" (not "tool")
|
|
15
|
+
*
|
|
16
|
+
* v3.0.0: prompt caching support
|
|
17
|
+
* - The top-level "system" field is now an array of content blocks. The
|
|
18
|
+
* last block carries cache_control: { type: 'ephemeral', ttl: '5m' }
|
|
19
|
+
* by default, so Anthropic caches the entire system prefix across rounds.
|
|
20
|
+
* The previous buildRequest silently dropped any system messages after
|
|
21
|
+
* the first (`find` + `system` string) — that bug is fixed here: we
|
|
22
|
+
* forward every system message and let the provider concatenate.
|
|
23
|
+
* - The last tool definition gets a cache_control marker too, so tool
|
|
24
|
+
* schemas are cached on subsequent rounds (Anthropic charges full price
|
|
25
|
+
* for uncached tool descriptions, which can be the largest single block
|
|
26
|
+
* in tool-heavy sessions).
|
|
27
|
+
* - The stream's trailing message_delta carries a `usage` object with
|
|
28
|
+
* cache_creation_input_tokens / cache_read_input_tokens. We yield a
|
|
29
|
+
* structured { type: 'usage' } chunk so the cache stats layer can
|
|
30
|
+
* record hit-rates.
|
|
31
|
+
* - JSON serialization uses stableStringify so the byte sequence of the
|
|
32
|
+
* request body is deterministic across rounds. Although Anthropic does
|
|
33
|
+
* not do byte-level prefix cache (it relies on its own fingerprint),
|
|
34
|
+
* deterministic serialization makes the on-the-wire body easy to diff
|
|
35
|
+
* when debugging cache misses.
|
|
15
36
|
*/
|
|
37
|
+
import { stableStringify } from '../utils/stableStringify.js';
|
|
38
|
+
/** Default TTL for cache_control breakpoints. '5m' is cheaper to write; '1h' is preferred when sessions are long. */
|
|
39
|
+
const DEFAULT_CACHE_TTL = '5m';
|
|
16
40
|
export class AnthropicProvider {
|
|
17
41
|
name = 'anthropic';
|
|
18
42
|
config;
|
|
@@ -54,11 +78,7 @@ export class AnthropicProvider {
|
|
|
54
78
|
return {
|
|
55
79
|
content,
|
|
56
80
|
role: 'assistant',
|
|
57
|
-
usage: data.usage ?
|
|
58
|
-
prompt_tokens: data.usage.input_tokens || 0,
|
|
59
|
-
completion_tokens: data.usage.output_tokens || 0,
|
|
60
|
-
total_tokens: (data.usage.input_tokens || 0) + (data.usage.output_tokens || 0),
|
|
61
|
-
} : undefined,
|
|
81
|
+
usage: data.usage ? this.normalizeUsage(data.usage) : undefined,
|
|
62
82
|
tool_calls: toolCalls,
|
|
63
83
|
};
|
|
64
84
|
}
|
|
@@ -77,6 +97,8 @@ export class AnthropicProvider {
|
|
|
77
97
|
const toolUseBlocks = new Map();
|
|
78
98
|
let currentBlockIndex = -1;
|
|
79
99
|
let currentBlockType = '';
|
|
100
|
+
// Anthropic attaches usage info to the trailing message_delta event.
|
|
101
|
+
let capturedUsage;
|
|
80
102
|
try {
|
|
81
103
|
while (true) {
|
|
82
104
|
const { done, value } = await reader.read();
|
|
@@ -102,6 +124,12 @@ export class AnthropicProvider {
|
|
|
102
124
|
input: '',
|
|
103
125
|
});
|
|
104
126
|
}
|
|
127
|
+
else if (currentBlockType === 'thinking') {
|
|
128
|
+
// Anthropic extended thinking: emit as structured thinking chunks.
|
|
129
|
+
// TUI / session layer decides whether to surface these.
|
|
130
|
+
// (We don't push to fullContent — compressThinking strips
|
|
131
|
+
// these blocks from persistence.)
|
|
132
|
+
}
|
|
105
133
|
}
|
|
106
134
|
// content_block_delta: incremental text or tool input
|
|
107
135
|
if (data.type === 'content_block_delta') {
|
|
@@ -116,6 +144,26 @@ export class AnthropicProvider {
|
|
|
116
144
|
buf.input += data.delta.partial_json || '';
|
|
117
145
|
}
|
|
118
146
|
}
|
|
147
|
+
else if (data.delta?.type === 'thinking_delta') {
|
|
148
|
+
if (data.delta.thinking) {
|
|
149
|
+
yield { type: 'thinking', content: data.delta.thinking };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// message_delta carries the final usage (cache hit/miss stats).
|
|
154
|
+
// Per Anthropic docs: usage is only attached on the message_delta
|
|
155
|
+
// event of the LAST chunk (after message_stop), unless the
|
|
156
|
+
// `anthropic-beta: prompt-caching-2024-07-31` header is sent.
|
|
157
|
+
if (data.type === 'message_delta' && data.usage) {
|
|
158
|
+
capturedUsage = this.normalizeUsage({
|
|
159
|
+
...capturedUsage,
|
|
160
|
+
...data.usage,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
// message_start may carry the initial input_tokens + cache info
|
|
164
|
+
// when prompt caching is active.
|
|
165
|
+
if (data.type === 'message_start' && data.message?.usage) {
|
|
166
|
+
capturedUsage = this.normalizeUsage(data.message.usage);
|
|
119
167
|
}
|
|
120
168
|
}
|
|
121
169
|
catch {
|
|
@@ -141,16 +189,60 @@ export class AnthropicProvider {
|
|
|
141
189
|
if (toolCalls.length > 0) {
|
|
142
190
|
yield { type: 'tool_calls', toolCalls };
|
|
143
191
|
}
|
|
144
|
-
|
|
192
|
+
if (capturedUsage) {
|
|
193
|
+
yield { type: 'usage', usage: capturedUsage };
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
content: fullContent,
|
|
197
|
+
role: 'assistant',
|
|
198
|
+
usage: capturedUsage,
|
|
199
|
+
tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
200
|
+
};
|
|
145
201
|
}
|
|
146
202
|
/**
|
|
147
|
-
* Build request body for Anthropic API
|
|
203
|
+
* Build request body for Anthropic API.
|
|
204
|
+
*
|
|
205
|
+
* v3.0.0 changes:
|
|
206
|
+
* 1. `system` is now an array of content blocks (was a single string).
|
|
207
|
+
* 2. ALL system messages are forwarded (the previous code used `find`
|
|
208
|
+
* and dropped every system message after the first, which broke
|
|
209
|
+
* `[Earlier conversation...]` summaries).
|
|
210
|
+
* 3. The LAST system block carries cache_control, marking the entire
|
|
211
|
+
* system prefix as cacheable.
|
|
212
|
+
* 4. The LAST tool definition carries cache_control, marking the entire
|
|
213
|
+
* tool list as cacheable.
|
|
214
|
+
* 5. Per-message cache_control markers are forwarded when set on
|
|
215
|
+
* ChatMessage (rare, but supports fine-grained breakpoints).
|
|
216
|
+
* 6. JSON.parse on tool arguments is wrapped in try/catch — interrupted
|
|
217
|
+
* streams can leave a half-parsed JSON string that previously
|
|
218
|
+
* crashed the entire buildRequest.
|
|
148
219
|
*/
|
|
149
220
|
buildRequest(messages, stream, options, tools) {
|
|
150
|
-
//
|
|
151
|
-
|
|
221
|
+
// 1) Collect ALL system messages, in order, as content blocks. The
|
|
222
|
+
// final block (and only the final block, per Anthropic convention)
|
|
223
|
+
// carries the cache_control marker.
|
|
224
|
+
const systemMessages = messages.filter(m => m.role === 'system');
|
|
225
|
+
const cacheTtl = (this.config.cache?.ttl) || DEFAULT_CACHE_TTL;
|
|
226
|
+
const cacheEnabled = this.config.cache?.enabled !== false; // default on for Anthropic
|
|
227
|
+
const systemBlocks = systemMessages.length === 0 ? undefined : systemMessages.map((m, i, arr) => {
|
|
228
|
+
const isLast = i === arr.length - 1;
|
|
229
|
+
// ChatMessage.content may be string | ContentBlock[] (the latter used
|
|
230
|
+
// for multimodal user messages). System messages are always plain
|
|
231
|
+
// strings in our codebase, but be defensive and handle both shapes.
|
|
232
|
+
const text = typeof m.content === 'string'
|
|
233
|
+
? m.content
|
|
234
|
+
: m.content
|
|
235
|
+
.filter(b => b.type === 'text')
|
|
236
|
+
.map(b => b.text)
|
|
237
|
+
.join('');
|
|
238
|
+
const block = { type: 'text', text };
|
|
239
|
+
if (isLast && cacheEnabled) {
|
|
240
|
+
block.cache_control = { type: 'ephemeral', ttl: cacheTtl };
|
|
241
|
+
}
|
|
242
|
+
return block;
|
|
243
|
+
});
|
|
244
|
+
// 2) Convert non-system messages to Anthropic wire format.
|
|
152
245
|
const nonSystemMsgs = messages.filter(m => m.role !== 'system');
|
|
153
|
-
// Convert messages to Anthropic format
|
|
154
246
|
const anthropicMessages = nonSystemMsgs.map(m => {
|
|
155
247
|
if (m.role === 'tool') {
|
|
156
248
|
// Tool result message
|
|
@@ -170,47 +262,101 @@ export class AnthropicProvider {
|
|
|
170
262
|
blocks.push({ type: 'text', text: m.content });
|
|
171
263
|
}
|
|
172
264
|
for (const tc of m.tool_calls) {
|
|
265
|
+
// Robust parse: aborted streams can leave a half-formed JSON
|
|
266
|
+
// string. Fall back to {} so the request still goes through and
|
|
267
|
+
// the model can re-request with corrected args.
|
|
268
|
+
let parsedArgs = {};
|
|
269
|
+
try {
|
|
270
|
+
parsedArgs = JSON.parse(tc.function.arguments || '{}');
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
parsedArgs = {};
|
|
274
|
+
}
|
|
173
275
|
blocks.push({
|
|
174
276
|
type: 'tool_use',
|
|
175
277
|
id: tc.id,
|
|
176
278
|
name: tc.function.name,
|
|
177
|
-
input:
|
|
279
|
+
input: parsedArgs,
|
|
178
280
|
});
|
|
179
281
|
}
|
|
180
282
|
return { role: 'assistant', content: blocks };
|
|
181
283
|
}
|
|
182
|
-
|
|
284
|
+
// Forward per-message cache_control if the caller attached one
|
|
285
|
+
// (e.g. an inline breakpoint for a particular user message).
|
|
286
|
+
const baseContent = typeof m.content === 'string' ? m.content : m.content;
|
|
287
|
+
const msg = {
|
|
183
288
|
role: m.role === 'assistant' ? 'assistant' : 'user',
|
|
184
|
-
content:
|
|
289
|
+
content: baseContent,
|
|
185
290
|
};
|
|
291
|
+
if (m.cache_control) {
|
|
292
|
+
msg.cache_control = m.cache_control;
|
|
293
|
+
}
|
|
294
|
+
return msg;
|
|
186
295
|
});
|
|
187
296
|
const body = {
|
|
188
297
|
model: this.config.model,
|
|
189
298
|
max_tokens: options?.maxTokens ?? this.config.maxTokens ?? 4096,
|
|
190
299
|
temperature: options?.temperature ?? this.config.temperature,
|
|
191
|
-
...(
|
|
300
|
+
...(systemBlocks ? { system: systemBlocks } : {}),
|
|
192
301
|
messages: anthropicMessages,
|
|
193
302
|
stream,
|
|
194
303
|
};
|
|
304
|
+
// 3) Tools. Attach cache_control only to the LAST tool so Anthropic
|
|
305
|
+
// caches the entire tool list as a single breakpoint.
|
|
195
306
|
if (tools && tools.length > 0) {
|
|
196
|
-
|
|
307
|
+
const toolDefs = this.buildTools(tools);
|
|
308
|
+
if (cacheEnabled) {
|
|
309
|
+
toolDefs[toolDefs.length - 1].cache_control = { type: 'ephemeral', ttl: cacheTtl };
|
|
310
|
+
}
|
|
311
|
+
body.tools = toolDefs;
|
|
197
312
|
}
|
|
198
313
|
return body;
|
|
199
314
|
}
|
|
200
315
|
/**
|
|
201
|
-
* Execute the HTTP request
|
|
316
|
+
* Execute the HTTP request.
|
|
317
|
+
*
|
|
318
|
+
* v3.0.0: serialization via stableStringify; also send the
|
|
319
|
+
* `anthropic-beta: prompt-caching-2024-07-31` header so the API returns
|
|
320
|
+
* cache_read_input_tokens / cache_creation_input_tokens in the streaming
|
|
321
|
+
* usage fields. Some relay stations do not forward this header — that is
|
|
322
|
+
* fine, the rest of the provider still works (just without cache stats).
|
|
202
323
|
*/
|
|
203
324
|
async doRequest(body) {
|
|
204
325
|
const url = `${this.config.baseUrl}/messages`;
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
'
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
326
|
+
const controller = new AbortController();
|
|
327
|
+
const timeout = setTimeout(() => controller.abort(), 60000); // 60s
|
|
328
|
+
try {
|
|
329
|
+
return await fetch(url, {
|
|
330
|
+
method: 'POST',
|
|
331
|
+
headers: {
|
|
332
|
+
'Content-Type': 'application/json',
|
|
333
|
+
'x-api-key': this.config.apiKey,
|
|
334
|
+
'anthropic-version': '2023-06-01',
|
|
335
|
+
'anthropic-beta': 'prompt-caching-2024-07-31',
|
|
336
|
+
},
|
|
337
|
+
body: stableStringify(body),
|
|
338
|
+
signal: controller.signal,
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
finally {
|
|
342
|
+
clearTimeout(timeout);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Map Anthropic usage JSON to the canonical Usage shape. Anthropic reports
|
|
347
|
+
* input_tokens / output_tokens on the message_start event, and adds
|
|
348
|
+
* cache_creation_input_tokens / cache_read_input_tokens on message_delta.
|
|
349
|
+
* Either can arrive first depending on the streaming order, so we accept
|
|
350
|
+
* either and merge.
|
|
351
|
+
*/
|
|
352
|
+
normalizeUsage(raw) {
|
|
353
|
+
return {
|
|
354
|
+
prompt_tokens: raw.input_tokens || 0,
|
|
355
|
+
completion_tokens: raw.output_tokens || 0,
|
|
356
|
+
total_tokens: (raw.input_tokens || 0) + (raw.output_tokens || 0),
|
|
357
|
+
cache_creation_input_tokens: raw.cache_creation_input_tokens,
|
|
358
|
+
cache_read_input_tokens: raw.cache_read_input_tokens,
|
|
359
|
+
};
|
|
214
360
|
}
|
|
215
361
|
}
|
|
216
362
|
//# sourceMappingURL=anthropic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/llm/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,OAAO,iBAAiB;IACnB,IAAI,GAAG,WAAW,CAAC;IAClB,MAAM,CAAiB;IAEjC,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,WAAW,IAAI;gBAChC,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,MAAM,CAAC,WAAW,CAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CACjF;gBACD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACnE;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAuB,EAAE,OAAqB,EAAE,KAAc;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,uBAAuB;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7E,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE5D,qBAAqB;QACrB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;QACpF,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAC1E,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,UAAmB;YACzB,QAAQ,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;aACnC;SACF,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO;YACL,OAAO;YACP,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAClB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC;gBAC3C,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC;gBAChD,YAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;aAC/E,CAAC,CAAC,CAAC,SAAS;YACb,UAAU,EAAE,SAAS;SACtB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,CAAC,UAAU,CAAC,QAAuB,EAAE,OAAqB,EAAE,KAAc;QAC9E,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,wBAAwB;QACxB,MAAM,aAAa,GAA6D,IAAI,GAAG,EAAE,CAAC;QAC1F,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC;QAC3B,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAE1B,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI;oBAAE,MAAM;gBAEhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;wBAAE,SAAS;oBAExD,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAE1C,yCAAyC;wBACzC,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;4BACxC,iBAAiB,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;4BACpC,gBAAgB,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC;4BAClD,IAAI,gBAAgB,KAAK,UAAU,EAAE,CAAC;gCACpC,aAAa,CAAC,GAAG,CAAC,iBAAiB,EAAE;oCACnC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE;oCAC/B,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE;oCACnC,KAAK,EAAE,EAAE;iCACV,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;wBAED,sDAAsD;wBACtD,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;4BACxC,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;gCACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gCAC7B,WAAW,IAAI,IAAI,CAAC;gCACpB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;4BACxC,CAAC;iCAAM,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,kBAAkB,EAAE,CAAC;gCACnD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gCACjD,IAAI,GAAG,EAAE,CAAC;oCACR,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;gCAC7C,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,oBAAoB;oBACtB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;QAED,wCAAwC;QACxC,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,aAAa,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACvB,SAAS,CAAC,IAAI,CAAC;oBACb,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE;iBACnD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QAC1C,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAC/G,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,QAAuB,EAAE,MAAe,EAAE,OAAqB,EAAE,KAAc;QACpG,yCAAyC;QACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAEhE,uCAAuC;QACvC,MAAM,iBAAiB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACtB,sBAAsB;gBACtB,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,aAAa;4BACnB,WAAW,EAAE,CAAC,CAAC,YAAY;4BAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;yBACnB,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,oCAAoC;gBACpC,MAAM,MAAM,GAAU,EAAE,CAAC;gBACzB,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBACd,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjD,CAAC;gBACD,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBAC9B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,EAAE,CAAC,EAAE;wBACT,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;wBACtB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC;qBACjD,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAChD,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;gBACnD,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAQ;YAChB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,UAAU,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI;YAC/D,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW;YAC5D,GAAG,CAAC,SAAS,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;YAC/C,QAAQ,EAAE,iBAAiB;YAC3B,MAAM;SACP,CAAC;QAEF,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,SAAS,CAAC,IAAS;QACjC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC;QAC9C,OAAO,KAAK,CAAC,GAAG,EAAE;YAChB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC/B,mBAAmB,EAAE,YAAY;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/llm/anthropic.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/index.d.ts
CHANGED
|
@@ -1,30 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* LLM Service - Factory for creating providers
|
|
3
3
|
* Supports all providers + custom relay stations (中转站)
|
|
4
|
+
*
|
|
5
|
+
* v3.0.0+: streaming protocol migrated to structured StreamChunk
|
|
6
|
+
* - chatStream yields { type: 'text' | 'tool_calls' | 'thinking' | 'usage' }
|
|
7
|
+
* - Tool call execution is now part of the agent loop; consumers see
|
|
8
|
+
* { type: 'tool_calls', toolCalls } for dispatch and { type: 'text', content }
|
|
9
|
+
* for model output. The legacy @@TOOL@@ sentinel-string protocol is GONE.
|
|
10
|
+
* - Usage / cache stats are emitted as the final { type: 'usage' } chunk,
|
|
11
|
+
* which the TUI cache stats store consumes.
|
|
4
12
|
*/
|
|
5
|
-
import type { ChatMessage, ChatResponse, ChatOptions } from '../types.js';
|
|
13
|
+
import type { ChatMessage, ChatResponse, ChatOptions, StreamChunk } from '../types.js';
|
|
6
14
|
import type { Tool } from '../tools/types.js';
|
|
7
15
|
import type { LLMProvider } from './provider.js';
|
|
8
|
-
import type { AIConfig } from '../config/types.js';
|
|
16
|
+
import type { AIConfig, Config } from '../config/types.js';
|
|
9
17
|
export declare class LLMService {
|
|
10
18
|
private provider;
|
|
11
19
|
private tools;
|
|
12
20
|
private apiKey;
|
|
13
21
|
constructor(provider: LLMProvider, apiKey: string);
|
|
14
|
-
static fromConfig(config: AIConfig
|
|
22
|
+
static fromConfig(config: AIConfig & {
|
|
23
|
+
cache?: Config['cache'];
|
|
24
|
+
}): LLMService;
|
|
15
25
|
registerTools(tools: Tool[]): void;
|
|
16
26
|
getProviderName(): string;
|
|
17
27
|
hasApiKey(): boolean;
|
|
18
28
|
chat(messages: ChatMessage[], options?: ChatOptions): Promise<ChatResponse>;
|
|
19
29
|
/**
|
|
20
|
-
* Streaming chat with agent loop (tool call support)
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
30
|
+
* Streaming chat with agent loop (tool call support).
|
|
31
|
+
*
|
|
32
|
+
* Structured chunk protocol (replaces the @@TOOL@@ sentinel strings):
|
|
33
|
+
* { type: 'text', content: string } model output, accumulate + render
|
|
34
|
+
* { type: 'tool_calls', toolCalls: ToolCall[] } dispatch tools, results will
|
|
35
|
+
* be folded into the next request
|
|
36
|
+
* { type: 'thinking', content: string } reasoning text (consumers may
|
|
37
|
+
* display in debug mode)
|
|
38
|
+
* { type: 'usage', usage: Usage } cache hit/miss + token counts;
|
|
39
|
+
* emitted on the final round
|
|
40
|
+
*
|
|
41
|
+
* Returns the final ChatResponse of the agent loop when done.
|
|
24
42
|
*/
|
|
25
43
|
chatStream(messages: ChatMessage[], options?: ChatOptions & {
|
|
26
44
|
maxIterations?: number;
|
|
27
|
-
}): AsyncGenerator<
|
|
45
|
+
}): AsyncGenerator<StreamChunk, ChatResponse>;
|
|
28
46
|
private truncateArgs;
|
|
29
47
|
private getNoKeyMessage;
|
|
30
48
|
}
|
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
|
|
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,EAAE,MAAM,aAAa,CAAC;AACjG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAgB,MAAM,oBAAoB,CAAC;AAMzE,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,MAAM,CAAS;gBAEX,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM;IAKjD,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;KAAE,GAAG,UAAU;IAgC7E,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAMlC,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,CAAA;KAAE,GACjD,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC;IAwI5C,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"}
|