@agent-native/core 0.131.4 → 0.131.6

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 (330) hide show
  1. package/corpus/README.md +3 -3
  2. package/corpus/core/CHANGELOG.md +69 -0
  3. package/corpus/core/docs/content/agent-native-toolkit.mdx +13 -6
  4. package/corpus/core/docs/content/cloneable-saas.mdx +5 -5
  5. package/corpus/core/docs/content/creating-templates.mdx +9 -0
  6. package/corpus/core/docs/content/deployment.mdx +14 -10
  7. package/corpus/core/docs/content/docs-components.mdx +491 -0
  8. package/corpus/core/docs/content/doctor.mdx +8 -1
  9. package/corpus/core/docs/content/drop-in-agent.mdx +1 -1
  10. package/corpus/core/docs/content/extensions.mdx +18 -18
  11. package/corpus/core/docs/content/faq.mdx +4 -4
  12. package/corpus/core/docs/content/key-concepts.mdx +30 -21
  13. package/corpus/core/docs/content/template-brain-developers.mdx +4 -1
  14. package/corpus/core/docs/content/template-mail-developers.mdx +4 -1
  15. package/corpus/core/docs/content/what-is-agent-native.mdx +6 -6
  16. package/corpus/core/package.json +1 -1
  17. package/corpus/core/src/a2a/client.ts +449 -66
  18. package/corpus/core/src/a2a/correlation.ts +31 -0
  19. package/corpus/core/src/a2a/types.ts +4 -0
  20. package/corpus/core/src/action.ts +3 -0
  21. package/corpus/core/src/agent/engine/registry.ts +45 -5
  22. package/corpus/core/src/agent/production-agent.ts +151 -18
  23. package/corpus/core/src/agent/run-loop-with-resume.ts +190 -3
  24. package/corpus/core/src/agent/run-manager.ts +117 -41
  25. package/corpus/core/src/agent/thread-debug-history.ts +86 -0
  26. package/corpus/core/src/agent/types.ts +3 -1
  27. package/corpus/core/src/cli/create.ts +11 -1
  28. package/corpus/core/src/cli/templates-meta.ts +2 -2
  29. package/corpus/core/src/client/agent-chat-adapter.ts +91 -13
  30. package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +11 -9
  31. package/corpus/core/src/client/sse-event-processor.ts +17 -3
  32. package/corpus/core/src/db/client.ts +57 -17
  33. package/corpus/core/src/integrations/adapters/slack.ts +8 -3
  34. package/corpus/core/src/localization/default-messages.ts +44 -0
  35. package/corpus/core/src/observability/traces.ts +78 -5
  36. package/corpus/core/src/scripts/call-agent.ts +290 -9
  37. package/corpus/core/src/scripts/describe-workspace-apps.ts +2 -2
  38. package/corpus/core/src/secrets/crypto.ts +126 -34
  39. package/corpus/core/src/secrets/storage.ts +61 -25
  40. package/corpus/core/src/server/agent-capabilities.ts +1 -1
  41. package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +111 -7
  42. package/corpus/core/src/server/agent-chat/context-tools.ts +2 -0
  43. package/corpus/core/src/server/agent-chat/plugin-options.ts +34 -1
  44. package/corpus/core/src/server/agent-chat/prompt-resources.ts +1 -1
  45. package/corpus/core/src/server/agent-chat-plugin.ts +91 -59
  46. package/corpus/core/src/templates/default/.agents/skills/secrets/SKILL.md +14 -7
  47. package/corpus/core/src/templates/headless/.agents/skills/secrets/SKILL.md +14 -7
  48. package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +18 -7
  49. package/corpus/core/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +15 -14
  50. package/corpus/core/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +14 -7
  51. package/corpus/core/src/vite/client.ts +1 -0
  52. package/corpus/templates/analytics/.agents/skills/dashboard-ops/SKILL.md +5 -4
  53. package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +6 -4
  54. package/corpus/templates/analytics/AGENTS.md +6 -4
  55. package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +4 -3
  56. package/corpus/templates/analytics/changelog/2026-07-30-scheduled-dashboard-emails-complete-every-panel-without-pool.md +6 -0
  57. package/corpus/templates/analytics/scripts/emit-netlify-dashboard-report-cron.ts +28 -1
  58. package/corpus/templates/analytics/server/jobs/dashboard-report.ts +18 -11
  59. package/corpus/templates/analytics/server/lib/analytics-connector-catalog.ts +4 -4
  60. package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +9 -5
  61. package/corpus/templates/analytics/server/lib/dashboard-panel-query.ts +6 -2
  62. package/corpus/templates/analytics/server/lib/dashboard-panel-source-resolver.ts +11 -4
  63. package/corpus/templates/analytics/server/lib/dashboard-report-render.ts +49 -31
  64. package/corpus/templates/analytics/server/lib/first-party-analytics.ts +16 -8
  65. package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +9 -3
  66. package/corpus/templates/analytics/server/lib/production-serverless-runtime.ts +11 -0
  67. package/corpus/templates/analytics/server/plugins/agent-chat.ts +3 -2
  68. package/corpus/templates/analytics/server/plugins/analytics-alert-jobs.ts +2 -1
  69. package/corpus/templates/analytics/server/plugins/dashboard-report-jobs.ts +2 -1
  70. package/corpus/templates/analytics/server/plugins/uptime-monitor-jobs.ts +1 -12
  71. package/corpus/templates/brain/.agents/skills/brain/RUNBOOK.md +54 -6
  72. package/corpus/templates/brain/.agents/skills/brain/SKILL.md +20 -9
  73. package/corpus/templates/brain/.agents/skills/ingestion-and-connectors/SKILL.md +33 -1
  74. package/corpus/templates/brain/AGENTS.md +3 -1
  75. package/corpus/templates/brain/README.md +4 -1
  76. package/corpus/templates/brain/actions/_schemas.ts +30 -8
  77. package/corpus/templates/brain/actions/ask-brain.ts +124 -14
  78. package/corpus/templates/brain/actions/create-source.ts +18 -2
  79. package/corpus/templates/brain/actions/enqueue-captures-distillation.ts +8 -123
  80. package/corpus/templates/brain/actions/enqueue-distillation.ts +6 -127
  81. package/corpus/templates/brain/actions/import-capture.ts +17 -5
  82. package/corpus/templates/brain/actions/import-transcript.ts +17 -5
  83. package/corpus/templates/brain/actions/update-source.ts +25 -5
  84. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +1 -1
  85. package/corpus/templates/brain/changelog/2026-07-30-blessed-resources-can-feed-cited-company-answers.md +6 -0
  86. package/corpus/templates/brain/changelog/2026-07-30-the-left-sidebar-no-longer-shows-a-blank-organization-placeh.md +6 -0
  87. package/corpus/templates/brain/server/lib/brain.ts +49 -19
  88. package/corpus/templates/brain/server/lib/distillation-queue.ts +147 -0
  89. package/corpus/templates/brain/server/lib/source-policy.ts +264 -0
  90. package/corpus/templates/brain/server/plugins/agent-chat.ts +3 -2
  91. package/corpus/templates/brain/server/routes/api/_agent-native/brain/ingest.post.ts +116 -19
  92. package/corpus/templates/clips/app/components/meetings/google-oauth-identity-notice.tsx +51 -0
  93. package/corpus/templates/clips/app/i18n/en-US.ts +4 -0
  94. package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +3 -1
  95. package/corpus/templates/clips/changelog/2026-07-30-google-calendar-warning.md +6 -0
  96. package/corpus/templates/content/.agents/skills/content-product-development/SKILL.md +47 -0
  97. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +72 -8
  98. package/corpus/templates/content/changelog/2026-07-30-the-slash-command-hint-now-stays-on-only-the-active-empty-li.md +6 -0
  99. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +506 -11
  100. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +148 -17
  101. package/corpus/templates/design/app/components/design/canvas-interactions/design-canvas-interactions.ts +357 -0
  102. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +7 -466
  103. package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +15 -311
  104. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +19 -997
  105. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +8 -1216
  106. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +31 -38
  107. package/corpus/templates/design/package.json +0 -1
  108. package/corpus/templates/dispatch/AGENTS.md +8 -0
  109. package/corpus/templates/dispatch/DEVELOPING.md +29 -0
  110. package/corpus/templates/dispatch/actions/view-screen.ts +34 -2
  111. package/corpus/templates/dispatch/app/i18n-data.ts +457 -0
  112. package/corpus/templates/dispatch/changelog/2026-07-30-delegated-dispatch-work-continues-reliably-in-the-background.md +6 -0
  113. package/corpus/templates/dispatch/changelog/2026-07-30-find-failed-runs-across-apps.md +6 -0
  114. package/corpus/templates/dispatch/netlify.toml +3 -0
  115. package/corpus/templates/slides/.agents/skills/analytics-data-for-decks/SKILL.md +8 -12
  116. package/corpus/templates/slides/AGENTS.md +4 -4
  117. package/corpus/templates/slides/actions/duplicate-deck.ts +19 -4
  118. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +2 -10
  119. package/corpus/templates/slides/app/components/deck/MermaidRenderer.tsx +12 -1
  120. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +30 -13
  121. package/corpus/templates/slides/app/components/editor/DeckEditorSkeleton.tsx +35 -0
  122. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +63 -56
  123. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +21 -76
  124. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +1110 -292
  125. package/corpus/templates/slides/app/components/editor/SlideOverflowWarning.tsx +53 -0
  126. package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +235 -18
  127. package/corpus/templates/slides/app/components/editor/SpeakerNotesPanel.tsx +4 -1
  128. package/corpus/templates/slides/app/components/editor/canvas-interactions/index.ts +11 -0
  129. package/corpus/templates/slides/app/components/editor/canvas-interactions/slides-canvas-adapter.ts +129 -0
  130. package/corpus/templates/slides/app/components/editor/selection-overlay-measurement.ts +70 -0
  131. package/corpus/templates/slides/app/components/editor/slide-object-interactions.ts +519 -65
  132. package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +36 -426
  133. package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +19 -458
  134. package/corpus/templates/slides/app/context/DeckContext.tsx +179 -72
  135. package/corpus/templates/slides/app/global.css +105 -0
  136. package/corpus/templates/slides/app/i18n/en-US.ts +8 -0
  137. package/corpus/templates/slides/app/lib/deck-editor-loading.ts +26 -0
  138. package/corpus/templates/slides/app/lib/mermaid-blocks.ts +27 -0
  139. package/corpus/templates/slides/app/pages/DeckEditor.tsx +71 -38
  140. package/corpus/templates/slides/app/pages/Index.tsx +98 -41
  141. package/corpus/templates/slides/changelog/2026-07-30-deck-loading-no-longer-flashes-an-unavailable-message.md +6 -0
  142. package/corpus/templates/slides/changelog/2026-07-30-duplicating-a-deck-from-the-deck-list-now-opens-the-copy-imm.md +6 -0
  143. package/corpus/templates/slides/changelog/2026-07-30-layout-overflow-warning-is-readable-and-dismissible.md +6 -0
  144. package/corpus/templates/slides/changelog/2026-07-30-shared-canvas-annotations.md +6 -0
  145. package/corpus/templates/slides/changelog/2026-07-30-slide-objects-can-be-moved-as-a-group-copied-and-pasted-with.md +6 -0
  146. package/corpus/templates/slides/changelog/2026-07-30-slide-text-editing-and-object-controls-now-match-google-slides.md +6 -0
  147. package/corpus/templates/slides/changelog/2026-07-30-style-panel-now-scrolls-with-speaker-notes-open-shows-the-sl.md +6 -0
  148. package/corpus/templates/slides/changelog/2026-07-30-top-toolbar-controls-now-use-consistent-sizing-with-undo-and.md +6 -0
  149. package/corpus/templates/slides/netlify.toml +3 -1
  150. package/corpus/templates/slides/package.json +0 -1
  151. package/corpus/templates/slides/server/lib/chat-attachments.ts +18 -0
  152. package/corpus/templates/slides/server/plugins/agent-chat.ts +5 -0
  153. package/corpus/templates/slides/vite.config.ts +0 -1
  154. package/corpus/toolkit/CHANGELOG.md +13 -0
  155. package/corpus/toolkit/README.md +19 -0
  156. package/corpus/toolkit/agent-native.eject.json +38 -0
  157. package/corpus/toolkit/package.json +29 -1
  158. package/corpus/toolkit/src/canvas-annotations/CanvasCommentPins.tsx +861 -0
  159. package/corpus/toolkit/src/canvas-annotations/DrawOverlay.tsx +1233 -0
  160. package/corpus/toolkit/src/canvas-annotations/index.ts +15 -0
  161. package/corpus/toolkit/src/canvas-annotations/types.ts +14 -0
  162. package/corpus/toolkit/src/canvas-interactions/canvas-interactions.ts +933 -0
  163. package/corpus/toolkit/src/canvas-interactions/index.ts +67 -0
  164. package/corpus/toolkit/src/design-tweaks/scrub-input-utils.ts +311 -0
  165. package/corpus/toolkit/src/design-tweaks/scrub-input.tsx +491 -0
  166. package/corpus/toolkit/src/design-tweaks/visual-style-controls.tsx +26 -171
  167. package/corpus/toolkit/src/index.ts +1 -0
  168. package/dist/a2a/client.d.ts +23 -0
  169. package/dist/a2a/client.d.ts.map +1 -1
  170. package/dist/a2a/client.js +309 -44
  171. package/dist/a2a/client.js.map +1 -1
  172. package/dist/a2a/correlation.d.ts +1 -0
  173. package/dist/a2a/correlation.d.ts.map +1 -1
  174. package/dist/a2a/correlation.js +27 -0
  175. package/dist/a2a/correlation.js.map +1 -1
  176. package/dist/a2a/types.d.ts +4 -0
  177. package/dist/a2a/types.d.ts.map +1 -1
  178. package/dist/a2a/types.js.map +1 -1
  179. package/dist/action.d.ts +3 -0
  180. package/dist/action.d.ts.map +1 -1
  181. package/dist/action.js.map +1 -1
  182. package/dist/agent/engine/registry.d.ts.map +1 -1
  183. package/dist/agent/engine/registry.js +34 -7
  184. package/dist/agent/engine/registry.js.map +1 -1
  185. package/dist/agent/production-agent.d.ts +40 -1
  186. package/dist/agent/production-agent.d.ts.map +1 -1
  187. package/dist/agent/production-agent.js +113 -15
  188. package/dist/agent/production-agent.js.map +1 -1
  189. package/dist/agent/run-loop-with-resume.d.ts +21 -0
  190. package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
  191. package/dist/agent/run-loop-with-resume.js +163 -4
  192. package/dist/agent/run-loop-with-resume.js.map +1 -1
  193. package/dist/agent/run-manager.d.ts +16 -9
  194. package/dist/agent/run-manager.d.ts.map +1 -1
  195. package/dist/agent/run-manager.js +93 -42
  196. package/dist/agent/run-manager.js.map +1 -1
  197. package/dist/agent/thread-debug-history.d.ts +10 -0
  198. package/dist/agent/thread-debug-history.d.ts.map +1 -0
  199. package/dist/agent/thread-debug-history.js +68 -0
  200. package/dist/agent/thread-debug-history.js.map +1 -0
  201. package/dist/agent/types.d.ts +3 -1
  202. package/dist/agent/types.d.ts.map +1 -1
  203. package/dist/agent/types.js.map +1 -1
  204. package/dist/cli/create.d.ts.map +1 -1
  205. package/dist/cli/create.js +6 -1
  206. package/dist/cli/create.js.map +1 -1
  207. package/dist/cli/templates-meta.js +2 -2
  208. package/dist/cli/templates-meta.js.map +1 -1
  209. package/dist/client/agent-chat-adapter.d.ts +1 -1
  210. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  211. package/dist/client/agent-chat-adapter.js +76 -13
  212. package/dist/client/agent-chat-adapter.js.map +1 -1
  213. package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
  214. package/dist/client/resources/McpIntegrationDialog.js +1 -1
  215. package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
  216. package/dist/client/sse-event-processor.d.ts.map +1 -1
  217. package/dist/client/sse-event-processor.js +12 -3
  218. package/dist/client/sse-event-processor.js.map +1 -1
  219. package/dist/collab/awareness.d.ts +2 -2
  220. package/dist/collab/awareness.d.ts.map +1 -1
  221. package/dist/db/client.d.ts.map +1 -1
  222. package/dist/db/client.js +48 -17
  223. package/dist/db/client.js.map +1 -1
  224. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  225. package/dist/integrations/adapters/slack.js +7 -3
  226. package/dist/integrations/adapters/slack.js.map +1 -1
  227. package/dist/localization/default-messages.d.ts +43 -0
  228. package/dist/localization/default-messages.d.ts.map +1 -1
  229. package/dist/localization/default-messages.js +43 -0
  230. package/dist/localization/default-messages.js.map +1 -1
  231. package/dist/notifications/routes.d.ts +2 -2
  232. package/dist/observability/traces.d.ts +3 -1
  233. package/dist/observability/traces.d.ts.map +1 -1
  234. package/dist/observability/traces.js +73 -4
  235. package/dist/observability/traces.js.map +1 -1
  236. package/dist/progress/routes.d.ts +1 -1
  237. package/dist/provider-api/actions/custom-provider-registration.d.ts +12 -12
  238. package/dist/provider-api/actions/provider-api.d.ts +13 -13
  239. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  240. package/dist/resources/handlers.d.ts +1 -1
  241. package/dist/scripts/call-agent.d.ts.map +1 -1
  242. package/dist/scripts/call-agent.js +233 -10
  243. package/dist/scripts/call-agent.js.map +1 -1
  244. package/dist/scripts/describe-workspace-apps.js +2 -2
  245. package/dist/scripts/describe-workspace-apps.js.map +1 -1
  246. package/dist/secrets/crypto.d.ts +31 -21
  247. package/dist/secrets/crypto.d.ts.map +1 -1
  248. package/dist/secrets/crypto.js +108 -33
  249. package/dist/secrets/crypto.js.map +1 -1
  250. package/dist/secrets/storage.d.ts +3 -5
  251. package/dist/secrets/storage.d.ts.map +1 -1
  252. package/dist/secrets/storage.js +40 -25
  253. package/dist/secrets/storage.js.map +1 -1
  254. package/dist/server/agent-capabilities.js +1 -1
  255. package/dist/server/agent-capabilities.js.map +1 -1
  256. package/dist/server/agent-chat/action-filters-a2a.d.ts +17 -3
  257. package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -1
  258. package/dist/server/agent-chat/action-filters-a2a.js +92 -3
  259. package/dist/server/agent-chat/action-filters-a2a.js.map +1 -1
  260. package/dist/server/agent-chat/context-tools.d.ts.map +1 -1
  261. package/dist/server/agent-chat/context-tools.js +2 -0
  262. package/dist/server/agent-chat/context-tools.js.map +1 -1
  263. package/dist/server/agent-chat/plugin-options.d.ts +23 -0
  264. package/dist/server/agent-chat/plugin-options.d.ts.map +1 -1
  265. package/dist/server/agent-chat/plugin-options.js +4 -1
  266. package/dist/server/agent-chat/plugin-options.js.map +1 -1
  267. package/dist/server/agent-chat/prompt-resources.js +1 -1
  268. package/dist/server/agent-chat/prompt-resources.js.map +1 -1
  269. package/dist/server/agent-chat-plugin.d.ts +2 -1
  270. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  271. package/dist/server/agent-chat-plugin.js +79 -56
  272. package/dist/server/agent-chat-plugin.js.map +1 -1
  273. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  274. package/dist/templates/default/.agents/skills/secrets/SKILL.md +14 -7
  275. package/dist/templates/headless/.agents/skills/secrets/SKILL.md +14 -7
  276. package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +18 -7
  277. package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +15 -14
  278. package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +14 -7
  279. package/dist/vite/client.d.ts.map +1 -1
  280. package/dist/vite/client.js +1 -0
  281. package/dist/vite/client.js.map +1 -1
  282. package/docs/content/agent-native-toolkit.mdx +13 -6
  283. package/docs/content/cloneable-saas.mdx +5 -5
  284. package/docs/content/creating-templates.mdx +9 -0
  285. package/docs/content/deployment.mdx +14 -10
  286. package/docs/content/docs-components.mdx +491 -0
  287. package/docs/content/doctor.mdx +8 -1
  288. package/docs/content/drop-in-agent.mdx +1 -1
  289. package/docs/content/extensions.mdx +18 -18
  290. package/docs/content/faq.mdx +4 -4
  291. package/docs/content/key-concepts.mdx +30 -21
  292. package/docs/content/template-brain-developers.mdx +4 -1
  293. package/docs/content/template-mail-developers.mdx +4 -1
  294. package/docs/content/what-is-agent-native.mdx +6 -6
  295. package/package.json +2 -2
  296. package/src/a2a/client.ts +449 -66
  297. package/src/a2a/correlation.ts +31 -0
  298. package/src/a2a/types.ts +4 -0
  299. package/src/action.ts +3 -0
  300. package/src/agent/engine/registry.ts +45 -5
  301. package/src/agent/production-agent.ts +151 -18
  302. package/src/agent/run-loop-with-resume.ts +190 -3
  303. package/src/agent/run-manager.ts +117 -41
  304. package/src/agent/thread-debug-history.ts +86 -0
  305. package/src/agent/types.ts +3 -1
  306. package/src/cli/create.ts +11 -1
  307. package/src/cli/templates-meta.ts +2 -2
  308. package/src/client/agent-chat-adapter.ts +91 -13
  309. package/src/client/resources/McpIntegrationDialog.tsx +11 -9
  310. package/src/client/sse-event-processor.ts +17 -3
  311. package/src/db/client.ts +57 -17
  312. package/src/integrations/adapters/slack.ts +8 -3
  313. package/src/localization/default-messages.ts +44 -0
  314. package/src/observability/traces.ts +78 -5
  315. package/src/scripts/call-agent.ts +290 -9
  316. package/src/scripts/describe-workspace-apps.ts +2 -2
  317. package/src/secrets/crypto.ts +126 -34
  318. package/src/secrets/storage.ts +61 -25
  319. package/src/server/agent-capabilities.ts +1 -1
  320. package/src/server/agent-chat/action-filters-a2a.ts +111 -7
  321. package/src/server/agent-chat/context-tools.ts +2 -0
  322. package/src/server/agent-chat/plugin-options.ts +34 -1
  323. package/src/server/agent-chat/prompt-resources.ts +1 -1
  324. package/src/server/agent-chat-plugin.ts +91 -59
  325. package/src/templates/default/.agents/skills/secrets/SKILL.md +14 -7
  326. package/src/templates/headless/.agents/skills/secrets/SKILL.md +14 -7
  327. package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +18 -7
  328. package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +15 -14
  329. package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +14 -7
  330. package/src/vite/client.ts +1 -0
@@ -64,15 +64,6 @@ export const BACKGROUND_SOFT_TIMEOUT_CEILING_MS = 13 * 60_000; // 780_000
64
64
  * off to a chained background continuation.
65
65
  */
66
66
  export const DEFAULT_BACKGROUND_RUN_SOFT_TIMEOUT_MS = BACKGROUND_SOFT_TIMEOUT_CEILING_MS;
67
- /**
68
- * Default no-progress window for a run executing inside a proven durable
69
- * background function. Keep this below the 13-minute soft timeout so a truly
70
- * wedged background turn can still checkpoint, persist, and continue before
71
- * the function budget expires, but far above the foreground 150s window so
72
- * large Design/Plan/Assets generations are not chopped up while the model is
73
- * legitimately planning a big tool payload.
74
- */
75
- export const DEFAULT_BACKGROUND_NO_PROGRESS_TIMEOUT_MS = BACKGROUND_SOFT_TIMEOUT_CEILING_MS - 60_000;
76
67
  /**
77
68
  * AUTHORITATIVE no-progress backstop for a run, enforced by the run manager
78
69
  * itself (timer-driven, independent of any layer below).
@@ -101,6 +92,15 @@ export const DEFAULT_BACKGROUND_NO_PROGRESS_TIMEOUT_MS = BACKGROUND_SOFT_TIMEOUT
101
92
  * runs); local dev stays unbounded.
102
93
  */
103
94
  export const RUN_NO_PROGRESS_HARD_TIMEOUT_MS = 150_000;
95
+ /**
96
+ * Default no-progress window for a run executing inside a proven durable
97
+ * background function. A background worker that is heartbeating but has no
98
+ * real progress and no tool/A2A work in flight is still wedged; letting that
99
+ * state outlive the client's follow budget only turns a recoverable stall into
100
+ * a terminal timeout. In-flight work suspends this backstop, so use the same
101
+ * server-owned 150s bound as the long foreground regime.
102
+ */
103
+ export const DEFAULT_BACKGROUND_NO_PROGRESS_TIMEOUT_MS = RUN_NO_PROGRESS_HARD_TIMEOUT_MS;
104
104
  /**
105
105
  * Fraction of the soft timeout a foreground no-progress backstop may consume.
106
106
  * The hosted foreground path rides a synchronous serverless function whose
@@ -196,12 +196,23 @@ export const SQL_SUBSCRIPTION_IDLE_POLL_MS = 500;
196
196
  export const SQL_SUBSCRIPTION_ACTIVE_GRACE_MS = 2_000;
197
197
  /** Keep terminal/status probes at the historical cadence to bound DB work. */
198
198
  export const SQL_SUBSCRIPTION_STATUS_POLL_MS = 500;
199
+ /** Initial retry delay after a transient cross-isolate SQL polling failure. */
200
+ export const SQL_SUBSCRIPTION_RETRY_BASE_MS = 250;
201
+ /** Bound consecutive SQL polling failures so a dead subscription fails loud. */
202
+ export const SQL_SUBSCRIPTION_MAX_CONSECUTIVE_FAILURES = 4;
203
+ /** Cap retry delay even if the failure bound changes independently. */
204
+ export const SQL_SUBSCRIPTION_RETRY_MAX_MS = 2_000;
199
205
  export function resolveSqlSubscriptionPollMs(now, activePollUntil) {
200
206
  return now < activePollUntil
201
207
  ? SQL_SUBSCRIPTION_ACTIVE_POLL_MS
202
208
  : SQL_SUBSCRIPTION_IDLE_POLL_MS;
203
209
  }
210
+ export function resolveSqlSubscriptionRetryMs(consecutiveFailures) {
211
+ const retryIndex = Math.max(0, Math.floor(consecutiveFailures) - 1);
212
+ return Math.min(SQL_SUBSCRIPTION_RETRY_MAX_MS, SQL_SUBSCRIPTION_RETRY_BASE_MS * 2 ** retryIndex);
213
+ }
204
214
  const PROVIDER_RATE_LIMITED_ERROR_CODE = "provider_rate_limited";
215
+ const PROVIDER_NETWORK_ERROR_CODE = "provider_network_error";
205
216
  function isPreparingActionActivityEvent(event) {
206
217
  if (event.type !== "activity")
207
218
  return false;
@@ -218,11 +229,21 @@ function getRunErrorMessage(err) {
218
229
  }
219
230
  return "Unknown error";
220
231
  }
221
- function getEngineRunErrorCode(err) {
222
- if (err.errorCode)
223
- return err.errorCode;
224
- if (err.statusCode === 429)
225
- return PROVIDER_RATE_LIMITED_ERROR_CODE;
232
+ function isProviderConnectionErrorMessage(message) {
233
+ const normalized = message.trim().toLowerCase();
234
+ return (normalized === "connection error." ||
235
+ normalized.includes("cannot connect to api:"));
236
+ }
237
+ function getRunErrorCode(err) {
238
+ if (err instanceof EngineError) {
239
+ if (err.errorCode)
240
+ return err.errorCode;
241
+ if (err.statusCode === 429)
242
+ return PROVIDER_RATE_LIMITED_ERROR_CODE;
243
+ }
244
+ if (err instanceof Error && isProviderConnectionErrorMessage(err.message)) {
245
+ return PROVIDER_NETWORK_ERROR_CODE;
246
+ }
226
247
  return undefined;
227
248
  }
228
249
  function getEngineRunErrorDetails(err) {
@@ -231,22 +252,25 @@ function getEngineRunErrorDetails(err) {
231
252
  return undefined;
232
253
  }
233
254
  function shouldCaptureRunError(err) {
234
- if (!(err instanceof EngineError))
235
- return true;
236
- const errorCode = getEngineRunErrorCode(err);
255
+ const errorCode = getRunErrorCode(err);
237
256
  if (isLlmCredentialError(err, errorCode))
238
257
  return false;
239
- if (err.statusCode === 401 || err.statusCode === 403)
258
+ if (err instanceof EngineError &&
259
+ (err.statusCode === 401 || err.statusCode === 403)) {
240
260
  return false;
261
+ }
262
+ if (!(err instanceof Error))
263
+ return true;
241
264
  if (/^40[13] status code\b/i.test(err.message))
242
265
  return false;
243
- if (err.message.trim().toLowerCase() === "connection error.")
266
+ if (isProviderConnectionErrorMessage(err.message))
244
267
  return false;
245
268
  if (!errorCode)
246
269
  return true;
247
270
  const normalizedCode = errorCode.toLowerCase();
248
271
  return (!normalizedCode.startsWith("credits-limit") &&
249
272
  normalizedCode !== "builder_gateway_network_error" &&
273
+ normalizedCode !== PROVIDER_NETWORK_ERROR_CODE &&
250
274
  normalizedCode !== "provider_rate_limited" &&
251
275
  normalizedCode !== "rate_limit_exceeded");
252
276
  }
@@ -792,7 +816,7 @@ export function startRun(runId, threadId, runFn, onComplete, options) {
792
816
  : null;
793
817
  let pendingTerminalEvent = null;
794
818
  const captureRunError = (error, phase) => {
795
- const errorCode = error instanceof EngineError ? getEngineRunErrorCode(error) : undefined;
819
+ const errorCode = getRunErrorCode(error);
796
820
  captureError(error, {
797
821
  route: "/_agent-native/agent-chat",
798
822
  tags: {
@@ -899,7 +923,7 @@ export function startRun(runId, threadId, runFn, onComplete, options) {
899
923
  captureRunError(err, "run");
900
924
  }
901
925
  const errorMessage = getRunErrorMessage(err);
902
- const errorCode = err instanceof EngineError ? getEngineRunErrorCode(err) : undefined;
926
+ const errorCode = getRunErrorCode(err);
903
927
  const details = err instanceof EngineError ? getEngineRunErrorDetails(err) : undefined;
904
928
  send({
905
929
  type: "error",
@@ -1266,6 +1290,7 @@ function subscribeFromSQL(runId, fromSeq) {
1266
1290
  let lastSeq = fromSeq;
1267
1291
  let activePollUntil = 0;
1268
1292
  let lastStatusCheckAt = 0;
1293
+ let consecutivePollFailures = 0;
1269
1294
  const ping = () => {
1270
1295
  try {
1271
1296
  controller.enqueue(encoder.encode(`: ping ${Date.now()}\n\n`));
@@ -1278,6 +1303,45 @@ function subscribeFromSQL(runId, fromSeq) {
1278
1303
  };
1279
1304
  ping();
1280
1305
  pingTimer = setInterval(ping, 10_000);
1306
+ const closeStream = () => {
1307
+ cancelled = true;
1308
+ if (pollTimer)
1309
+ clearTimeout(pollTimer);
1310
+ if (pingTimer)
1311
+ clearInterval(pingTimer);
1312
+ try {
1313
+ controller.close();
1314
+ }
1315
+ catch { }
1316
+ };
1317
+ const failSubscription = (error) => {
1318
+ const event = {
1319
+ type: "error",
1320
+ error: "The live agent connection could not load persisted run progress.",
1321
+ errorCode: "run_subscription_poll_failed",
1322
+ details: "The agent may still be running. Reconnect to resume from the last persisted event.",
1323
+ recoverable: true,
1324
+ };
1325
+ captureError(error, {
1326
+ route: "/_agent-native/agent-chat/runs/:id/events",
1327
+ tags: {
1328
+ source: "agent-run-manager",
1329
+ phase: "sql-subscription-poll",
1330
+ consecutiveFailures: String(consecutivePollFailures),
1331
+ },
1332
+ extra: {
1333
+ runId,
1334
+ fromSeq,
1335
+ lastSeq,
1336
+ error: getRunErrorMessage(error),
1337
+ },
1338
+ });
1339
+ try {
1340
+ controller.enqueue(encoder.encode(`data: ${JSON.stringify({ ...event, seq: lastSeq })}\n\n`));
1341
+ }
1342
+ catch { }
1343
+ closeStream();
1344
+ };
1281
1345
  const poll = async () => {
1282
1346
  if (cancelled)
1283
1347
  return;
@@ -1320,6 +1384,7 @@ function subscribeFromSQL(runId, fromSeq) {
1320
1384
  const now = Date.now();
1321
1385
  if (now - lastStatusCheckAt < SQL_SUBSCRIPTION_STATUS_POLL_MS) {
1322
1386
  if (!cancelled) {
1387
+ consecutivePollFailures = 0;
1323
1388
  const pollMs = resolveSqlSubscriptionPollMs(now, activePollUntil);
1324
1389
  pollTimer = setTimeout(poll, pollMs);
1325
1390
  }
@@ -1443,34 +1508,20 @@ function subscribeFromSQL(runId, fromSeq) {
1443
1508
  }
1444
1509
  // Schedule next poll
1445
1510
  if (!cancelled) {
1511
+ consecutivePollFailures = 0;
1446
1512
  const pollMs = resolveSqlSubscriptionPollMs(Date.now(), activePollUntil);
1447
1513
  pollTimer = setTimeout(poll, pollMs);
1448
1514
  }
1449
1515
  }
1450
- catch {
1451
- // SQL error — close stream
1452
- try {
1453
- if (pingTimer)
1454
- clearInterval(pingTimer);
1455
- controller.close();
1516
+ catch (error) {
1517
+ consecutivePollFailures += 1;
1518
+ if (consecutivePollFailures >= SQL_SUBSCRIPTION_MAX_CONSECUTIVE_FAILURES) {
1519
+ failSubscription(error);
1520
+ return;
1456
1521
  }
1457
- catch { }
1522
+ pollTimer = setTimeout(poll, resolveSqlSubscriptionRetryMs(consecutivePollFailures));
1458
1523
  }
1459
1524
  };
1460
- // Verify run exists before starting poll
1461
- try {
1462
- const run = await getRunById(runId);
1463
- if (!run) {
1464
- if (pingTimer)
1465
- clearInterval(pingTimer);
1466
- controller.close();
1467
- return;
1468
- }
1469
- }
1470
- catch {
1471
- controller.close();
1472
- return;
1473
- }
1474
1525
  await poll();
1475
1526
  },
1476
1527
  cancel() {