@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,97 @@
|
|
|
1
|
+
import type { Visibility } from "../sharing/schema.js";
|
|
2
|
+
|
|
3
|
+
export type ReviewResourceRole = "viewer" | "editor" | "admin" | "owner";
|
|
4
|
+
export type ReviewCommentKind =
|
|
5
|
+
| "comment"
|
|
6
|
+
| "annotation"
|
|
7
|
+
| "correction"
|
|
8
|
+
| "question"
|
|
9
|
+
| "decision"
|
|
10
|
+
| "review";
|
|
11
|
+
export type ReviewCommentStatus = "open" | "resolved" | "deleted";
|
|
12
|
+
export type ReviewResolutionTarget = "agent" | "human";
|
|
13
|
+
export type ReviewStatus =
|
|
14
|
+
| "draft"
|
|
15
|
+
| "in_review"
|
|
16
|
+
| "approved"
|
|
17
|
+
| "changes_requested";
|
|
18
|
+
export type ReviewActorKind = "human" | "agent" | "import" | "system";
|
|
19
|
+
|
|
20
|
+
export interface ReviewResourceAccess {
|
|
21
|
+
role: ReviewResourceRole;
|
|
22
|
+
ownerEmail?: string | null;
|
|
23
|
+
orgId?: string | null;
|
|
24
|
+
visibility?: Visibility | null;
|
|
25
|
+
resource?: unknown;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface ReviewResourceContext {
|
|
29
|
+
userEmail?: string | null;
|
|
30
|
+
orgId?: string | null;
|
|
31
|
+
caller?: string | null;
|
|
32
|
+
request?: unknown;
|
|
33
|
+
[key: string]: unknown;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface ReviewableResourceRegistration {
|
|
37
|
+
type: string;
|
|
38
|
+
displayName?: string;
|
|
39
|
+
resolveAccess?: (
|
|
40
|
+
resourceId: string,
|
|
41
|
+
ctx?: ReviewResourceContext,
|
|
42
|
+
) => Promise<ReviewResourceAccess | null> | ReviewResourceAccess | null;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface ReviewMention {
|
|
46
|
+
label: string;
|
|
47
|
+
email?: string | null;
|
|
48
|
+
id?: string | null;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface ReviewComment {
|
|
52
|
+
id: string;
|
|
53
|
+
resourceType: string;
|
|
54
|
+
resourceId: string;
|
|
55
|
+
threadId: string;
|
|
56
|
+
parentCommentId: string | null;
|
|
57
|
+
targetId: string | null;
|
|
58
|
+
kind: ReviewCommentKind;
|
|
59
|
+
status: ReviewCommentStatus;
|
|
60
|
+
anchor: unknown | null;
|
|
61
|
+
body: string;
|
|
62
|
+
authorEmail: string | null;
|
|
63
|
+
authorName: string | null;
|
|
64
|
+
createdBy: ReviewActorKind;
|
|
65
|
+
resolutionTarget: ReviewResolutionTarget | null;
|
|
66
|
+
mentions: ReviewMention[];
|
|
67
|
+
ownerEmail: string | null;
|
|
68
|
+
orgId: string | null;
|
|
69
|
+
visibility: Visibility;
|
|
70
|
+
resolvedBy: string | null;
|
|
71
|
+
resolvedAt: string | null;
|
|
72
|
+
consumedAt: string | null;
|
|
73
|
+
deletedBy: string | null;
|
|
74
|
+
deletedAt: string | null;
|
|
75
|
+
createdAt: string;
|
|
76
|
+
updatedAt: string;
|
|
77
|
+
metadata: Record<string, unknown> | null;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export interface ReviewStatusEntry {
|
|
81
|
+
id: string;
|
|
82
|
+
resourceType: string;
|
|
83
|
+
resourceId: string;
|
|
84
|
+
status: ReviewStatus;
|
|
85
|
+
note: string | null;
|
|
86
|
+
updatedBy: string | null;
|
|
87
|
+
updatedAt: string;
|
|
88
|
+
ownerEmail: string | null;
|
|
89
|
+
orgId: string | null;
|
|
90
|
+
visibility: Visibility;
|
|
91
|
+
metadata: Record<string, unknown> | null;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export interface ReviewScope {
|
|
95
|
+
userEmail?: string | null;
|
|
96
|
+
orgId?: string | null;
|
|
97
|
+
}
|
|
@@ -606,6 +606,60 @@ export async function mergeCoreSharingActions(
|
|
|
606
606
|
() => import("../audit/actions/list-audit-events.js"),
|
|
607
607
|
],
|
|
608
608
|
["get-audit-event", () => import("../audit/actions/get-audit-event.js")],
|
|
609
|
+
// History kit — reusable version snapshots and restore surface.
|
|
610
|
+
[
|
|
611
|
+
"create-resource-version",
|
|
612
|
+
() => import("../history/actions/create-resource-version.js"),
|
|
613
|
+
],
|
|
614
|
+
[
|
|
615
|
+
"list-resource-versions",
|
|
616
|
+
() => import("../history/actions/list-resource-versions.js"),
|
|
617
|
+
],
|
|
618
|
+
[
|
|
619
|
+
"get-resource-version",
|
|
620
|
+
() => import("../history/actions/get-resource-version.js"),
|
|
621
|
+
],
|
|
622
|
+
[
|
|
623
|
+
"restore-resource-version",
|
|
624
|
+
() => import("../history/actions/restore-resource-version.js"),
|
|
625
|
+
],
|
|
626
|
+
[
|
|
627
|
+
"list-resource-history",
|
|
628
|
+
() => import("../history/actions/list-resource-history.js"),
|
|
629
|
+
],
|
|
630
|
+
// Comments/review kit — reusable inline comments, feedback, and review status.
|
|
631
|
+
[
|
|
632
|
+
"list-review-comments",
|
|
633
|
+
() => import("../review/actions/list-review-comments.js"),
|
|
634
|
+
],
|
|
635
|
+
[
|
|
636
|
+
"create-review-comment",
|
|
637
|
+
() => import("../review/actions/create-review-comment.js"),
|
|
638
|
+
],
|
|
639
|
+
[
|
|
640
|
+
"reply-review-comment",
|
|
641
|
+
() => import("../review/actions/reply-review-comment.js"),
|
|
642
|
+
],
|
|
643
|
+
[
|
|
644
|
+
"resolve-review-thread",
|
|
645
|
+
() => import("../review/actions/resolve-review-thread.js"),
|
|
646
|
+
],
|
|
647
|
+
[
|
|
648
|
+
"delete-review-comment",
|
|
649
|
+
() => import("../review/actions/delete-review-comment.js"),
|
|
650
|
+
],
|
|
651
|
+
[
|
|
652
|
+
"consume-review-feedback",
|
|
653
|
+
() => import("../review/actions/consume-review-feedback.js"),
|
|
654
|
+
],
|
|
655
|
+
[
|
|
656
|
+
"get-review-feedback",
|
|
657
|
+
() => import("../review/actions/get-review-feedback.js"),
|
|
658
|
+
],
|
|
659
|
+
[
|
|
660
|
+
"set-review-status",
|
|
661
|
+
() => import("../review/actions/set-review-status.js"),
|
|
662
|
+
],
|
|
609
663
|
// Org service tokens (CI credentials, e.g. PLAN_RECAP_TOKEN). Mint/revoke
|
|
610
664
|
// are toolCallable:false — preserved via preserveActionFlags below.
|
|
611
665
|
[
|
|
@@ -6623,6 +6623,12 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
|
|
|
6623
6623
|
scope: "user",
|
|
6624
6624
|
scopeId: ownerEmail,
|
|
6625
6625
|
});
|
|
6626
|
+
const { clearProviderCredentialAuthFailure } =
|
|
6627
|
+
await import("./credential-provider.js");
|
|
6628
|
+
await clearProviderCredentialAuthFailure({
|
|
6629
|
+
key: secretKey,
|
|
6630
|
+
value: trimmedKey,
|
|
6631
|
+
});
|
|
6626
6632
|
} catch (err) {
|
|
6627
6633
|
console.error(
|
|
6628
6634
|
"[agent-chat] save-key persistence failed:",
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
import { getOrgContext } from "../org/context.js";
|
|
14
14
|
import { deleteAppSecret, writeAppSecret } from "../secrets/storage.js";
|
|
15
15
|
import { getSession } from "./auth.js";
|
|
16
|
+
import { clearProviderCredentialAuthFailure } from "./credential-provider.js";
|
|
16
17
|
import { readBody } from "./h3-helpers.js";
|
|
17
18
|
|
|
18
19
|
const PROVIDER_TO_ENV_VAR = new Map(
|
|
@@ -202,6 +203,10 @@ export function createAgentEngineApiKeyHandler() {
|
|
|
202
203
|
scope: resolved.target.scope,
|
|
203
204
|
scopeId: resolved.target.scopeId,
|
|
204
205
|
});
|
|
206
|
+
await clearProviderCredentialAuthFailure({
|
|
207
|
+
key: payload.key,
|
|
208
|
+
value: payload.value,
|
|
209
|
+
});
|
|
205
210
|
}
|
|
206
211
|
|
|
207
212
|
if (payload.baseUrl) {
|
|
@@ -720,6 +720,124 @@ export async function clearBuilderCredentialAuthFailure(creds: {
|
|
|
720
720
|
}
|
|
721
721
|
}
|
|
722
722
|
|
|
723
|
+
const PROVIDER_AUTH_FAILURE_SETTING_PREFIX = "provider-auth-failure:";
|
|
724
|
+
/** Stale failure markers expire so a transient 401 cannot permanently block deploy keys. */
|
|
725
|
+
export const PROVIDER_AUTH_FAILURE_TTL_MS = 15 * 60 * 1000;
|
|
726
|
+
|
|
727
|
+
export interface ProviderCredentialAuthFailure {
|
|
728
|
+
fingerprint: string;
|
|
729
|
+
key: string;
|
|
730
|
+
message: string;
|
|
731
|
+
status?: number;
|
|
732
|
+
code?: string;
|
|
733
|
+
at: number;
|
|
734
|
+
ownerEmail?: string | null;
|
|
735
|
+
orgId?: string | null;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
export function providerCredentialFingerprint(
|
|
739
|
+
key?: string | null,
|
|
740
|
+
value?: string | null,
|
|
741
|
+
): string | null {
|
|
742
|
+
const normalizedKey = key?.trim().toUpperCase();
|
|
743
|
+
const normalizedValue = value?.trim();
|
|
744
|
+
if (!normalizedKey || !normalizedValue) return null;
|
|
745
|
+
return createHash("sha256")
|
|
746
|
+
.update(normalizedKey)
|
|
747
|
+
.update("\0")
|
|
748
|
+
.update(normalizedValue)
|
|
749
|
+
.digest("hex")
|
|
750
|
+
.slice(0, 24);
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
function providerAuthFailureSettingKey(fingerprint: string): string {
|
|
754
|
+
return `${PROVIDER_AUTH_FAILURE_SETTING_PREFIX}${fingerprint}`;
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
export async function getProviderCredentialAuthFailure(opts: {
|
|
758
|
+
key?: string | null;
|
|
759
|
+
value?: string | null;
|
|
760
|
+
}): Promise<ProviderCredentialAuthFailure | null> {
|
|
761
|
+
const key = opts.key?.trim().toUpperCase() ?? "";
|
|
762
|
+
const fingerprint = providerCredentialFingerprint(key, opts.value);
|
|
763
|
+
if (!fingerprint) return null;
|
|
764
|
+
try {
|
|
765
|
+
const settings = await import("../settings/store.js");
|
|
766
|
+
const settingKey = providerAuthFailureSettingKey(fingerprint);
|
|
767
|
+
const row = await settings.getSetting(settingKey);
|
|
768
|
+
if (!row) return null;
|
|
769
|
+
if (row.fingerprint !== fingerprint) return null;
|
|
770
|
+
const at = typeof row.at === "number" ? row.at : Date.now();
|
|
771
|
+
if (Date.now() - at > PROVIDER_AUTH_FAILURE_TTL_MS) {
|
|
772
|
+
if (typeof settings.deleteSetting === "function") {
|
|
773
|
+
await settings.deleteSetting(settingKey).catch(() => {});
|
|
774
|
+
}
|
|
775
|
+
return null;
|
|
776
|
+
}
|
|
777
|
+
return {
|
|
778
|
+
fingerprint,
|
|
779
|
+
key:
|
|
780
|
+
typeof row.key === "string" && row.key
|
|
781
|
+
? row.key
|
|
782
|
+
: key || "UNKNOWN_PROVIDER_KEY",
|
|
783
|
+
message:
|
|
784
|
+
typeof row.message === "string" && row.message
|
|
785
|
+
? row.message
|
|
786
|
+
: "The model provider rejected the saved API key.",
|
|
787
|
+
status: typeof row.status === "number" ? row.status : undefined,
|
|
788
|
+
code: typeof row.code === "string" ? row.code : undefined,
|
|
789
|
+
at,
|
|
790
|
+
ownerEmail:
|
|
791
|
+
typeof row.ownerEmail === "string" ? row.ownerEmail : undefined,
|
|
792
|
+
orgId: typeof row.orgId === "string" ? row.orgId : undefined,
|
|
793
|
+
};
|
|
794
|
+
} catch {
|
|
795
|
+
return null;
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
export async function recordProviderCredentialAuthFailure(opts: {
|
|
800
|
+
key?: string | null;
|
|
801
|
+
value?: string | null;
|
|
802
|
+
status?: number;
|
|
803
|
+
code?: string;
|
|
804
|
+
message?: string;
|
|
805
|
+
}): Promise<void> {
|
|
806
|
+
try {
|
|
807
|
+
const key = opts.key?.trim().toUpperCase() ?? "";
|
|
808
|
+
const value = opts.value?.trim();
|
|
809
|
+
const fingerprint = providerCredentialFingerprint(key, value);
|
|
810
|
+
if (!fingerprint) return;
|
|
811
|
+
const { putSetting } = await import("../settings/store.js");
|
|
812
|
+
await putSetting(providerAuthFailureSettingKey(fingerprint), {
|
|
813
|
+
fingerprint,
|
|
814
|
+
key,
|
|
815
|
+
message: opts.message || "The model provider rejected the saved API key.",
|
|
816
|
+
...(typeof opts.status === "number" && { status: opts.status }),
|
|
817
|
+
...(opts.code && { code: opts.code }),
|
|
818
|
+
at: Date.now(),
|
|
819
|
+
ownerEmail: getRequestUserEmail() ?? null,
|
|
820
|
+
orgId: getRequestOrgId() ?? null,
|
|
821
|
+
});
|
|
822
|
+
} catch {
|
|
823
|
+
// Best-effort marker only; the chat error is still returned to the user.
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
export async function clearProviderCredentialAuthFailure(opts: {
|
|
828
|
+
key?: string | null;
|
|
829
|
+
value?: string | null;
|
|
830
|
+
}): Promise<void> {
|
|
831
|
+
const fingerprint = providerCredentialFingerprint(opts.key, opts.value);
|
|
832
|
+
if (!fingerprint) return;
|
|
833
|
+
try {
|
|
834
|
+
const { deleteSetting } = await import("../settings/store.js");
|
|
835
|
+
await deleteSetting(providerAuthFailureSettingKey(fingerprint));
|
|
836
|
+
} catch {
|
|
837
|
+
// A stale failure marker should not block writing or using fresh keys.
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
|
|
723
841
|
/**
|
|
724
842
|
* Write Builder credentials to `app_secrets`.
|
|
725
843
|
*
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export {
|
|
2
|
+
registerOnboardingStep,
|
|
3
|
+
listOnboardingSteps,
|
|
4
|
+
createOnboardingPlugin,
|
|
5
|
+
defaultOnboardingPlugin,
|
|
6
|
+
registerDefaultOnboardingSteps,
|
|
7
|
+
type OnboardingFormField,
|
|
8
|
+
type OnboardingMethod,
|
|
9
|
+
type OnboardingMethodBadge,
|
|
10
|
+
type OnboardingPluginOptions,
|
|
11
|
+
type OnboardingStep,
|
|
12
|
+
type OnboardingStepStatus,
|
|
13
|
+
} from "../onboarding/index.js";
|
|
14
|
+
export {
|
|
15
|
+
deleteAppSecret,
|
|
16
|
+
getAppSecretMeta,
|
|
17
|
+
getRequiredSecret,
|
|
18
|
+
last4,
|
|
19
|
+
listAppSecretsForScope,
|
|
20
|
+
listRequiredSecrets,
|
|
21
|
+
maybeRegisterSecretOnboardingStep,
|
|
22
|
+
readAppSecret,
|
|
23
|
+
readAppSecretMeta,
|
|
24
|
+
registerRequiredSecret,
|
|
25
|
+
resolveKeyReferences,
|
|
26
|
+
validateUrlAllowlist,
|
|
27
|
+
writeAppSecret,
|
|
28
|
+
type ReadSecretResult,
|
|
29
|
+
type RegisteredSecret,
|
|
30
|
+
type SecretKind,
|
|
31
|
+
type SecretMeta,
|
|
32
|
+
type SecretRef,
|
|
33
|
+
type SecretScope,
|
|
34
|
+
type SecretValidator,
|
|
35
|
+
type ValidatorResult,
|
|
36
|
+
type WriteSecretArgs,
|
|
37
|
+
} from "../secrets/index.js";
|
|
38
|
+
export {
|
|
39
|
+
WORKSPACE_CONNECTION_PROVIDERS,
|
|
40
|
+
defineWorkspaceConnectionProvider,
|
|
41
|
+
getWorkspaceConnectionProvider,
|
|
42
|
+
isWorkspaceConnectionProviderId,
|
|
43
|
+
listWorkspaceConnectionProviders,
|
|
44
|
+
listWorkspaceConnectionProvidersForCapability,
|
|
45
|
+
listWorkspaceConnectionProvidersForTemplate,
|
|
46
|
+
workspaceConnectionProviderSupports,
|
|
47
|
+
type ListWorkspaceConnectionProvidersOptions,
|
|
48
|
+
type WorkspaceConnectionCapability,
|
|
49
|
+
type WorkspaceConnectionCredentialKey,
|
|
50
|
+
type WorkspaceConnectionProvider,
|
|
51
|
+
type WorkspaceConnectionProviderId,
|
|
52
|
+
type WorkspaceConnectionTemplateUse,
|
|
53
|
+
} from "../connections/index.js";
|
|
54
|
+
export {
|
|
55
|
+
deleteWorkspaceConnection,
|
|
56
|
+
getWorkspaceConnection,
|
|
57
|
+
listWorkspaceConnectionProviderCatalogForApp,
|
|
58
|
+
listWorkspaceConnectionGrants,
|
|
59
|
+
listWorkspaceConnections,
|
|
60
|
+
listWorkspaceConnectionsForApp,
|
|
61
|
+
markWorkspaceConnectionUsed,
|
|
62
|
+
resolveWorkspaceConnectionCredentialForApp,
|
|
63
|
+
resolveWorkspaceConnectionCredentialsForApp,
|
|
64
|
+
resolveWorkspaceConnectionForApp,
|
|
65
|
+
revokeWorkspaceConnectionGrant,
|
|
66
|
+
summarizeWorkspaceConnectionProviderForApp,
|
|
67
|
+
summarizeWorkspaceConnectionProviderReadiness,
|
|
68
|
+
upsertWorkspaceConnection,
|
|
69
|
+
upsertWorkspaceConnectionGrant,
|
|
70
|
+
type ListWorkspaceConnectionProviderCatalogForAppOptions,
|
|
71
|
+
type ResolvedWorkspaceConnectionForApp,
|
|
72
|
+
type ResolveWorkspaceConnectionForAppOptions,
|
|
73
|
+
type SerializedWorkspaceConnection,
|
|
74
|
+
type SerializedWorkspaceConnectionGrant,
|
|
75
|
+
type SummarizeWorkspaceConnectionProviderReadinessOptions,
|
|
76
|
+
type UpsertWorkspaceConnectionGrantInput,
|
|
77
|
+
type UpsertWorkspaceConnectionInput,
|
|
78
|
+
type WorkspaceConnection,
|
|
79
|
+
type WorkspaceConnectionForAppSummary,
|
|
80
|
+
type WorkspaceConnectionGrant,
|
|
81
|
+
type WorkspaceConnectionProviderCatalogForApp,
|
|
82
|
+
type WorkspaceConnectionProviderCatalogForAppItem,
|
|
83
|
+
type WorkspaceConnectionProviderReadiness,
|
|
84
|
+
type WorkspaceConnectionProviderReadinessStatus,
|
|
85
|
+
} from "../workspace-connections/index.js";
|
|
86
|
+
export {
|
|
87
|
+
registerWorkspaceConnectionOnboardingStep,
|
|
88
|
+
type RegisterWorkspaceConnectionOnboardingStepOptions,
|
|
89
|
+
} from "./onboarding.js";
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { registerOnboardingStep } from "../onboarding/registry.js";
|
|
2
|
+
import type { OnboardingStep } from "../onboarding/types.js";
|
|
3
|
+
|
|
4
|
+
export interface RegisterWorkspaceConnectionOnboardingStepOptions {
|
|
5
|
+
id?: string;
|
|
6
|
+
providerId: string;
|
|
7
|
+
providerLabel?: string;
|
|
8
|
+
title?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
order?: number;
|
|
11
|
+
required?: boolean;
|
|
12
|
+
settingsUrl?: string;
|
|
13
|
+
isComplete: OnboardingStep["isComplete"];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function registerWorkspaceConnectionOnboardingStep({
|
|
17
|
+
id,
|
|
18
|
+
providerId,
|
|
19
|
+
providerLabel,
|
|
20
|
+
title,
|
|
21
|
+
description,
|
|
22
|
+
order = 50,
|
|
23
|
+
required = false,
|
|
24
|
+
settingsUrl = "/settings#connections",
|
|
25
|
+
isComplete,
|
|
26
|
+
}: RegisterWorkspaceConnectionOnboardingStepOptions): void {
|
|
27
|
+
const label = providerLabel ?? providerId;
|
|
28
|
+
registerOnboardingStep({
|
|
29
|
+
id: id ?? `${providerId}-connection`,
|
|
30
|
+
title: title ?? `Connect ${label}`,
|
|
31
|
+
description:
|
|
32
|
+
description ??
|
|
33
|
+
`Connect ${label} so the app and agent can use the shared workspace connection.`,
|
|
34
|
+
order,
|
|
35
|
+
required,
|
|
36
|
+
methods: [
|
|
37
|
+
{
|
|
38
|
+
id: "settings",
|
|
39
|
+
kind: "link",
|
|
40
|
+
label: "Open connections",
|
|
41
|
+
primary: true,
|
|
42
|
+
payload: { url: settingsUrl },
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
isComplete,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
@@ -12,6 +12,7 @@ export interface BuilderTranscribeOptions {
|
|
|
12
12
|
maxSpeakers?: number;
|
|
13
13
|
language?: string;
|
|
14
14
|
instructions?: string;
|
|
15
|
+
timeoutMs?: number;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
export interface BuilderTranscribeResult {
|
|
@@ -69,8 +70,12 @@ export async function transcribeWithBuilder(
|
|
|
69
70
|
opts.audioBytes.byteOffset + opts.audioBytes.byteLength,
|
|
70
71
|
) as ArrayBuffer;
|
|
71
72
|
|
|
73
|
+
const timeoutMs =
|
|
74
|
+
typeof opts.timeoutMs === "number" && Number.isFinite(opts.timeoutMs)
|
|
75
|
+
? Math.max(1, Math.floor(opts.timeoutMs))
|
|
76
|
+
: 45_000;
|
|
72
77
|
const controller = new AbortController();
|
|
73
|
-
const timeout = setTimeout(() => controller.abort(),
|
|
78
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
74
79
|
let res: Response;
|
|
75
80
|
try {
|
|
76
81
|
res = await fetch(url, {
|
|
@@ -84,7 +89,9 @@ export async function transcribeWithBuilder(
|
|
|
84
89
|
});
|
|
85
90
|
} catch (err) {
|
|
86
91
|
if ((err as Error)?.name === "AbortError") {
|
|
87
|
-
throw new Error(
|
|
92
|
+
throw new Error(
|
|
93
|
+
`Builder transcription timed out after ${Math.ceil(timeoutMs / 1000)} seconds.`,
|
|
94
|
+
);
|
|
88
95
|
}
|
|
89
96
|
throw new Error(
|
|
90
97
|
`Builder transcription request failed before response: ${describeError(err)}`,
|
|
@@ -89,6 +89,58 @@ const CORE_SHARING_ACTIONS: Array<{ name: string; specifier: string }> = [
|
|
|
89
89
|
specifier:
|
|
90
90
|
"@agent-native/core/localization/actions/set-localization-preference",
|
|
91
91
|
},
|
|
92
|
+
{
|
|
93
|
+
name: "create-resource-version",
|
|
94
|
+
specifier: "@agent-native/core/history/actions/create-resource-version",
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: "list-resource-versions",
|
|
98
|
+
specifier: "@agent-native/core/history/actions/list-resource-versions",
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: "get-resource-version",
|
|
102
|
+
specifier: "@agent-native/core/history/actions/get-resource-version",
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: "restore-resource-version",
|
|
106
|
+
specifier: "@agent-native/core/history/actions/restore-resource-version",
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: "list-resource-history",
|
|
110
|
+
specifier: "@agent-native/core/history/actions/list-resource-history",
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: "list-review-comments",
|
|
114
|
+
specifier: "@agent-native/core/review/actions/list-review-comments",
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
name: "create-review-comment",
|
|
118
|
+
specifier: "@agent-native/core/review/actions/create-review-comment",
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
name: "reply-review-comment",
|
|
122
|
+
specifier: "@agent-native/core/review/actions/reply-review-comment",
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: "resolve-review-thread",
|
|
126
|
+
specifier: "@agent-native/core/review/actions/resolve-review-thread",
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: "delete-review-comment",
|
|
130
|
+
specifier: "@agent-native/core/review/actions/delete-review-comment",
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: "consume-review-feedback",
|
|
134
|
+
specifier: "@agent-native/core/review/actions/consume-review-feedback",
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: "get-review-feedback",
|
|
138
|
+
specifier: "@agent-native/core/review/actions/get-review-feedback",
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: "set-review-status",
|
|
142
|
+
specifier: "@agent-native/core/review/actions/set-review-status",
|
|
143
|
+
},
|
|
92
144
|
];
|
|
93
145
|
|
|
94
146
|
function isRuntimeSourceFile(filename: string): boolean {
|
|
@@ -146,6 +146,7 @@ export function Layout({ children }: LayoutProps) {
|
|
|
146
146
|
location.pathname === "/extensions" ||
|
|
147
147
|
location.pathname.startsWith("/extensions/");
|
|
148
148
|
const isSessionsRoute = isAnalyticsSessionsRoute(location.pathname);
|
|
149
|
+
const isSessionDetailRoute = /^\/sessions\/[^/]+/.test(location.pathname);
|
|
149
150
|
const isAskRoute = location.pathname === "/ask";
|
|
150
151
|
const chatHomeHandoffActive = useAgentChatHomeHandoff({
|
|
151
152
|
storageKey: ANALYTICS_CHAT_STORAGE_KEY,
|
|
@@ -221,7 +222,7 @@ export function Layout({ children }: LayoutProps) {
|
|
|
221
222
|
const contentFrame = (
|
|
222
223
|
<div className="flex h-full flex-1 flex-col overflow-hidden">
|
|
223
224
|
<MobileNav showNewChat={isAskRoute} />
|
|
224
|
-
{!isExtensionsRoute && !isAskRoute && <Header />}
|
|
225
|
+
{!isExtensionsRoute && !isAskRoute && !isSessionDetailRoute && <Header />}
|
|
225
226
|
<InvitationBanner />
|
|
226
227
|
<main
|
|
227
228
|
className={
|
|
@@ -17,10 +17,10 @@ import {
|
|
|
17
17
|
IconActivity,
|
|
18
18
|
IconPin,
|
|
19
19
|
IconPlus,
|
|
20
|
-
IconBuilding,
|
|
21
20
|
IconLock,
|
|
22
21
|
IconLink,
|
|
23
22
|
IconMessageCircle,
|
|
23
|
+
IconUsersGroup,
|
|
24
24
|
IconEye,
|
|
25
25
|
IconEyeOff,
|
|
26
26
|
IconPlayerPlay,
|
|
@@ -704,7 +704,7 @@ function SortableRow({
|
|
|
704
704
|
}}
|
|
705
705
|
>
|
|
706
706
|
{visibility === "private" ? (
|
|
707
|
-
<
|
|
707
|
+
<IconUsersGroup className="me-2 h-3.5 w-3.5" />
|
|
708
708
|
) : (
|
|
709
709
|
<IconLock className="me-2 h-3.5 w-3.5" />
|
|
710
710
|
)}
|
|
@@ -243,27 +243,39 @@
|
|
|
243
243
|
.an-replay-stage-root .replayer-mouse {
|
|
244
244
|
position: absolute;
|
|
245
245
|
z-index: 2;
|
|
246
|
-
width:
|
|
247
|
-
height:
|
|
248
|
-
border-radius:
|
|
249
|
-
background:
|
|
246
|
+
width: 1.125rem;
|
|
247
|
+
height: 1.5rem;
|
|
248
|
+
border-radius: 0;
|
|
249
|
+
background: transparent;
|
|
250
250
|
background-image: none;
|
|
251
|
-
box-shadow:
|
|
252
|
-
|
|
253
|
-
0 1px 6px hsl(0 0% 0% / 0.35);
|
|
254
|
-
transform: translate(-50%, -50%);
|
|
251
|
+
box-shadow: none;
|
|
252
|
+
transform: none;
|
|
255
253
|
transition:
|
|
256
254
|
left 80ms linear,
|
|
257
255
|
top 80ms linear;
|
|
258
256
|
pointer-events: none;
|
|
259
257
|
}
|
|
260
258
|
|
|
261
|
-
.an-replay-stage-root .replayer-mouse::
|
|
259
|
+
.an-replay-stage-root .replayer-mouse::before {
|
|
262
260
|
content: "";
|
|
263
261
|
position: absolute;
|
|
264
262
|
inset: 0;
|
|
263
|
+
background: hsl(0 0% 100%);
|
|
264
|
+
clip-path: polygon(0 0, 0 77%, 30% 57%, 48% 100%, 68% 92%, 50% 51%, 92% 51%);
|
|
265
|
+
filter: drop-shadow(0 0 1px hsl(0 0% 0% / 0.95))
|
|
266
|
+
drop-shadow(0 1px 3px hsl(0 0% 0% / 0.35));
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.an-replay-stage-root .replayer-mouse::after {
|
|
270
|
+
content: "";
|
|
271
|
+
position: absolute;
|
|
272
|
+
left: -0.5rem;
|
|
273
|
+
top: -0.5rem;
|
|
274
|
+
width: 1rem;
|
|
275
|
+
height: 1rem;
|
|
265
276
|
border-radius: 9999px;
|
|
266
|
-
|
|
277
|
+
border: 2px solid hsl(217 91% 60%);
|
|
278
|
+
background: transparent;
|
|
267
279
|
opacity: 0;
|
|
268
280
|
}
|
|
269
281
|
|
|
@@ -937,6 +937,11 @@ const messages = {
|
|
|
937
937
|
copyForAgent: "複製給 Agent",
|
|
938
938
|
copiedForAgent: "已複製",
|
|
939
939
|
askAgent: "詢問代理此工作階段",
|
|
940
|
+
devtoolsMessage: "訊息",
|
|
941
|
+
devtoolsResize: "調整開發者工具大小",
|
|
942
|
+
replayLoadingProgress: "已載入 {{loaded}} / {{total}} 個回放分塊",
|
|
943
|
+
askAgentTooltip: "向 Analytics 代理詢問有關此回放的問題。",
|
|
944
|
+
copyForAgentTooltip: "複製一個臨時私人連結,供代理檢查此回放。",
|
|
940
945
|
askSessionTitle: "詢問此工作階段",
|
|
941
946
|
askSessionDescription: "將此回放作為脈絡,向 Analytics 代理傳送聚焦提示。",
|
|
942
947
|
askSessionPlaceholder: "此工作階段發生了什麼?",
|
|
@@ -952,7 +957,7 @@ const messages = {
|
|
|
952
957
|
replayEventCount: "{{events}} 個回放事件",
|
|
953
958
|
timeline: "事件時間線",
|
|
954
959
|
replayTimeline: "回放時間線",
|
|
955
|
-
timelineDescription: "
|
|
960
|
+
timelineDescription: "顯示 {{count}} / {{total}} 個有用事件。",
|
|
956
961
|
noTimelineEvents: "未找到時間線標記",
|
|
957
962
|
sequence: "Sequence",
|
|
958
963
|
size: "Size",
|