@superblocksteam/vite-plugin-file-sync 2.0.34 → 2.0.35-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/dist/ai-service/agent/apis.d.ts +45 -0
  2. package/dist/ai-service/agent/apis.d.ts.map +1 -0
  3. package/dist/ai-service/agent/apis.js +1255 -0
  4. package/dist/ai-service/agent/apis.js.map +1 -0
  5. package/dist/ai-service/agent/tool-message-utils.d.ts +30 -0
  6. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -0
  7. package/dist/ai-service/agent/tool-message-utils.js +261 -0
  8. package/dist/ai-service/agent/tool-message-utils.js.map +1 -0
  9. package/dist/ai-service/agent/tools/build-add-event.d.ts +16 -0
  10. package/dist/ai-service/agent/tools/build-add-event.d.ts.map +1 -0
  11. package/dist/ai-service/agent/tools/build-add-event.js +43 -0
  12. package/dist/ai-service/agent/tools/build-add-event.js.map +1 -0
  13. package/dist/ai-service/agent/tools/build-add-state-var.d.ts +18 -0
  14. package/dist/ai-service/agent/tools/build-add-state-var.d.ts.map +1 -0
  15. package/dist/ai-service/agent/tools/build-add-state-var.js +61 -0
  16. package/dist/ai-service/agent/tools/build-add-state-var.js.map +1 -0
  17. package/dist/ai-service/agent/tools/build-add-timer.d.ts +18 -0
  18. package/dist/ai-service/agent/tools/build-add-timer.d.ts.map +1 -0
  19. package/dist/ai-service/agent/tools/build-add-timer.js +45 -0
  20. package/dist/ai-service/agent/tools/build-add-timer.js.map +1 -0
  21. package/dist/ai-service/agent/tools/build-create-page.d.ts +11 -0
  22. package/dist/ai-service/agent/tools/build-create-page.d.ts.map +1 -0
  23. package/dist/ai-service/agent/tools/build-create-page.js +56 -0
  24. package/dist/ai-service/agent/tools/build-create-page.js.map +1 -0
  25. package/dist/ai-service/agent/tools/build-debug.d.ts +4 -0
  26. package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -0
  27. package/dist/ai-service/agent/tools/build-debug.js +41 -0
  28. package/dist/ai-service/agent/tools/build-debug.js.map +1 -0
  29. package/dist/ai-service/agent/tools/build-edit-file.d.ts +28 -0
  30. package/dist/ai-service/agent/tools/build-edit-file.d.ts.map +1 -0
  31. package/dist/ai-service/agent/tools/build-edit-file.js +433 -0
  32. package/dist/ai-service/agent/tools/build-edit-file.js.map +1 -0
  33. package/dist/ai-service/agent/tools/build-finalize.d.ts +37 -0
  34. package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -0
  35. package/dist/ai-service/agent/tools/build-finalize.js +97 -0
  36. package/dist/ai-service/agent/tools/build-finalize.js.map +1 -0
  37. package/dist/ai-service/agent/tools/build-install-packages.d.ts +7 -0
  38. package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -0
  39. package/dist/ai-service/agent/tools/build-install-packages.js +20 -0
  40. package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -0
  41. package/dist/ai-service/agent/tools/build-list-available-components.d.ts +9 -0
  42. package/dist/ai-service/agent/tools/build-list-available-components.d.ts.map +1 -0
  43. package/dist/ai-service/agent/tools/build-list-available-components.js +44 -0
  44. package/dist/ai-service/agent/tools/build-list-available-components.js.map +1 -0
  45. package/dist/ai-service/agent/tools/build-list-files.d.ts +5 -0
  46. package/dist/ai-service/agent/tools/build-list-files.d.ts.map +1 -0
  47. package/dist/ai-service/agent/tools/build-list-files.js +24 -0
  48. package/dist/ai-service/agent/tools/build-list-files.js.map +1 -0
  49. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +50 -0
  50. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts.map +1 -0
  51. package/dist/ai-service/agent/tools/build-manage-checklist.js +156 -0
  52. package/dist/ai-service/agent/tools/build-manage-checklist.js.map +1 -0
  53. package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts +18 -0
  54. package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts.map +1 -0
  55. package/dist/ai-service/agent/tools/build-multi-edit-file.js +185 -0
  56. package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -0
  57. package/dist/ai-service/agent/tools/build-read-files.d.ts +9 -0
  58. package/dist/ai-service/agent/tools/build-read-files.d.ts.map +1 -0
  59. package/dist/ai-service/agent/tools/build-read-files.js +49 -0
  60. package/dist/ai-service/agent/tools/build-read-files.js.map +1 -0
  61. package/dist/ai-service/agent/tools/build-register-component-name.d.ts +11 -0
  62. package/dist/ai-service/agent/tools/build-register-component-name.d.ts.map +1 -0
  63. package/dist/ai-service/agent/tools/build-register-component-name.js +52 -0
  64. package/dist/ai-service/agent/tools/build-register-component-name.js.map +1 -0
  65. package/dist/ai-service/agent/tools/build-rename-page.d.ts +10 -0
  66. package/dist/ai-service/agent/tools/build-rename-page.d.ts.map +1 -0
  67. package/dist/ai-service/agent/tools/build-rename-page.js +49 -0
  68. package/dist/ai-service/agent/tools/build-rename-page.js.map +1 -0
  69. package/dist/ai-service/agent/tools/build-update-state-var.d.ts +17 -0
  70. package/dist/ai-service/agent/tools/build-update-state-var.d.ts.map +1 -0
  71. package/dist/ai-service/agent/tools/build-update-state-var.js +66 -0
  72. package/dist/ai-service/agent/tools/build-update-state-var.js.map +1 -0
  73. package/dist/ai-service/agent/tools/build-validate-icons.d.ts +24 -0
  74. package/dist/ai-service/agent/tools/build-validate-icons.d.ts.map +1 -0
  75. package/dist/ai-service/agent/tools/build-validate-icons.js +96 -0
  76. package/dist/ai-service/agent/tools/build-validate-icons.js.map +1 -0
  77. package/dist/ai-service/agent/tools/build-write-file.d.ts +11 -0
  78. package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -0
  79. package/dist/ai-service/agent/tools/build-write-file.js +59 -0
  80. package/dist/ai-service/agent/tools/build-write-file.js.map +1 -0
  81. package/dist/ai-service/agent/tools/debug-cache.d.ts +39 -0
  82. package/dist/ai-service/agent/tools/debug-cache.d.ts.map +1 -0
  83. package/dist/ai-service/agent/tools/debug-cache.js +118 -0
  84. package/dist/ai-service/agent/tools/debug-cache.js.map +1 -0
  85. package/dist/ai-service/agent/tools/index.d.ts +20 -0
  86. package/dist/ai-service/agent/tools/index.d.ts.map +1 -0
  87. package/dist/ai-service/agent/tools/index.js +20 -0
  88. package/dist/ai-service/agent/tools/index.js.map +1 -0
  89. package/dist/ai-service/agent/tools/shared-helpers.d.ts +8 -0
  90. package/dist/ai-service/agent/tools/shared-helpers.d.ts.map +1 -0
  91. package/dist/ai-service/agent/tools/shared-helpers.js +26 -0
  92. package/dist/ai-service/agent/tools/shared-helpers.js.map +1 -0
  93. package/dist/ai-service/agent/tools/study-current-app-state.d.ts +19 -0
  94. package/dist/ai-service/agent/tools/study-current-app-state.d.ts.map +1 -0
  95. package/dist/ai-service/agent/tools/study-current-app-state.js +18 -0
  96. package/dist/ai-service/agent/tools/study-current-app-state.js.map +1 -0
  97. package/dist/ai-service/agent/tools.d.ts +262 -0
  98. package/dist/ai-service/agent/tools.d.ts.map +1 -0
  99. package/dist/ai-service/agent/tools.js +102 -0
  100. package/dist/ai-service/agent/tools.js.map +1 -0
  101. package/dist/ai-service/agent/utils.d.ts +34 -0
  102. package/dist/ai-service/agent/utils.d.ts.map +1 -0
  103. package/dist/ai-service/agent/utils.js +242 -0
  104. package/dist/ai-service/agent/utils.js.map +1 -0
  105. package/dist/ai-service/app-interface/{source-tracker.d.ts → file-system-interface.d.ts} +7 -2
  106. package/dist/ai-service/app-interface/file-system-interface.d.ts.map +1 -0
  107. package/dist/ai-service/app-interface/{source-tracker.js → file-system-interface.js} +18 -2
  108. package/dist/ai-service/app-interface/file-system-interface.js.map +1 -0
  109. package/dist/ai-service/app-interface/linter.d.ts.map +1 -1
  110. package/dist/ai-service/app-interface/linter.js +5 -1
  111. package/dist/ai-service/app-interface/linter.js.map +1 -1
  112. package/dist/ai-service/app-interface/shell.d.ts +16 -2
  113. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  114. package/dist/ai-service/app-interface/shell.js +109 -18
  115. package/dist/ai-service/app-interface/shell.js.map +1 -1
  116. package/dist/ai-service/chat/chat-session-store.d.ts +21 -1
  117. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  118. package/dist/ai-service/chat/chat-session-store.js +149 -10
  119. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  120. package/dist/ai-service/chat/extract-history.d.ts +10 -0
  121. package/dist/ai-service/chat/extract-history.d.ts.map +1 -1
  122. package/dist/ai-service/chat/extract-history.js +56 -13
  123. package/dist/ai-service/chat/extract-history.js.map +1 -1
  124. package/dist/ai-service/clark-provider/clark-error-handler.d.ts +4 -46
  125. package/dist/ai-service/clark-provider/clark-error-handler.d.ts.map +1 -1
  126. package/dist/ai-service/clark-provider/clark-error-handler.js +1 -1
  127. package/dist/ai-service/clark-provider/clark-error-handler.js.map +1 -1
  128. package/dist/ai-service/clark-provider/clark-language-model.d.ts +6 -5
  129. package/dist/ai-service/clark-provider/clark-language-model.d.ts.map +1 -1
  130. package/dist/ai-service/clark-provider/clark-language-model.js +163 -129
  131. package/dist/ai-service/clark-provider/clark-language-model.js.map +1 -1
  132. package/dist/ai-service/clark-provider/clark-provider.d.ts +5 -5
  133. package/dist/ai-service/clark-provider/clark-provider.d.ts.map +1 -1
  134. package/dist/ai-service/clark-provider/clark-provider.js +4 -0
  135. package/dist/ai-service/clark-provider/clark-provider.js.map +1 -1
  136. package/dist/ai-service/const.d.ts +20 -4
  137. package/dist/ai-service/const.d.ts.map +1 -1
  138. package/dist/ai-service/const.js +12 -3
  139. package/dist/ai-service/const.js.map +1 -1
  140. package/dist/ai-service/context/app-context.d.ts +32 -2
  141. package/dist/ai-service/context/app-context.d.ts.map +1 -1
  142. package/dist/ai-service/context/app-context.js +75 -6
  143. package/dist/ai-service/context/app-context.js.map +1 -1
  144. package/dist/ai-service/evals/content-matchers/index.d.ts.map +1 -1
  145. package/dist/ai-service/evals/content-matchers/index.js +4 -1
  146. package/dist/ai-service/evals/content-matchers/index.js.map +1 -1
  147. package/dist/ai-service/evals/helpers/index.d.ts +1 -1
  148. package/dist/ai-service/evals/helpers/index.d.ts.map +1 -1
  149. package/dist/ai-service/evals/helpers/index.js +15 -3
  150. package/dist/ai-service/evals/helpers/index.js.map +1 -1
  151. package/dist/ai-service/evals/llm-provider.d.ts +1 -1
  152. package/dist/ai-service/evals/llm-provider.d.ts.map +1 -1
  153. package/dist/ai-service/evals/llm-provider.js +2 -2
  154. package/dist/ai-service/evals/llm-provider.js.map +1 -1
  155. package/dist/ai-service/index.d.ts +10 -5
  156. package/dist/ai-service/index.d.ts.map +1 -1
  157. package/dist/ai-service/index.js +143 -216
  158. package/dist/ai-service/index.js.map +1 -1
  159. package/dist/ai-service/integrations/metadata/database.d.ts.map +1 -1
  160. package/dist/ai-service/integrations/metadata/database.js +7 -29
  161. package/dist/ai-service/integrations/metadata/database.js.map +1 -1
  162. package/dist/ai-service/integrations/metadata/graphql-based.d.ts.map +1 -1
  163. package/dist/ai-service/integrations/metadata/graphql-based.js +6 -29
  164. package/dist/ai-service/integrations/metadata/graphql-based.js.map +1 -1
  165. package/dist/ai-service/integrations/metadata/open-api.d.ts.map +1 -1
  166. package/dist/ai-service/integrations/metadata/open-api.js +7 -31
  167. package/dist/ai-service/integrations/metadata/open-api.js.map +1 -1
  168. package/dist/ai-service/llm/impl/anthropic.js +3 -3
  169. package/dist/ai-service/llm/impl/anthropic.js.map +1 -1
  170. package/dist/ai-service/llm/impl/clark.js +3 -3
  171. package/dist/ai-service/llm/impl/clark.js.map +1 -1
  172. package/dist/ai-service/llm/provider.d.ts +3 -2
  173. package/dist/ai-service/llm/provider.d.ts.map +1 -1
  174. package/dist/ai-service/llm/provider.js +6 -3
  175. package/dist/ai-service/llm/provider.js.map +1 -1
  176. package/dist/ai-service/llm/types.d.ts +4 -4
  177. package/dist/ai-service/llm/types.d.ts.map +1 -1
  178. package/dist/ai-service/llm/utils.d.ts +6 -5
  179. package/dist/ai-service/llm/utils.d.ts.map +1 -1
  180. package/dist/ai-service/llm/utils.js +2 -2
  181. package/dist/ai-service/llm/utils.js.map +1 -1
  182. package/dist/ai-service/profiler/clark-profiler.d.ts +86 -0
  183. package/dist/ai-service/profiler/clark-profiler.d.ts.map +1 -0
  184. package/dist/ai-service/profiler/clark-profiler.js +208 -0
  185. package/dist/ai-service/profiler/clark-profiler.js.map +1 -0
  186. package/dist/ai-service/profiler/index.d.ts +4 -0
  187. package/dist/ai-service/profiler/index.d.ts.map +1 -0
  188. package/dist/ai-service/profiler/index.js +4 -0
  189. package/dist/ai-service/profiler/index.js.map +1 -0
  190. package/dist/ai-service/profiler/perfetto-profiler.d.ts +116 -0
  191. package/dist/ai-service/profiler/perfetto-profiler.d.ts.map +1 -0
  192. package/dist/ai-service/profiler/perfetto-profiler.js +240 -0
  193. package/dist/ai-service/profiler/perfetto-profiler.js.map +1 -0
  194. package/dist/ai-service/profiler/tool-profiler.d.ts +33 -0
  195. package/dist/ai-service/profiler/tool-profiler.d.ts.map +1 -0
  196. package/dist/ai-service/profiler/tool-profiler.js +157 -0
  197. package/dist/ai-service/profiler/tool-profiler.js.map +1 -0
  198. package/dist/ai-service/prompt-builder-service/builders/code-generation.d.ts.map +1 -1
  199. package/dist/ai-service/prompt-builder-service/builders/code-generation.js +37 -9
  200. package/dist/ai-service/prompt-builder-service/builders/code-generation.js.map +1 -1
  201. package/dist/ai-service/prompt-builder-service/builders/incremental-edits.d.ts +13 -0
  202. package/dist/ai-service/prompt-builder-service/builders/incremental-edits.d.ts.map +1 -0
  203. package/dist/ai-service/prompt-builder-service/builders/incremental-edits.js +71 -0
  204. package/dist/ai-service/prompt-builder-service/builders/incremental-edits.js.map +1 -0
  205. package/dist/ai-service/prompt-builder-service/builders/specific-edits.js +4 -4
  206. package/dist/ai-service/prompt-builder-service/builders/specific-edits.js.map +1 -1
  207. package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.d.ts.map +1 -1
  208. package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js +4 -2
  209. package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js.map +1 -1
  210. package/dist/ai-service/prompt-builder-service/constants/superblocks-platform-fragments.d.ts +2 -1
  211. package/dist/ai-service/prompt-builder-service/constants/superblocks-platform-fragments.d.ts.map +1 -1
  212. package/dist/ai-service/prompt-builder-service/constants/superblocks-platform-fragments.js +40 -31
  213. package/dist/ai-service/prompt-builder-service/constants/superblocks-platform-fragments.js.map +1 -1
  214. package/dist/ai-service/prompt-builder-service/fragment-generators/base-fragment.d.ts +4 -3
  215. package/dist/ai-service/prompt-builder-service/fragment-generators/base-fragment.d.ts.map +1 -1
  216. package/dist/ai-service/prompt-builder-service/fragment-generators/base-fragment.js +12 -8
  217. package/dist/ai-service/prompt-builder-service/fragment-generators/base-fragment.js.map +1 -1
  218. package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.d.ts +6 -0
  219. package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.d.ts.map +1 -0
  220. package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.js +52 -0
  221. package/dist/ai-service/prompt-builder-service/fragment-generators/chakra-tokens.js.map +1 -0
  222. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ButtonPropsDocs.js +1 -1
  223. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/CheckboxPropsDocs.d.ts +1 -1
  224. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/CheckboxPropsDocs.d.ts.map +1 -1
  225. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/CheckboxPropsDocs.js +2 -2
  226. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/CheckboxPropsDocs.js.map +1 -1
  227. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ColumnPropsDocs.js +1 -1
  228. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ContainerPropsDocs.js +1 -1
  229. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DatePickerPropsDocs.d.ts +1 -1
  230. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DatePickerPropsDocs.d.ts.map +1 -1
  231. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DatePickerPropsDocs.js +2 -2
  232. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DatePickerPropsDocs.js.map +1 -1
  233. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DropdownPropsDocs.d.ts +1 -1
  234. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DropdownPropsDocs.d.ts.map +1 -1
  235. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DropdownPropsDocs.js +2 -2
  236. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DropdownPropsDocs.js.map +1 -1
  237. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/IconPropsDocs.js +1 -1
  238. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ImagePropsDocs.js +1 -1
  239. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/InputPropsDocs.d.ts +1 -1
  240. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/InputPropsDocs.d.ts.map +1 -1
  241. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/InputPropsDocs.js +2 -2
  242. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/InputPropsDocs.js.map +1 -1
  243. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ModalPropsDocs.js +1 -1
  244. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/PagePropsDocs.js +1 -1
  245. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SectionPropsDocs.js +1 -1
  246. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SlideoutPropsDocs.js +1 -1
  247. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SwitchPropsDocs.d.ts +1 -1
  248. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SwitchPropsDocs.d.ts.map +1 -1
  249. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SwitchPropsDocs.js +2 -2
  250. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SwitchPropsDocs.js.map +1 -1
  251. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TablePropsDocs.d.ts +1 -1
  252. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TablePropsDocs.d.ts.map +1 -1
  253. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TablePropsDocs.js +2 -2
  254. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TablePropsDocs.js.map +1 -1
  255. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TextPropsDocs.d.ts +1 -1
  256. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TextPropsDocs.d.ts.map +1 -1
  257. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TextPropsDocs.js +2 -2
  258. package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TextPropsDocs.js.map +1 -1
  259. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/Dim.js +1 -1
  260. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/EventFlow.js +1 -1
  261. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/TextStyleWithVariant.js +1 -1
  262. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/index.d.ts +0 -1
  263. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/index.d.ts.map +1 -1
  264. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/index.js +0 -1
  265. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/index.js.map +1 -1
  266. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/full-examples.d.ts +1 -1
  267. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/full-examples.d.ts.map +1 -1
  268. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/full-examples.js +2 -2
  269. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/full-examples.js.map +1 -1
  270. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/index.d.ts +1 -1
  271. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/index.d.ts.map +1 -1
  272. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/index.js +1 -1
  273. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/index.js.map +1 -1
  274. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-api.d.ts +1 -1
  275. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-api.d.ts.map +1 -1
  276. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-api.js +2 -2
  277. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-api.js.map +1 -1
  278. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-components-rules.d.ts +1 -1
  279. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-components-rules.d.ts.map +1 -1
  280. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-components-rules.js +2 -2
  281. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-components-rules.js.map +1 -1
  282. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-custom-components.d.ts +1 -1
  283. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-custom-components.d.ts.map +1 -1
  284. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-custom-components.js +2 -2
  285. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-custom-components.js.map +1 -1
  286. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-data-filtering.js +1 -1
  287. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-event-flow.d.ts +1 -1
  288. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-event-flow.d.ts.map +1 -1
  289. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-event-flow.js +2 -2
  290. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-event-flow.js.map +1 -1
  291. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-forms.d.ts +1 -1
  292. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-forms.d.ts.map +1 -1
  293. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-forms.js +2 -2
  294. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-forms.js.map +1 -1
  295. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-layouts.d.ts +1 -1
  296. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-layouts.d.ts.map +1 -1
  297. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-layouts.js +2 -2
  298. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-layouts.js.map +1 -1
  299. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-page.d.ts +1 -1
  300. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-page.d.ts.map +1 -1
  301. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-page.js +2 -2
  302. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-page.js.map +1 -1
  303. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-rbac.d.ts +1 -1
  304. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-rbac.d.ts.map +1 -1
  305. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-rbac.js +2 -2
  306. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-rbac.js.map +1 -1
  307. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-routes.js +1 -1
  308. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-state.d.ts +1 -1
  309. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-state.d.ts.map +1 -1
  310. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-state.js +2 -2
  311. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-state.js.map +1 -1
  312. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-theming-chakra-new.d.ts +2 -0
  313. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-theming-chakra-new.d.ts.map +1 -0
  314. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-theming-chakra-new.js +6 -0
  315. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-theming-chakra-new.js.map +1 -0
  316. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-base.d.ts +1 -1
  317. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-base.d.ts.map +1 -1
  318. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-base.js +2 -2
  319. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-base.js.map +1 -1
  320. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-incremental.d.ts +1 -1
  321. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-incremental.d.ts.map +1 -1
  322. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-incremental.js +2 -2
  323. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-incremental.js.map +1 -1
  324. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-specific-edit.d.ts +1 -1
  325. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-specific-edit.d.ts.map +1 -1
  326. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-specific-edit.js +2 -2
  327. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-specific-edit.js.map +1 -1
  328. package/dist/ai-service/prompt-builder-service/types.d.ts +2 -0
  329. package/dist/ai-service/prompt-builder-service/types.d.ts.map +1 -1
  330. package/dist/ai-service/prompt-builder-service/types.js.map +1 -1
  331. package/dist/ai-service/prompt-builder-service/utils/chakra/extract-chakra-tokens.d.ts +18 -0
  332. package/dist/ai-service/prompt-builder-service/utils/chakra/extract-chakra-tokens.d.ts.map +1 -0
  333. package/dist/ai-service/prompt-builder-service/utils/chakra/extract-chakra-tokens.js +340 -0
  334. package/dist/ai-service/prompt-builder-service/utils/chakra/extract-chakra-tokens.js.map +1 -0
  335. package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.js +2 -308
  336. package/dist/ai-service/prompt-builder-service/utils/integrations/to-sdk-prompt.js.map +1 -1
  337. package/dist/ai-service/state-machine/clark-fsm.d.ts +31 -12
  338. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  339. package/dist/ai-service/state-machine/clark-fsm.js +2 -0
  340. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  341. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
  342. package/dist/ai-service/state-machine/handlers/agent-planning.js +75 -214
  343. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  344. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts +1 -1
  345. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
  346. package/dist/ai-service/state-machine/handlers/awaiting-user.js +32 -11
  347. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
  348. package/dist/ai-service/state-machine/handlers/idle.d.ts +1 -1
  349. package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
  350. package/dist/ai-service/state-machine/handlers/idle.js +5 -2
  351. package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
  352. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts +2 -2
  353. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  354. package/dist/ai-service/state-machine/handlers/llm-generating.js +333 -329
  355. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  356. package/dist/ai-service/state-machine/handlers/post-processing.d.ts +1 -1
  357. package/dist/ai-service/state-machine/handlers/post-processing.d.ts.map +1 -1
  358. package/dist/ai-service/state-machine/handlers/post-processing.js +20 -9
  359. package/dist/ai-service/state-machine/handlers/post-processing.js.map +1 -1
  360. package/dist/ai-service/state-machine/handlers/simple-prompt-builder.d.ts +2 -0
  361. package/dist/ai-service/state-machine/handlers/simple-prompt-builder.d.ts.map +1 -0
  362. package/dist/ai-service/state-machine/handlers/simple-prompt-builder.js +2269 -0
  363. package/dist/ai-service/state-machine/handlers/simple-prompt-builder.js.map +1 -0
  364. package/dist/ai-service/state-machine/helpers/change-info.d.ts.map +1 -1
  365. package/dist/ai-service/state-machine/helpers/change-info.js +9 -0
  366. package/dist/ai-service/state-machine/helpers/change-info.js.map +1 -1
  367. package/dist/ai-service/state-machine/helpers/classification.d.ts.map +1 -1
  368. package/dist/ai-service/state-machine/helpers/classification.js +2 -1
  369. package/dist/ai-service/state-machine/helpers/classification.js.map +1 -1
  370. package/dist/ai-service/state-machine/helpers/file-read-tracker.d.ts +7 -0
  371. package/dist/ai-service/state-machine/helpers/file-read-tracker.d.ts.map +1 -0
  372. package/dist/ai-service/state-machine/helpers/file-read-tracker.js +17 -0
  373. package/dist/ai-service/state-machine/helpers/file-read-tracker.js.map +1 -0
  374. package/dist/ai-service/state-machine/helpers/peer.d.ts +1 -1
  375. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
  376. package/dist/ai-service/state-machine/helpers/peer.js +2 -6
  377. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
  378. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  379. package/dist/ai-service/state-machine/mocks.js +11 -6
  380. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  381. package/dist/ai-service/transform/api-builder/shared.d.ts +6 -0
  382. package/dist/ai-service/transform/api-builder/shared.d.ts.map +1 -1
  383. package/dist/ai-service/transform/api-builder/shared.js +19 -8
  384. package/dist/ai-service/transform/api-builder/shared.js.map +1 -1
  385. package/dist/ai-service/types.d.ts +5 -3
  386. package/dist/ai-service/types.d.ts.map +1 -1
  387. package/dist/ai-service/types.js.map +1 -1
  388. package/dist/ai-service/util/ddog-llmobs.d.ts +20 -0
  389. package/dist/ai-service/util/ddog-llmobs.d.ts.map +1 -0
  390. package/dist/ai-service/util/ddog-llmobs.js +197 -0
  391. package/dist/ai-service/util/ddog-llmobs.js.map +1 -0
  392. package/dist/ai-service/util/llm-config-utils.d.ts +16 -0
  393. package/dist/ai-service/util/llm-config-utils.d.ts.map +1 -0
  394. package/dist/ai-service/util/llm-config-utils.js +45 -0
  395. package/dist/ai-service/util/llm-config-utils.js.map +1 -0
  396. package/dist/component-docs-service/index.d.ts +37 -0
  397. package/dist/component-docs-service/index.d.ts.map +1 -0
  398. package/dist/component-docs-service/index.js +120 -0
  399. package/dist/component-docs-service/index.js.map +1 -0
  400. package/dist/components-manager.d.ts +3 -1
  401. package/dist/components-manager.d.ts.map +1 -1
  402. package/dist/components-manager.js +24 -24
  403. package/dist/components-manager.js.map +1 -1
  404. package/dist/draft-interface.d.ts +5 -0
  405. package/dist/draft-interface.d.ts.map +1 -1
  406. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  407. package/dist/file-sync-vite-plugin.js +98 -46
  408. package/dist/file-sync-vite-plugin.js.map +1 -1
  409. package/dist/file-system-helpers.d.ts +1 -0
  410. package/dist/file-system-helpers.d.ts.map +1 -1
  411. package/dist/file-system-helpers.js +3 -0
  412. package/dist/file-system-helpers.js.map +1 -1
  413. package/dist/file-system-manager.d.ts +11 -2
  414. package/dist/file-system-manager.d.ts.map +1 -1
  415. package/dist/file-system-manager.js +98 -42
  416. package/dist/file-system-manager.js.map +1 -1
  417. package/dist/injected-index.d.ts +1 -0
  418. package/dist/injected-index.d.ts.map +1 -1
  419. package/dist/injected-index.js +8 -3
  420. package/dist/injected-index.js.map +1 -1
  421. package/dist/parsing/bindings.d.ts +1 -1
  422. package/dist/parsing/bindings.d.ts.map +1 -1
  423. package/dist/parsing/bindings.js +14 -5
  424. package/dist/parsing/bindings.js.map +1 -1
  425. package/dist/parsing/entity/to-code-entity.d.ts.map +1 -1
  426. package/dist/parsing/entity/to-code-entity.js +12 -0
  427. package/dist/parsing/entity/to-code-entity.js.map +1 -1
  428. package/dist/parsing/entity/to-value-entity.d.ts.map +1 -1
  429. package/dist/parsing/entity/to-value-entity.js +4 -1
  430. package/dist/parsing/entity/to-value-entity.js.map +1 -1
  431. package/dist/parsing/events/to-code-events.d.ts.map +1 -1
  432. package/dist/parsing/events/to-code-events.js +1 -11
  433. package/dist/parsing/events/to-code-events.js.map +1 -1
  434. package/dist/parsing/events/to-value-events.d.ts +1 -1
  435. package/dist/parsing/function/index.d.ts +4 -0
  436. package/dist/parsing/function/index.d.ts.map +1 -0
  437. package/dist/parsing/function/index.js +7 -0
  438. package/dist/parsing/function/index.js.map +1 -0
  439. package/dist/parsing/function/to-code-function.d.ts +2 -0
  440. package/dist/parsing/function/to-code-function.d.ts.map +1 -0
  441. package/dist/parsing/function/to-code-function.js +4 -0
  442. package/dist/parsing/function/to-code-function.js.map +1 -0
  443. package/dist/parsing/function/to-value-function.d.ts +4 -0
  444. package/dist/parsing/function/to-value-function.d.ts.map +1 -0
  445. package/dist/parsing/function/to-value-function.js +33 -0
  446. package/dist/parsing/function/to-value-function.js.map +1 -0
  447. package/dist/parsing/ids.js +2 -2
  448. package/dist/parsing/ids.js.map +1 -1
  449. package/dist/parsing/imports.d.ts +4 -0
  450. package/dist/parsing/imports.d.ts.map +1 -1
  451. package/dist/parsing/imports.js +26 -0
  452. package/dist/parsing/imports.js.map +1 -1
  453. package/dist/parsing/jsx-utils.d.ts +1 -0
  454. package/dist/parsing/jsx-utils.d.ts.map +1 -1
  455. package/dist/parsing/jsx-utils.js +3 -0
  456. package/dist/parsing/jsx-utils.js.map +1 -1
  457. package/dist/parsing/jsx.d.ts +4 -3
  458. package/dist/parsing/jsx.d.ts.map +1 -1
  459. package/dist/parsing/jsx.js +63 -23
  460. package/dist/parsing/jsx.js.map +1 -1
  461. package/dist/parsing/page.d.ts +2 -2
  462. package/dist/parsing/page.d.ts.map +1 -1
  463. package/dist/parsing/page.js +182 -98
  464. package/dist/parsing/page.js.map +1 -1
  465. package/dist/parsing/properties.d.ts +2 -1
  466. package/dist/parsing/properties.d.ts.map +1 -1
  467. package/dist/parsing/properties.js +41 -14
  468. package/dist/parsing/properties.js.map +1 -1
  469. package/dist/parsing/scope.d.ts.map +1 -1
  470. package/dist/parsing/scope.js +51 -5
  471. package/dist/parsing/scope.js.map +1 -1
  472. package/dist/parsing/type-parsing-registry.d.ts +1 -0
  473. package/dist/parsing/type-parsing-registry.d.ts.map +1 -1
  474. package/dist/parsing/type-parsing-registry.js +2 -0
  475. package/dist/parsing/type-parsing-registry.js.map +1 -1
  476. package/dist/parsing/util.d.ts.map +1 -1
  477. package/dist/parsing/util.js +22 -14
  478. package/dist/parsing/util.js.map +1 -1
  479. package/dist/plugin-options.d.ts +1 -0
  480. package/dist/plugin-options.d.ts.map +1 -1
  481. package/dist/plugin-options.js.map +1 -1
  482. package/dist/routing.d.ts.map +1 -1
  483. package/dist/routing.js +81 -34
  484. package/dist/routing.js.map +1 -1
  485. package/dist/sb-scope-manager.d.ts.map +1 -1
  486. package/dist/sb-scope-manager.js +37 -6
  487. package/dist/sb-scope-manager.js.map +1 -1
  488. package/dist/socket-manager.d.ts +3 -1
  489. package/dist/socket-manager.d.ts.map +1 -1
  490. package/dist/socket-manager.js +16 -1
  491. package/dist/socket-manager.js.map +1 -1
  492. package/dist/source-tracker.d.ts +14 -0
  493. package/dist/source-tracker.d.ts.map +1 -1
  494. package/dist/source-tracker.js +34 -28
  495. package/dist/source-tracker.js.map +1 -1
  496. package/dist/sync-service/draft-helpers.d.ts +7 -0
  497. package/dist/sync-service/draft-helpers.d.ts.map +1 -1
  498. package/dist/sync-service/draft-helpers.js +81 -19
  499. package/dist/sync-service/draft-helpers.js.map +1 -1
  500. package/dist/sync-service/index.d.ts +8 -0
  501. package/dist/sync-service/index.d.ts.map +1 -1
  502. package/dist/sync-service/index.js +15 -1
  503. package/dist/sync-service/index.js.map +1 -1
  504. package/dist/sync-service/snapshot/upload-snapshot.d.ts.map +1 -1
  505. package/dist/sync-service/snapshot/upload-snapshot.js.map +1 -1
  506. package/dist/util/ignore-patterns.d.ts +9 -0
  507. package/dist/util/ignore-patterns.d.ts.map +1 -0
  508. package/dist/util/ignore-patterns.js +53 -0
  509. package/dist/util/ignore-patterns.js.map +1 -0
  510. package/package.json +16 -11
  511. package/dist/ai-service/app-interface/source-tracker.d.ts.map +0 -1
  512. package/dist/ai-service/app-interface/source-tracker.js.map +0 -1
  513. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/Annotations.d.ts +0 -2
  514. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/Annotations.d.ts.map +0 -1
  515. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/Annotations.js +0 -6
  516. package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/Annotations.js.map +0 -1
  517. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-theming.d.ts +0 -2
  518. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-theming.d.ts.map +0 -1
  519. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-theming.js +0 -6
  520. package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-theming.js.map +0 -1
@@ -0,0 +1,185 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { tool } from "ai";
4
+ import { createTwoFilesPatch } from "diff";
5
+ import z from "zod";
6
+ import { ROUTES_FILE } from "../../../file-system-helpers.js";
7
+ import { fileReadTracker } from "../../state-machine/helpers/file-read-tracker.js";
8
+ import { replace } from "./build-edit-file.js";
9
+ import { debugCache, createDebugFunction } from "./debug-cache.js";
10
+ function trimDiff(diff) {
11
+ const lines = diff.split("\n");
12
+ const contentLines = lines.filter((line) => (line.startsWith("+") || line.startsWith("-") || line.startsWith(" ")) &&
13
+ !line.startsWith("---") &&
14
+ !line.startsWith("+++"));
15
+ if (contentLines.length === 0)
16
+ return diff;
17
+ let min = Infinity;
18
+ for (const line of contentLines) {
19
+ const content = line.slice(1);
20
+ if (content.trim().length > 0) {
21
+ const match = content.match(/^(\s*)/);
22
+ if (match?.[1])
23
+ min = Math.min(min, match[1].length);
24
+ }
25
+ }
26
+ if (min === Infinity || min === 0)
27
+ return diff;
28
+ const trimmedLines = lines.map((line) => {
29
+ if ((line.startsWith("+") || line.startsWith("-") || line.startsWith(" ")) &&
30
+ !line.startsWith("---") &&
31
+ !line.startsWith("+++")) {
32
+ const prefix = line[0] ?? "";
33
+ const content = line.slice(1);
34
+ return prefix + content.slice(min);
35
+ }
36
+ return line;
37
+ });
38
+ return trimmedLines.join("\n");
39
+ }
40
+ export default function createBuildMultiEditFileTool(clark, services) {
41
+ const { isReadRequired, markRead } = fileReadTracker(clark);
42
+ return tool({
43
+ description: `
44
+ A tool for making multiple edits to a single file in one operation. Built on top of the Edit tool, it allows efficient find-and-replace operations across a file.
45
+
46
+ Before using this tool:
47
+ 1. Use the Read tool to understand the file's contents and context
48
+ 2. Verify the directory path is correct
49
+
50
+ To make multiple file edits, provide the following:
51
+ 1. filePath: The relative path to the file to modify (must be relative, not absolute)
52
+ 2. edits: An array of edit operations to perform, where each edit contains:
53
+ - oldString: The text to replace (must match the file contents exactly, including all whitespace and indentation)
54
+ - newString: The edited text to replace the oldString
55
+ - replaceAll: Replace all occurrences of oldString. This parameter is optional and defaults to false.
56
+
57
+ IMPORTANT:
58
+ - All edits are applied in sequence, in the order they are provided
59
+ - Each edit operates on the result of the previous edit
60
+ - All edits must be valid for the operation to succeed - if any edit fails, none will be applied
61
+ - This tool is ideal when you need to make several changes to different parts of the same file
62
+
63
+ CRITICAL REQUIREMENTS:
64
+ 1. All edits follow the same requirements as the single Edit tool
65
+ 2. The edits are atomic - either all succeed or none are applied
66
+ 3. Plan your edits carefully to avoid conflicts between sequential operations
67
+
68
+ WARNING:
69
+ - The tool will fail if edits.oldString doesn't match the file contents exactly (including whitespace)
70
+ - The tool will fail if edits.oldString and edits.new String are the same
71
+ - Since edits are applied in sequence, ensure that earlier edits don't affect the text that later edits are trying to find
72
+
73
+ When making edits:
74
+ - Ensure all edits result in idiomatic, correct code
75
+ - Do not leave the code in a broken state
76
+ - Always use relative file paths
77
+ - Only use emojis if the user explicitly requests it. Avoid adding emojis to files unless asked.
78
+ - Use replaceAll for replacing and renaming strings across the file. This parameter is useful if you want to rename a variable for instance.
79
+
80
+ If you want to create a new file, use:
81
+ - A new file path, including dir name if needed
82
+ - First edit: empty oldString and the new file's contents as newString
83
+ - Subsequent edits: normal edit operations on the created content
84
+
85
+ DO NOT USE FOR scope.ts, routes.json, or API SOURCE CODE. Attempts to do this will result in an error.
86
+ `,
87
+ inputSchema: z.object({
88
+ filePath: z.string().describe("The relative path to the file to modify"),
89
+ edits: z
90
+ .array(z.object({
91
+ oldString: z.string().describe("The text to replace"),
92
+ newString: z.string().describe("The text to replace it with"),
93
+ replaceAll: z
94
+ .boolean()
95
+ .optional()
96
+ .describe("Replace all occurrences of oldString (default false)."),
97
+ }))
98
+ .min(1)
99
+ .describe("Array of edit operations to perform sequentially on the file"),
100
+ }),
101
+ execute: async ({ filePath, edits }) => {
102
+ if (!filePath) {
103
+ throw new Error("filePath is required");
104
+ }
105
+ if (!edits || edits.length === 0) {
106
+ throw new Error("At least one edit operation is required");
107
+ }
108
+ // Validate all edits first
109
+ for (const [index, edit] of edits.entries()) {
110
+ if (edit.oldString === edit.newString) {
111
+ throw new Error(`Edit ${index + 1}: oldString and newString must be different`);
112
+ }
113
+ }
114
+ if (isReadRequired(filePath)) {
115
+ throw new Error(`Cannot edit ${filePath} without reading it first. Please read the file before attempting to edit it.`);
116
+ }
117
+ // Validate file restrictions
118
+ const isScopeFile = filePath.endsWith("scope.ts");
119
+ if (isScopeFile) {
120
+ throw new Error("Directly editing scope files is not allowed. If you must make changes to the scope, use the appropriate tool.");
121
+ }
122
+ const isRoutesFile = filePath.endsWith(ROUTES_FILE);
123
+ if (isRoutesFile) {
124
+ throw new Error("Directly editing routes files is not allowed. If you must make changes to the routes, use the appropriate tool. The routes file is automatically updated when you create pages.");
125
+ }
126
+ let contentCurrent = "";
127
+ let contentOriginal = "";
128
+ // Handle file creation if first edit has empty oldString
129
+ const firstEdit = edits[0];
130
+ if (firstEdit.oldString === "") {
131
+ contentCurrent = firstEdit.newString;
132
+ contentOriginal = "";
133
+ // Apply remaining edits to the created content
134
+ for (let i = 1; i < edits.length; i++) {
135
+ const edit = edits[i];
136
+ try {
137
+ contentCurrent = replace(contentCurrent, edit.oldString, edit.newString, edit.replaceAll ?? false);
138
+ }
139
+ catch (error) {
140
+ throw new Error(`Edit ${i + 1} failed: ${error instanceof Error ? error.message : String(error)}`);
141
+ }
142
+ }
143
+ }
144
+ else {
145
+ // Read existing file
146
+ const absoluteFilePath = path.join(services.appShell.appRootDirPath, filePath);
147
+ try {
148
+ contentCurrent = await fs.readFile(absoluteFilePath, "utf8");
149
+ contentOriginal = contentCurrent;
150
+ }
151
+ catch {
152
+ throw new Error(`File ${filePath} not found`);
153
+ }
154
+ // Apply all edits sequentially
155
+ for (let i = 0; i < edits.length; i++) {
156
+ const edit = edits[i];
157
+ try {
158
+ contentCurrent = replace(contentCurrent, edit.oldString, edit.newString, edit.replaceAll ?? false);
159
+ }
160
+ catch (error) {
161
+ throw new Error(`Edit ${i + 1} failed: ${error instanceof Error ? error.message : String(error)}`);
162
+ }
163
+ }
164
+ }
165
+ // Generate diff between original and final content
166
+ const diff = trimDiff(createTwoFilesPatch(filePath, filePath, contentOriginal, contentCurrent));
167
+ // Write the updated content
168
+ await services.draftInterface.createDraftFile(filePath, contentCurrent);
169
+ // Trigger eager debug check after multi-edit
170
+ const debugFunction = createDebugFunction(clark, services);
171
+ debugCache.startEagerCheck(debugFunction);
172
+ markRead(filePath);
173
+ const result = {
174
+ filePath,
175
+ diff,
176
+ editsApplied: edits.length,
177
+ originalLength: contentOriginal.length,
178
+ finalLength: contentCurrent.length,
179
+ message: `Successfully applied ${edits.length} edit${edits.length === 1 ? "" : "s"} to ${filePath}`,
180
+ };
181
+ return result;
182
+ },
183
+ });
184
+ }
185
+ //# sourceMappingURL=build-multi-edit-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-multi-edit-file.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-multi-edit-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ToolProfilingConfig } from "../../profiler/tool-profiler.js";
2
+ import type { ClarkStateHandlerParams } from "../../state-machine/clark-fsm.js";
3
+ import type { Clark } from "../../state-machine/clark-fsm.js";
4
+ declare const multiFileToolConfig: ToolProfilingConfig;
5
+ export default function createBuildReadFilesTool(clark: Clark, services: ClarkStateHandlerParams): import("ai").Tool<{
6
+ filePaths: string[];
7
+ }, Record<string, string>>;
8
+ export { multiFileToolConfig };
9
+ //# sourceMappingURL=build-read-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-read-files.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-read-files.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAE9D,QAAA,MAAM,mBAAmB,EAAE,mBAe1B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAC9C,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,uBAAuB;;2BAqClC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,49 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { tool } from "ai";
4
+ import z from "zod";
5
+ import { fileReadTracker } from "../../state-machine/helpers/file-read-tracker.js";
6
+ const multiFileToolConfig = {
7
+ extractDisplayName: (parameters) => {
8
+ const params = parameters;
9
+ if (params.filePaths && Array.isArray(params.filePaths)) {
10
+ return `:${params.filePaths.length} files`;
11
+ }
12
+ return "";
13
+ },
14
+ extractMetadata: (parameters) => {
15
+ const params = parameters;
16
+ return {
17
+ fileCount: Array.isArray(params.filePaths) ? params.filePaths.length : 0,
18
+ filePaths: params.filePaths,
19
+ };
20
+ },
21
+ };
22
+ export default function createBuildReadFilesTool(clark, services) {
23
+ const { markRead } = fileReadTracker(clark);
24
+ return tool({
25
+ description: `
26
+ Read content from a file in the application.
27
+ - You have the capability to call multiple tools in a single response. It is always better to speculatively read multiple files as a batch that are potentially useful.
28
+ `,
29
+ inputSchema: z.object({
30
+ filePaths: z.array(z.string()).describe("Paths to the files to read"),
31
+ }),
32
+ execute: async ({ filePaths }) => {
33
+ return await services.fsOperationQueue.enqueue(async () => {
34
+ const files = await Promise.all(filePaths.map(async (filePath) => {
35
+ const absoluteFilePath = path.join(services.appShell.appRootDirPath, filePath);
36
+ const content = await fs.readFile(absoluteFilePath, "utf8");
37
+ return [filePath, content];
38
+ }));
39
+ filePaths.forEach(markRead);
40
+ return files.reduce((acc, [filePath, content]) => {
41
+ acc[filePath] = content;
42
+ return acc;
43
+ }, {});
44
+ });
45
+ },
46
+ });
47
+ }
48
+ export { multiFileToolConfig };
49
+ //# sourceMappingURL=build-read-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-read-files.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-read-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AAKnF,MAAM,mBAAmB,GAAwB;IAC/C,kBAAkB,EAAE,CAAC,UAAmB,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,UAAqC,CAAC;QACrD,IAAI,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACxD,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC;QAC7C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,eAAe,EAAE,CAAC,UAAmB,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,UAAqC,CAAC;QACrD,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACxE,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAC9C,KAAY,EACZ,QAAiC;IAEjC,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAE5C,OAAO,IAAI,CAAC;QACV,WAAW,EAAE;;;KAGZ;QACD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;SACtE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YAC/B,OAAO,MAAM,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;gBACxD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;oBAC/B,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAChC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAChC,QAAQ,CACT,CAAC;oBACF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;oBAC5D,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAqB,CAAC;gBACjD,CAAC,CAAC,CACH,CAAC;gBAEF,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAE5B,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE;oBAC3B,GAAG,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;oBACxB,OAAO,GAAG,CAAC;gBACb,CAAC,EACD,EAA4B,CAC7B,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { OperationQueue } from "../../../util/operation-queue.js";
2
+ import type { Clark, ClarkStateHandlerParams } from "../../state-machine/clark-fsm.js";
3
+ export default function createBuildRegisterComponentNameTool(clark: Clark, services: ClarkStateHandlerParams, scopeUpdateQueue: OperationQueue): import("ai").Tool<{
4
+ pageName: string;
5
+ componentName: string;
6
+ }, {
7
+ pageName: string;
8
+ componentName: string;
9
+ message: string;
10
+ }>;
11
+ //# sourceMappingURL=build-register-component-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-register-component-name.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-register-component-name.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EACV,KAAK,EACL,uBAAuB,EACxB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAC1D,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,uBAAuB,EACjC,gBAAgB,EAAE,cAAc;;;;;;;GAwDjC"}
@@ -0,0 +1,52 @@
1
+ import path from "path";
2
+ import { tool } from "ai";
3
+ import z from "zod";
4
+ import { getPageFilePath } from "../../../file-system-helpers.js";
5
+ import { fileReadTracker } from "../../state-machine/helpers/file-read-tracker.js";
6
+ import { ensureScopeFileDraft } from "../utils.js";
7
+ export default function createBuildRegisterComponentNameTool(clark, services, scopeUpdateQueue) {
8
+ const { requireRead } = fileReadTracker(clark);
9
+ return tool({
10
+ description: `
11
+ Register a component name in the scope so that it can be used for bindings.
12
+
13
+ Use this when you need to reference a component instance for reading/writing its properties or handling events.
14
+ Each component can only be bound once per scope.
15
+ `,
16
+ inputSchema: z.object({
17
+ pageName: z
18
+ .string()
19
+ .describe("Name of the page scope to register the component on"),
20
+ componentName: z.string().describe("Name of the component to register"),
21
+ }),
22
+ execute: async ({ pageName, componentName }) => {
23
+ await scopeUpdateQueue.enqueue(async () => {
24
+ const { filePath, scopeDefinition } = services.fileSystemInterface
25
+ .getSourceTracker()
26
+ .getScopeDefinitionAndFilePathByNameOrId({
27
+ identifier: pageName,
28
+ type: "name",
29
+ });
30
+ if (scopeDefinition?.entityNames.includes(componentName)) {
31
+ throw new Error(`Component name "${componentName}" already exists in scope.ts`);
32
+ }
33
+ await ensureScopeFileDraft({ scopeFilePath: filePath }, services);
34
+ await services.fileSystemInterface
35
+ .getFileSystemManager()
36
+ .handleAddComponentNameToScope({
37
+ scopeName: pageName,
38
+ componentName,
39
+ });
40
+ });
41
+ // invalidate reads for the respective page
42
+ const pageFilePath = path.relative(services.appRootDirPath, getPageFilePath(services.appRootDirPath, pageName));
43
+ requireRead(pageFilePath);
44
+ return {
45
+ pageName,
46
+ componentName,
47
+ message: `Successfully registered component "${componentName}" in scope.ts`,
48
+ };
49
+ },
50
+ });
51
+ }
52
+ //# sourceMappingURL=build-register-component-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-register-component-name.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-register-component-name.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAOnD,MAAM,CAAC,OAAO,UAAU,oCAAoC,CAC1D,KAAY,EACZ,QAAiC,EACjC,gBAAgC;IAEhC,MAAM,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAE/C,OAAO,IAAI,CAAC;QACV,WAAW,EAAE;;;;;KAKZ;QACD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CAAC,qDAAqD,CAAC;YAClE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SACxE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;YAC7C,MAAM,gBAAgB,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;gBACxC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC,mBAAmB;qBAC/D,gBAAgB,EAAE;qBAClB,uCAAuC,CAAC;oBACvC,UAAU,EAAE,QAAQ;oBACpB,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;gBAEL,IAAI,eAAe,EAAE,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;oBACzD,MAAM,IAAI,KAAK,CACb,mBAAmB,aAAa,8BAA8B,CAC/D,CAAC;gBACJ,CAAC;gBAED,MAAM,oBAAoB,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;gBAElE,MAAM,QAAQ,CAAC,mBAAmB;qBAC/B,oBAAoB,EAAE;qBACtB,6BAA6B,CAAC;oBAC7B,SAAS,EAAE,QAAQ;oBACnB,aAAa;iBACd,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,2CAA2C;YAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAChC,QAAQ,CAAC,cAAc,EACvB,eAAe,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,CACnD,CAAC;YACF,WAAW,CAAC,YAAY,CAAC,CAAC;YAE1B,OAAO;gBACL,QAAQ;gBACR,aAAa;gBACb,OAAO,EAAE,sCAAsC,aAAa,eAAe;aAC5E,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ClarkStateHandlerParams } from "../../state-machine/clark-fsm.js";
2
+ export default function createBuildRenamePageTool(services: ClarkStateHandlerParams): import("ai").Tool<{
3
+ oldName: string;
4
+ newName: string;
5
+ }, {
6
+ oldName: string;
7
+ newName: string;
8
+ message: string;
9
+ }>;
10
+ //# sourceMappingURL=build-rename-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-rename-page.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-rename-page.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,QAAQ,EAAE,uBAAuB;;;;;;;GAwDlC"}
@@ -0,0 +1,49 @@
1
+ import { tool } from "ai";
2
+ import z from "zod";
3
+ export default function createBuildRenamePageTool(services) {
4
+ return tool({
5
+ description: `
6
+ Rename a page in the application with proper routing and file system management.
7
+
8
+ This tool properly handles:
9
+ - Route updates in routes.json
10
+ - File system renaming (renames entire page directory)
11
+ - Scope and component renaming
12
+ - Watcher cleanup and re-setup
13
+ - Safety checks (prevents conflicts with existing pages)
14
+ `,
15
+ inputSchema: z.object({
16
+ oldName: z
17
+ .string()
18
+ .describe("The current name of the page to rename (e.g., 'Page1', 'Dashboard')"),
19
+ newName: z
20
+ .string()
21
+ .describe("The new name for the page (e.g., 'HomePage', 'UserDashboard')"),
22
+ }),
23
+ execute: async ({ oldName, newName }) => {
24
+ const renamePageRequest = {
25
+ elementId: `SB-${oldName}`,
26
+ oldName,
27
+ newName,
28
+ kind: "page",
29
+ };
30
+ try {
31
+ await services.fileSystemInterface
32
+ .getFileSystemManager()
33
+ .handleRenameElement(renamePageRequest);
34
+ return {
35
+ oldName,
36
+ newName,
37
+ message: `Successfully renamed page "${oldName}" to "${newName}" with all associated files and routes updated`,
38
+ };
39
+ }
40
+ catch (error) {
41
+ if (error.message?.includes("already exists")) {
42
+ throw new Error(`Cannot rename "${oldName}" to "${newName}" because a page with that name already exists.`);
43
+ }
44
+ throw new Error(`Failed to rename page "${oldName}" to "${newName}": ${error.message}`);
45
+ }
46
+ },
47
+ });
48
+ }
49
+ //# sourceMappingURL=build-rename-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-rename-page.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-rename-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,CAAC,MAAM,KAAK,CAAC;AAGpB,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,QAAiC;IAEjC,OAAO,IAAI,CAAC;QACV,WAAW,EAAE;;;;;;;;;KASZ;QACD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,CACP,qEAAqE,CACtE;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,CACP,+DAA+D,CAChE;SACJ,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;YACtC,MAAM,iBAAiB,GAAG;gBACxB,SAAS,EAAE,MAAM,OAAO,EAAW;gBACnC,OAAO;gBACP,OAAO;gBACP,IAAI,EAAE,MAAe;aACtB,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,mBAAmB;qBAC/B,oBAAoB,EAAE;qBACtB,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;gBAE1C,OAAO;oBACL,OAAO;oBACP,OAAO;oBACP,OAAO,EAAE,8BAA8B,OAAO,SAAS,OAAO,gDAAgD;iBAC/G,CAAC;YACJ,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC9C,MAAM,IAAI,KAAK,CACb,kBAAkB,OAAO,SAAS,OAAO,iDAAiD,CAC3F,CAAC;gBACJ,CAAC;gBAED,MAAM,IAAI,KAAK,CACb,0BAA0B,OAAO,SAAS,OAAO,MAAM,KAAK,CAAC,OAAO,EAAE,CACvE,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { ClarkStateHandlerParams } from "../../state-machine/clark-fsm.js";
2
+ export default function createBuildUpdateStateVarTool(services: ClarkStateHandlerParams): import("ai").Tool<{
3
+ scopeId: string;
4
+ entityName: string;
5
+ changes: {
6
+ defaultValue?: string | undefined;
7
+ };
8
+ }, {
9
+ scopeId: string;
10
+ entityName: string;
11
+ entityType: string;
12
+ attributes: {
13
+ defaultValue?: string | undefined;
14
+ };
15
+ message: string;
16
+ }>;
17
+ //# sourceMappingURL=build-update-state-var.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-update-state-var.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-update-state-var.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,MAAM,CAAC,OAAO,UAAU,6BAA6B,CACnD,QAAQ,EAAE,uBAAuB;;;;;;;;;;;;;;GA4ElC"}
@@ -0,0 +1,66 @@
1
+ import { Property } from "@superblocksteam/library-shared";
2
+ import { tool } from "ai";
3
+ import z from "zod";
4
+ import { ensureScopeFileDraft, normalizeToBlockStatement } from "../utils.js";
5
+ export default function createBuildUpdateStateVarTool(services) {
6
+ return tool({
7
+ description: `
8
+ Update an existing state variable in the scope.
9
+ Use this to modify StateVar properties like defaultValue.
10
+
11
+ Remember: StateVars should only be used for derived data, multi-source state, or snapshots -
12
+ not for mirroring component bindings or API responses.
13
+ `,
14
+ inputSchema: z.object({
15
+ scopeId: z
16
+ .string()
17
+ .describe("ID of the scope containing the state variable"),
18
+ entityName: z.string().describe("Name of the state variable"),
19
+ changes: z.object({
20
+ defaultValue: z
21
+ .string()
22
+ .optional()
23
+ .describe("A JS arrow function that returns the default value. You MUST return a value from the function."),
24
+ }),
25
+ }),
26
+ execute: async ({ scopeId, entityName, changes }) => {
27
+ const { filePath, scopeDefinition } = services.fileSystemInterface
28
+ .getSourceTracker()
29
+ .getScopeDefinitionAndFilePathByNameOrId({
30
+ identifier: scopeId,
31
+ type: "id",
32
+ });
33
+ if (!filePath) {
34
+ throw new Error(`Scope with ID "${scopeId}" not found`);
35
+ }
36
+ const entityId = scopeDefinition.scopeNameToEntityId[entityName];
37
+ if (!entityId) {
38
+ throw new Error(`Entity with name "${entityName}" not found in scope.ts`);
39
+ }
40
+ await ensureScopeFileDraft({ scopeFilePath: filePath }, services);
41
+ const updates = {};
42
+ if (changes.defaultValue) {
43
+ const parsedDefaultValue = normalizeToBlockStatement(changes.defaultValue);
44
+ updates.defaultValue = Property.Computed(parsedDefaultValue);
45
+ }
46
+ // TODO(ai): add this option to the input schema when we support other persistence settings
47
+ // if (changes.persistence) {
48
+ // updates.persistence = Property.Static(changes.persistence);
49
+ // }
50
+ await services.fileSystemInterface
51
+ .getFileSystemManager()
52
+ .handleUpdateEntity({
53
+ entityId,
54
+ updates,
55
+ });
56
+ return {
57
+ scopeId,
58
+ entityName,
59
+ entityType: "StateVar",
60
+ attributes: changes,
61
+ message: `Successfully updated state variable "${entityName}" in scope.ts`,
62
+ };
63
+ },
64
+ });
65
+ }
66
+ //# sourceMappingURL=build-update-state-var.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-update-state-var.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-update-state-var.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAqB,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAG9E,MAAM,CAAC,OAAO,UAAU,6BAA6B,CACnD,QAAiC;IAEjC,OAAO,IAAI,CAAC;QACV,WAAW,EAAE;;;;;;KAMZ;QACD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,CAAC,+CAA+C,CAAC;YAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAC7D,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;gBAChB,YAAY,EAAE,CAAC;qBACZ,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CACP,gGAAgG,CACjG;aACJ,CAAC;SACH,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE;YAClD,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC,mBAAmB;iBAC/D,gBAAgB,EAAE;iBAClB,uCAAuC,CAAC;gBACvC,UAAU,EAAE,OAAO;gBACnB,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;YAEL,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,kBAAkB,OAAO,aAAa,CAAC,CAAC;YAC1D,CAAC;YAED,MAAM,QAAQ,GAAG,eAAe,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YAEjE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CACb,qBAAqB,UAAU,yBAAyB,CACzD,CAAC;YACJ,CAAC;YAED,MAAM,oBAAoB,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;YAElE,MAAM,OAAO,GAAiC,EAAE,CAAC;YAEjD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzB,MAAM,kBAAkB,GAAG,yBAAyB,CAClD,OAAO,CAAC,YAAY,CACrB,CAAC;gBAEF,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAC/D,CAAC;YACD,2FAA2F;YAC3F,6BAA6B;YAC7B,gEAAgE;YAChE,IAAI;YAEJ,MAAM,QAAQ,CAAC,mBAAmB;iBAC/B,oBAAoB,EAAE;iBACtB,kBAAkB,CAAC;gBAClB,QAAQ;gBACR,OAAO;aACR,CAAC,CAAC;YAEL,OAAO;gBACL,OAAO;gBACP,UAAU;gBACV,UAAU,EAAE,UAAU;gBACtB,UAAU,EAAE,OAAO;gBACnB,OAAO,EAAE,wCAAwC,UAAU,eAAe;aAC3E,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { ClarkStateHandlerParams } from "../../state-machine/clark-fsm.js";
2
+ export default function createBuildValidateIconsTool(_services: ClarkStateHandlerParams): import("ai").Tool<{
3
+ iconNames: string[];
4
+ }, {
5
+ summary: {
6
+ totalChecked: number;
7
+ valid: number;
8
+ invalid: number;
9
+ totalAvailableIcons: number;
10
+ validationMethod: string;
11
+ };
12
+ results: {
13
+ requested: string;
14
+ isValid: boolean;
15
+ suggestions: string[];
16
+ validationMethod: string;
17
+ importExample: string | null;
18
+ componentExample: string | null;
19
+ }[];
20
+ message: string;
21
+ commonPatterns: string[];
22
+ note: string;
23
+ }>;
24
+ //# sourceMappingURL=build-validate-icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-validate-icons.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-validate-icons.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAmChF,MAAM,CAAC,OAAO,UAAU,4BAA4B,CAClD,SAAS,EAAE,uBAAuB;;;;;;;;;;;;;;;;;;;;;GAgFnC"}
@@ -0,0 +1,96 @@
1
+ import { tool } from "ai";
2
+ import iconNodes from "lucide-static/icon-nodes.json" with { type: "json" };
3
+ import z from "zod";
4
+ let availableIcons = null;
5
+ function getAvailableIcons() {
6
+ if (availableIcons !== null) {
7
+ return availableIcons;
8
+ }
9
+ // Convert PascalCase icon names to kebab-case
10
+ availableIcons = Object.keys(iconNodes).map((name) => name.replace(/([A-Z])/g, (_match, letter, index) => index === 0 ? letter.toLowerCase() : `-${letter.toLowerCase()}`));
11
+ return availableIcons;
12
+ }
13
+ function findSimilarIcons(searchTerm) {
14
+ const term = searchTerm.toLowerCase().replace(/[-_]/g, "");
15
+ const icons = getAvailableIcons();
16
+ if (icons.includes(searchTerm)) {
17
+ return [searchTerm];
18
+ }
19
+ const suggestions = icons.filter((icon) => {
20
+ const iconName = icon.toLowerCase().replace(/[-_]/g, "");
21
+ return iconName.includes(term) || term.includes(iconName);
22
+ });
23
+ return [...new Set(suggestions)].slice(0, 5);
24
+ }
25
+ export default function createBuildValidateIconsTool(_services) {
26
+ return tool({
27
+ description: `
28
+ Validate Lucide React icon names and get suggestions for correct icons.
29
+
30
+ This tool validates against the actual list of available icons from lucide-react,
31
+ providing 100% accurate validation against all available Lucide icons.
32
+
33
+ Use this tool when you're unsure about an icon name or when you encounter
34
+ build errors related to non-existent icons like "IconX" or "FlagX".
35
+
36
+ The tool will:
37
+ 1. Validate against all actual Lucide icons
38
+ 2. Detect common naming mistakes (Icon prefixes, X suffixes, etc.)
39
+ 3. Provide similar/alternative icon suggestions
40
+ 4. Give you the correct import syntax and usage examples
41
+
42
+ Always use this tool before using icon names you're not certain about.
43
+ `,
44
+ inputSchema: z.object({
45
+ iconNames: z
46
+ .array(z.string())
47
+ .describe("Array of icon names to validate (e.g., ['flag', 'user', 'invalid-icon'])"),
48
+ }),
49
+ execute: async ({ iconNames }) => {
50
+ const availableIcons = getAvailableIcons();
51
+ const results = iconNames.map((iconName) => {
52
+ const suggestions = findSimilarIcons(iconName);
53
+ const isValid = availableIcons.includes(iconName);
54
+ return {
55
+ requested: iconName,
56
+ isValid,
57
+ suggestions: suggestions.slice(0, 5),
58
+ validationMethod: "dynamic",
59
+ importExample: suggestions.length > 0 && suggestions[0]
60
+ ? `import { ${suggestions[0]
61
+ .split("-")
62
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
63
+ .join("")} } from "lucide-react";`
64
+ : null,
65
+ componentExample: suggestions.length > 0 && suggestions[0]
66
+ ? `<Icon icon="${suggestions[0]}" />`
67
+ : null,
68
+ };
69
+ });
70
+ const invalidIcons = results.filter((r) => !r.isValid);
71
+ const validIcons = results.filter((r) => r.isValid);
72
+ return {
73
+ summary: {
74
+ totalChecked: iconNames.length,
75
+ valid: validIcons.length,
76
+ invalid: invalidIcons.length,
77
+ totalAvailableIcons: availableIcons.length,
78
+ validationMethod: "dynamic",
79
+ },
80
+ results,
81
+ message: invalidIcons.length > 0
82
+ ? `Found ${invalidIcons.length} invalid icon names. Check the suggestions for alternatives.`
83
+ : "All icon names are valid!",
84
+ commonPatterns: [
85
+ "Use kebab-case (e.g., 'alert-circle', not 'AlertCircle')",
86
+ "Avoid prefixes like 'Icon' or 'Lucide' (e.g., 'user', not 'IconUser')",
87
+ "Avoid suffixes like 'X' for variations (e.g., 'flag', not 'FlagX')",
88
+ "Common icons: home, user, settings, search, menu, x, plus, trash, edit",
89
+ "For flags: use 'flag', not country-specific variants",
90
+ ],
91
+ note: `Validation performed against ${availableIcons.length} actual Lucide icons from lucide-static.`,
92
+ };
93
+ },
94
+ });
95
+ }
96
+ //# sourceMappingURL=build-validate-icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-validate-icons.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-validate-icons.ts"],"names":[],"mappings":"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"}