@superblocksteam/vite-plugin-file-sync 2.0.114 → 2.0.115-next.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 (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 +51 -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,533 @@
1
+ import { access, readFile, rm, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import bodyParser from "body-parser";
4
+ import { getErrorMeta } from "../util/logger.js";
5
+ import { getFullstackTemplateDir } from "./get-fullstack-template-dir.js";
6
+ import { MIGRATION_CHECKLIST_FILE, markMigrationChecklistCompleted, readMigrationChecklist, retryFailedSeedApiItems, } from "./migration-checklist.js";
7
+ import { migrateToFullstack } from "./restructure.js";
8
+ async function pathExists(path) {
9
+ try {
10
+ await access(path);
11
+ return true;
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ }
17
+ const TARGET_TEMPLATE_NAME = "app-fullstack";
18
+ const MIGRATION_STATE_FILE = "migration-state.json";
19
+ const SCRATCH_DIR_NAME = "scratch";
20
+ let inMemoryStatus = { state: "idle" };
21
+ /**
22
+ * Resolve the phase a browser should see.
23
+ *
24
+ * If the in-memory status is actively driving the three-step flow
25
+ * (`backup` | `restructure` | `flip`) it wins — those phases are only ever
26
+ * live during the synchronous handler, so in-memory is the freshest truth.
27
+ *
28
+ * Otherwise we derive from disk: migration-state.json presence + the
29
+ * checklist. Failed checklist items with `origin === "seed_api"` drive the
30
+ * `done_with_unresolved` terminal phase. Disk is the single source of truth
31
+ * and the only thing that survives a dev-server restart mid-translation.
32
+ */
33
+ async function resolveStatus(appRootDir, opts = {}) {
34
+ const ignoreInMemory = opts.ignoreInMemory ?? false;
35
+ const stateFilePath = join(appRootDir, SCRATCH_DIR_NAME, MIGRATION_STATE_FILE);
36
+ const [hasV2Backup, hasMigrationStateFile] = await Promise.all([
37
+ pathExists(join(appRootDir, SCRATCH_DIR_NAME, "v2-backup")),
38
+ pathExists(stateFilePath),
39
+ ]);
40
+ const checklist = await readMigrationChecklist(appRootDir);
41
+ const checklistPayload = checklist
42
+ ? {
43
+ overallStatus: checklist.overallStatus,
44
+ items: checklist.items,
45
+ lastUpdated: checklist.lastUpdated,
46
+ }
47
+ : undefined;
48
+ if (!ignoreInMemory &&
49
+ (inMemoryStatus.state === "backup" ||
50
+ inMemoryStatus.state === "restructure" ||
51
+ inMemoryStatus.state === "flip" ||
52
+ (inMemoryStatus.state === "failed" && !hasMigrationStateFile))) {
53
+ return {
54
+ ...inMemoryStatus,
55
+ hasV2Backup,
56
+ checklist: checklistPayload,
57
+ };
58
+ }
59
+ if (!hasMigrationStateFile) {
60
+ return {
61
+ state: "idle",
62
+ hasV2Backup,
63
+ checklist: checklistPayload,
64
+ };
65
+ }
66
+ const seedApiItems = checklist?.items.filter((item) => item.origin === "seed_api") ?? [];
67
+ const pendingCount = seedApiItems.filter((item) => item.status === "pending" || item.status === "in_progress").length;
68
+ const failedCount = seedApiItems.filter((item) => item.status === "failed").length;
69
+ const persistedState = await readPersistedMigrationState(stateFilePath);
70
+ const startedAt = inMemoryStatus.startedAt ?? persistedState.startedAt;
71
+ const backupCommitId = inMemoryStatus.backupCommitId ?? persistedState.backupCommitId;
72
+ const migrationCommitId = inMemoryStatus.migrationCommitId ?? persistedState.migrationCommitId;
73
+ if (checklist?.overallStatus === "completed") {
74
+ return {
75
+ state: "done",
76
+ startedAt,
77
+ backupCommitId,
78
+ migrationCommitId,
79
+ hasV2Backup,
80
+ checklist: checklistPayload,
81
+ };
82
+ }
83
+ if (pendingCount > 0) {
84
+ return {
85
+ state: "translating",
86
+ startedAt,
87
+ backupCommitId,
88
+ migrationCommitId,
89
+ hasV2Backup,
90
+ checklist: checklistPayload,
91
+ };
92
+ }
93
+ return {
94
+ state: failedCount > 0 ? "done_with_unresolved" : "done",
95
+ startedAt,
96
+ backupCommitId,
97
+ migrationCommitId,
98
+ hasV2Backup,
99
+ checklist: checklistPayload,
100
+ };
101
+ }
102
+ async function readPersistedMigrationState(stateFilePath) {
103
+ try {
104
+ const raw = await readFile(stateFilePath, "utf-8");
105
+ const parsed = JSON.parse(raw);
106
+ return {
107
+ startedAt: typeof parsed.startedAt === "string" ? parsed.startedAt : undefined,
108
+ sourceTemplateName: typeof parsed.sourceTemplateName === "string"
109
+ ? parsed.sourceTemplateName
110
+ : undefined,
111
+ backupDirPath: typeof parsed.backupDirPath === "string"
112
+ ? parsed.backupDirPath
113
+ : undefined,
114
+ backupCommitId: typeof parsed.backupCommitId === "string"
115
+ ? parsed.backupCommitId
116
+ : undefined,
117
+ migrationCommitId: typeof parsed.migrationCommitId === "string"
118
+ ? parsed.migrationCommitId
119
+ : undefined,
120
+ };
121
+ }
122
+ catch {
123
+ return {};
124
+ }
125
+ }
126
+ async function persistMigrationStateMetadata(stateFilePath, metadata) {
127
+ let parsed;
128
+ try {
129
+ const raw = await readFile(stateFilePath, "utf-8");
130
+ parsed = JSON.parse(raw);
131
+ }
132
+ catch {
133
+ return;
134
+ }
135
+ if (metadata.backupCommitId) {
136
+ parsed.backupCommitId = metadata.backupCommitId;
137
+ }
138
+ if (metadata.migrationCommitId) {
139
+ parsed.migrationCommitId = metadata.migrationCommitId;
140
+ }
141
+ await writeFile(stateFilePath, JSON.stringify(parsed, null, 2) + "\n", "utf-8");
142
+ }
143
+ function setupCorsAndValidateMethod({ req, res, allowedMethod, allowHeaders, }) {
144
+ if (req.method !== allowedMethod && req.method !== "OPTIONS") {
145
+ res.statusCode = 405;
146
+ res.end("Method not allowed");
147
+ return false;
148
+ }
149
+ res.setHeader("Access-Control-Allow-Origin", "*");
150
+ res.setHeader("Access-Control-Allow-Methods", `${allowedMethod}, OPTIONS`);
151
+ if (allowHeaders) {
152
+ res.setHeader("Access-Control-Allow-Headers", allowHeaders);
153
+ }
154
+ if (req.method === "OPTIONS") {
155
+ res.statusCode = 204;
156
+ res.end();
157
+ return false;
158
+ }
159
+ return true;
160
+ }
161
+ export function registerMigrationRoutes(server, options) {
162
+ const { appRootDir, getIsInitialized, syncService, logger } = options;
163
+ // --- GET /sb-migration-status: poll for migration progress --------------
164
+ server.middlewares.use("/sb-migration-status", (req, res, next) => {
165
+ if (!getIsInitialized())
166
+ return next();
167
+ if (!setupCorsAndValidateMethod({ req, res, allowedMethod: "GET" })) {
168
+ return;
169
+ }
170
+ res.setHeader("Content-Type", "application/json");
171
+ void resolveStatus(appRootDir)
172
+ .then((status) => {
173
+ res.statusCode = 200;
174
+ res.end(JSON.stringify(status));
175
+ })
176
+ .catch((error) => {
177
+ logger.error("[migrate-route] /sb-migration-status failed", getErrorMeta(error));
178
+ res.statusCode = 500;
179
+ res.end(JSON.stringify({
180
+ error: error instanceof Error ? error.message : String(error),
181
+ }));
182
+ });
183
+ });
184
+ server.middlewares.use("/sb-migrate-to-fullstack", bodyParser.json({ strict: true }));
185
+ // --- POST /sb-migration-reset-state -------------------------------------
186
+ // Clears migration-status artifacts from disk without mutating app files.
187
+ // Abort reset uses this to prevent the next dev-server boot from
188
+ // re-triggering internal migration turns off stale `scratch/*` state.
189
+ server.middlewares.use("/sb-migration-reset-state", bodyParser.json({ strict: true }));
190
+ server.middlewares.use("/sb-migration-reset-state", (req, res, next) => {
191
+ void (async () => {
192
+ if (!getIsInitialized()) {
193
+ return next();
194
+ }
195
+ if (!setupCorsAndValidateMethod({
196
+ req,
197
+ res,
198
+ allowedMethod: "POST",
199
+ allowHeaders: "Content-Type",
200
+ })) {
201
+ return;
202
+ }
203
+ const scratchDirPath = join(appRootDir, SCRATCH_DIR_NAME);
204
+ const stateFilePath = join(scratchDirPath, MIGRATION_STATE_FILE);
205
+ const checklistPath = join(scratchDirPath, MIGRATION_CHECKLIST_FILE);
206
+ await Promise.all([
207
+ rm(stateFilePath, { force: true }),
208
+ rm(checklistPath, { force: true }),
209
+ ]);
210
+ inMemoryStatus = { state: "idle" };
211
+ const status = await resolveStatus(appRootDir, { ignoreInMemory: true });
212
+ logger.info("[migrate-route] migration state reset requested", {
213
+ state: status.state,
214
+ hasV2Backup: status.hasV2Backup,
215
+ });
216
+ res.statusCode = 200;
217
+ res.setHeader("Content-Type", "application/json");
218
+ res.end(JSON.stringify({
219
+ ok: true,
220
+ status,
221
+ }));
222
+ })().catch((error) => {
223
+ logger.error("[migrate-route] /sb-migration-reset-state failed", getErrorMeta(error));
224
+ res.statusCode = 500;
225
+ res.end(JSON.stringify({
226
+ error: error instanceof Error ? error.message : String(error),
227
+ }));
228
+ });
229
+ });
230
+ server.middlewares.use("/sb-migrate-to-fullstack", (req, res, next) => {
231
+ void (async () => {
232
+ if (!getIsInitialized()) {
233
+ return next();
234
+ }
235
+ if (!setupCorsAndValidateMethod({
236
+ req,
237
+ res,
238
+ allowedMethod: "POST",
239
+ allowHeaders: "Content-Type",
240
+ })) {
241
+ return;
242
+ }
243
+ logger.info("[migrate-route] /sb-migrate-to-fullstack requested");
244
+ res.setHeader("Content-Type", "application/json");
245
+ if (!syncService) {
246
+ res.statusCode = 503;
247
+ res.end(JSON.stringify({
248
+ error: "Migration is unavailable: the dev server was started without a SyncService (no Superblocks credentials?).",
249
+ }));
250
+ return;
251
+ }
252
+ if (await isAlreadyOnFullstack(appRootDir)) {
253
+ res.statusCode = 409;
254
+ res.end(JSON.stringify({
255
+ error: `App appears to already be on template '${TARGET_TEMPLATE_NAME}' (client/ and server/apis/index.ts exist). Migration is a one-way transition; refusing to run again.`,
256
+ }));
257
+ return;
258
+ }
259
+ if (inMemoryStatus.state !== "idle" &&
260
+ inMemoryStatus.state !== "done" &&
261
+ inMemoryStatus.state !== "done_with_unresolved" &&
262
+ inMemoryStatus.state !== "failed") {
263
+ res.statusCode = 409;
264
+ res.end(JSON.stringify({
265
+ error: `A migration is already in progress (state: ${inMemoryStatus.state}). Please wait for it to complete.`,
266
+ }));
267
+ return;
268
+ }
269
+ res.statusCode = 202;
270
+ res.end(JSON.stringify({
271
+ accepted: true,
272
+ message: "Migration started. The editor will reconnect automatically when the new runtime is ready.",
273
+ }));
274
+ const stateFilePath = join(appRootDir, SCRATCH_DIR_NAME, MIGRATION_STATE_FILE);
275
+ let backupCommitId;
276
+ let restructured = false;
277
+ let autoSyncPaused = false;
278
+ let watcherPaused = false;
279
+ inMemoryStatus = {
280
+ state: "backup",
281
+ startedAt: new Date().toISOString(),
282
+ };
283
+ try {
284
+ logger.info("[migrate-route] Step 1: pre-migration backup commit");
285
+ const backup = await syncService.backupCurrentDirectory();
286
+ backupCommitId = backup.commitId;
287
+ if (!backupCommitId) {
288
+ const msg = "Pre-migration backup did not produce a commitId; aborting.";
289
+ logger.error("[migrate-route] " + msg);
290
+ inMemoryStatus = { state: "failed", error: msg };
291
+ return;
292
+ }
293
+ logger.info("[migrate-route] Backup commit created", {
294
+ backupCommitId,
295
+ });
296
+ inMemoryStatus = {
297
+ state: "restructure",
298
+ backupCommitId,
299
+ startedAt: inMemoryStatus.startedAt,
300
+ };
301
+ syncService.pauseAutoSync();
302
+ autoSyncPaused = true;
303
+ logger.info("[migrate-route] Pausing Vite file watcher");
304
+ server.watcher.unwatch(appRootDir);
305
+ watcherPaused = true;
306
+ logger.info("[migrate-route] Step 2: restructuring local tree");
307
+ await migrateToFullstack({
308
+ appRootDirPath: appRootDir,
309
+ templateSourceDirPath: getFullstackTemplateDir(),
310
+ logger,
311
+ });
312
+ restructured = true;
313
+ await persistMigrationStateMetadata(stateFilePath, {
314
+ backupCommitId,
315
+ });
316
+ logger.info("[migrate-route] Local restructure complete");
317
+ inMemoryStatus = {
318
+ state: "flip",
319
+ backupCommitId,
320
+ startedAt: inMemoryStatus.startedAt,
321
+ };
322
+ logger.info("[migrate-route] Step 3: atomic server-side template flip");
323
+ const flip = await syncService.flipTemplate({
324
+ targetTemplateName: TARGET_TEMPLATE_NAME,
325
+ });
326
+ await persistMigrationStateMetadata(stateFilePath, {
327
+ backupCommitId,
328
+ migrationCommitId: flip.commitId,
329
+ });
330
+ logger.info("[migrate-route] Template flip complete", {
331
+ migrationCommitId: flip.commitId,
332
+ });
333
+ // After the flip, the SABS pod restarts and this process is
334
+ // replaced. If by chance we survive, leave in-memory status at
335
+ // `done` — the GET endpoint will derive `translating` /
336
+ // `done_with_unresolved` from disk once Clark starts work.
337
+ inMemoryStatus = {
338
+ state: "done",
339
+ backupCommitId,
340
+ migrationCommitId: flip.commitId,
341
+ startedAt: inMemoryStatus.startedAt,
342
+ };
343
+ }
344
+ catch (error) {
345
+ const errorMsg = error instanceof Error ? error.message : String(error);
346
+ logger.error("[migrate-route] Migration failed", getErrorMeta(error));
347
+ logger.info("[migrate-route] Migration context", {
348
+ stage: restructured
349
+ ? "flip"
350
+ : backupCommitId
351
+ ? "restructure"
352
+ : "backup",
353
+ backupCommitId,
354
+ restructured,
355
+ });
356
+ inMemoryStatus = {
357
+ state: "failed",
358
+ error: `Migration failed at ${restructured ? "flip" : backupCommitId ? "restructure" : "backup"} stage: ${errorMsg}`,
359
+ backupCommitId,
360
+ startedAt: inMemoryStatus.startedAt,
361
+ };
362
+ }
363
+ finally {
364
+ if (autoSyncPaused) {
365
+ try {
366
+ syncService.resumeAutoSync();
367
+ }
368
+ catch (error) {
369
+ logger.warn("[migrate-route] Failed to resume autosync after migration attempt", {
370
+ error: error instanceof Error ? error.message : String(error),
371
+ });
372
+ }
373
+ }
374
+ if (watcherPaused) {
375
+ try {
376
+ server.watcher.add(appRootDir);
377
+ }
378
+ catch (error) {
379
+ logger.warn("[migrate-route] Failed to rewatch app root after migration attempt", {
380
+ error: error instanceof Error ? error.message : String(error),
381
+ });
382
+ }
383
+ }
384
+ }
385
+ })();
386
+ });
387
+ // --- POST /sb-migration-retry-unresolved --------------------------------
388
+ server.middlewares.use("/sb-migration-retry-unresolved", bodyParser.json({ strict: true }));
389
+ server.middlewares.use("/sb-migration-retry-unresolved", (req, res, next) => {
390
+ void (async () => {
391
+ if (!getIsInitialized())
392
+ return next();
393
+ if (!setupCorsAndValidateMethod({
394
+ req,
395
+ res,
396
+ allowedMethod: "POST",
397
+ allowHeaders: "Content-Type",
398
+ })) {
399
+ return;
400
+ }
401
+ res.setHeader("Content-Type", "application/json");
402
+ try {
403
+ const result = await retryFailedSeedApiItems(appRootDir);
404
+ logger.info("[migrate-route] retry-unresolved flipped items", {
405
+ retriedCount: result.retriedCount,
406
+ });
407
+ const status = await resolveStatus(appRootDir, {
408
+ ignoreInMemory: true,
409
+ });
410
+ res.statusCode = 200;
411
+ res.end(JSON.stringify({
412
+ ok: true,
413
+ retriedCount: result.retriedCount,
414
+ status,
415
+ }));
416
+ }
417
+ catch (error) {
418
+ logger.error("[migrate-route] /sb-migration-retry-unresolved failed", getErrorMeta(error));
419
+ res.statusCode = 500;
420
+ res.end(JSON.stringify({
421
+ error: error instanceof Error ? error.message : String(error),
422
+ }));
423
+ }
424
+ })();
425
+ });
426
+ server.middlewares.use("/sb-migration-complete", bodyParser.json({ strict: true }));
427
+ server.middlewares.use("/sb-migration-complete", (req, res, next) => {
428
+ void (async () => {
429
+ if (!getIsInitialized()) {
430
+ return next();
431
+ }
432
+ if (!setupCorsAndValidateMethod({
433
+ req,
434
+ res,
435
+ allowedMethod: "POST",
436
+ allowHeaders: "Content-Type",
437
+ })) {
438
+ return;
439
+ }
440
+ if (!syncService) {
441
+ res.statusCode = 503;
442
+ res.end(JSON.stringify({
443
+ error: "Migration completion is unavailable: the dev server was started without a SyncService.",
444
+ }));
445
+ return;
446
+ }
447
+ const status = await resolveStatus(appRootDir, { ignoreInMemory: true });
448
+ logger.info("[migrate-route] completion precheck status", {
449
+ state: status.state,
450
+ hasV2Backup: status.hasV2Backup,
451
+ });
452
+ if (status.state !== "done") {
453
+ res.statusCode = 409;
454
+ res.end(JSON.stringify({
455
+ error: "Migration can only be completed after all APIs are translated successfully.",
456
+ state: status.state,
457
+ }));
458
+ return;
459
+ }
460
+ const checklist = await readMigrationChecklist(appRootDir);
461
+ if (!checklist) {
462
+ res.statusCode = 404;
463
+ res.end(JSON.stringify({
464
+ error: "Migration checklist not found.",
465
+ }));
466
+ return;
467
+ }
468
+ const completedChecklist = checklist.overallStatus === "completed"
469
+ ? checklist
470
+ : await markMigrationChecklistCompleted({
471
+ appRootDirPath: appRootDir,
472
+ });
473
+ if (checklist.overallStatus !== "completed") {
474
+ logger.info("[migrate-route] marked checklist as completed");
475
+ }
476
+ await rm(join(appRootDir, SCRATCH_DIR_NAME, "v2-backup"), {
477
+ recursive: true,
478
+ force: true,
479
+ });
480
+ await rm(join(appRootDir, SCRATCH_DIR_NAME), {
481
+ recursive: true,
482
+ force: true,
483
+ });
484
+ logger.info("[migrate-route] removed scratch directory");
485
+ const completionCommit = await syncService.commitLocalDraftChanges("migrate:complete");
486
+ if (!completionCommit?.commitId) {
487
+ throw new Error("Migration completion checkpoint was not created; aborting completion flow.");
488
+ }
489
+ logger.info("[migrate-route] Completion checkpoint created", {
490
+ completionCommitId: completionCommit.commitId,
491
+ });
492
+ inMemoryStatus = {
493
+ state: "done",
494
+ startedAt: status.startedAt,
495
+ backupCommitId: status.backupCommitId,
496
+ migrationCommitId: status.migrationCommitId,
497
+ };
498
+ const updatedStatus = {
499
+ state: "done",
500
+ startedAt: status.startedAt,
501
+ backupCommitId: status.backupCommitId,
502
+ migrationCommitId: status.migrationCommitId,
503
+ hasV2Backup: false,
504
+ checklist: {
505
+ overallStatus: "completed",
506
+ items: completedChecklist.items,
507
+ lastUpdated: completedChecklist.lastUpdated,
508
+ },
509
+ };
510
+ res.statusCode = 200;
511
+ res.setHeader("Content-Type", "application/json");
512
+ res.end(JSON.stringify({
513
+ ok: true,
514
+ completionCommitId: completionCommit.commitId,
515
+ status: updatedStatus,
516
+ }));
517
+ })().catch((error) => {
518
+ logger.error("[migrate-route] /sb-migration-complete failed", getErrorMeta(error));
519
+ res.statusCode = 500;
520
+ res.end(JSON.stringify({
521
+ error: error instanceof Error ? error.message : String(error),
522
+ }));
523
+ });
524
+ });
525
+ }
526
+ async function isAlreadyOnFullstack(appRootDir) {
527
+ const [hasClient, hasServerApisIndex] = await Promise.all([
528
+ pathExists(join(appRootDir, "client")),
529
+ pathExists(join(appRootDir, "server", "apis", "index.ts")),
530
+ ]);
531
+ return hasClient && hasServerApisIndex;
532
+ }
533
+ //# sourceMappingURL=migration-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-routes.js","sourceRoot":"","sources":["../../src/migration/migration-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import type { Logger } from "../util/logger.js";
2
+ import { MIGRATION_CHECKLIST_FILE } from "./migration-checklist.js";
3
+ /**
4
+ * Deterministic v2 -> v3 restructure on the local app filesystem.
5
+ *
6
+ * This runs on the user's machine inside the vite dev server process, so it
7
+ * is allowed to mutate the working tree directly. It is intentionally pure
8
+ * filesystem work -- no network, no git. The orchestrating HTTP route is
9
+ * responsible for sandwiching this between the pre-migration backup commit
10
+ * (which snapshots what is about to be moved) and the atomic template flip
11
+ * (which asks the server to update application_v2.template_name and spin a
12
+ * fresh SABS pod).
13
+ *
14
+ * High-level flow:
15
+ * 1. Move every top-level entry (except guarded dirs) into
16
+ * `scratch/v2-backup/`. This is our only rollback surface on disk.
17
+ * 2. Copy the bundled `app-fullstack` template into the app root.
18
+ * 3. Remap user content from the backup onto the new layout:
19
+ * - pages/<Page>/index.tsx (and siblings besides apis/) -> client/pages
20
+ * - non-stock components -> client/components (fullstack stock wins)
21
+ * - lib/utils.ts and index.css only if they diverge from template
22
+ * 4. For each v2 api.yaml, write a stub `server/apis/<name>/api.ts` and
23
+ * regenerate `server/apis/index.ts` so useTypedApi type inference
24
+ * lights up immediately.
25
+ * 5. Write `scratch/migration-state.json` -- the signal file Clark uses
26
+ * to resume a migration and to render the API checklist.
27
+ */
28
+ export interface MigrateToFullstackArgs {
29
+ /** Absolute path to the user's app root (the vite dev server's `root`). */
30
+ appRootDirPath: string;
31
+ /**
32
+ * Absolute path to the bundled `app-fullstack` template tree. In practice
33
+ * this comes from `getFullstackTemplateDir()`; callers pass it explicitly
34
+ * so tests can point at a fixture.
35
+ */
36
+ templateSourceDirPath: string;
37
+ logger: Logger;
38
+ }
39
+ export interface MigrateToFullstackResult {
40
+ scratchDirPath: string;
41
+ backupDirPath: string;
42
+ restructuredFiles: number;
43
+ apiStubs: string[];
44
+ stateFilePath: string;
45
+ migrationChecklistFilePath: string;
46
+ }
47
+ export declare const SCRATCH_DIR_NAME = "scratch";
48
+ export declare const BACKUP_SUBDIR_NAME = "v2-backup";
49
+ export declare const MIGRATION_STATE_FILE = "migration-state.json";
50
+ export { MIGRATION_CHECKLIST_FILE };
51
+ export declare const MIGRATION_STATE_VERSION = 1;
52
+ export interface MigrationState {
53
+ version: typeof MIGRATION_STATE_VERSION;
54
+ startedAt: string;
55
+ targetTemplateName: "app-fullstack";
56
+ sourceTemplateName: string;
57
+ backupDirPath: string;
58
+ /**
59
+ * Filled by migration routes once backup/flip commits are known so UI
60
+ * actions (e.g. abort/rollback) can still recover IDs after restart.
61
+ */
62
+ backupCommitId?: string;
63
+ migrationCommitId?: string;
64
+ apiChecklist: Array<{
65
+ /** Name from metadata.name in api.yaml (or derived from directory). */
66
+ name: string;
67
+ /** Relative path of the original api.yaml under the backup dir. */
68
+ yamlPathInBackup: string;
69
+ /** Relative path of the stub file written into the new layout. */
70
+ stubPath: string;
71
+ /** Free-form status field Clark flips as it ports logic. */
72
+ status: "stub";
73
+ }>;
74
+ }
75
+ export declare function migrateToFullstack(args: MigrateToFullstackArgs): Promise<MigrateToFullstackResult>;
76
+ //# sourceMappingURL=restructure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restructure.d.ts","sourceRoot":"","sources":["../../src/migration/restructure.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAEL,wBAAwB,EAEzB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,cAAc,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,0BAA0B,EAAE,MAAM,CAAC;CACpC;AA+DD,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,uBAAuB,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,eAAe,CAAC;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,KAAK,CAAC;QAClB,uEAAuE;QACvE,IAAI,EAAE,MAAM,CAAC;QACb,mEAAmE;QACnE,gBAAgB,EAAE,MAAM,CAAC;QACzB,kEAAkE;QAClE,QAAQ,EAAE,MAAM,CAAC;QACjB,4DAA4D;QAC5D,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,wBAAwB,CAAC,CAyFnC"}