@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.
Files changed (530) hide show
  1. package/bin/agent-native.js +25 -3
  2. package/corpus/README.md +2 -2
  3. package/corpus/core/CHANGELOG.md +21 -0
  4. package/corpus/core/bin/agent-native.js +25 -3
  5. package/corpus/core/docs/content/agent-native-toolkit.mdx +87 -80
  6. package/corpus/core/docs/content/locales/ar-SA/agent-native-toolkit.mdx +89 -80
  7. package/corpus/core/docs/content/locales/de-DE/agent-native-toolkit.mdx +89 -80
  8. package/corpus/core/docs/content/locales/es-ES/agent-native-toolkit.mdx +89 -80
  9. package/corpus/core/docs/content/locales/fr-FR/agent-native-toolkit.mdx +89 -80
  10. package/corpus/core/docs/content/locales/hi-IN/agent-native-toolkit.mdx +89 -80
  11. package/corpus/core/docs/content/locales/ja-JP/agent-native-toolkit.mdx +89 -80
  12. package/corpus/core/docs/content/locales/ko-KR/agent-native-toolkit.mdx +89 -80
  13. package/corpus/core/docs/content/locales/pt-BR/agent-native-toolkit.mdx +89 -80
  14. package/corpus/core/docs/content/locales/zh-CN/agent-native-toolkit.mdx +89 -80
  15. package/corpus/core/docs/content/locales/zh-TW/agent-native-toolkit.mdx +89 -80
  16. package/corpus/core/docs/content/toolkit-agent-ux.mdx +43 -0
  17. package/corpus/core/docs/content/toolkit-app-adapters.mdx +9 -0
  18. package/corpus/core/docs/content/toolkit-collaboration-ui.mdx +12 -0
  19. package/corpus/core/docs/content/toolkit-collaboration.mdx +74 -0
  20. package/corpus/core/docs/content/toolkit-command-navigation.mdx +106 -0
  21. package/corpus/core/docs/content/toolkit-comments-review.mdx +98 -0
  22. package/corpus/core/docs/content/toolkit-history.mdx +95 -0
  23. package/corpus/core/docs/content/toolkit-observability.mdx +41 -0
  24. package/corpus/core/docs/content/toolkit-org-team.mdx +80 -0
  25. package/corpus/core/docs/content/toolkit-resources.mdx +57 -0
  26. package/corpus/core/docs/content/toolkit-settings.mdx +65 -0
  27. package/corpus/core/docs/content/toolkit-setup-connections.mdx +109 -0
  28. package/corpus/core/docs/content/toolkit-sharing-ui.mdx +18 -6
  29. package/corpus/core/docs/content/toolkit-sharing.mdx +81 -0
  30. package/corpus/core/docs/content/toolkit-shell-hooks.mdx +9 -0
  31. package/corpus/core/docs/content/toolkit-ui.mdx +9 -0
  32. package/corpus/core/package.json +35 -1
  33. package/corpus/core/src/agent/engine/ai-sdk-engine.ts +19 -1
  34. package/corpus/core/src/agent/engine/anthropic-engine.ts +25 -1
  35. package/corpus/core/src/agent/engine/index.ts +1 -0
  36. package/corpus/core/src/agent/engine/registry.ts +86 -18
  37. package/corpus/core/src/agent/production-agent.ts +37 -6
  38. package/corpus/core/src/cli/create.ts +35 -0
  39. package/corpus/core/src/cli/design-connect.ts +248 -0
  40. package/corpus/core/src/cli/index.ts +84 -7
  41. package/corpus/core/src/cli/workspacify.ts +34 -0
  42. package/corpus/core/src/client/command-navigation/index.ts +15 -0
  43. package/corpus/core/src/client/comments-review/index.ts +1 -0
  44. package/corpus/core/src/client/history/VersionHistoryPanel.tsx +175 -0
  45. package/corpus/core/src/client/history/index.ts +21 -0
  46. package/corpus/core/src/client/history/use-history.ts +114 -0
  47. package/corpus/core/src/client/index.ts +84 -9
  48. package/corpus/core/src/client/org/OrgSwitcher.tsx +6 -6
  49. package/corpus/core/src/client/org/RequireActiveOrg.tsx +2 -2
  50. package/corpus/core/src/client/org/TeamPage.tsx +3 -3
  51. package/corpus/core/src/client/org/hooks.ts +32 -0
  52. package/corpus/core/src/client/org/index.ts +30 -1
  53. package/corpus/core/src/client/org-team/index.ts +1 -0
  54. package/corpus/core/src/client/review/ReviewStatusBadge.tsx +39 -0
  55. package/corpus/core/src/client/review/ReviewThreadPanel.tsx +278 -0
  56. package/corpus/core/src/client/review/index.ts +30 -0
  57. package/corpus/core/src/client/review/use-review.ts +152 -0
  58. package/corpus/core/src/client/settings/index.ts +11 -1
  59. package/corpus/core/src/client/setup-connections/BuilderConnectCard.tsx +94 -0
  60. package/corpus/core/src/client/setup-connections/ProviderReadinessBadge.tsx +73 -0
  61. package/corpus/core/src/client/setup-connections/SetupConnectionsPage.tsx +94 -0
  62. package/corpus/core/src/client/setup-connections/index.ts +46 -0
  63. package/corpus/core/src/client/sharing/ShareButton.tsx +20 -14
  64. package/corpus/core/src/client/sharing/ShareDialog.tsx +3 -3
  65. package/corpus/core/src/command-navigation/actions.ts +100 -0
  66. package/corpus/core/src/command-navigation/index.ts +12 -0
  67. package/corpus/core/src/comments-review/index.ts +1 -0
  68. package/corpus/core/src/file-upload/builder.ts +24 -3
  69. package/corpus/core/src/file-upload/types.ts +3 -1
  70. package/corpus/core/src/history/actions/create-resource-version.ts +92 -0
  71. package/corpus/core/src/history/actions/get-resource-version.ts +60 -0
  72. package/corpus/core/src/history/actions/list-resource-history.ts +53 -0
  73. package/corpus/core/src/history/actions/list-resource-versions.ts +43 -0
  74. package/corpus/core/src/history/actions/restore-resource-version.ts +96 -0
  75. package/corpus/core/src/history/index.ts +26 -0
  76. package/corpus/core/src/history/registry.ts +111 -0
  77. package/corpus/core/src/history/store.ts +379 -0
  78. package/corpus/core/src/history/types.ts +69 -0
  79. package/corpus/core/src/index.ts +10 -0
  80. package/corpus/core/src/navigation/index.ts +170 -0
  81. package/corpus/core/src/org/index.ts +8 -0
  82. package/corpus/core/src/org/permissions.ts +30 -0
  83. package/corpus/core/src/org-team/index.ts +1 -0
  84. package/corpus/core/src/private-blob/registry.ts +1 -0
  85. package/corpus/core/src/review/actions/consume-review-feedback.ts +48 -0
  86. package/corpus/core/src/review/actions/create-review-comment.ts +107 -0
  87. package/corpus/core/src/review/actions/delete-review-comment.ts +67 -0
  88. package/corpus/core/src/review/actions/get-review-feedback.ts +54 -0
  89. package/corpus/core/src/review/actions/list-review-comments.ts +53 -0
  90. package/corpus/core/src/review/actions/reply-review-comment.ts +107 -0
  91. package/corpus/core/src/review/actions/resolve-review-thread.ts +67 -0
  92. package/corpus/core/src/review/actions/set-review-status.ts +58 -0
  93. package/corpus/core/src/review/index.ts +31 -0
  94. package/corpus/core/src/review/mentions.ts +44 -0
  95. package/corpus/core/src/review/registry.ts +111 -0
  96. package/corpus/core/src/review/store.ts +690 -0
  97. package/corpus/core/src/review/types.ts +97 -0
  98. package/corpus/core/src/server/action-discovery.ts +54 -0
  99. package/corpus/core/src/server/agent-chat-plugin.ts +6 -0
  100. package/corpus/core/src/server/agent-engine-api-key-route.ts +5 -0
  101. package/corpus/core/src/server/credential-provider.ts +118 -0
  102. package/corpus/core/src/setup-connections/index.ts +89 -0
  103. package/corpus/core/src/setup-connections/onboarding.ts +47 -0
  104. package/corpus/core/src/transcription/builder-transcription.ts +9 -2
  105. package/corpus/core/src/vite/action-types-plugin.ts +52 -0
  106. package/corpus/templates/analytics/app/components/layout/Layout.tsx +2 -1
  107. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +2 -2
  108. package/corpus/templates/analytics/app/global.css +22 -10
  109. package/corpus/templates/analytics/app/i18n/zh-TW.ts +6 -1
  110. package/corpus/templates/analytics/app/i18n-data.ts +81 -13
  111. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +2 -2
  112. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +2 -2
  113. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +528 -108
  114. package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +466 -183
  115. package/corpus/templates/analytics/changelog/2026-07-07-session-replays-load-sooner-show-clearer-activity-timelines-.md +6 -0
  116. package/corpus/templates/assets/actions/_preset-skeleton-validation.ts +11 -11
  117. package/corpus/templates/assets/actions/generate-image.ts +64 -28
  118. package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +1 -1
  119. package/corpus/templates/assets/app/routes/brand-kits.$id_.presets.$presetId.tsx +91 -74
  120. package/corpus/templates/assets/server/lib/generation.ts +29 -4
  121. package/corpus/templates/assets/server/lib/image-processing.ts +131 -0
  122. package/corpus/templates/brain/app/routes/settings.tsx +2 -2
  123. package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +24 -2
  124. package/corpus/templates/calendar/AGENTS.md +3 -0
  125. package/corpus/templates/calendar/actions/create-event.ts +8 -34
  126. package/corpus/templates/calendar/actions/event-action-helpers.ts +52 -0
  127. package/corpus/templates/calendar/actions/manage-event-draft.ts +7 -34
  128. package/corpus/templates/calendar/actions/update-event.ts +10 -23
  129. package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +79 -6
  130. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +23 -0
  131. package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +59 -2
  132. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +40 -1
  133. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +154 -41
  134. package/corpus/templates/calendar/app/hooks/use-events.ts +6 -0
  135. package/corpus/templates/calendar/app/hooks/use-people.ts +55 -0
  136. package/corpus/templates/calendar/app/i18n/zh-TW.ts +4 -0
  137. package/corpus/templates/calendar/app/i18n-data.ts +40 -0
  138. package/corpus/templates/calendar/changelog/2026-07-07-guest-suggestions-now-find-coworkers-from-your-google-worksp.md +6 -0
  139. package/corpus/templates/calendar/changelog/2026-07-07-you-can-mark-event-guests-as-optional-while-inviting-them-or.md +6 -0
  140. package/corpus/templates/calendar/changelog/2026-07-07-zoom-stays-selected-after-connecting-it-from-a-draft-event.md +6 -0
  141. package/corpus/templates/calendar/server/handlers/events.ts +1 -0
  142. package/corpus/templates/calendar/server/lib/google-calendar.ts +4 -0
  143. package/corpus/templates/calendar/server/plugins/agent-chat.ts +1 -1
  144. package/corpus/templates/calendar/shared/api.ts +2 -0
  145. package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +29 -3
  146. package/corpus/templates/clips/actions/create-recording.ts +5 -1
  147. package/corpus/templates/clips/actions/finalize-recording.ts +140 -1
  148. package/corpus/templates/clips/actions/generate-workflow.ts +19 -8
  149. package/corpus/templates/clips/actions/get-clips-ai-prefs.ts +36 -0
  150. package/corpus/templates/clips/actions/import-loom-recording.ts +1 -0
  151. package/corpus/templates/clips/actions/lib/clips-ai-prefs.ts +28 -0
  152. package/corpus/templates/clips/actions/lib/ensure-seekable-video.ts +1 -0
  153. package/corpus/templates/clips/actions/regenerate-chapters.ts +21 -7
  154. package/corpus/templates/clips/actions/regenerate-summary.ts +26 -8
  155. package/corpus/templates/clips/actions/regenerate-title.ts +44 -7
  156. package/corpus/templates/clips/actions/request-transcript.ts +31 -0
  157. package/corpus/templates/clips/actions/set-thumbnail.ts +2 -0
  158. package/corpus/templates/clips/actions/update-clips-ai-prefs.ts +50 -0
  159. package/corpus/templates/clips/app/components/library/organization-switcher.tsx +2 -2
  160. package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +7 -2
  161. package/corpus/templates/clips/app/components/player/scrubber-position.ts +9 -0
  162. package/corpus/templates/clips/app/components/player/scrubber.tsx +5 -2
  163. package/corpus/templates/clips/app/components/player/share-dialog.tsx +69 -41
  164. package/corpus/templates/clips/app/components/player/video-player.tsx +38 -1
  165. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +3 -3
  166. package/corpus/templates/clips/app/components/sharing/slack-share-hint.tsx +9 -19
  167. package/corpus/templates/clips/app/hooks/use-auto-title.ts +25 -10
  168. package/corpus/templates/clips/app/i18n/ar-SA.ts +28 -6
  169. package/corpus/templates/clips/app/i18n/de-DE.ts +28 -6
  170. package/corpus/templates/clips/app/i18n/en-US.ts +29 -6
  171. package/corpus/templates/clips/app/i18n/es-ES.ts +29 -6
  172. package/corpus/templates/clips/app/i18n/fr-FR.ts +30 -6
  173. package/corpus/templates/clips/app/i18n/hi-IN.ts +26 -6
  174. package/corpus/templates/clips/app/i18n/ja-JP.ts +27 -6
  175. package/corpus/templates/clips/app/i18n/ko-KR.ts +28 -6
  176. package/corpus/templates/clips/app/i18n/pt-BR.ts +28 -6
  177. package/corpus/templates/clips/app/i18n/zh-CN.ts +26 -6
  178. package/corpus/templates/clips/app/i18n/zh-TW.ts +25 -6
  179. package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +73 -0
  180. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +1 -0
  181. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +79 -5
  182. package/corpus/templates/clips/app/routes/record.tsx +21 -12
  183. package/corpus/templates/clips/changelog/2026-07-02-recordings-now-wait-for-storage-media-to-serve-before-finishing.md +6 -0
  184. package/corpus/templates/clips/changelog/2026-07-07-a-pending-app-update-no-longer-blocks-screen-recording-updat.md +6 -0
  185. package/corpus/templates/clips/changelog/2026-07-07-ai-tools-can-include-the-full-video-not-just-the-transcript-.md +6 -0
  186. package/corpus/templates/clips/changelog/2026-07-07-chrome-extension-recordings-keep-audio-after-refreshing-tab.md +6 -0
  187. package/corpus/templates/clips/changelog/2026-07-07-clip-playback-progress-now-starts-and-finishes-at-the-right-times.md +6 -0
  188. package/corpus/templates/clips/changelog/2026-07-07-clips-desktop-now-surfaces-meetings-and-dictate-directly-in-.md +6 -0
  189. package/corpus/templates/clips/changelog/2026-07-07-meeting-notes-now-explain-exactly-how-to-start-granola-style.md +6 -0
  190. package/corpus/templates/clips/changelog/2026-07-07-meeting-start-alerts-now-include-separate-start-notes-and-jo.md +6 -0
  191. package/corpus/templates/clips/changelog/2026-07-07-recordings-start-more-predictably-and-newly-saved-clips-refr.md +6 -0
  192. package/corpus/templates/clips/changelog/2026-07-07-sharing-public-clips-now-stays-focused-on-the-normal-link-wi.md +6 -0
  193. package/corpus/templates/clips/chrome-extension/public/manifest.json +1 -1
  194. package/corpus/templates/clips/chrome-extension/src/background.ts +18 -0
  195. package/corpus/templates/clips/chrome-extension/src/offscreen.ts +23 -8
  196. package/corpus/templates/clips/desktop/src/app.tsx +475 -108
  197. package/corpus/templates/clips/desktop/src/hooks/useMediaDevices.ts +19 -7
  198. package/corpus/templates/clips/desktop/src/lib/permissions.ts +2 -0
  199. package/corpus/templates/clips/desktop/src/lib/recorder.ts +27 -21
  200. package/corpus/templates/clips/desktop/src/lib/updater.ts +25 -2
  201. package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +23 -22
  202. package/corpus/templates/clips/desktop/src/styles.css +167 -2
  203. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +8 -1
  204. package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +3 -7
  205. package/corpus/templates/clips/desktop/src-tauri/src/tray_meetings.rs +5 -4
  206. package/corpus/templates/clips/server/routes/_agent-native/clips/user-prefs.put.ts +16 -8
  207. package/corpus/templates/clips/server/routes/api/recordings/[recordingId]/thumbnail.post.ts +1 -0
  208. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +22 -5
  209. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +8 -0
  210. package/corpus/templates/clips/server/routes/api/video/[recordingId].get.ts +13 -6
  211. package/corpus/templates/clips/shared/clips-ai-prefs.ts +81 -0
  212. package/corpus/templates/clips/shared/finalize-recovery.ts +12 -0
  213. package/corpus/templates/content/actions/delete-document.ts +337 -52
  214. package/corpus/templates/content/changelog/2026-07-07-permanently-deleting-trashed-databases-now-finishes-reliably.md +6 -0
  215. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +16 -1
  216. package/corpus/templates/design/actions/add-localhost-screens.ts +1 -0
  217. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +345 -11
  218. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +89 -14
  219. package/corpus/templates/design/app/components/design/bridge-security.ts +7 -1
  220. package/corpus/templates/design/app/components/design/multi-screen/types.ts +1 -1
  221. package/corpus/templates/design/app/i18n/zh-TW.ts +3 -0
  222. package/corpus/templates/design/app/i18n-data.ts +41 -0
  223. package/corpus/templates/design/changelog/2026-07-07-local-visual-edit-uses-live-app-iframes-for-click-to-edit-pr.md +6 -0
  224. package/corpus/templates/slides/app/pages/DeckEditor.tsx +2 -2
  225. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  226. package/dist/agent/engine/ai-sdk-engine.js +15 -1
  227. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  228. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  229. package/dist/agent/engine/anthropic-engine.js +20 -1
  230. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  231. package/dist/agent/engine/index.d.ts +1 -1
  232. package/dist/agent/engine/index.d.ts.map +1 -1
  233. package/dist/agent/engine/index.js +1 -1
  234. package/dist/agent/engine/index.js.map +1 -1
  235. package/dist/agent/engine/registry.d.ts +14 -0
  236. package/dist/agent/engine/registry.d.ts.map +1 -1
  237. package/dist/agent/engine/registry.js +78 -16
  238. package/dist/agent/engine/registry.js.map +1 -1
  239. package/dist/agent/production-agent.d.ts.map +1 -1
  240. package/dist/agent/production-agent.js +27 -7
  241. package/dist/agent/production-agent.js.map +1 -1
  242. package/dist/cli/create.d.ts.map +1 -1
  243. package/dist/cli/create.js +31 -0
  244. package/dist/cli/create.js.map +1 -1
  245. package/dist/cli/design-connect.d.ts.map +1 -1
  246. package/dist/cli/design-connect.js +186 -0
  247. package/dist/cli/design-connect.js.map +1 -1
  248. package/dist/cli/index.js +76 -9
  249. package/dist/cli/index.js.map +1 -1
  250. package/dist/cli/workspacify.d.ts.map +1 -1
  251. package/dist/cli/workspacify.js +30 -0
  252. package/dist/cli/workspacify.js.map +1 -1
  253. package/dist/client/command-navigation/index.d.ts +4 -0
  254. package/dist/client/command-navigation/index.d.ts.map +1 -0
  255. package/dist/client/command-navigation/index.js +4 -0
  256. package/dist/client/command-navigation/index.js.map +1 -0
  257. package/dist/client/comments-review/index.d.ts +2 -0
  258. package/dist/client/comments-review/index.d.ts.map +1 -0
  259. package/dist/client/comments-review/index.js +2 -0
  260. package/dist/client/comments-review/index.js.map +1 -0
  261. package/dist/client/history/VersionHistoryPanel.d.ts +18 -0
  262. package/dist/client/history/VersionHistoryPanel.d.ts.map +1 -0
  263. package/dist/client/history/VersionHistoryPanel.js +31 -0
  264. package/dist/client/history/VersionHistoryPanel.js.map +1 -0
  265. package/dist/client/history/index.d.ts +3 -0
  266. package/dist/client/history/index.d.ts.map +1 -0
  267. package/dist/client/history/index.js +3 -0
  268. package/dist/client/history/index.js.map +1 -0
  269. package/dist/client/history/use-history.d.ts +58 -0
  270. package/dist/client/history/use-history.d.ts.map +1 -0
  271. package/dist/client/history/use-history.js +24 -0
  272. package/dist/client/history/use-history.js.map +1 -0
  273. package/dist/client/index.d.ts +6 -4
  274. package/dist/client/index.d.ts.map +1 -1
  275. package/dist/client/index.js +6 -4
  276. package/dist/client/index.js.map +1 -1
  277. package/dist/client/org/OrgSwitcher.js +5 -5
  278. package/dist/client/org/OrgSwitcher.js.map +1 -1
  279. package/dist/client/org/RequireActiveOrg.js +2 -2
  280. package/dist/client/org/RequireActiveOrg.js.map +1 -1
  281. package/dist/client/org/TeamPage.js +3 -3
  282. package/dist/client/org/TeamPage.js.map +1 -1
  283. package/dist/client/org/hooks.d.ts +12 -1
  284. package/dist/client/org/hooks.d.ts.map +1 -1
  285. package/dist/client/org/hooks.js +15 -0
  286. package/dist/client/org/hooks.js.map +1 -1
  287. package/dist/client/org/index.d.ts +4 -2
  288. package/dist/client/org/index.d.ts.map +1 -1
  289. package/dist/client/org/index.js +3 -1
  290. package/dist/client/org/index.js.map +1 -1
  291. package/dist/client/org-team/index.d.ts +2 -0
  292. package/dist/client/org-team/index.d.ts.map +1 -0
  293. package/dist/client/org-team/index.js +2 -0
  294. package/dist/client/org-team/index.js.map +1 -0
  295. package/dist/client/review/ReviewStatusBadge.d.ts +7 -0
  296. package/dist/client/review/ReviewStatusBadge.d.ts.map +1 -0
  297. package/dist/client/review/ReviewStatusBadge.js +19 -0
  298. package/dist/client/review/ReviewStatusBadge.js.map +1 -0
  299. package/dist/client/review/ReviewThreadPanel.d.ts +20 -0
  300. package/dist/client/review/ReviewThreadPanel.d.ts.map +1 -0
  301. package/dist/client/review/ReviewThreadPanel.js +84 -0
  302. package/dist/client/review/ReviewThreadPanel.js.map +1 -0
  303. package/dist/client/review/index.d.ts +4 -0
  304. package/dist/client/review/index.d.ts.map +1 -0
  305. package/dist/client/review/index.js +4 -0
  306. package/dist/client/review/index.js.map +1 -0
  307. package/dist/client/review/use-review.d.ts +91 -0
  308. package/dist/client/review/use-review.d.ts.map +1 -0
  309. package/dist/client/review/use-review.js +30 -0
  310. package/dist/client/review/use-review.js.map +1 -0
  311. package/dist/client/settings/index.d.ts +1 -1
  312. package/dist/client/settings/index.d.ts.map +1 -1
  313. package/dist/client/settings/index.js +1 -1
  314. package/dist/client/settings/index.js.map +1 -1
  315. package/dist/client/setup-connections/BuilderConnectCard.d.ts +9 -0
  316. package/dist/client/setup-connections/BuilderConnectCard.d.ts.map +1 -0
  317. package/dist/client/setup-connections/BuilderConnectCard.js +25 -0
  318. package/dist/client/setup-connections/BuilderConnectCard.js.map +1 -0
  319. package/dist/client/setup-connections/ProviderReadinessBadge.d.ts +8 -0
  320. package/dist/client/setup-connections/ProviderReadinessBadge.d.ts.map +1 -0
  321. package/dist/client/setup-connections/ProviderReadinessBadge.js +32 -0
  322. package/dist/client/setup-connections/ProviderReadinessBadge.js.map +1 -0
  323. package/dist/client/setup-connections/SetupConnectionsPage.d.ts +17 -0
  324. package/dist/client/setup-connections/SetupConnectionsPage.d.ts.map +1 -0
  325. package/dist/client/setup-connections/SetupConnectionsPage.js +10 -0
  326. package/dist/client/setup-connections/SetupConnectionsPage.js.map +1 -0
  327. package/dist/client/setup-connections/index.d.ts +7 -0
  328. package/dist/client/setup-connections/index.d.ts.map +1 -0
  329. package/dist/client/setup-connections/index.js +7 -0
  330. package/dist/client/setup-connections/index.js.map +1 -0
  331. package/dist/client/sharing/ShareButton.d.ts +4 -4
  332. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  333. package/dist/client/sharing/ShareButton.js +13 -7
  334. package/dist/client/sharing/ShareButton.js.map +1 -1
  335. package/dist/client/sharing/ShareDialog.js +3 -3
  336. package/dist/client/sharing/ShareDialog.js.map +1 -1
  337. package/dist/collab/awareness.d.ts +2 -2
  338. package/dist/collab/awareness.d.ts.map +1 -1
  339. package/dist/collab/routes.d.ts +1 -1
  340. package/dist/collab/struct-routes.d.ts +1 -1
  341. package/dist/command-navigation/actions.d.ts +25 -0
  342. package/dist/command-navigation/actions.d.ts.map +1 -0
  343. package/dist/command-navigation/actions.js +64 -0
  344. package/dist/command-navigation/actions.js.map +1 -0
  345. package/dist/command-navigation/index.d.ts +4 -0
  346. package/dist/command-navigation/index.d.ts.map +1 -0
  347. package/dist/command-navigation/index.js +4 -0
  348. package/dist/command-navigation/index.js.map +1 -0
  349. package/dist/comments-review/index.d.ts +2 -0
  350. package/dist/comments-review/index.d.ts.map +1 -0
  351. package/dist/comments-review/index.js +2 -0
  352. package/dist/comments-review/index.js.map +1 -0
  353. package/dist/file-upload/builder.d.ts.map +1 -1
  354. package/dist/file-upload/builder.js +18 -2
  355. package/dist/file-upload/builder.js.map +1 -1
  356. package/dist/file-upload/types.d.ts +3 -0
  357. package/dist/file-upload/types.d.ts.map +1 -1
  358. package/dist/file-upload/types.js.map +1 -1
  359. package/dist/history/actions/create-resource-version.d.ts +10 -0
  360. package/dist/history/actions/create-resource-version.d.ts.map +1 -0
  361. package/dist/history/actions/create-resource-version.js +68 -0
  362. package/dist/history/actions/create-resource-version.js.map +1 -0
  363. package/dist/history/actions/get-resource-version.d.ts +10 -0
  364. package/dist/history/actions/get-resource-version.d.ts.map +1 -0
  365. package/dist/history/actions/get-resource-version.js +38 -0
  366. package/dist/history/actions/get-resource-version.js.map +1 -0
  367. package/dist/history/actions/list-resource-history.d.ts +10 -0
  368. package/dist/history/actions/list-resource-history.d.ts.map +1 -0
  369. package/dist/history/actions/list-resource-history.js +45 -0
  370. package/dist/history/actions/list-resource-history.js.map +1 -0
  371. package/dist/history/actions/list-resource-versions.d.ts +10 -0
  372. package/dist/history/actions/list-resource-versions.d.ts.map +1 -0
  373. package/dist/history/actions/list-resource-versions.js +35 -0
  374. package/dist/history/actions/list-resource-versions.js.map +1 -0
  375. package/dist/history/actions/restore-resource-version.d.ts +11 -0
  376. package/dist/history/actions/restore-resource-version.d.ts.map +1 -0
  377. package/dist/history/actions/restore-resource-version.js +59 -0
  378. package/dist/history/actions/restore-resource-version.js.map +1 -0
  379. package/dist/history/index.d.ts +4 -0
  380. package/dist/history/index.d.ts.map +1 -0
  381. package/dist/history/index.js +3 -0
  382. package/dist/history/index.js.map +1 -0
  383. package/dist/history/registry.d.ts +10 -0
  384. package/dist/history/registry.d.ts.map +1 -0
  385. package/dist/history/registry.js +63 -0
  386. package/dist/history/registry.js.map +1 -0
  387. package/dist/history/store.d.ts +34 -0
  388. package/dist/history/store.d.ts.map +1 -0
  389. package/dist/history/store.js +290 -0
  390. package/dist/history/store.js.map +1 -0
  391. package/dist/history/types.d.ts +55 -0
  392. package/dist/history/types.d.ts.map +1 -0
  393. package/dist/history/types.js +2 -0
  394. package/dist/history/types.js.map +1 -0
  395. package/dist/index.d.ts +6 -0
  396. package/dist/index.d.ts.map +1 -1
  397. package/dist/index.js +6 -0
  398. package/dist/index.js.map +1 -1
  399. package/dist/navigation/index.d.ts +53 -0
  400. package/dist/navigation/index.d.ts.map +1 -0
  401. package/dist/navigation/index.js +105 -0
  402. package/dist/navigation/index.js.map +1 -0
  403. package/dist/observability/routes.d.ts +3 -3
  404. package/dist/org/index.d.ts +1 -0
  405. package/dist/org/index.d.ts.map +1 -1
  406. package/dist/org/index.js +1 -0
  407. package/dist/org/index.js.map +1 -1
  408. package/dist/org/permissions.d.ts +7 -0
  409. package/dist/org/permissions.d.ts.map +1 -0
  410. package/dist/org/permissions.js +21 -0
  411. package/dist/org/permissions.js.map +1 -0
  412. package/dist/org-team/index.d.ts +2 -0
  413. package/dist/org-team/index.d.ts.map +1 -0
  414. package/dist/org-team/index.js +2 -0
  415. package/dist/org-team/index.js.map +1 -0
  416. package/dist/private-blob/registry.d.ts.map +1 -1
  417. package/dist/private-blob/registry.js +1 -0
  418. package/dist/private-blob/registry.js.map +1 -1
  419. package/dist/progress/routes.d.ts +1 -1
  420. package/dist/resources/handlers.d.ts +2 -2
  421. package/dist/review/actions/consume-review-feedback.d.ts +10 -0
  422. package/dist/review/actions/consume-review-feedback.d.ts.map +1 -0
  423. package/dist/review/actions/consume-review-feedback.js +35 -0
  424. package/dist/review/actions/consume-review-feedback.js.map +1 -0
  425. package/dist/review/actions/create-review-comment.d.ts +18 -0
  426. package/dist/review/actions/create-review-comment.d.ts.map +1 -0
  427. package/dist/review/actions/create-review-comment.js +81 -0
  428. package/dist/review/actions/create-review-comment.js.map +1 -0
  429. package/dist/review/actions/delete-review-comment.d.ts +11 -0
  430. package/dist/review/actions/delete-review-comment.d.ts.map +1 -0
  431. package/dist/review/actions/delete-review-comment.js +53 -0
  432. package/dist/review/actions/delete-review-comment.js.map +1 -0
  433. package/dist/review/actions/get-review-feedback.d.ts +10 -0
  434. package/dist/review/actions/get-review-feedback.d.ts.map +1 -0
  435. package/dist/review/actions/get-review-feedback.js +45 -0
  436. package/dist/review/actions/get-review-feedback.js.map +1 -0
  437. package/dist/review/actions/list-review-comments.d.ts +13 -0
  438. package/dist/review/actions/list-review-comments.d.ts.map +1 -0
  439. package/dist/review/actions/list-review-comments.js +44 -0
  440. package/dist/review/actions/list-review-comments.js.map +1 -0
  441. package/dist/review/actions/reply-review-comment.d.ts +16 -0
  442. package/dist/review/actions/reply-review-comment.d.ts.map +1 -0
  443. package/dist/review/actions/reply-review-comment.js +84 -0
  444. package/dist/review/actions/reply-review-comment.js.map +1 -0
  445. package/dist/review/actions/resolve-review-thread.d.ts +12 -0
  446. package/dist/review/actions/resolve-review-thread.d.ts.map +1 -0
  447. package/dist/review/actions/resolve-review-thread.js +49 -0
  448. package/dist/review/actions/resolve-review-thread.js.map +1 -0
  449. package/dist/review/actions/set-review-status.d.ts +9 -0
  450. package/dist/review/actions/set-review-status.d.ts.map +1 -0
  451. package/dist/review/actions/set-review-status.js +43 -0
  452. package/dist/review/actions/set-review-status.js.map +1 -0
  453. package/dist/review/index.d.ts +5 -0
  454. package/dist/review/index.d.ts.map +1 -0
  455. package/dist/review/index.js +4 -0
  456. package/dist/review/index.js.map +1 -0
  457. package/dist/review/mentions.d.ts +4 -0
  458. package/dist/review/mentions.d.ts.map +1 -0
  459. package/dist/review/mentions.js +39 -0
  460. package/dist/review/mentions.js.map +1 -0
  461. package/dist/review/registry.d.ts +10 -0
  462. package/dist/review/registry.d.ts.map +1 -0
  463. package/dist/review/registry.js +63 -0
  464. package/dist/review/registry.js.map +1 -0
  465. package/dist/review/store.d.ts +63 -0
  466. package/dist/review/store.d.ts.map +1 -0
  467. package/dist/review/store.js +561 -0
  468. package/dist/review/store.js.map +1 -0
  469. package/dist/review/types.d.ts +77 -0
  470. package/dist/review/types.d.ts.map +1 -0
  471. package/dist/review/types.js +2 -0
  472. package/dist/review/types.js.map +1 -0
  473. package/dist/secrets/routes.d.ts +9 -9
  474. package/dist/server/action-discovery.d.ts.map +1 -1
  475. package/dist/server/action-discovery.js +54 -0
  476. package/dist/server/action-discovery.js.map +1 -1
  477. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  478. package/dist/server/agent-chat-plugin.js +5 -0
  479. package/dist/server/agent-chat-plugin.js.map +1 -1
  480. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  481. package/dist/server/agent-engine-api-key-route.d.ts.map +1 -1
  482. package/dist/server/agent-engine-api-key-route.js +5 -0
  483. package/dist/server/agent-engine-api-key-route.js.map +1 -1
  484. package/dist/server/credential-provider.d.ts +28 -0
  485. package/dist/server/credential-provider.d.ts.map +1 -1
  486. package/dist/server/credential-provider.js +92 -0
  487. package/dist/server/credential-provider.js.map +1 -1
  488. package/dist/setup-connections/index.d.ts +6 -0
  489. package/dist/setup-connections/index.d.ts.map +1 -0
  490. package/dist/setup-connections/index.js +6 -0
  491. package/dist/setup-connections/index.js.map +1 -0
  492. package/dist/setup-connections/onboarding.d.ts +14 -0
  493. package/dist/setup-connections/onboarding.d.ts.map +1 -0
  494. package/dist/setup-connections/onboarding.js +23 -0
  495. package/dist/setup-connections/onboarding.js.map +1 -0
  496. package/dist/transcription/builder-transcription.d.ts +1 -0
  497. package/dist/transcription/builder-transcription.d.ts.map +1 -1
  498. package/dist/transcription/builder-transcription.js +5 -2
  499. package/dist/transcription/builder-transcription.js.map +1 -1
  500. package/dist/vite/action-types-plugin.d.ts.map +1 -1
  501. package/dist/vite/action-types-plugin.js +52 -0
  502. package/dist/vite/action-types-plugin.js.map +1 -1
  503. package/docs/content/agent-native-toolkit.mdx +87 -80
  504. package/docs/content/locales/ar-SA/agent-native-toolkit.mdx +89 -80
  505. package/docs/content/locales/de-DE/agent-native-toolkit.mdx +89 -80
  506. package/docs/content/locales/es-ES/agent-native-toolkit.mdx +89 -80
  507. package/docs/content/locales/fr-FR/agent-native-toolkit.mdx +89 -80
  508. package/docs/content/locales/hi-IN/agent-native-toolkit.mdx +89 -80
  509. package/docs/content/locales/ja-JP/agent-native-toolkit.mdx +89 -80
  510. package/docs/content/locales/ko-KR/agent-native-toolkit.mdx +89 -80
  511. package/docs/content/locales/pt-BR/agent-native-toolkit.mdx +89 -80
  512. package/docs/content/locales/zh-CN/agent-native-toolkit.mdx +89 -80
  513. package/docs/content/locales/zh-TW/agent-native-toolkit.mdx +89 -80
  514. package/docs/content/toolkit-agent-ux.mdx +43 -0
  515. package/docs/content/toolkit-app-adapters.mdx +9 -0
  516. package/docs/content/toolkit-collaboration-ui.mdx +12 -0
  517. package/docs/content/toolkit-collaboration.mdx +74 -0
  518. package/docs/content/toolkit-command-navigation.mdx +106 -0
  519. package/docs/content/toolkit-comments-review.mdx +98 -0
  520. package/docs/content/toolkit-history.mdx +95 -0
  521. package/docs/content/toolkit-observability.mdx +41 -0
  522. package/docs/content/toolkit-org-team.mdx +80 -0
  523. package/docs/content/toolkit-resources.mdx +57 -0
  524. package/docs/content/toolkit-settings.mdx +65 -0
  525. package/docs/content/toolkit-setup-connections.mdx +109 -0
  526. package/docs/content/toolkit-sharing-ui.mdx +18 -6
  527. package/docs/content/toolkit-sharing.mdx +81 -0
  528. package/docs/content/toolkit-shell-hooks.mdx +9 -0
  529. package/docs/content/toolkit-ui.mdx +9 -0
  530. 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(), 45_000);
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("Builder transcription timed out after 45 seconds.");
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
- <IconBuilding className="me-2 h-3.5 w-3.5" />
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: 0.875rem;
247
- height: 0.875rem;
248
- border-radius: 9999px;
249
- background: hsl(217 91% 60%);
246
+ width: 1.125rem;
247
+ height: 1.5rem;
248
+ border-radius: 0;
249
+ background: transparent;
250
250
  background-image: none;
251
- box-shadow:
252
- 0 0 0 2px hsl(0 0% 100% / 0.9),
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::after {
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
- background: hsl(217 91% 60%);
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: "顯示此工作階段的前 {{count}} 個事件。",
960
+ timelineDescription: "顯示 {{count}} / {{total}} 個有用事件。",
956
961
  noTimelineEvents: "未找到時間線標記",
957
962
  sequence: "Sequence",
958
963
  size: "Size",