@agent-native/core 0.79.16 → 0.79.18
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 +2 -2
- package/corpus/core/CHANGELOG.md +14 -0
- package/corpus/core/docs/content/file-uploads.md +11 -4
- package/corpus/core/docs/content/locales/ar-SA/multi-app-workspace.md +3 -3
- package/corpus/core/docs/content/locales/de-DE/multi-app-workspace.md +3 -3
- package/corpus/core/docs/content/locales/es-ES/multi-app-workspace.md +3 -3
- package/corpus/core/docs/content/locales/fr-FR/multi-app-workspace.md +3 -3
- package/corpus/core/docs/content/locales/hi-IN/multi-app-workspace.md +3 -3
- package/corpus/core/docs/content/locales/ja-JP/multi-app-workspace.md +3 -3
- package/corpus/core/docs/content/locales/ko-KR/multi-app-workspace.md +3 -3
- package/corpus/core/docs/content/locales/pt-BR/multi-app-workspace.md +3 -3
- package/corpus/core/docs/content/locales/zh-CN/multi-app-workspace.md +3 -3
- package/corpus/core/docs/content/locales/zh-TW/multi-app-workspace.md +3 -3
- package/corpus/core/docs/content/multi-app-workspace.md +3 -3
- package/corpus/core/docs/content/template-clips.md +14 -5
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/engine/builder-engine.ts +8 -3
- package/corpus/core/src/cli/mcp.ts +11 -6
- package/corpus/core/src/client/AssistantChat.tsx +6 -2
- package/corpus/core/src/client/chat/markdown-renderer.tsx +1 -0
- package/corpus/core/src/client/index.ts +7 -1
- package/corpus/core/src/client/org/OrgSwitcher.tsx +5 -5
- package/corpus/core/src/client/org/TeamPage.tsx +11 -3
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +216 -0
- package/corpus/core/src/client/settings/index.ts +5 -0
- package/corpus/core/src/file-upload/index.ts +1 -0
- package/corpus/core/src/file-upload/registry.ts +22 -6
- package/corpus/core/src/file-upload/types.ts +6 -1
- package/corpus/core/src/integrations/adapters/email.ts +26 -18
- package/corpus/core/src/integrations/adapters/slack.ts +8 -7
- package/corpus/core/src/integrations/adapters/telegram.ts +9 -11
- package/corpus/core/src/integrations/adapters/whatsapp.ts +12 -9
- package/corpus/core/src/integrations/plugin.ts +79 -13
- package/corpus/core/src/onboarding/default-steps.ts +6 -3
- package/corpus/core/src/onboarding/types.ts +1 -1
- package/corpus/core/src/org/handlers.ts +1 -1
- package/corpus/core/src/server/agent-chat-plugin.ts +4 -7
- package/corpus/core/src/server/better-auth-instance.ts +19 -62
- package/corpus/core/src/server/core-routes-plugin.ts +93 -180
- package/corpus/core/src/server/create-server.ts +55 -116
- package/corpus/core/src/server/email-actions.ts +3 -6
- package/corpus/core/src/server/email.ts +52 -17
- package/corpus/core/src/server/index.ts +2 -1
- package/corpus/core/src/server/scoped-key-storage.ts +223 -0
- package/corpus/core/src/shared/agent-env.ts +3 -3
- package/corpus/core/src/sharing/actions/share-resource.ts +1 -1
- package/corpus/core/src/styles/agent-native.css +55 -3
- package/corpus/core/src/templates/workspace-root/AGENTS.md +3 -2
- package/corpus/core/src/templates/workspace-root/README.md +1 -1
- package/corpus/core/src/templates/workspace-root/scripts/repair-workspace-org.ts +29 -90
- package/corpus/core/src/terminal/pty-server.ts +3 -38
- package/corpus/core/src/triggers/dispatcher.ts +1 -2
- package/corpus/templates/.retired/issues/package.json +7 -0
- package/corpus/templates/.retired/meeting-notes/package.json +7 -0
- package/corpus/templates/.retired/recruiting/package.json +7 -0
- package/corpus/templates/.retired/scheduling/package.json +7 -0
- package/corpus/templates/.retired/voice/package.json +7 -0
- package/corpus/templates/analytics/app/components/layout/Header.tsx +0 -1
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +0 -17
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +7 -1
- package/corpus/templates/analytics/app/i18n-data.ts +71 -2
- package/corpus/templates/analytics/app/pages/Settings.tsx +120 -73
- package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +0 -11
- package/corpus/templates/analytics/app/routes/catalog.tsx +33 -176
- package/corpus/templates/analytics/app/routes/team.tsx +3 -2
- package/corpus/templates/analytics/changelog/2026-06-26-dashboard-templates-are-tucked-into-settings-and-show-simple.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-26-the-sessions-page-shows-a-single-page-title-instead-of-repea.md +6 -0
- package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +37 -28
- package/corpus/templates/assets/app/routes/settings.tsx +65 -43
- package/corpus/templates/assets/app/routes/team.tsx +2 -10
- package/corpus/templates/brain/app/routes/settings.tsx +390 -358
- package/corpus/templates/brain/app/routes/team.tsx +2 -8
- package/corpus/templates/calendar/actions/db-connect.ts +5 -29
- package/corpus/templates/calendar/app/components/CloudUpgrade.tsx +8 -51
- package/corpus/templates/calendar/app/components/calendar/GoogleConnectBanner.tsx +2 -1
- package/corpus/templates/calendar/app/components/calendar/GoogleSetupWizard.tsx +4 -2
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +0 -2
- package/corpus/templates/calendar/app/pages/Settings.tsx +304 -271
- package/corpus/templates/calendar/app/routes/_app.team.tsx +2 -17
- package/corpus/templates/calendar/server/handlers/google-auth.ts +22 -9
- package/corpus/templates/calendar/server/lib/booking-emails.ts +1 -1
- package/corpus/templates/calendar/server/lib/event-guest-notifications.ts +1 -1
- package/corpus/templates/calendar/server/lib/google-calendar.ts +48 -28
- package/corpus/templates/chat/app/components/layout/Header.tsx +0 -1
- package/corpus/templates/chat/app/hooks/use-navigation-state.ts +4 -2
- package/corpus/templates/chat/app/routes/settings.tsx +54 -54
- package/corpus/templates/chat/app/routes/team.tsx +2 -10
- package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +7 -2
- package/corpus/templates/clips/.agents/skills/recording/SKILL.md +1 -1
- package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +7 -0
- package/corpus/templates/clips/AGENTS.md +8 -0
- package/corpus/templates/clips/actions/invite-member.ts +1 -1
- package/corpus/templates/clips/actions/request-transcript.ts +1 -1
- package/corpus/templates/clips/app/components/library/library-layout.tsx +3 -3
- package/corpus/templates/clips/app/components/player/transcript-panel.tsx +2 -0
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +629 -643
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +219 -155
- package/corpus/templates/clips/changelog/2026-06-26-long-desktop-recordings-are-checkpointed-so-macos-finalizati.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-non-mac-desktop-recordings-wait-for-upload-transcription.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-s3-compatible-storage-keys-now-save-securely-from-clips-sett.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-shared-clip-links-guide-agents-through-processing-transcripts.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-the-clip-details-sidebar-now-collapses-into-a-slide-out-pane.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-the-clips-library-now-matches-the-shared-recessed-shell-styl.md +6 -0
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +55 -3
- package/corpus/templates/clips/desktop/src/lib/transcription-capture.ts +217 -5
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +1 -0
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +176 -5
- package/corpus/templates/clips/server/lib/public-agent-context.ts +31 -0
- package/corpus/templates/clips/server/lib/s3-upload-provider.ts +60 -14
- package/corpus/templates/clips/server/lib/video-storage.ts +37 -9
- package/corpus/templates/clips/server/routes/api/agent-transcript.json.get.ts +5 -0
- package/corpus/templates/content/app/components/layout/Header.tsx +0 -1
- package/corpus/templates/content/app/components/sidebar/NotionButton.tsx +1 -0
- package/corpus/templates/content/app/routes/_app.settings.tsx +54 -55
- package/corpus/templates/content/app/routes/_app.team.tsx +2 -28
- package/corpus/templates/content/server/lib/notion.ts +43 -11
- package/corpus/templates/content/server/routes/api/notion/auth-url.get.ts +2 -2
- package/corpus/templates/content/server/routes/api/notion/status.get.ts +3 -3
- package/corpus/templates/design/app/routes/settings.tsx +60 -38
- package/corpus/templates/design/app/routes/team.tsx +2 -10
- package/corpus/templates/dispatch/app/hooks/use-navigation-state.ts +2 -2
- package/corpus/templates/dispatch/app/routes/settings.tsx +70 -55
- package/corpus/templates/dispatch/app/routes/team.tsx +5 -1
- package/corpus/templates/forms/actions/db-connect.ts +7 -36
- package/corpus/templates/forms/actions/navigate.ts +2 -2
- package/corpus/templates/forms/app/components/CloudUpgrade.tsx +8 -47
- package/corpus/templates/forms/app/components/layout/Header.tsx +0 -1
- package/corpus/templates/forms/app/components/layout/Layout.tsx +42 -25
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +35 -76
- package/corpus/templates/forms/app/global.css +9 -25
- package/corpus/templates/forms/app/hooks/use-navigation-state.ts +4 -4
- package/corpus/templates/forms/app/i18n/ar-SA.ts +1 -0
- package/corpus/templates/forms/app/i18n/de-DE.ts +1 -0
- package/corpus/templates/forms/app/i18n/en-US.ts +1 -0
- package/corpus/templates/forms/app/i18n/es-ES.ts +1 -0
- package/corpus/templates/forms/app/i18n/fr-FR.ts +1 -0
- package/corpus/templates/forms/app/i18n/hi-IN.ts +1 -0
- package/corpus/templates/forms/app/i18n/ja-JP.ts +1 -0
- package/corpus/templates/forms/app/i18n/ko-KR.ts +1 -0
- package/corpus/templates/forms/app/i18n/pt-BR.ts +1 -0
- package/corpus/templates/forms/app/i18n/zh-CN.ts +1 -0
- package/corpus/templates/forms/app/i18n/zh-TW.ts +1 -0
- package/corpus/templates/forms/app/lib/route-prewarm.ts +9 -8
- package/corpus/templates/forms/app/pages/AskPage.tsx +70 -0
- package/corpus/templates/forms/app/pages/FormsListPage.tsx +74 -81
- package/corpus/templates/forms/app/root.tsx +1 -1
- package/corpus/templates/forms/app/routes/_app.ask.tsx +14 -0
- package/corpus/templates/forms/app/routes/_app.settings.tsx +54 -54
- package/corpus/templates/forms/app/routes/_app.team.tsx +2 -9
- package/corpus/templates/forms/app/routes/_index.tsx +21 -130
- package/corpus/templates/forms/changelog/2026-06-26-ask-forms-opens-as-a-standard-app-tab-with-a-simpler-sidebar.md +6 -0
- package/corpus/templates/forms/changelog/2026-06-26-forms-are-shown-in-a-tighter-row-list-with-a-denser-sidebar.md +6 -0
- package/corpus/templates/forms/shared/navigation.ts +4 -2
- package/corpus/templates/macros/app/routes/settings.tsx +54 -54
- package/corpus/templates/macros/app/routes/team.tsx +2 -10
- package/corpus/templates/mail/actions/helpers.ts +2 -2
- package/corpus/templates/mail/app/components/GoogleConnectBanner.tsx +2 -1
- package/corpus/templates/mail/app/pages/SettingsPage.tsx +5 -5
- package/corpus/templates/mail/app/routes/team.tsx +3 -2
- package/corpus/templates/mail/server/handlers/emails.ts +3 -2
- package/corpus/templates/mail/server/handlers/google-auth.ts +19 -12
- package/corpus/templates/mail/server/lib/automation-engine.ts +3 -2
- package/corpus/templates/mail/server/lib/email-state.ts +2 -3
- package/corpus/templates/mail/server/lib/google-auth.ts +28 -11
- package/corpus/templates/mail/server/lib/jobs.ts +3 -2
- package/corpus/templates/mail/server/onboarding.ts +9 -6
- package/corpus/templates/mail/server/routes/api/attachments.get.ts +3 -3
- package/corpus/templates/plan/actions/request-plan-access.ts +1 -1
- package/corpus/templates/plan/app/components/layout/Header.tsx +0 -1
- package/corpus/templates/plan/app/hooks/use-navigation-state.ts +4 -2
- package/corpus/templates/plan/app/lib/route-prewarm.ts +0 -4
- package/corpus/templates/plan/app/routes/settings.tsx +75 -73
- package/corpus/templates/plan/app/routes/team.tsx +2 -8
- package/corpus/templates/plan/server/lib/comment-notifications.ts +1 -1
- package/corpus/templates/slides/actions/check-image-gen.ts +2 -1
- package/corpus/templates/slides/actions/db-connect.ts +7 -45
- package/corpus/templates/slides/actions/edit-image.ts +6 -3
- package/corpus/templates/slides/actions/generate-image-api.ts +1 -1
- package/corpus/templates/slides/actions/generate-image.ts +2 -2
- package/corpus/templates/slides/actions/generate-slides-ai.ts +5 -3
- package/corpus/templates/slides/actions/image-gen-status.ts +4 -3
- package/corpus/templates/slides/actions/image-search.ts +6 -3
- package/corpus/templates/slides/actions/search-images.ts +6 -3
- package/corpus/templates/slides/app/components/CloudUpgrade.tsx +8 -51
- package/corpus/templates/slides/app/components/layout/Header.tsx +0 -1
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +0 -2
- package/corpus/templates/slides/app/routes/settings.tsx +54 -54
- package/corpus/templates/slides/app/routes/team.tsx +2 -12
- package/corpus/templates/slides/server/handlers/google-docs-auth.ts +9 -9
- package/corpus/templates/slides/server/handlers/image-gen.ts +5 -1
- package/corpus/templates/slides/server/handlers/image-providers/gemini.ts +9 -1
- package/corpus/templates/slides/server/handlers/image-providers/index.ts +18 -8
- package/corpus/templates/slides/server/handlers/image-providers/openai.ts +10 -4
- package/corpus/templates/slides/server/handlers/image-providers/types.ts +1 -0
- package/corpus/templates/slides/server/lib/google-docs-oauth.ts +59 -34
- package/corpus/templates/slides/server/register-secrets.ts +60 -0
- package/corpus/templates/videos/actions/db-connect.ts +7 -45
- package/corpus/templates/videos/app/components/CloudUpgrade.tsx +8 -51
- package/corpus/templates/videos/app/components/Sidebar.tsx +1 -9
- package/corpus/templates/videos/app/components/layout/Header.tsx +0 -1
- package/corpus/templates/videos/app/components/layout/NavSidebar.tsx +0 -3
- package/corpus/templates/videos/app/routes/settings.tsx +54 -54
- package/corpus/templates/videos/app/routes/team.tsx +2 -8
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.js +8 -3
- package/dist/agent/engine/builder-engine.js.map +1 -1
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +3 -4
- package/dist/cli/mcp.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +6 -2
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/chat/markdown-renderer.d.ts.map +1 -1
- package/dist/client/chat/markdown-renderer.js +1 -0
- package/dist/client/chat/markdown-renderer.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts +3 -3
- package/dist/client/org/OrgSwitcher.js +2 -2
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts +6 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +2 -2
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts +27 -0
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -0
- package/dist/client/settings/SettingsTabsPage.js +108 -0
- package/dist/client/settings/SettingsTabsPage.js.map +1 -0
- package/dist/client/settings/index.d.ts +1 -0
- package/dist/client/settings/index.d.ts.map +1 -1
- package/dist/client/settings/index.js +1 -0
- package/dist/client/settings/index.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/file-upload/index.d.ts +1 -1
- package/dist/file-upload/index.d.ts.map +1 -1
- package/dist/file-upload/index.js +1 -1
- package/dist/file-upload/index.js.map +1 -1
- package/dist/file-upload/registry.d.ts +1 -0
- package/dist/file-upload/registry.d.ts.map +1 -1
- package/dist/file-upload/registry.js +24 -6
- package/dist/file-upload/registry.js.map +1 -1
- package/dist/file-upload/types.d.ts +6 -1
- package/dist/file-upload/types.d.ts.map +1 -1
- package/dist/file-upload/types.js.map +1 -1
- package/dist/integrations/adapters/email.d.ts.map +1 -1
- package/dist/integrations/adapters/email.js +18 -18
- package/dist/integrations/adapters/email.js.map +1 -1
- package/dist/integrations/adapters/slack.d.ts.map +1 -1
- package/dist/integrations/adapters/slack.js +8 -7
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/adapters/telegram.d.ts.map +1 -1
- package/dist/integrations/adapters/telegram.js +9 -9
- package/dist/integrations/adapters/telegram.js.map +1 -1
- package/dist/integrations/adapters/whatsapp.d.ts.map +1 -1
- package/dist/integrations/adapters/whatsapp.js +10 -9
- package/dist/integrations/adapters/whatsapp.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +47 -13
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/onboarding/default-steps.d.ts.map +1 -1
- package/dist/onboarding/default-steps.js +6 -5
- package/dist/onboarding/default-steps.js.map +1 -1
- package/dist/onboarding/types.d.ts +1 -1
- package/dist/onboarding/types.d.ts.map +1 -1
- package/dist/onboarding/types.js.map +1 -1
- package/dist/org/handlers.js +1 -1
- package/dist/org/handlers.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +4 -6
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js +17 -56
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +67 -153
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/create-server.d.ts +3 -9
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/create-server.js +37 -91
- package/dist/server/create-server.js.map +1 -1
- package/dist/server/email-actions.d.ts +2 -3
- package/dist/server/email-actions.d.ts.map +1 -1
- package/dist/server/email-actions.js +3 -6
- package/dist/server/email-actions.js.map +1 -1
- package/dist/server/email.d.ts +3 -3
- package/dist/server/email.d.ts.map +1 -1
- package/dist/server/email.js +40 -19
- package/dist/server/email.js.map +1 -1
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +3 -3
- package/dist/server/index.js.map +1 -1
- package/dist/server/scoped-key-storage.d.ts +22 -0
- package/dist/server/scoped-key-storage.d.ts.map +1 -0
- package/dist/server/scoped-key-storage.js +152 -0
- package/dist/server/scoped-key-storage.js.map +1 -0
- package/dist/shared/agent-env.d.ts +3 -3
- package/dist/shared/agent-env.d.ts.map +1 -1
- package/dist/shared/agent-env.js +3 -3
- package/dist/shared/agent-env.js.map +1 -1
- package/dist/sharing/actions/share-resource.js +1 -1
- package/dist/sharing/actions/share-resource.js.map +1 -1
- package/dist/styles/agent-native.css +55 -3
- package/dist/templates/workspace-root/AGENTS.md +3 -2
- package/dist/templates/workspace-root/README.md +1 -1
- package/dist/templates/workspace-root/scripts/repair-workspace-org.ts +29 -90
- package/dist/terminal/pty-server.d.ts.map +1 -1
- package/dist/terminal/pty-server.js +3 -36
- package/dist/terminal/pty-server.js.map +1 -1
- package/dist/triggers/dispatcher.js +1 -1
- package/dist/triggers/dispatcher.js.map +1 -1
- package/docs/content/file-uploads.md +11 -4
- package/docs/content/locales/ar-SA/multi-app-workspace.md +3 -3
- package/docs/content/locales/de-DE/multi-app-workspace.md +3 -3
- package/docs/content/locales/es-ES/multi-app-workspace.md +3 -3
- package/docs/content/locales/fr-FR/multi-app-workspace.md +3 -3
- package/docs/content/locales/hi-IN/multi-app-workspace.md +3 -3
- package/docs/content/locales/ja-JP/multi-app-workspace.md +3 -3
- package/docs/content/locales/ko-KR/multi-app-workspace.md +3 -3
- package/docs/content/locales/pt-BR/multi-app-workspace.md +3 -3
- package/docs/content/locales/zh-CN/multi-app-workspace.md +3 -3
- package/docs/content/locales/zh-TW/multi-app-workspace.md +3 -3
- package/docs/content/multi-app-workspace.md +3 -3
- package/docs/content/template-clips.md +14 -5
- package/package.json +1 -1
- package/src/templates/workspace-root/AGENTS.md +3 -2
- package/src/templates/workspace-root/README.md +1 -1
- package/src/templates/workspace-root/scripts/repair-workspace-org.ts +29 -90
- package/corpus/core/src/server/env-var-writes.ts +0 -16
- package/corpus/templates/analytics/app/pages/Team.tsx +0 -9
- package/corpus/templates/calendar/app/pages/Team.tsx +0 -12
- package/corpus/templates/mail/app/pages/Team.tsx +0 -17
- package/dist/server/env-var-writes.d.ts +0 -10
- package/dist/server/env-var-writes.d.ts.map +0 -1
- package/dist/server/env-var-writes.js +0 -18
- package/dist/server/env-var-writes.js.map +0 -1
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
2
|
|
|
3
|
-
import crypto from "node:crypto";
|
|
4
3
|
import fs from "node:fs";
|
|
5
4
|
import path from "node:path";
|
|
6
5
|
|
|
@@ -10,8 +9,6 @@ interface Options {
|
|
|
10
9
|
ownerEmail?: string;
|
|
11
10
|
a2aSecret?: string;
|
|
12
11
|
envPath: string;
|
|
13
|
-
force: boolean;
|
|
14
|
-
dryRun: boolean;
|
|
15
12
|
setDispatchDefaultOwner: boolean;
|
|
16
13
|
}
|
|
17
14
|
|
|
@@ -22,10 +19,10 @@ Options:
|
|
|
22
19
|
--name <value> Sets WORKSPACE_ORG_NAME
|
|
23
20
|
--domain <value> Sets WORKSPACE_ORG_DOMAIN
|
|
24
21
|
--owner-email <value> Sets WORKSPACE_OWNER_EMAIL
|
|
25
|
-
--a2a-secret <value>
|
|
26
|
-
--env <path> Env file to
|
|
27
|
-
--force
|
|
28
|
-
--dry-run
|
|
22
|
+
--a2a-secret <value> Reads A2A_SECRET for validation
|
|
23
|
+
--env <path> Env file to read for fallback values (default: .env)
|
|
24
|
+
--force Accepted for compatibility; no file is written
|
|
25
|
+
--dry-run Accepted for compatibility; no file is written
|
|
29
26
|
--set-dispatch-default-owner Also set DISPATCH_DEFAULT_OWNER_EMAIL
|
|
30
27
|
`;
|
|
31
28
|
|
|
@@ -41,8 +38,6 @@ type RequiredKey = (typeof REQUIRED_KEYS)[number];
|
|
|
41
38
|
function parseArgs(argv: string[]): Options {
|
|
42
39
|
const opts: Options = {
|
|
43
40
|
envPath: ".env",
|
|
44
|
-
force: false,
|
|
45
|
-
dryRun: false,
|
|
46
41
|
setDispatchDefaultOwner: false,
|
|
47
42
|
};
|
|
48
43
|
|
|
@@ -78,10 +73,8 @@ function parseArgs(argv: string[]): Options {
|
|
|
78
73
|
opts.envPath = value();
|
|
79
74
|
break;
|
|
80
75
|
case "--force":
|
|
81
|
-
opts.force = true;
|
|
82
76
|
break;
|
|
83
77
|
case "--dry-run":
|
|
84
|
-
opts.dryRun = true;
|
|
85
78
|
break;
|
|
86
79
|
case "--set-dispatch-default-owner":
|
|
87
80
|
opts.setDispatchDefaultOwner = true;
|
|
@@ -147,47 +140,6 @@ function validateEmail(email: string): void {
|
|
|
147
140
|
}
|
|
148
141
|
}
|
|
149
142
|
|
|
150
|
-
function formatEnvValue(value: string): string {
|
|
151
|
-
if (/^[A-Za-z0-9_@./:+-]+$/.test(value)) return value;
|
|
152
|
-
return JSON.stringify(value);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
function upsertEnvValue(
|
|
156
|
-
content: string,
|
|
157
|
-
key: string,
|
|
158
|
-
value: string,
|
|
159
|
-
force: boolean,
|
|
160
|
-
): { content: string; changed: boolean; skipped: boolean } {
|
|
161
|
-
const lines = content.length > 0 ? content.split(/\r?\n/) : [];
|
|
162
|
-
let found = false;
|
|
163
|
-
let changed = false;
|
|
164
|
-
let skipped = false;
|
|
165
|
-
|
|
166
|
-
const next = lines.map((line) => {
|
|
167
|
-
const match = line.match(/^(\s*)([A-Z0-9_]+)(\s*=\s*)(.*)$/);
|
|
168
|
-
if (!match || match[2] !== key) return line;
|
|
169
|
-
|
|
170
|
-
found = true;
|
|
171
|
-
const existing = unquote(match[4]);
|
|
172
|
-
if (existing && !force) {
|
|
173
|
-
skipped = true;
|
|
174
|
-
return line;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
const replacement = `${match[1]}${key}${match[3]}${formatEnvValue(value)}`;
|
|
178
|
-
if (replacement !== line) changed = true;
|
|
179
|
-
return replacement;
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
if (!found) {
|
|
183
|
-
if (next.length > 0 && next[next.length - 1] !== "") next.push("");
|
|
184
|
-
next.push(`${key}=${formatEnvValue(value)}`);
|
|
185
|
-
changed = true;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
return { content: next.join("\n"), changed, skipped };
|
|
189
|
-
}
|
|
190
|
-
|
|
191
143
|
function firstValue(...values: Array<string | undefined>): string | undefined {
|
|
192
144
|
return values.map((v) => v?.trim()).find(Boolean);
|
|
193
145
|
}
|
|
@@ -213,13 +165,21 @@ function main(): void {
|
|
|
213
165
|
process.env.WORKSPACE_OWNER_EMAIL,
|
|
214
166
|
current.WORKSPACE_OWNER_EMAIL,
|
|
215
167
|
)?.toLowerCase();
|
|
216
|
-
const a2aSecret =
|
|
217
|
-
|
|
218
|
-
|
|
168
|
+
const a2aSecret = firstValue(
|
|
169
|
+
opts.a2aSecret,
|
|
170
|
+
process.env.A2A_SECRET,
|
|
171
|
+
current.A2A_SECRET,
|
|
172
|
+
);
|
|
219
173
|
|
|
220
174
|
if (!name) fail("--name or WORKSPACE_ORG_NAME is required.");
|
|
221
175
|
if (!rawDomain) fail("--domain or WORKSPACE_ORG_DOMAIN is required.");
|
|
222
176
|
if (!ownerEmail) fail("--owner-email or WORKSPACE_OWNER_EMAIL is required.");
|
|
177
|
+
if (!a2aSecret) {
|
|
178
|
+
fail(
|
|
179
|
+
"--a2a-secret or A2A_SECRET is required. This script reads existing " +
|
|
180
|
+
"configuration but does not write env files.",
|
|
181
|
+
);
|
|
182
|
+
}
|
|
223
183
|
|
|
224
184
|
const domain = normalizeDomain(rawDomain);
|
|
225
185
|
validateDomain(domain);
|
|
@@ -232,52 +192,31 @@ function main(): void {
|
|
|
232
192
|
A2A_SECRET: a2aSecret,
|
|
233
193
|
};
|
|
234
194
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
for (const key of REQUIRED_KEYS) {
|
|
240
|
-
const result = upsertEnvValue(next, key, desired[key], opts.force);
|
|
241
|
-
next = result.content;
|
|
242
|
-
if (result.changed) changed.push(key);
|
|
243
|
-
if (result.skipped) skipped.push(key);
|
|
244
|
-
}
|
|
245
|
-
|
|
195
|
+
const displayEntries: Array<[string, string]> = REQUIRED_KEYS.map((key) => [
|
|
196
|
+
key,
|
|
197
|
+
key === "A2A_SECRET" ? "[configured]" : desired[key],
|
|
198
|
+
]);
|
|
246
199
|
if (opts.setDispatchDefaultOwner) {
|
|
247
|
-
|
|
248
|
-
next,
|
|
249
|
-
"DISPATCH_DEFAULT_OWNER_EMAIL",
|
|
250
|
-
ownerEmail,
|
|
251
|
-
opts.force,
|
|
252
|
-
);
|
|
253
|
-
next = result.content;
|
|
254
|
-
if (result.changed) changed.push("DISPATCH_DEFAULT_OWNER_EMAIL");
|
|
255
|
-
if (result.skipped) skipped.push("DISPATCH_DEFAULT_OWNER_EMAIL");
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
next = next.trimEnd() + "\n";
|
|
259
|
-
|
|
260
|
-
if (opts.dryRun) {
|
|
261
|
-
console.log(next);
|
|
262
|
-
} else {
|
|
263
|
-
fs.writeFileSync(envPath, next);
|
|
200
|
+
displayEntries.push(["DISPATCH_DEFAULT_OWNER_EMAIL", ownerEmail]);
|
|
264
201
|
}
|
|
265
202
|
|
|
266
203
|
console.log(
|
|
267
|
-
|
|
204
|
+
`Validated workspace org settings from ${path.relative(process.cwd(), envPath) || envPath}.`,
|
|
268
205
|
);
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
);
|
|
206
|
+
console.log("No env files were written.");
|
|
207
|
+
console.log("");
|
|
208
|
+
console.log("Resolved configuration:");
|
|
209
|
+
for (const [key, value] of displayEntries) {
|
|
210
|
+
console.log(`- ${key}: ${value}`);
|
|
274
211
|
}
|
|
275
212
|
console.log("");
|
|
276
213
|
console.log("Next steps:");
|
|
277
214
|
console.log("1. Sign in as WORKSPACE_OWNER_EMAIL.");
|
|
278
215
|
console.log("2. Create or select the org named by WORKSPACE_ORG_NAME.");
|
|
279
216
|
console.log("3. Set the org allowed domain to WORKSPACE_ORG_DOMAIN.");
|
|
280
|
-
console.log(
|
|
217
|
+
console.log(
|
|
218
|
+
"4. Configure A2A_SECRET through the scoped secret/deployment secret manager for apps that need cross-app A2A.",
|
|
219
|
+
);
|
|
281
220
|
}
|
|
282
221
|
|
|
283
222
|
main();
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { isLocalDatabase } from "../db/client.js";
|
|
2
|
-
import { isDevEnvironment } from "./auth.js";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Whether deployment-wide `process.env` writes (and .env file writes) are safe.
|
|
6
|
-
*
|
|
7
|
-
* Production never allows request-time env writes, even with the escape hatch.
|
|
8
|
-
* Env vars are deployment-wide globals and one tenant could otherwise
|
|
9
|
-
* overwrite shared keys for every other tenant. Per-user/org credentials
|
|
10
|
-
* should use `app_secrets` instead.
|
|
11
|
-
*/
|
|
12
|
-
export function isEnvVarWriteAllowed(): boolean {
|
|
13
|
-
if (process.env.NODE_ENV === "production") return false;
|
|
14
|
-
if (process.env.AGENT_NATIVE_ALLOW_ENV_VAR_WRITES === "1") return true;
|
|
15
|
-
return isDevEnvironment() && isLocalDatabase();
|
|
16
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { TeamPage } from "@agent-native/core/client/org";
|
|
2
|
-
|
|
3
|
-
export default function Team() {
|
|
4
|
-
return (
|
|
5
|
-
<div className="p-4 sm:p-6">
|
|
6
|
-
<TeamPage createOrgDescription="Set up a team to share dashboards and data sources with your colleagues." />
|
|
7
|
-
</div>
|
|
8
|
-
);
|
|
9
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { TeamPage } from "@agent-native/core/client/org";
|
|
2
|
-
|
|
3
|
-
export default function Team() {
|
|
4
|
-
return (
|
|
5
|
-
<div className="p-4 sm:p-6">
|
|
6
|
-
<TeamPage
|
|
7
|
-
title="Team"
|
|
8
|
-
createOrgDescription="Set up a team to share calendars and booking links with your colleagues."
|
|
9
|
-
/>
|
|
10
|
-
</div>
|
|
11
|
-
);
|
|
12
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { TeamPage } from "@agent-native/core/client/org";
|
|
2
|
-
|
|
3
|
-
import { AppLayout } from "@/components/layout/AppLayout";
|
|
4
|
-
|
|
5
|
-
export default function Team() {
|
|
6
|
-
return (
|
|
7
|
-
<TeamPage
|
|
8
|
-
layout={(content) => (
|
|
9
|
-
<AppLayout>
|
|
10
|
-
<div className="p-4 sm:p-6">{content}</div>
|
|
11
|
-
</AppLayout>
|
|
12
|
-
)}
|
|
13
|
-
title="Team"
|
|
14
|
-
createOrgDescription="Set up a team to share email automations and settings with your colleagues."
|
|
15
|
-
/>
|
|
16
|
-
);
|
|
17
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Whether deployment-wide `process.env` writes (and .env file writes) are safe.
|
|
3
|
-
*
|
|
4
|
-
* Production never allows request-time env writes, even with the escape hatch.
|
|
5
|
-
* Env vars are deployment-wide globals and one tenant could otherwise
|
|
6
|
-
* overwrite shared keys for every other tenant. Per-user/org credentials
|
|
7
|
-
* should use `app_secrets` instead.
|
|
8
|
-
*/
|
|
9
|
-
export declare function isEnvVarWriteAllowed(): boolean;
|
|
10
|
-
//# sourceMappingURL=env-var-writes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env-var-writes.d.ts","sourceRoot":"","sources":["../../src/server/env-var-writes.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAI9C"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { isLocalDatabase } from "../db/client.js";
|
|
2
|
-
import { isDevEnvironment } from "./auth.js";
|
|
3
|
-
/**
|
|
4
|
-
* Whether deployment-wide `process.env` writes (and .env file writes) are safe.
|
|
5
|
-
*
|
|
6
|
-
* Production never allows request-time env writes, even with the escape hatch.
|
|
7
|
-
* Env vars are deployment-wide globals and one tenant could otherwise
|
|
8
|
-
* overwrite shared keys for every other tenant. Per-user/org credentials
|
|
9
|
-
* should use `app_secrets` instead.
|
|
10
|
-
*/
|
|
11
|
-
export function isEnvVarWriteAllowed() {
|
|
12
|
-
if (process.env.NODE_ENV === "production")
|
|
13
|
-
return false;
|
|
14
|
-
if (process.env.AGENT_NATIVE_ALLOW_ENV_VAR_WRITES === "1")
|
|
15
|
-
return true;
|
|
16
|
-
return isDevEnvironment() && isLocalDatabase();
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=env-var-writes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env-var-writes.js","sourceRoot":"","sources":["../../src/server/env-var-writes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACvE,OAAO,gBAAgB,EAAE,IAAI,eAAe,EAAE,CAAC;AACjD,CAAC","sourcesContent":["import { isLocalDatabase } from \"../db/client.js\";\nimport { isDevEnvironment } from \"./auth.js\";\n\n/**\n * Whether deployment-wide `process.env` writes (and .env file writes) are safe.\n *\n * Production never allows request-time env writes, even with the escape hatch.\n * Env vars are deployment-wide globals and one tenant could otherwise\n * overwrite shared keys for every other tenant. Per-user/org credentials\n * should use `app_secrets` instead.\n */\nexport function isEnvVarWriteAllowed(): boolean {\n if (process.env.NODE_ENV === \"production\") return false;\n if (process.env.AGENT_NATIVE_ALLOW_ENV_VAR_WRITES === \"1\") return true;\n return isDevEnvironment() && isLocalDatabase();\n}\n"]}
|