@agent-native/core 0.127.3 → 0.128.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 (457) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +101 -0
  3. package/corpus/core/README.md +5 -26
  4. package/corpus/core/docs/content/actions.mdx +47 -4
  5. package/corpus/core/docs/content/native-chat-ui.mdx +7 -0
  6. package/corpus/core/docs/content/organizations-teams-permissions.mdx +109 -3
  7. package/corpus/core/docs/content/template-design-collaboration-and-full-apps.mdx +15 -0
  8. package/corpus/core/docs/content/toolkit-org-team.mdx +72 -12
  9. package/corpus/core/package.json +2 -1
  10. package/corpus/core/src/a2a/artifact-response.ts +36 -29
  11. package/corpus/core/src/action.ts +83 -2
  12. package/corpus/core/src/chat-threads/store.ts +48 -43
  13. package/corpus/core/src/cli/skills-content/design-visual-edit-skill.ts +46 -3
  14. package/corpus/core/src/client/AgentPanel.tsx +26 -6
  15. package/corpus/core/src/client/AssistantChat.tsx +63 -7
  16. package/corpus/core/src/client/DefaultSpinner.tsx +29 -0
  17. package/corpus/core/src/client/org/TeamPage.tsx +161 -6
  18. package/corpus/core/src/client/org/hooks.ts +67 -0
  19. package/corpus/core/src/client/org/index.ts +9 -0
  20. package/corpus/core/src/client/transcription/use-live-transcription.ts +62 -10
  21. package/corpus/core/src/db/client.ts +42 -3
  22. package/corpus/core/src/db/ensure-additive-columns.ts +60 -33
  23. package/corpus/core/src/deploy/build.ts +31 -2
  24. package/corpus/core/src/mcp-client/routes.ts +10 -1
  25. package/corpus/core/src/org/app-roles-handlers.ts +152 -0
  26. package/corpus/core/src/org/app-roles.ts +355 -0
  27. package/corpus/core/src/org/index.ts +27 -1
  28. package/corpus/core/src/org/migrations.ts +22 -0
  29. package/corpus/core/src/org/plugin.ts +27 -0
  30. package/corpus/core/src/org/schema.ts +15 -0
  31. package/corpus/core/src/scripts/docs/search.ts +17 -0
  32. package/corpus/core/src/scripts/docs/source-search.ts +10 -0
  33. package/corpus/core/src/server/agent-chat/script-entries.ts +3 -0
  34. package/corpus/core/src/server/agent-chat-plugin.ts +53 -52
  35. package/corpus/core/src/server/builder-design-systems.ts +299 -82
  36. package/corpus/core/src/server/core-routes-plugin.ts +6 -1
  37. package/corpus/core/src/server/framework-request-handler.ts +44 -6
  38. package/corpus/core/src/server/index.ts +8 -0
  39. package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +32 -0
  40. package/corpus/core/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +7 -0
  41. package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +31 -0
  42. package/corpus/core/src/templates/headless/.agents/skills/actions/SKILL.md +32 -0
  43. package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -0
  44. package/corpus/core/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +7 -0
  45. package/corpus/core/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +40 -0
  46. package/corpus/core/src/templates/workspace-core/.agents/skills/security/SKILL.md +31 -0
  47. package/corpus/core/src/templates/workspace-core/.agents/skills/sharing/SKILL.md +4 -0
  48. package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +32 -0
  49. package/corpus/templates/analytics/.agents/skills/security/SKILL.md +31 -0
  50. package/corpus/templates/analytics/.agents/skills/sharing/SKILL.md +4 -0
  51. package/corpus/templates/analytics/_gitignore +2 -0
  52. package/corpus/templates/analytics/actions/data-source-status.ts +21 -12
  53. package/corpus/templates/analytics/app/global.css +7 -7
  54. package/corpus/templates/analytics/app/i18n-data.ts +30 -0
  55. package/corpus/templates/analytics/app/lib/data-source-status.ts +2 -1
  56. package/corpus/templates/analytics/app/pages/DataSources.tsx +54 -10
  57. package/corpus/templates/analytics/changelog/2026-07-28-analytics-pages-load-reliably-with-large-dashboard-workspaces.md +6 -0
  58. package/corpus/templates/analytics/changelog/2026-07-28-dashboard-loading-shimmer-now-flows-smoothly-in-one-directi.md +6 -0
  59. package/corpus/templates/analytics/server/lib/first-party-dashboard-repair.ts +5 -4
  60. package/corpus/templates/analytics/server/plugins/agent-chat.ts +54 -42
  61. package/corpus/templates/analytics/server/plugins/db.ts +1 -18
  62. package/corpus/templates/assets/.agents/skills/actions/SKILL.md +32 -0
  63. package/corpus/templates/assets/.agents/skills/security/SKILL.md +31 -0
  64. package/corpus/templates/assets/.agents/skills/sharing/SKILL.md +4 -0
  65. package/corpus/templates/assets/_gitignore +2 -0
  66. package/corpus/templates/brain/.agents/skills/actions/SKILL.md +32 -0
  67. package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +7 -0
  68. package/corpus/templates/brain/.agents/skills/security/SKILL.md +31 -0
  69. package/corpus/templates/brain/.agents/skills/sharing/SKILL.md +4 -0
  70. package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +32 -0
  71. package/corpus/templates/calendar/.agents/skills/security/SKILL.md +31 -0
  72. package/corpus/templates/calendar/.agents/skills/sharing/SKILL.md +4 -0
  73. package/corpus/templates/calendar/_gitignore +2 -0
  74. package/corpus/templates/chat/.agents/skills/actions/SKILL.md +32 -0
  75. package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +7 -0
  76. package/corpus/templates/chat/.agents/skills/security/SKILL.md +31 -0
  77. package/corpus/templates/chat/.agents/skills/sharing/SKILL.md +4 -0
  78. package/corpus/templates/clips/.agents/skills/actions/SKILL.md +32 -0
  79. package/corpus/templates/clips/.agents/skills/security/SKILL.md +31 -0
  80. package/corpus/templates/clips/_gitignore +2 -0
  81. package/corpus/templates/clips/actions/request-transcript.ts +77 -11
  82. package/corpus/templates/clips/actions/save-browser-transcript.ts +28 -7
  83. package/corpus/templates/clips/app/routes/record.tsx +11 -3
  84. package/corpus/templates/clips/changelog/2026-07-28-browser-recordings-no-longer-save-a-truncated-transcript-as-.md +6 -0
  85. package/corpus/templates/clips/changelog/2026-07-28-browser-recordings-no-longer-stop-transcribing-partway-throu.md +6 -0
  86. package/corpus/templates/clips/changelog/2026-07-28-desktop-full-screen-clips-now-get-an-instant-local-transcrip.md +6 -0
  87. package/corpus/templates/clips/changelog/2026-07-28-long-transcriptions-no-longer-show-a-false-transcription-sto.md +6 -0
  88. package/corpus/templates/clips/changelog/2026-07-28-restarting-for-an-update-now-installs-the-newest-release-ins.md +6 -0
  89. package/corpus/templates/clips/changelog/2026-07-28-the-meeting-recording-pill-now-anchors-to-the-right-edge-of-.md +6 -0
  90. package/corpus/templates/clips/desktop/src/lib/audio-meter.ts +31 -2
  91. package/corpus/templates/clips/desktop/src/lib/recorder.ts +114 -13
  92. package/corpus/templates/clips/desktop/src/lib/updater.ts +12 -4
  93. package/corpus/templates/clips/desktop/src/overlays/live-audio-bars.tsx +40 -15
  94. package/corpus/templates/clips/desktop/src/styles.css +10 -7
  95. package/corpus/templates/clips/desktop/src-tauri/src/recording_indicator.rs +21 -14
  96. package/corpus/templates/clips/shared/transcript-status.ts +10 -0
  97. package/corpus/templates/content/.agents/skills/actions/SKILL.md +32 -0
  98. package/corpus/templates/content/.agents/skills/security/SKILL.md +31 -0
  99. package/corpus/templates/content/.agents/skills/sharing/SKILL.md +4 -0
  100. package/corpus/templates/content/_gitignore +2 -0
  101. package/corpus/templates/crm/.agents/skills/sharing/SKILL.md +4 -0
  102. package/corpus/templates/design/.agents/skills/actions/SKILL.md +32 -0
  103. package/corpus/templates/design/.agents/skills/security/SKILL.md +31 -0
  104. package/corpus/templates/design/.agents/skills/sharing/SKILL.md +4 -0
  105. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +46 -3
  106. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +7 -5
  107. package/corpus/templates/design/_gitignore +2 -0
  108. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +2 -2
  109. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +7 -4
  110. package/corpus/templates/design/app/components/design/keyboard-shortcuts.ts +1 -1
  111. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +10 -4
  112. package/corpus/templates/design/app/i18n-data.ts +10 -0
  113. package/corpus/templates/design/app/lib/builder-design-system-upload.ts +280 -0
  114. package/corpus/templates/design/app/lib/design-ui-events.ts +5 -0
  115. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +90 -54
  116. package/corpus/templates/design/app/root.tsx +18 -1
  117. package/corpus/templates/design/changelog/2026-07-28-figma-fig-uploads-now-show-indexing-progress-and-an-open-in-.md +6 -0
  118. package/corpus/templates/design/changelog/2026-07-28-show-or-hide-design-editing-chrome-with-cmd-on-apple-devices.md +6 -0
  119. package/corpus/templates/design/server/handlers/design-system-decode-job-status.ts +49 -0
  120. package/corpus/templates/design/server/handlers/design-system-upload-start.ts +87 -0
  121. package/corpus/templates/design/server/handlers/index-design-system-sources.ts +82 -0
  122. package/corpus/templates/design/server/routes/api/design-system-decode-job-status.get.ts +1 -0
  123. package/corpus/templates/design/server/routes/api/design-system-upload-start.post.ts +1 -0
  124. package/corpus/templates/design/server/routes/api/index-design-system-sources.post.ts +1 -0
  125. package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +32 -0
  126. package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +31 -0
  127. package/corpus/templates/dispatch/.agents/skills/sharing/SKILL.md +4 -0
  128. package/corpus/templates/dispatch/_gitignore +2 -0
  129. package/corpus/templates/forms/.agents/skills/actions/SKILL.md +32 -0
  130. package/corpus/templates/forms/.agents/skills/security/SKILL.md +31 -0
  131. package/corpus/templates/forms/.agents/skills/sharing/SKILL.md +4 -0
  132. package/corpus/templates/forms/_gitignore +2 -0
  133. package/corpus/templates/macros/.agents/skills/security/SKILL.md +31 -0
  134. package/corpus/templates/macros/.agents/skills/sharing/SKILL.md +4 -0
  135. package/corpus/templates/macros/_gitignore +2 -0
  136. package/corpus/templates/mail/.agents/skills/actions/SKILL.md +32 -0
  137. package/corpus/templates/mail/.agents/skills/security/SKILL.md +31 -0
  138. package/corpus/templates/mail/.agents/skills/sharing/SKILL.md +4 -0
  139. package/corpus/templates/mail/_gitignore +2 -0
  140. package/corpus/templates/plan/.agents/skills/actions/SKILL.md +32 -0
  141. package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +7 -0
  142. package/corpus/templates/plan/.agents/skills/security/SKILL.md +31 -0
  143. package/corpus/templates/plan/.agents/skills/sharing/SKILL.md +4 -0
  144. package/corpus/templates/plan/_gitignore +2 -0
  145. package/corpus/templates/slides/.agents/skills/actions/SKILL.md +32 -0
  146. package/corpus/templates/slides/.agents/skills/security/SKILL.md +31 -0
  147. package/corpus/templates/slides/.agents/skills/sharing/SKILL.md +4 -0
  148. package/corpus/templates/slides/_gitignore +2 -0
  149. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +126 -53
  150. package/corpus/templates/slides/app/components/design-system/builder-design-system-upload.ts +271 -0
  151. package/corpus/templates/slides/app/components/design-system/builder-index-response.ts +1 -1
  152. package/corpus/templates/slides/app/i18n/en-US.ts +1 -0
  153. package/corpus/templates/slides/server/handlers/design-system-decode-job-status.ts +49 -0
  154. package/corpus/templates/slides/server/handlers/design-system-upload-start.ts +87 -0
  155. package/corpus/templates/slides/server/handlers/index-design-system-sources.ts +79 -0
  156. package/corpus/templates/slides/server/routes/api/design-system-decode-job-status.get.ts +1 -0
  157. package/corpus/templates/slides/server/routes/api/design-system-upload-start.post.ts +1 -0
  158. package/corpus/templates/slides/server/routes/api/index-design-system-sources.post.ts +1 -0
  159. package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +32 -0
  160. package/corpus/templates/tasks/.agents/skills/adding-a-feature/SKILL.md +7 -0
  161. package/corpus/templates/tasks/.agents/skills/security/SKILL.md +31 -0
  162. package/corpus/templates/tasks/.agents/skills/sharing/SKILL.md +4 -0
  163. package/corpus/templates/tasks/_gitignore +2 -0
  164. package/dist/a2a/artifact-response.d.ts.map +1 -1
  165. package/dist/a2a/artifact-response.js +30 -29
  166. package/dist/a2a/artifact-response.js.map +1 -1
  167. package/dist/action.d.ts +36 -0
  168. package/dist/action.d.ts.map +1 -1
  169. package/dist/action.js +37 -2
  170. package/dist/action.js.map +1 -1
  171. package/dist/chat-threads/store.d.ts +12 -0
  172. package/dist/chat-threads/store.d.ts.map +1 -1
  173. package/dist/chat-threads/store.js +48 -42
  174. package/dist/chat-threads/store.js.map +1 -1
  175. package/dist/cli/skills-content/design-visual-edit-skill.d.ts +1 -1
  176. package/dist/cli/skills-content/design-visual-edit-skill.d.ts.map +1 -1
  177. package/dist/cli/skills-content/design-visual-edit-skill.js +46 -3
  178. package/dist/cli/skills-content/design-visual-edit-skill.js.map +1 -1
  179. package/dist/client/AgentPanel.d.ts +3 -1
  180. package/dist/client/AgentPanel.d.ts.map +1 -1
  181. package/dist/client/AgentPanel.js +11 -9
  182. package/dist/client/AgentPanel.js.map +1 -1
  183. package/dist/client/AssistantChat.d.ts.map +1 -1
  184. package/dist/client/AssistantChat.js +57 -6
  185. package/dist/client/AssistantChat.js.map +1 -1
  186. package/dist/client/DefaultSpinner.d.ts +7 -0
  187. package/dist/client/DefaultSpinner.d.ts.map +1 -1
  188. package/dist/client/DefaultSpinner.js +25 -1
  189. package/dist/client/DefaultSpinner.js.map +1 -1
  190. package/dist/client/org/TeamPage.d.ts +13 -1
  191. package/dist/client/org/TeamPage.d.ts.map +1 -1
  192. package/dist/client/org/TeamPage.js +41 -11
  193. package/dist/client/org/TeamPage.js.map +1 -1
  194. package/dist/client/org/hooks.d.ts +37 -0
  195. package/dist/client/org/hooks.d.ts.map +1 -1
  196. package/dist/client/org/hooks.js +37 -0
  197. package/dist/client/org/hooks.js.map +1 -1
  198. package/dist/client/org/index.d.ts +3 -2
  199. package/dist/client/org/index.d.ts.map +1 -1
  200. package/dist/client/org/index.js +1 -1
  201. package/dist/client/org/index.js.map +1 -1
  202. package/dist/client/transcription/use-live-transcription.d.ts +8 -0
  203. package/dist/client/transcription/use-live-transcription.d.ts.map +1 -1
  204. package/dist/client/transcription/use-live-transcription.js +38 -11
  205. package/dist/client/transcription/use-live-transcription.js.map +1 -1
  206. package/dist/collab/routes.d.ts +1 -1
  207. package/dist/db/client.d.ts +12 -0
  208. package/dist/db/client.d.ts.map +1 -1
  209. package/dist/db/client.js +40 -3
  210. package/dist/db/client.js.map +1 -1
  211. package/dist/db/ensure-additive-columns.d.ts.map +1 -1
  212. package/dist/db/ensure-additive-columns.js +54 -32
  213. package/dist/db/ensure-additive-columns.js.map +1 -1
  214. package/dist/deploy/build.d.ts +1 -0
  215. package/dist/deploy/build.d.ts.map +1 -1
  216. package/dist/deploy/build.js +23 -2
  217. package/dist/deploy/build.js.map +1 -1
  218. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  219. package/dist/mcp-client/routes.d.ts +3 -1
  220. package/dist/mcp-client/routes.d.ts.map +1 -1
  221. package/dist/mcp-client/routes.js +8 -2
  222. package/dist/mcp-client/routes.js.map +1 -1
  223. package/dist/notifications/routes.d.ts +1 -1
  224. package/dist/org/app-roles-handlers.d.ts +27 -0
  225. package/dist/org/app-roles-handlers.d.ts.map +1 -0
  226. package/dist/org/app-roles-handlers.js +125 -0
  227. package/dist/org/app-roles-handlers.js.map +1 -0
  228. package/dist/org/app-roles.d.ts +136 -0
  229. package/dist/org/app-roles.d.ts.map +1 -0
  230. package/dist/org/app-roles.js +216 -0
  231. package/dist/org/app-roles.js.map +1 -0
  232. package/dist/org/index.d.ts +4 -1
  233. package/dist/org/index.d.ts.map +1 -1
  234. package/dist/org/index.js +3 -1
  235. package/dist/org/index.js.map +1 -1
  236. package/dist/org/migrations.d.ts.map +1 -1
  237. package/dist/org/migrations.js +22 -0
  238. package/dist/org/migrations.js.map +1 -1
  239. package/dist/org/plugin.d.ts +2 -0
  240. package/dist/org/plugin.d.ts.map +1 -1
  241. package/dist/org/plugin.js +20 -0
  242. package/dist/org/plugin.js.map +1 -1
  243. package/dist/org/schema.d.ts +143 -0
  244. package/dist/org/schema.d.ts.map +1 -1
  245. package/dist/org/schema.js +14 -0
  246. package/dist/org/schema.js.map +1 -1
  247. package/dist/provider-api/actions/custom-provider-registration.d.ts +8 -8
  248. package/dist/provider-api/actions/provider-api.d.ts +4 -4
  249. package/dist/scripts/docs/search.d.ts.map +1 -1
  250. package/dist/scripts/docs/search.js +15 -0
  251. package/dist/scripts/docs/search.js.map +1 -1
  252. package/dist/scripts/docs/source-search.d.ts +7 -0
  253. package/dist/scripts/docs/source-search.d.ts.map +1 -1
  254. package/dist/scripts/docs/source-search.js +9 -0
  255. package/dist/scripts/docs/source-search.js.map +1 -1
  256. package/dist/secrets/routes.d.ts +9 -9
  257. package/dist/server/agent-chat/script-entries.d.ts.map +1 -1
  258. package/dist/server/agent-chat/script-entries.js +3 -0
  259. package/dist/server/agent-chat/script-entries.js.map +1 -1
  260. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  261. package/dist/server/agent-chat-plugin.js +46 -48
  262. package/dist/server/agent-chat-plugin.js.map +1 -1
  263. package/dist/server/builder-design-systems.d.ts +49 -0
  264. package/dist/server/builder-design-systems.d.ts.map +1 -1
  265. package/dist/server/builder-design-systems.js +221 -69
  266. package/dist/server/builder-design-systems.js.map +1 -1
  267. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  268. package/dist/server/core-routes-plugin.js +6 -1
  269. package/dist/server/core-routes-plugin.js.map +1 -1
  270. package/dist/server/framework-request-handler.d.ts.map +1 -1
  271. package/dist/server/framework-request-handler.js +42 -6
  272. package/dist/server/framework-request-handler.js.map +1 -1
  273. package/dist/server/index.d.ts +1 -1
  274. package/dist/server/index.d.ts.map +1 -1
  275. package/dist/server/index.js +1 -1
  276. package/dist/server/index.js.map +1 -1
  277. package/dist/server/realtime-token.d.ts +1 -1
  278. package/dist/templates/chat/.agents/skills/actions/SKILL.md +32 -0
  279. package/dist/templates/chat/.agents/skills/adding-a-feature/SKILL.md +7 -0
  280. package/dist/templates/chat/.agents/skills/security/SKILL.md +31 -0
  281. package/dist/templates/chat/.agents/skills/sharing/SKILL.md +4 -0
  282. package/dist/templates/default/.agents/skills/actions/SKILL.md +32 -0
  283. package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +7 -0
  284. package/dist/templates/default/.agents/skills/security/SKILL.md +31 -0
  285. package/dist/templates/headless/.agents/skills/actions/SKILL.md +32 -0
  286. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -0
  287. package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +7 -0
  288. package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +40 -0
  289. package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +31 -0
  290. package/dist/templates/workspace-core/.agents/skills/sharing/SKILL.md +4 -0
  291. package/docs/content/actions.mdx +47 -4
  292. package/docs/content/native-chat-ui.mdx +7 -0
  293. package/docs/content/organizations-teams-permissions.mdx +109 -3
  294. package/docs/content/template-design-collaboration-and-full-apps.mdx +15 -0
  295. package/docs/content/toolkit-org-team.mdx +72 -12
  296. package/package.json +2 -1
  297. package/src/a2a/artifact-response.ts +36 -29
  298. package/src/action.ts +83 -2
  299. package/src/chat-threads/store.ts +48 -43
  300. package/src/cli/skills-content/design-visual-edit-skill.ts +46 -3
  301. package/src/client/AgentPanel.tsx +26 -6
  302. package/src/client/AssistantChat.tsx +63 -7
  303. package/src/client/DefaultSpinner.tsx +29 -0
  304. package/src/client/org/TeamPage.tsx +161 -6
  305. package/src/client/org/hooks.ts +67 -0
  306. package/src/client/org/index.ts +9 -0
  307. package/src/client/transcription/use-live-transcription.ts +62 -10
  308. package/src/db/client.ts +42 -3
  309. package/src/db/ensure-additive-columns.ts +60 -33
  310. package/src/deploy/build.ts +31 -2
  311. package/src/mcp-client/routes.ts +10 -1
  312. package/src/org/app-roles-handlers.ts +152 -0
  313. package/src/org/app-roles.ts +355 -0
  314. package/src/org/index.ts +27 -1
  315. package/src/org/migrations.ts +22 -0
  316. package/src/org/plugin.ts +27 -0
  317. package/src/org/schema.ts +15 -0
  318. package/src/scripts/docs/search.ts +17 -0
  319. package/src/scripts/docs/source-search.ts +10 -0
  320. package/src/server/agent-chat/script-entries.ts +3 -0
  321. package/src/server/agent-chat-plugin.ts +53 -52
  322. package/src/server/builder-design-systems.ts +299 -82
  323. package/src/server/core-routes-plugin.ts +6 -1
  324. package/src/server/framework-request-handler.ts +44 -6
  325. package/src/server/index.ts +8 -0
  326. package/src/templates/chat/.agents/skills/actions/SKILL.md +32 -0
  327. package/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +7 -0
  328. package/src/templates/chat/.agents/skills/security/SKILL.md +31 -0
  329. package/src/templates/chat/.agents/skills/sharing/SKILL.md +4 -0
  330. package/src/templates/default/.agents/skills/actions/SKILL.md +32 -0
  331. package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +7 -0
  332. package/src/templates/default/.agents/skills/security/SKILL.md +31 -0
  333. package/src/templates/headless/.agents/skills/actions/SKILL.md +32 -0
  334. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +32 -0
  335. package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +7 -0
  336. package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +40 -0
  337. package/src/templates/workspace-core/.agents/skills/security/SKILL.md +31 -0
  338. package/src/templates/workspace-core/.agents/skills/sharing/SKILL.md +4 -0
  339. package/corpus/core/src/templates/chat/.agents/skills/actions/SKILL.md +0 -530
  340. package/corpus/core/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +0 -191
  341. package/corpus/core/src/templates/chat/.agents/skills/agent-native-docs/SKILL.md +0 -115
  342. package/corpus/core/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +0 -177
  343. package/corpus/core/src/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
  344. package/corpus/core/src/templates/chat/.agents/skills/create-skill/SKILL.md +0 -221
  345. package/corpus/core/src/templates/chat/.agents/skills/customizing-agent-native/SKILL.md +0 -220
  346. package/corpus/core/src/templates/chat/.agents/skills/delegate-to-agent/SKILL.md +0 -263
  347. package/corpus/core/src/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
  348. package/corpus/core/src/templates/chat/.agents/skills/frontend-design/SKILL.md +0 -174
  349. package/corpus/core/src/templates/chat/.agents/skills/real-time-sync/SKILL.md +0 -232
  350. package/corpus/core/src/templates/chat/.agents/skills/security/SKILL.md +0 -282
  351. package/corpus/core/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +0 -119
  352. package/corpus/core/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +0 -123
  353. package/corpus/core/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -122
  354. package/corpus/core/src/templates/chat/.env.example +0 -5
  355. package/corpus/core/src/templates/chat/.ignore +0 -0
  356. package/corpus/core/src/templates/chat/.oxfmtrc.json +0 -8
  357. package/corpus/core/src/templates/chat/AGENTS.md +0 -77
  358. package/corpus/core/src/templates/chat/CHANGELOG.md +0 -10
  359. package/corpus/core/src/templates/chat/DEVELOPING.md +0 -185
  360. package/corpus/core/src/templates/chat/README.md +0 -32
  361. package/corpus/core/src/templates/chat/_gitignore +0 -46
  362. package/corpus/core/src/templates/chat/actions/hello.ts +0 -13
  363. package/corpus/core/src/templates/chat/actions/navigate.ts +0 -41
  364. package/corpus/core/src/templates/chat/actions/run.ts +0 -2
  365. package/corpus/core/src/templates/chat/actions/view-screen.ts +0 -31
  366. package/corpus/core/src/templates/chat/app/components/layout/Header.tsx +0 -60
  367. package/corpus/core/src/templates/chat/app/components/layout/Layout.tsx +0 -188
  368. package/corpus/core/src/templates/chat/app/components/layout/Sidebar.tsx +0 -505
  369. package/corpus/core/src/templates/chat/app/components/ui/button.tsx +0 -1
  370. package/corpus/core/src/templates/chat/app/components/ui/card.tsx +0 -1
  371. package/corpus/core/src/templates/chat/app/components/ui/dropdown-menu.tsx +0 -1
  372. package/corpus/core/src/templates/chat/app/components/ui/input.tsx +0 -1
  373. package/corpus/core/src/templates/chat/app/components/ui/label.tsx +0 -1
  374. package/corpus/core/src/templates/chat/app/components/ui/sheet.tsx +0 -1
  375. package/corpus/core/src/templates/chat/app/components/ui/toolkit-provider.tsx +0 -17
  376. package/corpus/core/src/templates/chat/app/components/ui/tooltip.tsx +0 -1
  377. package/corpus/core/src/templates/chat/app/design-system.ts +0 -3
  378. package/corpus/core/src/templates/chat/app/entry.client.tsx +0 -22
  379. package/corpus/core/src/templates/chat/app/entry.server.tsx +0 -10
  380. package/corpus/core/src/templates/chat/app/global.css +0 -93
  381. package/corpus/core/src/templates/chat/app/hooks/use-navigation-state.ts +0 -93
  382. package/corpus/core/src/templates/chat/app/i18n/ar-SA.ts +0 -68
  383. package/corpus/core/src/templates/chat/app/i18n/de-DE.ts +0 -71
  384. package/corpus/core/src/templates/chat/app/i18n/en-US.ts +0 -70
  385. package/corpus/core/src/templates/chat/app/i18n/es-ES.ts +0 -71
  386. package/corpus/core/src/templates/chat/app/i18n/fr-FR.ts +0 -71
  387. package/corpus/core/src/templates/chat/app/i18n/hi-IN.ts +0 -69
  388. package/corpus/core/src/templates/chat/app/i18n/index.ts +0 -34
  389. package/corpus/core/src/templates/chat/app/i18n/ja-JP.ts +0 -70
  390. package/corpus/core/src/templates/chat/app/i18n/ko-KR.ts +0 -70
  391. package/corpus/core/src/templates/chat/app/i18n/pt-BR.ts +0 -71
  392. package/corpus/core/src/templates/chat/app/i18n/zh-CN.ts +0 -66
  393. package/corpus/core/src/templates/chat/app/i18n/zh-TW.ts +0 -66
  394. package/corpus/core/src/templates/chat/app/i18n-data.ts +0 -556
  395. package/corpus/core/src/templates/chat/app/lib/agent-page.tsx +0 -49
  396. package/corpus/core/src/templates/chat/app/lib/app-config.ts +0 -11
  397. package/corpus/core/src/templates/chat/app/lib/tab-id.ts +0 -1
  398. package/corpus/core/src/templates/chat/app/lib/utils.ts +0 -1
  399. package/corpus/core/src/templates/chat/app/root.tsx +0 -173
  400. package/corpus/core/src/templates/chat/app/routes/_index.tsx +0 -94
  401. package/corpus/core/src/templates/chat/app/routes/agent.tsx +0 -24
  402. package/corpus/core/src/templates/chat/app/routes/chat.$threadId.tsx +0 -1
  403. package/corpus/core/src/templates/chat/app/routes/database.tsx +0 -17
  404. package/corpus/core/src/templates/chat/app/routes/extensions.$id.$slug.tsx +0 -2
  405. package/corpus/core/src/templates/chat/app/routes/extensions.$id.tsx +0 -11
  406. package/corpus/core/src/templates/chat/app/routes/extensions._index.tsx +0 -11
  407. package/corpus/core/src/templates/chat/app/routes/extensions.tsx +0 -5
  408. package/corpus/core/src/templates/chat/app/routes/observability.tsx +0 -19
  409. package/corpus/core/src/templates/chat/app/routes/settings.tsx +0 -89
  410. package/corpus/core/src/templates/chat/app/routes/team.tsx +0 -11
  411. package/corpus/core/src/templates/chat/app/routes.ts +0 -4
  412. package/corpus/core/src/templates/chat/app/vite-env.d.ts +0 -6
  413. package/corpus/core/src/templates/chat/changelog/2026-06-24-a-new-settings-page-gives-quick-access-to-language-workspace.md +0 -6
  414. package/corpus/core/src/templates/chat/changelog/2026-06-24-added-a-language-picker-and-localized-app-chrome-for-support.md +0 -6
  415. package/corpus/core/src/templates/chat/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +0 -6
  416. package/corpus/core/src/templates/chat/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +0 -6
  417. package/corpus/core/src/templates/chat/changelog/2026-06-29-chat-layouts-adapt-when-the-agent-sidebar-is-open.md +0 -6
  418. package/corpus/core/src/templates/chat/changelog/2026-07-08-settings-are-cleaner-and-searchable.md +0 -5
  419. package/corpus/core/src/templates/chat/changelog/2026-07-10-chat-now-makes-ai-connection-setup-clear-without-shifting-th.md +0 -6
  420. package/corpus/core/src/templates/chat/changelog/2026-07-13-a-full-agent-page-now-brings-context-files-connections-jobs-.md +0 -6
  421. package/corpus/core/src/templates/chat/changelog/2026-07-14-chat-opens-reliably-on-hosted-deployments-instead-of-failing.md +0 -6
  422. package/corpus/core/src/templates/chat/changelog/2026-07-14-fixed-chat-template-startup-with-older-core-versions.md +0 -6
  423. package/corpus/core/src/templates/chat/changelog/2026-07-15-chat-navigation-focuses-on-chat-and-agent.md +0 -6
  424. package/corpus/core/src/templates/chat/changelog/2026-07-17-the-agent-chat-sidebar-stays-closed-until-you-open-it-or-sta.md +0 -6
  425. package/corpus/core/src/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +0 -6
  426. package/corpus/core/src/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +0 -6
  427. package/corpus/core/src/templates/chat/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +0 -6
  428. package/corpus/core/src/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +0 -6
  429. package/corpus/core/src/templates/chat/changelog/2026-07-23-full-page-chat-is-better-centered-with-quieter-chat-history-.md +0 -6
  430. package/corpus/core/src/templates/chat/changelog/2026-07-24-borderless-secondary-surfaces.md +0 -6
  431. package/corpus/core/src/templates/chat/changelog/2026-07-24-sidebar-footer-controls-follow-a-consistent-order.md +0 -6
  432. package/corpus/core/src/templates/chat/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +0 -6
  433. package/corpus/core/src/templates/chat/components.json +0 -20
  434. package/corpus/core/src/templates/chat/learnings.defaults.md +0 -5
  435. package/corpus/core/src/templates/chat/netlify.toml +0 -11
  436. package/corpus/core/src/templates/chat/package.json +0 -92
  437. package/corpus/core/src/templates/chat/public/agent-native-icon-dark.svg +0 -10
  438. package/corpus/core/src/templates/chat/public/agent-native-icon-light.svg +0 -10
  439. package/corpus/core/src/templates/chat/public/agent-native-logo-dark.svg +0 -21
  440. package/corpus/core/src/templates/chat/public/agent-native-logo-light.svg +0 -21
  441. package/corpus/core/src/templates/chat/public/favicon.svg +0 -1
  442. package/corpus/core/src/templates/chat/public/icon-180.svg +0 -1
  443. package/corpus/core/src/templates/chat/public/icon-192.svg +0 -1
  444. package/corpus/core/src/templates/chat/public/icon-512.svg +0 -1
  445. package/corpus/core/src/templates/chat/public/manifest.json +0 -21
  446. package/corpus/core/src/templates/chat/react-router.config.ts +0 -7
  447. package/corpus/core/src/templates/chat/server/middleware/auth.ts +0 -15
  448. package/corpus/core/src/templates/chat/server/plugins/agent-chat.ts +0 -21
  449. package/corpus/core/src/templates/chat/server/plugins/auth.ts +0 -17
  450. package/corpus/core/src/templates/chat/server/routes/[...page].get.ts +0 -5
  451. package/corpus/core/src/templates/chat/ssr-entry.ts +0 -15
  452. package/corpus/core/src/templates/chat/tsconfig.json +0 -21
  453. package/corpus/core/src/templates/chat/vite.config.ts +0 -19
  454. package/corpus/templates/design/server/handlers/index-design-system-with-builder.ts +0 -151
  455. package/corpus/templates/design/server/routes/api/index-design-system-with-builder.post.ts +0 -1
  456. package/corpus/templates/slides/server/handlers/index-design-system-with-builder.ts +0 -119
  457. package/corpus/templates/slides/server/routes/api/index-design-system-with-builder.post.ts +0 -1
@@ -1,3 +1,4 @@
1
+ import type { DesignSystemSourceInput } from "@builder.io/ai-utils";
1
2
  export interface BuilderDesignSystemIndexFile {
2
3
  name: string;
3
4
  data: Uint8Array;
@@ -93,14 +94,62 @@ export interface BuilderDesignSystemIndexResult {
93
94
  builderUrl: string;
94
95
  status: "in-progress";
95
96
  }
97
+ export interface BuilderDesignSystemUploadAttachment {
98
+ name: string;
99
+ mimetype: string;
100
+ declaredSize: number;
101
+ }
102
+ export interface BuilderDesignSystemUploadSlot {
103
+ idx: number;
104
+ uploadUrl: string;
105
+ uploadToken: string;
106
+ }
107
+ export interface BuilderDesignSystemIndexFromSourcesOptions {
108
+ sources: DesignSystemSourceInput[];
109
+ projectName?: string;
110
+ devToolsVersion?: string;
111
+ }
112
+ export interface BuilderDesignSystemDecodeJobStatus {
113
+ jobId: string;
114
+ status: "pending" | "processing" | "complete" | "error";
115
+ framesProcessed: number;
116
+ totalFrames: number;
117
+ branchName: string | null;
118
+ branchUrl: string | null;
119
+ error: string | null;
120
+ partialFailure?: boolean;
121
+ createdAt: number;
122
+ updatedAt: number;
123
+ }
124
+ export declare function fetchBuilderDesignSystemDecodeJobStatus(jobId: string): Promise<BuilderDesignSystemDecodeJobStatus>;
96
125
  export declare function getBuilderDesignSystemsBaseUrl(): string;
97
126
  export declare function mimeTypeForBuilderDesignSystemFilename(filename: string, explicit?: string): string;
98
127
  export declare function buildBuilderDesignSystemIndexFiles({ codeFiles, designMd, designMdFilename, maxCodeFiles, maxTotalCodeBytes, overflowBehavior, }: BuildBuilderDesignSystemIndexFilesOptions): BuilderDesignSystemIndexFile[];
99
128
  export declare function builderDesignSystemUrl(designSystemId?: string | null): string;
129
+ export declare function builderProjectBranchUrl(projectId?: string | null, branchName?: string | null): string | undefined;
100
130
  export declare function localBuilderDesignSystemId(builderDesignSystemId: string): string;
101
131
  export declare function createBuilderDesignSystemProxyFields({ result, projectName, description, surface, }: BuilderDesignSystemProxyFieldsOptions): BuilderDesignSystemProxyFields;
102
132
  export declare function parseBuilderDesignSystemProxyReference(data: unknown): BuilderDesignSystemProxyReference | null;
103
133
  export declare function fetchBuilderDesignSystemDocs(designSystemId: string, options?: BuilderDesignSystemDocsOptions): Promise<BuilderDesignSystemDocument[]>;
104
134
  export declare function hydrateBuilderDesignSystemReference(reference: BuilderDesignSystemProxyReference, options?: BuilderDesignSystemDocsOptions): Promise<BuilderDesignSystemHydratedReference>;
135
+ /**
136
+ * Opens signed resumable-upload slots for `.fig`/code/design attachments so
137
+ * the browser can stream each file's bytes straight to GCS. Large `.fig`
138
+ * files must not ride through the app server as one request body -- the
139
+ * serverless host caps request bodies well below Figma export sizes.
140
+ */
141
+ export declare function startBuilderDesignSystemUpload(attachments: BuilderDesignSystemUploadAttachment[]): Promise<BuilderDesignSystemUploadSlot[]>;
142
+ /**
143
+ * Finalizes indexing from already-resolved sources (uploaded file tokens,
144
+ * public repos, connected projects). Callers that stream uploads from the
145
+ * browser pass the returned `uploadToken`s as `file` sources here.
146
+ */
147
+ export declare function indexBuilderDesignSystem(options: BuilderDesignSystemIndexFromSourcesOptions): Promise<BuilderDesignSystemIndexResult>;
148
+ /**
149
+ * Server-side indexing for in-memory files (the agent action's small inline
150
+ * payloads). Uploads each file server->GCS in resumable chunks, then
151
+ * finalizes. Browser callers should instead stream via
152
+ * `startBuilderDesignSystemUpload` + `indexBuilderDesignSystem`.
153
+ */
105
154
  export declare function startBuilderDesignSystemIndex(options: BuilderDesignSystemIndexOptions): Promise<BuilderDesignSystemIndexResult>;
106
155
  //# sourceMappingURL=builder-design-systems.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder-design-systems.d.ts","sourceRoot":"","sources":["../../src/server/builder-design-systems.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder-design-systems.d.ts","sourceRoot":"","sources":["../../src/server/builder-design-systems.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,24 @@ import { withBuilderUtmTrackingParams } from "../shared/builder-link-tracking.js
2
2
  import { FeatureNotConfiguredError } from "./credential-provider.js";
3
3
  import { getBuilderProxyOrigin, resolveBuilderCredentials, } from "./credential-provider.js";
4
4
  const DEFAULT_TIMEOUT_MS = 120_000;
5
+ // GCS resumable uploads require every chunk except the last to be a multiple
6
+ // of 256 KiB. 16 MiB is the recommended default and keeps very large `.fig`
7
+ // files off a single unbounded request body.
8
+ const GCS_CHUNK_SIZE = 16 * 1024 * 1024;
9
+ const MAX_CHUNK_RETRIES = 5;
5
10
  const DEFAULT_MAX_CODE_FILES = 50;
6
11
  const DEFAULT_MAX_TOTAL_CODE_BYTES = 2 * 1024 * 1024;
7
12
  const MAX_DOC_CONTENT_CHARS = 4_000;
13
+ export async function fetchBuilderDesignSystemDecodeJobStatus(jobId) {
14
+ const credentials = await resolveBuilderDesignSystemCredentials();
15
+ const url = makeBuilderDesignSystemUrl("decode-jobs/" + encodeURIComponent(jobId), credentials);
16
+ const response = await fetchWithTimeout(url, {
17
+ method: "GET",
18
+ headers: makeBuilderHeaders(credentials),
19
+ });
20
+ await assertOk(response, "Builder design-system decode-job status failed");
21
+ return (await response.json());
22
+ }
8
23
  function trimTrailingSlash(value) {
9
24
  return value.replace(/\/+$/, "");
10
25
  }
@@ -145,14 +160,35 @@ async function assertOk(response, label) {
145
160
  return;
146
161
  throw new Error(`${label} (${response.status}): ${await parseErrorBody(response)}`);
147
162
  }
163
+ // GCS reports the highest committed byte in a `Range: bytes=0-<end>` header.
164
+ function committedOffsetFromRange(response) {
165
+ const match = response.headers.get("Range")?.match(/bytes=0-(\d+)/);
166
+ return match ? parseInt(match[1], 10) + 1 : null;
167
+ }
168
+ async function queryCommittedOffset(sessionUrl, total) {
169
+ const response = await fetchWithTimeout(sessionUrl, {
170
+ method: "PUT",
171
+ headers: { "Content-Range": `bytes */${total}` },
172
+ });
173
+ if (response.status === 200 || response.status === 201)
174
+ return total;
175
+ if (response.status === 308) {
176
+ return committedOffsetFromRange(response) ?? 0;
177
+ }
178
+ throw new Error(`Builder design-system upload status query failed (${response.status}).`);
179
+ }
180
+ function delay(ms) {
181
+ return new Promise((resolve) => setTimeout(resolve, ms));
182
+ }
148
183
  async function uploadToResumableUrl(slot, file) {
149
184
  const mimeType = mimeTypeForFile(file);
150
185
  const bytes = file.data;
186
+ const total = bytes.byteLength;
151
187
  const start = await fetchWithTimeout(slot.uploadUrl, {
152
188
  method: "POST",
153
189
  headers: {
154
190
  "x-goog-resumable": "start",
155
- "x-goog-content-length-range": `0,${bytes.byteLength}`,
191
+ "x-goog-content-length-range": `0,${total}`,
156
192
  "Content-Type": mimeType,
157
193
  },
158
194
  });
@@ -161,15 +197,60 @@ async function uploadToResumableUrl(slot, file) {
161
197
  if (!sessionUrl) {
162
198
  throw new Error("Builder design-system upload session returned no URL.");
163
199
  }
164
- const response = await fetchWithTimeout(sessionUrl, {
165
- method: "PUT",
166
- headers: {
167
- "Content-Range": `bytes 0-${bytes.byteLength - 1}/${bytes.byteLength}`,
168
- "Content-Type": mimeType,
169
- },
170
- body: makeBody(bytes, mimeType),
171
- });
172
- await assertOk(response, "Builder design-system file upload failed");
200
+ if (total === 0) {
201
+ const response = await fetchWithTimeout(sessionUrl, {
202
+ method: "PUT",
203
+ headers: { "Content-Range": "bytes */0" },
204
+ body: makeBody(bytes, mimeType),
205
+ });
206
+ await assertOk(response, "Builder design-system file upload failed");
207
+ return;
208
+ }
209
+ // A failed PUT may have still landed at GCS, so the local offset can't be
210
+ // trusted after an error — only GCS's committed-offset response is
211
+ // authoritative.
212
+ let offset = 0;
213
+ let retries = 0;
214
+ while (offset < total) {
215
+ const end = Math.min(offset + GCS_CHUNK_SIZE, total);
216
+ const isLast = end === total;
217
+ try {
218
+ const response = await fetchWithTimeout(sessionUrl, {
219
+ method: "PUT",
220
+ headers: {
221
+ "Content-Range": `bytes ${offset}-${end - 1}/${total}`,
222
+ "Content-Type": mimeType,
223
+ },
224
+ body: makeBody(bytes.subarray(offset, end), mimeType),
225
+ });
226
+ if (response.status === 200 || response.status === 201) {
227
+ offset = total;
228
+ }
229
+ else if (!isLast && response.status === 308) {
230
+ const nextOffset = committedOffsetFromRange(response) ?? offset;
231
+ if (nextOffset <= offset) {
232
+ throw new Error(`Builder design-system upload stalled at byte ${offset}.`);
233
+ }
234
+ offset = nextOffset;
235
+ }
236
+ else {
237
+ throw new Error(`Builder design-system file upload failed (${response.status}).`);
238
+ }
239
+ retries = 0;
240
+ }
241
+ catch (err) {
242
+ if (++retries > MAX_CHUNK_RETRIES)
243
+ throw err;
244
+ await delay(500 * retries);
245
+ try {
246
+ offset = await queryCommittedOffset(sessionUrl, total);
247
+ }
248
+ catch {
249
+ // If the offset query also fails, retry from the last local offset —
250
+ // GCS's resumable PUT safely re-acknowledges bytes it already has.
251
+ }
252
+ }
253
+ }
173
254
  }
174
255
  function nonEmptyFiles(files) {
175
256
  return (files ?? []).filter((file) => file.data.byteLength > 0);
@@ -184,6 +265,21 @@ export function builderDesignSystemUrl(designSystemId) {
184
265
  content: "design_system_intelligence",
185
266
  });
186
267
  }
268
+ export function builderProjectBranchUrl(projectId, branchName) {
269
+ const project = projectId?.trim();
270
+ const branch = branchName?.trim();
271
+ if (!project || !branch)
272
+ return undefined;
273
+ const host = trimTrailingSlash(getBuilderAppHost());
274
+ const path = "/app/projects/" +
275
+ encodeURIComponent(project) +
276
+ "/" +
277
+ encodeURIComponent(branch);
278
+ return withBuilderUtmTrackingParams(host + path, {
279
+ campaign: "product",
280
+ content: "design_system_intelligence",
281
+ });
282
+ }
187
283
  export function localBuilderDesignSystemId(builderDesignSystemId) {
188
284
  const slug = builderDesignSystemId
189
285
  .replace(/[^a-zA-Z0-9_-]+/g, "-")
@@ -351,89 +447,145 @@ export async function hydrateBuilderDesignSystemReference(reference, options = {
351
447
  docCount: docs.length,
352
448
  };
353
449
  }
354
- export async function startBuilderDesignSystemIndex(options) {
355
- const files = nonEmptyFiles(options.files);
356
- const description = options.description?.trim();
357
- if (description) {
358
- files.unshift({
359
- name: "additional-context.txt",
360
- data: new TextEncoder().encode(description),
361
- mimeType: "text/plain",
362
- });
450
+ /**
451
+ * Opens signed resumable-upload slots for `.fig`/code/design attachments so
452
+ * the browser can stream each file's bytes straight to GCS. Large `.fig`
453
+ * files must not ride through the app server as one request body -- the
454
+ * serverless host caps request bodies well below Figma export sizes.
455
+ */
456
+ export async function startBuilderDesignSystemUpload(attachments) {
457
+ if (attachments.length === 0)
458
+ return [];
459
+ const credentials = await resolveBuilderDesignSystemCredentials();
460
+ const uploadStart = await fetchWithTimeout(makeBuilderDesignSystemUrl("upload/start", credentials), {
461
+ method: "POST",
462
+ headers: {
463
+ ...makeBuilderHeaders(credentials),
464
+ "Content-Type": "application/json",
465
+ },
466
+ body: JSON.stringify({ attachments }),
467
+ });
468
+ await assertOk(uploadStart, "Builder design-system upload start failed");
469
+ const uploadJson = (await uploadStart.json());
470
+ const slots = [...(uploadJson.uploads ?? [])].sort((a, b) => a.idx - b.idx);
471
+ if (slots.length !== attachments.length) {
472
+ throw new Error("Builder did not return upload slots for all files.");
363
473
  }
364
- if (files.length === 0 &&
365
- !options.githubRepoUrl &&
366
- !options.connectedProjectId) {
474
+ for (let i = 0; i < slots.length; i++) {
475
+ if (slots[i].idx !== i) {
476
+ throw new Error("Builder upload slot mismatch: expected " + i + ".");
477
+ }
478
+ }
479
+ return slots;
480
+ }
481
+ /**
482
+ * Finalizes indexing from already-resolved sources (uploaded file tokens,
483
+ * public repos, connected projects). Callers that stream uploads from the
484
+ * browser pass the returned `uploadToken`s as `file` sources here.
485
+ */
486
+ export async function indexBuilderDesignSystem(options) {
487
+ if (options.sources.length === 0) {
367
488
  throw new Error("Provide at least one .fig/code/text file or a GitHub repository URL to index with Builder.");
368
489
  }
369
490
  const credentials = await resolveBuilderDesignSystemCredentials();
370
- let uploadTokens = [];
371
- if (files.length > 0) {
372
- const uploadStart = await fetchWithTimeout(makeBuilderDesignSystemUrl("upload/start", credentials), {
373
- method: "POST",
374
- headers: {
375
- ...makeBuilderHeaders(credentials),
376
- "Content-Type": "application/json",
377
- },
378
- body: JSON.stringify({
379
- attachments: files.map((file) => ({
380
- name: file.name,
381
- mimetype: mimeTypeForFile(file),
382
- declaredSize: file.data.byteLength,
383
- })),
384
- }),
385
- });
386
- await assertOk(uploadStart, "Builder design-system upload start failed");
387
- const uploadJson = (await uploadStart.json());
388
- const slots = [...(uploadJson.uploads ?? [])].sort((a, b) => a.idx - b.idx);
389
- if (slots.length !== files.length) {
390
- throw new Error("Builder did not return upload slots for all files.");
391
- }
392
- for (let i = 0; i < slots.length; i++) {
393
- if (slots[i].idx !== i) {
394
- throw new Error(`Builder upload slot mismatch: expected ${i}.`);
395
- }
396
- await uploadToResumableUrl(slots[i], files[i]);
397
- }
398
- uploadTokens = slots.map((slot) => slot.uploadToken);
399
- }
400
- const generate = await fetchWithTimeout(makeBuilderDesignSystemUrl("generate", credentials), {
491
+ const index = await fetchWithTimeout(makeBuilderDesignSystemUrl("index", credentials), {
401
492
  method: "POST",
402
493
  headers: {
403
494
  ...makeBuilderHeaders(credentials),
404
495
  "Content-Type": "application/json",
405
496
  },
406
497
  body: JSON.stringify({
407
- uploads: uploadTokens,
498
+ sources: options.sources,
408
499
  ...(options.projectName?.trim()
409
- ? { projectName: options.projectName.trim() }
500
+ ? { designSystemName: options.projectName.trim() }
410
501
  : {}),
411
- ...(options.githubRepoUrl?.trim()
412
- ? { githubRepoUrl: options.githubRepoUrl.trim() }
413
- : {}),
414
- ...(options.connectedProjectId?.trim()
415
- ? { connectedProjectId: options.connectedProjectId.trim() }
416
- : {}),
417
- ...(options.selection ? { selection: options.selection } : {}),
418
502
  ...(options.devToolsVersion?.trim()
419
503
  ? { devToolsVersion: options.devToolsVersion.trim() }
420
504
  : {}),
421
505
  }),
422
506
  });
423
- await assertOk(generate, "Builder design-system indexing failed");
424
- const generated = (await generate.json());
425
- if (!generated.projectId || !generated.jobId || !generated.designSystemId) {
507
+ await assertOk(index, "Builder design-system indexing failed");
508
+ const indexed = (await index.json());
509
+ if (!indexed.designSystemId) {
426
510
  throw new Error("Builder design-system indexing returned an incomplete response.");
427
511
  }
512
+ const jobId = indexed.jobId ?? "";
513
+ // The `.fig` decode job creates the Fusion branch asynchronously, so
514
+ // `/index` usually can't return a branchUrl yet — the caller polls the
515
+ // decode-job status endpoint for it once the job completes.
516
+ const branchUrl = indexed.branchUrl?.trim() || null;
428
517
  return {
429
518
  ok: true,
430
519
  source: "builder",
431
- projectId: generated.projectId,
432
- jobId: generated.jobId,
433
- designSystemId: generated.designSystemId,
520
+ projectId: indexed.projectId ?? "",
521
+ jobId,
522
+ designSystemId: indexed.designSystemId,
434
523
  suggestedTitle: options.projectName?.trim() || null,
435
- builderUrl: builderDesignSystemUrl(generated.designSystemId),
524
+ builderUrl: branchUrl ||
525
+ builderProjectBranchUrl(indexed.projectId, indexed.branchName) ||
526
+ builderDesignSystemUrl(indexed.designSystemId),
436
527
  status: "in-progress",
437
528
  };
438
529
  }
530
+ /**
531
+ * Server-side indexing for in-memory files (the agent action's small inline
532
+ * payloads). Uploads each file server->GCS in resumable chunks, then
533
+ * finalizes. Browser callers should instead stream via
534
+ * `startBuilderDesignSystemUpload` + `indexBuilderDesignSystem`.
535
+ */
536
+ export async function startBuilderDesignSystemIndex(options) {
537
+ const files = nonEmptyFiles(options.files);
538
+ const description = options.description?.trim();
539
+ if (description) {
540
+ files.unshift({
541
+ name: "additional-context.txt",
542
+ data: new TextEncoder().encode(description),
543
+ mimeType: "text/plain",
544
+ });
545
+ }
546
+ if (files.length === 0 &&
547
+ !options.githubRepoUrl &&
548
+ !options.connectedProjectId) {
549
+ throw new Error("Provide at least one .fig/code/text file or a GitHub repository URL to index with Builder.");
550
+ }
551
+ const sources = [];
552
+ if (files.length > 0) {
553
+ const slots = await startBuilderDesignSystemUpload(files.map((file) => ({
554
+ name: file.name,
555
+ mimetype: mimeTypeForFile(file),
556
+ declaredSize: file.data.byteLength,
557
+ })));
558
+ for (let i = 0; i < slots.length; i++) {
559
+ await uploadToResumableUrl(slots[i], files[i]);
560
+ }
561
+ for (let i = 0; i < slots.length; i++) {
562
+ const name = files[i].name;
563
+ const fileSelection = options.selection?.[name];
564
+ sources.push({
565
+ kind: "file",
566
+ uploadToken: slots[i].uploadToken,
567
+ ...(fileSelection && fileSelection.length > 0
568
+ ? { selection: { [name]: fileSelection } }
569
+ : {}),
570
+ });
571
+ }
572
+ }
573
+ if (options.githubRepoUrl?.trim()) {
574
+ sources.push({
575
+ kind: "public-repo",
576
+ repoUrl: options.githubRepoUrl.trim(),
577
+ });
578
+ }
579
+ if (options.connectedProjectId?.trim()) {
580
+ sources.push({
581
+ kind: "connected-repo",
582
+ fusionProjectId: options.connectedProjectId.trim(),
583
+ });
584
+ }
585
+ return indexBuilderDesignSystem({
586
+ sources,
587
+ projectName: options.projectName,
588
+ devToolsVersion: options.devToolsVersion,
589
+ });
590
+ }
439
591
  //# sourceMappingURL=builder-design-systems.js.map