@superblocksteam/vite-plugin-file-sync 2.0.115-next.0 → 2.0.115-next.2

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 (355) hide show
  1. package/dist/ai-service/agent/middleware.d.ts.map +1 -1
  2. package/dist/ai-service/agent/middleware.js +19 -0
  3. package/dist/ai-service/agent/middleware.js.map +1 -1
  4. package/dist/ai-service/agent/prompts/api-prompts.d.ts.map +1 -1
  5. package/dist/ai-service/agent/prompts/api-prompts.js +13 -17
  6. package/dist/ai-service/agent/prompts/api-prompts.js.map +1 -1
  7. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  8. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +22 -3
  9. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  10. package/dist/ai-service/agent/subagents/coding/prompt-builder.d.ts +16 -0
  11. package/dist/ai-service/agent/subagents/coding/prompt-builder.d.ts.map +1 -0
  12. package/dist/ai-service/agent/subagents/coding/prompt-builder.js +30 -0
  13. package/dist/ai-service/agent/subagents/coding/prompt-builder.js.map +1 -0
  14. package/dist/ai-service/agent/subagents/coding/run-coding-subagent.d.ts +29 -0
  15. package/dist/ai-service/agent/subagents/coding/run-coding-subagent.d.ts.map +1 -0
  16. package/dist/ai-service/agent/subagents/coding/run-coding-subagent.js +108 -0
  17. package/dist/ai-service/agent/subagents/coding/run-coding-subagent.js.map +1 -0
  18. package/dist/ai-service/agent/subagents/types.d.ts +9 -1
  19. package/dist/ai-service/agent/subagents/types.d.ts.map +1 -1
  20. package/dist/ai-service/agent/subagents/types.js +8 -0
  21. package/dist/ai-service/agent/subagents/types.js.map +1 -1
  22. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  23. package/dist/ai-service/agent/tool-message-utils.js +5 -0
  24. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  25. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts.map +1 -1
  26. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +2 -1
  27. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -1
  28. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.d.ts +6 -0
  29. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.d.ts.map +1 -0
  30. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js +138 -0
  31. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js.map +1 -0
  32. package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
  33. package/dist/ai-service/agent/tools/build-finalize.js +39 -15
  34. package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
  35. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +6 -3
  36. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts.map +1 -1
  37. package/dist/ai-service/agent/tools/build-manage-checklist.js +116 -49
  38. package/dist/ai-service/agent/tools/build-manage-checklist.js.map +1 -1
  39. package/dist/ai-service/agent/tools/index.d.ts +2 -0
  40. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  41. package/dist/ai-service/agent/tools/index.js +2 -0
  42. package/dist/ai-service/agent/tools/index.js.map +1 -1
  43. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +3 -0
  44. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts.map +1 -1
  45. package/dist/ai-service/agent/tools/integrations/execute-request.js +330 -204
  46. package/dist/ai-service/agent/tools/integrations/execute-request.js.map +1 -1
  47. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  48. package/dist/ai-service/agent/tools.js +40 -2
  49. package/dist/ai-service/agent/tools.js.map +1 -1
  50. package/dist/ai-service/agent/tools2/access-control.d.ts +1 -1
  51. package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
  52. package/dist/ai-service/agent/tools2/access-control.js +15 -4
  53. package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
  54. package/dist/ai-service/agent/tools2/registry.d.ts +3 -0
  55. package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
  56. package/dist/ai-service/agent/tools2/registry.js +50 -8
  57. package/dist/ai-service/agent/tools2/registry.js.map +1 -1
  58. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts.map +1 -1
  59. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js +3 -2
  60. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js.map +1 -1
  61. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.d.ts.map +1 -1
  62. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.js +2 -1
  63. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.js.map +1 -1
  64. package/dist/ai-service/agent/tools2/tools/deploy-service.d.ts +16 -0
  65. package/dist/ai-service/agent/tools2/tools/deploy-service.d.ts.map +1 -0
  66. package/dist/ai-service/agent/tools2/tools/deploy-service.js +135 -0
  67. package/dist/ai-service/agent/tools2/tools/deploy-service.js.map +1 -0
  68. package/dist/ai-service/agent/tools2/tools/download-attachments.d.ts +33 -0
  69. package/dist/ai-service/agent/tools2/tools/download-attachments.d.ts.map +1 -0
  70. package/dist/ai-service/agent/tools2/tools/download-attachments.js +308 -0
  71. package/dist/ai-service/agent/tools2/tools/download-attachments.js.map +1 -0
  72. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  73. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +8 -4
  74. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  75. package/dist/ai-service/agent/tools2/tools/git.d.ts +57 -1
  76. package/dist/ai-service/agent/tools2/tools/git.d.ts.map +1 -1
  77. package/dist/ai-service/agent/tools2/tools/git.js +275 -8
  78. package/dist/ai-service/agent/tools2/tools/git.js.map +1 -1
  79. package/dist/ai-service/agent/tools2/tools/index.d.ts +2 -1
  80. package/dist/ai-service/agent/tools2/tools/index.d.ts.map +1 -1
  81. package/dist/ai-service/agent/tools2/tools/index.js +2 -1
  82. package/dist/ai-service/agent/tools2/tools/index.js.map +1 -1
  83. package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts +4 -1
  84. package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts.map +1 -1
  85. package/dist/ai-service/agent/tools2/tools/list-attachments.js +20 -4
  86. package/dist/ai-service/agent/tools2/tools/list-attachments.js.map +1 -1
  87. package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.d.ts +28 -0
  88. package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.d.ts.map +1 -0
  89. package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.js +152 -0
  90. package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.js.map +1 -0
  91. package/dist/ai-service/agent/tools2/types.d.ts +1 -18
  92. package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
  93. package/dist/ai-service/agent/tools2/types.js.map +1 -1
  94. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  95. package/dist/ai-service/agent/utils.js +22 -5
  96. package/dist/ai-service/agent/utils.js.map +1 -1
  97. package/dist/ai-service/app-interface/file-system-interface.d.ts +0 -4
  98. package/dist/ai-service/app-interface/file-system-interface.d.ts.map +1 -1
  99. package/dist/ai-service/app-interface/file-system-interface.js +0 -21
  100. package/dist/ai-service/app-interface/file-system-interface.js.map +1 -1
  101. package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts +11 -1
  102. package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts.map +1 -1
  103. package/dist/ai-service/app-interface/filesystem/virtual-file-system.js +29 -7
  104. package/dist/ai-service/app-interface/filesystem/virtual-file-system.js.map +1 -1
  105. package/dist/ai-service/app-interface/shell.d.ts +6 -0
  106. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  107. package/dist/ai-service/app-interface/shell.js +8 -0
  108. package/dist/ai-service/app-interface/shell.js.map +1 -1
  109. package/dist/ai-service/app-skills/helpers.d.ts.map +1 -1
  110. package/dist/ai-service/app-skills/helpers.js +4 -2
  111. package/dist/ai-service/app-skills/helpers.js.map +1 -1
  112. package/dist/ai-service/attachments/store.d.ts +18 -2
  113. package/dist/ai-service/attachments/store.d.ts.map +1 -1
  114. package/dist/ai-service/attachments/store.js +102 -9
  115. package/dist/ai-service/attachments/store.js.map +1 -1
  116. package/dist/ai-service/attachments/uploaded-content-part.d.ts +5 -2
  117. package/dist/ai-service/attachments/uploaded-content-part.d.ts.map +1 -1
  118. package/dist/ai-service/attachments/uploaded-content-part.js +32 -0
  119. package/dist/ai-service/attachments/uploaded-content-part.js.map +1 -1
  120. package/dist/ai-service/chat/chat-session-store.d.ts +2 -2
  121. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  122. package/dist/ai-service/chat/chat-session-store.js +45 -243
  123. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  124. package/dist/ai-service/chat/utils.d.ts +6 -0
  125. package/dist/ai-service/chat/utils.d.ts.map +1 -1
  126. package/dist/ai-service/chat/utils.js +47 -0
  127. package/dist/ai-service/chat/utils.js.map +1 -1
  128. package/dist/ai-service/features.d.ts +4 -0
  129. package/dist/ai-service/features.d.ts.map +1 -1
  130. package/dist/ai-service/features.js +4 -0
  131. package/dist/ai-service/features.js.map +1 -1
  132. package/dist/ai-service/index.d.ts +36 -11
  133. package/dist/ai-service/index.d.ts.map +1 -1
  134. package/dist/ai-service/index.js +228 -68
  135. package/dist/ai-service/index.js.map +1 -1
  136. package/dist/ai-service/judge/tools/playwright-action.d.ts +1 -1
  137. package/dist/ai-service/llm/client.d.ts.map +1 -1
  138. package/dist/ai-service/llm/client.js +4 -2
  139. package/dist/ai-service/llm/client.js.map +1 -1
  140. package/dist/ai-service/llm/stream/observers/retry-notification.d.ts.map +1 -1
  141. package/dist/ai-service/llm/stream/observers/retry-notification.js +4 -2
  142. package/dist/ai-service/llm/stream/observers/retry-notification.js.map +1 -1
  143. package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.d.ts.map +1 -1
  144. package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js +1 -16
  145. package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js.map +1 -1
  146. package/dist/ai-service/prompt-builder-service/types.d.ts +2 -13
  147. package/dist/ai-service/prompt-builder-service/types.d.ts.map +1 -1
  148. package/dist/ai-service/prompt-builder-service/types.js.map +1 -1
  149. package/dist/ai-service/skills/system/_registry.generated.d.ts.map +1 -1
  150. package/dist/ai-service/skills/system/_registry.generated.js +6 -0
  151. package/dist/ai-service/skills/system/_registry.generated.js.map +1 -1
  152. package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.d.ts +2 -0
  153. package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.d.ts.map +1 -0
  154. package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.js +58 -0
  155. package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.js.map +1 -0
  156. package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.d.ts +2 -0
  157. package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.d.ts.map +1 -0
  158. package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.js +107 -0
  159. package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.js.map +1 -0
  160. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts +2 -0
  161. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts.map +1 -0
  162. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js +137 -0
  163. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js.map +1 -0
  164. package/dist/ai-service/state-machine/clark-fsm.d.ts +26 -13
  165. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  166. package/dist/ai-service/state-machine/clark-fsm.js +12 -7
  167. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  168. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  169. package/dist/ai-service/state-machine/handlers/agent-planning.js +76 -27
  170. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  171. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  172. package/dist/ai-service/state-machine/handlers/awaiting-user.js +15 -6
  173. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  174. package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
  175. package/dist/ai-service/state-machine/handlers/idle.js +4 -2
  176. package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
  177. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  178. package/dist/ai-service/state-machine/handlers/llm-generating.js +48 -15
  179. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  180. package/dist/ai-service/state-machine/handlers/post-processing.d.ts +1 -1
  181. package/dist/ai-service/state-machine/handlers/post-processing.d.ts.map +1 -1
  182. package/dist/ai-service/state-machine/handlers/post-processing.js +23 -151
  183. package/dist/ai-service/state-machine/handlers/post-processing.js.map +1 -1
  184. package/dist/ai-service/state-machine/handlers/runtime-reviewing.d.ts.map +1 -1
  185. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +16 -8
  186. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
  187. package/dist/ai-service/state-machine/helpers/change-info.d.ts.map +1 -1
  188. package/dist/ai-service/state-machine/helpers/change-info.js +2 -15
  189. package/dist/ai-service/state-machine/helpers/change-info.js.map +1 -1
  190. package/dist/ai-service/state-machine/helpers/peer.d.ts +3 -3
  191. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
  192. package/dist/ai-service/state-machine/helpers/peer.js +9 -23
  193. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
  194. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +52 -0
  195. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -0
  196. package/dist/ai-service/state-machine/helpers/stable-peer.js +141 -0
  197. package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -0
  198. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  199. package/dist/ai-service/state-machine/mocks.js +0 -17
  200. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  201. package/dist/ai-service/types.d.ts +2 -21
  202. package/dist/ai-service/types.d.ts.map +1 -1
  203. package/dist/ai-service/types.js.map +1 -1
  204. package/dist/ai-service/util/archive-extractors.d.ts +52 -0
  205. package/dist/ai-service/util/archive-extractors.d.ts.map +1 -0
  206. package/dist/ai-service/util/archive-extractors.js +278 -0
  207. package/dist/ai-service/util/archive-extractors.js.map +1 -0
  208. package/dist/codegen.d.ts +1 -22
  209. package/dist/codegen.d.ts.map +1 -1
  210. package/dist/codegen.js +1 -117
  211. package/dist/codegen.js.map +1 -1
  212. package/dist/components-manager.d.ts +0 -6
  213. package/dist/components-manager.d.ts.map +1 -1
  214. package/dist/components-manager.js +0 -27
  215. package/dist/components-manager.js.map +1 -1
  216. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  217. package/dist/file-sync-vite-plugin.js +47 -94
  218. package/dist/file-sync-vite-plugin.js.map +1 -1
  219. package/dist/file-system-manager.d.ts +2 -15
  220. package/dist/file-system-manager.d.ts.map +1 -1
  221. package/dist/file-system-manager.js +16 -128
  222. package/dist/file-system-manager.js.map +1 -1
  223. package/dist/git-service/live-branch.d.ts.map +1 -1
  224. package/dist/git-service/live-branch.js +15 -1
  225. package/dist/git-service/live-branch.js.map +1 -1
  226. package/dist/lock-service/index.d.ts.map +1 -1
  227. package/dist/lock-service/index.js +8 -5
  228. package/dist/lock-service/index.js.map +1 -1
  229. package/dist/migration/get-fullstack-template-dir.d.ts +37 -0
  230. package/dist/migration/get-fullstack-template-dir.d.ts.map +1 -0
  231. package/dist/migration/get-fullstack-template-dir.js +99 -0
  232. package/dist/migration/get-fullstack-template-dir.js.map +1 -0
  233. package/dist/migration/migration-checklist.d.ts +60 -0
  234. package/dist/migration/migration-checklist.d.ts.map +1 -0
  235. package/dist/migration/migration-checklist.js +230 -0
  236. package/dist/migration/migration-checklist.js.map +1 -0
  237. package/dist/migration/migration-routes.d.ts +23 -0
  238. package/dist/migration/migration-routes.d.ts.map +1 -0
  239. package/dist/migration/migration-routes.js +533 -0
  240. package/dist/migration/migration-routes.js.map +1 -0
  241. package/dist/migration/restructure.d.ts +76 -0
  242. package/dist/migration/restructure.d.ts.map +1 -0
  243. package/dist/migration/restructure.js +446 -0
  244. package/dist/migration/restructure.js.map +1 -0
  245. package/dist/migration/translation-prompt.d.ts +22 -0
  246. package/dist/migration/translation-prompt.d.ts.map +1 -0
  247. package/dist/migration/translation-prompt.js +27 -0
  248. package/dist/migration/translation-prompt.js.map +1 -0
  249. package/dist/migration-templates/app-fullstack/client/App.tsx +17 -0
  250. package/dist/migration-templates/app-fullstack/client/components/common/sonner.tsx +20 -0
  251. package/dist/migration-templates/app-fullstack/client/components/hooks/use-active-page.ts +73 -0
  252. package/dist/migration-templates/app-fullstack/client/components/hooks/use-mobile.ts +21 -0
  253. package/dist/migration-templates/app-fullstack/client/components/ui/accordion.tsx +197 -0
  254. package/dist/migration-templates/app-fullstack/client/components/ui/area-chart.tsx +432 -0
  255. package/dist/migration-templates/app-fullstack/client/components/ui/aspect-ratio.tsx +45 -0
  256. package/dist/migration-templates/app-fullstack/client/components/ui/avatar.tsx +117 -0
  257. package/dist/migration-templates/app-fullstack/client/components/ui/badge.tsx +143 -0
  258. package/dist/migration-templates/app-fullstack/client/components/ui/bar-chart.tsx +390 -0
  259. package/dist/migration-templates/app-fullstack/client/components/ui/breadcrumb.tsx +259 -0
  260. package/dist/migration-templates/app-fullstack/client/components/ui/button.tsx +182 -0
  261. package/dist/migration-templates/app-fullstack/client/components/ui/calendar.tsx +300 -0
  262. package/dist/migration-templates/app-fullstack/client/components/ui/card.tsx +129 -0
  263. package/dist/migration-templates/app-fullstack/client/components/ui/chart.tsx +403 -0
  264. package/dist/migration-templates/app-fullstack/client/components/ui/chat.tsx +2303 -0
  265. package/dist/migration-templates/app-fullstack/client/components/ui/checkbox.tsx +97 -0
  266. package/dist/migration-templates/app-fullstack/client/components/ui/code-block-content.tsx +66 -0
  267. package/dist/migration-templates/app-fullstack/client/components/ui/date-range-picker.tsx +396 -0
  268. package/dist/migration-templates/app-fullstack/client/components/ui/dialog.tsx +223 -0
  269. package/dist/migration-templates/app-fullstack/client/components/ui/dropdown-menu.tsx +284 -0
  270. package/dist/migration-templates/app-fullstack/client/components/ui/file-dropzone.tsx +395 -0
  271. package/dist/migration-templates/app-fullstack/client/components/ui/file-input.tsx +166 -0
  272. package/dist/migration-templates/app-fullstack/client/components/ui/hover-card.tsx +162 -0
  273. package/dist/migration-templates/app-fullstack/client/components/ui/icon.tsx +133 -0
  274. package/dist/migration-templates/app-fullstack/client/components/ui/image.tsx +68 -0
  275. package/dist/migration-templates/app-fullstack/client/components/ui/input.tsx +219 -0
  276. package/dist/migration-templates/app-fullstack/client/components/ui/label.tsx +55 -0
  277. package/dist/migration-templates/app-fullstack/client/components/ui/line-chart.tsx +380 -0
  278. package/dist/migration-templates/app-fullstack/client/components/ui/link.tsx +139 -0
  279. package/dist/migration-templates/app-fullstack/client/components/ui/navigation-menu.tsx +345 -0
  280. package/dist/migration-templates/app-fullstack/client/components/ui/pagination.tsx +192 -0
  281. package/dist/migration-templates/app-fullstack/client/components/ui/pie-chart.tsx +295 -0
  282. package/dist/migration-templates/app-fullstack/client/components/ui/popover.tsx +162 -0
  283. package/dist/migration-templates/app-fullstack/client/components/ui/progress.tsx +69 -0
  284. package/dist/migration-templates/app-fullstack/client/components/ui/radar-chart.tsx +386 -0
  285. package/dist/migration-templates/app-fullstack/client/components/ui/radial-chart.tsx +402 -0
  286. package/dist/migration-templates/app-fullstack/client/components/ui/scroll-area.tsx +86 -0
  287. package/dist/migration-templates/app-fullstack/client/components/ui/select.tsx +229 -0
  288. package/dist/migration-templates/app-fullstack/client/components/ui/separator.tsx +62 -0
  289. package/dist/migration-templates/app-fullstack/client/components/ui/sheet.tsx +234 -0
  290. package/dist/migration-templates/app-fullstack/client/components/ui/sidebar.tsx +974 -0
  291. package/dist/migration-templates/app-fullstack/client/components/ui/skeleton.tsx +13 -0
  292. package/dist/migration-templates/app-fullstack/client/components/ui/slider.tsx +198 -0
  293. package/dist/migration-templates/app-fullstack/client/components/ui/switch.tsx +95 -0
  294. package/dist/migration-templates/app-fullstack/client/components/ui/table.tsx +145 -0
  295. package/dist/migration-templates/app-fullstack/client/components/ui/tabs.tsx +87 -0
  296. package/dist/migration-templates/app-fullstack/client/components/ui/textarea.tsx +148 -0
  297. package/dist/migration-templates/app-fullstack/client/components/ui/toggle-group.tsx +225 -0
  298. package/dist/migration-templates/app-fullstack/client/components/ui/toggle.tsx +150 -0
  299. package/dist/migration-templates/app-fullstack/client/components/ui/tooltip.tsx +175 -0
  300. package/dist/migration-templates/app-fullstack/client/hooks/useApi.ts +25 -0
  301. package/dist/migration-templates/app-fullstack/client/hooks/useApiData.ts +10 -0
  302. package/dist/migration-templates/app-fullstack/client/index.css +131 -0
  303. package/dist/migration-templates/app-fullstack/client/lib/executeApi.ts +9 -0
  304. package/dist/migration-templates/app-fullstack/client/lib/utils.ts +6 -0
  305. package/dist/migration-templates/app-fullstack/client/pages/Page1/index.tsx +3 -0
  306. package/dist/migration-templates/app-fullstack/client/root.tsx +17 -0
  307. package/dist/migration-templates/app-fullstack/client/router.tsx +48 -0
  308. package/dist/migration-templates/app-fullstack/client/types/node.d.ts +9 -0
  309. package/dist/migration-templates/app-fullstack/components.json +21 -0
  310. package/dist/migration-templates/app-fullstack/eslint.config.js +108 -0
  311. package/dist/migration-templates/app-fullstack/package.json +89 -0
  312. package/dist/migration-templates/app-fullstack/server/.gitkeep +0 -0
  313. package/dist/migration-templates/app-fullstack/server/apis/index.ts +22 -0
  314. package/dist/migration-templates/app-fullstack/server/index.ts +2 -0
  315. package/dist/migration-templates/app-fullstack/tsconfig.client.json +27 -0
  316. package/dist/migration-templates/app-fullstack/tsconfig.eslint.json +8 -0
  317. package/dist/migration-templates/app-fullstack/tsconfig.json +25 -0
  318. package/dist/migration-templates/app-fullstack/tsconfig.server.json +13 -0
  319. package/dist/migration-templates/app-fullstack/vite.config.ts +17 -0
  320. package/dist/parsing/imports.d.ts +0 -16
  321. package/dist/parsing/imports.d.ts.map +1 -1
  322. package/dist/parsing/imports.js +0 -68
  323. package/dist/parsing/imports.js.map +1 -1
  324. package/dist/parsing/jsx.d.ts +0 -2
  325. package/dist/parsing/jsx.d.ts.map +1 -1
  326. package/dist/parsing/jsx.js +0 -62
  327. package/dist/parsing/jsx.js.map +1 -1
  328. package/dist/socket-manager.d.ts.map +1 -1
  329. package/dist/socket-manager.js +109 -32
  330. package/dist/socket-manager.js.map +1 -1
  331. package/dist/source-tracker.d.ts +7 -85
  332. package/dist/source-tracker.d.ts.map +1 -1
  333. package/dist/source-tracker.js +19 -695
  334. package/dist/source-tracker.js.map +1 -1
  335. package/dist/sync-service/index.d.ts +79 -2
  336. package/dist/sync-service/index.d.ts.map +1 -1
  337. package/dist/sync-service/index.js +139 -10
  338. package/dist/sync-service/index.js.map +1 -1
  339. package/package.json +11 -9
  340. package/dist/ai-service/artifacts/bolt.d.ts +0 -8
  341. package/dist/ai-service/artifacts/bolt.d.ts.map +0 -1
  342. package/dist/ai-service/artifacts/bolt.js +0 -92
  343. package/dist/ai-service/artifacts/bolt.js.map +0 -1
  344. package/dist/ai-service/result-buffer/bolt.d.ts +0 -18
  345. package/dist/ai-service/result-buffer/bolt.d.ts.map +0 -1
  346. package/dist/ai-service/result-buffer/bolt.js +0 -100
  347. package/dist/ai-service/result-buffer/bolt.js.map +0 -1
  348. package/dist/ai-service/result-buffer/shared.d.ts +0 -17
  349. package/dist/ai-service/result-buffer/shared.d.ts.map +0 -1
  350. package/dist/ai-service/result-buffer/shared.js +0 -7
  351. package/dist/ai-service/result-buffer/shared.js.map +0 -1
  352. package/dist/inject-no-select.d.ts +0 -15
  353. package/dist/inject-no-select.d.ts.map +0 -1
  354. package/dist/inject-no-select.js +0 -175
  355. package/dist/inject-no-select.js.map +0 -1
@@ -0,0 +1,446 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readFile, readdir, rename, stat, writeFile, mkdir, cp, } from "node:fs/promises";
3
+ import { dirname, join, relative } from "node:path";
4
+ import { parse as parseYaml } from "yaml";
5
+ import { getMigrationChecklistPath, MIGRATION_CHECKLIST_FILE, seedMigrationChecklist, } from "./migration-checklist.js";
6
+ /** Top-level directories we never move into the backup (they would bloat
7
+ * it, or -- in the case of `scratch` itself -- recurse infinitely). */
8
+ const GUARDED_TOP_LEVEL = new Set([
9
+ ".cache",
10
+ ".git",
11
+ ".superblocks",
12
+ ".turbo",
13
+ "build",
14
+ "coverage",
15
+ "dist",
16
+ "node_modules",
17
+ "scratch",
18
+ ]);
19
+ /** Top-level entries that, if present in backup, map onto fullstack client/. */
20
+ const BACKUP_TO_CLIENT_MAPPINGS = [
21
+ // Pages are overwhelmingly user-authored; always overwrite the template
22
+ // stub (which is a blank <div>).
23
+ {
24
+ backupSubpath: "pages",
25
+ clientSubpath: "pages",
26
+ diffAgainstTemplate: false,
27
+ },
28
+ // Components may be stock shadcn files that match the fullstack template
29
+ // byte-for-byte. Skip those to avoid a giant no-op diff.
30
+ {
31
+ backupSubpath: "components",
32
+ clientSubpath: "components",
33
+ diffAgainstTemplate: true,
34
+ },
35
+ // These are one-file directories in both templates; diff to avoid
36
+ // overwriting template improvements when the user never touched them.
37
+ { backupSubpath: "lib", clientSubpath: "lib", diffAgainstTemplate: true },
38
+ ];
39
+ /** Single-file diff targets at the backup root. Each one: if the v2 app
40
+ * shipped a version that differs from the fullstack template's baseline,
41
+ * port it over; otherwise leave the template copy in place.
42
+ *
43
+ * `router.tsx` / `App.tsx` / `root.tsx` are critical here: the shadcn-demo-app
44
+ * legacy template registers real user routes via `router.tsx`, and the
45
+ * fullstack template's default router only wires up a blank `Page1` stub.
46
+ * Without porting the user's router, the migrated `client/pages/*` files
47
+ * exist on disk but are unrouted, so the live-edit tree looks like a
48
+ * default/empty app and the editor falls through to the v2 UI.
49
+ */
50
+ const BACKUP_SINGLE_FILE_DIFFS = [
51
+ { backupPath: "index.css", clientPath: "client/index.css" },
52
+ { backupPath: "router.tsx", clientPath: "client/router.tsx" },
53
+ { backupPath: "App.tsx", clientPath: "client/App.tsx" },
54
+ { backupPath: "root.tsx", clientPath: "client/root.tsx" },
55
+ ];
56
+ export const SCRATCH_DIR_NAME = "scratch";
57
+ export const BACKUP_SUBDIR_NAME = "v2-backup";
58
+ export const MIGRATION_STATE_FILE = "migration-state.json";
59
+ export { MIGRATION_CHECKLIST_FILE };
60
+ export const MIGRATION_STATE_VERSION = 1;
61
+ export async function migrateToFullstack(args) {
62
+ const { appRootDirPath, templateSourceDirPath, logger } = args;
63
+ logger.info("[migrate] Starting v2->v3 restructure", {
64
+ appRootDirPath,
65
+ templateSourceDirPath,
66
+ });
67
+ await assertDirectoryExists(appRootDirPath, "app root");
68
+ await assertDirectoryExists(templateSourceDirPath, "template source");
69
+ const scratchDirPath = join(appRootDirPath, SCRATCH_DIR_NAME);
70
+ const backupDirPath = join(scratchDirPath, BACKUP_SUBDIR_NAME);
71
+ await assertBackupSlotIsEmpty(backupDirPath);
72
+ await moveAllTopLevelIntoBackup({ appRootDirPath, backupDirPath, logger });
73
+ await copyTemplateIntoAppRoot({
74
+ appRootDirPath,
75
+ templateSourceDirPath,
76
+ logger,
77
+ });
78
+ let restructuredFiles = 0;
79
+ restructuredFiles += await remapBackupDirsIntoClient({
80
+ backupDirPath,
81
+ appRootDirPath,
82
+ templateSourceDirPath,
83
+ logger,
84
+ });
85
+ restructuredFiles += await remapBackupSingleFiles({
86
+ backupDirPath,
87
+ appRootDirPath,
88
+ templateSourceDirPath,
89
+ logger,
90
+ });
91
+ const apiStubResult = await stubV2Apis({
92
+ backupDirPath,
93
+ appRootDirPath,
94
+ logger,
95
+ });
96
+ restructuredFiles += apiStubResult.apiStubs.length;
97
+ const state = {
98
+ version: MIGRATION_STATE_VERSION,
99
+ startedAt: new Date().toISOString(),
100
+ targetTemplateName: "app-fullstack",
101
+ sourceTemplateName: process.env.SUPERBLOCKS_APP_TEMPLATE_NAME ?? "shadcn-demo-app",
102
+ backupDirPath: relative(appRootDirPath, backupDirPath),
103
+ apiChecklist: apiStubResult.checklist,
104
+ };
105
+ const stateFilePath = join(scratchDirPath, MIGRATION_STATE_FILE);
106
+ await writeFile(stateFilePath, JSON.stringify(state, null, 2) + "\n", "utf-8");
107
+ logger.info("[migrate] Wrote migration-state.json", { stateFilePath });
108
+ const migrationChecklist = await seedMigrationChecklist({
109
+ appRootDirPath,
110
+ apiChecklist: apiStubResult.checklist.map((entry) => ({
111
+ name: entry.name,
112
+ stubPath: entry.stubPath,
113
+ })),
114
+ });
115
+ const migrationChecklistFilePath = getMigrationChecklistPath(appRootDirPath);
116
+ logger.info("[migrate] Wrote migration-checklist.json", {
117
+ migrationChecklistFilePath,
118
+ itemCount: migrationChecklist.items.length,
119
+ });
120
+ // Update the local template marker read by the csb-mock-server so the
121
+ // restarted dev-server process launches with `app-fullstack` env vars
122
+ // (entryPoint `client/root.tsx`, etc.). Production SABS gets the new
123
+ // template from the server-side row at pod start; the mock has no such
124
+ // signal and would otherwise cache the pre-migration template forever.
125
+ // Harmless in non-mock environments — the file is mock-specific.
126
+ const sbTemplatePath = join(appRootDirPath, ".sb_template");
127
+ await writeFile(sbTemplatePath, "app-fullstack", "utf-8");
128
+ logger.info("[migrate] Wrote .sb_template", { sbTemplatePath });
129
+ return {
130
+ scratchDirPath,
131
+ backupDirPath,
132
+ restructuredFiles,
133
+ apiStubs: apiStubResult.apiStubs,
134
+ stateFilePath,
135
+ migrationChecklistFilePath,
136
+ };
137
+ }
138
+ // --------------- Step 1: move current tree into scratch/v2-backup ---------------
139
+ async function assertBackupSlotIsEmpty(backupDirPath) {
140
+ if (existsSync(backupDirPath)) {
141
+ // If the backup already exists we would silently overwrite the user's
142
+ // existing rollback point, which is the worst possible failure mode.
143
+ throw new Error(`Refusing to overwrite existing backup at ${backupDirPath}. A prior migration is either in progress or left behind state; resolve it manually before retrying.`);
144
+ }
145
+ }
146
+ async function moveAllTopLevelIntoBackup(opts) {
147
+ const { appRootDirPath, backupDirPath, logger } = opts;
148
+ await mkdir(backupDirPath, { recursive: true });
149
+ const entries = await readdir(appRootDirPath, { withFileTypes: true });
150
+ for (const entry of entries) {
151
+ if (GUARDED_TOP_LEVEL.has(entry.name))
152
+ continue;
153
+ // The scratch dir was just created one level up from the backup; skip it
154
+ // even if the GUARDED list changes later -- moving scratch/ into itself
155
+ // would recurse forever.
156
+ if (entry.name === SCRATCH_DIR_NAME)
157
+ continue;
158
+ const from = join(appRootDirPath, entry.name);
159
+ const to = join(backupDirPath, entry.name);
160
+ await rename(from, to);
161
+ logger.debug("[migrate] Moved to backup", { entry: entry.name });
162
+ }
163
+ }
164
+ // --------------- Step 2: overlay fullstack template onto app root ---------------
165
+ async function copyTemplateIntoAppRoot(opts) {
166
+ const { appRootDirPath, templateSourceDirPath, logger } = opts;
167
+ const entries = await readdir(templateSourceDirPath, { withFileTypes: true });
168
+ for (const entry of entries) {
169
+ // Match the same guarded set so we never copy in build output / installs
170
+ // from the bundled template (the copy script already filters these, but
171
+ // defense in depth guards against the monorepo fallback path).
172
+ if (GUARDED_TOP_LEVEL.has(entry.name))
173
+ continue;
174
+ const from = join(templateSourceDirPath, entry.name);
175
+ const to = join(appRootDirPath, entry.name);
176
+ await cp(from, to, { recursive: true });
177
+ }
178
+ logger.debug("[migrate] Template overlaid onto app root");
179
+ }
180
+ // --------------- Step 3: remap backup content onto the new layout ---------------
181
+ async function remapBackupDirsIntoClient(opts) {
182
+ const { backupDirPath, appRootDirPath, templateSourceDirPath, logger } = opts;
183
+ let copied = 0;
184
+ for (const mapping of BACKUP_TO_CLIENT_MAPPINGS) {
185
+ const src = join(backupDirPath, mapping.backupSubpath);
186
+ if (!existsSync(src))
187
+ continue;
188
+ const dst = join(appRootDirPath, "client", mapping.clientSubpath);
189
+ const templateEquivalent = join(templateSourceDirPath, "client", mapping.clientSubpath);
190
+ copied += await copyTreeWithDiff({
191
+ src,
192
+ dst,
193
+ templateBaseline: mapping.diffAgainstTemplate ? templateEquivalent : null,
194
+ // pages/<Page>/apis/ is where v2 YAML APIs live; they are handled by
195
+ // the API stub pass separately, so keep them out of the client/ tree.
196
+ skipSubpath: mapping.backupSubpath === "pages" ? "apis" : null,
197
+ logger,
198
+ });
199
+ }
200
+ return copied;
201
+ }
202
+ async function remapBackupSingleFiles(opts) {
203
+ const { backupDirPath, appRootDirPath, templateSourceDirPath, logger } = opts;
204
+ let copied = 0;
205
+ for (const mapping of BACKUP_SINGLE_FILE_DIFFS) {
206
+ const backupFile = join(backupDirPath, mapping.backupPath);
207
+ if (!existsSync(backupFile))
208
+ continue;
209
+ const destFile = join(appRootDirPath, mapping.clientPath);
210
+ const templateFile = join(templateSourceDirPath, mapping.clientPath);
211
+ if (existsSync(templateFile) &&
212
+ (await filesEqual(backupFile, templateFile))) {
213
+ logger.debug("[migrate] Skipping unmodified single file", {
214
+ file: mapping.backupPath,
215
+ });
216
+ continue;
217
+ }
218
+ await mkdir(dirname(destFile), { recursive: true });
219
+ await cp(backupFile, destFile);
220
+ copied += 1;
221
+ }
222
+ return copied;
223
+ }
224
+ async function copyTreeWithDiff(opts) {
225
+ const { src, dst, templateBaseline, skipSubpath, logger } = opts;
226
+ let copied = 0;
227
+ const stack = [src];
228
+ while (stack.length > 0) {
229
+ const current = stack.pop();
230
+ const entries = await readdir(current, { withFileTypes: true });
231
+ for (const entry of entries) {
232
+ const absEntry = join(current, entry.name);
233
+ const relFromSrc = relative(src, absEntry);
234
+ // Drop top-level `apis/` under pages/<Page>/ (handled by stubV2Apis).
235
+ if (skipSubpath && relFromSrc.split("/").includes(skipSubpath)) {
236
+ continue;
237
+ }
238
+ if (entry.isDirectory()) {
239
+ stack.push(absEntry);
240
+ continue;
241
+ }
242
+ if (!entry.isFile())
243
+ continue;
244
+ if (templateBaseline) {
245
+ const baselineFile = join(templateBaseline, relFromSrc);
246
+ if (existsSync(baselineFile) &&
247
+ (await filesEqual(absEntry, baselineFile))) {
248
+ logger.debug("[migrate] Skipping unmodified file", {
249
+ path: relFromSrc,
250
+ });
251
+ continue;
252
+ }
253
+ }
254
+ const destFile = join(dst, relFromSrc);
255
+ await mkdir(dirname(destFile), { recursive: true });
256
+ await cp(absEntry, destFile);
257
+ copied += 1;
258
+ }
259
+ }
260
+ return copied;
261
+ }
262
+ // --------------- Step 4: stub v2 APIs --------------------------------------------
263
+ async function stubV2Apis(opts) {
264
+ const { backupDirPath, appRootDirPath, logger } = opts;
265
+ const yamls = await findApiYamls(backupDirPath);
266
+ const apiStubs = [];
267
+ const checklist = [];
268
+ const seenNames = new Set();
269
+ for (const yamlPath of yamls) {
270
+ const rawName = await extractApiName(yamlPath).catch(() => null);
271
+ const fallback = dirname(yamlPath).split("/").pop() ?? "Api";
272
+ const baseName = toValidApiName(rawName ?? fallback);
273
+ const uniqueName = ensureUniqueName(baseName, seenNames);
274
+ seenNames.add(uniqueName);
275
+ const stubRelPath = join("server", "apis", uniqueName, "api.ts");
276
+ const stubAbsPath = join(appRootDirPath, stubRelPath);
277
+ await mkdir(dirname(stubAbsPath), { recursive: true });
278
+ await writeFile(stubAbsPath, renderApiStub(uniqueName, yamlPath, backupDirPath), "utf-8");
279
+ apiStubs.push(stubRelPath);
280
+ checklist.push({
281
+ name: uniqueName,
282
+ yamlPathInBackup: relative(backupDirPath, yamlPath),
283
+ stubPath: stubRelPath,
284
+ status: "stub",
285
+ });
286
+ }
287
+ await writeApiRegistry({ appRootDirPath, stubs: checklist, logger });
288
+ logger.info("[migrate] Stubbed v2 APIs", { count: apiStubs.length });
289
+ return { apiStubs, checklist };
290
+ }
291
+ async function findApiYamls(rootDir) {
292
+ const results = [];
293
+ const stack = [rootDir];
294
+ while (stack.length > 0) {
295
+ const dir = stack.pop();
296
+ let entries;
297
+ try {
298
+ entries = await readdir(dir, { withFileTypes: true });
299
+ }
300
+ catch {
301
+ continue;
302
+ }
303
+ for (const entry of entries) {
304
+ const abs = join(dir, entry.name);
305
+ if (entry.isDirectory()) {
306
+ stack.push(abs);
307
+ continue;
308
+ }
309
+ if (!entry.isFile())
310
+ continue;
311
+ if (entry.name !== "api.yaml" && entry.name !== "api.yml")
312
+ continue;
313
+ // Only treat files inside an `apis/` directory as v2 API definitions
314
+ // so we do not pick up unrelated YAML that happens to be named api.yaml.
315
+ const parts = relative(rootDir, abs).split("/");
316
+ if (!parts.includes("apis"))
317
+ continue;
318
+ results.push(abs);
319
+ }
320
+ }
321
+ return results.sort();
322
+ }
323
+ async function extractApiName(yamlPath) {
324
+ const raw = await readFile(yamlPath, "utf-8");
325
+ const parsed = parseYaml(raw);
326
+ if (parsed &&
327
+ typeof parsed === "object" &&
328
+ "metadata" in parsed &&
329
+ typeof parsed.metadata === "object" &&
330
+ parsed.metadata &&
331
+ typeof parsed.metadata.name ===
332
+ "string") {
333
+ return parsed.metadata.name;
334
+ }
335
+ return null;
336
+ }
337
+ /** Produce a JS-identifier-safe PascalCase-ish name. Not perfect, but
338
+ * deterministic, and mirrors the server's v2 API slug requirements enough
339
+ * for the stubs to compile. */
340
+ function toValidApiName(name) {
341
+ const cleaned = name.replace(/[^A-Za-z0-9_]/g, "_");
342
+ if (cleaned.length === 0)
343
+ return "Api";
344
+ if (/^[0-9]/.test(cleaned))
345
+ return "_" + cleaned;
346
+ return cleaned;
347
+ }
348
+ function ensureUniqueName(name, seen) {
349
+ if (!seen.has(name))
350
+ return name;
351
+ let i = 2;
352
+ while (seen.has(`${name}_${i}`))
353
+ i += 1;
354
+ return `${name}_${i}`;
355
+ }
356
+ function renderApiStub(name, yamlPath, backupDirPath) {
357
+ const originalRel = relative(backupDirPath, yamlPath);
358
+ // scratch/v2-backup/ lives under the app root; spell the full project-
359
+ // relative path in the TODO so users can jump straight to the source.
360
+ const scratchRel = join(SCRATCH_DIR_NAME, BACKUP_SUBDIR_NAME, originalRel);
361
+ return `import { api, z } from "@superblocksteam/sdk-api";
362
+
363
+ /**
364
+ * Auto-generated v2->v3 migration stub.
365
+ *
366
+ * Original v2 definition lives at:
367
+ * ${scratchRel}
368
+ *
369
+ * The v2 YAML has been preserved in scratch/v2-backup/ so you can port the
370
+ * block logic (and any custom integrations) into the run() below. Input/
371
+ * output schemas are intentionally empty until you wire them up -- leaving
372
+ * them unchanged will fail at runtime, which is the desired forcing
373
+ * function.
374
+ */
375
+ export default api({
376
+ name: "${name}",
377
+ input: z.object({}),
378
+ output: z.object({}).optional(),
379
+ async run() {
380
+ return "TODO";
381
+ },
382
+ });
383
+ `;
384
+ }
385
+ async function writeApiRegistry(opts) {
386
+ const { appRootDirPath, stubs, logger } = opts;
387
+ const registryPath = join(appRootDirPath, "server", "apis", "index.ts");
388
+ // Sort by API name so the registry is stable regardless of the order in
389
+ // which we walked the backup directory. Users eyeballing this file
390
+ // expect alphabetical order, and diffs on subsequent manual edits are
391
+ // easier to read.
392
+ const orderedStubs = [...stubs].sort((a, b) => a.name.localeCompare(b.name));
393
+ const imports = orderedStubs
394
+ .map((s) => `import ${s.name} from "./${s.name}/api.js";`)
395
+ .join("\n");
396
+ const entries = orderedStubs.map((s) => ` ${s.name},`).join("\n");
397
+ const contents = `/**
398
+ * API Registry - Central export for all APIs.
399
+ *
400
+ * Regenerated by the v2->v3 migration. Each entry here corresponds to a
401
+ * pre-migration YAML API preserved under scratch/v2-backup/. Feel free to
402
+ * add / remove entries by hand as you port the logic; the restructure
403
+ * script is idempotent against manual edits (it will not run again unless
404
+ * the user re-initiates migration).
405
+ */
406
+
407
+ ${imports}
408
+
409
+ const apis = {
410
+ ${entries}
411
+ } as const;
412
+
413
+ export default apis;
414
+
415
+ /** Type for useApi inference - exported for client type-only imports */
416
+ export type ApiRegistry = typeof apis;
417
+ `;
418
+ await mkdir(dirname(registryPath), { recursive: true });
419
+ await writeFile(registryPath, contents, "utf-8");
420
+ logger.debug("[migrate] Rewrote server/apis/index.ts", {
421
+ registryPath,
422
+ count: stubs.length,
423
+ });
424
+ }
425
+ // --------------- Helpers ---------------------------------------------------------
426
+ async function assertDirectoryExists(path, label) {
427
+ try {
428
+ const s = await stat(path);
429
+ if (!s.isDirectory()) {
430
+ throw new Error(`${label} path exists but is not a directory: ${path}`);
431
+ }
432
+ }
433
+ catch (err) {
434
+ if (err.code === "ENOENT") {
435
+ throw new Error(`${label} directory does not exist: ${path}`);
436
+ }
437
+ throw err;
438
+ }
439
+ }
440
+ async function filesEqual(a, b) {
441
+ const [aBuf, bBuf] = await Promise.all([readFile(a), readFile(b)]);
442
+ if (aBuf.length !== bBuf.length)
443
+ return false;
444
+ return aBuf.equals(bBuf);
445
+ }
446
+ //# sourceMappingURL=restructure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restructure.js","sourceRoot":"","sources":["../../src/migration/restructure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Canned prompt that drives the post-flip v2 → v3 API translation turn.
3
+ *
4
+ * The prompt is injected as an internal USER_SENT_PROMPT the first time the
5
+ * ai-service boots with a pending `seed_api` checklist. The prompt itself is
6
+ * deliberately thin — all translation rules, parallelization policy, and
7
+ * per-API procedure live in the `superblocks-migration` system skill. This
8
+ * keeps the turn-level message small and makes the spec editable without a
9
+ * code change.
10
+ */
11
+ export interface TranslationPromptArgs {
12
+ /**
13
+ * When true, the prompt activates the focused-debug retry path: the agent
14
+ * is told to also load `references/focused-debug.md` before acting. Used by
15
+ * the user-initiated "Fix with Clark" action after the auto-retry budget is
16
+ * spent. The prior-failure list itself is pulled from the checklist at turn
17
+ * time — it is not interpolated into the prompt.
18
+ */
19
+ focusedDebug?: boolean;
20
+ }
21
+ export declare function buildTranslationPrompt(args: TranslationPromptArgs): string;
22
+ //# sourceMappingURL=translation-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation-prompt.d.ts","sourceRoot":"","sources":["../../src/migration/translation-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,qBAAqB;IACpC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM,CAiB1E"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Canned prompt that drives the post-flip v2 → v3 API translation turn.
3
+ *
4
+ * The prompt is injected as an internal USER_SENT_PROMPT the first time the
5
+ * ai-service boots with a pending `seed_api` checklist. The prompt itself is
6
+ * deliberately thin — all translation rules, parallelization policy, and
7
+ * per-API procedure live in the `superblocks-migration` system skill. This
8
+ * keeps the turn-level message small and makes the spec editable without a
9
+ * code change.
10
+ */
11
+ export function buildTranslationPrompt(args) {
12
+ const { focusedDebug } = args;
13
+ if (focusedDebug) {
14
+ return `You are in a focused-retry v2 → v3 migration turn.
15
+
16
+ Before writing any code, read these skill files in order and follow them:
17
+
18
+ 1. \`skills/system/superblocks-migration/references/focused-debug.md\` — the retry playbook. Read this FIRST; it tells you how to pull prior-failure context from the checklist and when to ask the user via \`askMultiChoice\` instead of marking items \`failed\`.
19
+ 2. \`skills/system/superblocks-migration/SKILL.md\` — the full translation specification.
20
+ `;
21
+ }
22
+ return `You are in a v2 → v3 migration turn.
23
+
24
+ Before writing any code, read \`skills/system/superblocks-migration/SKILL.md\` and follow it. That file is the authoritative translation specification for this turn — it tells you how to discover the API list, whether to parallelize, the per-API procedure, and every rule the translation must obey.
25
+ `;
26
+ }
27
+ //# sourceMappingURL=translation-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation-prompt.js","sourceRoot":"","sources":["../../src/migration/translation-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAaH,MAAM,UAAU,sBAAsB,CAAC,IAA2B;IAChE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAE9B,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO;;;;;;CAMV,CAAC;IACA,CAAC;IAED,OAAO;;;CAGR,CAAC;AACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Outlet } from "react-router";
2
+
3
+ import { App as AppProvider } from "@superblocksteam/library";
4
+
5
+ import { Toaster } from "./components/common/sonner";
6
+
7
+ export default function AppComponent() {
8
+ return (
9
+ <>
10
+ {/* Do not remove the AppProvider */}
11
+ <AppProvider className="h-full w-full">
12
+ <Outlet />
13
+ </AppProvider>
14
+ <Toaster />
15
+ </>
16
+ );
17
+ }
@@ -0,0 +1,20 @@
1
+ import type { ToasterProps } from "sonner";
2
+ import { Toaster as Sonner } from "sonner";
3
+
4
+ const Toaster = ({ ...props }: ToasterProps) => {
5
+ return (
6
+ <Sonner
7
+ className="toaster group"
8
+ style={
9
+ {
10
+ "--normal-bg": "var(--popover)",
11
+ "--normal-text": "var(--popover-foreground)",
12
+ "--normal-border": "var(--border)",
13
+ } as React.CSSProperties
14
+ }
15
+ {...props}
16
+ />
17
+ );
18
+ };
19
+
20
+ export { Toaster };
@@ -0,0 +1,73 @@
1
+ import React from "react";
2
+
3
+ // Custom hook to track current pathname and determine active menu items
4
+ export const useActivePage = () => {
5
+ // Track current pathname
6
+ const [currentPath, setCurrentPath] = React.useState(
7
+ window.location.pathname,
8
+ );
9
+
10
+ // Update current path when location changes
11
+ React.useEffect(() => {
12
+ const handleLocationChange = () => {
13
+ setCurrentPath(window.location.pathname);
14
+ };
15
+
16
+ // Listen for navigation events
17
+ window.addEventListener("popstate", handleLocationChange);
18
+
19
+ // Custom event listener for programmatic navigation
20
+ const handleNavigationEvent = () => {
21
+ setTimeout(() => {
22
+ setCurrentPath(window.location.pathname);
23
+ }, 0);
24
+ };
25
+
26
+ // Listen for hash changes too
27
+ window.addEventListener("hashchange", handleLocationChange);
28
+
29
+ // Add custom navigation listener
30
+ window.addEventListener("navigation", handleNavigationEvent);
31
+
32
+ return () => {
33
+ window.removeEventListener("popstate", handleLocationChange);
34
+ window.removeEventListener("hashchange", handleLocationChange);
35
+ window.removeEventListener("navigation", handleNavigationEvent);
36
+ };
37
+ }, []);
38
+
39
+ // Function to determine if a menu item is active
40
+ const isPageActive = React.useCallback(
41
+ (pageUrl: string) => {
42
+ if (!pageUrl) {
43
+ return false;
44
+ }
45
+
46
+ // Handle different URL formats
47
+ if (pageUrl.startsWith("http") || pageUrl.startsWith("//")) {
48
+ // External URLs - not active
49
+ return false;
50
+ }
51
+
52
+ // Remove leading slash if present for comparison
53
+ const cleanUrl = pageUrl.startsWith("/") ? pageUrl : `/${pageUrl}`;
54
+ const cleanCurrentPath = currentPath || "/";
55
+
56
+ // Exact match
57
+ if (cleanUrl === cleanCurrentPath) {
58
+ return true;
59
+ }
60
+
61
+ // For root page, only match exact
62
+ if (cleanUrl === "/" || cleanCurrentPath === "/") {
63
+ return cleanUrl === cleanCurrentPath;
64
+ }
65
+
66
+ // Check if current path starts with the menu item URL (for nested routes)
67
+ return cleanCurrentPath.startsWith(cleanUrl);
68
+ },
69
+ [currentPath],
70
+ );
71
+
72
+ return { isPageActive };
73
+ };
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+
3
+ const MOBILE_BREAKPOINT = 768;
4
+
5
+ export function useIsMobile() {
6
+ const [isMobile, setIsMobile] = React.useState<boolean | undefined>(
7
+ undefined,
8
+ );
9
+
10
+ React.useEffect(() => {
11
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
12
+ const onChange = () => {
13
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
14
+ };
15
+ mql.addEventListener("change", onChange);
16
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
17
+ return () => mql.removeEventListener("change", onChange);
18
+ }, []);
19
+
20
+ return !!isMobile;
21
+ }