@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,177 @@
1
+ // Theme bridge (host → chatbox iframe). The host DMS is the source of truth for
2
+ // the active Nuxt UI primary palette and the light/dark mode; the chatbox iframe
3
+ // is a separate document (different origin) so it cannot inherit them through
4
+ // CSS — we forward them explicitly here.
5
+ //
6
+ // Protocol:
7
+ // iframe → host : { type: "dms-ai:ready" } (chatbox announces mount)
8
+ // host → iframe : { type: "dms-ai:theme", mode, primary }
9
+ // See sidecar/chatbox/src/composables/useHostTheme.ts for the receiver.
10
+
11
+ const THEME_MESSAGE_TYPE = 'dms-ai:theme'
12
+ const READY_MESSAGE_TYPE = 'dms-ai:ready'
13
+
14
+ const PRIMARY_STEPS = [
15
+ '50',
16
+ '100',
17
+ '200',
18
+ '300',
19
+ '400',
20
+ '500',
21
+ '600',
22
+ '700',
23
+ '800',
24
+ '900',
25
+ '950',
26
+ ] as const
27
+
28
+ // Nuxt UI semantic surface/text/border tokens. The host DMS may override these
29
+ // with bespoke values (e.g. the DMS dark canvas is #0a0b12, not the default
30
+ // neutral-900), so the chatbox can't just rely on the default neutral palette —
31
+ // it has to mirror the host's resolved values for a faithful match in both modes.
32
+ const SEMANTIC_TOKENS = [
33
+ '--ui-bg',
34
+ '--ui-bg-muted',
35
+ '--ui-bg-elevated',
36
+ '--ui-bg-accented',
37
+ '--ui-bg-inverted',
38
+ '--ui-text-dimmed',
39
+ '--ui-text-muted',
40
+ '--ui-text-toned',
41
+ '--ui-text',
42
+ '--ui-text-highlighted',
43
+ '--ui-text-inverted',
44
+ '--ui-border',
45
+ '--ui-border-muted',
46
+ '--ui-border-accented',
47
+ '--ui-border-inverted',
48
+ ] as const
49
+
50
+ export interface HostTheme {
51
+ mode: 'dark' | 'light'
52
+ primary: Record<string, string>
53
+ tokens: Record<string, string>
54
+ }
55
+
56
+ export function readHostMode(): 'dark' | 'light' {
57
+ return document.documentElement.classList.contains('dark') ? 'dark' : 'light'
58
+ }
59
+
60
+ interface ResolvedColors {
61
+ primary: Record<string, string>
62
+ tokens: Record<string, string>
63
+ }
64
+
65
+ // Resolve CSS custom properties to concrete color strings. They are authored as
66
+ // `var(--color-…)` chains, so we read them through a throwaway probe whose
67
+ // computed `color` forces full var() resolution (getComputedStyle on the custom
68
+ // property itself may return the unresolved `var(...)` token in some browsers).
69
+ // A variable the host does not define is skipped entirely: `color: var(--undef)`
70
+ // falls back to the *inherited* color, so the probe would otherwise report a
71
+ // bogus concrete value (e.g. black) instead of "missing" — leaving downstream
72
+ // guards/fallbacks ineffective.
73
+ function readResolvedColors(): ResolvedColors {
74
+ const rootStyle = getComputedStyle(document.documentElement)
75
+ const probe = document.createElement('span')
76
+ probe.style.cssText =
77
+ 'position:absolute;width:0;height:0;overflow:hidden;visibility:hidden;pointer-events:none;'
78
+ document.body.appendChild(probe)
79
+ const probeStyle = getComputedStyle(probe)
80
+ const resolve = (name: string): string => {
81
+ if (rootStyle.getPropertyValue(name).trim() === '') return ''
82
+ probe.style.color = `var(${name})`
83
+ return probeStyle.color
84
+ }
85
+ const primary: Record<string, string> = {}
86
+ for (const step of PRIMARY_STEPS) {
87
+ const value = resolve(`--ui-color-primary-${step}`)
88
+ if (value !== '') primary[step] = value
89
+ }
90
+ const tokens: Record<string, string> = {}
91
+ for (const name of SEMANTIC_TOKENS) {
92
+ const value = resolve(name)
93
+ if (value !== '') tokens[name] = value
94
+ }
95
+ probe.remove()
96
+ return { primary, tokens }
97
+ }
98
+
99
+ export function readHostTheme(): HostTheme {
100
+ const { primary, tokens } = readResolvedColors()
101
+ return { mode: readHostMode(), primary, tokens }
102
+ }
103
+
104
+ function themeSignature(theme: HostTheme): string {
105
+ const primary = PRIMARY_STEPS.map((s) => theme.primary[s]).join(',')
106
+ const tokens = SEMANTIC_TOKENS.map((t) => theme.tokens[t]).join(',')
107
+ return `${theme.mode}|${primary}|${tokens}`
108
+ }
109
+
110
+ interface MessageData {
111
+ type?: unknown
112
+ }
113
+
114
+ type ThemePush = (force: boolean) => void
115
+
116
+ // Only answer the handshake from our own iframe, never an arbitrary frame.
117
+ function answerReadyHandshake(
118
+ iframe: HTMLIFrameElement,
119
+ post: ThemePush,
120
+ ): void {
121
+ globalThis.addEventListener('message', (event: MessageEvent) => {
122
+ const type = (event.data as MessageData)?.type
123
+ if (type === READY_MESSAGE_TYPE && event.source === iframe.contentWindow) {
124
+ post(true)
125
+ }
126
+ })
127
+ }
128
+
129
+ // @nuxtjs/color-mode toggles `.dark` on <html>; mirror those changes live.
130
+ function watchHostModeChanges(post: ThemePush): void {
131
+ const observer = new MutationObserver(() => post(false))
132
+ observer.observe(document.documentElement, {
133
+ attributes: true,
134
+ attributeFilter: ['class'],
135
+ })
136
+ }
137
+
138
+ // Wire the bridge to a chatbox iframe: reply to its `ready` handshake and
139
+ // re-push the theme whenever the host flips light/dark. Primary/token swaps
140
+ // alone are not mirrored live — they only reach the iframe on the forced
141
+ // pushes (`ready` handshake and iframe `load`).
142
+ // `onTheme` fires on every (re)push so the caller can keep host-side chrome
143
+ // (the overlay backdrop / iframe color-scheme) in sync with live mode changes —
144
+ // without it, an OS-driven dark switch leaves the panel edge on its old shade
145
+ // until the page is reloaded.
146
+ export function installThemeBridge(
147
+ iframe: HTMLIFrameElement,
148
+ onTheme?: (theme: HostTheme) => void,
149
+ ): void {
150
+ let lastMode: 'dark' | 'light' | '' = ''
151
+ let lastSignature = ''
152
+
153
+ const post: ThemePush = (force) => {
154
+ // The observer fires on any <html> class mutation (scroll locks, modal or
155
+ // route classes…). Gate the expensive probe resolution behind a cheap mode
156
+ // check: only a light/dark flip changes what this bridge mirrors live, and
157
+ // primary/token swaps are re-pushed on the `force` paths (ready/load).
158
+ const mode = readHostMode()
159
+ if (!force && mode === lastMode) return
160
+ lastMode = mode
161
+ const theme = readHostTheme()
162
+ const signature = themeSignature(theme)
163
+ if (!force && signature === lastSignature) return
164
+ lastSignature = signature
165
+ onTheme?.(theme)
166
+ iframe.contentWindow?.postMessage(
167
+ { type: THEME_MESSAGE_TYPE, ...theme },
168
+ '*',
169
+ )
170
+ }
171
+
172
+ answerReadyHandshake(iframe, post)
173
+ watchHostModeChanges(post)
174
+ // Belt and suspenders for the case where the iframe loaded before its
175
+ // message listener was ready and the `ready` handshake was missed.
176
+ iframe.addEventListener('load', () => post(true))
177
+ }
@@ -0,0 +1,196 @@
1
+ import { createBackoff, nextDelay, resetBackoff } from './backoff'
2
+ import {
3
+ HELLO_MESSAGE_TYPE,
4
+ HOST_ROLE,
5
+ LOG_PREFIX,
6
+ PAGE_PROTOCOL_SECURE,
7
+ WS_HOST_PATH,
8
+ WS_PROTOCOL_INSECURE,
9
+ WS_PROTOCOL_SECURE,
10
+ WS_RECONNECT_DELAYS_MS,
11
+ WS_STATUS_CONNECTED,
12
+ WS_STATUS_CONNECTING,
13
+ WS_STATUS_DISCONNECTED,
14
+ WS_STATUS_RECONNECTING,
15
+ } from './constants'
16
+
17
+ export type ConnectionStatus =
18
+ | typeof WS_STATUS_CONNECTING
19
+ | typeof WS_STATUS_CONNECTED
20
+ | typeof WS_STATUS_DISCONNECTED
21
+ | typeof WS_STATUS_RECONNECTING
22
+
23
+ interface CreateHostWsClientOptions {
24
+ sidecarHost: string
25
+ // The sidecar's port is read fresh on every (re)connect: an idle-exit + respawn
26
+ // lands on a new random port, so a fixed port could never reconnect. Returns
27
+ // null while no port is known yet, in which case connecting is deferred.
28
+ getPort: () => number | null
29
+ getClientToken: () => string | null
30
+ onMessage?: (raw: unknown) => void
31
+ onStatusChange?: (status: ConnectionStatus) => void
32
+ }
33
+
34
+ interface HostWsClient {
35
+ close: () => void
36
+ isConnected: () => boolean
37
+ send: (msg: unknown) => void
38
+ getStatus: () => ConnectionStatus
39
+ // Drop any pending backoff and reconnect immediately against the current port.
40
+ // Called when the status controller has relearned a fresh port.
41
+ reconnectNow: () => void
42
+ }
43
+
44
+ export function buildWsUrl(host: string, port: number): string {
45
+ const isSecure = window.location.protocol === PAGE_PROTOCOL_SECURE
46
+ const scheme = isSecure ? WS_PROTOCOL_SECURE : WS_PROTOCOL_INSECURE
47
+ return `${scheme}//${host}:${port}${WS_HOST_PATH}`
48
+ }
49
+
50
+ interface ConnectHandlers {
51
+ onOpen: (socket: WebSocket) => void
52
+ onClose: () => void
53
+ onError: (event: Event) => void
54
+ onMessage: (raw: unknown) => void
55
+ }
56
+
57
+ export function connect(
58
+ url: string,
59
+ handlers: ConnectHandlers,
60
+ token: string,
61
+ ): WebSocket {
62
+ const socket = new WebSocket(url, `dms-ai.${token}`)
63
+ socket.addEventListener('open', () => handlers.onOpen(socket))
64
+ socket.addEventListener('close', () => handlers.onClose())
65
+ socket.addEventListener('error', (event) => handlers.onError(event))
66
+ socket.addEventListener('message', (event) => handlers.onMessage(event.data))
67
+ return socket
68
+ }
69
+
70
+ function sendHello(socket: WebSocket): void {
71
+ const payload = { type: HELLO_MESSAGE_TYPE, role: HOST_ROLE }
72
+ socket.send(JSON.stringify(payload))
73
+ }
74
+
75
+ function logError(event: Event): void {
76
+ console.error(`${LOG_PREFIX} ws error`, event)
77
+ }
78
+
79
+ function buildOnMessage(
80
+ options: CreateHostWsClientOptions,
81
+ ): (raw: unknown) => void {
82
+ const handler = options.onMessage
83
+ if (handler === undefined) return () => {}
84
+ return handler
85
+ }
86
+
87
+ interface StatusController {
88
+ get: () => ConnectionStatus
89
+ set: (next: ConnectionStatus) => void
90
+ }
91
+
92
+ function createStatusController(
93
+ notify: (status: ConnectionStatus) => void,
94
+ ): StatusController {
95
+ let current: ConnectionStatus = WS_STATUS_CONNECTING
96
+ return {
97
+ get: () => current,
98
+ set: (next) => {
99
+ if (current === next) return
100
+ current = next
101
+ notify(next)
102
+ },
103
+ }
104
+ }
105
+
106
+ function buildStatusNotifier(
107
+ options: CreateHostWsClientOptions,
108
+ ): (status: ConnectionStatus) => void {
109
+ const handler = options.onStatusChange
110
+ if (handler === undefined) return () => {}
111
+ return handler
112
+ }
113
+
114
+ export function createHostWsClient(
115
+ options: CreateHostWsClientOptions,
116
+ ): HostWsClient {
117
+ const onMessage = buildOnMessage(options)
118
+ const status = createStatusController(buildStatusNotifier(options))
119
+ const backoff = createBackoff()
120
+ let socket: WebSocket | null = null
121
+ let retryTimer: ReturnType<typeof setTimeout> | null = null
122
+ let isIntentionallyClosed = false
123
+ const open = () => {
124
+ if (isIntentionallyClosed) return
125
+ const port = options.getPort()
126
+ const token = options.getClientToken()
127
+ // No port yet (sidecar reviving): stay in reconnecting and wait — the
128
+ // controller calls reconnectNow() once it relearns one.
129
+ if (port === null || !token) {
130
+ status.set(WS_STATUS_RECONNECTING)
131
+ scheduleRetry()
132
+ return
133
+ }
134
+ socket = connect(
135
+ buildWsUrl(options.sidecarHost, port),
136
+ {
137
+ onOpen: (s) => {
138
+ resetBackoff(backoff)
139
+ status.set(WS_STATUS_CONNECTED)
140
+ sendHello(s)
141
+ },
142
+ onClose: () => handleClose(),
143
+ onError: logError,
144
+ onMessage,
145
+ },
146
+ token,
147
+ )
148
+ }
149
+ const scheduleRetry = () => {
150
+ if (retryTimer !== null) return
151
+ const delay = nextDelay(backoff, WS_RECONNECT_DELAYS_MS)
152
+ retryTimer = setTimeout(() => {
153
+ retryTimer = null
154
+ open()
155
+ }, delay)
156
+ }
157
+ const handleClose = () => {
158
+ socket = null
159
+ if (isIntentionallyClosed) {
160
+ status.set(WS_STATUS_DISCONNECTED)
161
+ return
162
+ }
163
+ status.set(WS_STATUS_RECONNECTING)
164
+ scheduleRetry()
165
+ }
166
+ status.set(WS_STATUS_CONNECTING)
167
+ open()
168
+ return {
169
+ close: () => {
170
+ isIntentionallyClosed = true
171
+ if (retryTimer !== null) {
172
+ clearTimeout(retryTimer)
173
+ retryTimer = null
174
+ }
175
+ socket?.close()
176
+ },
177
+ isConnected: () => socket?.readyState === WebSocket.OPEN,
178
+ send: (msg: unknown) => socket?.send(JSON.stringify(msg)),
179
+ getStatus: () => status.get(),
180
+ reconnectNow: () => {
181
+ if (isIntentionallyClosed) return
182
+ if (retryTimer !== null) {
183
+ clearTimeout(retryTimer)
184
+ retryTimer = null
185
+ }
186
+ resetBackoff(backoff)
187
+ // A live socket on the old port is stale after a port change; drop it and
188
+ // reopen. If it was already open on the right port, onClose reopens too.
189
+ if (socket !== null) {
190
+ socket.close()
191
+ return
192
+ }
193
+ open()
194
+ },
195
+ }
196
+ }
@@ -0,0 +1,26 @@
1
+ import { defineAsyncComponent, type Component } from 'vue'
2
+ import type { DmsFrontendModule } from '#dms-inertia/frontend-module'
3
+ import aiPlugin from './app/plugins/ai.client'
4
+
5
+ interface VueModule {
6
+ default: Component
7
+ }
8
+
9
+ const components = import.meta.glob<VueModule>('./app/components/**/*.vue')
10
+
11
+ const frontendModule: DmsFrontendModule = {
12
+ setup(sdk) {
13
+ Object.entries(components)
14
+ .sort(([left], [right]) => left.localeCompare(right))
15
+ .forEach(([path, loader]) => {
16
+ const name = `DmsAi${path
17
+ .split('/')
18
+ .at(-1)!
19
+ .replace(/\.vue$/, '')}`
20
+ sdk.registerComponent(name, defineAsyncComponent(loader))
21
+ })
22
+ sdk.registerPlugin(aiPlugin, { clientOnly: true })
23
+ },
24
+ }
25
+
26
+ export default frontendModule
@@ -0,0 +1,24 @@
1
+ import eslint from '@eslint/js'
2
+ import ts from 'typescript-eslint'
3
+ import vue from 'eslint-plugin-vue'
4
+ import globals from 'globals'
5
+
6
+ export default ts.config(
7
+ { ignores: ['dist/**', 'node_modules/**'] },
8
+ eslint.configs.recommended,
9
+ ...vue.configs['flat/essential'],
10
+ {
11
+ files: ['**/*.{ts,vue}'],
12
+ languageOptions: {
13
+ parserOptions: { parser: ts.parser },
14
+ globals: { ...globals.browser, ...globals.node },
15
+ },
16
+ rules: {
17
+ 'no-undef': 'off',
18
+ 'no-unused-vars': 'off',
19
+ 'no-redeclare': 'off',
20
+ 'vue/multi-word-component-names': 'off',
21
+ },
22
+ },
23
+ { files: ['**/*.ts'], languageOptions: { parser: ts.parser } },
24
+ )
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@antelopejs/dms-ai-frontend-vue",
3
+ "version": "0.0.1",
4
+ "private": true,
5
+ "type": "module",
6
+ "license": "Apache-2.0",
7
+ "packageManager": "pnpm@10.6.5",
8
+ "scripts": {
9
+ "build": "pnpm --dir \"${DMS_FRONTEND_WORKSPACE:?Set DMS_FRONTEND_WORKSPACE to the generated Inertia workspace}\" build",
10
+ "typecheck": "pnpm --dir \"${DMS_FRONTEND_WORKSPACE:?Set DMS_FRONTEND_WORKSPACE to the generated Inertia workspace}\" typecheck",
11
+ "format": "prettier --write .",
12
+ "lint": "eslint .",
13
+ "lint:fix": "eslint . --fix",
14
+ "test": "vitest run --passWithNoTests"
15
+ },
16
+ "dependencies": {
17
+ "@inertiajs/vue3": "^3.7.0",
18
+ "vue": "^3.5.18"
19
+ },
20
+ "devDependencies": {
21
+ "@eslint/js": "^9.0.0",
22
+ "typescript-eslint": "^8.0.0",
23
+ "eslint": "^9.0.0",
24
+ "eslint-plugin-vue": "^10.0.0",
25
+ "globals": "^16.0.0",
26
+ "@vitest/runner": "^4.1.5",
27
+ "jsdom": "^29.1.1",
28
+ "prettier": "^3.5.3",
29
+ "typescript": "^5.8.2",
30
+ "vitest": "^4.1.5",
31
+ "vue-tsc": "^3.1.1"
32
+ }
33
+ }