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,290 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
3
+ import { SectionHeader } from './dashboard-components.js';
4
+ import { legacyWorkflowDetailHash } from './legacy-workflow-link.js';
5
+ import { useT } from './react-hooks.js';
6
+ import { fetchV3RunDetail, fetchV3Runs, probeLegacyV2RunSnapshot, shouldProbeLegacyV2Fallback } from './v3-api.js';
7
+ import { WorkflowVersionSwitch } from './workflow-version-switch.js';
8
+ import { V3_DECISION_LABEL, V3_GRAPH, V3_NODE_LABEL, V3_POLL_MS, buildGraphLayout, buildRoundMiniDagLayout, graphNodes, isTerminalRunStatus, loopBudget, loopInstances, loopRounds, resolveLoopTerminalNode, trunc, v3RunIdFromHash, } from './v3-model.js';
9
+ import { nodeTerminalSignature, renderNodeTerminal } from './v3-terminal.js';
10
+ function isDocumentHidden() {
11
+ return typeof document !== 'undefined' && document.hidden;
12
+ }
13
+ function useV3RunsList() {
14
+ const [runs, setRuns] = useState([]);
15
+ useEffect(() => {
16
+ let disposed = false;
17
+ let timer = null;
18
+ const schedule = () => {
19
+ timer = window.setTimeout(() => { void poll(); }, V3_POLL_MS);
20
+ };
21
+ async function poll() {
22
+ if (disposed)
23
+ return;
24
+ if (!isDocumentHidden()) {
25
+ try {
26
+ const next = await fetchV3Runs();
27
+ if (!disposed)
28
+ setRuns(next);
29
+ }
30
+ catch {
31
+ /* transient fetch error; next tick retries */
32
+ }
33
+ }
34
+ if (!disposed)
35
+ schedule();
36
+ }
37
+ void poll();
38
+ return () => {
39
+ disposed = true;
40
+ if (timer !== null)
41
+ window.clearTimeout(timer);
42
+ };
43
+ }, []);
44
+ return runs;
45
+ }
46
+ function useV3RunDetail(runId) {
47
+ const [view, setView] = useState(null);
48
+ const [statusText, setStatusText] = useState('');
49
+ useEffect(() => {
50
+ let disposed = false;
51
+ let timer = null;
52
+ let triedV2Fallback = false;
53
+ const schedule = () => {
54
+ timer = window.setTimeout(() => { void poll(); }, V3_POLL_MS);
55
+ };
56
+ async function maybeRedirectToLegacy(status) {
57
+ if (!shouldProbeLegacyV2Fallback(status, triedV2Fallback))
58
+ return false;
59
+ triedV2Fallback = true;
60
+ try {
61
+ const exists = await probeLegacyV2RunSnapshot(runId);
62
+ if (disposed || !exists)
63
+ return false;
64
+ window.location.replace(legacyWorkflowDetailHash(runId, location.hash.split('?')[1]));
65
+ return true;
66
+ }
67
+ catch {
68
+ return false;
69
+ }
70
+ }
71
+ async function poll() {
72
+ if (disposed)
73
+ return;
74
+ let stop = false;
75
+ if (!isDocumentHidden()) {
76
+ try {
77
+ const result = await fetchV3RunDetail(runId);
78
+ if (disposed)
79
+ return;
80
+ if (!result.ok) {
81
+ if (await maybeRedirectToLegacy(result.status))
82
+ return;
83
+ setStatusText(result.status === 404 ? 'not found' : `HTTP ${result.status}`);
84
+ }
85
+ else {
86
+ setView(result.view);
87
+ setStatusText(result.view.runStatus);
88
+ stop = isTerminalRunStatus(result.view.runStatus);
89
+ }
90
+ }
91
+ catch {
92
+ /* transient fetch error; next tick retries */
93
+ }
94
+ }
95
+ if (!disposed && !stop)
96
+ schedule();
97
+ }
98
+ void poll();
99
+ return () => {
100
+ disposed = true;
101
+ if (timer !== null)
102
+ window.clearTimeout(timer);
103
+ };
104
+ }, [runId]);
105
+ return { view, statusText };
106
+ }
107
+ function V3ListPage() {
108
+ const tr = useT();
109
+ const runs = useV3RunsList();
110
+ const headingActions = (_jsxs("div", { className: "page-heading-actions v3r-run-toolbar", children: [_jsx("span", { className: "v3r-run-count", children: runs.length }), _jsx(WorkflowVersionSwitch, { active: "v3" })] }));
111
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "page-heading", children: [_jsxs("div", { children: [_jsx("p", { className: "eyebrow", children: tr('nav.workflows') }), _jsx("h1", { children: tr('nav.workflows') })] }), headingActions] }), _jsx("section", { className: "overview-block v3r-runs-section", children: _jsx("div", { className: "v3r-run-list", children: runs.length ? runs.map((run) => (_jsxs("a", { className: "v3r-run-card", href: `#/workflows/${encodeURIComponent(run.runId)}`, children: [_jsxs("span", { className: "v3r-run-main", children: [_jsx("code", { className: "v3r-runid", children: run.runId }), _jsxs("small", { children: ["\u8282\u70B9 ", run.nodeCount] })] }), _jsx("span", { className: `v3r-pill rs-${run.runStatus}`, children: run.runStatus })] }, run.runId))) : (_jsxs("div", { className: "empty v3r-empty", children: ["\u6682\u65E0\u5DE5\u4F5C\u6D41\u8FD0\u884C\uFF08\u7528 ", _jsx("code", { children: "/workflow new" }), " \u53D1\u8D77\u4E00\u4E2A\uFF09"] })) }) })] }));
112
+ }
113
+ function V3DetailPage(props) {
114
+ const tr = useT();
115
+ const { view, statusText } = useV3RunDetail(props.runId);
116
+ const [selectedId, setSelectedId] = useState(null);
117
+ const [instanceId, setInstanceId] = useState(null);
118
+ const [instancePinned, setInstancePinned] = useState(false);
119
+ useEffect(() => {
120
+ setSelectedId(null);
121
+ setInstanceId(null);
122
+ setInstancePinned(false);
123
+ }, [props.runId]);
124
+ useEffect(() => {
125
+ if (!view)
126
+ return;
127
+ setSelectedId((current) => {
128
+ if (current && view.nodes.some((node) => node.id === current))
129
+ return current;
130
+ return graphNodes(view)[0]?.id ?? view.nodes[0]?.id ?? null;
131
+ });
132
+ }, [view]);
133
+ const selectNode = useCallback((id) => {
134
+ setSelectedId(id);
135
+ setInstanceId(null);
136
+ setInstancePinned(false);
137
+ }, []);
138
+ const selectInstance = useCallback((id) => {
139
+ setInstanceId(id);
140
+ setInstancePinned(true);
141
+ }, []);
142
+ const selectedNode = view?.nodes.find((node) => node.id === selectedId) ?? null;
143
+ const statusClass = view ? `v3r-pill rs-${view.runStatus}` : 'v3r-pill';
144
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "page-heading v3r-detail-heading", children: [_jsxs("div", { className: "v3r-title-row", children: [_jsx("p", { className: "eyebrow", children: tr('nav.workflows') }), _jsxs("a", { href: "#/workflows", className: "btn-link v3r-back-link", children: ["\u2190 ", tr('nav.workflows')] }), _jsx("h1", { children: props.runId }), _jsx("span", { className: `${statusClass} v3r-run-status-pill`, children: statusText })] }), _jsx("div", { className: "page-heading-actions", children: _jsx(WorkflowVersionSwitch, { active: "v3" }) })] }), _jsxs("div", { className: "v3r-wrap", children: [_jsxs("section", { className: "overview-block v3r-graph-section", children: [_jsx(SectionHeader, { title: "\u8FD0\u884C\u62D3\u6251", hint: view ? `${view.nodes.length} 个节点` : statusText }), _jsxs("div", { className: "v3r-graph-card", children: [_jsx(DagGraph, { view: view, selectedId: selectedId, onSelect: selectNode }), _jsx(V3Legend, {})] })] }), _jsxs("section", { className: "overview-block v3r-node-section", children: [_jsx(SectionHeader, { title: "\u8282\u70B9\u8BE6\u60C5", hint: selectedNode ? (_jsxs("span", { className: `v3r-pill v3r-node-status-pill st-${selectedNode.status}`, children: [_jsx("i", { className: "dot" }), V3_NODE_LABEL[selectedNode.status]] })) : '选择一个节点' }), _jsx(NodePanel, { runId: props.runId, view: view, node: selectedNode, instanceId: instanceId, instancePinned: instancePinned, onInstanceSelect: selectInstance })] })] })] }));
145
+ }
146
+ function V3Legend() {
147
+ return (_jsxs("div", { className: "v3r-legend", children: [_jsx("span", { className: "lg st-pending", children: "\u5F85\u673A" }), _jsx("span", { className: "lg st-running", children: "\u8FD0\u884C\u4E2D" }), _jsx("span", { className: "lg st-gateWaiting", children: "\u7B49\u5BA1\u6279" }), _jsx("span", { className: "lg st-done", children: "\u5B8C\u6210" }), _jsx("span", { className: "lg st-skipped", children: "\u5DF2\u8DF3\u8FC7" }), _jsx("span", { className: "lg st-cancelled", children: "\u5DF2\u53D6\u6D88" }), _jsx("span", { className: "lg st-blocked", children: "\u53D7\u963B" }), _jsx("span", { className: "lg st-failed", children: "\u5931\u8D25" }), _jsx("span", { className: "lg lg-loop", children: "\u27F3 \u5FAA\u73AF\u5BB9\u5668" })] }));
148
+ }
149
+ function DagGraph(props) {
150
+ const layout = useMemo(() => props.view ? buildGraphLayout(props.view) : null, [props.view]);
151
+ const topologyKey = layout
152
+ ? `${layout.width}:${layout.height}:${layout.nodes.map(box => box.node.id).join('\u0000')}`
153
+ : '';
154
+ const graphRef = useRef(null);
155
+ useLayoutEffect(() => {
156
+ const graph = graphRef.current;
157
+ if (!graph || !topologyKey)
158
+ return undefined;
159
+ let frame = 0;
160
+ const centerGraph = () => {
161
+ frame = 0;
162
+ graph.scrollLeft = Math.max(0, (graph.scrollWidth - graph.clientWidth) / 2);
163
+ graph.scrollTop = Math.max(0, (graph.scrollHeight - graph.clientHeight) / 2);
164
+ };
165
+ const scheduleCenter = () => {
166
+ if (frame)
167
+ window.cancelAnimationFrame(frame);
168
+ frame = window.requestAnimationFrame(centerGraph);
169
+ };
170
+ scheduleCenter();
171
+ const observer = typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(scheduleCenter);
172
+ observer?.observe(graph);
173
+ const stage = graph.querySelector('.v3r-graph-stage');
174
+ if (stage)
175
+ observer?.observe(stage);
176
+ return () => {
177
+ if (frame)
178
+ window.cancelAnimationFrame(frame);
179
+ observer?.disconnect();
180
+ };
181
+ }, [topologyKey]);
182
+ return (_jsx("div", { id: "v3-graph", className: "v3r-graph", ref: graphRef, children: layout ? (_jsx("div", { className: "v3r-graph-stage", children: _jsxs("svg", { width: layout.width, height: layout.height, viewBox: `0 0 ${layout.width} ${layout.height}`, children: [_jsx("defs", { children: _jsx("marker", { id: "v3arrow", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "7", markerHeight: "7", orient: "auto-start-reverse", children: _jsx("path", { d: "M0,0 L10,5 L0,10 z", fill: "var(--faint, #8b98aa)" }) }) }), layout.edges.map((edge) => (_jsx("path", { className: `v3r-edge${edge.live ? ' live' : ''}`, d: `M${edge.x1},${edge.y1} C${edge.mx},${edge.y1} ${edge.mx},${edge.y2} ${edge.x2},${edge.y2}`, markerEnd: "url(#v3arrow)" }, `${edge.fromId}->${edge.toId}`))), layout.nodes.map((box) => (_jsx(DagNode, { box: box, selected: box.node.id === props.selectedId, onSelect: props.onSelect }, box.node.id)))] }) })) : null }));
183
+ }
184
+ function DagNode(props) {
185
+ const { box, selected } = props;
186
+ const node = box.node;
187
+ if (node.isLoop) {
188
+ return _jsx(LoopGraphNode, { box: box, selected: selected, onSelect: props.onSelect });
189
+ }
190
+ return (_jsxs("g", { className: `v3r-node st-${node.status}${selected ? ' sel' : ''}`, "data-node": node.id, onClick: () => props.onSelect(node.id), children: [_jsx("rect", { className: "v3r-box", x: box.x, y: box.y, width: V3_GRAPH.nodeWidth, height: V3_GRAPH.plainHeight, rx: "10" }), _jsx("text", { className: "v3r-nid", x: box.x + 14, y: box.y + 20, children: trunc(node.id, 18) }), _jsx("text", { className: "v3r-nstatus", x: box.x + 14, y: box.y + 37, children: V3_NODE_LABEL[node.status] })] }));
191
+ }
192
+ function LoopGraphNode(props) {
193
+ const { box, selected } = props;
194
+ const node = box.node;
195
+ const ls = node.loopState;
196
+ const budget = loopBudget(node);
197
+ const statusLine = ls
198
+ ? `${V3_NODE_LABEL[node.status]} · 第${ls.iteration}${budget !== undefined ? `/${budget}` : ''}轮`
199
+ : `${V3_NODE_LABEL[node.status]} · loop`;
200
+ const maxIterations = ls?.maxIterations;
201
+ return (_jsxs("g", { className: `v3r-node v3r-loopnode st-${node.status}${selected ? ' sel' : ''}`, "data-node": node.id, onClick: () => props.onSelect(node.id), children: [_jsx("rect", { className: "v3r-cap", x: box.x - 4, y: box.y - 4, width: V3_GRAPH.nodeWidth + 8, height: V3_GRAPH.loopHeight + 8, rx: "14" }), _jsx("rect", { className: "v3r-box", x: box.x, y: box.y, width: V3_GRAPH.nodeWidth, height: V3_GRAPH.loopHeight, rx: "10" }), _jsx("text", { className: "v3r-spin", x: box.x + 14, y: box.y + 21, children: "\u27F3" }), _jsx("text", { className: "v3r-nid", x: box.x + 30, y: box.y + 21, children: trunc(node.id, 16) }), _jsx("text", { className: "v3r-nstatus", x: box.x + 14, y: box.y + 39, children: statusLine }), ls && budget !== undefined && budget <= V3_GRAPH.maxDots ? (_jsx(LoopBudgetDots, { node: node, x: box.x, y: box.y, budget: budget, maxIterations: maxIterations })) : null] }));
202
+ }
203
+ function LoopBudgetDots(props) {
204
+ const ls = props.node.loopState;
205
+ const cy = props.y + V3_GRAPH.loopHeight - 13;
206
+ const dots = Array.from({ length: props.budget }, (_, idx) => idx + 1);
207
+ return (_jsxs(_Fragment, { children: [dots.map((k) => {
208
+ const cls = k < ls.iteration
209
+ ? 'v3r-dot done'
210
+ : k === ls.iteration
211
+ ? `v3r-dot cur${props.node.status === 'running' ? ' live' : ''}`
212
+ : 'v3r-dot todo';
213
+ const grant = props.maxIterations !== undefined && k > props.maxIterations ? ' grant' : '';
214
+ return _jsx("circle", { className: `${cls}${grant}`, cx: props.x + 14 + (k - 1) * 15, cy: cy, r: "3.6" }, k);
215
+ }), ls.lastDecision === 'exit' ? (_jsx("text", { className: "v3r-dots-verdict ok", x: props.x + 14 + props.budget * 15 + 4, y: cy + 4, children: "\u2713" })) : null, ls.lastDecision === 'exhausted' && props.node.status === 'blocked' ? (_jsx("text", { className: "v3r-dots-verdict warn", x: props.x + 14 + props.budget * 15 + 4, y: cy + 4, children: "\u26A0" })) : null] }));
216
+ }
217
+ function NodePanel(props) {
218
+ const node = props.node;
219
+ const instances = useMemo(() => node?.isLoop ? loopInstances(props.view, node.id) : [], [node, props.view]);
220
+ const termNode = node?.isLoop
221
+ ? resolveLoopTerminalNode(instances, props.instanceId, props.instancePinned)
222
+ : node;
223
+ const activeInstanceId = node?.isLoop ? termNode?.id ?? null : null;
224
+ if (!node) {
225
+ return (_jsx("div", { id: "v3-node-panel", className: "v3r-panel", children: _jsx("p", { className: "muted", children: "\u70B9\u4E00\u4E2A\u8282\u70B9\u770B\u8BE6\u60C5\u4E0E\u7EC8\u7AEF" }) }));
226
+ }
227
+ return (_jsxs("div", { id: "v3-node-panel", className: "v3r-panel", children: [_jsxs("div", { id: "v3-node-meta", children: [node.goal ? _jsx("p", { className: "v3r-goal", children: node.goal }) : null, node.depends.length ? (_jsxs("p", { className: "v3r-deps", children: [_jsx("span", { children: "\u4F9D\u8D56" }), node.depends.map((dep) => _jsx("span", { className: "v3r-dep", children: dep }, dep))] })) : null, node.errorClass ? _jsx(NodeErrorLine, { node: node }) : null, node.isLoop ? (_jsx(LoopTimeline, { runId: props.runId, node: node, instances: instances, activeInstanceId: activeInstanceId, onInstanceSelect: props.onInstanceSelect })) : null] }), _jsx("div", { id: "v3-inst-strip", children: node.isLoop && termNode ? (_jsx(InstanceStrip, { node: termNode, auto: !props.instancePinned })) : null }), _jsx(TerminalSlot, { runId: props.runId, node: termNode })] }));
228
+ }
229
+ function NodeErrorLine(props) {
230
+ const node = props.node;
231
+ return (_jsxs("p", { className: "v3r-err", children: ["\u539F\u56E0\uFF1A", node.errorClass, node.errorCode ? ` (${node.errorCode})` : '', node.status === 'blocked' && !node.isLoop ? (_jsxs(_Fragment, { children: [" \u2014 \u98DE\u4E66\u5361\u7247\u6216 ", _jsx("code", { children: "botmux workflow retry" }), " \u53EF\u91CD\u8BD5"] })) : null] }));
232
+ }
233
+ function InstanceStrip(props) {
234
+ const loop = props.node.loop;
235
+ return (_jsxs("div", { className: "v3r-inst-strip", children: [_jsx("span", { className: "lbl", children: "\u5B9E\u4F8B\u7EC8\u7AEF" }), _jsx("span", { className: "v3r-nodeid sm", children: props.node.id }), _jsxs("span", { className: `v3r-pill st-${props.node.status}`, children: [_jsx("i", { className: "dot" }), V3_NODE_LABEL[props.node.status]] }), _jsxs("span", { className: "muted", children: ["\u7B2C ", loop.iteration, " \u8F6E \u00B7 ", loop.bodyNodeId, props.auto ? ' · 自动跟随' : ''] })] }));
236
+ }
237
+ function LoopTimeline(props) {
238
+ const ls = props.node.loopState;
239
+ if (!ls)
240
+ return _jsx("p", { className: "muted", children: "loop \u672A\u5F00\u59CB" });
241
+ const budget = loopBudget(props.node);
242
+ const verdictOf = new Map(ls.decisions.map((decision) => [decision.iteration, decision.decision]));
243
+ const rounds = loopRounds(props.instances);
244
+ return (_jsxs("div", { className: "v3r-loop-sec", children: [_jsxs("div", { className: "v3r-loop-meter", children: [_jsxs("span", { className: "num", children: ["\u7B2C ", _jsx("b", { children: ls.iteration }), budget !== undefined ? _jsxs(_Fragment, { children: [" / ", _jsx("b", { children: budget })] }) : null, " \u8F6E"] }), ls.granted > 0 ? _jsxs("span", { className: "v3r-granted-tag", children: ["\u542B\u4EBA\u5DE5\u8FFD\u52A0 +", ls.granted] }) : null, ls.lastDecision === 'exit' ? _jsx("span", { className: "v3r-verdict vd-exit", children: "\u2713 \u5DF2\u6536\u655B" }) : null] }), _jsx("div", { className: "v3r-rounds", children: rounds.map((round) => {
245
+ const verdict = verdictOf.get(round.iteration);
246
+ const isCurrent = round.iteration === ls.iteration;
247
+ const granted = ls.maxIterations !== undefined && round.iteration > ls.maxIterations;
248
+ return (_jsxs("div", { className: `v3r-round${isCurrent ? ' cur' : ''}${verdict ? ` vd-${verdict}` : ''}`, children: [_jsxs("div", { className: "v3r-round-head", children: [_jsxs("span", { className: "rn", children: ["R", round.iteration] }), granted ? _jsx("span", { className: "v3r-granted-tag", children: "\u2795 \u8FFD\u52A0\u8F6E" }) : null, verdict ? (_jsx("span", { className: `v3r-verdict vd-${verdict}`, children: V3_DECISION_LABEL[verdict] })) : isCurrent && props.node.status === 'running' ? (_jsx("span", { className: "v3r-verdict vd-live", children: "\u25B6 \u8FDB\u884C\u4E2D" })) : null] }), _jsx(RoundMiniDag, { template: ls.bodyTemplate, instances: round.instances, activeInstanceId: props.activeInstanceId, onInstanceSelect: props.onInstanceSelect })] }, round.iteration));
249
+ }) }), props.node.status === 'blocked' ? (_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 ", _jsxs("code", { children: ["botmux workflow grant ", props.runId] })] })) : null] }));
250
+ }
251
+ function RoundMiniDag(props) {
252
+ const instanceByBodyId = useMemo(() => new Map(props.instances.map((instance) => [instance.loop.bodyNodeId, instance])), [props.instances]);
253
+ const layout = useMemo(() => buildRoundMiniDagLayout(props.template, instanceByBodyId), [props.template, instanceByBodyId]);
254
+ return (_jsxs("svg", { className: "v3r-mini-svg", width: layout.width, height: layout.height, viewBox: `0 0 ${layout.width} ${layout.height}`, children: [_jsx("defs", { children: _jsx("marker", { id: "v3arrow-mini", viewBox: "0 0 10 10", refX: "9", refY: "5", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: _jsx("path", { d: "M0,0 L10,5 L0,10 z", fill: "var(--faint, #8b98aa)" }) }) }), layout.edges.map((edge) => (_jsx("path", { className: `v3r-edge${edge.live ? ' live' : ''}`, d: `M${edge.x1},${edge.y1} C${edge.mx},${edge.y1} ${edge.mx},${edge.y2} ${edge.x2},${edge.y2}`, markerEnd: "url(#v3arrow-mini)" }, `${edge.fromId}->${edge.toId}`))), layout.nodes.map((box) => {
255
+ const node = box.node;
256
+ const status = node?.status ?? 'pending';
257
+ const selected = node?.id === props.activeInstanceId;
258
+ return (_jsxs("g", { className: `v3r-node v3r-mini st-${status}${selected ? ' sel' : ''}${node ? '' : ' ghost'}`, "data-sel": node?.id, style: node ? { cursor: 'pointer' } : undefined, onClick: (event) => {
259
+ if (!node)
260
+ return;
261
+ event.stopPropagation();
262
+ props.onInstanceSelect(node.id);
263
+ }, children: [_jsx("rect", { className: "v3r-box", x: box.x, y: box.y, width: box.width, height: box.height, rx: "8" }), _jsx("circle", { className: "v3r-mini-dot", cx: box.x + 13, cy: box.y + box.height / 2, r: "3.4" }), _jsx("text", { className: "v3r-nid", x: box.x + 24, y: box.y + box.height / 2 + 4, children: trunc(box.templateId, 12) })] }, box.templateId));
264
+ })] }));
265
+ }
266
+ function TerminalSlot(props) {
267
+ const ref = useRef(null);
268
+ const renderedSignatureRef = useRef(null);
269
+ const signature = props.node ? `${props.runId}|${props.node.id}|${nodeTerminalSignature(props.node)}` : null;
270
+ useEffect(() => {
271
+ const el = ref.current;
272
+ if (!el)
273
+ return;
274
+ if (!props.node || !signature) {
275
+ el.innerHTML = '';
276
+ renderedSignatureRef.current = null;
277
+ return;
278
+ }
279
+ if (renderedSignatureRef.current === signature)
280
+ return;
281
+ renderNodeTerminal(el, props.runId, props.node);
282
+ renderedSignatureRef.current = signature;
283
+ }, [props.runId, props.node, signature]);
284
+ return _jsx("div", { id: "v3-term-slot", className: "v3r-term-slot", ref: ref });
285
+ }
286
+ export function V3RunsPage() {
287
+ const runId = v3RunIdFromHash();
288
+ return (_jsx("section", { className: "page workflows-page v3-page", children: runId ? _jsx(V3DetailPage, { runId: runId }) : _jsx(V3ListPage, {}) }));
289
+ }
290
+ //# sourceMappingURL=v3-components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-components.js","sourceRoot":"","sources":["../../../src/dashboard/web/v3-components.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import type { RunNodeView, RunView } from '../../workflows/v3/ops-projection.js';
2
+ export declare const V3_POLL_MS = 2000;
3
+ export declare const V3_NODE_LABEL: Record<RunNodeView['status'], string>;
4
+ export declare const V3_DECISION_LABEL: Record<string, string>;
5
+ export declare const V3_GRAPH: {
6
+ readonly nodeWidth: 168;
7
+ readonly plainHeight: 48;
8
+ readonly loopHeight: 70;
9
+ readonly columnGap: 226;
10
+ readonly verticalGap: 30;
11
+ readonly padding: 26;
12
+ readonly maxDots: 8;
13
+ };
14
+ export declare function isTerminalRunStatus(status: RunView['runStatus'] | undefined): boolean;
15
+ export declare function v3RunIdFromHash(hash?: string): string | null;
16
+ export declare function trunc(s: string, n: number): string;
17
+ export declare function nodeHeight(node: RunNodeView): number;
18
+ export declare function graphNodes(view: RunView): RunNodeView[];
19
+ export interface V3GraphNodeLayout {
20
+ node: RunNodeView;
21
+ x: number;
22
+ y: number;
23
+ width: number;
24
+ height: number;
25
+ }
26
+ export interface V3GraphEdgeLayout {
27
+ fromId: string;
28
+ toId: string;
29
+ x1: number;
30
+ y1: number;
31
+ x2: number;
32
+ y2: number;
33
+ mx: number;
34
+ live: boolean;
35
+ }
36
+ export interface V3GraphLayout {
37
+ width: number;
38
+ height: number;
39
+ nodes: V3GraphNodeLayout[];
40
+ edges: V3GraphEdgeLayout[];
41
+ }
42
+ export declare function buildGraphLayout(view: RunView): V3GraphLayout;
43
+ export declare function computeDepth(nodes: RunNodeView[]): Map<string, number>;
44
+ export declare function loopInstances(view: RunView | null | undefined, loopId: string): RunNodeView[];
45
+ export declare function resolveLoopTerminalNode(instances: RunNodeView[], pinnedId: string | null, pinned: boolean): RunNodeView | null;
46
+ export interface V3LoopRound {
47
+ iteration: number;
48
+ instances: RunNodeView[];
49
+ }
50
+ export declare function loopRounds(instances: RunNodeView[]): V3LoopRound[];
51
+ export declare function loopBudget(node: RunNodeView): number | undefined;
52
+ export interface V3MiniDagNodeLayout {
53
+ templateId: string;
54
+ node: RunNodeView | undefined;
55
+ x: number;
56
+ y: number;
57
+ width: number;
58
+ height: number;
59
+ }
60
+ export interface V3MiniDagEdgeLayout {
61
+ fromId: string;
62
+ toId: string;
63
+ x1: number;
64
+ y1: number;
65
+ x2: number;
66
+ y2: number;
67
+ mx: number;
68
+ live: boolean;
69
+ }
70
+ export interface V3MiniDagLayout {
71
+ width: number;
72
+ height: number;
73
+ nodes: V3MiniDagNodeLayout[];
74
+ edges: V3MiniDagEdgeLayout[];
75
+ }
76
+ export declare function buildRoundMiniDagLayout(template: Array<{
77
+ id: string;
78
+ depends: string[];
79
+ }>, instanceByBodyId: Map<string, RunNodeView>): V3MiniDagLayout;
80
+ //# sourceMappingURL=v3-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3-model.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/v3-model.ts"],"names":[],"mappings":"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"}