@agent-native/core 0.128.3 → 0.129.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +91 -0
  3. package/corpus/core/docs/content/template-design-collaboration-and-full-apps.mdx +3 -1
  4. package/corpus/core/package.json +6 -3
  5. package/corpus/core/src/a2a/client.ts +18 -4
  6. package/corpus/core/src/a2a/server.ts +19 -3
  7. package/corpus/core/src/a2a/types.ts +7 -0
  8. package/corpus/core/src/action.ts +43 -16
  9. package/corpus/core/src/agent/engine/ai-sdk-engine.ts +14 -10
  10. package/corpus/core/src/agent/production-agent.ts +41 -3
  11. package/corpus/core/src/agent/thread-data-builder.ts +5 -0
  12. package/corpus/core/src/chat-threads/migrations.ts +53 -0
  13. package/corpus/core/src/cli/create.ts +4 -0
  14. package/corpus/core/src/cli/skills-content/design-visual-edit-skill.ts +36 -16
  15. package/corpus/core/src/cli/skills.ts +16 -0
  16. package/corpus/core/src/client/AgentPanel.tsx +9 -5
  17. package/corpus/core/src/client/AssistantChat.tsx +138 -46
  18. package/corpus/core/src/client/MultiTabAssistantChat.tsx +16 -10
  19. package/corpus/core/src/client/agent-chat-adapter.ts +21 -3
  20. package/corpus/core/src/client/analytics.ts +159 -102
  21. package/corpus/core/src/client/chat/legacy-chart-shorthand.tsx +479 -0
  22. package/corpus/core/src/client/chat/markdown-renderer.tsx +23 -3
  23. package/corpus/core/src/client/chat/message-components.tsx +12 -5
  24. package/corpus/core/src/client/chat/runtime.ts +2 -1
  25. package/corpus/core/src/client/chat/tool-call-display.tsx +25 -2
  26. package/corpus/core/src/client/chat-model-groups.ts +3 -0
  27. package/corpus/core/src/client/client-status-requests.ts +161 -0
  28. package/corpus/core/src/client/settings/VoiceTranscriptionSection.tsx +2 -2
  29. package/corpus/core/src/client/sse-event-processor.ts +15 -3
  30. package/corpus/core/src/client/use-agent-engine-configured.ts +54 -50
  31. package/corpus/core/src/client/use-chat-models.ts +16 -11
  32. package/corpus/core/src/client/use-chat-threads.ts +32 -9
  33. package/corpus/core/src/client/use-session.ts +4 -5
  34. package/corpus/core/src/db/client.ts +83 -8
  35. package/corpus/core/src/db/ensure-additive-columns.ts +31 -20
  36. package/corpus/core/src/db/migrations.ts +22 -2
  37. package/corpus/core/src/extensions/actions.ts +1 -1
  38. package/corpus/core/src/mcp/approval-store.ts +99 -0
  39. package/corpus/core/src/mcp/build-server.ts +579 -303
  40. package/corpus/core/src/mcp/embed-app.ts +1 -1
  41. package/corpus/core/src/mcp/oauth-client-metadata.ts +380 -0
  42. package/corpus/core/src/mcp/oauth-route.ts +57 -52
  43. package/corpus/core/src/mcp/screen-memory-stdio.ts +400 -378
  44. package/corpus/core/src/mcp/server.ts +29 -145
  45. package/corpus/core/src/mcp/stdio.ts +72 -80
  46. package/corpus/core/src/mcp-client/manager.ts +6 -10
  47. package/corpus/core/src/mcp-client/oauth-client.ts +127 -36
  48. package/corpus/core/src/mcp-client/oauth-routes.ts +16 -6
  49. package/corpus/core/src/mcp-client/routes.ts +6 -5
  50. package/corpus/core/src/server/agent-capabilities.ts +20 -0
  51. package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +27 -0
  52. package/corpus/core/src/server/agent-chat-plugin.ts +18 -0
  53. package/corpus/core/src/server/transcribe-voice.ts +14 -5
  54. package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +13 -2
  55. package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +5 -2
  56. package/corpus/core/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +18 -0
  57. package/corpus/core/src/templates/workspace-core/.agents/skills/security/SKILL.md +13 -2
  58. package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +12 -0
  59. package/corpus/templates/analytics/.agents/skills/security/SKILL.md +13 -2
  60. package/corpus/templates/analytics/actions/generate-chart.ts +2 -2
  61. package/corpus/templates/analytics/app/components/dashboard/DashboardPanelSkeleton.tsx +1 -10
  62. package/corpus/templates/analytics/app/global.css +0 -31
  63. package/corpus/templates/analytics/app/lib/sql-query.ts +46 -20
  64. package/corpus/templates/analytics/changelog/2026-07-28-analytics-dashboard-loading-states-now-use-a-simpler-standar.md +6 -0
  65. package/corpus/templates/analytics/changelog/2026-07-28-analytics-dashboards-now-load-first-party-charts-reliably-in.md +6 -0
  66. package/corpus/templates/analytics/server/lib/first-party-analytics-cache.ts +42 -16
  67. package/corpus/templates/analytics/server/lib/first-party-analytics.ts +4 -2
  68. package/corpus/templates/analytics/shared/sql-query-limits.ts +1 -0
  69. package/corpus/templates/assets/.agents/skills/security/SKILL.md +13 -2
  70. package/corpus/templates/brain/.agents/skills/security/SKILL.md +13 -2
  71. package/corpus/templates/calendar/.agents/skills/security/SKILL.md +13 -2
  72. package/corpus/templates/chat/.agents/skills/security/SKILL.md +13 -2
  73. package/corpus/templates/clips/.agents/skills/security/SKILL.md +13 -2
  74. package/corpus/templates/clips/app/components/player/player-controls.tsx +3 -6
  75. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +6 -2
  76. package/corpus/templates/clips/app/routes/share.$shareId.tsx +3 -1
  77. package/corpus/templates/clips/changelog/2026-07-28-copied-share-links-no-longer-leave-an-unnecessary-confirmati.md +6 -0
  78. package/corpus/templates/clips/changelog/2026-07-28-playback-skip-controls-no-longer-show-overlapping-numbers.md +6 -0
  79. package/corpus/templates/clips/changelog/2026-07-28-public-clips-share-buttons-now-use-a-clean-text-only-label.md +6 -0
  80. package/corpus/templates/clips/desktop/src/app.tsx +14 -17
  81. package/corpus/templates/clips/desktop/src/overlays/live-audio-bars.tsx +3 -1
  82. package/corpus/templates/clips/desktop/src/styles.css +13 -10
  83. package/corpus/templates/clips/desktop/src-tauri/src/recording_indicator.rs +2 -2
  84. package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +36 -0
  85. package/corpus/templates/content/.agents/skills/security/SKILL.md +13 -2
  86. package/corpus/templates/content/actions/_builder-cms-read-client.ts +155 -34
  87. package/corpus/templates/content/actions/_builder-docs-client.ts +151 -30
  88. package/corpus/templates/content/actions/stage-builder-source-bulk-update.ts +5 -2
  89. package/corpus/templates/content/app/root.tsx +35 -14
  90. package/corpus/templates/content/changelog/2026-07-28-builder-backed-files-media-fields-now-accept-direct-file-url.md +6 -0
  91. package/corpus/templates/content/changelog/2026-07-28-builder-content-reads-now-negotiate-the-newest-mcp-protocol-.md +6 -0
  92. package/corpus/templates/content/changelog/2026-07-28-public-content-pages-load-faster-before-the-optional-ask-sid.md +6 -0
  93. package/corpus/templates/design/.agents/skills/security/SKILL.md +13 -2
  94. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +36 -16
  95. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +42 -3
  96. package/corpus/templates/design/actions/open-visual-edit.ts +2 -1
  97. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +2 -2
  98. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +14 -15
  99. package/corpus/templates/design/app/components/design/ResponsiveInteractBar.tsx +314 -0
  100. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +88 -3
  101. package/corpus/templates/design/app/components/design/keyboard-shortcuts.ts +1 -1
  102. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +7 -6
  103. package/corpus/templates/design/app/i18n-data.ts +56 -11
  104. package/corpus/templates/design/app/i18n-responsive-interact.ts +183 -0
  105. package/corpus/templates/design/app/lib/agent-chat.ts +60 -0
  106. package/corpus/templates/design/app/pages/design-editor/responsive-interact.ts +89 -0
  107. package/corpus/templates/design/changelog/2026-07-28-design-edits-can-be-applied-through-the-host-coding-agent-fr.md +6 -0
  108. package/corpus/templates/design/changelog/2026-07-28-interact-mode-can-preview-designs-in-responsive-device-sizes.md +6 -0
  109. package/corpus/templates/design/changelog/2026-07-28-interact-mode-now-opens-a-full-screen-responsive-preview-wit.md +6 -0
  110. package/corpus/templates/design/changelog/2026-07-28-show-or-hide-design-editing-chrome-with-cmd-on-apple-devices.md +2 -2
  111. package/corpus/templates/design/changelog/2026-07-28-visual-edit-now-always-shows-the-live-running-app-in-the-can.md +6 -0
  112. package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +13 -2
  113. package/corpus/templates/forms/.agents/skills/security/SKILL.md +13 -2
  114. package/corpus/templates/macros/.agents/skills/security/SKILL.md +13 -2
  115. package/corpus/templates/mail/.agents/skills/security/SKILL.md +13 -2
  116. package/corpus/templates/plan/.agents/skills/security/SKILL.md +13 -2
  117. package/corpus/templates/slides/.agents/skills/security/SKILL.md +13 -2
  118. package/corpus/templates/tasks/.agents/skills/security/SKILL.md +13 -2
  119. package/corpus/toolkit/CHANGELOG.md +13 -0
  120. package/corpus/toolkit/package.json +1 -1
  121. package/corpus/toolkit/src/chat-history.css +1 -2
  122. package/corpus/toolkit/src/composer/TiptapComposer.tsx +45 -0
  123. package/dist/a2a/client.d.ts +7 -0
  124. package/dist/a2a/client.d.ts.map +1 -1
  125. package/dist/a2a/client.js +8 -3
  126. package/dist/a2a/client.js.map +1 -1
  127. package/dist/a2a/server.d.ts.map +1 -1
  128. package/dist/a2a/server.js +18 -3
  129. package/dist/a2a/server.js.map +1 -1
  130. package/dist/a2a/types.d.ts +7 -0
  131. package/dist/a2a/types.d.ts.map +1 -1
  132. package/dist/a2a/types.js.map +1 -1
  133. package/dist/action.d.ts +15 -1
  134. package/dist/action.d.ts.map +1 -1
  135. package/dist/action.js +39 -16
  136. package/dist/action.js.map +1 -1
  137. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  138. package/dist/agent/engine/ai-sdk-engine.js +14 -10
  139. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  140. package/dist/agent/production-agent.d.ts.map +1 -1
  141. package/dist/agent/production-agent.js +35 -7
  142. package/dist/agent/production-agent.js.map +1 -1
  143. package/dist/agent/thread-data-builder.d.ts +2 -0
  144. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  145. package/dist/agent/thread-data-builder.js +3 -0
  146. package/dist/agent/thread-data-builder.js.map +1 -1
  147. package/dist/chat-threads/migrations.d.ts +21 -0
  148. package/dist/chat-threads/migrations.d.ts.map +1 -0
  149. package/dist/chat-threads/migrations.js +45 -0
  150. package/dist/chat-threads/migrations.js.map +1 -0
  151. package/dist/cli/create.d.ts.map +1 -1
  152. package/dist/cli/create.js +4 -0
  153. package/dist/cli/create.js.map +1 -1
  154. package/dist/cli/skills-content/design-visual-edit-skill.d.ts +1 -1
  155. package/dist/cli/skills-content/design-visual-edit-skill.d.ts.map +1 -1
  156. package/dist/cli/skills-content/design-visual-edit-skill.js +36 -16
  157. package/dist/cli/skills-content/design-visual-edit-skill.js.map +1 -1
  158. package/dist/cli/skills.d.ts.map +1 -1
  159. package/dist/cli/skills.js +15 -0
  160. package/dist/cli/skills.js.map +1 -1
  161. package/dist/client/AgentPanel.d.ts.map +1 -1
  162. package/dist/client/AgentPanel.js +6 -5
  163. package/dist/client/AgentPanel.js.map +1 -1
  164. package/dist/client/AssistantChat.d.ts +37 -0
  165. package/dist/client/AssistantChat.d.ts.map +1 -1
  166. package/dist/client/AssistantChat.js +41 -8
  167. package/dist/client/AssistantChat.js.map +1 -1
  168. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  169. package/dist/client/MultiTabAssistantChat.js +11 -10
  170. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  171. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  172. package/dist/client/agent-chat-adapter.js +19 -3
  173. package/dist/client/agent-chat-adapter.js.map +1 -1
  174. package/dist/client/analytics.d.ts.map +1 -1
  175. package/dist/client/analytics.js +150 -101
  176. package/dist/client/analytics.js.map +1 -1
  177. package/dist/client/chat/legacy-chart-shorthand.d.ts +29 -0
  178. package/dist/client/chat/legacy-chart-shorthand.d.ts.map +1 -0
  179. package/dist/client/chat/legacy-chart-shorthand.js +330 -0
  180. package/dist/client/chat/legacy-chart-shorthand.js.map +1 -0
  181. package/dist/client/chat/markdown-renderer.d.ts.map +1 -1
  182. package/dist/client/chat/markdown-renderer.js +8 -2
  183. package/dist/client/chat/markdown-renderer.js.map +1 -1
  184. package/dist/client/chat/message-components.d.ts +2 -1
  185. package/dist/client/chat/message-components.d.ts.map +1 -1
  186. package/dist/client/chat/message-components.js +11 -4
  187. package/dist/client/chat/message-components.js.map +1 -1
  188. package/dist/client/chat/runtime.d.ts.map +1 -1
  189. package/dist/client/chat/runtime.js +2 -1
  190. package/dist/client/chat/runtime.js.map +1 -1
  191. package/dist/client/chat/tool-call-display.d.ts +4 -1
  192. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  193. package/dist/client/chat/tool-call-display.js +14 -8
  194. package/dist/client/chat/tool-call-display.js.map +1 -1
  195. package/dist/client/chat-model-groups.d.ts.map +1 -1
  196. package/dist/client/chat-model-groups.js +3 -0
  197. package/dist/client/chat-model-groups.js.map +1 -1
  198. package/dist/client/client-status-requests.d.ts +14 -0
  199. package/dist/client/client-status-requests.d.ts.map +1 -0
  200. package/dist/client/client-status-requests.js +126 -0
  201. package/dist/client/client-status-requests.js.map +1 -0
  202. package/dist/client/settings/VoiceTranscriptionSection.js +1 -1
  203. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  204. package/dist/client/sse-event-processor.d.ts +7 -0
  205. package/dist/client/sse-event-processor.d.ts.map +1 -1
  206. package/dist/client/sse-event-processor.js +8 -3
  207. package/dist/client/sse-event-processor.js.map +1 -1
  208. package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
  209. package/dist/client/use-agent-engine-configured.js +29 -43
  210. package/dist/client/use-agent-engine-configured.js.map +1 -1
  211. package/dist/client/use-chat-models.d.ts.map +1 -1
  212. package/dist/client/use-chat-models.js +11 -11
  213. package/dist/client/use-chat-models.js.map +1 -1
  214. package/dist/client/use-chat-threads.d.ts.map +1 -1
  215. package/dist/client/use-chat-threads.js +23 -7
  216. package/dist/client/use-chat-threads.js.map +1 -1
  217. package/dist/client/use-session.d.ts.map +1 -1
  218. package/dist/client/use-session.js +4 -4
  219. package/dist/client/use-session.js.map +1 -1
  220. package/dist/collab/awareness.d.ts +2 -2
  221. package/dist/collab/awareness.d.ts.map +1 -1
  222. package/dist/db/client.d.ts.map +1 -1
  223. package/dist/db/client.js +48 -4
  224. package/dist/db/client.js.map +1 -1
  225. package/dist/db/ensure-additive-columns.d.ts.map +1 -1
  226. package/dist/db/ensure-additive-columns.js +32 -21
  227. package/dist/db/ensure-additive-columns.js.map +1 -1
  228. package/dist/db/migrations.d.ts +9 -0
  229. package/dist/db/migrations.d.ts.map +1 -1
  230. package/dist/db/migrations.js +14 -3
  231. package/dist/db/migrations.js.map +1 -1
  232. package/dist/extensions/actions.js +1 -1
  233. package/dist/extensions/actions.js.map +1 -1
  234. package/dist/mcp/approval-store.d.ts +16 -0
  235. package/dist/mcp/approval-store.d.ts.map +1 -0
  236. package/dist/mcp/approval-store.js +85 -0
  237. package/dist/mcp/approval-store.js.map +1 -0
  238. package/dist/mcp/build-server.d.ts +1 -34
  239. package/dist/mcp/build-server.d.ts.map +1 -1
  240. package/dist/mcp/build-server.js +220 -23
  241. package/dist/mcp/build-server.js.map +1 -1
  242. package/dist/mcp/embed-app.js +1 -1
  243. package/dist/mcp/embed-app.js.map +1 -1
  244. package/dist/mcp/oauth-client-metadata.d.ts +15 -0
  245. package/dist/mcp/oauth-client-metadata.d.ts.map +1 -0
  246. package/dist/mcp/oauth-client-metadata.js +297 -0
  247. package/dist/mcp/oauth-client-metadata.js.map +1 -0
  248. package/dist/mcp/oauth-route.d.ts.map +1 -1
  249. package/dist/mcp/oauth-route.js +39 -53
  250. package/dist/mcp/oauth-route.js.map +1 -1
  251. package/dist/mcp/screen-memory-stdio.d.ts.map +1 -1
  252. package/dist/mcp/screen-memory-stdio.js +304 -296
  253. package/dist/mcp/screen-memory-stdio.js.map +1 -1
  254. package/dist/mcp/server.d.ts +12 -25
  255. package/dist/mcp/server.d.ts.map +1 -1
  256. package/dist/mcp/server.js +24 -133
  257. package/dist/mcp/server.js.map +1 -1
  258. package/dist/mcp/stdio.d.ts.map +1 -1
  259. package/dist/mcp/stdio.js +36 -35
  260. package/dist/mcp/stdio.js.map +1 -1
  261. package/dist/mcp-client/manager.d.ts.map +1 -1
  262. package/dist/mcp-client/manager.js +6 -6
  263. package/dist/mcp-client/manager.js.map +1 -1
  264. package/dist/mcp-client/oauth-client.d.ts +13 -17
  265. package/dist/mcp-client/oauth-client.d.ts.map +1 -1
  266. package/dist/mcp-client/oauth-client.js +74 -16
  267. package/dist/mcp-client/oauth-client.js.map +1 -1
  268. package/dist/mcp-client/oauth-routes.d.ts +2 -2
  269. package/dist/mcp-client/oauth-routes.d.ts.map +1 -1
  270. package/dist/mcp-client/oauth-routes.js +16 -6
  271. package/dist/mcp-client/oauth-routes.js.map +1 -1
  272. package/dist/mcp-client/routes.js +5 -5
  273. package/dist/mcp-client/routes.js.map +1 -1
  274. package/dist/notifications/routes.d.ts +1 -1
  275. package/dist/progress/routes.d.ts +1 -1
  276. package/dist/resources/handlers.d.ts +1 -1
  277. package/dist/secrets/routes.d.ts +9 -9
  278. package/dist/server/agent-capabilities.d.ts.map +1 -1
  279. package/dist/server/agent-capabilities.js +21 -0
  280. package/dist/server/agent-capabilities.js.map +1 -1
  281. package/dist/server/agent-chat/action-filters-a2a.d.ts +14 -0
  282. package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -1
  283. package/dist/server/agent-chat/action-filters-a2a.js +16 -0
  284. package/dist/server/agent-chat/action-filters-a2a.js.map +1 -1
  285. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  286. package/dist/server/agent-chat-plugin.js +11 -1
  287. package/dist/server/agent-chat-plugin.js.map +1 -1
  288. package/dist/server/transcribe-voice.js +12 -6
  289. package/dist/server/transcribe-voice.js.map +1 -1
  290. package/dist/templates/chat/.agents/skills/security/SKILL.md +13 -2
  291. package/dist/templates/default/.agents/skills/security/SKILL.md +13 -2
  292. package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +5 -2
  293. package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +18 -0
  294. package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +13 -2
  295. package/docs/content/template-design-collaboration-and-full-apps.mdx +3 -1
  296. package/package.json +7 -4
  297. package/src/a2a/client.ts +18 -4
  298. package/src/a2a/server.ts +19 -3
  299. package/src/a2a/types.ts +7 -0
  300. package/src/action.ts +43 -16
  301. package/src/agent/engine/ai-sdk-engine.ts +14 -10
  302. package/src/agent/production-agent.ts +41 -3
  303. package/src/agent/thread-data-builder.ts +5 -0
  304. package/src/chat-threads/migrations.ts +53 -0
  305. package/src/cli/create.ts +4 -0
  306. package/src/cli/skills-content/design-visual-edit-skill.ts +36 -16
  307. package/src/cli/skills.ts +16 -0
  308. package/src/client/AgentPanel.tsx +9 -5
  309. package/src/client/AssistantChat.tsx +138 -46
  310. package/src/client/MultiTabAssistantChat.tsx +16 -10
  311. package/src/client/agent-chat-adapter.ts +21 -3
  312. package/src/client/analytics.ts +159 -102
  313. package/src/client/chat/legacy-chart-shorthand.tsx +479 -0
  314. package/src/client/chat/markdown-renderer.tsx +23 -3
  315. package/src/client/chat/message-components.tsx +12 -5
  316. package/src/client/chat/runtime.ts +2 -1
  317. package/src/client/chat/tool-call-display.tsx +25 -2
  318. package/src/client/chat-model-groups.ts +3 -0
  319. package/src/client/client-status-requests.ts +161 -0
  320. package/src/client/settings/VoiceTranscriptionSection.tsx +2 -2
  321. package/src/client/sse-event-processor.ts +15 -3
  322. package/src/client/use-agent-engine-configured.ts +54 -50
  323. package/src/client/use-chat-models.ts +16 -11
  324. package/src/client/use-chat-threads.ts +32 -9
  325. package/src/client/use-session.ts +4 -5
  326. package/src/db/client.ts +83 -8
  327. package/src/db/ensure-additive-columns.ts +31 -20
  328. package/src/db/migrations.ts +22 -2
  329. package/src/extensions/actions.ts +1 -1
  330. package/src/mcp/approval-store.ts +99 -0
  331. package/src/mcp/build-server.ts +579 -303
  332. package/src/mcp/embed-app.ts +1 -1
  333. package/src/mcp/oauth-client-metadata.ts +380 -0
  334. package/src/mcp/oauth-route.ts +57 -52
  335. package/src/mcp/screen-memory-stdio.ts +400 -378
  336. package/src/mcp/server.ts +29 -145
  337. package/src/mcp/stdio.ts +72 -80
  338. package/src/mcp-client/manager.ts +6 -10
  339. package/src/mcp-client/oauth-client.ts +127 -36
  340. package/src/mcp-client/oauth-routes.ts +16 -6
  341. package/src/mcp-client/routes.ts +6 -5
  342. package/src/server/agent-capabilities.ts +20 -0
  343. package/src/server/agent-chat/action-filters-a2a.ts +27 -0
  344. package/src/server/agent-chat-plugin.ts +18 -0
  345. package/src/server/transcribe-voice.ts +14 -5
  346. package/src/templates/chat/.agents/skills/security/SKILL.md +13 -2
  347. package/src/templates/default/.agents/skills/security/SKILL.md +13 -2
  348. package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +5 -2
  349. package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +18 -0
  350. package/src/templates/workspace-core/.agents/skills/security/SKILL.md +13 -2
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/client/chat/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChatModelAdapter, ChatModelRunResult } from \"@assistant-ui/react\";\n\nimport type { ActionChatUIConfig } from \"../../action-ui.js\";\nimport type { AgentMcpAppPayload } from \"../../mcp-client/app-result.js\";\nimport type { ReasoningEffort } from \"../../shared/reasoning-effort.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport { formatChatErrorText, normalizeChatError } from \"../error-format.js\";\nimport {\n settleInterruptedToolCalls,\n type ContentPart,\n type SSEEvent,\n} from \"../sse-event-processor.js\";\n\nexport type AgentChatRuntimeId = string;\nexport type AgentChatRuntimeSessionId = string;\nexport type AgentChatRuntimeTurnId = string;\nexport type AgentChatRuntimeMessageId = string;\nexport type AgentChatRuntimeToolCallId = string;\nexport type AgentChatRuntimeMetadata = Record<string, unknown>;\nexport type AgentChatRuntimeAwaitable<T> = T | Promise<T>;\n\nexport type AgentChatRuntimeKind =\n | \"agent-native\"\n | \"external-agent\"\n | \"code-agent\"\n | (string & {});\n\nexport type AgentChatRuntimeRole = \"system\" | \"user\" | \"assistant\" | \"tool\";\n\nexport interface AgentChatRuntimeContentPartBase<\n TType extends string = string,\n> {\n readonly type: TType;\n readonly id?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeTextPart extends AgentChatRuntimeContentPartBase<\"text\"> {\n readonly text: string;\n}\n\nexport interface AgentChatRuntimeReasoningPart extends AgentChatRuntimeContentPartBase<\"reasoning\"> {\n readonly text: string;\n readonly signature?: string;\n}\n\nexport interface AgentChatRuntimeImagePart extends AgentChatRuntimeContentPartBase<\"image\"> {\n readonly data?: string;\n readonly url?: string;\n readonly mediaType?: string;\n readonly alt?: string;\n}\n\nexport interface AgentChatRuntimeFilePart extends AgentChatRuntimeContentPartBase<\"file\"> {\n readonly data?: string;\n readonly url?: string;\n readonly mediaType?: string;\n readonly filename?: string;\n}\n\nexport interface AgentChatRuntimeToolCallPart extends AgentChatRuntimeContentPartBase<\"tool-call\"> {\n readonly toolCallId: AgentChatRuntimeToolCallId;\n readonly toolName: string;\n readonly input?: unknown;\n readonly inputText?: string;\n}\n\nexport interface AgentChatRuntimeToolResultPart extends AgentChatRuntimeContentPartBase<\"tool-result\"> {\n readonly toolCallId: AgentChatRuntimeToolCallId;\n readonly toolName?: string;\n readonly result?: unknown;\n readonly resultText?: string;\n readonly isError?: boolean;\n readonly mcpApp?: AgentMcpAppPayload;\n readonly chatUI?: ActionChatUIConfig;\n}\n\nexport interface AgentChatRuntimeDataPart extends AgentChatRuntimeContentPartBase<\"data\"> {\n readonly data: unknown;\n readonly mediaType?: string;\n readonly title?: string;\n}\n\nexport interface AgentChatRuntimeCustomContentPart extends AgentChatRuntimeContentPartBase {\n readonly [key: string]: unknown;\n}\n\nexport type AgentChatRuntimeKnownContentPart =\n | AgentChatRuntimeTextPart\n | AgentChatRuntimeReasoningPart\n | AgentChatRuntimeImagePart\n | AgentChatRuntimeFilePart\n | AgentChatRuntimeToolCallPart\n | AgentChatRuntimeToolResultPart\n | AgentChatRuntimeDataPart;\n\nexport type AgentChatRuntimeContentPart<\n TCustomPart extends AgentChatRuntimeCustomContentPart = never,\n> = AgentChatRuntimeKnownContentPart | TCustomPart;\n\nexport interface AgentChatRuntimeMessage<\n TContentPart extends AgentChatRuntimeContentPartBase =\n AgentChatRuntimeKnownContentPart,\n> {\n readonly id: AgentChatRuntimeMessageId;\n readonly role: AgentChatRuntimeRole;\n readonly content: readonly TContentPart[];\n readonly createdAt?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeAttachment {\n readonly id?: string;\n readonly name: string;\n readonly mediaType?: string;\n readonly data?: string;\n readonly url?: string;\n readonly text?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeToolDefinition {\n readonly name: string;\n readonly description?: string;\n readonly inputSchema?: Record<string, unknown>;\n readonly readOnly?: boolean;\n readonly destructive?: boolean;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeToolCall {\n readonly id: AgentChatRuntimeToolCallId;\n readonly name: string;\n readonly input?: unknown;\n readonly inputText?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport type AgentChatRuntimeToolStatus =\n | \"pending\"\n | \"running\"\n | \"completed\"\n | \"failed\"\n | \"cancelled\";\n\nexport interface AgentChatRuntimeUsage {\n readonly inputTokens?: number;\n readonly outputTokens?: number;\n readonly totalTokens?: number;\n readonly reasoningTokens?: number;\n readonly cacheReadTokens?: number;\n readonly cacheWriteTokens?: number;\n readonly costCents?: number;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeMessageCapabilities {\n readonly streaming: boolean;\n readonly history?: boolean;\n readonly structuredContent?: boolean;\n readonly multimodal?: boolean;\n readonly attachments?: boolean;\n}\n\nexport interface AgentChatRuntimeToolCapabilities {\n readonly events: boolean;\n readonly hostTools?: boolean;\n readonly inputStreaming?: boolean;\n readonly resultStreaming?: boolean;\n readonly approvals?: boolean;\n readonly mcpApps?: boolean;\n}\n\nexport interface AgentChatRuntimeSessionCapabilities {\n readonly create: boolean;\n readonly restore?: boolean;\n readonly list?: boolean;\n readonly fork?: boolean;\n readonly detach?: boolean;\n readonly persistent?: boolean;\n}\n\nexport interface AgentChatRuntimeCancellationCapabilities {\n readonly abortSignal?: boolean;\n readonly explicitCancel?: boolean;\n readonly interrupt?: boolean;\n}\n\nexport interface AgentChatRuntimeModelCapabilities {\n readonly selectable?: boolean;\n readonly reasoningEffort?: boolean;\n readonly temperature?: boolean;\n readonly providerOptions?: boolean;\n}\n\nexport interface AgentChatRuntimeArtifactCapabilities {\n readonly files?: boolean;\n readonly links?: boolean;\n readonly patches?: boolean;\n readonly progress?: boolean;\n}\n\nexport interface AgentChatRuntimeCapabilities {\n readonly messages: AgentChatRuntimeMessageCapabilities;\n readonly tools?: AgentChatRuntimeToolCapabilities;\n readonly sessions?: AgentChatRuntimeSessionCapabilities;\n readonly cancellation?: AgentChatRuntimeCancellationCapabilities;\n readonly models?: AgentChatRuntimeModelCapabilities;\n readonly artifacts?: AgentChatRuntimeArtifactCapabilities;\n readonly custom?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeCreateSessionInput {\n readonly id?: AgentChatRuntimeSessionId;\n readonly threadId?: string;\n readonly title?: string;\n readonly messages?: readonly AgentChatRuntimeMessage[];\n readonly resumeState?: unknown;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly abortSignal?: AbortSignal;\n}\n\nexport interface AgentChatRuntimeListSessionsInput {\n readonly threadId?: string;\n readonly limit?: number;\n readonly cursor?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly abortSignal?: AbortSignal;\n}\n\nexport type AgentChatRuntimeSessionStatus =\n | \"idle\"\n | \"running\"\n | \"waiting\"\n | \"cancelled\"\n | \"completed\"\n | \"error\";\n\nexport interface AgentChatRuntimeSessionSummary {\n readonly id: AgentChatRuntimeSessionId;\n readonly runtimeId: AgentChatRuntimeId;\n readonly threadId?: string;\n readonly title?: string;\n readonly status?: AgentChatRuntimeSessionStatus;\n readonly createdAt?: string;\n readonly updatedAt?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeSessionSnapshot extends AgentChatRuntimeSessionSummary {\n readonly messages?: readonly AgentChatRuntimeMessage[];\n readonly resumeState?: unknown;\n}\n\nexport interface AgentChatRuntimeTurnInput {\n readonly prompt?: string;\n readonly messages?: readonly AgentChatRuntimeMessage[];\n readonly attachments?: readonly AgentChatRuntimeAttachment[];\n readonly tools?: readonly AgentChatRuntimeToolDefinition[];\n readonly model?: string;\n readonly reasoningEffort?: ReasoningEffort;\n readonly temperature?: number;\n readonly providerOptions?: Record<string, unknown>;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly abortSignal?: AbortSignal;\n}\n\nexport interface AgentChatRuntimeApprovalResponse {\n readonly id: string;\n readonly approved: boolean;\n readonly message?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeContinueInput {\n readonly turnId?: AgentChatRuntimeTurnId;\n readonly prompt?: string;\n readonly approval?: AgentChatRuntimeApprovalResponse;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly abortSignal?: AbortSignal;\n}\n\nexport interface AgentChatRuntimeCancelInput {\n readonly sessionId?: AgentChatRuntimeSessionId;\n readonly turnId?: AgentChatRuntimeTurnId;\n readonly runId?: string;\n readonly reason?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly abortSignal?: AbortSignal;\n}\n\nexport type AgentChatRuntimeCancelStatus =\n | \"cancelled\"\n | \"not-found\"\n | \"already-finished\"\n | \"unsupported\";\n\nexport interface AgentChatRuntimeCancelResult {\n readonly status: AgentChatRuntimeCancelStatus;\n readonly message?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeEventBase<TType extends string = string> {\n readonly type: TType;\n readonly id?: string;\n readonly sessionId?: AgentChatRuntimeSessionId;\n readonly turnId?: AgentChatRuntimeTurnId;\n readonly timestamp?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeMessageStartEvent extends AgentChatRuntimeEventBase<\"message-start\"> {\n readonly message: AgentChatRuntimeMessage;\n}\n\nexport type AgentChatRuntimeMessageDelta =\n | {\n readonly type: \"text\";\n readonly text: string;\n readonly partId?: string;\n }\n | {\n readonly type: \"reasoning\";\n readonly text: string;\n readonly partId?: string;\n readonly signature?: string;\n }\n | {\n readonly type: \"data\";\n readonly data: unknown;\n readonly partId?: string;\n readonly mediaType?: string;\n };\n\nexport interface AgentChatRuntimeMessageDeltaEvent extends AgentChatRuntimeEventBase<\"message-delta\"> {\n readonly messageId: AgentChatRuntimeMessageId;\n readonly delta: AgentChatRuntimeMessageDelta;\n}\n\nexport interface AgentChatRuntimeMessageDoneEvent extends AgentChatRuntimeEventBase<\"message-done\"> {\n readonly message: AgentChatRuntimeMessage;\n}\n\nexport interface AgentChatRuntimeToolStartEvent extends AgentChatRuntimeEventBase<\"tool-start\"> {\n readonly toolCall: AgentChatRuntimeToolCall;\n}\n\nexport interface AgentChatRuntimeToolDeltaEvent extends AgentChatRuntimeEventBase<\"tool-delta\"> {\n readonly toolCallId: AgentChatRuntimeToolCallId;\n readonly toolName?: string;\n readonly inputTextDelta?: string;\n readonly resultTextDelta?: string;\n}\n\nexport interface AgentChatRuntimeToolDoneEvent extends AgentChatRuntimeEventBase<\"tool-done\"> {\n readonly toolCallId: AgentChatRuntimeToolCallId;\n readonly toolName: string;\n readonly status: AgentChatRuntimeToolStatus;\n readonly result?: unknown;\n readonly resultText?: string;\n readonly error?: string;\n readonly mcpApp?: AgentMcpAppPayload;\n readonly chatUI?: ActionChatUIConfig;\n}\n\nexport interface AgentChatRuntimeApprovalRequestEvent extends AgentChatRuntimeEventBase<\"approval-request\"> {\n readonly approvalId: string;\n readonly toolCallId?: AgentChatRuntimeToolCallId;\n readonly toolName?: string;\n readonly message: string;\n readonly input?: unknown;\n}\n\nexport interface AgentChatRuntimeApprovalResolvedEvent extends AgentChatRuntimeEventBase<\"approval-resolved\"> {\n readonly approvalId: string;\n readonly approved: boolean;\n readonly message?: string;\n}\n\nexport interface AgentChatRuntimeStatusEvent extends AgentChatRuntimeEventBase<\"status\"> {\n readonly level?: \"info\" | \"warning\" | \"error\";\n readonly message: string;\n readonly code?: string;\n}\n\nexport interface AgentChatRuntimeArtifactEvent extends AgentChatRuntimeEventBase<\"artifact\"> {\n readonly artifact: {\n readonly id?: string;\n readonly kind: string;\n readonly title?: string;\n readonly url?: string;\n readonly path?: string;\n readonly data?: unknown;\n readonly metadata?: AgentChatRuntimeMetadata;\n };\n}\n\nexport interface AgentChatRuntimeFileEvent extends AgentChatRuntimeEventBase<\"file\"> {\n readonly path: string;\n readonly operation?: \"create\" | \"update\" | \"delete\" | \"rename\" | \"unknown\";\n readonly summary?: string;\n}\n\nexport interface AgentChatRuntimeUsageEvent extends AgentChatRuntimeEventBase<\"usage\"> {\n readonly usage: AgentChatRuntimeUsage;\n}\n\nexport interface AgentChatRuntimeErrorEvent extends AgentChatRuntimeEventBase<\"error\"> {\n readonly error: string;\n readonly code?: string;\n readonly recoverable?: boolean;\n readonly cause?: unknown;\n}\n\nexport type AgentChatRuntimeDoneReason =\n | \"complete\"\n | \"cancelled\"\n | \"error\"\n | \"interrupted\"\n | \"length\"\n | \"tool-use\"\n | (string & {});\n\nexport interface AgentChatRuntimeDoneEvent extends AgentChatRuntimeEventBase<\"done\"> {\n readonly reason?: AgentChatRuntimeDoneReason;\n}\n\nexport interface AgentChatRuntimeCustomEvent extends AgentChatRuntimeEventBase {\n readonly [key: string]: unknown;\n}\n\nexport type AgentChatRuntimeKnownEvent =\n | AgentChatRuntimeMessageStartEvent\n | AgentChatRuntimeMessageDeltaEvent\n | AgentChatRuntimeMessageDoneEvent\n | AgentChatRuntimeToolStartEvent\n | AgentChatRuntimeToolDeltaEvent\n | AgentChatRuntimeToolDoneEvent\n | AgentChatRuntimeApprovalRequestEvent\n | AgentChatRuntimeApprovalResolvedEvent\n | AgentChatRuntimeStatusEvent\n | AgentChatRuntimeArtifactEvent\n | AgentChatRuntimeFileEvent\n | AgentChatRuntimeUsageEvent\n | AgentChatRuntimeErrorEvent\n | AgentChatRuntimeDoneEvent;\n\nexport type AgentChatRuntimeEvent<\n TCustomEvent extends AgentChatRuntimeCustomEvent = never,\n> = AgentChatRuntimeKnownEvent | TCustomEvent;\n\nexport interface AgentChatRuntimeTurn<\n TEvent extends AgentChatRuntimeEventBase = AgentChatRuntimeKnownEvent,\n> {\n readonly id?: AgentChatRuntimeTurnId;\n readonly sessionId: AgentChatRuntimeSessionId;\n readonly runId?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly events: AsyncIterable<TEvent>;\n cancel?(\n input?: AgentChatRuntimeCancelInput,\n ): Promise<AgentChatRuntimeCancelResult>;\n}\n\nexport interface AgentChatRuntimeSendMessageInput extends AgentChatRuntimeTurnInput {\n readonly sessionId?: AgentChatRuntimeSessionId;\n}\n\nexport interface AgentChatRuntimeSubscribeInput {\n readonly sessionId?: AgentChatRuntimeSessionId;\n readonly turnId?: AgentChatRuntimeTurnId;\n readonly runId?: string;\n readonly after?: number;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly abortSignal?: AbortSignal;\n}\n\nexport interface AgentChatRuntimeResumeInput extends AgentChatRuntimeSubscribeInput {\n readonly prompt?: string;\n}\n\nexport interface AgentChatRuntimeSession<\n TEvent extends AgentChatRuntimeEventBase = AgentChatRuntimeKnownEvent,\n> {\n readonly id: AgentChatRuntimeSessionId;\n readonly runtimeId: AgentChatRuntimeId;\n readonly threadId?: string;\n readonly capabilities?: Partial<AgentChatRuntimeCapabilities>;\n sendMessage?(\n input: AgentChatRuntimeTurnInput,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeTurn<TEvent>>;\n startTurn(\n input: AgentChatRuntimeTurnInput,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeTurn<TEvent>>;\n continueTurn?(\n input?: AgentChatRuntimeContinueInput,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeTurn<TEvent>>;\n cancelTurn?(\n input?: AgentChatRuntimeCancelInput,\n ): Promise<AgentChatRuntimeCancelResult>;\n snapshot?(): AgentChatRuntimeAwaitable<AgentChatRuntimeSessionSnapshot>;\n dispose?(): AgentChatRuntimeAwaitable<void>;\n}\n\nexport interface AgentChatRuntime<\n TEvent extends AgentChatRuntimeEventBase = AgentChatRuntimeKnownEvent,\n> {\n readonly id: AgentChatRuntimeId;\n readonly kind: AgentChatRuntimeKind;\n readonly label: string;\n readonly description?: string;\n readonly capabilities: AgentChatRuntimeCapabilities;\n createSession(\n input?: AgentChatRuntimeCreateSessionInput,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeSession<TEvent>>;\n restoreSession?(\n snapshot: AgentChatRuntimeSessionSnapshot,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeSession<TEvent>>;\n getSession?(input: {\n readonly sessionId: AgentChatRuntimeSessionId;\n readonly abortSignal?: AbortSignal;\n }): AgentChatRuntimeAwaitable<AgentChatRuntimeSession<TEvent> | null>;\n listSessions?(\n input?: AgentChatRuntimeListSessionsInput,\n ): AgentChatRuntimeAwaitable<readonly AgentChatRuntimeSessionSummary[]>;\n sendMessage?(\n input: AgentChatRuntimeSendMessageInput,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeTurn<TEvent>>;\n subscribe?(\n input: AgentChatRuntimeSubscribeInput,\n ): AgentChatRuntimeAwaitable<AsyncIterable<TEvent>>;\n resume?(\n input: AgentChatRuntimeResumeInput,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeTurn<TEvent>>;\n cancel?(\n input: AgentChatRuntimeCancelInput,\n ): Promise<AgentChatRuntimeCancelResult>;\n}\n\ntype FetchLike = typeof fetch;\ntype HeadersFactory =\n | HeadersInit\n | ((input: {\n sessionId?: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n }) => HeadersInit | Promise<HeadersInit>);\n\nexport interface CreateHttpAgentChatRuntimeOptions<\n TEvent extends AgentChatRuntimeEventBase = AgentChatRuntimeKnownEvent,\n> {\n readonly id?: AgentChatRuntimeId;\n readonly kind?: AgentChatRuntimeKind;\n readonly label?: string;\n readonly description?: string;\n readonly endpoint:\n | string\n | ((input: {\n session: AgentChatRuntimeSessionSummary;\n turn: AgentChatRuntimeTurnInput;\n }) => string | URL);\n readonly method?: \"POST\" | \"PUT\";\n readonly headers?: HeadersFactory;\n readonly credentials?: RequestCredentials;\n readonly fetch?: FetchLike;\n readonly capabilities?: Partial<AgentChatRuntimeCapabilities>;\n readonly mapRequest?: (input: {\n session: AgentChatRuntimeSessionSummary;\n turn: AgentChatRuntimeTurnInput;\n turnId: AgentChatRuntimeTurnId;\n }) => unknown;\n readonly mapEvent?: (\n event: unknown,\n context: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n },\n ) => TEvent | readonly TEvent[] | null;\n readonly cancelEndpoint?:\n | string\n | ((input: AgentChatRuntimeCancelInput) => string | URL | null);\n readonly resumeEndpoint?:\n | string\n | ((input: AgentChatRuntimeSubscribeInput) => string | URL | null);\n readonly listSessionsEndpoint?: string | URL;\n readonly getSessionEndpoint?:\n | string\n | ((input: { sessionId: AgentChatRuntimeSessionId }) => string | URL);\n}\n\nexport interface CreateAgentNativeChatRuntimeOptions {\n readonly id?: AgentChatRuntimeId;\n readonly label?: string;\n readonly description?: string;\n readonly apiUrl?: string;\n readonly headers?: HeadersFactory;\n readonly fetch?: FetchLike;\n readonly threadId?: string;\n readonly browserTabId?: string;\n readonly surface?: \"app\" | \"dev-frame\";\n readonly mode?: \"act\" | \"plan\";\n readonly model?: string;\n readonly engine?: string;\n readonly effort?: ReasoningEffort;\n readonly scope?: unknown;\n}\n\nexport interface CreateAgentChatRuntimeAdapterOptions {\n readonly sessionId?: AgentChatRuntimeSessionId;\n readonly threadId?: string;\n readonly modelRef?: { current: string | undefined };\n readonly effortRef?: { current: ReasoningEffort | undefined };\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nconst DEFAULT_RUNTIME_CAPABILITIES: AgentChatRuntimeCapabilities = {\n messages: {\n streaming: true,\n history: true,\n structuredContent: true,\n attachments: true,\n },\n tools: {\n events: true,\n hostTools: true,\n resultStreaming: true,\n mcpApps: true,\n },\n sessions: {\n create: true,\n restore: true,\n persistent: true,\n },\n cancellation: {\n abortSignal: true,\n explicitCancel: true,\n },\n models: {\n selectable: true,\n reasoningEffort: true,\n },\n artifacts: {\n files: true,\n links: true,\n progress: true,\n },\n};\n\nfunction mergeCapabilities(\n overrides?: Partial<AgentChatRuntimeCapabilities>,\n): AgentChatRuntimeCapabilities {\n return {\n ...DEFAULT_RUNTIME_CAPABILITIES,\n ...overrides,\n messages: {\n ...DEFAULT_RUNTIME_CAPABILITIES.messages,\n ...overrides?.messages,\n },\n tools: {\n ...DEFAULT_RUNTIME_CAPABILITIES.tools,\n ...overrides?.tools,\n events:\n overrides?.tools?.events ?? DEFAULT_RUNTIME_CAPABILITIES.tools!.events,\n },\n sessions: {\n ...DEFAULT_RUNTIME_CAPABILITIES.sessions,\n ...overrides?.sessions,\n create:\n overrides?.sessions?.create ??\n DEFAULT_RUNTIME_CAPABILITIES.sessions!.create,\n },\n cancellation: {\n ...DEFAULT_RUNTIME_CAPABILITIES.cancellation,\n ...overrides?.cancellation,\n },\n models: { ...DEFAULT_RUNTIME_CAPABILITIES.models, ...overrides?.models },\n artifacts: {\n ...DEFAULT_RUNTIME_CAPABILITIES.artifacts,\n ...overrides?.artifacts,\n },\n };\n}\n\nfunction createRuntimeId(prefix: string): string {\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto.randomUUID === \"function\"\n ) {\n return `${prefix}-${crypto.randomUUID()}`;\n }\n return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;\n}\n\nfunction createAbortController(signal?: AbortSignal): {\n controller: AbortController;\n cleanup: () => void;\n} {\n const controller = new AbortController();\n if (!signal) return { controller, cleanup: () => {} };\n if (signal.aborted) controller.abort();\n const abort = () => controller.abort();\n signal.addEventListener(\"abort\", abort, { once: true });\n return {\n controller,\n cleanup: () => signal.removeEventListener(\"abort\", abort),\n };\n}\n\nasync function resolveHeaders(\n headers: HeadersFactory | undefined,\n input: {\n sessionId?: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n },\n): Promise<Headers> {\n const resolved =\n typeof headers === \"function\" ? await headers(input) : headers;\n return new Headers(resolved);\n}\n\nfunction normalizeEndpoint(value: string | URL): string {\n return typeof value === \"string\" ? value : value.toString();\n}\n\nfunction isRuntimeEvent(value: unknown): value is AgentChatRuntimeEventBase {\n return (\n !!value &&\n typeof value === \"object\" &&\n typeof (value as { type?: unknown }).type === \"string\"\n );\n}\n\nfunction parseJsonEvent(raw: string): unknown | null {\n const trimmed = raw.trim();\n if (!trimmed || trimmed === \"[DONE]\") return null;\n try {\n return JSON.parse(trimmed);\n } catch {\n return null;\n }\n}\n\nasync function* readJsonEventStream(\n body: ReadableStream<Uint8Array>,\n): AsyncGenerator<unknown> {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let pendingSseData: string[] = [];\n\n const flushSseData = function* (): Generator<unknown> {\n if (pendingSseData.length === 0) return;\n const parsed = parseJsonEvent(pendingSseData.join(\"\\n\"));\n pendingSseData = [];\n if (parsed) yield parsed;\n };\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n if (line.startsWith(\"data:\")) {\n pendingSseData.push(line.slice(5).trimStart());\n continue;\n }\n if (line.trim() === \"\") {\n yield* flushSseData();\n continue;\n }\n const parsed = parseJsonEvent(line);\n if (parsed) yield parsed;\n }\n }\n\n if (buffer.trim()) {\n const parsed = parseJsonEvent(buffer);\n if (parsed) yield parsed;\n }\n yield* flushSseData();\n } finally {\n try {\n reader.releaseLock();\n } catch {\n // Some browser runtimes consider a cancelled stream locked for a tick.\n }\n }\n}\n\nfunction textResponseEvents(\n text: string,\n sessionId: AgentChatRuntimeSessionId,\n turnId?: AgentChatRuntimeTurnId,\n): AgentChatRuntimeKnownEvent[] {\n const message: AgentChatRuntimeMessage = {\n id: createRuntimeId(\"message\"),\n role: \"assistant\",\n content: [],\n };\n return [\n { type: \"message-start\", sessionId, turnId, message },\n ...(text\n ? [\n {\n type: \"message-delta\" as const,\n sessionId,\n turnId,\n messageId: message.id,\n delta: { type: \"text\" as const, text },\n },\n ]\n : []),\n { type: \"message-done\", sessionId, turnId, message },\n { type: \"done\", sessionId, turnId, reason: \"complete\" },\n ];\n}\n\nasync function* eventsFromJsonResponse(\n value: unknown,\n sessionId: AgentChatRuntimeSessionId,\n turnId?: AgentChatRuntimeTurnId,\n): AsyncGenerator<AgentChatRuntimeEvent> {\n if (Array.isArray(value)) {\n for (const item of value) {\n if (isRuntimeEvent(item)) yield item as AgentChatRuntimeEvent;\n }\n return;\n }\n if (!value || typeof value !== \"object\") return;\n const record = value as Record<string, unknown>;\n if (Array.isArray(record.events)) {\n for (const item of record.events) {\n if (isRuntimeEvent(item)) yield item as AgentChatRuntimeEvent;\n }\n return;\n }\n const text =\n typeof record.message === \"string\"\n ? record.message\n : typeof record.text === \"string\"\n ? record.text\n : \"\";\n if (text) {\n for (const event of textResponseEvents(text, sessionId, turnId)) {\n yield event;\n }\n }\n}\n\nfunction defaultMapHttpRuntimeEvent(\n event: unknown,\n _context?: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n },\n): AgentChatRuntimeEvent | readonly AgentChatRuntimeEvent[] | null {\n if (!isRuntimeEvent(event)) return null;\n return event as AgentChatRuntimeEvent;\n}\n\nfunction normalizeMappedEvents<TEvent extends AgentChatRuntimeEventBase>(\n mapped: TEvent | readonly TEvent[] | null,\n): readonly TEvent[] {\n if (!mapped) return [];\n return Array.isArray(mapped)\n ? (mapped as readonly TEvent[])\n : [mapped as TEvent];\n}\n\nasync function* streamResponseEvents<TEvent extends AgentChatRuntimeEventBase>(\n response: Response,\n input: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n mapEvent: (\n event: unknown,\n context: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n },\n ) => TEvent | readonly TEvent[] | null;\n },\n): AsyncGenerator<TEvent> {\n const context = {\n sessionId: input.sessionId,\n turnId: input.turnId,\n runId: input.runId,\n };\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (response.body && !contentType.includes(\"application/json\")) {\n for await (const raw of readJsonEventStream(response.body)) {\n for (const event of normalizeMappedEvents(input.mapEvent(raw, context))) {\n yield event;\n }\n }\n return;\n }\n\n const json = await response.json().catch(() => null);\n for await (const event of eventsFromJsonResponse(\n json,\n input.sessionId,\n input.turnId,\n )) {\n for (const mapped of normalizeMappedEvents(\n input.mapEvent(event, context),\n )) {\n yield mapped;\n }\n }\n}\n\nfunction defaultHttpRuntimeRequest(input: {\n session: AgentChatRuntimeSessionSummary;\n turn: AgentChatRuntimeTurnInput;\n turnId: AgentChatRuntimeTurnId;\n}) {\n return {\n sessionId: input.session.id,\n threadId: input.session.threadId,\n turnId: input.turnId,\n prompt: input.turn.prompt,\n messages: input.turn.messages,\n attachments: input.turn.attachments,\n tools: input.turn.tools,\n model: input.turn.model,\n reasoningEffort: input.turn.reasoningEffort,\n temperature: input.turn.temperature,\n providerOptions: input.turn.providerOptions,\n metadata: input.turn.metadata,\n };\n}\n\nasync function readErrorText(response: Response): Promise<string> {\n const text = await response.text().catch(() => \"\");\n if (!text) return `HTTP ${response.status}`;\n try {\n const parsed = JSON.parse(text) as { error?: unknown; message?: unknown };\n if (typeof parsed.error === \"string\") return parsed.error;\n if (typeof parsed.message === \"string\") return parsed.message;\n } catch {\n // Keep raw text.\n }\n return text.slice(0, 500);\n}\n\nexport function createHttpAgentChatRuntime<\n TEvent extends AgentChatRuntimeEventBase = AgentChatRuntimeKnownEvent,\n>(\n options: CreateHttpAgentChatRuntimeOptions<TEvent>,\n): AgentChatRuntime<TEvent> {\n const fetchImpl = options.fetch ?? fetch;\n const capabilities = mergeCapabilities(options.capabilities);\n const runtimeId = options.id ?? \"external:http\";\n const mapEvent =\n options.mapEvent ??\n (defaultMapHttpRuntimeEvent as (\n event: unknown,\n context: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n },\n ) => TEvent | readonly TEvent[] | null);\n\n const createSessionObject = (\n input?: AgentChatRuntimeCreateSessionInput,\n ): AgentChatRuntimeSession<TEvent> => {\n const sessionId =\n input?.id ?? input?.threadId ?? createRuntimeId(\"session\");\n const summary: AgentChatRuntimeSessionSummary = {\n id: sessionId,\n runtimeId,\n threadId: input?.threadId,\n title: input?.title,\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n metadata: input?.metadata,\n };\n\n const startTurn = async (\n turn: AgentChatRuntimeTurnInput,\n ): Promise<AgentChatRuntimeTurn<TEvent>> => {\n const turnId = createRuntimeId(\"turn\");\n const { controller, cleanup } = createAbortController(turn.abortSignal);\n const endpoint =\n typeof options.endpoint === \"function\"\n ? options.endpoint({ session: summary, turn })\n : options.endpoint;\n const headers = await resolveHeaders(options.headers, {\n sessionId,\n turnId,\n });\n if (!headers.has(\"Content-Type\"))\n headers.set(\"Content-Type\", \"application/json\");\n const response = await fetchImpl(normalizeEndpoint(endpoint), {\n method: options.method ?? \"POST\",\n headers,\n credentials: options.credentials,\n body: JSON.stringify(\n options.mapRequest\n ? options.mapRequest({ session: summary, turn, turnId })\n : defaultHttpRuntimeRequest({ session: summary, turn, turnId }),\n ),\n signal: controller.signal,\n });\n if (!response.ok) {\n cleanup();\n throw new Error(await readErrorText(response));\n }\n\n const runId = response.headers.get(\"X-Run-Id\") ?? undefined;\n const events = (async function* () {\n try {\n yield* streamResponseEvents(response, {\n sessionId,\n turnId,\n runId,\n mapEvent,\n });\n } finally {\n cleanup();\n }\n })();\n\n return {\n id: turnId,\n sessionId,\n runId,\n events,\n cancel: async (cancelInput) => {\n controller.abort();\n if (!options.cancelEndpoint) return { status: \"cancelled\" };\n const endpoint =\n typeof options.cancelEndpoint === \"function\"\n ? options.cancelEndpoint({\n ...cancelInput,\n sessionId,\n turnId,\n runId,\n })\n : options.cancelEndpoint;\n if (!endpoint) return { status: \"unsupported\" };\n const cancelHeaders = await resolveHeaders(options.headers, {\n sessionId,\n turnId,\n });\n if (!cancelHeaders.has(\"Content-Type\")) {\n cancelHeaders.set(\"Content-Type\", \"application/json\");\n }\n const cancelResponse = await fetchImpl(normalizeEndpoint(endpoint), {\n method: \"POST\",\n headers: cancelHeaders,\n credentials: options.credentials,\n body: JSON.stringify({\n sessionId,\n turnId,\n runId,\n reason: cancelInput?.reason ?? \"user\",\n metadata: cancelInput?.metadata,\n }),\n signal: cancelInput?.abortSignal,\n });\n return cancelResponse.ok\n ? { status: \"cancelled\" }\n : {\n status: \"unsupported\",\n message: await readErrorText(cancelResponse),\n };\n },\n };\n };\n\n return {\n id: sessionId,\n runtimeId,\n threadId: input?.threadId,\n capabilities,\n sendMessage: startTurn,\n startTurn,\n snapshot: () => ({\n ...summary,\n status: \"idle\",\n updatedAt: new Date().toISOString(),\n messages: input?.messages,\n resumeState: input?.resumeState,\n }),\n dispose: () => undefined,\n };\n };\n\n const runtime: AgentChatRuntime<TEvent> = {\n id: runtimeId,\n kind: options.kind ?? \"external-agent\",\n label: options.label ?? \"External agent\",\n description: options.description,\n capabilities,\n createSession: createSessionObject,\n restoreSession: (snapshot) =>\n createSessionObject({\n id: snapshot.id,\n threadId: snapshot.threadId,\n title: snapshot.title,\n messages: snapshot.messages,\n resumeState: snapshot.resumeState,\n metadata: snapshot.metadata,\n }),\n sendMessage: async (input) => {\n const session = createSessionObject({\n id: input.sessionId,\n threadId: input.sessionId,\n metadata: input.metadata,\n });\n return session.startTurn(input);\n },\n subscribe: async (input) => {\n if (!options.resumeEndpoint) return (async function* () {})();\n const endpoint =\n typeof options.resumeEndpoint === \"function\"\n ? options.resumeEndpoint(input)\n : options.resumeEndpoint;\n if (!endpoint) return (async function* () {})();\n const headers = await resolveHeaders(options.headers, input);\n const response = await fetchImpl(normalizeEndpoint(endpoint), {\n headers,\n credentials: options.credentials,\n signal: input.abortSignal,\n });\n if (!response.ok) throw new Error(await readErrorText(response));\n return streamResponseEvents(response, {\n sessionId: input.sessionId ?? \"session\",\n turnId: input.turnId,\n runId: input.runId,\n mapEvent,\n });\n },\n resume: async (input) => {\n const sessionId = input.sessionId ?? createRuntimeId(\"session\");\n const events = runtime.subscribe\n ? await runtime.subscribe(input)\n : (async function* () {})();\n return {\n id: input.turnId,\n sessionId,\n runId: input.runId,\n events,\n };\n },\n cancel: async (input) => {\n if (!options.cancelEndpoint) return { status: \"unsupported\" };\n const endpoint =\n typeof options.cancelEndpoint === \"function\"\n ? options.cancelEndpoint(input)\n : options.cancelEndpoint;\n if (!endpoint) return { status: \"unsupported\" };\n const headers = await resolveHeaders(options.headers, input);\n if (!headers.has(\"Content-Type\"))\n headers.set(\"Content-Type\", \"application/json\");\n const response = await fetchImpl(normalizeEndpoint(endpoint), {\n method: \"POST\",\n headers,\n credentials: options.credentials,\n body: JSON.stringify(input),\n signal: input.abortSignal,\n });\n return response.ok\n ? { status: \"cancelled\" }\n : { status: \"unsupported\", message: await readErrorText(response) };\n },\n };\n\n return runtime;\n}\n\nfunction runtimeMessageText(message: AgentChatRuntimeMessage): string {\n return message.content\n .map((part) =>\n part.type === \"text\" || part.type === \"reasoning\" ? part.text : \"\",\n )\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction nativeHistoryFromMessages(\n messages: readonly AgentChatRuntimeMessage[] | undefined,\n currentPrompt: string,\n) {\n const history = (messages ?? [])\n .filter(\n (message) => message.role === \"user\" || message.role === \"assistant\",\n )\n .map((message) => ({\n role: message.role as \"user\" | \"assistant\",\n content: runtimeMessageText(message),\n }))\n .filter((message) => message.content.trim());\n if (!currentPrompt.trim()) return history;\n const last = history[history.length - 1];\n return last?.role === \"user\" && last.content === currentPrompt\n ? history.slice(0, -1)\n : history;\n}\n\ntype AgentNativeMessageContentState =\n | { type: \"text\"; text: string; id?: string }\n | {\n type: \"reasoning\";\n text: string;\n id?: string;\n signature?: string;\n };\n\nfunction mapAgentNativeEvent(\n raw: unknown,\n input: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n messageId: string;\n message: {\n content: AgentNativeMessageContentState[];\n started: boolean;\n };\n },\n): AgentChatRuntimeKnownEvent[] {\n if (!raw || typeof raw !== \"object\") return [];\n const ev = raw as SSEEvent;\n const base = {\n sessionId: input.sessionId,\n turnId: input.turnId,\n };\n if (ev.seq !== undefined) {\n (base as { metadata?: AgentChatRuntimeMetadata }).metadata = {\n seq: ev.seq,\n };\n }\n if (ev.type === \"text\" || ev.type === \"thinking\" || ev.type === \"reasoning\") {\n const text = ev.text ?? \"\";\n const type = ev.type === \"text\" ? \"text\" : \"reasoning\";\n const extended = ev as SSEEvent & {\n partId?: string;\n signature?: string;\n };\n const partId = extended.partId;\n const events: AgentChatRuntimeKnownEvent[] = [];\n if (!input.message.started) {\n input.message.started = true;\n events.push({\n type: \"message-start\",\n ...base,\n message: {\n id: input.messageId,\n role: \"assistant\",\n content: [],\n },\n });\n }\n const last = input.message.content.at(-1);\n let part = partId\n ? input.message.content.find(\n (candidate) => candidate.type === type && candidate.id === partId,\n )\n : last?.type === type && !last.id\n ? last\n : undefined;\n if (!part) {\n const nextPart: AgentNativeMessageContentState =\n type === \"reasoning\"\n ? {\n type: \"reasoning\",\n text: \"\",\n ...(partId ? { id: partId } : {}),\n }\n : {\n type: \"text\",\n text: \"\",\n ...(partId ? { id: partId } : {}),\n };\n input.message.content.push(nextPart);\n part = nextPart;\n }\n part.text += text;\n if (part.type === \"reasoning\" && extended.signature) {\n part.signature = extended.signature;\n }\n events.push({\n type: \"message-delta\",\n ...base,\n messageId: input.messageId,\n delta:\n type === \"reasoning\"\n ? {\n type: \"reasoning\",\n text,\n partId,\n signature: extended.signature,\n }\n : { type: \"text\", text, partId },\n });\n return events;\n }\n if (ev.type === \"activity\") {\n return [\n {\n type: \"status\",\n ...base,\n message: ev.label ?? ev.tool ?? \"Working\",\n metadata: ev.tool ? { tool: ev.tool } : undefined,\n },\n ];\n }\n if (ev.type === \"tool_start\") {\n return [\n {\n type: \"tool-start\",\n ...base,\n toolCall: {\n id: ev.id ?? createRuntimeId(\"tool\"),\n name: ev.tool ?? \"unknown\",\n input: ev.input,\n inputText: ev.input ? JSON.stringify(ev.input) : undefined,\n },\n },\n ];\n }\n if (ev.type === \"tool_done\") {\n return [\n {\n type: \"tool-done\",\n ...base,\n toolCallId: ev.id ?? \"\",\n toolName: ev.tool ?? \"unknown\",\n status: ev.error ? \"failed\" : \"completed\",\n result: ev.result,\n resultText:\n typeof ev.result === \"string\"\n ? ev.result\n : ev.result !== undefined\n ? JSON.stringify(ev.result)\n : undefined,\n error: ev.error,\n mcpApp: ev.mcpApp,\n chatUI: ev.chatUI,\n },\n ];\n }\n if (ev.type === \"approval_required\") {\n return [\n {\n type: \"approval-request\",\n ...base,\n approvalId: ev.approvalKey ?? ev.id ?? createRuntimeId(\"approval\"),\n toolCallId: ev.id,\n toolName: ev.tool,\n message: ev.label ?? \"Approve this tool call?\",\n input: ev.input,\n },\n ];\n }\n if (ev.type === \"error\" || ev.type === \"missing_api_key\") {\n return [\n {\n type: \"error\",\n ...base,\n error: ev.error ?? \"Agent chat failed.\",\n code: ev.errorCode,\n recoverable: ev.recoverable,\n },\n { type: \"done\", ...base, reason: \"error\" },\n ];\n }\n if (ev.type === \"done\") {\n const message: AgentChatRuntimeMessage = {\n id: input.messageId,\n role: \"assistant\",\n content: input.message.content.map((part) => ({ ...part })),\n };\n return [\n ...(input.message.started\n ? [{ type: \"message-done\" as const, ...base, message }]\n : []),\n { type: \"done\", ...base, reason: \"complete\" },\n ];\n }\n return [];\n}\n\nexport function createAgentNativeChatRuntime(\n options: CreateAgentNativeChatRuntimeOptions = {},\n): AgentChatRuntime<AgentChatRuntimeKnownEvent> {\n const apiUrl = options.apiUrl ?? agentNativePath(\"/_agent-native/agent-chat\");\n const runtimeId = options.id ?? \"agent-native\";\n const fetchImpl = options.fetch ?? fetch;\n\n return createHttpAgentChatRuntime({\n id: runtimeId,\n kind: \"agent-native\",\n label: options.label ?? \"Agent Native\",\n description:\n options.description ?? \"Agent-Native's built-in chat transport.\",\n endpoint: apiUrl,\n fetch: fetchImpl,\n headers: async (input) => {\n const headers = await resolveHeaders(options.headers, input);\n headers.set(\"x-agent-native-surface\", options.surface ?? \"app\");\n return headers;\n },\n capabilities: DEFAULT_RUNTIME_CAPABILITIES,\n mapRequest: ({ session, turn, turnId }) => {\n const prompt =\n turn.prompt ??\n [...(turn.messages ?? [])]\n .reverse()\n .find((message) => message.role === \"user\")\n ?.content.map((part) => (part.type === \"text\" ? part.text : \"\"))\n .join(\"\\n\") ??\n \"\";\n return {\n message: prompt,\n displayMessage: prompt,\n history: nativeHistoryFromMessages(turn.messages, prompt),\n turnId,\n threadId: session.threadId ?? options.threadId,\n ...(options.mode ? { mode: options.mode } : {}),\n ...((turn.model ?? options.model)\n ? { model: turn.model ?? options.model }\n : {}),\n ...(options.engine ? { engine: options.engine } : {}),\n ...((turn.reasoningEffort ?? options.effort)\n ? { effort: turn.reasoningEffort ?? options.effort }\n : {}),\n ...(options.browserTabId ? { browserTabId: options.browserTabId } : {}),\n ...(options.scope ? { scope: options.scope } : {}),\n ...(turn.attachments?.length ? { attachments: turn.attachments } : {}),\n ...(turn.metadata ? { metadata: turn.metadata } : {}),\n };\n },\n mapEvent: (() => {\n const states = new Map<\n string,\n {\n messageId: string;\n message: {\n content: AgentNativeMessageContentState[];\n started: boolean;\n };\n }\n >();\n return (\n event: unknown,\n context: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n },\n ) => {\n const stateKey = context.turnId ?? context.sessionId;\n let state = states.get(stateKey);\n if (!state) {\n state = {\n messageId: createRuntimeId(\"message\"),\n message: { content: [], started: false },\n };\n states.set(stateKey, state);\n }\n const mapped = mapAgentNativeEvent(event, {\n sessionId: context.sessionId,\n turnId: context.turnId,\n messageId: state.messageId,\n message: state.message,\n });\n const type =\n event && typeof event === \"object\"\n ? (event as { type?: unknown }).type\n : undefined;\n if (type === \"done\" || type === \"error\" || type === \"missing_api_key\") {\n states.delete(stateKey);\n }\n return mapped;\n };\n })(),\n cancelEndpoint: (input) =>\n input.runId\n ? `${apiUrl}/runs/${encodeURIComponent(input.runId)}/abort`\n : null,\n resumeEndpoint: (input) =>\n input.runId\n ? `${apiUrl}/runs/${encodeURIComponent(input.runId)}/events?after=${input.after ?? 0}`\n : null,\n });\n}\n\nfunction toContentPartInput(value: unknown): Record<string, string> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return {};\n const out: Record<string, string> = {};\n for (const [key, item] of Object.entries(value)) {\n out[key] = typeof item === \"string\" ? item : JSON.stringify(item);\n }\n return out;\n}\n\nfunction toolResultText(value: unknown): string {\n if (typeof value === \"string\") return value;\n if (value === undefined) return \"\";\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\ninterface RuntimeContentProjection {\n content: ContentPart[];\n partsById: Map<string, Extract<ContentPart, { type: \"text\" | \"reasoning\" }>>;\n}\n\nfunction appendRuntimeContentPart(\n projection: RuntimeContentProjection,\n input: {\n type: \"text\" | \"reasoning\";\n text: string;\n partId?: string;\n },\n): void {\n const key = input.partId ? `${input.type}:${input.partId}` : undefined;\n const last = projection.content.at(-1);\n let part = key ? projection.partsById.get(key) : undefined;\n if (\n !part &&\n !key &&\n last &&\n (last.type === \"text\" || last.type === \"reasoning\") &&\n last.type === input.type\n ) {\n part = last;\n }\n if (!part) {\n const nextPart: Extract<ContentPart, { type: \"text\" | \"reasoning\" }> =\n input.type === \"reasoning\"\n ? { type: \"reasoning\", text: \"\" }\n : { type: \"text\", text: \"\" };\n projection.content.push(nextPart);\n if (key) projection.partsById.set(key, nextPart);\n part = nextPart;\n }\n part.text += input.text;\n}\n\nfunction applyRuntimeEventToContent(\n event: AgentChatRuntimeEventBase,\n projection: RuntimeContentProjection,\n): ChatModelRunResult | null {\n const { content } = projection;\n const typed = event as AgentChatRuntimeKnownEvent;\n if (typed.type === \"message-start\") {\n for (const part of typed.message.content) {\n if ((part.type === \"text\" || part.type === \"reasoning\") && part.text) {\n appendRuntimeContentPart(projection, {\n type: part.type,\n text: part.text,\n partId: part.id,\n });\n }\n }\n return { content: [...content] } as ChatModelRunResult;\n }\n if (typed.type === \"message-delta\") {\n if (typed.delta.type === \"text\" || typed.delta.type === \"reasoning\") {\n appendRuntimeContentPart(projection, {\n type: typed.delta.type,\n text: typed.delta.text,\n partId: typed.delta.partId,\n });\n return { content: [...content] } as ChatModelRunResult;\n }\n return null;\n }\n if (typed.type === \"message-done\") {\n return { content: [...content] } as ChatModelRunResult;\n }\n if (typed.type === \"tool-start\") {\n content.push({\n type: \"tool-call\",\n toolCallId: typed.toolCall.id,\n toolName: typed.toolCall.name,\n argsText:\n typed.toolCall.inputText ?? JSON.stringify(typed.toolCall.input ?? {}),\n args: toContentPartInput(typed.toolCall.input),\n });\n return { content: [...content] } as ChatModelRunResult;\n }\n if (typed.type === \"tool-delta\") {\n const part = [...content]\n .reverse()\n .find(\n (candidate): candidate is Extract<ContentPart, { type: \"tool-call\" }> =>\n candidate.type === \"tool-call\" &&\n candidate.toolCallId === typed.toolCallId,\n );\n if (!part) return null;\n if (typed.inputTextDelta) {\n part.argsText += typed.inputTextDelta;\n }\n if (typed.resultTextDelta) {\n part.result = `${part.result ?? \"\"}${typed.resultTextDelta}`;\n }\n return { content: [...content] } as ChatModelRunResult;\n }\n if (typed.type === \"tool-done\") {\n const part = [...content]\n .reverse()\n .find(\n (candidate): candidate is Extract<ContentPart, { type: \"tool-call\" }> =>\n candidate.type === \"tool-call\" &&\n candidate.toolCallId === typed.toolCallId,\n );\n if (part) {\n part.result =\n typed.error ?? typed.resultText ?? toolResultText(typed.result);\n if (typed.mcpApp) part.mcpApp = typed.mcpApp;\n if (typed.chatUI) part.chatUI = typed.chatUI;\n }\n return { content: [...content] } as ChatModelRunResult;\n }\n if (typed.type === \"approval-request\") {\n const part = [...content]\n .reverse()\n .find(\n (candidate): candidate is Extract<ContentPart, { type: \"tool-call\" }> =>\n candidate.type === \"tool-call\" &&\n (candidate.toolCallId === typed.toolCallId ||\n candidate.toolName === typed.toolName),\n );\n if (part) {\n part.approval = { approvalKey: typed.approvalId };\n } else {\n content.push({\n type: \"tool-call\",\n toolCallId: typed.toolCallId ?? typed.approvalId,\n toolName: typed.toolName ?? \"approval\",\n argsText: typed.input ? JSON.stringify(typed.input) : \"\",\n args: toContentPartInput(typed.input),\n approval: { approvalKey: typed.approvalId },\n });\n }\n return { content: [...content] } as ChatModelRunResult;\n }\n if (typed.type === \"error\") {\n const normalized = normalizeChatError(typed.error, typed.code);\n settleInterruptedToolCalls(content);\n content.push({\n type: \"text\",\n text: formatChatErrorText(typed.error, undefined, typed.code),\n });\n return {\n content: [...content],\n status: { type: \"incomplete\", reason: \"error\" },\n metadata: {\n custom: {\n runError: {\n message: normalized.message,\n ...(normalized.details ? { details: normalized.details } : {}),\n ...(typed.code ? { errorCode: typed.code } : {}),\n ...(typed.recoverable ? { recoverable: typed.recoverable } : {}),\n },\n },\n },\n } as ChatModelRunResult;\n }\n if (typed.type === \"done\") {\n return {\n content: [...content],\n status:\n typed.reason === \"error\"\n ? { type: \"incomplete\", reason: \"error\" }\n : { type: \"complete\", reason: \"stop\" },\n } as ChatModelRunResult;\n }\n return null;\n}\n\nfunction assistantMessageText(message: {\n content?: readonly { type: string; text?: string }[];\n}): string {\n return (message.content ?? [])\n .filter(\n (part): part is { type: string; text: string } => part.type === \"text\",\n )\n .map((part) => part.text)\n .join(\"\\n\");\n}\n\nfunction assistantMessagesToRuntimeMessages(\n messages: readonly {\n role: string;\n content?: readonly { type: string; text?: string; image?: string }[];\n }[],\n): AgentChatRuntimeMessage[] {\n return messages\n .filter(\n (message) => message.role === \"user\" || message.role === \"assistant\",\n )\n .map((message, index) => {\n const content: AgentChatRuntimeKnownContentPart[] = [];\n for (const part of message.content ?? []) {\n if (part.type === \"text\" && typeof part.text === \"string\") {\n content.push({ type: \"text\", text: part.text });\n } else if (part.type === \"image\" && typeof part.image === \"string\") {\n content.push({ type: \"image\", data: part.image });\n }\n }\n return {\n id: `assistant-ui-${index}`,\n role: message.role as \"user\" | \"assistant\",\n content,\n };\n });\n}\n\nfunction latestUserPrompt(\n messages: readonly {\n role: string;\n content?: readonly { type: string; text?: string }[];\n }[],\n): string {\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i];\n if (message.role !== \"user\") continue;\n return assistantMessageText(message);\n }\n return \"\";\n}\n\nexport function createAgentChatRuntimeAdapter(\n runtime: AgentChatRuntime,\n options: CreateAgentChatRuntimeAdapterOptions = {},\n): ChatModelAdapter {\n let sessionPromise: Promise<AgentChatRuntimeSession> | null = null;\n const getSession = () => {\n sessionPromise ??= Promise.resolve(\n runtime.createSession({\n id: options.sessionId ?? options.threadId,\n threadId: options.threadId,\n metadata: options.metadata,\n }),\n );\n return sessionPromise;\n };\n\n return {\n async *run({ messages, abortSignal }) {\n const adapterMessages = messages as readonly {\n role: string;\n content?: readonly { type: string; text?: string; image?: string }[];\n }[];\n const session = await getSession();\n const prompt = latestUserPrompt(adapterMessages);\n const turn = await session.startTurn({\n prompt,\n messages: assistantMessagesToRuntimeMessages(adapterMessages),\n model: options.modelRef?.current,\n reasoningEffort: options.effortRef?.current,\n abortSignal,\n metadata: options.metadata,\n });\n const projection: RuntimeContentProjection = {\n content: [],\n partsById: new Map(),\n };\n try {\n for await (const event of turn.events) {\n const result = applyRuntimeEventToContent(event, projection);\n if (result) {\n const metadata = (result.metadata ?? {}) as Record<string, unknown>;\n const custom =\n metadata.custom && typeof metadata.custom === \"object\"\n ? (metadata.custom as Record<string, unknown>)\n : {};\n yield {\n ...result,\n metadata: {\n ...metadata,\n custom: {\n ...custom,\n runtimeId: runtime.id,\n ...(turn.runId ? { runId: turn.runId } : {}),\n },\n },\n } as ChatModelRunResult;\n }\n }\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n await turn.cancel?.({ reason: \"abort\" });\n return;\n }\n throw error;\n }\n },\n };\n}\n"]}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/client/chat/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChatModelAdapter, ChatModelRunResult } from \"@assistant-ui/react\";\n\nimport type { ActionChatUIConfig } from \"../../action-ui.js\";\nimport type { AgentMcpAppPayload } from \"../../mcp-client/app-result.js\";\nimport type { ReasoningEffort } from \"../../shared/reasoning-effort.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport { formatChatErrorText, normalizeChatError } from \"../error-format.js\";\nimport {\n settleInterruptedToolCalls,\n type ContentPart,\n type SSEEvent,\n} from \"../sse-event-processor.js\";\n\nexport type AgentChatRuntimeId = string;\nexport type AgentChatRuntimeSessionId = string;\nexport type AgentChatRuntimeTurnId = string;\nexport type AgentChatRuntimeMessageId = string;\nexport type AgentChatRuntimeToolCallId = string;\nexport type AgentChatRuntimeMetadata = Record<string, unknown>;\nexport type AgentChatRuntimeAwaitable<T> = T | Promise<T>;\n\nexport type AgentChatRuntimeKind =\n | \"agent-native\"\n | \"external-agent\"\n | \"code-agent\"\n | (string & {});\n\nexport type AgentChatRuntimeRole = \"system\" | \"user\" | \"assistant\" | \"tool\";\n\nexport interface AgentChatRuntimeContentPartBase<\n TType extends string = string,\n> {\n readonly type: TType;\n readonly id?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeTextPart extends AgentChatRuntimeContentPartBase<\"text\"> {\n readonly text: string;\n}\n\nexport interface AgentChatRuntimeReasoningPart extends AgentChatRuntimeContentPartBase<\"reasoning\"> {\n readonly text: string;\n readonly signature?: string;\n}\n\nexport interface AgentChatRuntimeImagePart extends AgentChatRuntimeContentPartBase<\"image\"> {\n readonly data?: string;\n readonly url?: string;\n readonly mediaType?: string;\n readonly alt?: string;\n}\n\nexport interface AgentChatRuntimeFilePart extends AgentChatRuntimeContentPartBase<\"file\"> {\n readonly data?: string;\n readonly url?: string;\n readonly mediaType?: string;\n readonly filename?: string;\n}\n\nexport interface AgentChatRuntimeToolCallPart extends AgentChatRuntimeContentPartBase<\"tool-call\"> {\n readonly toolCallId: AgentChatRuntimeToolCallId;\n readonly toolName: string;\n readonly input?: unknown;\n readonly inputText?: string;\n}\n\nexport interface AgentChatRuntimeToolResultPart extends AgentChatRuntimeContentPartBase<\"tool-result\"> {\n readonly toolCallId: AgentChatRuntimeToolCallId;\n readonly toolName?: string;\n readonly result?: unknown;\n readonly resultText?: string;\n readonly isError?: boolean;\n readonly mcpApp?: AgentMcpAppPayload;\n readonly chatUI?: ActionChatUIConfig;\n}\n\nexport interface AgentChatRuntimeDataPart extends AgentChatRuntimeContentPartBase<\"data\"> {\n readonly data: unknown;\n readonly mediaType?: string;\n readonly title?: string;\n}\n\nexport interface AgentChatRuntimeCustomContentPart extends AgentChatRuntimeContentPartBase {\n readonly [key: string]: unknown;\n}\n\nexport type AgentChatRuntimeKnownContentPart =\n | AgentChatRuntimeTextPart\n | AgentChatRuntimeReasoningPart\n | AgentChatRuntimeImagePart\n | AgentChatRuntimeFilePart\n | AgentChatRuntimeToolCallPart\n | AgentChatRuntimeToolResultPart\n | AgentChatRuntimeDataPart;\n\nexport type AgentChatRuntimeContentPart<\n TCustomPart extends AgentChatRuntimeCustomContentPart = never,\n> = AgentChatRuntimeKnownContentPart | TCustomPart;\n\nexport interface AgentChatRuntimeMessage<\n TContentPart extends AgentChatRuntimeContentPartBase =\n AgentChatRuntimeKnownContentPart,\n> {\n readonly id: AgentChatRuntimeMessageId;\n readonly role: AgentChatRuntimeRole;\n readonly content: readonly TContentPart[];\n readonly createdAt?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeAttachment {\n readonly id?: string;\n readonly name: string;\n readonly mediaType?: string;\n readonly data?: string;\n readonly url?: string;\n readonly text?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeToolDefinition {\n readonly name: string;\n readonly description?: string;\n readonly inputSchema?: Record<string, unknown>;\n readonly readOnly?: boolean;\n readonly destructive?: boolean;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeToolCall {\n readonly id: AgentChatRuntimeToolCallId;\n readonly name: string;\n readonly input?: unknown;\n readonly inputText?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport type AgentChatRuntimeToolStatus =\n | \"pending\"\n | \"running\"\n | \"completed\"\n | \"failed\"\n | \"cancelled\";\n\nexport interface AgentChatRuntimeUsage {\n readonly inputTokens?: number;\n readonly outputTokens?: number;\n readonly totalTokens?: number;\n readonly reasoningTokens?: number;\n readonly cacheReadTokens?: number;\n readonly cacheWriteTokens?: number;\n readonly costCents?: number;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeMessageCapabilities {\n readonly streaming: boolean;\n readonly history?: boolean;\n readonly structuredContent?: boolean;\n readonly multimodal?: boolean;\n readonly attachments?: boolean;\n}\n\nexport interface AgentChatRuntimeToolCapabilities {\n readonly events: boolean;\n readonly hostTools?: boolean;\n readonly inputStreaming?: boolean;\n readonly resultStreaming?: boolean;\n readonly approvals?: boolean;\n readonly mcpApps?: boolean;\n}\n\nexport interface AgentChatRuntimeSessionCapabilities {\n readonly create: boolean;\n readonly restore?: boolean;\n readonly list?: boolean;\n readonly fork?: boolean;\n readonly detach?: boolean;\n readonly persistent?: boolean;\n}\n\nexport interface AgentChatRuntimeCancellationCapabilities {\n readonly abortSignal?: boolean;\n readonly explicitCancel?: boolean;\n readonly interrupt?: boolean;\n}\n\nexport interface AgentChatRuntimeModelCapabilities {\n readonly selectable?: boolean;\n readonly reasoningEffort?: boolean;\n readonly temperature?: boolean;\n readonly providerOptions?: boolean;\n}\n\nexport interface AgentChatRuntimeArtifactCapabilities {\n readonly files?: boolean;\n readonly links?: boolean;\n readonly patches?: boolean;\n readonly progress?: boolean;\n}\n\nexport interface AgentChatRuntimeCapabilities {\n readonly messages: AgentChatRuntimeMessageCapabilities;\n readonly tools?: AgentChatRuntimeToolCapabilities;\n readonly sessions?: AgentChatRuntimeSessionCapabilities;\n readonly cancellation?: AgentChatRuntimeCancellationCapabilities;\n readonly models?: AgentChatRuntimeModelCapabilities;\n readonly artifacts?: AgentChatRuntimeArtifactCapabilities;\n readonly custom?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeCreateSessionInput {\n readonly id?: AgentChatRuntimeSessionId;\n readonly threadId?: string;\n readonly title?: string;\n readonly messages?: readonly AgentChatRuntimeMessage[];\n readonly resumeState?: unknown;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly abortSignal?: AbortSignal;\n}\n\nexport interface AgentChatRuntimeListSessionsInput {\n readonly threadId?: string;\n readonly limit?: number;\n readonly cursor?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly abortSignal?: AbortSignal;\n}\n\nexport type AgentChatRuntimeSessionStatus =\n | \"idle\"\n | \"running\"\n | \"waiting\"\n | \"cancelled\"\n | \"completed\"\n | \"error\";\n\nexport interface AgentChatRuntimeSessionSummary {\n readonly id: AgentChatRuntimeSessionId;\n readonly runtimeId: AgentChatRuntimeId;\n readonly threadId?: string;\n readonly title?: string;\n readonly status?: AgentChatRuntimeSessionStatus;\n readonly createdAt?: string;\n readonly updatedAt?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeSessionSnapshot extends AgentChatRuntimeSessionSummary {\n readonly messages?: readonly AgentChatRuntimeMessage[];\n readonly resumeState?: unknown;\n}\n\nexport interface AgentChatRuntimeTurnInput {\n readonly prompt?: string;\n readonly messages?: readonly AgentChatRuntimeMessage[];\n readonly attachments?: readonly AgentChatRuntimeAttachment[];\n readonly tools?: readonly AgentChatRuntimeToolDefinition[];\n readonly model?: string;\n readonly reasoningEffort?: ReasoningEffort;\n readonly temperature?: number;\n readonly providerOptions?: Record<string, unknown>;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly abortSignal?: AbortSignal;\n}\n\nexport interface AgentChatRuntimeApprovalResponse {\n readonly id: string;\n readonly approved: boolean;\n readonly message?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeContinueInput {\n readonly turnId?: AgentChatRuntimeTurnId;\n readonly prompt?: string;\n readonly approval?: AgentChatRuntimeApprovalResponse;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly abortSignal?: AbortSignal;\n}\n\nexport interface AgentChatRuntimeCancelInput {\n readonly sessionId?: AgentChatRuntimeSessionId;\n readonly turnId?: AgentChatRuntimeTurnId;\n readonly runId?: string;\n readonly reason?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly abortSignal?: AbortSignal;\n}\n\nexport type AgentChatRuntimeCancelStatus =\n | \"cancelled\"\n | \"not-found\"\n | \"already-finished\"\n | \"unsupported\";\n\nexport interface AgentChatRuntimeCancelResult {\n readonly status: AgentChatRuntimeCancelStatus;\n readonly message?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeEventBase<TType extends string = string> {\n readonly type: TType;\n readonly id?: string;\n readonly sessionId?: AgentChatRuntimeSessionId;\n readonly turnId?: AgentChatRuntimeTurnId;\n readonly timestamp?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nexport interface AgentChatRuntimeMessageStartEvent extends AgentChatRuntimeEventBase<\"message-start\"> {\n readonly message: AgentChatRuntimeMessage;\n}\n\nexport type AgentChatRuntimeMessageDelta =\n | {\n readonly type: \"text\";\n readonly text: string;\n readonly partId?: string;\n }\n | {\n readonly type: \"reasoning\";\n readonly text: string;\n readonly partId?: string;\n readonly signature?: string;\n }\n | {\n readonly type: \"data\";\n readonly data: unknown;\n readonly partId?: string;\n readonly mediaType?: string;\n };\n\nexport interface AgentChatRuntimeMessageDeltaEvent extends AgentChatRuntimeEventBase<\"message-delta\"> {\n readonly messageId: AgentChatRuntimeMessageId;\n readonly delta: AgentChatRuntimeMessageDelta;\n}\n\nexport interface AgentChatRuntimeMessageDoneEvent extends AgentChatRuntimeEventBase<\"message-done\"> {\n readonly message: AgentChatRuntimeMessage;\n}\n\nexport interface AgentChatRuntimeToolStartEvent extends AgentChatRuntimeEventBase<\"tool-start\"> {\n readonly toolCall: AgentChatRuntimeToolCall;\n}\n\nexport interface AgentChatRuntimeToolDeltaEvent extends AgentChatRuntimeEventBase<\"tool-delta\"> {\n readonly toolCallId: AgentChatRuntimeToolCallId;\n readonly toolName?: string;\n readonly inputTextDelta?: string;\n readonly resultTextDelta?: string;\n}\n\nexport interface AgentChatRuntimeToolDoneEvent extends AgentChatRuntimeEventBase<\"tool-done\"> {\n readonly toolCallId: AgentChatRuntimeToolCallId;\n readonly toolName: string;\n readonly status: AgentChatRuntimeToolStatus;\n readonly result?: unknown;\n readonly resultText?: string;\n readonly error?: string;\n readonly mcpApp?: AgentMcpAppPayload;\n readonly chatUI?: ActionChatUIConfig;\n}\n\nexport interface AgentChatRuntimeApprovalRequestEvent extends AgentChatRuntimeEventBase<\"approval-request\"> {\n readonly approvalId: string;\n readonly toolCallId?: AgentChatRuntimeToolCallId;\n readonly toolName?: string;\n readonly message: string;\n readonly input?: unknown;\n}\n\nexport interface AgentChatRuntimeApprovalResolvedEvent extends AgentChatRuntimeEventBase<\"approval-resolved\"> {\n readonly approvalId: string;\n readonly approved: boolean;\n readonly message?: string;\n}\n\nexport interface AgentChatRuntimeStatusEvent extends AgentChatRuntimeEventBase<\"status\"> {\n readonly level?: \"info\" | \"warning\" | \"error\";\n readonly message: string;\n readonly code?: string;\n}\n\nexport interface AgentChatRuntimeArtifactEvent extends AgentChatRuntimeEventBase<\"artifact\"> {\n readonly artifact: {\n readonly id?: string;\n readonly kind: string;\n readonly title?: string;\n readonly url?: string;\n readonly path?: string;\n readonly data?: unknown;\n readonly metadata?: AgentChatRuntimeMetadata;\n };\n}\n\nexport interface AgentChatRuntimeFileEvent extends AgentChatRuntimeEventBase<\"file\"> {\n readonly path: string;\n readonly operation?: \"create\" | \"update\" | \"delete\" | \"rename\" | \"unknown\";\n readonly summary?: string;\n}\n\nexport interface AgentChatRuntimeUsageEvent extends AgentChatRuntimeEventBase<\"usage\"> {\n readonly usage: AgentChatRuntimeUsage;\n}\n\nexport interface AgentChatRuntimeErrorEvent extends AgentChatRuntimeEventBase<\"error\"> {\n readonly error: string;\n readonly code?: string;\n readonly recoverable?: boolean;\n readonly cause?: unknown;\n}\n\nexport type AgentChatRuntimeDoneReason =\n | \"complete\"\n | \"cancelled\"\n | \"error\"\n | \"interrupted\"\n | \"length\"\n | \"tool-use\"\n | (string & {});\n\nexport interface AgentChatRuntimeDoneEvent extends AgentChatRuntimeEventBase<\"done\"> {\n readonly reason?: AgentChatRuntimeDoneReason;\n}\n\nexport interface AgentChatRuntimeCustomEvent extends AgentChatRuntimeEventBase {\n readonly [key: string]: unknown;\n}\n\nexport type AgentChatRuntimeKnownEvent =\n | AgentChatRuntimeMessageStartEvent\n | AgentChatRuntimeMessageDeltaEvent\n | AgentChatRuntimeMessageDoneEvent\n | AgentChatRuntimeToolStartEvent\n | AgentChatRuntimeToolDeltaEvent\n | AgentChatRuntimeToolDoneEvent\n | AgentChatRuntimeApprovalRequestEvent\n | AgentChatRuntimeApprovalResolvedEvent\n | AgentChatRuntimeStatusEvent\n | AgentChatRuntimeArtifactEvent\n | AgentChatRuntimeFileEvent\n | AgentChatRuntimeUsageEvent\n | AgentChatRuntimeErrorEvent\n | AgentChatRuntimeDoneEvent;\n\nexport type AgentChatRuntimeEvent<\n TCustomEvent extends AgentChatRuntimeCustomEvent = never,\n> = AgentChatRuntimeKnownEvent | TCustomEvent;\n\nexport interface AgentChatRuntimeTurn<\n TEvent extends AgentChatRuntimeEventBase = AgentChatRuntimeKnownEvent,\n> {\n readonly id?: AgentChatRuntimeTurnId;\n readonly sessionId: AgentChatRuntimeSessionId;\n readonly runId?: string;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly events: AsyncIterable<TEvent>;\n cancel?(\n input?: AgentChatRuntimeCancelInput,\n ): Promise<AgentChatRuntimeCancelResult>;\n}\n\nexport interface AgentChatRuntimeSendMessageInput extends AgentChatRuntimeTurnInput {\n readonly sessionId?: AgentChatRuntimeSessionId;\n}\n\nexport interface AgentChatRuntimeSubscribeInput {\n readonly sessionId?: AgentChatRuntimeSessionId;\n readonly turnId?: AgentChatRuntimeTurnId;\n readonly runId?: string;\n readonly after?: number;\n readonly metadata?: AgentChatRuntimeMetadata;\n readonly abortSignal?: AbortSignal;\n}\n\nexport interface AgentChatRuntimeResumeInput extends AgentChatRuntimeSubscribeInput {\n readonly prompt?: string;\n}\n\nexport interface AgentChatRuntimeSession<\n TEvent extends AgentChatRuntimeEventBase = AgentChatRuntimeKnownEvent,\n> {\n readonly id: AgentChatRuntimeSessionId;\n readonly runtimeId: AgentChatRuntimeId;\n readonly threadId?: string;\n readonly capabilities?: Partial<AgentChatRuntimeCapabilities>;\n sendMessage?(\n input: AgentChatRuntimeTurnInput,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeTurn<TEvent>>;\n startTurn(\n input: AgentChatRuntimeTurnInput,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeTurn<TEvent>>;\n continueTurn?(\n input?: AgentChatRuntimeContinueInput,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeTurn<TEvent>>;\n cancelTurn?(\n input?: AgentChatRuntimeCancelInput,\n ): Promise<AgentChatRuntimeCancelResult>;\n snapshot?(): AgentChatRuntimeAwaitable<AgentChatRuntimeSessionSnapshot>;\n dispose?(): AgentChatRuntimeAwaitable<void>;\n}\n\nexport interface AgentChatRuntime<\n TEvent extends AgentChatRuntimeEventBase = AgentChatRuntimeKnownEvent,\n> {\n readonly id: AgentChatRuntimeId;\n readonly kind: AgentChatRuntimeKind;\n readonly label: string;\n readonly description?: string;\n readonly capabilities: AgentChatRuntimeCapabilities;\n createSession(\n input?: AgentChatRuntimeCreateSessionInput,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeSession<TEvent>>;\n restoreSession?(\n snapshot: AgentChatRuntimeSessionSnapshot,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeSession<TEvent>>;\n getSession?(input: {\n readonly sessionId: AgentChatRuntimeSessionId;\n readonly abortSignal?: AbortSignal;\n }): AgentChatRuntimeAwaitable<AgentChatRuntimeSession<TEvent> | null>;\n listSessions?(\n input?: AgentChatRuntimeListSessionsInput,\n ): AgentChatRuntimeAwaitable<readonly AgentChatRuntimeSessionSummary[]>;\n sendMessage?(\n input: AgentChatRuntimeSendMessageInput,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeTurn<TEvent>>;\n subscribe?(\n input: AgentChatRuntimeSubscribeInput,\n ): AgentChatRuntimeAwaitable<AsyncIterable<TEvent>>;\n resume?(\n input: AgentChatRuntimeResumeInput,\n ): AgentChatRuntimeAwaitable<AgentChatRuntimeTurn<TEvent>>;\n cancel?(\n input: AgentChatRuntimeCancelInput,\n ): Promise<AgentChatRuntimeCancelResult>;\n}\n\ntype FetchLike = typeof fetch;\ntype HeadersFactory =\n | HeadersInit\n | ((input: {\n sessionId?: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n }) => HeadersInit | Promise<HeadersInit>);\n\nexport interface CreateHttpAgentChatRuntimeOptions<\n TEvent extends AgentChatRuntimeEventBase = AgentChatRuntimeKnownEvent,\n> {\n readonly id?: AgentChatRuntimeId;\n readonly kind?: AgentChatRuntimeKind;\n readonly label?: string;\n readonly description?: string;\n readonly endpoint:\n | string\n | ((input: {\n session: AgentChatRuntimeSessionSummary;\n turn: AgentChatRuntimeTurnInput;\n }) => string | URL);\n readonly method?: \"POST\" | \"PUT\";\n readonly headers?: HeadersFactory;\n readonly credentials?: RequestCredentials;\n readonly fetch?: FetchLike;\n readonly capabilities?: Partial<AgentChatRuntimeCapabilities>;\n readonly mapRequest?: (input: {\n session: AgentChatRuntimeSessionSummary;\n turn: AgentChatRuntimeTurnInput;\n turnId: AgentChatRuntimeTurnId;\n }) => unknown;\n readonly mapEvent?: (\n event: unknown,\n context: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n },\n ) => TEvent | readonly TEvent[] | null;\n readonly cancelEndpoint?:\n | string\n | ((input: AgentChatRuntimeCancelInput) => string | URL | null);\n readonly resumeEndpoint?:\n | string\n | ((input: AgentChatRuntimeSubscribeInput) => string | URL | null);\n readonly listSessionsEndpoint?: string | URL;\n readonly getSessionEndpoint?:\n | string\n | ((input: { sessionId: AgentChatRuntimeSessionId }) => string | URL);\n}\n\nexport interface CreateAgentNativeChatRuntimeOptions {\n readonly id?: AgentChatRuntimeId;\n readonly label?: string;\n readonly description?: string;\n readonly apiUrl?: string;\n readonly headers?: HeadersFactory;\n readonly fetch?: FetchLike;\n readonly threadId?: string;\n readonly browserTabId?: string;\n readonly surface?: \"app\" | \"dev-frame\";\n readonly mode?: \"act\" | \"plan\";\n readonly model?: string;\n readonly engine?: string;\n readonly effort?: ReasoningEffort;\n readonly scope?: unknown;\n}\n\nexport interface CreateAgentChatRuntimeAdapterOptions {\n readonly sessionId?: AgentChatRuntimeSessionId;\n readonly threadId?: string;\n readonly modelRef?: { current: string | undefined };\n readonly effortRef?: { current: ReasoningEffort | undefined };\n readonly metadata?: AgentChatRuntimeMetadata;\n}\n\nconst DEFAULT_RUNTIME_CAPABILITIES: AgentChatRuntimeCapabilities = {\n messages: {\n streaming: true,\n history: true,\n structuredContent: true,\n attachments: true,\n },\n tools: {\n events: true,\n hostTools: true,\n resultStreaming: true,\n mcpApps: true,\n },\n sessions: {\n create: true,\n restore: true,\n persistent: true,\n },\n cancellation: {\n abortSignal: true,\n explicitCancel: true,\n },\n models: {\n selectable: true,\n reasoningEffort: true,\n },\n artifacts: {\n files: true,\n links: true,\n progress: true,\n },\n};\n\nfunction mergeCapabilities(\n overrides?: Partial<AgentChatRuntimeCapabilities>,\n): AgentChatRuntimeCapabilities {\n return {\n ...DEFAULT_RUNTIME_CAPABILITIES,\n ...overrides,\n messages: {\n ...DEFAULT_RUNTIME_CAPABILITIES.messages,\n ...overrides?.messages,\n },\n tools: {\n ...DEFAULT_RUNTIME_CAPABILITIES.tools,\n ...overrides?.tools,\n events:\n overrides?.tools?.events ?? DEFAULT_RUNTIME_CAPABILITIES.tools!.events,\n },\n sessions: {\n ...DEFAULT_RUNTIME_CAPABILITIES.sessions,\n ...overrides?.sessions,\n create:\n overrides?.sessions?.create ??\n DEFAULT_RUNTIME_CAPABILITIES.sessions!.create,\n },\n cancellation: {\n ...DEFAULT_RUNTIME_CAPABILITIES.cancellation,\n ...overrides?.cancellation,\n },\n models: { ...DEFAULT_RUNTIME_CAPABILITIES.models, ...overrides?.models },\n artifacts: {\n ...DEFAULT_RUNTIME_CAPABILITIES.artifacts,\n ...overrides?.artifacts,\n },\n };\n}\n\nfunction createRuntimeId(prefix: string): string {\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto.randomUUID === \"function\"\n ) {\n return `${prefix}-${crypto.randomUUID()}`;\n }\n return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 10)}`;\n}\n\nfunction createAbortController(signal?: AbortSignal): {\n controller: AbortController;\n cleanup: () => void;\n} {\n const controller = new AbortController();\n if (!signal) return { controller, cleanup: () => {} };\n if (signal.aborted) controller.abort();\n const abort = () => controller.abort();\n signal.addEventListener(\"abort\", abort, { once: true });\n return {\n controller,\n cleanup: () => signal.removeEventListener(\"abort\", abort),\n };\n}\n\nasync function resolveHeaders(\n headers: HeadersFactory | undefined,\n input: {\n sessionId?: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n },\n): Promise<Headers> {\n const resolved =\n typeof headers === \"function\" ? await headers(input) : headers;\n return new Headers(resolved);\n}\n\nfunction normalizeEndpoint(value: string | URL): string {\n return typeof value === \"string\" ? value : value.toString();\n}\n\nfunction isRuntimeEvent(value: unknown): value is AgentChatRuntimeEventBase {\n return (\n !!value &&\n typeof value === \"object\" &&\n typeof (value as { type?: unknown }).type === \"string\"\n );\n}\n\nfunction parseJsonEvent(raw: string): unknown | null {\n const trimmed = raw.trim();\n if (!trimmed || trimmed === \"[DONE]\") return null;\n try {\n return JSON.parse(trimmed);\n } catch {\n return null;\n }\n}\n\nasync function* readJsonEventStream(\n body: ReadableStream<Uint8Array>,\n): AsyncGenerator<unknown> {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let pendingSseData: string[] = [];\n\n const flushSseData = function* (): Generator<unknown> {\n if (pendingSseData.length === 0) return;\n const parsed = parseJsonEvent(pendingSseData.join(\"\\n\"));\n pendingSseData = [];\n if (parsed) yield parsed;\n };\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(/\\r?\\n/);\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n if (line.startsWith(\"data:\")) {\n pendingSseData.push(line.slice(5).trimStart());\n continue;\n }\n if (line.trim() === \"\") {\n yield* flushSseData();\n continue;\n }\n const parsed = parseJsonEvent(line);\n if (parsed) yield parsed;\n }\n }\n\n if (buffer.trim()) {\n const parsed = parseJsonEvent(buffer);\n if (parsed) yield parsed;\n }\n yield* flushSseData();\n } finally {\n try {\n reader.releaseLock();\n } catch {\n // Some browser runtimes consider a cancelled stream locked for a tick.\n }\n }\n}\n\nfunction textResponseEvents(\n text: string,\n sessionId: AgentChatRuntimeSessionId,\n turnId?: AgentChatRuntimeTurnId,\n): AgentChatRuntimeKnownEvent[] {\n const message: AgentChatRuntimeMessage = {\n id: createRuntimeId(\"message\"),\n role: \"assistant\",\n content: [],\n };\n return [\n { type: \"message-start\", sessionId, turnId, message },\n ...(text\n ? [\n {\n type: \"message-delta\" as const,\n sessionId,\n turnId,\n messageId: message.id,\n delta: { type: \"text\" as const, text },\n },\n ]\n : []),\n { type: \"message-done\", sessionId, turnId, message },\n { type: \"done\", sessionId, turnId, reason: \"complete\" },\n ];\n}\n\nasync function* eventsFromJsonResponse(\n value: unknown,\n sessionId: AgentChatRuntimeSessionId,\n turnId?: AgentChatRuntimeTurnId,\n): AsyncGenerator<AgentChatRuntimeEvent> {\n if (Array.isArray(value)) {\n for (const item of value) {\n if (isRuntimeEvent(item)) yield item as AgentChatRuntimeEvent;\n }\n return;\n }\n if (!value || typeof value !== \"object\") return;\n const record = value as Record<string, unknown>;\n if (Array.isArray(record.events)) {\n for (const item of record.events) {\n if (isRuntimeEvent(item)) yield item as AgentChatRuntimeEvent;\n }\n return;\n }\n const text =\n typeof record.message === \"string\"\n ? record.message\n : typeof record.text === \"string\"\n ? record.text\n : \"\";\n if (text) {\n for (const event of textResponseEvents(text, sessionId, turnId)) {\n yield event;\n }\n }\n}\n\nfunction defaultMapHttpRuntimeEvent(\n event: unknown,\n _context?: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n },\n): AgentChatRuntimeEvent | readonly AgentChatRuntimeEvent[] | null {\n if (!isRuntimeEvent(event)) return null;\n return event as AgentChatRuntimeEvent;\n}\n\nfunction normalizeMappedEvents<TEvent extends AgentChatRuntimeEventBase>(\n mapped: TEvent | readonly TEvent[] | null,\n): readonly TEvent[] {\n if (!mapped) return [];\n return Array.isArray(mapped)\n ? (mapped as readonly TEvent[])\n : [mapped as TEvent];\n}\n\nasync function* streamResponseEvents<TEvent extends AgentChatRuntimeEventBase>(\n response: Response,\n input: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n mapEvent: (\n event: unknown,\n context: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n },\n ) => TEvent | readonly TEvent[] | null;\n },\n): AsyncGenerator<TEvent> {\n const context = {\n sessionId: input.sessionId,\n turnId: input.turnId,\n runId: input.runId,\n };\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (response.body && !contentType.includes(\"application/json\")) {\n for await (const raw of readJsonEventStream(response.body)) {\n for (const event of normalizeMappedEvents(input.mapEvent(raw, context))) {\n yield event;\n }\n }\n return;\n }\n\n const json = await response.json().catch(() => null);\n for await (const event of eventsFromJsonResponse(\n json,\n input.sessionId,\n input.turnId,\n )) {\n for (const mapped of normalizeMappedEvents(\n input.mapEvent(event, context),\n )) {\n yield mapped;\n }\n }\n}\n\nfunction defaultHttpRuntimeRequest(input: {\n session: AgentChatRuntimeSessionSummary;\n turn: AgentChatRuntimeTurnInput;\n turnId: AgentChatRuntimeTurnId;\n}) {\n return {\n sessionId: input.session.id,\n threadId: input.session.threadId,\n turnId: input.turnId,\n prompt: input.turn.prompt,\n messages: input.turn.messages,\n attachments: input.turn.attachments,\n tools: input.turn.tools,\n model: input.turn.model,\n reasoningEffort: input.turn.reasoningEffort,\n temperature: input.turn.temperature,\n providerOptions: input.turn.providerOptions,\n metadata: input.turn.metadata,\n };\n}\n\nasync function readErrorText(response: Response): Promise<string> {\n const text = await response.text().catch(() => \"\");\n if (!text) return `HTTP ${response.status}`;\n try {\n const parsed = JSON.parse(text) as { error?: unknown; message?: unknown };\n if (typeof parsed.error === \"string\") return parsed.error;\n if (typeof parsed.message === \"string\") return parsed.message;\n } catch {\n // Keep raw text.\n }\n return text.slice(0, 500);\n}\n\nexport function createHttpAgentChatRuntime<\n TEvent extends AgentChatRuntimeEventBase = AgentChatRuntimeKnownEvent,\n>(\n options: CreateHttpAgentChatRuntimeOptions<TEvent>,\n): AgentChatRuntime<TEvent> {\n const fetchImpl = options.fetch ?? fetch;\n const capabilities = mergeCapabilities(options.capabilities);\n const runtimeId = options.id ?? \"external:http\";\n const mapEvent =\n options.mapEvent ??\n (defaultMapHttpRuntimeEvent as (\n event: unknown,\n context: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n runId?: string;\n },\n ) => TEvent | readonly TEvent[] | null);\n\n const createSessionObject = (\n input?: AgentChatRuntimeCreateSessionInput,\n ): AgentChatRuntimeSession<TEvent> => {\n const sessionId =\n input?.id ?? input?.threadId ?? createRuntimeId(\"session\");\n const summary: AgentChatRuntimeSessionSummary = {\n id: sessionId,\n runtimeId,\n threadId: input?.threadId,\n title: input?.title,\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n metadata: input?.metadata,\n };\n\n const startTurn = async (\n turn: AgentChatRuntimeTurnInput,\n ): Promise<AgentChatRuntimeTurn<TEvent>> => {\n const turnId = createRuntimeId(\"turn\");\n const { controller, cleanup } = createAbortController(turn.abortSignal);\n const endpoint =\n typeof options.endpoint === \"function\"\n ? options.endpoint({ session: summary, turn })\n : options.endpoint;\n const headers = await resolveHeaders(options.headers, {\n sessionId,\n turnId,\n });\n if (!headers.has(\"Content-Type\"))\n headers.set(\"Content-Type\", \"application/json\");\n const response = await fetchImpl(normalizeEndpoint(endpoint), {\n method: options.method ?? \"POST\",\n headers,\n credentials: options.credentials,\n body: JSON.stringify(\n options.mapRequest\n ? options.mapRequest({ session: summary, turn, turnId })\n : defaultHttpRuntimeRequest({ session: summary, turn, turnId }),\n ),\n signal: controller.signal,\n });\n if (!response.ok) {\n cleanup();\n throw new Error(await readErrorText(response));\n }\n\n const runId = response.headers.get(\"X-Run-Id\") ?? undefined;\n const events = (async function* () {\n try {\n yield* streamResponseEvents(response, {\n sessionId,\n turnId,\n runId,\n mapEvent,\n });\n } finally {\n cleanup();\n }\n })();\n\n return {\n id: turnId,\n sessionId,\n runId,\n events,\n cancel: async (cancelInput) => {\n controller.abort();\n if (!options.cancelEndpoint) return { status: \"cancelled\" };\n const endpoint =\n typeof options.cancelEndpoint === \"function\"\n ? options.cancelEndpoint({\n ...cancelInput,\n sessionId,\n turnId,\n runId,\n })\n : options.cancelEndpoint;\n if (!endpoint) return { status: \"unsupported\" };\n const cancelHeaders = await resolveHeaders(options.headers, {\n sessionId,\n turnId,\n });\n if (!cancelHeaders.has(\"Content-Type\")) {\n cancelHeaders.set(\"Content-Type\", \"application/json\");\n }\n const cancelResponse = await fetchImpl(normalizeEndpoint(endpoint), {\n method: \"POST\",\n headers: cancelHeaders,\n credentials: options.credentials,\n body: JSON.stringify({\n sessionId,\n turnId,\n runId,\n reason: cancelInput?.reason ?? \"user\",\n metadata: cancelInput?.metadata,\n }),\n signal: cancelInput?.abortSignal,\n });\n return cancelResponse.ok\n ? { status: \"cancelled\" }\n : {\n status: \"unsupported\",\n message: await readErrorText(cancelResponse),\n };\n },\n };\n };\n\n return {\n id: sessionId,\n runtimeId,\n threadId: input?.threadId,\n capabilities,\n sendMessage: startTurn,\n startTurn,\n snapshot: () => ({\n ...summary,\n status: \"idle\",\n updatedAt: new Date().toISOString(),\n messages: input?.messages,\n resumeState: input?.resumeState,\n }),\n dispose: () => undefined,\n };\n };\n\n const runtime: AgentChatRuntime<TEvent> = {\n id: runtimeId,\n kind: options.kind ?? \"external-agent\",\n label: options.label ?? \"External agent\",\n description: options.description,\n capabilities,\n createSession: createSessionObject,\n restoreSession: (snapshot) =>\n createSessionObject({\n id: snapshot.id,\n threadId: snapshot.threadId,\n title: snapshot.title,\n messages: snapshot.messages,\n resumeState: snapshot.resumeState,\n metadata: snapshot.metadata,\n }),\n sendMessage: async (input) => {\n const session = createSessionObject({\n id: input.sessionId,\n threadId: input.sessionId,\n metadata: input.metadata,\n });\n return session.startTurn(input);\n },\n subscribe: async (input) => {\n if (!options.resumeEndpoint) return (async function* () {})();\n const endpoint =\n typeof options.resumeEndpoint === \"function\"\n ? options.resumeEndpoint(input)\n : options.resumeEndpoint;\n if (!endpoint) return (async function* () {})();\n const headers = await resolveHeaders(options.headers, input);\n const response = await fetchImpl(normalizeEndpoint(endpoint), {\n headers,\n credentials: options.credentials,\n signal: input.abortSignal,\n });\n if (!response.ok) throw new Error(await readErrorText(response));\n return streamResponseEvents(response, {\n sessionId: input.sessionId ?? \"session\",\n turnId: input.turnId,\n runId: input.runId,\n mapEvent,\n });\n },\n resume: async (input) => {\n const sessionId = input.sessionId ?? createRuntimeId(\"session\");\n const events = runtime.subscribe\n ? await runtime.subscribe(input)\n : (async function* () {})();\n return {\n id: input.turnId,\n sessionId,\n runId: input.runId,\n events,\n };\n },\n cancel: async (input) => {\n if (!options.cancelEndpoint) return { status: \"unsupported\" };\n const endpoint =\n typeof options.cancelEndpoint === \"function\"\n ? options.cancelEndpoint(input)\n : options.cancelEndpoint;\n if (!endpoint) return { status: \"unsupported\" };\n const headers = await resolveHeaders(options.headers, input);\n if (!headers.has(\"Content-Type\"))\n headers.set(\"Content-Type\", \"application/json\");\n const response = await fetchImpl(normalizeEndpoint(endpoint), {\n method: \"POST\",\n headers,\n credentials: options.credentials,\n body: JSON.stringify(input),\n signal: input.abortSignal,\n });\n return response.ok\n ? { status: \"cancelled\" }\n : { status: \"unsupported\", message: await readErrorText(response) };\n },\n };\n\n return runtime;\n}\n\nfunction runtimeMessageText(message: AgentChatRuntimeMessage): string {\n return message.content\n .map((part) =>\n part.type === \"text\" || part.type === \"reasoning\" ? part.text : \"\",\n )\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nfunction nativeHistoryFromMessages(\n messages: readonly AgentChatRuntimeMessage[] | undefined,\n currentPrompt: string,\n) {\n const history = (messages ?? [])\n .filter(\n (message) => message.role === \"user\" || message.role === \"assistant\",\n )\n .map((message) => ({\n role: message.role as \"user\" | \"assistant\",\n content: runtimeMessageText(message),\n }))\n .filter((message) => message.content.trim());\n if (!currentPrompt.trim()) return history;\n const last = history[history.length - 1];\n return last?.role === \"user\" && last.content === currentPrompt\n ? history.slice(0, -1)\n : history;\n}\n\ntype AgentNativeMessageContentState =\n | { type: \"text\"; text: string; id?: string }\n | {\n type: \"reasoning\";\n text: string;\n id?: string;\n signature?: string;\n };\n\nfunction mapAgentNativeEvent(\n raw: unknown,\n input: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n messageId: string;\n message: {\n content: AgentNativeMessageContentState[];\n started: boolean;\n };\n },\n): AgentChatRuntimeKnownEvent[] {\n if (!raw || typeof raw !== \"object\") return [];\n const ev = raw as SSEEvent;\n const base = {\n sessionId: input.sessionId,\n turnId: input.turnId,\n };\n if (ev.seq !== undefined) {\n (base as { metadata?: AgentChatRuntimeMetadata }).metadata = {\n seq: ev.seq,\n };\n }\n if (ev.type === \"text\" || ev.type === \"thinking\" || ev.type === \"reasoning\") {\n const text = ev.text ?? \"\";\n const type = ev.type === \"text\" ? \"text\" : \"reasoning\";\n const extended = ev as SSEEvent & {\n partId?: string;\n signature?: string;\n };\n const partId = extended.partId;\n const events: AgentChatRuntimeKnownEvent[] = [];\n if (!input.message.started) {\n input.message.started = true;\n events.push({\n type: \"message-start\",\n ...base,\n message: {\n id: input.messageId,\n role: \"assistant\",\n content: [],\n },\n });\n }\n const last = input.message.content.at(-1);\n let part = partId\n ? input.message.content.find(\n (candidate) => candidate.type === type && candidate.id === partId,\n )\n : last?.type === type && !last.id\n ? last\n : undefined;\n if (!part) {\n const nextPart: AgentNativeMessageContentState =\n type === \"reasoning\"\n ? {\n type: \"reasoning\",\n text: \"\",\n ...(partId ? { id: partId } : {}),\n }\n : {\n type: \"text\",\n text: \"\",\n ...(partId ? { id: partId } : {}),\n };\n input.message.content.push(nextPart);\n part = nextPart;\n }\n part.text += text;\n if (part.type === \"reasoning\" && extended.signature) {\n part.signature = extended.signature;\n }\n events.push({\n type: \"message-delta\",\n ...base,\n messageId: input.messageId,\n delta:\n type === \"reasoning\"\n ? {\n type: \"reasoning\",\n text,\n partId,\n signature: extended.signature,\n }\n : { type: \"text\", text, partId },\n });\n return events;\n }\n if (ev.type === \"activity\") {\n return [\n {\n type: \"status\",\n ...base,\n message: ev.label ?? ev.tool ?? \"Working\",\n metadata: ev.tool ? { tool: ev.tool } : undefined,\n },\n ];\n }\n if (ev.type === \"tool_start\") {\n return [\n {\n type: \"tool-start\",\n ...base,\n toolCall: {\n id: ev.id ?? createRuntimeId(\"tool\"),\n name: ev.tool ?? \"unknown\",\n input: ev.input,\n inputText: ev.input ? JSON.stringify(ev.input) : undefined,\n },\n },\n ];\n }\n if (ev.type === \"tool_done\") {\n return [\n {\n type: \"tool-done\",\n ...base,\n toolCallId: ev.id ?? \"\",\n toolName: ev.tool ?? \"unknown\",\n status: ev.error ? \"failed\" : \"completed\",\n result: ev.result,\n resultText:\n typeof ev.result === \"string\"\n ? ev.result\n : ev.result !== undefined\n ? JSON.stringify(ev.result)\n : undefined,\n error: ev.error,\n mcpApp: ev.mcpApp,\n chatUI: ev.chatUI,\n },\n ];\n }\n if (ev.type === \"approval_required\") {\n return [\n {\n type: \"approval-request\",\n ...base,\n approvalId: ev.approvalKey ?? ev.id ?? createRuntimeId(\"approval\"),\n toolCallId: ev.id,\n toolName: ev.tool,\n message: ev.label ?? \"Approve this tool call?\",\n input: ev.input,\n },\n ];\n }\n if (ev.type === \"error\" || ev.type === \"missing_api_key\") {\n return [\n {\n type: \"error\",\n ...base,\n error: ev.error ?? \"Agent chat failed.\",\n code: ev.errorCode,\n recoverable: ev.recoverable,\n },\n { type: \"done\", ...base, reason: \"error\" },\n ];\n }\n if (ev.type === \"done\") {\n const message: AgentChatRuntimeMessage = {\n id: input.messageId,\n role: \"assistant\",\n content: input.message.content.map((part) => ({ ...part })),\n };\n return [\n ...(input.message.started\n ? [{ type: \"message-done\" as const, ...base, message }]\n : []),\n { type: \"done\", ...base, reason: \"complete\" },\n ];\n }\n return [];\n}\n\nexport function createAgentNativeChatRuntime(\n options: CreateAgentNativeChatRuntimeOptions = {},\n): AgentChatRuntime<AgentChatRuntimeKnownEvent> {\n const apiUrl = options.apiUrl ?? agentNativePath(\"/_agent-native/agent-chat\");\n const runtimeId = options.id ?? \"agent-native\";\n const fetchImpl = options.fetch ?? fetch;\n\n return createHttpAgentChatRuntime({\n id: runtimeId,\n kind: \"agent-native\",\n label: options.label ?? \"Agent Native\",\n description:\n options.description ?? \"Agent-Native's built-in chat transport.\",\n endpoint: apiUrl,\n fetch: fetchImpl,\n headers: async (input) => {\n const headers = await resolveHeaders(options.headers, input);\n headers.set(\"x-agent-native-surface\", options.surface ?? \"app\");\n return headers;\n },\n capabilities: DEFAULT_RUNTIME_CAPABILITIES,\n mapRequest: ({ session, turn, turnId }) => {\n const prompt =\n turn.prompt ??\n [...(turn.messages ?? [])]\n .reverse()\n .find((message) => message.role === \"user\")\n ?.content.map((part) => (part.type === \"text\" ? part.text : \"\"))\n .join(\"\\n\") ??\n \"\";\n return {\n message: prompt,\n displayMessage: prompt,\n history: nativeHistoryFromMessages(turn.messages, prompt),\n turnId,\n threadId: session.threadId ?? options.threadId,\n ...(options.mode ? { mode: options.mode } : {}),\n ...((turn.model ?? options.model)\n ? { model: turn.model ?? options.model }\n : {}),\n ...(options.engine ? { engine: options.engine } : {}),\n ...((turn.reasoningEffort ?? options.effort)\n ? { effort: turn.reasoningEffort ?? options.effort }\n : {}),\n ...(options.browserTabId ? { browserTabId: options.browserTabId } : {}),\n ...(options.scope ? { scope: options.scope } : {}),\n ...(turn.attachments?.length ? { attachments: turn.attachments } : {}),\n ...(turn.metadata ? { metadata: turn.metadata } : {}),\n };\n },\n mapEvent: (() => {\n const states = new Map<\n string,\n {\n messageId: string;\n message: {\n content: AgentNativeMessageContentState[];\n started: boolean;\n };\n }\n >();\n return (\n event: unknown,\n context: {\n sessionId: AgentChatRuntimeSessionId;\n turnId?: AgentChatRuntimeTurnId;\n },\n ) => {\n const stateKey = context.turnId ?? context.sessionId;\n let state = states.get(stateKey);\n if (!state) {\n state = {\n messageId: createRuntimeId(\"message\"),\n message: { content: [], started: false },\n };\n states.set(stateKey, state);\n }\n const mapped = mapAgentNativeEvent(event, {\n sessionId: context.sessionId,\n turnId: context.turnId,\n messageId: state.messageId,\n message: state.message,\n });\n const type =\n event && typeof event === \"object\"\n ? (event as { type?: unknown }).type\n : undefined;\n if (type === \"done\" || type === \"error\" || type === \"missing_api_key\") {\n states.delete(stateKey);\n }\n return mapped;\n };\n })(),\n cancelEndpoint: (input) =>\n input.runId\n ? `${apiUrl}/runs/${encodeURIComponent(input.runId)}/abort`\n : null,\n resumeEndpoint: (input) =>\n input.runId\n ? `${apiUrl}/runs/${encodeURIComponent(input.runId)}/events?after=${input.after ?? 0}`\n : null,\n });\n}\n\nfunction toContentPartInput(value: unknown): Record<string, string> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return {};\n const out: Record<string, string> = {};\n for (const [key, item] of Object.entries(value)) {\n out[key] = typeof item === \"string\" ? item : JSON.stringify(item);\n }\n return out;\n}\n\nfunction toolResultText(value: unknown): string {\n if (typeof value === \"string\") return value;\n if (value === undefined) return \"\";\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\ninterface RuntimeContentProjection {\n content: ContentPart[];\n partsById: Map<string, Extract<ContentPart, { type: \"text\" | \"reasoning\" }>>;\n}\n\nfunction appendRuntimeContentPart(\n projection: RuntimeContentProjection,\n input: {\n type: \"text\" | \"reasoning\";\n text: string;\n partId?: string;\n },\n): void {\n const key = input.partId ? `${input.type}:${input.partId}` : undefined;\n const last = projection.content.at(-1);\n let part = key ? projection.partsById.get(key) : undefined;\n if (\n !part &&\n !key &&\n last &&\n (last.type === \"text\" || last.type === \"reasoning\") &&\n last.type === input.type\n ) {\n part = last;\n }\n if (!part) {\n const nextPart: Extract<ContentPart, { type: \"text\" | \"reasoning\" }> =\n input.type === \"reasoning\"\n ? { type: \"reasoning\", text: \"\" }\n : { type: \"text\", text: \"\" };\n projection.content.push(nextPart);\n if (key) projection.partsById.set(key, nextPart);\n part = nextPart;\n }\n part.text += input.text;\n}\n\nfunction applyRuntimeEventToContent(\n event: AgentChatRuntimeEventBase,\n projection: RuntimeContentProjection,\n): ChatModelRunResult | null {\n const { content } = projection;\n const typed = event as AgentChatRuntimeKnownEvent;\n if (typed.type === \"message-start\") {\n for (const part of typed.message.content) {\n if ((part.type === \"text\" || part.type === \"reasoning\") && part.text) {\n appendRuntimeContentPart(projection, {\n type: part.type,\n text: part.text,\n partId: part.id,\n });\n }\n }\n return { content: [...content] } as ChatModelRunResult;\n }\n if (typed.type === \"message-delta\") {\n if (typed.delta.type === \"text\" || typed.delta.type === \"reasoning\") {\n appendRuntimeContentPart(projection, {\n type: typed.delta.type,\n text: typed.delta.text,\n partId: typed.delta.partId,\n });\n return { content: [...content] } as ChatModelRunResult;\n }\n return null;\n }\n if (typed.type === \"message-done\") {\n return { content: [...content] } as ChatModelRunResult;\n }\n if (typed.type === \"tool-start\") {\n content.push({\n type: \"tool-call\",\n toolCallId: typed.toolCall.id,\n toolName: typed.toolCall.name,\n argsText:\n typed.toolCall.inputText ?? JSON.stringify(typed.toolCall.input ?? {}),\n args: toContentPartInput(typed.toolCall.input),\n });\n return { content: [...content] } as ChatModelRunResult;\n }\n if (typed.type === \"tool-delta\") {\n const part = [...content]\n .reverse()\n .find(\n (candidate): candidate is Extract<ContentPart, { type: \"tool-call\" }> =>\n candidate.type === \"tool-call\" &&\n candidate.toolCallId === typed.toolCallId,\n );\n if (!part) return null;\n if (typed.inputTextDelta) {\n part.argsText += typed.inputTextDelta;\n }\n if (typed.resultTextDelta) {\n part.result = `${part.result ?? \"\"}${typed.resultTextDelta}`;\n }\n return { content: [...content] } as ChatModelRunResult;\n }\n if (typed.type === \"tool-done\") {\n const part = [...content]\n .reverse()\n .find(\n (candidate): candidate is Extract<ContentPart, { type: \"tool-call\" }> =>\n candidate.type === \"tool-call\" &&\n candidate.toolCallId === typed.toolCallId,\n );\n if (part) {\n part.result =\n typed.error ?? typed.resultText ?? toolResultText(typed.result);\n if (typed.mcpApp) part.mcpApp = typed.mcpApp;\n if (typed.chatUI) part.chatUI = typed.chatUI;\n }\n return { content: [...content] } as ChatModelRunResult;\n }\n if (typed.type === \"approval-request\") {\n const part = [...content]\n .reverse()\n .find(\n (candidate): candidate is Extract<ContentPart, { type: \"tool-call\" }> =>\n candidate.type === \"tool-call\" &&\n (candidate.toolCallId === typed.toolCallId ||\n candidate.toolName === typed.toolName),\n );\n if (part) {\n part.approval = { approvalKey: typed.approvalId };\n } else {\n content.push({\n type: \"tool-call\",\n toolCallId: typed.toolCallId ?? typed.approvalId,\n toolName: typed.toolName ?? \"approval\",\n argsText: typed.input ? JSON.stringify(typed.input) : \"\",\n args: toContentPartInput(typed.input),\n approval: { approvalKey: typed.approvalId },\n });\n }\n return { content: [...content] } as ChatModelRunResult;\n }\n if (typed.type === \"error\") {\n const normalized = normalizeChatError(typed.error, typed.code);\n settleInterruptedToolCalls(content, undefined, { includeActivity: true });\n content.push({\n type: \"text\",\n text: formatChatErrorText(typed.error, undefined, typed.code),\n });\n return {\n content: [...content],\n status: { type: \"incomplete\", reason: \"error\" },\n metadata: {\n custom: {\n runError: {\n message: normalized.message,\n ...(normalized.details ? { details: normalized.details } : {}),\n ...(typed.code ? { errorCode: typed.code } : {}),\n ...(typed.recoverable ? { recoverable: typed.recoverable } : {}),\n },\n },\n },\n } as ChatModelRunResult;\n }\n if (typed.type === \"done\") {\n settleInterruptedToolCalls(content, undefined, { includeActivity: true });\n return {\n content: [...content],\n status:\n typed.reason === \"error\"\n ? { type: \"incomplete\", reason: \"error\" }\n : { type: \"complete\", reason: \"stop\" },\n } as ChatModelRunResult;\n }\n return null;\n}\n\nfunction assistantMessageText(message: {\n content?: readonly { type: string; text?: string }[];\n}): string {\n return (message.content ?? [])\n .filter(\n (part): part is { type: string; text: string } => part.type === \"text\",\n )\n .map((part) => part.text)\n .join(\"\\n\");\n}\n\nfunction assistantMessagesToRuntimeMessages(\n messages: readonly {\n role: string;\n content?: readonly { type: string; text?: string; image?: string }[];\n }[],\n): AgentChatRuntimeMessage[] {\n return messages\n .filter(\n (message) => message.role === \"user\" || message.role === \"assistant\",\n )\n .map((message, index) => {\n const content: AgentChatRuntimeKnownContentPart[] = [];\n for (const part of message.content ?? []) {\n if (part.type === \"text\" && typeof part.text === \"string\") {\n content.push({ type: \"text\", text: part.text });\n } else if (part.type === \"image\" && typeof part.image === \"string\") {\n content.push({ type: \"image\", data: part.image });\n }\n }\n return {\n id: `assistant-ui-${index}`,\n role: message.role as \"user\" | \"assistant\",\n content,\n };\n });\n}\n\nfunction latestUserPrompt(\n messages: readonly {\n role: string;\n content?: readonly { type: string; text?: string }[];\n }[],\n): string {\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i];\n if (message.role !== \"user\") continue;\n return assistantMessageText(message);\n }\n return \"\";\n}\n\nexport function createAgentChatRuntimeAdapter(\n runtime: AgentChatRuntime,\n options: CreateAgentChatRuntimeAdapterOptions = {},\n): ChatModelAdapter {\n let sessionPromise: Promise<AgentChatRuntimeSession> | null = null;\n const getSession = () => {\n sessionPromise ??= Promise.resolve(\n runtime.createSession({\n id: options.sessionId ?? options.threadId,\n threadId: options.threadId,\n metadata: options.metadata,\n }),\n );\n return sessionPromise;\n };\n\n return {\n async *run({ messages, abortSignal }) {\n const adapterMessages = messages as readonly {\n role: string;\n content?: readonly { type: string; text?: string; image?: string }[];\n }[];\n const session = await getSession();\n const prompt = latestUserPrompt(adapterMessages);\n const turn = await session.startTurn({\n prompt,\n messages: assistantMessagesToRuntimeMessages(adapterMessages),\n model: options.modelRef?.current,\n reasoningEffort: options.effortRef?.current,\n abortSignal,\n metadata: options.metadata,\n });\n const projection: RuntimeContentProjection = {\n content: [],\n partsById: new Map(),\n };\n try {\n for await (const event of turn.events) {\n const result = applyRuntimeEventToContent(event, projection);\n if (result) {\n const metadata = (result.metadata ?? {}) as Record<string, unknown>;\n const custom =\n metadata.custom && typeof metadata.custom === \"object\"\n ? (metadata.custom as Record<string, unknown>)\n : {};\n yield {\n ...result,\n metadata: {\n ...metadata,\n custom: {\n ...custom,\n runtimeId: runtime.id,\n ...(turn.runId ? { runId: turn.runId } : {}),\n },\n },\n } as ChatModelRunResult;\n }\n }\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n await turn.cancel?.({ reason: \"abort\" });\n return;\n }\n throw error;\n }\n },\n };\n}\n"]}
@@ -52,7 +52,7 @@ export declare function AnimatedCollapse({ open, children, }: {
52
52
  open: boolean;
53
53
  children: React.ReactNode;
54
54
  }): React.JSX.Element | null;
55
- export declare function ToolCallDisplay({ toolName, argsText, args, result, mcpApp, chatUI, isRunning, structuredMeta, approval, repeatCount, isLatestRunning, isActiveTail, }: {
55
+ export declare function ToolCallDisplay({ toolName, argsText, args, result, mcpApp, chatUI, isRunning, outcome, structuredMeta, approval, repeatCount, isLatestRunning, isActiveTail, }: {
56
56
  toolName: string;
57
57
  argsText?: string;
58
58
  args: Record<string, unknown>;
@@ -60,6 +60,8 @@ export declare function ToolCallDisplay({ toolName, argsText, args, result, mcpA
60
60
  mcpApp?: AgentMcpAppPayload;
61
61
  chatUI?: ActionChatUIConfig;
62
62
  isRunning: boolean;
63
+ /** "unknown": the stream ended mid-flight, so the side effect may have landed. */
64
+ outcome?: "unknown";
63
65
  structuredMeta?: Record<string, unknown>;
64
66
  approval?: {
65
67
  approvalKey: string;
@@ -76,6 +78,7 @@ export declare function ToolCallFallback({ toolName, args, argsText, result, ...
76
78
  chatUI?: ActionChatUIConfig;
77
79
  structuredMeta?: Record<string, unknown>;
78
80
  activity?: boolean;
81
+ outcome?: "unknown";
79
82
  approval?: {
80
83
  approvalKey: string;
81
84
  dismissed?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-call-display.d.ts","sourceRoot":"","sources":["../../../src/client/chat/tool-call-display.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-call-display.d.ts","sourceRoot":"","sources":["../../../src/client/chat/tool-call-display.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { IconLoader2, IconCircleX, IconCheck, IconChevronRight, IconCopy, IconCode, IconBrandSlack, IconTerminal2, IconDatabase, IconSearch, IconFileCode, IconShieldCheck, IconX, } from "@tabler/icons-react";
2
+ import { IconLoader2, IconAlertTriangle, IconCircleX, IconCheck, IconChevronRight, IconCopy, IconCode, IconBrandSlack, IconTerminal2, IconDatabase, IconSearch, IconFileCode, IconShieldCheck, IconX, } from "@tabler/icons-react";
3
3
  import React, { useState, useEffect, useCallback, useLayoutEffect, useRef, } from "react";
4
4
  import { AgentTaskCard } from "../AgentTaskCard.js";
5
5
  import { writeClipboardText } from "../clipboard.js";
@@ -251,7 +251,7 @@ function ApprovalAffordance({ toolName, approval, }) {
251
251
  }, className: cn("inline-flex items-center gap-1 rounded-md border border-border px-2.5 py-1 text-xs font-medium transition-colors", "text-foreground hover:bg-muted"), children: [_jsx(IconX, { className: "h-3.5 w-3.5" }), "Deny"] })] }));
252
252
  }
253
253
  // ─── ToolCallDisplay ──────────────────────────────────────────────────────────
254
- export function ToolCallDisplay({ toolName, argsText, args, result, mcpApp, chatUI, isRunning, structuredMeta, approval, repeatCount, isLatestRunning = isRunning, isActiveTail, }) {
254
+ export function ToolCallDisplay({ toolName, argsText, args, result, mcpApp, chatUI, isRunning, outcome, structuredMeta, approval, repeatCount, isLatestRunning = isRunning, isActiveTail, }) {
255
255
  const showActiveTail = isActiveTail ?? isLatestRunning;
256
256
  // Delegate to bespoke cells when structured metadata is present.
257
257
  // These must be separate components so hook order in ToolCallDisplayGeneric
@@ -267,9 +267,9 @@ export function ToolCallDisplay({ toolName, argsText, args, result, mcpApp, chat
267
267
  if (toolKind === "write") {
268
268
  return wrapToolDisplay(_jsx(WriteCell, { meta: structuredMeta, isRunning: isRunning }));
269
269
  }
270
- return wrapToolDisplay(_jsx(ToolCallDisplayGeneric, { toolName: toolName, argsText: argsText, args: args, result: result, mcpApp: mcpApp, chatUI: chatUI, isRunning: isRunning, isActiveTail: showActiveTail, structuredMeta: structuredMeta, approval: approval, repeatCount: repeatCount }));
270
+ return wrapToolDisplay(_jsx(ToolCallDisplayGeneric, { toolName: toolName, argsText: argsText, args: args, result: result, mcpApp: mcpApp, chatUI: chatUI, isRunning: isRunning, outcome: outcome, isActiveTail: showActiveTail, structuredMeta: structuredMeta, approval: approval, repeatCount: repeatCount }));
271
271
  }
272
- function ToolCallDisplayGeneric({ toolName, argsText, args, result, mcpApp, chatUI, isRunning, isActiveTail, structuredMeta, approval, repeatCount, }) {
272
+ function ToolCallDisplayGeneric({ toolName, argsText, args, result, mcpApp, chatUI, isRunning, outcome, isActiveTail, structuredMeta, approval, repeatCount, }) {
273
273
  const isRawCallAgent = toolName === "call-agent";
274
274
  const isAgentCall = toolName.startsWith("agent:") || isRawCallAgent;
275
275
  const [expanded, setExpanded] = useState(isAgentCall);
@@ -280,6 +280,7 @@ function ToolCallDisplayGeneric({ toolName, argsText, args, result, mcpApp, chat
280
280
  ? args.agent
281
281
  : null;
282
282
  const isAgentError = isAgentCall && result === "Error calling agent";
283
+ const isUnknownOutcome = !isRunning && outcome === "unknown";
283
284
  const agentStreamText = isRawCallAgent
284
285
  ? (result ?? "")
285
286
  : isAgentCall
@@ -370,7 +371,7 @@ function ToolCallDisplayGeneric({ toolName, argsText, args, result, mcpApp, chat
370
371
  ? structuredMeta.agentDurationMs
371
372
  : agentActivity?.durationMs }));
372
373
  }
373
- return (_jsxs("div", { className: "group/tool my-0.5 w-full overflow-hidden", children: [mcpApp && _jsx(McpAppRenderer, { app: mcpApp, className: "mb-1.5" }), _jsxs("button", { type: "button", onClick: () => canExpand && setExpanded(!isExpanded), "aria-expanded": canExpand ? isExpanded : undefined, className: cn("flex w-full items-center gap-1.5 rounded-md py-0.5 text-left text-[13px] text-muted-foreground transition-colors", canExpand && "hover:text-foreground", isRunning && "text-muted-foreground"), children: [_jsx("span", { className: "relative flex size-4 shrink-0 items-center justify-center", children: isRunning ? (_jsx(IconLoader2, { className: "size-3.5 animate-spin" })) : isAgentError ? (_jsx(IconCircleX, { className: "size-3.5 text-destructive" })) : (_jsxs(_Fragment, { children: [_jsx(ToolIcon, { className: cn("size-3.5 transition-opacity", canExpand && "group-hover/tool:opacity-0") }), canExpand && (_jsx(IconChevronRight, { className: cn("absolute size-3.5 opacity-0 transition-[opacity,transform] group-hover/tool:opacity-100", isExpanded && "rotate-90") }))] })) }), _jsx("span", { className: cn("min-w-0 truncate font-normal", isActiveTail && "agent-running-shimmer"), children: displayName }), repeatCount && repeatCount > 1 && (_jsxs("span", { className: "shrink-0 rounded border border-border/60 px-1.5 py-0.5 text-[10px] leading-none text-muted-foreground", title: `Repeated ${repeatCount} times`, children: [repeatCount, "x"] }))] }), _jsx(AnimatedCollapse, { open: isExpanded && !isAgentCall && (hasArgs || result !== undefined), children: _jsxs("div", { className: "mt-1 space-y-2 pl-5", children: [inputPayload && (_jsx(SimpleCodeViewer, { text: inputPayload.text, lang: inputPayload.lang })), resultPayload && (_jsx(ToolOutputPopover, { open: outputOpen, onOpenChange: setOutputOpen, title: outputTitle, payload: resultPayload, children: _jsx("button", { type: "button", "aria-label": `View ${toolName} output`, className: "inline-flex size-6 items-center justify-center rounded-md text-muted-foreground/70 transition-colors hover:bg-accent hover:text-foreground", children: _jsx(IconCode, { className: "size-3.5" }) }) }))] }) }), approval && (_jsx(ApprovalAffordance, { toolName: toolName, approval: approval }))] }));
374
+ return (_jsxs("div", { className: "group/tool my-0.5 w-full overflow-hidden", children: [mcpApp && _jsx(McpAppRenderer, { app: mcpApp, className: "mb-1.5" }), _jsxs("button", { type: "button", onClick: () => canExpand && setExpanded(!isExpanded), "aria-expanded": canExpand ? isExpanded : undefined, className: cn("flex w-full items-center gap-1.5 rounded-md py-0.5 text-left text-[13px] text-muted-foreground transition-colors", canExpand && "hover:text-foreground", isRunning && "text-muted-foreground"), children: [_jsx("span", { className: "relative flex size-4 shrink-0 items-center justify-center", children: isRunning ? (_jsx(IconLoader2, { className: "size-3.5 animate-spin" })) : isAgentError ? (_jsx(IconCircleX, { className: "size-3.5 text-destructive" })) : isUnknownOutcome ? (_jsx(IconAlertTriangle, { className: "size-3.5 text-muted-foreground" })) : (_jsxs(_Fragment, { children: [_jsx(ToolIcon, { className: cn("size-3.5 transition-opacity", canExpand && "group-hover/tool:opacity-0") }), canExpand && (_jsx(IconChevronRight, { className: cn("absolute size-3.5 opacity-0 transition-[opacity,transform] group-hover/tool:opacity-100", isExpanded && "rotate-90") }))] })) }), _jsx("span", { className: cn("min-w-0 truncate font-normal", isActiveTail && "agent-running-shimmer"), children: displayName }), repeatCount && repeatCount > 1 && (_jsxs("span", { className: "shrink-0 rounded border border-border/60 px-1.5 py-0.5 text-[10px] leading-none text-muted-foreground", title: `Repeated ${repeatCount} times`, children: [repeatCount, "x"] }))] }), _jsx(AnimatedCollapse, { open: isExpanded && !isAgentCall && (hasArgs || result !== undefined), children: _jsxs("div", { className: "mt-1 space-y-2 pl-5", children: [inputPayload && (_jsx(SimpleCodeViewer, { text: inputPayload.text, lang: inputPayload.lang })), resultPayload && (_jsx(ToolOutputPopover, { open: outputOpen, onOpenChange: setOutputOpen, title: outputTitle, payload: resultPayload, children: _jsx("button", { type: "button", "aria-label": `View ${toolName} output`, className: "inline-flex size-6 items-center justify-center rounded-md text-muted-foreground/70 transition-colors hover:bg-accent hover:text-foreground", children: _jsx(IconCode, { className: "size-3.5" }) }) }))] }) }), isUnknownOutcome && (_jsx("p", { role: "status", className: "ps-5 text-xs text-muted-foreground", children: "Interrupted before this finished reporting \u2014 it may or may not have completed. Check before retrying." })), approval && (_jsx(ApprovalAffordance, { toolName: toolName, approval: approval }))] }));
374
375
  }
375
376
  function AgentCallCell({ agentName, activity, progress, responseText, isRunning, isError, durationMs, }) {
376
377
  const t = useT();
@@ -423,12 +424,17 @@ function AgentActivityToolCallRow({ tool, isActiveTail, }) {
423
424
  // ─── ToolCallFallback ──────────────────────────────────────────────────────────
424
425
  export function ToolCallFallback({ toolName, args, argsText, result, ...rest }) {
425
426
  const chatRunning = React.useContext(ChatRunningContext);
426
- const isRunning = result === undefined && (chatRunning || rest.activity === true);
427
+ // A spinner is a claim that something is running right now, so it needs an
428
+ // actually-running chat. `chatRunning` already stays true across
429
+ // auto-continuation gaps and server-active runs (resolveAssistantChatRunningState),
430
+ // so an activity placeholder alone must never resurrect one on rehydrated
431
+ // history.
432
+ const isRunning = result === undefined && chatRunning;
427
433
  return (_jsx(ToolCallDisplay, { toolName: toolName, args: args, argsText: argsText, result: typeof result === "string"
428
434
  ? result
429
435
  : result !== undefined
430
436
  ? JSON.stringify(result)
431
- : undefined, mcpApp: rest.mcpApp, chatUI: rest.chatUI, structuredMeta: rest.structuredMeta, isRunning: isRunning, isActiveTail: rest.isActiveTail, isLatestRunning: rest.isLatestRunning, approval: rest.approval, repeatCount: rest.repeatCount }));
437
+ : undefined, mcpApp: rest.mcpApp, chatUI: rest.chatUI, structuredMeta: rest.structuredMeta, isRunning: isRunning, outcome: rest.outcome, isActiveTail: rest.isActiveTail, isLatestRunning: rest.isLatestRunning, approval: rest.approval, repeatCount: rest.repeatCount }));
432
438
  }
433
439
  // ─── ReconnectStreamMessage ────────────────────────────────────────────────────
434
440
  // Renders the agent's in-progress response during reconnection (outside
@@ -454,7 +460,7 @@ export function ReconnectStreamMessage({ content, }) {
454
460
  if (part.type === "reasoning") {
455
461
  return (_jsx(ReasoningCell, { text: part.text, isStreaming: chatRunning && i === streamingReasoningPartIndex, resetKey: `reconnect-reasoning-${i}`, defaultOpen: i === latestReasoningPartIndex, collapseWhenReplaced: i < latestReasoningPartIndex }, `reconnect-reasoning-${i}`));
456
462
  }
457
- return (_jsx(ToolCallDisplay, { toolName: part.toolName, argsText: part.argsText, args: part.args, result: part.result, mcpApp: part.mcpApp, chatUI: part.chatUI, structuredMeta: part.structuredMeta, isRunning: part.result === undefined && (chatRunning || part.activity === true), isActiveTail: i === latestActiveToolIndex, approval: part.approval, repeatCount: part.repeatCount }, `reconnect-tool-${i}`));
463
+ return (_jsx(ToolCallDisplay, { toolName: part.toolName, argsText: part.argsText, args: part.args, result: part.result, mcpApp: part.mcpApp, chatUI: part.chatUI, structuredMeta: part.structuredMeta, outcome: part.outcome, isRunning: part.result === undefined && (chatRunning || part.activity === true), isActiveTail: i === latestActiveToolIndex, approval: part.approval, repeatCount: part.repeatCount }, `reconnect-tool-${i}`));
458
464
  };
459
465
  const renderedParts = [];
460
466
  let summaryStartIndex = -1;