@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,152 @@
1
+ import type {
2
+ ReviewComment,
3
+ ReviewCommentKind,
4
+ ReviewMention,
5
+ ReviewResolutionTarget,
6
+ ReviewStatus,
7
+ ReviewStatusEntry,
8
+ } from "../../review/types.js";
9
+ import { useActionMutation, useActionQuery } from "../use-action.js";
10
+
11
+ export interface ListReviewCommentsParams {
12
+ resourceType: string;
13
+ resourceId: string;
14
+ includeResolved?: boolean;
15
+ includeDeleted?: boolean;
16
+ targetId?: string | null;
17
+ limit?: number;
18
+ }
19
+
20
+ export interface ListReviewCommentsResult {
21
+ comments: ReviewComment[];
22
+ reviewStatus: ReviewStatusEntry | null;
23
+ }
24
+
25
+ export interface GetReviewFeedbackParams {
26
+ resourceType: string;
27
+ resourceId: string;
28
+ includeHumanTargeted?: boolean;
29
+ limit?: number;
30
+ }
31
+
32
+ export interface GetReviewFeedbackResult {
33
+ comments: ReviewComment[];
34
+ }
35
+
36
+ export interface CreateReviewCommentInput {
37
+ resourceType: string;
38
+ resourceId: string;
39
+ targetId?: string | null;
40
+ kind?: ReviewCommentKind;
41
+ anchor?: unknown | null;
42
+ body: string;
43
+ authorName?: string | null;
44
+ resolutionTarget?: ReviewResolutionTarget | null;
45
+ mentions?: ReviewMention[];
46
+ metadata?: Record<string, unknown>;
47
+ }
48
+
49
+ export interface ReplyReviewCommentInput {
50
+ resourceType: string;
51
+ resourceId: string;
52
+ commentId: string;
53
+ body: string;
54
+ authorName?: string | null;
55
+ resolutionTarget?: ReviewResolutionTarget | null;
56
+ mentions?: ReviewMention[];
57
+ metadata?: Record<string, unknown>;
58
+ }
59
+
60
+ export interface ResolveReviewThreadInput {
61
+ resourceType: string;
62
+ resourceId: string;
63
+ threadId?: string;
64
+ commentId?: string;
65
+ }
66
+
67
+ export interface DeleteReviewCommentInput {
68
+ resourceType: string;
69
+ resourceId: string;
70
+ commentId: string;
71
+ }
72
+
73
+ export interface ConsumeReviewFeedbackInput {
74
+ resourceType: string;
75
+ resourceId: string;
76
+ commentIds: string[];
77
+ }
78
+
79
+ export interface SetReviewStatusInput {
80
+ resourceType: string;
81
+ resourceId: string;
82
+ status: ReviewStatus;
83
+ note?: string | null;
84
+ metadata?: Record<string, unknown>;
85
+ }
86
+
87
+ export function useReviewComments(
88
+ params: ListReviewCommentsParams,
89
+ options?: { enabled?: boolean },
90
+ ) {
91
+ return useActionQuery<ListReviewCommentsResult>(
92
+ "list-review-comments",
93
+ params,
94
+ {
95
+ enabled:
96
+ options?.enabled ?? Boolean(params.resourceType && params.resourceId),
97
+ },
98
+ );
99
+ }
100
+
101
+ export function useReviewFeedback(
102
+ params: GetReviewFeedbackParams,
103
+ options?: { enabled?: boolean },
104
+ ) {
105
+ return useActionQuery<GetReviewFeedbackResult>(
106
+ "get-review-feedback",
107
+ params,
108
+ {
109
+ enabled:
110
+ options?.enabled ?? Boolean(params.resourceType && params.resourceId),
111
+ },
112
+ );
113
+ }
114
+
115
+ export function useCreateReviewComment() {
116
+ return useActionMutation<ReviewComment, CreateReviewCommentInput>(
117
+ "create-review-comment",
118
+ );
119
+ }
120
+
121
+ export function useReplyReviewComment() {
122
+ return useActionMutation<ReviewComment, ReplyReviewCommentInput>(
123
+ "reply-review-comment",
124
+ );
125
+ }
126
+
127
+ export function useResolveReviewThread() {
128
+ return useActionMutation<
129
+ { threadId: string; resolved: true; updatedCount: number },
130
+ ResolveReviewThreadInput
131
+ >("resolve-review-thread");
132
+ }
133
+
134
+ export function useDeleteReviewComment() {
135
+ return useActionMutation<
136
+ { commentId: string; deleted: true; updatedCount: number },
137
+ DeleteReviewCommentInput
138
+ >("delete-review-comment");
139
+ }
140
+
141
+ export function useConsumeReviewFeedback() {
142
+ return useActionMutation<
143
+ { consumedCommentIds: string[]; updatedCount: number },
144
+ ConsumeReviewFeedbackInput
145
+ >("consume-review-feedback");
146
+ }
147
+
148
+ export function useSetReviewStatus() {
149
+ return useActionMutation<ReviewStatusEntry, SetReviewStatusInput>(
150
+ "set-review-status",
151
+ );
152
+ }
@@ -8,5 +8,15 @@ export {
8
8
  type SettingsTabItem,
9
9
  type SettingsTabsPageProps,
10
10
  } from "./SettingsTabsPage.js";
11
- export { useBuilderStatus } from "./useBuilderStatus.js";
11
+ export {
12
+ openBuilderConnectPopup,
13
+ useBuilderConnectFlow,
14
+ useBuilderStatus,
15
+ withBuilderConnectTrackingParams,
16
+ type BuilderConnectFlow,
17
+ type BuilderConnectFlowOptions,
18
+ type BuilderConnectStartOptions,
19
+ type BuilderStatus,
20
+ type OpenBuilderConnectPopupOptions,
21
+ } from "./useBuilderStatus.js";
12
22
  export { SecretsSection, type SecretsSectionProps } from "./SecretsSection.js";
@@ -0,0 +1,94 @@
1
+ import { IconCheck, IconLoader2, IconPlugConnected } from "@tabler/icons-react";
2
+
3
+ import { useBuilderConnectFlow } from "../settings/useBuilderStatus.js";
4
+ import { cn } from "../utils.js";
5
+
6
+ export interface BuilderConnectCardProps {
7
+ title?: string;
8
+ description?: string;
9
+ trackingSource?: string;
10
+ className?: string;
11
+ onConnected?: (orgName: string | null) => void;
12
+ }
13
+
14
+ export function BuilderConnectCard({
15
+ title = "Builder connect",
16
+ description = "Connect Builder for managed model access, browser automation, and workspace identity.",
17
+ trackingSource = "setup_connections_page",
18
+ className,
19
+ onConnected,
20
+ }: BuilderConnectCardProps) {
21
+ const flow = useBuilderConnectFlow({
22
+ trackingSource,
23
+ onConnected: ({ orgName }) => onConnected?.(orgName),
24
+ });
25
+
26
+ const connectedLabel = flow.orgName
27
+ ? `Connected to ${flow.orgName}`
28
+ : "Connected";
29
+ const statusLabel = !flow.hasFetchedStatus
30
+ ? "Checking"
31
+ : flow.configured
32
+ ? connectedLabel
33
+ : flow.builderEnabled
34
+ ? "Ready to connect"
35
+ : "Project not configured";
36
+
37
+ return (
38
+ <section
39
+ className={cn(
40
+ "rounded-lg border border-border bg-background p-4 shadow-sm",
41
+ className,
42
+ )}
43
+ >
44
+ <div className="flex items-start gap-3">
45
+ <span
46
+ className={cn(
47
+ "mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-md border",
48
+ flow.configured
49
+ ? "border-emerald-500/30 bg-emerald-500/10 text-emerald-600"
50
+ : "border-border bg-muted text-muted-foreground",
51
+ )}
52
+ >
53
+ {flow.configured ? (
54
+ <IconCheck className="size-4" />
55
+ ) : (
56
+ <IconPlugConnected className="size-4" />
57
+ )}
58
+ </span>
59
+ <div className="min-w-0 flex-1">
60
+ <div className="flex flex-wrap items-center gap-2">
61
+ <h2 className="text-sm font-semibold text-foreground">{title}</h2>
62
+ <span className="rounded-md border border-border bg-muted px-1.5 py-0.5 text-[11px] font-medium text-muted-foreground">
63
+ {statusLabel}
64
+ </span>
65
+ </div>
66
+ <p className="mt-1 text-sm leading-5 text-muted-foreground">
67
+ {description}
68
+ </p>
69
+ {flow.error ? (
70
+ <p className="mt-2 text-xs text-destructive">{flow.error}</p>
71
+ ) : null}
72
+ {!flow.configured ? (
73
+ <button
74
+ type="button"
75
+ onClick={() => flow.start()}
76
+ disabled={
77
+ flow.connecting ||
78
+ (!flow.builderEnabled && flow.hasFetchedStatus)
79
+ }
80
+ className="mt-3 inline-flex h-8 items-center gap-2 rounded-md border border-border bg-foreground px-3 text-xs font-medium text-background transition-colors hover:bg-foreground/90 disabled:cursor-not-allowed disabled:opacity-60"
81
+ >
82
+ {flow.connecting ? (
83
+ <IconLoader2 className="size-3.5 animate-spin" />
84
+ ) : (
85
+ <IconPlugConnected className="size-3.5" />
86
+ )}
87
+ Connect Builder
88
+ </button>
89
+ ) : null}
90
+ </div>
91
+ </div>
92
+ </section>
93
+ );
94
+ }
@@ -0,0 +1,73 @@
1
+ import {
2
+ IconAlertCircle,
3
+ IconCheck,
4
+ IconClock,
5
+ IconKey,
6
+ } from "@tabler/icons-react";
7
+
8
+ import type { WorkspaceConnectionProviderReadinessStatus } from "../../workspace-connections/index.js";
9
+ import { cn } from "../utils.js";
10
+
11
+ const STATUS_LABELS: Record<
12
+ WorkspaceConnectionProviderReadinessStatus,
13
+ string
14
+ > = {
15
+ ready: "Ready",
16
+ checking: "Checking",
17
+ needs_credentials: "Needs credentials",
18
+ needs_attention: "Needs attention",
19
+ disabled: "Disabled",
20
+ not_configured: "Not configured",
21
+ };
22
+
23
+ const STATUS_STYLES: Record<
24
+ WorkspaceConnectionProviderReadinessStatus,
25
+ string
26
+ > = {
27
+ ready:
28
+ "border-emerald-500/30 bg-emerald-500/10 text-emerald-700 dark:text-emerald-300",
29
+ checking:
30
+ "border-blue-500/30 bg-blue-500/10 text-blue-700 dark:text-blue-300",
31
+ needs_credentials:
32
+ "border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300",
33
+ needs_attention:
34
+ "border-red-500/30 bg-red-500/10 text-red-700 dark:text-red-300",
35
+ disabled: "border-border bg-muted text-muted-foreground",
36
+ not_configured: "border-border bg-muted text-muted-foreground",
37
+ };
38
+
39
+ function StatusIcon({
40
+ status,
41
+ }: {
42
+ status: WorkspaceConnectionProviderReadinessStatus;
43
+ }) {
44
+ if (status === "ready") return <IconCheck className="size-3.5" />;
45
+ if (status === "checking") return <IconClock className="size-3.5" />;
46
+ if (status === "needs_credentials") return <IconKey className="size-3.5" />;
47
+ return <IconAlertCircle className="size-3.5" />;
48
+ }
49
+
50
+ export interface ProviderReadinessBadgeProps {
51
+ status: WorkspaceConnectionProviderReadinessStatus;
52
+ label?: string;
53
+ className?: string;
54
+ }
55
+
56
+ export function ProviderReadinessBadge({
57
+ status,
58
+ label,
59
+ className,
60
+ }: ProviderReadinessBadgeProps) {
61
+ return (
62
+ <span
63
+ className={cn(
64
+ "inline-flex min-h-6 items-center gap-1.5 rounded-md border px-2 text-xs font-medium",
65
+ STATUS_STYLES[status],
66
+ className,
67
+ )}
68
+ >
69
+ <StatusIcon status={status} />
70
+ {label ?? STATUS_LABELS[status]}
71
+ </span>
72
+ );
73
+ }
@@ -0,0 +1,94 @@
1
+ import type { ReactNode } from "react";
2
+
3
+ import { IntegrationsPanel } from "../integrations/IntegrationsPanel.js";
4
+ import { OnboardingPanel } from "../onboarding/OnboardingPanel.js";
5
+ import { SecretsSection } from "../settings/SecretsSection.js";
6
+ import { cn } from "../utils.js";
7
+ import { BuilderConnectCard } from "./BuilderConnectCard.js";
8
+
9
+ export interface SetupConnectionsPageProps {
10
+ title?: string;
11
+ description?: string;
12
+ onboardingTitle?: string;
13
+ focusSecretKey?: string;
14
+ providerReadiness?: ReactNode;
15
+ workspaceConnections?: ReactNode;
16
+ children?: ReactNode;
17
+ showOnboarding?: boolean;
18
+ showBuilderConnect?: boolean;
19
+ showSecrets?: boolean;
20
+ showIntegrations?: boolean;
21
+ className?: string;
22
+ }
23
+
24
+ export function SetupConnectionsPage({
25
+ title = "Setup & connections",
26
+ description = "Manage setup status, Builder connect, app secrets, and workspace connections from one standard surface.",
27
+ onboardingTitle = "Setup checklist",
28
+ focusSecretKey,
29
+ providerReadiness,
30
+ workspaceConnections,
31
+ children,
32
+ showOnboarding = true,
33
+ showBuilderConnect = true,
34
+ showSecrets = true,
35
+ showIntegrations = false,
36
+ className,
37
+ }: SetupConnectionsPageProps) {
38
+ return (
39
+ <div className={cn("min-h-full bg-background p-4 sm:p-6", className)}>
40
+ <div className="mx-auto flex w-full max-w-6xl flex-col gap-5">
41
+ <header className="space-y-1">
42
+ <h1 className="text-2xl font-semibold tracking-normal text-foreground">
43
+ {title}
44
+ </h1>
45
+ <p className="max-w-3xl text-sm leading-6 text-muted-foreground">
46
+ {description}
47
+ </p>
48
+ </header>
49
+
50
+ <div className="grid gap-4 lg:grid-cols-[minmax(0,1fr)_360px]">
51
+ <main className="flex min-w-0 flex-col gap-4">
52
+ {showOnboarding ? (
53
+ <OnboardingPanel title={onboardingTitle} />
54
+ ) : null}
55
+ {workspaceConnections ? (
56
+ <section className="rounded-lg border border-border bg-background p-4 shadow-sm">
57
+ {workspaceConnections}
58
+ </section>
59
+ ) : null}
60
+ {providerReadiness ? (
61
+ <section className="rounded-lg border border-border bg-background p-4 shadow-sm">
62
+ {providerReadiness}
63
+ </section>
64
+ ) : null}
65
+ {children}
66
+ </main>
67
+
68
+ <aside className="flex min-w-0 flex-col gap-4">
69
+ {showBuilderConnect ? <BuilderConnectCard /> : null}
70
+ {showSecrets ? (
71
+ <section className="rounded-lg border border-border bg-background p-4 shadow-sm">
72
+ <div className="mb-3">
73
+ <h2 className="text-sm font-semibold text-foreground">
74
+ Secrets
75
+ </h2>
76
+ <p className="mt-1 text-xs leading-5 text-muted-foreground">
77
+ Registered keys and OAuth credentials are stored in the
78
+ scoped secrets store.
79
+ </p>
80
+ </div>
81
+ <SecretsSection focusKey={focusSecretKey} />
82
+ </section>
83
+ ) : null}
84
+ {showIntegrations ? (
85
+ <section className="rounded-lg border border-border bg-background p-4 shadow-sm">
86
+ <IntegrationsPanel />
87
+ </section>
88
+ ) : null}
89
+ </aside>
90
+ </div>
91
+ </div>
92
+ </div>
93
+ );
94
+ }
@@ -0,0 +1,46 @@
1
+ export {
2
+ BuilderConnectCard,
3
+ type BuilderConnectCardProps,
4
+ } from "./BuilderConnectCard.js";
5
+ export {
6
+ ProviderReadinessBadge,
7
+ type ProviderReadinessBadgeProps,
8
+ } from "./ProviderReadinessBadge.js";
9
+ export {
10
+ SetupConnectionsPage,
11
+ type SetupConnectionsPageProps,
12
+ } from "./SetupConnectionsPage.js";
13
+ export {
14
+ OnboardingBanner,
15
+ OnboardingPanel,
16
+ SetupButton,
17
+ useOnboarding,
18
+ useOnboardingPreviewMode,
19
+ type OnboardingFormField,
20
+ type OnboardingMethod,
21
+ type OnboardingMethodBadge,
22
+ type OnboardingStep,
23
+ type OnboardingStepStatus,
24
+ type UseOnboardingResult,
25
+ } from "../onboarding/index.js";
26
+ export {
27
+ SecretsSection,
28
+ SettingsPanel,
29
+ SettingsTabsPage,
30
+ openBuilderConnectPopup,
31
+ useBuilderConnectFlow,
32
+ useBuilderStatus,
33
+ type BuilderConnectFlow,
34
+ type BuilderConnectFlowOptions,
35
+ type BuilderStatus,
36
+ type OpenBuilderConnectPopupOptions,
37
+ type SecretsSectionProps,
38
+ type SettingsPanelProps,
39
+ type SettingsTabItem,
40
+ type SettingsTabsPageProps,
41
+ } from "../settings/index.js";
42
+ export {
43
+ IntegrationsPanel,
44
+ useIntegrationStatus,
45
+ type IntegrationStatus,
46
+ } from "../integrations/index.js";
@@ -1,7 +1,6 @@
1
1
  import * as Select from "@radix-ui/react-select";
2
2
  import {
3
3
  IconLock,
4
- IconBuilding,
5
4
  IconWorld,
6
5
  IconTrash,
7
6
  IconCheck,
@@ -11,6 +10,7 @@ import {
11
10
  IconSearch,
12
11
  IconSearchOff,
13
12
  IconShare3,
13
+ IconUsersGroup,
14
14
  } from "@tabler/icons-react";
15
15
  import { useQueryClient } from "@tanstack/react-query";
16
16
  import {
@@ -46,11 +46,11 @@ export interface ShareButtonProps {
46
46
  /** @deprecated No longer affects rendering — trigger always says
47
47
  * "Share". Kept for callsite compatibility. */
48
48
  variant?: "compact" | "label";
49
- /** Optional trigger style. Defaults to the Google-Docs-style "Share" label.
50
- * Use "label-icon" to render a leading share glyph alongside the label so
51
- * the trigger matches adjacent icon+label buttons; "icon" is icon-only. */
49
+ /** Optional trigger style. Defaults to the Google-Docs-style "Share" label
50
+ * with a leading visibility icon. "label-icon" is kept for callsites that
51
+ * want to explicitly opt into icon+label parity; "icon" is icon-only. */
52
52
  trigger?: "label" | "icon" | "label-icon";
53
- /** @deprecated Label triggers no longer render a visibility/share glyph. */
53
+ /** @deprecated No longer affects rendering triggers show visibility state. */
54
54
  hideTriggerIcon?: boolean;
55
55
  /** Optional className applied to the trigger button. */
56
56
  triggerClassName?: string;
@@ -197,7 +197,7 @@ const VIS_META: Record<
197
197
  org: {
198
198
  label: "Organization",
199
199
  description: "Anyone in your organization can view",
200
- Icon: IconBuilding,
200
+ Icon: IconUsersGroup,
201
201
  },
202
202
  public: {
203
203
  label: "Public",
@@ -356,10 +356,17 @@ export function ShareButton(props: ShareButtonProps) {
356
356
  });
357
357
  };
358
358
 
359
- // The default trigger stays text-only; the icon trigger keeps the share glyph.
360
- // "label-icon" renders the glyph alongside the label for icon+label parity.
359
+ const triggerVisibility =
360
+ pendingVisibility ??
361
+ (sharesQuery.data
362
+ ? ((sharesQuery.data.visibility as Visibility | null) ?? "private")
363
+ : null);
364
+ const triggerMeta = triggerVisibility
365
+ ? visibilityMeta(triggerVisibility, props.visibilityCopy)
366
+ : null;
367
+ const TriggerIcon = triggerMeta?.Icon ?? IconShare3;
368
+ const triggerLabel = triggerMeta ? `Share (${triggerMeta.label})` : "Share";
361
369
  const iconOnly = props.trigger === "icon";
362
- const showLabelIcon = props.trigger === "label-icon";
363
370
 
364
371
  return (
365
372
  <Popover open={open} onOpenChange={handleOpenChange}>
@@ -370,11 +377,10 @@ export function ShareButton(props: ShareButtonProps) {
370
377
  iconOnly ? BUTTON_GHOST_ICON : BUTTON_OUTLINE_SM,
371
378
  props.triggerClassName,
372
379
  )}
373
- aria-label={iconOnly ? "Share" : undefined}
380
+ aria-label={triggerLabel}
381
+ title={triggerLabel}
374
382
  >
375
- {iconOnly || showLabelIcon ? (
376
- <IconShare3 size={16} strokeWidth={1.75} />
377
- ) : null}
383
+ <TriggerIcon size={16} strokeWidth={1.75} />
378
384
  {!iconOnly && <span>Share</span>}
379
385
  </button>
380
386
  </PopoverTrigger>
@@ -1663,7 +1669,7 @@ function Avatar({ label, org }: { label: string; org?: boolean }) {
1663
1669
  aria-hidden
1664
1670
  className="inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-muted text-[11px] font-semibold text-muted-foreground"
1665
1671
  >
1666
- {org ? <IconBuilding size={14} strokeWidth={1.75} /> : initials(label)}
1672
+ {org ? <IconUsersGroup size={14} strokeWidth={1.75} /> : initials(label)}
1667
1673
  </span>
1668
1674
  );
1669
1675
  }
@@ -3,7 +3,6 @@ import {
3
3
  IconX,
4
4
  IconTrash,
5
5
  IconLock,
6
- IconBuilding,
7
6
  IconWorld,
8
7
  IconCheck,
9
8
  IconCopy,
@@ -11,6 +10,7 @@ import {
11
10
  IconMail,
12
11
  IconCode,
13
12
  IconChevronDown,
13
+ IconUsersGroup,
14
14
  } from "@tabler/icons-react";
15
15
  import { useEffect, useState, type ReactNode } from "react";
16
16
  import { createPortal } from "react-dom";
@@ -117,7 +117,7 @@ const BUTTON_GHOST_ICON = cn(
117
117
 
118
118
  const VIS_ICONS: Record<Visibility, typeof IconLock> = {
119
119
  private: IconLock,
120
- org: IconBuilding,
120
+ org: IconUsersGroup,
121
121
  public: IconWorld,
122
122
  };
123
123
 
@@ -824,7 +824,7 @@ function Avatar({ label, org }: { label: string; org?: boolean }) {
824
824
  className="inline-flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-muted text-[11px] font-semibold text-muted-foreground"
825
825
  >
826
826
  {org ? (
827
- <IconBuilding size={14} strokeWidth={1.75} />
827
+ <IconUsersGroup size={14} strokeWidth={1.75} />
828
828
  ) : (
829
829
  (label.split("@")[0]?.[0] ?? label[0] ?? "?").toUpperCase()
830
830
  )}
@@ -0,0 +1,100 @@
1
+ import { z } from "zod";
2
+
3
+ import { defineAction } from "../action.js";
4
+ import { readAppState, writeAppState } from "../application-state/index.js";
5
+
6
+ const navigateSchema = z
7
+ .object({
8
+ view: z.string().optional().describe("View name to navigate to"),
9
+ path: z.string().optional().describe("URL path to navigate to"),
10
+ })
11
+ .passthrough();
12
+
13
+ export interface CreateNavigateActionOptions {
14
+ description?: string;
15
+ stateKey?: string;
16
+ normalize?: (
17
+ args: z.infer<typeof navigateSchema>,
18
+ ) => Record<string, unknown> | Promise<Record<string, unknown>>;
19
+ describeResult?: (
20
+ navigation: Record<string, unknown>,
21
+ args: z.infer<typeof navigateSchema>,
22
+ ) => string;
23
+ }
24
+
25
+ export interface CreateViewScreenActionOptions {
26
+ description?: string;
27
+ navigationStateKey?: string;
28
+ extraStateKeys?: string[];
29
+ describeResult?: (
30
+ screen: Record<string, unknown>,
31
+ ) =>
32
+ | Record<string, unknown>
33
+ | string
34
+ | Promise<Record<string, unknown> | string>;
35
+ }
36
+
37
+ function writeId(): string {
38
+ return `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
39
+ }
40
+
41
+ export function createNavigateAction(
42
+ options: CreateNavigateActionOptions = {},
43
+ ) {
44
+ const stateKey = options.stateKey ?? "navigate";
45
+ return defineAction({
46
+ description:
47
+ options.description ??
48
+ "Navigate the UI to a specific view or path. Writes a navigate command to application state which the UI reads and auto-deletes.",
49
+ schema: navigateSchema,
50
+ http: false,
51
+ run: async (args) => {
52
+ if (!args.view && !args.path) {
53
+ throw new Error("At least --view or --path is required.");
54
+ }
55
+ const navigation = options.normalize
56
+ ? await options.normalize(args)
57
+ : ({
58
+ ...(args.view ? { view: args.view } : null),
59
+ ...(args.path ? { path: args.path } : null),
60
+ } as Record<string, unknown>);
61
+ navigation._writeId = writeId();
62
+ await writeAppState(stateKey, navigation);
63
+ return (
64
+ options.describeResult?.(navigation, args) ??
65
+ `Navigating to ${String(args.view || args.path)}`
66
+ );
67
+ },
68
+ });
69
+ }
70
+
71
+ export function createViewScreenAction(
72
+ options: CreateViewScreenActionOptions = {},
73
+ ) {
74
+ const navigationStateKey = options.navigationStateKey ?? "navigation";
75
+ return defineAction({
76
+ description:
77
+ options.description ??
78
+ "See what the user is currently looking at on screen. Returns the current navigation state.",
79
+ schema: z.object({}),
80
+ http: false,
81
+ readOnly: true,
82
+ run: async () => {
83
+ const screen: Record<string, unknown> = {};
84
+ const navigation = await readAppState(navigationStateKey);
85
+ if (navigation) screen.navigation = navigation;
86
+
87
+ for (const key of options.extraStateKeys ?? []) {
88
+ const value = await readAppState(key);
89
+ if (value !== null && value !== undefined) screen[key] = value;
90
+ }
91
+
92
+ if (Object.keys(screen).length === 0) {
93
+ return "No application state found. Is the app running?";
94
+ }
95
+ return options.describeResult
96
+ ? await options.describeResult(screen)
97
+ : screen;
98
+ },
99
+ });
100
+ }