@antelopejs/dms-ai 0.8.0 → 0.9.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 (275) hide show
  1. package/README.md +2 -1
  2. package/dist/lifecycle/skill-sources.js +19 -146
  3. package/dist/lifecycle/skill-sources.js.map +1 -1
  4. package/dist/pages/settings/availability.js +8 -1
  5. package/dist/pages/settings/availability.js.map +1 -1
  6. package/dist/pages/settings/options.d.ts +2 -1
  7. package/dist/pages/settings/options.js +29 -8
  8. package/dist/pages/settings/options.js.map +1 -1
  9. package/dist/pages/settings/sections.js +25 -4
  10. package/dist/pages/settings/sections.js.map +1 -1
  11. package/dist/routes/builder.d.ts +3 -3
  12. package/dist/routes/builder.js +10 -2
  13. package/dist/routes/builder.js.map +1 -1
  14. package/dist/routes/settings.js +1 -1
  15. package/dist/routes/settings.js.map +1 -1
  16. package/dist/sidecar/settings-values.d.ts +3 -0
  17. package/dist/sidecar/settings-values.js +33 -1
  18. package/dist/sidecar/settings-values.js.map +1 -1
  19. package/dist/vocabulary/enumerations.js +2 -0
  20. package/dist/vocabulary/enumerations.js.map +1 -1
  21. package/dist/vocabulary/tools.js +3 -0
  22. package/dist/vocabulary/tools.js.map +1 -1
  23. package/frontend-vue/app/chat/components/ChatView.vue +53 -85
  24. package/frontend-vue/app/chat/components/Composer.vue +23 -39
  25. package/frontend-vue/app/chat/components/NoticeCard.vue +25 -0
  26. package/frontend-vue/app/chat/components/PanelHeader.vue +2 -6
  27. package/frontend-vue/app/chat/components/ProviderNotice.vue +14 -3
  28. package/frontend-vue/app/chat/composables/conversation-events.ts +4 -3
  29. package/frontend-vue/app/chat/composables/useConversation.ts +6 -0
  30. package/frontend-vue/app/chat/composables/useConversationMode.ts +8 -11
  31. package/frontend-vue/app/chat/composables/useFollowScroll.ts +77 -0
  32. package/frontend-vue/app/chat/constants/modes.ts +15 -0
  33. package/frontend-vue/app/chat/constants/protocol.ts +0 -1
  34. package/frontend-vue/app/chat/constants/settings.ts +1 -1
  35. package/frontend-vue/app/chat/types/protocol.ts +19 -9
  36. package/frontend-vue/app/chat/types/settings.ts +7 -2
  37. package/frontend-vue/app/chat/utils/permission-view.ts +1 -0
  38. package/frontend-vue/app/chat/utils/status-label.ts +50 -0
  39. package/frontend-vue/app/chat/utils/tool-lexicon.ts +16 -0
  40. package/frontend-vue/app/plugins/ai.client.ts +2 -2
  41. package/frontend-vue/app/runtime/assistant-actions.ts +4 -2
  42. package/frontend-vue/app/runtime/assistant-session.ts +5 -1
  43. package/frontend-vue/app/runtime/block-health.ts +135 -0
  44. package/frontend-vue/app/runtime/constants.ts +1 -0
  45. package/frontend-vue/app/runtime/navigation-complete.ts +47 -6
  46. package/frontend-vue/app/runtime/panel-intents.ts +6 -2
  47. package/frontend-vue/app/views/constants.ts +2 -0
  48. package/frontend-vue/app/views/types.ts +3 -1
  49. package/frontend-vue/i18n/locales/dms-ai-pages-en-GB.json +28 -11
  50. package/frontend-vue/i18n/locales/dms-ai-pages-fr-FR.json +28 -11
  51. package/frontend-vue/i18n/locales/dms-ai-panel-en-GB.json +17 -22
  52. package/frontend-vue/i18n/locales/dms-ai-panel-fr-FR.json +17 -22
  53. package/frontend-vue/i18n/locales/dms-ai-views-en-GB.json +2 -0
  54. package/frontend-vue/i18n/locales/dms-ai-views-fr-FR.json +2 -0
  55. package/frontend-vue/tests/assistant-actions.test.ts +37 -0
  56. package/frontend-vue/tests/block-health.test.ts +142 -0
  57. package/frontend-vue/tests/chat/chat-scroll.test.ts +251 -0
  58. package/frontend-vue/tests/chat/conversation-events.test.ts +35 -3
  59. package/frontend-vue/tests/chat/provider-notice.test.ts +33 -0
  60. package/frontend-vue/tests/chat/tool-lexicon.test.ts +1 -0
  61. package/frontend-vue/tests/chat-panel.test.ts +2 -4
  62. package/frontend-vue/tests/navigation.test.ts +67 -2
  63. package/frontend-vue/tests/panel-modes.test.ts +146 -0
  64. package/frontend-vue/tests/panel-questions.test.ts +1 -19
  65. package/frontend-vue/tests/panel-states.test.ts +3 -15
  66. package/frontend-vue/tests/support/fake-layout.ts +119 -0
  67. package/frontend-vue/tests/support/panel-harness.ts +16 -8
  68. package/frontend-vue/tests/support/setup-layout.ts +3 -0
  69. package/frontend-vue/tests/support/stubs.ts +2 -0
  70. package/frontend-vue/vitest.config.ts +1 -0
  71. package/package.json +6 -5
  72. package/sidecar/dist/agent/always-ask-files.d.ts +2 -0
  73. package/sidecar/dist/agent/always-ask-files.js +34 -0
  74. package/sidecar/dist/agent/always-ask-files.js.map +1 -0
  75. package/sidecar/dist/agent/conversation-modes.d.ts +3 -12
  76. package/sidecar/dist/agent/conversation-modes.js +16 -69
  77. package/sidecar/dist/agent/conversation-modes.js.map +1 -1
  78. package/sidecar/dist/agent/effective-mode.d.ts +2 -5
  79. package/sidecar/dist/agent/effective-mode.js +1 -15
  80. package/sidecar/dist/agent/effective-mode.js.map +1 -1
  81. package/sidecar/dist/agent/permission-bus.d.ts +1 -2
  82. package/sidecar/dist/agent/permission-bus.js +1 -3
  83. package/sidecar/dist/agent/permission-bus.js.map +1 -1
  84. package/sidecar/dist/agent/permission-preview.d.ts +6 -0
  85. package/sidecar/dist/agent/permission-preview.js +35 -10
  86. package/sidecar/dist/agent/permission-preview.js.map +1 -1
  87. package/sidecar/dist/agent/permission-rules.js +2 -2
  88. package/sidecar/dist/agent/permission-rules.js.map +1 -1
  89. package/sidecar/dist/agent/project-secrets.d.ts +7 -0
  90. package/sidecar/dist/agent/project-secrets.js +61 -0
  91. package/sidecar/dist/agent/project-secrets.js.map +1 -0
  92. package/sidecar/dist/agent/provider.d.ts +10 -4
  93. package/sidecar/dist/agent/runner.d.ts +8 -2
  94. package/sidecar/dist/agent/runner.js +11 -3
  95. package/sidecar/dist/agent/runner.js.map +1 -1
  96. package/sidecar/dist/agent/session.d.ts +3 -3
  97. package/sidecar/dist/agent/session.js.map +1 -1
  98. package/sidecar/dist/agent/tool-kinds.d.ts +7 -1
  99. package/sidecar/dist/agent/tool-kinds.js +24 -5
  100. package/sidecar/dist/agent/tool-kinds.js.map +1 -1
  101. package/sidecar/dist/audit/activity-query.js +2 -0
  102. package/sidecar/dist/audit/activity-query.js.map +1 -1
  103. package/sidecar/dist/audit/activity.js +1 -0
  104. package/sidecar/dist/audit/activity.js.map +1 -1
  105. package/sidecar/dist/builder/builder-client.js +14 -2
  106. package/sidecar/dist/builder/builder-client.js.map +1 -1
  107. package/sidecar/dist/constants/audit.d.ts +1 -3
  108. package/sidecar/dist/constants/audit.js +2 -1
  109. package/sidecar/dist/constants/audit.js.map +1 -1
  110. package/sidecar/dist/constants/builder.d.ts +5 -1
  111. package/sidecar/dist/constants/builder.js +15 -0
  112. package/sidecar/dist/constants/builder.js.map +1 -1
  113. package/sidecar/dist/constants/claude.d.ts +8 -0
  114. package/sidecar/dist/constants/claude.js +8 -0
  115. package/sidecar/dist/constants/claude.js.map +1 -1
  116. package/sidecar/dist/constants/codex.d.ts +4 -0
  117. package/sidecar/dist/constants/codex.js +4 -0
  118. package/sidecar/dist/constants/codex.js.map +1 -1
  119. package/sidecar/dist/constants/mcp.d.ts +1 -1
  120. package/sidecar/dist/constants/mcp.js +1 -1
  121. package/sidecar/dist/constants/mcp.js.map +1 -1
  122. package/sidecar/dist/constants/native-binary.d.ts +5 -2
  123. package/sidecar/dist/constants/native-binary.js +5 -2
  124. package/sidecar/dist/constants/native-binary.js.map +1 -1
  125. package/sidecar/dist/constants/permissions.d.ts +2 -0
  126. package/sidecar/dist/constants/permissions.js +23 -0
  127. package/sidecar/dist/constants/permissions.js.map +1 -1
  128. package/sidecar/dist/constants/project-secrets.d.ts +5 -0
  129. package/sidecar/dist/constants/project-secrets.js +20 -0
  130. package/sidecar/dist/constants/project-secrets.js.map +1 -0
  131. package/sidecar/dist/constants/providers.d.ts +2 -0
  132. package/sidecar/dist/constants/providers.js +1 -0
  133. package/sidecar/dist/constants/providers.js.map +1 -1
  134. package/sidecar/dist/constants/settings.d.ts +2 -2
  135. package/sidecar/dist/constants/settings.js +4 -9
  136. package/sidecar/dist/constants/settings.js.map +1 -1
  137. package/sidecar/dist/constants/timing.d.ts +1 -0
  138. package/sidecar/dist/constants/timing.js +1 -0
  139. package/sidecar/dist/constants/timing.js.map +1 -1
  140. package/sidecar/dist/constants/tool-kinds.d.ts +67 -2
  141. package/sidecar/dist/constants/tool-kinds.js +111 -33
  142. package/sidecar/dist/constants/tool-kinds.js.map +1 -1
  143. package/sidecar/dist/mcp/tools/builder-compose.d.ts +51 -0
  144. package/sidecar/dist/mcp/tools/builder-compose.js +96 -0
  145. package/sidecar/dist/mcp/tools/builder-compose.js.map +1 -0
  146. package/sidecar/dist/mcp/tools/builder-gate.js +3 -1
  147. package/sidecar/dist/mcp/tools/builder-gate.js.map +1 -1
  148. package/sidecar/dist/mcp/tools/builder-project.js +119 -4
  149. package/sidecar/dist/mcp/tools/builder-project.js.map +1 -1
  150. package/sidecar/dist/mcp/tools/builder-queries.d.ts +31 -0
  151. package/sidecar/dist/mcp/tools/builder-queries.js +30 -13
  152. package/sidecar/dist/mcp/tools/builder-queries.js.map +1 -1
  153. package/sidecar/dist/mcp/tools/builder-table-view-schema.d.ts +99 -0
  154. package/sidecar/dist/mcp/tools/builder-table-view-schema.js +118 -0
  155. package/sidecar/dist/mcp/tools/builder-table-view-schema.js.map +1 -0
  156. package/sidecar/dist/mcp/tools/builder-table-view.d.ts +102 -0
  157. package/sidecar/dist/mcp/tools/builder-table-view.js +24 -0
  158. package/sidecar/dist/mcp/tools/builder-table-view.js.map +1 -0
  159. package/sidecar/dist/mcp/tools/builder.d.ts +135 -1
  160. package/sidecar/dist/mcp/tools/builder.js +17 -4
  161. package/sidecar/dist/mcp/tools/builder.js.map +1 -1
  162. package/sidecar/dist/mcp/tools/navigate-to-page.js +12 -4
  163. package/sidecar/dist/mcp/tools/navigate-to-page.js.map +1 -1
  164. package/sidecar/dist/pages/block-health.d.ts +14 -0
  165. package/sidecar/dist/pages/block-health.js +60 -0
  166. package/sidecar/dist/pages/block-health.js.map +1 -0
  167. package/sidecar/dist/prompts/agent.d.ts +1 -1
  168. package/sidecar/dist/prompts/agent.js +4 -3
  169. package/sidecar/dist/prompts/agent.js.map +1 -1
  170. package/sidecar/dist/protocol/events.d.ts +140 -63
  171. package/sidecar/dist/protocol/events.js +24 -8
  172. package/sidecar/dist/protocol/events.js.map +1 -1
  173. package/sidecar/dist/protocol/messages.d.ts +111 -49
  174. package/sidecar/dist/protocol/messages.js +30 -13
  175. package/sidecar/dist/protocol/messages.js.map +1 -1
  176. package/sidecar/dist/providers/claude/config.d.ts +19 -5
  177. package/sidecar/dist/providers/claude/config.js +21 -7
  178. package/sidecar/dist/providers/claude/config.js.map +1 -1
  179. package/sidecar/dist/providers/claude/model-fallback.d.ts +9 -0
  180. package/sidecar/dist/providers/claude/model-fallback.js +37 -0
  181. package/sidecar/dist/providers/claude/model-fallback.js.map +1 -0
  182. package/sidecar/dist/providers/claude/provider.js +35 -40
  183. package/sidecar/dist/providers/claude/provider.js.map +1 -1
  184. package/sidecar/dist/providers/claude/resolve-binary.js +18 -13
  185. package/sidecar/dist/providers/claude/resolve-binary.js.map +1 -1
  186. package/sidecar/dist/providers/claude/safe-mode.d.ts +5 -5
  187. package/sidecar/dist/providers/claude/safe-mode.js +49 -30
  188. package/sidecar/dist/providers/claude/safe-mode.js.map +1 -1
  189. package/sidecar/dist/providers/claude/secret-files.d.ts +2 -0
  190. package/sidecar/dist/providers/claude/secret-files.js +50 -0
  191. package/sidecar/dist/providers/claude/secret-files.js.map +1 -0
  192. package/sidecar/dist/providers/claude/session-stream.d.ts +18 -0
  193. package/sidecar/dist/providers/claude/session-stream.js +80 -0
  194. package/sidecar/dist/providers/claude/session-stream.js.map +1 -0
  195. package/sidecar/dist/providers/claude/tool-guard.d.ts +14 -0
  196. package/sidecar/dist/providers/claude/tool-guard.js +112 -0
  197. package/sidecar/dist/providers/claude/tool-guard.js.map +1 -0
  198. package/sidecar/dist/providers/codex/adapter.d.ts +10 -0
  199. package/sidecar/dist/providers/codex/adapter.js +20 -5
  200. package/sidecar/dist/providers/codex/adapter.js.map +1 -1
  201. package/sidecar/dist/providers/codex/config.d.ts +6 -17
  202. package/sidecar/dist/providers/codex/config.js +9 -56
  203. package/sidecar/dist/providers/codex/config.js.map +1 -1
  204. package/sidecar/dist/providers/codex/mcp-elicitation.d.ts +21 -0
  205. package/sidecar/dist/providers/codex/mcp-elicitation.js +66 -0
  206. package/sidecar/dist/providers/codex/mcp-elicitation.js.map +1 -0
  207. package/sidecar/dist/providers/codex/module.js +1 -1
  208. package/sidecar/dist/providers/codex/module.js.map +1 -1
  209. package/sidecar/dist/providers/codex/patch-directories.d.ts +6 -0
  210. package/sidecar/dist/providers/codex/patch-directories.js +53 -0
  211. package/sidecar/dist/providers/codex/patch-directories.js.map +1 -0
  212. package/sidecar/dist/providers/codex/permission-profiles.d.ts +11 -0
  213. package/sidecar/dist/providers/codex/permission-profiles.js +37 -0
  214. package/sidecar/dist/providers/codex/permission-profiles.js.map +1 -0
  215. package/sidecar/dist/providers/codex/permissions.d.ts +13 -4
  216. package/sidecar/dist/providers/codex/permissions.js +28 -2
  217. package/sidecar/dist/providers/codex/permissions.js.map +1 -1
  218. package/sidecar/dist/providers/codex/process.d.ts +1 -0
  219. package/sidecar/dist/providers/codex/process.js +3 -1
  220. package/sidecar/dist/providers/codex/process.js.map +1 -1
  221. package/sidecar/dist/providers/codex/protocol/common.d.ts +16 -4
  222. package/sidecar/dist/providers/codex/protocol/index.d.ts +2 -2
  223. package/sidecar/dist/providers/codex/protocol/index.js +1 -1
  224. package/sidecar/dist/providers/codex/protocol/index.js.map +1 -1
  225. package/sidecar/dist/providers/codex/protocol/v2.d.ts +23 -32
  226. package/sidecar/dist/providers/codex/provider.js +13 -12
  227. package/sidecar/dist/providers/codex/provider.js.map +1 -1
  228. package/sidecar/dist/providers/codex/secret-file-globs.d.ts +2 -0
  229. package/sidecar/dist/providers/codex/secret-file-globs.js +45 -0
  230. package/sidecar/dist/providers/codex/secret-file-globs.js.map +1 -0
  231. package/sidecar/dist/providers/types.d.ts +3 -1
  232. package/sidecar/dist/providers/types.js +2 -2
  233. package/sidecar/dist/providers/types.js.map +1 -1
  234. package/sidecar/dist/server/chat-events.js +1 -0
  235. package/sidecar/dist/server/chat-events.js.map +1 -1
  236. package/sidecar/dist/server/http-routes.js +1 -1
  237. package/sidecar/dist/server/http-routes.js.map +1 -1
  238. package/sidecar/dist/server/navigation-completer.d.ts +15 -2
  239. package/sidecar/dist/server/navigation-completer.js +42 -41
  240. package/sidecar/dist/server/navigation-completer.js.map +1 -1
  241. package/sidecar/dist/server/permission-events.d.ts +1 -1
  242. package/sidecar/dist/server/permission-events.js +5 -8
  243. package/sidecar/dist/server/permission-events.js.map +1 -1
  244. package/sidecar/dist/server/routing.js +11 -6
  245. package/sidecar/dist/server/routing.js.map +1 -1
  246. package/sidecar/dist/server/tool-calls.d.ts +0 -2
  247. package/sidecar/dist/server/tool-calls.js +7 -8
  248. package/sidecar/dist/server/tool-calls.js.map +1 -1
  249. package/sidecar/dist/server/turns.js +17 -1
  250. package/sidecar/dist/server/turns.js.map +1 -1
  251. package/sidecar/dist/server/ws.js +4 -15
  252. package/sidecar/dist/server/ws.js.map +1 -1
  253. package/sidecar/dist/skills/skill-usage.js +2 -2
  254. package/sidecar/dist/skills/skill-usage.js.map +1 -1
  255. package/sidecar/dist/state/conversations.d.ts +1 -0
  256. package/sidecar/dist/state/conversations.js +8 -0
  257. package/sidecar/dist/state/conversations.js.map +1 -1
  258. package/sidecar/dist/state/settings-store.d.ts +14 -5
  259. package/sidecar/dist/state/settings-store.js +34 -8
  260. package/sidecar/dist/state/settings-store.js.map +1 -1
  261. package/sidecar/dist/state/settings-types.d.ts +16 -2
  262. package/sidecar/dist/state/settings-types.js +14 -1
  263. package/sidecar/dist/state/settings-types.js.map +1 -1
  264. package/sidecar/dist/state/types.d.ts +14 -6
  265. package/sidecar/dist/state/types.js.map +1 -1
  266. package/sidecar/package.json +3 -3
  267. package/skills/dms-ai/SKILL.md +2 -1
  268. package/skills/dms-builder-safe/REFERENCE.md +5 -6
  269. package/skills/dms-builder-safe/SKILL.md +12 -10
  270. package/skills/dms-external-database/REFERENCE.md +20 -8
  271. package/skills/dms-external-database/SKILL.md +69 -20
  272. package/skills/dms-page-design/SKILL.md +192 -0
  273. package/skills/dms-page-design/cases.json +57 -0
  274. package/frontend-vue/app/chat/components/FullAutoBanner.vue +0 -76
  275. package/frontend-vue/app/chat/components/FullAutoDialog.vue +0 -103
@@ -1,12 +1,77 @@
1
+ export type ToolReach = "readsPath" | "editsFile" | "runsCommand" | "runsLater" | "fetchesWeb" | "startsAgent" | "asksPerson" | "inert" | "reachesOutside";
2
+ export declare const BUILTIN_TOOL_REACH: {
3
+ readonly Read: "readsPath";
4
+ readonly Glob: "readsPath";
5
+ readonly Grep: "readsPath";
6
+ readonly LS: "readsPath";
7
+ readonly NotebookRead: "readsPath";
8
+ readonly Write: "editsFile";
9
+ readonly Edit: "editsFile";
10
+ readonly MultiEdit: "editsFile";
11
+ readonly NotebookEdit: "editsFile";
12
+ readonly Bash: "runsCommand";
13
+ readonly PowerShell: "runsCommand";
14
+ readonly Monitor: "runsCommand";
15
+ readonly LSP: "runsCommand";
16
+ readonly CronCreate: "runsLater";
17
+ readonly CronDelete: "runsLater";
18
+ readonly ScheduleWakeup: "runsLater";
19
+ readonly RemoteTrigger: "runsLater";
20
+ readonly Workflow: "runsLater";
21
+ readonly ProposeGoal: "runsLater";
22
+ readonly WebFetch: "fetchesWeb";
23
+ readonly WebSearch: "fetchesWeb";
24
+ readonly Agent: "startsAgent";
25
+ readonly Task: "startsAgent";
26
+ readonly AskUserQuestion: "asksPerson";
27
+ readonly ToolSearch: "inert";
28
+ readonly TodoWrite: "inert";
29
+ readonly TaskCreate: "inert";
30
+ readonly TaskGet: "inert";
31
+ readonly TaskUpdate: "inert";
32
+ readonly TaskList: "inert";
33
+ readonly TaskStop: "inert";
34
+ readonly Skill: "inert";
35
+ readonly EnterPlanMode: "inert";
36
+ readonly ExitPlanMode: "inert";
37
+ readonly ListAgents: "inert";
38
+ readonly CronList: "inert";
39
+ readonly SubagentHandback: "inert";
40
+ readonly ReportFindings: "inert";
41
+ readonly EndConversation: "inert";
42
+ readonly WaitForMcpServers: "inert";
43
+ readonly ListMcpResourcesTool: "inert";
44
+ readonly ReadMcpResourceTool: "inert";
45
+ readonly ReadMcpResourceDirTool: "inert";
46
+ readonly SendMessage: "reachesOutside";
47
+ readonly EnterWorktree: "reachesOutside";
48
+ readonly ExitWorktree: "reachesOutside";
49
+ readonly PushNotification: "reachesOutside";
50
+ readonly Artifact: "reachesOutside";
51
+ readonly ClaudeDesign: "reachesOutside";
52
+ readonly DesignSync: "reachesOutside";
53
+ readonly Projects: "reachesOutside";
54
+ readonly SendToProject: "reachesOutside";
55
+ readonly SendToProjectContext: "reachesOutside";
56
+ readonly SendFeedback: "reachesOutside";
57
+ readonly SendUserFile: "reachesOutside";
58
+ readonly SendUserMessage: "reachesOutside";
59
+ readonly ShareOnboardingGuide: "reachesOutside";
60
+ readonly ShowOnboardingRolePicker: "reachesOutside";
61
+ readonly OfferChromeSetup: "reachesOutside";
62
+ readonly ReadNotifications: "reachesOutside";
63
+ readonly propose_skills: "reachesOutside";
64
+ };
1
65
  export declare const EDIT_TOOL_NAMES: readonly string[];
2
- export declare const COMMAND_TOOL_NAMES: readonly string[];
66
+ export declare const BASH_TOOL_NAMES: readonly string[];
3
67
  export declare const WEB_TOOL_NAMES: readonly string[];
4
68
  export declare const BUILTIN_READ_TOOL_NAMES: readonly string[];
5
69
  export declare const BUILDER_READ_TOOL_NAMES: readonly string[];
6
70
  export declare const BUILDER_DESTRUCTIVE_TOOL_NAMES: readonly string[];
7
71
  export declare const BUILDER_BLOCK_REMOVAL_TOOL_NAMES: readonly string[];
8
- export declare const BUILDER_DELETE_RESOURCE_TOOL_NAME = "BuilderDeleteResource";
9
72
  export declare const BUILDER_CONFIG_TOOL_NAMES: readonly string[];
73
+ export declare const BUILDER_PAGE_REMOVING_TOOL_NAMES: readonly string[];
74
+ export declare const BUILDER_DELETE_RESOURCE_TOOL_NAME = "BuilderDeleteResource";
10
75
  export declare const PROJECT_READ_TOOL_NAMES: readonly string[];
11
76
  export declare const ASSISTANT_TOOL_NAMES: readonly string[];
12
77
  export declare const BUILDER_MUTATING_TOOL_NAMES: readonly string[];
@@ -5,14 +5,75 @@ import { ASK_USER_TOOL_NAME, GET_CURRENT_PAGE_TOOL_NAME, NAVIGATE_TOOL_NAME, } f
5
5
  import { FIND_PAGES_TOOL_NAME, LIST_PAGES_TOOL_NAME } from "./pages.js";
6
6
  import { PREVIEW_BLOCKS_TOOL_NAME } from "./preview.js";
7
7
  import { TYPECHECK_TOOL_NAME } from "./typecheck.js";
8
- export const EDIT_TOOL_NAMES = [
9
- "Edit",
10
- "Write",
11
- "MultiEdit",
12
- "NotebookEdit",
13
- ];
14
- export const COMMAND_TOOL_NAMES = ["Bash"];
15
- export const WEB_TOOL_NAMES = ["WebFetch", "WebSearch"];
8
+ export const BUILTIN_TOOL_REACH = {
9
+ Read: "readsPath",
10
+ Glob: "readsPath",
11
+ Grep: "readsPath",
12
+ LS: "readsPath",
13
+ NotebookRead: "readsPath",
14
+ Write: "editsFile",
15
+ Edit: "editsFile",
16
+ MultiEdit: "editsFile",
17
+ NotebookEdit: "editsFile",
18
+ Bash: "runsCommand",
19
+ PowerShell: "runsCommand",
20
+ Monitor: "runsCommand",
21
+ LSP: "runsCommand",
22
+ CronCreate: "runsLater",
23
+ CronDelete: "runsLater",
24
+ ScheduleWakeup: "runsLater",
25
+ RemoteTrigger: "runsLater",
26
+ Workflow: "runsLater",
27
+ ProposeGoal: "runsLater",
28
+ WebFetch: "fetchesWeb",
29
+ WebSearch: "fetchesWeb",
30
+ Agent: "startsAgent",
31
+ Task: "startsAgent",
32
+ AskUserQuestion: "asksPerson",
33
+ ToolSearch: "inert",
34
+ TodoWrite: "inert",
35
+ TaskCreate: "inert",
36
+ TaskGet: "inert",
37
+ TaskUpdate: "inert",
38
+ TaskList: "inert",
39
+ TaskStop: "inert",
40
+ Skill: "inert",
41
+ EnterPlanMode: "inert",
42
+ ExitPlanMode: "inert",
43
+ ListAgents: "inert",
44
+ CronList: "inert",
45
+ SubagentHandback: "inert",
46
+ ReportFindings: "inert",
47
+ EndConversation: "inert",
48
+ WaitForMcpServers: "inert",
49
+ ListMcpResourcesTool: "inert",
50
+ ReadMcpResourceTool: "inert",
51
+ ReadMcpResourceDirTool: "inert",
52
+ SendMessage: "reachesOutside",
53
+ EnterWorktree: "reachesOutside",
54
+ ExitWorktree: "reachesOutside",
55
+ PushNotification: "reachesOutside",
56
+ Artifact: "reachesOutside",
57
+ ClaudeDesign: "reachesOutside",
58
+ DesignSync: "reachesOutside",
59
+ Projects: "reachesOutside",
60
+ SendToProject: "reachesOutside",
61
+ SendToProjectContext: "reachesOutside",
62
+ SendFeedback: "reachesOutside",
63
+ SendUserFile: "reachesOutside",
64
+ SendUserMessage: "reachesOutside",
65
+ ShareOnboardingGuide: "reachesOutside",
66
+ ShowOnboardingRolePicker: "reachesOutside",
67
+ OfferChromeSetup: "reachesOutside",
68
+ ReadNotifications: "reachesOutside",
69
+ propose_skills: "reachesOutside",
70
+ };
71
+ function builtinToolsThat(reach) {
72
+ return Object.entries(BUILTIN_TOOL_REACH).flatMap(([name, toolReach]) => toolReach === reach ? [name] : []);
73
+ }
74
+ export const EDIT_TOOL_NAMES = builtinToolsThat("editsFile");
75
+ export const BASH_TOOL_NAMES = ["Bash"];
76
+ export const WEB_TOOL_NAMES = builtinToolsThat("fetchesWeb");
16
77
  export const BUILTIN_READ_TOOL_NAMES = [
17
78
  "Read",
18
79
  "LS",
@@ -24,32 +85,49 @@ export const BUILTIN_READ_TOOL_NAMES = [
24
85
  "Task",
25
86
  "ExitPlanMode",
26
87
  ];
27
- export const BUILDER_READ_TOOL_NAMES = [
28
- "BuilderCatalog",
29
- "BuilderListPages",
30
- "BuilderPageStructure",
31
- "BuilderListResources",
32
- "BuilderResourceStructure",
33
- "BuilderQueryTemplates",
34
- "BuilderRefresh",
35
- "BuilderAnalyseDatabase",
36
- "BuilderMapping",
37
- ];
38
- export const BUILDER_DESTRUCTIVE_TOOL_NAMES = [
39
- "BuilderDeletePage",
40
- "BuilderDeleteResource",
41
- "BuilderRemoveField",
42
- "BuilderDeleteCategory",
43
- "BuilderRemoveQuery",
44
- ];
45
- export const BUILDER_BLOCK_REMOVAL_TOOL_NAMES = [
46
- "BuilderRemoveBlock",
47
- "BuilderMoveBlock",
48
- ];
88
+ const BUILDER_TOOL_KINDS = {
89
+ BuilderCatalog: "read",
90
+ BuilderListPages: "read",
91
+ BuilderPageStructure: "read",
92
+ BuilderCreatePage: "change",
93
+ BuilderConfigurePage: "change",
94
+ BuilderDeletePage: "deletion",
95
+ BuilderAddBlock: "change",
96
+ BuilderComposePage: "change",
97
+ BuilderConfigureBlock: "change",
98
+ BuilderConfigureTableView: "change",
99
+ BuilderMoveBlock: "blockRemoval",
100
+ BuilderRemoveBlock: "blockRemoval",
101
+ BuilderCreateCategory: "change",
102
+ BuilderConfigureCategory: "change",
103
+ BuilderDeleteCategory: "deletion",
104
+ BuilderRefresh: "read",
105
+ BuilderCreateResource: "change",
106
+ BuilderDeleteResource: "deletion",
107
+ BuilderListResources: "read",
108
+ BuilderResourceStructure: "read",
109
+ BuilderAddField: "change",
110
+ BuilderConfigureField: "change",
111
+ BuilderRemoveField: "deletion",
112
+ BuilderQueryTemplates: "read",
113
+ BuilderAddQuery: "change",
114
+ BuilderPreviewQuery: "read",
115
+ BuilderConfigureQuery: "change",
116
+ BuilderRemoveQuery: "deletion",
117
+ BuilderConfigureProject: "asksAfterDryRun",
118
+ BuilderMapResources: "asksWhenRemovingPages",
119
+ BuilderAnalyseDatabase: "read",
120
+ BuilderMapping: "read",
121
+ };
122
+ function builderToolsOf(kind) {
123
+ return BUILDER_TOOL_NAMES.filter((name) => BUILDER_TOOL_KINDS[name] === kind);
124
+ }
125
+ export const BUILDER_READ_TOOL_NAMES = builderToolsOf("read");
126
+ export const BUILDER_DESTRUCTIVE_TOOL_NAMES = builderToolsOf("deletion");
127
+ export const BUILDER_BLOCK_REMOVAL_TOOL_NAMES = builderToolsOf("blockRemoval");
128
+ export const BUILDER_CONFIG_TOOL_NAMES = builderToolsOf("asksAfterDryRun");
129
+ export const BUILDER_PAGE_REMOVING_TOOL_NAMES = builderToolsOf("asksWhenRemovingPages");
49
130
  export const BUILDER_DELETE_RESOURCE_TOOL_NAME = "BuilderDeleteResource";
50
- export const BUILDER_CONFIG_TOOL_NAMES = [
51
- "BuilderConfigureProject",
52
- ];
53
131
  export const PROJECT_READ_TOOL_NAMES = [
54
132
  GET_CURRENT_PAGE_TOOL_NAME,
55
133
  NAVIGATE_TOOL_NAME,
@@ -1 +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,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,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,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,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;IAChB,wBAAwB;IACxB,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;AAMzE,MAAM,CAAC,MAAM,yBAAyB,GAAsB;IAC1D,yBAAyB;CAC1B,CAAC;AAGF,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACxD,0BAA0B;IAC1B,kBAAkB;IAClB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;IACpB,GAAG,mBAAmB;CACvB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,kBAAkB;IAClB,wBAAwB;IACxB,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"}
1
+ {"version":3,"file":"tool-kinds.js","sourceRoot":"","sources":["../../src/constants/tool-kinds.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { z } from "zod";
2
+ import { type BuilderRun } from "./builder-expr.js";
3
+ declare const OPTIONS: z.ZodRecord<z.ZodString, z.ZodUnknown>;
4
+ type Options = z.infer<typeof OPTIONS>;
5
+ declare const BLOCK_QUERY: z.ZodObject<{
6
+ name: z.ZodOptional<z.ZodString>;
7
+ into: z.ZodOptional<z.ZodString>;
8
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
9
+ resource: z.ZodString;
10
+ template: z.ZodString;
11
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
12
+ response: z.ZodOptional<z.ZodEnum<{
13
+ value: "value";
14
+ items: "items";
15
+ series: "series";
16
+ card: "card";
17
+ }>>;
18
+ compare: z.ZodOptional<z.ZodBoolean>;
19
+ endpoint: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$strip>;
21
+ export interface ComposeBlockInput {
22
+ name: string;
23
+ type: string;
24
+ config?: Options | undefined;
25
+ controller?: string | undefined;
26
+ slot?: string | undefined;
27
+ meta?: Options | undefined;
28
+ query?: z.infer<typeof BLOCK_QUERY> | undefined;
29
+ children?: ComposeBlockInput[] | undefined;
30
+ }
31
+ export declare function buildComposeTools(run: BuilderRun): import("../define-tool.js").McpToolDefinition<{
32
+ pageRef: z.ZodOptional<z.ZodString>;
33
+ create: z.ZodOptional<z.ZodObject<{
34
+ name: z.ZodString;
35
+ displayName: z.ZodString;
36
+ category: z.ZodString;
37
+ icon: z.ZodOptional<z.ZodString>;
38
+ description: z.ZodOptional<z.ZodString>;
39
+ order: z.ZodOptional<z.ZodNumber>;
40
+ module: z.ZodOptional<z.ZodString>;
41
+ }, z.core.$strip>>;
42
+ parent: z.ZodOptional<z.ZodString>;
43
+ placement: z.ZodOptional<z.ZodObject<{
44
+ before: z.ZodOptional<z.ZodString>;
45
+ after: z.ZodOptional<z.ZodString>;
46
+ }, z.core.$strip>>;
47
+ blocks: z.ZodArray<z.ZodType<ComposeBlockInput, unknown, z.core.$ZodTypeInternals<ComposeBlockInput, unknown>>>;
48
+ preview: z.ZodOptional<z.ZodBoolean>;
49
+ args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
50
+ }>[];
51
+ export {};
@@ -0,0 +1,96 @@
1
+ import { z } from "zod";
2
+ import { defineTool } from "../define-tool.js";
3
+ import { exprRefusal, hasExprSentinel, note, } from "./builder-expr.js";
4
+ import { QUERY_ARGS, QUERY_FIELDS } from "./builder-queries.js";
5
+ const DESCRIPTION = "Builds a whole page, or adds a group of blocks to one, in a single call: the blocks, the queries they read, the layout rows and the page itself when it does not exist yet. One rewrite, one typecheck, and nothing is written when any block is refused; the error names each refused block by JSON pointer into your input (`/blocks/3/children/0/query/params/groupBy`). A data block carries its `query` inline (the BuilderAddQuery fields, `name` defaulting to the block's name): the route it compiles to is written into the block's `fetchUrl` for you, so never pass `fetchUrl` yourself. Containers (`PageToolbar`, `Grid`, `GridRow`, `Section`…) carry their blocks in `children`, and a child sits in its row in order. Pass `preview: true` first to run every query with `args` and read each block's answer without writing: a block whose `status` is `empty` or `zero` would render nothing useful, so fix its query before the writing call. To put blocks above or below a table already on the page (a KPI row above the TableView a mapping wrote), pass `placement: { before: \"table\" }`; a later BuilderMapResources keeps them. Use BuilderAddBlock and BuilderAddQuery for a single edit.";
6
+ const OPTIONS = z.record(z.string(), z.unknown());
7
+ const BLOCK_QUERY = z.object({
8
+ ...QUERY_FIELDS,
9
+ name: QUERY_FIELDS.name.optional(),
10
+ into: z
11
+ .string()
12
+ .optional()
13
+ .describe("The block config key that receives the route. Defaults to `fetchUrl`."),
14
+ args: QUERY_ARGS.optional().describe("Values for this query's preview only, over the call's `args`."),
15
+ });
16
+ const COMPOSE_BLOCK = z.lazy(() => z.object({
17
+ name: z
18
+ .string()
19
+ .describe("camelCase identifier, unique among its siblings. Becomes the block's path segment."),
20
+ type: z.string().describe("A block type from BuilderCatalog."),
21
+ config: OPTIONS.optional().describe('The block\'s options, per BuilderCatalog. A chart inside a ChartCard is `{ "$block": { "type": "ChartArea", "config": {} } }`.'),
22
+ controller: z
23
+ .string()
24
+ .optional()
25
+ .describe("Resource ref for a controller-leading block such as `TableView`."),
26
+ slot: z.string().optional().describe("The slot this block fills."),
27
+ meta: OPTIONS.optional().describe('Child metadata in its row, e.g. `{ "colSpan": 2 }`.'),
28
+ query: BLOCK_QUERY.optional().describe("The query this block reads, added to the page with it."),
29
+ children: z
30
+ .array(COMPOSE_BLOCK)
31
+ .optional()
32
+ .describe("Blocks nested in this container, in order."),
33
+ }));
34
+ const CREATE_PAGE = z
35
+ .object({
36
+ name: z
37
+ .string()
38
+ .describe("Route slug: lowercase letters, digits and dashes."),
39
+ displayName: z.string(),
40
+ category: z
41
+ .string()
42
+ .describe("An existing CategoryRef from BuilderListPages."),
43
+ icon: z.string().optional(),
44
+ description: z.string().optional(),
45
+ order: z.number().optional(),
46
+ module: z
47
+ .string()
48
+ .optional()
49
+ .describe("The project module to write into. Omit for the project's own."),
50
+ })
51
+ .describe("Create the page with these fields in the same call. Give this or `pageRef`, not both.");
52
+ const PLACEMENT = z
53
+ .object({
54
+ before: z.string().optional(),
55
+ after: z.string().optional(),
56
+ })
57
+ .describe('Put the new blocks next to the block of this name among the siblings already there (e.g. `{ "before": "table" }`). Omit to append.');
58
+ export function buildComposeTools(run) {
59
+ return [
60
+ defineTool("BuilderComposePage", note(DESCRIPTION), {
61
+ pageRef: z
62
+ .string()
63
+ .optional()
64
+ .describe("An existing PageRef to add the blocks to."),
65
+ create: CREATE_PAGE.optional(),
66
+ parent: z
67
+ .string()
68
+ .optional()
69
+ .describe("An existing container block path to add the blocks under (from BuilderPageStructure). Omit for the page itself."),
70
+ placement: PLACEMENT.optional(),
71
+ blocks: z
72
+ .array(COMPOSE_BLOCK)
73
+ .min(1)
74
+ .describe("The blocks to add, in order, each with its query inline."),
75
+ preview: z
76
+ .boolean()
77
+ .optional()
78
+ .describe("Run every query with `args` and answer `previews` per block without writing anything."),
79
+ args: QUERY_ARGS.optional(),
80
+ }, async ({ pageRef, create, parent, placement, blocks, preview, args }) => {
81
+ const input = {
82
+ page: pageRef,
83
+ create,
84
+ parent,
85
+ placement,
86
+ blocks,
87
+ preview,
88
+ args,
89
+ };
90
+ return hasExprSentinel(input)
91
+ ? exprRefusal()
92
+ : run("ComposePage", [input]);
93
+ }),
94
+ ];
95
+ }
96
+ //# sourceMappingURL=builder-compose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder-compose.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder-compose.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { isConfigBuilderTool, isMutatingBuilderTool, } from "../../agent/tool-kinds.js";
1
+ import { isConfigBuilderTool, isMutatingBuilderTool, isPageRemovingBuilderTool, } from "../../agent/tool-kinds.js";
2
2
  function refusal(message) {
3
3
  return { content: [{ type: "text", text: message ?? "" }], isError: true };
4
4
  }
@@ -7,6 +7,8 @@ function withGate(definition, gate) {
7
7
  return definition;
8
8
  if (isConfigBuilderTool(definition.name))
9
9
  return definition;
10
+ if (isPageRemovingBuilderTool(definition.name))
11
+ return definition;
10
12
  return {
11
13
  ...definition,
12
14
  handler: async (args) => {
@@ -1 +1 @@
1
- {"version":3,"file":"builder-gate.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder-gate.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AAsBnC,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,IAAI,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IAC5D,OAAO;QACL,GAAG,UAAU;QACb,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,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,CAAC,CAAC;QACrC,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
+ {"version":3,"file":"builder-gate.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder-gate.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAsBnC,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,IAAI,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IAC5D,IAAI,yBAAyB,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IAClE,OAAO;QACL,GAAG,UAAU;QACb,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,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,CAAC,CAAC;QACrC,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,6 +1,7 @@
1
1
  import { z } from "zod";
2
- import { BUILDER_ANALYSE_DATABASE_TOOL_NAME, BUILDER_ANALYSIS_POLL_MS, BUILDER_ANALYSIS_WAIT_MS, BUILDER_CONFIGURE_PROJECT_TOOL_NAME, BUILDER_MAP_RESOURCES_TOOL_NAME, BUILDER_MAPPING_TOOL_NAME, } from "../../constants/builder.js";
2
+ import { BUILDER_ANALYSE_DATABASE_TOOL_NAME, BUILDER_ANALYSIS_POLL_MS, BUILDER_ANALYSIS_WAIT_MS, BUILDER_CONFIGURE_PROJECT_TOOL_NAME, BUILDER_MAP_RESOURCES_TOOL_NAME, BUILDER_MAPPING_TOOL_NAME, BUILDER_PREVIEW_MAP_RESOURCES_OP, BUILDER_UNKNOWN_OP, PAGES_TO_REMOVE_ARG, } from "../../constants/builder.js";
3
3
  import { defineTool, } from "../define-tool.js";
4
+ import { TABLE_VIEW_SETTINGS } from "./builder-table-view-schema.js";
4
5
  export const PLANNED_CHANGES_ARG = "plannedChanges";
5
6
  const OP_ANSWER = z.object({
6
7
  ok: z.unknown().optional(),
@@ -69,8 +70,39 @@ const MAPPED_FIELD = z.object({
69
70
  searchable: z.boolean().optional(),
70
71
  relation: z
71
72
  .string()
73
+ .nullable()
72
74
  .optional()
73
- .describe("`schema.name` of another relation in this call, or one the module mapped before: makes the column a relation column onto that relation's single-column key."),
75
+ .describe("`schema.name` of another relation in this call, or one the module mapped before: makes the column a relation column onto that relation's single-column key. Left out, a declared foreign key onto such a relation (with a TableView) becomes one anyway; null keeps the column a plain value."),
76
+ display: z
77
+ .union([
78
+ z.object({
79
+ kind: z.literal("badge"),
80
+ items: z.array(z.object({
81
+ value: z.string(),
82
+ label: z.string(),
83
+ tone: z.enum([
84
+ "neutral",
85
+ "primary",
86
+ "secondary",
87
+ "success",
88
+ "warning",
89
+ "error",
90
+ "info",
91
+ ]),
92
+ })),
93
+ }),
94
+ z.object({
95
+ kind: z.literal("price"),
96
+ currency: z
97
+ .string()
98
+ .regex(/^[A-Z]{3}$/)
99
+ .optional()
100
+ .describe("ISO 4217 code of the amount (`USD`). Left out, the Builder reads it from the column comment or a one-value currency column, else amounts show in euros."),
101
+ }),
102
+ ])
103
+ .nullable()
104
+ .optional()
105
+ .describe("How the column is drawn: a `badge` on a text column of few values, a `price` on an amount. The proposal's display when left out; `null` writes the column plain."),
74
106
  });
75
107
  const MAPPED_RESOURCE = z.object({
76
108
  relation: z.string().describe("`schema.name`."),
@@ -90,6 +122,27 @@ const MAPPED_RESOURCE = z.object({
90
122
  .boolean()
91
123
  .describe("False serves the TableView without new, edit and delete."),
92
124
  fields: z.array(MAPPED_FIELD),
125
+ tabs: z
126
+ .object({ column: z.string() })
127
+ .nullable()
128
+ .optional()
129
+ .describe("Tabs above the table by a filterable badge column: All, then one per value. The proposal's tabs when left out; `null` writes none."),
130
+ icon: z
131
+ .string()
132
+ .optional()
133
+ .describe("The page's menu icon, an icon name such as `i-ph-shopping-cart`."),
134
+ description: z
135
+ .string()
136
+ .optional()
137
+ .describe("What the page is for, in a sentence."),
138
+ order: z
139
+ .number()
140
+ .optional()
141
+ .describe("Sorts the page among its category's pages, lowest first. 100 by default, so a dashboard created with order 0 comes before the mapped tables."),
142
+ tableOptions: z
143
+ .object(TABLE_VIEW_SETTINGS)
144
+ .optional()
145
+ .describe("Displays (kanban, cards, grouped), views and footer figures for the page's table, with the same checks as BuilderConfigureTableView; a refused choice is a warning and the page keeps what it had."),
93
146
  });
94
147
  const EXCLUDED = z.object({
95
148
  relation: z.string().describe("`schema.name`."),
@@ -121,7 +174,7 @@ const ANALYSE_DATABASE_INPUT = {
121
174
  .optional()
122
175
  .describe("A running analysis's `id`, to read on instead of starting one."),
123
176
  };
124
- const MAP_RESOURCES_DESCRIPTION = "Maps relations of a connected database into a project module bound to it (created with BuilderConfigureProject): table classes and models with the database's names verbatim, DataAPI controllers and one TableView page per relation that has a key. Only your choices are sent: the Builder reads the relations' descriptions from its own catalog connection and checks every choice against them. A relation mapped before is rewritten from the new choices, its page created, kept or removed. `excluded` records relations decided against, so the next analysis does not propose them. Answers what was written and `leftOut`: columns a TableView cannot show, with why.";
177
+ const MAP_RESOURCES_DESCRIPTION = "Maps relations of a connected database into a project module bound to it (created with BuilderConfigureProject): table classes and models with the database's names verbatim, DataAPI controllers and one TableView page per relation that has a key. Only your choices are sent: the Builder reads the relations' descriptions from its own catalog connection and checks every choice against them. A relation mapped before is rewritten from the new choices, its page created, kept or removed; a mapping that would remove a page asks the person first, listing it, and a denial writes nothing, and a page that appeared after the person approved is never removed: that write is refused, so call again to ask. `excluded` records relations decided against, so the next analysis does not propose them. Answers what was written and `leftOut`: columns a TableView cannot show, with why.";
125
178
  const ANALYSE_DATABASE_DESCRIPTION = "Runs the Builder's analysis of a connected database: it reads the catalog and the profiles and proposes a mapping by fixed rules, writing nothing. Answers the proposal: resources in the shape BuilderMapResources takes, each choice with its rule and `kind` (`fact` from the catalog, or `default`, a judgement to check), the relations excluded and why, and `open`: what the rules could not decide, each with its options. Profiling is slow: when the analysis is still running after a minute this answers its progress and `job`; call again with that `job` to read on.";
126
179
  const MAPPING_DESCRIPTION = "The relations a module maps for a connection, read back from its code as their current choices, in the proposal's shape (every rule `mapped`), with `included`: the columns the module declares. Read it before mapping a relation again with BuilderMapResources, so you send its current choices with only what you change.";
127
180
  const ANALYSIS_ANSWER = z.object({
@@ -180,10 +233,72 @@ async function confirmedRun(client, gate, args) {
180
233
  }
181
234
  return opResult(await client.call("ConfigureProject", [steps]));
182
235
  }
236
+ const PREVIEW_ANSWER = z.object({
237
+ ok: z.literal(true),
238
+ data: z.object({ pagesToRemove: z.array(z.string()) }),
239
+ });
240
+ const ERROR_CODE = z.object({ error: z.object({ code: z.string() }) });
241
+ function isUnknownOp(answer) {
242
+ return ERROR_CODE.safeParse(answer).data?.error.code === BUILDER_UNKNOWN_OP;
243
+ }
244
+ const UNREADABLE_PREVIEW = {
245
+ ok: false,
246
+ error: {
247
+ code: "request_failed",
248
+ detail: `${BUILDER_PREVIEW_MAP_RESOURCES_OP} answered no pagesToRemove`,
249
+ },
250
+ };
251
+ const PREVIEW_UNSUPPORTED = {
252
+ ok: false,
253
+ error: {
254
+ code: "preview_unsupported",
255
+ detail: "this Builder version cannot preview page removals; update @antelopejs/dms-builder",
256
+ },
257
+ };
258
+ const UNAPPROVED_PAGES_PREFIX = "pages not approved for removal";
259
+ const REFUSAL = z.object({
260
+ ok: z.literal(false),
261
+ error: z.object({
262
+ issues: z.array(z.object({ message: z.string() })).optional(),
263
+ }),
264
+ });
265
+ function unapprovedPagesRefusal(answer) {
266
+ const message = REFUSAL.safeParse(answer).data?.error.issues?.find((issue) => issue.message.startsWith(UNAPPROVED_PAGES_PREFIX))?.message;
267
+ return message === undefined
268
+ ? undefined
269
+ : { content: [{ type: "text", text: message }], isError: true };
270
+ }
271
+ async function confirmedMapping(client, gate, input) {
272
+ const answer = await client.call(BUILDER_PREVIEW_MAP_RESOURCES_OP, [input]);
273
+ if (isUnknownOp(answer)) {
274
+ return opResult(PREVIEW_UNSUPPORTED);
275
+ }
276
+ const preview = PREVIEW_ANSWER.safeParse(answer);
277
+ if (!preview.success) {
278
+ const failed = OP_ANSWER.safeParse(answer).data?.ok === false;
279
+ return opResult(failed ? answer : UNREADABLE_PREVIEW);
280
+ }
281
+ if (gate) {
282
+ const decision = await gate(BUILDER_MAP_RESOURCES_TOOL_NAME, {
283
+ ...input,
284
+ [PAGES_TO_REMOVE_ARG]: preview.data.data.pagesToRemove,
285
+ });
286
+ if (!decision.isAllowed) {
287
+ return {
288
+ content: [{ type: "text", text: decision.message ?? "" }],
289
+ isError: true,
290
+ };
291
+ }
292
+ }
293
+ const written = await client.call("MapResources", [
294
+ { ...input, approvedPageRemovals: preview.data.data.pagesToRemove },
295
+ ]);
296
+ return unapprovedPagesRefusal(written) ?? opResult(written);
297
+ }
183
298
  export function buildProjectTools(client, gate) {
184
299
  return [
185
300
  defineTool(BUILDER_CONFIGURE_PROJECT_TOOL_NAME, CONFIGURE_PROJECT_DESCRIPTION, CONFIGURE_PROJECT_INPUT, (args) => confirmedRun(client, gate, args)),
186
- defineTool(BUILDER_MAP_RESOURCES_TOOL_NAME, MAP_RESOURCES_DESCRIPTION, MAP_RESOURCES_INPUT, async (input) => opResult(await client.call("MapResources", [input]))),
301
+ defineTool(BUILDER_MAP_RESOURCES_TOOL_NAME, MAP_RESOURCES_DESCRIPTION, MAP_RESOURCES_INPUT, (input) => confirmedMapping(client, gate, input)),
187
302
  defineTool(BUILDER_ANALYSE_DATABASE_TOOL_NAME, ANALYSE_DATABASE_DESCRIPTION, ANALYSE_DATABASE_INPUT, (args) => analysis(client, args)),
188
303
  defineTool(BUILDER_MAPPING_TOOL_NAME, MAPPING_DESCRIPTION, {
189
304
  connection: z
@@ -1 +1 @@
1
- {"version":3,"file":"builder-project.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder-project.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,kCAAkC,EAClC,wBAAwB,EACxB,wBAAwB,EACxB,mCAAmC,EACnC,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,UAAU,GAGX,MAAM,mBAAmB,CAAC;AAI3B,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAEpD,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC1B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAGH,MAAM,UAAU,QAAQ,CAAC,KAAgB;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,KAAK,CAAC;IAC7D,OAAO,MAAM;QACX,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;QACtD,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,QAAQ,CACP,8IAA8I,CAC/I,CAAC;AAEJ,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC1B,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,GAAG,EAAE,CAAC;SACH,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SAC9B,QAAQ,EAAE;SACV,QAAQ,CACP,uLAAuL,CACxL;IACH,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;IACpD,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC5D,CAAC;KACD,QAAQ,CAAC,8DAA8D,CAAC,CAAC;AAE5E,MAAM,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE;IACtC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAC7E,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,KAAK,EAAE,YAAY;KACpB,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAClC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,CAAC,0DAA0D,CAAC;QACvE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE;QAC9B,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,wJAAwJ,CACzJ;KACJ,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAEhE,MAAM,6BAA6B,GACjC,0aAA0a,CAAC;AAE7a,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,6FAA6F,CAC9F;IACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,6JAA6J,CAC9J;CACJ,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC/C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,gFAAgF,CACjF;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,+DAA+D,CAAC;IAC5E,SAAS,EAAE,CAAC;SACT,OAAO,EAAE;SACT,QAAQ,CAAC,8DAA8D,CAAC;IAC3E,QAAQ,EAAE,CAAC;SACR,OAAO,EAAE;SACT,QAAQ,CAAC,0DAA0D,CAAC;IACvE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG;IAC1B,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,CAAC,wDAAwD,CAAC;IACrE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IAC5E,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC;AAEF,MAAM,sBAAsB,GAAG;IAC7B,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,iEAAiE,CAClE;IACH,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,gHAAgH,CACjH;IACH,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,qEAAqE,CACtE;IACH,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,gEAAgE,CAAC;CAC9E,CAAC;AAEF,MAAM,yBAAyB,GAC7B,mpBAAmpB,CAAC;AAEtpB,MAAM,4BAA4B,GAChC,qjBAAqjB,CAAC;AAExjB,MAAM,mBAAmB,GACvB,+TAA+T,CAAC;AAElU,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;SACtE,QAAQ,EAAE;SACV,KAAK,CAAC,SAAS,CAAC;CACpB,CAAC,CAAC;AAEH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAGD,KAAK,UAAU,QAAQ,CACrB,MAAqB,EACrB,IAAgD;IAEhD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG;QACrB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC7B;gBACE,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB;SACF,CAAC,CAAC,CAAC;IACR,IAAI,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,wBAAwB,CAAC;IACvD,OACE,KAAK,CAAC,EAAE;QACR,KAAK,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS;QAChC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EACrB,CAAC;QACD,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACtC,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IACvD,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC;AAGD,KAAK,UAAU,YAAY,CACzB,MAAqB,EACrB,IAA6B,EAC7B,IAAiD;IAEjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;QACnD,KAAK;QACL,EAAE,MAAM,EAAE,IAAI,EAAE;KACjB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IACvD,IAAI,OAAO,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mCAAmC,EAAE;YAC/D,GAAG,IAAI;YACP,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;SAC7C,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBACzD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAGD,MAAM,UAAU,iBAAiB,CAC/B,MAAqB,EACrB,IAA6B;IAE7B,OAAO;QACL,UAAU,CACR,mCAAmC,EACnC,6BAA6B,EAC7B,uBAAuB,EACvB,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAC3C;QACD,UAAU,CACR,+BAA+B,EAC/B,yBAAyB,EACzB,mBAAmB,EACnB,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CACtE;QACD,UAAU,CACR,kCAAkC,EAClC,4BAA4B,EAC5B,sBAAsB,EACtB,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CACjC;QACD,UAAU,CACR,yBAAyB,EACzB,mBAAmB,EACnB;YACE,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,CAAC,2CAA2C,CAAC;YACxD,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,CAAC,wDAAwD,CAAC;SACtE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CACb,QAAQ,CACN,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAChE,CACJ;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"builder-project.js","sourceRoot":"","sources":["../../../src/mcp/tools/builder-project.ts"],"names":[],"mappings":"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"}