@superblocksteam/vite-plugin-file-sync 2.0.74 → 2.0.75-next.3

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 (339) hide show
  1. package/dist/ai-service/agent/middleware.d.ts +14 -0
  2. package/dist/ai-service/agent/middleware.d.ts.map +1 -1
  3. package/dist/ai-service/agent/middleware.js +40 -0
  4. package/dist/ai-service/agent/middleware.js.map +1 -1
  5. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  6. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +66 -5
  7. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  8. package/dist/ai-service/agent/subagents/apis/static-analysis.d.ts.map +1 -1
  9. package/dist/ai-service/agent/subagents/apis/static-analysis.js +11 -5
  10. package/dist/ai-service/agent/subagents/apis/static-analysis.js.map +1 -1
  11. package/dist/ai-service/agent/subagents/testing/prompt-builder.d.ts.map +1 -1
  12. package/dist/ai-service/agent/subagents/testing/prompt-builder.js +15 -0
  13. package/dist/ai-service/agent/subagents/testing/prompt-builder.js.map +1 -1
  14. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  15. package/dist/ai-service/agent/tool-message-utils.js +3 -0
  16. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  17. package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -1
  18. package/dist/ai-service/agent/tools/apis/build-api-artifact.js +11 -3
  19. package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -1
  20. package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
  21. package/dist/ai-service/agent/tools/apis/build-api.js +6 -0
  22. package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
  23. package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts.map +1 -1
  24. package/dist/ai-service/agent/tools/apis/get-api-docs.js +99 -3
  25. package/dist/ai-service/agent/tools/apis/get-api-docs.js.map +1 -1
  26. package/dist/ai-service/agent/tools/apis/integration-types.d.ts.map +1 -1
  27. package/dist/ai-service/agent/tools/apis/integration-types.js +69 -17
  28. package/dist/ai-service/agent/tools/apis/integration-types.js.map +1 -1
  29. package/dist/ai-service/agent/tools/apis/test-api.d.ts +1 -1
  30. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
  31. package/dist/ai-service/agent/tools/apis/test-api.js +26 -45
  32. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  33. package/dist/ai-service/agent/tools/apis/write-api.d.ts +2 -2
  34. package/dist/ai-service/agent/tools/apis/write-api.d.ts.map +1 -1
  35. package/dist/ai-service/agent/tools/apis/write-api.js +8 -2
  36. package/dist/ai-service/agent/tools/apis/write-api.js.map +1 -1
  37. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
  38. package/dist/ai-service/agent/tools/build-capture-screenshot.js +3 -0
  39. package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
  40. package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -1
  41. package/dist/ai-service/agent/tools/build-debug.js +58 -6
  42. package/dist/ai-service/agent/tools/build-debug.js.map +1 -1
  43. package/dist/ai-service/agent/tools/build-delete-file.d.ts +1 -1
  44. package/dist/ai-service/agent/tools/build-delete-file.d.ts.map +1 -1
  45. package/dist/ai-service/agent/tools/build-delete-file.js +27 -196
  46. package/dist/ai-service/agent/tools/build-delete-file.js.map +1 -1
  47. package/dist/ai-service/agent/tools/build-edit-file.d.ts +1 -1
  48. package/dist/ai-service/agent/tools/build-edit-file.d.ts.map +1 -1
  49. package/dist/ai-service/agent/tools/build-edit-file.js +12 -22
  50. package/dist/ai-service/agent/tools/build-edit-file.js.map +1 -1
  51. package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
  52. package/dist/ai-service/agent/tools/build-finalize.js +3 -0
  53. package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
  54. package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
  55. package/dist/ai-service/agent/tools/build-install-packages.js +15 -0
  56. package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
  57. package/dist/ai-service/agent/tools/build-list-files.d.ts +1 -1
  58. package/dist/ai-service/agent/tools/build-list-files.d.ts.map +1 -1
  59. package/dist/ai-service/agent/tools/build-list-files.js +6 -14
  60. package/dist/ai-service/agent/tools/build-list-files.js.map +1 -1
  61. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts.map +1 -1
  62. package/dist/ai-service/agent/tools/build-manage-checklist.js +9 -0
  63. package/dist/ai-service/agent/tools/build-manage-checklist.js.map +1 -1
  64. package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts +2 -2
  65. package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts.map +1 -1
  66. package/dist/ai-service/agent/tools/build-multi-edit-file.js +8 -25
  67. package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -1
  68. package/dist/ai-service/agent/tools/build-read-file.d.ts +10 -4
  69. package/dist/ai-service/agent/tools/build-read-file.d.ts.map +1 -1
  70. package/dist/ai-service/agent/tools/build-read-file.js +75 -77
  71. package/dist/ai-service/agent/tools/build-read-file.js.map +1 -1
  72. package/dist/ai-service/agent/tools/build-reload-file.d.ts.map +1 -1
  73. package/dist/ai-service/agent/tools/build-reload-file.js +5 -0
  74. package/dist/ai-service/agent/tools/build-reload-file.js.map +1 -1
  75. package/dist/ai-service/agent/tools/build-rename-file.d.ts +1 -1
  76. package/dist/ai-service/agent/tools/build-rename-file.d.ts.map +1 -1
  77. package/dist/ai-service/agent/tools/build-rename-file.js +3 -50
  78. package/dist/ai-service/agent/tools/build-rename-file.js.map +1 -1
  79. package/dist/ai-service/agent/tools/build-validate-icons.d.ts.map +1 -1
  80. package/dist/ai-service/agent/tools/build-validate-icons.js +8 -0
  81. package/dist/ai-service/agent/tools/build-validate-icons.js.map +1 -1
  82. package/dist/ai-service/agent/tools/build-write-file.d.ts +2 -2
  83. package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -1
  84. package/dist/ai-service/agent/tools/build-write-file.js +7 -17
  85. package/dist/ai-service/agent/tools/build-write-file.js.map +1 -1
  86. package/dist/ai-service/agent/tools/clear-error-cache.d.ts +10 -0
  87. package/dist/ai-service/agent/tools/clear-error-cache.d.ts.map +1 -0
  88. package/dist/ai-service/agent/tools/clear-error-cache.js +38 -0
  89. package/dist/ai-service/agent/tools/clear-error-cache.js.map +1 -0
  90. package/dist/ai-service/agent/tools/get-console-logs.d.ts.map +1 -1
  91. package/dist/ai-service/agent/tools/get-console-logs.js +6 -0
  92. package/dist/ai-service/agent/tools/get-console-logs.js.map +1 -1
  93. package/dist/ai-service/agent/tools/get-runtime-errors.d.ts.map +1 -1
  94. package/dist/ai-service/agent/tools/get-runtime-errors.js +4 -0
  95. package/dist/ai-service/agent/tools/get-runtime-errors.js.map +1 -1
  96. package/dist/ai-service/agent/tools/index.d.ts +1 -0
  97. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  98. package/dist/ai-service/agent/tools/index.js +1 -0
  99. package/dist/ai-service/agent/tools/index.js.map +1 -1
  100. package/dist/ai-service/agent/tools/integrations/execute-request.d.ts.map +1 -1
  101. package/dist/ai-service/agent/tools/integrations/execute-request.js +56 -9
  102. package/dist/ai-service/agent/tools/integrations/execute-request.js.map +1 -1
  103. package/dist/ai-service/agent/tools/integrations/metadata.d.ts.map +1 -1
  104. package/dist/ai-service/agent/tools/integrations/metadata.js +6 -0
  105. package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -1
  106. package/dist/ai-service/agent/tools/integrations/run-code.d.ts.map +1 -1
  107. package/dist/ai-service/agent/tools/integrations/run-code.js +9 -0
  108. package/dist/ai-service/agent/tools/integrations/run-code.js.map +1 -1
  109. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  110. package/dist/ai-service/agent/tools.js +27 -6
  111. package/dist/ai-service/agent/tools.js.map +1 -1
  112. package/dist/ai-service/agent/tools2/registry.d.ts +15 -0
  113. package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
  114. package/dist/ai-service/agent/tools2/registry.js +30 -0
  115. package/dist/ai-service/agent/tools2/registry.js.map +1 -1
  116. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts.map +1 -1
  117. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js +11 -1
  118. package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js.map +1 -1
  119. package/dist/ai-service/agent/tools2/tools/edit.d.ts +4 -1
  120. package/dist/ai-service/agent/tools2/tools/edit.d.ts.map +1 -1
  121. package/dist/ai-service/agent/tools2/tools/edit.js +10 -8
  122. package/dist/ai-service/agent/tools2/tools/edit.js.map +1 -1
  123. package/dist/ai-service/agent/tools2/tools/end-test-run.d.ts.map +1 -1
  124. package/dist/ai-service/agent/tools2/tools/end-test-run.js +5 -0
  125. package/dist/ai-service/agent/tools2/tools/end-test-run.js.map +1 -1
  126. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +2 -0
  127. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  128. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +24 -0
  129. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  130. package/dist/ai-service/agent/tools2/tools/glob.d.ts +4 -1
  131. package/dist/ai-service/agent/tools2/tools/glob.d.ts.map +1 -1
  132. package/dist/ai-service/agent/tools2/tools/glob.js +25 -85
  133. package/dist/ai-service/agent/tools2/tools/glob.js.map +1 -1
  134. package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts.map +1 -1
  135. package/dist/ai-service/agent/tools2/tools/grep-metadata.js +9 -0
  136. package/dist/ai-service/agent/tools2/tools/grep-metadata.js.map +1 -1
  137. package/dist/ai-service/agent/tools2/tools/grep.d.ts +1 -1
  138. package/dist/ai-service/agent/tools2/tools/grep.d.ts.map +1 -1
  139. package/dist/ai-service/agent/tools2/tools/grep.js +22 -5
  140. package/dist/ai-service/agent/tools2/tools/grep.js.map +1 -1
  141. package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts.map +1 -1
  142. package/dist/ai-service/agent/tools2/tools/list-attachments.js +4 -0
  143. package/dist/ai-service/agent/tools2/tools/list-attachments.js.map +1 -1
  144. package/dist/ai-service/agent/tools2/tools/ls.d.ts +8 -1
  145. package/dist/ai-service/agent/tools2/tools/ls.d.ts.map +1 -1
  146. package/dist/ai-service/agent/tools2/tools/ls.js +102 -83
  147. package/dist/ai-service/agent/tools2/tools/ls.js.map +1 -1
  148. package/dist/ai-service/agent/tools2/tools/read.d.ts +5 -2
  149. package/dist/ai-service/agent/tools2/tools/read.d.ts.map +1 -1
  150. package/dist/ai-service/agent/tools2/tools/read.js +24 -12
  151. package/dist/ai-service/agent/tools2/tools/read.js.map +1 -1
  152. package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts.map +1 -1
  153. package/dist/ai-service/agent/tools2/tools/start-test-run.js +13 -0
  154. package/dist/ai-service/agent/tools2/tools/start-test-run.js.map +1 -1
  155. package/dist/ai-service/agent/tools2/tools/update-test-case-status.d.ts.map +1 -1
  156. package/dist/ai-service/agent/tools2/tools/update-test-case-status.js +6 -0
  157. package/dist/ai-service/agent/tools2/tools/update-test-case-status.js.map +1 -1
  158. package/dist/ai-service/agent/tools2/tools/write.d.ts +4 -1
  159. package/dist/ai-service/agent/tools2/tools/write.d.ts.map +1 -1
  160. package/dist/ai-service/agent/tools2/tools/write.js +9 -4
  161. package/dist/ai-service/agent/tools2/tools/write.js.map +1 -1
  162. package/dist/ai-service/agent/tools2/types.d.ts +25 -0
  163. package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
  164. package/dist/ai-service/agent/tools2/types.js.map +1 -1
  165. package/dist/ai-service/app-interface/constants.d.ts +77 -0
  166. package/dist/ai-service/app-interface/constants.d.ts.map +1 -0
  167. package/dist/ai-service/app-interface/constants.js +129 -0
  168. package/dist/ai-service/app-interface/constants.js.map +1 -0
  169. package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts +87 -0
  170. package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts.map +1 -0
  171. package/dist/ai-service/app-interface/filesystem/draft-manager.js +91 -0
  172. package/dist/ai-service/app-interface/filesystem/draft-manager.js.map +1 -0
  173. package/dist/ai-service/app-interface/filesystem/handlers/api-handler.d.ts +35 -0
  174. package/dist/ai-service/app-interface/filesystem/handlers/api-handler.d.ts.map +1 -0
  175. package/dist/ai-service/app-interface/filesystem/handlers/api-handler.js +236 -0
  176. package/dist/ai-service/app-interface/filesystem/handlers/api-handler.js.map +1 -0
  177. package/dist/ai-service/app-interface/filesystem/handlers/index.d.ts +5 -0
  178. package/dist/ai-service/app-interface/filesystem/handlers/index.d.ts.map +1 -0
  179. package/dist/ai-service/app-interface/filesystem/handlers/index.js +5 -0
  180. package/dist/ai-service/app-interface/filesystem/handlers/index.js.map +1 -0
  181. package/dist/ai-service/app-interface/filesystem/index.d.ts +12 -0
  182. package/dist/ai-service/app-interface/filesystem/index.d.ts.map +1 -0
  183. package/dist/ai-service/app-interface/filesystem/index.js +11 -0
  184. package/dist/ai-service/app-interface/filesystem/index.js.map +1 -0
  185. package/dist/ai-service/app-interface/filesystem/validation.d.ts +71 -0
  186. package/dist/ai-service/app-interface/filesystem/validation.d.ts.map +1 -0
  187. package/dist/ai-service/app-interface/filesystem/validation.js +170 -0
  188. package/dist/ai-service/app-interface/filesystem/validation.js.map +1 -0
  189. package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts +108 -0
  190. package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts.map +1 -0
  191. package/dist/ai-service/app-interface/filesystem/virtual-file-system.js +157 -0
  192. package/dist/ai-service/app-interface/filesystem/virtual-file-system.js.map +1 -0
  193. package/dist/ai-service/app-interface/filesystem/virtual-fs-types.d.ts +126 -0
  194. package/dist/ai-service/app-interface/filesystem/virtual-fs-types.d.ts.map +1 -0
  195. package/dist/ai-service/app-interface/filesystem/virtual-fs-types.js +9 -0
  196. package/dist/ai-service/app-interface/filesystem/virtual-fs-types.js.map +1 -0
  197. package/dist/ai-service/app-interface/linter.d.ts +4 -1
  198. package/dist/ai-service/app-interface/linter.d.ts.map +1 -1
  199. package/dist/ai-service/app-interface/linter.js +10 -6
  200. package/dist/ai-service/app-interface/linter.js.map +1 -1
  201. package/dist/ai-service/app-interface/shell.d.ts +205 -1
  202. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  203. package/dist/ai-service/app-interface/shell.js +474 -14
  204. package/dist/ai-service/app-interface/shell.js.map +1 -1
  205. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  206. package/dist/ai-service/chat/chat-session-store.js +8 -0
  207. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  208. package/dist/ai-service/features.d.ts +8 -0
  209. package/dist/ai-service/features.d.ts.map +1 -1
  210. package/dist/ai-service/features.js +8 -0
  211. package/dist/ai-service/features.js.map +1 -1
  212. package/dist/ai-service/index.d.ts +1 -1
  213. package/dist/ai-service/index.d.ts.map +1 -1
  214. package/dist/ai-service/index.js +26 -24
  215. package/dist/ai-service/index.js.map +1 -1
  216. package/dist/ai-service/judge/judge-executor.d.ts.map +1 -1
  217. package/dist/ai-service/judge/judge-executor.js +4 -0
  218. package/dist/ai-service/judge/judge-executor.js.map +1 -1
  219. package/dist/ai-service/llm/client.d.ts +19 -3
  220. package/dist/ai-service/llm/client.d.ts.map +1 -1
  221. package/dist/ai-service/llm/client.js +131 -12
  222. package/dist/ai-service/llm/client.js.map +1 -1
  223. package/dist/ai-service/llm/context/context.d.ts +4 -1
  224. package/dist/ai-service/llm/context/context.d.ts.map +1 -1
  225. package/dist/ai-service/llm/context/context.js +27 -5
  226. package/dist/ai-service/llm/context/context.js.map +1 -1
  227. package/dist/ai-service/llm/context/internal-types.d.ts +5 -0
  228. package/dist/ai-service/llm/context/internal-types.d.ts.map +1 -1
  229. package/dist/ai-service/llm/context/internal-types.js +5 -0
  230. package/dist/ai-service/llm/context/internal-types.js.map +1 -1
  231. package/dist/ai-service/llm/context/levels/l1.d.ts +4 -3
  232. package/dist/ai-service/llm/context/levels/l1.d.ts.map +1 -1
  233. package/dist/ai-service/llm/context/levels/l1.js +9 -8
  234. package/dist/ai-service/llm/context/levels/l1.js.map +1 -1
  235. package/dist/ai-service/llm/context/serialization.d.ts +8 -0
  236. package/dist/ai-service/llm/context/serialization.d.ts.map +1 -1
  237. package/dist/ai-service/llm/context/utils/content-compaction.d.ts +7 -5
  238. package/dist/ai-service/llm/context/utils/content-compaction.d.ts.map +1 -1
  239. package/dist/ai-service/llm/context/utils/content-compaction.js +27 -6
  240. package/dist/ai-service/llm/context/utils/content-compaction.js.map +1 -1
  241. package/dist/ai-service/llm/error.d.ts +1 -0
  242. package/dist/ai-service/llm/error.d.ts.map +1 -1
  243. package/dist/ai-service/llm/error.js +29 -3
  244. package/dist/ai-service/llm/error.js.map +1 -1
  245. package/dist/ai-service/llm/stream/config.d.ts +14 -5
  246. package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
  247. package/dist/ai-service/llm/stream/config.js +17 -5
  248. package/dist/ai-service/llm/stream/config.js.map +1 -1
  249. package/dist/ai-service/llm/stream/errors.d.ts.map +1 -1
  250. package/dist/ai-service/llm/stream/errors.js +7 -4
  251. package/dist/ai-service/llm/stream/errors.js.map +1 -1
  252. package/dist/ai-service/llm/stream/index.d.ts +4 -2
  253. package/dist/ai-service/llm/stream/index.d.ts.map +1 -1
  254. package/dist/ai-service/llm/stream/index.js +4 -2
  255. package/dist/ai-service/llm/stream/index.js.map +1 -1
  256. package/dist/ai-service/llm/stream/orchestrator.d.ts +1 -1
  257. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  258. package/dist/ai-service/llm/stream/orchestrator.js +5 -11
  259. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  260. package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
  261. package/dist/ai-service/llm/stream/retry-engine.js +3 -3
  262. package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
  263. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts +8 -0
  264. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts.map +1 -1
  265. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js +108 -0
  266. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js.map +1 -1
  267. package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts.map +1 -1
  268. package/dist/ai-service/mcp/embedded-playwright-mcp-server.js +360 -133
  269. package/dist/ai-service/mcp/embedded-playwright-mcp-server.js.map +1 -1
  270. package/dist/ai-service/security/index.d.ts +8 -0
  271. package/dist/ai-service/security/index.d.ts.map +1 -0
  272. package/dist/ai-service/security/index.js +8 -0
  273. package/dist/ai-service/security/index.js.map +1 -0
  274. package/dist/ai-service/security/safety-classifier.d.ts +103 -0
  275. package/dist/ai-service/security/safety-classifier.d.ts.map +1 -0
  276. package/dist/ai-service/security/safety-classifier.js +168 -0
  277. package/dist/ai-service/security/safety-classifier.js.map +1 -0
  278. package/dist/ai-service/security/secret-scanner.d.ts +145 -0
  279. package/dist/ai-service/security/secret-scanner.d.ts.map +1 -0
  280. package/dist/ai-service/security/secret-scanner.js +344 -0
  281. package/dist/ai-service/security/secret-scanner.js.map +1 -0
  282. package/dist/ai-service/state-machine/clark-fsm.d.ts +2 -1
  283. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  284. package/dist/ai-service/state-machine/clark-fsm.js +29 -8
  285. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  286. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  287. package/dist/ai-service/state-machine/handlers/agent-planning.js +17 -6
  288. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  289. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  290. package/dist/ai-service/state-machine/handlers/llm-generating.js +9 -1
  291. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  292. package/dist/ai-service/template-renderer.d.ts.map +1 -1
  293. package/dist/ai-service/template-renderer.js +4 -1
  294. package/dist/ai-service/template-renderer.js.map +1 -1
  295. package/dist/ai-service/transform/api-builder/shared.js +2 -2
  296. package/dist/ai-service/transform/api-builder/shared.js.map +1 -1
  297. package/dist/components-manager.d.ts.map +1 -1
  298. package/dist/components-manager.js +17 -12
  299. package/dist/components-manager.js.map +1 -1
  300. package/dist/ensure-app-provider.d.ts +2 -0
  301. package/dist/ensure-app-provider.d.ts.map +1 -0
  302. package/dist/ensure-app-provider.js +209 -0
  303. package/dist/ensure-app-provider.js.map +1 -0
  304. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  305. package/dist/file-sync-vite-plugin.js +22 -12
  306. package/dist/file-sync-vite-plugin.js.map +1 -1
  307. package/dist/file-system-manager.d.ts +0 -6
  308. package/dist/file-system-manager.d.ts.map +1 -1
  309. package/dist/file-system-manager.js +119 -144
  310. package/dist/file-system-manager.js.map +1 -1
  311. package/dist/parsing/util.d.ts.map +1 -1
  312. package/dist/parsing/util.js +5 -1
  313. package/dist/parsing/util.js.map +1 -1
  314. package/dist/socket-manager.d.ts.map +1 -1
  315. package/dist/socket-manager.js +5 -0
  316. package/dist/socket-manager.js.map +1 -1
  317. package/dist/source-tracker.d.ts +4 -0
  318. package/dist/source-tracker.d.ts.map +1 -1
  319. package/dist/source-tracker.js +15 -8
  320. package/dist/source-tracker.js.map +1 -1
  321. package/dist/sync-service/index.d.ts.map +1 -1
  322. package/dist/sync-service/index.js +13 -8
  323. package/dist/sync-service/index.js.map +1 -1
  324. package/dist/util/logger.d.ts.map +1 -1
  325. package/dist/util/logger.js +16 -0
  326. package/dist/util/logger.js.map +1 -1
  327. package/dist/util.d.ts +1 -1
  328. package/dist/util.d.ts.map +1 -1
  329. package/dist/util.js +4 -2
  330. package/dist/util.js.map +1 -1
  331. package/package.json +10 -16
  332. package/dist/ai-service/agent/tools/apis/api-source.d.ts +0 -24
  333. package/dist/ai-service/agent/tools/apis/api-source.d.ts.map +0 -1
  334. package/dist/ai-service/agent/tools/apis/api-source.js +0 -108
  335. package/dist/ai-service/agent/tools/apis/api-source.js.map +0 -1
  336. package/dist/ai-service/state-machine/helpers/file-read-tracker.d.ts +0 -7
  337. package/dist/ai-service/state-machine/helpers/file-read-tracker.d.ts.map +0 -1
  338. package/dist/ai-service/state-machine/helpers/file-read-tracker.js +0 -26
  339. package/dist/ai-service/state-machine/helpers/file-read-tracker.js.map +0 -1
@@ -0,0 +1,170 @@
1
+ /**
2
+ * File operation validation utilities.
3
+ *
4
+ * Provides centralized validation logic for all filesystem operations,
5
+ * including blacklist checking, path restrictions, and operation-specific rules.
6
+ */
7
+ import path from "node:path";
8
+ import { FILE_OPERATION_BLACKLIST, DEFAULT_VALIDATION_OPTIONS, } from "../constants.js";
9
+ /**
10
+ * Error thrown when a file operation fails validation.
11
+ */
12
+ export class FileValidationError extends Error {
13
+ code;
14
+ constructor(message, code) {
15
+ super(message);
16
+ this.code = code;
17
+ this.name = "FileValidationError";
18
+ }
19
+ }
20
+ /**
21
+ * Checks if a path is an API file path (starts with "apis/").
22
+ *
23
+ * @param filePath - Relative file path to check
24
+ * @returns true if the path is an API file path
25
+ */
26
+ export function isApiFilePath(filePath) {
27
+ return filePath.startsWith("apis/");
28
+ }
29
+ /**
30
+ * Checks if a path is a direct page path (pages/xyz.tsx rather than pages/xyz/index.tsx).
31
+ *
32
+ * @param filePath - Relative file path to check
33
+ * @returns true if the path is a direct page file
34
+ */
35
+ export function isDirectPagePath(filePath) {
36
+ return /^pages\/[^/]+\.tsx$/.test(filePath);
37
+ }
38
+ /**
39
+ * Checks if a path is a scope file.
40
+ *
41
+ * @param filePath - Relative file path to check
42
+ * @returns true if the path is a scope file
43
+ */
44
+ export function isScopeFile(filePath) {
45
+ return filePath === "scope.ts" || filePath.endsWith("/scope.ts");
46
+ }
47
+ /**
48
+ * Checks if a path is the package.json file.
49
+ *
50
+ * @param filePath - Relative file path to check
51
+ * @returns true if the path is package.json
52
+ */
53
+ export function isPackageJson(filePath) {
54
+ return filePath === "package.json" || filePath.endsWith("/package.json");
55
+ }
56
+ /**
57
+ * Checks if a file name matches any of the protected patterns.
58
+ *
59
+ * @param fileName - The file name (not full path) to check
60
+ * @returns true if the file name is protected
61
+ */
62
+ function matchesProtectedPattern(fileName) {
63
+ return FILE_OPERATION_BLACKLIST.patterns.some((pattern) => pattern.test(fileName));
64
+ }
65
+ /**
66
+ * Checks if a path is in the blacklist.
67
+ *
68
+ * @param relativePath - Relative path to check
69
+ * @param appRootDirPath - Application root directory for relative path calculation
70
+ * @returns Error message if blacklisted, null otherwise
71
+ */
72
+ export function checkBlacklist(relativePath, _appRootDirPath) {
73
+ const fileName = path.basename(relativePath);
74
+ // Check if it's the app root
75
+ if (relativePath === "" || relativePath === ".") {
76
+ return "Cannot operate on the application root directory";
77
+ }
78
+ // Check exact paths
79
+ if (FILE_OPERATION_BLACKLIST.exactPaths.includes(fileName)) {
80
+ return `Cannot operate on protected file: ${fileName}`;
81
+ }
82
+ // Check protected directories
83
+ if (FILE_OPERATION_BLACKLIST.directories.includes(fileName)) {
84
+ return `Cannot operate on protected directory: ${fileName}`;
85
+ }
86
+ // Check if path starts with a protected directory
87
+ const firstDir = relativePath.split("/")[0];
88
+ if (firstDir &&
89
+ FILE_OPERATION_BLACKLIST.directories.includes(firstDir)) {
90
+ // Special case: apis directory is allowed for virtual file operations
91
+ if (firstDir === "apis") {
92
+ return null;
93
+ }
94
+ // Special case: pages directory - allow files in subdirectories
95
+ // Direct page paths like pages/Foo.tsx will be caught by isDirectPagePath check
96
+ if (firstDir === "pages") {
97
+ return null;
98
+ }
99
+ return `Cannot operate on files in protected directory: ${firstDir}`;
100
+ }
101
+ // Check patterns
102
+ if (matchesProtectedPattern(fileName)) {
103
+ return `Cannot operate on protected file matching pattern: ${fileName}`;
104
+ }
105
+ return null;
106
+ }
107
+ /**
108
+ * Validates a file operation against all applicable rules.
109
+ *
110
+ * @param operation - The type of file operation
111
+ * @param relativePath - Relative path of the file
112
+ * @param appRootDirPath - Application root directory
113
+ * @param options - Optional validation options to override defaults
114
+ * @throws FileValidationError if validation fails
115
+ */
116
+ export function validateFileOperation(operation, relativePath, appRootDirPath, options) {
117
+ const opts = {
118
+ ...DEFAULT_VALIDATION_OPTIONS[operation],
119
+ ...options,
120
+ };
121
+ // Check blacklist
122
+ if (opts.checkBlacklist) {
123
+ const blacklistError = checkBlacklist(relativePath, appRootDirPath);
124
+ if (blacklistError) {
125
+ throw new FileValidationError(blacklistError, "BLACKLISTED");
126
+ }
127
+ }
128
+ // Check API files
129
+ if (!opts.allowApiFiles && isApiFilePath(relativePath)) {
130
+ throw new FileValidationError(`Directly ${operation === "write" ? "writing to" : operation === "delete" ? "deleting" : "operating on"} API files is not allowed. Use the API interface instead.`, "API_FILE");
131
+ }
132
+ // Check scope files
133
+ if (!opts.allowScopeFiles && isScopeFile(relativePath)) {
134
+ throw new FileValidationError("Directly operating on scope files is not allowed. Use the appropriate tool.", "SCOPE_FILE");
135
+ }
136
+ // Check package.json
137
+ if (!opts.allowPackageJson && isPackageJson(relativePath)) {
138
+ throw new FileValidationError("Directly editing package.json is not allowed. Use the build_installPackages tool instead.", "PACKAGE_JSON");
139
+ }
140
+ // Check direct page paths
141
+ if (!opts.allowDirectPagePath && isDirectPagePath(relativePath)) {
142
+ throw new FileValidationError("Direct file creation in the pages directory is not allowed. Please create files within subdirectories (e.g., pages/yourFeature/index.tsx)", "DIRECT_PAGE");
143
+ }
144
+ }
145
+ /**
146
+ * Recursively checks if a directory contains any blacklisted content.
147
+ *
148
+ * @param entries - Directory entries to scan
149
+ * @returns Error message if blacklisted content found, null otherwise
150
+ */
151
+ export function checkDirectoryContentBlacklist(entries) {
152
+ for (const entry of entries) {
153
+ const fileName = entry.name;
154
+ // Check exact paths
155
+ if (FILE_OPERATION_BLACKLIST.exactPaths.includes(fileName)) {
156
+ return `Cannot remove protected file: ${fileName}`;
157
+ }
158
+ // Check protected directories
159
+ if (entry.isDirectory &&
160
+ FILE_OPERATION_BLACKLIST.directories.includes(fileName)) {
161
+ return `Cannot remove protected directory: ${fileName}`;
162
+ }
163
+ // Check patterns
164
+ if (matchesProtectedPattern(fileName)) {
165
+ return `Cannot remove protected file matching pattern: ${fileName}`;
166
+ }
167
+ }
168
+ return null;
169
+ }
170
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/ai-service/app-interface/filesystem/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Virtual filesystem manager.
3
+ *
4
+ * Coordinates multiple virtual file handlers to provide a unified
5
+ * interface for reading, writing, and listing files that may have
6
+ * different physical representations.
7
+ */
8
+ import type { VirtualFileHandler, VirtualPathInfo, VirtualReadOptions, VirtualWriteOptions, VirtualDeleteOptions } from "./virtual-fs-types.js";
9
+ /**
10
+ * Manages virtual file handlers and routes operations to the appropriate handler.
11
+ *
12
+ * Usage:
13
+ * ```typescript
14
+ * const vfs = new VirtualFileSystem();
15
+ * vfs.registerHandler(new ApiFileHandler());
16
+ *
17
+ * // Check if a path is virtual
18
+ * if (vfs.isVirtualPath("apis/MyAPI.ts")) {
19
+ * const content = await vfs.read("apis/MyAPI.ts", options);
20
+ * }
21
+ * ```
22
+ */
23
+ export declare class VirtualFileSystem {
24
+ private handlers;
25
+ /**
26
+ * Register a handler for a type of virtual file.
27
+ *
28
+ * @param handler - The handler to register
29
+ */
30
+ registerHandler(handler: VirtualFileHandler): void;
31
+ /**
32
+ * Get all registered handlers.
33
+ */
34
+ getHandlers(): readonly VirtualFileHandler[];
35
+ /**
36
+ * Find the handler for a virtual path.
37
+ *
38
+ * @param virtualPath - The virtual path to look up
39
+ * @returns The matching handler, or undefined if none match
40
+ */
41
+ getHandler(virtualPath: string): VirtualFileHandler | undefined;
42
+ /**
43
+ * Find the handler for a physical path.
44
+ *
45
+ * @param physicalPath - The physical path to look up
46
+ * @returns The matching handler, or undefined if none match
47
+ */
48
+ getHandlerForPhysical(physicalPath: string): VirtualFileHandler | undefined;
49
+ /**
50
+ * Check if a path is a virtual path managed by any handler.
51
+ *
52
+ * @param path - The path to check
53
+ * @returns true if any handler manages this path
54
+ */
55
+ isVirtualPath(path: string): boolean;
56
+ /**
57
+ * Parse a virtual path to extract metadata.
58
+ *
59
+ * @param virtualPath - The virtual path to parse
60
+ * @returns Parsed info or undefined if not a virtual path
61
+ */
62
+ parse(virtualPath: string): VirtualPathInfo | undefined;
63
+ /**
64
+ * Convert a physical path to its virtual representation.
65
+ *
66
+ * @param physicalPath - The physical path to convert
67
+ * @returns The virtual path, or the original path if not managed by any handler
68
+ */
69
+ toVirtualPath(physicalPath: string): string;
70
+ /**
71
+ * Convert a list of physical paths to virtual paths, deduplicating as needed.
72
+ *
73
+ * @param physicalPaths - The physical paths to convert
74
+ * @returns Array of virtual paths (deduplicated)
75
+ */
76
+ toVirtualPaths(physicalPaths: string[]): string[];
77
+ /**
78
+ * Read content from a virtual file.
79
+ *
80
+ * @param virtualPath - The virtual path to read
81
+ * @param options - Read options
82
+ * @returns The file content, or undefined if not found or not a virtual path
83
+ */
84
+ read(virtualPath: string, options: VirtualReadOptions): Promise<string | undefined>;
85
+ /**
86
+ * Write content to a virtual file.
87
+ *
88
+ * @param virtualPath - The virtual path to write
89
+ * @param content - The content to write
90
+ * @param options - Write options
91
+ * @throws Error if path is not managed by any handler
92
+ */
93
+ write(virtualPath: string, content: string, options: VirtualWriteOptions): Promise<void>;
94
+ /**
95
+ * Delete a virtual file.
96
+ *
97
+ * @param virtualPath - The virtual path to delete
98
+ * @param options - Delete options
99
+ * @returns List of physical paths that were deleted
100
+ * @throws Error if path is not managed by any handler
101
+ */
102
+ delete(virtualPath: string, options: VirtualDeleteOptions): Promise<string[]>;
103
+ }
104
+ /**
105
+ * Create a VirtualFileSystem with the default handlers registered.
106
+ */
107
+ export declare function createDefaultVirtualFileSystem(): VirtualFileSystem;
108
+ //# sourceMappingURL=virtual-file-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-file-system.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/app-interface/filesystem/virtual-file-system.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;GAaG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAA4B;IAE5C;;;;OAIG;IACH,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAIlD;;OAEG;IACH,WAAW,IAAI,SAAS,kBAAkB,EAAE;IAI5C;;;;;OAKG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI/D;;;;;OAKG;IACH,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI3E;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpC;;;;;OAKG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAKvD;;;;;OAKG;IACH,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAU3C;;;;;OAKG;IACH,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAUjD;;;;;;OAMG;IACG,IAAI,CACR,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAQ9B;;;;;;;OAOG;IACG,KAAK,CACT,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC;IAQhB;;;;;;;OAOG;IACG,MAAM,CACV,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC;CAOrB;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,iBAAiB,CAIlE"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Virtual filesystem manager.
3
+ *
4
+ * Coordinates multiple virtual file handlers to provide a unified
5
+ * interface for reading, writing, and listing files that may have
6
+ * different physical representations.
7
+ */
8
+ import { ApiFileHandler } from "./handlers/api-handler.js";
9
+ /**
10
+ * Manages virtual file handlers and routes operations to the appropriate handler.
11
+ *
12
+ * Usage:
13
+ * ```typescript
14
+ * const vfs = new VirtualFileSystem();
15
+ * vfs.registerHandler(new ApiFileHandler());
16
+ *
17
+ * // Check if a path is virtual
18
+ * if (vfs.isVirtualPath("apis/MyAPI.ts")) {
19
+ * const content = await vfs.read("apis/MyAPI.ts", options);
20
+ * }
21
+ * ```
22
+ */
23
+ export class VirtualFileSystem {
24
+ handlers = [];
25
+ /**
26
+ * Register a handler for a type of virtual file.
27
+ *
28
+ * @param handler - The handler to register
29
+ */
30
+ registerHandler(handler) {
31
+ this.handlers.push(handler);
32
+ }
33
+ /**
34
+ * Get all registered handlers.
35
+ */
36
+ getHandlers() {
37
+ return this.handlers;
38
+ }
39
+ /**
40
+ * Find the handler for a virtual path.
41
+ *
42
+ * @param virtualPath - The virtual path to look up
43
+ * @returns The matching handler, or undefined if none match
44
+ */
45
+ getHandler(virtualPath) {
46
+ return this.handlers.find((h) => h.matches(virtualPath));
47
+ }
48
+ /**
49
+ * Find the handler for a physical path.
50
+ *
51
+ * @param physicalPath - The physical path to look up
52
+ * @returns The matching handler, or undefined if none match
53
+ */
54
+ getHandlerForPhysical(physicalPath) {
55
+ return this.handlers.find((h) => h.matchesPhysical(physicalPath));
56
+ }
57
+ /**
58
+ * Check if a path is a virtual path managed by any handler.
59
+ *
60
+ * @param path - The path to check
61
+ * @returns true if any handler manages this path
62
+ */
63
+ isVirtualPath(path) {
64
+ return this.handlers.some((h) => h.matches(path));
65
+ }
66
+ /**
67
+ * Parse a virtual path to extract metadata.
68
+ *
69
+ * @param virtualPath - The virtual path to parse
70
+ * @returns Parsed info or undefined if not a virtual path
71
+ */
72
+ parse(virtualPath) {
73
+ const handler = this.getHandler(virtualPath);
74
+ return handler?.parse(virtualPath);
75
+ }
76
+ /**
77
+ * Convert a physical path to its virtual representation.
78
+ *
79
+ * @param physicalPath - The physical path to convert
80
+ * @returns The virtual path, or the original path if not managed by any handler
81
+ */
82
+ toVirtualPath(physicalPath) {
83
+ for (const handler of this.handlers) {
84
+ const virtualPath = handler.toVirtualPath(physicalPath);
85
+ if (virtualPath) {
86
+ return virtualPath;
87
+ }
88
+ }
89
+ return physicalPath;
90
+ }
91
+ /**
92
+ * Convert a list of physical paths to virtual paths, deduplicating as needed.
93
+ *
94
+ * @param physicalPaths - The physical paths to convert
95
+ * @returns Array of virtual paths (deduplicated)
96
+ */
97
+ toVirtualPaths(physicalPaths) {
98
+ const virtualPaths = new Set();
99
+ for (const physPath of physicalPaths) {
100
+ virtualPaths.add(this.toVirtualPath(physPath));
101
+ }
102
+ return Array.from(virtualPaths);
103
+ }
104
+ /**
105
+ * Read content from a virtual file.
106
+ *
107
+ * @param virtualPath - The virtual path to read
108
+ * @param options - Read options
109
+ * @returns The file content, or undefined if not found or not a virtual path
110
+ */
111
+ async read(virtualPath, options) {
112
+ const handler = this.getHandler(virtualPath);
113
+ if (!handler) {
114
+ return undefined;
115
+ }
116
+ return await handler.read(virtualPath, options);
117
+ }
118
+ /**
119
+ * Write content to a virtual file.
120
+ *
121
+ * @param virtualPath - The virtual path to write
122
+ * @param content - The content to write
123
+ * @param options - Write options
124
+ * @throws Error if path is not managed by any handler
125
+ */
126
+ async write(virtualPath, content, options) {
127
+ const handler = this.getHandler(virtualPath);
128
+ if (!handler) {
129
+ throw new Error(`No handler found for virtual path: ${virtualPath}`);
130
+ }
131
+ await handler.write(virtualPath, content, options);
132
+ }
133
+ /**
134
+ * Delete a virtual file.
135
+ *
136
+ * @param virtualPath - The virtual path to delete
137
+ * @param options - Delete options
138
+ * @returns List of physical paths that were deleted
139
+ * @throws Error if path is not managed by any handler
140
+ */
141
+ async delete(virtualPath, options) {
142
+ const handler = this.getHandler(virtualPath);
143
+ if (!handler) {
144
+ throw new Error(`No handler found for virtual path: ${virtualPath}`);
145
+ }
146
+ return await handler.delete(virtualPath, options);
147
+ }
148
+ }
149
+ /**
150
+ * Create a VirtualFileSystem with the default handlers registered.
151
+ */
152
+ export function createDefaultVirtualFileSystem() {
153
+ const vfs = new VirtualFileSystem();
154
+ vfs.registerHandler(new ApiFileHandler());
155
+ return vfs;
156
+ }
157
+ //# sourceMappingURL=virtual-file-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-file-system.js","sourceRoot":"","sources":["../../../../src/ai-service/app-interface/filesystem/virtual-file-system.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,iBAAiB;IACpB,QAAQ,GAAyB,EAAE,CAAC;IAE5C;;;;OAIG;IACH,eAAe,CAAC,OAA2B;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,WAAmB;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACH,qBAAqB,CAAC,YAAoB;QACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAmB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,YAAoB;QAChC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACxD,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,WAAW,CAAC;YACrB,CAAC;QACH,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,aAAuB;QACpC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QAEvC,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CACR,WAAmB,EACnB,OAA2B;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CACT,WAAmB,EACnB,OAAe,EACf,OAA4B;QAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sCAAsC,WAAW,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,CACV,WAAmB,EACnB,OAA6B;QAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sCAAsC,WAAW,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B;IAC5C,MAAM,GAAG,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACpC,GAAG,CAAC,eAAe,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IAC1C,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Type definitions for the virtual filesystem layer.
3
+ *
4
+ * The virtual filesystem provides an abstraction over physical files,
5
+ * allowing certain file types (like APIs) to appear differently to
6
+ * consumers than they are stored on disk.
7
+ */
8
+ import type { TemplateRenderer } from "../../template-renderer.js";
9
+ /**
10
+ * File metadata returned by listFiles when includeMetadata is true.
11
+ */
12
+ export interface FileMetadata {
13
+ /** Relative file path (virtual path for APIs) */
14
+ path: string;
15
+ /** File size in bytes */
16
+ size: number;
17
+ /** Last modification time */
18
+ mtime: Date;
19
+ /** Whether this is a directory */
20
+ isDirectory: boolean;
21
+ /** Whether this is a file */
22
+ isFile: boolean;
23
+ }
24
+ /**
25
+ * Options for reading virtual files.
26
+ */
27
+ export interface VirtualReadOptions {
28
+ appRootDirPath: string;
29
+ templateRenderer?: TemplateRenderer;
30
+ entityNames?: string[];
31
+ }
32
+ /**
33
+ * Options for writing virtual files.
34
+ */
35
+ export interface VirtualWriteOptions {
36
+ appRootDirPath: string;
37
+ }
38
+ /**
39
+ * Options for deleting virtual files.
40
+ */
41
+ export interface VirtualDeleteOptions {
42
+ appRootDirPath: string;
43
+ createDraftDelete: (relativePath: string) => Promise<void>;
44
+ }
45
+ /**
46
+ * Result of parsing a virtual path.
47
+ */
48
+ export interface VirtualPathInfo {
49
+ /** The type of virtual file (e.g., "api") */
50
+ type: string;
51
+ /** Extracted parameters from the path (e.g., { apiName: "MyAPI" }) */
52
+ params: Record<string, string>;
53
+ }
54
+ /**
55
+ * Handler for a specific type of virtual file.
56
+ *
57
+ * Each handler is responsible for a category of virtual files
58
+ * (e.g., API files). The VirtualFileSystem uses handlers to
59
+ * route operations to the appropriate implementation.
60
+ */
61
+ export interface VirtualFileHandler {
62
+ /** Unique identifier for this handler type */
63
+ readonly type: string;
64
+ /**
65
+ * Check if this handler manages the given virtual path.
66
+ *
67
+ * @param virtualPath - The virtual path to check
68
+ * @returns true if this handler should process the path
69
+ */
70
+ matches(virtualPath: string): boolean;
71
+ /**
72
+ * Check if a physical path belongs to this handler's domain.
73
+ * Used for converting physical paths to virtual paths in listings.
74
+ *
75
+ * @param physicalPath - The physical path to check
76
+ * @returns true if this handler should convert the path
77
+ */
78
+ matchesPhysical(physicalPath: string): boolean;
79
+ /**
80
+ * Parse a virtual path to extract metadata.
81
+ *
82
+ * @param virtualPath - The virtual path to parse
83
+ * @returns Parsed info or undefined if not a valid path for this handler
84
+ */
85
+ parse(virtualPath: string): VirtualPathInfo | undefined;
86
+ /**
87
+ * Convert a physical path to its virtual representation.
88
+ *
89
+ * @param physicalPath - The physical path to convert
90
+ * @returns The virtual path, or undefined if not convertible
91
+ */
92
+ toVirtualPath(physicalPath: string): string | undefined;
93
+ /**
94
+ * Read content from a virtual file.
95
+ *
96
+ * @param virtualPath - The virtual path to read
97
+ * @param options - Read options including app root and dependencies
98
+ * @returns The file content, or undefined if not found
99
+ */
100
+ read(virtualPath: string, options: VirtualReadOptions): Promise<string | undefined>;
101
+ /**
102
+ * Write content to a virtual file.
103
+ *
104
+ * @param virtualPath - The virtual path to write
105
+ * @param content - The content to write
106
+ * @param options - Write options including app root
107
+ */
108
+ write(virtualPath: string, content: string, options: VirtualWriteOptions): Promise<void>;
109
+ /**
110
+ * Delete a virtual file and its associated physical files.
111
+ *
112
+ * @param virtualPath - The virtual path to delete
113
+ * @param options - Delete options including draft delete function
114
+ * @returns List of physical paths that were deleted
115
+ */
116
+ delete(virtualPath: string, options: VirtualDeleteOptions): Promise<string[]>;
117
+ /**
118
+ * Get metadata for a virtual file.
119
+ *
120
+ * @param virtualPath - The virtual path to get metadata for
121
+ * @param options - Read options including app root
122
+ * @returns File metadata, or undefined if not found
123
+ */
124
+ getMetadata?(virtualPath: string, options: VirtualReadOptions): Promise<FileMetadata | undefined>;
125
+ }
126
+ //# sourceMappingURL=virtual-fs-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-fs-types.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/app-interface/filesystem/virtual-fs-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,KAAK,EAAE,IAAI,CAAC;IACZ,kCAAkC;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,6BAA6B;IAC7B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAEtC;;;;;;OAMG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAE/C;;;;;OAKG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IAExD;;;;;OAKG;IACH,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAExD;;;;;;OAMG;IACH,IAAI,CACF,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE/B;;;;;;OAMG;IACH,KAAK,CACH,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE9E;;;;;;OAMG;IACH,WAAW,CAAC,CACV,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAC;CACtC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Type definitions for the virtual filesystem layer.
3
+ *
4
+ * The virtual filesystem provides an abstraction over physical files,
5
+ * allowing certain file types (like APIs) to appear differently to
6
+ * consumers than they are stored on disk.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=virtual-fs-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-fs-types.js","sourceRoot":"","sources":["../../../../src/ai-service/app-interface/filesystem/virtual-fs-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -3,6 +3,9 @@ export declare class Linter {
3
3
  private readonly cwd;
4
4
  constructor(cwd: string);
5
5
  warmCache(files: string[]): Promise<void>;
6
- lint(files: string[], abortSignal?: AbortSignal): Promise<Record<string, string[]>>;
6
+ lint(files: string[], abortSignal?: AbortSignal): Promise<{
7
+ errors: Record<string, string[]>;
8
+ fixedFiles: string[];
9
+ }>;
7
10
  }
8
11
  //# sourceMappingURL=linter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../../src/ai-service/app-interface/linter.ts"],"names":[],"mappings":"AAiCA,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAEjB,GAAG,EAAE,MAAM;IASjB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;IAMzB,IAAI,CACR,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CA+DrC"}
1
+ {"version":3,"file":"linter.d.ts","sourceRoot":"","sources":["../../../src/ai-service/app-interface/linter.ts"],"names":[],"mappings":"AAiCA,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAEjB,GAAG,EAAE,MAAM;IASjB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;IAMzB,IAAI,CACR,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAoEvE"}
@@ -116,20 +116,24 @@ let Linter = (() => {
116
116
  if (abortSignal?.aborted) {
117
117
  throw new Error("Operation was aborted");
118
118
  }
119
+ // Track which files were auto-fixed (have output)
120
+ const fixedFiles = results
121
+ .filter((r) => r.output !== undefined)
122
+ .map((r) => path.relative(this.cwd, r.filePath));
119
123
  await ESLint.outputFixes(results);
120
- const result = results.reduce((acc, result) => {
124
+ const errors = results.reduce((acc, result) => {
121
125
  const relativePath = path.relative(this.cwd, result.filePath);
122
- const errors = result.messages
126
+ const errorMessages = result.messages
123
127
  .filter((message) => !message.fix)
124
128
  .map((m) => `${relativePath}(${m.line},${m.column}): ${m.message} (${m.ruleId})`);
125
- if (errors.length > 0) {
126
- acc[relativePath] = errors;
129
+ if (errorMessages.length > 0) {
130
+ acc[relativePath] = errorMessages;
127
131
  }
128
132
  return acc;
129
133
  }, {});
130
134
  const end = performance.now();
131
- getLogger().debug(`[ai-service] Linting took ${end - start}ms for ${files.length} files`);
132
- return result;
135
+ getLogger().debug(`[ai-service] Linting took ${end - start}ms for ${files.length} files, ${fixedFiles.length} auto-fixed`);
136
+ return { errors, fixedFiles };
133
137
  }
134
138
  };
135
139
  })();
@@ -1 +1 @@
1
- {"version":3,"file":"linter.js","sourceRoot":"","sources":["../../../src/ai-service/app-interface/linter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linter.js","sourceRoot":"","sources":["../../../src/ai-service/app-interface/linter.ts"],"names":[],"mappings":"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"}