@agent-native/core 0.121.2 → 0.122.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 (460) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +139 -0
  3. package/corpus/core/docs/content/actions.mdx +2 -2
  4. package/corpus/core/docs/content/agent-surfaces.mdx +1 -1
  5. package/corpus/core/docs/content/authentication.mdx +2 -0
  6. package/corpus/core/docs/content/deployment.mdx +36 -0
  7. package/corpus/core/docs/content/http-api.mdx +266 -0
  8. package/corpus/core/docs/content/syncing-template-changes.mdx +159 -0
  9. package/corpus/core/package.json +2 -1
  10. package/corpus/core/src/a2a/activity.ts +38 -27
  11. package/corpus/core/src/agent/engine/builder-engine.ts +35 -4
  12. package/corpus/core/src/agent/run-manager.ts +20 -1
  13. package/corpus/core/src/agent/run-store.ts +4 -1
  14. package/corpus/core/src/agent/types.ts +28 -8
  15. package/corpus/core/src/chat-threads/store.ts +45 -0
  16. package/corpus/core/src/checkpoints/index.ts +2 -0
  17. package/corpus/core/src/checkpoints/route-match.ts +13 -0
  18. package/corpus/core/src/cli/create.ts +105 -17
  19. package/corpus/core/src/cli/index.ts +20 -0
  20. package/corpus/core/src/cli/template-baseline.ts +410 -0
  21. package/corpus/core/src/cli/template-sync.ts +1004 -0
  22. package/corpus/core/src/cli/templates-meta.ts +1 -0
  23. package/corpus/core/src/client/AssistantChat.tsx +38 -12
  24. package/corpus/core/src/client/NewWorkspaceAppFlow.tsx +75 -10
  25. package/corpus/core/src/client/chat/message-components.tsx +127 -66
  26. package/corpus/core/src/client/chat/tool-call-display.tsx +29 -5
  27. package/corpus/core/src/client/error-format.ts +18 -0
  28. package/corpus/core/src/client/org/OrgSwitcher.tsx +30 -8
  29. package/corpus/core/src/client/org/TeamPage.tsx +7 -6
  30. package/corpus/core/src/client/sse-event-processor.ts +3 -0
  31. package/corpus/core/src/data-widgets/index.ts +41 -0
  32. package/corpus/core/src/deploy/build.ts +11 -9
  33. package/corpus/core/src/integrations/webhook-handler.ts +63 -9
  34. package/corpus/core/src/org/auto-join-domain.ts +4 -3
  35. package/corpus/core/src/org/context.ts +108 -39
  36. package/corpus/core/src/org/index.ts +5 -0
  37. package/corpus/core/src/org/service-identity.ts +60 -0
  38. package/corpus/core/src/provider-api/index.ts +22 -1
  39. package/corpus/core/src/scripts/docs/search.ts +12 -1
  40. package/corpus/core/src/server/agent-chat/context-tools.ts +9 -4
  41. package/corpus/core/src/server/agent-chat/framework-prompts.ts +38 -66
  42. package/corpus/core/src/server/agent-chat-plugin.ts +17 -10
  43. package/corpus/core/src/server/agents-bundle.ts +84 -5
  44. package/corpus/core/src/server/auth.ts +4 -3
  45. package/corpus/core/src/server/builder-browser.ts +47 -19
  46. package/corpus/core/src/server/core-routes-plugin.ts +2 -2
  47. package/corpus/core/src/server/credential-provider.ts +209 -68
  48. package/corpus/core/src/server/index.ts +3 -0
  49. package/corpus/core/src/server/prompts/framework-core-compact.ts +6 -13
  50. package/corpus/core/src/server/prompts/framework-core.ts +9 -21
  51. package/corpus/core/src/server/prompts/index.ts +0 -1
  52. package/corpus/core/src/server/prompts/shared-rules.ts +19 -11
  53. package/corpus/core/src/server/ssr-handler.ts +13 -2
  54. package/corpus/core/src/settings/user-settings.ts +13 -1
  55. package/corpus/core/src/shared/cache-control.ts +141 -0
  56. package/corpus/core/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  57. package/corpus/core/src/templates/chat/_gitignore +1 -0
  58. package/corpus/core/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  59. package/corpus/core/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  60. package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +19 -0
  61. package/corpus/core/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  62. package/corpus/core/src/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +1 -0
  63. package/corpus/core/src/vite/agents-bundle-plugin.ts +7 -6
  64. package/corpus/core/src/vite/client.ts +5 -0
  65. package/corpus/templates/analytics/.agents/skills/adhoc-analysis/SKILL.md +4 -5
  66. package/corpus/templates/analytics/.agents/skills/admin-surfaces/SKILL.md +55 -0
  67. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +10 -0
  68. package/corpus/templates/analytics/.agents/skills/dashboard-management/references/template-catalog-and-demo.md +62 -0
  69. package/corpus/templates/analytics/.agents/skills/dashboard-ops/SKILL.md +85 -0
  70. package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +27 -2
  71. package/corpus/templates/analytics/.agents/skills/data-querying/references/inline-chart-embeds.md +139 -0
  72. package/corpus/templates/analytics/.agents/skills/monitoring/SKILL.md +77 -0
  73. package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  74. package/corpus/templates/analytics/AGENTS.md +91 -563
  75. package/corpus/templates/analytics/_gitignore +1 -0
  76. package/corpus/templates/analytics/actions/bigquery.ts +12 -4
  77. package/corpus/templates/analytics/actions/generate-chart.ts +5 -5
  78. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +30 -1
  79. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +3 -0
  80. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +1 -1
  81. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +1 -0
  82. package/corpus/templates/analytics/changelog/2026-07-24-analytics-finds-saved-dashboards-and-queries-far-more-reliab.md +6 -0
  83. package/corpus/templates/analytics/changelog/2026-07-24-notion-access-errors-now-explain-that-a-page-needs-sharing-w.md +6 -0
  84. package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +7 -0
  85. package/corpus/templates/analytics/server/lib/analytics-query-catalog.ts +191 -30
  86. package/corpus/templates/analytics/server/lib/bigquery.ts +11 -1
  87. package/corpus/templates/analytics/server/lib/notion.ts +15 -4
  88. package/corpus/templates/analytics/server/plugins/agent-chat.ts +10 -0
  89. package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  90. package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  91. package/corpus/templates/brain/_gitignore +1 -0
  92. package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  93. package/corpus/templates/calendar/_gitignore +1 -0
  94. package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  95. package/corpus/templates/chat/_gitignore +1 -0
  96. package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  97. package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +34 -0
  98. package/corpus/templates/clips/AGENTS.md +5 -4
  99. package/corpus/templates/clips/_gitignore +1 -0
  100. package/corpus/templates/clips/actions/cleanup-transcript.ts +5 -0
  101. package/corpus/templates/clips/actions/get-recording-insights.ts +44 -8
  102. package/corpus/templates/clips/actions/get-recording-player-data.ts +39 -70
  103. package/corpus/templates/clips/actions/list-clip-views.ts +2 -4
  104. package/corpus/templates/clips/actions/list-recordings.ts +69 -19
  105. package/corpus/templates/clips/actions/list-viewers.ts +5 -2
  106. package/corpus/templates/clips/actions/regenerate-summary.ts +5 -1
  107. package/corpus/templates/clips/actions/request-transcript.ts +28 -1
  108. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +21 -1
  109. package/corpus/templates/clips/app/components/meetings/quick-ask-sidebar.tsx +14 -1
  110. package/corpus/templates/clips/app/components/player/insights-panel.tsx +8 -20
  111. package/corpus/templates/clips/app/components/player/recording-views-badge.tsx +335 -0
  112. package/corpus/templates/clips/app/components/player/video-player.tsx +13 -8
  113. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +2 -1
  114. package/corpus/templates/clips/app/i18n/en-US.ts +13 -2
  115. package/corpus/templates/clips/app/lib/capture-permissions.ts +110 -0
  116. package/corpus/templates/clips/app/lib/recording-link.ts +32 -0
  117. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +27 -0
  118. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +46 -15
  119. package/corpus/templates/clips/app/routes/record.tsx +77 -31
  120. package/corpus/templates/clips/app/routes/share.$shareId.tsx +42 -31
  121. package/corpus/templates/clips/changelog/2026-07-24-clip-pages-now-show-a-view-count-with-viewer-avatars-next-to.md +6 -0
  122. package/corpus/templates/clips/changelog/2026-07-24-clip-summaries-read-like-a-description-you-d-write-yourself-.md +6 -0
  123. package/corpus/templates/clips/changelog/2026-07-24-clip-view-counts-now-separate-human-views-from-agent-views-s.md +6 -0
  124. package/corpus/templates/clips/changelog/2026-07-24-clips-actions-can-now-be-called-by-org-service-tokens-so-ext.md +6 -0
  125. package/corpus/templates/clips/changelog/2026-07-24-clips-no-longer-briefly-shows-a-dock-icon-while-launching.md +6 -0
  126. package/corpus/templates/clips/changelog/2026-07-24-fixed-owner-and-editor-share-links-redirecting-to-the-record.md +6 -0
  127. package/corpus/templates/clips/changelog/2026-07-24-meeting-and-note-recordings-now-start-as-a-compact-pill-on-t.md +6 -0
  128. package/corpus/templates/clips/changelog/2026-07-24-new-clips-now-copy-a-shareable-link-instead-of-the-owner-onl.md +6 -0
  129. package/corpus/templates/clips/changelog/2026-07-24-opening-a-share-link-as-the-clip-s-owner-now-goes-straight-t.md +6 -0
  130. package/corpus/templates/clips/changelog/2026-07-24-permissions-and-rewind-controls-now-use-compact-consistent-h.md +6 -0
  131. package/corpus/templates/clips/changelog/2026-07-24-quitting-the-desktop-app-no-longer-shows-a-false-macos-crash.md +6 -0
  132. package/corpus/templates/clips/changelog/2026-07-24-screen-recording-permission-errors-now-name-the-exact-app-to.md +6 -0
  133. package/corpus/templates/clips/changelog/2026-07-24-the-desktop-app-now-copies-a-new-clip-s-share-link-to-your-c.md +6 -0
  134. package/corpus/templates/clips/changelog/2026-07-24-the-recording-toolbar-now-stays-above-other-apps-including-o.md +6 -0
  135. package/corpus/templates/clips/changelog/2026-07-24-transcript-captions-now-use-real-speech-timings-instead-of-a.md +6 -0
  136. package/corpus/templates/clips/changelog/2026-07-24-video-playback-no-longer-stutters-and-replays-the-last-momen.md +6 -0
  137. package/corpus/templates/clips/chrome-extension/src/background.ts +17 -1
  138. package/corpus/templates/clips/desktop/package.json +2 -0
  139. package/corpus/templates/clips/desktop/src/app.tsx +89 -0
  140. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +9 -3
  141. package/corpus/templates/clips/desktop/src/lib/audio-meter.ts +51 -0
  142. package/corpus/templates/clips/desktop/src/lib/native-notification.ts +44 -0
  143. package/corpus/templates/clips/desktop/src/lib/recording-link.ts +67 -0
  144. package/corpus/templates/clips/desktop/src/overlays/live-audio-bars.tsx +35 -35
  145. package/corpus/templates/clips/desktop/src/overlays/live-transcript.tsx +3 -2
  146. package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +47 -46
  147. package/corpus/templates/clips/desktop/src/styles.css +127 -78
  148. package/corpus/templates/clips/desktop/src-tauri/Cargo.toml +7 -0
  149. package/corpus/templates/clips/desktop/src-tauri/Info.plist +6 -0
  150. package/corpus/templates/clips/desktop/src-tauri/capabilities/default.json +1 -0
  151. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +7 -3
  152. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +4 -1
  153. package/corpus/templates/clips/desktop/src-tauri/src/main.rs +8 -0
  154. package/corpus/templates/clips/desktop/src-tauri/src/recording_indicator.rs +21 -10
  155. package/corpus/templates/clips/desktop/src-tauri/src/util.rs +40 -0
  156. package/corpus/templates/clips/server/db/schema.ts +25 -0
  157. package/corpus/templates/clips/server/lib/agent-views.ts +145 -0
  158. package/corpus/templates/clips/server/lib/public-agent-context.ts +7 -0
  159. package/corpus/templates/clips/server/lib/recording-share-grant.ts +79 -0
  160. package/corpus/templates/clips/server/lib/recordings.ts +51 -3
  161. package/corpus/templates/clips/server/plugins/db.ts +23 -0
  162. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +49 -17
  163. package/corpus/templates/clips/shared/recording-link.ts +43 -0
  164. package/corpus/templates/clips/shared/share-attribution.ts +4 -0
  165. package/corpus/templates/clips/shared/share-dashboard-redirect.ts +42 -0
  166. package/corpus/templates/clips/shared/view-analytics.ts +26 -0
  167. package/corpus/templates/content/.agents/skills/content/SKILL.md +5 -0
  168. package/corpus/templates/content/.agents/skills/content/references/local-file-mode.md +135 -0
  169. package/corpus/templates/content/.agents/skills/document-editing/SKILL.md +12 -0
  170. package/corpus/templates/content/.agents/skills/document-editing/references/databases.md +238 -0
  171. package/corpus/templates/content/.agents/skills/document-editing/references/document-behavior.md +91 -0
  172. package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  173. package/corpus/templates/content/AGENTS.md +62 -583
  174. package/corpus/templates/content/_gitignore +1 -0
  175. package/corpus/templates/design/.agents/skills/creative-context/SKILL.md +11 -0
  176. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +50 -8
  177. package/corpus/templates/design/.agents/skills/design-generation/references/code-layers.md +81 -0
  178. package/corpus/templates/design/.agents/skills/design-generation/references/code-workspace.md +42 -0
  179. package/corpus/templates/design/.agents/skills/design-generation/references/editor-extensions.md +34 -0
  180. package/corpus/templates/design/.agents/skills/responsive-breakpoints/SKILL.md +4 -1
  181. package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  182. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +17 -0
  183. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +8196 -0
  184. package/corpus/templates/design/.generated/bridge/embedded-wheel.generated.ts +265 -0
  185. package/corpus/templates/design/.generated/bridge/hit-test.generated.ts +642 -0
  186. package/corpus/templates/design/.generated/bridge/motion-preview.generated.ts +571 -0
  187. package/corpus/templates/design/.generated/bridge/nav.generated.ts +91 -0
  188. package/corpus/templates/design/.generated/bridge/sample.generated.ts +23 -0
  189. package/corpus/templates/design/.generated/bridge/shader-fill-preview.generated.ts +263 -0
  190. package/corpus/templates/design/.generated/bridge/shader-runtime.generated.ts +518 -0
  191. package/corpus/templates/design/.generated/bridge/tweak.generated.ts +20 -0
  192. package/corpus/templates/design/.generated/bridge/zoom.generated.ts +32 -0
  193. package/corpus/templates/design/AGENTS.md +88 -503
  194. package/corpus/templates/design/_gitignore +1 -0
  195. package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  196. package/corpus/templates/dispatch/_gitignore +1 -0
  197. package/corpus/templates/dispatch/changelog/2026-07-24-signing-in-now-puts-you-in-your-companys-workspace.md +6 -0
  198. package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  199. package/corpus/templates/forms/_gitignore +1 -0
  200. package/corpus/templates/forms/server/lib/public-form-ssr.ts +2 -2
  201. package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  202. package/corpus/templates/macros/_gitignore +1 -0
  203. package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  204. package/corpus/templates/mail/_gitignore +1 -0
  205. package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  206. package/corpus/templates/plan/_gitignore +1 -0
  207. package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  208. package/corpus/templates/slides/_gitignore +1 -0
  209. package/corpus/templates/slides/server/plugins/db.ts +4 -0
  210. package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  211. package/corpus/templates/tasks/AGENTS.md +1 -1
  212. package/corpus/templates/tasks/_gitignore +1 -0
  213. package/dist/a2a/activity.d.ts +4 -1
  214. package/dist/a2a/activity.d.ts.map +1 -1
  215. package/dist/a2a/activity.js +27 -16
  216. package/dist/a2a/activity.js.map +1 -1
  217. package/dist/agent/engine/builder-engine.d.ts +1 -0
  218. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  219. package/dist/agent/engine/builder-engine.js +31 -4
  220. package/dist/agent/engine/builder-engine.js.map +1 -1
  221. package/dist/agent/run-manager.d.ts.map +1 -1
  222. package/dist/agent/run-manager.js +18 -1
  223. package/dist/agent/run-manager.js.map +1 -1
  224. package/dist/agent/run-store.d.ts +1 -0
  225. package/dist/agent/run-store.d.ts.map +1 -1
  226. package/dist/agent/run-store.js +2 -1
  227. package/dist/agent/run-store.js.map +1 -1
  228. package/dist/agent/types.d.ts +12 -1
  229. package/dist/agent/types.d.ts.map +1 -1
  230. package/dist/agent/types.js +21 -1
  231. package/dist/agent/types.js.map +1 -1
  232. package/dist/chat-threads/store.d.ts +10 -0
  233. package/dist/chat-threads/store.d.ts.map +1 -1
  234. package/dist/chat-threads/store.js +41 -0
  235. package/dist/chat-threads/store.js.map +1 -1
  236. package/dist/checkpoints/index.d.ts +1 -0
  237. package/dist/checkpoints/index.d.ts.map +1 -1
  238. package/dist/checkpoints/index.js +1 -0
  239. package/dist/checkpoints/index.js.map +1 -1
  240. package/dist/checkpoints/route-match.d.ts +8 -0
  241. package/dist/checkpoints/route-match.d.ts.map +1 -0
  242. package/dist/checkpoints/route-match.js +13 -0
  243. package/dist/checkpoints/route-match.js.map +1 -0
  244. package/dist/cli/create.d.ts +35 -4
  245. package/dist/cli/create.d.ts.map +1 -1
  246. package/dist/cli/create.js +69 -19
  247. package/dist/cli/create.js.map +1 -1
  248. package/dist/cli/index.js +19 -0
  249. package/dist/cli/index.js.map +1 -1
  250. package/dist/cli/template-baseline.d.ts +54 -0
  251. package/dist/cli/template-baseline.d.ts.map +1 -0
  252. package/dist/cli/template-baseline.js +334 -0
  253. package/dist/cli/template-baseline.js.map +1 -0
  254. package/dist/cli/template-sync.d.ts +57 -0
  255. package/dist/cli/template-sync.d.ts.map +1 -0
  256. package/dist/cli/template-sync.js +787 -0
  257. package/dist/cli/template-sync.js.map +1 -0
  258. package/dist/cli/templates-meta.d.ts.map +1 -1
  259. package/dist/cli/templates-meta.js +1 -0
  260. package/dist/cli/templates-meta.js.map +1 -1
  261. package/dist/client/AssistantChat.d.ts +2 -1
  262. package/dist/client/AssistantChat.d.ts.map +1 -1
  263. package/dist/client/AssistantChat.js +38 -10
  264. package/dist/client/AssistantChat.js.map +1 -1
  265. package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
  266. package/dist/client/NewWorkspaceAppFlow.js +32 -2
  267. package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
  268. package/dist/client/chat/message-components.d.ts +20 -0
  269. package/dist/client/chat/message-components.d.ts.map +1 -1
  270. package/dist/client/chat/message-components.js +81 -46
  271. package/dist/client/chat/message-components.js.map +1 -1
  272. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  273. package/dist/client/chat/tool-call-display.js +14 -6
  274. package/dist/client/chat/tool-call-display.js.map +1 -1
  275. package/dist/client/error-format.d.ts.map +1 -1
  276. package/dist/client/error-format.js +13 -0
  277. package/dist/client/error-format.js.map +1 -1
  278. package/dist/client/org/OrgSwitcher.d.ts +8 -1
  279. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  280. package/dist/client/org/OrgSwitcher.js +3 -2
  281. package/dist/client/org/OrgSwitcher.js.map +1 -1
  282. package/dist/client/org/TeamPage.d.ts.map +1 -1
  283. package/dist/client/org/TeamPage.js +1 -1
  284. package/dist/client/org/TeamPage.js.map +1 -1
  285. package/dist/client/sse-event-processor.d.ts.map +1 -1
  286. package/dist/client/sse-event-processor.js +3 -0
  287. package/dist/client/sse-event-processor.js.map +1 -1
  288. package/dist/collab/awareness.d.ts +2 -2
  289. package/dist/collab/awareness.d.ts.map +1 -1
  290. package/dist/data-widgets/index.d.ts +3 -0
  291. package/dist/data-widgets/index.d.ts.map +1 -1
  292. package/dist/data-widgets/index.js +33 -0
  293. package/dist/data-widgets/index.js.map +1 -1
  294. package/dist/deploy/build.d.ts.map +1 -1
  295. package/dist/deploy/build.js +11 -7
  296. package/dist/deploy/build.js.map +1 -1
  297. package/dist/eject/provider-api-definitions.d.ts +1 -0
  298. package/dist/eject/provider-api-definitions.d.ts.map +1 -1
  299. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  300. package/dist/integrations/webhook-handler.js +46 -9
  301. package/dist/integrations/webhook-handler.js.map +1 -1
  302. package/dist/org/auto-join-domain.d.ts +3 -2
  303. package/dist/org/auto-join-domain.d.ts.map +1 -1
  304. package/dist/org/auto-join-domain.js +1 -1
  305. package/dist/org/auto-join-domain.js.map +1 -1
  306. package/dist/org/context.d.ts.map +1 -1
  307. package/dist/org/context.js +84 -28
  308. package/dist/org/context.js.map +1 -1
  309. package/dist/org/index.d.ts +1 -0
  310. package/dist/org/index.d.ts.map +1 -1
  311. package/dist/org/index.js +1 -0
  312. package/dist/org/index.js.map +1 -1
  313. package/dist/org/service-identity.d.ts +43 -0
  314. package/dist/org/service-identity.d.ts.map +1 -0
  315. package/dist/org/service-identity.js +34 -0
  316. package/dist/org/service-identity.js.map +1 -0
  317. package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
  318. package/dist/provider-api/actions/provider-api.d.ts +13 -11
  319. package/dist/provider-api/actions/provider-api.d.ts.map +1 -1
  320. package/dist/provider-api/index.d.ts +4 -0
  321. package/dist/provider-api/index.d.ts.map +1 -1
  322. package/dist/provider-api/index.js +17 -1
  323. package/dist/provider-api/index.js.map +1 -1
  324. package/dist/resources/handlers.d.ts +1 -1
  325. package/dist/scripts/docs/search.d.ts.map +1 -1
  326. package/dist/scripts/docs/search.js +12 -1
  327. package/dist/scripts/docs/search.js.map +1 -1
  328. package/dist/server/agent-chat/context-tools.d.ts.map +1 -1
  329. package/dist/server/agent-chat/context-tools.js +3 -3
  330. package/dist/server/agent-chat/context-tools.js.map +1 -1
  331. package/dist/server/agent-chat/framework-prompts.d.ts +8 -3
  332. package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -1
  333. package/dist/server/agent-chat/framework-prompts.js +33 -62
  334. package/dist/server/agent-chat/framework-prompts.js.map +1 -1
  335. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  336. package/dist/server/agent-chat-plugin.js +16 -10
  337. package/dist/server/agent-chat-plugin.js.map +1 -1
  338. package/dist/server/agents-bundle.d.ts +18 -0
  339. package/dist/server/agents-bundle.d.ts.map +1 -1
  340. package/dist/server/agents-bundle.js +70 -4
  341. package/dist/server/agents-bundle.js.map +1 -1
  342. package/dist/server/auth.d.ts.map +1 -1
  343. package/dist/server/auth.js +4 -3
  344. package/dist/server/auth.js.map +1 -1
  345. package/dist/server/builder-browser.d.ts.map +1 -1
  346. package/dist/server/builder-browser.js +43 -19
  347. package/dist/server/builder-browser.js.map +1 -1
  348. package/dist/server/core-routes-plugin.js +2 -2
  349. package/dist/server/core-routes-plugin.js.map +1 -1
  350. package/dist/server/credential-provider.d.ts +38 -2
  351. package/dist/server/credential-provider.d.ts.map +1 -1
  352. package/dist/server/credential-provider.js +142 -64
  353. package/dist/server/credential-provider.js.map +1 -1
  354. package/dist/server/index.d.ts +1 -1
  355. package/dist/server/index.d.ts.map +1 -1
  356. package/dist/server/index.js +1 -1
  357. package/dist/server/index.js.map +1 -1
  358. package/dist/server/prompts/framework-core-compact.d.ts +1 -1
  359. package/dist/server/prompts/framework-core-compact.d.ts.map +1 -1
  360. package/dist/server/prompts/framework-core-compact.js +7 -13
  361. package/dist/server/prompts/framework-core-compact.js.map +1 -1
  362. package/dist/server/prompts/framework-core.d.ts +1 -1
  363. package/dist/server/prompts/framework-core.d.ts.map +1 -1
  364. package/dist/server/prompts/framework-core.js +10 -21
  365. package/dist/server/prompts/framework-core.js.map +1 -1
  366. package/dist/server/prompts/index.d.ts +1 -1
  367. package/dist/server/prompts/index.d.ts.map +1 -1
  368. package/dist/server/prompts/index.js +1 -1
  369. package/dist/server/prompts/index.js.map +1 -1
  370. package/dist/server/prompts/shared-rules.d.ts +16 -10
  371. package/dist/server/prompts/shared-rules.d.ts.map +1 -1
  372. package/dist/server/prompts/shared-rules.js +19 -10
  373. package/dist/server/prompts/shared-rules.js.map +1 -1
  374. package/dist/server/ssr-handler.d.ts +1 -1
  375. package/dist/server/ssr-handler.d.ts.map +1 -1
  376. package/dist/server/ssr-handler.js +10 -3
  377. package/dist/server/ssr-handler.js.map +1 -1
  378. package/dist/settings/user-settings.d.ts.map +1 -1
  379. package/dist/settings/user-settings.js +13 -1
  380. package/dist/settings/user-settings.js.map +1 -1
  381. package/dist/shared/cache-control.d.ts +52 -0
  382. package/dist/shared/cache-control.d.ts.map +1 -1
  383. package/dist/shared/cache-control.js +107 -0
  384. package/dist/shared/cache-control.js.map +1 -1
  385. package/dist/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  386. package/dist/templates/chat/_gitignore +1 -0
  387. package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  388. package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  389. package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +19 -0
  390. package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  391. package/dist/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +1 -0
  392. package/dist/vite/agents-bundle-plugin.d.ts.map +1 -1
  393. package/dist/vite/agents-bundle-plugin.js +8 -7
  394. package/dist/vite/agents-bundle-plugin.js.map +1 -1
  395. package/dist/vite/client.d.ts.map +1 -1
  396. package/dist/vite/client.js +2 -0
  397. package/dist/vite/client.js.map +1 -1
  398. package/docs/content/actions.mdx +2 -2
  399. package/docs/content/agent-surfaces.mdx +1 -1
  400. package/docs/content/authentication.mdx +2 -0
  401. package/docs/content/deployment.mdx +36 -0
  402. package/docs/content/http-api.mdx +266 -0
  403. package/docs/content/syncing-template-changes.mdx +159 -0
  404. package/package.json +4 -3
  405. package/src/a2a/activity.ts +38 -27
  406. package/src/agent/engine/builder-engine.ts +35 -4
  407. package/src/agent/run-manager.ts +20 -1
  408. package/src/agent/run-store.ts +4 -1
  409. package/src/agent/types.ts +28 -8
  410. package/src/chat-threads/store.ts +45 -0
  411. package/src/checkpoints/index.ts +2 -0
  412. package/src/checkpoints/route-match.ts +13 -0
  413. package/src/cli/create.ts +105 -17
  414. package/src/cli/index.ts +20 -0
  415. package/src/cli/template-baseline.ts +410 -0
  416. package/src/cli/template-sync.ts +1004 -0
  417. package/src/cli/templates-meta.ts +1 -0
  418. package/src/client/AssistantChat.tsx +38 -12
  419. package/src/client/NewWorkspaceAppFlow.tsx +75 -10
  420. package/src/client/chat/message-components.tsx +127 -66
  421. package/src/client/chat/tool-call-display.tsx +29 -5
  422. package/src/client/error-format.ts +18 -0
  423. package/src/client/org/OrgSwitcher.tsx +30 -8
  424. package/src/client/org/TeamPage.tsx +7 -6
  425. package/src/client/sse-event-processor.ts +3 -0
  426. package/src/data-widgets/index.ts +41 -0
  427. package/src/deploy/build.ts +11 -9
  428. package/src/integrations/webhook-handler.ts +63 -9
  429. package/src/org/auto-join-domain.ts +4 -3
  430. package/src/org/context.ts +108 -39
  431. package/src/org/index.ts +5 -0
  432. package/src/org/service-identity.ts +60 -0
  433. package/src/provider-api/index.ts +22 -1
  434. package/src/scripts/docs/search.ts +12 -1
  435. package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +25 -36
  436. package/src/server/agent-chat/context-tools.ts +9 -4
  437. package/src/server/agent-chat/framework-prompts.ts +38 -66
  438. package/src/server/agent-chat-plugin.ts +17 -10
  439. package/src/server/agents-bundle.ts +84 -5
  440. package/src/server/auth.ts +4 -3
  441. package/src/server/builder-browser.ts +47 -19
  442. package/src/server/core-routes-plugin.ts +2 -2
  443. package/src/server/credential-provider.ts +209 -68
  444. package/src/server/index.ts +3 -0
  445. package/src/server/prompts/framework-core-compact.ts +6 -13
  446. package/src/server/prompts/framework-core.ts +9 -21
  447. package/src/server/prompts/index.ts +0 -1
  448. package/src/server/prompts/shared-rules.ts +19 -11
  449. package/src/server/ssr-handler.ts +13 -2
  450. package/src/settings/user-settings.ts +13 -1
  451. package/src/shared/cache-control.ts +141 -0
  452. package/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  453. package/src/templates/chat/_gitignore +1 -0
  454. package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  455. package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  456. package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +19 -0
  457. package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
  458. package/src/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +1 -0
  459. package/src/vite/agents-bundle-plugin.ts +7 -6
  460. package/src/vite/client.ts +5 -0
@@ -56,7 +56,29 @@ install → refresh scaffold skills → verify, then fix **app** code only.
56
56
  - Runs `skills update scaffold --project`
57
57
  - Runs `typecheck` when the project has that script
58
58
 
59
- 3. **If upgrade or typecheck fails**
59
+ 3. **Pull upstream template changes (optional, separate from the bump)**
60
+
61
+ `agent-native upgrade` moves package versions. It never touches files that
62
+ were copied out of a template at scaffold time, so template fixes and
63
+ improvements do not arrive with a bump.
64
+
65
+ ```bash
66
+ agent-native template status # recorded ref vs latest, drift counts
67
+ agent-native template diff # what upstream changed, read-only
68
+ agent-native template sync # 3-way merge it into the app
69
+ ```
70
+
71
+ `sync` defaults to the ref matching the installed `@agent-native/core`, so
72
+ run it after `upgrade`. It merges per file against a pristine baseline
73
+ stored in `refs/agent-native/template-baseline/<app-path>`; files upstream
74
+ did not touch are left alone, and real collisions get conflict markers.
75
+ After resolving markers, run `agent-native template accept` — the baseline
76
+ deliberately does not advance past an unresolved merge.
77
+
78
+ Apps scaffolded before provenance existed have no baseline. Create one
79
+ with `agent-native template baseline` before the first sync.
80
+
81
+ 4. **If upgrade or typecheck fails**
60
82
 
61
83
  - Read the concrete error
62
84
  - Fix **app** source, actions, config, or env — not framework packages
@@ -68,7 +90,7 @@ install → refresh scaffold skills → verify, then fix **app** code only.
68
90
  copied component; do not use that path to reproduce framework runtime
69
91
  behavior or hide version skew.
70
92
 
71
- 4. **Dry-run / partial runs**
93
+ 5. **Dry-run / partial runs**
72
94
 
73
95
  ```bash
74
96
  agent-native upgrade --dry-run
@@ -41,3 +41,4 @@ data/.sessions.json
41
41
  learnings.md
42
42
 
43
43
  .vercel/
44
+ .agent-native/
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-24
4
+ ---
5
+
6
+ Signing in now reliably puts you in your company's workspace instead of stranding you in a personal one, and the workspace switcher stays reachable when the sidebar is collapsed.
@@ -56,7 +56,29 @@ install → refresh scaffold skills → verify, then fix **app** code only.
56
56
  - Runs `skills update scaffold --project`
57
57
  - Runs `typecheck` when the project has that script
58
58
 
59
- 3. **If upgrade or typecheck fails**
59
+ 3. **Pull upstream template changes (optional, separate from the bump)**
60
+
61
+ `agent-native upgrade` moves package versions. It never touches files that
62
+ were copied out of a template at scaffold time, so template fixes and
63
+ improvements do not arrive with a bump.
64
+
65
+ ```bash
66
+ agent-native template status # recorded ref vs latest, drift counts
67
+ agent-native template diff # what upstream changed, read-only
68
+ agent-native template sync # 3-way merge it into the app
69
+ ```
70
+
71
+ `sync` defaults to the ref matching the installed `@agent-native/core`, so
72
+ run it after `upgrade`. It merges per file against a pristine baseline
73
+ stored in `refs/agent-native/template-baseline/<app-path>`; files upstream
74
+ did not touch are left alone, and real collisions get conflict markers.
75
+ After resolving markers, run `agent-native template accept` — the baseline
76
+ deliberately does not advance past an unresolved merge.
77
+
78
+ Apps scaffolded before provenance existed have no baseline. Create one
79
+ with `agent-native template baseline` before the first sync.
80
+
81
+ 4. **If upgrade or typecheck fails**
60
82
 
61
83
  - Read the concrete error
62
84
  - Fix **app** source, actions, config, or env — not framework packages
@@ -68,7 +90,7 @@ install → refresh scaffold skills → verify, then fix **app** code only.
68
90
  copied component; do not use that path to reproduce framework runtime
69
91
  behavior or hide version skew.
70
92
 
71
- 4. **Dry-run / partial runs**
93
+ 5. **Dry-run / partial runs**
72
94
 
73
95
  ```bash
74
96
  agent-native upgrade --dry-run
@@ -37,3 +37,4 @@ data/.sessions.json
37
37
  learnings.md
38
38
 
39
39
  .vercel/
40
+ .agent-native/
@@ -1,5 +1,5 @@
1
1
  import { getAppBasePath } from "@agent-native/core/server";
2
- import { DEFAULT_SSR_CACHE_HEADERS } from "@agent-native/core/server/ssr-handler";
2
+ import { resolveSsrCacheHeaders } from "@agent-native/core/server/ssr-handler";
3
3
  import {
4
4
  AGENT_NATIVE_SOCIAL_IMAGE_ALT,
5
5
  AGENT_NATIVE_SOCIAL_IMAGE_HEIGHT,
@@ -314,7 +314,7 @@ export async function renderPublicForm(event: H3Event) {
314
314
  // Public form SSR is anonymous HTML and follows the same framework-level
315
315
  // short-fresh/long-SWR policy as React Router SSR. Keep all cache headers
316
316
  // here; relying on provider config would make templates perform differently.
317
- Object.assign(headers, DEFAULT_SSR_CACHE_HEADERS);
317
+ Object.assign(headers, resolveSsrCacheHeaders());
318
318
  }
319
319
  return new Response(getMethod(event) === "HEAD" ? null : html, {
320
320
  status,
@@ -56,7 +56,29 @@ install → refresh scaffold skills → verify, then fix **app** code only.
56
56
  - Runs `skills update scaffold --project`
57
57
  - Runs `typecheck` when the project has that script
58
58
 
59
- 3. **If upgrade or typecheck fails**
59
+ 3. **Pull upstream template changes (optional, separate from the bump)**
60
+
61
+ `agent-native upgrade` moves package versions. It never touches files that
62
+ were copied out of a template at scaffold time, so template fixes and
63
+ improvements do not arrive with a bump.
64
+
65
+ ```bash
66
+ agent-native template status # recorded ref vs latest, drift counts
67
+ agent-native template diff # what upstream changed, read-only
68
+ agent-native template sync # 3-way merge it into the app
69
+ ```
70
+
71
+ `sync` defaults to the ref matching the installed `@agent-native/core`, so
72
+ run it after `upgrade`. It merges per file against a pristine baseline
73
+ stored in `refs/agent-native/template-baseline/<app-path>`; files upstream
74
+ did not touch are left alone, and real collisions get conflict markers.
75
+ After resolving markers, run `agent-native template accept` — the baseline
76
+ deliberately does not advance past an unresolved merge.
77
+
78
+ Apps scaffolded before provenance existed have no baseline. Create one
79
+ with `agent-native template baseline` before the first sync.
80
+
81
+ 4. **If upgrade or typecheck fails**
60
82
 
61
83
  - Read the concrete error
62
84
  - Fix **app** source, actions, config, or env — not framework packages
@@ -68,7 +90,7 @@ install → refresh scaffold skills → verify, then fix **app** code only.
68
90
  copied component; do not use that path to reproduce framework runtime
69
91
  behavior or hide version skew.
70
92
 
71
- 4. **Dry-run / partial runs**
93
+ 5. **Dry-run / partial runs**
72
94
 
73
95
  ```bash
74
96
  agent-native upgrade --dry-run
@@ -37,3 +37,4 @@ data/.sessions.json
37
37
  learnings.md
38
38
 
39
39
  .vercel/
40
+ .agent-native/
@@ -56,7 +56,29 @@ install → refresh scaffold skills → verify, then fix **app** code only.
56
56
  - Runs `skills update scaffold --project`
57
57
  - Runs `typecheck` when the project has that script
58
58
 
59
- 3. **If upgrade or typecheck fails**
59
+ 3. **Pull upstream template changes (optional, separate from the bump)**
60
+
61
+ `agent-native upgrade` moves package versions. It never touches files that
62
+ were copied out of a template at scaffold time, so template fixes and
63
+ improvements do not arrive with a bump.
64
+
65
+ ```bash
66
+ agent-native template status # recorded ref vs latest, drift counts
67
+ agent-native template diff # what upstream changed, read-only
68
+ agent-native template sync # 3-way merge it into the app
69
+ ```
70
+
71
+ `sync` defaults to the ref matching the installed `@agent-native/core`, so
72
+ run it after `upgrade`. It merges per file against a pristine baseline
73
+ stored in `refs/agent-native/template-baseline/<app-path>`; files upstream
74
+ did not touch are left alone, and real collisions get conflict markers.
75
+ After resolving markers, run `agent-native template accept` — the baseline
76
+ deliberately does not advance past an unresolved merge.
77
+
78
+ Apps scaffolded before provenance existed have no baseline. Create one
79
+ with `agent-native template baseline` before the first sync.
80
+
81
+ 4. **If upgrade or typecheck fails**
60
82
 
61
83
  - Read the concrete error
62
84
  - Fix **app** source, actions, config, or env — not framework packages
@@ -68,7 +90,7 @@ install → refresh scaffold skills → verify, then fix **app** code only.
68
90
  copied component; do not use that path to reproduce framework runtime
69
91
  behavior or hide version skew.
70
92
 
71
- 4. **Dry-run / partial runs**
93
+ 5. **Dry-run / partial runs**
72
94
 
73
95
  ```bash
74
96
  agent-native upgrade --dry-run
@@ -37,3 +37,4 @@ data/.sessions.json
37
37
  learnings.md
38
38
 
39
39
  .vercel/
40
+ .agent-native/
@@ -56,7 +56,29 @@ install → refresh scaffold skills → verify, then fix **app** code only.
56
56
  - Runs `skills update scaffold --project`
57
57
  - Runs `typecheck` when the project has that script
58
58
 
59
- 3. **If upgrade or typecheck fails**
59
+ 3. **Pull upstream template changes (optional, separate from the bump)**
60
+
61
+ `agent-native upgrade` moves package versions. It never touches files that
62
+ were copied out of a template at scaffold time, so template fixes and
63
+ improvements do not arrive with a bump.
64
+
65
+ ```bash
66
+ agent-native template status # recorded ref vs latest, drift counts
67
+ agent-native template diff # what upstream changed, read-only
68
+ agent-native template sync # 3-way merge it into the app
69
+ ```
70
+
71
+ `sync` defaults to the ref matching the installed `@agent-native/core`, so
72
+ run it after `upgrade`. It merges per file against a pristine baseline
73
+ stored in `refs/agent-native/template-baseline/<app-path>`; files upstream
74
+ did not touch are left alone, and real collisions get conflict markers.
75
+ After resolving markers, run `agent-native template accept` — the baseline
76
+ deliberately does not advance past an unresolved merge.
77
+
78
+ Apps scaffolded before provenance existed have no baseline. Create one
79
+ with `agent-native template baseline` before the first sync.
80
+
81
+ 4. **If upgrade or typecheck fails**
60
82
 
61
83
  - Read the concrete error
62
84
  - Fix **app** source, actions, config, or env — not framework packages
@@ -68,7 +90,7 @@ install → refresh scaffold skills → verify, then fix **app** code only.
68
90
  copied component; do not use that path to reproduce framework runtime
69
91
  behavior or hide version skew.
70
92
 
71
- 4. **Dry-run / partial runs**
93
+ 5. **Dry-run / partial runs**
72
94
 
73
95
  ```bash
74
96
  agent-native upgrade --dry-run
@@ -41,3 +41,4 @@ data/.sessions.json
41
41
  learnings.md
42
42
 
43
43
  .vercel/
44
+ .agent-native/
@@ -56,7 +56,29 @@ install → refresh scaffold skills → verify, then fix **app** code only.
56
56
  - Runs `skills update scaffold --project`
57
57
  - Runs `typecheck` when the project has that script
58
58
 
59
- 3. **If upgrade or typecheck fails**
59
+ 3. **Pull upstream template changes (optional, separate from the bump)**
60
+
61
+ `agent-native upgrade` moves package versions. It never touches files that
62
+ were copied out of a template at scaffold time, so template fixes and
63
+ improvements do not arrive with a bump.
64
+
65
+ ```bash
66
+ agent-native template status # recorded ref vs latest, drift counts
67
+ agent-native template diff # what upstream changed, read-only
68
+ agent-native template sync # 3-way merge it into the app
69
+ ```
70
+
71
+ `sync` defaults to the ref matching the installed `@agent-native/core`, so
72
+ run it after `upgrade`. It merges per file against a pristine baseline
73
+ stored in `refs/agent-native/template-baseline/<app-path>`; files upstream
74
+ did not touch are left alone, and real collisions get conflict markers.
75
+ After resolving markers, run `agent-native template accept` — the baseline
76
+ deliberately does not advance past an unresolved merge.
77
+
78
+ Apps scaffolded before provenance existed have no baseline. Create one
79
+ with `agent-native template baseline` before the first sync.
80
+
81
+ 4. **If upgrade or typecheck fails**
60
82
 
61
83
  - Read the concrete error
62
84
  - Fix **app** source, actions, config, or env — not framework packages
@@ -68,7 +90,7 @@ install → refresh scaffold skills → verify, then fix **app** code only.
68
90
  copied component; do not use that path to reproduce framework runtime
69
91
  behavior or hide version skew.
70
92
 
71
- 4. **Dry-run / partial runs**
93
+ 5. **Dry-run / partial runs**
72
94
 
73
95
  ```bash
74
96
  agent-native upgrade --dry-run
@@ -37,3 +37,4 @@ data/.sessions.json
37
37
  learnings.md
38
38
 
39
39
  .vercel/
40
+ .agent-native/
@@ -265,6 +265,10 @@ export default (nitroApp: any): void => {
265
265
  setResponseHeader(event, "retry-after", "5");
266
266
  return { error: "Slides database is temporarily unavailable" };
267
267
  };
268
+ // The CLI action/agent runner invokes this plugin with a stand-in object to
269
+ // get migrations only, so there is no h3 app to gate — and no HTTP traffic to
270
+ // gate either. Registering unconditionally broke every `pnpm action` here.
271
+ if (!nitroApp?.h3) return;
268
272
  const app = getH3App(nitroApp);
269
273
  for (const path of ["/", "/p", "/share", "/api"]) {
270
274
  app.use(path, waitForReady);
@@ -56,7 +56,29 @@ install → refresh scaffold skills → verify, then fix **app** code only.
56
56
  - Runs `skills update scaffold --project`
57
57
  - Runs `typecheck` when the project has that script
58
58
 
59
- 3. **If upgrade or typecheck fails**
59
+ 3. **Pull upstream template changes (optional, separate from the bump)**
60
+
61
+ `agent-native upgrade` moves package versions. It never touches files that
62
+ were copied out of a template at scaffold time, so template fixes and
63
+ improvements do not arrive with a bump.
64
+
65
+ ```bash
66
+ agent-native template status # recorded ref vs latest, drift counts
67
+ agent-native template diff # what upstream changed, read-only
68
+ agent-native template sync # 3-way merge it into the app
69
+ ```
70
+
71
+ `sync` defaults to the ref matching the installed `@agent-native/core`, so
72
+ run it after `upgrade`. It merges per file against a pristine baseline
73
+ stored in `refs/agent-native/template-baseline/<app-path>`; files upstream
74
+ did not touch are left alone, and real collisions get conflict markers.
75
+ After resolving markers, run `agent-native template accept` — the baseline
76
+ deliberately does not advance past an unresolved merge.
77
+
78
+ Apps scaffolded before provenance existed have no baseline. Create one
79
+ with `agent-native template baseline` before the first sync.
80
+
81
+ 4. **If upgrade or typecheck fails**
60
82
 
61
83
  - Read the concrete error
62
84
  - Fix **app** source, actions, config, or env — not framework packages
@@ -68,7 +90,7 @@ install → refresh scaffold skills → verify, then fix **app** code only.
68
90
  copied component; do not use that path to reproduce framework runtime
69
91
  behavior or hide version skew.
70
92
 
71
- 4. **Dry-run / partial runs**
93
+ 5. **Dry-run / partial runs**
72
94
 
73
95
  ```bash
74
96
  agent-native upgrade --dry-run
@@ -18,7 +18,7 @@ ladder.
18
18
  - Follow the root framework contract: data in SQL, actions first, application state for navigation/selection, and shared agent chat for AI work.
19
19
  - Use actions for app operations and keep frontend/API parity.
20
20
  - Prefer improving the action surface before adding new pages. The task list is the primary durable UI for MVP.
21
- - Keep the action surface small: task CRUD actions plus `reorder-tasks`, `view-screen`, and `navigate`.
21
+ - Keep the action surface deliberate: it already covers task and inbox-item CRUD/bulk operations, custom field definitions and visibility prefs, reordering, `view-screen`, `navigate`, and `render-task-list-inline` (25 actions total — see the table below). Extend it thoughtfully rather than adding new pages.
22
22
  - Do not use `db-query` for normal task operations.
23
23
  - Call `view-screen` first when the user's visible task context matters (especially on `/tasks`).
24
24
  - Tasks are private to each user. Preserve `ownerEmail` scoping unless intentionally implementing sharing.
@@ -37,3 +37,4 @@ data/.sessions.json
37
37
  learnings.md
38
38
 
39
39
  .vercel/
40
+ .agent-native/
@@ -26,6 +26,9 @@ export interface A2AAgentActivitySnapshot extends Record<string, unknown> {
26
26
  activePhase: A2AAgentActivityPhase;
27
27
  reasoning: string[];
28
28
  toolCalls: A2AAgentActivityToolCall[];
29
+ /** Response text segments, indexed by how many tool calls preceded them. */
30
+ response?: string[];
31
+ /** Tail segment only. Kept so peers predating `response` still render. */
29
32
  responseText?: string;
30
33
  }
31
34
  export interface A2AAgentActivityState {
@@ -35,7 +38,7 @@ export interface A2AAgentActivityState {
35
38
  activePhase: A2AAgentActivityPhase;
36
39
  reasoning: string[];
37
40
  toolCalls: A2AAgentActivityToolCall[];
38
- responseText: string;
41
+ response: string[];
39
42
  }
40
43
  export declare function createA2AAgentActivityState(startedAt?: number): A2AAgentActivityState;
41
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/a2a/activity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,uBAAuB,gCAAgC,CAAC;AACrE,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,gCAAgC,QAAS,CAAC;AACvD,eAAO,MAAM,+BAA+B,QAAS,CAAC;AACtD,eAAO,MAAM,4BAA4B,QAAS,CAAC;AACnD,eAAO,MAAM,mCAAmC,MAAM,CAAC;AACvD,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,gCAAgC,KAAK,CAAC;AACnD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,MAAM,GACN,YAAY,GACZ,UAAU,GACV,OAAO,CAAC;AAEZ,MAAM,MAAM,0BAA0B,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE5E,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,0BAA0B,CAAC;CACpC;AAED,MAAM,WAAW,wBAAyB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvE,IAAI,EAAE,OAAO,uBAAuB,CAAC;IACrC,OAAO,EAAE,OAAO,0BAA0B,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,qBAAqB,CAAC;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,qBAAqB,CAAC;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,2BAA2B,CACzC,SAAS,SAAa,GACrB,qBAAqB,CAUvB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,qBAAqB,EAC5B,KAAK,EAAE,cAAc,EACrB,SAAS,SAAa,GACrB,qBAAqB,CAkDvB;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,qBAAqB,GAC3B,wBAAwB,CAa1B;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,qBAAqB,GAC3B,QAAQ,CAEV;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,GAAG,OAAO,GACnB,wBAAwB,GAAG,IAAI,CAyBjC"}
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/a2a/activity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,uBAAuB,gCAAgC,CAAC;AACrE,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,gCAAgC,QAAS,CAAC;AACvD,eAAO,MAAM,+BAA+B,QAAS,CAAC;AACtD,eAAO,MAAM,4BAA4B,QAAS,CAAC;AACnD,eAAO,MAAM,mCAAmC,MAAM,CAAC;AACvD,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,gCAAgC,KAAK,CAAC;AACnD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAC7B,WAAW,GACX,MAAM,GACN,YAAY,GACZ,UAAU,GACV,OAAO,CAAC;AAEZ,MAAM,MAAM,0BAA0B,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE5E,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,0BAA0B,CAAC;CACpC;AAED,MAAM,WAAW,wBAAyB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvE,IAAI,EAAE,OAAO,uBAAuB,CAAC;IACrC,OAAO,EAAE,OAAO,0BAA0B,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,qBAAqB,CAAC;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,qBAAqB,CAAC;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,2BAA2B,CACzC,SAAS,SAAa,GACrB,qBAAqB,CAUvB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,qBAAqB,EAC5B,KAAK,EAAE,cAAc,EACrB,SAAS,SAAa,GACrB,qBAAqB,CAkDvB;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,qBAAqB,GAC3B,wBAAwB,CAc1B;AAMD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,qBAAqB,GAC3B,QAAQ,CAEV;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,GAAG,OAAO,GACnB,wBAAwB,GAAG,IAAI,CA2BjC"}
@@ -16,7 +16,7 @@ export function createA2AAgentActivityState(startedAt = Date.now()) {
16
16
  activePhase: "reasoning",
17
17
  reasoning: [],
18
18
  toolCalls: [],
19
- responseText: "",
19
+ response: [],
20
20
  };
21
21
  }
22
22
  /**
@@ -35,7 +35,6 @@ export function applyA2AAgentActivityEvent(state, event, updatedAt = Date.now())
35
35
  break;
36
36
  case "tool_start":
37
37
  next.activePhase = "tool";
38
- next.responseText = "";
39
38
  next.toolCalls = appendToolCall(next.toolCalls, toolFromEvent(event));
40
39
  changed = true;
41
40
  break;
@@ -46,7 +45,7 @@ export function applyA2AAgentActivityEvent(state, event, updatedAt = Date.now())
46
45
  break;
47
46
  case "text":
48
47
  next.activePhase = "responding";
49
- next.responseText = appendBoundedText(next.responseText, event.text, MAX_A2A_ACTIVITY_RESPONSE_CHARS);
48
+ next.response = appendBoundedSegment(next.response, event.text, MAX_A2A_ACTIVITY_RESPONSE_CHARS, next.toolCalls.length);
50
49
  changed = true;
51
50
  break;
52
51
  case "done":
@@ -58,7 +57,7 @@ export function applyA2AAgentActivityEvent(state, event, updatedAt = Date.now())
58
57
  changed = true;
59
58
  break;
60
59
  case "clear":
61
- next.responseText = "";
60
+ next.response = [];
62
61
  changed = true;
63
62
  break;
64
63
  }
@@ -75,9 +74,13 @@ export function buildA2AAgentActivitySnapshot(state) {
75
74
  activePhase: state.activePhase,
76
75
  reasoning: state.reasoning,
77
76
  toolCalls: state.toolCalls,
78
- ...(state.responseText ? { responseText: state.responseText } : {}),
77
+ ...(state.response.length ? { response: state.response } : {}),
78
+ ...(tailSegment(state) ? { responseText: tailSegment(state) } : {}),
79
79
  };
80
80
  }
81
+ function tailSegment(state) {
82
+ return state.response[state.toolCalls.length] ?? "";
83
+ }
81
84
  export function buildA2AAgentActivityPart(state) {
82
85
  return { type: "data", data: buildA2AAgentActivitySnapshot(state) };
83
86
  }
@@ -97,8 +100,10 @@ export function parseA2AAgentActivityPart(part) {
97
100
  !isPhase(data.activePhase) ||
98
101
  data.updatedAt < data.startedAt ||
99
102
  data.durationMs !== data.updatedAt - data.startedAt ||
100
- !isSafeReasoning(data.reasoning) ||
103
+ !isSafeSegments(data.reasoning, MAX_A2A_ACTIVITY_REASONING_CHARS) ||
101
104
  !isSafeToolCalls(data.toolCalls) ||
105
+ (data.response !== undefined &&
106
+ !isSafeSegments(data.response, MAX_A2A_ACTIVITY_RESPONSE_CHARS)) ||
102
107
  (data.responseText !== undefined &&
103
108
  !isSafeText(data.responseText, MAX_A2A_ACTIVITY_RESPONSE_CHARS)) ||
104
109
  activityCharacterCount(data) > MAX_A2A_ACTIVITY_TOTAL_CHARS) {
@@ -118,9 +123,6 @@ function toolFromEvent(event) {
118
123
  : "completed",
119
124
  };
120
125
  }
121
- function appendBoundedText(current, addition, maxChars) {
122
- return sanitizeText(`${current}${addition}`, maxChars);
123
- }
124
126
  function appendBoundedSegment(current, addition, maxChars, precedingToolCount) {
125
127
  const used = current.reduce((total, text) => total + text.length, 0);
126
128
  if (used >= maxChars ||
@@ -183,11 +185,11 @@ function isSafeInteger(value) {
183
185
  function isPhase(value) {
184
186
  return ["reasoning", "tool", "responding", "complete", "error"].includes(value);
185
187
  }
186
- function isSafeReasoning(value) {
188
+ function isSafeSegments(value, maxChars) {
187
189
  return (Array.isArray(value) &&
188
190
  value.length <= MAX_A2A_ACTIVITY_REASONING_SEGMENTS &&
189
- value.reduce((total, text) => total + (typeof text === "string" ? text.length : Infinity), 0) <= MAX_A2A_ACTIVITY_REASONING_CHARS &&
190
- value.every((text) => isSafeText(text, MAX_A2A_ACTIVITY_REASONING_CHARS)));
191
+ value.reduce((total, text) => total + (typeof text === "string" ? text.length : Infinity), 0) <= maxChars &&
192
+ value.every((text) => isSafeText(text, maxChars)));
191
193
  }
192
194
  function isSafeToolCalls(value) {
193
195
  return (Array.isArray(value) &&
@@ -218,10 +220,14 @@ function isSafeToolId(value) {
218
220
  value === sanitizeToolId(value));
219
221
  }
220
222
  function activityCharacterCount(data) {
221
- const reasoning = Array.isArray(data.reasoning)
222
- ? data.reasoning.reduce((total, text) => total + (typeof text === "string" ? text.length : 0), 0)
223
- : 0;
224
- const response = typeof data.responseText === "string" ? data.responseText.length : 0;
223
+ const reasoning = segmentCharacterCount(data.reasoning);
224
+ // `responseText` duplicates the tail of `response`; counting both would
225
+ // reject a snapshot that is within budget.
226
+ const response = Array.isArray(data.response)
227
+ ? segmentCharacterCount(data.response)
228
+ : typeof data.responseText === "string"
229
+ ? data.responseText.length
230
+ : 0;
225
231
  const tools = Array.isArray(data.toolCalls)
226
232
  ? data.toolCalls.reduce((total, tool) => {
227
233
  if (!isRecord(tool))
@@ -233,4 +239,9 @@ function activityCharacterCount(data) {
233
239
  : 0;
234
240
  return reasoning + response + tools;
235
241
  }
242
+ function segmentCharacterCount(value) {
243
+ return Array.isArray(value)
244
+ ? value.reduce((total, text) => total + (typeof text === "string" ? text.length : 0), 0)
245
+ : 0;
246
+ }
236
247
  //# sourceMappingURL=activity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/a2a/activity.ts"],"names":[],"mappings":"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","sourcesContent":["import { sanitizeToolErrorText } from \"../agent/tool-error-redaction.js\";\nimport type { AgentChatEvent } from \"../agent/types.js\";\nimport type { DataPart, Part } from \"./types.js\";\n\nexport const A2A_AGENT_ACTIVITY_KIND = \"agent-native/agent-activity\";\nexport const A2A_AGENT_ACTIVITY_VERSION = 1;\nexport const MAX_A2A_ACTIVITY_REASONING_CHARS = 32_768;\nexport const MAX_A2A_ACTIVITY_RESPONSE_CHARS = 32_768;\nexport const MAX_A2A_ACTIVITY_TOTAL_CHARS = 98_304;\nexport const MAX_A2A_ACTIVITY_REASONING_SEGMENTS = 128;\nexport const MAX_A2A_ACTIVITY_TOOL_CALLS = 64;\nexport const MAX_A2A_ACTIVITY_TOOL_NAME_CHARS = 96;\nexport const MAX_A2A_ACTIVITY_TOOL_ID_CHARS = 128;\n\nexport type A2AAgentActivityPhase =\n | \"reasoning\"\n | \"tool\"\n | \"responding\"\n | \"complete\"\n | \"error\";\n\nexport type A2AAgentActivityToolStatus = \"running\" | \"completed\" | \"failed\";\n\nexport interface A2AAgentActivityToolCall {\n name: string;\n id?: string;\n status: A2AAgentActivityToolStatus;\n}\n\nexport interface A2AAgentActivitySnapshot extends Record<string, unknown> {\n kind: typeof A2A_AGENT_ACTIVITY_KIND;\n version: typeof A2A_AGENT_ACTIVITY_VERSION;\n sequence: number;\n startedAt: number;\n updatedAt: number;\n durationMs: number;\n activePhase: A2AAgentActivityPhase;\n reasoning: string[];\n toolCalls: A2AAgentActivityToolCall[];\n responseText?: string;\n}\n\nexport interface A2AAgentActivityState {\n sequence: number;\n startedAt: number;\n updatedAt: number;\n activePhase: A2AAgentActivityPhase;\n reasoning: string[];\n toolCalls: A2AAgentActivityToolCall[];\n responseText: string;\n}\n\nexport function createA2AAgentActivityState(\n startedAt = Date.now(),\n): A2AAgentActivityState {\n return {\n sequence: 0,\n startedAt,\n updatedAt: startedAt,\n activePhase: \"reasoning\",\n reasoning: [],\n toolCalls: [],\n responseText: \"\",\n };\n}\n\n/**\n * Converts internal loop events into a bounded activity snapshot. It carries\n * only reasoning text already emitted to the local chat, never tool inputs or\n * results.\n */\nexport function applyA2AAgentActivityEvent(\n state: A2AAgentActivityState,\n event: AgentChatEvent,\n updatedAt = Date.now(),\n): A2AAgentActivityState {\n const next = { ...state, updatedAt: normalizeTimestamp(updatedAt) };\n let changed = false;\n\n switch (event.type) {\n case \"thinking\":\n next.activePhase = \"reasoning\";\n next.reasoning = appendBoundedSegment(\n next.reasoning,\n event.text,\n MAX_A2A_ACTIVITY_REASONING_CHARS,\n next.toolCalls.length,\n );\n changed = true;\n break;\n case \"tool_start\":\n next.activePhase = \"tool\";\n next.responseText = \"\";\n next.toolCalls = appendToolCall(next.toolCalls, toolFromEvent(event));\n changed = true;\n break;\n case \"tool_done\":\n next.activePhase = \"tool\";\n next.toolCalls = settleToolCall(next.toolCalls, toolFromEvent(event));\n changed = true;\n break;\n case \"text\":\n next.activePhase = \"responding\";\n next.responseText = appendBoundedText(\n next.responseText,\n event.text,\n MAX_A2A_ACTIVITY_RESPONSE_CHARS,\n );\n changed = true;\n break;\n case \"done\":\n next.activePhase = \"complete\";\n changed = true;\n break;\n case \"error\":\n next.activePhase = \"error\";\n changed = true;\n break;\n case \"clear\":\n next.responseText = \"\";\n changed = true;\n break;\n }\n\n return changed ? { ...next, sequence: state.sequence + 1 } : state;\n}\n\nexport function buildA2AAgentActivitySnapshot(\n state: A2AAgentActivityState,\n): A2AAgentActivitySnapshot {\n return {\n kind: A2A_AGENT_ACTIVITY_KIND,\n version: A2A_AGENT_ACTIVITY_VERSION,\n sequence: state.sequence,\n startedAt: state.startedAt,\n updatedAt: state.updatedAt,\n durationMs: Math.max(0, state.updatedAt - state.startedAt),\n activePhase: state.activePhase,\n reasoning: state.reasoning,\n toolCalls: state.toolCalls,\n ...(state.responseText ? { responseText: state.responseText } : {}),\n };\n}\n\nexport function buildA2AAgentActivityPart(\n state: A2AAgentActivityState,\n): DataPart {\n return { type: \"data\", data: buildA2AAgentActivitySnapshot(state) };\n}\n\nexport function parseA2AAgentActivityPart(\n part: Part | unknown,\n): A2AAgentActivitySnapshot | null {\n if (!part || typeof part !== \"object\") return null;\n const candidate = part as { type?: unknown; data?: unknown };\n if (candidate.type !== \"data\" || !isRecord(candidate.data)) return null;\n const data = candidate.data;\n if (\n data.kind !== A2A_AGENT_ACTIVITY_KIND ||\n data.version !== A2A_AGENT_ACTIVITY_VERSION ||\n !isSafeInteger(data.sequence) ||\n !isSafeInteger(data.startedAt) ||\n !isSafeInteger(data.updatedAt) ||\n !isSafeInteger(data.durationMs) ||\n !isPhase(data.activePhase) ||\n data.updatedAt < data.startedAt ||\n data.durationMs !== data.updatedAt - data.startedAt ||\n !isSafeReasoning(data.reasoning) ||\n !isSafeToolCalls(data.toolCalls) ||\n (data.responseText !== undefined &&\n !isSafeText(data.responseText, MAX_A2A_ACTIVITY_RESPONSE_CHARS)) ||\n activityCharacterCount(data) > MAX_A2A_ACTIVITY_TOTAL_CHARS\n ) {\n return null;\n }\n\n return data as unknown as A2AAgentActivitySnapshot;\n}\n\nfunction toolFromEvent(\n event: Extract<AgentChatEvent, { type: \"tool_start\" | \"tool_done\" }>,\n): A2AAgentActivityToolCall {\n const id = sanitizeToolId(event.id);\n return {\n name: sanitizeToolName(event.tool),\n ...(id ? { id } : {}),\n status:\n event.type === \"tool_start\"\n ? \"running\"\n : event.isError\n ? \"failed\"\n : \"completed\",\n };\n}\n\nfunction appendBoundedText(\n current: string,\n addition: string,\n maxChars: number,\n) {\n return sanitizeText(`${current}${addition}`, maxChars);\n}\n\nfunction appendBoundedSegment(\n current: string[],\n addition: string,\n maxChars: number,\n precedingToolCount: number,\n): string[] {\n const used = current.reduce((total, text) => total + text.length, 0);\n if (\n used >= maxChars ||\n current.length >= MAX_A2A_ACTIVITY_REASONING_SEGMENTS\n ) {\n return current;\n }\n const text = sanitizeText(addition, maxChars - used);\n if (!text) return current;\n const next = [...current];\n while (\n next.length < precedingToolCount &&\n next.length < MAX_A2A_ACTIVITY_REASONING_SEGMENTS\n ) {\n next.push(\"\");\n }\n if (next.length === precedingToolCount) {\n return [...next, text];\n }\n next[precedingToolCount] = `${next[precedingToolCount] ?? \"\"}${text}`;\n return next;\n}\n\nfunction appendToolCall(\n current: A2AAgentActivityToolCall[],\n tool: A2AAgentActivityToolCall,\n): A2AAgentActivityToolCall[] {\n return current.length < MAX_A2A_ACTIVITY_TOOL_CALLS\n ? [...current, tool]\n : current;\n}\n\nfunction settleToolCall(\n current: A2AAgentActivityToolCall[],\n tool: A2AAgentActivityToolCall,\n): A2AAgentActivityToolCall[] {\n for (let index = current.length - 1; index >= 0; index -= 1) {\n const existing = current[index];\n if (\n (tool.id && tool.id === existing.id) ||\n (!tool.id && tool.name === existing.name)\n ) {\n return current.map((value, itemIndex) =>\n itemIndex === index ? tool : value,\n );\n }\n }\n return appendToolCall(current, tool);\n}\n\nfunction sanitizeText(value: string, maxChars: number): string {\n return sanitizeToolErrorText(value)\n .replace(/\\r\\n?/g, \"\\n\")\n .replace(/[\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]/g, \"\")\n .slice(0, maxChars);\n}\n\nfunction sanitizeToolName(value: string): string {\n return sanitizeText(value, MAX_A2A_ACTIVITY_TOOL_NAME_CHARS) || \"tool\";\n}\n\nfunction sanitizeToolId(value: string | undefined): string | undefined {\n const sanitized = value\n ? sanitizeText(value, MAX_A2A_ACTIVITY_TOOL_ID_CHARS)\n : \"\";\n return sanitized || undefined;\n}\n\nfunction normalizeTimestamp(value: number): number {\n return isSafeInteger(value) ? value : Date.now();\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isSafeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n\nfunction isPhase(value: unknown): value is A2AAgentActivityPhase {\n return [\"reasoning\", \"tool\", \"responding\", \"complete\", \"error\"].includes(\n value as string,\n );\n}\n\nfunction isSafeReasoning(value: unknown): value is string[] {\n return (\n Array.isArray(value) &&\n value.length <= MAX_A2A_ACTIVITY_REASONING_SEGMENTS &&\n value.reduce(\n (total, text) =>\n total + (typeof text === \"string\" ? text.length : Infinity),\n 0,\n ) <= MAX_A2A_ACTIVITY_REASONING_CHARS &&\n value.every((text) => isSafeText(text, MAX_A2A_ACTIVITY_REASONING_CHARS))\n );\n}\n\nfunction isSafeToolCalls(value: unknown): value is A2AAgentActivityToolCall[] {\n return (\n Array.isArray(value) &&\n value.length <= MAX_A2A_ACTIVITY_TOOL_CALLS &&\n value.every(isSafeToolCall)\n );\n}\n\nfunction isSafeToolCall(value: unknown): value is A2AAgentActivityToolCall {\n if (!isRecord(value) || !isSafeToolName(value.name)) return false;\n return (\n (value.id === undefined || isSafeToolId(value.id)) &&\n (value.status === \"running\" ||\n value.status === \"completed\" ||\n value.status === \"failed\")\n );\n}\n\nfunction isSafeText(value: unknown, maxChars: number): value is string {\n return (\n typeof value === \"string\" &&\n value.length <= maxChars &&\n value === sanitizeText(value, maxChars)\n );\n}\n\nfunction isSafeToolName(value: unknown): value is string {\n return (\n typeof value === \"string\" &&\n value.length <= MAX_A2A_ACTIVITY_TOOL_NAME_CHARS &&\n value === sanitizeToolName(value)\n );\n}\n\nfunction isSafeToolId(value: unknown): value is string {\n return (\n typeof value === \"string\" &&\n value.length <= MAX_A2A_ACTIVITY_TOOL_ID_CHARS &&\n value === sanitizeToolId(value)\n );\n}\n\nfunction activityCharacterCount(data: Record<string, unknown>): number {\n const reasoning = Array.isArray(data.reasoning)\n ? data.reasoning.reduce(\n (total, text) => total + (typeof text === \"string\" ? text.length : 0),\n 0,\n )\n : 0;\n const response =\n typeof data.responseText === \"string\" ? data.responseText.length : 0;\n const tools = Array.isArray(data.toolCalls)\n ? data.toolCalls.reduce((total, tool) => {\n if (!isRecord(tool)) return total;\n return (\n total +\n (typeof tool.name === \"string\" ? tool.name.length : 0) +\n (typeof tool.id === \"string\" ? tool.id.length : 0)\n );\n }, 0)\n : 0;\n return reasoning + response + tools;\n}\n"]}
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/a2a/activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAIzE,MAAM,CAAC,MAAM,uBAAuB,GAAG,6BAA6B,CAAC;AACrE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AACvD,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC;AACtD,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AACnD,MAAM,CAAC,MAAM,mCAAmC,GAAG,GAAG,CAAC;AACvD,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAC9C,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AACnD,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AA2ClD,MAAM,UAAU,2BAA2B,CACzC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;IAEtB,OAAO;QACL,QAAQ,EAAE,CAAC;QACX,SAAS;QACT,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,WAAW;QACxB,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAA4B,EAC5B,KAAqB,EACrB,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;IAEtB,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;IACpE,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,UAAU;YACb,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,oBAAoB,CACnC,IAAI,CAAC,SAAS,EACd,KAAK,CAAC,IAAI,EACV,gCAAgC,EAChC,IAAI,CAAC,SAAS,CAAC,MAAM,CACtB,CAAC;YACF,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,KAAK,YAAY;YACf,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAC1B,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,KAAK,WAAW;YACd,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAC1B,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,KAAK,MAAM;YACT,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAClC,IAAI,CAAC,QAAQ,EACb,KAAK,CAAC,IAAI,EACV,+BAA+B,EAC/B,IAAI,CAAC,SAAS,CAAC,MAAM,CACtB,CAAC;YACF,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,KAAK,MAAM;YACT,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC9B,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,KAAK,OAAO;YACV,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;YAC3B,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;QACR,KAAK,OAAO;YACV,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM;IACV,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAA4B;IAE5B,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAC1D,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAA4B;IAC/C,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAA4B;IAE5B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,CAAC,KAAK,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,IAAoB;IAEpB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,SAAS,GAAG,IAA0C,CAAC;IAC7D,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACxE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IAC5B,IACE,IAAI,CAAC,IAAI,KAAK,uBAAuB;QACrC,IAAI,CAAC,OAAO,KAAK,0BAA0B;QAC3C,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC7B,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9B,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9B,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;QAC/B,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;QAC/B,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;QACnD,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,gCAAgC,CAAC;QACjE,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;QAChC,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS;YAC1B,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC;QAClE,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS;YAC9B,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,+BAA+B,CAAC,CAAC;QAClE,sBAAsB,CAAC,IAAI,CAAC,GAAG,4BAA4B,EAC3D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAA2C,CAAC;AACrD,CAAC;AAED,SAAS,aAAa,CACpB,KAAoE;IAEpE,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpC,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;QAClC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,MAAM,EACJ,KAAK,CAAC,IAAI,KAAK,YAAY;YACzB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,OAAO;gBACb,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,WAAW;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAiB,EACjB,QAAgB,EAChB,QAAgB,EAChB,kBAA0B;IAE1B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrE,IACE,IAAI,IAAI,QAAQ;QAChB,OAAO,CAAC,MAAM,IAAI,mCAAmC,EACrD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAC1B,OACE,IAAI,CAAC,MAAM,GAAG,kBAAkB;QAChC,IAAI,CAAC,MAAM,GAAG,mCAAmC,EACjD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CACrB,OAAmC,EACnC,IAA8B;IAE9B,OAAO,OAAO,CAAC,MAAM,GAAG,2BAA2B;QACjD,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,CAAC;QACpB,CAAC,CAAC,OAAO,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CACrB,OAAmC,EACnC,IAA8B;IAE9B,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,IACE,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;YACpC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EACzC,CAAC;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CACtC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CACnC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,QAAgB;IACnD,OAAO,qBAAqB,CAAC,KAAK,CAAC;SAChC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;SACvB,OAAO,CAAC,iDAAiD,EAAE,EAAE,CAAC;SAC9D,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,YAAY,CAAC,KAAK,EAAE,gCAAgC,CAAC,IAAI,MAAM,CAAC;AACzE,CAAC;AAED,SAAS,cAAc,CAAC,KAAyB;IAC/C,MAAM,SAAS,GAAG,KAAK;QACrB,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,8BAA8B,CAAC;QACrD,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,SAAS,IAAI,SAAS,CAAC;AAChC,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CACtE,KAAe,CAChB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,QAAgB;IACtD,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,MAAM,IAAI,mCAAmC;QACnD,KAAK,CAAC,MAAM,CACV,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CACd,KAAK,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAC7D,CAAC,CACF,IAAI,QAAQ;QACb,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAClD,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,MAAM,IAAI,2BAA2B;QAC3C,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,OAAO,CACL,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;YACzB,KAAK,CAAC,MAAM,KAAK,WAAW;YAC5B,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,QAAgB;IAClD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,MAAM,IAAI,QAAQ;QACxB,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CACxC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,MAAM,IAAI,gCAAgC;QAChD,KAAK,KAAK,gBAAgB,CAAC,KAAK,CAAC,CAClC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,MAAM,IAAI,8BAA8B;QAC9C,KAAK,KAAK,cAAc,CAAC,KAAK,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,IAA6B;IAC3D,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxD,wEAAwE;IACxE,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3C,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtC,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;YACrC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM;YAC1B,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YAClC,OAAO,CACL,KAAK;gBACL,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,CAAC,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACnD,CAAC;QACJ,CAAC,EAAE,CAAC,CAAC;QACP,CAAC,CAAC,CAAC,CAAC;IACN,OAAO,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;AACtC,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,CAAC,CAAC,KAAK,CAAC,MAAM,CACV,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EACrE,CAAC,CACF;QACH,CAAC,CAAC,CAAC,CAAC;AACR,CAAC","sourcesContent":["import { sanitizeToolErrorText } from \"../agent/tool-error-redaction.js\";\nimport type { AgentChatEvent } from \"../agent/types.js\";\nimport type { DataPart, Part } from \"./types.js\";\n\nexport const A2A_AGENT_ACTIVITY_KIND = \"agent-native/agent-activity\";\nexport const A2A_AGENT_ACTIVITY_VERSION = 1;\nexport const MAX_A2A_ACTIVITY_REASONING_CHARS = 32_768;\nexport const MAX_A2A_ACTIVITY_RESPONSE_CHARS = 32_768;\nexport const MAX_A2A_ACTIVITY_TOTAL_CHARS = 98_304;\nexport const MAX_A2A_ACTIVITY_REASONING_SEGMENTS = 128;\nexport const MAX_A2A_ACTIVITY_TOOL_CALLS = 64;\nexport const MAX_A2A_ACTIVITY_TOOL_NAME_CHARS = 96;\nexport const MAX_A2A_ACTIVITY_TOOL_ID_CHARS = 128;\n\nexport type A2AAgentActivityPhase =\n | \"reasoning\"\n | \"tool\"\n | \"responding\"\n | \"complete\"\n | \"error\";\n\nexport type A2AAgentActivityToolStatus = \"running\" | \"completed\" | \"failed\";\n\nexport interface A2AAgentActivityToolCall {\n name: string;\n id?: string;\n status: A2AAgentActivityToolStatus;\n}\n\nexport interface A2AAgentActivitySnapshot extends Record<string, unknown> {\n kind: typeof A2A_AGENT_ACTIVITY_KIND;\n version: typeof A2A_AGENT_ACTIVITY_VERSION;\n sequence: number;\n startedAt: number;\n updatedAt: number;\n durationMs: number;\n activePhase: A2AAgentActivityPhase;\n reasoning: string[];\n toolCalls: A2AAgentActivityToolCall[];\n /** Response text segments, indexed by how many tool calls preceded them. */\n response?: string[];\n /** Tail segment only. Kept so peers predating `response` still render. */\n responseText?: string;\n}\n\nexport interface A2AAgentActivityState {\n sequence: number;\n startedAt: number;\n updatedAt: number;\n activePhase: A2AAgentActivityPhase;\n reasoning: string[];\n toolCalls: A2AAgentActivityToolCall[];\n response: string[];\n}\n\nexport function createA2AAgentActivityState(\n startedAt = Date.now(),\n): A2AAgentActivityState {\n return {\n sequence: 0,\n startedAt,\n updatedAt: startedAt,\n activePhase: \"reasoning\",\n reasoning: [],\n toolCalls: [],\n response: [],\n };\n}\n\n/**\n * Converts internal loop events into a bounded activity snapshot. It carries\n * only reasoning text already emitted to the local chat, never tool inputs or\n * results.\n */\nexport function applyA2AAgentActivityEvent(\n state: A2AAgentActivityState,\n event: AgentChatEvent,\n updatedAt = Date.now(),\n): A2AAgentActivityState {\n const next = { ...state, updatedAt: normalizeTimestamp(updatedAt) };\n let changed = false;\n\n switch (event.type) {\n case \"thinking\":\n next.activePhase = \"reasoning\";\n next.reasoning = appendBoundedSegment(\n next.reasoning,\n event.text,\n MAX_A2A_ACTIVITY_REASONING_CHARS,\n next.toolCalls.length,\n );\n changed = true;\n break;\n case \"tool_start\":\n next.activePhase = \"tool\";\n next.toolCalls = appendToolCall(next.toolCalls, toolFromEvent(event));\n changed = true;\n break;\n case \"tool_done\":\n next.activePhase = \"tool\";\n next.toolCalls = settleToolCall(next.toolCalls, toolFromEvent(event));\n changed = true;\n break;\n case \"text\":\n next.activePhase = \"responding\";\n next.response = appendBoundedSegment(\n next.response,\n event.text,\n MAX_A2A_ACTIVITY_RESPONSE_CHARS,\n next.toolCalls.length,\n );\n changed = true;\n break;\n case \"done\":\n next.activePhase = \"complete\";\n changed = true;\n break;\n case \"error\":\n next.activePhase = \"error\";\n changed = true;\n break;\n case \"clear\":\n next.response = [];\n changed = true;\n break;\n }\n\n return changed ? { ...next, sequence: state.sequence + 1 } : state;\n}\n\nexport function buildA2AAgentActivitySnapshot(\n state: A2AAgentActivityState,\n): A2AAgentActivitySnapshot {\n return {\n kind: A2A_AGENT_ACTIVITY_KIND,\n version: A2A_AGENT_ACTIVITY_VERSION,\n sequence: state.sequence,\n startedAt: state.startedAt,\n updatedAt: state.updatedAt,\n durationMs: Math.max(0, state.updatedAt - state.startedAt),\n activePhase: state.activePhase,\n reasoning: state.reasoning,\n toolCalls: state.toolCalls,\n ...(state.response.length ? { response: state.response } : {}),\n ...(tailSegment(state) ? { responseText: tailSegment(state) } : {}),\n };\n}\n\nfunction tailSegment(state: A2AAgentActivityState): string {\n return state.response[state.toolCalls.length] ?? \"\";\n}\n\nexport function buildA2AAgentActivityPart(\n state: A2AAgentActivityState,\n): DataPart {\n return { type: \"data\", data: buildA2AAgentActivitySnapshot(state) };\n}\n\nexport function parseA2AAgentActivityPart(\n part: Part | unknown,\n): A2AAgentActivitySnapshot | null {\n if (!part || typeof part !== \"object\") return null;\n const candidate = part as { type?: unknown; data?: unknown };\n if (candidate.type !== \"data\" || !isRecord(candidate.data)) return null;\n const data = candidate.data;\n if (\n data.kind !== A2A_AGENT_ACTIVITY_KIND ||\n data.version !== A2A_AGENT_ACTIVITY_VERSION ||\n !isSafeInteger(data.sequence) ||\n !isSafeInteger(data.startedAt) ||\n !isSafeInteger(data.updatedAt) ||\n !isSafeInteger(data.durationMs) ||\n !isPhase(data.activePhase) ||\n data.updatedAt < data.startedAt ||\n data.durationMs !== data.updatedAt - data.startedAt ||\n !isSafeSegments(data.reasoning, MAX_A2A_ACTIVITY_REASONING_CHARS) ||\n !isSafeToolCalls(data.toolCalls) ||\n (data.response !== undefined &&\n !isSafeSegments(data.response, MAX_A2A_ACTIVITY_RESPONSE_CHARS)) ||\n (data.responseText !== undefined &&\n !isSafeText(data.responseText, MAX_A2A_ACTIVITY_RESPONSE_CHARS)) ||\n activityCharacterCount(data) > MAX_A2A_ACTIVITY_TOTAL_CHARS\n ) {\n return null;\n }\n\n return data as unknown as A2AAgentActivitySnapshot;\n}\n\nfunction toolFromEvent(\n event: Extract<AgentChatEvent, { type: \"tool_start\" | \"tool_done\" }>,\n): A2AAgentActivityToolCall {\n const id = sanitizeToolId(event.id);\n return {\n name: sanitizeToolName(event.tool),\n ...(id ? { id } : {}),\n status:\n event.type === \"tool_start\"\n ? \"running\"\n : event.isError\n ? \"failed\"\n : \"completed\",\n };\n}\n\nfunction appendBoundedSegment(\n current: string[],\n addition: string,\n maxChars: number,\n precedingToolCount: number,\n): string[] {\n const used = current.reduce((total, text) => total + text.length, 0);\n if (\n used >= maxChars ||\n current.length >= MAX_A2A_ACTIVITY_REASONING_SEGMENTS\n ) {\n return current;\n }\n const text = sanitizeText(addition, maxChars - used);\n if (!text) return current;\n const next = [...current];\n while (\n next.length < precedingToolCount &&\n next.length < MAX_A2A_ACTIVITY_REASONING_SEGMENTS\n ) {\n next.push(\"\");\n }\n if (next.length === precedingToolCount) {\n return [...next, text];\n }\n next[precedingToolCount] = `${next[precedingToolCount] ?? \"\"}${text}`;\n return next;\n}\n\nfunction appendToolCall(\n current: A2AAgentActivityToolCall[],\n tool: A2AAgentActivityToolCall,\n): A2AAgentActivityToolCall[] {\n return current.length < MAX_A2A_ACTIVITY_TOOL_CALLS\n ? [...current, tool]\n : current;\n}\n\nfunction settleToolCall(\n current: A2AAgentActivityToolCall[],\n tool: A2AAgentActivityToolCall,\n): A2AAgentActivityToolCall[] {\n for (let index = current.length - 1; index >= 0; index -= 1) {\n const existing = current[index];\n if (\n (tool.id && tool.id === existing.id) ||\n (!tool.id && tool.name === existing.name)\n ) {\n return current.map((value, itemIndex) =>\n itemIndex === index ? tool : value,\n );\n }\n }\n return appendToolCall(current, tool);\n}\n\nfunction sanitizeText(value: string, maxChars: number): string {\n return sanitizeToolErrorText(value)\n .replace(/\\r\\n?/g, \"\\n\")\n .replace(/[\\u0000-\\u0008\\u000b\\u000c\\u000e-\\u001f\\u007f]/g, \"\")\n .slice(0, maxChars);\n}\n\nfunction sanitizeToolName(value: string): string {\n return sanitizeText(value, MAX_A2A_ACTIVITY_TOOL_NAME_CHARS) || \"tool\";\n}\n\nfunction sanitizeToolId(value: string | undefined): string | undefined {\n const sanitized = value\n ? sanitizeText(value, MAX_A2A_ACTIVITY_TOOL_ID_CHARS)\n : \"\";\n return sanitized || undefined;\n}\n\nfunction normalizeTimestamp(value: number): number {\n return isSafeInteger(value) ? value : Date.now();\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isSafeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n\nfunction isPhase(value: unknown): value is A2AAgentActivityPhase {\n return [\"reasoning\", \"tool\", \"responding\", \"complete\", \"error\"].includes(\n value as string,\n );\n}\n\nfunction isSafeSegments(value: unknown, maxChars: number): value is string[] {\n return (\n Array.isArray(value) &&\n value.length <= MAX_A2A_ACTIVITY_REASONING_SEGMENTS &&\n value.reduce(\n (total, text) =>\n total + (typeof text === \"string\" ? text.length : Infinity),\n 0,\n ) <= maxChars &&\n value.every((text) => isSafeText(text, maxChars))\n );\n}\n\nfunction isSafeToolCalls(value: unknown): value is A2AAgentActivityToolCall[] {\n return (\n Array.isArray(value) &&\n value.length <= MAX_A2A_ACTIVITY_TOOL_CALLS &&\n value.every(isSafeToolCall)\n );\n}\n\nfunction isSafeToolCall(value: unknown): value is A2AAgentActivityToolCall {\n if (!isRecord(value) || !isSafeToolName(value.name)) return false;\n return (\n (value.id === undefined || isSafeToolId(value.id)) &&\n (value.status === \"running\" ||\n value.status === \"completed\" ||\n value.status === \"failed\")\n );\n}\n\nfunction isSafeText(value: unknown, maxChars: number): value is string {\n return (\n typeof value === \"string\" &&\n value.length <= maxChars &&\n value === sanitizeText(value, maxChars)\n );\n}\n\nfunction isSafeToolName(value: unknown): value is string {\n return (\n typeof value === \"string\" &&\n value.length <= MAX_A2A_ACTIVITY_TOOL_NAME_CHARS &&\n value === sanitizeToolName(value)\n );\n}\n\nfunction isSafeToolId(value: unknown): value is string {\n return (\n typeof value === \"string\" &&\n value.length <= MAX_A2A_ACTIVITY_TOOL_ID_CHARS &&\n value === sanitizeToolId(value)\n );\n}\n\nfunction activityCharacterCount(data: Record<string, unknown>): number {\n const reasoning = segmentCharacterCount(data.reasoning);\n // `responseText` duplicates the tail of `response`; counting both would\n // reject a snapshot that is within budget.\n const response = Array.isArray(data.response)\n ? segmentCharacterCount(data.response)\n : typeof data.responseText === \"string\"\n ? data.responseText.length\n : 0;\n const tools = Array.isArray(data.toolCalls)\n ? data.toolCalls.reduce((total, tool) => {\n if (!isRecord(tool)) return total;\n return (\n total +\n (typeof tool.name === \"string\" ? tool.name.length : 0) +\n (typeof tool.id === \"string\" ? tool.id.length : 0)\n );\n }, 0)\n : 0;\n return reasoning + response + tools;\n}\n\nfunction segmentCharacterCount(value: unknown): number {\n return Array.isArray(value)\n ? value.reduce(\n (total, text) => total + (typeof text === \"string\" ? text.length : 0),\n 0,\n )\n : 0;\n}\n"]}
@@ -15,6 +15,7 @@
15
15
  import type { AgentEngine, EngineCapabilities } from "./types.js";
16
16
  export declare const BUILDER_CAPABILITIES: EngineCapabilities;
17
17
  export declare const BUILDER_SUPPORTED_MODELS: readonly ["auto", string, "gpt-5-6-terra", "gpt-5-6-sol", "claude-haiku-4-5", "claude-sonnet-4-6" | "claude-sonnet-5", "claude-opus-4-8", "gemini-3-5-flash", "gemini-3-1-pro"];
18
+ export declare const BUILDER_MODEL_UNAUTHORIZED_ERROR_CODE = "builder_model_unauthorized";
18
19
  export declare const BUILDER_DEFAULT_MODEL: string;
19
20
  export declare function createBuilderEngine(_config?: Record<string, unknown>): AgentEngine;
20
21
  //# sourceMappingURL=builder-engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder-engine.d.ts","sourceRoot":"","sources":["../../../src/agent/engine/builder-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA2BH,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAInB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,oBAAoB,EAAE,kBAMlC,CAAC;AAEF,eAAO,MAAM,wBAAwB,iLAAuC,CAAC;AAkB7E,eAAO,MAAM,qBAAqB,QAAoC,CAAC;AA6vBvE,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,WAAW,CAEb"}
1
+ {"version":3,"file":"builder-engine.d.ts","sourceRoot":"","sources":["../../../src/agent/engine/builder-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA2BH,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAInB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,oBAAoB,EAAE,kBAMlC,CAAC;AAEF,eAAO,MAAM,wBAAwB,iLAAuC,CAAC;AAiB7E,eAAO,MAAM,qCAAqC,+BACpB,CAAC;AAE/B,eAAO,MAAM,qBAAqB,QAAoC,CAAC;AAuwBvE,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,WAAW,CAEb"}