@agent-native/core 0.120.1 → 0.120.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +3 -3
- package/corpus/core/CHANGELOG.md +29 -0
- package/corpus/core/docs/content/extensions.mdx +23 -4
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/production-agent.ts +4 -0
- package/corpus/core/src/agent/run-manager.ts +36 -10
- package/corpus/core/src/agent/types.ts +2 -0
- package/corpus/core/src/cli/context-xray-local.ts +1 -1
- package/corpus/core/src/cli/index.ts +63 -18
- package/corpus/core/src/cli/skills.ts +5 -0
- package/corpus/core/src/cli/telemetry.ts +118 -1
- package/corpus/core/src/client/AgentPanel.tsx +10 -0
- package/corpus/core/src/client/CommandMenu.tsx +13 -1
- package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +39 -4
- package/corpus/core/src/client/analytics.ts +13 -0
- package/corpus/core/src/client/error-capture.ts +6 -1
- package/corpus/core/src/client/extensions/ExtensionsListPage.tsx +28 -8
- package/corpus/core/src/client/extensions/agent-native-extension-runtime.ts +1 -1
- package/corpus/core/src/client/navigation/index.ts +2 -0
- package/corpus/core/src/client/org/OrgSwitcher.tsx +14 -32
- package/corpus/core/src/client/settings/ExtensionsSettingsContent.tsx +24 -0
- package/corpus/core/src/client/settings/SettingsPanel.tsx +10 -0
- package/corpus/core/src/deploy/build.ts +3 -0
- package/corpus/core/src/extensions/theme.ts +1 -1
- package/corpus/core/src/localization/default-messages.ts +2 -0
- package/corpus/core/src/server/analytics.ts +154 -25
- package/corpus/core/src/server/core-routes-plugin.ts +10 -1
- package/corpus/core/src/server/framework-request-handler.ts +17 -26
- package/corpus/core/src/styles/agent-native.css +13 -0
- package/corpus/core/src/templates/chat/app/components/layout/Layout.tsx +3 -0
- package/corpus/core/src/templates/chat/app/components/layout/Sidebar.tsx +113 -51
- package/corpus/core/src/templates/chat/app/global.css +1 -1
- package/corpus/core/src/templates/chat/app/routes/extensions._index.tsx +2 -2
- package/corpus/core/src/templates/chat/netlify.toml +1 -0
- package/corpus/core/src/templates/default/app/global.css +1 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +16 -0
- package/corpus/core/src/tracking/error-capture.ts +151 -0
- package/corpus/core/src/tracking/index.ts +5 -0
- package/corpus/core/src/vite/client.ts +6 -0
- package/corpus/templates/analytics/.agents/skills/adhoc-analysis/SKILL.md +27 -43
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +19 -8
- package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +2 -2
- package/corpus/templates/analytics/AGENTS.md +20 -8
- package/corpus/templates/analytics/actions/get-explorer-dashboard.ts +3 -0
- package/corpus/templates/analytics/actions/list-dashboard-usage-stats.ts +140 -46
- package/corpus/templates/analytics/actions/migrate-analytics-artifacts.ts +48 -0
- package/corpus/templates/analytics/actions/save-analysis.ts +2 -3
- package/corpus/templates/analytics/actions/view-screen.ts +1 -1
- package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +1 -1
- package/corpus/templates/analytics/app/components/dashboard/DashboardHistoryPanel.tsx +1 -4
- package/corpus/templates/analytics/app/components/dashboard/DashboardMetadata.tsx +77 -0
- package/corpus/templates/analytics/app/components/dashboard/DashboardPanelSkeleton.tsx +7 -1
- package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +1 -1
- package/corpus/templates/analytics/app/components/dashboard/DateRangePicker.tsx +2 -2
- package/corpus/templates/analytics/app/components/dashboard/MetricCard.tsx +1 -1
- package/corpus/templates/analytics/app/components/dashboard/RecentActivity.tsx +1 -1
- package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +1 -1
- package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +1 -1
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +41 -9
- package/corpus/templates/analytics/app/components/dashboard/StatsCard.tsx +1 -1
- package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +1 -1
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +2 -0
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +28 -14
- package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +1 -0
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +255 -626
- package/corpus/templates/analytics/app/global.css +31 -1
- package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +2 -2
- package/corpus/templates/analytics/app/i18n-data.ts +80 -0
- package/corpus/templates/analytics/app/lib/dashboard-report-capture.ts +42 -0
- package/corpus/templates/analytics/app/pages/Agents.tsx +49 -2
- package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ChartTypePicker.tsx +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/DateRangePicker.tsx +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventRow.tsx +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/explorer/components/SqlPreview.tsx +2 -2
- package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +54 -11
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +3 -3
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/EmailReportDialog.tsx +2 -2
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +4 -54
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +178 -69
- package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +2 -2
- package/corpus/templates/analytics/app/root.tsx +28 -0
- package/corpus/templates/analytics/app/routes/analyses._index.tsx +3 -2
- package/corpus/templates/analytics/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/analytics/changelog/2026-07-23-analytics-now-groups-saved-analyses-and-embedded-extensions-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-23-dashboard-menus-show-who-created-and-last-updated-each-dashb.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-23-dashboard-usage-now-loads-reliably-for-organizations-with-ma.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-23-long-dashboard-building-requests-now-continue-without-stoppi.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-24-analytics-charts-now-explain-slow-loads-and-offer-a-direct-r.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-24-daily-dashboard-emails-now-load-signed-reports-more-reliably.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-24-manage-agent-is-clearly-marked-as-a-link-to-its-dedicated-pa.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/analytics/netlify.toml +4 -0
- package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +1 -1
- package/corpus/templates/analytics/server/db/schema.ts +9 -0
- package/corpus/templates/analytics/server/jobs/dashboard-report.ts +21 -0
- package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +0 -1
- package/corpus/templates/analytics/server/lib/agent-readable-resource-context.ts +1 -0
- package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +11 -0
- package/corpus/templates/analytics/server/lib/dashboard-report-subscriptions.ts +54 -0
- package/corpus/templates/analytics/server/lib/dashboard-report.ts +235 -26
- package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +4 -1
- package/corpus/templates/analytics/server/lib/migrate-analytics-artifacts.ts +1062 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +6 -52
- package/corpus/templates/analytics/server/plugins/core-routes.ts +1 -1
- package/corpus/templates/analytics/server/plugins/db.ts +19 -0
- package/corpus/templates/analytics/shared/dashboard-report-timeouts.ts +1 -1
- package/corpus/templates/assets/actions/generate-image-batch.ts +36 -1
- package/corpus/templates/assets/actions/generate-image.ts +28 -1
- package/corpus/templates/assets/app/components/asset/AssetPreviewDialog.tsx +376 -0
- package/corpus/templates/assets/app/components/create/RecentDraftsSection.tsx +14 -4
- package/corpus/templates/assets/app/components/layout/Layout.tsx +5 -0
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +164 -82
- package/corpus/templates/assets/app/global.css +1 -1
- package/corpus/templates/assets/app/i18n-data.ts +10 -0
- package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +99 -10
- package/corpus/templates/assets/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/assets/app/routes/library.tsx +21 -198
- package/corpus/templates/assets/changelog/2026-07-21-unified-asset-preview-click-any-asset-to-open-one-preview-wi.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-23-assets-image-generation-now-recovers-after-a-completed-tool-.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/assets/netlify.toml +1 -0
- package/corpus/templates/brain/app/components/layout/Layout.tsx +3 -0
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +114 -51
- package/corpus/templates/brain/app/global.css +1 -1
- package/corpus/templates/brain/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/brain/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/brain/netlify.toml +1 -0
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +110 -57
- package/corpus/templates/calendar/app/global.css +1 -1
- package/corpus/templates/calendar/app/routes/_app.extensions._index.tsx +2 -16
- package/corpus/templates/calendar/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/calendar/netlify.toml +1 -0
- package/corpus/templates/chat/app/components/layout/Layout.tsx +3 -0
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +113 -51
- package/corpus/templates/chat/app/global.css +1 -1
- package/corpus/templates/chat/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/chat/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/chat/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/chat/netlify.toml +1 -0
- package/corpus/templates/clips/app/components/library/library-layout.tsx +117 -37
- package/corpus/templates/clips/app/components/library/organization-switcher.tsx +2 -2
- package/corpus/templates/clips/app/components/player/video-player.tsx +16 -1
- package/corpus/templates/clips/app/global.css +1 -1
- package/corpus/templates/clips/app/hooks/use-view-tracking.ts +55 -12
- package/corpus/templates/clips/app/routes/_app.extensions._index.tsx +2 -16
- package/corpus/templates/clips/app/routes/embed.$shareId.tsx +6 -5
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +7 -7
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +6 -5
- package/corpus/templates/clips/changelog/2026-07-23-agent-settings-are-clearly-labeled-manage-agent-in-the-sideb.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-23-meeting-recording-meters-and-dismissed-prompts.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/clips/desktop/src/hooks/useMicMeter.ts +1 -1
- package/corpus/templates/clips/desktop/src/lib/meeting-notification-dismissal.ts +2 -0
- package/corpus/templates/clips/desktop/src/lib/voice-dictation.ts +1 -3
- package/corpus/templates/clips/desktop/src/overlays/live-audio-bars.tsx +86 -0
- package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +24 -0
- package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +5 -69
- package/corpus/templates/clips/desktop/src/styles.css +35 -3
- package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +13 -44
- package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +119 -17
- package/corpus/templates/clips/netlify.toml +1 -0
- package/corpus/templates/clips/server/plugins/db.ts +113 -68
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +69 -49
- package/corpus/templates/content/app/global.css +1 -1
- package/corpus/templates/content/app/routes/_app.extensions._index.tsx +2 -2
- package/corpus/templates/content/changelog/2026-07-23-agent-settings-are-clearly-labeled-manage-agent-in-the-sideb.md +6 -0
- package/corpus/templates/content/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/content/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/content/netlify.toml +1 -0
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +115 -42
- package/corpus/templates/design/app/entry.client.tsx +14 -1
- package/corpus/templates/design/app/global.css +1 -1
- package/corpus/templates/design/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/design/changelog/2026-07-23-agent-settings-are-clearly-labeled-manage-agent-in-the-sideb.md +6 -0
- package/corpus/templates/design/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/design/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/design/netlify.toml +1 -0
- package/corpus/templates/dispatch/app/dispatch-extensions.tsx +1 -1
- package/corpus/templates/dispatch/app/global.css +1 -1
- package/corpus/templates/dispatch/changelog/2026-07-23-agent-settings-are-clearly-labeled-manage-agent-in-the-sideb.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/dispatch/netlify.toml +1 -0
- package/corpus/templates/forms/app/components/layout/Layout.tsx +3 -0
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +113 -82
- package/corpus/templates/forms/app/global.css +1 -1
- package/corpus/templates/forms/app/routes/_app.extensions._index.tsx +2 -2
- package/corpus/templates/forms/changelog/2026-07-23-agent-settings-are-clearly-labeled-manage-agent-in-the-sideb.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-24-forms-sidebar-actions-now-keep-search-language-feedback-and-.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/forms/netlify.toml +1 -0
- package/corpus/templates/macros/app/components/DailyProgress.tsx +5 -5
- package/corpus/templates/macros/app/components/ExerciseCard.tsx +2 -2
- package/corpus/templates/macros/app/components/MealCard.tsx +2 -2
- package/corpus/templates/macros/app/components/WeightCard.tsx +2 -2
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +92 -34
- package/corpus/templates/macros/app/components/ui/button.tsx +1 -2
- package/corpus/templates/macros/app/components/ui/card.tsx +1 -1
- package/corpus/templates/macros/app/global.css +1 -1
- package/corpus/templates/macros/app/routes/_index.tsx +1 -1
- package/corpus/templates/macros/app/routes/analytics.tsx +4 -7
- package/corpus/templates/macros/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/macros/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/macros/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/macros/netlify.toml +1 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +125 -46
- package/corpus/templates/mail/app/global.css +1 -1
- package/corpus/templates/mail/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/mail/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/mail/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/mail/netlify.toml +1 -0
- package/corpus/templates/plan/app/components/layout/Layout.tsx +3 -0
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +128 -65
- package/corpus/templates/plan/app/global.css +1 -1
- package/corpus/templates/plan/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/plan/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/plan/netlify.toml +1 -0
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +116 -36
- package/corpus/templates/slides/app/global.css +1 -1
- package/corpus/templates/slides/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/slides/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/corpus/templates/slides/netlify.toml +1 -0
- package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +37 -6
- package/corpus/templates/tasks/app/global.css +1 -1
- package/corpus/templates/tasks/app/routes/extensions._index.tsx +2 -2
- package/corpus/templates/tasks/app/routes/settings.tsx +31 -0
- package/corpus/templates/tasks/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/corpus/templates/tasks/netlify.toml +1 -0
- package/corpus/toolkit/CHANGELOG.md +8 -0
- package/corpus/toolkit/README.md +8 -1
- package/corpus/toolkit/agent-native.eject.json +1 -1
- package/corpus/toolkit/package.json +1 -1
- package/corpus/toolkit/src/app-shell/index.ts +1 -0
- package/corpus/toolkit/src/app-shell/sidebar-footer-actions.tsx +48 -0
- package/corpus/toolkit/src/chat-history.css +52 -1
- package/corpus/toolkit/src/design-system/default-adapter.tsx +1 -1
- package/corpus/toolkit/src/ui/button.tsx +1 -2
- package/corpus/toolkit/src/ui/card.tsx +1 -1
- package/corpus/toolkit/src/ui/table.tsx +4 -11
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +4 -0
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts +9 -0
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +25 -10
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/types.d.ts +2 -2
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/cli/context-xray-local.js +1 -1
- package/dist/cli/context-xray-local.js.map +1 -1
- package/dist/cli/index.js +56 -17
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +5 -0
- package/dist/cli/skills.js.map +1 -1
- package/dist/cli/telemetry.d.ts +7 -0
- package/dist/cli/telemetry.d.ts.map +1 -1
- package/dist/cli/telemetry.js +91 -1
- package/dist/cli/telemetry.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +7 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +2 -2
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/CommandMenu.d.ts +2 -0
- package/dist/client/CommandMenu.d.ts.map +1 -1
- package/dist/client/CommandMenu.js +12 -1
- package/dist/client/CommandMenu.js.map +1 -1
- package/dist/client/agent-page/AgentTabsPage.d.ts +4 -0
- package/dist/client/agent-page/AgentTabsPage.d.ts.map +1 -1
- package/dist/client/agent-page/AgentTabsPage.js +8 -4
- package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +7 -0
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/error-capture.d.ts.map +1 -1
- package/dist/client/error-capture.js +8 -1
- package/dist/client/error-capture.js.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.d.ts +5 -1
- package/dist/client/extensions/ExtensionsListPage.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.js +6 -4
- package/dist/client/extensions/ExtensionsListPage.js.map +1 -1
- package/dist/client/extensions/agent-native-extension-runtime.js +1 -1
- package/dist/client/extensions/agent-native-extension-runtime.js.map +1 -1
- package/dist/client/navigation/index.d.ts +1 -1
- package/dist/client/navigation/index.d.ts.map +1 -1
- package/dist/client/navigation/index.js +1 -1
- package/dist/client/navigation/index.js.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.js +9 -13
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/settings/ExtensionsSettingsContent.d.ts +2 -0
- package/dist/client/settings/ExtensionsSettingsContent.d.ts.map +1 -0
- package/dist/client/settings/ExtensionsSettingsContent.js +10 -0
- package/dist/client/settings/ExtensionsSettingsContent.js.map +1 -0
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +10 -1
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/deploy/build.js +1 -0
- package/dist/deploy/build.js.map +1 -1
- package/dist/extensions/theme.js +1 -1
- package/dist/extensions/theme.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/localization/default-messages.d.ts +2 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +2 -0
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/observability/routes.d.ts +3 -3
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +7 -7
- package/dist/provider-api/actions/provider-api.d.ts +9 -9
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/server/analytics.d.ts +9 -4
- package/dist/server/analytics.d.ts.map +1 -1
- package/dist/server/analytics.js +111 -22
- package/dist/server/analytics.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +8 -1
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +17 -27
- package/dist/server/framework-request-handler.js.map +1 -1
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/styles/agent-native.css +13 -0
- package/dist/templates/chat/app/components/layout/Layout.tsx +3 -0
- package/dist/templates/chat/app/components/layout/Sidebar.tsx +113 -51
- package/dist/templates/chat/app/global.css +1 -1
- package/dist/templates/chat/app/routes/extensions._index.tsx +2 -2
- package/dist/templates/chat/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/dist/templates/chat/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/dist/templates/chat/netlify.toml +1 -0
- package/dist/templates/default/app/global.css +1 -1
- package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +16 -0
- package/dist/tracking/error-capture.d.ts +14 -0
- package/dist/tracking/error-capture.d.ts.map +1 -0
- package/dist/tracking/error-capture.js +113 -0
- package/dist/tracking/error-capture.js.map +1 -0
- package/dist/tracking/index.d.ts +1 -0
- package/dist/tracking/index.d.ts.map +1 -1
- package/dist/tracking/index.js +1 -0
- package/dist/tracking/index.js.map +1 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +2 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/extensions.mdx +23 -4
- package/package.json +2 -2
- package/src/agent/production-agent.ts +4 -0
- package/src/agent/run-manager.ts +36 -10
- package/src/agent/types.ts +2 -0
- package/src/cli/context-xray-local.ts +1 -1
- package/src/cli/index.ts +63 -18
- package/src/cli/skills.ts +5 -0
- package/src/cli/telemetry.ts +118 -1
- package/src/client/AgentPanel.tsx +10 -0
- package/src/client/CommandMenu.tsx +13 -1
- package/src/client/agent-page/AgentTabsPage.tsx +39 -4
- package/src/client/analytics.ts +13 -0
- package/src/client/error-capture.ts +6 -1
- package/src/client/extensions/ExtensionsListPage.tsx +28 -8
- package/src/client/extensions/agent-native-extension-runtime.ts +1 -1
- package/src/client/navigation/index.ts +2 -0
- package/src/client/org/OrgSwitcher.tsx +14 -32
- package/src/client/settings/ExtensionsSettingsContent.tsx +24 -0
- package/src/client/settings/SettingsPanel.tsx +10 -0
- package/src/deploy/build.ts +3 -0
- package/src/extensions/theme.ts +1 -1
- package/src/localization/default-messages.ts +2 -0
- package/src/server/analytics.ts +154 -25
- package/src/server/core-routes-plugin.ts +10 -1
- package/src/server/framework-request-handler.ts +17 -26
- package/src/styles/agent-native.css +13 -0
- package/src/templates/chat/app/components/layout/Layout.tsx +3 -0
- package/src/templates/chat/app/components/layout/Sidebar.tsx +113 -51
- package/src/templates/chat/app/global.css +1 -1
- package/src/templates/chat/app/routes/extensions._index.tsx +2 -2
- package/src/templates/chat/changelog/2026-07-24-borderless-secondary-surfaces.md +6 -0
- package/src/templates/chat/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +6 -0
- package/src/templates/chat/netlify.toml +1 -0
- package/src/templates/default/app/global.css +1 -1
- package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +16 -0
- package/src/tracking/error-capture.ts +151 -0
- package/src/tracking/index.ts +5 -0
- package/src/vite/client.ts +6 -0
- package/corpus/templates/analytics/app/components/layout/NewAnalysisDialog.tsx +0 -165
- package/corpus/templates/analytics/app/pages/analyses/AnalysesList.tsx +0 -175
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { AgentSidebar } from "@agent-native/core/client/agent-chat";
|
|
2
2
|
import { agentNativePath, appPath } from "@agent-native/core/client/api-path";
|
|
3
3
|
import { DevDatabaseLink } from "@agent-native/core/client/db-admin";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
|
|
5
|
+
import { openCommandMenu } from "@agent-native/core/client/navigation";
|
|
6
6
|
import { OrgSwitcher } from "@agent-native/core/client/org";
|
|
7
7
|
import { FeedbackButton } from "@agent-native/core/client/ui";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
HeaderActionsProvider,
|
|
10
|
+
SidebarFooterActions,
|
|
11
|
+
} from "@agent-native/toolkit/app-shell";
|
|
9
12
|
import {
|
|
10
13
|
IconFlame,
|
|
11
14
|
IconLoader2,
|
|
@@ -14,6 +17,7 @@ import {
|
|
|
14
17
|
IconSettings,
|
|
15
18
|
IconLayoutSidebarLeftCollapse,
|
|
16
19
|
IconLayoutSidebarLeftExpand,
|
|
20
|
+
IconSearch,
|
|
17
21
|
} from "@tabler/icons-react";
|
|
18
22
|
import {
|
|
19
23
|
useIsFetching,
|
|
@@ -39,6 +43,9 @@ import { Header } from "./Header";
|
|
|
39
43
|
const navItems = [
|
|
40
44
|
{ icon: IconFlame, labelKey: "navigation.entry", href: "/" },
|
|
41
45
|
{ icon: IconChartBar, labelKey: "navigation.analytics", href: "/analytics" },
|
|
46
|
+
];
|
|
47
|
+
|
|
48
|
+
const bottomNavItems = [
|
|
42
49
|
{ icon: IconHierarchy2, labelKey: "settings.agentTitle", href: "/agent" },
|
|
43
50
|
{ icon: IconSettings, labelKey: "navigation.settings", href: "/settings" },
|
|
44
51
|
];
|
|
@@ -195,6 +202,48 @@ function SidebarContent({
|
|
|
195
202
|
const ToggleIcon = collapsed
|
|
196
203
|
? IconLayoutSidebarLeftExpand
|
|
197
204
|
: IconLayoutSidebarLeftCollapse;
|
|
205
|
+
const collapseButton = onToggleCollapsed ? (
|
|
206
|
+
<Tooltip>
|
|
207
|
+
<TooltipTrigger asChild>
|
|
208
|
+
<button
|
|
209
|
+
type="button"
|
|
210
|
+
aria-label={collapsed ? t("sidebar.expand") : t("sidebar.collapse")}
|
|
211
|
+
className="flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-sidebar-accent/50 hover:text-foreground"
|
|
212
|
+
onClick={onToggleCollapsed}
|
|
213
|
+
>
|
|
214
|
+
<ToggleIcon className="h-4 w-4" />
|
|
215
|
+
</button>
|
|
216
|
+
</TooltipTrigger>
|
|
217
|
+
<TooltipContent side="right">
|
|
218
|
+
{collapsed ? t("sidebar.expand") : t("sidebar.collapse")}
|
|
219
|
+
</TooltipContent>
|
|
220
|
+
</Tooltip>
|
|
221
|
+
) : null;
|
|
222
|
+
const searchButton = (
|
|
223
|
+
<Tooltip>
|
|
224
|
+
<TooltipTrigger asChild>
|
|
225
|
+
<button
|
|
226
|
+
type="button"
|
|
227
|
+
onClick={openCommandMenu}
|
|
228
|
+
aria-label={t("root.search")}
|
|
229
|
+
className="flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-sidebar-accent/50 hover:text-foreground"
|
|
230
|
+
>
|
|
231
|
+
<IconSearch className="h-4 w-4" />
|
|
232
|
+
</button>
|
|
233
|
+
</TooltipTrigger>
|
|
234
|
+
<TooltipContent side="right">{t("root.search")}</TooltipContent>
|
|
235
|
+
</Tooltip>
|
|
236
|
+
);
|
|
237
|
+
const translateButton = (
|
|
238
|
+
<LanguagePicker variant="ghost-icon" label={t("settings.languageLabel")} />
|
|
239
|
+
);
|
|
240
|
+
const feedbackButton = (
|
|
241
|
+
<FeedbackButton
|
|
242
|
+
variant={collapsed ? "icon" : "sidebar"}
|
|
243
|
+
side="right"
|
|
244
|
+
className={collapsed ? "size-8" : "min-w-0"}
|
|
245
|
+
/>
|
|
246
|
+
);
|
|
198
247
|
|
|
199
248
|
return (
|
|
200
249
|
<div className="flex h-full flex-col">
|
|
@@ -223,32 +272,6 @@ function SidebarContent({
|
|
|
223
272
|
</span>
|
|
224
273
|
</div>
|
|
225
274
|
)}
|
|
226
|
-
{onToggleCollapsed && (
|
|
227
|
-
<Tooltip>
|
|
228
|
-
<TooltipTrigger asChild>
|
|
229
|
-
<Button
|
|
230
|
-
type="button"
|
|
231
|
-
variant="ghost"
|
|
232
|
-
size="icon"
|
|
233
|
-
aria-label={
|
|
234
|
-
collapsed
|
|
235
|
-
? t("sidebar.expandLeftSidebar")
|
|
236
|
-
: t("sidebar.collapseLeftSidebar")
|
|
237
|
-
}
|
|
238
|
-
className={cn(
|
|
239
|
-
"hidden h-8 w-8 text-muted-foreground hover:text-foreground md:inline-flex",
|
|
240
|
-
collapsed && "mx-auto",
|
|
241
|
-
)}
|
|
242
|
-
onClick={onToggleCollapsed}
|
|
243
|
-
>
|
|
244
|
-
<ToggleIcon className="h-4 w-4" />
|
|
245
|
-
</Button>
|
|
246
|
-
</TooltipTrigger>
|
|
247
|
-
<TooltipContent side="right">
|
|
248
|
-
{collapsed ? t("sidebar.expand") : t("sidebar.collapse")}
|
|
249
|
-
</TooltipContent>
|
|
250
|
-
</Tooltip>
|
|
251
|
-
)}
|
|
252
275
|
</div>
|
|
253
276
|
|
|
254
277
|
<nav className="flex-1 space-y-1 overflow-y-auto px-2 py-2">
|
|
@@ -287,19 +310,54 @@ function SidebarContent({
|
|
|
287
310
|
})}
|
|
288
311
|
</nav>
|
|
289
312
|
|
|
313
|
+
<nav className="grid shrink-0 gap-1 px-2 py-1">
|
|
314
|
+
{bottomNavItems.map((item) => {
|
|
315
|
+
const Icon = item.icon;
|
|
316
|
+
const label = t(item.labelKey);
|
|
317
|
+
const isActive = pathname.startsWith(item.href);
|
|
318
|
+
const link = (
|
|
319
|
+
<Link
|
|
320
|
+
key={item.href}
|
|
321
|
+
to={item.href}
|
|
322
|
+
aria-label={collapsed ? label : undefined}
|
|
323
|
+
className={cn(
|
|
324
|
+
"flex h-9 items-center rounded-lg text-sm transition-colors",
|
|
325
|
+
collapsed ? "justify-center px-0" : "gap-3 px-3",
|
|
326
|
+
isActive
|
|
327
|
+
? "bg-sidebar-accent text-sidebar-accent-foreground"
|
|
328
|
+
: "text-muted-foreground hover:bg-sidebar-accent/50 hover:text-foreground",
|
|
329
|
+
)}
|
|
330
|
+
>
|
|
331
|
+
<Icon className="h-4 w-4 shrink-0" />
|
|
332
|
+
{!collapsed && label}
|
|
333
|
+
</Link>
|
|
334
|
+
);
|
|
335
|
+
return collapsed ? (
|
|
336
|
+
<Tooltip key={item.href}>
|
|
337
|
+
<TooltipTrigger asChild>{link}</TooltipTrigger>
|
|
338
|
+
<TooltipContent side="right">{label}</TooltipContent>
|
|
339
|
+
</Tooltip>
|
|
340
|
+
) : (
|
|
341
|
+
link
|
|
342
|
+
);
|
|
343
|
+
})}
|
|
344
|
+
</nav>
|
|
345
|
+
|
|
290
346
|
{!collapsed && (
|
|
291
347
|
<>
|
|
292
|
-
<div className="px-2 py-2">
|
|
293
|
-
<ExtensionsSidebarSection />
|
|
294
|
-
</div>
|
|
295
|
-
|
|
296
348
|
<div className="space-y-2 px-3 py-2">
|
|
297
349
|
<DevDatabaseLink />
|
|
298
|
-
<FeedbackButton />
|
|
299
350
|
<OrgSwitcher />
|
|
300
351
|
</div>
|
|
301
352
|
</>
|
|
302
353
|
)}
|
|
354
|
+
<SidebarFooterActions
|
|
355
|
+
collapsed={collapsed}
|
|
356
|
+
feedback={feedbackButton}
|
|
357
|
+
translate={translateButton}
|
|
358
|
+
search={searchButton}
|
|
359
|
+
collapse={collapseButton}
|
|
360
|
+
/>
|
|
303
361
|
</div>
|
|
304
362
|
);
|
|
305
363
|
}
|
|
@@ -12,8 +12,7 @@ const buttonVariants = cva(
|
|
|
12
12
|
default: "bg-foreground text-background hover:bg-foreground/90",
|
|
13
13
|
destructive:
|
|
14
14
|
"bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
15
|
-
outline:
|
|
16
|
-
"border border-border/50 bg-transparent hover:bg-secondary/60 hover:border-border",
|
|
15
|
+
outline: "bg-accent text-accent-foreground hover:bg-accent/80",
|
|
17
16
|
secondary:
|
|
18
17
|
"bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
19
18
|
ghost: "hover:bg-secondary/60",
|
|
@@ -9,7 +9,7 @@ const Card = React.forwardRef<
|
|
|
9
9
|
<div
|
|
10
10
|
ref={ref}
|
|
11
11
|
className={cn(
|
|
12
|
-
"rounded-2xl
|
|
12
|
+
"rounded-2xl bg-card text-card-foreground shadow-sm transition-all duration-200",
|
|
13
13
|
className,
|
|
14
14
|
)}
|
|
15
15
|
{...props}
|
|
@@ -131,7 +131,7 @@ export default function IndexPage() {
|
|
|
131
131
|
>
|
|
132
132
|
<IconChevronLeft className="h-5 w-5 sm:h-4 sm:w-4 rtl:-scale-x-100" />
|
|
133
133
|
</Button>
|
|
134
|
-
<div className="min-w-[140px] sm:min-w-[160px] text-center px-3 sm:px-4 py-2 rounded-full bg-card
|
|
134
|
+
<div className="min-w-[140px] sm:min-w-[160px] text-center px-3 sm:px-4 py-2 rounded-full bg-card">
|
|
135
135
|
<span className="text-sm font-medium text-foreground">
|
|
136
136
|
{isSameDay(date, new Date())
|
|
137
137
|
? t("entry.today")
|
|
@@ -167,10 +167,7 @@ export default function AnalyticsPage() {
|
|
|
167
167
|
unit: t("analytics.daysUnit"),
|
|
168
168
|
},
|
|
169
169
|
].map((stat) => (
|
|
170
|
-
<div
|
|
171
|
-
key={stat.label}
|
|
172
|
-
className="p-3 sm:p-4 rounded-xl bg-card/40 border border-border/30"
|
|
173
|
-
>
|
|
170
|
+
<div key={stat.label} className="p-3 sm:p-4 rounded-xl bg-card/40">
|
|
174
171
|
<p className="text-[10px] uppercase tracking-widest text-muted-foreground font-medium mb-1.5 sm:mb-2">
|
|
175
172
|
{stat.label}
|
|
176
173
|
</p>
|
|
@@ -187,7 +184,7 @@ export default function AnalyticsPage() {
|
|
|
187
184
|
</div>
|
|
188
185
|
|
|
189
186
|
{/* Calorie Trend Chart */}
|
|
190
|
-
<Card className="
|
|
187
|
+
<Card className="bg-card/60 backdrop-blur-md overflow-hidden">
|
|
191
188
|
<CardHeader className="pb-4">
|
|
192
189
|
<CardTitle className="text-base font-medium">
|
|
193
190
|
Calorie Trend (
|
|
@@ -306,7 +303,7 @@ export default function AnalyticsPage() {
|
|
|
306
303
|
</Card>
|
|
307
304
|
|
|
308
305
|
{/* Weekly Net Calories */}
|
|
309
|
-
<Card className="
|
|
306
|
+
<Card className="bg-card/60 backdrop-blur-md overflow-hidden">
|
|
310
307
|
<CardHeader className="pb-4">
|
|
311
308
|
<CardTitle className="text-base font-medium">
|
|
312
309
|
Weekly Net Calories vs Goal (
|
|
@@ -333,7 +330,7 @@ export default function AnalyticsPage() {
|
|
|
333
330
|
</Card>
|
|
334
331
|
|
|
335
332
|
{/* Weight Chart */}
|
|
336
|
-
<Card className="
|
|
333
|
+
<Card className="bg-card/60 backdrop-blur-md overflow-hidden">
|
|
337
334
|
<CardHeader className="pb-4">
|
|
338
335
|
<CardTitle className="text-base font-medium">
|
|
339
336
|
Weight Trend (
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Navigate } from "react-router";
|
|
2
2
|
|
|
3
3
|
import messages from "@/i18n/en-US";
|
|
4
4
|
|
|
@@ -7,5 +7,5 @@ export function meta() {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
export default function ExtensionsRoute() {
|
|
10
|
-
return <
|
|
10
|
+
return <Navigate to="/settings#extensions" replace />;
|
|
11
11
|
}
|
|
@@ -5,10 +5,11 @@ import {
|
|
|
5
5
|
import { agentNativePath } from "@agent-native/core/client/api-path";
|
|
6
6
|
import { appApiPath } from "@agent-native/core/client/api-path";
|
|
7
7
|
import { DevDatabaseLink } from "@agent-native/core/client/db-admin";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
|
|
9
|
+
import { openCommandMenu } from "@agent-native/core/client/navigation";
|
|
10
10
|
import { InvitationBanner, OrgSwitcher } from "@agent-native/core/client/org";
|
|
11
11
|
import { FeedbackButton } from "@agent-native/core/client/ui";
|
|
12
|
+
import { SidebarFooterActions } from "@agent-native/toolkit/app-shell";
|
|
12
13
|
import { normalizeMailLabel } from "@shared/gmail-labels";
|
|
13
14
|
import type { Label } from "@shared/types";
|
|
14
15
|
import {
|
|
@@ -384,6 +385,60 @@ function AppLayoutInner({ children }: AppLayoutProps) {
|
|
|
384
385
|
if (!sidebarPinned || isMobile) setSidebarOpen(false);
|
|
385
386
|
}, [sidebarPinned, isMobile]);
|
|
386
387
|
|
|
388
|
+
const collapseButton =
|
|
389
|
+
sidebarPinned && !isMobile ? (
|
|
390
|
+
<Tooltip>
|
|
391
|
+
<TooltipTrigger asChild>
|
|
392
|
+
<button
|
|
393
|
+
type="button"
|
|
394
|
+
onClick={() => setSidebarCollapsed((value) => !value)}
|
|
395
|
+
className="flex h-8 w-8 items-center justify-center rounded text-muted-foreground hover:bg-accent/50 hover:text-foreground"
|
|
396
|
+
aria-label={
|
|
397
|
+
showCollapsedSidebar
|
|
398
|
+
? t("sidebar.expandSidebar")
|
|
399
|
+
: t("sidebar.collapseSidebar")
|
|
400
|
+
}
|
|
401
|
+
>
|
|
402
|
+
{showCollapsedSidebar ? (
|
|
403
|
+
<IconLayoutSidebarLeftExpand className="h-4 w-4 rtl:-scale-x-100" />
|
|
404
|
+
) : (
|
|
405
|
+
<IconLayoutSidebarLeftCollapse className="h-4 w-4 rtl:-scale-x-100" />
|
|
406
|
+
)}
|
|
407
|
+
</button>
|
|
408
|
+
</TooltipTrigger>
|
|
409
|
+
<TooltipContent side="right">
|
|
410
|
+
{showCollapsedSidebar
|
|
411
|
+
? t("sidebar.expandSidebar")
|
|
412
|
+
: t("sidebar.collapseSidebar")}
|
|
413
|
+
</TooltipContent>
|
|
414
|
+
</Tooltip>
|
|
415
|
+
) : null;
|
|
416
|
+
const searchButton = (
|
|
417
|
+
<Tooltip>
|
|
418
|
+
<TooltipTrigger asChild>
|
|
419
|
+
<button
|
|
420
|
+
type="button"
|
|
421
|
+
onClick={openCommandMenu}
|
|
422
|
+
className="flex h-8 w-8 items-center justify-center rounded text-muted-foreground hover:bg-accent/50 hover:text-foreground"
|
|
423
|
+
aria-label={t("mail.search.label")}
|
|
424
|
+
>
|
|
425
|
+
<IconSearch className="h-4 w-4" />
|
|
426
|
+
</button>
|
|
427
|
+
</TooltipTrigger>
|
|
428
|
+
<TooltipContent side="right">{t("mail.search.label")}</TooltipContent>
|
|
429
|
+
</Tooltip>
|
|
430
|
+
);
|
|
431
|
+
const translateButton = (
|
|
432
|
+
<LanguagePicker variant="ghost-icon" label={t("settings.languageLabel")} />
|
|
433
|
+
);
|
|
434
|
+
const feedbackButton = (
|
|
435
|
+
<FeedbackButton
|
|
436
|
+
variant={showCollapsedSidebar ? "icon" : "sidebar"}
|
|
437
|
+
side="right"
|
|
438
|
+
className={showCollapsedSidebar ? "size-8" : "min-w-0"}
|
|
439
|
+
/>
|
|
440
|
+
);
|
|
441
|
+
|
|
387
442
|
// Drag-to-reorder tabs
|
|
388
443
|
const [dragPinnedId, setDragPinnedId] = useState<string | null>(null);
|
|
389
444
|
const [dropIndicator, setDropIndicator] = useState<{
|
|
@@ -891,6 +946,13 @@ function AppLayoutInner({ children }: AppLayoutProps) {
|
|
|
891
946
|
},
|
|
892
947
|
]);
|
|
893
948
|
|
|
949
|
+
useEffect(() => {
|
|
950
|
+
const handler = () => setPaletteOpen(true);
|
|
951
|
+
window.addEventListener("agent-native:open-command-menu", handler);
|
|
952
|
+
return () =>
|
|
953
|
+
window.removeEventListener("agent-native:open-command-menu", handler);
|
|
954
|
+
}, []);
|
|
955
|
+
|
|
894
956
|
// Sequence shortcuts (g + key = go to view)
|
|
895
957
|
const qc = useQueryClient();
|
|
896
958
|
useSequenceShortcuts([
|
|
@@ -1437,45 +1499,12 @@ function AppLayoutInner({ children }: AppLayoutProps) {
|
|
|
1437
1499
|
: "justify-between px-4",
|
|
1438
1500
|
)}
|
|
1439
1501
|
>
|
|
1440
|
-
{showCollapsedSidebar ? (
|
|
1441
|
-
<Tooltip>
|
|
1442
|
-
<TooltipTrigger asChild>
|
|
1443
|
-
<button
|
|
1444
|
-
type="button"
|
|
1445
|
-
onClick={() => setSidebarCollapsed(false)}
|
|
1446
|
-
className="flex h-10 w-10 items-center justify-center rounded text-muted-foreground hover:bg-accent/50 hover:text-foreground"
|
|
1447
|
-
aria-label={t("sidebar.expandSidebar")}
|
|
1448
|
-
>
|
|
1449
|
-
<IconLayoutSidebarLeftExpand className="h-4 w-4 rtl:-scale-x-100" />
|
|
1450
|
-
</button>
|
|
1451
|
-
</TooltipTrigger>
|
|
1452
|
-
<TooltipContent side="right">
|
|
1453
|
-
{t("sidebar.expandSidebar")}
|
|
1454
|
-
</TooltipContent>
|
|
1455
|
-
</Tooltip>
|
|
1456
|
-
) : (
|
|
1502
|
+
{showCollapsedSidebar ? null : (
|
|
1457
1503
|
<>
|
|
1458
1504
|
<span className="text-[13px] font-medium text-foreground">
|
|
1459
1505
|
{t("mail.appName")}
|
|
1460
1506
|
</span>
|
|
1461
1507
|
<div className="flex items-center gap-1">
|
|
1462
|
-
{sidebarPinned && !isMobile ? (
|
|
1463
|
-
<Tooltip>
|
|
1464
|
-
<TooltipTrigger asChild>
|
|
1465
|
-
<button
|
|
1466
|
-
type="button"
|
|
1467
|
-
onClick={() => setSidebarCollapsed(true)}
|
|
1468
|
-
className="flex h-7 w-7 items-center justify-center rounded text-muted-foreground hover:bg-accent/50 hover:text-foreground"
|
|
1469
|
-
aria-label={t("sidebar.collapseSidebar")}
|
|
1470
|
-
>
|
|
1471
|
-
<IconLayoutSidebarLeftCollapse className="h-4 w-4 rtl:-scale-x-100" />
|
|
1472
|
-
</button>
|
|
1473
|
-
</TooltipTrigger>
|
|
1474
|
-
<TooltipContent>
|
|
1475
|
-
{t("sidebar.collapseSidebar")}
|
|
1476
|
-
</TooltipContent>
|
|
1477
|
-
</Tooltip>
|
|
1478
|
-
) : null}
|
|
1479
1508
|
<Tooltip>
|
|
1480
1509
|
<TooltipTrigger asChild>
|
|
1481
1510
|
<button
|
|
@@ -1740,17 +1769,12 @@ function AppLayoutInner({ children }: AppLayoutProps) {
|
|
|
1740
1769
|
</div>
|
|
1741
1770
|
|
|
1742
1771
|
<div className="shrink-0">
|
|
1743
|
-
<div className="px-2 py-1">
|
|
1744
|
-
<ExtensionsSidebarSection />
|
|
1745
|
-
</div>
|
|
1746
|
-
|
|
1747
1772
|
<div className="px-3 py-2">
|
|
1748
1773
|
<OrgSwitcher />
|
|
1749
1774
|
</div>
|
|
1750
1775
|
|
|
1751
1776
|
<div className="flex items-center justify-end gap-1 px-2 py-2">
|
|
1752
1777
|
<DevDatabaseLink />
|
|
1753
|
-
<FeedbackButton className="min-w-0 flex-1" />
|
|
1754
1778
|
<Tooltip>
|
|
1755
1779
|
<TooltipTrigger asChild>
|
|
1756
1780
|
<Link
|
|
@@ -1794,6 +1818,14 @@ function AppLayoutInner({ children }: AppLayoutProps) {
|
|
|
1794
1818
|
</div>
|
|
1795
1819
|
</>
|
|
1796
1820
|
)}
|
|
1821
|
+
<SidebarFooterActions
|
|
1822
|
+
collapsed={showCollapsedSidebar}
|
|
1823
|
+
feedback={feedbackButton}
|
|
1824
|
+
translate={translateButton}
|
|
1825
|
+
search={searchButton}
|
|
1826
|
+
collapse={collapseButton}
|
|
1827
|
+
className={showCollapsedSidebar ? undefined : "px-0 py-0"}
|
|
1828
|
+
/>
|
|
1797
1829
|
</div>
|
|
1798
1830
|
</>
|
|
1799
1831
|
)}
|
|
@@ -1980,6 +2012,51 @@ function StandardLayout({ children }: AppLayoutProps) {
|
|
|
1980
2012
|
const queuedDrafts = useQueuedDraftCount();
|
|
1981
2013
|
const view = location.pathname.split("/").filter(Boolean)[0] || "";
|
|
1982
2014
|
|
|
2015
|
+
const collapseButton = (
|
|
2016
|
+
<Tooltip>
|
|
2017
|
+
<TooltipTrigger asChild>
|
|
2018
|
+
<button
|
|
2019
|
+
type="button"
|
|
2020
|
+
onClick={() => setSidebarOpen(false)}
|
|
2021
|
+
className="flex h-8 w-8 items-center justify-center rounded text-muted-foreground hover:bg-accent/50 hover:text-foreground"
|
|
2022
|
+
aria-label={t("sidebar.collapseSidebar")}
|
|
2023
|
+
>
|
|
2024
|
+
<IconLayoutSidebarLeftCollapse className="h-4 w-4 rtl:-scale-x-100" />
|
|
2025
|
+
</button>
|
|
2026
|
+
</TooltipTrigger>
|
|
2027
|
+
<TooltipContent side="right">
|
|
2028
|
+
{t("sidebar.collapseSidebar")}
|
|
2029
|
+
</TooltipContent>
|
|
2030
|
+
</Tooltip>
|
|
2031
|
+
);
|
|
2032
|
+
const searchButton = (
|
|
2033
|
+
<Tooltip>
|
|
2034
|
+
<TooltipTrigger asChild>
|
|
2035
|
+
<button
|
|
2036
|
+
type="button"
|
|
2037
|
+
onClick={() => {
|
|
2038
|
+
setSidebarOpen(false);
|
|
2039
|
+
window.setTimeout(
|
|
2040
|
+
() => document.getElementById("mail-search")?.focus(),
|
|
2041
|
+
0,
|
|
2042
|
+
);
|
|
2043
|
+
}}
|
|
2044
|
+
className="flex h-8 w-8 items-center justify-center rounded text-muted-foreground hover:bg-accent/50 hover:text-foreground"
|
|
2045
|
+
aria-label={t("mail.search.label")}
|
|
2046
|
+
>
|
|
2047
|
+
<IconSearch className="h-4 w-4" />
|
|
2048
|
+
</button>
|
|
2049
|
+
</TooltipTrigger>
|
|
2050
|
+
<TooltipContent side="right">{t("mail.search.label")}</TooltipContent>
|
|
2051
|
+
</Tooltip>
|
|
2052
|
+
);
|
|
2053
|
+
const translateButton = (
|
|
2054
|
+
<LanguagePicker variant="ghost-icon" label={t("settings.languageLabel")} />
|
|
2055
|
+
);
|
|
2056
|
+
const feedbackButton = (
|
|
2057
|
+
<FeedbackButton variant="sidebar" side="right" className="min-w-0" />
|
|
2058
|
+
);
|
|
2059
|
+
|
|
1983
2060
|
// Extensions (`/extensions` list and `/extensions/:id` viewer) render their own h-12
|
|
1984
2061
|
// toolbar inside the shared
|
|
1985
2062
|
// ExtensionViewer / ExtensionsListPage components. Skip our header to avoid stacking.
|
|
@@ -2112,17 +2189,12 @@ function StandardLayout({ children }: AppLayoutProps) {
|
|
|
2112
2189
|
</div>
|
|
2113
2190
|
|
|
2114
2191
|
<div className="shrink-0">
|
|
2115
|
-
<div className="px-2 py-1">
|
|
2116
|
-
<ExtensionsSidebarSection />
|
|
2117
|
-
</div>
|
|
2118
|
-
|
|
2119
2192
|
<div className="px-3 py-2">
|
|
2120
2193
|
<OrgSwitcher />
|
|
2121
2194
|
</div>
|
|
2122
2195
|
|
|
2123
2196
|
<div className="flex items-center justify-end gap-1 px-2 py-2">
|
|
2124
2197
|
<DevDatabaseLink />
|
|
2125
|
-
<FeedbackButton className="min-w-0 flex-1" />
|
|
2126
2198
|
<div className="flex shrink-0 items-center gap-0.5">
|
|
2127
2199
|
<Tooltip>
|
|
2128
2200
|
<TooltipTrigger asChild>
|
|
@@ -2163,6 +2235,13 @@ function StandardLayout({ children }: AppLayoutProps) {
|
|
|
2163
2235
|
<ThemeToggle className="h-8 w-8 shrink-0" />
|
|
2164
2236
|
</div>
|
|
2165
2237
|
</div>
|
|
2238
|
+
<SidebarFooterActions
|
|
2239
|
+
feedback={feedbackButton}
|
|
2240
|
+
translate={translateButton}
|
|
2241
|
+
search={searchButton}
|
|
2242
|
+
collapse={collapseButton}
|
|
2243
|
+
className="px-0 py-0"
|
|
2244
|
+
/>
|
|
2166
2245
|
</div>
|
|
2167
2246
|
</div>
|
|
2168
2247
|
</>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AgentSidebar,
|
|
3
|
+
isAgentChatHomeHandoffActive,
|
|
3
4
|
useAgentChatHomeHandoff,
|
|
4
5
|
useAgentChatHomeHandoffLinks,
|
|
5
6
|
} from "@agent-native/core/client/agent-chat";
|
|
@@ -92,6 +93,7 @@ export function Layout({ children }: LayoutProps) {
|
|
|
92
93
|
activePath: location.pathname,
|
|
93
94
|
enabled: !chatRoute,
|
|
94
95
|
});
|
|
96
|
+
const chatHomeHandoffPending = isAgentChatHomeHandoffActive("plans");
|
|
95
97
|
useAgentChatHomeHandoffLinks({
|
|
96
98
|
storageKey: "plans",
|
|
97
99
|
chatPath: "/",
|
|
@@ -206,6 +208,7 @@ export function Layout({ children }: LayoutProps) {
|
|
|
206
208
|
position="right"
|
|
207
209
|
defaultOpen={false}
|
|
208
210
|
chatViewTransition
|
|
211
|
+
chatViewTransitionHandoff={chatHomeHandoffPending}
|
|
209
212
|
storageKey="plans"
|
|
210
213
|
openOnChatRunning={chatHomeHandoffActive}
|
|
211
214
|
agentPageHref="/agent"
|