@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
@@ -0,0 +1,491 @@
1
+ ---
2
+ title: "Docs components"
3
+ description: "Reference for every MDX component available in the Agent Native docs, with live rendered examples and copy-paste syntax."
4
+ ---
5
+
6
+ # Docs components
7
+
8
+ The docs site renders standard Markdown plus a set of MDX block components for
9
+ richer content. Each section below shows a live rendered example followed by
10
+ the exact MDX syntax that produced it.
11
+
12
+ ---
13
+
14
+ ## Callout
15
+
16
+ <Callout tone="info">
17
+
18
+ This is an `info` callout. Use it for background context or neutral notes. You can use **bold**, `inline code`, and [links](/docs/getting-started) inside.
19
+
20
+ </Callout>
21
+
22
+ <Callout tone="warning">
23
+
24
+ This is a `warning` callout. Use it for potential data loss, breaking changes, or hard-to-reverse steps. For example: restart `pnpm dev` after adding a new route file — the router only picks up files present at startup.
25
+
26
+ </Callout>
27
+
28
+ <Callout tone="success">
29
+
30
+ This is a `success` callout. Use it for the recommended path or to confirm a working approach.
31
+
32
+ </Callout>
33
+
34
+ <Callout tone="risk">
35
+
36
+ This is a `risk` callout. Use it for security implications or production caveats.
37
+
38
+ </Callout>
39
+
40
+ <Callout tone="decision">
41
+
42
+ This is a `decision` callout. Use it to surface a deliberate tradeoff the reader should understand.
43
+
44
+ </Callout>
45
+
46
+ ```mdx
47
+ <Callout tone="info">
48
+
49
+ This is an `info` callout. Use it for background context or neutral notes. You can use **bold**, `inline code`, and [links](/docs/getting-started) inside.
50
+
51
+ </Callout>
52
+
53
+ <Callout tone="warning">
54
+
55
+ This is a `warning` callout. Use it for potential data loss, breaking changes, or hard-to-reverse steps. For example: restart `pnpm dev` after adding a new route file — the router only picks up files present at startup.
56
+
57
+ </Callout>
58
+
59
+ <Callout tone="success">
60
+
61
+ This is a `success` callout. Use it for the recommended path or to confirm a working approach.
62
+
63
+ </Callout>
64
+
65
+ <Callout tone="risk">
66
+
67
+ This is a `risk` callout. Use it for security implications or production caveats.
68
+
69
+ </Callout>
70
+
71
+ <Callout tone="decision">
72
+
73
+ This is a `decision` callout. Use it to surface a deliberate tradeoff the reader should understand.
74
+
75
+ </Callout>
76
+ ```
77
+
78
+ | Tone | When to use |
79
+ | ---------- | ------------------------------------------------------------ |
80
+ | `info` | Background context, neutral notes |
81
+ | `warning` | Potential data loss, breaking changes, hard-to-reverse steps |
82
+ | `success` | Recommended option, confirmed working path |
83
+ | `risk` | Security implications, production caveats |
84
+ | `decision` | Deliberate tradeoffs the reader should understand |
85
+
86
+ Leave a blank line between the opening tag and the body, and another before the closing tag.
87
+
88
+ ---
89
+
90
+ ## Steps
91
+
92
+ <Steps>
93
+
94
+ ### Install dependencies
95
+
96
+ Run the following inside your project directory:
97
+
98
+ ```bash
99
+ pnpm install
100
+ ```
101
+
102
+ ### Start the dev server
103
+
104
+ ```bash
105
+ pnpm dev
106
+ ```
107
+
108
+ Open `http://localhost:3000`. The app is ready when **VITE ready** appears in the terminal.
109
+
110
+ ### Sign in
111
+
112
+ The first run shows a login screen. Use any credentials — local development does not send email.
113
+
114
+ </Steps>
115
+
116
+ ````mdx
117
+ <Steps>
118
+
119
+ ### Install dependencies
120
+
121
+ Run the following inside your project directory:
122
+
123
+ ```bash
124
+ pnpm install
125
+ ```
126
+
127
+ ### Start the dev server
128
+
129
+ ```bash
130
+ pnpm dev
131
+ ```
132
+
133
+ Open `http://localhost:3000`. The app is ready when **VITE ready** appears in the terminal.
134
+
135
+ ### Sign in
136
+
137
+ The first run shows a login screen. Use any credentials — local development does not send email.
138
+
139
+ </Steps>
140
+ ````
141
+
142
+ Each step is a `###` heading followed by the body content. Steps work best for 3–8 items. For 2 items a numbered list is fine. For longer procedures, split into multiple `<Steps>` blocks with a prose bridge between them.
143
+
144
+ ---
145
+
146
+ ## Cards
147
+
148
+ <Cards>
149
+
150
+ ### [Actions](/docs/actions)
151
+
152
+ Typed operations callable from the agent, UI, CLI, and HTTP. Define once, call from anywhere.
153
+
154
+ ### [Database](/docs/database)
155
+
156
+ SQL persistence with automatic migrations. SQLite locally, Postgres/Turso in production.
157
+
158
+ ### [Agent Surfaces](/docs/agent-surfaces)
159
+
160
+ Configure where the agent appears: full-page chat, sidebar panel, or embedded in a route.
161
+
162
+ ### Skills
163
+
164
+ Plain-text instruction files that give the agent domain knowledge and task-specific behavior without code changes.
165
+
166
+ </Cards>
167
+
168
+ ```mdx
169
+ <Cards>
170
+
171
+ ### [Actions](/docs/actions)
172
+
173
+ Typed operations callable from the agent, UI, CLI, and HTTP. Define once, call from anywhere.
174
+
175
+ ### [Database](/docs/database)
176
+
177
+ SQL persistence with automatic migrations. SQLite locally, Postgres/Turso in production.
178
+
179
+ ### [Agent Surfaces](/docs/agent-surfaces)
180
+
181
+ Configure where the agent appears: full-page chat, sidebar panel, or embedded in a route.
182
+
183
+ ### Skills
184
+
185
+ Plain-text instruction files that give the agent domain knowledge and task-specific behavior without code changes.
186
+
187
+ </Cards>
188
+ ```
189
+
190
+ Each card is a `###` heading (optionally linked) followed by the description. Cards without a link render as plain info boxes with no hover state or arrow.
191
+
192
+ ---
193
+
194
+ ## Comparison
195
+
196
+ <Comparison>
197
+
198
+ ### Before
199
+
200
+ Every feature needs a separate API endpoint, a separate React query, and manual wiring between the AI response and UI state.
201
+
202
+ ### After
203
+
204
+ Define one action. The agent calls it as a tool, the UI calls it through a React hook, and both read the same validated output.
205
+
206
+ </Comparison>
207
+
208
+ ```mdx
209
+ <Comparison>
210
+
211
+ ### Before
212
+
213
+ Every feature needs a separate API endpoint, a separate React query, and manual wiring between the AI response and UI state.
214
+
215
+ ### After
216
+
217
+ Define one action. The agent calls it as a tool, the UI calls it through a React hook, and both read the same validated output.
218
+
219
+ </Comparison>
220
+ ```
221
+
222
+ Add more `###` sections to get 3 or 4 columns (max 4). The red/green label accent only applies to headings that exactly match `Before`, `Old`, `Without` (red) or `After`, `New`, `With` (green).
223
+
224
+ ---
225
+
226
+ ## kbd — keyboard shortcut
227
+
228
+ Press [[⌘K]] to open the command palette. Save with [[Ctrl+S]] before running the dev server. Navigate fields with [[Tab]] and [[Shift+Tab]].
229
+
230
+ ```mdx
231
+ Press [[⌘K]] to open the command palette. Save with [[Ctrl+S]] before running the dev server. Navigate fields with [[Tab]] and [[Shift+Tab]].
232
+ ```
233
+
234
+ Double brackets around the key sequence; no MDX component needed. Works anywhere in regular Markdown paragraphs.
235
+
236
+ ---
237
+
238
+ ## Mermaid diagram
239
+
240
+ ```mermaid
241
+ graph LR
242
+ A[defineAction] --> B[Agent calls it as a tool]
243
+ A --> C[UI calls it via useActionQuery]
244
+ A --> D[CLI calls it directly]
245
+ A --> E[HTTP API]
246
+ ```
247
+
248
+ ````mdx
249
+ ```mermaid
250
+ graph LR
251
+ A[defineAction] --> B[Agent calls it as a tool]
252
+ A --> C[UI calls it via useActionQuery]
253
+ A --> D[CLI calls it directly]
254
+ A --> E[HTTP API]
255
+ ```
256
+ ````
257
+
258
+ Use a fenced code block with the `mermaid` language tag. Mermaid supports flowcharts (`graph`), sequence diagrams (`sequenceDiagram`), entity-relationship diagrams (`erDiagram`), and more. See [mermaid.js.org](https://mermaid.js.org/intro/) for the full syntax reference.
259
+
260
+ ---
261
+
262
+ ## FileTree
263
+
264
+ <FileTree
265
+ id="docs-components-filetree"
266
+ entries={[
267
+ {
268
+ path: "actions/analyze-text.ts",
269
+ change: "added",
270
+ note: "New action — callable from agent, UI, and CLI",
271
+ },
272
+ { path: "actions/list-text-analyses.ts", change: "added" },
273
+ { path: "app/routes/analyses.tsx", change: "modified" },
274
+ {
275
+ path: "app/config/nav.ts",
276
+ change: "modified",
277
+ note: "Add the new route to the sidebar nav",
278
+ },
279
+ { path: "db/migrations/001_analyses.sql" },
280
+ ]}
281
+ />
282
+
283
+ ```mdx
284
+ <FileTree
285
+ id="docs-components-filetree"
286
+ entries={[
287
+ {
288
+ path: "actions/analyze-text.ts",
289
+ change: "added",
290
+ note: "New action — callable from agent, UI, and CLI",
291
+ },
292
+ { path: "actions/list-text-analyses.ts", change: "added" },
293
+ { path: "app/routes/analyses.tsx", change: "modified" },
294
+ {
295
+ path: "app/config/nav.ts",
296
+ change: "modified",
297
+ note: "Add the new route to the sidebar nav",
298
+ },
299
+ { path: "db/migrations/001_analyses.sql" },
300
+ ]}
301
+ />
302
+ ```
303
+
304
+ FileTree is **self-closing** (`/>`). It does not accept Markdown children — if you use open/close tags with content inside you will get a parse error.
305
+
306
+ Each entry in `entries` is an object with a `path` key (slash-delimited) and optional fields:
307
+
308
+ | Field | Values | Effect |
309
+ | ---------- | ------------------------------------------------------- | ------------------------------------ |
310
+ | `change` | `"added"` \| `"modified"` \| `"removed"` \| `"renamed"` | Colored badge on the row |
311
+ | `note` | any string | Expandable annotation shown on hover |
312
+ | `snippet` | code string | Expandable code preview |
313
+ | `language` | e.g. `"ts"` | Syntax highlighting for the snippet |
314
+
315
+ ---
316
+
317
+ ## Tabs
318
+
319
+ <TabsBlock
320
+ id="docs-components-tabs"
321
+ tabs={[
322
+ {
323
+ id: "pnpm",
324
+ label: "pnpm",
325
+ blocks: [
326
+ {
327
+ type: "code",
328
+ id: "pnpm-install",
329
+ data: { code: "pnpm install", language: "bash" },
330
+ },
331
+ ],
332
+ },
333
+ {
334
+ id: "npm",
335
+ label: "npm",
336
+ blocks: [
337
+ {
338
+ type: "code",
339
+ id: "npm-install",
340
+ data: { code: "npm install", language: "bash" },
341
+ },
342
+ ],
343
+ },
344
+ {
345
+ id: "yarn",
346
+ label: "yarn",
347
+ blocks: [
348
+ {
349
+ type: "code",
350
+ id: "yarn-install",
351
+ data: { code: "yarn install", language: "bash" },
352
+ },
353
+ ],
354
+ },
355
+ ]}
356
+ />
357
+
358
+ ```mdx
359
+ <TabsBlock
360
+ id="docs-components-tabs"
361
+ tabs={[
362
+ {
363
+ id: "pnpm",
364
+ label: "pnpm",
365
+ blocks: [
366
+ {
367
+ type: "code",
368
+ id: "pnpm-install",
369
+ data: { code: "pnpm install", language: "bash" },
370
+ },
371
+ ],
372
+ },
373
+ {
374
+ id: "npm",
375
+ label: "npm",
376
+ blocks: [
377
+ {
378
+ type: "code",
379
+ id: "npm-install",
380
+ data: { code: "npm install", language: "bash" },
381
+ },
382
+ ],
383
+ },
384
+ {
385
+ id: "yarn",
386
+ label: "yarn",
387
+ blocks: [
388
+ {
389
+ type: "code",
390
+ id: "yarn-install",
391
+ data: { code: "yarn install", language: "bash" },
392
+ },
393
+ ],
394
+ },
395
+ ]}
396
+ />
397
+ ```
398
+
399
+ `TabsBlock` is self-closing. The entire structure is one JSON `tabs` attribute. Each tab's content is a `blocks` array where each item is a block object with `type`, `id`, and `data` matching that block's schema. Tabs works best for short parallel code snippets (one code block per tab). For richer multi-block content per tab, use a visual editor rather than hand-authoring the JSON.
400
+
401
+ ---
402
+
403
+ ## Columns
404
+
405
+ <Columns
406
+ id="docs-components-columns"
407
+ columns={[
408
+ {
409
+ id: "col-manual",
410
+ label: "Manual approach",
411
+ blocks: [
412
+ {
413
+ type: "code",
414
+ id: "manual-code",
415
+ data: {
416
+ code: "const res = await fetch('/api/analyses')\nconst data = await res.json()",
417
+ language: "ts",
418
+ },
419
+ },
420
+ ],
421
+ },
422
+ {
423
+ id: "col-actions",
424
+ label: "With actions",
425
+ blocks: [
426
+ {
427
+ type: "code",
428
+ id: "action-code",
429
+ data: {
430
+ code: "const { data } = useActionQuery('list-text-analyses', {})",
431
+ language: "ts",
432
+ },
433
+ },
434
+ ],
435
+ },
436
+ ]}
437
+ />
438
+
439
+ ```mdx
440
+ <Columns
441
+ id="docs-components-columns"
442
+ columns={[
443
+ {
444
+ id: "col-manual",
445
+ label: "Manual approach",
446
+ blocks: [
447
+ {
448
+ type: "code",
449
+ id: "manual-code",
450
+ data: {
451
+ code: "const res = await fetch('/api/analyses')\nconst data = await res.json()",
452
+ language: "ts",
453
+ },
454
+ },
455
+ ],
456
+ },
457
+ {
458
+ id: "col-actions",
459
+ label: "With actions",
460
+ blocks: [
461
+ {
462
+ type: "code",
463
+ id: "action-code",
464
+ data: {
465
+ code: "const { data } = useActionQuery('list-text-analyses', {})",
466
+ language: "ts",
467
+ },
468
+ },
469
+ ],
470
+ },
471
+ ]}
472
+ />
473
+ ```
474
+
475
+ Like `TabsBlock`, `Columns` is self-closing with a single JSON `columns` attribute. Each column has an optional `label` header and a `blocks` array. For comparing prose rather than code, `Comparison` is easier to hand-author.
476
+
477
+ ---
478
+
479
+ ## When to use which component
480
+
481
+ | Situation | Component |
482
+ | ----------------------------------------- | ------------------------------------ |
483
+ | Reader must not miss something | `Callout` (warning / info / success) |
484
+ | Sequential procedure with titled steps | `Steps` |
485
+ | Navigation or feature overview grid | `Cards` |
486
+ | Before vs. after, old vs. new (prose) | `Comparison` |
487
+ | Same task in multiple tools or frameworks | `Tabs` |
488
+ | Side-by-side code (labeled columns) | `Columns` |
489
+ | Project directory structure | `FileTree` |
490
+ | Inline keyboard shortcut | `[[Key]]` |
491
+ | Architecture or flow diagram | Mermaid fence |
@@ -5,7 +5,14 @@ description: "agent-native doctor scans a generated app's source for the framewo
5
5
 
6
6
  # Doctor (Code Checks)
7
7
 
8
- The agent can write this app's own source code. `agent-native doctor` is the automated check for that: it scans app source for the framework's security-critical code-safety invariants — the same class of check that lives in this framework's own CI as `scripts/guard-*.mjs` — ported to run against a single generated app instead of the framework's multi-template monorepo layout. It's read-only: doctor never edits your code, it only reports.
8
+ Generated apps contain source code that can be changed through the repository's
9
+ development workflow, including by an agent frame intentionally granted
10
+ workspace and write tooling. `agent-native doctor` is the automated check for that: it
11
+ scans app source for the framework's security-critical code-safety invariants —
12
+ the same class of check that lives in this framework's own CI as
13
+ `scripts/guard-*.mjs` — ported to run against a single generated app instead of
14
+ the framework's multi-template monorepo layout. It's read-only: doctor never
15
+ edits your code, it only reports.
9
16
 
10
17
  ## Quick start {#quick-start}
11
18
 
@@ -209,7 +209,7 @@ import { sendToAgentChat } from "@agent-native/core/client/agent-chat";
209
209
  - **`newTab`** — create a separate chat thread for this prompt.
210
210
  - **`background`** — with `newTab`, run without focusing the new thread. The hidden run is tracked in `RunsTray`.
211
211
  - **`openSidebar`** — set to `false` for background/silent sends. Default opens the sidebar so the user sees the response.
212
- - **`type`** — `"content"` (default) keeps the work in the embedded app agent. `"code"` routes to the code-editing frame (for agent-written code changes, see [Frames](/docs/frames)).
212
+ - **`type`** — `"content"` (default) keeps the work in the embedded app agent, which operates through app tools unless its frame is intentionally granted workspace and write tooling. `"code"` routes to a separate code-capable frame (for repository source changes, see [Frames](/docs/frames)).
213
213
 
214
214
  `sendToAgentChat` returns a stable `tabId` you can use to track the chat run.
215
215
 
@@ -30,9 +30,11 @@ The framing matters: an extension isn't a generic "do whatever you want" sandbox
30
30
  its own page or inside a named [slot](#slots) exposed by the template. It
31
31
  cannot inject elements into arbitrary native components — for example, beside
32
32
  every attendee in Calendar — unless the template exposes a slot there. For
33
- deeper customization, ask the agent to edit the template's source code. Full
34
- code customization is a core Agent Native capability; extensions are the
35
- fast, no-deploy layer.
33
+ deeper customization, change the template in your own repository and
34
+ development workflow. An embedded, development, or Builder frame may assist
35
+ when it is intentionally granted workspace and write tooling; otherwise the
36
+ embedded app agent works through app tools. Extensions remain the fast,
37
+ no-deploy layer for runtime customization.
36
38
 
37
39
  </Callout>
38
40
 
@@ -652,13 +654,11 @@ Extensions are private to the user who created them by default. To share:
652
654
 
653
655
  Shared extensions have their own URLs and plug into the same share dialog as documents, decks, and dashboards. Slot installs are always personal — sharing an extension means others _can_ install it; it doesn't auto-pin it to their UI.
654
656
 
655
- ## Should I use an extension or edit the app code? {#vs-app-code}
657
+ ## Should I use an extension or the app source workflow? {#vs-app-code}
656
658
 
657
- The framework lets the agent edit the app's source code directly — components,
658
- routes, styles, and business logic. Use this question when either path could
659
- solve the request:
659
+ Use this question when either path could solve the request:
660
660
 
661
- - **Start with app code** for product behavior, native UI, layout, routes,
661
+ - **Use the source workflow** for product behavior, native UI, layout, routes,
662
662
  business logic, or anything that should be reused across dashboards or users.
663
663
  - **Use a custom block only when the app opts in** and the user explicitly wants
664
664
  a bespoke, one-off visualization or interaction in an existing extension
@@ -669,19 +669,19 @@ solve the request:
669
669
  source-change workflow. Keep the original block in place until the code
670
670
  change is reviewed and deployed.
671
671
 
672
- | | Extension | App code edit |
673
- | --------------------- | ------------------------------ | ------------------------------ |
674
- | **Created by** | Agent (or user) at runtime | Agent editing source files |
675
- | **Stored in** | The database | The git repository |
676
- | **Requires a build** | No | Yes |
677
- | **Requires a deploy** | No | Yes |
678
- | **Scope** | One user (or shared with org) | The entire product, every user |
679
- | **Best for** | Explicit one-off custom blocks | Durable product behavior |
672
+ | | Extension | App source workflow |
673
+ | --------------------- | ------------------------------ | ---------------------------------------- |
674
+ | **Created by** | Agent (or user) at runtime | User or intentionally code-enabled agent |
675
+ | **Stored in** | The database | The git repository |
676
+ | **Requires a build** | No | Yes |
677
+ | **Requires a deploy** | No | Yes |
678
+ | **Scope** | One user (or shared with org) | The entire product, every user |
679
+ | **Best for** | Explicit one-off custom blocks | Durable product behavior |
680
680
 
681
- Rule of thumb: **default to app code.** In an app that explicitly enables
681
+ Rule of thumb: **use an extension for runtime customization.** In an app that explicitly enables
682
682
  extensions, a one-off custom visualization on a dashboard can be a Custom
683
683
  Block; a new pie, multi-bar, or line chart type that should be available across
684
- dashboards belongs in the template code.
684
+ dashboards belongs in the template source and normal development workflow.
685
685
 
686
686
  If what you actually need is a cached, refreshable data source for an existing chart or table — not a new interactive widget — see [Data Programs](/docs/data-programs) instead; it shares this page's sandbox and security posture but has no UI of its own.
687
687
 
@@ -26,7 +26,7 @@ Agent-native is for people who want a real app and an AI agent to work from the
26
26
 
27
27
  ### How is this different from adding AI to an existing app? {#how-is-this-different}
28
28
 
29
- Most apps bolt AI on as an afterthought that can't actually _do_ things in the app. In an agent-native app the agent is a first-class citizen that shares the same actions, database, and state as the UI, so it can do anything the buttons can — and modify the app's own code. See [What Is Agent-Native?](/docs/what-is-agent-native#the-ladder).
29
+ Most apps bolt AI on as an afterthought that can't actually _do_ things in the app. In an agent-native app the agent is a first-class citizen that shares the same actions, database, and state as the UI, so it can do anything the buttons can. See [What Is Agent-Native?](/docs/what-is-agent-native#the-ladder).
30
30
 
31
31
  <Diagram id="doc-block-1s6b04" title="Bolted-on AI vs. agent-native" summary="A bolted-on chat sidebar lives in its own world. An agent-native agent shares the same actions, database, and state as the UI.">
32
32
 
@@ -126,7 +126,7 @@ The framework ships with production-ready templates including [Chat](/docs/templ
126
126
 
127
127
  ### Can I customize templates? {#can-i-customize-templates}
128
128
 
129
- That's the whole point. Start from a template and customize it by asking the agent. "Add a priority field to forms." "Connect to our Salesforce instance." "Change the color scheme to match our brand." The agent modifies the code, and your app evolves over time.
129
+ That's the whole point. Start from a template and customize it in your own repository and development workflow. "Add a priority field to forms." "Connect to our Salesforce instance." "Change the color scheme to match our brand." An agent can edit the source when its frame is intentionally granted workspace and write tooling; otherwise the embedded agent operates the resulting app through its actions and data surface.
130
130
 
131
131
  ### Can I build something the templates don't cover? {#build-from-scratch}
132
132
 
@@ -138,9 +138,9 @@ Yes — install a skill into a coding agent you already use with one command and
138
138
 
139
139
  ## Agent capabilities {#agent-capabilities}
140
140
 
141
- ### Can the agent really modify the app's own code? {#can-the-agent-modify-code}
141
+ ### Does the embedded agent edit the app's source code? {#can-the-agent-modify-code}
142
142
 
143
- Yes, and it's a feature. The agent can safely edit components, routes, styles, and actions. You ask "add a cohort analysis chart" and the agent builds it. You ask "connect to our Stripe account" and the agent writes the integration. Everything is normal Git-tracked code, so bad changes are easy to revert.
143
+ Not by default. The embedded agent normally works through actions, SQL-backed state, and configured integrations. It can edit components, routes, styles, or actions only when its frame is intentionally granted repository workspace and write tooling. Otherwise use your normal development workflow or a separate code-capable development/Builder frame. For runtime customization without source changes, use [Extensions](/docs/extensions).
144
144
 
145
145
  ### Can users talk to the agent from outside the app? {#external-channels}
146
146