botmux 3.14.0 → 3.16.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 (812) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +2 -2
  3. package/dist/.runtime-build-id +1 -1
  4. package/dist/adapters/backend/destroy-result.d.ts +159 -0
  5. package/dist/adapters/backend/destroy-result.d.ts.map +1 -0
  6. package/dist/adapters/backend/destroy-result.js +223 -0
  7. package/dist/adapters/backend/destroy-result.js.map +1 -0
  8. package/dist/adapters/backend/herdr-backend.d.ts +4 -0
  9. package/dist/adapters/backend/herdr-backend.d.ts.map +1 -1
  10. package/dist/adapters/backend/herdr-backend.js +23 -1
  11. package/dist/adapters/backend/herdr-backend.js.map +1 -1
  12. package/dist/adapters/backend/mojo-backend.d.ts +577 -0
  13. package/dist/adapters/backend/mojo-backend.d.ts.map +1 -0
  14. package/dist/adapters/backend/mojo-backend.js +2471 -0
  15. package/dist/adapters/backend/mojo-backend.js.map +1 -0
  16. package/dist/adapters/backend/mojo-budgets.d.ts +21 -0
  17. package/dist/adapters/backend/mojo-budgets.d.ts.map +1 -0
  18. package/dist/adapters/backend/mojo-budgets.js +22 -0
  19. package/dist/adapters/backend/mojo-budgets.js.map +1 -0
  20. package/dist/adapters/backend/mojo-isolated-workspace.d.ts +69 -0
  21. package/dist/adapters/backend/mojo-isolated-workspace.d.ts.map +1 -0
  22. package/dist/adapters/backend/mojo-isolated-workspace.js +213 -0
  23. package/dist/adapters/backend/mojo-isolated-workspace.js.map +1 -0
  24. package/dist/adapters/backend/mojo-process-tree.d.ts +292 -0
  25. package/dist/adapters/backend/mojo-process-tree.d.ts.map +1 -0
  26. package/dist/adapters/backend/mojo-process-tree.js +486 -0
  27. package/dist/adapters/backend/mojo-process-tree.js.map +1 -0
  28. package/dist/adapters/backend/mojo-types.d.ts +542 -0
  29. package/dist/adapters/backend/mojo-types.d.ts.map +1 -0
  30. package/dist/adapters/backend/mojo-types.js +682 -0
  31. package/dist/adapters/backend/mojo-types.js.map +1 -0
  32. package/dist/adapters/backend/reproduce-command.js +3 -3
  33. package/dist/adapters/backend/reproduce-command.js.map +1 -1
  34. package/dist/adapters/backend/riff-backend.js +1 -1
  35. package/dist/adapters/backend/riff-backend.js.map +1 -1
  36. package/dist/adapters/backend/sandbox.d.ts +44 -7
  37. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  38. package/dist/adapters/backend/sandbox.js +30 -7
  39. package/dist/adapters/backend/sandbox.js.map +1 -1
  40. package/dist/adapters/backend/session-backend-selector.d.ts +14 -1
  41. package/dist/adapters/backend/session-backend-selector.d.ts.map +1 -1
  42. package/dist/adapters/backend/session-backend-selector.js +82 -10
  43. package/dist/adapters/backend/session-backend-selector.js.map +1 -1
  44. package/dist/adapters/backend/tmux-pipe-backend.d.ts +30 -0
  45. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  46. package/dist/adapters/backend/tmux-pipe-backend.js +60 -0
  47. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  48. package/dist/adapters/backend/types.d.ts +108 -6
  49. package/dist/adapters/backend/types.d.ts.map +1 -1
  50. package/dist/adapters/backend/types.js.map +1 -1
  51. package/dist/adapters/backend/zmx-backend.d.ts +11 -0
  52. package/dist/adapters/backend/zmx-backend.d.ts.map +1 -1
  53. package/dist/adapters/backend/zmx-backend.js +16 -1
  54. package/dist/adapters/backend/zmx-backend.js.map +1 -1
  55. package/dist/adapters/cli/codex-app.d.ts.map +1 -1
  56. package/dist/adapters/cli/codex-app.js +2 -2
  57. package/dist/adapters/cli/codex-app.js.map +1 -1
  58. package/dist/adapters/cli/codex.d.ts.map +1 -1
  59. package/dist/adapters/cli/codex.js +7 -0
  60. package/dist/adapters/cli/codex.js.map +1 -1
  61. package/dist/adapters/cli/copilot.d.ts +3 -1
  62. package/dist/adapters/cli/copilot.d.ts.map +1 -1
  63. package/dist/adapters/cli/copilot.js +23 -5
  64. package/dist/adapters/cli/copilot.js.map +1 -1
  65. package/dist/adapters/cli/cursor.d.ts.map +1 -1
  66. package/dist/adapters/cli/cursor.js +26 -4
  67. package/dist/adapters/cli/cursor.js.map +1 -1
  68. package/dist/adapters/cli/dsh.d.ts.map +1 -1
  69. package/dist/adapters/cli/dsh.js +5 -1
  70. package/dist/adapters/cli/dsh.js.map +1 -1
  71. package/dist/adapters/cli/grok.d.ts.map +1 -1
  72. package/dist/adapters/cli/grok.js +24 -5
  73. package/dist/adapters/cli/grok.js.map +1 -1
  74. package/dist/adapters/cli/kimi.d.ts.map +1 -1
  75. package/dist/adapters/cli/kimi.js +19 -1
  76. package/dist/adapters/cli/kimi.js.map +1 -1
  77. package/dist/adapters/cli/mojo.d.ts +28 -0
  78. package/dist/adapters/cli/mojo.d.ts.map +1 -0
  79. package/dist/adapters/cli/mojo.js +58 -0
  80. package/dist/adapters/cli/mojo.js.map +1 -0
  81. package/dist/adapters/cli/pi.d.ts +20 -5
  82. package/dist/adapters/cli/pi.d.ts.map +1 -1
  83. package/dist/adapters/cli/pi.js +27 -5
  84. package/dist/adapters/cli/pi.js.map +1 -1
  85. package/dist/adapters/cli/read-isolation.d.ts +251 -1
  86. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  87. package/dist/adapters/cli/read-isolation.js +254 -1
  88. package/dist/adapters/cli/read-isolation.js.map +1 -1
  89. package/dist/adapters/cli/registry.d.ts +13 -1
  90. package/dist/adapters/cli/registry.d.ts.map +1 -1
  91. package/dist/adapters/cli/registry.js +19 -1
  92. package/dist/adapters/cli/registry.js.map +1 -1
  93. package/dist/adapters/cli/runner-input.d.ts +3 -3
  94. package/dist/adapters/cli/runner-input.d.ts.map +1 -1
  95. package/dist/adapters/cli/runner-input.js +4 -3
  96. package/dist/adapters/cli/runner-input.js.map +1 -1
  97. package/dist/adapters/cli/shared-hints.d.ts +3 -1
  98. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  99. package/dist/adapters/cli/shared-hints.js +51 -30
  100. package/dist/adapters/cli/shared-hints.js.map +1 -1
  101. package/dist/adapters/cli/types.d.ts +33 -4
  102. package/dist/adapters/cli/types.d.ts.map +1 -1
  103. package/dist/bot-registry.d.ts +42 -0
  104. package/dist/bot-registry.d.ts.map +1 -1
  105. package/dist/bot-registry.js +54 -4
  106. package/dist/bot-registry.js.map +1 -1
  107. package/dist/cli/arg-utils.d.ts +5 -0
  108. package/dist/cli/arg-utils.d.ts.map +1 -1
  109. package/dist/cli/arg-utils.js +7 -0
  110. package/dist/cli/arg-utils.js.map +1 -1
  111. package/dist/cli/bots-list-output.d.ts +130 -2
  112. package/dist/cli/bots-list-output.d.ts.map +1 -1
  113. package/dist/cli/bots-list-output.js +173 -27
  114. package/dist/cli/bots-list-output.js.map +1 -1
  115. package/dist/cli/daemon-lifecycle-env.d.ts +10 -3
  116. package/dist/cli/daemon-lifecycle-env.d.ts.map +1 -1
  117. package/dist/cli/daemon-lifecycle-env.js +38 -11
  118. package/dist/cli/daemon-lifecycle-env.js.map +1 -1
  119. package/dist/cli/dashboard-command.d.ts +15 -0
  120. package/dist/cli/dashboard-command.d.ts.map +1 -1
  121. package/dist/cli/dashboard-command.js +22 -0
  122. package/dist/cli/dashboard-command.js.map +1 -1
  123. package/dist/cli/log-tail.d.ts +54 -0
  124. package/dist/cli/log-tail.d.ts.map +1 -0
  125. package/dist/cli/log-tail.js +167 -0
  126. package/dist/cli/log-tail.js.map +1 -0
  127. package/dist/cli/pm2-env.d.ts +16 -0
  128. package/dist/cli/pm2-env.d.ts.map +1 -0
  129. package/dist/cli/pm2-env.js +63 -0
  130. package/dist/cli/pm2-env.js.map +1 -0
  131. package/dist/cli/pm2-fleet-lock.d.ts +26 -0
  132. package/dist/cli/pm2-fleet-lock.d.ts.map +1 -0
  133. package/dist/cli/pm2-fleet-lock.js +50 -0
  134. package/dist/cli/pm2-fleet-lock.js.map +1 -0
  135. package/dist/cli/pm2-god-retirement.d.ts +59 -0
  136. package/dist/cli/pm2-god-retirement.d.ts.map +1 -0
  137. package/dist/cli/pm2-god-retirement.js +95 -0
  138. package/dist/cli/pm2-god-retirement.js.map +1 -0
  139. package/dist/cli/session-list-wake.d.ts +41 -0
  140. package/dist/cli/session-list-wake.d.ts.map +1 -0
  141. package/dist/cli/session-list-wake.js +102 -0
  142. package/dist/cli/session-list-wake.js.map +1 -0
  143. package/dist/cli/workflow.d.ts.map +1 -1
  144. package/dist/cli/workflow.js +26 -0
  145. package/dist/cli/workflow.js.map +1 -1
  146. package/dist/cli.d.ts.map +1 -1
  147. package/dist/cli.js +941 -118
  148. package/dist/cli.js.map +1 -1
  149. package/dist/codex-app-runner.js +261 -49
  150. package/dist/codex-app-runner.js.map +1 -1
  151. package/dist/core/cli-runtime-update.d.ts +8 -0
  152. package/dist/core/cli-runtime-update.d.ts.map +1 -1
  153. package/dist/core/cli-runtime-update.js +127 -8
  154. package/dist/core/cli-runtime-update.js.map +1 -1
  155. package/dist/core/close-residual.d.ts +64 -0
  156. package/dist/core/close-residual.d.ts.map +1 -0
  157. package/dist/core/close-residual.js +93 -0
  158. package/dist/core/close-residual.js.map +1 -0
  159. package/dist/core/closed-session-card.d.ts.map +1 -1
  160. package/dist/core/closed-session-card.js +11 -3
  161. package/dist/core/closed-session-card.js.map +1 -1
  162. package/dist/core/command-discovery.d.ts.map +1 -1
  163. package/dist/core/command-discovery.js +4 -1
  164. package/dist/core/command-discovery.js.map +1 -1
  165. package/dist/core/command-handler.d.ts.map +1 -1
  166. package/dist/core/command-handler.js +129 -27
  167. package/dist/core/command-handler.js.map +1 -1
  168. package/dist/core/cost-calculator.d.ts +3 -1
  169. package/dist/core/cost-calculator.d.ts.map +1 -1
  170. package/dist/core/cost-calculator.js +230 -1
  171. package/dist/core/cost-calculator.js.map +1 -1
  172. package/dist/core/daemon-background-close.d.ts +19 -0
  173. package/dist/core/daemon-background-close.d.ts.map +1 -0
  174. package/dist/core/daemon-background-close.js +39 -0
  175. package/dist/core/daemon-background-close.js.map +1 -0
  176. package/dist/core/dashboard-command/overview.d.ts +4 -0
  177. package/dist/core/dashboard-command/overview.d.ts.map +1 -1
  178. package/dist/core/dashboard-command/overview.js +8 -1
  179. package/dist/core/dashboard-command/overview.js.map +1 -1
  180. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  181. package/dist/core/dashboard-ipc-server.js +415 -42
  182. package/dist/core/dashboard-ipc-server.js.map +1 -1
  183. package/dist/core/dashboard-rows.d.ts +4 -0
  184. package/dist/core/dashboard-rows.d.ts.map +1 -1
  185. package/dist/core/dashboard-rows.js +3 -0
  186. package/dist/core/dashboard-rows.js.map +1 -1
  187. package/dist/core/dashboard-url.d.ts +37 -0
  188. package/dist/core/dashboard-url.d.ts.map +1 -1
  189. package/dist/core/dashboard-url.js +71 -0
  190. package/dist/core/dashboard-url.js.map +1 -1
  191. package/dist/core/deferred-schedule-settlement.d.ts +15 -1
  192. package/dist/core/deferred-schedule-settlement.d.ts.map +1 -1
  193. package/dist/core/deferred-schedule-settlement.js +4 -1
  194. package/dist/core/deferred-schedule-settlement.js.map +1 -1
  195. package/dist/core/device-isolation-daemon.d.ts +91 -1
  196. package/dist/core/device-isolation-daemon.d.ts.map +1 -1
  197. package/dist/core/device-isolation-daemon.js +346 -2
  198. package/dist/core/device-isolation-daemon.js.map +1 -1
  199. package/dist/core/local-terminal-opener.d.ts.map +1 -1
  200. package/dist/core/local-terminal-opener.js +5 -1
  201. package/dist/core/local-terminal-opener.js.map +1 -1
  202. package/dist/core/loopback-target.d.ts +14 -0
  203. package/dist/core/loopback-target.d.ts.map +1 -0
  204. package/dist/core/loopback-target.js +20 -0
  205. package/dist/core/loopback-target.js.map +1 -0
  206. package/dist/core/maintenance.d.ts.map +1 -1
  207. package/dist/core/maintenance.js +16 -2
  208. package/dist/core/maintenance.js.map +1 -1
  209. package/dist/core/mojo-containment-command.d.ts +20 -0
  210. package/dist/core/mojo-containment-command.d.ts.map +1 -0
  211. package/dist/core/mojo-containment-command.js +266 -0
  212. package/dist/core/mojo-containment-command.js.map +1 -0
  213. package/dist/core/mojo-containment.d.ts +575 -0
  214. package/dist/core/mojo-containment.d.ts.map +1 -0
  215. package/dist/core/mojo-containment.js +1158 -0
  216. package/dist/core/mojo-containment.js.map +1 -0
  217. package/dist/core/mojo-launcher-env-quarantine.d.ts +30 -0
  218. package/dist/core/mojo-launcher-env-quarantine.d.ts.map +1 -0
  219. package/dist/core/mojo-launcher-env-quarantine.js +175 -0
  220. package/dist/core/mojo-launcher-env-quarantine.js.map +1 -0
  221. package/dist/core/mojo-session-identity.d.ts +3 -0
  222. package/dist/core/mojo-session-identity.d.ts.map +1 -0
  223. package/dist/core/mojo-session-identity.js +126 -0
  224. package/dist/core/mojo-session-identity.js.map +1 -0
  225. package/dist/core/persistent-backend.d.ts +32 -8
  226. package/dist/core/persistent-backend.d.ts.map +1 -1
  227. package/dist/core/persistent-backend.js +55 -17
  228. package/dist/core/persistent-backend.js.map +1 -1
  229. package/dist/core/plugins/mcp/gateway.d.ts +14 -1
  230. package/dist/core/plugins/mcp/gateway.d.ts.map +1 -1
  231. package/dist/core/plugins/mcp/gateway.js +70 -3
  232. package/dist/core/plugins/mcp/gateway.js.map +1 -1
  233. package/dist/core/plugins/mcp/host.d.ts +2 -0
  234. package/dist/core/plugins/mcp/host.d.ts.map +1 -1
  235. package/dist/core/plugins/mcp/host.js +2 -0
  236. package/dist/core/plugins/mcp/host.js.map +1 -1
  237. package/dist/core/plugins/pm2.d.ts.map +1 -1
  238. package/dist/core/plugins/pm2.js +16 -3
  239. package/dist/core/plugins/pm2.js.map +1 -1
  240. package/dist/core/plugins/service-manager.d.ts +9 -0
  241. package/dist/core/plugins/service-manager.d.ts.map +1 -1
  242. package/dist/core/plugins/service-manager.js +33 -16
  243. package/dist/core/plugins/service-manager.js.map +1 -1
  244. package/dist/core/preview-port-owner.d.ts +109 -0
  245. package/dist/core/preview-port-owner.d.ts.map +1 -0
  246. package/dist/core/preview-port-owner.js +320 -0
  247. package/dist/core/preview-port-owner.js.map +1 -0
  248. package/dist/core/remote-cli-ids.d.ts +5 -0
  249. package/dist/core/remote-cli-ids.d.ts.map +1 -0
  250. package/dist/core/remote-cli-ids.js +24 -0
  251. package/dist/core/remote-cli-ids.js.map +1 -0
  252. package/dist/core/{riff-shutdown-detach.d.ts → remote-shutdown-detach.d.ts} +40 -39
  253. package/dist/core/remote-shutdown-detach.d.ts.map +1 -0
  254. package/dist/core/{riff-shutdown-detach.js → remote-shutdown-detach.js} +85 -83
  255. package/dist/core/remote-shutdown-detach.js.map +1 -0
  256. package/dist/core/{riff-worker-shutdown-readiness.d.ts → remote-worker-shutdown-readiness.d.ts} +5 -4
  257. package/dist/core/remote-worker-shutdown-readiness.d.ts.map +1 -0
  258. package/dist/core/{riff-worker-shutdown-readiness.js → remote-worker-shutdown-readiness.js} +4 -3
  259. package/dist/core/remote-worker-shutdown-readiness.js.map +1 -0
  260. package/dist/core/reply-target.d.ts +16 -1
  261. package/dist/core/reply-target.d.ts.map +1 -1
  262. package/dist/core/reply-target.js +61 -0
  263. package/dist/core/reply-target.js.map +1 -1
  264. package/dist/core/session-group-birth.d.ts +26 -0
  265. package/dist/core/session-group-birth.d.ts.map +1 -1
  266. package/dist/core/session-group-birth.js +81 -4
  267. package/dist/core/session-group-birth.js.map +1 -1
  268. package/dist/core/session-manager.d.ts +15 -2
  269. package/dist/core/session-manager.d.ts.map +1 -1
  270. package/dist/core/session-manager.js +259 -5
  271. package/dist/core/session-manager.js.map +1 -1
  272. package/dist/core/session-model.d.ts +46 -0
  273. package/dist/core/session-model.d.ts.map +1 -0
  274. package/dist/core/session-model.js +42 -0
  275. package/dist/core/session-model.js.map +1 -0
  276. package/dist/core/session-owner-reminder.d.ts +63 -0
  277. package/dist/core/session-owner-reminder.d.ts.map +1 -0
  278. package/dist/core/session-owner-reminder.js +196 -0
  279. package/dist/core/session-owner-reminder.js.map +1 -0
  280. package/dist/core/session-preview-registry.d.ts +53 -0
  281. package/dist/core/session-preview-registry.d.ts.map +1 -0
  282. package/dist/core/session-preview-registry.js +82 -0
  283. package/dist/core/session-preview-registry.js.map +1 -0
  284. package/dist/core/session-preview.d.ts +114 -0
  285. package/dist/core/session-preview.d.ts.map +1 -0
  286. package/dist/core/session-preview.js +184 -0
  287. package/dist/core/session-preview.js.map +1 -0
  288. package/dist/core/session-rename.d.ts.map +1 -1
  289. package/dist/core/session-rename.js +5 -3
  290. package/dist/core/session-rename.js.map +1 -1
  291. package/dist/core/session-wake-deadline.d.ts +5 -0
  292. package/dist/core/session-wake-deadline.d.ts.map +1 -0
  293. package/dist/core/session-wake-deadline.js +13 -0
  294. package/dist/core/session-wake-deadline.js.map +1 -0
  295. package/dist/core/shutdown-budgets.d.ts +7 -6
  296. package/dist/core/shutdown-budgets.d.ts.map +1 -1
  297. package/dist/core/shutdown-budgets.js +11 -10
  298. package/dist/core/shutdown-budgets.js.map +1 -1
  299. package/dist/core/skills/frontmatter.d.ts.map +1 -1
  300. package/dist/core/skills/frontmatter.js +6 -1
  301. package/dist/core/skills/frontmatter.js.map +1 -1
  302. package/dist/core/terminal-control-grant.d.ts +74 -0
  303. package/dist/core/terminal-control-grant.d.ts.map +1 -0
  304. package/dist/core/terminal-control-grant.js +183 -0
  305. package/dist/core/terminal-control-grant.js.map +1 -0
  306. package/dist/core/terminal-proxy.d.ts.map +1 -1
  307. package/dist/core/terminal-proxy.js +4 -5
  308. package/dist/core/terminal-proxy.js.map +1 -1
  309. package/dist/core/terminal-write-auth.d.ts +4 -11
  310. package/dist/core/terminal-write-auth.d.ts.map +1 -1
  311. package/dist/core/terminal-write-auth.js +19 -16
  312. package/dist/core/terminal-write-auth.js.map +1 -1
  313. package/dist/core/trigger-session.d.ts.map +1 -1
  314. package/dist/core/trigger-session.js +36 -29
  315. package/dist/core/trigger-session.js.map +1 -1
  316. package/dist/core/types.d.ts +88 -10
  317. package/dist/core/types.d.ts.map +1 -1
  318. package/dist/core/types.js +9 -7
  319. package/dist/core/types.js.map +1 -1
  320. package/dist/core/workbench-link.d.ts +81 -0
  321. package/dist/core/workbench-link.d.ts.map +1 -0
  322. package/dist/core/workbench-link.js +109 -0
  323. package/dist/core/workbench-link.js.map +1 -0
  324. package/dist/core/worker-pool.d.ts +312 -11
  325. package/dist/core/worker-pool.d.ts.map +1 -1
  326. package/dist/core/worker-pool.js +2515 -217
  327. package/dist/core/worker-pool.js.map +1 -1
  328. package/dist/daemon.d.ts +6 -0
  329. package/dist/daemon.d.ts.map +1 -1
  330. package/dist/daemon.js +447 -116
  331. package/dist/daemon.js.map +1 -1
  332. package/dist/dashboard/aggregator.d.ts +33 -3
  333. package/dist/dashboard/aggregator.d.ts.map +1 -1
  334. package/dist/dashboard/aggregator.js +93 -17
  335. package/dist/dashboard/aggregator.js.map +1 -1
  336. package/dist/dashboard/auth-session-connections.d.ts +59 -0
  337. package/dist/dashboard/auth-session-connections.d.ts.map +1 -0
  338. package/dist/dashboard/auth-session-connections.js +109 -0
  339. package/dist/dashboard/auth-session-connections.js.map +1 -0
  340. package/dist/dashboard/auth.d.ts +99 -1
  341. package/dist/dashboard/auth.d.ts.map +1 -1
  342. package/dist/dashboard/auth.js +176 -64
  343. package/dist/dashboard/auth.js.map +1 -1
  344. package/dist/dashboard/bot-payload.d.ts +5 -0
  345. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  346. package/dist/dashboard/bot-payload.js +4 -0
  347. package/dist/dashboard/bot-payload.js.map +1 -1
  348. package/dist/dashboard/control-audit.d.ts +112 -0
  349. package/dist/dashboard/control-audit.d.ts.map +1 -0
  350. package/dist/dashboard/control-audit.js +195 -0
  351. package/dist/dashboard/control-audit.js.map +1 -0
  352. package/dist/dashboard/control-csrf.d.ts +123 -0
  353. package/dist/dashboard/control-csrf.d.ts.map +1 -0
  354. package/dist/dashboard/control-csrf.js +392 -0
  355. package/dist/dashboard/control-csrf.js.map +1 -0
  356. package/dist/dashboard/daemon-reconcile.d.ts +26 -0
  357. package/dist/dashboard/daemon-reconcile.d.ts.map +1 -0
  358. package/dist/dashboard/daemon-reconcile.js +46 -0
  359. package/dist/dashboard/daemon-reconcile.js.map +1 -0
  360. package/dist/dashboard/debug-terminal.d.ts.map +1 -1
  361. package/dist/dashboard/debug-terminal.js +18 -4
  362. package/dist/dashboard/debug-terminal.js.map +1 -1
  363. package/dist/dashboard/events-sse.d.ts +60 -0
  364. package/dist/dashboard/events-sse.d.ts.map +1 -0
  365. package/dist/dashboard/events-sse.js +63 -0
  366. package/dist/dashboard/events-sse.js.map +1 -0
  367. package/dist/dashboard/h5-auth.d.ts +256 -0
  368. package/dist/dashboard/h5-auth.d.ts.map +1 -0
  369. package/dist/dashboard/h5-auth.js +825 -0
  370. package/dist/dashboard/h5-auth.js.map +1 -0
  371. package/dist/dashboard/managed-spawn.d.ts +36 -0
  372. package/dist/dashboard/managed-spawn.d.ts.map +1 -0
  373. package/dist/dashboard/managed-spawn.js +169 -0
  374. package/dist/dashboard/managed-spawn.js.map +1 -0
  375. package/dist/dashboard/preview-content-capability.d.ts +41 -0
  376. package/dist/dashboard/preview-content-capability.d.ts.map +1 -0
  377. package/dist/dashboard/preview-content-capability.js +127 -0
  378. package/dist/dashboard/preview-content-capability.js.map +1 -0
  379. package/dist/dashboard/preview-contract.d.ts +85 -0
  380. package/dist/dashboard/preview-contract.d.ts.map +1 -0
  381. package/dist/dashboard/preview-contract.js +198 -0
  382. package/dist/dashboard/preview-contract.js.map +1 -0
  383. package/dist/dashboard/preview-guard-page.d.ts +52 -0
  384. package/dist/dashboard/preview-guard-page.d.ts.map +1 -0
  385. package/dist/dashboard/preview-guard-page.js +162 -0
  386. package/dist/dashboard/preview-guard-page.js.map +1 -0
  387. package/dist/dashboard/preview-interaction.d.ts +57 -0
  388. package/dist/dashboard/preview-interaction.d.ts.map +1 -0
  389. package/dist/dashboard/preview-interaction.js +198 -0
  390. package/dist/dashboard/preview-interaction.js.map +1 -0
  391. package/dist/dashboard/preview-proxy.d.ts +113 -0
  392. package/dist/dashboard/preview-proxy.d.ts.map +1 -0
  393. package/dist/dashboard/preview-proxy.js +543 -0
  394. package/dist/dashboard/preview-proxy.js.map +1 -0
  395. package/dist/dashboard/public-redact.d.ts +23 -0
  396. package/dist/dashboard/public-redact.d.ts.map +1 -1
  397. package/dist/dashboard/public-redact.js +90 -21
  398. package/dist/dashboard/public-redact.js.map +1 -1
  399. package/dist/dashboard/request-identity.d.ts +77 -0
  400. package/dist/dashboard/request-identity.d.ts.map +1 -0
  401. package/dist/dashboard/request-identity.js +72 -0
  402. package/dist/dashboard/request-identity.js.map +1 -0
  403. package/dist/dashboard/session-cleanup.d.ts +5 -0
  404. package/dist/dashboard/session-cleanup.d.ts.map +1 -1
  405. package/dist/dashboard/session-cleanup.js +4 -0
  406. package/dist/dashboard/session-cleanup.js.map +1 -1
  407. package/dist/dashboard/settings-write-applier.d.ts +5 -1
  408. package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
  409. package/dist/dashboard/settings-write-applier.js +14 -0
  410. package/dist/dashboard/settings-write-applier.js.map +1 -1
  411. package/dist/dashboard/standing-link.d.ts +76 -0
  412. package/dist/dashboard/standing-link.d.ts.map +1 -0
  413. package/dist/dashboard/standing-link.js +111 -0
  414. package/dist/dashboard/standing-link.js.map +1 -0
  415. package/dist/dashboard/terminal-control.d.ts +105 -0
  416. package/dist/dashboard/terminal-control.d.ts.map +1 -0
  417. package/dist/dashboard/terminal-control.js +296 -0
  418. package/dist/dashboard/terminal-control.js.map +1 -0
  419. package/dist/dashboard/terminal-front-proxy.d.ts +55 -0
  420. package/dist/dashboard/terminal-front-proxy.d.ts.map +1 -0
  421. package/dist/dashboard/terminal-front-proxy.js +397 -0
  422. package/dist/dashboard/terminal-front-proxy.js.map +1 -0
  423. package/dist/dashboard/terminal-view-capability.d.ts +97 -0
  424. package/dist/dashboard/terminal-view-capability.d.ts.map +1 -0
  425. package/dist/dashboard/terminal-view-capability.js +145 -0
  426. package/dist/dashboard/terminal-view-capability.js.map +1 -0
  427. package/dist/dashboard/web/agent-workbench-api.d.ts +59 -0
  428. package/dist/dashboard/web/agent-workbench-api.d.ts.map +1 -0
  429. package/dist/dashboard/web/agent-workbench-api.js +227 -0
  430. package/dist/dashboard/web/agent-workbench-api.js.map +1 -0
  431. package/dist/dashboard/web/agent-workbench-appearance-menu.d.ts +59 -0
  432. package/dist/dashboard/web/agent-workbench-appearance-menu.d.ts.map +1 -0
  433. package/dist/dashboard/web/agent-workbench-appearance-menu.js +195 -0
  434. package/dist/dashboard/web/agent-workbench-appearance-menu.js.map +1 -0
  435. package/dist/dashboard/web/agent-workbench-appearance.d.ts +222 -0
  436. package/dist/dashboard/web/agent-workbench-appearance.d.ts.map +1 -0
  437. package/dist/dashboard/web/agent-workbench-appearance.js +499 -0
  438. package/dist/dashboard/web/agent-workbench-appearance.js.map +1 -0
  439. package/dist/dashboard/web/agent-workbench-capabilities.d.ts +13 -0
  440. package/dist/dashboard/web/agent-workbench-capabilities.d.ts.map +1 -0
  441. package/dist/dashboard/web/agent-workbench-capabilities.js +24 -0
  442. package/dist/dashboard/web/agent-workbench-capabilities.js.map +1 -0
  443. package/dist/dashboard/web/agent-workbench-chat.d.ts +90 -0
  444. package/dist/dashboard/web/agent-workbench-chat.d.ts.map +1 -0
  445. package/dist/dashboard/web/agent-workbench-chat.js +168 -0
  446. package/dist/dashboard/web/agent-workbench-chat.js.map +1 -0
  447. package/dist/dashboard/web/agent-workbench-dock-page.d.ts +3 -0
  448. package/dist/dashboard/web/agent-workbench-dock-page.d.ts.map +1 -0
  449. package/dist/dashboard/web/agent-workbench-dock-page.js +23 -0
  450. package/dist/dashboard/web/agent-workbench-dock-page.js.map +1 -0
  451. package/dist/dashboard/web/agent-workbench-dock-view.d.ts +22 -0
  452. package/dist/dashboard/web/agent-workbench-dock-view.d.ts.map +1 -0
  453. package/dist/dashboard/web/agent-workbench-dock-view.js +76 -0
  454. package/dist/dashboard/web/agent-workbench-dock-view.js.map +1 -0
  455. package/dist/dashboard/web/agent-workbench-model.d.ts +196 -0
  456. package/dist/dashboard/web/agent-workbench-model.d.ts.map +1 -0
  457. package/dist/dashboard/web/agent-workbench-model.js +529 -0
  458. package/dist/dashboard/web/agent-workbench-model.js.map +1 -0
  459. package/dist/dashboard/web/agent-workbench-page.d.ts +3 -0
  460. package/dist/dashboard/web/agent-workbench-page.d.ts.map +1 -0
  461. package/dist/dashboard/web/agent-workbench-page.js +27 -0
  462. package/dist/dashboard/web/agent-workbench-page.js.map +1 -0
  463. package/dist/dashboard/web/agent-workbench-panes.d.ts +49 -0
  464. package/dist/dashboard/web/agent-workbench-panes.d.ts.map +1 -0
  465. package/dist/dashboard/web/agent-workbench-panes.js +468 -0
  466. package/dist/dashboard/web/agent-workbench-panes.js.map +1 -0
  467. package/dist/dashboard/web/agent-workbench-session-list.d.ts +42 -0
  468. package/dist/dashboard/web/agent-workbench-session-list.d.ts.map +1 -0
  469. package/dist/dashboard/web/agent-workbench-session-list.js +353 -0
  470. package/dist/dashboard/web/agent-workbench-session-list.js.map +1 -0
  471. package/dist/dashboard/web/agent-workbench-storage.d.ts +49 -0
  472. package/dist/dashboard/web/agent-workbench-storage.d.ts.map +1 -0
  473. package/dist/dashboard/web/agent-workbench-storage.js +197 -0
  474. package/dist/dashboard/web/agent-workbench-storage.js.map +1 -0
  475. package/dist/dashboard/web/agent-workbench-touch.d.ts +46 -0
  476. package/dist/dashboard/web/agent-workbench-touch.d.ts.map +1 -0
  477. package/dist/dashboard/web/agent-workbench-touch.js +96 -0
  478. package/dist/dashboard/web/agent-workbench-touch.js.map +1 -0
  479. package/dist/dashboard/web/agent-workbench-view.d.ts +34 -0
  480. package/dist/dashboard/web/agent-workbench-view.d.ts.map +1 -0
  481. package/dist/dashboard/web/agent-workbench-view.js +439 -0
  482. package/dist/dashboard/web/agent-workbench-view.js.map +1 -0
  483. package/dist/dashboard/web/app.d.ts.map +1 -1
  484. package/dist/dashboard/web/app.js +63 -2
  485. package/dist/dashboard/web/app.js.map +1 -1
  486. package/dist/dashboard/web/bot-defaults-page.d.ts +18 -0
  487. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  488. package/dist/dashboard/web/bot-defaults-page.js +362 -36
  489. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  490. package/dist/dashboard/web/bot-defaults.d.ts +8 -0
  491. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  492. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  493. package/dist/dashboard/web/control-csrf.d.ts +4 -0
  494. package/dist/dashboard/web/control-csrf.d.ts.map +1 -0
  495. package/dist/dashboard/web/control-csrf.js +26 -0
  496. package/dist/dashboard/web/control-csrf.js.map +1 -0
  497. package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
  498. package/dist/dashboard/web/dashboard-routes.js +2 -0
  499. package/dist/dashboard/web/dashboard-routes.js.map +1 -1
  500. package/dist/dashboard/web/groups-page.d.ts.map +1 -1
  501. package/dist/dashboard/web/groups-page.js +11 -2
  502. package/dist/dashboard/web/groups-page.js.map +1 -1
  503. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  504. package/dist/dashboard/web/i18n.js +140 -6
  505. package/dist/dashboard/web/i18n.js.map +1 -1
  506. package/dist/dashboard/web/overview-page.d.ts.map +1 -1
  507. package/dist/dashboard/web/overview-page.js +3 -2
  508. package/dist/dashboard/web/overview-page.js.map +1 -1
  509. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  510. package/dist/dashboard/web/sessions-page.js +41 -1
  511. package/dist/dashboard/web/sessions-page.js.map +1 -1
  512. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  513. package/dist/dashboard/web/sessions.js +5 -1
  514. package/dist/dashboard/web/sessions.js.map +1 -1
  515. package/dist/dashboard/web/settings-page.d.ts +3 -0
  516. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  517. package/dist/dashboard/web/settings-page.js +56 -10
  518. package/dist/dashboard/web/settings-page.js.map +1 -1
  519. package/dist/dashboard/web/skills-page.d.ts.map +1 -1
  520. package/dist/dashboard/web/skills-page.js +4 -2
  521. package/dist/dashboard/web/skills-page.js.map +1 -1
  522. package/dist/dashboard/web/store.d.ts +27 -2
  523. package/dist/dashboard/web/store.d.ts.map +1 -1
  524. package/dist/dashboard/web/store.js +43 -4
  525. package/dist/dashboard/web/store.js.map +1 -1
  526. package/dist/dashboard/web/ui.d.ts +3 -0
  527. package/dist/dashboard/web/ui.d.ts.map +1 -1
  528. package/dist/dashboard/web/ui.js +11 -0
  529. package/dist/dashboard/web/ui.js.map +1 -1
  530. package/dist/dashboard/web/update-action.d.ts +12 -0
  531. package/dist/dashboard/web/update-action.d.ts.map +1 -1
  532. package/dist/dashboard/web/update-action.js +11 -0
  533. package/dist/dashboard/web/update-action.js.map +1 -1
  534. package/dist/dashboard/workbench-doctor.d.ts +114 -0
  535. package/dist/dashboard/workbench-doctor.d.ts.map +1 -0
  536. package/dist/dashboard/workbench-doctor.js +620 -0
  537. package/dist/dashboard/workbench-doctor.js.map +1 -0
  538. package/dist/dashboard/workbench-ticket.d.ts +165 -0
  539. package/dist/dashboard/workbench-ticket.d.ts.map +1 -0
  540. package/dist/dashboard/workbench-ticket.js +495 -0
  541. package/dist/dashboard/workbench-ticket.js.map +1 -0
  542. package/dist/dashboard-web/app.js +1 -1
  543. package/dist/dashboard-web/chunks/agent-workbench-dock-page-IKAC5CFL.js +1 -0
  544. package/dist/dashboard-web/chunks/agent-workbench-page-M53UN5EB.js +1 -0
  545. package/dist/dashboard-web/chunks/bot-defaults-page-YKE5SDZF.js +10 -0
  546. package/dist/dashboard-web/chunks/chunk-22WIADUT.js +2 -0
  547. package/dist/dashboard-web/chunks/chunk-24ONYQMR.js +1 -0
  548. package/dist/dashboard-web/chunks/{chunk-6O7KXFD2.js → chunk-2W6SCN3M.js} +1 -1
  549. package/dist/dashboard-web/chunks/chunk-4XNJX6B3.js +1 -0
  550. package/dist/dashboard-web/chunks/{chunk-Q2MT4VWH.js → chunk-F6KNPF4R.js} +11 -9
  551. package/dist/dashboard-web/chunks/chunk-FXW3V4JR.js +1 -0
  552. package/dist/dashboard-web/chunks/chunk-G5ZS2YUS.js +1 -0
  553. package/dist/dashboard-web/chunks/chunk-KTQ7B6ZR.js +1 -0
  554. package/dist/dashboard-web/chunks/{chunk-U3ZFSO7E.js → chunk-NACP7BMR.js} +1 -1
  555. package/dist/dashboard-web/chunks/{connectors-page-2KZO5KSJ.js → connectors-page-VOISXXII.js} +1 -1
  556. package/dist/dashboard-web/chunks/{feedback-page-CLVTOLLO.js → feedback-page-RN6HRZMS.js} +1 -1
  557. package/dist/dashboard-web/chunks/groups-page-UQT6DCB7.js +8 -0
  558. package/dist/dashboard-web/chunks/{insights-page-4RPU2CRU.js → insights-page-HJFDYR5N.js} +3 -3
  559. package/dist/dashboard-web/chunks/{monitor-room-OTKQ2CXK.js → monitor-room-V7PCP47V.js} +1 -1
  560. package/dist/dashboard-web/chunks/{monitoring-page-IJPUB6JT.js → monitoring-page-NKEKVQAP.js} +1 -1
  561. package/dist/dashboard-web/chunks/{office-page-QSR3J44Y.js → office-page-GVJF73XW.js} +1 -1
  562. package/dist/dashboard-web/chunks/overview-page-KHLV6VTI.js +1 -0
  563. package/dist/dashboard-web/chunks/{plugin-page-VEGTCEAS.js → plugin-page-J3OF5IY4.js} +1 -1
  564. package/dist/dashboard-web/chunks/{roles-page-6NWJMOB5.js → roles-page-WQIRSOLZ.js} +1 -1
  565. package/dist/dashboard-web/chunks/{schedules-page-6I3LNXD4.js → schedules-page-J2DEY2X6.js} +1 -1
  566. package/dist/dashboard-web/chunks/sessions-page-7BQFEA5P.js +8 -0
  567. package/dist/dashboard-web/chunks/settings-page-BJEIOFJH.js +2 -0
  568. package/dist/dashboard-web/chunks/{skills-page-M2Q6L5CB.js → skills-page-HGIFR3IU.js} +2 -2
  569. package/dist/dashboard-web/chunks/{team-federation-page-7I7FDE3B.js → team-federation-page-MR5ZPL4B.js} +1 -1
  570. package/dist/dashboard-web/chunks/{v3-page-HQXRL65L.js → v3-page-GBR5JWPE.js} +2 -2
  571. package/dist/dashboard-web/chunks/{whiteboards-page-LQKC4TAZ.js → whiteboards-page-QAZM4BN3.js} +1 -1
  572. package/dist/dashboard-web/index.html +8 -1
  573. package/dist/dashboard-web/style.css +2006 -10
  574. package/dist/dashboard.js +1017 -264
  575. package/dist/dashboard.js.map +1 -1
  576. package/dist/dsh-runner.js +8 -1
  577. package/dist/dsh-runner.js.map +1 -1
  578. package/dist/global-config.d.ts +30 -0
  579. package/dist/global-config.d.ts.map +1 -1
  580. package/dist/global-config.js +33 -0
  581. package/dist/global-config.js.map +1 -1
  582. package/dist/i18n/en.d.ts.map +1 -1
  583. package/dist/i18n/en.js +46 -27
  584. package/dist/i18n/en.js.map +1 -1
  585. package/dist/i18n/zh.d.ts.map +1 -1
  586. package/dist/i18n/zh.js +43 -27
  587. package/dist/i18n/zh.js.map +1 -1
  588. package/dist/im/lark/card-builder.d.ts +1 -1
  589. package/dist/im/lark/card-builder.d.ts.map +1 -1
  590. package/dist/im/lark/card-builder.js +22 -6
  591. package/dist/im/lark/card-builder.js.map +1 -1
  592. package/dist/im/lark/card-handler.d.ts.map +1 -1
  593. package/dist/im/lark/card-handler.js +118 -24
  594. package/dist/im/lark/card-handler.js.map +1 -1
  595. package/dist/im/lark/client.d.ts +15 -0
  596. package/dist/im/lark/client.d.ts.map +1 -1
  597. package/dist/im/lark/client.js +30 -0
  598. package/dist/im/lark/client.js.map +1 -1
  599. package/dist/im/lark/event-dispatcher.d.ts +48 -0
  600. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  601. package/dist/im/lark/event-dispatcher.js +138 -41
  602. package/dist/im/lark/event-dispatcher.js.map +1 -1
  603. package/dist/im/lark/identity-cache.d.ts +14 -6
  604. package/dist/im/lark/identity-cache.d.ts.map +1 -1
  605. package/dist/im/lark/identity-cache.js +69 -26
  606. package/dist/im/lark/identity-cache.js.map +1 -1
  607. package/dist/im/lark/lark-hosts.d.ts +13 -0
  608. package/dist/im/lark/lark-hosts.d.ts.map +1 -1
  609. package/dist/im/lark/lark-hosts.js +16 -0
  610. package/dist/im/lark/lark-hosts.js.map +1 -1
  611. package/dist/im/lark/overview-card.d.ts +22 -0
  612. package/dist/im/lark/overview-card.d.ts.map +1 -1
  613. package/dist/im/lark/overview-card.js +53 -3
  614. package/dist/im/lark/overview-card.js.map +1 -1
  615. package/dist/im/lark/sessions-card.d.ts.map +1 -1
  616. package/dist/im/lark/sessions-card.js +26 -3
  617. package/dist/im/lark/sessions-card.js.map +1 -1
  618. package/dist/im/lark/workflow-slash-command.d.ts +6 -0
  619. package/dist/im/lark/workflow-slash-command.d.ts.map +1 -1
  620. package/dist/im/lark/workflow-slash-command.js +7 -0
  621. package/dist/im/lark/workflow-slash-command.js.map +1 -1
  622. package/dist/index-daemon.js +27 -4
  623. package/dist/index-daemon.js.map +1 -1
  624. package/dist/index-dashboard.d.ts +3 -0
  625. package/dist/index-dashboard.d.ts.map +1 -0
  626. package/dist/index-dashboard.js +94 -0
  627. package/dist/index-dashboard.js.map +1 -0
  628. package/dist/platform/team-agents-client.d.ts +199 -0
  629. package/dist/platform/team-agents-client.d.ts.map +1 -0
  630. package/dist/platform/team-agents-client.js +263 -0
  631. package/dist/platform/team-agents-client.js.map +1 -0
  632. package/dist/platform/tunnel-client.d.ts +6 -0
  633. package/dist/platform/tunnel-client.d.ts.map +1 -1
  634. package/dist/platform/tunnel-client.js.map +1 -1
  635. package/dist/services/async-trigger-state.d.ts +7 -3
  636. package/dist/services/async-trigger-state.d.ts.map +1 -1
  637. package/dist/services/async-trigger-state.js +28 -0
  638. package/dist/services/async-trigger-state.js.map +1 -1
  639. package/dist/services/async-trigger-store.d.ts +13 -4
  640. package/dist/services/async-trigger-store.d.ts.map +1 -1
  641. package/dist/services/async-trigger-store.js +55 -8
  642. package/dist/services/async-trigger-store.js.map +1 -1
  643. package/dist/services/bot-config-store.d.ts +1 -11
  644. package/dist/services/bot-config-store.d.ts.map +1 -1
  645. package/dist/services/bot-config-store.js +27 -3
  646. package/dist/services/bot-config-store.js.map +1 -1
  647. package/dist/services/bot-profile-store.d.ts +17 -2
  648. package/dist/services/bot-profile-store.d.ts.map +1 -1
  649. package/dist/services/bot-profile-store.js +93 -12
  650. package/dist/services/bot-profile-store.js.map +1 -1
  651. package/dist/services/bridge-fallback-gate.d.ts +15 -7
  652. package/dist/services/bridge-fallback-gate.d.ts.map +1 -1
  653. package/dist/services/bridge-fallback-gate.js +43 -16
  654. package/dist/services/bridge-fallback-gate.js.map +1 -1
  655. package/dist/services/bridge-turn-queue.d.ts +10 -1
  656. package/dist/services/bridge-turn-queue.d.ts.map +1 -1
  657. package/dist/services/bridge-turn-queue.js +29 -9
  658. package/dist/services/bridge-turn-queue.js.map +1 -1
  659. package/dist/services/claude-transcript.d.ts +19 -0
  660. package/dist/services/claude-transcript.d.ts.map +1 -1
  661. package/dist/services/claude-transcript.js +57 -5
  662. package/dist/services/claude-transcript.js.map +1 -1
  663. package/dist/services/codex-app-threads.d.ts +2 -0
  664. package/dist/services/codex-app-threads.d.ts.map +1 -1
  665. package/dist/services/codex-app-threads.js +1 -1
  666. package/dist/services/codex-app-threads.js.map +1 -1
  667. package/dist/services/codex-reasoning-effort.d.ts +8 -0
  668. package/dist/services/codex-reasoning-effort.d.ts.map +1 -1
  669. package/dist/services/codex-reasoning-effort.js +24 -0
  670. package/dist/services/codex-reasoning-effort.js.map +1 -1
  671. package/dist/services/cursor-resume-policy.d.ts.map +1 -1
  672. package/dist/services/cursor-resume-policy.js +15 -3
  673. package/dist/services/cursor-resume-policy.js.map +1 -1
  674. package/dist/services/open-platform-rename.d.ts.map +1 -1
  675. package/dist/services/open-platform-rename.js +3 -2
  676. package/dist/services/open-platform-rename.js.map +1 -1
  677. package/dist/services/ordinary-turn-recovery.d.ts +76 -0
  678. package/dist/services/ordinary-turn-recovery.d.ts.map +1 -0
  679. package/dist/services/ordinary-turn-recovery.js +349 -0
  680. package/dist/services/ordinary-turn-recovery.js.map +1 -0
  681. package/dist/services/peer-cross-ref-store.d.ts +8 -0
  682. package/dist/services/peer-cross-ref-store.d.ts.map +1 -0
  683. package/dist/services/peer-cross-ref-store.js +95 -0
  684. package/dist/services/peer-cross-ref-store.js.map +1 -0
  685. package/dist/services/pi-transcript.d.ts.map +1 -1
  686. package/dist/services/pi-transcript.js +10 -6
  687. package/dist/services/pi-transcript.js.map +1 -1
  688. package/dist/services/resume-fresh-policy.d.ts +17 -0
  689. package/dist/services/resume-fresh-policy.d.ts.map +1 -0
  690. package/dist/services/resume-fresh-policy.js +24 -0
  691. package/dist/services/resume-fresh-policy.js.map +1 -0
  692. package/dist/services/session-group-title.d.ts +1 -0
  693. package/dist/services/session-group-title.d.ts.map +1 -1
  694. package/dist/services/session-group-title.js +16 -1
  695. package/dist/services/session-group-title.js.map +1 -1
  696. package/dist/services/session-groups-store.d.ts +30 -0
  697. package/dist/services/session-groups-store.d.ts.map +1 -1
  698. package/dist/services/session-groups-store.js +26 -4
  699. package/dist/services/session-groups-store.js.map +1 -1
  700. package/dist/services/session-owner-notification.d.ts +9 -0
  701. package/dist/services/session-owner-notification.d.ts.map +1 -0
  702. package/dist/services/session-owner-notification.js +10 -0
  703. package/dist/services/session-owner-notification.js.map +1 -0
  704. package/dist/services/session-owner-reminder-config-store.d.ts +9 -0
  705. package/dist/services/session-owner-reminder-config-store.d.ts.map +1 -0
  706. package/dist/services/session-owner-reminder-config-store.js +24 -0
  707. package/dist/services/session-owner-reminder-config-store.js.map +1 -0
  708. package/dist/services/session-owner-reminder-store.d.ts +5 -0
  709. package/dist/services/session-owner-reminder-store.d.ts.map +1 -0
  710. package/dist/services/session-owner-reminder-store.js +54 -0
  711. package/dist/services/session-owner-reminder-store.js.map +1 -0
  712. package/dist/services/session-store.d.ts +98 -21
  713. package/dist/services/session-store.d.ts.map +1 -1
  714. package/dist/services/session-store.js +406 -48
  715. package/dist/services/session-store.js.map +1 -1
  716. package/dist/services/structured-bridge-clis.d.ts +15 -2
  717. package/dist/services/structured-bridge-clis.d.ts.map +1 -1
  718. package/dist/services/structured-bridge-clis.js +16 -1
  719. package/dist/services/structured-bridge-clis.js.map +1 -1
  720. package/dist/services/transcript-resolver.d.ts +1 -1
  721. package/dist/services/transcript-resolver.d.ts.map +1 -1
  722. package/dist/services/transcript-resolver.js +6 -1
  723. package/dist/services/transcript-resolver.js.map +1 -1
  724. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  725. package/dist/setup/bot-config-editor.js +7 -2
  726. package/dist/setup/bot-config-editor.js.map +1 -1
  727. package/dist/setup/ensure-herdr-integrations.d.ts +13 -0
  728. package/dist/setup/ensure-herdr-integrations.d.ts.map +1 -1
  729. package/dist/setup/ensure-herdr-integrations.js +21 -3
  730. package/dist/setup/ensure-herdr-integrations.js.map +1 -1
  731. package/dist/setup/open-platform-automation.d.ts +1 -0
  732. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  733. package/dist/setup/open-platform-automation.js +107 -7
  734. package/dist/setup/open-platform-automation.js.map +1 -1
  735. package/dist/skills/definitions.d.ts +17 -0
  736. package/dist/skills/definitions.d.ts.map +1 -1
  737. package/dist/skills/definitions.js +78 -8
  738. package/dist/skills/definitions.js.map +1 -1
  739. package/dist/skills/injection-mode.d.ts +24 -3
  740. package/dist/skills/injection-mode.d.ts.map +1 -1
  741. package/dist/skills/injection-mode.js +64 -15
  742. package/dist/skills/injection-mode.js.map +1 -1
  743. package/dist/skills/installer.d.ts +18 -0
  744. package/dist/skills/installer.d.ts.map +1 -1
  745. package/dist/skills/installer.js +45 -1
  746. package/dist/skills/installer.js.map +1 -1
  747. package/dist/types.d.ts +222 -10
  748. package/dist/types.d.ts.map +1 -1
  749. package/dist/utils/bot-routing.d.ts +1 -1
  750. package/dist/utils/bot-routing.d.ts.map +1 -1
  751. package/dist/utils/bot-routing.js.map +1 -1
  752. package/dist/utils/child-env.d.ts +92 -2
  753. package/dist/utils/child-env.d.ts.map +1 -1
  754. package/dist/utils/child-env.js +195 -1
  755. package/dist/utils/child-env.js.map +1 -1
  756. package/dist/utils/cli-usage-limit.d.ts +25 -14
  757. package/dist/utils/cli-usage-limit.d.ts.map +1 -1
  758. package/dist/utils/cli-usage-limit.js +25 -15
  759. package/dist/utils/cli-usage-limit.js.map +1 -1
  760. package/dist/utils/daemon-rejection-guard.d.ts +35 -0
  761. package/dist/utils/daemon-rejection-guard.d.ts.map +1 -0
  762. package/dist/utils/daemon-rejection-guard.js +101 -0
  763. package/dist/utils/daemon-rejection-guard.js.map +1 -0
  764. package/dist/utils/dashboard-env.d.ts +53 -0
  765. package/dist/utils/dashboard-env.d.ts.map +1 -0
  766. package/dist/utils/dashboard-env.js +116 -0
  767. package/dist/utils/dashboard-env.js.map +1 -0
  768. package/dist/utils/global-install.d.ts.map +1 -1
  769. package/dist/utils/global-install.js +61 -5
  770. package/dist/utils/global-install.js.map +1 -1
  771. package/dist/utils/install-diagnostics.d.ts +14 -7
  772. package/dist/utils/install-diagnostics.d.ts.map +1 -1
  773. package/dist/utils/install-diagnostics.js +20 -11
  774. package/dist/utils/install-diagnostics.js.map +1 -1
  775. package/dist/utils/local-dev-update.d.ts +132 -0
  776. package/dist/utils/local-dev-update.d.ts.map +1 -0
  777. package/dist/utils/local-dev-update.js +176 -0
  778. package/dist/utils/local-dev-update.js.map +1 -0
  779. package/dist/utils/pending-input-queue.d.ts +12 -1
  780. package/dist/utils/pending-input-queue.d.ts.map +1 -1
  781. package/dist/utils/pending-input-queue.js.map +1 -1
  782. package/dist/worker.js +1517 -236
  783. package/dist/worker.js.map +1 -1
  784. package/dist/workflows/definition.d.ts +68 -68
  785. package/dist/workflows/events/payloads.d.ts +14 -14
  786. package/dist/workflows/events/schema.d.ts +312 -312
  787. package/dist/workflows/migration/v2-run-archive-schema.d.ts +40 -40
  788. package/dist/workflows/v3/cli-run.d.ts.map +1 -1
  789. package/dist/workflows/v3/cli-run.js +7 -0
  790. package/dist/workflows/v3/cli-run.js.map +1 -1
  791. package/dist/workflows/v3/goal-cli.d.ts +3 -0
  792. package/dist/workflows/v3/goal-cli.d.ts.map +1 -1
  793. package/dist/workflows/v3/goal-cli.js +11 -0
  794. package/dist/workflows/v3/goal-cli.js.map +1 -1
  795. package/dist/workflows/v3/run-envelope.d.ts +144 -144
  796. package/package.json +7 -2
  797. package/dist/cli/pm2-god-admission.d.ts +0 -8
  798. package/dist/cli/pm2-god-admission.d.ts.map +0 -1
  799. package/dist/cli/pm2-god-admission.js +0 -25
  800. package/dist/cli/pm2-god-admission.js.map +0 -1
  801. package/dist/core/riff-shutdown-detach.d.ts.map +0 -1
  802. package/dist/core/riff-shutdown-detach.js.map +0 -1
  803. package/dist/core/riff-worker-shutdown-readiness.d.ts.map +0 -1
  804. package/dist/core/riff-worker-shutdown-readiness.js.map +0 -1
  805. package/dist/dashboard-web/chunks/bot-defaults-page-4RENHE7J.js +0 -10
  806. package/dist/dashboard-web/chunks/chunk-2WQDS65D.js +0 -1
  807. package/dist/dashboard-web/chunks/chunk-G5XGBCM6.js +0 -1
  808. package/dist/dashboard-web/chunks/chunk-WLIVBPJC.js +0 -1
  809. package/dist/dashboard-web/chunks/groups-page-HLASRTSY.js +0 -8
  810. package/dist/dashboard-web/chunks/overview-page-6OK63V4V.js +0 -1
  811. package/dist/dashboard-web/chunks/sessions-page-B2TXGJDO.js +0 -8
  812. package/dist/dashboard-web/chunks/settings-page-6KJADSC6.js +0 -2
@@ -0,0 +1,353 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useRef, useState, } from 'react';
3
+ import { WORKBENCH_GROUP_DIMENSIONS, attentionSummary, computeVirtualWindow, flattenWorkbenchGroups, formatWorkbenchRelativeTime, groupWorkbenchSessionsForDimension, isWorkbenchGroupDimension, sessionActivityAt, workbenchListItemHeight, workbenchSessionKind, workbenchSessionTitle, } from './agent-workbench-model.js';
4
+ import { loadWorkbenchCollapsedGroups, saveWorkbenchCollapsedGroups, } from './agent-workbench-storage.js';
5
+ import { buildChatAppLink } from './agent-workbench-chat.js';
6
+ import { t } from './ui.js';
7
+ /** 行操作按钮用短文字,不用图标——图标要靠猜,两个字直接说清楚做什么。 */
8
+ /** 会话类型徽标文案。键与 workbenchSessionKind 的返回值一一对应。 */
9
+ const KIND_COPY = {
10
+ thread: { label: '话题', title: '话题会话' },
11
+ group: { label: '群', title: '群会话' },
12
+ p2p: { label: '单聊', title: '单聊会话' },
13
+ };
14
+ /** 与服务端 locateLimiter 对齐的按钮侧冷却;成功态只是短暂的视觉确认。 */
15
+ const LOCATE_COOLDOWN_MS = 30_000;
16
+ const LOCATE_SUCCESS_MS = 2_000;
17
+ /** 429 会把还需等待的秒数挂在错误对象上(WorkbenchApiError.retryAfterSeconds)。
18
+ * 这里刻意用鸭子类型读取,避免展示组件反向依赖 api 模块。 */
19
+ function locateRetryAfterMs(error) {
20
+ const seconds = Number(error?.retryAfterSeconds);
21
+ return Number.isFinite(seconds) && seconds > 0 ? Math.min(seconds * 1000, LOCATE_COOLDOWN_MS) : null;
22
+ }
23
+ function locateErrorText(error) {
24
+ const message = error instanceof Error ? error.message : String(error ?? '');
25
+ return message.trim() || '未知错误';
26
+ }
27
+ /** 行前的状态记号。分组名本身由 model 给(动态维度下就是机器人名/会话名),
28
+ * 这里只留图标,避免同一份文案在两处各写一遍、日子久了对不上。 */
29
+ const GROUP_ICON = {
30
+ 'needs-you': '!',
31
+ active: '●',
32
+ recent: '↺',
33
+ };
34
+ /** 未读但没有 attention 理由时,行里说这一句——它替的是「有什么事」那一格。 */
35
+ const UNREAD_REASON = '有新回复';
36
+ /** 没传 unreadIds 时用同一个空集合,memo 依赖才不会每次渲染都变。 */
37
+ const NO_UNREAD = new Set();
38
+ /** 折叠状态是浏览器本地的一句偏好,列表自己读写(工作台和会话坞共用同一份)。
39
+ * 没有 window(组件测试跑在 node 上)就当没存过,一切照常展开。 */
40
+ function browserStorage() {
41
+ if (typeof window === 'undefined')
42
+ return null;
43
+ try {
44
+ return window.localStorage;
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ }
50
+ /** 组头是真按钮,Enter / Space 该由浏览器派给它自己。列表的 keydown 挂在滚动容器
51
+ * 上,事件会冒泡上来,不认一下就会「折叠一次 + 再选中一次」两件事一起发生。 */
52
+ function fromGroupToggle(target) {
53
+ const node = target;
54
+ return typeof node?.closest === 'function' && node.closest('.wb-session-group-toggle') !== null;
55
+ }
56
+ /** 分组头的图标:动态维度(机器人/会话/CLI)的组没有语义颜色,用中性圆点。 */
57
+ function headerIcon(item) {
58
+ if (item.isNeedsYou)
59
+ return GROUP_ICON['needs-you'];
60
+ if (item.groupKey === 'active')
61
+ return GROUP_ICON.active;
62
+ if (item.groupKey === 'recent')
63
+ return GROUP_ICON.recent;
64
+ return '·';
65
+ }
66
+ /** 只有这三个保留 key 才允许拼进 class 名——bot/chat/cli 的组名是数据里的自由
67
+ * 文本,绝不能直接拼类名。「待你处理」保留红色高亮,其余组走 .wb-session-group 默认色。 */
68
+ function headerClassName(item) {
69
+ if (item.isNeedsYou)
70
+ return 'wb-session-group wb-session-group-needs-you';
71
+ if (item.groupKey === 'active')
72
+ return 'wb-session-group wb-session-group-active';
73
+ if (item.groupKey === 'recent')
74
+ return 'wb-session-group wb-session-group-recent';
75
+ return 'wb-session-group';
76
+ }
77
+ /** The one chat-opening element every Workbench surface shares. It must stay
78
+ * a plain anchor with exactly these semantics — the Dashboard's session page
79
+ * proved this shape (a real user click on target=_blank rel=noopener) is the
80
+ * only unsigned dispatch the Feishu client gives standard treatment; every
81
+ * scripted variant (window.open, hidden .click(), enterChat) gets demoted. */
82
+ function FeishuChatAnchor(props) {
83
+ return (_jsx("a", { className: props.className, href: props.href, target: "_blank", rel: "noopener", title: props.title, "aria-label": props.ariaLabel, onClick: event => {
84
+ event.stopPropagation();
85
+ props.onActivate?.();
86
+ }, children: props.children }));
87
+ }
88
+ function useViewportHeight(ref) {
89
+ const [height, setHeight] = useState(560);
90
+ useEffect(() => {
91
+ const node = ref.current;
92
+ if (!node)
93
+ return undefined;
94
+ const update = () => setHeight(Math.max(120, node.clientHeight || 560));
95
+ update();
96
+ if (typeof ResizeObserver === 'undefined')
97
+ return undefined;
98
+ const observer = new ResizeObserver(update);
99
+ observer.observe(node);
100
+ return () => observer.disconnect();
101
+ }, [ref]);
102
+ return height;
103
+ }
104
+ function sessionOptionId(sessionId) {
105
+ let hash = 2166136261;
106
+ for (let index = 0; index < sessionId.length; index += 1) {
107
+ hash ^= sessionId.charCodeAt(index);
108
+ hash = Math.imul(hash, 16777619);
109
+ }
110
+ return `wb-session-${(hash >>> 0).toString(36)}`;
111
+ }
112
+ function sessionSecondary(session) {
113
+ return [session.botName, session.cliId, session.repoName].filter(Boolean).join(' · ') || session.sessionId;
114
+ }
115
+ /** Mirrors the 620px breakpoint the stylesheet uses for taller touch rows, so
116
+ * virtualisation and CSS never disagree about how tall a row is. */
117
+ function useTouchRowMetrics() {
118
+ const [touch, setTouch] = useState(false);
119
+ useEffect(() => {
120
+ if (typeof window === 'undefined' || !window.matchMedia)
121
+ return undefined;
122
+ const query = window.matchMedia('(max-width: 620px)');
123
+ const sync = () => setTouch(query.matches);
124
+ sync();
125
+ query.addEventListener('change', sync);
126
+ return () => query.removeEventListener('change', sync);
127
+ }, []);
128
+ return touch;
129
+ }
130
+ export function WorkbenchSessionList(props) {
131
+ const touchRows = useTouchRowMetrics();
132
+ const [query, setQuery] = useState('');
133
+ const [scrollTop, setScrollTop] = useState(0);
134
+ const scrollerRef = useRef(null);
135
+ const lastScrolledSelectionRef = useRef(props.selectedSessionId ?? null);
136
+ const viewportHeight = useViewportHeight(scrollerRef);
137
+ // 冷却状态挂在列表上而不是按钮上:行是虚拟滚动的,按钮滚出视口就卸载,
138
+ // 状态放按钮里会被一次滚动清空,用户就能连点绕过 30s 限流。
139
+ const [locateAt, setLocateAt] = useState(() => new Map());
140
+ const [locateError, setLocateError] = useState(() => new Map());
141
+ const [, setLocateTick] = useState(0);
142
+ // 折叠的组 key。存的是 model 给的稳定 key(`bot:Builder` 这种带维度前缀的),
143
+ // 全维度唯一,所以一份集合天然按维度隔离,切维度不会互相影响。
144
+ const [collapsedGroups, setCollapsedGroups] = useState(() => new Set(loadWorkbenchCollapsedGroups(browserStorage()) ?? []));
145
+ const unreadIds = props.unreadIds ?? NO_UNREAD;
146
+ const dimension = props.dimension ?? 'status';
147
+ // 时间维度只认「今天/昨天/本周」这种天级边界。父级的 now 每渲染一次都是新值,
148
+ // 直接进依赖会让 300+ 会话的列表每帧重排一次;量化到分钟就够用了。
149
+ const bucketNow = Math.floor((props.now ?? Date.now()) / 60_000) * 60_000;
150
+ const groups = useMemo(() => groupWorkbenchSessionsForDimension(props.sessions, { query, dimension, unreadIds, now: bucketNow }), [bucketNow, dimension, props.sessions, query, unreadIds]);
151
+ const items = useMemo(() => flattenWorkbenchGroups(groups, collapsedGroups), [collapsedGroups, groups]);
152
+ const visible = useMemo(() => computeVirtualWindow(items, scrollTop, viewportHeight, 240, touchRows), [items, scrollTop, touchRows, viewportHeight]);
153
+ // 折叠掉的会话不在 items 里,j/k 于是自动跳过它们——这正是我们要的。
154
+ const sessionItems = useMemo(() => items.filter((item) => item.kind === 'session'), [items]);
155
+ // 「有没有匹配的会话」和收起态角标都要看折叠前的真实条数:全组折叠起来只是把行
156
+ // 藏了,不代表搜不到东西,更不代表没有会话在等你。
157
+ const matchedCount = useMemo(() => groups.reduce((total, group) => total + group.sessions.length, 0), [groups]);
158
+ const needsYouCount = useMemo(() => groups.find(group => group.kind === 'needs-you')?.sessions.length ?? 0, [groups]);
159
+ // 定位只在选中会话变化时发生一次,避免每次重渲染都把 scrollTop 拽回选中行、和用户滚动打架。
160
+ // 初始选中不定位(列表保持置顶的「待你处理」可见),只有用户切换选中才滚动定位。
161
+ useEffect(() => {
162
+ if (!props.selectedSessionId) {
163
+ lastScrolledSelectionRef.current = null;
164
+ return;
165
+ }
166
+ if (lastScrolledSelectionRef.current === props.selectedSessionId)
167
+ return;
168
+ if (!sessionItems.some(item => item.session.sessionId === props.selectedSessionId))
169
+ return;
170
+ lastScrolledSelectionRef.current = props.selectedSessionId;
171
+ const index = items.findIndex(item => item.kind === 'session' && item.session.sessionId === props.selectedSessionId);
172
+ const top = visible.positions[index] ?? 0;
173
+ const bottom = top + workbenchListItemHeight(items[index], touchRows);
174
+ const node = scrollerRef.current;
175
+ if (!node || (top >= node.scrollTop && bottom <= node.scrollTop + node.clientHeight))
176
+ return;
177
+ node.scrollTop = Math.max(0, top - Math.round(node.clientHeight / 3));
178
+ }, [items, props.selectedSessionId, sessionItems, visible.positions]);
179
+ // 冷却和成功态都是时间推导出来的,需要一个心跳把它们重绘掉。心跳只在真的有
180
+ // 冷却时存在:过期条目在这里被剪掉,Map 空了 effect 自然清掉定时器。
181
+ // 用裸的 setInterval 而不是 window.setInterval:这个 effect 在首次成功定位后
182
+ // 才挂载,走 window 会让整个列表在没有 window 的环境(组件测试跑在 node 上)
183
+ // 一点定位就崩。同目录的 panes 一直是这么写的,计时本来也不需要 DOM。
184
+ useEffect(() => {
185
+ if (locateAt.size === 0)
186
+ return undefined;
187
+ const timer = setInterval(() => {
188
+ setLocateAt(previous => {
189
+ const now = Date.now();
190
+ const next = new Map([...previous].filter(([, at]) => now - at < LOCATE_COOLDOWN_MS));
191
+ return next.size === previous.size ? previous : next;
192
+ });
193
+ setLocateTick(value => value + 1);
194
+ }, 500);
195
+ return () => clearInterval(timer);
196
+ }, [locateAt]);
197
+ const onLocate = props.onLocate;
198
+ const startLocate = (sessionId) => {
199
+ if (!onLocate)
200
+ return;
201
+ // 乐观进入冷却:请求还在飞的时候按钮就不可点,失败再放开。
202
+ setLocateAt(previous => new Map(previous).set(sessionId, Date.now()));
203
+ setLocateError(previous => {
204
+ if (!previous.has(sessionId))
205
+ return previous;
206
+ const next = new Map(previous);
207
+ next.delete(sessionId);
208
+ return next;
209
+ });
210
+ void onLocate(sessionId).then(() => {
211
+ // 成功后把时间戳推到「此刻」:成功态从这里开始算 2s,冷却也从服务端
212
+ // 真正受理的时刻开始算 30s,不会比服务端的限流窗口短。
213
+ setLocateAt(previous => new Map(previous).set(sessionId, Date.now()));
214
+ }, (error) => {
215
+ setLocateError(previous => new Map(previous).set(sessionId, locateErrorText(error)));
216
+ const retryAfterMs = locateRetryAfterMs(error);
217
+ setLocateAt(previous => {
218
+ const next = new Map(previous);
219
+ // 429 说明服务端还在限流窗口里,按它给的剩余时间继续禁用;
220
+ // 其它错误立刻恢复可点,让用户能重试。
221
+ if (retryAfterMs === null)
222
+ next.delete(sessionId);
223
+ else
224
+ next.set(sessionId, Date.now() - (LOCATE_COOLDOWN_MS - retryAfterMs));
225
+ return next;
226
+ });
227
+ });
228
+ };
229
+ /** 折叠/展开一个组,并立刻落盘——这是用户按一下就该记住的偏好,没必要攒批。 */
230
+ const toggleGroup = (groupKey) => {
231
+ const next = new Set(collapsedGroups);
232
+ // 新折叠的组加在末尾:数组按加入序存,封顶时先丢最早折叠的那些。
233
+ if (!next.delete(groupKey))
234
+ next.add(groupKey);
235
+ setCollapsedGroups(next);
236
+ saveWorkbenchCollapsedGroups(browserStorage(), next);
237
+ };
238
+ const moveSelection = (delta) => {
239
+ if (sessionItems.length === 0)
240
+ return;
241
+ const current = sessionItems.findIndex(item => item.session.sessionId === props.selectedSessionId);
242
+ const next = current < 0
243
+ ? (delta > 0 ? 0 : sessionItems.length - 1)
244
+ : Math.max(0, Math.min(sessionItems.length - 1, current + delta));
245
+ props.onSelect(sessionItems[next].session.sessionId);
246
+ };
247
+ const changeQuery = (value) => {
248
+ setQuery(value);
249
+ setScrollTop(0);
250
+ if (scrollerRef.current)
251
+ scrollerRef.current.scrollTop = 0;
252
+ };
253
+ const onListKeyDown = (event) => {
254
+ if (event.altKey || event.ctrlKey || event.metaKey)
255
+ return;
256
+ // 焦点在组头按钮上时,Enter / Space 是它自己的激活键,列表别再抢一次。
257
+ // j/k 和方向键照旧生效,从组头也能直接开始上下走。
258
+ if ((event.key === 'Enter' || event.key === ' ') && fromGroupToggle(event.target))
259
+ return;
260
+ if (event.key === 'j' || event.key === 'ArrowDown') {
261
+ event.preventDefault();
262
+ moveSelection(1);
263
+ }
264
+ else if (event.key === 'k' || event.key === 'ArrowUp') {
265
+ event.preventDefault();
266
+ moveSelection(-1);
267
+ }
268
+ else if (event.key === 'Enter' && props.selectedSessionId) {
269
+ event.preventDefault();
270
+ props.onSelect(props.selectedSessionId);
271
+ // Hand focus to the row's real chat anchor; the user's next Enter is the
272
+ // browser's own activation of a focused link — a trusted event. A script
273
+ // .click() here would be isTrusted=false, the demoted dispatch again.
274
+ if (props.chatFollowNavigates && typeof document !== 'undefined') {
275
+ document.getElementById(sessionOptionId(props.selectedSessionId))
276
+ ?.querySelector('a.wb-session-copy-link')
277
+ ?.focus();
278
+ }
279
+ }
280
+ };
281
+ if (props.collapsed) {
282
+ const collapsedLabel = (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": "true", children: "\u00BB" }), _jsx("span", { className: "wb-rail-vertical-label", children: "\u4F1A\u8BDD" })] }));
283
+ return (_jsxs("aside", { className: "wb-session-rail is-collapsed", "aria-label": "\u4F1A\u8BDD\u5217\u8868\uFF08\u5DF2\u6536\u8D77\uFF09", children: [props.onToggleCollapsed ? (_jsx("button", { type: "button", className: "wb-rail-expand", "aria-label": "\u5C55\u5F00\u4F1A\u8BDD\u5217\u8868", title: "\u5C55\u5F00\u4F1A\u8BDD\u5217\u8868", onClick: props.onToggleCollapsed, children: collapsedLabel })) : _jsx("div", { className: "wb-rail-expand", "aria-label": "\u4F1A\u8BDD\u5217\u8868\uFF08\u5DF2\u6536\u8D77\uFF09", children: collapsedLabel }), _jsx("span", { className: "wb-rail-count", "aria-label": `${needsYouCount} 个会话需要处理`, children: needsYouCount })] }));
284
+ }
285
+ return (_jsxs("aside", { className: "wb-session-rail", "aria-label": "\u4F1A\u8BDD\u5217\u8868", children: [_jsxs("div", { className: "wb-rail-heading", children: [_jsxs("div", { children: [_jsx("span", { className: props.online ? 'is-online' : 'is-offline', title: props.online ? '实时连接正常' : '已离线,显示最后快照', "aria-hidden": "true", children: props.online ? '●' : '○' }), _jsx("strong", { children: "\u4F1A\u8BDD" }), _jsx("span", { children: props.sessions.length })] }), props.onDimensionChange ? (_jsx("select", { className: "wb-group-dim", "aria-label": "\u5206\u7EC4\u7EF4\u5EA6", value: dimension, onChange: event => {
286
+ const value = event.currentTarget.value;
287
+ if (isWorkbenchGroupDimension(value))
288
+ props.onDimensionChange?.(value);
289
+ }, children: WORKBENCH_GROUP_DIMENSIONS.map(option => (_jsx("option", { value: option.value, children: option.label }, option.value))) })) : null, props.onOpenAppearance ? (_jsx("button", { type: "button", className: "wb-appearance-btn", "aria-haspopup": "dialog", "aria-label": t('workbench.appearance.title'), title: t('workbench.appearance.title'), onClick: props.onOpenAppearance, children: "\u25D0" })) : null, props.onToggleCollapsed ? (_jsx("button", { type: "button", "aria-label": "\u6536\u8D77\u4F1A\u8BDD\u5217\u8868", title: "\u6536\u8D77\u4F1A\u8BDD\u5217\u8868", onClick: props.onToggleCollapsed, children: "\u00AB" })) : null] }), _jsxs("label", { className: "wb-session-search", children: [_jsx("span", { className: "wb-visually-hidden", children: "\u641C\u7D22\u4F1A\u8BDD" }), _jsx("span", { "aria-hidden": "true", children: "\u2315" }), _jsx("input", { type: "search", placeholder: "\u641C\u7D22\u2026", value: query, onChange: event => changeQuery(event.currentTarget.value), onKeyDown: event => {
290
+ if (event.key === 'ArrowDown') {
291
+ event.preventDefault();
292
+ scrollerRef.current?.focus();
293
+ moveSelection(1);
294
+ }
295
+ } }), query ? _jsx("button", { type: "button", "aria-label": "\u6E05\u9664\u641C\u7D22", onClick: () => changeQuery(''), children: "\u00D7" }) : null] }), _jsxs("div", { ref: scrollerRef, className: "wb-session-list", role: "listbox", tabIndex: 0, "aria-label": "\u5DE5\u4F5C\u53F0\u4F1A\u8BDD", "aria-activedescendant": props.selectedSessionId ? sessionOptionId(props.selectedSessionId) : undefined, onScroll: event => setScrollTop(event.currentTarget.scrollTop), onKeyDown: onListKeyDown, children: [_jsx("div", { className: "wb-session-list-space", style: { height: visible.totalHeight }, children: items.slice(visible.start, visible.end).map((item, sliceIndex) => {
296
+ const index = visible.start + sliceIndex;
297
+ const style = { top: visible.positions[index], height: workbenchListItemHeight(item, touchRows) };
298
+ if (item.kind === 'header') {
299
+ const groupCollapsed = item.collapsed === true;
300
+ return (_jsxs("button", { type: "button", className: `${headerClassName(item)} wb-session-group-toggle`, style: style, "aria-expanded": !groupCollapsed, title: groupCollapsed ? `展开「${item.label}」` : `折叠「${item.label}」`, onClick: () => toggleGroup(item.groupKey), children: [_jsx("span", { className: "wb-session-group-caret", "aria-hidden": "true", children: groupCollapsed ? '▸' : '▾' }), _jsx("span", { "aria-hidden": "true", children: headerIcon(item) }), _jsx("strong", { children: item.label }), _jsx("span", { children: item.count })] }, item.key));
301
+ }
302
+ const session = item.session;
303
+ const title = workbenchSessionTitle(session);
304
+ const unread = unreadIds.has(session.sessionId);
305
+ // attention 理由优先——它说的是「卡住了」,比「有新回复」重要得多。
306
+ const reason = attentionSummary(session) ?? (unread ? UNREAD_REASON : null);
307
+ const selected = session.sessionId === props.selectedSessionId;
308
+ const statusText = item.group === 'needs-you' ? '待你处理' : item.group === 'active' ? session.status : '最近';
309
+ const openSurface = props.onOpenSurface;
310
+ const chatHref = session.feishuChatLink
311
+ || (session.chatId ? buildChatAppLink(session.chatId) : null);
312
+ const kind = workbenchSessionKind(session);
313
+ return (_jsxs("div", { id: sessionOptionId(session.sessionId), className: `wb-session-row wb-session-row-${item.group}${selected ? ' is-selected' : ''}${unread ? ' is-unread' : ''}`, role: "option", tabIndex: -1, "aria-selected": selected, "aria-label": `${title}. ${statusText}${reason ? `. ${reason}` : ''}`, style: style, onClick: () => props.onSelect(session.sessionId), children: [_jsx("span", { className: "wb-session-state-mark", "aria-hidden": "true", children: GROUP_ICON[item.group] }), (() => {
314
+ const copy = (_jsxs(_Fragment, { children: [_jsx("span", { className: "wb-session-title", title: title, children: title }), _jsxs("span", { className: "wb-session-meta", title: sessionSecondary(session), children: [kind ? (_jsx("span", { className: `wb-session-kind is-${kind}`, title: KIND_COPY[kind].title, children: KIND_COPY[kind].label })) : null, reason ? _jsx("span", { className: "wb-session-reason", children: reason }) : _jsx("span", { children: sessionSecondary(session) }), unread ? _jsx("span", { className: "wb-unread-dot", role: "img", "aria-label": UNREAD_REASON }) : null, _jsx("time", { dateTime: new Date(sessionActivityAt(session)).toISOString(), children: formatWorkbenchRelativeTime(sessionActivityAt(session), props.now, props.locale) })] })] }));
315
+ if (!props.chatFollowNavigates || !chatHref) {
316
+ return _jsx("span", { className: "wb-session-copy", children: copy });
317
+ }
318
+ return (_jsx(FeishuChatAnchor, { className: "wb-session-copy wb-session-copy-link", href: chatHref, ariaLabel: `选中并打开飞书聊天 — ${title}`, onActivate: () => props.onSelect(session.sessionId), children: copy }));
319
+ })(), openSurface ? (_jsxs("span", { className: "wb-session-row-actions", children: [chatHref ? (_jsx(FeishuChatAnchor, { className: "wb-session-row-action is-chat", href: chatHref, title: "\u6253\u5F00\u98DE\u4E66\u804A\u5929", ariaLabel: `打开飞书聊天 — ${title}`,
320
+ // 去飞书看聊天就是看过了;但不动选中态——移动端选中会直接
321
+ // 钻进工作区,一次点击给两个目的地。
322
+ onActivate: () => props.onSeen?.(session.sessionId), children: "\u804A\u5929" })) : null, kind === 'thread' && onLocate ? (() => {
323
+ const at = locateAt.get(session.sessionId) ?? 0;
324
+ const elapsed = Date.now() - at;
325
+ const cooling = at > 0 && elapsed < LOCATE_COOLDOWN_MS;
326
+ const failure = locateError.get(session.sessionId);
327
+ const located = cooling && !failure && elapsed < LOCATE_SUCCESS_MS;
328
+ const label = cooling
329
+ ? '定位已发送,30 秒后可再次使用'
330
+ : failure
331
+ ? `定位失败:${failure}`
332
+ : '在话题里 @ 我定位';
333
+ return (_jsx("button", { type: "button", className: `wb-session-row-action is-locate${located ? ' is-located' : ''}`, title: label, "aria-label": `${label} — ${title}`, disabled: cooling, onClick: event => {
334
+ event.stopPropagation();
335
+ props.onSeen?.(session.sessionId);
336
+ startLocate(session.sessionId);
337
+ }, children: located ? '已发送' : '定位' }));
338
+ })() : null, ([
339
+ ['terminal', '打开只读终端', '终端'],
340
+ // 接管捷径只对有 canControl 能力的身份渲染(P1-4);
341
+ // undefined(dock/旧调用方)保持旧行为。
342
+ ...(props.canControlTerminal !== false
343
+ ? [['terminal-control', '打开终端并接管输入', '接管']]
344
+ : []),
345
+ ]).map(([surface, label, text]) => (_jsx("button", { type: "button", className: `wb-session-row-action is-${surface}`, title: label, "aria-label": `${label} — ${title}`, onClick: event => {
346
+ // The row itself selects; without this the click would
347
+ // also bubble and fire a redundant selection.
348
+ event.stopPropagation();
349
+ openSurface(session.sessionId, surface);
350
+ }, children: text }, surface)))] })) : null] }, item.key));
351
+ }) }), matchedCount === 0 ? _jsx("p", { className: "wb-session-empty", children: "\u6CA1\u6709\u5339\u914D\u7684\u4F1A\u8BDD" }) : null] })] }));
352
+ }
353
+ //# sourceMappingURL=agent-workbench-session-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-workbench-session-list.js","sourceRoot":"","sources":["../../../src/dashboard/web/agent-workbench-session-list.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,GAGT,MAAM,OAAO,CAAC;AACf,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,2BAA2B,EAC3B,kCAAkC,EAClC,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,GAMtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAE7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,SAAS,CAAC;AAE5B,yCAAyC;AAEzC,iDAAiD;AACjD,MAAM,SAAS,GAAmE;IAChF,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;IACtC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;IACnC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;CACpC,CAAC;AAEF,gDAAgD;AAChD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC;qCACqC;AACrC,SAAS,kBAAkB,CAAC,KAAc;IACxC,MAAM,OAAO,GAAG,MAAM,CAAE,KAA4D,EAAE,iBAAiB,CAAC,CAAC;IACzG,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvG,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC;AAClC,CAAC;AAED;qCACqC;AACrC,MAAM,UAAU,GAA0C;IACxD,WAAW,EAAE,GAAG;IAChB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;CACZ,CAAC;AAEF,iDAAiD;AACjD,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B,8CAA8C;AAC9C,MAAM,SAAS,GAAwB,IAAI,GAAG,EAAU,CAAC;AAEzD;4CAC4C;AAC5C,SAAS,cAAc;IACrB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,CAAC;QAAC,OAAO,MAAM,CAAC,YAAY,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC5D,CAAC;AAED;6CAC6C;AAC7C,SAAS,eAAe,CAAC,MAA0B;IACjD,MAAM,IAAI,GAAG,MAA4D,CAAC;IAC1E,OAAO,OAAO,IAAI,EAAE,OAAO,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,KAAK,IAAI,CAAC;AAClG,CAAC;AAED,6CAA6C;AAC7C,SAAS,UAAU,CAAC,IAAoD;IACtE,IAAI,IAAI,CAAC,UAAU;QAAE,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC,MAAM,CAAC;IACzD,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC,MAAM,CAAC;IACzD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;2DAC2D;AAC3D,SAAS,eAAe,CAAC,IAAoD;IAC3E,IAAI,IAAI,CAAC,UAAU;QAAE,OAAO,6CAA6C,CAAC;IAC1E,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,0CAA0C,CAAC;IAClF,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,0CAA0C,CAAC;IAClF,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED;;;;+EAI+E;AAC/E,SAAS,gBAAgB,CAAC,KAOzB;IACC,OAAO,CACL,YACE,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,UAAU,EACd,KAAK,EAAE,KAAK,CAAC,KAAK,gBACN,KAAK,CAAC,SAAS,EAC3B,OAAO,EAAE,KAAK,CAAC,EAAE;YACf,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC;QACvB,CAAC,YACD,KAAK,CAAC,QAAQ,GAAK,CACtB,CAAC;AACJ,CAAC;AA0CD,SAAS,iBAAiB,CAAC,GAAwC;IACjE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;QACzB,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC;QACxE,MAAM,EAAE,CAAC;QACT,IAAI,OAAO,cAAc,KAAK,WAAW;YAAE,OAAO,SAAS,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACV,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB;IACxC,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA4B;IACpD,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC;AAC7G,CAAC;AAED;qEACqE;AACrE,SAAS,kBAAkB;IACzB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,EAAE,CAAC;QACP,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvC,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAgC;IACnE,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACxD,MAAM,wBAAwB,GAAG,MAAM,CAAgB,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC;IACxF,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACtD,qCAAqC;IACrC,kCAAkC;IAClC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAA8B,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IACvF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAA8B,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC7F,MAAM,CAAC,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,uDAAuD;IACvD,iCAAiC;IACjC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CACpD,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,4BAA4B,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,CACpE,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC;IAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC;IAC9C,4CAA4C;IAC5C,sCAAsC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;IAC1E,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,kCAAkC,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EACzG,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CACzD,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IACxG,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,CAAC,EAC5E,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAC9C,CAAC;IACF,0CAA0C;IAC1C,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAA2D,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAC9G,CAAC,KAAK,CAAC,CACR,CAAC;IACF,yCAAyC;IACzC,2BAA2B;IAC3B,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,EACvE,CAAC,MAAM,CAAC,CACT,CAAC;IACF,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,EAC5E,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,qDAAqD;IACrD,0CAA0C;IAC1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC7B,wBAAwB,CAAC,OAAO,GAAG,IAAI,CAAC;YACxC,OAAO;QACT,CAAC;QACD,IAAI,wBAAwB,CAAC,OAAO,KAAK,KAAK,CAAC,iBAAiB;YAAE,OAAO;QACzE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,iBAAiB,CAAC;YAAE,OAAO;QAC3F,wBAAwB,CAAC,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrH,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,GAAG,GAAG,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;YAAE,OAAO;QAC7F,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,iBAAiB,EAAE,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAEtE,uCAAuC;IACvC,0CAA0C;IAC1C,4DAA4D;IAC5D,mDAAmD;IACnD,0CAA0C;IAC1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,WAAW,CAAC,QAAQ,CAAC,EAAE;gBACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,kBAAkB,CAAC,CAAC,CAAC;gBACtF,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;YACvD,CAAC,CAAC,CAAC;YACH,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAE,EAAE;QACxC,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,+BAA+B;QAC/B,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtE,cAAc,CAAC,QAAQ,CAAC,EAAE;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,OAAO,QAAQ,CAAC;YAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAC3B,GAAG,EAAE;YACH,qCAAqC;YACrC,+BAA+B;YAC/B,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACjB,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrF,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC/C,WAAW,CAAC,QAAQ,CAAC,EAAE;gBACrB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC/B,iCAAiC;gBACjC,qBAAqB;gBACrB,IAAI,YAAY,KAAK,IAAI;oBAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;;oBAC7C,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,kBAAkB,GAAG,YAAY,CAAC,CAAC,CAAC;gBAC3E,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC,CAAC;IAEF,4CAA4C;IAC5C,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;QACtC,kCAAkC;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzB,4BAA4B,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE;QACtC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACtC,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACnG,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC;YACtB,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;QACpE,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE;QACpC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,YAAY,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,WAAW,CAAC,OAAO;YAAE,WAAW,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;IAC7D,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAyC,EAAE,EAAE;QAClE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO;QAC3D,4CAA4C;QAC5C,6BAA6B;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO;QAC1F,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YACnD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,aAAa,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACxD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5D,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACxC,yEAAyE;YACzE,yEAAyE;YACzE,sEAAsE;YACtE,IAAI,KAAK,CAAC,mBAAmB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACjE,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;oBAC/D,EAAE,aAAa,CAAoB,wBAAwB,CAAC;oBAC5D,EAAE,KAAK,EAAE,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,MAAM,cAAc,GAAG,CACrB,8BACE,8BAAkB,MAAM,uBAAS,EACjC,eAAM,SAAS,EAAC,wBAAwB,6BAAU,IACjD,CACJ,CAAC;QACF,OAAO,CACL,iBAAO,SAAS,EAAC,8BAA8B,gBAAY,wDAAW,aACnE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACzB,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,gBAAgB,gBACf,sCAAQ,EACnB,KAAK,EAAC,sCAAQ,EACd,OAAO,EAAE,KAAK,CAAC,iBAAiB,YAChC,cAAc,GAAU,CAC3B,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,gBAAgB,gBAAY,wDAAW,YAAE,cAAc,GAAO,EACjF,eAAM,SAAS,EAAC,eAAe,gBAAa,GAAG,aAAa,UAAU,YACnE,aAAa,GACT,IACD,CACT,CAAC;IACJ,CAAC;IAED,OAAO,CACL,iBAAO,SAAS,EAAC,iBAAiB,gBAAY,0BAAM,aAClD,eAAK,SAAS,EAAC,iBAAiB,aAC9B,0BACE,eACE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EACpD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,iBACjC,MAAM,YAClB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,EAClC,4CAAmB,EACnB,yBAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAQ,IAChC,EACL,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACzB,iBACE,SAAS,EAAC,cAAc,gBACb,0BAAM,EACjB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,KAAK,CAAC,EAAE;4BAChB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;4BACxC,IAAI,yBAAyB,CAAC,KAAK,CAAC;gCAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC;wBACzE,CAAC,YAEA,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CACxC,iBAA2B,KAAK,EAAE,MAAM,CAAC,KAAK,YAAG,MAAM,CAAC,KAAK,IAAhD,MAAM,CAAC,KAAK,CAA8C,CACxE,CAAC,GACK,CACV,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CACxB,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,mBAAmB,mBACf,QAAQ,gBACV,CAAC,CAAC,4BAA4B,CAAC,EAC3C,KAAK,EAAE,CAAC,CAAC,4BAA4B,CAAC,EACtC,OAAO,EAAE,KAAK,CAAC,gBAAgB,uBACtB,CACZ,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACzB,iBAAQ,IAAI,EAAC,QAAQ,gBAAY,sCAAQ,EAAC,KAAK,EAAC,sCAAQ,EAAC,OAAO,EAAE,KAAK,CAAC,iBAAiB,uBAAY,CACtG,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,iBAAO,SAAS,EAAC,mBAAmB,aAClC,eAAM,SAAS,EAAC,oBAAoB,yCAAY,EAChD,8BAAkB,MAAM,uBAAS,EACjC,gBACE,IAAI,EAAC,QAAQ,EACb,WAAW,EAAC,oBAAK,EACjB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EACzD,SAAS,EAAE,KAAK,CAAC,EAAE;4BACjB,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;gCAC9B,KAAK,CAAC,cAAc,EAAE,CAAC;gCACvB,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;gCAC7B,aAAa,CAAC,CAAC,CAAC,CAAC;4BACnB,CAAC;wBACH,CAAC,GACD,EACD,KAAK,CAAC,CAAC,CAAC,iBAAQ,IAAI,EAAC,QAAQ,gBAAY,0BAAM,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,uBAAY,CAAC,CAAC,CAAC,IAAI,IAC5F,EACR,eACE,GAAG,EAAE,WAAW,EAChB,SAAS,EAAC,iBAAiB,EAC3B,IAAI,EAAC,SAAS,EACd,QAAQ,EAAE,CAAC,gBACA,gCAAO,2BACK,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,EACrG,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,EAC9D,SAAS,EAAE,aAAa,aAExB,cAAK,SAAS,EAAC,uBAAuB,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,YAC1E,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;4BAChE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC;4BACzC,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,uBAAuB,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;4BAClG,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gCAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;gCAC/C,OAAO,CACL,kBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,0BAA0B,EAC7D,KAAK,EAAE,KAAK,mBACG,CAAC,cAAc,EAC9B,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,GAAG,EACjE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAEzC,eAAM,SAAS,EAAC,wBAAwB,iBAAa,MAAM,YAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,EAC/F,8BAAkB,MAAM,YAAE,UAAU,CAAC,IAAI,CAAC,GAAQ,EAClD,2BAAS,IAAI,CAAC,KAAK,GAAU,EAC7B,yBAAO,IAAI,CAAC,KAAK,GAAQ,KAXpB,IAAI,CAAC,GAAG,CAYN,CACV,CAAC;4BACJ,CAAC;4BACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;4BAC7B,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;4BAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;4BAChD,yCAAyC;4BACzC,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;4BAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,iBAAiB,CAAC;4BAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;4BACzG,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC;4BACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc;mCAClC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;4BAChE,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;4BAC3C,OAAO,CACH,eAEE,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,EACtC,SAAS,EAAE,iCAAiC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EACtH,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,mBACG,QAAQ,gBACX,GAAG,KAAK,KAAK,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EACnE,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,aAEhD,eAAM,SAAS,EAAC,uBAAuB,iBAAa,MAAM,YAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAQ,EACzF,CAAC,GAAG,EAAE;wCACL,MAAM,IAAI,GAAG,CACX,8BACE,eAAM,SAAS,EAAC,kBAAkB,EAAC,KAAK,EAAE,KAAK,YAAG,KAAK,GAAQ,EAC/D,gBAAM,SAAS,EAAC,iBAAiB,EAAC,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,aAC/D,IAAI,CAAC,CAAC,CAAC,CACN,eAAM,SAAS,EAAE,sBAAsB,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,YACxE,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,GACjB,CACR,CAAC,CAAC,CAAC,IAAI,EACP,MAAM,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,mBAAmB,YAAE,MAAM,GAAQ,CAAC,CAAC,CAAC,yBAAO,gBAAgB,CAAC,OAAO,CAAC,GAAQ,EACvG,MAAM,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,KAAK,gBAAa,aAAa,GAAI,CAAC,CAAC,CAAC,IAAI,EACzF,eAAM,QAAQ,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,YAC/D,2BAA2B,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,GAC5E,IACF,IACN,CACJ,CAAC;wCACF,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,QAAQ,EAAE,CAAC;4CAC5C,OAAO,eAAM,SAAS,EAAC,iBAAiB,YAAE,IAAI,GAAQ,CAAC;wCACzD,CAAC;wCACD,OAAO,CACL,KAAC,gBAAgB,IACf,SAAS,EAAC,sCAAsC,EAChD,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,eAAe,KAAK,EAAE,EACjC,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,YACnD,IAAI,GAAoB,CAC3B,CAAC;oCACJ,CAAC,CAAC,EAAE,EACH,WAAW,CAAC,CAAC,CAAC,CACb,gBAAM,SAAS,EAAC,wBAAwB,aAMrC,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,gBAAgB,IACf,SAAS,EAAC,+BAA+B,EACzC,IAAI,EAAE,QAAQ,EACd,KAAK,EAAC,sCAAQ,EACd,SAAS,EAAE,YAAY,KAAK,EAAE;gDAC9B,+BAA+B;gDAC/B,oBAAoB;gDACpB,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,6BAC/B,CACvB,CAAC,CAAC,CAAC,IAAI,EAGP,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;gDACrC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gDAChD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;gDAChC,MAAM,OAAO,GAAG,EAAE,GAAG,CAAC,IAAI,OAAO,GAAG,kBAAkB,CAAC;gDACvD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gDACnD,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,IAAI,OAAO,GAAG,iBAAiB,CAAC;gDACnE,MAAM,KAAK,GAAG,OAAO;oDACnB,CAAC,CAAC,kBAAkB;oDACpB,CAAC,CAAC,OAAO;wDACP,CAAC,CAAC,QAAQ,OAAO,EAAE;wDACnB,CAAC,CAAC,YAAY,CAAC;gDACnB,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,kCAAkC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAC3E,KAAK,EAAE,KAAK,gBACA,GAAG,KAAK,MAAM,KAAK,EAAE,EACjC,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,KAAK,CAAC,EAAE;wDACf,KAAK,CAAC,eAAe,EAAE,CAAC;wDACxB,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wDAClC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oDACjC,CAAC,YACD,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAU,CACnC,CAAC;4CACJ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EACV,CAAC;gDACA,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAU;gDACrC,oCAAoC;gDACpC,6BAA6B;gDAC7B,GAAG,CAAC,KAAK,CAAC,kBAAkB,KAAK,KAAK;oDACpC,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,WAAW,EAAE,IAAI,CAAU,CAAC;oDACpD,CAAC,CAAC,EAAE,CAAC;6CACR,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CACjC,iBAEE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,4BAA4B,OAAO,EAAE,EAChD,KAAK,EAAE,KAAK,gBACA,GAAG,KAAK,MAAM,KAAK,EAAE,EACjC,OAAO,EAAE,KAAK,CAAC,EAAE;oDACf,uDAAuD;oDACvD,8CAA8C;oDAC9C,KAAK,CAAC,eAAe,EAAE,CAAC;oDACxB,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gDAC1C,CAAC,YACD,IAAI,IAXC,OAAO,CAWE,CACjB,CAAC,IACG,CACR,CAAC,CAAC,CAAC,IAAI,KA9GH,IAAI,CAAC,GAAG,CA+GT,CACP,CAAC;wBACN,CAAC,CAAC,GACE,EACL,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,YAAG,SAAS,EAAC,kBAAkB,2DAAY,CAAC,CAAC,CAAC,IAAI,IACpE,IACA,CACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { type WorkbenchGroupDimension, type WorkbenchLayoutState } from './agent-workbench-model.js';
2
+ export interface WorkbenchStorage {
3
+ getItem(key: string): string | null;
4
+ setItem(key: string, value: string): void;
5
+ removeItem?(key: string): void;
6
+ }
7
+ export declare function workbenchLayoutStorageKey(sessionId: string): string;
8
+ export declare function loadWorkbenchLayout(sessionId: string, storage: WorkbenchStorage | null | undefined): WorkbenchLayoutState;
9
+ /** Persists layout primitives only. URLs, grants, cookies and frame state are never serialised. */
10
+ export declare function saveWorkbenchLayout(sessionId: string, layout: WorkbenchLayoutState, storage: WorkbenchStorage | null | undefined): boolean;
11
+ /**
12
+ * Rail geometry belongs to the window, not to a session. Keeping it per session
13
+ * made the sidebar jump to a different width on every selection change, so the
14
+ * width and the collapsed flag live in one global record instead.
15
+ */
16
+ export interface WorkbenchRailPrefs {
17
+ railWidth: number;
18
+ railCollapsed: boolean;
19
+ }
20
+ export declare function loadWorkbenchRailPrefs(storage: WorkbenchStorage | null | undefined): WorkbenchRailPrefs | null;
21
+ export declare function saveWorkbenchRailPrefs(storage: WorkbenchStorage | null | undefined, prefs: WorkbenchRailPrefs): boolean;
22
+ /**
23
+ * 未读账本,纯前端的一份小记录:
24
+ * - `seen[sessionId]` —— 你最后一次「点开」这个会话的时刻,未读的清零线。
25
+ * - `unread[sessionId]` —— 本地侦测到 bot 干完活(working→idle)的时刻。
26
+ * 两者都是 epoch 毫秒。`unread > seen` 即未读;页面关闭期间的动静另有活动时间兜底。
27
+ * 只存 id 和时间戳,不存标题、聊天内容或任何链接。
28
+ */
29
+ export interface WorkbenchSeenLedger {
30
+ seen: Record<string, number>;
31
+ unread: Record<string, number>;
32
+ }
33
+ export declare function emptyWorkbenchSeenLedger(): WorkbenchSeenLedger;
34
+ export declare function pruneWorkbenchSeenLedger(ledger: WorkbenchSeenLedger, max?: number): WorkbenchSeenLedger;
35
+ /** 坏数据(不是 JSON、不是对象、两张表都不成形)一律回 null,让调用方走首次基线。 */
36
+ export declare function loadWorkbenchSeenLedger(storage: WorkbenchStorage | null | undefined): WorkbenchSeenLedger | null;
37
+ export declare function saveWorkbenchSeenLedger(storage: WorkbenchStorage | null | undefined, ledger: WorkbenchSeenLedger): boolean;
38
+ /** 分组维度是全局偏好(不分会话)。白名单外的值一律当没存过。 */
39
+ export declare function loadWorkbenchGroupDimension(storage: WorkbenchStorage | null | undefined): WorkbenchGroupDimension | null;
40
+ export declare function saveWorkbenchGroupDimension(storage: WorkbenchStorage | null | undefined, dimension: WorkbenchGroupDimension): boolean;
41
+ /**
42
+ * 折叠起来的分组 key(`bot:Builder` 这种带维度前缀的稳定 key,全维度唯一,
43
+ * 所以一份平铺的数组就够,不需要按维度分表)。
44
+ * 坏 JSON 或压根不是数组 → null,让调用方走「全部展开」的默认;数组里混进
45
+ * 非字符串只剔掉那一项,不为一颗老鼠屎丢掉整份记忆。
46
+ */
47
+ export declare function loadWorkbenchCollapsedGroups(storage: WorkbenchStorage | null | undefined): string[] | null;
48
+ export declare function saveWorkbenchCollapsedGroups(storage: WorkbenchStorage | null | undefined, keys: Iterable<string>): boolean;
49
+ //# sourceMappingURL=agent-workbench-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-workbench-storage.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/agent-workbench-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,UAAU,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAcD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC3C,oBAAoB,CAQtB;AAED,mGAAmG;AACnG,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC3C,OAAO,CAQT;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC3C,kBAAkB,GAAG,IAAI,CAe3B;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,EAC5C,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAWT;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,wBAAgB,wBAAwB,IAAI,mBAAmB,CAE9D;AAsBD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,GAAG,SAA0B,GAC5B,mBAAmB,CAKrB;AAED,mDAAmD;AACnD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC3C,mBAAmB,GAAG,IAAI,CAe5B;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,EAC5C,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAQT;AAED,oCAAoC;AACpC,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC3C,uBAAuB,GAAG,IAAI,CAQhC;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,EAC5C,SAAS,EAAE,uBAAuB,GACjC,OAAO,CAQT;AASD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC3C,MAAM,EAAE,GAAG,IAAI,CAWjB;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,EAC5C,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GACrB,OAAO,CAQT"}