botmux 2.107.0 → 2.109.0-canary.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 (803) hide show
  1. package/README.en.md +32 -22
  2. package/README.md +35 -23
  3. package/dist/adapters/backend/sandbox.d.ts +3 -1
  4. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  5. package/dist/adapters/backend/sandbox.js +19 -3
  6. package/dist/adapters/backend/sandbox.js.map +1 -1
  7. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  8. package/dist/adapters/backend/tmux-backend.js +16 -1
  9. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  10. package/dist/adapters/backend/tmux-pipe-backend.d.ts +24 -15
  11. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  12. package/dist/adapters/backend/tmux-pipe-backend.js +75 -43
  13. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  14. package/dist/adapters/cli/claude-code.d.ts.map +1 -1
  15. package/dist/adapters/cli/claude-code.js +4 -0
  16. package/dist/adapters/cli/claude-code.js.map +1 -1
  17. package/dist/adapters/cli/codex.d.ts.map +1 -1
  18. package/dist/adapters/cli/codex.js +4 -0
  19. package/dist/adapters/cli/codex.js.map +1 -1
  20. package/dist/adapters/cli/genius.d.ts.map +1 -1
  21. package/dist/adapters/cli/genius.js +9 -15
  22. package/dist/adapters/cli/genius.js.map +1 -1
  23. package/dist/adapters/cli/grok.d.ts +73 -0
  24. package/dist/adapters/cli/grok.d.ts.map +1 -0
  25. package/dist/adapters/cli/grok.js +298 -0
  26. package/dist/adapters/cli/grok.js.map +1 -0
  27. package/dist/adapters/cli/kiro-cli.d.ts +4 -0
  28. package/dist/adapters/cli/kiro-cli.d.ts.map +1 -0
  29. package/dist/adapters/cli/kiro-cli.js +73 -0
  30. package/dist/adapters/cli/kiro-cli.js.map +1 -0
  31. package/dist/adapters/cli/oh-my-pi.d.ts.map +1 -1
  32. package/dist/adapters/cli/oh-my-pi.js +133 -12
  33. package/dist/adapters/cli/oh-my-pi.js.map +1 -1
  34. package/dist/adapters/cli/read-isolation.d.ts +112 -3
  35. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  36. package/dist/adapters/cli/read-isolation.js +177 -8
  37. package/dist/adapters/cli/read-isolation.js.map +1 -1
  38. package/dist/adapters/cli/registry.d.ts +3 -1
  39. package/dist/adapters/cli/registry.d.ts.map +1 -1
  40. package/dist/adapters/cli/registry.js +5 -1
  41. package/dist/adapters/cli/registry.js.map +1 -1
  42. package/dist/adapters/cli/shared-hints.d.ts +8 -4
  43. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  44. package/dist/adapters/cli/shared-hints.js +8 -4
  45. package/dist/adapters/cli/shared-hints.js.map +1 -1
  46. package/dist/adapters/cli/types.d.ts +25 -16
  47. package/dist/adapters/cli/types.d.ts.map +1 -1
  48. package/dist/adapters/hook-installer.d.ts +5 -4
  49. package/dist/adapters/hook-installer.d.ts.map +1 -1
  50. package/dist/adapters/hook-installer.js +42 -0
  51. package/dist/adapters/hook-installer.js.map +1 -1
  52. package/dist/bot-registry.d.ts +15 -0
  53. package/dist/bot-registry.d.ts.map +1 -1
  54. package/dist/bot-registry.js +62 -2
  55. package/dist/bot-registry.js.map +1 -1
  56. package/dist/cli/send-dispatch.d.ts +21 -0
  57. package/dist/cli/send-dispatch.d.ts.map +1 -1
  58. package/dist/cli/send-dispatch.js +159 -0
  59. package/dist/cli/send-dispatch.js.map +1 -1
  60. package/dist/cli/session-list-liveness.d.ts +22 -0
  61. package/dist/cli/session-list-liveness.d.ts.map +1 -0
  62. package/dist/cli/session-list-liveness.js +22 -0
  63. package/dist/cli/session-list-liveness.js.map +1 -0
  64. package/dist/cli.d.ts.map +1 -1
  65. package/dist/cli.js +2195 -193
  66. package/dist/cli.js.map +1 -1
  67. package/dist/core/ask-types.d.ts +4 -0
  68. package/dist/core/ask-types.d.ts.map +1 -1
  69. package/dist/core/ask-types.js +10 -0
  70. package/dist/core/ask-types.js.map +1 -1
  71. package/dist/core/command-handler.d.ts.map +1 -1
  72. package/dist/core/command-handler.js +7 -0
  73. package/dist/core/command-handler.js.map +1 -1
  74. package/dist/core/cost-calculator.d.ts.map +1 -1
  75. package/dist/core/cost-calculator.js +35 -13
  76. package/dist/core/cost-calculator.js.map +1 -1
  77. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  78. package/dist/core/dashboard-ipc-server.js +245 -19
  79. package/dist/core/dashboard-ipc-server.js.map +1 -1
  80. package/dist/core/dashboard-rows.d.ts.map +1 -1
  81. package/dist/core/dashboard-rows.js +6 -2
  82. package/dist/core/dashboard-rows.js.map +1 -1
  83. package/dist/core/dashboard-url.d.ts +6 -5
  84. package/dist/core/dashboard-url.d.ts.map +1 -1
  85. package/dist/core/dashboard-url.js +11 -8
  86. package/dist/core/dashboard-url.js.map +1 -1
  87. package/dist/core/dispatch-worker-meta.d.ts +45 -0
  88. package/dist/core/dispatch-worker-meta.d.ts.map +1 -0
  89. package/dist/core/dispatch-worker-meta.js +158 -0
  90. package/dist/core/dispatch-worker-meta.js.map +1 -0
  91. package/dist/core/dispatch.d.ts +11 -0
  92. package/dist/core/dispatch.d.ts.map +1 -1
  93. package/dist/core/dispatch.js +27 -2
  94. package/dist/core/dispatch.js.map +1 -1
  95. package/dist/core/goal-attention.d.ts +20 -0
  96. package/dist/core/goal-attention.d.ts.map +1 -0
  97. package/dist/core/goal-attention.js +171 -0
  98. package/dist/core/goal-attention.js.map +1 -0
  99. package/dist/core/goal-reassign-budget.d.ts +7 -0
  100. package/dist/core/goal-reassign-budget.d.ts.map +1 -0
  101. package/dist/core/goal-reassign-budget.js +20 -0
  102. package/dist/core/goal-reassign-budget.js.map +1 -0
  103. package/dist/core/goal-supervisor.d.ts +83 -0
  104. package/dist/core/goal-supervisor.d.ts.map +1 -0
  105. package/dist/core/goal-supervisor.js +326 -0
  106. package/dist/core/goal-supervisor.js.map +1 -0
  107. package/dist/core/goal-watchdog.d.ts +96 -0
  108. package/dist/core/goal-watchdog.d.ts.map +1 -0
  109. package/dist/core/goal-watchdog.js +501 -0
  110. package/dist/core/goal-watchdog.js.map +1 -0
  111. package/dist/core/goal-worker-health.d.ts +17 -0
  112. package/dist/core/goal-worker-health.d.ts.map +1 -0
  113. package/dist/core/goal-worker-health.js +11 -0
  114. package/dist/core/goal-worker-health.js.map +1 -0
  115. package/dist/core/maintenance.d.ts +11 -8
  116. package/dist/core/maintenance.d.ts.map +1 -1
  117. package/dist/core/maintenance.js +45 -20
  118. package/dist/core/maintenance.js.map +1 -1
  119. package/dist/core/per-bot-env.d.ts.map +1 -1
  120. package/dist/core/per-bot-env.js +4 -0
  121. package/dist/core/per-bot-env.js.map +1 -1
  122. package/dist/core/plugins/cli-generation.d.ts +27 -0
  123. package/dist/core/plugins/cli-generation.d.ts.map +1 -0
  124. package/dist/core/plugins/cli-generation.js +54 -0
  125. package/dist/core/plugins/cli-generation.js.map +1 -0
  126. package/dist/core/plugins/convention-scanner.d.ts +4 -0
  127. package/dist/core/plugins/convention-scanner.d.ts.map +1 -0
  128. package/dist/core/plugins/convention-scanner.js +202 -0
  129. package/dist/core/plugins/convention-scanner.js.map +1 -0
  130. package/dist/core/plugins/dependencies.d.ts +5 -0
  131. package/dist/core/plugins/dependencies.d.ts.map +1 -0
  132. package/dist/core/plugins/dependencies.js +50 -0
  133. package/dist/core/plugins/dependencies.js.map +1 -0
  134. package/dist/core/plugins/effective.d.ts +5 -0
  135. package/dist/core/plugins/effective.d.ts.map +1 -0
  136. package/dist/core/plugins/effective.js +16 -0
  137. package/dist/core/plugins/effective.js.map +1 -0
  138. package/dist/core/plugins/ids.d.ts +4 -0
  139. package/dist/core/plugins/ids.d.ts.map +1 -0
  140. package/dist/core/plugins/ids.js +30 -0
  141. package/dist/core/plugins/ids.js.map +1 -0
  142. package/dist/core/plugins/init.d.ts +23 -0
  143. package/dist/core/plugins/init.d.ts.map +1 -0
  144. package/dist/core/plugins/init.js +332 -0
  145. package/dist/core/plugins/init.js.map +1 -0
  146. package/dist/core/plugins/install.d.ts +14 -0
  147. package/dist/core/plugins/install.d.ts.map +1 -0
  148. package/dist/core/plugins/install.js +176 -0
  149. package/dist/core/plugins/install.js.map +1 -0
  150. package/dist/core/plugins/manifest.d.ts +4 -0
  151. package/dist/core/plugins/manifest.d.ts.map +1 -0
  152. package/dist/core/plugins/manifest.js +78 -0
  153. package/dist/core/plugins/manifest.js.map +1 -0
  154. package/dist/core/plugins/materializer.d.ts +16 -0
  155. package/dist/core/plugins/materializer.d.ts.map +1 -0
  156. package/dist/core/plugins/materializer.js +73 -0
  157. package/dist/core/plugins/materializer.js.map +1 -0
  158. package/dist/core/plugins/mcp/gateway-installer.d.ts +16 -0
  159. package/dist/core/plugins/mcp/gateway-installer.d.ts.map +1 -0
  160. package/dist/core/plugins/mcp/gateway-installer.js +255 -0
  161. package/dist/core/plugins/mcp/gateway-installer.js.map +1 -0
  162. package/dist/core/plugins/mcp/gateway.d.ts +51 -0
  163. package/dist/core/plugins/mcp/gateway.d.ts.map +1 -0
  164. package/dist/core/plugins/mcp/gateway.js +500 -0
  165. package/dist/core/plugins/mcp/gateway.js.map +1 -0
  166. package/dist/core/plugins/paths.d.ts +14 -0
  167. package/dist/core/plugins/paths.d.ts.map +1 -0
  168. package/dist/core/plugins/paths.js +62 -0
  169. package/dist/core/plugins/paths.js.map +1 -0
  170. package/dist/core/plugins/pm2.d.ts +13 -0
  171. package/dist/core/plugins/pm2.d.ts.map +1 -0
  172. package/dist/core/plugins/pm2.js +61 -0
  173. package/dist/core/plugins/pm2.js.map +1 -0
  174. package/dist/core/plugins/runtime.d.ts +49 -0
  175. package/dist/core/plugins/runtime.d.ts.map +1 -0
  176. package/dist/core/plugins/runtime.js +158 -0
  177. package/dist/core/plugins/runtime.js.map +1 -0
  178. package/dist/core/plugins/service-manager.d.ts +21 -0
  179. package/dist/core/plugins/service-manager.d.ts.map +1 -0
  180. package/dist/core/plugins/service-manager.js +261 -0
  181. package/dist/core/plugins/service-manager.js.map +1 -0
  182. package/dist/core/plugins/session-manifest.d.ts +25 -0
  183. package/dist/core/plugins/session-manifest.d.ts.map +1 -0
  184. package/dist/core/plugins/session-manifest.js +58 -0
  185. package/dist/core/plugins/session-manifest.js.map +1 -0
  186. package/dist/core/plugins/skills.d.ts +7 -0
  187. package/dist/core/plugins/skills.d.ts.map +1 -0
  188. package/dist/core/plugins/skills.js +36 -0
  189. package/dist/core/plugins/skills.js.map +1 -0
  190. package/dist/core/plugins/types.d.ts +125 -0
  191. package/dist/core/plugins/types.d.ts.map +1 -0
  192. package/dist/core/plugins/types.js +2 -0
  193. package/dist/core/plugins/types.js.map +1 -0
  194. package/dist/core/repo-requirement.d.ts +86 -0
  195. package/dist/core/repo-requirement.d.ts.map +1 -0
  196. package/dist/core/repo-requirement.js +412 -0
  197. package/dist/core/repo-requirement.js.map +1 -0
  198. package/dist/core/session-discovery.d.ts.map +1 -1
  199. package/dist/core/session-discovery.js +5 -0
  200. package/dist/core/session-discovery.js.map +1 -1
  201. package/dist/core/session-manager.d.ts +13 -0
  202. package/dist/core/session-manager.d.ts.map +1 -1
  203. package/dist/core/session-manager.js +60 -15
  204. package/dist/core/session-manager.js.map +1 -1
  205. package/dist/core/skills/cli-admin-command.d.ts.map +1 -1
  206. package/dist/core/skills/cli-admin-command.js +8 -2
  207. package/dist/core/skills/cli-admin-command.js.map +1 -1
  208. package/dist/core/skills/im-command.d.ts.map +1 -1
  209. package/dist/core/skills/im-command.js +3 -1
  210. package/dist/core/skills/im-command.js.map +1 -1
  211. package/dist/core/skills/manifest-store.d.ts +1 -0
  212. package/dist/core/skills/manifest-store.d.ts.map +1 -1
  213. package/dist/core/skills/manifest-store.js +4 -1
  214. package/dist/core/skills/manifest-store.js.map +1 -1
  215. package/dist/core/skills/policy.d.ts +1 -0
  216. package/dist/core/skills/policy.d.ts.map +1 -1
  217. package/dist/core/skills/policy.js +9 -5
  218. package/dist/core/skills/policy.js.map +1 -1
  219. package/dist/core/skills/session-resolver.d.ts +1 -0
  220. package/dist/core/skills/session-resolver.d.ts.map +1 -1
  221. package/dist/core/skills/session-resolver.js +1 -0
  222. package/dist/core/skills/session-resolver.js.map +1 -1
  223. package/dist/core/skills/session-runtime.d.ts +2 -1
  224. package/dist/core/skills/session-runtime.d.ts.map +1 -1
  225. package/dist/core/skills/session-runtime.js +9 -4
  226. package/dist/core/skills/session-runtime.js.map +1 -1
  227. package/dist/core/skills/sources.d.ts +33 -1
  228. package/dist/core/skills/sources.d.ts.map +1 -1
  229. package/dist/core/skills/sources.js +97 -0
  230. package/dist/core/skills/sources.js.map +1 -1
  231. package/dist/core/skills/types.d.ts +12 -0
  232. package/dist/core/skills/types.d.ts.map +1 -1
  233. package/dist/core/terminal-access.d.ts +12 -0
  234. package/dist/core/terminal-access.d.ts.map +1 -0
  235. package/dist/core/terminal-access.js +15 -0
  236. package/dist/core/terminal-access.js.map +1 -0
  237. package/dist/core/terminal-url.d.ts.map +1 -1
  238. package/dist/core/terminal-url.js +21 -6
  239. package/dist/core/terminal-url.js.map +1 -1
  240. package/dist/core/terminal-write-auth.d.ts +34 -0
  241. package/dist/core/terminal-write-auth.d.ts.map +1 -0
  242. package/dist/core/terminal-write-auth.js +84 -0
  243. package/dist/core/terminal-write-auth.js.map +1 -0
  244. package/dist/core/tmux-recovery.d.ts +11 -0
  245. package/dist/core/tmux-recovery.d.ts.map +1 -0
  246. package/dist/core/tmux-recovery.js +19 -0
  247. package/dist/core/tmux-recovery.js.map +1 -0
  248. package/dist/core/types.d.ts +11 -4
  249. package/dist/core/types.d.ts.map +1 -1
  250. package/dist/core/types.js.map +1 -1
  251. package/dist/core/update-check.d.ts +2 -2
  252. package/dist/core/update-check.js +2 -2
  253. package/dist/core/verified-delivery.d.ts +47 -0
  254. package/dist/core/verified-delivery.d.ts.map +1 -0
  255. package/dist/core/verified-delivery.js +115 -0
  256. package/dist/core/verified-delivery.js.map +1 -0
  257. package/dist/core/worker-pool.d.ts +6 -7
  258. package/dist/core/worker-pool.d.ts.map +1 -1
  259. package/dist/core/worker-pool.js +152 -152
  260. package/dist/core/worker-pool.js.map +1 -1
  261. package/dist/daemon.d.ts +43 -1
  262. package/dist/daemon.d.ts.map +1 -1
  263. package/dist/daemon.js +1755 -41
  264. package/dist/daemon.js.map +1 -1
  265. package/dist/dashboard/auth.d.ts +1 -1
  266. package/dist/dashboard/auth.d.ts.map +1 -1
  267. package/dist/dashboard/auth.js +7 -2
  268. package/dist/dashboard/auth.js.map +1 -1
  269. package/dist/dashboard/bot-onboarding.d.ts +32 -1
  270. package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
  271. package/dist/dashboard/bot-onboarding.js +95 -17
  272. package/dist/dashboard/bot-onboarding.js.map +1 -1
  273. package/dist/dashboard/bot-payload.d.ts +8 -1
  274. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  275. package/dist/dashboard/bot-payload.js +6 -0
  276. package/dist/dashboard/bot-payload.js.map +1 -1
  277. package/dist/dashboard/connector-api.d.ts.map +1 -1
  278. package/dist/dashboard/connector-api.js +39 -13
  279. package/dist/dashboard/connector-api.js.map +1 -1
  280. package/dist/dashboard/federation-spoke-api.d.ts.map +1 -1
  281. package/dist/dashboard/federation-spoke-api.js +7 -1
  282. package/dist/dashboard/federation-spoke-api.js.map +1 -1
  283. package/dist/dashboard/history-senders.d.ts +37 -0
  284. package/dist/dashboard/history-senders.d.ts.map +1 -0
  285. package/dist/dashboard/history-senders.js +60 -0
  286. package/dist/dashboard/history-senders.js.map +1 -0
  287. package/dist/dashboard/registry.d.ts +2 -0
  288. package/dist/dashboard/registry.d.ts.map +1 -1
  289. package/dist/dashboard/registry.js.map +1 -1
  290. package/dist/dashboard/roles-batch.d.ts +31 -0
  291. package/dist/dashboard/roles-batch.d.ts.map +1 -0
  292. package/dist/dashboard/roles-batch.js +87 -0
  293. package/dist/dashboard/roles-batch.js.map +1 -0
  294. package/dist/dashboard/settings-card-model.d.ts +6 -3
  295. package/dist/dashboard/settings-card-model.d.ts.map +1 -1
  296. package/dist/dashboard/settings-card-model.js +20 -5
  297. package/dist/dashboard/settings-card-model.js.map +1 -1
  298. package/dist/dashboard/settings-write-applier.d.ts +8 -3
  299. package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
  300. package/dist/dashboard/settings-write-applier.js +19 -2
  301. package/dist/dashboard/settings-write-applier.js.map +1 -1
  302. package/dist/dashboard/skill-install-request.d.ts +4 -0
  303. package/dist/dashboard/skill-install-request.d.ts.map +1 -1
  304. package/dist/dashboard/skill-install-request.js +11 -1
  305. package/dist/dashboard/skill-install-request.js.map +1 -1
  306. package/dist/dashboard/trigger-api.d.ts +9 -1
  307. package/dist/dashboard/trigger-api.d.ts.map +1 -1
  308. package/dist/dashboard/trigger-api.js +48 -10
  309. package/dist/dashboard/trigger-api.js.map +1 -1
  310. package/dist/dashboard/web/app.d.ts.map +1 -1
  311. package/dist/dashboard/web/app.js +332 -271
  312. package/dist/dashboard/web/app.js.map +1 -1
  313. package/dist/dashboard/web/bot-defaults-page.d.ts +26 -0
  314. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  315. package/dist/dashboard/web/bot-defaults-page.js +1414 -12
  316. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  317. package/dist/dashboard/web/bot-defaults.d.ts +95 -4
  318. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  319. package/dist/dashboard/web/bot-defaults.js +43 -2141
  320. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  321. package/dist/dashboard/web/bot-onboarding.d.ts +6 -1
  322. package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
  323. package/dist/dashboard/web/bot-onboarding.js +368 -311
  324. package/dist/dashboard/web/bot-onboarding.js.map +1 -1
  325. package/dist/dashboard/web/connectors-page.d.ts +4 -0
  326. package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
  327. package/dist/dashboard/web/connectors-page.js +228 -48
  328. package/dist/dashboard/web/connectors-page.js.map +1 -1
  329. package/dist/dashboard/web/dashboard-api.d.ts +9 -0
  330. package/dist/dashboard/web/dashboard-api.d.ts.map +1 -0
  331. package/dist/dashboard/web/dashboard-api.js +18 -0
  332. package/dist/dashboard/web/dashboard-api.js.map +1 -0
  333. package/dist/dashboard/web/dashboard-components.d.ts +92 -0
  334. package/dist/dashboard/web/dashboard-components.d.ts.map +1 -0
  335. package/dist/dashboard/web/dashboard-components.js +250 -0
  336. package/dist/dashboard/web/dashboard-components.js.map +1 -0
  337. package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
  338. package/dist/dashboard/web/dashboard-routes.js +39 -182
  339. package/dist/dashboard/web/dashboard-routes.js.map +1 -1
  340. package/dist/dashboard/web/floating-scrollbars.d.ts +2 -0
  341. package/dist/dashboard/web/floating-scrollbars.d.ts.map +1 -0
  342. package/dist/dashboard/web/floating-scrollbars.js +264 -0
  343. package/dist/dashboard/web/floating-scrollbars.js.map +1 -0
  344. package/dist/dashboard/web/goals.d.ts +2 -0
  345. package/dist/dashboard/web/goals.d.ts.map +1 -0
  346. package/dist/dashboard/web/goals.js +800 -0
  347. package/dist/dashboard/web/goals.js.map +1 -0
  348. package/dist/dashboard/web/groups-api.d.ts +38 -0
  349. package/dist/dashboard/web/groups-api.d.ts.map +1 -0
  350. package/dist/dashboard/web/groups-api.js +44 -0
  351. package/dist/dashboard/web/groups-api.js.map +1 -0
  352. package/dist/dashboard/web/groups-page.d.ts.map +1 -1
  353. package/dist/dashboard/web/groups-page.js +746 -15
  354. package/dist/dashboard/web/groups-page.js.map +1 -1
  355. package/dist/dashboard/web/groups.d.ts +51 -18
  356. package/dist/dashboard/web/groups.d.ts.map +1 -1
  357. package/dist/dashboard/web/groups.js +145 -1096
  358. package/dist/dashboard/web/groups.js.map +1 -1
  359. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  360. package/dist/dashboard/web/i18n.js +741 -295
  361. package/dist/dashboard/web/i18n.js.map +1 -1
  362. package/dist/dashboard/web/insights-page.d.ts.map +1 -1
  363. package/dist/dashboard/web/insights-page.js +1047 -14
  364. package/dist/dashboard/web/insights-page.js.map +1 -1
  365. package/dist/dashboard/web/insights.d.ts +177 -7
  366. package/dist/dashboard/web/insights.d.ts.map +1 -1
  367. package/dist/dashboard/web/insights.js +187 -1926
  368. package/dist/dashboard/web/insights.js.map +1 -1
  369. package/dist/dashboard/web/legacy-workflow-page.d.ts +3 -0
  370. package/dist/dashboard/web/legacy-workflow-page.d.ts.map +1 -0
  371. package/dist/dashboard/web/legacy-workflow-page.js +717 -0
  372. package/dist/dashboard/web/legacy-workflow-page.js.map +1 -0
  373. package/dist/dashboard/web/monitor-room.d.ts.map +1 -1
  374. package/dist/dashboard/web/monitor-room.js +10 -8
  375. package/dist/dashboard/web/monitor-room.js.map +1 -1
  376. package/dist/dashboard/web/monitoring-page.d.ts.map +1 -1
  377. package/dist/dashboard/web/monitoring-page.js +188 -14
  378. package/dist/dashboard/web/monitoring-page.js.map +1 -1
  379. package/dist/dashboard/web/office-page.d.ts.map +1 -1
  380. package/dist/dashboard/web/office-page.js +11 -23
  381. package/dist/dashboard/web/office-page.js.map +1 -1
  382. package/dist/dashboard/web/overview-page.d.ts.map +1 -1
  383. package/dist/dashboard/web/overview-page.js +141 -147
  384. package/dist/dashboard/web/overview-page.js.map +1 -1
  385. package/dist/dashboard/web/overview.d.ts +0 -1
  386. package/dist/dashboard/web/overview.d.ts.map +1 -1
  387. package/dist/dashboard/web/overview.js +3 -275
  388. package/dist/dashboard/web/overview.js.map +1 -1
  389. package/dist/dashboard/web/plugin-events.d.ts +2 -0
  390. package/dist/dashboard/web/plugin-events.d.ts.map +1 -0
  391. package/dist/dashboard/web/plugin-events.js +2 -0
  392. package/dist/dashboard/web/plugin-events.js.map +1 -0
  393. package/dist/dashboard/web/plugin-page.d.ts +3 -0
  394. package/dist/dashboard/web/plugin-page.d.ts.map +1 -0
  395. package/dist/dashboard/web/plugin-page.js +469 -0
  396. package/dist/dashboard/web/plugin-page.js.map +1 -0
  397. package/dist/dashboard/web/preferences.d.ts +1 -6
  398. package/dist/dashboard/web/preferences.d.ts.map +1 -1
  399. package/dist/dashboard/web/preferences.js +0 -21
  400. package/dist/dashboard/web/preferences.js.map +1 -1
  401. package/dist/dashboard/web/role-batch.d.ts +9 -0
  402. package/dist/dashboard/web/role-batch.d.ts.map +1 -0
  403. package/dist/dashboard/web/role-batch.js +42 -0
  404. package/dist/dashboard/web/role-batch.js.map +1 -0
  405. package/dist/dashboard/web/roles-page.d.ts.map +1 -1
  406. package/dist/dashboard/web/roles-page.js +538 -13
  407. package/dist/dashboard/web/roles-page.js.map +1 -1
  408. package/dist/dashboard/web/roles.d.ts +98 -1
  409. package/dist/dashboard/web/roles.d.ts.map +1 -1
  410. package/dist/dashboard/web/roles.js +117 -903
  411. package/dist/dashboard/web/roles.js.map +1 -1
  412. package/dist/dashboard/web/schedules-page.d.ts.map +1 -1
  413. package/dist/dashboard/web/schedules-page.js +82 -24
  414. package/dist/dashboard/web/schedules-page.js.map +1 -1
  415. package/dist/dashboard/web/sessions-kanban.d.ts +67 -0
  416. package/dist/dashboard/web/sessions-kanban.d.ts.map +1 -0
  417. package/dist/dashboard/web/sessions-kanban.js +481 -0
  418. package/dist/dashboard/web/sessions-kanban.js.map +1 -0
  419. package/dist/dashboard/web/sessions-page.d.ts +4 -0
  420. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  421. package/dist/dashboard/web/sessions-page.js +1633 -18
  422. package/dist/dashboard/web/sessions-page.js.map +1 -1
  423. package/dist/dashboard/web/sessions.d.ts +45 -4
  424. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  425. package/dist/dashboard/web/sessions.js +53 -2535
  426. package/dist/dashboard/web/sessions.js.map +1 -1
  427. package/dist/dashboard/web/settings-page.d.ts +0 -2
  428. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  429. package/dist/dashboard/web/settings-page.js +135 -117
  430. package/dist/dashboard/web/settings-page.js.map +1 -1
  431. package/dist/dashboard/web/skills-page.d.ts +31 -1
  432. package/dist/dashboard/web/skills-page.d.ts.map +1 -1
  433. package/dist/dashboard/web/skills-page.js +495 -131
  434. package/dist/dashboard/web/skills-page.js.map +1 -1
  435. package/dist/dashboard/web/team-federation-page.d.ts.map +1 -1
  436. package/dist/dashboard/web/team-federation-page.js +446 -28
  437. package/dist/dashboard/web/team-federation-page.js.map +1 -1
  438. package/dist/dashboard/web/team-federation.d.ts +91 -2
  439. package/dist/dashboard/web/team-federation.d.ts.map +1 -1
  440. package/dist/dashboard/web/team-federation.js +87 -474
  441. package/dist/dashboard/web/team-federation.js.map +1 -1
  442. package/dist/dashboard/web/theme-menu.d.ts +1 -0
  443. package/dist/dashboard/web/theme-menu.d.ts.map +1 -1
  444. package/dist/dashboard/web/theme-menu.js +79 -20
  445. package/dist/dashboard/web/theme-menu.js.map +1 -1
  446. package/dist/dashboard/web/ui.d.ts +5 -2
  447. package/dist/dashboard/web/ui.d.ts.map +1 -1
  448. package/dist/dashboard/web/ui.js +22 -20
  449. package/dist/dashboard/web/ui.js.map +1 -1
  450. package/dist/dashboard/web/v3-api.d.ts +16 -0
  451. package/dist/dashboard/web/v3-api.d.ts.map +1 -0
  452. package/dist/dashboard/web/v3-api.js +21 -0
  453. package/dist/dashboard/web/v3-api.js.map +1 -0
  454. package/dist/dashboard/web/v3-components.d.ts +2 -0
  455. package/dist/dashboard/web/v3-components.d.ts.map +1 -0
  456. package/dist/dashboard/web/v3-components.js +290 -0
  457. package/dist/dashboard/web/v3-components.js.map +1 -0
  458. package/dist/dashboard/web/v3-model.d.ts +80 -0
  459. package/dist/dashboard/web/v3-model.d.ts.map +1 -0
  460. package/dist/dashboard/web/v3-model.js +240 -0
  461. package/dist/dashboard/web/v3-model.js.map +1 -0
  462. package/dist/dashboard/web/v3-page.d.ts.map +1 -1
  463. package/dist/dashboard/web/v3-page.js +2 -22
  464. package/dist/dashboard/web/v3-page.js.map +1 -1
  465. package/dist/dashboard/web/v3-terminal.d.ts +14 -0
  466. package/dist/dashboard/web/v3-terminal.d.ts.map +1 -1
  467. package/dist/dashboard/web/v3-terminal.js +31 -19
  468. package/dist/dashboard/web/v3-terminal.js.map +1 -1
  469. package/dist/dashboard/web/webhook-logs-page.d.ts +16 -0
  470. package/dist/dashboard/web/webhook-logs-page.d.ts.map +1 -0
  471. package/dist/dashboard/web/webhook-logs-page.js +195 -0
  472. package/dist/dashboard/web/webhook-logs-page.js.map +1 -0
  473. package/dist/dashboard/web/whiteboards-page.d.ts.map +1 -1
  474. package/dist/dashboard/web/whiteboards-page.js +18 -23
  475. package/dist/dashboard/web/whiteboards-page.js.map +1 -1
  476. package/dist/dashboard/web/workflow-version-switch.d.ts +8 -0
  477. package/dist/dashboard/web/workflow-version-switch.d.ts.map +1 -0
  478. package/dist/dashboard/web/workflow-version-switch.js +9 -0
  479. package/dist/dashboard/web/workflow-version-switch.js.map +1 -0
  480. package/dist/dashboard/web/workflows.d.ts +272 -1
  481. package/dist/dashboard/web/workflows.d.ts.map +1 -1
  482. package/dist/dashboard/web/workflows.js +211 -1397
  483. package/dist/dashboard/web/workflows.js.map +1 -1
  484. package/dist/dashboard/webhook-routes.d.ts.map +1 -1
  485. package/dist/dashboard/webhook-routes.js +92 -39
  486. package/dist/dashboard/webhook-routes.js.map +1 -1
  487. package/dist/dashboard-web/app.js +1 -65
  488. package/dist/dashboard-web/brand-logo.png +0 -0
  489. package/dist/dashboard-web/chunks/bot-defaults-page-G7DAWTXC.js +1 -0
  490. package/dist/dashboard-web/chunks/chunk-26WEWGBY.js +1 -0
  491. package/dist/dashboard-web/chunks/chunk-5THX4DI2.js +66 -0
  492. package/dist/dashboard-web/chunks/chunk-BD3PZGH2.js +1 -0
  493. package/dist/dashboard-web/chunks/chunk-CUC7NN6S.js +1 -0
  494. package/dist/dashboard-web/chunks/chunk-EVK77ASG.js +1 -0
  495. package/dist/dashboard-web/chunks/chunk-PMNMWFH7.js +1 -0
  496. package/dist/dashboard-web/chunks/chunk-R3FXBFQH.js +1 -0
  497. package/dist/dashboard-web/chunks/chunk-SRIE4MLQ.js +1 -0
  498. package/dist/dashboard-web/chunks/chunk-SYC6D5XU.js +1 -0
  499. package/dist/dashboard-web/chunks/chunk-SYCMR6QJ.js +37 -0
  500. package/dist/dashboard-web/chunks/{chunk-PE6W3C2C.js → chunk-TOQZ4B7V.js} +1 -1
  501. package/dist/dashboard-web/chunks/chunk-XJ7BGPJH.js +1 -0
  502. package/dist/dashboard-web/chunks/connectors-page-Y5CECBH3.js +1 -0
  503. package/dist/dashboard-web/chunks/goals-BHR5JHZU.js +94 -0
  504. package/dist/dashboard-web/chunks/groups-page-NL5E7PRO.js +8 -0
  505. package/dist/dashboard-web/chunks/insights-page-TR5XEPIS.js +22 -0
  506. package/dist/dashboard-web/chunks/legacy-workflow-page-3DUDDHNN.js +2 -0
  507. package/dist/dashboard-web/chunks/{monitor-room-RFX4HPS5.js → monitor-room-PCKVNUQ2.js} +17 -15
  508. package/dist/dashboard-web/chunks/monitoring-page-ZOUXGCBM.js +2 -0
  509. package/dist/dashboard-web/chunks/office-page-3AJ2AKX5.js +1 -0
  510. package/dist/dashboard-web/chunks/overview-page-54HRXQKY.js +1 -0
  511. package/dist/dashboard-web/chunks/plugin-page-7FW2LPJH.js +1 -0
  512. package/dist/dashboard-web/chunks/roles-page-UYLRV5ZM.js +1 -0
  513. package/dist/dashboard-web/chunks/schedules-page-VM6PMLHU.js +1 -0
  514. package/dist/dashboard-web/chunks/sessions-page-WEMS3HNZ.js +3 -0
  515. package/dist/dashboard-web/chunks/settings-page-DBWXQGZX.js +2 -0
  516. package/dist/dashboard-web/chunks/skills-page-5IAW7FDO.js +4 -0
  517. package/dist/dashboard-web/chunks/team-federation-page-7CVJVWJK.js +1 -0
  518. package/dist/dashboard-web/chunks/v3-page-75ALUY3U.js +94 -0
  519. package/dist/dashboard-web/chunks/whiteboards-page-ITSZWK2R.js +1 -0
  520. package/dist/dashboard-web/favicon.png +0 -0
  521. package/dist/dashboard-web/index.html +5 -69
  522. package/dist/dashboard-web/style.css +20515 -7198
  523. package/dist/dashboard.js +785 -53
  524. package/dist/dashboard.js.map +1 -1
  525. package/dist/global-config.d.ts +19 -2
  526. package/dist/global-config.d.ts.map +1 -1
  527. package/dist/global-config.js +15 -0
  528. package/dist/global-config.js.map +1 -1
  529. package/dist/i18n/en.d.ts.map +1 -1
  530. package/dist/i18n/en.js +18 -0
  531. package/dist/i18n/en.js.map +1 -1
  532. package/dist/i18n/zh.d.ts.map +1 -1
  533. package/dist/i18n/zh.js +18 -0
  534. package/dist/i18n/zh.js.map +1 -1
  535. package/dist/im/lark/card-builder.d.ts +33 -7
  536. package/dist/im/lark/card-builder.d.ts.map +1 -1
  537. package/dist/im/lark/card-builder.js +223 -46
  538. package/dist/im/lark/card-builder.js.map +1 -1
  539. package/dist/im/lark/card-handler.d.ts.map +1 -1
  540. package/dist/im/lark/card-handler.js +319 -33
  541. package/dist/im/lark/card-handler.js.map +1 -1
  542. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  543. package/dist/im/lark/event-dispatcher.js +126 -8
  544. package/dist/im/lark/event-dispatcher.js.map +1 -1
  545. package/dist/im/lark/message-parser.d.ts.map +1 -1
  546. package/dist/im/lark/message-parser.js +4 -0
  547. package/dist/im/lark/message-parser.js.map +1 -1
  548. package/dist/im/lark/settings-card.d.ts.map +1 -1
  549. package/dist/im/lark/settings-card.js +2 -1
  550. package/dist/im/lark/settings-card.js.map +1 -1
  551. package/dist/platform/binding.d.ts +9 -0
  552. package/dist/platform/binding.d.ts.map +1 -1
  553. package/dist/platform/binding.js +14 -0
  554. package/dist/platform/binding.js.map +1 -1
  555. package/dist/platform/tunnel-client.d.ts.map +1 -1
  556. package/dist/platform/tunnel-client.js +9 -0
  557. package/dist/platform/tunnel-client.js.map +1 -1
  558. package/dist/services/bot-config-store.d.ts +1 -1
  559. package/dist/services/bot-config-store.d.ts.map +1 -1
  560. package/dist/services/bot-config-store.js +11 -5
  561. package/dist/services/bot-config-store.js.map +1 -1
  562. package/dist/services/file-bridge-path.d.ts +8 -0
  563. package/dist/services/file-bridge-path.d.ts.map +1 -0
  564. package/dist/services/file-bridge-path.js +75 -0
  565. package/dist/services/file-bridge-path.js.map +1 -0
  566. package/dist/services/goal-chat-store.d.ts +43 -0
  567. package/dist/services/goal-chat-store.d.ts.map +1 -0
  568. package/dist/services/goal-chat-store.js +148 -0
  569. package/dist/services/goal-chat-store.js.map +1 -0
  570. package/dist/services/goal-decision-options.d.ts +7 -0
  571. package/dist/services/goal-decision-options.d.ts.map +1 -0
  572. package/dist/services/goal-decision-options.js +25 -0
  573. package/dist/services/goal-decision-options.js.map +1 -0
  574. package/dist/services/goal-narration-store.d.ts +16 -0
  575. package/dist/services/goal-narration-store.d.ts.map +1 -0
  576. package/dist/services/goal-narration-store.js +74 -0
  577. package/dist/services/goal-narration-store.js.map +1 -0
  578. package/dist/services/goal-notification-retry-store.d.ts +46 -0
  579. package/dist/services/goal-notification-retry-store.d.ts.map +1 -0
  580. package/dist/services/goal-notification-retry-store.js +114 -0
  581. package/dist/services/goal-notification-retry-store.js.map +1 -0
  582. package/dist/services/goal-parent-notification-store.d.ts +22 -0
  583. package/dist/services/goal-parent-notification-store.d.ts.map +1 -0
  584. package/dist/services/goal-parent-notification-store.js +45 -0
  585. package/dist/services/goal-parent-notification-store.js.map +1 -0
  586. package/dist/services/grok-paths.d.ts +27 -0
  587. package/dist/services/grok-paths.d.ts.map +1 -0
  588. package/dist/services/grok-paths.js +106 -0
  589. package/dist/services/grok-paths.js.map +1 -0
  590. package/dist/services/grok-transcript.d.ts +67 -0
  591. package/dist/services/grok-transcript.d.ts.map +1 -0
  592. package/dist/services/grok-transcript.js +630 -0
  593. package/dist/services/grok-transcript.js.map +1 -0
  594. package/dist/services/group-creator.d.ts.map +1 -1
  595. package/dist/services/group-creator.js +10 -1
  596. package/dist/services/group-creator.js.map +1 -1
  597. package/dist/services/hermes-session-filter.d.ts +28 -0
  598. package/dist/services/hermes-session-filter.d.ts.map +1 -0
  599. package/dist/services/hermes-session-filter.js +53 -0
  600. package/dist/services/hermes-session-filter.js.map +1 -0
  601. package/dist/services/hermes-transcript.d.ts +3 -0
  602. package/dist/services/hermes-transcript.d.ts.map +1 -1
  603. package/dist/services/hermes-transcript.js +20 -2
  604. package/dist/services/hermes-transcript.js.map +1 -1
  605. package/dist/services/kiro-session.d.ts +2 -0
  606. package/dist/services/kiro-session.d.ts.map +1 -0
  607. package/dist/services/kiro-session.js +19 -0
  608. package/dist/services/kiro-session.js.map +1 -0
  609. package/dist/services/local-cli-opener.d.ts +58 -0
  610. package/dist/services/local-cli-opener.d.ts.map +1 -0
  611. package/dist/services/local-cli-opener.js +252 -0
  612. package/dist/services/local-cli-opener.js.map +1 -0
  613. package/dist/services/observed-bot-union-ids-store.d.ts +20 -0
  614. package/dist/services/observed-bot-union-ids-store.d.ts.map +1 -0
  615. package/dist/services/observed-bot-union-ids-store.js +102 -0
  616. package/dist/services/observed-bot-union-ids-store.js.map +1 -0
  617. package/dist/services/plugin-registry-store.d.ts +8 -0
  618. package/dist/services/plugin-registry-store.d.ts.map +1 -0
  619. package/dist/services/plugin-registry-store.js +71 -0
  620. package/dist/services/plugin-registry-store.js.map +1 -0
  621. package/dist/services/resumable-session-discovery.d.ts +3 -0
  622. package/dist/services/resumable-session-discovery.d.ts.map +1 -1
  623. package/dist/services/resumable-session-discovery.js +6 -1
  624. package/dist/services/resumable-session-discovery.js.map +1 -1
  625. package/dist/services/sandbox-store.d.ts +12 -0
  626. package/dist/services/sandbox-store.d.ts.map +1 -1
  627. package/dist/services/sandbox-store.js +33 -0
  628. package/dist/services/sandbox-store.js.map +1 -1
  629. package/dist/services/skill-registry-store.d.ts +17 -0
  630. package/dist/services/skill-registry-store.d.ts.map +1 -1
  631. package/dist/services/skill-registry-store.js +322 -8
  632. package/dist/services/skill-registry-store.js.map +1 -1
  633. package/dist/services/structured-bridge-clis.d.ts +29 -0
  634. package/dist/services/structured-bridge-clis.d.ts.map +1 -0
  635. package/dist/services/structured-bridge-clis.js +76 -0
  636. package/dist/services/structured-bridge-clis.js.map +1 -0
  637. package/dist/services/trigger-log-store.d.ts +59 -0
  638. package/dist/services/trigger-log-store.d.ts.map +1 -1
  639. package/dist/services/trigger-log-store.js +81 -10
  640. package/dist/services/trigger-log-store.js.map +1 -1
  641. package/dist/services/usage-ledger.d.ts +4 -1
  642. package/dist/services/usage-ledger.d.ts.map +1 -1
  643. package/dist/services/usage-ledger.js +48 -10
  644. package/dist/services/usage-ledger.js.map +1 -1
  645. package/dist/services/webhook-audit.d.ts +10 -0
  646. package/dist/services/webhook-audit.d.ts.map +1 -0
  647. package/dist/services/webhook-audit.js +116 -0
  648. package/dist/services/webhook-audit.js.map +1 -0
  649. package/dist/services/whiteboard-store.d.ts +6 -1
  650. package/dist/services/whiteboard-store.d.ts.map +1 -1
  651. package/dist/services/whiteboard-store.js +3 -3
  652. package/dist/services/whiteboard-store.js.map +1 -1
  653. package/dist/setup/app-name.d.ts +7 -0
  654. package/dist/setup/app-name.d.ts.map +1 -0
  655. package/dist/setup/app-name.js +10 -0
  656. package/dist/setup/app-name.js.map +1 -0
  657. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  658. package/dist/setup/bot-config-editor.js +7 -0
  659. package/dist/setup/bot-config-editor.js.map +1 -1
  660. package/dist/setup/ensure-tmux.d.ts +26 -12
  661. package/dist/setup/ensure-tmux.d.ts.map +1 -1
  662. package/dist/setup/ensure-tmux.js +85 -18
  663. package/dist/setup/ensure-tmux.js.map +1 -1
  664. package/dist/setup/open-platform-automation.d.ts +89 -0
  665. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  666. package/dist/setup/open-platform-automation.js +277 -22
  667. package/dist/setup/open-platform-automation.js.map +1 -1
  668. package/dist/setup/setup-args.d.ts +6 -1
  669. package/dist/setup/setup-args.d.ts.map +1 -1
  670. package/dist/setup/setup-args.js +79 -10
  671. package/dist/setup/setup-args.js.map +1 -1
  672. package/dist/skills/definitions.d.ts.map +1 -1
  673. package/dist/skills/definitions.js +228 -47
  674. package/dist/skills/definitions.js.map +1 -1
  675. package/dist/skills/injection-mode.d.ts +16 -0
  676. package/dist/skills/injection-mode.d.ts.map +1 -1
  677. package/dist/skills/injection-mode.js +25 -0
  678. package/dist/skills/injection-mode.js.map +1 -1
  679. package/dist/types.d.ts +22 -0
  680. package/dist/types.d.ts.map +1 -1
  681. package/dist/utils/global-install.d.ts +22 -0
  682. package/dist/utils/global-install.d.ts.map +1 -0
  683. package/dist/utils/global-install.js +106 -0
  684. package/dist/utils/global-install.js.map +1 -0
  685. package/dist/utils/install-diagnostics.d.ts +1 -1
  686. package/dist/utils/install-diagnostics.d.ts.map +1 -1
  687. package/dist/utils/install-diagnostics.js +6 -4
  688. package/dist/utils/install-diagnostics.js.map +1 -1
  689. package/dist/utils/install-info.d.ts +2 -0
  690. package/dist/utils/install-info.d.ts.map +1 -1
  691. package/dist/utils/install-info.js +10 -4
  692. package/dist/utils/install-info.js.map +1 -1
  693. package/dist/verified-delivery/acceptance.d.ts +32 -0
  694. package/dist/verified-delivery/acceptance.d.ts.map +1 -0
  695. package/dist/verified-delivery/acceptance.js +149 -0
  696. package/dist/verified-delivery/acceptance.js.map +1 -0
  697. package/dist/verified-delivery/attention.d.ts +128 -0
  698. package/dist/verified-delivery/attention.d.ts.map +1 -0
  699. package/dist/verified-delivery/attention.js +184 -0
  700. package/dist/verified-delivery/attention.js.map +1 -0
  701. package/dist/verified-delivery/envelope.d.ts +91 -0
  702. package/dist/verified-delivery/envelope.d.ts.map +1 -0
  703. package/dist/verified-delivery/envelope.js +173 -0
  704. package/dist/verified-delivery/envelope.js.map +1 -0
  705. package/dist/verified-delivery/goal-board.d.ts +106 -0
  706. package/dist/verified-delivery/goal-board.d.ts.map +1 -0
  707. package/dist/verified-delivery/goal-board.js +223 -0
  708. package/dist/verified-delivery/goal-board.js.map +1 -0
  709. package/dist/verified-delivery/invariants.d.ts +10 -0
  710. package/dist/verified-delivery/invariants.d.ts.map +1 -0
  711. package/dist/verified-delivery/invariants.js +188 -0
  712. package/dist/verified-delivery/invariants.js.map +1 -0
  713. package/dist/verified-delivery/ledger.d.ts +24 -0
  714. package/dist/verified-delivery/ledger.d.ts.map +1 -0
  715. package/dist/verified-delivery/ledger.js +243 -0
  716. package/dist/verified-delivery/ledger.js.map +1 -0
  717. package/dist/verified-delivery/narration.d.ts +66 -0
  718. package/dist/verified-delivery/narration.d.ts.map +1 -0
  719. package/dist/verified-delivery/narration.js +111 -0
  720. package/dist/verified-delivery/narration.js.map +1 -0
  721. package/dist/verified-delivery/reconcile.d.ts +114 -0
  722. package/dist/verified-delivery/reconcile.d.ts.map +1 -0
  723. package/dist/verified-delivery/reconcile.js +224 -0
  724. package/dist/verified-delivery/reconcile.js.map +1 -0
  725. package/dist/verified-delivery/report.d.ts +37 -0
  726. package/dist/verified-delivery/report.d.ts.map +1 -0
  727. package/dist/verified-delivery/report.js +62 -0
  728. package/dist/verified-delivery/report.js.map +1 -0
  729. package/dist/verified-delivery/types.d.ts +291 -0
  730. package/dist/verified-delivery/types.d.ts.map +1 -0
  731. package/dist/verified-delivery/types.js +32 -0
  732. package/dist/verified-delivery/types.js.map +1 -0
  733. package/dist/worker.js +559 -217
  734. package/dist/worker.js.map +1 -1
  735. package/dist/workflows/attempt-resume.d.ts.map +1 -1
  736. package/dist/workflows/attempt-resume.js +1 -1
  737. package/dist/workflows/attempt-resume.js.map +1 -1
  738. package/dist/workflows/definition.d.ts +24 -24
  739. package/dist/workflows/events/payloads.d.ts +24 -24
  740. package/dist/workflows/events/schema.d.ts +366 -366
  741. package/package.json +13 -7
  742. package/dist/dashboard/web/connectors.d.ts +0 -2
  743. package/dist/dashboard/web/connectors.d.ts.map +0 -1
  744. package/dist/dashboard/web/connectors.js +0 -2
  745. package/dist/dashboard/web/connectors.js.map +0 -1
  746. package/dist/dashboard/web/office.d.ts +0 -2
  747. package/dist/dashboard/web/office.d.ts.map +0 -1
  748. package/dist/dashboard/web/office.js +0 -2
  749. package/dist/dashboard/web/office.js.map +0 -1
  750. package/dist/dashboard/web/schedules.d.ts +0 -2
  751. package/dist/dashboard/web/schedules.d.ts.map +0 -1
  752. package/dist/dashboard/web/schedules.js +0 -2
  753. package/dist/dashboard/web/schedules.js.map +0 -1
  754. package/dist/dashboard/web/settings.d.ts +0 -2
  755. package/dist/dashboard/web/settings.d.ts.map +0 -1
  756. package/dist/dashboard/web/settings.js +0 -2
  757. package/dist/dashboard/web/settings.js.map +0 -1
  758. package/dist/dashboard/web/skills.d.ts +0 -2
  759. package/dist/dashboard/web/skills.d.ts.map +0 -1
  760. package/dist/dashboard/web/skills.js +0 -2
  761. package/dist/dashboard/web/skills.js.map +0 -1
  762. package/dist/dashboard/web/skin-intro.d.ts +0 -4
  763. package/dist/dashboard/web/skin-intro.d.ts.map +0 -1
  764. package/dist/dashboard/web/skin-intro.js +0 -49
  765. package/dist/dashboard/web/skin-intro.js.map +0 -1
  766. package/dist/dashboard/web/v3.d.ts +0 -3
  767. package/dist/dashboard/web/v3.d.ts.map +0 -1
  768. package/dist/dashboard/web/v3.js +0 -539
  769. package/dist/dashboard/web/v3.js.map +0 -1
  770. package/dist/dashboard/web/whiteboards.d.ts +0 -2
  771. package/dist/dashboard/web/whiteboards.d.ts.map +0 -1
  772. package/dist/dashboard/web/whiteboards.js +0 -2
  773. package/dist/dashboard/web/whiteboards.js.map +0 -1
  774. package/dist/dashboard-web/chunks/bot-defaults-page-OCIHPGEU.js +0 -438
  775. package/dist/dashboard-web/chunks/chunk-3N2PPQVD.js +0 -1
  776. package/dist/dashboard-web/chunks/chunk-3UJYRR2Q.js +0 -37
  777. package/dist/dashboard-web/chunks/chunk-5E3MJJL4.js +0 -1
  778. package/dist/dashboard-web/chunks/chunk-JTSE5VP6.js +0 -54
  779. package/dist/dashboard-web/chunks/chunk-QW54DWU3.js +0 -325
  780. package/dist/dashboard-web/chunks/connectors-IGETYWCP.js +0 -1
  781. package/dist/dashboard-web/chunks/groups-page-MYBS4ZYJ.js +0 -207
  782. package/dist/dashboard-web/chunks/insights-page-UPA32V2S.js +0 -309
  783. package/dist/dashboard-web/chunks/monitoring-page-7T3BESZ2.js +0 -1
  784. package/dist/dashboard-web/chunks/office-page-6DXYOG55.js +0 -1
  785. package/dist/dashboard-web/chunks/overview-page-LJSBCQW4.js +0 -1
  786. package/dist/dashboard-web/chunks/roles-page-ESURTVQH.js +0 -98
  787. package/dist/dashboard-web/chunks/schedules-LML2ISOT.js +0 -1
  788. package/dist/dashboard-web/chunks/sessions-YB73XOTU.js +0 -1
  789. package/dist/dashboard-web/chunks/sessions-page-MCO5QR7Z.js +0 -1
  790. package/dist/dashboard-web/chunks/settings-page-OSDKNVS3.js +0 -2
  791. package/dist/dashboard-web/chunks/skills-page-PXBZJ6P6.js +0 -2
  792. package/dist/dashboard-web/chunks/team-federation-page-TTPVHFPX.js +0 -10
  793. package/dist/dashboard-web/chunks/v3-page-FVPUL665.js +0 -149
  794. package/dist/dashboard-web/chunks/whiteboards-page-HLCTYSSV.js +0 -1
  795. package/dist/dashboard-web/chunks/workflows-FCPM4S4D.js +0 -184
  796. package/dist/dashboard-web/skins/bluearchive-hero.webp +0 -0
  797. package/dist/dashboard-web/skins/dragonball-goku.webp +0 -0
  798. package/dist/dashboard-web/skins/dragonball-wukong.webp +0 -0
  799. package/dist/dashboard-web/skins/genshin-breeze.webp +0 -0
  800. package/dist/dashboard-web/skins/ikun-hero.webp +0 -0
  801. package/dist/dashboard-web/skins/prts-priestess.webp +0 -0
  802. package/dist/dashboard-web/skins/zzz-hero.webp +0 -0
  803. package/dist/dashboard-web/skins/zzz-pattern.svg +0 -25
package/README.en.md CHANGED
@@ -15,14 +15,14 @@
15
15
  <a href="#design-philosophy">Design</a> &middot;
16
16
  <a href="#key-advantages">Advantages</a> &middot;
17
17
  <a href="#5-minute-setup">Quick Start</a> &middot;
18
- <a href="https://github.com/deepcoldy/botmux/tree/master/docs-site/docs/en"><b>📖 Docs</b></a>
18
+ <a href="https://deepcoldy.github.io/botmux/en/"><b>📖 Docs</b></a>
19
19
  </p>
20
20
 
21
21
  [中文](README.md) | English
22
22
 
23
23
  **Plug any AI coding CLI into Feishu/Lark — every DM, group or topic gets its own CLI session, with live-streaming cards, a web terminal, and zero glue code.**
24
24
 
25
- > 📖 **Full docs** (commands / config / best practices / troubleshooting): **<https://github.com/deepcoldy/botmux/tree/master/docs-site/docs/en>** — this README only covers why and how to get started fast.
25
+ > 📖 **Full docs** (commands / config / best practices / troubleshooting): **<https://deepcoldy.github.io/botmux/en/>** — this README only covers why and how to get started fast.
26
26
 
27
27
  | Lark Streaming Cards | Web Terminal | tmux Session Management | Multi-Bot Collaboration |
28
28
  |:-:|:-:|:-:|:-:|
@@ -40,7 +40,7 @@
40
40
 
41
41
  ### Design Philosophy
42
42
 
43
- Core philosophy: **Bridge CLIs, don't rebuild them**. botmux doesn't reimplement Agent capabilities — it bridges existing AI coding CLIs (Claude Code, Codex, Cursor, Gemini, OpenCode, Antigravity, GitHub Copilot, Kimi Code) directly. Memory, context management, tool use, permission systems — these capabilities are evolving rapidly within the CLIs themselves. botmux rides on top of that evolution rather than rebuilding in parallel. Every CLI upgrade benefits botmux automatically with zero adaptation.
43
+ Core philosophy: **Bridge CLIs, don't rebuild them**. botmux doesn't reimplement Agent capabilities — it bridges existing AI coding CLIs (Claude Code, Codex, Cursor, Gemini, OpenCode, Antigravity, GitHub Copilot, Kimi Code, Grok Build, Kiro) directly. Memory, context management, tool use, permission systems — these capabilities are evolving rapidly within the CLIs themselves. botmux rides on top of that evolution rather than rebuilding in parallel. Every CLI upgrade benefits botmux automatically with zero adaptation.
44
44
 
45
45
  ### Key Advantages
46
46
 
@@ -52,7 +52,7 @@ Compared to OpenClaw-style approaches built on Agent SDKs:
52
52
  | CLI Capabilities | Full runtime (hooks, memory, plan mode, skills, `/` commands) | SDK API subset, missing features must be reimplemented |
53
53
  | CLI Upgrades | Zero-adaptation automatic benefit | Must track SDK version changes |
54
54
  | Memory / Context | Reuses CLI's built-in memory system, improves as the CLI evolves | Must build custom memory system, duplicating CLI-native capabilities |
55
- | Multi-CLI Support | 8 CLIs, switch with one config (Claude Code / Codex / Cursor / Gemini / OpenCode / Antigravity / GitHub Copilot / Kimi Code) | Tied to a single SDK, cannot switch CLIs |
55
+ | Multi-CLI Support | Many CLIs, switch with one config (Claude Code / Codex / Cursor / Gemini / OpenCode / Antigravity / GitHub Copilot / Kimi Code / Grok Build / Kiro, …) | Tied to a single SDK, cannot switch CLIs |
56
56
  | Web Terminal | Interactive full terminal, mobile shortcut toolbar, phone/desktop/Lark tri-screen sync | Usually web chat UI or read-only output |
57
57
  | Multi-Bot Collaboration | Multiple bots in same group via @mention routing, isolated processes, different CLIs sparring | Usually single bot |
58
58
  | Multi-Topic Collaboration | A lead bot auto-splits the task, opens multiple topics, and dispatches several bots to work in parallel (coder + reviewer), with a Lark task list as the shared progress board | Usually manual one-by-one assignment, no unified progress board |
@@ -64,7 +64,7 @@ Compared to OpenClaw-style approaches built on Agent SDKs:
64
64
  ## Prerequisites
65
65
 
66
66
  - **Node.js** >= 22
67
- - **AI coding CLI / local agent app** installed and authenticated (`claude`, `codex`, `coco`, `cursor-agent`, `gemini`, `genius`, `opencode`, `hermes`, `seed` (Seed CLI, a Claude Code fork), `relay` (Relay CLI, the new release of Seed), `pi`, `omp` (oh-my-pi, a Pi fork), `copilot` (GitHub Copilot CLI), `traex` (TRAE CLI), `mircli` (Mir CLI), `agy` (Antigravity), or `kimi` (Kimi Code) in PATH)
67
+ - **AI coding CLI / local agent app** installed and authenticated (`claude`, `codex`, `coco`, `cursor-agent`, `gemini`, `genius`, `opencode`, `hermes`, `seed` (Seed CLI, a Claude Code fork), `relay` (Relay CLI, the new release of Seed), `pi`, `omp` (oh-my-pi, a Pi fork), `copilot` (GitHub Copilot CLI), `traex` (TRAE CLI), `mircli` (Mir CLI), `agy` (Antigravity), `kimi` (Kimi Code), `grok` (Grok Build), or `kiro-cli` (Kiro) in PATH)
68
68
  - **CoCo requires `0.120.32+`**: type-ahead (sending a new message while a turn is still running, parked in CoCo's own message queue) relies on 0.120.32+ behavior; earlier versions may drop or serialize input while busy — upgrade before use
69
69
  - **tmux** >= 3.x (optional — auto-enabled when installed for persistent CLI sessions)
70
70
  - **CJK fonts** (only needed for screenshot rendering of Chinese text / emoji):
@@ -74,15 +74,18 @@ Compared to OpenClaw-style approaches built on Agent SDKs:
74
74
 
75
75
  ## 5-Minute Setup
76
76
 
77
- > 💡 **TL;DR**: `npm i -g botmux` → `botmux setup` and **scan two QR codes** to get a working bot → `botmux start`. The 1st scan creates the app and saves the AppID/AppSecret (event subscriptions + bot capability pre-configured); the 2nd scan lets botmux's built-in Feishu Web login **import permissions, configure the redirect URL, and create + submit a publish version automatically**. The entire Open Platform config (create app / permissions / redirect / publish) is handled by setup; pass `--no-open-platform-auto` to skip the second auto-config step and use the manual steps folded at the end.
77
+ > 💡 **TL;DR**: `npm i -g botmux` → `botmux setup`; for Feishu tenants, **one QR scan** creates a working bot → `botmux start`. The same Web session names the app (`botmux-N` by default, customizable), creates it, reads AppID/AppSecret, imports permissions, configures the redirect URL, and creates + submits a publish version. Pass `--no-open-platform-auto` to skip permission/publish automation after app creation.
78
78
 
79
79
  ### 1. Install botmux
80
80
 
81
81
  ```bash
82
82
  npm install -g botmux
83
+ # or: pnpm add -g botmux
83
84
  ```
84
85
 
85
- > Requires **Node.js ≥ 22**, with at least one AI coding CLI installed and authenticated (`claude` / `codex` / `cursor-agent` / `gemini` / `opencode` / `coco` / `agy` / `kimi` on your PATH). Installing **tmux** too is recommended (enables session persistence automatically).
86
+ Manual and scheduled updates keep using the npm or pnpm global location that owns the running botmux install. Unknown install layouts are never silently updated with npm.
87
+
88
+ > Requires **Node.js ≥ 22**, with at least one AI coding CLI installed and authenticated (`claude` / `codex` / `cursor-agent` / `gemini` / `opencode` / `coco` / `agy` / `kimi` / `grok` / `kiro-cli` on your PATH). Installing **tmux** too is recommended (enables session persistence automatically).
86
89
 
87
90
  ### 2. Create the App & Configure (`botmux setup`)
88
91
 
@@ -90,7 +93,7 @@ Run `botmux setup` — every choice is an interactive picker (↑/↓ to move, t
90
93
 
91
94
  1. **Action**: a fresh install goes straight into the create flow; with an existing config, first pick "add / reconfigure / edit / remove bot".
92
95
  2. **App source** — pick one of three:
93
- - **Scan to create a new app (recommended)**: scan with the Lark mobile app and a PersonalAgent app is created with AppID/AppSecret persisted automatically, **with event subscriptions + bot capability pre-configured** no manual browser navigation. Uses the official `@larksuiteoapi/node-sdk` device flow.
96
+ - **One-scan app creation (recommended)**: enter a bot name or leave it blank for `botmux-0`, `botmux-1`, etc. After Feishu Web QR login, botmux uploads its default icon, creates a custom app, reads AppID/AppSecret, then reuses that session for permissions and publishing. If Web creation is unavailable or the account is on Lark international, the user can explicitly choose the official `@larksuiteoapi/node-sdk` compatibility mode; it may require an additional scan and the platform chooses the app name.
94
97
  - **Pick an existing app**: reuse (or QR-login to get) a Feishu web session, list the apps you previously created on the Open Platform, and have the **AppID/AppSecret fetched automatically** — no digging through the console when re-configuring on a new machine (Feishu tenants only).
95
98
  - **Enter AppID/Secret manually** — see "Create the app manually" folded below.
96
99
  3. **Pick the CLI**: choose the CLI to bridge (searchable — type `cla` to filter Claude).
@@ -98,9 +101,9 @@ Run `botmux setup` — every choice is an interactive picker (↑/↓ to move, t
98
101
  - **Fixed default dir (recommended)**: new topics start straight in the given directory with **no card** (persisted as `defaultWorkingDir`; change later via `/config` or `botmux setup edit`). Pick this if you want the bot to just work in one directory.
99
102
  - **Repo-select card**: each new topic pops a card listing scanned git repos to choose from — good when you hop between repos. The follow-up question asks for the **repo scan root(s)** — usually the **parent directory** of your git projects (e.g. `~/projects`, comma-separated for multiple); the card scans **downward** for git repos (up to 3 levels). Avoid `~` (too many folders to traverse).
100
103
 
101
- Then comes the **2nd scan**: botmux's built-in Feishu Web login automatically imports permissions, configures the `http://127.0.0.1:9768/callback` redirect URL, and creates + submits a publish version. On failure it falls back and prints the manual steps (folded below) without affecting the config already written; importing only part of the permissions still counts as success add the rest later on the Open Platform.
104
+ After app creation, setup reuses the same Web session to import permissions, configure `http://127.0.0.1:9768/callback`, and create + submit a publish version, so the Feishu primary path **has no second QR code**. Another scan is possible only after the user explicitly selects SDK compatibility mode. Automation failures still print the manual steps without affecting the saved bot config.
102
105
 
103
- > ✅ **Both Feishu (feishu.cn) and Lark international (larksuite.com) tenants are supported.** Scan-to-create auto-detects the tenant brand (China / international) and remembers it no manual choice needed; the manual paste path asks once. Each bot connects to its own brand's domain, so one machine can run Feishu and Lark bots side by side, with login credentials isolated per app.
106
+ > ✅ **Both Feishu (feishu.cn) and Lark international (larksuite.com) tenants are supported.** Feishu uses the one-scan Web flow; explicitly selected SDK compatibility mode auto-detects and remembers Lark international tenants. The manual paste path asks once. Each bot connects to its own brand's domain, so one machine can run Feishu and Lark bots side by side, with login credentials isolated per app.
104
107
 
105
108
  At the end, setup validates credentials with a `tenant_access_token` call (only writing `bots.json` on success) and writes the full scope JSON to `~/.botmux/lark-scopes.json` for reference.
106
109
 
@@ -109,6 +112,11 @@ At the end, setup validates credentials with a `tenant_access_token` call (only
109
112
 
110
113
  ```bash
111
114
  botmux setup list --json # list bots (secret masked)
115
+ botmux setup add --create-app \
116
+ --app-name "Engineering Assistant" \
117
+ --allowed-users alice@example.com # first use scans once; later valid sessions skip it
118
+ botmux setup add --create-app --switch-account \
119
+ --allowed-users alice@example.com # explicitly rescan and replace the local session
112
120
  botmux setup add \
113
121
  --app-id cli_xxx --app-secret xxx \
114
122
  --allowed-users alice@example.com \
@@ -120,7 +128,8 @@ botmux setup help # full flag reference
120
128
  ```
121
129
 
122
130
  - `--working-dir` is the repo-select card's scan root; `--default-working-dir` is the fixed default dir (new topics start there directly, no card) — the same two modes as the TUI question.
123
- - `--json` prints machine-readable results (with `ok` / `error`); Open Platform auto-config is skipped by default opt in with `--open-platform-auto` (requires QR scan).
131
+ - `--create-app` reuses a valid session and reports the confirmed account/tenant on stderr; the first use scans once. `--switch-account` explicitly rescans and replaces the local session. `--json` never opens an unexpected QR when no valid cache exists unless `--switch-account` is passed. On success it returns the frozen `appName` and `appId`; a post-creation failure returns `partial`, `appId`, and an `--open-platform-auto` recovery command without creating another app.
132
+ - Existing-credential mode skips Open Platform automation unless `--open-platform-auto` is passed. `--compatibility-mode` must be selected explicitly, may need another scan, and does not support `--app-name`.
124
133
  - If you previously scripted setup by piping numbered answers into the TUI, migrate to these subcommands: whenever the question sequence changes (this release adds the working-dir mode question), piped answers silently shift.
125
134
 
126
135
  </details>
@@ -150,7 +159,7 @@ botmux autostart enable
150
159
  ```
151
160
 
152
161
  <details>
153
- <summary><b>Manual Open Platform config: create app / permissions / redirect / publish (fallback)</b> —— handled automatically by botmux setup during the 2nd scan; expand only if auto-config failed or you want to verify manually</summary>
162
+ <summary><b>Manual Open Platform config: create app / permissions / redirect / publish (fallback)</b> —— handled automatically by botmux setup with the same login session; expand only if auto-config failed or you want to verify manually</summary>
154
163
 
155
164
  <br>
156
165
 
@@ -188,7 +197,7 @@ base64 -w0 < ~/.botmux/lark-scopes.json | awk 'BEGIN{printf "\033]52;c;"}{printf
188
197
 
189
198
  <br>
190
199
 
191
- PersonalAgent apps come with event subscription + bot capability configured by default, so normally you don't touch this. If the bot **receives no messages at all** (not even DMs) after following the steps above, verify these two:
200
+ botmux enables the bot capability, long-connection event mode, and baseline event subscriptions automatically, so normally you don't touch this. If the bot **receives no messages at all** (not even DMs) after following the steps above, verify these two:
192
201
 
193
202
  - **Event subscription**: Open Platform → your app → Events & Callbacks → should subscribe to `im.message.receive_v1` + `card.action.trigger` (subscribed by default; add manually if missing). The delivery method must be "Receive events via long connection" (WebSocket), with the botmux daemon running.
194
203
  - **Bot capability**: Open Platform → your app → Features → Bot should be enabled (on by default); name/avatar are editable.
@@ -223,7 +232,7 @@ On mobile/tablet, a floating shortcut toolbar provides Esc, Ctrl+C, Tab, arrow k
223
232
 
224
233
  ### Multi-Bot Collaboration
225
234
 
226
- Run multiple Lark bots on a single machine, each mapped to a different CLI. In the same group chat, messages are routed via @mention — each bot gets its own isolated CLI process. With a single bot in the group, it responds automatically without @. In a regular (non-topic) group, `@<bot1> @<bot2> /t xxx` spawns one independent thread per mentioned bot anchored at the same message. Send `@<bot1> @<bot2> /introduce` once so they register each other's open_id; afterwards each bot can explicitly @-mention the others from within its own session (commands: [📖 Docs · Slash Commands](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/en/slash-commands.md)).
235
+ Run multiple Lark bots on a single machine, each mapped to a different CLI. In the same group chat, messages are routed via @mention — each bot gets its own isolated CLI process. With a single bot in the group, it responds automatically without @. In a regular (non-topic) group, `@<bot1> @<bot2> /t xxx` spawns one independent thread per mentioned bot anchored at the same message. Send `@<bot1> @<bot2> /introduce` once so they register each other's open_id; afterwards each bot can explicitly @-mention the others from within its own session (commands: [📖 Docs · Slash Commands](https://deepcoldy.github.io/botmux/en/slash-commands)).
227
236
 
228
237
  ### Multi-Topic Collaboration
229
238
 
@@ -311,7 +320,7 @@ ISO timestamp (`2026-05-01T10:00`).
311
320
  When a CLI spawns inside a botmux session it automatically gets
312
321
  `~/.botmux/bin` on PATH plus a set of ready-to-use Skills:
313
322
 
314
- - `botmux send` — send a message to the current thread (text, images, files, @mention)
323
+ - `botmux send` — send a message to the current thread (text, images, files, interactive card JSON, @mention)
315
324
  - `botmux history` — fetch session history (topic groups → in-thread, regular groups → whole chat)
316
325
  - `botmux quoted <message_id>` — when the user @ed the bot via Lark's quote-reply UI, fetch the quoted message on demand
317
326
  - `botmux bots list` — discover bots + their `open_id`s
@@ -330,6 +339,7 @@ Gemini / OpenCode / Antigravity / GitHub Copilot), with no MCP protocol support
330
339
  > `botmux dashboard` issues a one-time-token URL — manage every daemon/bot from the browser.
331
340
 
332
341
  - One-click locate back to the Feishu thread / open Web Terminal / multi-select batch close
342
+ - Add a bot with the same one-scan Feishu flow: optional stable name, AI CLI and working-directory choices, fail-closed administrator confirmation, and an explicit compatibility fallback
333
343
  - Create a new group with auto owner-transfer + @-mention notification
334
344
  - Disband or leave a chat (associated sessions auto-closed)
335
345
  - **Session Insights** (owner-only, read-only): parse each session's transcript to view action spans / work timeline / context curve / failure aggregates + diagnostic suggestions; send `/insight` in chat for the current session's summary card
@@ -387,16 +397,16 @@ Notes:
387
397
 
388
398
  The full reference — commands, config, best practices, troubleshooting — lives in the docs site; not duplicated here —
389
399
 
390
- ### 👉 https://github.com/deepcoldy/botmux/tree/master/docs-site/docs/en
400
+ ### 👉 https://deepcoldy.github.io/botmux/en/
391
401
 
392
402
  | Topic | Docs |
393
403
  |-------|------|
394
- | Slash commands / CLI commands / agent-facing subcommands | [Commands](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/en/slash-commands.md) |
395
- | `bots.json` fields / env vars / file locations | [Configuration](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/en/bots-json.md) |
396
- | Multi-CLI adapters (incl. wrapper / gateway integration) | [Adapters](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/en/adapters.md) |
397
- | Scenario-based best practices (Oncall / alerting-ops / solo dev / team) | [Best Practices](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/en/best-practices.md) |
398
- | Common pitfalls / FAQ | [Pitfalls](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/en/pitfalls.md) · [FAQ](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/en/faq.md) |
399
- | Features: scheduled tasks / Oncall / Dashboard / multi-bot / session relay | [Schedule](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/en/schedule.md) · [Oncall](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/en/oncall.md) · [Dashboard](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/en/dashboard.md) · [Multi-bot](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/en/multi-bot.mdx) · [Relay](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/en/relay.md) |
404
+ | Slash commands / CLI commands / agent-facing subcommands | [Commands](https://deepcoldy.github.io/botmux/en/slash-commands) |
405
+ | `bots.json` fields / env vars / file locations | [Configuration](https://deepcoldy.github.io/botmux/en/bots-json) |
406
+ | Multi-CLI adapters (incl. wrapper / gateway integration) | [Adapters](https://deepcoldy.github.io/botmux/en/adapters) |
407
+ | Scenario-based best practices (Oncall / alerting-ops / solo dev / team) | [Best Practices](https://deepcoldy.github.io/botmux/en/best-practices) |
408
+ | Common pitfalls / FAQ | [Pitfalls](https://deepcoldy.github.io/botmux/en/pitfalls) · [FAQ](https://deepcoldy.github.io/botmux/en/faq) |
409
+ | Features: scheduled tasks / Oncall / Dashboard / multi-bot / session relay | [Schedule](https://deepcoldy.github.io/botmux/en/schedule) · [Oncall](https://deepcoldy.github.io/botmux/en/oncall) · [Dashboard](https://deepcoldy.github.io/botmux/en/dashboard) · [Multi-bot](https://deepcoldy.github.io/botmux/en/multi-bot) · [Relay](https://deepcoldy.github.io/botmux/en/relay) |
400
410
 
401
411
  ## Contributing
402
412
 
package/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
  </p>
13
13
 
14
14
  <p align="center">
15
- <a href="#设计理念">设计理念</a> · <a href="#核心优势">核心优势</a> · <a href="#5-分钟快速接入">快速接入</a> · <a href="https://github.com/deepcoldy/botmux/tree/master/docs-site/docs/zh"><b>📖 文档</b></a>
15
+ <a href="#设计理念">设计理念</a> · <a href="#核心优势">核心优势</a> · <a href="#5-分钟快速接入">快速接入</a> · <a href="https://deepcoldy.github.io/botmux/"><b>📖 文档</b></a> · <a href="https://bytedance.larkoffice.com/wiki/UBOXwH01CixfxfkqxUpcKgvQnsg"><b>✨ 效果展示</b></a>
16
16
  </p>
17
17
 
18
18
  <p align="center">
@@ -21,9 +21,11 @@
21
21
 
22
22
  ---
23
23
 
24
- **飞书 + AI 编程 CLI——私聊 / 群聊 / 话题,每个会话一个独立 CLI 进程,实时流式回传。** Daemon 监听飞书消息,为每个新会话自动启动独立 CLI 进程(Claude Code / Codex / Cursor / Gemini / OpenCode / Antigravity / GitHub Copilot / Kimi Code),提供实时流式卡片和可交互 Web 终端。
24
+ **飞书 + AI 编程 CLI——私聊 / 群聊 / 话题,每个会话一个独立 CLI 进程,实时流式回传。** Daemon 监听飞书消息,为每个新会话自动启动独立 CLI 进程(Claude Code / Codex / Cursor / Gemini / OpenCode / Antigravity / GitHub Copilot / Kimi Code / Grok Build / Kiro),提供实时流式卡片和可交互 Web 终端。
25
25
 
26
- > 📖 **完整文档**(命令 / 配置 / 最佳实践 / 排错):**<https://github.com/deepcoldy/botmux/tree/master/docs-site/docs/zh>** ——本 README 只讲为什么用它和怎么快速上手。
26
+ > **先看效果**:[**《5 分钟创建一个真正好用的飞书助理》**](https://bytedance.larkoffice.com/wiki/UBOXwH01CixfxfkqxUpcKgvQnsg) —— 飞书图文 + 视频演示:AI 消息提醒 / 多端同步跨端操作 / 多 Bot 协作 / 多话题并行编排 / 语音总结 + 飞书会议 / Oncall 与个人替身。
27
+
28
+ > 📖 **完整文档**(命令 / 配置 / 最佳实践 / 排错):**<https://deepcoldy.github.io/botmux/>** ——本 README 只讲为什么用它和怎么快速上手。
27
29
 
28
30
  ## 演示
29
31
 
@@ -45,7 +47,7 @@
45
47
 
46
48
  **不做 SDK wrapper,直接桥接 CLI。**
47
49
 
48
- botmux 不重新实现 Agent 能力,而是直接桥接已有的 AI 编程 CLI(Claude Code、Codex、Cursor、Gemini、OpenCode、Antigravity、GitHub Copilot)。记忆、上下文管理、工具调用、权限体系——这些能力 CLI 本身都在快速迭代,botmux 选择站在这个进化之上,而不是平行重造一套。CLI 的每次升级,botmux 零适配自动受益。
50
+ botmux 不重新实现 Agent 能力,而是直接桥接已有的 AI 编程 CLI(Claude Code、Codex、Cursor、Gemini、OpenCode、Antigravity、GitHub Copilot、Kimi Code、Kiro)。记忆、上下文管理、工具调用、权限体系——这些能力 CLI 本身都在快速迭代,botmux 选择站在这个进化之上,而不是平行重造一套。CLI 的每次升级,botmux 零适配自动受益。
49
51
 
50
52
  ### 核心优势
51
53
 
@@ -57,7 +59,7 @@ botmux 不重新实现 Agent 能力,而是直接桥接已有的 AI 编程 CLI
57
59
  | CLI 能力 | 完整运行时(hooks、memory、plan mode、Skill、`/` 命令) | SDK API 子集,需手动实现缺失功能 |
58
60
  | CLI 升级 | 零适配自动受益 | 需要跟进 SDK 版本变更 |
59
61
  | 记忆 / 上下文 | 直接复用 CLI 内建的记忆系统,随 CLI 迭代自动增强 | 需自建记忆系统,与 CLI 原生能力重复 |
60
- | 多 CLI 支持 | 8 CLI 一键切换(Claude Code / Codex / Cursor / Gemini / OpenCode / Antigravity / GitHub Copilot / Kimi Code | 绑定单一 SDK,无法切换 CLI |
62
+ | 多 CLI 支持 | 多种 CLI 一键切换(Claude Code / Codex / Cursor / Gemini / OpenCode / Antigravity / GitHub Copilot / Kimi Code / Grok Build / Kiro 等) | 绑定单一 SDK,无法切换 CLI |
61
63
  | Web 终端 | 可交互的完整终端,移动端快捷键工具栏,手机/电脑/飞书三端同步 | 通常仅 Web 聊天界面或只读输出 |
62
64
  | 多机器人协作 | 多 bot 同群 @mention 路由,独立进程隔离,不同 CLI 赛博斗蛐蛐 | 通常单机器人 |
63
65
  | 多话题协作模式 | 主 bot 自动拆任务、开多话题、派多 bot 并行协作(coder+reviewer),飞书任务清单当共享进度板 | 通常需人工逐个分派、无统一进度板 |
@@ -92,7 +94,7 @@ botmux 可以管理 CLI 无关的自定义 Skill Registry,并按 bot 配置在
92
94
 
93
95
  ### 多机器人协作
94
96
 
95
- 同一台机器上可运行多个飞书机器人,每个机器人可对应不同的 CLI。同一群聊中通过 @mention 路由消息,仅有一个机器人时无需 @ 自动响应;多机器人时 `@<bot1> @<bot2> /t xxx` 可让每个被 @ 的机器人在同一条消息上各自独立开新话题。先发一次 `@<bot1> @<bot2> /introduce` 让它们互相登记 open_id,之后各 bot 就能在自己的会话里显式 @mention 对方协作(命令详见 [📖 文档 · 斜杠命令](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/zh/slash-commands.md))。
97
+ 同一台机器上可运行多个飞书机器人,每个机器人可对应不同的 CLI。同一群聊中通过 @mention 路由消息,仅有一个机器人时无需 @ 自动响应;多机器人时 `@<bot1> @<bot2> /t xxx` 可让每个被 @ 的机器人在同一条消息上各自独立开新话题。先发一次 `@<bot1> @<bot2> /introduce` 让它们互相登记 open_id,之后各 bot 就能在自己的会话里显式 @mention 对方协作(命令详见 [📖 文档 · 斜杠命令](https://deepcoldy.github.io/botmux/slash-commands))。
96
98
 
97
99
  ### 多话题协作模式
98
100
 
@@ -176,7 +178,7 @@ BACKEND_TYPE=pty botmux start
176
178
 
177
179
  CLI 进入 botmux 会话时自动获得 `~/.botmux/bin` 在 PATH 中,以及一组开箱即用的 Skill:
178
180
 
179
- - `botmux send` — 向当前话题发消息(支持文本、图片、文件、@mention)
181
+ - `botmux send` — 向当前话题发消息(支持文本、图片、文件、interactive 卡片 JSON、@mention)
180
182
  - `botmux history` — 读取当前会话历史消息(话题/thread 会话拉话题内,普通群 chat-scope 会话拉整群)
181
183
  - `botmux quoted <message_id>` — 用户用引用 UI @ 机器人时,按需读取被引用的那条消息
182
184
  - `botmux bots list` — 查询当前群聊的机器人及 open_id
@@ -189,6 +191,7 @@ CLI 进入 botmux 会话时自动获得 `~/.botmux/bin` 在 PATH 中,以及一
189
191
  > 命令行 `botmux dashboard` 出一次性 token URL,浏览器里跨所有 daemon/机器人管控
190
192
 
191
193
  - 一键定位回飞书话题 / 跳 Web 终端 / 多选批量关闭会话
194
+ - 添加机器人对齐 Feishu 单次扫码主路径:名称可选且全程冻结,支持 AI CLI / 工作目录选择、管理员 fail-closed 补填与显式兼容模式
192
195
  - 拉新群、自动转让群主、@ 提醒
193
196
  - 解散群聊、bot 退群(关联会话自动清理)
194
197
  - **会话洞察**(owner-only,只读):解析各会话 transcript,看动作 span / 工作时序 / 上下文曲线 / 失败聚合 + 诊断建议;聊天里发 `/insight` 可取当前会话摘要卡
@@ -205,7 +208,7 @@ CLI 进入 botmux 会话时自动获得 `~/.botmux/bin` 在 PATH 中,以及一
205
208
  ## 前置要求
206
209
 
207
210
  - **Node.js** >= 22
208
- - **AI 编程 CLI / 本地 Agent 应用** 已安装并完成认证(`claude`、`codex`、`coco`、`cursor-agent`、`gemini`、`genius`、`opencode`、`hermes`、`seed`(Seed CLI,Claude Code 衍生)、`relay`(Relay CLI,Seed 新版)、`pi`、`omp`(oh-my-pi,Pi 衍生)、`copilot`(GitHub Copilot CLI)、`traex`(TRAE CLI)、`mircli`(Mir CLI)、`agy`(Antigravity)或 `kimi`(Kimi Code)在 PATH 中)
211
+ - **AI 编程 CLI / 本地 Agent 应用** 已安装并完成认证(`claude`、`codex`、`coco`、`cursor-agent`、`gemini`、`genius`、`opencode`、`hermes`、`seed`(Seed CLI,Claude Code 衍生)、`relay`(Relay CLI,Seed 新版)、`pi`、`omp`(oh-my-pi,Pi 衍生)、`copilot`(GitHub Copilot CLI)、`traex`(TRAE CLI)、`mircli`(Mir CLI)、`agy`(Antigravity)、`kimi`(Kimi Code)、`grok`(Grok Build)或 `kiro-cli`(Kiro)在 PATH 中)
209
212
  - **CoCo 最低版本 `0.120.32`**:type-ahead(会话忙时即可发新消息,由 CoCo 自己的消息队列接住)依赖 0.120.32+ 的行为;更早版本忙时输入可能丢失或串行,请升级后再用
210
213
  - **tmux** >= 3.x(可选,安装后自动启用会话常驻)
211
214
  - **CJK 字体**(用于截图渲染中文/emoji):
@@ -215,15 +218,18 @@ CLI 进入 botmux 会话时自动获得 `~/.botmux/bin` 在 PATH 中,以及一
215
218
 
216
219
  ## 5 分钟快速接入
217
220
 
218
- > 💡 **TL;DR**:`npm i -g botmux` → `botmux setup`,**扫两次码**就能建好一个可用机器人 → `botmux start`。第 1 次扫码建应用、拿到 AppID/AppSecret(事件订阅 + bot 能力默认已配好);第 2 次扫码让 botmux 内置的飞书 Web 登录**自动导入权限、配置重定向 URL、创建并提交发布版本**。整个开放平台配置(建应用 / 权限 / 重定向 / 发版)都已由 setup 默认完成;加 `--no-open-platform-auto` 可跳过第二次自动配置、改走文末折叠的手动步骤。
221
+ > 💡 **TL;DR**:`npm i -g botmux` → `botmux setup`,飞书租户**扫一次码**就能建好一个可用机器人 → `botmux start`。这次扫码拿到的 Web 登录态会连续完成:按 `botmux-N`(可自定义)命名并创建应用、读取 AppID/AppSecret、导入权限、配置重定向 URL、创建并提交发布版本。整个开放平台配置都由 setup 默认完成;加 `--no-open-platform-auto` 可跳过应用创建后的权限/发版自动配置。
219
222
 
220
223
  ### 1. 安装 botmux
221
224
 
222
225
  ```bash
223
226
  npm install -g botmux
227
+ # 或:pnpm add -g botmux
224
228
  ```
225
229
 
226
- > 要求 **Node.js 22**,且本地已装好并登录至少一种 AI 编程 CLI(`claude` / `codex` / `cursor-agent` / `gemini` / `opencode` / `coco` / `agy` 等在 PATH 中)。推荐顺手装 **tmux**(装了自动启用会话常驻)。
230
+ botmux 的手动/定时更新会识别当前全局安装归属,并继续使用同一个 npm pnpm 安装位置;无法安全识别的安装方式不会自动回退到 npm。
231
+
232
+ > 要求 **Node.js ≥ 22**,且本地已装好并登录至少一种 AI 编程 CLI(`claude` / `codex` / `cursor-agent` / `gemini` / `opencode` / `coco` / `agy` / `grok` / `kiro-cli` 等在 PATH 中)。推荐顺手装 **tmux**(装了自动启用会话常驻)。
227
233
 
228
234
  ### 2. 创建应用并配置(`botmux setup`)
229
235
 
@@ -231,7 +237,7 @@ npm install -g botmux
231
237
 
232
238
  1. **操作**:首次安装直接进入创建流程;已有配置时先选「添加新机器人 / 重新配置 / 编辑现有机器人 / 删除机器人」。
233
239
  2. **飞书应用来源**:三选一——
234
- - **扫码创建新应用(推荐)**:飞书扫码后自动建出 PersonalAgent 应用并落盘 AppID/AppSecret,**事件订阅 + bot 能力默认已配好**,无需手动浏览器创建。底层走 `@larksuiteoapi/node-sdk` 官方 device flow。
240
+ - **一次扫码创建新应用(推荐)**:可填写机器人名称;留空自动使用 `botmux-0`、`botmux-1`……。首次扫码拿到 Web 登录态后,botmux 自动上传默认图标、创建企业自建应用、读取 AppID/AppSecret,并复用同一登录态继续配置权限与发版;后续添加会先显示当前账号与企业供确认,有效期内免扫码。Web 自动创建不可用或使用 Lark 国际版时,可由用户明确选择 `@larksuiteoapi/node-sdk` 兼容模式;兼容模式可能需要额外扫码,且应用名称由平台决定。
235
241
  - **选择已有应用**:复用(或扫码获取)飞书 Web 登录态,列出你在开放平台创建过的应用,选中后**自动读取 AppID/AppSecret**——换机器重配、复用旧应用不用再去后台翻 Secret(仅飞书租户)。
236
242
  - **手动输入 AppID/Secret**:见文末折叠的「手动创建应用」。
237
243
  3. **选择 CLI**:选本次要接入的 CLI(可搜索,如输入 `cla` 过滤出 Claude)。
@@ -239,9 +245,9 @@ npm install -g botmux
239
245
  - **固定默认目录(推荐)**:新话题直接在指定目录启动、**不弹卡片**(落 `defaultWorkingDir` 字段,之后可用 `/config` 或 `botmux setup edit` 修改)。想让机器人"直接进目录干活"选这个。
240
246
  - **仓库选择卡片**:新话题先弹卡片,从扫描到的 git 仓库里选一个再启动,适合经常在多个仓库间切换。下一问填**仓库扫描根目录**,通常是 git 项目的**父级目录**(如 `~/projects`,支持逗号分隔多个),卡片从该目录**向下**查找 git 仓库(最多 3 层);尽量别填 `~`(要遍历太多文件夹)。
241
247
 
242
- 接着进入**第 2 次扫码**:botmux 内置的飞书 Web 登录会自动导入权限、配置 `http://127.0.0.1:9768/callback` 重定向 URL、创建并提交发布版本。失败会自动回退并打印手动步骤(见文末折叠),不影响已写入的配置;权限只导入了一部分也算成功,缺的可事后到开放平台补。
248
+ 应用创建后会直接复用同一份 Web 登录态,自动导入权限、配置 `http://127.0.0.1:9768/callback` 重定向 URL、创建并提交发布版本。Feishu 主路径是**首次最多扫码一次、后续有效期内免扫**;缓存账号/企业会在创建前展示并用同一份 cookie 再次比对,登录态失效时先提示,不会静默弹码。只有用户主动「更换账号」或明确选择 SDK 兼容模式时才会重新扫码。
243
249
 
244
- > ✅ **飞书 (feishu.cn) 与 Lark 国际版 (larksuite.com) 均支持**。扫码创建时自动识别租户类型(国内 / 国际)并记住,无需手动选择;手动粘 AppID/Secret 时会让你选一次。每个机器人按所属版本独立连对应域名,同一台机器可同时跑飞书 + Lark 机器人,登录凭证按应用隔离、互不干扰。
250
+ > ✅ **飞书 (feishu.cn) 与 Lark 国际版 (larksuite.com) 均支持**。飞书走单次 Web 扫码;用户明确选择 SDK 兼容模式后,会自动识别并记住 Lark 国际版租户。手动粘 AppID/Secret 时会让你选一次租户类型。每个机器人按所属版本独立连对应域名,同一台机器可同时跑飞书 + Lark 机器人,登录凭证按应用隔离、互不干扰。
245
251
 
246
252
  setup 末尾会用 `tenant_access_token` 校验凭证(通过才落盘 `bots.json`),并把完整权限 JSON 写到 `~/.botmux/lark-scopes.json` 备查。
247
253
 
@@ -250,6 +256,11 @@ setup 末尾会用 `tenant_access_token` 校验凭证(通过才落盘 `bots.js
250
256
 
251
257
  ```bash
252
258
  botmux setup list --json # 列出机器人(secret 脱敏)
259
+ botmux setup add --create-app \
260
+ --app-name 研发助手 \
261
+ --allowed-users alice@example.com # 首次扫码;后续有效登录态下免扫
262
+ botmux setup add --create-app --switch-account \
263
+ --allowed-users alice@example.com # 明确更换账号并覆盖本机登录态
253
264
  botmux setup add \
254
265
  --app-id cli_xxx --app-secret xxx \
255
266
  --allowed-users alice@example.com \
@@ -261,7 +272,8 @@ botmux setup help # 完整 flag 列表
261
272
  ```
262
273
 
263
274
  - `--working-dir` 是仓库选择卡片的扫描根;`--default-working-dir` 是固定默认目录(新话题直接启动、不弹卡),对应 TUI 里工作目录模式的两个选项。
264
- - `--json` 输出机器可读结果(含 `ok` / `error`);开放平台自动配置默认跳过,需要时显式加 `--open-platform-auto`(要扫码)。
275
+ - `--create-app` 默认先复用并在 stderr 显示已确认的账号/企业;无缓存时首次扫码。`--switch-account` 强制重新扫码并覆盖本机登录态。`--json` 不会在缺少有效缓存时自行弹码,需显式加 `--switch-account`;成功时返回冻结后的 `appName` `appId`,应用已创建但后续失败时返回 `partial`、`appId` 和带 `--open-platform-auto` 的继续命令,不会重复建应用。
276
+ - 已有凭证模式的开放平台自动配置默认跳过,需要时显式加 `--open-platform-auto`。`--compatibility-mode` 必须显式选择,可能需要额外扫码且不支持 `--app-name`。
265
277
  - 以前对交互问答「管道喂数字」的脚本请迁移到这些子命令:问答序列一变(本版本就新增了工作目录模式一问),喂数字会静默错位。
266
278
 
267
279
  </details>
@@ -291,7 +303,7 @@ botmux autostart enable
291
303
  ```
292
304
 
293
305
  <details>
294
- <summary><b>手动配置开放平台:建应用 / 权限 / 重定向 / 发版(备用)</b> —— 默认由 botmux setup 扫第二次码时自动完成,仅在自动配置失败、或想手动核对时展开</summary>
306
+ <summary><b>手动配置开放平台:建应用 / 权限 / 重定向 / 发版(备用)</b> —— 默认由 botmux setup 使用同一次登录态自动完成,仅在自动配置失败、或想手动核对时展开</summary>
295
307
 
296
308
  <br>
297
309
 
@@ -329,7 +341,7 @@ base64 -w0 < ~/.botmux/lark-scopes.json | awk 'BEGIN{printf "\033]52;c;"}{printf
329
341
 
330
342
  <br>
331
343
 
332
- PersonalAgent 默认配好事件订阅 + bot 能力,正常情况下不用动。如果按上面步骤走完 bot **完全收不到任何消息**(连私聊都不回),分别确认这两项:
344
+ botmux 会自动开启机器人能力、长连接事件模式并订阅基础事件,正常情况下不用动。如果按上面步骤走完 bot **完全收不到任何消息**(连私聊都不回),分别确认这两项:
333
345
 
334
346
  - **事件订阅**:开放平台 → 你的应用 → 事件与回调 → 应当订阅 `im.message.receive_v1` + `card.action.trigger`(默认已订阅,如缺失就手动添加)。订阅方式必须是「使用长连接接收事件」(WebSocket),且 botmux daemon 已经在跑。
335
347
  - **机器人能力**:开放平台 → 你的应用 → 应用功能 → 机器人 应当已开通(默认开通),名字/头像可以改。
@@ -384,16 +396,16 @@ PersonalAgent 默认配好事件订阅 + bot 能力,正常情况下不用动
384
396
 
385
397
  命令、配置、最佳实践、排错的完整内容都在文档站,这里不再重复 ——
386
398
 
387
- ### 👉 https://github.com/deepcoldy/botmux/tree/master/docs-site/docs/zh
399
+ ### 👉 https://deepcoldy.github.io/botmux/
388
400
 
389
401
  | 主题 | 文档 |
390
402
  |------|------|
391
- | 斜杠命令 / CLI 命令 / 会话内子命令 | [命令参考](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/zh/slash-commands.md) |
392
- | `bots.json` 字段 / 环境变量 / 文件位置 | [配置参考](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/zh/bots-json.md) |
393
- | 多 CLI 适配器(含 wrapper / 网关接入) | [适配器](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/zh/adapters.md) |
394
- | 按场景的最佳实践(Oncall / 报警运维 / 个人研发 / 多人协作) | [最佳实践](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/zh/best-practices.md) |
395
- | 常见踩坑 / FAQ 排错 | [踩坑](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/zh/pitfalls.md) · [FAQ](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/zh/faq.md) |
396
- | 功能详解:定时任务 / Oncall / Dashboard / 多机器人协作 / 会话接力 | [定时](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/zh/schedule.md) · [Oncall](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/zh/oncall.md) · [Dashboard](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/zh/dashboard.md) · [多 bot](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/zh/multi-bot.mdx) · [接力](https://github.com/deepcoldy/botmux/blob/master/docs-site/docs/zh/relay.md) |
403
+ | 斜杠命令 / CLI 命令 / 会话内子命令 | [命令参考](https://deepcoldy.github.io/botmux/slash-commands) |
404
+ | `bots.json` 字段 / 环境变量 / 文件位置 | [配置参考](https://deepcoldy.github.io/botmux/bots-json) |
405
+ | 多 CLI 适配器(含 wrapper / 网关接入) | [适配器](https://deepcoldy.github.io/botmux/adapters) |
406
+ | 按场景的最佳实践(Oncall / 报警运维 / 个人研发 / 多人协作) | [最佳实践](https://deepcoldy.github.io/botmux/best-practices) |
407
+ | 常见踩坑 / FAQ 排错 | [踩坑](https://deepcoldy.github.io/botmux/pitfalls) · [FAQ](https://deepcoldy.github.io/botmux/faq) |
408
+ | 功能详解:定时任务 / Oncall / Dashboard / 多机器人协作 / 会话接力 | [定时](https://deepcoldy.github.io/botmux/schedule) · [Oncall](https://deepcoldy.github.io/botmux/oncall) · [Dashboard](https://deepcoldy.github.io/botmux/dashboard) · [多 bot](https://deepcoldy.github.io/botmux/multi-bot) · [接力](https://deepcoldy.github.io/botmux/relay) |
397
409
 
398
410
  ## 贡献
399
411
 
@@ -228,6 +228,7 @@ export declare function attachSandboxOutbox(opts: {
228
228
  export declare function sweepOrphanSandboxes(dataDir: string, activeSessionIds: Set<string>): void;
229
229
  export interface RelayRequest {
230
230
  contentFile?: unknown;
231
+ cardFile?: unknown;
231
232
  attachments?: unknown;
232
233
  videos?: unknown;
233
234
  videoCovers?: unknown;
@@ -235,6 +236,7 @@ export interface RelayRequest {
235
236
  }
236
237
  export interface ValidatedRelay {
237
238
  contentName: string;
239
+ cardName?: string;
238
240
  attachmentNames: string[];
239
241
  videoNames: string[];
240
242
  videoCoverNames: string[];
@@ -243,7 +245,7 @@ export interface ValidatedRelay {
243
245
  /**
244
246
  * PURE validation of an outbox relay request (schema + flag allowlist only — no
245
247
  * filesystem access, so it's deterministically testable):
246
- * - contentFile/attachments/videos/videoCovers must be plain basenames (no `/`, `\`, `..`).
248
+ * - contentFile/cardFile/attachments/videos/videoCovers must be plain basenames (no `/`, `\`, `..`).
247
249
  * - only allowlisted presentation flags pass; any other flag → reject (this
248
250
  * rejects raw `--content-file`/`--session-id`/path flags etc.).
249
251
  * The TOCTOU-safe filesystem read is handled separately by materializeOutboxFile,
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../../src/adapters/backend/sandbox.ts"],"names":[],"mappings":"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"}
@@ -651,7 +651,7 @@ const RELAY_FLAGS_VAL = new Set(['--mention', '--quote']);
651
651
  /**
652
652
  * PURE validation of an outbox relay request (schema + flag allowlist only — no
653
653
  * filesystem access, so it's deterministically testable):
654
- * - contentFile/attachments/videos/videoCovers must be plain basenames (no `/`, `\`, `..`).
654
+ * - contentFile/cardFile/attachments/videos/videoCovers must be plain basenames (no `/`, `\`, `..`).
655
655
  * - only allowlisted presentation flags pass; any other flag → reject (this
656
656
  * rejects raw `--content-file`/`--session-id`/path flags etc.).
657
657
  * The TOCTOU-safe filesystem read is handled separately by materializeOutboxFile,
@@ -661,6 +661,13 @@ export function validateRelayRequest(req) {
661
661
  const safeName = (n) => typeof n === 'string' && !!n && !n.includes('/') && !n.includes('\\') && !n.includes('..');
662
662
  if (!safeName(req.contentFile))
663
663
  return { ok: false, error: 'contentFile must be a plain outbox basename' };
664
+ const cardName = req.cardFile === undefined
665
+ ? undefined
666
+ : safeName(req.cardFile)
667
+ ? req.cardFile
668
+ : null;
669
+ if (cardName === null)
670
+ return { ok: false, error: 'cardFile must be a plain outbox basename' };
664
671
  const attachmentNames = [];
665
672
  for (const a of Array.isArray(req.attachments) ? req.attachments : []) {
666
673
  if (!safeName(a))
@@ -704,7 +711,7 @@ export function validateRelayRequest(req) {
704
711
  }
705
712
  return { ok: false, error: `flag not allowed: ${f}` };
706
713
  }
707
- return { ok: true, value: { contentName: req.contentFile, attachmentNames, videoNames, videoCoverNames, flags } };
714
+ return { ok: true, value: { contentName: req.contentFile, cardName, attachmentNames, videoNames, videoCoverNames, flags } };
708
715
  }
709
716
  /**
710
717
  * TOCTOU-safe copy of an outbox file (`outbox/<name>`, name already validated as
@@ -822,6 +829,15 @@ export function startOutboxWatcher(outbox, baseEnv, sessionId) {
822
829
  continue;
823
830
  }
824
831
  staged.push(contentDest);
832
+ let cardPath;
833
+ if (v.value.cardName) {
834
+ cardPath = join(staging, `${id}.card.json`);
835
+ if (!materializeOutboxFile(outbox, v.value.cardName, cardPath)) {
836
+ finish(id, reqPath, name, staged, 1, '', 'relay rejected: card not a regular file in outbox');
837
+ continue;
838
+ }
839
+ staged.push(cardPath);
840
+ }
825
841
  let attBad = false;
826
842
  const attPaths = [];
827
843
  v.value.attachmentNames.forEach((an, i) => {
@@ -875,7 +891,7 @@ export function startOutboxWatcher(outbox, baseEnv, sessionId) {
875
891
  }
876
892
  const hostArgs = [
877
893
  ...v.value.flags,
878
- '--content-file', contentDest,
894
+ ...(cardPath ? ['--card-file', cardPath] : ['--content-file', contentDest]),
879
895
  ...attPaths.flatMap(a => ['--files', a]),
880
896
  ...videoPaths.flatMap(a => ['--videos', a]),
881
897
  ...videoCoverPaths.flatMap(a => ['--video-covers', a]),