@agent-native/core 0.131.5 → 0.131.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/corpus/README.md +3 -3
  2. package/corpus/core/CHANGELOG.md +70 -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 +18 -12
  7. package/corpus/core/docs/content/doctor.mdx +8 -1
  8. package/corpus/core/docs/content/drop-in-agent.mdx +1 -1
  9. package/corpus/core/docs/content/extensions.mdx +18 -18
  10. package/corpus/core/docs/content/faq.mdx +4 -4
  11. package/corpus/core/docs/content/key-concepts.mdx +30 -21
  12. package/corpus/core/docs/content/security.mdx +2 -2
  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/invoke.ts +4 -2
  20. package/corpus/core/src/a2a/types.ts +4 -0
  21. package/corpus/core/src/action.ts +3 -0
  22. package/corpus/core/src/agent/action-continuation-guidance.ts +2 -1
  23. package/corpus/core/src/agent/engine/registry.ts +98 -6
  24. package/corpus/core/src/agent/production-agent.ts +151 -18
  25. package/corpus/core/src/agent/run-loop-with-resume.ts +190 -3
  26. package/corpus/core/src/agent/run-manager.ts +117 -41
  27. package/corpus/core/src/agent/thread-debug-history.ts +86 -0
  28. package/corpus/core/src/agent/types.ts +3 -1
  29. package/corpus/core/src/cli/create.ts +11 -1
  30. package/corpus/core/src/cli/templates-meta.ts +2 -2
  31. package/corpus/core/src/client/agent-chat-adapter.ts +91 -13
  32. package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +11 -9
  33. package/corpus/core/src/client/sse-event-processor.ts +17 -3
  34. package/corpus/core/src/db/client.ts +57 -17
  35. package/corpus/core/src/guards/no-env-credentials.ts +2 -0
  36. package/corpus/core/src/integrations/adapters/slack.ts +8 -3
  37. package/corpus/core/src/localization/default-messages.ts +44 -0
  38. package/corpus/core/src/observability/traces.ts +78 -5
  39. package/corpus/core/src/scripts/call-agent.ts +294 -11
  40. package/corpus/core/src/scripts/describe-workspace-apps.ts +2 -2
  41. package/corpus/core/src/secrets/crypto.ts +156 -35
  42. package/corpus/core/src/secrets/storage.ts +64 -26
  43. package/corpus/core/src/server/agent-capabilities.ts +1 -1
  44. package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +113 -7
  45. package/corpus/core/src/server/agent-chat/context-tools.ts +2 -0
  46. package/corpus/core/src/server/agent-chat/plugin-options.ts +34 -1
  47. package/corpus/core/src/server/agent-chat/prompt-resources.ts +1 -1
  48. package/corpus/core/src/server/agent-chat-plugin.ts +91 -59
  49. package/corpus/core/src/templates/default/.agents/skills/secrets/SKILL.md +19 -7
  50. package/corpus/core/src/templates/headless/.agents/skills/secrets/SKILL.md +19 -7
  51. package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +18 -7
  52. package/corpus/core/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +15 -14
  53. package/corpus/core/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +19 -7
  54. package/corpus/core/src/vite/client.ts +1 -0
  55. package/corpus/templates/analytics/.agents/skills/dashboard-ops/SKILL.md +5 -4
  56. package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +6 -4
  57. package/corpus/templates/analytics/AGENTS.md +7 -4
  58. package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +4 -3
  59. package/corpus/templates/analytics/changelog/2026-07-30-delegated-analytics-questions-now-return-a-useful-current-me.md +6 -0
  60. package/corpus/templates/analytics/changelog/2026-07-30-scheduled-dashboard-emails-complete-every-panel-without-pool.md +6 -0
  61. package/corpus/templates/analytics/scripts/emit-netlify-dashboard-report-cron.ts +28 -1
  62. package/corpus/templates/analytics/server/jobs/dashboard-report.ts +18 -11
  63. package/corpus/templates/analytics/server/lib/analytics-connector-catalog.ts +4 -4
  64. package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +9 -5
  65. package/corpus/templates/analytics/server/lib/dashboard-panel-query.ts +6 -2
  66. package/corpus/templates/analytics/server/lib/dashboard-panel-source-resolver.ts +11 -4
  67. package/corpus/templates/analytics/server/lib/dashboard-report-render.ts +49 -31
  68. package/corpus/templates/analytics/server/lib/first-party-analytics.ts +16 -8
  69. package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +9 -3
  70. package/corpus/templates/analytics/server/lib/production-serverless-runtime.ts +11 -0
  71. package/corpus/templates/analytics/server/lib/real-data-actions.ts +10 -0
  72. package/corpus/templates/analytics/server/plugins/agent-chat.ts +3 -2
  73. package/corpus/templates/analytics/server/plugins/analytics-alert-jobs.ts +2 -1
  74. package/corpus/templates/analytics/server/plugins/dashboard-report-jobs.ts +2 -1
  75. package/corpus/templates/analytics/server/plugins/uptime-monitor-jobs.ts +1 -12
  76. package/corpus/templates/brain/.agents/skills/brain/RUNBOOK.md +54 -6
  77. package/corpus/templates/brain/.agents/skills/brain/SKILL.md +20 -9
  78. package/corpus/templates/brain/.agents/skills/ingestion-and-connectors/SKILL.md +33 -1
  79. package/corpus/templates/brain/AGENTS.md +3 -1
  80. package/corpus/templates/brain/README.md +4 -1
  81. package/corpus/templates/brain/actions/_schemas.ts +30 -8
  82. package/corpus/templates/brain/actions/ask-brain.ts +124 -14
  83. package/corpus/templates/brain/actions/create-source.ts +18 -2
  84. package/corpus/templates/brain/actions/enqueue-captures-distillation.ts +8 -123
  85. package/corpus/templates/brain/actions/enqueue-distillation.ts +6 -127
  86. package/corpus/templates/brain/actions/import-capture.ts +17 -5
  87. package/corpus/templates/brain/actions/import-transcript.ts +17 -5
  88. package/corpus/templates/brain/actions/update-source.ts +25 -5
  89. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +1 -1
  90. package/corpus/templates/brain/changelog/2026-07-30-blessed-resources-can-feed-cited-company-answers.md +6 -0
  91. package/corpus/templates/brain/changelog/2026-07-30-the-left-sidebar-no-longer-shows-a-blank-organization-placeh.md +6 -0
  92. package/corpus/templates/brain/server/lib/brain.ts +49 -19
  93. package/corpus/templates/brain/server/lib/distillation-queue.ts +147 -0
  94. package/corpus/templates/brain/server/lib/source-policy.ts +264 -0
  95. package/corpus/templates/brain/server/plugins/agent-chat.ts +3 -2
  96. package/corpus/templates/brain/server/routes/api/_agent-native/brain/ingest.post.ts +116 -19
  97. package/corpus/templates/clips/app/components/meetings/google-oauth-identity-notice.tsx +51 -0
  98. package/corpus/templates/clips/app/i18n/en-US.ts +4 -0
  99. package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +3 -1
  100. package/corpus/templates/clips/changelog/2026-07-30-google-calendar-warning.md +6 -0
  101. package/corpus/templates/content/app/components/editor/VisualEditor.tsx +72 -8
  102. package/corpus/templates/content/changelog/2026-07-30-the-slash-command-hint-now-stays-on-only-the-active-empty-li.md +6 -0
  103. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +506 -11
  104. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +148 -17
  105. package/corpus/templates/design/app/components/design/canvas-interactions/design-canvas-interactions.ts +357 -0
  106. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +7 -466
  107. package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +15 -311
  108. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +19 -997
  109. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +8 -1216
  110. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +31 -38
  111. package/corpus/templates/design/package.json +0 -1
  112. package/corpus/templates/dispatch/AGENTS.md +8 -0
  113. package/corpus/templates/dispatch/DEVELOPING.md +29 -0
  114. package/corpus/templates/dispatch/actions/view-screen.ts +34 -2
  115. package/corpus/templates/dispatch/app/i18n-data.ts +457 -0
  116. package/corpus/templates/dispatch/changelog/2026-07-30-delegated-dispatch-work-continues-reliably-in-the-background.md +6 -0
  117. package/corpus/templates/dispatch/changelog/2026-07-30-find-failed-runs-across-apps.md +6 -0
  118. package/corpus/templates/dispatch/netlify.toml +3 -0
  119. package/corpus/templates/plan/actions/get-visual-plan.ts +10 -6
  120. package/corpus/templates/plan/actions/patch-visual-plan-source.ts +117 -1
  121. package/corpus/templates/plan/actions/update-visual-plan.ts +56 -14
  122. package/corpus/templates/plan/app/pages/PlansPage.tsx +1 -1
  123. package/corpus/templates/plan/changelog/2026-07-30-plan-agents-recover-with-targeted-writes.md +6 -0
  124. package/corpus/templates/plan/shared/plan-content.ts +35 -0
  125. package/corpus/templates/slides/.agents/skills/analytics-data-for-decks/SKILL.md +8 -12
  126. package/corpus/templates/slides/AGENTS.md +4 -4
  127. package/corpus/templates/slides/actions/create-deck.ts +1 -1
  128. package/corpus/templates/slides/actions/duplicate-deck.ts +19 -4
  129. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +2 -10
  130. package/corpus/templates/slides/app/components/deck/MermaidRenderer.tsx +12 -1
  131. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +30 -13
  132. package/corpus/templates/slides/app/components/editor/DeckEditorSkeleton.tsx +35 -0
  133. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +63 -56
  134. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +21 -76
  135. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +1110 -292
  136. package/corpus/templates/slides/app/components/editor/SlideOverflowWarning.tsx +53 -0
  137. package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +235 -18
  138. package/corpus/templates/slides/app/components/editor/SpeakerNotesPanel.tsx +4 -1
  139. package/corpus/templates/slides/app/components/editor/canvas-interactions/index.ts +11 -0
  140. package/corpus/templates/slides/app/components/editor/canvas-interactions/slides-canvas-adapter.ts +129 -0
  141. package/corpus/templates/slides/app/components/editor/selection-overlay-measurement.ts +70 -0
  142. package/corpus/templates/slides/app/components/editor/slide-object-interactions.ts +519 -65
  143. package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +36 -426
  144. package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +19 -458
  145. package/corpus/templates/slides/app/context/DeckContext.tsx +179 -72
  146. package/corpus/templates/slides/app/global.css +105 -0
  147. package/corpus/templates/slides/app/i18n/en-US.ts +8 -0
  148. package/corpus/templates/slides/app/lib/deck-editor-loading.ts +26 -0
  149. package/corpus/templates/slides/app/lib/mermaid-blocks.ts +27 -0
  150. package/corpus/templates/slides/app/pages/DeckEditor.tsx +71 -38
  151. package/corpus/templates/slides/app/pages/Index.tsx +98 -41
  152. package/corpus/templates/slides/changelog/2026-07-30-deck-loading-no-longer-flashes-an-unavailable-message.md +6 -0
  153. package/corpus/templates/slides/changelog/2026-07-30-duplicating-a-deck-from-the-deck-list-now-opens-the-copy-imm.md +6 -0
  154. package/corpus/templates/slides/changelog/2026-07-30-layout-overflow-warning-is-readable-and-dismissible.md +6 -0
  155. package/corpus/templates/slides/changelog/2026-07-30-new-decks-now-start-with-an-empty-slide-list-when-no-slides-.md +6 -0
  156. package/corpus/templates/slides/changelog/2026-07-30-shared-canvas-annotations.md +6 -0
  157. package/corpus/templates/slides/changelog/2026-07-30-slide-objects-can-be-moved-as-a-group-copied-and-pasted-with.md +6 -0
  158. package/corpus/templates/slides/changelog/2026-07-30-slide-text-editing-and-object-controls-now-match-google-slides.md +6 -0
  159. package/corpus/templates/slides/changelog/2026-07-30-style-panel-now-scrolls-with-speaker-notes-open-shows-the-sl.md +6 -0
  160. package/corpus/templates/slides/changelog/2026-07-30-top-toolbar-controls-now-use-consistent-sizing-with-undo-and.md +6 -0
  161. package/corpus/templates/slides/netlify.toml +3 -1
  162. package/corpus/templates/slides/package.json +0 -1
  163. package/corpus/templates/slides/server/lib/chat-attachments.ts +18 -0
  164. package/corpus/templates/slides/server/plugins/agent-chat.ts +5 -0
  165. package/corpus/templates/slides/vite.config.ts +0 -1
  166. package/corpus/toolkit/CHANGELOG.md +13 -0
  167. package/corpus/toolkit/README.md +19 -0
  168. package/corpus/toolkit/agent-native.eject.json +38 -0
  169. package/corpus/toolkit/package.json +29 -1
  170. package/corpus/toolkit/src/canvas-annotations/CanvasCommentPins.tsx +861 -0
  171. package/corpus/toolkit/src/canvas-annotations/DrawOverlay.tsx +1233 -0
  172. package/corpus/toolkit/src/canvas-annotations/index.ts +15 -0
  173. package/corpus/toolkit/src/canvas-annotations/types.ts +14 -0
  174. package/corpus/toolkit/src/canvas-interactions/canvas-interactions.ts +933 -0
  175. package/corpus/toolkit/src/canvas-interactions/index.ts +67 -0
  176. package/corpus/toolkit/src/design-tweaks/scrub-input-utils.ts +311 -0
  177. package/corpus/toolkit/src/design-tweaks/scrub-input.tsx +491 -0
  178. package/corpus/toolkit/src/design-tweaks/visual-style-controls.tsx +26 -171
  179. package/corpus/toolkit/src/index.ts +1 -0
  180. package/dist/a2a/client.d.ts +23 -0
  181. package/dist/a2a/client.d.ts.map +1 -1
  182. package/dist/a2a/client.js +309 -44
  183. package/dist/a2a/client.js.map +1 -1
  184. package/dist/a2a/correlation.d.ts +1 -0
  185. package/dist/a2a/correlation.d.ts.map +1 -1
  186. package/dist/a2a/correlation.js +27 -0
  187. package/dist/a2a/correlation.js.map +1 -1
  188. package/dist/a2a/invoke.d.ts.map +1 -1
  189. package/dist/a2a/invoke.js +4 -2
  190. package/dist/a2a/invoke.js.map +1 -1
  191. package/dist/a2a/types.d.ts +4 -0
  192. package/dist/a2a/types.d.ts.map +1 -1
  193. package/dist/a2a/types.js.map +1 -1
  194. package/dist/action.d.ts +3 -0
  195. package/dist/action.d.ts.map +1 -1
  196. package/dist/action.js.map +1 -1
  197. package/dist/agent/action-continuation-guidance.d.ts.map +1 -1
  198. package/dist/agent/action-continuation-guidance.js +2 -1
  199. package/dist/agent/action-continuation-guidance.js.map +1 -1
  200. package/dist/agent/engine/registry.d.ts.map +1 -1
  201. package/dist/agent/engine/registry.js +82 -8
  202. package/dist/agent/engine/registry.js.map +1 -1
  203. package/dist/agent/production-agent.d.ts +40 -1
  204. package/dist/agent/production-agent.d.ts.map +1 -1
  205. package/dist/agent/production-agent.js +113 -15
  206. package/dist/agent/production-agent.js.map +1 -1
  207. package/dist/agent/run-loop-with-resume.d.ts +21 -0
  208. package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
  209. package/dist/agent/run-loop-with-resume.js +163 -4
  210. package/dist/agent/run-loop-with-resume.js.map +1 -1
  211. package/dist/agent/run-manager.d.ts +16 -9
  212. package/dist/agent/run-manager.d.ts.map +1 -1
  213. package/dist/agent/run-manager.js +93 -42
  214. package/dist/agent/run-manager.js.map +1 -1
  215. package/dist/agent/thread-debug-history.d.ts +10 -0
  216. package/dist/agent/thread-debug-history.d.ts.map +1 -0
  217. package/dist/agent/thread-debug-history.js +68 -0
  218. package/dist/agent/thread-debug-history.js.map +1 -0
  219. package/dist/agent/types.d.ts +3 -1
  220. package/dist/agent/types.d.ts.map +1 -1
  221. package/dist/agent/types.js.map +1 -1
  222. package/dist/cli/create.d.ts.map +1 -1
  223. package/dist/cli/create.js +6 -1
  224. package/dist/cli/create.js.map +1 -1
  225. package/dist/cli/templates-meta.js +2 -2
  226. package/dist/cli/templates-meta.js.map +1 -1
  227. package/dist/client/agent-chat-adapter.d.ts +1 -1
  228. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  229. package/dist/client/agent-chat-adapter.js +76 -13
  230. package/dist/client/agent-chat-adapter.js.map +1 -1
  231. package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
  232. package/dist/client/resources/McpIntegrationDialog.js +1 -1
  233. package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
  234. package/dist/client/sse-event-processor.d.ts.map +1 -1
  235. package/dist/client/sse-event-processor.js +12 -3
  236. package/dist/client/sse-event-processor.js.map +1 -1
  237. package/dist/collab/routes.d.ts +1 -1
  238. package/dist/db/client.d.ts.map +1 -1
  239. package/dist/db/client.js +48 -17
  240. package/dist/db/client.js.map +1 -1
  241. package/dist/guards/no-env-credentials.d.ts.map +1 -1
  242. package/dist/guards/no-env-credentials.js +2 -0
  243. package/dist/guards/no-env-credentials.js.map +1 -1
  244. package/dist/integrations/adapters/slack.js +7 -3
  245. package/dist/integrations/adapters/slack.js.map +1 -1
  246. package/dist/localization/default-messages.d.ts +43 -0
  247. package/dist/localization/default-messages.d.ts.map +1 -1
  248. package/dist/localization/default-messages.js +43 -0
  249. package/dist/localization/default-messages.js.map +1 -1
  250. package/dist/observability/traces.d.ts +3 -1
  251. package/dist/observability/traces.d.ts.map +1 -1
  252. package/dist/observability/traces.js +73 -4
  253. package/dist/observability/traces.js.map +1 -1
  254. package/dist/progress/routes.d.ts +1 -1
  255. package/dist/provider-api/actions/custom-provider-registration.d.ts +12 -12
  256. package/dist/provider-api/actions/provider-api.d.ts +13 -13
  257. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  258. package/dist/scripts/call-agent.d.ts.map +1 -1
  259. package/dist/scripts/call-agent.js +237 -12
  260. package/dist/scripts/call-agent.js.map +1 -1
  261. package/dist/scripts/describe-workspace-apps.js +2 -2
  262. package/dist/scripts/describe-workspace-apps.js.map +1 -1
  263. package/dist/secrets/crypto.d.ts +36 -21
  264. package/dist/secrets/crypto.d.ts.map +1 -1
  265. package/dist/secrets/crypto.js +134 -33
  266. package/dist/secrets/crypto.js.map +1 -1
  267. package/dist/secrets/storage.d.ts +6 -6
  268. package/dist/secrets/storage.d.ts.map +1 -1
  269. package/dist/secrets/storage.js +43 -26
  270. package/dist/secrets/storage.js.map +1 -1
  271. package/dist/server/agent-capabilities.js +1 -1
  272. package/dist/server/agent-capabilities.js.map +1 -1
  273. package/dist/server/agent-chat/action-filters-a2a.d.ts +17 -3
  274. package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -1
  275. package/dist/server/agent-chat/action-filters-a2a.js +94 -3
  276. package/dist/server/agent-chat/action-filters-a2a.js.map +1 -1
  277. package/dist/server/agent-chat/context-tools.d.ts.map +1 -1
  278. package/dist/server/agent-chat/context-tools.js +2 -0
  279. package/dist/server/agent-chat/context-tools.js.map +1 -1
  280. package/dist/server/agent-chat/plugin-options.d.ts +23 -0
  281. package/dist/server/agent-chat/plugin-options.d.ts.map +1 -1
  282. package/dist/server/agent-chat/plugin-options.js +4 -1
  283. package/dist/server/agent-chat/plugin-options.js.map +1 -1
  284. package/dist/server/agent-chat/prompt-resources.js +1 -1
  285. package/dist/server/agent-chat/prompt-resources.js.map +1 -1
  286. package/dist/server/agent-chat-plugin.d.ts +2 -1
  287. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  288. package/dist/server/agent-chat-plugin.js +79 -56
  289. package/dist/server/agent-chat-plugin.js.map +1 -1
  290. package/dist/server/realtime-token.d.ts +1 -1
  291. package/dist/templates/default/.agents/skills/secrets/SKILL.md +19 -7
  292. package/dist/templates/headless/.agents/skills/secrets/SKILL.md +19 -7
  293. package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +18 -7
  294. package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +15 -14
  295. package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +19 -7
  296. package/dist/vite/client.d.ts.map +1 -1
  297. package/dist/vite/client.js +1 -0
  298. package/dist/vite/client.js.map +1 -1
  299. package/docs/content/agent-native-toolkit.mdx +13 -6
  300. package/docs/content/cloneable-saas.mdx +5 -5
  301. package/docs/content/creating-templates.mdx +9 -0
  302. package/docs/content/deployment.mdx +18 -12
  303. package/docs/content/doctor.mdx +8 -1
  304. package/docs/content/drop-in-agent.mdx +1 -1
  305. package/docs/content/extensions.mdx +18 -18
  306. package/docs/content/faq.mdx +4 -4
  307. package/docs/content/key-concepts.mdx +30 -21
  308. package/docs/content/security.mdx +2 -2
  309. package/docs/content/template-brain-developers.mdx +4 -1
  310. package/docs/content/template-mail-developers.mdx +4 -1
  311. package/docs/content/what-is-agent-native.mdx +6 -6
  312. package/package.json +3 -3
  313. package/src/a2a/client.ts +449 -66
  314. package/src/a2a/correlation.ts +31 -0
  315. package/src/a2a/invoke.ts +4 -2
  316. package/src/a2a/types.ts +4 -0
  317. package/src/action.ts +3 -0
  318. package/src/agent/action-continuation-guidance.ts +2 -1
  319. package/src/agent/engine/registry.ts +98 -6
  320. package/src/agent/production-agent.ts +151 -18
  321. package/src/agent/run-loop-with-resume.ts +190 -3
  322. package/src/agent/run-manager.ts +117 -41
  323. package/src/agent/thread-debug-history.ts +86 -0
  324. package/src/agent/types.ts +3 -1
  325. package/src/cli/create.ts +11 -1
  326. package/src/cli/templates-meta.ts +2 -2
  327. package/src/client/agent-chat-adapter.ts +91 -13
  328. package/src/client/resources/McpIntegrationDialog.tsx +11 -9
  329. package/src/client/sse-event-processor.ts +17 -3
  330. package/src/db/client.ts +57 -17
  331. package/src/guards/no-env-credentials.ts +2 -0
  332. package/src/integrations/adapters/slack.ts +8 -3
  333. package/src/localization/default-messages.ts +44 -0
  334. package/src/observability/traces.ts +78 -5
  335. package/src/scripts/call-agent.ts +294 -11
  336. package/src/scripts/describe-workspace-apps.ts +2 -2
  337. package/src/secrets/crypto.ts +156 -35
  338. package/src/secrets/storage.ts +64 -26
  339. package/src/server/agent-capabilities.ts +1 -1
  340. package/src/server/agent-chat/action-filters-a2a.ts +113 -7
  341. package/src/server/agent-chat/context-tools.ts +2 -0
  342. package/src/server/agent-chat/plugin-options.ts +34 -1
  343. package/src/server/agent-chat/prompt-resources.ts +1 -1
  344. package/src/server/agent-chat-plugin.ts +91 -59
  345. package/src/templates/default/.agents/skills/secrets/SKILL.md +19 -7
  346. package/src/templates/headless/.agents/skills/secrets/SKILL.md +19 -7
  347. package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +18 -7
  348. package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +15 -14
  349. package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +19 -7
  350. package/src/vite/client.ts +1 -0
@@ -1,5 +1,7 @@
1
1
  import { useEffect, useLayoutEffect, useRef } from "react";
2
2
 
3
+ import { createDesignCanvasInteractionAdapter } from "@/components/design/canvas-interactions/design-canvas-interactions";
4
+
3
5
  const useIsomorphicLayoutEffect =
4
6
  typeof window === "undefined" ? useEffect : useLayoutEffect;
5
7
 
@@ -240,13 +242,6 @@ const SHIFT_TOOL_SHORTCUTS: Record<
240
242
  l: { tool: "arrow", handler: "onArrowTool" },
241
243
  };
242
244
 
243
- const ARROW_DIRECTIONS: Record<string, DesignHotkeyDirection> = {
244
- ArrowUp: "up",
245
- ArrowRight: "right",
246
- ArrowDown: "down",
247
- ArrowLeft: "left",
248
- };
249
-
250
245
  export function isDesignHotkeyEditableTarget(target: EventTarget | null) {
251
246
  if (!target || typeof Element === "undefined") return false;
252
247
  if (!(target instanceof Element)) return false;
@@ -396,17 +391,6 @@ export function handleDesignHotkey(
396
391
  return true;
397
392
  };
398
393
 
399
- const runNudge = (direction: DesignHotkeyDirection) => {
400
- if (!props.onNudge) return false;
401
- prevent();
402
- props.onNudge({
403
- ...details,
404
- direction,
405
- largeStep: event.shiftKey,
406
- });
407
- return true;
408
- };
409
-
410
394
  const runAlign = (edge: DesignHotkeyAlignEdge) => {
411
395
  if (!props.onAlignSelection) return false;
412
396
  prevent();
@@ -421,6 +405,17 @@ export function handleDesignHotkey(
421
405
  return true;
422
406
  };
423
407
 
408
+ const designCanvasInteractions = createDesignCanvasInteractionAdapter({
409
+ shortcuts: props,
410
+ });
411
+
412
+ const runSharedCanvasCommand = () => {
413
+ const result = designCanvasInteractions.dispatchKeyboardEvent(event);
414
+ if (!result.handled) return false;
415
+ prevent();
416
+ return true;
417
+ };
418
+
424
419
  // Keep shortcut help global, including while an inspector field or code
425
420
  // editor owns focus. No other editing shortcut bypasses the editable guard.
426
421
  if (isShowKeyboardShortcutsHotkey(event)) {
@@ -449,8 +444,8 @@ export function handleDesignHotkey(
449
444
  }
450
445
  }
451
446
 
452
- if (event.key in ARROW_DIRECTIONS && !primary && !event.altKey) {
453
- return runNudge(ARROW_DIRECTIONS[event.key]);
447
+ if (event.key.startsWith("Arrow") && !primary && !event.altKey) {
448
+ return runSharedCanvasCommand();
454
449
  }
455
450
 
456
451
  if (event.key === "Escape") return run(props.onEscape);
@@ -487,7 +482,7 @@ export function handleDesignHotkey(
487
482
  return true;
488
483
  }
489
484
  if ((event.key === "Delete" || event.key === "Backspace") && !primary) {
490
- return run(props.onDelete);
485
+ return runSharedCanvasCommand() || run(props.onDelete);
491
486
  }
492
487
 
493
488
  // Current Figma: Cmd+Backspace ungroups. Checked after plain Backspace
@@ -498,7 +493,10 @@ export function handleDesignHotkey(
498
493
  }
499
494
 
500
495
  if (primary && key === "z") {
501
- return event.shiftKey ? run(props.onRedo) : run(props.onUndo);
496
+ return (
497
+ runSharedCanvasCommand() ||
498
+ (event.shiftKey ? run(props.onRedo) : run(props.onUndo))
499
+ );
502
500
  }
503
501
  if (primary && key === "y") return run(props.onRedo);
504
502
  // Figma Find uses the operating system's primary modifier, rather than
@@ -514,14 +512,16 @@ export function handleDesignHotkey(
514
512
  return run(props.onFind);
515
513
  }
516
514
  if (primary && !event.altKey && !event.shiftKey && key === "a") {
517
- return run(props.onSelectAll);
515
+ return runSharedCanvasCommand() || run(props.onSelectAll);
518
516
  }
519
517
  // Figma's Cmd+Shift+X — toggle strikethrough. Must be checked before plain
520
518
  // Cmd+X (cut) below, since that check doesn't itself gate on shiftKey.
521
519
  if (primary && event.shiftKey && key === "x") {
522
520
  return run(props.onToggleStrikethrough);
523
521
  }
524
- if (primary && key === "x") return run(props.onCut);
522
+ if (primary && key === "x") {
523
+ return runSharedCanvasCommand() || run(props.onCut);
524
+ }
525
525
  // Figma's Cmd+U — toggle underline. No existing binding claims plain "u".
526
526
  if (primary && !event.altKey && !event.shiftKey && key === "u") {
527
527
  return run(props.onToggleUnderline);
@@ -552,14 +552,16 @@ export function handleDesignHotkey(
552
552
  if (primary && key === "c") {
553
553
  if (event.altKey) return run(props.onCopyProps);
554
554
  if (event.shiftKey) return run(props.onCopyAsPng);
555
- return run(props.onCopy);
555
+ return runSharedCanvasCommand() || run(props.onCopy);
556
556
  }
557
557
  if (primary && key === "v") {
558
558
  if (event.altKey) return run(props.onPasteProps);
559
559
  if (event.shiftKey) return run(props.onPasteOver);
560
- return run(props.onPaste);
560
+ return runSharedCanvasCommand() || run(props.onPaste);
561
+ }
562
+ if (primary && key === "d") {
563
+ return runSharedCanvasCommand() || run(props.onDuplicate);
561
564
  }
562
- if (primary && key === "d") return run(props.onDuplicate);
563
565
  // Figma's Shift+Cmd+R — "Paste to replace" — must be checked BEFORE plain
564
566
  // Cmd+R (rename) so shift wins; onPasteToReplace absent falls through to
565
567
  // rename so existing behavior is unaffected until the handler is wired.
@@ -658,17 +660,8 @@ export function handleDesignHotkey(
658
660
  // backward (single-step reorder). Alt+Cmd+]/Alt+Cmd+[ are silent aliases
659
661
  // of the plain front/back commands (kept for muscle memory / older
660
662
  // bindings), NOT of forward/backward.
661
- if (primary && key === "]") {
662
- return event.altKey ? run(props.onBringToFront) : run(props.onBringForward);
663
- }
664
- if (primary && key === "[") {
665
- return event.altKey ? run(props.onSendToBack) : run(props.onSendBackward);
666
- }
667
- if (!primary && !event.altKey && !event.shiftKey && key === "]") {
668
- return run(props.onBringToFront);
669
- }
670
- if (!primary && !event.altKey && !event.shiftKey && key === "[") {
671
- return run(props.onSendToBack);
663
+ if (key === "]" || key === "[" || key === "}" || key === "{") {
664
+ return runSharedCanvasCommand();
672
665
  }
673
666
 
674
667
  // Current Figma reserves N / Shift+N for moving to the next / previous
@@ -20,7 +20,6 @@
20
20
  "dependencies": {
21
21
  "@agent-native/core": "workspace:*",
22
22
  "@agent-native/creative-context": "workspace:*",
23
- "@agent-native/pinpoint": "workspace:*",
24
23
  "@agent-native/toolkit": "workspace:*",
25
24
  "@fontsource-variable/inter": "^5.2.8",
26
25
  "@libsql/client": "^0.15.8",
@@ -54,11 +54,19 @@ ladder.
54
54
  Hosted production sources appear only when Dispatch has their
55
55
  <APP>_DATABASE_URL connection variables (or an equivalent
56
56
  AGENT_NATIVE_THREAD_DEBUG_DATABASES configuration).
57
+ - For reliability triage, call `list-agent-run-failures` first, then inspect a
58
+ returned run with `get-agent-thread-debug` using the same source id. Do not
59
+ infer run failure from thread text search. Cross-app results may be partial;
60
+ preserve the returned per-source health instead of treating an unavailable
61
+ source as zero failures.
57
62
 
58
63
  ## Application State
59
64
 
60
65
  - `navigation` exposes current Dispatch view, selected integration/resource,
61
66
  approval, route, or settings panel.
67
+ - On Thread Debug, `navigation.threadDebugMode`, `sourceId`,
68
+ `inspectSourceId`, `ownerEmail`, `failureStatus`, `range`, `query`, `runId`,
69
+ and `threadId` expose the visible failure or thread filters and selection.
62
70
  - `navigate` moves the UI to setup, vault, integrations, resources, routing,
63
71
  approval, and operator surfaces.
64
72
 
@@ -183,6 +183,35 @@ Real credential values belong only in local `.env` files, deployment configurati
183
183
  | `DATABASE_URL` | Production yes, local dev no | Persistent SQL connection string (local dev default: `file:./data/app.db`) |
184
184
  | `DATABASE_AUTH_TOKEN` | Only when the provider needs it | Auth token for providers such as Turso/libSQL |
185
185
 
186
+ ### Cross-app Thread Debug sources
187
+
188
+ Dispatch can inspect agent runs from other apps without moving their trace data
189
+ out of the app-owned database. Configure these connections only on the
190
+ production Dispatch runtime, and use database credentials that are restricted
191
+ to read-only access.
192
+
193
+ For one source, set an app-prefixed URL such as
194
+ `CLIPS_DATABASE_URL` and, when required, `CLIPS_DATABASE_AUTH_TOKEN`. For
195
+ multiple or explicitly named sources, set `AGENT_NATIVE_THREAD_DEBUG_DATABASES`
196
+ to JSON that refers to separate environment variable names:
197
+
198
+ ```json
199
+ [
200
+ {
201
+ "id": "clips",
202
+ "label": "Clips",
203
+ "databaseUrlEnv": "DISPATCH_THREAD_DEBUG_CLIPS_DATABASE_URL",
204
+ "databaseAuthTokenEnv": "DISPATCH_THREAD_DEBUG_CLIPS_DATABASE_AUTH_TOKEN"
205
+ }
206
+ ]
207
+ ```
208
+
209
+ Set the referenced values in the deployment's secret configuration. Never put
210
+ database URLs or tokens in this file, `netlify.toml`, source code, fixtures, or
211
+ logs. Do not grant deploy previews access to production app databases by
212
+ default. Thread Debug reports configured-but-missing or unreadable sources
213
+ separately from sources that returned zero failures.
214
+
186
215
  ## Extensions (Framework Feature)
187
216
 
188
217
  The framework provides **Extensions** — mini sandboxed Alpine.js apps that run inside iframes. Extensions let users (or the agent) create interactive widgets, dashboards, and utilities without modifying the app's source code. They appear in the sidebar under an "Extensions" section. (Distinct from LLM tools — the function-calling primitives the agent invokes.)
@@ -18,6 +18,20 @@ function stripUndefined(args: Record<string, unknown>) {
18
18
  );
19
19
  }
20
20
 
21
+ function threadDebugLookbackHours(value: unknown): number {
22
+ if (value === "7d") return 168;
23
+ if (value === "30d") return 720;
24
+ return 24;
25
+ }
26
+
27
+ function threadDebugFailureStatus(
28
+ value: unknown,
29
+ ): "all" | "errored" | "aborted" | "truncated" {
30
+ return value === "errored" || value === "aborted" || value === "truncated"
31
+ ? value
32
+ : "all";
33
+ }
34
+
21
35
  function optionalTimestamp(source: object, key: string) {
22
36
  if (!Object.prototype.hasOwnProperty.call(source, key)) return undefined;
23
37
  const value = (source as Record<string, unknown>)[key];
@@ -186,7 +200,18 @@ export default defineAction({
186
200
  "list-agent-thread-sources",
187
201
  {},
188
202
  );
189
- if (nav.query) {
203
+ if (nav.threadDebugMode !== "threads") {
204
+ screen.agentRunFailures = await runDispatchAction(
205
+ "list-agent-run-failures",
206
+ {
207
+ sourceId: nav.sourceId ?? "all",
208
+ ownerEmail: nav.ownerEmail,
209
+ status: threadDebugFailureStatus(nav.failureStatus),
210
+ lookbackHours: threadDebugLookbackHours(nav.range),
211
+ limit: 10,
212
+ },
213
+ );
214
+ } else if (nav.query) {
190
215
  screen.threadDebugResults = await runDispatchAction(
191
216
  "search-agent-threads",
192
217
  {
@@ -199,7 +224,10 @@ export default defineAction({
199
224
  }
200
225
  if (nav.threadId || nav.runId) {
201
226
  const detail = (await runDispatchAction("get-agent-thread-debug", {
202
- sourceId: nav.sourceId,
227
+ sourceId:
228
+ nav.runId && nav.inspectSourceId
229
+ ? nav.inspectSourceId
230
+ : nav.sourceId,
203
231
  threadId: nav.runId ? undefined : nav.threadId,
204
232
  runId: nav.runId,
205
233
  ownerEmail: nav.ownerEmail,
@@ -215,6 +243,10 @@ export default defineAction({
215
243
  debug: detail.debug,
216
244
  debugRuns: detail.debugRuns?.slice(-5) ?? [],
217
245
  messages: detail.messages?.slice(-6) ?? [],
246
+ runs:
247
+ detail.runs
248
+ ?.slice(0, 5)
249
+ .map(({ events: _events, ...run }: any) => run) ?? [],
218
250
  };
219
251
  }
220
252
  } catch (error) {