@agent-native/core 0.118.0 → 0.118.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +21 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/a2a/client.ts +32 -10
- package/corpus/core/src/cli/index.ts +18 -10
- package/corpus/core/src/cli/multi-frontier-runs.ts +5 -3
- package/corpus/core/src/cli/templates-meta.ts +0 -12
- package/corpus/core/src/cli/workspace-dev.ts +1 -1
- package/corpus/core/src/client/AgentPanel.tsx +9 -1
- package/corpus/core/src/client/RunStuckBanner.tsx +39 -47
- package/corpus/core/src/client/chat/action-chat-ui-surface.tsx +32 -0
- package/corpus/core/src/client/chat/message-components.tsx +53 -8
- package/corpus/core/src/client/chat/tool-call-display.tsx +24 -9
- package/corpus/core/src/client/chat/widgets/InlineExtensionWidget.tsx +0 -1
- package/corpus/core/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
- package/corpus/core/src/client/conversation/AgentConversation.tsx +12 -1
- package/corpus/core/src/client/error-capture.ts +2 -6
- package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +20 -14
- package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
- package/corpus/core/src/client/resources/mcp-integration-catalog.ts +7 -17
- package/corpus/core/src/client/resources/mcp-integration-logos.ts +2 -2
- package/corpus/core/src/client/route-chunk-recovery.ts +5 -3
- package/corpus/core/src/client/session-replay.ts +3 -3
- package/corpus/core/src/client/settings/SettingsPanel.tsx +15 -6
- package/corpus/core/src/client/transcription/use-live-transcription.ts +64 -45
- package/corpus/core/src/deploy/build.ts +2 -1
- package/corpus/core/src/guards/db-tool-scoping.ts +1 -1
- package/corpus/core/src/integrations/adapters/slack.ts +84 -5
- package/corpus/core/src/integrations/index.ts +5 -1
- package/corpus/core/src/localization/default-messages.ts +1 -1
- package/corpus/core/src/mcp-client/oauth-routes.ts +45 -12
- package/corpus/core/src/server/realtime-voice.ts +4 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
- package/corpus/core/src/terminal/cli-registry.ts +1 -1
- package/corpus/core/src/vite/client.ts +166 -1
- package/corpus/templates/analytics/app/hooks/use-dashboard-views.ts +13 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +10 -0
- package/corpus/templates/analytics/changelog/2026-07-22-show-a-useful-error-when-saving-a-dashboard-view-fails.md +6 -0
- package/corpus/templates/brain/app/routes/sources.tsx +181 -114
- package/corpus/templates/clips/AGENTS.md +8 -6
- package/corpus/templates/clips/actions/request-transcript.ts +90 -420
- package/corpus/templates/clips/actions/save-browser-transcript.ts +11 -28
- package/corpus/templates/clips/app/components/capture-install-options.tsx +5 -3
- package/corpus/templates/clips/app/components/player/transcript-panel.tsx +3 -136
- package/corpus/templates/clips/app/lib/capture-install-options.ts +15 -4
- package/corpus/templates/clips/app/routes/download.tsx +3 -2
- package/corpus/templates/clips/changelog/2026-07-22-fixed-an-intermittent-hydration-error-on-the-download-page.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-fixed-transcript-generation-when-native-speech-capture-retur.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-transcript-generation-now-retries-with-backup-speech-recogni.md +6 -0
- package/corpus/templates/clips/server/lib/public-agent-context.ts +2 -2
- package/corpus/templates/clips/server/register-secrets.ts +7 -6
- package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +16 -84
- package/corpus/templates/content/app/components/editor/VisualEditor.tsx +13 -7
- package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +2 -2
- package/corpus/templates/content/app/i18n-data.ts +10 -0
- package/corpus/templates/design/server/lib/fig-file-decoder.ts +1 -0
- package/corpus/templates/plan/app/entry.client.tsx +3 -0
- package/corpus/templates/plan/changelog/2026-07-22-recover-stale-pages-after-a-deployment-refresh-automatically.md +6 -0
- package/corpus/templates/slides/app/hooks/use-agent-generating.ts +10 -3
- package/corpus/templates/slides/app/pages/Index.tsx +1 -0
- package/corpus/templates/slides/changelog/2026-07-22-new-deck-prompts-now-open-in-their-own-visible-chat-thread.md +6 -0
- package/corpus/toolkit/CHANGELOG.md +9 -0
- package/corpus/toolkit/package.json +1 -1
- package/corpus/toolkit/src/composer/PromptComposer.tsx +5 -1
- package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +119 -31
- package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +30 -0
- package/corpus/toolkit/src/conformance/runner.tsx +153 -1
- package/corpus/toolkit/src/editor/SharedRichEditor.tsx +13 -2
- package/corpus/toolkit/src/editor/SlashCommandMenu.tsx +20 -0
- package/corpus/toolkit/src/editor/index.ts +2 -0
- package/corpus/toolkit/src/styles.css +52 -23
- package/dist/a2a/client.d.ts +3 -1
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +17 -12
- package/dist/a2a/client.js.map +1 -1
- package/dist/cli/index.js +18 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/multi-frontier-runs.js +3 -3
- package/dist/cli/multi-frontier-runs.js.map +1 -1
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +0 -12
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/cli/workspace-dev.js +1 -1
- package/dist/cli/workspace-dev.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +4 -1
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/RunStuckBanner.d.ts +3 -5
- package/dist/client/RunStuckBanner.d.ts.map +1 -1
- package/dist/client/RunStuckBanner.js +17 -18
- package/dist/client/RunStuckBanner.js.map +1 -1
- package/dist/client/chat/action-chat-ui-surface.d.ts +8 -0
- package/dist/client/chat/action-chat-ui-surface.d.ts.map +1 -0
- package/dist/client/chat/action-chat-ui-surface.js +10 -0
- package/dist/client/chat/action-chat-ui-surface.js.map +1 -0
- package/dist/client/chat/message-components.d.ts +3 -0
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +40 -7
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts +3 -1
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +13 -9
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/chat/widgets/InlineExtensionWidget.d.ts.map +1 -1
- package/dist/client/chat/widgets/InlineExtensionWidget.js +1 -1
- package/dist/client/chat/widgets/InlineExtensionWidget.js.map +1 -1
- package/dist/client/chat/widgets/builtin-tool-renderers.d.ts.map +1 -1
- package/dist/client/chat/widgets/builtin-tool-renderers.js +5 -3
- package/dist/client/chat/widgets/builtin-tool-renderers.js.map +1 -1
- package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
- package/dist/client/conversation/AgentConversation.js +3 -2
- package/dist/client/conversation/AgentConversation.js.map +1 -1
- package/dist/client/error-capture.d.ts.map +1 -1
- package/dist/client/error-capture.js +2 -2
- package/dist/client/error-capture.js.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.d.ts +1 -0
- package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.js +9 -8
- package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +3 -1
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- 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 +4 -17
- package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
- package/dist/client/resources/mcp-integration-logos.js +2 -2
- package/dist/client/resources/mcp-integration-logos.js.map +1 -1
- package/dist/client/route-chunk-recovery.d.ts.map +1 -1
- package/dist/client/route-chunk-recovery.js +5 -3
- package/dist/client/route-chunk-recovery.js.map +1 -1
- package/dist/client/session-replay.js +3 -3
- package/dist/client/session-replay.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +2 -2
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/transcription/use-live-transcription.d.ts +3 -3
- package/dist/client/transcription/use-live-transcription.d.ts.map +1 -1
- package/dist/client/transcription/use-live-transcription.js +22 -11
- package/dist/client/transcription/use-live-transcription.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +1 -1
- package/dist/deploy/build.js.map +1 -1
- package/dist/guards/db-tool-scoping.js +1 -1
- package/dist/guards/db-tool-scoping.js.map +1 -1
- package/dist/integrations/adapters/slack.d.ts +1 -0
- package/dist/integrations/adapters/slack.d.ts.map +1 -1
- package/dist/integrations/adapters/slack.js +61 -5
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/index.d.ts +1 -1
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +1 -1
- package/dist/integrations/index.js.map +1 -1
- package/dist/localization/default-messages.js +1 -1
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp-client/oauth-routes.d.ts +3 -0
- package/dist/mcp-client/oauth-routes.d.ts.map +1 -1
- package/dist/mcp-client/oauth-routes.js +41 -12
- package/dist/mcp-client/oauth-routes.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +3 -3
- package/dist/provider-api/actions/custom-provider-registration.d.ts +8 -8
- package/dist/provider-api/actions/provider-api.d.ts +11 -11
- package/dist/secrets/routes.d.ts +6 -6
- package/dist/server/realtime-voice.d.ts.map +1 -1
- package/dist/server/realtime-voice.js +1 -1
- package/dist/server/realtime-voice.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
- package/dist/terminal/cli-registry.js +1 -1
- package/dist/terminal/cli-registry.js.map +1 -1
- package/dist/vite/client.d.ts +8 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +113 -2
- package/dist/vite/client.js.map +1 -1
- package/package.json +2 -2
- package/src/a2a/client.ts +32 -10
- package/src/cli/index.ts +18 -10
- package/src/cli/multi-frontier-runs.ts +5 -3
- package/src/cli/templates-meta.ts +0 -12
- package/src/cli/workspace-dev.ts +1 -1
- package/src/client/AgentPanel.tsx +9 -1
- package/src/client/RunStuckBanner.tsx +39 -47
- package/src/client/chat/action-chat-ui-surface.tsx +32 -0
- package/src/client/chat/message-components.tsx +53 -8
- package/src/client/chat/tool-call-display.tsx +24 -9
- package/src/client/chat/widgets/InlineExtensionWidget.tsx +0 -1
- package/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
- package/src/client/conversation/AgentConversation.tsx +12 -1
- package/src/client/error-capture.ts +2 -6
- package/src/client/resources/McpConnectionSuggestion.tsx +20 -14
- package/src/client/resources/ResourcesPanel.tsx +5 -1
- package/src/client/resources/mcp-integration-catalog.ts +7 -17
- package/src/client/resources/mcp-integration-logos.ts +2 -2
- package/src/client/route-chunk-recovery.ts +5 -3
- package/src/client/session-replay.ts +3 -3
- package/src/client/settings/SettingsPanel.tsx +15 -6
- package/src/client/transcription/use-live-transcription.ts +64 -45
- package/src/deploy/build.ts +2 -1
- package/src/guards/db-tool-scoping.ts +1 -1
- package/src/integrations/adapters/slack.ts +84 -5
- package/src/integrations/index.ts +5 -1
- package/src/localization/default-messages.ts +1 -1
- package/src/mcp-client/oauth-routes.ts +45 -12
- package/src/server/realtime-voice.ts +4 -1
- package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +7 -5
- package/src/terminal/cli-registry.ts +1 -1
- package/src/vite/client.ts +166 -1
- package/corpus/templates/crm/.agents/skills/agent-native-docs/SKILL.md +0 -115
- package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +0 -177
- package/corpus/templates/crm/.agents/skills/crm/SKILL.md +0 -128
- package/corpus/templates/crm/.agents/skills/customizing-agent-native/SKILL.md +0 -220
- package/corpus/templates/crm/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/crm/.agents/skills/upgrade-agent-native/SKILL.md +0 -100
- package/corpus/templates/crm/.env.example +0 -5
- package/corpus/templates/crm/AGENTS.md +0 -120
- package/corpus/templates/crm/CHANGELOG.md +0 -1
- package/corpus/templates/crm/DEVELOPING.md +0 -66
- package/corpus/templates/crm/README.md +0 -106
- package/corpus/templates/crm/_gitignore +0 -12
- package/corpus/templates/crm/actions/_crm-action-utils.ts +0 -87
- package/corpus/templates/crm/actions/_crm-dashboard.ts +0 -69
- package/corpus/templates/crm/actions/_crm-data-program-actions.ts +0 -15
- package/corpus/templates/crm/actions/_crm-signal-utils.ts +0 -79
- package/corpus/templates/crm/actions/apply-crm-proposals.ts +0 -203
- package/corpus/templates/crm/actions/attach-call-evidence.ts +0 -170
- package/corpus/templates/crm/actions/configure-crm-connection.ts +0 -126
- package/corpus/templates/crm/actions/configure-native-crm.ts +0 -44
- package/corpus/templates/crm/actions/create-crm-record.ts +0 -148
- package/corpus/templates/crm/actions/create-crm-signal-tracker.ts +0 -58
- package/corpus/templates/crm/actions/delete-staged-dataset.ts +0 -14
- package/corpus/templates/crm/actions/get-crm-automation-recipe.ts +0 -36
- package/corpus/templates/crm/actions/get-crm-dashboard-panel.ts +0 -35
- package/corpus/templates/crm/actions/get-crm-dashboard.ts +0 -14
- package/corpus/templates/crm/actions/get-crm-overview.ts +0 -13
- package/corpus/templates/crm/actions/get-crm-pipeline-data.ts +0 -61
- package/corpus/templates/crm/actions/get-crm-record.ts +0 -75
- package/corpus/templates/crm/actions/install-crm-pipeline-dashboard.ts +0 -81
- package/corpus/templates/crm/actions/list-crm-dashboard-revisions.ts +0 -15
- package/corpus/templates/crm/actions/list-crm-dashboards.ts +0 -15
- package/corpus/templates/crm/actions/list-crm-proposals.ts +0 -31
- package/corpus/templates/crm/actions/list-crm-records.ts +0 -79
- package/corpus/templates/crm/actions/list-crm-saved-views.ts +0 -15
- package/corpus/templates/crm/actions/list-crm-signal-hits.ts +0 -43
- package/corpus/templates/crm/actions/list-crm-signal-trackers.ts +0 -32
- package/corpus/templates/crm/actions/list-crm-tasks.ts +0 -22
- package/corpus/templates/crm/actions/list-staged-datasets.ts +0 -14
- package/corpus/templates/crm/actions/list-workspace-connections.ts +0 -47
- package/corpus/templates/crm/actions/manage-crm-signal-tracker.ts +0 -87
- package/corpus/templates/crm/actions/manage-crm-task.ts +0 -132
- package/corpus/templates/crm/actions/navigate.ts +0 -63
- package/corpus/templates/crm/actions/provider-api-catalog.ts +0 -22
- package/corpus/templates/crm/actions/provider-api-docs.ts +0 -54
- package/corpus/templates/crm/actions/provider-api-request.ts +0 -92
- package/corpus/templates/crm/actions/query-staged-dataset.ts +0 -44
- package/corpus/templates/crm/actions/record-crm-call-insight.ts +0 -160
- package/corpus/templates/crm/actions/record-crm-smart-signal.ts +0 -150
- package/corpus/templates/crm/actions/restore-crm-dashboard-revision.ts +0 -23
- package/corpus/templates/crm/actions/review-crm-signal.ts +0 -31
- package/corpus/templates/crm/actions/run-crm-saved-view-program.ts +0 -103
- package/corpus/templates/crm/actions/run-crm-signal-trackers.ts +0 -275
- package/corpus/templates/crm/actions/run.ts +0 -7
- package/corpus/templates/crm/actions/save-crm-dashboard.ts +0 -51
- package/corpus/templates/crm/actions/save-crm-saved-view.ts +0 -119
- package/corpus/templates/crm/actions/sync-crm.ts +0 -146
- package/corpus/templates/crm/actions/update-crm-record.ts +0 -510
- package/corpus/templates/crm/actions/view-screen.ts +0 -218
- package/corpus/templates/crm/agent-native.app-skill.json +0 -58
- package/corpus/templates/crm/app/components/crm/CreateCrmRecordDialog.tsx +0 -158
- package/corpus/templates/crm/app/components/crm/CrmDashboardPanel.tsx +0 -78
- package/corpus/templates/crm/app/components/crm/CrmSignalsPanel.tsx +0 -226
- package/corpus/templates/crm/app/components/crm/IntelligenceSettings.tsx +0 -414
- package/corpus/templates/crm/app/components/crm/RecordActions.tsx +0 -510
- package/corpus/templates/crm/app/components/crm/RecordGrid.tsx +0 -134
- package/corpus/templates/crm/app/components/crm/RecordWorkspace.tsx +0 -362
- package/corpus/templates/crm/app/components/crm/SavedViewDataProgram.tsx +0 -93
- package/corpus/templates/crm/app/components/crm/Surface.tsx +0 -97
- package/corpus/templates/crm/app/components/crm/WorkOverview.tsx +0 -180
- package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +0 -112
- package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +0 -84
- package/corpus/templates/crm/app/components/ui/alert-dialog.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/badge.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/button.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/card.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/dialog.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/input.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/label.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/select.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/sheet.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/skeleton.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/switch.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/table.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/tabs.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/textarea.tsx +0 -1
- package/corpus/templates/crm/app/components/ui/toolkit-provider.tsx +0 -17
- package/corpus/templates/crm/app/design-system.ts +0 -3
- package/corpus/templates/crm/app/entry.client.tsx +0 -16
- package/corpus/templates/crm/app/entry.server.tsx +0 -10
- package/corpus/templates/crm/app/global.css +0 -167
- package/corpus/templates/crm/app/hooks/use-navigation-state.ts +0 -60
- package/corpus/templates/crm/app/i18n/en-US.ts +0 -89
- package/corpus/templates/crm/app/i18n/index.ts +0 -34
- package/corpus/templates/crm/app/lib/dashboard.ts +0 -13
- package/corpus/templates/crm/app/lib/navigation.ts +0 -54
- package/corpus/templates/crm/app/lib/tab-id.ts +0 -1
- package/corpus/templates/crm/app/lib/types.ts +0 -172
- package/corpus/templates/crm/app/lib/utils.ts +0 -1
- package/corpus/templates/crm/app/root.tsx +0 -91
- package/corpus/templates/crm/app/routes/_index.tsx +0 -26
- package/corpus/templates/crm/app/routes/accounts.tsx +0 -41
- package/corpus/templates/crm/app/routes/agent.tsx +0 -5
- package/corpus/templates/crm/app/routes/ask.tsx +0 -53
- package/corpus/templates/crm/app/routes/dashboard.tsx +0 -118
- package/corpus/templates/crm/app/routes/opportunities.tsx +0 -41
- package/corpus/templates/crm/app/routes/people.tsx +0 -41
- package/corpus/templates/crm/app/routes/proposals.tsx +0 -266
- package/corpus/templates/crm/app/routes/records.$recordId.tsx +0 -35
- package/corpus/templates/crm/app/routes/settings.tsx +0 -63
- package/corpus/templates/crm/app/routes/setup.tsx +0 -308
- package/corpus/templates/crm/app/routes/tasks.tsx +0 -252
- package/corpus/templates/crm/app/routes/views.tsx +0 -333
- package/corpus/templates/crm/app/routes.ts +0 -17
- package/corpus/templates/crm/app/vite-env.d.ts +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-agent-native-crm.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-clips-call-evidence-review-recipe.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-find-and-review-evidence-grounded-call-signals-w.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-crm-can-now-manage-keyword-and-smart-call-signal-trackers-fr.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-delegated-local-crm-automation.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-native-sql.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboard.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-pipeline-dashboards-now-install-correctly-from-the-crm-actio.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-21-salesforce-connection.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-22-crm-field-validation-now-explains-which-fields-cannot-be-edi.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-22-fixed-hubspot-contact-syncs-missing-records-updated-after-th.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-22-fixed-pipeline-dashboard-panels-so-their-opportunity-data-lo.md +0 -6
- package/corpus/templates/crm/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +0 -6
- package/corpus/templates/crm/components.json +0 -20
- package/corpus/templates/crm/docs/architecture/crm-contract.md +0 -180
- package/corpus/templates/crm/learnings.defaults.md +0 -5
- package/corpus/templates/crm/package.json +0 -59
- package/corpus/templates/crm/public/favicon.svg +0 -1
- package/corpus/templates/crm/public/icon-180.svg +0 -1
- package/corpus/templates/crm/public/manifest.json +0 -11
- package/corpus/templates/crm/react-router.config.ts +0 -7
- package/corpus/templates/crm/server/crm/adapter.ts +0 -32
- package/corpus/templates/crm/server/crm/crm-field-firewall.ts +0 -64
- package/corpus/templates/crm/server/crm/crm-mirror.ts +0 -711
- package/corpus/templates/crm/server/crm/hubspot-adapter.ts +0 -1146
- package/corpus/templates/crm/server/crm/native-adapter.ts +0 -1715
- package/corpus/templates/crm/server/crm/read-through.ts +0 -207
- package/corpus/templates/crm/server/crm/salesforce-adapter.ts +0 -1255
- package/corpus/templates/crm/server/db/crm-store.ts +0 -1170
- package/corpus/templates/crm/server/db/index.ts +0 -169
- package/corpus/templates/crm/server/db/schema.ts +0 -441
- package/corpus/templates/crm/server/lib/intelligence/default-detectors.ts +0 -65
- package/corpus/templates/crm/server/lib/intelligence/evidence.ts +0 -105
- package/corpus/templates/crm/server/lib/intelligence/keyword-detector.ts +0 -100
- package/corpus/templates/crm/server/lib/intelligence/smart-detector.ts +0 -144
- package/corpus/templates/crm/server/lib/intelligence/summary.ts +0 -141
- package/corpus/templates/crm/server/lib/provider-api.ts +0 -64
- package/corpus/templates/crm/server/middleware/auth.ts +0 -4
- package/corpus/templates/crm/server/plugins/agent-chat.ts +0 -68
- package/corpus/templates/crm/server/plugins/auth.ts +0 -14
- package/corpus/templates/crm/server/plugins/core-routes.ts +0 -17
- package/corpus/templates/crm/server/plugins/db.ts +0 -454
- package/corpus/templates/crm/server/routes/[...page].get.ts +0 -5
- package/corpus/templates/crm/shared/crm-automation-recipes.ts +0 -132
- package/corpus/templates/crm/shared/crm-contract.ts +0 -254
- package/corpus/templates/crm/shared/crm-sales-config.ts +0 -63
- package/corpus/templates/crm/ssr-entry.ts +0 -11
- package/corpus/templates/crm/tsconfig.json +0 -24
- package/corpus/templates/crm/vite.config.ts +0 -15
- package/corpus/templates/crm/vitest.config.ts +0 -5
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
IconBrandGithub,
|
|
10
10
|
IconBrandSlack,
|
|
11
11
|
IconChecks,
|
|
12
|
+
IconChevronDown,
|
|
12
13
|
IconCircleCheck,
|
|
13
14
|
IconCircleDashed,
|
|
14
15
|
IconClock,
|
|
@@ -40,7 +41,6 @@ import {
|
|
|
40
41
|
} from "@/components/brain/Surface";
|
|
41
42
|
import { Badge } from "@/components/ui/badge";
|
|
42
43
|
import { Button } from "@/components/ui/button";
|
|
43
|
-
import { Card, CardContent } from "@/components/ui/card";
|
|
44
44
|
import {
|
|
45
45
|
Dialog,
|
|
46
46
|
DialogContent,
|
|
@@ -75,6 +75,11 @@ import {
|
|
|
75
75
|
} from "@/components/ui/sheet";
|
|
76
76
|
import { Switch } from "@/components/ui/switch";
|
|
77
77
|
import { Textarea } from "@/components/ui/textarea";
|
|
78
|
+
import {
|
|
79
|
+
Tooltip,
|
|
80
|
+
TooltipContent,
|
|
81
|
+
TooltipTrigger,
|
|
82
|
+
} from "@/components/ui/tooltip";
|
|
78
83
|
import {
|
|
79
84
|
type BrainConnectionProvider,
|
|
80
85
|
type BrainHealthResponse,
|
|
@@ -104,6 +109,7 @@ import {
|
|
|
104
109
|
createOneTimeIngestHandoff,
|
|
105
110
|
type OneTimeIngestHandoff,
|
|
106
111
|
} from "@/lib/ingest-handoff";
|
|
112
|
+
import { cn } from "@/lib/utils";
|
|
107
113
|
|
|
108
114
|
type Provider = "manual" | "generic" | "clips" | "slack" | "granola" | "github";
|
|
109
115
|
type CaptureStatusFilter = BrainCaptureReviewStatus | "all";
|
|
@@ -1536,6 +1542,7 @@ function SourceListItem({
|
|
|
1536
1542
|
onTune: () => void;
|
|
1537
1543
|
}) {
|
|
1538
1544
|
const t = useT();
|
|
1545
|
+
const [expanded, setExpanded] = useState(false);
|
|
1539
1546
|
const Icon = sourceProviderIcon(source.provider);
|
|
1540
1547
|
const retry = sourceRetryAfter(source);
|
|
1541
1548
|
const hasSyncNotice = Boolean(
|
|
@@ -1546,113 +1553,171 @@ function SourceListItem({
|
|
|
1546
1553
|
: null;
|
|
1547
1554
|
const coverage =
|
|
1548
1555
|
typeof source.coverage === "number" ? formatPercent(source.coverage) : null;
|
|
1556
|
+
const captureCount = (source.recordCount ?? 0).toLocaleString();
|
|
1557
|
+
const lastSync = shortDate(sourceLastSync(source)) ?? t("sources.never");
|
|
1549
1558
|
|
|
1550
1559
|
return (
|
|
1551
|
-
<
|
|
1552
|
-
<
|
|
1553
|
-
<
|
|
1554
|
-
<
|
|
1555
|
-
|
|
1556
|
-
|
|
1560
|
+
<div className="group bg-card transition-colors hover:bg-muted/20">
|
|
1561
|
+
<div className="flex min-w-0 items-center gap-3 px-4 py-3 sm:px-5">
|
|
1562
|
+
<span className="flex size-8 shrink-0 items-center justify-center rounded-md border border-border bg-muted/35">
|
|
1563
|
+
<Icon className="size-4 text-muted-foreground" />
|
|
1564
|
+
</span>
|
|
1565
|
+
|
|
1566
|
+
<div className="min-w-0 flex-1">
|
|
1567
|
+
<div className="flex min-w-0 flex-wrap items-center gap-2">
|
|
1568
|
+
<h2 className="truncate text-sm font-medium text-foreground sm:text-[0.9375rem]">
|
|
1569
|
+
{sourceName(source)}
|
|
1570
|
+
</h2>
|
|
1571
|
+
<StatusBadge status={sourceHealth(source)} />
|
|
1572
|
+
</div>
|
|
1573
|
+
<div className="mt-1 flex min-w-0 flex-wrap items-center gap-x-2 gap-y-0.5 text-xs text-muted-foreground">
|
|
1574
|
+
<span className="capitalize">{sourceType(source)}</span>
|
|
1575
|
+
<span aria-hidden="true">·</span>
|
|
1576
|
+
<span>
|
|
1577
|
+
{captureCount} {t("sources.captures").toLocaleLowerCase()}
|
|
1557
1578
|
</span>
|
|
1558
|
-
<
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
<span className="text-xs text-muted-foreground">
|
|
1571
|
-
{t("sources.nextSync", { date: nextSync })}
|
|
1579
|
+
<span aria-hidden="true">·</span>
|
|
1580
|
+
<span className="truncate">
|
|
1581
|
+
{t("sources.lastSyncWithDate", { date: lastSync })}
|
|
1582
|
+
</span>
|
|
1583
|
+
{hasSyncNotice ? (
|
|
1584
|
+
<Tooltip>
|
|
1585
|
+
<TooltipTrigger asChild>
|
|
1586
|
+
<span
|
|
1587
|
+
className="ms-1 inline-flex size-4 items-center justify-center text-destructive"
|
|
1588
|
+
aria-label={t("sources.actionFailedTitle")}
|
|
1589
|
+
>
|
|
1590
|
+
<IconAlertTriangle className="size-3.5" />
|
|
1572
1591
|
</span>
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
</
|
|
1578
|
-
</div>
|
|
1579
|
-
</div>
|
|
1580
|
-
|
|
1581
|
-
<div
|
|
1582
|
-
className={
|
|
1583
|
-
coverage
|
|
1584
|
-
? "grid grid-cols-2 gap-4 sm:grid-cols-3 xl:min-w-80"
|
|
1585
|
-
: "grid grid-cols-2 gap-4 xl:min-w-64"
|
|
1586
|
-
}
|
|
1587
|
-
>
|
|
1588
|
-
<SourceFact
|
|
1589
|
-
label={t("sources.captures")}
|
|
1590
|
-
value={(source.recordCount ?? 0).toLocaleString()}
|
|
1591
|
-
/>
|
|
1592
|
-
<SourceFact
|
|
1593
|
-
label={t("sources.lastSync")}
|
|
1594
|
-
value={shortDate(sourceLastSync(source)) ?? t("sources.never")}
|
|
1595
|
-
/>
|
|
1596
|
-
{coverage ? (
|
|
1597
|
-
<SourceFact label={t("sources.coverage")} value={coverage} />
|
|
1592
|
+
</TooltipTrigger>
|
|
1593
|
+
<TooltipContent>
|
|
1594
|
+
{t("sources.actionFailedTitle")}
|
|
1595
|
+
</TooltipContent>
|
|
1596
|
+
</Tooltip>
|
|
1598
1597
|
) : null}
|
|
1599
1598
|
</div>
|
|
1599
|
+
</div>
|
|
1600
1600
|
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
<
|
|
1620
|
-
|
|
1601
|
+
<div className="flex shrink-0 items-center gap-0.5">
|
|
1602
|
+
<Tooltip>
|
|
1603
|
+
<TooltipTrigger asChild>
|
|
1604
|
+
<Button
|
|
1605
|
+
size="icon"
|
|
1606
|
+
variant="ghost"
|
|
1607
|
+
className="size-8"
|
|
1608
|
+
onClick={onReview}
|
|
1609
|
+
aria-label={`${t("sources.captures")}: ${sourceName(source)}`}
|
|
1610
|
+
>
|
|
1611
|
+
<IconFileSearch className="size-4" />
|
|
1612
|
+
</Button>
|
|
1613
|
+
</TooltipTrigger>
|
|
1614
|
+
<TooltipContent>{t("sources.captures")}</TooltipContent>
|
|
1615
|
+
</Tooltip>
|
|
1616
|
+
|
|
1617
|
+
<DropdownMenu>
|
|
1618
|
+
<DropdownMenuTrigger asChild>
|
|
1619
|
+
<Button
|
|
1620
|
+
size="icon"
|
|
1621
|
+
variant="ghost"
|
|
1622
|
+
className="size-8"
|
|
1623
|
+
aria-label={t("sources.moreActionsFor", {
|
|
1624
|
+
source: sourceName(source),
|
|
1625
|
+
})}
|
|
1626
|
+
>
|
|
1627
|
+
<IconDotsVertical className="size-4" />
|
|
1628
|
+
</Button>
|
|
1629
|
+
</DropdownMenuTrigger>
|
|
1630
|
+
<DropdownMenuContent align="end" className="w-40">
|
|
1631
|
+
<DropdownMenuItem disabled={syncPending} onSelect={onSync}>
|
|
1632
|
+
<IconRefresh className="size-4" />
|
|
1633
|
+
{t("sources.syncNow")}
|
|
1634
|
+
</DropdownMenuItem>
|
|
1635
|
+
<DropdownMenuItem onSelect={onTune}>
|
|
1636
|
+
<IconSettings2 className="size-4" />
|
|
1637
|
+
{t("sources.tuneSource")}
|
|
1638
|
+
</DropdownMenuItem>
|
|
1639
|
+
{onRotateIngestToken ? (
|
|
1640
|
+
<DropdownMenuItem onSelect={onRotateIngestToken}>
|
|
1621
1641
|
<IconRefresh className="size-4" />
|
|
1622
|
-
{t("sources.
|
|
1642
|
+
{t("sources.rotateIngestToken")}
|
|
1623
1643
|
</DropdownMenuItem>
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1644
|
+
) : null}
|
|
1645
|
+
</DropdownMenuContent>
|
|
1646
|
+
</DropdownMenu>
|
|
1647
|
+
|
|
1648
|
+
<Tooltip>
|
|
1649
|
+
<TooltipTrigger asChild>
|
|
1650
|
+
<Button
|
|
1651
|
+
size="icon"
|
|
1652
|
+
variant="ghost"
|
|
1653
|
+
className="size-8"
|
|
1654
|
+
onClick={() => setExpanded((value) => !value)}
|
|
1655
|
+
aria-expanded={expanded}
|
|
1656
|
+
aria-label={
|
|
1657
|
+
expanded ? t("sources.hideDetails") : t("sources.details")
|
|
1658
|
+
}
|
|
1659
|
+
>
|
|
1660
|
+
<IconChevronDown
|
|
1661
|
+
className={cn(
|
|
1662
|
+
"size-4 transition-transform duration-200 ease-out",
|
|
1663
|
+
expanded && "rotate-180",
|
|
1664
|
+
)}
|
|
1665
|
+
/>
|
|
1666
|
+
</Button>
|
|
1667
|
+
</TooltipTrigger>
|
|
1668
|
+
<TooltipContent>
|
|
1669
|
+
{expanded ? t("sources.hideDetails") : t("sources.details")}
|
|
1670
|
+
</TooltipContent>
|
|
1671
|
+
</Tooltip>
|
|
1637
1672
|
</div>
|
|
1673
|
+
</div>
|
|
1638
1674
|
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
className="
|
|
1643
|
-
|
|
1644
|
-
|
|
1675
|
+
{expanded ? (
|
|
1676
|
+
<div className="border-t border-border/70 px-4 pb-4 pt-3 sm:px-5">
|
|
1677
|
+
<div className="grid gap-4 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-start">
|
|
1678
|
+
<div className="min-w-0">
|
|
1679
|
+
<p className="max-w-3xl text-sm leading-6 text-muted-foreground">
|
|
1680
|
+
{sourceDescription(source)}
|
|
1681
|
+
</p>
|
|
1682
|
+
{hasSyncNotice ? (
|
|
1683
|
+
<div className="mt-3 flex gap-2 rounded-md border border-destructive/20 bg-destructive/5 px-3 py-2 text-sm">
|
|
1684
|
+
<IconAlertTriangle className="mt-0.5 size-4 shrink-0 text-destructive" />
|
|
1685
|
+
<p className="min-w-0 text-muted-foreground">
|
|
1686
|
+
{syncDetail(source, t)}
|
|
1687
|
+
</p>
|
|
1688
|
+
</div>
|
|
1689
|
+
) : null}
|
|
1690
|
+
</div>
|
|
1645
1691
|
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1692
|
+
<div
|
|
1693
|
+
className={cn(
|
|
1694
|
+
"grid grid-cols-2 gap-x-6 gap-y-3 lg:min-w-64",
|
|
1695
|
+
coverage && "lg:grid-cols-3 lg:min-w-80",
|
|
1696
|
+
)}
|
|
1697
|
+
>
|
|
1698
|
+
<SourceFact label={t("sources.captures")} value={captureCount} />
|
|
1699
|
+
<SourceFact label={t("sources.lastSync")} value={lastSync} />
|
|
1700
|
+
{coverage ? (
|
|
1701
|
+
<SourceFact label={t("sources.coverage")} value={coverage} />
|
|
1702
|
+
) : null}
|
|
1703
|
+
</div>
|
|
1652
1704
|
</div>
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1705
|
+
|
|
1706
|
+
{coverage ? (
|
|
1707
|
+
<Progress
|
|
1708
|
+
value={(source.coverage ?? 0) * 100}
|
|
1709
|
+
className="mt-4 h-1.5 bg-muted"
|
|
1710
|
+
/>
|
|
1711
|
+
) : null}
|
|
1712
|
+
|
|
1713
|
+
{nextSync ? (
|
|
1714
|
+
<p className="mt-3 text-xs text-muted-foreground">
|
|
1715
|
+
{t("sources.nextSync", { date: nextSync })}
|
|
1716
|
+
</p>
|
|
1717
|
+
) : null}
|
|
1718
|
+
</div>
|
|
1719
|
+
) : null}
|
|
1720
|
+
</div>
|
|
1656
1721
|
);
|
|
1657
1722
|
}
|
|
1658
1723
|
|
|
@@ -1975,25 +2040,27 @@ export default function SourcesRoute() {
|
|
|
1975
2040
|
<LoadingRows rows={3} />
|
|
1976
2041
|
</div>
|
|
1977
2042
|
) : visibleSources.length ? (
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
source.provider === "
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
1995
|
-
|
|
1996
|
-
|
|
2043
|
+
<div className="overflow-hidden rounded-lg border border-border bg-card divide-y divide-border">
|
|
2044
|
+
{visibleSources.map((source) => (
|
|
2045
|
+
<SourceListItem
|
|
2046
|
+
key={source.id}
|
|
2047
|
+
source={source}
|
|
2048
|
+
syncPending={
|
|
2049
|
+
syncSource.isPending || rotateSourceIngestToken.isPending
|
|
2050
|
+
}
|
|
2051
|
+
onReview={() => openCaptureReview(source)}
|
|
2052
|
+
onRotateIngestToken={
|
|
2053
|
+
(source.provider === "clips" ||
|
|
2054
|
+
source.provider === "generic") &&
|
|
2055
|
+
ingestSourceKey(source)
|
|
2056
|
+
? () => void rotateIngestToken(source)
|
|
2057
|
+
: undefined
|
|
2058
|
+
}
|
|
2059
|
+
onSync={() => syncSource.mutate({ sourceId: source.id })}
|
|
2060
|
+
onTune={() => openEdit(source)}
|
|
2061
|
+
/>
|
|
2062
|
+
))}
|
|
2063
|
+
</div>
|
|
1997
2064
|
) : (
|
|
1998
2065
|
<div>
|
|
1999
2066
|
<EmptyActionState
|
|
@@ -96,14 +96,16 @@ ladder.
|
|
|
96
96
|
bounded `voiceContext` to the shared cleanup/transcription path when active
|
|
97
97
|
app context, learned vocabulary, user notes, or AGENTS.md preferences are
|
|
98
98
|
available.
|
|
99
|
-
- Cloud transcription is fallback-only for Clips recordings
|
|
100
|
-
|
|
99
|
+
- Cloud transcription is fallback-only for Clips recordings. Preserve the
|
|
100
|
+
browser/macOS native transcript first, then use the configured Builder/Gemini
|
|
101
|
+
path against the original recording when native capture is unavailable.
|
|
101
102
|
- AI setup must be visible and paid-account-backed: lead with Builder.io Connect
|
|
102
103
|
for managed credits, object storage, uploads, and transcription. BYOK belongs
|
|
103
104
|
in the agent sidebar's API Keys & Connections panel; template settings may
|
|
104
105
|
signpost that panel but should not create a second credential vault.
|
|
105
106
|
Anthropic/OpenAI power the agent chat; Gemini powers cleanup, titles, and
|
|
106
|
-
meeting notes;
|
|
107
|
+
meeting notes; any optional third-party speech provider is limited to
|
|
108
|
+
desktop voice dictation and is not used for recording transcripts.
|
|
107
109
|
- Hosted/shared recording uploads require configured storage. Do not preserve
|
|
108
110
|
video bytes in SQL as a production fallback; only local SQLite/dev flows may
|
|
109
111
|
keep scratch chunks while a user connects Builder.io or S3-compatible storage.
|
|
@@ -148,9 +150,9 @@ ladder.
|
|
|
148
150
|
recordings. Do not pivot straight to frames or tell the user there is no
|
|
149
151
|
transcript until the retry budget is exhausted.
|
|
150
152
|
- If transcription failed because Builder transcription credits are exhausted,
|
|
151
|
-
tell the user that clearly and point them to Builder.io credits/upgrade
|
|
152
|
-
|
|
153
|
-
|
|
153
|
+
tell the user that clearly and point them to Builder.io credits/upgrade.
|
|
154
|
+
Native browser/macOS capture remains the first transcript source; Builder
|
|
155
|
+
transcribes the original recording only when native capture is unavailable.
|
|
154
156
|
- Use `get-builder-credit-status` when the user asks whether Builder.io credit
|
|
155
157
|
limits are pausing backup transcription, transcript cleanup, summaries, or AI
|
|
156
158
|
title generation. Treat an exhausted status as an FYI/upgrade path, not an app
|