@superblocksteam/vite-plugin-file-sync 2.0.162 → 2.0.163-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 (420) hide show
  1. package/dist/ai-service/agent/middleware.d.ts.map +1 -1
  2. package/dist/ai-service/agent/middleware.js +18 -7
  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 +43 -29
  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.map +1 -1
  8. package/dist/ai-service/agent/prompts/build-security-scan-prompt.js +25 -0
  9. package/dist/ai-service/agent/prompts/build-security-scan-prompt.js.map +1 -1
  10. package/dist/ai-service/agent/subagents/coding/run-coding-subagent.d.ts.map +1 -1
  11. package/dist/ai-service/agent/subagents/coding/run-coding-subagent.js +15 -0
  12. package/dist/ai-service/agent/subagents/coding/run-coding-subagent.js.map +1 -1
  13. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
  14. package/dist/ai-service/agent/tools/apis/test-api.js +4 -2
  15. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  16. package/dist/ai-service/agent/tools/app-environment/switch-selected-environment.d.ts +18 -0
  17. package/dist/ai-service/agent/tools/app-environment/switch-selected-environment.d.ts.map +1 -0
  18. package/dist/ai-service/agent/tools/app-environment/switch-selected-environment.js +61 -0
  19. package/dist/ai-service/agent/tools/app-environment/switch-selected-environment.js.map +1 -0
  20. package/dist/ai-service/agent/tools/build-capture-screenshot.js +1 -1
  21. package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
  22. package/dist/ai-service/agent/tools/build-install-packages.js +21 -8
  23. package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
  24. package/dist/ai-service/agent/tools/build-read-file.d.ts +87 -1
  25. package/dist/ai-service/agent/tools/build-read-file.d.ts.map +1 -1
  26. package/dist/ai-service/agent/tools/build-read-file.js +453 -82
  27. package/dist/ai-service/agent/tools/build-read-file.js.map +1 -1
  28. package/dist/ai-service/agent/tools/build-write-file.d.ts +1 -0
  29. package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -1
  30. package/dist/ai-service/agent/tools/build-write-file.js +18 -2
  31. package/dist/ai-service/agent/tools/build-write-file.js.map +1 -1
  32. package/dist/ai-service/agent/tools/debug-cache.d.ts +11 -0
  33. package/dist/ai-service/agent/tools/debug-cache.d.ts.map +1 -1
  34. package/dist/ai-service/agent/tools/debug-cache.js +62 -14
  35. package/dist/ai-service/agent/tools/debug-cache.js.map +1 -1
  36. package/dist/ai-service/agent/tools/index.d.ts +2 -1
  37. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  38. package/dist/ai-service/agent/tools/index.js +2 -1
  39. package/dist/ai-service/agent/tools/index.js.map +1 -1
  40. package/dist/ai-service/agent/tools/integrations/metadata.d.ts +1 -0
  41. package/dist/ai-service/agent/tools/integrations/metadata.d.ts.map +1 -1
  42. package/dist/ai-service/agent/tools/integrations/metadata.js +7 -2
  43. package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -1
  44. package/dist/ai-service/agent/tools/read-file-metrics.d.ts +30 -0
  45. package/dist/ai-service/agent/tools/read-file-metrics.d.ts.map +1 -0
  46. package/dist/ai-service/agent/tools/read-file-metrics.js +158 -0
  47. package/dist/ai-service/agent/tools/read-file-metrics.js.map +1 -0
  48. package/dist/ai-service/agent/tools/subagent-isolation.d.ts +27 -0
  49. package/dist/ai-service/agent/tools/subagent-isolation.d.ts.map +1 -0
  50. package/dist/ai-service/agent/tools/subagent-isolation.js +57 -0
  51. package/dist/ai-service/agent/tools/subagent-isolation.js.map +1 -0
  52. package/dist/ai-service/agent/tools.d.ts +4 -1
  53. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  54. package/dist/ai-service/agent/tools.js +51 -5
  55. package/dist/ai-service/agent/tools.js.map +1 -1
  56. package/dist/ai-service/agent/tools2/tools/download-attachments.d.ts.map +1 -1
  57. package/dist/ai-service/agent/tools2/tools/download-attachments.js +1 -0
  58. package/dist/ai-service/agent/tools2/tools/download-attachments.js.map +1 -1
  59. package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts.map +1 -1
  60. package/dist/ai-service/agent/tools2/tools/start-test-run.js +14 -0
  61. package/dist/ai-service/agent/tools2/tools/start-test-run.js.map +1 -1
  62. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  63. package/dist/ai-service/agent/utils.js +2 -2
  64. package/dist/ai-service/agent/utils.js.map +1 -1
  65. package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts +2 -1
  66. package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts.map +1 -1
  67. package/dist/ai-service/app-interface/filesystem/draft-manager.js +3 -0
  68. package/dist/ai-service/app-interface/filesystem/draft-manager.js.map +1 -1
  69. package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.d.ts +2 -1
  70. package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.d.ts.map +1 -1
  71. package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.js +13 -11
  72. package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.js.map +1 -1
  73. package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts.map +1 -1
  74. package/dist/ai-service/app-interface/filesystem/virtual-file-system.js +1 -1
  75. package/dist/ai-service/app-interface/filesystem/virtual-file-system.js.map +1 -1
  76. package/dist/ai-service/app-interface/shell.d.ts +18 -9
  77. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  78. package/dist/ai-service/app-interface/shell.js +92 -112
  79. package/dist/ai-service/app-interface/shell.js.map +1 -1
  80. package/dist/ai-service/app-interface/typecheck-output-parser.d.ts +9 -0
  81. package/dist/ai-service/app-interface/typecheck-output-parser.d.ts.map +1 -0
  82. package/dist/ai-service/app-interface/typecheck-output-parser.js +21 -0
  83. package/dist/ai-service/app-interface/typecheck-output-parser.js.map +1 -0
  84. package/dist/ai-service/app-interface/vulnerability-gate.d.ts +5 -0
  85. package/dist/ai-service/app-interface/vulnerability-gate.d.ts.map +1 -1
  86. package/dist/ai-service/app-interface/vulnerability-gate.js +9 -2
  87. package/dist/ai-service/app-interface/vulnerability-gate.js.map +1 -1
  88. package/dist/ai-service/app-layout.d.ts +13 -0
  89. package/dist/ai-service/app-layout.d.ts.map +1 -0
  90. package/dist/ai-service/app-layout.js +25 -0
  91. package/dist/ai-service/app-layout.js.map +1 -0
  92. package/dist/ai-service/app-skills/manager.d.ts +2 -0
  93. package/dist/ai-service/app-skills/manager.d.ts.map +1 -1
  94. package/dist/ai-service/app-skills/manager.js +13 -6
  95. package/dist/ai-service/app-skills/manager.js.map +1 -1
  96. package/dist/ai-service/attachment-label-metrics.d.ts +5 -0
  97. package/dist/ai-service/attachment-label-metrics.d.ts.map +1 -0
  98. package/dist/ai-service/attachment-label-metrics.js +26 -0
  99. package/dist/ai-service/attachment-label-metrics.js.map +1 -0
  100. package/dist/ai-service/attachment-upload.d.ts.map +1 -1
  101. package/dist/ai-service/attachment-upload.js +6 -1
  102. package/dist/ai-service/attachment-upload.js.map +1 -1
  103. package/dist/ai-service/attachments/validate-prompt-attachments.d.ts +7 -0
  104. package/dist/ai-service/attachments/validate-prompt-attachments.d.ts.map +1 -0
  105. package/dist/ai-service/attachments/validate-prompt-attachments.js +96 -0
  106. package/dist/ai-service/attachments/validate-prompt-attachments.js.map +1 -0
  107. package/dist/ai-service/chat/chat-push-metrics.d.ts +17 -0
  108. package/dist/ai-service/chat/chat-push-metrics.d.ts.map +1 -1
  109. package/dist/ai-service/chat/chat-push-metrics.js +45 -0
  110. package/dist/ai-service/chat/chat-push-metrics.js.map +1 -1
  111. package/dist/ai-service/chat/chat-session-store.d.ts +51 -0
  112. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  113. package/dist/ai-service/chat/chat-session-store.js +181 -4
  114. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  115. package/dist/ai-service/features.d.ts +32 -0
  116. package/dist/ai-service/features.d.ts.map +1 -1
  117. package/dist/ai-service/features.js +32 -0
  118. package/dist/ai-service/features.js.map +1 -1
  119. package/dist/ai-service/helper-system-ai-attributes.d.ts +1 -1
  120. package/dist/ai-service/helper-system-ai-attributes.d.ts.map +1 -1
  121. package/dist/ai-service/helper-system-ai-attributes.js.map +1 -1
  122. package/dist/ai-service/index.d.ts +19 -4
  123. package/dist/ai-service/index.d.ts.map +1 -1
  124. package/dist/ai-service/index.js +176 -23
  125. package/dist/ai-service/index.js.map +1 -1
  126. package/dist/ai-service/llm/client.d.ts +9 -0
  127. package/dist/ai-service/llm/client.d.ts.map +1 -1
  128. package/dist/ai-service/llm/client.js +13 -43
  129. package/dist/ai-service/llm/client.js.map +1 -1
  130. package/dist/ai-service/llm/context-v2/adapter.d.ts +2 -0
  131. package/dist/ai-service/llm/context-v2/adapter.d.ts.map +1 -1
  132. package/dist/ai-service/llm/context-v2/adapter.js +6 -0
  133. package/dist/ai-service/llm/context-v2/adapter.js.map +1 -1
  134. package/dist/ai-service/llm/context-v2/compaction/server-side.d.ts +8 -0
  135. package/dist/ai-service/llm/context-v2/compaction/server-side.d.ts.map +1 -1
  136. package/dist/ai-service/llm/context-v2/compaction/server-side.js +8 -0
  137. package/dist/ai-service/llm/context-v2/compaction/server-side.js.map +1 -1
  138. package/dist/ai-service/llm/context-v2/context-component-partition.d.ts +24 -0
  139. package/dist/ai-service/llm/context-v2/context-component-partition.d.ts.map +1 -0
  140. package/dist/ai-service/llm/context-v2/context-component-partition.js +222 -0
  141. package/dist/ai-service/llm/context-v2/context-component-partition.js.map +1 -0
  142. package/dist/ai-service/llm/context-v2/context-metrics.d.ts +9 -0
  143. package/dist/ai-service/llm/context-v2/context-metrics.d.ts.map +1 -1
  144. package/dist/ai-service/llm/context-v2/context-metrics.js +40 -2
  145. package/dist/ai-service/llm/context-v2/context-metrics.js.map +1 -1
  146. package/dist/ai-service/llm/context-v2/context.d.ts +116 -4
  147. package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
  148. package/dist/ai-service/llm/context-v2/context.js +276 -64
  149. package/dist/ai-service/llm/context-v2/context.js.map +1 -1
  150. package/dist/ai-service/llm/context-v2/conversation-context.d.ts +18 -0
  151. package/dist/ai-service/llm/context-v2/conversation-context.d.ts.map +1 -1
  152. package/dist/ai-service/llm/context-v2/file-read-ledger.d.ts +218 -0
  153. package/dist/ai-service/llm/context-v2/file-read-ledger.d.ts.map +1 -0
  154. package/dist/ai-service/llm/context-v2/file-read-ledger.js +275 -0
  155. package/dist/ai-service/llm/context-v2/file-read-ledger.js.map +1 -0
  156. package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts.map +1 -1
  157. package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js +5 -2
  158. package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js.map +1 -1
  159. package/dist/ai-service/llm/context-v2/token-tracker.d.ts +2 -0
  160. package/dist/ai-service/llm/context-v2/token-tracker.d.ts.map +1 -1
  161. package/dist/ai-service/llm/context-v2/token-tracker.js +4 -0
  162. package/dist/ai-service/llm/context-v2/token-tracker.js.map +1 -1
  163. package/dist/ai-service/llm/context-v2/tool-schema-tokens.d.ts +22 -0
  164. package/dist/ai-service/llm/context-v2/tool-schema-tokens.d.ts.map +1 -0
  165. package/dist/ai-service/llm/context-v2/tool-schema-tokens.js +36 -0
  166. package/dist/ai-service/llm/context-v2/tool-schema-tokens.js.map +1 -0
  167. package/dist/ai-service/llm/context-v2/types.d.ts +8 -0
  168. package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -1
  169. package/dist/ai-service/llm/context-v2/types.js +48 -0
  170. package/dist/ai-service/llm/context-v2/types.js.map +1 -1
  171. package/dist/ai-service/llm/error.d.ts +2 -0
  172. package/dist/ai-service/llm/error.d.ts.map +1 -1
  173. package/dist/ai-service/llm/error.js +1 -0
  174. package/dist/ai-service/llm/error.js.map +1 -1
  175. package/dist/ai-service/llm/retry-exhaustion-reason.d.ts +2 -0
  176. package/dist/ai-service/llm/retry-exhaustion-reason.d.ts.map +1 -0
  177. package/dist/ai-service/llm/retry-exhaustion-reason.js +2 -0
  178. package/dist/ai-service/llm/retry-exhaustion-reason.js.map +1 -0
  179. package/dist/ai-service/llm/stream/errors.d.ts +6 -7
  180. package/dist/ai-service/llm/stream/errors.d.ts.map +1 -1
  181. package/dist/ai-service/llm/stream/errors.js +7 -1
  182. package/dist/ai-service/llm/stream/errors.js.map +1 -1
  183. package/dist/ai-service/llm/stream/event-bus.d.ts +9 -1
  184. package/dist/ai-service/llm/stream/event-bus.d.ts.map +1 -1
  185. package/dist/ai-service/llm/stream/event-bus.js.map +1 -1
  186. package/dist/ai-service/llm/stream/idle-monitor.d.ts.map +1 -1
  187. package/dist/ai-service/llm/stream/idle-monitor.js.map +1 -1
  188. package/dist/ai-service/llm/stream/observers/context.d.ts.map +1 -1
  189. package/dist/ai-service/llm/stream/observers/context.js +13 -0
  190. package/dist/ai-service/llm/stream/observers/context.js.map +1 -1
  191. package/dist/ai-service/llm/stream/observers/llmobs.d.ts +14 -1
  192. package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -1
  193. package/dist/ai-service/llm/stream/observers/llmobs.js +91 -7
  194. package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
  195. package/dist/ai-service/llm/stream/observers/logging.d.ts +3 -1
  196. package/dist/ai-service/llm/stream/observers/logging.d.ts.map +1 -1
  197. package/dist/ai-service/llm/stream/observers/logging.js +73 -52
  198. package/dist/ai-service/llm/stream/observers/logging.js.map +1 -1
  199. package/dist/ai-service/llm/stream/observers/retry-notification.d.ts.map +1 -1
  200. package/dist/ai-service/llm/stream/observers/retry-notification.js +16 -9
  201. package/dist/ai-service/llm/stream/observers/retry-notification.js.map +1 -1
  202. package/dist/ai-service/llm/stream/orchestrator.d.ts +5 -1
  203. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  204. package/dist/ai-service/llm/stream/orchestrator.js +103 -12
  205. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  206. package/dist/ai-service/llm/stream/retry-engine.d.ts +3 -1
  207. package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
  208. package/dist/ai-service/llm/stream/retry-engine.js +9 -0
  209. package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
  210. package/dist/ai-service/llm/stream/session.d.ts +8 -1
  211. package/dist/ai-service/llm/stream/session.d.ts.map +1 -1
  212. package/dist/ai-service/llm/stream/session.js +19 -0
  213. package/dist/ai-service/llm/stream/session.js.map +1 -1
  214. package/dist/ai-service/llm/stream/types.d.ts +13 -0
  215. package/dist/ai-service/llm/stream/types.d.ts.map +1 -1
  216. package/dist/ai-service/llm/stream/wait-state-tracker.d.ts +5 -14
  217. package/dist/ai-service/llm/stream/wait-state-tracker.d.ts.map +1 -1
  218. package/dist/ai-service/llm/stream/wait-state-tracker.js +25 -0
  219. package/dist/ai-service/llm/stream/wait-state-tracker.js.map +1 -1
  220. package/dist/ai-service/mcp/embedded-playwright-mcp-server.js +8 -8
  221. package/dist/ai-service/mcp/embedded-playwright-mcp-server.js.map +1 -1
  222. package/dist/ai-service/policy-gate-remediation-usage.d.ts +2 -0
  223. package/dist/ai-service/policy-gate-remediation-usage.d.ts.map +1 -0
  224. package/dist/ai-service/policy-gate-remediation-usage.js +56 -0
  225. package/dist/ai-service/policy-gate-remediation-usage.js.map +1 -0
  226. package/dist/ai-service/prompts/summarize-destructive-migration.d.ts +12 -0
  227. package/dist/ai-service/prompts/summarize-destructive-migration.d.ts.map +1 -0
  228. package/dist/ai-service/prompts/summarize-destructive-migration.js +37 -0
  229. package/dist/ai-service/prompts/summarize-destructive-migration.js.map +1 -0
  230. package/dist/ai-service/recording/storage/session-recording-storage.js +2 -2
  231. package/dist/ai-service/recording/storage/session-recording-storage.js.map +1 -1
  232. package/dist/ai-service/security/secret-scanner-service.d.ts.map +1 -1
  233. package/dist/ai-service/security/secret-scanner-service.js +88 -23
  234. package/dist/ai-service/security/secret-scanner-service.js.map +1 -1
  235. package/dist/ai-service/skills/index.d.ts +0 -7
  236. package/dist/ai-service/skills/index.d.ts.map +1 -1
  237. package/dist/ai-service/skills/index.js +0 -9
  238. package/dist/ai-service/skills/index.js.map +1 -1
  239. package/dist/ai-service/skills/system/_registry.generated.d.ts.map +1 -1
  240. package/dist/ai-service/skills/system/_registry.generated.js +4 -0
  241. package/dist/ai-service/skills/system/_registry.generated.js.map +1 -1
  242. package/dist/ai-service/skills/system/resolve.d.ts +2 -0
  243. package/dist/ai-service/skills/system/resolve.d.ts.map +1 -0
  244. package/dist/ai-service/skills/system/resolve.js +32 -0
  245. package/dist/ai-service/skills/system/resolve.js.map +1 -0
  246. package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-legacy.generated.d.ts +2 -0
  247. package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-legacy.generated.d.ts.map +1 -0
  248. package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-legacy.generated.js +9 -0
  249. package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-legacy.generated.js.map +1 -0
  250. package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-sdk.generated.d.ts +2 -0
  251. package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-sdk.generated.d.ts.map +1 -0
  252. package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-sdk.generated.js +11 -0
  253. package/dist/ai-service/skills/system/superblocks-frontend/_variants/api-imports-sdk.generated.js.map +1 -0
  254. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts +1 -1
  255. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts.map +1 -1
  256. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js +16 -24
  257. package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js.map +1 -1
  258. package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts +1 -1
  259. package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts.map +1 -1
  260. package/dist/ai-service/skills/system/third-party-migration/skill.generated.js +1 -1
  261. package/dist/ai-service/state-machine/clark-fsm.d.ts +11 -0
  262. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  263. package/dist/ai-service/state-machine/clark-fsm.js +7 -1
  264. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  265. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  266. package/dist/ai-service/state-machine/handlers/agent-planning.js +21 -0
  267. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  268. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  269. package/dist/ai-service/state-machine/handlers/llm-generating.js +32 -9
  270. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  271. package/dist/ai-service/state-machine/handlers/runtime-reviewing.d.ts.map +1 -1
  272. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +21 -2
  273. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
  274. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +11 -2
  275. package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -1
  276. package/dist/ai-service/state-machine/helpers/stable-peer.js +105 -18
  277. package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -1
  278. package/dist/ai-service/state-machine/mocks.d.ts +3 -1
  279. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  280. package/dist/ai-service/state-machine/mocks.js +52 -13
  281. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  282. package/dist/ai-service/tasks/peer-push.d.ts +3 -0
  283. package/dist/ai-service/tasks/peer-push.d.ts.map +1 -1
  284. package/dist/ai-service/tasks/peer-push.js +33 -0
  285. package/dist/ai-service/tasks/peer-push.js.map +1 -1
  286. package/dist/ai-service/util/call-peer.d.ts +2 -0
  287. package/dist/ai-service/util/call-peer.d.ts.map +1 -1
  288. package/dist/ai-service/util/call-peer.js +17 -4
  289. package/dist/ai-service/util/call-peer.js.map +1 -1
  290. package/dist/ai-service/util/line-ranges.d.ts +21 -0
  291. package/dist/ai-service/util/line-ranges.d.ts.map +1 -0
  292. package/dist/ai-service/util/line-ranges.js +36 -0
  293. package/dist/ai-service/util/line-ranges.js.map +1 -0
  294. package/dist/ai-service/util/peer-liveness.d.ts +1 -0
  295. package/dist/ai-service/util/peer-liveness.d.ts.map +1 -1
  296. package/dist/ai-service/util/peer-liveness.js +2 -0
  297. package/dist/ai-service/util/peer-liveness.js.map +1 -1
  298. package/dist/dev-server-ws-smoke-client.d.ts.map +1 -1
  299. package/dist/dev-server-ws-smoke-client.js +7 -0
  300. package/dist/dev-server-ws-smoke-client.js.map +1 -1
  301. package/dist/draft-interface.d.ts +8 -0
  302. package/dist/draft-interface.d.ts.map +1 -1
  303. package/dist/early-error-relay.d.ts +2 -0
  304. package/dist/early-error-relay.d.ts.map +1 -1
  305. package/dist/early-error-relay.js +7 -3
  306. package/dist/early-error-relay.js.map +1 -1
  307. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  308. package/dist/file-sync-vite-plugin.js +43 -15
  309. package/dist/file-sync-vite-plugin.js.map +1 -1
  310. package/dist/file-system-helpers.d.ts +2 -2
  311. package/dist/file-system-helpers.d.ts.map +1 -1
  312. package/dist/file-system-helpers.js +3 -3
  313. package/dist/file-system-helpers.js.map +1 -1
  314. package/dist/git-service/errors.d.ts +9 -0
  315. package/dist/git-service/errors.d.ts.map +1 -1
  316. package/dist/git-service/errors.js +15 -0
  317. package/dist/git-service/errors.js.map +1 -1
  318. package/dist/git-service/index.d.ts +2 -2
  319. package/dist/git-service/index.d.ts.map +1 -1
  320. package/dist/git-service/index.js +2 -2
  321. package/dist/git-service/index.js.map +1 -1
  322. package/dist/index.d.ts +1 -0
  323. package/dist/index.d.ts.map +1 -1
  324. package/dist/index.js +1 -0
  325. package/dist/index.js.map +1 -1
  326. package/dist/lock-service/activity-tracker.d.ts +5 -0
  327. package/dist/lock-service/activity-tracker.d.ts.map +1 -1
  328. package/dist/lock-service/activity-tracker.js +10 -0
  329. package/dist/lock-service/activity-tracker.js.map +1 -1
  330. package/dist/lock-service/index.d.ts +69 -4
  331. package/dist/lock-service/index.d.ts.map +1 -1
  332. package/dist/lock-service/index.js +139 -29
  333. package/dist/lock-service/index.js.map +1 -1
  334. package/dist/migration-templates/app-fullstack/client/components/ui/accordion.tsx +9 -65
  335. package/dist/migration-templates/app-fullstack/client/components/ui/area-chart.tsx +36 -156
  336. package/dist/migration-templates/app-fullstack/client/components/ui/aspect-ratio.tsx +1 -5
  337. package/dist/migration-templates/app-fullstack/client/components/ui/avatar.tsx +4 -18
  338. package/dist/migration-templates/app-fullstack/client/components/ui/badge.tsx +6 -29
  339. package/dist/migration-templates/app-fullstack/client/components/ui/bar-chart.tsx +41 -167
  340. package/dist/migration-templates/app-fullstack/client/components/ui/breadcrumb.tsx +1 -4
  341. package/dist/migration-templates/app-fullstack/client/components/ui/button.tsx +5 -64
  342. package/dist/migration-templates/app-fullstack/client/components/ui/calendar.tsx +6 -42
  343. package/dist/migration-templates/app-fullstack/client/components/ui/card.tsx +1 -4
  344. package/dist/migration-templates/app-fullstack/client/components/ui/checkbox.tsx +4 -29
  345. package/dist/migration-templates/app-fullstack/client/components/ui/date-range-picker.tsx +13 -154
  346. package/dist/migration-templates/app-fullstack/client/components/ui/dialog.tsx +7 -34
  347. package/dist/migration-templates/app-fullstack/client/components/ui/file-dropzone.tsx +12 -95
  348. package/dist/migration-templates/app-fullstack/client/components/ui/file-input.tsx +12 -73
  349. package/dist/migration-templates/app-fullstack/client/components/ui/hover-card.tsx +10 -66
  350. package/dist/migration-templates/app-fullstack/client/components/ui/icon.tsx +3 -16
  351. package/dist/migration-templates/app-fullstack/client/components/ui/image.tsx +4 -16
  352. package/dist/migration-templates/app-fullstack/client/components/ui/input.tsx +18 -159
  353. package/dist/migration-templates/app-fullstack/client/components/ui/label.tsx +1 -4
  354. package/dist/migration-templates/app-fullstack/client/components/ui/line-chart.tsx +32 -148
  355. package/dist/migration-templates/app-fullstack/client/components/ui/link.tsx +4 -24
  356. package/dist/migration-templates/app-fullstack/client/components/ui/navigation-menu.tsx +3 -24
  357. package/dist/migration-templates/app-fullstack/client/components/ui/pagination.tsx +4 -24
  358. package/dist/migration-templates/app-fullstack/client/components/ui/pie-chart.tsx +28 -142
  359. package/dist/migration-templates/app-fullstack/client/components/ui/popover.tsx +9 -61
  360. package/dist/migration-templates/app-fullstack/client/components/ui/progress.tsx +2 -11
  361. package/dist/migration-templates/app-fullstack/client/components/ui/radar-chart.tsx +37 -171
  362. package/dist/migration-templates/app-fullstack/client/components/ui/radial-chart.tsx +50 -202
  363. package/dist/migration-templates/app-fullstack/client/components/ui/select.tsx +5 -35
  364. package/dist/migration-templates/app-fullstack/client/components/ui/separator.tsx +1 -8
  365. package/dist/migration-templates/app-fullstack/client/components/ui/sheet.tsx +7 -40
  366. package/dist/migration-templates/app-fullstack/client/components/ui/sidebar.tsx +3 -35
  367. package/dist/migration-templates/app-fullstack/client/components/ui/slider.tsx +11 -95
  368. package/dist/migration-templates/app-fullstack/client/components/ui/switch.tsx +5 -32
  369. package/dist/migration-templates/app-fullstack/client/components/ui/textarea.tsx +13 -90
  370. package/dist/migration-templates/app-fullstack/client/components/ui/toggle-group.tsx +11 -75
  371. package/dist/migration-templates/app-fullstack/client/components/ui/toggle.tsx +8 -70
  372. package/dist/migration-templates/app-fullstack/client/components/ui/tooltip.tsx +9 -62
  373. package/dist/parsing/imports.d.ts +22 -0
  374. package/dist/parsing/imports.d.ts.map +1 -1
  375. package/dist/parsing/imports.js +71 -0
  376. package/dist/parsing/imports.js.map +1 -1
  377. package/dist/reconnect-guard-plugin.d.ts +53 -0
  378. package/dist/reconnect-guard-plugin.d.ts.map +1 -0
  379. package/dist/reconnect-guard-plugin.js +203 -0
  380. package/dist/reconnect-guard-plugin.js.map +1 -0
  381. package/dist/resolver.d.ts +2 -1
  382. package/dist/resolver.d.ts.map +1 -1
  383. package/dist/resolver.js +4 -6
  384. package/dist/resolver.js.map +1 -1
  385. package/dist/router-parser-metrics.d.ts +2 -1
  386. package/dist/router-parser-metrics.d.ts.map +1 -1
  387. package/dist/router-parser-metrics.js.map +1 -1
  388. package/dist/router-parser.d.ts +10 -1
  389. package/dist/router-parser.d.ts.map +1 -1
  390. package/dist/router-parser.js +306 -69
  391. package/dist/router-parser.js.map +1 -1
  392. package/dist/scan-scope-merge-metrics.d.ts +2 -0
  393. package/dist/scan-scope-merge-metrics.d.ts.map +1 -0
  394. package/dist/scan-scope-merge-metrics.js +18 -0
  395. package/dist/scan-scope-merge-metrics.js.map +1 -0
  396. package/dist/scan-scope-merge.d.ts +2 -2
  397. package/dist/scan-scope-merge.d.ts.map +1 -1
  398. package/dist/scan-scope-merge.js +64 -14
  399. package/dist/scan-scope-merge.js.map +1 -1
  400. package/dist/server-rpc/index.d.ts.map +1 -1
  401. package/dist/server-rpc/index.js +12 -2
  402. package/dist/server-rpc/index.js.map +1 -1
  403. package/dist/socket-manager.d.ts +1 -1
  404. package/dist/socket-manager.d.ts.map +1 -1
  405. package/dist/socket-manager.js +276 -15
  406. package/dist/socket-manager.js.map +1 -1
  407. package/dist/sync-service/download.js +2 -2
  408. package/dist/sync-service/download.js.map +1 -1
  409. package/dist/sync-service/index.d.ts +95 -22
  410. package/dist/sync-service/index.d.ts.map +1 -1
  411. package/dist/sync-service/index.js +402 -56
  412. package/dist/sync-service/index.js.map +1 -1
  413. package/dist/sync-service/page-reference-guard.d.ts +17 -0
  414. package/dist/sync-service/page-reference-guard.d.ts.map +1 -0
  415. package/dist/sync-service/page-reference-guard.js +170 -0
  416. package/dist/sync-service/page-reference-guard.js.map +1 -0
  417. package/dist/util.d.ts.map +1 -1
  418. package/dist/util.js +16 -2
  419. package/dist/util.js.map +1 -1
  420. package/package.json +15 -14
@@ -32,6 +32,7 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
32
32
  if (target) Object.defineProperty(target, contextIn.name, descriptor);
33
33
  done = true;
34
34
  };
35
+ import { isUtf8 } from "node:buffer";
35
36
  import { exec, execFile } from "node:child_process";
36
37
  import { readFile as fsReadFile, mkdir, writeFile, access, rm, stat, readdir, } from "node:fs/promises";
37
38
  import * as path from "node:path";
@@ -58,6 +59,7 @@ import { DraftManager, validateFileOperation, } from "./filesystem/index.js";
58
59
  import { Linter } from "./linter.js";
59
60
  import { parseNpmJsonDiagnostic, parseNpmJsonError, parseNpmJsonSuccess, } from "./npm-error-parser.js";
60
61
  import { prepareForPrivateRegistry, shouldIgnoreInstallScripts, } from "./npm-registry.js";
62
+ import { parseTypecheckOutputByPath } from "./typecheck-output-parser.js";
61
63
  import { applyPackageSubstitutions, runVulnerabilityGate, } from "./vulnerability-gate.js";
62
64
  const execPromise = promisify(exec);
63
65
  const execFilePromise = promisify(execFile);
@@ -345,7 +347,7 @@ let AppShell = (() => {
345
347
  appShellQueueExecuteMs: executeMs,
346
348
  appShellQueueOperation: operationName,
347
349
  appShellQueueWaitMs: queueWaitMs,
348
- ...(metadata ?? {}),
350
+ ...metadata,
349
351
  },
350
352
  });
351
353
  }
@@ -377,19 +379,7 @@ let AppShell = (() => {
377
379
  });
378
380
  }
379
381
  async runTypecheck(abortSignal) {
380
- const output = await this.runTypecheckRawOutput(abortSignal);
381
- if (!output) {
382
- return null;
383
- }
384
- const parsed = output.split("\n").reduce((acc, line) => {
385
- const [filePath, _rest] = line.split("(");
386
- if (filePath && filePath.trim() !== "") {
387
- acc[filePath] = [...(acc[filePath] || []), line];
388
- return acc;
389
- }
390
- return acc;
391
- }, {});
392
- return Object.keys(parsed).length > 0 ? parsed : null;
382
+ return parseTypecheckOutputByPath(await this.runTypecheckRawOutput(abortSignal));
393
383
  }
394
384
  async runTypecheckRawOutput(abortSignal) {
395
385
  const command = process.env.SUPERBLOCKS_SERVER_ENV === "local"
@@ -787,7 +777,7 @@ let AppShell = (() => {
787
777
  // Audit reporting is best-effort and must not affect the install.
788
778
  }
789
779
  }
790
- maybeReportBlockedInstall(err, runner) {
780
+ maybeReportBlockedInstall(err, runner, triageVerdicts) {
791
781
  if (!(err instanceof NpmInstallBlocked))
792
782
  return;
793
783
  // Audit only real CVE/malware findings — index/probe failures are fail-closed
@@ -817,17 +807,12 @@ let AppShell = (() => {
817
807
  npmErrorCode: err.npmErrorCode,
818
808
  runner,
819
809
  occurredAt: Date.now(),
810
+ ...(triageVerdicts?.length ? { triageVerdicts } : {}),
820
811
  ...(vulnerabilities?.length ? { vulnerabilities } : {}),
821
812
  });
822
813
  }
823
- reportNpmTriageVerdict(verdict) {
824
- this.safeAudit({
825
- occurredAt: Date.now(),
826
- packages: [verdict.package],
827
- reason: "vulnerability_triaged",
828
- runner: "install_specific",
829
- triage: verdict,
830
- });
814
+ reportNpmBlockedInstall(error, triageVerdicts) {
815
+ this.maybeReportBlockedInstall(error, "install_specific", triageVerdicts);
831
816
  }
832
817
  reportNpmUserOverride(args) {
833
818
  this.safeAudit({
@@ -836,6 +821,7 @@ let AppShell = (() => {
836
821
  reason: "vulnerability_user_override",
837
822
  runner: "install_specific",
838
823
  userOverride: {
824
+ ...(args.advisories?.length ? { advisories: args.advisories } : {}),
839
825
  packages: args.packages,
840
826
  reason: args.reason,
841
827
  },
@@ -1742,6 +1728,7 @@ let AppShell = (() => {
1742
1728
  if (options?.cveUserOverride &&
1743
1729
  remediation.userOverridePackages?.length) {
1744
1730
  this.reportNpmUserOverride({
1731
+ advisories: remediation.userOverrideAdvisories,
1745
1732
  packages: remediation.userOverridePackages,
1746
1733
  reason: options.cveUserOverride.reason,
1747
1734
  });
@@ -1751,7 +1738,9 @@ let AppShell = (() => {
1751
1738
  }
1752
1739
  catch (err) {
1753
1740
  outcome = outcomeFromInstallError(err);
1754
- this.maybeReportBlockedInstall(err, "install_specific");
1741
+ if (!options?.deferBlockedAudit) {
1742
+ this.maybeReportBlockedInstall(err, "install_specific");
1743
+ }
1755
1744
  throw err;
1756
1745
  }
1757
1746
  finally {
@@ -1931,9 +1920,6 @@ let AppShell = (() => {
1931
1920
  }
1932
1921
  });
1933
1922
  }
1934
- // ============================================================================
1935
- // Filesystem Operations
1936
- // ============================================================================
1937
1923
  /**
1938
1924
  * Reads a single file's content from the application.
1939
1925
  *
@@ -2041,6 +2027,40 @@ let AppShell = (() => {
2041
2027
  * Called directly by writeFile (no queue wrapper needed since draftInterface queues).
2042
2028
  */
2043
2029
  async writeFileInternal(relativePath, rawContent) {
2030
+ const content = this.prepareFileContent(relativePath, rawContent);
2031
+ if (this.virtualFs.isVirtualPath(relativePath)) {
2032
+ if (typeof content !== "string") {
2033
+ throw new Error(`Cannot write binary content to virtual file: ${relativePath}`);
2034
+ }
2035
+ await this.virtualFs.write(relativePath, content, {
2036
+ appRootDirPath: this.appRootDirPath,
2037
+ });
2038
+ await this.draftManager.createDraftMarker(relativePath);
2039
+ return;
2040
+ }
2041
+ const change = this.preparePhysicalWrite(relativePath, content);
2042
+ await this.draftManager.applyDraftChanges([change]);
2043
+ }
2044
+ /**
2045
+ * Reject a write of TypeScript that does not parse, before it reaches disk.
2046
+ * A file that does not parse blanks the preview, and nothing downstream can
2047
+ * read what it imports.
2048
+ */
2049
+ rejectUnparseableTypeScript(relativePath, content) {
2050
+ if (!relativePath.endsWith(".ts") && !relativePath.endsWith(".tsx")) {
2051
+ return;
2052
+ }
2053
+ try {
2054
+ parseTsxModule(typeof content === "string" ? content : content.toString("utf8"), relativePath);
2055
+ }
2056
+ catch (error) {
2057
+ getLogger().warn(`TSX parse validation rejected write: ${relativePath}`, getErrorMeta(error));
2058
+ emitWriteTsxParseRejectedMetric(relativePath.endsWith(".tsx") ? "tsx" : "ts");
2059
+ const message = error instanceof Error ? error.message : String(error);
2060
+ throw new ToolExecutionError(`${relativePath}: ${message}`);
2061
+ }
2062
+ }
2063
+ prepareFileContent(relativePath, rawContent) {
2044
2064
  // Deterministic safety net: rewrite value imports of `lucide-react/dynamic`
2045
2065
  // type-only exports (e.g. `IconName`) into type imports. A stray value
2046
2066
  // import compiles but crashes the app at runtime and blanks the preview,
@@ -2061,34 +2081,12 @@ let AppShell = (() => {
2061
2081
  }
2062
2082
  }
2063
2083
  }
2064
- const isVirtual = this.virtualFs.isVirtualPath(relativePath);
2065
- if (Buffer.isBuffer(content) && isVirtual) {
2066
- throw new Error(`Cannot write binary content to virtual file: ${relativePath}`);
2067
- }
2068
- if (!isVirtual) {
2069
- validateFileOperation("write", relativePath, this.appRootDirPath, undefined, this.pathValidator, this.getFileOperationBlacklistOptions());
2070
- if (relativePath.endsWith(".ts") || relativePath.endsWith(".tsx")) {
2071
- try {
2072
- parseTsxModule(typeof content === "string" ? content : content.toString("utf8"), relativePath);
2073
- }
2074
- catch (error) {
2075
- getLogger().warn(`TSX parse validation rejected write: ${relativePath}`, getErrorMeta(error));
2076
- emitWriteTsxParseRejectedMetric(relativePath.endsWith(".tsx") ? "tsx" : "ts");
2077
- const message = error instanceof Error ? error.message : String(error);
2078
- throw new ToolExecutionError(`${relativePath}: ${message}`);
2079
- }
2080
- }
2081
- }
2082
- if (isVirtual) {
2083
- await this.virtualFs.write(relativePath, content, {
2084
- appRootDirPath: this.appRootDirPath,
2085
- });
2086
- await this.draftManager.createDraftMarker(relativePath);
2087
- return;
2088
- }
2089
- const absolutePath = path.join(this.appRootDirPath, relativePath);
2090
- await mkdir(path.dirname(absolutePath), { recursive: true });
2091
- await this.draftManager.createDraft(relativePath, content);
2084
+ return content;
2085
+ }
2086
+ preparePhysicalWrite(relativePath, content) {
2087
+ validateFileOperation("write", relativePath, this.appRootDirPath, undefined, this.pathValidator, this.getFileOperationBlacklistOptions());
2088
+ this.rejectUnparseableTypeScript(relativePath, content);
2089
+ return { filePath: relativePath, content };
2092
2090
  }
2093
2091
  resolveAppRelativePath(relativePath, direction) {
2094
2092
  if (path.isAbsolute(relativePath)) {
@@ -2239,26 +2237,34 @@ let AppShell = (() => {
2239
2237
  result,
2240
2238
  sourceDir: options.sourceDir,
2241
2239
  });
2240
+ const hasVirtualDestination = entries.some((entry) => this.virtualFs.isVirtualPath(entry.destinationPath));
2241
+ const hasPhysicalDestination = entries.some((entry) => !this.virtualFs.isVirtualPath(entry.destinationPath));
2242
+ if (hasVirtualDestination && hasPhysicalDestination) {
2243
+ throw new Error("Cannot copy a directory to mixed physical and virtual files. Copy the physical and virtual files separately.");
2244
+ }
2242
2245
  if ((options.conflictStrategy ?? "fail") === "fail") {
2243
2246
  for (const entry of entries) {
2244
2247
  await this.preflightCopyFile(entry);
2245
2248
  }
2246
2249
  }
2250
+ const physicalChanges = [];
2247
2251
  for (const entry of entries) {
2248
- await this.copyFileInternal({
2249
- // The "fail" strategy is preflighted above so we avoid copying part of
2250
- // a directory before discovering an existing destination. This is not
2251
- // fully atomic: a destination could still appear between preflight and
2252
- // write. Closing that race properly needs a reentrant fs-operation lock
2253
- // so the whole directory copy can hold the lock while nested draft
2254
- // writes reuse the parent lock instead of deadlocking.
2255
- conflictStrategy: (options.conflictStrategy ?? "fail") === "fail"
2256
- ? "replace"
2257
- : options.conflictStrategy,
2258
- destinationPath: entry.destinationPath,
2259
- result,
2260
- sourcePath: entry.sourcePath,
2261
- });
2252
+ const destinationExists = await this.pathExists(entry.destinationPath);
2253
+ if (destinationExists && options.conflictStrategy === "skip") {
2254
+ this.recordSkipped(result, entry.destinationPath, "destination_exists");
2255
+ continue;
2256
+ }
2257
+ const content = await fsReadFile(this.resolveAppRelativePath(entry.sourcePath, "from"));
2258
+ if (this.virtualFs.isVirtualPath(entry.destinationPath)) {
2259
+ await this.writeFileInternal(entry.destinationPath, isUtf8(content) ? content.toString("utf-8") : content);
2260
+ }
2261
+ else {
2262
+ physicalChanges.push(this.preparePhysicalWrite(entry.destinationPath, this.prepareFileContent(entry.destinationPath, content)));
2263
+ }
2264
+ this.recordCopied(result, entry.destinationPath);
2265
+ }
2266
+ if (physicalChanges.length > 0) {
2267
+ await this.draftManager.applyDraftChanges(physicalChanges);
2262
2268
  }
2263
2269
  llmobs.annotate({
2264
2270
  metadata: {
@@ -2302,23 +2308,13 @@ let AppShell = (() => {
2302
2308
  validateFileOperation("delete", relativePath, this.appRootDirPath, undefined, this.pathValidator, this.getFileOperationBlacklistOptions());
2303
2309
  const absolutePath = path.join(this.appRootDirPath, relativePath);
2304
2310
  // Check if path exists and what type it is
2305
- let stats;
2306
2311
  try {
2307
- stats = await stat(absolutePath);
2312
+ await stat(absolutePath);
2308
2313
  }
2309
2314
  catch {
2310
2315
  throw new Error(`File or directory ${relativePath} not found`);
2311
2316
  }
2312
- if (stats.isDirectory()) {
2313
- // Recursively delete directory contents
2314
- await this.deleteDirectoryRecursive(absolutePath);
2315
- // Remove the directory itself
2316
- await rm(absolutePath, { recursive: true, force: true });
2317
- }
2318
- else {
2319
- // Single file deletion
2320
- await this.draftManager.createDraftDelete(relativePath);
2321
- }
2317
+ await this.draftManager.createDraftDelete(relativePath);
2322
2318
  }
2323
2319
  /**
2324
2320
  * Implementation of listFiles supporting both signatures.
@@ -2490,14 +2486,23 @@ let AppShell = (() => {
2490
2486
  if (this.isReadRequired(oldPath)) {
2491
2487
  throw new Error(`Cannot rename ${oldPath} without reading it first. Please read the file before attempting to rename it.`);
2492
2488
  }
2493
- // Read content first (this is just fs read, no queue needed)
2489
+ const oldIsVirtual = this.virtualFs.isVirtualPath(oldPath);
2490
+ const newIsVirtual = this.virtualFs.isVirtualPath(newPath);
2491
+ if (oldIsVirtual !== newIsVirtual) {
2492
+ throw new Error("Cannot rename between physical and virtual files. Copy the file and delete the source separately.");
2493
+ }
2494
2494
  const content = await this.readFileInternal(oldPath);
2495
- await this.writeFileInternal(newPath, content);
2496
- await this.deleteFileInternal(oldPath);
2495
+ if (!oldIsVirtual && !newIsVirtual) {
2496
+ await this.draftManager.applyDraftChanges([
2497
+ this.preparePhysicalWrite(newPath, this.prepareFileContent(newPath, content)),
2498
+ { filePath: oldPath },
2499
+ ]);
2500
+ }
2501
+ else {
2502
+ await this.writeFileInternal(newPath, content);
2503
+ await this.deleteFileInternal(oldPath);
2504
+ }
2497
2505
  }
2498
- // ============================================================================
2499
- // Draft Management
2500
- // ============================================================================
2501
2506
  /**
2502
2507
  * Checks if there are any pending draft changes.
2503
2508
  *
@@ -2544,9 +2549,6 @@ let AppShell = (() => {
2544
2549
  getDraftInterface() {
2545
2550
  return this.draftManager?.getInterface();
2546
2551
  }
2547
- // ============================================================================
2548
- // Read Tracking (Read-Before-Write Enforcement)
2549
- // ============================================================================
2550
2552
  /**
2551
2553
  * Check if a file must be read before it can be written.
2552
2554
  *
@@ -2579,28 +2581,6 @@ let AppShell = (() => {
2579
2581
  useLessProtectedPatterns: this.enableDeletingLockfiles,
2580
2582
  };
2581
2583
  }
2582
- // ============================================================================
2583
- // Private Helpers
2584
- // ============================================================================
2585
- /**
2586
- * Recursively deletes directory contents by creating draft deletes.
2587
- */
2588
- async deleteDirectoryRecursive(dirPath) {
2589
- if (!this.draftManager) {
2590
- throw new Error("DraftInterface is required for directory deletion");
2591
- }
2592
- const entries = await readdir(dirPath, { withFileTypes: true });
2593
- for (const entry of entries) {
2594
- const fullPath = path.join(dirPath, entry.name);
2595
- const relativePath = path.relative(this.appRootDirPath, fullPath);
2596
- if (entry.isDirectory()) {
2597
- await this.deleteDirectoryRecursive(fullPath);
2598
- }
2599
- else {
2600
- await this.draftManager.createDraftDelete(relativePath);
2601
- }
2602
- }
2603
- }
2604
2584
  };
2605
2585
  })();
2606
2586
  export { AppShell };