@agent-native/core 0.22.5 → 0.22.8

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.
Files changed (172) hide show
  1. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  2. package/dist/agent/engine/builder-engine.js +4 -2
  3. package/dist/agent/engine/builder-engine.js.map +1 -1
  4. package/dist/agent/engine/builder-gateway-headers.d.ts +10 -0
  5. package/dist/agent/engine/builder-gateway-headers.d.ts.map +1 -0
  6. package/dist/agent/engine/builder-gateway-headers.js +42 -0
  7. package/dist/agent/engine/builder-gateway-headers.js.map +1 -0
  8. package/dist/agent/engine/index.d.ts +1 -1
  9. package/dist/agent/engine/index.d.ts.map +1 -1
  10. package/dist/agent/engine/index.js +1 -1
  11. package/dist/agent/engine/index.js.map +1 -1
  12. package/dist/agent/engine/registry.d.ts +1 -0
  13. package/dist/agent/engine/registry.d.ts.map +1 -1
  14. package/dist/agent/engine/registry.js +51 -0
  15. package/dist/agent/engine/registry.js.map +1 -1
  16. package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -1
  17. package/dist/agent/engine/translate-ai-sdk.js +3 -2
  18. package/dist/agent/engine/translate-ai-sdk.js.map +1 -1
  19. package/dist/agent/engine/translate-anthropic.d.ts +38 -2
  20. package/dist/agent/engine/translate-anthropic.d.ts.map +1 -1
  21. package/dist/agent/engine/translate-anthropic.js +221 -6
  22. package/dist/agent/engine/translate-anthropic.js.map +1 -1
  23. package/dist/agent/engine/types.d.ts +4 -2
  24. package/dist/agent/engine/types.d.ts.map +1 -1
  25. package/dist/agent/engine/types.js.map +1 -1
  26. package/dist/agent/production-agent.d.ts.map +1 -1
  27. package/dist/agent/production-agent.js +69 -9
  28. package/dist/agent/production-agent.js.map +1 -1
  29. package/dist/agent/types.d.ts +2 -0
  30. package/dist/agent/types.d.ts.map +1 -1
  31. package/dist/agent/types.js.map +1 -1
  32. package/dist/cli/connect.d.ts +1 -1
  33. package/dist/cli/connect.d.ts.map +1 -1
  34. package/dist/cli/connect.js +5 -2
  35. package/dist/cli/connect.js.map +1 -1
  36. package/dist/cli/create.d.ts.map +1 -1
  37. package/dist/cli/create.js +48 -6
  38. package/dist/cli/create.js.map +1 -1
  39. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  40. package/dist/client/MultiTabAssistantChat.js +4 -3
  41. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  42. package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
  43. package/dist/client/NewWorkspaceAppFlow.js +1 -0
  44. package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
  45. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  46. package/dist/client/agent-chat-adapter.js +11 -5
  47. package/dist/client/agent-chat-adapter.js.map +1 -1
  48. package/dist/client/api-path.d.ts.map +1 -1
  49. package/dist/client/api-path.js +2 -0
  50. package/dist/client/api-path.js.map +1 -1
  51. package/dist/client/embed-auth.d.ts +4 -0
  52. package/dist/client/embed-auth.d.ts.map +1 -0
  53. package/dist/client/embed-auth.js +102 -0
  54. package/dist/client/embed-auth.js.map +1 -0
  55. package/dist/client/index.d.ts +1 -0
  56. package/dist/client/index.d.ts.map +1 -1
  57. package/dist/client/index.js +1 -0
  58. package/dist/client/index.js.map +1 -1
  59. package/dist/client/mcp-apps/McpAppRenderer.js +6 -1
  60. package/dist/client/mcp-apps/McpAppRenderer.js.map +1 -1
  61. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  62. package/dist/client/settings/SettingsPanel.js +7 -3
  63. package/dist/client/settings/SettingsPanel.js.map +1 -1
  64. package/dist/client/use-action.d.ts.map +1 -1
  65. package/dist/client/use-action.js +2 -0
  66. package/dist/client/use-action.js.map +1 -1
  67. package/dist/client/use-chat-models.d.ts.map +1 -1
  68. package/dist/client/use-chat-models.js +4 -3
  69. package/dist/client/use-chat-models.js.map +1 -1
  70. package/dist/client/use-db-sync.d.ts.map +1 -1
  71. package/dist/client/use-db-sync.js +4 -0
  72. package/dist/client/use-db-sync.js.map +1 -1
  73. package/dist/deploy/route-discovery.js +1 -1
  74. package/dist/deploy/route-discovery.js.map +1 -1
  75. package/dist/index.browser.d.ts +1 -0
  76. package/dist/index.browser.d.ts.map +1 -1
  77. package/dist/index.browser.js +1 -0
  78. package/dist/index.browser.js.map +1 -1
  79. package/dist/index.d.ts +2 -0
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +2 -0
  82. package/dist/index.js.map +1 -1
  83. package/dist/mcp/build-server.d.ts.map +1 -1
  84. package/dist/mcp/build-server.js +49 -21
  85. package/dist/mcp/build-server.js.map +1 -1
  86. package/dist/mcp/builtin-tools.d.ts +1 -0
  87. package/dist/mcp/builtin-tools.d.ts.map +1 -1
  88. package/dist/mcp/builtin-tools.js +151 -9
  89. package/dist/mcp/builtin-tools.js.map +1 -1
  90. package/dist/mcp/connect-route.d.ts.map +1 -1
  91. package/dist/mcp/connect-route.js +79 -51
  92. package/dist/mcp/connect-route.js.map +1 -1
  93. package/dist/mcp/embed-app.d.ts +14 -0
  94. package/dist/mcp/embed-app.d.ts.map +1 -0
  95. package/dist/mcp/embed-app.js +191 -0
  96. package/dist/mcp/embed-app.js.map +1 -0
  97. package/dist/mcp/index.d.ts +1 -0
  98. package/dist/mcp/index.d.ts.map +1 -1
  99. package/dist/mcp/index.js +1 -0
  100. package/dist/mcp/index.js.map +1 -1
  101. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
  102. package/dist/scripts/agent-engines/list-agent-engines.js +2 -1
  103. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  104. package/dist/scripts/agent-engines/manage-agent-engine.d.ts.map +1 -1
  105. package/dist/scripts/agent-engines/manage-agent-engine.js +4 -1
  106. package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -1
  107. package/dist/scripts/agent-engines/set-agent-engine.d.ts.map +1 -1
  108. package/dist/scripts/agent-engines/set-agent-engine.js +4 -1
  109. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
  110. package/dist/server/action-discovery.d.ts.map +1 -1
  111. package/dist/server/action-discovery.js +10 -1
  112. package/dist/server/action-discovery.js.map +1 -1
  113. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  114. package/dist/server/agent-chat-plugin.js +9 -1
  115. package/dist/server/agent-chat-plugin.js.map +1 -1
  116. package/dist/server/auth.d.ts +7 -6
  117. package/dist/server/auth.d.ts.map +1 -1
  118. package/dist/server/auth.js +28 -13
  119. package/dist/server/auth.js.map +1 -1
  120. package/dist/server/core-routes-plugin.d.ts +2 -0
  121. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  122. package/dist/server/core-routes-plugin.js +7 -0
  123. package/dist/server/core-routes-plugin.js.map +1 -1
  124. package/dist/server/embed-route.d.ts +8 -0
  125. package/dist/server/embed-route.d.ts.map +1 -0
  126. package/dist/server/embed-route.js +71 -0
  127. package/dist/server/embed-route.js.map +1 -0
  128. package/dist/server/embed-session.d.ts +65 -0
  129. package/dist/server/embed-session.d.ts.map +1 -0
  130. package/dist/server/embed-session.js +433 -0
  131. package/dist/server/embed-session.js.map +1 -0
  132. package/dist/server/index.d.ts +2 -0
  133. package/dist/server/index.d.ts.map +1 -1
  134. package/dist/server/index.js +2 -0
  135. package/dist/server/index.js.map +1 -1
  136. package/dist/server/open-route.d.ts.map +1 -1
  137. package/dist/server/open-route.js +10 -0
  138. package/dist/server/open-route.js.map +1 -1
  139. package/dist/server/security-headers.d.ts.map +1 -1
  140. package/dist/server/security-headers.js +4 -2
  141. package/dist/server/security-headers.js.map +1 -1
  142. package/dist/shared/embed-auth.d.ts +6 -0
  143. package/dist/shared/embed-auth.d.ts.map +1 -0
  144. package/dist/shared/embed-auth.js +6 -0
  145. package/dist/shared/embed-auth.js.map +1 -0
  146. package/dist/shared/index.d.ts +1 -0
  147. package/dist/shared/index.d.ts.map +1 -1
  148. package/dist/shared/index.js +1 -0
  149. package/dist/shared/index.js.map +1 -1
  150. package/dist/templates/workspace-core/AGENTS.md +14 -5
  151. package/dist/templates/workspace-root/AGENTS.md +5 -0
  152. package/dist/templates/workspace-root/README.md +3 -0
  153. package/dist/vite/action-types-plugin.d.ts.map +1 -1
  154. package/dist/vite/action-types-plugin.js +10 -1
  155. package/dist/vite/action-types-plugin.js.map +1 -1
  156. package/docs/content/a2a-protocol.md +5 -1
  157. package/docs/content/actions.md +25 -10
  158. package/docs/content/cli-adapters.md +5 -0
  159. package/docs/content/client.md +35 -1
  160. package/docs/content/database.md +29 -0
  161. package/docs/content/dispatch.md +7 -1
  162. package/docs/content/external-agents.md +53 -24
  163. package/docs/content/mcp-protocol.md +1 -1
  164. package/docs/content/messaging.md +1 -1
  165. package/docs/content/onboarding.md +26 -0
  166. package/docs/content/template-content.md +1 -1
  167. package/docs/content/template-dispatch.md +9 -0
  168. package/docs/content/template-starter.md +2 -2
  169. package/package.json +1 -1
  170. package/src/templates/workspace-core/AGENTS.md +14 -5
  171. package/src/templates/workspace-root/AGENTS.md +5 -0
  172. package/src/templates/workspace-root/README.md +3 -0
@@ -1 +1 @@
1
- {"version":3,"file":"translate-anthropic.js","sourceRoot":"","sources":["../../../src/agent/engine/translate-anthropic.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Translation helpers between the AgentEngine normalized types and\n * @anthropic-ai/sdk's wire types.\n *\n * AnthropicEngine does very little translation because the framework's\n * EngineMessage / EngineTool shapes were modeled on Anthropic's types.\n * The main differences are: camelCase vs snake_case, and that\n * Anthropic uses `input_schema` while we use `inputSchema`.\n */\n\nimport type Anthropic from \"@anthropic-ai/sdk\";\nimport type {\n EngineTool,\n EngineMessage,\n EngineContentPart,\n EngineEvent,\n} from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// EngineTool → Anthropic.Tool\n// ---------------------------------------------------------------------------\n\nexport function engineToolToAnthropic(tool: EngineTool): Anthropic.Tool {\n return {\n name: tool.name,\n description: tool.description,\n input_schema: tool.inputSchema as Anthropic.Tool[\"input_schema\"],\n };\n}\n\nexport function engineToolsToAnthropic(tools: EngineTool[]): Anthropic.Tool[] {\n return tools.map(engineToolToAnthropic);\n}\n\n// ---------------------------------------------------------------------------\n// EngineMessage → Anthropic.MessageParam\n// ---------------------------------------------------------------------------\n\nexport function engineMessageToAnthropic(\n msg: EngineMessage,\n): Anthropic.MessageParam {\n return {\n role: msg.role,\n content: msg.content.map(enginePartToAnthropic),\n };\n}\n\nexport function engineMessagesToAnthropic(\n messages: EngineMessage[],\n): Anthropic.MessageParam[] {\n return messages.map(engineMessageToAnthropic);\n}\n\nfunction enginePartToAnthropic(\n part: EngineContentPart,\n): Anthropic.ContentBlockParam {\n switch (part.type) {\n case \"text\":\n return { type: \"text\", text: part.text };\n\n case \"image\":\n return {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: part.mediaType,\n data: part.data,\n },\n };\n\n case \"file\":\n if (part.mediaType === \"application/pdf\") {\n return {\n type: \"document\",\n source: {\n type: \"base64\",\n media_type: \"application/pdf\",\n data: part.data,\n },\n ...(part.filename ? { title: part.filename } : {}),\n } as any;\n }\n return {\n type: \"text\",\n text: `[Attached file: ${part.filename ?? \"attachment\"} (${part.mediaType})]`,\n };\n\n case \"tool-call\":\n return {\n type: \"tool_use\",\n id: part.id,\n name: part.name,\n input: part.input as Record<string, unknown>,\n } as any; // tool_use is a ContentBlockParam in Anthropic SDK\n\n case \"tool-result\":\n return {\n type: \"tool_result\",\n tool_use_id: part.toolCallId,\n content: part.content,\n ...(part.isError ? { is_error: true } : {}),\n } as any;\n\n case \"thinking\":\n // Anthropic thinking blocks — pass through with signature for context window continuity\n return {\n type: \"thinking\",\n thinking: part.text,\n signature: part.signature ?? \"\",\n } as any;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Anthropic.ContentBlock → EngineContentPart (from final message)\n// ---------------------------------------------------------------------------\n\nexport function anthropicContentToEngine(\n content: Anthropic.ContentBlock[],\n): EngineContentPart[] {\n return content\n .map((block) => {\n if (block.type === \"text\") {\n return { type: \"text\" as const, text: block.text };\n }\n if (block.type === \"tool_use\") {\n return {\n type: \"tool-call\" as const,\n id: block.id,\n name: block.name,\n input: block.input,\n };\n }\n if ((block as any).type === \"thinking\") {\n const b = block as any;\n return {\n type: \"thinking\" as const,\n text: b.thinking ?? \"\",\n signature: b.signature,\n };\n }\n // Unknown block type — skip\n return { type: \"text\" as const, text: \"\" };\n })\n .filter((p) => !(p.type === \"text\" && p.text === \"\"));\n}\n\n// ---------------------------------------------------------------------------\n// Anthropic stream chunk → EngineEvent\n// ---------------------------------------------------------------------------\n\n/**\n * Translate an Anthropic stream chunk into zero or more EngineEvents.\n * Called in a loop as chunks arrive from client.messages.stream().\n */\nexport function anthropicChunkToEngineEvents(chunk: any): EngineEvent[] {\n const events: EngineEvent[] = [];\n\n if (chunk.type === \"content_block_delta\") {\n if (chunk.delta?.type === \"text_delta\") {\n events.push({ type: \"text-delta\", text: chunk.delta.text });\n } else if (chunk.delta?.type === \"thinking_delta\") {\n events.push({ type: \"thinking-delta\", text: chunk.delta.thinking ?? \"\" });\n } else if (chunk.delta?.type === \"signature_delta\") {\n // Signature arrives after thinking — emit as a thinking-delta with empty text\n // but carry the signature for the caller to store\n events.push({\n type: \"thinking-delta\",\n text: \"\",\n signature: chunk.delta.signature,\n });\n }\n }\n\n return events;\n}\n\n// ---------------------------------------------------------------------------\n// Build tool_result blocks to append to messages after tool dispatch\n// ---------------------------------------------------------------------------\n\nexport function buildToolResultPart(\n toolCallId: string,\n content: string,\n isError = false,\n): EngineContentPart {\n return {\n type: \"tool-result\",\n toolCallId,\n content,\n ...(isError ? { isError } : {}),\n };\n}\n"]}
1
+ {"version":3,"file":"translate-anthropic.js","sourceRoot":"","sources":["../../../src/agent/engine/translate-anthropic.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Translation helpers between the AgentEngine normalized types and\n * @anthropic-ai/sdk's wire types.\n *\n * AnthropicEngine does very little translation because the framework's\n * EngineMessage / EngineTool shapes were modeled on Anthropic's types.\n * The main differences are: camelCase vs snake_case, and that\n * Anthropic uses `input_schema` while we use `inputSchema`.\n *\n * Builder's Gemini-backed gateway requires `tool_name` and `tool_input` on\n * every `tool_result` block. Use `engineMessagesToBuilderGatewayAnthropic` for\n * that path. The native Anthropic API keeps the strict `tool_result` shape\n * (`engineMessagesToAnthropic`).\n */\n\nimport type Anthropic from \"@anthropic-ai/sdk\";\nimport type {\n EngineTool,\n EngineMessage,\n EngineContentPart,\n EngineEvent,\n} from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// EngineTool → Anthropic.Tool\n// ---------------------------------------------------------------------------\n\nexport function engineToolToAnthropic(tool: EngineTool): Anthropic.Tool {\n return {\n name: tool.name,\n description: tool.description,\n input_schema: tool.inputSchema as Anthropic.Tool[\"input_schema\"],\n };\n}\n\nexport function engineToolsToAnthropic(tools: EngineTool[]): Anthropic.Tool[] {\n return tools.map(engineToolToAnthropic);\n}\n\n// ---------------------------------------------------------------------------\n// Tool result backfill (Gemini / Builder gateway)\n// ---------------------------------------------------------------------------\n\n/** JSON.stringify for tool_use inputs; never throws. */\nexport function stringifyToolUseInputForGateway(input: unknown): string {\n try {\n if (input === undefined || input === null) return \"{}\";\n return JSON.stringify(input);\n } catch {\n return \"{}\";\n }\n}\n\n/** Same lead-in as structured-history replay when a tool_result cannot be paired. */\nexport const UNMATCHED_TOOL_RESULT_REPLAY_PREFIX =\n \"(Omitted unmatched tool results from replayed history.)\";\n\n/**\n * Human/LLM-visible note when a tool_result cannot be matched to a tool_use\n * (replay from DB, or malformed engine history). Preserves tool_use_id and\n * a truncated payload instead of silently dropping the turn.\n */\nexport function unmatchedToolResultReplayText(part: {\n toolCallId: string;\n content: unknown;\n isError?: boolean;\n}): string {\n const max = 2000;\n let body =\n typeof part.content === \"string\"\n ? part.content\n : part.content === undefined || part.content === null\n ? \"\"\n : (() => {\n try {\n return JSON.stringify(part.content);\n } catch {\n return String(part.content);\n }\n })();\n if (body.length > max) body = `${body.slice(0, max)}…`;\n const err = part.isError ? \" isError=true\" : \"\";\n return `${UNMATCHED_TOOL_RESULT_REPLAY_PREFIX} [tool_use_id=${part.toolCallId}${err}] ${body}`;\n}\n\nfunction interruptedToolResultPart(part: {\n id: string;\n name: string;\n input: unknown;\n}): EngineContentPart {\n return {\n type: \"tool-result\",\n toolCallId: part.id,\n toolName: part.name,\n toolInput: stringifyToolUseInputForGateway(part.input),\n content: \"Interrupted before this tool returned a result.\",\n };\n}\n\n/**\n * Ensure every `tool-result` has a non-empty `toolName` and `toolInput` string,\n * using the matching assistant `tool-call` in the same conversation.\n * Assistant `tool-call` blocks without an immediately following result get a\n * synthetic interrupted result so replayed history stays provider-protocol safe.\n * Orphan tool-results (no resolvable tool name) become `text` notes so nothing\n * is silently dropped from replayed history.\n */\nexport function backfillEngineMessagesToolResults(\n messages: EngineMessage[],\n): EngineMessage[] {\n // Walk messages in order. User tool-result blocks are valid only when they\n // answer the immediately preceding assistant tool-call turn. This prevents\n // older tool-results from being backfilled with later, unrelated tool-calls\n // when ids are reused (e.g. `continuation_tc_1` reset across adapter\n // recreations).\n const toolUseById = new Map<string, { name: string; input: unknown }>();\n const out: EngineMessage[] = [];\n let pendingToolUses: Array<{ id: string; name: string; input: unknown }> = [];\n\n const flushInterruptedToolResults = () => {\n if (pendingToolUses.length === 0) return;\n out.push({\n role: \"user\",\n content: pendingToolUses.map(interruptedToolResultPart),\n });\n pendingToolUses = [];\n };\n\n for (const msg of messages) {\n if (msg.role === \"assistant\") {\n flushInterruptedToolResults();\n for (const part of msg.content) {\n if (part.type === \"tool-call\") {\n toolUseById.set(part.id, { name: part.name, input: part.input });\n }\n }\n out.push(msg);\n pendingToolUses = msg.content\n .filter(\n (part): part is Extract<EngineContentPart, { type: \"tool-call\" }> =>\n part.type === \"tool-call\",\n )\n .map((part) => ({\n id: part.id,\n name: part.name,\n input: part.input,\n }));\n continue;\n }\n if (msg.role !== \"user\") {\n flushInterruptedToolResults();\n out.push(msg);\n continue;\n }\n const newContent: EngineContentPart[] = [];\n const pendingById = new Map(\n pendingToolUses.map((part) => [part.id, part] as const),\n );\n const matchedPendingToolResults = new Map<string, EngineContentPart>();\n for (const part of msg.content) {\n if (part.type !== \"tool-result\") {\n newContent.push(part);\n continue;\n }\n const lookup = toolUseById.get(part.toolCallId);\n const pendingLookup = pendingById.get(part.toolCallId);\n const toolName =\n typeof part.toolName === \"string\" && part.toolName.trim().length > 0\n ? part.toolName\n : pendingLookup?.name;\n if (!toolName?.trim()) {\n const id =\n typeof part.toolCallId === \"string\"\n ? part.toolCallId.trim()\n : part.toolCallId != null\n ? String(part.toolCallId).trim()\n : \"\";\n newContent.push({\n type: \"text\",\n text: unmatchedToolResultReplayText({\n toolCallId: id.length > 0 ? id : \"(missing)\",\n content: part.content,\n isError: part.isError,\n }),\n });\n continue;\n }\n if (pendingToolUses.length > 0 && !pendingLookup) {\n const id =\n typeof part.toolCallId === \"string\"\n ? part.toolCallId.trim()\n : part.toolCallId != null\n ? String(part.toolCallId).trim()\n : \"\";\n newContent.push({\n type: \"text\",\n text: unmatchedToolResultReplayText({\n toolCallId: id.length > 0 ? id : \"(missing)\",\n content: part.content,\n isError: part.isError,\n }),\n });\n continue;\n }\n const toolInput =\n typeof part.toolInput === \"string\" && part.toolInput.length > 0\n ? part.toolInput\n : stringifyToolUseInputForGateway(\n pendingLookup?.input ?? lookup?.input,\n );\n const filled: EngineContentPart = {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName,\n toolInput,\n content: part.content,\n ...(part.isError ? { isError: true } : {}),\n };\n if (pendingLookup) {\n matchedPendingToolResults.set(part.toolCallId, filled);\n } else {\n newContent.push(filled);\n }\n }\n if (pendingToolUses.length > 0) {\n const pairedResults = pendingToolUses.map(\n (part) =>\n matchedPendingToolResults.get(part.id) ??\n interruptedToolResultPart(part),\n );\n newContent.unshift(...pairedResults);\n pendingToolUses = [];\n }\n if (newContent.length === 0) {\n out.push({\n role: \"user\",\n content: [\n {\n type: \"text\",\n text: UNMATCHED_TOOL_RESULT_REPLAY_PREFIX,\n },\n ],\n });\n continue;\n }\n out.push({ role: \"user\", content: newContent });\n }\n\n flushInterruptedToolResults();\n\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// EngineMessage → Anthropic.MessageParam\n// ---------------------------------------------------------------------------\n\nexport function engineMessageToAnthropic(\n msg: EngineMessage,\n opts?: { builderGateway?: boolean },\n): Anthropic.MessageParam {\n const builderGateway = opts?.builderGateway === true;\n return {\n role: msg.role,\n content: msg.content.map((p) => enginePartToAnthropic(p, builderGateway)),\n };\n}\n\n/** Messages for the Anthropic HTTP API (strict schema — no extra tool_result fields). */\nexport function engineMessagesToAnthropic(\n messages: EngineMessage[],\n): Anthropic.MessageParam[] {\n const normalized = backfillEngineMessagesToolResults(messages);\n return normalized.map((m) => engineMessageToAnthropic(m));\n}\n\n/**\n * Messages for the Builder LLM gateway (Gemini-backed). Same Anthropic-shaped\n * envelope, but every `tool_result` includes `tool_name` and `tool_input`.\n */\nexport function engineMessagesToBuilderGatewayAnthropic(\n messages: EngineMessage[],\n): Anthropic.MessageParam[] {\n const normalized = backfillEngineMessagesToolResults(messages);\n return normalized.map((m) =>\n engineMessageToAnthropic(m, { builderGateway: true }),\n );\n}\n\nfunction enginePartToAnthropic(\n part: EngineContentPart,\n builderGateway: boolean,\n): Anthropic.ContentBlockParam {\n switch (part.type) {\n case \"text\":\n return { type: \"text\", text: part.text };\n\n case \"image\":\n return {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: part.mediaType,\n data: part.data,\n },\n };\n\n case \"file\":\n if (part.mediaType === \"application/pdf\") {\n return {\n type: \"document\",\n source: {\n type: \"base64\",\n media_type: \"application/pdf\",\n data: part.data,\n },\n ...(part.filename ? { title: part.filename } : {}),\n } as any;\n }\n return {\n type: \"text\",\n text: `[Attached file: ${part.filename ?? \"attachment\"} (${part.mediaType})]`,\n };\n\n case \"tool-call\":\n return {\n type: \"tool_use\",\n id: part.id,\n name: part.name,\n input: part.input as Record<string, unknown>,\n } as any; // tool_use is a ContentBlockParam in Anthropic SDK\n\n case \"tool-result\": {\n if (builderGateway) {\n const tool_name = part.toolName.trim();\n const tool_input = part.toolInput;\n return {\n type: \"tool_result\",\n tool_use_id: part.toolCallId,\n tool_name,\n tool_input,\n content: part.content,\n ...(part.isError ? { is_error: true } : {}),\n } as any;\n }\n return {\n type: \"tool_result\",\n tool_use_id: part.toolCallId,\n content: part.content,\n ...(part.isError ? { is_error: true } : {}),\n } as any;\n }\n\n case \"thinking\":\n // Anthropic thinking blocks — pass through with signature for context window continuity\n return {\n type: \"thinking\",\n thinking: part.text,\n signature: part.signature ?? \"\",\n } as any;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Anthropic.ContentBlock → EngineContentPart (from final message)\n// ---------------------------------------------------------------------------\n\nexport function anthropicContentToEngine(\n content: Anthropic.ContentBlock[],\n): EngineContentPart[] {\n return content\n .map((block) => {\n if (block.type === \"text\") {\n return { type: \"text\" as const, text: block.text };\n }\n if (block.type === \"tool_use\") {\n return {\n type: \"tool-call\" as const,\n id: block.id,\n name: block.name,\n input: block.input,\n };\n }\n if ((block as any).type === \"thinking\") {\n const b = block as any;\n return {\n type: \"thinking\" as const,\n text: b.thinking ?? \"\",\n signature: b.signature,\n };\n }\n // Unknown block type — skip\n return { type: \"text\" as const, text: \"\" };\n })\n .filter((p) => !(p.type === \"text\" && p.text === \"\"));\n}\n\n// ---------------------------------------------------------------------------\n// Anthropic stream chunk → EngineEvent\n// ---------------------------------------------------------------------------\n\n/**\n * Translate an Anthropic stream chunk into zero or more EngineEvents.\n * Called in a loop as chunks arrive from client.messages.stream().\n */\nexport function anthropicChunkToEngineEvents(chunk: any): EngineEvent[] {\n const events: EngineEvent[] = [];\n\n if (chunk.type === \"content_block_delta\") {\n if (chunk.delta?.type === \"text_delta\") {\n events.push({ type: \"text-delta\", text: chunk.delta.text });\n } else if (chunk.delta?.type === \"thinking_delta\") {\n events.push({ type: \"thinking-delta\", text: chunk.delta.thinking ?? \"\" });\n } else if (chunk.delta?.type === \"signature_delta\") {\n // Signature arrives after thinking — emit as a thinking-delta with empty text\n // but carry the signature for the caller to store\n events.push({\n type: \"thinking-delta\",\n text: \"\",\n signature: chunk.delta.signature,\n });\n }\n }\n\n return events;\n}\n\n// ---------------------------------------------------------------------------\n// Build tool_result blocks to append to messages after tool dispatch\n// ---------------------------------------------------------------------------\n\nexport function buildToolResultPart(\n toolCallId: string,\n toolName: string,\n content: string,\n toolInput: unknown = {},\n isError = false,\n): EngineContentPart {\n return {\n type: \"tool-result\",\n toolCallId,\n toolName,\n toolInput: stringifyToolUseInputForGateway(toolInput),\n content,\n ...(isError ? { isError } : {}),\n };\n}\n"]}
@@ -73,8 +73,10 @@ export interface EngineToolCallPart {
73
73
  export interface EngineToolResultPart {
74
74
  type: "tool-result";
75
75
  toolCallId: string;
76
- /** Required by AI SDK v6+ ModelMessage. */
77
- toolName?: string;
76
+ /** Same as the originating `tool-call.name` (required for Builder / Gemini). */
77
+ toolName: string;
78
+ /** JSON string of the originating tool_use `input` object (Builder / Gemini). */
79
+ toolInput: string;
78
80
  content: string;
79
81
  isError?: boolean;
80
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/engine/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/engine/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agent/engine/types.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH;;;;;;;;GAQG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,SAAS,CAAU;IACnB,UAAU,CAAU;IAC7B,YACE,OAAe,EACf,IAAkD;QAElD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,UAAU,CAAC;IACrC,CAAC;CACF","sourcesContent":["import type { ReasoningEffort } from \"../../shared/reasoning-effort.js\";\n\n/**\n * Pluggable Agent Engine abstraction.\n *\n * AgentEngine is the thin LLM adapter that sits beneath runAgentLoop.\n * Every caller (HTTP handler, A2A, MCP, sub-agents, webhooks, jobs) uses\n * an AgentEngine instead of a raw @anthropic-ai/sdk client.\n *\n * The framework's tool dispatch loop, sub-agents, SSE event stream, and all\n * other harness features live above this layer and are unaffected by engine\n * selection.\n */\n\n/**\n * Thrown when an engine emits a terminal stop-error event. Carries optional\n * structured fields (errorCode / upgradeUrl) that propagate up to the SSE\n * \"error\" event so the chat UI can render a structured CTA — e.g. an\n * Upgrade button for Builder gateway 402 quota errors.\n *\n * Lives in the engine types module (not production-agent) so run-manager and\n * other consumers can `instanceof` it without an import cycle.\n */\nexport class EngineError extends Error {\n readonly errorCode?: string;\n readonly upgradeUrl?: string;\n constructor(\n message: string,\n opts?: { errorCode?: string; upgradeUrl?: string },\n ) {\n super(message);\n this.name = \"EngineError\";\n this.errorCode = opts?.errorCode;\n this.upgradeUrl = opts?.upgradeUrl;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Tool / parameter types\n// ---------------------------------------------------------------------------\n\n/**\n * Engine-normalized tool definition. Structurally identical to Anthropic's\n * Tool type, with snake_case renamed to camelCase for consistency.\n */\nexport interface EngineTool {\n name: string;\n description: string;\n /** JSON Schema for the tool's input parameters */\n inputSchema: {\n type: \"object\";\n properties?: Record<string, unknown>;\n required?: string[];\n [key: string]: unknown;\n };\n /**\n * Provider-specific options for this tool.\n * E.g. `{ anthropic: { cacheControl: { type: \"ephemeral\" } } }`\n */\n providerOptions?: Record<string, unknown>;\n}\n\n// ---------------------------------------------------------------------------\n// Message / content part types\n// ---------------------------------------------------------------------------\n\nexport interface EngineTextPart {\n type: \"text\";\n text: string;\n}\n\nexport interface EngineImagePart {\n type: \"image\";\n /** Base64-encoded image data */\n data: string;\n mediaType: \"image/jpeg\" | \"image/png\" | \"image/gif\" | \"image/webp\";\n}\n\nexport interface EngineFilePart {\n type: \"file\";\n /** Base64-encoded file data */\n data: string;\n mediaType: string;\n filename?: string;\n}\n\nexport interface EngineToolCallPart {\n type: \"tool-call\";\n id: string;\n name: string;\n input: unknown;\n}\n\nexport interface EngineToolResultPart {\n type: \"tool-result\";\n toolCallId: string;\n /** Required by AI SDK v6+ ModelMessage. */\n toolName?: string;\n content: string;\n isError?: boolean;\n}\n\nexport interface EngineThinkingPart {\n type: \"thinking\";\n text: string;\n /** Opaque signature for pass-through on next turn (Anthropic extended thinking) */\n signature?: string;\n}\n\nexport type EngineContentPart =\n | EngineTextPart\n | EngineImagePart\n | EngineFilePart\n | EngineToolCallPart\n | EngineToolResultPart\n | EngineThinkingPart;\n\nexport type EngineMessage =\n | { role: \"user\"; content: EngineContentPart[] }\n | { role: \"assistant\"; content: EngineContentPart[] };\n\n// ---------------------------------------------------------------------------\n// Streaming event types\n// ---------------------------------------------------------------------------\n\nexport type EngineEvent =\n | { type: \"text-delta\"; text: string }\n | { type: \"thinking-delta\"; text: string; signature?: string }\n | { type: \"tool-input-start\"; id?: string; name?: string }\n | { type: \"tool-input-delta\"; id?: string; name?: string; text?: string }\n | { type: \"tool-call\"; id: string; name: string; input: unknown }\n | {\n type: \"tool-call-error\";\n id: string;\n name: string;\n input: unknown;\n error: string;\n }\n | {\n type: \"usage\";\n inputTokens: number;\n outputTokens: number;\n cacheReadTokens?: number;\n cacheWriteTokens?: number;\n totalTokens?: number;\n reasoningTokens?: number;\n }\n | {\n /** Final assistant content for the turn. Engines MUST emit this\n * exactly once, immediately before the terminal `stop` event. */\n type: \"assistant-content\";\n parts: EngineContentPart[];\n }\n | {\n type: \"stop\";\n reason:\n | \"end_turn\"\n | \"tool_use\"\n | \"max_tokens\"\n | \"stop_sequence\"\n | \"error\";\n error?: string;\n /**\n * Optional machine-readable error code for structured UI handling.\n * Used by the Builder gateway engine to signal quota/auth failures\n * (e.g. \"credits-limit-monthly\", \"gateway_not_enabled\") so the UI\n * can render an upgrade CTA instead of a plain error string.\n */\n errorCode?: string;\n /**\n * Optional URL the UI should link to when rendering the error.\n * Paired with errorCode — e.g. credits-limit-* stop events carry\n * a link to the user's Builder billing page.\n */\n upgradeUrl?: string;\n };\n\n// ---------------------------------------------------------------------------\n// Capabilities\n// ---------------------------------------------------------------------------\n\nexport interface EngineCapabilities {\n /** Extended / adaptive thinking support */\n thinking: boolean;\n /** Anthropic-style prompt caching (cache_control blocks) */\n promptCaching: boolean;\n /** Vision / image input */\n vision: boolean;\n /** Computer use tool support */\n computerUse: boolean;\n /** Multiple tool calls in a single response */\n parallelToolCalls: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Stream options\n// ---------------------------------------------------------------------------\n\nexport interface EngineStreamOptions {\n model: string;\n systemPrompt: string;\n messages: EngineMessage[];\n tools: EngineTool[];\n abortSignal: AbortSignal;\n maxOutputTokens?: number;\n temperature?: number;\n reasoningEffort?: ReasoningEffort;\n /**\n * Provider-specific options passed opaquely.\n * Engines forward options they understand and ignore unknown keys.\n *\n * Example (Anthropic):\n * ```ts\n * providerOptions: {\n * anthropic: {\n * thinking: { type: \"enabled\", budgetTokens: 8000 },\n * cacheControl: { type: \"ephemeral\" },\n * }\n * }\n * ```\n */\n providerOptions?: {\n anthropic?: {\n thinking?: { type: \"enabled\"; budgetTokens: number };\n cacheControl?: { type: \"ephemeral\" } | boolean;\n topK?: number;\n };\n openai?: Record<string, unknown>;\n google?: Record<string, unknown>;\n [provider: string]: Record<string, unknown> | undefined;\n };\n}\n\n// ---------------------------------------------------------------------------\n// AgentEngine interface\n// ---------------------------------------------------------------------------\n\n/**\n * The pluggable LLM adapter interface.\n *\n * Each engine performs one LLM API round-trip per `stream()` call.\n * The framework's runAgentLoop drives the tool-calling loop by calling\n * stream() repeatedly with updated messages.\n *\n * Engines yield EngineEvent items as they receive them from the LLM.\n * They MUST yield a `stop` event as the last item, even on error.\n */\nexport interface AgentEngine {\n /** Unique identifier, e.g. \"anthropic\", \"ai-sdk:anthropic\", \"ai-sdk:openai\" */\n readonly name: string;\n /** Human-readable label for UI display */\n readonly label: string;\n /** Default model for this engine */\n readonly defaultModel: string;\n /** Models this engine supports */\n readonly supportedModels: readonly string[];\n /** Capability flags used to gate provider-specific features */\n readonly capabilities: EngineCapabilities;\n\n /**\n * Stream a single LLM API call. Yields EngineEvent items.\n * The caller (runAgentLoop) handles retries, tool dispatch, and looping.\n */\n stream(opts: EngineStreamOptions): AsyncIterable<EngineEvent>;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agent/engine/types.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH;;;;;;;;GAQG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,SAAS,CAAU;IACnB,UAAU,CAAU;IAC7B,YACE,OAAe,EACf,IAAkD;QAElD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,SAAS,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,UAAU,CAAC;IACrC,CAAC;CACF","sourcesContent":["import type { ReasoningEffort } from \"../../shared/reasoning-effort.js\";\n\n/**\n * Pluggable Agent Engine abstraction.\n *\n * AgentEngine is the thin LLM adapter that sits beneath runAgentLoop.\n * Every caller (HTTP handler, A2A, MCP, sub-agents, webhooks, jobs) uses\n * an AgentEngine instead of a raw @anthropic-ai/sdk client.\n *\n * The framework's tool dispatch loop, sub-agents, SSE event stream, and all\n * other harness features live above this layer and are unaffected by engine\n * selection.\n */\n\n/**\n * Thrown when an engine emits a terminal stop-error event. Carries optional\n * structured fields (errorCode / upgradeUrl) that propagate up to the SSE\n * \"error\" event so the chat UI can render a structured CTA — e.g. an\n * Upgrade button for Builder gateway 402 quota errors.\n *\n * Lives in the engine types module (not production-agent) so run-manager and\n * other consumers can `instanceof` it without an import cycle.\n */\nexport class EngineError extends Error {\n readonly errorCode?: string;\n readonly upgradeUrl?: string;\n constructor(\n message: string,\n opts?: { errorCode?: string; upgradeUrl?: string },\n ) {\n super(message);\n this.name = \"EngineError\";\n this.errorCode = opts?.errorCode;\n this.upgradeUrl = opts?.upgradeUrl;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Tool / parameter types\n// ---------------------------------------------------------------------------\n\n/**\n * Engine-normalized tool definition. Structurally identical to Anthropic's\n * Tool type, with snake_case renamed to camelCase for consistency.\n */\nexport interface EngineTool {\n name: string;\n description: string;\n /** JSON Schema for the tool's input parameters */\n inputSchema: {\n type: \"object\";\n properties?: Record<string, unknown>;\n required?: string[];\n [key: string]: unknown;\n };\n /**\n * Provider-specific options for this tool.\n * E.g. `{ anthropic: { cacheControl: { type: \"ephemeral\" } } }`\n */\n providerOptions?: Record<string, unknown>;\n}\n\n// ---------------------------------------------------------------------------\n// Message / content part types\n// ---------------------------------------------------------------------------\n\nexport interface EngineTextPart {\n type: \"text\";\n text: string;\n}\n\nexport interface EngineImagePart {\n type: \"image\";\n /** Base64-encoded image data */\n data: string;\n mediaType: \"image/jpeg\" | \"image/png\" | \"image/gif\" | \"image/webp\";\n}\n\nexport interface EngineFilePart {\n type: \"file\";\n /** Base64-encoded file data */\n data: string;\n mediaType: string;\n filename?: string;\n}\n\nexport interface EngineToolCallPart {\n type: \"tool-call\";\n id: string;\n name: string;\n input: unknown;\n}\n\nexport interface EngineToolResultPart {\n type: \"tool-result\";\n toolCallId: string;\n /** Same as the originating `tool-call.name` (required for Builder / Gemini). */\n toolName: string;\n /** JSON string of the originating tool_use `input` object (Builder / Gemini). */\n toolInput: string;\n content: string;\n isError?: boolean;\n}\n\nexport interface EngineThinkingPart {\n type: \"thinking\";\n text: string;\n /** Opaque signature for pass-through on next turn (Anthropic extended thinking) */\n signature?: string;\n}\n\nexport type EngineContentPart =\n | EngineTextPart\n | EngineImagePart\n | EngineFilePart\n | EngineToolCallPart\n | EngineToolResultPart\n | EngineThinkingPart;\n\nexport type EngineMessage =\n | { role: \"user\"; content: EngineContentPart[] }\n | { role: \"assistant\"; content: EngineContentPart[] };\n\n// ---------------------------------------------------------------------------\n// Streaming event types\n// ---------------------------------------------------------------------------\n\nexport type EngineEvent =\n | { type: \"text-delta\"; text: string }\n | { type: \"thinking-delta\"; text: string; signature?: string }\n | { type: \"tool-input-start\"; id?: string; name?: string }\n | { type: \"tool-input-delta\"; id?: string; name?: string; text?: string }\n | { type: \"tool-call\"; id: string; name: string; input: unknown }\n | {\n type: \"tool-call-error\";\n id: string;\n name: string;\n input: unknown;\n error: string;\n }\n | {\n type: \"usage\";\n inputTokens: number;\n outputTokens: number;\n cacheReadTokens?: number;\n cacheWriteTokens?: number;\n totalTokens?: number;\n reasoningTokens?: number;\n }\n | {\n /** Final assistant content for the turn. Engines MUST emit this\n * exactly once, immediately before the terminal `stop` event. */\n type: \"assistant-content\";\n parts: EngineContentPart[];\n }\n | {\n type: \"stop\";\n reason:\n | \"end_turn\"\n | \"tool_use\"\n | \"max_tokens\"\n | \"stop_sequence\"\n | \"error\";\n error?: string;\n /**\n * Optional machine-readable error code for structured UI handling.\n * Used by the Builder gateway engine to signal quota/auth failures\n * (e.g. \"credits-limit-monthly\", \"gateway_not_enabled\") so the UI\n * can render an upgrade CTA instead of a plain error string.\n */\n errorCode?: string;\n /**\n * Optional URL the UI should link to when rendering the error.\n * Paired with errorCode — e.g. credits-limit-* stop events carry\n * a link to the user's Builder billing page.\n */\n upgradeUrl?: string;\n };\n\n// ---------------------------------------------------------------------------\n// Capabilities\n// ---------------------------------------------------------------------------\n\nexport interface EngineCapabilities {\n /** Extended / adaptive thinking support */\n thinking: boolean;\n /** Anthropic-style prompt caching (cache_control blocks) */\n promptCaching: boolean;\n /** Vision / image input */\n vision: boolean;\n /** Computer use tool support */\n computerUse: boolean;\n /** Multiple tool calls in a single response */\n parallelToolCalls: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Stream options\n// ---------------------------------------------------------------------------\n\nexport interface EngineStreamOptions {\n model: string;\n systemPrompt: string;\n messages: EngineMessage[];\n tools: EngineTool[];\n abortSignal: AbortSignal;\n maxOutputTokens?: number;\n temperature?: number;\n reasoningEffort?: ReasoningEffort;\n /**\n * Provider-specific options passed opaquely.\n * Engines forward options they understand and ignore unknown keys.\n *\n * Example (Anthropic):\n * ```ts\n * providerOptions: {\n * anthropic: {\n * thinking: { type: \"enabled\", budgetTokens: 8000 },\n * cacheControl: { type: \"ephemeral\" },\n * }\n * }\n * ```\n */\n providerOptions?: {\n anthropic?: {\n thinking?: { type: \"enabled\"; budgetTokens: number };\n cacheControl?: { type: \"ephemeral\" } | boolean;\n topK?: number;\n };\n openai?: Record<string, unknown>;\n google?: Record<string, unknown>;\n [provider: string]: Record<string, unknown> | undefined;\n };\n}\n\n// ---------------------------------------------------------------------------\n// AgentEngine interface\n// ---------------------------------------------------------------------------\n\n/**\n * The pluggable LLM adapter interface.\n *\n * Each engine performs one LLM API round-trip per `stream()` call.\n * The framework's runAgentLoop drives the tool-calling loop by calling\n * stream() repeatedly with updated messages.\n *\n * Engines yield EngineEvent items as they receive them from the LLM.\n * They MUST yield a `stop` event as the last item, even on error.\n */\nexport interface AgentEngine {\n /** Unique identifier, e.g. \"anthropic\", \"ai-sdk:anthropic\", \"ai-sdk:openai\" */\n readonly name: string;\n /** Human-readable label for UI display */\n readonly label: string;\n /** Default model for this engine */\n readonly defaultModel: string;\n /** Models this engine supports */\n readonly supportedModels: readonly string[];\n /** Capability flags used to gate provider-specific features */\n readonly capabilities: EngineCapabilities;\n\n /**\n * Stream a single LLM API call. Yields EngineEvent items.\n * The caller (runAgentLoop) handles retries, tool dispatch, and looping.\n */\n stream(opts: EngineStreamOptions): AsyncIterable<EngineEvent>;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"production-agent.d.ts","sourceRoot":"","sources":["../../src/agent/production-agent.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { defineEventHandler, setResponseHeader, setResponseStatus, getMethod, } from "h3";
2
2
  import { isDeployCredentialFallbackAllowed, readDeployCredentialEnv, } from "../server/credential-provider.js";
3
3
  import { EngineError } from "./engine/types.js";
4
+ import { backfillEngineMessagesToolResults, stringifyToolUseInputForGateway, unmatchedToolResultReplayText, } from "./engine/translate-anthropic.js";
4
5
  import { resolveEngine, registerBuiltinEngines, getStoredModelForEngine, } from "./engine/index.js";
5
6
  import { userFacingLlmCredentialError } from "./engine/credential-errors.js";
6
7
  import { PROVIDER_TO_ENV } from "./engine/provider-env-vars.js";
@@ -545,9 +546,30 @@ export function buildUserContentWithAttachments(opts) {
545
546
  });
546
547
  return userContent;
547
548
  }
549
+ function coerceStructuredToolResultWire(part) {
550
+ const toolCallId = typeof part.toolCallId === "string"
551
+ ? part.toolCallId.trim()
552
+ : part.toolCallId === undefined || part.toolCallId === null
553
+ ? ""
554
+ : String(part.toolCallId).trim();
555
+ let content = "";
556
+ if (typeof part.content === "string") {
557
+ content = part.content;
558
+ }
559
+ else if (part.content !== undefined && part.content !== null) {
560
+ try {
561
+ content = JSON.stringify(part.content);
562
+ }
563
+ catch {
564
+ content = String(part.content);
565
+ }
566
+ }
567
+ return { toolCallId, content };
568
+ }
548
569
  export function structuredHistoryToEngineMessages(history) {
549
570
  if (!Array.isArray(history))
550
571
  return null;
572
+ const toolUseById = new Map();
551
573
  const messages = [];
552
574
  for (const message of history) {
553
575
  if (!message ||
@@ -578,26 +600,56 @@ export function structuredHistoryToEngineMessages(history) {
578
600
  : "";
579
601
  if (!id || !name)
580
602
  continue;
603
+ const input = part.input ?? part.args ?? {};
604
+ toolUseById.set(id, { name, input });
581
605
  content.push({
582
606
  type: "tool-call",
583
607
  id,
584
608
  name,
585
- input: part.input ?? part.args ?? {},
609
+ input,
586
610
  });
587
611
  continue;
588
612
  }
589
613
  if (part.type === "tool-result" && message.role === "user") {
590
- if (typeof part.toolCallId !== "string" ||
591
- typeof part.content !== "string") {
614
+ const wire = coerceStructuredToolResultWire(part);
615
+ const lookup = wire.toolCallId.length > 0
616
+ ? toolUseById.get(wire.toolCallId)
617
+ : undefined;
618
+ const toolName = typeof part.toolName === "string" && part.toolName.trim().length > 0
619
+ ? part.toolName
620
+ : lookup?.name;
621
+ if (!toolName?.trim()) {
622
+ content.push({
623
+ type: "text",
624
+ text: unmatchedToolResultReplayText({
625
+ toolCallId: wire.toolCallId.length > 0 ? wire.toolCallId : "(missing)",
626
+ content: wire.content,
627
+ isError: part.isError,
628
+ }),
629
+ });
630
+ continue;
631
+ }
632
+ if (!wire.toolCallId) {
633
+ // Named tool but no id — cannot emit a valid paired `tool-result`.
634
+ content.push({
635
+ type: "text",
636
+ text: unmatchedToolResultReplayText({
637
+ toolCallId: "(missing)",
638
+ content: wire.content,
639
+ isError: part.isError,
640
+ }),
641
+ });
592
642
  continue;
593
643
  }
644
+ const toolInput = typeof part.toolInput === "string" && part.toolInput.length > 0
645
+ ? part.toolInput
646
+ : stringifyToolUseInputForGateway(lookup?.input);
594
647
  content.push({
595
648
  type: "tool-result",
596
- toolCallId: part.toolCallId,
597
- ...(typeof part.toolName === "string"
598
- ? { toolName: part.toolName }
599
- : {}),
600
- content: part.content,
649
+ toolCallId: wire.toolCallId,
650
+ toolName,
651
+ toolInput,
652
+ content: wire.content,
601
653
  ...(part.isError ? { isError: true } : {}),
602
654
  });
603
655
  }
@@ -606,7 +658,9 @@ export function structuredHistoryToEngineMessages(history) {
606
658
  messages.push({ role: message.role, content });
607
659
  }
608
660
  }
609
- return messages.length > 0 ? messages : null;
661
+ return messages.length > 0
662
+ ? backfillEngineMessagesToolResults(messages)
663
+ : null;
610
664
  }
611
665
  /** Build enriched message with file/skill/mention references */
612
666
  function enrichMessage(message, references) {
@@ -1089,6 +1143,7 @@ export async function runAgentLoop(opts) {
1089
1143
  flushBufferedAssistantText();
1090
1144
  let requestedActionStop = null;
1091
1145
  const runToolCall = async (toolCall) => {
1146
+ const wireToolInput = JSON.stringify(toolCall.input ?? {});
1092
1147
  toolCallHistory.push({
1093
1148
  name: toolCall.name,
1094
1149
  input: normalizeToolCallInputForHistory(toolCall.input),
@@ -1114,6 +1169,7 @@ export async function runAgentLoop(opts) {
1114
1169
  type: "tool-result",
1115
1170
  toolCallId: toolCall.id,
1116
1171
  toolName: toolCall.name,
1172
+ toolInput: wireToolInput,
1117
1173
  content: result,
1118
1174
  isError: true,
1119
1175
  };
@@ -1145,6 +1201,7 @@ export async function runAgentLoop(opts) {
1145
1201
  type: "tool-result",
1146
1202
  toolCallId: toolCall.id,
1147
1203
  toolName: toolCall.name,
1204
+ toolInput: wireToolInput,
1148
1205
  content: result,
1149
1206
  };
1150
1207
  }
@@ -1162,6 +1219,7 @@ export async function runAgentLoop(opts) {
1162
1219
  type: "tool-result",
1163
1220
  toolCallId: toolCall.id,
1164
1221
  toolName: toolCall.name,
1222
+ toolInput: wireToolInput,
1165
1223
  content: result,
1166
1224
  isError: true,
1167
1225
  };
@@ -1175,6 +1233,7 @@ export async function runAgentLoop(opts) {
1175
1233
  type: "tool-result",
1176
1234
  toolCallId: toolCall.id,
1177
1235
  toolName: toolCall.name,
1236
+ toolInput: wireToolInput,
1178
1237
  content: result,
1179
1238
  isError: true,
1180
1239
  };
@@ -1280,6 +1339,7 @@ export async function runAgentLoop(opts) {
1280
1339
  type: "tool-result",
1281
1340
  toolCallId: toolCall.id,
1282
1341
  toolName: toolCall.name,
1342
+ toolInput: wireToolInput,
1283
1343
  content: result,
1284
1344
  ...(isError ? { isError } : {}),
1285
1345
  };