botmux 3.16.0 → 3.17.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 (619) hide show
  1. package/dist/.runtime-build-id +1 -1
  2. package/dist/adapters/backend/riff-backend.d.ts +84 -1
  3. package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
  4. package/dist/adapters/backend/riff-backend.js +202 -19
  5. package/dist/adapters/backend/riff-backend.js.map +1 -1
  6. package/dist/adapters/backend/sandbox.d.ts +8 -0
  7. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  8. package/dist/adapters/backend/sandbox.js +15 -0
  9. package/dist/adapters/backend/sandbox.js.map +1 -1
  10. package/dist/adapters/backend/tmux-backend.d.ts +61 -7
  11. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  12. package/dist/adapters/backend/tmux-backend.js +80 -9
  13. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  14. package/dist/adapters/backend/tmux-pipe-backend.d.ts +62 -4
  15. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  16. package/dist/adapters/backend/tmux-pipe-backend.js +240 -27
  17. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  18. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  19. package/dist/adapters/cli/claude-code.js +4 -2
  20. package/dist/adapters/cli/claude-code.js.map +1 -1
  21. package/dist/adapters/cli/coco.d.ts.map +1 -1
  22. package/dist/adapters/cli/coco.js +27 -0
  23. package/dist/adapters/cli/coco.js.map +1 -1
  24. package/dist/adapters/cli/codex-app.d.ts.map +1 -1
  25. package/dist/adapters/cli/codex-app.js +28 -0
  26. package/dist/adapters/cli/codex-app.js.map +1 -1
  27. package/dist/adapters/cli/codex.d.ts.map +1 -1
  28. package/dist/adapters/cli/codex.js +51 -23
  29. package/dist/adapters/cli/codex.js.map +1 -1
  30. package/dist/adapters/cli/dsh-tui.d.ts +24 -0
  31. package/dist/adapters/cli/dsh-tui.d.ts.map +1 -0
  32. package/dist/adapters/cli/dsh-tui.js +99 -0
  33. package/dist/adapters/cli/dsh-tui.js.map +1 -0
  34. package/dist/adapters/cli/dsh.d.ts.map +1 -1
  35. package/dist/adapters/cli/dsh.js +15 -9
  36. package/dist/adapters/cli/dsh.js.map +1 -1
  37. package/dist/adapters/cli/fs-policy.d.ts +98 -1
  38. package/dist/adapters/cli/fs-policy.d.ts.map +1 -1
  39. package/dist/adapters/cli/fs-policy.js +182 -7
  40. package/dist/adapters/cli/fs-policy.js.map +1 -1
  41. package/dist/adapters/cli/grok.js +16 -18
  42. package/dist/adapters/cli/grok.js.map +1 -1
  43. package/dist/adapters/cli/model-catalog-json.d.ts +17 -0
  44. package/dist/adapters/cli/model-catalog-json.d.ts.map +1 -0
  45. package/dist/adapters/cli/model-catalog-json.js +43 -0
  46. package/dist/adapters/cli/model-catalog-json.js.map +1 -0
  47. package/dist/adapters/cli/oh-my-pi.d.ts +2 -0
  48. package/dist/adapters/cli/oh-my-pi.d.ts.map +1 -1
  49. package/dist/adapters/cli/oh-my-pi.js +45 -13
  50. package/dist/adapters/cli/oh-my-pi.js.map +1 -1
  51. package/dist/adapters/cli/opencode.js +1 -1
  52. package/dist/adapters/cli/opencode.js.map +1 -1
  53. package/dist/adapters/cli/registry.d.ts +2 -1
  54. package/dist/adapters/cli/registry.d.ts.map +1 -1
  55. package/dist/adapters/cli/registry.js +6 -1
  56. package/dist/adapters/cli/registry.js.map +1 -1
  57. package/dist/adapters/cli/relay.d.ts.map +1 -1
  58. package/dist/adapters/cli/relay.js +7 -0
  59. package/dist/adapters/cli/relay.js.map +1 -1
  60. package/dist/adapters/cli/seed.d.ts.map +1 -1
  61. package/dist/adapters/cli/seed.js +6 -0
  62. package/dist/adapters/cli/seed.js.map +1 -1
  63. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  64. package/dist/adapters/cli/shared-hints.js +20 -14
  65. package/dist/adapters/cli/shared-hints.js.map +1 -1
  66. package/dist/adapters/cli/traex.d.ts +4 -0
  67. package/dist/adapters/cli/traex.d.ts.map +1 -1
  68. package/dist/adapters/cli/traex.js +153 -0
  69. package/dist/adapters/cli/traex.js.map +1 -1
  70. package/dist/adapters/cli/types.d.ts +42 -1
  71. package/dist/adapters/cli/types.d.ts.map +1 -1
  72. package/dist/autostart.d.ts +6 -0
  73. package/dist/autostart.d.ts.map +1 -1
  74. package/dist/autostart.js +21 -1
  75. package/dist/autostart.js.map +1 -1
  76. package/dist/bot-registry.d.ts +27 -0
  77. package/dist/bot-registry.d.ts.map +1 -1
  78. package/dist/bot-registry.js +62 -2
  79. package/dist/bot-registry.js.map +1 -1
  80. package/dist/cli/vc-agent.d.ts.map +1 -1
  81. package/dist/cli/vc-agent.js +21 -3
  82. package/dist/cli/vc-agent.js.map +1 -1
  83. package/dist/cli.d.ts.map +1 -1
  84. package/dist/cli.js +92 -1
  85. package/dist/cli.js.map +1 -1
  86. package/dist/codex-app-runner.js +28 -0
  87. package/dist/codex-app-runner.js.map +1 -1
  88. package/dist/core/bot-steer-directive.d.ts +25 -0
  89. package/dist/core/bot-steer-directive.d.ts.map +1 -0
  90. package/dist/core/bot-steer-directive.js +47 -0
  91. package/dist/core/bot-steer-directive.js.map +1 -0
  92. package/dist/core/command-handler.d.ts.map +1 -1
  93. package/dist/core/command-handler.js +102 -18
  94. package/dist/core/command-handler.js.map +1 -1
  95. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  96. package/dist/core/dashboard-ipc-server.js +53 -13
  97. package/dist/core/dashboard-ipc-server.js.map +1 -1
  98. package/dist/core/dashboard-rows.d.ts +3 -0
  99. package/dist/core/dashboard-rows.d.ts.map +1 -1
  100. package/dist/core/dashboard-rows.js +26 -5
  101. package/dist/core/dashboard-rows.js.map +1 -1
  102. package/dist/core/dashboard-url.d.ts +10 -1
  103. package/dist/core/dashboard-url.d.ts.map +1 -1
  104. package/dist/core/dashboard-url.js +12 -2
  105. package/dist/core/dashboard-url.js.map +1 -1
  106. package/dist/core/dispatch.d.ts.map +1 -1
  107. package/dist/core/dispatch.js +5 -4
  108. package/dist/core/dispatch.js.map +1 -1
  109. package/dist/core/existing-app-server.d.ts +22 -0
  110. package/dist/core/existing-app-server.d.ts.map +1 -0
  111. package/dist/core/existing-app-server.js +85 -0
  112. package/dist/core/existing-app-server.js.map +1 -0
  113. package/dist/core/native-topic-id.d.ts +9 -0
  114. package/dist/core/native-topic-id.d.ts.map +1 -0
  115. package/dist/core/native-topic-id.js +14 -0
  116. package/dist/core/native-topic-id.js.map +1 -0
  117. package/dist/core/per-bot-env.d.ts.map +1 -1
  118. package/dist/core/per-bot-env.js +10 -0
  119. package/dist/core/per-bot-env.js.map +1 -1
  120. package/dist/core/plugins/mcp/gateway.d.ts +27 -3
  121. package/dist/core/plugins/mcp/gateway.d.ts.map +1 -1
  122. package/dist/core/plugins/mcp/gateway.js +272 -26
  123. package/dist/core/plugins/mcp/gateway.js.map +1 -1
  124. package/dist/core/plugins/mcp/host.d.ts +18 -0
  125. package/dist/core/plugins/mcp/host.d.ts.map +1 -1
  126. package/dist/core/plugins/mcp/host.js +80 -16
  127. package/dist/core/plugins/mcp/host.js.map +1 -1
  128. package/dist/core/plugins/mcp/launch-record.d.ts +14 -0
  129. package/dist/core/plugins/mcp/launch-record.d.ts.map +1 -0
  130. package/dist/core/plugins/mcp/launch-record.js +63 -0
  131. package/dist/core/plugins/mcp/launch-record.js.map +1 -0
  132. package/dist/core/session-activity.d.ts +11 -0
  133. package/dist/core/session-activity.d.ts.map +1 -1
  134. package/dist/core/session-activity.js +23 -0
  135. package/dist/core/session-activity.js.map +1 -1
  136. package/dist/core/session-group-birth.d.ts.map +1 -1
  137. package/dist/core/session-group-birth.js +23 -8
  138. package/dist/core/session-group-birth.js.map +1 -1
  139. package/dist/core/session-manager.d.ts +1 -4
  140. package/dist/core/session-manager.d.ts.map +1 -1
  141. package/dist/core/session-manager.js +16 -20
  142. package/dist/core/session-manager.js.map +1 -1
  143. package/dist/core/shared-adopt.d.ts +20 -0
  144. package/dist/core/shared-adopt.d.ts.map +1 -0
  145. package/dist/core/shared-adopt.js +26 -0
  146. package/dist/core/shared-adopt.js.map +1 -0
  147. package/dist/core/skills/customize-command.d.ts +7 -0
  148. package/dist/core/skills/customize-command.d.ts.map +1 -0
  149. package/dist/core/skills/customize-command.js +303 -0
  150. package/dist/core/skills/customize-command.js.map +1 -0
  151. package/dist/core/terminal-write-auth.d.ts +15 -0
  152. package/dist/core/terminal-write-auth.d.ts.map +1 -1
  153. package/dist/core/terminal-write-auth.js +15 -0
  154. package/dist/core/terminal-write-auth.js.map +1 -1
  155. package/dist/core/terminal-write-frame.d.ts +30 -0
  156. package/dist/core/terminal-write-frame.d.ts.map +1 -0
  157. package/dist/core/terminal-write-frame.js +44 -0
  158. package/dist/core/terminal-write-frame.js.map +1 -0
  159. package/dist/core/types.d.ts +14 -4
  160. package/dist/core/types.d.ts.map +1 -1
  161. package/dist/core/types.js +6 -8
  162. package/dist/core/types.js.map +1 -1
  163. package/dist/core/worker-pool.d.ts +31 -6
  164. package/dist/core/worker-pool.d.ts.map +1 -1
  165. package/dist/core/worker-pool.js +444 -102
  166. package/dist/core/worker-pool.js.map +1 -1
  167. package/dist/core/worker-startup-retry.d.ts +52 -0
  168. package/dist/core/worker-startup-retry.d.ts.map +1 -0
  169. package/dist/core/worker-startup-retry.js +68 -0
  170. package/dist/core/worker-startup-retry.js.map +1 -0
  171. package/dist/daemon.d.ts +9 -8
  172. package/dist/daemon.d.ts.map +1 -1
  173. package/dist/daemon.js +467 -171
  174. package/dist/daemon.js.map +1 -1
  175. package/dist/dashboard/autostart-api.d.ts +26 -0
  176. package/dist/dashboard/autostart-api.d.ts.map +1 -0
  177. package/dist/dashboard/autostart-api.js +88 -0
  178. package/dist/dashboard/autostart-api.js.map +1 -0
  179. package/dist/dashboard/bot-payload.d.ts +5 -0
  180. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  181. package/dist/dashboard/bot-payload.js +2 -0
  182. package/dist/dashboard/bot-payload.js.map +1 -1
  183. package/dist/dashboard/control-csrf.d.ts +29 -1
  184. package/dist/dashboard/control-csrf.d.ts.map +1 -1
  185. package/dist/dashboard/control-csrf.js +49 -10
  186. package/dist/dashboard/control-csrf.js.map +1 -1
  187. package/dist/dashboard/customization-api.d.ts +23 -0
  188. package/dist/dashboard/customization-api.d.ts.map +1 -0
  189. package/dist/dashboard/customization-api.js +198 -0
  190. package/dist/dashboard/customization-api.js.map +1 -0
  191. package/dist/dashboard/debug-terminal.d.ts +13 -1
  192. package/dist/dashboard/debug-terminal.d.ts.map +1 -1
  193. package/dist/dashboard/debug-terminal.js +18 -4
  194. package/dist/dashboard/debug-terminal.js.map +1 -1
  195. package/dist/dashboard/settings-write-applier.d.ts +0 -23
  196. package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
  197. package/dist/dashboard/settings-write-applier.js +7 -28
  198. package/dist/dashboard/settings-write-applier.js.map +1 -1
  199. package/dist/dashboard/terminal-control-route.d.ts +32 -0
  200. package/dist/dashboard/terminal-control-route.d.ts.map +1 -0
  201. package/dist/dashboard/terminal-control-route.js +70 -0
  202. package/dist/dashboard/terminal-control-route.js.map +1 -0
  203. package/dist/dashboard/terminal-control.d.ts +64 -13
  204. package/dist/dashboard/terminal-control.d.ts.map +1 -1
  205. package/dist/dashboard/terminal-control.js +77 -14
  206. package/dist/dashboard/terminal-control.js.map +1 -1
  207. package/dist/dashboard/terminal-front-proxy.d.ts.map +1 -1
  208. package/dist/dashboard/terminal-front-proxy.js +41 -9
  209. package/dist/dashboard/terminal-front-proxy.js.map +1 -1
  210. package/dist/dashboard/vc-consumer-profiles-api.d.ts +69 -18
  211. package/dist/dashboard/vc-consumer-profiles-api.d.ts.map +1 -1
  212. package/dist/dashboard/vc-consumer-profiles-api.js +149 -29
  213. package/dist/dashboard/vc-consumer-profiles-api.js.map +1 -1
  214. package/dist/dashboard/web/agent-workbench-api.d.ts +34 -2
  215. package/dist/dashboard/web/agent-workbench-api.d.ts.map +1 -1
  216. package/dist/dashboard/web/agent-workbench-api.js +39 -4
  217. package/dist/dashboard/web/agent-workbench-api.js.map +1 -1
  218. package/dist/dashboard/web/agent-workbench-appearance.d.ts +6 -3
  219. package/dist/dashboard/web/agent-workbench-appearance.d.ts.map +1 -1
  220. package/dist/dashboard/web/agent-workbench-appearance.js +7 -4
  221. package/dist/dashboard/web/agent-workbench-appearance.js.map +1 -1
  222. package/dist/dashboard/web/agent-workbench-model.d.ts +2 -0
  223. package/dist/dashboard/web/agent-workbench-model.d.ts.map +1 -1
  224. package/dist/dashboard/web/agent-workbench-model.js.map +1 -1
  225. package/dist/dashboard/web/agent-workbench-page.js +2 -2
  226. package/dist/dashboard/web/agent-workbench-page.js.map +1 -1
  227. package/dist/dashboard/web/agent-workbench-panes.d.ts +59 -4
  228. package/dist/dashboard/web/agent-workbench-panes.d.ts.map +1 -1
  229. package/dist/dashboard/web/agent-workbench-panes.js +493 -85
  230. package/dist/dashboard/web/agent-workbench-panes.js.map +1 -1
  231. package/dist/dashboard/web/agent-workbench-session-list.d.ts +11 -7
  232. package/dist/dashboard/web/agent-workbench-session-list.d.ts.map +1 -1
  233. package/dist/dashboard/web/agent-workbench-session-list.js +24 -31
  234. package/dist/dashboard/web/agent-workbench-session-list.js.map +1 -1
  235. package/dist/dashboard/web/agent-workbench-terminal-control.d.ts +198 -0
  236. package/dist/dashboard/web/agent-workbench-terminal-control.d.ts.map +1 -0
  237. package/dist/dashboard/web/agent-workbench-terminal-control.js +292 -0
  238. package/dist/dashboard/web/agent-workbench-terminal-control.js.map +1 -0
  239. package/dist/dashboard/web/agent-workbench-view.d.ts +3 -2
  240. package/dist/dashboard/web/agent-workbench-view.d.ts.map +1 -1
  241. package/dist/dashboard/web/agent-workbench-view.js +69 -50
  242. package/dist/dashboard/web/agent-workbench-view.js.map +1 -1
  243. package/dist/dashboard/web/app.d.ts.map +1 -1
  244. package/dist/dashboard/web/app.js +58 -7
  245. package/dist/dashboard/web/app.js.map +1 -1
  246. package/dist/dashboard/web/bot-defaults-page.d.ts +24 -0
  247. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  248. package/dist/dashboard/web/bot-defaults-page.js +191 -16
  249. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  250. package/dist/dashboard/web/bot-defaults.d.ts +17 -0
  251. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  252. package/dist/dashboard/web/bot-defaults.js +51 -2
  253. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  254. package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
  255. package/dist/dashboard/web/bot-onboarding.js +32 -8
  256. package/dist/dashboard/web/bot-onboarding.js.map +1 -1
  257. package/dist/dashboard/web/confirm-modal.d.ts +35 -0
  258. package/dist/dashboard/web/confirm-modal.d.ts.map +1 -0
  259. package/dist/dashboard/web/confirm-modal.js +111 -0
  260. package/dist/dashboard/web/confirm-modal.js.map +1 -0
  261. package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
  262. package/dist/dashboard/web/connectors-page.js +2 -1
  263. package/dist/dashboard/web/connectors-page.js.map +1 -1
  264. package/dist/dashboard/web/customization-page.d.ts +3 -0
  265. package/dist/dashboard/web/customization-page.d.ts.map +1 -0
  266. package/dist/dashboard/web/customization-page.js +315 -0
  267. package/dist/dashboard/web/customization-page.js.map +1 -0
  268. package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
  269. package/dist/dashboard/web/dashboard-routes.js +1 -0
  270. package/dist/dashboard/web/dashboard-routes.js.map +1 -1
  271. package/dist/dashboard/web/groups-page.d.ts.map +1 -1
  272. package/dist/dashboard/web/groups-page.js +11 -9
  273. package/dist/dashboard/web/groups-page.js.map +1 -1
  274. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  275. package/dist/dashboard/web/i18n.js +226 -42
  276. package/dist/dashboard/web/i18n.js.map +1 -1
  277. package/dist/dashboard/web/monitor-room.d.ts.map +1 -1
  278. package/dist/dashboard/web/monitor-room.js +3 -2
  279. package/dist/dashboard/web/monitor-room.js.map +1 -1
  280. package/dist/dashboard/web/overview-page.d.ts.map +1 -1
  281. package/dist/dashboard/web/overview-page.js +98 -63
  282. package/dist/dashboard/web/overview-page.js.map +1 -1
  283. package/dist/dashboard/web/roles-page.d.ts.map +1 -1
  284. package/dist/dashboard/web/roles-page.js +4 -3
  285. package/dist/dashboard/web/roles-page.js.map +1 -1
  286. package/dist/dashboard/web/schedules-page.d.ts.map +1 -1
  287. package/dist/dashboard/web/schedules-page.js +165 -18
  288. package/dist/dashboard/web/schedules-page.js.map +1 -1
  289. package/dist/dashboard/web/sessions-kanban.d.ts +2 -0
  290. package/dist/dashboard/web/sessions-kanban.d.ts.map +1 -1
  291. package/dist/dashboard/web/sessions-kanban.js +142 -24
  292. package/dist/dashboard/web/sessions-kanban.js.map +1 -1
  293. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  294. package/dist/dashboard/web/sessions-page.js +177 -94
  295. package/dist/dashboard/web/sessions-page.js.map +1 -1
  296. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  297. package/dist/dashboard/web/sessions.js +5 -4
  298. package/dist/dashboard/web/sessions.js.map +1 -1
  299. package/dist/dashboard/web/settings-page.d.ts +0 -8
  300. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  301. package/dist/dashboard/web/settings-page.js +185 -65
  302. package/dist/dashboard/web/settings-page.js.map +1 -1
  303. package/dist/dashboard/web/skills/skill-library-tab.d.ts +2 -0
  304. package/dist/dashboard/web/skills/skill-library-tab.d.ts.map +1 -1
  305. package/dist/dashboard/web/skills/skill-library-tab.js +15 -1
  306. package/dist/dashboard/web/skills/skill-library-tab.js.map +1 -1
  307. package/dist/dashboard/web/skills-page.d.ts.map +1 -1
  308. package/dist/dashboard/web/skills-page.js +5 -4
  309. package/dist/dashboard/web/skills-page.js.map +1 -1
  310. package/dist/dashboard/web/store.d.ts +5 -0
  311. package/dist/dashboard/web/store.d.ts.map +1 -1
  312. package/dist/dashboard/web/store.js +4 -0
  313. package/dist/dashboard/web/store.js.map +1 -1
  314. package/dist/dashboard/web/team-federation-page.d.ts.map +1 -1
  315. package/dist/dashboard/web/team-federation-page.js +3 -2
  316. package/dist/dashboard/web/team-federation-page.js.map +1 -1
  317. package/dist/dashboard/web/toast.d.ts +15 -0
  318. package/dist/dashboard/web/toast.d.ts.map +1 -0
  319. package/dist/dashboard/web/toast.js +70 -0
  320. package/dist/dashboard/web/toast.js.map +1 -0
  321. package/dist/dashboard/web/v3-components.d.ts.map +1 -1
  322. package/dist/dashboard/web/v3-components.js +2 -1
  323. package/dist/dashboard/web/v3-components.js.map +1 -1
  324. package/dist/dashboard/web/vc-consumer-profiles-section.d.ts +10 -12
  325. package/dist/dashboard/web/vc-consumer-profiles-section.d.ts.map +1 -1
  326. package/dist/dashboard/web/vc-consumer-profiles-section.js +219 -200
  327. package/dist/dashboard/web/vc-consumer-profiles-section.js.map +1 -1
  328. package/dist/dashboard/web/whiteboards-page.d.ts.map +1 -1
  329. package/dist/dashboard/web/whiteboards-page.js +2 -1
  330. package/dist/dashboard/web/whiteboards-page.js.map +1 -1
  331. package/dist/dashboard-web/app.js +1 -1
  332. package/dist/dashboard-web/chunks/agent-workbench-dock-page-LZSUOCEQ.js +1 -0
  333. package/dist/dashboard-web/chunks/agent-workbench-page-YONDRJU7.js +1 -0
  334. package/dist/dashboard-web/chunks/bot-defaults-page-X7LV6373.js +1 -0
  335. package/dist/dashboard-web/chunks/chunk-2PVRDXEL.js +1 -0
  336. package/dist/dashboard-web/chunks/chunk-53JUKBU2.js +10 -0
  337. package/dist/dashboard-web/chunks/{chunk-5CJMHTT4.js → chunk-5QX4OYOR.js} +1 -1
  338. package/dist/dashboard-web/chunks/{chunk-NACP7BMR.js → chunk-5VRVJFQR.js} +1 -1
  339. package/dist/dashboard-web/chunks/{chunk-FDZ7WOBW.js → chunk-6ROOZWYV.js} +1 -1
  340. package/dist/dashboard-web/chunks/{chunk-F6KNPF4R.js → chunk-CK22743G.js} +15 -19
  341. package/dist/dashboard-web/chunks/chunk-CVNIMUPY.js +25 -0
  342. package/dist/dashboard-web/chunks/chunk-GJC2TMWS.js +2 -0
  343. package/dist/dashboard-web/chunks/chunk-OT6L6G7R.js +1 -0
  344. package/dist/dashboard-web/chunks/chunk-QITAMHW6.js +1 -0
  345. package/dist/dashboard-web/chunks/chunk-RHVFZC5Z.js +1 -0
  346. package/dist/dashboard-web/chunks/chunk-SOBMN2VY.js +1 -0
  347. package/dist/dashboard-web/chunks/chunk-SZOB6VK2.js +1 -0
  348. package/dist/dashboard-web/chunks/chunk-XVIXNQGC.js +44 -0
  349. package/dist/dashboard-web/chunks/chunk-YUJF34ME.js +1 -0
  350. package/dist/dashboard-web/chunks/connectors-page-LB2HEJ7F.js +1 -0
  351. package/dist/dashboard-web/chunks/customization-page-4GXBYLG6.js +105 -0
  352. package/dist/dashboard-web/chunks/feedback-page-IZQ7VLDG.js +1 -0
  353. package/dist/dashboard-web/chunks/groups-page-4WCP5OEV.js +8 -0
  354. package/dist/dashboard-web/chunks/{insights-page-HJFDYR5N.js → insights-page-TXQHIPQL.js} +1 -1
  355. package/dist/dashboard-web/chunks/{monitor-room-V7PCP47V.js → monitor-room-VBRVWXCM.js} +8 -8
  356. package/dist/dashboard-web/chunks/monitoring-page-QDDZWERE.js +2 -0
  357. package/dist/dashboard-web/chunks/office-page-PENFNYPG.js +1 -0
  358. package/dist/dashboard-web/chunks/overview-page-BZQDP6MP.js +1 -0
  359. package/dist/dashboard-web/chunks/plugin-page-JX4GSWZS.js +1 -0
  360. package/dist/dashboard-web/chunks/roles-page-VPNINZNK.js +1 -0
  361. package/dist/dashboard-web/chunks/schedules-page-BITO6HEA.js +1 -0
  362. package/dist/dashboard-web/chunks/sessions-page-ZKCOVTD2.js +8 -0
  363. package/dist/dashboard-web/chunks/settings-page-UT6JDTS6.js +2 -0
  364. package/dist/dashboard-web/chunks/skills-page-GULXVAJY.js +4 -0
  365. package/dist/dashboard-web/chunks/team-federation-page-CUUJWGEG.js +1 -0
  366. package/dist/dashboard-web/chunks/v3-page-5WVJ5AUR.js +94 -0
  367. package/dist/dashboard-web/chunks/whiteboards-page-FZ2CME4H.js +1 -0
  368. package/dist/dashboard-web/design-tokens.css +236 -0
  369. package/dist/dashboard-web/index.html +1 -0
  370. package/dist/dashboard-web/style.css +1930 -114
  371. package/dist/dashboard.js +360 -279
  372. package/dist/dashboard.js.map +1 -1
  373. package/dist/desktop/renderer/app.js +6 -0
  374. package/dist/desktop/renderer/app.js.map +1 -1
  375. package/dist/dsh-runner.js +139 -17
  376. package/dist/dsh-runner.js.map +1 -1
  377. package/dist/global-config.d.ts +33 -2
  378. package/dist/global-config.d.ts.map +1 -1
  379. package/dist/global-config.js +62 -0
  380. package/dist/global-config.js.map +1 -1
  381. package/dist/i18n/en.d.ts.map +1 -1
  382. package/dist/i18n/en.js +13 -4
  383. package/dist/i18n/en.js.map +1 -1
  384. package/dist/i18n/index.d.ts +27 -3
  385. package/dist/i18n/index.d.ts.map +1 -1
  386. package/dist/i18n/index.js +33 -4
  387. package/dist/i18n/index.js.map +1 -1
  388. package/dist/i18n/zh.d.ts.map +1 -1
  389. package/dist/i18n/zh.js +13 -4
  390. package/dist/i18n/zh.js.map +1 -1
  391. package/dist/im/lark/card-builder.d.ts +2 -0
  392. package/dist/im/lark/card-builder.d.ts.map +1 -1
  393. package/dist/im/lark/card-builder.js +7 -4
  394. package/dist/im/lark/card-builder.js.map +1 -1
  395. package/dist/im/lark/card-handler.d.ts.map +1 -1
  396. package/dist/im/lark/card-handler.js +135 -20
  397. package/dist/im/lark/card-handler.js.map +1 -1
  398. package/dist/im/lark/event-dispatcher.d.ts +38 -3
  399. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  400. package/dist/im/lark/event-dispatcher.js +163 -13
  401. package/dist/im/lark/event-dispatcher.js.map +1 -1
  402. package/dist/im/lark/v3-blocked-card-handler.d.ts.map +1 -1
  403. package/dist/im/lark/v3-blocked-card-handler.js +2 -1
  404. package/dist/im/lark/v3-blocked-card-handler.js.map +1 -1
  405. package/dist/im/lark/v3-blocked-card.d.ts +1 -1
  406. package/dist/im/lark/v3-blocked-card.d.ts.map +1 -1
  407. package/dist/im/lark/v3-blocked-card.js +14 -0
  408. package/dist/im/lark/v3-blocked-card.js.map +1 -1
  409. package/dist/index-core-only.js +2 -0
  410. package/dist/index-core-only.js.map +1 -1
  411. package/dist/index-daemon.js +3 -0
  412. package/dist/index-daemon.js.map +1 -1
  413. package/dist/platform/binding.d.ts +37 -0
  414. package/dist/platform/binding.d.ts.map +1 -1
  415. package/dist/platform/binding.js +15 -0
  416. package/dist/platform/binding.js.map +1 -1
  417. package/dist/services/bridge-turn-journal.d.ts +63 -0
  418. package/dist/services/bridge-turn-journal.d.ts.map +1 -0
  419. package/dist/services/bridge-turn-journal.js +149 -0
  420. package/dist/services/bridge-turn-journal.js.map +1 -0
  421. package/dist/services/bridge-turn-queue.d.ts +8 -1
  422. package/dist/services/bridge-turn-queue.d.ts.map +1 -1
  423. package/dist/services/bridge-turn-queue.js +2 -1
  424. package/dist/services/bridge-turn-queue.js.map +1 -1
  425. package/dist/services/codex-app-runner-protocol.d.ts +5 -0
  426. package/dist/services/codex-app-runner-protocol.d.ts.map +1 -1
  427. package/dist/services/codex-app-runner-protocol.js +5 -0
  428. package/dist/services/codex-app-runner-protocol.js.map +1 -1
  429. package/dist/services/customization-store.d.ts +93 -0
  430. package/dist/services/customization-store.d.ts.map +1 -0
  431. package/dist/services/customization-store.js +542 -0
  432. package/dist/services/customization-store.js.map +1 -0
  433. package/dist/services/file-bridge-path.d.ts.map +1 -1
  434. package/dist/services/file-bridge-path.js +3 -0
  435. package/dist/services/file-bridge-path.js.map +1 -1
  436. package/dist/services/grok-transcript.d.ts.map +1 -1
  437. package/dist/services/grok-transcript.js +44 -9
  438. package/dist/services/grok-transcript.js.map +1 -1
  439. package/dist/services/local-cli-opener.d.ts.map +1 -1
  440. package/dist/services/local-cli-opener.js +12 -3
  441. package/dist/services/local-cli-opener.js.map +1 -1
  442. package/dist/services/model-catalog.d.ts +54 -0
  443. package/dist/services/model-catalog.d.ts.map +1 -0
  444. package/dist/services/model-catalog.js +147 -0
  445. package/dist/services/model-catalog.js.map +1 -0
  446. package/dist/services/omp-transcript.d.ts +27 -0
  447. package/dist/services/omp-transcript.d.ts.map +1 -0
  448. package/dist/services/omp-transcript.js +214 -0
  449. package/dist/services/omp-transcript.js.map +1 -0
  450. package/dist/services/platform-team-store.d.ts +16 -8
  451. package/dist/services/platform-team-store.d.ts.map +1 -1
  452. package/dist/services/platform-team-store.js +17 -10
  453. package/dist/services/platform-team-store.js.map +1 -1
  454. package/dist/services/project-scanner.d.ts.map +1 -1
  455. package/dist/services/project-scanner.js +13 -8
  456. package/dist/services/project-scanner.js.map +1 -1
  457. package/dist/services/resumable-session-discovery.d.ts.map +1 -1
  458. package/dist/services/resumable-session-discovery.js +117 -35
  459. package/dist/services/resumable-session-discovery.js.map +1 -1
  460. package/dist/services/structured-bridge-clis.d.ts +5 -3
  461. package/dist/services/structured-bridge-clis.d.ts.map +1 -1
  462. package/dist/services/structured-bridge-clis.js +5 -1
  463. package/dist/services/structured-bridge-clis.js.map +1 -1
  464. package/dist/services/vc-meeting-action-gate.d.ts.map +1 -1
  465. package/dist/services/vc-meeting-action-gate.js +15 -4
  466. package/dist/services/vc-meeting-action-gate.js.map +1 -1
  467. package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts +46 -66
  468. package/dist/services/vc-meeting-consumer-profile-bootstrap.d.ts.map +1 -1
  469. package/dist/services/vc-meeting-consumer-profile-bootstrap.js +33 -292
  470. package/dist/services/vc-meeting-consumer-profile-bootstrap.js.map +1 -1
  471. package/dist/services/vc-meeting-consumer-profile-templates.js +3 -3
  472. package/dist/services/vc-meeting-consumer-profile-templates.js.map +1 -1
  473. package/dist/services/vc-meeting-delivery-store.d.ts +18 -0
  474. package/dist/services/vc-meeting-delivery-store.d.ts.map +1 -1
  475. package/dist/services/vc-meeting-delivery-store.js +55 -0
  476. package/dist/services/vc-meeting-delivery-store.js.map +1 -1
  477. package/dist/services/vc-meeting-send-policy.d.ts +21 -1
  478. package/dist/services/vc-meeting-send-policy.d.ts.map +1 -1
  479. package/dist/services/vc-meeting-send-policy.js +30 -2
  480. package/dist/services/vc-meeting-send-policy.js.map +1 -1
  481. package/dist/services/vc-meeting-shared-consumer-catalog-store.d.ts +78 -0
  482. package/dist/services/vc-meeting-shared-consumer-catalog-store.d.ts.map +1 -0
  483. package/dist/services/vc-meeting-shared-consumer-catalog-store.js +227 -0
  484. package/dist/services/vc-meeting-shared-consumer-catalog-store.js.map +1 -0
  485. package/dist/services/vc-meeting-shared-consumer-catalog.d.ts +53 -0
  486. package/dist/services/vc-meeting-shared-consumer-catalog.d.ts.map +1 -0
  487. package/dist/services/vc-meeting-shared-consumer-catalog.js +161 -0
  488. package/dist/services/vc-meeting-shared-consumer-catalog.js.map +1 -0
  489. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  490. package/dist/setup/bot-config-editor.js +1 -0
  491. package/dist/setup/bot-config-editor.js.map +1 -1
  492. package/dist/setup/open-platform-automation.d.ts +20 -0
  493. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  494. package/dist/setup/open-platform-automation.js +27 -0
  495. package/dist/setup/open-platform-automation.js.map +1 -1
  496. package/dist/skills/customization-bundle.d.ts +83 -0
  497. package/dist/skills/customization-bundle.d.ts.map +1 -0
  498. package/dist/skills/customization-bundle.js +214 -0
  499. package/dist/skills/customization-bundle.js.map +1 -0
  500. package/dist/skills/definitions.d.ts.map +1 -1
  501. package/dist/skills/definitions.js +10 -3
  502. package/dist/skills/definitions.js.map +1 -1
  503. package/dist/skills/effective-builtins.d.ts +38 -0
  504. package/dist/skills/effective-builtins.d.ts.map +1 -0
  505. package/dist/skills/effective-builtins.js +96 -0
  506. package/dist/skills/effective-builtins.js.map +1 -0
  507. package/dist/skills/injection-mode.d.ts +4 -1
  508. package/dist/skills/injection-mode.d.ts.map +1 -1
  509. package/dist/skills/injection-mode.js +11 -3
  510. package/dist/skills/injection-mode.js.map +1 -1
  511. package/dist/skills/installer.d.ts.map +1 -1
  512. package/dist/skills/installer.js +24 -1
  513. package/dist/skills/installer.js.map +1 -1
  514. package/dist/skills/prompt-fragments.d.ts +58 -0
  515. package/dist/skills/prompt-fragments.d.ts.map +1 -0
  516. package/dist/skills/prompt-fragments.js +88 -0
  517. package/dist/skills/prompt-fragments.js.map +1 -0
  518. package/dist/types.d.ts +51 -0
  519. package/dist/types.d.ts.map +1 -1
  520. package/dist/utils/cli-usage-limit.d.ts +50 -0
  521. package/dist/utils/cli-usage-limit.d.ts.map +1 -1
  522. package/dist/utils/cli-usage-limit.js +43 -0
  523. package/dist/utils/cli-usage-limit.js.map +1 -1
  524. package/dist/utils/idle-detector.d.ts +12 -0
  525. package/dist/utils/idle-detector.d.ts.map +1 -1
  526. package/dist/utils/idle-detector.js +88 -2
  527. package/dist/utils/idle-detector.js.map +1 -1
  528. package/dist/utils/stuck-detector.d.ts +5 -0
  529. package/dist/utils/stuck-detector.d.ts.map +1 -1
  530. package/dist/utils/stuck-detector.js +41 -0
  531. package/dist/utils/stuck-detector.js.map +1 -1
  532. package/dist/utils/usage-limit-tracker.d.ts +46 -0
  533. package/dist/utils/usage-limit-tracker.d.ts.map +1 -0
  534. package/dist/utils/usage-limit-tracker.js +91 -0
  535. package/dist/utils/usage-limit-tracker.js.map +1 -0
  536. package/dist/utils/user-token.js +1 -1
  537. package/dist/utils/user-token.js.map +1 -1
  538. package/dist/worker.js +812 -125
  539. package/dist/worker.js.map +1 -1
  540. package/dist/workflows/definition.d.ts +14 -14
  541. package/dist/workflows/events/payloads.d.ts +12 -12
  542. package/dist/workflows/events/schema.d.ts +164 -164
  543. package/dist/workflows/migration/v2-to-v3.js +1 -1
  544. package/dist/workflows/migration/v2-to-v3.js.map +1 -1
  545. package/dist/workflows/v3/architect.d.ts.map +1 -1
  546. package/dist/workflows/v3/architect.js +11 -5
  547. package/dist/workflows/v3/architect.js.map +1 -1
  548. package/dist/workflows/v3/artifact-contract-declarations.d.ts +22 -0
  549. package/dist/workflows/v3/artifact-contract-declarations.d.ts.map +1 -0
  550. package/dist/workflows/v3/artifact-contract-declarations.js +95 -0
  551. package/dist/workflows/v3/artifact-contract-declarations.js.map +1 -0
  552. package/dist/workflows/v3/contract.d.ts +1 -0
  553. package/dist/workflows/v3/contract.d.ts.map +1 -1
  554. package/dist/workflows/v3/contract.js.map +1 -1
  555. package/dist/workflows/v3/daemon-run.d.ts +2 -2
  556. package/dist/workflows/v3/daemon-run.d.ts.map +1 -1
  557. package/dist/workflows/v3/daemon-run.js +4 -0
  558. package/dist/workflows/v3/daemon-run.js.map +1 -1
  559. package/dist/workflows/v3/dag.d.ts +7 -0
  560. package/dist/workflows/v3/dag.d.ts.map +1 -1
  561. package/dist/workflows/v3/dag.js +69 -8
  562. package/dist/workflows/v3/dag.js.map +1 -1
  563. package/dist/workflows/v3/ephemeral-pool.js +1 -1
  564. package/dist/workflows/v3/ephemeral-pool.js.map +1 -1
  565. package/dist/workflows/v3/event-contract.d.ts +3 -1
  566. package/dist/workflows/v3/event-contract.d.ts.map +1 -1
  567. package/dist/workflows/v3/host.d.ts.map +1 -1
  568. package/dist/workflows/v3/host.js +5 -1
  569. package/dist/workflows/v3/host.js.map +1 -1
  570. package/dist/workflows/v3/journal.d.ts +1 -1
  571. package/dist/workflows/v3/journal.d.ts.map +1 -1
  572. package/dist/workflows/v3/journal.js.map +1 -1
  573. package/dist/workflows/v3/library-materialize.d.ts.map +1 -1
  574. package/dist/workflows/v3/library-materialize.js +9 -1
  575. package/dist/workflows/v3/library-materialize.js.map +1 -1
  576. package/dist/workflows/v3/library-schema.d.ts +3 -1
  577. package/dist/workflows/v3/library-schema.d.ts.map +1 -1
  578. package/dist/workflows/v3/library-schema.js +20 -4
  579. package/dist/workflows/v3/library-schema.js.map +1 -1
  580. package/dist/workflows/v3/library-store.d.ts.map +1 -1
  581. package/dist/workflows/v3/library-store.js +15 -3
  582. package/dist/workflows/v3/library-store.js.map +1 -1
  583. package/dist/workflows/v3/run-envelope.d.ts +16 -16
  584. package/dist/workflows/v3/shared-node-runtime.d.ts +2 -1
  585. package/dist/workflows/v3/shared-node-runtime.d.ts.map +1 -1
  586. package/dist/workflows/v3/shared-node-runtime.js +48 -7
  587. package/dist/workflows/v3/shared-node-runtime.js.map +1 -1
  588. package/package.json +2 -1
  589. package/dist/dashboard-web/chunks/agent-workbench-dock-page-IKAC5CFL.js +0 -1
  590. package/dist/dashboard-web/chunks/agent-workbench-page-M53UN5EB.js +0 -1
  591. package/dist/dashboard-web/chunks/bot-defaults-page-YKE5SDZF.js +0 -10
  592. package/dist/dashboard-web/chunks/chunk-22WIADUT.js +0 -2
  593. package/dist/dashboard-web/chunks/chunk-24ONYQMR.js +0 -1
  594. package/dist/dashboard-web/chunks/chunk-2W6SCN3M.js +0 -1
  595. package/dist/dashboard-web/chunks/chunk-4XNJX6B3.js +0 -1
  596. package/dist/dashboard-web/chunks/chunk-5THX4DI2.js +0 -66
  597. package/dist/dashboard-web/chunks/chunk-7SZRL6FY.js +0 -1
  598. package/dist/dashboard-web/chunks/chunk-AGCPF6MT.js +0 -1
  599. package/dist/dashboard-web/chunks/chunk-FXW3V4JR.js +0 -1
  600. package/dist/dashboard-web/chunks/chunk-SYC6D5XU.js +0 -1
  601. package/dist/dashboard-web/chunks/connectors-page-VOISXXII.js +0 -1
  602. package/dist/dashboard-web/chunks/feedback-page-RN6HRZMS.js +0 -1
  603. package/dist/dashboard-web/chunks/groups-page-UQT6DCB7.js +0 -8
  604. package/dist/dashboard-web/chunks/monitoring-page-NKEKVQAP.js +0 -2
  605. package/dist/dashboard-web/chunks/office-page-GVJF73XW.js +0 -1
  606. package/dist/dashboard-web/chunks/overview-page-KHLV6VTI.js +0 -1
  607. package/dist/dashboard-web/chunks/plugin-page-J3OF5IY4.js +0 -1
  608. package/dist/dashboard-web/chunks/roles-page-WQIRSOLZ.js +0 -1
  609. package/dist/dashboard-web/chunks/schedules-page-J2DEY2X6.js +0 -1
  610. package/dist/dashboard-web/chunks/sessions-page-7BQFEA5P.js +0 -8
  611. package/dist/dashboard-web/chunks/settings-page-BJEIOFJH.js +0 -2
  612. package/dist/dashboard-web/chunks/skills-page-HGIFR3IU.js +0 -4
  613. package/dist/dashboard-web/chunks/team-federation-page-MR5ZPL4B.js +0 -1
  614. package/dist/dashboard-web/chunks/v3-page-GBR5JWPE.js +0 -94
  615. package/dist/dashboard-web/chunks/whiteboards-page-QAZM4BN3.js +0 -1
  616. package/dist/services/vc-meeting-consumer-profile-store.d.ts +0 -39
  617. package/dist/services/vc-meeting-consumer-profile-store.d.ts.map +0 -1
  618. package/dist/services/vc-meeting-consumer-profile-store.js +0 -191
  619. package/dist/services/vc-meeting-consumer-profile-store.js.map +0 -1
@@ -0,0 +1,214 @@
1
+ import { SUPPORTED_LOCALES } from '../i18n/types.js';
2
+ import { readCustomizationState, readSkillOverrideBody, replaceState, MAX_SKILL_BODY_BYTES, MAX_PROMPT_OVERRIDE_BYTES, } from '../services/customization-store.js';
3
+ import { validateFragmentOverride } from './prompt-fragments.js';
4
+ export const BUNDLE_KIND = 'botmux-customization-bundle';
5
+ export const BUNDLE_SCHEMA_VERSION = 1;
6
+ // ─── Export ──────────────────────────────────────────────────────────────────
7
+ /** Build a portable bundle from the current on-disk customization state.
8
+ * Skill bodies are inlined by reading their .md files. */
9
+ export function exportBundle(opts = {}) {
10
+ const state = readCustomizationState();
11
+ const bundle = {
12
+ schemaVersion: BUNDLE_SCHEMA_VERSION,
13
+ kind: BUNDLE_KIND,
14
+ };
15
+ if (opts.name)
16
+ bundle.name = opts.name;
17
+ if (opts.createdAt)
18
+ bundle.createdAt = opts.createdAt;
19
+ if (state.promptOverrides && Object.keys(state.promptOverrides).length) {
20
+ bundle.promptOverrides = state.promptOverrides;
21
+ }
22
+ if (state.conditionalLines && Object.keys(state.conditionalLines).length) {
23
+ bundle.conditionalLines = state.conditionalLines;
24
+ }
25
+ if (state.builtinSkills && Object.keys(state.builtinSkills).length) {
26
+ const skills = {};
27
+ for (const [name, ov] of Object.entries(state.builtinSkills)) {
28
+ const entry = {};
29
+ if (ov.body !== undefined) {
30
+ const body = readSkillOverrideBody(name);
31
+ if (typeof body === 'string')
32
+ entry.body = body; // inline the full text
33
+ }
34
+ if (ov.disabled)
35
+ entry.disabled = true;
36
+ if (entry.body !== undefined || entry.disabled)
37
+ skills[name] = entry;
38
+ }
39
+ if (Object.keys(skills).length)
40
+ bundle.builtinSkills = skills;
41
+ }
42
+ return bundle;
43
+ }
44
+ // ─── Parse / validate ────────────────────────────────────────────────────────
45
+ export class BundleError extends Error {
46
+ }
47
+ /** Parse + validate raw JSON text into a CustomizationBundle. Throws
48
+ * BundleError with a human message on any structural problem. */
49
+ export function parseBundle(rawJson) {
50
+ let parsed;
51
+ try {
52
+ parsed = JSON.parse(rawJson);
53
+ }
54
+ catch {
55
+ throw new BundleError('不是合法的 JSON');
56
+ }
57
+ if (!parsed || typeof parsed !== 'object')
58
+ throw new BundleError('bundle 必须是一个 JSON 对象');
59
+ const r = parsed;
60
+ if (r.kind !== BUNDLE_KIND)
61
+ throw new BundleError(`kind 必须是 "${BUNDLE_KIND}"`);
62
+ if (r.schemaVersion !== BUNDLE_SCHEMA_VERSION)
63
+ throw new BundleError(`不支持的 schemaVersion(期望 ${BUNDLE_SCHEMA_VERSION})`);
64
+ const out = { schemaVersion: BUNDLE_SCHEMA_VERSION, kind: BUNDLE_KIND };
65
+ if (typeof r.name === 'string')
66
+ out.name = r.name.slice(0, 200);
67
+ if (typeof r.createdAt === 'string')
68
+ out.createdAt = r.createdAt;
69
+ if (r.promptOverrides && typeof r.promptOverrides === 'object') {
70
+ const po = {};
71
+ for (const [loc, map] of Object.entries(r.promptOverrides)) {
72
+ if (!SUPPORTED_LOCALES.includes(loc))
73
+ continue;
74
+ if (!map || typeof map !== 'object')
75
+ continue;
76
+ const clean = {};
77
+ for (const [k, v] of Object.entries(map)) {
78
+ if (typeof v !== 'string' || !k)
79
+ continue;
80
+ if (Buffer.byteLength(v, 'utf-8') > MAX_PROMPT_OVERRIDE_BYTES) {
81
+ throw new BundleError(`prompt 覆盖过大:${k} (${loc})`);
82
+ }
83
+ // Enforce placeholder contracts on import too, so a bundle can't smuggle
84
+ // in a broken {count}/{names} template.
85
+ const err = validateFragmentOverride(k, v);
86
+ if (err)
87
+ throw new BundleError(`${k} (${loc}):${err}`);
88
+ clean[k] = v;
89
+ }
90
+ if (Object.keys(clean).length)
91
+ po[loc] = clean;
92
+ }
93
+ if (Object.keys(po).length)
94
+ out.promptOverrides = po;
95
+ }
96
+ if (r.conditionalLines && typeof r.conditionalLines === 'object') {
97
+ const cl = {};
98
+ for (const [k, v] of Object.entries(r.conditionalLines)) {
99
+ if (typeof v === 'boolean' && k)
100
+ cl[k] = v;
101
+ }
102
+ if (Object.keys(cl).length)
103
+ out.conditionalLines = cl;
104
+ }
105
+ if (r.builtinSkills && typeof r.builtinSkills === 'object') {
106
+ const bs = {};
107
+ for (const [name, ov] of Object.entries(r.builtinSkills)) {
108
+ if (!/^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$/.test(name))
109
+ throw new BundleError(`非法 skill 名:${name}`);
110
+ if (!ov || typeof ov !== 'object')
111
+ continue;
112
+ const o = ov;
113
+ const entry = {};
114
+ if (typeof o.body === 'string') {
115
+ if (Buffer.byteLength(o.body, 'utf-8') > MAX_SKILL_BODY_BYTES) {
116
+ throw new BundleError(`skill 正文过大:${name}`);
117
+ }
118
+ entry.body = o.body;
119
+ }
120
+ if (o.disabled === true)
121
+ entry.disabled = true;
122
+ if (entry.body !== undefined || entry.disabled)
123
+ bs[name] = entry;
124
+ }
125
+ if (Object.keys(bs).length)
126
+ out.builtinSkills = bs;
127
+ }
128
+ return out;
129
+ }
130
+ // ─── Diff (confirm-before-apply preview) ─────────────────────────────────────
131
+ function preview(s, n = 60) {
132
+ if (s === undefined)
133
+ return undefined;
134
+ const one = s.replace(/\s+/g, ' ').trim();
135
+ return one.length > n ? one.slice(0, n) + '…' : one;
136
+ }
137
+ /** Compute the diff a bundle import would produce against current state. Pure —
138
+ * reads current state but writes nothing. */
139
+ export function previewBundleImport(bundle) {
140
+ const current = readCustomizationState();
141
+ const diff = [];
142
+ // Prompt overrides
143
+ for (const loc of Object.keys(bundle.promptOverrides ?? {})) {
144
+ const incoming = bundle.promptOverrides[loc] ?? {};
145
+ for (const [key, val] of Object.entries(incoming)) {
146
+ const existing = current.promptOverrides?.[loc]?.[key];
147
+ const action = existing === undefined ? 'add' : existing === val ? 'unchanged' : 'replace';
148
+ diff.push({ kind: 'prompt', id: key, locale: loc, action, before: preview(existing), after: preview(val) });
149
+ }
150
+ }
151
+ // Conditional lines
152
+ for (const [key, val] of Object.entries(bundle.conditionalLines ?? {})) {
153
+ const existing = current.conditionalLines?.[key];
154
+ const action = existing === undefined ? 'add' : existing === val ? 'unchanged' : 'replace';
155
+ diff.push({ kind: 'conditional', id: key, action, before: existing === undefined ? undefined : String(existing), after: String(val) });
156
+ }
157
+ // Skills
158
+ for (const [name, ov] of Object.entries(bundle.builtinSkills ?? {})) {
159
+ const existing = current.builtinSkills?.[name];
160
+ if (ov.disabled && !ov.body) {
161
+ diff.push({ kind: 'skill', id: name, action: 'disable', after: '停用' });
162
+ continue;
163
+ }
164
+ const existingBody = existing?.body !== undefined ? readSkillOverrideBody(name) : undefined;
165
+ const action = existingBody === undefined ? 'add' : existingBody === ov.body ? 'unchanged' : 'replace';
166
+ diff.push({ kind: 'skill', id: name, action, before: preview(existingBody), after: preview(ov.body) });
167
+ }
168
+ const summary = {
169
+ adds: diff.filter((d) => d.action === 'add').length,
170
+ replaces: diff.filter((d) => d.action === 'replace').length,
171
+ disables: diff.filter((d) => d.action === 'disable').length,
172
+ unchanged: diff.filter((d) => d.action === 'unchanged').length,
173
+ };
174
+ return { bundle, diff, summary };
175
+ }
176
+ // ─── Apply ───────────────────────────────────────────────────────────────────
177
+ /**
178
+ * Apply a validated bundle by REPLACING the current customization content with
179
+ * it (snapshotting first, so it's reversible). Returns the resulting state.
180
+ *
181
+ * "Replace" (not merge) is deliberate for P0: it makes import deterministic and
182
+ * the diff preview honest — what you see is exactly the resulting state. A merge
183
+ * mode can be layered on later if requested.
184
+ */
185
+ export function applyBundle(bundle, label = 'import bundle') {
186
+ const next = { schemaVersion: 1 };
187
+ if (bundle.promptOverrides)
188
+ next.promptOverrides = bundle.promptOverrides;
189
+ if (bundle.conditionalLines)
190
+ next.conditionalLines = bundle.conditionalLines;
191
+ const skillBodies = {};
192
+ if (bundle.builtinSkills) {
193
+ const bs = {};
194
+ for (const [name, ov] of Object.entries(bundle.builtinSkills)) {
195
+ const entry = {};
196
+ if (typeof ov.body === 'string') {
197
+ entry.body = ov.body;
198
+ skillBodies[name] = ov.body;
199
+ }
200
+ if (ov.disabled)
201
+ entry.disabled = true;
202
+ if (entry.body !== undefined || entry.disabled)
203
+ bs[name] = entry;
204
+ }
205
+ if (Object.keys(bs).length)
206
+ next.builtinSkills = bs;
207
+ }
208
+ return replaceState(next, skillBodies, label);
209
+ }
210
+ /** Serialize a bundle to pretty JSON (with a trailing newline) for file output. */
211
+ export function serializeBundle(bundle) {
212
+ return JSON.stringify(bundle, null, 2) + '\n';
213
+ }
214
+ //# sourceMappingURL=customization-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customization-bundle.js","sourceRoot":"","sources":["../../src/skills/customization-bundle.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/skills/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,QAAQ;IACvB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;CACjB;AAihCD,eAAO,MAAM,SAAS,qkOAoFrB,CAAC;AAwSF,eAAO,MAAM,gBAAgB,ikQAoH5B,CAAC;AAEF,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C;;;;;4DAK4D;AAC5D,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAEzD,eAAO,MAAM,cAAc,EAAE,QAAQ,EASpC,CAAC;AAEF;;;;;;;;;;;;6EAY6E;AAC7E,eAAO,MAAM,uBAAuB,EAAE,QAAQ,EAI7C,CAAC;AAEF;kDACkD;AAClD,eAAO,MAAM,4BAA4B,EAAE,MAAM,EACL,CAAC;AAE7C;;qCAEqC;AACrC,eAAO,MAAM,mBAAmB,EAAE,MAAM,EASvC,CAAC"}
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/skills/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,QAAQ;IACvB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;CACjB;AAwhCD,eAAO,MAAM,SAAS,qkOAoFrB,CAAC;AAwSF,eAAO,MAAM,gBAAgB,ikQAoH5B,CAAC;AAEF,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C;;;;;4DAK4D;AAC5D,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAEzD,eAAO,MAAM,cAAc,EAAE,QAAQ,EASpC,CAAC;AAEF;;;;;;;;;;;;6EAY6E;AAC7E,eAAO,MAAM,uBAAuB,EAAE,QAAQ,EAI7C,CAAC;AAEF;kDACkD;AAClD,eAAO,MAAM,4BAA4B,EAAE,MAAM,EACL,CAAC;AAE7C;;qCAEqC;AACrC,eAAO,MAAM,mBAAmB,EAAE,MAAM,EASvC,CAAC"}
@@ -612,7 +612,7 @@ team scope 输出的 \`agents[]\` 每项:\`appId\`(拉群/补人就用它)
612
612
  `;
613
613
  const HANDOFF_SKILL = `---
614
614
  name: botmux-handoff
615
- description: 把当前任务交棒给团队里另一个机器人时使用(多机器人协作接力)。当你做完自己负责的部分、需要另一个机器人接手下一步,或用户说"交给X""让X接着做""@某bot继续""下一步谁谁来"时触发。先用 botmux-bots 查花名册挑对象,再用结构化交接发给对方。
615
+ description: 把当前任务交棒给团队里另一个机器人时使用(多机器人协作接力)。当你做完自己负责的部分、需要另一个机器人接手下一步,或用户说"交给X""让X接着做""@某bot继续""下一步谁谁来"时触发。单个目标 bot 或单个专项的接力默认保留在当前话题,不新建子项目话题;先用 botmux-bots 查花名册挑对象,再用结构化交接发给对方。
616
616
  ---
617
617
 
618
618
  # botmux-handoff — 机器人接力交棒
@@ -626,6 +626,13 @@ description: 把当前任务交棒给团队里另一个机器人时使用(多
626
626
  - 确认它 \`mentionable: true\`(若为 false,先让它/用户 \`/introduce\` 一次再点名)。
627
627
  2. 用 \`botmux send --mention\` 发一条**结构化交接**给它。
628
628
 
629
+ ## 话题规则
630
+
631
+ - **单 bot 接力留在当前话题**:直接运行 \`botmux send --mention\`,不加 \`--top-level\`;BotMux 会把消息发回当前轮次所在话题。
632
+ - 不要为单个接手者运行不带 \`--into\` 的 \`botmux dispatch\`:它会额外发一条顶层子项目消息、新建话题。
633
+ - 如果必须使用稳定 App ID 和接单确认,使用 \`botmux dispatch --into <当前话题根消息id> --bot-app <larkAppId> ...\`,明确追加到当前话题。
634
+ - 只有任务确实拆成多个独立子项目、需要并行跟踪和主 bot 汇总时,才使用 \`botmux-orchestrate\` 新开话题。
635
+
629
636
  ## 交接必须包含 5 要素
630
637
 
631
638
  - **交给谁**:@ 目标机器人
@@ -1215,7 +1222,7 @@ $${GOAL_ENV.INPUTS_PATH}
1215
1222
  `;
1216
1223
  const ORCHESTRATE_SKILL = `---
1217
1224
  name: botmux-orchestrate
1218
- description: 多 bot 长期项目编排。仅当任务同时需要「多个 bot 分工」+「持续的 goal 群/多话题协调与进度板」+「主 bot 汇总验收」时触发,例如多组 coder/reviewer 并行推进。若只是一个有界 DAG、跑完即散、产出单一交付物,应使用 botmux-workflow;单步任务直接处理。显式提到 botmux orchestrate / goal supervise / dispatch 派活时也使用。
1225
+ description: 多 bot 长期项目编排。仅当任务同时需要「多个 bot 分工」+「持续的 goal 群/多话题协调与进度板」+「主 bot 汇总验收」时触发,例如多组 coder/reviewer 并行推进。若只是一个有界 DAG、跑完即散、产出单一交付物,应使用 botmux-workflow;只把下一步或单个专项交给一个 bot 时,必须使用 botmux-handoff 留在当前话题,不得新建子项目话题。显式提到 botmux orchestrate / goal supervise / dispatch 派活时也使用。
1219
1226
  ---
1220
1227
 
1221
1228
  # botmux-orchestrate — 多 bot 多话题编排
@@ -1225,7 +1232,7 @@ description: 多 bot 长期项目编排。仅当任务同时需要「多个 bot
1225
1232
  ## 适用 & 不适用
1226
1233
  - 适用:一个长期项目同时满足三个结构化判据:① **多个 bot 分工**处理基本独立的子项目;② 需要持续存在的 **goal 群/多话题协调**和共享进度板;③ 主 bot 要持续收件并做最终**验收**。
1227
1234
  - 不适用:一个**有界 DAG、跑完即散、只有一个交付物**的多步目标——使用 **botmux-workflow**。
1228
- - 不适用:单步请求 / 普通改代码(直接做),或只需把下一步交给一个 bot(用 botmux-handoff)。
1235
+ - 不适用:单步请求 / 普通改代码(直接做),或只需把下一步、单个专项交给一个 bot(用 botmux-handoff,留在当前话题)。
1229
1236
 
1230
1237
  ## 物理事实(先记牢)
1231
1238
  - **你和子 bot 之间没有直连**,只能靠飞书消息触发;**没有请求-响应关联**——子 bot 干完用 \`botmux report\` 把回报发回**你这条主编排话题**(不是在它自己的子话题里 @ 你——那条子话题没有你的会话,@ 会另起一个无上下文的新会话)。对你就是「话题里来了条新消息」,你被唤起(带完整上下文)后去读任务板拿结构化状态。
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/skills/definitions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/skills/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAS5F,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4FtB,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BzB,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqErB,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDpB,CAAC;AAEF,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgQlB,CAAC;AAEF,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiGlB,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDrB,CAAC;AAEF,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkY7B,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFxB,CAAC;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDpB,QAAQ,CAAC,WAAW,IAAI,aAAa;;;;;;GAMrC,QAAQ,CAAC,aAAa;;;;;;;;;;;;eAYV,oBAAoB;;;;;;;;;;;;GAYhC,QAAQ,CAAC,WAAW;;;;;;;;;;CAUtB,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwEzB,CAAC;AAEF,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgIzB,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoH/B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC;AAE3C;;;;;4DAK4D;AAC5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AAEzD,MAAM,CAAC,MAAM,cAAc,GAAe;IACxC,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,iBAAiB,EAAE;IAC1D,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE;IACpD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE;IAClD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE;IAChD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE;IAC5C,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE;IAC5C,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE;IAClD,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,iBAAiB,EAAE;CAC3D,CAAC;AAEF;;;;;;;;;;;;6EAY6E;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAe;IACjD,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,qBAAqB,EAAE;IAClE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,EAAE;IACvD,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE;CACrD,CAAC;AAEF;kDACkD;AAClD,MAAM,CAAC,MAAM,4BAA4B,GACvC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE7C;;qCAEqC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAAa;IAC3C,wBAAwB;IACxB,8EAA8E;IAC9E,wBAAwB;IACxB,mBAAmB;IACnB,qEAAqE;IACrE,yEAAyE;IACzE,gFAAgF;IAChF,sBAAsB;CACvB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { SkillDef } from './definitions.js';
2
+ /**
3
+ * Register the store as i18n's prompt-override resolver. Safe to call more than
4
+ * once — it simply (re)installs the same resolver closure, which reads store
5
+ * state live on each lookup. Kept as an explicit registration rather than an
6
+ * import side-effect so the pure i18n module never transitively pulls in the
7
+ * filesystem-backed store.
8
+ */
9
+ export declare function registerPromptOverrideResolver(): void;
10
+ /**
11
+ * Resolve whether a gated prompt line should render. `shippedDefault` is the
12
+ * value the shipped code computed (e.g. `config.noVisibleOutputHint`). A user
13
+ * override forces it either way; absent override returns the shipped default,
14
+ * so gating behaves exactly as before when uncustomized.
15
+ */
16
+ export declare function resolveConditionalLine(key: string, shippedDefault: boolean): boolean;
17
+ /**
18
+ * Apply user overrides to the shipped built-in skill list:
19
+ * - a skill marked `disabled` is removed entirely (not injected anywhere)
20
+ * - a skill with an override body has its `content` replaced
21
+ * - everything else passes through untouched
22
+ *
23
+ * Returns a NEW array; the shipped `defs` is never mutated. When customization
24
+ * is off or no skill overrides exist, returns a shallow copy equal to `defs`.
25
+ */
26
+ export declare function effectiveBuiltinSkills(defs: SkillDef[]): SkillDef[];
27
+ /**
28
+ * Resolve the effective content for a single built-in skill by name, given its
29
+ * shipped default. Returns:
30
+ * - `undefined` if the skill is disabled (caller should treat as absent)
31
+ * - the override body if one is set
32
+ * - `shippedContent` otherwise
33
+ */
34
+ export declare function effectiveBuiltinSkillContent(name: string, shippedContent: string): string | undefined;
35
+ /** True if the named built-in skill is disabled by the user (and customization
36
+ * is on). Lets callers that iterate names skip disabled skills cheaply. */
37
+ export declare function isBuiltinSkillDisabled(name: string): boolean;
38
+ //# sourceMappingURL=effective-builtins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effective-builtins.d.ts","sourceRoot":"","sources":["../../src/skills/effective-builtins.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD;;;;;;GAMG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAOrD;AAID;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAIpF;AAID;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAiBnE;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUrG;AAED;4EAC4E;AAC5E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG5D"}
@@ -0,0 +1,96 @@
1
+ import { setPromptOverrideResolver } from '../i18n/index.js';
2
+ import { customizationEnabled, readCustomizationState, readSkillOverrideBody, } from '../services/customization-store.js';
3
+ // ─── Prompt key overrides → i18n t() ─────────────────────────────────────────
4
+ /**
5
+ * Register the store as i18n's prompt-override resolver. Safe to call more than
6
+ * once — it simply (re)installs the same resolver closure, which reads store
7
+ * state live on each lookup. Kept as an explicit registration rather than an
8
+ * import side-effect so the pure i18n module never transitively pulls in the
9
+ * filesystem-backed store.
10
+ */
11
+ export function registerPromptOverrideResolver() {
12
+ setPromptOverrideResolver((key, locale) => {
13
+ // Master off ⇒ no overrides ⇒ shipped bytes.
14
+ if (!customizationEnabled())
15
+ return undefined;
16
+ const state = readCustomizationState();
17
+ return state.promptOverrides?.[locale]?.[key];
18
+ });
19
+ }
20
+ // ─── Conditional prompt lines ────────────────────────────────────────────────
21
+ /**
22
+ * Resolve whether a gated prompt line should render. `shippedDefault` is the
23
+ * value the shipped code computed (e.g. `config.noVisibleOutputHint`). A user
24
+ * override forces it either way; absent override returns the shipped default,
25
+ * so gating behaves exactly as before when uncustomized.
26
+ */
27
+ export function resolveConditionalLine(key, shippedDefault) {
28
+ if (!customizationEnabled())
29
+ return shippedDefault;
30
+ const forced = readCustomizationState().conditionalLines?.[key];
31
+ return typeof forced === 'boolean' ? forced : shippedDefault;
32
+ }
33
+ // ─── Built-in skill overrides ────────────────────────────────────────────────
34
+ /**
35
+ * Apply user overrides to the shipped built-in skill list:
36
+ * - a skill marked `disabled` is removed entirely (not injected anywhere)
37
+ * - a skill with an override body has its `content` replaced
38
+ * - everything else passes through untouched
39
+ *
40
+ * Returns a NEW array; the shipped `defs` is never mutated. When customization
41
+ * is off or no skill overrides exist, returns a shallow copy equal to `defs`.
42
+ */
43
+ export function effectiveBuiltinSkills(defs) {
44
+ if (!customizationEnabled())
45
+ return defs.slice();
46
+ const overrides = readCustomizationState().builtinSkills;
47
+ if (!overrides || !Object.keys(overrides).length)
48
+ return defs.slice();
49
+ const out = [];
50
+ for (const def of defs) {
51
+ const ov = overrides[def.name];
52
+ if (!ov) {
53
+ out.push(def);
54
+ continue;
55
+ }
56
+ if (ov.disabled)
57
+ continue; // drop disabled skills
58
+ if (ov.body !== undefined) {
59
+ const body = readSkillOverrideBody(def.name);
60
+ out.push({ name: def.name, content: typeof body === 'string' ? body : def.content });
61
+ }
62
+ else {
63
+ out.push(def);
64
+ }
65
+ }
66
+ return out;
67
+ }
68
+ /**
69
+ * Resolve the effective content for a single built-in skill by name, given its
70
+ * shipped default. Returns:
71
+ * - `undefined` if the skill is disabled (caller should treat as absent)
72
+ * - the override body if one is set
73
+ * - `shippedContent` otherwise
74
+ */
75
+ export function effectiveBuiltinSkillContent(name, shippedContent) {
76
+ if (!customizationEnabled())
77
+ return shippedContent;
78
+ const ov = readCustomizationState().builtinSkills?.[name];
79
+ if (!ov)
80
+ return shippedContent;
81
+ if (ov.disabled)
82
+ return undefined;
83
+ if (ov.body !== undefined) {
84
+ const body = readSkillOverrideBody(name);
85
+ return typeof body === 'string' ? body : shippedContent;
86
+ }
87
+ return shippedContent;
88
+ }
89
+ /** True if the named built-in skill is disabled by the user (and customization
90
+ * is on). Lets callers that iterate names skip disabled skills cheaply. */
91
+ export function isBuiltinSkillDisabled(name) {
92
+ if (!customizationEnabled())
93
+ return false;
94
+ return readCustomizationState().builtinSkills?.[name]?.disabled === true;
95
+ }
96
+ //# sourceMappingURL=effective-builtins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effective-builtins.js","sourceRoot":"","sources":["../../src/skills/effective-builtins.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,8 @@ export interface BuiltinSkillEntry {
40
40
  description: string;
41
41
  content: string;
42
42
  }
43
+ /** First `description:` value from a SKILL.md YAML frontmatter (single line). */
44
+ export declare function frontmatterDescription(content: string): string;
43
45
  /**
44
46
  * The built-in skills the model should be told about in `prompt` mode. Mirrors
45
47
  * exactly what `global` mode would install: the unconditional BUILTIN_SKILLS,
@@ -62,7 +64,8 @@ export declare function builtinSkillEntries(opts: {
62
64
  * on-demand reads in `prompt` mode (independent of the per-CLI toggles above,
63
65
  * so a name that made it into the catalog always resolves). The v3 Workflow
64
66
  * family resolves only while the feature is enabled, so a disabled host can't
65
- * pull a skill it never advertised. */
67
+ * pull a skill it never advertised. Honors a user override body; returns
68
+ * undefined for a user-disabled skill. */
66
69
  export declare function builtinSkillContent(name: string): string | undefined;
67
70
  /**
68
71
  * The `<botmux_builtin_skills>` prompt block for `prompt` mode: a one-line-per-skill
@@ -1 +1 @@
1
- {"version":3,"file":"injection-mode.d.ts","sourceRoot":"","sources":["../../src/skills/injection-mode.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAuB/C,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE7D,yEAAyE;AACzE,eAAO,MAAM,+BAA+B,EAAE,kBAA6B,CAAC;AAE5E,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,kBAAkB,CAExE;AAED,2EAA2E;AAC3E,wBAAgB,kCAAkC,IAAI,kBAAkB,CAGvE;AAED,uEAAuE;AACvE,wBAAgB,yBAAyB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAElF;AAED,8EAA8E;AAC9E,wBAAgB,+BAA+B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAQtF;AAQD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAWpE;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAClE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAI1G;AAID,MAAM,WAAW,iBAAiB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AAwB1F;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;iFAE6E;IAC7E,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;0CAEsC;IACtC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,iBAAiB,EAAE,CAOtB;AAED;;;;wCAIwC;AACxC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,iBAAiB,EAAE,EAC5B,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GACvC,MAAM,CAkBR;AAED;;;+EAG+E;AAC/E,wBAAgB,uBAAuB,CACrC,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAClE,MAAM,CAeR;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,yCAAyC,CACvD,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3F,MAAM,CAiBR"}
1
+ {"version":3,"file":"injection-mode.d.ts","sourceRoot":"","sources":["../../src/skills/injection-mode.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAwB/C,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE7D,yEAAyE;AACzE,eAAO,MAAM,+BAA+B,EAAE,kBAA6B,CAAC;AAE5E,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,kBAAkB,CAExE;AAED,2EAA2E;AAC3E,wBAAgB,kCAAkC,IAAI,kBAAkB,CAGvE;AAED,uEAAuE;AACvE,wBAAgB,yBAAyB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAElF;AAED,8EAA8E;AAC9E,wBAAgB,+BAA+B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAQtF;AAQD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAWpE;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAClE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAI1G;AAID,MAAM,WAAW,iBAAiB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AAiB1F,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI9D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;iFAE6E;IAC7E,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;0CAEsC;IACtC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,iBAAiB,EAAE,CAUtB;AAED;;;;;2CAK2C;AAC3C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CASpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,iBAAiB,EAAE,EAC5B,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GACvC,MAAM,CAkBR;AAED;;;+EAG+E;AAC/E,wBAAgB,uBAAuB,CACrC,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAClE,MAAM,CAeR;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,yCAAyC,CACvD,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3F,MAAM,CAiBR"}
@@ -30,6 +30,7 @@ import { createCliAdapterSync } from '../adapters/cli/registry.js';
30
30
  import { escapeXmlText } from '../utils/xml.js';
31
31
  import { isWorkflowFeatureEnabled } from '../global-config.js';
32
32
  import { BUILTIN_SKILLS, WORKFLOW_FEATURE_SKILLS, ASK_SKILL, ASK_SKILL_NAME, WHITEBOARD_SKILL, WHITEBOARD_SKILL_NAME, } from './definitions.js';
33
+ import { effectiveBuiltinSkills, effectiveBuiltinSkillContent } from './effective-builtins.js';
33
34
  /** The unconditional built-ins with the v3 Workflow family spliced back in at
34
35
  * their historical position (right after `botmux-handoff`) when the machine-wide
35
36
  * workflow switch is ON. Splicing rather than appending keeps the ENABLED-path
@@ -129,7 +130,7 @@ function promptCatalogDescription(entry, locale) {
129
130
  : '首次复杂飞书发送前读取:多行/结构化 Markdown(表格或代码块)、附件/卡片/@mention、跨群/顶层发布或 --attention。按完整说明使用 heredoc/--content-file,不要把 JSON.stringify/JSON 转义产生的 \\n 当字面量发送。';
130
131
  }
131
132
  /** First `description:` value from a SKILL.md YAML frontmatter (single line). */
132
- function frontmatterDescription(content) {
133
+ export function frontmatterDescription(content) {
133
134
  const fm = content.match(/^---\n([\s\S]*?)\n---/)?.[1] ?? '';
134
135
  const line = fm.split('\n').find((l) => l.startsWith('description:'));
135
136
  return line ? line.slice('description:'.length).trim() : '';
@@ -149,20 +150,27 @@ export function builtinSkillEntries(opts) {
149
150
  defs.push({ name: WHITEBOARD_SKILL_NAME, content: WHITEBOARD_SKILL });
150
151
  if (opts.excludeRoutingCovered)
151
152
  defs = defs.filter((d) => !FULLY_ROUTING_COVERED_SKILLS.has(d.name));
153
+ // Apply user overrides last: replaces bodies + drops user-disabled skills.
154
+ // Byte-identical to the pre-feature list when nothing is customized.
155
+ defs = effectiveBuiltinSkills(defs);
152
156
  return defs.map((d) => ({ name: d.name, description: frontmatterDescription(d.content), content: d.content }));
153
157
  }
154
158
  /** Full SKILL.md body for a built-in skill name — backs `botmux skill show`
155
159
  * on-demand reads in `prompt` mode (independent of the per-CLI toggles above,
156
160
  * so a name that made it into the catalog always resolves). The v3 Workflow
157
161
  * family resolves only while the feature is enabled, so a disabled host can't
158
- * pull a skill it never advertised. */
162
+ * pull a skill it never advertised. Honors a user override body; returns
163
+ * undefined for a user-disabled skill. */
159
164
  export function builtinSkillContent(name) {
160
165
  const all = [
161
166
  ...baseBuiltinSkills(isWorkflowFeatureEnabled()),
162
167
  { name: ASK_SKILL_NAME, content: ASK_SKILL },
163
168
  { name: WHITEBOARD_SKILL_NAME, content: WHITEBOARD_SKILL },
164
169
  ];
165
- return all.find((d) => d.name === name)?.content;
170
+ const shipped = all.find((d) => d.name === name)?.content;
171
+ if (shipped === undefined)
172
+ return undefined;
173
+ return effectiveBuiltinSkillContent(name, shipped);
166
174
  }
167
175
  /**
168
176
  * The `<botmux_builtin_skills>` prompt block for `prompt` mode: a one-line-per-skill
@@ -1 +1 @@
1
- {"version":3,"file":"injection-mode.js","sourceRoot":"","sources":["../../src/skills/injection-mode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"injection-mode.js","sourceRoot":"","sources":["../../src/skills/injection-mode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/skills/installer.ts"],"names":[],"mappings":"AAwBA;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAerF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAoBlF;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAkBnG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAkB1G;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAqBzG;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAiC/E"}
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/skills/installer.ts"],"names":[],"mappings":"AAyBA;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAerF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAoBlF;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAkBnG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAkB1G;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAqBzG;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAsD/E"}
@@ -4,6 +4,7 @@ import { join } from 'node:path';
4
4
  import { homedir } from 'node:os';
5
5
  import { logger } from '../utils/logger.js';
6
6
  import { BUILTIN_SKILLS, RETIRED_SKILL_NAMES, WORKFLOW_FEATURE_SKILLS, ASK_SKILL, ASK_SKILL_NAME, WHITEBOARD_SKILL, WHITEBOARD_SKILL_NAME } from './definitions.js';
7
+ import { effectiveBuiltinSkills } from './effective-builtins.js';
7
8
  // This module only manages botmux-owned bridge/ask skills. User-defined skills
8
9
  // live in src/core/skills/* and services/skill-registry-store.ts so their
9
10
  // lifecycle stays independent of any specific CLI's global skill directory.
@@ -226,7 +227,12 @@ export function ensureSkills(cliId, skillsDir) {
226
227
  mkdirSync(dir, { recursive: true });
227
228
  }
228
229
  catch { /* ignore */ }
229
- for (const skill of BUILTIN_SKILLS) {
230
+ // Apply user overrides: replaced bodies + user-disabled skills removed. When
231
+ // nothing is customized this equals BUILTIN_SKILLS, so the on-disk files are
232
+ // byte-identical to the pre-feature baseline.
233
+ const effective = effectiveBuiltinSkills([...BUILTIN_SKILLS]);
234
+ const effectiveNames = new Set(effective.map((s) => s.name));
235
+ for (const skill of effective) {
230
236
  const skillDir = join(dir, skill.name);
231
237
  const skillFile = join(skillDir, 'SKILL.md');
232
238
  try {
@@ -244,6 +250,23 @@ export function ensureSkills(cliId, skillsDir) {
244
250
  logger.warn(`[skills] Failed to install ${skill.name} for ${cliId}: ${err.message}`);
245
251
  }
246
252
  }
253
+ // Remove a built-in skill's dir when the user has DISABLED it (present in the
254
+ // shipped set but dropped from the effective set). Without this, a global-mode
255
+ // CLI would keep injecting a skill the user turned off (stale file on disk).
256
+ for (const shipped of BUILTIN_SKILLS) {
257
+ if (effectiveNames.has(shipped.name))
258
+ continue;
259
+ const disabledDir = join(dir, shipped.name);
260
+ if (!existsSync(disabledDir))
261
+ continue;
262
+ try {
263
+ rmSync(disabledDir, { recursive: true, force: true });
264
+ logger.info(`[skills] Removed user-disabled built-in skill ${shipped.name} for ${cliId}`);
265
+ }
266
+ catch (err) {
267
+ logger.warn(`[skills] Failed to remove disabled skill ${shipped.name} for ${cliId}: ${err.message}`);
268
+ }
269
+ }
247
270
  // Clean up retired skill directories (e.g. botmux-thread-messages → botmux-history).
248
271
  for (const retired of RETIRED_SKILL_NAMES) {
249
272
  const retiredDir = join(dir, retired);