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
@@ -1 +1 @@
1
- {"version":3,"file":"codex-app-runner-protocol.js","sourceRoot":"","sources":["../../src/services/codex-app-runner-protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-app-runner-protocol.js","sourceRoot":"","sources":["../../src/services/codex-app-runner-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAmD5D;;;GAGG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAqCpD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;QACzE,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC;QAAE,OAAO,SAAS,CAAC;IAElE,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC7D,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACtF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACtG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5E,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;QAC5F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,0EAA0E;IAC1E,6EAA6E;IAC7E,mDAAmD;IACnD,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,IAAI,KAAK,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC9E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QACnF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,aAAa,GAAG,mBAAmB,CAAC,KAAK,CAAC,aAAa,CAAC;QAC5D,CAAC,CAAC,KAAK,CAAC,aAAa;QACrB,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,WAAW,GAAG,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACvD,CAAC,CAAC,KAAK,CAAC,WAAW;QACnB,CAAC,CAAC,aAAa,EAAE,mBAAmB,CAAC;IACvC,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,OAAgB;IAC5D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChF,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC;QACtD,aAAa,EAAE,oBAAoB,CAAC,OAAO,CAAC,aAAa,CAAC;QAC1D,SAAS,EAAE,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC;QACpD,WAAW,EAAE,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC;QACxD,YAAY,EAAE,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC;QACpD,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED;;kFAEkF;AAClF,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,CAAU,CAAC;IAC9F,MAAM,GAAG,GAAG,EAA+C,CAAC;IAC5D,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC7E,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,OAAgB;IAC9D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAE7E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;QAC1B,MAAM;QACN,MAAM;QACN,aAAa;QACb,WAAW;QACX,aAAa;QACb,WAAW;QACX,UAAU;KACX,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9E,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC3F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACpF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;QAC5F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;QAChG,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAAG;QACX,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,CAAC,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,GAAG,CAAC,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,GAAG,CAAC,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzF,CAAC;IACF,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEzD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,cAAc,CAAC;QACpB,KAAK,oBAAoB;YACvB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC;mBACzC,OAAO,CAAC,SAAS,KAAK,SAAS;mBAC/B,OAAO,CAAC,SAAS,KAAK,SAAS;mBAC/B,OAAO,CAAC,QAAQ,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YACtD,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3E,KAAK,cAAc,CAAC;QACpB,KAAK,eAAe,CAAC;QACrB,KAAK,gBAAgB;YACnB,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACpF,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QACpD,KAAK,yBAAyB;YAC5B,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,oBAAoB,EAAE,CAAC;gBAC/F,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;QACpF,KAAK,iBAAiB;YACpB,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,iBAAiB,EAAE,CAAC;gBAC5F,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;QACjF,KAAK,iBAAiB;YACpB,IACE,CAAC,OAAO,CAAC,SAAS,KAAK,YAAY,IAAI,OAAO,CAAC,SAAS,KAAK,YAAY,CAAC;mBACvE,CAAC,OAAO,CAAC,QAAQ,KAAK,WAAW;uBAC/B,OAAO,CAAC,QAAQ,KAAK,KAAK;uBAC1B,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC;gBACrC,OAAO,SAAS,CAAC;YACnB,OAAO;gBACL,GAAG,IAAI;gBACP,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC;QACJ,KAAK,OAAO;YACV,IACE,CAAC,OAAO,CAAC,SAAS,KAAK,YAAY;mBAC9B,OAAO,CAAC,SAAS,KAAK,YAAY;mBAClC,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC;mBACjC,CAAC,OAAO,CAAC,QAAQ,KAAK,WAAW;uBAC/B,OAAO,CAAC,QAAQ,KAAK,KAAK;uBAC1B,OAAO,CAAC,QAAQ,KAAK,UAAU;uBAC/B,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;gBACpC,OAAO,SAAS,CAAC;YACnB,OAAO;gBACL,GAAG,IAAI;gBACP,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC;QACJ;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAA2B,EAC3B,cAAkC,EAClC,mBAA2B;IAE3B,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,SAAS;YAC1B,MAAM,EAAE,MAAM,CAAC,WAAW,IAAI,cAAc,IAAI,MAAM,CAAC,SAAS;SACjE,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,IAAI,cAAc,IAAI,mBAAmB,CAAC;IAC9E,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { type Locale } from '../i18n/types.js';
2
+ /** One overridden built-in skill: a replacement body, and/or a disable flag.
3
+ * `body === undefined` + `disabled` = keep shipped body but never inject it.
4
+ * `body` set = inject this instead of the shipped SKILL.md. */
5
+ export interface BuiltinSkillOverride {
6
+ /** Full replacement SKILL.md (frontmatter + body). Omitted = use shipped body. */
7
+ body?: string;
8
+ /** When true the skill is not injected at all (catalog + files both skip it). */
9
+ disabled?: boolean;
10
+ /** ISO timestamp of the last edit to this entry (for history diffs / UI). */
11
+ updatedAt?: string;
12
+ }
13
+ /** The full current customization state. Everything is optional so an empty
14
+ * object is the valid "no customization" baseline. */
15
+ export interface CustomizationState {
16
+ schemaVersion: 1;
17
+ /** Master switch. `false` = all overrides ignored (byte-identical baseline)
18
+ * but retained on disk. Missing is treated as enabled (see {@link customizationEnabled}). */
19
+ enabled?: boolean;
20
+ /** Prompt-key overrides, keyed by locale then i18n key. A value replaces the
21
+ * shipped `t(key)` string for that locale. */
22
+ promptOverrides?: Partial<Record<Locale, Record<string, string>>>;
23
+ /** Conditional prompt lines forced on/off by the i18n key that renders them
24
+ * (e.g. `ai.routing.no_visible_output_ok`). Absent = follow the shipped
25
+ * gating logic; present = force that boolean regardless. */
26
+ conditionalLines?: Record<string, boolean>;
27
+ /** Built-in skill overrides keyed by skill name (e.g. `botmux-send`). */
28
+ builtinSkills?: Record<string, BuiltinSkillOverride>;
29
+ /** Last-modified ISO timestamp of the state as a whole. */
30
+ updatedAt?: string;
31
+ }
32
+ /** Metadata for one point-in-time snapshot in the history log. */
33
+ export interface CustomizationSnapshot {
34
+ id: string;
35
+ /** ISO time the snapshot was taken (i.e. when the *prior* state was captured). */
36
+ at: string;
37
+ /** Short human label describing the mutation that triggered this snapshot,
38
+ * e.g. "set ai.routing.intro (zh)" / "reset all to factory" / "import bundle". */
39
+ label: string;
40
+ /** Coarse counts of the snapshotted state, for a quick history-list summary. */
41
+ summary: {
42
+ promptKeys: number;
43
+ skills: number;
44
+ enabled: boolean;
45
+ };
46
+ }
47
+ /** Per-skill body cap — mirrors the spirit of role-resolver's MAX_ROLE_BYTES. */
48
+ export declare const MAX_SKILL_BODY_BYTES: number;
49
+ /** Per prompt-override value cap. Individual fragments are short; this is a
50
+ * generous ceiling that still stops a paste-bomb from bloating every prompt. */
51
+ export declare const MAX_PROMPT_OVERRIDE_BYTES: number;
52
+ export declare function customizationsRoot(): string;
53
+ /** Read the current state (short-TTL cached). Never throws — a missing or
54
+ * corrupt file yields the empty baseline. */
55
+ export declare function readCustomizationState(): CustomizationState;
56
+ export declare function invalidateCustomizationCache(): void;
57
+ /** Whether customizations are active. Missing flag = enabled (opt-out master
58
+ * switch); an explicit `false` disables everything. The resolution layer also
59
+ * consults this so a single check short-circuits all override lookups. */
60
+ export declare function customizationEnabled(): boolean;
61
+ export declare function listSnapshots(): CustomizationSnapshot[];
62
+ /** Read the full state stored in a snapshot (for diff preview before rollback). */
63
+ export declare function readSnapshotState(id: string): CustomizationState | undefined;
64
+ /** Read a skill body as it existed in a snapshot (mirrors {@link readSkillOverrideBody}). */
65
+ export declare function readSnapshotSkillBody(id: string, name: string): string | undefined;
66
+ /** Read the override SKILL.md body for a built-in skill, or undefined if none.
67
+ * Reads the .md file when the state entry has a body; the state's `body` field
68
+ * is a presence marker, the file is the source of truth for large text. */
69
+ export declare function readSkillOverrideBody(name: string): string | undefined;
70
+ /** Set (or clear) the master enabled flag. */
71
+ export declare function setCustomizationEnabled(enabled: boolean): CustomizationState;
72
+ /** Override (value set) or clear (value === null) a single prompt key for a locale. */
73
+ export declare function setPromptOverride(locale: Locale, key: string, value: string | null): CustomizationState;
74
+ /** Force a conditional prompt line on/off, or clear the override (follow shipped gating). */
75
+ export declare function setConditionalLine(key: string, value: boolean | null): CustomizationState;
76
+ /** Set (body != null) or clear (body === null) the override body for a built-in skill.
77
+ * Clearing removes the body but leaves any `disabled` flag intact. */
78
+ export declare function setSkillOverrideBody(name: string, body: string | null): CustomizationState;
79
+ /** Enable/disable injection of a built-in skill (independent of any body override). */
80
+ export declare function setSkillDisabled(name: string, disabled: boolean): CustomizationState;
81
+ /** Reset EVERYTHING to factory: clears all overrides + skill bodies. Snapshots
82
+ * first, so this is fully reversible via rollback. Keeps the master enabled
83
+ * flag (resetting content is orthogonal to the on/off switch). */
84
+ export declare function resetAllToFactory(): CustomizationState;
85
+ /** Roll the current state back to a snapshot's contents. Non-destructive: the
86
+ * pre-rollback state is snapshotted first, so a rollback can itself be undone
87
+ * by rolling forward to that new snapshot. */
88
+ export declare function rollbackToSnapshot(id: string): CustomizationState;
89
+ /** Replace the entire state atomically (used by bundle import after diff
90
+ * confirmation). Snapshots first. `skillBodies` maps skill name → SKILL.md so
91
+ * the .md files are materialised alongside the state pointers. */
92
+ export declare function replaceState(next: CustomizationState, skillBodies: Record<string, string>, label: string): CustomizationState;
93
+ //# sourceMappingURL=customization-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customization-store.d.ts","sourceRoot":"","sources":["../../src/services/customization-store.ts"],"names":[],"mappings":"AA6CA,OAAO,EAAE,KAAK,MAAM,EAAqB,MAAM,kBAAkB,CAAC;AAIlE;;gEAEgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;uDACuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,CAAC,CAAC;IACjB;kGAC8F;IAC9F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;mDAC+C;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClE;;iEAE6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACrD,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,kEAAkE;AAClE,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,kFAAkF;IAClF,EAAE,EAAE,MAAM,CAAC;IACX;uFACmF;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CACnE;AAaD,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,QAAY,CAAC;AAC9C;iFACiF;AACjF,eAAO,MAAM,yBAAyB,QAAY,CAAC;AAEnD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAqGD;8CAC8C;AAC9C,wBAAgB,sBAAsB,IAAI,kBAAkB,CAW3D;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAoBD;;2EAE2E;AAC3E,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAmED,wBAAgB,aAAa,IAAI,qBAAqB,EAAE,CAEvD;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAK5E;AAED,6FAA6F;AAC7F,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIlF;AAID;;4EAE4E;AAC5E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAItE;AAID,8CAA8C;AAC9C,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,kBAAkB,CAQ5E;AAED,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,kBAAkB,CAkBvG;AAED,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,kBAAkB,CAYzF;AAED;uEACuE;AACvE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,kBAAkB,CA0B1F;AAED,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,kBAAkB,CAiBpF;AAED;;mEAEmE;AACnE,wBAAgB,iBAAiB,IAAI,kBAAkB,CAYtD;AAED;;+CAE+C;AAC/C,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,CAcjE;AAED;;mEAEmE;AACnE,wBAAgB,YAAY,CAC1B,IAAI,EAAE,kBAAkB,EACxB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,KAAK,EAAE,MAAM,GACZ,kBAAkB,CAyBpB"}
@@ -0,0 +1,542 @@
1
+ /**
2
+ * Customization store — user overrides for botmux's BUILT-IN prompts and skills.
3
+ *
4
+ * botmux ships two kinds of built-in content the model sees every session:
5
+ * - **Prompt fragments** — the `<botmux_routing>` / `<identity>` / skill-catalog
6
+ * copy, all resolved through the i18n `t(key, …, locale)` layer.
7
+ * - **Built-in skills** — the SKILL.md bodies in `src/skills/definitions.ts`.
8
+ *
9
+ * This store lets the user OVERRIDE either without editing shipped source, and
10
+ * SHARE the result. It is the single source of truth for:
11
+ * - per-locale prompt-key overrides (`t()` consults these first)
12
+ * - built-in skill body overrides + per-skill disables
13
+ * - a master on/off flag (disable everything without deleting it)
14
+ * - a snapshot history for non-destructive rollback / reset-to-factory
15
+ *
16
+ * DESIGN INVARIANTS
17
+ * 1. **Byte-identical when empty.** With no overrides (or master off) every
18
+ * resolver here returns `undefined` / the shipped default, so the prompt
19
+ * and skills are byte-for-byte what they were before this feature. The
20
+ * resolution layer (i18n `t()`, injection-mode, installer) short-circuits
21
+ * on `undefined`. This is the first regression red line.
22
+ * 2. **Non-destructive history.** Every mutation snapshots the *prior* state
23
+ * first, so rollback and "reset all to factory" can always be undone by
24
+ * rolling forward to a later snapshot — nothing is ever lost.
25
+ * 3. **Live.** State is read fresh (short TTL cache) so a change takes effect
26
+ * on the next session with no daemon restart, matching whiteboard /
27
+ * skillInjection semantics.
28
+ *
29
+ * Storage layout under `{dataDir}/customizations/`:
30
+ * state.json — the current CustomizationState (overrides + flags)
31
+ * skills/<name>.md — full SKILL.md body for an overridden built-in skill
32
+ * history/<snapshotId>/state.json + skills/*.md — a full point-in-time copy
33
+ * history/index.json — ordered snapshot metadata (newest first)
34
+ *
35
+ * The master enabled flag also mirrors into GlobalConfig (`customization.enabled`)
36
+ * so it participates in the dashboard settings surface; this store owns the rest.
37
+ */
38
+ import { existsSync, mkdirSync, readFileSync, rmSync, cpSync, } from 'node:fs';
39
+ import { join } from 'node:path';
40
+ import { randomUUID } from 'node:crypto';
41
+ import { config } from '../config.js';
42
+ import { atomicWriteFileSync } from '../utils/atomic-write.js';
43
+ import { withFileLockSync } from '../utils/file-lock.js';
44
+ import { SUPPORTED_LOCALES } from '../i18n/types.js';
45
+ // ─── Paths ───────────────────────────────────────────────────────────────────
46
+ const SCHEMA_VERSION = 1;
47
+ /** Cap retained snapshots so an active editor can't grow history unbounded. */
48
+ const MAX_SNAPSHOTS = 50;
49
+ /** Per-skill body cap — mirrors the spirit of role-resolver's MAX_ROLE_BYTES. */
50
+ export const MAX_SKILL_BODY_BYTES = 64 * 1024;
51
+ /** Per prompt-override value cap. Individual fragments are short; this is a
52
+ * generous ceiling that still stops a paste-bomb from bloating every prompt. */
53
+ export const MAX_PROMPT_OVERRIDE_BYTES = 16 * 1024;
54
+ export function customizationsRoot() {
55
+ return join(config.session.dataDir, 'customizations');
56
+ }
57
+ function statePath() {
58
+ return join(customizationsRoot(), 'state.json');
59
+ }
60
+ function skillsDir() {
61
+ return join(customizationsRoot(), 'skills');
62
+ }
63
+ function skillOverridePath(name) {
64
+ return join(skillsDir(), `${safeSkillName(name)}.md`);
65
+ }
66
+ function historyDir() {
67
+ return join(customizationsRoot(), 'history');
68
+ }
69
+ function historyIndexPath() {
70
+ return join(historyDir(), 'index.json');
71
+ }
72
+ function snapshotDir(id) {
73
+ return join(historyDir(), safeSnapshotId(id));
74
+ }
75
+ // ─── Validation helpers ──────────────────────────────────────────────────────
76
+ /** Built-in skill names are the fixed `botmux-*` set; this guards path building
77
+ * against traversal even though callers pass known names. */
78
+ function safeSkillName(name) {
79
+ if (!/^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$/.test(name))
80
+ throw new Error('invalid_skill_name');
81
+ return name;
82
+ }
83
+ function safeSnapshotId(id) {
84
+ if (!/^snap_[a-zA-Z0-9]{1,40}$/.test(id))
85
+ throw new Error('invalid_snapshot_id');
86
+ return id;
87
+ }
88
+ function isLocaleKey(v) {
89
+ return SUPPORTED_LOCALES.includes(v);
90
+ }
91
+ // ─── State read/write ────────────────────────────────────────────────────────
92
+ const LOCK_TIMEOUT_MS = 5_000;
93
+ // Short TTL so dashboard/CLI writes are picked up by the next session without a
94
+ // restart, but hot prompt-build paths don't re-parse the file on every t() call.
95
+ const READ_CACHE_TTL_MS = 2_000;
96
+ let readCache;
97
+ function ensureRoot() {
98
+ mkdirSync(customizationsRoot(), { recursive: true });
99
+ }
100
+ function emptyState() {
101
+ return { schemaVersion: SCHEMA_VERSION };
102
+ }
103
+ /** Coerce arbitrary parsed JSON into a valid CustomizationState, dropping
104
+ * anything malformed (same defensive spirit as global-config's readX). */
105
+ function coerceState(raw) {
106
+ if (!raw || typeof raw !== 'object')
107
+ return emptyState();
108
+ const r = raw;
109
+ const out = { schemaVersion: SCHEMA_VERSION };
110
+ if (typeof r.enabled === 'boolean')
111
+ out.enabled = r.enabled;
112
+ if (typeof r.updatedAt === 'string')
113
+ out.updatedAt = r.updatedAt;
114
+ if (r.promptOverrides && typeof r.promptOverrides === 'object') {
115
+ const po = {};
116
+ for (const [loc, map] of Object.entries(r.promptOverrides)) {
117
+ if (!isLocaleKey(loc) || !map || typeof map !== 'object')
118
+ continue;
119
+ const clean = {};
120
+ for (const [k, v] of Object.entries(map)) {
121
+ if (typeof v === 'string' && k)
122
+ clean[k] = v;
123
+ }
124
+ if (Object.keys(clean).length)
125
+ po[loc] = clean;
126
+ }
127
+ if (Object.keys(po).length)
128
+ out.promptOverrides = po;
129
+ }
130
+ if (r.conditionalLines && typeof r.conditionalLines === 'object') {
131
+ const cl = {};
132
+ for (const [k, v] of Object.entries(r.conditionalLines)) {
133
+ if (typeof v === 'boolean' && k)
134
+ cl[k] = v;
135
+ }
136
+ if (Object.keys(cl).length)
137
+ out.conditionalLines = cl;
138
+ }
139
+ if (r.builtinSkills && typeof r.builtinSkills === 'object') {
140
+ const bs = {};
141
+ for (const [name, ov] of Object.entries(r.builtinSkills)) {
142
+ if (!ov || typeof ov !== 'object')
143
+ continue;
144
+ const o = ov;
145
+ const entry = {};
146
+ if (typeof o.body === 'string')
147
+ entry.body = o.body;
148
+ if (o.disabled === true)
149
+ entry.disabled = true;
150
+ if (typeof o.updatedAt === 'string')
151
+ entry.updatedAt = o.updatedAt;
152
+ // Skip no-op entries (neither a body nor a disable) so an empty override
153
+ // never counts as "modified".
154
+ if (entry.body !== undefined || entry.disabled)
155
+ bs[name] = entry;
156
+ }
157
+ if (Object.keys(bs).length)
158
+ out.builtinSkills = bs;
159
+ }
160
+ return out;
161
+ }
162
+ /** Read the current state (short-TTL cached). Never throws — a missing or
163
+ * corrupt file yields the empty baseline. */
164
+ export function readCustomizationState() {
165
+ const now = Date.now();
166
+ if (readCache && now - readCache.at < READ_CACHE_TTL_MS)
167
+ return readCache.state;
168
+ let state = emptyState();
169
+ const fp = statePath();
170
+ if (existsSync(fp)) {
171
+ try {
172
+ state = coerceState(JSON.parse(readFileSync(fp, 'utf-8')));
173
+ }
174
+ catch {
175
+ state = emptyState();
176
+ }
177
+ }
178
+ readCache = { at: now, state };
179
+ return state;
180
+ }
181
+ export function invalidateCustomizationCache() {
182
+ readCache = undefined;
183
+ }
184
+ function writeStateUnlocked(state) {
185
+ ensureRoot();
186
+ const next = { ...state, schemaVersion: SCHEMA_VERSION, updatedAt: nowIso() };
187
+ atomicWriteFileSync(statePath(), JSON.stringify(next, null, 2) + '\n');
188
+ invalidateCustomizationCache();
189
+ }
190
+ function nowIso() {
191
+ return new Date().toISOString();
192
+ }
193
+ function withStateLock(fn) {
194
+ ensureRoot();
195
+ return withFileLockSync(statePath(), fn, { maxWaitMs: LOCK_TIMEOUT_MS });
196
+ }
197
+ // ─── Master enabled flag ─────────────────────────────────────────────────────
198
+ /** Whether customizations are active. Missing flag = enabled (opt-out master
199
+ * switch); an explicit `false` disables everything. The resolution layer also
200
+ * consults this so a single check short-circuits all override lookups. */
201
+ export function customizationEnabled() {
202
+ return readCustomizationState().enabled !== false;
203
+ }
204
+ // ─── Snapshot / history ──────────────────────────────────────────────────────
205
+ function readHistoryIndex() {
206
+ const fp = historyIndexPath();
207
+ if (!existsSync(fp))
208
+ return { schemaVersion: SCHEMA_VERSION, snapshots: [] };
209
+ try {
210
+ const parsed = JSON.parse(readFileSync(fp, 'utf-8'));
211
+ return {
212
+ schemaVersion: SCHEMA_VERSION,
213
+ snapshots: Array.isArray(parsed.snapshots) ? parsed.snapshots : [],
214
+ };
215
+ }
216
+ catch {
217
+ return { schemaVersion: SCHEMA_VERSION, snapshots: [] };
218
+ }
219
+ }
220
+ function writeHistoryIndex(index) {
221
+ mkdirSync(historyDir(), { recursive: true });
222
+ atomicWriteFileSync(historyIndexPath(), JSON.stringify(index, null, 2) + '\n');
223
+ }
224
+ function summarize(state) {
225
+ const promptKeys = Object.values(state.promptOverrides ?? {})
226
+ .reduce((n, m) => n + Object.keys(m ?? {}).length, 0)
227
+ + Object.keys(state.conditionalLines ?? {}).length;
228
+ const skills = Object.keys(state.builtinSkills ?? {}).length;
229
+ return { promptKeys, skills, enabled: state.enabled !== false };
230
+ }
231
+ /** Capture the CURRENT on-disk state (+ its skill bodies) as a new snapshot.
232
+ * Must be called *before* a mutation writes the new state, so the snapshot
233
+ * preserves the prior point-in-time. Prunes to MAX_SNAPSHOTS. Best-effort:
234
+ * a snapshot failure never blocks the mutation itself (caller ignores throw). */
235
+ function snapshotCurrentUnlocked(label) {
236
+ const current = existsSync(statePath()) ? readStateFromDisk() : emptyState();
237
+ const id = `snap_${randomUUID().replace(/-/g, '').slice(0, 20)}`;
238
+ const dir = snapshotDir(id);
239
+ mkdirSync(dir, { recursive: true });
240
+ atomicWriteFileSync(join(dir, 'state.json'), JSON.stringify(current, null, 2) + '\n');
241
+ // Copy the skill override bodies so a rollback restores exact SKILL.md text,
242
+ // not just the state.json pointers.
243
+ if (existsSync(skillsDir())) {
244
+ try {
245
+ cpSync(skillsDir(), join(dir, 'skills'), { recursive: true });
246
+ }
247
+ catch { /* best-effort */ }
248
+ }
249
+ const snap = { id, at: nowIso(), label: label.slice(0, 200), summary: summarize(current) };
250
+ const index = readHistoryIndex();
251
+ index.snapshots.unshift(snap);
252
+ // Prune oldest beyond the cap and delete their dirs.
253
+ while (index.snapshots.length > MAX_SNAPSHOTS) {
254
+ const dropped = index.snapshots.pop();
255
+ if (dropped) {
256
+ try {
257
+ rmSync(snapshotDir(dropped.id), { recursive: true, force: true });
258
+ }
259
+ catch { /* ignore */ }
260
+ }
261
+ }
262
+ writeHistoryIndex(index);
263
+ return snap;
264
+ }
265
+ /** Uncached direct disk read — used inside locked sections where the TTL cache
266
+ * could be stale relative to a sibling process's just-committed write. */
267
+ function readStateFromDisk() {
268
+ const fp = statePath();
269
+ if (!existsSync(fp))
270
+ return emptyState();
271
+ try {
272
+ return coerceState(JSON.parse(readFileSync(fp, 'utf-8')));
273
+ }
274
+ catch {
275
+ return emptyState();
276
+ }
277
+ }
278
+ export function listSnapshots() {
279
+ return readHistoryIndex().snapshots;
280
+ }
281
+ /** Read the full state stored in a snapshot (for diff preview before rollback). */
282
+ export function readSnapshotState(id) {
283
+ const fp = join(snapshotDir(id), 'state.json');
284
+ if (!existsSync(fp))
285
+ return undefined;
286
+ try {
287
+ return coerceState(JSON.parse(readFileSync(fp, 'utf-8')));
288
+ }
289
+ catch {
290
+ return undefined;
291
+ }
292
+ }
293
+ /** Read a skill body as it existed in a snapshot (mirrors {@link readSkillOverrideBody}). */
294
+ export function readSnapshotSkillBody(id, name) {
295
+ const fp = join(snapshotDir(id), 'skills', `${safeSkillName(name)}.md`);
296
+ if (!existsSync(fp))
297
+ return undefined;
298
+ try {
299
+ return readFileSync(fp, 'utf-8');
300
+ }
301
+ catch {
302
+ return undefined;
303
+ }
304
+ }
305
+ // ─── Skill override bodies (stored as .md files, referenced by state) ─────────
306
+ /** Read the override SKILL.md body for a built-in skill, or undefined if none.
307
+ * Reads the .md file when the state entry has a body; the state's `body` field
308
+ * is a presence marker, the file is the source of truth for large text. */
309
+ export function readSkillOverrideBody(name) {
310
+ const fp = skillOverridePath(name);
311
+ if (!existsSync(fp))
312
+ return undefined;
313
+ try {
314
+ return readFileSync(fp, 'utf-8');
315
+ }
316
+ catch {
317
+ return undefined;
318
+ }
319
+ }
320
+ // ─── Mutations (each snapshots the prior state first) ─────────────────────────
321
+ /** Set (or clear) the master enabled flag. */
322
+ export function setCustomizationEnabled(enabled) {
323
+ return withStateLock(() => {
324
+ try {
325
+ snapshotCurrentUnlocked(enabled ? 'enable customization' : 'disable customization');
326
+ }
327
+ catch { /* best-effort */ }
328
+ const state = readStateFromDisk();
329
+ state.enabled = enabled;
330
+ writeStateUnlocked(state);
331
+ return state;
332
+ });
333
+ }
334
+ /** Override (value set) or clear (value === null) a single prompt key for a locale. */
335
+ export function setPromptOverride(locale, key, value) {
336
+ if (value !== null && Buffer.byteLength(value, 'utf-8') > MAX_PROMPT_OVERRIDE_BYTES) {
337
+ throw new Error('prompt_override_too_large');
338
+ }
339
+ return withStateLock(() => {
340
+ try {
341
+ snapshotCurrentUnlocked(`${value === null ? 'reset' : 'set'} ${key} (${locale})`);
342
+ }
343
+ catch { /* best-effort */ }
344
+ const state = readStateFromDisk();
345
+ const po = state.promptOverrides ?? {};
346
+ const map = { ...(po[locale] ?? {}) };
347
+ if (value === null)
348
+ delete map[key];
349
+ else
350
+ map[key] = value;
351
+ if (Object.keys(map).length)
352
+ po[locale] = map;
353
+ else
354
+ delete po[locale];
355
+ if (Object.keys(po).length)
356
+ state.promptOverrides = po;
357
+ else
358
+ delete state.promptOverrides;
359
+ writeStateUnlocked(state);
360
+ return state;
361
+ });
362
+ }
363
+ /** Force a conditional prompt line on/off, or clear the override (follow shipped gating). */
364
+ export function setConditionalLine(key, value) {
365
+ return withStateLock(() => {
366
+ try {
367
+ snapshotCurrentUnlocked(`${value === null ? 'reset' : 'set'} condition ${key}`);
368
+ }
369
+ catch { /* best-effort */ }
370
+ const state = readStateFromDisk();
371
+ const cl = { ...(state.conditionalLines ?? {}) };
372
+ if (value === null)
373
+ delete cl[key];
374
+ else
375
+ cl[key] = value;
376
+ if (Object.keys(cl).length)
377
+ state.conditionalLines = cl;
378
+ else
379
+ delete state.conditionalLines;
380
+ writeStateUnlocked(state);
381
+ return state;
382
+ });
383
+ }
384
+ /** Set (body != null) or clear (body === null) the override body for a built-in skill.
385
+ * Clearing removes the body but leaves any `disabled` flag intact. */
386
+ export function setSkillOverrideBody(name, body) {
387
+ const clean = safeSkillName(name);
388
+ if (body !== null && Buffer.byteLength(body, 'utf-8') > MAX_SKILL_BODY_BYTES) {
389
+ throw new Error('skill_body_too_large');
390
+ }
391
+ return withStateLock(() => {
392
+ try {
393
+ snapshotCurrentUnlocked(`${body === null ? 'reset body' : 'override body'} ${clean}`);
394
+ }
395
+ catch { /* best-effort */ }
396
+ const state = readStateFromDisk();
397
+ const bs = { ...(state.builtinSkills ?? {}) };
398
+ const entry = { ...(bs[clean] ?? {}) };
399
+ if (body === null) {
400
+ delete entry.body;
401
+ try {
402
+ rmSync(skillOverridePath(clean), { force: true });
403
+ }
404
+ catch { /* ignore */ }
405
+ }
406
+ else {
407
+ entry.body = body;
408
+ entry.updatedAt = nowIso();
409
+ mkdirSync(skillsDir(), { recursive: true });
410
+ atomicWriteFileSync(skillOverridePath(clean), body);
411
+ }
412
+ if (entry.body !== undefined || entry.disabled)
413
+ bs[clean] = entry;
414
+ else
415
+ delete bs[clean];
416
+ if (Object.keys(bs).length)
417
+ state.builtinSkills = bs;
418
+ else
419
+ delete state.builtinSkills;
420
+ writeStateUnlocked(state);
421
+ return state;
422
+ });
423
+ }
424
+ /** Enable/disable injection of a built-in skill (independent of any body override). */
425
+ export function setSkillDisabled(name, disabled) {
426
+ const clean = safeSkillName(name);
427
+ return withStateLock(() => {
428
+ try {
429
+ snapshotCurrentUnlocked(`${disabled ? 'disable' : 'enable'} skill ${clean}`);
430
+ }
431
+ catch { /* best-effort */ }
432
+ const state = readStateFromDisk();
433
+ const bs = { ...(state.builtinSkills ?? {}) };
434
+ const entry = { ...(bs[clean] ?? {}) };
435
+ if (disabled)
436
+ entry.disabled = true;
437
+ else
438
+ delete entry.disabled;
439
+ entry.updatedAt = nowIso();
440
+ if (entry.body !== undefined || entry.disabled)
441
+ bs[clean] = entry;
442
+ else
443
+ delete bs[clean];
444
+ if (Object.keys(bs).length)
445
+ state.builtinSkills = bs;
446
+ else
447
+ delete state.builtinSkills;
448
+ writeStateUnlocked(state);
449
+ return state;
450
+ });
451
+ }
452
+ /** Reset EVERYTHING to factory: clears all overrides + skill bodies. Snapshots
453
+ * first, so this is fully reversible via rollback. Keeps the master enabled
454
+ * flag (resetting content is orthogonal to the on/off switch). */
455
+ export function resetAllToFactory() {
456
+ return withStateLock(() => {
457
+ try {
458
+ snapshotCurrentUnlocked('reset all to factory');
459
+ }
460
+ catch { /* best-effort */ }
461
+ const prior = readStateFromDisk();
462
+ // Wipe the skill body files.
463
+ try {
464
+ rmSync(skillsDir(), { recursive: true, force: true });
465
+ }
466
+ catch { /* ignore */ }
467
+ const next = { schemaVersion: SCHEMA_VERSION };
468
+ // Preserve the master switch across a content reset.
469
+ if (prior.enabled !== undefined)
470
+ next.enabled = prior.enabled;
471
+ writeStateUnlocked(next);
472
+ return next;
473
+ });
474
+ }
475
+ /** Roll the current state back to a snapshot's contents. Non-destructive: the
476
+ * pre-rollback state is snapshotted first, so a rollback can itself be undone
477
+ * by rolling forward to that new snapshot. */
478
+ export function rollbackToSnapshot(id) {
479
+ const target = readSnapshotState(id);
480
+ if (!target)
481
+ throw new Error('snapshot_not_found');
482
+ return withStateLock(() => {
483
+ try {
484
+ snapshotCurrentUnlocked(`rollback to ${id}`);
485
+ }
486
+ catch { /* best-effort */ }
487
+ // Restore skill bodies from the snapshot dir.
488
+ try {
489
+ rmSync(skillsDir(), { recursive: true, force: true });
490
+ }
491
+ catch { /* ignore */ }
492
+ const snapSkills = join(snapshotDir(id), 'skills');
493
+ if (existsSync(snapSkills)) {
494
+ try {
495
+ cpSync(snapSkills, skillsDir(), { recursive: true });
496
+ }
497
+ catch { /* best-effort */ }
498
+ }
499
+ writeStateUnlocked(target);
500
+ return target;
501
+ });
502
+ }
503
+ /** Replace the entire state atomically (used by bundle import after diff
504
+ * confirmation). Snapshots first. `skillBodies` maps skill name → SKILL.md so
505
+ * the .md files are materialised alongside the state pointers. */
506
+ export function replaceState(next, skillBodies, label) {
507
+ return withStateLock(() => {
508
+ try {
509
+ snapshotCurrentUnlocked(label);
510
+ }
511
+ catch { /* best-effort */ }
512
+ const clean = coerceState(next);
513
+ // Rewrite skill body files to exactly match the incoming set.
514
+ try {
515
+ rmSync(skillsDir(), { recursive: true, force: true });
516
+ }
517
+ catch { /* ignore */ }
518
+ if (clean.builtinSkills) {
519
+ mkdirSync(skillsDir(), { recursive: true });
520
+ for (const [name, entry] of Object.entries(clean.builtinSkills)) {
521
+ if (entry.body === undefined)
522
+ continue;
523
+ const body = skillBodies[name];
524
+ if (typeof body === 'string') {
525
+ atomicWriteFileSync(skillOverridePath(name), body);
526
+ }
527
+ else {
528
+ // Body marked present but no text supplied — drop the marker so state
529
+ // never references a missing file.
530
+ delete entry.body;
531
+ if (entry.body === undefined && !entry.disabled)
532
+ delete clean.builtinSkills[name];
533
+ }
534
+ }
535
+ if (clean.builtinSkills && !Object.keys(clean.builtinSkills).length)
536
+ delete clean.builtinSkills;
537
+ }
538
+ writeStateUnlocked(clean);
539
+ return clean;
540
+ });
541
+ }
542
+ //# sourceMappingURL=customization-store.js.map