@antelopejs/dms-ai 0.1.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/README.md +48 -12
  2. package/dist/channels/bridge.d.ts +6 -1
  3. package/dist/channels/bridge.js +29 -1
  4. package/dist/channels/bridge.js.map +1 -1
  5. package/dist/channels/channel-service.d.ts +2 -1
  6. package/dist/channels/channel-service.js +3 -2
  7. package/dist/channels/channel-service.js.map +1 -1
  8. package/dist/channels/sse-stream.d.ts +3 -2
  9. package/dist/config.d.ts +0 -2
  10. package/dist/config.js +0 -7
  11. package/dist/config.js.map +1 -1
  12. package/dist/constants/http.d.ts +9 -0
  13. package/dist/constants/http.js +14 -0
  14. package/dist/constants/http.js.map +1 -0
  15. package/dist/constants/i18n.d.ts +11 -0
  16. package/dist/constants/i18n.js +15 -0
  17. package/dist/constants/i18n.js.map +1 -0
  18. package/dist/constants/pages.d.ts +50 -0
  19. package/dist/constants/pages.js +58 -0
  20. package/dist/constants/pages.js.map +1 -0
  21. package/dist/constants/sidecar.d.ts +0 -1
  22. package/dist/constants/sidecar.js +1 -2
  23. package/dist/constants/sidecar.js.map +1 -1
  24. package/dist/index.js +0 -8
  25. package/dist/index.js.map +1 -1
  26. package/dist/lifecycle/sidecar-owner.d.ts +1 -0
  27. package/dist/lifecycle/sidecar-owner.js +13 -0
  28. package/dist/lifecycle/sidecar-owner.js.map +1 -1
  29. package/dist/lifecycle/spawn-sidecar.d.ts +1 -0
  30. package/dist/lifecycle/spawn-sidecar.js +10 -10
  31. package/dist/lifecycle/spawn-sidecar.js.map +1 -1
  32. package/dist/logging/log-buffer.d.ts +0 -6
  33. package/dist/logging/log-buffer.js +0 -1
  34. package/dist/logging/log-buffer.js.map +1 -1
  35. package/dist/pages/activity/columns.d.ts +2 -0
  36. package/dist/pages/activity/columns.js +103 -0
  37. package/dist/pages/activity/columns.js.map +1 -0
  38. package/dist/pages/activity/page.d.ts +1 -2
  39. package/dist/pages/activity/page.js +79 -44
  40. package/dist/pages/activity/page.js.map +1 -1
  41. package/dist/pages/all.d.ts +1 -0
  42. package/dist/pages/all.js +1 -0
  43. package/dist/pages/all.js.map +1 -1
  44. package/dist/pages/changes/page.d.ts +9 -0
  45. package/dist/pages/changes/page.js +22 -0
  46. package/dist/pages/changes/page.js.map +1 -0
  47. package/dist/pages/meta.d.ts +9 -0
  48. package/dist/pages/meta.js +31 -0
  49. package/dist/pages/meta.js.map +1 -0
  50. package/dist/pages/module.js +9 -5
  51. package/dist/pages/module.js.map +1 -1
  52. package/dist/pages/overview/insights.d.ts +3 -0
  53. package/dist/pages/overview/insights.js +77 -0
  54. package/dist/pages/overview/insights.js.map +1 -0
  55. package/dist/pages/overview/kpis.d.ts +2 -0
  56. package/dist/pages/overview/kpis.js +39 -0
  57. package/dist/pages/overview/kpis.js.map +1 -0
  58. package/dist/pages/overview/page.d.ts +6 -3
  59. package/dist/pages/overview/page.js +19 -62
  60. package/dist/pages/overview/page.js.map +1 -1
  61. package/dist/pages/overview/recent-changes.d.ts +2 -0
  62. package/dist/pages/overview/recent-changes.js +144 -0
  63. package/dist/pages/overview/recent-changes.js.map +1 -0
  64. package/dist/pages/overview/status.d.ts +3 -0
  65. package/dist/pages/overview/status.js +36 -0
  66. package/dist/pages/overview/status.js.map +1 -0
  67. package/dist/pages/settings/availability.d.ts +2 -0
  68. package/dist/pages/settings/availability.js +46 -0
  69. package/dist/pages/settings/availability.js.map +1 -0
  70. package/dist/pages/settings/options.d.ts +10 -0
  71. package/dist/pages/settings/options.js +58 -0
  72. package/dist/pages/settings/options.js.map +1 -0
  73. package/dist/pages/settings/page.d.ts +2 -1
  74. package/dist/pages/settings/page.js +39 -13
  75. package/dist/pages/settings/page.js.map +1 -1
  76. package/dist/pages/settings/sections.d.ts +2 -0
  77. package/dist/pages/settings/sections.js +164 -0
  78. package/dist/pages/settings/sections.js.map +1 -0
  79. package/dist/pages/skills/page.d.ts +2 -1
  80. package/dist/pages/skills/page.js +122 -12
  81. package/dist/pages/skills/page.js.map +1 -1
  82. package/dist/routes/activity-csv.d.ts +2 -0
  83. package/dist/routes/activity-csv.js +42 -0
  84. package/dist/routes/activity-csv.js.map +1 -0
  85. package/dist/routes/activity.d.ts +8 -0
  86. package/dist/routes/activity.js +105 -0
  87. package/dist/routes/activity.js.map +1 -0
  88. package/dist/routes/actor.d.ts +2 -0
  89. package/dist/routes/actor.js +8 -0
  90. package/dist/routes/actor.js.map +1 -0
  91. package/dist/routes/banner.d.ts +3 -0
  92. package/dist/routes/banner.js +9 -0
  93. package/dist/routes/banner.js.map +1 -0
  94. package/dist/routes/builder.js +1 -5
  95. package/dist/routes/builder.js.map +1 -1
  96. package/dist/routes/changes.d.ts +17 -0
  97. package/dist/routes/changes.js +152 -0
  98. package/dist/routes/changes.js.map +1 -0
  99. package/dist/routes/channels.js +2 -1
  100. package/dist/routes/channels.js.map +1 -1
  101. package/dist/routes/index.d.ts +3 -0
  102. package/dist/routes/index.js +3 -0
  103. package/dist/routes/index.js.map +1 -1
  104. package/dist/routes/list-query.d.ts +9 -0
  105. package/dist/routes/list-query.js +34 -0
  106. package/dist/routes/list-query.js.map +1 -0
  107. package/dist/routes/metric-shapes.d.ts +8 -0
  108. package/dist/routes/metric-shapes.js +107 -0
  109. package/dist/routes/metric-shapes.js.map +1 -0
  110. package/dist/routes/metrics.d.ts +5 -48
  111. package/dist/routes/metrics.js +52 -42
  112. package/dist/routes/metrics.js.map +1 -1
  113. package/dist/routes/settings.d.ts +3 -16
  114. package/dist/routes/settings.js +40 -14
  115. package/dist/routes/settings.js.map +1 -1
  116. package/dist/routes/sidecar-results.d.ts +6 -0
  117. package/dist/routes/sidecar-results.js +44 -0
  118. package/dist/routes/sidecar-results.js.map +1 -0
  119. package/dist/routes/skills.d.ts +4 -14
  120. package/dist/routes/skills.js +91 -6
  121. package/dist/routes/skills.js.map +1 -1
  122. package/dist/routes/status-shapes.d.ts +5 -0
  123. package/dist/routes/status-shapes.js +176 -0
  124. package/dist/routes/status-shapes.js.map +1 -0
  125. package/dist/routes/status.d.ts +9 -0
  126. package/dist/routes/status.js +92 -0
  127. package/dist/routes/status.js.map +1 -0
  128. package/dist/routes/undo-confirm.d.ts +3 -0
  129. package/dist/routes/undo-confirm.js +51 -0
  130. package/dist/routes/undo-confirm.js.map +1 -0
  131. package/dist/sidecar/http-client.d.ts +11 -0
  132. package/dist/sidecar/http-client.js +59 -0
  133. package/dist/sidecar/http-client.js.map +1 -0
  134. package/dist/sidecar/index.d.ts +2 -0
  135. package/dist/sidecar/index.js +19 -0
  136. package/dist/sidecar/index.js.map +1 -0
  137. package/dist/sidecar/query.d.ts +3 -0
  138. package/dist/sidecar/query.js +25 -0
  139. package/dist/sidecar/query.js.map +1 -0
  140. package/dist/types/activity.d.ts +31 -0
  141. package/dist/types/activity.js +3 -0
  142. package/dist/types/activity.js.map +1 -0
  143. package/dist/types/changes.d.ts +45 -0
  144. package/dist/types/changes.js +3 -0
  145. package/dist/types/changes.js.map +1 -0
  146. package/dist/types/index.d.ts +5 -0
  147. package/dist/types/index.js +5 -0
  148. package/dist/types/index.js.map +1 -1
  149. package/dist/types/metrics.d.ts +76 -0
  150. package/dist/types/metrics.js +3 -0
  151. package/dist/types/metrics.js.map +1 -0
  152. package/dist/types/skills.d.ts +51 -0
  153. package/dist/types/skills.js +3 -0
  154. package/dist/types/skills.js.map +1 -0
  155. package/dist/types/status.d.ts +16 -0
  156. package/dist/types/status.js +3 -0
  157. package/dist/types/status.js.map +1 -0
  158. package/dist/vocabulary/enumerations.d.ts +9 -0
  159. package/dist/vocabulary/enumerations.js +52 -0
  160. package/dist/vocabulary/enumerations.js.map +1 -0
  161. package/dist/vocabulary/index.d.ts +5 -0
  162. package/dist/vocabulary/index.js +22 -0
  163. package/dist/vocabulary/index.js.map +1 -0
  164. package/dist/vocabulary/keys.d.ts +1 -0
  165. package/dist/vocabulary/keys.js +8 -0
  166. package/dist/vocabulary/keys.js.map +1 -0
  167. package/dist/vocabulary/options.d.ts +7 -0
  168. package/dist/vocabulary/options.js +33 -0
  169. package/dist/vocabulary/options.js.map +1 -0
  170. package/dist/vocabulary/tools.d.ts +7 -0
  171. package/dist/vocabulary/tools.js +99 -0
  172. package/dist/vocabulary/tools.js.map +1 -0
  173. package/dist/vocabulary/types.d.ts +20 -0
  174. package/dist/vocabulary/types.js +3 -0
  175. package/dist/vocabulary/types.js.map +1 -0
  176. package/frontend-vue/app/chat/components/AnswerRecord.vue +95 -0
  177. package/frontend-vue/app/chat/components/ApprovalDock.vue +371 -0
  178. package/frontend-vue/app/chat/components/ChangeSetCard.vue +297 -0
  179. package/frontend-vue/app/chat/components/ChatEmpty.vue +142 -0
  180. package/frontend-vue/app/chat/components/ChatView.vue +664 -406
  181. package/frontend-vue/app/chat/components/Composer.vue +589 -0
  182. package/frontend-vue/app/chat/components/ConnectionBanner.vue +41 -65
  183. package/frontend-vue/app/chat/components/ConversationDrawer.vue +387 -177
  184. package/frontend-vue/app/chat/components/DiffView.vue +131 -0
  185. package/frontend-vue/app/chat/components/FullAutoBanner.vue +76 -0
  186. package/frontend-vue/app/chat/components/FullAutoDialog.vue +103 -0
  187. package/frontend-vue/app/chat/components/MarkdownContent.vue +15 -15
  188. package/frontend-vue/app/chat/components/MessageList.vue +389 -295
  189. package/frontend-vue/app/chat/components/NoticeCard.vue +193 -0
  190. package/frontend-vue/app/chat/components/PanelHeader.vue +242 -0
  191. package/frontend-vue/app/chat/components/PermissionCard.vue +470 -0
  192. package/frontend-vue/app/chat/components/PlanCard.vue +115 -0
  193. package/frontend-vue/app/chat/components/QuestionDock.vue +407 -0
  194. package/frontend-vue/app/chat/components/QueueDock.vue +310 -0
  195. package/frontend-vue/app/chat/components/RulesList.vue +97 -0
  196. package/frontend-vue/app/chat/components/StepsDock.vue +181 -0
  197. package/frontend-vue/app/chat/components/ToolCluster.vue +186 -178
  198. package/frontend-vue/app/chat/components/ToolRow.vue +251 -0
  199. package/frontend-vue/app/chat/components/TurnErrorCard.vue +135 -0
  200. package/frontend-vue/app/chat/composables/conversation-events.ts +404 -0
  201. package/frontend-vue/app/chat/composables/useChangeSetActions.ts +135 -0
  202. package/frontend-vue/app/chat/composables/useChatChannel.ts +11 -3
  203. package/frontend-vue/app/chat/composables/useChatI18n.ts +35 -0
  204. package/frontend-vue/app/chat/composables/useComposerAttachments.ts +111 -0
  205. package/frontend-vue/app/chat/composables/useConversation.ts +149 -651
  206. package/frontend-vue/app/chat/composables/useConversationId.ts +2 -10
  207. package/frontend-vue/app/chat/composables/useConversationList.ts +77 -21
  208. package/frontend-vue/app/chat/composables/useConversationMode.ts +73 -0
  209. package/frontend-vue/app/chat/composables/usePaletteTurn.ts +124 -0
  210. package/frontend-vue/app/chat/composables/usePermissionQueue.ts +211 -34
  211. package/frontend-vue/app/chat/composables/useQuestionQueue.ts +103 -21
  212. package/frontend-vue/app/chat/composables/useQueueActions.ts +55 -0
  213. package/frontend-vue/app/chat/composables/useSettings.ts +17 -34
  214. package/frontend-vue/app/chat/constants/attachments.ts +2 -1
  215. package/frontend-vue/app/chat/constants/conversation.ts +18 -32
  216. package/frontend-vue/app/chat/constants/protocol.ts +25 -2
  217. package/frontend-vue/app/chat/constants/run-status.ts +8 -14
  218. package/frontend-vue/app/chat/constants/settings.ts +5 -47
  219. package/frontend-vue/app/chat/types/conversation.ts +72 -2
  220. package/frontend-vue/app/chat/types/permission.ts +31 -0
  221. package/frontend-vue/app/chat/types/protocol.ts +226 -0
  222. package/frontend-vue/app/chat/types/question.ts +10 -1
  223. package/frontend-vue/app/chat/types/settings.ts +9 -5
  224. package/frontend-vue/app/chat/utils/approval-keyboard.ts +49 -0
  225. package/frontend-vue/app/chat/utils/arrays.ts +10 -0
  226. package/frontend-vue/app/chat/utils/conversation-groups.ts +96 -0
  227. package/frontend-vue/app/chat/utils/conversation-messages.ts +251 -0
  228. package/frontend-vue/app/chat/utils/diff.ts +78 -0
  229. package/frontend-vue/app/chat/utils/format.ts +43 -0
  230. package/frontend-vue/app/chat/utils/markdown.ts +1 -1
  231. package/frontend-vue/app/chat/utils/permission-view.ts +159 -0
  232. package/frontend-vue/app/chat/utils/platform.ts +34 -0
  233. package/frontend-vue/app/chat/utils/queue.ts +18 -0
  234. package/frontend-vue/app/chat/utils/render-items.ts +164 -0
  235. package/frontend-vue/app/chat/utils/run-status.ts +19 -23
  236. package/frontend-vue/app/chat/utils/suggestions.ts +101 -0
  237. package/frontend-vue/app/chat/utils/todos.ts +2 -2
  238. package/frontend-vue/app/chat/utils/tool-lexicon.ts +540 -0
  239. package/frontend-vue/app/chat/utils/tool-state.ts +60 -0
  240. package/frontend-vue/app/components/ActivityDetail.vue +235 -0
  241. package/frontend-vue/app/components/ChangesView.vue +249 -0
  242. package/frontend-vue/app/components/ChatPanel.vue +141 -196
  243. package/frontend-vue/app/components/PaletteAnswer.vue +185 -0
  244. package/frontend-vue/app/components/SkillCard.vue +77 -0
  245. package/frontend-vue/app/components/SkillDetail.vue +188 -0
  246. package/frontend-vue/app/plugins/ai.client.ts +349 -57
  247. package/frontend-vue/app/plugins/side-panel.ts +13 -0
  248. package/frontend-vue/app/runtime/assistant-activity.ts +105 -0
  249. package/frontend-vue/app/runtime/assistant-commands.ts +210 -0
  250. package/frontend-vue/app/runtime/assistant-notifications.ts +181 -0
  251. package/frontend-vue/app/runtime/assistant-session.ts +49 -6
  252. package/frontend-vue/app/runtime/channel-client.ts +3 -6
  253. package/frontend-vue/app/runtime/constants.ts +29 -35
  254. package/frontend-vue/app/runtime/host-commands.ts +4 -4
  255. package/frontend-vue/app/runtime/listeners.ts +1 -1
  256. package/frontend-vue/app/runtime/navigation-complete.ts +1 -1
  257. package/frontend-vue/app/runtime/panel-intents.ts +55 -0
  258. package/frontend-vue/app/runtime/shortcuts.ts +3 -1
  259. package/frontend-vue/app/runtime/sidecar-status.ts +9 -1
  260. package/frontend-vue/app/runtime/stream-holds.ts +24 -0
  261. package/frontend-vue/app/views/ChangeSetPanel.vue +222 -0
  262. package/frontend-vue/app/views/DecisionLabel.vue +30 -0
  263. package/frontend-vue/app/views/DiffView.vue +215 -0
  264. package/frontend-vue/app/views/ResultPill.vue +32 -0
  265. package/frontend-vue/app/views/RowStepper.vue +48 -0
  266. package/frontend-vue/app/views/UnavailableState.vue +66 -0
  267. package/frontend-vue/app/views/composables/useAiRequest.ts +89 -0
  268. package/frontend-vue/app/views/composables/useAssistant.ts +33 -0
  269. package/frontend-vue/app/views/composables/useChangeSetActions.ts +102 -0
  270. package/frontend-vue/app/views/composables/useViewFormat.ts +55 -0
  271. package/frontend-vue/app/views/constants.ts +43 -0
  272. package/frontend-vue/app/views/types.ts +189 -0
  273. package/frontend-vue/app/views/utils/activity.ts +77 -0
  274. package/frontend-vue/app/views/utils/change-sets.ts +44 -0
  275. package/frontend-vue/app/views/utils/diff.ts +98 -0
  276. package/frontend-vue/app/views/utils/moment.ts +92 -0
  277. package/frontend-vue/app/views/utils/skills.ts +27 -0
  278. package/frontend-vue/app/views/utils/tools.ts +73 -0
  279. package/frontend-vue/dms.frontend.ts +17 -5
  280. package/frontend-vue/i18n/locales/dms-ai-pages-en-GB.json +607 -0
  281. package/frontend-vue/i18n/locales/dms-ai-pages-fr-FR.json +607 -0
  282. package/frontend-vue/i18n/locales/dms-ai-panel-en-GB.json +425 -0
  283. package/frontend-vue/i18n/locales/dms-ai-panel-fr-FR.json +425 -0
  284. package/frontend-vue/i18n/locales/dms-ai-views-en-GB.json +142 -0
  285. package/frontend-vue/i18n/locales/dms-ai-views-fr-FR.json +142 -0
  286. package/frontend-vue/package.json +1 -1
  287. package/frontend-vue/tests/chat/conversation-events.test.ts +590 -0
  288. package/frontend-vue/tests/chat/diff-and-keys.test.ts +178 -0
  289. package/frontend-vue/tests/chat/tool-lexicon.test.ts +188 -0
  290. package/frontend-vue/tests/chat/useConversation.test.ts +36 -33
  291. package/frontend-vue/tests/chat-panel.test.ts +78 -131
  292. package/frontend-vue/tests/i18n-panel.test.ts +118 -0
  293. package/frontend-vue/tests/palette-assistant.test.ts +220 -0
  294. package/frontend-vue/tests/panel-states.test.ts +806 -0
  295. package/frontend-vue/tests/sidecar-guest.test.ts +35 -3
  296. package/frontend-vue/tests/support/i18n.ts +49 -0
  297. package/frontend-vue/tests/support/panel-harness.ts +198 -0
  298. package/frontend-vue/tests/support/stubs.ts +201 -0
  299. package/frontend-vue/tests/views/diff-view.test.ts +149 -0
  300. package/frontend-vue/tests/views/view-format.test.ts +59 -0
  301. package/package.json +4 -3
  302. package/sidecar/dist/agent/attachment-files.d.ts +0 -1
  303. package/sidecar/dist/agent/attachment-files.js +1 -1
  304. package/sidecar/dist/agent/attachment-files.js.map +1 -1
  305. package/sidecar/dist/agent/call-ledger.d.ts +6 -0
  306. package/sidecar/dist/agent/call-ledger.js +41 -0
  307. package/sidecar/dist/agent/call-ledger.js.map +1 -0
  308. package/sidecar/dist/agent/command-analysis.d.ts +9 -0
  309. package/sidecar/dist/agent/command-analysis.js +104 -0
  310. package/sidecar/dist/agent/command-analysis.js.map +1 -0
  311. package/sidecar/dist/agent/conversation-modes.d.ts +32 -0
  312. package/sidecar/dist/agent/conversation-modes.js +122 -0
  313. package/sidecar/dist/agent/conversation-modes.js.map +1 -0
  314. package/sidecar/dist/agent/edit-targets.d.ts +5 -0
  315. package/sidecar/dist/agent/edit-targets.js +41 -0
  316. package/sidecar/dist/agent/edit-targets.js.map +1 -0
  317. package/sidecar/dist/agent/effective-mode.d.ts +9 -2
  318. package/sidecar/dist/agent/effective-mode.js +14 -16
  319. package/sidecar/dist/agent/effective-mode.js.map +1 -1
  320. package/sidecar/dist/agent/host-context.js +2 -2
  321. package/sidecar/dist/agent/host-context.js.map +1 -1
  322. package/sidecar/dist/agent/line-diff.d.ts +8 -0
  323. package/sidecar/dist/agent/line-diff.js +204 -0
  324. package/sidecar/dist/agent/line-diff.js.map +1 -0
  325. package/sidecar/dist/agent/permission-bus.d.ts +55 -10
  326. package/sidecar/dist/agent/permission-bus.js +130 -100
  327. package/sidecar/dist/agent/permission-bus.js.map +1 -1
  328. package/sidecar/dist/agent/permission-preview.d.ts +20 -0
  329. package/sidecar/dist/agent/permission-preview.js +203 -0
  330. package/sidecar/dist/agent/permission-preview.js.map +1 -0
  331. package/sidecar/dist/agent/permission-rules.d.ts +17 -0
  332. package/sidecar/dist/agent/permission-rules.js +95 -0
  333. package/sidecar/dist/agent/permission-rules.js.map +1 -0
  334. package/sidecar/dist/agent/provider.d.ts +12 -4
  335. package/sidecar/dist/agent/question-bus.d.ts +14 -2
  336. package/sidecar/dist/agent/question-bus.js +30 -11
  337. package/sidecar/dist/agent/question-bus.js.map +1 -1
  338. package/sidecar/dist/agent/runner-events.d.ts +3 -1
  339. package/sidecar/dist/agent/runner.d.ts +6 -4
  340. package/sidecar/dist/agent/runner.js +24 -7
  341. package/sidecar/dist/agent/runner.js.map +1 -1
  342. package/sidecar/dist/agent/switching-runner.js +1 -0
  343. package/sidecar/dist/agent/switching-runner.js.map +1 -1
  344. package/sidecar/dist/agent/tool-kinds.d.ts +12 -0
  345. package/sidecar/dist/agent/tool-kinds.js +50 -0
  346. package/sidecar/dist/agent/tool-kinds.js.map +1 -0
  347. package/sidecar/dist/agent/typecheck.d.ts +2 -6
  348. package/sidecar/dist/audit/activity-query.d.ts +37 -0
  349. package/sidecar/dist/audit/activity-query.js +111 -0
  350. package/sidecar/dist/audit/activity-query.js.map +1 -0
  351. package/sidecar/dist/audit/activity-target.d.ts +2 -0
  352. package/sidecar/dist/audit/activity-target.js +46 -0
  353. package/sidecar/dist/audit/activity-target.js.map +1 -0
  354. package/sidecar/dist/audit/activity.d.ts +45 -0
  355. package/sidecar/dist/audit/activity.js +255 -0
  356. package/sidecar/dist/audit/activity.js.map +1 -0
  357. package/sidecar/dist/audit/call-audit.d.ts +11 -0
  358. package/sidecar/dist/audit/call-audit.js +23 -0
  359. package/sidecar/dist/audit/call-audit.js.map +1 -0
  360. package/sidecar/dist/checkpoints/checkpoints.d.ts +69 -0
  361. package/sidecar/dist/checkpoints/checkpoints.js +244 -0
  362. package/sidecar/dist/checkpoints/checkpoints.js.map +1 -0
  363. package/sidecar/dist/checkpoints/shadow-git.d.ts +23 -0
  364. package/sidecar/dist/checkpoints/shadow-git.js +173 -0
  365. package/sidecar/dist/checkpoints/shadow-git.js.map +1 -0
  366. package/sidecar/dist/constants/agent.d.ts +2 -0
  367. package/sidecar/dist/constants/agent.js +4 -0
  368. package/sidecar/dist/constants/agent.js.map +1 -1
  369. package/sidecar/dist/constants/audit.d.ts +22 -0
  370. package/sidecar/dist/constants/audit.js +49 -0
  371. package/sidecar/dist/constants/audit.js.map +1 -0
  372. package/sidecar/dist/constants/builder.d.ts +3 -0
  373. package/sidecar/dist/constants/builder.js +2 -0
  374. package/sidecar/dist/constants/builder.js.map +1 -1
  375. package/sidecar/dist/constants/checkpoints.d.ts +15 -0
  376. package/sidecar/dist/constants/checkpoints.js +26 -0
  377. package/sidecar/dist/constants/checkpoints.js.map +1 -0
  378. package/sidecar/dist/constants/claude.d.ts +1 -0
  379. package/sidecar/dist/constants/claude.js +1 -0
  380. package/sidecar/dist/constants/claude.js.map +1 -1
  381. package/sidecar/dist/constants/codex.d.ts +2 -4
  382. package/sidecar/dist/constants/codex.js +2 -4
  383. package/sidecar/dist/constants/codex.js.map +1 -1
  384. package/sidecar/dist/constants/http.d.ts +1 -0
  385. package/sidecar/dist/constants/http.js +1 -0
  386. package/sidecar/dist/constants/http.js.map +1 -1
  387. package/sidecar/dist/constants/mcp.d.ts +3 -0
  388. package/sidecar/dist/constants/mcp.js +9 -0
  389. package/sidecar/dist/constants/mcp.js.map +1 -1
  390. package/sidecar/dist/constants/permissions.d.ts +9 -3
  391. package/sidecar/dist/constants/permissions.js +9 -2
  392. package/sidecar/dist/constants/permissions.js.map +1 -1
  393. package/sidecar/dist/constants/settings.d.ts +2 -1
  394. package/sidecar/dist/constants/settings.js +7 -1
  395. package/sidecar/dist/constants/settings.js.map +1 -1
  396. package/sidecar/dist/constants/tool-kinds.d.ts +14 -0
  397. package/sidecar/dist/constants/tool-kinds.js +65 -0
  398. package/sidecar/dist/constants/tool-kinds.js.map +1 -0
  399. package/sidecar/dist/index.js +28 -2
  400. package/sidecar/dist/index.js.map +1 -1
  401. package/sidecar/dist/mcp/define-tool.d.ts +3 -2
  402. package/sidecar/dist/mcp/tool-definitions.js +4 -1
  403. package/sidecar/dist/mcp/tool-definitions.js.map +1 -1
  404. package/sidecar/dist/mcp/tools/ask-user.d.ts +2 -2
  405. package/sidecar/dist/mcp/tools/ask-user.js +7 -4
  406. package/sidecar/dist/mcp/tools/ask-user.js.map +1 -1
  407. package/sidecar/dist/mcp/tools/builder-catalog.d.ts +3 -0
  408. package/sidecar/dist/mcp/tools/builder-catalog.js +86 -0
  409. package/sidecar/dist/mcp/tools/builder-catalog.js.map +1 -0
  410. package/sidecar/dist/mcp/tools/builder-gate.d.ts +8 -0
  411. package/sidecar/dist/mcp/tools/builder-gate.js +22 -0
  412. package/sidecar/dist/mcp/tools/builder-gate.js.map +1 -0
  413. package/sidecar/dist/mcp/tools/builder.d.ts +7 -2
  414. package/sidecar/dist/mcp/tools/builder.js +48 -7
  415. package/sidecar/dist/mcp/tools/builder.js.map +1 -1
  416. package/sidecar/dist/mcp/types.d.ts +2 -0
  417. package/sidecar/dist/metrics/aggregate.d.ts +13 -10
  418. package/sidecar/dist/metrics/aggregate.js +140 -143
  419. package/sidecar/dist/metrics/aggregate.js.map +1 -1
  420. package/sidecar/dist/metrics/types.d.ts +36 -23
  421. package/sidecar/dist/metrics/types.js +3 -1
  422. package/sidecar/dist/metrics/types.js.map +1 -1
  423. package/sidecar/dist/pages/imports-scanner.d.ts +1 -1
  424. package/sidecar/dist/pages/imports-scanner.js +2 -5
  425. package/sidecar/dist/pages/imports-scanner.js.map +1 -1
  426. package/sidecar/dist/prompts/agent.d.ts +1 -3
  427. package/sidecar/dist/prompts/agent.js +4 -4
  428. package/sidecar/dist/prompts/agent.js.map +1 -1
  429. package/sidecar/dist/prompts/builder.d.ts +2 -2
  430. package/sidecar/dist/prompts/builder.js +2 -2
  431. package/sidecar/dist/protocol/events.d.ts +1084 -18
  432. package/sidecar/dist/protocol/events.js +239 -5
  433. package/sidecar/dist/protocol/events.js.map +1 -1
  434. package/sidecar/dist/protocol/messages.d.ts +273 -19
  435. package/sidecar/dist/protocol/messages.js +107 -7
  436. package/sidecar/dist/protocol/messages.js.map +1 -1
  437. package/sidecar/dist/providers/claude/config.d.ts +3 -2
  438. package/sidecar/dist/providers/claude/config.js +10 -4
  439. package/sidecar/dist/providers/claude/config.js.map +1 -1
  440. package/sidecar/dist/providers/claude/provider.d.ts +2 -8
  441. package/sidecar/dist/providers/claude/provider.js +37 -35
  442. package/sidecar/dist/providers/claude/provider.js.map +1 -1
  443. package/sidecar/dist/providers/claude/safe-mode.d.ts +6 -1
  444. package/sidecar/dist/providers/claude/safe-mode.js +13 -5
  445. package/sidecar/dist/providers/claude/safe-mode.js.map +1 -1
  446. package/sidecar/dist/providers/codex/adapter.d.ts +6 -0
  447. package/sidecar/dist/providers/codex/adapter.js +14 -4
  448. package/sidecar/dist/providers/codex/adapter.js.map +1 -1
  449. package/sidecar/dist/providers/codex/client.d.ts +0 -11
  450. package/sidecar/dist/providers/codex/config.d.ts +1 -3
  451. package/sidecar/dist/providers/codex/config.js +5 -11
  452. package/sidecar/dist/providers/codex/config.js.map +1 -1
  453. package/sidecar/dist/providers/codex/permissions.d.ts +7 -4
  454. package/sidecar/dist/providers/codex/permissions.js +32 -16
  455. package/sidecar/dist/providers/codex/permissions.js.map +1 -1
  456. package/sidecar/dist/providers/codex/process.js +1 -5
  457. package/sidecar/dist/providers/codex/process.js.map +1 -1
  458. package/sidecar/dist/providers/codex/provider.js +14 -3
  459. package/sidecar/dist/providers/codex/provider.js.map +1 -1
  460. package/sidecar/dist/providers/codex/skills.d.ts +0 -1
  461. package/sidecar/dist/providers/codex/skills.js +1 -1
  462. package/sidecar/dist/providers/codex/skills.js.map +1 -1
  463. package/sidecar/dist/providers/codex/stop.js +1 -10
  464. package/sidecar/dist/providers/codex/stop.js.map +1 -1
  465. package/sidecar/dist/server/change-set-actions.d.ts +10 -0
  466. package/sidecar/dist/server/change-set-actions.js +14 -0
  467. package/sidecar/dist/server/change-set-actions.js.map +1 -0
  468. package/sidecar/dist/server/chat-events.d.ts +15 -0
  469. package/sidecar/dist/server/chat-events.js +115 -0
  470. package/sidecar/dist/server/chat-events.js.map +1 -0
  471. package/sidecar/dist/server/chat-socket-registry.d.ts +2 -0
  472. package/sidecar/dist/server/chat-socket-registry.js +48 -37
  473. package/sidecar/dist/server/chat-socket-registry.js.map +1 -1
  474. package/sidecar/dist/server/conversation-runs.d.ts +13 -0
  475. package/sidecar/dist/server/conversation-runs.js +114 -0
  476. package/sidecar/dist/server/conversation-runs.js.map +1 -0
  477. package/sidecar/dist/server/http-io.d.ts +4 -0
  478. package/sidecar/dist/server/http-io.js +31 -0
  479. package/sidecar/dist/server/http-io.js.map +1 -0
  480. package/sidecar/dist/server/http-params.d.ts +9 -0
  481. package/sidecar/dist/server/http-params.js +79 -0
  482. package/sidecar/dist/server/http-params.js.map +1 -0
  483. package/sidecar/dist/server/http-routes.d.ts +27 -0
  484. package/sidecar/dist/server/http-routes.js +281 -0
  485. package/sidecar/dist/server/http-routes.js.map +1 -0
  486. package/sidecar/dist/server/http.d.ts +6 -1
  487. package/sidecar/dist/server/http.js +76 -164
  488. package/sidecar/dist/server/http.js.map +1 -1
  489. package/sidecar/dist/server/pending-queue.d.ts +2 -0
  490. package/sidecar/dist/server/pending-queue.js +16 -0
  491. package/sidecar/dist/server/pending-queue.js.map +1 -1
  492. package/sidecar/dist/server/permission-events.d.ts +15 -0
  493. package/sidecar/dist/server/permission-events.js +163 -0
  494. package/sidecar/dist/server/permission-events.js.map +1 -0
  495. package/sidecar/dist/server/routing.d.ts +4 -52
  496. package/sidecar/dist/server/routing.js +190 -501
  497. package/sidecar/dist/server/routing.js.map +1 -1
  498. package/sidecar/dist/server/safety-net.d.ts +7 -0
  499. package/sidecar/dist/server/safety-net.js +34 -6
  500. package/sidecar/dist/server/safety-net.js.map +1 -1
  501. package/sidecar/dist/server/services.d.ts +55 -0
  502. package/sidecar/dist/server/services.js +2 -0
  503. package/sidecar/dist/server/services.js.map +1 -0
  504. package/sidecar/dist/server/tool-calls.d.ts +6 -0
  505. package/sidecar/dist/server/tool-calls.js +134 -0
  506. package/sidecar/dist/server/tool-calls.js.map +1 -0
  507. package/sidecar/dist/server/turn-registry.d.ts +44 -0
  508. package/sidecar/dist/server/turn-registry.js +40 -0
  509. package/sidecar/dist/server/turn-registry.js.map +1 -0
  510. package/sidecar/dist/server/turns.d.ts +17 -0
  511. package/sidecar/dist/server/turns.js +335 -0
  512. package/sidecar/dist/server/turns.js.map +1 -0
  513. package/sidecar/dist/server/ws.d.ts +4 -1
  514. package/sidecar/dist/server/ws.js +102 -62
  515. package/sidecar/dist/server/ws.js.map +1 -1
  516. package/sidecar/dist/skills/build-catalog.d.ts +1 -0
  517. package/sidecar/dist/skills/build-catalog.js +14 -1
  518. package/sidecar/dist/skills/build-catalog.js.map +1 -1
  519. package/sidecar/dist/skills/skill-usage.d.ts +22 -0
  520. package/sidecar/dist/skills/skill-usage.js +97 -0
  521. package/sidecar/dist/skills/skill-usage.js.map +1 -0
  522. package/sidecar/dist/state/change-sets.d.ts +12 -0
  523. package/sidecar/dist/state/change-sets.js +77 -0
  524. package/sidecar/dist/state/change-sets.js.map +1 -0
  525. package/sidecar/dist/state/conversations.d.ts +19 -7
  526. package/sidecar/dist/state/conversations.js +61 -20
  527. package/sidecar/dist/state/conversations.js.map +1 -1
  528. package/sidecar/dist/state/host-state.d.ts +2 -1
  529. package/sidecar/dist/state/settings-store.d.ts +1 -0
  530. package/sidecar/dist/state/settings-store.js +27 -26
  531. package/sidecar/dist/state/settings-store.js.map +1 -1
  532. package/sidecar/dist/state/settings-types.d.ts +11 -1
  533. package/sidecar/dist/state/settings-types.js +3 -1
  534. package/sidecar/dist/state/settings-types.js.map +1 -1
  535. package/sidecar/dist/state/types.d.ts +114 -8
  536. package/sidecar/dist/state/types.js +6 -3
  537. package/sidecar/dist/state/types.js.map +1 -1
  538. package/skills/dms-builder-safe/REFERENCE.md +1 -1
  539. package/skills/dms-builder-safe/SKILL.md +12 -7
  540. package/dist/routes/proxy.d.ts +0 -4
  541. package/dist/routes/proxy.js +0 -55
  542. package/dist/routes/proxy.js.map +0 -1
  543. package/frontend-vue/app/chat/components/ComposerInput.vue +0 -742
  544. package/frontend-vue/app/chat/components/PermissionRequests.vue +0 -323
  545. package/frontend-vue/app/chat/components/QuestionPrompt.vue +0 -275
  546. package/frontend-vue/app/chat/components/QueuedMessages.vue +0 -109
  547. package/frontend-vue/app/chat/components/TodoList.vue +0 -291
  548. package/frontend-vue/app/chat/components/ToolCallEntry.vue +0 -218
  549. package/frontend-vue/app/chat/constants/connection-banner.ts +0 -7
  550. package/frontend-vue/app/chat/constants/conversation-drawer.ts +0 -13
  551. package/frontend-vue/app/chat/constants/permissions.ts +0 -50
  552. package/frontend-vue/app/chat/utils/tool-summary.ts +0 -53
  553. package/frontend-vue/app/components/ActivityView.vue +0 -94
  554. package/frontend-vue/app/components/SettingsView.vue +0 -387
  555. package/frontend-vue/app/components/SkillsView.vue +0 -230
  556. package/frontend-vue/app/runtime/header-action.ts +0 -64
  557. package/frontend-vue/app/runtime/overlay-prefs.ts +0 -89
  558. package/frontend-vue/app/runtime/panel-state.ts +0 -88
  559. package/frontend-vue/tests/overlay-prefs.test.ts +0 -91
  560. package/frontend-vue/tests/panel-state.test.ts +0 -58
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/constants/permissions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,MAAM,CAAC;AAEhD,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,IAAI,EAAE,MAAM;CACJ,CAAC;AAKX,MAAM,CAAC,MAAM,qBAAqB,GAAG,cAAc,CAAC;AACpD,MAAM,CAAC,MAAM,yBAAyB,GAAG,8BAA8B,CAAC;AACxE,MAAM,CAAC,MAAM,iCAAiC,GAAG,oBAAoB,CAAC;AAEtE,MAAM,CAAC,MAAM,yBAAyB,GAAG,4BAA4B,CAAC;AAEtE,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;CACJ,CAAC"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/constants/permissions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;CACZ,CAAC;AAGX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;CACd,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG,cAAc,CAAC;AACpD,MAAM,CAAC,MAAM,yBAAyB,GAAG,8BAA8B,CAAC;AACxE,MAAM,CAAC,MAAM,iCAAiC,GAAG,oBAAoB,CAAC;AAEtE,MAAM,CAAC,MAAM,yBAAyB,GAAG,4BAA4B,CAAC;AACtE,MAAM,CAAC,MAAM,0BAA0B,GAAG,iCAAiC,CAAC;AAC5E,MAAM,CAAC,MAAM,0BAA0B,GACrC,sKAAsK,CAAC;AACzK,MAAM,CAAC,MAAM,2BAA2B,GACtC,6EAA6E,CAAC;AAEhF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;CACJ,CAAC"}
@@ -2,5 +2,6 @@ import type { AppSettings } from "../state/settings-types.js";
2
2
  export declare const SETTINGS_FILE_NAME = "settings.json";
3
3
  export declare const SETTINGS_LOG_PREFIX = "[dms-ai sidecar settings]";
4
4
  export declare const DEFAULT_SETTINGS: AppSettings;
5
+ export declare const MS_PER_MINUTE = 60000;
5
6
  export declare const SAFE_MODE_DISALLOWED_TOOLS: string[];
6
- export declare const SAFE_MODE_DENIED_MESSAGE = "Safe generation mode is active: raw file edits are blocked. Use the Builder (\"Builder\u2026\") MCP tools instead. If the change genuinely can't be done through the Builder, ask the user to switch to Vibe mode for this step.";
7
+ export declare const SAFE_MODE_DENIED_MESSAGE = "Safe mode is active: shell commands and raw file edits are blocked. Make the change with the Builder (\"Builder\u2026\") MCP tools instead. If it genuinely cannot be done through the Builder, ask the user to switch to Code mode for this step.";
@@ -7,7 +7,13 @@ export const DEFAULT_SETTINGS = {
7
7
  thinking: "medium",
8
8
  generationMode: "safe",
9
9
  allowLocalSkills: false,
10
+ alwaysAskDependencies: true,
11
+ alwaysAskBlockRemoval: true,
12
+ requestTimeoutMinutes: 5,
13
+ notifyRequests: true,
14
+ checkpointRetentionDays: 30,
10
15
  };
16
+ export const MS_PER_MINUTE = 60_000;
11
17
  export const SAFE_MODE_DISALLOWED_TOOLS = [
12
18
  "Write",
13
19
  "Edit",
@@ -15,5 +21,5 @@ export const SAFE_MODE_DISALLOWED_TOOLS = [
15
21
  "NotebookEdit",
16
22
  "Bash",
17
23
  ];
18
- export const SAFE_MODE_DENIED_MESSAGE = 'Safe generation mode is active: raw file edits are blocked. Use the Builder ("Builder…") MCP tools instead. If the change genuinely can\'t be done through the Builder, ask the user to switch to Vibe mode for this step.';
24
+ export const SAFE_MODE_DENIED_MESSAGE = 'Safe mode is active: shell commands and raw file edits are blocked. Make the change with the Builder ("Builder…") MCP tools instead. If it genuinely cannot be done through the Builder, ask the user to switch to Code mode for this step.';
19
25
  //# sourceMappingURL=settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/constants/settings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAClD,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D,MAAM,CAAC,MAAM,gBAAgB,GAAgB;IAC3C,QAAQ,EAAE,qBAAqB;IAC/B,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,QAAQ;IAClB,cAAc,EAAE,MAAM;IACtB,gBAAgB,EAAE,KAAK;CACxB,CAAC;AAYF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,OAAO;IACP,MAAM;IACN,WAAW;IACX,cAAc;IACd,MAAM;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GACnC,4NAA4N,CAAC"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/constants/settings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAClD,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D,MAAM,CAAC,MAAM,gBAAgB,GAAgB;IAC3C,QAAQ,EAAE,qBAAqB;IAC/B,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,QAAQ;IAClB,cAAc,EAAE,MAAM;IACtB,gBAAgB,EAAE,KAAK;IACvB,qBAAqB,EAAE,IAAI;IAC3B,qBAAqB,EAAE,IAAI;IAC3B,qBAAqB,EAAE,CAAC;IACxB,cAAc,EAAE,IAAI;IACpB,uBAAuB,EAAE,EAAE;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAYpC,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,OAAO;IACP,MAAM;IACN,WAAW;IACX,cAAc;IACd,MAAM;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GACnC,6OAA6O,CAAC"}
@@ -0,0 +1,14 @@
1
+ export declare const EDIT_TOOL_NAMES: readonly string[];
2
+ export declare const COMMAND_TOOL_NAMES: readonly string[];
3
+ export declare const WEB_TOOL_NAMES: readonly string[];
4
+ export declare const BUILTIN_READ_TOOL_NAMES: readonly string[];
5
+ export declare const BUILDER_READ_TOOL_NAMES: readonly string[];
6
+ export declare const BUILDER_DESTRUCTIVE_TOOL_NAMES: readonly string[];
7
+ export declare const BUILDER_BLOCK_REMOVAL_TOOL_NAMES: readonly string[];
8
+ export declare const BUILDER_DELETE_RESOURCE_TOOL_NAME = "BuilderDeleteResource";
9
+ export declare const PROJECT_READ_TOOL_NAMES: readonly string[];
10
+ export declare const ASSISTANT_TOOL_NAMES: readonly string[];
11
+ export declare const BUILDER_MUTATING_TOOL_NAMES: readonly string[];
12
+ export declare const SKILL_TOOL_NAME = "Skill";
13
+ export declare const SKILL_TOOL_ARG_KEYS: readonly string[];
14
+ export declare const SKILL_FILE_NAME = "SKILL.md";
@@ -0,0 +1,65 @@
1
+ import { BUILDER_TOOL_NAMES } from "./builder.js";
2
+ import { QUERY_LOGS_TOOL_NAME } from "./logs.js";
3
+ import { ASK_USER_TOOL_NAME, GET_CURRENT_PAGE_TOOL_NAME, NAVIGATE_TOOL_NAME, } from "./mcp.js";
4
+ import { FIND_PAGES_TOOL_NAME, LIST_PAGES_TOOL_NAME } from "./pages.js";
5
+ import { TYPECHECK_TOOL_NAME } from "./typecheck.js";
6
+ export const EDIT_TOOL_NAMES = [
7
+ "Edit",
8
+ "Write",
9
+ "MultiEdit",
10
+ "NotebookEdit",
11
+ ];
12
+ export const COMMAND_TOOL_NAMES = ["Bash"];
13
+ export const WEB_TOOL_NAMES = ["WebFetch", "WebSearch"];
14
+ export const BUILTIN_READ_TOOL_NAMES = [
15
+ "Read",
16
+ "LS",
17
+ "Glob",
18
+ "Grep",
19
+ "NotebookRead",
20
+ "TodoWrite",
21
+ "Skill",
22
+ "Task",
23
+ "ExitPlanMode",
24
+ ];
25
+ export const BUILDER_READ_TOOL_NAMES = [
26
+ "BuilderCatalog",
27
+ "BuilderListPages",
28
+ "BuilderPageStructure",
29
+ "BuilderListResources",
30
+ "BuilderResourceStructure",
31
+ "BuilderQueryTemplates",
32
+ "BuilderRefresh",
33
+ ];
34
+ export const BUILDER_DESTRUCTIVE_TOOL_NAMES = [
35
+ "BuilderDeletePage",
36
+ "BuilderDeleteResource",
37
+ "BuilderRemoveField",
38
+ "BuilderDeleteCategory",
39
+ "BuilderRemoveQuery",
40
+ ];
41
+ export const BUILDER_BLOCK_REMOVAL_TOOL_NAMES = [
42
+ "BuilderRemoveBlock",
43
+ "BuilderMoveBlock",
44
+ ];
45
+ export const BUILDER_DELETE_RESOURCE_TOOL_NAME = "BuilderDeleteResource";
46
+ export const PROJECT_READ_TOOL_NAMES = [
47
+ GET_CURRENT_PAGE_TOOL_NAME,
48
+ NAVIGATE_TOOL_NAME,
49
+ FIND_PAGES_TOOL_NAME,
50
+ LIST_PAGES_TOOL_NAME,
51
+ TYPECHECK_TOOL_NAME,
52
+ QUERY_LOGS_TOOL_NAME,
53
+ ];
54
+ export const ASSISTANT_TOOL_NAMES = [
55
+ ASK_USER_TOOL_NAME,
56
+ "TodoWrite",
57
+ "Skill",
58
+ "Task",
59
+ "ExitPlanMode",
60
+ ];
61
+ export const BUILDER_MUTATING_TOOL_NAMES = BUILDER_TOOL_NAMES.filter((name) => !BUILDER_READ_TOOL_NAMES.includes(name));
62
+ export const SKILL_TOOL_NAME = "Skill";
63
+ export const SKILL_TOOL_ARG_KEYS = ["skill", "command"];
64
+ export const SKILL_FILE_NAME = "SKILL.md";
65
+ //# sourceMappingURL=tool-kinds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-kinds.js","sourceRoot":"","sources":["../../src/constants/tool-kinds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,MAAM,CAAC,MAAM,eAAe,GAAsB;IAChD,MAAM;IACN,OAAO;IACP,WAAW;IACX,cAAc;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAsB,CAAC,MAAM,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,cAAc,GAAsB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAG3E,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACxD,MAAM;IACN,IAAI;IACJ,MAAM;IACN,MAAM;IACN,cAAc;IACd,WAAW;IACX,OAAO;IACP,MAAM;IACN,cAAc;CACf,CAAC;AAGF,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACxD,gBAAgB;IAChB,kBAAkB;IAClB,sBAAsB;IACtB,sBAAsB;IACtB,0BAA0B;IAC1B,uBAAuB;IACvB,gBAAgB;CACjB,CAAC;AAGF,MAAM,CAAC,MAAM,8BAA8B,GAAsB;IAC/D,mBAAmB;IACnB,uBAAuB;IACvB,oBAAoB;IACpB,uBAAuB;IACvB,oBAAoB;CACrB,CAAC;AAGF,MAAM,CAAC,MAAM,gCAAgC,GAAsB;IACjE,oBAAoB;IACpB,kBAAkB;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAAG,uBAAuB,CAAC;AAGzE,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACxD,0BAA0B;IAC1B,kBAAkB;IAClB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,kBAAkB;IAClB,WAAW;IACX,OAAO;IACP,MAAM;IACN,cAAc;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GACtC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAsB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC"}
@@ -22,7 +22,11 @@ import { createPageFilepathResolver } from "./pages/page-filepath.js";
22
22
  import { createRegistryClient } from "./pages/registry-client.js";
23
23
  import { reapOrphanProviders } from "./providers/registry.js";
24
24
  import { createHostSocketRegistry } from "./server/host-socket-registry.js";
25
- import { createHttpServer } from "./server/http.js";
25
+ import { checkpointExcludes, createCheckpoints, } from "./checkpoints/checkpoints.js";
26
+ import { createShadowGit } from "./checkpoints/shadow-git.js";
27
+ import { CHANGE_SETS_FILE_NAME, CHECKPOINTS_GIT_DIR, } from "./constants/checkpoints.js";
28
+ import { createHttpServer, } from "./server/http.js";
29
+ import { createChangeSetStore } from "./state/change-sets.js";
26
30
  import { createIdleShutdownController, } from "./server/idle-shutdown.js";
27
31
  import { createNavigationCompleter } from "./server/navigation-completer.js";
28
32
  import { attachWsServer } from "./server/ws.js";
@@ -136,6 +140,7 @@ async function gracefulShutdown(deps, guard) {
136
140
  await deps.ws.close().catch(() => undefined);
137
141
  await deps.conversationStore.flush().catch(() => undefined);
138
142
  await deps.settingsStore.flush().catch(() => undefined);
143
+ await deps.checkpoints.flush().catch(() => undefined);
139
144
  await removeLock(deps.root);
140
145
  deps.server.close(() => process.exit(GRACEFUL_EXIT_CODE));
141
146
  }
@@ -172,7 +177,20 @@ function logStartup(args, port) {
172
177
  console.log(`DMS_AI_SIDECAR_ROOT=${args.root}`);
173
178
  console.log(`DMS_AI_SIDECAR_BACKEND_URL=${args.backendUrl}`);
174
179
  }
175
- function buildWsStack({ args, server, conversationStore, settingsStore, idleController, settingsApplier, backendToken, clientToken, mcpHttpRegistry, port, }) {
180
+ async function startCheckpoints(root, retentionDays) {
181
+ const stateDir = stateDirFor(root);
182
+ const checkpoints = createCheckpoints({
183
+ git: createShadowGit({
184
+ gitDir: path.join(stateDir, CHECKPOINTS_GIT_DIR),
185
+ workTree: root,
186
+ extraExcludes: checkpointExcludes(stateDir, root),
187
+ }),
188
+ store: createChangeSetStore(path.join(stateDir, CHANGE_SETS_FILE_NAME)),
189
+ });
190
+ await checkpoints.start(retentionDays);
191
+ return checkpoints;
192
+ }
193
+ function buildWsStack({ args, server, conversationStore, settingsStore, idleController, settingsApplier, backendToken, clientToken, mcpHttpRegistry, port, checkpoints, bridge, }) {
176
194
  const registry = createRegistryClient({
177
195
  backendBaseUrl: args.backendUrl,
178
196
  token: backendToken,
@@ -214,6 +232,8 @@ function buildWsStack({ args, server, conversationStore, settingsStore, idleCont
214
232
  navigationCompleter,
215
233
  idleController,
216
234
  settingsApplier,
235
+ checkpoints,
236
+ bridge,
217
237
  providerRuntime: {
218
238
  stateDir: stateDirFor(args.root),
219
239
  mcpHttpRegistry,
@@ -245,7 +265,10 @@ async function main() {
245
265
  await warnOnDuplicateSkillNames(resolveSkillSources(args.skillDirs, settingsStore.get().allowLocalSkills, os.homedir()));
246
266
  await reapOrphanProviders(stateDirFor(args.root));
247
267
  const mcpHttpRegistry = createMcpHttpRegistry();
268
+ const checkpoints = await startCheckpoints(args.root, settingsStore.get().checkpointRetentionDays);
269
+ const bridge = {};
248
270
  const { server, port } = await createHttpServer({
271
+ bridge,
249
272
  clientToken,
250
273
  mcpHttpRegistry,
251
274
  port: args.port,
@@ -267,6 +290,8 @@ async function main() {
267
290
  clientToken,
268
291
  mcpHttpRegistry,
269
292
  port,
293
+ checkpoints,
294
+ bridge,
270
295
  });
271
296
  const guard = { done: false };
272
297
  const deps = {
@@ -274,6 +299,7 @@ async function main() {
274
299
  ws,
275
300
  conversationStore,
276
301
  settingsStore,
302
+ checkpoints,
277
303
  root: args.root,
278
304
  };
279
305
  holder.run = () => void gracefulShutdown(deps, guard);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAwB,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EACL,4BAA4B,GAE7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAEL,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACL,mBAAmB,GAEpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,SAAS,sBAAsB;IAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,mBAAmB;QAAE,OAAO;IACzD,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAC3C,CAAC;AAED,sBAAsB,EAAE,CAAC;AAgBzB,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAMD,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,CAAC,EAAoB,EAAE,CACtB,CAAC,KAAK,IAAI;YACV,OAAO,CAAC,KAAK,QAAQ;YACrB,OAAQ,CAAiB,CAAC,MAAM,KAAK,QAAQ;YAC7C,OAAQ,CAAiB,CAAC,GAAG,KAAK,QAAQ,CAC7C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,WAAW,GAA8B;IAC7C,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,CAAC,CAAC,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,CAAC,CAAC,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACb,CAAC;IACD,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACb,CAAC;IACD,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxB,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC/B,CAAC,CAAC,cAAc,GAAG,CAAC,KAAK,GAAG,CAAC;IAC/B,CAAC;CACF,CAAC;AAEF,SAAS,aAAa;IACpB,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE;QACnB,UAAU,EAAE,2BAA2B;QACvC,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,EAAE;QACb,cAAc,EAAE,KAAK;KACtB,CAAC;AACJ,CAAC;AAGD,MAAM,UAAU,SAAS,CAAC,IAAuB;IAC/C,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QACjC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;YAC/C,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAClB,CAAC,EAAE,CAAC;IACN,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAID,MAAM,gBAAgB,GAA8B;IAClD,SAAS;IACT,QAAQ;IACR,QAAQ;CACT,CAAC;AAsBF,KAAK,UAAU,gBAAgB,CAC7B,IAAkB,EAClB,KAAoB;IAEpB,IAAI,KAAK,CAAC,IAAI;QAAE,OAAO;IACvB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAClB,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,GAAe,EACf,SAA+B,OAAO;IAEtC,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,kBAAkB,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,IAAY;IAEZ,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,MAAM,iBAAiB,CAAC,YAAY,EAAE,CAAC;IACvC,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAY;IAC5C,MAAM,aAAa,GAAG,mBAAmB,CAAC;QACxC,QAAQ,EAAE,qBAAqB,CAAC,IAAI,CAAC;KACtC,CAAC,CAAC;IACH,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB,EAAE,IAAY;IAChD,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/D,CAAC;AAgBD,SAAS,YAAY,CAAC,EACpB,IAAI,EACJ,MAAM,EACN,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,EACf,IAAI,GACQ;IACZ,MAAM,QAAQ,GAAG,oBAAoB,CAAC;QACpC,cAAc,EAAE,IAAI,CAAC,UAAU;QAC/B,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,eAAe,CAAC;QAChC,eAAe,EAAE,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC;KACjE,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,gBAAgB,CAAC;QAClC,cAAc,EAAE,IAAI,CAAC,UAAU;QAC/B,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,mBAAmB,CAAC;QACxC,cAAc,EAAE,IAAI,CAAC,UAAU;QAC/B,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,MAAM,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;IACtD,MAAM,mBAAmB,GAAG,yBAAyB,EAAE,CAAC;IACxD,OAAO,cAAc,CAAC,MAAM,EAAE;QAC5B,WAAW;QACX,eAAe,EAAE,IAAI,CAAC,IAAI;QAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,iBAAiB;QACjB,aAAa;QAGb,OAAO,EAAE;YACP,cAAc,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE;YAChD,QAAQ;YACR,OAAO;YACP,eAAe,EAAE,IAAI,CAAC,IAAI;YAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU;YACV,aAAa;YACb,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,mBAAmB;SACpB;QACD,SAAS;QACT,kBAAkB;QAClB,mBAAmB;QACnB,cAAc;QACd,eAAe;QACf,eAAe,EAAE;YACf,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAChC,eAAe;YACf,SAAS,EAAE,GAAG,EAAE,CACd,qBAAqB,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;SACnE;KACF,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,OAAsB;IAEtB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACxC,OAAO,CAAC,IAAI,CAAC,GAAG,4BAA4B,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzC,MAAM,iBAAiB,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAG1D,MAAM,eAAe,GAAoB;QACvC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;KACzC,CAAC;IACF,MAAM,YAAY,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrE,MAAM,MAAM,GAAmB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IACjD,MAAM,cAAc,GAAG,4BAA4B,CAAC;QAClD,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;KAC3B,CAAC,CAAC;IACH,MAAM,yBAAyB,CAC7B,mBAAmB,CACjB,IAAI,CAAC,SAAS,EACd,aAAa,CAAC,GAAG,EAAE,CAAC,gBAAgB,EACpC,EAAE,CAAC,OAAO,EAAE,CACb,CACF,CAAC;IAIF,MAAM,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,qBAAqB,EAAE,CAAC;IAChD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,gBAAgB,CAAC;QAC9C,WAAW;QACX,eAAe;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,cAAc,CAAC,KAAK;QACnC,iBAAiB;QACjB,aAAa;QACb,eAAe;QAGf,eAAe,EAAE,GAAG,EAAE,CACpB,mBAAmB,CACjB,IAAI,CAAC,SAAS,EACd,aAAa,CAAC,GAAG,EAAE,CAAC,gBAAgB,EACpC,EAAE,CAAC,OAAO,EAAE,CACb;KACJ,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,YAAY,CAAC;QACtB,IAAI;QACJ,MAAM;QACN,iBAAiB;QACjB,aAAa;QACb,cAAc;QACd,eAAe;QACf,YAAY;QACZ,WAAW;QACX,eAAe;QACf,IAAI;KACL,CAAC,CAAC;IACH,MAAM,KAAK,GAAkB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAiB;QACzB,MAAM;QACN,EAAE;QACF,iBAAiB;QACjB,aAAa;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;IACF,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,KAAK,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtD,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC3C,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE;QACzB,IAAI;QACJ,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,OAAO;QACP,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,KAAK,EAAE,YAAY;QACnB,WAAW;KACZ,CAAC,CAAC;IACH,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACzB,CAAC;AAKD,SAAS,YAAY;IACnB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,IAAI,YAAY,EAAE,EAAE,CAAC;IACnB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { ZodRawShape } from "zod";
2
- export interface McpToolTextContent {
2
+ interface McpToolTextContent {
3
3
  type: "text";
4
4
  text: string;
5
5
  }
@@ -7,7 +7,7 @@ export interface McpToolResult {
7
7
  content: McpToolTextContent[];
8
8
  [key: string]: unknown;
9
9
  }
10
- export type McpToolArgs<Schema extends ZodRawShape> = {
10
+ type McpToolArgs<Schema extends ZodRawShape> = {
11
11
  [K in keyof Schema]: Schema[K] extends {
12
12
  _output: infer Output;
13
13
  } ? Output : never;
@@ -21,3 +21,4 @@ export interface McpToolDefinition<Schema extends ZodRawShape = ZodRawShape> {
21
21
  }
22
22
  export type AnyMcpToolDefinition = McpToolDefinition<any>;
23
23
  export declare function defineTool<Schema extends ZodRawShape>(name: string, description: string, schema: Schema, handler: McpToolHandler<Schema>): McpToolDefinition<Schema>;
24
+ export {};
@@ -8,7 +8,10 @@ import { buildQueryLogsTool } from "./tools/query-logs.js";
8
8
  import { buildTypecheckTool } from "./tools/typecheck.js";
9
9
  export function buildToolDefinitions(deps) {
10
10
  const builderTools = deps.builderEnabled
11
- ? buildBuilderTools({ builderClient: deps.builderClient })
11
+ ? buildBuilderTools({
12
+ builderClient: deps.builderClient,
13
+ gate: deps.gateBuilderOp,
14
+ })
12
15
  : [];
13
16
  return [
14
17
  ...builderTools,
@@ -1 +1 @@
1
- {"version":3,"file":"tool-definitions.js","sourceRoot":"","sources":["../../src/mcp/tool-definitions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,UAAU,oBAAoB,CAClC,IAAqB;IAErB,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc;QACtC,CAAC,CAAC,iBAAiB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1D,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;QACL,GAAG,YAAY;QACf,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5C,uBAAuB,CAAC;YACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;QACF,kBAAkB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/C,uBAAuB,CAAC;YACtB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;QACF,gBAAgB,CAAC;YACf,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;QACF,kBAAkB,CAAC;YACjB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC;QACF,kBAAkB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;KACpD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tool-definitions.js","sourceRoot":"","sources":["../../src/mcp/tool-definitions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,UAAU,oBAAoB,CAClC,IAAqB;IAErB,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc;QACtC,CAAC,CAAC,iBAAiB,CAAC;YAChB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,IAAI,EAAE,IAAI,CAAC,aAAa;SACzB,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;QACL,GAAG,YAAY;QACf,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5C,uBAAuB,CAAC;YACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;QACF,kBAAkB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/C,uBAAuB,CAAC;YACtB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;QACF,gBAAgB,CAAC;YACf,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC;QACF,kBAAkB,CAAC;YACjB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC;QACF,kBAAkB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;KACpD,CAAC;AACJ,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { z } from "zod";
2
- import type { QuestionRequest } from "../../agent/question-bus.js";
2
+ import type { QuestionAnswers, QuestionRequest } from "../../agent/question-bus.js";
3
3
  export interface AskUserDeps {
4
4
  conversationId: string;
5
- requestQuestion: (req: QuestionRequest) => Promise<string[] | null>;
5
+ requestQuestion: (req: QuestionRequest) => Promise<QuestionAnswers>;
6
6
  }
7
7
  export declare function buildAskUserTool(deps: AskUserDeps): import("../define-tool.js").McpToolDefinition<{
8
8
  readonly questions: z.ZodArray<z.ZodObject<{
@@ -1,15 +1,18 @@
1
1
  import { z } from "zod";
2
- import { ASK_USER_RESULT_NO_ANSWER, ASK_USER_RESULT_PREFIX, ASK_USER_TOOL_DESCRIPTION, ASK_USER_TOOL_NAME, } from "../../constants/mcp.js";
2
+ import { ASK_USER_RESULT_NO_ANSWER, ASK_USER_RESULT_PREFIX, ASK_USER_RESULT_SKIPPED, ASK_USER_TOOL_DESCRIPTION, ASK_USER_TOOL_NAME, } from "../../constants/mcp.js";
3
3
  import { QuestionSchema } from "../../protocol/events.js";
4
4
  import { defineTool } from "../define-tool.js";
5
5
  const INPUT_SCHEMA = {
6
6
  questions: z.array(QuestionSchema).min(1).max(4),
7
7
  };
8
- function buildResultText(questions, answers) {
9
- if (answers === null)
8
+ const NO_ANSWER_PLACEHOLDER = "(no answer)";
9
+ function buildResultText(questions, reply) {
10
+ if (reply === null)
10
11
  return ASK_USER_RESULT_NO_ANSWER;
11
12
  const lines = questions.map((q, i) => {
12
- const answer = answers[i] ?? "(no answer)";
13
+ if (reply.skipped[i] === true)
14
+ return `- ${q.header}: ${ASK_USER_RESULT_SKIPPED}`;
15
+ const answer = reply.answers[i] ?? NO_ANSWER_PLACEHOLDER;
13
16
  return `- ${q.header}: ${answer}`;
14
17
  });
15
18
  return `${ASK_USER_RESULT_PREFIX}\n${lines.join("\n")}`;
@@ -1 +1 @@
1
- {"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../../src/mcp/tools/ask-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAqB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAO/C,MAAM,YAAY,GAAG;IACnB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACxC,CAAC;AAEX,SAAS,eAAe,CACtB,SAAyB,EACzB,OAAwB;IAExB,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,yBAAyB,CAAC;IACvD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC;QAC3C,OAAO,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,sBAAsB,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAGhC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAiB;IAChD,OAAO,UAAU,CACf,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,KAAK,EAAE,EAAE,SAAS,EAAiC,EAAE,EAAE;QACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;YACzC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS;SACV,CAAC,CAAC;QACH,OAAO,YAAY,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../../src/mcp/tools/ask-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAqB,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAO/C,MAAM,YAAY,GAAG;IACnB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACxC,CAAC;AAEX,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAE5C,SAAS,eAAe,CACtB,SAAyB,EACzB,KAAsB;IAEtB,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,yBAAyB,CAAC;IACrD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;YAC3B,OAAO,KAAK,CAAC,CAAC,MAAM,KAAK,uBAAuB,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC;QACzD,OAAO,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,sBAAsB,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAGhC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAiB;IAChD,OAAO,UAAU,CACf,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,KAAK,EAAE,EAAE,SAAS,EAAiC,EAAE,EAAE;QACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;YACzC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS;SACV,CAAC,CAAC;QACH,OAAO,YAAY,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type BuilderCatalogSection } from "../../constants/builder.js";
2
+ export type CatalogSelection = Partial<Record<BuilderCatalogSection, string[] | undefined>>;
3
+ export declare function shapeCatalog(catalog: unknown, selection: CatalogSelection): unknown;
@@ -0,0 +1,86 @@
1
+ import { BUILDER_CATALOG_DETAIL_HINT, BUILDER_CATALOG_SECTIONS, } from "../../constants/builder.js";
2
+ function textOf(value) {
3
+ return typeof value === "string" && value !== "" ? value : undefined;
4
+ }
5
+ function configKeysOf(entry) {
6
+ const config = entry.config;
7
+ if (config === null || typeof config !== "object")
8
+ return [];
9
+ return Object.keys(config);
10
+ }
11
+ function summarizeBlock(entry) {
12
+ return {
13
+ type: entry.type,
14
+ description: textOf(entry.description) ?? textOf(entry.label) ?? "",
15
+ group: entry.group,
16
+ container: entry.container === true,
17
+ controllerArg: entry.controllerArg === true ? true : undefined,
18
+ };
19
+ }
20
+ function summarizeDataType(entry) {
21
+ return {
22
+ id: entry.id,
23
+ description: textOf(entry.description),
24
+ configKeys: configKeysOf(entry),
25
+ };
26
+ }
27
+ const SECTION_SHAPES = {
28
+ blocks: { nameKey: "type", summarize: summarizeBlock },
29
+ dataTypes: { nameKey: "id", summarize: summarizeDataType },
30
+ };
31
+ function isRecord(value) {
32
+ return value !== null && typeof value === "object" && !Array.isArray(value);
33
+ }
34
+ function entriesOf(catalog, section) {
35
+ const entries = catalog[section];
36
+ return Array.isArray(entries) ? entries.filter(isRecord) : [];
37
+ }
38
+ function isCatalog(value) {
39
+ if (!isRecord(value))
40
+ return false;
41
+ return BUILDER_CATALOG_SECTIONS.every((s) => Array.isArray(value[s]));
42
+ }
43
+ function isSection(key) {
44
+ return BUILDER_CATALOG_SECTIONS.includes(key);
45
+ }
46
+ function buildIndex(catalog) {
47
+ const index = {};
48
+ for (const [key, value] of Object.entries(catalog)) {
49
+ if (!isSection(key)) {
50
+ index[key] = value;
51
+ continue;
52
+ }
53
+ index[key] = entriesOf(catalog, key).map(SECTION_SHAPES[key].summarize);
54
+ }
55
+ return { ...index, detail: BUILDER_CATALOG_DETAIL_HINT };
56
+ }
57
+ function unknownKeyOf(section) {
58
+ return `unknown${section.charAt(0).toUpperCase()}${section.slice(1)}`;
59
+ }
60
+ function selectSection(catalog, section, names) {
61
+ const { nameKey } = SECTION_SHAPES[section];
62
+ const entries = entriesOf(catalog, section);
63
+ const selected = entries.filter((e) => names.includes(String(e[nameKey])));
64
+ const found = new Set(selected.map((e) => String(e[nameKey])));
65
+ const unknown = names.filter((name) => !found.has(name));
66
+ const detail = { [section]: selected };
67
+ if (unknown.length > 0)
68
+ detail[unknownKeyOf(section)] = unknown;
69
+ return detail;
70
+ }
71
+ function hasSelection(selection) {
72
+ return BUILDER_CATALOG_SECTIONS.some((s) => (selection[s]?.length ?? 0) > 0);
73
+ }
74
+ export function shapeCatalog(catalog, selection) {
75
+ if (!isCatalog(catalog))
76
+ return catalog;
77
+ if (!hasSelection(selection))
78
+ return buildIndex(catalog);
79
+ return BUILDER_CATALOG_SECTIONS.reduce((detail, section) => {
80
+ const names = selection[section];
81
+ if (names === undefined || names.length === 0)
82
+ return detail;
83
+ return { ...detail, ...selectSection(catalog, section, names) };
84
+ }, {});
85
+ }
86
+ //# sourceMappingURL=builder-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder-catalog.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { AnyMcpToolDefinition } from "../define-tool.js";
2
+ export interface BuilderGateDecision {
3
+ isAllowed: boolean;
4
+ message?: string;
5
+ keepData?: boolean;
6
+ }
7
+ export type BuilderGate = (toolName: string, args: Record<string, unknown>) => Promise<BuilderGateDecision>;
8
+ export declare function gateBuilderTools(tools: AnyMcpToolDefinition[], gate: BuilderGate): AnyMcpToolDefinition[];
@@ -0,0 +1,22 @@
1
+ import { isMutatingBuilderTool } from "../../agent/tool-kinds.js";
2
+ function refusal(message) {
3
+ return { content: [{ type: "text", text: message ?? "" }], isError: true };
4
+ }
5
+ function withGate(definition, gate) {
6
+ if (!isMutatingBuilderTool(definition.name))
7
+ return definition;
8
+ return {
9
+ ...definition,
10
+ handler: async (args, extra) => {
11
+ const decision = await gate(definition.name, args);
12
+ if (!decision.isAllowed)
13
+ return refusal(decision.message);
14
+ const granted = decision.keepData === true ? { ...args, keepData: true } : args;
15
+ return definition.handler(granted, extra);
16
+ },
17
+ };
18
+ }
19
+ export function gateBuilderTools(tools, gate) {
20
+ return tools.map((definition) => withGate(definition, gate));
21
+ }
22
+ //# sourceMappingURL=builder-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder-gate.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder-gate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAsBlE,SAAS,OAAO,CAAC,OAA2B;IAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,QAAQ,CACf,UAAgC,EAChC,IAAiB;IAEjB,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IAC/D,OAAO;QACL,GAAG,UAAU;QACb,OAAO,EAAE,KAAK,EAAE,IAA6B,EAAE,KAAc,EAAE,EAAE;YAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,SAAS;gBAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM,OAAO,GACX,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAClE,OAAO,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;KACF,CAAC;AACJ,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAC9B,KAA6B,EAC7B,IAAiB;IAEjB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/D,CAAC"}
@@ -1,9 +1,14 @@
1
1
  import { z } from "zod";
2
2
  import type { BuilderClient } from "../../builder/builder-client.js";
3
+ import { type BuilderGate } from "./builder-gate.js";
3
4
  export interface BuilderToolsDeps {
4
5
  builderClient: BuilderClient;
6
+ gate?: BuilderGate;
5
7
  }
6
- export declare function buildBuilderTools(deps: BuilderToolsDeps): (import("../define-tool.js").McpToolDefinition<{}> | import("../define-tool.js").McpToolDefinition<{
8
+ export declare function buildBuilderTools(deps: BuilderToolsDeps): import("../define-tool.js").AnyMcpToolDefinition[] | (import("../define-tool.js").McpToolDefinition<{
9
+ blocks: z.ZodOptional<z.ZodArray<z.ZodString>>;
10
+ dataTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
11
+ }> | import("../define-tool.js").McpToolDefinition<{}> | import("../define-tool.js").McpToolDefinition<{
7
12
  pageRef: z.ZodString;
8
13
  }> | import("../define-tool.js").McpToolDefinition<{
9
14
  name: z.ZodString;
@@ -78,10 +83,10 @@ export declare function buildBuilderTools(deps: BuilderToolsDeps): (import("../d
78
83
  page: z.ZodString;
79
84
  }, z.core.$strip>]>>;
80
85
  routes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
86
+ edit: "edit";
81
87
  list: "list";
82
88
  get: "get";
83
89
  create: "create";
84
- edit: "edit";
85
90
  delete: "delete";
86
91
  select: "select";
87
92
  archive: "archive";
@@ -1,8 +1,18 @@
1
1
  import { z } from "zod";
2
2
  import { BUILDER_ESCALATION_NOTE, BUILDER_EXPR_REFUSAL, BUILDER_REF_NOTE, } from "../../prompts/builder.js";
3
3
  import { defineTool } from "../define-tool.js";
4
- function content(text) {
5
- return { content: [{ type: "text", text }] };
4
+ import { gateBuilderTools } from "./builder-gate.js";
5
+ import { shapeCatalog } from "./builder-catalog.js";
6
+ function isFailedOp(value) {
7
+ return (value !== null &&
8
+ typeof value === "object" &&
9
+ value.ok === false);
10
+ }
11
+ function opResult(value) {
12
+ const text = JSON.stringify(value);
13
+ if (!isFailedOp(value))
14
+ return { content: [{ type: "text", text }] };
15
+ return { content: [{ type: "text", text }], isError: true };
6
16
  }
7
17
  function note(description) {
8
18
  return `${description}\n\n${BUILDER_ESCALATION_NOTE}`;
@@ -21,10 +31,10 @@ function hasExprSentinel(value) {
21
31
  return false;
22
32
  }
23
33
  function exprRefusal() {
24
- return content(JSON.stringify({
34
+ return opResult({
25
35
  ok: false,
26
36
  error: { code: "unsupported", detail: BUILDER_EXPR_REFUSAL },
27
- }));
37
+ });
28
38
  }
29
39
  const CONFIG = z.record(z.string(), z.unknown());
30
40
  const BLOCK_PATH_FORMAT = "A block path from BuilderPageStructure: `<pageRef>#<block>` for a top-level block, then `/<child>` per nesting level (e.g. `/dashboard#grid/row/kpi`). Separators: `#` after the page, `/` between blocks.";
@@ -106,9 +116,28 @@ const FIELD_ASPECTS_PATCH = z.object({
106
116
  dataType: DATA_TYPE_VALUE.optional(),
107
117
  });
108
118
  export function buildBuilderTools(deps) {
109
- const run = async (op, args) => content(JSON.stringify(await deps.builderClient.call(op, args)));
119
+ const tools = buildUngatedBuilderTools(deps);
120
+ return deps.gate === undefined ? tools : gateBuilderTools(tools, deps.gate);
121
+ }
122
+ function buildUngatedBuilderTools(deps) {
123
+ const run = async (op, args) => opResult(await deps.builderClient.call(op, args));
124
+ return [
125
+ buildCatalogTool(deps.builderClient),
126
+ ...buildPageTools(run),
127
+ ...buildBlockTools(run),
128
+ ...buildResourceTools(run),
129
+ ...buildQueryTools(run),
130
+ ];
131
+ }
132
+ const CATALOG_NAMES = z.array(z.string()).optional();
133
+ function buildCatalogTool(builderClient) {
134
+ return defineTool("BuilderCatalog", note("The block types and DataTypes the page builder can emit. Without arguments it returns a compact index: each block type with a one-line description, its group, whether it is a `container` and whether it binds a resource (`controllerArg`); each DataType id with its config keys; and `reservedFieldNames`. Then pass `blocks` and/or `dataTypes` with the names you will use to get their full config schemas — always do so before adding or configuring a block of that type. For a config field whose schema is marked `x-dataType` (e.g. a Form field's `type`), pass a DataType value `{ $dataType: \"<id>\", config: {…} }` using an id and config from this catalog's `dataTypes` — never a raw `$expr`."), {
135
+ blocks: CATALOG_NAMES.describe("Block types (e.g. `TableView`, `Grid`) whose full config schema to return."),
136
+ dataTypes: CATALOG_NAMES.describe("DataType ids (e.g. `select`, `relation`) whose full config schema to return."),
137
+ }, async (selection) => opResult(shapeCatalog(await builderClient.call("GetCatalog", []), selection)));
138
+ }
139
+ function buildPageTools(run) {
110
140
  return [
111
- defineTool("BuilderCatalog", note("Lists every block type and DataType the page builder can emit, with their config schemas. Call this before adding blocks so you use valid types and options. For a config field whose schema is marked `x-dataType` (e.g. a Form field's `type`), pass a DataType value `{ $dataType: \"<id>\", config: {…} }` using an id and config from this catalog's `dataTypes` — never a raw `$expr`."), {}, () => run("GetCatalog", [])),
112
141
  defineTool("BuilderListPages", note("Lists all builder-editable pages (route, id, category, file)."), {}, () => run("ListPages", [])),
113
142
  defineTool("BuilderPageStructure", note(`Returns a page's block tree (each block's path, type, editability, config) plus a version hash for optimistic concurrency. ${BLOCK_PATH_FORMAT}`), { pageRef: z.string() }, ({ pageRef }) => run("GetPageStructure", [pageRef])),
114
143
  defineTool("BuilderCreatePage", note("Creates a new page under an existing category and wires it into the barrel so it registers."), {
@@ -123,6 +152,10 @@ export function buildBuilderTools(deps) {
123
152
  ? exprRefusal()
124
153
  : run("ConfigurePage", [pageRef, patch])),
125
154
  defineTool("BuilderDeletePage", note("Deletes a page file and removes its barrel import."), { pageRef: z.string() }, ({ pageRef }) => run("DeletePage", [pageRef])),
155
+ ];
156
+ }
157
+ function buildBlockTools(run) {
158
+ return [
126
159
  defineTool("BuilderAddBlock", note("Adds a block. Omit `parent` for a top-level block, or pass a container block's path to nest. `type` and `config` must match the catalog. Block types the catalog marks `controllerArg: true` (e.g. `TableView`) bind to a data resource: pass `controller` = the resource `ref` from BuilderListResources (its DataAPI class becomes the block's leading argument) and put the display options in `config`."), {
127
160
  page: z.string(),
128
161
  parent: PARENT_PATH.optional(),
@@ -159,7 +192,11 @@ export function buildBuilderTools(deps) {
159
192
  ? exprRefusal()
160
193
  : run("ConfigureCategory", [ref, patch])),
161
194
  defineTool("BuilderDeleteCategory", note("Deletes a category. Refused with referential_integrity if any page still references it."), { ref: z.string() }, ({ ref }) => run("DeleteCategory", [ref])),
162
- defineTool("BuilderRefresh", note("Reconciles the builder's source index with disk after out-of-band edits (e.g. a vibe-mode excursion)."), { pageRef: z.string().optional() }, ({ pageRef }) => run("RefreshSourceIndex", pageRef ? [{ page: pageRef }] : [])),
195
+ defineTool("BuilderRefresh", note("Reconciles the builder's source index with disk after out-of-band edits (e.g. a Code mode excursion)."), { pageRef: z.string().optional() }, ({ pageRef }) => run("RefreshSourceIndex", pageRef ? [{ page: pageRef }] : [])),
196
+ ];
197
+ }
198
+ function buildResourceTools(run) {
199
+ return [
163
200
  defineTool("BuilderListResources", note("Lists every data resource (its ref, class/table names, /api route, field count, files). A resource is a Database Table+Model paired with a DataAPI controller."), {}, () => run("ListResources", [])),
164
201
  defineTool("BuilderResourceStructure", note("Returns a resource's fields with their semantic aspects, its `routes` (absent when it serves the full set), and a version hash for optimistic concurrency. Hand-edited or relation fields come back marked `opaque` — safe mode cannot reconfigure those."), { ref: z.string() }, ({ ref }) => run("GetResourceStructure", [ref])),
165
202
  defineTool("BuilderCreateResource", note("Creates a data resource — a Database Table+Model plus a matching DataAPI controller at /api/<name> — as a folder wired into the nearest barrel. Every resource auto-manages its own `_id`. When you limit `routes`, keep the view in sync: drop the TableView rowActions whose routes you left out, or bind a Form instead."), {
@@ -177,6 +214,10 @@ export function buildBuilderTools(deps) {
177
214
  ? exprRefusal()
178
215
  : run("ConfigureField", [path, patch])),
179
216
  defineTool("BuilderRemoveField", note("Removes a field from a resource's Table and DataAPI classes in one atomic op. Leaves seed rows untouched."), { path: FIELD_PATH }, ({ path }) => run("RemoveField", [path])),
217
+ ];
218
+ }
219
+ function buildQueryTools(run) {
220
+ return [
180
221
  defineTool("BuilderQueryTemplates", note("Lists the query templates BuilderAddQuery can compile, each with its id, what it computes, its `output` kind, and the JSON Schema for its `params`. Call this before adding a query — the schema is the reference for every parameter and value shape."), {
181
222
  resourceType: z
182
223
  .string()