agentworkshop 0.7.8 → 0.7.11

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 (627) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/-6OnbLFb.js +1 -0
  3. package/.output/public/_nuxt/{BUxYN2mw.js → -nb2uqVg.js} +1 -1
  4. package/.output/public/_nuxt/6vYobj4F.js +1 -0
  5. package/.output/public/_nuxt/{BSXx2vqR.js → B-xskWta.js} +1 -1
  6. package/.output/public/_nuxt/B3Psw_sL.js +1 -0
  7. package/.output/public/_nuxt/B53Mp7lD.js +1 -0
  8. package/.output/public/_nuxt/B5CYgFAD.js +14 -0
  9. package/.output/public/_nuxt/{uBbDCfTz.js → B5S_UyaC.js} +1 -1
  10. package/.output/public/_nuxt/{DZk24ego.js → B7wL3pDk.js} +1 -1
  11. package/.output/public/_nuxt/B8WV7GzS.js +1 -0
  12. package/.output/public/_nuxt/{BYL0Rjqj.js → BBwMH_hG.js} +3 -3
  13. package/.output/public/_nuxt/BLzCac9K2.js +1 -0
  14. package/.output/public/_nuxt/BNXfwXpE.js +1 -0
  15. package/.output/public/_nuxt/{VnIWJ0ts.js → BN_PdN3J.js} +1 -1
  16. package/.output/public/_nuxt/BZGNTgTQ2.js +1 -0
  17. package/.output/public/_nuxt/BbZAzXjZ2.js +1 -0
  18. package/.output/public/_nuxt/Bc3PiGGr.js +1 -0
  19. package/.output/public/_nuxt/Bckshc9V.js +1 -0
  20. package/.output/public/_nuxt/BcrN7QEl2.js +1 -0
  21. package/.output/public/_nuxt/BgOhoDTI.js +1 -0
  22. package/.output/public/_nuxt/Bmpvki7M.js +1 -0
  23. package/.output/public/_nuxt/{BkfchkK62.js → Bp5luxkg2.js} +1 -1
  24. package/.output/public/_nuxt/BxPPAkGA.js +3 -0
  25. package/.output/public/_nuxt/{C8dxXc6K.js → BxtpDtzC.js} +1 -1
  26. package/.output/public/_nuxt/{pRQri7vQ2.js → BytVi9VX2.js} +1 -1
  27. package/.output/public/_nuxt/{D5KJ7_0V.js → C3tCneTM.js} +1 -1
  28. package/.output/public/_nuxt/{C_gFA2H_2.js → C4OAdbVK2.js} +1 -1
  29. package/.output/public/_nuxt/C6m-kenn.js +1 -0
  30. package/.output/public/_nuxt/{zwdqvGN_.js → CGx-mtWf.js} +1 -1
  31. package/.output/public/_nuxt/{DCXIGxzT.js → CKfhtOt7.js} +2 -2
  32. package/.output/public/_nuxt/{ChEKFMxj.js → CUXCQXjG.js} +1 -1
  33. package/.output/public/_nuxt/CfVAr2nf.js +1 -0
  34. package/.output/public/_nuxt/Cj6139IM.js +1 -0
  35. package/.output/public/_nuxt/{DM8DS9MA.js → Cor9siSf.js} +1 -1
  36. package/.output/public/_nuxt/{BsMpJf7S.js → D-Ca4BGY.js} +6 -6
  37. package/.output/public/_nuxt/{CsCpu2Zh.js → D1z7i2UP.js} +1 -1
  38. package/.output/public/_nuxt/D7jiode2.js +1 -0
  39. package/.output/public/_nuxt/D8CqF0yy.js +1 -0
  40. package/.output/public/_nuxt/{DYZBdSSg2.js → DA4lxCWC2.js} +1 -1
  41. package/.output/public/_nuxt/DEaY_uvR.js +1 -0
  42. package/.output/public/_nuxt/{DCEyMaN-.js → DNxVTfhe.js} +3 -3
  43. package/.output/public/_nuxt/DT-Wg8r1.js +1 -0
  44. package/.output/public/_nuxt/DTYBfjRY.js +1 -0
  45. package/.output/public/_nuxt/{fQUs58kX2.js → DWcEk1ur2.js} +1 -1
  46. package/.output/public/_nuxt/DXRZPxGs.js +1 -0
  47. package/.output/public/_nuxt/Dhqra7NB.js +1 -0
  48. package/.output/public/_nuxt/DlRO_q5L.js +1 -0
  49. package/.output/public/_nuxt/{C2iWjzEC2.js → DoLasgPj2.js} +1 -1
  50. package/.output/public/_nuxt/{DRq09ZmT.js → DpojD719.js} +1 -1
  51. package/.output/public/_nuxt/Ds8JbqGB.js +1 -0
  52. package/.output/public/_nuxt/{BCipft_k2.js → DsUUYP292.js} +1 -1
  53. package/.output/public/_nuxt/DtBu71ev.js +32 -0
  54. package/.output/public/_nuxt/Dy-mxvXY2.js +1 -0
  55. package/.output/public/_nuxt/DyisHHzD.js +18 -0
  56. package/.output/public/_nuxt/G0qIw7Gq2.js +1 -0
  57. package/.output/public/_nuxt/ORt9oDIy2.js +1 -0
  58. package/.output/public/_nuxt/QoCzfpo2.js +1 -0
  59. package/.output/public/_nuxt/RzXYI9FM.js +23 -0
  60. package/.output/public/_nuxt/TownView.BHLKAjEu.css +1 -0
  61. package/.output/public/_nuxt/VLI2Zy4t.js +5 -0
  62. package/.output/public/_nuxt/_id_.DIxEKj88.css +1 -0
  63. package/.output/public/_nuxt/_id_.DTvjd6VN.css +1 -0
  64. package/.output/public/_nuxt/{_wsId_.COUzMXpP.css → _wsId_.BFyCuUwS.css} +1 -1
  65. package/.output/public/_nuxt/agents.CEbox5-D.css +1 -0
  66. package/.output/public/_nuxt/{ZugRk0CM2.js → arUY5dyq2.js} +2 -2
  67. package/.output/public/_nuxt/builds/latest.json +1 -1
  68. package/.output/public/_nuxt/builds/meta/88479a5b-ce6a-400f-9737-1cc9f54b1fe5.json +1 -0
  69. package/.output/public/_nuxt/channel-templates.De5ZvrGz.css +1 -0
  70. package/.output/public/_nuxt/d_Sz9KGm.js +1 -0
  71. package/.output/public/_nuxt/daq.6IrhVVfy.css +1 -0
  72. package/.output/public/_nuxt/dcw.DcDjwvqv.css +1 -0
  73. package/.output/public/_nuxt/default.BbgdTDCk.css +1 -0
  74. package/.output/public/_nuxt/{CblLEiCZ.js → eHYnGew0.js} +3 -3
  75. package/.output/public/_nuxt/eUGyJdiT.js +1 -0
  76. package/.output/public/_nuxt/{entry.5qf6EqfN.css → entry.B03HBJGC.css} +1 -1
  77. package/.output/public/_nuxt/{Cyk3du4K2.js → kZV5TQvh2.js} +1 -1
  78. package/.output/public/_nuxt/kkEthL84.js +2 -0
  79. package/.output/public/_nuxt/logs.BO-BSyjm.css +1 -0
  80. package/.output/public/_nuxt/{D4qXvjuV.js → niDwBOZW.js} +2 -2
  81. package/.output/public/_nuxt/permissions.CwZo6t1V.css +1 -0
  82. package/.output/public/_nuxt/plugins.Clsky_kl.css +1 -0
  83. package/.output/public/_nuxt/rqZ-1SoP.js +2 -0
  84. package/.output/public/_nuxt/settings.BqMF2nfj.css +1 -0
  85. package/.output/public/_nuxt/tJuVvBSl.js +1 -0
  86. package/.output/public/_nuxt/teams.CUMnbQGf.css +1 -0
  87. package/.output/public/_nuxt/tokens.BPLe9ioQ.css +1 -0
  88. package/.output/public/_nuxt/{Bi6AiCuP.js → vJ4FPb-_.js} +1 -1
  89. package/.output/public/_nuxt/workshop.BIdoGfoC.css +1 -0
  90. package/.output/public/_nuxt/{B7aqqzkY.js → zVkqCZ78.js} +1 -1
  91. package/.output/server/chunks/_/LeftOutlined.mjs +1 -1
  92. package/.output/server/chunks/_/SearchOutlined.mjs +1 -1
  93. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  94. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  95. package/.output/server/chunks/_/nitro.mjs +1614 -1279
  96. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  97. package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
  98. package/.output/server/chunks/build/Col-biaNnEPf.mjs +1 -1
  99. package/.output/server/chunks/build/{OmpTerminalPanel-COphA1br.mjs → OmpTerminalPanel-Ban3yJZ4.mjs} +4 -5
  100. package/.output/server/chunks/build/OmpTerminalPanel-Ban3yJZ4.mjs.map +1 -0
  101. package/.output/server/chunks/build/{TownView-B5KifIaT.mjs → TownView-CunmEMzS.mjs} +184 -184
  102. package/.output/server/chunks/build/{TownView-B5KifIaT.mjs.map → TownView-CunmEMzS.mjs.map} +1 -1
  103. package/.output/server/chunks/build/{_id_-Ct4Jhvl1.mjs → _id_-CVnMdSeG.mjs} +38 -37
  104. package/.output/server/chunks/build/_id_-CVnMdSeG.mjs.map +1 -0
  105. package/.output/server/chunks/build/{_id_-C-ewLgfl.mjs → _id_-D265Wh_k.mjs} +127 -126
  106. package/.output/server/chunks/build/_id_-D265Wh_k.mjs.map +1 -0
  107. package/.output/server/chunks/build/{_wsId_-CanI_6Su.mjs → _wsId_-eNJmBp05.mjs} +137 -136
  108. package/.output/server/chunks/build/{_wsId_-CanI_6Su.mjs.map → _wsId_-eNJmBp05.mjs.map} +1 -1
  109. package/.output/server/chunks/build/{agents-DSOptxXA.mjs → agents-B10wmFri.mjs} +24 -23
  110. package/.output/server/chunks/build/agents-B10wmFri.mjs.map +1 -0
  111. package/.output/server/chunks/build/alert-qJnjyRcP.mjs +1 -1
  112. package/.output/server/chunks/build/api-error-dul30BYQ.mjs +47 -0
  113. package/.output/server/chunks/build/api-error-dul30BYQ.mjs.map +1 -0
  114. package/.output/server/chunks/build/button-DEcZFcqN.mjs +2 -2
  115. package/.output/server/chunks/build/{card-Dipvaykh.mjs → card-CCPQoKlh.mjs} +4 -4
  116. package/.output/server/chunks/build/{card-Dipvaykh.mjs.map → card-CCPQoKlh.mjs.map} +1 -1
  117. package/.output/server/chunks/build/{channel-templates-BK0KuPOd.mjs → channel-templates-CpWxVk5A.mjs} +29 -28
  118. package/.output/server/chunks/build/channel-templates-CpWxVk5A.mjs.map +1 -0
  119. package/.output/server/chunks/build/{checkbox-dzcpU_Cd.mjs → checkbox-Dv1kjaUZ.mjs} +3 -3
  120. package/.output/server/chunks/build/{checkbox-dzcpU_Cd.mjs.map → checkbox-Dv1kjaUZ.mjs.map} +1 -1
  121. package/.output/server/chunks/build/client-only-D5BzSQc6.mjs +1 -1
  122. package/.output/server/chunks/build/{daq-D9RA_uze.mjs → daq-DxaXk_8N.mjs} +114 -114
  123. package/.output/server/chunks/build/daq-DxaXk_8N.mjs.map +1 -0
  124. package/.output/server/chunks/build/{dcw-BTM5YU-B.mjs → dcw-DqjHrl5Z.mjs} +48 -47
  125. package/.output/server/chunks/build/dcw-DqjHrl5Z.mjs.map +1 -0
  126. package/.output/server/chunks/build/{default-BfWGTlbj.mjs → default-YcUHc1Ev.mjs} +34 -26
  127. package/.output/server/chunks/build/{default-BfWGTlbj.mjs.map → default-YcUHc1Ev.mjs.map} +1 -1
  128. package/.output/server/chunks/build/drawer-Cmh90erI.mjs +1 -1
  129. package/.output/server/chunks/build/dropdown-vhn1NPFs.mjs +2 -2
  130. package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs +554 -0
  131. package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs.map +1 -0
  132. package/.output/server/chunks/build/initDefaultProps-DIbWwP4R.mjs +1 -1
  133. package/.output/server/chunks/build/{input-sf_BT6o6.mjs → input-DxDqeyQW.mjs} +5 -553
  134. package/.output/server/chunks/build/input-DxDqeyQW.mjs.map +1 -0
  135. package/.output/server/chunks/build/{input-number-Bd55elNN.mjs → input-number-CZ3ZrCsy.mjs} +3 -3
  136. package/.output/server/chunks/build/{input-number-Bd55elNN.mjs.map → input-number-CZ3ZrCsy.mjs.map} +1 -1
  137. package/.output/server/chunks/build/{logs-Dyk0I2I9.mjs → logs-Co854R4y.mjs} +40 -40
  138. package/.output/server/chunks/build/{logs-Dyk0I2I9.mjs.map → logs-Co854R4y.mjs.map} +1 -1
  139. package/.output/server/chunks/build/menu-WCrlpYVh.mjs +2 -2
  140. package/.output/server/chunks/build/modal-yvUquPj5.mjs +2 -2
  141. package/.output/server/chunks/build/{monitor-MIOvsyLa.mjs → monitor-miqq9xHB.mjs} +11 -11
  142. package/.output/server/chunks/build/{monitor-MIOvsyLa.mjs.map → monitor-miqq9xHB.mjs.map} +1 -1
  143. package/.output/server/chunks/build/{pages-DR2bzczM.mjs → pages-DPC1Vp6w.mjs} +6 -5
  144. package/.output/server/chunks/build/pages-DPC1Vp6w.mjs.map +1 -0
  145. package/.output/server/chunks/build/permissions-Eu9e6hfZ.mjs +534 -0
  146. package/.output/server/chunks/build/permissions-Eu9e6hfZ.mjs.map +1 -0
  147. package/.output/server/chunks/build/{plugins-DnOBIWGg.mjs → plugins-D84mvK9G.mjs} +27 -25
  148. package/.output/server/chunks/build/plugins-D84mvK9G.mjs.map +1 -0
  149. package/.output/server/chunks/build/popconfirm-CRaHcz5O.mjs +2 -2
  150. package/.output/server/chunks/build/responsiveObserve-CS0UB6wQ.mjs +1 -1
  151. package/.output/server/chunks/build/{segmented-DPe9ZzLO.mjs → segmented-ChmQZwz6.mjs} +5 -4
  152. package/.output/server/chunks/build/{segmented-DPe9ZzLO.mjs.map → segmented-ChmQZwz6.mjs.map} +1 -1
  153. package/.output/server/chunks/build/select-D-CeE5vY.mjs +1 -1
  154. package/.output/server/chunks/build/{settings-DA8IkGLo.mjs → settings-BPBll_7K.mjs} +28 -26
  155. package/.output/server/chunks/build/settings-BPBll_7K.mjs.map +1 -0
  156. package/.output/server/chunks/build/space-CCBYAkXt.mjs +2 -2
  157. package/.output/server/chunks/build/spin-HVY81X_L.mjs +1 -1
  158. package/.output/server/chunks/build/switch-CelRXpcy.mjs +2 -2
  159. package/.output/server/chunks/build/{table-Cswq-l2r.mjs → table-BtksyDlQ.mjs} +5 -5
  160. package/.output/server/chunks/build/{table-Cswq-l2r.mjs.map → table-BtksyDlQ.mjs.map} +1 -1
  161. package/.output/server/chunks/build/{tabs-BM3tAh_J.mjs → tabs-DQv-_-R6.mjs} +3 -3
  162. package/.output/server/chunks/build/{tabs-BM3tAh_J.mjs.map → tabs-DQv-_-R6.mjs.map} +1 -1
  163. package/.output/server/chunks/build/{tag-NO9jEqKy.mjs → tag-A0tZ2Ouq.mjs} +4 -4
  164. package/.output/server/chunks/build/{tag-NO9jEqKy.mjs.map → tag-A0tZ2Ouq.mjs.map} +1 -1
  165. package/.output/server/chunks/build/{teams-BhSKBBBM.mjs → teams-CNflUtPh.mjs} +25 -24
  166. package/.output/server/chunks/build/teams-CNflUtPh.mjs.map +1 -0
  167. package/.output/server/chunks/build/{tokens-D_eyxmcv.mjs → tokens-CZpnEDVf.mjs} +27 -26
  168. package/.output/server/chunks/build/tokens-CZpnEDVf.mjs.map +1 -0
  169. package/.output/server/chunks/build/town-BUqRobze.mjs +1 -1
  170. package/.output/server/chunks/build/{town-DPtOPRRO.mjs → town-BbaR-8io.mjs} +10 -10
  171. package/.output/server/chunks/build/{town-DPtOPRRO.mjs.map → town-BbaR-8io.mjs.map} +1 -1
  172. package/.output/server/chunks/build/{useDaqStream-hwkhJHFU.mjs → useDaqStream-BkmyQT06.mjs} +36 -24
  173. package/.output/server/chunks/build/useDaqStream-BkmyQT06.mjs.map +1 -0
  174. package/.output/server/chunks/build/{useDcwStream-Bdew_yrr.mjs → useDcwStream-DWVoU96J.mjs} +63 -48
  175. package/.output/server/chunks/build/useDcwStream-DWVoU96J.mjs.map +1 -0
  176. package/.output/server/chunks/build/{useDeviceTwins-C6EBg9oN.mjs → useDeviceTwins-34WGk9aN.mjs} +4 -3
  177. package/.output/server/chunks/build/useDeviceTwins-34WGk9aN.mjs.map +1 -0
  178. package/.output/server/chunks/build/useLocalTime-9a4B-aHv.mjs +1 -1
  179. package/.output/server/chunks/build/{useOpsLog-DdCqKVVG.mjs → useOpsLog-C9zTzYof.mjs} +30 -17
  180. package/.output/server/chunks/build/useOpsLog-C9zTzYof.mjs.map +1 -0
  181. package/.output/server/chunks/build/useSiteConfig-DJe_KMVr.mjs +1 -1
  182. package/.output/server/chunks/build/useWorkshopApi-D2gq06N2.mjs +1 -1
  183. package/.output/server/chunks/build/{useWorkshopWs-B3j5wIAK.mjs → useWorkshopWs-CprkZEdq.mjs} +2 -3
  184. package/.output/server/chunks/build/useWorkshopWs-CprkZEdq.mjs.map +1 -0
  185. package/.output/server/chunks/build/{users-CmVvb1oq.mjs → users-D6RNylrW.mjs} +10 -10
  186. package/.output/server/chunks/build/{users-CmVvb1oq.mjs.map → users-D6RNylrW.mjs.map} +1 -1
  187. package/.output/server/chunks/build/{workshop-D5CQj2A8.mjs → workshop-Crsai2Y9.mjs} +27 -26
  188. package/.output/server/chunks/build/workshop-Crsai2Y9.mjs.map +1 -0
  189. package/.output/server/chunks/build/{workspaces-IfORCDJE.mjs → workspaces-BuydxM-3.mjs} +2 -3
  190. package/.output/server/chunks/build/workspaces-BuydxM-3.mjs.map +1 -0
  191. package/.output/server/chunks/routes/api/health.get.mjs +1 -1
  192. package/.output/server/chunks/routes/api/index.get.mjs +1 -1
  193. package/.output/server/chunks/routes/api/index.post.mjs +1 -1
  194. package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -1
  195. package/.output/server/chunks/routes/api/metrics.mjs +1 -1
  196. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +1 -1
  197. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +1 -1
  198. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +1 -1
  199. package/.output/server/chunks/routes/api/system/config.get.mjs +1 -1
  200. package/.output/server/chunks/routes/api/system/index.get.mjs +1 -1
  201. package/.output/server/chunks/routes/api/system/index.patch.mjs +1 -1
  202. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +1 -1
  203. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +1 -1
  204. package/.output/server/chunks/routes/api/system/monitor.get.mjs +1 -1
  205. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +1 -1
  206. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +1 -1
  207. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -1
  208. package/.output/server/chunks/routes/api/users/_id_.get.mjs +1 -1
  209. package/.output/server/chunks/routes/api/users/_id_.put.mjs +1 -1
  210. package/.output/server/chunks/routes/api/users/index.get.mjs +1 -1
  211. package/.output/server/chunks/routes/api/users/index.post.mjs +1 -1
  212. package/.output/server/chunks/routes/api/users/login.post.mjs +1 -1
  213. package/.output/server/chunks/routes/api/users/logout.post.mjs +1 -1
  214. package/.output/server/chunks/routes/api/users/me.get.mjs +1 -1
  215. package/.output/server/chunks/routes/api/users/register.post.mjs +1 -1
  216. package/.output/server/chunks/routes/api/users/setup-status.get.mjs +1 -1
  217. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +1 -1
  218. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +1 -1
  219. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +1 -1
  220. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +1 -1
  221. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +1 -1
  222. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +1 -1
  223. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +1 -1
  224. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +1 -1
  225. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +1 -1
  226. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +1 -1
  227. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +1 -1
  228. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +19 -8
  229. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
  230. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +1 -1
  231. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +2 -2
  232. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +2 -2
  233. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +1 -1
  234. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +1 -1
  235. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +1 -1
  236. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +1 -1
  237. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +1 -1
  238. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +1 -1
  239. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +1 -1
  240. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +1 -1
  241. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +2 -2
  242. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +1 -1
  243. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +2 -2
  244. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +1 -1
  245. package/.output/server/chunks/routes/api/workshop/caller.mjs +1 -1
  246. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +3 -3
  247. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +1 -1
  248. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +1 -1
  249. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +1 -1
  250. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +1 -1
  251. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +2 -2
  252. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +1 -1
  253. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +1 -1
  254. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +1 -1
  255. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +1 -1
  256. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +1 -1
  257. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +1 -1
  258. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +1 -1
  259. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +1 -1
  260. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +1 -1
  261. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +1 -1
  262. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +1 -1
  263. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +1 -1
  264. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +2 -2
  265. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +1 -1
  266. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +1 -1
  267. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +1 -1
  268. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -1
  269. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +1 -1
  270. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -1
  271. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +1 -1
  272. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +1 -1
  273. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +2 -2
  274. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +1 -1
  275. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +2 -2
  276. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +1 -1
  277. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +1 -1
  278. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +3 -3
  279. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +7 -6
  280. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
  281. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +5 -4
  282. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -1
  283. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +5 -4
  284. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -1
  285. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +5 -4
  286. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
  287. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +2 -2
  288. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +2 -2
  289. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +5 -4
  290. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
  291. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +5 -2
  292. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
  293. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +2 -2
  294. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +3 -2
  295. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
  296. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +2 -2
  297. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +2 -2
  298. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +2 -2
  299. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +2 -2
  300. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +2 -2
  301. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +2 -2
  302. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +7 -6
  303. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
  304. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +2 -2
  305. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +2 -2
  306. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +5 -4
  307. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
  308. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +4 -3
  309. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
  310. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -2
  311. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +2 -2
  312. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +2 -2
  313. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +2 -2
  314. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +4 -4
  315. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
  316. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +8 -4
  317. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
  318. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +4 -4
  319. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
  320. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +2 -2
  321. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +2 -2
  322. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +2 -2
  323. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +2 -2
  324. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +4 -4
  325. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
  326. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +2 -2
  327. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +7 -3
  328. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
  329. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +3 -2
  330. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
  331. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +3 -2
  332. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
  333. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +2 -2
  334. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +2 -2
  335. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +2 -2
  336. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +2 -2
  337. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +2 -2
  338. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +2 -2
  339. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +2 -2
  340. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +2 -2
  341. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +2 -2
  342. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +2 -2
  343. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +2 -2
  344. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -2
  345. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.patch.mjs +2 -2
  346. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +2 -2
  347. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +5 -3
  348. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
  349. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +2 -2
  350. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +2 -2
  351. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +2 -2
  352. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +2 -2
  353. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +1 -1
  354. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +1 -1
  355. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +2 -2
  356. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +2 -2
  357. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +1 -1
  358. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +2 -2
  359. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +2 -2
  360. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +2 -2
  361. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +2 -2
  362. package/.output/server/chunks/routes/api/workshop/index.get.mjs +1 -1
  363. package/.output/server/chunks/routes/api/workshop/index.post.mjs +1 -1
  364. package/.output/server/chunks/routes/api/workshop/index.put.mjs +41 -0
  365. package/.output/server/chunks/routes/api/workshop/index.put.mjs.map +1 -0
  366. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +4 -3
  367. package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
  368. package/.output/server/chunks/routes/api/workshop/index11.get.mjs +27 -0
  369. package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -0
  370. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +1 -1
  371. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -1
  372. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +1 -1
  373. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +4 -4
  374. package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
  375. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +5 -4
  376. package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
  377. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +2 -2
  378. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +18 -11
  379. package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
  380. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +2 -2
  381. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
  382. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +2 -2
  383. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -1
  384. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +1 -1
  385. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +24 -12
  386. package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
  387. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +1 -1
  388. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +12 -7
  389. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  390. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +1 -1
  391. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +1 -1
  392. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +1 -1
  393. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +4 -4
  394. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs.map +1 -1
  395. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +4 -4
  396. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs.map +1 -1
  397. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +1 -1
  398. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +1 -1
  399. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +2 -2
  400. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +2 -2
  401. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +1 -1
  402. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +1 -1
  403. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +1 -1
  404. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +1 -1
  405. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +1 -1
  406. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +1 -1
  407. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +1 -1
  408. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +1 -1
  409. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +2 -2
  410. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +1 -1
  411. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +1 -1
  412. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +1 -1
  413. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +1 -1
  414. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +1 -1
  415. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +1 -1
  416. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +1 -1
  417. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +1 -1
  418. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +3 -3
  419. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +1 -1
  420. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +1 -1
  421. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +1 -1
  422. package/.output/server/chunks/routes/renderer.mjs +3 -3
  423. package/.output/server/chunks/virtual/entry.mjs +303 -37
  424. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  425. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  426. package/.output/server/index.mjs +1 -1
  427. package/.output/server/package.json +1 -1
  428. package/README-zh.md +15 -0
  429. package/README.md +20 -0
  430. package/app/components/AppHeader.vue +1 -1
  431. package/app/components/AppSidebar.vue +7 -1
  432. package/app/components/workshop/A2aRpcDebugger.vue +1 -1
  433. package/app/components/workshop/AgentInspectorDrawer.vue +3 -3
  434. package/app/components/workshop/AgentLanesView.vue +6 -6
  435. package/app/components/workshop/AssetLibrary.vue +2 -2
  436. package/app/components/workshop/ChannelSessionList.vue +5 -5
  437. package/app/components/workshop/Composer.vue +1 -1
  438. package/app/components/workshop/DeviceTwinPanel.vue +2 -2
  439. package/app/components/workshop/TaskBoardView.vue +1 -1
  440. package/app/components/workshop/TaskInspectorDrawer.vue +2 -2
  441. package/app/components/workshop/town/TownView.vue +23 -23
  442. package/app/composables/workshop/apiClient.ts +103 -95
  443. package/app/composables/workshop/useCharacterAssets.ts +1 -1
  444. package/app/composables/workshop/useDaqStream.ts +36 -22
  445. package/app/composables/workshop/useDcwStream.ts +23 -6
  446. package/app/composables/workshop/useDeviceTwins.ts +1 -1
  447. package/app/composables/workshop/useOpsLog.ts +28 -15
  448. package/app/composables/workshop/useSceneLayouts.ts +1 -1
  449. package/app/composables/workshop/useWorkshopWs.ts +11 -2
  450. package/app/pages/daq/[id].vue +1 -1
  451. package/app/pages/daq/index.vue +8 -8
  452. package/app/pages/dcw/[id].vue +13 -13
  453. package/app/pages/dcw/index.vue +7 -7
  454. package/app/pages/logs/index.vue +1 -1
  455. package/app/pages/permissions/index.vue +327 -0
  456. package/app/pages/plugins/index.vue +14 -6
  457. package/app/pages/settings.vue +4 -2
  458. package/app/pages/tokens.vue +3 -3
  459. package/app/pages/workshop/agents.vue +2 -2
  460. package/app/pages/workshop/channel-templates.vue +3 -3
  461. package/app/pages/workshop/index.vue +4 -4
  462. package/app/pages/workshop/teams.vue +3 -3
  463. package/app/plugins/http.ts +18 -2
  464. package/app/plugins/session-restore.client.ts +7 -2
  465. package/app/stores/workshop/user.ts +14 -1
  466. package/app/utils/api-error.ts +75 -0
  467. package/cli/commands/plugin.mjs +2 -2
  468. package/config.yml +1 -1
  469. package/i18n/locales/en.ts +53 -3
  470. package/i18n/locales/zh-CN.ts +53 -3
  471. package/package.json +1 -1
  472. package/scripts/_dbg-acc-1-setup.mjs +57 -0
  473. package/scripts/_dbg-acc-2-diag.mjs +14 -0
  474. package/scripts/_dbg-acc-2-intervals.mjs +81 -0
  475. package/scripts/_dbg-acc-3-daq.mjs +48 -0
  476. package/scripts/_dbg-acc-4-team.mjs +92 -0
  477. package/scripts/_dbg-acc-5-visual.mjs +63 -0
  478. package/scripts/_dbg-acc-5b-ws-town.mjs +18 -0
  479. package/scripts/_dbg-acc-5c-town.mjs +12 -0
  480. package/scripts/_dbg-acc-6-i18n.mjs +19 -0
  481. package/scripts/_dbg-audit-neg-e2e.mjs +64 -0
  482. package/scripts/_dbg-final-features.mjs +155 -0
  483. package/scripts/_dbg-final-fixups.mjs +62 -0
  484. package/scripts/_dbg-final-visual.mjs +29 -0
  485. package/scripts/_dbg-interval-config.mjs +17 -6
  486. package/scripts/_dbg-perms-e2e.mjs +102 -0
  487. package/scripts/_dbg-perms-visual.mjs +36 -0
  488. package/scripts/_dbg-plugins-e2e.mjs +101 -0
  489. package/scripts/_dbg-protocol-matrix.mjs +16 -0
  490. package/scripts/_dbg-repo-setup-verify.mjs +31 -0
  491. package/scripts/_dbg-setup-e2e.mjs +1 -1
  492. package/sdk/api.mjs +117 -101
  493. package/sdk/context.mjs +240 -219
  494. package/sdk/hooks.mjs +105 -103
  495. package/sdk/index.d.mts +142 -135
  496. package/sdk/lifecycle.mjs +26 -25
  497. package/server/api/workshop/agent-tools/bindings/index.post.ts +40 -20
  498. package/server/api/workshop/daq/[id]/bind.post.ts +5 -2
  499. package/server/api/workshop/daq/[id]/frames/content.get.ts +4 -1
  500. package/server/api/workshop/daq/[id]/frames.get.ts +4 -1
  501. package/server/api/workshop/daq/[id]/samples.get.ts +4 -1
  502. package/server/api/workshop/daq/[id].patch.ts +3 -0
  503. package/server/api/workshop/daq/alarms/[id]/ack.post.ts +20 -15
  504. package/server/api/workshop/daq/controller.post.ts +2 -0
  505. package/server/api/workshop/daq/index.get.ts +5 -3
  506. package/server/api/workshop/daq/index.post.ts +2 -2
  507. package/server/api/workshop/dcw/[id]/bind.post.ts +20 -17
  508. package/server/api/workshop/dcw/[id]/test.post.ts +18 -15
  509. package/server/api/workshop/dcw/[id]/write.post.ts +3 -0
  510. package/server/api/workshop/dcw/index.get.ts +22 -9
  511. package/server/api/workshop/dcw/line/query.get.ts +38 -31
  512. package/server/api/workshop/dcw/lines/[id]/start.post.ts +3 -0
  513. package/server/api/workshop/dcw/lines/[id]/stop.post.ts +3 -0
  514. package/server/api/workshop/dcw/lines/index.get.ts +8 -2
  515. package/server/api/workshop/dcw/lines/index.post.ts +2 -2
  516. package/server/api/workshop/dcw/products/index.post.ts +16 -16
  517. package/server/api/workshop/dcw/runs/[id]/data.get.ts +20 -15
  518. package/server/api/workshop/dcw/runs/index.get.ts +13 -11
  519. package/server/api/workshop/permissions/index.get.ts +30 -0
  520. package/server/api/workshop/permissions/index.put.ts +29 -0
  521. package/server/api/workshop/plugins/[name]/disable.post.ts +5 -3
  522. package/server/api/workshop/plugins/[name]/enable.post.ts +5 -3
  523. package/server/api/workshop/ws.ts +18 -6
  524. package/server/data/daqs.json +90 -46
  525. package/server/data/dcw-lines.json +21 -0
  526. package/server/data/dcw-products.json +140 -0
  527. package/server/data/dcw-recipes.json +506 -0
  528. package/server/data/dcw-rollback.json +281 -6
  529. package/server/data/dcw-runs.json +1374 -1257
  530. package/server/data/dcw-writes.json +312 -0
  531. package/server/data/dcws.json +1165 -477
  532. package/server/data/line-runs.json +26 -6
  533. package/server/plugins/backup.ts +119 -116
  534. package/server/repositories/user.repository.ts +86 -6
  535. package/server/services/system-config.ts +5 -0
  536. package/server/services/user.service.ts +5 -3
  537. package/server/services/workshop/daq/bus/index.ts +5 -3
  538. package/server/services/workshop/daq/bus/inproc.adapter.ts +12 -3
  539. package/server/services/workshop/daq/bus/mqtt.adapter.ts +13 -0
  540. package/server/services/workshop/daq/bus/queue-port.ts +2 -0
  541. package/server/services/workshop/daq/daq-controller.ts +18 -1
  542. package/server/services/workshop/daq/storage/sqlite.adapter.ts +10 -5
  543. package/server/services/workshop/db/ops.repo.ts +6 -0
  544. package/server/services/workshop/dcw/dcw-controller.ts +10 -2
  545. package/server/services/workshop/permissions.ts +79 -0
  546. package/server/services/workshop/plugins/host.mjs +40 -2
  547. package/server/services/workshop/scene-events.ts +25 -1
  548. package/server/services/workshop/settings.ts +10 -0
  549. package/shared/config/single-instance.mjs +24 -0
  550. package/shared/daq-protocol.ts +2 -0
  551. package/.output/public/_nuxt/2LwEn9gX.js +0 -2
  552. package/.output/public/_nuxt/3612gD2V.js +0 -32
  553. package/.output/public/_nuxt/8eIQAVlb.js +0 -1
  554. package/.output/public/_nuxt/Ah9qOv1m.js +0 -1
  555. package/.output/public/_nuxt/B4Fia4FB.js +0 -3
  556. package/.output/public/_nuxt/BH0Z05CS.js +0 -1
  557. package/.output/public/_nuxt/BJ-fxrSw.js +0 -1
  558. package/.output/public/_nuxt/BJvGPTpC.js +0 -1
  559. package/.output/public/_nuxt/BVZjSVs2.js +0 -1
  560. package/.output/public/_nuxt/BVzDoF8t.js +0 -1
  561. package/.output/public/_nuxt/BjVLsC3M.js +0 -1
  562. package/.output/public/_nuxt/BnVoQ74r.js +0 -1
  563. package/.output/public/_nuxt/Bnp4vIAf.js +0 -1
  564. package/.output/public/_nuxt/Bt_HDizI.js +0 -5
  565. package/.output/public/_nuxt/Bu-P92Pe.js +0 -18
  566. package/.output/public/_nuxt/ButLXkjo.js +0 -2
  567. package/.output/public/_nuxt/By-LNp3k.js +0 -1
  568. package/.output/public/_nuxt/CGdPdJPP.js +0 -1
  569. package/.output/public/_nuxt/CRGlf1Gb.js +0 -1
  570. package/.output/public/_nuxt/CS8R0_J3.js +0 -1
  571. package/.output/public/_nuxt/CUxV8Bw_.js +0 -1
  572. package/.output/public/_nuxt/Cd15nPnG2.js +0 -1
  573. package/.output/public/_nuxt/CvbHIGQY2.js +0 -1
  574. package/.output/public/_nuxt/DNJSkm3Q.js +0 -1
  575. package/.output/public/_nuxt/DNzaswei.js +0 -1
  576. package/.output/public/_nuxt/DXK1U43I.js +0 -1
  577. package/.output/public/_nuxt/Dc46i75T.js +0 -14
  578. package/.output/public/_nuxt/Dk6pq9JB2.js +0 -1
  579. package/.output/public/_nuxt/Do88WZG2.js +0 -23
  580. package/.output/public/_nuxt/Du-eSpo2.js +0 -1
  581. package/.output/public/_nuxt/GP2wXyuY.js +0 -1
  582. package/.output/public/_nuxt/NIM0Wglj2.js +0 -1
  583. package/.output/public/_nuxt/PQLnLxYe.js +0 -1
  584. package/.output/public/_nuxt/R_Wv_Nd9.js +0 -1
  585. package/.output/public/_nuxt/TownView.Bt33bo1M.css +0 -1
  586. package/.output/public/_nuxt/_id_.BzKMZnLe.css +0 -1
  587. package/.output/public/_nuxt/_id_.CbpDAWRh.css +0 -1
  588. package/.output/public/_nuxt/agents.BlejnOOC.css +0 -1
  589. package/.output/public/_nuxt/builds/meta/e5bb1803-86d9-43b3-85be-dc787dc9a978.json +0 -1
  590. package/.output/public/_nuxt/channel-templates.lkqEYlWY.css +0 -1
  591. package/.output/public/_nuxt/daq.zZ8GR433.css +0 -1
  592. package/.output/public/_nuxt/dcw.C46dGiF_.css +0 -1
  593. package/.output/public/_nuxt/default.V3_hUJq1.css +0 -1
  594. package/.output/public/_nuxt/eHGLpQSg2.js +0 -1
  595. package/.output/public/_nuxt/logs.DaIsHWZE.css +0 -1
  596. package/.output/public/_nuxt/p7wSGMtc.js +0 -1
  597. package/.output/public/_nuxt/plugins.FTm0PcEe.css +0 -1
  598. package/.output/public/_nuxt/settings.DeRNNUcP.css +0 -1
  599. package/.output/public/_nuxt/tRBT-plo.js +0 -1
  600. package/.output/public/_nuxt/teams.B8JNbUZg.css +0 -1
  601. package/.output/public/_nuxt/tokens.CWOTXM-Z.css +0 -1
  602. package/.output/public/_nuxt/ubPfs9mQ.js +0 -1
  603. package/.output/public/_nuxt/workshop.3kAcLB_M.css +0 -1
  604. package/.output/server/chunks/build/OmpTerminalPanel-COphA1br.mjs.map +0 -1
  605. package/.output/server/chunks/build/_id_-C-ewLgfl.mjs.map +0 -1
  606. package/.output/server/chunks/build/_id_-Ct4Jhvl1.mjs.map +0 -1
  607. package/.output/server/chunks/build/agents-DSOptxXA.mjs.map +0 -1
  608. package/.output/server/chunks/build/channel-templates-BK0KuPOd.mjs.map +0 -1
  609. package/.output/server/chunks/build/daq-D9RA_uze.mjs.map +0 -1
  610. package/.output/server/chunks/build/dcw-BTM5YU-B.mjs.map +0 -1
  611. package/.output/server/chunks/build/input-sf_BT6o6.mjs.map +0 -1
  612. package/.output/server/chunks/build/pages-DR2bzczM.mjs.map +0 -1
  613. package/.output/server/chunks/build/plugins-DnOBIWGg.mjs.map +0 -1
  614. package/.output/server/chunks/build/settings-DA8IkGLo.mjs.map +0 -1
  615. package/.output/server/chunks/build/teams-BhSKBBBM.mjs.map +0 -1
  616. package/.output/server/chunks/build/tokens-D_eyxmcv.mjs.map +0 -1
  617. package/.output/server/chunks/build/useDaqStream-hwkhJHFU.mjs.map +0 -1
  618. package/.output/server/chunks/build/useDcwStream-Bdew_yrr.mjs.map +0 -1
  619. package/.output/server/chunks/build/useDeviceTwins-C6EBg9oN.mjs.map +0 -1
  620. package/.output/server/chunks/build/useOpsLog-DdCqKVVG.mjs.map +0 -1
  621. package/.output/server/chunks/build/useWorkshopWs-B3j5wIAK.mjs.map +0 -1
  622. package/.output/server/chunks/build/user-Dk-ytEUV.mjs +0 -140
  623. package/.output/server/chunks/build/user-Dk-ytEUV.mjs.map +0 -1
  624. package/.output/server/chunks/build/workshop-D5CQj2A8.mjs.map +0 -1
  625. package/.output/server/chunks/build/workspaces-IfORCDJE.mjs.map +0 -1
  626. /package/.output/public/_nuxt/{CNs_Ozdc2.js → CNs_Ozdc.js} +0 -0
  627. /package/.output/public/_nuxt/{Cno6kYiO2.js → Cno6kYiO.js} +0 -0
@@ -1 +1 @@
1
- .mh-ava[data-v-b043d434]{width:34px;height:34px;font-size:14px}.mh-body[data-v-b043d434]{flex-direction:column;gap:2px;min-width:0;display:flex}.mh-name[data-v-b043d434]{color:var(--ink);align-items:center;gap:6px;font-size:14px;font-weight:600;display:flex}.mh-dot[data-v-b043d434]{border-radius:50%;flex:none;width:7px;height:7px}.mh-role[data-v-b043d434]{color:var(--ink-faint);font-size:11.5px}.mh-task[data-v-b043d434]{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.mh-hint[data-v-b043d434]{color:var(--ink-fainter);margin-top:3px;font-size:10.5px}.fs[data-v-c35e0bdd]{flex-direction:column;gap:8px;display:flex}.addr[data-v-c35e0bdd]{font-family:var(--font-mono);background:color-mix(in srgb, currentColor 5%, transparent);border-radius:var(--radius-chip);padding:4px 8px;font-size:12px}.crumbs[data-v-c35e0bdd] a{color:var(--color-primary)}.manual[data-v-c35e0bdd]{max-width:100%}.list[data-v-c35e0bdd]{border:1px solid color-mix(in srgb, currentColor 10%, transparent);border-radius:var(--radius-chip);height:280px;overflow-y:auto}.row[data-v-c35e0bdd]{cursor:pointer;align-items:center;gap:8px;padding:4px 10px;font-size:12px;display:flex}.row[data-v-c35e0bdd]:hover{background:color-mix(in srgb, currentColor 8%, transparent)}.row.up[data-v-c35e0bdd]{opacity:.7}.icon[data-v-c35e0bdd]{flex:none}.name[data-v-c35e0bdd]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.empty[data-v-c35e0bdd]{opacity:.4;text-align:center;padding:24px;font-size:12px}.hint[data-v-c35e0bdd]{opacity:.55;font-size:11px}.channel-list[data-v-e3cf21d7]{flex-direction:column;min-height:100%;padding:12px 10px 8px;display:flex}.list-head[data-v-e3cf21d7]{justify-content:space-between;align-items:center;padding:0 8px 8px;display:flex}.title[data-v-e3cf21d7]{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);font-size:16px}.head-actions[data-v-e3cf21d7]{gap:2px;display:inline-flex}.head-op[data-v-e3cf21d7]{width:24px;height:24px;color:var(--ink-faint);cursor:pointer;border-radius:var(--radius-chip);transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:0;justify-content:center;align-items:center;font-size:14px;display:inline-flex}.head-op[data-v-e3cf21d7]:hover{color:var(--ink);background:var(--paper-deep)}.empty[data-v-e3cf21d7]{color:var(--ink-faint);padding:14px 10px;font-size:12px}.channel-item[data-v-e3cf21d7]{cursor:pointer;border-radius:var(--radius-panel-sm);transition:background var(--transition-fast);margin:1px 0;padding:7px 9px}.channel-item[data-v-e3cf21d7]:hover{background:var(--paper-deep)}.channel-item.active[data-v-e3cf21d7]{background:var(--paper-deep);box-shadow:inset 2px 0 0 var(--accent)}.row1[data-v-e3cf21d7]{color:var(--ink-soft);align-items:center;gap:7px;font-size:13px;display:flex}.channel-item.active .row1[data-v-e3cf21d7]{color:var(--ink);font-weight:500}.dot[data-v-e3cf21d7]{background:var(--tone-neutral-dot);opacity:.55;border-radius:50%;flex:none;width:7px;height:7px}.dot.live[data-v-e3cf21d7]{background:var(--tone-success-dot);opacity:1}.ch-name[data-v-e3cf21d7]{text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.op[data-v-e3cf21d7]{width:20px;height:20px;color:var(--ink-fainter);cursor:pointer;border-radius:var(--radius-chip);opacity:.55;transition:opacity var(--transition-fast), color var(--transition-fast), background var(--transition-fast);background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;font-size:13px;display:inline-flex}.channel-item.active .op[data-v-e3cf21d7],.channel-item:hover .op[data-v-e3cf21d7]{opacity:.9}.op[data-v-e3cf21d7]:hover{opacity:1;color:var(--ink);background:var(--paper-deep)}.op[data-v-e3cf21d7]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.row2[data-v-e3cf21d7]{color:var(--ink-faint);padding-left:14px;font-size:11px}.meta.syncing[data-v-e3cf21d7]{opacity:.6;font-style:italic}.row2.ws[data-v-e3cf21d7]{max-width:100%;font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;color:var(--ink-fainter);text-align:left;cursor:copy;border-radius:var(--radius-chip);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:0;align-items:center;gap:4px;padding:0 2px 0 14px;font-size:11px;display:flex;overflow:hidden}.row2.ws[data-v-e3cf21d7]:hover{color:var(--ink-soft);background:color-mix(in srgb, currentColor 6%, transparent)}.row2.ws[data-v-e3cf21d7]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.mount-template[data-v-e3cf21d7]{border-top:1px solid var(--line);margin-top:10px;padding:12px 6px 6px}.select[data-v-e3cf21d7]{width:100%}.tpl-hint[data-v-e3cf21d7]{color:var(--ink-fainter);padding:5px 2px 0;font-size:10.5px}.ws-hint[data-v-e3cf21d7]{color:var(--ink-faint);font-size:11px}.live-bar[data-v-865fed94]{background:var(--paper);border-top:1px solid var(--line);flex:none;align-items:center;gap:6px;min-height:50px;padding:7px 8px;display:flex;position:relative}.live-idle[data-v-865fed94]{align-items:center;gap:8px;padding-left:6px;display:flex}.idle-dot[data-v-865fed94]{background:var(--ink-fainter);border-radius:50%;flex:none;width:7px;height:7px}.idle-text[data-v-865fed94]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.live-main[data-v-865fed94]{font-family:var(--font-body);color:var(--ink-soft);text-align:left;cursor:pointer;border-radius:var(--radius-panel-sm);transition:background var(--transition-fast);background:0 0;border:0;flex:1;align-items:center;gap:9px;padding:4px 6px;display:flex}.live-main[data-v-865fed94]:hover{background:var(--paper-deep)}.live-ava[data-v-865fed94]{flex:none;line-height:0;position:relative}.live-avatar[data-v-865fed94]{width:22px;height:22px;font-size:10px}.live-avatar-sm[data-v-865fed94]{width:20px;height:20px;font-size:9.5px}.live-pip[data-v-865fed94]{background:var(--tone-live-dot);border:1.5px solid var(--paper);border-radius:50%;width:9px;height:9px;position:absolute;bottom:-2px;right:-2px}.live-pip[data-v-865fed94]:after{content:"";background-color:inherit;border-radius:50%;animation:1.9s cubic-bezier(0,0,.2,1) infinite lb-ping-865fed94;position:absolute;inset:0}.live-text[data-v-865fed94]{flex-direction:column;gap:1px;min-width:0;display:flex}.live-name[data-v-865fed94]{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.live-detail[data-v-865fed94]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.live-more[data-v-865fed94]{color:var(--ink-faint);cursor:pointer;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-pill);transition:background var(--transition-fast), color var(--transition-fast);flex:none;padding:2px 8px;font-size:11px;font-weight:600}.live-more[data-v-865fed94]:hover{color:var(--ink);background:var(--paper-deep)}.live-backdrop[data-v-865fed94]{z-index:40;position:fixed;inset:0}.live-pop[data-v-865fed94]{z-index:41;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-panel-sm);max-height:280px;box-shadow:var(--shadow-float);padding:6px;position:absolute;bottom:calc(100% + 6px);left:8px;right:8px;overflow:auto}.live-pop-title[data-v-865fed94]{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);padding:4px 8px 6px;font-size:10px;font-weight:600}.live-pop-item[data-v-865fed94]{width:100%;font-family:var(--font-body);color:var(--ink-soft);text-align:left;cursor:pointer;border-radius:var(--radius-panel-sm);background:0 0;border:0;align-items:center;gap:9px;padding:7px 8px;display:flex}.live-pop-item[data-v-865fed94]:hover{background:var(--paper-deep)}.live-pop-text[data-v-865fed94]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.live-pop-name[data-v-865fed94]{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.live-pop-detail[data-v-865fed94]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.pop-dot[data-v-865fed94]{background:var(--tone-live-dot);border-radius:50%;flex:none;width:8px;height:8px}@keyframes lb-ping-865fed94{0%{opacity:.55;transform:scale(1)}70%,to{opacity:0;transform:scale(2.4)}}@media (prefers-reduced-motion:reduce){.live-pip[data-v-865fed94]:after{opacity:0;animation:none}}.pane-splitter[data-v-4f787ef8]{z-index:5;cursor:col-resize;touch-action:none;outline:none;flex:0 0 9px;position:relative}.pane-splitter[data-v-4f787ef8]:before{content:"";width:1px;transition:background var(--transition-fast);background:0 0;position:absolute;top:0;bottom:0;left:4px}.pane-splitter.divider[data-v-4f787ef8]:before{background:var(--line)}.pane-splitter.dragging[data-v-4f787ef8]:before,.pane-splitter[data-v-4f787ef8]:focus-visible:before,.pane-splitter[data-v-4f787ef8]:hover:before{background:var(--ink)}.pane-splitter.bare[data-v-4f787ef8]:before{left:2px}.pane-splitter.bare.dragging[data-v-4f787ef8]:before,.pane-splitter.bare[data-v-4f787ef8]:hover:before{background:color-mix(in srgb, var(--ink) 35%, transparent)}.grip[data-v-4f787ef8]{background:var(--ink);border-radius:var(--radius-pill);opacity:0;width:2px;height:18px;transition:opacity var(--transition-fast);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.pane-splitter.dragging .grip[data-v-4f787ef8],.pane-splitter:focus-visible .grip[data-v-4f787ef8],.pane-splitter:hover .grip[data-v-4f787ef8]{opacity:.45}.pane-splitter.dragging .grip[data-v-4f787ef8]{opacity:.85}.stream-bubble[data-v-89d25e3d]{padding:0;position:relative}.stream-text[data-v-89d25e3d]{color:var(--ink);word-break:break-word;overflow-wrap:anywhere;background:var(--bubble-bg);border:1px solid var(--bubble-line);border-radius:var(--radius-bubble);box-shadow:var(--bubble-shadow);transition:border-color var(--transition-fast);margin:2px 2px 8px 0;padding:9px 13px 10px;font-size:13px;line-height:1.7}.stream-text[data-v-89d25e3d]:hover{border-color:var(--line-strong)}.prose[data-v-89d25e3d] p{margin:0 0 7px}.prose[data-v-89d25e3d] p:last-child{margin-bottom:0}.prose[data-v-89d25e3d] h3,.prose[data-v-89d25e3d] h4,.prose[data-v-89d25e3d] h5{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);margin:12px 0 5px;font-size:15px;font-weight:600;line-height:1.35}.prose[data-v-89d25e3d] h3:first-child,.prose[data-v-89d25e3d] h4:first-child,.prose[data-v-89d25e3d] h5:first-child{margin-top:3px}.prose[data-v-89d25e3d] ul{margin:3px 0 8px;padding-left:20px;list-style:outside}.prose[data-v-89d25e3d] ul :deep(ul){margin:2px 0 4px;list-style:circle}.prose[data-v-89d25e3d] li{margin:2px 0;padding-left:1px}.prose[data-v-89d25e3d] li::marker{color:var(--ink-fainter)}.prose[data-v-89d25e3d] code{font-family:var(--font-mono);background:var(--paper-deep);border-radius:var(--radius-chip);padding:1px 5px;font-size:11.5px}.prose[data-v-89d25e3d] blockquote{color:var(--ink-soft);border-left:3px solid var(--line-strong);border-radius:0 var(--radius-chip) var(--radius-chip) 0;background:color-mix(in srgb, var(--paper) 55%, transparent);margin:7px 0;padding:4px 4px 4px 12px}.prose[data-v-89d25e3d] b{font-weight:650}.prose[data-v-89d25e3d] a{color:var(--tone-info-dot);text-underline-offset:2px;text-decoration:underline}.prose[data-v-89d25e3d] .code-block{background:var(--paper-deep);border:1px solid var(--line);border-radius:var(--radius-chip);margin:7px 0;overflow:hidden}.prose[data-v-89d25e3d] .code-head{border-bottom:1px solid var(--divider-hair);justify-content:space-between;align-items:center;padding:4px 6px 4px 10px;display:flex}.prose[data-v-89d25e3d] .code-lang{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-size:9.5px}.prose[data-v-89d25e3d] .code-copy{font-family:var(--font-mono);color:var(--ink-soft);cursor:pointer;background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast);padding:1px 8px;font-size:10px}.prose[data-v-89d25e3d] .code-copy:hover{color:var(--ink);border-color:var(--line-strong)}.prose[data-v-89d25e3d] .code-block pre{margin:0;padding:8px 10px;overflow-x:auto}.prose[data-v-89d25e3d] .code-block code{background:0 0;border-radius:0;padding:0;font-size:11px;line-height:1.55}.cursor[data-v-89d25e3d]{color:var(--accent);animation:.9s step-end infinite blink-89d25e3d;display:inline-block}@keyframes blink-89d25e3d{50%{opacity:0}}.stream-pending[data-v-89d25e3d]{align-items:center;gap:4px;padding:6px 0;display:flex}.pending-dot[data-v-89d25e3d]{background:var(--ink-faint);border-radius:50%;width:4px;height:4px;animation:1.1s ease-in-out infinite pulse-89d25e3d}.pending-dot[data-v-89d25e3d]:nth-child(2){animation-delay:.18s}.pending-dot[data-v-89d25e3d]:nth-child(3){animation-delay:.36s}@keyframes pulse-89d25e3d{0%,to{opacity:.25}50%{opacity:1}}.stream-covered[data-v-89d25e3d]{opacity:.5;color:var(--ink-soft);align-items:center;gap:6px;padding:1px 0;font-size:11px;display:flex}.tool-cluster[data-v-0bef4195]{padding:1px 0 5px 2px;position:relative}.tool-line[data-v-0bef4195]{min-width:0;font-family:var(--font-body);align-items:baseline;gap:8px;padding:1.5px 0;font-size:12px;line-height:1.6;display:flex}.tool-time[data-v-0bef4195]{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-fainter);flex:0 0 34px;font-size:9.5px}.tool-node[data-v-0bef4195]{border:1.5px solid var(--line-strong);background:var(--paper-raised);border-radius:2.5px;flex:0 0 7px;align-self:center;width:7px;height:7px}.tool-icon[data-v-0bef4195]{opacity:.75;flex:none;font-size:13px;line-height:1.5}.tool-name[data-v-0bef4195]{font-family:var(--font-mono);flex:none;font-size:11.5px;font-weight:500}.tool-args[data-v-0bef4195]{min-width:0;max-width:min(52ch,100%);font-family:var(--font-mono);color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;opacity:.85;font-size:11px;overflow:hidden}.tool-line.host .tool-node[data-v-0bef4195]{border-color:var(--ink);background:color-mix(in srgb, var(--ink) 14%, var(--paper-raised))}.tool-line.host .tool-icon[data-v-0bef4195],.tool-line.host .tool-name[data-v-0bef4195]{color:var(--ink);font-weight:600}.tool-line.host .tool-icon[data-v-0bef4195]{opacity:1}.tool-kind[data-v-0bef4195]{letter-spacing:.1em;color:var(--ink-faint);border:1px solid var(--line);border-radius:var(--radius-pill);background:0 0;flex:none;align-self:center;padding:0 5px;font-size:8.5px;line-height:14px}.tool-line:hover .tool-args[data-v-0bef4195]{opacity:1}.more-btn[data-v-0bef4195]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-pill);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin-top:5px;margin-left:49px;padding:1px 10px;font-size:10px}.more-btn[data-v-0bef4195]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.status-cluster[data-v-1da3d4ae]{padding:1px 0 4px 2px}.st-toggle[data-v-1da3d4ae]{width:100%;min-width:0;font-family:var(--font-mono);text-align:left;cursor:pointer;border-radius:var(--radius-chip);background:0 0;border:0;align-items:baseline;gap:7px;padding:2px 4px 2px 0;font-size:10.5px;display:flex}.st-toggle[data-v-1da3d4ae]:hover{background:color-mix(in srgb, var(--ink) 4%, transparent)}.chev[data-v-1da3d4ae]{color:var(--ink-faint);flex:none;font-size:9px;line-height:15px;transition:transform .12s}.chev.open[data-v-1da3d4ae]{transform:rotate(90deg)}.st-label[data-v-1da3d4ae]{letter-spacing:.06em;color:var(--ink-faint);flex:none}.st-count[data-v-1da3d4ae]{color:var(--ink-soft);background:color-mix(in srgb, var(--ink) 8%, transparent);border-radius:var(--radius-chip);flex:none;align-self:center;padding:0 4px;font-size:9px;line-height:13px}.st-preview[data-v-1da3d4ae]{min-width:0;color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;opacity:.75;font-style:italic;overflow:hidden}.st-detail[data-v-1da3d4ae]{background:color-mix(in srgb, var(--ink) 3.5%, transparent);border-left:2px solid color-mix(in srgb, var(--ink) 14%, transparent);border-radius:0 3px 3px 0;max-height:320px;margin:2px 0 2px 16px;padding:4px 8px;overflow-y:auto}.st-line[data-v-1da3d4ae]{align-items:baseline;gap:6px;display:flex}.st-line+.st-line[data-v-1da3d4ae]{margin-top:4px}.st-mark[data-v-1da3d4ae]{color:var(--ink-faint);flex:none}.st-text[data-v-1da3d4ae]{min-width:0;font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;margin:0;font-size:10.5px;line-height:1.5}.life-cluster[data-v-effa619b]{font-family:var(--font-mono);opacity:.88;align-items:center;gap:8px;padding:2px 0 3px 2px;font-size:11px;display:flex}.life-dot[data-v-effa619b]{background:var(--line-strong);border-radius:50%;width:7px;height:7px}.life-dot[data-state=busy][data-v-effa619b]{background:var(--accent-cobalt)}.life-dot[data-state=idle][data-v-effa619b]{background:var(--accent-moss)}.life-row[data-v-effa619b]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.life-state[data-v-effa619b]{text-transform:uppercase;letter-spacing:.1em;font-size:9.5px;font-weight:500}.life-task[data-v-effa619b]{text-overflow:ellipsis;white-space:nowrap;max-width:280px;overflow:hidden}.life-meta[data-v-effa619b]{opacity:.6;font-size:10px}.life-count[data-v-effa619b]{opacity:.45;font-size:9.5px}.route-cluster[data-v-9422b1df]{padding:1px 0 5px}.chat-row[data-v-9422b1df]{background:var(--bubble-bg);border:1px solid var(--bubble-line);border-radius:var(--radius-bubble);box-shadow:var(--bubble-shadow);transition:border-color var(--transition-fast), background var(--transition-fast);margin-bottom:6px;padding:7px 12px 8px}.chat-row[data-v-9422b1df]:hover{border-color:var(--line-strong)}.chat-row[data-v-9422b1df]:last-of-type{margin-bottom:0}.chat-meta[data-v-9422b1df]{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:4px;display:flex}.who-pill[data-v-9422b1df]{font-family:var(--font-body);color:var(--mention-ink);cursor:pointer;background:var(--mention);border-radius:var(--radius-pill);transition:background var(--transition-fast);border:0;align-items:center;gap:5px;padding:1px 8px 1px 3px;font-size:11.5px;font-weight:600;display:inline-flex}.who-pill[data-v-9422b1df]:hover{background:color-mix(in srgb, var(--mention) 70%, var(--g-peach))}.who-ava[data-v-9422b1df]{width:18px;height:18px;font-size:9px}.to-arrow[data-v-9422b1df]{color:var(--ink-fainter);font-size:11px}.who-broadcast[data-v-9422b1df]{color:var(--ink-faint);font-size:11px}.human-chip[data-v-9422b1df]{color:var(--ink-soft);background:var(--paper-deep);border-radius:var(--radius-chip);align-items:center;gap:5px;padding:0 7px;font-size:11.5px;font-weight:600;display:inline-flex}.route-badge[data-v-9422b1df]{color:var(--ink-soft);background:color-mix(in srgb, var(--ink) 4.5%, transparent);border:1px solid var(--line);border-radius:var(--radius-chip);align-items:center;gap:4px;padding:0 6px;font-size:9.5px;display:inline-flex}.route-badge[data-tone=assign][data-v-9422b1df],.route-badge[data-tone=immediate][data-v-9422b1df],.route-badge[data-tone=notice][data-v-9422b1df],.route-badge[data-tone=peer][data-v-9422b1df]{color:var(--ink-soft);border-color:var(--line);background:0 0}.route-badge[data-tone=assign][data-v-9422b1df]{color:var(--ink-soft)}.route-badge.receipt[data-v-9422b1df]{color:var(--tone-warning-dot);background:color-mix(in srgb, var(--tone-warning-dot) 12%, transparent);border-color:#0000}.route-badge.reply-link[data-v-9422b1df]{color:var(--ink-fainter);background:color-mix(in srgb, var(--ink) 6%, transparent);font-size:9.5px}.chat-time[data-v-9422b1df]{color:var(--ink-fainter);margin-left:auto;font-size:9.5px}.chat-body[data-v-9422b1df]{color:var(--ink);white-space:normal;word-break:break-word;padding:1px 0 0 2px;font-size:13px;line-height:1.7}.prose[data-v-9422b1df] p{margin:0 0 6px}.prose[data-v-9422b1df] p:last-child{margin-bottom:0}.prose[data-v-9422b1df] code{font-family:var(--font-mono);background:var(--paper-deep);border-radius:var(--radius-chip);padding:.5px 4px;font-size:11px}.prose[data-v-9422b1df] pre{max-width:100%;font-family:var(--font-mono);background:var(--paper-deep);border-radius:var(--radius-chip);margin:4px 0;padding:6px 9px;font-size:11px;overflow-x:auto}.prose[data-v-9422b1df] b{font-weight:600}.more-btn[data-v-9422b1df]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin-top:4px;padding:1px 10px;font-size:10px}.more-btn[data-v-9422b1df]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.task-cluster[data-v-cdaa9d8e]{flex-wrap:wrap;align-items:center;gap:7px;padding:3px 0 4px 2px;font-size:12px;display:flex}.state-chip[data-v-cdaa9d8e]{font-family:var(--font-body);color:var(--ink);border-radius:var(--radius-pill);align-items:center;gap:5px;padding:1px 7px;font-size:10px;display:inline-flex}.state-chip .state-code[data-v-cdaa9d8e]{font-family:var(--font-mono);letter-spacing:.05em;opacity:.55;font-size:8.5px}.state-dot[data-v-cdaa9d8e]{border-radius:50%;width:5px;height:5px}.task-tag[data-v-cdaa9d8e]{margin:0!important}.chain-arrow[data-v-cdaa9d8e]{opacity:.4;font-size:10px}.task-title[data-v-cdaa9d8e]{font-weight:600}.task-assignee[data-v-cdaa9d8e]{font-family:var(--font-mono);opacity:.6;font-size:10.5px}.progress[data-v-cdaa9d8e]{flex:0 0 180px;margin:0!important}.artifact-card[data-v-1699711f]{background:color-mix(in srgb, currentColor 4%, transparent);border-left:2px solid var(--ink-faint);border-radius:var(--radius-chip);margin:2px 0;padding:4px 8px}.artifact-card.deliverable[data-v-1699711f]{border-left-color:var(--tone-warning-dot)}.artifact-head[data-v-1699711f]{opacity:.85;align-items:center;gap:6px;font-size:11px;display:flex}.name[data-v-1699711f]{font-weight:600}.op[data-v-1699711f]{opacity:.7;font-size:11px}.artifact-body[data-v-1699711f]{white-space:pre-wrap;word-break:break-word;margin:4px 0 0;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:12px}.artifact-body.json[data-v-1699711f]{color:var(--tone-info-dot)}.artifact-cluster[data-v-407440f2]{padding:2px 0 6px 2px}.dup-note[data-v-407440f2]{font-family:var(--font-mono);color:var(--ink-faint);align-items:center;gap:6px;font-size:10px;display:flex}.mini-btn[data-v-407440f2]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;padding:1px 10px;font-size:10px}.mini-btn[data-v-407440f2]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.artifact-cluster[data-v-407440f2]>.artifact-card{margin-top:4px}.member-cluster[data-v-0647f285]{padding:1px 0 5px 2px}.member-line[data-v-0647f285]{font-family:var(--font-mono);color:var(--ink-soft);align-items:center;gap:7px;font-size:10.5px;line-height:20px;display:flex}.line-text[data-v-0647f285]{overflow-wrap:anywhere;word-break:break-word}.more-btn[data-v-0647f285]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin-top:4px;padding:1px 10px;font-size:10px}.more-btn[data-v-0647f285]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.memory-cluster[data-v-9ba9f01b]{padding:1px 0 5px 2px}.memory-line[data-v-9ba9f01b]{font-family:var(--font-mono);align-items:center;gap:7px;font-size:10.5px;line-height:20px;display:flex}.mem-scope[data-v-9ba9f01b]{letter-spacing:.08em;color:var(--ink-soft);background:color-mix(in srgb, var(--ink) 5%, transparent);border:1px solid var(--line);border-radius:var(--radius-chip);padding:0 5px;font-size:8.5px}.mem-title[data-v-9ba9f01b]{overflow-wrap:anywhere;word-break:break-word}.more-btn[data-v-9ba9f01b]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin-top:4px;padding:1px 10px;font-size:10px}.more-btn[data-v-9ba9f01b]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.error-cluster[data-v-22804f20]{padding:2px 0 5px 2px}.error-line[data-v-22804f20]{font-family:var(--font-mono);color:var(--tone-danger-dot);align-items:center;gap:7px;padding:1px 6px;font-size:10.5px;line-height:20px;display:flex}.error-line[data-v-22804f20]:first-child{background:var(--tone-danger-bg);border-radius:var(--radius-chip)}.error-code[data-v-22804f20]{background:color-mix(in srgb, var(--tone-danger-dot) 14%, transparent);border-radius:var(--radius-chip);padding:0 5px;font-size:9px}.error-text[data-v-22804f20]{overflow-wrap:anywhere;word-break:break-word}.more-btn[data-v-22804f20]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin-top:4px;padding:1px 10px;font-size:10px}.more-btn[data-v-22804f20]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.other-cluster[data-v-5f033e18]{padding:1px 0 5px 2px}.other-row[data-v-5f033e18]{font-family:var(--font-mono);opacity:.65;align-items:center;gap:7px;font-size:10.5px;line-height:20px;display:flex}.more-btn[data-v-5f033e18]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin-top:4px;padding:1px 10px;font-size:10px}.more-btn[data-v-5f033e18]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.event-block[data-v-49551fd4]{-moz-column-gap:11px;grid-template-columns:30px minmax(0,1fr);column-gap:11px;margin:0;padding:5px 10px 4px 12px;transition:background .15s;display:grid;position:relative}.event-block[data-v-49551fd4]:hover{background:var(--hover-tint);border-radius:4px}.event-block.enter[data-v-49551fd4]{animation:block-in-49551fd4 .32s var(--ease-out-quart) backwards;animation-delay:var(--d,0s)}@media (prefers-reduced-motion:reduce){.event-block.enter[data-v-49551fd4]{animation:none}}.event-block.turn-start[data-v-49551fd4]{border-top:1px solid var(--line);margin-top:13px;padding-top:9px}.event-block.turn-start.compact[data-v-49551fd4]{border-top:0;margin-top:0;padding-top:5px}.event-block[data-kind=stream][data-v-49551fd4]:not([data-settled=true]){background:color-mix(in srgb, var(--ink) 2.5%, transparent);border-radius:4px}.event-block[data-tier=attention][data-v-49551fd4]{box-shadow:inset 2px 0 0 color-mix(in srgb, var(--tone-warning-dot) 55%, transparent)}.event-block[data-kind=error][data-v-49551fd4]{box-shadow:inset 2px 0 0 color-mix(in srgb, var(--tone-danger-dot) 70%, transparent)}.event-block[data-covered=true][data-v-49551fd4]{opacity:.72}.event-block[data-tier=terminal] .agent-name[data-v-49551fd4]{font-weight:700}.event-block[data-tier=silent][data-v-49551fd4]{opacity:.88}.event-block[data-tier=silent][data-v-49551fd4]:hover{opacity:1}.tier-attention[data-v-49551fd4]{color:var(--tone-warning-dot);background:color-mix(in srgb, var(--tone-warning-dot) 13%, transparent);border-radius:var(--radius-chip);align-items:center;gap:3px;padding:0 5px;font-size:9px;display:inline-flex}@keyframes block-in-49551fd4{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.agent-avatar[data-v-49551fd4]{width:30px;min-width:30px;height:30px;font-family:var(--font-body);color:var(--ink);background:var(--paper-deep);border:0;border-radius:50%;justify-content:center;align-items:center;margin-top:0;padding:0;font-size:12px;font-weight:600;display:flex;position:relative}.agent-avatar.clickable[data-v-49551fd4]{cursor:pointer;transition:transform var(--transition-fast) var(--im-spring), box-shadow var(--transition-fast)}.agent-avatar.clickable[data-v-49551fd4]:hover{box-shadow:0 0 0 var(--radius-chip) transparent, 0 3px 10px #0c0a0929;transform:scale(1.06)}.agent-avatar.is-agent[data-v-49551fd4]{color:var(--on-av);background:var(--av,var(--av-fallback))}.agent-avatar.is-human[data-v-49551fd4]{color:var(--ink-soft);background:var(--paper-deep);box-shadow:inset 0 0 0 1px var(--line-strong)}.agent-avatar .system-icon[data-v-49551fd4]{font-size:15px;line-height:1}.av-status[data-v-49551fd4]{background:var(--ink-fainter);border:1.5px solid var(--paper-raised);border-radius:50%;width:8px;height:8px;position:absolute;bottom:-2px;right:-2px}.av-status.busy[data-v-49551fd4]{background:var(--tone-live-dot);animation:1.9s ease-in-out infinite av-breathe-49551fd4}.av-status.stopped[data-v-49551fd4]{background:var(--tone-danger-dot)}@keyframes av-breathe-49551fd4{0%,to{opacity:.55}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.av-status.busy[data-v-49551fd4]{opacity:.9;animation:none}}.event-block.compact .agent-avatar[data-v-49551fd4]{visibility:hidden;height:0;margin-top:0}.event-block.compact[data-v-49551fd4]{padding-top:2px;padding-bottom:2px}.event-block.compact+.event-block.compact[data-v-49551fd4]{margin-top:-2px}.eb-main[data-v-49551fd4]{min-width:0}.block-head[data-v-49551fd4]{min-height:20px;font-family:var(--font-body);align-items:center;gap:8px;padding-bottom:1px;display:flex;position:relative}.agent-name[data-v-49551fd4]{max-width:220px;color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.role-label[data-v-49551fd4]{font-family:var(--font-body);color:var(--ink-fainter);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;overflow:hidden}.kind-chip[data-v-49551fd4]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-fainter);align-items:center;padding:0 2px;font-size:9px;line-height:14px;display:inline-flex}.head-right[data-v-49551fd4]{font-variant-numeric:tabular-nums;color:var(--ink-faint);flex:auto;justify-content:flex-end;align-items:center;gap:6px;font-size:9.5px;display:flex}.folded[data-v-49551fd4]{color:var(--ink-faint);background:color-mix(in srgb, var(--ink) 7%, transparent);border-radius:var(--radius-chip);padding:0 4px}.merged[data-v-49551fd4]{background:color-mix(in srgb, var(--ink) 7%, transparent);border-radius:var(--radius-chip);padding:0 4px}.time[data-v-49551fd4]{width:60px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;flex:none;font-size:9.5px}.ghost-time[data-v-49551fd4]{z-index:2;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-fainter);pointer-events:none;opacity:0;background:var(--paper-raised);border-radius:var(--radius-chip);transition:opacity var(--transition-fast);padding:0 5px;font-size:9px;position:absolute;top:3px;right:10px}.event-block.compact:hover .ghost-time[data-v-49551fd4]{opacity:1}.running-chip[data-v-49551fd4]{color:var(--ink-faint);align-items:center;gap:4px;display:inline-flex}.running-chip .running-dot[data-v-49551fd4]{background:var(--tone-live-dot);border-radius:50%;width:6px;height:6px;animation:1.9s ease-in-out infinite av-breathe-49551fd4}@media (prefers-reduced-motion:reduce){.running-chip .running-dot[data-v-49551fd4]{opacity:.9;animation:none}}.eb-toolbar[data-v-49551fd4]{z-index:5;opacity:0;pointer-events:none;background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-chip);transition:opacity var(--transition-fast);gap:2px;padding:1px;display:inline-flex;position:absolute;top:-4px;right:56px}.event-block:hover .eb-toolbar[data-v-49551fd4]{opacity:1;pointer-events:auto}.eb-tool[data-v-49551fd4]{width:22px;height:22px;color:var(--ink-faint);cursor:pointer;border-radius:var(--radius-chip);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:0;justify-content:center;align-items:center;padding:0;font-size:12px;display:inline-flex}.eb-tool[data-v-49551fd4]:hover{color:var(--ink);background:var(--paper-deep)}.eb-body[data-v-49551fd4]{margin-top:1px;padding-left:2px!important}.transcript[data-v-a25318ff]{background:var(--paper);flex-direction:column;height:100%;min-height:0;display:flex}.filter-bar[data-v-a25318ff]{background:var(--paper-raised);border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:6px 16px;display:flex}.count[data-v-a25318ff]{font-size:11px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-fainter)}.sync-chip[data-v-a25318ff]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-faint);background:var(--paper-deep);border-radius:var(--radius-pill);align-items:center;gap:5px;margin-left:auto;padding:1px 8px;font-size:9.5px;display:inline-flex}.sync-chip[data-state=syncing][data-v-a25318ff]{color:var(--tone-warning-dot)}.sync-chip[data-state=open] .sync-dot[data-v-a25318ff]{color:var(--tone-success-dot);font-size:7px}.sync-pulse[data-v-a25318ff]{background:var(--tone-warning-dot);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite sync-breath-a25318ff}@keyframes sync-breath-a25318ff{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.sync-pulse[data-v-a25318ff]{opacity:.8;animation:none}}.jump-latest[data-v-a25318ff]{z-index:5;float:right;font-family:var(--font-body);color:var(--on-accent);cursor:pointer;background:var(--accent);border-radius:var(--radius-pill);box-shadow:var(--shadow-float);transition:opacity var(--transition-fast), transform var(--transition-fast);border:none;align-items:center;gap:5px;margin-right:14px;padding:5px 12px;font-size:11px;display:inline-flex;position:sticky;bottom:12px}.jump-latest[data-v-a25318ff]:hover{opacity:.92}.jump-latest[data-v-a25318ff]:active{transform:translateY(1px)}.scroller[data-v-a25318ff]{overscroll-behavior:contain;flex:auto;min-height:0;overflow-y:auto}.column[data-v-a25318ff]{max-width:900px;margin:0 auto;padding:10px 4px 24px;animation:.28s ease-out column-in-a25318ff}@keyframes column-in-a25318ff{0%{opacity:0}to{opacity:1}}.earlier-btn[data-v-a25318ff]{font-family:var(--font-body);color:var(--ink-faint);cursor:pointer;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-pill);transition:background var(--transition-fast), color var(--transition-fast);margin:0 auto 10px;padding:4px 14px;font-size:11px;display:block}.earlier-btn[data-v-a25318ff]:hover:not(:disabled){color:var(--ink);background:var(--paper-deep)}.earlier-btn[data-v-a25318ff]:disabled{opacity:.5;cursor:default}.earlier-done[data-v-a25318ff]{font-family:var(--font-mono);text-align:center;color:var(--ink-fainter);margin-bottom:8px;font-size:9.5px}.empty[data-v-a25318ff]{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:72px 16px;display:flex}.empty-icon[data-v-a25318ff]{color:var(--ink-fainter);font-size:28px}.empty-title[data-v-a25318ff]{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink-soft);margin:0;font-size:22px;font-weight:400}.empty-hint[data-v-a25318ff]{color:var(--ink-faint);margin:0;font-size:12px}.skel-stack[data-v-a25318ff]{flex-direction:column;gap:18px;padding:26px 6px;display:flex}.skel-row[data-v-a25318ff]{animation:.4s cubic-bezier(.22,.68,.36,1) backwards aw-rise;animation-delay:var(--d,0s);grid-template-columns:26px minmax(0,1fr);gap:10px;display:grid}.skel-ava[data-v-a25318ff]{border-radius:50%;width:26px;height:26px}.skel-lines[data-v-a25318ff]{flex-direction:column;gap:6px;display:flex}.skel-line[data-v-a25318ff]{height:11px}.skel-line.name[data-v-a25318ff]{width:120px;height:13px}.skel-line.w70[data-v-a25318ff]{width:70%}.skel-line.w45[data-v-a25318ff]{width:45%}@media (prefers-reduced-motion:reduce){.skel-row[data-v-a25318ff]{animation:none}}.lane-empty[data-v-b04638b2]{color:var(--ink-fainter);text-align:center;flex-direction:column;align-items:center;gap:6px;padding:28px 8px;font-size:11.5px;display:flex}.lane-empty-icon[data-v-b04638b2]{color:var(--ink-fainter);font-size:16px;animation:1.2s linear infinite lane-sync-spin-b04638b2}@keyframes lane-sync-spin-b04638b2{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.lane-empty-icon[data-v-b04638b2]{animation:none}}.lane-earlier[data-v-b04638b2]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin:2px auto 8px;padding:2px 12px;font-size:10px;display:block}.lane-earlier[data-v-b04638b2]:hover:not(:disabled){color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.lane-earlier[data-v-b04638b2]:disabled{cursor:default;opacity:.55}.lanes-wrap[data-v-ca0bbe05]{background:var(--paper);flex-direction:column;flex:auto;width:100%;min-width:0;max-width:100%;height:100%;min-height:0;display:flex;overflow:hidden}.toolbar[data-v-ca0bbe05]{background:var(--paper-raised);border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:8px 14px 6px;display:flex}.team-summary[data-v-ca0bbe05]{flex:auto;align-items:baseline;gap:7px;min-width:0;display:flex}.ts-label[data-v-ca0bbe05]{letter-spacing:.08em;color:var(--ink-faint);flex:none;font-size:11px}.ts-count[data-v-ca0bbe05]{color:var(--ink);flex:none;font-size:15px;font-weight:700;line-height:1}.ts-unit[data-v-ca0bbe05]{color:var(--ink-faint);flex:none;font-size:11px}.ts-detail[data-v-ca0bbe05]{min-width:0;font-size:11px;font-family:var(--font-mono);color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;overflow:hidden}.lanes[data-v-ca0bbe05]{overscroll-behavior:contain;flex:auto;gap:10px;width:100%;min-width:0;min-height:0;padding:8px 12px 12px;display:flex;overflow:auto hidden}.lane[data-v-ca0bbe05]{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-panel);min-width:240px;box-shadow:var(--shadow-card);flex-direction:column;flex:none;display:flex;container-type:inline-size}.lane-head[data-v-ca0bbe05]{border-bottom:1px solid var(--line);flex-direction:column;flex:none;gap:8px;padding:10px 12px 9px;font-size:13px;display:flex}.head-top[data-v-ca0bbe05]{align-items:center;gap:7px;min-width:0;display:flex}.lane-ava[data-v-ca0bbe05]{width:26px;height:26px;color:var(--on-av);border-radius:var(--radius-panel-sm);flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:inline-flex;position:relative}.lane-ava>span[data-v-ca0bbe05]:first-child{background:var(--av,var(--av-fallback));border-radius:var(--radius-panel-sm);justify-content:center;align-items:center;width:100%;height:100%;display:inline-flex}.lane-state[data-v-ca0bbe05]{background:var(--ink-fainter);border:1.5px solid var(--paper-raised);border-radius:50%;width:8px;height:8px;position:absolute;bottom:-2px;right:-2px}.lane-state.busy[data-v-ca0bbe05]{background:var(--tone-live-dot);animation:1.9s ease-in-out infinite lane-breathe-ca0bbe05}.lane-state.stopped[data-v-ca0bbe05]{background:var(--tone-danger-dot)}@keyframes lane-breathe-ca0bbe05{0%,to{opacity:.55}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.lane-state.busy[data-v-ca0bbe05]{opacity:.9;animation:none}}.lane-name[data-v-ca0bbe05]{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-size:13.5px;font-weight:700;overflow:hidden}.lane-chip[data-v-ca0bbe05]{letter-spacing:.04em;color:var(--ink-faint);border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:0 0;flex:none;padding:0 6px;font-size:9.5px;line-height:15px}.lane-role[data-v-ca0bbe05]{letter-spacing:.05em;text-transform:uppercase;border-radius:var(--radius-pill);flex:none;padding:0 7px;font-size:9.5px;line-height:16px}.lane-role.lead[data-v-ca0bbe05]{color:var(--on-accent);background:var(--accent)}.lane-role.worker[data-v-ca0bbe05]{color:var(--ink-soft);border:1px solid var(--line-strong)}.term-badge[data-v-ca0bbe05]{font-family:var(--font-mono);color:var(--ink-faint);border:1px solid var(--line-strong);border-radius:var(--radius-pill);flex:none;align-items:center;gap:4px;padding:0 6px;font-size:9px;line-height:15px;display:inline-flex}.term-badge .term-dot[data-v-ca0bbe05]{border-radius:50%;width:5px;height:5px}.head-sub[data-v-ca0bbe05]{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.lane-meta[data-v-ca0bbe05]{min-width:0;font-size:10.5px;font-family:var(--font-mono);color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.lane-progress[data-v-ca0bbe05]{color:var(--tone-info-dot);background:color-mix(in srgb, var(--tone-info-dot) 10%, transparent);border-radius:var(--radius-pill);align-items:center;margin-left:4px;padding:0 5px;display:inline-flex}.lane-actions[data-v-ca0bbe05]{background:var(--hover-tint);border-radius:var(--radius-chip);flex:none;align-items:center;gap:5px;padding:2px;display:flex}.lane-actions .ant-btn[data-v-ca0bbe05]{opacity:.78;font-size:12px;transition:opacity .15s}.lane-head:hover .lane-actions .ant-btn[data-v-ca0bbe05]{opacity:1}.actions-divider[data-v-ca0bbe05]{background:color-mix(in srgb, currentColor 16%, transparent);flex:none;width:1px;height:14px;margin-inline:2px}.lane-term[data-v-ca0bbe05]{padding-inline:7px}.lane-edit[data-v-ca0bbe05],.lane-remove[data-v-ca0bbe05],.lane-stop[data-v-ca0bbe05]{padding-inline:5px}.term-label[data-v-ca0bbe05]{margin-inline-start:5px;display:none}@container (width>=380px){.term-label[data-v-ca0bbe05]{display:inline}}@container (width<=300px){.lane-chip[data-v-ca0bbe05]{display:none}}@container (width<=260px){.term-badge[data-v-ca0bbe05]{display:none}}.lane-body[data-v-ca0bbe05]{overscroll-behavior:contain;background:var(--paper);flex:auto;min-height:0;padding:8px 4px 16px;overflow-y:auto}.empty[data-v-ca0bbe05]{color:var(--ink-faint);text-align:center;flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:6px;padding:32px 12px;font-size:12px;display:flex}.empty-icon[data-v-ca0bbe05]{color:var(--ink-fainter);font-size:22px}.empty-title[data-v-ca0bbe05]{color:var(--ink-soft);margin:0;font-size:13px}.empty-hint[data-v-ca0bbe05]{color:var(--ink-fainter);margin:0;font-size:11px}.member-form[data-v-ca0bbe05]{margin-top:8px}.mode-switch[data-v-ca0bbe05]{margin-top:4px}.mode-hint[data-v-ca0bbe05]{opacity:.6;background:color-mix(in srgb, currentColor 5%, transparent);border-radius:var(--radius-chip);padding:6px 8px;font-size:11px}.board-shell[data-v-2cc09da6]{flex-direction:column;flex:auto;min-height:0;animation:.2s cubic-bezier(.22,1,.36,1) view-in-2cc09da6;display:flex}@keyframes view-in-2cc09da6{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.board-shell[data-v-2cc09da6]{animation:none}}.toolbar[data-v-2cc09da6]{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:12px;padding:10px 16px;display:flex}.count[data-v-2cc09da6]{color:var(--ink-fainter);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.board[data-v-2cc09da6]{overscroll-behavior:contain;flex:auto;align-items:stretch;gap:12px;min-height:0;padding:12px 14px 14px;display:flex;overflow-x:auto}.task-col[data-v-2cc09da6]{background:var(--paper-deep);border-radius:var(--radius-panel);flex-direction:column;flex:0 0 300px;min-width:280px;min-height:0;padding:2px 8px 8px;display:flex}.task-col.drop-over[data-v-2cc09da6]{background:var(--tone-info-bg);outline:2px dashed color-mix(in srgb, var(--tone-info-dot) 65%, transparent);outline-offset:-2px}.task-col.no-drop[data-v-2cc09da6]{opacity:.6}.task-col.drag-origin[data-v-2cc09da6]{opacity:.85}.sec[data-v-2cc09da6]{align-items:center;gap:7px;padding:10px 6px 8px;display:flex}.sec-title[data-v-2cc09da6]{letter-spacing:.06em;color:var(--ink-soft);font-size:12px;font-weight:600}.sec-cnt[data-v-2cc09da6]{font-variant-numeric:tabular-nums;color:var(--ink-fainter);font-size:11px}.st-dot[data-v-2cc09da6]{border-radius:50%;flex:none;width:8px;height:8px}.task-col-body[data-v-2cc09da6]{overscroll-behavior:contain;flex:auto;min-height:0;padding:0 2px;overflow-y:auto}.card.task[data-v-2cc09da6]{cursor:pointer;background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-panel);margin-bottom:8px;padding:10px 12px;transition:transform .12s,border-color .12s,opacity .12s;position:relative}.card.task[data-v-2cc09da6]:hover{border-color:var(--line-strong);transform:translateY(-1px)}.card.task.dragging[data-v-2cc09da6]{opacity:.45;cursor:grabbing}.tk-chan[data-v-2cc09da6]{color:var(--ink-faint);gap:8px;font-size:11.5px;display:flex}.tk-num[data-v-2cc09da6]{font-variant-numeric:tabular-nums;color:var(--ink-fainter)}.tk-title[data-v-2cc09da6]{color:var(--ink);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:3px 0 6px;font-size:13px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.tk-route[data-v-2cc09da6]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px;font-size:11px;overflow:hidden}.tk-foot[data-v-2cc09da6]{justify-content:flex-end;display:flex}.col-empty[data-v-2cc09da6]{color:var(--ink-fainter);text-align:center;border:1.5px dashed var(--line-strong);border-radius:var(--radius-panel);padding:14px 8px;font-size:11.5px}.st-pill-btn[data-v-2cc09da6]{cursor:pointer;background:0 0;border:0;padding:0}.st-pill[data-v-2cc09da6]{border:1px solid var(--line-strong);border-radius:var(--radius-pill);align-items:center;gap:4px;padding:1px 9px;font-size:11px;font-weight:600;display:inline-flex}.st-pill-btn:hover .st-pill[data-v-2cc09da6]{background:var(--hover-tint)}.task-list[data-v-2cc09da6]{overscroll-behavior:contain;flex:auto;min-height:0;padding:10px 16px 18px;overflow-y:auto}.list-sec[data-v-2cc09da6]{padding:8px 2px 6px}.list-row[data-v-2cc09da6]{cursor:pointer;background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-panel);align-items:center;gap:12px;margin-bottom:4px;padding:9px 12px;transition:border-color .12s;display:flex}.list-row[data-v-2cc09da6]:hover{border-color:var(--line-strong)}.list-row .grow[data-v-2cc09da6]{min-width:0;color:var(--ink);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13.5px;overflow:hidden}.lnum[data-v-2cc09da6]{color:var(--ink-faint);font-size:12px}.meta[data-v-2cc09da6]{font-family:var(--font-mono);color:var(--ink-fainter);font-size:11px}.menu-backdrop[data-v-2cc09da6]{z-index:60;position:fixed;inset:0}.st-menu[data-v-2cc09da6]{z-index:61;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-panel-sm);min-width:128px;box-shadow:var(--shadow-float);padding:4px;position:fixed}.st-menu button[data-v-2cc09da6]{width:100%;font-family:var(--font-body);color:var(--ink-soft);text-align:left;cursor:pointer;border-radius:var(--radius-chip);background:0 0;border:0;align-items:center;gap:7px;padding:6px 9px;font-size:12.5px;display:flex}.st-menu button[data-v-2cc09da6]:hover{background:var(--paper-deep);color:var(--ink)}.st-menu button.danger[data-v-2cc09da6]{color:var(--tone-danger-dot)}.split[data-v-23486e32]{overscroll-behavior:contain;gap:8px;height:100%;min-height:0;padding:8px;display:flex;overflow-x:auto}.col[data-v-23486e32]{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-panel-sm);flex-direction:column;flex:none;min-width:300px;display:flex}.col-head[data-v-23486e32]{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:8px 10px;display:flex}.col-name[data-v-23486e32]{font-size:13px;font-weight:700}.col-meta[data-v-23486e32]{font-size:11px;font-family:var(--font-mono);color:var(--ink-faint);text-align:right;flex:auto}.col-body[data-v-23486e32]{overscroll-behavior:contain;min-height:0;font-family:var(--font-mono);flex:auto;font-size:11px;overflow-y:auto}.mini-event[data-v-23486e32]{gap:6px;padding:2px 8px;line-height:1.6;display:flex}.mini-event.clickable[data-v-23486e32]{cursor:pointer}.mini-event.clickable[data-v-23486e32]:hover{background:var(--hover-tint)}.me-time[data-v-23486e32]{color:var(--ink-fainter);flex:none}.me-agent[data-v-23486e32]{color:var(--ink-faint);flex:none}.me-text[data-v-23486e32]{text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.col-empty[data-v-23486e32],.empty[data-v-23486e32]{color:var(--ink-faint);text-align:center;padding:24px 8px;font-size:12px}.memory-panel[data-v-25b1b7cc]{font-size:12px}.toolbar[data-v-25b1b7cc]{align-items:center;gap:6px;margin-bottom:6px;display:flex}.agent-select[data-v-25b1b7cc]{flex:auto;min-width:90px}.token-state[data-v-25b1b7cc]{font-family:var(--font-mono);border-radius:var(--radius-chip);background:color-mix(in srgb, currentColor 8%, transparent);flex:none;padding:0 5px;font-size:10px}.token-state[data-ok=true][data-v-25b1b7cc]{color:var(--tone-success-dot)}.token-state[data-ok=false][data-v-25b1b7cc]{color:var(--tone-warning-dot)}.token[data-v-25b1b7cc]{margin-bottom:6px}.search-bar[data-v-25b1b7cc]{gap:6px;margin-bottom:6px;display:flex}.scope[data-v-25b1b7cc]{width:90px}.search-results[data-v-25b1b7cc]{margin-bottom:8px}.hit[data-v-25b1b7cc]{font-family:var(--font-mono);align-items:center;gap:6px;padding:2px 4px;font-size:11px;display:flex}.src[data-v-25b1b7cc]{color:var(--tone-info-dot);background:var(--tone-info-bg);border-radius:var(--radius-chip);padding:0 4px}.src[data-source=shared][data-v-25b1b7cc]{color:var(--tone-retry-dot);background:var(--tone-retry-bg)}.score[data-v-25b1b7cc]{opacity:.5}.hit-title[data-v-25b1b7cc]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.list-head[data-v-25b1b7cc]{opacity:.7;justify-content:space-between;align-items:center;padding:4px 0;font-weight:600;display:flex}.row[data-v-25b1b7cc]{border-bottom:1px dashed color-mix(in srgb, currentColor 10%, transparent);padding:4px 0}.row-head[data-v-25b1b7cc]{align-items:center;gap:6px;display:flex}.kind[data-v-25b1b7cc]{margin-inline-end:0;font-size:10px}.row-importance[data-v-25b1b7cc]{font-family:var(--font-mono);opacity:.5;font-size:10px}.row-title[data-v-25b1b7cc]{font-size:12px;font-weight:600}.row-content[data-v-25b1b7cc]{opacity:.65;word-break:break-all;font-size:11px}.empty[data-v-25b1b7cc]{opacity:.4;padding:8px 0}.stats[data-v-23e4d795]{flex-direction:column;gap:10px;font-size:12px;display:flex}.kpis[data-v-23e4d795]{gap:8px;display:flex}.kpi[data-v-23e4d795]{text-align:center;border:1px solid color-mix(in srgb, currentColor 10%, transparent);border-radius:var(--radius-panel-sm);flex:1 1 0;padding:8px}.kpi-num[data-v-23e4d795]{font-size:16px;font-weight:700;font-family:var(--font-mono)}.kpi-label[data-v-23e4d795]{opacity:.55;margin-top:2px;font-size:11px}.chart[data-v-23e4d795]{border:1px solid color-mix(in srgb, currentColor 10%, transparent);border-radius:var(--radius-panel-sm);height:140px}.app-chart[data-v-23e4d795]{height:100%}.types-title[data-v-23e4d795]{opacity:.7;padding:4px 0;font-weight:600}.type-row[data-v-23e4d795]{font-family:var(--font-mono);align-items:center;gap:6px;padding:1px 0;font-size:11px;display:flex}.t-name[data-v-23e4d795]{text-overflow:ellipsis;white-space:nowrap;flex:0 0 150px;overflow:hidden}.t-bar-wrap[data-v-23e4d795]{background:color-mix(in srgb, currentColor 8%, transparent);border-radius:var(--radius-pill);flex:auto;height:8px;overflow:hidden}.t-bar[data-v-23e4d795]{background:var(--color-primary);height:100%}.t-n[data-v-23e4d795]{text-align:right;opacity:.6;flex:0 0 36px}.empty[data-v-23e4d795]{opacity:.4;padding:8px 0}.inspector[data-v-ea1bee22]{height:100%;padding:0 8px;overflow-y:auto}.tabs[data-v-ea1bee22]{height:100%}.tabs[data-v-ea1bee22] .ant-tabs-content-holder{overflow-y:auto}.tabs[data-v-ea1bee22] .ant-tabs-nav{margin-bottom:8px}.member[data-v-ea1bee22]{cursor:pointer;align-items:center;gap:9px;margin:3px 0;padding:8px 10px;display:flex}.member[data-v-ea1bee22]:hover{border-color:var(--line-strong)}.dot[data-v-ea1bee22]{border-radius:50%;flex:none;width:8px;height:8px}.member-info[data-v-ea1bee22]{flex:auto;min-width:0}.member-name[data-v-ea1bee22]{align-items:center;gap:7px;font-size:13px;display:flex}.name-text[data-v-ea1bee22]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.role-chip[data-v-ea1bee22]{letter-spacing:.05em;text-transform:uppercase;border-radius:var(--radius-pill);flex:none;padding:0 7px;font-size:9.5px;line-height:16px}.role-chip.lead[data-v-ea1bee22]{color:var(--on-accent);background:var(--accent)}.role-chip.worker[data-v-ea1bee22]{color:var(--ink-soft);border:1px solid var(--line-strong)}.member-meta[data-v-ea1bee22]{font-size:11px;font-family:var(--font-mono);color:var(--ink-faint)}.prog[data-v-ea1bee22]{color:var(--tone-info-dot);background:color-mix(in srgb, var(--tone-info-dot) 10%, transparent);border-radius:var(--radius-pill);padding:0 5px}.member-cap[data-v-ea1bee22]{font-family:var(--font-mono);letter-spacing:.02em;color:var(--ink-faint);margin-top:2px;font-size:10px}.ct[data-v-ea1bee22]{opacity:.8}.task[data-v-ea1bee22]{cursor:pointer;margin:3px 0;padding:8px 10px}.task[data-v-ea1bee22]:hover{border-color:var(--line-strong)}.task-head[data-v-ea1bee22]{align-items:center;gap:6px;display:flex}.state-chip[data-v-ea1bee22]{letter-spacing:.04em;color:var(--ink-soft);border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:0 0;flex:none;padding:1px 7px;font-size:9.5px;line-height:15px}.task-title[data-v-ea1bee22]{text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:13px;overflow:hidden}.task-meta[data-v-ea1bee22]{font-size:11px;font-family:var(--font-mono);color:var(--ink-faint)}.empty[data-v-ea1bee22]{color:var(--ink-faint);padding:16px 8px;font-size:12px}.composer[data-v-764aae70]{background:var(--paper-raised);border-top:1px solid var(--line);padding:10px 16px 12px;position:relative;overflow:hidden}.composer-box[data-v-764aae70]{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-panel);max-width:900px;box-shadow:inset 0 1px 0 #ffffff4d, var(--bubble-shadow);transition:border-color var(--transition-slow), box-shadow var(--transition-slow);margin:0 auto;padding:8px 12px;position:relative}.composer-box[data-v-764aae70]:focus-within{border-color:var(--ink-fainter);box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--ink) 18%, transparent),0 6px 22px #0c0a090d}.composer-status-chip[data-v-764aae70]{width:max-content;max-width:100%;color:var(--ink-faint);background:var(--paper-deep);border-radius:var(--radius-chip);align-items:center;gap:6px;margin:0 0 4px 2px;padding:2px 8px;font-size:11.5px;display:flex}.chip-key[data-v-764aae70]{color:var(--ink-soft);font-weight:600}.chip-target[data-v-764aae70]{color:var(--ink);font-weight:600}.chip-hint[data-v-764aae70]{color:var(--ink-fainter);margin-left:auto;padding-left:8px}.reach-chip[data-v-764aae70]{border-radius:var(--radius-chip);align-items:center;gap:5px;padding:0 6px;font-size:10.5px;display:inline-flex}.reach-chip .reach-dot[data-v-764aae70]{background:currentColor;border-radius:50%;width:5px;height:5px}.reach-chip[data-tone=ok][data-v-764aae70]{color:var(--tone-success-dot);background:color-mix(in srgb, var(--tone-success-dot) 10%, transparent)}.reach-chip[data-tone=info][data-v-764aae70]{color:var(--tone-info-dot);background:color-mix(in srgb, var(--tone-info-dot) 10%, transparent)}.reach-chip[data-tone=warn][data-v-764aae70]{color:var(--tone-warning-dot);background:color-mix(in srgb, var(--tone-warning-dot) 13%, transparent)}.composer-input[data-v-764aae70]{width:100%;min-height:26px;max-height:160px;font-family:var(--font-body);color:var(--ink);resize:none;background:0 0;border:0;outline:none;padding:3px 2px;font-size:13.5px;line-height:1.5;display:block;overflow-y:auto}.composer-input[data-v-764aae70]::placeholder{color:var(--ink-fainter)}.composer-bar[data-v-764aae70]{justify-content:space-between;align-items:center;gap:12px;min-height:30px;margin-top:6px;display:flex}.cb-left[data-v-764aae70]{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.cb-right[data-v-764aae70]{flex:none;align-items:center;gap:8px;display:flex}.chip-toggle[data-v-764aae70]{font-family:var(--font-body);color:var(--ink-faint);cursor:pointer;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-pill);transition:color var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast);align-items:center;gap:5px;padding:3px 10px;font-size:12px;display:inline-flex}.chip-toggle[data-v-764aae70]:hover{color:var(--ink)}.chip-toggle.on[data-v-764aae70]{color:var(--ink);background:var(--paper-deep);border-color:var(--ink);font-weight:600}.send-btn[data-v-764aae70]{width:32px;height:32px;color:var(--on-accent);cursor:pointer;background:var(--accent);border-radius:var(--radius-pill);transition:background var(--transition-fast), transform var(--transition-fast), opacity var(--transition-fast);border:0;justify-content:center;align-items:center;padding:0;font-size:15px;display:flex}.send-btn[data-v-764aae70]:hover:not(:disabled){background:var(--accent-strong)}.send-btn[data-v-764aae70]:active:not(:disabled){transform:scale(.96)}.send-btn[data-v-764aae70]:disabled{opacity:.3;cursor:default}.loop-number[data-v-764aae70],.loop-number.iterations[data-v-764aae70]{width:104px}.target[data-v-764aae70]{width:138px}.mention-menu[data-v-764aae70]{z-index:20;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-panel);max-height:264px;box-shadow:var(--shadow-float);margin-bottom:8px;position:absolute;bottom:100%;left:12px;right:12px;overflow:auto}.mention-opt[data-v-764aae70]{width:100%;font-family:var(--font-body);color:var(--ink-soft);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:9px;padding:7px 12px;font-size:13px;display:flex}.mention-opt.sel[data-v-764aae70],.mention-opt[data-v-764aae70]:hover{background:var(--paper-deep)}.mention-ava[data-v-764aae70]{width:20px;height:20px;font-size:10px}.mention-name[data-v-764aae70]{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--ink);flex:1;overflow:hidden}.mention-role[data-v-764aae70]{color:var(--ink-fainter);text-transform:uppercase;letter-spacing:.05em;flex:none;font-size:10.5px}.mention-title[data-v-764aae70]{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-fainter);padding:5px 12px 4px;font-size:10px;font-weight:600}.mention-state[data-v-764aae70]{background:var(--ink-fainter);opacity:.7;border-radius:50%;flex:none;width:7px;height:7px}.mention-state.busy[data-v-764aae70]{background:var(--tone-live-dot);opacity:1}.drawer-resizer[data-v-52ff0158]{z-index:8;position:absolute;inset:0 auto 0 0}.head[data-v-52ff0158]{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding-bottom:8px;display:flex}.dot[data-v-52ff0158]{border-radius:50%;width:9px;height:9px}.state-text[data-v-52ff0158]{font-family:var(--font-mono);font-size:12px}.role-chip[data-v-52ff0158]{letter-spacing:.04em;color:var(--ink-soft);border:1px solid var(--line-strong);border-radius:var(--radius-pill);flex:none;padding:0 7px;font-size:9.5px;line-height:16px}.queue-meta[data-v-52ff0158]{color:var(--ink-faint);flex:auto;font-size:11px}.current-task[data-v-52ff0158]{color:var(--tone-info-dot);border-bottom:1px dashed var(--divider-hair);padding:6px 0;font-size:12px}.agent-drawer[data-v-52ff0158] .ant-drawer-body{flex-direction:column;padding-bottom:0;display:flex}.drawer-tabs[data-v-52ff0158]{flex-direction:column;flex:auto;min-height:0;display:flex}.drawer-tabs[data-v-52ff0158] .ant-tabs-content-holder{overscroll-behavior:contain;flex:auto;min-height:0;overflow-y:auto}.stream[data-v-52ff0158]{font-size:12px}.empty[data-v-52ff0158]{color:var(--ink-faint);padding:12px 4px;font-size:12px}.queue-group[data-v-52ff0158]{margin-bottom:10px}.group-title[data-v-52ff0158]{color:var(--ink-soft);padding:4px 0;font-size:12px;font-weight:600}.queue-task[data-v-52ff0158]{border-radius:var(--radius-panel-sm);align-items:center;gap:6px;padding:4px 6px;display:flex}.queue-task[data-v-52ff0158]:hover{background:var(--hover-tint)}.state-chip[data-v-52ff0158]{letter-spacing:.03em;color:var(--ink-soft);border:1px solid var(--line-strong);border-radius:var(--radius-pill);flex:none;padding:1px 6px;font-size:9px;line-height:15px}.qt-title[data-v-52ff0158]{text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:12px;overflow:hidden}.qt-meta[data-v-52ff0158]{font-family:var(--font-mono);color:var(--ink-faint);font-size:11px}.footer[data-v-52ff0158]{background:var(--paper-raised);border-top:1px solid var(--line);border-radius:0 0 var(--radius-panel) var(--radius-panel);flex:none;margin:8px -24px 0;padding:8px 24px 12px}.member-ops[data-v-52ff0158]{align-items:center;gap:8px;margin-bottom:8px;font-size:11px;display:flex}.op-label[data-v-52ff0158]{color:var(--ink-faint)}.send-ops[data-v-52ff0158]{align-items:center;gap:8px;margin-top:6px;display:flex}.drawer-resizer[data-v-a7e259eb]{z-index:8;position:absolute;inset:0 auto 0 0}.head[data-v-a7e259eb]{border-bottom:1px solid color-mix(in srgb, currentColor 10%, transparent);align-items:center;gap:8px;padding-bottom:8px;display:flex}.meta[data-v-a7e259eb]{font-size:12px;font-family:var(--font-mono);opacity:.6}.spacer[data-v-a7e259eb]{flex:auto}.desc[data-v-a7e259eb]{margin-top:8px}.failure-reason[data-v-a7e259eb]{background:#ff6b6b17;border:1px solid #ff6b6b59;border-radius:8px;align-items:baseline;gap:8px;margin-top:10px;padding:8px 10px;display:flex}.fr-label[data-v-a7e259eb]{color:#ff8080;flex:none;font-size:11px;font-weight:700}.fr-text[data-v-a7e259eb]{color:var(--tone-danger-dot,#ff8080);white-space:pre-wrap;word-break:break-all;font-size:12px;line-height:1.55}.route-reason[data-v-a7e259eb]{background:var(--paper-deep);border:1px solid var(--line);border-radius:var(--radius-chip);align-items:baseline;gap:8px;margin-top:6px;padding:8px 10px;font-size:12px;display:flex}.route-label[data-v-a7e259eb]{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);flex:none;font-size:10px}.route-text[data-v-a7e259eb]{color:var(--ink-soft)}.tl-row[data-v-a7e259eb]{font-size:12px;font-family:var(--font-mono);align-items:center;gap:8px;padding:3px 0;display:flex}.tl-time[data-v-a7e259eb]{opacity:.45}.state[data-v-a7e259eb]{margin-inline-end:0;font-size:10px}.tl-progress[data-v-a7e259eb]{opacity:.7}.child-row[data-v-a7e259eb]{border-radius:var(--radius-chip);align-items:center;gap:6px;padding:4px 6px;display:flex}.child-row[data-v-a7e259eb]:hover{background:color-mix(in srgb, currentColor 8%, transparent)}.child-title[data-v-a7e259eb]{text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:12px;overflow:hidden}.child-meta[data-v-a7e259eb]{opacity:.5;font-size:11px}.empty[data-v-a7e259eb]{opacity:.4;padding:12px 4px;font-size:12px}.raw[data-v-a7e259eb]{max-height:300px;font-size:11px;overflow:auto}.drawer-resizer[data-v-b4ba187a]{z-index:8;position:absolute;inset:0 auto 0 0}.dbg[data-v-b4ba187a]{flex-direction:column;gap:8px;font-size:12px;display:flex}.row[data-v-b4ba187a]{gap:8px;display:flex}.agent[data-v-b4ba187a]{flex:55%}.method[data-v-b4ba187a]{flex:45%}.params[data-v-b4ba187a]{font-family:var(--font-mono)}.ops[data-v-b4ba187a]{justify-content:flex-end}.output[data-v-b4ba187a]{min-height:240px;font-size:11px;font-family:var(--font-mono);white-space:pre-wrap;word-break:break-all;background:color-mix(in srgb, currentColor 5%, transparent);border-radius:var(--radius-panel-sm);padding:10px;overflow:auto}.palette-mask[data-v-e22e8b91]{z-index:1100;background:var(--scrim,#0c0a0966);justify-content:center;align-items:flex-start;padding-top:12vh;display:flex;position:fixed;inset:0}.palette[data-v-e22e8b91]{background:var(--glass-bg);width:560px;max-width:92vw;-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-line);border-radius:var(--radius-panel);box-shadow:var(--glass-highlight), var(--shadow-float);flex-direction:column;display:flex;overflow:hidden}.palette-search[data-v-e22e8b91]{color:var(--ink-faint);border-bottom:1px solid var(--line);align-items:center;gap:9px;padding:13px 16px;display:flex}.ps-icon[data-v-e22e8b91]{flex:none;font-size:15px}.palette-input[data-v-e22e8b91]{min-width:0;font-family:var(--font-body);color:var(--ink);background:0 0;border:none;outline:none;flex:1;font-size:14px}.palette-input[data-v-e22e8b91]::placeholder{color:var(--ink-fainter)}.palette-list[data-v-e22e8b91]{max-height:320px;padding:6px;overflow-y:auto}.palette-item[data-v-e22e8b91]{width:100%;font-family:var(--font-body);color:var(--ink-soft);text-align:left;cursor:pointer;border-radius:var(--radius-panel-sm);background:0 0;border:0;align-items:center;gap:10px;padding:8px 10px;font-size:13.5px;display:flex}.palette-item.selected[data-v-e22e8b91]{color:var(--ink);background:var(--paper-deep)}.pi-label[data-v-e22e8b91]{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.pi-hint[data-v-e22e8b91]{font-family:var(--font-mono);color:var(--ink-faint);background:var(--paper-deep);border-radius:var(--radius-pill);flex:none;padding:2px 8px;font-size:10.5px}.palette-item.selected .pi-hint[data-v-e22e8b91]{background:var(--paper-raised)}.palette-empty[data-v-e22e8b91]{color:var(--ink-faint);text-align:center;padding:18px;font-size:13px}.palette-foot[data-v-e22e8b91],.palette-frost[data-v-e22e8b91]{color:var(--ink-faint);border-top:1px solid var(--line);background:var(--frost-bg);align-items:center;gap:8px;padding:9px 16px;font-size:11px;display:flex}.palette-foot kbd[data-v-e22e8b91]{font-family:var(--font-body);color:var(--ink-soft);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:1px 5px;font-size:10px}.harness[data-v-f2913902]{height:calc(100dvh - var(--app-header-h,56px) - var(--app-footer-h,46px) - 16px);border:1px solid var(--line);border-radius:var(--radius-shell);background:var(--paper-raised);min-height:0;box-shadow:var(--shadow-card);flex-direction:column;margin:0;display:flex;overflow:hidden}.topbar[data-v-f2913902]{background:var(--paper-raised);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:8px 14px;font-size:13px;display:flex}.left[data-v-f2913902],.right[data-v-f2913902]{align-items:center;gap:8px;min-width:0;display:flex}.topbar-mark[data-v-f2913902]{color:var(--ink-faint);font-size:15px}.ws-name[data-v-f2913902]{max-width:260px;font-family:var(--font-display);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-size:17px;font-weight:400;overflow:hidden}.chan-chip[data-v-f2913902]{max-width:200px;color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--line-strong);border-radius:var(--radius-pill);align-items:center;gap:3px;padding:1px 10px;font-size:12px;display:inline-flex;overflow:hidden}.chan-hash[data-v-f2913902]{font-family:var(--font-display);color:var(--ink-faint)}.view-switch[data-v-f2913902]{margin-left:8px}.dot[data-v-f2913902]{border-radius:50%;width:8px;height:8px}.ws-state[data-v-f2913902]{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--line);border-radius:var(--radius-chip);padding:1px 6px;font-size:10px}.ws-state[data-state=open][data-v-f2913902]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 45%, transparent)}.ws-state[data-state=connecting][data-v-f2913902]{color:var(--tone-warning-dot);border-color:color-mix(in srgb, var(--tone-warning-dot) 45%, transparent)}.ws-state[data-state=closed][data-v-f2913902]{color:var(--tone-danger-dot);border-color:color-mix(in srgb, var(--tone-danger-dot) 45%, transparent)}.seq[data-v-f2913902]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-faint);font-size:10px}.pane-toggle[data-v-f2913902]{width:26px;height:26px;color:var(--ink-soft);cursor:pointer;border-radius:var(--radius-panel-sm);transition:color var(--transition-fast), background var(--transition-fast), opacity var(--transition-fast);background:0 0;border:0;justify-content:center;align-items:center;font-size:14px;display:inline-flex}.pane-toggle[data-v-f2913902]:hover{color:var(--ink);background:var(--paper-deep)}.pane-toggle.off[data-v-f2913902]{opacity:.4}.pane-toggle.off[data-v-f2913902]:hover{opacity:1}.main[data-v-f2913902]{flex:auto;min-height:0;display:flex}.left-pane[data-v-f2913902]{background:var(--paper);flex-direction:column;flex:none;min-height:0;display:flex;overflow:hidden}.left-scroll[data-v-f2913902]{flex:auto;min-height:0;overflow:hidden auto}.center-pane[data-v-f2913902]{background:var(--paper);flex:auto;min-width:0;max-width:100%;min-height:0;display:flex;overflow:hidden}.center-pane[data-v-f2913902]>*{min-width:0;max-width:100%}.right-pane[data-v-f2913902]{background:var(--paper);flex:none;min-height:0;overflow:hidden}.right-pane.empty[data-v-f2913902]{opacity:.35}.pane-loading[data-v-f2913902]{height:100%;color:var(--ink-faint);justify-content:center;align-items:center;font-size:12px;display:flex}.composer-pane[data-v-f2913902]{flex:none}
1
+ .mh-ava[data-v-b043d434]{width:34px;height:34px;font-size:14px}.mh-body[data-v-b043d434]{flex-direction:column;gap:2px;min-width:0;display:flex}.mh-name[data-v-b043d434]{color:var(--ink);align-items:center;gap:6px;font-size:14px;font-weight:600;display:flex}.mh-dot[data-v-b043d434]{border-radius:50%;flex:none;width:7px;height:7px}.mh-role[data-v-b043d434]{color:var(--ink-faint);font-size:11.5px}.mh-task[data-v-b043d434]{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.mh-hint[data-v-b043d434]{color:var(--ink-fainter);margin-top:3px;font-size:10.5px}.fs[data-v-c35e0bdd]{flex-direction:column;gap:8px;display:flex}.addr[data-v-c35e0bdd]{font-family:var(--font-mono);background:color-mix(in srgb, currentColor 5%, transparent);border-radius:var(--radius-chip);padding:4px 8px;font-size:12px}.crumbs[data-v-c35e0bdd] a{color:var(--color-primary)}.manual[data-v-c35e0bdd]{max-width:100%}.list[data-v-c35e0bdd]{border:1px solid color-mix(in srgb, currentColor 10%, transparent);border-radius:var(--radius-chip);height:280px;overflow-y:auto}.row[data-v-c35e0bdd]{cursor:pointer;align-items:center;gap:8px;padding:4px 10px;font-size:12px;display:flex}.row[data-v-c35e0bdd]:hover{background:color-mix(in srgb, currentColor 8%, transparent)}.row.up[data-v-c35e0bdd]{opacity:.7}.icon[data-v-c35e0bdd]{flex:none}.name[data-v-c35e0bdd]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.empty[data-v-c35e0bdd]{opacity:.4;text-align:center;padding:24px;font-size:12px}.hint[data-v-c35e0bdd]{opacity:.55;font-size:11px}.channel-list[data-v-b6386095]{flex-direction:column;min-height:100%;padding:12px 10px 8px;display:flex}.list-head[data-v-b6386095]{justify-content:space-between;align-items:center;padding:0 8px 8px;display:flex}.title[data-v-b6386095]{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);font-size:16px}.head-actions[data-v-b6386095]{gap:2px;display:inline-flex}.head-op[data-v-b6386095]{width:24px;height:24px;color:var(--ink-faint);cursor:pointer;border-radius:var(--radius-chip);transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:0;justify-content:center;align-items:center;font-size:14px;display:inline-flex}.head-op[data-v-b6386095]:hover{color:var(--ink);background:var(--paper-deep)}.empty[data-v-b6386095]{color:var(--ink-faint);padding:14px 10px;font-size:12px}.channel-item[data-v-b6386095]{cursor:pointer;border-radius:var(--radius-panel-sm);transition:background var(--transition-fast);margin:1px 0;padding:7px 9px}.channel-item[data-v-b6386095]:hover{background:var(--paper-deep)}.channel-item.active[data-v-b6386095]{background:var(--paper-deep);box-shadow:inset 2px 0 0 var(--accent)}.row1[data-v-b6386095]{color:var(--ink-soft);align-items:center;gap:7px;font-size:13px;display:flex}.channel-item.active .row1[data-v-b6386095]{color:var(--ink);font-weight:500}.dot[data-v-b6386095]{background:var(--tone-neutral-dot);opacity:.55;border-radius:50%;flex:none;width:7px;height:7px}.dot.live[data-v-b6386095]{background:var(--tone-success-dot);opacity:1}.ch-name[data-v-b6386095]{text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.op[data-v-b6386095]{width:20px;height:20px;color:var(--ink-fainter);cursor:pointer;border-radius:var(--radius-chip);opacity:.55;transition:opacity var(--transition-fast), color var(--transition-fast), background var(--transition-fast);background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;font-size:13px;display:inline-flex}.channel-item.active .op[data-v-b6386095],.channel-item:hover .op[data-v-b6386095]{opacity:.9}.op[data-v-b6386095]:hover{opacity:1;color:var(--ink);background:var(--paper-deep)}.op[data-v-b6386095]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.row2[data-v-b6386095]{color:var(--ink-faint);padding-left:14px;font-size:11px}.meta.syncing[data-v-b6386095]{opacity:.6;font-style:italic}.row2.ws[data-v-b6386095]{max-width:100%;font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;color:var(--ink-fainter);text-align:left;cursor:copy;border-radius:var(--radius-chip);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:0;align-items:center;gap:4px;padding:0 2px 0 14px;font-size:11px;display:flex;overflow:hidden}.row2.ws[data-v-b6386095]:hover{color:var(--ink-soft);background:color-mix(in srgb, currentColor 6%, transparent)}.row2.ws[data-v-b6386095]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.mount-template[data-v-b6386095]{border-top:1px solid var(--line);margin-top:10px;padding:12px 6px 6px}.select[data-v-b6386095]{width:100%}.tpl-hint[data-v-b6386095]{color:var(--ink-fainter);padding:5px 2px 0;font-size:10.5px}.ws-hint[data-v-b6386095]{color:var(--ink-faint);font-size:11px}.live-bar[data-v-865fed94]{background:var(--paper);border-top:1px solid var(--line);flex:none;align-items:center;gap:6px;min-height:50px;padding:7px 8px;display:flex;position:relative}.live-idle[data-v-865fed94]{align-items:center;gap:8px;padding-left:6px;display:flex}.idle-dot[data-v-865fed94]{background:var(--ink-fainter);border-radius:50%;flex:none;width:7px;height:7px}.idle-text[data-v-865fed94]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.live-main[data-v-865fed94]{font-family:var(--font-body);color:var(--ink-soft);text-align:left;cursor:pointer;border-radius:var(--radius-panel-sm);transition:background var(--transition-fast);background:0 0;border:0;flex:1;align-items:center;gap:9px;padding:4px 6px;display:flex}.live-main[data-v-865fed94]:hover{background:var(--paper-deep)}.live-ava[data-v-865fed94]{flex:none;line-height:0;position:relative}.live-avatar[data-v-865fed94]{width:22px;height:22px;font-size:10px}.live-avatar-sm[data-v-865fed94]{width:20px;height:20px;font-size:9.5px}.live-pip[data-v-865fed94]{background:var(--tone-live-dot);border:1.5px solid var(--paper);border-radius:50%;width:9px;height:9px;position:absolute;bottom:-2px;right:-2px}.live-pip[data-v-865fed94]:after{content:"";background-color:inherit;border-radius:50%;animation:1.9s cubic-bezier(0,0,.2,1) infinite lb-ping-865fed94;position:absolute;inset:0}.live-text[data-v-865fed94]{flex-direction:column;gap:1px;min-width:0;display:flex}.live-name[data-v-865fed94]{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.live-detail[data-v-865fed94]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.live-more[data-v-865fed94]{color:var(--ink-faint);cursor:pointer;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-pill);transition:background var(--transition-fast), color var(--transition-fast);flex:none;padding:2px 8px;font-size:11px;font-weight:600}.live-more[data-v-865fed94]:hover{color:var(--ink);background:var(--paper-deep)}.live-backdrop[data-v-865fed94]{z-index:40;position:fixed;inset:0}.live-pop[data-v-865fed94]{z-index:41;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-panel-sm);max-height:280px;box-shadow:var(--shadow-float);padding:6px;position:absolute;bottom:calc(100% + 6px);left:8px;right:8px;overflow:auto}.live-pop-title[data-v-865fed94]{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);padding:4px 8px 6px;font-size:10px;font-weight:600}.live-pop-item[data-v-865fed94]{width:100%;font-family:var(--font-body);color:var(--ink-soft);text-align:left;cursor:pointer;border-radius:var(--radius-panel-sm);background:0 0;border:0;align-items:center;gap:9px;padding:7px 8px;display:flex}.live-pop-item[data-v-865fed94]:hover{background:var(--paper-deep)}.live-pop-text[data-v-865fed94]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.live-pop-name[data-v-865fed94]{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.live-pop-detail[data-v-865fed94]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.pop-dot[data-v-865fed94]{background:var(--tone-live-dot);border-radius:50%;flex:none;width:8px;height:8px}@keyframes lb-ping-865fed94{0%{opacity:.55;transform:scale(1)}70%,to{opacity:0;transform:scale(2.4)}}@media (prefers-reduced-motion:reduce){.live-pip[data-v-865fed94]:after{opacity:0;animation:none}}.pane-splitter[data-v-4f787ef8]{z-index:5;cursor:col-resize;touch-action:none;outline:none;flex:0 0 9px;position:relative}.pane-splitter[data-v-4f787ef8]:before{content:"";width:1px;transition:background var(--transition-fast);background:0 0;position:absolute;top:0;bottom:0;left:4px}.pane-splitter.divider[data-v-4f787ef8]:before{background:var(--line)}.pane-splitter.dragging[data-v-4f787ef8]:before,.pane-splitter[data-v-4f787ef8]:focus-visible:before,.pane-splitter[data-v-4f787ef8]:hover:before{background:var(--ink)}.pane-splitter.bare[data-v-4f787ef8]:before{left:2px}.pane-splitter.bare.dragging[data-v-4f787ef8]:before,.pane-splitter.bare[data-v-4f787ef8]:hover:before{background:color-mix(in srgb, var(--ink) 35%, transparent)}.grip[data-v-4f787ef8]{background:var(--ink);border-radius:var(--radius-pill);opacity:0;width:2px;height:18px;transition:opacity var(--transition-fast);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.pane-splitter.dragging .grip[data-v-4f787ef8],.pane-splitter:focus-visible .grip[data-v-4f787ef8],.pane-splitter:hover .grip[data-v-4f787ef8]{opacity:.45}.pane-splitter.dragging .grip[data-v-4f787ef8]{opacity:.85}.stream-bubble[data-v-89d25e3d]{padding:0;position:relative}.stream-text[data-v-89d25e3d]{color:var(--ink);word-break:break-word;overflow-wrap:anywhere;background:var(--bubble-bg);border:1px solid var(--bubble-line);border-radius:var(--radius-bubble);box-shadow:var(--bubble-shadow);transition:border-color var(--transition-fast);margin:2px 2px 8px 0;padding:9px 13px 10px;font-size:13px;line-height:1.7}.stream-text[data-v-89d25e3d]:hover{border-color:var(--line-strong)}.prose[data-v-89d25e3d] p{margin:0 0 7px}.prose[data-v-89d25e3d] p:last-child{margin-bottom:0}.prose[data-v-89d25e3d] h3,.prose[data-v-89d25e3d] h4,.prose[data-v-89d25e3d] h5{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);margin:12px 0 5px;font-size:15px;font-weight:600;line-height:1.35}.prose[data-v-89d25e3d] h3:first-child,.prose[data-v-89d25e3d] h4:first-child,.prose[data-v-89d25e3d] h5:first-child{margin-top:3px}.prose[data-v-89d25e3d] ul{margin:3px 0 8px;padding-left:20px;list-style:outside}.prose[data-v-89d25e3d] ul :deep(ul){margin:2px 0 4px;list-style:circle}.prose[data-v-89d25e3d] li{margin:2px 0;padding-left:1px}.prose[data-v-89d25e3d] li::marker{color:var(--ink-fainter)}.prose[data-v-89d25e3d] code{font-family:var(--font-mono);background:var(--paper-deep);border-radius:var(--radius-chip);padding:1px 5px;font-size:11.5px}.prose[data-v-89d25e3d] blockquote{color:var(--ink-soft);border-left:3px solid var(--line-strong);border-radius:0 var(--radius-chip) var(--radius-chip) 0;background:color-mix(in srgb, var(--paper) 55%, transparent);margin:7px 0;padding:4px 4px 4px 12px}.prose[data-v-89d25e3d] b{font-weight:650}.prose[data-v-89d25e3d] a{color:var(--tone-info-dot);text-underline-offset:2px;text-decoration:underline}.prose[data-v-89d25e3d] .code-block{background:var(--paper-deep);border:1px solid var(--line);border-radius:var(--radius-chip);margin:7px 0;overflow:hidden}.prose[data-v-89d25e3d] .code-head{border-bottom:1px solid var(--divider-hair);justify-content:space-between;align-items:center;padding:4px 6px 4px 10px;display:flex}.prose[data-v-89d25e3d] .code-lang{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-size:9.5px}.prose[data-v-89d25e3d] .code-copy{font-family:var(--font-mono);color:var(--ink-soft);cursor:pointer;background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast);padding:1px 8px;font-size:10px}.prose[data-v-89d25e3d] .code-copy:hover{color:var(--ink);border-color:var(--line-strong)}.prose[data-v-89d25e3d] .code-block pre{margin:0;padding:8px 10px;overflow-x:auto}.prose[data-v-89d25e3d] .code-block code{background:0 0;border-radius:0;padding:0;font-size:11px;line-height:1.55}.cursor[data-v-89d25e3d]{color:var(--accent);animation:.9s step-end infinite blink-89d25e3d;display:inline-block}@keyframes blink-89d25e3d{50%{opacity:0}}.stream-pending[data-v-89d25e3d]{align-items:center;gap:4px;padding:6px 0;display:flex}.pending-dot[data-v-89d25e3d]{background:var(--ink-faint);border-radius:50%;width:4px;height:4px;animation:1.1s ease-in-out infinite pulse-89d25e3d}.pending-dot[data-v-89d25e3d]:nth-child(2){animation-delay:.18s}.pending-dot[data-v-89d25e3d]:nth-child(3){animation-delay:.36s}@keyframes pulse-89d25e3d{0%,to{opacity:.25}50%{opacity:1}}.stream-covered[data-v-89d25e3d]{opacity:.5;color:var(--ink-soft);align-items:center;gap:6px;padding:1px 0;font-size:11px;display:flex}.tool-cluster[data-v-0bef4195]{padding:1px 0 5px 2px;position:relative}.tool-line[data-v-0bef4195]{min-width:0;font-family:var(--font-body);align-items:baseline;gap:8px;padding:1.5px 0;font-size:12px;line-height:1.6;display:flex}.tool-time[data-v-0bef4195]{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-fainter);flex:0 0 34px;font-size:9.5px}.tool-node[data-v-0bef4195]{border:1.5px solid var(--line-strong);background:var(--paper-raised);border-radius:2.5px;flex:0 0 7px;align-self:center;width:7px;height:7px}.tool-icon[data-v-0bef4195]{opacity:.75;flex:none;font-size:13px;line-height:1.5}.tool-name[data-v-0bef4195]{font-family:var(--font-mono);flex:none;font-size:11.5px;font-weight:500}.tool-args[data-v-0bef4195]{min-width:0;max-width:min(52ch,100%);font-family:var(--font-mono);color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;opacity:.85;font-size:11px;overflow:hidden}.tool-line.host .tool-node[data-v-0bef4195]{border-color:var(--ink);background:color-mix(in srgb, var(--ink) 14%, var(--paper-raised))}.tool-line.host .tool-icon[data-v-0bef4195],.tool-line.host .tool-name[data-v-0bef4195]{color:var(--ink);font-weight:600}.tool-line.host .tool-icon[data-v-0bef4195]{opacity:1}.tool-kind[data-v-0bef4195]{letter-spacing:.1em;color:var(--ink-faint);border:1px solid var(--line);border-radius:var(--radius-pill);background:0 0;flex:none;align-self:center;padding:0 5px;font-size:8.5px;line-height:14px}.tool-line:hover .tool-args[data-v-0bef4195]{opacity:1}.more-btn[data-v-0bef4195]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-pill);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin-top:5px;margin-left:49px;padding:1px 10px;font-size:10px}.more-btn[data-v-0bef4195]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.status-cluster[data-v-1da3d4ae]{padding:1px 0 4px 2px}.st-toggle[data-v-1da3d4ae]{width:100%;min-width:0;font-family:var(--font-mono);text-align:left;cursor:pointer;border-radius:var(--radius-chip);background:0 0;border:0;align-items:baseline;gap:7px;padding:2px 4px 2px 0;font-size:10.5px;display:flex}.st-toggle[data-v-1da3d4ae]:hover{background:color-mix(in srgb, var(--ink) 4%, transparent)}.chev[data-v-1da3d4ae]{color:var(--ink-faint);flex:none;font-size:9px;line-height:15px;transition:transform .12s}.chev.open[data-v-1da3d4ae]{transform:rotate(90deg)}.st-label[data-v-1da3d4ae]{letter-spacing:.06em;color:var(--ink-faint);flex:none}.st-count[data-v-1da3d4ae]{color:var(--ink-soft);background:color-mix(in srgb, var(--ink) 8%, transparent);border-radius:var(--radius-chip);flex:none;align-self:center;padding:0 4px;font-size:9px;line-height:13px}.st-preview[data-v-1da3d4ae]{min-width:0;color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;opacity:.75;font-style:italic;overflow:hidden}.st-detail[data-v-1da3d4ae]{background:color-mix(in srgb, var(--ink) 3.5%, transparent);border-left:2px solid color-mix(in srgb, var(--ink) 14%, transparent);border-radius:0 3px 3px 0;max-height:320px;margin:2px 0 2px 16px;padding:4px 8px;overflow-y:auto}.st-line[data-v-1da3d4ae]{align-items:baseline;gap:6px;display:flex}.st-line+.st-line[data-v-1da3d4ae]{margin-top:4px}.st-mark[data-v-1da3d4ae]{color:var(--ink-faint);flex:none}.st-text[data-v-1da3d4ae]{min-width:0;font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;margin:0;font-size:10.5px;line-height:1.5}.life-cluster[data-v-effa619b]{font-family:var(--font-mono);opacity:.88;align-items:center;gap:8px;padding:2px 0 3px 2px;font-size:11px;display:flex}.life-dot[data-v-effa619b]{background:var(--line-strong);border-radius:50%;width:7px;height:7px}.life-dot[data-state=busy][data-v-effa619b]{background:var(--accent-cobalt)}.life-dot[data-state=idle][data-v-effa619b]{background:var(--accent-moss)}.life-row[data-v-effa619b]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.life-state[data-v-effa619b]{text-transform:uppercase;letter-spacing:.1em;font-size:9.5px;font-weight:500}.life-task[data-v-effa619b]{text-overflow:ellipsis;white-space:nowrap;max-width:280px;overflow:hidden}.life-meta[data-v-effa619b]{opacity:.6;font-size:10px}.life-count[data-v-effa619b]{opacity:.45;font-size:9.5px}.route-cluster[data-v-9422b1df]{padding:1px 0 5px}.chat-row[data-v-9422b1df]{background:var(--bubble-bg);border:1px solid var(--bubble-line);border-radius:var(--radius-bubble);box-shadow:var(--bubble-shadow);transition:border-color var(--transition-fast), background var(--transition-fast);margin-bottom:6px;padding:7px 12px 8px}.chat-row[data-v-9422b1df]:hover{border-color:var(--line-strong)}.chat-row[data-v-9422b1df]:last-of-type{margin-bottom:0}.chat-meta[data-v-9422b1df]{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:4px;display:flex}.who-pill[data-v-9422b1df]{font-family:var(--font-body);color:var(--mention-ink);cursor:pointer;background:var(--mention);border-radius:var(--radius-pill);transition:background var(--transition-fast);border:0;align-items:center;gap:5px;padding:1px 8px 1px 3px;font-size:11.5px;font-weight:600;display:inline-flex}.who-pill[data-v-9422b1df]:hover{background:color-mix(in srgb, var(--mention) 70%, var(--g-peach))}.who-ava[data-v-9422b1df]{width:18px;height:18px;font-size:9px}.to-arrow[data-v-9422b1df]{color:var(--ink-fainter);font-size:11px}.who-broadcast[data-v-9422b1df]{color:var(--ink-faint);font-size:11px}.human-chip[data-v-9422b1df]{color:var(--ink-soft);background:var(--paper-deep);border-radius:var(--radius-chip);align-items:center;gap:5px;padding:0 7px;font-size:11.5px;font-weight:600;display:inline-flex}.route-badge[data-v-9422b1df]{color:var(--ink-soft);background:color-mix(in srgb, var(--ink) 4.5%, transparent);border:1px solid var(--line);border-radius:var(--radius-chip);align-items:center;gap:4px;padding:0 6px;font-size:9.5px;display:inline-flex}.route-badge[data-tone=assign][data-v-9422b1df],.route-badge[data-tone=immediate][data-v-9422b1df],.route-badge[data-tone=notice][data-v-9422b1df],.route-badge[data-tone=peer][data-v-9422b1df]{color:var(--ink-soft);border-color:var(--line);background:0 0}.route-badge[data-tone=assign][data-v-9422b1df]{color:var(--ink-soft)}.route-badge.receipt[data-v-9422b1df]{color:var(--tone-warning-dot);background:color-mix(in srgb, var(--tone-warning-dot) 12%, transparent);border-color:#0000}.route-badge.reply-link[data-v-9422b1df]{color:var(--ink-fainter);background:color-mix(in srgb, var(--ink) 6%, transparent);font-size:9.5px}.chat-time[data-v-9422b1df]{color:var(--ink-fainter);margin-left:auto;font-size:9.5px}.chat-body[data-v-9422b1df]{color:var(--ink);white-space:normal;word-break:break-word;padding:1px 0 0 2px;font-size:13px;line-height:1.7}.prose[data-v-9422b1df] p{margin:0 0 6px}.prose[data-v-9422b1df] p:last-child{margin-bottom:0}.prose[data-v-9422b1df] code{font-family:var(--font-mono);background:var(--paper-deep);border-radius:var(--radius-chip);padding:.5px 4px;font-size:11px}.prose[data-v-9422b1df] pre{max-width:100%;font-family:var(--font-mono);background:var(--paper-deep);border-radius:var(--radius-chip);margin:4px 0;padding:6px 9px;font-size:11px;overflow-x:auto}.prose[data-v-9422b1df] b{font-weight:600}.more-btn[data-v-9422b1df]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin-top:4px;padding:1px 10px;font-size:10px}.more-btn[data-v-9422b1df]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.task-cluster[data-v-cdaa9d8e]{flex-wrap:wrap;align-items:center;gap:7px;padding:3px 0 4px 2px;font-size:12px;display:flex}.state-chip[data-v-cdaa9d8e]{font-family:var(--font-body);color:var(--ink);border-radius:var(--radius-pill);align-items:center;gap:5px;padding:1px 7px;font-size:10px;display:inline-flex}.state-chip .state-code[data-v-cdaa9d8e]{font-family:var(--font-mono);letter-spacing:.05em;opacity:.55;font-size:8.5px}.state-dot[data-v-cdaa9d8e]{border-radius:50%;width:5px;height:5px}.task-tag[data-v-cdaa9d8e]{margin:0!important}.chain-arrow[data-v-cdaa9d8e]{opacity:.4;font-size:10px}.task-title[data-v-cdaa9d8e]{font-weight:600}.task-assignee[data-v-cdaa9d8e]{font-family:var(--font-mono);opacity:.6;font-size:10.5px}.progress[data-v-cdaa9d8e]{flex:0 0 180px;margin:0!important}.artifact-card[data-v-1699711f]{background:color-mix(in srgb, currentColor 4%, transparent);border-left:2px solid var(--ink-faint);border-radius:var(--radius-chip);margin:2px 0;padding:4px 8px}.artifact-card.deliverable[data-v-1699711f]{border-left-color:var(--tone-warning-dot)}.artifact-head[data-v-1699711f]{opacity:.85;align-items:center;gap:6px;font-size:11px;display:flex}.name[data-v-1699711f]{font-weight:600}.op[data-v-1699711f]{opacity:.7;font-size:11px}.artifact-body[data-v-1699711f]{white-space:pre-wrap;word-break:break-word;margin:4px 0 0;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:12px}.artifact-body.json[data-v-1699711f]{color:var(--tone-info-dot)}.artifact-cluster[data-v-407440f2]{padding:2px 0 6px 2px}.dup-note[data-v-407440f2]{font-family:var(--font-mono);color:var(--ink-faint);align-items:center;gap:6px;font-size:10px;display:flex}.mini-btn[data-v-407440f2]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;padding:1px 10px;font-size:10px}.mini-btn[data-v-407440f2]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.artifact-cluster[data-v-407440f2]>.artifact-card{margin-top:4px}.member-cluster[data-v-0647f285]{padding:1px 0 5px 2px}.member-line[data-v-0647f285]{font-family:var(--font-mono);color:var(--ink-soft);align-items:center;gap:7px;font-size:10.5px;line-height:20px;display:flex}.line-text[data-v-0647f285]{overflow-wrap:anywhere;word-break:break-word}.more-btn[data-v-0647f285]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin-top:4px;padding:1px 10px;font-size:10px}.more-btn[data-v-0647f285]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.memory-cluster[data-v-9ba9f01b]{padding:1px 0 5px 2px}.memory-line[data-v-9ba9f01b]{font-family:var(--font-mono);align-items:center;gap:7px;font-size:10.5px;line-height:20px;display:flex}.mem-scope[data-v-9ba9f01b]{letter-spacing:.08em;color:var(--ink-soft);background:color-mix(in srgb, var(--ink) 5%, transparent);border:1px solid var(--line);border-radius:var(--radius-chip);padding:0 5px;font-size:8.5px}.mem-title[data-v-9ba9f01b]{overflow-wrap:anywhere;word-break:break-word}.more-btn[data-v-9ba9f01b]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin-top:4px;padding:1px 10px;font-size:10px}.more-btn[data-v-9ba9f01b]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.error-cluster[data-v-22804f20]{padding:2px 0 5px 2px}.error-line[data-v-22804f20]{font-family:var(--font-mono);color:var(--tone-danger-dot);align-items:center;gap:7px;padding:1px 6px;font-size:10.5px;line-height:20px;display:flex}.error-line[data-v-22804f20]:first-child{background:var(--tone-danger-bg);border-radius:var(--radius-chip)}.error-code[data-v-22804f20]{background:color-mix(in srgb, var(--tone-danger-dot) 14%, transparent);border-radius:var(--radius-chip);padding:0 5px;font-size:9px}.error-text[data-v-22804f20]{overflow-wrap:anywhere;word-break:break-word}.more-btn[data-v-22804f20]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin-top:4px;padding:1px 10px;font-size:10px}.more-btn[data-v-22804f20]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.other-cluster[data-v-5f033e18]{padding:1px 0 5px 2px}.other-row[data-v-5f033e18]{font-family:var(--font-mono);opacity:.65;align-items:center;gap:7px;font-size:10.5px;line-height:20px;display:flex}.more-btn[data-v-5f033e18]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin-top:4px;padding:1px 10px;font-size:10px}.more-btn[data-v-5f033e18]:hover{color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.event-block[data-v-49551fd4]{-moz-column-gap:11px;grid-template-columns:30px minmax(0,1fr);column-gap:11px;margin:0;padding:5px 10px 4px 12px;transition:background .15s;display:grid;position:relative}.event-block[data-v-49551fd4]:hover{background:var(--hover-tint);border-radius:4px}.event-block.enter[data-v-49551fd4]{animation:block-in-49551fd4 .32s var(--ease-out-quart) backwards;animation-delay:var(--d,0s)}@media (prefers-reduced-motion:reduce){.event-block.enter[data-v-49551fd4]{animation:none}}.event-block.turn-start[data-v-49551fd4]{border-top:1px solid var(--line);margin-top:13px;padding-top:9px}.event-block.turn-start.compact[data-v-49551fd4]{border-top:0;margin-top:0;padding-top:5px}.event-block[data-kind=stream][data-v-49551fd4]:not([data-settled=true]){background:color-mix(in srgb, var(--ink) 2.5%, transparent);border-radius:4px}.event-block[data-tier=attention][data-v-49551fd4]{box-shadow:inset 2px 0 0 color-mix(in srgb, var(--tone-warning-dot) 55%, transparent)}.event-block[data-kind=error][data-v-49551fd4]{box-shadow:inset 2px 0 0 color-mix(in srgb, var(--tone-danger-dot) 70%, transparent)}.event-block[data-covered=true][data-v-49551fd4]{opacity:.72}.event-block[data-tier=terminal] .agent-name[data-v-49551fd4]{font-weight:700}.event-block[data-tier=silent][data-v-49551fd4]{opacity:.88}.event-block[data-tier=silent][data-v-49551fd4]:hover{opacity:1}.tier-attention[data-v-49551fd4]{color:var(--tone-warning-dot);background:color-mix(in srgb, var(--tone-warning-dot) 13%, transparent);border-radius:var(--radius-chip);align-items:center;gap:3px;padding:0 5px;font-size:9px;display:inline-flex}@keyframes block-in-49551fd4{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.agent-avatar[data-v-49551fd4]{width:30px;min-width:30px;height:30px;font-family:var(--font-body);color:var(--ink);background:var(--paper-deep);border:0;border-radius:50%;justify-content:center;align-items:center;margin-top:0;padding:0;font-size:12px;font-weight:600;display:flex;position:relative}.agent-avatar.clickable[data-v-49551fd4]{cursor:pointer;transition:transform var(--transition-fast) var(--im-spring), box-shadow var(--transition-fast)}.agent-avatar.clickable[data-v-49551fd4]:hover{box-shadow:0 0 0 var(--radius-chip) transparent, 0 3px 10px #0c0a0929;transform:scale(1.06)}.agent-avatar.is-agent[data-v-49551fd4]{color:var(--on-av);background:var(--av,var(--av-fallback))}.agent-avatar.is-human[data-v-49551fd4]{color:var(--ink-soft);background:var(--paper-deep);box-shadow:inset 0 0 0 1px var(--line-strong)}.agent-avatar .system-icon[data-v-49551fd4]{font-size:15px;line-height:1}.av-status[data-v-49551fd4]{background:var(--ink-fainter);border:1.5px solid var(--paper-raised);border-radius:50%;width:8px;height:8px;position:absolute;bottom:-2px;right:-2px}.av-status.busy[data-v-49551fd4]{background:var(--tone-live-dot);animation:1.9s ease-in-out infinite av-breathe-49551fd4}.av-status.stopped[data-v-49551fd4]{background:var(--tone-danger-dot)}@keyframes av-breathe-49551fd4{0%,to{opacity:.55}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.av-status.busy[data-v-49551fd4]{opacity:.9;animation:none}}.event-block.compact .agent-avatar[data-v-49551fd4]{visibility:hidden;height:0;margin-top:0}.event-block.compact[data-v-49551fd4]{padding-top:2px;padding-bottom:2px}.event-block.compact+.event-block.compact[data-v-49551fd4]{margin-top:-2px}.eb-main[data-v-49551fd4]{min-width:0}.block-head[data-v-49551fd4]{min-height:20px;font-family:var(--font-body);align-items:center;gap:8px;padding-bottom:1px;display:flex;position:relative}.agent-name[data-v-49551fd4]{max-width:220px;color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.role-label[data-v-49551fd4]{font-family:var(--font-body);color:var(--ink-fainter);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;overflow:hidden}.kind-chip[data-v-49551fd4]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-fainter);align-items:center;padding:0 2px;font-size:9px;line-height:14px;display:inline-flex}.head-right[data-v-49551fd4]{font-variant-numeric:tabular-nums;color:var(--ink-faint);flex:auto;justify-content:flex-end;align-items:center;gap:6px;font-size:9.5px;display:flex}.folded[data-v-49551fd4]{color:var(--ink-faint);background:color-mix(in srgb, var(--ink) 7%, transparent);border-radius:var(--radius-chip);padding:0 4px}.merged[data-v-49551fd4]{background:color-mix(in srgb, var(--ink) 7%, transparent);border-radius:var(--radius-chip);padding:0 4px}.time[data-v-49551fd4]{width:60px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;flex:none;font-size:9.5px}.ghost-time[data-v-49551fd4]{z-index:2;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-fainter);pointer-events:none;opacity:0;background:var(--paper-raised);border-radius:var(--radius-chip);transition:opacity var(--transition-fast);padding:0 5px;font-size:9px;position:absolute;top:3px;right:10px}.event-block.compact:hover .ghost-time[data-v-49551fd4]{opacity:1}.running-chip[data-v-49551fd4]{color:var(--ink-faint);align-items:center;gap:4px;display:inline-flex}.running-chip .running-dot[data-v-49551fd4]{background:var(--tone-live-dot);border-radius:50%;width:6px;height:6px;animation:1.9s ease-in-out infinite av-breathe-49551fd4}@media (prefers-reduced-motion:reduce){.running-chip .running-dot[data-v-49551fd4]{opacity:.9;animation:none}}.eb-toolbar[data-v-49551fd4]{z-index:5;opacity:0;pointer-events:none;background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-chip);transition:opacity var(--transition-fast);gap:2px;padding:1px;display:inline-flex;position:absolute;top:-4px;right:56px}.event-block:hover .eb-toolbar[data-v-49551fd4]{opacity:1;pointer-events:auto}.eb-tool[data-v-49551fd4]{width:22px;height:22px;color:var(--ink-faint);cursor:pointer;border-radius:var(--radius-chip);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:0;justify-content:center;align-items:center;padding:0;font-size:12px;display:inline-flex}.eb-tool[data-v-49551fd4]:hover{color:var(--ink);background:var(--paper-deep)}.eb-body[data-v-49551fd4]{margin-top:1px;padding-left:2px!important}.transcript[data-v-a25318ff]{background:var(--paper);flex-direction:column;height:100%;min-height:0;display:flex}.filter-bar[data-v-a25318ff]{background:var(--paper-raised);border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:6px 16px;display:flex}.count[data-v-a25318ff]{font-size:11px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-fainter)}.sync-chip[data-v-a25318ff]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-faint);background:var(--paper-deep);border-radius:var(--radius-pill);align-items:center;gap:5px;margin-left:auto;padding:1px 8px;font-size:9.5px;display:inline-flex}.sync-chip[data-state=syncing][data-v-a25318ff]{color:var(--tone-warning-dot)}.sync-chip[data-state=open] .sync-dot[data-v-a25318ff]{color:var(--tone-success-dot);font-size:7px}.sync-pulse[data-v-a25318ff]{background:var(--tone-warning-dot);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite sync-breath-a25318ff}@keyframes sync-breath-a25318ff{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.sync-pulse[data-v-a25318ff]{opacity:.8;animation:none}}.jump-latest[data-v-a25318ff]{z-index:5;float:right;font-family:var(--font-body);color:var(--on-accent);cursor:pointer;background:var(--accent);border-radius:var(--radius-pill);box-shadow:var(--shadow-float);transition:opacity var(--transition-fast), transform var(--transition-fast);border:none;align-items:center;gap:5px;margin-right:14px;padding:5px 12px;font-size:11px;display:inline-flex;position:sticky;bottom:12px}.jump-latest[data-v-a25318ff]:hover{opacity:.92}.jump-latest[data-v-a25318ff]:active{transform:translateY(1px)}.scroller[data-v-a25318ff]{overscroll-behavior:contain;flex:auto;min-height:0;overflow-y:auto}.column[data-v-a25318ff]{max-width:900px;margin:0 auto;padding:10px 4px 24px;animation:.28s ease-out column-in-a25318ff}@keyframes column-in-a25318ff{0%{opacity:0}to{opacity:1}}.earlier-btn[data-v-a25318ff]{font-family:var(--font-body);color:var(--ink-faint);cursor:pointer;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-pill);transition:background var(--transition-fast), color var(--transition-fast);margin:0 auto 10px;padding:4px 14px;font-size:11px;display:block}.earlier-btn[data-v-a25318ff]:hover:not(:disabled){color:var(--ink);background:var(--paper-deep)}.earlier-btn[data-v-a25318ff]:disabled{opacity:.5;cursor:default}.earlier-done[data-v-a25318ff]{font-family:var(--font-mono);text-align:center;color:var(--ink-fainter);margin-bottom:8px;font-size:9.5px}.empty[data-v-a25318ff]{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:72px 16px;display:flex}.empty-icon[data-v-a25318ff]{color:var(--ink-fainter);font-size:28px}.empty-title[data-v-a25318ff]{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink-soft);margin:0;font-size:22px;font-weight:400}.empty-hint[data-v-a25318ff]{color:var(--ink-faint);margin:0;font-size:12px}.skel-stack[data-v-a25318ff]{flex-direction:column;gap:18px;padding:26px 6px;display:flex}.skel-row[data-v-a25318ff]{animation:.4s cubic-bezier(.22,.68,.36,1) backwards aw-rise;animation-delay:var(--d,0s);grid-template-columns:26px minmax(0,1fr);gap:10px;display:grid}.skel-ava[data-v-a25318ff]{border-radius:50%;width:26px;height:26px}.skel-lines[data-v-a25318ff]{flex-direction:column;gap:6px;display:flex}.skel-line[data-v-a25318ff]{height:11px}.skel-line.name[data-v-a25318ff]{width:120px;height:13px}.skel-line.w70[data-v-a25318ff]{width:70%}.skel-line.w45[data-v-a25318ff]{width:45%}@media (prefers-reduced-motion:reduce){.skel-row[data-v-a25318ff]{animation:none}}.lane-empty[data-v-b04638b2]{color:var(--ink-fainter);text-align:center;flex-direction:column;align-items:center;gap:6px;padding:28px 8px;font-size:11.5px;display:flex}.lane-empty-icon[data-v-b04638b2]{color:var(--ink-fainter);font-size:16px;animation:1.2s linear infinite lane-sync-spin-b04638b2}@keyframes lane-sync-spin-b04638b2{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.lane-empty-icon[data-v-b04638b2]{animation:none}}.lane-earlier[data-v-b04638b2]{font-family:var(--font-mono);color:var(--ink-faint);cursor:pointer;border:1px solid var(--line-strong);border-radius:var(--radius-chip);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;margin:2px auto 8px;padding:2px 12px;font-size:10px;display:block}.lane-earlier[data-v-b04638b2]:hover:not(:disabled){color:var(--ink);background:var(--hover-tint);border-color:var(--ink-fainter)}.lane-earlier[data-v-b04638b2]:disabled{cursor:default;opacity:.55}.lanes-wrap[data-v-3d57301f]{background:var(--paper);flex-direction:column;flex:auto;width:100%;min-width:0;max-width:100%;height:100%;min-height:0;display:flex;overflow:hidden}.toolbar[data-v-3d57301f]{background:var(--paper-raised);border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:8px 14px 6px;display:flex}.team-summary[data-v-3d57301f]{flex:auto;align-items:baseline;gap:7px;min-width:0;display:flex}.ts-label[data-v-3d57301f]{letter-spacing:.08em;color:var(--ink-faint);flex:none;font-size:11px}.ts-count[data-v-3d57301f]{color:var(--ink);flex:none;font-size:15px;font-weight:700;line-height:1}.ts-unit[data-v-3d57301f]{color:var(--ink-faint);flex:none;font-size:11px}.ts-detail[data-v-3d57301f]{min-width:0;font-size:11px;font-family:var(--font-mono);color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;overflow:hidden}.lanes[data-v-3d57301f]{overscroll-behavior:contain;flex:auto;gap:10px;width:100%;min-width:0;min-height:0;padding:8px 12px 12px;display:flex;overflow:auto hidden}.lane[data-v-3d57301f]{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-panel);min-width:240px;box-shadow:var(--shadow-card);flex-direction:column;flex:none;display:flex;container-type:inline-size}.lane-head[data-v-3d57301f]{border-bottom:1px solid var(--line);flex-direction:column;flex:none;gap:8px;padding:10px 12px 9px;font-size:13px;display:flex}.head-top[data-v-3d57301f]{align-items:center;gap:7px;min-width:0;display:flex}.lane-ava[data-v-3d57301f]{width:26px;height:26px;color:var(--on-av);border-radius:var(--radius-panel-sm);flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:inline-flex;position:relative}.lane-ava>span[data-v-3d57301f]:first-child{background:var(--av,var(--av-fallback));border-radius:var(--radius-panel-sm);justify-content:center;align-items:center;width:100%;height:100%;display:inline-flex}.lane-state[data-v-3d57301f]{background:var(--ink-fainter);border:1.5px solid var(--paper-raised);border-radius:50%;width:8px;height:8px;position:absolute;bottom:-2px;right:-2px}.lane-state.busy[data-v-3d57301f]{background:var(--tone-live-dot);animation:1.9s ease-in-out infinite lane-breathe-3d57301f}.lane-state.stopped[data-v-3d57301f]{background:var(--tone-danger-dot)}@keyframes lane-breathe-3d57301f{0%,to{opacity:.55}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.lane-state.busy[data-v-3d57301f]{opacity:.9;animation:none}}.lane-name[data-v-3d57301f]{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-size:13.5px;font-weight:700;overflow:hidden}.lane-chip[data-v-3d57301f]{letter-spacing:.04em;color:var(--ink-faint);border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:0 0;flex:none;padding:0 6px;font-size:9.5px;line-height:15px}.lane-role[data-v-3d57301f]{letter-spacing:.05em;text-transform:uppercase;border-radius:var(--radius-pill);flex:none;padding:0 7px;font-size:9.5px;line-height:16px}.lane-role.lead[data-v-3d57301f]{color:var(--on-accent);background:var(--accent)}.lane-role.worker[data-v-3d57301f]{color:var(--ink-soft);border:1px solid var(--line-strong)}.term-badge[data-v-3d57301f]{font-family:var(--font-mono);color:var(--ink-faint);border:1px solid var(--line-strong);border-radius:var(--radius-pill);flex:none;align-items:center;gap:4px;padding:0 6px;font-size:9px;line-height:15px;display:inline-flex}.term-badge .term-dot[data-v-3d57301f]{border-radius:50%;width:5px;height:5px}.head-sub[data-v-3d57301f]{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.lane-meta[data-v-3d57301f]{min-width:0;font-size:10.5px;font-family:var(--font-mono);color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.lane-progress[data-v-3d57301f]{color:var(--tone-info-dot);background:color-mix(in srgb, var(--tone-info-dot) 10%, transparent);border-radius:var(--radius-pill);align-items:center;margin-left:4px;padding:0 5px;display:inline-flex}.lane-actions[data-v-3d57301f]{background:var(--hover-tint);border-radius:var(--radius-chip);flex:none;align-items:center;gap:5px;padding:2px;display:flex}.lane-actions .ant-btn[data-v-3d57301f]{opacity:.78;font-size:12px;transition:opacity .15s}.lane-head:hover .lane-actions .ant-btn[data-v-3d57301f]{opacity:1}.actions-divider[data-v-3d57301f]{background:color-mix(in srgb, currentColor 16%, transparent);flex:none;width:1px;height:14px;margin-inline:2px}.lane-term[data-v-3d57301f]{padding-inline:7px}.lane-edit[data-v-3d57301f],.lane-remove[data-v-3d57301f],.lane-stop[data-v-3d57301f]{padding-inline:5px}.term-label[data-v-3d57301f]{margin-inline-start:5px;display:none}@container (width>=380px){.term-label[data-v-3d57301f]{display:inline}}@container (width<=300px){.lane-chip[data-v-3d57301f]{display:none}}@container (width<=260px){.term-badge[data-v-3d57301f]{display:none}}.lane-body[data-v-3d57301f]{overscroll-behavior:contain;background:var(--paper);flex:auto;min-height:0;padding:8px 4px 16px;overflow-y:auto}.empty[data-v-3d57301f]{color:var(--ink-faint);text-align:center;flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:6px;padding:32px 12px;font-size:12px;display:flex}.empty-icon[data-v-3d57301f]{color:var(--ink-fainter);font-size:22px}.empty-title[data-v-3d57301f]{color:var(--ink-soft);margin:0;font-size:13px}.empty-hint[data-v-3d57301f]{color:var(--ink-fainter);margin:0;font-size:11px}.member-form[data-v-3d57301f]{margin-top:8px}.mode-switch[data-v-3d57301f]{margin-top:4px}.mode-hint[data-v-3d57301f]{opacity:.6;background:color-mix(in srgb, currentColor 5%, transparent);border-radius:var(--radius-chip);padding:6px 8px;font-size:11px}.board-shell[data-v-22725176]{flex-direction:column;flex:auto;min-height:0;animation:.2s cubic-bezier(.22,1,.36,1) view-in-22725176;display:flex}@keyframes view-in-22725176{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.board-shell[data-v-22725176]{animation:none}}.toolbar[data-v-22725176]{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:12px;padding:10px 16px;display:flex}.count[data-v-22725176]{color:var(--ink-fainter);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.board[data-v-22725176]{overscroll-behavior:contain;flex:auto;align-items:stretch;gap:12px;min-height:0;padding:12px 14px 14px;display:flex;overflow-x:auto}.task-col[data-v-22725176]{background:var(--paper-deep);border-radius:var(--radius-panel);flex-direction:column;flex:0 0 300px;min-width:280px;min-height:0;padding:2px 8px 8px;display:flex}.task-col.drop-over[data-v-22725176]{background:var(--tone-info-bg);outline:2px dashed color-mix(in srgb, var(--tone-info-dot) 65%, transparent);outline-offset:-2px}.task-col.no-drop[data-v-22725176]{opacity:.6}.task-col.drag-origin[data-v-22725176]{opacity:.85}.sec[data-v-22725176]{align-items:center;gap:7px;padding:10px 6px 8px;display:flex}.sec-title[data-v-22725176]{letter-spacing:.06em;color:var(--ink-soft);font-size:12px;font-weight:600}.sec-cnt[data-v-22725176]{font-variant-numeric:tabular-nums;color:var(--ink-fainter);font-size:11px}.st-dot[data-v-22725176]{border-radius:50%;flex:none;width:8px;height:8px}.task-col-body[data-v-22725176]{overscroll-behavior:contain;flex:auto;min-height:0;padding:0 2px;overflow-y:auto}.card.task[data-v-22725176]{cursor:pointer;background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-panel);margin-bottom:8px;padding:10px 12px;transition:transform .12s,border-color .12s,opacity .12s;position:relative}.card.task[data-v-22725176]:hover{border-color:var(--line-strong);transform:translateY(-1px)}.card.task.dragging[data-v-22725176]{opacity:.45;cursor:grabbing}.tk-chan[data-v-22725176]{color:var(--ink-faint);gap:8px;font-size:11.5px;display:flex}.tk-num[data-v-22725176]{font-variant-numeric:tabular-nums;color:var(--ink-fainter)}.tk-title[data-v-22725176]{color:var(--ink);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:3px 0 6px;font-size:13px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.tk-route[data-v-22725176]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px;font-size:11px;overflow:hidden}.tk-foot[data-v-22725176]{justify-content:flex-end;display:flex}.col-empty[data-v-22725176]{color:var(--ink-fainter);text-align:center;border:1.5px dashed var(--line-strong);border-radius:var(--radius-panel);padding:14px 8px;font-size:11.5px}.st-pill-btn[data-v-22725176]{cursor:pointer;background:0 0;border:0;padding:0}.st-pill[data-v-22725176]{border:1px solid var(--line-strong);border-radius:var(--radius-pill);align-items:center;gap:4px;padding:1px 9px;font-size:11px;font-weight:600;display:inline-flex}.st-pill-btn:hover .st-pill[data-v-22725176]{background:var(--hover-tint)}.task-list[data-v-22725176]{overscroll-behavior:contain;flex:auto;min-height:0;padding:10px 16px 18px;overflow-y:auto}.list-sec[data-v-22725176]{padding:8px 2px 6px}.list-row[data-v-22725176]{cursor:pointer;background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-panel);align-items:center;gap:12px;margin-bottom:4px;padding:9px 12px;transition:border-color .12s;display:flex}.list-row[data-v-22725176]:hover{border-color:var(--line-strong)}.list-row .grow[data-v-22725176]{min-width:0;color:var(--ink);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13.5px;overflow:hidden}.lnum[data-v-22725176]{color:var(--ink-faint);font-size:12px}.meta[data-v-22725176]{font-family:var(--font-mono);color:var(--ink-fainter);font-size:11px}.menu-backdrop[data-v-22725176]{z-index:60;position:fixed;inset:0}.st-menu[data-v-22725176]{z-index:61;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-panel-sm);min-width:128px;box-shadow:var(--shadow-float);padding:4px;position:fixed}.st-menu button[data-v-22725176]{width:100%;font-family:var(--font-body);color:var(--ink-soft);text-align:left;cursor:pointer;border-radius:var(--radius-chip);background:0 0;border:0;align-items:center;gap:7px;padding:6px 9px;font-size:12.5px;display:flex}.st-menu button[data-v-22725176]:hover{background:var(--paper-deep);color:var(--ink)}.st-menu button.danger[data-v-22725176]{color:var(--tone-danger-dot)}.split[data-v-23486e32]{overscroll-behavior:contain;gap:8px;height:100%;min-height:0;padding:8px;display:flex;overflow-x:auto}.col[data-v-23486e32]{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-panel-sm);flex-direction:column;flex:none;min-width:300px;display:flex}.col-head[data-v-23486e32]{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:8px 10px;display:flex}.col-name[data-v-23486e32]{font-size:13px;font-weight:700}.col-meta[data-v-23486e32]{font-size:11px;font-family:var(--font-mono);color:var(--ink-faint);text-align:right;flex:auto}.col-body[data-v-23486e32]{overscroll-behavior:contain;min-height:0;font-family:var(--font-mono);flex:auto;font-size:11px;overflow-y:auto}.mini-event[data-v-23486e32]{gap:6px;padding:2px 8px;line-height:1.6;display:flex}.mini-event.clickable[data-v-23486e32]{cursor:pointer}.mini-event.clickable[data-v-23486e32]:hover{background:var(--hover-tint)}.me-time[data-v-23486e32]{color:var(--ink-fainter);flex:none}.me-agent[data-v-23486e32]{color:var(--ink-faint);flex:none}.me-text[data-v-23486e32]{text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.col-empty[data-v-23486e32],.empty[data-v-23486e32]{color:var(--ink-faint);text-align:center;padding:24px 8px;font-size:12px}.memory-panel[data-v-25b1b7cc]{font-size:12px}.toolbar[data-v-25b1b7cc]{align-items:center;gap:6px;margin-bottom:6px;display:flex}.agent-select[data-v-25b1b7cc]{flex:auto;min-width:90px}.token-state[data-v-25b1b7cc]{font-family:var(--font-mono);border-radius:var(--radius-chip);background:color-mix(in srgb, currentColor 8%, transparent);flex:none;padding:0 5px;font-size:10px}.token-state[data-ok=true][data-v-25b1b7cc]{color:var(--tone-success-dot)}.token-state[data-ok=false][data-v-25b1b7cc]{color:var(--tone-warning-dot)}.token[data-v-25b1b7cc]{margin-bottom:6px}.search-bar[data-v-25b1b7cc]{gap:6px;margin-bottom:6px;display:flex}.scope[data-v-25b1b7cc]{width:90px}.search-results[data-v-25b1b7cc]{margin-bottom:8px}.hit[data-v-25b1b7cc]{font-family:var(--font-mono);align-items:center;gap:6px;padding:2px 4px;font-size:11px;display:flex}.src[data-v-25b1b7cc]{color:var(--tone-info-dot);background:var(--tone-info-bg);border-radius:var(--radius-chip);padding:0 4px}.src[data-source=shared][data-v-25b1b7cc]{color:var(--tone-retry-dot);background:var(--tone-retry-bg)}.score[data-v-25b1b7cc]{opacity:.5}.hit-title[data-v-25b1b7cc]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.list-head[data-v-25b1b7cc]{opacity:.7;justify-content:space-between;align-items:center;padding:4px 0;font-weight:600;display:flex}.row[data-v-25b1b7cc]{border-bottom:1px dashed color-mix(in srgb, currentColor 10%, transparent);padding:4px 0}.row-head[data-v-25b1b7cc]{align-items:center;gap:6px;display:flex}.kind[data-v-25b1b7cc]{margin-inline-end:0;font-size:10px}.row-importance[data-v-25b1b7cc]{font-family:var(--font-mono);opacity:.5;font-size:10px}.row-title[data-v-25b1b7cc]{font-size:12px;font-weight:600}.row-content[data-v-25b1b7cc]{opacity:.65;word-break:break-all;font-size:11px}.empty[data-v-25b1b7cc]{opacity:.4;padding:8px 0}.stats[data-v-23e4d795]{flex-direction:column;gap:10px;font-size:12px;display:flex}.kpis[data-v-23e4d795]{gap:8px;display:flex}.kpi[data-v-23e4d795]{text-align:center;border:1px solid color-mix(in srgb, currentColor 10%, transparent);border-radius:var(--radius-panel-sm);flex:1 1 0;padding:8px}.kpi-num[data-v-23e4d795]{font-size:16px;font-weight:700;font-family:var(--font-mono)}.kpi-label[data-v-23e4d795]{opacity:.55;margin-top:2px;font-size:11px}.chart[data-v-23e4d795]{border:1px solid color-mix(in srgb, currentColor 10%, transparent);border-radius:var(--radius-panel-sm);height:140px}.app-chart[data-v-23e4d795]{height:100%}.types-title[data-v-23e4d795]{opacity:.7;padding:4px 0;font-weight:600}.type-row[data-v-23e4d795]{font-family:var(--font-mono);align-items:center;gap:6px;padding:1px 0;font-size:11px;display:flex}.t-name[data-v-23e4d795]{text-overflow:ellipsis;white-space:nowrap;flex:0 0 150px;overflow:hidden}.t-bar-wrap[data-v-23e4d795]{background:color-mix(in srgb, currentColor 8%, transparent);border-radius:var(--radius-pill);flex:auto;height:8px;overflow:hidden}.t-bar[data-v-23e4d795]{background:var(--color-primary);height:100%}.t-n[data-v-23e4d795]{text-align:right;opacity:.6;flex:0 0 36px}.empty[data-v-23e4d795]{opacity:.4;padding:8px 0}.inspector[data-v-ea1bee22]{height:100%;padding:0 8px;overflow-y:auto}.tabs[data-v-ea1bee22]{height:100%}.tabs[data-v-ea1bee22] .ant-tabs-content-holder{overflow-y:auto}.tabs[data-v-ea1bee22] .ant-tabs-nav{margin-bottom:8px}.member[data-v-ea1bee22]{cursor:pointer;align-items:center;gap:9px;margin:3px 0;padding:8px 10px;display:flex}.member[data-v-ea1bee22]:hover{border-color:var(--line-strong)}.dot[data-v-ea1bee22]{border-radius:50%;flex:none;width:8px;height:8px}.member-info[data-v-ea1bee22]{flex:auto;min-width:0}.member-name[data-v-ea1bee22]{align-items:center;gap:7px;font-size:13px;display:flex}.name-text[data-v-ea1bee22]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.role-chip[data-v-ea1bee22]{letter-spacing:.05em;text-transform:uppercase;border-radius:var(--radius-pill);flex:none;padding:0 7px;font-size:9.5px;line-height:16px}.role-chip.lead[data-v-ea1bee22]{color:var(--on-accent);background:var(--accent)}.role-chip.worker[data-v-ea1bee22]{color:var(--ink-soft);border:1px solid var(--line-strong)}.member-meta[data-v-ea1bee22]{font-size:11px;font-family:var(--font-mono);color:var(--ink-faint)}.prog[data-v-ea1bee22]{color:var(--tone-info-dot);background:color-mix(in srgb, var(--tone-info-dot) 10%, transparent);border-radius:var(--radius-pill);padding:0 5px}.member-cap[data-v-ea1bee22]{font-family:var(--font-mono);letter-spacing:.02em;color:var(--ink-faint);margin-top:2px;font-size:10px}.ct[data-v-ea1bee22]{opacity:.8}.task[data-v-ea1bee22]{cursor:pointer;margin:3px 0;padding:8px 10px}.task[data-v-ea1bee22]:hover{border-color:var(--line-strong)}.task-head[data-v-ea1bee22]{align-items:center;gap:6px;display:flex}.state-chip[data-v-ea1bee22]{letter-spacing:.04em;color:var(--ink-soft);border:1px solid var(--line-strong);border-radius:var(--radius-pill);background:0 0;flex:none;padding:1px 7px;font-size:9.5px;line-height:15px}.task-title[data-v-ea1bee22]{text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:13px;overflow:hidden}.task-meta[data-v-ea1bee22]{font-size:11px;font-family:var(--font-mono);color:var(--ink-faint)}.empty[data-v-ea1bee22]{color:var(--ink-faint);padding:16px 8px;font-size:12px}.composer[data-v-dced774b]{background:var(--paper-raised);border-top:1px solid var(--line);padding:10px 16px 12px;position:relative;overflow:hidden}.composer-box[data-v-dced774b]{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-panel);max-width:900px;box-shadow:inset 0 1px 0 #ffffff4d, var(--bubble-shadow);transition:border-color var(--transition-slow), box-shadow var(--transition-slow);margin:0 auto;padding:8px 12px;position:relative}.composer-box[data-v-dced774b]:focus-within{border-color:var(--ink-fainter);box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--ink) 18%, transparent),0 6px 22px #0c0a090d}.composer-status-chip[data-v-dced774b]{width:max-content;max-width:100%;color:var(--ink-faint);background:var(--paper-deep);border-radius:var(--radius-chip);align-items:center;gap:6px;margin:0 0 4px 2px;padding:2px 8px;font-size:11.5px;display:flex}.chip-key[data-v-dced774b]{color:var(--ink-soft);font-weight:600}.chip-target[data-v-dced774b]{color:var(--ink);font-weight:600}.chip-hint[data-v-dced774b]{color:var(--ink-fainter);margin-left:auto;padding-left:8px}.reach-chip[data-v-dced774b]{border-radius:var(--radius-chip);align-items:center;gap:5px;padding:0 6px;font-size:10.5px;display:inline-flex}.reach-chip .reach-dot[data-v-dced774b]{background:currentColor;border-radius:50%;width:5px;height:5px}.reach-chip[data-tone=ok][data-v-dced774b]{color:var(--tone-success-dot);background:color-mix(in srgb, var(--tone-success-dot) 10%, transparent)}.reach-chip[data-tone=info][data-v-dced774b]{color:var(--tone-info-dot);background:color-mix(in srgb, var(--tone-info-dot) 10%, transparent)}.reach-chip[data-tone=warn][data-v-dced774b]{color:var(--tone-warning-dot);background:color-mix(in srgb, var(--tone-warning-dot) 13%, transparent)}.composer-input[data-v-dced774b]{width:100%;min-height:26px;max-height:160px;font-family:var(--font-body);color:var(--ink);resize:none;background:0 0;border:0;outline:none;padding:3px 2px;font-size:13.5px;line-height:1.5;display:block;overflow-y:auto}.composer-input[data-v-dced774b]::placeholder{color:var(--ink-fainter)}.composer-bar[data-v-dced774b]{justify-content:space-between;align-items:center;gap:12px;min-height:30px;margin-top:6px;display:flex}.cb-left[data-v-dced774b]{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.cb-right[data-v-dced774b]{flex:none;align-items:center;gap:8px;display:flex}.chip-toggle[data-v-dced774b]{font-family:var(--font-body);color:var(--ink-faint);cursor:pointer;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-pill);transition:color var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast);align-items:center;gap:5px;padding:3px 10px;font-size:12px;display:inline-flex}.chip-toggle[data-v-dced774b]:hover{color:var(--ink)}.chip-toggle.on[data-v-dced774b]{color:var(--ink);background:var(--paper-deep);border-color:var(--ink);font-weight:600}.send-btn[data-v-dced774b]{width:32px;height:32px;color:var(--on-accent);cursor:pointer;background:var(--accent);border-radius:var(--radius-pill);transition:background var(--transition-fast), transform var(--transition-fast), opacity var(--transition-fast);border:0;justify-content:center;align-items:center;padding:0;font-size:15px;display:flex}.send-btn[data-v-dced774b]:hover:not(:disabled){background:var(--accent-strong)}.send-btn[data-v-dced774b]:active:not(:disabled){transform:scale(.96)}.send-btn[data-v-dced774b]:disabled{opacity:.3;cursor:default}.loop-number[data-v-dced774b],.loop-number.iterations[data-v-dced774b]{width:104px}.target[data-v-dced774b]{width:138px}.mention-menu[data-v-dced774b]{z-index:20;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-panel);max-height:264px;box-shadow:var(--shadow-float);margin-bottom:8px;position:absolute;bottom:100%;left:12px;right:12px;overflow:auto}.mention-opt[data-v-dced774b]{width:100%;font-family:var(--font-body);color:var(--ink-soft);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:9px;padding:7px 12px;font-size:13px;display:flex}.mention-opt.sel[data-v-dced774b],.mention-opt[data-v-dced774b]:hover{background:var(--paper-deep)}.mention-ava[data-v-dced774b]{width:20px;height:20px;font-size:10px}.mention-name[data-v-dced774b]{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--ink);flex:1;overflow:hidden}.mention-role[data-v-dced774b]{color:var(--ink-fainter);text-transform:uppercase;letter-spacing:.05em;flex:none;font-size:10.5px}.mention-title[data-v-dced774b]{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-fainter);padding:5px 12px 4px;font-size:10px;font-weight:600}.mention-state[data-v-dced774b]{background:var(--ink-fainter);opacity:.7;border-radius:50%;flex:none;width:7px;height:7px}.mention-state.busy[data-v-dced774b]{background:var(--tone-live-dot);opacity:1}.drawer-resizer[data-v-857e6de6]{z-index:8;position:absolute;inset:0 auto 0 0}.head[data-v-857e6de6]{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding-bottom:8px;display:flex}.dot[data-v-857e6de6]{border-radius:50%;width:9px;height:9px}.state-text[data-v-857e6de6]{font-family:var(--font-mono);font-size:12px}.role-chip[data-v-857e6de6]{letter-spacing:.04em;color:var(--ink-soft);border:1px solid var(--line-strong);border-radius:var(--radius-pill);flex:none;padding:0 7px;font-size:9.5px;line-height:16px}.queue-meta[data-v-857e6de6]{color:var(--ink-faint);flex:auto;font-size:11px}.current-task[data-v-857e6de6]{color:var(--tone-info-dot);border-bottom:1px dashed var(--divider-hair);padding:6px 0;font-size:12px}.agent-drawer[data-v-857e6de6] .ant-drawer-body{flex-direction:column;padding-bottom:0;display:flex}.drawer-tabs[data-v-857e6de6]{flex-direction:column;flex:auto;min-height:0;display:flex}.drawer-tabs[data-v-857e6de6] .ant-tabs-content-holder{overscroll-behavior:contain;flex:auto;min-height:0;overflow-y:auto}.stream[data-v-857e6de6]{font-size:12px}.empty[data-v-857e6de6]{color:var(--ink-faint);padding:12px 4px;font-size:12px}.queue-group[data-v-857e6de6]{margin-bottom:10px}.group-title[data-v-857e6de6]{color:var(--ink-soft);padding:4px 0;font-size:12px;font-weight:600}.queue-task[data-v-857e6de6]{border-radius:var(--radius-panel-sm);align-items:center;gap:6px;padding:4px 6px;display:flex}.queue-task[data-v-857e6de6]:hover{background:var(--hover-tint)}.state-chip[data-v-857e6de6]{letter-spacing:.03em;color:var(--ink-soft);border:1px solid var(--line-strong);border-radius:var(--radius-pill);flex:none;padding:1px 6px;font-size:9px;line-height:15px}.qt-title[data-v-857e6de6]{text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:12px;overflow:hidden}.qt-meta[data-v-857e6de6]{font-family:var(--font-mono);color:var(--ink-faint);font-size:11px}.footer[data-v-857e6de6]{background:var(--paper-raised);border-top:1px solid var(--line);border-radius:0 0 var(--radius-panel) var(--radius-panel);flex:none;margin:8px -24px 0;padding:8px 24px 12px}.member-ops[data-v-857e6de6]{align-items:center;gap:8px;margin-bottom:8px;font-size:11px;display:flex}.op-label[data-v-857e6de6]{color:var(--ink-faint)}.send-ops[data-v-857e6de6]{align-items:center;gap:8px;margin-top:6px;display:flex}.drawer-resizer[data-v-4130ad00]{z-index:8;position:absolute;inset:0 auto 0 0}.head[data-v-4130ad00]{border-bottom:1px solid color-mix(in srgb, currentColor 10%, transparent);align-items:center;gap:8px;padding-bottom:8px;display:flex}.meta[data-v-4130ad00]{font-size:12px;font-family:var(--font-mono);opacity:.6}.spacer[data-v-4130ad00]{flex:auto}.desc[data-v-4130ad00]{margin-top:8px}.failure-reason[data-v-4130ad00]{background:#ff6b6b17;border:1px solid #ff6b6b59;border-radius:8px;align-items:baseline;gap:8px;margin-top:10px;padding:8px 10px;display:flex}.fr-label[data-v-4130ad00]{color:#ff8080;flex:none;font-size:11px;font-weight:700}.fr-text[data-v-4130ad00]{color:var(--tone-danger-dot,#ff8080);white-space:pre-wrap;word-break:break-all;font-size:12px;line-height:1.55}.route-reason[data-v-4130ad00]{background:var(--paper-deep);border:1px solid var(--line);border-radius:var(--radius-chip);align-items:baseline;gap:8px;margin-top:6px;padding:8px 10px;font-size:12px;display:flex}.route-label[data-v-4130ad00]{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);flex:none;font-size:10px}.route-text[data-v-4130ad00]{color:var(--ink-soft)}.tl-row[data-v-4130ad00]{font-size:12px;font-family:var(--font-mono);align-items:center;gap:8px;padding:3px 0;display:flex}.tl-time[data-v-4130ad00]{opacity:.45}.state[data-v-4130ad00]{margin-inline-end:0;font-size:10px}.tl-progress[data-v-4130ad00]{opacity:.7}.child-row[data-v-4130ad00]{border-radius:var(--radius-chip);align-items:center;gap:6px;padding:4px 6px;display:flex}.child-row[data-v-4130ad00]:hover{background:color-mix(in srgb, currentColor 8%, transparent)}.child-title[data-v-4130ad00]{text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:12px;overflow:hidden}.child-meta[data-v-4130ad00]{opacity:.5;font-size:11px}.empty[data-v-4130ad00]{opacity:.4;padding:12px 4px;font-size:12px}.raw[data-v-4130ad00]{max-height:300px;font-size:11px;overflow:auto}.drawer-resizer[data-v-56f080d0]{z-index:8;position:absolute;inset:0 auto 0 0}.dbg[data-v-56f080d0]{flex-direction:column;gap:8px;font-size:12px;display:flex}.row[data-v-56f080d0]{gap:8px;display:flex}.agent[data-v-56f080d0]{flex:55%}.method[data-v-56f080d0]{flex:45%}.params[data-v-56f080d0]{font-family:var(--font-mono)}.ops[data-v-56f080d0]{justify-content:flex-end}.output[data-v-56f080d0]{min-height:240px;font-size:11px;font-family:var(--font-mono);white-space:pre-wrap;word-break:break-all;background:color-mix(in srgb, currentColor 5%, transparent);border-radius:var(--radius-panel-sm);padding:10px;overflow:auto}.palette-mask[data-v-e22e8b91]{z-index:1100;background:var(--scrim,#0c0a0966);justify-content:center;align-items:flex-start;padding-top:12vh;display:flex;position:fixed;inset:0}.palette[data-v-e22e8b91]{background:var(--glass-bg);width:560px;max-width:92vw;-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-line);border-radius:var(--radius-panel);box-shadow:var(--glass-highlight), var(--shadow-float);flex-direction:column;display:flex;overflow:hidden}.palette-search[data-v-e22e8b91]{color:var(--ink-faint);border-bottom:1px solid var(--line);align-items:center;gap:9px;padding:13px 16px;display:flex}.ps-icon[data-v-e22e8b91]{flex:none;font-size:15px}.palette-input[data-v-e22e8b91]{min-width:0;font-family:var(--font-body);color:var(--ink);background:0 0;border:none;outline:none;flex:1;font-size:14px}.palette-input[data-v-e22e8b91]::placeholder{color:var(--ink-fainter)}.palette-list[data-v-e22e8b91]{max-height:320px;padding:6px;overflow-y:auto}.palette-item[data-v-e22e8b91]{width:100%;font-family:var(--font-body);color:var(--ink-soft);text-align:left;cursor:pointer;border-radius:var(--radius-panel-sm);background:0 0;border:0;align-items:center;gap:10px;padding:8px 10px;font-size:13.5px;display:flex}.palette-item.selected[data-v-e22e8b91]{color:var(--ink);background:var(--paper-deep)}.pi-label[data-v-e22e8b91]{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.pi-hint[data-v-e22e8b91]{font-family:var(--font-mono);color:var(--ink-faint);background:var(--paper-deep);border-radius:var(--radius-pill);flex:none;padding:2px 8px;font-size:10.5px}.palette-item.selected .pi-hint[data-v-e22e8b91]{background:var(--paper-raised)}.palette-empty[data-v-e22e8b91]{color:var(--ink-faint);text-align:center;padding:18px;font-size:13px}.palette-foot[data-v-e22e8b91],.palette-frost[data-v-e22e8b91]{color:var(--ink-faint);border-top:1px solid var(--line);background:var(--frost-bg);align-items:center;gap:8px;padding:9px 16px;font-size:11px;display:flex}.palette-foot kbd[data-v-e22e8b91]{font-family:var(--font-body);color:var(--ink-soft);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:1px 5px;font-size:10px}.harness[data-v-f2913902]{height:calc(100dvh - var(--app-header-h,56px) - var(--app-footer-h,46px) - 16px);border:1px solid var(--line);border-radius:var(--radius-shell);background:var(--paper-raised);min-height:0;box-shadow:var(--shadow-card);flex-direction:column;margin:0;display:flex;overflow:hidden}.topbar[data-v-f2913902]{background:var(--paper-raised);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:8px 14px;font-size:13px;display:flex}.left[data-v-f2913902],.right[data-v-f2913902]{align-items:center;gap:8px;min-width:0;display:flex}.topbar-mark[data-v-f2913902]{color:var(--ink-faint);font-size:15px}.ws-name[data-v-f2913902]{max-width:260px;font-family:var(--font-display);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-size:17px;font-weight:400;overflow:hidden}.chan-chip[data-v-f2913902]{max-width:200px;color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--line-strong);border-radius:var(--radius-pill);align-items:center;gap:3px;padding:1px 10px;font-size:12px;display:inline-flex;overflow:hidden}.chan-hash[data-v-f2913902]{font-family:var(--font-display);color:var(--ink-faint)}.view-switch[data-v-f2913902]{margin-left:8px}.dot[data-v-f2913902]{border-radius:50%;width:8px;height:8px}.ws-state[data-v-f2913902]{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--line);border-radius:var(--radius-chip);padding:1px 6px;font-size:10px}.ws-state[data-state=open][data-v-f2913902]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 45%, transparent)}.ws-state[data-state=connecting][data-v-f2913902]{color:var(--tone-warning-dot);border-color:color-mix(in srgb, var(--tone-warning-dot) 45%, transparent)}.ws-state[data-state=closed][data-v-f2913902]{color:var(--tone-danger-dot);border-color:color-mix(in srgb, var(--tone-danger-dot) 45%, transparent)}.seq[data-v-f2913902]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-faint);font-size:10px}.pane-toggle[data-v-f2913902]{width:26px;height:26px;color:var(--ink-soft);cursor:pointer;border-radius:var(--radius-panel-sm);transition:color var(--transition-fast), background var(--transition-fast), opacity var(--transition-fast);background:0 0;border:0;justify-content:center;align-items:center;font-size:14px;display:inline-flex}.pane-toggle[data-v-f2913902]:hover{color:var(--ink);background:var(--paper-deep)}.pane-toggle.off[data-v-f2913902]{opacity:.4}.pane-toggle.off[data-v-f2913902]:hover{opacity:1}.main[data-v-f2913902]{flex:auto;min-height:0;display:flex}.left-pane[data-v-f2913902]{background:var(--paper);flex-direction:column;flex:none;min-height:0;display:flex;overflow:hidden}.left-scroll[data-v-f2913902]{flex:auto;min-height:0;overflow:hidden auto}.center-pane[data-v-f2913902]{background:var(--paper);flex:auto;min-width:0;max-width:100%;min-height:0;display:flex;overflow:hidden}.center-pane[data-v-f2913902]>*{min-width:0;max-width:100%}.right-pane[data-v-f2913902]{background:var(--paper);flex:none;min-height:0;overflow:hidden}.right-pane.empty[data-v-f2913902]{opacity:.35}.pane-loading[data-v-f2913902]{height:100%;color:var(--ink-faint);justify-content:center;align-items:center;font-size:12px;display:flex}.composer-pane[data-v-f2913902]{flex:none}
@@ -0,0 +1 @@
1
+ .harness-caps[data-v-ef707fbe]{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.harness-cap[data-v-ef707fbe]{border:1px solid var(--border,#2a3a4a);opacity:.75;border-radius:3px;padding:0 6px;font-size:11px;line-height:18px}.page[data-v-ef707fbe]{padding:4px}.head[data-v-ef707fbe]{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}h2[data-v-ef707fbe]{margin:0 0 4px}.sub[data-v-ef707fbe]{opacity:.55;margin:0;font-size:12px}.toolbar[data-v-ef707fbe]{align-items:center;gap:12px;margin-bottom:12px;display:flex}.admin-note[data-v-ef707fbe]{color:var(--ink-faint);align-items:center;gap:5px;font-size:11px;display:inline-flex}.tpl-name[data-v-ef707fbe]{align-items:center;gap:6px;display:inline-flex}.vis-tag[data-v-ef707fbe]{margin-right:8px}.owner[data-v-ef707fbe]{color:var(--ink-soft);font-size:12px}.inst[data-v-ef707fbe]{align-items:center;gap:8px;padding:2px 0;font-size:12px;display:flex}.inst-ch[data-v-ef707fbe],.inst-id[data-v-ef707fbe]{font-family:var(--font-mono);opacity:.6}.empty[data-v-ef707fbe]{opacity:.4;padding:6px 0;font-size:12px}
@@ -1,4 +1,4 @@
1
- import{F as e,et as t,ft as n,z as r}from"./BSCpFtzG.js";import{i,s as a}from"./D5KJ7_0V.js";import{t as o}from"./BJvGPTpC.js";import{t as s}from"./NIM0Wglj2.js";import{t as c}from"./36oeS8_R2.js";var l=45e3,u=9e4,d=i(`workshop.connection`,{state:()=>({state:`closed`,cursors:{},lastDataAt:0,pendingReplay:!1,lastError:``,retryCount:0})}),f=class{onEvent;onStateChange;onPendingReplay;onDataRecovered;ws=null;retry=0;closedByUser=!1;subscribed=new Set;refCounts=new Map;lastSeqByChannel=new Map;lastFrameAt=0;lastDataAt=0;userToken=``;constructor(e,t,n=()=>{},r=()=>{}){this.onEvent=e,this.onStateChange=t,this.onPendingReplay=n,this.onDataRecovered=r}updateCursor(e,t){Number.isFinite(t)&&this.lastSeqByChannel.set(e,t)}url(){return typeof location>`u`?`ws://localhost/api/workshop/ws`:`${location.protocol===`https:`?`wss`:`ws`}://${location.host}/api/workshop/ws${this.userToken?`?token=${encodeURIComponent(this.userToken)}`:``}`}connect(){if(typeof window>`u`)return;this.onStateChange(`connecting`,this.retry);let e=new WebSocket(this.url());this.ws=e,this.lastFrameAt=Date.now(),this.lastDataAt=Date.now(),e.onopen=()=>{this.retry=0,this.onStateChange(`open`,0);for(let e of this.subscribed)this.sendSub(e,this.lastSeqByChannel.get(e))},e.onmessage=e=>{this.lastFrameAt=Date.now();try{let t=JSON.parse(e.data);t.type!==`pong`&&(this.lastDataAt=Date.now(),this.onDataRecovered()),this.onEvent(t)}catch{}},e.onclose=()=>{if(this.ws=null,this.closedByUser){this.onStateChange(`closed`,0);return}this.onStateChange(`closed`,this.retry),this.subscribed.size>0&&this.onPendingReplay();let e=Math.min(1e3*2**this.retry,1e4);this.retry+=1,setTimeout(()=>{this.closedByUser||this.connect()},e)},e.onerror=()=>{}}checkStale(){let e=this.ws;!e||e.readyState!==WebSocket.OPEN||(Date.now()-this.lastFrameAt>l||Date.now()-this.lastDataAt>u)&&e.close()}sendSub(e,t){let n={type:`sub`,channelId:e,token:this.userToken};typeof t==`number`&&(n.lastSeq=t),this.ws?.send(JSON.stringify(n))}subscribe(e,t){let n=this.refCounts.get(e)??0;this.refCounts.set(e,n+1),!(n>0)&&(this.subscribed.add(e),typeof t==`number`&&this.lastSeqByChannel.set(e,t),this.ws?.readyState===WebSocket.OPEN?this.sendSub(e,this.lastSeqByChannel.get(e)):this.ws||this.connect())}ensureConnected(){typeof window>`u`||this.ws||this.connect()}unsubscribe(e){let t=this.refCounts.get(e)??0;t<=1?(this.refCounts.delete(e),this.subscribed.delete(e),this.ws?.readyState===WebSocket.OPEN&&this.ws?.send(JSON.stringify({type:`unsub`,channelId:e}))):this.refCounts.set(e,t-1)}refCount(e){return this.refCounts.get(e)??0}ping(){try{this.ws?.send(JSON.stringify({type:`ping`}))}catch{try{this.ws?.close()}catch{}}}close(){this.closedByUser=!0,this.ws?.close()}},p=e=>`${e.kind}:${e.id}`,m=i(`workshop.hitl`,{state:()=>({items:[],snapshotLoaded:!1}),getters:{count:e=>e.items.length,byAgent:e=>{let t=new Map;for(let n of e.items){let e=t.get(n.agentId)??[];e.push(n),t.set(n.agentId,e)}return t}},actions:{applyEnvelope(e){if(e.type===`hitl.request`){let t=e.payload,n=p(t),r=this.items.findIndex(e=>p(e)===n);r>=0?this.items[r]=t:this.items.push(t)}else if(e.type===`hitl.resolved`){let t=e.payload;this.items=this.items.filter(e=>p(e)!==p(t))}},async loadSnapshot(){if(typeof window>`u`)return;let e=s().token;if(e)try{let t=await a(`/api/workshop/hitl/pending`,{headers:{authorization:`Bearer ${e}`}});t.code===0&&t.data&&(this.items=t.data.items,this.snapshotLoaded=!0)}catch{}},invalidate(){this.snapshotLoaded=!1},clear(){this.items=[],this.snapshotLoaded=!1}}}),h=/^🔧\s*\S+/,g={read:{icon:`i-tabler-file-search`,kind:`native`},write:{icon:`i-tabler-pencil`,kind:`native`},edit:{icon:`i-tabler-edit`,kind:`native`},bash:{icon:`i-tabler-terminal-2`,kind:`native`},grep:{icon:`i-tabler-search`,kind:`native`},glob:{icon:`i-tabler-folders`,kind:`native`},dispatch_task:{icon:`i-tabler-send`,kind:`host`},reassign_task:{icon:`i-tabler-arrows-exchange`,kind:`host`},update_task:{icon:`i-tabler-pencil-code`,kind:`host`},cancel_task:{icon:`i-tabler-circle-x`,kind:`host`},complete_task:{icon:`i-tabler-circle-check`,kind:`host`},report_progress:{icon:`i-tabler-progress-check`,kind:`host`},send_message_to_agent:{icon:`i-tabler-message`,kind:`host`},poll_messages:{icon:`i-tabler-inbox`,kind:`host`},broadcast_message:{icon:`i-tabler-rss`,kind:`host`},list_team_agents:{icon:`i-tabler-users`,kind:`host`},list_channel_tasks:{icon:`i-tabler-list`,kind:`host`},get_task_details:{icon:`i-tabler-eye`,kind:`host`},get_my_task_queue:{icon:`i-tabler-stack-2`,kind:`host`},get_queue_overview:{icon:`i-tabler-chart-bar`,kind:`host`},search_memory:{icon:`i-tabler-brain`,kind:`host`},save_memory:{icon:`i-tabler-bookmark`,kind:`host`},create_team_agent:{icon:`i-tabler-user-plus`,kind:`host`},update_team_agent:{icon:`i-tabler-user-cog`,kind:`host`},remove_team_agent:{icon:`i-tabler-user-minus`,kind:`host`}},_={tool:{label:`tool`,icon:`i-tabler-tool`},status:{label:`status`,icon:`i-tabler-dots`},life:{label:`state`,icon:`i-tabler-activity`},route:{label:`message`,icon:`i-tabler-route`},stream:{label:`llm`,icon:`i-tabler-message-dots`},task:{label:`task`,icon:`i-tabler-checklist`},artifact:{label:`artifact`,icon:`i-tabler-package`},member:{label:`team`,icon:`i-tabler-users`},memory:{label:`memory`,icon:`i-tabler-bookmark`},error:{label:`error`,icon:`i-tabler-alert-triangle`},other:{label:`event`,icon:`i-tabler-dots`}};function v(e){switch(e.type){case`agent.status.message`:return h.test(String(e.payload.text??``))?`tool`:`status`;case`agent.status`:return`life`;case`a2a.message`:return`route`;case`agent.delta`:case`agent.message`:return`stream`;case`task.status`:case`task.progress`:return`task`;case`a2a.artifact`:return`artifact`;case`agent.member`:return`member`;case`memory.saved`:return`memory`;case`error`:return`error`;default:return`other`}}function y(e){if(!e)return`#6e6e77`;let t=0;for(let n of e)t=(t*31+n.charCodeAt(0))%360;return`hsl(${t}, 42%, 34%)`}var b={silent:0,status:1,attention:2,terminal:3};function x(e){switch(e.type){case`error`:return`attention`;case`a2a.artifact`:case`agent.message`:return`terminal`;case`task.status`:{let t=String(e.payload.state??``);return t===`COMPLETED`||t===`FAILED`||t===`CANCELED`?`terminal`:t===`WAITING`?`attention`:`status`}case`a2a.message`:return(e.payload.metadata??{})[`x-aw-require-reply`]===`true`?`attention`:`status`;case`agent.delta`:case`agent.status.message`:case`task.progress`:case`memory.saved`:return`silent`;default:return`status`}}function S(e){let t=`silent`;for(let n of e){let e=x(n);b[e]>b[t]&&(t=e)}return t}function C(e){return e.replace(/\s+/g,` `).trim()}function w(e){let t=e.events[e.events.length-1];return t?t.type===`agent.delta`&&!e.settled:!1}function T(e){if(e.taskId)return e.taskId;switch(e.type){case`task.status`:case`task.progress`:return String(e.payload.taskId??``)||null;case`a2a.artifact`:return String(e.payload.taskId??``)||null;default:return null}}function E(e,t){return e==null||t==null||e===t}function D(e,t){let n=e.trim(),r=t.trim();return!n||!r?`none`:n===r||C(n)===C(r)?`dup`:r.startsWith(n)?`extend`:`none`}var O=class{arr=[];last=null;tracks=new Map;trail=Object.create(null);idSeq=0;processed=0;headSeq=void 0;get blocks(){return this.arr}get processedCount(){return this.processed}reset(){this.arr.length=0,this.last=null,this.tracks.clear(),this.trail=Object.create(null),this.processed=0,this.headSeq=void 0}sync(e){let t=e.length>0?e[0]?.seq:void 0;(e.length<this.processed||t!==this.headSeq)&&this.reset();for(let t=this.processed;t<e.length;t++)this.push(e[t]);this.processed=e.length,this.headSeq=e.length>0?e[0]?.seq:void 0}push(e){if(e.type===`channel.snapshot`||e.type===`pong`||e.type===`agent.delta`&&!k(e)||(e.type===`agent.status.message`||e.type===`agent.message`)&&!k(e).trim())return this.last;let t=e.agentId??null,r=T(e),i=t??``,a=`${i}\u0000${r??``}`,o=v(e);if(e.type===`agent.status.message`&&o===`status`){let t=k(e).trim(),n=this.tracks.get(a);if(t&&n&&n.text){let r=D(n.text,t);if(r===`dup`||r===`extend`)return this.foldInto(n,e,t)}}if(e.type===`agent.message`){let t=k(e).trim(),n=this.tracks.get(a);if(t&&n&&n.text){let r=D(n.text,t);if(r===`dup`||r===`extend`)return this.foldInto(n,e,t)}}let s=o;if(e.type===`agent.delta`)s=`stream`;else if(e.type===`agent.message`)s=`stream`;else if(o===`status`){let t=this.last;t!==null&&t.kind===`stream`&&e.agentId===t.agentId&&E(t.taskId,r)&&!t.settled&&(s=`stream`)}if(this.last!==null&&this.last.kind===s&&this.last.agentId===e.agentId&&t!==null&&E(this.last.taskId,r)&&!(s===`stream`&&this.last.settled)&&!(s===`task`&&this.last.taskId&&r&&this.last.taskId!==r)&&!(s===`artifact`&&this.last.taskId&&r&&this.last.taskId!==r)&&this.last){let t=this.last;if(t.events.push(e),t.lastAt=e.at,s===`stream`){if(e.type===`agent.delta`){t.settled=!1;let n=this.tracks.get(a);n?(n.text+=k(e),n.last=t,this.setTrail(i,r,n.text)):(t.settled=!1,this.setTrail(i,r,k(e)))}else t.settled=!0,this.setTrail(i,r,`${k(e)}`)}return t}let c=n({id:`b${++this.idSeq}`,kind:s,agentId:t,taskId:r,events:[e],firstAt:e.at,lastAt:e.at,settled:s===`stream`&&e.type!==`agent.delta`,folded:0,overrideText:null,coveredBy:null,dupStream:!1});if(this.arr.push(c),this.last=c,s===`stream`){let t=this.tracks.get(a);if(t&&t.pieces.length>0&&!t.pieces.includes(c)?(t.pieces.push(c),t.last=c):t||this.tracks.set(a,{text:``,pieces:[c],last:c}),e.type===`agent.delta`){let t=this.tracks.get(a);t&&(t.text+=k(e),this.setTrail(i,r,t.text))}}if(s===`artifact`){let t=k(e),n=this.trail[a]??this.trail[`${i}\u0000`];n&&t&&C(n)===C(t)&&(c.dupStream=!0)}return c}foldInto(e,t,n){let r=e.last;r.events.push(t),r.folded+=1,r.lastAt=t.at,r.settled=!0,r.overrideText=n;for(let t of e.pieces)t!==r&&(t.coveredBy=r.id);return e.text=``,e.pieces=[r],e.last=r,this.setTrail(r.agentId??``,r.taskId,n),r}setTrail(e,t,n){this.trail[`${e}\u0000${t??``}`]=n}};function k(e){switch(e.type){case`agent.delta`:return String(e.payload.delta??``);case`agent.status.message`:return String(e.payload.text??``);case`agent.message`:case`a2a.message`:return(e.payload.parts??[]).map(e=>e.text??``).join(`
1
+ import{F as e,et as t,ft as n,z as r}from"./BSCpFtzG.js";import{i,s as a}from"./C3tCneTM.js";import{t as o}from"./DXRZPxGs.js";import{t as s}from"./BcrN7QEl2.js";import{t as c}from"./36oeS8_R2.js";var l=45e3,u=9e4,d=i(`workshop.connection`,{state:()=>({state:`closed`,cursors:{},lastDataAt:0,pendingReplay:!1,lastError:``,retryCount:0})}),f=class{onEvent;onStateChange;onPendingReplay;onDataRecovered;ws=null;retry=0;closedByUser=!1;subscribed=new Set;refCounts=new Map;lastSeqByChannel=new Map;lastFrameAt=0;lastDataAt=0;userToken=``;constructor(e,t,n=()=>{},r=()=>{}){this.onEvent=e,this.onStateChange=t,this.onPendingReplay=n,this.onDataRecovered=r}updateCursor(e,t){Number.isFinite(t)&&this.lastSeqByChannel.set(e,t)}url(){return typeof location>`u`?`ws://localhost/api/workshop/ws`:`${location.protocol===`https:`?`wss`:`ws`}://${location.host}/api/workshop/ws${this.userToken?`?token=${encodeURIComponent(this.userToken)}`:``}`}connect(){if(typeof window>`u`)return;this.onStateChange(`connecting`,this.retry);let e=new WebSocket(this.url());this.ws=e,this.lastFrameAt=Date.now(),this.lastDataAt=Date.now(),e.onopen=()=>{this.retry=0,this.onStateChange(`open`,0);for(let e of this.subscribed)this.sendSub(e,this.lastSeqByChannel.get(e))},e.onmessage=e=>{this.lastFrameAt=Date.now();try{let t=JSON.parse(e.data);t.type!==`pong`&&(this.lastDataAt=Date.now(),this.onDataRecovered()),this.onEvent(t)}catch{}},e.onclose=()=>{if(this.ws=null,this.closedByUser){this.onStateChange(`closed`,0);return}this.onStateChange(`closed`,this.retry),this.subscribed.size>0&&this.onPendingReplay();let e=Math.min(1e3*2**this.retry,1e4);this.retry+=1,setTimeout(()=>{this.closedByUser||this.connect()},e)},e.onerror=()=>{}}checkStale(){let e=this.ws;!e||e.readyState!==WebSocket.OPEN||(Date.now()-this.lastFrameAt>l||Date.now()-this.lastDataAt>u)&&e.close()}sendSub(e,t){let n={type:`sub`,channelId:e,token:this.userToken};typeof t==`number`&&(n.lastSeq=t),this.ws?.send(JSON.stringify(n))}subscribe(e,t){let n=this.refCounts.get(e)??0;this.refCounts.set(e,n+1),!(n>0)&&(this.subscribed.add(e),typeof t==`number`&&this.lastSeqByChannel.set(e,t),this.ws?.readyState===WebSocket.OPEN?this.sendSub(e,this.lastSeqByChannel.get(e)):this.ws||this.connect())}ensureConnected(){typeof window>`u`||this.ws||this.connect()}unsubscribe(e){let t=this.refCounts.get(e)??0;t<=1?(this.refCounts.delete(e),this.subscribed.delete(e),this.ws?.readyState===WebSocket.OPEN&&this.ws?.send(JSON.stringify({type:`unsub`,channelId:e}))):this.refCounts.set(e,t-1)}refCount(e){return this.refCounts.get(e)??0}ping(){try{this.ws?.send(JSON.stringify({type:`ping`}))}catch{try{this.ws?.close()}catch{}}}close(){this.closedByUser=!0,this.ws?.close()}},p=e=>`${e.kind}:${e.id}`,m=i(`workshop.hitl`,{state:()=>({items:[],snapshotLoaded:!1}),getters:{count:e=>e.items.length,byAgent:e=>{let t=new Map;for(let n of e.items){let e=t.get(n.agentId)??[];e.push(n),t.set(n.agentId,e)}return t}},actions:{applyEnvelope(e){if(e.type===`hitl.request`){let t=e.payload,n=p(t),r=this.items.findIndex(e=>p(e)===n);r>=0?this.items[r]=t:this.items.push(t)}else if(e.type===`hitl.resolved`){let t=e.payload;this.items=this.items.filter(e=>p(e)!==p(t))}},async loadSnapshot(){if(typeof window>`u`)return;let e=s().token;if(e)try{let t=await a(`/api/workshop/hitl/pending`,{headers:{authorization:`Bearer ${e}`}});t.code===0&&t.data&&(this.items=t.data.items,this.snapshotLoaded=!0)}catch{}},invalidate(){this.snapshotLoaded=!1},clear(){this.items=[],this.snapshotLoaded=!1}}}),h=/^🔧\s*\S+/,g={read:{icon:`i-tabler-file-search`,kind:`native`},write:{icon:`i-tabler-pencil`,kind:`native`},edit:{icon:`i-tabler-edit`,kind:`native`},bash:{icon:`i-tabler-terminal-2`,kind:`native`},grep:{icon:`i-tabler-search`,kind:`native`},glob:{icon:`i-tabler-folders`,kind:`native`},dispatch_task:{icon:`i-tabler-send`,kind:`host`},reassign_task:{icon:`i-tabler-arrows-exchange`,kind:`host`},update_task:{icon:`i-tabler-pencil-code`,kind:`host`},cancel_task:{icon:`i-tabler-circle-x`,kind:`host`},complete_task:{icon:`i-tabler-circle-check`,kind:`host`},report_progress:{icon:`i-tabler-progress-check`,kind:`host`},send_message_to_agent:{icon:`i-tabler-message`,kind:`host`},poll_messages:{icon:`i-tabler-inbox`,kind:`host`},broadcast_message:{icon:`i-tabler-rss`,kind:`host`},list_team_agents:{icon:`i-tabler-users`,kind:`host`},list_channel_tasks:{icon:`i-tabler-list`,kind:`host`},get_task_details:{icon:`i-tabler-eye`,kind:`host`},get_my_task_queue:{icon:`i-tabler-stack-2`,kind:`host`},get_queue_overview:{icon:`i-tabler-chart-bar`,kind:`host`},search_memory:{icon:`i-tabler-brain`,kind:`host`},save_memory:{icon:`i-tabler-bookmark`,kind:`host`},create_team_agent:{icon:`i-tabler-user-plus`,kind:`host`},update_team_agent:{icon:`i-tabler-user-cog`,kind:`host`},remove_team_agent:{icon:`i-tabler-user-minus`,kind:`host`}},_={tool:{label:`tool`,icon:`i-tabler-tool`},status:{label:`status`,icon:`i-tabler-dots`},life:{label:`state`,icon:`i-tabler-activity`},route:{label:`message`,icon:`i-tabler-route`},stream:{label:`llm`,icon:`i-tabler-message-dots`},task:{label:`task`,icon:`i-tabler-checklist`},artifact:{label:`artifact`,icon:`i-tabler-package`},member:{label:`team`,icon:`i-tabler-users`},memory:{label:`memory`,icon:`i-tabler-bookmark`},error:{label:`error`,icon:`i-tabler-alert-triangle`},other:{label:`event`,icon:`i-tabler-dots`}};function v(e){switch(e.type){case`agent.status.message`:return h.test(String(e.payload.text??``))?`tool`:`status`;case`agent.status`:return`life`;case`a2a.message`:return`route`;case`agent.delta`:case`agent.message`:return`stream`;case`task.status`:case`task.progress`:return`task`;case`a2a.artifact`:return`artifact`;case`agent.member`:return`member`;case`memory.saved`:return`memory`;case`error`:return`error`;default:return`other`}}function y(e){if(!e)return`#6e6e77`;let t=0;for(let n of e)t=(t*31+n.charCodeAt(0))%360;return`hsl(${t}, 42%, 34%)`}var b={silent:0,status:1,attention:2,terminal:3};function x(e){switch(e.type){case`error`:return`attention`;case`a2a.artifact`:case`agent.message`:return`terminal`;case`task.status`:{let t=String(e.payload.state??``);return t===`COMPLETED`||t===`FAILED`||t===`CANCELED`?`terminal`:t===`WAITING`?`attention`:`status`}case`a2a.message`:return(e.payload.metadata??{})[`x-aw-require-reply`]===`true`?`attention`:`status`;case`agent.delta`:case`agent.status.message`:case`task.progress`:case`memory.saved`:return`silent`;default:return`status`}}function S(e){let t=`silent`;for(let n of e){let e=x(n);b[e]>b[t]&&(t=e)}return t}function C(e){return e.replace(/\s+/g,` `).trim()}function w(e){let t=e.events[e.events.length-1];return t?t.type===`agent.delta`&&!e.settled:!1}function T(e){if(e.taskId)return e.taskId;switch(e.type){case`task.status`:case`task.progress`:return String(e.payload.taskId??``)||null;case`a2a.artifact`:return String(e.payload.taskId??``)||null;default:return null}}function E(e,t){return e==null||t==null||e===t}function D(e,t){let n=e.trim(),r=t.trim();return!n||!r?`none`:n===r||C(n)===C(r)?`dup`:r.startsWith(n)?`extend`:`none`}var O=class{arr=[];last=null;tracks=new Map;trail=Object.create(null);idSeq=0;processed=0;headSeq=void 0;get blocks(){return this.arr}get processedCount(){return this.processed}reset(){this.arr.length=0,this.last=null,this.tracks.clear(),this.trail=Object.create(null),this.processed=0,this.headSeq=void 0}sync(e){let t=e.length>0?e[0]?.seq:void 0;(e.length<this.processed||t!==this.headSeq)&&this.reset();for(let t=this.processed;t<e.length;t++)this.push(e[t]);this.processed=e.length,this.headSeq=e.length>0?e[0]?.seq:void 0}push(e){if(e.type===`channel.snapshot`||e.type===`pong`||e.type===`agent.delta`&&!k(e)||(e.type===`agent.status.message`||e.type===`agent.message`)&&!k(e).trim())return this.last;let t=e.agentId??null,r=T(e),i=t??``,a=`${i}\u0000${r??``}`,o=v(e);if(e.type===`agent.status.message`&&o===`status`){let t=k(e).trim(),n=this.tracks.get(a);if(t&&n&&n.text){let r=D(n.text,t);if(r===`dup`||r===`extend`)return this.foldInto(n,e,t)}}if(e.type===`agent.message`){let t=k(e).trim(),n=this.tracks.get(a);if(t&&n&&n.text){let r=D(n.text,t);if(r===`dup`||r===`extend`)return this.foldInto(n,e,t)}}let s=o;if(e.type===`agent.delta`)s=`stream`;else if(e.type===`agent.message`)s=`stream`;else if(o===`status`){let t=this.last;t!==null&&t.kind===`stream`&&e.agentId===t.agentId&&E(t.taskId,r)&&!t.settled&&(s=`stream`)}if(this.last!==null&&this.last.kind===s&&this.last.agentId===e.agentId&&t!==null&&E(this.last.taskId,r)&&!(s===`stream`&&this.last.settled)&&!(s===`task`&&this.last.taskId&&r&&this.last.taskId!==r)&&!(s===`artifact`&&this.last.taskId&&r&&this.last.taskId!==r)&&this.last){let t=this.last;if(t.events.push(e),t.lastAt=e.at,s===`stream`){if(e.type===`agent.delta`){t.settled=!1;let n=this.tracks.get(a);n?(n.text+=k(e),n.last=t,this.setTrail(i,r,n.text)):(t.settled=!1,this.setTrail(i,r,k(e)))}else t.settled=!0,this.setTrail(i,r,`${k(e)}`)}return t}let c=n({id:`b${++this.idSeq}`,kind:s,agentId:t,taskId:r,events:[e],firstAt:e.at,lastAt:e.at,settled:s===`stream`&&e.type!==`agent.delta`,folded:0,overrideText:null,coveredBy:null,dupStream:!1});if(this.arr.push(c),this.last=c,s===`stream`){let t=this.tracks.get(a);if(t&&t.pieces.length>0&&!t.pieces.includes(c)?(t.pieces.push(c),t.last=c):t||this.tracks.set(a,{text:``,pieces:[c],last:c}),e.type===`agent.delta`){let t=this.tracks.get(a);t&&(t.text+=k(e),this.setTrail(i,r,t.text))}}if(s===`artifact`){let t=k(e),n=this.trail[a]??this.trail[`${i}\u0000`];n&&t&&C(n)===C(t)&&(c.dupStream=!0)}return c}foldInto(e,t,n){let r=e.last;r.events.push(t),r.folded+=1,r.lastAt=t.at,r.settled=!0,r.overrideText=n;for(let t of e.pieces)t!==r&&(t.coveredBy=r.id);return e.text=``,e.pieces=[r],e.last=r,this.setTrail(r.agentId??``,r.taskId,n),r}setTrail(e,t,n){this.trail[`${e}\u0000${t??``}`]=n}};function k(e){switch(e.type){case`agent.delta`:return String(e.payload.delta??``);case`agent.status.message`:return String(e.payload.text??``);case`agent.message`:case`a2a.message`:return(e.payload.parts??[]).map(e=>e.text??``).join(`
2
2
  `);case`a2a.artifact`:return(e.payload.artifact?.parts??[]).map(e=>e.text??``).join(`
3
3
  `);default:return``}}function A(e){if(e.overrideText)return e.overrideText;let t=``;for(let n of e.events){if(n.type===`agent.delta`){t+=k(n);continue}if(n.type!==`agent.status.message`&&n.type===`agent.message`){let e=k(n).trim();e&&(t=`${t?`${t}\n`:``}${e}`);continue}}return t}function j(e,t,n){return e>0&&(n||t<e)}function M(e){return e.replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e]??e)}function N(e){return e.replace(/`([^`\n]+)`/g,`<code>$1</code>`).replace(/\*\*([^*\n]+)\*\*/g,`<b>$1</b>`).replace(/(^|\s)\*([^*\n]+)\*(?=\s|$)/g,`$1<i>$2</i>`)}var P={note:{label:`说明`,icon:`i-tabler-info-circle`},tip:{label:`提示`,icon:`i-tabler-bulb`},important:{label:`重要`,icon:`i-tabler-flag`},warning:{label:`警告`,icon:`i-tabler-alert-triangle`},caution:{label:`注意`,icon:`i-tabler-shield-half`}};function F(e){let t=[];return M(e).replace(/```([\w+-]*)\n?([\s\S]*?)(?:```|$)/g,(e,n,r)=>{let i=t.length;return t.push(`<div class="code-block" data-lang="${n||`text`}"><div class="code-head"><span class="code-lang">${n||`text`}</span><button type="button" class="code-copy">复制</button></div><pre><code>${r.replace(/\n$/,``)}</code></pre></div>`),`@@AWCODE${i}@@`}).split(/\n{2,}/).map(e=>{let t=e.split(`
4
- `);if(/^### /.test(e))return`<h5>${N(e.slice(4))}</h5>`;if(/^## /.test(e))return`<h4>${N(e.slice(3))}</h4>`;if(/^# /.test(e))return`<h4>${N(e.slice(2))}</h4>`;if(t.every(e=>/^\s*[-*] /.test(e)))return t.some(e=>/^\s*[-*] \[[ xX]\] /.test(e))?`<ul class="task-list">${t.map(e=>{let t=/^\s*[-*] \[([ xX])\] (.*)$/.exec(e),n=(t[1]??` `).toLowerCase()===`x`;return`<li class="task-item${n?` done`:``}"><span class="task-check${n?` on`:``}">${n?`✓`:``}</span><span class="task-text">${N(t[2]??``)}</span></li>`}).join(``)}</ul>`:`<ul>${t.map(e=>`<li>${N(e.replace(/^\s*[-*] /,``))}</li>`).join(``)}</ul>`;if(t.every(e=>/^&gt;\s?/.test(e))){let e=/^&gt;\s*\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\s*(.*)$/.exec(t[0]??``);if(e){let n=P[e[1].toLowerCase()],r=e[2]??``,i=[...r?[r]:[],...t.slice(1).map(e=>e.replace(/^&gt;\s?/,``))];return`<div class="gh-alert gh-${e[1].toLowerCase()}"><div class="gh-title"><span class="${n.icon}"></span>${n.label}</div><p>${i.map(e=>N(e)).join(`<br>`)}</p></div>`}return`<blockquote>${t.map(e=>N(e.replace(/^&gt;\s?/,``))).join(`<br>`)}</blockquote>`}return t.length===1&&/^@@AWCODE\d+@@$/.test(e)?e:`<p>${t.map(e=>N(e)).join(`<br>`)}</p>`}).join(``).replace(/@@AWCODE(\d+)@@/g,(e,n)=>t[Number(n)]??``)}function I(e){let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return RegExp(`(^|(?<![\\w@]))@(${t})(?=$|[\\s,.;:!?、,。;:!?…)\\]】」』])`,`gu`)}function L(e,t){let n=[];if(t.length===0)return{text:e,hits:n};let r=[...t].sort((e,t)=>t.name.length-e.name.length),i=e;for(let e of r)e.name&&(i=i.replace(I(e.name),(t,r,i)=>(n.push(e),`\uE000M${n.length-1}\uE000`)));return{text:i,hits:n}}function R(e,t){return e.replace(/\uE000M(\d+)\uE000/g,(e,n)=>{let r=t[Number(n)];return r?`<span class="md-mention" data-agent-id="${M(r.agentId)}">@${M(r.name)}</span>`:``})}function z(e,t){let{text:n,hits:r}=L(e,t);return R(F(n),r)}var B=5e3,V=[`agent.delta`],H={all:null,messages:[`agent.message`,`agent.delta`,`agent.status.message`,`a2a.message`],tasks:[`task.status`,`task.progress`,`a2a.artifact`],team:[`agent.member`,`task.status`],errors:[`error`],key:null};function U(e,t,n,r){return e.filter(e=>{if(e.type===`channel.snapshot`)return!1;if(t===`key`){let t=x(e);return t===`attention`||t===`terminal`}return n&&!n.includes(e.type)?!1:r&&e.type!==`task.status`&&e.type!==`task.progress`?e.agentId===r||e.type===`a2a.message`&&e.payload.metadata?.[`x-aw-target-agent`]===r:!0})}var W=new Map,G=()=>({lastSeq:0,items:[],consumed:new Set});function K(e,t,n){let r=0;for(let i of t)typeof i.seq!=`number`||i.seq>n||e.consumed.has(i.seq)||(e.items.push(i),e.consumed.add(i.seq),r+=1);return r>0&&(e.items.sort((e,t)=>e.seq-t.seq),e.items.length>B&&e.items.splice(0,e.items.length-B)),r}var q=i(`workshop.events`,{state:()=>({rings:{},filters:{},focusAgents:{},laneLoaded:{}}),getters:{ring(e){return t=>e.rings[t]??G()},timeline(e){return t=>{let n=e.rings[t];if(!n)return[];let r=e.filters[t]??`all`,i=e.focusAgents[t]??null,a=`${r}:${i??``}:${n.lastSeq}:${n.items.length}`,o=W.get(t);if(o&&o.key===a)return o.result;let s=U(n.items,r,H[r],i);return W.set(t,{key:a,result:s}),s}},lastSeq(e){return t=>e.rings[t]?.lastSeq??0}},actions:{ingest(e){if(!e.channelId)return;let t=this.rings[e.channelId]??G();if(e.type===`channel.snapshot`){this.rings[e.channelId]={lastSeq:e.seq,items:[],consumed:new Set([e.seq])};return}if(typeof e.seq==`number`&&e.seq>t.lastSeq){if(t.consumed.add(e.seq),e.type===`agent.delta`){let n=t.items[t.items.length-1];if(n&&n.type===`agent.delta`&&n.agentId===e.agentId&&(n.taskId??null)===(e.taskId??null)&&n){let r=n.payload.delta;n.payload.delta=r+e.payload.delta,t.lastSeq=e.seq,this.rings[e.channelId]=t;return}}t.items.push(e),t.items.length>B&&t.items.splice(0,t.items.length-B),t.lastSeq=e.seq,t.consumed.size>2e4&&(t.consumed=new Set(t.items.map(e=>e.seq))),this.rings[e.channelId]=t}},setFilter(e,t){this.filters[e]=t},async loadHistory(e,t=200){if(typeof window>`u`)return;let n=this.rings[e]??G();try{let r=await a(`/api/workshop/channels/${e}/events`,{params:{limit:t,excludeTypes:V.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});if(r.code!==0||!r.data?.items?.length)return;K(n,r.data.items,n.lastSeq),this.rings[e]=n}catch{}},async loadEarlier(e,t=200){if(typeof window>`u`)return!1;let n=this.rings[e];if(!n)return!1;let r=n.items.length>0?n.items[0]?.seq??0:n.lastSeq;if(r<=1)return!1;try{let i=await a(`/api/workshop/channels/${e}/events`,{params:{limit:t,beforeSeq:Math.max(1,r-1),excludeTypes:V.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});if(i.code!==0||!i.data?.items?.length)return!1;let o=K(n,i.data.items,n.lastSeq);return o>0&&(this.rings[e]=n),o>0&&i.data.items.length>=t}catch{return!1}},async loadLaneHistory(e,t,n=200){if(typeof window>`u`||this.laneLoaded[e]?.has(t))return;(this.laneLoaded[e]??=new Set).add(t);for(let t=0;t<20&&this.lastSeq(e)===0;t++)await new Promise(e=>setTimeout(e,150));if(this.lastSeq(e)===0){this.laneLoaded[e]?.delete(t);return}let r=this.rings[e];try{let i=await a(`/api/workshop/channels/${e}/events`,{params:{limit:n,agentId:t,excludeTypes:V.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});i.code===0&&i.data?.items?.length&&(K(r,i.data.items,r.lastSeq),this.rings[e]=r)}catch{this.laneLoaded[e]?.delete(t)}},async loadLaneEarlier(e,t,n=200){if(typeof window>`u`)return!1;let r=this.rings[e];if(!r)return!1;let i=0;for(let e of r.items)if(e.agentId===t){i=e.seq;break}if(i<=1)return!1;try{let o=await a(`/api/workshop/channels/${e}/events`,{params:{limit:n,agentId:t,beforeSeq:i-1,excludeTypes:V.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});if(o.code!==0||!o.data?.items?.length)return!1;let c=K(r,o.data.items,r.lastSeq);return c>0&&(this.rings[e]=r),c>0&&o.data.items.length>=n}catch{return!1}},setFocusAgent(e,t){this.focusAgents[e]=t},clear(e){Reflect.deleteProperty(this.rings,e),Reflect.deleteProperty(this.laneLoaded,e)}}}),J=i(`workshop.entities`,{state:()=>({channels:{},agents:{},tasks:{},refreshing:{},refreshingAgents:{}}),getters:{agentById(e){return(t,n)=>e.agents[t]?.find(e=>e.agentId===n)},agentName(e){return(t,n)=>n?e.agents[t]?.find(e=>e.agentId===n)?.name??n.slice(0,8):`system`},taskTitle(e){return(t,n)=>n?e.tasks[t]?.find(e=>e.id===n)?.title??n.slice(0,8):``},rootTasks(e){return t=>(e.tasks[t]??[]).filter(e=>!e.parentId)},taskById(e){return(t,n)=>e.tasks[t]?.find(e=>e.id===n)},busyCount(e){return t=>(e.agents[t]??[]).filter(e=>e.state===`busy`).length}},actions:{applySnapshot(e){let{channelId:t}=e;this.channels[t]={...e.channel,loadedAt:Date.now()},this.agents[t]=e.agents.map(e=>({...e,modelRef:e.config?.modelRef??e.modelRef??null})),this.tasks[t]=e.tasks.map(e=>this.toTaskView(e))},applyEvent(e){let t=e.channelId;switch(e.type){case`agent.status`:{let n=this.agents[t]??[],r=e.payload,i={agentId:r.agentId,state:r.state,currentTaskId:r.currentTaskId??null,currentTaskTitle:r.currentTaskTitle??null,currentTaskProgress:r.currentTaskProgress??null,queued:r.queued??r.queuedCount??0,completed:r.completed??r.completedCount??0},a=n.findIndex(e=>e.agentId===i.agentId);if(a>=0)n[a]={...n[a],...i};else{let e={agentId:i.agentId,state:i.state,currentTaskId:i.currentTaskId??null,queued:i.queued,completed:i.completed,name:i.agentId.slice(0,8),role:`worker`,harness:`-`};n.push(e),this.refreshAgents(t)}this.agents[t]=[...n];break}case`agent.member`:{let n=e.payload,r=this.agents[t]??[],i=r.findIndex(e=>e.agentId===n.agentId);if(n.op===`added`)i<0&&r.push({agentId:n.agentId,name:n.name,role:n.role,harness:n.harness,enabled:n.enabled,config:n.config,modelRef:n.config?.modelRef??null,state:`idle`,currentTaskId:null,queued:0,completed:0});else if(n.op===`updated`){if(i>=0){let e=r[i],t=n.config??e.config;r[i]={...e,name:n.name??e.name,role:n.role??e.role,harness:n.harness??e.harness,enabled:n.enabled??e.enabled,config:t,modelRef:t?.modelRef??e.modelRef??null}}}else n.op===`removed`&&i>=0&&r.splice(i,1);this.agents[t]=[...r];break}case`task.status`:{let n=e.payload,r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId);if(i>=0){let e=r[i];r[i]={...e,state:n.state,assigneeId:n.assigneeId??e.assigneeId,title:n.title??e.title,parentId:n.parentId??e.parentId,progress:Math.max(e.progress,n.progress??0),routeReason:n.routeReason??e.routeReason,createdAt:n.createdAt??e.createdAt,artifacts:Math.max(e.artifacts,n.artifacts??0)}}else{let e={id:n.taskId,title:n.title??n.taskId.slice(0,8),state:n.state,progress:n.progress??0,assigneeId:n.assigneeId??``,artifacts:n.artifacts??0};n.parentId&&(e.parentId=n.parentId),n.routeReason&&(e.routeReason=n.routeReason),n.createdAt&&(e.createdAt=n.createdAt),r.push(e),n.title===void 0&&this.refreshTasks(t)}this.tasks[t]=[...r];break}case`task.progress`:{let n=e.payload,r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId),a=i>=0?r[i]:void 0;a&&(r[i]={...a,progress:n.progress}),this.tasks[t]=[...r];break}case`a2a.artifact`:{let n=e.payload;if(!n.taskId)break;let r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId),a=i>=0?r[i]:void 0;a&&(r[i]={...a,artifacts:a.artifacts+1}),this.tasks[t]=[...r];break}}},toTaskView(e){return{id:e.id,parentId:e.parentId,title:e.title,state:e.state,progress:e.progress,assigneeId:e.assigneeId,artifacts:e.artifacts.length,updatedAt:e.updatedAt}},refreshChannel(e,t){this.applySnapshot(t)},refreshAgents(e){this.refreshingAgents[e]||(this.refreshingAgents[e]=!0,a(`/api/workshop/channels/${e}/agents`,{headers:{authorization:`Bearer ${s().token}`}}).then(t=>{let n=t.data??[],r=[...this.agents[e]??[]];for(let e of n){let t=r.findIndex(t=>t.agentId===e.id);t>=0?r[t]={...r[t],name:e.name,role:e.role,harness:e.harness,config:e.config}:r.push({agentId:e.id,name:e.name,role:e.role,harness:e.harness,config:e.config,state:`idle`,currentTaskId:null,queued:0,completed:0})}this.agents[e]=r}).catch(()=>{}).finally(()=>{this.refreshingAgents[e]=!1}))},refreshTasks(e){this.refreshing[e]||(this.refreshing[e]=!0,a(`/api/workshop/channels/${e}/tasks`,{headers:{authorization:`Bearer ${s().token}`}}).then(t=>{let n=t.data??[],r=this.tasks[e]??[],i=new Map(r.map(e=>[e.id,e])),a=new Set(n.map(e=>e.id)),o=n.map(e=>{let t=i.get(e.id),n=this.toTaskView(e);return t&&t.progress>n.progress?{...n,progress:t.progress}:n});for(let e of r)a.has(e.id)||o.push(e);this.tasks[e]=o}).catch(()=>{}).finally(()=>{this.refreshing[e]=!1}))}}});function Y(){let n=d(),i=s(),a=q(),l=J(),u=m(),p=c(),h=globalThis.__workshopWs??null,g=new Map;if(!h){let e=new f(t=>{if(t.channelId&&typeof t.seq==`number`&&t.seq>0&&t.type!==`channel.snapshot`){let e=g.get(t.channelId)??0;if(t.seq<=e)return;g.set(t.channelId,t.seq),n.pendingReplay&&=!1}t.type===`channel.snapshot`&&t.channelId?(g.set(t.channelId,typeof t.seq==`number`?t.seq:0),n.pendingReplay=!1,a.ingest(t),l.applyEvent(t),l.applySnapshot(t.payload),a.loadHistory(t.channelId)):(a.ingest(t),l.applyEvent(t)),(t.type===`hitl.request`||t.type===`hitl.resolved`)&&u.applyEnvelope(t),typeof t.seq==`number`&&t.seq>0&&t.channelId&&(n.cursors[t.channelId]=t.seq,e.updateCursor(t.channelId,t.seq)),p.emit(t)},(e,t)=>{n.state=e,n.retryCount=t},()=>{n.pendingReplay=!0},()=>{n.lastDataAt=Date.now()});h=e,globalThis.__workshopWs=h}t(()=>i.token,e=>{h instanceof f&&(h.userToken=e)},{immediate:!0});let _=e=>{let t=a.lastSeq(e);h?.subscribe(e,t>0?t:void 0)},v=e=>{h&&(h.unsubscribe(e),h.refCount(e)===0&&a.clear(e))},y=()=>{h?.ensureConnected()},b=null;return r(()=>{b=o(()=>{h?.ping(),h?.checkStale()},15e3)}),e(()=>{b&&clearInterval(b)}),{subscribe:_,unsubscribe:v,ensureConnected:y,conn:n}}export{_ as a,S as c,z as d,j as f,O as i,A as l,d as m,J as n,g as o,m as p,q as r,y as s,Y as t,w as u};
4
+ `);if(/^### /.test(e))return`<h5>${N(e.slice(4))}</h5>`;if(/^## /.test(e))return`<h4>${N(e.slice(3))}</h4>`;if(/^# /.test(e))return`<h4>${N(e.slice(2))}</h4>`;if(t.every(e=>/^\s*[-*] /.test(e)))return t.some(e=>/^\s*[-*] \[[ xX]\] /.test(e))?`<ul class="task-list">${t.map(e=>{let t=/^\s*[-*] \[([ xX])\] (.*)$/.exec(e),n=(t[1]??` `).toLowerCase()===`x`;return`<li class="task-item${n?` done`:``}"><span class="task-check${n?` on`:``}">${n?`✓`:``}</span><span class="task-text">${N(t[2]??``)}</span></li>`}).join(``)}</ul>`:`<ul>${t.map(e=>`<li>${N(e.replace(/^\s*[-*] /,``))}</li>`).join(``)}</ul>`;if(t.every(e=>/^&gt;\s?/.test(e))){let e=/^&gt;\s*\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\s*(.*)$/.exec(t[0]??``);if(e){let n=P[e[1].toLowerCase()],r=e[2]??``,i=[...r?[r]:[],...t.slice(1).map(e=>e.replace(/^&gt;\s?/,``))];return`<div class="gh-alert gh-${e[1].toLowerCase()}"><div class="gh-title"><span class="${n.icon}"></span>${n.label}</div><p>${i.map(e=>N(e)).join(`<br>`)}</p></div>`}return`<blockquote>${t.map(e=>N(e.replace(/^&gt;\s?/,``))).join(`<br>`)}</blockquote>`}return t.length===1&&/^@@AWCODE\d+@@$/.test(e)?e:`<p>${t.map(e=>N(e)).join(`<br>`)}</p>`}).join(``).replace(/@@AWCODE(\d+)@@/g,(e,n)=>t[Number(n)]??``)}function I(e){let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return RegExp(`(^|(?<![\\w@]))@(${t})(?=$|[\\s,.;:!?、,。;:!?…)\\]】」』])`,`gu`)}function L(e,t){let n=[];if(t.length===0)return{text:e,hits:n};let r=[...t].sort((e,t)=>t.name.length-e.name.length),i=e;for(let e of r)e.name&&(i=i.replace(I(e.name),(t,r,i)=>(n.push(e),`\uE000M${n.length-1}\uE000`)));return{text:i,hits:n}}function R(e,t){return e.replace(/\uE000M(\d+)\uE000/g,(e,n)=>{let r=t[Number(n)];return r?`<span class="md-mention" data-agent-id="${M(r.agentId)}">@${M(r.name)}</span>`:``})}function z(e,t){let{text:n,hits:r}=L(e,t);return R(F(n),r)}var B=5e3,V=[`agent.delta`],H={all:null,messages:[`agent.message`,`agent.delta`,`agent.status.message`,`a2a.message`],tasks:[`task.status`,`task.progress`,`a2a.artifact`],team:[`agent.member`,`task.status`],errors:[`error`],key:null};function U(e,t,n,r){return e.filter(e=>{if(e.type===`channel.snapshot`)return!1;if(t===`key`){let t=x(e);return t===`attention`||t===`terminal`}return n&&!n.includes(e.type)?!1:r&&e.type!==`task.status`&&e.type!==`task.progress`?e.agentId===r||e.type===`a2a.message`&&e.payload.metadata?.[`x-aw-target-agent`]===r:!0})}var W=new Map,G=()=>({lastSeq:0,items:[],consumed:new Set});function K(e,t,n){let r=0;for(let i of t)typeof i.seq!=`number`||i.seq>n||e.consumed.has(i.seq)||(e.items.push(i),e.consumed.add(i.seq),r+=1);return r>0&&(e.items.sort((e,t)=>e.seq-t.seq),e.items.length>B&&e.items.splice(0,e.items.length-B)),r}var q=i(`workshop.events`,{state:()=>({rings:{},filters:{},focusAgents:{},laneLoaded:{}}),getters:{ring(e){return t=>e.rings[t]??G()},timeline(e){return t=>{let n=e.rings[t];if(!n)return[];let r=e.filters[t]??`all`,i=e.focusAgents[t]??null,a=`${r}:${i??``}:${n.lastSeq}:${n.items.length}`,o=W.get(t);if(o&&o.key===a)return o.result;let s=U(n.items,r,H[r],i);return W.set(t,{key:a,result:s}),s}},lastSeq(e){return t=>e.rings[t]?.lastSeq??0}},actions:{ingest(e){if(!e.channelId)return;let t=this.rings[e.channelId]??G();if(e.type===`channel.snapshot`){this.rings[e.channelId]={lastSeq:e.seq,items:[],consumed:new Set([e.seq])};return}if(typeof e.seq==`number`&&e.seq>t.lastSeq){if(t.consumed.add(e.seq),e.type===`agent.delta`){let n=t.items[t.items.length-1];if(n&&n.type===`agent.delta`&&n.agentId===e.agentId&&(n.taskId??null)===(e.taskId??null)&&n){let r=n.payload.delta;n.payload.delta=r+e.payload.delta,t.lastSeq=e.seq,this.rings[e.channelId]=t;return}}t.items.push(e),t.items.length>B&&t.items.splice(0,t.items.length-B),t.lastSeq=e.seq,t.consumed.size>2e4&&(t.consumed=new Set(t.items.map(e=>e.seq))),this.rings[e.channelId]=t}},setFilter(e,t){this.filters[e]=t},async loadHistory(e,t=200){if(typeof window>`u`)return;let n=this.rings[e]??G();try{let r=await a(`/api/workshop/channels/${e}/events`,{params:{limit:t,excludeTypes:V.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});if(r.code!==0||!r.data?.items?.length)return;K(n,r.data.items,n.lastSeq),this.rings[e]=n}catch{}},async loadEarlier(e,t=200){if(typeof window>`u`)return!1;let n=this.rings[e];if(!n)return!1;let r=n.items.length>0?n.items[0]?.seq??0:n.lastSeq;if(r<=1)return!1;try{let i=await a(`/api/workshop/channels/${e}/events`,{params:{limit:t,beforeSeq:Math.max(1,r-1),excludeTypes:V.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});if(i.code!==0||!i.data?.items?.length)return!1;let o=K(n,i.data.items,n.lastSeq);return o>0&&(this.rings[e]=n),o>0&&i.data.items.length>=t}catch{return!1}},async loadLaneHistory(e,t,n=200){if(typeof window>`u`||this.laneLoaded[e]?.has(t))return;(this.laneLoaded[e]??=new Set).add(t);for(let t=0;t<20&&this.lastSeq(e)===0;t++)await new Promise(e=>setTimeout(e,150));if(this.lastSeq(e)===0){this.laneLoaded[e]?.delete(t);return}let r=this.rings[e];try{let i=await a(`/api/workshop/channels/${e}/events`,{params:{limit:n,agentId:t,excludeTypes:V.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});i.code===0&&i.data?.items?.length&&(K(r,i.data.items,r.lastSeq),this.rings[e]=r)}catch{this.laneLoaded[e]?.delete(t)}},async loadLaneEarlier(e,t,n=200){if(typeof window>`u`)return!1;let r=this.rings[e];if(!r)return!1;let i=0;for(let e of r.items)if(e.agentId===t){i=e.seq;break}if(i<=1)return!1;try{let o=await a(`/api/workshop/channels/${e}/events`,{params:{limit:n,agentId:t,beforeSeq:i-1,excludeTypes:V.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});if(o.code!==0||!o.data?.items?.length)return!1;let c=K(r,o.data.items,r.lastSeq);return c>0&&(this.rings[e]=r),c>0&&o.data.items.length>=n}catch{return!1}},setFocusAgent(e,t){this.focusAgents[e]=t},clear(e){Reflect.deleteProperty(this.rings,e),Reflect.deleteProperty(this.laneLoaded,e)}}}),J=i(`workshop.entities`,{state:()=>({channels:{},agents:{},tasks:{},refreshing:{},refreshingAgents:{}}),getters:{agentById(e){return(t,n)=>e.agents[t]?.find(e=>e.agentId===n)},agentName(e){return(t,n)=>n?e.agents[t]?.find(e=>e.agentId===n)?.name??n.slice(0,8):`system`},taskTitle(e){return(t,n)=>n?e.tasks[t]?.find(e=>e.id===n)?.title??n.slice(0,8):``},rootTasks(e){return t=>(e.tasks[t]??[]).filter(e=>!e.parentId)},taskById(e){return(t,n)=>e.tasks[t]?.find(e=>e.id===n)},busyCount(e){return t=>(e.agents[t]??[]).filter(e=>e.state===`busy`).length}},actions:{applySnapshot(e){let{channelId:t}=e;this.channels[t]={...e.channel,loadedAt:Date.now()},this.agents[t]=e.agents.map(e=>({...e,modelRef:e.config?.modelRef??e.modelRef??null})),this.tasks[t]=e.tasks.map(e=>this.toTaskView(e))},applyEvent(e){let t=e.channelId;switch(e.type){case`agent.status`:{let n=this.agents[t]??[],r=e.payload,i={agentId:r.agentId,state:r.state,currentTaskId:r.currentTaskId??null,currentTaskTitle:r.currentTaskTitle??null,currentTaskProgress:r.currentTaskProgress??null,queued:r.queued??r.queuedCount??0,completed:r.completed??r.completedCount??0},a=n.findIndex(e=>e.agentId===i.agentId);if(a>=0)n[a]={...n[a],...i};else{let e={agentId:i.agentId,state:i.state,currentTaskId:i.currentTaskId??null,queued:i.queued,completed:i.completed,name:i.agentId.slice(0,8),role:`worker`,harness:`-`};n.push(e),this.refreshAgents(t)}this.agents[t]=[...n];break}case`agent.member`:{let n=e.payload,r=this.agents[t]??[],i=r.findIndex(e=>e.agentId===n.agentId);if(n.op===`added`)i<0&&r.push({agentId:n.agentId,name:n.name,role:n.role,harness:n.harness,enabled:n.enabled,config:n.config,modelRef:n.config?.modelRef??null,state:`idle`,currentTaskId:null,queued:0,completed:0});else if(n.op===`updated`){if(i>=0){let e=r[i],t=n.config??e.config;r[i]={...e,name:n.name??e.name,role:n.role??e.role,harness:n.harness??e.harness,enabled:n.enabled??e.enabled,config:t,modelRef:t?.modelRef??e.modelRef??null}}}else n.op===`removed`&&i>=0&&r.splice(i,1);this.agents[t]=[...r];break}case`task.status`:{let n=e.payload,r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId);if(i>=0){let e=r[i];r[i]={...e,state:n.state,assigneeId:n.assigneeId??e.assigneeId,title:n.title??e.title,parentId:n.parentId??e.parentId,progress:Math.max(e.progress,n.progress??0),routeReason:n.routeReason??e.routeReason,createdAt:n.createdAt??e.createdAt,artifacts:Math.max(e.artifacts,n.artifacts??0)}}else{let e={id:n.taskId,title:n.title??n.taskId.slice(0,8),state:n.state,progress:n.progress??0,assigneeId:n.assigneeId??``,artifacts:n.artifacts??0};n.parentId&&(e.parentId=n.parentId),n.routeReason&&(e.routeReason=n.routeReason),n.createdAt&&(e.createdAt=n.createdAt),r.push(e),n.title===void 0&&this.refreshTasks(t)}this.tasks[t]=[...r];break}case`task.progress`:{let n=e.payload,r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId),a=i>=0?r[i]:void 0;a&&(r[i]={...a,progress:n.progress}),this.tasks[t]=[...r];break}case`a2a.artifact`:{let n=e.payload;if(!n.taskId)break;let r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId),a=i>=0?r[i]:void 0;a&&(r[i]={...a,artifacts:a.artifacts+1}),this.tasks[t]=[...r];break}}},toTaskView(e){return{id:e.id,parentId:e.parentId,title:e.title,state:e.state,progress:e.progress,assigneeId:e.assigneeId,artifacts:e.artifacts.length,updatedAt:e.updatedAt}},refreshChannel(e,t){this.applySnapshot(t)},refreshAgents(e){this.refreshingAgents[e]||(this.refreshingAgents[e]=!0,a(`/api/workshop/channels/${e}/agents`,{headers:{authorization:`Bearer ${s().token}`}}).then(t=>{let n=t.data??[],r=[...this.agents[e]??[]];for(let e of n){let t=r.findIndex(t=>t.agentId===e.id);t>=0?r[t]={...r[t],name:e.name,role:e.role,harness:e.harness,config:e.config}:r.push({agentId:e.id,name:e.name,role:e.role,harness:e.harness,config:e.config,state:`idle`,currentTaskId:null,queued:0,completed:0})}this.agents[e]=r}).catch(()=>{}).finally(()=>{this.refreshingAgents[e]=!1}))},refreshTasks(e){this.refreshing[e]||(this.refreshing[e]=!0,a(`/api/workshop/channels/${e}/tasks`,{headers:{authorization:`Bearer ${s().token}`}}).then(t=>{let n=t.data??[],r=this.tasks[e]??[],i=new Map(r.map(e=>[e.id,e])),a=new Set(n.map(e=>e.id)),o=n.map(e=>{let t=i.get(e.id),n=this.toTaskView(e);return t&&t.progress>n.progress?{...n,progress:t.progress}:n});for(let e of r)a.has(e.id)||o.push(e);this.tasks[e]=o}).catch(()=>{}).finally(()=>{this.refreshing[e]=!1}))}}}),Y=null,X=0;function Z(){let n=d(),i=s(),a=q(),l=J(),u=m(),p=c(),h=globalThis.__workshopWs??null,g=new Map;if(!h){let e=new f(t=>{if(t.channelId&&typeof t.seq==`number`&&t.seq>0&&t.type!==`channel.snapshot`){let e=g.get(t.channelId)??0;if(t.seq<=e)return;g.set(t.channelId,t.seq),n.pendingReplay&&=!1}t.type===`channel.snapshot`&&t.channelId?(g.set(t.channelId,typeof t.seq==`number`?t.seq:0),n.pendingReplay=!1,a.ingest(t),l.applyEvent(t),l.applySnapshot(t.payload),a.loadHistory(t.channelId)):(a.ingest(t),l.applyEvent(t)),(t.type===`hitl.request`||t.type===`hitl.resolved`)&&u.applyEnvelope(t),typeof t.seq==`number`&&t.seq>0&&t.channelId&&(n.cursors[t.channelId]=t.seq,e.updateCursor(t.channelId,t.seq)),p.emit(t)},(e,t)=>{n.state=e,n.retryCount=t},()=>{n.pendingReplay=!0},()=>{n.lastDataAt=Date.now()});h=e,globalThis.__workshopWs=h}return t(()=>i.token,e=>{h instanceof f&&(h.userToken=e)},{immediate:!0}),r(()=>{X++,!Y&&(Y=o(()=>{h?.ping(),h?.checkStale()},15e3))}),e(()=>{--X<=0&&Y&&(clearInterval(Y),Y=null)}),{subscribe:e=>{let t=a.lastSeq(e);h?.subscribe(e,t>0?t:void 0)},unsubscribe:e=>{h&&(h.unsubscribe(e),h.refCount(e)===0&&a.clear(e))},ensureConnected:()=>{h?.ensureConnected()},conn:n}}export{_ as a,S as c,z as d,j as f,O as i,A as l,d as m,J as n,g as o,m as p,q as r,y as s,Z as t,w as u};
@@ -1 +1 @@
1
- {"id":"e5bb1803-86d9-43b3-85be-dc787dc9a978","timestamp":1788626985747}
1
+ {"id":"88479a5b-ce6a-400f-9737-1cc9f54b1fe5","timestamp":1788676051795}
@@ -0,0 +1 @@
1
+ {"id":"88479a5b-ce6a-400f-9737-1cc9f54b1fe5","timestamp":1788676051795,"prerendered":[]}
@@ -0,0 +1 @@
1
+ .page[data-v-0726e755]{padding:4px}.head[data-v-0726e755]{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}h2[data-v-0726e755]{margin:0 0 4px}.sub[data-v-0726e755]{opacity:.55;margin:0;font-size:12px}.toolbar[data-v-0726e755]{align-items:center;gap:12px;margin-bottom:12px;display:flex}.admin-note[data-v-0726e755]{color:var(--ink-faint);align-items:center;gap:5px;font-size:11px;display:inline-flex}.grid[data-v-0726e755]{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;display:grid}.card[data-v-0726e755]{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-panel);transition:border-color var(--transition-fast);flex-direction:column;gap:8px;padding:14px;display:flex}.card[data-v-0726e755]:hover{border-color:var(--line-strong)}.card-head[data-v-0726e755]{align-items:center;gap:8px;display:flex}.name[data-v-0726e755]{text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:15px;font-weight:600;overflow:hidden}.vis-tag[data-v-0726e755]{margin-right:2px}.owner[data-v-0726e755]{color:var(--ink-faint);font-size:11px}.desc[data-v-0726e755]{color:var(--ink-soft);margin:0;font-size:12px}.member-line[data-v-0726e755]{align-items:center;gap:6px;font-size:12px;display:flex}.lead-name[data-v-0726e755]{font-weight:500}.count[data-v-0726e755]{font-family:var(--font-mono);color:var(--ink-faint);font-size:11px}.scenario[data-v-0726e755]{font-family:var(--font-mono);color:var(--ink-faint);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:10.5px;line-height:1.5;display:-webkit-box;overflow:hidden}.card-foot[data-v-0726e755]{align-items:center;gap:6px;margin-top:2px;display:flex}.ws[data-v-0726e755]{max-width:60%;font-family:var(--font-mono);color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:4px;font-size:10.5px;display:inline-flex;overflow:hidden}.spacer[data-v-0726e755]{flex:auto}.card.placeholder[data-v-0726e755]{opacity:.55;cursor:pointer;border-style:dashed;justify-content:center;align-items:center;min-height:160px;font-size:13px}.big[data-v-0726e755]{font-size:28px}
@@ -0,0 +1 @@
1
+ import{C as e,K as t,U as n,W as r,q as ee}from"./rqZ-1SoP.js";import{C as i,G as a,H as o,Ht as s,St as c,Wt as l,a as u,b as d,c as te,f,ft as p,g as m,h,m as ne,mt as g,p as _,rt as v,t as y,z as re}from"./BSCpFtzG.js";import{r as b}from"./D-Ca4BGY.js";import{t as ie}from"./G0qIw7Gq2.js";import{t as ae}from"./arUY5dyq2.js";import{t as oe}from"./C6m-kenn.js";import{t as se}from"./Bmpvki7M.js";var ce={class:`page`},le={class:`head`},ue={class:`h1`},de={class:`sub`},fe={class:`head-actions`},pe=[`title`],x={class:`live-txt mono`},S={class:`filter-card`},C={class:`flt`},w={value:``},T=[`value`],E={class:`flt`},D={value:``},O=[`value`],k={class:`flt`},A={value:``},j=[`value`],M={class:`flt`},N={value:``},P={value:`user`},F={value:`system`},I={class:`flt`},L={value:``},R=[`value`],z={class:`flt flt-grow`},B=[`placeholder`],me=[`disabled`],he={class:`table-card`},ge={key:0,class:`err`},_e={class:`log-table`},ve={class:`th-time`},ye={class:`th-src`},be={class:`th-kind`},xe={class:`th-scope`},Se={class:`th-detail`},Ce={class:`mono dim`},we={class:`actor`},Te={class:`summary`},Ee={class:`mono dim action`},De={class:`scope`},Oe=[`title`],ke=[`title`],Ae={key:2,class:`scope-chip`,title:`Recipe`},V={key:3,class:`dim`},je={class:`detail-cell`},Me=[`onClick`],Ne={key:1,class:`dim`},Pe={key:0,colspan:`7`,class:`empty`},Fe={key:1,class:`detail-box mono`},Ie={class:`modal`},Le={class:`m-title`},Re={class:`m-f`},ze=[`placeholder`],Be={class:`m-grid`},Ve={class:`m-f`},He={value:``},Ue=[`value`],We={class:`m-f`},Ge={value:``},Ke=[`value`],qe={class:`m-f`},Je={value:``},Ye=[`value`],Xe={key:0,class:`err`},Ze={class:`m-actions`},Qe=[`disabled`],H=y(i({name:`OpsLogsPage`,setup(i){let y=t=>e().$i18n.t(t),H=oe(),$e=ae(),U=se(),et=[`write`,`manual`,`alarm`,`line`,`recipe`,`rollback`,`daq`,`system`],W=p({lineId:``,productId:``,recipeId:``,actorKind:``,kind:``,text:``}),G=g(null),K=g(!1),q=p({summary:``,lineId:``,productId:``,recipeId:``}),tt=f(()=>!!(W.lineId||W.productId||W.recipeId||W.actorKind||W.kind||W.text.trim())),J=f(()=>H.products.filter(e=>!W.lineId||e.lineId===W.lineId)),Y=f(()=>H.recipes.filter(e=>(!W.lineId||e.lineId===W.lineId)&&(!W.productId||e.productId===W.productId)));function X(){U.fetchLogs({lineId:W.lineId,productId:W.productId,recipeId:W.recipeId,actorKind:W.actorKind,kind:W.kind,q:W.text.trim(),limit:300}),G.value=null}function nt(){W.lineId=``,W.productId=``,W.recipeId=``,W.actorKind=``,W.kind=``,W.text=``,X()}function rt(){q.summary=``,q.lineId=W.lineId,q.productId=W.productId,q.recipeId=W.recipeId,K.value=!0}async function it(){try{await U.postManual({summary:q.summary.trim(),lineId:q.lineId,productId:q.productId,recipeId:q.recipeId}),b.success(y(`logs.mOk`)),K.value=!1,X()}catch(e){b.error(ie(e))}}function at(e){G.value=G.value===e?null:e}function ot(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function st(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return e;let n=e=>String(e).padStart(2,`0`);return`${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function ct(e){return e===`agent`?`Agent`:y(e===`user`?`logs.src.user`:`logs.src.system`)}function lt(e){return e?y(`logs.kind.${e}`):`—`}function Z(e){return H.lines.find(t=>t.id===e)?.name??``}function Q(e){return H.products.find(t=>t.id===e)?.name??``}function $(e){return H.recipes.find(t=>t.id===e)?.name??``}return re(()=>{$e.ensureConnected(),U.ensureLive(),H.load(),X()}),(e,i)=>(o(),m(`div`,ce,[_(`header`,le,[_(`div`,null,[_(`h1`,ue,[i[16]||=_(`span`,{class:`i-tabler-list-details`},null,-1),d(` `+l(e.$t(`logs.title`)),1)]),_(`p`,de,l(e.$t(`logs.sub`)),1)]),_(`div`,fe,[_(`span`,{class:`live-dot`,title:e.$t(`logs.liveHint`)},null,8,pe),_(`span`,x,l(e.$t(`logs.live`))+` `+l(c(U).recent.length),1),_(`button`,{class:`pill-btn`,onClick:rt},[i[17]||=_(`span`,{class:`i-tabler-plus`},null,-1),d(` `+l(e.$t(`logs.manual`)),1)])])]),_(`section`,S,[_(`label`,C,[_(`span`,null,l(e.$t(`logs.fLine`)),1),v(_(`select`,{"onUpdate:modelValue":i[0]||=e=>W.lineId=e,class:`inp-sel`,onChange:i[1]||=e=>{W.productId=``,W.recipeId=``}},[_(`option`,w,l(e.$t(`logs.all`)),1),(o(!0),m(u,null,a(c(H).lines,e=>(o(),m(`option`,{key:e.id,value:e.id},l(e.name),9,T))),128))],544),[[n,W.lineId]])]),_(`label`,E,[_(`span`,null,l(e.$t(`logs.fProduct`)),1),v(_(`select`,{"onUpdate:modelValue":i[2]||=e=>W.productId=e,class:`inp-sel`,onChange:i[3]||=e=>W.recipeId=``},[_(`option`,D,l(e.$t(`logs.all`)),1),(o(!0),m(u,null,a(J.value,e=>(o(),m(`option`,{key:e.id,value:e.id},l(e.name),9,O))),128))],544),[[n,W.productId]])]),_(`label`,k,[i[18]||=_(`span`,null,`Recipe`,-1),v(_(`select`,{"onUpdate:modelValue":i[4]||=e=>W.recipeId=e,class:`inp-sel`},[_(`option`,A,l(e.$t(`logs.all`)),1),(o(!0),m(u,null,a(Y.value,e=>(o(),m(`option`,{key:e.id,value:e.id},l(e.name),9,j))),128))],512),[[n,W.recipeId]])]),_(`label`,M,[_(`span`,null,l(e.$t(`logs.fSource`)),1),v(_(`select`,{"onUpdate:modelValue":i[5]||=e=>W.actorKind=e,class:`inp-sel`},[_(`option`,N,l(e.$t(`logs.all`)),1),_(`option`,P,l(e.$t(`logs.src.user`)),1),i[19]||=_(`option`,{value:`agent`},` Agent `,-1),_(`option`,F,l(e.$t(`logs.src.system`)),1)],512),[[n,W.actorKind]])]),_(`label`,I,[_(`span`,null,l(e.$t(`logs.fKind`)),1),v(_(`select`,{"onUpdate:modelValue":i[6]||=e=>W.kind=e,class:`inp-sel`},[_(`option`,L,l(e.$t(`logs.all`)),1),(o(),m(u,null,a(et,t=>_(`option`,{key:t,value:t},l(e.$t(`logs.kind.${t}`)),9,R)),64))],512),[[n,W.kind]])]),_(`label`,z,[_(`span`,null,l(e.$t(`logs.fKeyword`)),1),v(_(`input`,{"onUpdate:modelValue":i[7]||=e=>W.text=e,class:`inp-sel`,type:`search`,placeholder:e.$t(`logs.fKeywordPh`),onKeydown:t(X,[`enter`])},null,40,B),[[r,W.text]])]),_(`button`,{class:`pill-btn`,disabled:c(U).loading.list,onClick:X},[i[20]||=_(`span`,{class:`i-tabler-search`},null,-1),d(` `+l(e.$t(`logs.query`)),1)],8,me),tt.value?(o(),m(`button`,{key:0,class:`mini-btn`,onClick:nt},l(e.$t(`logs.reset`)),1)):h(``,!0)]),_(`section`,he,[c(U).error.list?(o(),m(`p`,ge,l(c(U).error.list),1)):h(``,!0),_(`table`,_e,[_(`thead`,null,[_(`tr`,null,[_(`th`,ve,l(e.$t(`logs.thTime`)),1),_(`th`,ye,l(e.$t(`logs.fSource`)),1),_(`th`,null,l(e.$t(`logs.thActor`)),1),_(`th`,be,l(e.$t(`logs.fKind`)),1),_(`th`,null,l(e.$t(`logs.thSummary`)),1),_(`th`,xe,l(e.$t(`logs.thScope`)),1),_(`th`,Se,l(e.$t(`logs.thDetail`)),1)])]),_(`tbody`,null,[(o(!0),m(u,null,a(c(U).results,t=>(o(),m(`tr`,{key:`${t.id}-${t.at}`},[_(`td`,Ce,l(st(t.at)),1),_(`td`,null,[_(`span`,{class:s([`src-badge`,t.actorKind])},l(ct(t.actorKind)),3)]),_(`td`,we,l(t.actorName||t.actor||`—`),1),_(`td`,null,[_(`span`,{class:s([`kind-chip`,t.kind])},l(lt(t.kind)),3)]),_(`td`,Te,[d(l(t.summary)+` `,1),_(`small`,Ee,l(t.action),1)]),_(`td`,De,[Z(t.lineId)?(o(),m(`span`,{key:0,class:`scope-chip`,title:e.$t(`logs.fLine`)},l(Z(t.lineId)),9,Oe)):h(``,!0),Q(t.productId)?(o(),m(`span`,{key:1,class:`scope-chip`,title:e.$t(`logs.fProduct`)},l(Q(t.productId)),9,ke)):h(``,!0),$(t.recipeId)?(o(),m(`span`,Ae,l($(t.recipeId)),1)):h(``,!0),!t.lineId&&!t.productId&&!t.recipeId?(o(),m(`span`,V,`—`)):h(``,!0)]),_(`td`,je,[t.detailJson&&t.detailJson!==`{}`?(o(),m(`button`,{key:0,class:`mini-btn`,onClick:e=>at(t)},l(G.value===t?e.$t(`logs.fold`):e.$t(`logs.expand`)),9,Me)):(o(),m(`span`,Ne,`—`))])]))),128)),_(`tr`,null,[c(U).results.length===0?(o(),m(`td`,Pe,[c(U).loading.list?(o(),m(u,{key:0},[d(l(e.$t(`logs.loading`)),1)],64)):(o(),m(u,{key:1},[d(l(e.$t(`logs.empty`)),1)],64))])):h(``,!0)])])]),G.value?(o(),m(`pre`,Fe,l(ot(G.value.detailJson)),1)):h(``,!0)]),(o(),ne(te,{to:`body`},[K.value?(o(),m(`div`,{key:0,class:`modal-mask`,onClick:i[15]||=ee(e=>K.value=!1,[`self`])},[_(`div`,Ie,[_(`h3`,Le,l(e.$t(`logs.manual`)),1),_(`label`,Re,[_(`span`,null,l(e.$t(`logs.mSummary`))+` *`,1),v(_(`textarea`,{"onUpdate:modelValue":i[8]||=e=>q.summary=e,rows:`3`,placeholder:e.$t(`logs.mSummaryPh`)},null,8,ze),[[r,q.summary]])]),_(`div`,Be,[_(`label`,Ve,[_(`span`,null,l(e.$t(`logs.fLine`)),1),v(_(`select`,{"onUpdate:modelValue":i[9]||=e=>q.lineId=e,class:`inp-sel`,onChange:i[10]||=e=>{q.productId=``,q.recipeId=``}},[_(`option`,He,l(e.$t(`logs.all`)),1),(o(!0),m(u,null,a(c(H).lines,e=>(o(),m(`option`,{key:e.id,value:e.id},l(e.name),9,Ue))),128))],544),[[n,q.lineId]])]),_(`label`,We,[_(`span`,null,l(e.$t(`logs.fProduct`)),1),v(_(`select`,{"onUpdate:modelValue":i[11]||=e=>q.productId=e,class:`inp-sel`,onChange:i[12]||=e=>q.recipeId=``},[_(`option`,Ge,l(e.$t(`logs.all`)),1),(o(!0),m(u,null,a(J.value,e=>(o(),m(`option`,{key:e.id,value:e.id},l(e.name),9,Ke))),128))],544),[[n,q.productId]])]),_(`label`,qe,[i[21]||=_(`span`,null,`Recipe`,-1),v(_(`select`,{"onUpdate:modelValue":i[13]||=e=>q.recipeId=e,class:`inp-sel`},[_(`option`,Je,l(e.$t(`logs.all`)),1),(o(!0),m(u,null,a(Y.value,e=>(o(),m(`option`,{key:e.id,value:e.id},l(e.name),9,Ye))),128))],512),[[n,q.recipeId]])])]),c(U).error.post?(o(),m(`p`,Xe,l(c(U).error.post),1)):h(``,!0),_(`div`,Ze,[_(`button`,{class:`ghost-btn`,onClick:i[14]||=e=>K.value=!1},l(e.$t(`common.cancel`)),1),_(`button`,{class:`pill-btn`,disabled:c(U).loading.posting||!q.summary.trim(),onClick:it},l(e.$t(`logs.mSubmit`)),9,Qe)])])])):h(``,!0)]))]))}}),[[`__scopeId`,`data-v-f1645882`]]);export{H as default};
@@ -0,0 +1 @@
1
+ .page[data-v-6b2d097f]{padding:4px}h1[data-v-6b2d097f]{letter-spacing:-.015em;margin:2px 0 4px;font-size:30px;font-weight:400}.sub[data-v-6b2d097f]{opacity:.6;margin:0;font-size:12.5px}.mono[data-v-6b2d097f]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.dim[data-v-6b2d097f]{opacity:.55}.badges[data-v-6b2d097f]{gap:8px;display:flex}.badge[data-v-6b2d097f]{letter-spacing:.05em;color:var(--ink-soft);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:3px 10px;font-size:11px}.ctrl-card[data-v-6b2d097f]{flex-direction:column;gap:11px;margin-bottom:14px;padding:12px 18px 11px;display:flex}.ctrl-row[data-v-6b2d097f]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;display:flex}.ctrl-left[data-v-6b2d097f]{align-items:center;gap:14px;display:flex}.aw-pill.running[data-v-6b2d097f]{background:var(--accent)}.cycle[data-v-6b2d097f]{color:var(--ink-faint);align-items:center;gap:6px;font-size:12px;display:inline-flex}.cycle input[data-v-6b2d097f]{width:84px;color:var(--ink);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:4px 8px}.ctrl-metrics[data-v-6b2d097f]{color:var(--ink-soft);align-items:center;gap:8px;font-size:11.5px;display:flex}.ctrl-metrics .sep[data-v-6b2d097f]{opacity:.4}.ctrl-metrics .warn[data-v-6b2d097f]{color:var(--tone-warning-dot)}.line-strip[data-v-6b2d097f]{border-top:1px solid var(--divider-hair);align-items:center;gap:12px;padding-top:10px;display:flex}.strip-label[data-v-6b2d097f]{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-fainter);flex:none;align-items:center;gap:6px;font-size:10.5px;display:inline-flex}.strip-label small[data-v-6b2d097f]{color:var(--ink-faint);font-size:10px}.strip-scroll[data-v-6b2d097f]{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;flex:auto;gap:8px;min-width:0;padding-bottom:2px;display:flex;overflow-x:auto}.strip-scroll[data-v-6b2d097f]::-webkit-scrollbar{height:4px}.strip-scroll[data-v-6b2d097f]::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:2px}.strip-scroll[data-v-6b2d097f]::-webkit-scrollbar-track{background:0 0}.line-pill[data-v-6b2d097f]{color:var(--ink-soft);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-pill);flex:none;align-items:center;gap:7px;padding:4px 12px;font-size:11.5px;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.line-pill .lp-dot[data-v-6b2d097f]{border:1.5px solid var(--lc,var(--ink-fainter));opacity:.55;border-radius:50%;width:7px;height:7px}.line-pill b[data-v-6b2d097f]{font-weight:600}.line-pill small[data-v-6b2d097f]{color:var(--ink-fainter);font-size:10.5px}.line-pill[data-v-6b2d097f]:hover{border-color:var(--lc,var(--accent));color:var(--ink)}.line-pill.on[data-v-6b2d097f]{color:var(--ink);background:color-mix(in srgb, var(--lc) 10%, transparent);border-color:color-mix(in srgb, var(--lc) 50%, transparent)}.line-pill.on .lp-dot[data-v-6b2d097f]{background:var(--lc);opacity:1;border-color:#0000}.line-pill.on .lp-run[data-v-6b2d097f]{color:color-mix(in srgb, var(--lc) 75%, var(--ink))}@media (prefers-reduced-motion:no-preference){.line-pill.on .lp-dot[data-v-6b2d097f]{box-shadow:0 0 7px color-mix(in srgb, var(--lc) 75%, transparent);animation:1.8s ease-in-out infinite lpPulse-6b2d097f}}@keyframes lpPulse-6b2d097f{0%,to{box-shadow:0 0 3px color-mix(in srgb, var(--lc) 55%, transparent)}50%{box-shadow:0 0 9px color-mix(in srgb, var(--lc) 85%, transparent)}}.table-card[data-v-6b2d097f]{overflow-x:auto}.nodes-table[data-v-6b2d097f]{border-collapse:collapse;width:100%;font-size:12.5px}.nodes-table tbody tr[data-v-6b2d097f]{content-visibility:auto;contain-intrinsic-size:auto 42px}.nodes-table td[data-v-6b2d097f],.nodes-table th[data-v-6b2d097f]{text-align:left;border-bottom:1px solid var(--divider-hair);padding:9px 12px}.nodes-table th[data-v-6b2d097f]{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--line-strong);font-size:11px;font-weight:600}.nodes-table td b[data-v-6b2d097f]{margin-left:8px}.ch[data-v-6b2d097f]{color:var(--ink-faint);margin-top:2px;font-size:10px;display:block}.right[data-v-6b2d097f]{text-align:right}.val[data-v-6b2d097f]{font-size:13px}.val small[data-v-6b2d097f]{color:var(--ink-faint);margin-left:3px}.val.stale[data-v-6b2d097f]{opacity:.45}.val.val-alarm[data-v-6b2d097f]{color:var(--tone-danger-dot);font-weight:700}.ops-panels[data-v-6b2d097f]{grid-template-columns:minmax(320px,5fr) minmax(320px,7fr);gap:10px;margin:0 0 10px;display:grid}@media (width<=1100px){.ops-panels[data-v-6b2d097f]{grid-template-columns:1fr}}.ops-panel[data-v-6b2d097f]{background:var(--surface-glass);border:1px solid var(--glass-line);min-width:0;-webkit-backdrop-filter:blur(var(--aurora-blur)) saturate(1.15);border-radius:10px}.ops-panel.alarm-panel.live[data-v-6b2d097f]{border-color:color-mix(in srgb, var(--tone-danger-dot) 40%, var(--glass-line))}.panel-head[data-v-6b2d097f]{color:var(--ink-soft);border-bottom:1px solid var(--glass-line);align-items:center;gap:7px;padding:8px 12px;font-size:12.5px;display:flex}.panel-head .bell[data-v-6b2d097f]{color:var(--tone-danger-dot)}.panel-head .cnt[data-v-6b2d097f]{color:var(--ink-faint);margin-left:auto;font-size:11px}.panel-head .cnt.hot[data-v-6b2d097f]{color:var(--tone-danger-dot);font-weight:700}.panel-link[data-v-6b2d097f]{color:var(--tone-info-dot);align-items:center;gap:3px;margin-left:auto;font-size:11.5px;text-decoration:none;display:inline-flex}.panel-head .cnt+.panel-link[data-v-6b2d097f]{margin-left:12px}.panel-body[data-v-6b2d097f]{flex-direction:column;gap:5px;max-height:168px;padding:8px 12px;display:flex;overflow-y:auto}.panel-empty[data-v-6b2d097f]{color:var(--ink-faint);margin:4px 0;font-size:12px}.alarm-row[data-v-6b2d097f]{color:var(--tone-danger-dot);background:var(--tone-danger-bg);border:1px solid color-mix(in srgb, var(--tone-danger-dot) 35%, transparent);border-radius:7px;align-items:center;gap:7px;padding:5px 8px;font-size:12px;display:flex}.alarm-row .tri[data-v-6b2d097f]{flex:none}.alarm-row b[data-v-6b2d097f]{color:var(--ink)}.alarm-row .esc[data-v-6b2d097f]{color:var(--tone-danger-dot)}.alarm-row .ack[data-v-6b2d097f]{margin-left:auto}.evt-row[data-v-6b2d097f]{border-radius:6px;align-items:center;gap:7px;padding:4px 6px;font-size:12px;display:flex}.evt-row[data-v-6b2d097f]:hover{background:var(--frost-bg)}.evt-row .t[data-v-6b2d097f]{flex:none;font-size:11px}.evt-row .txt[data-v-6b2d097f]{min-width:0;color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.src-badge[data-v-6b2d097f]{border:1px solid var(--glass-line);color:var(--ink-faint);border-radius:99px;flex:none;padding:1px 6px;font-size:10px}.src-badge.agent[data-v-6b2d097f]{color:var(--tone-info-dot);border-color:color-mix(in srgb, var(--tone-info-dot) 40%, transparent)}.src-badge.user[data-v-6b2d097f]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 40%, transparent)}.src-badge.system[data-v-6b2d097f]{color:var(--ink-faint)}.kind-chip[data-v-6b2d097f]{color:var(--ink-soft);background:var(--frost-bg);border-radius:5px;flex:none;padding:1px 6px;font-size:10px}.kind-chip.alarm[data-v-6b2d097f]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.kind-chip.write[data-v-6b2d097f]{color:var(--tone-info-dot)}.kind-chip.rollback[data-v-6b2d097f]{color:var(--tone-warning-dot)}.trend-cell[data-v-6b2d097f]{width:128px}.trend[data-v-6b2d097f]{width:120px;height:26px;display:block}.trend .trace[data-v-6b2d097f]{fill:none;stroke:var(--tone-info-dot);stroke-width:1.4px}.trend .trace.alarm[data-v-6b2d097f]{stroke:var(--tone-danger-dot)}.trend .lim[data-v-6b2d097f]{stroke:color-mix(in srgb, var(--tone-warning-dot) 62%, transparent);stroke-width:1px;stroke-dasharray:3 3}.trend .lim.max[data-v-6b2d097f]{stroke:color-mix(in srgb, var(--tone-danger-dot) 55%, transparent)}.st-pill[data-v-6b2d097f]{font-family:var(--font-mono);letter-spacing:.04em;border-radius:var(--radius-pill);padding:2px 9px;font-size:10.5px;display:inline-block}.st-pill.ok[data-v-6b2d097f]{color:var(--tone-success-dot);background:var(--tone-success-bg)}.st-pill.warn[data-v-6b2d097f]{color:var(--tone-warning-dot);background:var(--tone-warning-bg)}.st-pill.alarm[data-v-6b2d097f]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}tr.row-recipe-alarm[data-v-6b2d097f]{background:color-mix(in srgb, var(--tone-danger-dot,#ff6b6b) 8%, transparent)}tr.row-recipe-alarm td[data-v-6b2d097f]:first-child{box-shadow:inset 3px 0 0 var(--tone-danger-dot,#ff6b6b)}.st-pill.offline[data-v-6b2d097f],.st-pill.disabled[data-v-6b2d097f],.st-pill.idle[data-v-6b2d097f],.st-pill.unassigned[data-v-6b2d097f]{color:var(--tone-neutral-dot);background:var(--tone-neutral-bg)}.drv-tag[data-v-6b2d097f]{font-family:var(--font-mono);border:1px solid var(--line);border-radius:var(--radius-chip);color:var(--ink-soft);padding:2px 7px;font-size:10.5px}.drv-tag.planned[data-v-6b2d097f]{opacity:.55;border-style:dashed}.console-link[data-v-6b2d097f]{color:var(--accent);align-items:center;gap:5px;font-size:12.5px;display:inline-flex}.node-toggle[data-v-6b2d097f]{border:1px solid var(--line);border-radius:var(--radius-chip);color:var(--ink);cursor:pointer;background:0 0;align-items:center;gap:4px;margin-right:12px;padding:2px 9px;font-size:11.5px;transition:border-color .15s,background .15s;display:inline-flex}.node-toggle[data-v-6b2d097f]:hover{border-color:var(--accent);background:var(--hover-tint)}.node-toggle.off[data-v-6b2d097f]{color:var(--ink-soft);opacity:.8;border-style:dashed}.err[data-v-6b2d097f]{color:var(--tone-danger-dot);margin-top:14px;font-size:13px}@media (prefers-reduced-motion:no-preference){.nodes-table tbody tr[data-v-6b2d097f]:hover{background:var(--hover-tint)}}.infra-banner[data-v-6b2d097f]{color:var(--tone-warning-dot);background:var(--tone-warning-bg);border:1px solid color-mix(in srgb, var(--tone-warning-dot) 40%, transparent);border-radius:var(--radius-chip);align-items:center;gap:10px;margin-bottom:14px;padding:10px 14px;display:flex}.infra-banner.good[data-v-6b2d097f]{color:var(--tone-success-dot);background:var(--tone-success-bg);border-color:color-mix(in srgb, var(--tone-success-dot) 40%, transparent)}.infra-banner .txt[data-v-6b2d097f]{flex:auto;font-size:12.5px;line-height:1.5}.infra-banner .txt a[data-v-6b2d097f]{color:var(--accent);text-decoration:underline}.infra-banner .txt b[data-v-6b2d097f]{font-weight:600}.infra-banner .txt small[data-v-6b2d097f]{opacity:.75;margin-left:8px;font-size:10.5px}.infra-banner .pill-btn[data-v-6b2d097f]{color:var(--paper-raised);flex:none;text-decoration:none}.alarm-bar[data-v-6b2d097f]{color:var(--tone-danger-dot);background:var(--tone-danger-bg);border:1px solid color-mix(in srgb, var(--tone-danger-dot) 40%, transparent);border-radius:var(--radius-chip);align-items:center;gap:12px;margin-bottom:14px;padding:8px 14px;display:flex}.bar-label[data-v-6b2d097f]{letter-spacing:.05em;text-transform:uppercase;flex:none;align-items:center;gap:6px;font-size:11px;font-weight:600;display:inline-flex}.bar-label .bell[data-v-6b2d097f]{animation:1.6s ease-in-out infinite bellShake-6b2d097f}@media (prefers-reduced-motion:reduce){.bar-label .bell[data-v-6b2d097f]{animation:none}}@keyframes bellShake-6b2d097f{0%,80%,to{transform:rotate(0)}85%{transform:rotate(12deg)}90%{transform:rotate(-10deg)}95%{transform:rotate(6deg)}}.alarm-scroll[data-v-6b2d097f]{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;flex:auto;gap:8px;min-width:0;display:flex;overflow-x:auto}.alarm-item[data-v-6b2d097f]{color:var(--ink-soft);background:var(--paper-deep);border:1px solid color-mix(in srgb, var(--tone-danger-dot) 30%, transparent);border-radius:var(--radius-pill);flex:none;align-items:center;gap:8px;padding:4px 10px;font-size:11.5px;display:inline-flex}.alarm-item b[data-v-6b2d097f]{font-weight:600}.alarm-item .dim[data-v-6b2d097f]{opacity:.6}.alarm-item .esc[data-v-6b2d097f]{color:var(--tone-warning-dot)}.alarm-item .ack[data-v-6b2d097f]{color:var(--paper-raised);background:var(--tone-danger-dot);border-color:#0000;padding:2px 9px}.alarm-item .ack[data-v-6b2d097f]:hover{opacity:.85;color:var(--paper-raised);border-color:#0000}.ctrl-right[data-v-6b2d097f]{align-items:center;gap:12px;display:flex}.add-btn[data-v-6b2d097f]{padding:8px 16px;font-size:13px}.modal-mask[data-v-6b2d097f]{z-index:50;background:var(--scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal[data-v-6b2d097f]{background:var(--surface-glass-strong);width:640px;max-width:94vw;max-height:88vh;-webkit-backdrop-filter:var(--aurora-blur);border:1px solid var(--glass-line);border-radius:var(--radius-panel);box-shadow:var(--glass-edge), var(--shadow-float);padding:22px 24px;overflow-y:auto}.m-title[data-v-6b2d097f]{margin:0 0 14px;font-size:17px}.seg-row[data-v-6b2d097f]{gap:8px;margin-bottom:14px;display:flex}.seg[data-v-6b2d097f]{cursor:pointer;color:var(--ink-faint);background:var(--paper-deep);border:1px solid var(--line);border-radius:var(--radius-chip);flex:1;padding:8px 0;font-size:13px}.seg.on[data-v-6b2d097f]{color:var(--on-accent);background:var(--accent);border-color:var(--accent);font-weight:600}.f-grid[data-v-6b2d097f]{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px;display:grid}.driver-form[data-v-6b2d097f]{grid-template-columns:repeat(3,1fr)}.cal-form[data-v-6b2d097f]{grid-template-columns:2fr 1fr;align-items:end}.f[data-v-6b2d097f]{color:var(--ink-faint);flex-direction:column;gap:4px;font-size:11.5px;display:flex}.f em[data-v-6b2d097f]{color:var(--tone-danger-dot);margin-left:3px;font-style:normal}.inp[data-v-6b2d097f]{width:100%;color:var(--ink);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:6px 9px;font-size:12.5px}.hint[data-v-6b2d097f]{color:var(--ink-fainter);font-size:10px}.test-row[data-v-6b2d097f]{align-items:center;gap:10px;margin:6px 0 4px;display:flex}.pill-btn[data-v-6b2d097f]{cursor:pointer;color:var(--paper-raised);background:var(--accent);border:1px solid var(--accent);border-radius:var(--radius-pill);padding:7px 14px;font-size:12.5px}.pill-btn[data-v-6b2d097f]:disabled{opacity:.5;cursor:default}.test-result[data-v-6b2d097f]{font-family:var(--font-mono);font-size:11px}.test-result.ok[data-v-6b2d097f]{color:var(--tone-success-dot)}.test-result.bad[data-v-6b2d097f]{color:var(--tone-danger-dot)}.m-err[data-v-6b2d097f]{color:var(--tone-danger-dot);margin:8px 0 0;font-size:12px}.m-actions[data-v-6b2d097f]{justify-content:flex-end;gap:10px;margin-top:16px;display:flex}.aw-pill.outline[data-v-6b2d097f]{color:var(--ink);background:var(--paper-raised);border-color:var(--line-strong)}.sec-label[data-v-6b2d097f]{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin:14px 0 6px;font-size:11px;font-weight:600}.tpl-table[data-v-6b2d097f]{border-collapse:collapse;width:100%;font-size:12.5px}.tpl-table td[data-v-6b2d097f]{border-bottom:1px solid var(--divider-hair);padding:7px 8px}.tpl-table td b[data-v-6b2d097f]{margin-right:8px}.tpl-table .range[data-v-6b2d097f]{color:var(--ink-soft);font-size:11.5px}.tpl-table .empty[data-v-6b2d097f]{color:var(--ink-fainter);text-align:center;padding:14px 0;font-size:12px}.tpl-table .actions[data-v-6b2d097f]{white-space:nowrap}.mini-btn[data-v-6b2d097f]{cursor:pointer;color:var(--ink-soft);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:3px 10px;font-size:11.5px}.mini-btn.danger[data-v-6b2d097f]{color:var(--tone-danger-dot)}.mini-btn[data-v-6b2d097f]:hover{border-color:var(--accent);color:var(--accent)}.tbl-toolbar[data-v-6b2d097f]{border-bottom:1px solid var(--divider-hair);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:10px;padding:11px 14px;display:flex}.filters[data-v-6b2d097f]{flex-wrap:wrap;align-items:flex-end;gap:9px;display:flex}.flt[data-v-6b2d097f]{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-fainter);flex-direction:column;gap:3px;font-size:10px;display:flex}.inp-sel[data-v-6b2d097f]{min-width:112px;color:var(--ink);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:4px 8px;font-size:11.5px;transition:border-color .15s}.inp-sel[data-v-6b2d097f]:focus{border-color:var(--accent);outline:none}.clear-btn[data-v-6b2d097f]{margin-bottom:1px}.flt-search[data-v-6b2d097f]{width:168px;min-width:0}.flt-search[data-v-6b2d097f]::placeholder{color:var(--ink-fainter)}.count[data-v-6b2d097f]{color:var(--ink-faint);padding-bottom:4px;font-size:11px}.line-sel[data-v-6b2d097f]{max-width:120px;color:var(--ink-soft);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:3px 6px;font-size:10.5px;transition:border-color .15s}.line-sel[data-v-6b2d097f]:focus{border-color:var(--accent);outline:none}.run-pill[data-v-6b2d097f]{color:var(--ink-fainter);border:1px solid var(--line);border-radius:var(--radius-pill);align-items:center;gap:6px;padding:2px 9px;font-size:10.5px;display:inline-flex}.run-pill .rp-dot[data-v-6b2d097f]{opacity:.7;border:1.5px solid;border-radius:50%;width:6px;height:6px}.run-pill.na[data-v-6b2d097f]{opacity:.75;border-style:dashed}.run-pill.on[data-v-6b2d097f]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 40%, transparent);background:var(--tone-success-bg)}.run-pill.on .rp-dot[data-v-6b2d097f]{background:var(--tone-success-dot);opacity:1;border-color:#0000}@media (prefers-reduced-motion:no-preference){.run-pill.on .rp-dot[data-v-6b2d097f]{animation:1.8s ease-in-out infinite rpPulse-6b2d097f}}@keyframes rpPulse-6b2d097f{0%,to{box-shadow:0 0 2px color-mix(in srgb, var(--tone-success-dot) 55%, transparent)}50%{box-shadow:0 0 7px color-mix(in srgb, var(--tone-success-dot) 85%, transparent)}}.prod-cell[data-v-6b2d097f]{max-width:170px}.prod-cell b[data-v-6b2d097f]{text-overflow:ellipsis;white-space:nowrap;font-weight:600;display:block;overflow:hidden}.prod-cell small[data-v-6b2d097f]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;font-size:10px;display:block;overflow:hidden}.opt-card[data-v-6b2d097f]{padding:0}.opt-head[data-v-6b2d097f]{width:100%;color:var(--ink);cursor:pointer;background:0 0;border:0;align-items:center;gap:9px;padding:12px 16px;font-size:13.5px;display:flex}.opt-head>.i-tabler-flask[data-v-6b2d097f]{color:var(--tone-info-dot);font-size:16px}.opt-count[data-v-6b2d097f]{color:var(--tone-info-dot);background:var(--tone-info-bg);border-radius:999px;padding:1px 8px;font-size:10.5px}.opt-chevron[data-v-6b2d097f]{border-right:1.5px solid var(--ink-faint);border-bottom:1.5px solid var(--ink-faint);width:7px;height:7px;transition:transform var(--transition-base);margin-left:auto;transform:rotate(45deg)}.opt-chevron.open[data-v-6b2d097f]{transform:rotate(225deg)}.opt-body[data-v-6b2d097f]{visibility:hidden;opacity:0;flex-direction:column;gap:10px;max-height:0;padding:0 16px;transition:max-height .26s cubic-bezier(.22,.68,.36,1),opacity .2s,visibility .26s;display:flex;overflow:hidden}.opt-body.open[data-v-6b2d097f]{visibility:visible;opacity:1;max-height:64vh;padding-bottom:14px;overflow-y:auto}.opt-filters[data-v-6b2d097f]{align-items:center;gap:8px;display:flex}.opt-empty[data-v-6b2d097f]{color:var(--ink-fainter);font-size:11.5px}.opt-list[data-v-6b2d097f]{flex-direction:column;gap:7px;margin:0;padding:0;list-style:none;display:flex}.opt-row[data-v-6b2d097f]{background:var(--frost-bg);border:1px solid var(--glass-line);border-radius:10px;flex-direction:column;gap:5px;padding:9px 12px;display:flex}.opt-row.open[data-v-6b2d097f]{border-color:color-mix(in srgb, var(--tone-warning-dot) 36%, var(--glass-line))}.opt-row.rolled-back[data-v-6b2d097f]{border-color:color-mix(in srgb, var(--tone-danger-dot) 30%, var(--glass-line))}.opt-line1[data-v-6b2d097f]{align-items:center;gap:9px;min-width:0;display:flex}.opt-status[data-v-6b2d097f]{font-family:var(--font-mono);color:var(--ink-faint);border:1px solid var(--line-strong);border-radius:5px;flex:none;padding:1px 8px;font-size:9.5px}.opt-status.open[data-v-6b2d097f]{color:var(--tone-warning-dot);border-color:color-mix(in srgb, var(--tone-warning-dot) 45%, transparent)}.opt-status.judged-keep[data-v-6b2d097f]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 45%, transparent)}.opt-status.rolled-back[data-v-6b2d097f]{color:var(--tone-danger-dot);border-color:color-mix(in srgb, var(--tone-danger-dot) 45%, transparent)}.opt-node[data-v-6b2d097f]{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.opt-params[data-v-6b2d097f]{color:var(--tone-info-dot);flex:none;font-size:11px}.opt-time[data-v-6b2d097f]{color:var(--ink-fainter);flex:none;margin-left:auto;font-size:10px}.mini-act[data-v-6b2d097f]{color:var(--tone-info-dot);background:var(--tone-info-bg);cursor:pointer;border:0;border-radius:6px;flex:none;padding:2px 9px;font-size:10.5px}.mini-act.danger[data-v-6b2d097f]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.mini-act[data-v-6b2d097f]:disabled{opacity:.5;cursor:default}.opt-line2[data-v-6b2d097f]{color:var(--ink-faint);flex-wrap:wrap;gap:8px;font-size:10.5px;display:flex}.opt-judge.keep[data-v-6b2d097f],.opt-judge.rollback[data-v-6b2d097f],.opt-judge.uncertain[data-v-6b2d097f]{color:var(--ink-soft)}.opt-judge b[data-v-6b2d097f]{font-weight:600}.opt-open-hint[data-v-6b2d097f]{color:var(--tone-warning-dot)}.opt-agg[data-v-6b2d097f]{color:var(--ink-fainter)}.opt-series[data-v-6b2d097f]{flex-wrap:wrap;gap:10px;padding-top:4px;display:flex}.opt-ch[data-v-6b2d097f]{flex:180px;align-items:center;gap:8px;min-width:160px;display:flex}.opt-spark[data-v-6b2d097f]{width:120px;height:30px}.opt-spark polyline[data-v-6b2d097f]{fill:none;stroke:var(--tone-info-dot);stroke-width:1.5px}
@@ -0,0 +1 @@
1
+ .page[data-v-63ffc233]{flex-direction:column;gap:14px;display:flex}.badges[data-v-63ffc233]{gap:8px;display:flex}.badge[data-v-63ffc233]{color:var(--ink-faint);background:var(--glass-bg);border:1px solid var(--glass-line);-webkit-backdrop-filter:var(--frost-blur);border-radius:999px;padding:3px 10px;font-size:11px}.warn-badge[data-v-63ffc233]{color:var(--tone-warning-dot);background:var(--tone-warning-bg);border-color:color-mix(in srgb, var(--tone-warning-dot) 32%, transparent)}.tpl-btn[data-v-63ffc233]{color:var(--tone-info-dot);background:var(--tone-info-bg);border-color:color-mix(in srgb, var(--tone-info-dot) 34%, transparent);cursor:pointer}.tpl-btn[data-v-63ffc233]:hover{border-color:color-mix(in srgb, var(--tone-info-dot) 60%, transparent)}.fleet-filter[data-v-63ffc233]{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;display:flex}.fleet-filter .aw-seg button[data-v-63ffc233]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:11.5px}.fleet-search[data-v-63ffc233]{width:220px;height:30px;color:var(--ink);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-panel-sm);margin-left:auto;padding:0 10px;font-size:11.5px}.fleet-search[data-v-63ffc233]:focus{border-color:var(--tone-success-dot);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.line-grid[data-v-63ffc233]{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;display:grid}.line-card[data-v-63ffc233]{text-align:left;background:var(--surface-glass);-webkit-backdrop-filter:var(--aurora-blur);border:1px solid var(--glass-line);border-radius:var(--radius-panel);box-shadow:var(--glass-edge);transition:border-color var(--transition-base), transform var(--transition-base), box-shadow var(--transition-base);flex-direction:column;gap:9px;padding:14px 16px;display:flex;position:relative}@media (hover:hover) and (prefers-reduced-motion:no-preference){.line-card[data-v-63ffc233]:hover{border-color:color-mix(in srgb, var(--lc,#3aa0ff) 55%, var(--line-strong));box-shadow:var(--glass-edge), var(--shadow-float);transform:translateY(-2px)}}.line-card[data-v-63ffc233]:not(.idle){border-color:color-mix(in srgb, var(--lc,#3aa0ff) 38%, var(--line-strong));background:linear-gradient(180deg, color-mix(in srgb, var(--lc,#3aa0ff) 9%, transparent), transparent 46%), var(--surface-glass)}.line-card.idle[data-v-63ffc233]{background:var(--frost-bg)}.line-card.idle .lc-dot[data-v-63ffc233]{box-shadow:none;opacity:.72}.line-card.idle .lc-name[data-v-63ffc233]{color:var(--ink-faint)}.lc-head[data-v-63ffc233]{align-items:center;gap:8px;display:flex}.lc-dot[data-v-63ffc233]{background:var(--lc);width:10px;height:10px;box-shadow:0 0 10px color-mix(in srgb, var(--lc) 70%, transparent);border-radius:4px;flex:none}.lc-name[data-v-63ffc233]{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;overflow:hidden}.lc-state[data-v-63ffc233]{font-family:var(--font-mono);color:var(--ink-fainter);flex:none;margin-left:auto;font-size:10px}.lc-state.on[data-v-63ffc233]{color:var(--tone-success-dot)}.lc-act[data-v-63ffc233]{width:22px;height:22px;color:var(--ink-fainter);cursor:pointer;opacity:0;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0;font-size:13px;transition:color .15s,background .15s,opacity .15s,transform .16s cubic-bezier(.22,1,.36,1);display:inline-flex}.line-card:focus-within .lc-act[data-v-63ffc233],.line-card:hover .lc-act[data-v-63ffc233]{opacity:1}.lc-act[data-v-63ffc233]:hover{color:var(--tone-info-dot);background:var(--tone-info-bg)}.lc-act.danger[data-v-63ffc233]:hover{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.lc-act[data-v-63ffc233]:active{transform:scale(.9)}.lc-run[data-v-63ffc233]{color:var(--tone-info-dot);font-size:10.5px}.lc-run.dim[data-v-63ffc233]{color:var(--ink-fainter)}.lc-run.dim.ph[data-v-63ffc233]{opacity:.75}.lc-stats[data-v-63ffc233]{color:var(--ink-faint);gap:14px;font-size:10.5px;display:flex}.lc-stats b[data-v-63ffc233]{color:var(--ink);font-weight:600}.lc-ctl[data-v-63ffc233]{gap:8px;display:flex}.lc-ctl .inp[data-v-63ffc233]{min-width:0;height:30px;color:var(--ink);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-panel-sm);flex:1;padding:0 9px;font-size:11.5px}.lc-ctl .inp[data-v-63ffc233]:focus{border-color:var(--tone-success-dot);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.pill-btn[data-v-63ffc233]{height:30px;color:var(--on-accent);background:var(--accent);border-radius:var(--radius-panel-sm);cursor:pointer;border:0;flex:none;padding:0 14px;font-size:11.5px;font-weight:600;transition:background .15s,box-shadow .15s}.pill-btn[data-v-63ffc233]:hover:not(:disabled){background:var(--accent-strong);box-shadow:0 0 14px var(--accent-soft)}.pill-btn[data-v-63ffc233]:disabled{opacity:.4;cursor:default}.pill-btn.danger[data-v-63ffc233],.pill-btn.stop[data-v-63ffc233]{background:var(--tone-danger-bg);color:var(--tone-danger-dot)}.pill-btn.danger[data-v-63ffc233]:hover:not(:disabled),.pill-btn.stop[data-v-63ffc233]:hover:not(:disabled){background:color-mix(in srgb, var(--tone-danger-dot) 26%, transparent);box-shadow:none}.lc-manage[data-v-63ffc233]{color:var(--tone-info-dot);font-size:11.5px;font-weight:600;text-decoration:none}.lc-manage[data-v-63ffc233]:hover{text-decoration:underline}.new-card[data-v-63ffc233]{color:var(--ink-faint);border:1px dashed var(--line-strong);box-shadow:none;-webkit-backdrop-filter:none;cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:600}.new-card[data-v-63ffc233]:hover{color:var(--tone-success-dot);border-color:var(--tone-success-dot);transform:none}.new-card small[data-v-63ffc233]{color:var(--ink-fainter);font-size:10px;font-weight:400}.banner[data-v-63ffc233]{border-radius:10px;padding:8px 12px;font-size:12px}.banner.bad[data-v-63ffc233]{color:var(--tone-danger-dot);background:var(--tone-danger-bg);border:1px solid color-mix(in srgb, var(--tone-danger-dot) 30%, transparent)}.modal-mask[data-v-63ffc233]{z-index:80;background:var(--scrim);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);place-items:center;display:grid;position:fixed;inset:0}.modal-enter-active[data-v-63ffc233]{transition:opacity .18s cubic-bezier(.22,1,.36,1)}.modal-leave-active[data-v-63ffc233]{transition:opacity .13s}.modal-enter-from[data-v-63ffc233],.modal-leave-to[data-v-63ffc233]{opacity:0}.modal-enter-active .modal[data-v-63ffc233]{transition:transform .2s cubic-bezier(.22,1,.36,1)}.modal-enter-from .modal[data-v-63ffc233]{transform:translateY(8px)scale(.96)}.modal[data-v-63ffc233]{background:var(--surface-glass-strong);width:min(440px,100vw - 40px);max-height:82vh;-webkit-backdrop-filter:var(--aurora-blur);border:1px solid var(--glass-line);border-radius:var(--radius-panel);box-shadow:var(--glass-edge), var(--shadow-float);flex-direction:column;gap:12px;padding:18px;display:flex;overflow:auto}.modal.wide[data-v-63ffc233]{width:min(640px,100vw - 40px)}.m-title[data-v-63ffc233]{color:var(--ink);align-items:baseline;gap:10px;font-size:15px;display:flex}.m-title.danger-title[data-v-63ffc233]{color:var(--tone-danger-dot);align-items:center}.f[data-v-63ffc233]{color:var(--ink-faint);flex-direction:column;gap:5px;font-size:11px;display:flex}.f em[data-v-63ffc233]{color:var(--tone-danger-dot);font-style:normal}.f .inp[data-v-63ffc233]{height:30px;color:var(--ink);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-panel-sm);padding:0 9px;font-size:12px}.f .inp[data-v-63ffc233]:focus{border-color:var(--tone-success-dot);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.color-row[data-v-63ffc233]{align-items:center;gap:7px;display:flex}.color-dot[data-v-63ffc233]{cursor:pointer;border:2px solid #0000;border-radius:6px;width:20px;height:20px}.color-dot.on[data-v-63ffc233]{border-color:var(--ink);box-shadow:0 0 10px}.m-actions[data-v-63ffc233]{justify-content:flex-end;gap:8px;display:flex}.m-err[data-v-63ffc233]{color:var(--tone-danger-dot);font-size:11px}.dim[data-v-63ffc233]{color:var(--ink-fainter)}.sec-label[data-v-63ffc233]{color:var(--ink-fainter);letter-spacing:.16em;font-size:10px;font-weight:700}.del-summary[data-v-63ffc233]{color:var(--ink-soft);font-size:12px;line-height:1.6}.del-purge[data-v-63ffc233]{color:var(--ink);cursor:pointer;align-items:center;gap:8px;font-size:12px;display:flex}.del-purge input[data-v-63ffc233]{width:14px;height:14px;accent-color:var(--tone-danger-dot)}.tpl-hint[data-v-63ffc233]{font-size:11px}.tpl-list[data-v-63ffc233]{flex-direction:column;gap:6px;display:flex}.tpl-row[data-v-63ffc233]{color:var(--ink);background:var(--frost-bg);border:1px solid var(--glass-line);border-radius:9px;align-items:center;gap:10px;padding:7px 10px;font-size:12px;display:flex}.tpl-row small[data-v-63ffc233]{flex:1}.tpl-tag[data-v-63ffc233]{font-family:var(--font-mono);color:var(--tone-info-dot);border:1px solid color-mix(in srgb, var(--tone-info-dot) 40%, transparent);border-radius:5px;padding:1px 8px;font-size:9px}.tpl-tag.builtin[data-v-63ffc233]{color:var(--ink-fainter);border-color:var(--line-strong)}.tpl-form[data-v-63ffc233]{grid-template-columns:1fr 1fr;gap:10px;display:grid}.tpl-sem[data-v-63ffc233]{color:var(--ink-faint);flex:1}textarea.inp[data-v-63ffc233]{resize:vertical;height:auto;padding:6px 9px;font-size:11.5px}.mini-btn[data-v-63ffc233]{color:var(--ink-faint);background:var(--paper-deep);border:1px solid var(--line-strong);cursor:pointer;border-radius:7px;padding:4px 10px;font-size:10.5px}.mini-btn[data-v-63ffc233]:hover{border-color:var(--ink-faint);color:var(--ink)}.mini-btn.danger[data-v-63ffc233]{color:var(--tone-danger-dot)}