botmux 2.107.0 → 2.108.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 (515) hide show
  1. package/README.en.md +17 -14
  2. package/README.md +19 -14
  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/genius.d.ts.map +1 -1
  15. package/dist/adapters/cli/genius.js +9 -15
  16. package/dist/adapters/cli/genius.js.map +1 -1
  17. package/dist/adapters/cli/grok.d.ts +73 -0
  18. package/dist/adapters/cli/grok.d.ts.map +1 -0
  19. package/dist/adapters/cli/grok.js +298 -0
  20. package/dist/adapters/cli/grok.js.map +1 -0
  21. package/dist/adapters/cli/oh-my-pi.d.ts.map +1 -1
  22. package/dist/adapters/cli/oh-my-pi.js +133 -12
  23. package/dist/adapters/cli/oh-my-pi.js.map +1 -1
  24. package/dist/adapters/cli/registry.d.ts +2 -1
  25. package/dist/adapters/cli/registry.d.ts.map +1 -1
  26. package/dist/adapters/cli/registry.js +3 -1
  27. package/dist/adapters/cli/registry.js.map +1 -1
  28. package/dist/adapters/cli/shared-hints.d.ts +8 -4
  29. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  30. package/dist/adapters/cli/shared-hints.js +8 -4
  31. package/dist/adapters/cli/shared-hints.js.map +1 -1
  32. package/dist/adapters/cli/types.d.ts +18 -16
  33. package/dist/adapters/cli/types.d.ts.map +1 -1
  34. package/dist/adapters/hook-installer.d.ts +5 -4
  35. package/dist/adapters/hook-installer.d.ts.map +1 -1
  36. package/dist/adapters/hook-installer.js +42 -0
  37. package/dist/adapters/hook-installer.js.map +1 -1
  38. package/dist/cli/send-dispatch.d.ts +21 -0
  39. package/dist/cli/send-dispatch.d.ts.map +1 -1
  40. package/dist/cli/send-dispatch.js +159 -0
  41. package/dist/cli/send-dispatch.js.map +1 -1
  42. package/dist/cli/session-list-liveness.d.ts +22 -0
  43. package/dist/cli/session-list-liveness.d.ts.map +1 -0
  44. package/dist/cli/session-list-liveness.js +22 -0
  45. package/dist/cli/session-list-liveness.js.map +1 -0
  46. package/dist/cli.d.ts.map +1 -1
  47. package/dist/cli.js +182 -33
  48. package/dist/cli.js.map +1 -1
  49. package/dist/core/ask-types.d.ts +4 -0
  50. package/dist/core/ask-types.d.ts.map +1 -1
  51. package/dist/core/ask-types.js +10 -0
  52. package/dist/core/ask-types.js.map +1 -1
  53. package/dist/core/cost-calculator.d.ts.map +1 -1
  54. package/dist/core/cost-calculator.js +35 -13
  55. package/dist/core/cost-calculator.js.map +1 -1
  56. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  57. package/dist/core/dashboard-ipc-server.js +89 -16
  58. package/dist/core/dashboard-ipc-server.js.map +1 -1
  59. package/dist/core/dashboard-rows.d.ts.map +1 -1
  60. package/dist/core/dashboard-rows.js +6 -2
  61. package/dist/core/dashboard-rows.js.map +1 -1
  62. package/dist/core/dashboard-url.d.ts +6 -5
  63. package/dist/core/dashboard-url.d.ts.map +1 -1
  64. package/dist/core/dashboard-url.js +11 -8
  65. package/dist/core/dashboard-url.js.map +1 -1
  66. package/dist/core/maintenance.d.ts +11 -8
  67. package/dist/core/maintenance.d.ts.map +1 -1
  68. package/dist/core/maintenance.js +45 -20
  69. package/dist/core/maintenance.js.map +1 -1
  70. package/dist/core/per-bot-env.d.ts.map +1 -1
  71. package/dist/core/per-bot-env.js +4 -0
  72. package/dist/core/per-bot-env.js.map +1 -1
  73. package/dist/core/session-discovery.d.ts.map +1 -1
  74. package/dist/core/session-discovery.js +4 -0
  75. package/dist/core/session-discovery.js.map +1 -1
  76. package/dist/core/skills/cli-admin-command.d.ts.map +1 -1
  77. package/dist/core/skills/cli-admin-command.js +8 -2
  78. package/dist/core/skills/cli-admin-command.js.map +1 -1
  79. package/dist/core/skills/im-command.d.ts.map +1 -1
  80. package/dist/core/skills/im-command.js +3 -1
  81. package/dist/core/skills/im-command.js.map +1 -1
  82. package/dist/core/skills/sources.d.ts +33 -1
  83. package/dist/core/skills/sources.d.ts.map +1 -1
  84. package/dist/core/skills/sources.js +97 -0
  85. package/dist/core/skills/sources.js.map +1 -1
  86. package/dist/core/skills/types.d.ts +8 -0
  87. package/dist/core/skills/types.d.ts.map +1 -1
  88. package/dist/core/terminal-url.d.ts.map +1 -1
  89. package/dist/core/terminal-url.js +12 -2
  90. package/dist/core/terminal-url.js.map +1 -1
  91. package/dist/core/terminal-write-auth.d.ts +34 -0
  92. package/dist/core/terminal-write-auth.d.ts.map +1 -0
  93. package/dist/core/terminal-write-auth.js +76 -0
  94. package/dist/core/terminal-write-auth.js.map +1 -0
  95. package/dist/core/tmux-recovery.d.ts +11 -0
  96. package/dist/core/tmux-recovery.d.ts.map +1 -0
  97. package/dist/core/tmux-recovery.js +19 -0
  98. package/dist/core/tmux-recovery.js.map +1 -0
  99. package/dist/core/types.d.ts +10 -4
  100. package/dist/core/types.d.ts.map +1 -1
  101. package/dist/core/types.js.map +1 -1
  102. package/dist/core/update-check.d.ts +2 -2
  103. package/dist/core/update-check.js +2 -2
  104. package/dist/core/worker-pool.d.ts +3 -0
  105. package/dist/core/worker-pool.d.ts.map +1 -1
  106. package/dist/core/worker-pool.js +70 -3
  107. package/dist/core/worker-pool.js.map +1 -1
  108. package/dist/daemon.d.ts.map +1 -1
  109. package/dist/daemon.js +15 -8
  110. package/dist/daemon.js.map +1 -1
  111. package/dist/dashboard/auth.d.ts +1 -1
  112. package/dist/dashboard/auth.d.ts.map +1 -1
  113. package/dist/dashboard/auth.js +7 -2
  114. package/dist/dashboard/auth.js.map +1 -1
  115. package/dist/dashboard/bot-payload.d.ts +3 -0
  116. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  117. package/dist/dashboard/bot-payload.js +3 -0
  118. package/dist/dashboard/bot-payload.js.map +1 -1
  119. package/dist/dashboard/connector-api.d.ts.map +1 -1
  120. package/dist/dashboard/connector-api.js +39 -13
  121. package/dist/dashboard/connector-api.js.map +1 -1
  122. package/dist/dashboard/history-senders.d.ts +37 -0
  123. package/dist/dashboard/history-senders.d.ts.map +1 -0
  124. package/dist/dashboard/history-senders.js +60 -0
  125. package/dist/dashboard/history-senders.js.map +1 -0
  126. package/dist/dashboard/roles-batch.d.ts +31 -0
  127. package/dist/dashboard/roles-batch.d.ts.map +1 -0
  128. package/dist/dashboard/roles-batch.js +87 -0
  129. package/dist/dashboard/roles-batch.js.map +1 -0
  130. package/dist/dashboard/settings-card-model.d.ts +4 -2
  131. package/dist/dashboard/settings-card-model.d.ts.map +1 -1
  132. package/dist/dashboard/settings-card-model.js +13 -5
  133. package/dist/dashboard/settings-card-model.js.map +1 -1
  134. package/dist/dashboard/settings-write-applier.d.ts +4 -1
  135. package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
  136. package/dist/dashboard/settings-write-applier.js +6 -1
  137. package/dist/dashboard/settings-write-applier.js.map +1 -1
  138. package/dist/dashboard/skill-install-request.d.ts +4 -0
  139. package/dist/dashboard/skill-install-request.d.ts.map +1 -1
  140. package/dist/dashboard/skill-install-request.js +11 -1
  141. package/dist/dashboard/skill-install-request.js.map +1 -1
  142. package/dist/dashboard/trigger-api.d.ts +9 -1
  143. package/dist/dashboard/trigger-api.d.ts.map +1 -1
  144. package/dist/dashboard/trigger-api.js +48 -10
  145. package/dist/dashboard/trigger-api.js.map +1 -1
  146. package/dist/dashboard/web/app.d.ts.map +1 -1
  147. package/dist/dashboard/web/app.js +286 -271
  148. package/dist/dashboard/web/app.js.map +1 -1
  149. package/dist/dashboard/web/bot-defaults-page.d.ts +26 -0
  150. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  151. package/dist/dashboard/web/bot-defaults-page.js +1408 -12
  152. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  153. package/dist/dashboard/web/bot-defaults.d.ts +91 -4
  154. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  155. package/dist/dashboard/web/bot-defaults.js +43 -2141
  156. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  157. package/dist/dashboard/web/bot-onboarding.d.ts +6 -1
  158. package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
  159. package/dist/dashboard/web/bot-onboarding.js +261 -306
  160. package/dist/dashboard/web/bot-onboarding.js.map +1 -1
  161. package/dist/dashboard/web/connectors-page.d.ts +4 -0
  162. package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
  163. package/dist/dashboard/web/connectors-page.js +228 -48
  164. package/dist/dashboard/web/connectors-page.js.map +1 -1
  165. package/dist/dashboard/web/dashboard-api.d.ts +9 -0
  166. package/dist/dashboard/web/dashboard-api.d.ts.map +1 -0
  167. package/dist/dashboard/web/dashboard-api.js +18 -0
  168. package/dist/dashboard/web/dashboard-api.js.map +1 -0
  169. package/dist/dashboard/web/dashboard-components.d.ts +92 -0
  170. package/dist/dashboard/web/dashboard-components.d.ts.map +1 -0
  171. package/dist/dashboard/web/dashboard-components.js +250 -0
  172. package/dist/dashboard/web/dashboard-components.js.map +1 -0
  173. package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
  174. package/dist/dashboard/web/dashboard-routes.js +30 -183
  175. package/dist/dashboard/web/dashboard-routes.js.map +1 -1
  176. package/dist/dashboard/web/floating-scrollbars.d.ts +2 -0
  177. package/dist/dashboard/web/floating-scrollbars.d.ts.map +1 -0
  178. package/dist/dashboard/web/floating-scrollbars.js +264 -0
  179. package/dist/dashboard/web/floating-scrollbars.js.map +1 -0
  180. package/dist/dashboard/web/groups-api.d.ts +36 -0
  181. package/dist/dashboard/web/groups-api.d.ts.map +1 -0
  182. package/dist/dashboard/web/groups-api.js +44 -0
  183. package/dist/dashboard/web/groups-api.js.map +1 -0
  184. package/dist/dashboard/web/groups-page.d.ts.map +1 -1
  185. package/dist/dashboard/web/groups-page.js +746 -15
  186. package/dist/dashboard/web/groups-page.js.map +1 -1
  187. package/dist/dashboard/web/groups.d.ts +51 -18
  188. package/dist/dashboard/web/groups.d.ts.map +1 -1
  189. package/dist/dashboard/web/groups.js +145 -1096
  190. package/dist/dashboard/web/groups.js.map +1 -1
  191. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  192. package/dist/dashboard/web/i18n.js +545 -255
  193. package/dist/dashboard/web/i18n.js.map +1 -1
  194. package/dist/dashboard/web/insights-page.d.ts.map +1 -1
  195. package/dist/dashboard/web/insights-page.js +1047 -14
  196. package/dist/dashboard/web/insights-page.js.map +1 -1
  197. package/dist/dashboard/web/insights.d.ts +177 -7
  198. package/dist/dashboard/web/insights.d.ts.map +1 -1
  199. package/dist/dashboard/web/insights.js +187 -1926
  200. package/dist/dashboard/web/insights.js.map +1 -1
  201. package/dist/dashboard/web/legacy-workflow-page.d.ts +3 -0
  202. package/dist/dashboard/web/legacy-workflow-page.d.ts.map +1 -0
  203. package/dist/dashboard/web/legacy-workflow-page.js +717 -0
  204. package/dist/dashboard/web/legacy-workflow-page.js.map +1 -0
  205. package/dist/dashboard/web/monitor-room.d.ts.map +1 -1
  206. package/dist/dashboard/web/monitor-room.js +10 -8
  207. package/dist/dashboard/web/monitor-room.js.map +1 -1
  208. package/dist/dashboard/web/monitoring-page.d.ts.map +1 -1
  209. package/dist/dashboard/web/monitoring-page.js +188 -14
  210. package/dist/dashboard/web/monitoring-page.js.map +1 -1
  211. package/dist/dashboard/web/office-page.d.ts.map +1 -1
  212. package/dist/dashboard/web/office-page.js +11 -23
  213. package/dist/dashboard/web/office-page.js.map +1 -1
  214. package/dist/dashboard/web/overview-page.d.ts.map +1 -1
  215. package/dist/dashboard/web/overview-page.js +141 -147
  216. package/dist/dashboard/web/overview-page.js.map +1 -1
  217. package/dist/dashboard/web/overview.d.ts +0 -1
  218. package/dist/dashboard/web/overview.d.ts.map +1 -1
  219. package/dist/dashboard/web/overview.js +3 -275
  220. package/dist/dashboard/web/overview.js.map +1 -1
  221. package/dist/dashboard/web/preferences.d.ts +1 -6
  222. package/dist/dashboard/web/preferences.d.ts.map +1 -1
  223. package/dist/dashboard/web/preferences.js +0 -21
  224. package/dist/dashboard/web/preferences.js.map +1 -1
  225. package/dist/dashboard/web/role-batch.d.ts +9 -0
  226. package/dist/dashboard/web/role-batch.d.ts.map +1 -0
  227. package/dist/dashboard/web/role-batch.js +42 -0
  228. package/dist/dashboard/web/role-batch.js.map +1 -0
  229. package/dist/dashboard/web/roles-page.d.ts.map +1 -1
  230. package/dist/dashboard/web/roles-page.js +538 -13
  231. package/dist/dashboard/web/roles-page.js.map +1 -1
  232. package/dist/dashboard/web/roles.d.ts +98 -1
  233. package/dist/dashboard/web/roles.d.ts.map +1 -1
  234. package/dist/dashboard/web/roles.js +117 -903
  235. package/dist/dashboard/web/roles.js.map +1 -1
  236. package/dist/dashboard/web/schedules-page.d.ts.map +1 -1
  237. package/dist/dashboard/web/schedules-page.js +82 -24
  238. package/dist/dashboard/web/schedules-page.js.map +1 -1
  239. package/dist/dashboard/web/sessions-kanban.d.ts +67 -0
  240. package/dist/dashboard/web/sessions-kanban.d.ts.map +1 -0
  241. package/dist/dashboard/web/sessions-kanban.js +481 -0
  242. package/dist/dashboard/web/sessions-kanban.js.map +1 -0
  243. package/dist/dashboard/web/sessions-page.d.ts +4 -0
  244. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  245. package/dist/dashboard/web/sessions-page.js +1633 -18
  246. package/dist/dashboard/web/sessions-page.js.map +1 -1
  247. package/dist/dashboard/web/sessions.d.ts +45 -4
  248. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  249. package/dist/dashboard/web/sessions.js +53 -2535
  250. package/dist/dashboard/web/sessions.js.map +1 -1
  251. package/dist/dashboard/web/settings-page.d.ts +0 -2
  252. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  253. package/dist/dashboard/web/settings-page.js +127 -117
  254. package/dist/dashboard/web/settings-page.js.map +1 -1
  255. package/dist/dashboard/web/skills-page.d.ts +10 -1
  256. package/dist/dashboard/web/skills-page.d.ts.map +1 -1
  257. package/dist/dashboard/web/skills-page.js +235 -93
  258. package/dist/dashboard/web/skills-page.js.map +1 -1
  259. package/dist/dashboard/web/team-federation-page.d.ts.map +1 -1
  260. package/dist/dashboard/web/team-federation-page.js +446 -28
  261. package/dist/dashboard/web/team-federation-page.js.map +1 -1
  262. package/dist/dashboard/web/team-federation.d.ts +91 -2
  263. package/dist/dashboard/web/team-federation.d.ts.map +1 -1
  264. package/dist/dashboard/web/team-federation.js +87 -474
  265. package/dist/dashboard/web/team-federation.js.map +1 -1
  266. package/dist/dashboard/web/theme-menu.d.ts +1 -0
  267. package/dist/dashboard/web/theme-menu.d.ts.map +1 -1
  268. package/dist/dashboard/web/theme-menu.js +79 -20
  269. package/dist/dashboard/web/theme-menu.js.map +1 -1
  270. package/dist/dashboard/web/ui.d.ts +1 -2
  271. package/dist/dashboard/web/ui.d.ts.map +1 -1
  272. package/dist/dashboard/web/ui.js +8 -20
  273. package/dist/dashboard/web/ui.js.map +1 -1
  274. package/dist/dashboard/web/v3-api.d.ts +16 -0
  275. package/dist/dashboard/web/v3-api.d.ts.map +1 -0
  276. package/dist/dashboard/web/v3-api.js +21 -0
  277. package/dist/dashboard/web/v3-api.js.map +1 -0
  278. package/dist/dashboard/web/v3-components.d.ts +2 -0
  279. package/dist/dashboard/web/v3-components.d.ts.map +1 -0
  280. package/dist/dashboard/web/v3-components.js +290 -0
  281. package/dist/dashboard/web/v3-components.js.map +1 -0
  282. package/dist/dashboard/web/v3-model.d.ts +80 -0
  283. package/dist/dashboard/web/v3-model.d.ts.map +1 -0
  284. package/dist/dashboard/web/v3-model.js +240 -0
  285. package/dist/dashboard/web/v3-model.js.map +1 -0
  286. package/dist/dashboard/web/v3-page.d.ts.map +1 -1
  287. package/dist/dashboard/web/v3-page.js +2 -22
  288. package/dist/dashboard/web/v3-page.js.map +1 -1
  289. package/dist/dashboard/web/v3-terminal.d.ts +14 -0
  290. package/dist/dashboard/web/v3-terminal.d.ts.map +1 -1
  291. package/dist/dashboard/web/v3-terminal.js +31 -19
  292. package/dist/dashboard/web/v3-terminal.js.map +1 -1
  293. package/dist/dashboard/web/webhook-logs-page.d.ts +16 -0
  294. package/dist/dashboard/web/webhook-logs-page.d.ts.map +1 -0
  295. package/dist/dashboard/web/webhook-logs-page.js +195 -0
  296. package/dist/dashboard/web/webhook-logs-page.js.map +1 -0
  297. package/dist/dashboard/web/whiteboards-page.d.ts.map +1 -1
  298. package/dist/dashboard/web/whiteboards-page.js +18 -23
  299. package/dist/dashboard/web/whiteboards-page.js.map +1 -1
  300. package/dist/dashboard/web/workflow-version-switch.d.ts +8 -0
  301. package/dist/dashboard/web/workflow-version-switch.d.ts.map +1 -0
  302. package/dist/dashboard/web/workflow-version-switch.js +9 -0
  303. package/dist/dashboard/web/workflow-version-switch.js.map +1 -0
  304. package/dist/dashboard/web/workflows.d.ts +272 -1
  305. package/dist/dashboard/web/workflows.d.ts.map +1 -1
  306. package/dist/dashboard/web/workflows.js +211 -1397
  307. package/dist/dashboard/web/workflows.js.map +1 -1
  308. package/dist/dashboard/webhook-routes.d.ts.map +1 -1
  309. package/dist/dashboard/webhook-routes.js +92 -39
  310. package/dist/dashboard/webhook-routes.js.map +1 -1
  311. package/dist/dashboard-web/app.js +1 -65
  312. package/dist/dashboard-web/brand-logo.png +0 -0
  313. package/dist/dashboard-web/chunks/bot-defaults-page-HSQ6HR3R.js +1 -0
  314. package/dist/dashboard-web/chunks/chunk-6TPODDDC.js +1 -0
  315. package/dist/dashboard-web/chunks/chunk-73EJP2MO.js +1 -0
  316. package/dist/dashboard-web/chunks/chunk-BRTZFELS.js +1 -0
  317. package/dist/dashboard-web/chunks/chunk-EVK77ASG.js +1 -0
  318. package/dist/dashboard-web/chunks/chunk-R3FXBFQH.js +1 -0
  319. package/dist/dashboard-web/chunks/chunk-VRLL7SNU.js +1 -0
  320. package/dist/dashboard-web/chunks/chunk-XCPSHD3G.js +37 -0
  321. package/dist/dashboard-web/chunks/chunk-XJ7BGPJH.js +1 -0
  322. package/dist/dashboard-web/chunks/chunk-YVRWYGXR.js +1 -0
  323. package/dist/dashboard-web/chunks/chunk-ZJING6FY.js +66 -0
  324. package/dist/dashboard-web/chunks/connectors-page-ODUA5UCW.js +1 -0
  325. package/dist/dashboard-web/chunks/groups-page-OYX5M6NK.js +8 -0
  326. package/dist/dashboard-web/chunks/insights-page-YCQO6OCR.js +22 -0
  327. package/dist/dashboard-web/chunks/legacy-workflow-page-XJAUNONP.js +2 -0
  328. package/dist/dashboard-web/chunks/{monitor-room-RFX4HPS5.js → monitor-room-WTZNYAFV.js} +17 -15
  329. package/dist/dashboard-web/chunks/monitoring-page-R6LJUK7G.js +2 -0
  330. package/dist/dashboard-web/chunks/office-page-4OXK3GNR.js +1 -0
  331. package/dist/dashboard-web/chunks/overview-page-4MVEJY6U.js +1 -0
  332. package/dist/dashboard-web/chunks/roles-page-NQDW27VV.js +1 -0
  333. package/dist/dashboard-web/chunks/schedules-page-JRNKYHOX.js +1 -0
  334. package/dist/dashboard-web/chunks/sessions-page-LF7UVI7B.js +3 -0
  335. package/dist/dashboard-web/chunks/settings-page-WGW7KQQS.js +2 -0
  336. package/dist/dashboard-web/chunks/skills-page-AMD4XP3T.js +3 -0
  337. package/dist/dashboard-web/chunks/team-federation-page-SYG3K4GG.js +1 -0
  338. package/dist/dashboard-web/chunks/v3-page-6NFFWNUK.js +94 -0
  339. package/dist/dashboard-web/chunks/whiteboards-page-FBRUK2AS.js +1 -0
  340. package/dist/dashboard-web/favicon.png +0 -0
  341. package/dist/dashboard-web/index.html +5 -69
  342. package/dist/dashboard-web/style.css +18835 -7211
  343. package/dist/dashboard.js +150 -32
  344. package/dist/dashboard.js.map +1 -1
  345. package/dist/global-config.d.ts +2 -2
  346. package/dist/global-config.d.ts.map +1 -1
  347. package/dist/i18n/en.d.ts.map +1 -1
  348. package/dist/i18n/en.js +3 -0
  349. package/dist/i18n/en.js.map +1 -1
  350. package/dist/i18n/zh.d.ts.map +1 -1
  351. package/dist/i18n/zh.js +3 -0
  352. package/dist/i18n/zh.js.map +1 -1
  353. package/dist/im/lark/card-builder.d.ts +7 -5
  354. package/dist/im/lark/card-builder.d.ts.map +1 -1
  355. package/dist/im/lark/card-builder.js +10 -7
  356. package/dist/im/lark/card-builder.js.map +1 -1
  357. package/dist/im/lark/card-handler.d.ts.map +1 -1
  358. package/dist/im/lark/card-handler.js +25 -1
  359. package/dist/im/lark/card-handler.js.map +1 -1
  360. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  361. package/dist/im/lark/event-dispatcher.js +84 -0
  362. package/dist/im/lark/event-dispatcher.js.map +1 -1
  363. package/dist/platform/binding.d.ts +9 -0
  364. package/dist/platform/binding.d.ts.map +1 -1
  365. package/dist/platform/binding.js +14 -0
  366. package/dist/platform/binding.js.map +1 -1
  367. package/dist/platform/tunnel-client.d.ts.map +1 -1
  368. package/dist/platform/tunnel-client.js +9 -0
  369. package/dist/platform/tunnel-client.js.map +1 -1
  370. package/dist/services/bot-config-store.d.ts +1 -1
  371. package/dist/services/bot-config-store.d.ts.map +1 -1
  372. package/dist/services/bot-config-store.js +11 -5
  373. package/dist/services/bot-config-store.js.map +1 -1
  374. package/dist/services/file-bridge-path.d.ts +8 -0
  375. package/dist/services/file-bridge-path.d.ts.map +1 -0
  376. package/dist/services/file-bridge-path.js +75 -0
  377. package/dist/services/file-bridge-path.js.map +1 -0
  378. package/dist/services/grok-paths.d.ts +27 -0
  379. package/dist/services/grok-paths.d.ts.map +1 -0
  380. package/dist/services/grok-paths.js +106 -0
  381. package/dist/services/grok-paths.js.map +1 -0
  382. package/dist/services/grok-transcript.d.ts +67 -0
  383. package/dist/services/grok-transcript.d.ts.map +1 -0
  384. package/dist/services/grok-transcript.js +630 -0
  385. package/dist/services/grok-transcript.js.map +1 -0
  386. package/dist/services/hermes-session-filter.d.ts +28 -0
  387. package/dist/services/hermes-session-filter.d.ts.map +1 -0
  388. package/dist/services/hermes-session-filter.js +53 -0
  389. package/dist/services/hermes-session-filter.js.map +1 -0
  390. package/dist/services/hermes-transcript.d.ts +3 -0
  391. package/dist/services/hermes-transcript.d.ts.map +1 -1
  392. package/dist/services/hermes-transcript.js +20 -2
  393. package/dist/services/hermes-transcript.js.map +1 -1
  394. package/dist/services/resumable-session-discovery.d.ts +3 -0
  395. package/dist/services/resumable-session-discovery.d.ts.map +1 -1
  396. package/dist/services/resumable-session-discovery.js +6 -1
  397. package/dist/services/resumable-session-discovery.js.map +1 -1
  398. package/dist/services/skill-registry-store.d.ts +9 -0
  399. package/dist/services/skill-registry-store.d.ts.map +1 -1
  400. package/dist/services/skill-registry-store.js +304 -1
  401. package/dist/services/skill-registry-store.js.map +1 -1
  402. package/dist/services/structured-bridge-clis.d.ts +29 -0
  403. package/dist/services/structured-bridge-clis.d.ts.map +1 -0
  404. package/dist/services/structured-bridge-clis.js +76 -0
  405. package/dist/services/structured-bridge-clis.js.map +1 -0
  406. package/dist/services/trigger-log-store.d.ts +59 -0
  407. package/dist/services/trigger-log-store.d.ts.map +1 -1
  408. package/dist/services/trigger-log-store.js +81 -10
  409. package/dist/services/trigger-log-store.js.map +1 -1
  410. package/dist/services/usage-ledger.d.ts +4 -1
  411. package/dist/services/usage-ledger.d.ts.map +1 -1
  412. package/dist/services/usage-ledger.js +48 -10
  413. package/dist/services/usage-ledger.js.map +1 -1
  414. package/dist/services/webhook-audit.d.ts +10 -0
  415. package/dist/services/webhook-audit.d.ts.map +1 -0
  416. package/dist/services/webhook-audit.js +116 -0
  417. package/dist/services/webhook-audit.js.map +1 -0
  418. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  419. package/dist/setup/bot-config-editor.js +2 -0
  420. package/dist/setup/bot-config-editor.js.map +1 -1
  421. package/dist/setup/ensure-tmux.d.ts +26 -12
  422. package/dist/setup/ensure-tmux.d.ts.map +1 -1
  423. package/dist/setup/ensure-tmux.js +85 -18
  424. package/dist/setup/ensure-tmux.js.map +1 -1
  425. package/dist/skills/definitions.d.ts.map +1 -1
  426. package/dist/skills/definitions.js +14 -1
  427. package/dist/skills/definitions.js.map +1 -1
  428. package/dist/skills/injection-mode.d.ts +16 -0
  429. package/dist/skills/injection-mode.d.ts.map +1 -1
  430. package/dist/skills/injection-mode.js +25 -0
  431. package/dist/skills/injection-mode.js.map +1 -1
  432. package/dist/types.d.ts +9 -0
  433. package/dist/types.d.ts.map +1 -1
  434. package/dist/utils/global-install.d.ts +22 -0
  435. package/dist/utils/global-install.d.ts.map +1 -0
  436. package/dist/utils/global-install.js +106 -0
  437. package/dist/utils/global-install.js.map +1 -0
  438. package/dist/utils/install-diagnostics.d.ts +1 -1
  439. package/dist/utils/install-diagnostics.d.ts.map +1 -1
  440. package/dist/utils/install-diagnostics.js +6 -4
  441. package/dist/utils/install-diagnostics.js.map +1 -1
  442. package/dist/utils/install-info.d.ts +2 -0
  443. package/dist/utils/install-info.d.ts.map +1 -1
  444. package/dist/utils/install-info.js +10 -4
  445. package/dist/utils/install-info.js.map +1 -1
  446. package/dist/worker.js +293 -172
  447. package/dist/worker.js.map +1 -1
  448. package/dist/workflows/events/payloads.d.ts +10 -10
  449. package/dist/workflows/events/schema.d.ts +28 -28
  450. package/package.json +8 -7
  451. package/dist/dashboard/web/connectors.d.ts +0 -2
  452. package/dist/dashboard/web/connectors.d.ts.map +0 -1
  453. package/dist/dashboard/web/connectors.js +0 -2
  454. package/dist/dashboard/web/connectors.js.map +0 -1
  455. package/dist/dashboard/web/office.d.ts +0 -2
  456. package/dist/dashboard/web/office.d.ts.map +0 -1
  457. package/dist/dashboard/web/office.js +0 -2
  458. package/dist/dashboard/web/office.js.map +0 -1
  459. package/dist/dashboard/web/schedules.d.ts +0 -2
  460. package/dist/dashboard/web/schedules.d.ts.map +0 -1
  461. package/dist/dashboard/web/schedules.js +0 -2
  462. package/dist/dashboard/web/schedules.js.map +0 -1
  463. package/dist/dashboard/web/settings.d.ts +0 -2
  464. package/dist/dashboard/web/settings.d.ts.map +0 -1
  465. package/dist/dashboard/web/settings.js +0 -2
  466. package/dist/dashboard/web/settings.js.map +0 -1
  467. package/dist/dashboard/web/skills.d.ts +0 -2
  468. package/dist/dashboard/web/skills.d.ts.map +0 -1
  469. package/dist/dashboard/web/skills.js +0 -2
  470. package/dist/dashboard/web/skills.js.map +0 -1
  471. package/dist/dashboard/web/skin-intro.d.ts +0 -4
  472. package/dist/dashboard/web/skin-intro.d.ts.map +0 -1
  473. package/dist/dashboard/web/skin-intro.js +0 -49
  474. package/dist/dashboard/web/skin-intro.js.map +0 -1
  475. package/dist/dashboard/web/v3.d.ts +0 -3
  476. package/dist/dashboard/web/v3.d.ts.map +0 -1
  477. package/dist/dashboard/web/v3.js +0 -539
  478. package/dist/dashboard/web/v3.js.map +0 -1
  479. package/dist/dashboard/web/whiteboards.d.ts +0 -2
  480. package/dist/dashboard/web/whiteboards.d.ts.map +0 -1
  481. package/dist/dashboard/web/whiteboards.js +0 -2
  482. package/dist/dashboard/web/whiteboards.js.map +0 -1
  483. package/dist/dashboard-web/chunks/bot-defaults-page-OCIHPGEU.js +0 -438
  484. package/dist/dashboard-web/chunks/chunk-3N2PPQVD.js +0 -1
  485. package/dist/dashboard-web/chunks/chunk-3UJYRR2Q.js +0 -37
  486. package/dist/dashboard-web/chunks/chunk-5E3MJJL4.js +0 -1
  487. package/dist/dashboard-web/chunks/chunk-7SZRL6FY.js +0 -1
  488. package/dist/dashboard-web/chunks/chunk-JTSE5VP6.js +0 -54
  489. package/dist/dashboard-web/chunks/chunk-LXIK7OUJ.js +0 -1
  490. package/dist/dashboard-web/chunks/chunk-PE6W3C2C.js +0 -1
  491. package/dist/dashboard-web/chunks/chunk-QW54DWU3.js +0 -325
  492. package/dist/dashboard-web/chunks/connectors-IGETYWCP.js +0 -1
  493. package/dist/dashboard-web/chunks/groups-page-MYBS4ZYJ.js +0 -207
  494. package/dist/dashboard-web/chunks/insights-page-UPA32V2S.js +0 -309
  495. package/dist/dashboard-web/chunks/monitoring-page-7T3BESZ2.js +0 -1
  496. package/dist/dashboard-web/chunks/office-page-6DXYOG55.js +0 -1
  497. package/dist/dashboard-web/chunks/overview-page-LJSBCQW4.js +0 -1
  498. package/dist/dashboard-web/chunks/roles-page-ESURTVQH.js +0 -98
  499. package/dist/dashboard-web/chunks/schedules-LML2ISOT.js +0 -1
  500. package/dist/dashboard-web/chunks/sessions-YB73XOTU.js +0 -1
  501. package/dist/dashboard-web/chunks/sessions-page-MCO5QR7Z.js +0 -1
  502. package/dist/dashboard-web/chunks/settings-page-OSDKNVS3.js +0 -2
  503. package/dist/dashboard-web/chunks/skills-page-PXBZJ6P6.js +0 -2
  504. package/dist/dashboard-web/chunks/team-federation-page-TTPVHFPX.js +0 -10
  505. package/dist/dashboard-web/chunks/v3-page-FVPUL665.js +0 -149
  506. package/dist/dashboard-web/chunks/whiteboards-page-HLCTYSSV.js +0 -1
  507. package/dist/dashboard-web/chunks/workflows-FCPM4S4D.js +0 -184
  508. package/dist/dashboard-web/skins/bluearchive-hero.webp +0 -0
  509. package/dist/dashboard-web/skins/dragonball-goku.webp +0 -0
  510. package/dist/dashboard-web/skins/dragonball-wukong.webp +0 -0
  511. package/dist/dashboard-web/skins/genshin-breeze.webp +0 -0
  512. package/dist/dashboard-web/skins/ikun-hero.webp +0 -0
  513. package/dist/dashboard-web/skins/prts-priestess.webp +0 -0
  514. package/dist/dashboard-web/skins/zzz-hero.webp +0 -0
  515. package/dist/dashboard-web/skins/zzz-pattern.svg +0 -25
@@ -0,0 +1,94 @@
1
+ import{a as T}from"./chunk-73EJP2MO.js";import{a as H,c as L}from"./chunk-BRTZFELS.js";import{d as S}from"./chunk-6TPODDDC.js";import{a as ne,d as V}from"./chunk-ZJING6FY.js";import{c as b}from"./chunk-XCPSHD3G.js";var c=b(ne(),1);function G(e,t){let s=t?`?${t}`:"";return`#/legacy-workflow/${encodeURIComponent(e)}${s}`}function B(e,t){return e===404&&!t}async function F(e=fetch){let t=await e("/api/v3/runs");if(!t.ok)return[];let s=await t.json();return Array.isArray(s.runs)?s.runs:[]}async function A(e,t=fetch){let s=await t(`/api/v3/runs/${encodeURIComponent(e)}`);return s.ok?{ok:!0,view:await s.json()}:{ok:!1,status:s.status}}async function O(e,t=fetch){return(await t(`/api/workflows/runs/${encodeURIComponent(e)}/snapshot`)).ok}var y={pending:"\u5F85\u673A",gateWaiting:"\u7B49\u5BA1\u6279",running:"\u8FD0\u884C\u4E2D",done:"\u5B8C\u6210",skipped:"\u5DF2\u8DF3\u8FC7",cancelled:"\u5DF2\u53D6\u6D88",blocked:"\u53D7\u963B",superseded:"\u5DF2\u5237\u65B0",failed:"\u5931\u8D25"},_={exit:"\u2713 \u901A\u8FC7",continue:"\u21BB \u7EE7\u7EED\u8FD4\u5DE5",exhausted:"\u26D4 \u8F6E\u6570\u8017\u5C3D"},g={nodeWidth:168,plainHeight:48,loopHeight:70,columnGap:226,verticalGap:30,padding:26,maxDots:8},v={width:104,height:30,columnGap:138,rowGap:42,padding:6};function W(e){return e==="succeeded"||e==="failed"}function J(e=typeof location<"u"?location.hash:""){let t=e.match(/^#\/workflows\/([^?#]+)/);if(!t)return null;try{return decodeURIComponent(t[1])}catch{return t[1]}}function $(e,t){return e.length>t?`${e.slice(0,t-1)}\u2026`:e}function M(e){return e.isLoop?g.loopHeight:g.plainHeight}function D(e){return e.nodes.filter(t=>!t.loop)}function X(e){let t=D(e),s=oe(t),o=new Map;for(let r of t){let d=s.get(r.id)??0,p=o.get(d);p?p.push(r):o.set(d,[r])}let i=[...o.keys()].sort((r,d)=>r-d),a=[],l=new Map,u=0;for(let r of i){let d=o.get(r)??[],p=g.padding;for(let m of d){let w={node:m,x:g.padding+r*g.columnGap,y:p,width:g.nodeWidth,height:M(m)};a.push(w),l.set(m.id,w),p+=w.height+g.verticalGap}u=Math.max(u,p-g.verticalGap+g.padding)}let f=g.padding*2+(i.length===0?0:Math.max(...i)*g.columnGap+g.nodeWidth),h=new Map(t.map(r=>[r.id,r])),x=[];for(let r of t){let d=l.get(r.id);if(d)for(let p of r.depends){let m=l.get(p),w=h.get(p);if(!m||!w)continue;let N=m.x+g.nodeWidth,I=m.y+M(w)/2,R=d.x,te=d.y+M(r)/2;x.push({fromId:p,toId:r.id,x1:N,y1:I,x2:R,y2:te,mx:(N+R)/2,live:r.status==="running"})}}return{width:f,height:u,nodes:a,edges:x}}function oe(e){let t=new Map(e.map(a=>[a.id,a])),s=new Map,o=new Set;function i(a){if(s.has(a))return s.get(a);if(o.has(a))return 0;o.add(a);let u=(t.get(a)?.depends??[]).filter(h=>t.has(h)),f=u.length?1+Math.max(...u.map(i)):0;return o.delete(a),s.set(a,f),f}for(let a of e)i(a.id);return s}function j(e,t){return(e?.nodes??[]).filter(s=>s.loop?.loopId===t)}function z(e,t,s){if(s&&t){let i=e.find(a=>a.id===t);if(i)return i}let o=e.filter(i=>i.status==="running");return o[o.length-1]??e[e.length-1]??null}function U(e){let t=new Map;for(let s of e){let o=s.loop?.iteration;if(o===void 0)continue;let i=t.get(o);i?i.push(s):t.set(o,[s])}return[...t.entries()].sort((s,o)=>s[0]-o[0]).map(([s,o])=>({iteration:s,instances:o}))}function E(e){let t=e.loopState?.maxIterations;return e.loopState&&t!==void 0?t+e.loopState.granted:void 0}function q(e,t){let s=new Map(e.map(r=>[r.id,r])),o=new Map;function i(r){if(o.has(r))return o.get(r);o.set(r,0);let d=(s.get(r)?.depends??[]).filter(m=>s.has(m)),p=d.length?1+Math.max(...d.map(i)):0;return o.set(r,p),p}let a=new Map,l=0,u=[],f=new Map;for(let r of e){let d=i(r.id),p=a.get(d)??0;a.set(d,p+1),l=Math.max(l,p);let m={templateId:r.id,node:t.get(r.id),x:v.padding+d*v.columnGap,y:v.padding+p*v.rowGap,width:v.width,height:v.height};u.push(m),f.set(r.id,m)}let h=o.size?Math.max(...o.values()):0,x=[];for(let r of e){let d=f.get(r.id);if(d)for(let p of r.depends){let m=f.get(p);if(!m)continue;let w=m.x+v.width,N=m.y+v.height/2,I=d.x,R=d.y+v.height/2;x.push({fromId:p,toId:r.id,x1:w,y1:N,x2:I,y2:R,mx:(w+I)/2,live:t.get(r.id)?.status==="running"})}}return{width:v.padding*2+(e.length?h*v.columnGap+v.width:0),height:v.padding*2+l*v.rowGap+v.height,nodes:u,edges:x}}function P(e){let t=e.webTerminal;return`${t?.status??"-"}|${t?.sessionId??"-"}|${t?.webPort??"-"}|${e.hasPtyLog?"1":"0"}`}function Y(e,t,s){e.setAttribute("data-run-id",t),e.setAttribute("data-node-id",s.id),e.innerHTML=se(t,s).html}function se(e,t,s={}){let o=P(t),i=t.webTerminal;if(i?.status==="live"&&i.webPort&&i.webPort>0)return{kind:"live",signature:o,html:ie(i.webPort,i.sessionId,s.host)};if(t.hasPtyLog)return{kind:"replay",signature:o,html:ae(e,t.id,i?.status==="closed")};let a=i?.status==="live"?"\u7EC8\u7AEF\u6B63\u5728\u542F\u52A8\uFF0C\u7A0D\u540E\u5237\u65B0":"\u6682\u65E0\u7EC8\u7AEF\u8BB0\u5F55";return{kind:"empty",signature:o,html:re(a)}}function ie(e,t,s){let o=de(e,s,t);return`<div class="v3-terminal-panel">
2
+ <div class="v3-terminal-head">
3
+ <span class="v3-terminal-dot live"></span>
4
+ <span>\u5B9E\u65F6\u7EC8\u7AEF\uFF08\u53EA\u8BFB\uFF09</span>
5
+ <span class="muted">:${e}</span>
6
+ <a class="btn-link" href="${k(o)}" target="_blank" rel="noopener">\u65B0\u7A97\u53E3\u6253\u5F00</a>
7
+ </div>
8
+ <iframe class="wf-terminal-frame v3-terminal-frame" src="${k(o)}" title="v3 live terminal" loading="lazy"></iframe>
9
+ </div>`}function ae(e,t,s){let o=`/api/v3/runs/${encodeURIComponent(e)}/nodes/${encodeURIComponent(t)}/pty-log`,i=ce(o,`${e} / ${t}`);return`<div class="v3-terminal-panel">
10
+ <div class="v3-terminal-head">
11
+ <span class="v3-terminal-dot ${s?"closed":"replay"}"></span>
12
+ <span>${s?"\u7EC8\u7AEF\u56DE\u653E":"\u7EC8\u7AEF\u8BB0\u5F55"}</span>
13
+ <span class="muted">PTY log</span>
14
+ <a class="btn-link" href="${k(o)}" target="_blank" rel="noopener">\u4E0B\u8F7D/\u6253\u5F00\u539F\u59CB\u65E5\u5FD7</a>
15
+ </div>
16
+ <iframe class="wf-terminal-frame v3-terminal-frame" srcdoc="${k(i)}" title="v3 terminal replay" loading="lazy"></iframe>
17
+ </div>`}function re(e){return`<div class="v3-terminal-empty muted">${C(e)}</div>`}function de(e,t,s){return s&&typeof window<"u"&&window.location.protocol==="https:"?`${window.location.origin}/s/${encodeURIComponent(s)}`:`http://${t??le()}:${e}/`}function le(){return typeof window>"u"?"127.0.0.1":window.location.hostname||"127.0.0.1"}function ce(e,t){let s=JSON.stringify(e);return`<!doctype html>
18
+ <html>
19
+ <head>
20
+ <meta charset="utf-8">
21
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@xterm/xterm@5.5.0/css/xterm.css">
22
+ <style>
23
+ html,body{margin:0;height:100%;background:#0d1117;color:#c9d1d9;font:12px ui-monospace,SFMono-Regular,Menlo,monospace}
24
+ #bar{height:31px;display:flex;align-items:center;gap:10px;padding:0 10px;background:#161b22;border-bottom:1px solid #30363d;box-sizing:border-box}
25
+ #status{margin-left:auto;color:#8b949e;white-space:nowrap}
26
+ #term{height:calc(100% - 31px);padding:4px;box-sizing:border-box;overflow:auto}
27
+ a{color:#58a6ff;text-decoration:none}
28
+ </style>
29
+ </head>
30
+ <body>
31
+ <div id="bar"><span>${C(t)}</span><span id="status">loading...</span></div>
32
+ <div id="term"></div>
33
+ <script src="https://cdn.jsdelivr.net/npm/@xterm/xterm@5.5.0/lib/xterm.js"><\/script>
34
+ <script src="https://cdn.jsdelivr.net/npm/@xterm/addon-fit@0.10.0/lib/addon-fit.js"><\/script>
35
+ <script>
36
+ (function(){
37
+ var endpoint=${s};
38
+ // v3 ephemeral workers spawn their PTY at DEFAULT_RENDER_COLS (=160, see
39
+ // worker.ts) and never adopt, so the captured stream's TUI / box-drawing
40
+ // is exactly 160 cols wide. Fitting it into a narrower (or oddly-measured)
41
+ // grid re-wraps those fixed-width lines into a stair-stepped mess and
42
+ // wastes the panel. So we render at the capture width and let FitAddon
43
+ // only size the ROW count to the iframe height (cols pinned back to 160).
44
+ var COLS=160;
45
+ var status=document.getElementById('status');
46
+ var termEl=document.getElementById('term');
47
+ if(!window.Terminal){status.textContent='xterm.js failed to load';return;}
48
+ var term=new Terminal({
49
+ cols:COLS,
50
+ convertEol:false,
51
+ scrollback:100000,
52
+ fontSize:13,
53
+ disableStdin:true,
54
+ theme:{background:'#0d1117',foreground:'#c9d1d9',cursor:'#c9d1d9'}
55
+ });
56
+ var fit=null;
57
+ if(window.FitAddon){fit=new window.FitAddon.FitAddon();term.loadAddon(fit);}
58
+ term.open(termEl);
59
+ function doFit(){
60
+ try{if(fit)fit.fit()}catch(_){}
61
+ if(term.cols!==COLS)term.resize(COLS,term.rows||24);
62
+ }
63
+ doFit(); window.addEventListener('resize',doFit);
64
+ fetch(endpoint,{credentials:'include'}).then(function(res){
65
+ if(!res.ok){
66
+ if(res.status===401){status.textContent='\u9700\u8981\u767B\u5F55 dashboard \u540E\u67E5\u770B\u56DE\u653E';}
67
+ else if(res.status===404){status.textContent='\u6CA1\u6709 PTY \u65E5\u5FD7';}
68
+ else{status.textContent='\u52A0\u8F7D\u5931\u8D25 HTTP '+res.status;}
69
+ return null;
70
+ }
71
+ var total=Number(res.headers.get('x-botmux-log-bytes')||0);
72
+ var served=Number(res.headers.get('x-botmux-served-bytes')||0);
73
+ var truncated=res.headers.get('x-botmux-truncated')==='1';
74
+ status.textContent=truncated
75
+ ? 'showing tail '+formatBytes(served)+' / '+formatBytes(total)
76
+ : 'loaded '+formatBytes(total);
77
+ return res.arrayBuffer();
78
+ }).then(function(buf){
79
+ if(!buf)return;
80
+ term.write(new TextDecoder().decode(buf));
81
+ setTimeout(doFit,0);
82
+ }).catch(function(err){
83
+ status.textContent='\u52A0\u8F7D\u5931\u8D25: '+(err&&err.message?err.message:String(err));
84
+ });
85
+ function formatBytes(n){
86
+ if(!Number.isFinite(n)||n<=0)return '0 B';
87
+ var u=['B','KiB','MiB','GiB'];var i=0;
88
+ while(n>=1024&&i<u.length-1){n/=1024;i++;}
89
+ return (i===0?String(n):n.toFixed(1))+' '+u[i];
90
+ }
91
+ })();
92
+ <\/script>
93
+ </body>
94
+ </html>`}function C(e){return e.replace(/[&<>"']/g,t=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[t])}function k(e){return C(e).replace(/`/g,"&#96;")}var n=b(V(),1);function Z(){return typeof document<"u"&&document.hidden}function ue(){let[e,t]=(0,c.useState)([]);return(0,c.useEffect)(()=>{let s=!1,o=null,i=()=>{o=window.setTimeout(()=>{a()},2e3)};async function a(){if(!s){if(!Z())try{let l=await F();s||t(l)}catch{}s||i()}}return a(),()=>{s=!0,o!==null&&window.clearTimeout(o)}},[]),e}function me(e){let[t,s]=(0,c.useState)(null),[o,i]=(0,c.useState)("");return(0,c.useEffect)(()=>{let a=!1,l=null,u=!1,f=()=>{l=window.setTimeout(()=>{x()},2e3)};async function h(r){if(!B(r,u))return!1;u=!0;try{let d=await O(e);return a||!d?!1:(window.location.replace(G(e,location.hash.split("?")[1])),!0)}catch{return!1}}async function x(){if(a)return;let r=!1;if(!Z())try{let d=await A(e);if(a)return;if(d.ok)s(d.view),i(d.view.runStatus),r=W(d.view.runStatus);else{if(await h(d.status))return;i(d.status===404?"not found":`HTTP ${d.status}`)}}catch{}!a&&!r&&f()}return x(),()=>{a=!0,l!==null&&window.clearTimeout(l)}},[e]),{view:t,statusText:o}}function pe(){let e=L(),t=ue(),s=(0,n.jsxs)("div",{className:"page-heading-actions v3r-run-toolbar",children:[(0,n.jsx)("span",{className:"v3r-run-count",children:t.length}),(0,n.jsx)(T,{active:"v3"})]});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"page-heading",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"eyebrow",children:e("nav.workflows")}),(0,n.jsx)("h1",{children:e("nav.workflows")})]}),s]}),(0,n.jsx)("section",{className:"overview-block v3r-runs-section",children:(0,n.jsx)("div",{className:"v3r-run-list",children:t.length?t.map(o=>(0,n.jsxs)("a",{className:"v3r-run-card",href:`#/workflows/${encodeURIComponent(o.runId)}`,children:[(0,n.jsxs)("span",{className:"v3r-run-main",children:[(0,n.jsx)("code",{className:"v3r-runid",children:o.runId}),(0,n.jsxs)("small",{children:["\u8282\u70B9 ",o.nodeCount]})]}),(0,n.jsx)("span",{className:`v3r-pill rs-${o.runStatus}`,children:o.runStatus})]},o.runId)):(0,n.jsxs)("div",{className:"empty v3r-empty",children:["\u6682\u65E0\u5DE5\u4F5C\u6D41\u8FD0\u884C\uFF08\u7528 ",(0,n.jsx)("code",{children:"/workflow new"})," \u53D1\u8D77\u4E00\u4E2A\uFF09"]})})})]})}function ge(e){let t=L(),{view:s,statusText:o}=me(e.runId),[i,a]=(0,c.useState)(null),[l,u]=(0,c.useState)(null),[f,h]=(0,c.useState)(!1);(0,c.useEffect)(()=>{a(null),u(null),h(!1)},[e.runId]),(0,c.useEffect)(()=>{s&&a(m=>m&&s.nodes.some(w=>w.id===m)?m:D(s)[0]?.id??s.nodes[0]?.id??null)},[s]);let x=(0,c.useCallback)(m=>{a(m),u(null),h(!1)},[]),r=(0,c.useCallback)(m=>{u(m),h(!0)},[]),d=s?.nodes.find(m=>m.id===i)??null,p=s?`v3r-pill rs-${s.runStatus}`:"v3r-pill";return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"page-heading v3r-detail-heading",children:[(0,n.jsxs)("div",{className:"v3r-title-row",children:[(0,n.jsx)("p",{className:"eyebrow",children:t("nav.workflows")}),(0,n.jsxs)("a",{href:"#/workflows",className:"btn-link v3r-back-link",children:["\u2190 ",t("nav.workflows")]}),(0,n.jsx)("h1",{children:e.runId}),(0,n.jsx)("span",{className:`${p} v3r-run-status-pill`,children:o})]}),(0,n.jsx)("div",{className:"page-heading-actions",children:(0,n.jsx)(T,{active:"v3"})})]}),(0,n.jsxs)("div",{className:"v3r-wrap",children:[(0,n.jsxs)("section",{className:"overview-block v3r-graph-section",children:[(0,n.jsx)(S,{title:"\u8FD0\u884C\u62D3\u6251",hint:s?`${s.nodes.length} \u4E2A\u8282\u70B9`:o}),(0,n.jsxs)("div",{className:"v3r-graph-card",children:[(0,n.jsx)(ve,{view:s,selectedId:i,onSelect:x}),(0,n.jsx)(fe,{})]})]}),(0,n.jsxs)("section",{className:"overview-block v3r-node-section",children:[(0,n.jsx)(S,{title:"\u8282\u70B9\u8BE6\u60C5",hint:d?(0,n.jsxs)("span",{className:`v3r-pill v3r-node-status-pill st-${d.status}`,children:[(0,n.jsx)("i",{className:"dot"}),y[d.status]]}):"\u9009\u62E9\u4E00\u4E2A\u8282\u70B9"}),(0,n.jsx)(ye,{runId:e.runId,view:s,node:d,instanceId:l,instancePinned:f,onInstanceSelect:r})]})]})]})}function fe(){return(0,n.jsxs)("div",{className:"v3r-legend",children:[(0,n.jsx)("span",{className:"lg st-pending",children:"\u5F85\u673A"}),(0,n.jsx)("span",{className:"lg st-running",children:"\u8FD0\u884C\u4E2D"}),(0,n.jsx)("span",{className:"lg st-gateWaiting",children:"\u7B49\u5BA1\u6279"}),(0,n.jsx)("span",{className:"lg st-done",children:"\u5B8C\u6210"}),(0,n.jsx)("span",{className:"lg st-skipped",children:"\u5DF2\u8DF3\u8FC7"}),(0,n.jsx)("span",{className:"lg st-cancelled",children:"\u5DF2\u53D6\u6D88"}),(0,n.jsx)("span",{className:"lg st-blocked",children:"\u53D7\u963B"}),(0,n.jsx)("span",{className:"lg st-failed",children:"\u5931\u8D25"}),(0,n.jsx)("span",{className:"lg lg-loop",children:"\u27F3 \u5FAA\u73AF\u5BB9\u5668"})]})}function ve(e){let t=(0,c.useMemo)(()=>e.view?X(e.view):null,[e.view]),s=t?`${t.width}:${t.height}:${t.nodes.map(i=>i.node.id).join("\0")}`:"",o=(0,c.useRef)(null);return(0,c.useLayoutEffect)(()=>{let i=o.current;if(!i||!s)return;let a=0,l=()=>{a=0,i.scrollLeft=Math.max(0,(i.scrollWidth-i.clientWidth)/2),i.scrollTop=Math.max(0,(i.scrollHeight-i.clientHeight)/2)},u=()=>{a&&window.cancelAnimationFrame(a),a=window.requestAnimationFrame(l)};u();let f=typeof ResizeObserver>"u"?null:new ResizeObserver(u);f?.observe(i);let h=i.querySelector(".v3r-graph-stage");return h&&f?.observe(h),()=>{a&&window.cancelAnimationFrame(a),f?.disconnect()}},[s]),(0,n.jsx)("div",{id:"v3-graph",className:"v3r-graph",ref:o,children:t?(0,n.jsx)("div",{className:"v3r-graph-stage",children:(0,n.jsxs)("svg",{width:t.width,height:t.height,viewBox:`0 0 ${t.width} ${t.height}`,children:[(0,n.jsx)("defs",{children:(0,n.jsx)("marker",{id:"v3arrow",viewBox:"0 0 10 10",refX:"9",refY:"5",markerWidth:"7",markerHeight:"7",orient:"auto-start-reverse",children:(0,n.jsx)("path",{d:"M0,0 L10,5 L0,10 z",fill:"var(--faint, #8b98aa)"})})}),t.edges.map(i=>(0,n.jsx)("path",{className:`v3r-edge${i.live?" live":""}`,d:`M${i.x1},${i.y1} C${i.mx},${i.y1} ${i.mx},${i.y2} ${i.x2},${i.y2}`,markerEnd:"url(#v3arrow)"},`${i.fromId}->${i.toId}`)),t.nodes.map(i=>(0,n.jsx)(he,{box:i,selected:i.node.id===e.selectedId,onSelect:e.onSelect},i.node.id))]})}):null})}function he(e){let{box:t,selected:s}=e,o=t.node;return o.isLoop?(0,n.jsx)(we,{box:t,selected:s,onSelect:e.onSelect}):(0,n.jsxs)("g",{className:`v3r-node st-${o.status}${s?" sel":""}`,"data-node":o.id,onClick:()=>e.onSelect(o.id),children:[(0,n.jsx)("rect",{className:"v3r-box",x:t.x,y:t.y,width:g.nodeWidth,height:g.plainHeight,rx:"10"}),(0,n.jsx)("text",{className:"v3r-nid",x:t.x+14,y:t.y+20,children:$(o.id,18)}),(0,n.jsx)("text",{className:"v3r-nstatus",x:t.x+14,y:t.y+37,children:y[o.status]})]})}function we(e){let{box:t,selected:s}=e,o=t.node,i=o.loopState,a=E(o),l=i?`${y[o.status]} \xB7 \u7B2C${i.iteration}${a!==void 0?`/${a}`:""}\u8F6E`:`${y[o.status]} \xB7 loop`,u=i?.maxIterations;return(0,n.jsxs)("g",{className:`v3r-node v3r-loopnode st-${o.status}${s?" sel":""}`,"data-node":o.id,onClick:()=>e.onSelect(o.id),children:[(0,n.jsx)("rect",{className:"v3r-cap",x:t.x-4,y:t.y-4,width:g.nodeWidth+8,height:g.loopHeight+8,rx:"14"}),(0,n.jsx)("rect",{className:"v3r-box",x:t.x,y:t.y,width:g.nodeWidth,height:g.loopHeight,rx:"10"}),(0,n.jsx)("text",{className:"v3r-spin",x:t.x+14,y:t.y+21,children:"\u27F3"}),(0,n.jsx)("text",{className:"v3r-nid",x:t.x+30,y:t.y+21,children:$(o.id,16)}),(0,n.jsx)("text",{className:"v3r-nstatus",x:t.x+14,y:t.y+39,children:l}),i&&a!==void 0&&a<=g.maxDots?(0,n.jsx)(xe,{node:o,x:t.x,y:t.y,budget:a,maxIterations:u}):null]})}function xe(e){let t=e.node.loopState,s=e.y+g.loopHeight-13,o=Array.from({length:e.budget},(i,a)=>a+1);return(0,n.jsxs)(n.Fragment,{children:[o.map(i=>{let a=i<t.iteration?"v3r-dot done":i===t.iteration?`v3r-dot cur${e.node.status==="running"?" live":""}`:"v3r-dot todo",l=e.maxIterations!==void 0&&i>e.maxIterations?" grant":"";return(0,n.jsx)("circle",{className:`${a}${l}`,cx:e.x+14+(i-1)*15,cy:s,r:"3.6"},i)}),t.lastDecision==="exit"?(0,n.jsx)("text",{className:"v3r-dots-verdict ok",x:e.x+14+e.budget*15+4,y:s+4,children:"\u2713"}):null,t.lastDecision==="exhausted"&&e.node.status==="blocked"?(0,n.jsx)("text",{className:"v3r-dots-verdict warn",x:e.x+14+e.budget*15+4,y:s+4,children:"\u26A0"}):null]})}function ye(e){let t=e.node,s=(0,c.useMemo)(()=>t?.isLoop?j(e.view,t.id):[],[t,e.view]),o=t?.isLoop?z(s,e.instanceId,e.instancePinned):t,i=t?.isLoop?o?.id??null:null;return t?(0,n.jsxs)("div",{id:"v3-node-panel",className:"v3r-panel",children:[(0,n.jsxs)("div",{id:"v3-node-meta",children:[t.goal?(0,n.jsx)("p",{className:"v3r-goal",children:t.goal}):null,t.depends.length?(0,n.jsxs)("p",{className:"v3r-deps",children:[(0,n.jsx)("span",{children:"\u4F9D\u8D56"}),t.depends.map(a=>(0,n.jsx)("span",{className:"v3r-dep",children:a},a))]}):null,t.errorClass?(0,n.jsx)(be,{node:t}):null,t.isLoop?(0,n.jsx)(Ie,{runId:e.runId,node:t,instances:s,activeInstanceId:i,onInstanceSelect:e.onInstanceSelect}):null]}),(0,n.jsx)("div",{id:"v3-inst-strip",children:t.isLoop&&o?(0,n.jsx)(Ne,{node:o,auto:!e.instancePinned}):null}),(0,n.jsx)(Ve,{runId:e.runId,node:o})]}):(0,n.jsx)("div",{id:"v3-node-panel",className:"v3r-panel",children:(0,n.jsx)("p",{className:"muted",children:"\u70B9\u4E00\u4E2A\u8282\u70B9\u770B\u8BE6\u60C5\u4E0E\u7EC8\u7AEF"})})}function be(e){let t=e.node;return(0,n.jsxs)("p",{className:"v3r-err",children:["\u539F\u56E0\uFF1A",t.errorClass,t.errorCode?` (${t.errorCode})`:"",t.status==="blocked"&&!t.isLoop?(0,n.jsxs)(n.Fragment,{children:[" \u2014 \u98DE\u4E66\u5361\u7247\u6216 ",(0,n.jsx)("code",{children:"botmux workflow retry"})," \u53EF\u91CD\u8BD5"]}):null]})}function Ne(e){let t=e.node.loop;return(0,n.jsxs)("div",{className:"v3r-inst-strip",children:[(0,n.jsx)("span",{className:"lbl",children:"\u5B9E\u4F8B\u7EC8\u7AEF"}),(0,n.jsx)("span",{className:"v3r-nodeid sm",children:e.node.id}),(0,n.jsxs)("span",{className:`v3r-pill st-${e.node.status}`,children:[(0,n.jsx)("i",{className:"dot"}),y[e.node.status]]}),(0,n.jsxs)("span",{className:"muted",children:["\u7B2C ",t.iteration," \u8F6E \xB7 ",t.bodyNodeId,e.auto?" \xB7 \u81EA\u52A8\u8DDF\u968F":""]})]})}function Ie(e){let t=e.node.loopState;if(!t)return(0,n.jsx)("p",{className:"muted",children:"loop \u672A\u5F00\u59CB"});let s=E(e.node),o=new Map(t.decisions.map(a=>[a.iteration,a.decision])),i=U(e.instances);return(0,n.jsxs)("div",{className:"v3r-loop-sec",children:[(0,n.jsxs)("div",{className:"v3r-loop-meter",children:[(0,n.jsxs)("span",{className:"num",children:["\u7B2C ",(0,n.jsx)("b",{children:t.iteration}),s!==void 0?(0,n.jsxs)(n.Fragment,{children:[" / ",(0,n.jsx)("b",{children:s})]}):null," \u8F6E"]}),t.granted>0?(0,n.jsxs)("span",{className:"v3r-granted-tag",children:["\u542B\u4EBA\u5DE5\u8FFD\u52A0 +",t.granted]}):null,t.lastDecision==="exit"?(0,n.jsx)("span",{className:"v3r-verdict vd-exit",children:"\u2713 \u5DF2\u6536\u655B"}):null]}),(0,n.jsx)("div",{className:"v3r-rounds",children:i.map(a=>{let l=o.get(a.iteration),u=a.iteration===t.iteration,f=t.maxIterations!==void 0&&a.iteration>t.maxIterations;return(0,n.jsxs)("div",{className:`v3r-round${u?" cur":""}${l?` vd-${l}`:""}`,children:[(0,n.jsxs)("div",{className:"v3r-round-head",children:[(0,n.jsxs)("span",{className:"rn",children:["R",a.iteration]}),f?(0,n.jsx)("span",{className:"v3r-granted-tag",children:"\u2795 \u8FFD\u52A0\u8F6E"}):null,l?(0,n.jsx)("span",{className:`v3r-verdict vd-${l}`,children:_[l]}):u&&e.node.status==="running"?(0,n.jsx)("span",{className:"v3r-verdict vd-live",children:"\u25B6 \u8FDB\u884C\u4E2D"}):null]}),(0,n.jsx)(Re,{template:t.bodyTemplate,instances:a.instances,activeInstanceId:e.activeInstanceId,onInstanceSelect:e.onInstanceSelect})]},a.iteration)})}),e.node.status==="blocked"?(0,n.jsxs)("div",{className:"v3r-cta",children:["\u26A0 \u8F6E\u6570\u8017\u5C3D\uFF0C\u7B49\u4EBA\u8FFD\u52A0 \u2014 \u98DE\u4E66\u5361\u7247\u70B9\u300C\u2795 \u8FFD\u52A0 1 \u8F6E\u300D\uFF0C\u6216 ",(0,n.jsxs)("code",{children:["botmux workflow grant ",e.runId]})]}):null]})}function Re(e){let t=(0,c.useMemo)(()=>new Map(e.instances.map(o=>[o.loop.bodyNodeId,o])),[e.instances]),s=(0,c.useMemo)(()=>q(e.template,t),[e.template,t]);return(0,n.jsxs)("svg",{className:"v3r-mini-svg",width:s.width,height:s.height,viewBox:`0 0 ${s.width} ${s.height}`,children:[(0,n.jsx)("defs",{children:(0,n.jsx)("marker",{id:"v3arrow-mini",viewBox:"0 0 10 10",refX:"9",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto-start-reverse",children:(0,n.jsx)("path",{d:"M0,0 L10,5 L0,10 z",fill:"var(--faint, #8b98aa)"})})}),s.edges.map(o=>(0,n.jsx)("path",{className:`v3r-edge${o.live?" live":""}`,d:`M${o.x1},${o.y1} C${o.mx},${o.y1} ${o.mx},${o.y2} ${o.x2},${o.y2}`,markerEnd:"url(#v3arrow-mini)"},`${o.fromId}->${o.toId}`)),s.nodes.map(o=>{let i=o.node,a=i?.status??"pending",l=i?.id===e.activeInstanceId;return(0,n.jsxs)("g",{className:`v3r-node v3r-mini st-${a}${l?" sel":""}${i?"":" ghost"}`,"data-sel":i?.id,style:i?{cursor:"pointer"}:void 0,onClick:u=>{i&&(u.stopPropagation(),e.onInstanceSelect(i.id))},children:[(0,n.jsx)("rect",{className:"v3r-box",x:o.x,y:o.y,width:o.width,height:o.height,rx:"8"}),(0,n.jsx)("circle",{className:"v3r-mini-dot",cx:o.x+13,cy:o.y+o.height/2,r:"3.4"}),(0,n.jsx)("text",{className:"v3r-nid",x:o.x+24,y:o.y+o.height/2+4,children:$(o.templateId,12)})]},o.templateId)})]})}function Ve(e){let t=(0,c.useRef)(null),s=(0,c.useRef)(null),o=e.node?`${e.runId}|${e.node.id}|${P(e.node)}`:null;return(0,c.useEffect)(()=>{let i=t.current;if(i){if(!e.node||!o){i.innerHTML="",s.current=null;return}s.current!==o&&(Y(i,e.runId,e.node),s.current=o)}},[e.runId,e.node,o]),(0,n.jsx)("div",{id:"v3-term-slot",className:"v3r-term-slot",ref:t})}function Q(){let e=J();return(0,n.jsx)("section",{className:"page workflows-page v3-page",children:e?(0,n.jsx)(ge,{runId:e}):(0,n.jsx)(pe,{})})}var ee=b(V(),1);function Ae(e){return H(e,(0,ee.jsx)(Q,{}))}export{Ae as renderV3RunsPage};
@@ -0,0 +1 @@
1
+ import{a as W,c as B}from"./chunk-BRTZFELS.js";import{c as T,j as C}from"./chunk-6TPODDDC.js";import{a as O,d as P}from"./chunk-ZJING6FY.js";import{c as R}from"./chunk-XCPSHD3G.js";var r=R(O(),1);var e=R(P(),1);function x(t){let a=Date.parse(t);if(!a)return t||"-";let o=Math.max(0,Math.floor((Date.now()-a)/1e3));if(o<60)return`${o}s ago`;let i=Math.floor(o/60);if(i<60)return`${i}m ago`;let n=Math.floor(i/60);return n<24?`${n}h ago`:`${Math.floor(n/24)}d ago`}function F(t){return t.chatId?.trim()||"__local__"}function G(t,a){if(t==="__local__")return"\u672A\u7ED1\u5B9A\u7FA4 / \u672C\u5730\u767D\u677F";let o=a.get(t);return o&&o!==t?`${o} (${t})`:t}function K(t,a){let o=new Map;for(let i of t){let n=F(i),c=o.get(n)??[];c.push(i),o.set(n,c)}return[...o.entries()].map(([i,n])=>({chatId:i,label:G(i,a),rows:[...n].sort((c,b)=>b.updatedAt.localeCompare(c.updatedAt))})).sort((i,n)=>i.label.localeCompare(n.label))}function z(){return decodeURIComponent((location.hash.match(/^#\/whiteboards\/([^/]+)/)?.[1]??"").trim())}async function E(t,a){let o=await fetch(`/api/whiteboards/${encodeURIComponent(t)}`),i=await o.json().catch(()=>({}));if(o.ok)return{id:t,content:String(i.content??""),row:a.find(n=>n.id===t)}}async function J(t){let a=new Map;if(!t?.ok)return a;let o=await t.json().catch(()=>({})),i=Array.isArray(o.chats)?o.chats:[];for(let n of i)n.chatId&&a.set(String(n.chatId),String(n.name||n.chatId));return a}function Q(t){let a=t.row,o=a.title||a.id;return(0,e.jsxs)("a",{className:`wb-item${t.active?" active":""}`,"data-whiteboard-id":a.id,href:`#/whiteboards/${encodeURIComponent(a.id)}`,onClick:i=>{i.preventDefault(),t.onSelect(a.id)},children:[(0,e.jsx)("div",{className:"wb-item-head",children:(0,e.jsxs)("div",{className:"wb-item-main",children:[(0,e.jsx)("strong",{children:(0,e.jsx)(C,{text:o,textClassName:"wb-title-scroll"})}),(0,e.jsx)("span",{className:"wb-id-text",title:a.id,children:a.id})]})}),(0,e.jsxs)("div",{className:"wb-item-foot",children:[(0,e.jsxs)("div",{className:"wb-item-meta",children:[(0,e.jsx)("span",{children:x(a.updatedAt)}),(0,e.jsx)("span",{children:"\xB7"}),(0,e.jsxs)("span",{children:["log ",a.logCount]})]}),(0,e.jsx)("span",{className:"wb-scope",title:a.scope,children:a.scope})]})]})}function p(t){let a=t.value||"-";return(0,e.jsxs)("div",{className:"wb-meta-card",title:a,children:[(0,e.jsx)("span",{children:t.label}),(0,e.jsx)("strong",{children:a})]})}function V(t){let a=t.selected;if(!a)return(0,e.jsx)("p",{className:"empty",children:"\u9009\u62E9\u5DE6\u4FA7\u767D\u677F\u67E5\u770B meta \u548C board.md\u3002"});let o=a.row,i=o?.chatId?G(o.chatId,t.groupNames):"\u672A\u7ED1\u5B9A\u7FA4 / \u672C\u5730\u767D\u677F",n=o?.title||a.id;return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)("div",{className:"wb-detail-head",children:[(0,e.jsxs)("div",{className:"wb-detail-title",children:[(0,e.jsx)("p",{className:"eyebrow",children:"WHITEBOARD"}),(0,e.jsx)("h2",{title:n,children:n}),(0,e.jsx)("code",{title:a.id,children:a.id})]}),(0,e.jsx)("button",{type:"button",className:"danger","data-delete-whiteboard":!0,onClick:t.onDelete,children:"\u5220\u9664\u767D\u677F"})]}),(0,e.jsxs)("div",{className:"wb-meta-grid",children:[(0,e.jsx)(p,{label:"\u6240\u5C5E\u7FA4",value:i}),(0,e.jsx)(p,{label:"\u8303\u56F4",value:o?.scope??"-"}),(0,e.jsx)(p,{label:"\u6700\u8FD1\u66F4\u65B0",value:o?.updatedAt?x(o.updatedAt):"-"}),(0,e.jsx)(p,{label:"\u6765\u6E90\u76EE\u5F55",value:o?.workingDir??"-"})]}),(0,e.jsxs)("details",{className:"wb-admin-info",children:[(0,e.jsx)("summary",{children:"\u7BA1\u7406\u4FE1\u606F / \u6587\u4EF6\u8DEF\u5F84"}),(0,e.jsx)("code",{children:o?.path??""})]}),(0,e.jsxs)("section",{className:"wb-board-panel",children:[(0,e.jsxs)("div",{className:"wb-board-panel-head",children:[(0,e.jsx)("strong",{children:"board.md"}),(0,e.jsx)("span",{children:"\u53EA\u8BFB\u9884\u89C8"})]}),(0,e.jsx)("pre",{children:a.content||"\uFF08\u6682\u65E0\u5185\u5BB9\uFF09"})]})]})}function X(t){let a=t.selected.row?.title||t.selected.id;return(0,e.jsx)("div",{className:"wb-delete-backdrop","data-delete-modal":!0,onClick:o=>{o.target===o.currentTarget&&t.onCancel()},children:(0,e.jsxs)("div",{className:"wb-delete-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"wb-delete-title",children:[(0,e.jsxs)("div",{className:"wb-delete-body",children:[(0,e.jsx)("div",{className:"wb-delete-mark","aria-hidden":"true",children:"!"}),(0,e.jsxs)("div",{children:[(0,e.jsx)("h3",{id:"wb-delete-title",children:"\u5220\u9664\u767D\u677F\uFF1F"}),(0,e.jsxs)("p",{children:["\u5C06\u5220\u9664 ",(0,e.jsx)("strong",{children:a}),"\uFF08",(0,e.jsx)("code",{children:t.selected.id}),"\uFF09\u7684 board\u3001log\u3001meta\uFF0C\u5E76\u6E05\u7406\u9ED8\u8BA4\u7ED1\u5B9A\u548C\u4F1A\u8BDD\u5F15\u7528\u3002\u6B64\u64CD\u4F5C\u4E0D\u53EF\u6062\u590D\u3002"]})]})]}),(0,e.jsxs)("div",{className:"actions wb-delete-actions",children:[(0,e.jsx)("button",{type:"button","data-delete-cancel":!0,onClick:t.onCancel,disabled:t.deleting,children:"\u53D6\u6D88"}),(0,e.jsx)("button",{type:"button",className:"danger","data-delete-confirm":!0,onClick:t.onConfirm,disabled:t.deleting,children:t.deleting?"\u5220\u9664\u4E2D...":"\u786E\u8BA4\u5220\u9664"})]})]})})}function Y(){let t=B(),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),[i,n]=(0,r.useState)(!1),[c,b]=(0,r.useState)([]),[g,_]=(0,r.useState)(()=>new Map),[m,f]=(0,r.useState)(),[H,S]=(0,r.useState)(!0),[k,M]=(0,r.useState)(null),[u,h]=(0,r.useState)(null),[L,D]=(0,r.useState)(!1),I=(0,r.useMemo)(()=>K(c,g),[c,g]);(0,r.useEffect)(()=>{a.current=!0;let s=z();async function d(){S(!0);try{let[l,y]=await Promise.all([fetch("/api/whiteboards"),fetch("/api/groups").catch(()=>null)]),w=await l.json().catch(()=>({}));if(!l.ok)throw new Error(w?.error??`HTTP ${l.status}`);let q=await J(y),$=Array.isArray(w.whiteboards)?w.whiteboards:[],A;if(s&&(A=await E(s,$)),!a.current)return;n(w.enabled===!0),b($),_(q),f(A),M(null)}catch(l){a.current&&M(l instanceof Error?l.message:String(l))}finally{a.current&&S(!1)}}return d(),()=>{a.current=!1,o.current+=1}},[]);async function U(s){let d=o.current+1;o.current=d;let l=await E(s,c);!a.current||o.current!==d||!l||(f(l),window.history.replaceState(null,"",`#/whiteboards/${encodeURIComponent(s)}`))}async function j(){if(u){D(!0);try{let s=await fetch(`/api/whiteboards/${encodeURIComponent(u.id)}`,{method:"DELETE"}),d=await s.json().catch(()=>({}));if(!s.ok||d.ok===!1)throw new Error(d?.error??`HTTP ${s.status}`);if(!a.current)return;b(l=>l.filter(y=>y.id!==u.id)),m?.id===u.id&&(f(void 0),window.history.replaceState(null,"","#/whiteboards")),h(null)}catch(s){a.current&&window.alert(`\u5220\u9664\u5931\u8D25\uFF1A${s instanceof Error?s.message:String(s)}`)}finally{a.current&&D(!1)}}}let v="\u767D\u677F\u80FD\u529B\u5F53\u524D\u5173\u95ED\uFF1A\u4E0D\u4F1A\u81EA\u52A8\u521B\u5EFA/\u7ED1\u5B9A\u767D\u677F\uFF0C\u4E5F\u4E0D\u4F1A\u6CE8\u5165\u5230 agent prompt\u3002\u5386\u53F2\u767D\u677F\u4EC5\u5728 dashboard \u4E2D\u53EA\u8BFB\u53EF\u89C1\uFF0C\u53EF\u5728\u6B64\u6E05\u7406\u3002",N=(s=!1)=>(0,e.jsx)("div",{className:"page-heading",children:(0,e.jsxs)("div",{children:[(0,e.jsx)("p",{className:"eyebrow",children:t("nav.whiteboards")}),(0,e.jsx)("h1",{children:t("nav.whiteboards")}),s?(0,e.jsx)("span",{className:"wb-disabled-pill",title:v,"aria-label":v,children:v}):null]})});return k?(0,e.jsxs)("section",{className:"page whiteboards-page",children:[N(),(0,e.jsxs)("p",{className:"hint-warn",children:["\u52A0\u8F7D\u767D\u677F\u5931\u8D25\uFF1A",k]})]}):H?(0,e.jsxs)("section",{className:"page whiteboards-page","data-whiteboards-host":!0,children:[N(),(0,e.jsx)(T,{label:t("common.loading")})]}):(0,e.jsxs)("section",{className:"page whiteboards-page",children:[N(!i),(0,e.jsxs)("div",{className:"wb-split",children:[(0,e.jsx)("section",{className:"overview-block wb-list-block",children:(0,e.jsx)("div",{className:"wb-list-panel",children:I.length===0?(0,e.jsx)("p",{className:"empty wb-empty",children:"\u6682\u65E0\u767D\u677F\u3002\u6253\u5F00\u80FD\u529B\u540E\uFF0C\u6BCF\u4E2A\u7FA4\u9996\u6B21\u9700\u8981\u767D\u677F\u65F6\u624D\u4F1A\u521B\u5EFA\u9ED8\u8BA4\u767D\u677F\u3002"}):I.map(s=>(0,e.jsxs)("details",{className:"wb-group",open:!0,children:[(0,e.jsxs)("summary",{children:[(0,e.jsx)("span",{className:"wb-group-title",children:(0,e.jsx)(C,{text:s.label,textClassName:"wb-group-title-scroll"})}),(0,e.jsx)("small",{children:s.rows.length})]}),(0,e.jsx)("div",{className:"wb-group-items",children:s.rows.map(d=>(0,e.jsx)(Q,{row:d,active:m?.id===d.id,onSelect:l=>{U(l)}},d.id))})]},s.chatId))})}),(0,e.jsx)("section",{className:"overview-block wb-detail-block",children:(0,e.jsx)("div",{className:"wb-detail-panel",id:"whiteboard-detail",children:(0,e.jsx)(V,{selected:m,groupNames:g,onDelete:()=>{m&&h(m)}})})})]}),u?(0,e.jsx)(X,{selected:u,deleting:L,onCancel:()=>h(null),onConfirm:()=>{j()}}):null]})}function ae(t){return W(t,(0,e.jsx)(Y,{}))}export{ae as renderWhiteboardsPage};
Binary file
@@ -4,78 +4,14 @@
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>botmux dashboard</title>
7
- <link rel="icon" type="image/png" href="/assets/favicon.png">
8
- <link rel="apple-touch-icon" href="/assets/apple-touch-icon.png">
7
+ <link rel="preload" as="image" href="/assets/brand-logo.png" fetchpriority="high">
8
+ <link rel="icon" type="image/png" sizes="512x512" href="/favicon.ico?v=20260708">
9
+ <link rel="shortcut icon" type="image/png" href="/favicon.ico?v=20260708">
10
+ <link rel="apple-touch-icon" href="/apple-touch-icon.png?v=20260708">
9
11
  <link rel="stylesheet" href="/assets/style.css">
10
12
  </head>
11
13
  <body>
12
- <!-- 深空极光底(纯装饰,dark 主题可见) -->
13
- <div class="aurora" aria-hidden="true"><i class="a1"></i><i class="a2"></i><i class="a3"></i></div>
14
- <div class="app-shell">
15
- <aside class="sidebar">
16
- <a class="brand" href="#/">
17
- <span class="brand-mark" aria-hidden="true"></span>
18
- <span>
19
- <strong data-i18n="app.name">botmux</strong>
20
- <small data-i18n="app.subtitle">飞书 AI CLI 控制台</small>
21
- </span>
22
- </a>
23
- <nav class="sidebar-nav" aria-label="Dashboard">
24
- <a href="#/" data-route="overview"><svg viewBox="0 0 16 16" aria-hidden="true"><rect x="1.5" y="1.5" width="5.4" height="5.4" rx="1.5"/><rect x="9.1" y="1.5" width="5.4" height="5.4" rx="1.5"/><rect x="1.5" y="9.1" width="5.4" height="5.4" rx="1.5"/><rect x="9.1" y="9.1" width="5.4" height="5.4" rx="1.5"/></svg><span data-i18n="nav.overview">总览</span></a>
25
- <a href="#/monitoring" data-route="monitoring"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M2 11.5h12M3.4 11.5V6.8M6.5 11.5V4.5M9.5 11.5V8M12.6 11.5V3.2"/></svg><span data-i18n="nav.monitoring">监控</span></a>
26
- <a href="#/sessions" data-route="sessions"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M2 3.5h12v7H6l-3 3v-3H2z"/></svg><span data-i18n="nav.sessions">会话</span></a>
27
- <a href="#/insights" data-route="insights"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M2 2v12h12M5 11V7M8.5 11V4.5M12 11V8.5"/></svg><span data-i18n="nav.insights">洞察</span></a>
28
- <a href="#/workflows" data-route="workflows"><svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="3.4" cy="3.6" r="1.9"/><circle cx="3.4" cy="12.4" r="1.9"/><circle cx="12.6" cy="8" r="1.9"/><path d="M5.2 4.4l5.6 2.8M5.2 11.6l5.6-2.8"/></svg><span data-i18n="nav.workflows">工作流</span></a>
29
- <a href="#/groups" data-route="groups"><svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="5.6" cy="5.8" r="2.4"/><circle cx="11" cy="6.8" r="1.9"/><path d="M1.8 13.2c.5-2.4 2-3.6 3.8-3.6s3.3 1.2 3.8 3.6M9.8 12.6c.4-1.7 1.5-2.6 2.8-2.6 1 0 1.9.5 2.4 1.6"/></svg><span data-i18n="nav.groups">群组</span></a>
30
- <a href="#/schedules" data-route="schedules"><svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="6.2"/><path d="M8 4.5V8l2.4 1.6"/></svg><span data-i18n="nav.schedules">定时</span></a>
31
- <a href="#/whiteboards" data-route="whiteboards"><svg viewBox="0 0 16 16" aria-hidden="true"><rect x="2.2" y="2.2" width="11.6" height="11.6" rx="2"/><path d="M4.8 5.2h6.4M4.8 8h6.4M4.8 10.8h4"/></svg><span>白板</span></a>
32
- <a href="#/roles" data-route="roles"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 1.8l5.2 2v3.4c0 3.4-2.2 5.9-5.2 7-3-1.1-5.2-3.6-5.2-7V3.8z"/><path d="M5.8 8l1.6 1.6 2.8-3"/></svg><span data-i18n="nav.roles">角色管理</span></a>
33
- <a href="#/bot-defaults" data-route="bot-defaults"><svg viewBox="0 0 16 16" aria-hidden="true"><rect x="2.5" y="5" width="11" height="8" rx="2"/><circle cx="5.8" cy="9" r="1"/><circle cx="10.2" cy="9" r="1"/><path d="M8 5V2.5M5.5 13v1.2M10.5 13v1.2"/></svg><span data-i18n="nav.botDefaults">Bot 配置</span></a>
34
- <a href="#/skills" data-route="skills"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M3 2.5h10v3H3zM3 7h10v6.5H3z"/><path d="M5.4 9.2h5.2M5.4 11.2h3.8"/></svg><span data-i18n="nav.skills">Skills</span></a>
35
- <a href="#/team" data-route="team"><svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="6.2"/><path d="M1.8 8h12.4M8 1.8c-2 1.8-2 10.6 0 12.4 2-1.8 2-10.6 0-12.4z"/></svg><span>团队</span></a>
36
- <a href="#/connectors" data-route="connectors"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M5.5 6.5v-3a2.5 2.5 0 0 1 5 0v3"/><rect x="3.5" y="6.5" width="9" height="7" rx="2"/></svg><span>Webhook</span></a>
37
- <a href="#/office" data-route="office"><svg viewBox="0 0 16 16" aria-hidden="true"><rect x="3" y="4" width="10" height="7" rx="2"/><circle cx="6" cy="7.5" r="1"/><circle cx="10" cy="7.5" r="1"/><path d="M8 4V2M4.5 11v2M11.5 11v2"/></svg><span>办公室</span></a>
38
- <a href="#/settings" data-route="settings"><svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="2.2"/><path d="M8 1.8v2M8 12.2v2M3.6 3.6L5 5M11 11l1.4 1.4M1.8 8h2M12.2 8h2M3.6 12.4L5 11M11 5l1.4-1.4"/></svg><span data-i18n="nav.settings">设置</span></a>
39
- </nav>
40
- <div class="sidebar-foot">
41
- <span id="status" class="connection-status"></span>
42
- <button type="button" id="sidebar-toggle" class="sidebar-toggle" aria-label="Toggle sidebar">
43
- <svg viewBox="0 0 16 16" aria-hidden="true"><path d="M9.8 3.5 5.3 8l4.5 4.5"/></svg>
44
- </button>
45
- </div>
46
- </aside>
47
- <div class="workspace">
48
- <header class="topbar">
49
- <div class="topbar-title">
50
- <strong data-i18n="app.name">botmux</strong>
51
- <span data-i18n="app.subtitle">飞书 AI CLI 控制台</span>
52
- </div>
53
- <div class="topbar-actions">
54
- <button type="button" id="create-session-btn" class="primary topbar-create-session">+ <span data-i18n="sessions.create.button">创建会话</span></button>
55
- <button type="button" id="add-bot-btn" class="primary topbar-add-bot" data-i18n="botOnboarding.add">添加机器人</button>
56
- <div class="segmented" aria-label="Language">
57
- <button type="button" data-locale="zh">中</button>
58
- <button type="button" data-locale="en">EN</button>
59
- </div>
60
- <div class="theme-menu" id="theme-menu">
61
- <button type="button" class="theme-menu-btn" id="theme-menu-btn"
62
- aria-haspopup="listbox" aria-expanded="false" aria-label="Theme"></button>
63
- <div class="theme-menu-pop" id="theme-menu-pop" role="listbox" hidden></div>
64
- </div>
65
- <a class="topbar-docs-link" href="https://bytedance.aiforce.cloud/app/app_4k9smq6rdxher"
66
- target="_blank" rel="noopener noreferrer" title="botmux 文档">
67
- <svg viewBox="0 0 16 16" aria-hidden="true"><path d="M2.5 2.5h5.5a1.5 1.5 0 0 1 1.5 1.5v9M13.5 2.5H8a1.5 1.5 0 0 0-1.5 1.5v9M2.5 2.5v9.5a1 1 0 0 0 1 1H7M13.5 2.5v9.5a1 1 0 0 1-1 1H9"/></svg>
68
- <span data-i18n="nav.docs">文档</span>
69
- </a>
70
- </div>
71
- </header>
72
- <!-- 全局创建会话弹窗:按钮已提到顶栏,弹窗随之全局化,任意页面均可拉起 -->
73
- <dialog id="create-session-modal" class="create-session-modal"></dialog>
74
- <!-- 全局 attention strip:待处理事项在任何页面都一眼可见 -->
75
- <div id="attention-strip" class="attention-strip" hidden></div>
76
- <main id="root"></main>
77
- </div>
78
- </div>
14
+ <div id="app-root"></div>
79
15
  <script type="module" src="/assets/app.js"></script>
80
16
  </body>
81
17
  </html>