@superblocksteam/vite-plugin-file-sync 2.0.55 → 2.0.56-next.1

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 (369) hide show
  1. package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
  2. package/dist/ai-service/agent/prompts/build-base-system-prompt.js +394 -2303
  3. package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
  4. package/dist/ai-service/agent/subagents/apis/examples.d.ts.map +1 -1
  5. package/dist/ai-service/agent/subagents/apis/examples.js +34 -35
  6. package/dist/ai-service/agent/subagents/apis/examples.js.map +1 -1
  7. package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts +2 -8
  8. package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts.map +1 -1
  9. package/dist/ai-service/agent/subagents/apis/generate-api-source.js +17 -46
  10. package/dist/ai-service/agent/subagents/apis/generate-api-source.js.map +1 -1
  11. package/dist/ai-service/agent/subagents/apis/prompt-builder.d.ts +0 -1
  12. package/dist/ai-service/agent/subagents/apis/prompt-builder.d.ts.map +1 -1
  13. package/dist/ai-service/agent/subagents/apis/prompt-builder.js +4 -25
  14. package/dist/ai-service/agent/subagents/apis/prompt-builder.js.map +1 -1
  15. package/dist/ai-service/agent/subagents/apis/state.js +1 -1
  16. package/dist/ai-service/agent/subagents/apis/state.js.map +1 -1
  17. package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts +1 -1
  18. package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts.map +1 -1
  19. package/dist/ai-service/agent/subagents/apis/system-prompt.js +134 -173
  20. package/dist/ai-service/agent/subagents/apis/system-prompt.js.map +1 -1
  21. package/dist/ai-service/agent/subagents/apis/types.d.ts +1 -4
  22. package/dist/ai-service/agent/subagents/apis/types.d.ts.map +1 -1
  23. package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
  24. package/dist/ai-service/agent/tool-message-utils.js +14 -31
  25. package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
  26. package/dist/ai-service/agent/tools/apis/build-api.d.ts +1 -6
  27. package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
  28. package/dist/ai-service/agent/tools/apis/build-api.js +12 -21
  29. package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
  30. package/dist/ai-service/agent/tools/apis/finalize-api.d.ts +2 -6
  31. package/dist/ai-service/agent/tools/apis/finalize-api.d.ts.map +1 -1
  32. package/dist/ai-service/agent/tools/apis/finalize-api.js +29 -20
  33. package/dist/ai-service/agent/tools/apis/finalize-api.js.map +1 -1
  34. package/dist/ai-service/agent/tools/build-edit-file.d.ts.map +1 -1
  35. package/dist/ai-service/agent/tools/build-edit-file.js +4 -9
  36. package/dist/ai-service/agent/tools/build-edit-file.js.map +1 -1
  37. package/dist/ai-service/agent/tools/build-install-packages.d.ts +7 -1
  38. package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
  39. package/dist/ai-service/agent/tools/build-install-packages.js +43 -8
  40. package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
  41. package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +1 -1
  42. package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts.map +1 -1
  43. package/dist/ai-service/agent/tools/build-multi-edit-file.js +7 -9
  44. package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -1
  45. package/dist/ai-service/agent/tools/build-read-files.d.ts +2 -0
  46. package/dist/ai-service/agent/tools/build-read-files.d.ts.map +1 -1
  47. package/dist/ai-service/agent/tools/build-read-files.js +18 -18
  48. package/dist/ai-service/agent/tools/build-read-files.js.map +1 -1
  49. package/dist/ai-service/agent/tools/build-rename-file.d.ts +11 -0
  50. package/dist/ai-service/agent/tools/build-rename-file.d.ts.map +1 -0
  51. package/dist/ai-service/agent/tools/build-rename-file.js +103 -0
  52. package/dist/ai-service/agent/tools/build-rename-file.js.map +1 -0
  53. package/dist/ai-service/agent/tools/build-validate-icons.d.ts +0 -1
  54. package/dist/ai-service/agent/tools/build-validate-icons.d.ts.map +1 -1
  55. package/dist/ai-service/agent/tools/build-validate-icons.js +0 -6
  56. package/dist/ai-service/agent/tools/build-validate-icons.js.map +1 -1
  57. package/dist/ai-service/agent/tools/build-write-file.d.ts.map +1 -1
  58. package/dist/ai-service/agent/tools/build-write-file.js +5 -6
  59. package/dist/ai-service/agent/tools/build-write-file.js.map +1 -1
  60. package/dist/ai-service/agent/tools/index.d.ts +0 -10
  61. package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
  62. package/dist/ai-service/agent/tools/index.js +0 -10
  63. package/dist/ai-service/agent/tools/index.js.map +1 -1
  64. package/dist/ai-service/agent/tools/shared-helpers.d.ts +1 -7
  65. package/dist/ai-service/agent/tools/shared-helpers.d.ts.map +1 -1
  66. package/dist/ai-service/agent/tools/shared-helpers.js +9 -29
  67. package/dist/ai-service/agent/tools/shared-helpers.js.map +1 -1
  68. package/dist/ai-service/agent/tools.d.ts.map +1 -1
  69. package/dist/ai-service/agent/tools.js +5 -11
  70. package/dist/ai-service/agent/tools.js.map +1 -1
  71. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +1 -2
  72. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
  73. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +89 -67
  74. package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
  75. package/dist/ai-service/agent/tools2/tools/explain-code-finalize.d.ts +4 -0
  76. package/dist/ai-service/agent/tools2/tools/explain-code-finalize.d.ts.map +1 -0
  77. package/dist/ai-service/agent/tools2/tools/explain-code-finalize.js +19 -0
  78. package/dist/ai-service/agent/tools2/tools/explain-code-finalize.js.map +1 -0
  79. package/dist/ai-service/agent/tools2/tools/glob.d.ts.map +1 -1
  80. package/dist/ai-service/agent/tools2/tools/glob.js +15 -6
  81. package/dist/ai-service/agent/tools2/tools/glob.js.map +1 -1
  82. package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts +13 -0
  83. package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts.map +1 -1
  84. package/dist/ai-service/agent/tools2/tools/grep-metadata.js +21 -0
  85. package/dist/ai-service/agent/tools2/tools/grep-metadata.js.map +1 -1
  86. package/dist/ai-service/agent/tools2/tools/index.d.ts +1 -0
  87. package/dist/ai-service/agent/tools2/tools/index.d.ts.map +1 -1
  88. package/dist/ai-service/agent/tools2/tools/index.js +1 -0
  89. package/dist/ai-service/agent/tools2/tools/index.js.map +1 -1
  90. package/dist/ai-service/agent/tools2/tools/ls.d.ts +10 -0
  91. package/dist/ai-service/agent/tools2/tools/ls.d.ts.map +1 -0
  92. package/dist/ai-service/agent/tools2/tools/ls.js +71 -0
  93. package/dist/ai-service/agent/tools2/tools/ls.js.map +1 -0
  94. package/dist/ai-service/agent/utils.d.ts +0 -35
  95. package/dist/ai-service/agent/utils.d.ts.map +1 -1
  96. package/dist/ai-service/agent/utils.js +0 -132
  97. package/dist/ai-service/agent/utils.js.map +1 -1
  98. package/dist/ai-service/app-interface/file-system-interface.d.ts +1 -1
  99. package/dist/ai-service/app-interface/file-system-interface.d.ts.map +1 -1
  100. package/dist/ai-service/app-interface/file-system-interface.js +2 -2
  101. package/dist/ai-service/app-interface/file-system-interface.js.map +1 -1
  102. package/dist/ai-service/app-interface/shell.d.ts +5 -0
  103. package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
  104. package/dist/ai-service/app-interface/shell.js +60 -0
  105. package/dist/ai-service/app-interface/shell.js.map +1 -1
  106. package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
  107. package/dist/ai-service/chat/chat-session-store.js +8 -1
  108. package/dist/ai-service/chat/chat-session-store.js.map +1 -1
  109. package/dist/ai-service/clark-provider/clark-chat-settings.d.ts +2 -1
  110. package/dist/ai-service/clark-provider/clark-chat-settings.d.ts.map +1 -1
  111. package/dist/ai-service/clark-provider/clark-chat-settings.js +1 -0
  112. package/dist/ai-service/clark-provider/clark-chat-settings.js.map +1 -1
  113. package/dist/ai-service/const.d.ts +3 -7
  114. package/dist/ai-service/const.d.ts.map +1 -1
  115. package/dist/ai-service/const.js +2 -6
  116. package/dist/ai-service/const.js.map +1 -1
  117. package/dist/ai-service/context/app-context.d.ts +2 -1
  118. package/dist/ai-service/context/app-context.d.ts.map +1 -1
  119. package/dist/ai-service/context/app-context.js +9 -15
  120. package/dist/ai-service/context/app-context.js.map +1 -1
  121. package/dist/ai-service/index.d.ts +4 -4
  122. package/dist/ai-service/index.d.ts.map +1 -1
  123. package/dist/ai-service/index.js +168 -16
  124. package/dist/ai-service/index.js.map +1 -1
  125. package/dist/ai-service/llm/impl/anthropic.d.ts.map +1 -1
  126. package/dist/ai-service/llm/impl/anthropic.js +1 -0
  127. package/dist/ai-service/llm/impl/anthropic.js.map +1 -1
  128. package/dist/ai-service/llm/impl/clark.d.ts.map +1 -1
  129. package/dist/ai-service/llm/impl/clark.js +1 -0
  130. package/dist/ai-service/llm/impl/clark.js.map +1 -1
  131. package/dist/ai-service/llm/provider.d.ts.map +1 -1
  132. package/dist/ai-service/llm/provider.js +1 -0
  133. package/dist/ai-service/llm/provider.js.map +1 -1
  134. package/dist/ai-service/llm/types.d.ts +1 -1
  135. package/dist/ai-service/llm/types.d.ts.map +1 -1
  136. package/dist/ai-service/prompt-builder-service/types.d.ts +0 -2
  137. package/dist/ai-service/prompt-builder-service/types.d.ts.map +1 -1
  138. package/dist/ai-service/prompt-builder-service/types.js.map +1 -1
  139. package/dist/ai-service/prompts/explain-code.d.ts +7 -0
  140. package/dist/ai-service/prompts/explain-code.d.ts.map +1 -0
  141. package/dist/ai-service/prompts/explain-code.js +23 -0
  142. package/dist/ai-service/prompts/explain-code.js.map +1 -0
  143. package/dist/ai-service/state-machine/clark-fsm.d.ts +0 -2
  144. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
  145. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
  146. package/dist/ai-service/state-machine/handlers/agent-planning.js +16 -16
  147. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
  148. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
  149. package/dist/ai-service/state-machine/handlers/llm-generating.js +39 -4
  150. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
  151. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
  152. package/dist/ai-service/state-machine/mocks.js +1 -0
  153. package/dist/ai-service/state-machine/mocks.js.map +1 -1
  154. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.d.ts +1 -1
  155. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.d.ts.map +1 -1
  156. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.js +0 -7
  157. package/dist/ai-service/test-utils/app-generation-mocks/orders-app.js.map +1 -1
  158. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.d.ts +1 -1
  159. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.d.ts.map +1 -1
  160. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.js +0 -8
  161. package/dist/ai-service/test-utils/app-generation-mocks/smoketest.js.map +1 -1
  162. package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts.map +1 -1
  163. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +0 -15
  164. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
  165. package/dist/ai-service/transform/api-builder/to-yaml-transformer.d.ts.map +1 -1
  166. package/dist/ai-service/transform/api-builder/to-yaml-transformer.js +0 -13
  167. package/dist/ai-service/transform/api-builder/to-yaml-transformer.js.map +1 -1
  168. package/dist/ai-service/types.d.ts +2 -2
  169. package/dist/ai-service/types.d.ts.map +1 -1
  170. package/dist/ai-service/util/json-stream-parser.d.ts +20 -0
  171. package/dist/ai-service/util/json-stream-parser.d.ts.map +1 -0
  172. package/dist/ai-service/util/json-stream-parser.js +139 -0
  173. package/dist/ai-service/util/json-stream-parser.js.map +1 -0
  174. package/dist/binding-extraction/extract-identifiers.d.ts +1 -5
  175. package/dist/binding-extraction/extract-identifiers.d.ts.map +1 -1
  176. package/dist/binding-extraction/extract-identifiers.js +78 -15
  177. package/dist/binding-extraction/extract-identifiers.js.map +1 -1
  178. package/dist/binding-extraction/index.d.ts +1 -1
  179. package/dist/binding-extraction/index.d.ts.map +1 -1
  180. package/dist/binding-extraction/index.js +1 -1
  181. package/dist/binding-extraction/index.js.map +1 -1
  182. package/dist/binding-extraction/{extract-js-identifiers.d.ts → js-identifiers.d.ts} +2 -1
  183. package/dist/binding-extraction/js-identifiers.d.ts.map +1 -0
  184. package/dist/binding-extraction/{extract-js-identifiers.js → js-identifiers.js} +81 -1
  185. package/dist/binding-extraction/js-identifiers.js.map +1 -0
  186. package/dist/binding-extraction/python-identifiers.d.ts +13 -0
  187. package/dist/binding-extraction/python-identifiers.d.ts.map +1 -0
  188. package/dist/binding-extraction/{extract-py-identifiers.js → python-identifiers.js} +155 -1
  189. package/dist/binding-extraction/python-identifiers.js.map +1 -0
  190. package/dist/codegen.d.ts.map +1 -1
  191. package/dist/codegen.js +9 -15
  192. package/dist/codegen.js.map +1 -1
  193. package/dist/components-manager.d.ts +12 -13
  194. package/dist/components-manager.d.ts.map +1 -1
  195. package/dist/components-manager.js +78 -139
  196. package/dist/components-manager.js.map +1 -1
  197. package/dist/file-sync-vite-plugin.d.ts +1 -1
  198. package/dist/file-sync-vite-plugin.d.ts.map +1 -1
  199. package/dist/file-sync-vite-plugin.js +140 -361
  200. package/dist/file-sync-vite-plugin.js.map +1 -1
  201. package/dist/file-system-helpers.d.ts +2 -2
  202. package/dist/file-system-helpers.d.ts.map +1 -1
  203. package/dist/file-system-helpers.js +6 -4
  204. package/dist/file-system-helpers.js.map +1 -1
  205. package/dist/file-system-manager.d.ts +8 -33
  206. package/dist/file-system-manager.d.ts.map +1 -1
  207. package/dist/file-system-manager.js +217 -600
  208. package/dist/file-system-manager.js.map +1 -1
  209. package/dist/index.d.ts +1 -1
  210. package/dist/index.d.ts.map +1 -1
  211. package/dist/index.js +0 -1
  212. package/dist/index.js.map +1 -1
  213. package/dist/inject-no-select.d.ts +15 -0
  214. package/dist/inject-no-select.d.ts.map +1 -0
  215. package/dist/inject-no-select.js +173 -0
  216. package/dist/inject-no-select.js.map +1 -0
  217. package/dist/injected-index.d.ts +0 -1
  218. package/dist/injected-index.d.ts.map +1 -1
  219. package/dist/injected-index.js +0 -1
  220. package/dist/injected-index.js.map +1 -1
  221. package/dist/lock-service/activity-tracker.d.ts.map +1 -1
  222. package/dist/lock-service/activity-tracker.js +4 -1
  223. package/dist/lock-service/activity-tracker.js.map +1 -1
  224. package/dist/parsing/entity/to-code-entity.d.ts.map +1 -1
  225. package/dist/parsing/entity/to-code-entity.js +3 -4
  226. package/dist/parsing/entity/to-code-entity.js.map +1 -1
  227. package/dist/parsing/entity/to-value-entity.d.ts.map +1 -1
  228. package/dist/parsing/entity/to-value-entity.js +19 -13
  229. package/dist/parsing/entity/to-value-entity.js.map +1 -1
  230. package/dist/parsing/ids.d.ts +0 -1
  231. package/dist/parsing/ids.d.ts.map +1 -1
  232. package/dist/parsing/ids.js +3 -4
  233. package/dist/parsing/ids.js.map +1 -1
  234. package/dist/parsing/imports.d.ts.map +1 -1
  235. package/dist/parsing/imports.js +0 -10
  236. package/dist/parsing/imports.js.map +1 -1
  237. package/dist/parsing/index.d.ts +0 -1
  238. package/dist/parsing/index.d.ts.map +1 -1
  239. package/dist/parsing/index.js +0 -1
  240. package/dist/parsing/index.js.map +1 -1
  241. package/dist/parsing/jsx.d.ts.map +1 -1
  242. package/dist/parsing/jsx.js +50 -22
  243. package/dist/parsing/jsx.js.map +1 -1
  244. package/dist/parsing/page.d.ts +0 -1
  245. package/dist/parsing/page.d.ts.map +1 -1
  246. package/dist/parsing/page.js +55 -32
  247. package/dist/parsing/page.js.map +1 -1
  248. package/dist/parsing/properties.d.ts.map +1 -1
  249. package/dist/parsing/properties.js +45 -15
  250. package/dist/parsing/properties.js.map +1 -1
  251. package/dist/parsing/template/index.js +1 -1
  252. package/dist/parsing/template/index.js.map +1 -1
  253. package/dist/parsing/template/to-code-template.d.ts +1 -2
  254. package/dist/parsing/template/to-code-template.d.ts.map +1 -1
  255. package/dist/parsing/template/to-code-template.js +2 -3
  256. package/dist/parsing/template/to-code-template.js.map +1 -1
  257. package/dist/parsing/type-parsing-registry.d.ts +0 -1
  258. package/dist/parsing/type-parsing-registry.d.ts.map +1 -1
  259. package/dist/parsing/type-parsing-registry.js +0 -2
  260. package/dist/parsing/type-parsing-registry.js.map +1 -1
  261. package/dist/parsing/util.d.ts.map +1 -1
  262. package/dist/parsing/util.js +22 -5
  263. package/dist/parsing/util.js.map +1 -1
  264. package/dist/plugin-options.d.ts +8 -1
  265. package/dist/plugin-options.d.ts.map +1 -1
  266. package/dist/plugin-options.js.map +1 -1
  267. package/dist/refactor/javascript.js +1 -1
  268. package/dist/refactor/javascript.js.map +1 -1
  269. package/dist/rename-manager.d.ts.map +1 -1
  270. package/dist/rename-manager.js +1 -2
  271. package/dist/rename-manager.js.map +1 -1
  272. package/dist/router-parser.d.ts +35 -0
  273. package/dist/router-parser.d.ts.map +1 -0
  274. package/dist/router-parser.js +490 -0
  275. package/dist/router-parser.js.map +1 -0
  276. package/dist/socket-manager.d.ts +3 -3
  277. package/dist/socket-manager.d.ts.map +1 -1
  278. package/dist/socket-manager.js +14 -15
  279. package/dist/socket-manager.js.map +1 -1
  280. package/dist/source-tracker.d.ts +9 -77
  281. package/dist/source-tracker.d.ts.map +1 -1
  282. package/dist/source-tracker.js +84 -375
  283. package/dist/source-tracker.js.map +1 -1
  284. package/dist/util/operation-queue.d.ts +3 -0
  285. package/dist/util/operation-queue.d.ts.map +1 -1
  286. package/dist/util/operation-queue.js +5 -0
  287. package/dist/util/operation-queue.js.map +1 -1
  288. package/dist/util.d.ts +13 -1
  289. package/dist/util.d.ts.map +1 -1
  290. package/dist/util.js +49 -28
  291. package/dist/util.js.map +1 -1
  292. package/dist/vite-plugin-yaml-types.d.ts +9 -0
  293. package/dist/vite-plugin-yaml-types.d.ts.map +1 -0
  294. package/dist/vite-plugin-yaml-types.js +114 -0
  295. package/dist/vite-plugin-yaml-types.js.map +1 -0
  296. package/package.json +8 -7
  297. package/dist/ai-service/agent/tools/build-add-event.d.ts +0 -14
  298. package/dist/ai-service/agent/tools/build-add-event.d.ts.map +0 -1
  299. package/dist/ai-service/agent/tools/build-add-event.js +0 -44
  300. package/dist/ai-service/agent/tools/build-add-event.js.map +0 -1
  301. package/dist/ai-service/agent/tools/build-add-state-var.d.ts +0 -16
  302. package/dist/ai-service/agent/tools/build-add-state-var.d.ts.map +0 -1
  303. package/dist/ai-service/agent/tools/build-add-state-var.js +0 -62
  304. package/dist/ai-service/agent/tools/build-add-state-var.js.map +0 -1
  305. package/dist/ai-service/agent/tools/build-add-timer.d.ts +0 -16
  306. package/dist/ai-service/agent/tools/build-add-timer.d.ts.map +0 -1
  307. package/dist/ai-service/agent/tools/build-add-timer.js +0 -46
  308. package/dist/ai-service/agent/tools/build-add-timer.js.map +0 -1
  309. package/dist/ai-service/agent/tools/build-create-page.d.ts +0 -10
  310. package/dist/ai-service/agent/tools/build-create-page.d.ts.map +0 -1
  311. package/dist/ai-service/agent/tools/build-create-page.js +0 -57
  312. package/dist/ai-service/agent/tools/build-create-page.js.map +0 -1
  313. package/dist/ai-service/agent/tools/build-list-available-components.d.ts +0 -9
  314. package/dist/ai-service/agent/tools/build-list-available-components.d.ts.map +0 -1
  315. package/dist/ai-service/agent/tools/build-list-available-components.js +0 -55
  316. package/dist/ai-service/agent/tools/build-list-available-components.js.map +0 -1
  317. package/dist/ai-service/agent/tools/build-register-component-name.d.ts +0 -9
  318. package/dist/ai-service/agent/tools/build-register-component-name.d.ts.map +0 -1
  319. package/dist/ai-service/agent/tools/build-register-component-name.js +0 -53
  320. package/dist/ai-service/agent/tools/build-register-component-name.js.map +0 -1
  321. package/dist/ai-service/agent/tools/build-rename-page.d.ts +0 -9
  322. package/dist/ai-service/agent/tools/build-rename-page.d.ts.map +0 -1
  323. package/dist/ai-service/agent/tools/build-rename-page.js +0 -50
  324. package/dist/ai-service/agent/tools/build-rename-page.js.map +0 -1
  325. package/dist/ai-service/agent/tools/build-set-api-triggers.d.ts +0 -25
  326. package/dist/ai-service/agent/tools/build-set-api-triggers.d.ts.map +0 -1
  327. package/dist/ai-service/agent/tools/build-set-api-triggers.js +0 -266
  328. package/dist/ai-service/agent/tools/build-set-api-triggers.js.map +0 -1
  329. package/dist/ai-service/agent/tools/build-update-state-var.d.ts +0 -16
  330. package/dist/ai-service/agent/tools/build-update-state-var.d.ts.map +0 -1
  331. package/dist/ai-service/agent/tools/build-update-state-var.js +0 -67
  332. package/dist/ai-service/agent/tools/build-update-state-var.js.map +0 -1
  333. package/dist/ai-service/agent/tools/study-current-app-state.d.ts +0 -20
  334. package/dist/ai-service/agent/tools/study-current-app-state.d.ts.map +0 -1
  335. package/dist/ai-service/agent/tools/study-current-app-state.js +0 -20
  336. package/dist/ai-service/agent/tools/study-current-app-state.js.map +0 -1
  337. package/dist/binding-extraction/extract-js-identifiers.d.ts.map +0 -1
  338. package/dist/binding-extraction/extract-js-identifiers.js.map +0 -1
  339. package/dist/binding-extraction/extract-py-identifiers.d.ts +0 -4
  340. package/dist/binding-extraction/extract-py-identifiers.d.ts.map +0 -1
  341. package/dist/binding-extraction/extract-py-identifiers.js.map +0 -1
  342. package/dist/component-docs-service/index.d.ts +0 -37
  343. package/dist/component-docs-service/index.d.ts.map +0 -1
  344. package/dist/component-docs-service/index.js +0 -118
  345. package/dist/component-docs-service/index.js.map +0 -1
  346. package/dist/parsing/events/index.d.ts +0 -5
  347. package/dist/parsing/events/index.d.ts.map +0 -1
  348. package/dist/parsing/events/index.js +0 -7
  349. package/dist/parsing/events/index.js.map +0 -1
  350. package/dist/parsing/events/to-code-events.d.ts +0 -3
  351. package/dist/parsing/events/to-code-events.d.ts.map +0 -1
  352. package/dist/parsing/events/to-code-events.js +0 -147
  353. package/dist/parsing/events/to-code-events.js.map +0 -1
  354. package/dist/parsing/events/to-value-events.d.ts +0 -10
  355. package/dist/parsing/events/to-value-events.d.ts.map +0 -1
  356. package/dist/parsing/events/to-value-events.js +0 -473
  357. package/dist/parsing/events/to-value-events.js.map +0 -1
  358. package/dist/parsing/scope.d.ts +0 -103
  359. package/dist/parsing/scope.d.ts.map +0 -1
  360. package/dist/parsing/scope.js +0 -902
  361. package/dist/parsing/scope.js.map +0 -1
  362. package/dist/routing.d.ts +0 -6
  363. package/dist/routing.d.ts.map +0 -1
  364. package/dist/routing.js +0 -169
  365. package/dist/routing.js.map +0 -1
  366. package/dist/sb-scope-manager.d.ts +0 -121
  367. package/dist/sb-scope-manager.d.ts.map +0 -1
  368. package/dist/sb-scope-manager.js +0 -678
  369. package/dist/sb-scope-manager.js.map +0 -1
@@ -0,0 +1,490 @@
1
+ import { readFile, access, stat, readdir } from "node:fs/promises";
2
+ import { join, resolve, dirname, relative } from "node:path";
3
+ import { parse } from "@babel/parser";
4
+ import { findStaticImports, parseStaticImport } from "mlly";
5
+ import { joinURL } from "ufo";
6
+ import { traverse } from "./traverse.js";
7
+ import { getLogger } from "./util/logger.js";
8
+ const CONVENTIONAL_ROUTER_PATHS = [
9
+ "router.tsx",
10
+ "router.ts",
11
+ "src/router.tsx",
12
+ "src/router.ts",
13
+ ];
14
+ let cachedRouterFileLocation = null;
15
+ /**
16
+ * Resolve a .js import path to the actual source file (.ts, .tsx, .jsx)
17
+ *
18
+ * In development, imports may reference .js files but the actual source files
19
+ * have TypeScript extensions. This function tries to find the actual source file.
20
+ */
21
+ async function resolveSourceFile(jsPath) {
22
+ // If the file exists as-is, return it
23
+ try {
24
+ await access(jsPath);
25
+ return jsPath;
26
+ }
27
+ catch {
28
+ // File doesn't exist, try TypeScript variants
29
+ }
30
+ // Try different extensions
31
+ const extensions = [".ts", ".tsx", ".jsx"];
32
+ const pathWithoutExt = jsPath.replace(/\.js$/, "");
33
+ for (const ext of extensions) {
34
+ const tsPath = pathWithoutExt + ext;
35
+ try {
36
+ await access(tsPath);
37
+ return tsPath;
38
+ }
39
+ catch {
40
+ // Try next extension
41
+ }
42
+ }
43
+ // If none found, return original path (will error later)
44
+ return jsPath;
45
+ }
46
+ /**
47
+ * Extract local names that refer to createBrowserRouter from react-router imports
48
+ * Handles import aliasing like: import { createBrowserRouter as createRouter } from "react-router"
49
+ */
50
+ function extractReactRouterImports(content) {
51
+ const createBrowserRouterAliases = new Set();
52
+ const namespaceImports = new Set();
53
+ try {
54
+ // find the react-router import statement
55
+ const reactRouterImport = findStaticImports(content).find((x) => x.specifier === "react-router");
56
+ if (!reactRouterImport) {
57
+ throw new Error("react-router import not found");
58
+ }
59
+ const parsedReactRouterImport = parseStaticImport(reactRouterImport);
60
+ // loop over named imports
61
+ if (parsedReactRouterImport.namedImports) {
62
+ // for each named import
63
+ for (const [name, alias] of Object.entries(parsedReactRouterImport.namedImports)) {
64
+ // add either the name or the alias (eg. import { createBrowserRouter as createRouter } from 'react-router') to the set
65
+ if (name === "createBrowserRouter") {
66
+ createBrowserRouterAliases.add(name === alias ? name : alias);
67
+ }
68
+ }
69
+ }
70
+ if (parsedReactRouterImport.namespacedImport) {
71
+ namespaceImports.add(parsedReactRouterImport.namespacedImport);
72
+ }
73
+ }
74
+ catch (e) {
75
+ getLogger().debug(`Error extracting react-router imports: ${e}`);
76
+ }
77
+ return { createBrowserRouterAliases, namespaceImports };
78
+ }
79
+ /**
80
+ * Check if content contains createBrowserRouter call, accounting for import aliases
81
+ */
82
+ function hasCreateBrowserRouter(content) {
83
+ const { createBrowserRouterAliases, namespaceImports } = extractReactRouterImports(content);
84
+ // Quick substring check first for performance
85
+ if (!content.includes("createBrowserRouter") &&
86
+ createBrowserRouterAliases.size === 0 &&
87
+ namespaceImports.size === 0) {
88
+ return false;
89
+ }
90
+ try {
91
+ const ast = parse(content, {
92
+ sourceType: "module",
93
+ plugins: ["typescript", "jsx"],
94
+ });
95
+ let found = false;
96
+ traverse(ast, {
97
+ CallExpression(path) {
98
+ const node = path.node;
99
+ // Check for direct call: createBrowserRouter() or alias()
100
+ if (node.callee.type === "Identifier") {
101
+ if (createBrowserRouterAliases.has(node.callee.name)) {
102
+ found = true;
103
+ path.stop();
104
+ }
105
+ }
106
+ // Check for namespace call: ReactRouter.createBrowserRouter()
107
+ else if (node.callee.type === "MemberExpression") {
108
+ if (node.callee.object.type === "Identifier" &&
109
+ namespaceImports.has(node.callee.object.name) &&
110
+ node.callee.property.type === "Identifier" &&
111
+ node.callee.property.name === "createBrowserRouter") {
112
+ found = true;
113
+ path.stop();
114
+ }
115
+ }
116
+ },
117
+ });
118
+ return found;
119
+ }
120
+ catch {
121
+ // If parsing fails, fall back to substring check
122
+ return content.includes("createBrowserRouter");
123
+ }
124
+ }
125
+ /**
126
+ * Find all TypeScript/TSX files in rootDir
127
+ */
128
+ async function findAllTsFiles(rootDir) {
129
+ const files = [];
130
+ async function scan(dir, depth = 0) {
131
+ // Limit depth to avoid deep recursion
132
+ if (depth > 3)
133
+ return;
134
+ try {
135
+ const entries = await readdir(dir, { withFileTypes: true });
136
+ for (const entry of entries) {
137
+ const fullPath = join(dir, entry.name);
138
+ // Skip node_modules and hidden directories
139
+ if (entry.name === "node_modules" || entry.name.startsWith(".")) {
140
+ continue;
141
+ }
142
+ if (entry.isDirectory()) {
143
+ await scan(fullPath, depth + 1);
144
+ }
145
+ else if (entry.isFile() &&
146
+ (entry.name.endsWith(".ts") || entry.name.endsWith(".tsx"))) {
147
+ files.push(fullPath);
148
+ }
149
+ }
150
+ }
151
+ catch (e) {
152
+ // Ignore permission errors or missing directories
153
+ getLogger().debug(`Error scanning directory ${dir}: ${e}`);
154
+ }
155
+ }
156
+ await scan(rootDir);
157
+ return files;
158
+ }
159
+ /**
160
+ * React Router v7 Support
161
+ *
162
+ * This implementation parses createBrowserRouter route configurations to extract page components.
163
+ *
164
+ * Check the test file for supported route configurations.
165
+ *
166
+ * Import Aliasing:
167
+ * - Handles: import { createBrowserRouter as createRouter } from "react-router"
168
+ * - Handles: import * as ReactRouter from "react-router"
169
+ *
170
+ * Excluded Routes:
171
+ * - Catch-all routes with path: "*"
172
+ * - Routes with inline components (not imported from files)
173
+ * - Layout/wrapper components that aren't page components
174
+ *
175
+ * File Organization:
176
+ * - No assumptions about directory structure
177
+ * - Page components can be located anywhere in the project
178
+ * - Only imports with relative paths (starting with . or /) are tracked
179
+ */
180
+ /**
181
+ * Find the router file in the project (React Router v7)
182
+ */
183
+ export async function findRouterFile(rootDir) {
184
+ // Check cache first with mtime validation
185
+ if (cachedRouterFileLocation) {
186
+ try {
187
+ const stats = await stat(cachedRouterFileLocation.path);
188
+ if (stats.mtimeMs === cachedRouterFileLocation.mtime) {
189
+ return cachedRouterFileLocation.path;
190
+ }
191
+ else {
192
+ cachedRouterFileLocation = null;
193
+ }
194
+ }
195
+ catch {
196
+ cachedRouterFileLocation = null;
197
+ }
198
+ }
199
+ // Try conventional locations first
200
+ for (const conventionalPath of CONVENTIONAL_ROUTER_PATHS) {
201
+ const fullPath = join(rootDir, conventionalPath);
202
+ try {
203
+ await access(fullPath);
204
+ const content = await readFile(fullPath, "utf-8");
205
+ if (hasCreateBrowserRouter(content)) {
206
+ const stats = await stat(fullPath);
207
+ cachedRouterFileLocation = { path: fullPath, mtime: stats.mtimeMs };
208
+ getLogger().info(`Found router file at: ${conventionalPath}`);
209
+ return fullPath;
210
+ }
211
+ }
212
+ catch {
213
+ continue;
214
+ }
215
+ }
216
+ // Fall back to scanning all TypeScript files in rootDir
217
+ getLogger().info("Router not found in conventional locations, scanning TypeScript files…");
218
+ const allTsFiles = await findAllTsFiles(rootDir);
219
+ for (const file of allTsFiles) {
220
+ try {
221
+ const content = await readFile(file, "utf-8");
222
+ if (hasCreateBrowserRouter(content)) {
223
+ const stats = await stat(file);
224
+ cachedRouterFileLocation = { path: file, mtime: stats.mtimeMs };
225
+ getLogger().info(`Found router file: ${relative(rootDir, file)}`);
226
+ return file;
227
+ }
228
+ }
229
+ catch {
230
+ continue;
231
+ }
232
+ }
233
+ throw new Error("Could not find router file with createBrowserRouter in project");
234
+ }
235
+ /**
236
+ * Extract all static imports
237
+ * Maps component identifier names to their import paths
238
+ * We track ALL imports because any import can be used as a page Component
239
+ */
240
+ function extractAllImports(content) {
241
+ const imports = new Map();
242
+ try {
243
+ const staticImports = findStaticImports(content);
244
+ for (const staticImport of staticImports) {
245
+ const parsed = parseStaticImport(staticImport);
246
+ // Skip imports from node_modules and react-router
247
+ if (!parsed.specifier.startsWith(".") &&
248
+ !parsed.specifier.startsWith("/")) {
249
+ continue;
250
+ }
251
+ // Handle default imports: import Page1 from "./components/Page1.tsx"
252
+ if (parsed.defaultImport) {
253
+ imports.set(parsed.defaultImport, parsed.specifier);
254
+ }
255
+ // Handle named imports: import { Page1 } from "./components/Page1.tsx"
256
+ if (parsed.namedImports) {
257
+ for (const [name, alias] of Object.entries(parsed.namedImports)) {
258
+ const localName = name === alias ? name : alias;
259
+ imports.set(localName, parsed.specifier);
260
+ }
261
+ }
262
+ }
263
+ }
264
+ catch (e) {
265
+ getLogger().debug(`Error extracting imports: ${e}`);
266
+ }
267
+ return imports;
268
+ }
269
+ /**
270
+ * Parse the router file to extract route definitions (React Router v7)
271
+ */
272
+ export async function parseRouterFile(routerFilePath, rootDir) {
273
+ try {
274
+ const content = await readFile(routerFilePath, "utf-8");
275
+ const { createBrowserRouterAliases, namespaceImports } = extractReactRouterImports(content);
276
+ const allImports = extractAllImports(content);
277
+ const ast = parse(content, {
278
+ sourceType: "module",
279
+ plugins: ["typescript", "jsx"],
280
+ });
281
+ const routes = [];
282
+ let routesArray = null;
283
+ traverse(ast, {
284
+ CallExpression(astPath) {
285
+ const node = astPath.node;
286
+ let isCreateBrowserRouterCall = false;
287
+ // Check for direct call: createBrowserRouter() or alias()
288
+ if (node.callee.type === "Identifier") {
289
+ if (createBrowserRouterAliases.has(node.callee.name)) {
290
+ isCreateBrowserRouterCall = true;
291
+ }
292
+ }
293
+ // Check for namespace call: ReactRouter.createBrowserRouter()
294
+ else if (node.callee.type === "MemberExpression") {
295
+ if (node.callee.object.type === "Identifier" &&
296
+ namespaceImports.has(node.callee.object.name) &&
297
+ node.callee.property.type === "Identifier" &&
298
+ node.callee.property.name === "createBrowserRouter") {
299
+ isCreateBrowserRouterCall = true;
300
+ }
301
+ }
302
+ if (isCreateBrowserRouterCall && node.arguments.length > 0) {
303
+ const firstArg = node.arguments[0];
304
+ if (firstArg?.type === "ArrayExpression") {
305
+ routesArray = firstArg;
306
+ }
307
+ }
308
+ },
309
+ });
310
+ // Process routes asynchronously after traverse
311
+ if (routesArray) {
312
+ await extractRoutesFromArray(routesArray, routes, routerFilePath, rootDir, "", allImports);
313
+ }
314
+ return routes;
315
+ }
316
+ catch (e) {
317
+ getLogger().error(`Error parsing router file: ${e}`);
318
+ return [];
319
+ }
320
+ }
321
+ async function extractRoutesFromArray(node, routes, routerFilePath, rootDir, parentPath, allImports) {
322
+ for (const element of node.elements) {
323
+ if (element && element.type === "ObjectExpression") {
324
+ await extractRouteFromObject(element, routes, routerFilePath, rootDir, parentPath, allImports);
325
+ }
326
+ }
327
+ }
328
+ async function extractRouteFromObject(node, routes, routerFilePath, rootDir, parentPath, allImports) {
329
+ let routePath = null;
330
+ let pageImportPath = null;
331
+ let children = null;
332
+ let hasIndex = false;
333
+ for (const prop of node.properties) {
334
+ if (prop.type !== "ObjectProperty")
335
+ continue;
336
+ const key = prop.key.type === "Identifier" ? prop.key.name : null;
337
+ if (key === "path" && prop.value.type === "StringLiteral") {
338
+ routePath = prop.value.value;
339
+ }
340
+ else if (key === "index" && prop.value.type === "BooleanLiteral") {
341
+ hasIndex = prop.value.value;
342
+ }
343
+ else if (key === "lazy" &&
344
+ prop.value.type === "ArrowFunctionExpression") {
345
+ // Extract import path from lazy function arrow expression
346
+ let body = prop.value.body;
347
+ // Case 1: Block statement body (async function with multiple statements)
348
+ // Examples:
349
+ // lazy: async () => { const { default: Component } = await import("./Page.tsx"); return { Component } }
350
+ // lazy: async () => { const mod = await import("./Page.tsx"); return { Component: mod.default } }
351
+ if (body.type === "BlockStatement") {
352
+ // Search through statements for import() call in variable declarations
353
+ for (const statement of body.body) {
354
+ if (statement.type !== "VariableDeclaration")
355
+ continue;
356
+ for (const declarator of statement.declarations) {
357
+ let init = declarator.init;
358
+ // Unwrap AwaitExpression if present: await import(...)
359
+ if (init?.type === "AwaitExpression") {
360
+ init = init.argument;
361
+ }
362
+ // Check if this is an import() call
363
+ if (init?.type === "CallExpression" &&
364
+ init.callee.type === "Import" &&
365
+ init.arguments[0]?.type === "StringLiteral") {
366
+ pageImportPath = init.arguments[0].value;
367
+ break;
368
+ }
369
+ }
370
+ if (pageImportPath)
371
+ break;
372
+ }
373
+ // Exit early if we found the import in block statement
374
+ continue;
375
+ }
376
+ // Case 2: Expression body with await
377
+ // Example: lazy: async () => await import("./Page.tsx")
378
+ if (body.type === "AwaitExpression") {
379
+ body = body.argument;
380
+ }
381
+ // Case 3: Direct import() call
382
+ // Examples:
383
+ // lazy: () => import("./Page.tsx")
384
+ // lazy: async () => import("./Page.tsx")
385
+ if (body.type === "CallExpression" && body.callee.type === "Import") {
386
+ if (body.arguments[0]?.type === "StringLiteral") {
387
+ pageImportPath = body.arguments[0].value;
388
+ }
389
+ continue;
390
+ }
391
+ // Case 4: import().then(...) pattern
392
+ // Examples:
393
+ // lazy: () => import("./Page.tsx").then(mod => ({ Component: mod.default }))
394
+ // lazy: () => import("./Page.tsx").then(mod => ({ Component: mod.SomePage }))
395
+ if (body.type === "CallExpression" &&
396
+ body.callee.type === "MemberExpression" &&
397
+ body.callee.object.type === "CallExpression" &&
398
+ body.callee.object.callee.type === "Import") {
399
+ const importCall = body.callee.object;
400
+ if (importCall.arguments[0]?.type === "StringLiteral") {
401
+ pageImportPath = importCall.arguments[0].value;
402
+ }
403
+ continue;
404
+ }
405
+ }
406
+ else if (key === "Component" && prop.value.type === "Identifier") {
407
+ // Component property uses an identifier: Component: HomePage
408
+ const componentName = prop.value.name;
409
+ if (allImports.has(componentName)) {
410
+ pageImportPath = allImports.get(componentName);
411
+ }
412
+ }
413
+ else if (key === "element" && prop.value.type === "JSXElement") {
414
+ // element property uses JSX: element: <HomePage />
415
+ const jsxElement = prop.value;
416
+ if (jsxElement.openingElement.name.type === "JSXIdentifier") {
417
+ const componentName = jsxElement.openingElement.name.name;
418
+ if (allImports.has(componentName)) {
419
+ pageImportPath = allImports.get(componentName);
420
+ }
421
+ }
422
+ }
423
+ else if (key === "children" && prop.value.type === "ArrayExpression") {
424
+ children = prop.value;
425
+ }
426
+ }
427
+ // Check if any children have index: true
428
+ let hasIndexChild = false;
429
+ if (children) {
430
+ for (const child of children.elements) {
431
+ if (child && child.type === "ObjectExpression") {
432
+ for (const prop of child.properties) {
433
+ if (prop.type === "ObjectProperty" &&
434
+ prop.key.type === "Identifier" &&
435
+ prop.key.name === "index" &&
436
+ prop.value.type === "BooleanLiteral" &&
437
+ prop.value.value === true) {
438
+ hasIndexChild = true;
439
+ break;
440
+ }
441
+ }
442
+ }
443
+ if (hasIndexChild)
444
+ break;
445
+ }
446
+ }
447
+ // Add route if we found a page import (either lazy or static)
448
+ // Skip routes with:
449
+ // - path "*" (catch-all routes)
450
+ // - no path and no index (path-less layout routes)
451
+ // - routes that have an index child (layout routes)
452
+ if (pageImportPath &&
453
+ routePath !== "*" &&
454
+ (routePath || hasIndex) &&
455
+ !hasIndexChild) {
456
+ // Build the full route path:
457
+ // 1. If routePath is explicitly set, use it (takes precedence over index)
458
+ // 2. If only index: true (no explicit path), use parent path
459
+ let fullRoutePath;
460
+ if (routePath) {
461
+ fullRoutePath = joinURL(parentPath, routePath);
462
+ }
463
+ else if (hasIndex) {
464
+ fullRoutePath = parentPath;
465
+ }
466
+ else {
467
+ // This shouldn't happen due to our check above, but handle it anyway
468
+ fullRoutePath = parentPath;
469
+ }
470
+ // Normalize empty path to "/"
471
+ if (!fullRoutePath) {
472
+ fullRoutePath = "/";
473
+ }
474
+ const resolvedPath = resolve(dirname(routerFilePath), pageImportPath);
475
+ const pageFilePath = await resolveSourceFile(resolvedPath);
476
+ routes.push({
477
+ path: fullRoutePath,
478
+ pageImportPath,
479
+ pageFilePath,
480
+ });
481
+ }
482
+ // Recursively process children
483
+ if (children) {
484
+ const currentPath = routePath ? joinURL(parentPath, routePath) : parentPath;
485
+ // Normalize empty path to "/" before passing to children
486
+ const normalizedCurrentPath = currentPath || "/";
487
+ await extractRoutesFromArray(children, routes, routerFilePath, rootDir, normalizedCurrentPath, allImports);
488
+ }
489
+ }
490
+ //# sourceMappingURL=router-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-parser.js","sourceRoot":"","sources":["../src/router-parser.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { TracedEventEmitter } from "@superblocksteam/shared";
2
2
  import type { AiService } from "./ai-service/index.js";
3
- import type { IComponentDocsServer } from "./component-docs-service/index.js";
4
3
  import type { FileSystemManager } from "./file-system-manager.js";
5
4
  import type { LockService } from "./lock-service/index.js";
5
+ import type { CheckAuthorization } from "./plugin-options.js";
6
6
  import type { SyncService } from "./sync-service/index.js";
7
7
  import type { Tracer } from "@opentelemetry/api";
8
8
  import type { EditorClientMethods, LibraryClientMethods } from "@superblocksteam/library-shared/types";
@@ -22,13 +22,13 @@ declare class SocketManager extends TracedEventEmitter<SocketManagerEvents> {
22
22
  private _disposer;
23
23
  constructor(tracer: Tracer);
24
24
  private socketServer;
25
- startSocketServer({ server, fileSyncManager, syncService, lockService, aiService, componentDocsService, path, tracer, }: {
25
+ startSocketServer({ server, fileSyncManager, syncService, lockService, aiService, checkAuthorization, path, tracer, }: {
26
26
  server: http.Server;
27
27
  fileSyncManager: FileSystemManager;
28
28
  syncService?: SyncService;
29
29
  lockService?: LockService;
30
30
  aiService?: AiService;
31
- componentDocsService?: IComponentDocsServer;
31
+ checkAuthorization: CheckAuthorization;
32
32
  path: string;
33
33
  tracer: Tracer;
34
34
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"socket-manager.d.ts","sourceRoot":"","sources":["../src/socket-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EAErB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,KAAK,mBAAmB,GAAG;IACzB,gBAAgB,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,iBAAiB,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACzD,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAIF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,iBAIjD;AAED,wBAAgB,oBAAoB,SAGnC;AAED,cAAM,aAAc,SAAQ,kBAAkB,CAAC,mBAAmB,CAAC;IACjE,OAAO,CAAC,OAAO,CAA8C;IAE7D,OAAO,CAAC,aAAa,CAAiD;IACtE,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,SAAS,CAAwB;gBAE7B,MAAM,EAAE,MAAM;IAI1B,OAAO,CAAC,YAAY,CAA8B;IAClD,iBAAiB,CAAC,EAChB,MAAM,EACN,eAAe,EACf,WAAW,EACX,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,IAAI,EACJ,MAAM,GACP,EAAE;QACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,eAAe,EAAE,iBAAiB,CAAC;QACnC,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;QAC5C,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB;IA+PD,iBAAiB,CACf,EAAE,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAOnE,kBAAkB,CAChB,EAAE,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAOpE,mBAAmB;IAInB,OAAO;CAGR"}
1
+ {"version":3,"file":"socket-manager.d.ts","sourceRoot":"","sources":["../src/socket-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EAErB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAEV,aAAa,EAEd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,KAAK,mBAAmB,GAAG;IACzB,gBAAgB,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,iBAAiB,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACzD,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAIF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,iBAIjD;AAED,wBAAgB,oBAAoB,SAGnC;AAED,cAAM,aAAc,SAAQ,kBAAkB,CAAC,mBAAmB,CAAC;IACjE,OAAO,CAAC,OAAO,CAA8C;IAE7D,OAAO,CAAC,aAAa,CAAiD;IACtE,OAAO,CAAC,cAAc,CAAkD;IACxE,OAAO,CAAC,SAAS,CAAwB;gBAE7B,MAAM,EAAE,MAAM;IAI1B,OAAO,CAAC,YAAY,CAA8B;IAClD,iBAAiB,CAAC,EAChB,MAAM,EACN,eAAe,EACf,WAAW,EACX,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,IAAI,EACJ,MAAM,GACP,EAAE;QACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,eAAe,EAAE,iBAAiB,CAAC;QACnC,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB;IA+PD,iBAAiB,CACf,EAAE,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAOnE,kBAAkB,CAChB,EAAE,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;IAOpE,mBAAmB;IAInB,OAAO;CAGR"}
@@ -20,7 +20,7 @@ class SocketManager extends TracedEventEmitter {
20
20
  super(tracer);
21
21
  }
22
22
  socketServer;
23
- startSocketServer({ server, fileSyncManager, syncService, lockService, aiService, componentDocsService, path, tracer, }) {
23
+ startSocketServer({ server, fileSyncManager, syncService, lockService, aiService, checkAuthorization, path, tracer, }) {
24
24
  if (this.socketServer) {
25
25
  throw new Error("Socket server already started");
26
26
  }
@@ -72,6 +72,13 @@ class SocketManager extends TracedEventEmitter {
72
72
  wss.close();
73
73
  };
74
74
  wss.on("connection", (ws, isEditor, peerId, userId) => {
75
+ const authMiddleware = async (_params, ctx, _peer, next) => {
76
+ const result = await checkAuthorization(ctx.peerAuthorization);
77
+ if (!result.success) {
78
+ throw new Error(result.error);
79
+ }
80
+ return await next();
81
+ };
75
82
  const socket = createISocketClient(new TracedSocket(ws, {
76
83
  editor: {
77
84
  // Update widgets
@@ -85,16 +92,9 @@ class SocketManager extends TracedEventEmitter {
85
92
  // Renames
86
93
  renameElement: [fileSyncManager.handleRenameElement],
87
94
  renameApi: [fileSyncManager.handleRenameApi],
88
- // Update entities (variables, timers, events)
89
- addEntity: [fileSyncManager.handleAddEntity],
90
- updateEntity: [fileSyncManager.handleUpdateEntity],
91
- deleteEntity: [fileSyncManager.handleDeleteEntity],
92
95
  // Update APIs
93
96
  apiUpdate: [fileSyncManager.handleUpdateApi],
94
97
  apiDelete: [fileSyncManager.handleDeleteApi],
95
- // Update pages
96
- createPage: [fileSyncManager.handleCreatePage],
97
- deletePage: [fileSyncManager.handleDeletePage],
98
98
  // Ensure files are synced
99
99
  ensureFilesSynced: [
100
100
  async () => {
@@ -132,6 +132,11 @@ class SocketManager extends TracedEventEmitter {
132
132
  await aiService?.handlePromptInterpretation(request, peer);
133
133
  },
134
134
  ],
135
+ aiExplainCode: [
136
+ async (request, _context, peer) => {
137
+ await aiService?.handleAiExplainCode(request, peer);
138
+ },
139
+ ],
135
140
  aiChatGetMessages: [
136
141
  async () => {
137
142
  const messages = await aiService?.chatSessionStore.getMessages();
@@ -151,15 +156,9 @@ class SocketManager extends TracedEventEmitter {
151
156
  aiService?.handleClearRuntimeError(request.id);
152
157
  },
153
158
  ],
154
- registerComponentDocs: [
155
- async (request) => {
156
- await componentDocsService?.handleComponentDocs(request);
157
- },
158
- ],
159
159
  ping: [
160
160
  async (ping) => {
161
161
  if (ping?.isUserActive !== undefined) {
162
- getLogger().debug(`Ping received with isUserActive: ${ping?.isUserActive}`);
163
162
  if (ping.isUserActive) {
164
163
  void lockService?.restartInactivityTimer();
165
164
  lockService?.markActivity(ping.isUserActive);
@@ -168,7 +167,7 @@ class SocketManager extends TracedEventEmitter {
168
167
  },
169
168
  ],
170
169
  },
171
- }, [], tracer, {
170
+ }, [authMiddleware], tracer, {
172
171
  onClose: () => {
173
172
  console.log("Socket closed");
174
173
  },