@antelopejs/dms-ai 0.0.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 (416) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +46 -0
  3. package/dist/builder/presence.d.ts +1 -0
  4. package/dist/builder/presence.js +22 -0
  5. package/dist/builder/presence.js.map +1 -0
  6. package/dist/constants/builder.d.ts +7 -0
  7. package/dist/constants/builder.js +11 -0
  8. package/dist/constants/builder.js.map +1 -0
  9. package/dist/constants/frontend-module.d.ts +3 -0
  10. package/dist/constants/frontend-module.js +7 -0
  11. package/dist/constants/frontend-module.js.map +1 -0
  12. package/dist/constants/logs.d.ts +3 -0
  13. package/dist/constants/logs.js +7 -0
  14. package/dist/constants/logs.js.map +1 -0
  15. package/dist/constants/module.d.ts +3 -0
  16. package/dist/constants/module.js +7 -0
  17. package/dist/constants/module.js.map +1 -0
  18. package/dist/constants/pages-registry.d.ts +2 -0
  19. package/dist/constants/pages-registry.js +6 -0
  20. package/dist/constants/pages-registry.js.map +1 -0
  21. package/dist/constants/sidecar.d.ts +24 -0
  22. package/dist/constants/sidecar.js +32 -0
  23. package/dist/constants/sidecar.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.js +41 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/lifecycle/module-roots.d.ts +1 -0
  28. package/dist/lifecycle/module-roots.js +52 -0
  29. package/dist/lifecycle/module-roots.js.map +1 -0
  30. package/dist/lifecycle/respawn-tracker.d.ts +5 -0
  31. package/dist/lifecycle/respawn-tracker.js +20 -0
  32. package/dist/lifecycle/respawn-tracker.js.map +1 -0
  33. package/dist/lifecycle/skill-sources.d.ts +5 -0
  34. package/dist/lifecycle/skill-sources.js +181 -0
  35. package/dist/lifecycle/skill-sources.js.map +1 -0
  36. package/dist/lifecycle/spawn-sidecar.d.ts +17 -0
  37. package/dist/lifecycle/spawn-sidecar.js +299 -0
  38. package/dist/lifecycle/spawn-sidecar.js.map +1 -0
  39. package/dist/logging/log-buffer.d.ts +9 -0
  40. package/dist/logging/log-buffer.js +76 -0
  41. package/dist/logging/log-buffer.js.map +1 -0
  42. package/dist/pages/activity/page.d.ts +10 -0
  43. package/dist/pages/activity/page.js +62 -0
  44. package/dist/pages/activity/page.js.map +1 -0
  45. package/dist/pages/all.d.ts +4 -0
  46. package/dist/pages/all.js +21 -0
  47. package/dist/pages/all.js.map +1 -0
  48. package/dist/pages/index.d.ts +4 -0
  49. package/dist/pages/index.js +21 -0
  50. package/dist/pages/index.js.map +1 -0
  51. package/dist/pages/module.d.ts +1 -0
  52. package/dist/pages/module.js +11 -0
  53. package/dist/pages/module.js.map +1 -0
  54. package/dist/pages/overview/page.d.ts +11 -0
  55. package/dist/pages/overview/page.js +82 -0
  56. package/dist/pages/overview/page.js.map +1 -0
  57. package/dist/pages/settings/page.d.ts +9 -0
  58. package/dist/pages/settings/page.js +29 -0
  59. package/dist/pages/settings/page.js.map +1 -0
  60. package/dist/pages/skills/page.d.ts +9 -0
  61. package/dist/pages/skills/page.js +29 -0
  62. package/dist/pages/skills/page.js.map +1 -0
  63. package/dist/pages-registry.d.ts +2 -0
  64. package/dist/pages-registry.js +41 -0
  65. package/dist/pages-registry.js.map +1 -0
  66. package/dist/routes/builder.d.ts +11 -0
  67. package/dist/routes/builder.js +135 -0
  68. package/dist/routes/builder.js.map +1 -0
  69. package/dist/routes/health.d.ts +8 -0
  70. package/dist/routes/health.js +27 -0
  71. package/dist/routes/health.js.map +1 -0
  72. package/dist/routes/index.d.ts +8 -0
  73. package/dist/routes/index.js +25 -0
  74. package/dist/routes/index.js.map +1 -0
  75. package/dist/routes/logs.d.ts +7 -0
  76. package/dist/routes/logs.js +51 -0
  77. package/dist/routes/logs.js.map +1 -0
  78. package/dist/routes/metrics.d.ts +54 -0
  79. package/dist/routes/metrics.js +104 -0
  80. package/dist/routes/metrics.js.map +1 -0
  81. package/dist/routes/pages-registry.d.ts +7 -0
  82. package/dist/routes/pages-registry.js +86 -0
  83. package/dist/routes/pages-registry.js.map +1 -0
  84. package/dist/routes/proxy.d.ts +4 -0
  85. package/dist/routes/proxy.js +55 -0
  86. package/dist/routes/proxy.js.map +1 -0
  87. package/dist/routes/settings.d.ts +13 -0
  88. package/dist/routes/settings.js +52 -0
  89. package/dist/routes/settings.js.map +1 -0
  90. package/dist/routes/sidecar-auth.d.ts +3 -0
  91. package/dist/routes/sidecar-auth.js +27 -0
  92. package/dist/routes/sidecar-auth.js.map +1 -0
  93. package/dist/routes/sidecar-info.d.ts +6 -0
  94. package/dist/routes/sidecar-info.js +39 -0
  95. package/dist/routes/sidecar-info.js.map +1 -0
  96. package/dist/routes/skills.d.ts +18 -0
  97. package/dist/routes/skills.js +33 -0
  98. package/dist/routes/skills.js.map +1 -0
  99. package/dist/types/index.d.ts +2 -0
  100. package/dist/types/index.js +19 -0
  101. package/dist/types/index.js.map +1 -0
  102. package/dist/types/logs.d.ts +12 -0
  103. package/dist/types/logs.js +3 -0
  104. package/dist/types/logs.js.map +1 -0
  105. package/dist/types/pages-registry.d.ts +6 -0
  106. package/dist/types/pages-registry.js +3 -0
  107. package/dist/types/pages-registry.js.map +1 -0
  108. package/frontend-vue/.editorconfig +12 -0
  109. package/frontend-vue/app/components/ActivityView.vue +94 -0
  110. package/frontend-vue/app/components/SettingsView.vue +300 -0
  111. package/frontend-vue/app/components/SkillsView.vue +228 -0
  112. package/frontend-vue/app/plugins/ai.client.ts +109 -0
  113. package/frontend-vue/app/runtime/backoff.ts +30 -0
  114. package/frontend-vue/app/runtime/constants.ts +66 -0
  115. package/frontend-vue/app/runtime/current-page.ts +28 -0
  116. package/frontend-vue/app/runtime/header-action.ts +64 -0
  117. package/frontend-vue/app/runtime/host-commands.ts +127 -0
  118. package/frontend-vue/app/runtime/navigation-complete.ts +22 -0
  119. package/frontend-vue/app/runtime/overlay-prefs.ts +89 -0
  120. package/frontend-vue/app/runtime/overlay.ts +383 -0
  121. package/frontend-vue/app/runtime/shortcuts.ts +28 -0
  122. package/frontend-vue/app/runtime/sidecar-status.ts +163 -0
  123. package/frontend-vue/app/runtime/theme-bridge.ts +177 -0
  124. package/frontend-vue/app/runtime/ws-client.ts +196 -0
  125. package/frontend-vue/dms.frontend.ts +26 -0
  126. package/frontend-vue/eslint.config.mjs +24 -0
  127. package/frontend-vue/package.json +33 -0
  128. package/frontend-vue/pnpm-lock.yaml +2723 -0
  129. package/frontend-vue/tests/backoff.test.ts +44 -0
  130. package/frontend-vue/tests/host-commands.test.ts +142 -0
  131. package/frontend-vue/tests/navigation.test.ts +45 -0
  132. package/frontend-vue/tests/overlay-prefs.test.ts +91 -0
  133. package/frontend-vue/tests/sidecar-auth.test.ts +87 -0
  134. package/frontend-vue/tests/sidecar-guest.test.ts +45 -0
  135. package/frontend-vue/vitest.config.ts +8 -0
  136. package/package.json +79 -0
  137. package/sidecar/chatbox/dist/assets/index-Cy2BwTG0.js +50 -0
  138. package/sidecar/chatbox/dist/assets/index-pP_KOHIn.css +1 -0
  139. package/sidecar/chatbox/dist/index.html +13 -0
  140. package/sidecar/dist/agent/attachments.d.ts +8 -0
  141. package/sidecar/dist/agent/attachments.js +85 -0
  142. package/sidecar/dist/agent/attachments.js.map +1 -0
  143. package/sidecar/dist/agent/claude-runner.d.ts +33 -0
  144. package/sidecar/dist/agent/claude-runner.js +264 -0
  145. package/sidecar/dist/agent/claude-runner.js.map +1 -0
  146. package/sidecar/dist/agent/claude-session.d.ts +18 -0
  147. package/sidecar/dist/agent/claude-session.js +155 -0
  148. package/sidecar/dist/agent/claude-session.js.map +1 -0
  149. package/sidecar/dist/agent/edit-tracker.d.ts +9 -0
  150. package/sidecar/dist/agent/edit-tracker.js +34 -0
  151. package/sidecar/dist/agent/edit-tracker.js.map +1 -0
  152. package/sidecar/dist/agent/host-context.d.ts +4 -0
  153. package/sidecar/dist/agent/host-context.js +16 -0
  154. package/sidecar/dist/agent/host-context.js.map +1 -0
  155. package/sidecar/dist/agent/input-queue.d.ts +7 -0
  156. package/sidecar/dist/agent/input-queue.js +39 -0
  157. package/sidecar/dist/agent/input-queue.js.map +1 -0
  158. package/sidecar/dist/agent/permission-bus.d.ts +26 -0
  159. package/sidecar/dist/agent/permission-bus.js +138 -0
  160. package/sidecar/dist/agent/permission-bus.js.map +1 -0
  161. package/sidecar/dist/agent/question-bus.d.ts +22 -0
  162. package/sidecar/dist/agent/question-bus.js +91 -0
  163. package/sidecar/dist/agent/question-bus.js.map +1 -0
  164. package/sidecar/dist/agent/read-access.d.ts +2 -0
  165. package/sidecar/dist/agent/read-access.js +33 -0
  166. package/sidecar/dist/agent/read-access.js.map +1 -0
  167. package/sidecar/dist/agent/resolve-claude-binary.d.ts +1 -0
  168. package/sidecar/dist/agent/resolve-claude-binary.js +43 -0
  169. package/sidecar/dist/agent/resolve-claude-binary.js.map +1 -0
  170. package/sidecar/dist/agent/runner-events.d.ts +28 -0
  171. package/sidecar/dist/agent/runner-events.js +2 -0
  172. package/sidecar/dist/agent/runner-events.js.map +1 -0
  173. package/sidecar/dist/agent/sdk-adapter.d.ts +3 -0
  174. package/sidecar/dist/agent/sdk-adapter.js +106 -0
  175. package/sidecar/dist/agent/sdk-adapter.js.map +1 -0
  176. package/sidecar/dist/agent/sdk-loader.d.ts +5 -0
  177. package/sidecar/dist/agent/sdk-loader.js +14 -0
  178. package/sidecar/dist/agent/sdk-loader.js.map +1 -0
  179. package/sidecar/dist/agent/system-prompt.d.ts +6 -0
  180. package/sidecar/dist/agent/system-prompt.js +29 -0
  181. package/sidecar/dist/agent/system-prompt.js.map +1 -0
  182. package/sidecar/dist/agent/tool-summary.d.ts +1 -0
  183. package/sidecar/dist/agent/tool-summary.js +46 -0
  184. package/sidecar/dist/agent/tool-summary.js.map +1 -0
  185. package/sidecar/dist/agent/typecheck.d.ts +36 -0
  186. package/sidecar/dist/agent/typecheck.js +104 -0
  187. package/sidecar/dist/agent/typecheck.js.map +1 -0
  188. package/sidecar/dist/builder/builder-client.d.ts +10 -0
  189. package/sidecar/dist/builder/builder-client.js +52 -0
  190. package/sidecar/dist/builder/builder-client.js.map +1 -0
  191. package/sidecar/dist/builder/capability.d.ts +4 -0
  192. package/sidecar/dist/builder/capability.js +11 -0
  193. package/sidecar/dist/builder/capability.js.map +1 -0
  194. package/sidecar/dist/constants/agent.d.ts +25 -0
  195. package/sidecar/dist/constants/agent.js +25 -0
  196. package/sidecar/dist/constants/agent.js.map +1 -0
  197. package/sidecar/dist/constants/attachments.d.ts +7 -0
  198. package/sidecar/dist/constants/attachments.js +12 -0
  199. package/sidecar/dist/constants/attachments.js.map +1 -0
  200. package/sidecar/dist/constants/builder.d.ts +5 -0
  201. package/sidecar/dist/constants/builder.js +32 -0
  202. package/sidecar/dist/constants/builder.js.map +1 -0
  203. package/sidecar/dist/constants/daemon.d.ts +7 -0
  204. package/sidecar/dist/constants/daemon.js +8 -0
  205. package/sidecar/dist/constants/daemon.js.map +1 -0
  206. package/sidecar/dist/constants/env.d.ts +3 -0
  207. package/sidecar/dist/constants/env.js +4 -0
  208. package/sidecar/dist/constants/env.js.map +1 -0
  209. package/sidecar/dist/constants/host-state.d.ts +1 -0
  210. package/sidecar/dist/constants/host-state.js +2 -0
  211. package/sidecar/dist/constants/host-state.js.map +1 -0
  212. package/sidecar/dist/constants/http.d.ts +20 -0
  213. package/sidecar/dist/constants/http.js +31 -0
  214. package/sidecar/dist/constants/http.js.map +1 -0
  215. package/sidecar/dist/constants/logs.d.ts +11 -0
  216. package/sidecar/dist/constants/logs.js +16 -0
  217. package/sidecar/dist/constants/logs.js.map +1 -0
  218. package/sidecar/dist/constants/mcp.d.ts +24 -0
  219. package/sidecar/dist/constants/mcp.js +38 -0
  220. package/sidecar/dist/constants/mcp.js.map +1 -0
  221. package/sidecar/dist/constants/native-binary.d.ts +4 -0
  222. package/sidecar/dist/constants/native-binary.js +5 -0
  223. package/sidecar/dist/constants/native-binary.js.map +1 -0
  224. package/sidecar/dist/constants/pages.d.ts +16 -0
  225. package/sidecar/dist/constants/pages.js +24 -0
  226. package/sidecar/dist/constants/pages.js.map +1 -0
  227. package/sidecar/dist/constants/paths.d.ts +3 -0
  228. package/sidecar/dist/constants/paths.js +7 -0
  229. package/sidecar/dist/constants/paths.js.map +1 -0
  230. package/sidecar/dist/constants/permissions.d.ts +15 -0
  231. package/sidecar/dist/constants/permissions.js +15 -0
  232. package/sidecar/dist/constants/permissions.js.map +1 -0
  233. package/sidecar/dist/constants/ports.d.ts +3 -0
  234. package/sidecar/dist/constants/ports.js +4 -0
  235. package/sidecar/dist/constants/ports.js.map +1 -0
  236. package/sidecar/dist/constants/project.d.ts +8 -0
  237. package/sidecar/dist/constants/project.js +12 -0
  238. package/sidecar/dist/constants/project.js.map +1 -0
  239. package/sidecar/dist/constants/questions.d.ts +4 -0
  240. package/sidecar/dist/constants/questions.js +5 -0
  241. package/sidecar/dist/constants/questions.js.map +1 -0
  242. package/sidecar/dist/constants/read-access.d.ts +1 -0
  243. package/sidecar/dist/constants/read-access.js +8 -0
  244. package/sidecar/dist/constants/read-access.js.map +1 -0
  245. package/sidecar/dist/constants/safety-net.d.ts +5 -0
  246. package/sidecar/dist/constants/safety-net.js +6 -0
  247. package/sidecar/dist/constants/safety-net.js.map +1 -0
  248. package/sidecar/dist/constants/settings.d.ts +9 -0
  249. package/sidecar/dist/constants/settings.js +29 -0
  250. package/sidecar/dist/constants/settings.js.map +1 -0
  251. package/sidecar/dist/constants/state.d.ts +7 -0
  252. package/sidecar/dist/constants/state.js +7 -0
  253. package/sidecar/dist/constants/state.js.map +1 -0
  254. package/sidecar/dist/constants/timing.d.ts +1 -0
  255. package/sidecar/dist/constants/timing.js +2 -0
  256. package/sidecar/dist/constants/timing.js.map +1 -0
  257. package/sidecar/dist/constants/tool-summary.d.ts +20 -0
  258. package/sidecar/dist/constants/tool-summary.js +21 -0
  259. package/sidecar/dist/constants/tool-summary.js.map +1 -0
  260. package/sidecar/dist/constants/typecheck.d.ts +16 -0
  261. package/sidecar/dist/constants/typecheck.js +23 -0
  262. package/sidecar/dist/constants/typecheck.js.map +1 -0
  263. package/sidecar/dist/constants/ws.d.ts +5 -0
  264. package/sidecar/dist/constants/ws.js +6 -0
  265. package/sidecar/dist/constants/ws.js.map +1 -0
  266. package/sidecar/dist/host/project-info.d.ts +6 -0
  267. package/sidecar/dist/host/project-info.js +51 -0
  268. package/sidecar/dist/host/project-info.js.map +1 -0
  269. package/sidecar/dist/index.d.ts +3 -0
  270. package/sidecar/dist/index.js +280 -0
  271. package/sidecar/dist/index.js.map +1 -0
  272. package/sidecar/dist/logs/logs-client.d.ts +11 -0
  273. package/sidecar/dist/logs/logs-client.js +52 -0
  274. package/sidecar/dist/logs/logs-client.js.map +1 -0
  275. package/sidecar/dist/logs/types.d.ts +12 -0
  276. package/sidecar/dist/logs/types.js +2 -0
  277. package/sidecar/dist/logs/types.js.map +1 -0
  278. package/sidecar/dist/mcp/server.d.ts +2 -0
  279. package/sidecar/dist/mcp/server.js +50 -0
  280. package/sidecar/dist/mcp/server.js.map +1 -0
  281. package/sidecar/dist/mcp/tools/ask-user.d.ts +41 -0
  282. package/sidecar/dist/mcp/tools/ask-user.js +29 -0
  283. package/sidecar/dist/mcp/tools/ask-user.js.map +1 -0
  284. package/sidecar/dist/mcp/tools/builder.d.ts +259 -0
  285. package/sidecar/dist/mcp/tools/builder.js +216 -0
  286. package/sidecar/dist/mcp/tools/builder.js.map +1 -0
  287. package/sidecar/dist/mcp/tools/find-pages-using.d.ts +15 -0
  288. package/sidecar/dist/mcp/tools/find-pages-using.js +108 -0
  289. package/sidecar/dist/mcp/tools/find-pages-using.js.map +1 -0
  290. package/sidecar/dist/mcp/tools/get-current-page.d.ts +4 -0
  291. package/sidecar/dist/mcp/tools/get-current-page.js +12 -0
  292. package/sidecar/dist/mcp/tools/get-current-page.js.map +1 -0
  293. package/sidecar/dist/mcp/tools/list-pages.d.ts +8 -0
  294. package/sidecar/dist/mcp/tools/list-pages.js +29 -0
  295. package/sidecar/dist/mcp/tools/list-pages.js.map +1 -0
  296. package/sidecar/dist/mcp/tools/navigate-to-page.d.ts +14 -0
  297. package/sidecar/dist/mcp/tools/navigate-to-page.js +66 -0
  298. package/sidecar/dist/mcp/tools/navigate-to-page.js.map +1 -0
  299. package/sidecar/dist/mcp/tools/query-logs.d.ts +11 -0
  300. package/sidecar/dist/mcp/tools/query-logs.js +32 -0
  301. package/sidecar/dist/mcp/tools/query-logs.js.map +1 -0
  302. package/sidecar/dist/mcp/tools/typecheck.d.ts +9 -0
  303. package/sidecar/dist/mcp/tools/typecheck.js +20 -0
  304. package/sidecar/dist/mcp/tools/typecheck.js.map +1 -0
  305. package/sidecar/dist/mcp/types.d.ts +27 -0
  306. package/sidecar/dist/mcp/types.js +2 -0
  307. package/sidecar/dist/mcp/types.js.map +1 -0
  308. package/sidecar/dist/metrics/aggregate.d.ts +11 -0
  309. package/sidecar/dist/metrics/aggregate.js +189 -0
  310. package/sidecar/dist/metrics/aggregate.js.map +1 -0
  311. package/sidecar/dist/metrics/types.d.ts +53 -0
  312. package/sidecar/dist/metrics/types.js +8 -0
  313. package/sidecar/dist/metrics/types.js.map +1 -0
  314. package/sidecar/dist/pages/imports-scanner.d.ts +9 -0
  315. package/sidecar/dist/pages/imports-scanner.js +143 -0
  316. package/sidecar/dist/pages/imports-scanner.js.map +1 -0
  317. package/sidecar/dist/pages/registry-client.d.ts +15 -0
  318. package/sidecar/dist/pages/registry-client.js +83 -0
  319. package/sidecar/dist/pages/registry-client.js.map +1 -0
  320. package/sidecar/dist/pages/route-match.d.ts +2 -0
  321. package/sidecar/dist/pages/route-match.js +10 -0
  322. package/sidecar/dist/pages/route-match.js.map +1 -0
  323. package/sidecar/dist/pages/types.d.ts +11 -0
  324. package/sidecar/dist/pages/types.js +2 -0
  325. package/sidecar/dist/pages/types.js.map +1 -0
  326. package/sidecar/dist/prompts/agent.d.ts +3 -0
  327. package/sidecar/dist/prompts/agent.js +40 -0
  328. package/sidecar/dist/prompts/agent.js.map +1 -0
  329. package/sidecar/dist/prompts/builder.d.ts +3 -0
  330. package/sidecar/dist/prompts/builder.js +4 -0
  331. package/sidecar/dist/prompts/builder.js.map +1 -0
  332. package/sidecar/dist/protocol/events.d.ts +1050 -0
  333. package/sidecar/dist/protocol/events.js +154 -0
  334. package/sidecar/dist/protocol/events.js.map +1 -0
  335. package/sidecar/dist/protocol/messages.d.ts +644 -0
  336. package/sidecar/dist/protocol/messages.js +139 -0
  337. package/sidecar/dist/protocol/messages.js.map +1 -0
  338. package/sidecar/dist/server/client-auth.d.ts +2 -0
  339. package/sidecar/dist/server/client-auth.js +25 -0
  340. package/sidecar/dist/server/client-auth.js.map +1 -0
  341. package/sidecar/dist/server/host-socket-registry.d.ts +9 -0
  342. package/sidecar/dist/server/host-socket-registry.js +42 -0
  343. package/sidecar/dist/server/host-socket-registry.js.map +1 -0
  344. package/sidecar/dist/server/http.d.ts +25 -0
  345. package/sidecar/dist/server/http.js +263 -0
  346. package/sidecar/dist/server/http.js.map +1 -0
  347. package/sidecar/dist/server/idle-shutdown.d.ts +10 -0
  348. package/sidecar/dist/server/idle-shutdown.js +35 -0
  349. package/sidecar/dist/server/idle-shutdown.js.map +1 -0
  350. package/sidecar/dist/server/iframe-socket-registry.d.ts +10 -0
  351. package/sidecar/dist/server/iframe-socket-registry.js +57 -0
  352. package/sidecar/dist/server/iframe-socket-registry.js.map +1 -0
  353. package/sidecar/dist/server/live-turns.d.ts +8 -0
  354. package/sidecar/dist/server/live-turns.js +16 -0
  355. package/sidecar/dist/server/live-turns.js.map +1 -0
  356. package/sidecar/dist/server/navigation-completer.d.ts +5 -0
  357. package/sidecar/dist/server/navigation-completer.js +49 -0
  358. package/sidecar/dist/server/navigation-completer.js.map +1 -0
  359. package/sidecar/dist/server/pending-queue.d.ts +11 -0
  360. package/sidecar/dist/server/pending-queue.js +54 -0
  361. package/sidecar/dist/server/pending-queue.js.map +1 -0
  362. package/sidecar/dist/server/raw-data.d.ts +2 -0
  363. package/sidecar/dist/server/raw-data.js +13 -0
  364. package/sidecar/dist/server/raw-data.js.map +1 -0
  365. package/sidecar/dist/server/routing.d.ts +64 -0
  366. package/sidecar/dist/server/routing.js +571 -0
  367. package/sidecar/dist/server/routing.js.map +1 -0
  368. package/sidecar/dist/server/safety-net.d.ts +16 -0
  369. package/sidecar/dist/server/safety-net.js +76 -0
  370. package/sidecar/dist/server/safety-net.js.map +1 -0
  371. package/sidecar/dist/server/ws.d.ts +33 -0
  372. package/sidecar/dist/server/ws.js +182 -0
  373. package/sidecar/dist/server/ws.js.map +1 -0
  374. package/sidecar/dist/skills/build-catalog.d.ts +15 -0
  375. package/sidecar/dist/skills/build-catalog.js +39 -0
  376. package/sidecar/dist/skills/build-catalog.js.map +1 -0
  377. package/sidecar/dist/skills/frontmatter.d.ts +9 -0
  378. package/sidecar/dist/skills/frontmatter.js +50 -0
  379. package/sidecar/dist/skills/frontmatter.js.map +1 -0
  380. package/sidecar/dist/skills/plugin-wrapper.d.ts +6 -0
  381. package/sidecar/dist/skills/plugin-wrapper.js +37 -0
  382. package/sidecar/dist/skills/plugin-wrapper.js.map +1 -0
  383. package/sidecar/dist/skills/resolve-sources.d.ts +3 -0
  384. package/sidecar/dist/skills/resolve-sources.js +14 -0
  385. package/sidecar/dist/skills/resolve-sources.js.map +1 -0
  386. package/sidecar/dist/skills/types.d.ts +4 -0
  387. package/sidecar/dist/skills/types.js +2 -0
  388. package/sidecar/dist/skills/types.js.map +1 -0
  389. package/sidecar/dist/state/conversations.d.ts +20 -0
  390. package/sidecar/dist/state/conversations.js +93 -0
  391. package/sidecar/dist/state/conversations.js.map +1 -0
  392. package/sidecar/dist/state/host-state.d.ts +10 -0
  393. package/sidecar/dist/state/host-state.js +14 -0
  394. package/sidecar/dist/state/host-state.js.map +1 -0
  395. package/sidecar/dist/state/lock.d.ts +12 -0
  396. package/sidecar/dist/state/lock.js +43 -0
  397. package/sidecar/dist/state/lock.js.map +1 -0
  398. package/sidecar/dist/state/settings-store.d.ts +12 -0
  399. package/sidecar/dist/state/settings-store.js +82 -0
  400. package/sidecar/dist/state/settings-store.js.map +1 -0
  401. package/sidecar/dist/state/settings-types.d.ts +12 -0
  402. package/sidecar/dist/state/settings-types.js +4 -0
  403. package/sidecar/dist/state/settings-types.js.map +1 -0
  404. package/sidecar/dist/state/sidecar-version.d.ts +1 -0
  405. package/sidecar/dist/state/sidecar-version.js +14 -0
  406. package/sidecar/dist/state/sidecar-version.js.map +1 -0
  407. package/sidecar/dist/state/store.d.ts +11 -0
  408. package/sidecar/dist/state/store.js +89 -0
  409. package/sidecar/dist/state/store.js.map +1 -0
  410. package/sidecar/dist/state/types.d.ts +36 -0
  411. package/sidecar/dist/state/types.js +10 -0
  412. package/sidecar/dist/state/types.js.map +1 -0
  413. package/sidecar/package.json +42 -0
  414. package/skills/dms-builder-page/SKILL.md +80 -0
  415. package/skills/dms-builder-safe/REFERENCE.md +111 -0
  416. package/skills/dms-builder-safe/SKILL.md +118 -0
@@ -0,0 +1,571 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { EDIT_TOOL_NAMES, extractEditedFilePath, } from "../agent/edit-tracker.js";
3
+ import { buildToolSummary } from "../agent/tool-summary.js";
4
+ import { getBuilderAvailable } from "../builder/capability.js";
5
+ import { PERMISSION_DECISIONS, } from "../constants/permissions.js";
6
+ import { MAX_AUTO_HEAL_ATTEMPTS } from "../constants/safety-net.js";
7
+ import { WS_LOG_PREFIX } from "../constants/ws.js";
8
+ import { EVENT_TYPES, STATUS, } from "../protocol/events.js";
9
+ import { AnyClientMessage, MESSAGE_TYPES, ROLE, } from "../protocol/messages.js";
10
+ import { collectBuildIssues } from "./safety-net.js";
11
+ function buildSnapshotEvent(conversationId, messages) {
12
+ return {
13
+ type: EVENT_TYPES.CONVERSATION_SNAPSHOT,
14
+ conversationId,
15
+ messages: messages
16
+ .filter((m) => m.role !== "permission")
17
+ .map((m) => ({ ...m })),
18
+ };
19
+ }
20
+ function sendSnapshotIfKnown(socket, ctx, msg) {
21
+ if (msg.role !== ROLE.IFRAME)
22
+ return;
23
+ sendSettings(socket, ctx);
24
+ if (msg.conversationId === undefined)
25
+ return;
26
+ sendConversationSnapshot(socket, ctx, msg.conversationId);
27
+ replayLiveTurn(socket, ctx, msg.conversationId);
28
+ sendQueueState(socket, ctx, msg.conversationId);
29
+ resendPendingPermissions(socket, ctx, msg.conversationId);
30
+ resendPendingQuestions(socket, ctx, msg.conversationId);
31
+ }
32
+ function sendQueueState(socket, ctx, conversationId) {
33
+ const event = {
34
+ type: EVENT_TYPES.QUEUE_STATE,
35
+ conversationId,
36
+ items: ctx.pendingQueue.get(conversationId),
37
+ };
38
+ socket.send(JSON.stringify(event));
39
+ }
40
+ function buildSettingsUpdateEvent(ctx) {
41
+ return {
42
+ type: EVENT_TYPES.SETTINGS_UPDATE,
43
+ settings: ctx.settingsStore.get(),
44
+ builderAvailable: getBuilderAvailable(),
45
+ };
46
+ }
47
+ function sendSettings(socket, ctx) {
48
+ socket.send(JSON.stringify(buildSettingsUpdateEvent(ctx)));
49
+ }
50
+ function buildRunResumedEvent(conversationId) {
51
+ return { type: EVENT_TYPES.RUN_RESUMED, conversationId };
52
+ }
53
+ function replayLiveTurn(socket, ctx, conversationId) {
54
+ const events = ctx.liveTurns.replay(conversationId);
55
+ if (events === null)
56
+ return;
57
+ socket.send(JSON.stringify(buildRunResumedEvent(conversationId)));
58
+ for (const event of events) {
59
+ socket.send(JSON.stringify(event));
60
+ }
61
+ }
62
+ function sendConversationSnapshot(socket, ctx, conversationId) {
63
+ const conversation = ctx.conversationStore.get(conversationId);
64
+ if (conversation === null)
65
+ return;
66
+ const event = buildSnapshotEvent(conversationId, conversation.messages);
67
+ socket.send(JSON.stringify(event));
68
+ }
69
+ function resendPendingPermissions(socket, ctx, conversationId) {
70
+ const pending = ctx.permissionBus.getPendingForConversation(conversationId);
71
+ for (const request of pending) {
72
+ sendPermissionRequest(socket, request);
73
+ }
74
+ }
75
+ function resendPendingQuestions(socket, ctx, conversationId) {
76
+ const pending = ctx.questionBus.getPendingForConversation(conversationId);
77
+ for (const question of pending) {
78
+ sendQuestionRequest(socket, question);
79
+ }
80
+ }
81
+ function registerHostSocketIfHost(socket, msg, ctx) {
82
+ if (msg.role !== ROLE.HOST)
83
+ return;
84
+ ctx.hostSocketRegistry.set(socket);
85
+ }
86
+ function registerIframeSocketIfIframe(socket, msg, ctx) {
87
+ if (msg.role !== ROLE.IFRAME)
88
+ return;
89
+ if (msg.conversationId === undefined)
90
+ return;
91
+ ctx.iframeSocketRegistry.set(msg.conversationId, socket);
92
+ }
93
+ function handleHello(socket, msg, ctx) {
94
+ if (msg.type !== MESSAGE_TYPES.HELLO)
95
+ return;
96
+ console.log(`${WS_LOG_PREFIX} hello role=${msg.role} path=${ctx.path}`);
97
+ registerHostSocketIfHost(socket, msg, ctx);
98
+ registerIframeSocketIfIframe(socket, msg, ctx);
99
+ sendSnapshotIfKnown(socket, ctx, msg);
100
+ }
101
+ function handleEcho(socket, msg) {
102
+ if (msg.type !== MESSAGE_TYPES.ECHO)
103
+ return;
104
+ const reply = {
105
+ type: MESSAGE_TYPES.ECHO_REPLY,
106
+ payload: msg.payload,
107
+ serverTimeMs: Date.now(),
108
+ };
109
+ socket.send(JSON.stringify(reply));
110
+ }
111
+ const RUNNER_EVENT_MAPPERS = {
112
+ assistant_text: () => null,
113
+ assistant_text_delta: (ev, cid) => ({
114
+ type: EVENT_TYPES.ASSISTANT_MESSAGE_CHUNK,
115
+ conversationId: cid,
116
+ text: ev.text,
117
+ }),
118
+ tool_use: (ev, cid) => ({
119
+ type: EVENT_TYPES.TOOL_CALL_START,
120
+ conversationId: cid,
121
+ callId: ev.callId,
122
+ toolName: ev.toolName,
123
+ args: ev.args,
124
+ }),
125
+ tool_result: (ev, cid) => ({
126
+ type: EVENT_TYPES.TOOL_CALL_END,
127
+ conversationId: cid,
128
+ callId: ev.callId,
129
+ status: ev.isError ? STATUS.ERROR : STATUS.SUCCESS,
130
+ result: ev.result,
131
+ }),
132
+ done: (_ev, cid) => ({
133
+ type: EVENT_TYPES.RUN_DONE,
134
+ conversationId: cid,
135
+ }),
136
+ error: (ev, cid) => ({
137
+ type: EVENT_TYPES.RUN_ERROR,
138
+ conversationId: cid,
139
+ error: ev.message,
140
+ }),
141
+ };
142
+ function mapRunnerEvent(ev, conversationId) {
143
+ const mapper = RUNNER_EVENT_MAPPERS[ev.type];
144
+ return mapper(ev, conversationId);
145
+ }
146
+ const RUNNER_EVENT_PERSISTERS = {
147
+ assistant_text: (ev, nowMs) => ({
148
+ role: "assistant",
149
+ content: ev.text,
150
+ timestampMs: nowMs,
151
+ }),
152
+ assistant_text_delta: () => null,
153
+ tool_use: (ev, nowMs) => ({
154
+ role: "tool_use",
155
+ content: JSON.stringify(ev.args ?? null),
156
+ toolName: ev.toolName,
157
+ callId: ev.callId,
158
+ timestampMs: nowMs,
159
+ }),
160
+ tool_result: (ev, nowMs) => ({
161
+ role: "tool_result",
162
+ content: JSON.stringify(ev.result ?? null),
163
+ callId: ev.callId,
164
+ status: ev.isError ? STATUS.ERROR : STATUS.SUCCESS,
165
+ timestampMs: nowMs,
166
+ }),
167
+ done: () => null,
168
+ error: () => null,
169
+ };
170
+ function persistRunnerEvent(ctx, conversationId, ev) {
171
+ const persister = RUNNER_EVENT_PERSISTERS[ev.type];
172
+ const stored = persister(ev, Date.now());
173
+ if (stored === null)
174
+ return;
175
+ ctx.conversationStore.appendMessage(conversationId, stored);
176
+ }
177
+ function isTerminalEvent(ev) {
178
+ return ev.type === "done" || ev.type === "error";
179
+ }
180
+ function dispatchTurnEvent(ctx, conversationId, ev) {
181
+ const wireEvent = mapRunnerEvent(ev, conversationId);
182
+ if (wireEvent === null)
183
+ return;
184
+ if (isTerminalEvent(ev)) {
185
+ ctx.liveTurns.end(conversationId);
186
+ }
187
+ else {
188
+ ctx.liveTurns.append(conversationId, wireEvent);
189
+ }
190
+ ctx.iframeSocketRegistry.send(conversationId, wireEvent);
191
+ }
192
+ function persistUserMessageContent(ctx, conversationId, content) {
193
+ ctx.conversationStore.appendMessage(conversationId, {
194
+ role: "user",
195
+ content,
196
+ timestampMs: Date.now(),
197
+ });
198
+ }
199
+ function toStoredAttachmentMeta(attachments) {
200
+ if (attachments.length === 0)
201
+ return undefined;
202
+ return attachments.map((a) => ({
203
+ name: a.name,
204
+ mimeType: a.mimeType,
205
+ size: a.size,
206
+ }));
207
+ }
208
+ function persistUserMessage(ctx, msg) {
209
+ ctx.conversationStore.appendMessage(msg.conversationId, {
210
+ role: "user",
211
+ content: msg.content,
212
+ attachments: toStoredAttachmentMeta(msg.attachments ?? []),
213
+ timestampMs: Date.now(),
214
+ });
215
+ }
216
+ function persistPermissionDecision(ctx, conversationId, toolName, decision) {
217
+ ctx.conversationStore.appendMessage(conversationId, {
218
+ role: "permission",
219
+ content: "",
220
+ toolName,
221
+ decision: decision === PERMISSION_DECISIONS.DENY ? "denied" : "approved",
222
+ timestampMs: Date.now(),
223
+ });
224
+ }
225
+ function recordEditIfAny(ctx, conversationId, ev) {
226
+ if (ev.type !== "tool_use")
227
+ return;
228
+ if (!EDIT_TOOL_NAMES.has(ev.toolName))
229
+ return;
230
+ const filePath = extractEditedFilePath(ev.args);
231
+ if (filePath !== undefined)
232
+ ctx.editTracker.record(conversationId, filePath);
233
+ }
234
+ async function streamTurn(ctx, conversationId, content, attachments) {
235
+ ctx.liveTurns.begin(conversationId);
236
+ try {
237
+ const stream = ctx.runner.start(content, {
238
+ conversationId,
239
+ hostProjectRoot: ctx.hostProjectRoot,
240
+ getCurrentPage: () => ctx.hostState.getCurrentPage(),
241
+ attachments,
242
+ permissionBus: ctx.permissionBus,
243
+ mcpServer: ctx.createMcpServer(conversationId),
244
+ onPermissionDecision: (toolName, decision) => persistPermissionDecision(ctx, conversationId, toolName, decision),
245
+ });
246
+ for await (const ev of stream) {
247
+ recordEditIfAny(ctx, conversationId, ev);
248
+ persistRunnerEvent(ctx, conversationId, ev);
249
+ dispatchTurnEvent(ctx, conversationId, ev);
250
+ }
251
+ }
252
+ finally {
253
+ ctx.liveTurns.end(conversationId);
254
+ }
255
+ }
256
+ async function runSafetyNet(ctx, conversationId, sinceMs, attempt) {
257
+ if (attempt >= MAX_AUTO_HEAL_ATTEMPTS)
258
+ return;
259
+ const editedFiles = ctx.editTracker.getEditedFiles(conversationId);
260
+ if (editedFiles.length === 0)
261
+ return;
262
+ const healPrompt = await collectBuildIssues({
263
+ editedFiles,
264
+ knownRoots: [ctx.hostProjectRoot, ...ctx.moduleRoots],
265
+ logsClient: ctx.logsClient,
266
+ sinceMs,
267
+ });
268
+ if (healPrompt === null)
269
+ return;
270
+ ctx.editTracker.clear(conversationId);
271
+ const nextSinceMs = Date.now();
272
+ persistUserMessageContent(ctx, conversationId, healPrompt);
273
+ await streamTurn(ctx, conversationId, healPrompt);
274
+ await runSafetyNet(ctx, conversationId, nextSinceMs, attempt + 1);
275
+ }
276
+ async function runTurnWithHealing(ctx, conversationId, content, attachments) {
277
+ ctx.editTracker.clear(conversationId);
278
+ const sinceMs = Date.now();
279
+ try {
280
+ await streamTurn(ctx, conversationId, content, attachments);
281
+ }
282
+ catch (err) {
283
+ const message = err instanceof Error ? err.message : String(err);
284
+ console.warn(`${WS_LOG_PREFIX} turn setup failed: ${message}`);
285
+ ctx.iframeSocketRegistry.send(conversationId, {
286
+ type: EVENT_TYPES.RUN_ERROR,
287
+ conversationId,
288
+ error: message,
289
+ });
290
+ return;
291
+ }
292
+ try {
293
+ await runSafetyNet(ctx, conversationId, sinceMs, 0);
294
+ }
295
+ catch (err) {
296
+ const message = err instanceof Error ? err.message : String(err);
297
+ console.warn(`${WS_LOG_PREFIX} safety net failed: ${message}`);
298
+ }
299
+ }
300
+ function persistQueuedUserMessage(ctx, conversationId, item) {
301
+ ctx.conversationStore.appendMessage(conversationId, {
302
+ role: "user",
303
+ content: item.content,
304
+ attachments: toStoredAttachmentMeta(item.attachments ?? []),
305
+ timestampMs: Date.now(),
306
+ });
307
+ }
308
+ function sendUserEcho(ctx, conversationId, item) {
309
+ const event = {
310
+ type: EVENT_TYPES.USER_MESSAGE_ECHO,
311
+ conversationId,
312
+ content: item.content,
313
+ attachments: toStoredAttachmentMeta(item.attachments ?? []),
314
+ timestampMs: Date.now(),
315
+ };
316
+ ctx.iframeSocketRegistry.send(conversationId, event);
317
+ }
318
+ function broadcastQueueState(ctx, conversationId) {
319
+ const event = {
320
+ type: EVENT_TYPES.QUEUE_STATE,
321
+ conversationId,
322
+ items: ctx.pendingQueue.get(conversationId),
323
+ };
324
+ ctx.iframeSocketRegistry.send(conversationId, event);
325
+ }
326
+ async function drainConversation(ctx, conversationId) {
327
+ for (;;) {
328
+ const next = ctx.pendingQueue.shift(conversationId);
329
+ if (next === null)
330
+ return;
331
+ try {
332
+ broadcastQueueState(ctx, conversationId);
333
+ persistQueuedUserMessage(ctx, conversationId, next);
334
+ sendUserEcho(ctx, conversationId, next);
335
+ await runTurnWithHealing(ctx, conversationId, next.content, next.attachments);
336
+ }
337
+ catch (err) {
338
+ const message = err instanceof Error ? err.message : String(err);
339
+ console.warn(`${WS_LOG_PREFIX} queued turn failed: ${message}`);
340
+ }
341
+ }
342
+ }
343
+ async function ensureDraining(ctx, conversationId) {
344
+ if (!ctx.pendingQueue.tryStartDrain(conversationId))
345
+ return;
346
+ try {
347
+ await drainConversation(ctx, conversationId);
348
+ }
349
+ catch (err) {
350
+ const message = err instanceof Error ? err.message : String(err);
351
+ console.warn(`${WS_LOG_PREFIX} drain failed: ${message}`);
352
+ }
353
+ finally {
354
+ ctx.pendingQueue.endDrain(conversationId);
355
+ }
356
+ }
357
+ function enqueueUserMessage(ctx, msg) {
358
+ const queued = {
359
+ id: randomUUID(),
360
+ content: msg.content,
361
+ };
362
+ if (msg.attachments && msg.attachments.length > 0) {
363
+ queued.attachments = msg.attachments;
364
+ }
365
+ ctx.pendingQueue.enqueue(msg.conversationId, queued);
366
+ broadcastQueueState(ctx, msg.conversationId);
367
+ }
368
+ async function runUserMessage(_socket, msg, ctx) {
369
+ if (msg.type !== MESSAGE_TYPES.USER_MESSAGE)
370
+ return;
371
+ if (!ctx.pendingQueue.tryStartDrain(msg.conversationId)) {
372
+ enqueueUserMessage(ctx, msg);
373
+ void ensureDraining(ctx, msg.conversationId);
374
+ return;
375
+ }
376
+ try {
377
+ persistUserMessage(ctx, msg);
378
+ await runTurnWithHealing(ctx, msg.conversationId, msg.content, msg.attachments);
379
+ await drainConversation(ctx, msg.conversationId);
380
+ }
381
+ catch (err) {
382
+ const message = err instanceof Error ? err.message : String(err);
383
+ console.warn(`${WS_LOG_PREFIX} run failed: ${message}`);
384
+ }
385
+ finally {
386
+ ctx.pendingQueue.endDrain(msg.conversationId);
387
+ }
388
+ }
389
+ function handleQueueEnqueue(_socket, msg, ctx) {
390
+ if (msg.type !== MESSAGE_TYPES.QUEUE_ENQUEUE)
391
+ return;
392
+ ctx.pendingQueue.enqueue(msg.conversationId, msg.item);
393
+ broadcastQueueState(ctx, msg.conversationId);
394
+ void ensureDraining(ctx, msg.conversationId);
395
+ }
396
+ function handleQueueCancel(_socket, msg, ctx) {
397
+ if (msg.type !== MESSAGE_TYPES.QUEUE_CANCEL)
398
+ return;
399
+ ctx.pendingQueue.cancel(msg.conversationId, msg.id);
400
+ broadcastQueueState(ctx, msg.conversationId);
401
+ }
402
+ function handlePermissionResponse(_socket, msg, ctx) {
403
+ if (msg.type !== MESSAGE_TYPES.PERMISSION_RESPONSE)
404
+ return;
405
+ ctx.permissionBus.resolvePermission(msg.requestId, msg.decision);
406
+ }
407
+ function handleQuestionResponse(_socket, msg, ctx) {
408
+ if (msg.type !== MESSAGE_TYPES.QUESTION_RESPONSE)
409
+ return;
410
+ ctx.questionBus.resolveQuestion(msg.requestId, msg.answers);
411
+ }
412
+ function handleInterruptTurn(_socket, msg, ctx) {
413
+ if (msg.type !== MESSAGE_TYPES.INTERRUPT_TURN)
414
+ return;
415
+ for (const pending of ctx.permissionBus.getPendingForConversation(msg.conversationId)) {
416
+ ctx.permissionBus.resolvePermission(pending.requestId, PERMISSION_DECISIONS.DENY);
417
+ }
418
+ ctx.questionBus.cancelConversation(msg.conversationId);
419
+ ctx.runner.interruptSession(msg.conversationId);
420
+ }
421
+ function handleHostStateUpdate(_socket, msg, ctx) {
422
+ if (msg.type !== MESSAGE_TYPES.HOST_STATE_UPDATE)
423
+ return;
424
+ ctx.hostState.setCurrentPage(msg.currentPage);
425
+ }
426
+ function handleHostNavigationComplete(_socket, msg, ctx) {
427
+ if (msg.type !== MESSAGE_TYPES.HOST_NAVIGATION_COMPLETE)
428
+ return;
429
+ ctx.navigationCompleter.complete(msg.path);
430
+ }
431
+ function buildConversationListEvent(ctx) {
432
+ return {
433
+ type: EVENT_TYPES.CONVERSATION_LIST,
434
+ conversations: ctx.conversationStore.list(),
435
+ };
436
+ }
437
+ function sendConversationList(socket, ctx) {
438
+ socket.send(JSON.stringify(buildConversationListEvent(ctx)));
439
+ }
440
+ function handleListConversations(socket, msg, ctx) {
441
+ if (msg.type !== MESSAGE_TYPES.LIST_CONVERSATIONS)
442
+ return;
443
+ sendConversationList(socket, ctx);
444
+ }
445
+ function handleDeleteConversation(socket, msg, ctx) {
446
+ if (msg.type !== MESSAGE_TYPES.DELETE_CONVERSATION)
447
+ return;
448
+ ctx.conversationStore.delete(msg.conversationId);
449
+ ctx.permissionBus.forgetConversation(msg.conversationId);
450
+ ctx.questionBus.cancelConversation(msg.conversationId);
451
+ ctx.editTracker.clear(msg.conversationId);
452
+ ctx.runner.disposeSession(msg.conversationId);
453
+ ctx.liveTurns.end(msg.conversationId);
454
+ ctx.pendingQueue.clear(msg.conversationId);
455
+ sendConversationList(socket, ctx);
456
+ }
457
+ export function applySettings(deps, next) {
458
+ deps.settingsStore.set(next);
459
+ deps.permissionBus.setAutoApprove(next.mode === "auto");
460
+ deps.runner.applySettings(next);
461
+ deps.iframeSocketRegistry.broadcast({
462
+ type: EVENT_TYPES.SETTINGS_UPDATE,
463
+ settings: next,
464
+ builderAvailable: getBuilderAvailable(),
465
+ });
466
+ }
467
+ function handleSetSettings(_socket, msg, ctx) {
468
+ if (msg.type !== MESSAGE_TYPES.SET_SETTINGS)
469
+ return;
470
+ applySettings(ctx, {
471
+ mode: msg.mode,
472
+ thinking: msg.thinking,
473
+ generationMode: msg.generationMode,
474
+ allowLocalSkills: msg.allowLocalSkills,
475
+ });
476
+ }
477
+ function handleRequestHostNavigate(_socket, msg, ctx) {
478
+ if (msg.type !== MESSAGE_TYPES.REQUEST_HOST_NAVIGATE)
479
+ return;
480
+ ctx.hostSocketRegistry.send({
481
+ type: EVENT_TYPES.HOST_COMMAND_NAVIGATE,
482
+ path: msg.path,
483
+ });
484
+ }
485
+ const MESSAGE_HANDLERS = {
486
+ [MESSAGE_TYPES.HELLO]: handleHello,
487
+ [MESSAGE_TYPES.ECHO]: handleEcho,
488
+ [MESSAGE_TYPES.USER_MESSAGE]: runUserMessage,
489
+ [MESSAGE_TYPES.PERMISSION_RESPONSE]: handlePermissionResponse,
490
+ [MESSAGE_TYPES.QUESTION_RESPONSE]: handleQuestionResponse,
491
+ [MESSAGE_TYPES.INTERRUPT_TURN]: handleInterruptTurn,
492
+ [MESSAGE_TYPES.HOST_STATE_UPDATE]: handleHostStateUpdate,
493
+ [MESSAGE_TYPES.HOST_NAVIGATION_COMPLETE]: handleHostNavigationComplete,
494
+ [MESSAGE_TYPES.LIST_CONVERSATIONS]: handleListConversations,
495
+ [MESSAGE_TYPES.DELETE_CONVERSATION]: handleDeleteConversation,
496
+ [MESSAGE_TYPES.SET_SETTINGS]: handleSetSettings,
497
+ [MESSAGE_TYPES.REQUEST_HOST_NAVIGATE]: handleRequestHostNavigate,
498
+ [MESSAGE_TYPES.QUEUE_ENQUEUE]: handleQueueEnqueue,
499
+ [MESSAGE_TYPES.QUEUE_CANCEL]: handleQueueCancel,
500
+ };
501
+ function parseMessage(raw) {
502
+ try {
503
+ const parsed = JSON.parse(raw);
504
+ const result = AnyClientMessage.safeParse(parsed);
505
+ if (!result.success)
506
+ return null;
507
+ return result.data;
508
+ }
509
+ catch {
510
+ return null;
511
+ }
512
+ }
513
+ export function dispatchMessage(socket, raw, ctx) {
514
+ const msg = parseMessage(raw);
515
+ if (msg === null) {
516
+ console.warn(`${WS_LOG_PREFIX} invalid message on ${ctx.path}`);
517
+ return;
518
+ }
519
+ const handler = MESSAGE_HANDLERS[msg.type];
520
+ if (handler === undefined)
521
+ return;
522
+ void handler(socket, msg, ctx);
523
+ }
524
+ function buildPermissionRequestEvent(event) {
525
+ return {
526
+ type: EVENT_TYPES.PERMISSION_REQUEST,
527
+ conversationId: event.conversationId,
528
+ requestId: event.requestId,
529
+ toolName: event.toolName,
530
+ args: event.args,
531
+ summary: buildToolSummary(event.toolName, event.args),
532
+ };
533
+ }
534
+ function sendPermissionRequest(socket, event) {
535
+ const wireEvent = buildPermissionRequestEvent(event);
536
+ socket.send(JSON.stringify(wireEvent));
537
+ }
538
+ function buildAskQuestionEvent(event) {
539
+ return {
540
+ type: EVENT_TYPES.ASK_QUESTION,
541
+ conversationId: event.conversationId,
542
+ requestId: event.requestId,
543
+ questions: event.questions,
544
+ };
545
+ }
546
+ function sendQuestionRequest(socket, event) {
547
+ const wireEvent = buildAskQuestionEvent(event);
548
+ socket.send(JSON.stringify(wireEvent));
549
+ }
550
+ export function buildConnectionContext(_socket, path, config) {
551
+ return {
552
+ path,
553
+ hostProjectRoot: config.hostProjectRoot,
554
+ runner: config.runner,
555
+ conversationStore: config.conversationStore,
556
+ permissionBus: config.permissionBus,
557
+ questionBus: config.questionBus,
558
+ createMcpServer: config.createMcpServer,
559
+ editTracker: config.editTracker,
560
+ logsClient: config.logsClient,
561
+ moduleRoots: config.moduleRoots,
562
+ hostState: config.hostState,
563
+ hostSocketRegistry: config.hostSocketRegistry,
564
+ iframeSocketRegistry: config.iframeSocketRegistry,
565
+ navigationCompleter: config.navigationCompleter,
566
+ liveTurns: config.liveTurns,
567
+ pendingQueue: config.pendingQueue,
568
+ settingsStore: config.settingsStore,
569
+ };
570
+ }
571
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/server/routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type TypecheckResult } from "../agent/typecheck.js";
2
+ import type { LogsClient } from "../logs/logs-client.js";
3
+ import type { BufferedLog } from "../logs/types.js";
4
+ export declare function uniqueEditedRoots(editedFiles: readonly string[], knownRoots: readonly string[]): string[];
5
+ export declare function summarizeReloadErrors(logs: readonly BufferedLog[]): string | null;
6
+ export interface CollectIssuesDeps {
7
+ editedFiles: string[];
8
+ knownRoots: string[];
9
+ logsClient: LogsClient;
10
+ sinceMs: number;
11
+ runTypecheckFn?: (targetRoot: string) => Promise<TypecheckResult>;
12
+ delay?: (ms: number) => Promise<void>;
13
+ settleMs?: number;
14
+ logger?: Pick<Console, "warn">;
15
+ }
16
+ export declare function collectBuildIssues(deps: CollectIssuesDeps): Promise<string | null>;