@agent-native/core 0.115.4 → 0.116.0
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/agent-native.eject.json +1 -0
- package/corpus/README.md +3 -3
- package/corpus/core/CHANGELOG.md +28 -0
- package/corpus/core/agent-native.eject.json +1 -0
- package/corpus/core/docs/AGENTS.md +1 -1
- package/corpus/core/docs/content/agent-mentions.mdx +2 -2
- package/corpus/core/docs/content/{workspace.mdx → agent-resources.mdx} +1 -7
- package/corpus/core/docs/content/agent-teams.mdx +4 -4
- package/corpus/core/docs/content/dispatch.mdx +10 -10
- package/corpus/core/docs/content/drop-in-agent.mdx +4 -4
- package/corpus/core/docs/content/external-agents.mdx +1 -1
- package/corpus/core/docs/content/frames.mdx +1 -1
- package/corpus/core/docs/content/integrations.mdx +13 -2
- package/corpus/core/docs/content/key-concepts.mdx +2 -2
- package/corpus/core/docs/content/mcp-clients.mdx +7 -1
- package/corpus/core/docs/content/multi-app-workspace.mdx +3 -3
- package/corpus/core/docs/content/real-time-collaboration.mdx +33 -15
- package/corpus/core/docs/content/recurring-jobs.mdx +7 -7
- package/corpus/core/docs/content/skills-guide.mdx +4 -4
- package/corpus/core/docs/content/template-brain.mdx +1 -1
- package/corpus/core/docs/content/toolkit-collaboration.mdx +1 -1
- package/corpus/core/docs/content/using-your-agent.mdx +1 -1
- package/corpus/core/docs/content/what-is-agent-native.mdx +4 -4
- package/corpus/core/docs/content/workspace-management.mdx +4 -4
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/production-agent.ts +13 -3
- package/corpus/core/src/cli/doctor.ts +6 -1
- package/corpus/core/src/client/AgentPanel.tsx +79 -41
- package/corpus/core/src/client/AssistantChat.tsx +71 -25
- package/corpus/core/src/client/FeedbackButton.tsx +33 -7
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +6 -8
- package/corpus/core/src/client/agent-chat-adapter.ts +11 -2
- package/corpus/core/src/client/agent-page/AgentTabFrame.tsx +22 -3
- package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +34 -19
- package/corpus/core/src/client/chat/message-components.tsx +43 -16
- package/corpus/core/src/client/chat/tool-call-display.tsx +30 -18
- package/corpus/core/src/client/chat/tool-render-registry.tsx +2 -0
- package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +19 -2
- package/corpus/core/src/client/resources/ResourceTree.tsx +7 -10
- package/corpus/core/src/client/resources/ResourcesPanel.tsx +33 -70
- package/corpus/core/src/client/resources/mcp-connection-resume.ts +107 -0
- package/corpus/core/src/client/resources/mcp-integration-catalog.ts +65 -12
- package/corpus/core/src/client/resources/mcp-integration-logos.ts +4 -0
- package/corpus/core/src/client/sse-event-processor.ts +50 -14
- package/corpus/core/src/client/use-db-sync.ts +16 -6
- package/corpus/core/src/connections/catalog.ts +7 -1
- package/corpus/core/src/eject/remote-mcp-presets.ts +37 -5
- package/corpus/core/src/guards/explicit-collab-access.ts +229 -0
- package/corpus/core/src/guards/index.ts +1 -0
- package/corpus/core/src/localization/default-messages.ts +54 -5
- package/corpus/core/src/mcp/connect-route.ts +34 -51
- package/corpus/core/src/provider-api/index.ts +1 -1
- package/corpus/core/src/server/collab-plugin.ts +137 -18
- package/corpus/core/src/server/index.ts +2 -0
- package/corpus/core/src/styles/agent-native.css +40 -0
- package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/core/src/templates/default/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/corpus/core/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +12 -8
- package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/analytics/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/analytics/AGENTS.md +7 -2
- package/corpus/templates/analytics/actions/export-dashboard-panel-to-google-sheet.ts +144 -0
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +7 -88
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +34 -37
- package/corpus/templates/analytics/app/global.css +0 -4
- package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +2 -7
- package/corpus/templates/analytics/app/i18n-data.ts +107 -0
- package/corpus/templates/analytics/app/lib/data-source-status.ts +9 -0
- package/corpus/templates/analytics/app/lib/sql-query.ts +1 -2
- package/corpus/templates/analytics/app/pages/Ask.tsx +2 -7
- package/corpus/templates/analytics/app/pages/DataSources.tsx +48 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +59 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +2 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/report-panel-window.ts +3 -1
- package/corpus/templates/analytics/changelog/2026-07-22-clear-background-chat-progress.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-22-daily-dashboard-email-query-batches.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-22-export-table-panels-directly-to-google-sheets.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-22-recent-chats-can-expand-in-the-sidebar.md +6 -0
- package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +8 -8
- package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +31 -0
- package/corpus/templates/analytics/server/lib/dashboard-report-subscriptions.ts +3 -5
- package/corpus/templates/analytics/server/lib/dashboard-report.ts +12 -0
- package/corpus/templates/analytics/server/lib/first-party-dashboard-repair.ts +3 -5
- package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +150 -21
- package/corpus/templates/analytics/server/lib/google-sheets-export.ts +188 -0
- package/corpus/templates/analytics/server/lib/provider-api.ts +7 -2
- package/corpus/templates/analytics/server/plugins/collab.ts +6 -3
- package/corpus/templates/analytics/shared/sql-query-limits.ts +1 -0
- package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/assets/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/corpus/templates/assets/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +54 -62
- package/corpus/templates/assets/app/hooks/use-navigation-state.ts +2 -6
- package/corpus/templates/assets/app/routes/_index.tsx +8 -5
- package/corpus/templates/assets/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-22-recent-chats-expand-from-a-compact-list.md +6 -0
- package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/brain/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/brain/actions/rotate-source-ingest-token.ts +77 -0
- package/corpus/templates/brain/app/components/layout/Layout.tsx +5 -1
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +38 -51
- package/corpus/templates/brain/app/hooks/use-navigation-state.ts +2 -9
- package/corpus/templates/brain/app/i18n-data.ts +120 -0
- package/corpus/templates/brain/app/routes/sources.tsx +156 -5
- package/corpus/templates/brain/changelog/2026-07-22-chat-runs-always-end-with-an-answer.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-22-clear-background-chat-progress.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-22-long-chat-titles-stay-inside-the-sidebar.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-22-new-clips-and-webhook-sources-now-show-their-secure-connecti.md +6 -0
- package/corpus/templates/brain/jobs/emit-netlify-brain-queue-cron.ts +125 -0
- package/corpus/templates/brain/netlify.toml +5 -1
- package/corpus/templates/brain/scripts/configure-prod-clips-source.ts +50 -0
- package/corpus/templates/brain/server/lib/capture-sanitization.ts +64 -6
- package/corpus/templates/brain/server/plugins/agent-chat.ts +4 -0
- package/corpus/templates/brain/server/plugins/brain-jobs.ts +1 -0
- package/corpus/templates/brain/server/routes/api/brain/queue/run.post.ts +55 -0
- package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/calendar/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +43 -67
- package/corpus/templates/chat/app/hooks/use-navigation-state.ts +2 -7
- package/corpus/templates/chat/app/routes/_index.tsx +8 -5
- package/corpus/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
- package/corpus/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
- package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/clips/AGENTS.md +9 -1
- package/corpus/templates/clips/actions/export-to-brain.ts +82 -6
- package/corpus/templates/clips/actions/request-transcript.ts +25 -14
- package/corpus/templates/clips/changelog/2026-07-22-clips-transcripts-now-retry-brain-export.md +5 -0
- package/corpus/templates/clips/changelog/2026-07-22-german-umlauts-and-other-non-ascii-characters-now-paste-corr.md +6 -0
- package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +26 -3
- package/corpus/templates/clips/jobs/emit-netlify-brain-export-cron.ts +118 -0
- package/corpus/templates/clips/netlify.toml +4 -1
- package/corpus/templates/clips/scripts/configure-prod-brain-export.ts +92 -0
- package/corpus/templates/clips/server/jobs/brain-export.ts +182 -0
- package/corpus/templates/clips/server/lib/brain-export-state.ts +42 -0
- package/corpus/templates/clips/server/lib/post-finalize-dispatch.ts +5 -1
- package/corpus/templates/clips/server/plugins/calendar-jobs.ts +2 -0
- package/corpus/templates/clips/server/register-secrets.ts +42 -0
- package/corpus/templates/clips/server/routes/api/_agent-native-background/post-finalize-worker.post.ts +10 -1
- package/corpus/templates/clips/server/routes/api/clips/brain-export/run.post.ts +45 -0
- package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/content/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -1
- package/corpus/templates/content/server/plugins/collab.ts +1 -1
- package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/crm/actions/_crm-data-program-actions.ts +15 -0
- package/corpus/templates/crm/actions/get-crm-dashboard-panel.ts +2 -0
- package/corpus/templates/crm/actions/run.ts +2 -6
- package/corpus/templates/crm/actions/update-crm-record.ts +4 -2
- package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +6 -0
- package/corpus/templates/crm/changelog/2026-07-22-crm-field-validation-now-explains-which-fields-cannot-be-edi.md +6 -0
- package/corpus/templates/crm/changelog/2026-07-22-fixed-hubspot-contact-syncs-missing-records-updated-after-th.md +6 -0
- package/corpus/templates/crm/changelog/2026-07-22-fixed-pipeline-dashboard-panels-so-their-opportunity-data-lo.md +6 -0
- package/corpus/templates/crm/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/crm/server/crm/hubspot-adapter.ts +4 -1
- package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/design/server/plugins/collab.ts +11 -8
- package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/forms/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/forms/app/hooks/use-navigation-state.ts +2 -9
- package/corpus/templates/forms/app/root.tsx +1 -6
- package/corpus/templates/forms/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/mail/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +2 -2
- package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/plan/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -1
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +57 -72
- package/corpus/templates/plan/app/hooks/use-navigation-state.ts +2 -9
- package/corpus/templates/plan/app/lib/create-plan-routing.ts +2 -2
- package/corpus/templates/plan/app/pages/PlanChatPage.tsx +0 -1
- package/corpus/templates/plan/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-22-recent-chats-and-sidebar-controls-are-more-compact.md +6 -0
- package/corpus/templates/plan/server/plugins/collab.ts +5 -2
- package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/slides/server/plugins/collab.ts +11 -8
- package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/tasks/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +5 -22
- package/corpus/templates/tasks/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
- package/corpus/toolkit/CHANGELOG.md +7 -0
- package/corpus/toolkit/README.md +12 -3
- package/corpus/toolkit/package.json +1 -1
- package/corpus/toolkit/src/chat-history/ChatHistoryRail.tsx +89 -0
- package/corpus/toolkit/src/chat-history/index.ts +5 -0
- package/corpus/toolkit/src/chat-history.css +59 -0
- package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +106 -36
- package/corpus/toolkit/src/composer/VoiceButton.tsx +49 -0
- package/corpus/toolkit/src/composer/realtime-voice-audio-level.ts +2 -1
- package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +5 -3
- package/corpus/toolkit/src/styles.css +35 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +13 -3
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/cli/doctor.d.ts +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +5 -2
- package/dist/cli/doctor.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +1 -0
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +38 -18
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +55 -20
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/FeedbackButton.d.ts +4 -2
- package/dist/client/FeedbackButton.d.ts.map +1 -1
- package/dist/client/FeedbackButton.js +18 -2
- package/dist/client/FeedbackButton.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +2 -3
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +11 -3
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/agent-page/AgentTabFrame.d.ts +3 -1
- package/dist/client/agent-page/AgentTabFrame.d.ts.map +1 -1
- package/dist/client/agent-page/AgentTabFrame.js +3 -2
- package/dist/client/agent-page/AgentTabFrame.js.map +1 -1
- package/dist/client/agent-page/AgentTabsPage.d.ts +2 -0
- package/dist/client/agent-page/AgentTabsPage.d.ts.map +1 -1
- package/dist/client/agent-page/AgentTabsPage.js +26 -15
- package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
- package/dist/client/chat/message-components.d.ts +6 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +17 -11
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts +11 -1
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +16 -17
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/chat/tool-render-registry.d.ts +2 -0
- package/dist/client/chat/tool-render-registry.d.ts.map +1 -1
- package/dist/client/chat/tool-render-registry.js.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.js +15 -1
- package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
- package/dist/client/resources/ResourceTree.d.ts.map +1 -1
- package/dist/client/resources/ResourceTree.js +3 -3
- package/dist/client/resources/ResourceTree.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts +1 -0
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +34 -20
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/resources/mcp-connection-resume.d.ts +11 -0
- package/dist/client/resources/mcp-connection-resume.d.ts.map +1 -0
- package/dist/client/resources/mcp-connection-resume.js +95 -0
- package/dist/client/resources/mcp-connection-resume.js.map +1 -0
- package/dist/client/resources/mcp-integration-catalog.d.ts +1 -0
- package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.js +63 -8
- package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
- package/dist/client/resources/mcp-integration-logos.d.ts.map +1 -1
- package/dist/client/resources/mcp-integration-logos.js +4 -0
- package/dist/client/resources/mcp-integration-logos.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts +5 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +39 -13
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/use-db-sync.d.ts +3 -2
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +17 -6
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/connections/catalog.d.ts +1 -1
- package/dist/connections/catalog.d.ts.map +1 -1
- package/dist/connections/catalog.js +7 -1
- package/dist/connections/catalog.js.map +1 -1
- package/dist/eject/remote-mcp-presets.d.ts.map +1 -1
- package/dist/eject/remote-mcp-presets.js +33 -3
- package/dist/eject/remote-mcp-presets.js.map +1 -1
- package/dist/guards/explicit-collab-access.d.ts +8 -0
- package/dist/guards/explicit-collab-access.d.ts.map +1 -0
- package/dist/guards/explicit-collab-access.js +214 -0
- package/dist/guards/explicit-collab-access.js.map +1 -0
- package/dist/guards/index.d.ts +1 -0
- package/dist/guards/index.d.ts.map +1 -1
- package/dist/guards/index.js +1 -0
- package/dist/guards/index.js.map +1 -1
- package/dist/localization/default-messages.d.ts +43 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +48 -5
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp/connect-route.d.ts.map +1 -1
- package/dist/mcp/connect-route.js +34 -48
- package/dist/mcp/connect-route.js.map +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +11 -11
- package/dist/provider-api/actions/provider-api.d.ts +7 -7
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/provider-api/index.js +1 -1
- package/dist/provider-api/index.js.map +1 -1
- package/dist/server/collab-plugin.d.ts +34 -3
- package/dist/server/collab-plugin.d.ts.map +1 -1
- package/dist/server/collab-plugin.js +65 -12
- package/dist/server/collab-plugin.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/styles/agent-native.css +40 -0
- package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/dist/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/dist/templates/chat/app/components/layout/Layout.tsx +1 -0
- package/dist/templates/chat/app/components/layout/Sidebar.tsx +43 -67
- package/dist/templates/chat/app/hooks/use-navigation-state.ts +2 -7
- package/dist/templates/chat/app/routes/_index.tsx +8 -5
- package/dist/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
- package/dist/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/dist/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
- package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/dist/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +12 -8
- package/docs/AGENTS.md +1 -1
- package/docs/content/agent-mentions.mdx +2 -2
- package/docs/content/{workspace.mdx → agent-resources.mdx} +1 -7
- package/docs/content/agent-teams.mdx +4 -4
- package/docs/content/dispatch.mdx +10 -10
- package/docs/content/drop-in-agent.mdx +4 -4
- package/docs/content/external-agents.mdx +1 -1
- package/docs/content/frames.mdx +1 -1
- package/docs/content/integrations.mdx +13 -2
- package/docs/content/key-concepts.mdx +2 -2
- package/docs/content/mcp-clients.mdx +7 -1
- package/docs/content/multi-app-workspace.mdx +3 -3
- package/docs/content/real-time-collaboration.mdx +33 -15
- package/docs/content/recurring-jobs.mdx +7 -7
- package/docs/content/skills-guide.mdx +4 -4
- package/docs/content/template-brain.mdx +1 -1
- package/docs/content/toolkit-collaboration.mdx +1 -1
- package/docs/content/using-your-agent.mdx +1 -1
- package/docs/content/what-is-agent-native.mdx +4 -4
- package/docs/content/workspace-management.mdx +4 -4
- package/package.json +3 -3
- package/src/agent/production-agent.ts +13 -3
- package/src/cli/doctor.ts +6 -1
- package/src/client/AgentPanel.tsx +79 -41
- package/src/client/AssistantChat.tsx +71 -25
- package/src/client/FeedbackButton.tsx +33 -7
- package/src/client/MultiTabAssistantChat.tsx +6 -8
- package/src/client/agent-chat-adapter.ts +11 -2
- package/src/client/agent-page/AgentTabFrame.tsx +22 -3
- package/src/client/agent-page/AgentTabsPage.tsx +34 -19
- package/src/client/chat/message-components.tsx +43 -16
- package/src/client/chat/tool-call-display.tsx +30 -18
- package/src/client/chat/tool-render-registry.tsx +2 -0
- package/src/client/resources/McpConnectionSuggestion.tsx +19 -2
- package/src/client/resources/ResourceTree.tsx +7 -10
- package/src/client/resources/ResourcesPanel.tsx +33 -70
- package/src/client/resources/mcp-connection-resume.ts +107 -0
- package/src/client/resources/mcp-integration-catalog.ts +65 -12
- package/src/client/resources/mcp-integration-logos.ts +4 -0
- package/src/client/sse-event-processor.ts +50 -14
- package/src/client/use-db-sync.ts +16 -6
- package/src/connections/catalog.ts +7 -1
- package/src/eject/remote-mcp-presets.ts +37 -5
- package/src/guards/explicit-collab-access.ts +229 -0
- package/src/guards/index.ts +1 -0
- package/src/localization/default-messages.ts +54 -5
- package/src/mcp/connect-route.ts +34 -51
- package/src/provider-api/index.ts +1 -1
- package/src/server/collab-plugin.ts +137 -18
- package/src/server/index.ts +2 -0
- package/src/styles/agent-native.css +40 -0
- package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/src/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/src/templates/chat/app/components/layout/Layout.tsx +1 -0
- package/src/templates/chat/app/components/layout/Sidebar.tsx +43 -67
- package/src/templates/chat/app/hooks/use-navigation-state.ts +2 -7
- package/src/templates/chat/app/routes/_index.tsx +8 -5
- package/src/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
- package/src/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/src/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
- package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +12 -8
|
@@ -473,7 +473,7 @@ export function Sidebar() {
|
|
|
473
473
|
<div className="shrink-0 space-y-2 px-3 py-2">
|
|
474
474
|
<OrgSwitcher />
|
|
475
475
|
<DevDatabaseLink />
|
|
476
|
-
<div className="flex items-center gap-2">
|
|
476
|
+
<div className="flex items-center justify-end gap-2">
|
|
477
477
|
<FeedbackButton className="min-w-0 flex-1" />
|
|
478
478
|
<ThemeToggle className="h-9 w-9 shrink-0" />
|
|
479
479
|
</div>
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
isAgentChatHomeHandoffActive,
|
|
3
|
-
markAgentChatHomeHandoff,
|
|
4
|
-
} from "@agent-native/core/client/agent-chat";
|
|
1
|
+
import { markAgentChatHomeHandoff } from "@agent-native/core/client/agent-chat";
|
|
5
2
|
import { appBasePath } from "@agent-native/core/client/api-path";
|
|
6
3
|
import { useAgentRouteState } from "@agent-native/core/client/navigation";
|
|
7
4
|
import { useLocation } from "react-router";
|
|
@@ -132,11 +129,7 @@ export function useNavigationState() {
|
|
|
132
129
|
navigateOptions: { flushSync: true, replace: true },
|
|
133
130
|
onNavigate: (_command, path) => {
|
|
134
131
|
void prewarmFormsRoutePath(path);
|
|
135
|
-
if (
|
|
136
|
-
location.pathname === "/ask" &&
|
|
137
|
-
path !== "/ask" &&
|
|
138
|
-
isAgentChatHomeHandoffActive("forms")
|
|
139
|
-
) {
|
|
132
|
+
if (location.pathname === "/ask" && path !== "/ask") {
|
|
140
133
|
markAgentChatHomeHandoff("forms");
|
|
141
134
|
}
|
|
142
135
|
},
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {
|
|
2
|
-
isAgentChatHomeHandoffActive,
|
|
3
2
|
markAgentChatHomeHandoff,
|
|
4
3
|
navigateWithAgentChatViewTransition,
|
|
5
4
|
} from "@agent-native/core/client/agent-chat";
|
|
@@ -203,11 +202,7 @@ function OpenLinkInterceptor() {
|
|
|
203
202
|
if (!path) return;
|
|
204
203
|
|
|
205
204
|
event.preventDefault();
|
|
206
|
-
if (
|
|
207
|
-
location.pathname === "/ask" &&
|
|
208
|
-
path !== "/ask" &&
|
|
209
|
-
isAgentChatHomeHandoffActive("forms")
|
|
210
|
-
) {
|
|
205
|
+
if (location.pathname === "/ask" && path !== "/ask") {
|
|
211
206
|
markAgentChatHomeHandoff("forms");
|
|
212
207
|
}
|
|
213
208
|
navigateWithAgentChatViewTransition(navigate, path);
|
|
@@ -85,7 +85,10 @@ in the moment of agent use.
|
|
|
85
85
|
approval, generative UI, progress, and screen-state exposure.
|
|
86
86
|
- **Chat history kit**: presentational chat lists and recent-chat rails belong
|
|
87
87
|
in Toolkit; Core keeps thread persistence, agent execution, transport, and
|
|
88
|
-
page-to-sidebar handoff.
|
|
88
|
+
page-to-sidebar handoff. Use Toolkit's `ChatHistoryRail` for the standard
|
|
89
|
+
five-item sidebar preview and a footer row with New chat followed by an
|
|
90
|
+
ellipsis disclosure up to fifteen. Apps inject routing, labels, and domain
|
|
91
|
+
actions.
|
|
89
92
|
- **Agent page kit**: the full-page `/agent` surface (`AgentTabsPage` from
|
|
90
93
|
`@agent-native/core/client`) with Context, Files, Connections, Jobs, and
|
|
91
94
|
Access tabs plus a Personal/Organization scope toggle. The canonical home
|
|
@@ -85,7 +85,10 @@ in the moment of agent use.
|
|
|
85
85
|
approval, generative UI, progress, and screen-state exposure.
|
|
86
86
|
- **Chat history kit**: presentational chat lists and recent-chat rails belong
|
|
87
87
|
in Toolkit; Core keeps thread persistence, agent execution, transport, and
|
|
88
|
-
page-to-sidebar handoff.
|
|
88
|
+
page-to-sidebar handoff. Use Toolkit's `ChatHistoryRail` for the standard
|
|
89
|
+
five-item sidebar preview and a footer row with New chat followed by an
|
|
90
|
+
ellipsis disclosure up to fifteen. Apps inject routing, labels, and domain
|
|
91
|
+
actions.
|
|
89
92
|
- **Agent page kit**: the full-page `/agent` surface (`AgentTabsPage` from
|
|
90
93
|
`@agent-native/core/client`) with Context, Files, Connections, Jobs, and
|
|
91
94
|
Access tabs plus a Personal/Organization scope toggle. The canonical home
|
|
@@ -72,7 +72,7 @@ The agent modifies data in SQL, but the UI runs in the browser. SSE bridges same
|
|
|
72
72
|
});
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
`useDbSync` and every `subscribeSyncEvents` subscriber share one `EventSource` and one fallback poll loop per tab — this is how collaborative documents receive doc updates and cursor/awareness events.
|
|
75
|
+
`useDbSync` and every `subscribeSyncEvents` subscriber share one `EventSource` and one fallback poll loop per tab — this is how collaborative documents receive doc updates and cursor/awareness events. Hidden tabs keep that shared transport alive by default: SSE stays connected and active fallback polling relaxes to a 10-second floor (idle polling remains once per minute). Pass `pauseWhenHidden: true` only for a consumer that explicitly must stop all hidden-tab sync.
|
|
76
76
|
|
|
77
77
|
## Which sources to depend on
|
|
78
78
|
|
|
@@ -1748,7 +1748,7 @@ function AppLayoutInner({ children }: AppLayoutProps) {
|
|
|
1748
1748
|
<OrgSwitcher />
|
|
1749
1749
|
</div>
|
|
1750
1750
|
|
|
1751
|
-
<div className="flex items-center gap-1 px-2 py-2">
|
|
1751
|
+
<div className="flex items-center justify-end gap-1 px-2 py-2">
|
|
1752
1752
|
<DevDatabaseLink />
|
|
1753
1753
|
<FeedbackButton className="min-w-0 flex-1" />
|
|
1754
1754
|
<Tooltip>
|
|
@@ -2120,7 +2120,7 @@ function StandardLayout({ children }: AppLayoutProps) {
|
|
|
2120
2120
|
<OrgSwitcher />
|
|
2121
2121
|
</div>
|
|
2122
2122
|
|
|
2123
|
-
<div className="flex items-center gap-1 px-2 py-2">
|
|
2123
|
+
<div className="flex items-center justify-end gap-1 px-2 py-2">
|
|
2124
2124
|
<DevDatabaseLink />
|
|
2125
2125
|
<FeedbackButton className="min-w-0 flex-1" />
|
|
2126
2126
|
<div className="flex shrink-0 items-center gap-0.5">
|
|
@@ -85,7 +85,10 @@ in the moment of agent use.
|
|
|
85
85
|
approval, generative UI, progress, and screen-state exposure.
|
|
86
86
|
- **Chat history kit**: presentational chat lists and recent-chat rails belong
|
|
87
87
|
in Toolkit; Core keeps thread persistence, agent execution, transport, and
|
|
88
|
-
page-to-sidebar handoff.
|
|
88
|
+
page-to-sidebar handoff. Use Toolkit's `ChatHistoryRail` for the standard
|
|
89
|
+
five-item sidebar preview and a footer row with New chat followed by an
|
|
90
|
+
ellipsis disclosure up to fifteen. Apps inject routing, labels, and domain
|
|
91
|
+
actions.
|
|
89
92
|
- **Agent page kit**: the full-page `/agent` surface (`AgentTabsPage` from
|
|
90
93
|
`@agent-native/core/client`) with Context, Files, Connections, Jobs, and
|
|
91
94
|
Access tabs plus a Personal/Organization scope toggle. The canonical home
|
|
@@ -72,7 +72,7 @@ The agent modifies data in SQL, but the UI runs in the browser. SSE bridges same
|
|
|
72
72
|
});
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
`useDbSync` and every `subscribeSyncEvents` subscriber share one `EventSource` and one fallback poll loop per tab — this is how collaborative documents receive doc updates and cursor/awareness events.
|
|
75
|
+
`useDbSync` and every `subscribeSyncEvents` subscriber share one `EventSource` and one fallback poll loop per tab — this is how collaborative documents receive doc updates and cursor/awareness events. Hidden tabs keep that shared transport alive by default: SSE stays connected and active fallback polling relaxes to a 10-second floor (idle polling remains once per minute). Pass `pauseWhenHidden: true` only for a consumer that explicitly must stop all hidden-tab sync.
|
|
76
76
|
|
|
77
77
|
## Which sources to depend on
|
|
78
78
|
|
|
@@ -92,7 +92,11 @@ export function Layout({ children }: LayoutProps) {
|
|
|
92
92
|
activePath: location.pathname,
|
|
93
93
|
enabled: !chatRoute,
|
|
94
94
|
});
|
|
95
|
-
useAgentChatHomeHandoffLinks({
|
|
95
|
+
useAgentChatHomeHandoffLinks({
|
|
96
|
+
storageKey: "plans",
|
|
97
|
+
chatPath: "/",
|
|
98
|
+
requireActiveHandoff: false,
|
|
99
|
+
});
|
|
96
100
|
const hideAppNavigation = planDetailRoute && planReaderImmersive;
|
|
97
101
|
const effectiveSidebarCollapsed = chatRoute
|
|
98
102
|
? chatSidebarCollapsed
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {
|
|
2
|
-
isAgentChatHomeHandoffActive,
|
|
3
2
|
markAgentChatHomeHandoff,
|
|
4
3
|
navigateWithAgentChatViewTransition,
|
|
5
4
|
sendToAgentChat,
|
|
@@ -17,7 +16,7 @@ import { useT } from "@agent-native/core/client/i18n";
|
|
|
17
16
|
import { OrgSwitcher } from "@agent-native/core/client/org";
|
|
18
17
|
import { FeedbackButton } from "@agent-native/core/client/ui";
|
|
19
18
|
import {
|
|
20
|
-
|
|
19
|
+
ChatHistoryRail,
|
|
21
20
|
type ChatHistoryItem,
|
|
22
21
|
} from "@agent-native/toolkit/chat-history";
|
|
23
22
|
import {
|
|
@@ -168,7 +167,7 @@ function PlanChatsSection({ collapsed }: { collapsed: boolean }) {
|
|
|
168
167
|
threads
|
|
169
168
|
.filter((thread) => thread.messageCount > 0 && !thread.archivedAt)
|
|
170
169
|
.sort(compareThreads)
|
|
171
|
-
.slice(0,
|
|
170
|
+
.slice(0, 15),
|
|
172
171
|
[threads],
|
|
173
172
|
);
|
|
174
173
|
const chatItems = useMemo<ChatHistoryItem[]>(
|
|
@@ -245,50 +244,34 @@ function PlanChatsSection({ collapsed }: { collapsed: boolean }) {
|
|
|
245
244
|
|
|
246
245
|
return (
|
|
247
246
|
<div className="mt-2 border-s border-sidebar-border/70 ps-3">
|
|
248
|
-
<
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}}
|
|
277
|
-
onRename={handleRenameThread}
|
|
278
|
-
onDelete={(threadId) => void handleArchiveThread(threadId)}
|
|
279
|
-
labels={{
|
|
280
|
-
options: (item) => `${t("sidebar.chats")}: ${item.titleText ?? ""}`,
|
|
281
|
-
renameInput: (item) =>
|
|
282
|
-
`${t("sidebar.renameChat")}: ${item.titleText ?? ""}`,
|
|
283
|
-
rename: t("sidebar.renameChat"),
|
|
284
|
-
pin: t("sidebar.pinChat"),
|
|
285
|
-
unpin: t("sidebar.unpinChat"),
|
|
286
|
-
delete: t("sidebar.archiveChat"),
|
|
287
|
-
}}
|
|
288
|
-
variant="rail"
|
|
289
|
-
className="min-w-0"
|
|
290
|
-
/>
|
|
291
|
-
)}
|
|
247
|
+
<ChatHistoryRail
|
|
248
|
+
items={chatItems}
|
|
249
|
+
activeId={activeThreadId}
|
|
250
|
+
onSelect={(threadId) => openThread(threadId)}
|
|
251
|
+
onNewChat={() => void handleNewChat()}
|
|
252
|
+
railLabels={{
|
|
253
|
+
newChat: t("sidebar.newChat"),
|
|
254
|
+
showMore: t("sidebar.chats"),
|
|
255
|
+
showLess: t("sidebar.chats"),
|
|
256
|
+
}}
|
|
257
|
+
renameMaxLength={160}
|
|
258
|
+
onTogglePin={(threadId) => {
|
|
259
|
+
const thread = visibleThreads.find((item) => item.id === threadId);
|
|
260
|
+
if (thread) void pinThread(threadId, !thread.pinnedAt);
|
|
261
|
+
}}
|
|
262
|
+
onRename={handleRenameThread}
|
|
263
|
+
onDelete={(threadId) => void handleArchiveThread(threadId)}
|
|
264
|
+
labels={{
|
|
265
|
+
options: (item) => `${t("sidebar.chats")}: ${item.titleText ?? ""}`,
|
|
266
|
+
renameInput: (item) =>
|
|
267
|
+
`${t("sidebar.renameChat")}: ${item.titleText ?? ""}`,
|
|
268
|
+
rename: t("sidebar.renameChat"),
|
|
269
|
+
pin: t("sidebar.pinChat"),
|
|
270
|
+
unpin: t("sidebar.unpinChat"),
|
|
271
|
+
delete: t("sidebar.archiveChat"),
|
|
272
|
+
}}
|
|
273
|
+
className="min-w-0"
|
|
274
|
+
/>
|
|
292
275
|
</div>
|
|
293
276
|
);
|
|
294
277
|
}
|
|
@@ -333,7 +316,7 @@ function PlansSidebarSection({ collapsed }: { collapsed: boolean }) {
|
|
|
333
316
|
signInForPlanCreate();
|
|
334
317
|
return;
|
|
335
318
|
}
|
|
336
|
-
if (location.pathname === "/"
|
|
319
|
+
if (location.pathname === "/") {
|
|
337
320
|
markAgentChatHomeHandoff("plans");
|
|
338
321
|
}
|
|
339
322
|
navigateWithAgentChatViewTransition(navigate, "/plans?create=1");
|
|
@@ -341,7 +324,7 @@ function PlansSidebarSection({ collapsed }: { collapsed: boolean }) {
|
|
|
341
324
|
|
|
342
325
|
const openPlanPath = (event: MouseEvent<HTMLAnchorElement>, path: string) => {
|
|
343
326
|
event.preventDefault();
|
|
344
|
-
if (location.pathname === "/"
|
|
327
|
+
if (location.pathname === "/") {
|
|
345
328
|
markAgentChatHomeHandoff("plans");
|
|
346
329
|
}
|
|
347
330
|
navigateWithAgentChatViewTransition(navigate, path);
|
|
@@ -633,11 +616,7 @@ export function Sidebar({
|
|
|
633
616
|
<Link
|
|
634
617
|
to={item.href}
|
|
635
618
|
onClick={() => {
|
|
636
|
-
if (
|
|
637
|
-
item.href !== "/" &&
|
|
638
|
-
location.pathname === "/" &&
|
|
639
|
-
isAgentChatHomeHandoffActive("plans")
|
|
640
|
-
) {
|
|
619
|
+
if (item.href !== "/" && location.pathname === "/") {
|
|
641
620
|
markAgentChatHomeHandoff("plans");
|
|
642
621
|
}
|
|
643
622
|
}}
|
|
@@ -671,7 +650,7 @@ export function Sidebar({
|
|
|
671
650
|
})}
|
|
672
651
|
</nav>
|
|
673
652
|
|
|
674
|
-
{!collapsed && session
|
|
653
|
+
{!collapsed && session ? (
|
|
675
654
|
<>
|
|
676
655
|
<div className="px-2 py-2">
|
|
677
656
|
<ExtensionsSidebarSection />
|
|
@@ -679,30 +658,33 @@ export function Sidebar({
|
|
|
679
658
|
|
|
680
659
|
<div className="space-y-2 px-3 py-2">
|
|
681
660
|
<DevDatabaseLink />
|
|
682
|
-
<
|
|
661
|
+
<div className="flex items-center justify-end gap-1">
|
|
662
|
+
<FeedbackButton className="min-w-0 flex-1" side="right" />
|
|
663
|
+
{collapseButton}
|
|
664
|
+
</div>
|
|
683
665
|
<OrgSwitcher />
|
|
684
666
|
</div>
|
|
685
667
|
</>
|
|
686
|
-
)}
|
|
668
|
+
) : null}
|
|
687
669
|
|
|
688
|
-
{!collapsed && !sessionLoading && !session
|
|
670
|
+
{!collapsed && !sessionLoading && !session ? (
|
|
689
671
|
<div className="space-y-2 px-3 py-2">
|
|
690
672
|
<DevDatabaseLink />
|
|
691
|
-
<
|
|
692
|
-
|
|
693
|
-
<Button
|
|
694
|
-
type="button"
|
|
695
|
-
size="sm"
|
|
696
|
-
variant="outline"
|
|
697
|
-
className="h-8 px-3 text-xs"
|
|
698
|
-
onClick={() => signInWithReturnPath(returnPath)}
|
|
699
|
-
>
|
|
700
|
-
{t("sidebar.signIn")}
|
|
701
|
-
</Button>
|
|
673
|
+
<div className="flex items-center justify-end gap-1">
|
|
674
|
+
<FeedbackButton className="min-w-0 flex-1" side="right" />
|
|
702
675
|
{collapseButton}
|
|
703
676
|
</div>
|
|
677
|
+
<Button
|
|
678
|
+
type="button"
|
|
679
|
+
size="sm"
|
|
680
|
+
variant="outline"
|
|
681
|
+
className="h-8 px-3 text-xs"
|
|
682
|
+
onClick={() => signInWithReturnPath(returnPath)}
|
|
683
|
+
>
|
|
684
|
+
{t("sidebar.signIn")}
|
|
685
|
+
</Button>
|
|
704
686
|
</div>
|
|
705
|
-
)}
|
|
687
|
+
) : null}
|
|
706
688
|
|
|
707
689
|
{collapsed && collapsible ? (
|
|
708
690
|
<div
|
|
@@ -715,8 +697,11 @@ export function Sidebar({
|
|
|
715
697
|
</div>
|
|
716
698
|
) : null}
|
|
717
699
|
|
|
718
|
-
{!collapsed &&
|
|
719
|
-
<div className="flex justify-end px-
|
|
700
|
+
{!collapsed && sessionLoading && collapsible ? (
|
|
701
|
+
<div className="flex items-center justify-end gap-1 px-3 py-2">
|
|
702
|
+
<FeedbackButton className="min-w-0 flex-1" side="right" />
|
|
703
|
+
{collapseButton}
|
|
704
|
+
</div>
|
|
720
705
|
) : null}
|
|
721
706
|
</aside>
|
|
722
707
|
);
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
isAgentChatHomeHandoffActive,
|
|
3
|
-
markAgentChatHomeHandoff,
|
|
4
|
-
} from "@agent-native/core/client/agent-chat";
|
|
1
|
+
import { markAgentChatHomeHandoff } from "@agent-native/core/client/agent-chat";
|
|
5
2
|
import {
|
|
6
3
|
agentNativePath,
|
|
7
4
|
appBasePath,
|
|
@@ -111,11 +108,7 @@ export function useNavigationState() {
|
|
|
111
108
|
deleteCommand();
|
|
112
109
|
const path = planNavigateCommandPath(cmd);
|
|
113
110
|
void prewarmPlanRoutePath(path);
|
|
114
|
-
if (
|
|
115
|
-
location.pathname === "/" &&
|
|
116
|
-
path !== "/" &&
|
|
117
|
-
isAgentChatHomeHandoffActive("plans")
|
|
118
|
-
) {
|
|
111
|
+
if (location.pathname === "/" && path !== "/") {
|
|
119
112
|
markAgentChatHomeHandoff("plans");
|
|
120
113
|
}
|
|
121
114
|
const commitNavigation = () =>
|
|
@@ -26,13 +26,13 @@ export function isProbablyImportedPlan(prompt: string) {
|
|
|
26
26
|
|
|
27
27
|
export function assessPlanPrompt(prompt: string): { kind: AutoPlanKind } {
|
|
28
28
|
const highFidelity =
|
|
29
|
-
/\b(high(?:er)?[- ]fidelity|full[- ]fidelity|hi[- ]fi|polished
|
|
29
|
+
/\b(high(?:er)?[- ]fidelity|full[- ]fidelity|hi[- ]fi|polished mockups?|production[- ](?:like|ready)|pixel[- ](?:perfect|accurate)|brand(?:ed|[- ]aware)|real design|not (?:a )?(?:sketch(?:y)?|wireframe)|beyond (?:the )?(?:sketch|wireframe))\b/i.test(
|
|
30
30
|
prompt,
|
|
31
31
|
);
|
|
32
32
|
if (highFidelity) return { kind: "design" };
|
|
33
33
|
|
|
34
34
|
const uiDirection =
|
|
35
|
-
/\b(ui|screen|screens|layout|
|
|
35
|
+
/\b(ui|screen|screens|layout|wireframes?|mockups?|form factor|mobile|desktop|responsive|nav|sidebar|flow|redesign|empty state|loading state|error state)\b/i.test(
|
|
36
36
|
prompt,
|
|
37
37
|
);
|
|
38
38
|
return { kind: uiDirection ? "ui" : "visual" };
|
|
@@ -20,8 +20,11 @@ export default createCollabPlugin({
|
|
|
20
20
|
// Per-block collab has no single content column to sync; the block markdown is
|
|
21
21
|
// persisted via the `update-rich-text` patch path, not by the collab plugin.
|
|
22
22
|
autoSeed: false,
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
access: {
|
|
24
|
+
mode: "resource",
|
|
25
|
+
resourceType: "plan",
|
|
26
|
+
resolveResourceId: (docId) => resolvePlanIdFromCollabDocId(docId),
|
|
27
|
+
},
|
|
25
28
|
});
|
|
26
29
|
|
|
27
30
|
/**
|
|
@@ -85,7 +85,10 @@ in the moment of agent use.
|
|
|
85
85
|
approval, generative UI, progress, and screen-state exposure.
|
|
86
86
|
- **Chat history kit**: presentational chat lists and recent-chat rails belong
|
|
87
87
|
in Toolkit; Core keeps thread persistence, agent execution, transport, and
|
|
88
|
-
page-to-sidebar handoff.
|
|
88
|
+
page-to-sidebar handoff. Use Toolkit's `ChatHistoryRail` for the standard
|
|
89
|
+
five-item sidebar preview and a footer row with New chat followed by an
|
|
90
|
+
ellipsis disclosure up to fifteen. Apps inject routing, labels, and domain
|
|
91
|
+
actions.
|
|
89
92
|
- **Agent page kit**: the full-page `/agent` surface (`AgentTabsPage` from
|
|
90
93
|
`@agent-native/core/client`) with Context, Files, Connections, Jobs, and
|
|
91
94
|
Access tabs plus a Personal/Organization scope toggle. The canonical home
|
|
@@ -4,13 +4,16 @@ export default createCollabPlugin({
|
|
|
4
4
|
table: "decks",
|
|
5
5
|
contentColumn: "data",
|
|
6
6
|
idColumn: "id",
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
access: {
|
|
8
|
+
mode: "resource",
|
|
9
|
+
resourceType: "deck",
|
|
10
|
+
resolveResourceId: (docId) => {
|
|
11
|
+
if (!docId.startsWith("deck-")) return docId;
|
|
12
|
+
const withoutPrefix = docId.slice("deck-".length);
|
|
13
|
+
const slideMarker = withoutPrefix.lastIndexOf("-slide-");
|
|
14
|
+
return slideMarker >= 0
|
|
15
|
+
? withoutPrefix.slice(0, slideMarker)
|
|
16
|
+
: withoutPrefix;
|
|
17
|
+
},
|
|
15
18
|
},
|
|
16
19
|
});
|
|
@@ -85,7 +85,10 @@ in the moment of agent use.
|
|
|
85
85
|
approval, generative UI, progress, and screen-state exposure.
|
|
86
86
|
- **Chat history kit**: presentational chat lists and recent-chat rails belong
|
|
87
87
|
in Toolkit; Core keeps thread persistence, agent execution, transport, and
|
|
88
|
-
page-to-sidebar handoff.
|
|
88
|
+
page-to-sidebar handoff. Use Toolkit's `ChatHistoryRail` for the standard
|
|
89
|
+
five-item sidebar preview and a footer row with New chat followed by an
|
|
90
|
+
ellipsis disclosure up to fifteen. Apps inject routing, labels, and domain
|
|
91
|
+
actions.
|
|
89
92
|
- **Agent page kit**: the full-page `/agent` surface (`AgentTabsPage` from
|
|
90
93
|
`@agent-native/core/client`) with Context, Files, Connections, Jobs, and
|
|
91
94
|
Access tabs plus a Personal/Organization scope toggle. The canonical home
|
|
@@ -72,7 +72,7 @@ The agent modifies data in SQL, but the UI runs in the browser. SSE bridges same
|
|
|
72
72
|
});
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
`useDbSync` and every `subscribeSyncEvents` subscriber share one `EventSource` and one fallback poll loop per tab — this is how collaborative documents receive doc updates and cursor/awareness events.
|
|
75
|
+
`useDbSync` and every `subscribeSyncEvents` subscriber share one `EventSource` and one fallback poll loop per tab — this is how collaborative documents receive doc updates and cursor/awareness events. Hidden tabs keep that shared transport alive by default: SSE stays connected and active fallback polling relaxes to a 10-second floor (idle polling remains once per minute). Pass `pauseWhenHidden: true` only for a consumer that explicitly must stop all hidden-tab sync.
|
|
76
76
|
|
|
77
77
|
## Which sources to depend on
|
|
78
78
|
|
|
@@ -188,30 +188,13 @@ export function Sidebar({
|
|
|
188
188
|
/>
|
|
189
189
|
</div>
|
|
190
190
|
|
|
191
|
-
|
|
192
|
-
className=
|
|
193
|
-
|
|
194
|
-
? "flex justify-center px-1 py-1"
|
|
195
|
-
: "border-t border-sidebar-border px-3 py-2",
|
|
196
|
-
)}
|
|
197
|
-
>
|
|
198
|
-
<FeedbackButton
|
|
199
|
-
variant={collapsed ? "icon" : "sidebar"}
|
|
200
|
-
side="right"
|
|
201
|
-
align={collapsed ? "center" : "end"}
|
|
202
|
-
/>
|
|
203
|
-
</div>
|
|
204
|
-
|
|
205
|
-
{collapseButton ? (
|
|
206
|
-
<div
|
|
207
|
-
className={cn(
|
|
208
|
-
collapsed
|
|
209
|
-
? "flex justify-center px-1 py-1"
|
|
210
|
-
: "flex justify-end border-t border-sidebar-border px-3 py-2",
|
|
211
|
-
)}
|
|
212
|
-
>
|
|
191
|
+
{!collapsed ? (
|
|
192
|
+
<div className="flex items-center justify-end gap-1 border-t border-sidebar-border px-3 py-2">
|
|
193
|
+
<FeedbackButton className="min-w-0 flex-1" side="right" />
|
|
213
194
|
{collapseButton}
|
|
214
195
|
</div>
|
|
196
|
+
) : collapseButton ? (
|
|
197
|
+
<div className="flex justify-center px-1 py-1">{collapseButton}</div>
|
|
215
198
|
) : null}
|
|
216
199
|
</div>
|
|
217
200
|
</aside>
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @agent-native/toolkit
|
|
2
2
|
|
|
3
|
+
## 0.9.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 03a043e: Make realtime voice the clear primary microphone action, remember the selected input mode, improve speech waveform responsiveness, and show a shine while the voice agent is working.
|
|
8
|
+
- 03a043e: Prevent reasoning messages from losing their assistant UI provider, and add a progressively disclosed recent-chat rail for app sidebars.
|
|
9
|
+
|
|
3
10
|
## 0.9.0
|
|
4
11
|
|
|
5
12
|
### Minor Changes
|
package/corpus/toolkit/README.md
CHANGED
|
@@ -25,7 +25,10 @@ and docs. Dispatch is a separate product rather than a Toolkit module.
|
|
|
25
25
|
|
|
26
26
|
```tsx
|
|
27
27
|
import { ToolkitProvider } from "@agent-native/toolkit/provider";
|
|
28
|
-
import {
|
|
28
|
+
import {
|
|
29
|
+
ChatHistoryList,
|
|
30
|
+
ChatHistoryRail,
|
|
31
|
+
} from "@agent-native/toolkit/chat-history";
|
|
29
32
|
import { PresenceBar } from "@agent-native/toolkit/collab-ui";
|
|
30
33
|
import { ContextMeterView } from "@agent-native/toolkit/context-ui";
|
|
31
34
|
import {
|
|
@@ -47,8 +50,14 @@ import { useSetHeaderActions } from "@agent-native/toolkit/app-shell";
|
|
|
47
50
|
|
|
48
51
|
Import `@agent-native/toolkit/styles.css` after Tailwind to include Toolkit's
|
|
49
52
|
source scanning. If an app renders `SharedRichEditor`, also import
|
|
50
|
-
`@agent-native/toolkit/editor.css`. If an app renders `ChatHistoryList
|
|
51
|
-
import `@agent-native/toolkit/chat-history.css`.
|
|
53
|
+
`@agent-native/toolkit/editor.css`. If an app renders `ChatHistoryList` or
|
|
54
|
+
`ChatHistoryRail`, also import `@agent-native/toolkit/chat-history.css`.
|
|
55
|
+
|
|
56
|
+
Use `ChatHistoryRail` for app sidebars. It shows five recent chats by default,
|
|
57
|
+
progressively discloses up to fifteen, and keeps the app-provided New chat
|
|
58
|
+
action in a footer row with the ellipsis disclosure on its right. The app
|
|
59
|
+
continues to own thread persistence, sorting, routing, and mutations through
|
|
60
|
+
Core.
|
|
52
61
|
|
|
53
62
|
Inside template apps, prefer local adapters such as `@/components/ui/button` so
|
|
54
63
|
apps can replace their primitives without changing every callsite.
|