@qwen-code/arena-agent 0.0.4 → 0.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/.env.example +6 -0
- package/README.md +46 -6
- package/dist/agent.js +24 -1
- package/dist/agent.js.map +1 -1
- package/dist/anthropic.d.ts +16 -0
- package/dist/anthropic.js +391 -0
- package/dist/anthropic.js.map +1 -0
- package/dist/cli.js +11 -1
- package/dist/cli.js.map +1 -1
- package/dist/compaction.d.ts +2 -1
- package/dist/compaction.js +8 -2
- package/dist/compaction.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.js +13 -0
- package/dist/config.js.map +1 -1
- package/dist/history.d.ts +2 -2
- package/dist/history.js +4 -4
- package/dist/history.js.map +1 -1
- package/dist/mock.js +14 -0
- package/dist/mock.js.map +1 -1
- package/dist/protocol.d.ts +3 -2
- package/dist/protocol.js +9 -1
- package/dist/protocol.js.map +1 -1
- package/dist/provider.d.ts +4 -0
- package/dist/provider.js +145 -8
- package/dist/provider.js.map +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/tui.js +14 -4
- package/dist/tui.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/package.json +1 -1
package/.env.example
CHANGED
|
@@ -31,11 +31,17 @@ ARENA_COMPACTION_SUMMARY_MAX_TOKENS=8192
|
|
|
31
31
|
# ARENA_MODEL_MAX_RETRIES=5
|
|
32
32
|
# ARENA_MODEL_RETRY_BASE_MS=1000
|
|
33
33
|
# ARENA_MODEL_RETRY_MAX_MS=30000
|
|
34
|
+
# A stream that stays open but delivers no bytes for this long is aborted and
|
|
35
|
+
# retried like a network fault (0 disables). Some gateways stall silently.
|
|
36
|
+
# ARENA_MODEL_STREAM_IDLE_TIMEOUT_MS=300000
|
|
34
37
|
|
|
35
38
|
# Daemon storage namespace. One deployed daemon should use one authenticated
|
|
36
39
|
# tenant identity; sessions underneath it have independent workspaces.
|
|
37
40
|
# ARENA_TENANT_ID=local
|
|
38
41
|
# ARENA_SESSION_WORKSPACE_MODE=empty
|
|
42
|
+
# Session state (histories, session metadata, daemon session workspaces)
|
|
43
|
+
# defaults to ~/.arena so runs never write into the task workspace.
|
|
44
|
+
# ARENA_HOME=~/.arena
|
|
39
45
|
|
|
40
46
|
# Tool backends.
|
|
41
47
|
DASHSCOPE_API_KEY=
|
package/README.md
CHANGED
|
@@ -41,8 +41,8 @@ export ARENA_MODEL=anthropic/claude-sonnet-4-20250514
|
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
设置 `LITELLM_PROXY_URL` 时,模型名会原样发送给 LiteLLM。没有 Proxy 时,
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
也支持直连:`openai/` 与 `gemini/` 前缀走各自的 OpenAI-compatibility 接口,
|
|
45
|
+
`anthropic/` 前缀直接使用原生 Anthropic Messages 协议(`/v1/messages`):
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
48
|
# OpenAI
|
|
@@ -56,8 +56,35 @@ export ANTHROPIC_API_KEY=...
|
|
|
56
56
|
# Gemini
|
|
57
57
|
export ARENA_MODEL=gemini/gemini-2.5-pro
|
|
58
58
|
export GEMINI_API_KEY=...
|
|
59
|
+
|
|
60
|
+
# Anthropic 兼容网关(如 DashScope)
|
|
61
|
+
export ARENA_MODEL=anthropic/qwen-latest-series-invite-beta-v92
|
|
62
|
+
export ARENA_API_BASE=https://dashscope.aliyuncs.com/apps/anthropic/v1
|
|
63
|
+
export ARENA_API_KEY=...
|
|
59
64
|
```
|
|
60
65
|
|
|
66
|
+
Anthropic 直连默认只用 `x-api-key` 鉴权(同时携带 Authorization 会让部分
|
|
67
|
+
兼容网关挂起);若网关要求 Bearer token(如 DashScope 的
|
|
68
|
+
claude-code-proxy),收到 401 后会自动切换鉴权方式并记住。流式连接保持
|
|
69
|
+
打开但长时间无字节时(部分网关会静默停滞),按
|
|
70
|
+
`ARENA_MODEL_STREAM_IDLE_TIMEOUT_MS`(默认 300000,设 0 关闭)中止并按
|
|
71
|
+
网络故障重试。
|
|
72
|
+
|
|
73
|
+
Anthropic 直连在原生协议上完整支持 extended thinking:
|
|
74
|
+
`ARENA_ENABLE_THINKING` / `ARENA_THINKING_BUDGET` 映射为
|
|
75
|
+
`thinking.budget_tokens`(Anthropic 要求启用 thinking 时不调整
|
|
76
|
+
temperature,此时不发送该参数)。带签名的 thinking/redacted_thinking
|
|
77
|
+
block 会原样保存在对应 assistant 消息的 `reasoning_details` 字段——
|
|
78
|
+
Anthropic 要求 tool-use 续跑时回传签名 thinking block,重放历史时会按
|
|
79
|
+
原顺序还原;无签名的 thinking block(部分网关返回 `signature: ""`)
|
|
80
|
+
不参与重放,因为协议不需要它们,而且某些网关收到会挂起。
|
|
81
|
+
`reasoning_content` 仍是纯文本推理,历史契约不变。向
|
|
82
|
+
OpenAI-compatible 服务重放同一份历史时,`reasoning_details` 与 `usage`
|
|
83
|
+
一样在 wire 边界剥离。usage 会映射为 OpenAI 风格字段(`prompt_tokens`
|
|
84
|
+
含 cache 创建/读取部分),同时保留 `input_tokens`、
|
|
85
|
+
`cache_read_input_tokens` 等原生字段。`ARENA_API_BASE` 对 anthropic
|
|
86
|
+
前缀同样生效,可指向兼容 Messages 协议的网关。
|
|
87
|
+
|
|
61
88
|
任何 OpenAI-compatible 服务都可通过 `ARENA_API_BASE`、`ARENA_API_KEY`
|
|
62
89
|
直连。当前 DashScope 配置示例:
|
|
63
90
|
|
|
@@ -86,6 +113,14 @@ Harness 会在每次模型调用前估算消息、reasoning、工具 schema 和
|
|
|
86
113
|
的精确计数。如果摘要请求失败,Harness 会保留原历史并继续正常模型请求,避免
|
|
87
114
|
摘要服务的瞬时故障直接中断任务。
|
|
88
115
|
|
|
116
|
+
每次模型请求都会通过 OpenAI-compatible 的 `stream_options.include_usage`
|
|
117
|
+
请求 token 用量,并把服务端在最终 chunk 上报的 `usage` 对象原样记录到该轮
|
|
118
|
+
assistant 消息的 `usage` 字段(`history.json` 与事件流中均可见),供训练
|
|
119
|
+
和成本统计使用。向模型重放历史时,`usage` 会在 wire 边界剥离,不会发回
|
|
120
|
+
服务端。`model.complete` 事件同样携带该轮 `usage`;上下文压缩的摘要调用
|
|
121
|
+
不会在历史中留下消息,其用量通过 `compaction` 事件上报,只在事件流中可
|
|
122
|
+
见。不支持 `stream_options` 的服务可通过 `ARENA_EXTRA_BODY` 覆盖该参数。
|
|
123
|
+
|
|
89
124
|
模型请求遇到网络错误、HTTP 408/409/429 或 5xx 时会自动重试,默认最多重试
|
|
90
125
|
5 次。没有 `Retry-After` 时使用带随机抖动的指数退避;可通过
|
|
91
126
|
`ARENA_MODEL_MAX_RETRIES`、`ARENA_MODEL_RETRY_BASE_MS` 和
|
|
@@ -114,9 +149,12 @@ arena -p 'create a hello.html landing page' --output stream-json
|
|
|
114
149
|
daemon 相同的目录层级和 JSON 格式:
|
|
115
150
|
|
|
116
151
|
```text
|
|
117
|
-
|
|
152
|
+
~/.arena/tenants/<tenantId>/sessions/<sessionId>/history.json
|
|
118
153
|
```
|
|
119
154
|
|
|
155
|
+
session 状态统一存放在 `~/.arena`(可用 `ARENA_HOME` 覆盖),不写入
|
|
156
|
+
workspace,因此不会污染任务工作区或被 diff 工作区的 verifier 观察到。
|
|
157
|
+
|
|
120
158
|
输出事件及 JSON 结果中的 `session_id` 就是路径里的 `<sessionId>`。
|
|
121
159
|
`history.json` 的格式为 `{"messages":[...]}`,即使结果为 `needs_input`
|
|
122
160
|
或 `error` 也会保存。需要跨命令续写同一份显式历史时,可另外传入
|
|
@@ -165,7 +203,8 @@ data-URI。
|
|
|
165
203
|
|
|
166
204
|
- system/user:`role` + `content`;图片读取后会持久化一条 multimodal user
|
|
167
205
|
message
|
|
168
|
-
- assistant:`role` + `content` + `reasoning_content`,工具轮含 `tool_calls
|
|
206
|
+
- assistant:`role` + `content` + `reasoning_content`,工具轮含 `tool_calls`;
|
|
207
|
+
服务端上报用量时含 `usage`
|
|
169
208
|
- tool:`role` + `tool_call_id` + JSON 字符串 `content`
|
|
170
209
|
|
|
171
210
|
`assistant.delta` 实时提供 content、reasoning 与 tool-call 参数碎片;
|
|
@@ -304,10 +343,11 @@ npm start
|
|
|
304
343
|
reasoning、工具输入输出、交互问题及 workspace 文件。session ID 由服务端
|
|
305
344
|
生成;打开页面或点击 New Chat 时只保留浏览器内的空白草稿,首次发送消息
|
|
306
345
|
(包括带附件的消息)时才创建 session。每个 session 的凭证哈希、历史、
|
|
307
|
-
workspace 和 artifacts
|
|
346
|
+
workspace 和 artifacts 分别保存在(根目录 `~/.arena` 可用 `ARENA_HOME`
|
|
347
|
+
覆盖):
|
|
308
348
|
|
|
309
349
|
```text
|
|
310
|
-
|
|
350
|
+
~/.arena/tenants/<tenantId>/sessions/<sessionId>/
|
|
311
351
|
session.json
|
|
312
352
|
history.json
|
|
313
353
|
workspace/
|
package/dist/agent.js
CHANGED
|
@@ -31,6 +31,7 @@ const retryableStreamCodes = new Set([
|
|
|
31
31
|
"UND_ERR_CONNECT_TIMEOUT",
|
|
32
32
|
"UND_ERR_HEADERS_TIMEOUT",
|
|
33
33
|
"UND_ERR_BODY_TIMEOUT",
|
|
34
|
+
"ARENA_STREAM_IDLE_TIMEOUT",
|
|
34
35
|
]);
|
|
35
36
|
function describeError(error) {
|
|
36
37
|
return error instanceof Error ? error.message : String(error);
|
|
@@ -169,7 +170,7 @@ export class Agent {
|
|
|
169
170
|
throw error;
|
|
170
171
|
}
|
|
171
172
|
const finishReason = assistant.tool_calls?.length ? "tool_calls" : "stop";
|
|
172
|
-
this.sink.modelComplete(this.sessionId, step, finishReason);
|
|
173
|
+
this.sink.modelComplete(this.sessionId, step, finishReason, assistant.usage);
|
|
173
174
|
messages.push(assistant);
|
|
174
175
|
this.sink.message(this.sessionId, assistant, messages);
|
|
175
176
|
await this.checkpoint(messages);
|
|
@@ -234,6 +235,12 @@ export class Agent {
|
|
|
234
235
|
triggerRatio: this.config.contextCompactionRatio,
|
|
235
236
|
summaryMaxTokens: this.config.compactionSummaryMaxTokens,
|
|
236
237
|
}, this.options.signal);
|
|
238
|
+
if (result.compacted) {
|
|
239
|
+
// The summary request's tokens belong to no history message (the
|
|
240
|
+
// summarized prefix is replaced), so the event stream is the only
|
|
241
|
+
// place its usage can be accounted for.
|
|
242
|
+
this.sink.compaction(this.sessionId, result.usage);
|
|
243
|
+
}
|
|
237
244
|
return result.compacted;
|
|
238
245
|
}
|
|
239
246
|
catch {
|
|
@@ -253,6 +260,8 @@ export class Agent {
|
|
|
253
260
|
const contentParts = [];
|
|
254
261
|
const reasoningParts = [];
|
|
255
262
|
const calls = new Map();
|
|
263
|
+
let usage;
|
|
264
|
+
let reasoningDetails;
|
|
256
265
|
try {
|
|
257
266
|
const stream = this.client.stream({
|
|
258
267
|
model: this.config.model,
|
|
@@ -266,6 +275,14 @@ export class Agent {
|
|
|
266
275
|
signal: this.options.signal,
|
|
267
276
|
});
|
|
268
277
|
for await (const chunk of stream) {
|
|
278
|
+
// With stream_options.include_usage the usage arrives on the final
|
|
279
|
+
// chunk; providers that report it cumulatively are covered by
|
|
280
|
+
// letting the last non-empty value win.
|
|
281
|
+
if (chunk.usage)
|
|
282
|
+
usage = chunk.usage;
|
|
283
|
+
if (chunk.reasoning_details?.length) {
|
|
284
|
+
reasoningDetails = chunk.reasoning_details;
|
|
285
|
+
}
|
|
269
286
|
const delta = chunk.choices?.[0]?.delta || {};
|
|
270
287
|
if (delta.content) {
|
|
271
288
|
const content = String(delta.content);
|
|
@@ -327,6 +344,8 @@ export class Agent {
|
|
|
327
344
|
role: "assistant",
|
|
328
345
|
content,
|
|
329
346
|
reasoning_content: reasoningContent,
|
|
347
|
+
...(usage ? { usage } : {}),
|
|
348
|
+
...(reasoningDetails ? { reasoning_details: reasoningDetails } : {}),
|
|
330
349
|
}
|
|
331
350
|
: undefined;
|
|
332
351
|
throw new PartialAssistantTurnError(error, partial);
|
|
@@ -336,6 +355,10 @@ export class Agent {
|
|
|
336
355
|
content: contentParts.join(""),
|
|
337
356
|
reasoning_content: reasoningParts.join(""),
|
|
338
357
|
};
|
|
358
|
+
if (usage)
|
|
359
|
+
assistant.usage = usage;
|
|
360
|
+
if (reasoningDetails)
|
|
361
|
+
assistant.reasoning_details = reasoningDetails;
|
|
339
362
|
if (calls.size) {
|
|
340
363
|
assistant.tool_calls = [...calls.entries()]
|
|
341
364
|
.sort(([left], [right]) => left - right)
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA4B1C,SAAS,eAAe,CAAC,OAAe;IACtC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,0BAA0B;AAC1B,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,YAAY;IACZ,cAAc;IACd,cAAc;IACd,OAAO;IACP,WAAW;IACX,aAAa;IACb,UAAU;IACV,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,yBAAyB;IACzB,yBAAyB;IACzB,sBAAsB;IACtB,2BAA2B;CAC5B,CAAC,CAAC;AAEH,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,MAAM,MAAM,GAAI,KAAmC,EAAE,IAAI,CAAC;IAC1D,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,MAAM,KAAK,GAAI,KAA+C,EAAE,KAAK,EAAE,IAAI,CAAC;IAC5E,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,IAAI,KAAK,SAAS,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,4BAA4B,CAAC,QAAmB;IACvD,MAAM,SAAS,GAAc,EAAE,CAAC;IAChC,IAAI,OAAO,GAAe,EAAE,CAAC;IAE7B,MAAM,YAAY,GAAG,GAAS,EAAE;QAC9B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,MAAM;gBACZ,YAAY,EAAE,IAAI,CAAC,EAAE;gBACrB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;oBACtB,MAAM,EAAE,OAAO;oBACf,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;oBACxB,KAAK,EACH,mEAAmE;oBACrE,WAAW,EAAE,IAAI;iBAClB,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;YAAE,YAAY,EAAE,CAAC;QAC9D,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAC7B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,YAAY,CAC3C,CAAC;YACF,IAAI,KAAK,KAAK,CAAC,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,YAAY,EAAE,CAAC;IACf,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,yBAA0B,SAAQ,KAAK;IAEhC,KAAK;IACL,SAAS;IAFpB,YACW,KAAc,EACd,SAA4B;QAErC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;qBAHrD,KAAK;yBACL,SAAS;QAGlB,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,KAAK;IAMG,MAAM;IACN,IAAI;IACJ,OAAO;IAPT,MAAM,CAAc;IACpB,KAAK,CAAe;IAC5B,SAAS,CAAS;IAE3B,YACmB,MAAmB,EACnB,IAAe,EACf,OAAO,GAAiB,EAAE;sBAF1B,MAAM;oBACN,IAAI;uBACJ,OAAO;QAExB,IAAI,CAAC,MAAM;YACT,OAAO,CAAC,MAAM;gBACd,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC/B,CAAC,CAAC,IAAI,eAAe,EAAE;oBACvB,CAAC,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YACR,OAAO,CAAC,KAAK;gBACb,IAAI,YAAY,CAAC,MAAM,EAAE;oBACvB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;iBAC3C,CAAC,CAAC;QACL,IAAI,CAAC,SAAS;YACZ,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,GAAG,CACP,MAAc,EACd,OAAmB,EACnB,UAAU,GAAoB,EAAE;QAEhC,MAAM,eAAe,GACnB,UAAU,CAAC,WAAW;YACrB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAA6B,CAAC;QAChE,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW;YACxC,CAAC,CAAC,sBAAsB,CAAC,eAAe,CAAC;YACzC,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,OAAO,EAAE,MAAM;YAC9B,CAAC,CAAC,4BAA4B,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACxD,CAAC,CAAC,eAAe,CACb,MAAM,EACN,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAC9B,CAAC;QACN,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,IACE,CAAC,wBAAwB,CACvB,QAAQ,CAAC,CAAC,CAAC,EACX,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAC9B,EACD,CAAC;gBACD,IACE,IAAI,CAAC,OAAO,CAAC,gBAAgB;oBAC7B,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACrC,CAAC;oBACD,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,CAC3B,EAAE,EACF,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAC9B,CAAC,CAAC,CAAY,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;QAC5B,CAAC;QACD,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAE1C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAChC,KAAK,IAAI,IAAI,GAAG,CAAC,GAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;oBACjC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACvE,CAAC;gBACD,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBACpD,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAClC,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC3C,IAAI,SAA2B,CAAC;gBAChC,IAAI,CAAC;oBACH,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACjD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;wBAC/C,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;4BACpB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;4BAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;4BAC7D,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBAClC,CAAC;wBACD,MAAM,KAAK,CAAC,KAAK,CAAC;oBACpB,CAAC;oBACD,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC1E,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC7E,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACvD,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAEhC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;oBAClC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC/D,CAAC;gBAED,MAAM,oBAAoB,GAAa,EAAE,CAAC;gBAC1C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;oBACxC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;oBACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC;oBACvD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;oBAC1D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACnD,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;oBACxD,MAAM,cAAc,GAClB,QAAQ,KAAK,UAAU,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,CAAC;oBACzD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;wBACpD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACvE,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC3B,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACtC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;oBACzD,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBAChC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;oBAE7D,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;wBAC5B,IAAI,UAAU,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;4BACxC,MAAM,aAAa,GACjB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;4BACrD,IAAI,aAAa,EAAE,CAAC;gCAClB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gCAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;gCAC3D,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;4BAClC,CAAC;4BACD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;gCACnD,CAAC,CAAC,UAAU,CAAC,SAAS;gCACtB,CAAC,CAAC,EAAE,CAAC;4BACP,IAAI,CAAC,IAAI,CAAC,aAAa,CACrB,IAAI,CAAC,SAAS,EACd,UAAU,EACV,SAAsD,CACvD,CAAC;4BACF,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CACrB,IAAI,CAAC,SAAS,EACd,aAAa,EACb,QAAQ,CACT,CAAC;wBACJ,CAAC;oBACH,CAAC;oBACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;wBACjC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;gBACD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;gBACzE,IAAI,aAAa,EAAE,CAAC;oBAClB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;oBAC3D,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,QAAmB;QAC1C,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,QAAmB;QAC5C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C,QAAQ,EACR,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAC3B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,CAAC,KAAK,EACjB;gBACE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;gBACxC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB;gBAChD,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,0BAA0B;aACzD,EACD,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB,CAAC;YACF,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,iEAAiE;gBACjE,kEAAkE;gBAClE,wCAAwC;gBACxC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;YACvE,sEAAsE;YACtE,qEAAqE;YACrE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,QAAmB;QAC7C,4EAA4E;QAC5E,0EAA0E;QAC1E,6EAA6E;QAC7E,0EAA0E;QAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7E,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,MAAM,cAAc,GAAa,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;YAC1C,IAAI,KAA6B,CAAC;YAClC,IAAI,gBAAuD,CAAC;YAC5D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;oBAChC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;oBACxB,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;oBACnC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;oBAClC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;oBAClC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;oBACpC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;oBAChC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;oBAC1C,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;oBAC1C,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;iBAC5B,CAAC,CAAC;gBAEH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBACjC,mEAAmE;oBACnE,8DAA8D;oBAC9D,wCAAwC;oBACxC,IAAI,KAAK,CAAC,KAAK;wBAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;oBACrC,IAAI,KAAK,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;wBACpC,gBAAgB,GAAG,KAAK,CAAC,iBAAiB,CAAC;oBAC7C,CAAC;oBACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;oBAC9C,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBAClB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBACtC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;oBAC/C,CAAC;oBACD,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,SAAS,CAAC;oBAC7D,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;wBAChC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;oBAChE,CAAC;oBAED,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CACjC,KAAK,CAAC,UAAU,IAAI,EAAE,CACvB,CAAC,OAAO,EAAE,EAAE,CAAC;wBACZ,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC;wBACjD,MAAM,IAAI,GACR,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;4BACf;gCACC,EAAE,EAAE,EAAE;gCACN,IAAI,EAAE,UAAU;gCAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;6BAClB,CAAC;wBACxB,IAAI,QAAQ,CAAC,EAAE;4BAAE,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;wBAChD,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;4BAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBACvD,CAAC;wBACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;4BACjC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;wBACjE,CAAC;wBACD,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBACvB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE;4BAC9B,UAAU,EAAE;gCACV;oCACE,KAAK;oCACL,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;oCAC7B,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;oCACjC,QAAQ,EAAE;wCACR,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;wCAC3C,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;qCACtD;iCACF;6BACF;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,oEAAoE;gBACpE,oEAAoE;gBACpE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACtD,IAAI,CAAC,OAAO,IAAI,sBAAsB,CAAC,KAAK,CAAC,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;oBACtE,IAAI,CAAC,IAAI,CAAC,UAAU,CAClB,IAAI,CAAC,SAAS,EACd,OAAO,GAAG,CAAC,EACX,aAAa,CAAC,KAAK,CAAC,CACrB,CAAC;oBACF,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBACjC,SAAS;gBACX,CAAC;gBACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtC,MAAM,gBAAgB,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjD,MAAM,OAAO,GACX,OAAO,IAAI,gBAAgB;oBACzB,CAAC,CAAE;wBACC,IAAI,EAAE,WAAW;wBACjB,OAAO;wBACP,iBAAiB,EAAE,gBAAgB;wBACnC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC3B,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACzC;oBAC/B,CAAC,CAAC,SAAS,CAAC;gBAChB,MAAM,IAAI,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,SAAS,GAAqB;gBAClC,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;aAC3C,CAAC;YACF,IAAI,KAAK;gBAAE,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;YACnC,IAAI,gBAAgB;gBAAE,SAAS,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;YACrE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,SAAS,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;qBACxC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC;qBACvC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAAe;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,IAAI,IAAI,IAAI,CAAC;YAAE,OAAO;QACtB,MAAM,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;CACF;AAED,MAAM,UAAU,SAAS,CAAC,MAAmB;IAC3C,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACrD,IACE,OAAO,CAAC,IAAI,KAAK,WAAW;YAC5B,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAC3B,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Message, ModelChunk, ModelRequest } from "./types.js";
|
|
2
|
+
type Block = Record<string, unknown> & {
|
|
3
|
+
type: string;
|
|
4
|
+
};
|
|
5
|
+
interface ConvertedMessages {
|
|
6
|
+
system?: string;
|
|
7
|
+
messages: Array<{
|
|
8
|
+
role: "user" | "assistant";
|
|
9
|
+
content: Block[];
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
export declare function anthropicMessages(messages: Message[], includeThinking: boolean): ConvertedMessages;
|
|
13
|
+
export declare function anthropicRequestBody(request: ModelRequest, model: string): Record<string, unknown>;
|
|
14
|
+
export declare function anthropicChunks(stream: ReadableStream<Uint8Array>): AsyncGenerator<ModelChunk>;
|
|
15
|
+
export declare function anthropicFallbackChunk(value: Record<string, unknown>): ModelChunk;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
const dataUriPattern = /^data:([^;,]+);base64,(.+)$/s;
|
|
2
|
+
function imageBlock(image) {
|
|
3
|
+
const match = dataUriPattern.exec(image);
|
|
4
|
+
if (match) {
|
|
5
|
+
return {
|
|
6
|
+
type: "image",
|
|
7
|
+
source: { type: "base64", media_type: match[1], data: match[2] },
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
return { type: "image", source: { type: "url", url: image } };
|
|
11
|
+
}
|
|
12
|
+
function parseToolInput(argumentsText) {
|
|
13
|
+
try {
|
|
14
|
+
const parsed = JSON.parse(argumentsText);
|
|
15
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
16
|
+
return parsed;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// Malformed tool arguments become an empty input object.
|
|
21
|
+
}
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
export function anthropicMessages(messages, includeThinking) {
|
|
25
|
+
const systemParts = [];
|
|
26
|
+
const converted = [];
|
|
27
|
+
// The Messages API wants tool results and any follow-up user content in a
|
|
28
|
+
// single user turn, so consecutive same-role messages are merged.
|
|
29
|
+
const push = (role, blocks) => {
|
|
30
|
+
if (!blocks.length)
|
|
31
|
+
return;
|
|
32
|
+
const last = converted.at(-1);
|
|
33
|
+
if (last && last.role === role)
|
|
34
|
+
last.content.push(...blocks);
|
|
35
|
+
else
|
|
36
|
+
converted.push({ role, content: blocks });
|
|
37
|
+
};
|
|
38
|
+
for (const message of messages) {
|
|
39
|
+
if (message.role === "system") {
|
|
40
|
+
if (message.content)
|
|
41
|
+
systemParts.push(message.content);
|
|
42
|
+
}
|
|
43
|
+
else if (message.role === "user") {
|
|
44
|
+
if (typeof message.content === "string") {
|
|
45
|
+
push("user", message.content ? [{ type: "text", text: message.content }] : []);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const blocks = [];
|
|
49
|
+
for (const part of message.content) {
|
|
50
|
+
if ("image" in part)
|
|
51
|
+
blocks.push(imageBlock(part.image));
|
|
52
|
+
else if (part.text)
|
|
53
|
+
blocks.push({ type: "text", text: part.text });
|
|
54
|
+
}
|
|
55
|
+
push("user", blocks);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else if (message.role === "assistant") {
|
|
59
|
+
const blocks = [];
|
|
60
|
+
// Signed thinking/redacted_thinking blocks must be replayed ahead of
|
|
61
|
+
// the turn's other content for tool-use continuations to validate.
|
|
62
|
+
// With thinking disabled the API rejects thinking blocks instead of
|
|
63
|
+
// requiring them, so they are only included when it is enabled.
|
|
64
|
+
// Unsigned thinking blocks (gateways like DashScope's /apps/anthropic
|
|
65
|
+
// emit signature: "") are never required for continuation — and that
|
|
66
|
+
// same gateway hangs when they come back — so only signed blocks,
|
|
67
|
+
// which real Anthropic validates and requires, go back on the wire.
|
|
68
|
+
if (includeThinking && Array.isArray(message.reasoning_details)) {
|
|
69
|
+
for (const block of message.reasoning_details) {
|
|
70
|
+
if (block.type === "thinking" && !block.signature)
|
|
71
|
+
continue;
|
|
72
|
+
blocks.push(block);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (message.content)
|
|
76
|
+
blocks.push({ type: "text", text: message.content });
|
|
77
|
+
for (const call of message.tool_calls || []) {
|
|
78
|
+
blocks.push({
|
|
79
|
+
type: "tool_use",
|
|
80
|
+
id: call.id,
|
|
81
|
+
name: call.function.name,
|
|
82
|
+
input: parseToolInput(call.function.arguments),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
push("assistant", blocks);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
push("user", [
|
|
89
|
+
{
|
|
90
|
+
type: "tool_result",
|
|
91
|
+
tool_use_id: message.tool_call_id,
|
|
92
|
+
content: message.content,
|
|
93
|
+
},
|
|
94
|
+
]);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
system: systemParts.length ? systemParts.join("\n\n") : undefined,
|
|
99
|
+
messages: converted,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export function anthropicRequestBody(request, model) {
|
|
103
|
+
const { system, messages } = anthropicMessages(request.messages, request.enableThinking);
|
|
104
|
+
const body = {
|
|
105
|
+
model,
|
|
106
|
+
max_tokens: request.maxTokens,
|
|
107
|
+
messages,
|
|
108
|
+
stream: true,
|
|
109
|
+
};
|
|
110
|
+
if (system)
|
|
111
|
+
body.system = system;
|
|
112
|
+
if (request.tools.length) {
|
|
113
|
+
body.tools = request.tools.map((tool) => ({
|
|
114
|
+
name: tool.function.name,
|
|
115
|
+
...(tool.function.description
|
|
116
|
+
? { description: tool.function.description }
|
|
117
|
+
: {}),
|
|
118
|
+
input_schema: tool.function.parameters,
|
|
119
|
+
}));
|
|
120
|
+
let choice = request.toolChoice === "none" ? "none" : "auto";
|
|
121
|
+
if (!request.enableThinking &&
|
|
122
|
+
(request.toolChoice === "any" || request.toolChoice === "required")) {
|
|
123
|
+
// Forced tool use is not supported alongside extended thinking.
|
|
124
|
+
choice = "any";
|
|
125
|
+
}
|
|
126
|
+
body.tool_choice = { type: choice };
|
|
127
|
+
}
|
|
128
|
+
if (request.enableThinking) {
|
|
129
|
+
// Extended thinking rejects temperature adjustments, so the configured
|
|
130
|
+
// temperature is only sent when thinking is off.
|
|
131
|
+
body.thinking = { type: "enabled", budget_tokens: request.thinkingBudget };
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
body.temperature = request.temperature;
|
|
135
|
+
}
|
|
136
|
+
return body;
|
|
137
|
+
}
|
|
138
|
+
async function* sseJsonEvents(stream) {
|
|
139
|
+
const reader = stream.getReader();
|
|
140
|
+
const decoder = new TextDecoder();
|
|
141
|
+
let buffer = "";
|
|
142
|
+
const framePayload = (frame) => frame
|
|
143
|
+
.split("\n")
|
|
144
|
+
.filter((line) => line.startsWith("data:"))
|
|
145
|
+
.map((line) => line.slice(5).trimStart())
|
|
146
|
+
.join("\n");
|
|
147
|
+
while (true) {
|
|
148
|
+
const { done, value } = await reader.read();
|
|
149
|
+
buffer += decoder.decode(value, { stream: !done }).replace(/\r\n/g, "\n");
|
|
150
|
+
let boundary = buffer.indexOf("\n\n");
|
|
151
|
+
while (boundary !== -1) {
|
|
152
|
+
const payload = framePayload(buffer.slice(0, boundary));
|
|
153
|
+
buffer = buffer.slice(boundary + 2);
|
|
154
|
+
if (payload)
|
|
155
|
+
yield JSON.parse(payload);
|
|
156
|
+
boundary = buffer.indexOf("\n\n");
|
|
157
|
+
}
|
|
158
|
+
if (done)
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
const payload = framePayload(buffer);
|
|
162
|
+
if (payload)
|
|
163
|
+
yield JSON.parse(payload);
|
|
164
|
+
}
|
|
165
|
+
function record(value) {
|
|
166
|
+
return value && typeof value === "object"
|
|
167
|
+
? value
|
|
168
|
+
: {};
|
|
169
|
+
}
|
|
170
|
+
function anthropicUsage(totals) {
|
|
171
|
+
if (totals.inputTokens === undefined && !totals.outputTokens)
|
|
172
|
+
return undefined;
|
|
173
|
+
const input = totals.inputTokens ?? 0;
|
|
174
|
+
// Anthropic's input_tokens excludes cache writes/reads; prompt_tokens is
|
|
175
|
+
// the OpenAI-style total input so downstream accounting can sum one field.
|
|
176
|
+
const prompt = input + totals.cacheCreation + totals.cacheRead;
|
|
177
|
+
const usage = {
|
|
178
|
+
prompt_tokens: prompt,
|
|
179
|
+
completion_tokens: totals.outputTokens,
|
|
180
|
+
total_tokens: prompt + totals.outputTokens,
|
|
181
|
+
input_tokens: input,
|
|
182
|
+
output_tokens: totals.outputTokens,
|
|
183
|
+
};
|
|
184
|
+
if (totals.cacheCreation)
|
|
185
|
+
usage.cache_creation_input_tokens = totals.cacheCreation;
|
|
186
|
+
if (totals.cacheRead)
|
|
187
|
+
usage.cache_read_input_tokens = totals.cacheRead;
|
|
188
|
+
return usage;
|
|
189
|
+
}
|
|
190
|
+
export async function* anthropicChunks(stream) {
|
|
191
|
+
let nextToolIndex = 0;
|
|
192
|
+
const toolIndexByBlock = new Map();
|
|
193
|
+
const blockTypes = new Map();
|
|
194
|
+
const thinkingText = new Map();
|
|
195
|
+
const thinkingSignature = new Map();
|
|
196
|
+
const reasoningDetails = [];
|
|
197
|
+
const totals = { outputTokens: 0, cacheCreation: 0, cacheRead: 0 };
|
|
198
|
+
for await (const event of sseJsonEvents(stream)) {
|
|
199
|
+
const type = String(event.type || "");
|
|
200
|
+
if (type === "error") {
|
|
201
|
+
const detail = record(event.error);
|
|
202
|
+
throw new Error(`Anthropic stream error: ${String(detail.message || JSON.stringify(detail))}`);
|
|
203
|
+
}
|
|
204
|
+
if (type === "message_start") {
|
|
205
|
+
const usage = record(record(event.message).usage);
|
|
206
|
+
if (typeof usage.input_tokens === "number") {
|
|
207
|
+
totals.inputTokens = usage.input_tokens;
|
|
208
|
+
}
|
|
209
|
+
if (typeof usage.output_tokens === "number") {
|
|
210
|
+
totals.outputTokens = usage.output_tokens;
|
|
211
|
+
}
|
|
212
|
+
if (typeof usage.cache_creation_input_tokens === "number") {
|
|
213
|
+
totals.cacheCreation = usage.cache_creation_input_tokens;
|
|
214
|
+
}
|
|
215
|
+
if (typeof usage.cache_read_input_tokens === "number") {
|
|
216
|
+
totals.cacheRead = usage.cache_read_input_tokens;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
else if (type === "content_block_start") {
|
|
220
|
+
const index = Number(event.index);
|
|
221
|
+
const block = record(event.content_block);
|
|
222
|
+
const kind = String(block.type || "");
|
|
223
|
+
blockTypes.set(index, kind);
|
|
224
|
+
if (kind === "tool_use") {
|
|
225
|
+
const toolIndex = nextToolIndex++;
|
|
226
|
+
toolIndexByBlock.set(index, toolIndex);
|
|
227
|
+
yield {
|
|
228
|
+
choices: [
|
|
229
|
+
{
|
|
230
|
+
delta: {
|
|
231
|
+
tool_calls: [
|
|
232
|
+
{
|
|
233
|
+
index: toolIndex,
|
|
234
|
+
id: String(block.id || ""),
|
|
235
|
+
type: "function",
|
|
236
|
+
function: { name: String(block.name || ""), arguments: "" },
|
|
237
|
+
},
|
|
238
|
+
],
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
],
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
else if (kind === "thinking") {
|
|
245
|
+
thinkingText.set(index, String(block.thinking || ""));
|
|
246
|
+
}
|
|
247
|
+
else if (kind === "redacted_thinking") {
|
|
248
|
+
reasoningDetails.push({ type: "redacted_thinking", data: block.data });
|
|
249
|
+
}
|
|
250
|
+
else if (kind === "text" && block.text) {
|
|
251
|
+
yield { choices: [{ delta: { content: String(block.text) } }] };
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
else if (type === "content_block_delta") {
|
|
255
|
+
const index = Number(event.index);
|
|
256
|
+
const delta = record(event.delta);
|
|
257
|
+
const kind = String(delta.type || "");
|
|
258
|
+
if (kind === "text_delta" && delta.text) {
|
|
259
|
+
yield { choices: [{ delta: { content: String(delta.text) } }] };
|
|
260
|
+
}
|
|
261
|
+
else if (kind === "thinking_delta" && delta.thinking) {
|
|
262
|
+
const value = String(delta.thinking);
|
|
263
|
+
thinkingText.set(index, (thinkingText.get(index) || "") + value);
|
|
264
|
+
yield { choices: [{ delta: { reasoning_content: value } }] };
|
|
265
|
+
}
|
|
266
|
+
else if (kind === "signature_delta" && delta.signature) {
|
|
267
|
+
thinkingSignature.set(index, (thinkingSignature.get(index) || "") + String(delta.signature));
|
|
268
|
+
}
|
|
269
|
+
else if (kind === "input_json_delta" &&
|
|
270
|
+
typeof delta.partial_json === "string" &&
|
|
271
|
+
delta.partial_json) {
|
|
272
|
+
const toolIndex = toolIndexByBlock.get(index);
|
|
273
|
+
if (toolIndex !== undefined) {
|
|
274
|
+
yield {
|
|
275
|
+
choices: [
|
|
276
|
+
{
|
|
277
|
+
delta: {
|
|
278
|
+
tool_calls: [
|
|
279
|
+
{
|
|
280
|
+
index: toolIndex,
|
|
281
|
+
function: { arguments: delta.partial_json },
|
|
282
|
+
},
|
|
283
|
+
],
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
],
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
else if (type === "content_block_stop") {
|
|
292
|
+
const index = Number(event.index);
|
|
293
|
+
if (blockTypes.get(index) === "thinking") {
|
|
294
|
+
reasoningDetails.push({
|
|
295
|
+
type: "thinking",
|
|
296
|
+
thinking: thinkingText.get(index) || "",
|
|
297
|
+
signature: thinkingSignature.get(index) || "",
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else if (type === "message_delta") {
|
|
302
|
+
const usage = record(event.usage);
|
|
303
|
+
if (typeof usage.output_tokens === "number") {
|
|
304
|
+
totals.outputTokens = usage.output_tokens;
|
|
305
|
+
}
|
|
306
|
+
// Anthropic itself reports input tokens on message_start, but some
|
|
307
|
+
// Anthropic-compatible gateways (e.g. DashScope's claude-code-proxy)
|
|
308
|
+
// only provide them in the final message_delta. Positive values win so
|
|
309
|
+
// zero placeholders never clobber real counts.
|
|
310
|
+
if (typeof usage.input_tokens === "number" && usage.input_tokens > 0) {
|
|
311
|
+
totals.inputTokens = usage.input_tokens;
|
|
312
|
+
}
|
|
313
|
+
if (typeof usage.cache_creation_input_tokens === "number" &&
|
|
314
|
+
usage.cache_creation_input_tokens > 0) {
|
|
315
|
+
totals.cacheCreation = usage.cache_creation_input_tokens;
|
|
316
|
+
}
|
|
317
|
+
if (typeof usage.cache_read_input_tokens === "number" &&
|
|
318
|
+
usage.cache_read_input_tokens > 0) {
|
|
319
|
+
totals.cacheRead = usage.cache_read_input_tokens;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
// message_stop and ping carry nothing the accumulator needs.
|
|
323
|
+
}
|
|
324
|
+
const usage = anthropicUsage(totals);
|
|
325
|
+
if (usage || reasoningDetails.length) {
|
|
326
|
+
const final = { choices: [] };
|
|
327
|
+
if (usage)
|
|
328
|
+
final.usage = usage;
|
|
329
|
+
if (reasoningDetails.length)
|
|
330
|
+
final.reasoning_details = reasoningDetails;
|
|
331
|
+
yield final;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
export function anthropicFallbackChunk(value) {
|
|
335
|
+
const blocks = (Array.isArray(value.content) ? value.content : []);
|
|
336
|
+
const textParts = [];
|
|
337
|
+
const reasoningParts = [];
|
|
338
|
+
const toolCalls = [];
|
|
339
|
+
const reasoningDetails = [];
|
|
340
|
+
for (const block of blocks) {
|
|
341
|
+
if (block.type === "text" && block.text) {
|
|
342
|
+
textParts.push(String(block.text));
|
|
343
|
+
}
|
|
344
|
+
else if (block.type === "thinking") {
|
|
345
|
+
reasoningParts.push(String(block.thinking || ""));
|
|
346
|
+
reasoningDetails.push(block);
|
|
347
|
+
}
|
|
348
|
+
else if (block.type === "redacted_thinking") {
|
|
349
|
+
reasoningDetails.push(block);
|
|
350
|
+
}
|
|
351
|
+
else if (block.type === "tool_use") {
|
|
352
|
+
toolCalls.push({
|
|
353
|
+
index: toolCalls.length,
|
|
354
|
+
id: String(block.id || ""),
|
|
355
|
+
type: "function",
|
|
356
|
+
function: {
|
|
357
|
+
name: String(block.name || ""),
|
|
358
|
+
arguments: JSON.stringify(block.input ?? {}),
|
|
359
|
+
},
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
const rawUsage = record(value.usage);
|
|
364
|
+
const usage = anthropicUsage({
|
|
365
|
+
inputTokens: typeof rawUsage.input_tokens === "number" ? rawUsage.input_tokens : undefined,
|
|
366
|
+
outputTokens: typeof rawUsage.output_tokens === "number" ? rawUsage.output_tokens : 0,
|
|
367
|
+
cacheCreation: typeof rawUsage.cache_creation_input_tokens === "number"
|
|
368
|
+
? rawUsage.cache_creation_input_tokens
|
|
369
|
+
: 0,
|
|
370
|
+
cacheRead: typeof rawUsage.cache_read_input_tokens === "number"
|
|
371
|
+
? rawUsage.cache_read_input_tokens
|
|
372
|
+
: 0,
|
|
373
|
+
});
|
|
374
|
+
const chunk = {
|
|
375
|
+
choices: [
|
|
376
|
+
{
|
|
377
|
+
delta: {
|
|
378
|
+
content: textParts.join(""),
|
|
379
|
+
reasoning_content: reasoningParts.join(""),
|
|
380
|
+
...(toolCalls.length ? { tool_calls: toolCalls } : {}),
|
|
381
|
+
},
|
|
382
|
+
},
|
|
383
|
+
],
|
|
384
|
+
};
|
|
385
|
+
if (usage)
|
|
386
|
+
chunk.usage = usage;
|
|
387
|
+
if (reasoningDetails.length)
|
|
388
|
+
chunk.reasoning_details = reasoningDetails;
|
|
389
|
+
return chunk;
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=anthropic.js.map
|