@absolutejs/absolute 0.19.0-beta.260 → 0.19.0-beta.261
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/.absolutejs/tsconfig.tsbuildinfo +1 -1
- package/dist/ai/index.js +59 -21
- package/dist/ai/index.js.map +3 -3
- package/dist/ai/providers/anthropic.js +22 -1
- package/dist/ai/providers/anthropic.js.map +3 -3
- package/dist/types/ai.d.ts +2 -0
- package/dist/types/anthropic.d.ts +2 -0
- package/package.json +1 -1
- package/types/ai.ts +2 -1
- package/types/anthropic.ts +2 -0
package/dist/ai/index.js
CHANGED
|
@@ -1319,22 +1319,38 @@ var handleToolChunkToolUse = (chunk, state) => {
|
|
|
1319
1319
|
name: chunk.name
|
|
1320
1320
|
});
|
|
1321
1321
|
};
|
|
1322
|
+
var flushThinking = (state) => {
|
|
1323
|
+
if (state.currentThinking) {
|
|
1324
|
+
state.contentBlocks.push({
|
|
1325
|
+
signature: state.currentThinking.signature || undefined,
|
|
1326
|
+
thinking: state.currentThinking.text,
|
|
1327
|
+
type: "thinking"
|
|
1328
|
+
});
|
|
1329
|
+
state.currentThinking = null;
|
|
1330
|
+
}
|
|
1331
|
+
};
|
|
1322
1332
|
var processToolChunk = (chunk, state, options, socket, messageId, conversationId) => {
|
|
1323
1333
|
let hitAnotherTool = false;
|
|
1324
1334
|
switch (chunk.type) {
|
|
1325
1335
|
case "thinking":
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
+
if (chunk.content) {
|
|
1337
|
+
sendMessage(socket, {
|
|
1338
|
+
content: chunk.content,
|
|
1339
|
+
conversationId,
|
|
1340
|
+
messageId,
|
|
1341
|
+
type: "thinking"
|
|
1342
|
+
});
|
|
1343
|
+
}
|
|
1344
|
+
if (!state.currentThinking) {
|
|
1345
|
+
state.currentThinking = { signature: "", text: "" };
|
|
1346
|
+
}
|
|
1347
|
+
state.currentThinking.text += chunk.content;
|
|
1348
|
+
if (chunk.signature) {
|
|
1349
|
+
state.currentThinking.signature = chunk.signature;
|
|
1350
|
+
}
|
|
1336
1351
|
break;
|
|
1337
1352
|
case "text":
|
|
1353
|
+
flushThinking(state);
|
|
1338
1354
|
handleToolChunkText(chunk, state, options, socket, messageId, conversationId);
|
|
1339
1355
|
state.contentBlocks.push({
|
|
1340
1356
|
content: chunk.content,
|
|
@@ -1352,6 +1368,7 @@ var processToolChunk = (chunk, state, options, socket, messageId, conversationId
|
|
|
1352
1368
|
});
|
|
1353
1369
|
break;
|
|
1354
1370
|
case "tool_use":
|
|
1371
|
+
flushThinking(state);
|
|
1355
1372
|
handleToolChunkToolUse(chunk, state);
|
|
1356
1373
|
state.contentBlocks.push({
|
|
1357
1374
|
id: chunk.id,
|
|
@@ -1362,6 +1379,7 @@ var processToolChunk = (chunk, state, options, socket, messageId, conversationId
|
|
|
1362
1379
|
hitAnotherTool = true;
|
|
1363
1380
|
break;
|
|
1364
1381
|
case "done":
|
|
1382
|
+
flushThinking(state);
|
|
1365
1383
|
state.currentUsage = chunk.usage;
|
|
1366
1384
|
break;
|
|
1367
1385
|
}
|
|
@@ -1430,6 +1448,7 @@ var executeToolLoop = async (socket, options, messages, initialToolCalls, initia
|
|
|
1430
1448
|
contentBlocks: initialContentBlocks,
|
|
1431
1449
|
currentFullResponse: fullResponse,
|
|
1432
1450
|
currentMessages: [...messages],
|
|
1451
|
+
currentThinking: null,
|
|
1433
1452
|
currentTurn: turn,
|
|
1434
1453
|
currentUsage: undefined,
|
|
1435
1454
|
executedToolKeys: new Set,
|
|
@@ -1499,21 +1518,37 @@ var processStream = async (socket, options, messages, messageId, conversationId,
|
|
|
1499
1518
|
options.onComplete?.(result.fullResponse, result.usage);
|
|
1500
1519
|
}
|
|
1501
1520
|
};
|
|
1521
|
+
var flushStreamThinking = (state) => {
|
|
1522
|
+
if (state.currentThinking) {
|
|
1523
|
+
state.contentBlocks.push({
|
|
1524
|
+
signature: state.currentThinking.signature || undefined,
|
|
1525
|
+
thinking: state.currentThinking.text,
|
|
1526
|
+
type: "thinking"
|
|
1527
|
+
});
|
|
1528
|
+
state.currentThinking = null;
|
|
1529
|
+
}
|
|
1530
|
+
};
|
|
1502
1531
|
var consumeStreamChunk = async (chunk, options, socket, state, messageId, conversationId) => {
|
|
1503
1532
|
switch (chunk.type) {
|
|
1504
1533
|
case "thinking":
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1534
|
+
if (chunk.content) {
|
|
1535
|
+
await sendMessage(socket, {
|
|
1536
|
+
content: chunk.content,
|
|
1537
|
+
conversationId,
|
|
1538
|
+
messageId,
|
|
1539
|
+
type: "thinking"
|
|
1540
|
+
});
|
|
1541
|
+
}
|
|
1542
|
+
if (!state.currentThinking) {
|
|
1543
|
+
state.currentThinking = { signature: "", text: "" };
|
|
1544
|
+
}
|
|
1545
|
+
state.currentThinking.text += chunk.content;
|
|
1546
|
+
if (chunk.signature) {
|
|
1547
|
+
state.currentThinking.signature = chunk.signature;
|
|
1548
|
+
}
|
|
1515
1549
|
break;
|
|
1516
1550
|
case "text":
|
|
1551
|
+
flushStreamThinking(state);
|
|
1517
1552
|
state.fullResponse += await processStreamTextChunk(chunk, options, socket, messageId, conversationId);
|
|
1518
1553
|
state.contentBlocks.push({ content: chunk.content, type: "text" });
|
|
1519
1554
|
break;
|
|
@@ -1528,6 +1563,7 @@ var consumeStreamChunk = async (chunk, options, socket, state, messageId, conver
|
|
|
1528
1563
|
});
|
|
1529
1564
|
break;
|
|
1530
1565
|
case "tool_use":
|
|
1566
|
+
flushStreamThinking(state);
|
|
1531
1567
|
state.pendingToolCalls.push({
|
|
1532
1568
|
id: chunk.id,
|
|
1533
1569
|
input: chunk.input,
|
|
@@ -1541,6 +1577,7 @@ var consumeStreamChunk = async (chunk, options, socket, state, messageId, conver
|
|
|
1541
1577
|
});
|
|
1542
1578
|
break;
|
|
1543
1579
|
case "done":
|
|
1580
|
+
flushStreamThinking(state);
|
|
1544
1581
|
state.usage = chunk.usage;
|
|
1545
1582
|
break;
|
|
1546
1583
|
}
|
|
@@ -1548,6 +1585,7 @@ var consumeStreamChunk = async (chunk, options, socket, state, messageId, conver
|
|
|
1548
1585
|
var consumeStream = async (stream, options, socket, messages, messageId, conversationId, signal, startTime) => {
|
|
1549
1586
|
const state = {
|
|
1550
1587
|
contentBlocks: [],
|
|
1588
|
+
currentThinking: null,
|
|
1551
1589
|
fullResponse: "",
|
|
1552
1590
|
pendingToolCalls: [],
|
|
1553
1591
|
usage: undefined
|
|
@@ -1732,5 +1770,5 @@ export {
|
|
|
1732
1770
|
aiChat
|
|
1733
1771
|
};
|
|
1734
1772
|
|
|
1735
|
-
//# debugId=
|
|
1773
|
+
//# debugId=AD9480D56C5B740864756E2164756E21
|
|
1736
1774
|
//# sourceMappingURL=index.js.map
|
package/dist/ai/index.js.map
CHANGED
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
"import { Elysia } from 'elysia';\nimport type { AIChatPluginConfig } from '../../types/ai';\nimport { createConversationManager } from '../ai/conversationManager';\nimport { parseAIMessage } from '../ai/protocol';\nimport { streamAI } from '../ai/streamAI';\n\nconst DEFAULT_PATH = '/chat';\nconst MAX_PREFIX_LEN = 12;\n\nconst defaultParseProvider = (content: string) => {\n\tconst colonIdx = content.indexOf(':');\n\tconst hasPrefix = colonIdx > 0 && colonIdx < MAX_PREFIX_LEN;\n\n\treturn {\n\t\tcontent: hasPrefix ? content.slice(colonIdx + 1) : content,\n\t\tproviderName: hasPrefix ? content.slice(0, colonIdx) : 'anthropic'\n\t};\n};\n\nexport const aiChat = (config: AIChatPluginConfig) => {\n\tconst path = config.path ?? DEFAULT_PATH;\n\tconst conversations = createConversationManager();\n\tconst parseProvider = config.parseProvider ?? defaultParseProvider;\n\n\tconst handleCancel = (conversationId: string) => {\n\t\tconversations.abort(conversationId);\n\t};\n\n\tconst handleBranch = (\n\t\tws: { send: (data: string) => void },\n\t\tmessageId: string,\n\t\tconversationId: string\n\t) => {\n\t\tconst newConvId = conversations.branch(messageId, conversationId);\n\n\t\tif (newConvId) {\n\t\t\tws.send(\n\t\t\t\tJSON.stringify({ conversationId: newConvId, type: 'branched' })\n\t\t\t);\n\t\t}\n\t};\n\n\tconst handleUserMessage = async (\n\t\tws: { readyState: number; send: (data: string) => void },\n\t\trawContent: string,\n\t\trawConversationId?: string,\n\t\tattachments?: Array<{\n\t\t\tdata: string;\n\t\t\tmedia_type:\n\t\t\t\t| 'image/png'\n\t\t\t\t| 'image/jpeg'\n\t\t\t\t| 'image/gif'\n\t\t\t\t| 'image/webp'\n\t\t\t\t| 'application/pdf';\n\t\t\tname?: string;\n\t\t}>\n\t) => {\n\t\tconst conversationId = rawConversationId ?? crypto.randomUUID();\n\t\tconst messageId = crypto.randomUUID();\n\t\tconst parsed: {\n\t\t\tcontent: string;\n\t\t\tmodel?: string;\n\t\t\tproviderName: string;\n\t\t} = parseProvider(rawContent);\n\t\tconst { content, providerName } = parsed;\n\n\t\tconversations.getOrCreate(conversationId);\n\t\tconst history = conversations.getHistory(conversationId);\n\t\tconst controller = conversations.getAbortController(conversationId);\n\n\t\tconversations.appendMessage(conversationId, {\n\t\t\tattachments,\n\t\t\tcontent,\n\t\t\tconversationId,\n\t\t\tid: messageId,\n\t\t\trole: 'user',\n\t\t\ttimestamp: Date.now()\n\t\t});\n\n\t\tconst resolveModel = () => {\n\t\t\tif (parsed.model) {\n\t\t\t\treturn parsed.model;\n\t\t\t}\n\n\t\t\tif (typeof config.model === 'string') {\n\t\t\t\treturn config.model;\n\t\t\t}\n\n\t\t\tif (typeof config.model === 'function') {\n\t\t\t\treturn config.model(providerName);\n\t\t\t}\n\n\t\t\treturn providerName;\n\t\t};\n\n\t\tconst model = resolveModel();\n\n\t\tconst resolvedTools =\n\t\t\ttypeof config.tools === 'function'\n\t\t\t\t? config.tools(providerName, model)\n\t\t\t\t: config.tools;\n\n\t\tconst userMessage =\n\t\t\tattachments && attachments.length > 0\n\t\t\t\t? {\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t...attachments.map((att) => {\n\t\t\t\t\t\t\t\tif (att.media_type === 'application/pdf') {\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tname: att.name,\n\t\t\t\t\t\t\t\t\t\tsource: {\n\t\t\t\t\t\t\t\t\t\t\tdata: att.data,\n\t\t\t\t\t\t\t\t\t\t\tmedia_type: att.media_type,\n\t\t\t\t\t\t\t\t\t\t\ttype: 'base64' as const\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttype: 'document' as const\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tsource: {\n\t\t\t\t\t\t\t\t\t\tdata: att.data,\n\t\t\t\t\t\t\t\t\t\tmedia_type: att.media_type,\n\t\t\t\t\t\t\t\t\t\ttype: 'base64' as const\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ttype: 'image' as const\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t{ content, type: 'text' as const }\n\t\t\t\t\t\t],\n\t\t\t\t\t\trole: 'user' as const\n\t\t\t\t\t}\n\t\t\t\t: { content, role: 'user' as const };\n\n\t\tconst resolvedThinking =\n\t\t\ttypeof config.thinking === 'function'\n\t\t\t\t? config.thinking(providerName, model)\n\t\t\t\t: config.thinking;\n\n\t\tawait streamAI(ws, conversationId, messageId, {\n\t\t\tmaxTurns: config.maxTurns,\n\t\t\tmessages: [...history, userMessage],\n\t\t\tmodel,\n\t\t\tprovider: config.provider(providerName),\n\t\t\tsignal: controller.signal,\n\t\t\tsystemPrompt: config.systemPrompt,\n\t\t\tthinking: resolvedThinking,\n\t\t\ttools: resolvedTools,\n\t\t\tonComplete: (fullResponse, usage) => {\n\t\t\t\tconversations.appendMessage(conversationId, {\n\t\t\t\t\tcontent: fullResponse,\n\t\t\t\t\tconversationId,\n\t\t\t\t\tid: crypto.randomUUID(),\n\t\t\t\t\trole: 'assistant',\n\t\t\t\t\ttimestamp: Date.now()\n\t\t\t\t});\n\t\t\t\tconfig.onComplete?.(conversationId, fullResponse, usage);\n\t\t\t}\n\t\t});\n\t};\n\n\treturn new Elysia()\n\t\t.ws(path, {\n\t\t\tmessage: async (ws, raw) => {\n\t\t\t\tconst msg = parseAIMessage(raw);\n\n\t\t\t\tif (!msg) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (msg.type === 'cancel' && msg.conversationId) {\n\t\t\t\t\thandleCancel(msg.conversationId);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (msg.type === 'branch') {\n\t\t\t\t\thandleBranch(ws, msg.messageId, msg.conversationId);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (msg.type === 'message') {\n\t\t\t\t\tawait handleUserMessage(\n\t\t\t\t\t\tws,\n\t\t\t\t\t\tmsg.content,\n\t\t\t\t\t\tmsg.conversationId,\n\t\t\t\t\t\tmsg.attachments\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.get(`${path}/conversations`, () => conversations.list())\n\t\t.get(`${path}/conversations/:id`, ({ params }) => {\n\t\t\tconst conv = conversations.get(params.id);\n\n\t\t\tif (!conv) {\n\t\t\t\treturn new Response('Not found', { status: 404 });\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: conv.id,\n\t\t\t\tmessages: conv.messages,\n\t\t\t\ttitle: conv.title ?? 'Untitled'\n\t\t\t};\n\t\t})\n\t\t.delete(`${path}/conversations/:id`, ({ params }) => {\n\t\t\tconversations.remove(params.id);\n\n\t\t\treturn { ok: true };\n\t\t});\n};\n",
|
|
11
11
|
"import type { AIServerMessage } from '../../types/ai';\nimport { isValidAIClientMessage } from '../../types/typeGuards';\n\nexport const generateId = () => crypto.randomUUID();\n\nexport const parseAIMessage = (raw: unknown) => {\n\tif (raw === null || raw === undefined) {\n\t\treturn null;\n\t}\n\n\tlet text: string;\n\n\tif (typeof raw === 'string') {\n\t\ttext = raw;\n\t} else if (raw instanceof ArrayBuffer) {\n\t\ttext = new TextDecoder().decode(raw);\n\t} else if (ArrayBuffer.isView(raw)) {\n\t\ttext = new TextDecoder().decode(raw);\n\t} else if (typeof raw === 'object') {\n\t\tif (isValidAIClientMessage(raw)) {\n\t\t\treturn raw;\n\t\t}\n\n\t\treturn null;\n\t} else {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst parsed: unknown = JSON.parse(text);\n\n\t\tif (isValidAIClientMessage(parsed)) {\n\t\t\treturn parsed;\n\t\t}\n\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n};\n\nexport const serializeAIMessage = (msg: AIServerMessage) => JSON.stringify(msg);\n",
|
|
12
12
|
"import type {\n\tAIConversation,\n\tAIMessage,\n\tAIProviderMessage\n} from '../../types/ai';\nimport { generateId } from './protocol';\n\nconst NOT_FOUND = -1;\nconst TITLE_MAX_LENGTH = 80;\n\nexport const createConversationManager = () => {\n\tconst conversations = new Map<string, AIConversation>();\n\n\tconst getOrCreate = (conversationId?: string) => {\n\t\tconst id = conversationId ?? generateId();\n\t\tlet conversation = conversations.get(id);\n\n\t\tif (!conversation) {\n\t\t\tconversation = { createdAt: Date.now(), id, messages: [] };\n\t\t\tconversations.set(id, conversation);\n\t\t}\n\n\t\treturn conversation;\n\t};\n\n\tconst appendMessage = (conversationId: string, message: AIMessage) => {\n\t\tconst conversation = getOrCreate(conversationId);\n\t\tconversation.messages.push(message);\n\t\tconversation.lastMessageAt = Date.now();\n\n\t\tif (!conversation.title && message.role === 'user') {\n\t\t\tconversation.title = message.content.slice(0, TITLE_MAX_LENGTH);\n\t\t}\n\t};\n\n\tconst branch = (fromMessageId: string, sourceConversationId: string) => {\n\t\tconst source = conversations.get(sourceConversationId);\n\n\t\tif (!source) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst cutoffIndex = source.messages.findIndex(\n\t\t\t(msg) => msg.id === fromMessageId\n\t\t);\n\n\t\tif (cutoffIndex === NOT_FOUND) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst newId = generateId();\n\t\tconst branchedMessages = source.messages\n\t\t\t.slice(0, cutoffIndex + 1)\n\t\t\t.map((msg) => ({ ...msg, conversationId: newId }));\n\n\t\tconst newConversation: AIConversation = {\n\t\t\tcreatedAt: Date.now(),\n\t\t\tid: newId,\n\t\t\tmessages: branchedMessages\n\t\t};\n\t\tconversations.set(newId, newConversation);\n\n\t\treturn newId;\n\t};\n\n\tconst emptyHistory: AIProviderMessage[] = [];\n\n\tconst getHistory = (conversationId: string) => {\n\t\tconst conversation = conversations.get(conversationId);\n\n\t\tif (!conversation) {\n\t\t\treturn emptyHistory;\n\t\t}\n\n\t\tconst history: AIProviderMessage[] = conversation.messages.map(\n\t\t\t(msg) => ({\n\t\t\t\tcontent: msg.content,\n\t\t\t\trole: msg.role\n\t\t\t})\n\t\t);\n\n\t\treturn history;\n\t};\n\n\tconst getAbortController = (conversationId: string) => {\n\t\tconst conversation = getOrCreate(conversationId);\n\t\tconst controller = new AbortController();\n\t\tconversation.activeStreamAbort = controller;\n\n\t\treturn controller;\n\t};\n\n\tconst abort = (conversationId: string) => {\n\t\tconst conversation = conversations.get(conversationId);\n\n\t\tif (conversation?.activeStreamAbort) {\n\t\t\tconversation.activeStreamAbort.abort();\n\t\t\tconversation.activeStreamAbort = undefined;\n\t\t}\n\t};\n\n\tconst get = (conversationId: string) => conversations.get(conversationId);\n\n\tconst remove = (conversationId: string) =>\n\t\tconversations.delete(conversationId);\n\n\tconst list = () =>\n\t\tArray.from(conversations.values())\n\t\t\t.map((conv) => ({\n\t\t\t\tcreatedAt: conv.createdAt,\n\t\t\t\tid: conv.id,\n\t\t\t\tlastMessageAt: conv.lastMessageAt,\n\t\t\t\tmessageCount: conv.messages.length,\n\t\t\t\ttitle: conv.title ?? 'Untitled'\n\t\t\t}))\n\t\t\t.sort(\n\t\t\t\t(first, second) =>\n\t\t\t\t\t(second.lastMessageAt ?? second.createdAt) -\n\t\t\t\t\t(first.lastMessageAt ?? first.createdAt)\n\t\t\t);\n\n\tconst getMessages = (conversationId: string) => {\n\t\tconst conversation = conversations.get(conversationId);\n\n\t\tif (!conversation) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn conversation.messages;\n\t};\n\n\treturn {\n\t\tabort,\n\t\tappendMessage,\n\t\tbranch,\n\t\tget,\n\t\tgetAbortController,\n\t\tgetHistory,\n\t\tgetMessages,\n\t\tgetOrCreate,\n\t\tlist,\n\t\tremove\n\t};\n};\n",
|
|
13
|
-
"import type {\n\tAIChunk,\n\tAIImageChunk,\n\tAIProviderContentBlock,\n\tAIProviderMessage,\n\tAIServerMessage,\n\tAITextChunk,\n\tAIToolMap,\n\tAIUsage,\n\tAIWebSocket,\n\tStreamAIOptions\n} from '../../types/ai';\nimport { serializeAIMessage } from './protocol';\n\nconst WS_OPEN = 1;\nconst BACKPRESSURE_THRESHOLD = 1_048_576;\nconst BACKPRESSURE_DELAY = 10;\nconst DEFAULT_MAX_TURNS = 10;\nconst DEFAULT_THINKING_BUDGET = 10_000;\nconst INITIAL_TURN = 0;\n\nconst delay = (milliseconds: number) =>\n\t// eslint-disable-next-line promise/avoid-new\n\tnew Promise<void>((resolve) => setTimeout(resolve, milliseconds));\n\nconst checkBackpressure = async (socket: AIWebSocket) => {\n\tif (!('raw' in socket)) {\n\t\treturn;\n\t}\n\n\tconst { raw } = socket;\n\n\tif (\n\t\traw &&\n\t\ttypeof raw === 'object' &&\n\t\t'bufferedAmount' in raw &&\n\t\ttypeof raw.bufferedAmount === 'number' &&\n\t\traw.bufferedAmount > BACKPRESSURE_THRESHOLD\n\t) {\n\t\tawait delay(BACKPRESSURE_DELAY);\n\t}\n};\n\nconst sendMessage = async (socket: AIWebSocket, msg: AIServerMessage) => {\n\tif (socket.readyState !== WS_OPEN) {\n\t\treturn false;\n\t}\n\n\tawait checkBackpressure(socket);\n\n\tsocket.send(serializeAIMessage(msg));\n\n\treturn true;\n};\n\nconst buildToolDefinitions = (tools: AIToolMap) =>\n\tObject.entries(tools).map(([name, def]) => ({\n\t\tdescription: def.description,\n\t\tinput_schema: def.input,\n\t\tname\n\t}));\n\nconst extractTextContent = (\n\tchunk: AITextChunk,\n\tonChunk?: (chunk: AITextChunk) => AITextChunk | void\n) => {\n\tif (!onChunk) {\n\t\treturn chunk.content;\n\t}\n\n\tconst transformed = onChunk(chunk);\n\n\tif (\n\t\ttransformed &&\n\t\ttypeof transformed === 'object' &&\n\t\t'content' in transformed\n\t) {\n\t\treturn transformed.content;\n\t}\n\n\treturn chunk.content;\n};\n\nconst sendImageMessage = async (\n\tsocket: AIWebSocket,\n\tchunk: AIImageChunk,\n\tmessageId: string,\n\tconversationId: string\n) =>\n\tsendMessage(socket, {\n\t\tconversationId,\n\t\tdata: chunk.data,\n\t\tformat: chunk.format,\n\t\timageId: chunk.imageId,\n\t\tisPartial: chunk.isPartial,\n\t\tmessageId,\n\t\trevisedPrompt: chunk.revisedPrompt,\n\t\ttype: 'image'\n\t});\n\nconst sendToolRunning = async (\n\tsocket: AIWebSocket,\n\ttoolName: string,\n\ttoolInput: unknown,\n\tmessageId: string,\n\tconversationId: string\n) =>\n\tsendMessage(socket, {\n\t\tconversationId,\n\t\tinput: toolInput,\n\t\tmessageId,\n\t\tname: toolName,\n\t\tstatus: 'running',\n\t\ttype: 'tool_status'\n\t});\n\nconst sendToolComplete = async (\n\tsocket: AIWebSocket,\n\ttoolName: string,\n\tresult: string,\n\tmessageId: string,\n\tconversationId: string\n) =>\n\tsendMessage(socket, {\n\t\tconversationId,\n\t\tmessageId,\n\t\tname: toolName,\n\t\tresult,\n\t\tstatus: 'complete',\n\t\ttype: 'tool_status'\n\t});\n\nconst executeTool = async (\n\toptions: StreamAIOptions,\n\ttoolName: string,\n\ttoolInput: unknown\n) => {\n\tconst toolDef = options.tools?.[toolName];\n\n\tif (!toolDef) {\n\t\treturn `Error: unknown tool \"${toolName}\"`;\n\t}\n\n\ttry {\n\t\treturn await toolDef.handler(toolInput);\n\t} catch (err) {\n\t\treturn `Error: ${err instanceof Error ? err.message : String(err)}`;\n\t}\n};\n\nconst buildToolUseBlock = (\n\ttoolUseId: string,\n\ttoolName: string,\n\ttoolInput: unknown\n) => [\n\t{\n\t\tid: toolUseId,\n\t\tinput: toolInput,\n\t\tname: toolName,\n\t\ttype: 'tool_use' as const\n\t}\n];\n\nconst buildToolResultBlock = (toolUseId: string, result: string) => [\n\t{\n\t\tcontent: result,\n\t\ttool_use_id: toolUseId,\n\t\ttype: 'tool_result' as const\n\t}\n];\n\nconst serializeToolCall = (name: string, input: unknown) =>\n\t`${name}:${JSON.stringify(input)}`;\n\ntype PendingToolCall = {\n\tid: string;\n\tinput: unknown;\n\tname: string;\n};\n\ntype ContentBlock = AIProviderContentBlock;\n\ntype ToolLoopState = {\n\tcontentBlocks: ContentBlock[];\n\tcurrentFullResponse: string;\n\tcurrentMessages: AIProviderMessage[];\n\tcurrentTurn: number;\n\tcurrentUsage: AIUsage | undefined;\n\texecutedToolKeys: Set<string>;\n\tpendingToolCalls: PendingToolCall[];\n};\n\nconst handleToolChunkText = (\n\tchunk: AITextChunk,\n\tstate: ToolLoopState,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tmessageId: string,\n\tconversationId: string\n) => {\n\tconst textContent = extractTextContent(chunk, options.onChunk);\n\tstate.currentFullResponse += textContent;\n\tsendMessage(socket, {\n\t\tcontent: textContent,\n\t\tconversationId,\n\t\tmessageId,\n\t\ttype: 'chunk'\n\t});\n};\n\nconst handleToolChunkToolUse = (\n\tchunk: AIChunk & { type: 'tool_use' },\n\tstate: ToolLoopState\n) => {\n\tstate.pendingToolCalls.push({\n\t\tid: chunk.id,\n\t\tinput: chunk.input,\n\t\tname: chunk.name\n\t});\n};\n\nconst processToolChunk = (\n\tchunk: AIChunk,\n\tstate: ToolLoopState,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tmessageId: string,\n\tconversationId: string\n) => {\n\tlet hitAnotherTool = false;\n\n\tswitch (chunk.type) {\n\t\tcase 'thinking':\n\t\t\tsendMessage(socket, {\n\t\t\t\tcontent: chunk.content,\n\t\t\t\tconversationId,\n\t\t\t\tmessageId,\n\t\t\t\ttype: 'thinking'\n\t\t\t});\n\t\t\tstate.contentBlocks.push({\n\t\t\t\tthinking: chunk.content,\n\t\t\t\ttype: 'thinking'\n\t\t\t});\n\t\t\tbreak;\n\n\t\tcase 'text':\n\t\t\thandleToolChunkText(\n\t\t\t\tchunk,\n\t\t\t\tstate,\n\t\t\t\toptions,\n\t\t\t\tsocket,\n\t\t\t\tmessageId,\n\t\t\t\tconversationId\n\t\t\t);\n\t\t\tstate.contentBlocks.push({\n\t\t\t\tcontent: chunk.content,\n\t\t\t\ttype: 'text'\n\t\t\t});\n\t\t\tbreak;\n\n\t\tcase 'image':\n\t\t\tsendImageMessage(socket, chunk, messageId, conversationId);\n\t\t\toptions.onImage?.({\n\t\t\t\tdata: chunk.data,\n\t\t\t\tformat: chunk.format,\n\t\t\t\timageId: chunk.imageId,\n\t\t\t\tisPartial: chunk.isPartial,\n\t\t\t\trevisedPrompt: chunk.revisedPrompt\n\t\t\t});\n\t\t\tbreak;\n\n\t\tcase 'tool_use':\n\t\t\thandleToolChunkToolUse(chunk, state);\n\t\t\tstate.contentBlocks.push({\n\t\t\t\tid: chunk.id,\n\t\t\t\tinput: typeof chunk.input === 'object' && chunk.input !== null\n\t\t\t\t\t? chunk.input\n\t\t\t\t\t: {},\n\t\t\t\tname: chunk.name,\n\t\t\t\ttype: 'tool_use'\n\t\t\t});\n\t\t\thitAnotherTool = true;\n\t\t\tbreak;\n\n\t\tcase 'done':\n\t\t\tstate.currentUsage = chunk.usage;\n\t\t\tbreak;\n\t}\n\n\treturn hitAnotherTool;\n};\n\nconst processToolTurn = async (\n\tsocket: AIWebSocket,\n\toptions: StreamAIOptions,\n\tstate: ToolLoopState,\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal\n) => {\n\tconst toolCalls = [...state.pendingToolCalls];\n\tstate.pendingToolCalls = [];\n\n\t// Build assistant message with all content blocks (thinking + text + tool_use)\n\t// Anthropic requires the complete assistant response when extended thinking is enabled\n\tstate.currentMessages.push({\n\t\tcontent: state.contentBlocks,\n\t\trole: 'assistant'\n\t});\n\tstate.contentBlocks = [];\n\n\t// Execute all tool calls and collect results\n\tconst toolResultBlocks: Array<{\n\t\tcontent: string;\n\t\ttool_use_id: string;\n\t\ttype: 'tool_result';\n\t}> = [];\n\n\tfor (const tc of toolCalls) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tawait sendToolRunning(\n\t\t\tsocket,\n\t\t\ttc.name,\n\t\t\ttc.input,\n\t\t\tmessageId,\n\t\t\tconversationId\n\t\t);\n\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst result = await executeTool(options, tc.name, tc.input);\n\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tawait sendToolComplete(\n\t\t\tsocket,\n\t\t\ttc.name,\n\t\t\tresult,\n\t\t\tmessageId,\n\t\t\tconversationId\n\t\t);\n\n\t\toptions.onToolUse?.(tc.name, tc.input, result);\n\n\t\ttoolResultBlocks.push({\n\t\t\tcontent: result,\n\t\t\ttool_use_id: tc.id,\n\t\t\ttype: 'tool_result' as const\n\t\t});\n\n\t\tstate.executedToolKeys.add(serializeToolCall(tc.name, tc.input));\n\t}\n\n\tstate.currentMessages.push({\n\t\tcontent: toolResultBlocks,\n\t\trole: 'user'\n\t});\n\n\tconst toolDefs = options.tools\n\t\t? buildToolDefinitions(options.tools)\n\t\t: undefined;\n\n\tconst thinkingConfig = options.thinking\n\t\t? {\n\t\t\t\tbudget_tokens:\n\t\t\t\t\ttypeof options.thinking === 'object'\n\t\t\t\t\t\t? options.thinking.budgetTokens\n\t\t\t\t\t\t: DEFAULT_THINKING_BUDGET,\n\t\t\t\ttype: 'enabled'\n\t\t\t}\n\t\t: undefined;\n\n\tconst stream = options.provider.stream({\n\t\tmessages: state.currentMessages,\n\t\tmodel: options.model,\n\t\tsignal,\n\t\tsystemPrompt: options.systemPrompt,\n\t\tthinking: thinkingConfig,\n\t\ttools: toolDefs\n\t});\n\n\tawait consumeToolStream(\n\t\tstream,\n\t\tstate,\n\t\toptions,\n\t\tsocket,\n\t\tmessageId,\n\t\tconversationId,\n\t\tsignal\n\t);\n};\n\nconst consumeToolStream = async (\n\tstream: AsyncIterable<AIChunk>,\n\tstate: ToolLoopState,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal\n) => {\n\tlet hitAnotherTool = false;\n\n\tfor await (const chunk of stream) {\n\t\tif (signal.aborted) break;\n\n\t\tconst isToolHit = processToolChunk(\n\t\t\tchunk,\n\t\t\tstate,\n\t\t\toptions,\n\t\t\tsocket,\n\t\t\tmessageId,\n\t\t\tconversationId\n\t\t);\n\n\t\tif (isToolHit) hitAnotherTool = true;\n\n\t\t// Don't return early on tool_use — continue consuming\n\t\t// the stream to capture usage from the done chunk\n\t}\n\n\treturn hitAnotherTool;\n};\n\nconst shouldContinueToolLoop = (\n\tstate: ToolLoopState,\n\tmaxTurns: number,\n\tsignal: AbortSignal\n) =>\n\tstate.pendingToolCalls.length > 0 &&\n\tstate.currentTurn < maxTurns &&\n\t!signal.aborted;\n\nconst areAllRepeatedToolCalls = (state: ToolLoopState) =>\n\tstate.pendingToolCalls.every((tc) =>\n\t\tstate.executedToolKeys.has(serializeToolCall(tc.name, tc.input))\n\t);\n\nconst buildToolLoopResult = (state: ToolLoopState) => ({\n\tfullResponse: state.currentFullResponse,\n\tusage: state.currentUsage\n});\n\nconst executeToolLoop = async (\n\tsocket: AIWebSocket,\n\toptions: StreamAIOptions,\n\tmessages: AIProviderMessage[],\n\tinitialToolCalls: PendingToolCall[],\n\tinitialContentBlocks: ContentBlock[],\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal,\n\tfullResponse: string,\n\tturn: number\n) => {\n\tconst maxTurns = options.maxTurns ?? DEFAULT_MAX_TURNS;\n\n\tconst state: ToolLoopState = {\n\t\tcontentBlocks: initialContentBlocks,\n\t\tcurrentFullResponse: fullResponse,\n\t\tcurrentMessages: [...messages],\n\t\tcurrentTurn: turn,\n\t\tcurrentUsage: undefined,\n\t\texecutedToolKeys: new Set<string>(),\n\t\tpendingToolCalls: initialToolCalls\n\t};\n\n\twhile (shouldContinueToolLoop(state, maxTurns, signal)) {\n\t\tif (areAllRepeatedToolCalls(state)) break;\n\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tawait processToolTurn(\n\t\t\tsocket,\n\t\t\toptions,\n\t\t\tstate,\n\t\t\tmessageId,\n\t\t\tconversationId,\n\t\t\tsignal\n\t\t);\n\n\t\tstate.currentTurn++;\n\t}\n\n\treturn buildToolLoopResult(state);\n};\n\nconst sendComplete = async (\n\tsocket: AIWebSocket,\n\tmessageId: string,\n\tconversationId: string,\n\tusage?: AIUsage,\n\tdurationMs?: number,\n\tmodel?: string\n) =>\n\tsendMessage(socket, {\n\t\tconversationId,\n\t\tdurationMs,\n\t\tmessageId,\n\t\tmodel,\n\t\ttype: 'complete',\n\t\tusage\n\t});\n\nconst sendError = async (\n\tsocket: AIWebSocket,\n\terr: unknown,\n\tmessageId: string,\n\tconversationId: string\n) =>\n\tsendMessage(socket, {\n\t\tconversationId,\n\t\tmessage: err instanceof Error ? err.message : String(err),\n\t\tmessageId,\n\t\ttype: 'error'\n\t});\n\nconst handleTextChunk = async (\n\tchunk: AITextChunk,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tmessageId: string,\n\tconversationId: string\n) => {\n\tconst textContent = extractTextContent(chunk, options.onChunk);\n\n\tawait sendMessage(socket, {\n\t\tcontent: textContent,\n\t\tconversationId,\n\t\tmessageId,\n\t\ttype: 'chunk'\n\t});\n\n\treturn textContent;\n};\n\nconst handleToolCalls = async (\n\tsocket: AIWebSocket,\n\toptions: StreamAIOptions,\n\tmessages: AIProviderMessage[],\n\ttoolCalls: PendingToolCall[],\n\tcontentBlocks: ContentBlock[],\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal,\n\tfullResponse: string,\n\tstartTime: number\n) => {\n\tconst toolResult = await executeToolLoop(\n\t\tsocket,\n\t\toptions,\n\t\tmessages,\n\t\ttoolCalls,\n\t\tcontentBlocks,\n\t\tmessageId,\n\t\tconversationId,\n\t\tsignal,\n\t\tfullResponse,\n\t\tINITIAL_TURN\n\t);\n\n\tawait sendComplete(\n\t\tsocket,\n\t\tmessageId,\n\t\tconversationId,\n\t\ttoolResult.usage,\n\t\tDate.now() - startTime,\n\t\toptions.model\n\t);\n\toptions.onComplete?.(toolResult.fullResponse, toolResult.usage);\n\n\treturn toolResult;\n};\n\nconst processStreamTextChunk = async (\n\tchunk: AITextChunk,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tmessageId: string,\n\tconversationId: string\n) => {\n\tconst textContent = await handleTextChunk(\n\t\tchunk,\n\t\toptions,\n\t\tsocket,\n\t\tmessageId,\n\t\tconversationId\n\t);\n\n\treturn textContent;\n};\n\nconst processStream = async (\n\tsocket: AIWebSocket,\n\toptions: StreamAIOptions,\n\tmessages: AIProviderMessage[],\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal,\n\tstartTime: number\n) => {\n\tconst toolDefs = options.tools\n\t\t? buildToolDefinitions(options.tools)\n\t\t: undefined;\n\n\tconst thinkingConfig = options.thinking\n\t\t? {\n\t\t\t\tbudget_tokens:\n\t\t\t\t\ttypeof options.thinking === 'object'\n\t\t\t\t\t\t? options.thinking.budgetTokens\n\t\t\t\t\t\t: DEFAULT_THINKING_BUDGET,\n\t\t\t\ttype: 'enabled'\n\t\t\t}\n\t\t: undefined;\n\n\tconst stream = options.provider.stream({\n\t\tmessages,\n\t\tmodel: options.model,\n\t\tsignal,\n\t\tsystemPrompt: options.systemPrompt,\n\t\tthinking: thinkingConfig,\n\t\ttools: toolDefs\n\t});\n\n\tconst result = await consumeStream(\n\t\tstream,\n\t\toptions,\n\t\tsocket,\n\t\tmessages,\n\t\tmessageId,\n\t\tconversationId,\n\t\tsignal,\n\t\tstartTime\n\t);\n\n\tif (result.pendingToolCalls.length > 0) {\n\t\tawait handleToolCalls(\n\t\t\tsocket,\n\t\t\toptions,\n\t\t\tmessages,\n\t\t\tresult.pendingToolCalls,\n\t\t\tresult.contentBlocks,\n\t\t\tmessageId,\n\t\t\tconversationId,\n\t\t\tsignal,\n\t\t\tresult.fullResponse,\n\t\t\tstartTime\n\t\t);\n\t} else {\n\t\tawait sendComplete(\n\t\t\tsocket,\n\t\t\tmessageId,\n\t\t\tconversationId,\n\t\t\tresult.usage,\n\t\t\tDate.now() - startTime,\n\t\t\toptions.model\n\t\t);\n\t\toptions.onComplete?.(result.fullResponse, result.usage);\n\t}\n};\n\ntype ConsumeStreamState = {\n\tcontentBlocks: ContentBlock[];\n\tfullResponse: string;\n\tpendingToolCalls: PendingToolCall[];\n\tusage: AIUsage | undefined;\n};\n\nconst consumeStreamChunk = async (\n\tchunk: AIChunk,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tstate: ConsumeStreamState,\n\tmessageId: string,\n\tconversationId: string\n) => {\n\tswitch (chunk.type) {\n\t\tcase 'thinking':\n\t\t\tawait sendMessage(socket, {\n\t\t\t\tcontent: chunk.content,\n\t\t\t\tconversationId,\n\t\t\t\tmessageId,\n\t\t\t\ttype: 'thinking'\n\t\t\t});\n\t\t\tstate.contentBlocks.push({\n\t\t\t\tthinking: chunk.content,\n\t\t\t\ttype: 'thinking'\n\t\t\t});\n\t\t\tbreak;\n\n\t\tcase 'text':\n\t\t\tstate.fullResponse += await processStreamTextChunk(\n\t\t\t\tchunk,\n\t\t\t\toptions,\n\t\t\t\tsocket,\n\t\t\t\tmessageId,\n\t\t\t\tconversationId\n\t\t\t);\n\t\t\tstate.contentBlocks.push({ content: chunk.content, type: 'text' });\n\t\t\tbreak;\n\n\t\tcase 'image':\n\t\t\tawait sendImageMessage(socket, chunk, messageId, conversationId);\n\t\t\toptions.onImage?.({\n\t\t\t\tdata: chunk.data,\n\t\t\t\tformat: chunk.format,\n\t\t\t\timageId: chunk.imageId,\n\t\t\t\tisPartial: chunk.isPartial,\n\t\t\t\trevisedPrompt: chunk.revisedPrompt\n\t\t\t});\n\t\t\tbreak;\n\n\t\tcase 'tool_use':\n\t\t\tstate.pendingToolCalls.push({\n\t\t\t\tid: chunk.id,\n\t\t\t\tinput: chunk.input,\n\t\t\t\tname: chunk.name\n\t\t\t});\n\t\t\tstate.contentBlocks.push({\n\t\t\t\tid: chunk.id,\n\t\t\t\tinput: typeof chunk.input === 'object' && chunk.input !== null\n\t\t\t\t\t? chunk.input\n\t\t\t\t\t: {},\n\t\t\t\tname: chunk.name,\n\t\t\t\ttype: 'tool_use'\n\t\t\t});\n\t\t\tbreak;\n\n\t\tcase 'done':\n\t\t\tstate.usage = chunk.usage;\n\t\t\tbreak;\n\t}\n};\n\nconst consumeStream = async (\n\tstream: AsyncIterable<AIChunk>,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tmessages: AIProviderMessage[],\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal,\n\tstartTime: number\n) => {\n\tconst state: ConsumeStreamState = {\n\t\tcontentBlocks: [],\n\t\tfullResponse: '',\n\t\tpendingToolCalls: [],\n\t\tusage: undefined\n\t};\n\n\tfor await (const chunk of stream) {\n\t\tif (signal.aborted) break;\n\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tawait consumeStreamChunk(\n\t\t\tchunk,\n\t\t\toptions,\n\t\t\tsocket,\n\t\t\tstate,\n\t\t\tmessageId,\n\t\t\tconversationId\n\t\t);\n\t}\n\n\treturn state;\n};\n\nexport const streamAI = async (\n\tsocket: AIWebSocket,\n\tconversationId: string,\n\tmessageId: string,\n\toptions: StreamAIOptions\n) => {\n\tconst signal = options.signal ?? new AbortController().signal;\n\tconst startTime = Date.now();\n\n\tconst messages: AIProviderMessage[] = options.messages\n\t\t? [...options.messages]\n\t\t: [];\n\n\ttry {\n\t\tawait processStream(\n\t\t\tsocket,\n\t\t\toptions,\n\t\t\tmessages,\n\t\t\tmessageId,\n\t\t\tconversationId,\n\t\t\tsignal,\n\t\t\tstartTime\n\t\t);\n\t} catch (err) {\n\t\tawait handleStreamError(\n\t\t\tsocket,\n\t\t\terr,\n\t\t\tmessageId,\n\t\t\tconversationId,\n\t\t\tsignal,\n\t\t\tstartTime\n\t\t);\n\t}\n};\n\nconst handleStreamError = async (\n\tsocket: AIWebSocket,\n\terr: unknown,\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal,\n\tstartTime: number\n) => {\n\tif (signal.aborted) {\n\t\tawait sendComplete(\n\t\t\tsocket,\n\t\t\tmessageId,\n\t\t\tconversationId,\n\t\t\tundefined,\n\t\t\tDate.now() - startTime\n\t\t);\n\n\t\treturn;\n\t}\n\n\tawait sendError(socket, err, messageId, conversationId);\n};\n"
|
|
13
|
+
"import type {\n\tAIChunk,\n\tAIImageChunk,\n\tAIProviderContentBlock,\n\tAIProviderMessage,\n\tAIServerMessage,\n\tAITextChunk,\n\tAIToolMap,\n\tAIUsage,\n\tAIWebSocket,\n\tStreamAIOptions\n} from '../../types/ai';\nimport { serializeAIMessage } from './protocol';\n\nconst WS_OPEN = 1;\nconst BACKPRESSURE_THRESHOLD = 1_048_576;\nconst BACKPRESSURE_DELAY = 10;\nconst DEFAULT_MAX_TURNS = 10;\nconst DEFAULT_THINKING_BUDGET = 10_000;\nconst INITIAL_TURN = 0;\n\nconst delay = (milliseconds: number) =>\n\t// eslint-disable-next-line promise/avoid-new\n\tnew Promise<void>((resolve) => setTimeout(resolve, milliseconds));\n\nconst checkBackpressure = async (socket: AIWebSocket) => {\n\tif (!('raw' in socket)) {\n\t\treturn;\n\t}\n\n\tconst { raw } = socket;\n\n\tif (\n\t\traw &&\n\t\ttypeof raw === 'object' &&\n\t\t'bufferedAmount' in raw &&\n\t\ttypeof raw.bufferedAmount === 'number' &&\n\t\traw.bufferedAmount > BACKPRESSURE_THRESHOLD\n\t) {\n\t\tawait delay(BACKPRESSURE_DELAY);\n\t}\n};\n\nconst sendMessage = async (socket: AIWebSocket, msg: AIServerMessage) => {\n\tif (socket.readyState !== WS_OPEN) {\n\t\treturn false;\n\t}\n\n\tawait checkBackpressure(socket);\n\n\tsocket.send(serializeAIMessage(msg));\n\n\treturn true;\n};\n\nconst buildToolDefinitions = (tools: AIToolMap) =>\n\tObject.entries(tools).map(([name, def]) => ({\n\t\tdescription: def.description,\n\t\tinput_schema: def.input,\n\t\tname\n\t}));\n\nconst extractTextContent = (\n\tchunk: AITextChunk,\n\tonChunk?: (chunk: AITextChunk) => AITextChunk | void\n) => {\n\tif (!onChunk) {\n\t\treturn chunk.content;\n\t}\n\n\tconst transformed = onChunk(chunk);\n\n\tif (\n\t\ttransformed &&\n\t\ttypeof transformed === 'object' &&\n\t\t'content' in transformed\n\t) {\n\t\treturn transformed.content;\n\t}\n\n\treturn chunk.content;\n};\n\nconst sendImageMessage = async (\n\tsocket: AIWebSocket,\n\tchunk: AIImageChunk,\n\tmessageId: string,\n\tconversationId: string\n) =>\n\tsendMessage(socket, {\n\t\tconversationId,\n\t\tdata: chunk.data,\n\t\tformat: chunk.format,\n\t\timageId: chunk.imageId,\n\t\tisPartial: chunk.isPartial,\n\t\tmessageId,\n\t\trevisedPrompt: chunk.revisedPrompt,\n\t\ttype: 'image'\n\t});\n\nconst sendToolRunning = async (\n\tsocket: AIWebSocket,\n\ttoolName: string,\n\ttoolInput: unknown,\n\tmessageId: string,\n\tconversationId: string\n) =>\n\tsendMessage(socket, {\n\t\tconversationId,\n\t\tinput: toolInput,\n\t\tmessageId,\n\t\tname: toolName,\n\t\tstatus: 'running',\n\t\ttype: 'tool_status'\n\t});\n\nconst sendToolComplete = async (\n\tsocket: AIWebSocket,\n\ttoolName: string,\n\tresult: string,\n\tmessageId: string,\n\tconversationId: string\n) =>\n\tsendMessage(socket, {\n\t\tconversationId,\n\t\tmessageId,\n\t\tname: toolName,\n\t\tresult,\n\t\tstatus: 'complete',\n\t\ttype: 'tool_status'\n\t});\n\nconst executeTool = async (\n\toptions: StreamAIOptions,\n\ttoolName: string,\n\ttoolInput: unknown\n) => {\n\tconst toolDef = options.tools?.[toolName];\n\n\tif (!toolDef) {\n\t\treturn `Error: unknown tool \"${toolName}\"`;\n\t}\n\n\ttry {\n\t\treturn await toolDef.handler(toolInput);\n\t} catch (err) {\n\t\treturn `Error: ${err instanceof Error ? err.message : String(err)}`;\n\t}\n};\n\nconst buildToolUseBlock = (\n\ttoolUseId: string,\n\ttoolName: string,\n\ttoolInput: unknown\n) => [\n\t{\n\t\tid: toolUseId,\n\t\tinput: toolInput,\n\t\tname: toolName,\n\t\ttype: 'tool_use' as const\n\t}\n];\n\nconst buildToolResultBlock = (toolUseId: string, result: string) => [\n\t{\n\t\tcontent: result,\n\t\ttool_use_id: toolUseId,\n\t\ttype: 'tool_result' as const\n\t}\n];\n\nconst serializeToolCall = (name: string, input: unknown) =>\n\t`${name}:${JSON.stringify(input)}`;\n\ntype PendingToolCall = {\n\tid: string;\n\tinput: unknown;\n\tname: string;\n};\n\ntype ContentBlock = AIProviderContentBlock;\n\ntype ThinkingAccumulator = {\n\tsignature: string;\n\ttext: string;\n};\n\ntype ToolLoopState = {\n\tcontentBlocks: ContentBlock[];\n\tcurrentFullResponse: string;\n\tcurrentThinking: ThinkingAccumulator | null;\n\tcurrentMessages: AIProviderMessage[];\n\tcurrentTurn: number;\n\tcurrentUsage: AIUsage | undefined;\n\texecutedToolKeys: Set<string>;\n\tpendingToolCalls: PendingToolCall[];\n};\n\nconst handleToolChunkText = (\n\tchunk: AITextChunk,\n\tstate: ToolLoopState,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tmessageId: string,\n\tconversationId: string\n) => {\n\tconst textContent = extractTextContent(chunk, options.onChunk);\n\tstate.currentFullResponse += textContent;\n\tsendMessage(socket, {\n\t\tcontent: textContent,\n\t\tconversationId,\n\t\tmessageId,\n\t\ttype: 'chunk'\n\t});\n};\n\nconst handleToolChunkToolUse = (\n\tchunk: AIChunk & { type: 'tool_use' },\n\tstate: ToolLoopState\n) => {\n\tstate.pendingToolCalls.push({\n\t\tid: chunk.id,\n\t\tinput: chunk.input,\n\t\tname: chunk.name\n\t});\n};\n\nconst flushThinking = (state: ToolLoopState) => {\n\tif (state.currentThinking) {\n\t\tstate.contentBlocks.push({\n\t\t\tsignature: state.currentThinking.signature || undefined,\n\t\t\tthinking: state.currentThinking.text,\n\t\t\ttype: 'thinking'\n\t\t});\n\t\tstate.currentThinking = null;\n\t}\n};\n\nconst processToolChunk = (\n\tchunk: AIChunk,\n\tstate: ToolLoopState,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tmessageId: string,\n\tconversationId: string\n) => {\n\tlet hitAnotherTool = false;\n\n\tswitch (chunk.type) {\n\t\tcase 'thinking':\n\t\t\tif (chunk.content) {\n\t\t\t\tsendMessage(socket, {\n\t\t\t\t\tcontent: chunk.content,\n\t\t\t\t\tconversationId,\n\t\t\t\t\tmessageId,\n\t\t\t\t\ttype: 'thinking'\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!state.currentThinking) {\n\t\t\t\tstate.currentThinking = { signature: '', text: '' };\n\t\t\t}\n\t\t\tstate.currentThinking.text += chunk.content;\n\t\t\tif (chunk.signature) {\n\t\t\t\tstate.currentThinking.signature = chunk.signature;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'text':\n\t\t\tflushThinking(state);\n\t\t\thandleToolChunkText(\n\t\t\t\tchunk,\n\t\t\t\tstate,\n\t\t\t\toptions,\n\t\t\t\tsocket,\n\t\t\t\tmessageId,\n\t\t\t\tconversationId\n\t\t\t);\n\t\t\tstate.contentBlocks.push({\n\t\t\t\tcontent: chunk.content,\n\t\t\t\ttype: 'text'\n\t\t\t});\n\t\t\tbreak;\n\n\t\tcase 'image':\n\t\t\tsendImageMessage(socket, chunk, messageId, conversationId);\n\t\t\toptions.onImage?.({\n\t\t\t\tdata: chunk.data,\n\t\t\t\tformat: chunk.format,\n\t\t\t\timageId: chunk.imageId,\n\t\t\t\tisPartial: chunk.isPartial,\n\t\t\t\trevisedPrompt: chunk.revisedPrompt\n\t\t\t});\n\t\t\tbreak;\n\n\t\tcase 'tool_use':\n\t\t\tflushThinking(state);\n\t\t\thandleToolChunkToolUse(chunk, state);\n\t\t\tstate.contentBlocks.push({\n\t\t\t\tid: chunk.id,\n\t\t\t\tinput: typeof chunk.input === 'object' && chunk.input !== null\n\t\t\t\t\t? chunk.input\n\t\t\t\t\t: {},\n\t\t\t\tname: chunk.name,\n\t\t\t\ttype: 'tool_use'\n\t\t\t});\n\t\t\thitAnotherTool = true;\n\t\t\tbreak;\n\n\t\tcase 'done':\n\t\t\tflushThinking(state);\n\t\t\tstate.currentUsage = chunk.usage;\n\t\t\tbreak;\n\t}\n\n\treturn hitAnotherTool;\n};\n\nconst processToolTurn = async (\n\tsocket: AIWebSocket,\n\toptions: StreamAIOptions,\n\tstate: ToolLoopState,\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal\n) => {\n\tconst toolCalls = [...state.pendingToolCalls];\n\tstate.pendingToolCalls = [];\n\n\t// Build assistant message with all content blocks (thinking + text + tool_use)\n\t// Anthropic requires the complete assistant response when extended thinking is enabled\n\tstate.currentMessages.push({\n\t\tcontent: state.contentBlocks,\n\t\trole: 'assistant'\n\t});\n\tstate.contentBlocks = [];\n\n\t// Execute all tool calls and collect results\n\tconst toolResultBlocks: Array<{\n\t\tcontent: string;\n\t\ttool_use_id: string;\n\t\ttype: 'tool_result';\n\t}> = [];\n\n\tfor (const tc of toolCalls) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tawait sendToolRunning(\n\t\t\tsocket,\n\t\t\ttc.name,\n\t\t\ttc.input,\n\t\t\tmessageId,\n\t\t\tconversationId\n\t\t);\n\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst result = await executeTool(options, tc.name, tc.input);\n\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tawait sendToolComplete(\n\t\t\tsocket,\n\t\t\ttc.name,\n\t\t\tresult,\n\t\t\tmessageId,\n\t\t\tconversationId\n\t\t);\n\n\t\toptions.onToolUse?.(tc.name, tc.input, result);\n\n\t\ttoolResultBlocks.push({\n\t\t\tcontent: result,\n\t\t\ttool_use_id: tc.id,\n\t\t\ttype: 'tool_result' as const\n\t\t});\n\n\t\tstate.executedToolKeys.add(serializeToolCall(tc.name, tc.input));\n\t}\n\n\tstate.currentMessages.push({\n\t\tcontent: toolResultBlocks,\n\t\trole: 'user'\n\t});\n\n\tconst toolDefs = options.tools\n\t\t? buildToolDefinitions(options.tools)\n\t\t: undefined;\n\n\tconst thinkingConfig = options.thinking\n\t\t? {\n\t\t\t\tbudget_tokens:\n\t\t\t\t\ttypeof options.thinking === 'object'\n\t\t\t\t\t\t? options.thinking.budgetTokens\n\t\t\t\t\t\t: DEFAULT_THINKING_BUDGET,\n\t\t\t\ttype: 'enabled'\n\t\t\t}\n\t\t: undefined;\n\n\tconst stream = options.provider.stream({\n\t\tmessages: state.currentMessages,\n\t\tmodel: options.model,\n\t\tsignal,\n\t\tsystemPrompt: options.systemPrompt,\n\t\tthinking: thinkingConfig,\n\t\ttools: toolDefs\n\t});\n\n\tawait consumeToolStream(\n\t\tstream,\n\t\tstate,\n\t\toptions,\n\t\tsocket,\n\t\tmessageId,\n\t\tconversationId,\n\t\tsignal\n\t);\n};\n\nconst consumeToolStream = async (\n\tstream: AsyncIterable<AIChunk>,\n\tstate: ToolLoopState,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal\n) => {\n\tlet hitAnotherTool = false;\n\n\tfor await (const chunk of stream) {\n\t\tif (signal.aborted) break;\n\n\t\tconst isToolHit = processToolChunk(\n\t\t\tchunk,\n\t\t\tstate,\n\t\t\toptions,\n\t\t\tsocket,\n\t\t\tmessageId,\n\t\t\tconversationId\n\t\t);\n\n\t\tif (isToolHit) hitAnotherTool = true;\n\n\t\t// Don't return early on tool_use — continue consuming\n\t\t// the stream to capture usage from the done chunk\n\t}\n\n\treturn hitAnotherTool;\n};\n\nconst shouldContinueToolLoop = (\n\tstate: ToolLoopState,\n\tmaxTurns: number,\n\tsignal: AbortSignal\n) =>\n\tstate.pendingToolCalls.length > 0 &&\n\tstate.currentTurn < maxTurns &&\n\t!signal.aborted;\n\nconst areAllRepeatedToolCalls = (state: ToolLoopState) =>\n\tstate.pendingToolCalls.every((tc) =>\n\t\tstate.executedToolKeys.has(serializeToolCall(tc.name, tc.input))\n\t);\n\nconst buildToolLoopResult = (state: ToolLoopState) => ({\n\tfullResponse: state.currentFullResponse,\n\tusage: state.currentUsage\n});\n\nconst executeToolLoop = async (\n\tsocket: AIWebSocket,\n\toptions: StreamAIOptions,\n\tmessages: AIProviderMessage[],\n\tinitialToolCalls: PendingToolCall[],\n\tinitialContentBlocks: ContentBlock[],\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal,\n\tfullResponse: string,\n\tturn: number\n) => {\n\tconst maxTurns = options.maxTurns ?? DEFAULT_MAX_TURNS;\n\n\tconst state: ToolLoopState = {\n\t\tcontentBlocks: initialContentBlocks,\n\t\tcurrentFullResponse: fullResponse,\n\t\tcurrentMessages: [...messages],\n\t\tcurrentThinking: null,\n\t\tcurrentTurn: turn,\n\t\tcurrentUsage: undefined,\n\t\texecutedToolKeys: new Set<string>(),\n\t\tpendingToolCalls: initialToolCalls\n\t};\n\n\twhile (shouldContinueToolLoop(state, maxTurns, signal)) {\n\t\tif (areAllRepeatedToolCalls(state)) break;\n\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tawait processToolTurn(\n\t\t\tsocket,\n\t\t\toptions,\n\t\t\tstate,\n\t\t\tmessageId,\n\t\t\tconversationId,\n\t\t\tsignal\n\t\t);\n\n\t\tstate.currentTurn++;\n\t}\n\n\treturn buildToolLoopResult(state);\n};\n\nconst sendComplete = async (\n\tsocket: AIWebSocket,\n\tmessageId: string,\n\tconversationId: string,\n\tusage?: AIUsage,\n\tdurationMs?: number,\n\tmodel?: string\n) =>\n\tsendMessage(socket, {\n\t\tconversationId,\n\t\tdurationMs,\n\t\tmessageId,\n\t\tmodel,\n\t\ttype: 'complete',\n\t\tusage\n\t});\n\nconst sendError = async (\n\tsocket: AIWebSocket,\n\terr: unknown,\n\tmessageId: string,\n\tconversationId: string\n) =>\n\tsendMessage(socket, {\n\t\tconversationId,\n\t\tmessage: err instanceof Error ? err.message : String(err),\n\t\tmessageId,\n\t\ttype: 'error'\n\t});\n\nconst handleTextChunk = async (\n\tchunk: AITextChunk,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tmessageId: string,\n\tconversationId: string\n) => {\n\tconst textContent = extractTextContent(chunk, options.onChunk);\n\n\tawait sendMessage(socket, {\n\t\tcontent: textContent,\n\t\tconversationId,\n\t\tmessageId,\n\t\ttype: 'chunk'\n\t});\n\n\treturn textContent;\n};\n\nconst handleToolCalls = async (\n\tsocket: AIWebSocket,\n\toptions: StreamAIOptions,\n\tmessages: AIProviderMessage[],\n\ttoolCalls: PendingToolCall[],\n\tcontentBlocks: ContentBlock[],\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal,\n\tfullResponse: string,\n\tstartTime: number\n) => {\n\tconst toolResult = await executeToolLoop(\n\t\tsocket,\n\t\toptions,\n\t\tmessages,\n\t\ttoolCalls,\n\t\tcontentBlocks,\n\t\tmessageId,\n\t\tconversationId,\n\t\tsignal,\n\t\tfullResponse,\n\t\tINITIAL_TURN\n\t);\n\n\tawait sendComplete(\n\t\tsocket,\n\t\tmessageId,\n\t\tconversationId,\n\t\ttoolResult.usage,\n\t\tDate.now() - startTime,\n\t\toptions.model\n\t);\n\toptions.onComplete?.(toolResult.fullResponse, toolResult.usage);\n\n\treturn toolResult;\n};\n\nconst processStreamTextChunk = async (\n\tchunk: AITextChunk,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tmessageId: string,\n\tconversationId: string\n) => {\n\tconst textContent = await handleTextChunk(\n\t\tchunk,\n\t\toptions,\n\t\tsocket,\n\t\tmessageId,\n\t\tconversationId\n\t);\n\n\treturn textContent;\n};\n\nconst processStream = async (\n\tsocket: AIWebSocket,\n\toptions: StreamAIOptions,\n\tmessages: AIProviderMessage[],\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal,\n\tstartTime: number\n) => {\n\tconst toolDefs = options.tools\n\t\t? buildToolDefinitions(options.tools)\n\t\t: undefined;\n\n\tconst thinkingConfig = options.thinking\n\t\t? {\n\t\t\t\tbudget_tokens:\n\t\t\t\t\ttypeof options.thinking === 'object'\n\t\t\t\t\t\t? options.thinking.budgetTokens\n\t\t\t\t\t\t: DEFAULT_THINKING_BUDGET,\n\t\t\t\ttype: 'enabled'\n\t\t\t}\n\t\t: undefined;\n\n\tconst stream = options.provider.stream({\n\t\tmessages,\n\t\tmodel: options.model,\n\t\tsignal,\n\t\tsystemPrompt: options.systemPrompt,\n\t\tthinking: thinkingConfig,\n\t\ttools: toolDefs\n\t});\n\n\tconst result = await consumeStream(\n\t\tstream,\n\t\toptions,\n\t\tsocket,\n\t\tmessages,\n\t\tmessageId,\n\t\tconversationId,\n\t\tsignal,\n\t\tstartTime\n\t);\n\n\tif (result.pendingToolCalls.length > 0) {\n\t\tawait handleToolCalls(\n\t\t\tsocket,\n\t\t\toptions,\n\t\t\tmessages,\n\t\t\tresult.pendingToolCalls,\n\t\t\tresult.contentBlocks,\n\t\t\tmessageId,\n\t\t\tconversationId,\n\t\t\tsignal,\n\t\t\tresult.fullResponse,\n\t\t\tstartTime\n\t\t);\n\t} else {\n\t\tawait sendComplete(\n\t\t\tsocket,\n\t\t\tmessageId,\n\t\t\tconversationId,\n\t\t\tresult.usage,\n\t\t\tDate.now() - startTime,\n\t\t\toptions.model\n\t\t);\n\t\toptions.onComplete?.(result.fullResponse, result.usage);\n\t}\n};\n\ntype ConsumeStreamState = {\n\tcontentBlocks: ContentBlock[];\n\tcurrentThinking: ThinkingAccumulator | null;\n\tfullResponse: string;\n\tpendingToolCalls: PendingToolCall[];\n\tusage: AIUsage | undefined;\n};\n\nconst flushStreamThinking = (state: ConsumeStreamState) => {\n\tif (state.currentThinking) {\n\t\tstate.contentBlocks.push({\n\t\t\tsignature: state.currentThinking.signature || undefined,\n\t\t\tthinking: state.currentThinking.text,\n\t\t\ttype: 'thinking'\n\t\t});\n\t\tstate.currentThinking = null;\n\t}\n};\n\nconst consumeStreamChunk = async (\n\tchunk: AIChunk,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tstate: ConsumeStreamState,\n\tmessageId: string,\n\tconversationId: string\n) => {\n\tswitch (chunk.type) {\n\t\tcase 'thinking':\n\t\t\tif (chunk.content) {\n\t\t\t\tawait sendMessage(socket, {\n\t\t\t\t\tcontent: chunk.content,\n\t\t\t\t\tconversationId,\n\t\t\t\t\tmessageId,\n\t\t\t\t\ttype: 'thinking'\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!state.currentThinking) {\n\t\t\t\tstate.currentThinking = { signature: '', text: '' };\n\t\t\t}\n\t\t\tstate.currentThinking.text += chunk.content;\n\t\t\tif (chunk.signature) {\n\t\t\t\tstate.currentThinking.signature = chunk.signature;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'text':\n\t\t\tflushStreamThinking(state);\n\t\t\tstate.fullResponse += await processStreamTextChunk(\n\t\t\t\tchunk,\n\t\t\t\toptions,\n\t\t\t\tsocket,\n\t\t\t\tmessageId,\n\t\t\t\tconversationId\n\t\t\t);\n\t\t\tstate.contentBlocks.push({ content: chunk.content, type: 'text' });\n\t\t\tbreak;\n\n\t\tcase 'image':\n\t\t\tawait sendImageMessage(socket, chunk, messageId, conversationId);\n\t\t\toptions.onImage?.({\n\t\t\t\tdata: chunk.data,\n\t\t\t\tformat: chunk.format,\n\t\t\t\timageId: chunk.imageId,\n\t\t\t\tisPartial: chunk.isPartial,\n\t\t\t\trevisedPrompt: chunk.revisedPrompt\n\t\t\t});\n\t\t\tbreak;\n\n\t\tcase 'tool_use':\n\t\t\tflushStreamThinking(state);\n\t\t\tstate.pendingToolCalls.push({\n\t\t\t\tid: chunk.id,\n\t\t\t\tinput: chunk.input,\n\t\t\t\tname: chunk.name\n\t\t\t});\n\t\t\tstate.contentBlocks.push({\n\t\t\t\tid: chunk.id,\n\t\t\t\tinput: typeof chunk.input === 'object' && chunk.input !== null\n\t\t\t\t\t? chunk.input\n\t\t\t\t\t: {},\n\t\t\t\tname: chunk.name,\n\t\t\t\ttype: 'tool_use'\n\t\t\t});\n\t\t\tbreak;\n\n\t\tcase 'done':\n\t\t\tflushStreamThinking(state);\n\t\t\tstate.usage = chunk.usage;\n\t\t\tbreak;\n\t}\n};\n\nconst consumeStream = async (\n\tstream: AsyncIterable<AIChunk>,\n\toptions: StreamAIOptions,\n\tsocket: AIWebSocket,\n\tmessages: AIProviderMessage[],\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal,\n\tstartTime: number\n) => {\n\tconst state: ConsumeStreamState = {\n\t\tcontentBlocks: [],\n\t\tcurrentThinking: null,\n\t\tfullResponse: '',\n\t\tpendingToolCalls: [],\n\t\tusage: undefined\n\t};\n\n\tfor await (const chunk of stream) {\n\t\tif (signal.aborted) break;\n\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tawait consumeStreamChunk(\n\t\t\tchunk,\n\t\t\toptions,\n\t\t\tsocket,\n\t\t\tstate,\n\t\t\tmessageId,\n\t\t\tconversationId\n\t\t);\n\t}\n\n\treturn state;\n};\n\nexport const streamAI = async (\n\tsocket: AIWebSocket,\n\tconversationId: string,\n\tmessageId: string,\n\toptions: StreamAIOptions\n) => {\n\tconst signal = options.signal ?? new AbortController().signal;\n\tconst startTime = Date.now();\n\n\tconst messages: AIProviderMessage[] = options.messages\n\t\t? [...options.messages]\n\t\t: [];\n\n\ttry {\n\t\tawait processStream(\n\t\t\tsocket,\n\t\t\toptions,\n\t\t\tmessages,\n\t\t\tmessageId,\n\t\t\tconversationId,\n\t\t\tsignal,\n\t\t\tstartTime\n\t\t);\n\t} catch (err) {\n\t\tawait handleStreamError(\n\t\t\tsocket,\n\t\t\terr,\n\t\t\tmessageId,\n\t\t\tconversationId,\n\t\t\tsignal,\n\t\t\tstartTime\n\t\t);\n\t}\n};\n\nconst handleStreamError = async (\n\tsocket: AIWebSocket,\n\terr: unknown,\n\tmessageId: string,\n\tconversationId: string,\n\tsignal: AbortSignal,\n\tstartTime: number\n) => {\n\tif (signal.aborted) {\n\t\tawait sendComplete(\n\t\t\tsocket,\n\t\t\tmessageId,\n\t\t\tconversationId,\n\t\t\tundefined,\n\t\t\tDate.now() - startTime\n\t\t);\n\n\t\treturn;\n\t}\n\n\tawait sendError(socket, err, messageId, conversationId);\n};\n"
|
|
14
14
|
],
|
|
15
|
-
"mappings": "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",
|
|
16
|
-
"debugId": "
|
|
15
|
+
"mappings": "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",
|
|
16
|
+
"debugId": "AD9480D56C5B740864756E2164756E21",
|
|
17
17
|
"names": []
|
|
18
18
|
}
|
|
@@ -218,6 +218,12 @@ var handleContentBlockStart = (parsed, state) => {
|
|
|
218
218
|
state.currentToolId = getString(block, "id");
|
|
219
219
|
state.currentToolName = getString(block, "name");
|
|
220
220
|
state.toolInputJson = "";
|
|
221
|
+
state.isThinkingBlock = false;
|
|
222
|
+
} else if (block && block.type === "thinking") {
|
|
223
|
+
state.isThinkingBlock = true;
|
|
224
|
+
state.thinkingSignature = "";
|
|
225
|
+
} else {
|
|
226
|
+
state.isThinkingBlock = false;
|
|
221
227
|
}
|
|
222
228
|
};
|
|
223
229
|
var handleContentBlockDelta = (parsed, state) => {
|
|
@@ -240,9 +246,22 @@ var handleContentBlockDelta = (parsed, state) => {
|
|
|
240
246
|
if (delta.type === "input_json_delta") {
|
|
241
247
|
state.toolInputJson += getString(delta, "partial_json");
|
|
242
248
|
}
|
|
249
|
+
if (delta.type === "signature_delta") {
|
|
250
|
+
state.thinkingSignature += getString(delta, "signature");
|
|
251
|
+
}
|
|
243
252
|
return;
|
|
244
253
|
};
|
|
245
254
|
var handleContentBlockStop = (state) => {
|
|
255
|
+
if (state.isThinkingBlock && state.thinkingSignature) {
|
|
256
|
+
state.isThinkingBlock = false;
|
|
257
|
+
const signature = state.thinkingSignature;
|
|
258
|
+
state.thinkingSignature = "";
|
|
259
|
+
return {
|
|
260
|
+
content: "",
|
|
261
|
+
signature,
|
|
262
|
+
type: "thinking"
|
|
263
|
+
};
|
|
264
|
+
}
|
|
246
265
|
if (!state.currentToolId) {
|
|
247
266
|
return;
|
|
248
267
|
}
|
|
@@ -380,6 +399,8 @@ async function* parseSSEStream(body, signal) {
|
|
|
380
399
|
buffer: "",
|
|
381
400
|
currentToolId: "",
|
|
382
401
|
currentToolName: "",
|
|
402
|
+
isThinkingBlock: false,
|
|
403
|
+
thinkingSignature: "",
|
|
383
404
|
toolInputJson: "",
|
|
384
405
|
usage: undefined
|
|
385
406
|
};
|
|
@@ -420,5 +441,5 @@ export {
|
|
|
420
441
|
anthropic
|
|
421
442
|
};
|
|
422
443
|
|
|
423
|
-
//# debugId=
|
|
444
|
+
//# debugId=A79811A8C6AD72CA64756E2164756E21
|
|
424
445
|
//# sourceMappingURL=anthropic.js.map
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/ai/providers/anthropic.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type {\n\tAIChunk,\n\tAIProviderConfig,\n\tAIProviderContentBlock,\n\tAIProviderMessage,\n\tAIProviderStreamParams,\n\tAIProviderToolDefinition,\n\tAIUsage\n} from '../../../types/ai';\nimport type {\n\tAnthropicConfig,\n\tAnthropicMessage,\n\tAnthropicSSEState\n} from '../../../types/anthropic';\n\nconst DEFAULT_BASE_URL = 'https://api.anthropic.com';\nconst API_VERSION = '2023-06-01';\nconst MAX_TOKENS = 8192;\nconst EVENT_PREFIX_LENGTH = 7;\nconst DATA_PREFIX_LENGTH = 6;\n\nconst EMPTY_CHUNKS: AIChunk[] = [];\n\nconst isRecord = (val: unknown): val is Record<string, unknown> =>\n\ttypeof val === 'object' && val !== null;\n\nconst mapContentBlock = (block: AIProviderContentBlock) => {\n\tif (block.type === 'thinking') {\n\t\treturn {\n\t\t\tthinking: block.thinking,\n\t\t\ttype: 'thinking'\n\t\t};\n\t}\n\n\tif (block.type === 'image') {\n\t\treturn {\n\t\t\tsource: block.source,\n\t\t\ttype: 'image'\n\t\t};\n\t}\n\n\tif (block.type === 'document') {\n\t\treturn {\n\t\t\tsource: block.source,\n\t\t\ttype: 'document'\n\t\t};\n\t}\n\n\tif (block.type === 'tool_result') {\n\t\treturn {\n\t\t\tcontent: block.content,\n\t\t\ttool_use_id: block.tool_use_id,\n\t\t\ttype: 'tool_result'\n\t\t};\n\t}\n\n\tif (block.type === 'tool_use') {\n\t\treturn {\n\t\t\tid: block.id,\n\t\t\tinput: block.input,\n\t\t\tname: block.name,\n\t\t\ttype: 'tool_use'\n\t\t};\n\t}\n\n\treturn { text: block.content, type: 'text' };\n};\n\nconst mapMessage = (msg: AIProviderMessage): AnthropicMessage => ({\n\tcontent:\n\t\ttypeof msg.content === 'string'\n\t\t\t? msg.content\n\t\t\t: msg.content.map(mapContentBlock),\n\trole: msg.role === 'system' ? 'user' : msg.role\n});\n\nconst mapToolDefinition = (tool: AIProviderToolDefinition) => ({\n\tdescription: tool.description,\n\tinput_schema: tool.input_schema,\n\tname: tool.name\n});\n\nconst buildRequestBody = (params: AIProviderStreamParams) => {\n\tconst messages: AnthropicMessage[] = params.messages\n\t\t.filter((msg) => msg.role !== 'system')\n\t\t.map(mapMessage);\n\n\tconst body: Record<string, unknown> = {\n\t\tmax_tokens: MAX_TOKENS,\n\t\tmessages,\n\t\tmodel: params.model,\n\t\tstream: true\n\t};\n\n\tif (params.systemPrompt) {\n\t\tbody.system = params.systemPrompt;\n\t}\n\n\tif (params.tools && params.tools.length > 0) {\n\t\tbody.tools = params.tools.map(mapToolDefinition);\n\t}\n\n\tif (params.thinking) {\n\t\tbody.thinking = params.thinking;\n\t\t// When thinking is enabled, max_tokens must be higher\n\t\tbody.max_tokens = Math.max(\n\t\t\tMAX_TOKENS,\n\t\t\tparams.thinking.budget_tokens + MAX_TOKENS\n\t\t);\n\t}\n\n\treturn body;\n};\n\nconst classifyLine = (line: string) => {\n\tif (line.startsWith('event: ')) {\n\t\treturn {\n\t\t\tfield: 'event' as const,\n\t\t\tvalue: line.slice(EVENT_PREFIX_LENGTH)\n\t\t};\n\t}\n\n\tif (line.startsWith('data: ')) {\n\t\treturn {\n\t\t\tfield: 'data' as const,\n\t\t\tvalue: line.slice(DATA_PREFIX_LENGTH)\n\t\t};\n\t}\n\n\treturn undefined;\n};\n\nconst applyClassified = (\n\tacc: { eventData: string; eventType: string },\n\tclassified: { field: 'event' | 'data'; value: string } | undefined\n) => {\n\tif (!classified) {\n\t\treturn acc;\n\t}\n\n\tif (classified.field === 'event') {\n\t\treturn { eventData: acc.eventData, eventType: classified.value };\n\t}\n\n\treturn { eventData: classified.value, eventType: acc.eventType };\n};\n\nconst parseEventLines = (event: string) =>\n\tevent\n\t\t.split('\\n')\n\t\t.reduce((acc, line) => applyClassified(acc, classifyLine(line)), {\n\t\t\teventData: '',\n\t\t\teventType: ''\n\t\t});\n\nconst safeParse = (text: string) => {\n\ttry {\n\t\tconst result: unknown = JSON.parse(text);\n\n\t\treturn result;\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nconst tryParseJson = (text: string) => {\n\tconst result = safeParse(text);\n\n\tif (isRecord(result)) {\n\t\treturn result;\n\t}\n\n\treturn undefined;\n};\n\nconst getRecord = (obj: Record<string, unknown>, key: string) => {\n\tconst val = obj[key];\n\n\tif (isRecord(val)) {\n\t\treturn val;\n\t}\n\n\treturn undefined;\n};\n\nconst getString = (obj: Record<string, unknown>, key: string) => {\n\tconst val = obj[key];\n\n\tif (typeof val === 'string') {\n\t\treturn val;\n\t}\n\n\treturn '';\n};\n\nconst getNumber = (obj: Record<string, unknown>, key: string) => {\n\tconst val = obj[key];\n\n\tif (typeof val === 'number') {\n\t\treturn val;\n\t}\n\n\treturn 0;\n};\n\nconst handleContentBlockStart = (\n\tparsed: Record<string, unknown>,\n\tstate: AnthropicSSEState\n) => {\n\tconst block = getRecord(parsed, 'content_block');\n\n\tif (block && block.type === 'tool_use') {\n\t\tstate.currentToolId = getString(block, 'id');\n\t\tstate.currentToolName = getString(block, 'name');\n\t\tstate.toolInputJson = '';\n\t}\n};\n\nconst handleContentBlockDelta = (\n\tparsed: Record<string, unknown>,\n\tstate: AnthropicSSEState\n) => {\n\tconst delta = getRecord(parsed, 'delta');\n\n\tif (!delta) {\n\t\treturn undefined;\n\t}\n\n\tif (delta.type === 'thinking_delta') {\n\t\treturn {\n\t\t\tcontent: getString(delta, 'thinking'),\n\t\t\ttype: 'thinking'\n\t\t} satisfies AIChunk;\n\t}\n\n\tif (delta.type === 'text_delta') {\n\t\treturn {\n\t\t\tcontent: getString(delta, 'text'),\n\t\t\ttype: 'text'\n\t\t} satisfies AIChunk;\n\t}\n\n\tif (delta.type === 'input_json_delta') {\n\t\tstate.toolInputJson += getString(delta, 'partial_json');\n\t}\n\n\treturn undefined;\n};\n\nconst handleContentBlockStop = (state: AnthropicSSEState) => {\n\tif (!state.currentToolId) {\n\t\treturn undefined;\n\t}\n\n\tconst input = tryParseJson(state.toolInputJson) ?? state.toolInputJson;\n\n\tconst chunk: AIChunk = {\n\t\tid: state.currentToolId,\n\t\tinput,\n\t\tname: state.currentToolName,\n\t\ttype: 'tool_use'\n\t};\n\n\tstate.currentToolId = '';\n\tstate.currentToolName = '';\n\tstate.toolInputJson = '';\n\n\treturn chunk;\n};\n\nconst extractUsage = (\n\tusageRecord: Record<string, unknown> | undefined,\n\texistingUsage: AIUsage | undefined\n) => {\n\tif (!usageRecord) {\n\t\treturn existingUsage;\n\t}\n\n\treturn {\n\t\tinputTokens:\n\t\t\tgetNumber(usageRecord, 'input_tokens') ||\n\t\t\texistingUsage?.inputTokens ||\n\t\t\t0,\n\t\toutputTokens:\n\t\t\tgetNumber(usageRecord, 'output_tokens') ||\n\t\t\texistingUsage?.outputTokens ||\n\t\t\t0\n\t};\n};\n\nconst handleMessageDelta = (\n\tparsed: Record<string, unknown>,\n\tstate: AnthropicSSEState\n) => {\n\tconst deltaUsage = getRecord(parsed, 'usage');\n\tstate.usage = extractUsage(deltaUsage, state.usage);\n};\n\nconst handleMessageStart = (\n\tparsed: Record<string, unknown>,\n\tstate: AnthropicSSEState\n) => {\n\tconst message = getRecord(parsed, 'message');\n\n\tif (!message) {\n\t\treturn;\n\t}\n\n\tconst startUsage = getRecord(message, 'usage');\n\tstate.usage = extractUsage(startUsage, state.usage);\n};\n\nconst handleError = (parsed: Record<string, unknown>) => {\n\tconst error = getRecord(parsed, 'error');\n\tconst errorMessage = error ? getString(error, 'message') : '';\n\n\tthrow new Error(errorMessage || 'Anthropic API error');\n};\n\nconst processEvent = (\n\teventType: string,\n\tparsed: Record<string, unknown>,\n\tstate: AnthropicSSEState\n) => {\n\tswitch (eventType) {\n\t\tcase 'content_block_start': {\n\t\t\thandleContentBlockStart(parsed, state);\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tcase 'content_block_delta': {\n\t\t\treturn handleContentBlockDelta(parsed, state);\n\t\t}\n\n\t\tcase 'content_block_stop': {\n\t\t\treturn handleContentBlockStop(state);\n\t\t}\n\n\t\tcase 'message_delta': {\n\t\t\thandleMessageDelta(parsed, state);\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tcase 'message_start': {\n\t\t\thandleMessageStart(parsed, state);\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tcase 'message_stop': {\n\t\t\treturn { type: 'done' as const, usage: state.usage };\n\t\t}\n\n\t\tcase 'error': {\n\t\t\thandleError(parsed);\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn undefined;\n\t\t}\n\t}\n};\n\nconst processSingleEvent = (event: string, state: AnthropicSSEState) => {\n\tif (!event.trim()) {\n\t\treturn undefined;\n\t}\n\n\tconst { eventData, eventType } = parseEventLines(event);\n\n\tif (!eventData) {\n\t\treturn undefined;\n\t}\n\n\tconst parsed = tryParseJson(eventData);\n\n\tif (!parsed) {\n\t\treturn undefined;\n\t}\n\n\treturn processEvent(eventType, parsed, state);\n};\n\nconst collectChunk = (event: string, state: AnthropicSSEState) => {\n\tconst chunk = processSingleEvent(event, state);\n\n\treturn chunk ? [chunk] : [];\n};\n\nconst processBufferedEvents = (\n\teventsText: string,\n\tstate: AnthropicSSEState\n) => {\n\tconst events = eventsText.split('\\n\\n');\n\tstate.buffer = events.pop() ?? '';\n\n\treturn events.flatMap((event) => collectChunk(event, state));\n};\n\nconst readNextChunks = async (\n\treader: ReadableStreamDefaultReader<Uint8Array>,\n\tdecoder: TextDecoder,\n\tstate: AnthropicSSEState,\n\tsignal?: AbortSignal\n) => {\n\tif (signal?.aborted) {\n\t\treturn { chunks: EMPTY_CHUNKS, done: true };\n\t}\n\n\tconst { done, value } = await reader.read();\n\n\tif (done) {\n\t\treturn { chunks: EMPTY_CHUNKS, done: true };\n\t}\n\n\tconst rawText = state.buffer + decoder.decode(value, { stream: true });\n\tconst chunks = processBufferedEvents(rawText, state);\n\n\treturn { chunks, done: false };\n};\n\nconst findDoneChunk = (chunks: AIChunk[]) =>\n\tchunks.findIndex((c) => c.type === 'done');\n\nconst sseStreamLoop = async (\n\treader: ReadableStreamDefaultReader<Uint8Array>,\n\tdecoder: TextDecoder,\n\tstate: AnthropicSSEState,\n\tsignal?: AbortSignal\n) => {\n\tconst result = await readNextChunks(reader, decoder, state, signal);\n\n\tif (result.done) {\n\t\treturn { chunks: result.chunks, finished: true };\n\t}\n\n\tconst doneIdx = findDoneChunk(result.chunks);\n\n\tif (doneIdx >= 0) {\n\t\treturn { chunks: result.chunks.slice(0, doneIdx + 1), finished: true };\n\t}\n\n\treturn { chunks: result.chunks, finished: false };\n};\n\n// eslint-disable-next-line func-style\nasync function* streamChunks(\n\treader: ReadableStreamDefaultReader<Uint8Array>,\n\tdecoder: TextDecoder,\n\tstate: AnthropicSSEState,\n\tsignal?: AbortSignal\n) {\n\tlet finished = false;\n\n\twhile (!finished) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst result = await sseStreamLoop(reader, decoder, state, signal);\n\t\t({ finished } = result);\n\t\tyield* result.chunks;\n\t}\n}\n\n// eslint-disable-next-line func-style\nasync function* parseSSEStream(\n\tbody: ReadableStream<Uint8Array>,\n\tsignal?: AbortSignal\n) {\n\tconst reader = body.getReader();\n\tconst decoder = new TextDecoder();\n\n\tconst state: AnthropicSSEState = {\n\t\tbuffer: '',\n\t\tcurrentToolId: '',\n\t\tcurrentToolName: '',\n\t\ttoolInputJson: '',\n\t\tusage: undefined\n\t};\n\n\ttry {\n\t\tyield* streamChunks(reader, decoder, state, signal);\n\t} finally {\n\t\treader.releaseLock();\n\t}\n}\n\nconst fetchAndStream = async function* (\n\tbaseUrl: string,\n\tconfig: AnthropicConfig,\n\tparams: AIProviderStreamParams\n) {\n\tconst body = buildRequestBody(params);\n\n\tconst response = await fetch(`${baseUrl}/v1/messages`, {\n\t\tbody: JSON.stringify(body),\n\t\theaders: {\n\t\t\t'anthropic-version': API_VERSION,\n\t\t\t'Content-Type': 'application/json',\n\t\t\t'x-api-key': config.apiKey\n\t\t},\n\t\tmethod: 'POST',\n\t\tsignal: params.signal\n\t});\n\n\tif (!response.ok) {\n\t\tconst errorText = await response.text();\n\n\t\tthrow new Error(`Anthropic API error ${response.status}: ${errorText}`);\n\t}\n\n\tif (!response.body) {\n\t\tthrow new Error('Anthropic API returned no response body');\n\t}\n\n\tyield* parseSSEStream(response.body, params.signal);\n};\n\nexport const anthropic = (config: AnthropicConfig): AIProviderConfig => {\n\tconst baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n\n\treturn {\n\t\tstream: (params: AIProviderStreamParams) =>\n\t\t\tfetchAndStream(baseUrl, config, params)\n\t};\n};\n"
|
|
5
|
+
"import type {\n\tAIChunk,\n\tAIProviderConfig,\n\tAIProviderContentBlock,\n\tAIProviderMessage,\n\tAIProviderStreamParams,\n\tAIProviderToolDefinition,\n\tAIUsage\n} from '../../../types/ai';\nimport type {\n\tAnthropicConfig,\n\tAnthropicMessage,\n\tAnthropicSSEState\n} from '../../../types/anthropic';\n\nconst DEFAULT_BASE_URL = 'https://api.anthropic.com';\nconst API_VERSION = '2023-06-01';\nconst MAX_TOKENS = 8192;\nconst EVENT_PREFIX_LENGTH = 7;\nconst DATA_PREFIX_LENGTH = 6;\n\nconst EMPTY_CHUNKS: AIChunk[] = [];\n\nconst isRecord = (val: unknown): val is Record<string, unknown> =>\n\ttypeof val === 'object' && val !== null;\n\nconst mapContentBlock = (block: AIProviderContentBlock) => {\n\tif (block.type === 'thinking') {\n\t\treturn {\n\t\t\tthinking: block.thinking,\n\t\t\ttype: 'thinking'\n\t\t};\n\t}\n\n\tif (block.type === 'image') {\n\t\treturn {\n\t\t\tsource: block.source,\n\t\t\ttype: 'image'\n\t\t};\n\t}\n\n\tif (block.type === 'document') {\n\t\treturn {\n\t\t\tsource: block.source,\n\t\t\ttype: 'document'\n\t\t};\n\t}\n\n\tif (block.type === 'tool_result') {\n\t\treturn {\n\t\t\tcontent: block.content,\n\t\t\ttool_use_id: block.tool_use_id,\n\t\t\ttype: 'tool_result'\n\t\t};\n\t}\n\n\tif (block.type === 'tool_use') {\n\t\treturn {\n\t\t\tid: block.id,\n\t\t\tinput: block.input,\n\t\t\tname: block.name,\n\t\t\ttype: 'tool_use'\n\t\t};\n\t}\n\n\treturn { text: block.content, type: 'text' };\n};\n\nconst mapMessage = (msg: AIProviderMessage): AnthropicMessage => ({\n\tcontent:\n\t\ttypeof msg.content === 'string'\n\t\t\t? msg.content\n\t\t\t: msg.content.map(mapContentBlock),\n\trole: msg.role === 'system' ? 'user' : msg.role\n});\n\nconst mapToolDefinition = (tool: AIProviderToolDefinition) => ({\n\tdescription: tool.description,\n\tinput_schema: tool.input_schema,\n\tname: tool.name\n});\n\nconst buildRequestBody = (params: AIProviderStreamParams) => {\n\tconst messages: AnthropicMessage[] = params.messages\n\t\t.filter((msg) => msg.role !== 'system')\n\t\t.map(mapMessage);\n\n\tconst body: Record<string, unknown> = {\n\t\tmax_tokens: MAX_TOKENS,\n\t\tmessages,\n\t\tmodel: params.model,\n\t\tstream: true\n\t};\n\n\tif (params.systemPrompt) {\n\t\tbody.system = params.systemPrompt;\n\t}\n\n\tif (params.tools && params.tools.length > 0) {\n\t\tbody.tools = params.tools.map(mapToolDefinition);\n\t}\n\n\tif (params.thinking) {\n\t\tbody.thinking = params.thinking;\n\t\t// When thinking is enabled, max_tokens must be higher\n\t\tbody.max_tokens = Math.max(\n\t\t\tMAX_TOKENS,\n\t\t\tparams.thinking.budget_tokens + MAX_TOKENS\n\t\t);\n\t}\n\n\treturn body;\n};\n\nconst classifyLine = (line: string) => {\n\tif (line.startsWith('event: ')) {\n\t\treturn {\n\t\t\tfield: 'event' as const,\n\t\t\tvalue: line.slice(EVENT_PREFIX_LENGTH)\n\t\t};\n\t}\n\n\tif (line.startsWith('data: ')) {\n\t\treturn {\n\t\t\tfield: 'data' as const,\n\t\t\tvalue: line.slice(DATA_PREFIX_LENGTH)\n\t\t};\n\t}\n\n\treturn undefined;\n};\n\nconst applyClassified = (\n\tacc: { eventData: string; eventType: string },\n\tclassified: { field: 'event' | 'data'; value: string } | undefined\n) => {\n\tif (!classified) {\n\t\treturn acc;\n\t}\n\n\tif (classified.field === 'event') {\n\t\treturn { eventData: acc.eventData, eventType: classified.value };\n\t}\n\n\treturn { eventData: classified.value, eventType: acc.eventType };\n};\n\nconst parseEventLines = (event: string) =>\n\tevent\n\t\t.split('\\n')\n\t\t.reduce((acc, line) => applyClassified(acc, classifyLine(line)), {\n\t\t\teventData: '',\n\t\t\teventType: ''\n\t\t});\n\nconst safeParse = (text: string) => {\n\ttry {\n\t\tconst result: unknown = JSON.parse(text);\n\n\t\treturn result;\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nconst tryParseJson = (text: string) => {\n\tconst result = safeParse(text);\n\n\tif (isRecord(result)) {\n\t\treturn result;\n\t}\n\n\treturn undefined;\n};\n\nconst getRecord = (obj: Record<string, unknown>, key: string) => {\n\tconst val = obj[key];\n\n\tif (isRecord(val)) {\n\t\treturn val;\n\t}\n\n\treturn undefined;\n};\n\nconst getString = (obj: Record<string, unknown>, key: string) => {\n\tconst val = obj[key];\n\n\tif (typeof val === 'string') {\n\t\treturn val;\n\t}\n\n\treturn '';\n};\n\nconst getNumber = (obj: Record<string, unknown>, key: string) => {\n\tconst val = obj[key];\n\n\tif (typeof val === 'number') {\n\t\treturn val;\n\t}\n\n\treturn 0;\n};\n\nconst handleContentBlockStart = (\n\tparsed: Record<string, unknown>,\n\tstate: AnthropicSSEState\n) => {\n\tconst block = getRecord(parsed, 'content_block');\n\n\tif (block && block.type === 'tool_use') {\n\t\tstate.currentToolId = getString(block, 'id');\n\t\tstate.currentToolName = getString(block, 'name');\n\t\tstate.toolInputJson = '';\n\t\tstate.isThinkingBlock = false;\n\t} else if (block && block.type === 'thinking') {\n\t\tstate.isThinkingBlock = true;\n\t\tstate.thinkingSignature = '';\n\t} else {\n\t\tstate.isThinkingBlock = false;\n\t}\n};\n\nconst handleContentBlockDelta = (\n\tparsed: Record<string, unknown>,\n\tstate: AnthropicSSEState\n) => {\n\tconst delta = getRecord(parsed, 'delta');\n\n\tif (!delta) {\n\t\treturn undefined;\n\t}\n\n\tif (delta.type === 'thinking_delta') {\n\t\treturn {\n\t\t\tcontent: getString(delta, 'thinking'),\n\t\t\ttype: 'thinking'\n\t\t} satisfies AIChunk;\n\t}\n\n\tif (delta.type === 'text_delta') {\n\t\treturn {\n\t\t\tcontent: getString(delta, 'text'),\n\t\t\ttype: 'text'\n\t\t} satisfies AIChunk;\n\t}\n\n\tif (delta.type === 'input_json_delta') {\n\t\tstate.toolInputJson += getString(delta, 'partial_json');\n\t}\n\n\tif (delta.type === 'signature_delta') {\n\t\tstate.thinkingSignature += getString(delta, 'signature');\n\t}\n\n\treturn undefined;\n};\n\nconst handleContentBlockStop = (state: AnthropicSSEState) => {\n\t// Emit thinking signature when thinking block completes\n\tif (state.isThinkingBlock && state.thinkingSignature) {\n\t\tstate.isThinkingBlock = false;\n\t\tconst signature = state.thinkingSignature;\n\t\tstate.thinkingSignature = '';\n\n\t\treturn {\n\t\t\tcontent: '',\n\t\t\tsignature,\n\t\t\ttype: 'thinking'\n\t\t} satisfies AIChunk;\n\t}\n\n\tif (!state.currentToolId) {\n\t\treturn undefined;\n\t}\n\n\tconst input = tryParseJson(state.toolInputJson) ?? state.toolInputJson;\n\n\tconst chunk: AIChunk = {\n\t\tid: state.currentToolId,\n\t\tinput,\n\t\tname: state.currentToolName,\n\t\ttype: 'tool_use'\n\t};\n\n\tstate.currentToolId = '';\n\tstate.currentToolName = '';\n\tstate.toolInputJson = '';\n\n\treturn chunk;\n};\n\nconst extractUsage = (\n\tusageRecord: Record<string, unknown> | undefined,\n\texistingUsage: AIUsage | undefined\n) => {\n\tif (!usageRecord) {\n\t\treturn existingUsage;\n\t}\n\n\treturn {\n\t\tinputTokens:\n\t\t\tgetNumber(usageRecord, 'input_tokens') ||\n\t\t\texistingUsage?.inputTokens ||\n\t\t\t0,\n\t\toutputTokens:\n\t\t\tgetNumber(usageRecord, 'output_tokens') ||\n\t\t\texistingUsage?.outputTokens ||\n\t\t\t0\n\t};\n};\n\nconst handleMessageDelta = (\n\tparsed: Record<string, unknown>,\n\tstate: AnthropicSSEState\n) => {\n\tconst deltaUsage = getRecord(parsed, 'usage');\n\tstate.usage = extractUsage(deltaUsage, state.usage);\n};\n\nconst handleMessageStart = (\n\tparsed: Record<string, unknown>,\n\tstate: AnthropicSSEState\n) => {\n\tconst message = getRecord(parsed, 'message');\n\n\tif (!message) {\n\t\treturn;\n\t}\n\n\tconst startUsage = getRecord(message, 'usage');\n\tstate.usage = extractUsage(startUsage, state.usage);\n};\n\nconst handleError = (parsed: Record<string, unknown>) => {\n\tconst error = getRecord(parsed, 'error');\n\tconst errorMessage = error ? getString(error, 'message') : '';\n\n\tthrow new Error(errorMessage || 'Anthropic API error');\n};\n\nconst processEvent = (\n\teventType: string,\n\tparsed: Record<string, unknown>,\n\tstate: AnthropicSSEState\n) => {\n\tswitch (eventType) {\n\t\tcase 'content_block_start': {\n\t\t\thandleContentBlockStart(parsed, state);\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tcase 'content_block_delta': {\n\t\t\treturn handleContentBlockDelta(parsed, state);\n\t\t}\n\n\t\tcase 'content_block_stop': {\n\t\t\treturn handleContentBlockStop(state);\n\t\t}\n\n\t\tcase 'message_delta': {\n\t\t\thandleMessageDelta(parsed, state);\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tcase 'message_start': {\n\t\t\thandleMessageStart(parsed, state);\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tcase 'message_stop': {\n\t\t\treturn { type: 'done' as const, usage: state.usage };\n\t\t}\n\n\t\tcase 'error': {\n\t\t\thandleError(parsed);\n\n\t\t\treturn undefined;\n\t\t}\n\n\t\tdefault: {\n\t\t\treturn undefined;\n\t\t}\n\t}\n};\n\nconst processSingleEvent = (event: string, state: AnthropicSSEState) => {\n\tif (!event.trim()) {\n\t\treturn undefined;\n\t}\n\n\tconst { eventData, eventType } = parseEventLines(event);\n\n\tif (!eventData) {\n\t\treturn undefined;\n\t}\n\n\tconst parsed = tryParseJson(eventData);\n\n\tif (!parsed) {\n\t\treturn undefined;\n\t}\n\n\treturn processEvent(eventType, parsed, state);\n};\n\nconst collectChunk = (event: string, state: AnthropicSSEState) => {\n\tconst chunk = processSingleEvent(event, state);\n\n\treturn chunk ? [chunk] : [];\n};\n\nconst processBufferedEvents = (\n\teventsText: string,\n\tstate: AnthropicSSEState\n) => {\n\tconst events = eventsText.split('\\n\\n');\n\tstate.buffer = events.pop() ?? '';\n\n\treturn events.flatMap((event) => collectChunk(event, state));\n};\n\nconst readNextChunks = async (\n\treader: ReadableStreamDefaultReader<Uint8Array>,\n\tdecoder: TextDecoder,\n\tstate: AnthropicSSEState,\n\tsignal?: AbortSignal\n) => {\n\tif (signal?.aborted) {\n\t\treturn { chunks: EMPTY_CHUNKS, done: true };\n\t}\n\n\tconst { done, value } = await reader.read();\n\n\tif (done) {\n\t\treturn { chunks: EMPTY_CHUNKS, done: true };\n\t}\n\n\tconst rawText = state.buffer + decoder.decode(value, { stream: true });\n\tconst chunks = processBufferedEvents(rawText, state);\n\n\treturn { chunks, done: false };\n};\n\nconst findDoneChunk = (chunks: AIChunk[]) =>\n\tchunks.findIndex((c) => c.type === 'done');\n\nconst sseStreamLoop = async (\n\treader: ReadableStreamDefaultReader<Uint8Array>,\n\tdecoder: TextDecoder,\n\tstate: AnthropicSSEState,\n\tsignal?: AbortSignal\n) => {\n\tconst result = await readNextChunks(reader, decoder, state, signal);\n\n\tif (result.done) {\n\t\treturn { chunks: result.chunks, finished: true };\n\t}\n\n\tconst doneIdx = findDoneChunk(result.chunks);\n\n\tif (doneIdx >= 0) {\n\t\treturn { chunks: result.chunks.slice(0, doneIdx + 1), finished: true };\n\t}\n\n\treturn { chunks: result.chunks, finished: false };\n};\n\n// eslint-disable-next-line func-style\nasync function* streamChunks(\n\treader: ReadableStreamDefaultReader<Uint8Array>,\n\tdecoder: TextDecoder,\n\tstate: AnthropicSSEState,\n\tsignal?: AbortSignal\n) {\n\tlet finished = false;\n\n\twhile (!finished) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst result = await sseStreamLoop(reader, decoder, state, signal);\n\t\t({ finished } = result);\n\t\tyield* result.chunks;\n\t}\n}\n\n// eslint-disable-next-line func-style\nasync function* parseSSEStream(\n\tbody: ReadableStream<Uint8Array>,\n\tsignal?: AbortSignal\n) {\n\tconst reader = body.getReader();\n\tconst decoder = new TextDecoder();\n\n\tconst state: AnthropicSSEState = {\n\t\tbuffer: '',\n\t\tcurrentToolId: '',\n\t\tcurrentToolName: '',\n\t\tisThinkingBlock: false,\n\t\tthinkingSignature: '',\n\t\ttoolInputJson: '',\n\t\tusage: undefined\n\t};\n\n\ttry {\n\t\tyield* streamChunks(reader, decoder, state, signal);\n\t} finally {\n\t\treader.releaseLock();\n\t}\n}\n\nconst fetchAndStream = async function* (\n\tbaseUrl: string,\n\tconfig: AnthropicConfig,\n\tparams: AIProviderStreamParams\n) {\n\tconst body = buildRequestBody(params);\n\n\tconst response = await fetch(`${baseUrl}/v1/messages`, {\n\t\tbody: JSON.stringify(body),\n\t\theaders: {\n\t\t\t'anthropic-version': API_VERSION,\n\t\t\t'Content-Type': 'application/json',\n\t\t\t'x-api-key': config.apiKey\n\t\t},\n\t\tmethod: 'POST',\n\t\tsignal: params.signal\n\t});\n\n\tif (!response.ok) {\n\t\tconst errorText = await response.text();\n\n\t\tthrow new Error(`Anthropic API error ${response.status}: ${errorText}`);\n\t}\n\n\tif (!response.body) {\n\t\tthrow new Error('Anthropic API returned no response body');\n\t}\n\n\tyield* parseSSEStream(response.body, params.signal);\n};\n\nexport const anthropic = (config: AnthropicConfig): AIProviderConfig => {\n\tconst baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n\n\treturn {\n\t\tstream: (params: AIProviderStreamParams) =>\n\t\t\tfetchAndStream(baseUrl, config, params)\n\t};\n};\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "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
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "A79811A8C6AD72CA64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|