@agent-native/core 0.152.1 → 0.153.1

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 (927) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/.agents/skills/adding-a-feature/SKILL.md +208 -0
  3. package/corpus/templates/analytics/.agents/skills/context-awareness/SKILL.md +206 -0
  4. package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +6 -4
  5. package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +73 -80
  6. package/corpus/templates/analytics/.agents/skills/portability/SKILL.md +107 -0
  7. package/corpus/templates/analytics/.agents/skills/secrets/SKILL.md +339 -0
  8. package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +3 -3
  9. package/corpus/templates/analytics/.agents/skills/shadcn-ui/SKILL.md +1 -1
  10. package/corpus/templates/analytics/.agents/skills/sharing/SKILL.md +1 -0
  11. package/corpus/templates/analytics/.agents/skills/turn-into-app/SKILL.md +116 -44
  12. package/corpus/templates/analytics/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  13. package/corpus/templates/analytics/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  14. package/corpus/templates/analytics/.agents/skills/workspace-conventions/SKILL.md +93 -0
  15. package/corpus/templates/analytics/actions/data-source-status.ts +4 -1
  16. package/corpus/templates/analytics/actions/migrate-first-party-analytics-to-bigquery.ts +2 -2
  17. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +7 -2
  18. package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +7 -1
  19. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +30 -32
  20. package/corpus/templates/analytics/app/components/layout/layout-route-policy.ts +10 -0
  21. package/corpus/templates/analytics/app/global.css +5 -1
  22. package/corpus/templates/analytics/app/lib/data-source-status.ts +3 -3
  23. package/corpus/templates/analytics/app/lib/resource-access.ts +6 -1
  24. package/corpus/templates/analytics/app/pages/DataSources.tsx +79 -51
  25. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +1 -0
  26. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +1 -0
  27. package/corpus/templates/analytics/changelog/2026-08-12-analytics-sidebar-ask-toggle-and-compact-rail.md +6 -0
  28. package/corpus/templates/analytics/changelog/2026-08-12-data-source-statuses-now-distinguish-workspace-access-from-c.md +6 -0
  29. package/corpus/templates/analytics/server/jobs/analytics-bigquery-backfill.ts +559 -147
  30. package/corpus/templates/analytics/server/lib/first-party-analytics-backend.ts +79 -5
  31. package/corpus/templates/analytics/server/plugins/db.ts +84 -0
  32. package/corpus/templates/assets/.agents/skills/adding-a-feature/SKILL.md +208 -0
  33. package/corpus/templates/assets/.agents/skills/context-awareness/SKILL.md +206 -0
  34. package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +73 -80
  35. package/corpus/templates/assets/.agents/skills/portability/SKILL.md +107 -0
  36. package/corpus/templates/assets/.agents/skills/secrets/SKILL.md +339 -0
  37. package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +3 -3
  38. package/corpus/templates/assets/.agents/skills/shadcn-ui/SKILL.md +1 -1
  39. package/corpus/templates/assets/.agents/skills/sharing/SKILL.md +1 -0
  40. package/corpus/templates/assets/.agents/skills/turn-into-app/SKILL.md +116 -44
  41. package/corpus/templates/assets/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  42. package/corpus/templates/assets/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  43. package/corpus/templates/assets/.agents/skills/workspace-conventions/SKILL.md +93 -0
  44. package/corpus/templates/assets/app/components/asset/AssetPreviewDialog.tsx +13 -5
  45. package/corpus/templates/assets/app/lib/asset-urls.ts +13 -0
  46. package/corpus/templates/assets/app/routes/asset.$id.tsx +16 -6
  47. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +1 -0
  48. package/corpus/templates/assets/app/routes/library.tsx +336 -78
  49. package/corpus/templates/assets/shared/api.ts +1 -1
  50. package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +3 -2
  51. package/corpus/templates/brain/.agents/skills/brain/SKILL.md +8 -6
  52. package/corpus/templates/brain/.agents/skills/context-awareness/SKILL.md +206 -0
  53. package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +73 -80
  54. package/corpus/templates/brain/.agents/skills/ingestion-and-connectors/SKILL.md +7 -0
  55. package/corpus/templates/brain/.agents/skills/portability/SKILL.md +107 -0
  56. package/corpus/templates/brain/.agents/skills/secrets/SKILL.md +339 -0
  57. package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +3 -3
  58. package/corpus/templates/brain/.agents/skills/shadcn-ui/SKILL.md +1 -1
  59. package/corpus/templates/brain/.agents/skills/sharing/SKILL.md +1 -0
  60. package/corpus/templates/brain/.agents/skills/turn-into-app/SKILL.md +116 -44
  61. package/corpus/templates/brain/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  62. package/corpus/templates/brain/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  63. package/corpus/templates/brain/.agents/skills/workspace-conventions/SKILL.md +93 -0
  64. package/corpus/templates/brain/AGENTS.md +2 -1
  65. package/corpus/templates/brain/actions/ask-brain.ts +19 -16
  66. package/corpus/templates/brain/actions/create-source.ts +11 -2
  67. package/corpus/templates/brain/actions/import-markdown-files.ts +237 -0
  68. package/corpus/templates/brain/actions/resanitize-captures.ts +3 -1
  69. package/corpus/templates/brain/actions/test-slack-connection.ts +12 -3
  70. package/corpus/templates/brain/actions/update-source.ts +10 -1
  71. package/corpus/templates/brain/app/components/brain/Surface.tsx +1 -11
  72. package/corpus/templates/brain/app/i18n-data.ts +111 -0
  73. package/corpus/templates/brain/app/lib/brain.ts +23 -1
  74. package/corpus/templates/brain/app/routes/knowledge.tsx +0 -2
  75. package/corpus/templates/brain/app/routes/ops.tsx +0 -2
  76. package/corpus/templates/brain/app/routes/review.tsx +0 -2
  77. package/corpus/templates/brain/app/routes/search.tsx +0 -2
  78. package/corpus/templates/brain/app/routes/sources.tsx +354 -6
  79. package/corpus/templates/brain/server/lib/brain-response-guard.ts +63 -1
  80. package/corpus/templates/brain/server/lib/brain.ts +9 -6
  81. package/corpus/templates/brain/server/lib/connectors.ts +20 -6
  82. package/corpus/templates/brain/server/lib/search.ts +9 -1
  83. package/corpus/templates/brain/server/lib/source-credentials.ts +95 -57
  84. package/corpus/templates/brain/server/plugins/agent-chat.ts +5 -2
  85. package/corpus/templates/brain/server/plugins/auth.ts +2 -0
  86. package/corpus/templates/calendar/.agents/skills/adding-a-feature/SKILL.md +208 -0
  87. package/corpus/templates/calendar/.agents/skills/context-awareness/SKILL.md +206 -0
  88. package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +73 -80
  89. package/corpus/templates/calendar/.agents/skills/portability/SKILL.md +107 -0
  90. package/corpus/templates/calendar/.agents/skills/secrets/SKILL.md +339 -0
  91. package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +3 -3
  92. package/corpus/templates/calendar/.agents/skills/shadcn-ui/SKILL.md +1 -1
  93. package/corpus/templates/calendar/.agents/skills/sharing/SKILL.md +1 -0
  94. package/corpus/templates/calendar/.agents/skills/turn-into-app/SKILL.md +116 -44
  95. package/corpus/templates/calendar/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  96. package/corpus/templates/calendar/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  97. package/corpus/templates/calendar/.agents/skills/workspace-conventions/SKILL.md +93 -0
  98. package/corpus/templates/calendar/app/components/calendar/DayView.tsx +3 -2
  99. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +3 -2
  100. package/corpus/templates/calendar/app/lib/event-layout.ts +16 -35
  101. package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +1 -0
  102. package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +3 -2
  103. package/corpus/templates/chat/.agents/skills/context-awareness/SKILL.md +206 -0
  104. package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +73 -80
  105. package/corpus/templates/chat/.agents/skills/portability/SKILL.md +107 -0
  106. package/corpus/templates/chat/.agents/skills/secrets/SKILL.md +339 -0
  107. package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +3 -3
  108. package/corpus/templates/chat/.agents/skills/shadcn-ui/SKILL.md +1 -1
  109. package/corpus/templates/chat/.agents/skills/sharing/SKILL.md +1 -0
  110. package/corpus/templates/chat/.agents/skills/turn-into-app/SKILL.md +116 -44
  111. package/corpus/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  112. package/corpus/templates/chat/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  113. package/corpus/templates/chat/.agents/skills/workspace-conventions/SKILL.md +93 -0
  114. package/corpus/templates/chat/AGENTS.md +4 -5
  115. package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +73 -80
  116. package/corpus/templates/clips/.agents/skills/meetings/SKILL.md +1 -1
  117. package/corpus/templates/clips/.agents/skills/secrets/SKILL.md +339 -0
  118. package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +3 -3
  119. package/corpus/templates/clips/.agents/skills/shadcn-ui/SKILL.md +1 -1
  120. package/corpus/templates/clips/.agents/skills/turn-into-app/SKILL.md +116 -44
  121. package/corpus/templates/clips/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  122. package/corpus/templates/clips/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  123. package/corpus/templates/clips/.agents/skills/workspace-conventions/SKILL.md +93 -0
  124. package/corpus/templates/clips/actions/add-comment.ts +1 -2
  125. package/corpus/templates/clips/actions/delete-comment.ts +2 -0
  126. package/corpus/templates/clips/actions/get-recording-insights.ts +9 -8
  127. package/corpus/templates/clips/actions/get-recording-player-data.ts +4 -1
  128. package/corpus/templates/clips/actions/react-to-comment.ts +1 -1
  129. package/corpus/templates/clips/actions/react-to-recording.ts +1 -1
  130. package/corpus/templates/clips/actions/reply-to-comment.ts +1 -1
  131. package/corpus/templates/clips/actions/resolve-comment.ts +1 -2
  132. package/corpus/templates/clips/actions/update-comment.ts +1 -1
  133. package/corpus/templates/clips/app/components/editor/editor-layout.tsx +1 -0
  134. package/corpus/templates/clips/app/components/editor/thumbnail-picker.tsx +59 -16
  135. package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +27 -44
  136. package/corpus/templates/clips/app/components/player/comments-panel.tsx +88 -39
  137. package/corpus/templates/clips/app/components/player/share-dialog.tsx +84 -41
  138. package/corpus/templates/clips/app/components/player/timestamped-comment-button.tsx +3 -1
  139. package/corpus/templates/clips/app/components/player/video-player.tsx +1 -1
  140. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +20 -7
  141. package/corpus/templates/clips/app/i18n/en-US.ts +2 -1
  142. package/corpus/templates/clips/app/lib/public-meeting.ts +1 -1
  143. package/corpus/templates/clips/app/lib/thumbnail-capture.ts +71 -0
  144. package/corpus/templates/clips/app/lib/thumbnail-picker-state.ts +93 -0
  145. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +1 -1
  146. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +25 -19
  147. package/corpus/templates/clips/app/routes/share.$shareId.tsx +8 -0
  148. package/corpus/templates/clips/changelog/2026-07-23-meeting-recording-meters-and-dismissed-prompts.md +1 -1
  149. package/corpus/templates/clips/changelog/2026-08-11-clips-asks-to-take-notes-again-when-you-join-an-adhoc-zoom-o.md +6 -0
  150. package/corpus/templates/clips/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
  151. package/corpus/templates/clips/desktop/src/app.tsx +1 -1
  152. package/corpus/templates/clips/desktop/src/styles.css +10 -2
  153. package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +166 -14
  154. package/corpus/templates/clips/desktop/src-tauri/src/call_activity.rs +146 -0
  155. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +2 -2
  156. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +1 -0
  157. package/corpus/templates/clips/desktop/src-tauri/src/silence_detector.rs +2 -122
  158. package/corpus/templates/clips/desktop/src-tauri/src/util.rs +1 -1
  159. package/corpus/templates/clips/server/lib/recording-page-access.ts +6 -1
  160. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +5 -0
  161. package/corpus/templates/clips/shared/share-meta.ts +19 -3
  162. package/corpus/templates/content/.agents/skills/adding-a-feature/SKILL.md +208 -0
  163. package/corpus/templates/content/.agents/skills/context-awareness/SKILL.md +206 -0
  164. package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +73 -80
  165. package/corpus/templates/content/.agents/skills/portability/SKILL.md +107 -0
  166. package/corpus/templates/content/.agents/skills/secrets/SKILL.md +339 -0
  167. package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +3 -3
  168. package/corpus/templates/content/.agents/skills/shadcn-ui/SKILL.md +1 -1
  169. package/corpus/templates/content/.agents/skills/sharing/SKILL.md +1 -0
  170. package/corpus/templates/content/.agents/skills/turn-into-app/SKILL.md +116 -44
  171. package/corpus/templates/content/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  172. package/corpus/templates/content/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  173. package/corpus/templates/content/.agents/skills/workspace-conventions/SKILL.md +93 -0
  174. package/corpus/templates/content/actions/_database-utils.ts +10 -0
  175. package/corpus/templates/content/actions/add-comment.ts +1 -1
  176. package/corpus/templates/content/actions/attach-content-database-source.ts +158 -61
  177. package/corpus/templates/content/actions/create-document.ts +1 -0
  178. package/corpus/templates/content/actions/delete-comment.ts +1 -1
  179. package/corpus/templates/content/actions/get-document.ts +9 -1
  180. package/corpus/templates/content/actions/import-content-source.ts +8 -0
  181. package/corpus/templates/content/actions/list-documents.ts +10 -1
  182. package/corpus/templates/content/actions/update-comment.ts +1 -1
  183. package/corpus/templates/content/actions/update-document.ts +11 -0
  184. package/corpus/templates/content/app/components/editor/CommentsSidebar.tsx +52 -29
  185. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +13 -8
  186. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +62 -2
  187. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +163 -53
  188. package/corpus/templates/content/app/components/editor/database/TimelineView.tsx +16 -0
  189. package/corpus/templates/content/app/components/editor/database/settings.tsx +22 -13
  190. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +7 -7
  191. package/corpus/templates/content/app/hooks/use-documents.ts +2 -0
  192. package/corpus/templates/content/app/i18n-data.ts +10 -0
  193. package/corpus/templates/content/app/root.tsx +1 -21
  194. package/corpus/templates/content/changelog/2026-08-05-connect-sources-from-add-column.md +6 -0
  195. package/corpus/templates/content/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
  196. package/corpus/templates/content/shared/api.ts +7 -1
  197. package/corpus/templates/crm/.agents/skills/actions/SKILL.md +146 -0
  198. package/corpus/templates/crm/.agents/skills/actions/references/action-fields.md +136 -0
  199. package/corpus/templates/crm/.agents/skills/actions/references/examples.md +94 -0
  200. package/corpus/templates/crm/.agents/skills/actions/references/provider-apis.md +95 -0
  201. package/corpus/templates/crm/.agents/skills/adding-a-feature/SKILL.md +208 -0
  202. package/corpus/templates/crm/.agents/skills/context-awareness/SKILL.md +206 -0
  203. package/corpus/templates/crm/.agents/skills/delegate-to-agent/SKILL.md +289 -0
  204. package/corpus/templates/crm/.agents/skills/frontend-design/SKILL.md +296 -0
  205. package/corpus/templates/crm/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  206. package/corpus/templates/crm/.agents/skills/portability/SKILL.md +107 -0
  207. package/corpus/templates/crm/.agents/skills/real-time-sync/SKILL.md +232 -0
  208. package/corpus/templates/crm/.agents/skills/secrets/SKILL.md +339 -0
  209. package/corpus/templates/crm/.agents/skills/security/SKILL.md +324 -0
  210. package/corpus/templates/crm/.agents/skills/self-modifying-code/SKILL.md +123 -0
  211. package/corpus/templates/crm/.agents/skills/shadcn-ui/SKILL.md +123 -0
  212. package/corpus/templates/crm/.agents/skills/sharing/SKILL.md +1 -0
  213. package/corpus/templates/crm/.agents/skills/turn-into-app/SKILL.md +116 -44
  214. package/corpus/templates/crm/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  215. package/corpus/templates/crm/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  216. package/corpus/templates/crm/.agents/skills/workspace-conventions/SKILL.md +93 -0
  217. package/corpus/templates/design/.agents/skills/adding-a-feature/SKILL.md +208 -0
  218. package/corpus/templates/design/.agents/skills/context-awareness/SKILL.md +206 -0
  219. package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +73 -80
  220. package/corpus/templates/design/.agents/skills/portability/SKILL.md +107 -0
  221. package/corpus/templates/design/.agents/skills/real-time-sync/SKILL.md +232 -0
  222. package/corpus/templates/design/.agents/skills/secrets/SKILL.md +339 -0
  223. package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +3 -3
  224. package/corpus/templates/design/.agents/skills/shadcn-ui/SKILL.md +1 -1
  225. package/corpus/templates/design/.agents/skills/sharing/SKILL.md +1 -0
  226. package/corpus/templates/design/.agents/skills/turn-into-app/SKILL.md +116 -44
  227. package/corpus/templates/design/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  228. package/corpus/templates/design/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  229. package/corpus/templates/design/.agents/skills/workspace-conventions/SKILL.md +93 -0
  230. package/corpus/templates/design/actions/index-design-system-with-builder.ts +16 -2
  231. package/corpus/templates/design/app/components/design-system/ProductionDesignSystemShowcase.tsx +6 -18
  232. package/corpus/templates/design/app/i18n/en-US.ts +1 -1
  233. package/corpus/templates/design/app/i18n-data.ts +40 -0
  234. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +153 -131
  235. package/corpus/templates/design/app/pages/DesignSystems.tsx +7 -61
  236. package/corpus/templates/design/app/pages/Present.tsx +8 -2
  237. package/corpus/templates/design/app/pages/Templates.tsx +1 -0
  238. package/corpus/templates/design/app/pages/design-editor/tool-state.ts +4 -1
  239. package/corpus/templates/design/app/pages/design-editor/types.ts +6 -1
  240. package/corpus/templates/design/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
  241. package/corpus/templates/dispatch/.agents/skills/adding-a-feature/SKILL.md +208 -0
  242. package/corpus/templates/dispatch/.agents/skills/context-awareness/SKILL.md +206 -0
  243. package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +73 -80
  244. package/corpus/templates/dispatch/.agents/skills/portability/SKILL.md +107 -0
  245. package/corpus/templates/dispatch/.agents/skills/real-time-sync/SKILL.md +232 -0
  246. package/corpus/templates/dispatch/.agents/skills/secrets/SKILL.md +339 -0
  247. package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +3 -3
  248. package/corpus/templates/dispatch/.agents/skills/shadcn-ui/SKILL.md +1 -1
  249. package/corpus/templates/dispatch/.agents/skills/sharing/SKILL.md +1 -0
  250. package/corpus/templates/dispatch/.agents/skills/turn-into-app/SKILL.md +116 -44
  251. package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  252. package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  253. package/corpus/templates/dispatch/.agents/skills/workspace-conventions/SKILL.md +93 -0
  254. package/corpus/templates/dispatch/actions/apply-workspace-connection-setup.ts +97 -15
  255. package/corpus/templates/dispatch/actions/connection-permissions.ts +77 -0
  256. package/corpus/templates/dispatch/actions/delete-workspace-connection.ts +12 -2
  257. package/corpus/templates/dispatch/actions/list-workspace-user-groups.ts +19 -0
  258. package/corpus/templates/dispatch/actions/plan-workspace-connection-setup.ts +9 -2
  259. package/corpus/templates/dispatch/actions/set-workspace-connection-grant.ts +21 -2
  260. package/corpus/templates/dispatch/actions/upsert-workspace-connection.ts +66 -1
  261. package/corpus/templates/dispatch/actions/upsert-workspace-user-group.ts +27 -0
  262. package/corpus/templates/dispatch/app/chat-first-pages.ts +84 -0
  263. package/corpus/templates/dispatch/app/i18n-data.ts +3989 -3527
  264. package/corpus/templates/dispatch/app/routes/integrations.tsx +1568 -685
  265. package/corpus/templates/dispatch/app/routes/settings.tsx +14 -9
  266. package/corpus/templates/dispatch/changelog/2026-08-12-search-and-pin-workspace-apps-from-the-app-catalog.md +6 -0
  267. package/corpus/templates/dispatch/changelog/2026-08-12-workspace-integration-access-now-shows-exactly-which-apps-ca.md +6 -0
  268. package/corpus/templates/dispatch/server/lib/app-roles.ts +5 -0
  269. package/corpus/templates/dispatch/shared/app-roles.ts +1 -0
  270. package/corpus/templates/factory/.agents/skills/adding-a-feature/SKILL.md +3 -2
  271. package/corpus/templates/factory/.agents/skills/context-awareness/SKILL.md +206 -0
  272. package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +73 -80
  273. package/corpus/templates/factory/.agents/skills/portability/SKILL.md +107 -0
  274. package/corpus/templates/factory/.agents/skills/secrets/SKILL.md +339 -0
  275. package/corpus/templates/factory/.agents/skills/self-modifying-code/SKILL.md +3 -3
  276. package/corpus/templates/factory/.agents/skills/shadcn-ui/SKILL.md +1 -1
  277. package/corpus/templates/factory/.agents/skills/sharing/SKILL.md +1 -0
  278. package/corpus/templates/factory/.agents/skills/turn-into-app/SKILL.md +116 -44
  279. package/corpus/templates/factory/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  280. package/corpus/templates/factory/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  281. package/corpus/templates/factory/.agents/skills/workspace-conventions/SKILL.md +93 -0
  282. package/corpus/templates/factory/AGENTS.md +10 -1
  283. package/corpus/templates/factory/README.md +18 -7
  284. package/corpus/templates/factory/actions/list-triage-items.ts +10 -4
  285. package/corpus/templates/factory/actions/poll-github-sources.ts +53 -14
  286. package/corpus/templates/factory/actions/poll-sentry-errors.ts +31 -13
  287. package/corpus/templates/factory/actions/poll-slack-channel.ts +41 -5
  288. package/corpus/templates/factory/actions/provider-api-catalog.ts +13 -0
  289. package/corpus/templates/factory/actions/provider-api-docs.ts +11 -0
  290. package/corpus/templates/factory/actions/provider-api-request.ts +17 -0
  291. package/corpus/templates/factory/actions/save-triage-config.ts +87 -38
  292. package/corpus/templates/factory/app/components/factory/FactoryAuditView.tsx +14 -12
  293. package/corpus/templates/factory/app/components/factory/FactoryCanvas.tsx +60 -77
  294. package/corpus/templates/factory/app/components/factory/FactoryInspector.tsx +66 -125
  295. package/corpus/templates/factory/app/components/layout/Header.tsx +1 -0
  296. package/corpus/templates/factory/app/components/layout/Layout.tsx +8 -3
  297. package/corpus/templates/factory/app/components/layout/Sidebar.tsx +9 -5
  298. package/corpus/templates/factory/app/components/ui/input.tsx +15 -1
  299. package/corpus/templates/factory/app/components/ui/popover.tsx +1 -0
  300. package/corpus/templates/factory/app/components/ui/switch.tsx +1 -0
  301. package/corpus/templates/factory/app/components/ui/textarea.tsx +20 -1
  302. package/corpus/templates/factory/app/hooks/use-navigation-state.ts +5 -3
  303. package/corpus/templates/factory/app/i18n/en-US.ts +17 -0
  304. package/corpus/templates/factory/app/routes/_index.tsx +5 -87
  305. package/corpus/templates/factory/app/routes/chat.$threadId.tsx +1 -1
  306. package/corpus/templates/factory/app/routes/chat.tsx +91 -0
  307. package/corpus/templates/factory/app/routes/factory.tsx +554 -430
  308. package/corpus/templates/factory/app/routes/settings.tsx +1 -1
  309. package/corpus/templates/factory/server/connectors/credentials.ts +25 -0
  310. package/corpus/templates/factory/server/lib/provider-api.ts +34 -0
  311. package/corpus/templates/factory/server/plugins/agent-chat.ts +15 -3
  312. package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +96 -24
  313. package/corpus/templates/factory/server/triage/review-state.ts +33 -0
  314. package/corpus/templates/factory/server/triage/slack-poller.ts +1 -0
  315. package/corpus/templates/forms/.agents/skills/adding-a-feature/SKILL.md +208 -0
  316. package/corpus/templates/forms/.agents/skills/context-awareness/SKILL.md +206 -0
  317. package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +73 -80
  318. package/corpus/templates/forms/.agents/skills/portability/SKILL.md +107 -0
  319. package/corpus/templates/forms/.agents/skills/secrets/SKILL.md +339 -0
  320. package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +3 -3
  321. package/corpus/templates/forms/.agents/skills/shadcn-ui/SKILL.md +1 -1
  322. package/corpus/templates/forms/.agents/skills/sharing/SKILL.md +1 -0
  323. package/corpus/templates/forms/.agents/skills/turn-into-app/SKILL.md +116 -44
  324. package/corpus/templates/forms/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  325. package/corpus/templates/forms/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  326. package/corpus/templates/forms/.agents/skills/workspace-conventions/SKILL.md +93 -0
  327. package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +1 -0
  328. package/corpus/templates/forms/shared/types.ts +1 -1
  329. package/corpus/templates/macros/.agents/skills/adding-a-feature/SKILL.md +208 -0
  330. package/corpus/templates/macros/.agents/skills/context-awareness/SKILL.md +206 -0
  331. package/corpus/templates/macros/.agents/skills/delegate-to-agent/SKILL.md +289 -0
  332. package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +73 -80
  333. package/corpus/templates/macros/.agents/skills/portability/SKILL.md +107 -0
  334. package/corpus/templates/macros/.agents/skills/real-time-sync/SKILL.md +232 -0
  335. package/corpus/templates/macros/.agents/skills/secrets/SKILL.md +339 -0
  336. package/corpus/templates/macros/.agents/skills/self-modifying-code/SKILL.md +123 -0
  337. package/corpus/templates/macros/.agents/skills/shadcn-ui/SKILL.md +1 -1
  338. package/corpus/templates/macros/.agents/skills/sharing/SKILL.md +1 -0
  339. package/corpus/templates/macros/.agents/skills/turn-into-app/SKILL.md +116 -44
  340. package/corpus/templates/macros/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  341. package/corpus/templates/macros/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  342. package/corpus/templates/macros/.agents/skills/workspace-conventions/SKILL.md +93 -0
  343. package/corpus/templates/mail/.agents/skills/adding-a-feature/SKILL.md +208 -0
  344. package/corpus/templates/mail/.agents/skills/context-awareness/SKILL.md +206 -0
  345. package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +73 -80
  346. package/corpus/templates/mail/.agents/skills/portability/SKILL.md +107 -0
  347. package/corpus/templates/mail/.agents/skills/secrets/SKILL.md +339 -0
  348. package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +3 -3
  349. package/corpus/templates/mail/.agents/skills/shadcn-ui/SKILL.md +1 -1
  350. package/corpus/templates/mail/.agents/skills/sharing/SKILL.md +1 -0
  351. package/corpus/templates/mail/.agents/skills/turn-into-app/SKILL.md +116 -44
  352. package/corpus/templates/mail/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  353. package/corpus/templates/mail/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  354. package/corpus/templates/mail/.agents/skills/workspace-conventions/SKILL.md +93 -0
  355. package/corpus/templates/mail/actions/send-email.ts +9 -0
  356. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +4 -4
  357. package/corpus/templates/mail/changelog/2026-08-12-agent-sent-messages-appear-immediately.md +6 -0
  358. package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +3 -2
  359. package/corpus/templates/plan/.agents/skills/context-awareness/SKILL.md +206 -0
  360. package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +73 -80
  361. package/corpus/templates/plan/.agents/skills/portability/SKILL.md +107 -0
  362. package/corpus/templates/plan/.agents/skills/secrets/SKILL.md +339 -0
  363. package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +3 -3
  364. package/corpus/templates/plan/.agents/skills/shadcn-ui/SKILL.md +1 -1
  365. package/corpus/templates/plan/.agents/skills/sharing/SKILL.md +1 -0
  366. package/corpus/templates/plan/.agents/skills/turn-into-app/SKILL.md +116 -44
  367. package/corpus/templates/plan/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  368. package/corpus/templates/plan/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  369. package/corpus/templates/plan/.agents/skills/workspace-conventions/SKILL.md +93 -0
  370. package/corpus/templates/plan/actions/delete-plan-comment.ts +6 -0
  371. package/corpus/templates/plan/actions/reply-to-plan-comment.ts +7 -1
  372. package/corpus/templates/plan/actions/resolve-plan-comment.ts +7 -1
  373. package/corpus/templates/plan/actions/update-visual-plan.ts +6 -0
  374. package/corpus/templates/plan/app/hooks/use-plans.ts +1 -1
  375. package/corpus/templates/plan/app/pages/PlansPage.tsx +51 -23
  376. package/corpus/templates/plan/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
  377. package/corpus/templates/plan/server/plans.ts +2 -2
  378. package/corpus/templates/plan/shared/types.ts +1 -1
  379. package/corpus/templates/slides/.agents/skills/adding-a-feature/SKILL.md +208 -0
  380. package/corpus/templates/slides/.agents/skills/context-awareness/SKILL.md +206 -0
  381. package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +6 -0
  382. package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +73 -80
  383. package/corpus/templates/slides/.agents/skills/portability/SKILL.md +107 -0
  384. package/corpus/templates/slides/.agents/skills/real-time-sync/SKILL.md +232 -0
  385. package/corpus/templates/slides/.agents/skills/secrets/SKILL.md +339 -0
  386. package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +3 -3
  387. package/corpus/templates/slides/.agents/skills/shadcn-ui/SKILL.md +1 -1
  388. package/corpus/templates/slides/.agents/skills/sharing/SKILL.md +1 -0
  389. package/corpus/templates/slides/.agents/skills/turn-into-app/SKILL.md +116 -44
  390. package/corpus/templates/slides/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  391. package/corpus/templates/slides/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  392. package/corpus/templates/slides/.agents/skills/workspace-conventions/SKILL.md +93 -0
  393. package/corpus/templates/slides/AGENTS.md +4 -0
  394. package/corpus/templates/slides/actions/add-slide-comment.ts +1 -1
  395. package/corpus/templates/slides/actions/delete-slide-comment.ts +1 -1
  396. package/corpus/templates/slides/actions/get-layout-overflows.ts +67 -2
  397. package/corpus/templates/slides/actions/update-slide-comment.ts +1 -1
  398. package/corpus/templates/slides/actions/view-screen.ts +76 -26
  399. package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +30 -8
  400. package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +2 -1
  401. package/corpus/templates/slides/app/components/editor/AlignmentGuides.tsx +75 -0
  402. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +81 -81
  403. package/corpus/templates/slides/app/components/editor/ShareDialog.tsx +28 -25
  404. package/corpus/templates/slides/app/components/editor/SlideContextToolbar.tsx +175 -10
  405. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +256 -69
  406. package/corpus/templates/slides/app/components/editor/SlideOverflowWarning.tsx +1 -1
  407. package/corpus/templates/slides/app/components/editor/canvas-interactions/slides-canvas-adapter.ts +3 -3
  408. package/corpus/templates/slides/app/components/editor/slide-object-interactions.ts +218 -0
  409. package/corpus/templates/slides/app/context/DeckContext.tsx +56 -30
  410. package/corpus/templates/slides/app/hooks/use-deck-role.ts +13 -5
  411. package/corpus/templates/slides/app/hooks/use-design-systems.ts +1 -1
  412. package/corpus/templates/slides/app/i18n/en-US.ts +6 -2
  413. package/corpus/templates/slides/app/lib/create-deck-generation.ts +1 -0
  414. package/corpus/templates/slides/app/lib/pending-deck-changes.ts +32 -0
  415. package/corpus/templates/slides/app/pages/DeckEditor.tsx +85 -4
  416. package/corpus/templates/slides/app/pages/Index.tsx +65 -66
  417. package/corpus/templates/slides/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
  418. package/corpus/templates/tasks/.agents/skills/adding-a-feature/SKILL.md +3 -2
  419. package/corpus/templates/tasks/.agents/skills/context-awareness/SKILL.md +206 -0
  420. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +73 -80
  421. package/corpus/templates/tasks/.agents/skills/portability/SKILL.md +107 -0
  422. package/corpus/templates/tasks/.agents/skills/secrets/SKILL.md +339 -0
  423. package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +3 -3
  424. package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +1 -1
  425. package/corpus/templates/tasks/.agents/skills/sharing/SKILL.md +1 -0
  426. package/corpus/templates/tasks/.agents/skills/turn-into-app/SKILL.md +116 -44
  427. package/corpus/templates/tasks/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  428. package/corpus/templates/tasks/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  429. package/corpus/templates/tasks/.agents/skills/workspace-conventions/SKILL.md +93 -0
  430. package/corpus/templates/tasks/app/components/custom-fields/FieldsPage.tsx +1 -4
  431. package/corpus/templates/tasks/app/components/inbox/InboxList.tsx +0 -1
  432. package/corpus/templates/tasks/app/components/inbox/InboxListPage.tsx +0 -1
  433. package/corpus/templates/tasks/app/components/shared/ListViewHeader.tsx +0 -3
  434. package/corpus/templates/tasks/app/components/shared/PageHeader.tsx +1 -4
  435. package/corpus/templates/tasks/app/components/tasks/TaskList.tsx +0 -1
  436. package/corpus/templates/tasks/app/components/tasks/TaskListPage.tsx +0 -1
  437. package/dist/agent/engine/ai-sdk-engine.js +5 -0
  438. package/dist/agent/engine/anthropic-engine.js +8 -0
  439. package/dist/agent/engine/registry.js +24 -19
  440. package/dist/agent/engine/translate-anthropic.js +16 -1
  441. package/dist/agent/production-agent.d.ts +8 -0
  442. package/dist/agent/production-agent.js +25 -2
  443. package/dist/agent/run-manager.js +13 -3
  444. package/dist/automations/service.d.ts +2 -0
  445. package/dist/automations/service.js +5 -1
  446. package/dist/chat-threads/schema.d.ts +2 -2
  447. package/dist/cli/changelog.js +21 -4
  448. package/dist/cli/create.d.ts +12 -1
  449. package/dist/cli/create.js +99 -11
  450. package/dist/cli/index.js +6 -6
  451. package/dist/cli/process.d.ts +7 -0
  452. package/dist/cli/process.js +12 -0
  453. package/dist/cli/workspace-skill-policy.d.ts +15 -0
  454. package/dist/cli/workspace-skill-policy.js +62 -0
  455. package/dist/cli/workspacify.js +36 -0
  456. package/dist/client/AgentPanel.d.ts +14 -2
  457. package/dist/client/AgentPanel.js +44 -26
  458. package/dist/client/AssistantChat.js +90 -182
  459. package/dist/client/FeedbackButton.js +15 -2
  460. package/dist/client/RouteTransitionIndicator.d.ts +14 -2
  461. package/dist/client/RouteTransitionIndicator.js +16 -5
  462. package/dist/client/agent-page/AgentTabsPage.js +19 -6
  463. package/dist/client/app-config.d.ts +3 -0
  464. package/dist/client/app-config.js +6 -0
  465. package/dist/client/app-providers.js +2 -1
  466. package/dist/client/changelog/Changelog.d.ts +2 -1
  467. package/dist/client/changelog/Changelog.js +7 -5
  468. package/dist/client/chat/markdown-renderer.d.ts +3 -1
  469. package/dist/client/chat/markdown-renderer.js +24 -24
  470. package/dist/client/chat/message-components.d.ts +23 -0
  471. package/dist/client/chat/message-components.js +27 -44
  472. package/dist/client/chat/tool-call-display.d.ts +2 -2
  473. package/dist/client/chat/tool-call-display.js +6 -3
  474. package/dist/client/chat-first/app-open-actions.d.ts +28 -0
  475. package/dist/client/chat-first/app-open-actions.js +25 -0
  476. package/dist/client/chat-first/index.d.ts +1 -0
  477. package/dist/client/chat-first/index.js +1 -0
  478. package/dist/client/chat-first/primary-nav.d.ts +2 -1
  479. package/dist/client/chat-first/primary-nav.js +12 -5
  480. package/dist/client/conversation/use-near-bottom-autoscroll.d.ts +14 -0
  481. package/dist/client/conversation/use-near-bottom-autoscroll.js +14 -0
  482. package/dist/client/error-format.js +32 -3
  483. package/dist/client/extensions/EmbeddedExtension.js +1 -0
  484. package/dist/client/extensions/ExtensionViewer.js +3 -1
  485. package/dist/client/extensions/InlineExtensionFrame.js +1 -0
  486. package/dist/client/extensions/iframe-bridge.d.ts +3 -2
  487. package/dist/client/extensions/iframe-bridge.js +4 -2
  488. package/dist/client/i18n.js +28 -5
  489. package/dist/client/integrations/IntegrationConnectionChoice.d.ts +11 -0
  490. package/dist/client/integrations/IntegrationConnectionChoice.js +6 -0
  491. package/dist/client/integrations/IntegrationGrid.d.ts +23 -0
  492. package/dist/client/integrations/IntegrationGrid.js +12 -0
  493. package/dist/client/integrations/IntegrationsPanel.js +92 -26
  494. package/dist/client/integrations/index.d.ts +2 -0
  495. package/dist/client/integrations/index.js +2 -0
  496. package/dist/client/onboarding/FirstRunOnboarding.d.ts +3 -1
  497. package/dist/client/onboarding/FirstRunOnboarding.js +26 -16
  498. package/dist/client/onboarding/first-run-enabled.js +1 -5
  499. package/dist/client/onboarding/first-run-startup-gate.d.ts +5 -0
  500. package/dist/client/onboarding/first-run-startup-gate.js +51 -0
  501. package/dist/client/onboarding/first-run-status.d.ts +7 -0
  502. package/dist/client/onboarding/first-run-status.js +26 -0
  503. package/dist/client/onboarding/index.d.ts +3 -0
  504. package/dist/client/onboarding/index.js +3 -0
  505. package/dist/client/onboarding/use-onboarding.d.ts +1 -0
  506. package/dist/client/onboarding/use-onboarding.js +13 -11
  507. package/dist/client/org/TeamPage.js +174 -28
  508. package/dist/client/org/WorkspaceNotice.js +7 -4
  509. package/dist/client/resources/McpConnectionSuggestion.js +29 -72
  510. package/dist/client/resources/McpIntegrationDialog.d.ts +3 -1
  511. package/dist/client/resources/McpIntegrationDialog.js +176 -51
  512. package/dist/client/resources/index.d.ts +1 -0
  513. package/dist/client/resources/index.js +1 -0
  514. package/dist/client/resources/mcp-integration-catalog.d.ts +8 -0
  515. package/dist/client/resources/mcp-integration-catalog.js +28 -0
  516. package/dist/client/settings/ExtensionsSettingsContent.js +2 -2
  517. package/dist/client/settings/SettingsPanel.d.ts +6 -0
  518. package/dist/client/settings/SettingsPanel.js +21 -8
  519. package/dist/client/settings/SettingsRow.d.ts +3 -1
  520. package/dist/client/settings/SettingsRow.js +4 -2
  521. package/dist/client/settings/SettingsSkeleton.js +5 -3
  522. package/dist/client/settings/SettingsTabsPage.js +2 -2
  523. package/dist/client/settings/UsageSection.d.ts +4 -1
  524. package/dist/client/settings/UsageSection.js +187 -93
  525. package/dist/client/settings/agent-settings-search.js +6 -2
  526. package/dist/client/setup-connections/useBuilderConnectCardController.d.ts +1 -1
  527. package/dist/client/setup-connections/useBuilderConnectCardController.js +2 -2
  528. package/dist/client/sharing/ShareButton.d.ts +4 -2
  529. package/dist/client/sharing/ShareButton.js +26 -14
  530. package/dist/client/sharing/ShareDialog.d.ts +1 -1
  531. package/dist/client/sharing/ShareDialog.js +17 -11
  532. package/dist/client/sharing/useShareButtonController.d.ts +2 -1
  533. package/dist/client/sharing/useShareButtonController.js +8 -0
  534. package/dist/client/sharing/useShareDialogController.d.ts +1 -1
  535. package/dist/client/sharing/useShareDialogController.js +2 -1
  536. package/dist/collab/routes.d.ts +1 -1
  537. package/dist/config.d.ts +13 -0
  538. package/dist/config.js +53 -0
  539. package/dist/dashboard-storage/schema.d.ts +2 -2
  540. package/dist/data-programs/schema.d.ts +2 -2
  541. package/dist/extensions/actions.js +2 -1
  542. package/dist/extensions/html-shell.d.ts +2 -2
  543. package/dist/extensions/routes.js +4 -1
  544. package/dist/extensions/schema.d.ts +2 -2
  545. package/dist/file-upload/pre-upload-attachments.js +1 -1
  546. package/dist/framework-tools.js +3 -0
  547. package/dist/history/types.d.ts +1 -1
  548. package/dist/index.d.ts +2 -1
  549. package/dist/index.js +2 -1
  550. package/dist/jobs/background-automation-runner.d.ts +1 -0
  551. package/dist/jobs/background-automation-runner.js +4 -2
  552. package/dist/jobs/frontmatter.d.ts +4 -0
  553. package/dist/jobs/frontmatter.js +16 -0
  554. package/dist/jobs/run-history.js +1 -1
  555. package/dist/jobs/tools.js +9 -5
  556. package/dist/localization/default-messages.d.ts +27 -0
  557. package/dist/localization/default-messages.js +28 -1
  558. package/dist/notifications/routes.d.ts +6 -6
  559. package/dist/onboarding/plugin.js +17 -2
  560. package/dist/org/context.js +16 -0
  561. package/dist/progress/routes.d.ts +1 -1
  562. package/dist/provider-api/actions/custom-provider-registration.d.ts +12 -12
  563. package/dist/provider-api/actions/provider-api.d.ts +8 -8
  564. package/dist/review/actions/create-review-comment.js +1 -1
  565. package/dist/review/actions/delete-review-comment.js +4 -1
  566. package/dist/review/actions/list-review-comments.js +4 -2
  567. package/dist/review/actions/reply-review-comment.js +1 -1
  568. package/dist/review/types.d.ts +1 -1
  569. package/dist/secrets/routes.d.ts +9 -9
  570. package/dist/server/action-discovery.js +29 -0
  571. package/dist/server/agent-chat/plugin-options.d.ts +7 -0
  572. package/dist/server/agent-chat-plugin.d.ts +2 -0
  573. package/dist/server/agent-chat-plugin.js +12 -4
  574. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  575. package/dist/server/auth.js +18 -4
  576. package/dist/server/better-auth-instance.js +8 -1
  577. package/dist/server/builder-browser.js +31 -0
  578. package/dist/server/magic-link-attribution.d.ts +21 -0
  579. package/dist/server/magic-link-attribution.js +115 -0
  580. package/dist/server/onboarding-html.js +1 -1
  581. package/dist/server/realtime-token.d.ts +1 -1
  582. package/dist/server/transcribe-voice.d.ts +1 -1
  583. package/dist/server/workspace-provider-oauth.js +38 -26
  584. package/dist/setup-connections/index.d.ts +1 -1
  585. package/dist/setup-connections/index.js +1 -1
  586. package/dist/shared/first-run-onboarding.d.ts +6 -0
  587. package/dist/shared/first-run-onboarding.js +6 -0
  588. package/dist/sharing/access.d.ts +1 -1
  589. package/dist/sharing/access.js +4 -1
  590. package/dist/sharing/actions/share-resource.d.ts +1 -1
  591. package/dist/sharing/actions/share-resource.js +2 -2
  592. package/dist/sharing/registry.d.ts +2 -2
  593. package/dist/sharing/schema.d.ts +5 -5
  594. package/dist/sharing/schema.js +9 -6
  595. package/dist/styles/agent-native.css +21 -0
  596. package/dist/styles/chat-history-list.css +1 -1
  597. package/dist/templates/chat/.agents/skills/adding-a-feature/SKILL.md +3 -2
  598. package/dist/templates/chat/.agents/skills/context-awareness/SKILL.md +206 -0
  599. package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +73 -80
  600. package/dist/templates/chat/.agents/skills/portability/SKILL.md +107 -0
  601. package/dist/templates/chat/.agents/skills/secrets/SKILL.md +339 -0
  602. package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +3 -3
  603. package/dist/templates/chat/.agents/skills/shadcn-ui/SKILL.md +1 -1
  604. package/dist/templates/chat/.agents/skills/sharing/SKILL.md +1 -0
  605. package/dist/templates/chat/.agents/skills/turn-into-app/SKILL.md +116 -44
  606. package/dist/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  607. package/dist/templates/chat/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  608. package/dist/templates/chat/.agents/skills/workspace-conventions/SKILL.md +93 -0
  609. package/dist/templates/chat/AGENTS.md +4 -5
  610. package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +3 -2
  611. package/dist/templates/default/.agents/skills/context-awareness/SKILL.md +206 -0
  612. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +73 -80
  613. package/dist/templates/default/.agents/skills/portability/SKILL.md +107 -0
  614. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +3 -3
  615. package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +1 -1
  616. package/dist/templates/default/.agents/skills/sharing/SKILL.md +233 -0
  617. package/dist/templates/default/.agents/skills/turn-into-app/SKILL.md +116 -44
  618. package/dist/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  619. package/dist/templates/default/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  620. package/dist/templates/default/.agents/skills/workspace-conventions/SKILL.md +93 -0
  621. package/dist/templates/default/AGENTS.md +17 -2
  622. package/dist/templates/default/agent-native.config.ts +6 -0
  623. package/dist/templates/default/app/i18n/ar-SA.ts +2 -0
  624. package/dist/templates/default/app/i18n/de-DE.ts +2 -0
  625. package/dist/templates/default/app/i18n/en-US.ts +3 -1
  626. package/dist/templates/default/app/i18n/es-ES.ts +2 -0
  627. package/dist/templates/default/app/i18n/fr-FR.ts +2 -0
  628. package/dist/templates/default/app/i18n/hi-IN.ts +2 -0
  629. package/dist/templates/default/app/i18n/ja-JP.ts +2 -0
  630. package/dist/templates/default/app/i18n/ko-KR.ts +2 -0
  631. package/dist/templates/default/app/i18n/pt-BR.ts +2 -0
  632. package/dist/templates/default/app/i18n/zh-CN.ts +2 -0
  633. package/dist/templates/default/app/i18n/zh-TW.ts +2 -0
  634. package/dist/templates/headless/.agents/skills/delegate-to-agent/SKILL.md +289 -0
  635. package/dist/templates/headless/.agents/skills/security/SKILL.md +324 -0
  636. package/dist/templates/headless/.agents/skills/storing-data/SKILL.md +178 -0
  637. package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +3 -2
  638. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +73 -80
  639. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +3 -3
  640. package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +1 -1
  641. package/dist/templates/workspace-core/.agents/skills/sharing/SKILL.md +1 -0
  642. package/dist/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +116 -44
  643. package/dist/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  644. package/dist/templates/workspace-core/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  645. package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +3 -2
  646. package/dist/templates/workspace-core/AGENTS.md +9 -3
  647. package/dist/templates/workspace-root/AGENTS.md +26 -1
  648. package/dist/templates/workspace-root/agent-native.config.ts +8 -0
  649. package/dist/triggers/actions.js +2 -2
  650. package/dist/usage/actions/get-usage-alerts.d.ts +5 -0
  651. package/dist/usage/actions/get-usage-alerts.js +16 -0
  652. package/dist/usage/actions/get-usage-metrics.d.ts +7 -0
  653. package/dist/usage/actions/get-usage-metrics.js +26 -0
  654. package/dist/usage/actions/manage-usage-alert.d.ts +14 -0
  655. package/dist/usage/actions/manage-usage-alert.js +48 -0
  656. package/dist/usage/alerts-store.d.ts +78 -0
  657. package/dist/usage/alerts-store.js +592 -0
  658. package/dist/usage/metrics-store.d.ts +95 -0
  659. package/dist/usage/metrics-store.js +386 -0
  660. package/dist/usage/store.js +10 -0
  661. package/dist/vite/action-types-plugin.js +28 -0
  662. package/dist/vite/agent-native-config-loader.d.ts +6 -0
  663. package/dist/vite/agent-native-config-loader.js +54 -2
  664. package/dist/vite/client.js +11 -5
  665. package/dist/workspace-connections/actions/bulk-update-workspace-user-groups.d.ts +6 -0
  666. package/dist/workspace-connections/actions/bulk-update-workspace-user-groups.js +24 -0
  667. package/dist/workspace-connections/actions/delete-workspace-user-group.d.ts +7 -0
  668. package/dist/workspace-connections/actions/delete-workspace-user-group.js +29 -0
  669. package/dist/workspace-connections/actions/list-workspace-user-groups.d.ts +2 -0
  670. package/dist/workspace-connections/actions/list-workspace-user-groups.js +13 -0
  671. package/dist/workspace-connections/actions/upsert-workspace-user-group.d.ts +6 -0
  672. package/dist/workspace-connections/actions/upsert-workspace-user-group.js +22 -0
  673. package/dist/workspace-connections/credential-key-aliases.d.ts +3 -0
  674. package/dist/workspace-connections/credential-key-aliases.js +31 -0
  675. package/dist/workspace-connections/credentials.js +1 -25
  676. package/dist/workspace-connections/groups.d.ts +32 -0
  677. package/dist/workspace-connections/groups.js +288 -0
  678. package/dist/workspace-connections/index.d.ts +3 -1
  679. package/dist/workspace-connections/index.js +3 -1
  680. package/dist/workspace-connections/store.d.ts +9 -0
  681. package/dist/workspace-connections/store.js +68 -8
  682. package/docs/content/components.mdx +2 -2
  683. package/docs/content/sharing.mdx +2 -1
  684. package/package.json +10 -2
  685. package/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +3 -2
  686. package/src/templates/chat/.agents/skills/context-awareness/SKILL.md +206 -0
  687. package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +73 -80
  688. package/src/templates/chat/.agents/skills/portability/SKILL.md +107 -0
  689. package/src/templates/chat/.agents/skills/secrets/SKILL.md +339 -0
  690. package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +3 -3
  691. package/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +1 -1
  692. package/src/templates/chat/.agents/skills/sharing/SKILL.md +1 -0
  693. package/src/templates/chat/.agents/skills/turn-into-app/SKILL.md +116 -44
  694. package/src/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  695. package/src/templates/chat/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  696. package/src/templates/chat/.agents/skills/workspace-conventions/SKILL.md +93 -0
  697. package/src/templates/chat/AGENTS.md +4 -5
  698. package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +3 -2
  699. package/src/templates/default/.agents/skills/context-awareness/SKILL.md +206 -0
  700. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +73 -80
  701. package/src/templates/default/.agents/skills/portability/SKILL.md +107 -0
  702. package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +3 -3
  703. package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +1 -1
  704. package/src/templates/default/.agents/skills/sharing/SKILL.md +233 -0
  705. package/src/templates/default/.agents/skills/turn-into-app/SKILL.md +116 -44
  706. package/src/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  707. package/src/templates/default/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  708. package/src/templates/default/.agents/skills/workspace-conventions/SKILL.md +93 -0
  709. package/src/templates/default/AGENTS.md +17 -2
  710. package/src/templates/default/agent-native.config.ts +6 -0
  711. package/src/templates/default/app/i18n/ar-SA.ts +2 -0
  712. package/src/templates/default/app/i18n/de-DE.ts +2 -0
  713. package/src/templates/default/app/i18n/en-US.ts +3 -1
  714. package/src/templates/default/app/i18n/es-ES.ts +2 -0
  715. package/src/templates/default/app/i18n/fr-FR.ts +2 -0
  716. package/src/templates/default/app/i18n/hi-IN.ts +2 -0
  717. package/src/templates/default/app/i18n/ja-JP.ts +2 -0
  718. package/src/templates/default/app/i18n/ko-KR.ts +2 -0
  719. package/src/templates/default/app/i18n/pt-BR.ts +2 -0
  720. package/src/templates/default/app/i18n/zh-CN.ts +2 -0
  721. package/src/templates/default/app/i18n/zh-TW.ts +2 -0
  722. package/src/templates/headless/.agents/skills/delegate-to-agent/SKILL.md +289 -0
  723. package/src/templates/headless/.agents/skills/security/SKILL.md +324 -0
  724. package/src/templates/headless/.agents/skills/storing-data/SKILL.md +178 -0
  725. package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +3 -2
  726. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +73 -80
  727. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +3 -3
  728. package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +1 -1
  729. package/src/templates/workspace-core/.agents/skills/sharing/SKILL.md +1 -0
  730. package/src/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +116 -44
  731. package/src/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  732. package/src/templates/workspace-core/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  733. package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +3 -2
  734. package/src/templates/workspace-core/AGENTS.md +9 -3
  735. package/src/templates/workspace-root/AGENTS.md +26 -1
  736. package/src/templates/workspace-root/agent-native.config.ts +8 -0
  737. package/corpus/templates/analytics/.agents/skills/capture-learnings/SKILL.md +0 -89
  738. package/corpus/templates/analytics/.agents/skills/create-skill/SKILL.md +0 -195
  739. package/corpus/templates/analytics/.agents/skills/feature-flags/SKILL.md +0 -169
  740. package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  741. package/corpus/templates/assets/.agents/skills/capture-learnings/SKILL.md +0 -89
  742. package/corpus/templates/assets/.agents/skills/create-skill/SKILL.md +0 -195
  743. package/corpus/templates/assets/.agents/skills/feature-flags/SKILL.md +0 -169
  744. package/corpus/templates/assets/.agents/skills/real-time-collab/SKILL.md +0 -392
  745. package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  746. package/corpus/templates/brain/.agents/skills/capture-learnings/SKILL.md +0 -89
  747. package/corpus/templates/brain/.agents/skills/create-skill/SKILL.md +0 -195
  748. package/corpus/templates/brain/.agents/skills/feature-flags/SKILL.md +0 -169
  749. package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  750. package/corpus/templates/calendar/.agents/skills/capture-learnings/SKILL.md +0 -89
  751. package/corpus/templates/calendar/.agents/skills/create-skill/SKILL.md +0 -195
  752. package/corpus/templates/calendar/.agents/skills/feature-flags/SKILL.md +0 -169
  753. package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  754. package/corpus/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
  755. package/corpus/templates/chat/.agents/skills/create-skill/SKILL.md +0 -195
  756. package/corpus/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
  757. package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  758. package/corpus/templates/clips/.agents/skills/capture-learnings/SKILL.md +0 -89
  759. package/corpus/templates/clips/.agents/skills/create-skill/SKILL.md +0 -195
  760. package/corpus/templates/clips/.agents/skills/feature-flags/SKILL.md +0 -169
  761. package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  762. package/corpus/templates/content/.agents/skills/capture-learnings/SKILL.md +0 -89
  763. package/corpus/templates/content/.agents/skills/create-skill/SKILL.md +0 -195
  764. package/corpus/templates/content/.agents/skills/feature-flags/SKILL.md +0 -169
  765. package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  766. package/corpus/templates/crm/.agents/skills/feature-flags/SKILL.md +0 -169
  767. package/corpus/templates/crm/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  768. package/corpus/templates/design/.agents/skills/capture-learnings/SKILL.md +0 -89
  769. package/corpus/templates/design/.agents/skills/create-skill/SKILL.md +0 -195
  770. package/corpus/templates/design/.agents/skills/feature-flags/SKILL.md +0 -169
  771. package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  772. package/corpus/templates/dispatch/.agents/skills/capture-learnings/SKILL.md +0 -89
  773. package/corpus/templates/dispatch/.agents/skills/create-skill/SKILL.md +0 -195
  774. package/corpus/templates/dispatch/.agents/skills/feature-flags/SKILL.md +0 -169
  775. package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  776. package/corpus/templates/factory/.agents/skills/capture-learnings/SKILL.md +0 -89
  777. package/corpus/templates/factory/.agents/skills/create-skill/SKILL.md +0 -195
  778. package/corpus/templates/factory/.agents/skills/feature-flags/SKILL.md +0 -169
  779. package/corpus/templates/factory/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  780. package/corpus/templates/forms/.agents/skills/capture-learnings/SKILL.md +0 -89
  781. package/corpus/templates/forms/.agents/skills/create-skill/SKILL.md +0 -195
  782. package/corpus/templates/forms/.agents/skills/feature-flags/SKILL.md +0 -169
  783. package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  784. package/corpus/templates/macros/.agents/skills/feature-flags/SKILL.md +0 -169
  785. package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  786. package/corpus/templates/mail/.agents/skills/capture-learnings/SKILL.md +0 -89
  787. package/corpus/templates/mail/.agents/skills/create-skill/SKILL.md +0 -195
  788. package/corpus/templates/mail/.agents/skills/feature-flags/SKILL.md +0 -169
  789. package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  790. package/corpus/templates/plan/.agents/skills/capture-learnings/SKILL.md +0 -89
  791. package/corpus/templates/plan/.agents/skills/create-skill/SKILL.md +0 -195
  792. package/corpus/templates/plan/.agents/skills/feature-flags/SKILL.md +0 -169
  793. package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  794. package/corpus/templates/slides/.agents/skills/capture-learnings/SKILL.md +0 -89
  795. package/corpus/templates/slides/.agents/skills/create-skill/SKILL.md +0 -195
  796. package/corpus/templates/slides/.agents/skills/feature-flags/SKILL.md +0 -169
  797. package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  798. package/corpus/templates/tasks/.agents/skills/capture-learnings/SKILL.md +0 -89
  799. package/corpus/templates/tasks/.agents/skills/create-skill/SKILL.md +0 -195
  800. package/corpus/templates/tasks/.agents/skills/feature-flags/SKILL.md +0 -169
  801. package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  802. package/dist/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
  803. package/dist/templates/chat/.agents/skills/create-skill/SKILL.md +0 -195
  804. package/dist/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
  805. package/dist/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  806. package/dist/templates/default/.agents/skills/capture-learnings/SKILL.md +0 -89
  807. package/dist/templates/default/.agents/skills/create-skill/SKILL.md +0 -195
  808. package/dist/templates/default/.agents/skills/feature-flags/SKILL.md +0 -169
  809. package/dist/templates/default/.agents/skills/integration-webhooks/SKILL.md +0 -364
  810. package/dist/templates/default/.agents/skills/internationalization/SKILL.md +0 -82
  811. package/dist/templates/default/.agents/skills/onboarding/SKILL.md +0 -56
  812. package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +0 -392
  813. package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  814. package/dist/templates/headless/.agents/skills/feature-flags/SKILL.md +0 -169
  815. package/dist/templates/headless/.agents/skills/integration-webhooks/SKILL.md +0 -364
  816. package/dist/templates/headless/.agents/skills/turn-into-app/SKILL.md +0 -402
  817. package/dist/templates/headless/.agents/skills/turn-into-app/agents/openai.yaml +0 -4
  818. package/dist/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +0 -90
  819. package/dist/templates/headless/.agents/skills/turn-into-skill/SKILL.md +0 -112
  820. package/dist/templates/headless/.agents/skills/turn-into-skill/agents/openai.yaml +0 -4
  821. package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  822. package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +0 -411
  823. package/dist/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +0 -107
  824. package/dist/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +0 -176
  825. package/dist/templates/workspace-core/.agents/skills/agent-page/SKILL.md +0 -63
  826. package/dist/templates/workspace-core/.agents/skills/audit-log/SKILL.md +0 -96
  827. package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +0 -295
  828. package/dist/templates/workspace-core/.agents/skills/automations/SKILL.md +0 -242
  829. package/dist/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +0 -131
  830. package/dist/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +0 -89
  831. package/dist/templates/workspace-core/.agents/skills/changelog/SKILL.md +0 -114
  832. package/dist/templates/workspace-core/.agents/skills/client-methods/SKILL.md +0 -115
  833. package/dist/templates/workspace-core/.agents/skills/client-methods/references/legacy-client-fetch-audit-2026-06-03.md +0 -62
  834. package/dist/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +0 -87
  835. package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +0 -139
  836. package/dist/templates/workspace-core/.agents/skills/context-xray/SKILL.md +0 -72
  837. package/dist/templates/workspace-core/.agents/skills/create-skill/SKILL.md +0 -195
  838. package/dist/templates/workspace-core/.agents/skills/data-programs/SKILL.md +0 -128
  839. package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +0 -219
  840. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +0 -533
  841. package/dist/templates/workspace-core/.agents/skills/extensions/references/api.md +0 -340
  842. package/dist/templates/workspace-core/.agents/skills/extensions/references/examples.md +0 -259
  843. package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +0 -547
  844. package/dist/templates/workspace-core/.agents/skills/external-agents/references/mcp-apps-embedding.md +0 -157
  845. package/dist/templates/workspace-core/.agents/skills/feature-flags/SKILL.md +0 -169
  846. package/dist/templates/workspace-core/.agents/skills/generative-ui/SKILL.md +0 -117
  847. package/dist/templates/workspace-core/.agents/skills/harness-agents/SKILL.md +0 -170
  848. package/dist/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +0 -364
  849. package/dist/templates/workspace-core/.agents/skills/internationalization/SKILL.md +0 -82
  850. package/dist/templates/workspace-core/.agents/skills/mvp-followup/SKILL.md +0 -52
  851. package/dist/templates/workspace-core/.agents/skills/native-navigation/SKILL.md +0 -67
  852. package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -329
  853. package/dist/templates/workspace-core/.agents/skills/onboarding/SKILL.md +0 -56
  854. package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +0 -299
  855. package/dist/templates/workspace-core/.agents/skills/qa/SKILL.md +0 -333
  856. package/dist/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +0 -392
  857. package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +0 -74
  858. package/dist/templates/workspace-core/.agents/skills/reliable-mutations/SKILL.md +0 -70
  859. package/dist/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +0 -84
  860. package/dist/templates/workspace-core/.agents/skills/tracking/SKILL.md +0 -278
  861. package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  862. package/dist/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +0 -101
  863. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +0 -222
  864. package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +0 -363
  865. package/src/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
  866. package/src/templates/chat/.agents/skills/create-skill/SKILL.md +0 -195
  867. package/src/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
  868. package/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  869. package/src/templates/default/.agents/skills/capture-learnings/SKILL.md +0 -89
  870. package/src/templates/default/.agents/skills/create-skill/SKILL.md +0 -195
  871. package/src/templates/default/.agents/skills/feature-flags/SKILL.md +0 -169
  872. package/src/templates/default/.agents/skills/integration-webhooks/SKILL.md +0 -364
  873. package/src/templates/default/.agents/skills/internationalization/SKILL.md +0 -82
  874. package/src/templates/default/.agents/skills/onboarding/SKILL.md +0 -56
  875. package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +0 -392
  876. package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  877. package/src/templates/headless/.agents/skills/feature-flags/SKILL.md +0 -169
  878. package/src/templates/headless/.agents/skills/integration-webhooks/SKILL.md +0 -364
  879. package/src/templates/headless/.agents/skills/turn-into-app/SKILL.md +0 -402
  880. package/src/templates/headless/.agents/skills/turn-into-app/agents/openai.yaml +0 -4
  881. package/src/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +0 -90
  882. package/src/templates/headless/.agents/skills/turn-into-skill/SKILL.md +0 -112
  883. package/src/templates/headless/.agents/skills/turn-into-skill/agents/openai.yaml +0 -4
  884. package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  885. package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +0 -411
  886. package/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +0 -107
  887. package/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +0 -176
  888. package/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +0 -63
  889. package/src/templates/workspace-core/.agents/skills/audit-log/SKILL.md +0 -96
  890. package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +0 -295
  891. package/src/templates/workspace-core/.agents/skills/automations/SKILL.md +0 -242
  892. package/src/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +0 -131
  893. package/src/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +0 -89
  894. package/src/templates/workspace-core/.agents/skills/changelog/SKILL.md +0 -114
  895. package/src/templates/workspace-core/.agents/skills/client-methods/SKILL.md +0 -115
  896. package/src/templates/workspace-core/.agents/skills/client-methods/references/legacy-client-fetch-audit-2026-06-03.md +0 -62
  897. package/src/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +0 -87
  898. package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +0 -139
  899. package/src/templates/workspace-core/.agents/skills/context-xray/SKILL.md +0 -72
  900. package/src/templates/workspace-core/.agents/skills/create-skill/SKILL.md +0 -195
  901. package/src/templates/workspace-core/.agents/skills/data-programs/SKILL.md +0 -128
  902. package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +0 -219
  903. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +0 -533
  904. package/src/templates/workspace-core/.agents/skills/extensions/references/api.md +0 -340
  905. package/src/templates/workspace-core/.agents/skills/extensions/references/examples.md +0 -259
  906. package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +0 -547
  907. package/src/templates/workspace-core/.agents/skills/external-agents/references/mcp-apps-embedding.md +0 -157
  908. package/src/templates/workspace-core/.agents/skills/feature-flags/SKILL.md +0 -169
  909. package/src/templates/workspace-core/.agents/skills/generative-ui/SKILL.md +0 -117
  910. package/src/templates/workspace-core/.agents/skills/harness-agents/SKILL.md +0 -170
  911. package/src/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +0 -364
  912. package/src/templates/workspace-core/.agents/skills/internationalization/SKILL.md +0 -82
  913. package/src/templates/workspace-core/.agents/skills/mvp-followup/SKILL.md +0 -52
  914. package/src/templates/workspace-core/.agents/skills/native-navigation/SKILL.md +0 -67
  915. package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -329
  916. package/src/templates/workspace-core/.agents/skills/onboarding/SKILL.md +0 -56
  917. package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +0 -299
  918. package/src/templates/workspace-core/.agents/skills/qa/SKILL.md +0 -333
  919. package/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +0 -392
  920. package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +0 -74
  921. package/src/templates/workspace-core/.agents/skills/reliable-mutations/SKILL.md +0 -70
  922. package/src/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +0 -84
  923. package/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +0 -278
  924. package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  925. package/src/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +0 -101
  926. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +0 -222
  927. package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +0 -363
@@ -81,6 +81,7 @@ function extensionRole(value) {
81
81
  return value === "owner" ||
82
82
  value === "admin" ||
83
83
  value === "editor" ||
84
+ value === "commenter" ||
84
85
  value === "viewer"
85
86
  ? value
86
87
  : "viewer";
@@ -441,6 +442,7 @@ export function ExtensionViewer({ extensionId }) {
441
442
  const role = binding.role === "owner" ||
442
443
  binding.role === "admin" ||
443
444
  binding.role === "editor" ||
445
+ binding.role === "commenter" ||
444
446
  binding.role === "viewer"
445
447
  ? binding.role
446
448
  : "viewer";
@@ -732,7 +734,7 @@ export function ExtensionViewer({ extensionId }) {
732
734
  ? t("extensions.sandboxedCustomBlockCreatedBy", {
733
735
  email: extension.ownerEmail,
734
736
  })
735
- : t("extensions.sandboxedCustomBlock"), children: t("extensions.customBlockSandboxed") })), extension.canEdit && !isLocalExtension && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: startRename, className: "shrink-0 cursor-pointer rounded p-0.5 text-muted-foreground/40 opacity-0 group-hover/name:opacity-100 hover:text-foreground", children: _jsx(IconPencil, { className: "h-3 w-3" }) }) }), _jsx(TooltipContent, { children: "Rename" })] }))] }))] }) }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: () => setRefreshKey((k) => k + 1), className: "inline-flex items-center justify-center rounded-md h-8 w-8 text-muted-foreground hover:bg-accent hover:text-accent-foreground cursor-pointer", children: _jsx(IconRefresh, { className: "h-4 w-4" }) }) }), _jsx(TooltipContent, { children: "Refresh" })] }), !isLocalExtension && (_jsxs(_Fragment, { children: [_jsx(ExtensionHistoryPopover, { extensionId: extensionId, canEdit: extension.canEdit, onRestored: () => setRefreshKey((k) => k + 1), onOpenChange: onPopoverOpenChange }), _jsx(EditToolPopover, { extension: extension, onOpenChange: onPopoverOpenChange })] })), _jsx(ToolMoreMenu, { extensionId: extensionId, toolName: extension.name, ownerEmail: extension.ownerEmail, canDelete: extension.canDelete, canEdit: extension.canEdit, sourceMode: extension.source?.mode, onOpenChange: onPopoverOpenChange }), !isLocalExtension && (_jsx(_Fragment, { children: _jsx(ShareButton, { resourceType: "extension", resourceId: extensionId, resourceTitle: extension.name, onOpenChange: onPopoverOpenChange, accessNote: _jsx(_Fragment, { children: "Extensions can be shared inside your organization only \u2014 they run with the viewer's credentials, so cross-org access isn't supported." }) }) })), _jsx(AgentToggleButton, {})] })] }), isLocalExtension && (_jsxs("div", { className: "shrink-0 border-b bg-muted/30 px-4 py-2 text-xs text-muted-foreground", children: ["Repo-backed extension. Edit", " ", _jsx("span", { className: "font-mono text-foreground", children: extension.source?.entryPath ?? "extensions/*/index.html" }), " ", "in your workspace, then refresh this preview."] })), _jsxs("div", { className: "relative flex-1 min-h-0", children: [!iframeReady && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-background z-10", children: _jsx(IconLoader2, { className: "size-5 animate-spin text-muted-foreground", role: "status", "aria-label": "Loading" }) })), _jsx("iframe", { [SESSION_REPLAY_IFRAME_ATTRIBUTE]: "", ref: iframeRef, src: iframeSrcDoc ? undefined : iframeSrc, srcDoc: iframeSrcDoc, className: "h-full w-full border-0", sandbox: EXTENSION_IFRAME_SANDBOX, title: extension.name, style: {
737
+ : t("extensions.sandboxedCustomBlock"), children: t("extensions.customBlockSandboxed") })), extension.canEdit && !isLocalExtension && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: startRename, className: "shrink-0 cursor-pointer rounded p-0.5 text-muted-foreground/40 opacity-0 group-hover/name:opacity-100 hover:text-foreground", children: _jsx(IconPencil, { className: "h-3 w-3" }) }) }), _jsx(TooltipContent, { children: "Rename" })] }))] }))] }) }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: () => setRefreshKey((k) => k + 1), className: "inline-flex items-center justify-center rounded-md h-8 w-8 text-muted-foreground hover:bg-accent hover:text-accent-foreground cursor-pointer", children: _jsx(IconRefresh, { className: "h-4 w-4" }) }) }), _jsx(TooltipContent, { children: "Refresh" })] }), !isLocalExtension && (_jsxs(_Fragment, { children: [_jsx(ExtensionHistoryPopover, { extensionId: extensionId, canEdit: extension.canEdit, onRestored: () => setRefreshKey((k) => k + 1), onOpenChange: onPopoverOpenChange }), _jsx(EditToolPopover, { extension: extension, onOpenChange: onPopoverOpenChange })] })), _jsx(ToolMoreMenu, { extensionId: extensionId, toolName: extension.name, ownerEmail: extension.ownerEmail, canDelete: extension.canDelete, canEdit: extension.canEdit, sourceMode: extension.source?.mode, onOpenChange: onPopoverOpenChange }), !isLocalExtension && (_jsx(_Fragment, { children: _jsx(ShareButton, { resourceType: "extension", resourceId: extensionId, allowedRoles: ["viewer", "editor", "admin"], resourceTitle: extension.name, onOpenChange: onPopoverOpenChange, accessNote: _jsx(_Fragment, { children: "Extensions can be shared inside your organization only \u2014 they run with the viewer's credentials, so cross-org access isn't supported." }) }) })), _jsx(AgentToggleButton, {})] })] }), isLocalExtension && (_jsxs("div", { className: "shrink-0 border-b bg-muted/30 px-4 py-2 text-xs text-muted-foreground", children: ["Repo-backed extension. Edit", " ", _jsx("span", { className: "font-mono text-foreground", children: extension.source?.entryPath ?? "extensions/*/index.html" }), " ", "in your workspace, then refresh this preview."] })), _jsxs("div", { className: "relative flex-1 min-h-0", children: [!iframeReady && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-background z-10", children: _jsx(IconLoader2, { className: "size-5 animate-spin text-muted-foreground", role: "status", "aria-label": "Loading" }) })), _jsx("iframe", { [SESSION_REPLAY_IFRAME_ATTRIBUTE]: "", ref: iframeRef, src: iframeSrcDoc ? undefined : iframeSrc, srcDoc: iframeSrcDoc, className: "h-full w-full border-0", sandbox: EXTENSION_IFRAME_SANDBOX, title: extension.name, style: {
736
738
  pointerEvents: openPopoverCount > 0 ? "none" : "auto",
737
739
  }, onLoad: () => {
738
740
  sendThemeToIframe();
@@ -54,6 +54,7 @@ function normalizeRole(value) {
54
54
  return value === "owner" ||
55
55
  value === "admin" ||
56
56
  value === "editor" ||
57
+ value === "commenter" ||
57
58
  value === "viewer"
58
59
  ? value
59
60
  : "viewer";
@@ -13,7 +13,7 @@
13
13
  */
14
14
  export declare function isAllowedExtensionPath(path: string, extensionId: string): boolean;
15
15
  export declare function sanitizeExtensionRequestOptions(value: unknown): RequestInit;
16
- export type ExtensionBridgeRole = "owner" | "admin" | "editor" | "viewer";
16
+ export type ExtensionBridgeRole = "owner" | "admin" | "editor" | "commenter" | "viewer";
17
17
  export interface BridgePolicyContext {
18
18
  /** Extension id currently owning the iframe. Used for narrow helper-specific exceptions. */
19
19
  extensionId?: string;
@@ -39,7 +39,8 @@ export interface BridgePolicyResult {
39
39
  /**
40
40
  * Decide whether the iframe is allowed to proxy this request given the
41
41
  * viewer's role on the extension. Authors (and owner/admin/editor in general)
42
- * keep the full bridge surface; viewers get a strictly read-only subset.
42
+ * keep the full bridge surface; commenters and viewers get a strictly
43
+ * read-only subset because extensions have no comment-specific bridge APIs.
43
44
  *
44
45
  * Called BEFORE the request leaves the parent — so a denial is local-only
45
46
  * and never reveals server state to the iframe.
@@ -119,7 +119,8 @@ const READ_METHODS = new Set(["GET", "HEAD"]);
119
119
  /**
120
120
  * Decide whether the iframe is allowed to proxy this request given the
121
121
  * viewer's role on the extension. Authors (and owner/admin/editor in general)
122
- * keep the full bridge surface; viewers get a strictly read-only subset.
122
+ * keep the full bridge surface; commenters and viewers get a strictly
123
+ * read-only subset because extensions have no comment-specific bridge APIs.
123
124
  *
124
125
  * Called BEFORE the request leaves the parent — so a denial is local-only
125
126
  * and never reveals server state to the iframe.
@@ -138,7 +139,8 @@ export function checkBridgePolicy(path, method, ctx) {
138
139
  if (ctx.role === "editor") {
139
140
  return { ok: true };
140
141
  }
141
- // From here on: role === "viewer". Lock down everything beyond reads.
142
+ // From here on: role === "commenter" or "viewer". Lock down everything
143
+ // beyond reads; extensions have no comment-specific bridge APIs.
142
144
  const upperMethod = method.toUpperCase();
143
145
  // SQL is denied for viewers entirely (defense-in-depth: dev mode bypasses
144
146
  // the production scoping shim).
@@ -7,6 +7,7 @@ import { createContext, useCallback, useContext, useEffect, useMemo, useRef, use
7
7
  import { I18nextProvider, initReactI18next, useTranslation, } from "react-i18next";
8
8
  import defaultEnglishMessages from "../localization/default-messages.js";
9
9
  import { DEFAULT_LOCALE, LOCALE_HYDRATION_GLOBAL, LOCALE_METADATA, LOCALE_STORAGE_KEY, SUPPORTED_LOCALES, localeDirection, normalizeLocalizationPreference, resolveLocaleFromCandidates, resolveLocaleFromPreference, } from "../localization/shared.js";
10
+ import { injectedAgentNativeConfig } from "./app-config.js";
10
11
  import { setClientAppState } from "./application-state.js";
11
12
  import { callAction } from "./use-action.js";
12
13
  import { cn } from "./utils.js";
@@ -127,11 +128,27 @@ function readHydrationPayload() {
127
128
  function resolveInitialState(args) {
128
129
  const hydration = readHydrationPayload();
129
130
  const preference = normalizeLocalizationPreference(args.initialPreference ?? hydration.preference ?? readStoredPreference()).locale;
130
- const locale = args.initialLocale ??
131
+ const requestedLocale = args.initialLocale ??
131
132
  hydration.locale ??
132
133
  resolveLocaleFromPreference(preference, browserLanguageCandidates());
134
+ const locale = args.supportedLocales.includes(requestedLocale)
135
+ ? requestedLocale
136
+ : args.sourceLocale;
133
137
  return { locale, preference };
134
138
  }
139
+ function resolveSupportedLocales(args) {
140
+ const configured = injectedAgentNativeConfig().translations?.locales;
141
+ const candidates = configured ??
142
+ args.catalog?.supportedLocales ?? [args.sourceLocale];
143
+ const supported = candidates.filter((locale) => SUPPORTED_LOCALES.includes(locale));
144
+ return [
145
+ args.sourceLocale,
146
+ ...supported.filter((locale) => locale !== args.sourceLocale),
147
+ ].filter((locale, index, all) => all.indexOf(locale) === index);
148
+ }
149
+ function resolveSupportedLocale(locale, supportedLocales, sourceLocale) {
150
+ return supportedLocales.includes(locale) ? locale : sourceLocale;
151
+ }
135
152
  function normalizeLoadedMessages(value) {
136
153
  if (!value || typeof value !== "object" || Array.isArray(value))
137
154
  return null;
@@ -173,9 +190,14 @@ export function AgentNativeI18nProvider({ children, catalog, initialLocale, init
173
190
  const sourceLocale = catalog?.sourceLocale ?? DEFAULT_LOCALE;
174
191
  const sourceMessages = catalog?.messages ?? {};
175
192
  const loadMessages = catalog?.loadMessages;
176
- const supportedLocales = catalog?.supportedLocales ?? SUPPORTED_LOCALES;
193
+ const supportedLocales = useMemo(() => resolveSupportedLocales({ catalog, sourceLocale }), [catalog, sourceLocale]);
177
194
  const hydration = readHydrationPayload();
178
- const initialState = useMemo(() => resolveInitialState({ initialLocale, initialPreference }), [initialLocale, initialPreference]);
195
+ const initialState = useMemo(() => resolveInitialState({
196
+ initialLocale,
197
+ initialPreference,
198
+ sourceLocale,
199
+ supportedLocales,
200
+ }), [initialLocale, initialPreference, sourceLocale, supportedLocales]);
179
201
  const [preference, setPreferenceState] = useState(initialState.preference);
180
202
  const [locale, setLocale] = useState(initialState.locale);
181
203
  const [loading, setLoading] = useState(false);
@@ -204,8 +226,8 @@ export function AgentNativeI18nProvider({ children, catalog, initialLocale, init
204
226
  const nextLocale = preference === "system"
205
227
  ? resolveLocaleFromCandidates(browserLanguageCandidates())
206
228
  : preference;
207
- setLocale(nextLocale);
208
- }, [preference]);
229
+ setLocale(resolveSupportedLocale(nextLocale, supportedLocales, sourceLocale));
230
+ }, [preference, sourceLocale, supportedLocales]);
209
231
  useEffect(() => {
210
232
  let cancelled = false;
211
233
  async function applyLocale() {
@@ -247,6 +269,7 @@ export function AgentNativeI18nProvider({ children, catalog, initialLocale, init
247
269
  locale,
248
270
  namespace,
249
271
  sourceLocale,
272
+ supportedLocales,
250
273
  ]);
251
274
  useEffect(() => {
252
275
  if (typeof document === "undefined")
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from "react";
2
+ export interface IntegrationConnectionChoiceProps {
3
+ name: string;
4
+ logo?: ReactNode;
5
+ showWorkspaceOption: boolean;
6
+ busy?: boolean;
7
+ onPersonal: () => void;
8
+ onWorkspace: () => void;
9
+ }
10
+ /** The one small decision before an integration's advanced setup surface. */
11
+ export declare function IntegrationConnectionChoice({ name, logo, showWorkspaceOption, busy, onPersonal, onWorkspace, }: IntegrationConnectionChoiceProps): import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { IconLoader2, IconUser, IconUsersGroup } from "@tabler/icons-react";
3
+ /** The one small decision before an integration's advanced setup surface. */
4
+ export function IntegrationConnectionChoice({ name, logo, showWorkspaceOption, busy = false, onPersonal, onWorkspace, }) {
5
+ return (_jsxs("div", { className: "flex min-h-full flex-1 flex-col bg-background", children: [_jsx("header", { className: "flex min-h-16 items-center border-b border-border px-6 sm:px-10", children: _jsxs("div", { className: "flex min-w-0 items-center gap-3", children: [logo ? (_jsx("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-md bg-muted/50 text-foreground", children: logo })) : null, _jsxs("span", { className: "truncate text-sm font-medium text-foreground", children: ["Connect ", name] })] }) }), _jsx("main", { className: "flex flex-1 justify-center overflow-y-auto px-6 py-12 sm:px-10 sm:py-[12vh]", children: _jsxs("div", { className: "w-full max-w-[420px] self-start", children: [_jsx("h1", { className: "text-2xl font-semibold tracking-[-0.03em] text-foreground sm:text-[28px]", children: "Who should use this?" }), _jsx("p", { className: "mt-2 text-sm leading-6 text-muted-foreground", children: "Choose where this connection is available." }), _jsxs("div", { className: "mt-8 grid gap-2.5", children: [_jsxs("button", { type: "button", onClick: onPersonal, disabled: busy, "aria-busy": busy, className: "flex min-h-12 items-center gap-3 rounded-lg bg-primary px-4 py-3 text-left text-primary-foreground transition-[background-color,opacity] hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-wait disabled:opacity-60", children: [_jsx(IconUser, { className: "size-4 shrink-0 opacity-75" }), _jsx("span", { className: "min-w-0 flex-1 text-sm font-medium", children: "Connect for me" }), busy ? (_jsx(IconLoader2, { className: "size-4 shrink-0 animate-spin" })) : null] }), showWorkspaceOption ? (_jsxs("button", { type: "button", onClick: onWorkspace, disabled: busy, className: "flex min-h-12 items-center gap-3 rounded-lg bg-muted/50 px-4 py-3 text-left text-foreground transition-colors hover:bg-muted/70 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-wait disabled:opacity-60", children: [_jsx(IconUsersGroup, { className: "size-4 shrink-0 text-muted-foreground" }), _jsx("span", { className: "min-w-0 flex-1 text-sm font-medium", children: "Set up for workspace" })] })) : null] })] }) })] }));
6
+ }
@@ -0,0 +1,23 @@
1
+ import type { ReactNode } from "react";
2
+ export interface IntegrationGridItem {
3
+ id: string;
4
+ name: string;
5
+ description?: string;
6
+ logo: ReactNode;
7
+ status?: string;
8
+ statusClassName?: string;
9
+ actionLabel: string;
10
+ actionAriaLabel?: string;
11
+ disabled?: boolean;
12
+ onAction: () => void;
13
+ }
14
+ export interface IntegrationGridProps {
15
+ items: IntegrationGridItem[];
16
+ emptyLabel?: string;
17
+ className?: string;
18
+ }
19
+ /**
20
+ * The shared integration list surface. Keep provider rows intentionally
21
+ * boring: identity, one-line context, and one clear next action.
22
+ */
23
+ export declare function IntegrationGrid({ items, emptyLabel, className, }: IntegrationGridProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../utils.js";
3
+ /**
4
+ * The shared integration list surface. Keep provider rows intentionally
5
+ * boring: identity, one-line context, and one clear next action.
6
+ */
7
+ export function IntegrationGrid({ items, emptyLabel = "No integrations found.", className, }) {
8
+ if (items.length === 0) {
9
+ return (_jsx("div", { className: cn("rounded-xl bg-muted/30 px-5 py-8 text-center text-xs text-muted-foreground", className), children: emptyLabel }));
10
+ }
11
+ return (_jsx("div", { className: cn("grid gap-2 overflow-hidden rounded-xl bg-muted/20 p-2", "sm:grid-cols-2", className), children: items.map((item) => (_jsxs("article", { className: "flex min-w-0 items-center gap-3 rounded-lg bg-muted/35 px-3 py-3.5", children: [_jsx("span", { className: "flex size-8 shrink-0 items-center justify-center rounded-md bg-background/80 text-foreground", children: item.logo }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx("h3", { className: "truncate text-sm font-medium text-foreground", children: item.name }), item.status ? (_jsx("span", { className: cn("shrink-0 text-[11px] font-medium text-muted-foreground", item.statusClassName), children: item.status })) : null] }), item.description ? (_jsx("p", { className: "mt-0.5 line-clamp-1 text-xs leading-5 text-muted-foreground", children: item.description })) : null] }), _jsx("button", { type: "button", onClick: item.onAction, disabled: item.disabled, "aria-label": item.actionAriaLabel ?? `${item.actionLabel} ${item.name}`, className: "inline-flex h-8 shrink-0 items-center justify-center gap-1 rounded-md border border-border bg-background px-2.5 text-xs font-medium text-foreground transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50", children: item.actionLabel })] }, item.id))) }));
12
+ }
@@ -1,13 +1,14 @@
1
1
  import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { IconPlus, IconBrandSlack, IconBrandTelegram, IconBrandWhatsapp, IconBrandGoogleDrive, IconTerminal2, IconBuildingSkyscraper, IconCopy, IconCheck, IconChevronLeft, IconChevronRight, IconExternalLink, IconCircleCheck, IconInfoCircle, IconSearch, IconServer, IconLoader2, IconRefresh, } from "@tabler/icons-react";
2
+ import { IconPlus, IconBrandSlack, IconBrandTelegram, IconBrandWhatsapp, IconBrandGoogleDrive, IconTerminal2, IconBuildingSkyscraper, IconCopy, IconCheck, IconChevronLeft, IconExternalLink, IconCircleCheck, IconInfoCircle, IconSearch, IconServer, IconLoader2, IconRefresh, } from "@tabler/icons-react";
3
3
  import { useState, useCallback, useEffect, useMemo } from "react";
4
4
  import { agentNativePath } from "../api-path.js";
5
5
  import { Tooltip, TooltipContent, TooltipTrigger, } from "../components/ui/tooltip.js";
6
6
  import { useT } from "../i18n.js";
7
- import { getDefaultMcpIntegrations, } from "../resources/mcp-integration-catalog.js";
7
+ import { getDefaultMcpIntegrations } from "../resources/mcp-integration-catalog.js";
8
8
  import { McpIntegrationDialog } from "../resources/McpIntegrationDialog.js";
9
9
  import { McpIntegrationLogo } from "../resources/McpIntegrationLogo.js";
10
10
  import { useCreateMcpServer, useDeleteMcpServer, useMcpServers, useReconnectMcpServer, } from "../resources/use-mcp-servers.js";
11
+ import { IntegrationGrid } from "./IntegrationGrid.js";
11
12
  import { useIntegrationStatus, } from "./useIntegrationStatus.js";
12
13
  import { isNonPublicWebhookUrl } from "./webhook-url.js";
13
14
  const PLATFORMS = [
@@ -228,22 +229,6 @@ export function LegacyIntegrationsPanel() {
228
229
  : "bg-muted-foreground/55"}` }))] }, platform.id));
229
230
  }), _jsx("div", { className: "rounded-md border border-border bg-muted/30 px-2.5 py-2 text-[10px] text-muted-foreground", children: t("integrations.sharedMessaging") })] }))] }));
230
231
  }
231
- function IntegrationGalleryCard({ platform, status, onSelect, }) {
232
- const connected = Boolean(status?.configured || status?.enabled);
233
- const active = Boolean(status?.enabled && status?.configured);
234
- const stateLabel = platform.isClient
235
- ? "Available"
236
- : active
237
- ? "Connected"
238
- : connected
239
- ? "Ready to enable"
240
- : "Set up";
241
- return (_jsxs("button", { type: "button", onClick: () => onSelect(platform), className: "group flex min-h-28 items-start gap-3 rounded-xl border border-border/80 bg-card p-4 text-start transition-colors hover:border-foreground/25 hover:bg-accent/30 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: [_jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-xl border border-border/70 bg-background text-foreground shadow-sm", children: _jsx(platform.icon, { size: 21, strokeWidth: 1.8 }) }), _jsxs("span", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [_jsxs("span", { className: "flex items-center gap-2", children: [_jsx("span", { className: "truncate text-sm font-semibold text-foreground", children: platform.label }), _jsx("span", { className: active
242
- ? "shrink-0 text-[10px] font-medium text-emerald-600 dark:text-emerald-400"
243
- : connected
244
- ? "shrink-0 text-[10px] font-medium text-amber-600 dark:text-amber-400"
245
- : "shrink-0 text-[10px] text-muted-foreground", children: stateLabel })] }), _jsx("span", { className: "line-clamp-2 text-xs leading-5 text-muted-foreground", children: platform.description }), _jsxs("span", { className: "mt-1 flex items-center gap-1 text-[11px] font-medium text-foreground/70 transition-colors group-hover:text-foreground", children: [connected || platform.isClient ? "Manage" : "Connect", _jsx(IconChevronRight, { className: "size-3.5 rtl:-scale-x-100" })] })] })] }));
246
- }
247
232
  function compareMcpUrl(value) {
248
233
  try {
249
234
  const url = new URL(value.trim());
@@ -270,16 +255,15 @@ function McpServerStatus({ server, onReconnect, reconnecting = false, reconnectE
270
255
  }
271
256
  return (_jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs text-muted-foreground", children: [_jsx("span", { className: "size-1.5 rounded-full bg-muted-foreground/50" }), "Status unknown"] }));
272
257
  }
273
- function McpCatalogItem({ integration, connected, onConnect, }) {
274
- return (_jsxs("div", { className: "flex min-w-0 items-center gap-3 border-b border-border/60 py-4 last:border-b-0", children: [_jsx(McpIntegrationLogo, { name: integration.name, logoUrl: integration.logoUrl, integrationId: integration.id }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "truncate text-sm font-medium text-foreground", children: integration.name }), connected && (_jsx("span", { className: "shrink-0 text-[11px] font-medium text-emerald-600 dark:text-emerald-400", children: "Connected" }))] }), _jsx("p", { className: "mt-0.5 line-clamp-1 text-xs leading-5 text-muted-foreground", children: integration.description || integration.useCase })] }), _jsx("button", { type: "button", onClick: () => onConnect(integration.id), className: "shrink-0 rounded-md border border-border bg-background px-2.5 py-1.5 text-xs font-medium text-foreground transition-colors hover:bg-accent", children: connected ? "Manage" : "Connect" })] }));
275
- }
276
258
  function McpIntegrationsSection({ query }) {
259
+ const t = useT();
277
260
  const serversQuery = useMcpServers();
278
261
  const createServer = useCreateMcpServer();
279
262
  const deleteServer = useDeleteMcpServer();
280
263
  const reconnectServer = useReconnectMcpServer();
281
264
  const [dialogOpen, setDialogOpen] = useState(false);
282
265
  const [initialIntegrationId, setInitialIntegrationId] = useState(null);
266
+ const [connectIntegrationId, setConnectIntegrationId] = useState(null);
283
267
  const [deleteTarget, setDeleteTarget] = useState(null);
284
268
  const [deleteError, setDeleteError] = useState(null);
285
269
  const [reconnectingKey, setReconnectingKey] = useState(null);
@@ -306,8 +290,33 @@ function McpIntegrationsSection({ query }) {
306
290
  serversQuery.data?.role === "admin"));
307
291
  const openCatalog = useCallback((integrationId) => {
308
292
  setInitialIntegrationId(integrationId ?? null);
293
+ setConnectIntegrationId(null);
294
+ setDialogOpen(true);
295
+ }, []);
296
+ const openQuickConnect = useCallback((integrationId) => {
297
+ setInitialIntegrationId(null);
298
+ setConnectIntegrationId(integrationId);
309
299
  setDialogOpen(true);
310
300
  }, []);
301
+ const openConnection = useCallback((integrationId, connected) => {
302
+ if (connected) {
303
+ openCatalog(integrationId);
304
+ return;
305
+ }
306
+ const integration = catalog.find((item) => item.id === integrationId);
307
+ const requiresSetup = Boolean(integration &&
308
+ !integration.managedOAuth &&
309
+ (integration.connectionMode === "manual" ||
310
+ integration.availability === "provider-setup" ||
311
+ integration.availability === "client-restricted" ||
312
+ integration.authMode === "headers"));
313
+ if (requiresSetup) {
314
+ openCatalog(integrationId);
315
+ }
316
+ else {
317
+ openQuickConnect(integrationId);
318
+ }
319
+ }, [catalog, openCatalog, openQuickConnect]);
311
320
  const removeServer = useCallback(async (server) => {
312
321
  const key = `${server.scope}:${server.id}`;
313
322
  if (deleteTarget !== key) {
@@ -351,13 +360,33 @@ function McpIntegrationsSection({ query }) {
351
360
  serversQuery.data?.role === "owner" ||
352
361
  serversQuery.data?.role === "admin";
353
362
  return (_jsxs("div", { className: "flex items-start gap-3 py-3.5", children: [_jsx("span", { className: "mt-0.5 flex size-9 shrink-0 items-center justify-center rounded-lg border border-border/70 bg-background text-muted-foreground", children: _jsx(IconServer, { className: "size-4" }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "truncate text-sm font-medium text-foreground", children: server.name }), _jsx("span", { className: "text-[11px] text-muted-foreground", children: server.scope === "user"
354
- ? "Personal"
355
- : "Organization" })] }), _jsx(McpServerStatus, { server: server, onReconnect: server.status.state === "error"
363
+ ? t("mcpIntegrations.personal")
364
+ : t("mcpIntegrations.sharedWithWorkspace") })] }), _jsx(McpServerStatus, { server: server, onReconnect: server.status.state === "error"
356
365
  ? () => void reconnect(server)
357
366
  : undefined, reconnecting: reconnectingKey === key, reconnectError: reconnectError?.key === key
358
367
  ? reconnectError.message
359
368
  : undefined })] }), canRemove && (_jsx("button", { type: "button", onClick: () => void removeServer(server), disabled: deleteServer.isPending, className: "shrink-0 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium text-foreground transition-colors hover:bg-accent disabled:opacity-50", children: deleteTarget === key ? "Confirm" : "Remove" }))] }, key));
360
- }) }) })] })) : null, filteredCatalog.length > 0 && (_jsxs("div", { children: [_jsxs("div", { className: "mb-1 flex items-center justify-between gap-3", children: [_jsx("h3", { className: "text-sm font-semibold text-foreground", children: "Available integrations" }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [filteredCatalog.length, " integrations"] })] }), _jsx("div", { className: "grid gap-x-8 overflow-hidden rounded-xl border border-border/70 bg-card px-4 sm:grid-cols-2", children: filteredCatalog.map((integration) => (_jsx(McpCatalogItem, { integration: integration, connected: connectedUrls.has(compareMcpUrl(integration.url)), onConnect: openCatalog }, integration.id))) })] })), filteredCatalog.length === 0 && normalizedQuery && (_jsxs("p", { className: "border-y border-border/60 py-4 text-xs text-muted-foreground", children: ["No agent integrations match \u201C", query, "\u201D."] })), _jsx(McpIntegrationDialog, { open: dialogOpen, onOpenChange: setDialogOpen, initialIntegrationId: initialIntegrationId, defaultScope: "user", canCreateOrgMcp: canCreateOrgMcp, hasOrg: hasOrg, onCreateMcpServer: (args) => createServer.mutateAsync(args) })] }));
369
+ }) }) })] })) : null, filteredCatalog.length > 0 && (_jsxs("div", { children: [_jsxs("div", { className: "mb-1 flex items-center justify-between gap-3", children: [_jsx("h3", { className: "text-sm font-semibold text-foreground", children: "Available integrations" }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [filteredCatalog.length, " integrations"] })] }), _jsx(IntegrationGrid, { items: filteredCatalog.map((integration) => {
370
+ const connected = connectedUrls.has(compareMcpUrl(integration.url));
371
+ return {
372
+ id: integration.id,
373
+ name: integration.name,
374
+ description: integration.description || integration.useCase,
375
+ logo: (_jsx(McpIntegrationLogo, { name: integration.name, logoUrl: integration.logoUrl, integrationId: integration.id, className: "size-7 rounded-md", imageClassName: "size-full p-1" })),
376
+ status: connected ? t("mcpIntegrations.connected") : undefined,
377
+ statusClassName: "text-emerald-600 dark:text-emerald-400",
378
+ actionLabel: connected
379
+ ? "Manage"
380
+ : t("mcpIntegrations.connect"),
381
+ onAction: () => openConnection(integration.id, connected),
382
+ };
383
+ }) })] })), filteredCatalog.length === 0 && normalizedQuery && (_jsxs("p", { className: "border-y border-border/60 py-4 text-xs text-muted-foreground", children: ["No agent integrations match \u201C", query, "\u201D."] })), _jsx(McpIntegrationDialog, { open: dialogOpen, onOpenChange: (open) => {
384
+ setDialogOpen(open);
385
+ if (!open) {
386
+ setInitialIntegrationId(null);
387
+ setConnectIntegrationId(null);
388
+ }
389
+ }, initialIntegrationId: initialIntegrationId, connectIntegrationId: connectIntegrationId, defaultScope: "user", canCreateOrgMcp: canCreateOrgMcp, hasOrg: hasOrg, onCreateMcpServer: (args) => createServer.mutateAsync(args) })] }));
361
390
  }
362
391
  export function IntegrationsPanel() {
363
392
  const { statuses, loading, refetch } = useIntegrationStatus();
@@ -384,11 +413,48 @@ export function IntegrationsPanel() {
384
413
  if (selectedPlatform) {
385
414
  return (_jsx(IntegrationDetail, { platform: selectedPlatform, serverStatus: statusMap.get(selectedPlatform.id), onBack: () => setSelectedPlatform(null), onRefresh: refetch }));
386
415
  }
387
- return (_jsxs("div", { className: "w-full space-y-8", children: [_jsxs("div", { className: "flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-2xl font-semibold tracking-[-0.04em] text-foreground", children: "Integrations" }), _jsx("p", { className: "mt-1.5 max-w-2xl text-sm leading-6 text-muted-foreground", children: "Connect the tools your agent can use to gather context, take action, and meet your team where work already happens." })] }), _jsxs("label", { className: "relative block w-full lg:max-w-xs", children: [_jsx(IconSearch, { className: "pointer-events-none absolute start-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), _jsx("input", { type: "search", value: query, onChange: (event) => setQuery(event.target.value), placeholder: "Search integrations", "aria-label": "Search integrations", className: "h-9 w-full rounded-lg border border-border bg-background ps-9 pe-3 text-sm text-foreground outline-none transition-colors placeholder:text-muted-foreground focus:border-foreground/30 focus:ring-2 focus:ring-accent/40" })] })] }), _jsx(McpIntegrationsSection, { query: normalizedQuery }), loading ? (_jsx("div", { className: "grid gap-3 sm:grid-cols-2", children: [0, 1, 2, 3].map((item) => (_jsx("div", { className: "h-28 animate-pulse rounded-xl border border-border bg-muted/30" }, item))) })) : (_jsxs(_Fragment, { children: [!normalizedQuery && connectedPlatforms.length > 0 && (_jsxs("section", { className: "space-y-3", children: [_jsxs("div", { className: "flex items-baseline justify-between gap-3", children: [_jsx("h2", { className: "text-sm font-semibold text-foreground", children: "Connected" }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [connectedPlatforms.length, " connected"] })] }), _jsx("div", { className: "grid gap-3 sm:grid-cols-2", children: connectedPlatforms.map((platform) => (_jsx(IntegrationGalleryCard, { platform: platform, status: statusMap.get(platform.id), onSelect: setSelectedPlatform }, platform.id))) })] })), ["Messaging", "Workspace tools", "Agent clients"].map((category) => {
416
+ return (_jsxs("div", { className: "w-full space-y-8", children: [_jsxs("div", { className: "flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-2xl font-semibold tracking-[-0.04em] text-foreground", children: "Integrations" }), _jsx("p", { className: "mt-1.5 max-w-2xl text-sm leading-6 text-muted-foreground", children: "Connect the tools your agent can use to gather context, take action, and meet your team where work already happens." })] }), _jsxs("label", { className: "relative block w-full lg:max-w-xs", children: [_jsx(IconSearch, { className: "pointer-events-none absolute start-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }), _jsx("input", { type: "search", value: query, onChange: (event) => setQuery(event.target.value), placeholder: "Search integrations", "aria-label": "Search integrations", className: "h-9 w-full rounded-lg border border-border bg-background ps-9 pe-3 text-sm text-foreground outline-none transition-colors placeholder:text-muted-foreground focus:border-foreground/30 focus:ring-2 focus:ring-accent/40" })] })] }), _jsx(McpIntegrationsSection, { query: normalizedQuery }), loading ? (_jsx("div", { className: "grid gap-3 sm:grid-cols-2", children: [0, 1, 2, 3].map((item) => (_jsx("div", { className: "h-28 animate-pulse rounded-xl border border-border bg-muted/30" }, item))) })) : (_jsxs(_Fragment, { children: [!normalizedQuery && connectedPlatforms.length > 0 && (_jsxs("section", { className: "space-y-3", children: [_jsxs("div", { className: "flex items-baseline justify-between gap-3", children: [_jsx("h2", { className: "text-sm font-semibold text-foreground", children: "Connected" }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [connectedPlatforms.length, " connected"] })] }), _jsx("div", { className: "grid gap-3 sm:grid-cols-2", children: _jsx(IntegrationGrid, { items: connectedPlatforms.map((platform) => {
417
+ const status = statusMap.get(platform.id);
418
+ return {
419
+ id: platform.id,
420
+ name: platform.label,
421
+ description: platform.description,
422
+ logo: _jsx(platform.icon, { size: 18, strokeWidth: 1.8 }),
423
+ status: platform.isClient
424
+ ? "Available"
425
+ : status?.enabled && status.configured
426
+ ? "Connected"
427
+ : "Ready to enable",
428
+ statusClassName: status?.enabled && status.configured
429
+ ? "text-emerald-600 dark:text-emerald-400"
430
+ : "text-amber-600 dark:text-amber-400",
431
+ actionLabel: "Manage",
432
+ onAction: () => setSelectedPlatform(platform),
433
+ };
434
+ }) }) })] })), ["Messaging", "Workspace tools", "Agent clients"].map((category) => {
388
435
  const platforms = filteredPlatforms.filter((platform) => platform.category === category &&
389
436
  (!connectedPlatforms.includes(platform) || normalizedQuery));
390
437
  if (platforms.length === 0)
391
438
  return null;
392
- return (_jsxs("section", { className: "mt-8 space-y-3 first:mt-0", children: [_jsx("h2", { className: "text-sm font-semibold text-foreground", children: category }), _jsx("div", { className: "grid gap-3 sm:grid-cols-2", children: platforms.map((platform) => (_jsx(IntegrationGalleryCard, { platform: platform, status: statusMap.get(platform.id), onSelect: setSelectedPlatform }, platform.id))) })] }, category));
439
+ return (_jsxs("section", { className: "mt-8 space-y-3 first:mt-0", children: [_jsx("h2", { className: "text-sm font-semibold text-foreground", children: category }), _jsx(IntegrationGrid, { items: platforms.map((platform) => {
440
+ const status = statusMap.get(platform.id);
441
+ const connected = Boolean(status?.configured || status?.enabled);
442
+ return {
443
+ id: platform.id,
444
+ name: platform.label,
445
+ description: platform.description,
446
+ logo: _jsx(platform.icon, { size: 18, strokeWidth: 1.8 }),
447
+ status: connected
448
+ ? status?.enabled && status.configured
449
+ ? "Connected"
450
+ : "Ready to enable"
451
+ : undefined,
452
+ statusClassName: status?.enabled && status.configured
453
+ ? "text-emerald-600 dark:text-emerald-400"
454
+ : "text-amber-600 dark:text-amber-400",
455
+ actionLabel: connected ? "Manage" : "Connect",
456
+ onAction: () => setSelectedPlatform(platform),
457
+ };
458
+ }) })] }, category));
393
459
  }), filteredPlatforms.length === 0 && !mcpCatalogMatches && (_jsxs("div", { className: "rounded-xl border border-dashed border-border p-8 text-center", children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: "No integrations found" }), _jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: "Try a different tool or category." })] }))] }))] }));
394
460
  }
@@ -1,4 +1,6 @@
1
1
  export { IntegrationsPanel } from "./IntegrationsPanel.js";
2
+ export { IntegrationGrid, type IntegrationGridItem, type IntegrationGridProps, } from "./IntegrationGrid.js";
3
+ export { IntegrationConnectionChoice, type IntegrationConnectionChoiceProps, } from "./IntegrationConnectionChoice.js";
2
4
  export { useIntegrationStatus } from "./useIntegrationStatus.js";
3
5
  export type { IntegrationStatus } from "./useIntegrationStatus.js";
4
6
  export { listIntegrationEnvStatuses, listIntegrationStatuses, saveIntegrationEnvVars, setIntegrationEnabled, setupIntegration, disconnectManagedIntegrationInstallation, listManagedIntegrationInstallations, managedIntegrationOAuthUrl, managedSlackAgentManifestUrl, listManagedIntegrationScopes, saveManagedIntegrationScope, listManagedIntegrationBudgets, listManagedIntegrationMemory, forgetManagedIntegrationMemory, saveManagedIntegrationBudget, testManagedIntegrationInstallation, IntegrationClientError, type ClientIntegrationInstallation, type ClientIntegrationScope, type ClientIntegrationUsageBudget, type ClientIntegrationMemory, type ClientIntegrationStatus, type IntegrationEnvStatus, type SavedEnvVarsResult, } from "./api.js";
@@ -1,3 +1,5 @@
1
1
  export { IntegrationsPanel } from "./IntegrationsPanel.js";
2
+ export { IntegrationGrid, } from "./IntegrationGrid.js";
3
+ export { IntegrationConnectionChoice, } from "./IntegrationConnectionChoice.js";
2
4
  export { useIntegrationStatus } from "./useIntegrationStatus.js";
3
5
  export { listIntegrationEnvStatuses, listIntegrationStatuses, saveIntegrationEnvVars, setIntegrationEnabled, setupIntegration, disconnectManagedIntegrationInstallation, listManagedIntegrationInstallations, managedIntegrationOAuthUrl, managedSlackAgentManifestUrl, listManagedIntegrationScopes, saveManagedIntegrationScope, listManagedIntegrationBudgets, listManagedIntegrationMemory, forgetManagedIntegrationMemory, saveManagedIntegrationBudget, testManagedIntegrationInstallation, IntegrationClientError, } from "./api.js";
@@ -2,5 +2,7 @@ import React from "react";
2
2
  export interface FirstRunOnboardingProps {
3
3
  /** Test hook; generated apps use the public Vite flag instead. */
4
4
  skipIntegrations?: boolean;
5
+ /** The shared startup gate has already resolved this account as eligible. */
6
+ initialFirstRun?: boolean;
5
7
  }
6
- export declare function FirstRunOnboarding({ skipIntegrations, }?: FirstRunOnboardingProps): React.JSX.Element | null;
8
+ export declare function FirstRunOnboarding({ skipIntegrations, initialFirstRun, }?: FirstRunOnboardingProps): React.JSX.Element | null;