@agent-native/core 0.117.2 → 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 +3 -3
- package/corpus/core/CHANGELOG.md +51 -0
- package/corpus/core/docs/content/custom-design-system.mdx +445 -0
- package/corpus/core/docs/content/toolkit-ui.mdx +16 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/a2a/client.ts +32 -10
- package/corpus/core/src/a2a/types.ts +1 -0
- package/corpus/core/src/agent/types.ts +1 -1
- 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 +99 -108
- package/corpus/core/src/client/AssistantChat.tsx +30 -13
- package/corpus/core/src/client/CommandMenu.tsx +68 -178
- package/corpus/core/src/client/RunStuckBanner.tsx +39 -47
- package/corpus/core/src/client/agent-chat-adapter.ts +3 -1
- package/corpus/core/src/client/app-providers.tsx +1 -1
- package/corpus/core/src/client/chat/action-chat-ui-surface.tsx +32 -0
- package/corpus/core/src/client/chat/message-components.tsx +169 -18
- package/corpus/core/src/client/chat/tool-call-display.tsx +50 -14
- package/corpus/core/src/client/chat/widgets/InlineExtensionWidget.tsx +13 -40
- package/corpus/core/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
- package/corpus/core/src/client/components/ui/message-scroller.tsx +15 -1
- 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/i18n.tsx +22 -0
- package/corpus/core/src/client/index.ts +17 -0
- package/corpus/core/src/client/org/TeamPage.tsx +257 -153
- package/corpus/core/src/client/progress/RunsTray.tsx +89 -88
- package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +25 -16
- package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +34 -13
- package/corpus/core/src/client/resources/ResourcesPanel.tsx +5 -1
- package/corpus/core/src/client/resources/mcp-integration-catalog.ts +20 -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/DemoModeSection.tsx +6 -18
- package/corpus/core/src/client/settings/SecretsSection.tsx +97 -52
- package/corpus/core/src/client/settings/SettingsPanel.tsx +217 -252
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +23 -2
- package/corpus/core/src/client/settings/VoiceTranscriptionSection.tsx +7 -18
- package/corpus/core/src/client/settings/index.ts +7 -0
- package/corpus/core/src/client/settings/useSettingsPanelController.ts +155 -0
- package/corpus/core/src/client/setup-connections/BuilderConnectCard.tsx +116 -51
- package/corpus/core/src/client/setup-connections/index.ts +10 -0
- package/corpus/core/src/client/setup-connections/useBuilderConnectCardController.ts +82 -0
- package/corpus/core/src/client/sharing/ShareButton.tsx +64 -586
- package/corpus/core/src/client/sharing/ShareDialog.tsx +299 -633
- package/corpus/core/src/client/sharing/index.ts +42 -0
- package/corpus/core/src/client/sharing/share-controller-helpers.ts +318 -0
- package/corpus/core/src/client/sharing/useShareButtonController.ts +600 -0
- package/corpus/core/src/client/sharing/useShareDialogController.ts +559 -0
- package/corpus/core/src/client/sse-event-processor.ts +23 -0
- package/corpus/core/src/client/tool-display.ts +71 -0
- package/corpus/core/src/client/transcription/use-live-transcription.ts +64 -45
- package/corpus/core/src/client/use-agent-engine-configured.ts +12 -19
- package/corpus/core/src/client/use-chat-threads.ts +33 -12
- 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 +6 -1
- package/corpus/core/src/mcp-client/oauth-routes.ts +61 -14
- package/corpus/core/src/scripts/call-agent.ts +5 -1
- package/corpus/core/src/server/realtime-voice.ts +5 -2
- package/corpus/core/src/styles/agent-native.css +0 -24
- package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/core/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/core/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/core/src/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
- package/corpus/core/src/templates/default/app/design-system.ts +3 -0
- package/corpus/core/src/templates/default/app/root.tsx +5 -2
- package/corpus/core/src/templates/default/package.json +1 -0
- package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/core/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
- 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 +205 -1
- package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/analytics/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/analytics/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/analytics/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/analytics/app/design-system.ts +3 -0
- 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/assets/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/assets/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/assets/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/assets/app/components/ui/alert.tsx +1 -0
- package/corpus/templates/assets/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/assets/app/design-system.ts +3 -0
- package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +26 -30
- package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/brain/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/brain/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/brain/app/components/ui/dialog.tsx +1 -0
- package/corpus/templates/brain/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/brain/app/design-system.ts +3 -0
- package/corpus/templates/brain/app/routes/sources.tsx +189 -122
- package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/calendar/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/calendar/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/calendar/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/calendar/app/design-system.ts +3 -0
- package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/chat/app/design-system.ts +3 -0
- package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/clips/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/clips/.agents/skills/shadcn-ui/SKILL.md +28 -4
- 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/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/clips/app/design-system.ts +3 -0
- package/corpus/templates/clips/app/lib/capture-install-options.ts +15 -4
- package/corpus/templates/clips/app/routes/_app.library._index.tsx +1 -1
- 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-fixed-windows-recordings-aborting-during-the-countdown.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-permissions-and-rewind-controls-are-now-grouped-with-clearer.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-the-desktop-popover-opens-centered-under-the-menu-bar-icon-o.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/desktop/src/app.tsx +86 -82
- package/corpus/templates/clips/desktop/src/styles.css +13 -0
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +10 -1
- package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +37 -2
- package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +18 -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/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/content/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/content/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +41 -59
- 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/database/DatabaseView.tsx +41 -41
- package/corpus/templates/content/app/components/editor/database/GalleryView.tsx +2 -1
- package/corpus/templates/content/app/components/editor/database/ListView.tsx +2 -1
- package/corpus/templates/content/app/components/editor/database/TimelineView.tsx +9 -9
- package/corpus/templates/content/app/components/editor/database/sidebar.tsx +7 -7
- package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +11 -11
- package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +2 -2
- package/corpus/templates/content/app/components/ui/checkbox.tsx +1 -0
- package/corpus/templates/content/app/components/ui/collapsible.tsx +1 -0
- package/corpus/templates/content/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/content/app/design-system.ts +3 -0
- package/corpus/templates/content/app/global.css +29 -3
- package/corpus/templates/content/app/i18n-data.ts +10 -0
- package/corpus/templates/content/changelog/2026-07-22-page-actions-are-grouped-into-the-three-dots-menu-for-a-clea.md +6 -0
- package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/design/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/design/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +8 -8
- package/corpus/templates/design/app/components/ui/command.tsx +1 -0
- package/corpus/templates/design/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/design/app/design-system.ts +3 -0
- package/corpus/templates/design/server/lib/fig-file-decoder.ts +1 -0
- package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/dispatch/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/dispatch/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/dispatch/app/components/ui/button.tsx +1 -0
- package/corpus/templates/dispatch/app/components/ui/toolkit-provider.tsx +17 -0
- package/corpus/templates/dispatch/app/design-system.ts +3 -0
- package/corpus/templates/dispatch/app/root.tsx +10 -7
- package/corpus/templates/dispatch/package.json +1 -0
- package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/forms/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/forms/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/forms/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/forms/app/design-system.ts +3 -0
- package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/macros/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/macros/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/macros/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/macros/app/design-system.ts +3 -0
- package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/mail/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/mail/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/mail/app/components/email/EmailThread.tsx +134 -93
- package/corpus/templates/mail/app/components/email/email-iframe-document.ts +8 -2
- package/corpus/templates/mail/app/components/ui/textarea.tsx +1 -21
- package/corpus/templates/mail/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/mail/app/design-system.ts +3 -0
- package/corpus/templates/mail/changelog/2026-07-22-email-messages-no-longer-flash-with-an-unstyled-page-while-l.md +6 -0
- package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/plan/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/plan/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +1 -1
- package/corpus/templates/plan/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/plan/app/design-system.ts +3 -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/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/slides/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/slides/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/slides/app/components/ui/toolkit-provider.tsx +6 -1
- package/corpus/templates/slides/app/design-system.ts +3 -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/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/corpus/templates/tasks/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +22 -2
- package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/corpus/templates/tasks/app/components/ui/toolkit-provider.tsx +17 -0
- package/corpus/templates/tasks/app/design-system.ts +3 -0
- package/corpus/templates/tasks/app/root.tsx +5 -2
- package/corpus/toolkit/CHANGELOG.md +23 -0
- package/corpus/toolkit/agent-native.eject.json +71 -0
- package/corpus/toolkit/package.json +31 -1
- package/corpus/toolkit/src/chat-history/ChatHistoryRail.tsx +100 -39
- package/corpus/toolkit/src/chat-history/index.ts +9 -0
- package/corpus/toolkit/src/chat-history/useChatHistoryRailController.ts +76 -0
- package/corpus/toolkit/src/chat-history.css +2 -0
- package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +11 -8
- package/corpus/toolkit/src/composer/PromptComposer.tsx +32 -7
- package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +119 -31
- package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +124 -9
- package/corpus/toolkit/src/conformance/__fixtures__/css-in-js-adapter.tsx +401 -0
- package/corpus/toolkit/src/conformance/index.ts +3 -0
- package/corpus/toolkit/src/conformance/runner.tsx +862 -0
- package/corpus/toolkit/src/conformance/types.ts +45 -0
- package/corpus/toolkit/src/conformance/version.ts +22 -0
- package/corpus/toolkit/src/design-system/components.tsx +146 -0
- package/corpus/toolkit/src/design-system/context.tsx +31 -0
- package/corpus/toolkit/src/design-system/default-adapter.tsx +915 -0
- package/corpus/toolkit/src/design-system/definition.ts +14 -0
- package/corpus/toolkit/src/design-system/error-boundary.tsx +37 -0
- package/corpus/toolkit/src/design-system/index.ts +7 -0
- package/corpus/toolkit/src/design-system/theme.ts +145 -0
- package/corpus/toolkit/src/design-system/types.ts +363 -0
- 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/provider.tsx +98 -5
- package/corpus/toolkit/src/styles.css +52 -23
- package/corpus/toolkit/src/ui/button.tsx +95 -6
- package/corpus/toolkit/src/ui/dialog.tsx +48 -23
- package/corpus/toolkit/src/ui/popover.tsx +16 -2
- package/corpus/toolkit/src/ui/select.tsx +7 -3
- package/corpus/toolkit/src/ui/sidebar.tsx +47 -48
- package/corpus/toolkit/src/ui/tooltip.tsx +7 -3
- 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/a2a/types.d.ts +1 -1
- package/dist/a2a/types.d.ts.map +1 -1
- package/dist/a2a/types.js.map +1 -1
- package/dist/agent/types.d.ts +1 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.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 +18 -15
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +26 -15
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/CommandMenu.d.ts.map +1 -1
- package/dist/client/CommandMenu.js +18 -106
- package/dist/client/CommandMenu.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/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +2 -1
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/app-providers.d.ts.map +1 -1
- package/dist/client/app-providers.js +1 -1
- package/dist/client/app-providers.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 +12 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +102 -14
- 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 +33 -14
- 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 +9 -12
- 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/components/ui/message-scroller.d.ts +1 -1
- package/dist/client/components/ui/message-scroller.d.ts.map +1 -1
- package/dist/client/components/ui/message-scroller.js +4 -3
- package/dist/client/components/ui/message-scroller.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/i18n.d.ts.map +1 -1
- package/dist/client/i18n.js +9 -0
- package/dist/client/i18n.js.map +1 -1
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -2
- package/dist/client/index.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +41 -33
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/progress/RunsTray.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.js +9 -10
- package/dist/client/progress/RunsTray.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 +14 -12
- package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.js +10 -8
- package/dist/client/resources/McpIntegrationDialog.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 +2 -0
- package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.js +17 -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/DemoModeSection.d.ts.map +1 -1
- package/dist/client/settings/DemoModeSection.js +2 -5
- package/dist/client/settings/DemoModeSection.js.map +1 -1
- package/dist/client/settings/SecretsSection.d.ts.map +1 -1
- package/dist/client/settings/SecretsSection.js +18 -6
- package/dist/client/settings/SecretsSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +53 -118
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js +16 -1
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js +2 -5
- package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
- package/dist/client/settings/index.d.ts +1 -0
- package/dist/client/settings/index.d.ts.map +1 -1
- package/dist/client/settings/index.js +1 -0
- package/dist/client/settings/index.js.map +1 -1
- package/dist/client/settings/useSettingsPanelController.d.ts +22 -0
- package/dist/client/settings/useSettingsPanelController.d.ts.map +1 -0
- package/dist/client/settings/useSettingsPanelController.js +103 -0
- package/dist/client/settings/useSettingsPanelController.js.map +1 -0
- package/dist/client/setup-connections/BuilderConnectCard.d.ts +14 -6
- package/dist/client/setup-connections/BuilderConnectCard.d.ts.map +1 -1
- package/dist/client/setup-connections/BuilderConnectCard.js +24 -16
- package/dist/client/setup-connections/BuilderConnectCard.js.map +1 -1
- package/dist/client/setup-connections/index.d.ts +2 -1
- package/dist/client/setup-connections/index.d.ts.map +1 -1
- package/dist/client/setup-connections/index.js +2 -1
- package/dist/client/setup-connections/index.js.map +1 -1
- package/dist/client/setup-connections/useBuilderConnectCardController.d.ts +34 -0
- package/dist/client/setup-connections/useBuilderConnectCardController.d.ts.map +1 -0
- package/dist/client/setup-connections/useBuilderConnectCardController.js +39 -0
- package/dist/client/setup-connections/useBuilderConnectCardController.js.map +1 -0
- package/dist/client/sharing/ShareButton.d.ts +2 -1
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +17 -463
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/sharing/ShareDialog.d.ts +6 -6
- package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
- package/dist/client/sharing/ShareDialog.js +69 -283
- package/dist/client/sharing/ShareDialog.js.map +1 -1
- package/dist/client/sharing/index.d.ts +3 -0
- package/dist/client/sharing/index.d.ts.map +1 -1
- package/dist/client/sharing/index.js +3 -0
- package/dist/client/sharing/index.js.map +1 -1
- package/dist/client/sharing/share-controller-helpers.d.ts +70 -0
- package/dist/client/sharing/share-controller-helpers.d.ts.map +1 -0
- package/dist/client/sharing/share-controller-helpers.js +224 -0
- package/dist/client/sharing/share-controller-helpers.js.map +1 -0
- package/dist/client/sharing/useShareButtonController.d.ts +91 -0
- package/dist/client/sharing/useShareButtonController.d.ts.map +1 -0
- package/dist/client/sharing/useShareButtonController.js +397 -0
- package/dist/client/sharing/useShareButtonController.js.map +1 -0
- package/dist/client/sharing/useShareDialogController.d.ts +109 -0
- package/dist/client/sharing/useShareDialogController.d.ts.map +1 -0
- package/dist/client/sharing/useShareDialogController.js +348 -0
- package/dist/client/sharing/useShareDialogController.js.map +1 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +21 -0
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/tool-display.d.ts +16 -0
- package/dist/client/tool-display.d.ts.map +1 -1
- package/dist/client/tool-display.js +52 -0
- package/dist/client/tool-display.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/client/use-agent-engine-configured.d.ts +3 -2
- package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
- package/dist/client/use-agent-engine-configured.js +7 -19
- package/dist/client/use-agent-engine-configured.js.map +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +21 -8
- package/dist/client/use-chat-threads.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.d.ts +4 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +5 -1
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp-client/oauth-routes.d.ts +5 -0
- package/dist/mcp-client/oauth-routes.d.ts.map +1 -1
- package/dist/mcp-client/oauth-routes.js +53 -14
- package/dist/mcp-client/oauth-routes.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +12 -12
- package/dist/provider-api/actions/provider-api.d.ts +11 -11
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +5 -1
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/secrets/routes.d.ts +6 -6
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/realtime-voice.d.ts.map +1 -1
- package/dist/server/realtime-voice.js +2 -2
- package/dist/server/realtime-voice.js.map +1 -1
- package/dist/styles/agent-native.css +0 -24
- package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/dist/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
- package/dist/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/dist/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
- package/dist/templates/chat/app/design-system.ts +3 -0
- package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/dist/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
- package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/dist/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
- package/dist/templates/default/app/design-system.ts +3 -0
- package/dist/templates/default/app/root.tsx +5 -2
- package/dist/templates/default/package.json +1 -0
- package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/dist/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/dist/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
- package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
- 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 +11 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +144 -2
- package/dist/vite/client.js.map +1 -1
- package/docs/content/custom-design-system.mdx +445 -0
- package/docs/content/toolkit-ui.mdx +16 -0
- package/package.json +2 -2
- package/src/a2a/client.ts +32 -10
- package/src/a2a/types.ts +1 -0
- package/src/agent/types.ts +1 -1
- 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 +99 -108
- package/src/client/AssistantChat.tsx +30 -13
- package/src/client/CommandMenu.tsx +68 -178
- package/src/client/RunStuckBanner.tsx +39 -47
- package/src/client/agent-chat-adapter.ts +3 -1
- package/src/client/app-providers.tsx +1 -1
- package/src/client/chat/action-chat-ui-surface.tsx +32 -0
- package/src/client/chat/message-components.tsx +169 -18
- package/src/client/chat/tool-call-display.tsx +50 -14
- package/src/client/chat/widgets/InlineExtensionWidget.tsx +13 -40
- package/src/client/chat/widgets/builtin-tool-renderers.tsx +7 -3
- package/src/client/components/ui/message-scroller.tsx +15 -1
- package/src/client/conversation/AgentConversation.tsx +12 -1
- package/src/client/error-capture.ts +2 -6
- package/src/client/i18n.tsx +22 -0
- package/src/client/index.ts +17 -0
- package/src/client/org/TeamPage.tsx +257 -153
- package/src/client/progress/RunsTray.tsx +89 -88
- package/src/client/resources/McpConnectionSuggestion.tsx +25 -16
- package/src/client/resources/McpIntegrationDialog.tsx +34 -13
- package/src/client/resources/ResourcesPanel.tsx +5 -1
- package/src/client/resources/mcp-integration-catalog.ts +20 -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/DemoModeSection.tsx +6 -18
- package/src/client/settings/SecretsSection.tsx +97 -52
- package/src/client/settings/SettingsPanel.tsx +217 -252
- package/src/client/settings/SettingsTabsPage.tsx +23 -2
- package/src/client/settings/VoiceTranscriptionSection.tsx +7 -18
- package/src/client/settings/index.ts +7 -0
- package/src/client/settings/useSettingsPanelController.ts +155 -0
- package/src/client/setup-connections/BuilderConnectCard.tsx +116 -51
- package/src/client/setup-connections/index.ts +10 -0
- package/src/client/setup-connections/useBuilderConnectCardController.ts +82 -0
- package/src/client/sharing/ShareButton.tsx +64 -586
- package/src/client/sharing/ShareDialog.tsx +299 -633
- package/src/client/sharing/index.ts +42 -0
- package/src/client/sharing/share-controller-helpers.ts +318 -0
- package/src/client/sharing/useShareButtonController.ts +600 -0
- package/src/client/sharing/useShareDialogController.ts +559 -0
- package/src/client/sse-event-processor.ts +23 -0
- package/src/client/tool-display.ts +71 -0
- package/src/client/transcription/use-live-transcription.ts +64 -45
- package/src/client/use-agent-engine-configured.ts +12 -19
- package/src/client/use-chat-threads.ts +33 -12
- 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 +6 -1
- package/src/mcp-client/oauth-routes.ts +61 -14
- package/src/scripts/call-agent.ts +5 -1
- package/src/server/realtime-voice.ts +5 -2
- package/src/styles/agent-native.css +0 -24
- package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/src/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +22 -2
- package/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/src/templates/chat/app/components/ui/toolkit-provider.tsx +6 -1
- package/src/templates/chat/app/design-system.ts +3 -0
- package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/src/templates/default/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +22 -2
- package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +28 -4
- package/src/templates/default/app/components/ui/toolkit-provider.tsx +10 -0
- package/src/templates/default/app/design-system.ts +3 -0
- package/src/templates/default/app/root.tsx +5 -2
- package/src/templates/default/package.json +1 -0
- package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/src/templates/headless/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +37 -2
- package/src/templates/workspace-core/.agents/skills/customizing-agent-native/SKILL.md +86 -11
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +22 -2
- package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +28 -4
- 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 +205 -1
- package/corpus/templates/analytics/app/components/ui/calendar.tsx +0 -70
- package/corpus/templates/analytics/app/components/ui/chart.tsx +0 -386
- package/corpus/templates/calendar/app/components/ui/sonner.tsx +0 -58
- 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 -142
- package/corpus/templates/crm/.agents/skills/crm/SKILL.md +0 -128
- package/corpus/templates/crm/.agents/skills/customizing-agent-native/SKILL.md +0 -145
- 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 -83
- package/corpus/templates/crm/app/components/crm/CrmSignalsPanel.tsx +0 -225
- package/corpus/templates/crm/app/components/crm/IntelligenceSettings.tsx +0 -413
- 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 -367
- package/corpus/templates/crm/app/components/crm/SavedViewDataProgram.tsx +0 -92
- package/corpus/templates/crm/app/components/crm/Surface.tsx +0 -96
- 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/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 -88
- 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
- package/corpus/templates/forms/app/components/ui/calendar.tsx +0 -214
- package/corpus/templates/forms/app/components/ui/chart.tsx +0 -379
- package/corpus/templates/forms/app/components/ui/command.tsx +0 -153
- package/corpus/templates/forms/app/components/ui/context-menu.tsx +0 -198
- package/corpus/templates/forms/app/components/ui/menubar.tsx +0 -254
- package/corpus/templates/macros/app/components/ui/menubar.tsx +0 -238
- package/corpus/templates/macros/app/components/ui/progress.tsx +0 -26
- package/corpus/templates/mail/app/components/ui/calendar.tsx +0 -211
- package/corpus/templates/mail/app/components/ui/chart.tsx +0 -379
- package/corpus/templates/mail/app/components/ui/command.tsx +0 -153
- package/corpus/templates/mail/app/components/ui/context-menu.tsx +0 -198
- package/corpus/templates/mail/app/components/ui/menubar.tsx +0 -254
- package/corpus/templates/tasks/app/components/ui/accordion.tsx +0 -56
- package/corpus/templates/tasks/app/components/ui/aspect-ratio.tsx +0 -5
- package/corpus/templates/tasks/app/components/ui/breadcrumb.tsx +0 -115
- package/corpus/templates/tasks/app/components/ui/calendar.tsx +0 -70
- package/corpus/templates/tasks/app/components/ui/carousel.tsx +0 -260
- package/corpus/templates/tasks/app/components/ui/chart.tsx +0 -379
- package/corpus/templates/tasks/app/components/ui/form.tsx +0 -177
- package/corpus/templates/tasks/app/components/ui/hover-card.tsx +0 -27
- package/corpus/templates/tasks/app/components/ui/input-otp.tsx +0 -69
- package/corpus/templates/tasks/app/components/ui/menubar.tsx +0 -254
- package/corpus/templates/tasks/app/components/ui/navigation-menu.tsx +0 -128
- package/corpus/templates/tasks/app/components/ui/pagination.tsx +0 -121
- package/corpus/templates/tasks/app/components/ui/resizable.tsx +0 -43
- package/corpus/templates/tasks/app/components/ui/sidebar.tsx +0 -782
- package/corpus/templates/tasks/app/components/ui/toggle.tsx +0 -43
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/sharing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC","sourcesContent":["export { ShareDialog, type ShareDialogProps } from \"./ShareDialog.js\";\nexport { ShareButton, type ShareButtonProps } from \"./ShareButton.js\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/sharing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,wBAAwB,GASzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,wBAAwB,GAUzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,8BAA8B,EAC9B,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,GAMd,MAAM,+BAA+B,CAAC","sourcesContent":["export { ShareDialog, type ShareDialogProps } from \"./ShareDialog.js\";\nexport { ShareButton, type ShareButtonProps } from \"./ShareButton.js\";\nexport {\n useShareButtonController,\n type ShareButtonController,\n type ShareButtonControllerOptions,\n type ShareButtonOrgMember,\n type ShareButtonOrgMemberSearch,\n type ShareButtonRole,\n type ShareButtonShare,\n type ShareButtonSharesResponse,\n type ShareButtonVisibility,\n} from \"./useShareButtonController.js\";\nexport {\n useShareDialogController,\n type ResourceShare,\n type ResourceSharesResponse,\n type ShareDialogController,\n type ShareDialogControllerOptions,\n type ShareDialogPerson,\n type ShareDialogTab,\n type ShareOption,\n type ShareRole,\n type ShareVisibility,\n} from \"./useShareDialogController.js\";\nexport {\n createShareQueryKey,\n createShareQueryParams,\n extractShareErrorMessage,\n fetchOrgMemberPage,\n mergeOrgMembers,\n normalizeOrgMembers,\n optimisticallyUpdateShareCache,\n rollbackShareCache,\n useShareMutationGuard,\n useShareMutations,\n useShareOrgMemberSearch,\n useShareQuery,\n type OrgMemberPage,\n type ShareOrgMember,\n type ShareOrgMemberSearchResult,\n type ShareQueryKey,\n type ShareQueryParams,\n} from \"./share-controller-helpers.js\";\n"]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { type QueryClient } from "@tanstack/react-query";
|
|
2
|
+
import { useActionQuery } from "../use-action.js";
|
|
3
|
+
export interface ShareQueryParams {
|
|
4
|
+
resourceType: string;
|
|
5
|
+
resourceId: string;
|
|
6
|
+
}
|
|
7
|
+
export type ShareQueryKey = readonly [
|
|
8
|
+
"action",
|
|
9
|
+
"list-resource-shares",
|
|
10
|
+
ShareQueryParams
|
|
11
|
+
];
|
|
12
|
+
export interface ShareOrgMember {
|
|
13
|
+
email: string;
|
|
14
|
+
name?: string | null;
|
|
15
|
+
role?: string | null;
|
|
16
|
+
joinedAt?: number | null;
|
|
17
|
+
}
|
|
18
|
+
export interface ShareOrgMemberSearchResult {
|
|
19
|
+
members: ShareOrgMember[];
|
|
20
|
+
isLoading: boolean;
|
|
21
|
+
isLoadingMore: boolean;
|
|
22
|
+
hasMore: boolean;
|
|
23
|
+
error: boolean;
|
|
24
|
+
loadMore: () => void;
|
|
25
|
+
}
|
|
26
|
+
export interface OrgMemberPage {
|
|
27
|
+
members: ShareOrgMember[];
|
|
28
|
+
hasMore: boolean;
|
|
29
|
+
nextOffset: number | null;
|
|
30
|
+
}
|
|
31
|
+
export declare const DEFAULT_MEMBER_SUGGESTION_LIMIT = 25;
|
|
32
|
+
export declare const DEFAULT_MEMBER_SEARCH_DEBOUNCE_MS = 140;
|
|
33
|
+
export declare function createShareQueryParams(resourceType: string, resourceId: string): ShareQueryParams;
|
|
34
|
+
export declare function createShareQueryKey(params: ShareQueryParams): ShareQueryKey;
|
|
35
|
+
export declare function useShareQuery<TResponse>(resourceType: string, resourceId: string): {
|
|
36
|
+
params: ShareQueryParams;
|
|
37
|
+
queryKey: ShareQueryKey;
|
|
38
|
+
query: ReturnType<typeof useActionQuery<TResponse>>;
|
|
39
|
+
queryClient: QueryClient;
|
|
40
|
+
};
|
|
41
|
+
export declare function useShareMutations(): {
|
|
42
|
+
setVisibility: import("@tanstack/react-query").UseMutationResult<any, Error, Record<string, any>, unknown>;
|
|
43
|
+
share: import("@tanstack/react-query").UseMutationResult<any, Error, Record<string, any>, unknown>;
|
|
44
|
+
unshare: import("@tanstack/react-query").UseMutationResult<any, Error, Record<string, any>, unknown>;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Apply an optimistic change and return the exact cache value to restore if
|
|
48
|
+
* the action fails. Keeping this snapshot at the mutation boundary prevents a
|
|
49
|
+
* stale request from restoring a newer optimistic result.
|
|
50
|
+
*/
|
|
51
|
+
export declare function optimisticallyUpdateShareCache<TData>(queryClient: QueryClient, queryKey: ShareQueryKey, updater: (previous: TData | undefined) => TData | undefined): TData | undefined;
|
|
52
|
+
export declare function rollbackShareCache<TData>(queryClient: QueryClient, queryKey: ShareQueryKey, previous: TData | undefined): void;
|
|
53
|
+
export declare function useShareMutationGuard(): {
|
|
54
|
+
begin: () => number;
|
|
55
|
+
isLatest: (requestId: number) => boolean;
|
|
56
|
+
};
|
|
57
|
+
export declare function fetchOrgMemberPage(options: {
|
|
58
|
+
search?: string;
|
|
59
|
+
limit?: number;
|
|
60
|
+
offset?: number;
|
|
61
|
+
signal?: AbortSignal;
|
|
62
|
+
}): Promise<OrgMemberPage>;
|
|
63
|
+
export declare function useShareOrgMemberSearch(query: string, enabled: boolean, options?: {
|
|
64
|
+
limit?: number;
|
|
65
|
+
debounceMs?: number;
|
|
66
|
+
}): ShareOrgMemberSearchResult;
|
|
67
|
+
export declare function normalizeOrgMembers(value: unknown): ShareOrgMember[];
|
|
68
|
+
export declare function mergeOrgMembers(existing: ShareOrgMember[], next: ShareOrgMember[]): ShareOrgMember[];
|
|
69
|
+
export declare function extractShareErrorMessage(error: unknown): string;
|
|
70
|
+
//# sourceMappingURL=share-controller-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share-controller-helpers.d.ts","sourceRoot":"","sources":["../../../src/client/sharing/share-controller-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { agentNativePath } from "../api-path.js";
|
|
4
|
+
import { useActionMutation, useActionQuery } from "../use-action.js";
|
|
5
|
+
export const DEFAULT_MEMBER_SUGGESTION_LIMIT = 25;
|
|
6
|
+
export const DEFAULT_MEMBER_SEARCH_DEBOUNCE_MS = 140;
|
|
7
|
+
export function createShareQueryParams(resourceType, resourceId) {
|
|
8
|
+
return { resourceType, resourceId };
|
|
9
|
+
}
|
|
10
|
+
export function createShareQueryKey(params) {
|
|
11
|
+
return ["action", "list-resource-shares", params];
|
|
12
|
+
}
|
|
13
|
+
export function useShareQuery(resourceType, resourceId) {
|
|
14
|
+
const queryClient = useQueryClient();
|
|
15
|
+
const params = useMemo(() => createShareQueryParams(resourceType, resourceId), [resourceId, resourceType]);
|
|
16
|
+
const queryKey = useMemo(() => createShareQueryKey(params), [params]);
|
|
17
|
+
const query = useActionQuery("list-resource-shares", params);
|
|
18
|
+
return { params, queryKey, query, queryClient };
|
|
19
|
+
}
|
|
20
|
+
export function useShareMutations() {
|
|
21
|
+
return {
|
|
22
|
+
setVisibility: useActionMutation("set-resource-visibility"),
|
|
23
|
+
share: useActionMutation("share-resource"),
|
|
24
|
+
unshare: useActionMutation("unshare-resource"),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Apply an optimistic change and return the exact cache value to restore if
|
|
29
|
+
* the action fails. Keeping this snapshot at the mutation boundary prevents a
|
|
30
|
+
* stale request from restoring a newer optimistic result.
|
|
31
|
+
*/
|
|
32
|
+
export function optimisticallyUpdateShareCache(queryClient, queryKey, updater) {
|
|
33
|
+
const previous = queryClient.getQueryData(queryKey);
|
|
34
|
+
const next = updater(previous);
|
|
35
|
+
if (next === undefined) {
|
|
36
|
+
queryClient.removeQueries({ queryKey, exact: true });
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
queryClient.setQueryData(queryKey, next);
|
|
40
|
+
}
|
|
41
|
+
return previous;
|
|
42
|
+
}
|
|
43
|
+
export function rollbackShareCache(queryClient, queryKey, previous) {
|
|
44
|
+
if (previous === undefined) {
|
|
45
|
+
queryClient.removeQueries({ queryKey, exact: true });
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
queryClient.setQueryData(queryKey, previous);
|
|
49
|
+
}
|
|
50
|
+
export function useShareMutationGuard() {
|
|
51
|
+
const latestRequest = useRef(0);
|
|
52
|
+
const begin = useCallback(() => {
|
|
53
|
+
latestRequest.current += 1;
|
|
54
|
+
return latestRequest.current;
|
|
55
|
+
}, []);
|
|
56
|
+
const isLatest = useCallback((requestId) => requestId === latestRequest.current, []);
|
|
57
|
+
return { begin, isLatest };
|
|
58
|
+
}
|
|
59
|
+
export async function fetchOrgMemberPage(options) {
|
|
60
|
+
const params = new URLSearchParams();
|
|
61
|
+
const search = options.search?.trim();
|
|
62
|
+
if (search)
|
|
63
|
+
params.set("search", search);
|
|
64
|
+
if (options.limit !== undefined)
|
|
65
|
+
params.set("limit", String(options.limit));
|
|
66
|
+
if (options.offset !== undefined) {
|
|
67
|
+
params.set("offset", String(options.offset));
|
|
68
|
+
}
|
|
69
|
+
const query = params.toString();
|
|
70
|
+
const response = await fetch(`${agentNativePath("/_agent-native/org/members")}${query ? `?${query}` : ""}`, { credentials: "include", signal: options.signal });
|
|
71
|
+
if (!response.ok)
|
|
72
|
+
throw new Error("Could not load people");
|
|
73
|
+
const result = (await response.json());
|
|
74
|
+
return {
|
|
75
|
+
members: normalizeOrgMembers(result?.members),
|
|
76
|
+
hasMore: result?.hasMore === true,
|
|
77
|
+
nextOffset: typeof result?.nextOffset === "number" ? result.nextOffset : null,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export function useShareOrgMemberSearch(query, enabled, options = {}) {
|
|
81
|
+
const search = query.trim();
|
|
82
|
+
const limit = options.limit;
|
|
83
|
+
const debounceMs = options.debounceMs ?? DEFAULT_MEMBER_SEARCH_DEBOUNCE_MS;
|
|
84
|
+
const [members, setMembers] = useState([]);
|
|
85
|
+
const [nextOffset, setNextOffset] = useState(null);
|
|
86
|
+
const [hasMore, setHasMore] = useState(false);
|
|
87
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
88
|
+
const [isLoadingMore, setIsLoadingMore] = useState(false);
|
|
89
|
+
const [error, setError] = useState(false);
|
|
90
|
+
const requestIdRef = useRef(0);
|
|
91
|
+
const abortRef = useRef(null);
|
|
92
|
+
const fetchPage = useCallback((offset, append) => {
|
|
93
|
+
if (!enabled)
|
|
94
|
+
return;
|
|
95
|
+
const requestId = ++requestIdRef.current;
|
|
96
|
+
abortRef.current?.abort();
|
|
97
|
+
const controller = new AbortController();
|
|
98
|
+
abortRef.current = controller;
|
|
99
|
+
if (append) {
|
|
100
|
+
setIsLoadingMore(true);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
setIsLoading(true);
|
|
104
|
+
setMembers([]);
|
|
105
|
+
setNextOffset(null);
|
|
106
|
+
setHasMore(false);
|
|
107
|
+
}
|
|
108
|
+
setError(false);
|
|
109
|
+
fetchOrgMemberPage({
|
|
110
|
+
search,
|
|
111
|
+
limit,
|
|
112
|
+
offset,
|
|
113
|
+
signal: controller.signal,
|
|
114
|
+
})
|
|
115
|
+
.then((result) => {
|
|
116
|
+
if (controller.signal.aborted || requestId !== requestIdRef.current)
|
|
117
|
+
return;
|
|
118
|
+
setMembers((previous) => append ? mergeOrgMembers(previous, result.members) : result.members);
|
|
119
|
+
setHasMore(result.hasMore);
|
|
120
|
+
setNextOffset(result.nextOffset);
|
|
121
|
+
})
|
|
122
|
+
.catch(() => {
|
|
123
|
+
if (controller.signal.aborted || requestId !== requestIdRef.current)
|
|
124
|
+
return;
|
|
125
|
+
setError(true);
|
|
126
|
+
setHasMore(false);
|
|
127
|
+
setNextOffset(null);
|
|
128
|
+
if (!append)
|
|
129
|
+
setMembers([]);
|
|
130
|
+
})
|
|
131
|
+
.finally(() => {
|
|
132
|
+
if (controller.signal.aborted || requestId !== requestIdRef.current)
|
|
133
|
+
return;
|
|
134
|
+
if (append)
|
|
135
|
+
setIsLoadingMore(false);
|
|
136
|
+
else
|
|
137
|
+
setIsLoading(false);
|
|
138
|
+
});
|
|
139
|
+
}, [enabled, limit, search]);
|
|
140
|
+
useEffect(() => {
|
|
141
|
+
if (!enabled) {
|
|
142
|
+
abortRef.current?.abort();
|
|
143
|
+
setMembers([]);
|
|
144
|
+
setNextOffset(null);
|
|
145
|
+
setHasMore(false);
|
|
146
|
+
setIsLoading(false);
|
|
147
|
+
setIsLoadingMore(false);
|
|
148
|
+
setError(false);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const delay = search ? debounceMs : 0;
|
|
152
|
+
if (delay === 0) {
|
|
153
|
+
fetchPage(0, false);
|
|
154
|
+
return () => abortRef.current?.abort();
|
|
155
|
+
}
|
|
156
|
+
const timeout = setTimeout(() => fetchPage(0, false), delay);
|
|
157
|
+
return () => {
|
|
158
|
+
clearTimeout(timeout);
|
|
159
|
+
abortRef.current?.abort();
|
|
160
|
+
};
|
|
161
|
+
}, [debounceMs, enabled, fetchPage, search]);
|
|
162
|
+
const loadMore = useCallback(() => {
|
|
163
|
+
if (!enabled || !hasMore || nextOffset === null)
|
|
164
|
+
return;
|
|
165
|
+
if (isLoading || isLoadingMore)
|
|
166
|
+
return;
|
|
167
|
+
fetchPage(nextOffset, true);
|
|
168
|
+
}, [enabled, fetchPage, hasMore, isLoading, isLoadingMore, nextOffset]);
|
|
169
|
+
return { members, isLoading, isLoadingMore, hasMore, error, loadMore };
|
|
170
|
+
}
|
|
171
|
+
export function normalizeOrgMembers(value) {
|
|
172
|
+
if (!Array.isArray(value))
|
|
173
|
+
return [];
|
|
174
|
+
return value
|
|
175
|
+
.map((member) => {
|
|
176
|
+
if (!member || typeof member !== "object")
|
|
177
|
+
return null;
|
|
178
|
+
const value = member;
|
|
179
|
+
if (typeof value.email !== "string" || !value.email)
|
|
180
|
+
return null;
|
|
181
|
+
return {
|
|
182
|
+
email: value.email,
|
|
183
|
+
name: typeof value.name === "string" ? value.name : null,
|
|
184
|
+
role: typeof value.role === "string" ? value.role : null,
|
|
185
|
+
joinedAt: typeof value.joinedAt === "number"
|
|
186
|
+
? value.joinedAt
|
|
187
|
+
: typeof value.joined_at === "number"
|
|
188
|
+
? value.joined_at
|
|
189
|
+
: null,
|
|
190
|
+
};
|
|
191
|
+
})
|
|
192
|
+
.filter((member) => member !== null);
|
|
193
|
+
}
|
|
194
|
+
export function mergeOrgMembers(existing, next) {
|
|
195
|
+
const seen = new Set(existing.map((member) => member.email.toLowerCase()));
|
|
196
|
+
const merged = [...existing];
|
|
197
|
+
for (const member of next) {
|
|
198
|
+
const key = member.email.toLowerCase();
|
|
199
|
+
if (seen.has(key))
|
|
200
|
+
continue;
|
|
201
|
+
seen.add(key);
|
|
202
|
+
merged.push(member);
|
|
203
|
+
}
|
|
204
|
+
return merged;
|
|
205
|
+
}
|
|
206
|
+
export function extractShareErrorMessage(error) {
|
|
207
|
+
const fallback = "Could not update sharing — please try again.";
|
|
208
|
+
if (!error)
|
|
209
|
+
return fallback;
|
|
210
|
+
const raw = error instanceof Error
|
|
211
|
+
? error.message
|
|
212
|
+
: typeof error === "string"
|
|
213
|
+
? error
|
|
214
|
+
: typeof error === "object" && error !== null
|
|
215
|
+
? (error.error ??
|
|
216
|
+
error.message)
|
|
217
|
+
: null;
|
|
218
|
+
if (typeof raw !== "string" || !raw.trim())
|
|
219
|
+
return fallback;
|
|
220
|
+
if (raw.trim().toLowerCase() === "failed to fetch")
|
|
221
|
+
return fallback;
|
|
222
|
+
return raw.replace(/^Action\s+[\w-]+\s+failed:\s*/i, "") || fallback;
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=share-controller-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share-controller-helpers.js","sourceRoot":"","sources":["../../../src/client/sharing/share-controller-helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { useQueryClient, type QueryClient } from \"@tanstack/react-query\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { agentNativePath } from \"../api-path.js\";\nimport { useActionMutation, useActionQuery } from \"../use-action.js\";\n\nexport interface ShareQueryParams {\n resourceType: string;\n resourceId: string;\n}\n\nexport type ShareQueryKey = readonly [\n \"action\",\n \"list-resource-shares\",\n ShareQueryParams,\n];\n\nexport interface ShareOrgMember {\n email: string;\n name?: string | null;\n role?: string | null;\n joinedAt?: number | null;\n}\n\nexport interface ShareOrgMemberSearchResult {\n members: ShareOrgMember[];\n isLoading: boolean;\n isLoadingMore: boolean;\n hasMore: boolean;\n error: boolean;\n loadMore: () => void;\n}\n\nexport interface OrgMemberPage {\n members: ShareOrgMember[];\n hasMore: boolean;\n nextOffset: number | null;\n}\n\nexport const DEFAULT_MEMBER_SUGGESTION_LIMIT = 25;\nexport const DEFAULT_MEMBER_SEARCH_DEBOUNCE_MS = 140;\n\nexport function createShareQueryParams(\n resourceType: string,\n resourceId: string,\n): ShareQueryParams {\n return { resourceType, resourceId };\n}\n\nexport function createShareQueryKey(params: ShareQueryParams): ShareQueryKey {\n return [\"action\", \"list-resource-shares\", params];\n}\n\nexport function useShareQuery<TResponse>(\n resourceType: string,\n resourceId: string,\n): {\n params: ShareQueryParams;\n queryKey: ShareQueryKey;\n query: ReturnType<typeof useActionQuery<TResponse>>;\n queryClient: QueryClient;\n} {\n const queryClient = useQueryClient();\n const params = useMemo(\n () => createShareQueryParams(resourceType, resourceId),\n [resourceId, resourceType],\n );\n const queryKey = useMemo(() => createShareQueryKey(params), [params]);\n const query = useActionQuery<TResponse>(\"list-resource-shares\", params);\n return { params, queryKey, query, queryClient };\n}\n\nexport function useShareMutations() {\n return {\n setVisibility: useActionMutation(\"set-resource-visibility\"),\n share: useActionMutation(\"share-resource\"),\n unshare: useActionMutation(\"unshare-resource\"),\n };\n}\n\n/**\n * Apply an optimistic change and return the exact cache value to restore if\n * the action fails. Keeping this snapshot at the mutation boundary prevents a\n * stale request from restoring a newer optimistic result.\n */\nexport function optimisticallyUpdateShareCache<TData>(\n queryClient: QueryClient,\n queryKey: ShareQueryKey,\n updater: (previous: TData | undefined) => TData | undefined,\n): TData | undefined {\n const previous = queryClient.getQueryData<TData>(queryKey);\n const next = updater(previous);\n if (next === undefined) {\n queryClient.removeQueries({ queryKey, exact: true });\n } else {\n queryClient.setQueryData(queryKey, next);\n }\n return previous;\n}\n\nexport function rollbackShareCache<TData>(\n queryClient: QueryClient,\n queryKey: ShareQueryKey,\n previous: TData | undefined,\n): void {\n if (previous === undefined) {\n queryClient.removeQueries({ queryKey, exact: true });\n return;\n }\n queryClient.setQueryData(queryKey, previous);\n}\n\nexport function useShareMutationGuard() {\n const latestRequest = useRef(0);\n const begin = useCallback(() => {\n latestRequest.current += 1;\n return latestRequest.current;\n }, []);\n const isLatest = useCallback(\n (requestId: number) => requestId === latestRequest.current,\n [],\n );\n return { begin, isLatest };\n}\n\nexport async function fetchOrgMemberPage(options: {\n search?: string;\n limit?: number;\n offset?: number;\n signal?: AbortSignal;\n}): Promise<OrgMemberPage> {\n const params = new URLSearchParams();\n const search = options.search?.trim();\n if (search) params.set(\"search\", search);\n if (options.limit !== undefined) params.set(\"limit\", String(options.limit));\n if (options.offset !== undefined) {\n params.set(\"offset\", String(options.offset));\n }\n const query = params.toString();\n const response = await fetch(\n `${agentNativePath(\"/_agent-native/org/members\")}${query ? `?${query}` : \"\"}`,\n { credentials: \"include\", signal: options.signal },\n );\n if (!response.ok) throw new Error(\"Could not load people\");\n const result = (await response.json()) as {\n members?: unknown;\n hasMore?: unknown;\n nextOffset?: unknown;\n };\n return {\n members: normalizeOrgMembers(result?.members),\n hasMore: result?.hasMore === true,\n nextOffset:\n typeof result?.nextOffset === \"number\" ? result.nextOffset : null,\n };\n}\n\nexport function useShareOrgMemberSearch(\n query: string,\n enabled: boolean,\n options: {\n limit?: number;\n debounceMs?: number;\n } = {},\n): ShareOrgMemberSearchResult {\n const search = query.trim();\n const limit = options.limit;\n const debounceMs = options.debounceMs ?? DEFAULT_MEMBER_SEARCH_DEBOUNCE_MS;\n const [members, setMembers] = useState<ShareOrgMember[]>([]);\n const [nextOffset, setNextOffset] = useState<number | null>(null);\n const [hasMore, setHasMore] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const [error, setError] = useState(false);\n const requestIdRef = useRef(0);\n const abortRef = useRef<AbortController | null>(null);\n\n const fetchPage = useCallback(\n (offset: number, append: boolean) => {\n if (!enabled) return;\n const requestId = ++requestIdRef.current;\n abortRef.current?.abort();\n const controller = new AbortController();\n abortRef.current = controller;\n if (append) {\n setIsLoadingMore(true);\n } else {\n setIsLoading(true);\n setMembers([]);\n setNextOffset(null);\n setHasMore(false);\n }\n setError(false);\n\n fetchOrgMemberPage({\n search,\n limit,\n offset,\n signal: controller.signal,\n })\n .then((result) => {\n if (controller.signal.aborted || requestId !== requestIdRef.current)\n return;\n setMembers((previous) =>\n append ? mergeOrgMembers(previous, result.members) : result.members,\n );\n setHasMore(result.hasMore);\n setNextOffset(result.nextOffset);\n })\n .catch(() => {\n if (controller.signal.aborted || requestId !== requestIdRef.current)\n return;\n setError(true);\n setHasMore(false);\n setNextOffset(null);\n if (!append) setMembers([]);\n })\n .finally(() => {\n if (controller.signal.aborted || requestId !== requestIdRef.current)\n return;\n if (append) setIsLoadingMore(false);\n else setIsLoading(false);\n });\n },\n [enabled, limit, search],\n );\n\n useEffect(() => {\n if (!enabled) {\n abortRef.current?.abort();\n setMembers([]);\n setNextOffset(null);\n setHasMore(false);\n setIsLoading(false);\n setIsLoadingMore(false);\n setError(false);\n return;\n }\n const delay = search ? debounceMs : 0;\n if (delay === 0) {\n fetchPage(0, false);\n return () => abortRef.current?.abort();\n }\n const timeout = setTimeout(() => fetchPage(0, false), delay);\n return () => {\n clearTimeout(timeout);\n abortRef.current?.abort();\n };\n }, [debounceMs, enabled, fetchPage, search]);\n\n const loadMore = useCallback(() => {\n if (!enabled || !hasMore || nextOffset === null) return;\n if (isLoading || isLoadingMore) return;\n fetchPage(nextOffset, true);\n }, [enabled, fetchPage, hasMore, isLoading, isLoadingMore, nextOffset]);\n\n return { members, isLoading, isLoadingMore, hasMore, error, loadMore };\n}\n\nexport function normalizeOrgMembers(value: unknown): ShareOrgMember[] {\n if (!Array.isArray(value)) return [];\n return value\n .map((member: unknown): ShareOrgMember | null => {\n if (!member || typeof member !== \"object\") return null;\n const value = member as {\n email?: unknown;\n name?: unknown;\n role?: unknown;\n joinedAt?: unknown;\n joined_at?: unknown;\n };\n if (typeof value.email !== \"string\" || !value.email) return null;\n return {\n email: value.email,\n name: typeof value.name === \"string\" ? value.name : null,\n role: typeof value.role === \"string\" ? value.role : null,\n joinedAt:\n typeof value.joinedAt === \"number\"\n ? value.joinedAt\n : typeof value.joined_at === \"number\"\n ? value.joined_at\n : null,\n };\n })\n .filter((member): member is ShareOrgMember => member !== null);\n}\n\nexport function mergeOrgMembers(\n existing: ShareOrgMember[],\n next: ShareOrgMember[],\n): ShareOrgMember[] {\n const seen = new Set(existing.map((member) => member.email.toLowerCase()));\n const merged = [...existing];\n for (const member of next) {\n const key = member.email.toLowerCase();\n if (seen.has(key)) continue;\n seen.add(key);\n merged.push(member);\n }\n return merged;\n}\n\nexport function extractShareErrorMessage(error: unknown): string {\n const fallback = \"Could not update sharing — please try again.\";\n if (!error) return fallback;\n const raw =\n error instanceof Error\n ? error.message\n : typeof error === \"string\"\n ? error\n : typeof error === \"object\" && error !== null\n ? ((error as { error?: unknown; message?: unknown }).error ??\n (error as { message?: unknown }).message)\n : null;\n if (typeof raw !== \"string\" || !raw.trim()) return fallback;\n if (raw.trim().toLowerCase() === \"failed to fetch\") return fallback;\n return raw.replace(/^Action\\s+[\\w-]+\\s+failed:\\s*/i, \"\") || fallback;\n}\n"]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { useActionQuery } from "../use-action.js";
|
|
2
|
+
export type ShareButtonVisibility = "private" | "org" | "public";
|
|
3
|
+
export type ShareButtonRole = "viewer" | "editor" | "admin";
|
|
4
|
+
export interface ShareButtonShare {
|
|
5
|
+
id: string;
|
|
6
|
+
principalType: "user" | "org";
|
|
7
|
+
principalId: string;
|
|
8
|
+
displayName?: string | null;
|
|
9
|
+
role: ShareButtonRole;
|
|
10
|
+
}
|
|
11
|
+
export interface ShareButtonSharesResponse {
|
|
12
|
+
ownerEmail: string | null;
|
|
13
|
+
orgId: string | null;
|
|
14
|
+
visibility: ShareButtonVisibility | null;
|
|
15
|
+
role?: "owner" | ShareButtonRole;
|
|
16
|
+
shares: ShareButtonShare[];
|
|
17
|
+
policy?: {
|
|
18
|
+
allowPublic: boolean;
|
|
19
|
+
requireOrgMemberForUserShares: boolean;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface ShareButtonOrgMember {
|
|
23
|
+
email: string;
|
|
24
|
+
name?: string | null;
|
|
25
|
+
role?: string | null;
|
|
26
|
+
joinedAt?: number | null;
|
|
27
|
+
}
|
|
28
|
+
export interface ShareButtonOrgMemberSearch {
|
|
29
|
+
members: ShareButtonOrgMember[];
|
|
30
|
+
isLoading: boolean;
|
|
31
|
+
isLoadingMore: boolean;
|
|
32
|
+
hasMore: boolean;
|
|
33
|
+
error: boolean;
|
|
34
|
+
loadMore: () => void;
|
|
35
|
+
}
|
|
36
|
+
export interface ShareButtonControllerOptions {
|
|
37
|
+
resourceType: string;
|
|
38
|
+
resourceId: string;
|
|
39
|
+
defaultOpen?: boolean;
|
|
40
|
+
onOpenChange?: (open: boolean) => void;
|
|
41
|
+
shareTabs?: {
|
|
42
|
+
defaultValue?: string;
|
|
43
|
+
onValueChange?: (value: string) => void;
|
|
44
|
+
};
|
|
45
|
+
shareUrl?: string;
|
|
46
|
+
hideInSearchControl?: {
|
|
47
|
+
checked: boolean;
|
|
48
|
+
pending?: boolean;
|
|
49
|
+
onCheckedChange: (checked: boolean) => void | Promise<void>;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export interface ShareButtonController {
|
|
53
|
+
open: boolean;
|
|
54
|
+
handleOpenChange: (open: boolean) => void;
|
|
55
|
+
activeShareTab: string;
|
|
56
|
+
handleShareTabChange: (value: string) => void;
|
|
57
|
+
inviteEmail: string;
|
|
58
|
+
setInviteEmail: (email: string) => void;
|
|
59
|
+
sharesQuery: ReturnType<typeof useActionQuery<ShareButtonSharesResponse>>;
|
|
60
|
+
visibilityOverride: ShareButtonVisibility | null;
|
|
61
|
+
handleVisibilityChange: (visibility: ShareButtonVisibility) => Promise<void>;
|
|
62
|
+
data: ShareButtonSharesResponse | undefined;
|
|
63
|
+
policy: {
|
|
64
|
+
allowPublic: boolean;
|
|
65
|
+
requireOrgMemberForUserShares: boolean;
|
|
66
|
+
};
|
|
67
|
+
visibility: ShareButtonVisibility;
|
|
68
|
+
triggerVisibility: ShareButtonVisibility | null;
|
|
69
|
+
canManage: boolean;
|
|
70
|
+
role: ShareButtonRole;
|
|
71
|
+
setRole: (role: ShareButtonRole) => void;
|
|
72
|
+
notifyPeople: boolean;
|
|
73
|
+
setNotifyPeople: (notify: boolean) => void;
|
|
74
|
+
shareError: string | null;
|
|
75
|
+
setShareError: (error: string | null) => void;
|
|
76
|
+
suggestionsOpen: boolean;
|
|
77
|
+
setSuggestionsOpen: (open: boolean) => void;
|
|
78
|
+
inFlight: Set<string>;
|
|
79
|
+
memberSearch: ShareButtonOrgMemberSearch;
|
|
80
|
+
memberSuggestions: ShareButtonOrgMember[];
|
|
81
|
+
knownMembers: ShareButtonOrgMember[];
|
|
82
|
+
shares: ShareButtonShare[];
|
|
83
|
+
handleVisibility: (visibility: ShareButtonVisibility) => void;
|
|
84
|
+
handleHideInSearch: () => void;
|
|
85
|
+
handleAdd: () => void;
|
|
86
|
+
handleChangeRole: (share: ShareButtonShare, role: ShareButtonRole) => void;
|
|
87
|
+
handleRemove: (share: ShareButtonShare) => void;
|
|
88
|
+
handleDone: () => void;
|
|
89
|
+
}
|
|
90
|
+
export declare function useShareButtonController(options: ShareButtonControllerOptions): ShareButtonController;
|
|
91
|
+
//# sourceMappingURL=useShareButtonController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useShareButtonController.d.ts","sourceRoot":"","sources":["../../../src/client/sharing/useShareButtonController.ts"],"names":[],"mappings":"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"}
|