@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.
Files changed (429) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +12 -0
  3. package/corpus/core/docs/content/agent-native-toolkit.mdx +87 -80
  4. package/corpus/core/docs/content/locales/ar-SA/agent-native-toolkit.mdx +89 -80
  5. package/corpus/core/docs/content/locales/de-DE/agent-native-toolkit.mdx +89 -80
  6. package/corpus/core/docs/content/locales/es-ES/agent-native-toolkit.mdx +89 -80
  7. package/corpus/core/docs/content/locales/fr-FR/agent-native-toolkit.mdx +89 -80
  8. package/corpus/core/docs/content/locales/hi-IN/agent-native-toolkit.mdx +89 -80
  9. package/corpus/core/docs/content/locales/ja-JP/agent-native-toolkit.mdx +89 -80
  10. package/corpus/core/docs/content/locales/ko-KR/agent-native-toolkit.mdx +89 -80
  11. package/corpus/core/docs/content/locales/pt-BR/agent-native-toolkit.mdx +89 -80
  12. package/corpus/core/docs/content/locales/zh-CN/agent-native-toolkit.mdx +89 -80
  13. package/corpus/core/docs/content/locales/zh-TW/agent-native-toolkit.mdx +89 -80
  14. package/corpus/core/docs/content/toolkit-agent-ux.mdx +43 -0
  15. package/corpus/core/docs/content/toolkit-app-adapters.mdx +9 -0
  16. package/corpus/core/docs/content/toolkit-collaboration-ui.mdx +12 -0
  17. package/corpus/core/docs/content/toolkit-collaboration.mdx +74 -0
  18. package/corpus/core/docs/content/toolkit-command-navigation.mdx +106 -0
  19. package/corpus/core/docs/content/toolkit-comments-review.mdx +98 -0
  20. package/corpus/core/docs/content/toolkit-history.mdx +95 -0
  21. package/corpus/core/docs/content/toolkit-observability.mdx +41 -0
  22. package/corpus/core/docs/content/toolkit-org-team.mdx +80 -0
  23. package/corpus/core/docs/content/toolkit-resources.mdx +57 -0
  24. package/corpus/core/docs/content/toolkit-settings.mdx +65 -0
  25. package/corpus/core/docs/content/toolkit-setup-connections.mdx +109 -0
  26. package/corpus/core/docs/content/toolkit-sharing-ui.mdx +18 -6
  27. package/corpus/core/docs/content/toolkit-sharing.mdx +81 -0
  28. package/corpus/core/docs/content/toolkit-shell-hooks.mdx +9 -0
  29. package/corpus/core/docs/content/toolkit-ui.mdx +9 -0
  30. package/corpus/core/package.json +35 -1
  31. package/corpus/core/src/agent/engine/ai-sdk-engine.ts +19 -1
  32. package/corpus/core/src/agent/engine/anthropic-engine.ts +25 -1
  33. package/corpus/core/src/agent/engine/registry.ts +23 -16
  34. package/corpus/core/src/agent/production-agent.ts +37 -6
  35. package/corpus/core/src/client/command-navigation/index.ts +15 -0
  36. package/corpus/core/src/client/comments-review/index.ts +1 -0
  37. package/corpus/core/src/client/history/VersionHistoryPanel.tsx +145 -0
  38. package/corpus/core/src/client/history/index.ts +18 -0
  39. package/corpus/core/src/client/history/use-history.ts +86 -0
  40. package/corpus/core/src/client/index.ts +76 -9
  41. package/corpus/core/src/client/org/OrgSwitcher.tsx +6 -6
  42. package/corpus/core/src/client/org/RequireActiveOrg.tsx +2 -2
  43. package/corpus/core/src/client/org/TeamPage.tsx +3 -3
  44. package/corpus/core/src/client/org/hooks.ts +32 -0
  45. package/corpus/core/src/client/org/index.ts +30 -1
  46. package/corpus/core/src/client/org-team/index.ts +1 -0
  47. package/corpus/core/src/client/review/ReviewStatusBadge.tsx +39 -0
  48. package/corpus/core/src/client/review/ReviewThreadPanel.tsx +278 -0
  49. package/corpus/core/src/client/review/index.ts +25 -0
  50. package/corpus/core/src/client/review/use-review.ts +114 -0
  51. package/corpus/core/src/client/settings/index.ts +11 -1
  52. package/corpus/core/src/client/setup-connections/BuilderConnectCard.tsx +94 -0
  53. package/corpus/core/src/client/setup-connections/ProviderReadinessBadge.tsx +73 -0
  54. package/corpus/core/src/client/setup-connections/SetupConnectionsPage.tsx +94 -0
  55. package/corpus/core/src/client/setup-connections/index.ts +46 -0
  56. package/corpus/core/src/client/sharing/ShareButton.tsx +20 -14
  57. package/corpus/core/src/client/sharing/ShareDialog.tsx +3 -3
  58. package/corpus/core/src/command-navigation/actions.ts +100 -0
  59. package/corpus/core/src/command-navigation/index.ts +12 -0
  60. package/corpus/core/src/comments-review/index.ts +1 -0
  61. package/corpus/core/src/file-upload/builder.ts +24 -3
  62. package/corpus/core/src/file-upload/types.ts +3 -1
  63. package/corpus/core/src/history/actions/create-resource-version.ts +89 -0
  64. package/corpus/core/src/history/actions/get-resource-version.ts +60 -0
  65. package/corpus/core/src/history/actions/list-resource-history.ts +53 -0
  66. package/corpus/core/src/history/actions/list-resource-versions.ts +43 -0
  67. package/corpus/core/src/history/actions/restore-resource-version.ts +96 -0
  68. package/corpus/core/src/history/index.ts +27 -0
  69. package/corpus/core/src/history/registry.ts +99 -0
  70. package/corpus/core/src/history/store.ts +348 -0
  71. package/corpus/core/src/history/types.ts +69 -0
  72. package/corpus/core/src/index.ts +10 -0
  73. package/corpus/core/src/navigation/index.ts +170 -0
  74. package/corpus/core/src/org/index.ts +8 -0
  75. package/corpus/core/src/org/permissions.ts +30 -0
  76. package/corpus/core/src/org-team/index.ts +1 -0
  77. package/corpus/core/src/private-blob/registry.ts +1 -0
  78. package/corpus/core/src/review/actions/consume-review-feedback.ts +38 -0
  79. package/corpus/core/src/review/actions/create-review-comment.ts +107 -0
  80. package/corpus/core/src/review/actions/delete-review-comment.ts +55 -0
  81. package/corpus/core/src/review/actions/get-review-feedback.ts +54 -0
  82. package/corpus/core/src/review/actions/list-review-comments.ts +53 -0
  83. package/corpus/core/src/review/actions/reply-review-comment.ts +107 -0
  84. package/corpus/core/src/review/actions/resolve-review-thread.ts +60 -0
  85. package/corpus/core/src/review/actions/set-review-status.ts +58 -0
  86. package/corpus/core/src/review/index.ts +36 -0
  87. package/corpus/core/src/review/mentions.ts +44 -0
  88. package/corpus/core/src/review/registry.ts +99 -0
  89. package/corpus/core/src/review/store.ts +687 -0
  90. package/corpus/core/src/review/types.ts +97 -0
  91. package/corpus/core/src/server/action-discovery.ts +54 -0
  92. package/corpus/core/src/server/agent-engine-api-key-route.ts +5 -0
  93. package/corpus/core/src/server/credential-provider.ts +108 -0
  94. package/corpus/core/src/setup-connections/index.ts +89 -0
  95. package/corpus/core/src/setup-connections/onboarding.ts +47 -0
  96. package/corpus/core/src/transcription/builder-transcription.ts +9 -2
  97. package/corpus/core/src/vite/action-types-plugin.ts +52 -0
  98. package/corpus/templates/analytics/app/components/layout/Layout.tsx +2 -1
  99. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +2 -2
  100. package/corpus/templates/analytics/app/global.css +22 -10
  101. package/corpus/templates/analytics/app/i18n/zh-TW.ts +6 -1
  102. package/corpus/templates/analytics/app/i18n-data.ts +81 -13
  103. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +2 -2
  104. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +2 -2
  105. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +528 -108
  106. package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +466 -183
  107. package/corpus/templates/analytics/changelog/2026-07-07-session-replays-load-sooner-show-clearer-activity-timelines-.md +6 -0
  108. package/corpus/templates/brain/app/routes/settings.tsx +2 -2
  109. package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +32 -6
  110. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +120 -40
  111. package/corpus/templates/calendar/app/hooks/use-people.ts +55 -0
  112. package/corpus/templates/calendar/changelog/2026-07-07-guest-suggestions-now-find-coworkers-from-your-google-worksp.md +6 -0
  113. package/corpus/templates/calendar/changelog/2026-07-07-zoom-stays-selected-after-connecting-it-from-a-draft-event.md +6 -0
  114. package/corpus/templates/clips/actions/create-recording.ts +5 -1
  115. package/corpus/templates/clips/actions/finalize-recording.ts +140 -1
  116. package/corpus/templates/clips/actions/import-loom-recording.ts +1 -0
  117. package/corpus/templates/clips/actions/lib/ensure-seekable-video.ts +1 -0
  118. package/corpus/templates/clips/actions/request-transcript.ts +31 -0
  119. package/corpus/templates/clips/actions/set-thumbnail.ts +2 -0
  120. package/corpus/templates/clips/app/components/library/organization-switcher.tsx +2 -2
  121. package/corpus/templates/clips/app/components/player/scrubber-position.ts +9 -0
  122. package/corpus/templates/clips/app/components/player/scrubber.tsx +5 -2
  123. package/corpus/templates/clips/app/components/player/share-dialog.tsx +69 -41
  124. package/corpus/templates/clips/app/components/player/video-player.tsx +38 -1
  125. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +3 -3
  126. package/corpus/templates/clips/app/components/sharing/slack-share-hint.tsx +9 -19
  127. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +9 -3
  128. package/corpus/templates/clips/app/routes/record.tsx +21 -12
  129. package/corpus/templates/clips/changelog/2026-07-02-recordings-now-wait-for-storage-media-to-serve-before-finishing.md +6 -0
  130. package/corpus/templates/clips/changelog/2026-07-07-a-pending-app-update-no-longer-blocks-screen-recording-updat.md +6 -0
  131. package/corpus/templates/clips/changelog/2026-07-07-chrome-extension-recordings-keep-audio-after-refreshing-tab.md +6 -0
  132. package/corpus/templates/clips/changelog/2026-07-07-clip-playback-progress-now-starts-and-finishes-at-the-right-times.md +6 -0
  133. package/corpus/templates/clips/changelog/2026-07-07-sharing-public-clips-now-stays-focused-on-the-normal-link-wi.md +6 -0
  134. package/corpus/templates/clips/chrome-extension/src/background.ts +18 -0
  135. package/corpus/templates/clips/chrome-extension/src/offscreen.ts +23 -8
  136. package/corpus/templates/clips/desktop/src/app.tsx +40 -3
  137. package/corpus/templates/clips/desktop/src/hooks/useMediaDevices.ts +19 -7
  138. package/corpus/templates/clips/desktop/src/lib/permissions.ts +2 -0
  139. package/corpus/templates/clips/desktop/src/lib/updater.ts +25 -2
  140. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +7 -0
  141. package/corpus/templates/clips/server/routes/api/recordings/[recordingId]/thumbnail.post.ts +1 -0
  142. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +22 -5
  143. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +8 -0
  144. package/corpus/templates/clips/server/routes/api/video/[recordingId].get.ts +13 -6
  145. package/corpus/templates/clips/shared/finalize-recovery.ts +12 -0
  146. package/corpus/templates/content/actions/delete-document.ts +337 -52
  147. package/corpus/templates/content/changelog/2026-07-07-permanently-deleting-trashed-databases-now-finishes-reliably.md +6 -0
  148. package/corpus/templates/slides/app/pages/DeckEditor.tsx +2 -2
  149. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  150. package/dist/agent/engine/ai-sdk-engine.js +15 -1
  151. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  152. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  153. package/dist/agent/engine/anthropic-engine.js +20 -1
  154. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  155. package/dist/agent/engine/registry.d.ts.map +1 -1
  156. package/dist/agent/engine/registry.js +22 -14
  157. package/dist/agent/engine/registry.js.map +1 -1
  158. package/dist/agent/production-agent.d.ts.map +1 -1
  159. package/dist/agent/production-agent.js +27 -7
  160. package/dist/agent/production-agent.js.map +1 -1
  161. package/dist/client/command-navigation/index.d.ts +4 -0
  162. package/dist/client/command-navigation/index.d.ts.map +1 -0
  163. package/dist/client/command-navigation/index.js +4 -0
  164. package/dist/client/command-navigation/index.js.map +1 -0
  165. package/dist/client/comments-review/index.d.ts +2 -0
  166. package/dist/client/comments-review/index.d.ts.map +1 -0
  167. package/dist/client/comments-review/index.js +2 -0
  168. package/dist/client/comments-review/index.js.map +1 -0
  169. package/dist/client/history/VersionHistoryPanel.d.ts +18 -0
  170. package/dist/client/history/VersionHistoryPanel.d.ts.map +1 -0
  171. package/dist/client/history/VersionHistoryPanel.js +24 -0
  172. package/dist/client/history/VersionHistoryPanel.js.map +1 -0
  173. package/dist/client/history/index.d.ts +3 -0
  174. package/dist/client/history/index.d.ts.map +1 -0
  175. package/dist/client/history/index.js +3 -0
  176. package/dist/client/history/index.js.map +1 -0
  177. package/dist/client/history/use-history.d.ts +46 -0
  178. package/dist/client/history/use-history.d.ts.map +1 -0
  179. package/dist/client/history/use-history.js +18 -0
  180. package/dist/client/history/use-history.js.map +1 -0
  181. package/dist/client/index.d.ts +6 -4
  182. package/dist/client/index.d.ts.map +1 -1
  183. package/dist/client/index.js +6 -4
  184. package/dist/client/index.js.map +1 -1
  185. package/dist/client/org/OrgSwitcher.js +5 -5
  186. package/dist/client/org/OrgSwitcher.js.map +1 -1
  187. package/dist/client/org/RequireActiveOrg.js +2 -2
  188. package/dist/client/org/RequireActiveOrg.js.map +1 -1
  189. package/dist/client/org/TeamPage.js +3 -3
  190. package/dist/client/org/TeamPage.js.map +1 -1
  191. package/dist/client/org/hooks.d.ts +12 -1
  192. package/dist/client/org/hooks.d.ts.map +1 -1
  193. package/dist/client/org/hooks.js +15 -0
  194. package/dist/client/org/hooks.js.map +1 -1
  195. package/dist/client/org/index.d.ts +4 -2
  196. package/dist/client/org/index.d.ts.map +1 -1
  197. package/dist/client/org/index.js +3 -1
  198. package/dist/client/org/index.js.map +1 -1
  199. package/dist/client/org-team/index.d.ts +2 -0
  200. package/dist/client/org-team/index.d.ts.map +1 -0
  201. package/dist/client/org-team/index.js +2 -0
  202. package/dist/client/org-team/index.js.map +1 -0
  203. package/dist/client/review/ReviewStatusBadge.d.ts +7 -0
  204. package/dist/client/review/ReviewStatusBadge.d.ts.map +1 -0
  205. package/dist/client/review/ReviewStatusBadge.js +19 -0
  206. package/dist/client/review/ReviewStatusBadge.js.map +1 -0
  207. package/dist/client/review/ReviewThreadPanel.d.ts +20 -0
  208. package/dist/client/review/ReviewThreadPanel.d.ts.map +1 -0
  209. package/dist/client/review/ReviewThreadPanel.js +84 -0
  210. package/dist/client/review/ReviewThreadPanel.js.map +1 -0
  211. package/dist/client/review/index.d.ts +4 -0
  212. package/dist/client/review/index.d.ts.map +1 -0
  213. package/dist/client/review/index.js +4 -0
  214. package/dist/client/review/index.js.map +1 -0
  215. package/dist/client/review/use-review.d.ts +68 -0
  216. package/dist/client/review/use-review.d.ts.map +1 -0
  217. package/dist/client/review/use-review.js +22 -0
  218. package/dist/client/review/use-review.js.map +1 -0
  219. package/dist/client/settings/index.d.ts +1 -1
  220. package/dist/client/settings/index.d.ts.map +1 -1
  221. package/dist/client/settings/index.js +1 -1
  222. package/dist/client/settings/index.js.map +1 -1
  223. package/dist/client/setup-connections/BuilderConnectCard.d.ts +9 -0
  224. package/dist/client/setup-connections/BuilderConnectCard.d.ts.map +1 -0
  225. package/dist/client/setup-connections/BuilderConnectCard.js +25 -0
  226. package/dist/client/setup-connections/BuilderConnectCard.js.map +1 -0
  227. package/dist/client/setup-connections/ProviderReadinessBadge.d.ts +8 -0
  228. package/dist/client/setup-connections/ProviderReadinessBadge.d.ts.map +1 -0
  229. package/dist/client/setup-connections/ProviderReadinessBadge.js +32 -0
  230. package/dist/client/setup-connections/ProviderReadinessBadge.js.map +1 -0
  231. package/dist/client/setup-connections/SetupConnectionsPage.d.ts +17 -0
  232. package/dist/client/setup-connections/SetupConnectionsPage.d.ts.map +1 -0
  233. package/dist/client/setup-connections/SetupConnectionsPage.js +10 -0
  234. package/dist/client/setup-connections/SetupConnectionsPage.js.map +1 -0
  235. package/dist/client/setup-connections/index.d.ts +7 -0
  236. package/dist/client/setup-connections/index.d.ts.map +1 -0
  237. package/dist/client/setup-connections/index.js +7 -0
  238. package/dist/client/setup-connections/index.js.map +1 -0
  239. package/dist/client/sharing/ShareButton.d.ts +4 -4
  240. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  241. package/dist/client/sharing/ShareButton.js +13 -7
  242. package/dist/client/sharing/ShareButton.js.map +1 -1
  243. package/dist/client/sharing/ShareDialog.js +3 -3
  244. package/dist/client/sharing/ShareDialog.js.map +1 -1
  245. package/dist/collab/struct-routes.d.ts +1 -1
  246. package/dist/command-navigation/actions.d.ts +25 -0
  247. package/dist/command-navigation/actions.d.ts.map +1 -0
  248. package/dist/command-navigation/actions.js +64 -0
  249. package/dist/command-navigation/actions.js.map +1 -0
  250. package/dist/command-navigation/index.d.ts +4 -0
  251. package/dist/command-navigation/index.d.ts.map +1 -0
  252. package/dist/command-navigation/index.js +4 -0
  253. package/dist/command-navigation/index.js.map +1 -0
  254. package/dist/comments-review/index.d.ts +2 -0
  255. package/dist/comments-review/index.d.ts.map +1 -0
  256. package/dist/comments-review/index.js +2 -0
  257. package/dist/comments-review/index.js.map +1 -0
  258. package/dist/file-upload/builder.d.ts.map +1 -1
  259. package/dist/file-upload/builder.js +18 -2
  260. package/dist/file-upload/builder.js.map +1 -1
  261. package/dist/file-upload/types.d.ts +3 -0
  262. package/dist/file-upload/types.d.ts.map +1 -1
  263. package/dist/file-upload/types.js.map +1 -1
  264. package/dist/history/actions/create-resource-version.d.ts +10 -0
  265. package/dist/history/actions/create-resource-version.d.ts.map +1 -0
  266. package/dist/history/actions/create-resource-version.js +65 -0
  267. package/dist/history/actions/create-resource-version.js.map +1 -0
  268. package/dist/history/actions/get-resource-version.d.ts +10 -0
  269. package/dist/history/actions/get-resource-version.d.ts.map +1 -0
  270. package/dist/history/actions/get-resource-version.js +38 -0
  271. package/dist/history/actions/get-resource-version.js.map +1 -0
  272. package/dist/history/actions/list-resource-history.d.ts +10 -0
  273. package/dist/history/actions/list-resource-history.d.ts.map +1 -0
  274. package/dist/history/actions/list-resource-history.js +45 -0
  275. package/dist/history/actions/list-resource-history.js.map +1 -0
  276. package/dist/history/actions/list-resource-versions.d.ts +10 -0
  277. package/dist/history/actions/list-resource-versions.d.ts.map +1 -0
  278. package/dist/history/actions/list-resource-versions.js +35 -0
  279. package/dist/history/actions/list-resource-versions.js.map +1 -0
  280. package/dist/history/actions/restore-resource-version.d.ts +11 -0
  281. package/dist/history/actions/restore-resource-version.d.ts.map +1 -0
  282. package/dist/history/actions/restore-resource-version.js +59 -0
  283. package/dist/history/actions/restore-resource-version.js.map +1 -0
  284. package/dist/history/index.d.ts +4 -0
  285. package/dist/history/index.d.ts.map +1 -0
  286. package/dist/history/index.js +3 -0
  287. package/dist/history/index.js.map +1 -0
  288. package/dist/history/registry.d.ts +10 -0
  289. package/dist/history/registry.d.ts.map +1 -0
  290. package/dist/history/registry.js +61 -0
  291. package/dist/history/registry.js.map +1 -0
  292. package/dist/history/store.d.ts +34 -0
  293. package/dist/history/store.d.ts.map +1 -0
  294. package/dist/history/store.js +265 -0
  295. package/dist/history/store.js.map +1 -0
  296. package/dist/history/types.d.ts +55 -0
  297. package/dist/history/types.d.ts.map +1 -0
  298. package/dist/history/types.js +2 -0
  299. package/dist/history/types.js.map +1 -0
  300. package/dist/index.d.ts +6 -0
  301. package/dist/index.d.ts.map +1 -1
  302. package/dist/index.js +6 -0
  303. package/dist/index.js.map +1 -1
  304. package/dist/navigation/index.d.ts +53 -0
  305. package/dist/navigation/index.d.ts.map +1 -0
  306. package/dist/navigation/index.js +105 -0
  307. package/dist/navigation/index.js.map +1 -0
  308. package/dist/org/index.d.ts +1 -0
  309. package/dist/org/index.d.ts.map +1 -1
  310. package/dist/org/index.js +1 -0
  311. package/dist/org/index.js.map +1 -1
  312. package/dist/org/permissions.d.ts +7 -0
  313. package/dist/org/permissions.d.ts.map +1 -0
  314. package/dist/org/permissions.js +21 -0
  315. package/dist/org/permissions.js.map +1 -0
  316. package/dist/org-team/index.d.ts +2 -0
  317. package/dist/org-team/index.d.ts.map +1 -0
  318. package/dist/org-team/index.js +2 -0
  319. package/dist/org-team/index.js.map +1 -0
  320. package/dist/private-blob/registry.d.ts.map +1 -1
  321. package/dist/private-blob/registry.js +1 -0
  322. package/dist/private-blob/registry.js.map +1 -1
  323. package/dist/resources/handlers.d.ts +2 -2
  324. package/dist/review/actions/consume-review-feedback.d.ts +9 -0
  325. package/dist/review/actions/consume-review-feedback.d.ts.map +1 -0
  326. package/dist/review/actions/consume-review-feedback.js +29 -0
  327. package/dist/review/actions/consume-review-feedback.js.map +1 -0
  328. package/dist/review/actions/create-review-comment.d.ts +18 -0
  329. package/dist/review/actions/create-review-comment.d.ts.map +1 -0
  330. package/dist/review/actions/create-review-comment.js +81 -0
  331. package/dist/review/actions/create-review-comment.js.map +1 -0
  332. package/dist/review/actions/delete-review-comment.d.ts +10 -0
  333. package/dist/review/actions/delete-review-comment.d.ts.map +1 -0
  334. package/dist/review/actions/delete-review-comment.js +45 -0
  335. package/dist/review/actions/delete-review-comment.js.map +1 -0
  336. package/dist/review/actions/get-review-feedback.d.ts +10 -0
  337. package/dist/review/actions/get-review-feedback.d.ts.map +1 -0
  338. package/dist/review/actions/get-review-feedback.js +45 -0
  339. package/dist/review/actions/get-review-feedback.js.map +1 -0
  340. package/dist/review/actions/list-review-comments.d.ts +13 -0
  341. package/dist/review/actions/list-review-comments.d.ts.map +1 -0
  342. package/dist/review/actions/list-review-comments.js +44 -0
  343. package/dist/review/actions/list-review-comments.js.map +1 -0
  344. package/dist/review/actions/reply-review-comment.d.ts +16 -0
  345. package/dist/review/actions/reply-review-comment.d.ts.map +1 -0
  346. package/dist/review/actions/reply-review-comment.js +84 -0
  347. package/dist/review/actions/reply-review-comment.js.map +1 -0
  348. package/dist/review/actions/resolve-review-thread.d.ts +11 -0
  349. package/dist/review/actions/resolve-review-thread.d.ts.map +1 -0
  350. package/dist/review/actions/resolve-review-thread.js +46 -0
  351. package/dist/review/actions/resolve-review-thread.js.map +1 -0
  352. package/dist/review/actions/set-review-status.d.ts +9 -0
  353. package/dist/review/actions/set-review-status.d.ts.map +1 -0
  354. package/dist/review/actions/set-review-status.js +43 -0
  355. package/dist/review/actions/set-review-status.js.map +1 -0
  356. package/dist/review/index.d.ts +5 -0
  357. package/dist/review/index.d.ts.map +1 -0
  358. package/dist/review/index.js +4 -0
  359. package/dist/review/index.js.map +1 -0
  360. package/dist/review/mentions.d.ts +4 -0
  361. package/dist/review/mentions.d.ts.map +1 -0
  362. package/dist/review/mentions.js +39 -0
  363. package/dist/review/mentions.js.map +1 -0
  364. package/dist/review/registry.d.ts +10 -0
  365. package/dist/review/registry.d.ts.map +1 -0
  366. package/dist/review/registry.js +61 -0
  367. package/dist/review/registry.js.map +1 -0
  368. package/dist/review/store.d.ts +63 -0
  369. package/dist/review/store.d.ts.map +1 -0
  370. package/dist/review/store.js +558 -0
  371. package/dist/review/store.js.map +1 -0
  372. package/dist/review/types.d.ts +77 -0
  373. package/dist/review/types.d.ts.map +1 -0
  374. package/dist/review/types.js +2 -0
  375. package/dist/review/types.js.map +1 -0
  376. package/dist/server/action-discovery.d.ts.map +1 -1
  377. package/dist/server/action-discovery.js +54 -0
  378. package/dist/server/action-discovery.js.map +1 -1
  379. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  380. package/dist/server/agent-engine-api-key-route.d.ts.map +1 -1
  381. package/dist/server/agent-engine-api-key-route.js +5 -0
  382. package/dist/server/agent-engine-api-key-route.js.map +1 -1
  383. package/dist/server/credential-provider.d.ts +26 -0
  384. package/dist/server/credential-provider.d.ts.map +1 -1
  385. package/dist/server/credential-provider.js +82 -0
  386. package/dist/server/credential-provider.js.map +1 -1
  387. package/dist/setup-connections/index.d.ts +6 -0
  388. package/dist/setup-connections/index.d.ts.map +1 -0
  389. package/dist/setup-connections/index.js +6 -0
  390. package/dist/setup-connections/index.js.map +1 -0
  391. package/dist/setup-connections/onboarding.d.ts +14 -0
  392. package/dist/setup-connections/onboarding.d.ts.map +1 -0
  393. package/dist/setup-connections/onboarding.js +23 -0
  394. package/dist/setup-connections/onboarding.js.map +1 -0
  395. package/dist/transcription/builder-transcription.d.ts +1 -0
  396. package/dist/transcription/builder-transcription.d.ts.map +1 -1
  397. package/dist/transcription/builder-transcription.js +5 -2
  398. package/dist/transcription/builder-transcription.js.map +1 -1
  399. package/dist/vite/action-types-plugin.d.ts.map +1 -1
  400. package/dist/vite/action-types-plugin.js +52 -0
  401. package/dist/vite/action-types-plugin.js.map +1 -1
  402. package/docs/content/agent-native-toolkit.mdx +87 -80
  403. package/docs/content/locales/ar-SA/agent-native-toolkit.mdx +89 -80
  404. package/docs/content/locales/de-DE/agent-native-toolkit.mdx +89 -80
  405. package/docs/content/locales/es-ES/agent-native-toolkit.mdx +89 -80
  406. package/docs/content/locales/fr-FR/agent-native-toolkit.mdx +89 -80
  407. package/docs/content/locales/hi-IN/agent-native-toolkit.mdx +89 -80
  408. package/docs/content/locales/ja-JP/agent-native-toolkit.mdx +89 -80
  409. package/docs/content/locales/ko-KR/agent-native-toolkit.mdx +89 -80
  410. package/docs/content/locales/pt-BR/agent-native-toolkit.mdx +89 -80
  411. package/docs/content/locales/zh-CN/agent-native-toolkit.mdx +89 -80
  412. package/docs/content/locales/zh-TW/agent-native-toolkit.mdx +89 -80
  413. package/docs/content/toolkit-agent-ux.mdx +43 -0
  414. package/docs/content/toolkit-app-adapters.mdx +9 -0
  415. package/docs/content/toolkit-collaboration-ui.mdx +12 -0
  416. package/docs/content/toolkit-collaboration.mdx +74 -0
  417. package/docs/content/toolkit-command-navigation.mdx +106 -0
  418. package/docs/content/toolkit-comments-review.mdx +98 -0
  419. package/docs/content/toolkit-history.mdx +95 -0
  420. package/docs/content/toolkit-observability.mdx +41 -0
  421. package/docs/content/toolkit-org-team.mdx +80 -0
  422. package/docs/content/toolkit-resources.mdx +57 -0
  423. package/docs/content/toolkit-settings.mdx +65 -0
  424. package/docs/content/toolkit-setup-connections.mdx +109 -0
  425. package/docs/content/toolkit-sharing-ui.mdx +18 -6
  426. package/docs/content/toolkit-sharing.mdx +81 -0
  427. package/docs/content/toolkit-shell-hooks.mdx +9 -0
  428. package/docs/content/toolkit-ui.mdx +9 -0
  429. 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
- setRecError(MACOS_CAPTURE_PERMISSION_MESSAGE);
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 === MACOS_CAPTURE_PERMISSION_MESSAGE ||
2418
- recError === MACOS_SCREEN_PERMISSION_MESSAGE ? (
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
- const rematch = findAudioInputBySavedLabel(mics, {
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 (!rematch) return;
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; rematched by label",
282
- { previousDeviceId: micId, nextDeviceId: rematch.deviceId },
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(rematch.deviceId);
285
- setMicLabel(rematch.label);
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.downloadAndInstall((event) => {
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
- // downloadAndInstall already applied the bundle; relaunch completes it.
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()
@@ -165,6 +165,7 @@ export default defineEventHandler(async (event: H3Event) => {
165
165
  mimeType,
166
166
  filename: `thumb-${recordingId}.${ext}`,
167
167
  ownerEmail,
168
+ recordAsset: false,
168
169
  });
169
170
 
170
171
  let url: string;
@@ -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 = await deleteAppStateByPrefix(
96
- `recording-chunks-${recordingId}-`,
97
- );
98
- await deleteResumableSession(recordingId).catch(() => {});
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
- upstream = await fetchProviderMedia(
501
- compressedSourceUrl,
502
- rangeHeader,
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 =