@agent-native/core 0.90.11 → 0.91.1
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 +34 -0
- package/corpus/core/docs/content/toolkit-settings.mdx +56 -3
- package/corpus/core/package.json +2 -1
- package/corpus/core/src/agent/run-ownership.ts +29 -1
- package/corpus/core/src/changelog/parse.ts +78 -0
- package/corpus/core/src/chat-threads/schema.ts +43 -0
- package/corpus/core/src/chat-threads/store.ts +144 -12
- package/corpus/core/src/cli/design-connect.ts +53 -9
- package/corpus/core/src/cli/workspace-dev.ts +25 -5
- package/corpus/core/src/client/AgentPanel.tsx +79 -14
- package/corpus/core/src/client/AssistantChat.tsx +359 -425
- package/corpus/core/src/client/analytics-session.ts +70 -0
- package/corpus/core/src/client/analytics.ts +175 -49
- package/corpus/core/src/client/chat/message-components.tsx +22 -2
- package/corpus/core/src/client/components/ui/message-scroller.tsx +131 -0
- package/corpus/core/src/client/conversation/AgentConversation.tsx +63 -41
- package/corpus/core/src/client/error-capture.ts +616 -0
- package/corpus/core/src/client/index.ts +12 -0
- package/corpus/core/src/client/session-replay.ts +57 -7
- package/corpus/core/src/client/settings/SettingsPanel.tsx +123 -1
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +292 -45
- package/corpus/core/src/client/settings/index.ts +1 -0
- package/corpus/core/src/client/sharing/ShareButton.tsx +14 -11
- package/corpus/core/src/client/sharing/ShareDialog.tsx +13 -10
- package/corpus/core/src/mcp/builtin-tools.ts +29 -2
- package/corpus/core/src/server/agent-chat-plugin.ts +174 -79
- package/corpus/core/src/server/onboarding-html.ts +28 -16
- package/corpus/core/src/sharing/actions/list-resource-shares.ts +45 -1
- package/corpus/core/src/sharing/actions/share-resource.ts +9 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/changelog/SKILL.md +9 -6
- package/corpus/core/src/vite/client.ts +217 -35
- package/corpus/templates/analytics/.agents/skills/adhoc-analysis/SKILL.md +8 -7
- package/corpus/templates/analytics/.agents/skills/analysis-workspace/SKILL.md +14 -10
- package/corpus/templates/analytics/.agents/skills/bigquery/SKILL.md +15 -15
- package/corpus/templates/analytics/.agents/skills/cross-source-analysis/SKILL.md +1 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +38 -22
- package/corpus/templates/analytics/.agents/skills/data-programs/SKILL.md +114 -61
- package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +1 -0
- package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +7 -7
- package/corpus/templates/analytics/.agents/skills/hubspot/SKILL.md +1 -0
- package/corpus/templates/analytics/.agents/skills/prometheus/SKILL.md +1 -1
- package/corpus/templates/analytics/.builder/skills/bigquery/SKILL.md +17 -17
- package/corpus/templates/analytics/.builder/skills/gcloud/SKILL.md +5 -5
- package/corpus/templates/analytics/.builder/skills/github/SKILL.md +7 -7
- package/corpus/templates/analytics/.builder/skills/gong/SKILL.md +12 -12
- package/corpus/templates/analytics/.builder/skills/grafana/SKILL.md +7 -7
- package/corpus/templates/analytics/.builder/skills/sentry/SKILL.md +7 -7
- package/corpus/templates/analytics/.builder/skills/slack/SKILL.md +6 -6
- package/corpus/templates/analytics/.builder/skills/stripe/SKILL.md +7 -7
- package/corpus/templates/analytics/AGENTS.md +47 -2
- package/corpus/templates/analytics/actions/add-status-page-monitor.ts +36 -0
- package/corpus/templates/analytics/actions/capture-test-error.ts +33 -0
- package/corpus/templates/analytics/actions/delete-monitor.ts +24 -0
- package/corpus/templates/analytics/actions/delete-status-page.ts +23 -0
- package/corpus/templates/analytics/actions/get-error-issue.ts +36 -0
- package/corpus/templates/analytics/actions/get-monitor-stats.ts +55 -0
- package/corpus/templates/analytics/actions/get-monitor.ts +27 -0
- package/corpus/templates/analytics/actions/get-public-status-page.ts +41 -0
- package/corpus/templates/analytics/actions/get-status-page.ts +29 -0
- package/corpus/templates/analytics/actions/list-error-issues.ts +40 -0
- package/corpus/templates/analytics/actions/list-monitors.ts +21 -0
- package/corpus/templates/analytics/actions/list-status-pages.ts +21 -0
- package/corpus/templates/analytics/actions/match-error-issues.ts +51 -0
- package/corpus/templates/analytics/actions/navigate.ts +58 -4
- package/corpus/templates/analytics/actions/remove-status-page-monitor.ts +22 -0
- package/corpus/templates/analytics/actions/reorder-status-page-monitors.ts +25 -0
- package/corpus/templates/analytics/actions/resolve-error-issue.ts +38 -0
- package/corpus/templates/analytics/actions/run-monitor-check.ts +23 -0
- package/corpus/templates/analytics/actions/save-analysis.ts +1 -0
- package/corpus/templates/analytics/actions/save-monitor.ts +145 -0
- package/corpus/templates/analytics/actions/save-status-page.ts +47 -0
- package/corpus/templates/analytics/actions/view-screen.ts +212 -0
- package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -0
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +10 -1
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +134 -39
- package/corpus/templates/analytics/app/components/monitoring/PublicStatusView.tsx +351 -0
- package/corpus/templates/analytics/app/components/monitoring/ResponseTimeChart.tsx +174 -0
- package/corpus/templates/analytics/app/components/monitoring/UptimeStatCards.tsx +85 -0
- package/corpus/templates/analytics/app/components/monitoring/UptimeTimelineBars.tsx +106 -0
- package/corpus/templates/analytics/app/components/monitoring/chart-utils.ts +101 -0
- package/corpus/templates/analytics/app/components/monitoring/index.ts +28 -0
- package/corpus/templates/analytics/app/components/monitoring/types.ts +42 -0
- package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +34 -0
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +6 -0
- package/corpus/templates/analytics/app/i18n-data.ts +33 -0
- package/corpus/templates/analytics/app/pages/DataSources.tsx +28 -0
- package/corpus/templates/analytics/app/pages/Settings.tsx +77 -9
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +3 -3
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dashboard-layout.ts +7 -0
- package/corpus/templates/analytics/app/pages/monitoring/ErrorsPanel.tsx +205 -0
- package/corpus/templates/analytics/app/pages/monitoring/MonitoringPage.tsx +100 -0
- package/corpus/templates/analytics/app/pages/monitoring/UptimePanel.tsx +475 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/IssueDetail.tsx +372 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/IssueList.tsx +360 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/Sparkline.tsx +55 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/i18n.ts +106 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/types.ts +75 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/utils.ts +132 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorDetail.tsx +535 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorFormPage.tsx +1026 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorList.tsx +311 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/i18n.ts +235 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/StatusPageEditor.tsx +661 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/StatusPagesView.tsx +355 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/i18n.ts +106 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/slug.ts +24 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/status-pages/types.ts +20 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/status-summary.ts +87 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/types.ts +161 -0
- package/corpus/templates/analytics/app/pages/monitoring/uptime/utils.ts +210 -0
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +76 -1
- package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +74 -9
- package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +197 -20
- package/corpus/templates/analytics/app/root.tsx +33 -1
- package/corpus/templates/analytics/app/routes/monitoring._index.tsx +10 -0
- package/corpus/templates/analytics/app/routes/status.$slug.tsx +118 -0
- package/corpus/templates/analytics/changelog/2026-07-08-add-uptime-monitors-that-ping-your-urls-and-alert-you-when-t.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-analytics-chats-keep-large-data-dictionaries-compact-so-prov.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-create-public-status-pages-that-share-the-live-health-of-cho.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-dashboard-extension-panels-use-clearer-open-copy.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-error-capture.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-fixed-single-panel-dashboard-drags-so-they-no-longer-rewrite.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-jump-straight-from-an-error-in-a-session-recording-to-its-fu.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-monitor-detail-and-list-now-show-colorful-uptime-timelines-r.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-pinned-ask-chats-now-show-a-pin-icon-in-the-sidebar.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-publish-a-public-uptime-status-page-with-colorful-uptime-tim.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-sessions-now-hide-visitor-emails-in-demo-mode-and-show-clean.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-settings-are-cleaner-searchable-and-alerts-have-their-own-tab.md +5 -0
- package/corpus/templates/analytics/changelog/2026-07-08-sidebar-sections-stay-collapsed-until-opened.md +5 -0
- package/corpus/templates/analytics/changelog/2026-07-08-the-uptime-monitor-list-now-has-a-current-status-overview-wi.md +6 -0
- package/corpus/templates/analytics/docs/error-capture.md +172 -0
- package/corpus/templates/analytics/docs/uptime-monitoring.md +150 -0
- package/corpus/templates/analytics/server/db/schema-errors.ts +150 -0
- package/corpus/templates/analytics/server/db/schema-monitoring.ts +177 -0
- package/corpus/templates/analytics/server/db/schema.ts +6 -0
- package/corpus/templates/analytics/server/jobs/uptime-monitors.ts +123 -0
- package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +41 -0
- package/corpus/templates/analytics/server/lib/data-dictionary-context.ts +55 -12
- package/corpus/templates/analytics/server/lib/error-capture.ts +1331 -0
- package/corpus/templates/analytics/server/lib/first-party-analytics.ts +47 -1
- package/corpus/templates/analytics/server/lib/monitor-stats.ts +494 -0
- package/corpus/templates/analytics/server/lib/status-pages.ts +798 -0
- package/corpus/templates/analytics/server/lib/uptime-monitors.ts +1665 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +7 -37
- package/corpus/templates/analytics/server/plugins/auth.ts +11 -1
- package/corpus/templates/analytics/server/plugins/db.ts +408 -0
- package/corpus/templates/analytics/server/plugins/uptime-monitor-jobs.ts +63 -0
- package/corpus/templates/assets/app/routes/_index.tsx +1 -1
- package/corpus/templates/assets/app/routes/settings.tsx +22 -1
- package/corpus/templates/assets/changelog/2026-07-08-recent-drafts-keep-comfortable-side-padding.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/brain/app/routes/settings.tsx +43 -5
- package/corpus/templates/brain/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/calendar/app/pages/Settings.tsx +44 -6
- package/corpus/templates/calendar/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/chat/app/routes/settings.tsx +16 -1
- package/corpus/templates/chat/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/clips/actions/lib/audio-only-transcription.ts +79 -37
- package/corpus/templates/clips/app/components/player/player-controls.tsx +35 -0
- package/corpus/templates/clips/app/components/player/video-player.tsx +162 -18
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +63 -6
- package/corpus/templates/clips/app/routes/record.tsx +18 -1
- package/corpus/templates/clips/changelog/2026-07-07-shared-clips-start-playback-reliably-from-the-first-play-click.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-chrome-extension-camera-and-microphone-menus-now-show-which-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-chrome-extension-copies-new-clip-links-after-saving.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-chrome-extension-recordings-now-continue-after-granting-came.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-mobile-shared-clips-now-have-loom-style-tap-and-skip-controls.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-recordings-and-uploads-copy-links-after-saving.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-settings-are-cleaner-searchable-and-collapse-s3-with-builder.md +5 -0
- package/corpus/templates/clips/changelog/2026-07-08-transcripts-are-more-reliable-for-longer-desktop-recordings-.md +6 -0
- package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -0
- package/corpus/templates/clips/chrome-extension/src/background.ts +162 -13
- package/corpus/templates/clips/chrome-extension/src/content-script.ts +14 -0
- package/corpus/templates/clips/chrome-extension/src/offscreen.ts +36 -0
- package/corpus/templates/clips/chrome-extension/src/overlay.ts +99 -25
- package/corpus/templates/clips/chrome-extension/src/permission.ts +63 -14
- package/corpus/templates/clips/chrome-extension/src/popup.ts +123 -23
- package/corpus/templates/content/actions/_builder-cms-read-client.ts +47 -0
- package/corpus/templates/content/actions/_database-source-utils.ts +33 -4
- package/corpus/templates/content/actions/add-content-database-source-field-property.ts +214 -29
- package/corpus/templates/content/actions/attach-content-database-source.ts +3 -0
- package/corpus/templates/content/actions/change-content-database-source-role.ts +1 -0
- package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +42 -32
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +352 -81
- package/corpus/templates/content/app/components/editor/database/settings.tsx +49 -24
- package/corpus/templates/content/app/routes/_app.settings.tsx +19 -1
- package/corpus/templates/content/changelog/2026-07-07-builder-source-tag-fields-now-import-as-multi-select.md +6 -0
- package/corpus/templates/content/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/content/shared/api.ts +3 -0
- package/corpus/templates/content/shared/properties.ts +42 -0
- package/corpus/templates/design/AGENTS.md +9 -0
- package/corpus/templates/design/actions/generate-design.ts +3 -0
- package/corpus/templates/design/actions/get-design-system.ts +147 -1
- package/corpus/templates/design/actions/request-localhost-write-consent.ts +141 -0
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +13 -19
- package/corpus/templates/design/app/routes/settings.tsx +16 -1
- package/corpus/templates/design/changelog/2026-07-08-design-generation-now-follows-hydrated-builder-design-system.md +6 -0
- package/corpus/templates/design/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/design/server/lib/verify-write-grant.ts +4 -2
- package/corpus/templates/dispatch/app/routes/settings.tsx +23 -2
- package/corpus/templates/dispatch/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/forms/app/routes/_app.settings.tsx +16 -1
- package/corpus/templates/forms/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/macros/app/routes/settings.tsx +16 -1
- package/corpus/templates/macros/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/mail/app/components/settings/GmailFiltersSection.tsx +1 -1
- package/corpus/templates/mail/app/components/settings/SnippetsSection.tsx +1 -1
- package/corpus/templates/mail/app/pages/SettingsPage.tsx +123 -105
- package/corpus/templates/mail/changelog/2026-07-08-settings-redesigned-with-a-consistent-searchable-layout.md +5 -0
- package/corpus/templates/plan/app/routes/settings.tsx +23 -2
- package/corpus/templates/plan/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/corpus/templates/slides/actions/add-slide.ts +1 -0
- package/corpus/templates/slides/actions/get-design-system.ts +147 -1
- package/corpus/templates/slides/app/pages/Index.tsx +46 -1
- package/corpus/templates/slides/app/routes/settings.tsx +16 -1
- package/corpus/templates/slides/changelog/2026-07-08-deck-generation-now-follows-hydrated-builder-design-system-g.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +5 -0
- package/dist/agent/run-ownership.d.ts +6 -0
- package/dist/agent/run-ownership.d.ts.map +1 -1
- package/dist/agent/run-ownership.js +11 -1
- package/dist/agent/run-ownership.js.map +1 -1
- package/dist/changelog/parse.d.ts +7 -0
- package/dist/changelog/parse.d.ts.map +1 -1
- package/dist/changelog/parse.js +64 -0
- package/dist/changelog/parse.js.map +1 -1
- package/dist/chat-threads/schema.d.ts +445 -0
- package/dist/chat-threads/schema.d.ts.map +1 -0
- package/dist/chat-threads/schema.js +39 -0
- package/dist/chat-threads/schema.js.map +1 -0
- package/dist/chat-threads/store.d.ts +12 -0
- package/dist/chat-threads/store.d.ts.map +1 -1
- package/dist/chat-threads/store.js +99 -10
- package/dist/chat-threads/store.js.map +1 -1
- package/dist/cli/design-connect.d.ts.map +1 -1
- package/dist/cli/design-connect.js +40 -10
- package/dist/cli/design-connect.js.map +1 -1
- package/dist/cli/workspace-dev.d.ts.map +1 -1
- package/dist/cli/workspace-dev.js +20 -5
- package/dist/cli/workspace-dev.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +35 -7
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +105 -183
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/analytics-session.d.ts +3 -0
- package/dist/client/analytics-session.d.ts.map +1 -0
- package/dist/client/analytics-session.js +66 -0
- package/dist/client/analytics-session.js.map +1 -0
- package/dist/client/analytics.d.ts +32 -0
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +116 -46
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/chat/message-components.d.ts +2 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +16 -6
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/components/ui/message-scroller.d.ts +16 -0
- package/dist/client/components/ui/message-scroller.d.ts.map +1 -0
- package/dist/client/components/ui/message-scroller.js +25 -0
- package/dist/client/components/ui/message-scroller.js.map +1 -0
- package/dist/client/conversation/AgentConversation.d.ts +1 -1
- package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
- package/dist/client/conversation/AgentConversation.js +3 -8
- package/dist/client/conversation/AgentConversation.js.map +1 -1
- package/dist/client/error-capture.d.ts +99 -0
- package/dist/client/error-capture.d.ts.map +1 -0
- package/dist/client/error-capture.js +437 -0
- package/dist/client/error-capture.js.map +1 -0
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +3 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/session-replay.d.ts +22 -0
- package/dist/client/session-replay.d.ts.map +1 -1
- package/dist/client/session-replay.js +45 -4
- package/dist/client/session-replay.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +100 -5
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts +49 -1
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js +131 -19
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/client/settings/index.d.ts +1 -1
- package/dist/client/settings/index.d.ts.map +1 -1
- package/dist/client/settings/index.js.map +1 -1
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +13 -8
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
- package/dist/client/sharing/ShareDialog.js +12 -7
- package/dist/client/sharing/ShareDialog.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/mcp/builtin-tools.d.ts.map +1 -1
- package/dist/mcp/builtin-tools.js +21 -2
- package/dist/mcp/builtin-tools.js.map +1 -1
- package/dist/observability/routes.d.ts +1 -1
- package/dist/org/schema.d.ts +15 -15
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +109 -73
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +28 -16
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/sharing/actions/list-resource-shares.js +30 -1
- package/dist/sharing/actions/list-resource-shares.js.map +1 -1
- package/dist/sharing/actions/share-resource.js +6 -0
- package/dist/sharing/actions/share-resource.js.map +1 -1
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -2
- package/dist/templates/workspace-core/.agents/skills/changelog/SKILL.md +9 -6
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +192 -30
- package/dist/vite/client.js.map +1 -1
- package/docs/content/toolkit-settings.mdx +56 -3
- package/package.json +2 -1
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -2
- package/src/templates/workspace-core/.agents/skills/changelog/SKILL.md +9 -6
|
@@ -59,7 +59,8 @@ export async function verifyWriteGrant(
|
|
|
59
59
|
if (!grant) {
|
|
60
60
|
throw new Error(
|
|
61
61
|
"No localhost write-consent grant found for this design + connection. " +
|
|
62
|
-
"
|
|
62
|
+
"Call request-localhost-write-consent to prompt the user, then retry " +
|
|
63
|
+
"this write after they click 'Allow writes'.",
|
|
63
64
|
);
|
|
64
65
|
}
|
|
65
66
|
|
|
@@ -67,7 +68,8 @@ export async function verifyWriteGrant(
|
|
|
67
68
|
if (grant.grantedUntil < now) {
|
|
68
69
|
throw new Error(
|
|
69
70
|
`Localhost write-consent grant expired at ${grant.grantedUntil}. ` +
|
|
70
|
-
"
|
|
71
|
+
"Call request-localhost-write-consent to prompt the user for a new " +
|
|
72
|
+
"grant, then retry this write.",
|
|
71
73
|
);
|
|
72
74
|
}
|
|
73
75
|
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
SettingsTabsPage,
|
|
5
5
|
useAgentSettingsTabs,
|
|
6
6
|
useT,
|
|
7
|
+
type SettingsSearchEntry,
|
|
7
8
|
} from "@agent-native/core/client";
|
|
8
9
|
import { TeamPage } from "@agent-native/core/client/org";
|
|
9
10
|
import { Button } from "@agent-native/dispatch/components/ui/button";
|
|
@@ -15,6 +16,7 @@ import {
|
|
|
15
16
|
CardTitle,
|
|
16
17
|
} from "@agent-native/dispatch/components/ui/card";
|
|
17
18
|
import { Label } from "@agent-native/dispatch/components/ui/label";
|
|
19
|
+
import { useMemo } from "react";
|
|
18
20
|
import { Link } from "react-router";
|
|
19
21
|
|
|
20
22
|
import { messagesByLocale } from "@/i18n-data";
|
|
@@ -29,16 +31,35 @@ export default function SettingsRoute() {
|
|
|
29
31
|
const t = useT();
|
|
30
32
|
const agentSettingsTabs = useAgentSettingsTabs();
|
|
31
33
|
|
|
34
|
+
const generalSearchEntries = useMemo<SettingsSearchEntry[]>(
|
|
35
|
+
() => [
|
|
36
|
+
{
|
|
37
|
+
id: "dispatch-language",
|
|
38
|
+
label: t("settings.languageTitle"),
|
|
39
|
+
keywords: "language locale translation i18n",
|
|
40
|
+
hash: "language",
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: "dispatch-workspace",
|
|
44
|
+
label: t("settings.workspaceTitle"),
|
|
45
|
+
keywords: "workspace resources integrations vault destinations",
|
|
46
|
+
hash: "workspace-resources",
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
[t],
|
|
50
|
+
);
|
|
51
|
+
|
|
32
52
|
return (
|
|
33
53
|
<SettingsTabsPage
|
|
34
54
|
extraTabs={agentSettingsTabs}
|
|
55
|
+
generalSearchEntries={generalSearchEntries}
|
|
35
56
|
general={
|
|
36
57
|
<div className="mx-auto w-full max-w-3xl space-y-6">
|
|
37
58
|
<p className="text-sm leading-6 text-muted-foreground">
|
|
38
59
|
{t("settings.description")}
|
|
39
60
|
</p>
|
|
40
61
|
|
|
41
|
-
<Card>
|
|
62
|
+
<Card id="language" className="scroll-mt-16">
|
|
42
63
|
<CardHeader>
|
|
43
64
|
<CardTitle className="text-base">
|
|
44
65
|
{t("settings.languageTitle")}
|
|
@@ -53,7 +74,7 @@ export default function SettingsRoute() {
|
|
|
53
74
|
</CardContent>
|
|
54
75
|
</Card>
|
|
55
76
|
|
|
56
|
-
<Card>
|
|
77
|
+
<Card id="workspace-resources" className="scroll-mt-16">
|
|
57
78
|
<CardHeader>
|
|
58
79
|
<CardTitle className="text-base">
|
|
59
80
|
{t("settings.workspaceTitle")}
|
|
@@ -4,9 +4,11 @@ import {
|
|
|
4
4
|
SettingsTabsPage,
|
|
5
5
|
useAgentSettingsTabs,
|
|
6
6
|
useT,
|
|
7
|
+
type SettingsSearchEntry,
|
|
7
8
|
} from "@agent-native/core/client";
|
|
8
9
|
import { TeamPage } from "@agent-native/core/client/org";
|
|
9
10
|
import { useSetPageTitle } from "@agent-native/toolkit/app-shell";
|
|
11
|
+
import { useMemo } from "react";
|
|
10
12
|
|
|
11
13
|
import {
|
|
12
14
|
Card,
|
|
@@ -29,17 +31,30 @@ export default function SettingsRoute() {
|
|
|
29
31
|
const agentSettingsTabs = useAgentSettingsTabs();
|
|
30
32
|
useSetPageTitle(t("settings.title"));
|
|
31
33
|
|
|
34
|
+
const generalSearchEntries = useMemo<SettingsSearchEntry[]>(
|
|
35
|
+
() => [
|
|
36
|
+
{
|
|
37
|
+
id: "forms-language",
|
|
38
|
+
label: t("settings.languageTitle"),
|
|
39
|
+
keywords: "language locale translation i18n",
|
|
40
|
+
hash: "language",
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
[t],
|
|
44
|
+
);
|
|
45
|
+
|
|
32
46
|
return (
|
|
33
47
|
<SettingsTabsPage
|
|
34
48
|
teamLabel={t("navigation.team")}
|
|
35
49
|
extraTabs={agentSettingsTabs}
|
|
50
|
+
generalSearchEntries={generalSearchEntries}
|
|
36
51
|
general={
|
|
37
52
|
<div className="mx-auto w-full max-w-3xl space-y-6">
|
|
38
53
|
<p className="text-sm leading-6 text-muted-foreground">
|
|
39
54
|
{t("settings.description")}
|
|
40
55
|
</p>
|
|
41
56
|
|
|
42
|
-
<Card>
|
|
57
|
+
<Card id="language" className="scroll-mt-16">
|
|
43
58
|
<CardHeader>
|
|
44
59
|
<CardTitle className="text-base">
|
|
45
60
|
{t("settings.languageTitle")}
|
|
@@ -4,9 +4,11 @@ import {
|
|
|
4
4
|
SettingsTabsPage,
|
|
5
5
|
useAgentSettingsTabs,
|
|
6
6
|
useT,
|
|
7
|
+
type SettingsSearchEntry,
|
|
7
8
|
} from "@agent-native/core/client";
|
|
8
9
|
import { TeamPage } from "@agent-native/core/client/org";
|
|
9
10
|
import { useSetPageTitle } from "@agent-native/toolkit/app-shell";
|
|
11
|
+
import { useMemo } from "react";
|
|
10
12
|
|
|
11
13
|
import {
|
|
12
14
|
Card,
|
|
@@ -29,17 +31,30 @@ export default function SettingsRoute() {
|
|
|
29
31
|
const agentSettingsTabs = useAgentSettingsTabs();
|
|
30
32
|
useSetPageTitle(t("settings.title"));
|
|
31
33
|
|
|
34
|
+
const generalSearchEntries = useMemo<SettingsSearchEntry[]>(
|
|
35
|
+
() => [
|
|
36
|
+
{
|
|
37
|
+
id: "macros-language",
|
|
38
|
+
label: t("settings.languageTitle"),
|
|
39
|
+
keywords: "language locale translation i18n",
|
|
40
|
+
hash: "language",
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
[t],
|
|
44
|
+
);
|
|
45
|
+
|
|
32
46
|
return (
|
|
33
47
|
<SettingsTabsPage
|
|
34
48
|
teamLabel={t("team.title")}
|
|
35
49
|
extraTabs={agentSettingsTabs}
|
|
50
|
+
generalSearchEntries={generalSearchEntries}
|
|
36
51
|
general={
|
|
37
52
|
<div className="mx-auto w-full max-w-3xl space-y-6">
|
|
38
53
|
<p className="text-sm leading-6 text-muted-foreground">
|
|
39
54
|
{t("settings.description")}
|
|
40
55
|
</p>
|
|
41
56
|
|
|
42
|
-
<Card>
|
|
57
|
+
<Card id="language" className="scroll-mt-16">
|
|
43
58
|
<CardHeader>
|
|
44
59
|
<CardTitle className="text-base">
|
|
45
60
|
{t("settings.languageTitle")}
|
|
@@ -554,7 +554,7 @@ export function GmailFiltersSection() {
|
|
|
554
554
|
);
|
|
555
555
|
|
|
556
556
|
return (
|
|
557
|
-
<div
|
|
557
|
+
<div>
|
|
558
558
|
<div className="mb-6 flex items-center justify-between">
|
|
559
559
|
<div>
|
|
560
560
|
<h2 className="text-[16px] font-semibold text-foreground">
|
|
@@ -231,7 +231,7 @@ export function SnippetsSection() {
|
|
|
231
231
|
};
|
|
232
232
|
|
|
233
233
|
return (
|
|
234
|
-
<div
|
|
234
|
+
<div>
|
|
235
235
|
<div className="flex items-center justify-between mb-6">
|
|
236
236
|
<div>
|
|
237
237
|
<h2 className="text-[16px] font-semibold text-foreground">
|
|
@@ -5,8 +5,11 @@ import {
|
|
|
5
5
|
useChangeVersions,
|
|
6
6
|
ChangelogSettingsCard,
|
|
7
7
|
LanguagePicker,
|
|
8
|
+
SettingsTabsPage,
|
|
8
9
|
useAgentSettingsTabs,
|
|
9
10
|
useT,
|
|
11
|
+
type SettingsSearchEntry,
|
|
12
|
+
type SettingsTabItem,
|
|
10
13
|
} from "@agent-native/core/client";
|
|
11
14
|
import { appApiPath } from "@agent-native/core/client";
|
|
12
15
|
import { TeamPage } from "@agent-native/core/client/org";
|
|
@@ -32,8 +35,6 @@ import {
|
|
|
32
35
|
IconSignature,
|
|
33
36
|
IconFilter,
|
|
34
37
|
IconInfoCircle,
|
|
35
|
-
IconHistory,
|
|
36
|
-
IconSettings,
|
|
37
38
|
IconMessage2,
|
|
38
39
|
} from "@tabler/icons-react";
|
|
39
40
|
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
@@ -328,7 +329,7 @@ function AliasesSection() {
|
|
|
328
329
|
};
|
|
329
330
|
|
|
330
331
|
return (
|
|
331
|
-
<div
|
|
332
|
+
<div>
|
|
332
333
|
{/* Header */}
|
|
333
334
|
<div className="flex items-center justify-between mb-6">
|
|
334
335
|
<div>
|
|
@@ -938,7 +939,7 @@ function AutomationsSection() {
|
|
|
938
939
|
};
|
|
939
940
|
|
|
940
941
|
return (
|
|
941
|
-
<div
|
|
942
|
+
<div>
|
|
942
943
|
{/* Header */}
|
|
943
944
|
<div className="flex items-center justify-between mb-6">
|
|
944
945
|
<div>
|
|
@@ -1115,7 +1116,7 @@ function DraftingSection() {
|
|
|
1115
1116
|
};
|
|
1116
1117
|
|
|
1117
1118
|
return (
|
|
1118
|
-
<div
|
|
1119
|
+
<div>
|
|
1119
1120
|
<div className="mb-6">
|
|
1120
1121
|
<h2 className="text-[16px] font-semibold text-foreground">
|
|
1121
1122
|
{t("settings.drafting")}
|
|
@@ -1252,7 +1253,7 @@ function TrackingSection() {
|
|
|
1252
1253
|
};
|
|
1253
1254
|
|
|
1254
1255
|
return (
|
|
1255
|
-
<div
|
|
1256
|
+
<div>
|
|
1256
1257
|
<div className="mb-6">
|
|
1257
1258
|
<h2 className="text-[16px] font-semibold text-foreground">
|
|
1258
1259
|
{t("settings.tracking")}
|
|
@@ -1334,7 +1335,7 @@ function SlackIntakeSection() {
|
|
|
1334
1335
|
: t("settings.slackNeedsCredentials");
|
|
1335
1336
|
|
|
1336
1337
|
return (
|
|
1337
|
-
<div
|
|
1338
|
+
<div>
|
|
1338
1339
|
<div className="mb-6">
|
|
1339
1340
|
<h2 className="text-[16px] font-semibold text-foreground">
|
|
1340
1341
|
{t("settings.slackIntake")}
|
|
@@ -1412,7 +1413,7 @@ function SlackIntakeSection() {
|
|
|
1412
1413
|
function GeneralSection() {
|
|
1413
1414
|
const t = useT();
|
|
1414
1415
|
return (
|
|
1415
|
-
<div
|
|
1416
|
+
<div>
|
|
1416
1417
|
<div className="mb-6">
|
|
1417
1418
|
<h2 className="text-[16px] font-semibold text-foreground">
|
|
1418
1419
|
{t("settings.general")}
|
|
@@ -1422,7 +1423,10 @@ function GeneralSection() {
|
|
|
1422
1423
|
</p>
|
|
1423
1424
|
</div>
|
|
1424
1425
|
|
|
1425
|
-
<div
|
|
1426
|
+
<div
|
|
1427
|
+
id="language"
|
|
1428
|
+
className="max-w-2xl scroll-mt-4 rounded-lg border border-border/20 bg-card/50 p-4"
|
|
1429
|
+
>
|
|
1426
1430
|
<div className="mb-3">
|
|
1427
1431
|
<h3 className="text-[13px] font-semibold text-foreground">
|
|
1428
1432
|
{t("settings.languageTitle")}
|
|
@@ -1442,7 +1446,7 @@ function GeneralSection() {
|
|
|
1442
1446
|
function WhatsNewSection() {
|
|
1443
1447
|
const t = useT();
|
|
1444
1448
|
return (
|
|
1445
|
-
<div
|
|
1449
|
+
<div>
|
|
1446
1450
|
<div className="mb-6">
|
|
1447
1451
|
<h2 className="text-[16px] font-semibold text-foreground">
|
|
1448
1452
|
{t("settings.whatsNew")}
|
|
@@ -1461,119 +1465,133 @@ function WhatsNewSection() {
|
|
|
1461
1465
|
|
|
1462
1466
|
// ─── Settings Page ────────────────────────────────────────────────────────────
|
|
1463
1467
|
|
|
1464
|
-
type SettingsNavItem = {
|
|
1465
|
-
id: string;
|
|
1466
|
-
labelKey?: string;
|
|
1467
|
-
label?: string;
|
|
1468
|
-
icon: React.ComponentType<{ className?: string }>;
|
|
1469
|
-
};
|
|
1470
|
-
|
|
1471
|
-
const navItems: SettingsNavItem[] = [
|
|
1472
|
-
{ id: "general", labelKey: "settings.general", icon: IconSettings },
|
|
1473
|
-
{ id: "team", labelKey: "settings.team", icon: IconUsers },
|
|
1474
|
-
{ id: "whats-new", labelKey: "settings.whatsNew", icon: IconHistory },
|
|
1475
|
-
{ id: "drafting", labelKey: "settings.drafting", icon: IconSignature },
|
|
1476
|
-
{ id: "snippets", labelKey: "settings.snippets", icon: IconMessage2 },
|
|
1477
|
-
{ id: "automations", labelKey: "settings.automations", icon: IconBolt },
|
|
1478
|
-
{ id: "gmail-filters", labelKey: "settings.gmailFilters", icon: IconFilter },
|
|
1479
|
-
{ id: "aliases", labelKey: "settings.aliases", icon: IconUsers },
|
|
1480
|
-
{ id: "tracking", labelKey: "settings.tracking", icon: IconChartBar },
|
|
1481
|
-
{ id: "slack", labelKey: "settings.slack", icon: IconBolt },
|
|
1482
|
-
];
|
|
1483
|
-
|
|
1484
1468
|
export function SettingsPage() {
|
|
1485
1469
|
const t = useT();
|
|
1486
1470
|
const [searchParams, setSearchParams] = useSearchParams();
|
|
1487
1471
|
const navState = useNavigationState();
|
|
1488
1472
|
const agentSettingsTabs = useAgentSettingsTabs();
|
|
1489
1473
|
const [activeSection, setActiveSection] = useState<string>("general");
|
|
1490
|
-
|
|
1474
|
+
|
|
1475
|
+
const mailTabs = useMemo<SettingsTabItem[]>(
|
|
1491
1476
|
() => [
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1477
|
+
{
|
|
1478
|
+
id: "drafting",
|
|
1479
|
+
label: t("settings.drafting"),
|
|
1480
|
+
icon: IconSignature,
|
|
1481
|
+
content: <DraftingSection />,
|
|
1482
|
+
keywords: "signature writing style compose reply draft",
|
|
1483
|
+
},
|
|
1484
|
+
{
|
|
1485
|
+
id: "snippets",
|
|
1486
|
+
label: t("settings.snippets"),
|
|
1487
|
+
icon: IconMessage2,
|
|
1488
|
+
content: <SnippetsSection />,
|
|
1489
|
+
keywords: "snippets templates canned responses shortcuts",
|
|
1490
|
+
},
|
|
1491
|
+
{
|
|
1492
|
+
id: "automations",
|
|
1493
|
+
label: t("settings.automations"),
|
|
1494
|
+
icon: IconBolt,
|
|
1495
|
+
content: <AutomationsSection />,
|
|
1496
|
+
keywords: "automations rules triggers events labels model",
|
|
1497
|
+
},
|
|
1498
|
+
{
|
|
1499
|
+
id: "gmail-filters",
|
|
1500
|
+
label: t("settings.gmailFilters"),
|
|
1501
|
+
icon: IconFilter,
|
|
1502
|
+
content: <GmailFiltersSection />,
|
|
1503
|
+
keywords: "gmail filters import rules",
|
|
1504
|
+
},
|
|
1505
|
+
{
|
|
1506
|
+
id: "aliases",
|
|
1507
|
+
label: t("settings.aliases"),
|
|
1508
|
+
icon: IconUsers,
|
|
1509
|
+
content: <AliasesSection />,
|
|
1510
|
+
keywords: "aliases groups distribution lists recipients",
|
|
1511
|
+
},
|
|
1512
|
+
{
|
|
1513
|
+
id: "tracking",
|
|
1514
|
+
label: t("settings.tracking"),
|
|
1515
|
+
icon: IconChartBar,
|
|
1516
|
+
content: <TrackingSection />,
|
|
1517
|
+
keywords: "tracking opens clicks pixel analytics",
|
|
1518
|
+
},
|
|
1519
|
+
{
|
|
1520
|
+
id: "slack",
|
|
1521
|
+
label: t("settings.slack"),
|
|
1522
|
+
icon: IconBolt,
|
|
1523
|
+
content: <SlackIntakeSection />,
|
|
1524
|
+
keywords: "slack intake integration webhook",
|
|
1525
|
+
},
|
|
1526
|
+
],
|
|
1527
|
+
[t],
|
|
1528
|
+
);
|
|
1529
|
+
|
|
1530
|
+
const extraTabs = useMemo<SettingsTabItem[]>(
|
|
1531
|
+
() => [...mailTabs, ...agentSettingsTabs],
|
|
1532
|
+
[agentSettingsTabs, mailTabs],
|
|
1533
|
+
);
|
|
1534
|
+
|
|
1535
|
+
const generalSearchEntries = useMemo<SettingsSearchEntry[]>(
|
|
1536
|
+
() => [
|
|
1537
|
+
{
|
|
1538
|
+
id: "mail-language",
|
|
1539
|
+
label: t("settings.languageTitle"),
|
|
1540
|
+
keywords: "language locale translation i18n",
|
|
1541
|
+
hash: "language",
|
|
1542
|
+
},
|
|
1498
1543
|
],
|
|
1499
|
-
[
|
|
1544
|
+
[t],
|
|
1500
1545
|
);
|
|
1501
1546
|
|
|
1547
|
+
const validSectionIds = useMemo(() => {
|
|
1548
|
+
const ids = new Set<string>(["general", "team", "whats-new"]);
|
|
1549
|
+
for (const tab of extraTabs) ids.add(tab.id);
|
|
1550
|
+
return ids;
|
|
1551
|
+
}, [extraTabs]);
|
|
1552
|
+
|
|
1553
|
+
// Deep links arrive as /settings?section=<id> (e.g. from the agent's
|
|
1554
|
+
// navigate action). Adopt that section, then strip the param so later tab
|
|
1555
|
+
// switches aren't overridden by a stale query value.
|
|
1502
1556
|
useEffect(() => {
|
|
1503
1557
|
const section = searchParams.get("section");
|
|
1504
|
-
if (!section || !
|
|
1558
|
+
if (!section || !validSectionIds.has(section)) return;
|
|
1505
1559
|
setActiveSection(section);
|
|
1506
|
-
setSearchParams(
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1560
|
+
setSearchParams(
|
|
1561
|
+
(prev) => {
|
|
1562
|
+
const next = new URLSearchParams(prev);
|
|
1563
|
+
next.delete("section");
|
|
1564
|
+
return next;
|
|
1565
|
+
},
|
|
1566
|
+
{ replace: true },
|
|
1567
|
+
);
|
|
1568
|
+
}, [searchParams, setSearchParams, validSectionIds]);
|
|
1512
1569
|
|
|
1570
|
+
// Keep app state aware of the visible settings section for the agent.
|
|
1513
1571
|
useEffect(() => {
|
|
1514
1572
|
navState.sync({ view: "settings", settingsSection: activeSection });
|
|
1515
1573
|
}, [activeSection]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
1516
1574
|
|
|
1517
1575
|
return (
|
|
1518
|
-
<
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
<Icon
|
|
1539
|
-
className={cn(
|
|
1540
|
-
"h-4 w-4 shrink-0",
|
|
1541
|
-
isActive ? "text-blue-400" : "text-muted-foreground/60",
|
|
1542
|
-
)}
|
|
1543
|
-
/>
|
|
1544
|
-
{label}
|
|
1545
|
-
</button>
|
|
1546
|
-
);
|
|
1547
|
-
})}
|
|
1548
|
-
</div>
|
|
1549
|
-
|
|
1550
|
-
{/* Right content panel */}
|
|
1551
|
-
<div className="flex flex-1 overflow-hidden bg-background">
|
|
1552
|
-
{activeSection === "general" && <GeneralSection />}
|
|
1553
|
-
{activeSection === "whats-new" && <WhatsNewSection />}
|
|
1554
|
-
{activeSection === "drafting" && <DraftingSection />}
|
|
1555
|
-
{activeSection === "snippets" && <SnippetsSection />}
|
|
1556
|
-
{activeSection === "automations" && <AutomationsSection />}
|
|
1557
|
-
{activeSection === "gmail-filters" && <GmailFiltersSection />}
|
|
1558
|
-
{activeSection === "aliases" && <AliasesSection />}
|
|
1559
|
-
{activeSection === "tracking" && <TrackingSection />}
|
|
1560
|
-
{activeSection === "slack" && <SlackIntakeSection />}
|
|
1561
|
-
{activeSection === "team" && (
|
|
1562
|
-
<div className="flex-1 overflow-y-auto">
|
|
1563
|
-
<TeamPage
|
|
1564
|
-
showTitle={false}
|
|
1565
|
-
createOrgDescription={t("settings.teamDescription")}
|
|
1566
|
-
/>
|
|
1567
|
-
</div>
|
|
1568
|
-
)}
|
|
1569
|
-
{agentSettingsTabs.map((tab) =>
|
|
1570
|
-
activeSection === tab.id ? (
|
|
1571
|
-
<div key={tab.id} className="flex-1 overflow-y-auto p-4 sm:p-8">
|
|
1572
|
-
{tab.content}
|
|
1573
|
-
</div>
|
|
1574
|
-
) : null,
|
|
1575
|
-
)}
|
|
1576
|
-
</div>
|
|
1577
|
-
</div>
|
|
1576
|
+
<SettingsTabsPage
|
|
1577
|
+
className="flex-1"
|
|
1578
|
+
generalLabel={t("settings.general")}
|
|
1579
|
+
teamLabel={t("settings.team")}
|
|
1580
|
+
whatsNewLabel={t("settings.whatsNew")}
|
|
1581
|
+
extraTabs={extraTabs}
|
|
1582
|
+
generalSearchEntries={generalSearchEntries}
|
|
1583
|
+
value={activeSection}
|
|
1584
|
+
onValueChange={setActiveSection}
|
|
1585
|
+
general={<GeneralSection />}
|
|
1586
|
+
team={
|
|
1587
|
+
<div className="mx-auto w-full max-w-3xl">
|
|
1588
|
+
<TeamPage
|
|
1589
|
+
showTitle={false}
|
|
1590
|
+
createOrgDescription={t("settings.teamDescription")}
|
|
1591
|
+
/>
|
|
1592
|
+
</div>
|
|
1593
|
+
}
|
|
1594
|
+
whatsNew={<WhatsNewSection />}
|
|
1595
|
+
/>
|
|
1578
1596
|
);
|
|
1579
1597
|
}
|
|
@@ -4,9 +4,11 @@ import {
|
|
|
4
4
|
SettingsTabsPage,
|
|
5
5
|
useAgentSettingsTabs,
|
|
6
6
|
useT,
|
|
7
|
+
type SettingsSearchEntry,
|
|
7
8
|
} from "@agent-native/core/client";
|
|
8
9
|
import { TeamPage } from "@agent-native/core/client/org";
|
|
9
10
|
import { useSetPageTitle } from "@agent-native/toolkit/app-shell";
|
|
11
|
+
import { useMemo } from "react";
|
|
10
12
|
|
|
11
13
|
import { Button } from "@/components/ui/button";
|
|
12
14
|
import {
|
|
@@ -30,17 +32,36 @@ export default function SettingsRoute() {
|
|
|
30
32
|
const agentSettingsTabs = useAgentSettingsTabs();
|
|
31
33
|
useSetPageTitle(t("settings.title"));
|
|
32
34
|
|
|
35
|
+
const generalSearchEntries = useMemo<SettingsSearchEntry[]>(
|
|
36
|
+
() => [
|
|
37
|
+
{
|
|
38
|
+
id: "plan-language",
|
|
39
|
+
label: t("settings.languageTitle"),
|
|
40
|
+
keywords: "language locale translation i18n",
|
|
41
|
+
hash: "language",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: "plan-editor",
|
|
45
|
+
label: t("settings.editorTitle"),
|
|
46
|
+
keywords: "editor extension vscode ide",
|
|
47
|
+
hash: "editor",
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
[t],
|
|
51
|
+
);
|
|
52
|
+
|
|
33
53
|
return (
|
|
34
54
|
<SettingsTabsPage
|
|
35
55
|
teamLabel={t("header.team")}
|
|
36
56
|
extraTabs={agentSettingsTabs}
|
|
57
|
+
generalSearchEntries={generalSearchEntries}
|
|
37
58
|
general={
|
|
38
59
|
<div className="mx-auto w-full max-w-3xl space-y-6">
|
|
39
60
|
<p className="text-sm leading-6 text-muted-foreground">
|
|
40
61
|
{t("settings.description")}
|
|
41
62
|
</p>
|
|
42
63
|
|
|
43
|
-
<Card>
|
|
64
|
+
<Card id="language" className="scroll-mt-16">
|
|
44
65
|
<CardHeader>
|
|
45
66
|
<CardTitle className="text-base">
|
|
46
67
|
{t("settings.languageTitle")}
|
|
@@ -55,7 +76,7 @@ export default function SettingsRoute() {
|
|
|
55
76
|
</CardContent>
|
|
56
77
|
</Card>
|
|
57
78
|
|
|
58
|
-
<Card>
|
|
79
|
+
<Card id="editor" className="scroll-mt-16">
|
|
59
80
|
<CardHeader>
|
|
60
81
|
<CardTitle className="text-base">
|
|
61
82
|
{t("settings.editorTitle")}
|
|
@@ -35,6 +35,7 @@ export default defineAction({
|
|
|
35
35
|
"Add a single slide to an existing deck. Use this to build decks slide-by-slide — " +
|
|
36
36
|
"call it once per slide in slide order and wait for each result before adding the next slide. " +
|
|
37
37
|
"Avoid parallel add-slide calls for the same deck; sequential writes keep the editor and agent connection stable. " +
|
|
38
|
+
"If the deck has a designSystemId, first use `get-design-system` and apply its `agentContext` tokens/docs; do not use generic slide styling from the id alone. " +
|
|
38
39
|
"Returns the new slide ID, 1-based slideNumber, and updated slide count.",
|
|
39
40
|
schema: z.object({
|
|
40
41
|
deckId: z.string().describe("Target deck ID"),
|