@superblocksteam/vite-plugin-file-sync 2.0.117 → 2.0.118-next.0

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 (316) hide show
  1. package/dist/ai-service/agent/middleware.d.ts.map +1 -1
  2. package/dist/ai-service/agent/middleware.js +2 -5
  3. package/dist/ai-service/agent/middleware.js.map +1 -1
  4. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  5. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +17 -11
  6. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  7. package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts +17 -0
  8. package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts.map +1 -0
  9. package/dist/ai-service/agent/prompts/build-security-scan-prompt.js +219 -0
  10. package/dist/ai-service/agent/prompts/build-security-scan-prompt.js.map +1 -0
  11. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  12. package/dist/ai-service/agent/tool-message-utils.js +27 -3
  13. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  14. package/dist/ai-service/agent/tools/apis/api-comparator.d.ts +36 -0
  15. package/dist/ai-service/agent/tools/apis/api-comparator.d.ts.map +1 -0
  16. package/dist/ai-service/agent/tools/apis/api-comparator.js +369 -0
  17. package/dist/ai-service/agent/tools/apis/api-comparator.js.map +1 -0
  18. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts +4 -0
  19. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts.map +1 -1
  20. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +16 -5
  21. package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -1
  22. package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts +1 -1
  23. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.d.ts.map +1 -1
  24. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js +18 -13
  25. package/dist/ai-service/agent/tools/apis/get-sdk-api-docs.js.map +1 -1
  26. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
  27. package/dist/ai-service/agent/tools/apis/test-api.js +138 -2
  28. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  29. package/dist/ai-service/agent/tools/build-copy-directory.d.ts +12 -0
  30. package/dist/ai-service/agent/tools/build-copy-directory.d.ts.map +1 -0
  31. package/dist/ai-service/agent/tools/build-copy-directory.js +51 -0
  32. package/dist/ai-service/agent/tools/build-copy-directory.js.map +1 -0
  33. package/dist/ai-service/agent/tools/build-copy-file.d.ts +12 -0
  34. package/dist/ai-service/agent/tools/build-copy-file.d.ts.map +1 -0
  35. package/dist/ai-service/agent/tools/build-copy-file.js +52 -0
  36. package/dist/ai-service/agent/tools/build-copy-file.js.map +1 -0
  37. package/dist/ai-service/agent/tools/build-copy-utils.d.ts +57 -0
  38. package/dist/ai-service/agent/tools/build-copy-utils.d.ts.map +1 -0
  39. package/dist/ai-service/agent/tools/build-copy-utils.js +37 -0
  40. package/dist/ai-service/agent/tools/build-copy-utils.js.map +1 -0
  41. package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -1
  42. package/dist/ai-service/agent/tools/build-debug.js +17 -5
  43. package/dist/ai-service/agent/tools/build-debug.js.map +1 -1
  44. package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
  45. package/dist/ai-service/agent/tools/build-finalize.js +42 -50
  46. package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
  47. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +7 -5
  48. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts.map +1 -1
  49. package/dist/ai-service/agent/tools/build-manage-checklist.js +54 -108
  50. package/dist/ai-service/agent/tools/build-manage-checklist.js.map +1 -1
  51. package/dist/ai-service/agent/tools/databases/dev-database.d.ts +103 -0
  52. package/dist/ai-service/agent/tools/databases/dev-database.d.ts.map +1 -0
  53. package/dist/ai-service/agent/tools/databases/dev-database.js +117 -0
  54. package/dist/ai-service/agent/tools/databases/dev-database.js.map +1 -0
  55. package/dist/ai-service/agent/tools/get-logs.d.ts +1 -1
  56. package/dist/ai-service/agent/tools/index.d.ts +4 -0
  57. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  58. package/dist/ai-service/agent/tools/index.js +4 -0
  59. package/dist/ai-service/agent/tools/index.js.map +1 -1
  60. package/dist/ai-service/agent/tools/integrations/delete-integration.d.ts +18 -0
  61. package/dist/ai-service/agent/tools/integrations/delete-integration.d.ts.map +1 -0
  62. package/dist/ai-service/agent/tools/integrations/delete-integration.js +99 -0
  63. package/dist/ai-service/agent/tools/integrations/delete-integration.js.map +1 -0
  64. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +1 -1
  65. package/dist/ai-service/agent/tools/integrations/index.d.ts +1 -0
  66. package/dist/ai-service/agent/tools/integrations/index.d.ts.map +1 -1
  67. package/dist/ai-service/agent/tools/integrations/index.js +1 -0
  68. package/dist/ai-service/agent/tools/integrations/index.js.map +1 -1
  69. package/dist/ai-service/agent/tools/integrations/metadata.d.ts.map +1 -1
  70. package/dist/ai-service/agent/tools/integrations/metadata.js +30 -4
  71. package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -1
  72. package/dist/ai-service/agent/tools/report-security-findings.d.ts +163 -0
  73. package/dist/ai-service/agent/tools/report-security-findings.d.ts.map +1 -0
  74. package/dist/ai-service/agent/tools/report-security-findings.js +52 -0
  75. package/dist/ai-service/agent/tools/report-security-findings.js.map +1 -0
  76. package/dist/ai-service/agent/tools.d.ts +2 -0
  77. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  78. package/dist/ai-service/agent/tools.js +74 -6
  79. package/dist/ai-service/agent/tools.js.map +1 -1
  80. package/dist/ai-service/agent/tools2/example.js +1 -1
  81. package/dist/ai-service/agent/tools2/example.js.map +1 -1
  82. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts +7 -0
  83. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts.map +1 -1
  84. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js +11 -1
  85. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js.map +1 -1
  86. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.d.ts +7 -0
  87. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.d.ts.map +1 -1
  88. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.js +3 -1
  89. package/dist/ai-service/agent/tools2/tools/ask-searchable-dropdown.js.map +1 -1
  90. package/dist/ai-service/agent/tools2/tools/download-attachments.d.ts.map +1 -1
  91. package/dist/ai-service/agent/tools2/tools/download-attachments.js +4 -3
  92. package/dist/ai-service/agent/tools2/tools/download-attachments.js.map +1 -1
  93. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +9 -0
  94. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  95. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +15 -1
  96. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  97. package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts.map +1 -1
  98. package/dist/ai-service/agent/tools2/tools/list-attachments.js +8 -4
  99. package/dist/ai-service/agent/tools2/tools/list-attachments.js.map +1 -1
  100. package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.d.ts +21 -4
  101. package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.d.ts.map +1 -1
  102. package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.js +87 -11
  103. package/dist/ai-service/agent/tools2/tools/spawn-coding-subagents.js.map +1 -1
  104. package/dist/ai-service/agent/tools2/types.d.ts +10 -2
  105. package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
  106. package/dist/ai-service/agent/tools2/types.js.map +1 -1
  107. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  108. package/dist/ai-service/agent/utils.js +2 -0
  109. package/dist/ai-service/agent/utils.js.map +1 -1
  110. package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts +1 -1
  111. package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts.map +1 -1
  112. package/dist/ai-service/app-interface/filesystem/draft-manager.js.map +1 -1
  113. package/dist/ai-service/app-interface/npm-registry.d.ts +123 -0
  114. package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -0
  115. package/dist/ai-service/app-interface/npm-registry.js +395 -0
  116. package/dist/ai-service/app-interface/npm-registry.js.map +1 -0
  117. package/dist/ai-service/app-interface/shell.d.ts +38 -0
  118. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  119. package/dist/ai-service/app-interface/shell.js +222 -1
  120. package/dist/ai-service/app-interface/shell.js.map +1 -1
  121. package/dist/ai-service/attachments/uploaded-content-part.d.ts +5 -0
  122. package/dist/ai-service/attachments/uploaded-content-part.d.ts.map +1 -1
  123. package/dist/ai-service/attachments/uploaded-content-part.js +31 -21
  124. package/dist/ai-service/attachments/uploaded-content-part.js.map +1 -1
  125. package/dist/ai-service/checklist/persisted-checklist-store.d.ts +105 -0
  126. package/dist/ai-service/checklist/persisted-checklist-store.d.ts.map +1 -0
  127. package/dist/ai-service/checklist/persisted-checklist-store.js +498 -0
  128. package/dist/ai-service/checklist/persisted-checklist-store.js.map +1 -0
  129. package/dist/ai-service/context-download.d.ts +14 -1
  130. package/dist/ai-service/context-download.d.ts.map +1 -1
  131. package/dist/ai-service/context-download.js +80 -0
  132. package/dist/ai-service/context-download.js.map +1 -1
  133. package/dist/ai-service/dev-database-client.d.ts +90 -0
  134. package/dist/ai-service/dev-database-client.d.ts.map +1 -0
  135. package/dist/ai-service/dev-database-client.js +166 -0
  136. package/dist/ai-service/dev-database-client.js.map +1 -0
  137. package/dist/ai-service/features.d.ts +16 -0
  138. package/dist/ai-service/features.d.ts.map +1 -1
  139. package/dist/ai-service/features.js +10 -0
  140. package/dist/ai-service/features.js.map +1 -1
  141. package/dist/ai-service/index.d.ts +10 -1
  142. package/dist/ai-service/index.d.ts.map +1 -1
  143. package/dist/ai-service/index.js +80 -13
  144. package/dist/ai-service/index.js.map +1 -1
  145. package/dist/ai-service/integrations/store.d.ts +5 -0
  146. package/dist/ai-service/integrations/store.d.ts.map +1 -1
  147. package/dist/ai-service/integrations/store.js +19 -2
  148. package/dist/ai-service/integrations/store.js.map +1 -1
  149. package/dist/ai-service/judge/tools/submit-feedback.d.ts +1 -1
  150. package/dist/ai-service/llm/context-v2/manager.d.ts +8 -1
  151. package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -1
  152. package/dist/ai-service/llm/context-v2/manager.js +17 -1
  153. package/dist/ai-service/llm/context-v2/manager.js.map +1 -1
  154. package/dist/ai-service/llm/context-v2/prompts/compaction.d.ts +1 -1
  155. package/dist/ai-service/llm/context-v2/prompts/compaction.d.ts.map +1 -1
  156. package/dist/ai-service/llm/context-v2/prompts/compaction.js +3 -3
  157. package/dist/ai-service/llm/impl/clark.d.ts.map +1 -1
  158. package/dist/ai-service/llm/impl/clark.js +3 -3
  159. package/dist/ai-service/llm/impl/clark.js.map +1 -1
  160. package/dist/ai-service/llm/provider.d.ts.map +1 -1
  161. package/dist/ai-service/llm/provider.js +22 -7
  162. package/dist/ai-service/llm/provider.js.map +1 -1
  163. package/dist/ai-service/llm/types.d.ts +14 -1
  164. package/dist/ai-service/llm/types.d.ts.map +1 -1
  165. package/dist/ai-service/llmobs/context-registry.d.ts +62 -0
  166. package/dist/ai-service/llmobs/context-registry.d.ts.map +1 -0
  167. package/dist/ai-service/llmobs/context-registry.js +115 -0
  168. package/dist/ai-service/llmobs/context-registry.js.map +1 -0
  169. package/dist/ai-service/llmobs/otel-exporter.d.ts +23 -0
  170. package/dist/ai-service/llmobs/otel-exporter.d.ts.map +1 -1
  171. package/dist/ai-service/llmobs/otel-exporter.js +112 -10
  172. package/dist/ai-service/llmobs/otel-exporter.js.map +1 -1
  173. package/dist/ai-service/llmobs/tracer.d.ts +7 -0
  174. package/dist/ai-service/llmobs/tracer.d.ts.map +1 -1
  175. package/dist/ai-service/llmobs/tracer.js +38 -0
  176. package/dist/ai-service/llmobs/tracer.js.map +1 -1
  177. package/dist/ai-service/skills/system/_registry.generated.d.ts.map +1 -1
  178. package/dist/ai-service/skills/system/_registry.generated.js +2 -0
  179. package/dist/ai-service/skills/system/_registry.generated.js.map +1 -1
  180. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts +1 -1
  181. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts.map +1 -1
  182. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js +2 -0
  183. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js.map +1 -1
  184. package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.d.ts +1 -1
  185. package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.d.ts.map +1 -1
  186. package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.js +3 -1
  187. package/dist/ai-service/skills/system/superblocks-migration/references/focused-debug.generated.js.map +1 -1
  188. package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.d.ts +1 -1
  189. package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.d.ts.map +1 -1
  190. package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.js +29 -0
  191. package/dist/ai-service/skills/system/superblocks-migration/references/yaml-block-mapping.generated.js.map +1 -1
  192. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts +1 -1
  193. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts.map +1 -1
  194. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js +112 -6
  195. package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js.map +1 -1
  196. package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.d.ts +2 -0
  197. package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.d.ts.map +1 -0
  198. package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.js +107 -0
  199. package/dist/ai-service/skills/system/third-party-migration/claude-design.generated.js.map +1 -0
  200. package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts +1 -1
  201. package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts.map +1 -1
  202. package/dist/ai-service/skills/system/third-party-migration/skill.generated.js +33 -3
  203. package/dist/ai-service/skills/system/third-party-migration/skill.generated.js.map +1 -1
  204. package/dist/ai-service/state-machine/clark-fsm.d.ts +21 -0
  205. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  206. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  207. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  208. package/dist/ai-service/state-machine/handlers/agent-planning.js +79 -6
  209. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  210. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts +10 -0
  211. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  212. package/dist/ai-service/state-machine/handlers/llm-generating.js +69 -41
  213. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  214. package/dist/ai-service/state-machine/helpers/peer.d.ts +35 -7
  215. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
  216. package/dist/ai-service/state-machine/helpers/peer.js +81 -15
  217. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
  218. package/dist/ai-service/template-renderer.d.ts +14 -1
  219. package/dist/ai-service/template-renderer.d.ts.map +1 -1
  220. package/dist/ai-service/template-renderer.js +144 -41
  221. package/dist/ai-service/template-renderer.js.map +1 -1
  222. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +2 -2
  223. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
  224. package/dist/ai-service/transform/api-builder/to-yaml-transformer.js +2 -2
  225. package/dist/ai-service/transform/api-builder/to-yaml-transformer.js.map +1 -1
  226. package/dist/draft-interface.d.ts +1 -1
  227. package/dist/draft-interface.d.ts.map +1 -1
  228. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  229. package/dist/file-sync-vite-plugin.js +34 -27
  230. package/dist/file-sync-vite-plugin.js.map +1 -1
  231. package/dist/file-system-helpers.d.ts +4 -0
  232. package/dist/file-system-helpers.d.ts.map +1 -1
  233. package/dist/file-system-helpers.js +13 -0
  234. package/dist/file-system-helpers.js.map +1 -1
  235. package/dist/inject-index-vite-plugin.d.ts.map +1 -1
  236. package/dist/inject-index-vite-plugin.js +15 -1
  237. package/dist/inject-index-vite-plugin.js.map +1 -1
  238. package/dist/injected-index.d.ts.map +1 -1
  239. package/dist/injected-index.js +15 -1
  240. package/dist/injected-index.js.map +1 -1
  241. package/dist/lock-service/index.d.ts.map +1 -1
  242. package/dist/lock-service/index.js +8 -10
  243. package/dist/lock-service/index.js.map +1 -1
  244. package/dist/migration/migration-checklist.d.ts +51 -2
  245. package/dist/migration/migration-checklist.d.ts.map +1 -1
  246. package/dist/migration/migration-checklist.js +79 -151
  247. package/dist/migration/migration-checklist.js.map +1 -1
  248. package/dist/migration/migration-routes.d.ts.map +1 -1
  249. package/dist/migration/migration-routes.js +290 -30
  250. package/dist/migration/migration-routes.js.map +1 -1
  251. package/dist/migration/migration-verification.d.ts +206 -0
  252. package/dist/migration/migration-verification.d.ts.map +1 -0
  253. package/dist/migration/migration-verification.js +1006 -0
  254. package/dist/migration/migration-verification.js.map +1 -0
  255. package/dist/migration/restructure.d.ts +9 -2
  256. package/dist/migration/restructure.d.ts.map +1 -1
  257. package/dist/migration/restructure.js +116 -5
  258. package/dist/migration/restructure.js.map +1 -1
  259. package/dist/migration/unsupported-integrations.d.ts.map +1 -1
  260. package/dist/migration/unsupported-integrations.js +9 -0
  261. package/dist/migration/unsupported-integrations.js.map +1 -1
  262. package/dist/migration/yaml-walk.d.ts +18 -0
  263. package/dist/migration/yaml-walk.d.ts.map +1 -0
  264. package/dist/migration/yaml-walk.js +45 -0
  265. package/dist/migration/yaml-walk.js.map +1 -0
  266. package/dist/migration-templates/app-fullstack/client/components/hooks/use-mobile.ts +1 -1
  267. package/dist/migration-templates/app-fullstack/client/components/ui/accordion.tsx +1 -1
  268. package/dist/migration-templates/app-fullstack/client/components/ui/avatar.tsx +1 -1
  269. package/dist/migration-templates/app-fullstack/client/components/ui/breadcrumb.tsx +1 -1
  270. package/dist/migration-templates/app-fullstack/client/components/ui/button.tsx +1 -1
  271. package/dist/migration-templates/app-fullstack/client/components/ui/calendar.tsx +1 -1
  272. package/dist/migration-templates/app-fullstack/client/components/ui/chart.tsx +1 -1
  273. package/dist/migration-templates/app-fullstack/client/components/ui/file-dropzone.tsx +1 -1
  274. package/dist/migration-templates/app-fullstack/client/components/ui/file-input.tsx +1 -1
  275. package/dist/migration-templates/app-fullstack/client/components/ui/hover-card.tsx +1 -1
  276. package/dist/migration-templates/app-fullstack/client/components/ui/image.tsx +1 -1
  277. package/dist/migration-templates/app-fullstack/client/components/ui/input.tsx +1 -1
  278. package/dist/migration-templates/app-fullstack/client/components/ui/label.tsx +1 -1
  279. package/dist/migration-templates/app-fullstack/client/components/ui/navigation-menu.tsx +1 -1
  280. package/dist/migration-templates/app-fullstack/client/components/ui/pagination.tsx +1 -1
  281. package/dist/migration-templates/app-fullstack/client/components/ui/popover.tsx +1 -1
  282. package/dist/migration-templates/app-fullstack/client/components/ui/progress.tsx +1 -1
  283. package/dist/migration-templates/app-fullstack/client/components/ui/select.tsx +1 -1
  284. package/dist/migration-templates/app-fullstack/client/components/ui/sheet.tsx +1 -1
  285. package/dist/migration-templates/app-fullstack/client/components/ui/sidebar.tsx +1 -1
  286. package/dist/migration-templates/app-fullstack/client/components/ui/slider.tsx +1 -1
  287. package/dist/migration-templates/app-fullstack/client/components/ui/switch.tsx +1 -1
  288. package/dist/migration-templates/app-fullstack/client/components/ui/table.tsx +1 -1
  289. package/dist/migration-templates/app-fullstack/client/components/ui/tabs.tsx +1 -1
  290. package/dist/migration-templates/app-fullstack/client/components/ui/toggle-group.tsx +1 -1
  291. package/dist/migration-templates/app-fullstack/client/components/ui/toggle.tsx +1 -1
  292. package/dist/migration-templates/app-fullstack/client/components/ui/tooltip.tsx +1 -1
  293. package/dist/socket-manager.d.ts.map +1 -1
  294. package/dist/socket-manager.js +8 -0
  295. package/dist/socket-manager.js.map +1 -1
  296. package/dist/sync-service/hash-dir-tree.d.ts +1 -1
  297. package/dist/sync-service/hash-dir-tree.d.ts.map +1 -1
  298. package/dist/sync-service/hash-dir-tree.js +3 -3
  299. package/dist/sync-service/hash-dir-tree.js.map +1 -1
  300. package/dist/sync-service/index.d.ts +0 -14
  301. package/dist/sync-service/index.d.ts.map +1 -1
  302. package/dist/sync-service/index.js +1 -44
  303. package/dist/sync-service/index.js.map +1 -1
  304. package/dist/sync-service/list-dir.d.ts +1 -1
  305. package/dist/sync-service/list-dir.d.ts.map +1 -1
  306. package/dist/sync-service/list-dir.js +36 -3
  307. package/dist/sync-service/list-dir.js.map +1 -1
  308. package/dist/sync-service/snapshot/take-snapshot.d.ts +1 -1
  309. package/dist/sync-service/snapshot/take-snapshot.d.ts.map +1 -1
  310. package/dist/sync-service/snapshot/take-snapshot.js +4 -8
  311. package/dist/sync-service/snapshot/take-snapshot.js.map +1 -1
  312. package/dist/util/log-sanitizer.d.ts +6 -5
  313. package/dist/util/log-sanitizer.d.ts.map +1 -1
  314. package/dist/util/log-sanitizer.js +21 -6
  315. package/dist/util/log-sanitizer.js.map +1 -1
  316. package/package.json +9 -8
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Scopes whose existing `<scope>:registry=` lines in a project / pod `.npmrc`
3
+ * must survive `writeNpmrc` calls. Shared between AppShell, TemplateRenderer,
4
+ * and any other call site so a new scope only needs to be added in one place.
5
+ *
6
+ * `setup-template.sh` bakes
7
+ * `@superblocksteam:registry=https://npm.pkg.github.com/` into the template
8
+ * `.npmrc` for ephemeral environments; we must not clobber it.
9
+ */
10
+ export declare const PRESERVE_NPMRC_SCOPES: string[];
11
+ /**
12
+ * Configuration for an npm registry sourced from environment variables.
13
+ *
14
+ * The "single-host MVP" surface is `url` + `token`; `scopes` is plumbed for
15
+ * forward-compatibility (two-host setups like @superblocksteam on GitHub
16
+ * Packages plus third-party deps on Artifactory) but admin UX is deferred.
17
+ */
18
+ export interface NpmRegistryConfig {
19
+ /** Default registry URL (e.g. https://artifactory.example.com/api/npm/npm-virtual/) */
20
+ url: string;
21
+ /** Optional auth token for the default registry host */
22
+ token?: string;
23
+ /**
24
+ * Optional per-scope registry mappings. e.g.
25
+ * { "@superblocksteam": "https://npm.pkg.github.com/" }
26
+ */
27
+ scopes?: Record<string, string>;
28
+ /**
29
+ * When true, AppShell refuses to run npm if the registry env is unset.
30
+ * Plumbed for the upcoming `SUPERBLOCKS_REQUIRE_PRIVATE_REGISTRY` enforcement
31
+ * branch; not yet read by any consumer in this PR.
32
+ */
33
+ require?: boolean;
34
+ }
35
+ /**
36
+ * Reads the npm registry env contract and returns a typed config, or undefined
37
+ * when `SUPERBLOCKS_NPM_REGISTRY` is unset or invalid (preserves SaaS / local
38
+ * behavior). Invalid values are logged as warnings and treated as unset rather
39
+ * than half-broken (avoids landing a `.npmrc` with a malformed `registry=`
40
+ * line and no `_authToken=`).
41
+ *
42
+ * Env contract:
43
+ * - SUPERBLOCKS_NPM_REGISTRY: full registry URL
44
+ * - SUPERBLOCKS_NPM_REGISTRY_TOKEN: optional auth token
45
+ * - SUPERBLOCKS_NPM_REGISTRY_SCOPES_JSON: optional JSON map of scope -> URL
46
+ * - SUPERBLOCKS_REQUIRE_PRIVATE_REGISTRY: opt-in strict mode (default off)
47
+ */
48
+ export declare function getNpmRegistryConfig(env?: NodeJS.ProcessEnv): NpmRegistryConfig | undefined;
49
+ export interface WriteNpmrcOptions {
50
+ /**
51
+ * Scope prefixes (e.g. `@superblocksteam`) whose existing
52
+ * `<scope>:registry=` lines must survive. Used to preserve scope mappings
53
+ * baked into a template `.npmrc` by setup-template.sh in EE builds.
54
+ */
55
+ preserveScopeLines?: string[];
56
+ }
57
+ /**
58
+ * Renders the npm registry config to an `.npmrc` file at `targetPath`.
59
+ *
60
+ * When `preserveScopeLines` is provided, any existing `<scope>:registry=`
61
+ * lines for those scopes are preserved verbatim (so EE-baked
62
+ * `@superblocksteam:registry=https://npm.pkg.github.com/` survives) UNLESS
63
+ * the same scope is explicitly overridden in `config.scopes`.
64
+ *
65
+ * Idempotent: rewrites the file in full each call. Writes are atomic (tmp +
66
+ * rename) and the file mode is restricted to 0600 because the file may carry
67
+ * an auth token.
68
+ */
69
+ export declare function writeNpmrc(targetPath: string, config: NpmRegistryConfig, options?: WriteNpmrcOptions): Promise<void>;
70
+ /**
71
+ * Convenience: invoke `writeNpmrc` against `<dir>/.npmrc` if registry config is
72
+ * present in the env. No-op when unset (preserves today's behavior for SaaS /
73
+ * local dev).
74
+ *
75
+ * Returns the loaded config when an `.npmrc` was written, otherwise `undefined`.
76
+ */
77
+ export declare function maybeWriteNpmrcForDir(dir: string, options?: WriteNpmrcOptions, env?: NodeJS.ProcessEnv): Promise<NpmRegistryConfig | undefined>;
78
+ /**
79
+ * Materializes the private-registry `.npmrc` AND strips `resolved` URLs from
80
+ * any lockfile present in `dir`, so a subsequent `npm install` is guaranteed
81
+ * to re-resolve through the active registry. No-op when the env contract is
82
+ * unset.
83
+ *
84
+ * Combines `maybeWriteNpmrcForDir` with `stripResolvedFromLockfile`. The two
85
+ * always go together at install call sites because:
86
+ * - Writing `.npmrc` alone is insufficient: `resolved` URLs in the
87
+ * lockfile silently bypass it.
88
+ * - Stripping `resolved` alone is insufficient: npm would re-resolve
89
+ * against the wrong registry (or fail with no auth).
90
+ *
91
+ * Returns the loaded config when an `.npmrc` was written (also implying the
92
+ * lockfile was stripped), otherwise `undefined`.
93
+ */
94
+ export declare function prepareForPrivateRegistry(dir: string, options?: WriteNpmrcOptions, env?: NodeJS.ProcessEnv): Promise<NpmRegistryConfig | undefined>;
95
+ /**
96
+ * Removes the `resolved` field from every entry in `.packages` of an npm v2+
97
+ * lockfile. TS-side counterpart to `scripts/strip-lockfile-resolved.sh`.
98
+ *
99
+ * Same goal: npm honors `resolved` URLs verbatim, so a lockfile whose entries
100
+ * point at registry.npmjs.org keeps fetching from npmjs even after we've
101
+ * written a private `registry=` line to `.npmrc`. Stripping forces npm to
102
+ * re-resolve through the active registry.
103
+ *
104
+ * Use at runtime for *brownfield* apps — apps imported into Superblocks with
105
+ * a lockfile baked at customer-side npm install time (typically against
106
+ * npmjs.org). Greenfield template lockfiles are stripped at image-build time
107
+ * by the bash script; this function handles the rest.
108
+ *
109
+ * Behavior:
110
+ * - Strips both `<dir>/package-lock.json` and the hidden
111
+ * `<dir>/node_modules/.package-lock.json` if present.
112
+ * - No-op when neither file exists (brownfield apps may not have a
113
+ * lockfile yet).
114
+ * - Idempotent: a second call against an already-stripped file is a no-op.
115
+ * - Malformed JSON or wrong shape -> logged warning, file left untouched.
116
+ * We don't throw because the consuming `npm install` will surface a
117
+ * clearer error on the same lockfile, and an unrelated parse bug here
118
+ * should not block the user's install.
119
+ * - Atomic: writes via tmp + rename to avoid leaving a partial lockfile on
120
+ * crash mid-write.
121
+ */
122
+ export declare function stripResolvedFromLockfile(dir: string): Promise<void>;
123
+ //# sourceMappingURL=npm-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-registry.d.ts","sourceRoot":"","sources":["../../../src/ai-service/app-interface/npm-registry.ts"],"names":[],"mappings":"AAYA;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,UAAuB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,uFAAuF;IACvF,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAwCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,iBAAiB,GAAG,SAAS,CAsF/B;AAmCD,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAiFf;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,iBAAsB,EAC/B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAOxC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,iBAAsB,EAC/B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAMxC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1E"}
@@ -0,0 +1,395 @@
1
+ import { chmod, mkdir, readFile, rename, stat, writeFile, } from "node:fs/promises";
2
+ import * as path from "node:path";
3
+ import { getLogger } from "../../util/logger.js";
4
+ /**
5
+ * Scopes whose existing `<scope>:registry=` lines in a project / pod `.npmrc`
6
+ * must survive `writeNpmrc` calls. Shared between AppShell, TemplateRenderer,
7
+ * and any other call site so a new scope only needs to be added in one place.
8
+ *
9
+ * `setup-template.sh` bakes
10
+ * `@superblocksteam:registry=https://npm.pkg.github.com/` into the template
11
+ * `.npmrc` for ephemeral environments; we must not clobber it.
12
+ */
13
+ export const PRESERVE_NPMRC_SCOPES = ["@superblocksteam"];
14
+ /**
15
+ * Returns true iff the value contains an embedded CR or LF, which would inject
16
+ * additional directives into the rendered `.npmrc`.
17
+ */
18
+ function hasEmbeddedNewline(value) {
19
+ return /[\r\n]/.test(value);
20
+ }
21
+ /**
22
+ * Returns a log-safe rendering of a registry URL. Strips userinfo so an
23
+ * operator who accidentally inlined credentials in `SUPERBLOCKS_NPM_REGISTRY`
24
+ * (`https://user:pass@host/...`) doesn't have those credentials surfaced to
25
+ * centralized logging when validation rejects the value. Best-effort: if the
26
+ * input is unparseable we still return a placeholder rather than the raw
27
+ * value.
28
+ */
29
+ function redactRegistryForLog(value) {
30
+ try {
31
+ const u = new URL(value);
32
+ if (u.username || u.password) {
33
+ u.username = "";
34
+ u.password = "";
35
+ return `${u.toString()} (userinfo redacted)`;
36
+ }
37
+ return u.toString();
38
+ }
39
+ catch {
40
+ return "<unparseable URL — value redacted>";
41
+ }
42
+ }
43
+ /**
44
+ * Parses the `SUPERBLOCKS_REQUIRE_PRIVATE_REGISTRY` truthy-flag value.
45
+ */
46
+ function parseRequireFlag(env) {
47
+ const raw = env.SUPERBLOCKS_REQUIRE_PRIVATE_REGISTRY?.trim().toLowerCase();
48
+ return raw === "true" || raw === "1" || raw === "yes" || raw === "on";
49
+ }
50
+ /**
51
+ * Reads the npm registry env contract and returns a typed config, or undefined
52
+ * when `SUPERBLOCKS_NPM_REGISTRY` is unset or invalid (preserves SaaS / local
53
+ * behavior). Invalid values are logged as warnings and treated as unset rather
54
+ * than half-broken (avoids landing a `.npmrc` with a malformed `registry=`
55
+ * line and no `_authToken=`).
56
+ *
57
+ * Env contract:
58
+ * - SUPERBLOCKS_NPM_REGISTRY: full registry URL
59
+ * - SUPERBLOCKS_NPM_REGISTRY_TOKEN: optional auth token
60
+ * - SUPERBLOCKS_NPM_REGISTRY_SCOPES_JSON: optional JSON map of scope -> URL
61
+ * - SUPERBLOCKS_REQUIRE_PRIVATE_REGISTRY: opt-in strict mode (default off)
62
+ */
63
+ export function getNpmRegistryConfig(env = process.env) {
64
+ const url = env.SUPERBLOCKS_NPM_REGISTRY?.trim();
65
+ if (!url) {
66
+ // The public name `SUPERBLOCKS_REQUIRE_PRIVATE_REGISTRY` promises strict
67
+ // mode; until the enforcement branch (#17) lands, surface a warning when
68
+ // an operator opts in but forgot to also set the registry URL — otherwise
69
+ // they silently fall back to public npm and assume they're protected.
70
+ if (parseRequireFlag(env)) {
71
+ getLogger().warn("[npm-registry] SUPERBLOCKS_REQUIRE_PRIVATE_REGISTRY is set but " +
72
+ "SUPERBLOCKS_NPM_REGISTRY is unset; falling back to default " +
73
+ "registry-resolution. Strict-mode enforcement is deferred to a " +
74
+ "follow-up; set SUPERBLOCKS_NPM_REGISTRY to take effect today.");
75
+ }
76
+ return;
77
+ }
78
+ if (hasEmbeddedNewline(url)) {
79
+ getLogger().warn("[npm-registry] SUPERBLOCKS_NPM_REGISTRY contains a newline; ignoring");
80
+ return;
81
+ }
82
+ // Validate the URL upfront so we never emit a half-broken .npmrc (e.g.
83
+ // `registry=` line with no matching `_authToken=`). Also rejects userinfo
84
+ // (`user:pass@host`) — tokens belong on a `_authToken=` line, never in the
85
+ // URL itself; URL-embedded credentials end up in HTTP request logs.
86
+ if (!toNpmAuthOrigin(url)) {
87
+ getLogger().warn("[npm-registry] SUPERBLOCKS_NPM_REGISTRY is not a valid registry URL " +
88
+ "(must be parseable and must not contain user:pass@ userinfo); ignoring", { url: redactRegistryForLog(url) });
89
+ return;
90
+ }
91
+ let token = env.SUPERBLOCKS_NPM_REGISTRY_TOKEN?.trim() || undefined;
92
+ if (token && hasEmbeddedNewline(token)) {
93
+ getLogger().warn("[npm-registry] SUPERBLOCKS_NPM_REGISTRY_TOKEN contains a newline; ignoring token");
94
+ token = undefined;
95
+ }
96
+ const require = parseRequireFlag(env);
97
+ let scopes;
98
+ const scopesJson = env.SUPERBLOCKS_NPM_REGISTRY_SCOPES_JSON?.trim();
99
+ if (scopesJson) {
100
+ try {
101
+ const parsed = JSON.parse(scopesJson);
102
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
103
+ scopes = {};
104
+ for (const [scope, scopeUrl] of Object.entries(parsed)) {
105
+ if (typeof scopeUrl !== "string") {
106
+ continue;
107
+ }
108
+ // Validate both the scope key and the scope URL value for embedded
109
+ // newlines — a key containing `\n` (valid in JSON strings) would
110
+ // inject an extra line into the rendered `.npmrc` (e.g.
111
+ // `"@x\n_authToken=stolen"`). Mirror the existing URL-value check.
112
+ if (hasEmbeddedNewline(scope)) {
113
+ getLogger().warn("[npm-registry] SUPERBLOCKS_NPM_REGISTRY_SCOPES_JSON scope key contains a newline; ignoring entry");
114
+ continue;
115
+ }
116
+ const trimmed = scopeUrl.trim();
117
+ if (trimmed === "" || hasEmbeddedNewline(trimmed)) {
118
+ continue;
119
+ }
120
+ scopes[scope] = trimmed;
121
+ }
122
+ if (Object.keys(scopes).length === 0) {
123
+ scopes = undefined;
124
+ }
125
+ }
126
+ }
127
+ catch (error) {
128
+ getLogger().warn("[npm-registry] Failed to parse SUPERBLOCKS_NPM_REGISTRY_SCOPES_JSON; ignoring", { error: error instanceof Error ? error.message : String(error) });
129
+ }
130
+ }
131
+ return { url, token, scopes, require };
132
+ }
133
+ /**
134
+ * Extracts the host portion of a registry URL for use in npm auth lines, e.g.
135
+ * `https://artifactory.example.com/api/npm/npm-virtual/` ->
136
+ * `//artifactory.example.com/api/npm/npm-virtual/`.
137
+ *
138
+ * npm matches `_authToken` lines by URL prefix (sans scheme), so we keep the
139
+ * full path. Trailing slash is normalized. Returns undefined for unparseable
140
+ * URLs OR URLs that carry userinfo (`user:pass@host`) — userinfo would make
141
+ * the `registry=` and `_authToken=` lines disagree under npm's URL-prefix
142
+ * matching rule and would also leak credentials into process logs.
143
+ */
144
+ function toNpmAuthOrigin(registryUrl) {
145
+ try {
146
+ const u = new URL(registryUrl);
147
+ if (u.username || u.password) {
148
+ return;
149
+ }
150
+ const pathname = u.pathname.endsWith("/") ? u.pathname : `${u.pathname}/`;
151
+ return `//${u.host}${pathname}`;
152
+ }
153
+ catch {
154
+ return;
155
+ }
156
+ }
157
+ /**
158
+ * Normalizes a registry URL to end in exactly one trailing slash so the
159
+ * `registry=` line and the `_authToken=` host prefix line match exactly under
160
+ * npm's URL-prefix matching rule. Mirrors the shell script behavior.
161
+ */
162
+ function normalizeRegistryUrl(registryUrl) {
163
+ return registryUrl.endsWith("/") ? registryUrl : `${registryUrl}/`;
164
+ }
165
+ /**
166
+ * Renders the npm registry config to an `.npmrc` file at `targetPath`.
167
+ *
168
+ * When `preserveScopeLines` is provided, any existing `<scope>:registry=`
169
+ * lines for those scopes are preserved verbatim (so EE-baked
170
+ * `@superblocksteam:registry=https://npm.pkg.github.com/` survives) UNLESS
171
+ * the same scope is explicitly overridden in `config.scopes`.
172
+ *
173
+ * Idempotent: rewrites the file in full each call. Writes are atomic (tmp +
174
+ * rename) and the file mode is restricted to 0600 because the file may carry
175
+ * an auth token.
176
+ */
177
+ export async function writeNpmrc(targetPath, config, options = {}) {
178
+ const preserveScopes = options.preserveScopeLines ?? [];
179
+ // Map of scope -> verbatim line, so we both dedup correctly and preserve the
180
+ // exact bytes (whitespace, trailing comments) the operator wrote.
181
+ const preservedScopeLines = new Map();
182
+ if (preserveScopes.length > 0) {
183
+ let existing = "";
184
+ try {
185
+ existing = await readFile(targetPath, "utf-8");
186
+ }
187
+ catch (error) {
188
+ // ENOENT is the expected case (no pre-existing .npmrc). EACCES / EIO /
189
+ // EBUSY are not — surface them so we don't silently drop a load-bearing
190
+ // `@superblocksteam:registry=` line (the exact failure class APPS-2053
191
+ // was meant to prevent).
192
+ const code = error?.code;
193
+ if (code !== "ENOENT") {
194
+ getLogger().warn("[npm-registry] failed to read existing .npmrc for scope preservation; proceeding without preserve", {
195
+ path: targetPath,
196
+ code,
197
+ error: error instanceof Error ? error.message : String(error),
198
+ });
199
+ }
200
+ }
201
+ if (existing) {
202
+ const lines = existing.split(/\r?\n/);
203
+ for (const scope of preserveScopes) {
204
+ // Skip preservation if config explicitly overrides this scope.
205
+ if (config.scopes && config.scopes[scope]) {
206
+ continue;
207
+ }
208
+ const prefix = `${scope}:registry=`;
209
+ for (const line of lines) {
210
+ const trimmed = line.trim();
211
+ if (trimmed.startsWith(prefix)) {
212
+ preservedScopeLines.set(scope, trimmed);
213
+ break;
214
+ }
215
+ }
216
+ }
217
+ }
218
+ }
219
+ const normalizedUrl = normalizeRegistryUrl(config.url);
220
+ const lines = [];
221
+ lines.push(`registry=${normalizedUrl}`);
222
+ const authOrigin = toNpmAuthOrigin(normalizedUrl);
223
+ if (config.token && authOrigin) {
224
+ lines.push(`${authOrigin}:_authToken=${config.token}`);
225
+ }
226
+ if (config.scopes) {
227
+ for (const [scope, scopeUrl] of Object.entries(config.scopes)) {
228
+ lines.push(`${scope}:registry=${scopeUrl}`);
229
+ // Explicit scope override wins; drop the preserved line for the same
230
+ // scope so we don't emit two `<scope>:registry=` lines.
231
+ preservedScopeLines.delete(scope);
232
+ }
233
+ }
234
+ for (const line of preservedScopeLines.values()) {
235
+ lines.push(line);
236
+ }
237
+ const content = lines.join("\n") + "\n";
238
+ await mkdir(path.dirname(targetPath), { recursive: true });
239
+ // Atomic write: render to a sibling tmp file with restrictive perms, then
240
+ // rename. Avoids leaving a partial/empty .npmrc on crash mid-write, and
241
+ // narrows the window where the token might be readable at the default umask.
242
+ const tmpPath = `${targetPath}.tmp-${process.pid}-${Date.now()}`;
243
+ await writeFile(tmpPath, content, { encoding: "utf-8", mode: 0o600 });
244
+ // `mode` only applies on creation; explicit chmod handles the case where the
245
+ // tmp path was preexisting (e.g. crash recovery).
246
+ await chmod(tmpPath, 0o600);
247
+ await rename(tmpPath, targetPath);
248
+ }
249
+ /**
250
+ * Convenience: invoke `writeNpmrc` against `<dir>/.npmrc` if registry config is
251
+ * present in the env. No-op when unset (preserves today's behavior for SaaS /
252
+ * local dev).
253
+ *
254
+ * Returns the loaded config when an `.npmrc` was written, otherwise `undefined`.
255
+ */
256
+ export async function maybeWriteNpmrcForDir(dir, options = {}, env = process.env) {
257
+ const config = getNpmRegistryConfig(env);
258
+ if (!config) {
259
+ return;
260
+ }
261
+ await writeNpmrc(path.join(dir, ".npmrc"), config, options);
262
+ return config;
263
+ }
264
+ /**
265
+ * Materializes the private-registry `.npmrc` AND strips `resolved` URLs from
266
+ * any lockfile present in `dir`, so a subsequent `npm install` is guaranteed
267
+ * to re-resolve through the active registry. No-op when the env contract is
268
+ * unset.
269
+ *
270
+ * Combines `maybeWriteNpmrcForDir` with `stripResolvedFromLockfile`. The two
271
+ * always go together at install call sites because:
272
+ * - Writing `.npmrc` alone is insufficient: `resolved` URLs in the
273
+ * lockfile silently bypass it.
274
+ * - Stripping `resolved` alone is insufficient: npm would re-resolve
275
+ * against the wrong registry (or fail with no auth).
276
+ *
277
+ * Returns the loaded config when an `.npmrc` was written (also implying the
278
+ * lockfile was stripped), otherwise `undefined`.
279
+ */
280
+ export async function prepareForPrivateRegistry(dir, options = {}, env = process.env) {
281
+ const config = await maybeWriteNpmrcForDir(dir, options, env);
282
+ if (config) {
283
+ await stripResolvedFromLockfile(dir);
284
+ }
285
+ return config;
286
+ }
287
+ /**
288
+ * Removes the `resolved` field from every entry in `.packages` of an npm v2+
289
+ * lockfile. TS-side counterpart to `scripts/strip-lockfile-resolved.sh`.
290
+ *
291
+ * Same goal: npm honors `resolved` URLs verbatim, so a lockfile whose entries
292
+ * point at registry.npmjs.org keeps fetching from npmjs even after we've
293
+ * written a private `registry=` line to `.npmrc`. Stripping forces npm to
294
+ * re-resolve through the active registry.
295
+ *
296
+ * Use at runtime for *brownfield* apps — apps imported into Superblocks with
297
+ * a lockfile baked at customer-side npm install time (typically against
298
+ * npmjs.org). Greenfield template lockfiles are stripped at image-build time
299
+ * by the bash script; this function handles the rest.
300
+ *
301
+ * Behavior:
302
+ * - Strips both `<dir>/package-lock.json` and the hidden
303
+ * `<dir>/node_modules/.package-lock.json` if present.
304
+ * - No-op when neither file exists (brownfield apps may not have a
305
+ * lockfile yet).
306
+ * - Idempotent: a second call against an already-stripped file is a no-op.
307
+ * - Malformed JSON or wrong shape -> logged warning, file left untouched.
308
+ * We don't throw because the consuming `npm install` will surface a
309
+ * clearer error on the same lockfile, and an unrelated parse bug here
310
+ * should not block the user's install.
311
+ * - Atomic: writes via tmp + rename to avoid leaving a partial lockfile on
312
+ * crash mid-write.
313
+ */
314
+ export async function stripResolvedFromLockfile(dir) {
315
+ await Promise.all([
316
+ stripResolvedFromLockfilePath(path.join(dir, "package-lock.json")),
317
+ stripResolvedFromLockfilePath(path.join(dir, "node_modules", ".package-lock.json")),
318
+ ]);
319
+ }
320
+ async function stripResolvedFromLockfilePath(lockfilePath) {
321
+ let raw;
322
+ try {
323
+ raw = await readFile(lockfilePath, "utf-8");
324
+ }
325
+ catch (error) {
326
+ const code = error?.code;
327
+ if (code === "ENOENT") {
328
+ return;
329
+ }
330
+ getLogger().warn("[npm-registry] failed to read lockfile for resolved-strip; skipping", {
331
+ path: lockfilePath,
332
+ code,
333
+ error: error instanceof Error ? error.message : String(error),
334
+ });
335
+ return;
336
+ }
337
+ let parsed;
338
+ try {
339
+ parsed = JSON.parse(raw);
340
+ }
341
+ catch (error) {
342
+ getLogger().warn("[npm-registry] lockfile is not valid JSON; skipping resolved-strip", {
343
+ path: lockfilePath,
344
+ error: error instanceof Error ? error.message : String(error),
345
+ });
346
+ return;
347
+ }
348
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
349
+ getLogger().warn("[npm-registry] lockfile root is not a JSON object; skipping resolved-strip", { path: lockfilePath });
350
+ return;
351
+ }
352
+ const lockfile = parsed;
353
+ const packages = lockfile.packages;
354
+ // npm v1 lockfiles have no .packages object; nothing to strip. Some custom
355
+ // shapes may also omit it (e.g. fixture lockfiles). Skip silently.
356
+ if (packages === undefined) {
357
+ return;
358
+ }
359
+ if (!packages || typeof packages !== "object" || Array.isArray(packages)) {
360
+ getLogger().warn("[npm-registry] lockfile .packages is not an object; skipping resolved-strip", { path: lockfilePath });
361
+ return;
362
+ }
363
+ let mutated = false;
364
+ for (const entry of Object.values(packages)) {
365
+ if (entry &&
366
+ typeof entry === "object" &&
367
+ !Array.isArray(entry) &&
368
+ "resolved" in entry) {
369
+ delete entry.resolved;
370
+ mutated = true;
371
+ }
372
+ }
373
+ if (!mutated) {
374
+ return;
375
+ }
376
+ // Preserve a trailing newline if the original had one (npm writes its
377
+ // lockfiles with a trailing newline; matching it minimizes spurious diffs
378
+ // when the file is later committed back from a customer-side workflow).
379
+ const trailingNewline = raw.endsWith("\n") ? "\n" : "";
380
+ const next = JSON.stringify(lockfile, null, 2) + trailingNewline;
381
+ // Atomic write: tmp + rename. Inherit the original mode where possible so
382
+ // we don't widen perms on a customer-owned lockfile (npm typically writes
383
+ // 0644, but we don't assume).
384
+ const tmpPath = `${lockfilePath}.tmp-${process.pid}-${Date.now()}`;
385
+ await writeFile(tmpPath, next, "utf-8");
386
+ try {
387
+ const original = await stat(lockfilePath);
388
+ await chmod(tmpPath, original.mode & 0o777);
389
+ }
390
+ catch {
391
+ // Best-effort mode parity only; the rewrite itself is what matters.
392
+ }
393
+ await rename(tmpPath, lockfilePath);
394
+ }
395
+ //# sourceMappingURL=npm-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-registry.js","sourceRoot":"","sources":["../../../src/ai-service/app-interface/npm-registry.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,33 @@ export interface ListFilesOptions extends GlobOptionsWithFileTypesUnset {
14
14
  /** Include directories in listing. Default: false (files only) */
15
15
  includeDirs?: boolean;
16
16
  }
17
+ export type CopyConflictStrategy = "fail" | "skip" | "replace";
18
+ export type CopyToolResult = {
19
+ copiedCount: number;
20
+ skippedCount: number;
21
+ rejectedCount: number;
22
+ copied?: string[];
23
+ skipped?: Array<{
24
+ path: string;
25
+ reason: "destination_exists" | "default_excluded";
26
+ }>;
27
+ rejected?: Array<{
28
+ path: string;
29
+ reason: string;
30
+ }>;
31
+ };
32
+ export type CopyFileOptions = {
33
+ sourcePath: string;
34
+ destinationPath: string;
35
+ conflictStrategy?: CopyConflictStrategy;
36
+ verbose?: boolean;
37
+ };
38
+ export type CopyDirectoryOptions = {
39
+ sourceDir: string;
40
+ destinationDir: string;
41
+ conflictStrategy?: CopyConflictStrategy;
42
+ verbose?: boolean;
43
+ };
17
44
  /**
18
45
  * AppShell provides the primary interface for the AI agent to interact
19
46
  * with the application environment.
@@ -140,6 +167,17 @@ export declare class AppShell {
140
167
  * Called directly by writeFile (no queue wrapper needed since draftInterface queues).
141
168
  */
142
169
  private writeFileInternal;
170
+ private resolveAppRelativePath;
171
+ private createEmptyCopyResult;
172
+ private recordCopied;
173
+ private recordSkipped;
174
+ private recordRejected;
175
+ private finalizeCopyResult;
176
+ private copyFileInternal;
177
+ private preflightCopyFile;
178
+ copyFile(options: CopyFileOptions): Promise<CopyToolResult>;
179
+ private collectDirectoryCopyEntries;
180
+ copyDirectory(options: CopyDirectoryOptions): Promise<CopyToolResult>;
143
181
  /**
144
182
  * Deletes a file or directory as a draft operation.
145
183
  *
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/ai-service/app-interface/shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/ai-service/app-interface/shell.ts"],"names":[],"mappings":"AAaA,OAAO,EAAQ,KAAK,6BAA6B,EAAE,MAAM,MAAM,CAAC;AAKhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAOjE,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAU/D;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,6BAA6B;IACrE,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/D,MAAM,MAAM,cAAc,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,oBAAoB,GAAG,kBAAkB,CAAC;KACnD,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAUF;;;;;;;;;;GAUG;AACH,qBAAa,QAAQ;IACnB,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,aAAa,CAAC,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAU;IAElD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAEvC,EACV,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,uBAAuB,GACxB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,eAAe,CAAC;QAClC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC,iBAAiB,EAAE,iBAAiB,CAAC;QACrC,6DAA6D;QAC7D,aAAa,EAAE,aAAa,CAAC;QAC7B,gEAAgE;QAChE,uBAAuB,CAAC,EAAE,OAAO,CAAC;KACnC;IAeD;;;;OAIG;IACI,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAInD;;;OAGG;YACW,kBAAkB;IA2BnB,SAAS,CACpB,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,CAAC,EAAE,6BAA6B,EAC3C,kBAAkB,UAAO,GACxB,OAAO,CAAC,YAAY,EAAE,CAAC;IAkCb,YAAY,CACvB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAoB9B,qBAAqB,CAChC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAwCZ,SAAS,CACpB,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IA+BpC,eAAe;IAKT,aAAa,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCvD,wBAAwB,CAAC,WAAW,CAAC,EAAE,WAAW;IAkElD,uBAAuB,CAClC,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,EAClE,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,CAAC;IAqHL,iBAAiB,CAC5B,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B,GACA,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAqC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAM;IAGpC,qBAAqB,CAChC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAsBH,gBAAgB,CAC3B,QAAQ,SAA+B,GACtC,OAAO,CAAC,IAAI,CAAC;IAgCH,WAAW,CAAC,OAAO,EAAE;QAChC,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjB,mDAAmD;IACtC,UAAU,CAAC,YAAY,EAAE,MAAM;IAW5C;;;OAGG;IACU,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBnD;;;;;;;;;;;;;OAaG;IAEU,QAAQ,CACnB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,MAAM,CAAC;IAiBlB;;;OAGG;YACW,gBAAgB;IA4D9B;;;;;;;;;;;;;OAaG;IAEU,SAAS,CACpB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GACxC,OAAO,CAAC,IAAI,CAAC;IAyBhB;;;OAGG;YACW,iBAAiB;IAuC/B,OAAO,CAAC,sBAAsB;IAyB9B,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,kBAAkB;YAaZ,gBAAgB;YA4ChB,iBAAiB;IA8BlB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;YAyB1D,2BAA2B;IA2D5B,aAAa,CACxB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC;IA6D1B;;;;;;;;;OASG;IAEU,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D;;;OAGG;YACW,kBAAkB;IA2ChC;;;;;;;;;OASG;IACU,SAAS,CACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,OAAO,CAAC,EAAE,6BAA6B,GACtC,OAAO,CAAC,MAAM,EAAE,CAAC;IAEpB;;;;;;OAMG;IACU,SAAS,CACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,OAAO,CAAC,EAAE,gBAAgB,GAAG;QAAE,eAAe,EAAE,IAAI,CAAA;KAAE,GACrD,OAAO,CAAC,YAAY,EAAE,CAAC;IAiC1B;;;;;;;OAOG;YAEW,iBAAiB;IAmC/B;;;;;OAKG;YACW,mBAAmB;IAajC;;;;;OAKG;YACW,eAAe;IA+B7B;;;;;;OAMG;YACW,kBAAkB;IA0ChC;;;;;;;;;OASG;IAEU,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CxE;;;;OAIG;IACU,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAOhD;;;;;OAKG;IACU,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAO5D;;;;OAIG;IACU,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC;IAOrD;;;;;;;;OAQG;IACI,iBAAiB,IAAI,cAAc,GAAG,SAAS;IAQtD;;;;;OAKG;IACI,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAIpD;;;;;;;OAOG;IACI,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAI9C;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,gCAAgC;IAUxC;;OAEG;YACW,wBAAwB;CAkBvC"}