@agent-native/core 0.90.2 → 0.90.4
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/bin/agent-native.js +25 -3
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +21 -0
- package/corpus/core/bin/agent-native.js +25 -3
- package/corpus/core/docs/content/agent-native-toolkit.mdx +87 -80
- package/corpus/core/docs/content/locales/ar-SA/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/de-DE/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/es-ES/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/fr-FR/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/hi-IN/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/ja-JP/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/ko-KR/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/pt-BR/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/zh-CN/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/locales/zh-TW/agent-native-toolkit.mdx +89 -80
- package/corpus/core/docs/content/toolkit-agent-ux.mdx +43 -0
- package/corpus/core/docs/content/toolkit-app-adapters.mdx +9 -0
- package/corpus/core/docs/content/toolkit-collaboration-ui.mdx +12 -0
- package/corpus/core/docs/content/toolkit-collaboration.mdx +74 -0
- package/corpus/core/docs/content/toolkit-command-navigation.mdx +106 -0
- package/corpus/core/docs/content/toolkit-comments-review.mdx +98 -0
- package/corpus/core/docs/content/toolkit-history.mdx +95 -0
- package/corpus/core/docs/content/toolkit-observability.mdx +41 -0
- package/corpus/core/docs/content/toolkit-org-team.mdx +80 -0
- package/corpus/core/docs/content/toolkit-resources.mdx +57 -0
- package/corpus/core/docs/content/toolkit-settings.mdx +65 -0
- package/corpus/core/docs/content/toolkit-setup-connections.mdx +109 -0
- package/corpus/core/docs/content/toolkit-sharing-ui.mdx +18 -6
- package/corpus/core/docs/content/toolkit-sharing.mdx +81 -0
- package/corpus/core/docs/content/toolkit-shell-hooks.mdx +9 -0
- package/corpus/core/docs/content/toolkit-ui.mdx +9 -0
- package/corpus/core/package.json +35 -1
- package/corpus/core/src/agent/engine/ai-sdk-engine.ts +19 -1
- package/corpus/core/src/agent/engine/anthropic-engine.ts +25 -1
- package/corpus/core/src/agent/engine/index.ts +1 -0
- package/corpus/core/src/agent/engine/registry.ts +86 -18
- package/corpus/core/src/agent/production-agent.ts +37 -6
- package/corpus/core/src/cli/create.ts +35 -0
- package/corpus/core/src/cli/design-connect.ts +248 -0
- package/corpus/core/src/cli/index.ts +84 -7
- package/corpus/core/src/cli/workspacify.ts +34 -0
- package/corpus/core/src/client/command-navigation/index.ts +15 -0
- package/corpus/core/src/client/comments-review/index.ts +1 -0
- package/corpus/core/src/client/history/VersionHistoryPanel.tsx +175 -0
- package/corpus/core/src/client/history/index.ts +21 -0
- package/corpus/core/src/client/history/use-history.ts +114 -0
- package/corpus/core/src/client/index.ts +84 -9
- package/corpus/core/src/client/org/OrgSwitcher.tsx +6 -6
- package/corpus/core/src/client/org/RequireActiveOrg.tsx +2 -2
- package/corpus/core/src/client/org/TeamPage.tsx +3 -3
- package/corpus/core/src/client/org/hooks.ts +32 -0
- package/corpus/core/src/client/org/index.ts +30 -1
- package/corpus/core/src/client/org-team/index.ts +1 -0
- package/corpus/core/src/client/review/ReviewStatusBadge.tsx +39 -0
- package/corpus/core/src/client/review/ReviewThreadPanel.tsx +278 -0
- package/corpus/core/src/client/review/index.ts +30 -0
- package/corpus/core/src/client/review/use-review.ts +152 -0
- package/corpus/core/src/client/settings/index.ts +11 -1
- package/corpus/core/src/client/setup-connections/BuilderConnectCard.tsx +94 -0
- package/corpus/core/src/client/setup-connections/ProviderReadinessBadge.tsx +73 -0
- package/corpus/core/src/client/setup-connections/SetupConnectionsPage.tsx +94 -0
- package/corpus/core/src/client/setup-connections/index.ts +46 -0
- package/corpus/core/src/client/sharing/ShareButton.tsx +20 -14
- package/corpus/core/src/client/sharing/ShareDialog.tsx +3 -3
- package/corpus/core/src/command-navigation/actions.ts +100 -0
- package/corpus/core/src/command-navigation/index.ts +12 -0
- package/corpus/core/src/comments-review/index.ts +1 -0
- package/corpus/core/src/file-upload/builder.ts +24 -3
- package/corpus/core/src/file-upload/types.ts +3 -1
- package/corpus/core/src/history/actions/create-resource-version.ts +92 -0
- package/corpus/core/src/history/actions/get-resource-version.ts +60 -0
- package/corpus/core/src/history/actions/list-resource-history.ts +53 -0
- package/corpus/core/src/history/actions/list-resource-versions.ts +43 -0
- package/corpus/core/src/history/actions/restore-resource-version.ts +96 -0
- package/corpus/core/src/history/index.ts +26 -0
- package/corpus/core/src/history/registry.ts +111 -0
- package/corpus/core/src/history/store.ts +379 -0
- package/corpus/core/src/history/types.ts +69 -0
- package/corpus/core/src/index.ts +10 -0
- package/corpus/core/src/navigation/index.ts +170 -0
- package/corpus/core/src/org/index.ts +8 -0
- package/corpus/core/src/org/permissions.ts +30 -0
- package/corpus/core/src/org-team/index.ts +1 -0
- package/corpus/core/src/private-blob/registry.ts +1 -0
- package/corpus/core/src/review/actions/consume-review-feedback.ts +48 -0
- package/corpus/core/src/review/actions/create-review-comment.ts +107 -0
- package/corpus/core/src/review/actions/delete-review-comment.ts +67 -0
- package/corpus/core/src/review/actions/get-review-feedback.ts +54 -0
- package/corpus/core/src/review/actions/list-review-comments.ts +53 -0
- package/corpus/core/src/review/actions/reply-review-comment.ts +107 -0
- package/corpus/core/src/review/actions/resolve-review-thread.ts +67 -0
- package/corpus/core/src/review/actions/set-review-status.ts +58 -0
- package/corpus/core/src/review/index.ts +31 -0
- package/corpus/core/src/review/mentions.ts +44 -0
- package/corpus/core/src/review/registry.ts +111 -0
- package/corpus/core/src/review/store.ts +690 -0
- package/corpus/core/src/review/types.ts +97 -0
- package/corpus/core/src/server/action-discovery.ts +54 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +6 -0
- package/corpus/core/src/server/agent-engine-api-key-route.ts +5 -0
- package/corpus/core/src/server/credential-provider.ts +118 -0
- package/corpus/core/src/setup-connections/index.ts +89 -0
- package/corpus/core/src/setup-connections/onboarding.ts +47 -0
- package/corpus/core/src/transcription/builder-transcription.ts +9 -2
- package/corpus/core/src/vite/action-types-plugin.ts +52 -0
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +2 -1
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/analytics/app/global.css +22 -10
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +6 -1
- package/corpus/templates/analytics/app/i18n-data.ts +81 -13
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +2 -2
- package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +2 -2
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +528 -108
- package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +466 -183
- package/corpus/templates/analytics/changelog/2026-07-07-session-replays-load-sooner-show-clearer-activity-timelines-.md +6 -0
- package/corpus/templates/assets/actions/_preset-skeleton-validation.ts +11 -11
- package/corpus/templates/assets/actions/generate-image.ts +64 -28
- package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +1 -1
- package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +91 -74
- package/corpus/templates/assets/server/lib/generation.ts +29 -4
- package/corpus/templates/assets/server/lib/image-processing.ts +131 -0
- package/corpus/templates/brain/app/routes/settings.tsx +2 -2
- package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +24 -2
- package/corpus/templates/calendar/AGENTS.md +3 -0
- package/corpus/templates/calendar/actions/create-event.ts +8 -34
- package/corpus/templates/calendar/actions/event-action-helpers.ts +52 -0
- package/corpus/templates/calendar/actions/manage-event-draft.ts +7 -34
- package/corpus/templates/calendar/actions/update-event.ts +10 -23
- package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +79 -6
- package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +23 -0
- package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +59 -2
- package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +40 -1
- package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +154 -41
- package/corpus/templates/calendar/app/hooks/use-events.ts +6 -0
- package/corpus/templates/calendar/app/hooks/use-people.ts +55 -0
- package/corpus/templates/calendar/app/i18n/zh-TW.ts +4 -0
- package/corpus/templates/calendar/app/i18n-data.ts +40 -0
- package/corpus/templates/calendar/changelog/2026-07-07-guest-suggestions-now-find-coworkers-from-your-google-worksp.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-07-you-can-mark-event-guests-as-optional-while-inviting-them-or.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-07-zoom-stays-selected-after-connecting-it-from-a-draft-event.md +6 -0
- package/corpus/templates/calendar/server/handlers/events.ts +1 -0
- package/corpus/templates/calendar/server/lib/google-calendar.ts +4 -0
- package/corpus/templates/calendar/server/plugins/agent-chat.ts +1 -1
- package/corpus/templates/calendar/shared/api.ts +2 -0
- package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +29 -3
- package/corpus/templates/clips/actions/create-recording.ts +5 -1
- package/corpus/templates/clips/actions/finalize-recording.ts +140 -1
- package/corpus/templates/clips/actions/generate-workflow.ts +19 -8
- package/corpus/templates/clips/actions/get-clips-ai-prefs.ts +36 -0
- package/corpus/templates/clips/actions/import-loom-recording.ts +1 -0
- package/corpus/templates/clips/actions/lib/clips-ai-prefs.ts +28 -0
- package/corpus/templates/clips/actions/lib/ensure-seekable-video.ts +1 -0
- package/corpus/templates/clips/actions/regenerate-chapters.ts +21 -7
- package/corpus/templates/clips/actions/regenerate-summary.ts +26 -8
- package/corpus/templates/clips/actions/regenerate-title.ts +44 -7
- package/corpus/templates/clips/actions/request-transcript.ts +31 -0
- package/corpus/templates/clips/actions/set-thumbnail.ts +2 -0
- package/corpus/templates/clips/actions/update-clips-ai-prefs.ts +50 -0
- package/corpus/templates/clips/app/components/library/organization-switcher.tsx +2 -2
- package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +7 -2
- package/corpus/templates/clips/app/components/player/scrubber-position.ts +9 -0
- package/corpus/templates/clips/app/components/player/scrubber.tsx +5 -2
- package/corpus/templates/clips/app/components/player/share-dialog.tsx +69 -41
- package/corpus/templates/clips/app/components/player/video-player.tsx +38 -1
- package/corpus/templates/clips/app/components/sharing/share-ui.tsx +3 -3
- package/corpus/templates/clips/app/components/sharing/slack-share-hint.tsx +9 -19
- package/corpus/templates/clips/app/hooks/use-auto-title.ts +25 -10
- package/corpus/templates/clips/app/i18n/ar-SA.ts +28 -6
- package/corpus/templates/clips/app/i18n/de-DE.ts +28 -6
- package/corpus/templates/clips/app/i18n/en-US.ts +29 -6
- package/corpus/templates/clips/app/i18n/es-ES.ts +29 -6
- package/corpus/templates/clips/app/i18n/fr-FR.ts +30 -6
- package/corpus/templates/clips/app/i18n/hi-IN.ts +26 -6
- package/corpus/templates/clips/app/i18n/ja-JP.ts +27 -6
- package/corpus/templates/clips/app/i18n/ko-KR.ts +28 -6
- package/corpus/templates/clips/app/i18n/pt-BR.ts +28 -6
- package/corpus/templates/clips/app/i18n/zh-CN.ts +26 -6
- package/corpus/templates/clips/app/i18n/zh-TW.ts +25 -6
- package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +73 -0
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +1 -0
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +79 -5
- package/corpus/templates/clips/app/routes/record.tsx +21 -12
- package/corpus/templates/clips/changelog/2026-07-02-recordings-now-wait-for-storage-media-to-serve-before-finishing.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-a-pending-app-update-no-longer-blocks-screen-recording-updat.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-ai-tools-can-include-the-full-video-not-just-the-transcript-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-chrome-extension-recordings-keep-audio-after-refreshing-tab.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-clip-playback-progress-now-starts-and-finishes-at-the-right-times.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-clips-desktop-now-surfaces-meetings-and-dictate-directly-in-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-meeting-notes-now-explain-exactly-how-to-start-granola-style.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-meeting-start-alerts-now-include-separate-start-notes-and-jo.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-recordings-start-more-predictably-and-newly-saved-clips-refr.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-07-sharing-public-clips-now-stays-focused-on-the-normal-link-wi.md +6 -0
- package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -1
- package/corpus/templates/clips/chrome-extension/src/background.ts +18 -0
- package/corpus/templates/clips/chrome-extension/src/offscreen.ts +23 -8
- package/corpus/templates/clips/desktop/src/app.tsx +475 -108
- package/corpus/templates/clips/desktop/src/hooks/useMediaDevices.ts +19 -7
- package/corpus/templates/clips/desktop/src/lib/permissions.ts +2 -0
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +27 -21
- package/corpus/templates/clips/desktop/src/lib/updater.ts +25 -2
- package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +23 -22
- package/corpus/templates/clips/desktop/src/styles.css +167 -2
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +8 -1
- package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +3 -7
- package/corpus/templates/clips/desktop/src-tauri/src/tray_meetings.rs +5 -4
- package/corpus/templates/clips/server/routes/_agent-native/clips/user-prefs.put.ts +16 -8
- package/corpus/templates/clips/server/routes/api/recordings/[recordingId]/thumbnail.post.ts +1 -0
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +22 -5
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +8 -0
- package/corpus/templates/clips/server/routes/api/video/[recordingId].get.ts +13 -6
- package/corpus/templates/clips/shared/clips-ai-prefs.ts +81 -0
- package/corpus/templates/clips/shared/finalize-recovery.ts +12 -0
- package/corpus/templates/content/actions/delete-document.ts +337 -52
- package/corpus/templates/content/changelog/2026-07-07-permanently-deleting-trashed-databases-now-finishes-reliably.md +6 -0
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +16 -1
- package/corpus/templates/design/actions/add-localhost-screens.ts +1 -0
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +345 -11
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +89 -14
- package/corpus/templates/design/app/components/design/bridge-security.ts +7 -1
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +1 -1
- package/corpus/templates/design/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/design/app/i18n-data.ts +41 -0
- package/corpus/templates/design/changelog/2026-07-07-local-visual-edit-uses-live-app-iframes-for-click-to-edit-pr.md +6 -0
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +2 -2
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +15 -1
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/anthropic-engine.js +20 -1
- package/dist/agent/engine/anthropic-engine.js.map +1 -1
- package/dist/agent/engine/index.d.ts +1 -1
- package/dist/agent/engine/index.d.ts.map +1 -1
- package/dist/agent/engine/index.js +1 -1
- package/dist/agent/engine/index.js.map +1 -1
- package/dist/agent/engine/registry.d.ts +14 -0
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +78 -16
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +27 -7
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +31 -0
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/design-connect.d.ts.map +1 -1
- package/dist/cli/design-connect.js +186 -0
- package/dist/cli/design-connect.js.map +1 -1
- package/dist/cli/index.js +76 -9
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/workspacify.d.ts.map +1 -1
- package/dist/cli/workspacify.js +30 -0
- package/dist/cli/workspacify.js.map +1 -1
- package/dist/client/command-navigation/index.d.ts +4 -0
- package/dist/client/command-navigation/index.d.ts.map +1 -0
- package/dist/client/command-navigation/index.js +4 -0
- package/dist/client/command-navigation/index.js.map +1 -0
- package/dist/client/comments-review/index.d.ts +2 -0
- package/dist/client/comments-review/index.d.ts.map +1 -0
- package/dist/client/comments-review/index.js +2 -0
- package/dist/client/comments-review/index.js.map +1 -0
- package/dist/client/history/VersionHistoryPanel.d.ts +18 -0
- package/dist/client/history/VersionHistoryPanel.d.ts.map +1 -0
- package/dist/client/history/VersionHistoryPanel.js +31 -0
- package/dist/client/history/VersionHistoryPanel.js.map +1 -0
- package/dist/client/history/index.d.ts +3 -0
- package/dist/client/history/index.d.ts.map +1 -0
- package/dist/client/history/index.js +3 -0
- package/dist/client/history/index.js.map +1 -0
- package/dist/client/history/use-history.d.ts +58 -0
- package/dist/client/history/use-history.d.ts.map +1 -0
- package/dist/client/history/use-history.js +24 -0
- package/dist/client/history/use-history.js.map +1 -0
- package/dist/client/index.d.ts +6 -4
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +6 -4
- package/dist/client/index.js.map +1 -1
- package/dist/client/org/OrgSwitcher.js +5 -5
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/org/RequireActiveOrg.js +2 -2
- package/dist/client/org/RequireActiveOrg.js.map +1 -1
- package/dist/client/org/TeamPage.js +3 -3
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/org/hooks.d.ts +12 -1
- package/dist/client/org/hooks.d.ts.map +1 -1
- package/dist/client/org/hooks.js +15 -0
- package/dist/client/org/hooks.js.map +1 -1
- package/dist/client/org/index.d.ts +4 -2
- package/dist/client/org/index.d.ts.map +1 -1
- package/dist/client/org/index.js +3 -1
- package/dist/client/org/index.js.map +1 -1
- package/dist/client/org-team/index.d.ts +2 -0
- package/dist/client/org-team/index.d.ts.map +1 -0
- package/dist/client/org-team/index.js +2 -0
- package/dist/client/org-team/index.js.map +1 -0
- package/dist/client/review/ReviewStatusBadge.d.ts +7 -0
- package/dist/client/review/ReviewStatusBadge.d.ts.map +1 -0
- package/dist/client/review/ReviewStatusBadge.js +19 -0
- package/dist/client/review/ReviewStatusBadge.js.map +1 -0
- package/dist/client/review/ReviewThreadPanel.d.ts +20 -0
- package/dist/client/review/ReviewThreadPanel.d.ts.map +1 -0
- package/dist/client/review/ReviewThreadPanel.js +84 -0
- package/dist/client/review/ReviewThreadPanel.js.map +1 -0
- package/dist/client/review/index.d.ts +4 -0
- package/dist/client/review/index.d.ts.map +1 -0
- package/dist/client/review/index.js +4 -0
- package/dist/client/review/index.js.map +1 -0
- package/dist/client/review/use-review.d.ts +91 -0
- package/dist/client/review/use-review.d.ts.map +1 -0
- package/dist/client/review/use-review.js +30 -0
- package/dist/client/review/use-review.js.map +1 -0
- package/dist/client/settings/index.d.ts +1 -1
- package/dist/client/settings/index.d.ts.map +1 -1
- package/dist/client/settings/index.js +1 -1
- package/dist/client/settings/index.js.map +1 -1
- package/dist/client/setup-connections/BuilderConnectCard.d.ts +9 -0
- package/dist/client/setup-connections/BuilderConnectCard.d.ts.map +1 -0
- package/dist/client/setup-connections/BuilderConnectCard.js +25 -0
- package/dist/client/setup-connections/BuilderConnectCard.js.map +1 -0
- package/dist/client/setup-connections/ProviderReadinessBadge.d.ts +8 -0
- package/dist/client/setup-connections/ProviderReadinessBadge.d.ts.map +1 -0
- package/dist/client/setup-connections/ProviderReadinessBadge.js +32 -0
- package/dist/client/setup-connections/ProviderReadinessBadge.js.map +1 -0
- package/dist/client/setup-connections/SetupConnectionsPage.d.ts +17 -0
- package/dist/client/setup-connections/SetupConnectionsPage.d.ts.map +1 -0
- package/dist/client/setup-connections/SetupConnectionsPage.js +10 -0
- package/dist/client/setup-connections/SetupConnectionsPage.js.map +1 -0
- package/dist/client/setup-connections/index.d.ts +7 -0
- package/dist/client/setup-connections/index.d.ts.map +1 -0
- package/dist/client/setup-connections/index.js +7 -0
- package/dist/client/setup-connections/index.js.map +1 -0
- package/dist/client/sharing/ShareButton.d.ts +4 -4
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +13 -7
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/sharing/ShareDialog.js +3 -3
- package/dist/client/sharing/ShareDialog.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/command-navigation/actions.d.ts +25 -0
- package/dist/command-navigation/actions.d.ts.map +1 -0
- package/dist/command-navigation/actions.js +64 -0
- package/dist/command-navigation/actions.js.map +1 -0
- package/dist/command-navigation/index.d.ts +4 -0
- package/dist/command-navigation/index.d.ts.map +1 -0
- package/dist/command-navigation/index.js +4 -0
- package/dist/command-navigation/index.js.map +1 -0
- package/dist/comments-review/index.d.ts +2 -0
- package/dist/comments-review/index.d.ts.map +1 -0
- package/dist/comments-review/index.js +2 -0
- package/dist/comments-review/index.js.map +1 -0
- package/dist/file-upload/builder.d.ts.map +1 -1
- package/dist/file-upload/builder.js +18 -2
- package/dist/file-upload/builder.js.map +1 -1
- package/dist/file-upload/types.d.ts +3 -0
- package/dist/file-upload/types.d.ts.map +1 -1
- package/dist/file-upload/types.js.map +1 -1
- package/dist/history/actions/create-resource-version.d.ts +10 -0
- package/dist/history/actions/create-resource-version.d.ts.map +1 -0
- package/dist/history/actions/create-resource-version.js +68 -0
- package/dist/history/actions/create-resource-version.js.map +1 -0
- package/dist/history/actions/get-resource-version.d.ts +10 -0
- package/dist/history/actions/get-resource-version.d.ts.map +1 -0
- package/dist/history/actions/get-resource-version.js +38 -0
- package/dist/history/actions/get-resource-version.js.map +1 -0
- package/dist/history/actions/list-resource-history.d.ts +10 -0
- package/dist/history/actions/list-resource-history.d.ts.map +1 -0
- package/dist/history/actions/list-resource-history.js +45 -0
- package/dist/history/actions/list-resource-history.js.map +1 -0
- package/dist/history/actions/list-resource-versions.d.ts +10 -0
- package/dist/history/actions/list-resource-versions.d.ts.map +1 -0
- package/dist/history/actions/list-resource-versions.js +35 -0
- package/dist/history/actions/list-resource-versions.js.map +1 -0
- package/dist/history/actions/restore-resource-version.d.ts +11 -0
- package/dist/history/actions/restore-resource-version.d.ts.map +1 -0
- package/dist/history/actions/restore-resource-version.js +59 -0
- package/dist/history/actions/restore-resource-version.js.map +1 -0
- package/dist/history/index.d.ts +4 -0
- package/dist/history/index.d.ts.map +1 -0
- package/dist/history/index.js +3 -0
- package/dist/history/index.js.map +1 -0
- package/dist/history/registry.d.ts +10 -0
- package/dist/history/registry.d.ts.map +1 -0
- package/dist/history/registry.js +63 -0
- package/dist/history/registry.js.map +1 -0
- package/dist/history/store.d.ts +34 -0
- package/dist/history/store.d.ts.map +1 -0
- package/dist/history/store.js +290 -0
- package/dist/history/store.js.map +1 -0
- package/dist/history/types.d.ts +55 -0
- package/dist/history/types.d.ts.map +1 -0
- package/dist/history/types.js +2 -0
- package/dist/history/types.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/navigation/index.d.ts +53 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +105 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/observability/routes.d.ts +3 -3
- package/dist/org/index.d.ts +1 -0
- package/dist/org/index.d.ts.map +1 -1
- package/dist/org/index.js +1 -0
- package/dist/org/index.js.map +1 -1
- package/dist/org/permissions.d.ts +7 -0
- package/dist/org/permissions.d.ts.map +1 -0
- package/dist/org/permissions.js +21 -0
- package/dist/org/permissions.js.map +1 -0
- package/dist/org-team/index.d.ts +2 -0
- package/dist/org-team/index.d.ts.map +1 -0
- package/dist/org-team/index.js +2 -0
- package/dist/org-team/index.js.map +1 -0
- package/dist/private-blob/registry.d.ts.map +1 -1
- package/dist/private-blob/registry.js +1 -0
- package/dist/private-blob/registry.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/resources/handlers.d.ts +2 -2
- package/dist/review/actions/consume-review-feedback.d.ts +10 -0
- package/dist/review/actions/consume-review-feedback.d.ts.map +1 -0
- package/dist/review/actions/consume-review-feedback.js +35 -0
- package/dist/review/actions/consume-review-feedback.js.map +1 -0
- package/dist/review/actions/create-review-comment.d.ts +18 -0
- package/dist/review/actions/create-review-comment.d.ts.map +1 -0
- package/dist/review/actions/create-review-comment.js +81 -0
- package/dist/review/actions/create-review-comment.js.map +1 -0
- package/dist/review/actions/delete-review-comment.d.ts +11 -0
- package/dist/review/actions/delete-review-comment.d.ts.map +1 -0
- package/dist/review/actions/delete-review-comment.js +53 -0
- package/dist/review/actions/delete-review-comment.js.map +1 -0
- package/dist/review/actions/get-review-feedback.d.ts +10 -0
- package/dist/review/actions/get-review-feedback.d.ts.map +1 -0
- package/dist/review/actions/get-review-feedback.js +45 -0
- package/dist/review/actions/get-review-feedback.js.map +1 -0
- package/dist/review/actions/list-review-comments.d.ts +13 -0
- package/dist/review/actions/list-review-comments.d.ts.map +1 -0
- package/dist/review/actions/list-review-comments.js +44 -0
- package/dist/review/actions/list-review-comments.js.map +1 -0
- package/dist/review/actions/reply-review-comment.d.ts +16 -0
- package/dist/review/actions/reply-review-comment.d.ts.map +1 -0
- package/dist/review/actions/reply-review-comment.js +84 -0
- package/dist/review/actions/reply-review-comment.js.map +1 -0
- package/dist/review/actions/resolve-review-thread.d.ts +12 -0
- package/dist/review/actions/resolve-review-thread.d.ts.map +1 -0
- package/dist/review/actions/resolve-review-thread.js +49 -0
- package/dist/review/actions/resolve-review-thread.js.map +1 -0
- package/dist/review/actions/set-review-status.d.ts +9 -0
- package/dist/review/actions/set-review-status.d.ts.map +1 -0
- package/dist/review/actions/set-review-status.js +43 -0
- package/dist/review/actions/set-review-status.js.map +1 -0
- package/dist/review/index.d.ts +5 -0
- package/dist/review/index.d.ts.map +1 -0
- package/dist/review/index.js +4 -0
- package/dist/review/index.js.map +1 -0
- package/dist/review/mentions.d.ts +4 -0
- package/dist/review/mentions.d.ts.map +1 -0
- package/dist/review/mentions.js +39 -0
- package/dist/review/mentions.js.map +1 -0
- package/dist/review/registry.d.ts +10 -0
- package/dist/review/registry.d.ts.map +1 -0
- package/dist/review/registry.js +63 -0
- package/dist/review/registry.js.map +1 -0
- package/dist/review/store.d.ts +63 -0
- package/dist/review/store.d.ts.map +1 -0
- package/dist/review/store.js +561 -0
- package/dist/review/store.js.map +1 -0
- package/dist/review/types.d.ts +77 -0
- package/dist/review/types.d.ts.map +1 -0
- package/dist/review/types.js +2 -0
- package/dist/review/types.js.map +1 -0
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +54 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +5 -0
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts.map +1 -1
- package/dist/server/agent-engine-api-key-route.js +5 -0
- package/dist/server/agent-engine-api-key-route.js.map +1 -1
- package/dist/server/credential-provider.d.ts +28 -0
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +92 -0
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/setup-connections/index.d.ts +6 -0
- package/dist/setup-connections/index.d.ts.map +1 -0
- package/dist/setup-connections/index.js +6 -0
- package/dist/setup-connections/index.js.map +1 -0
- package/dist/setup-connections/onboarding.d.ts +14 -0
- package/dist/setup-connections/onboarding.d.ts.map +1 -0
- package/dist/setup-connections/onboarding.js +23 -0
- package/dist/setup-connections/onboarding.js.map +1 -0
- package/dist/transcription/builder-transcription.d.ts +1 -0
- package/dist/transcription/builder-transcription.d.ts.map +1 -1
- package/dist/transcription/builder-transcription.js +5 -2
- package/dist/transcription/builder-transcription.js.map +1 -1
- package/dist/vite/action-types-plugin.d.ts.map +1 -1
- package/dist/vite/action-types-plugin.js +52 -0
- package/dist/vite/action-types-plugin.js.map +1 -1
- package/docs/content/agent-native-toolkit.mdx +87 -80
- package/docs/content/locales/ar-SA/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/de-DE/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/es-ES/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/fr-FR/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/hi-IN/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/ja-JP/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/ko-KR/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/pt-BR/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/zh-CN/agent-native-toolkit.mdx +89 -80
- package/docs/content/locales/zh-TW/agent-native-toolkit.mdx +89 -80
- package/docs/content/toolkit-agent-ux.mdx +43 -0
- package/docs/content/toolkit-app-adapters.mdx +9 -0
- package/docs/content/toolkit-collaboration-ui.mdx +12 -0
- package/docs/content/toolkit-collaboration.mdx +74 -0
- package/docs/content/toolkit-command-navigation.mdx +106 -0
- package/docs/content/toolkit-comments-review.mdx +98 -0
- package/docs/content/toolkit-history.mdx +95 -0
- package/docs/content/toolkit-observability.mdx +41 -0
- package/docs/content/toolkit-org-team.mdx +80 -0
- package/docs/content/toolkit-resources.mdx +57 -0
- package/docs/content/toolkit-settings.mdx +65 -0
- package/docs/content/toolkit-setup-connections.mdx +109 -0
- package/docs/content/toolkit-sharing-ui.mdx +18 -6
- package/docs/content/toolkit-sharing.mdx +81 -0
- package/docs/content/toolkit-shell-hooks.mdx +9 -0
- package/docs/content/toolkit-ui.mdx +9 -0
- package/package.json +36 -2
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
ReviewComment,
|
|
3
|
+
ReviewCommentKind,
|
|
4
|
+
ReviewMention,
|
|
5
|
+
ReviewResolutionTarget,
|
|
6
|
+
ReviewStatus,
|
|
7
|
+
ReviewStatusEntry,
|
|
8
|
+
} from "../../review/types.js";
|
|
9
|
+
import { useActionMutation, useActionQuery } from "../use-action.js";
|
|
10
|
+
|
|
11
|
+
export interface ListReviewCommentsParams {
|
|
12
|
+
resourceType: string;
|
|
13
|
+
resourceId: string;
|
|
14
|
+
includeResolved?: boolean;
|
|
15
|
+
includeDeleted?: boolean;
|
|
16
|
+
targetId?: string | null;
|
|
17
|
+
limit?: number;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface ListReviewCommentsResult {
|
|
21
|
+
comments: ReviewComment[];
|
|
22
|
+
reviewStatus: ReviewStatusEntry | null;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface GetReviewFeedbackParams {
|
|
26
|
+
resourceType: string;
|
|
27
|
+
resourceId: string;
|
|
28
|
+
includeHumanTargeted?: boolean;
|
|
29
|
+
limit?: number;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface GetReviewFeedbackResult {
|
|
33
|
+
comments: ReviewComment[];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface CreateReviewCommentInput {
|
|
37
|
+
resourceType: string;
|
|
38
|
+
resourceId: string;
|
|
39
|
+
targetId?: string | null;
|
|
40
|
+
kind?: ReviewCommentKind;
|
|
41
|
+
anchor?: unknown | null;
|
|
42
|
+
body: string;
|
|
43
|
+
authorName?: string | null;
|
|
44
|
+
resolutionTarget?: ReviewResolutionTarget | null;
|
|
45
|
+
mentions?: ReviewMention[];
|
|
46
|
+
metadata?: Record<string, unknown>;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface ReplyReviewCommentInput {
|
|
50
|
+
resourceType: string;
|
|
51
|
+
resourceId: string;
|
|
52
|
+
commentId: string;
|
|
53
|
+
body: string;
|
|
54
|
+
authorName?: string | null;
|
|
55
|
+
resolutionTarget?: ReviewResolutionTarget | null;
|
|
56
|
+
mentions?: ReviewMention[];
|
|
57
|
+
metadata?: Record<string, unknown>;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface ResolveReviewThreadInput {
|
|
61
|
+
resourceType: string;
|
|
62
|
+
resourceId: string;
|
|
63
|
+
threadId?: string;
|
|
64
|
+
commentId?: string;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface DeleteReviewCommentInput {
|
|
68
|
+
resourceType: string;
|
|
69
|
+
resourceId: string;
|
|
70
|
+
commentId: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface ConsumeReviewFeedbackInput {
|
|
74
|
+
resourceType: string;
|
|
75
|
+
resourceId: string;
|
|
76
|
+
commentIds: string[];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface SetReviewStatusInput {
|
|
80
|
+
resourceType: string;
|
|
81
|
+
resourceId: string;
|
|
82
|
+
status: ReviewStatus;
|
|
83
|
+
note?: string | null;
|
|
84
|
+
metadata?: Record<string, unknown>;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function useReviewComments(
|
|
88
|
+
params: ListReviewCommentsParams,
|
|
89
|
+
options?: { enabled?: boolean },
|
|
90
|
+
) {
|
|
91
|
+
return useActionQuery<ListReviewCommentsResult>(
|
|
92
|
+
"list-review-comments",
|
|
93
|
+
params,
|
|
94
|
+
{
|
|
95
|
+
enabled:
|
|
96
|
+
options?.enabled ?? Boolean(params.resourceType && params.resourceId),
|
|
97
|
+
},
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export function useReviewFeedback(
|
|
102
|
+
params: GetReviewFeedbackParams,
|
|
103
|
+
options?: { enabled?: boolean },
|
|
104
|
+
) {
|
|
105
|
+
return useActionQuery<GetReviewFeedbackResult>(
|
|
106
|
+
"get-review-feedback",
|
|
107
|
+
params,
|
|
108
|
+
{
|
|
109
|
+
enabled:
|
|
110
|
+
options?.enabled ?? Boolean(params.resourceType && params.resourceId),
|
|
111
|
+
},
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export function useCreateReviewComment() {
|
|
116
|
+
return useActionMutation<ReviewComment, CreateReviewCommentInput>(
|
|
117
|
+
"create-review-comment",
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export function useReplyReviewComment() {
|
|
122
|
+
return useActionMutation<ReviewComment, ReplyReviewCommentInput>(
|
|
123
|
+
"reply-review-comment",
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export function useResolveReviewThread() {
|
|
128
|
+
return useActionMutation<
|
|
129
|
+
{ threadId: string; resolved: true; updatedCount: number },
|
|
130
|
+
ResolveReviewThreadInput
|
|
131
|
+
>("resolve-review-thread");
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export function useDeleteReviewComment() {
|
|
135
|
+
return useActionMutation<
|
|
136
|
+
{ commentId: string; deleted: true; updatedCount: number },
|
|
137
|
+
DeleteReviewCommentInput
|
|
138
|
+
>("delete-review-comment");
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export function useConsumeReviewFeedback() {
|
|
142
|
+
return useActionMutation<
|
|
143
|
+
{ consumedCommentIds: string[]; updatedCount: number },
|
|
144
|
+
ConsumeReviewFeedbackInput
|
|
145
|
+
>("consume-review-feedback");
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export function useSetReviewStatus() {
|
|
149
|
+
return useActionMutation<ReviewStatusEntry, SetReviewStatusInput>(
|
|
150
|
+
"set-review-status",
|
|
151
|
+
);
|
|
152
|
+
}
|
|
@@ -8,5 +8,15 @@ export {
|
|
|
8
8
|
type SettingsTabItem,
|
|
9
9
|
type SettingsTabsPageProps,
|
|
10
10
|
} from "./SettingsTabsPage.js";
|
|
11
|
-
export {
|
|
11
|
+
export {
|
|
12
|
+
openBuilderConnectPopup,
|
|
13
|
+
useBuilderConnectFlow,
|
|
14
|
+
useBuilderStatus,
|
|
15
|
+
withBuilderConnectTrackingParams,
|
|
16
|
+
type BuilderConnectFlow,
|
|
17
|
+
type BuilderConnectFlowOptions,
|
|
18
|
+
type BuilderConnectStartOptions,
|
|
19
|
+
type BuilderStatus,
|
|
20
|
+
type OpenBuilderConnectPopupOptions,
|
|
21
|
+
} from "./useBuilderStatus.js";
|
|
12
22
|
export { SecretsSection, type SecretsSectionProps } from "./SecretsSection.js";
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { IconCheck, IconLoader2, IconPlugConnected } from "@tabler/icons-react";
|
|
2
|
+
|
|
3
|
+
import { useBuilderConnectFlow } from "../settings/useBuilderStatus.js";
|
|
4
|
+
import { cn } from "../utils.js";
|
|
5
|
+
|
|
6
|
+
export interface BuilderConnectCardProps {
|
|
7
|
+
title?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
trackingSource?: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
onConnected?: (orgName: string | null) => void;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function BuilderConnectCard({
|
|
15
|
+
title = "Builder connect",
|
|
16
|
+
description = "Connect Builder for managed model access, browser automation, and workspace identity.",
|
|
17
|
+
trackingSource = "setup_connections_page",
|
|
18
|
+
className,
|
|
19
|
+
onConnected,
|
|
20
|
+
}: BuilderConnectCardProps) {
|
|
21
|
+
const flow = useBuilderConnectFlow({
|
|
22
|
+
trackingSource,
|
|
23
|
+
onConnected: ({ orgName }) => onConnected?.(orgName),
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const connectedLabel = flow.orgName
|
|
27
|
+
? `Connected to ${flow.orgName}`
|
|
28
|
+
: "Connected";
|
|
29
|
+
const statusLabel = !flow.hasFetchedStatus
|
|
30
|
+
? "Checking"
|
|
31
|
+
: flow.configured
|
|
32
|
+
? connectedLabel
|
|
33
|
+
: flow.builderEnabled
|
|
34
|
+
? "Ready to connect"
|
|
35
|
+
: "Project not configured";
|
|
36
|
+
|
|
37
|
+
return (
|
|
38
|
+
<section
|
|
39
|
+
className={cn(
|
|
40
|
+
"rounded-lg border border-border bg-background p-4 shadow-sm",
|
|
41
|
+
className,
|
|
42
|
+
)}
|
|
43
|
+
>
|
|
44
|
+
<div className="flex items-start gap-3">
|
|
45
|
+
<span
|
|
46
|
+
className={cn(
|
|
47
|
+
"mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border",
|
|
48
|
+
flow.configured
|
|
49
|
+
? "border-emerald-500/30 bg-emerald-500/10 text-emerald-600"
|
|
50
|
+
: "border-border bg-muted text-muted-foreground",
|
|
51
|
+
)}
|
|
52
|
+
>
|
|
53
|
+
{flow.configured ? (
|
|
54
|
+
<IconCheck className="size-4" />
|
|
55
|
+
) : (
|
|
56
|
+
<IconPlugConnected className="size-4" />
|
|
57
|
+
)}
|
|
58
|
+
</span>
|
|
59
|
+
<div className="min-w-0 flex-1">
|
|
60
|
+
<div className="flex flex-wrap items-center gap-2">
|
|
61
|
+
<h2 className="text-sm font-semibold text-foreground">{title}</h2>
|
|
62
|
+
<span className="rounded-md border border-border bg-muted px-1.5 py-0.5 text-[11px] font-medium text-muted-foreground">
|
|
63
|
+
{statusLabel}
|
|
64
|
+
</span>
|
|
65
|
+
</div>
|
|
66
|
+
<p className="mt-1 text-sm leading-5 text-muted-foreground">
|
|
67
|
+
{description}
|
|
68
|
+
</p>
|
|
69
|
+
{flow.error ? (
|
|
70
|
+
<p className="mt-2 text-xs text-destructive">{flow.error}</p>
|
|
71
|
+
) : null}
|
|
72
|
+
{!flow.configured ? (
|
|
73
|
+
<button
|
|
74
|
+
type="button"
|
|
75
|
+
onClick={() => flow.start()}
|
|
76
|
+
disabled={
|
|
77
|
+
flow.connecting ||
|
|
78
|
+
(!flow.builderEnabled && flow.hasFetchedStatus)
|
|
79
|
+
}
|
|
80
|
+
className="mt-3 inline-flex h-8 items-center gap-2 rounded-md border border-border bg-foreground px-3 text-xs font-medium text-background transition-colors hover:bg-foreground/90 disabled:cursor-not-allowed disabled:opacity-60"
|
|
81
|
+
>
|
|
82
|
+
{flow.connecting ? (
|
|
83
|
+
<IconLoader2 className="size-3.5 animate-spin" />
|
|
84
|
+
) : (
|
|
85
|
+
<IconPlugConnected className="size-3.5" />
|
|
86
|
+
)}
|
|
87
|
+
Connect Builder
|
|
88
|
+
</button>
|
|
89
|
+
) : null}
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
</section>
|
|
93
|
+
);
|
|
94
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IconAlertCircle,
|
|
3
|
+
IconCheck,
|
|
4
|
+
IconClock,
|
|
5
|
+
IconKey,
|
|
6
|
+
} from "@tabler/icons-react";
|
|
7
|
+
|
|
8
|
+
import type { WorkspaceConnectionProviderReadinessStatus } from "../../workspace-connections/index.js";
|
|
9
|
+
import { cn } from "../utils.js";
|
|
10
|
+
|
|
11
|
+
const STATUS_LABELS: Record<
|
|
12
|
+
WorkspaceConnectionProviderReadinessStatus,
|
|
13
|
+
string
|
|
14
|
+
> = {
|
|
15
|
+
ready: "Ready",
|
|
16
|
+
checking: "Checking",
|
|
17
|
+
needs_credentials: "Needs credentials",
|
|
18
|
+
needs_attention: "Needs attention",
|
|
19
|
+
disabled: "Disabled",
|
|
20
|
+
not_configured: "Not configured",
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const STATUS_STYLES: Record<
|
|
24
|
+
WorkspaceConnectionProviderReadinessStatus,
|
|
25
|
+
string
|
|
26
|
+
> = {
|
|
27
|
+
ready:
|
|
28
|
+
"border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300",
|
|
29
|
+
checking:
|
|
30
|
+
"border-blue-500/30 bg-blue-500/10 text-blue-700 dark:text-blue-300",
|
|
31
|
+
needs_credentials:
|
|
32
|
+
"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300",
|
|
33
|
+
needs_attention:
|
|
34
|
+
"border-red-500/30 bg-red-500/10 text-red-700 dark:text-red-300",
|
|
35
|
+
disabled: "border-border bg-muted text-muted-foreground",
|
|
36
|
+
not_configured: "border-border bg-muted text-muted-foreground",
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
function StatusIcon({
|
|
40
|
+
status,
|
|
41
|
+
}: {
|
|
42
|
+
status: WorkspaceConnectionProviderReadinessStatus;
|
|
43
|
+
}) {
|
|
44
|
+
if (status === "ready") return <IconCheck className="size-3.5" />;
|
|
45
|
+
if (status === "checking") return <IconClock className="size-3.5" />;
|
|
46
|
+
if (status === "needs_credentials") return <IconKey className="size-3.5" />;
|
|
47
|
+
return <IconAlertCircle className="size-3.5" />;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface ProviderReadinessBadgeProps {
|
|
51
|
+
status: WorkspaceConnectionProviderReadinessStatus;
|
|
52
|
+
label?: string;
|
|
53
|
+
className?: string;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function ProviderReadinessBadge({
|
|
57
|
+
status,
|
|
58
|
+
label,
|
|
59
|
+
className,
|
|
60
|
+
}: ProviderReadinessBadgeProps) {
|
|
61
|
+
return (
|
|
62
|
+
<span
|
|
63
|
+
className={cn(
|
|
64
|
+
"inline-flex min-h-6 items-center gap-1.5 rounded-md border px-2 text-xs font-medium",
|
|
65
|
+
STATUS_STYLES[status],
|
|
66
|
+
className,
|
|
67
|
+
)}
|
|
68
|
+
>
|
|
69
|
+
<StatusIcon status={status} />
|
|
70
|
+
{label ?? STATUS_LABELS[status]}
|
|
71
|
+
</span>
|
|
72
|
+
);
|
|
73
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
|
|
3
|
+
import { IntegrationsPanel } from "../integrations/IntegrationsPanel.js";
|
|
4
|
+
import { OnboardingPanel } from "../onboarding/OnboardingPanel.js";
|
|
5
|
+
import { SecretsSection } from "../settings/SecretsSection.js";
|
|
6
|
+
import { cn } from "../utils.js";
|
|
7
|
+
import { BuilderConnectCard } from "./BuilderConnectCard.js";
|
|
8
|
+
|
|
9
|
+
export interface SetupConnectionsPageProps {
|
|
10
|
+
title?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
onboardingTitle?: string;
|
|
13
|
+
focusSecretKey?: string;
|
|
14
|
+
providerReadiness?: ReactNode;
|
|
15
|
+
workspaceConnections?: ReactNode;
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
showOnboarding?: boolean;
|
|
18
|
+
showBuilderConnect?: boolean;
|
|
19
|
+
showSecrets?: boolean;
|
|
20
|
+
showIntegrations?: boolean;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function SetupConnectionsPage({
|
|
25
|
+
title = "Setup & connections",
|
|
26
|
+
description = "Manage setup status, Builder connect, app secrets, and workspace connections from one standard surface.",
|
|
27
|
+
onboardingTitle = "Setup checklist",
|
|
28
|
+
focusSecretKey,
|
|
29
|
+
providerReadiness,
|
|
30
|
+
workspaceConnections,
|
|
31
|
+
children,
|
|
32
|
+
showOnboarding = true,
|
|
33
|
+
showBuilderConnect = true,
|
|
34
|
+
showSecrets = true,
|
|
35
|
+
showIntegrations = false,
|
|
36
|
+
className,
|
|
37
|
+
}: SetupConnectionsPageProps) {
|
|
38
|
+
return (
|
|
39
|
+
<div className={cn("min-h-full bg-background p-4 sm:p-6", className)}>
|
|
40
|
+
<div className="mx-auto flex w-full max-w-6xl flex-col gap-5">
|
|
41
|
+
<header className="space-y-1">
|
|
42
|
+
<h1 className="text-2xl font-semibold tracking-normal text-foreground">
|
|
43
|
+
{title}
|
|
44
|
+
</h1>
|
|
45
|
+
<p className="max-w-3xl text-sm leading-6 text-muted-foreground">
|
|
46
|
+
{description}
|
|
47
|
+
</p>
|
|
48
|
+
</header>
|
|
49
|
+
|
|
50
|
+
<div className="grid gap-4 lg:grid-cols-[minmax(0,1fr)_360px]">
|
|
51
|
+
<main className="flex min-w-0 flex-col gap-4">
|
|
52
|
+
{showOnboarding ? (
|
|
53
|
+
<OnboardingPanel title={onboardingTitle} />
|
|
54
|
+
) : null}
|
|
55
|
+
{workspaceConnections ? (
|
|
56
|
+
<section className="rounded-lg border border-border bg-background p-4 shadow-sm">
|
|
57
|
+
{workspaceConnections}
|
|
58
|
+
</section>
|
|
59
|
+
) : null}
|
|
60
|
+
{providerReadiness ? (
|
|
61
|
+
<section className="rounded-lg border border-border bg-background p-4 shadow-sm">
|
|
62
|
+
{providerReadiness}
|
|
63
|
+
</section>
|
|
64
|
+
) : null}
|
|
65
|
+
{children}
|
|
66
|
+
</main>
|
|
67
|
+
|
|
68
|
+
<aside className="flex min-w-0 flex-col gap-4">
|
|
69
|
+
{showBuilderConnect ? <BuilderConnectCard /> : null}
|
|
70
|
+
{showSecrets ? (
|
|
71
|
+
<section className="rounded-lg border border-border bg-background p-4 shadow-sm">
|
|
72
|
+
<div className="mb-3">
|
|
73
|
+
<h2 className="text-sm font-semibold text-foreground">
|
|
74
|
+
Secrets
|
|
75
|
+
</h2>
|
|
76
|
+
<p className="mt-1 text-xs leading-5 text-muted-foreground">
|
|
77
|
+
Registered keys and OAuth credentials are stored in the
|
|
78
|
+
scoped secrets store.
|
|
79
|
+
</p>
|
|
80
|
+
</div>
|
|
81
|
+
<SecretsSection focusKey={focusSecretKey} />
|
|
82
|
+
</section>
|
|
83
|
+
) : null}
|
|
84
|
+
{showIntegrations ? (
|
|
85
|
+
<section className="rounded-lg border border-border bg-background p-4 shadow-sm">
|
|
86
|
+
<IntegrationsPanel />
|
|
87
|
+
</section>
|
|
88
|
+
) : null}
|
|
89
|
+
</aside>
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
);
|
|
94
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export {
|
|
2
|
+
BuilderConnectCard,
|
|
3
|
+
type BuilderConnectCardProps,
|
|
4
|
+
} from "./BuilderConnectCard.js";
|
|
5
|
+
export {
|
|
6
|
+
ProviderReadinessBadge,
|
|
7
|
+
type ProviderReadinessBadgeProps,
|
|
8
|
+
} from "./ProviderReadinessBadge.js";
|
|
9
|
+
export {
|
|
10
|
+
SetupConnectionsPage,
|
|
11
|
+
type SetupConnectionsPageProps,
|
|
12
|
+
} from "./SetupConnectionsPage.js";
|
|
13
|
+
export {
|
|
14
|
+
OnboardingBanner,
|
|
15
|
+
OnboardingPanel,
|
|
16
|
+
SetupButton,
|
|
17
|
+
useOnboarding,
|
|
18
|
+
useOnboardingPreviewMode,
|
|
19
|
+
type OnboardingFormField,
|
|
20
|
+
type OnboardingMethod,
|
|
21
|
+
type OnboardingMethodBadge,
|
|
22
|
+
type OnboardingStep,
|
|
23
|
+
type OnboardingStepStatus,
|
|
24
|
+
type UseOnboardingResult,
|
|
25
|
+
} from "../onboarding/index.js";
|
|
26
|
+
export {
|
|
27
|
+
SecretsSection,
|
|
28
|
+
SettingsPanel,
|
|
29
|
+
SettingsTabsPage,
|
|
30
|
+
openBuilderConnectPopup,
|
|
31
|
+
useBuilderConnectFlow,
|
|
32
|
+
useBuilderStatus,
|
|
33
|
+
type BuilderConnectFlow,
|
|
34
|
+
type BuilderConnectFlowOptions,
|
|
35
|
+
type BuilderStatus,
|
|
36
|
+
type OpenBuilderConnectPopupOptions,
|
|
37
|
+
type SecretsSectionProps,
|
|
38
|
+
type SettingsPanelProps,
|
|
39
|
+
type SettingsTabItem,
|
|
40
|
+
type SettingsTabsPageProps,
|
|
41
|
+
} from "../settings/index.js";
|
|
42
|
+
export {
|
|
43
|
+
IntegrationsPanel,
|
|
44
|
+
useIntegrationStatus,
|
|
45
|
+
type IntegrationStatus,
|
|
46
|
+
} from "../integrations/index.js";
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as Select from "@radix-ui/react-select";
|
|
2
2
|
import {
|
|
3
3
|
IconLock,
|
|
4
|
-
IconBuilding,
|
|
5
4
|
IconWorld,
|
|
6
5
|
IconTrash,
|
|
7
6
|
IconCheck,
|
|
@@ -11,6 +10,7 @@ import {
|
|
|
11
10
|
IconSearch,
|
|
12
11
|
IconSearchOff,
|
|
13
12
|
IconShare3,
|
|
13
|
+
IconUsersGroup,
|
|
14
14
|
} from "@tabler/icons-react";
|
|
15
15
|
import { useQueryClient } from "@tanstack/react-query";
|
|
16
16
|
import {
|
|
@@ -46,11 +46,11 @@ export interface ShareButtonProps {
|
|
|
46
46
|
/** @deprecated No longer affects rendering — trigger always says
|
|
47
47
|
* "Share". Kept for callsite compatibility. */
|
|
48
48
|
variant?: "compact" | "label";
|
|
49
|
-
/** Optional trigger style. Defaults to the Google-Docs-style "Share" label
|
|
50
|
-
*
|
|
51
|
-
*
|
|
49
|
+
/** Optional trigger style. Defaults to the Google-Docs-style "Share" label
|
|
50
|
+
* with a leading visibility icon. "label-icon" is kept for callsites that
|
|
51
|
+
* want to explicitly opt into icon+label parity; "icon" is icon-only. */
|
|
52
52
|
trigger?: "label" | "icon" | "label-icon";
|
|
53
|
-
/** @deprecated
|
|
53
|
+
/** @deprecated No longer affects rendering — triggers show visibility state. */
|
|
54
54
|
hideTriggerIcon?: boolean;
|
|
55
55
|
/** Optional className applied to the trigger button. */
|
|
56
56
|
triggerClassName?: string;
|
|
@@ -197,7 +197,7 @@ const VIS_META: Record<
|
|
|
197
197
|
org: {
|
|
198
198
|
label: "Organization",
|
|
199
199
|
description: "Anyone in your organization can view",
|
|
200
|
-
Icon:
|
|
200
|
+
Icon: IconUsersGroup,
|
|
201
201
|
},
|
|
202
202
|
public: {
|
|
203
203
|
label: "Public",
|
|
@@ -356,10 +356,17 @@ export function ShareButton(props: ShareButtonProps) {
|
|
|
356
356
|
});
|
|
357
357
|
};
|
|
358
358
|
|
|
359
|
-
|
|
360
|
-
|
|
359
|
+
const triggerVisibility =
|
|
360
|
+
pendingVisibility ??
|
|
361
|
+
(sharesQuery.data
|
|
362
|
+
? ((sharesQuery.data.visibility as Visibility | null) ?? "private")
|
|
363
|
+
: null);
|
|
364
|
+
const triggerMeta = triggerVisibility
|
|
365
|
+
? visibilityMeta(triggerVisibility, props.visibilityCopy)
|
|
366
|
+
: null;
|
|
367
|
+
const TriggerIcon = triggerMeta?.Icon ?? IconShare3;
|
|
368
|
+
const triggerLabel = triggerMeta ? `Share (${triggerMeta.label})` : "Share";
|
|
361
369
|
const iconOnly = props.trigger === "icon";
|
|
362
|
-
const showLabelIcon = props.trigger === "label-icon";
|
|
363
370
|
|
|
364
371
|
return (
|
|
365
372
|
<Popover open={open} onOpenChange={handleOpenChange}>
|
|
@@ -370,11 +377,10 @@ export function ShareButton(props: ShareButtonProps) {
|
|
|
370
377
|
iconOnly ? BUTTON_GHOST_ICON : BUTTON_OUTLINE_SM,
|
|
371
378
|
props.triggerClassName,
|
|
372
379
|
)}
|
|
373
|
-
aria-label={
|
|
380
|
+
aria-label={triggerLabel}
|
|
381
|
+
title={triggerLabel}
|
|
374
382
|
>
|
|
375
|
-
{
|
|
376
|
-
<IconShare3 size={16} strokeWidth={1.75} />
|
|
377
|
-
) : null}
|
|
383
|
+
<TriggerIcon size={16} strokeWidth={1.75} />
|
|
378
384
|
{!iconOnly && <span>Share</span>}
|
|
379
385
|
</button>
|
|
380
386
|
</PopoverTrigger>
|
|
@@ -1663,7 +1669,7 @@ function Avatar({ label, org }: { label: string; org?: boolean }) {
|
|
|
1663
1669
|
aria-hidden
|
|
1664
1670
|
className="inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-muted text-[11px] font-semibold text-muted-foreground"
|
|
1665
1671
|
>
|
|
1666
|
-
{org ? <
|
|
1672
|
+
{org ? <IconUsersGroup size={14} strokeWidth={1.75} /> : initials(label)}
|
|
1667
1673
|
</span>
|
|
1668
1674
|
);
|
|
1669
1675
|
}
|
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
IconX,
|
|
4
4
|
IconTrash,
|
|
5
5
|
IconLock,
|
|
6
|
-
IconBuilding,
|
|
7
6
|
IconWorld,
|
|
8
7
|
IconCheck,
|
|
9
8
|
IconCopy,
|
|
@@ -11,6 +10,7 @@ import {
|
|
|
11
10
|
IconMail,
|
|
12
11
|
IconCode,
|
|
13
12
|
IconChevronDown,
|
|
13
|
+
IconUsersGroup,
|
|
14
14
|
} from "@tabler/icons-react";
|
|
15
15
|
import { useEffect, useState, type ReactNode } from "react";
|
|
16
16
|
import { createPortal } from "react-dom";
|
|
@@ -117,7 +117,7 @@ const BUTTON_GHOST_ICON = cn(
|
|
|
117
117
|
|
|
118
118
|
const VIS_ICONS: Record<Visibility, typeof IconLock> = {
|
|
119
119
|
private: IconLock,
|
|
120
|
-
org:
|
|
120
|
+
org: IconUsersGroup,
|
|
121
121
|
public: IconWorld,
|
|
122
122
|
};
|
|
123
123
|
|
|
@@ -824,7 +824,7 @@ function Avatar({ label, org }: { label: string; org?: boolean }) {
|
|
|
824
824
|
className="inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-muted text-[11px] font-semibold text-muted-foreground"
|
|
825
825
|
>
|
|
826
826
|
{org ? (
|
|
827
|
-
<
|
|
827
|
+
<IconUsersGroup size={14} strokeWidth={1.75} />
|
|
828
828
|
) : (
|
|
829
829
|
(label.split("@")[0]?.[0] ?? label[0] ?? "?").toUpperCase()
|
|
830
830
|
)}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
import { defineAction } from "../action.js";
|
|
4
|
+
import { readAppState, writeAppState } from "../application-state/index.js";
|
|
5
|
+
|
|
6
|
+
const navigateSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
view: z.string().optional().describe("View name to navigate to"),
|
|
9
|
+
path: z.string().optional().describe("URL path to navigate to"),
|
|
10
|
+
})
|
|
11
|
+
.passthrough();
|
|
12
|
+
|
|
13
|
+
export interface CreateNavigateActionOptions {
|
|
14
|
+
description?: string;
|
|
15
|
+
stateKey?: string;
|
|
16
|
+
normalize?: (
|
|
17
|
+
args: z.infer<typeof navigateSchema>,
|
|
18
|
+
) => Record<string, unknown> | Promise<Record<string, unknown>>;
|
|
19
|
+
describeResult?: (
|
|
20
|
+
navigation: Record<string, unknown>,
|
|
21
|
+
args: z.infer<typeof navigateSchema>,
|
|
22
|
+
) => string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface CreateViewScreenActionOptions {
|
|
26
|
+
description?: string;
|
|
27
|
+
navigationStateKey?: string;
|
|
28
|
+
extraStateKeys?: string[];
|
|
29
|
+
describeResult?: (
|
|
30
|
+
screen: Record<string, unknown>,
|
|
31
|
+
) =>
|
|
32
|
+
| Record<string, unknown>
|
|
33
|
+
| string
|
|
34
|
+
| Promise<Record<string, unknown> | string>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function writeId(): string {
|
|
38
|
+
return `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function createNavigateAction(
|
|
42
|
+
options: CreateNavigateActionOptions = {},
|
|
43
|
+
) {
|
|
44
|
+
const stateKey = options.stateKey ?? "navigate";
|
|
45
|
+
return defineAction({
|
|
46
|
+
description:
|
|
47
|
+
options.description ??
|
|
48
|
+
"Navigate the UI to a specific view or path. Writes a navigate command to application state which the UI reads and auto-deletes.",
|
|
49
|
+
schema: navigateSchema,
|
|
50
|
+
http: false,
|
|
51
|
+
run: async (args) => {
|
|
52
|
+
if (!args.view && !args.path) {
|
|
53
|
+
throw new Error("At least --view or --path is required.");
|
|
54
|
+
}
|
|
55
|
+
const navigation = options.normalize
|
|
56
|
+
? await options.normalize(args)
|
|
57
|
+
: ({
|
|
58
|
+
...(args.view ? { view: args.view } : null),
|
|
59
|
+
...(args.path ? { path: args.path } : null),
|
|
60
|
+
} as Record<string, unknown>);
|
|
61
|
+
navigation._writeId = writeId();
|
|
62
|
+
await writeAppState(stateKey, navigation);
|
|
63
|
+
return (
|
|
64
|
+
options.describeResult?.(navigation, args) ??
|
|
65
|
+
`Navigating to ${String(args.view || args.path)}`
|
|
66
|
+
);
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export function createViewScreenAction(
|
|
72
|
+
options: CreateViewScreenActionOptions = {},
|
|
73
|
+
) {
|
|
74
|
+
const navigationStateKey = options.navigationStateKey ?? "navigation";
|
|
75
|
+
return defineAction({
|
|
76
|
+
description:
|
|
77
|
+
options.description ??
|
|
78
|
+
"See what the user is currently looking at on screen. Returns the current navigation state.",
|
|
79
|
+
schema: z.object({}),
|
|
80
|
+
http: false,
|
|
81
|
+
readOnly: true,
|
|
82
|
+
run: async () => {
|
|
83
|
+
const screen: Record<string, unknown> = {};
|
|
84
|
+
const navigation = await readAppState(navigationStateKey);
|
|
85
|
+
if (navigation) screen.navigation = navigation;
|
|
86
|
+
|
|
87
|
+
for (const key of options.extraStateKeys ?? []) {
|
|
88
|
+
const value = await readAppState(key);
|
|
89
|
+
if (value !== null && value !== undefined) screen[key] = value;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (Object.keys(screen).length === 0) {
|
|
93
|
+
return "No application state found. Is the app running?";
|
|
94
|
+
}
|
|
95
|
+
return options.describeResult
|
|
96
|
+
? await options.describeResult(screen)
|
|
97
|
+
: screen;
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
}
|