@agent-native/core 0.124.2 → 0.124.4
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/README.md +1 -1
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +16 -0
- package/corpus/core/docs/content/cloneable-saas.mdx +9 -9
- package/corpus/core/docs/content/creating-templates.mdx +2 -2
- package/corpus/core/docs/content/deployment.mdx +23 -0
- package/corpus/core/docs/content/faq.mdx +4 -4
- package/corpus/core/docs/content/key-concepts.mdx +1 -1
- package/corpus/core/docs/content/multi-app-workspace.mdx +1 -1
- package/corpus/core/docs/content/syncing-template-changes.mdx +1 -1
- package/corpus/core/docs/content/template-analytics-developers.mdx +2 -2
- package/corpus/core/docs/content/template-analytics.mdx +2 -2
- package/corpus/core/docs/content/template-assets-developers.mdx +3 -3
- package/corpus/core/docs/content/template-assets.mdx +2 -2
- package/corpus/core/docs/content/template-brain-developers.mdx +2 -2
- package/corpus/core/docs/content/template-brain.mdx +1 -1
- package/corpus/core/docs/content/template-calendar-developers.mdx +1 -1
- package/corpus/core/docs/content/template-calendar.mdx +1 -1
- package/corpus/core/docs/content/template-chat.mdx +1 -1
- package/corpus/core/docs/content/template-clips-developers.mdx +4 -4
- package/corpus/core/docs/content/template-clips.mdx +2 -2
- package/corpus/core/docs/content/template-content-developers.mdx +2 -2
- package/corpus/core/docs/content/template-content.mdx +1 -1
- package/corpus/core/docs/content/template-design-brand-and-figma.mdx +1 -1
- package/corpus/core/docs/content/template-design-developers.mdx +2 -2
- package/corpus/core/docs/content/template-design.mdx +2 -2
- package/corpus/core/docs/content/template-dispatch-developers.mdx +5 -5
- package/corpus/core/docs/content/template-forms-developers.mdx +1 -1
- package/corpus/core/docs/content/template-forms.mdx +1 -1
- package/corpus/core/docs/content/template-mail-developers.mdx +2 -2
- package/corpus/core/docs/content/template-mail.mdx +2 -2
- package/corpus/core/docs/content/template-plan-developers.mdx +3 -3
- package/corpus/core/docs/content/template-plan.mdx +3 -3
- package/corpus/core/docs/content/template-slides-developers.mdx +4 -4
- package/corpus/core/docs/content/template-slides.mdx +1 -1
- package/corpus/core/docs/content/what-is-agent-native.mdx +5 -5
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/a2a/auth-policy.ts +1 -1
- package/corpus/core/src/agent/production-agent.ts +14 -1
- package/corpus/core/src/agent/run-manager.ts +6 -13
- package/corpus/core/src/cli/index.ts +11 -1
- package/corpus/core/src/client/route-chunk-recovery.ts +18 -7
- package/corpus/core/src/db/client.ts +7 -6
- package/corpus/core/src/db/migrations.ts +2 -1
- package/corpus/core/src/deploy/build.ts +290 -4
- package/corpus/core/src/deploy/nitro-preset.ts +50 -0
- package/corpus/core/src/integrations/pending-tasks-retry-job.ts +2 -1
- package/corpus/core/src/scripts/call-agent.ts +4 -2
- package/corpus/core/src/server/agent-discovery.ts +1 -0
- package/corpus/core/src/server/agent-run-context.ts +13 -3
- package/corpus/core/src/server/request-context.ts +2 -0
- package/corpus/core/src/shared/cloudflare-globals.d.ts +2 -1
- package/corpus/core/src/shared/runtime.ts +2 -0
- package/corpus/core/src/shared/streaming-text-smoothing.ts +15 -14
- package/corpus/core/src/templates/default/.agents/skills/secrets/SKILL.md +29 -0
- package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/de-DE.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/es-ES.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +6 -6
- package/corpus/core/src/templates/headless/.agents/skills/secrets/SKILL.md +29 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +29 -0
- package/corpus/core/src/vite/client.ts +20 -1
- package/corpus/templates/analytics/actions/restore-dashboard-revision.ts +9 -2
- package/corpus/templates/analytics/app/components/dashboard/DashboardHistoryPanel.tsx +3 -0
- package/corpus/templates/analytics/app/components/dashboard/DashboardPanelSkeleton.tsx +1 -1
- package/corpus/templates/analytics/app/global.css +10 -9
- package/corpus/templates/analytics/app/hooks/use-chart-tooltip-portal.ts +59 -18
- package/corpus/templates/analytics/app/hooks/use-dashboard-revisions.ts +14 -2
- package/corpus/templates/analytics/app/i18n-data.ts +102 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +232 -2
- package/corpus/templates/analytics/changelog/2026-07-27-chart-tooltips-stay-beside-the-cursor-when-they-extend-beyon.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-27-chat-no-longer-claims-a-data-source-is-disconnected-when-it-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-27-dashboard-changes-can-be-undone-with-cmd-z-and-actions-menu.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-27-dashboard-redo-with-cmd-shift-z-and-actions-menu.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-27-dashboard-skeletons-are-subtler-and-smoother.md +6 -0
- package/corpus/templates/analytics/server/lib/dashboards-store.ts +61 -20
- package/corpus/templates/analytics/server/lib/real-data-actions.ts +1 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +7 -3
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +7 -32
- package/corpus/templates/calendar/changelog/2026-07-27-calendar-s-sidebar-now-uses-a-cleaner-layout-with-fewer-util.md +6 -0
- package/corpus/templates/content/app/components/editor/database/sidebar.tsx +14 -6
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +32 -37
- package/corpus/templates/content/changelog/2026-07-27-content-sidebar-page-lists-now-load-with-quiet-skeletons-and.md +6 -0
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +34 -11
- package/corpus/templates/design/.agents/skills/responsive-breakpoints/SKILL.md +8 -0
- package/corpus/templates/design/actions/generate-design.ts +259 -36
- package/corpus/templates/design/actions/generate-screens.ts +51 -14
- package/corpus/templates/design/actions/present-design-variants.ts +6 -3
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +8 -0
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +158 -9
- package/corpus/templates/design/app/components/design/design-canvas/content-size-report.ts +124 -0
- package/corpus/templates/design/app/components/design/multi-screen/frame-geometry.ts +61 -9
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +16 -18
- package/corpus/templates/design/changelog/2026-07-24-ai-designs-now-default-to-a-full-size-desktop-mobile-pair-fr.md +6 -0
- package/corpus/templates/design/changelog/2026-07-24-design-frames-now-fill-the-viewport-height-and-grow-to-fit-t.md +6 -0
- package/corpus/templates/design/changelog/2026-07-24-generating-an-additional-screen-now-places-it-beside-the-exi.md +6 -0
- package/corpus/templates/design/changelog/2026-07-27-collapsed-sidebar-keeps-the-agent-native-logo.md +6 -0
- package/corpus/templates/dispatch/AGENTS.md +7 -2
- package/corpus/templates/dispatch/actions/view-screen.ts +3 -2
- package/corpus/templates/dispatch/changelog/2026-07-17-curated-template-remixes.md +1 -1
- package/corpus/templates/dispatch/changelog/2026-07-27-creating-an-app-from-a-curated-template-now-uses-clearer-mor.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-27-thread-debug-accepts-request-run-ids.md +6 -0
- package/corpus/templates/slides/actions/create-design-system.ts +10 -2
- package/corpus/templates/slides/actions/import-file.ts +173 -1
- package/corpus/templates/slides/actions/list-slide-comments.ts +16 -1
- package/corpus/templates/slides/actions/update-design-system.ts +13 -2
- package/corpus/templates/slides/app/components/editor/AssetLibraryPanel.tsx +35 -12
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +36 -0
- package/corpus/templates/slides/app/i18n/en-US.ts +3 -0
- package/corpus/templates/slides/app/lib/dynamic-import.ts +63 -0
- package/corpus/templates/slides/app/lib/export-pdf-client.ts +3 -2
- package/corpus/templates/slides/app/lib/export-pptx-client.ts +5 -2
- package/corpus/templates/slides/app/pages/DesignSystems.tsx +9 -1
- package/corpus/templates/slides/server/db/schema.ts +11 -0
- package/corpus/templates/slides/server/handlers/assets.ts +64 -19
- package/corpus/templates/slides/server/handlers/import/html-converter.ts +38 -0
- package/corpus/templates/slides/server/plugins/db.ts +20 -0
- package/corpus/templates/slides/shared/design-system-validation.ts +62 -0
- package/dist/a2a/auth-policy.js +1 -1
- package/dist/a2a/auth-policy.js.map +1 -1
- package/dist/agent/production-agent.d.ts +1 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +12 -1
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts +2 -0
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +4 -10
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/cli/index.js +8 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/client/route-chunk-recovery.d.ts.map +1 -1
- package/dist/client/route-chunk-recovery.js +16 -7
- package/dist/client/route-chunk-recovery.js.map +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +4 -2
- package/dist/db/client.js.map +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +2 -1
- package/dist/db/migrations.js.map +1 -1
- package/dist/deploy/build.d.ts +25 -0
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +227 -4
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/nitro-preset.d.ts +8 -0
- package/dist/deploy/nitro-preset.d.ts.map +1 -0
- package/dist/deploy/nitro-preset.js +36 -0
- package/dist/deploy/nitro-preset.js.map +1 -0
- package/dist/integrations/pending-tasks-retry-job.d.ts.map +1 -1
- package/dist/integrations/pending-tasks-retry-job.js +2 -1
- package/dist/integrations/pending-tasks-retry-job.js.map +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +3 -3
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +11 -11
- package/dist/provider-api/actions/provider-api.d.ts +11 -11
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +4 -2
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/server/agent-discovery.d.ts.map +1 -1
- package/dist/server/agent-discovery.js +1 -0
- package/dist/server/agent-discovery.js.map +1 -1
- package/dist/server/agent-run-context.d.ts.map +1 -1
- package/dist/server/agent-run-context.js +10 -3
- package/dist/server/agent-run-context.js.map +1 -1
- package/dist/server/request-context.d.ts +2 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/shared/runtime.d.ts.map +1 -1
- package/dist/shared/runtime.js +2 -0
- package/dist/shared/runtime.js.map +1 -1
- package/dist/shared/streaming-text-smoothing.d.ts.map +1 -1
- package/dist/shared/streaming-text-smoothing.js +15 -8
- package/dist/shared/streaming-text-smoothing.js.map +1 -1
- package/dist/templates/default/.agents/skills/secrets/SKILL.md +29 -0
- package/dist/templates/default/app/i18n/ar-SA.ts +6 -6
- package/dist/templates/default/app/i18n/de-DE.ts +6 -6
- package/dist/templates/default/app/i18n/en-US.ts +6 -6
- package/dist/templates/default/app/i18n/es-ES.ts +6 -6
- package/dist/templates/default/app/i18n/fr-FR.ts +6 -6
- package/dist/templates/default/app/i18n/hi-IN.ts +6 -6
- package/dist/templates/default/app/i18n/ja-JP.ts +6 -6
- package/dist/templates/default/app/i18n/ko-KR.ts +6 -6
- package/dist/templates/default/app/i18n/pt-BR.ts +6 -6
- package/dist/templates/default/app/i18n/zh-CN.ts +6 -6
- package/dist/templates/default/app/i18n/zh-TW.ts +6 -6
- package/dist/templates/headless/.agents/skills/secrets/SKILL.md +29 -0
- package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +29 -0
- package/dist/vite/client.d.ts +1 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +16 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/cloneable-saas.mdx +9 -9
- package/docs/content/creating-templates.mdx +2 -2
- package/docs/content/deployment.mdx +23 -0
- package/docs/content/faq.mdx +4 -4
- package/docs/content/key-concepts.mdx +1 -1
- package/docs/content/multi-app-workspace.mdx +1 -1
- package/docs/content/syncing-template-changes.mdx +1 -1
- package/docs/content/template-analytics-developers.mdx +2 -2
- package/docs/content/template-analytics.mdx +2 -2
- package/docs/content/template-assets-developers.mdx +3 -3
- package/docs/content/template-assets.mdx +2 -2
- package/docs/content/template-brain-developers.mdx +2 -2
- package/docs/content/template-brain.mdx +1 -1
- package/docs/content/template-calendar-developers.mdx +1 -1
- package/docs/content/template-calendar.mdx +1 -1
- package/docs/content/template-chat.mdx +1 -1
- package/docs/content/template-clips-developers.mdx +4 -4
- package/docs/content/template-clips.mdx +2 -2
- package/docs/content/template-content-developers.mdx +2 -2
- package/docs/content/template-content.mdx +1 -1
- package/docs/content/template-design-brand-and-figma.mdx +1 -1
- package/docs/content/template-design-developers.mdx +2 -2
- package/docs/content/template-design.mdx +2 -2
- package/docs/content/template-dispatch-developers.mdx +5 -5
- package/docs/content/template-forms-developers.mdx +1 -1
- package/docs/content/template-forms.mdx +1 -1
- package/docs/content/template-mail-developers.mdx +2 -2
- package/docs/content/template-mail.mdx +2 -2
- package/docs/content/template-plan-developers.mdx +3 -3
- package/docs/content/template-plan.mdx +3 -3
- package/docs/content/template-slides-developers.mdx +4 -4
- package/docs/content/template-slides.mdx +1 -1
- package/docs/content/what-is-agent-native.mdx +5 -5
- package/package.json +1 -1
- package/src/a2a/auth-policy.ts +1 -1
- package/src/agent/production-agent.ts +14 -1
- package/src/agent/run-manager.ts +6 -13
- package/src/cli/index.ts +11 -1
- package/src/client/route-chunk-recovery.ts +18 -7
- package/src/db/client.ts +7 -6
- package/src/db/migrations.ts +2 -1
- package/src/deploy/build.ts +290 -4
- package/src/deploy/nitro-preset.ts +50 -0
- package/src/integrations/pending-tasks-retry-job.ts +2 -1
- package/src/scripts/call-agent.ts +4 -2
- package/src/server/agent-discovery.ts +1 -0
- package/src/server/agent-run-context.ts +13 -3
- package/src/server/request-context.ts +2 -0
- package/src/shared/cloudflare-globals.d.ts +2 -1
- package/src/shared/runtime.ts +2 -0
- package/src/shared/streaming-text-smoothing.ts +15 -14
- package/src/templates/default/.agents/skills/secrets/SKILL.md +29 -0
- package/src/templates/default/app/i18n/ar-SA.ts +6 -6
- package/src/templates/default/app/i18n/de-DE.ts +6 -6
- package/src/templates/default/app/i18n/en-US.ts +6 -6
- package/src/templates/default/app/i18n/es-ES.ts +6 -6
- package/src/templates/default/app/i18n/fr-FR.ts +6 -6
- package/src/templates/default/app/i18n/hi-IN.ts +6 -6
- package/src/templates/default/app/i18n/ja-JP.ts +6 -6
- package/src/templates/default/app/i18n/ko-KR.ts +6 -6
- package/src/templates/default/app/i18n/pt-BR.ts +6 -6
- package/src/templates/default/app/i18n/zh-CN.ts +6 -6
- package/src/templates/default/app/i18n/zh-TW.ts +6 -6
- package/src/templates/headless/.agents/skills/secrets/SKILL.md +29 -0
- package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +29 -0
- package/src/vite/client.ts +20 -1
- /package/corpus/templates/slides/server/routes/api/assets/{[filename].delete.ts → [id].delete.ts} +0 -0
|
@@ -92,19 +92,19 @@ const messages = {
|
|
|
92
92
|
curatedTemplates: "Modelos selecionados",
|
|
93
93
|
curatedTemplatesDescription:
|
|
94
94
|
"Comece com uma estrutura de app revisada e personalize-a.",
|
|
95
|
-
remix: "
|
|
96
|
-
remixTemplate: "
|
|
95
|
+
remix: "Criar a partir do modelo",
|
|
96
|
+
remixTemplate: "Criar app {{name}}",
|
|
97
97
|
remixAppIdLabel: "Novo ID do app",
|
|
98
|
-
remixStarted: "
|
|
98
|
+
remixStarted: "Criação de {{name}} iniciada",
|
|
99
99
|
viewLiveApp: "Ver app ao vivo",
|
|
100
100
|
alreadyInWorkspace: "Já está no workspace",
|
|
101
101
|
remixAppIdDescription:
|
|
102
102
|
"Escolha um ID seguro para URL para o novo app do workspace.",
|
|
103
103
|
integrationSetup: "Configuração da integração",
|
|
104
104
|
source: "Origem",
|
|
105
|
-
remixing: "
|
|
106
|
-
remixSuccess: "
|
|
107
|
-
remixError: "Não foi possível
|
|
105
|
+
remixing: "Criando app…",
|
|
106
|
+
remixSuccess: "Criação do app a partir do modelo iniciada.",
|
|
107
|
+
remixError: "Não foi possível criar um app a partir deste modelo",
|
|
108
108
|
appIdRequired: "O ID do app é obrigatório.",
|
|
109
109
|
hide: "Ocultar",
|
|
110
110
|
show: "Show",
|
|
@@ -85,18 +85,18 @@ const messages = {
|
|
|
85
85
|
curatedTemplates: "精选模板",
|
|
86
86
|
curatedTemplatesDescription:
|
|
87
87
|
"从经过审核的应用结构开始,然后打造属于你的应用。",
|
|
88
|
-
remix: "
|
|
89
|
-
remixTemplate: "
|
|
88
|
+
remix: "从模板创建",
|
|
89
|
+
remixTemplate: "创建 {{name}} 应用",
|
|
90
90
|
remixAppIdLabel: "新应用 ID",
|
|
91
|
-
remixStarted: "
|
|
91
|
+
remixStarted: "已开始创建 {{name}}",
|
|
92
92
|
viewLiveApp: "查看在线应用",
|
|
93
93
|
alreadyInWorkspace: "已在工作区中",
|
|
94
94
|
remixAppIdDescription: "为新的工作区应用选择一个 URL 安全的 ID。",
|
|
95
95
|
integrationSetup: "集成设置",
|
|
96
96
|
source: "来源",
|
|
97
|
-
remixing: "
|
|
98
|
-
remixSuccess: "
|
|
99
|
-
remixError: "
|
|
97
|
+
remixing: "正在创建应用…",
|
|
98
|
+
remixSuccess: "已开始从模板创建应用。",
|
|
99
|
+
remixError: "无法从此模板创建应用",
|
|
100
100
|
appIdRequired: "应用 ID 是必填项。",
|
|
101
101
|
hide: "隐藏",
|
|
102
102
|
show: "Show",
|
|
@@ -85,18 +85,18 @@ const messages = {
|
|
|
85
85
|
curatedTemplates: "精選範本",
|
|
86
86
|
curatedTemplatesDescription:
|
|
87
87
|
"從經過審核的應用程式結構開始,打造屬於你的應用程式。",
|
|
88
|
-
remix: "
|
|
89
|
-
remixTemplate: "
|
|
88
|
+
remix: "從範本建立",
|
|
89
|
+
remixTemplate: "建立 {{name}} 應用程式",
|
|
90
90
|
remixAppIdLabel: "新應用程式 ID",
|
|
91
|
-
remixStarted: "
|
|
91
|
+
remixStarted: "已開始建立 {{name}}",
|
|
92
92
|
viewLiveApp: "查看線上應用程式",
|
|
93
93
|
alreadyInWorkspace: "已在工作區中",
|
|
94
94
|
remixAppIdDescription: "為新的工作區應用程式選擇 URL 安全的 ID。",
|
|
95
95
|
integrationSetup: "整合設定",
|
|
96
96
|
source: "來源",
|
|
97
|
-
remixing: "
|
|
98
|
-
remixSuccess: "
|
|
99
|
-
remixError: "
|
|
97
|
+
remixing: "正在建立應用程式…",
|
|
98
|
+
remixSuccess: "已開始從範本建立應用程式。",
|
|
99
|
+
remixError: "無法從此範本建立應用程式",
|
|
100
100
|
appIdRequired: "應用程式 ID 為必填項目。",
|
|
101
101
|
hide: "隱藏",
|
|
102
102
|
show: "Show",
|
|
@@ -151,6 +151,35 @@ Rules:
|
|
|
151
151
|
- **Scope matches the registration.** `scope: "user"` → pass the user email.
|
|
152
152
|
`scope: "workspace"` → pass the active `orgId` from
|
|
153
153
|
`getOrgContext(event).orgId`.
|
|
154
|
+
- **One resolver per key, and every runtime path goes through it.** Before
|
|
155
|
+
reading a credential, grep the app for the key name. If a resolver already
|
|
156
|
+
exists (`resolveXConfig`, a connector, a client factory), call it — do not
|
|
157
|
+
read `process.env` for that key a second time somewhere else.
|
|
158
|
+
- **Identity comes from the caller, not the module.** A shared helper under
|
|
159
|
+
`server/lib/` takes the email as a parameter; only an entrypoint (action,
|
|
160
|
+
route, cron) decides whose identity it is. A library that resolves its own
|
|
161
|
+
identity from `process.env.AGENT_USER_EMAIL` authorizes the deployment rather
|
|
162
|
+
than the caller.
|
|
163
|
+
|
|
164
|
+
The failure this prevents is not a leak — it is a split brain. When the config
|
|
165
|
+
check reads the vault and the feature reads `process.env`, the settings UI and
|
|
166
|
+
onboarding checklist report the integration as **configured** while every actual
|
|
167
|
+
call fails with "env var is required". The credential is right there in the
|
|
168
|
+
vault, so the error names the wrong cause and sends everyone hunting for a sync
|
|
169
|
+
or redeploy problem that does not exist. This has now shipped four times in one
|
|
170
|
+
app (BigQuery, Jira, Pylon, Academy).
|
|
171
|
+
|
|
172
|
+
Before finishing any change that touches a credential, run the guard from the
|
|
173
|
+
app directory — it finds this whether the app lives in `templates/` or in a
|
|
174
|
+
workspace repo:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
npx agent-native doctor --only no-env-credentials
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Findings in files that already call `resolveCredential` are usually the
|
|
181
|
+
sanctioned `resolveCredential(key, ctx) ?? process.env.KEY` fallback. The bugs
|
|
182
|
+
are the files with **no** resolver at all.
|
|
154
183
|
|
|
155
184
|
## HTTP routes
|
|
156
185
|
|
|
@@ -151,6 +151,35 @@ Rules:
|
|
|
151
151
|
- **Scope matches the registration.** `scope: "user"` → pass the user email.
|
|
152
152
|
`scope: "workspace"` → pass the active `orgId` from
|
|
153
153
|
`getOrgContext(event).orgId`.
|
|
154
|
+
- **One resolver per key, and every runtime path goes through it.** Before
|
|
155
|
+
reading a credential, grep the app for the key name. If a resolver already
|
|
156
|
+
exists (`resolveXConfig`, a connector, a client factory), call it — do not
|
|
157
|
+
read `process.env` for that key a second time somewhere else.
|
|
158
|
+
- **Identity comes from the caller, not the module.** A shared helper under
|
|
159
|
+
`server/lib/` takes the email as a parameter; only an entrypoint (action,
|
|
160
|
+
route, cron) decides whose identity it is. A library that resolves its own
|
|
161
|
+
identity from `process.env.AGENT_USER_EMAIL` authorizes the deployment rather
|
|
162
|
+
than the caller.
|
|
163
|
+
|
|
164
|
+
The failure this prevents is not a leak — it is a split brain. When the config
|
|
165
|
+
check reads the vault and the feature reads `process.env`, the settings UI and
|
|
166
|
+
onboarding checklist report the integration as **configured** while every actual
|
|
167
|
+
call fails with "env var is required". The credential is right there in the
|
|
168
|
+
vault, so the error names the wrong cause and sends everyone hunting for a sync
|
|
169
|
+
or redeploy problem that does not exist. This has now shipped four times in one
|
|
170
|
+
app (BigQuery, Jira, Pylon, Academy).
|
|
171
|
+
|
|
172
|
+
Before finishing any change that touches a credential, run the guard from the
|
|
173
|
+
app directory — it finds this whether the app lives in `templates/` or in a
|
|
174
|
+
workspace repo:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
npx agent-native doctor --only no-env-credentials
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Findings in files that already call `resolveCredential` are usually the
|
|
181
|
+
sanctioned `resolveCredential(key, ctx) ?? process.env.KEY` fallback. The bugs
|
|
182
|
+
are the files with **no** resolver at all.
|
|
154
183
|
|
|
155
184
|
## HTTP routes
|
|
156
185
|
|
package/dist/vite/client.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ declare function getReactRouterAliases(cwd: string): Array<{
|
|
|
44
44
|
}>;
|
|
45
45
|
declare function getDefaultOptimizeDeps(cwd: string): string[];
|
|
46
46
|
export interface NitroOptions {
|
|
47
|
-
/** Nitro deployment preset (e.g. "node", "vercel", "netlify", "cloudflare_pages"). Default: "node" */
|
|
47
|
+
/** Nitro deployment preset (e.g. "node", "vercel", "netlify", "cloudflare_pages", "cloudflare_module"). Default: "node" */
|
|
48
48
|
preset?: string;
|
|
49
49
|
/** Source directory for server files. Default: "./server" */
|
|
50
50
|
srcDir?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/vite/client.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAIV,MAAM,EACN,UAAU,EACX,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/vite/client.ts"],"names":[],"mappings":"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"}
|
package/dist/vite/client.js
CHANGED
|
@@ -6,6 +6,7 @@ import { fileURLToPath } from "url";
|
|
|
6
6
|
import { renderDesignSystemThemeCss, } from "@agent-native/toolkit/design-system/theme";
|
|
7
7
|
import { mergePendingChangelog, parsePendingEntry, } from "../changelog/parse.js";
|
|
8
8
|
import { getViteDevRecoveryScript } from "../client/vite-dev-recovery-script.js";
|
|
9
|
+
import { writeAgentNativeNitroPresetMarker } from "../deploy/nitro-preset.js";
|
|
9
10
|
import { findWorkspaceRoot } from "../scripts/utils.js";
|
|
10
11
|
import { verifyEmbedSessionToken } from "../server/embed-session.js";
|
|
11
12
|
import { EMBED_SESSION_COOKIE, EMBED_TOKEN_QUERY_PARAM, MCP_APP_CHAT_BRIDGE_QUERY_PARAM, } from "../shared/embed-auth.js";
|
|
@@ -2351,11 +2352,26 @@ function forceServeOnly(pluginOrPreset) {
|
|
|
2351
2352
|
return pluginOrPreset.map(forceServeOnly);
|
|
2352
2353
|
return { ...pluginOrPreset, apply: "serve" };
|
|
2353
2354
|
}
|
|
2355
|
+
function nitroPresetMarkerPlugin(options) {
|
|
2356
|
+
const preset = options.nitro?.preset;
|
|
2357
|
+
if (typeof preset !== "string" || !preset.trim())
|
|
2358
|
+
return null;
|
|
2359
|
+
return {
|
|
2360
|
+
name: "agent-native-nitro-preset-marker",
|
|
2361
|
+
configResolved(config) {
|
|
2362
|
+
if (config.command === "build") {
|
|
2363
|
+
writeAgentNativeNitroPresetMarker(preset);
|
|
2364
|
+
}
|
|
2365
|
+
},
|
|
2366
|
+
};
|
|
2367
|
+
}
|
|
2354
2368
|
function createAgentNativePlugins(options, { command, includeReactTransform, useServeOnlyNitroPlugin = false, userPlugins = [], }) {
|
|
2355
2369
|
const { appBasePath } = getConfiguredAppBasePath();
|
|
2356
2370
|
const nitroPlugin = createNitroDevPlugin(options, appBasePath);
|
|
2357
2371
|
const includeNitro = !isBuildCommand(command);
|
|
2372
|
+
const presetMarkerPlugin = nitroPresetMarkerPlugin(options);
|
|
2358
2373
|
return [
|
|
2374
|
+
presetMarkerPlugin,
|
|
2359
2375
|
// Stub packages from `options.ssrStubs` in the SSR bundle so they
|
|
2360
2376
|
// don't bloat the edge worker. Opt-in per template — the framework
|
|
2361
2377
|
// hardcodes nothing (e.g. docs sites legitimately import `shiki` on
|