@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,44 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import {
3
+ createBackoff,
4
+ nextDelay,
5
+ resetBackoff,
6
+ } from '../app/runtime/backoff'
7
+ import { WS_RECONNECT_DELAYS_MS } from '../app/runtime/constants'
8
+
9
+ describe('backoff helper', () => {
10
+ it('returns each schedule entry in order then caps at the last value', () => {
11
+ const state = createBackoff()
12
+ const observed: number[] = []
13
+ for (let i = 0; i < WS_RECONNECT_DELAYS_MS.length + 3; i += 1) {
14
+ observed.push(nextDelay(state, WS_RECONNECT_DELAYS_MS))
15
+ }
16
+ const expected = [
17
+ ...WS_RECONNECT_DELAYS_MS,
18
+ WS_RECONNECT_DELAYS_MS[WS_RECONNECT_DELAYS_MS.length - 1],
19
+ WS_RECONNECT_DELAYS_MS[WS_RECONNECT_DELAYS_MS.length - 1],
20
+ WS_RECONNECT_DELAYS_MS[WS_RECONNECT_DELAYS_MS.length - 1],
21
+ ]
22
+ expect(observed).toEqual(expected)
23
+ })
24
+
25
+ it('resetBackoff returns the schedule to schedule[0]', () => {
26
+ const state = createBackoff()
27
+ nextDelay(state, WS_RECONNECT_DELAYS_MS)
28
+ nextDelay(state, WS_RECONNECT_DELAYS_MS)
29
+ resetBackoff(state)
30
+ expect(nextDelay(state, WS_RECONNECT_DELAYS_MS)).toBe(
31
+ WS_RECONNECT_DELAYS_MS[0],
32
+ )
33
+ })
34
+
35
+ it('uses the configured 30s ceiling on the last delay', () => {
36
+ const state = createBackoff()
37
+ const lastIndex = WS_RECONNECT_DELAYS_MS.length - 1
38
+ for (let i = 0; i < lastIndex; i += 1) {
39
+ nextDelay(state, WS_RECONNECT_DELAYS_MS)
40
+ }
41
+ expect(nextDelay(state, WS_RECONNECT_DELAYS_MS)).toBe(30_000)
42
+ expect(nextDelay(state, WS_RECONNECT_DELAYS_MS)).toBe(30_000)
43
+ })
44
+ })
@@ -0,0 +1,142 @@
1
+ import { describe, expect, it, vi } from 'vitest'
2
+ import {
3
+ createHostCommandDispatcher,
4
+ type DevReloadWaiter,
5
+ } from '../app/runtime/host-commands'
6
+
7
+ function navigateCommand(path: string): string {
8
+ return JSON.stringify({ type: 'host_command_navigate', path })
9
+ }
10
+
11
+ interface ControlledWaiter {
12
+ waiter: DevReloadWaiter
13
+ calls: string[]
14
+ release: (path: string, served?: boolean) => void
15
+ reject: (path: string, err: Error) => void
16
+ }
17
+
18
+ function controlledWaiter(): ControlledWaiter {
19
+ const calls: string[] = []
20
+ const settlers = new Map<
21
+ string,
22
+ { resolve: (served: boolean) => void; reject: (err: Error) => void }
23
+ >()
24
+ return {
25
+ calls,
26
+ release: (path, served = true) => settlers.get(path)?.resolve(served),
27
+ reject: (path, err) => settlers.get(path)?.reject(err),
28
+ waiter: {
29
+ awaitRoute: (path) => {
30
+ calls.push(path)
31
+ return new Promise<boolean>((resolve, reject) => {
32
+ settlers.set(path, { resolve, reject })
33
+ })
34
+ },
35
+ },
36
+ }
37
+ }
38
+
39
+ describe('host command dispatch', () => {
40
+ it('navigates only once the dev reload serves the target route', async () => {
41
+ const push = vi.fn()
42
+ const { waiter, calls, release } = controlledWaiter()
43
+ const dispatch = createHostCommandDispatcher({
44
+ router: { push },
45
+ devReload: waiter,
46
+ })
47
+ dispatch(navigateCommand('/new-page'))
48
+ await vi.waitFor(() => expect(calls).toEqual(['/new-page']))
49
+ expect(push).not.toHaveBeenCalled()
50
+ release('/new-page')
51
+ await vi.waitFor(() =>
52
+ expect(push).toHaveBeenCalledExactlyOnceWith('/new-page'),
53
+ )
54
+ })
55
+
56
+ it('navigates anyway when the route never comes back', async () => {
57
+ const push = vi.fn()
58
+ const dispatch = createHostCommandDispatcher({
59
+ router: { push },
60
+ devReload: { awaitRoute: async () => false },
61
+ })
62
+ dispatch(navigateCommand('/deleted'))
63
+ await vi.waitFor(() =>
64
+ expect(push).toHaveBeenCalledExactlyOnceWith('/deleted'),
65
+ )
66
+ })
67
+
68
+ it('navigates anyway when the dev reload wait rejects', async () => {
69
+ const push = vi.fn()
70
+ const error = new Error('dev reload exploded')
71
+ const { waiter, calls, reject } = controlledWaiter()
72
+ const logged = vi.spyOn(console, 'error').mockImplementation(() => {})
73
+ const dispatch = createHostCommandDispatcher({
74
+ router: { push },
75
+ devReload: waiter,
76
+ })
77
+ dispatch(navigateCommand('/broken-wait'))
78
+ await vi.waitFor(() => expect(calls).toEqual(['/broken-wait']))
79
+ reject('/broken-wait', error)
80
+ await vi.waitFor(() =>
81
+ expect(push).toHaveBeenCalledExactlyOnceWith('/broken-wait'),
82
+ )
83
+ expect(logged).toHaveBeenCalledWith(
84
+ expect.stringContaining('/broken-wait'),
85
+ error,
86
+ )
87
+ logged.mockRestore()
88
+ })
89
+
90
+ it('collapses a burst into a single trip to the newest path', async () => {
91
+ const push = vi.fn()
92
+ const { waiter, calls, release } = controlledWaiter()
93
+ const dispatch = createHostCommandDispatcher({
94
+ router: { push },
95
+ devReload: waiter,
96
+ })
97
+ dispatch(navigateCommand('/stale'))
98
+ dispatch(navigateCommand('/fresh'))
99
+ await vi.waitFor(() => expect(calls).toEqual(['/fresh']))
100
+ release('/fresh')
101
+ await vi.waitFor(() =>
102
+ expect(push).toHaveBeenCalledExactlyOnceWith('/fresh'),
103
+ )
104
+ })
105
+
106
+ it('keeps navigations in order when one arrives mid-wait', async () => {
107
+ const push = vi.fn()
108
+ const { waiter, calls, release } = controlledWaiter()
109
+ const dispatch = createHostCommandDispatcher({
110
+ router: { push },
111
+ devReload: waiter,
112
+ })
113
+ dispatch(navigateCommand('/first'))
114
+ await vi.waitFor(() => expect(calls).toEqual(['/first']))
115
+ dispatch(navigateCommand('/second'))
116
+ // The second command must not overtake the first while it is still waiting.
117
+ expect(calls).toEqual(['/first'])
118
+ release('/first')
119
+ await vi.waitFor(() => expect(calls).toEqual(['/first', '/second']))
120
+ expect(push.mock.calls.flat()).toEqual(['/first'])
121
+ release('/second')
122
+ await vi.waitFor(() =>
123
+ expect(push.mock.calls.flat()).toEqual(['/first', '/second']),
124
+ )
125
+ })
126
+
127
+ it('ignores malformed payloads and unknown command types', async () => {
128
+ const push = vi.fn()
129
+ const awaitRoute = vi.fn(async () => true)
130
+ const dispatch = createHostCommandDispatcher({
131
+ router: { push },
132
+ devReload: { awaitRoute },
133
+ })
134
+ const warn = vi.spyOn(console, 'warn').mockImplementation(() => {})
135
+ dispatch('not json')
136
+ dispatch(JSON.stringify({ type: 'host_command_unknown' }))
137
+ expect(push).not.toHaveBeenCalled()
138
+ expect(awaitRoute).not.toHaveBeenCalled()
139
+ expect(warn).toHaveBeenCalledOnce()
140
+ warn.mockRestore()
141
+ })
142
+ })
@@ -0,0 +1,45 @@
1
+ import { describe, expect, it, vi } from 'vitest'
2
+ import { installCurrentPageTracker } from '../app/runtime/current-page'
3
+ import { installNavigationCompleteEmitter } from '../app/runtime/navigation-complete'
4
+
5
+ function navigate(url: string): void {
6
+ document.dispatchEvent(
7
+ new CustomEvent('inertia:navigate', {
8
+ detail: { page: { url } },
9
+ }),
10
+ )
11
+ }
12
+
13
+ describe('Inertia host navigation', () => {
14
+ it('reports the initial pathname and completed visits, then unsubscribes', () => {
15
+ window.history.replaceState({}, '', '/initial?tab=one#section')
16
+ const send = vi.fn()
17
+ const stop = installCurrentPageTracker({ send })
18
+ expect(send).toHaveBeenLastCalledWith({
19
+ type: 'host_state_update',
20
+ currentPage: { path: '/initial' },
21
+ })
22
+ navigate('/other/deep?tab=two#anchor')
23
+ expect(send).toHaveBeenLastCalledWith({
24
+ type: 'host_state_update',
25
+ currentPage: { path: '/other/deep' },
26
+ })
27
+ stop()
28
+ navigate('/ignored')
29
+ expect(send).toHaveBeenCalledTimes(2)
30
+ })
31
+
32
+ it('emits completion only after navigation and removes its event listener', () => {
33
+ const send = vi.fn()
34
+ const stop = installNavigationCompleteEmitter({ send })
35
+ expect(send).not.toHaveBeenCalled()
36
+ navigate('https://example.test/finished?view=graph#node')
37
+ expect(send).toHaveBeenCalledExactlyOnceWith({
38
+ type: 'host_navigation_complete',
39
+ path: '/finished',
40
+ })
41
+ stop()
42
+ navigate('/ignored')
43
+ expect(send).toHaveBeenCalledTimes(1)
44
+ })
45
+ })
@@ -0,0 +1,91 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
2
+ import {
3
+ OVERLAY_PREFS_DEBOUNCE_MS,
4
+ OVERLAY_PREFS_STORAGE_KEY,
5
+ } from '../app/runtime/constants'
6
+ import {
7
+ flushPrefsForTesting,
8
+ type OverlayPrefs,
9
+ readPrefs,
10
+ resetPrefsForTesting,
11
+ writePrefsDebounced,
12
+ } from '../app/runtime/overlay-prefs'
13
+
14
+ const SAMPLE_PREFS: OverlayPrefs = {
15
+ width: 400,
16
+ isOpen: false,
17
+ }
18
+
19
+ const FIRST_PREFS: OverlayPrefs = {
20
+ width: 300,
21
+ isOpen: false,
22
+ }
23
+
24
+ const SECOND_PREFS: OverlayPrefs = {
25
+ width: 320,
26
+ isOpen: false,
27
+ }
28
+
29
+ const FINAL_PREFS: OverlayPrefs = {
30
+ width: 360,
31
+ isOpen: true,
32
+ }
33
+
34
+ describe('overlay-prefs storage', () => {
35
+ beforeEach(() => {
36
+ resetPrefsForTesting()
37
+ })
38
+
39
+ afterEach(() => {
40
+ resetPrefsForTesting()
41
+ })
42
+
43
+ it('returns null when no prefs are stored', () => {
44
+ expect(readPrefs()).toBeNull()
45
+ })
46
+
47
+ it('round-trips a prefs object via debounced write then read', () => {
48
+ writePrefsDebounced(SAMPLE_PREFS)
49
+ flushPrefsForTesting()
50
+ expect(readPrefs()).toEqual(SAMPLE_PREFS)
51
+ })
52
+
53
+ it('returns null when the stored payload is malformed JSON', () => {
54
+ globalThis.localStorage.setItem(OVERLAY_PREFS_STORAGE_KEY, '{not json')
55
+ expect(readPrefs()).toBeNull()
56
+ })
57
+
58
+ it('returns null when the stored payload is missing fields', () => {
59
+ globalThis.localStorage.setItem(
60
+ OVERLAY_PREFS_STORAGE_KEY,
61
+ JSON.stringify({ x: 0, y: 0 }),
62
+ )
63
+ expect(readPrefs()).toBeNull()
64
+ })
65
+ })
66
+
67
+ describe('writePrefsDebounced timing', () => {
68
+ beforeEach(() => {
69
+ vi.useFakeTimers()
70
+ resetPrefsForTesting()
71
+ })
72
+
73
+ afterEach(() => {
74
+ vi.useRealTimers()
75
+ resetPrefsForTesting()
76
+ })
77
+
78
+ it('does not persist before the debounce window elapses', () => {
79
+ writePrefsDebounced(FIRST_PREFS)
80
+ vi.advanceTimersByTime(OVERLAY_PREFS_DEBOUNCE_MS - 1)
81
+ expect(readPrefs()).toBeNull()
82
+ })
83
+
84
+ it('persists only the last call when invoked rapidly', () => {
85
+ writePrefsDebounced(FIRST_PREFS)
86
+ writePrefsDebounced(SECOND_PREFS)
87
+ writePrefsDebounced(FINAL_PREFS)
88
+ vi.advanceTimersByTime(OVERLAY_PREFS_DEBOUNCE_MS)
89
+ expect(readPrefs()).toEqual(FINAL_PREFS)
90
+ })
91
+ })
@@ -0,0 +1,87 @@
1
+ import { afterEach, describe, expect, it, vi } from 'vitest'
2
+ import { createSidecarStatusController } from '../app/runtime/sidecar-status'
3
+ import { createHostWsClient } from '../app/runtime/ws-client'
4
+
5
+ class FakeWebSocket extends EventTarget {
6
+ static OPEN = 1
7
+ readyState = 0
8
+ send = vi.fn()
9
+ close = vi.fn()
10
+ constructor(
11
+ public url: string,
12
+ public protocols?: string | string[],
13
+ ) {
14
+ super()
15
+ sockets.push(this)
16
+ }
17
+ }
18
+
19
+ const sockets: FakeWebSocket[] = []
20
+ afterEach(() => {
21
+ sockets.length = 0
22
+ vi.unstubAllGlobals()
23
+ vi.useRealTimers()
24
+ })
25
+
26
+ describe('sidecar client credential lifecycle', () => {
27
+ it('requires an authenticated bootstrap result and relearns credentials after restart', async () => {
28
+ const fetchInfo = vi
29
+ .fn()
30
+ .mockResolvedValueOnce({
31
+ port: 41001,
32
+ clientToken: 'first',
33
+ isRunning: true,
34
+ })
35
+ .mockResolvedValueOnce({
36
+ port: 41002,
37
+ clientToken: 'second',
38
+ isRunning: true,
39
+ })
40
+ const controller = createSidecarStatusController(fetchInfo)
41
+ expect(await controller.init()).toBe(true)
42
+ expect(controller.getClientToken()).toBe('first')
43
+ controller.reportWsDown()
44
+ await vi.waitFor(() => expect(controller.getClientToken()).toBe('second'))
45
+ expect(controller.getPort()).toBe(41002)
46
+ controller.dispose()
47
+ })
48
+
49
+ it('does not report a legacy unauthenticated sidecar as connected', async () => {
50
+ const controller = createSidecarStatusController(async () => ({
51
+ port: 41001,
52
+ isRunning: true,
53
+ }))
54
+ await controller.init()
55
+ expect(controller.getStatus()).not.toBe('connected')
56
+ expect(controller.getClientToken()).toBeNull()
57
+ controller.dispose()
58
+ })
59
+
60
+ it('sends the credential only as a WS subprotocol and updates it on reconnect', () => {
61
+ vi.stubGlobal('WebSocket', FakeWebSocket)
62
+ let token: string | null = 'first'
63
+ const client = createHostWsClient({
64
+ sidecarHost: 'localhost',
65
+ getPort: () => 41001,
66
+ getClientToken: () => token,
67
+ })
68
+ expect(sockets[0]?.protocols).toBe('dms-ai.first')
69
+ expect(sockets[0]?.url).toBe('ws://localhost:41001/ws/host')
70
+ sockets[0]?.dispatchEvent(new Event('close'))
71
+ token = 'second'
72
+ client.reconnectNow()
73
+ expect(sockets[1]?.protocols).toBe('dms-ai.second')
74
+ client.close()
75
+ })
76
+
77
+ it('does not open a socket before a credential is available', () => {
78
+ vi.stubGlobal('WebSocket', FakeWebSocket)
79
+ const client = createHostWsClient({
80
+ sidecarHost: 'localhost',
81
+ getPort: () => 41001,
82
+ getClientToken: () => null,
83
+ })
84
+ expect(sockets).toHaveLength(0)
85
+ client.close()
86
+ })
87
+ })
@@ -0,0 +1,45 @@
1
+ import { readFileSync } from 'node:fs'
2
+ import { resolve } from 'node:path'
3
+ import ts from 'typescript'
4
+ import { expect, it, vi } from 'vitest'
5
+
6
+ interface PluginExports {
7
+ default: (context: unknown) => Promise<void>
8
+ }
9
+
10
+ it('does not invoke authenticated fetching or inject the assistant for a guest', async () => {
11
+ const source = readFileSync(
12
+ resolve(__dirname, '../app/plugins/ai.client.ts'),
13
+ 'utf8',
14
+ )
15
+ const compiled = ts.transpileModule(
16
+ source
17
+ .replace('import.meta.env.DEV', 'true')
18
+ .replace('import.meta.hot', 'undefined'),
19
+ {
20
+ compilerOptions: { module: ts.ModuleKind.CommonJS },
21
+ },
22
+ )
23
+ const exports = {} as PluginExports
24
+ const useAuthFetch = vi.fn(() => {
25
+ throw new Error('A guest must not enter session recovery')
26
+ })
27
+ const requireModule = (name: string) =>
28
+ name === '#dms-inertia/frontend-module'
29
+ ? { defineDmsPlugin: (plugin: unknown) => plugin }
30
+ : {}
31
+ new Function(
32
+ 'require',
33
+ 'exports',
34
+ 'useUserSession',
35
+ 'useAuthFetch',
36
+ compiled.outputText,
37
+ )(
38
+ requireModule,
39
+ exports,
40
+ () => ({ loggedIn: { value: false } }),
41
+ useAuthFetch,
42
+ )
43
+ await exports.default({})
44
+ expect(useAuthFetch).not.toHaveBeenCalled()
45
+ })
@@ -0,0 +1,8 @@
1
+ import { defineConfig } from 'vitest/config'
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ environment: 'jsdom',
6
+ include: ['tests/**/*.test.ts'],
7
+ },
8
+ })
package/package.json ADDED
@@ -0,0 +1,79 @@
1
+ {
2
+ "name": "@antelopejs/dms-ai",
3
+ "version": "0.0.1",
4
+ "license": "Apache-2.0",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/AntelopeJS/dms-ai.git"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "frontend-vue",
12
+ "skills",
13
+ "sidecar/dist",
14
+ "sidecar/chatbox/dist",
15
+ "sidecar/package.json"
16
+ ],
17
+ "main": "dist/index.js",
18
+ "types": "dist/index.d.ts",
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "default": "./dist/index.js"
23
+ },
24
+ "./package.json": "./package.json"
25
+ },
26
+ "publishConfig": {
27
+ "access": "public",
28
+ "provenance": true,
29
+ "registry": "https://registry.npmjs.org/"
30
+ },
31
+ "dependencies": {
32
+ "@antelopejs/interface-api": "0.0.13",
33
+ "@antelopejs/interface-core": "0.0.12",
34
+ "@antelopejs/interface-dms": ">=0.0.1 <1.0.0",
35
+ "@anthropic-ai/claude-agent-sdk": "^0.2.131",
36
+ "@anthropic-ai/claude-code": "^2.1.131",
37
+ "ws": "^8.18.0",
38
+ "zod": "^3.23.8"
39
+ },
40
+ "devDependencies": {
41
+ "@antelopejs/tooling-configs": "^0.0.4",
42
+ "@types/node": "^24.0.0",
43
+ "knip": "^6.34.0",
44
+ "oxfmt": "^0.66.0",
45
+ "oxlint": "1.81.0",
46
+ "oxlint-tsgolint": "^7.0.2001",
47
+ "release-it": "^19.2.4",
48
+ "release-it-changelogen": "^0.1.0",
49
+ "rimraf": "^6.1.3",
50
+ "typescript": "^5.9.3"
51
+ },
52
+ "optionalDependencies": {
53
+ "@antelopejs/interface-dms-builder": ">=0.0.1 <1.0.0"
54
+ },
55
+ "antelopeJs": {
56
+ "baseUrl": "dist",
57
+ "implements": [],
58
+ "skills": [
59
+ "./skills"
60
+ ]
61
+ },
62
+ "scripts": {
63
+ "build": "rimraf dist && tsc -p tsconfig.build.json",
64
+ "build:sidecar": "cd sidecar && pnpm install && pnpm run build:all",
65
+ "frontend:dev": "cd playground && pnpm frontend:dev",
66
+ "dev": "cd playground && pnpm dev",
67
+ "lint": "oxlint --disable-nested-config && oxfmt --disable-nested-config --check . && cd frontend-vue && pnpm lint && cd ../sidecar && pnpm lint",
68
+ "lint:fix": "oxlint --disable-nested-config --fix --max-warnings=1000000 && oxfmt --disable-nested-config . && cd frontend-vue && pnpm lint:fix && cd ../sidecar && pnpm lint:fix",
69
+ "typecheck": "tsc --noEmit && cd frontend-vue && pnpm typecheck && cd ../sidecar && pnpm typecheck",
70
+ "test": "cd sidecar && pnpm test && cd ../frontend-vue && pnpm test",
71
+ "test:frontend-registration": "pnpm run build && node --test tests/frontend-registration.test.cjs",
72
+ "test:release-script": "node --test tests/release-script.test.cjs",
73
+ "test:e2e": "cd sidecar && pnpm test:e2e",
74
+ "release": "pnpm --dir frontend-vue install --frozen-lockfile && pnpm --dir sidecar install --frozen-lockfile && pnpm --dir sidecar/chatbox install --frozen-lockfile && release-it",
75
+ "format": "oxfmt --disable-nested-config . && cd frontend-vue && pnpm format",
76
+ "knip": "knip --dependencies",
77
+ "knip:all": "knip"
78
+ }
79
+ }