@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
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { execSync, spawn } from "child_process";
4
4
  import fs from "fs";
5
+ import { createRequire } from "module";
5
6
  import path from "path";
6
7
  import { fileURLToPath } from "url";
7
8
 
@@ -253,11 +254,20 @@ function handleScaffoldImportError(err: any): never {
253
254
  throw err;
254
255
  }
255
256
 
257
+ function findBinUpwards(binName: string): string | undefined {
258
+ let dir = process.cwd();
259
+ for (let i = 0; i < 20; i++) {
260
+ const candidate = path.join(dir, "node_modules", ".bin", binName);
261
+ if (fs.existsSync(candidate)) return candidate;
262
+ const parent = path.dirname(dir);
263
+ if (parent === dir) break;
264
+ dir = parent;
265
+ }
266
+ return undefined;
267
+ }
268
+
256
269
  function findViteBin(): string {
257
- // Look for vite in node_modules/.bin
258
- const localVite = path.resolve("node_modules/.bin/vite");
259
- if (fs.existsSync(localVite)) return localVite;
260
- return "vite"; // fallback to PATH
270
+ return findBinUpwards("vite") ?? "vite";
261
271
  }
262
272
 
263
273
  function findTsxBin(): string {
@@ -277,9 +287,7 @@ function findTypeScriptCompilerBin(): string {
277
287
  }
278
288
 
279
289
  function findReactRouterBin(): string {
280
- const localBin = path.resolve("node_modules/.bin/react-router");
281
- if (fs.existsSync(localBin)) return localBin;
282
- return "react-router";
290
+ return findBinUpwards("react-router") ?? "react-router";
283
291
  }
284
292
 
285
293
  /** Check if the project uses React Router framework mode (has react-router.config.ts) */
@@ -290,6 +298,73 @@ function isReactRouterFramework(): boolean {
290
298
  );
291
299
  }
292
300
 
301
+ function canResolveFromProject(specifier: string): boolean {
302
+ try {
303
+ const requireFromProject = createRequire(path.resolve("package.json"));
304
+ requireFromProject.resolve(specifier);
305
+ return true;
306
+ } catch {
307
+ return false;
308
+ }
309
+ }
310
+
311
+ function projectUsesFsRoutes(): boolean {
312
+ for (const file of [
313
+ path.resolve("app/routes.ts"),
314
+ path.resolve("app/routes.tsx"),
315
+ path.resolve("routes.ts"),
316
+ path.resolve("routes.tsx"),
317
+ ]) {
318
+ try {
319
+ if (
320
+ fs.existsSync(file) &&
321
+ fs.readFileSync(file, "utf-8").includes("@react-router/fs-routes")
322
+ ) {
323
+ return true;
324
+ }
325
+ } catch {}
326
+ }
327
+ return false;
328
+ }
329
+
330
+ function validateReactRouterBuildDependencies(): void {
331
+ const required: Array<[packageName: string, specifier: string]> = [
332
+ ["react-router", "react-router"],
333
+ ["@react-router/dev", "@react-router/dev/vite"],
334
+ ["vite", "vite"],
335
+ ];
336
+ if (projectUsesFsRoutes()) {
337
+ required.push(["@react-router/fs-routes", "@react-router/fs-routes"]);
338
+ }
339
+
340
+ const missing = required
341
+ .filter(([, specifier]) => !canResolveFromProject(specifier))
342
+ .map(([packageName]) => packageName);
343
+
344
+ if (missing.length === 0) return;
345
+
346
+ const packageManager = fs.existsSync(path.resolve("pnpm-lock.yaml"))
347
+ ? "pnpm"
348
+ : fs.existsSync(path.resolve("yarn.lock"))
349
+ ? "yarn"
350
+ : "npm";
351
+ const installCommand =
352
+ packageManager === "pnpm"
353
+ ? `pnpm add ${missing.join(" ")}`
354
+ : packageManager === "yarn"
355
+ ? `yarn add ${missing.join(" ")}`
356
+ : `npm install ${missing.join(" ")}`;
357
+
358
+ console.error(
359
+ [
360
+ "React Router framework mode requires build packages that are not installed from this app root.",
361
+ `Missing: ${missing.join(", ")}`,
362
+ `Install them with: ${installCommand}`,
363
+ ].join("\n"),
364
+ );
365
+ process.exit(1);
366
+ }
367
+
293
368
  function isWorkspaceRoot(): boolean {
294
369
  const pkgPath = path.resolve("package.json");
295
370
  if (!fs.existsSync(pkgPath)) return false;
@@ -488,6 +563,7 @@ switch (command) {
488
563
  // continuation only runs on success.
489
564
  (async () => {
490
565
  if (isReactRouterFramework()) {
566
+ validateReactRouterBuildDependencies();
491
567
  const rr = findReactRouterBin();
492
568
  console.log("Building (React Router framework mode)...");
493
569
  await runBuildStep(rr, ["build"], { label: "react-router-build" });
@@ -592,6 +668,7 @@ switch (command) {
592
668
  // Run TypeScript type checking
593
669
  // React Router framework mode generates route types first
594
670
  if (isReactRouterFramework()) {
671
+ validateReactRouterBuildDependencies();
595
672
  const rr = findReactRouterBin();
596
673
  try {
597
674
  execSync(`${rr} typegen`, { stdio: "inherit" });
@@ -24,6 +24,12 @@ import fs from "fs";
24
24
  import path from "path";
25
25
 
26
26
  const POSTGRES_DEPENDENCY_VERSION = "^3.4.9";
27
+ const REACT_ROUTER_BUILD_DEPENDENCIES = [
28
+ "@react-router/dev",
29
+ "@react-router/fs-routes",
30
+ "react-router",
31
+ "vite",
32
+ ] as const;
27
33
 
28
34
  export interface WorkspacifyOptions {
29
35
  /** Target app directory (already populated with the copied template) */
@@ -87,6 +93,7 @@ export function workspacifyApp(opts: WorkspacifyOptions): void {
87
93
  // Add the runtime package to workspace apps so production bundles do
88
94
  // not fail only after a hosted Postgres database is configured.
89
95
  pkg.dependencies.postgres ??= POSTGRES_DEPENDENCY_VERSION;
96
+ ensureReactRouterBuildDependencies(pkg);
90
97
  // pnpm build-script approvals belong at the workspace root. Leaving the
91
98
  // template's per-app setting in place makes pnpm warn on every install.
92
99
  if (pkg.pnpm && typeof pkg.pnpm === "object") {
@@ -156,6 +163,33 @@ export function workspacifyApp(opts: WorkspacifyOptions): void {
156
163
  }
157
164
  }
158
165
 
166
+ function ensureReactRouterBuildDependencies(pkg: Record<string, any>): void {
167
+ const allDeps = {
168
+ ...pkg.dependencies,
169
+ ...pkg.devDependencies,
170
+ ...pkg.peerDependencies,
171
+ };
172
+ if (
173
+ !allDeps["@react-router/dev"] &&
174
+ !allDeps["react-router"] &&
175
+ !allDeps["@react-router/fs-routes"]
176
+ ) {
177
+ return;
178
+ }
179
+
180
+ pkg.dependencies = pkg.dependencies ?? {};
181
+ for (const key of REACT_ROUTER_BUILD_DEPENDENCIES) {
182
+ const existing =
183
+ pkg.dependencies[key] ??
184
+ pkg.devDependencies?.[key] ??
185
+ pkg.peerDependencies?.[key];
186
+ if (!existing) continue;
187
+ pkg.dependencies[key] = existing;
188
+ delete pkg.devDependencies?.[key];
189
+ delete pkg.peerDependencies?.[key];
190
+ }
191
+ }
192
+
159
193
  function writeInheritedChatPlugin(
160
194
  appDir: string,
161
195
  workspaceCoreName: string,
@@ -0,0 +1,15 @@
1
+ export {
2
+ CommandMenu,
3
+ openAgentSettings,
4
+ openAgentSidebar,
5
+ submitToAgent,
6
+ useCommandMenuShortcut,
7
+ type CommandDocsGroupProps,
8
+ type CommandGroupProps,
9
+ type CommandItemProps,
10
+ type CommandMenuDoc,
11
+ type CommandMenuProps,
12
+ type CommandShortcutProps,
13
+ } from "../CommandMenu.js";
14
+ export { focusAgentChat } from "../AgentPanel.js";
15
+ export * from "../../navigation/index.js";
@@ -0,0 +1 @@
1
+ export * from "../review/index.js";
@@ -0,0 +1,175 @@
1
+ import { IconClock, IconRestore, IconTimeline } from "@tabler/icons-react";
2
+ import { useState, type ReactNode } from "react";
3
+
4
+ import type { ResourceVersion } from "../../history/types.js";
5
+ import { cn } from "../utils.js";
6
+ import {
7
+ useResourceVersions,
8
+ useRestoreResourceVersion,
9
+ } from "./use-history.js";
10
+
11
+ export interface VersionHistoryPanelProps {
12
+ resourceType: string;
13
+ resourceId: string;
14
+ title?: string;
15
+ className?: string;
16
+ limit?: number;
17
+ emptyState?: ReactNode;
18
+ renderVersion?: (version: ResourceVersion) => ReactNode;
19
+ onRestored?: (version: ResourceVersion, result: unknown) => void;
20
+ }
21
+
22
+ export function VersionHistoryPanel({
23
+ resourceType,
24
+ resourceId,
25
+ title = "Version history",
26
+ className,
27
+ limit = 20,
28
+ emptyState = "No saved versions yet.",
29
+ renderVersion,
30
+ onRestored,
31
+ }: VersionHistoryPanelProps) {
32
+ const versions = useResourceVersions({ resourceType, resourceId, limit });
33
+ const restore = useRestoreResourceVersion();
34
+ const [confirmRestoreId, setConfirmRestoreId] = useState<string | null>(null);
35
+
36
+ return (
37
+ <section
38
+ className={cn(
39
+ "rounded-lg border border-border bg-card text-card-foreground",
40
+ className,
41
+ )}
42
+ >
43
+ <div className="flex items-center gap-2 border-b border-border px-4 py-3">
44
+ <IconTimeline className="h-4 w-4 text-muted-foreground" />
45
+ <h2 className="text-sm font-medium">{title}</h2>
46
+ </div>
47
+ <div className="divide-y divide-border">
48
+ {versions.isLoading ? (
49
+ <div className="px-4 py-6 text-sm text-muted-foreground">
50
+ Loading versions...
51
+ </div>
52
+ ) : versions.data?.versions.length ? (
53
+ versions.data.versions.map((version) => {
54
+ const confirming = confirmRestoreId === version.id;
55
+ return (
56
+ <article key={version.id} className="flex gap-3 px-4 py-3">
57
+ <div className="mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-muted">
58
+ <IconClock className="h-4 w-4 text-muted-foreground" />
59
+ </div>
60
+ <div className="min-w-0 flex-1">
61
+ {renderVersion ? (
62
+ renderVersion(version)
63
+ ) : (
64
+ <>
65
+ <div className="flex flex-wrap items-center gap-x-2 gap-y-1">
66
+ <h3 className="truncate text-sm font-medium">
67
+ {version.title ?? `Version ${version.versionNumber}`}
68
+ </h3>
69
+ <span className="text-xs text-muted-foreground">
70
+ {formatVersionDate(version.createdAt)}
71
+ </span>
72
+ </div>
73
+ {version.summary ? (
74
+ <p className="mt-1 text-sm text-muted-foreground">
75
+ {version.summary}
76
+ </p>
77
+ ) : null}
78
+ </>
79
+ )}
80
+ </div>
81
+ <div className="flex shrink-0 items-center gap-2">
82
+ {confirming ? (
83
+ <>
84
+ <button
85
+ type="button"
86
+ className="inline-flex h-8 items-center rounded-md border border-input px-2.5 text-xs font-medium hover:bg-accent disabled:cursor-not-allowed disabled:opacity-50"
87
+ disabled={restore.isPending}
88
+ onClick={() => setConfirmRestoreId(null)}
89
+ >
90
+ Cancel
91
+ </button>
92
+ <button
93
+ type="button"
94
+ className="inline-flex h-8 items-center gap-1.5 rounded-md border border-destructive bg-destructive px-2.5 text-xs font-medium text-destructive-foreground hover:bg-destructive/90 disabled:cursor-not-allowed disabled:opacity-50"
95
+ disabled={restore.isPending}
96
+ onClick={() =>
97
+ restore.mutate(
98
+ { id: version.id },
99
+ {
100
+ onSuccess: (result) => {
101
+ setConfirmRestoreId(null);
102
+ onRestored?.(result.version, result.result);
103
+ },
104
+ onError: () => setConfirmRestoreId(null),
105
+ },
106
+ )
107
+ }
108
+ >
109
+ <IconRestore className="h-3.5 w-3.5" />
110
+ Confirm restore
111
+ </button>
112
+ </>
113
+ ) : (
114
+ <button
115
+ type="button"
116
+ className="inline-flex h-8 items-center gap-1.5 rounded-md border border-input px-2.5 text-xs font-medium hover:bg-accent disabled:cursor-not-allowed disabled:opacity-50"
117
+ disabled={restore.isPending}
118
+ onClick={() => setConfirmRestoreId(version.id)}
119
+ >
120
+ <IconRestore className="h-3.5 w-3.5" />
121
+ Restore
122
+ </button>
123
+ )}
124
+ </div>
125
+ </article>
126
+ );
127
+ })
128
+ ) : (
129
+ <div className="px-4 py-6 text-sm text-muted-foreground">
130
+ {emptyState}
131
+ </div>
132
+ )}
133
+ </div>
134
+ </section>
135
+ );
136
+ }
137
+
138
+ export function HistoryTimeline({
139
+ versions,
140
+ className,
141
+ }: {
142
+ versions: ResourceVersion[];
143
+ className?: string;
144
+ }) {
145
+ return (
146
+ <ol className={cn("space-y-3", className)}>
147
+ {versions.map((version) => (
148
+ <li key={version.id} className="flex gap-3">
149
+ <div className="mt-1 h-2 w-2 rounded-full bg-primary" />
150
+ <div className="min-w-0">
151
+ <div className="truncate text-sm font-medium">
152
+ {version.title ?? `Version ${version.versionNumber}`}
153
+ </div>
154
+ <div className="text-xs text-muted-foreground">
155
+ {formatVersionDate(version.createdAt)}
156
+ </div>
157
+ {version.summary ? (
158
+ <p className="mt-1 text-sm text-muted-foreground">
159
+ {version.summary}
160
+ </p>
161
+ ) : null}
162
+ </div>
163
+ </li>
164
+ ))}
165
+ </ol>
166
+ );
167
+ }
168
+
169
+ function formatVersionDate(value: string): string {
170
+ const date = new Date(value);
171
+ if (Number.isNaN(date.getTime())) {
172
+ return value;
173
+ }
174
+ return date.toLocaleString();
175
+ }
@@ -0,0 +1,21 @@
1
+ export {
2
+ HistoryTimeline,
3
+ VersionHistoryPanel,
4
+ type VersionHistoryPanelProps,
5
+ } from "./VersionHistoryPanel.js";
6
+ export {
7
+ useCreateResourceVersion,
8
+ useResourceHistory,
9
+ useResourceVersion,
10
+ useResourceVersions,
11
+ useRestoreResourceVersion,
12
+ type CreateResourceVersionInput,
13
+ type GetResourceVersionInput,
14
+ type GetResourceVersionResult,
15
+ type ListResourceHistoryResult,
16
+ type ListResourceVersionsResult,
17
+ type ResourceHistoryParams,
18
+ type ResourceVersionsParams,
19
+ type RestoreResourceVersionInput,
20
+ type RestoreResourceVersionResult,
21
+ } from "./use-history.js";
@@ -0,0 +1,114 @@
1
+ import type { ResourceVersion } from "../../history/types.js";
2
+ import { useActionMutation, useActionQuery } from "../use-action.js";
3
+
4
+ export interface ResourceVersionsParams {
5
+ resourceType: string;
6
+ resourceId: string;
7
+ limit?: number;
8
+ offset?: number;
9
+ }
10
+
11
+ export interface ResourceHistoryParams {
12
+ resourceType: string;
13
+ resourceId: string;
14
+ limit?: number;
15
+ }
16
+
17
+ export interface CreateResourceVersionInput {
18
+ resourceType: string;
19
+ resourceId: string;
20
+ title?: string;
21
+ summary?: string;
22
+ snapshot?: unknown;
23
+ metadata?: Record<string, unknown>;
24
+ }
25
+
26
+ export interface RestoreResourceVersionInput {
27
+ id?: string;
28
+ resourceType?: string;
29
+ resourceId?: string;
30
+ versionNumber?: number;
31
+ }
32
+
33
+ export interface GetResourceVersionInput {
34
+ id?: string;
35
+ resourceType?: string;
36
+ resourceId?: string;
37
+ versionNumber?: number;
38
+ }
39
+
40
+ export interface ListResourceVersionsResult {
41
+ versions: ResourceVersion[];
42
+ }
43
+
44
+ export interface ListResourceHistoryResult {
45
+ versions: ResourceVersion[];
46
+ auditEvents: unknown[];
47
+ }
48
+
49
+ export interface GetResourceVersionResult {
50
+ version: ResourceVersion;
51
+ }
52
+
53
+ export interface RestoreResourceVersionResult {
54
+ version: ResourceVersion;
55
+ result: unknown;
56
+ }
57
+
58
+ export function useResourceVersions(
59
+ params: ResourceVersionsParams,
60
+ options?: { enabled?: boolean },
61
+ ) {
62
+ return useActionQuery<ListResourceVersionsResult>(
63
+ "list-resource-versions",
64
+ params,
65
+ {
66
+ enabled:
67
+ options?.enabled ?? Boolean(params.resourceType && params.resourceId),
68
+ },
69
+ );
70
+ }
71
+
72
+ export function useResourceHistory(
73
+ params: ResourceHistoryParams,
74
+ options?: { enabled?: boolean },
75
+ ) {
76
+ return useActionQuery<ListResourceHistoryResult>(
77
+ "list-resource-history",
78
+ params,
79
+ {
80
+ enabled:
81
+ options?.enabled ?? Boolean(params.resourceType && params.resourceId),
82
+ },
83
+ );
84
+ }
85
+
86
+ export function useResourceVersion(
87
+ params: GetResourceVersionInput,
88
+ options?: { enabled?: boolean },
89
+ ) {
90
+ const enabled =
91
+ options?.enabled ??
92
+ Boolean(
93
+ params.id ||
94
+ (params.resourceType && params.resourceId && params.versionNumber),
95
+ );
96
+ return useActionQuery<GetResourceVersionResult>(
97
+ "get-resource-version",
98
+ params,
99
+ { enabled },
100
+ );
101
+ }
102
+
103
+ export function useCreateResourceVersion() {
104
+ return useActionMutation<ResourceVersion, CreateResourceVersionInput>(
105
+ "create-resource-version",
106
+ );
107
+ }
108
+
109
+ export function useRestoreResourceVersion() {
110
+ return useActionMutation<
111
+ RestoreResourceVersionResult,
112
+ RestoreResourceVersionInput
113
+ >("restore-resource-version");
114
+ }
@@ -639,19 +639,22 @@ export { AgentNativeIcon } from "./components/icons/AgentNativeIcon.js";
639
639
  export {
640
640
  SettingsPanel,
641
641
  SettingsTabsPage,
642
- useAgentSettingsTabs,
643
- type SettingsPanelProps,
644
- type SettingsTabItem,
645
- type SettingsTabsPageProps,
646
- } from "./settings/index.js";
647
- export { useBuilderStatus } from "./settings/useBuilderStatus.js";
648
- export {
642
+ SecretsSection,
649
643
  openBuilderConnectPopup,
644
+ useAgentSettingsTabs,
650
645
  useBuilderConnectFlow,
646
+ useBuilderStatus,
647
+ withBuilderConnectTrackingParams,
651
648
  type BuilderConnectFlow,
652
649
  type BuilderConnectFlowOptions,
650
+ type BuilderConnectStartOptions,
651
+ type BuilderStatus,
653
652
  type OpenBuilderConnectPopupOptions,
654
- } from "./settings/useBuilderStatus.js";
653
+ type SecretsSectionProps,
654
+ type SettingsPanelProps,
655
+ type SettingsTabItem,
656
+ type SettingsTabsPageProps,
657
+ } from "./settings/index.js";
655
658
  // Deprecated — use AgentSidebar + AgentToggleButton instead
656
659
  export {
657
660
  ProductionAgentPanel,
@@ -783,6 +786,51 @@ export {
783
786
  type ResourceTreeProps,
784
787
  type ResourceEditorProps,
785
788
  } from "./resources/index.js";
789
+ export {
790
+ HistoryTimeline,
791
+ VersionHistoryPanel,
792
+ useCreateResourceVersion,
793
+ useResourceHistory,
794
+ useResourceVersion,
795
+ useResourceVersions,
796
+ useRestoreResourceVersion,
797
+ type CreateResourceVersionInput,
798
+ type GetResourceVersionInput,
799
+ type GetResourceVersionResult,
800
+ type ListResourceHistoryResult,
801
+ type ListResourceVersionsResult,
802
+ type ResourceHistoryParams,
803
+ type ResourceVersionsParams,
804
+ type RestoreResourceVersionInput,
805
+ type RestoreResourceVersionResult,
806
+ type VersionHistoryPanelProps,
807
+ } from "./history/index.js";
808
+ export {
809
+ ReviewStatusBadge,
810
+ ReviewThreadPanel,
811
+ buildReviewThreads,
812
+ useConsumeReviewFeedback,
813
+ useCreateReviewComment,
814
+ useDeleteReviewComment,
815
+ useReplyReviewComment,
816
+ useResolveReviewThread,
817
+ useReviewComments,
818
+ useReviewFeedback,
819
+ useSetReviewStatus,
820
+ type ConsumeReviewFeedbackInput,
821
+ type CreateReviewCommentInput,
822
+ type DeleteReviewCommentInput,
823
+ type GetReviewFeedbackParams,
824
+ type GetReviewFeedbackResult,
825
+ type ListReviewCommentsParams,
826
+ type ListReviewCommentsResult,
827
+ type ReplyReviewCommentInput,
828
+ type ResolveReviewThreadInput,
829
+ type ReviewStatusBadgeProps,
830
+ type ReviewThread,
831
+ type ReviewThreadPanelProps,
832
+ type SetReviewStatusInput,
833
+ } from "./review/index.js";
786
834
  export type {
787
835
  AppToFrameMessage,
788
836
  FrameToAppMessage,
@@ -792,10 +840,10 @@ export type {
792
840
  } from "./frame-protocol.js";
793
841
  export {
794
842
  CommandMenu,
795
- useCommandMenuShortcut,
796
843
  openAgentSidebar,
797
844
  openAgentSettings,
798
845
  submitToAgent,
846
+ useCommandMenuShortcut,
799
847
  type CommandMenuProps,
800
848
  type CommandMenuDoc,
801
849
  type CommandDocsGroupProps,
@@ -803,6 +851,33 @@ export {
803
851
  type CommandItemProps,
804
852
  type CommandShortcutProps,
805
853
  } from "./CommandMenu.js";
854
+ export {
855
+ buildOpenRouteLink,
856
+ buildOpenRoutePath,
857
+ buildResourceRoute,
858
+ buildSettingsRoute,
859
+ buildStandardAppRoute,
860
+ buildTeamRoute,
861
+ createStandardOpenPathResolver,
862
+ STANDARD_APP_ROUTES,
863
+ STANDARD_SETTINGS_TABS,
864
+ type BuildResourceRouteOptions,
865
+ type BuildStandardAppRouteOptions,
866
+ type NavigationLink,
867
+ type NavigationTarget,
868
+ type StandardAppRouteId,
869
+ type StandardOpenPathResolverOptions,
870
+ type StandardOpenPathRoute,
871
+ type StandardSettingsTabId,
872
+ } from "../navigation/index.js";
873
+ export {
874
+ BuilderConnectCard,
875
+ ProviderReadinessBadge,
876
+ SetupConnectionsPage,
877
+ type BuilderConnectCardProps,
878
+ type ProviderReadinessBadgeProps,
879
+ type SetupConnectionsPageProps,
880
+ } from "./setup-connections/index.js";
806
881
  export {
807
882
  ChangelogDialog,
808
883
  ChangelogSettingsCard,