@agent-native/core 0.79.17 → 0.79.19
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/i18n.tsx +77 -65
- 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 +47 -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 +1 -18
- package/corpus/templates/analytics/app/global.css +15 -0
- 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/Ask.tsx +1 -1
- 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-ask-tab-uses-a-softer-dark-gray-canvas-while-sidebar-cha.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 +325 -333
- package/corpus/templates/clips/app/components/player/delete-recording-menu.tsx +80 -40
- 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 +263 -158
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +10 -2
- 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-recording-details-button-stays-at-the-far-right-on-small-screen.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-agent-sidebar-now-slides-in-smoothly-without-duplicate-e.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/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/components/plan/CanvasArea.tsx +56 -4
- package/corpus/templates/plan/app/global.css +8 -3
- 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/pages/PlansPage.tsx +1 -1
- package/corpus/templates/plan/app/routes/settings.tsx +75 -73
- package/corpus/templates/plan/app/routes/team.tsx +2 -8
- package/corpus/templates/plan/changelog/2026-06-26-canvas-grid-panning-now-stays-smooth-and-fills-the-workspace.md +6 -0
- 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/i18n.d.ts.map +1 -1
- package/dist/client/i18n.js +20 -9
- package/dist/client/i18n.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/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 +3 -3
- package/dist/observability/routes.d.ts +6 -6
- 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/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 +2 -2
- 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 +47 -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
|
@@ -93,55 +93,39 @@
|
|
|
93
93
|
background: hsl(var(--muted-foreground) / 0.4);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
.forms-
|
|
97
|
-
content: "";
|
|
98
|
-
position: absolute;
|
|
99
|
-
inset: 0;
|
|
100
|
-
background-image:
|
|
101
|
-
linear-gradient(hsl(var(--border) / 0.24) 1px, transparent 1px),
|
|
102
|
-
linear-gradient(90deg, hsl(var(--border) / 0.18) 1px, transparent 1px);
|
|
103
|
-
background-size: 46px 46px;
|
|
104
|
-
mask-image: linear-gradient(
|
|
105
|
-
to bottom,
|
|
106
|
-
transparent,
|
|
107
|
-
black 14%,
|
|
108
|
-
black 78%,
|
|
109
|
-
transparent
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
.forms-home-chat-panel {
|
|
96
|
+
.forms-ask-chat-panel {
|
|
114
97
|
width: 100%;
|
|
115
98
|
}
|
|
116
99
|
|
|
117
|
-
.forms-
|
|
100
|
+
.forms-ask-chat-panel [data-agent-empty-state="centered"] {
|
|
118
101
|
justify-content: center;
|
|
119
102
|
padding-bottom: clamp(4rem, 12vh, 8rem);
|
|
120
103
|
}
|
|
121
104
|
|
|
122
|
-
.forms-
|
|
105
|
+
.forms-ask-chat-panel [data-agent-empty-state="centered"] .agent-chat-scroll {
|
|
123
106
|
flex: 0 0 auto;
|
|
124
107
|
min-height: 0;
|
|
125
108
|
overflow: visible;
|
|
126
109
|
}
|
|
127
110
|
|
|
128
|
-
.forms-
|
|
111
|
+
.forms-ask-chat-panel .agent-composer-area--hero {
|
|
129
112
|
padding-inline: 0;
|
|
130
113
|
filter: none;
|
|
131
114
|
}
|
|
132
115
|
|
|
133
|
-
.forms-
|
|
116
|
+
.forms-ask-chat-panel
|
|
134
117
|
[data-agent-empty-state="centered"]
|
|
135
118
|
.agent-composer-area--hero {
|
|
136
119
|
width: 100%;
|
|
137
120
|
}
|
|
138
121
|
|
|
139
|
-
.forms-
|
|
122
|
+
.forms-ask-chat-panel .agent-composer-root--hero {
|
|
140
123
|
border-radius: 1.25rem;
|
|
124
|
+
background: hsl(var(--background));
|
|
141
125
|
box-shadow: none;
|
|
142
126
|
}
|
|
143
127
|
|
|
144
|
-
.forms-
|
|
128
|
+
.forms-ask-chat-panel .agent-composer-root--hero:focus-within {
|
|
145
129
|
border-color: hsl(var(--ring) / 0.9);
|
|
146
130
|
box-shadow: none;
|
|
147
131
|
}
|
|
@@ -150,7 +134,7 @@
|
|
|
150
134
|
display: none;
|
|
151
135
|
}
|
|
152
136
|
|
|
153
|
-
.forms-
|
|
137
|
+
.forms-ask-chat-panel [data-agent-empty-state="centered"] .forms-chat-intro {
|
|
154
138
|
display: grid;
|
|
155
139
|
justify-items: center;
|
|
156
140
|
gap: 0.75rem;
|
|
@@ -84,8 +84,8 @@ export function useNavigationState() {
|
|
|
84
84
|
getNavigationState: ({ pathname, searchParams }) => {
|
|
85
85
|
const state: NavigationState = { view: "forms" };
|
|
86
86
|
|
|
87
|
-
if (pathname === "/") {
|
|
88
|
-
state.view = "
|
|
87
|
+
if (pathname === "/" || pathname === "/ask") {
|
|
88
|
+
state.view = "ask";
|
|
89
89
|
} else if (pathname.startsWith("/forms")) {
|
|
90
90
|
const formMatch = pathname.match(/\/forms\/([^/]+)/);
|
|
91
91
|
if (formMatch) {
|
|
@@ -109,7 +109,7 @@ export function useNavigationState() {
|
|
|
109
109
|
} else if (pathname.startsWith("/f/")) {
|
|
110
110
|
state.view = "public-form";
|
|
111
111
|
} else if (pathname.startsWith("/team")) {
|
|
112
|
-
state.view = "
|
|
112
|
+
state.view = "settings";
|
|
113
113
|
} else if (pathname.startsWith("/extensions")) {
|
|
114
114
|
state.view = "extensions";
|
|
115
115
|
} else if (pathname.startsWith("/form-preview")) {
|
|
@@ -132,7 +132,7 @@ export function useNavigationState() {
|
|
|
132
132
|
navigateOptions: { flushSync: true, replace: true },
|
|
133
133
|
onNavigate: (_command, path) => {
|
|
134
134
|
void prewarmFormsRoutePath(path);
|
|
135
|
-
if (location.pathname === "/" && path !== "/") {
|
|
135
|
+
if (location.pathname === "/ask" && path !== "/ask") {
|
|
136
136
|
markAgentChatHomeHandoff("forms");
|
|
137
137
|
}
|
|
138
138
|
},
|
|
@@ -23,7 +23,14 @@ export function prewarmFormsRoutePath(path: string) {
|
|
|
23
23
|
const pathname = parsePath(path);
|
|
24
24
|
const jobs: Promise<unknown>[] = [];
|
|
25
25
|
|
|
26
|
-
if (pathname === "/" || pathname === "/
|
|
26
|
+
if (pathname === "/" || pathname === "/ask") {
|
|
27
|
+
jobs.push(
|
|
28
|
+
prewarm("layout", () => import("@/routes/_app")),
|
|
29
|
+
prewarm("ask", () => import("@/routes/_app.ask")),
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (pathname === "/forms") {
|
|
27
34
|
jobs.push(
|
|
28
35
|
prewarm("layout", () => import("@/routes/_app")),
|
|
29
36
|
prewarm("forms-index", () => import("@/routes/_app.forms._index")),
|
|
@@ -52,13 +59,6 @@ export function prewarmFormsRoutePath(path: string) {
|
|
|
52
59
|
);
|
|
53
60
|
}
|
|
54
61
|
|
|
55
|
-
if (pathname === "/team") {
|
|
56
|
-
jobs.push(
|
|
57
|
-
prewarm("layout", () => import("@/routes/_app")),
|
|
58
|
-
prewarm("team", () => import("@/routes/_app.team")),
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
62
|
if (pathname.startsWith("/extensions")) {
|
|
63
63
|
jobs.push(
|
|
64
64
|
prewarm("layout", () => import("@/routes/_app")),
|
|
@@ -86,6 +86,7 @@ export function prewarmFormsRoutePath(path: string) {
|
|
|
86
86
|
|
|
87
87
|
export function prewarmCommonFormsRoutes() {
|
|
88
88
|
return Promise.all([
|
|
89
|
+
prewarmFormsRoutePath("/ask"),
|
|
89
90
|
prewarmFormsRoutePath("/forms"),
|
|
90
91
|
prewarmFormsRoutePath("/forms/__route_prewarm__?tab=edit"),
|
|
91
92
|
prewarmFormsRoutePath("/forms/__route_prewarm__/responses"),
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AgentChatSurface,
|
|
3
|
+
markAgentChatHomeHandoff,
|
|
4
|
+
useT,
|
|
5
|
+
} from "@agent-native/core/client";
|
|
6
|
+
import { IconChartBar, IconDatabase, IconSettings } from "@tabler/icons-react";
|
|
7
|
+
import { useEffect } from "react";
|
|
8
|
+
|
|
9
|
+
import { scheduleFormsRoutePrewarm } from "@/lib/route-prewarm";
|
|
10
|
+
import { TAB_ID } from "@/lib/tab-id";
|
|
11
|
+
|
|
12
|
+
export function AskPage() {
|
|
13
|
+
const t = useT();
|
|
14
|
+
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
function handleChatRunning(event: Event) {
|
|
17
|
+
const detail = (event as CustomEvent).detail;
|
|
18
|
+
if (detail?.isRunning === true) markAgentChatHomeHandoff("forms");
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const cancelRoutePrewarm = scheduleFormsRoutePrewarm();
|
|
22
|
+
window.addEventListener("agentNative.chatRunning", handleChatRunning);
|
|
23
|
+
return () => {
|
|
24
|
+
cancelRoutePrewarm();
|
|
25
|
+
window.removeEventListener("agentNative.chatRunning", handleChatRunning);
|
|
26
|
+
};
|
|
27
|
+
}, []);
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<div className="flex h-full min-h-0 flex-col bg-background">
|
|
31
|
+
<AgentChatSurface
|
|
32
|
+
mode="page"
|
|
33
|
+
chatViewTransition
|
|
34
|
+
className="forms-ask-chat-panel bg-background shadow-none"
|
|
35
|
+
defaultMode="chat"
|
|
36
|
+
storageKey="forms"
|
|
37
|
+
browserTabId={TAB_ID}
|
|
38
|
+
showHeader={false}
|
|
39
|
+
showTabBar={false}
|
|
40
|
+
dynamicSuggestions={false}
|
|
41
|
+
suggestions={[]}
|
|
42
|
+
emptyStateText={t("home.emptyState")}
|
|
43
|
+
emptyStateDisplay="hidden"
|
|
44
|
+
centerComposerWhenEmpty
|
|
45
|
+
composerLayoutVariant="hero"
|
|
46
|
+
composerPlaceholder={t("home.composerPlaceholder")}
|
|
47
|
+
composerSlot={
|
|
48
|
+
<div className="forms-chat-intro">
|
|
49
|
+
<h1>{t("home.heading")}</h1>
|
|
50
|
+
<p>{t("home.description")}</p>
|
|
51
|
+
<div className="forms-chat-pill-row" aria-hidden="true">
|
|
52
|
+
<span>
|
|
53
|
+
<IconDatabase className="size-3.5" />
|
|
54
|
+
{t("home.pillForms")}
|
|
55
|
+
</span>
|
|
56
|
+
<span>
|
|
57
|
+
<IconChartBar className="size-3.5" />
|
|
58
|
+
{t("home.pillAnalytics")}
|
|
59
|
+
</span>
|
|
60
|
+
<span>
|
|
61
|
+
<IconSettings className="size-3.5" />
|
|
62
|
+
{t("home.pillConfiguration")}
|
|
63
|
+
</span>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
}
|
|
67
|
+
/>
|
|
68
|
+
</div>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
@@ -269,26 +269,19 @@ export function FormsListPage() {
|
|
|
269
269
|
if (isLoading) {
|
|
270
270
|
return (
|
|
271
271
|
<div className="p-3 sm:p-6 max-w-5xl mx-auto">
|
|
272
|
-
<div className="
|
|
272
|
+
<div className="overflow-hidden rounded-lg border border-border bg-card">
|
|
273
273
|
{Array.from({ length: 6 }).map((_, i) => (
|
|
274
274
|
<div
|
|
275
275
|
key={i}
|
|
276
|
-
className="border border-border
|
|
276
|
+
className="grid gap-3 border-b border-border px-3 py-3 last:border-b-0 md:grid-cols-[minmax(0,1fr)_120px_120px_80px]"
|
|
277
277
|
>
|
|
278
|
-
<div className="
|
|
279
|
-
<
|
|
280
|
-
|
|
281
|
-
<Skeleton className="h-3 w-1/2" />
|
|
282
|
-
</div>
|
|
283
|
-
<Skeleton className="h-8 w-8 rounded-md shrink-0" />
|
|
284
|
-
</div>
|
|
285
|
-
<div className="flex items-center justify-between gap-2">
|
|
286
|
-
<Skeleton className="h-4 w-14 rounded-full" />
|
|
287
|
-
<div className="flex items-center gap-3">
|
|
288
|
-
<Skeleton className="h-3 w-16" />
|
|
289
|
-
<Skeleton className="h-3 w-10" />
|
|
290
|
-
</div>
|
|
278
|
+
<div className="min-w-0 space-y-2">
|
|
279
|
+
<Skeleton className="h-4 w-3/4" />
|
|
280
|
+
<Skeleton className="h-3 w-1/2" />
|
|
291
281
|
</div>
|
|
282
|
+
<Skeleton className="h-5 w-20 rounded-full" />
|
|
283
|
+
<Skeleton className="h-4 w-24" />
|
|
284
|
+
<Skeleton className="h-8 w-8 rounded-md md:ms-auto" />
|
|
292
285
|
</div>
|
|
293
286
|
))}
|
|
294
287
|
</div>
|
|
@@ -446,20 +439,32 @@ export function FormsListPage() {
|
|
|
446
439
|
)}
|
|
447
440
|
</div>
|
|
448
441
|
) : (
|
|
449
|
-
<div className="
|
|
442
|
+
<div className="overflow-hidden rounded-lg border border-border bg-card">
|
|
450
443
|
{forms.map((form: any) => {
|
|
451
444
|
const selected = selectedIds.has(form.id);
|
|
445
|
+
const dateLabel =
|
|
446
|
+
isArchive && (form as any).deletedAt
|
|
447
|
+
? t("forms.deletedDate", {
|
|
448
|
+
date: formatDate((form as any).deletedAt, {
|
|
449
|
+
month: "short",
|
|
450
|
+
day: "numeric",
|
|
451
|
+
}),
|
|
452
|
+
})
|
|
453
|
+
: formatDate(form.createdAt, {
|
|
454
|
+
month: "short",
|
|
455
|
+
day: "numeric",
|
|
456
|
+
});
|
|
452
457
|
|
|
453
458
|
return (
|
|
454
459
|
<div
|
|
455
460
|
key={form.id}
|
|
456
461
|
className={cn(
|
|
457
|
-
"group
|
|
462
|
+
"group grid cursor-pointer gap-3 border-b border-border px-3 py-3 last:border-b-0 md:grid-cols-[minmax(0,1fr)_110px_140px_88px_40px] md:items-center",
|
|
458
463
|
isArchive
|
|
459
|
-
? "opacity-80 hover:opacity-100 hover:
|
|
460
|
-
: "hover:
|
|
461
|
-
selectionMode && "hover:
|
|
462
|
-
selected && "
|
|
464
|
+
? "opacity-80 hover:opacity-100 hover:bg-accent/25"
|
|
465
|
+
: "hover:bg-accent/25",
|
|
466
|
+
selectionMode && "hover:bg-accent/30",
|
|
467
|
+
selected && "bg-accent/35 ring-1 ring-inset ring-primary/20",
|
|
463
468
|
)}
|
|
464
469
|
role="button"
|
|
465
470
|
tabIndex={0}
|
|
@@ -493,36 +498,57 @@ export function FormsListPage() {
|
|
|
493
498
|
}
|
|
494
499
|
}}
|
|
495
500
|
>
|
|
496
|
-
<div className="flex items-start
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
501
|
+
<div className="flex min-w-0 items-start gap-2.5">
|
|
502
|
+
{selectionMode && (
|
|
503
|
+
<Checkbox
|
|
504
|
+
checked={selected}
|
|
505
|
+
onCheckedChange={() => toggleSelection(form.id)}
|
|
506
|
+
onClick={(e) => e.stopPropagation()}
|
|
507
|
+
aria-label={t("forms.selectForm", {
|
|
508
|
+
title: form.title,
|
|
509
|
+
})}
|
|
510
|
+
className="mt-0.5 shrink-0"
|
|
511
|
+
/>
|
|
512
|
+
)}
|
|
513
|
+
<div className="min-w-0 flex-1">
|
|
514
|
+
<div className="flex min-w-0 items-center gap-2">
|
|
515
|
+
<h3 className="min-w-0 flex-1 truncate text-sm font-medium">
|
|
516
|
+
{form.title}
|
|
517
|
+
</h3>
|
|
518
|
+
<VisibilityBadge
|
|
519
|
+
visibility={(form as any).visibility}
|
|
520
|
+
className="shrink-0"
|
|
507
521
|
/>
|
|
508
|
-
)}
|
|
509
|
-
<div className="flex-1 min-w-0">
|
|
510
|
-
<div className="flex items-center gap-2 min-w-0">
|
|
511
|
-
<h3 className="font-medium truncate flex-1 min-w-0">
|
|
512
|
-
{form.title}
|
|
513
|
-
</h3>
|
|
514
|
-
<VisibilityBadge
|
|
515
|
-
visibility={(form as any).visibility}
|
|
516
|
-
className="shrink-0"
|
|
517
|
-
/>
|
|
518
|
-
</div>
|
|
519
|
-
{form.description && (
|
|
520
|
-
<p className="text-xs text-muted-foreground mt-0.5 truncate">
|
|
521
|
-
{form.description}
|
|
522
|
-
</p>
|
|
523
|
-
)}
|
|
524
522
|
</div>
|
|
523
|
+
{form.description && (
|
|
524
|
+
<p className="mt-0.5 truncate text-xs text-muted-foreground">
|
|
525
|
+
{form.description}
|
|
526
|
+
</p>
|
|
527
|
+
)}
|
|
525
528
|
</div>
|
|
529
|
+
</div>
|
|
530
|
+
|
|
531
|
+
<div className="flex items-center md:justify-start">
|
|
532
|
+
<Badge
|
|
533
|
+
variant="outline"
|
|
534
|
+
className={cn("text-[10px]", statusColors[form.status])}
|
|
535
|
+
>
|
|
536
|
+
{form.status}
|
|
537
|
+
</Badge>
|
|
538
|
+
</div>
|
|
539
|
+
|
|
540
|
+
<div className="min-w-0 text-xs text-muted-foreground">
|
|
541
|
+
{t("responses.totalCount", {
|
|
542
|
+
count: form.responseCount ?? 0,
|
|
543
|
+
formattedCount: formatNumber(form.responseCount ?? 0),
|
|
544
|
+
})}
|
|
545
|
+
</div>
|
|
546
|
+
|
|
547
|
+
<div className="min-w-0 text-xs text-muted-foreground">
|
|
548
|
+
{dateLabel}
|
|
549
|
+
</div>
|
|
550
|
+
|
|
551
|
+
<div className="flex justify-end">
|
|
526
552
|
{!selectionMode && (
|
|
527
553
|
<DropdownMenu>
|
|
528
554
|
<DropdownMenuTrigger
|
|
@@ -649,39 +675,6 @@ export function FormsListPage() {
|
|
|
649
675
|
</DropdownMenu>
|
|
650
676
|
)}
|
|
651
677
|
</div>
|
|
652
|
-
|
|
653
|
-
<div className="flex flex-wrap items-center justify-between gap-2">
|
|
654
|
-
<Badge
|
|
655
|
-
variant="outline"
|
|
656
|
-
className={cn(
|
|
657
|
-
"text-[10px] shrink-0",
|
|
658
|
-
statusColors[form.status],
|
|
659
|
-
)}
|
|
660
|
-
>
|
|
661
|
-
{form.status}
|
|
662
|
-
</Badge>
|
|
663
|
-
<div className="flex min-w-0 flex-wrap items-center justify-end gap-x-3 gap-y-1 text-xs text-muted-foreground">
|
|
664
|
-
<span className="block min-w-0 max-w-full truncate">
|
|
665
|
-
{t("responses.totalCount", {
|
|
666
|
-
count: form.responseCount ?? 0,
|
|
667
|
-
formattedCount: formatNumber(form.responseCount ?? 0),
|
|
668
|
-
})}
|
|
669
|
-
</span>
|
|
670
|
-
<span className="block min-w-0 max-w-full truncate">
|
|
671
|
-
{isArchive && (form as any).deletedAt
|
|
672
|
-
? t("forms.deletedDate", {
|
|
673
|
-
date: formatDate((form as any).deletedAt, {
|
|
674
|
-
month: "short",
|
|
675
|
-
day: "numeric",
|
|
676
|
-
}),
|
|
677
|
-
})
|
|
678
|
-
: formatDate(form.createdAt, {
|
|
679
|
-
month: "short",
|
|
680
|
-
day: "numeric",
|
|
681
|
-
})}
|
|
682
|
-
</span>
|
|
683
|
-
</div>
|
|
684
|
-
</div>
|
|
685
678
|
</div>
|
|
686
679
|
);
|
|
687
680
|
})}
|
|
@@ -198,7 +198,7 @@ function OpenLinkInterceptor() {
|
|
|
198
198
|
if (!path) return;
|
|
199
199
|
|
|
200
200
|
event.preventDefault();
|
|
201
|
-
if (location.pathname === "/" && path !== "/") {
|
|
201
|
+
if (location.pathname === "/ask" && path !== "/ask") {
|
|
202
202
|
markAgentChatHomeHandoff("forms");
|
|
203
203
|
}
|
|
204
204
|
navigateWithAgentChatViewTransition(navigate, path);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import messages from "@/i18n/en-US";
|
|
2
|
+
import { AskPage } from "@/pages/AskPage";
|
|
3
|
+
|
|
4
|
+
export function meta() {
|
|
5
|
+
return [
|
|
6
|
+
{
|
|
7
|
+
title: `${messages.navigation.askForms} - ${messages.navigation.brand}`,
|
|
8
|
+
},
|
|
9
|
+
];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default function AskRoute() {
|
|
13
|
+
return <AskPage />;
|
|
14
|
+
}
|