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

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 +0 -14
  2. package/dist/ai-service/agent/middleware.d.ts.map +1 -1
  3. package/dist/ai-service/agent/middleware.js +0 -40
  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 +18 -67
  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 +5 -11
  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 +0 -15
  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 +0 -3
  16. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  17. package/dist/ai-service/agent/tools/apis/api-source.d.ts +24 -0
  18. package/dist/ai-service/agent/tools/apis/api-source.d.ts.map +1 -0
  19. package/dist/ai-service/agent/tools/apis/api-source.js +108 -0
  20. package/dist/ai-service/agent/tools/apis/api-source.js.map +1 -0
  21. package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -1
  22. package/dist/ai-service/agent/tools/apis/build-api-artifact.js +3 -11
  23. package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -1
  24. package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
  25. package/dist/ai-service/agent/tools/apis/build-api.js +0 -6
  26. package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
  27. package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts.map +1 -1
  28. package/dist/ai-service/agent/tools/apis/get-api-docs.js +3 -99
  29. package/dist/ai-service/agent/tools/apis/get-api-docs.js.map +1 -1
  30. package/dist/ai-service/agent/tools/apis/integration-types.d.ts.map +1 -1
  31. package/dist/ai-service/agent/tools/apis/integration-types.js +17 -69
  32. package/dist/ai-service/agent/tools/apis/integration-types.js.map +1 -1
  33. package/dist/ai-service/agent/tools/apis/test-api.d.ts +1 -1
  34. package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
  35. package/dist/ai-service/agent/tools/apis/test-api.js +45 -26
  36. package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
  37. package/dist/ai-service/agent/tools/apis/write-api.d.ts +2 -2
  38. package/dist/ai-service/agent/tools/apis/write-api.d.ts.map +1 -1
  39. package/dist/ai-service/agent/tools/apis/write-api.js +2 -8
  40. package/dist/ai-service/agent/tools/apis/write-api.js.map +1 -1
  41. package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
  42. package/dist/ai-service/agent/tools/build-capture-screenshot.js +0 -3
  43. package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
  44. package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -1
  45. package/dist/ai-service/agent/tools/build-debug.js +6 -58
  46. package/dist/ai-service/agent/tools/build-debug.js.map +1 -1
  47. package/dist/ai-service/agent/tools/build-delete-file.d.ts +1 -1
  48. package/dist/ai-service/agent/tools/build-delete-file.d.ts.map +1 -1
  49. package/dist/ai-service/agent/tools/build-delete-file.js +196 -27
  50. package/dist/ai-service/agent/tools/build-delete-file.js.map +1 -1
  51. package/dist/ai-service/agent/tools/build-edit-file.d.ts +1 -1
  52. package/dist/ai-service/agent/tools/build-edit-file.d.ts.map +1 -1
  53. package/dist/ai-service/agent/tools/build-edit-file.js +22 -12
  54. package/dist/ai-service/agent/tools/build-edit-file.js.map +1 -1
  55. package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
  56. package/dist/ai-service/agent/tools/build-finalize.js +0 -3
  57. package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
  58. package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
  59. package/dist/ai-service/agent/tools/build-install-packages.js +0 -15
  60. package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
  61. package/dist/ai-service/agent/tools/build-list-files.d.ts +1 -1
  62. package/dist/ai-service/agent/tools/build-list-files.d.ts.map +1 -1
  63. package/dist/ai-service/agent/tools/build-list-files.js +14 -6
  64. package/dist/ai-service/agent/tools/build-list-files.js.map +1 -1
  65. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts.map +1 -1
  66. package/dist/ai-service/agent/tools/build-manage-checklist.js +0 -9
  67. package/dist/ai-service/agent/tools/build-manage-checklist.js.map +1 -1
  68. package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts +2 -2
  69. package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts.map +1 -1
  70. package/dist/ai-service/agent/tools/build-multi-edit-file.js +25 -8
  71. package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -1
  72. package/dist/ai-service/agent/tools/build-read-file.d.ts +4 -10
  73. package/dist/ai-service/agent/tools/build-read-file.d.ts.map +1 -1
  74. package/dist/ai-service/agent/tools/build-read-file.js +77 -75
  75. package/dist/ai-service/agent/tools/build-read-file.js.map +1 -1
  76. package/dist/ai-service/agent/tools/build-reload-file.d.ts.map +1 -1
  77. package/dist/ai-service/agent/tools/build-reload-file.js +0 -5
  78. package/dist/ai-service/agent/tools/build-reload-file.js.map +1 -1
  79. package/dist/ai-service/agent/tools/build-rename-file.d.ts +1 -1
  80. package/dist/ai-service/agent/tools/build-rename-file.d.ts.map +1 -1
  81. package/dist/ai-service/agent/tools/build-rename-file.js +50 -3
  82. package/dist/ai-service/agent/tools/build-rename-file.js.map +1 -1
  83. package/dist/ai-service/agent/tools/build-validate-icons.d.ts.map +1 -1
  84. package/dist/ai-service/agent/tools/build-validate-icons.js +0 -8
  85. package/dist/ai-service/agent/tools/build-validate-icons.js.map +1 -1
  86. package/dist/ai-service/agent/tools/build-write-file.d.ts +2 -2
  87. package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -1
  88. package/dist/ai-service/agent/tools/build-write-file.js +17 -7
  89. package/dist/ai-service/agent/tools/build-write-file.js.map +1 -1
  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 +0 -6
  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 +0 -4
  95. package/dist/ai-service/agent/tools/get-runtime-errors.js.map +1 -1
  96. package/dist/ai-service/agent/tools/index.d.ts +0 -1
  97. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  98. package/dist/ai-service/agent/tools/index.js +0 -1
  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 +9 -56
  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 +0 -6
  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 +0 -9
  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 +6 -27
  111. package/dist/ai-service/agent/tools.js.map +1 -1
  112. package/dist/ai-service/agent/tools2/registry.d.ts +0 -15
  113. package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
  114. package/dist/ai-service/agent/tools2/registry.js +0 -30
  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 +1 -11
  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 +1 -4
  120. package/dist/ai-service/agent/tools2/tools/edit.d.ts.map +1 -1
  121. package/dist/ai-service/agent/tools2/tools/edit.js +8 -10
  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 +0 -5
  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 +0 -2
  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 +0 -24
  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 +1 -4
  131. package/dist/ai-service/agent/tools2/tools/glob.d.ts.map +1 -1
  132. package/dist/ai-service/agent/tools2/tools/glob.js +85 -25
  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 +0 -9
  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 +5 -22
  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 +0 -4
  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 +1 -8
  145. package/dist/ai-service/agent/tools2/tools/ls.d.ts.map +1 -1
  146. package/dist/ai-service/agent/tools2/tools/ls.js +83 -102
  147. package/dist/ai-service/agent/tools2/tools/ls.js.map +1 -1
  148. package/dist/ai-service/agent/tools2/tools/read.d.ts +2 -5
  149. package/dist/ai-service/agent/tools2/tools/read.d.ts.map +1 -1
  150. package/dist/ai-service/agent/tools2/tools/read.js +12 -24
  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 +0 -13
  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 +0 -6
  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 +1 -4
  159. package/dist/ai-service/agent/tools2/tools/write.d.ts.map +1 -1
  160. package/dist/ai-service/agent/tools2/tools/write.js +4 -9
  161. package/dist/ai-service/agent/tools2/tools/write.js.map +1 -1
  162. package/dist/ai-service/agent/tools2/types.d.ts +0 -25
  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/linter.d.ts +1 -4
  166. package/dist/ai-service/app-interface/linter.d.ts.map +1 -1
  167. package/dist/ai-service/app-interface/linter.js +6 -10
  168. package/dist/ai-service/app-interface/linter.js.map +1 -1
  169. package/dist/ai-service/app-interface/shell.d.ts +1 -205
  170. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  171. package/dist/ai-service/app-interface/shell.js +14 -474
  172. package/dist/ai-service/app-interface/shell.js.map +1 -1
  173. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  174. package/dist/ai-service/chat/chat-session-store.js +0 -8
  175. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  176. package/dist/ai-service/features.d.ts +0 -8
  177. package/dist/ai-service/features.d.ts.map +1 -1
  178. package/dist/ai-service/features.js +0 -8
  179. package/dist/ai-service/features.js.map +1 -1
  180. package/dist/ai-service/index.d.ts +1 -1
  181. package/dist/ai-service/index.d.ts.map +1 -1
  182. package/dist/ai-service/index.js +24 -26
  183. package/dist/ai-service/index.js.map +1 -1
  184. package/dist/ai-service/judge/judge-executor.d.ts.map +1 -1
  185. package/dist/ai-service/judge/judge-executor.js +0 -4
  186. package/dist/ai-service/judge/judge-executor.js.map +1 -1
  187. package/dist/ai-service/llm/client.d.ts +3 -19
  188. package/dist/ai-service/llm/client.d.ts.map +1 -1
  189. package/dist/ai-service/llm/client.js +12 -131
  190. package/dist/ai-service/llm/client.js.map +1 -1
  191. package/dist/ai-service/llm/context/context.d.ts +1 -4
  192. package/dist/ai-service/llm/context/context.d.ts.map +1 -1
  193. package/dist/ai-service/llm/context/context.js +5 -27
  194. package/dist/ai-service/llm/context/context.js.map +1 -1
  195. package/dist/ai-service/llm/context/internal-types.d.ts +0 -5
  196. package/dist/ai-service/llm/context/internal-types.d.ts.map +1 -1
  197. package/dist/ai-service/llm/context/internal-types.js +0 -5
  198. package/dist/ai-service/llm/context/internal-types.js.map +1 -1
  199. package/dist/ai-service/llm/context/levels/l1.d.ts +3 -4
  200. package/dist/ai-service/llm/context/levels/l1.d.ts.map +1 -1
  201. package/dist/ai-service/llm/context/levels/l1.js +8 -9
  202. package/dist/ai-service/llm/context/levels/l1.js.map +1 -1
  203. package/dist/ai-service/llm/context/serialization.d.ts +0 -8
  204. package/dist/ai-service/llm/context/serialization.d.ts.map +1 -1
  205. package/dist/ai-service/llm/context/utils/content-compaction.d.ts +5 -7
  206. package/dist/ai-service/llm/context/utils/content-compaction.d.ts.map +1 -1
  207. package/dist/ai-service/llm/context/utils/content-compaction.js +6 -27
  208. package/dist/ai-service/llm/context/utils/content-compaction.js.map +1 -1
  209. package/dist/ai-service/llm/error.d.ts +0 -1
  210. package/dist/ai-service/llm/error.d.ts.map +1 -1
  211. package/dist/ai-service/llm/error.js +3 -29
  212. package/dist/ai-service/llm/error.js.map +1 -1
  213. package/dist/ai-service/llm/stream/config.d.ts +5 -14
  214. package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
  215. package/dist/ai-service/llm/stream/config.js +5 -17
  216. package/dist/ai-service/llm/stream/config.js.map +1 -1
  217. package/dist/ai-service/llm/stream/errors.d.ts.map +1 -1
  218. package/dist/ai-service/llm/stream/errors.js +4 -7
  219. package/dist/ai-service/llm/stream/errors.js.map +1 -1
  220. package/dist/ai-service/llm/stream/index.d.ts +2 -4
  221. package/dist/ai-service/llm/stream/index.d.ts.map +1 -1
  222. package/dist/ai-service/llm/stream/index.js +2 -4
  223. package/dist/ai-service/llm/stream/index.js.map +1 -1
  224. package/dist/ai-service/llm/stream/orchestrator.d.ts +1 -1
  225. package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
  226. package/dist/ai-service/llm/stream/orchestrator.js +11 -5
  227. package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
  228. package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
  229. package/dist/ai-service/llm/stream/retry-engine.js +3 -3
  230. package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
  231. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts +0 -8
  232. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts.map +1 -1
  233. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js +0 -108
  234. package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js.map +1 -1
  235. package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts.map +1 -1
  236. package/dist/ai-service/mcp/embedded-playwright-mcp-server.js +133 -360
  237. package/dist/ai-service/mcp/embedded-playwright-mcp-server.js.map +1 -1
  238. package/dist/ai-service/state-machine/clark-fsm.d.ts +1 -2
  239. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  240. package/dist/ai-service/state-machine/clark-fsm.js +8 -29
  241. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  242. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  243. package/dist/ai-service/state-machine/handlers/agent-planning.js +6 -17
  244. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  245. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  246. package/dist/ai-service/state-machine/handlers/llm-generating.js +1 -9
  247. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  248. package/dist/ai-service/state-machine/helpers/file-read-tracker.d.ts +7 -0
  249. package/dist/ai-service/state-machine/helpers/file-read-tracker.d.ts.map +1 -0
  250. package/dist/ai-service/state-machine/helpers/file-read-tracker.js +26 -0
  251. package/dist/ai-service/state-machine/helpers/file-read-tracker.js.map +1 -0
  252. package/dist/ai-service/template-renderer.d.ts.map +1 -1
  253. package/dist/ai-service/template-renderer.js +1 -4
  254. package/dist/ai-service/template-renderer.js.map +1 -1
  255. package/dist/ai-service/transform/api-builder/shared.js +2 -2
  256. package/dist/ai-service/transform/api-builder/shared.js.map +1 -1
  257. package/dist/components-manager.d.ts.map +1 -1
  258. package/dist/components-manager.js +12 -17
  259. package/dist/components-manager.js.map +1 -1
  260. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  261. package/dist/file-sync-vite-plugin.js +12 -22
  262. package/dist/file-sync-vite-plugin.js.map +1 -1
  263. package/dist/file-system-manager.d.ts +6 -0
  264. package/dist/file-system-manager.d.ts.map +1 -1
  265. package/dist/file-system-manager.js +144 -119
  266. package/dist/file-system-manager.js.map +1 -1
  267. package/dist/parsing/util.d.ts.map +1 -1
  268. package/dist/parsing/util.js +1 -5
  269. package/dist/parsing/util.js.map +1 -1
  270. package/dist/socket-manager.d.ts.map +1 -1
  271. package/dist/socket-manager.js +11 -5
  272. package/dist/socket-manager.js.map +1 -1
  273. package/dist/source-tracker.d.ts +0 -4
  274. package/dist/source-tracker.d.ts.map +1 -1
  275. package/dist/source-tracker.js +8 -15
  276. package/dist/source-tracker.js.map +1 -1
  277. package/dist/sync-service/index.d.ts.map +1 -1
  278. package/dist/sync-service/index.js +8 -13
  279. package/dist/sync-service/index.js.map +1 -1
  280. package/dist/util/logger.d.ts.map +1 -1
  281. package/dist/util/logger.js +0 -16
  282. package/dist/util/logger.js.map +1 -1
  283. package/dist/util.d.ts +1 -1
  284. package/dist/util.d.ts.map +1 -1
  285. package/dist/util.js +2 -4
  286. package/dist/util.js.map +1 -1
  287. package/package.json +16 -10
  288. package/dist/ai-service/agent/tools/clear-error-cache.d.ts +0 -10
  289. package/dist/ai-service/agent/tools/clear-error-cache.d.ts.map +0 -1
  290. package/dist/ai-service/agent/tools/clear-error-cache.js +0 -38
  291. package/dist/ai-service/agent/tools/clear-error-cache.js.map +0 -1
  292. package/dist/ai-service/app-interface/constants.d.ts +0 -77
  293. package/dist/ai-service/app-interface/constants.d.ts.map +0 -1
  294. package/dist/ai-service/app-interface/constants.js +0 -129
  295. package/dist/ai-service/app-interface/constants.js.map +0 -1
  296. package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts +0 -87
  297. package/dist/ai-service/app-interface/filesystem/draft-manager.d.ts.map +0 -1
  298. package/dist/ai-service/app-interface/filesystem/draft-manager.js +0 -91
  299. package/dist/ai-service/app-interface/filesystem/draft-manager.js.map +0 -1
  300. package/dist/ai-service/app-interface/filesystem/handlers/api-handler.d.ts +0 -35
  301. package/dist/ai-service/app-interface/filesystem/handlers/api-handler.d.ts.map +0 -1
  302. package/dist/ai-service/app-interface/filesystem/handlers/api-handler.js +0 -236
  303. package/dist/ai-service/app-interface/filesystem/handlers/api-handler.js.map +0 -1
  304. package/dist/ai-service/app-interface/filesystem/handlers/index.d.ts +0 -5
  305. package/dist/ai-service/app-interface/filesystem/handlers/index.d.ts.map +0 -1
  306. package/dist/ai-service/app-interface/filesystem/handlers/index.js +0 -5
  307. package/dist/ai-service/app-interface/filesystem/handlers/index.js.map +0 -1
  308. package/dist/ai-service/app-interface/filesystem/index.d.ts +0 -12
  309. package/dist/ai-service/app-interface/filesystem/index.d.ts.map +0 -1
  310. package/dist/ai-service/app-interface/filesystem/index.js +0 -11
  311. package/dist/ai-service/app-interface/filesystem/index.js.map +0 -1
  312. package/dist/ai-service/app-interface/filesystem/validation.d.ts +0 -71
  313. package/dist/ai-service/app-interface/filesystem/validation.d.ts.map +0 -1
  314. package/dist/ai-service/app-interface/filesystem/validation.js +0 -170
  315. package/dist/ai-service/app-interface/filesystem/validation.js.map +0 -1
  316. package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts +0 -108
  317. package/dist/ai-service/app-interface/filesystem/virtual-file-system.d.ts.map +0 -1
  318. package/dist/ai-service/app-interface/filesystem/virtual-file-system.js +0 -157
  319. package/dist/ai-service/app-interface/filesystem/virtual-file-system.js.map +0 -1
  320. package/dist/ai-service/app-interface/filesystem/virtual-fs-types.d.ts +0 -126
  321. package/dist/ai-service/app-interface/filesystem/virtual-fs-types.d.ts.map +0 -1
  322. package/dist/ai-service/app-interface/filesystem/virtual-fs-types.js +0 -9
  323. package/dist/ai-service/app-interface/filesystem/virtual-fs-types.js.map +0 -1
  324. package/dist/ai-service/security/index.d.ts +0 -8
  325. package/dist/ai-service/security/index.d.ts.map +0 -1
  326. package/dist/ai-service/security/index.js +0 -8
  327. package/dist/ai-service/security/index.js.map +0 -1
  328. package/dist/ai-service/security/safety-classifier.d.ts +0 -103
  329. package/dist/ai-service/security/safety-classifier.d.ts.map +0 -1
  330. package/dist/ai-service/security/safety-classifier.js +0 -168
  331. package/dist/ai-service/security/safety-classifier.js.map +0 -1
  332. package/dist/ai-service/security/secret-scanner.d.ts +0 -145
  333. package/dist/ai-service/security/secret-scanner.d.ts.map +0 -1
  334. package/dist/ai-service/security/secret-scanner.js +0 -344
  335. package/dist/ai-service/security/secret-scanner.js.map +0 -1
  336. package/dist/ensure-app-provider.d.ts +0 -2
  337. package/dist/ensure-app-provider.d.ts.map +0 -1
  338. package/dist/ensure-app-provider.js +0 -209
  339. package/dist/ensure-app-provider.js.map +0 -1
@@ -1,344 +0,0 @@
1
- /**
2
- * Secret scanning utilities using TruffleHog.
3
- *
4
- * Provides functions for scanning content for leaked credentials and secrets.
5
- * Uses TruffleHog CLI under the hood for detection and verification.
6
- */
7
- import { spawn, execSync } from "node:child_process";
8
- import { getErrorMeta, getPrefixedLogger } from "../../util/logger.js";
9
- /**
10
- * Detects if trufflehog is running via a Nix wrapper that already adds --no-update.
11
- * The Nix wrapper is a bash script that adds --no-update before forwarding args.
12
- */
13
- function isNixWrappedTrufflehog() {
14
- try {
15
- const trufflehogPath = execSync("which trufflehog", {
16
- encoding: "utf-8",
17
- }).trim();
18
- return trufflehogPath.includes("/nix/store/");
19
- }
20
- catch {
21
- return false;
22
- }
23
- }
24
- // Cache the result since it won't change during runtime
25
- let _isNixWrapped;
26
- function shouldSkipNoUpdateFlag() {
27
- if (_isNixWrapped === undefined) {
28
- _isNixWrapped = isNixWrappedTrufflehog();
29
- }
30
- return _isNixWrapped;
31
- }
32
- /**
33
- * Redacts secrets in content by replacing raw values with redacted versions.
34
- *
35
- * Replaces each detected secret's raw value with its redacted form.
36
- * Secrets are processed longest-first to handle overlapping matches correctly.
37
- *
38
- * @param content - The original content containing secrets
39
- * @param findings - Array of secret findings from TruffleHog
40
- * @returns Content with all detected secrets redacted
41
- */
42
- export function redactSecrets(content, findings) {
43
- if (findings.length === 0) {
44
- return content;
45
- }
46
- let redacted = content;
47
- // Sort findings by raw length (longest first) to handle overlapping secrets
48
- const sortedFindings = [...findings].sort((a, b) => b.raw.length - a.raw.length);
49
- for (const finding of sortedFindings) {
50
- if (finding.raw && finding.redacted) {
51
- // Use global replacement to catch all occurrences
52
- redacted = redacted.split(finding.raw).join(finding.redacted);
53
- }
54
- }
55
- return redacted;
56
- }
57
- /**
58
- * Parses TruffleHog JSON output into SecretFinding objects.
59
- *
60
- * @param jsonLine - Single line of JSON output from TruffleHog
61
- * @returns Parsed SecretFinding or null if parsing fails
62
- */
63
- function parseTrufflehogResult(jsonLine) {
64
- try {
65
- const result = JSON.parse(jsonLine);
66
- const raw = result.Raw ?? "";
67
- // Generate a sensible redacted value if TruffleHog doesn't provide one
68
- // (custom regex detectors often return empty Redacted field)
69
- const redacted = result.Redacted || generateRedactedValue(raw);
70
- return {
71
- detectorType: result.DetectorType?.toString() ?? "unknown",
72
- detectorName: result.DetectorName ?? "unknown",
73
- verified: result.Verified ?? false,
74
- raw,
75
- redacted,
76
- line: result.SourceMetadata?.Data?.Filesystem?.line,
77
- extraData: result.ExtraData,
78
- sourceMetadata: {
79
- file: result.SourceMetadata?.Data?.Filesystem?.file,
80
- line: result.SourceMetadata?.Data?.Filesystem?.line,
81
- },
82
- };
83
- }
84
- catch {
85
- return null;
86
- }
87
- }
88
- /**
89
- * Generates a redacted version of a secret value.
90
- *
91
- * Preserves a prefix for recognizable patterns (like sk_live_, ghp_, AKIA)
92
- * and replaces the rest with asterisks.
93
- *
94
- * @param raw - The raw secret value
95
- * @returns A redacted version with preserved prefix and masked suffix
96
- */
97
- function generateRedactedValue(raw) {
98
- if (!raw || raw.length <= 4) {
99
- return "[REDACTED]";
100
- }
101
- // For short secrets, just show first 2 chars
102
- if (raw.length <= 8) {
103
- return raw.slice(0, 2) + "****";
104
- }
105
- // For longer secrets, preserve recognizable prefixes
106
- const prefixLength = Math.min(8, Math.floor(raw.length / 3));
107
- return raw.slice(0, prefixLength) + "****";
108
- }
109
- /**
110
- * Scans text content for secrets using TruffleHog.
111
- *
112
- * This function pipes content directly to TruffleHog's stdin command
113
- * and returns any detected secrets.
114
- *
115
- * @param content - The text content to scan for secrets
116
- * @param options - Scan configuration options
117
- * @returns Promise resolving to scan results with any findings
118
- *
119
- * @example
120
- * ```typescript
121
- * const result = await scanContentForSecrets(userPrompt);
122
- * if (result.hasVerifiedSecrets) {
123
- * console.log("Verified secrets found:", result.findings.filter(f => f.verified));
124
- * }
125
- * ```
126
- */
127
- export async function scanContentForSecrets(content, options = {}) {
128
- const { timeout = 5000, verifiedOnly = false } = options;
129
- const logger = getPrefixedLogger("[secret-scan]");
130
- try {
131
- const findings = await runTrufflehog(content, timeout, verifiedOnly);
132
- logger.debug(`TruffleHog scan completed: found ${findings.length} potential secrets`);
133
- const redactedContent = redactSecrets(content, findings);
134
- return {
135
- success: true,
136
- findings,
137
- hasVerifiedSecrets: findings.some((f) => f.verified),
138
- hasSecrets: findings.length > 0,
139
- redactedContent,
140
- };
141
- }
142
- catch (error) {
143
- logger.error("error during operation: ", getErrorMeta(error));
144
- return {
145
- success: false,
146
- findings: [],
147
- error: error instanceof Error ? error.message : String(error),
148
- hasVerifiedSecrets: false,
149
- hasSecrets: false,
150
- redactedContent: content, // Return original content on error
151
- };
152
- }
153
- }
154
- /**
155
- * Runs TruffleHog CLI using stdin and returns parsed findings.
156
- *
157
- * Uses TruffleHog's built-in detectors for common secret types (Stripe, GitHub,
158
- * AWS, private keys, etc.) without custom configuration.
159
- *
160
- * @param content - Content to scan for secrets (piped to stdin)
161
- * @param timeout - Timeout in milliseconds
162
- * @param verifiedOnly - Whether to only return verified secrets
163
- * @returns Promise resolving to array of SecretFinding objects
164
- */
165
- async function runTrufflehog(content, timeout, verifiedOnly) {
166
- return new Promise((resolve, reject) => {
167
- const args = ["stdin", "--json"];
168
- if (!shouldSkipNoUpdateFlag()) {
169
- args.push("--no-update");
170
- }
171
- if (verifiedOnly) {
172
- args.push("--results=verified");
173
- }
174
- else {
175
- args.push("--results=verified,unknown,unverified");
176
- }
177
- const proc = spawn("trufflehog", args, {
178
- timeout,
179
- stdio: ["pipe", "pipe", "pipe"],
180
- });
181
- const findings = [];
182
- let stdout = "";
183
- let stderr = "";
184
- proc.stdout.on("data", (data) => {
185
- stdout += data.toString();
186
- });
187
- proc.stderr.on("data", (data) => {
188
- stderr += data.toString();
189
- });
190
- proc.on("close", (code) => {
191
- // TruffleHog returns 0 for no secrets, 183 for secrets found
192
- if (code === 0 || code === 183) {
193
- // Parse each line of JSON output
194
- const lines = stdout.split("\n").filter((line) => line.trim());
195
- for (const line of lines) {
196
- const finding = parseTrufflehogResult(line);
197
- if (finding) {
198
- findings.push(finding);
199
- }
200
- }
201
- resolve(findings);
202
- }
203
- else {
204
- reject(new Error(`TruffleHog exited with code ${code}: ${stderr || stdout}`));
205
- }
206
- });
207
- proc.on("error", (error) => {
208
- if (error.message.includes("ENOENT")) {
209
- reject(new Error("TruffleHog is not installed. Please install it: https://github.com/trufflesecurity/trufflehog"));
210
- }
211
- else {
212
- reject(error);
213
- }
214
- });
215
- // Write content to stdin and close the stream
216
- proc.stdin.write(content);
217
- proc.stdin.end();
218
- });
219
- }
220
- /**
221
- * Checks if TruffleHog is available on the system.
222
- *
223
- * @returns Promise resolving to true if TruffleHog is installed and accessible
224
- */
225
- export async function isTrufflehogAvailable() {
226
- return new Promise((resolve) => {
227
- const args = ["--version"];
228
- if (!shouldSkipNoUpdateFlag()) {
229
- args.push("--no-update");
230
- }
231
- const proc = spawn("trufflehog", args, {
232
- timeout: 5000,
233
- stdio: ["ignore", "pipe", "pipe"],
234
- });
235
- proc.on("close", (code) => {
236
- resolve(code === 0);
237
- });
238
- proc.on("error", () => {
239
- resolve(false);
240
- });
241
- });
242
- }
243
- /**
244
- * A reusable secret redactor that can perform fast synchronous redaction.
245
- *
246
- * Use this when you need to redact secrets from multiple pieces of content
247
- * using the same set of findings (e.g., redacting LLM responses based on
248
- * secrets found in the input prompt).
249
- *
250
- * @example
251
- * ```typescript
252
- * // Scan input once
253
- * const result = await scanContentForSecrets(userPrompt);
254
- * const redactor = new SecretRedactor(result.findings);
255
- *
256
- * // Redact multiple outputs synchronously
257
- * const safeResponse = redactor.redact(llmResponse);
258
- * const safeToolOutput = redactor.redact(toolResult);
259
- * ```
260
- */
261
- export class SecretRedactor {
262
- sortedFindings;
263
- /**
264
- * Creates a new SecretRedactor with the given findings.
265
- *
266
- * @param findings - Secret findings to use for redaction
267
- */
268
- constructor(findings) {
269
- // Sort findings by raw length (longest first) to handle overlapping secrets
270
- this.sortedFindings = [...findings].sort((a, b) => b.raw.length - a.raw.length);
271
- }
272
- /**
273
- * Redacts secrets from the given content synchronously.
274
- *
275
- * @param content - The content to redact secrets from
276
- * @returns Content with secrets replaced by redacted versions
277
- */
278
- redact(content) {
279
- if (this.sortedFindings.length === 0 || !content) {
280
- return content;
281
- }
282
- let redacted = content;
283
- for (const finding of this.sortedFindings) {
284
- if (finding.raw && finding.redacted) {
285
- redacted = redacted.split(finding.raw).join(finding.redacted);
286
- }
287
- }
288
- return redacted;
289
- }
290
- /**
291
- * Redacts secrets from any value (string, object, or array).
292
- *
293
- * Recursively processes objects and arrays, redacting any string values.
294
- *
295
- * @param value - The value to redact secrets from
296
- * @returns Value with secrets redacted from all string content
297
- */
298
- redactDeep(value) {
299
- if (typeof value === "string") {
300
- return this.redact(value);
301
- }
302
- if (Array.isArray(value)) {
303
- return value.map((item) => this.redactDeep(item));
304
- }
305
- if (value !== null && typeof value === "object") {
306
- const result = {};
307
- for (const [key, val] of Object.entries(value)) {
308
- result[key] = this.redactDeep(val);
309
- }
310
- return result;
311
- }
312
- return value;
313
- }
314
- /**
315
- * Returns true if this redactor has any findings to redact.
316
- */
317
- hasFindings() {
318
- return this.sortedFindings.length > 0;
319
- }
320
- /**
321
- * Returns the number of findings this redactor has.
322
- */
323
- get findingCount() {
324
- return this.sortedFindings.length;
325
- }
326
- }
327
- export function formatSecretFindings(findings) {
328
- if (findings.length === 0) {
329
- return "No secrets detected.";
330
- }
331
- const lines = [`Found ${findings.length} potential secret(s):\n`];
332
- for (const finding of findings) {
333
- const status = finding.verified ? "✓ VERIFIED" : "? unverified";
334
- lines.push(` [${status}] ${finding.detectorName}`);
335
- lines.push(` Type: ${finding.detectorType}`);
336
- lines.push(` Value: ${finding.redacted}`);
337
- if (finding.sourceMetadata?.line) {
338
- lines.push(` Line: ${finding.sourceMetadata.line}`);
339
- }
340
- lines.push("");
341
- }
342
- return lines.join("\n");
343
- }
344
- //# sourceMappingURL=secret-scanner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secret-scanner.js","sourceRoot":"","sources":["../../../src/ai-service/security/secret-scanner.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function needsAppProviderFixInAppTsx(sourceCode: string): boolean;
2
- //# sourceMappingURL=ensure-app-provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ensure-app-provider.d.ts","sourceRoot":"","sources":["../src/ensure-app-provider.ts"],"names":[],"mappings":"AAsNA,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAwDvE"}
@@ -1,209 +0,0 @@
1
- import { parse } from "@babel/parser";
2
- import * as t from "@babel/types";
3
- import { EXTERNAL_LIBRARY_OPTIONS } from "./parsing/imports.js";
4
- import { traverse } from "./traverse.js";
5
- const LIBRARY_IMPORT_PATH = EXTERNAL_LIBRARY_OPTIONS.find((option) => option.library === "@superblocksteam/library")?.library ?? "@superblocksteam/library";
6
- const LIBRARY_APP_EXPORT_NAME = "App";
7
- const REACT_ROUTER_IMPORT_PATH = "react-router";
8
- const REACT_ROUTER_OUTLET_EXPORT_NAME = "Outlet";
9
- function isJsxIdentifier(name) {
10
- return name.type === "JSXIdentifier";
11
- }
12
- function getAppProviderLocalNameFromImports(programPath) {
13
- for (const stmt of programPath.get("body")) {
14
- if (!stmt.isImportDeclaration())
15
- continue;
16
- if (stmt.node.source.value !== LIBRARY_IMPORT_PATH)
17
- continue;
18
- for (const spec of stmt.get("specifiers")) {
19
- if (!spec.isImportSpecifier())
20
- continue;
21
- const imported = spec.get("imported");
22
- const local = spec.get("local");
23
- if (imported.isIdentifier() &&
24
- imported.node.name === LIBRARY_APP_EXPORT_NAME) {
25
- return local.isIdentifier() ? local.node.name : null;
26
- }
27
- }
28
- }
29
- return null;
30
- }
31
- function getOutletLocalNameFromImports(programPath) {
32
- for (const stmt of programPath.get("body")) {
33
- if (!stmt.isImportDeclaration())
34
- continue;
35
- if (stmt.node.source.value !== REACT_ROUTER_IMPORT_PATH)
36
- continue;
37
- for (const spec of stmt.get("specifiers")) {
38
- if (!spec.isImportSpecifier())
39
- continue;
40
- const imported = spec.get("imported");
41
- const local = spec.get("local");
42
- if (imported.isIdentifier() &&
43
- imported.node.name === REACT_ROUTER_OUTLET_EXPORT_NAME) {
44
- return local.isIdentifier() ? local.node.name : null;
45
- }
46
- }
47
- }
48
- return null;
49
- }
50
- function resolveDefaultExportedFunction(programPath) {
51
- const body = programPath.get("body");
52
- const defaultExport = body.find((p) => p.isExportDefaultDeclaration());
53
- if (!defaultExport || !defaultExport.isExportDefaultDeclaration()) {
54
- return null;
55
- }
56
- const decl = defaultExport.get("declaration");
57
- if (decl.isFunctionDeclaration()) {
58
- return decl;
59
- }
60
- if (decl.isArrowFunctionExpression() || decl.isFunctionExpression()) {
61
- return decl;
62
- }
63
- if (decl.isIdentifier()) {
64
- const binding = defaultExport.scope.getBinding(decl.node.name);
65
- if (!binding) {
66
- return null;
67
- }
68
- const bindingPath = binding.path;
69
- if (bindingPath.isFunctionDeclaration()) {
70
- return bindingPath;
71
- }
72
- if (bindingPath.isVariableDeclarator()) {
73
- const init = bindingPath.get("init");
74
- if (init.isArrowFunctionExpression() || init.isFunctionExpression()) {
75
- return init;
76
- }
77
- }
78
- }
79
- return null;
80
- }
81
- function findFirstReturnedJsxExpressionNoMutate(fnPath) {
82
- const body = fnPath.get("body");
83
- // Arrow function expression-body returning JSX
84
- if (!body.isBlockStatement()) {
85
- if (fnPath.isArrowFunctionExpression() &&
86
- (body.isJSXElement() || body.isJSXFragment())) {
87
- return body.node;
88
- }
89
- return null;
90
- }
91
- const returnPath = body.get("body").find((s) => s.isReturnStatement());
92
- if (!returnPath)
93
- return null;
94
- const arg = returnPath.get("argument");
95
- if (!arg || Array.isArray(arg) || !arg.isExpression())
96
- return null;
97
- if (!arg.isJSXElement() && !arg.isJSXFragment())
98
- return null;
99
- return arg.node;
100
- }
101
- function hasOutletInReturnedJsx(returnedJsx, outletLocalName) {
102
- let found = false;
103
- const visit = (node) => {
104
- if (found)
105
- return;
106
- if (t.isJSXElement(node)) {
107
- const name = node.openingElement.name;
108
- if (isJsxIdentifier(name) && name.name === outletLocalName) {
109
- found = true;
110
- return;
111
- }
112
- for (const child of node.children) {
113
- visit(child);
114
- if (found)
115
- return;
116
- }
117
- return;
118
- }
119
- if (t.isJSXFragment(node)) {
120
- for (const child of node.children) {
121
- visit(child);
122
- if (found)
123
- return;
124
- }
125
- }
126
- };
127
- visit(returnedJsx);
128
- return found;
129
- }
130
- function hasUnwrappedOutletInReturnedJsx(returnedJsx, providerLocalName, outletLocalName) {
131
- let foundUnwrappedOutlet = false;
132
- const visit = (node, underProvider) => {
133
- if (foundUnwrappedOutlet)
134
- return;
135
- if (t.isJSXElement(node)) {
136
- const name = node.openingElement.name;
137
- const isProvider = isJsxIdentifier(name) && name.name === providerLocalName;
138
- const isOutlet = isJsxIdentifier(name) && name.name === outletLocalName;
139
- const nextUnderProvider = underProvider || isProvider;
140
- if (isOutlet && !nextUnderProvider) {
141
- foundUnwrappedOutlet = true;
142
- return;
143
- }
144
- for (const child of node.children) {
145
- visit(child, nextUnderProvider);
146
- if (foundUnwrappedOutlet)
147
- return;
148
- }
149
- return;
150
- }
151
- if (t.isJSXFragment(node)) {
152
- for (const child of node.children) {
153
- visit(child, underProvider);
154
- if (foundUnwrappedOutlet)
155
- return;
156
- }
157
- }
158
- };
159
- visit(returnedJsx, false);
160
- return foundUnwrappedOutlet;
161
- }
162
- export function needsAppProviderFixInAppTsx(sourceCode) {
163
- // Fast pre-check: most files shouldn't be parsed.
164
- const hasLiteralOutletTag = sourceCode.includes("<Outlet");
165
- const mightHaveAliasedOutlet = sourceCode.includes(REACT_ROUTER_IMPORT_PATH) &&
166
- sourceCode.includes(REACT_ROUTER_OUTLET_EXPORT_NAME) &&
167
- sourceCode.includes("<");
168
- if (!hasLiteralOutletTag && !mightHaveAliasedOutlet) {
169
- return false;
170
- }
171
- let ast;
172
- try {
173
- ast = parse(sourceCode, {
174
- sourceType: "module",
175
- plugins: ["typescript", "jsx"],
176
- });
177
- }
178
- catch {
179
- return false;
180
- }
181
- let programPath = null;
182
- traverse(ast, {
183
- Program(path) {
184
- programPath = path;
185
- path.stop();
186
- },
187
- });
188
- if (!programPath)
189
- return false;
190
- const defaultFn = resolveDefaultExportedFunction(programPath);
191
- if (!defaultFn)
192
- return false;
193
- const returnedJsx = findFirstReturnedJsxExpressionNoMutate(defaultFn);
194
- if (!returnedJsx)
195
- return false;
196
- const outletLocalName = getOutletLocalNameFromImports(programPath) ??
197
- REACT_ROUTER_OUTLET_EXPORT_NAME;
198
- // Strict: if there is no Outlet in the returned JSX, we should not complain.
199
- if (!hasOutletInReturnedJsx(returnedJsx, outletLocalName)) {
200
- return false;
201
- }
202
- const providerLocalName = getAppProviderLocalNameFromImports(programPath);
203
- if (!providerLocalName) {
204
- // If Outlet is present but the library App import isn't, Clark must fix App.tsx.
205
- return true;
206
- }
207
- return hasUnwrappedOutletInReturnedJsx(returnedJsx, providerLocalName, outletLocalName);
208
- }
209
- //# sourceMappingURL=ensure-app-provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ensure-app-provider.js","sourceRoot":"","sources":["../src/ensure-app-provider.ts"],"names":[],"mappings":"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"}