@agent-native/core 0.118.0 → 0.119.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 (480) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +32 -0
  3. package/corpus/core/docs/content/a2a-protocol.mdx +15 -0
  4. package/corpus/core/docs/content/template-chat.mdx +1 -1
  5. package/corpus/core/docs/content/template-plan.mdx +3 -3
  6. package/corpus/core/package.json +1 -1
  7. package/corpus/core/src/a2a/activity.ts +371 -0
  8. package/corpus/core/src/a2a/client.ts +35 -11
  9. package/corpus/core/src/a2a/index.ts +21 -0
  10. package/corpus/core/src/a2a/types.ts +8 -0
  11. package/corpus/core/src/agent/model-config.ts +19 -23
  12. package/corpus/core/src/agent/production-agent.ts +167 -100
  13. package/corpus/core/src/agent/types.ts +16 -1
  14. package/corpus/core/src/cli/index.ts +18 -10
  15. package/corpus/core/src/cli/multi-frontier-runs.ts +5 -3
  16. package/corpus/core/src/cli/templates-meta.ts +0 -12
  17. package/corpus/core/src/cli/workspace-dev.ts +1 -1
  18. package/corpus/core/src/client/AgentPanel.tsx +9 -1
  19. package/corpus/core/src/client/RunStuckBanner.tsx +39 -47
  20. package/corpus/core/src/client/chat/action-chat-ui-surface.tsx +32 -0
  21. package/corpus/core/src/client/chat/message-components.tsx +53 -8
  22. package/corpus/core/src/client/chat/tool-call-display.tsx +214 -44
  23. package/corpus/core/src/client/chat/widgets/InlineExtensionWidget.tsx +0 -1
  24. package/corpus/core/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
  25. package/corpus/core/src/client/chat-model-groups.ts +67 -27
  26. package/corpus/core/src/client/conversation/AgentConversation.tsx +12 -1
  27. package/corpus/core/src/client/error-capture.ts +2 -6
  28. package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +20 -14
  29. package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
  30. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +7 -17
  31. package/corpus/core/src/client/resources/mcp-integration-logos.ts +2 -2
  32. package/corpus/core/src/client/route-chunk-recovery.ts +5 -3
  33. package/corpus/core/src/client/session-replay.ts +3 -3
  34. package/corpus/core/src/client/settings/SettingsPanel.tsx +15 -6
  35. package/corpus/core/src/client/sharing/ShareButton.tsx +1 -27
  36. package/corpus/core/src/client/sharing/ShareDialog.tsx +0 -16
  37. package/corpus/core/src/client/sharing/useShareButtonController.ts +0 -7
  38. package/corpus/core/src/client/sharing/useShareDialogController.ts +0 -2
  39. package/corpus/core/src/client/sse-event-processor.ts +85 -1
  40. package/corpus/core/src/client/transcription/use-live-transcription.ts +64 -45
  41. package/corpus/core/src/deploy/build.ts +2 -1
  42. package/corpus/core/src/guards/db-tool-scoping.ts +1 -1
  43. package/corpus/core/src/integrations/adapters/slack.ts +84 -5
  44. package/corpus/core/src/integrations/index.ts +5 -1
  45. package/corpus/core/src/localization/default-messages.ts +7 -1
  46. package/corpus/core/src/mcp-client/oauth-routes.ts +45 -12
  47. package/corpus/core/src/scripts/agent-engines/list-agent-engines.ts +1 -18
  48. package/corpus/core/src/scripts/call-agent.ts +49 -6
  49. package/corpus/core/src/server/agent-chat-plugin.ts +50 -10
  50. package/corpus/core/src/server/realtime-voice.ts +4 -1
  51. package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +16 -0
  52. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
  53. package/corpus/core/src/terminal/cli-registry.ts +1 -1
  54. package/corpus/core/src/vite/client.ts +166 -1
  55. package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +13 -1
  56. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +10 -0
  57. package/corpus/templates/analytics/changelog/2026-07-22-show-a-useful-error-when-saving-a-dashboard-view-fails.md +6 -0
  58. package/corpus/templates/brain/app/routes/sources.tsx +181 -114
  59. package/corpus/templates/clips/AGENTS.md +8 -6
  60. package/corpus/templates/clips/actions/request-transcript.ts +90 -420
  61. package/corpus/templates/clips/actions/save-browser-transcript.ts +11 -28
  62. package/corpus/templates/clips/app/components/capture-install-options.tsx +5 -3
  63. package/corpus/templates/clips/app/components/player/transcript-panel.tsx +3 -136
  64. package/corpus/templates/clips/app/lib/capture-install-options.ts +15 -4
  65. package/corpus/templates/clips/app/routes/download.tsx +3 -2
  66. package/corpus/templates/clips/changelog/2026-07-22-fixed-an-intermittent-hydration-error-on-the-download-page.md +6 -0
  67. package/corpus/templates/clips/changelog/2026-07-22-fixed-transcript-generation-when-native-speech-capture-retur.md +6 -0
  68. package/corpus/templates/clips/changelog/2026-07-22-transcript-generation-now-retries-with-backup-speech-recogni.md +6 -0
  69. package/corpus/templates/clips/changelog/2026-07-23-fixed-recordings-failing-to-save-with-a-cancelled-or-cleanup.md +6 -0
  70. package/corpus/templates/clips/server/lib/public-agent-context.ts +2 -2
  71. package/corpus/templates/clips/server/plugins/db.ts +9 -1
  72. package/corpus/templates/clips/server/register-secrets.ts +7 -6
  73. package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +16 -84
  74. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +13 -7
  75. package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +2 -2
  76. package/corpus/templates/content/app/i18n-data.ts +10 -0
  77. package/corpus/templates/design/server/lib/fig-file-decoder.ts +1 -0
  78. package/corpus/templates/plan/app/entry.client.tsx +3 -0
  79. package/corpus/templates/plan/changelog/2026-07-22-recover-stale-pages-after-a-deployment-refresh-automatically.md +6 -0
  80. package/corpus/templates/slides/app/hooks/use-agent-generating.ts +10 -3
  81. package/corpus/templates/slides/app/pages/Index.tsx +1 -0
  82. package/corpus/templates/slides/changelog/2026-07-22-new-deck-prompts-now-open-in-their-own-visible-chat-thread.md +6 -0
  83. package/corpus/toolkit/CHANGELOG.md +9 -0
  84. package/corpus/toolkit/package.json +1 -1
  85. package/corpus/toolkit/src/composer/PromptComposer.tsx +5 -1
  86. package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +119 -31
  87. package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +30 -0
  88. package/corpus/toolkit/src/conformance/runner.tsx +153 -1
  89. package/corpus/toolkit/src/editor/SharedRichEditor.tsx +13 -2
  90. package/corpus/toolkit/src/editor/SlashCommandMenu.tsx +20 -0
  91. package/corpus/toolkit/src/editor/index.ts +2 -0
  92. package/corpus/toolkit/src/styles.css +52 -23
  93. package/dist/a2a/activity.d.ts +50 -0
  94. package/dist/a2a/activity.d.ts.map +1 -0
  95. package/dist/a2a/activity.js +236 -0
  96. package/dist/a2a/activity.js.map +1 -0
  97. package/dist/a2a/client.d.ts +5 -1
  98. package/dist/a2a/client.d.ts.map +1 -1
  99. package/dist/a2a/client.js +18 -13
  100. package/dist/a2a/client.js.map +1 -1
  101. package/dist/a2a/index.d.ts +2 -1
  102. package/dist/a2a/index.d.ts.map +1 -1
  103. package/dist/a2a/index.js +1 -0
  104. package/dist/a2a/index.js.map +1 -1
  105. package/dist/a2a/types.d.ts +1 -0
  106. package/dist/a2a/types.d.ts.map +1 -1
  107. package/dist/a2a/types.js.map +1 -1
  108. package/dist/agent/engine/anthropic-engine.d.ts +1 -1
  109. package/dist/agent/engine/builder-engine.d.ts +2 -2
  110. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  111. package/dist/agent/model-config.d.ts +16 -16
  112. package/dist/agent/model-config.d.ts.map +1 -1
  113. package/dist/agent/model-config.js +19 -23
  114. package/dist/agent/model-config.js.map +1 -1
  115. package/dist/agent/production-agent.d.ts +26 -0
  116. package/dist/agent/production-agent.d.ts.map +1 -1
  117. package/dist/agent/production-agent.js +137 -80
  118. package/dist/agent/production-agent.js.map +1 -1
  119. package/dist/agent/types.d.ts +10 -0
  120. package/dist/agent/types.d.ts.map +1 -1
  121. package/dist/agent/types.js.map +1 -1
  122. package/dist/cli/index.js +18 -8
  123. package/dist/cli/index.js.map +1 -1
  124. package/dist/cli/multi-frontier-runs.js +3 -3
  125. package/dist/cli/multi-frontier-runs.js.map +1 -1
  126. package/dist/cli/templates-meta.d.ts.map +1 -1
  127. package/dist/cli/templates-meta.js +0 -12
  128. package/dist/cli/templates-meta.js.map +1 -1
  129. package/dist/cli/workspace-dev.js +1 -1
  130. package/dist/cli/workspace-dev.js.map +1 -1
  131. package/dist/client/AgentPanel.d.ts.map +1 -1
  132. package/dist/client/AgentPanel.js +4 -1
  133. package/dist/client/AgentPanel.js.map +1 -1
  134. package/dist/client/RunStuckBanner.d.ts +3 -5
  135. package/dist/client/RunStuckBanner.d.ts.map +1 -1
  136. package/dist/client/RunStuckBanner.js +17 -18
  137. package/dist/client/RunStuckBanner.js.map +1 -1
  138. package/dist/client/chat/action-chat-ui-surface.d.ts +8 -0
  139. package/dist/client/chat/action-chat-ui-surface.d.ts.map +1 -0
  140. package/dist/client/chat/action-chat-ui-surface.js +10 -0
  141. package/dist/client/chat/action-chat-ui-surface.js.map +1 -0
  142. package/dist/client/chat/message-components.d.ts +3 -0
  143. package/dist/client/chat/message-components.d.ts.map +1 -1
  144. package/dist/client/chat/message-components.js +40 -7
  145. package/dist/client/chat/message-components.js.map +1 -1
  146. package/dist/client/chat/tool-call-display.d.ts +3 -1
  147. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  148. package/dist/client/chat/tool-call-display.js +76 -23
  149. package/dist/client/chat/tool-call-display.js.map +1 -1
  150. package/dist/client/chat/widgets/InlineExtensionWidget.d.ts.map +1 -1
  151. package/dist/client/chat/widgets/InlineExtensionWidget.js +1 -1
  152. package/dist/client/chat/widgets/InlineExtensionWidget.js.map +1 -1
  153. package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -1
  154. package/dist/client/chat/widgets/builtin-tool-renderers.js +5 -3
  155. package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -1
  156. package/dist/client/chat-model-groups.d.ts.map +1 -1
  157. package/dist/client/chat-model-groups.js +44 -21
  158. package/dist/client/chat-model-groups.js.map +1 -1
  159. package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
  160. package/dist/client/conversation/AgentConversation.js +3 -2
  161. package/dist/client/conversation/AgentConversation.js.map +1 -1
  162. package/dist/client/error-capture.d.ts.map +1 -1
  163. package/dist/client/error-capture.js +2 -2
  164. package/dist/client/error-capture.js.map +1 -1
  165. package/dist/client/resources/McpConnectionSuggestion.d.ts +1 -0
  166. package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
  167. package/dist/client/resources/McpConnectionSuggestion.js +9 -8
  168. package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
  169. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  170. package/dist/client/resources/ResourcesPanel.js +3 -1
  171. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  172. package/dist/client/resources/mcp-integration-catalog.d.ts +1 -0
  173. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
  174. package/dist/client/resources/mcp-integration-catalog.js +4 -17
  175. package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
  176. package/dist/client/resources/mcp-integration-logos.js +2 -2
  177. package/dist/client/resources/mcp-integration-logos.js.map +1 -1
  178. package/dist/client/route-chunk-recovery.d.ts.map +1 -1
  179. package/dist/client/route-chunk-recovery.js +5 -3
  180. package/dist/client/route-chunk-recovery.js.map +1 -1
  181. package/dist/client/session-replay.js +3 -3
  182. package/dist/client/session-replay.js.map +1 -1
  183. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  184. package/dist/client/settings/SettingsPanel.js +2 -2
  185. package/dist/client/settings/SettingsPanel.js.map +1 -1
  186. package/dist/client/sharing/ShareButton.d.ts +1 -1
  187. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  188. package/dist/client/sharing/ShareButton.js +3 -4
  189. package/dist/client/sharing/ShareButton.js.map +1 -1
  190. package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
  191. package/dist/client/sharing/ShareDialog.js +1 -2
  192. package/dist/client/sharing/ShareDialog.js.map +1 -1
  193. package/dist/client/sharing/useShareButtonController.d.ts +0 -1
  194. package/dist/client/sharing/useShareButtonController.d.ts.map +1 -1
  195. package/dist/client/sharing/useShareButtonController.js +0 -6
  196. package/dist/client/sharing/useShareButtonController.js.map +1 -1
  197. package/dist/client/sharing/useShareDialogController.d.ts +0 -1
  198. package/dist/client/sharing/useShareDialogController.d.ts.map +1 -1
  199. package/dist/client/sharing/useShareDialogController.js +0 -1
  200. package/dist/client/sharing/useShareDialogController.js.map +1 -1
  201. package/dist/client/sse-event-processor.d.ts +12 -0
  202. package/dist/client/sse-event-processor.d.ts.map +1 -1
  203. package/dist/client/sse-event-processor.js +63 -1
  204. package/dist/client/sse-event-processor.js.map +1 -1
  205. package/dist/client/transcription/use-live-transcription.d.ts +3 -3
  206. package/dist/client/transcription/use-live-transcription.d.ts.map +1 -1
  207. package/dist/client/transcription/use-live-transcription.js +22 -11
  208. package/dist/client/transcription/use-live-transcription.js.map +1 -1
  209. package/dist/collab/awareness.d.ts +2 -2
  210. package/dist/collab/awareness.d.ts.map +1 -1
  211. package/dist/deploy/build.d.ts.map +1 -1
  212. package/dist/deploy/build.js +1 -1
  213. package/dist/deploy/build.js.map +1 -1
  214. package/dist/guards/db-tool-scoping.js +1 -1
  215. package/dist/guards/db-tool-scoping.js.map +1 -1
  216. package/dist/integrations/adapters/slack.d.ts +1 -0
  217. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  218. package/dist/integrations/adapters/slack.js +61 -5
  219. package/dist/integrations/adapters/slack.js.map +1 -1
  220. package/dist/integrations/index.d.ts +1 -1
  221. package/dist/integrations/index.d.ts.map +1 -1
  222. package/dist/integrations/index.js +1 -1
  223. package/dist/integrations/index.js.map +1 -1
  224. package/dist/localization/default-messages.d.ts +6 -0
  225. package/dist/localization/default-messages.d.ts.map +1 -1
  226. package/dist/localization/default-messages.js +7 -1
  227. package/dist/localization/default-messages.js.map +1 -1
  228. package/dist/mcp-client/oauth-routes.d.ts +3 -0
  229. package/dist/mcp-client/oauth-routes.d.ts.map +1 -1
  230. package/dist/mcp-client/oauth-routes.js +41 -12
  231. package/dist/mcp-client/oauth-routes.js.map +1 -1
  232. package/dist/observability/routes.d.ts +3 -3
  233. package/dist/provider-api/actions/custom-provider-registration.d.ts +8 -8
  234. package/dist/provider-api/actions/provider-api.d.ts +11 -11
  235. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
  236. package/dist/scripts/agent-engines/list-agent-engines.js +1 -18
  237. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  238. package/dist/scripts/call-agent.d.ts.map +1 -1
  239. package/dist/scripts/call-agent.js +49 -6
  240. package/dist/scripts/call-agent.js.map +1 -1
  241. package/dist/secrets/routes.d.ts +6 -6
  242. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  243. package/dist/server/agent-chat-plugin.js +38 -10
  244. package/dist/server/agent-chat-plugin.js.map +1 -1
  245. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  246. package/dist/server/realtime-voice.d.ts.map +1 -1
  247. package/dist/server/realtime-voice.js +1 -1
  248. package/dist/server/realtime-voice.js.map +1 -1
  249. package/dist/server/transcribe-voice.d.ts +1 -1
  250. package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +16 -0
  251. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
  252. package/dist/terminal/cli-registry.js +1 -1
  253. package/dist/terminal/cli-registry.js.map +1 -1
  254. package/dist/vite/client.d.ts +8 -1
  255. package/dist/vite/client.d.ts.map +1 -1
  256. package/dist/vite/client.js +113 -2
  257. package/dist/vite/client.js.map +1 -1
  258. package/docs/content/a2a-protocol.mdx +15 -0
  259. package/docs/content/template-chat.mdx +1 -1
  260. package/docs/content/template-plan.mdx +3 -3
  261. package/package.json +2 -2
  262. package/src/a2a/activity.ts +371 -0
  263. package/src/a2a/client.ts +35 -11
  264. package/src/a2a/index.ts +21 -0
  265. package/src/a2a/types.ts +8 -0
  266. package/src/agent/model-config.ts +19 -23
  267. package/src/agent/production-agent.ts +167 -100
  268. package/src/agent/types.ts +16 -1
  269. package/src/cli/index.ts +18 -10
  270. package/src/cli/multi-frontier-runs.ts +5 -3
  271. package/src/cli/templates-meta.ts +0 -12
  272. package/src/cli/workspace-dev.ts +1 -1
  273. package/src/client/AgentPanel.tsx +9 -1
  274. package/src/client/RunStuckBanner.tsx +39 -47
  275. package/src/client/chat/action-chat-ui-surface.tsx +32 -0
  276. package/src/client/chat/message-components.tsx +53 -8
  277. package/src/client/chat/tool-call-display.tsx +214 -44
  278. package/src/client/chat/widgets/InlineExtensionWidget.tsx +0 -1
  279. package/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
  280. package/src/client/chat-model-groups.ts +67 -27
  281. package/src/client/conversation/AgentConversation.tsx +12 -1
  282. package/src/client/error-capture.ts +2 -6
  283. package/src/client/resources/McpConnectionSuggestion.tsx +20 -14
  284. package/src/client/resources/ResourcesPanel.tsx +5 -1
  285. package/src/client/resources/mcp-integration-catalog.ts +7 -17
  286. package/src/client/resources/mcp-integration-logos.ts +2 -2
  287. package/src/client/route-chunk-recovery.ts +5 -3
  288. package/src/client/session-replay.ts +3 -3
  289. package/src/client/settings/SettingsPanel.tsx +15 -6
  290. package/src/client/sharing/ShareButton.tsx +1 -27
  291. package/src/client/sharing/ShareDialog.tsx +0 -16
  292. package/src/client/sharing/useShareButtonController.ts +0 -7
  293. package/src/client/sharing/useShareDialogController.ts +0 -2
  294. package/src/client/sse-event-processor.ts +85 -1
  295. package/src/client/transcription/use-live-transcription.ts +64 -45
  296. package/src/deploy/build.ts +2 -1
  297. package/src/guards/db-tool-scoping.ts +1 -1
  298. package/src/integrations/adapters/slack.ts +84 -5
  299. package/src/integrations/index.ts +5 -1
  300. package/src/localization/default-messages.ts +7 -1
  301. package/src/mcp-client/oauth-routes.ts +45 -12
  302. package/src/scripts/agent-engines/list-agent-engines.ts +1 -18
  303. package/src/scripts/call-agent.ts +49 -6
  304. package/src/server/agent-chat-plugin.ts +50 -10
  305. package/src/server/realtime-voice.ts +4 -1
  306. package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +16 -0
  307. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
  308. package/src/terminal/cli-registry.ts +1 -1
  309. package/src/vite/client.ts +166 -1
  310. package/corpus/core/src/observability/hosted-model-experiment.ts +0 -118
  311. package/corpus/templates/crm/.agents/skills/agent-native-docs/SKILL.md +0 -115
  312. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +0 -177
  313. package/corpus/templates/crm/.agents/skills/crm/SKILL.md +0 -128
  314. package/corpus/templates/crm/.agents/skills/customizing-agent-native/SKILL.md +0 -220
  315. package/corpus/templates/crm/.agents/skills/feature-flags/SKILL.md +0 -169
  316. package/corpus/templates/crm/.agents/skills/upgrade-agent-native/SKILL.md +0 -100
  317. package/corpus/templates/crm/.env.example +0 -5
  318. package/corpus/templates/crm/AGENTS.md +0 -120
  319. package/corpus/templates/crm/CHANGELOG.md +0 -1
  320. package/corpus/templates/crm/DEVELOPING.md +0 -66
  321. package/corpus/templates/crm/README.md +0 -106
  322. package/corpus/templates/crm/_gitignore +0 -12
  323. package/corpus/templates/crm/actions/_crm-action-utils.ts +0 -87
  324. package/corpus/templates/crm/actions/_crm-dashboard.ts +0 -69
  325. package/corpus/templates/crm/actions/_crm-data-program-actions.ts +0 -15
  326. package/corpus/templates/crm/actions/_crm-signal-utils.ts +0 -79
  327. package/corpus/templates/crm/actions/apply-crm-proposals.ts +0 -203
  328. package/corpus/templates/crm/actions/attach-call-evidence.ts +0 -170
  329. package/corpus/templates/crm/actions/configure-crm-connection.ts +0 -126
  330. package/corpus/templates/crm/actions/configure-native-crm.ts +0 -44
  331. package/corpus/templates/crm/actions/create-crm-record.ts +0 -148
  332. package/corpus/templates/crm/actions/create-crm-signal-tracker.ts +0 -58
  333. package/corpus/templates/crm/actions/delete-staged-dataset.ts +0 -14
  334. package/corpus/templates/crm/actions/get-crm-automation-recipe.ts +0 -36
  335. package/corpus/templates/crm/actions/get-crm-dashboard-panel.ts +0 -35
  336. package/corpus/templates/crm/actions/get-crm-dashboard.ts +0 -14
  337. package/corpus/templates/crm/actions/get-crm-overview.ts +0 -13
  338. package/corpus/templates/crm/actions/get-crm-pipeline-data.ts +0 -61
  339. package/corpus/templates/crm/actions/get-crm-record.ts +0 -75
  340. package/corpus/templates/crm/actions/install-crm-pipeline-dashboard.ts +0 -81
  341. package/corpus/templates/crm/actions/list-crm-dashboard-revisions.ts +0 -15
  342. package/corpus/templates/crm/actions/list-crm-dashboards.ts +0 -15
  343. package/corpus/templates/crm/actions/list-crm-proposals.ts +0 -31
  344. package/corpus/templates/crm/actions/list-crm-records.ts +0 -79
  345. package/corpus/templates/crm/actions/list-crm-saved-views.ts +0 -15
  346. package/corpus/templates/crm/actions/list-crm-signal-hits.ts +0 -43
  347. package/corpus/templates/crm/actions/list-crm-signal-trackers.ts +0 -32
  348. package/corpus/templates/crm/actions/list-crm-tasks.ts +0 -22
  349. package/corpus/templates/crm/actions/list-staged-datasets.ts +0 -14
  350. package/corpus/templates/crm/actions/list-workspace-connections.ts +0 -47
  351. package/corpus/templates/crm/actions/manage-crm-signal-tracker.ts +0 -87
  352. package/corpus/templates/crm/actions/manage-crm-task.ts +0 -132
  353. package/corpus/templates/crm/actions/navigate.ts +0 -63
  354. package/corpus/templates/crm/actions/provider-api-catalog.ts +0 -22
  355. package/corpus/templates/crm/actions/provider-api-docs.ts +0 -54
  356. package/corpus/templates/crm/actions/provider-api-request.ts +0 -92
  357. package/corpus/templates/crm/actions/query-staged-dataset.ts +0 -44
  358. package/corpus/templates/crm/actions/record-crm-call-insight.ts +0 -160
  359. package/corpus/templates/crm/actions/record-crm-smart-signal.ts +0 -150
  360. package/corpus/templates/crm/actions/restore-crm-dashboard-revision.ts +0 -23
  361. package/corpus/templates/crm/actions/review-crm-signal.ts +0 -31
  362. package/corpus/templates/crm/actions/run-crm-saved-view-program.ts +0 -103
  363. package/corpus/templates/crm/actions/run-crm-signal-trackers.ts +0 -275
  364. package/corpus/templates/crm/actions/run.ts +0 -7
  365. package/corpus/templates/crm/actions/save-crm-dashboard.ts +0 -51
  366. package/corpus/templates/crm/actions/save-crm-saved-view.ts +0 -119
  367. package/corpus/templates/crm/actions/sync-crm.ts +0 -146
  368. package/corpus/templates/crm/actions/update-crm-record.ts +0 -510
  369. package/corpus/templates/crm/actions/view-screen.ts +0 -218
  370. package/corpus/templates/crm/agent-native.app-skill.json +0 -58
  371. package/corpus/templates/crm/app/components/crm/CreateCrmRecordDialog.tsx +0 -158
  372. package/corpus/templates/crm/app/components/crm/CrmDashboardPanel.tsx +0 -78
  373. package/corpus/templates/crm/app/components/crm/CrmSignalsPanel.tsx +0 -226
  374. package/corpus/templates/crm/app/components/crm/IntelligenceSettings.tsx +0 -414
  375. package/corpus/templates/crm/app/components/crm/RecordActions.tsx +0 -510
  376. package/corpus/templates/crm/app/components/crm/RecordGrid.tsx +0 -134
  377. package/corpus/templates/crm/app/components/crm/RecordWorkspace.tsx +0 -362
  378. package/corpus/templates/crm/app/components/crm/SavedViewDataProgram.tsx +0 -93
  379. package/corpus/templates/crm/app/components/crm/Surface.tsx +0 -97
  380. package/corpus/templates/crm/app/components/crm/WorkOverview.tsx +0 -180
  381. package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +0 -112
  382. package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +0 -84
  383. package/corpus/templates/crm/app/components/ui/alert-dialog.tsx +0 -1
  384. package/corpus/templates/crm/app/components/ui/badge.tsx +0 -1
  385. package/corpus/templates/crm/app/components/ui/button.tsx +0 -1
  386. package/corpus/templates/crm/app/components/ui/card.tsx +0 -1
  387. package/corpus/templates/crm/app/components/ui/dialog.tsx +0 -1
  388. package/corpus/templates/crm/app/components/ui/input.tsx +0 -1
  389. package/corpus/templates/crm/app/components/ui/label.tsx +0 -1
  390. package/corpus/templates/crm/app/components/ui/select.tsx +0 -1
  391. package/corpus/templates/crm/app/components/ui/sheet.tsx +0 -1
  392. package/corpus/templates/crm/app/components/ui/skeleton.tsx +0 -1
  393. package/corpus/templates/crm/app/components/ui/switch.tsx +0 -1
  394. package/corpus/templates/crm/app/components/ui/table.tsx +0 -1
  395. package/corpus/templates/crm/app/components/ui/tabs.tsx +0 -1
  396. package/corpus/templates/crm/app/components/ui/textarea.tsx +0 -1
  397. package/corpus/templates/crm/app/components/ui/toolkit-provider.tsx +0 -17
  398. package/corpus/templates/crm/app/design-system.ts +0 -3
  399. package/corpus/templates/crm/app/entry.client.tsx +0 -16
  400. package/corpus/templates/crm/app/entry.server.tsx +0 -10
  401. package/corpus/templates/crm/app/global.css +0 -167
  402. package/corpus/templates/crm/app/hooks/use-navigation-state.ts +0 -60
  403. package/corpus/templates/crm/app/i18n/en-US.ts +0 -89
  404. package/corpus/templates/crm/app/i18n/index.ts +0 -34
  405. package/corpus/templates/crm/app/lib/dashboard.ts +0 -13
  406. package/corpus/templates/crm/app/lib/navigation.ts +0 -54
  407. package/corpus/templates/crm/app/lib/tab-id.ts +0 -1
  408. package/corpus/templates/crm/app/lib/types.ts +0 -172
  409. package/corpus/templates/crm/app/lib/utils.ts +0 -1
  410. package/corpus/templates/crm/app/root.tsx +0 -91
  411. package/corpus/templates/crm/app/routes/_index.tsx +0 -26
  412. package/corpus/templates/crm/app/routes/accounts.tsx +0 -41
  413. package/corpus/templates/crm/app/routes/agent.tsx +0 -5
  414. package/corpus/templates/crm/app/routes/ask.tsx +0 -53
  415. package/corpus/templates/crm/app/routes/dashboard.tsx +0 -118
  416. package/corpus/templates/crm/app/routes/opportunities.tsx +0 -41
  417. package/corpus/templates/crm/app/routes/people.tsx +0 -41
  418. package/corpus/templates/crm/app/routes/proposals.tsx +0 -266
  419. package/corpus/templates/crm/app/routes/records.$recordId.tsx +0 -35
  420. package/corpus/templates/crm/app/routes/settings.tsx +0 -63
  421. package/corpus/templates/crm/app/routes/setup.tsx +0 -308
  422. package/corpus/templates/crm/app/routes/tasks.tsx +0 -252
  423. package/corpus/templates/crm/app/routes/views.tsx +0 -333
  424. package/corpus/templates/crm/app/routes.ts +0 -17
  425. package/corpus/templates/crm/app/vite-env.d.ts +0 -6
  426. package/corpus/templates/crm/changelog/2026-07-21-agent-native-crm.md +0 -6
  427. package/corpus/templates/crm/changelog/2026-07-21-clips-call-evidence-review-recipe.md +0 -6
  428. package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-find-and-review-evidence-grounded-call-signals-w.md +0 -6
  429. package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-manage-keyword-and-smart-call-signal-trackers-fr.md +0 -6
  430. package/corpus/templates/crm/changelog/2026-07-21-delegated-local-crm-automation.md +0 -6
  431. package/corpus/templates/crm/changelog/2026-07-21-native-sql.md +0 -6
  432. package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboard.md +0 -6
  433. package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboards-now-install-correctly-from-the-crm-actio.md +0 -6
  434. package/corpus/templates/crm/changelog/2026-07-21-salesforce-connection.md +0 -6
  435. package/corpus/templates/crm/changelog/2026-07-22-crm-field-validation-now-explains-which-fields-cannot-be-edi.md +0 -6
  436. package/corpus/templates/crm/changelog/2026-07-22-fixed-hubspot-contact-syncs-missing-records-updated-after-th.md +0 -6
  437. package/corpus/templates/crm/changelog/2026-07-22-fixed-pipeline-dashboard-panels-so-their-opportunity-data-lo.md +0 -6
  438. package/corpus/templates/crm/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +0 -6
  439. package/corpus/templates/crm/components.json +0 -20
  440. package/corpus/templates/crm/docs/architecture/crm-contract.md +0 -180
  441. package/corpus/templates/crm/learnings.defaults.md +0 -5
  442. package/corpus/templates/crm/package.json +0 -59
  443. package/corpus/templates/crm/public/favicon.svg +0 -1
  444. package/corpus/templates/crm/public/icon-180.svg +0 -1
  445. package/corpus/templates/crm/public/manifest.json +0 -11
  446. package/corpus/templates/crm/react-router.config.ts +0 -7
  447. package/corpus/templates/crm/server/crm/adapter.ts +0 -32
  448. package/corpus/templates/crm/server/crm/crm-field-firewall.ts +0 -64
  449. package/corpus/templates/crm/server/crm/crm-mirror.ts +0 -711
  450. package/corpus/templates/crm/server/crm/hubspot-adapter.ts +0 -1146
  451. package/corpus/templates/crm/server/crm/native-adapter.ts +0 -1715
  452. package/corpus/templates/crm/server/crm/read-through.ts +0 -207
  453. package/corpus/templates/crm/server/crm/salesforce-adapter.ts +0 -1255
  454. package/corpus/templates/crm/server/db/crm-store.ts +0 -1170
  455. package/corpus/templates/crm/server/db/index.ts +0 -169
  456. package/corpus/templates/crm/server/db/schema.ts +0 -441
  457. package/corpus/templates/crm/server/lib/intelligence/default-detectors.ts +0 -65
  458. package/corpus/templates/crm/server/lib/intelligence/evidence.ts +0 -105
  459. package/corpus/templates/crm/server/lib/intelligence/keyword-detector.ts +0 -100
  460. package/corpus/templates/crm/server/lib/intelligence/smart-detector.ts +0 -144
  461. package/corpus/templates/crm/server/lib/intelligence/summary.ts +0 -141
  462. package/corpus/templates/crm/server/lib/provider-api.ts +0 -64
  463. package/corpus/templates/crm/server/middleware/auth.ts +0 -4
  464. package/corpus/templates/crm/server/plugins/agent-chat.ts +0 -68
  465. package/corpus/templates/crm/server/plugins/auth.ts +0 -14
  466. package/corpus/templates/crm/server/plugins/core-routes.ts +0 -17
  467. package/corpus/templates/crm/server/plugins/db.ts +0 -454
  468. package/corpus/templates/crm/server/routes/[...page].get.ts +0 -5
  469. package/corpus/templates/crm/shared/crm-automation-recipes.ts +0 -132
  470. package/corpus/templates/crm/shared/crm-contract.ts +0 -254
  471. package/corpus/templates/crm/shared/crm-sales-config.ts +0 -63
  472. package/corpus/templates/crm/ssr-entry.ts +0 -11
  473. package/corpus/templates/crm/tsconfig.json +0 -24
  474. package/corpus/templates/crm/vite.config.ts +0 -15
  475. package/corpus/templates/crm/vitest.config.ts +0 -5
  476. package/dist/observability/hosted-model-experiment.d.ts +0 -39
  477. package/dist/observability/hosted-model-experiment.d.ts.map +0 -1
  478. package/dist/observability/hosted-model-experiment.js +0 -90
  479. package/dist/observability/hosted-model-experiment.js.map +0 -1
  480. package/src/observability/hosted-model-experiment.ts +0 -118
@@ -242,11 +242,11 @@ function openRouterModelId(provider: string, model: string): string {
242
242
  return `${provider}/${model}`;
243
243
  }
244
244
 
245
- const FRAMEWORK_DEFAULT_OPENAI_MODEL = "gpt-5.6-sol";
246
- const FRAMEWORK_DEFAULT_BUILDER_MODEL = ANTHROPIC_DEFAULT_MODEL_ID;
245
+ const FRAMEWORK_DEFAULT_OPENAI_MODEL = "gpt-5.6-luna";
247
246
  const FRAMEWORK_DEFAULT_BUILDER_OPENAI_MODEL = builderGatewayModelId(
248
247
  FRAMEWORK_DEFAULT_OPENAI_MODEL,
249
248
  );
249
+ const FRAMEWORK_DEFAULT_BUILDER_MODEL = FRAMEWORK_DEFAULT_BUILDER_OPENAI_MODEL;
250
250
  const FRAMEWORK_DEFAULT_OPENROUTER_MODEL = openRouterModelId(
251
251
  "openai",
252
252
  FRAMEWORK_DEFAULT_OPENAI_MODEL,
@@ -257,14 +257,14 @@ export const AGENT_MODEL_CONFIG = {
257
257
  defaultModel: FRAMEWORK_DEFAULT_BUILDER_MODEL,
258
258
  supportedModels: [
259
259
  "auto",
260
- "claude-opus-4-8",
261
- CLAUDE_SONNET_MODEL_ID,
262
- "claude-haiku-4-5",
263
260
  FRAMEWORK_DEFAULT_BUILDER_OPENAI_MODEL,
264
261
  "gpt-5-6-terra",
265
- "gpt-5-6-luna",
266
- "gemini-3-1-pro",
262
+ "gpt-5-6-sol",
263
+ "claude-haiku-4-5",
264
+ CLAUDE_SONNET_MODEL_ID,
265
+ "claude-opus-4-8",
267
266
  "gemini-3-5-flash",
267
+ "gemini-3-1-pro",
268
268
  // Flash-Lite is a transcription-only public id. Advertising it as an
269
269
  // agent-chat option routes through a Vertex preview model whose
270
270
  // availability can lapse while the id remains accepted, leaving chat
@@ -274,39 +274,35 @@ export const AGENT_MODEL_CONFIG = {
274
274
  anthropic: {
275
275
  defaultModel: ANTHROPIC_DEFAULT_MODEL_ID,
276
276
  supportedModels: [
277
- "claude-fable-5",
278
- "claude-opus-4-8",
279
- CLAUDE_SONNET_MODEL_ID,
280
277
  "claude-haiku-4-5-20251001",
278
+ CLAUDE_SONNET_MODEL_ID,
279
+ "claude-opus-4-8",
280
+ "claude-fable-5",
281
281
  ],
282
282
  },
283
283
  aiSdk: {
284
284
  anthropic: {
285
285
  defaultModel: ANTHROPIC_DEFAULT_MODEL_ID,
286
286
  supportedModels: [
287
- "claude-fable-5",
288
- "claude-opus-4-8",
289
- CLAUDE_SONNET_MODEL_ID,
290
287
  "claude-haiku-4-5-20251001",
288
+ CLAUDE_SONNET_MODEL_ID,
289
+ "claude-opus-4-8",
290
+ "claude-fable-5",
291
291
  ],
292
292
  },
293
293
  openai: {
294
294
  defaultModel: FRAMEWORK_DEFAULT_OPENAI_MODEL,
295
- supportedModels: [
296
- FRAMEWORK_DEFAULT_OPENAI_MODEL,
297
- "gpt-5.6-terra",
298
- "gpt-5.6-luna",
299
- ],
295
+ supportedModels: ["gpt-5.6-luna", "gpt-5.6-terra", "gpt-5.6-sol"],
300
296
  },
301
297
  openrouter: {
302
298
  defaultModel: FRAMEWORK_DEFAULT_OPENROUTER_MODEL,
303
299
  supportedModels: [
304
- "anthropic/claude-fable-5",
305
- "anthropic/claude-opus-4.8",
306
- OPENROUTER_CLAUDE_SONNET_MODEL_ID,
307
- FRAMEWORK_DEFAULT_OPENROUTER_MODEL,
308
- "openai/gpt-5.6-terra",
309
300
  "openai/gpt-5.6-luna",
301
+ "openai/gpt-5.6-terra",
302
+ "openai/gpt-5.6-sol",
303
+ OPENROUTER_CLAUDE_SONNET_MODEL_ID,
304
+ "anthropic/claude-opus-4.8",
305
+ "anthropic/claude-fable-5",
310
306
  // Current stable Gemini on OpenRouter (2.5 Flash is GA)
311
307
  "google/gemini-2.5-flash",
312
308
  "z-ai/glm-5.2",
@@ -1,3 +1,5 @@
1
+ import { randomUUID } from "node:crypto";
2
+
1
3
  import Ajv, { type ValidateFunction } from "ajv";
2
4
  import {
3
5
  defineEventHandler,
@@ -8,6 +10,8 @@ import {
8
10
  } from "h3";
9
11
  import type { EventHandler as H3EventHandler } from "h3";
10
12
 
13
+ import { parseA2AAgentActivityPart } from "../a2a/activity.js";
14
+ import type { Task } from "../a2a/types.js";
11
15
  import {
12
16
  isAgentActionStopError,
13
17
  type ActionAutomationContext,
@@ -1725,6 +1729,159 @@ export async function resolveSkillReferenceContent(
1725
1729
  }
1726
1730
  }
1727
1731
 
1732
+ export function createConnectedAgentReferenceEventRelay(input: {
1733
+ agent: string;
1734
+ send: (event: AgentChatEvent) => void;
1735
+ agentCallId?: string;
1736
+ now?: () => number;
1737
+ }) {
1738
+ const agentCallId = input.agentCallId ?? randomUUID();
1739
+ const now = input.now ?? Date.now;
1740
+ const startedAt = now();
1741
+ let lastActivitySequence = -1;
1742
+ let hasRichActivity = false;
1743
+
1744
+ const emitResponseText = (text: string) => {
1745
+ if (text) {
1746
+ input.send({
1747
+ type: "agent_call_text",
1748
+ agent: input.agent,
1749
+ text,
1750
+ agentCallId,
1751
+ });
1752
+ }
1753
+ };
1754
+ const observeActivity = (task: Task) => {
1755
+ const parts = task.status?.message?.parts;
1756
+ const snapshot = Array.isArray(parts)
1757
+ ? parts.map(parseA2AAgentActivityPart).find((value) => value !== null)
1758
+ : undefined;
1759
+ if (snapshot) {
1760
+ hasRichActivity = true;
1761
+ }
1762
+ if (snapshot && snapshot.sequence > lastActivitySequence) {
1763
+ lastActivitySequence = snapshot.sequence;
1764
+ input.send({
1765
+ type: "agent_call_activity",
1766
+ agent: input.agent,
1767
+ agentCallId,
1768
+ snapshot,
1769
+ });
1770
+ }
1771
+ };
1772
+ const observePollUpdate = (task: Task) => {
1773
+ observeActivity(task);
1774
+ if (hasRichActivity) return;
1775
+
1776
+ const state = task.status?.state;
1777
+ if (
1778
+ state !== "submitted" &&
1779
+ state !== "working" &&
1780
+ state !== "processing"
1781
+ ) {
1782
+ return;
1783
+ }
1784
+ const currentTime = now();
1785
+ const detail = extractConnectedAgentProgressDetail(task);
1786
+ input.send({
1787
+ type: "agent_call_progress",
1788
+ agent: input.agent,
1789
+ agentCallId,
1790
+ state,
1791
+ elapsedSeconds: Math.max(0, Math.round((currentTime - startedAt) / 1000)),
1792
+ ...(detail ? { detail } : {}),
1793
+ });
1794
+ };
1795
+
1796
+ return {
1797
+ agentCallId,
1798
+ start() {
1799
+ input.send({
1800
+ type: "agent_call",
1801
+ agent: input.agent,
1802
+ status: "start",
1803
+ agentCallId,
1804
+ });
1805
+ },
1806
+ observeActivity,
1807
+ observePollUpdate,
1808
+ emitResponseText,
1809
+ finish(status: "done" | "error") {
1810
+ input.send({
1811
+ type: "agent_call",
1812
+ agent: input.agent,
1813
+ status,
1814
+ agentCallId,
1815
+ durationMs: Math.max(0, now() - startedAt),
1816
+ });
1817
+ },
1818
+ };
1819
+ }
1820
+
1821
+ type ConnectedAgentCall = typeof import("../a2a/client.js").callAgent;
1822
+ type ResolveConnectedAgentCallerAuth =
1823
+ typeof import("../a2a/caller-auth.js").resolveA2ACallerAuth;
1824
+
1825
+ export async function callConnectedAgentReference(input: {
1826
+ agent: string;
1827
+ path: string;
1828
+ message: string;
1829
+ send: (event: AgentChatEvent) => void;
1830
+ callAgent: ConnectedAgentCall;
1831
+ resolveCallerAuth: ResolveConnectedAgentCallerAuth;
1832
+ agentCallId?: string;
1833
+ now?: () => number;
1834
+ }): Promise<string> {
1835
+ const relay = createConnectedAgentReferenceEventRelay({
1836
+ agent: input.agent,
1837
+ send: input.send,
1838
+ agentCallId: input.agentCallId,
1839
+ now: input.now,
1840
+ });
1841
+ relay.start();
1842
+ try {
1843
+ const callerAuth = await input.resolveCallerAuth({
1844
+ includeGoogleToken: true,
1845
+ });
1846
+ const response = await input.callAgent(input.path, input.message, {
1847
+ async: true,
1848
+ apiKey: callerAuth.apiKey,
1849
+ metadata: callerAuth.metadata,
1850
+ userEmail: callerAuth.userEmail,
1851
+ orgDomain: callerAuth.orgDomain,
1852
+ orgSecret: callerAuth.orgSecret,
1853
+ onUpdate: relay.observePollUpdate,
1854
+ });
1855
+ const responseText =
1856
+ userFacingLlmCredentialError(response, { agentName: input.agent }) ??
1857
+ response;
1858
+ relay.emitResponseText(responseText);
1859
+ relay.finish("done");
1860
+ return responseText;
1861
+ } catch (error) {
1862
+ relay.finish("error");
1863
+ throw error;
1864
+ }
1865
+ }
1866
+
1867
+ const MAX_CONNECTED_AGENT_PROGRESS_DETAIL_CHARS = 200;
1868
+ function extractConnectedAgentProgressDetail(task: Task): string | undefined {
1869
+ const parts = task.status?.message?.parts;
1870
+ if (!Array.isArray(parts)) return undefined;
1871
+ const text = parts
1872
+ .filter(
1873
+ (part): part is { type: "text"; text: string } => part.type === "text",
1874
+ )
1875
+ .map((part) => part.text)
1876
+ .join(" ")
1877
+ .replace(/\s+/g, " ")
1878
+ .trim();
1879
+ if (!text) return undefined;
1880
+ return text.length > MAX_CONNECTED_AGENT_PROGRESS_DETAIL_CHARS
1881
+ ? `${text.slice(0, MAX_CONNECTED_AGENT_PROGRESS_DETAIL_CHARS - 1)}…`
1882
+ : text;
1883
+ }
1884
+
1728
1885
  async function enrichMessage(
1729
1886
  message: string,
1730
1887
  references: AgentChatReference[],
@@ -6700,22 +6857,6 @@ export function createProductionAgentHandler(
6700
6857
  modelSelectionSource = "experiment";
6701
6858
  }
6702
6859
  }
6703
-
6704
- if (modelSelectionSource === "default") {
6705
- const { resolveHostedDefaultModelExperiment } =
6706
- await import("../observability/hosted-model-experiment.js");
6707
- const hostedExperiment = resolveHostedDefaultModelExperiment({
6708
- userId: ownerEmail,
6709
- engineName: engine.name,
6710
- isDefaultModelSelection: true,
6711
- supportedModels: engine.supportedModels,
6712
- });
6713
- if (hostedExperiment) {
6714
- effectiveModel = hostedExperiment.model;
6715
- experimentAssignments.push(hostedExperiment.assignment);
6716
- modelSelectionSource = "experiment";
6717
- }
6718
- }
6719
6860
  }
6720
6861
  } catch {
6721
6862
  // Experiments are best-effort. Model resolution must keep working if the
@@ -8015,97 +8156,23 @@ export function createProductionAgentHandler(
8015
8156
 
8016
8157
  // Resolve connected agent @-mentions via A2A calls.
8017
8158
  if (agentRefs.length > 0 && requestMode !== "plan") {
8018
- const [{ A2AClient, callAgent }, { resolveA2ACallerAuth }] =
8019
- await Promise.all([
8020
- import("../a2a/client.js"),
8021
- import("../a2a/caller-auth.js"),
8022
- ]);
8159
+ const [{ callAgent }, { resolveA2ACallerAuth }] = await Promise.all([
8160
+ import("../a2a/client.js"),
8161
+ import("../a2a/caller-auth.js"),
8162
+ ]);
8023
8163
  const results = await Promise.allSettled(
8024
8164
  agentRefs.map(async (ref) => {
8025
- send({
8026
- type: "agent_call",
8027
- agent: ref.name,
8028
- status: "start",
8029
- });
8030
8165
  try {
8031
- const callerAuth = await resolveA2ACallerAuth({
8032
- includeGoogleToken: true,
8033
- });
8034
- const a2aClient = new A2AClient(ref.path, callerAuth.apiKey, {
8035
- ...(callerAuth.apiKeyFallbacks
8036
- ? { fallbackApiKeys: callerAuth.apiKeyFallbacks }
8037
- : {}),
8038
- });
8039
- const a2aMetadata = callerAuth.metadata;
8040
-
8041
- let responseText = "";
8042
- let lastSentLength = 0;
8043
-
8044
- try {
8045
- for await (const task of a2aClient.stream(
8046
- {
8047
- role: "user",
8048
- parts: [
8049
- {
8050
- type: "text",
8051
- text: enrichedMessage + screenContext,
8052
- },
8053
- ],
8054
- },
8055
- Object.keys(a2aMetadata).length > 0
8056
- ? { metadata: a2aMetadata }
8057
- : undefined,
8058
- )) {
8059
- const newText =
8060
- task.status?.message?.parts
8061
- ?.filter(
8062
- (p): p is { type: "text"; text: string } =>
8063
- p.type === "text",
8064
- )
8065
- ?.map((p) => p.text)
8066
- ?.join("") ?? "";
8067
-
8068
- if (newText.length > lastSentLength) {
8069
- send({
8070
- type: "agent_call_text",
8071
- agent: ref.name,
8072
- text: newText.slice(lastSentLength),
8073
- });
8074
- lastSentLength = newText.length;
8075
- }
8076
- responseText = newText;
8077
- }
8078
- } catch {
8079
- if (!responseText) {
8080
- responseText = await callAgent(
8081
- ref.path,
8082
- enrichedMessage + screenContext,
8083
- {
8084
- apiKey: callerAuth.apiKey,
8085
- userEmail: callerAuth.userEmail,
8086
- orgDomain: callerAuth.orgDomain,
8087
- orgSecret: callerAuth.orgSecret,
8088
- },
8089
- );
8090
- }
8091
- }
8092
- responseText =
8093
- userFacingLlmCredentialError(responseText, {
8094
- agentName: ref.name,
8095
- }) ?? responseText;
8096
-
8097
- send({
8098
- type: "agent_call",
8166
+ const responseText = await callConnectedAgentReference({
8099
8167
  agent: ref.name,
8100
- status: "done",
8168
+ path: ref.path,
8169
+ message: enrichedMessage + screenContext,
8170
+ send,
8171
+ callAgent,
8172
+ resolveCallerAuth: resolveA2ACallerAuth,
8101
8173
  });
8102
8174
  return `<agent-response name="${ref.name}" id="${ref.refId}">\n${responseText}\n</agent-response>`;
8103
8175
  } catch (err: any) {
8104
- send({
8105
- type: "agent_call",
8106
- agent: ref.name,
8107
- status: "error",
8108
- });
8109
8176
  const message =
8110
8177
  userFacingLlmCredentialError(err, {
8111
8178
  agentName: ref.name,
@@ -1,3 +1,4 @@
1
+ import type { A2AAgentActivitySnapshot } from "../a2a/activity.js";
1
2
  import type { ActionChatUIConfig } from "../action-ui.js";
2
3
  import type { AgentMcpAppPayload } from "../mcp-client/app-result.js";
3
4
  import type { ReasoningEffort } from "../shared/reasoning-effort.js";
@@ -273,6 +274,8 @@ export type AgentChatEvent =
273
274
  type: "agent_call";
274
275
  agent: string;
275
276
  status: "start" | "done" | "error";
277
+ agentCallId?: string;
278
+ durationMs?: number;
276
279
  }
277
280
  | {
278
281
  /**
@@ -296,8 +299,20 @@ export type AgentChatEvent =
296
299
  elapsedSeconds: number;
297
300
  /** Optional short text surfaced from the remote poll, when present. */
298
301
  detail?: string;
302
+ agentCallId?: string;
303
+ }
304
+ | {
305
+ type: "agent_call_text";
306
+ agent: string;
307
+ text: string;
308
+ agentCallId?: string;
309
+ }
310
+ | {
311
+ type: "agent_call_activity";
312
+ agent: string;
313
+ snapshot: A2AAgentActivitySnapshot;
314
+ agentCallId?: string;
299
315
  }
300
- | { type: "agent_call_text"; agent: string; text: string }
301
316
  | {
302
317
  type: "agent_task";
303
318
  taskId: string;
@@ -203,12 +203,12 @@ function parseScaffoldArgs(argv: string[]): {
203
203
  // Track CLI usage (best-effort, non-blocking)
204
204
  function trackCli(event: string, props?: Record<string, unknown>): void {
205
205
  try {
206
- import("../tracking/registry.js").then((m) => {
207
- m.track(event, { command, ...props });
208
- });
209
- import("../tracking/providers.js").then((m) =>
210
- m.registerBuiltinProviders(),
211
- );
206
+ void import("../tracking/registry.js")
207
+ .then((m) => m.track(event, { command, ...props }))
208
+ .catch(() => undefined);
209
+ void import("../tracking/providers.js")
210
+ .then((m) => m.registerBuiltinProviders())
211
+ .catch(() => undefined);
212
212
  } catch {}
213
213
  }
214
214
 
@@ -219,7 +219,9 @@ process.on("uncaughtException", (err) => {
219
219
  console.error(` Send feedback: ${FEEDBACK_URL}\n`);
220
220
  trackCli("cli.crash", { error: err.message });
221
221
  Sentry.captureException(err);
222
- Sentry.flush(2000).finally(() => process.exit(1));
222
+ void Sentry.flush(2000)
223
+ .catch(() => undefined)
224
+ .finally(() => process.exit(1));
223
225
  });
224
226
 
225
227
  process.on("unhandledRejection", (reason: any) => {
@@ -228,7 +230,9 @@ process.on("unhandledRejection", (reason: any) => {
228
230
  console.error(` Send feedback: ${FEEDBACK_URL}\n`);
229
231
  trackCli("cli.crash", { error: reason?.message ?? String(reason) });
230
232
  Sentry.captureException(reason);
231
- Sentry.flush(2000).finally(() => process.exit(1));
233
+ void Sentry.flush(2000)
234
+ .catch(() => undefined)
235
+ .finally(() => process.exit(1));
232
236
  });
233
237
 
234
238
  // Surface a self-heal hint when an interrupted `npx @agent-native/core@latest ...`
@@ -961,14 +965,18 @@ switch (command) {
961
965
  }
962
966
 
963
967
  case "setup-agents": {
964
- import("./setup-agents.js").then((m) => m.runSetupAgents());
968
+ import("./setup-agents.js")
969
+ .then((m) => m.runSetupAgents())
970
+ .catch(handleScaffoldImportError);
965
971
  break;
966
972
  }
967
973
 
968
974
  case "info": {
969
975
  // Print read-only info about an installable package (e.g. @agent-native/scheduling).
970
976
  // Lists subpath exports, source paths in node_modules, and docs pointers.
971
- import("./info.js").then((m) => m.runInfo(args[0]));
977
+ import("./info.js")
978
+ .then((m) => m.runInfo(args[0]))
979
+ .catch(handleScaffoldImportError);
972
980
  break;
973
981
  }
974
982
 
@@ -438,8 +438,8 @@ export function transitionStoredMultiFrontierRun(
438
438
  const isFullStoredRun = hasStoredRunTimestamps(candidate);
439
439
  if (
440
440
  !isFullStoredRun &&
441
- (Object.hasOwn(candidate, "createdAt") ||
442
- Object.hasOwn(candidate, "updatedAt"))
441
+ (Object.prototype.hasOwnProperty.call(candidate, "createdAt") ||
442
+ Object.prototype.hasOwnProperty.call(candidate, "updatedAt"))
443
443
  ) {
444
444
  throw new Error("Invalid multi-frontier coordinator transition state.");
445
445
  }
@@ -1056,7 +1056,9 @@ function isCompleteMultiFrontierRunState(
1056
1056
 
1057
1057
  function normalizeStoredRunDefaults(value: unknown): unknown {
1058
1058
  if (!value || typeof value !== "object" || Array.isArray(value)) return value;
1059
- if (!Object.hasOwn(value, "autoContinueAfterAgreement")) {
1059
+ if (
1060
+ !Object.prototype.hasOwnProperty.call(value, "autoContinueAfterAgreement")
1061
+ ) {
1060
1062
  return { ...value, autoContinueAfterAgreement: false };
1061
1063
  }
1062
1064
  return value;
@@ -228,18 +228,6 @@ export const TEMPLATES: TemplateMeta[] = [
228
228
  hidden: true,
229
229
  core: false,
230
230
  },
231
- {
232
- name: "crm",
233
- label: "CRM",
234
- hint: "Agent-native CRM companion with scoped HubSpot intelligence, workflows, and write proposals",
235
- icon: "Users",
236
- color: "#2563EB",
237
- colorRgb: "37 99 235",
238
- devPort: 8107,
239
- hidden: true,
240
- defaultMode: "dev",
241
- core: false,
242
- },
243
231
  {
244
232
  name: "macros",
245
233
  label: "Macros",
@@ -465,7 +465,7 @@ function probeHttpReady(
465
465
  },
466
466
  (res) => {
467
467
  res.resume();
468
- finish(true);
468
+ finish((res.statusCode ?? 500) < 500);
469
469
  },
470
470
  );
471
471
  req.setTimeout(timeoutMs, () => finish(false));
@@ -2673,7 +2673,7 @@ export function AgentChatSurface({
2673
2673
  const defaultShowPageNewChatButton =
2674
2674
  shouldDefaultAgentChatSurfacePageNewChatButton(mode, showTabBar);
2675
2675
 
2676
- return (
2676
+ const panel = (
2677
2677
  <AgentPanel
2678
2678
  {...props}
2679
2679
  defaultMode={defaultMode}
@@ -2697,6 +2697,14 @@ export function AgentChatSurface({
2697
2697
  }
2698
2698
  />
2699
2699
  );
2700
+
2701
+ if (!pageMode) return panel;
2702
+ return (
2703
+ <>
2704
+ <URLSync browserTabId={props.browserTabId} />
2705
+ {panel}
2706
+ </>
2707
+ );
2700
2708
  }
2701
2709
 
2702
2710
  // ─── AgentSidebar — wraps content with a toggleable agent panel ─────────────