@agent-native/core 0.131.5 → 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.
- package/corpus/README.md +3 -3
- package/corpus/core/CHANGELOG.md +63 -0
- package/corpus/core/docs/content/agent-native-toolkit.mdx +13 -6
- package/corpus/core/docs/content/cloneable-saas.mdx +5 -5
- package/corpus/core/docs/content/creating-templates.mdx +9 -0
- package/corpus/core/docs/content/deployment.mdx +14 -10
- package/corpus/core/docs/content/doctor.mdx +8 -1
- package/corpus/core/docs/content/drop-in-agent.mdx +1 -1
- package/corpus/core/docs/content/extensions.mdx +18 -18
- package/corpus/core/docs/content/faq.mdx +4 -4
- package/corpus/core/docs/content/key-concepts.mdx +30 -21
- package/corpus/core/docs/content/template-brain-developers.mdx +4 -1
- package/corpus/core/docs/content/template-mail-developers.mdx +4 -1
- package/corpus/core/docs/content/what-is-agent-native.mdx +6 -6
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/a2a/client.ts +449 -66
- package/corpus/core/src/a2a/correlation.ts +31 -0
- package/corpus/core/src/a2a/types.ts +4 -0
- package/corpus/core/src/action.ts +3 -0
- package/corpus/core/src/agent/engine/registry.ts +45 -5
- package/corpus/core/src/agent/production-agent.ts +151 -18
- package/corpus/core/src/agent/run-loop-with-resume.ts +190 -3
- package/corpus/core/src/agent/run-manager.ts +117 -41
- package/corpus/core/src/agent/thread-debug-history.ts +86 -0
- package/corpus/core/src/agent/types.ts +3 -1
- package/corpus/core/src/cli/create.ts +11 -1
- package/corpus/core/src/cli/templates-meta.ts +2 -2
- package/corpus/core/src/client/agent-chat-adapter.ts +91 -13
- package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +11 -9
- package/corpus/core/src/client/sse-event-processor.ts +17 -3
- package/corpus/core/src/db/client.ts +57 -17
- package/corpus/core/src/integrations/adapters/slack.ts +8 -3
- package/corpus/core/src/localization/default-messages.ts +44 -0
- package/corpus/core/src/observability/traces.ts +78 -5
- package/corpus/core/src/scripts/call-agent.ts +290 -9
- package/corpus/core/src/scripts/describe-workspace-apps.ts +2 -2
- package/corpus/core/src/secrets/crypto.ts +126 -34
- package/corpus/core/src/secrets/storage.ts +61 -25
- package/corpus/core/src/server/agent-capabilities.ts +1 -1
- package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +111 -7
- package/corpus/core/src/server/agent-chat/context-tools.ts +2 -0
- package/corpus/core/src/server/agent-chat/plugin-options.ts +34 -1
- package/corpus/core/src/server/agent-chat/prompt-resources.ts +1 -1
- package/corpus/core/src/server/agent-chat-plugin.ts +91 -59
- package/corpus/core/src/templates/default/.agents/skills/secrets/SKILL.md +14 -7
- package/corpus/core/src/templates/headless/.agents/skills/secrets/SKILL.md +14 -7
- package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +18 -7
- package/corpus/core/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +15 -14
- package/corpus/core/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +14 -7
- package/corpus/core/src/vite/client.ts +1 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-ops/SKILL.md +5 -4
- package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +6 -4
- package/corpus/templates/analytics/AGENTS.md +6 -4
- package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +4 -3
- package/corpus/templates/analytics/changelog/2026-07-30-scheduled-dashboard-emails-complete-every-panel-without-pool.md +6 -0
- package/corpus/templates/analytics/scripts/emit-netlify-dashboard-report-cron.ts +28 -1
- package/corpus/templates/analytics/server/jobs/dashboard-report.ts +18 -11
- package/corpus/templates/analytics/server/lib/analytics-connector-catalog.ts +4 -4
- package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +9 -5
- package/corpus/templates/analytics/server/lib/dashboard-panel-query.ts +6 -2
- package/corpus/templates/analytics/server/lib/dashboard-panel-source-resolver.ts +11 -4
- package/corpus/templates/analytics/server/lib/dashboard-report-render.ts +49 -31
- package/corpus/templates/analytics/server/lib/first-party-analytics.ts +16 -8
- package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +9 -3
- package/corpus/templates/analytics/server/lib/production-serverless-runtime.ts +11 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +3 -2
- package/corpus/templates/analytics/server/plugins/analytics-alert-jobs.ts +2 -1
- package/corpus/templates/analytics/server/plugins/dashboard-report-jobs.ts +2 -1
- package/corpus/templates/analytics/server/plugins/uptime-monitor-jobs.ts +1 -12
- package/corpus/templates/brain/.agents/skills/brain/RUNBOOK.md +54 -6
- package/corpus/templates/brain/.agents/skills/brain/SKILL.md +20 -9
- package/corpus/templates/brain/.agents/skills/ingestion-and-connectors/SKILL.md +33 -1
- package/corpus/templates/brain/AGENTS.md +3 -1
- package/corpus/templates/brain/README.md +4 -1
- package/corpus/templates/brain/actions/_schemas.ts +30 -8
- package/corpus/templates/brain/actions/ask-brain.ts +124 -14
- package/corpus/templates/brain/actions/create-source.ts +18 -2
- package/corpus/templates/brain/actions/enqueue-captures-distillation.ts +8 -123
- package/corpus/templates/brain/actions/enqueue-distillation.ts +6 -127
- package/corpus/templates/brain/actions/import-capture.ts +17 -5
- package/corpus/templates/brain/actions/import-transcript.ts +17 -5
- package/corpus/templates/brain/actions/update-source.ts +25 -5
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/brain/changelog/2026-07-30-blessed-resources-can-feed-cited-company-answers.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-30-the-left-sidebar-no-longer-shows-a-blank-organization-placeh.md +6 -0
- package/corpus/templates/brain/server/lib/brain.ts +49 -19
- package/corpus/templates/brain/server/lib/distillation-queue.ts +147 -0
- package/corpus/templates/brain/server/lib/source-policy.ts +264 -0
- package/corpus/templates/brain/server/plugins/agent-chat.ts +3 -2
- package/corpus/templates/brain/server/routes/api/_agent-native/brain/ingest.post.ts +116 -19
- package/corpus/templates/clips/app/components/meetings/google-oauth-identity-notice.tsx +51 -0
- package/corpus/templates/clips/app/i18n/en-US.ts +4 -0
- package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +3 -1
- package/corpus/templates/clips/changelog/2026-07-30-google-calendar-warning.md +6 -0
- package/corpus/templates/content/app/components/editor/VisualEditor.tsx +72 -8
- package/corpus/templates/content/changelog/2026-07-30-the-slash-command-hint-now-stays-on-only-the-active-empty-li.md +6 -0
- package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +506 -11
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +148 -17
- package/corpus/templates/design/app/components/design/canvas-interactions/design-canvas-interactions.ts +357 -0
- package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +7 -466
- package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +15 -311
- package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +19 -997
- package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +8 -1216
- package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +31 -38
- package/corpus/templates/design/package.json +0 -1
- package/corpus/templates/dispatch/AGENTS.md +8 -0
- package/corpus/templates/dispatch/DEVELOPING.md +29 -0
- package/corpus/templates/dispatch/actions/view-screen.ts +34 -2
- package/corpus/templates/dispatch/app/i18n-data.ts +457 -0
- package/corpus/templates/dispatch/changelog/2026-07-30-delegated-dispatch-work-continues-reliably-in-the-background.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-30-find-failed-runs-across-apps.md +6 -0
- package/corpus/templates/dispatch/netlify.toml +3 -0
- package/corpus/templates/slides/.agents/skills/analytics-data-for-decks/SKILL.md +8 -12
- package/corpus/templates/slides/AGENTS.md +4 -4
- package/corpus/templates/slides/actions/duplicate-deck.ts +19 -4
- package/corpus/templates/slides/app/components/deck/DeckCard.tsx +2 -10
- package/corpus/templates/slides/app/components/deck/MermaidRenderer.tsx +12 -1
- package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +30 -13
- package/corpus/templates/slides/app/components/editor/DeckEditorSkeleton.tsx +35 -0
- package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +63 -56
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +21 -76
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +1110 -292
- package/corpus/templates/slides/app/components/editor/SlideOverflowWarning.tsx +53 -0
- package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +235 -18
- package/corpus/templates/slides/app/components/editor/SpeakerNotesPanel.tsx +4 -1
- package/corpus/templates/slides/app/components/editor/canvas-interactions/index.ts +11 -0
- package/corpus/templates/slides/app/components/editor/canvas-interactions/slides-canvas-adapter.ts +129 -0
- package/corpus/templates/slides/app/components/editor/selection-overlay-measurement.ts +70 -0
- package/corpus/templates/slides/app/components/editor/slide-object-interactions.ts +519 -65
- package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +36 -426
- package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +19 -458
- package/corpus/templates/slides/app/context/DeckContext.tsx +179 -72
- package/corpus/templates/slides/app/global.css +105 -0
- package/corpus/templates/slides/app/i18n/en-US.ts +8 -0
- package/corpus/templates/slides/app/lib/deck-editor-loading.ts +26 -0
- package/corpus/templates/slides/app/lib/mermaid-blocks.ts +27 -0
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +71 -38
- package/corpus/templates/slides/app/pages/Index.tsx +98 -41
- package/corpus/templates/slides/changelog/2026-07-30-deck-loading-no-longer-flashes-an-unavailable-message.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-duplicating-a-deck-from-the-deck-list-now-opens-the-copy-imm.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-layout-overflow-warning-is-readable-and-dismissible.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-shared-canvas-annotations.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-slide-objects-can-be-moved-as-a-group-copied-and-pasted-with.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-slide-text-editing-and-object-controls-now-match-google-slides.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-style-panel-now-scrolls-with-speaker-notes-open-shows-the-sl.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-top-toolbar-controls-now-use-consistent-sizing-with-undo-and.md +6 -0
- package/corpus/templates/slides/netlify.toml +3 -1
- package/corpus/templates/slides/package.json +0 -1
- package/corpus/templates/slides/server/lib/chat-attachments.ts +18 -0
- package/corpus/templates/slides/server/plugins/agent-chat.ts +5 -0
- package/corpus/templates/slides/vite.config.ts +0 -1
- package/corpus/toolkit/CHANGELOG.md +13 -0
- package/corpus/toolkit/README.md +19 -0
- package/corpus/toolkit/agent-native.eject.json +38 -0
- package/corpus/toolkit/package.json +29 -1
- package/corpus/toolkit/src/canvas-annotations/CanvasCommentPins.tsx +861 -0
- package/corpus/toolkit/src/canvas-annotations/DrawOverlay.tsx +1233 -0
- package/corpus/toolkit/src/canvas-annotations/index.ts +15 -0
- package/corpus/toolkit/src/canvas-annotations/types.ts +14 -0
- package/corpus/toolkit/src/canvas-interactions/canvas-interactions.ts +933 -0
- package/corpus/toolkit/src/canvas-interactions/index.ts +67 -0
- package/corpus/toolkit/src/design-tweaks/scrub-input-utils.ts +311 -0
- package/corpus/toolkit/src/design-tweaks/scrub-input.tsx +491 -0
- package/corpus/toolkit/src/design-tweaks/visual-style-controls.tsx +26 -171
- package/corpus/toolkit/src/index.ts +1 -0
- package/dist/a2a/client.d.ts +23 -0
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +309 -44
- package/dist/a2a/client.js.map +1 -1
- package/dist/a2a/correlation.d.ts +1 -0
- package/dist/a2a/correlation.d.ts.map +1 -1
- package/dist/a2a/correlation.js +27 -0
- package/dist/a2a/correlation.js.map +1 -1
- package/dist/a2a/types.d.ts +4 -0
- package/dist/a2a/types.d.ts.map +1 -1
- package/dist/a2a/types.js.map +1 -1
- package/dist/action.d.ts +3 -0
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js.map +1 -1
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +34 -7
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/production-agent.d.ts +40 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +113 -15
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-loop-with-resume.d.ts +21 -0
- package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
- package/dist/agent/run-loop-with-resume.js +163 -4
- package/dist/agent/run-loop-with-resume.js.map +1 -1
- package/dist/agent/run-manager.d.ts +16 -9
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +93 -42
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/thread-debug-history.d.ts +10 -0
- package/dist/agent/thread-debug-history.d.ts.map +1 -0
- package/dist/agent/thread-debug-history.js +68 -0
- package/dist/agent/thread-debug-history.js.map +1 -0
- package/dist/agent/types.d.ts +3 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +6 -1
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/templates-meta.js +2 -2
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +76 -13
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.js +1 -1
- package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +12 -3
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +48 -17
- package/dist/db/client.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/integrations/adapters/slack.js +7 -3
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/localization/default-messages.d.ts +43 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +43 -0
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp/screen-memory-stdio.d.ts +7 -7
- package/dist/mcp/screen-memory-stdio.d.ts.map +1 -1
- package/dist/notifications/routes.d.ts +6 -6
- package/dist/observability/traces.d.ts +3 -1
- package/dist/observability/traces.d.ts.map +1 -1
- package/dist/observability/traces.js +73 -4
- package/dist/observability/traces.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +12 -12
- package/dist/provider-api/actions/provider-api.d.ts +13 -13
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +233 -10
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/scripts/describe-workspace-apps.js +2 -2
- package/dist/scripts/describe-workspace-apps.js.map +1 -1
- package/dist/secrets/crypto.d.ts +31 -21
- package/dist/secrets/crypto.d.ts.map +1 -1
- package/dist/secrets/crypto.js +108 -33
- package/dist/secrets/crypto.js.map +1 -1
- package/dist/secrets/storage.d.ts +3 -5
- package/dist/secrets/storage.d.ts.map +1 -1
- package/dist/secrets/storage.js +40 -25
- package/dist/secrets/storage.js.map +1 -1
- package/dist/server/agent-capabilities.js +1 -1
- package/dist/server/agent-capabilities.js.map +1 -1
- package/dist/server/agent-chat/action-filters-a2a.d.ts +17 -3
- package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -1
- package/dist/server/agent-chat/action-filters-a2a.js +92 -3
- package/dist/server/agent-chat/action-filters-a2a.js.map +1 -1
- package/dist/server/agent-chat/context-tools.d.ts.map +1 -1
- package/dist/server/agent-chat/context-tools.js +2 -0
- package/dist/server/agent-chat/context-tools.js.map +1 -1
- package/dist/server/agent-chat/plugin-options.d.ts +23 -0
- package/dist/server/agent-chat/plugin-options.d.ts.map +1 -1
- package/dist/server/agent-chat/plugin-options.js +4 -1
- package/dist/server/agent-chat/plugin-options.js.map +1 -1
- package/dist/server/agent-chat/prompt-resources.js +1 -1
- package/dist/server/agent-chat/prompt-resources.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +2 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +79 -56
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/templates/default/.agents/skills/secrets/SKILL.md +14 -7
- package/dist/templates/headless/.agents/skills/secrets/SKILL.md +14 -7
- package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +18 -7
- package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +15 -14
- package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +14 -7
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +1 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/agent-native-toolkit.mdx +13 -6
- package/docs/content/cloneable-saas.mdx +5 -5
- package/docs/content/creating-templates.mdx +9 -0
- package/docs/content/deployment.mdx +14 -10
- package/docs/content/doctor.mdx +8 -1
- package/docs/content/drop-in-agent.mdx +1 -1
- package/docs/content/extensions.mdx +18 -18
- package/docs/content/faq.mdx +4 -4
- package/docs/content/key-concepts.mdx +30 -21
- package/docs/content/template-brain-developers.mdx +4 -1
- package/docs/content/template-mail-developers.mdx +4 -1
- package/docs/content/what-is-agent-native.mdx +6 -6
- package/package.json +2 -2
- package/src/a2a/client.ts +449 -66
- package/src/a2a/correlation.ts +31 -0
- package/src/a2a/types.ts +4 -0
- package/src/action.ts +3 -0
- package/src/agent/engine/registry.ts +45 -5
- package/src/agent/production-agent.ts +151 -18
- package/src/agent/run-loop-with-resume.ts +190 -3
- package/src/agent/run-manager.ts +117 -41
- package/src/agent/thread-debug-history.ts +86 -0
- package/src/agent/types.ts +3 -1
- package/src/cli/create.ts +11 -1
- package/src/cli/templates-meta.ts +2 -2
- package/src/client/agent-chat-adapter.ts +91 -13
- package/src/client/resources/McpIntegrationDialog.tsx +11 -9
- package/src/client/sse-event-processor.ts +17 -3
- package/src/db/client.ts +57 -17
- package/src/integrations/adapters/slack.ts +8 -3
- package/src/localization/default-messages.ts +44 -0
- package/src/observability/traces.ts +78 -5
- package/src/scripts/call-agent.ts +290 -9
- package/src/scripts/describe-workspace-apps.ts +2 -2
- package/src/secrets/crypto.ts +126 -34
- package/src/secrets/storage.ts +61 -25
- package/src/server/agent-capabilities.ts +1 -1
- package/src/server/agent-chat/action-filters-a2a.ts +111 -7
- package/src/server/agent-chat/context-tools.ts +2 -0
- package/src/server/agent-chat/plugin-options.ts +34 -1
- package/src/server/agent-chat/prompt-resources.ts +1 -1
- package/src/server/agent-chat-plugin.ts +91 -59
- package/src/templates/default/.agents/skills/secrets/SKILL.md +14 -7
- package/src/templates/headless/.agents/skills/secrets/SKILL.md +14 -7
- package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +18 -7
- package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +15 -14
- package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +14 -7
- package/src/vite/client.ts +1 -0
package/corpus/README.md
CHANGED
package/corpus/core/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,68 @@
|
|
|
1
1
|
# @agent-native/core
|
|
2
2
|
|
|
3
|
+
## 0.131.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- c0e7d64: Clarify workspace `add-app` feedback when no app is selected, and report when every available app is already installed.
|
|
8
|
+
- c0e7d64: Give delegated agent turns their app's actions as native tools in dev, so
|
|
9
|
+
asking a sibling app a question actually works.
|
|
10
|
+
|
|
11
|
+
In dev the interactive surface deliberately omits template actions from the tool
|
|
12
|
+
registry and lets the agent call them through `bash`, which sidesteps the
|
|
13
|
+
degenerate empty-object tool call some models emit for complex schemas. That
|
|
14
|
+
trade is fine for a person — they see the bad call and rephrase. It is the wrong
|
|
15
|
+
trade for a delegated turn. An A2A caller, or an external host calling `ask_app`
|
|
16
|
+
over MCP, has nobody to intervene: with no native action the receiving agent
|
|
17
|
+
shells out, the call misfires, and it repeats the same command until the
|
|
18
|
+
repetition guard ends the run minutes later with no answer. Observed in a
|
|
19
|
+
workspace as a sibling question that ran 4m45s and returned the wrong window,
|
|
20
|
+
and elsewhere as runs stopped after eight identical `bash` calls.
|
|
21
|
+
|
|
22
|
+
Both delegated surfaces now keep template actions native even in dev. A rejected
|
|
23
|
+
`{}` call returns a schema error the model can correct on its next step, which
|
|
24
|
+
is strictly better than a shell loop no caller can see or recover from.
|
|
25
|
+
|
|
26
|
+
- c0e7d64: Prevent timed Neon queries from leaking statement timeouts across pooled sessions and cancel background HTTP queries at their deadline.
|
|
27
|
+
- c0e7d64: Make cross-app delegation ask the receiving specialist agent by default, keep
|
|
28
|
+
typed remote terminal states intact, retry idempotent transient transport
|
|
29
|
+
failures, prevent recursive agent cycles, and bound delegated context growth.
|
|
30
|
+
Proven durable-background delegated runs also keep the full bounded
|
|
31
|
+
continuation allowance while sharing one cumulative wall-clock deadline, so a
|
|
32
|
+
slow successful child task cannot strand its caller before the caller finishes
|
|
33
|
+
its own tool work. After a provider exhausts its short in-call 429/529 retry
|
|
34
|
+
budget, a proven background delegation now gets one cooled-down continuation,
|
|
35
|
+
with a hard cap that prevents sustained throttling from becoming a request
|
|
36
|
+
storm.
|
|
37
|
+
|
|
38
|
+
Receiving agents keep ownership of source selection, schema interpretation,
|
|
39
|
+
queries, joins, and their local tools. Direct read actions remain available for
|
|
40
|
+
exact bounded contracts, but are no longer advertised as a workaround for an
|
|
41
|
+
unreliable agent call.
|
|
42
|
+
|
|
43
|
+
Dispatch now opts into the same durable background run contract it emits at
|
|
44
|
+
deploy time, so delegated control-plane work is not cut off by the foreground
|
|
45
|
+
40-second budget while already running in the 15-minute worker.
|
|
46
|
+
|
|
47
|
+
Workspace vault ciphertext now prefers the workspace A2A-derived encryption
|
|
48
|
+
key over each app's independent auth secret. Existing app-auth-encrypted rows
|
|
49
|
+
remain readable by their owning app and are compare-and-swap migrated on read,
|
|
50
|
+
so sibling agents can reliably resolve the same organization credentials
|
|
51
|
+
without exposing or copying their values. Automatic engine selection also
|
|
52
|
+
pairs the chosen provider with that provider's credential instead of reusing
|
|
53
|
+
an unrelated active key.
|
|
54
|
+
|
|
55
|
+
Documentation now distinguishes framework Core, optional Toolkit, and optional
|
|
56
|
+
Templates, and makes source editing an explicit workspace/write-tool capability
|
|
57
|
+
rather than assuming every embedded agent has filesystem access.
|
|
58
|
+
|
|
59
|
+
- c0e7d64: Retry transient provider TLS connection failures before surfacing them in agent chat.
|
|
60
|
+
- c0e7d64: Hide unauthenticated connection tests from MCP presets that require provider setup.
|
|
61
|
+
- c0e7d64: Recover background agent turns that stay alive without making real progress, retry transient run-event subscription failures with bounded backoff, keep reconnect diagnostics honest, and deduplicate repeated system prompts in thread debug history.
|
|
62
|
+
- Updated dependencies [c0e7d64]
|
|
63
|
+
- Updated dependencies [c0e7d64]
|
|
64
|
+
- @agent-native/toolkit@0.12.0
|
|
65
|
+
|
|
3
66
|
## 0.131.5
|
|
4
67
|
|
|
5
68
|
### Patch Changes
|
|
@@ -30,23 +30,25 @@ being rebuilt in slightly different ways every time.
|
|
|
30
30
|
/>
|
|
31
31
|
</WireframeBlock>
|
|
32
32
|
|
|
33
|
-
<Diagram id="doc-block-toolkits-boundary" title="How
|
|
33
|
+
<Diagram id="doc-block-toolkits-boundary" title="How the three layers fit" summary={"Core is the framework foundation. Toolkit is optional reusable infrastructure and UI. Templates are optional apps built on Core, often using Toolkit."}>
|
|
34
34
|
|
|
35
35
|
```html
|
|
36
36
|
<div class="diagram-row">
|
|
37
37
|
<div class="diagram-card">
|
|
38
|
-
<span class="diagram-pill accent">
|
|
39
|
-
actions, SQL, auth, app state, access checks,
|
|
38
|
+
<span class="diagram-pill accent">Core</span><br />
|
|
39
|
+
framework runtime: actions, SQL, auth, app state, access checks, live sync
|
|
40
40
|
</div>
|
|
41
41
|
<div class="diagram-arrow diagram-muted" aria-hidden="true">→</div>
|
|
42
42
|
<div class="diagram-card">
|
|
43
43
|
<span class="diagram-pill accent">Toolkit</span><br />
|
|
44
|
-
collaboration, sharing, setup, review, history,
|
|
44
|
+
optional reusable pieces: collaboration, sharing, setup, review, history,
|
|
45
|
+
observability
|
|
45
46
|
</div>
|
|
46
47
|
<div class="diagram-arrow diagram-muted" aria-hidden="true">→</div>
|
|
47
48
|
<div class="diagram-card">
|
|
48
|
-
<span class="diagram-pill accent">
|
|
49
|
-
domain schema, routes, actions, branding, specialized
|
|
49
|
+
<span class="diagram-pill accent">Templates</span><br />
|
|
50
|
+
optional apps: domain schema, routes, actions, branding, specialized
|
|
51
|
+
workflows
|
|
50
52
|
</div>
|
|
51
53
|
</div>
|
|
52
54
|
```
|
|
@@ -70,6 +72,11 @@ being rebuilt in slightly different ways every time.
|
|
|
70
72
|
|
|
71
73
|
</Diagram>
|
|
72
74
|
|
|
75
|
+
Core is the framework. Toolkit is an optional shelf of reusable pieces for the
|
|
76
|
+
framework. Templates are optional apps built on Core; they can use Toolkit and
|
|
77
|
+
can be forked and used as complete starting points. An app can also use Core
|
|
78
|
+
directly without adopting Toolkit or a template.
|
|
79
|
+
|
|
73
80
|
## Catalog {#catalog}
|
|
74
81
|
|
|
75
82
|
| Area | Start here | What it covers |
|
|
@@ -216,28 +216,28 @@ The path from "I want my own SaaS" to "I have my own SaaS" is short:
|
|
|
216
216
|
|
|
217
217
|
1. **Pick an example app.** Use the CLI picker, or browse the docs and pick one to start from.
|
|
218
218
|
2. **Brand it.** Change the name, colors, logo, and copy. Most example apps expose this in a single config file.
|
|
219
|
-
3. **Customize it.**
|
|
219
|
+
3. **Customize it.** Make source changes in your own repository and development workflow. An agent can help when its frame is intentionally granted workspace and write tooling; otherwise the embedded agent operates the resulting app through its actions, data, and configured integrations.
|
|
220
220
|
4. **Ship it.** Run the deploy command. You now have your own production SaaS at your own domain.
|
|
221
221
|
|
|
222
|
-
Steps 2–4 typically take days, not months. Step 3 is open-ended
|
|
222
|
+
Steps 2–4 typically take days, not months. Step 3 is open-ended because the app is yours to evolve, while the embedded agent remains available to operate the deployed product and can assist with source changes when code access is explicitly enabled.
|
|
223
223
|
|
|
224
224
|
## Why this is practical {#why}
|
|
225
225
|
|
|
226
226
|
A separate-codebase-per-user model breaks down at scale: every user maintaining their own inbox sounds like a maintenance nightmare. Two framework decisions make it work:
|
|
227
227
|
|
|
228
|
-
1. **The
|
|
228
|
+
1. **The app keeps the framework contract.** Your source owns the domain behavior, while Core keeps actions, SQL, state, and sync consistent as the app evolves.
|
|
229
229
|
2. **Per-user customization without per-user code.** Skills, memory, instructions, connected MCP servers, and sub-agents all live in SQL. Every user gets their own customization layer; the shared codebase hosts all of them at once.
|
|
230
230
|
|
|
231
231
|
The result: Claude-Code-level flexibility for each user, with normal SaaS deployment economics.
|
|
232
232
|
|
|
233
|
-
<Diagram id="doc-block-bhg7mw" title="Why per-user customization scales" summary={"Two ideas keep the start-from-a-working-app model practical: the
|
|
233
|
+
<Diagram id="doc-block-bhg7mw" title="Why per-user customization scales" summary={"Two ideas keep the start-from-a-working-app model practical: the app keeps the framework contract, and per-user customization lives in SQL — not in per-user code."}>
|
|
234
234
|
|
|
235
235
|
```html
|
|
236
236
|
<div class="diagram-why">
|
|
237
237
|
<div class="diagram-panel" data-rough>
|
|
238
238
|
<strong>Shared codebase</strong
|
|
239
239
|
><small class="diagram-muted">one app, deployed once</small>
|
|
240
|
-
<div class="diagram-pill accent">
|
|
240
|
+
<div class="diagram-pill accent">app keeps the framework contract</div>
|
|
241
241
|
</div>
|
|
242
242
|
<div class="diagram-arrow diagram-muted" aria-hidden="true">↔</div>
|
|
243
243
|
<div class="diagram-panel" data-rough>
|
|
@@ -14,6 +14,15 @@ shadcn-style primitives, toast/mobile hooks, date pickers, and simple app shell
|
|
|
14
14
|
slots. Keep template-specific variants local when they encode product behavior
|
|
15
15
|
or visual identity.
|
|
16
16
|
|
|
17
|
+
Keep the three layers in mind when deciding where a capability belongs:
|
|
18
|
+
|
|
19
|
+
- **Core - the framework:** the required runtime and data contract every app can use.
|
|
20
|
+
- **Toolkit - optional reusable pieces:** shared UI and product systems that apps can adopt, compose, or fork.
|
|
21
|
+
- **Templates - optional apps:** complete domain products built on Core, commonly using Toolkit, that people can fork and use as starting points.
|
|
22
|
+
|
|
23
|
+
Toolkit and Templates are optional. A template is not the framework itself, and
|
|
24
|
+
Toolkit does not replace Core.
|
|
25
|
+
|
|
17
26
|
A good template:
|
|
18
27
|
|
|
19
28
|
- Solves one workflow end-to-end, with useful seed data or an empty-state flow.
|
|
@@ -536,14 +536,14 @@ Database connection variables (`DATABASE_URL`, `DATABASE_AUTH_TOKEN`, per-app `<
|
|
|
536
536
|
|
|
537
537
|
These must be set before promoting an app to a real prod deploy. Missing values either fail-closed (the framework refuses to start / refuses to handle requests) or fall back to weaker behavior with a loud warning.
|
|
538
538
|
|
|
539
|
-
| Variable | Description
|
|
540
|
-
| ------------------------ |
|
|
541
|
-
| `BETTER_AUTH_SECRET` | 32+ char random string. Signs session cookies
|
|
542
|
-
| `BETTER_AUTH_URL` | Public origin of this app (e.g. `https://mail.example.com`). Used for cookie domain and OAuth redirect construction.
|
|
543
|
-
| `ANTHROPIC_API_KEY` | API key for the embedded production agent. **In multi-tenant deploys**, the framework refuses to fall back to this when the user has no per-user key — bring-your-own-key is required. Single-tenant self-hosted installs use it as a global key.
|
|
544
|
-
| `OAUTH_STATE_SECRET` | Dedicated HMAC key for OAuth state envelopes (Google, Atlassian, Zoom). Falls back to `BETTER_AUTH_SECRET` when unset, but a dedicated value is recommended so rotating one doesn't invalidate the other. Generate via `openssl rand -hex 32`.
|
|
545
|
-
| `A2A_SECRET` | Shared HMAC for inter-app A2A JSON-RPC. Without it, every A2A endpoint and the `/_agent-native/integrations/process-task` self-fire endpoint return 503 in production.
|
|
546
|
-
| `SECRETS_ENCRYPTION_KEY` | AES-256-GCM key for the encrypted-at-rest secrets vault.
|
|
539
|
+
| Variable | Description |
|
|
540
|
+
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
541
|
+
| `BETTER_AUTH_SECRET` | 32+ char random string. Signs session cookies and is the fallback for `OAUTH_STATE_SECRET` and app-local encrypted values. It is also a legacy read candidate for existing shared vault ciphertext. Hard-required: the framework throws on startup if missing in production. |
|
|
542
|
+
| `BETTER_AUTH_URL` | Public origin of this app (e.g. `https://mail.example.com`). Used for cookie domain and OAuth redirect construction. |
|
|
543
|
+
| `ANTHROPIC_API_KEY` | API key for the embedded production agent. **In multi-tenant deploys**, the framework refuses to fall back to this when the user has no per-user key — bring-your-own-key is required. Single-tenant self-hosted installs use it as a global key. |
|
|
544
|
+
| `OAUTH_STATE_SECRET` | Dedicated HMAC key for OAuth state envelopes (Google, Atlassian, Zoom). Falls back to `BETTER_AUTH_SECRET` when unset, but a dedicated value is recommended so rotating one doesn't invalidate the other. Generate via `openssl rand -hex 32`. |
|
|
545
|
+
| `A2A_SECRET` | Shared HMAC for inter-app A2A JSON-RPC. Without it, every A2A endpoint and the `/_agent-native/integrations/process-task` self-fire endpoint return 503 in production. When `SECRETS_ENCRYPTION_KEY` is unset, shared vault ciphertext uses a purpose-derived key from this value, so rotating it also rotates the vault key. |
|
|
546
|
+
| `SECRETS_ENCRYPTION_KEY` | Preferred stable AES-256-GCM key for the shared encrypted-at-rest secrets vault. Set the same value in every app that reads the vault. Shared vault reads fall back to purpose-derived `A2A_SECRET`, then legacy Better Auth and app-scoped keys. Before rotating A2A, add this key everywhere and read/migrate every existing row while the old A2A material remains available. |
|
|
547
547
|
|
|
548
548
|
### Auth & Identity {#env-auth}
|
|
549
549
|
|
|
@@ -628,13 +628,17 @@ The `run-code` sandbox is process-level isolation, not an OS container. It strip
|
|
|
628
628
|
|
|
629
629
|
## Updating UI in Production {#updating-ui-in-production}
|
|
630
630
|
|
|
631
|
-
|
|
631
|
+
The ordinary deployed app agent works through app tools — actions, database,
|
|
632
|
+
MCP, and configured integrations — rather than receiving ambient access to the
|
|
633
|
+
app's source code. Source changes belong in the repository's development
|
|
634
|
+
workflow. An embedded, local, or Builder frame can edit the repository when
|
|
635
|
+
that frame is intentionally granted workspace and write tooling.
|
|
632
636
|
|
|
633
637
|
In a standard production deployment with [production code execution](#production-code-execution) left off, the agent has access to app tools (actions, database, MCP) but not the filesystem. This means the agent can read and write data, run actions, and interact with external services — but it can't edit your React components or add new routes on a deployed instance.
|
|
634
638
|
|
|
635
639
|
### Builder.io: Visual Editing in Production {#builderio}
|
|
636
640
|
|
|
637
|
-
[Builder.io](https://www.builder.io?utm_source=agent-native&utm_medium=docs&utm_campaign=framework&utm_content=deployment)
|
|
641
|
+
[Builder.io](https://www.builder.io?utm_source=agent-native&utm_medium=docs&utm_campaign=framework&utm_content=deployment) is a separate managed code-capable workflow where an agent can modify your app's UI in production. Connect your repo to Builder.io and prompt for UI changes directly — no redeploy needed.
|
|
638
642
|
|
|
639
643
|
**How it works:**
|
|
640
644
|
|
|
@@ -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
|
-
|
|
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
|
|
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,
|
|
34
|
-
|
|
35
|
-
|
|
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
|
|
657
|
+
## Should I use an extension or the app source workflow? {#vs-app-code}
|
|
656
658
|
|
|
657
|
-
|
|
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
|
-
- **
|
|
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
|
|
673
|
-
| --------------------- | ------------------------------ |
|
|
674
|
-
| **Created by** | Agent (or user) at runtime |
|
|
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: **
|
|
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
|
|
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
|
|
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
|
|
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
|
-
###
|
|
141
|
+
### Does the embedded agent edit the app's source code? {#can-the-agent-modify-code}
|
|
142
142
|
|
|
143
|
-
|
|
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
|
|
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Key Concepts"
|
|
3
|
-
description: "How agent-native apps work:
|
|
3
|
+
description: "How agent-native apps work across three layers: the Core framework, optional Toolkit building blocks, and optional Templates, plus the shared actions, SQL database, app-agent loop, and portability contract."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Key Concepts
|
|
7
7
|
|
|
8
8
|
How agent-native apps work under the hood — the principles and the architecture. This page is the contract; for the vision and the case for building this way, see [What Is Agent-Native?](/docs/what-is-agent-native).
|
|
9
9
|
|
|
10
|
+
## The three layers {#three-layers}
|
|
11
|
+
|
|
12
|
+
Agent Native is a framework, not a single template. It has three layers:
|
|
13
|
+
|
|
14
|
+
| Layer | What it is |
|
|
15
|
+
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
16
|
+
| **Core - the framework** | The foundational runtime contract: actions, SQL and Drizzle helpers, auth, application state, agent execution, access checks, routing, and live sync. Every app can use Core directly. |
|
|
17
|
+
| **Toolkit - optional reusable pieces for the framework** | Shared app-building UI and product systems such as primitives, editors, sharing, collaboration, settings, and agent UX. Apps can use, compose, or fork the pieces they need. |
|
|
18
|
+
| **Templates - optional apps built on Core** | Complete, domain-specific apps with routes, schema, actions, instructions, and visual identity. First-party and custom templates commonly use Toolkit, and can be forked and used as starting points. |
|
|
19
|
+
|
|
20
|
+
Core is the foundation. Toolkit and Templates are optional: a template can use Toolkit, but Toolkit is not required to build an app on Core.
|
|
21
|
+
|
|
10
22
|
## The architecture {#the-architecture}
|
|
11
23
|
|
|
12
|
-
|
|
24
|
+
At runtime, every agent-native app is three things working together:
|
|
13
25
|
|
|
14
|
-
- **Agent** — Autonomous AI that reads data, writes data, runs actions, and
|
|
26
|
+
- **Agent** — Autonomous AI that reads data, writes data, runs actions, and uses configured tools. It can also modify source when its frame is intentionally granted workspace and write tooling. Customizable with skills and instructions.
|
|
15
27
|
- **Application** — The product surface around the agent. This may start as chat, add native inline results, grow into a small control plane, or become a full React UI with dashboards, flows, and visualizations.
|
|
16
|
-
- **Computer** — Database, browser,
|
|
28
|
+
- **Computer** — Database, browser, and configured tool runtimes. Agents work through the app's action and data surface; MCP servers are optional add-ons, not the foundation.
|
|
17
29
|
|
|
18
30
|
<Diagram id="doc-block-t1f7pj" title="Agent, application, and computer" summary="Three layers working together over one shared SQL store. The agent and the application both read and write the same data.">
|
|
19
31
|
|
|
@@ -23,7 +35,7 @@ Every agent-native app is three things working together:
|
|
|
23
35
|
<div class="diagram-card">
|
|
24
36
|
<span class="diagram-pill accent">Agent</span
|
|
25
37
|
><small class="diagram-muted"
|
|
26
|
-
>reads + writes data, runs actions,
|
|
38
|
+
>reads + writes data, runs actions, uses configured tools</small
|
|
27
39
|
>
|
|
28
40
|
</div>
|
|
29
41
|
<div class="diagram-card">
|
|
@@ -114,14 +126,13 @@ a `customer-research` skill might tell the agent which sources to inspect and
|
|
|
114
126
|
how to summarize evidence, while `search-crm` and `create-brief` actions fetch
|
|
115
127
|
and write the actual data.
|
|
116
128
|
|
|
117
|
-
|
|
129
|
+
Five rules govern the architecture:
|
|
118
130
|
|
|
119
131
|
1. **Data lives in SQL** — all app state lives in the database via Drizzle ORM
|
|
120
132
|
2. **All AI goes through the agent** — no inline LLM calls
|
|
121
133
|
3. **Actions for agent operations** — complex work runs as actions
|
|
122
134
|
4. **Live sync keeps the UI in sync** — database changes stream over SSE with polling as the universal fallback
|
|
123
|
-
5. **
|
|
124
|
-
6. **Application state in SQL** — ephemeral UI state lives in the database, readable by both agent and UI
|
|
135
|
+
5. **Application state in SQL** — ephemeral UI state lives in the database, readable by both agent and UI
|
|
125
136
|
|
|
126
137
|
## The four-area checklist {#four-area-checklist}
|
|
127
138
|
|
|
@@ -267,8 +278,8 @@ sendToAgentChat({
|
|
|
267
278
|
Why not call an LLM inline?
|
|
268
279
|
|
|
269
280
|
- **AI is non-deterministic.** You need conversation flow to give feedback and iterate — not one-shot buttons.
|
|
270
|
-
- **Context matters.** The agent has
|
|
271
|
-
- **The agent can do more.** It can run actions, browse the web,
|
|
281
|
+
- **Context matters.** The agent has the app's instructions, skills, and history. An inline call has none of that.
|
|
282
|
+
- **The agent can do more.** It can run actions, browse the web, and chain multiple steps together.
|
|
272
283
|
- **External execution.** Because everything goes through the agent and actions, any app can be driven from Slack, Telegram, scheduled jobs, scripts, or another agent via [A2A](/docs/a2a-protocol).
|
|
273
284
|
|
|
274
285
|
## Actions system {#actions-system}
|
|
@@ -397,17 +408,15 @@ Implement a domain operation once as an action; the framework exposes it to ever
|
|
|
397
408
|
|
|
398
409
|
For the full protocol/surface matrix (MCP server and OAuth, MCP Apps, A2A, deep links, native chat widgets, Generative UI, AgentChatRuntime connectors, Agent Web, and the adapter horizon for ACP and A2UI), and for choosing a product shape — chat, inline UI, full app pages, embedded sidecar, automation, or external-agent access — see [Agent Surfaces](/docs/agent-surfaces).
|
|
399
410
|
|
|
400
|
-
##
|
|
401
|
-
|
|
402
|
-
This is a feature, not a bug. The agent can safely edit the app's source code: components, routes, styles, actions.
|
|
403
|
-
|
|
404
|
-
There's no shared codebase to break. You own the app, and the agent evolves it for you over time:
|
|
411
|
+
## App code and customization {#agent-modifies-code}
|
|
405
412
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
413
|
+
The framework does not grant the embedded agent ambient access to an app's
|
|
414
|
+
source code. In a deployed app, the agent normally works through actions,
|
|
415
|
+
SQL-backed state, and configured integrations. It can edit components, routes,
|
|
416
|
+
styles, and actions when its frame is intentionally granted workspace and write
|
|
417
|
+
tooling. Templates are complete apps that you can fork and customize in your
|
|
418
|
+
own repository and development workflow either way. For runtime customization
|
|
419
|
+
without source changes, use [Extensions](/docs/extensions).
|
|
411
420
|
|
|
412
421
|
## Portable by default {#hosting-agnostic}
|
|
413
422
|
|
|
@@ -430,7 +439,7 @@ These sit on top of the same contract and have their own deep dives:
|
|
|
430
439
|
|
|
431
440
|
## What you get for free {#what-you-get-for-free}
|
|
432
441
|
|
|
433
|
-
Adopting the framework is valuable mostly because of what you stop having to build. The moment your app follows the
|
|
442
|
+
Adopting the framework is valuable mostly because of what you stop having to build. The moment your app follows the five rules, you inherit:
|
|
434
443
|
|
|
435
444
|
- **One action = every surface.** Every action defined with `defineAction()` is simultaneously an agent tool, a typesafe frontend hook (`useActionQuery` / `useActionMutation`), a framework-owned HTTP transport, a CLI command, an MCP tool for external clients, and an A2A tool for other agent-native apps. Optional `link` and `mcpApp` metadata add deep links and MCP Apps UI without a second implementation.
|
|
436
445
|
- **A full set of agent resources per user.** Skills, shared `LEARNINGS.md`, personal `memory/MEMORY.md`, `AGENTS.md`, custom sub-agents, scheduled jobs, connected MCP servers — all SQL-backed, no dev-box required. See [Agent Resources](/docs/agent-resources).
|
|
@@ -366,7 +366,10 @@ Brain follows the agent-native four-area contract — change behavior by editing
|
|
|
366
366
|
- `templates/brain/AGENTS.md` — top-level agent guide. Update when you add major features.
|
|
367
367
|
- `templates/brain/server/db/schema.ts` — data model. Additive migrations only.
|
|
368
368
|
|
|
369
|
-
|
|
369
|
+
Make these changes in the repository's development workflow. The embedded app
|
|
370
|
+
agent can edit source when its frame is intentionally granted workspace and
|
|
371
|
+
write tooling; otherwise it operates the resulting app through its actions and
|
|
372
|
+
data surface. See [Key Concepts](/docs/key-concepts#agent-modifies-code).
|
|
370
373
|
|
|
371
374
|
## What's next
|
|
372
375
|
|
|
@@ -343,7 +343,10 @@ Mail is yours to change. Everything important lives in a handful of places — s
|
|
|
343
343
|
|
|
344
344
|
**Changing keyboard shortcuts.** Keybind handlers live in `templates/mail/app/components/email/` — search for `useHotkeys` or `addEventListener("keydown"` to find where each key is wired.
|
|
345
345
|
|
|
346
|
-
|
|
346
|
+
Make these changes in the repository's development workflow. The embedded app
|
|
347
|
+
agent can edit source when its frame is intentionally granted workspace and
|
|
348
|
+
write tooling; otherwise it operates the resulting app through its actions and
|
|
349
|
+
data surface. See [Key Concepts](/docs/key-concepts#agent-modifies-code).
|
|
347
350
|
|
|
348
351
|
## What's next
|
|
349
352
|
|
|
@@ -313,11 +313,11 @@ See [Agent Resources](/docs/agent-resources) for the full concept.
|
|
|
313
313
|
|
|
314
314
|
## Whole-team development {#whole-team-development}
|
|
315
315
|
|
|
316
|
-
Agent-native isn't just for developers.
|
|
316
|
+
Agent-native isn't just for developers. The embedded agent gives the whole team a shared way to operate the app, while source-code changes remain part of the app's normal development workflow and can be delegated to a frame intentionally granted workspace and write tooling:
|
|
317
317
|
|
|
318
|
-
- **Designers** update
|
|
319
|
-
- **Product managers**
|
|
320
|
-
- **QA** tests the app and
|
|
318
|
+
- **Designers** update app data and workflows directly through the agent
|
|
319
|
+
- **Product managers** configure workflows and describe changes for the development team
|
|
320
|
+
- **QA** tests the app and reports what's broken through the agent
|
|
321
321
|
- **Anyone on the team** contributes through natural language
|
|
322
322
|
|
|
323
323
|
The vision: fewer handoffs, one person doing the work of a small team.
|
|
@@ -329,10 +329,10 @@ Agent-native apps follow a start-from-a-working-app model. You start from a **te
|
|
|
329
329
|
1. Pick a template on [agent-native.com/templates](/templates)
|
|
330
330
|
2. Use it immediately as a hosted app (e.g. mail.agent-native.com)
|
|
331
331
|
3. Create your own app from the template when you want to customize — "connect our Stripe account," "add a cohort chart"
|
|
332
|
-
4.
|
|
332
|
+
4. Customize the source in your own repository and development workflow
|
|
333
333
|
5. Deploy your app to your own domain — or stay on agent-native.com
|
|
334
334
|
|
|
335
|
-
Because it's _your_ app, not shared infrastructure,
|
|
335
|
+
Because it's _your_ app, not shared infrastructure, you own its source and can evolve it without changing the shared framework. The embedded agent operates the deployed app through its actions and data surface by default, and can modify source when its frame is explicitly code-enabled. See [Templates](/docs/cloneable-saas) for the full story.
|
|
336
336
|
|
|
337
337
|
Not ready to start from a whole template? You can also try agent-native by adding a **skill** to a coding agent you already use — install the Plans skill with `npx @agent-native/core@latest skills add visual-plan`. See the [Skills Guide](/docs/skills-guide#app-backed-skills).
|
|
338
338
|
|
package/corpus/core/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/core",
|
|
3
|
-
"version": "0.131.
|
|
3
|
+
"version": "0.131.6",
|
|
4
4
|
"description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
|
|
5
5
|
"homepage": "https://github.com/BuilderIO/agent-native#readme",
|
|
6
6
|
"bugs": {
|