@agent-native/core 0.90.2 → 0.90.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +12 -0
- 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/registry.ts +23 -16
- package/corpus/core/src/agent/production-agent.ts +37 -6
- 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 +145 -0
- package/corpus/core/src/client/history/index.ts +18 -0
- package/corpus/core/src/client/history/use-history.ts +86 -0
- package/corpus/core/src/client/index.ts +76 -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 +25 -0
- package/corpus/core/src/client/review/use-review.ts +114 -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 +89 -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 +27 -0
- package/corpus/core/src/history/registry.ts +99 -0
- package/corpus/core/src/history/store.ts +348 -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 +38 -0
- package/corpus/core/src/review/actions/create-review-comment.ts +107 -0
- package/corpus/core/src/review/actions/delete-review-comment.ts +55 -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 +60 -0
- package/corpus/core/src/review/actions/set-review-status.ts +58 -0
- package/corpus/core/src/review/index.ts +36 -0
- package/corpus/core/src/review/mentions.ts +44 -0
- package/corpus/core/src/review/registry.ts +99 -0
- package/corpus/core/src/review/store.ts +687 -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-engine-api-key-route.ts +5 -0
- package/corpus/core/src/server/credential-provider.ts +108 -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/brain/app/routes/settings.tsx +2 -2
- package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +32 -6
- package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +120 -40
- package/corpus/templates/calendar/app/hooks/use-people.ts +55 -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-zoom-stays-selected-after-connecting-it-from-a-draft-event.md +6 -0
- 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/import-loom-recording.ts +1 -0
- package/corpus/templates/clips/actions/lib/ensure-seekable-video.ts +1 -0
- package/corpus/templates/clips/actions/request-transcript.ts +31 -0
- package/corpus/templates/clips/actions/set-thumbnail.ts +2 -0
- package/corpus/templates/clips/app/components/library/organization-switcher.tsx +2 -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/routes/r.$recordingId.tsx +9 -3
- 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-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-sharing-public-clips-now-stays-focused-on-the-normal-link-wi.md +6 -0
- 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 +40 -3
- 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/updater.ts +25 -2
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +7 -0
- 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/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/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/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +22 -14
- 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/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 +24 -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 +46 -0
- package/dist/client/history/use-history.d.ts.map +1 -0
- package/dist/client/history/use-history.js +18 -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 +68 -0
- package/dist/client/review/use-review.d.ts.map +1 -0
- package/dist/client/review/use-review.js +22 -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/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 +65 -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 +61 -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 +265 -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/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/resources/handlers.d.ts +2 -2
- package/dist/review/actions/consume-review-feedback.d.ts +9 -0
- package/dist/review/actions/consume-review-feedback.d.ts.map +1 -0
- package/dist/review/actions/consume-review-feedback.js +29 -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 +10 -0
- package/dist/review/actions/delete-review-comment.d.ts.map +1 -0
- package/dist/review/actions/delete-review-comment.js +45 -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 +11 -0
- package/dist/review/actions/resolve-review-thread.d.ts.map +1 -0
- package/dist/review/actions/resolve-review-thread.js +46 -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 +61 -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 +558 -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/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-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 +26 -0
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +82 -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
|
@@ -57,6 +57,7 @@ import {
|
|
|
57
57
|
MACOS_CAPTURE_PERMISSION_MESSAGE,
|
|
58
58
|
MACOS_SCREEN_PERMISSION_MESSAGE,
|
|
59
59
|
MACOS_SPEECH_PERMISSION_MESSAGE,
|
|
60
|
+
MACOS_UPDATE_RESTART_MESSAGE,
|
|
60
61
|
} from "./lib/permissions";
|
|
61
62
|
import { isMacPlatform, isWindowsPlatform } from "./lib/platform";
|
|
62
63
|
import {
|
|
@@ -78,6 +79,7 @@ import {
|
|
|
78
79
|
saveBool,
|
|
79
80
|
saveString,
|
|
80
81
|
} from "./lib/storage";
|
|
82
|
+
import { installAndRestart, isUpdatePendingRestart } from "./lib/updater";
|
|
81
83
|
import { normalizeServerUrl } from "./lib/url";
|
|
82
84
|
import {
|
|
83
85
|
installDesktopVoiceDictation,
|
|
@@ -1976,7 +1978,16 @@ export function App() {
|
|
|
1976
1978
|
return;
|
|
1977
1979
|
}
|
|
1978
1980
|
if (isHardCapturePermissionError(message)) {
|
|
1979
|
-
|
|
1981
|
+
// If an update has finished downloading and is waiting to install, the
|
|
1982
|
+
// safe next step is to restart (which applies the update and gives the
|
|
1983
|
+
// process a clean binary + permission state). Prefer that hint over the
|
|
1984
|
+
// "grant permissions" banner, which is misleading when the readiness
|
|
1985
|
+
// checkmarks are already green.
|
|
1986
|
+
setRecError(
|
|
1987
|
+
isUpdatePendingRestart()
|
|
1988
|
+
? MACOS_UPDATE_RESTART_MESSAGE
|
|
1989
|
+
: MACOS_CAPTURE_PERMISSION_MESSAGE,
|
|
1990
|
+
);
|
|
1980
1991
|
return;
|
|
1981
1992
|
}
|
|
1982
1993
|
if (isStorageSetupFailureMessage(message)) {
|
|
@@ -2414,8 +2425,10 @@ export function App() {
|
|
|
2414
2425
|
: "Start local recording"}
|
|
2415
2426
|
</button>
|
|
2416
2427
|
{recError ? (
|
|
2417
|
-
recError ===
|
|
2418
|
-
|
|
2428
|
+
recError === MACOS_UPDATE_RESTART_MESSAGE ? (
|
|
2429
|
+
<UpdateRestartBanner message={recError} />
|
|
2430
|
+
) : recError === MACOS_CAPTURE_PERMISSION_MESSAGE ||
|
|
2431
|
+
recError === MACOS_SCREEN_PERMISSION_MESSAGE ? (
|
|
2419
2432
|
<PermissionRecoveryBanner
|
|
2420
2433
|
kind="recording"
|
|
2421
2434
|
message={recError}
|
|
@@ -2579,6 +2592,30 @@ function PermissionRecoveryBanner({
|
|
|
2579
2592
|
);
|
|
2580
2593
|
}
|
|
2581
2594
|
|
|
2595
|
+
function UpdateRestartBanner({ message }: { message: string }) {
|
|
2596
|
+
return (
|
|
2597
|
+
<div className="error-banner permission-banner">
|
|
2598
|
+
<div className="permission-copy">
|
|
2599
|
+
<div className="permission-title">Restart to finish updating</div>
|
|
2600
|
+
<div>{message}</div>
|
|
2601
|
+
</div>
|
|
2602
|
+
<div className="permission-actions">
|
|
2603
|
+
<button
|
|
2604
|
+
type="button"
|
|
2605
|
+
className="permission-retry"
|
|
2606
|
+
onClick={() => {
|
|
2607
|
+
installAndRestart().catch((err) => {
|
|
2608
|
+
console.error("[clips-updater] relaunch failed:", err);
|
|
2609
|
+
});
|
|
2610
|
+
}}
|
|
2611
|
+
>
|
|
2612
|
+
Restart Clips
|
|
2613
|
+
</button>
|
|
2614
|
+
</div>
|
|
2615
|
+
</div>
|
|
2616
|
+
);
|
|
2617
|
+
}
|
|
2618
|
+
|
|
2582
2619
|
function StorageConnectionBanner({ onConnect }: { onConnect: () => void }) {
|
|
2583
2620
|
return (
|
|
2584
2621
|
<div className="storage-flow-banner">
|
|
@@ -10,7 +10,6 @@ import {
|
|
|
10
10
|
|
|
11
11
|
import {
|
|
12
12
|
chooseFallbackAudioInput,
|
|
13
|
-
findAudioInputBySavedLabel,
|
|
14
13
|
isPseudoMediaDeviceId,
|
|
15
14
|
isSelectableAudioInputDevice,
|
|
16
15
|
normalizedMediaDeviceId,
|
|
@@ -272,17 +271,30 @@ export function useMediaDevices({
|
|
|
272
271
|
useEffect(() => {
|
|
273
272
|
if (isPseudoMediaDeviceId(micId) || !micId || mics.length === 0) return;
|
|
274
273
|
if (mics.some((d) => d.deviceId === micId)) return;
|
|
275
|
-
|
|
274
|
+
// The selected mic (e.g. Bluetooth headset unplugged mid-session) is gone.
|
|
275
|
+
// Prefer rematching by saved label, then fall back to the best available
|
|
276
|
+
// input so we don't stay pinned to a device that no longer exists.
|
|
277
|
+
const fallback = chooseFallbackAudioInput(mics, {
|
|
276
278
|
savedLabel: micLabel,
|
|
277
279
|
avoidDeviceIds: [micId],
|
|
278
280
|
});
|
|
279
|
-
if (!
|
|
281
|
+
if (!fallback) {
|
|
282
|
+
// Nothing concrete left; drop to the OS default rather than keeping the
|
|
283
|
+
// disconnected device selected.
|
|
284
|
+
setMicId("");
|
|
285
|
+
setMicLabel("");
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
280
288
|
console.warn(
|
|
281
|
-
"[clips-recorder] saved mic id was missing;
|
|
282
|
-
{
|
|
289
|
+
"[clips-recorder] saved mic id was missing; fell back to available input",
|
|
290
|
+
{
|
|
291
|
+
previousDeviceId: micId,
|
|
292
|
+
nextDeviceId: fallback.deviceId,
|
|
293
|
+
reason: fallback.reason,
|
|
294
|
+
},
|
|
283
295
|
);
|
|
284
|
-
setMicId(
|
|
285
|
-
setMicLabel(
|
|
296
|
+
setMicId(fallback.deviceId);
|
|
297
|
+
setMicLabel(fallback.label);
|
|
286
298
|
}, [micId, micLabel, mics]);
|
|
287
299
|
|
|
288
300
|
useEffect(() => saveString(CAM_KEY, cameraId), [cameraId]);
|
|
@@ -8,6 +8,8 @@ export const MACOS_SCREEN_PERMISSION_MESSAGE =
|
|
|
8
8
|
"Grant Screen Recording permission in macOS Settings, then restart Clips and try again.";
|
|
9
9
|
export const MACOS_SPEECH_PERMISSION_MESSAGE =
|
|
10
10
|
"Grant Speech Recognition and Microphone access, then try again. If you just changed access, restart Clips before retrying.";
|
|
11
|
+
export const MACOS_UPDATE_RESTART_MESSAGE =
|
|
12
|
+
"An update was downloaded and needs a restart to finish installing. Restart Clips, then record again.";
|
|
11
13
|
|
|
12
14
|
export function isHardCapturePermissionError(message: string): boolean {
|
|
13
15
|
return /permission denied by system|blocked by system|system settings|screen recording|privacy|sandbox/i.test(
|
|
@@ -45,9 +45,15 @@ async function runCheck() {
|
|
|
45
45
|
const notes = update.body ?? undefined;
|
|
46
46
|
setStatus({ state: "available", version, notes });
|
|
47
47
|
|
|
48
|
+
// Download ONLY — do not install here. On macOS `install` swaps the .app
|
|
49
|
+
// bundle on disk while this process keeps running, which invalidates the
|
|
50
|
+
// running process's Screen Recording (TCC) grant and breaks capture until
|
|
51
|
+
// relaunch. We defer the swap to `installAndRestart()` so a downloaded-but-
|
|
52
|
+
// not-yet-installed update leaves the running app fully functional; the
|
|
53
|
+
// user records normally until they choose to restart.
|
|
48
54
|
let total = 0;
|
|
49
55
|
let downloaded = 0;
|
|
50
|
-
await update.
|
|
56
|
+
await update.download((event) => {
|
|
51
57
|
if (event.event === "Started") {
|
|
52
58
|
total = event.data.contentLength ?? 0;
|
|
53
59
|
downloaded = 0;
|
|
@@ -98,10 +104,27 @@ export function useUpdateStatus(): UpdateStatus {
|
|
|
98
104
|
}
|
|
99
105
|
|
|
100
106
|
export async function installAndRestart(): Promise<void> {
|
|
101
|
-
//
|
|
107
|
+
// Perform the deferred bundle swap now, then relaunch onto the new binary.
|
|
108
|
+
// Installing immediately before relaunch keeps the window where the on-disk
|
|
109
|
+
// bundle no longer matches the running process as short as possible — the
|
|
110
|
+
// process is torn down by `relaunch()` right after, so capture never runs
|
|
111
|
+
// against a swapped-out bundle.
|
|
112
|
+
if (pendingUpdate) {
|
|
113
|
+
await pendingUpdate.install();
|
|
114
|
+
}
|
|
102
115
|
await relaunch();
|
|
103
116
|
}
|
|
104
117
|
|
|
118
|
+
/**
|
|
119
|
+
* True once an update has been downloaded and is waiting for the user to
|
|
120
|
+
* restart. The recording flow uses this to explain a post-download capture
|
|
121
|
+
* failure as "restart to finish updating" instead of a misleading "grant
|
|
122
|
+
* permissions" message — see `app.tsx` recError routing.
|
|
123
|
+
*/
|
|
124
|
+
export function isUpdatePendingRestart(): boolean {
|
|
125
|
+
return cachedStatus.state === "downloaded";
|
|
126
|
+
}
|
|
127
|
+
|
|
105
128
|
/**
|
|
106
129
|
* Manual retry entry point. Used by the UpdateBanner's error state to let
|
|
107
130
|
* users re-attempt after a signature-verification / download / network
|
|
@@ -1538,6 +1538,13 @@ fn take_and_finalize_active_session(
|
|
|
1538
1538
|
session.lost_segment_duration.as_secs()
|
|
1539
1539
|
);
|
|
1540
1540
|
}
|
|
1541
|
+
|
|
1542
|
+
if let Some(paused_at) = session.paused_at.take() {
|
|
1543
|
+
session.paused_total = session
|
|
1544
|
+
.paused_total
|
|
1545
|
+
.checked_add(paused_at.elapsed())
|
|
1546
|
+
.unwrap_or(session.paused_total);
|
|
1547
|
+
}
|
|
1541
1548
|
let duration_ms = session
|
|
1542
1549
|
.started_at
|
|
1543
1550
|
.elapsed()
|
|
@@ -6,10 +6,12 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
+
readAppState,
|
|
9
10
|
writeAppState,
|
|
10
11
|
deleteAppStateByPrefix,
|
|
11
12
|
} from "@agent-native/core/application-state";
|
|
12
13
|
import { runWithRequestContext } from "@agent-native/core/server";
|
|
14
|
+
import { isStoredButUnservableFinalizeError } from "@shared/finalize-recovery.js";
|
|
13
15
|
import { and, eq } from "drizzle-orm";
|
|
14
16
|
import {
|
|
15
17
|
defineEventHandler,
|
|
@@ -50,6 +52,7 @@ export default defineEventHandler(async (event: H3Event) => {
|
|
|
50
52
|
id: schema.recordings.id,
|
|
51
53
|
status: schema.recordings.status,
|
|
52
54
|
videoUrl: schema.recordings.videoUrl,
|
|
55
|
+
failureReason: schema.recordings.failureReason,
|
|
53
56
|
})
|
|
54
57
|
.from(schema.recordings)
|
|
55
58
|
.where(
|
|
@@ -68,10 +71,14 @@ export default defineEventHandler(async (event: H3Event) => {
|
|
|
68
71
|
return { ok: true, recordingId, alreadyReady: true, chunksCleared: 0 };
|
|
69
72
|
}
|
|
70
73
|
|
|
74
|
+
const preserveRecoveryState =
|
|
75
|
+
isStoredButUnservableFinalizeError(failureReason) ||
|
|
76
|
+
isStoredButUnservableFinalizeError(existing.failureReason);
|
|
77
|
+
|
|
71
78
|
// Already a terminal failure (e.g. a duplicate/retried abort call, or
|
|
72
79
|
// finalize's own failChunkAssembly already flipped it) — no-op instead of
|
|
73
80
|
// re-clearing chunk state and overwriting the original failureReason.
|
|
74
|
-
if (existing.status === "failed") {
|
|
81
|
+
if (existing.status === "failed" && !preserveRecoveryState) {
|
|
75
82
|
return { ok: true, recordingId, alreadyFailed: true, chunksCleared: 0 };
|
|
76
83
|
}
|
|
77
84
|
|
|
@@ -85,17 +92,27 @@ export default defineEventHandler(async (event: H3Event) => {
|
|
|
85
92
|
})
|
|
86
93
|
.where(eq(schema.recordings.id, recordingId));
|
|
87
94
|
|
|
95
|
+
const existingUploadStateRaw = await readAppState(
|
|
96
|
+
`recording-upload-${recordingId}`,
|
|
97
|
+
).catch(() => null);
|
|
98
|
+
const existingUploadState =
|
|
99
|
+
existingUploadStateRaw && typeof existingUploadStateRaw === "object"
|
|
100
|
+
? (existingUploadStateRaw as Record<string, unknown>)
|
|
101
|
+
: {};
|
|
88
102
|
await writeAppState(`recording-upload-${recordingId}`, {
|
|
103
|
+
...existingUploadState,
|
|
89
104
|
recordingId,
|
|
90
105
|
status: "failed",
|
|
91
106
|
failureReason,
|
|
92
107
|
updatedAt: now,
|
|
93
108
|
});
|
|
94
109
|
|
|
95
|
-
const cleared =
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
110
|
+
const cleared = preserveRecoveryState
|
|
111
|
+
? 0
|
|
112
|
+
: await deleteAppStateByPrefix(`recording-chunks-${recordingId}-`);
|
|
113
|
+
if (!preserveRecoveryState) {
|
|
114
|
+
await deleteResumableSession(recordingId).catch(() => {});
|
|
115
|
+
}
|
|
99
116
|
await writeAppState("refresh-signal", { ts: Date.now() });
|
|
100
117
|
|
|
101
118
|
return { ok: true, recordingId, chunksCleared: cleared };
|
|
@@ -596,7 +596,15 @@ export default defineEventHandler(async (event: H3Event) => {
|
|
|
596
596
|
updatedAt: new Date().toISOString(),
|
|
597
597
|
})
|
|
598
598
|
.where(eq(schema.recordings.id, recordingId));
|
|
599
|
+
const failedUploadStateRaw = await readAppState(
|
|
600
|
+
`recording-upload-${recordingId}`,
|
|
601
|
+
).catch(() => null);
|
|
602
|
+
const failedUploadState =
|
|
603
|
+
failedUploadStateRaw && typeof failedUploadStateRaw === "object"
|
|
604
|
+
? (failedUploadStateRaw as Record<string, unknown>)
|
|
605
|
+
: {};
|
|
599
606
|
await writeAppState(`recording-upload-${recordingId}`, {
|
|
607
|
+
...failedUploadState,
|
|
600
608
|
recordingId,
|
|
601
609
|
status: "failed",
|
|
602
610
|
failureReason: err instanceof Error ? err.message : "Finalize failed",
|
|
@@ -177,13 +177,13 @@ function rememberCompressedBuilderMediaMiss(compressedSourceUrl: string): void {
|
|
|
177
177
|
function shouldFallbackToOriginalMedia(
|
|
178
178
|
upstream: Response | { error: string; status: number },
|
|
179
179
|
): boolean {
|
|
180
|
-
return [403, 404, 416].includes(upstream.status);
|
|
180
|
+
return upstream.status >= 500 || [403, 404, 416].includes(upstream.status);
|
|
181
181
|
}
|
|
182
182
|
|
|
183
183
|
function shouldRememberCompressedBuilderMediaMiss(
|
|
184
184
|
upstream: Response | { error: string; status: number },
|
|
185
185
|
): boolean {
|
|
186
|
-
return [403, 404].includes(upstream.status);
|
|
186
|
+
return upstream.status >= 500 || [403, 404].includes(upstream.status);
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
async function fetchProviderMedia(
|
|
@@ -497,10 +497,17 @@ export default defineEventHandler(async (event: H3Event) => {
|
|
|
497
497
|
compressedSourceUrl &&
|
|
498
498
|
!shouldSkipCompressedBuilderMediaProbe(compressedSourceUrl)
|
|
499
499
|
) {
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
500
|
+
try {
|
|
501
|
+
upstream = await fetchProviderMedia(
|
|
502
|
+
compressedSourceUrl,
|
|
503
|
+
rangeHeader,
|
|
504
|
+
);
|
|
505
|
+
} catch (err) {
|
|
506
|
+
upstream = {
|
|
507
|
+
status: statusCodeForProviderFetchError(err),
|
|
508
|
+
error: messageForProviderFetchError(err),
|
|
509
|
+
};
|
|
510
|
+
}
|
|
504
511
|
if (shouldRememberCompressedBuilderMediaMiss(upstream)) {
|
|
505
512
|
rememberCompressedBuilderMediaMiss(compressedSourceUrl);
|
|
506
513
|
}
|
|
@@ -48,6 +48,18 @@ function sleep(ms: number, signal?: AbortSignal): Promise<void> {
|
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
export function isStoredButUnservableFinalizeError(value: unknown): boolean {
|
|
52
|
+
const message =
|
|
53
|
+
typeof value === "string"
|
|
54
|
+
? value
|
|
55
|
+
: value instanceof Error
|
|
56
|
+
? value.message
|
|
57
|
+
: value && typeof value === "object" && "message" in value
|
|
58
|
+
? String((value as { message?: unknown }).message ?? "")
|
|
59
|
+
: "";
|
|
60
|
+
return /\bstored-but-unservable\b/i.test(message);
|
|
61
|
+
}
|
|
62
|
+
|
|
51
63
|
function absoluteUploadUrl(uploadUrl: string): URL {
|
|
52
64
|
if (/^[a-z][a-z0-9+.-]*:/i.test(uploadUrl)) return new URL(uploadUrl);
|
|
53
65
|
const origin =
|