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 +0,0 @@
1
- import{r as e,t}from"./CsCpu2Zh.js";t.Button=e,t.install=function(n){return n.component(t.name,t),n.component(e.name,e),n};var n=t;export{n as t};
@@ -1,23 +0,0 @@
1
- import{C as e,F as t,I as n,M as r,a as i,et as a,f as o,gt as s,mt as c,tt as l,w as u,x as d,z as f}from"./BSCpFtzG.js";import{At as p,B as m,Ct as h,J as g,Z as _,at as v,d as y,f as b,h as x,j as S,kt as C,n as w,nt as T,t as E,tt as D,u as O,yt as k}from"./BDUjyaF4.js";import{D as A,E as j,G as M,M as N,Q as P,T as ee,V as te,Z as F,it as ne}from"./3612gD2V.js";import{F as re,K as I,L as ie,M as L,N as R,R as z,V as B,X as V,a as ae,c as oe,d as H,f as se,j as ce,k as le,p as ue,s as de,t as fe,w as pe}from"./Bt_HDizI.js";import{f as me,h as he}from"./BsMpJf7S.js";var ge=`[object Symbol]`;function U(e){return typeof e==`symbol`||L(e)&&ie(e)==ge}function _e(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}var ve=1/0,ye=z?z.prototype:void 0,be=ye?ye.toString:void 0;function xe(e){if(typeof e==`string`)return e;if(R(e))return _e(e,xe)+``;if(U(e))return be?be.call(e):``;var t=e+``;return t==`0`&&1/e==-ve?`-0`:t}function Se(e){return e}function Ce(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}var we=800,Te=16,Ee=Date.now;function De(e){var t=0,n=0;return function(){var r=Ee(),i=Te-(r-n);if(n=r,i>0){if(++t>=we)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Oe(e){return function(){return e}}var W=function(){try{var e=re(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),ke=De(W?function(e,t){return W(e,`toString`,{configurable:!0,enumerable:!1,value:Oe(t),writable:!0})}:Se);function Ae(e,t,n){t==`__proto__`&&W?W(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}var je=Object.prototype.hasOwnProperty;function Me(e,t,n){var r=e[t];(!(je.call(e,t)&&P(r,n))||n===void 0&&!(t in e))&&Ae(e,t,n)}var Ne=Math.max;function Pe(e,t,n){return t=Ne(t===void 0?e.length-1:t,0),function(){for(var r=arguments,i=-1,a=Ne(r.length-t,0),o=Array(a);++i<a;)o[i]=r[t+i];i=-1;for(var s=Array(t+1);++i<t;)s[i]=r[i];return s[t]=n(o),Ce(e,this,s)}}var Fe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ie=/^\w*$/;function Le(e,t){if(R(e))return!1;var n=typeof e;return n==`number`||n==`symbol`||n==`boolean`||e==null||U(e)?!0:Ie.test(e)||!Fe.test(e)||t!=null&&e in Object(t)}var Re=`Expected a function`;function ze(e,t){if(typeof e!=`function`||t!=null&&typeof t!=`function`)throw TypeError(Re);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(ze.Cache||F),n}ze.Cache=F;var Be=500;function Ve(e){var t=ze(e,function(e){return n.size===Be&&n.clear(),e}),n=t.cache;return t}var He=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ue=/\\(\\)?/g,We=Ve(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(``),e.replace(He,function(e,n,r,i){t.push(r?i.replace(Ue,`$1`):n||e)}),t});function Ge(e){return e==null?``:xe(e)}function Ke(e,t){return R(e)?e:Le(e,t)?[e]:We(Ge(e))}var qe=1/0;function Je(e){if(typeof e==`string`||U(e))return e;var t=e+``;return t==`0`&&1/e==-qe?`-0`:t}function Ye(e,t){t=Ke(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[Je(t[n++])];return n&&n==r?e:void 0}var Xe=z?z.isConcatSpreadable:void 0;function Ze(e){return R(e)||ce(e)||!!(Xe&&e&&e[Xe])}function Qe(e,t,n,r,i){var a=-1,o=e.length;for(n||=Ze,i||=[];++a<o;){var s=e[a];t>0&&n(s)?t>1?Qe(s,t-1,n,r,i):M(i,s):r||(i[i.length]=s)}return i}function $e(e){return e!=null&&e.length?Qe(e,1):[]}function et(e){return ke(Pe(e,void 0,$e),e+``)}var tt=pe(Object.getPrototypeOf,Object),nt=`[object Object]`,rt=Function.prototype,it=Object.prototype,at=rt.toString,ot=it.hasOwnProperty,st=at.call(Object);function ct(e){if(!L(e)||ie(e)!=nt)return!1;var t=tt(e);if(t===null)return!0;var n=ot.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n instanceof n&&at.call(n)==st}function lt(e,t){return e!=null&&t in Object(e)}function ut(e,t,n){t=Ke(t,e);for(var r=-1,i=t.length,a=!1;++r<i;){var o=Je(t[r]);if(!(a=e!=null&&n(e,o)))break;e=e[o]}return a||++r!=i?a:(i=e==null?0:e.length,!!i&&le(i)&&te(o,i)&&(R(e)||ce(e)))}function dt(e,t){return e!=null&&ut(e,t,lt)}var ft=e=>({"&::-moz-placeholder":{opacity:1},"&::placeholder":{color:e,userSelect:`none`},"&:placeholder-shown":{textOverflow:`ellipsis`}}),G=e=>({borderColor:e.inputBorderHoverColor,borderInlineEndWidth:e.lineWidth}),K=e=>({borderColor:e.inputBorderHoverColor,boxShadow:`0 0 0 ${e.controlOutlineWidth}px ${e.controlOutline}`,borderInlineEndWidth:e.lineWidth,outline:0}),pt=e=>({color:e.colorTextDisabled,backgroundColor:e.colorBgContainerDisabled,borderColor:e.colorBorder,boxShadow:`none`,cursor:`not-allowed`,opacity:1,"&:hover":C({},G(O(e,{inputBorderHoverColor:e.colorBorder})))}),mt=e=>{let{inputPaddingVerticalLG:t,fontSizeLG:n,lineHeightLG:r,borderRadiusLG:i,inputPaddingHorizontalLG:a}=e;return{padding:`${t}px ${a}px`,fontSize:n,lineHeight:r,borderRadius:i}},ht=e=>({padding:`${e.inputPaddingVerticalSM}px ${e.controlPaddingHorizontalSM-1}px`,borderRadius:e.borderRadiusSM}),q=(e,t)=>{let{componentCls:n,colorError:r,colorWarning:i,colorErrorOutline:a,colorWarningOutline:o,colorErrorBorderHover:s,colorWarningBorderHover:c}=e;return{[`&-status-error:not(${t}-disabled):not(${t}-borderless)${t}`]:{borderColor:r,"&:hover":{borderColor:s},"&:focus, &-focused":C({},K(O(e,{inputBorderActiveColor:r,inputBorderHoverColor:r,controlOutline:a}))),[`${n}-prefix`]:{color:r}},[`&-status-warning:not(${t}-disabled):not(${t}-borderless)${t}`]:{borderColor:i,"&:hover":{borderColor:c},"&:focus, &-focused":C({},K(O(e,{inputBorderActiveColor:i,inputBorderHoverColor:i,controlOutline:o}))),[`${n}-prefix`]:{color:i}}}},gt=e=>C(C({position:`relative`,display:`inline-block`,width:`100%`,minWidth:0,padding:`${e.inputPaddingVertical}px ${e.inputPaddingHorizontal}px`,color:e.colorText,fontSize:e.fontSize,lineHeight:e.lineHeight,backgroundColor:e.colorBgContainer,backgroundImage:`none`,borderWidth:e.lineWidth,borderStyle:e.lineType,borderColor:e.colorBorder,borderRadius:e.borderRadius,transition:`all ${e.motionDurationMid}`},ft(e.colorTextPlaceholder)),{"&:hover":C({},G(e)),"&:focus, &-focused":C({},K(e)),"&-disabled, &[disabled]":C({},pt(e)),"&-borderless":{"&, &:hover, &:focus, &-focused, &-disabled, &[disabled]":{backgroundColor:`transparent`,border:`none`,boxShadow:`none`}},"textarea&":{maxWidth:`100%`,height:`auto`,minHeight:e.controlHeight,lineHeight:e.lineHeight,verticalAlign:`bottom`,transition:`all ${e.motionDurationSlow}, height 0s`,resize:`vertical`},"&-lg":C({},mt(e)),"&-sm":C({},ht(e)),"&-rtl":{direction:`rtl`},"&-textarea-rtl":{direction:`rtl`}}),_t=e=>{let{componentCls:t,antCls:n}=e;return{position:`relative`,display:`table`,width:`100%`,borderCollapse:`separate`,borderSpacing:0,"&[class*='col-']":{paddingInlineEnd:e.paddingXS,"&:last-child":{paddingInlineEnd:0}},[`&-lg ${t}, &-lg > ${t}-group-addon`]:C({},mt(e)),[`&-sm ${t}, &-sm > ${t}-group-addon`]:C({},ht(e)),[`> ${t}`]:{display:`table-cell`,"&:not(:first-child):not(:last-child)":{borderRadius:0}},[`${t}-group`]:{"&-addon, &-wrap":{display:`table-cell`,width:1,whiteSpace:`nowrap`,verticalAlign:`middle`,"&:not(:first-child):not(:last-child)":{borderRadius:0}},"&-wrap > *":{display:`block !important`},"&-addon":{position:`relative`,padding:`0 ${e.inputPaddingHorizontal}px`,color:e.colorText,fontWeight:`normal`,fontSize:e.fontSize,textAlign:`center`,backgroundColor:e.colorFillAlter,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadius,transition:`all ${e.motionDurationSlow}`,lineHeight:1,[`${n}-select`]:{margin:`-${e.inputPaddingVertical+1}px -${e.inputPaddingHorizontal}px`,[`&${n}-select-single:not(${n}-select-customize-input)`]:{[`${n}-select-selector`]:{backgroundColor:`inherit`,border:`${e.lineWidth}px ${e.lineType} transparent`,boxShadow:`none`}},"&-open, &-focused":{[`${n}-select-selector`]:{color:e.colorPrimary}}},[`${n}-cascader-picker`]:{margin:`-9px -${e.inputPaddingHorizontal}px`,backgroundColor:`transparent`,[`${n}-cascader-input`]:{textAlign:`start`,border:0,boxShadow:`none`}}},"&-addon:first-child":{borderInlineEnd:0},"&-addon:last-child":{borderInlineStart:0}},[`${t}`]:{float:`inline-start`,width:`100%`,marginBottom:0,textAlign:`inherit`,"&:focus":{zIndex:1,borderInlineEndWidth:1},"&:hover":{zIndex:1,borderInlineEndWidth:1,[`${t}-search-with-button &`]:{zIndex:0}}},[`> ${t}:first-child, ${t}-group-addon:first-child`]:{borderStartEndRadius:0,borderEndEndRadius:0,[`${n}-select ${n}-select-selector`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`> ${t}-affix-wrapper`]:{[`&:not(:first-child) ${t}`]:{borderStartStartRadius:0,borderEndStartRadius:0},[`&:not(:last-child) ${t}`]:{borderStartEndRadius:0,borderEndEndRadius:0}},[`> ${t}:last-child, ${t}-group-addon:last-child`]:{borderStartStartRadius:0,borderEndStartRadius:0,[`${n}-select ${n}-select-selector`]:{borderStartStartRadius:0,borderEndStartRadius:0}},[`${t}-affix-wrapper`]:{"&:not(:last-child)":{borderStartEndRadius:0,borderEndEndRadius:0,[`${t}-search &`]:{borderStartStartRadius:e.borderRadius,borderEndStartRadius:e.borderRadius}},[`&:not(:first-child), ${t}-search &:not(:first-child)`]:{borderStartStartRadius:0,borderEndStartRadius:0}},[`&${t}-group-compact`]:C(C({display:`block`},b()),{[`${t}-group-addon, ${t}-group-wrap, > ${t}`]:{"&:not(:first-child):not(:last-child)":{borderInlineEndWidth:e.lineWidth,"&:hover":{zIndex:1},"&:focus":{zIndex:1}}},"& > *":{display:`inline-block`,float:`none`,verticalAlign:`top`,borderRadius:0},[`& > ${t}-affix-wrapper`]:{display:`inline-flex`},[`& > ${n}-picker-range`]:{display:`inline-flex`},"& > *:not(:last-child)":{marginInlineEnd:-e.lineWidth,borderInlineEndWidth:e.lineWidth},[`${t}`]:{float:`none`},[`& > ${n}-select > ${n}-select-selector,
2
- & > ${n}-select-auto-complete ${t},
3
- & > ${n}-cascader-picker ${t},
4
- & > ${t}-group-wrapper ${t}`]:{borderInlineEndWidth:e.lineWidth,borderRadius:0,"&:hover":{zIndex:1},"&:focus":{zIndex:1}},[`& > ${n}-select-focused`]:{zIndex:1},[`& > ${n}-select > ${n}-select-arrow`]:{zIndex:1},[`& > *:first-child,
5
- & > ${n}-select:first-child > ${n}-select-selector,
6
- & > ${n}-select-auto-complete:first-child ${t},
7
- & > ${n}-cascader-picker:first-child ${t}`]:{borderStartStartRadius:e.borderRadius,borderEndStartRadius:e.borderRadius},[`& > *:last-child,
8
- & > ${n}-select:last-child > ${n}-select-selector,
9
- & > ${n}-cascader-picker:last-child ${t},
10
- & > ${n}-cascader-picker-focused:last-child ${t}`]:{borderInlineEndWidth:e.lineWidth,borderStartEndRadius:e.borderRadius,borderEndEndRadius:e.borderRadius},[`& > ${n}-select-auto-complete ${t}`]:{verticalAlign:`top`},[`${t}-group-wrapper + ${t}-group-wrapper`]:{marginInlineStart:-e.lineWidth,[`${t}-affix-wrapper`]:{borderRadius:0}},[`${t}-group-wrapper:not(:last-child)`]:{[`&${t}-search > ${t}-group`]:{[`& > ${t}-group-addon > ${t}-search-button`]:{borderRadius:0},[`& > ${t}`]:{borderStartStartRadius:e.borderRadius,borderStartEndRadius:0,borderEndEndRadius:0,borderEndStartRadius:e.borderRadius}}}}),[`&&-sm ${n}-btn`]:{fontSize:e.fontSizeSM,height:e.controlHeightSM,lineHeight:`normal`},[`&&-lg ${n}-btn`]:{fontSize:e.fontSizeLG,height:e.controlHeightLG,lineHeight:`normal`},[`&&-lg ${n}-select-single ${n}-select-selector`]:{height:`${e.controlHeightLG}px`,[`${n}-select-selection-item, ${n}-select-selection-placeholder`]:{lineHeight:`${e.controlHeightLG-2}px`},[`${n}-select-selection-search-input`]:{height:`${e.controlHeightLG}px`}},[`&&-sm ${n}-select-single ${n}-select-selector`]:{height:`${e.controlHeightSM}px`,[`${n}-select-selection-item, ${n}-select-selection-placeholder`]:{lineHeight:`${e.controlHeightSM-2}px`},[`${n}-select-selection-search-input`]:{height:`${e.controlHeightSM}px`}}}},vt=e=>{let{componentCls:t,controlHeightSM:n,lineWidth:r}=e,i=(n-r*2-16)/2;return{[t]:C(C(C(C({},x(e)),gt(e)),q(e,t)),{'&[type="color"]':{height:e.controlHeight,[`&${t}-lg`]:{height:e.controlHeightLG},[`&${t}-sm`]:{height:n,paddingTop:i,paddingBottom:i}}})}},yt=e=>{let{componentCls:t}=e;return{[`${t}-clear-icon`]:{margin:0,color:e.colorTextQuaternary,fontSize:e.fontSizeIcon,verticalAlign:-1,cursor:`pointer`,transition:`color ${e.motionDurationSlow}`,"&:hover":{color:e.colorTextTertiary},"&:active":{color:e.colorText},"&-hidden":{visibility:`hidden`},"&-has-suffix":{margin:`0 ${e.inputAffixPadding}px`}},"&-textarea-with-clear-btn":{padding:`0 !important`,border:`0 !important`,[`${t}-clear-icon`]:{position:`absolute`,insetBlockStart:e.paddingXS,insetInlineEnd:e.paddingXS,zIndex:1}}}},bt=e=>{let{componentCls:t,inputAffixPadding:n,colorTextDescription:r,motionDurationSlow:i,colorIcon:a,colorIconHover:o,iconCls:s}=e;return{[`${t}-affix-wrapper`]:C(C(C(C(C({},gt(e)),{display:`inline-flex`,[`&:not(${t}-affix-wrapper-disabled):hover`]:C(C({},G(e)),{zIndex:1,[`${t}-search-with-button &`]:{zIndex:0}}),"&-focused, &:focus":{zIndex:1},"&-disabled":{[`${t}[disabled]`]:{background:`transparent`}},[`> input${t}`]:{padding:0,fontSize:`inherit`,border:`none`,borderRadius:0,outline:`none`,"&:focus":{boxShadow:`none !important`}},"&::before":{width:0,visibility:`hidden`,content:`"\\a0"`},[`${t}`]:{"&-prefix, &-suffix":{display:`flex`,flex:`none`,alignItems:`center`,"> *:not(:last-child)":{marginInlineEnd:e.paddingXS}},"&-show-count-suffix":{color:r},"&-show-count-has-suffix":{marginInlineEnd:e.paddingXXS},"&-prefix":{marginInlineEnd:n},"&-suffix":{marginInlineStart:n}}}),yt(e)),{[`${s}${t}-password-icon`]:{color:a,cursor:`pointer`,transition:`all ${i}`,"&:hover":{color:o}}}),q(e,`${t}-affix-wrapper`))}},xt=e=>{let{componentCls:t,colorError:n,colorSuccess:r,borderRadiusLG:i,borderRadiusSM:a}=e;return{[`${t}-group`]:C(C(C({},x(e)),_t(e)),{"&-rtl":{direction:`rtl`},"&-wrapper":{display:`inline-block`,width:`100%`,textAlign:`start`,verticalAlign:`top`,"&-rtl":{direction:`rtl`},"&-lg":{[`${t}-group-addon`]:{borderRadius:i}},"&-sm":{[`${t}-group-addon`]:{borderRadius:a}},"&-status-error":{[`${t}-group-addon`]:{color:n,borderColor:n}},"&-status-warning":{[`${t}-group-addon:last-child`]:{color:r,borderColor:r}}}})}},St=e=>{let{componentCls:t,antCls:n}=e,r=`${t}-search`;return{[r]:{[`${t}`]:{"&:hover, &:focus":{borderColor:e.colorPrimaryHover,[`+ ${t}-group-addon ${r}-button:not(${n}-btn-primary)`]:{borderInlineStartColor:e.colorPrimaryHover}}},[`${t}-affix-wrapper`]:{borderRadius:0},[`${t}-lg`]:{lineHeight:e.lineHeightLG-2e-4},[`> ${t}-group`]:{[`> ${t}-group-addon:last-child`]:{insetInlineStart:-1,padding:0,border:0,[`${r}-button`]:{paddingTop:0,paddingBottom:0,borderStartStartRadius:0,borderStartEndRadius:e.borderRadius,borderEndEndRadius:e.borderRadius,borderEndStartRadius:0},[`${r}-button:not(${n}-btn-primary)`]:{color:e.colorTextDescription,"&:hover":{color:e.colorPrimaryHover},"&:active":{color:e.colorPrimaryActive},[`&${n}-btn-loading::before`]:{insetInlineStart:0,insetInlineEnd:0,insetBlockStart:0,insetBlockEnd:0}}}},[`${r}-button`]:{height:e.controlHeight,"&:hover, &:focus":{zIndex:1}},[`&-large ${r}-button`]:{height:e.controlHeightLG},[`&-small ${r}-button`]:{height:e.controlHeightSM},"&-rtl":{direction:`rtl`},[`&${t}-compact-item`]:{[`&:not(${t}-compact-last-item)`]:{[`${t}-group-addon`]:{[`${t}-search-button`]:{marginInlineEnd:-e.lineWidth,borderRadius:0}}},[`&:not(${t}-compact-first-item)`]:{[`${t},${t}-affix-wrapper`]:{borderRadius:0}},[`> ${t}-group-addon ${t}-search-button,
11
- > ${t},
12
- ${t}-affix-wrapper`]:{"&:hover,&:focus,&:active":{zIndex:2}},[`> ${t}-affix-wrapper-focused`]:{zIndex:2}}}}};function Ct(e){return O(e,{inputAffixPadding:e.paddingXXS,inputPaddingVertical:Math.max(Math.round((e.controlHeight-e.fontSize*e.lineHeight)/2*10)/10-e.lineWidth,3),inputPaddingVerticalLG:Math.ceil((e.controlHeightLG-e.fontSizeLG*e.lineHeightLG)/2*10)/10-e.lineWidth,inputPaddingVerticalSM:Math.max(Math.round((e.controlHeightSM-e.fontSize*e.lineHeight)/2*10)/10-e.lineWidth,0),inputPaddingHorizontal:e.paddingSM-e.lineWidth,inputPaddingHorizontalSM:e.paddingXS-e.lineWidth,inputPaddingHorizontalLG:e.controlPaddingHorizontal-e.lineWidth,inputBorderHoverColor:e.colorPrimaryHover,inputBorderActiveColor:e.colorPrimaryHover})}var wt=e=>{let{componentCls:t,inputPaddingHorizontal:n,paddingLG:r}=e,i=`${t}-textarea`;return{[i]:{position:`relative`,[`${i}-suffix`]:{position:`absolute`,top:0,insetInlineEnd:n,bottom:0,zIndex:1,display:`inline-flex`,alignItems:`center`,margin:`auto`},"&-status-error,\n &-status-warning,\n &-status-success,\n &-status-validating":{[`&${i}-has-feedback`]:{[`${t}`]:{paddingInlineEnd:r}}},"&-show-count":{[`> ${t}`]:{height:`100%`},"&::after":{color:e.colorTextDescription,whiteSpace:`nowrap`,content:`attr(data-count)`,pointerEvents:`none`,float:`right`}},"&-rtl":{"&::after":{float:`left`}}}}},Tt=y(`Input`,e=>{let t=Ct(e);return[vt(t),wt(t),bt(t),xt(t),St(t),ae(t)]}),J=e=>e!=null&&(!Array.isArray(e)||v(e).length);function Et(e){return J(e.prefix)||J(e.suffix)||J(e.allowClear)}function Y(e){return J(e.addonBefore)||J(e.addonAfter)}function Dt(e){return e==null?``:String(e)}function X(e,t,n,r){if(!n)return;let i=t;if(t.type===`click`){Object.defineProperty(i,"target",{writable:!0}),Object.defineProperty(i,"currentTarget",{writable:!0});let t=e.cloneNode(!0);i.target=t,i.currentTarget=t,t.value=``,n(i);return}if(r!==void 0){Object.defineProperty(i,"target",{writable:!0}),Object.defineProperty(i,"currentTarget",{writable:!0}),i.target=e,i.currentTarget=e,e.value=r,n(i);return}n(i)}function Ot(e,t){if(!e)return;e.focus(t);let{cursor:n}=t||{};if(n){let t=e.value.length;switch(n){case`start`:e.setSelectionRange(0,0);break;case`end`:e.setSelectionRange(t,t);break;default:e.setSelectionRange(0,t)}}}var kt=()=>({addonBefore:E.any,addonAfter:E.any,prefix:E.any,suffix:E.any,clearIcon:E.any,affixWrapperClassName:String,groupClassName:String,wrapperClassName:String,inputClassName:String,allowClear:{type:Boolean,default:void 0}}),At=()=>C(C({},kt()),{value:{type:[String,Number,Symbol],default:void 0},defaultValue:{type:[String,Number,Symbol],default:void 0},inputElement:E.any,prefixCls:String,disabled:{type:Boolean,default:void 0},focused:{type:Boolean,default:void 0},triggerFocus:Function,readonly:{type:Boolean,default:void 0},handleReset:Function,hidden:{type:Boolean,default:void 0}}),jt=()=>C(C({},At()),{id:String,placeholder:{type:[String,Number]},autocomplete:String,type:D(`text`),name:String,size:{type:String},autofocus:{type:Boolean,default:void 0},lazy:{type:Boolean,default:!0},maxlength:Number,loading:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},showCount:{type:[Boolean,Object]},htmlSize:Number,onPressEnter:Function,onKeydown:Function,onKeyup:Function,onFocus:Function,onBlur:Function,onChange:Function,onInput:Function,"onUpdate:value":Function,onCompositionstart:Function,onCompositionend:Function,valueModifiers:Object,hidden:{type:Boolean,default:void 0},status:String}),Mt=e({name:`BaseInput`,inheritAttrs:!1,props:At(),setup(e,t){let{slots:n,attrs:r}=t,i=c(),a=t=>{if(i.value?.contains(t.target)){let{triggerFocus:t}=e;t?.()}},o=()=>{let{allowClear:t,value:r,disabled:i,readonly:a,handleReset:o,suffix:s=n.suffix,prefixCls:c}=e;if(!t)return null;let l=!i&&!a&&r,u=`${c}-clear-icon`,f=n.clearIcon?.call(n)||`*`;return d(`span`,{onClick:o,onMousedown:e=>e.preventDefault(),class:h({[`${u}-hidden`]:!l,[`${u}-has-suffix`]:!!s},u),role:`button`,tabindex:-1},[f])};return()=>{let{focused:t,value:s,disabled:c,allowClear:l,readonly:u,hidden:f,prefixCls:p,prefix:m=n.prefix?.call(n),suffix:g=n.suffix?.call(n),addonAfter:_=n.addonAfter,addonBefore:v=n.addonBefore,inputElement:y,affixWrapperClassName:b,wrapperClassName:x,groupClassName:S}=e,C=B(y,{value:s,hidden:f});if(Et({prefix:m,suffix:g,allowClear:l})){let e=`${p}-affix-wrapper`,n=h(e,{[`${e}-disabled`]:c,[`${e}-focused`]:t,[`${e}-readonly`]:u,[`${e}-input-with-clear-btn`]:g&&l&&s},!Y({addonAfter:_,addonBefore:v})&&r.class,b),x=(g||l)&&d(`span`,{class:`${p}-suffix`},[o(),g]);C=d(`span`,{class:n,style:r.style,hidden:!Y({addonAfter:_,addonBefore:v})&&f,onMousedown:a,ref:i},[m&&d(`span`,{class:`${p}-prefix`},[m]),B(y,{style:null,value:s,hidden:null}),x])}if(Y({addonAfter:_,addonBefore:v})){let e=`${p}-group`,t=`${e}-addon`,n=h(`${p}-wrapper`,e,x),i=h(`${p}-group-wrapper`,r.class,S);return d(`span`,{class:i,style:r.style,hidden:f},[d(`span`,{class:n},[v&&d(`span`,{class:t},[v]),B(C,{style:null,hidden:null}),_&&d(`span`,{class:t},[_])])])}return C}}}),Nt=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},Pt=e({name:`VCInput`,inheritAttrs:!1,props:jt(),setup(e,t){let{slots:n,attrs:c,expose:l,emit:u}=t,m=s(e.value===void 0?e.defaultValue:e.value),g=s(!1),_=s(),v=s();a(()=>e.value,()=>{m.value=e.value}),a(()=>e.disabled,()=>{e.disabled&&(g.value=!1)});let y=e=>{_.value&&Ot(_.value.input,e)};l({focus:y,blur:()=>{var e;(e=_.value.input)==null||e.blur()},input:o(()=>_.value.input?.input),stateValue:m,setSelectionRange:(e,t,n)=>{var r;(r=_.value.input)==null||r.setSelectionRange(e,t,n)},select:()=>{var e;(e=_.value.input)==null||e.select()}});let b=e=>{u(`change`,e)},x=(t,n)=>{m.value!==t&&(e.value===void 0?m.value=t:r(()=>{var e;_.value.input.value!==m.value&&((e=v.value)==null||e.$forceUpdate())}),r(()=>{n&&n()}))},S=e=>{let{value:t}=e.target;if(m.value===t)return;let n=e.target.value;X(_.value.input,e,b),x(n)},w=e=>{e.keyCode===13&&u(`pressEnter`,e),u(`keydown`,e)},T=e=>{g.value=!0,u(`focus`,e)},E=e=>{g.value=!1,u(`blur`,e)},D=e=>{X(_.value.input,e,b),x(``,()=>{y()})},O=()=>{let{addonBefore:t=n.addonBefore,addonAfter:r=n.addonAfter,disabled:i,valueModifiers:a={},htmlSize:o,autocomplete:s,prefixCls:l,inputClassName:u,prefix:f=n.prefix?.call(n),suffix:p=n.suffix?.call(n),allowClear:m,type:g=`text`}=e,v=I(e,[`prefixCls`,`onPressEnter`,`addonBefore`,`addonAfter`,`prefix`,`suffix`,`allowClear`,`defaultValue`,`size`,`bordered`,`htmlSize`,`lazy`,`showCount`,`valueModifiers`,`showCount`,`affixWrapperClassName`,`groupClassName`,`inputClassName`,`wrapperClassName`]),y=C(C(C({},v),c),{autocomplete:s,onChange:S,onInput:S,onFocus:T,onBlur:E,onKeydown:w,class:h(l,{[`${l}-disabled`]:i},u,!Y({addonAfter:r,addonBefore:t})&&!Et({prefix:f,suffix:p,allowClear:m})&&c.class),ref:_,key:`ant-input`,size:o,type:g,lazy:e.lazy});return a.lazy&&delete y.onInput,y.autofocus||delete y.autofocus,d(N,I(y,[`size`]),null)},k=()=>{let{maxlength:t,suffix:r=n.suffix?.call(n),showCount:a,prefixCls:o}=e,s=Number(t)>0;if(r||a){let e=[...Dt(m.value)].length,n=typeof a==`object`?a.formatter({count:e,maxlength:t}):`${e}${s?` / ${t}`:``}`;return d(i,null,[!!a&&d(`span`,{class:h(`${o}-show-count-suffix`,{[`${o}-show-count-has-suffix`]:!!r})},[n]),r])}return null};return f(()=>{}),()=>{let{prefixCls:t,disabled:r}=e,i=Nt(e,[`prefixCls`,`disabled`]);return d(Mt,p(p(p({},i),c),{},{ref:v,prefixCls:t,inputElement:O(),handleReset:D,value:Dt(m.value),focused:g.value,triggerFocus:y,suffix:k(),disabled:r}),n)}}}),Z=()=>I(jt(),[`wrapperClassName`,`groupClassName`,`inputClassName`,`affixWrapperClassName`]),Ft=()=>C(C({},I(Z(),[`prefix`,`addonBefore`,`addonAfter`,`suffix`])),{rows:Number,autosize:{type:[Boolean,Object],default:void 0},autoSize:{type:[Boolean,Object],default:void 0},onResize:{type:Function},onCompositionstart:_(),onCompositionend:_(),valueModifiers:Object}),It=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},Q=e({compatConfig:{MODE:3},name:`AInput`,inheritAttrs:!1,props:Z(),setup(e,r){let{slots:a,attrs:s,expose:l,emit:u}=r,g=c(),_=ue(),v=H.useInject(),y=o(()=>ee(v.status,e.status)),{direction:b,prefixCls:x,size:S,autocomplete:T}=w(`input`,e),{compactSize:E,compactItemClassnames:D}=oe(x,b),O=o(()=>E.value||S.value),[k,A]=Tt(x),M=m();l({focus:e=>{var t;(t=g.value)==null||t.focus(e)},blur:()=>{var e;(e=g.value)==null||e.blur()},input:g,setSelectionRange:(e,t,n)=>{var r;(r=g.value)==null||r.setSelectionRange(e,t,n)},select:()=>{var e;(e=g.value)==null||e.select()}});let N=c([]),P=()=>{N.value.push(setTimeout(()=>{var e;g.value?.input&&g.value?.input.getAttribute(`type`)===`password`&&g.value?.input.hasAttribute(`value`)&&((e=g.value)==null||e.input.removeAttribute(`value`))}))};f(()=>{P()}),n(()=>{N.value.forEach(e=>clearTimeout(e))}),t(()=>{N.value.forEach(e=>clearTimeout(e))});let te=e=>{P(),u(`blur`,e),_.onFieldBlur()},F=e=>{P(),u(`focus`,e)},ne=e=>{u(`update:value`,e.target.value),u(`change`,e),u(`input`,e),_.onFieldChange()};return()=>{let{hasFeedback:t,feedbackIcon:n}=v,{allowClear:r,bordered:o=!0,prefix:c=a.prefix?.call(a),suffix:l=a.suffix?.call(a),addonAfter:u=a.addonAfter?.call(a),addonBefore:f=a.addonBefore?.call(a),id:m=_.id?.value}=e,S=It(e,[`allowClear`,`bordered`,`prefix`,`suffix`,`addonAfter`,`addonBefore`,`id`]),w=(t||l)&&d(i,null,[l,t&&n]),E=x.value,N=Et({prefix:c,suffix:l})||!!t,P=a.clearIcon||(()=>d(me,null,null));return k(d(Pt,p(p(p({},s),I(S,[`onUpdate:value`,`onChange`,`onInput`])),{},{onChange:ne,id:m,disabled:e.disabled??M.value,ref:g,prefixCls:E,autocomplete:T.value,onBlur:te,onFocus:F,prefix:c,suffix:w,allowClear:r,addonAfter:u&&d(de,null,{default:()=>[d(se,null,{default:()=>[u]})]}),addonBefore:f&&d(de,null,{default:()=>[d(se,null,{default:()=>[f]})]}),class:[s.class,D.value],inputClassName:h({[`${E}-sm`]:O.value===`small`,[`${E}-lg`]:O.value===`large`,[`${E}-rtl`]:b.value===`rtl`,[`${E}-borderless`]:!o},!N&&j(E,y.value),A.value),affixWrapperClassName:h({[`${E}-affix-wrapper-sm`]:O.value===`small`,[`${E}-affix-wrapper-lg`]:O.value===`large`,[`${E}-affix-wrapper-rtl`]:b.value===`rtl`,[`${E}-affix-wrapper-borderless`]:!o},j(`${E}-affix-wrapper`,y.value,t),A.value),wrapperClassName:h({[`${E}-group-rtl`]:b.value===`rtl`},A.value),groupClassName:h({[`${E}-group-wrapper-sm`]:O.value===`small`,[`${E}-group-wrapper-lg`]:O.value===`large`,[`${E}-group-wrapper-rtl`]:b.value===`rtl`},j(`${E}-group-wrapper`,y.value,t),A.value)}),C(C({},a),{clearIcon:P})))}}}),Lt=e({compatConfig:{MODE:3},name:`AInputGroup`,inheritAttrs:!1,props:{prefixCls:String,size:{type:String},compact:{type:Boolean,default:void 0}},setup(e,t){let{slots:n,attrs:r}=t,{prefixCls:i,direction:a,getPrefixCls:s}=w(`input-group`,e),c=H.useInject();H.useProvide(c,{isFormItemInput:!1});let[l,u]=Tt(o(()=>s(`input`))),f=o(()=>{let t=i.value;return{[`${t}`]:!0,[u.value]:!0,[`${t}-lg`]:e.size===`large`,[`${t}-sm`]:e.size===`small`,[`${t}-compact`]:e.compact,[`${t}-rtl`]:a.value===`rtl`}});return()=>l(d(`span`,p(p({},r),{},{class:h(f.value,r.class)}),[n.default?.call(n)]))}}),Rt=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},zt=e({compatConfig:{MODE:3},name:`AInputSearch`,inheritAttrs:!1,props:C(C({},Z()),{inputPrefixCls:String,enterButton:E.any,onSearch:{type:Function}}),setup(e,t){let{slots:n,attrs:r,expose:i,emit:a}=t,c=s(),l=s(!1);i({focus:()=>{var e;(e=c.value)==null||e.focus()},blur:()=>{var e;(e=c.value)==null||e.blur()}});let u=e=>{a(`update:value`,e.target.value),e&&e.target&&e.type===`click`&&a(`search`,e.target.value,e),a(`change`,e)},f=e=>{document.activeElement===c.value?.input&&e.preventDefault()},m=e=>{a(`search`,c.value?.input?.stateValue,e)},g=t=>{l.value||e.loading||m(t)},_=e=>{l.value=!0,a(`compositionstart`,e)},v=e=>{l.value=!1,a(`compositionend`,e)},{prefixCls:y,getPrefixCls:b,direction:x,size:S}=w(`input-search`,e),T=o(()=>b(`input`,e.inputPrefixCls));return()=>{let{disabled:t,loading:i,addonAfter:a=n.addonAfter?.call(n),suffix:o=n.suffix?.call(n)}=e,s=Rt(e,[`disabled`,`loading`,`addonAfter`,`suffix`]),{enterButton:l=n.enterButton?.call(n)??!1}=e;l||=l===``;let b=typeof l==`boolean`?d(A,null,null):null,w=`${y.value}-button`,E=Array.isArray(l)?l[0]:l,D,O=E.type&&ct(E.type)&&E.type.__ANT_BUTTON;if(O||E.tagName===`button`)D=B(E,C({onMousedown:f,onClick:m,key:`enterButton`},O?{class:w,size:S.value}:{}),!1);else{let e=b&&!l;D=d(fe,{class:w,type:l?`primary`:void 0,size:S.value,disabled:t,key:`enterButton`,onMousedown:f,onClick:m,loading:i,icon:e?b:null},{default:()=>[e?null:b||l]})}a&&(D=[D,a]);let k=h(y.value,{[`${y.value}-rtl`]:x.value===`rtl`,[`${y.value}-${S.value}`]:!!S.value,[`${y.value}-with-button`]:!!l},r.class);return d(Q,p(p(p({ref:c},I(s,[`onUpdate:value`,`onSearch`,`enterButton`])),r),{},{onPressEnter:g,onCompositionstart:_,onCompositionend:v,size:S.value,prefixCls:T.value,addonAfter:D,suffix:o,onChange:u,class:k,disabled:t}),n)}}}),Bt=e=>e!=null&&(!Array.isArray(e)||v(e).length);function Vt(e){return Bt(e.addonBefore)||Bt(e.addonAfter)}var Ht=[`text`,`input`],Ut=e({compatConfig:{MODE:3},name:`ClearableLabeledInput`,inheritAttrs:!1,props:{prefixCls:String,inputType:E.oneOf(T(`text`,`input`)),value:g(),defaultValue:g(),allowClear:{type:Boolean,default:void 0},element:g(),handleReset:Function,disabled:{type:Boolean,default:void 0},direction:{type:String},size:{type:String},suffix:g(),prefix:g(),addonBefore:g(),addonAfter:g(),readonly:{type:Boolean,default:void 0},focused:{type:Boolean,default:void 0},bordered:{type:Boolean,default:!0},triggerFocus:{type:Function},hidden:Boolean,status:String,hashId:String},setup(e,t){let{slots:n,attrs:r}=t,i=H.useInject(),a=t=>{let{value:r,disabled:i,readonly:a,handleReset:o,suffix:s=n.suffix}=e,c=!i&&!a&&r,l=`${t}-clear-icon`;return d(me,{onClick:o,onMousedown:e=>e.preventDefault(),class:h({[`${l}-hidden`]:!c,[`${l}-has-suffix`]:!!s},l),role:`button`},null)},o=(t,o)=>{let{value:s,allowClear:c,direction:l,bordered:u,hidden:f,status:p,addonAfter:m=n.addonAfter,addonBefore:g=n.addonBefore,hashId:_}=e,{status:v,hasFeedback:y}=i;if(!c)return B(o,{value:s,disabled:e.disabled});let b=h(`${t}-affix-wrapper`,`${t}-affix-wrapper-textarea-with-clear-btn`,j(`${t}-affix-wrapper`,ee(v,p),y),{[`${t}-affix-wrapper-rtl`]:l===`rtl`,[`${t}-affix-wrapper-borderless`]:!u,[`${r.class}`]:!Vt({addonAfter:m,addonBefore:g})&&r.class},_);return d(`span`,{class:b,style:r.style,hidden:f},[B(o,{style:null,value:s,disabled:e.disabled}),a(t)])};return()=>{let{prefixCls:t,inputType:r,element:i=n.element?.call(n)}=e;return r===Ht[0]?o(t,i):null}}}),Wt=`
13
- min-height:0 !important;
14
- max-height:none !important;
15
- height:0 !important;
16
- visibility:hidden !important;
17
- overflow:hidden !important;
18
- position:absolute !important;
19
- z-index:-1000 !important;
20
- top:0 !important;
21
- right:0 !important;
22
- pointer-events: none !important;
23
- `,Gt=[`letter-spacing`,`line-height`,`padding-top`,`padding-bottom`,`font-family`,`font-weight`,`font-size`,`font-variant`,`text-rendering`,`text-transform`,`width`,`text-indent`,`padding-left`,`padding-right`,`border-width`,`box-sizing`,`word-break`,`white-space`],Kt={},$;function qt(e){let t=arguments.length>1&&arguments[1]!==void 0&&arguments[1],n=e.getAttribute(`id`)||e.getAttribute(`data-reactid`)||e.getAttribute(`name`);if(t&&Kt[n])return Kt[n];let r=window.getComputedStyle(e),i=r.getPropertyValue(`box-sizing`)||r.getPropertyValue(`-moz-box-sizing`)||r.getPropertyValue(`-webkit-box-sizing`),a=parseFloat(r.getPropertyValue(`padding-bottom`))+parseFloat(r.getPropertyValue(`padding-top`)),o=parseFloat(r.getPropertyValue(`border-bottom-width`))+parseFloat(r.getPropertyValue(`border-top-width`)),s={sizingStyle:Gt.map(e=>`${e}:${r.getPropertyValue(e)}`).join(`;`),paddingSize:a,borderSize:o,boxSizing:i};return t&&n&&(Kt[n]=s),s}function Jt(e){let t=arguments.length>1&&arguments[1]!==void 0&&arguments[1],n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;$||($=document.createElement(`textarea`),$.setAttribute(`tab-index`,`-1`),$.setAttribute(`aria-hidden`,`true`),document.body.appendChild($)),e.getAttribute(`wrap`)?$.setAttribute(`wrap`,e.getAttribute(`wrap`)):$.removeAttribute(`wrap`);let{paddingSize:i,borderSize:a,boxSizing:o,sizingStyle:s}=qt(e,t);$.setAttribute(`style`,`${s};${Wt}`),$.value=e.value||e.placeholder||``;let c,l,u,d=$.scrollHeight;if(o===`border-box`?d+=a:o===`content-box`&&(d-=i),n!==null||r!==null){$.value=` `;let e=$.scrollHeight-i;n!==null&&(c=e*n,o===`border-box`&&(c=c+i+a),d=Math.max(c,d)),r!==null&&(l=e*r,o===`border-box`&&(l=l+i+a),u=d>l?``:`hidden`,d=Math.min(l,d))}let f={height:`${d}px`,overflowY:u,resize:`none`};return c&&(f.minHeight=`${c}px`),l&&(f.maxHeight=`${l}px`),f}var Yt=0,Xt=1,Zt=2,Qt=e({compatConfig:{MODE:3},name:`ResizableTextArea`,inheritAttrs:!1,props:Ft(),setup(e,n){let{attrs:r,emit:i,expose:s}=n,f,m,g=c(),_=c({}),v=c(Zt);t(()=>{V.cancel(f),V.cancel(m)});let y=()=>{try{if(g.value&&document.activeElement===g.value.input){let e=g.value.getSelectionStart(),t=g.value.getSelectionEnd(),n=g.value.getScrollTop();g.value.setSelectionRange(e,t),g.value.setScrollTop(n)}}catch{}},b=c(),x=c();l(()=>{let t=e.autoSize||e.autosize;t?(b.value=t.minRows,x.value=t.maxRows):(b.value=void 0,x.value=void 0)});let w=o(()=>!!(e.autoSize||e.autosize)),T=()=>{v.value=Yt};a([()=>e.value,b,x,w],()=>{w.value&&T()},{immediate:!0});let E=c();a([v,g],()=>{if(g.value){if(v.value===Yt)v.value=Xt;else if(v.value===Xt){let e=Jt(g.value.input,!1,b.value,x.value);v.value=Zt,E.value=e}else y()}},{immediate:!0,flush:`post`});let D=u(),O=c(),k=()=>{V.cancel(O.value)},A=e=>{v.value===Zt&&(i(`resize`,e),w.value&&(k(),O.value=V(()=>{T()})))};t(()=>{k()}),s({resizeTextarea:()=>{T()},textArea:o(()=>g.value?.input),instance:D}),S(e.autosize===void 0,`Input.TextArea`,`autosize is deprecated, please use autoSize instead.`);let j=()=>{let{prefixCls:t,disabled:n}=e,i=I(e,[`prefixCls`,`onPressEnter`,`autoSize`,`autosize`,`defaultValue`,`allowClear`,`type`,`maxlength`,`valueModifiers`]),a=h(t,r.class,{[`${t}-disabled`]:n}),o=w.value?E.value:null,s=[r.style,_.value,o],c=C(C(C({},i),r),{style:s,class:a});return(v.value===Yt||v.value===Xt)&&s.push({overflowX:`hidden`,overflowY:`hidden`}),c.autofocus||delete c.autofocus,c.rows===0&&delete c.rows,d(ne,{onResize:A,disabled:!w.value},{default:()=>[d(N,p(p({},c),{},{ref:g,tag:`textarea`}),null)]})};return()=>j()}});function $t(e,t){return[...e||``].slice(0,t).join(``)}function en(e,t,n,r){let i=n;return e?i=$t(n,r):[...t||``].length<n.length&&[...n||``].length>r&&(i=t),i}var tn=e({compatConfig:{MODE:3},name:`ATextarea`,inheritAttrs:!1,props:Ft(),setup(e,t){let{attrs:n,expose:i,emit:c}=t,f=ue(),g=H.useInject(),_=o(()=>ee(g.status,e.status)),v=s(e.value??e.defaultValue),y=s(),b=s(``),{prefixCls:x,size:S,direction:T}=w(`input`,e),[E,D]=Tt(x),O=m(),k=o(()=>e.showCount===``||e.showCount||!1),A=o(()=>Number(e.maxlength)>0),M=s(!1),N=s(),P=s(0),te=e=>{M.value=!0,N.value=b.value,P.value=e.currentTarget.selectionStart,c(`compositionstart`,e)},F=t=>{M.value=!1;let n=t.currentTarget.value;A.value&&(n=en(P.value>=e.maxlength+1||P.value===N.value?.length,N.value,n,e.maxlength)),n!==b.value&&(L(n),X(t.currentTarget,t,B,n)),c(`compositionend`,t)},ne=u();a(()=>e.value,()=>{`value`in ne.vnode.props,v.value=e.value??``});let re=e=>{Ot(y.value?.textArea,e)},ie=()=>{var e;(e=y.value?.textArea)==null||e.blur()},L=(t,n)=>{v.value!==t&&(e.value===void 0?v.value=t:r(()=>{var e,t,n;y.value.textArea.value!==b.value&&((n=(e=y.value)==null?void 0:(t=e.instance).update)==null||n.call(t))}),r(()=>{n&&n()}))},R=e=>{e.keyCode===13&&c(`pressEnter`,e),c(`keydown`,e)},z=t=>{let{onBlur:n}=e;n?.(t),f.onFieldBlur()},B=e=>{c(`update:value`,e.target.value),c(`change`,e),c(`input`,e),f.onFieldChange()},V=e=>{X(y.value.textArea,e,B),L(``,()=>{re()})},ae=t=>{let n=t.target.value;if(v.value!==n){if(A.value){let r=t.target;n=en(r.selectionStart>=e.maxlength+1||r.selectionStart===n.length||!r.selectionStart,b.value,n,e.maxlength)}X(t.currentTarget,t,B,n),L(n)}},oe=()=>{let{class:t}=n,{bordered:r=!0}=e,i=C(C(C({},I(e,[`allowClear`])),n),{class:[{[`${x.value}-borderless`]:!r,[`${t}`]:t&&!k.value,[`${x.value}-sm`]:S.value===`small`,[`${x.value}-lg`]:S.value===`large`},j(x.value,_.value),D.value],disabled:O.value,showCount:null,prefixCls:x.value,onInput:ae,onChange:ae,onBlur:z,onKeydown:R,onCompositionstart:te,onCompositionend:F});return e.valueModifiers?.lazy&&delete i.onInput,d(Qt,p(p({},i),{},{id:i?.id??f.id.value,ref:y,maxlength:e.maxlength,lazy:e.lazy}),null)};return i({focus:re,blur:ie,resizableTextArea:y}),l(()=>{let t=Dt(v.value);!M.value&&A.value&&(e.value===null||e.value===void 0)&&(t=$t(t,e.maxlength)),b.value=t}),()=>{let{maxlength:t,bordered:r=!0,hidden:i}=e,{style:a,class:o}=n,s=C(C(C({},e),n),{prefixCls:x.value,inputType:`text`,handleReset:V,direction:T.value,bordered:r,style:k.value?void 0:a,hashId:D.value,disabled:e.disabled??O.value}),c=d(Ut,p(p({},s),{},{value:b.value,status:e.status}),{element:oe});if(k.value||g.hasFeedback){let e=[...b.value].length,n=``;n=typeof k.value==`object`?k.value.formatter({value:b.value,count:e,maxlength:t}):`${e}${A.value?` / ${t}`:``}`,c=d(`div`,{hidden:i,class:h(`${x.value}-textarea`,{[`${x.value}-textarea-rtl`]:T.value===`rtl`,[`${x.value}-textarea-show-count`]:k.value,[`${x.value}-textarea-in-form-item`]:g.isFormItemInput},`${x.value}-textarea-show-count`,o,D.value),style:a,"data-count":typeof n==`object`?void 0:n},[c,g.hasFeedback&&d(`span`,{class:`${x.value}-textarea-suffix`},[g.feedbackIcon])])}return E(c)}}}),nn={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z`}}]},name:`eye`,theme:`outlined`};function rn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:Object(arguments[t]),r=Object.keys(n);typeof Object.getOwnPropertySymbols==`function`&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){an(e,t,n[t])})}return e}function an(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var on=function(e,t){var n=rn({},e,t.attrs);return d(he,rn({},n,{icon:nn}),null)};on.displayName=`EyeOutlined`,on.inheritAttrs=!1;var sn={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M942.2 486.2Q889.47 375.11 816.7 305l-50.88 50.88C807.31 395.53 843.45 447.4 874.7 512 791.5 684.2 673.4 766 512 766q-72.67 0-133.87-22.38L323 798.75Q408 838 512 838q288.3 0 430.2-300.3a60.29 60.29 0 000-51.5zm-63.57-320.64L836 122.88a8 8 0 00-11.32 0L715.31 232.2Q624.86 186 512 186q-288.3 0-430.2 300.3a60.3 60.3 0 000 51.5q56.69 119.4 136.5 191.41L112.48 835a8 8 0 000 11.31L155.17 889a8 8 0 0011.31 0l712.15-712.12a8 8 0 000-11.32zM149.3 512C232.6 339.8 350.7 258 512 258c54.54 0 104.13 9.36 149.12 28.39l-70.3 70.3a176 176 0 00-238.13 238.13l-83.42 83.42C223.1 637.49 183.3 582.28 149.3 512zm246.7 0a112.11 112.11 0 01146.2-106.69L401.31 546.2A112 112 0 01396 512z`}},{tag:`path`,attrs:{d:`M508 624c-3.46 0-6.87-.16-10.25-.47l-52.82 52.82a176.09 176.09 0 00227.42-227.42l-52.82 52.82c.31 3.38.47 6.79.47 10.25a111.94 111.94 0 01-112 112z`}}]},name:`eye-invisible`,theme:`outlined`};function cn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:Object(arguments[t]),r=Object.keys(n);typeof Object.getOwnPropertySymbols==`function`&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){ln(e,t,n[t])})}return e}function ln(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var un=function(e,t){var n=cn({},e,t.attrs);return d(he,cn({},n,{icon:sn}),null)};un.displayName=`EyeInvisibleOutlined`,un.inheritAttrs=!1;var dn=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},fn={click:`onClick`,hover:`onMouseover`},pn=e=>d(e?on:un,null,null),mn=e({compatConfig:{MODE:3},name:`AInputPassword`,inheritAttrs:!1,props:C(C({},Z()),{prefixCls:String,inputPrefixCls:String,action:{type:String,default:`click`},visibilityToggle:{type:Boolean,default:!0},visible:{type:Boolean,default:void 0},"onUpdate:visible":Function,iconRender:Function}),setup(e,t){let{slots:n,attrs:r,expose:i,emit:a}=t,c=s(!1),u=()=>{let{disabled:t}=e;t||(c.value=!c.value,a(`update:visible`,c.value))};l(()=>{e.visible!==void 0&&(c.value=!!e.visible)});let f=s();i({focus:()=>{var e;(e=f.value)==null||e.focus()},blur:()=>{var e;(e=f.value)==null||e.blur()}});let m=t=>{let{action:r,iconRender:i=n.iconRender||pn}=e,a=fn[r]||``,o=i(c.value),s={[a]:u,class:`${t}-icon`,key:`passwordIcon`,onMousedown:e=>{e.preventDefault()},onMouseup:e=>{e.preventDefault()}};return B(k(o)?o:d(`span`,null,[o]),s)},{prefixCls:g,getPrefixCls:_}=w(`input-password`,e),v=o(()=>_(`input`,e.inputPrefixCls)),y=()=>{let{size:t,visibilityToggle:i}=e,a=dn(e,[`size`,`visibilityToggle`]),o=i&&m(g.value),s=h(g.value,r.class,{[`${g.value}-${t}`]:!!t}),l=C(C(C({},I(a,[`suffix`,`iconRender`,`action`])),r),{type:c.value?`text`:`password`,class:s,prefixCls:v.value,suffix:o});return t&&(l.size=t),d(Q,p({ref:f},l),n)};return()=>y()}});Q.Group=Lt,Q.Search=zt,Q.TextArea=tn,Q.Password=mn,Q.install=function(e){return e.component(Q.name,Q),e.component(Q.Group.name,Q.Group),e.component(Q.Search.name,Q.Search),e.component(Q.TextArea.name,Q.TextArea),e.component(Q.Password.name,Q.Password),e};var hn=Q;export{Pe as C,Se as D,ke as E,_e as O,Le as S,Ae as T,tt as _,Lt as a,Je as b,pt as c,ht as d,ft as f,ct as g,dt as h,zt as i,U as k,G as l,Ct as m,mn as n,K as o,q as p,tn as r,gt as s,hn as t,_t as u,et as v,Me as w,Ke as x,Ye as y};
@@ -1 +0,0 @@
1
- import{C as e,F as t,a as n,et as r,f as i,gt as a,mt as o,x as s,z as c}from"./BSCpFtzG.js";import{$ as l,At as u,Ct as d,F as f,X as p,at as m,kt as h,n as g,nt as _,st as v,t as y}from"./BDUjyaF4.js";import{l as b,o as x,r as S,t as C}from"./Bt_HDizI.js";var w=()=>f()&&window.document.documentElement,T=e=>{if(f()&&window.document.documentElement){let t=Array.isArray(e)?e:[e],{documentElement:n}=window.document;return t.some(e=>e in n.style)}return!1},E=(e,t)=>{if(!T(e))return!1;let n=document.createElement(`div`),r=n.style[e];return n.style[e]=t,n.style[e]!==r};function D(e,t){return!Array.isArray(e)&&t!==void 0?E(e,t):T(e)}var O,k=()=>{if(!w())return!1;if(O!==void 0)return O;let e=document.createElement(`div`);return e.style.display=`flex`,e.style.flexDirection=`column`,e.style.rowGap=`1px`,e.appendChild(document.createElement(`div`)),e.appendChild(document.createElement(`div`)),document.body.appendChild(e),O=e.scrollHeight===1,document.body.removeChild(e),O},A=(()=>{let e=a(!1);return c(()=>{e.value=k()}),e}),j=()=>{let e=a(!1);return t(()=>{e.value=!0}),e},M={type:{type:String},actionFn:Function,close:Function,autofocus:Boolean,prefixCls:String,buttonProps:l(),emitEvent:Boolean,quitOnNullishReturnValue:Boolean};function N(e){return!!(e&&e.then)}var P=e({compatConfig:{MODE:3},name:`ActionButton`,props:M,setup(e,n){let{slots:r}=n,i=a(!1),o=a(),l=a(!1),d,f=j();c(()=>{e.autofocus&&(d=setTimeout(()=>{var e;return((e=v(o.value))?.focus)?.call(e)}))}),t(()=>{clearTimeout(d)});let p=function(){var t,n=[...arguments];(t=e.close)==null||t.call(e,...n)},m=e=>{N(e)&&(l.value=!0,e.then(function(){f.value||(l.value=!1),p(...arguments),i.value=!1},e=>(f.value||(l.value=!1),i.value=!1,Promise.reject(e))))},h=t=>{let{actionFn:n}=e;if(i.value)return;if(i.value=!0,!n){p();return}let r;if(e.emitEvent){if(r=n(t),e.quitOnNullishReturnValue&&!N(r)){i.value=!1,p(t);return}}else if(n.length)r=n(e.close),i.value=!1;else if(r=n(),!r){p();return}m(r)};return()=>{let{type:t,prefixCls:n,buttonProps:i}=e;return s(C,u(u(u({},S(t)),{},{onClick:h,loading:l.value,prefixCls:n},i),{},{ref:o}),r)}}}),F={small:8,middle:16,large:24},I=()=>({prefixCls:String,size:{type:[String,Number,Array]},direction:y.oneOf(_(`horizontal`,`vertical`)).def(`horizontal`),align:y.oneOf(_(`start`,`end`,`center`,`baseline`)),wrap:p()});function L(e){return typeof e==`string`?F[e]:e||0}var R=e({compatConfig:{MODE:3},name:`ASpace`,inheritAttrs:!1,props:I(),slots:Object,setup(e,t){let{slots:a,attrs:c}=t,{prefixCls:l,space:f,direction:p}=g(`space`,e),[_,v]=b(l),y=A(),x=i(()=>e.size??f?.value?.size??`small`),S=o(),C=o();r(x,()=>{[S.value,C.value]=(Array.isArray(x.value)?x.value:[x.value,x.value]).map(e=>L(e))},{immediate:!0});let w=i(()=>e.align===void 0&&e.direction===`horizontal`?`center`:e.align),T=i(()=>d(l.value,v.value,`${l.value}-${e.direction}`,{[`${l.value}-rtl`]:p.value===`rtl`,[`${l.value}-align-${w.value}`]:w.value})),E=i(()=>p.value===`rtl`?`marginLeft`:`marginRight`),D=i(()=>{let t={};return y.value&&(t.columnGap=`${S.value}px`,t.rowGap=`${C.value}px`),h(h({},t),e.wrap&&{flexWrap:`wrap`,marginBottom:`${-C.value}px`})});return()=>{let{wrap:t,direction:r=`horizontal`}=e,i=a.default?.call(a),o=m(i),d=o.length;if(d===0)return null;let f=a.split?.call(a),p=`${l.value}-item`,g=S.value,v=d-1;return s(`div`,u(u({},c),{},{class:[T.value,c.class],style:[D.value,c.style]}),[o.map((e,a)=>{let o=i.indexOf(e);o===-1&&(o=`$$space-${a}`);let c={};return y.value||(r===`vertical`?a<v&&(c={marginBottom:`${g/(f?2:1)}px`}):c=h(h({},a<v&&{[E.value]:`${g/(f?2:1)}px`}),t&&{paddingBottom:`${C.value}px`})),_(s(n,{key:o},[s(`div`,{class:p,style:c},[e]),a<v&&f&&s(`span`,{class:`${p}-split`,style:c},[f])]))})])}}});R.Compact=x,R.install=function(e){return e.component(R.name,R),e.component(x.name,x),e};export{D as a,w as i,P as n,A as r,R as t};
@@ -1 +0,0 @@
1
- import{ft as e}from"./BSCpFtzG.js";import{t}from"./36oeS8_R2.js";var n=class extends Error{code;status;constructor(e,t,n){super(n),this.name=`ApiError`,this.code=e,this.status=t}};function r(e=!0){let t=typeof document<`u`?document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``:``,n={};return t&&(n.authorization=`Bearer ${decodeURIComponent(t)}`),e&&(n[`content-type`]=`application/json`),n}var i=e=>new Promise(t=>setTimeout(t,e));function a(e){let t=(e?.method??`GET`).toUpperCase();return t===`GET`||t===`HEAD`}async function o(e,t,i){let a;try{a=await fetch(e+t,{...i,headers:{...r(!!i?.body),...i?.headers}})}catch{throw new n(`NETWORK`,0,`无法连接服务器,请检查网络或服务状态`)}let o=null;try{o=await a.json()}catch{}if(!a.ok)throw new n(o?.code??`HTTP_${a.status}`,a.status,o?.message||`请求失败(HTTP ${a.status})`);if(o?.code!==0)throw new n(o?.code??`REQUEST_ERROR`,a.status,o?.message||`请求失败`);return o.data}async function s(e){let{base:t,path:r=``,init:s,retries:c=0}=e,l=a(s),u=l?c+1:1,d;for(let e=0;e<u;e++)try{return await o(t,r,s)}catch(t){let r=t instanceof n?t:new n(`INTERNAL_ERROR`,0,t instanceof Error?t.message:String(t)),a=l&&(r.code===`NETWORK`||r.status>=500);if(d=r,!a||e===u-1)throw r;await i(400*(e+1))}throw d??new n(`INTERNAL_ERROR`,0,`请求失败`)}var c=[{key:`temp-sp`,name:`温度设定器`,code:`TEMP · SP`,ch:`烘箱温度设定`,unit:`℃`,min:150,max:200,decimals:1,icon:`thermo`,semantics:`烘箱/熔体温度设定:升高使热塑温度上升(成膜更均匀但能耗高、过热降解风险),降低则偏冷易厚度不均。调整后需等待热惯性(数十秒级)再评估效果。`},{key:`speed-sp`,name:`速度设定器`,code:`LINE · SP`,ch:`产线速度设定`,unit:`m/min`,min:280,max:360,decimals:0,icon:`encoder`,semantics:`产线速度设定:升速提高产能但缩短物料受热时间(温度补偿需联动),降速利于精细工艺。速度变化会同步影响张力与厚度分布。`},{key:`tension-sp`,name:`张力设定器`,code:`TENSION · SP`,ch:`膜张力设定`,unit:`kN`,min:18,max:26,decimals:1,icon:`tension`,semantics:`膜张力设定:张力过大易断膜/拉伸变形,过小则跑偏起皱。调整需平缓,并与速度联动观察。`},{key:`pressure-sp`,name:`压力设定器`,code:`PRESSURE · SP`,ch:`熔体压力设定`,unit:`MPa`,min:.6,max:1.2,decimals:2,icon:`pressure`,semantics:`熔体压力设定:反映挤出/泵送负荷,压力偏高提示阻力大或温度偏低,偏低可能是料位不足。调整需小幅步进。`}],l=[{kind:`mock`,label:`Mock 模拟 PLC`,status:`builtin`,configFields:[]},{kind:`modbus-tcp`,label:`Modbus TCP(PLC/网关 写保持寄存器)`,status:`real`,configFields:[{key:`host`,label:`设备地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.10`,hint:`PLC 或 Modbus 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`Modbus TCP 标准端口 502`},{key:`unitId`,label:`单元号(unitId)`,type:`number`,default:1,hint:`从站地址,常见 1`},{key:`register`,label:`写寄存器地址`,type:`number`,required:!0,placeholder:`40021`,hint:`4xxxx=保持寄存器(写);回读同址校验`},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]},{key:`engMin`,label:`工程量程下限`,type:`number`,hint:`线性换算:eng ∈ [engMin, engMax] ↔ raw ∈ [rawMin, rawMax];float32 且未填原始量程时 raw=eng`},{key:`engMax`,label:`工程量程上限`,type:`number`},{key:`rawMin`,label:`原始值下限`,type:`number`,hint:`如 int16 用 0~2000 表示 0.1 分辨率`},{key:`rawMax`,label:`原始值上限`,type:`number`}]},{kind:`opcua`,label:`OPC UA(PLC/MES 写节点值)`,status:`real`,configFields:[{key:`endpoint`,label:`端点(endpoint)`,type:`string`,required:!0,placeholder:`opc.tcp://192.168.1.10:4840`,hint:`OPC UA 服务器地址`},{key:`nodeId`,label:`节点 ID(NodeId)`,type:`string`,required:!0,placeholder:`ns=2;s=Channel1.Device1.SetTemp`,hint:`要写入的变量节点`},{key:`securityMode`,label:`安全策略`,type:`select`,default:`None`,options:[{value:`None`,label:`None(无加密,内网常用)`},{value:`Sign`,label:`Sign(签名)`},{value:`SignAndEncrypt`,label:`SignAndEncrypt(签名+加密)`}]},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`modbus-rtu`,label:`Modbus RTU over TCP(串口网关 写保持寄存器)`,status:`real`,configFields:[{key:`host`,label:`网关地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.50`,hint:`串口服务器/RTU 转 TCP 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`网关透传端口(常见 502 / 8899 / 26)`},{key:`unitId`,label:`从站地址(unitId)`,type:`number`,default:1,hint:`RS-485 总线上的从站地址`},{key:`register`,label:`写寄存器地址`,type:`number`,required:!0,placeholder:`40021`,hint:`4xxxx=保持寄存器(写);回读同址校验`},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]},{key:`engMin`,label:`工程量程下限`,type:`number`,hint:`线性换算:eng ∈ [engMin, engMax] ↔ raw ∈ [rawMin, rawMax];float32 且未填原始量程时 raw=eng`},{key:`engMax`,label:`工程量程上限`,type:`number`},{key:`rawMin`,label:`原始值下限`,type:`number`},{key:`rawMax`,label:`原始值上限`,type:`number`}]},{kind:`mqtt`,label:`MQTT(发布设定值到 Broker)`,status:`real`,configFields:[{key:`host`,label:`Broker 地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.20`,hint:`MQTT Broker 地址(与边缘网关约定同一 Broker)`},{key:`port`,label:`端口`,type:`number`,default:1883,hint:`MQTT TCP 端口 1883`},{key:`topic`,label:`下发主题(topic)`,type:`string`,required:!0,placeholder:`factory/line1/setpoint`,hint:`网关订阅的控制主题(勿与采集主题相同)`},{key:`jsonKey`,label:`JSON 键(可选)`,type:`string`,placeholder:`setpoint`,hint:`留空 = 纯数字报文;填写 = {"键":值} JSON 报文`},{key:`qos`,label:`QoS`,type:`number`,default:1,hint:`0=至多一次 1=至少一次(推荐)`},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`http`,label:`HTTP/REST(POST 设定值)`,status:`real`,configFields:[{key:`url`,label:`写接口地址(URL)`,type:`string`,required:!0,placeholder:`http://192.168.1.30/api/setpoint`,hint:`接收设定值的 HTTP 接口(POST JSON)`},{key:`bodyKey`,label:`JSON 键(可选)`,type:`string`,placeholder:`setpoint`,hint:`留空 = {"value": 设定值};填写 = {"键": 设定值}`},{key:`headersJSON`,label:`请求头(可选)`,type:`string`,placeholder:`{"Authorization":"Bearer xxx"}`,hint:`JSON 对象形式的 HTTP 头`}]}],u=[`#3aa0ff`,`#f4c542`,`#35e0a0`,`#41c8f4`,`#b58cff`,`#ff8a5c`],d=(e,t)=>s({base:`/api/workshop/dcw`,path:e,init:t,retries:(t?.method??`GET`).toUpperCase()===`GET`?2:0});function f(){let n=e([]),r=e({running:!0,nodesTotal:0,nodesOnline:0,writesTotal:0,writesFailed:0}),i=e(c.map(e=>({...e}))),a=e([]),o=e([]),s=e([]),l=e([]),u=e([]),f=e({}),p=e([]);function m(e){let t=n.findIndex(t=>t.id===e.id);t>=0?n[t]=Object.assign(n[t],e):n.push(e)}function h(e){if(e.node){if(e.op===`removed`){let t=n.findIndex(t=>t.id===e.node.id);t>=0&&n.splice(t,1);return}m(e.node)}}function g(){let e=globalThis;return e.__dcwBusFed?()=>{}:(e.__dcwBusFed=!0,t().subscribe(e=>{if(e.type===`dcw.written`){let t=e.payload,r=n.find(e=>e.id===t.nodeId);r&&(r.value=t.value,r.state=t.ok?`ok`:`error`,r.lastWriteAt=t.at,t.ok&&(r.lastAckAt=t.at)),s.unshift({id:`${t.nodeId}-${t.at}`,nodeId:t.nodeId,nodeName:r?.name??t.nodeId,param:``,eng:t.value,raw:t.raw,ok:t.ok,message:t.message,recipeRunId:t.recipeRunId,at:t.at}),s.length>60&&s.splice(60)}else if(e.type===`dcw.read`){let t=e.payload,r=n.find(e=>e.id===t.nodeId);r&&(t.ok&&(r.readValue=t.value),r.lastReadAt=t.at,r.lastReadError=t.ok?null:t.message)}else if(e.type===`dcw.node.changed`)h(e.payload);else if(e.type===`dcw.controller`)Object.assign(r,e.payload);else if(e.type===`dcw.optimization.changed`){let t=e.payload.record,n=p.findIndex(e=>e.id===t.id);n>=0?p[n]=t:p.unshift(t)}}))}async function _(){try{let e=await d(``);n.splice(0,n.length,...e.nodes),Object.assign(r,e.controller),e.templates?.length&&i.splice(0,i.length,...e.templates.map(e=>({...e}))),a.splice(0,a.length,...e.recipes??[]),o.splice(0,o.length,...e.runs??[]),s.splice(0,s.length,...e.history??[]),l.splice(0,l.length,...e.products??[]),u.splice(0,u.length,...e.lines??[]);for(let e of Object.keys(f))Reflect.deleteProperty(f,e);for(let t of e.lineStates??[])f[t.lineId]=t;v.loaded=!0,v.error=``}catch(e){v.error=e instanceof Error?e.message:String(e)}}let v=e({nodes:n,controller:r,templates:i,recipes:a,runs:o,history:s,products:l,lines:u,lineStates:f,optimizations:p,loaded:!1,error:``,ensureWsFeed:g,load:_,loadOptimizations:async e=>{let t=new URLSearchParams;e?.lineId&&t.set(`lineId`,e.lineId),e?.recipeId&&t.set(`recipeId`,e.recipeId),e?.nodeId&&t.set(`nodeId`,e.nodeId),e?.status&&t.set(`status`,e.status),t.set(`limit`,String(e?.limit??100));let n=await d(`/optimizations?${t.toString()}`);p.splice(0,p.length,...n.records)},fetchLedger:async e=>(await d(`/${e}/param-ledger`)).ledger,optimizationSeries:async(e,t)=>d(`/optimizations/${e}/series${t?`?windowMs=${t}`:``}`),judgeOptimization:async(e,t,n)=>{await d(`/optimizations/${e}/judge`,{method:`POST`,body:JSON.stringify({verdict:t,reason:n})})},rollbackOptimization:async e=>{await d(`/optimizations/${e}/rollback`,{method:`POST`,body:JSON.stringify({})})},rollbackNode:async(e,t)=>{await d(`/journal/node/${e}/rollback`,{method:`POST`,body:JSON.stringify({to:t})})},markGood:async(e,t)=>{await d(`/recipes/${e}/mark-good`,{method:`POST`,body:JSON.stringify({runId:t})})},rollbackRecipeGood:async e=>{await d(`/recipes/${e}/rollback-good`,{method:`POST`,body:JSON.stringify({})})},createFromTemplate:async(e,t)=>{let n=await d(``,{method:`POST`,body:JSON.stringify({templateRef:e,...t})});return m(n.node),n.node},patchNode:async(e,t)=>{await d(`/${e}`,{method:`PATCH`,body:JSON.stringify(t)})},removeNode:async e=>{await d(`/${e}`,{method:`DELETE`});let t=n.findIndex(t=>t.id===e);t>=0&&n.splice(t,1)},bindNode:async(e,t)=>{m((await d(`/${e}/bind`,{method:`POST`,body:JSON.stringify({deviceId:t})})).node)},write:async(e,t)=>d(`/${e}/write`,{method:`POST`,body:JSON.stringify({value:t})}).then(e=>e.outcome),readNode:async e=>d(`/${e}/read`,{method:`POST`,body:JSON.stringify({})}).then(e=>e.read),testDriver:async(e,t)=>d(`/test-driver`,{method:`POST`,body:JSON.stringify({driver:e,driverConfig:t})}).then(e=>e.test),testNode:async e=>d(`/${e}/test`,{method:`POST`}).then(e=>e.test),startStop:async e=>{let t=await d(`/controller`,{method:`POST`,body:JSON.stringify({action:e})});Object.assign(r,t.controller)},createTemplate:async e=>{let t=await d(`/templates`,{method:`POST`,body:JSON.stringify(e)});return i.push(t.template),t.template},createRecipe:async e=>{let t=await d(`/recipes`,{method:`POST`,body:JSON.stringify(e)});return a.push(t.recipe),t.recipe},updateRecipe:async(e,t)=>{let n=await d(`/recipes/${e}`,{method:`PATCH`,body:JSON.stringify(t)}),r=a.findIndex(t=>t.id===e);return r>=0&&(a[r]=n.recipe),n.recipe},removeRecipe:async e=>{await d(`/recipes/${e}`,{method:`DELETE`});let t=a.findIndex(t=>t.id===e);t>=0&&a.splice(t,1)},applyRecipe:async e=>{let t=await d(`/recipes/${e}/apply`,{method:`POST`});return o.push(t.run),t.run},closeRun:async e=>{let t=await d(`/runs/${e}/close`,{method:`POST`}),n=o.findIndex(t=>t.id===e);return n>=0&&(o[n]=t.run),t.run},runData:e=>d(`/runs/${e}/data`),nodeById:e=>n.find(t=>t.id===e),createProduct:async e=>{let t=await d(`/products`,{method:`POST`,body:JSON.stringify(e)});return l.push(t.product),t.product},updateProduct:async(e,t)=>d(`/products/${e}`,{method:`PATCH`,body:JSON.stringify(t)}).then(e=>(y(),e.product)),removeProduct:async e=>{await d(`/products/${e}`,{method:`DELETE`});let t=l.findIndex(t=>t.id===e);t>=0&&l.splice(t,1)},createLine:async e=>{let t=await d(`/lines`,{method:`POST`,body:JSON.stringify(e)});return u.push(t.line),t.line},updateLine:async(e,t)=>{let n=await d(`/lines/${e}`,{method:`PATCH`,body:JSON.stringify(t)}),r=u.findIndex(t=>t.id===e);r>=0&&(u[r]=n.line)},removeLine:async(e,t=!1)=>{await d(`/lines/${e}${t?`?purge=1`:``}`,{method:`DELETE`});let n=u.findIndex(t=>t.id===e);n>=0&&u.splice(n,1),Reflect.deleteProperty(f,e),await _()},startLine:async(e,t)=>{let n=await d(`/lines/${e}/start`,{method:`POST`,body:JSON.stringify({recipeId:t})});f[e]=n.line},stopLine:async e=>{let t=await d(`/lines/${e}/stop`,{method:`POST`});f[e]=t.line},lineStateOf:e=>f[e]??{lineId:e,active:!1,runId:null,recipeId:null,recipeName:null,productId:null,productName:null,startedAt:null,taggedSamples:0},queryLine:e=>{let t=new URLSearchParams;return e.lineId&&t.set(`lineId`,e.lineId),e.productId&&t.set(`productId`,e.productId),e.recipeId&&t.set(`recipeId`,e.recipeId),e.paramKey&&t.set(`paramKey`,e.paramKey),e.nodeId&&t.set(`nodeId`,e.nodeId),e.fromMs!=null&&t.set(`from`,String(e.fromMs)),e.toMs!=null&&t.set(`to`,String(e.toMs)),e.bucketMs!=null&&t.set(`bucketMs`,String(e.bucketMs)),e.limit!=null&&t.set(`limit`,String(e.limit)),d(`/line/query?${t.toString()}`)}});async function y(){try{let e=await d(``);l.splice(0,l.length,...e.products??[]),a.splice(0,a.length,...e.recipes??[])}catch{}}return v}var p=`__dcwStream`;function m(){let e=globalThis;return e[p]||(e[p]=f()),e[p]}export{s as i,l as n,u as r,m as t};
@@ -1 +0,0 @@
1
- import{i as e,s as t,t as n}from"./D5KJ7_0V.js";var r=e(`workshop.user`,{state:()=>({user:null}),getters:{isLoggedIn:e=>e.user!==null,token:e=>e.user?.token??``,isAdmin:e=>e.user?.role===`admin`},actions:{applyCookie(){let e=n(`token`,{maxAge:31536e3});e.value=this.user?.token??null},async _attachTokenId(e){let n=await t(`/api/users/me`,{headers:{authorization:`Bearer ${e}`}});n.code===0&&n.data&&this.user&&(this.user.tokenId=n.data.tokenId)},async register(e,n,r){let i=await t(`/api/users/register`,{method:`POST`,body:{name:e.trim(),email:n.trim(),password:r}});if(i.code!==0||!i.data)throw Error(i.message??`注册失败`);return this.user={...i.data.user,token:i.data.token,tokenId:``},this.applyCookie(),await this._attachTokenId(i.data.token),this.user},async login(e,n){let r=await t(`/api/users/login`,{method:`POST`,body:{email:e.trim(),password:n}});if(r.code!==0||!r.data)throw Error(r.message??`登录失败`);return this.user={...r.data.user,token:r.data.token,tokenId:``},this.applyCookie(),await this._attachTokenId(r.data.token),this.user},async loginWithToken(e){let n=e.trim();if(!n)throw Error(`token 不能为空`);let r=await t(`/api/users/me`,{headers:{authorization:`Bearer ${n}`}});if(r.code!==0||!r.data)throw Error(r.message??`token 无效`);return this.user={...r.data,token:n},this.applyCookie(),this.user},async refresh(){if(this.user)try{await this.loginWithToken(this.user.token)}catch{this.logout()}},async logout(){let e=this.user?.token;if(this.user=null,this.applyCookie(),e)try{await t(`/api/users/logout`,{method:`POST`,headers:{authorization:`Bearer ${e}`}})}catch{}},authHeaders(){let e=this.user?.token;return e?{authorization:`Bearer ${e}`}:{}},async listTokens(){let e=await t(`/api/users/tokens`,{headers:this.authHeaders()});if(e.code!==0||!e.data)throw Error(e.message??`获取 token 列表失败`);return e.data},async createToken(e){let n=await t(`/api/users/tokens`,{method:`POST`,body:{label:e.trim()},headers:this.authHeaders()});if(n.code!==0||!n.data)throw Error(n.message??`创建 token 失败`);return n.data},async renameToken(e,n){let r=await t(`/api/users/tokens/${e}`,{method:`PATCH`,body:{label:n.trim()},headers:this.authHeaders()});if(r.code!==0||!r.data)throw Error(r.message??`更新 token 失败`);return r.data},async revealToken(e){let n=await t(`/api/users/tokens/${e}/token`,{headers:this.authHeaders()});if(n.code!==0||!n.data)throw Error(n.message??`查看 token 失败`);return n.data.token},async revokeToken(e){let n=await t(`/api/users/tokens/${e}`,{method:`DELETE`,headers:this.authHeaders()});if(n.code!==0)throw Error(n.message??`删除 token 失败`);this.user&&e===this.user.tokenId&&this.logout()}},persist:{pick:[`user`]}});export{r as t};
@@ -1 +0,0 @@
1
- import{a as e,d as t,f as n,l as r,u as i}from"./DNJSkm3Q.js";import{D as a,O as o,ot as s,vt as c,w as l}from"./BSCpFtzG.js";import{d as u,n as d,o as f,p,r as m,t as h,u as g,v as _}from"./2LwEn9gX.js";var v=Symbol(`layout-meta`),y=Symbol(`layout`),b=Symbol(`route`),x=n({docsBase:i,reporters:t});function S(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)===`[object Module]`:!0}function C(e,t,n=`.`,r){if(!S(t))return C(e,{},n,r);let i={...t};for(let t of Object.keys(e)){if(t===`__proto__`||t===`constructor`)continue;let a=e[t];a!=null&&(r&&r(i,t,a,n)||(i[t]=Array.isArray(a)&&Array.isArray(i[t])?[...a,...i[t]]:S(a)&&S(i[t])?C(a,i[t],(n?`${n}.`:``)+t.toString(),r):a))}return i}function w(e){return(...t)=>t.reduce((t,n)=>C(t,n,``,e),{})}var T=w();function E(e,t){try{return t in e}catch{return!1}}var D=class extends Error{static __h3_error__=!0;statusCode=500;fatal=!1;unhandled=!1;statusMessage;data;cause;constructor(e,t={}){super(e,t),t.cause&&!this.cause&&(this.cause=t.cause)}toJSON(){let e={message:this.message,statusCode:M(this.statusCode,500)};return this.statusMessage&&(e.statusMessage=j(this.statusMessage)),this.data!==void 0&&(e.data=this.data),e}};function O(e){if(typeof e==`string`)return new D(e);if(k(e))return e;let t=new D(e.message??e.statusMessage??``,{cause:e.cause||e});if(E(e,`stack`))try{Object.defineProperty(t,"stack",{get(){return e.stack}})}catch{try{t.stack=e.stack}catch{}}if(e.data&&(t.data=e.data),e.statusCode?t.statusCode=M(e.statusCode,t.statusCode):e.status&&(t.statusCode=M(e.status,t.statusCode)),e.statusMessage?t.statusMessage=e.statusMessage:e.statusText&&(t.statusMessage=e.statusText),t.statusMessage){let e=t.statusMessage;j(t.statusMessage)!==e&&console.warn("[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default.")}return e.fatal!==void 0&&(t.fatal=e.fatal),e.unhandled!==void 0&&(t.unhandled=e.unhandled),t}function k(e){return e?.constructor?.__h3_error__===!0}var A=/[^\u0009\u0020-\u007E]/g;function j(e=``){return e.replace(A,``)}function M(e,t=200){return!e||(typeof e==`string`&&(e=Number.parseInt(e,10)),e<100||e>999)?t:e}globalThis.Headers,globalThis.Response;var N=()=>e()?.$router;function P(e){let t=e.scope,n=s();for(;n;){if(n===t)return!0;n=n.parent}return!1}var F=(()=>{if(a()){let t=l();if(!t||P(t))return o(b,e()._route)}return e()._route});function I(e){return e}var L=(t,n,r={})=>{let i=e(),a=r.global||typeof t!=`string`,o=typeof t==`string`?n:t;if(!o){x.NUXT_E2006({cause:t});return}a?i._middleware.global.push(o):i._middleware.named[t]=o},R=()=>{try{if(e()._processingMiddleware)return!0}catch{return!1}return!1},z=(t,n)=>{t||=`/`;let r=typeof t==`string`?t:`path`in t?B(t):N().resolve(t).href;if(n?.open){let{protocol:e}=new URL(r,window.location.href);if(e&&f(e))throw x.NUXT_E2002({toPath:r,protocol:e});let{target:t=`_blank`,windowFeatures:i={}}=n.open,a=[];for(let[e,t]of Object.entries(i))t!==void 0&&a.push(`${e.toLowerCase()}=${t}`);return open(r,t,a.join(`, `)),Promise.resolve()}let i=m(r,{acceptRelative:!0}),a=n?.external||i;if(a){if(!n?.external)throw x.NUXT_E2001({toPath:r});let{protocol:e}=new URL(r,window.location.href);if(e&&f(e))throw x.NUXT_E2002({toPath:r,protocol:e})}let o=R();if(!a&&o){if(n?.replace){if(typeof t==`string`){let{pathname:e,search:n,hash:r}=u(t);return{path:e,...n&&{query:g(n)},...r&&{hash:r},replace:!0}}return{...t,replace:!0}}return t}let s=N(),c=e();if(a)return c._scope.stop(),n?.replace?location.replace(r):location.href=r,o?c.isHydrating?new Promise(()=>{}):!1:Promise.resolve();let l=typeof t==`string`?V(t):t;return n?.replace?s.replace(l):s.push(l)};function B(e){return p(e.path||``,e.query||{})+(e.hash||``)}function V(e){let t=u(e);return d(h(t.pathname))+t.search+t.hash}var H=`__nuxt_error`,U=()=>c(e().payload,`error`),W=t=>{let n=Y(t);try{let t=U();e().hooks.callHook(`app:error`,n),t.value||=n}catch{throw n}return n},G=(e,t)=>{let n=e.callHook(`app:error`,Y(t));return r.NUXT_E1012({userAgent:navigator.userAgent,cause:t}),n},K=async(e,t)=>{if(_(navigator.userAgent)){await G(e,t);return}await e.runWithContext(()=>W(t))},q=async(t={})=>{let n=e(),r=U();n.callHook(`app:error:cleared`,t),t.redirect&&await N().replace(t.redirect),r.value=void 0},J=e=>!!e&&typeof e==`object`&&`__nuxt_error`in e,Y=e=>{typeof e!=`string`&&e.statusText&&(e.message??=e.statusText);let t=O(e);return Object.defineProperty(t,H,{value:!0,configurable:!1,writable:!1}),Object.defineProperty(t,"status",{get:()=>t.statusCode,configurable:!0}),Object.defineProperty(t,"statusText",{get:()=>t.statusMessage,configurable:!0}),t};export{v as _,J as a,L as c,z as d,B as f,x as g,T as h,Y as i,I as l,N as m,K as n,W as o,F as p,q as r,U as s,G as t,V as u,y as v,b as y};
@@ -1 +0,0 @@
1
- import{C as e,G as t,H as n,Ht as ee,St as r,Wt as i,a,b as o,et as s,g as c,h as l,lt as u,m as d,mt as f,nt as p,p as m,t as h,x as g,z as _}from"./BSCpFtzG.js";import{B as te,z as v}from"./2LwEn9gX.js";import{d as y}from"./PQLnLxYe.js";import{s as b}from"./D5KJ7_0V.js";import{n as x}from"./uBbDCfTz.js";import{n as S}from"./BeIfu4N3.js";import{t as ne}from"./Bt_HDizI.js";import{r as C}from"./BsMpJf7S.js";import{n as w,t as re}from"./Do88WZG2.js";import{n as ie,t as ae}from"./B4Fia4FB.js";import{t as oe}from"./BYL0Rjqj.js";import{t as se}from"./DM8DS9MA.js";import{t as ce}from"./Du-eSpo2.js";import{t as le}from"./C9f8QMp12.js";import{t as T}from"./NIM0Wglj2.js";import{t as E}from"./C_gFA2H_2.js";import{n as ue,t as de}from"./ZugRk0CM2.js";import{t as fe}from"./CNs_Ozdc2.js";var pe={class:`page`},me={key:0,class:`auth-gate aw-orbs`},he={class:`sub`},ge={class:`hint`},_e={class:`hint`},ve={class:`aw-page-head`},D={class:`sub`},O={class:`head-acts`},k={class:`lib-links`},A={class:`grid`},j={class:`card-head`},M={class:`name`},N={class:`card-body`},P=[`onClick`],F={class:`ch-name`},ye={class:`ch-meta`},be={key:0,class:`empty`},xe={class:`card-foot`},Se=[`onClick`],Ce=[`onClick`],I=h(e({__name:`index`,setup(e){let{t:h}=S();fe({layout:`default`});let I=T(),L=E(),R=ue(),{subscribe:we}=de(),z=f(`login`),B=f(``),V=f(``),H=f(``),U=f(``),W=f(!1),G=f(!1);_(async()=>{try{let e=await b(`/api/users/setup-status`);e.code===0&&e.data?.needsSetup&&(G.value=!0,z.value=`register`)}catch{}});let K=async()=>{if(!B.value.trim()){C.warning(h(`wsHome.k1vnhyks019`));return}if(!V.value.trim()){C.warning(h(`wsHome.k8ieqzj020`));return}if(H.value.length<6){C.warning(h(`wsHome.ksx73ra021`));return}W.value=!0;try{let e=await I.register(B.value,V.value,H.value);C.success(G.value?`管理员账号创建成功:${e.name} 已进入系统`:h(`wsHome.k1mbatbh030`,{p0:e.name})),G.value=!1,B.value=``,V.value=``,H.value=``}catch(e){C.error(e instanceof Error?e.message:String(e))}finally{W.value=!1}},q=async()=>{if(!V.value.trim()){C.warning(h(`wsHome.k8ieqzj020`));return}W.value=!0;try{let e=await I.login(V.value,H.value);C.success(h(`wsHome.kwixbdl031`,{p0:e.name})),G.value=!1,H.value=``}catch(e){C.error(e instanceof Error?e.message:String(e))}finally{W.value=!1}},J=async()=>{W.value=!0;try{let e=await I.loginWithToken(U.value);C.success(h(`wsHome.kwixbdl031`,{p0:e.name})),G.value=!1,U.value=``}catch(e){C.error(e instanceof Error?e.message:String(e))}finally{W.value=!1}},Te=()=>{I.logout(),C.success(h(`wsHome.k3ngm6p022`))},Y=f(!1);s(()=>I.isLoggedIn,async e=>{if(!e){Y.value=!1;return}if(await I.refresh(),I.isLoggedIn)try{await L.load(),Y.value=!0}catch(e){C.error(e instanceof Error?e.message:h(`wsHome.k1br33vc023`))}},{immediate:!0}),s(()=>Y.value&&L.workspaces.map(e=>e.channelIds.join(`,`)).join(`|`),()=>{if(Y.value)for(let e of L.workspaces)for(let t of e.channelIds)we(t)},{immediate:!0});let X=f(!1),Z=f(``),Q=f(!1),$=async()=>{let e=Z.value.trim();if(!e){C.warning(`Workspace 名称必填`);return}Q.value=!0;try{let t=await L.create(e);X.value=!1,Z.value=``,L.setActiveWorkspaceId(t.id),y(`/workshop/w/${t.id}`)}catch(e){C.error(e instanceof Error?e.message:String(e))}finally{Q.value=!1}},Ee=async e=>{await L.remove(e),C.success(h(`wsHome.k3n5sd7024`))},De=e=>e.map(e=>{let t=R.channels[e],n=R.agents[e]??[];return{id:e,name:t?.name??e.slice(0,8),synced:t!==void 0,agents:n.length,busy:n.filter(e=>e.state===`busy`).length,activeTasks:(R.tasks[e]??[]).filter(e=>![`COMPLETED`,`CANCELED`,`FAILED`].includes(e.state)).length}});return x({title:()=>h(`titles.workshop`)}),(e,s)=>{let f=re,h=w,_=ne,b=ce,x=ie,S=ae,C=se,T=le,E=oe;return n(),c(`div`,pe,[r(I).isLoggedIn?(n(),c(a,{key:1},[m(`div`,ve,[m(`div`,null,[s[16]||=m(`p`,{class:`aw-kicker`},` workshop / overview `,-1),m(`h1`,null,`Workshop `+i(e.$t(`wsHome.k3n4m5c025`)),1),m(`p`,D,i(r(I).user?.name)+` `+i(e.$t(`wsHome.ke16e53026`)),1)]),m(`div`,O,[m(`div`,k,[m(`button`,{type:`button`,class:`lib-link`,onClick:s[7]||=t=>(`navigateTo`in e?e.navigateTo:r(y))(`/workshop/agents`)},i(e.$t(`wsHome.k3pa5h4013`)),1),m(`button`,{type:`button`,class:`lib-link`,onClick:s[8]||=t=>(`navigateTo`in e?e.navigateTo:r(y))(`/workshop/teams`)},i(e.$t(`wsHome.k3svl8y014`)),1),m(`button`,{type:`button`,class:`lib-link`,onClick:s[9]||=t=>(`navigateTo`in e?e.navigateTo:r(y))(`/workshop/channel-templates`)},` Channel `+i(e.$t(`wsHome.k41ds5027`)),1),m(`button`,{type:`button`,class:`lib-link`,onClick:s[10]||=t=>(`navigateTo`in e?e.navigateTo:r(y))(`/tokens`)},` API Token `),m(`button`,{type:`button`,class:`lib-link`,onClick:Te},i(e.$t(`wsHome.k484e7015`)),1)]),m(`button`,{class:`aw-pill im`,onClick:s[11]||=e=>X.value=!0},[s[17]||=m(`span`,{class:`i-tabler-plus im-pop`},null,-1),o(` `+i(e.$t(`wsHome.newWs`)),1)])])]),g(T,{spinning:!r(Y)},{default:p(()=>[m(`div`,A,[(n(!0),c(a,null,t(r(L).workspaces,u=>(n(),c(`div`,{key:u.id,class:`card`},[m(`div`,j,[s[18]||=m(`span`,{class:`card-mark`},[m(`span`,{class:`i-tabler-box`})],-1),m(`span`,M,i(u.name),1)]),m(`div`,N,[(n(!0),c(a,null,t(De(u.channelIds),t=>(n(),c(`div`,{key:t.id,class:`ch-row`,onClick:t=>(`navigateTo`in e?e.navigateTo:r(y))(`/workshop/w/${u.id}`)},[m(`span`,{class:ee([`dot`,{live:t.activeTasks>0}])},null,2),m(`span`,F,i(t.name),1),m(`span`,ye,[t.synced?(n(),c(a,{key:0},[o(i(t.agents)+` `+i(e.$t(`wsHome.k1ggoa45028`))+` `+i(t.busy)+` / `+i(e.$t(`wsHome.k3wcox029`))+` `+i(t.activeTasks),1)],64)):(n(),c(a,{key:1},[o(i(e.$t(`wsHome.k1bst7s9016`)),1)],64))])],8,P))),128)),u.channelIds.length===0?(n(),c(`div`,be,i(e.$t(`wsHome.k1ylgrbc017`)),1)):l(``,!0)]),m(`div`,xe,[m(`button`,{class:`aw-pill outline im`,onClick:t=>(`navigateTo`in e?e.navigateTo:r(y))(`/workshop/w/${u.id}`)},[s[19]||=m(`span`,{class:`i-tabler-arrow-right im-pop`},null,-1),o(` `+i(e.$t(`wsHome.kr1uwwi018`)),1)],8,Se),m(`button`,{class:`aw-ghost im`,title:`删除 Workspace`,onClick:te(e=>Ee(u.id),[`stop`])},[...s[20]||=[m(`span`,{class:`i-tabler-trash im-shake`},null,-1)]],8,Ce)])]))),128)),r(L).workspaces.length===0&&r(Y)?(n(),c(`div`,{key:0,class:`card placeholder`,onClick:s[12]||=e=>X.value=!0},[...s[21]||=[m(`span`,{class:`i-tabler-plus big`},null,-1),m(`span`,null,`新建第一个 Workspace`,-1)]])):l(``,!0)])]),_:1},8,[`spinning`]),g(E,{open:r(X),"onUpdate:open":s[14]||=e=>u(X)?X.value=e:null,title:e.$t(`wsHome.newWs`),"confirm-loading":r(Q),"ok-text":`创建并进入`,"cancel-text":`取消`,onOk:$},{default:p(()=>[g(f,{value:r(Z),"onUpdate:value":s[13]||=e=>u(Z)?Z.value=e:null,placeholder:e.$t(`wsHome.ksmpk8l007`),onKeydown:v($,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`open`,`title`,`confirm-loading`])],64)):(n(),c(`div`,me,[g(C,{class:`auth-card`},{default:p(()=>[s[15]||=m(`p`,{class:`aw-kicker`},` agentworkshop / sign in `,-1),m(`h2`,null,i(r(G)?`创建管理员账号`:e.$t(`wsHome.kr0vzqu008`)),1),m(`p`,he,i(r(G)?`系统尚无任何用户:首个注册的账号将成为管理员,创建后自动进入系统。`:`全局用户系统统管身份;每个用户可管理多个 API Token,管理 API 需用户 token(Authorization: Bearer)。`),1),g(S,{"active-key":r(z),"onUpdate:activeKey":s[6]||=e=>u(z)?z.value=e:null},{default:p(()=>[r(G)?l(``,!0):(n(),d(x,{key:`login`,tab:`账号登录`},{default:p(()=>[g(b,{direction:`vertical`,style:{width:`100%`}},{default:p(()=>[g(f,{value:r(V),"onUpdate:value":s[0]||=e=>u(V)?V.value=e:null,type:`email`,placeholder:e.$t(`wsHome.k48h2c001`),onKeydown:v(q,[`enter`])},null,8,[`value`,`placeholder`]),g(h,{value:r(H),"onUpdate:value":s[1]||=e=>u(H)?H.value=e:null,placeholder:e.$t(`wsHome.k3yvgs002`),onKeydown:v(q,[`enter`])},null,8,[`value`,`placeholder`]),g(_,{type:`primary`,block:``,loading:r(W),onClick:q},{default:p(()=>[o(i(e.$t(`wsHome.k43kol009`)),1)]),_:1},8,[`loading`]),m(`p`,ge,i(e.$t(`wsHome.k17x74cj010`)),1)]),_:1})]),_:1})),g(x,{key:`register`,tab:r(G)?`注册管理员`:`注册新用户`},{default:p(()=>[g(b,{direction:`vertical`,style:{width:`100%`}},{default:p(()=>[g(f,{value:r(B),"onUpdate:value":s[2]||=e=>u(B)?B.value=e:null,placeholder:e.$t(`wsHome.kwgbai9003`)},null,8,[`value`,`placeholder`]),g(f,{value:r(V),"onUpdate:value":s[3]||=e=>u(V)?V.value=e:null,type:`email`,placeholder:e.$t(`wsHome.kizjkbo004`)},null,8,[`value`,`placeholder`]),g(h,{value:r(H),"onUpdate:value":s[4]||=e=>u(H)?H.value=e:null,placeholder:e.$t(`wsHome.kh3cqfn005`),onKeydown:v(K,[`enter`])},null,8,[`value`,`placeholder`]),g(_,{type:`primary`,block:``,loading:r(W),onClick:K},{default:p(()=>[o(i(r(G)?`创建管理员并进入`:e.$t(`wsHome.k1so6a0v011`)),1)]),_:1},8,[`loading`]),m(`p`,_e,i(e.$t(`wsHome.k1r0a4u3012`)),1)]),_:1})]),_:1},8,[`tab`]),r(G)?l(``,!0):(n(),d(x,{key:`token`,tab:`Token 登录`},{default:p(()=>[g(b,{direction:`vertical`,style:{width:`100%`}},{default:p(()=>[g(h,{value:r(U),"onUpdate:value":s[5]||=e=>u(U)?U.value=e:null,placeholder:e.$t(`wsHome.k15qunld006`),onKeydown:v(J,[`enter`])},null,8,[`value`,`placeholder`]),g(_,{type:`primary`,block:``,loading:r(W),onClick:J},{default:p(()=>[o(i(e.$t(`wsHome.k43kol009`)),1)]),_:1},8,[`loading`])]),_:1})]),_:1}))]),_:1},8,[`active-key`])]),_:1})]))])}}}),[[`__scopeId`,`data-v-543af01e`]]);export{I as default};
@@ -1 +0,0 @@
1
- .model-preview-3d[data-v-b29ffdbe]{border:1px solid var(--hud-line,#263340);background:radial-gradient(120% 90% at 50% 20%,#41c8f41f,#0000 62%),linear-gradient(#0b121b,#0e141d);border-radius:2px;width:100%;min-height:40px;position:relative;overflow:hidden}.mp-loading[data-v-b29ffdbe]{place-items:center;display:grid;position:absolute;inset:0}.mp-spin[data-v-b29ffdbe]{border:2px solid #41c8f440;border-top-color:#41c8f4;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite mp-spin-b29ffdbe}@keyframes mp-spin-b29ffdbe{to{transform:rotate(1turn)}}.mp-failed[data-v-b29ffdbe]{font-family:var(--font-mono);letter-spacing:.12em;color:var(--hud-dim,#7f919e);place-items:center;font-size:9px;display:grid;position:absolute;inset:0}.asset-lib[data-v-c83e9503]{width:184px;font-family:var(--font-body);flex-direction:column;flex:none;gap:8px;padding:0 0 10px;display:flex}.lib-head[data-v-c83e9503]{border-bottom:1px solid #26334073;align-items:center;gap:7px;padding:10px 12px 6px;display:flex}.head-title[data-v-c83e9503]{font-family:var(--font-mono);letter-spacing:.16em;color:var(--hud-text,#d9e4ee);white-space:nowrap;font-size:10px;font-weight:600}.head-hint[data-v-c83e9503]{font-family:var(--font-mono);color:var(--hud-faint,#5b6c7b);white-space:nowrap;margin-left:auto;font-size:8.5px}.upload-box[data-v-c83e9503]{transition:border-color .16s var(--hud-ease,ease), background .16s var(--hud-ease,ease);background:#0b101866;border:1px dashed #263340cc;border-radius:2px;flex-direction:column;gap:7px;margin:8px 10px 0;padding:7px;display:flex}.upload-box.drop[data-v-c83e9503]{border-color:var(--hud-accent,#4da3ff);background:#4da3ff14}.upload-row[data-v-c83e9503]{cursor:pointer;align-items:center;gap:6px;min-height:26px;display:flex}.file-input[data-v-c83e9503]{display:none}.upload-name[data-v-c83e9503]{font-family:var(--font-mono);color:var(--hud-dim,#8496a5);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;font-size:10px;display:inline-flex;overflow:hidden}.upload-ico[data-v-c83e9503]{color:var(--hud-accent,#4da3ff);font-size:13px}.drop-hint[data-v-c83e9503]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-accent,#4da3ff);align-items:center;gap:5px;padding:2px 0 4px;font-size:10px;display:inline-flex}.upload-file-tag[data-v-c83e9503]{font-family:var(--font-mono);color:var(--hud-dim,#8496a5);border:1px solid var(--hud-line,#263340);border-radius:2px;padding:3px 6px;font-size:9.5px}.upload-actions[data-v-c83e9503]{align-items:center;gap:6px;display:flex}.upload-btn[data-v-c83e9503]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-text,#d9e4ee);background:var(--hud-panel-raised,#141b26);border:1px solid var(--hud-line,#263340);cursor:pointer;transition:border-color .14s var(--hud-ease,ease), color .14s var(--hud-ease,ease);border-radius:2px;padding:5px 10px;font-size:10px;font-weight:600}.upload-btn[data-v-c83e9503]:hover:not(:disabled){border-color:var(--hud-accent,#4da3ff);color:var(--hud-accent,#4da3ff)}.upload-btn[data-v-c83e9503]:disabled{opacity:.45;cursor:default}.upload-btn.go[data-v-c83e9503]{color:var(--hud-amber,#f5a742);background:#f5a74214;border-color:#f5a7428c}.upload-btn.go[data-v-c83e9503]:hover:not(:disabled){border-color:var(--hud-amber,#f5a742);color:var(--hud-amber,#f5a742);background:#f5a74229}.mini-err[data-v-c83e9503]{font-family:var(--font-mono);color:var(--hud-danger,#ff6b5c);font-size:9.5px}.mini-err[data-v-c83e9503],.mini-msg[data-v-c83e9503]{font-size:10px}.mini-msg[data-v-c83e9503]{font-family:var(--font-mono);color:var(--hud-dim,#8496a5);padding:0 10px}.lib-grid[data-v-c83e9503]{flex-direction:column;gap:4px;max-height:42vh;padding:6px 10px 2px;display:flex;overflow:hidden auto}.model-card[data-v-c83e9503]{cursor:grab;transition:background .14s var(--hud-ease,ease);background:#141b26a6;border:0;border-radius:2px;flex-direction:column;align-items:stretch;gap:4px;padding:6px;display:flex;position:relative}.model-card[data-v-c83e9503]:hover{background:var(--hud-panel-hover,#1a2432)}.model-card[data-v-c83e9503]:active{cursor:grabbing}.model-card .model-preview-3d[data-v-c83e9503]{margin-bottom:2px}.model-name[data-v-c83e9503]{color:var(--hud-text,#d9e4ee);text-align:left;text-overflow:ellipsis;white-space:nowrap;padding:0 2px;font-size:11px;font-weight:600;overflow:hidden}.model-badge[data-v-c83e9503]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-faint,#5b6c7b);text-align:left;padding:0 2px;font-size:8.5px}.card-actions[data-v-c83e9503]{justify-content:flex-end;gap:4px;display:flex}.card-btn[data-v-c83e9503]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-text,#d9e4ee);border:1px solid var(--hud-line,#263340);cursor:pointer;transition:border-color .14s var(--hud-ease,ease), color .14s var(--hud-ease,ease);background:0 0;border-radius:2px;padding:2px 8px;font-size:10px;font-weight:600}.card-btn[data-v-c83e9503]:hover:not(:disabled){border-color:var(--hud-accent,#4da3ff);color:var(--hud-accent,#4da3ff)}.card-btn.danger[data-v-c83e9503]{color:var(--hud-danger,#ff6b5c)}.card-btn.danger[data-v-c83e9503]:hover:not(:disabled){border-color:var(--hud-danger,#ff6b5c);color:var(--hud-danger,#ff6b5c)}.card-btn[data-v-c83e9503]:disabled{opacity:.45;cursor:default}.model-img[data-v-c83e9503]{-o-object-fit:contain;object-fit:contain;pointer-events:none;width:46px;height:68px}.model-img.glb[data-v-c83e9503]{background:var(--hud-input,#0b1018);border:1px dashed var(--hud-line,#263340);border-radius:2px;justify-content:center;align-items:center;width:100%;height:44px;display:inline-flex}.glb-cube[data-v-c83e9503]{color:var(--hud-faint,#5b6c7b);font-size:24px;line-height:1}.lib-note[data-v-c83e9503]{font-family:var(--font-mono);color:var(--hud-faint,#5b6c7b);align-items:center;gap:7px;padding:8px 2px;font-size:9.5px;display:flex}.loading-dot[data-v-c83e9503]{border:2px solid var(--hud-line,#263340);border-top-color:var(--hud-accent,#4da3ff);border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin-c83e9503}@keyframes spin-c83e9503{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.loading-dot[data-v-c83e9503]{animation:none}}.twin-panel[data-v-15ec18ea]{width:auto;box-shadow:none;background:0 0;border:0;border-radius:0;flex-direction:column;flex:none;gap:8px;padding:0;display:flex}.twin-head[data-v-15ec18ea]{border-bottom:1px solid #26334073;align-items:center;gap:8px;padding:10px 12px 6px;display:flex}.twin-error[data-v-15ec18ea]{color:#ffb4b4;word-break:break-all;background:#ff6b6b1a;border:1px solid #ff6b6b59;border-radius:8px;padding:7px 10px;font-size:11px;line-height:1.5}.twin-kicker[data-v-15ec18ea]{font-family:var(--font-mono);letter-spacing:.16em;color:var(--hud-text,#d9e4ee);font-size:10px;font-weight:600}.twin-count[data-v-15ec18ea]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-dim,#8496a5);margin-left:auto;font-size:10px}.twin-empty[data-v-15ec18ea]{padding:10px}.twin-empty-frame[data-v-15ec18ea]{border:1px dashed var(--hud-line);flex-direction:column;gap:4px;padding:12px 10px;display:flex}.twin-empty-title[data-v-15ec18ea]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-text);font-size:11px}.twin-empty-sub[data-v-15ec18ea]{color:var(--hud-dim);font-size:10px;line-height:1.6}.twin-list[data-v-15ec18ea]{flex-direction:column;gap:4px;max-height:46vh;padding:4px 0 10px;display:flex;overflow:hidden auto}.twin-card[data-v-15ec18ea]{text-align:left;cursor:pointer;background:#141b26a6;border:0;border-radius:2px;flex-direction:column;gap:6px;margin:0 10px;padding:8px 9px;transition:background .16s;display:flex}.twin-card[data-v-15ec18ea]:hover{background:var(--hud-panel-hover)}.twin-card[data-v-15ec18ea]:active{background:var(--hud-panel-raised)}.twin-card:hover .twin-name[data-v-15ec18ea]{color:#e8f1f8}.twin-card.daq[data-v-15ec18ea]{background:#35e0a00f;border:1px solid #35e0a052}.twin-card.daq[data-v-15ec18ea]:hover{background:#35e0a01c;border-color:#35e0a080}.twin-card.daq .twin-code[data-v-15ec18ea],.twin-card.daq .twin-model-tag[data-v-15ec18ea]{color:var(--hud-accent,#35e0a0)}.twin-row[data-v-15ec18ea]{align-items:center;gap:8px;min-width:0;display:flex}.twin-model-tag[data-v-15ec18ea]{min-width:30px;font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-faint);flex:none;font-size:9px;font-weight:600}.twin-idbar[data-v-15ec18ea]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.twin-name[data-v-15ec18ea]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:600;overflow:hidden}.twin-code[data-v-15ec18ea]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-dim);font-size:9px}.twin-del[data-v-15ec18ea]{width:18px;height:18px;font-family:var(--font-mono);color:var(--hud-dim,#8496a5);border:1px solid var(--hud-line,#263340);cursor:pointer;background:0 0;border-radius:2px;flex:none;font-size:9px;line-height:1;transition:border-color .14s,color .14s,background .14s}.twin-del[data-v-15ec18ea]:hover:not(:disabled){border-color:var(--hud-danger,#ff6b5c);color:var(--hud-danger,#ff6b5c)}.twin-del.armed[data-v-15ec18ea]{color:#1a0d0a;background:var(--hud-danger,#ff6b5c);border-color:var(--hud-danger,#ff6b5c);width:auto;padding:0 5px}.twin-del[data-v-15ec18ea]:disabled{opacity:.4;cursor:default}.twin-state[data-v-15ec18ea]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-dim);border:1px solid var(--hud-line);border-radius:2px;flex:none;align-items:center;gap:5px;padding:2px 5px;font-size:8.5px;display:inline-flex}.twin-state.s-alarm[data-v-15ec18ea]{color:var(--hud-danger);border-color:#ff6b5c80}.twin-state.s-running[data-v-15ec18ea]{color:var(--hud-ok);border-color:#7fd4a066}.twin-state-dot[data-v-15ec18ea]{border-radius:50%;width:5px;height:5px}.twin-tele[data-v-15ec18ea]{border-top:1px dashed var(--hud-line);grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 10px;margin:0 0 2px;padding-top:6px;display:grid}.tele-item[data-v-15ec18ea]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-dim);justify-content:space-between;gap:6px;min-width:0;font-size:9.5px;display:flex}.tele-item em[data-v-15ec18ea]{text-overflow:ellipsis;font-style:normal;overflow:hidden}.tele-item b[data-v-15ec18ea]{color:var(--hud-text);font-weight:500}.twin-daq[data-v-15ec18ea]{border-top:1px dashed #35e0a04d;flex-direction:column;gap:2px;margin:0 0 2px;padding-top:6px;display:flex}.daq-item[data-v-15ec18ea]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-accent,#35e0a0);justify-content:space-between;align-items:baseline;gap:6px;min-width:0;font-size:9.5px;display:flex}.daq-item em[data-v-15ec18ea]{text-overflow:ellipsis;white-space:nowrap;opacity:.85;font-style:normal;overflow:hidden}.daq-item b[data-v-15ec18ea]{white-space:nowrap;font-size:10.5px;font-weight:700}.daq-item b i[data-v-15ec18ea]{opacity:.75;margin-left:2px;font-size:8.5px;font-style:normal;font-weight:500}.daq-item.alarm[data-v-15ec18ea]{color:var(--hud-amber,#f6c453)}.twin-dcw[data-v-15ec18ea]{border-top:1px dashed #f0a04c59;flex-direction:column;gap:6px;margin:0 0 2px;padding-top:6px;display:flex}.dcw-item[data-v-15ec18ea]{flex-direction:column;gap:3px;display:flex}.dcw-head[data-v-15ec18ea]{font-family:var(--font-mono);color:var(--hud-dim);justify-content:space-between;align-items:baseline;gap:6px;font-size:9.5px;display:flex}.dcw-head em[data-v-15ec18ea]{text-overflow:ellipsis;white-space:nowrap;font-style:normal;overflow:hidden}.dcw-src[data-v-15ec18ea]{color:var(--hud-amber,#f6c453);border:1px solid #f0a04c80;border-radius:2px;margin-left:4px;padding:0 3px;font-size:8px;font-style:normal}.dcw-set[data-v-15ec18ea]{font-variant-numeric:tabular-nums;color:var(--hud-amber,#f6c453);white-space:nowrap;font-size:12px;font-weight:700}.dcw-set i[data-v-15ec18ea]{opacity:.75;margin-left:2px;font-size:8.5px;font-style:normal;font-weight:500}.dcw-act[data-v-15ec18ea]{font-family:var(--font-mono);color:var(--hud-dim);justify-content:space-between;align-items:baseline;gap:6px;font-size:9px;display:flex}.dcw-act em[data-v-15ec18ea]{letter-spacing:.08em;color:var(--hud-faint);font-size:8px;font-style:normal}.dcw-act b[data-v-15ec18ea]{font-variant-numeric:tabular-nums;color:var(--hud-accent,#35e0a0);white-space:nowrap;font-size:11.5px;font-weight:700}.dcw-act b i[data-v-15ec18ea]{opacity:.75;margin-left:2px;font-size:8.5px;font-style:normal;font-weight:500}.dcw-act-at[data-v-15ec18ea]{color:var(--hud-faint);font-size:8px;font-style:normal}.dcw-win[data-v-15ec18ea]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-faint);letter-spacing:.04em;font-size:8.5px}.dcw-win span[data-v-15ec18ea]{border-bottom:1px dotted var(--hud-line);padding-bottom:1px}.dcw-ctrl[data-v-15ec18ea]{align-items:center;gap:4px;display:flex}.dcw-ctrl .ctrl-input[data-v-15ec18ea]{flex:1;width:auto;min-width:0}.dcw-send[data-v-15ec18ea]{color:var(--hud-amber,#f6c453);border-color:#f0a04c80;flex:none}.dcw-send[data-v-15ec18ea]:hover:not(:disabled){color:var(--hud-amber,#f6c453);border-color:var(--hud-amber,#f6c453);background:#f0a04c1f}.dcw-err[data-v-15ec18ea]{font-family:var(--font-mono);color:var(--hud-danger,#ff6b5c);font-size:8.5px}.ctrl-btn[data-v-15ec18ea]{letter-spacing:.06em;font-size:9px;font-weight:600;font-family:var(--font-mono);color:var(--hud-text);border:1px solid var(--hud-line);cursor:pointer;background:0 0;border-radius:2px;padding:3px 7px;transition:border-color .14s,color .14s,background .14s}.ctrl-btn[data-v-15ec18ea]:hover:not(:disabled){border-color:var(--hud-accent);color:var(--hud-accent)}.ctrl-btn[data-v-15ec18ea]:disabled{opacity:.45;cursor:default}.ctrl-input[data-v-15ec18ea]{width:48px;font-family:var(--font-mono);border:1px solid var(--hud-line);background:var(--hud-input);color:var(--hud-text);font-variant-numeric:tabular-nums;border-radius:2px;padding:3px 6px;font-size:10px}.ctrl-input[data-v-15ec18ea]:focus{border-color:var(--hud-accent);outline:none}.twin-err[data-v-15ec18ea]{color:var(--hud-danger);padding:0 10px 8px;font-size:9.5px}.town-view[data-v-ee250387]{--hud-bg:#070b13;--hud-panel:#0d1420;--hud-panel-2:#111a2b;--hud-panel-raised:#152034;--hud-panel-hover:#16233a;--hud-line:#1d2a42;--hud-line-soft:#16202f;--hud-line-hi:#2c4568;--hud-input:#0a111d;--hud-text:#e8eef8;--hud-dim:#8fa0b5;--hud-faint:#5f6e84;--hud-accent:#35e0a0;--hud-accent-dim:#1f9e6e;--hud-cyan:#41c8f4;--hud-amber:#f6c453;--hud-ok:#35e0a0;--hud-danger:#ff6b6b;--hud-shadow:0 16px 40px #0000008c;--hud-ease:cubic-bezier(.22, .68, .36, 1);--hud-r-sm:8px;--hud-r-md:10px;--hud-r-lg:12px;background:var(--hud-bg);height:100%;min-height:0;color:var(--hud-text);font-family:var(--font-body);flex-direction:column;font-size:13px;display:flex}.topnav[data-v-ee250387]{border-bottom:1px solid var(--hud-line-soft);z-index:60;background:linear-gradient(#0c1320,#0a101b);flex:none;align-items:center;gap:14px;height:50px;padding:0 16px;display:flex;position:relative}.topnav[data-v-ee250387]:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000 4%,#35e0a059 50%,#0000 96%);height:1px;position:absolute;bottom:-1px;left:0;right:0}.brand[data-v-ee250387]{align-items:center;gap:10px;min-width:230px;display:flex}.brand-glyph[data-v-ee250387]{flex:none;width:26px;height:26px}.brand-name[data-v-ee250387]{letter-spacing:.06em;font-size:14.5px;font-weight:800}.brand-name em[data-v-ee250387]{color:var(--hud-accent);font-style:normal}.brand-sub[data-v-ee250387]{color:var(--hud-faint);letter-spacing:.18em;margin-top:2px;font-size:10px}.nav-tabs[data-v-ee250387]{align-items:center;gap:10px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.nav-action[data-v-ee250387]{border-radius:var(--hud-r-sm);height:32px;color:var(--hud-text);transition:background .15s var(--hud-ease), border-color .15s var(--hud-ease);background:0 0;border:1px solid #27395c;padding:0 14px;font-size:12px;font-weight:600}.nav-action[data-v-ee250387]:hover{background:#14203a;border-color:#33507c}.save-chip[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.08em;border:1px solid var(--hud-line);color:var(--hud-dim);white-space:nowrap;border-radius:6px;padding:3px 9px;font-size:10px}.save-chip.s-dirty[data-v-ee250387]{color:var(--hud-amber);border-color:#f6c45366}.save-chip.s-saving[data-v-ee250387]{color:var(--hud-dim)}.save-chip.s-saved[data-v-ee250387]{color:var(--hud-accent);border-color:#35e0a066}.save-chip.s-error[data-v-ee250387]{color:var(--hud-danger);border-color:#ff6b6b66}.nav-right[data-v-ee250387]{align-items:center;gap:10px;margin-left:auto;display:flex}.nav-chip[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-dim);border:1px solid var(--hud-line);font-variant-numeric:tabular-nums;border-radius:6px;padding:2px 8px;font-size:10.5px}.avatar-chip[data-v-ee250387]{border:1px solid var(--hud-line-soft);background:#0e1626;border-radius:999px;align-items:center;gap:8px;padding:4px 10px 4px 4px;display:flex}.avatar-chip span[data-v-ee250387]{color:var(--hud-text);font-size:12px}.avatar-fallback[data-v-ee250387]{color:#04120c;background:linear-gradient(135deg,#1f9e6e,#41c8f4);border-radius:50%;place-items:center;width:24px;height:24px;font-size:10px;font-weight:700;display:grid}.seg[data-v-ee250387]{border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);background:#0a111d;padding:2px;display:inline-flex}.seg button[data-v-ee250387]{color:var(--hud-dim);transition:background .15s var(--hud-ease), color .15s var(--hud-ease);border-radius:6px;padding:4px 16px;font-size:11.5px;font-weight:600}.seg button.on[data-v-ee250387]{background:var(--hud-accent);color:#04120c;box-shadow:0 0 12px #35e0a059}.app[data-v-ee250387]{flex:1;grid-template-columns:250px minmax(540px,1fr) 342px;min-height:0;display:grid}.rail[data-v-ee250387]{background:linear-gradient(#0a101c,#080d16);flex-direction:column;gap:10px;min-height:0;padding:10px;display:flex;overflow:hidden auto}.rail-left[data-v-ee250387]{border-right:1px solid var(--hud-line-soft)}.rail-right[data-v-ee250387]{border-left:1px solid var(--hud-line-soft)}.rail[data-v-ee250387]::-webkit-scrollbar{width:8px}.rail[data-v-ee250387]::-webkit-scrollbar-thumb{background:#1c2942;border:2px solid #080d16;border-radius:4px}.rail[data-v-ee250387]::-webkit-scrollbar-track{background:0 0}.ins-enter-active[data-v-ee250387]{transition:opacity .2s var(--hud-ease), transform .2s var(--hud-ease)}.ins-leave-active[data-v-ee250387]{transition:opacity .12s}.ins-enter-from[data-v-ee250387]{opacity:0;transform:translate(12px)}.ins-leave-to[data-v-ee250387]{opacity:0}.panel[data-v-ee250387]{border:1px solid var(--hud-line);border-radius:var(--hud-r-lg);background:linear-gradient(#101827,#0d1420);flex:none;padding:12px;position:relative;box-shadow:inset 0 1px #8fb0dc12,0 10px 28px #03070e73}.panel[data-v-ee250387]:before{content:"";border-radius:var(--hud-r-lg) var(--hud-r-lg) 0 0;pointer-events:none;background:linear-gradient(#78a5dc0e,#0000);height:44px;position:absolute;inset:0 0 auto}.panel-hd[data-v-ee250387]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.panel-hd h3[data-v-ee250387]{letter-spacing:.02em;flex:1;margin:0;padding-left:11px;font-size:12.5px;font-weight:700;position:relative}.panel-hd h3[data-v-ee250387]:before{content:"";background:var(--hud-accent);width:3px;height:12px;box-shadow:0 0 8px color-mix(in srgb, var(--hud-accent) 45%, transparent);border-radius:2px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.panel-tag[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-cyan);background:#41c8f41a;border:1px solid #41c8f440;border-radius:6px;padding:0 6px;font-size:9.5px;line-height:15px}.lib-embed[data-v-ee250387]{margin:-4px 0 0}.daq-list[data-v-ee250387],.scene-list[data-v-ee250387]{flex-direction:column;gap:4px;display:flex}.daq-card[data-v-ee250387]{border-radius:var(--hud-r-md);background:var(--hud-panel-2);cursor:grab;transition:transform .15s var(--hud-ease), border-color .15s var(--hud-ease), background .15s var(--hud-ease);border:1px solid #1f4a3a8c;align-items:center;gap:10px;margin-bottom:4px;padding:8px 9px;display:flex}.daq-card[data-v-ee250387]:hover{background:#12291f;border-color:#35e0a080;transform:translateY(-1px)}.daq-card[data-v-ee250387]:active{cursor:grabbing}.daq-ico[data-v-ee250387]{width:34px;height:34px;color:var(--hud-accent);background:linear-gradient(160deg,#12291f,#0e1a24);border:1px solid #1f4a3aa6;border-radius:9px;flex:none;place-items:center;display:grid}.daq-svg[data-v-ee250387]{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.daq-meta[data-v-ee250387]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.daq-name[data-v-ee250387]{color:var(--hud-text);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.daq-code[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-faint);font-size:9px}.daq-count[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-accent);background:#35e0a01a;border:1px solid #35e0a047;border-radius:6px;flex:none;padding:0 6px;font-size:9px;line-height:15px}.daq-group[data-v-ee250387]{flex-direction:column;display:flex}.daq-card.tpl[data-v-ee250387]{cursor:pointer;-webkit-user-select:none;user-select:none;margin-bottom:0}.daq-card.tpl[data-v-ee250387]:active{cursor:pointer}.daq-card.tpl[data-v-ee250387]:focus-visible{outline:1px solid var(--hud-accent);outline-offset:1px}.daq-caret[data-v-ee250387]{color:var(--hud-faint);transition:transform .15s var(--hud-ease);flex:none;font-size:8px}.daq-card.tpl.open .daq-caret[data-v-ee250387]{transform:rotate(90deg)}.daq-card.tpl[data-v-ee250387]:hover{transform:none}.daq-add[data-v-ee250387]{width:18px;height:18px;color:var(--hud-faint);cursor:pointer;opacity:0;transition:opacity .15s var(--hud-ease), color .15s var(--hud-ease), border-color .15s var(--hud-ease), transform .16s cubic-bezier(.22, 1, .36, 1);background:0 0;border:1px solid #2c4568b3;border-radius:6px;flex:none;place-items:center;font-size:12px;line-height:1;display:grid}.daq-card.tpl:focus-within .daq-add[data-v-ee250387],.daq-card.tpl:hover .daq-add[data-v-ee250387]{opacity:1}@media (hover:none){.daq-add[data-v-ee250387]{opacity:1}}.daq-add[data-v-ee250387]:hover{color:var(--hud-accent);border-color:#35e0a080}.daq-add[data-v-ee250387]:active{transform:scale(.9)}.daq-children[data-v-ee250387]{animation:daq-tree-in-ee250387 .16s var(--hud-ease);flex-direction:column;gap:2px;margin:2px 0 6px;padding-left:16px;display:flex}@keyframes daq-tree-in-ee250387{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.daq-node[data-v-ee250387]{cursor:default;transition:background .15s var(--hud-ease), border-color .15s var(--hud-ease), transform .16s cubic-bezier(.22, 1, .36, 1);border:1px solid #0000;border-radius:7px;align-items:center;gap:8px;padding:5px 8px;display:flex}.daq-node[data-v-ee250387]:hover{background:#111b2c;border-color:#2c456899}.daq-node[draggable=true][data-v-ee250387]{cursor:grab}.daq-node[draggable=true][data-v-ee250387]:active{cursor:grabbing;transform:scale(.98)}.daq-node.placed[data-v-ee250387]{cursor:pointer}.daq-node.placed[draggable=true][data-v-ee250387]{cursor:grab}.node-dot[data-v-ee250387]{background:var(--hud-ok);width:7px;height:7px;box-shadow:0 0 6px color-mix(in srgb, var(--hud-ok) 50%, transparent);border-radius:50%;flex:none}.node-dot.offline[data-v-ee250387]{border:1px solid var(--hud-faint);box-shadow:none;background:0 0}.node-dot.warn[data-v-ee250387]{background:var(--hud-amber);box-shadow:0 0 6px color-mix(in srgb, var(--hud-amber) 50%, transparent)}.node-dot.alarm[data-v-ee250387]{background:var(--hud-danger);box-shadow:0 0 6px color-mix(in srgb, var(--hud-danger) 60%, transparent)}.daq-node .daq-name[data-v-ee250387]{font-size:11.5px;font-weight:500}.daq-node-sub[data-v-ee250387]{align-items:baseline;gap:7px;min-width:0;display:flex}.node-val[data-v-ee250387]{color:var(--hud-cyan);flex:none;font-size:10px}.node-dev[data-v-ee250387]{color:var(--hud-faint);white-space:nowrap;text-overflow:ellipsis;max-width:104px;font-size:9.5px;overflow:hidden}.daq-empty-hint[data-v-ee250387]{color:var(--hud-faint);padding:4px 8px 6px 10px;font-size:10px}.scene-row[data-v-ee250387]{border-radius:var(--hud-r-md);cursor:grab;transition:background .15s var(--hud-ease), border-color .15s var(--hud-ease);border:1px solid #0000;align-items:center;gap:10px;margin-bottom:4px;padding:8px 9px;display:flex}.scene-row[data-v-ee250387]:hover{background:#111b2c}.scene-row.active[data-v-ee250387]{background:#35e0a00f;border-color:#35e0a059}.scene-row[data-v-ee250387]:active{cursor:grabbing}.scene-ico[data-v-ee250387]{background:color-mix(in srgb, var(--ch,var(--hud-accent)) 16%, #101a2c);border:1px solid color-mix(in srgb, var(--ch,var(--hud-accent)) 45%, transparent);border-radius:8px;flex:none;width:30px;height:30px}.scene-row.active .scene-ico[data-v-ee250387]{box-shadow:0 0 10px color-mix(in srgb, var(--ch,var(--hud-accent)) 40%, transparent)}.scene-meta-wrap[data-v-ee250387]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.scene-name[data-v-ee250387]{color:var(--hud-text);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.scene-meta[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-faint);font-size:9px}.scene-add[data-v-ee250387],.scene-cur[data-v-ee250387]{border-radius:6px;flex:none;margin-left:auto;padding:1px 7px;font-size:10px}.scene-cur[data-v-ee250387]{color:var(--hud-accent);border:1px solid #35e0a066}.scene-add[data-v-ee250387]{color:var(--hud-dim);border:1px solid var(--hud-line)}.scene-hint[data-v-ee250387]{color:var(--hud-amber);padding:6px 4px 0;font-size:10px;line-height:1.5}.stage-col[data-v-ee250387]{flex-direction:column;min-width:0;min-height:0;display:flex}.stage[data-v-ee250387]{background:#060a11;flex:1;min-height:320px;position:relative;overflow:hidden}.stage[data-v-ee250387]:fullscreen{border-radius:0}.town-host[data-v-ee250387]{position:absolute;inset:0}.town-host canvas[data-v-ee250387]{image-rendering:auto;display:block}.stage-vignette[data-v-ee250387]{pointer-events:none;z-index:3;background:radial-gradient(120% 90% at 50% 38%,#0000 52%,#02040980 100%),linear-gradient(#080d1852,#0000 18%),repeating-linear-gradient(0deg,#ffffff03 0 1px,#0000 1px 3px);position:absolute;inset:0}.stage-top[data-v-ee250387]{z-index:6;pointer-events:none;justify-content:space-between;align-items:flex-start;padding:14px 16px;display:flex;position:absolute;top:0;left:0;right:0}.stage-top[data-v-ee250387]>*{pointer-events:auto}.vp-title[data-v-ee250387]{border-radius:var(--hud-r-md);-webkit-backdrop-filter:blur(8px);background:#090e18b8;border:1px solid #1c2942;align-items:center;gap:10px;padding:8px 12px;display:flex}.vp-title h2[data-v-ee250387]{letter-spacing:.02em;margin:0;font-size:15px;font-weight:700}.vp-id[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.04em;color:var(--hud-dim);white-space:nowrap;background:#0a111d99;border:1px solid #223050;border-radius:6px;padding:1px 8px;font-size:10px}.vp-tools[data-v-ee250387]{align-items:center;gap:8px;display:flex}.vp-tool[data-v-ee250387]{width:34px;height:34px;color:var(--hud-dim);-webkit-backdrop-filter:blur(8px);transition:color .15s var(--hud-ease), border-color .15s var(--hud-ease), background .15s var(--hud-ease);background:#0d1420d9;border:1px solid #223050;border-radius:50%;place-items:center;font-size:12px;font-weight:600;display:grid}.vp-tool[data-v-ee250387]:hover{color:var(--hud-text);border-color:#33507c}.vp-tool.on[data-v-ee250387]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent);box-shadow:0 0 12px #35e0a04d}.vp-svg[data-v-ee250387]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.leaders[data-v-ee250387]{z-index:7;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.angle-chip[data-v-ee250387]{z-index:6;border-radius:var(--hud-r-sm);-webkit-backdrop-filter:blur(8px);color:var(--hud-dim);background:#090e18c7;border:1px solid #1c2942;align-items:center;gap:6px;padding:5px 8px;font-size:11.5px;display:flex;position:absolute;top:64px;left:16px}.angle-chip select[data-v-ee250387]{color:var(--hud-text);cursor:pointer;background:0 0;border:0;font-size:11.5px;font-weight:600}.angle-chip select option[data-v-ee250387]{background:#0e1626}.callout-layer[data-v-ee250387]{z-index:7;pointer-events:none;position:absolute;inset:0;overflow:hidden}.callout[data-v-ee250387]{opacity:0;pointer-events:none;border-radius:var(--hud-r-md);min-width:150px;box-shadow:var(--hud-shadow);-webkit-backdrop-filter:blur(8px);transition:opacity .22s var(--hud-ease), transform .22s var(--hud-ease), border-color .15s var(--hud-ease);background:linear-gradient(#101a2bf0,#0a101cf0);border:1px solid #41c8f466;padding:9px 12px 8px;position:absolute;transform:translate(-50%,-112%)translateY(5px)}.callout.near[data-v-ee250387]{opacity:1;pointer-events:auto;transform:translate(-50%,-112%)}.leaders g[data-v-ee250387]{opacity:0;transition:opacity .22s var(--hud-ease)}.leaders g.near[data-v-ee250387]{opacity:1}.callout.warn[data-v-ee250387]{border-color:#f6c45399}.co-label[data-v-ee250387]{color:var(--hud-dim);white-space:nowrap;align-items:center;gap:6px;font-size:10.5px;display:flex}.co-dot[data-v-ee250387]{background:var(--hud-cyan);border-radius:50%;flex:none;width:6px;height:6px;box-shadow:0 0 8px #41c8f4e6}.callout.warn .co-dot[data-v-ee250387]{background:var(--hud-amber);box-shadow:0 0 8px #f6c453e6}.co-val[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:-.01em;color:var(--hud-text);font-variant-numeric:tabular-nums;margin-top:2px;font-size:21px;font-weight:700}.co-val small[data-v-ee250387]{color:var(--hud-dim);margin-left:3px;font-size:10.5px;font-weight:500}.co-range[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-faint);margin-top:1px;font-size:9.5px}.callout.warn .co-range[data-v-ee250387]{color:var(--hud-amber)}.kpi-strip[data-v-ee250387]{z-index:6;pointer-events:none;flex-wrap:wrap;justify-content:center;gap:10px;padding:0 16px;display:flex;position:absolute;bottom:12px;left:0;right:0}.kpi[data-v-ee250387]{pointer-events:auto;border-radius:var(--hud-r-md);-webkit-backdrop-filter:blur(8px);transition:border-color .2s var(--hud-ease), transform .2s var(--hud-ease), box-shadow .2s var(--hud-ease);background:linear-gradient(#141e30eb,#0c1320e6);border:1px solid #1e2c46;align-items:center;gap:10px;padding:8px 14px;display:flex;box-shadow:inset 0 1px #8fb0dc14,0 8px 20px #03070e66}.kpi[data-v-ee250387]:hover{border-color:#2c4568;transform:translateY(-1px);box-shadow:inset 0 1px #8fb0dc1a,0 12px 26px #03070e80}.kpi-ico[data-v-ee250387]{border-radius:8px;flex:none;place-items:center;width:30px;height:30px;font-size:12px;font-weight:700;display:grid}.kpi-ico.c1[data-v-ee250387]{color:var(--hud-cyan);background:#41c8f41f}.kpi-ico.c2[data-v-ee250387]{color:var(--hud-accent);background:#35e0a01f}.kpi-ico.c3[data-v-ee250387]{color:var(--hud-amber);background:#f6c4531f}.kpi-ico.c4[data-v-ee250387]{color:#a78bfa;background:#a78bfa24}.kpi-ico.c5[data-v-ee250387]{color:var(--hud-danger);background:#ff6b6b1f}.kpi-svg[data-v-ee250387]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.kpi-meta[data-v-ee250387]{line-height:1.25}.kpi-label[data-v-ee250387]{color:var(--hud-dim);letter-spacing:.08em;text-transform:uppercase;font-size:10px}.kpi-val[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:19px;font-weight:700}.kpi-val small[data-v-ee250387]{color:var(--hud-faint);margin-left:2px;font-size:10px;font-weight:500}.empty-hint[data-v-ee250387]{z-index:4;text-align:center;color:var(--hud-dim);pointer-events:none;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}.empty-hint b[data-v-ee250387]{color:var(--hud-text);margin-bottom:4px;font-size:14px;display:block}.empty-hint span[data-v-ee250387]{font-size:12px}@media (prefers-reduced-motion:no-preference){.dock[data-v-ee250387],.rail-left[data-v-ee250387],.rail-right[data-v-ee250387]{animation:.52s cubic-bezier(.22,.68,.36,1) backwards hud-boot-ee250387}.rail-left[data-v-ee250387]{animation-delay:40ms}.rail-right[data-v-ee250387]{animation-delay:.15s}.dock[data-v-ee250387]{animation-delay:.26s}}@keyframes hud-boot-ee250387{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.dock[data-v-ee250387]{border-top:1px solid var(--hud-line-soft);background:#080d16;flex:none;grid-template-columns:308px 1fr;gap:10px;padding:10px;display:grid}.dock-card[data-v-ee250387]{border:1px solid var(--hud-line);border-radius:var(--hud-r-lg);background:linear-gradient(#101827,#0d1420);flex-direction:column;min-height:178px;padding:12px 14px;display:flex}.dock-hd[data-v-ee250387]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.dock-hd h3[data-v-ee250387]{flex:none;margin:0;font-size:12.5px;font-weight:700}.dock-count[data-v-ee250387]{letter-spacing:.08em;color:var(--hud-dim);border:1px solid var(--hud-line-soft);border-radius:6px;flex:none;padding:1px 7px;font-size:9.5px}.dock-mode[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-faint);border:1px solid var(--hud-line);border-radius:6px;margin-left:auto;padding:1px 7px;font-size:9px}.ctl-row[data-v-ee250387]{align-items:center;gap:10px;margin-bottom:9px;display:flex}.ctl-sec[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--hud-faint);border-top:1px solid var(--hud-line-soft);margin:2px 0 7px;padding-top:7px;font-size:8.5px;font-weight:600}.ctl-sec[data-v-ee250387]:first-of-type{border-top:0;margin-top:0;padding-top:0}.ctl-name[data-v-ee250387]{color:var(--hud-dim);flex:none;width:64px;font-size:11.5px}.ctl-val[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-text);text-align:right;font-variant-numeric:tabular-nums;flex:none;width:38px;font-size:11px}.ctl-range[data-v-ee250387]{appearance:none;background:linear-gradient(90deg, var(--hud-accent-dim) var(--fill,50%), #1d2a42 var(--fill,50%));cursor:pointer;border-radius:2px;flex:1;height:4px}.ctl-range[data-v-ee250387]::-webkit-slider-thumb{-webkit-appearance:none;border:2.5px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#fff;border-radius:50%;box-shadow:0 1px 4px #00000080}.ctl-range[data-v-ee250387]:hover::-webkit-slider-thumb{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a01f,0 1px 4px #00000080}.ctl-range[data-v-ee250387]:active::-webkit-slider-thumb{transform:scale(1.05)}.bp-range[data-v-ee250387]{accent-color:var(--hud-accent)}.snap-toggle[data-v-ee250387]{height:22px;color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;border-radius:6px;flex:1;font-size:10.5px;font-weight:600}.snap-toggle.on[data-v-ee250387]{color:var(--hud-accent);background:#35e0a014;border-color:#35e0a066}.fps-seg[data-v-ee250387]{flex:1;gap:4px;display:flex}.fps-seg button[data-v-ee250387]{height:22px;font-family:var(--font-mono);color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), background .14s var(--hud-ease);border-radius:6px;flex:1;font-size:10.5px;font-weight:600}.fps-seg button[data-v-ee250387]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.fps-seg button.on[data-v-ee250387]{color:var(--hud-accent);background:#35e0a014;border-color:#35e0a066}.ctl-btns[data-v-ee250387]{gap:8px;margin-top:auto;display:flex}.btn[data-v-ee250387]{border-radius:var(--hud-r-sm);white-space:nowrap;cursor:pointer;height:32px;transition:filter .15s var(--hud-ease), background .15s var(--hud-ease), border-color .15s var(--hud-ease);background:0 0;flex:1;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.btn-primary[data-v-ee250387]{background:var(--hud-accent-dim);color:#04120c}.btn-primary[data-v-ee250387]:hover{background:#25b57e}.btn-ghost[data-v-ee250387]{color:var(--hud-text);border:1px solid #27395c}.btn-ghost[data-v-ee250387]:hover{background:#14203a;border-color:#33507c}.btn-danger[data-v-ee250387]{color:#fff;background:#b3273a}.btn-danger[data-v-ee250387]:hover{background:#d1304a}.btn[data-v-ee250387]:not(:disabled):active{transform:translateY(1px)}.bind-select[data-v-ee250387]:disabled,.btn[data-v-ee250387]:disabled,.nav-action[data-v-ee250387]:disabled,.obj-input[data-v-ee250387]:disabled,.obj-mini[data-v-ee250387]:disabled,.obj-select[data-v-ee250387]:disabled{opacity:.38;cursor:not-allowed;filter:saturate(.4)}.btn[data-v-ee250387]:disabled:hover,.nav-action[data-v-ee250387]:disabled:hover{background:inherit}.trend-legend[data-v-ee250387]{scrollbar-width:thin;scrollbar-color:#1c2942 transparent;flex-wrap:wrap;flex:auto;align-content:flex-start;gap:5px;min-width:0;max-height:47px;margin-left:6px;transition:max-height .24s cubic-bezier(.22,.68,.36,1);display:flex;overflow-y:auto}.trend-legend.expanded[data-v-ee250387]{max-height:100px}.trend-legend[data-v-ee250387]::-webkit-scrollbar{width:6px}.trend-legend[data-v-ee250387]::-webkit-scrollbar-thumb{background:#1c2942;border-radius:3px}.trend-legend[data-v-ee250387]::-webkit-scrollbar-track{background:0 0}.lg-chip[data-v-ee250387]{color:var(--hud-dim);border:1px solid var(--hud-line-soft);cursor:pointer;transition:opacity .15s var(--hud-ease), border-color .15s var(--hud-ease), color .15s var(--hud-ease);background:#0d142099;border-radius:6px;align-items:center;gap:5px;padding:2px 8px;font-size:10.5px;display:flex}.lg-chip[data-v-ee250387]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.lg-chip.off[data-v-ee250387]{opacity:.32}.lg-more[data-v-ee250387]{letter-spacing:.04em;color:var(--hud-faint);border-style:dashed;font-size:10px}.lg-more[data-v-ee250387]:hover{color:var(--hud-accent);border-color:#35e0a066}.lg-dot[data-v-ee250387]{border-radius:2px;width:7px;height:7px}.trend-wrap[data-v-ee250387]{flex:1;min-height:0;position:relative}.trend-cv[data-v-ee250387]{width:100%;height:100%;position:absolute;inset:0}.trend-empty[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-faint);place-content:center;font-size:10.5px;display:grid;position:absolute;inset:0}.inspector[data-v-ee250387]{animation:rise-ee250387 .18s var(--hud-ease)}@keyframes rise-ee250387{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.ins-chip-row[data-v-ee250387]{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.ins-chip[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-dim);border:1px solid #26354a;border-radius:6px;padding:1.5px 7px;font-size:9.5px}.ins-chip.accent[data-v-ee250387]{color:var(--hud-accent);border-color:#35e0a066}.sect-hd[data-v-ee250387]{color:var(--hud-faint);letter-spacing:.16em;align-items:center;gap:6px;margin:10px 0 7px;font-size:10px;font-weight:700;display:flex}.sect-hd[data-v-ee250387]:before{content:"";background:var(--hud-accent);opacity:.55;border-radius:1px;width:3px;height:9px}.obj-row[data-v-ee250387]{align-items:center;gap:8px;margin-bottom:8px;display:flex}.obj-label[data-v-ee250387]{width:52px;color:var(--hud-dim);flex:none;font-size:10.5px}.obj-input[data-v-ee250387],.obj-select[data-v-ee250387]{min-width:0;color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);transition:border-color .15s var(--hud-ease);border-radius:7px;flex:1;padding:5px 8px;font-size:11.5px}.obj-input[data-v-ee250387]:focus,.obj-select[data-v-ee250387]:focus{border-color:var(--hud-accent);outline:none}.obj-sep[data-v-ee250387]{background:var(--hud-line-soft);height:1px;margin:8px 0}.range-status[data-v-ee250387]{min-width:0;color:var(--hud-faint);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:10px;overflow:hidden}.obj-mini[data-v-ee250387]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;border-radius:7px;flex:none;padding:4px 10px;font-size:10.5px;font-weight:600}.obj-mini.on[data-v-ee250387]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.obj-mini.danger[data-v-ee250387]{color:var(--hud-danger);width:100%;margin-top:4px}.obj-range[data-v-ee250387]{accent-color:var(--hud-accent);flex:1}.bp-val[data-v-ee250387]{text-align:right;width:40px;font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;flex:none;font-size:10.5px}.bp-seg[data-v-ee250387]{gap:4px;display:flex}.seg-btn[data-v-ee250387]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), background .14s var(--hud-ease);border-radius:7px;padding:4px 12px;font-size:10.5px;font-weight:600}.seg-btn[data-v-ee250387]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.seg-btn.on[data-v-ee250387]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.xz-seg[data-v-ee250387]{gap:6px;margin-bottom:8px;display:flex}.xz-seg .seg-btn[data-v-ee250387]{flex:1}.scale-row[data-v-ee250387]{align-items:center;gap:8px;display:flex}.scale-max[data-v-ee250387],.scale-min[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-faint);font-size:9px}.scale-range[data-v-ee250387]{accent-color:var(--hud-accent);flex:1}.scale-val[data-v-ee250387]{text-align:center;font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;margin-bottom:4px;font-size:11px}.ins-foot[data-v-ee250387]{gap:8px;margin-top:12px;display:flex}.ins-del[data-v-ee250387]{color:var(--hud-danger);background:#ff6b6b1a;border:1px solid #ff6b6b66}.ins-del.armed[data-v-ee250387]{background:var(--hud-danger);color:#fff}.ins-empty[data-v-ee250387]{color:var(--hud-faint);text-align:center;padding:8px 0 6px;font-size:11px}.health-body[data-v-ee250387]{align-items:center;gap:14px;display:flex}.donut-wrap[data-v-ee250387]{flex:none;width:118px;height:118px;position:relative}.donut-wrap canvas[data-v-ee250387]{width:118px;height:118px}.donut-center[data-v-ee250387]{text-align:center;place-content:center;display:grid;position:absolute;inset:0}.donut-center b[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-accent);font-size:21px;font-weight:700}.donut-center span[data-v-ee250387]{color:var(--hud-faint);font-size:9.5px}.health-legend[data-v-ee250387]{flex-direction:column;flex:1;gap:8px;display:flex}.hl-row[data-v-ee250387]{align-items:center;gap:7px;font-size:11.5px;display:flex}.hl-dot[data-v-ee250387]{border-radius:50%;flex:none;width:7px;height:7px}.hl-row .n[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-text);margin-left:auto;font-size:13px;font-weight:700}.event-list[data-v-ee250387]{flex-direction:column;flex:1;min-height:0;max-height:200px;display:flex;overflow:hidden auto}.event-row[data-v-ee250387]{transition:background .13s var(--hud-ease);border-radius:7px;align-items:center;gap:7px;padding:4px 6px;display:flex}.event-row[data-v-ee250387]:hover{background:#35e0a00d}.ev-time[data-v-ee250387]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-faint);flex:none;font-size:9px}.ev-name[data-v-ee250387]{text-overflow:ellipsis;white-space:nowrap;max-width:70px;font-family:var(--font-mono);color:var(--hud-text);flex:none;font-size:10px;font-weight:600;overflow:hidden}.ev-text[data-v-ee250387]{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hud-dim);flex:1;font-size:10.5px;overflow:hidden}.event-empty[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-faint);text-align:center;padding:12px;font-size:9.5px}.rail-empty[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-faint);text-align:center;flex-direction:column;align-items:center;gap:7px;padding:16px 10px 13px;font-size:9.5px;display:flex}.rail-empty .re-ico[data-v-ee250387]{fill:none;width:19px;height:19px;stroke:var(--hud-faint);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;opacity:.85}.mm-body[data-v-ee250387]{align-items:stretch;gap:8px;display:flex}.mm-wrap[data-v-ee250387]{border-radius:var(--hud-r-md);background:#060b13;border:1px solid #223050;flex:1;min-height:148px;position:relative;overflow:hidden}.mini-svg[data-v-ee250387]{cursor:crosshair;width:100%;height:100%;position:absolute;inset:0}.nav-cv[data-v-ee250387]{cursor:crosshair;touch-action:none;width:100%;height:100%;position:absolute;inset:0}.alarm-list[data-v-ee250387]{flex-direction:column;display:flex}.al-row[data-v-ee250387]{border-radius:var(--hud-r-md);align-items:flex-start;gap:9px;padding:9px 8px;transition:background .15s;display:flex}.al-row[data-v-ee250387]:hover{background:#101a2c}.al-ico[data-v-ee250387]{border-radius:8px;flex:none;place-items:center;width:28px;height:28px;display:grid}.al-ico.crit[data-v-ee250387]{color:var(--hud-danger);background:#ff6b6b1f}.al-ico.warn[data-v-ee250387]{color:var(--hud-amber);background:#f6c4531f}.al-ico.info[data-v-ee250387]{color:var(--hud-cyan);background:#41c8f41f}.al-svg[data-v-ee250387]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.al-body[data-v-ee250387]{flex:1;min-width:0}.al-txt[data-v-ee250387]{color:var(--hud-text);font-size:12px;font-weight:500;line-height:1.35}.al-src[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-faint);margin-top:2px;font-size:9.5px}.al-state[data-v-ee250387]{cursor:pointer;background:0 0;border:1px solid;border-radius:6px;flex:none;margin-top:2px;padding:2px 7px;font-size:9.5px;font-weight:600}.al-state.s0[data-v-ee250387]{color:var(--hud-danger);background:#ff6b6b1a;border-color:#ff6b6b66}.al-state.s1[data-v-ee250387]{color:var(--hud-amber);background:#f6c4531a;border-color:#f6c45359}.al-state.s2[data-v-ee250387]{color:var(--hud-dim);background:#8fa0b514;border-color:#8fa0b54d}.nav-bell-warn[data-v-ee250387]{color:var(--hud-danger);border-color:#ff6b6b80}.mm-col[data-v-ee250387]{flex-direction:column;gap:6px;display:flex}.mm-col .vp-tool[data-v-ee250387]{border-radius:8px;width:30px;height:30px}.mm-meta[data-v-ee250387]{color:var(--hud-faint);letter-spacing:.08em;text-align:center;margin-top:8px;font-size:9.5px}.rpg-lines.chat-embed[data-v-ee250387]{border:1px solid var(--hud-line-soft);border-radius:var(--hud-r-md);background:#0f172680;max-height:268px;padding:2px 0 4px}.chat-sect[data-v-ee250387]{align-items:center;gap:8px;display:flex}.chat-sect .chat-refresh[data-v-ee250387]{margin-left:auto}.chat-id-row[data-v-ee250387]{align-items:center;gap:10px;margin-bottom:4px;display:flex}.chat-badge[data-v-ee250387]{--p-acc:var(--hud-accent);width:34px;height:34px;font-family:var(--font-mono);color:var(--p-acc);background:color-mix(in srgb, var(--p-acc) 10%, transparent);border:1px solid color-mix(in srgb, var(--p-acc) 45%, transparent);border-radius:var(--hud-r-sm);flex:none;place-items:center;font-size:15px;font-weight:700;display:grid}.chat-nameplate[data-v-ee250387]{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.chat-name[data-v-ee250387]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:650;overflow:hidden}.chat-meta[data-v-ee250387]{align-items:center;gap:6px;display:flex}.chat-state[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-dim);border:1px solid var(--hud-line);border-radius:6px;padding:1px 6px;font-size:8.5px}.chat-role[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.12em;border-radius:6px;padding:1px 7px;font-size:8.5px;font-weight:700}.chat-role.r-lead[data-v-ee250387]{color:var(--hud-amber);background:#f6c4531a;border:1px solid #f6c45373}.chat-role.r-worker[data-v-ee250387]{color:var(--hud-cyan);background:#41c8f41a;border:1px solid #41c8f466}.chat-state.s-busy[data-v-ee250387]{color:var(--hud-amber);border-color:#f6c45380}.chat-state.s-stopped[data-v-ee250387]{color:var(--hud-danger);border-color:#ff6b6b80}.chat-harness[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-faint);font-size:8.5px}.chat-count[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-faint);font-size:8.5px}.chat-refresh[data-v-ee250387]{width:22px;height:22px;font-family:var(--font-mono);color:var(--hud-dim);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), transform .32s var(--hud-ease);background:0 0;border-radius:6px;flex:none;font-size:11px}.chat-refresh[data-v-ee250387]:hover{border-color:var(--hud-accent);color:var(--hud-accent)}.chat-refresh[data-v-ee250387]:active{transform:rotate(180deg)}.rpg-lines[data-v-ee250387]{flex-direction:column;flex:1;gap:7px;min-height:0;padding:10px 12px 12px;display:flex;overflow:hidden auto}.rpg-divider[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.2em;color:var(--hud-faint);margin:4px 0 2px;font-size:8.5px}.rpg-divider.live[data-v-ee250387]{color:var(--hud-amber)}.rpg-line[data-v-ee250387]{align-items:flex-start;gap:8px;display:flex}.rpg-time[data-v-ee250387]{text-align:right;width:52px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-faint);flex:none;margin-top:5px;font-size:9px}.rpg-bubble[data-v-ee250387]{background:var(--hud-panel-2);border:1px solid var(--hud-line);border-radius:var(--hud-r-md);flex-direction:column;flex:1;gap:2px;min-width:0;padding:7px 11px;display:flex}.rpg-line.hist[data-v-ee250387]{opacity:.62}.rpg-line.live .rpg-bubble[data-v-ee250387]{animation:rise-ee250387 .26s var(--hud-ease) both;border-color:var(--hud-line-hi);background:#14213a}.rpg-kind[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.14em;color:var(--hud-faint);align-self:flex-start;font-size:8px}.rpg-kind.k-artifact[data-v-ee250387]{color:var(--hud-accent)}.rpg-kind.k-error[data-v-ee250387]{color:var(--hud-danger)}.rpg-text[data-v-ee250387]{color:var(--hud-text);word-break:break-word;text-wrap:pretty;font-size:13px;line-height:1.6}.rpg-line.live .rpg-text[data-v-ee250387]{color:#edf4fa}.rpg-typing[data-v-ee250387]{align-items:center;gap:4px;padding:5px 2px;display:flex}.ty-dot[data-v-ee250387]{background:var(--hud-amber);width:5px;height:5px;animation:ty-bounce-ee250387 1.15s var(--hud-ease) infinite;border-radius:50%}.ty-dot[data-v-ee250387]:nth-child(2){animation-delay:.15s}.ty-dot[data-v-ee250387]:nth-child(3){animation-delay:.3s}.ty-label[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-faint);margin-left:5px;font-size:9px}.rpg-note[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-dim);text-align:center;padding:14px 0;font-size:10px}.boundary-panel[data-v-ee250387]{z-index:9;border:1px solid var(--hud-line);border-radius:var(--hud-r-lg);width:302px;box-shadow:var(--hud-shadow);-webkit-backdrop-filter:blur(8px);pointer-events:auto;background:linear-gradient(#101827f7,#0d1420f7);flex-direction:column;gap:7px;padding:12px 14px;display:flex;position:absolute;top:84px;left:16px}.bp-title[data-v-ee250387]{border-bottom:1px solid var(--hud-line);cursor:grab;touch-action:none;align-items:center;gap:8px;padding-bottom:8px;display:flex}.bp-title[data-v-ee250387]:active{cursor:grabbing}.bp-name[data-v-ee250387]{color:var(--hud-text);font-size:13px;font-weight:700}.bp-sub[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.12em;color:var(--hud-faint);font-size:8.5px}.bp-tabs[data-v-ee250387]{gap:4px;margin-left:auto;display:flex}.bp-tab[data-v-ee250387]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;border-radius:6px;padding:3px 10px;font-size:10px;font-weight:600}.bp-tab.on[data-v-ee250387]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.bp-row[data-v-ee250387]{align-items:center;gap:8px;display:flex}.bp-label[data-v-ee250387]{width:52px;color:var(--hud-dim);flex:none;font-size:10.5px}.bp-range[data-v-ee250387]{appearance:none;background:linear-gradient(90deg, var(--hud-accent-dim) var(--fill,50%), #1d2a42 var(--fill,50%));cursor:pointer;border-radius:2px;flex:1;height:4px}.bp-range[data-v-ee250387]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:12px;height:12px;-webkit-transition:transform .15s var(--hud-ease);transition:transform .15s var(--hud-ease);background:#fff;border-radius:50%}.bp-range[data-v-ee250387]:hover::-webkit-slider-thumb{transform:scale(1.15)}.bp-hint[data-v-ee250387]{color:var(--hud-faint);font-size:10px;line-height:1.6}.bp-actions[data-v-ee250387]{gap:6px;margin-top:4px;display:flex}.bp-btn[data-v-ee250387]{color:var(--hud-text);border-radius:var(--hud-r-sm);cursor:pointer;background:0 0;border:1px solid #27395c;flex:1;padding:6px 10px;font-size:11px;font-weight:600}.bp-btn[data-v-ee250387]:hover{background:#14203a;border-color:#33507c}.bp-btn.save[data-v-ee250387]{color:#04120c;background:var(--hud-accent-dim);border-color:var(--hud-accent-dim)}.bp-btn.save[data-v-ee250387]:hover{background:#25b57e}.bp-btn.danger[data-v-ee250387]{color:var(--hud-danger);border-color:#ff6b6b66}.bp-btn.danger[data-v-ee250387]:hover{background:#ff6b6b1a}.member-list[data-v-ee250387]{flex-direction:column;gap:5px;max-height:220px;display:flex;overflow:hidden auto}.member-row[data-v-ee250387]{background:var(--hud-panel-2);border:1px solid var(--hud-line-soft);border-radius:var(--hud-r-md);align-items:center;gap:8px;padding:6px 8px;display:flex}.member-ava[data-v-ee250387]{width:24px;height:24px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-panel-raised);border:1px solid var(--hud-line);border-radius:7px;flex:none;justify-content:center;align-items:center;font-size:10px;font-weight:700;display:inline-flex}.member-info[data-v-ee250387]{flex-direction:column;flex:1;min-width:0;display:flex}.member-name[data-v-ee250387]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.member-role[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-faint);font-size:8.5px}.member-role.r-lead[data-v-ee250387]{color:var(--hud-amber)}.member-role.r-worker[data-v-ee250387]{color:var(--hud-cyan)}.member-select[data-v-ee250387]{min-width:0;color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:6px;flex:1;padding:3px 6px;font-size:10px}.drop-chip[data-v-ee250387],.error-chip[data-v-ee250387]{z-index:20;border-radius:var(--hud-r-md);box-shadow:var(--hud-shadow);-webkit-backdrop-filter:blur(8px);text-overflow:ellipsis;white-space:nowrap;background:#0e1626f5;border:1px solid #2a3d63;align-items:center;gap:8px;max-width:70%;padding:8px 14px;font-size:11.5px;display:flex;position:absolute;top:64px;left:50%;overflow:hidden;transform:translate(-50%)}.drop-chip[data-v-ee250387]{color:var(--hud-accent)}.error-chip[data-v-ee250387]{color:var(--hud-danger);border-color:#ff6b6b66}.bind-row[data-v-ee250387]{border:1px solid var(--hud-line-soft);border-radius:var(--hud-r-md);background:#0f1726;align-items:center;gap:8px;margin-bottom:6px;padding:7px 9px;display:flex}.bind-ico[data-v-ee250387]{width:26px;height:26px;color:var(--hud-accent);background:#0d1a26;border-radius:7px;flex:none;place-items:center;display:grid}.bind-svg[data-v-ee250387]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.bind-meta[data-v-ee250387]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.bind-label[data-v-ee250387]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.bind-val[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-cyan);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.bind-val b[data-v-ee250387]{font-size:11px;font-weight:700}.bind-spark[data-v-ee250387]{flex:none;width:56px;height:20px}.bind-x[data-v-ee250387]{width:22px;height:22px;color:var(--hud-faint);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none}.bind-x[data-v-ee250387]:hover{color:var(--hud-danger);background:#ff6b6b1f}.bind-add-wrap[data-v-ee250387]{position:relative}.bind-add[data-v-ee250387]{width:100%;height:30px;color:var(--hud-dim);border-radius:var(--hud-r-sm);cursor:pointer;background:0 0;border:1px dashed #274064;font-size:11px;transition:border-color .15s,color .15s}.bind-add[data-v-ee250387]:hover{border-color:var(--hud-accent-dim);color:var(--hud-accent)}.bind-pop[data-v-ee250387]{z-index:30;overscroll-behavior:contain;border-radius:var(--hud-r-md);max-height:min(46vh,420px);box-shadow:var(--hud-shadow-pop,0 16px 40px #0000008c);background:#0e1626;border:1px solid #27395c;position:absolute;bottom:calc(100% + 4px);left:0;right:0;overflow:hidden auto}.bind-pop[data-v-ee250387]::-webkit-scrollbar{width:8px}.bind-pop[data-v-ee250387]::-webkit-scrollbar-thumb{background:#2c4568 padding-box content-box;border:2px solid #0000;border-radius:9999px}.bind-pop[data-v-ee250387]::-webkit-scrollbar-thumb:hover{background:#3d5a85 padding-box content-box}.bind-pop button[data-v-ee250387]{width:100%;color:var(--hud-dim);cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:7px 10px;font-size:11.5px;display:flex}.bind-pop button[data-v-ee250387]:hover{color:var(--hud-text);background:#12203a}.bind-pop .bind-svg[data-v-ee250387]{color:var(--hud-accent)}.bind-pop button>span[data-v-ee250387]{white-space:nowrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;overflow:hidden}.bp-group[data-v-ee250387]{flex-direction:column;display:flex}.bp-group+.bp-group[data-v-ee250387]{border-top:1px solid #27395c8c}.bp-tpl[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--hud-faint);padding:6px 10px 3px;font-size:9px}.bp-cur[data-v-ee250387]{color:var(--hud-faint);white-space:nowrap;text-overflow:ellipsis;max-width:96px;margin-left:auto;font-size:9.5px;font-style:normal;overflow:hidden}.bp-empty[data-v-ee250387]{color:var(--hud-faint);padding:10px;font-size:10.5px}.dcw-row[data-v-ee250387]{border:1px solid var(--hud-line);border-radius:var(--hud-r-md);transition:border-color .18s var(--hud-ease), box-shadow .18s var(--hud-ease);background:linear-gradient(#111a2b,#0e1522);flex-direction:column;gap:8px;margin-bottom:7px;padding:9px 10px 10px;display:flex}.dcw-row[data-v-ee250387]:hover{border-color:var(--hud-line-hi);box-shadow:0 6px 18px #03070e66}.dcw-top[data-v-ee250387]{align-items:center;gap:8px;display:flex}.dcw-id[data-v-ee250387]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.dcw-name[data-v-ee250387]{color:var(--hud-faint);text-overflow:ellipsis;white-space:nowrap;font-size:9.5px;overflow:hidden}.dcw-tag[data-v-ee250387]{font-style:normal;font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-amber);vertical-align:1px;background:#f6c4531a;border:1px solid #f6c45352;border-radius:4px;margin-left:5px;padding:0 5px;font-size:8.5px;font-weight:700;display:inline-block}.dcw-cur[data-v-ee250387]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;flex:none;align-items:baseline;gap:3px;display:flex}.dcw-cur b[data-v-ee250387]{color:var(--hud-cyan);text-shadow:0 0 14px #41c8f447;font-size:16px;font-weight:700}.dcw-cur i[data-v-ee250387]{color:var(--hud-faint);font-size:9.5px;font-style:normal}.dcw-win[data-v-ee250387]{border:1px solid var(--hud-line-soft);background:#0a111db8;border-radius:7px;align-items:center;gap:7px;padding:4px 8px;display:flex}.dcw-win em[data-v-ee250387]{letter-spacing:.14em;color:var(--hud-faint);flex:none;font-size:8.5px;font-style:normal;font-weight:700}.dcw-win-num[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-dim);font-variant-numeric:tabular-nums;flex:none;font-size:9.5px}.dcw-win-track[data-v-ee250387]{background:#1a2740;border-radius:999px;flex:1;height:4px;position:relative}.dcw-win-track[data-v-ee250387]:before{content:"";border-radius:inherit;background:linear-gradient(90deg,#5a82af66,#5a82af24);position:absolute;inset:0}.dcw-win-track i[data-v-ee250387]{border:2px solid var(--hud-cyan);width:9px;height:9px;transition:left .3s var(--hud-ease);background:#dfeef8;border-radius:50%;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 8px #41c8f48c}.dcw-win.recipe em[data-v-ee250387]{color:var(--hud-amber)}.dcw-win.recipe .dcw-win-track[data-v-ee250387]:before{background:linear-gradient(90deg,#f6c45380,#f6c45329)}.dcw-win.recipe .dcw-win-track i[data-v-ee250387]{border-color:var(--hud-amber);box-shadow:0 0 8px #f6c4538c}.dcw-write[data-v-ee250387]{gap:6px;display:flex}.dcw-write input[data-v-ee250387]{min-width:0;height:27px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);transition:border-color .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border-radius:7px;flex:1;padding:0 9px;font-size:11.5px}.dcw-write input[data-v-ee250387]::placeholder{color:var(--hud-faint);font-size:10px}.dcw-write input[data-v-ee250387]:focus{border-color:var(--hud-accent);outline:none;box-shadow:0 0 0 3px #35e0a021}.dcw-send[data-v-ee250387]{height:27px;font-family:var(--font-mono);letter-spacing:.1em;color:#04120c;background:var(--hud-accent-dim);cursor:pointer;transition:background .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border:0;border-radius:7px;flex:none;padding:0 14px;font-size:10.5px;font-weight:700}.dcw-send[data-v-ee250387]:hover:not(:disabled){background:var(--hud-accent);box-shadow:0 0 14px #35e0a059}.dcw-send[data-v-ee250387]:disabled{opacity:.38;cursor:default}.dcw-err[data-v-ee250387]{color:var(--hud-danger);background:#ff6b6b14;border:1px solid #ff6b6b47;border-radius:6px;padding:4px 8px;font-size:10px;display:block}.bind-select[data-v-ee250387]:hover,.daq-ctl-cycle input[data-v-ee250387]:hover,.daq-num[data-v-ee250387]:hover,.obj-input[data-v-ee250387]:hover,.obj-select[data-v-ee250387]:hover{border-color:var(--hud-line-hi)}.bind-select[data-v-ee250387]:focus,.daq-ctl-cycle input[data-v-ee250387]:focus,.daq-num[data-v-ee250387]:focus,.obj-input[data-v-ee250387]:focus,.obj-select[data-v-ee250387]:focus{border-color:var(--hud-accent);outline:none;box-shadow:0 0 0 3px #35e0a021}input[type=number][data-v-ee250387]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-ee250387]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-ee250387]{appearance:textfield}.obj-range[data-v-ee250387],.scale-range[data-v-ee250387]{appearance:none;cursor:pointer;background:#1a2740;border-radius:999px;outline:none;height:4px}.obj-range[data-v-ee250387]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#e8f6ef;border-radius:50%;box-shadow:0 0 0 3px #35e0a026,0 2px 6px #03070e80}.scale-range[data-v-ee250387]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#e8f6ef;border-radius:50%;box-shadow:0 0 0 3px #35e0a026,0 2px 6px #03070e80}.obj-range[data-v-ee250387]::-webkit-slider-thumb:hover{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a033,0 2px 8px #03070e8c}.scale-range[data-v-ee250387]::-webkit-slider-thumb:hover{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a033,0 2px 8px #03070e8c}.obj-range[data-v-ee250387]::-moz-range-thumb{border:2px solid var(--hud-accent);background:#e8f6ef;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 3px #35e0a026}.scale-range[data-v-ee250387]::-moz-range-thumb{border:2px solid var(--hud-accent);background:#e8f6ef;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 3px #35e0a026}.obj-range[data-v-ee250387]::-moz-range-track{background:#1a2740;border-radius:999px;height:4px}.scale-range[data-v-ee250387]::-moz-range-track{background:#1a2740;border-radius:999px;height:4px}.bind-row[data-v-ee250387]{transition:border-color .18s var(--hud-ease), box-shadow .18s var(--hud-ease)}.bind-row[data-v-ee250387]:hover{border-color:var(--hud-line-hi);box-shadow:0 6px 18px #03070e66}.bind-add[data-v-ee250387]:hover{background:#35e0a00d;border-style:solid}.daq-bind-bar[data-v-ee250387]{gap:6px;display:flex}.bind-select[data-v-ee250387]{min-width:0;height:28px;color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);transition:border-color .15s var(--hud-ease), box-shadow .15s var(--hud-ease), color .15s var(--hud-ease);flex:1;padding:0 8px;font-size:10.5px}.bind-select[data-v-ee250387]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.bind-select[data-v-ee250387]:focus{border-color:var(--hud-accent);color:var(--hud-text);outline:none;box-shadow:0 0 0 3px #35e0a021}.bind-add-btn[data-v-ee250387]{color:#04120c;background:var(--hud-accent-dim);border-radius:var(--hud-r-sm);cursor:pointer;height:28px;transition:background .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border:0;flex:none;padding:0 12px;font-size:10.5px;font-weight:600}.bind-add-btn[data-v-ee250387]:hover:not(:disabled){background:var(--hud-accent);box-shadow:0 0 14px #35e0a059}.bind-add-btn[data-v-ee250387]:disabled{opacity:.4;cursor:default}.daq-info-row[data-v-ee250387]{color:var(--hud-dim);justify-content:space-between;gap:8px;padding:3px 0;font-size:11px;display:flex}.daq-info-row b[data-v-ee250387]{font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;font-weight:600}.daq-info-row b.cy[data-v-ee250387]{color:var(--hud-cyan);font-size:13px}.daq-ctrl[data-v-ee250387]{background:var(--hud-panel);border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;padding:8px 10px;display:flex}.daq-ctl-btn[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.05em;color:var(--hud-dim);cursor:pointer;border:1px solid var(--hud-line-hi);border-radius:var(--hud-r-sm);background:0 0;padding:4px 12px;font-size:11px}.daq-ctl-btn.on[data-v-ee250387]{color:var(--hud-accent);border-color:#35e0a073}.daq-ctl-cycle[data-v-ee250387]{color:var(--hud-faint);align-items:center;gap:5px;font-size:10.5px;display:inline-flex}.daq-ctl-cycle input[data-v-ee250387],.daq-num[data-v-ee250387]{width:64px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:6px;padding:2px 6px;font-size:11px}.daq-th-inputs[data-v-ee250387]{color:var(--hud-faint);align-items:center;gap:4px;font-size:10px;display:inline-flex}.bind-add-btn.warn[data-v-ee250387]:not(:disabled){color:var(--hud-amber);box-shadow:none;background:#f6c4531f}.bind-add-btn.warn[data-v-ee250387]:hover:not(:disabled){background:#f6c45333;box-shadow:0 0 14px #f6c45340}.bind-add-btn.danger[data-v-ee250387]:not(:disabled){color:var(--hud-danger);box-shadow:none;background:#ff6b6b1a}.bind-add-btn.danger[data-v-ee250387]:hover:not(:disabled){background:#ff6b6b2e;box-shadow:0 0 14px #ff6b6b40}.statusbar[data-v-ee250387]{border-top:1px solid var(--hud-line-soft);height:30px;color:var(--hud-dim);z-index:60;background:#0a101b;flex:none;align-items:center;gap:18px;padding:0 14px;font-size:11px;display:flex;position:relative}.statusbar b[data-v-ee250387]{color:var(--hud-accent);font-weight:600}.statusbar .sb-stats[data-v-ee250387]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:.02em;align-items:center;gap:7px;display:inline-flex}.sb-stats b[data-v-ee250387]{color:var(--hud-text);font-weight:600}.sb-stats i[data-v-ee250387]{color:var(--hud-line-hi);font-style:normal}.sb-dot[data-v-ee250387]{background:var(--hud-accent);width:7px;height:7px;box-shadow:0 0 6px var(--hud-accent);vertical-align:1px;border-radius:50%;margin-right:6px;display:inline-block}.sb-dot.red[data-v-ee250387]{background:var(--hud-danger);box-shadow:0 0 6px var(--hud-danger)}.sb-dot[data-v-ee250387]:not(.red){animation:sb-pulse-ee250387 2.4s var(--hud-ease) infinite}@keyframes sb-pulse-ee250387{0%,to{opacity:1}50%{opacity:.4}}@media (prefers-reduced-motion:reduce){.sb-dot[data-v-ee250387]:not(.red){animation:none}}.sb-lat[data-v-ee250387]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;position:absolute;left:50%;transform:translate(-50%)}.statusbar .copy[data-v-ee250387]{color:var(--hud-faint);font-family:var(--font-mono);margin-left:auto;font-size:10px}.loading-mask[data-v-ee250387]{z-index:90;background:var(--hud-bg);flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:fixed;inset:0}.loading-spinner[data-v-ee250387]{border:2.5px solid var(--hud-line);border-top-color:var(--hud-accent);border-radius:50%;width:30px;height:30px;animation:.9s linear infinite spin-ee250387}.loading-text[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.24em;color:var(--hud-dim);font-size:11px}@keyframes spin-ee250387{to{transform:rotate(1turn)}}@keyframes ty-bounce-ee250387{0%,60%,to{opacity:.5;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.drag-grip[data-v-ee250387]{cursor:grab;touch-action:none}.drag-grip[data-v-ee250387]:active{cursor:grabbing}.drag-panel[data-v-ee250387]{will-change:left, top}.town-view[data-v-ee250387] ::-webkit-scrollbar{width:8px;height:8px}.town-view[data-v-ee250387] ::-webkit-scrollbar-track{background:0 0}.town-view[data-v-ee250387] ::-webkit-scrollbar-thumb{background:#1c2942;border:2px solid #080d16;border-radius:4px}.town-view[data-v-ee250387] ::-webkit-scrollbar-thumb:hover{background:#2c4568}.al-state[data-v-ee250387]:active,.bind-add[data-v-ee250387]:active,.bind-x[data-v-ee250387]:active,.bp-btn[data-v-ee250387]:active,.btn[data-v-ee250387]:active,.lg-chip[data-v-ee250387]:active,.mini-btn[data-v-ee250387]:active,.obj-mini[data-v-ee250387]:active,.snap-toggle[data-v-ee250387]:active,.vp-tool[data-v-ee250387]:active{transform:scale(.96)}.al-state[data-v-ee250387],.bind-add[data-v-ee250387],.bp-btn[data-v-ee250387],.btn[data-v-ee250387],.lg-chip[data-v-ee250387],.mini-btn[data-v-ee250387],.obj-mini[data-v-ee250387],.snap-toggle[data-v-ee250387],.vp-tool[data-v-ee250387]{transition-property:filter,background,border-color,color,transform,opacity;transition-duration:.15s;transition-timing-function:var(--hud-ease)}.town-view button[data-v-ee250387]:focus-visible,.town-view input[data-v-ee250387]:focus-visible,.town-view select[data-v-ee250387]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}.vp-title h2[data-v-ee250387]{color:var(--hud-text)}@keyframes estop-pulse-ee250387{50%{filter:brightness(1.35)}}.btn-danger.armed[data-v-ee250387]{animation:1s ease-in-out infinite estop-pulse-ee250387}@media (prefers-reduced-motion:reduce){.callout[data-v-ee250387],.inspector[data-v-ee250387],.btn-danger.armed[data-v-ee250387],.loading-spinner[data-v-ee250387],.rpg-line.live .rpg-bubble[data-v-ee250387],.ty-dot[data-v-ee250387]{animation:none}}@media (width<=1180px){.app[data-v-ee250387]{grid-template-columns:0 1fr 0}.rail[data-v-ee250387]{z-index:70;width:288px;transition:transform .22s var(--hud-ease);box-shadow:var(--hud-shadow);background:#0a101b;position:fixed;top:50px;bottom:30px}.rail-left[data-v-ee250387]{left:0;transform:translate(-104%)}.rail-right[data-v-ee250387]{right:0;transform:translate(104%)}.dock[data-v-ee250387],.stage-dock[data-v-ee250387]{grid-template-columns:1fr}}.approval-card[data-v-ee250387]{border-radius:var(--hud-r-md);background:#f6c4530f;border:1px solid #f6c4534d;margin-bottom:7px;padding:8px 9px}.approval-detail[data-v-ee250387]{color:var(--hud-text);font-size:11px}.approval-ttl[data-v-ee250387]{font-family:var(--font-mono);letter-spacing:.05em;color:var(--hud-amber);margin-top:5px;font-size:9.5px}.approval-ttl.urgent[data-v-ee250387]{color:var(--hud-danger)}
@@ -1 +0,0 @@
1
- .line-chip[data-v-70ed3b0a]{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:8px;display:inline-block;box-shadow:0 0 10px}.param-chip.daqwin[data-v-70ed3b0a]{color:#41c8f4;border-color:#41c8f466}.adopt-card[data-v-70ed3b0a]{flex-wrap:wrap;align-items:flex-start;gap:12px;display:flex}.adopt-title[data-v-70ed3b0a]{color:var(--aw-dim,#8fa0b5);flex:none;padding-top:4px;font-size:12px}.adopt-list[data-v-70ed3b0a]{flex-wrap:wrap;gap:8px;display:flex}.adopt-chip[data-v-70ed3b0a]{color:#e8eef8;background:#0d1420b3;border:1px solid #3c506e80;border-radius:8px;align-items:center;gap:6px;padding:4px 8px;font-size:11px;display:inline-flex}.page[data-v-70ed3b0a]{padding:4px}h1[data-v-70ed3b0a]{letter-spacing:-.015em;margin:2px 0 4px;font-size:30px;font-weight:400}.ledger-card[data-v-70ed3b0a]{margin-bottom:14px;padding:14px 18px}.ledger-head[data-v-70ed3b0a]{align-items:center;gap:12px;display:flex}.ledger-head b[data-v-70ed3b0a]{font-size:13.5px}.ledger-tri[data-v-70ed3b0a]{align-items:center;gap:12px;margin-top:12px;display:flex}.tri-cell[data-v-70ed3b0a]{background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);flex-direction:column;flex:none;gap:2px;padding:8px 16px;display:flex}.tri-cell small[data-v-70ed3b0a]{color:var(--ink-faint);font-size:10px}.tri-cell b[data-v-70ed3b0a]{color:var(--ink);font-size:17px}.ledger-cols[data-v-70ed3b0a]{grid-template-columns:1fr 1fr;gap:16px;margin-top:12px;display:grid}.sec-t[data-v-70ed3b0a]{letter-spacing:.14em;color:var(--ink-faint);margin-bottom:6px;font-size:10px;font-weight:700;display:block}.ledger-list[data-v-70ed3b0a]{max-height:200px;color:var(--ink-soft);flex-direction:column;gap:3px;margin:0;padding:0;font-size:11px;list-style:none;display:flex;overflow:auto}.ledger-rec[data-v-70ed3b0a]{align-items:center;gap:8px;display:flex}.rec-st[data-v-70ed3b0a]{font-family:var(--font-mono);color:var(--ink-faint);border:1px solid var(--line-strong);border-radius:4px;flex:none;padding:0 6px;font-size:9px}.rec-st.open[data-v-70ed3b0a]{color:var(--tone-warning-dot);border-color:var(--tone-warning-dot)}.rec-st.judged[data-v-70ed3b0a]{color:var(--tone-warning-dot);border-color:var(--tone-warning-dot);opacity:.85}.rec-st.judged-keep[data-v-70ed3b0a],.rec-st.rolled-back[data-v-70ed3b0a]{color:var(--tone-success-dot);border-color:var(--tone-success-dot)}.sub[data-v-70ed3b0a]{opacity:.6;margin:0;font-size:12.5px}.mono[data-v-70ed3b0a]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.dim[data-v-70ed3b0a]{opacity:.55}.badges[data-v-70ed3b0a]{gap:8px;display:flex}.badge[data-v-70ed3b0a]{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-70ed3b0a]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;padding:14px 18px;display:flex}.ctrl-left[data-v-70ed3b0a]{align-items:center;gap:14px;display:flex}.aw-pill.running[data-v-70ed3b0a]{background:var(--accent)}.ctrl-right[data-v-70ed3b0a]{align-items:center;gap:12px;display:flex}.ctrl-metrics[data-v-70ed3b0a]{color:var(--ink-soft);align-items:center;gap:8px;font-size:11.5px;display:flex}.ctrl-metrics .sep[data-v-70ed3b0a]{opacity:.4}.ctrl-metrics .warn[data-v-70ed3b0a]{color:var(--tone-warning-dot)}.add-btn[data-v-70ed3b0a]{padding:8px 16px;font-size:13px}.banner[data-v-70ed3b0a]{border-radius:var(--radius-chip);margin:0 0 12px;padding:9px 14px;font-size:12.5px}.banner.bad[data-v-70ed3b0a]{color:var(--tone-danger-dot);background:var(--tone-danger-bg);border:1px solid color-mix(in srgb, var(--tone-danger-dot) 40%, transparent)}.banner.good[data-v-70ed3b0a]{color:var(--tone-success-dot);background:var(--tone-success-bg);border:1px solid color-mix(in srgb, var(--tone-success-dot) 40%, transparent)}.table-card[data-v-70ed3b0a]{margin-bottom:14px;overflow-x:auto}.nodes-table[data-v-70ed3b0a]{border-collapse:collapse;width:100%;font-size:12.5px}.nodes-table td[data-v-70ed3b0a],.nodes-table th[data-v-70ed3b0a]{text-align:left;border-bottom:1px solid var(--divider-hair);padding:9px 12px}.nodes-table th[data-v-70ed3b0a]{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-70ed3b0a]{margin-left:8px}.ch[data-v-70ed3b0a]{color:var(--ink-faint);margin-top:2px;font-size:10px;display:block}.right[data-v-70ed3b0a]{text-align:right}.val[data-v-70ed3b0a]{font-size:13px}.val small[data-v-70ed3b0a]{color:var(--ink-faint);margin-left:3px}.read-stale[data-v-70ed3b0a]{color:var(--tone-danger-dot,#e05a5a);text-underline-offset:3px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.read-btn[data-v-70ed3b0a]{margin-left:8px}.st-pill[data-v-70ed3b0a]{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-70ed3b0a]{color:var(--tone-success-dot);background:var(--tone-success-bg)}.st-pill.writing[data-v-70ed3b0a]{color:var(--ink);background:var(--hover-tint)}.st-pill.alarm[data-v-70ed3b0a],.st-pill.error[data-v-70ed3b0a]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.st-pill.warn[data-v-70ed3b0a]{color:var(--tone-warning-dot);background:var(--tone-warning-bg)}.st-pill.idle[data-v-70ed3b0a],.st-pill.offline[data-v-70ed3b0a]{color:var(--tone-neutral-dot);background:var(--tone-neutral-bg)}.st-pill.paused[data-v-70ed3b0a]{color:var(--tone-warning-dot);background:var(--tone-warning-bg)}.ctrl-toggle[data-v-70ed3b0a]{cursor:pointer;color:var(--ink-faint);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-pill);align-items:center;gap:6px;padding:3px 10px;font-size:11.5px;display:inline-flex}.ctrl-toggle .ct-dot[data-v-70ed3b0a]{background:var(--tone-neutral-dot);border-radius:50%;width:7px;height:7px}.ctrl-toggle.on[data-v-70ed3b0a]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 45%, transparent)}.ctrl-toggle.on .ct-dot[data-v-70ed3b0a]{background:var(--tone-success-dot);box-shadow:0 0 6px var(--tone-success-dot)}.ctrl-toggle[data-v-70ed3b0a]:disabled{opacity:.55;cursor:wait}.node-paused td[data-v-70ed3b0a]{opacity:.6}.node-paused .write-row[data-v-70ed3b0a]{opacity:.5}.tpl-hint[data-v-70ed3b0a]{margin:0 0 10px;font-size:12px}.tpl-chips[data-v-70ed3b0a]{flex-wrap:wrap;gap:6px;margin-bottom:4px;display:flex}.tpl-chip[data-v-70ed3b0a]{color:var(--ink-soft);background:var(--paper-deep);border:1px solid var(--line);border-radius:var(--radius-chip);align-items:center;gap:6px;padding:3px 9px;font-size:11.5px;display:inline-flex}.tpl-chip small[data-v-70ed3b0a]{color:var(--ink-faint)}.tpl-tag[data-v-70ed3b0a]{color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 40%, transparent);border-radius:var(--radius-pill);padding:1px 6px;font-size:10px;font-style:normal}.tpl-tag.builtin[data-v-70ed3b0a]{color:var(--ink-faint);border-color:var(--line-strong)}.write-row[data-v-70ed3b0a]{align-items:center;gap:6px;display:flex}.write-inp[data-v-70ed3b0a]{width:92px;padding:4px 8px}.write-btn[data-v-70ed3b0a]{padding:5px 12px}.mini-btn[data-v-70ed3b0a]{cursor:pointer;color:var(--ink-soft);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);margin-right:4px;padding:4px 10px;font-size:11.5px}.mini-btn.danger[data-v-70ed3b0a]{color:var(--tone-danger-dot)}.mini-btn[data-v-70ed3b0a]:hover{border-color:var(--accent);color:var(--accent)}.inp[data-v-70ed3b0a]{color:var(--ink);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:5px 9px;font-size:12.5px}.line-card[data-v-70ed3b0a]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;padding:14px 18px;display:flex}.line-status[data-v-70ed3b0a]{align-items:center;gap:12px;min-width:260px;display:flex}.line-dot[data-v-70ed3b0a]{background:var(--tone-neutral-dot);width:12px;height:12px;box-shadow:0 0 0 4px color-mix(in srgb, var(--tone-neutral-dot) 20%, transparent);border-radius:50%}.line-dot.on[data-v-70ed3b0a]{background:var(--tone-success-dot);box-shadow:0 0 0 4px color-mix(in srgb, var(--tone-success-dot) 22%, transparent);animation:1.6s infinite linePulse-70ed3b0a}@keyframes linePulse-70ed3b0a{0%,to{box-shadow:0 0 0 3px color-mix(in srgb, var(--tone-success-dot) 25%, transparent)}50%{box-shadow:0 0 0 7px color-mix(in srgb, var(--tone-success-dot) 8%, transparent)}}.line-info b[data-v-70ed3b0a]{font-size:14px}.line-info small[data-v-70ed3b0a]{margin-top:2px;font-size:11px;display:block}.line-ctl[data-v-70ed3b0a]{align-items:flex-end;gap:10px;display:flex}.ctl-sel[data-v-70ed3b0a]{color:var(--ink-faint);flex-direction:column;gap:4px;font-size:11px;display:flex}.ctl-sel .inp[data-v-70ed3b0a]{min-width:150px}.pill-btn.stop[data-v-70ed3b0a]{background:var(--tone-danger-dot);border-color:var(--tone-danger-dot)}.product-row[data-v-70ed3b0a]{flex-wrap:wrap;gap:8px;margin:0 0 12px;display:flex}.prod-chip[data-v-70ed3b0a]{cursor:pointer;color:var(--ink-soft);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-pill);align-items:center;gap:6px;padding:4px 12px;font-size:12px;display:inline-flex}.prod-chip.on[data-v-70ed3b0a]{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}.prod-del[data-v-70ed3b0a]{color:var(--tone-danger-dot);font-weight:700}.query-card[data-v-70ed3b0a]{margin-bottom:14px;padding:14px 18px}.q-grid[data-v-70ed3b0a]{grid-template-columns:repeat(6,1fr);align-items:end;gap:10px;display:grid}.q-grid .f[data-v-70ed3b0a]{color:var(--ink-faint);font-size:11px}.q-actions[data-v-70ed3b0a]{justify-content:flex-end}.q-result[data-v-70ed3b0a]{margin-top:12px;overflow-x:auto}.cal-form[data-v-70ed3b0a]{grid-template-columns:2fr 1fr;align-items:end}.recipe-card[data-v-70ed3b0a]{margin-bottom:14px;padding:16px 18px}.recipe-hd[data-v-70ed3b0a]{align-items:center;gap:10px;margin-bottom:6px;display:flex}.recipe-hd h3[data-v-70ed3b0a]{margin:0;font-size:16px}.panel-tag[data-v-70ed3b0a]{color:var(--ink-soft);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:2px 8px;font-size:11px}.recipe-sub[data-v-70ed3b0a]{color:var(--ink-faint);margin:0 0 14px;font-size:12px}.recipe-grid[data-v-70ed3b0a]{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;display:grid}.recipe-item[data-v-70ed3b0a]{background:var(--paper-deep);border:1px solid var(--line);border-radius:var(--radius-chip);padding:12px 14px}.recipe-name b[data-v-70ed3b0a]{font-size:13.5px}.recipe-name small[data-v-70ed3b0a]{margin-left:8px}.desc[data-v-70ed3b0a]{margin:4px 0;font-size:12px}.recipe-params[data-v-70ed3b0a]{flex-wrap:wrap;gap:6px;margin:8px 0;display:flex}.param-chip[data-v-70ed3b0a]{color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent);border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);border-radius:var(--radius-chip);padding:2px 8px;font-size:11px}.recipe-actions[data-v-70ed3b0a]{align-items:center;gap:6px;margin-top:8px;display:flex}.sec-label[data-v-70ed3b0a]{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin:14px 0 6px;font-size:11px;font-weight:600}.runs[data-v-70ed3b0a]{margin-top:6px}.pill-btn[data-v-70ed3b0a]{cursor:pointer;color:var(--paper-raised);background:var(--accent);border:1px solid var(--accent);border-radius:var(--radius-pill);padding:6px 14px;font-size:12.5px}.pill-btn.outline[data-v-70ed3b0a]{color:var(--ink);background:var(--paper-raised);border-color:var(--line-strong)}.pill-btn[data-v-70ed3b0a]:disabled{opacity:.5;cursor:default}.modal-mask[data-v-70ed3b0a]{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-70ed3b0a]{background:var(--surface-glass-strong);width:680px;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-70ed3b0a]{margin:0 0 14px;font-size:17px}.seg-row[data-v-70ed3b0a]{gap:8px;margin-bottom:14px;display:flex}.seg[data-v-70ed3b0a]{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-70ed3b0a]{color:var(--on-accent);background:var(--accent);border-color:var(--accent);font-weight:600}.f-grid[data-v-70ed3b0a]{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px;display:grid}.driver-form[data-v-70ed3b0a]{grid-template-columns:repeat(3,1fr)}.param-row[data-v-70ed3b0a]{grid-template-columns:2fr 1fr 1fr 1fr auto;align-items:end;gap:8px;margin-bottom:8px;display:grid}.param-row .f[data-v-70ed3b0a]{flex:1}.param-del[data-v-70ed3b0a]{margin-bottom:2px}.f[data-v-70ed3b0a]{color:var(--ink-faint);flex-direction:column;gap:4px;font-size:11.5px;display:flex}.f em[data-v-70ed3b0a]{margin-left:3px;font-style:normal}.hint[data-v-70ed3b0a]{color:var(--ink-fainter);font-size:10px}.test-row[data-v-70ed3b0a]{align-items:center;gap:10px;margin:6px 0 4px;display:flex}.test-result[data-v-70ed3b0a]{font-family:var(--font-mono);font-size:11px}.test-result.good[data-v-70ed3b0a]{color:var(--tone-success-dot)}.test-result.bad[data-v-70ed3b0a]{color:var(--tone-danger-dot)}.m-err[data-v-70ed3b0a]{color:var(--tone-danger-dot);margin:8px 0 0;font-size:12px}.m-actions[data-v-70ed3b0a]{justify-content:flex-end;gap:10px;margin-top:16px;display:flex}.aw-pill.outline[data-v-70ed3b0a]{color:var(--ink);background:var(--paper-raised);border-color:var(--line-strong)}.err[data-v-70ed3b0a]{color:var(--tone-danger-dot);margin-top:14px;font-size:13px}@media (prefers-reduced-motion:no-preference){.nodes-table tbody tr[data-v-70ed3b0a]:hover{background:var(--hover-tint)}}
@@ -1 +0,0 @@
1
- .page[data-v-c3ee3a1c]{padding:4px}.back[data-v-c3ee3a1c]{color:var(--ink-faint);text-decoration:none}.back[data-v-c3ee3a1c]:hover{color:var(--accent)}.aw-page-head h1[data-v-c3ee3a1c]{letter-spacing:-.01em;margin:2px 0 4px;font-size:26px;font-weight:400}.mono[data-v-c3ee3a1c]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.sec[data-v-c3ee3a1c]{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 10px;font-size:12px;font-weight:600}.mt[data-v-c3ee3a1c]{margin-top:22px}.err[data-v-c3ee3a1c]{color:var(--tone-danger-dot);margin-top:14px;font-size:13px}.grid[data-v-c3ee3a1c]{grid-template-columns:minmax(260px,340px) minmax(320px,1fr) minmax(280px,380px);align-items:start;gap:14px;display:grid}@media (width<=1100px){.grid[data-v-c3ee3a1c]{grid-template-columns:1fr}}.pad[data-v-c3ee3a1c],.value-card[data-v-c3ee3a1c]{padding:16px 18px}.big-val[data-v-c3ee3a1c]{color:var(--accent);margin:8px 0 10px;font-size:40px;line-height:1.1}.big-val small[data-v-c3ee3a1c]{color:var(--ink-faint);margin-left:8px;font-size:15px}.live-canvas[data-v-c3ee3a1c]{border:1px solid var(--line);border-radius:var(--radius-chip);background:var(--paper-deep);width:100%;height:64px}.facts[data-v-c3ee3a1c]{flex-direction:column;gap:4px;margin:14px 0 0;display:flex}.facts div[data-v-c3ee3a1c]{justify-content:space-between;font-size:11.5px;display:flex}.facts dt[data-v-c3ee3a1c]{color:var(--ink-faint)}.facts dd[data-v-c3ee3a1c]{color:var(--ink);margin:0}.form-grid[data-v-c3ee3a1c]{flex-direction:column;gap:10px;display:flex}.field[data-v-c3ee3a1c]{color:var(--ink-faint);flex-direction:column;flex:1;gap:4px;font-size:12px;display:flex}.field.row[data-v-c3ee3a1c]{flex-direction:row;align-items:center;gap:8px}.field.row small[data-v-c3ee3a1c]{color:var(--ink-faint)}.field-row[data-v-c3ee3a1c]{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.input[data-v-c3ee3a1c]{width:100%;color:var(--ink);background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:6px 9px;font-size:12.5px}.input[data-v-c3ee3a1c]:disabled{opacity:.45}.grow[data-v-c3ee3a1c]{flex:auto}.toggle[data-v-c3ee3a1c]{cursor:pointer;color:var(--tone-neutral-dot);background:var(--tone-neutral-bg);border-radius:var(--radius-chip);border:0;align-self:flex-start;padding:6px 12px;font-size:12px}.toggle.on[data-v-c3ee3a1c]{color:var(--tone-success-dot);background:var(--tone-success-bg)}.toggle.slim[data-v-c3ee3a1c]{padding:6px 10px;font-size:11.5px}.bind-row[data-v-c3ee3a1c]{gap:8px;display:flex}.driver-grid[data-v-c3ee3a1c]{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.field em[data-v-c3ee3a1c]{color:var(--tone-danger-dot);margin-left:2px;font-style:normal}.test-row[data-v-c3ee3a1c]{align-items:center;gap:10px;margin-top:8px;display:flex}.pill-btn[data-v-c3ee3a1c]{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-c3ee3a1c]:disabled{opacity:.5}.test-out[data-v-c3ee3a1c]{font-size:11px}.test-out.ok[data-v-c3ee3a1c]{color:var(--tone-success-dot)}.test-out.bad[data-v-c3ee3a1c]{color:var(--tone-danger-dot)}.col-hist[data-v-c3ee3a1c]{min-width:0}.hist-hd[data-v-c3ee3a1c]{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.hist-ctl[data-v-c3ee3a1c]{gap:6px;display:flex}.hist-canvas[data-v-c3ee3a1c]{border:1px solid var(--line);border-radius:var(--radius-chip);background:var(--paper-deep);width:100%;height:130px}.raw-table[data-v-c3ee3a1c]{border-collapse:collapse;width:100%;margin-top:10px;font-size:11px}.raw-table td[data-v-c3ee3a1c],.raw-table th[data-v-c3ee3a1c]{text-align:left;border-bottom:1px solid var(--divider-hair);padding:4px 6px}.raw-table th[data-v-c3ee3a1c]{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-fainter);font-weight:600}.st-pill[data-v-c3ee3a1c]{font-family:var(--font-mono);letter-spacing:.04em;border-radius:var(--radius-pill);padding:3px 11px;font-size:11px;display:inline-block}.st-pill.ok[data-v-c3ee3a1c]{color:var(--tone-success-dot);background:var(--tone-success-bg)}.st-pill.warn[data-v-c3ee3a1c]{color:var(--tone-warning-dot);background:var(--tone-warning-bg)}.st-pill.alarm[data-v-c3ee3a1c]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.st-pill.offline[data-v-c3ee3a1c]{color:var(--tone-neutral-dot);background:var(--tone-neutral-bg)}.frames-tile[data-v-c3ee3a1c]{margin-top:14px}.frames-n[data-v-c3ee3a1c]{color:var(--ink-faint);margin-left:8px}.vec-svg[data-v-c3ee3a1c]{background:var(--tone-neutral-bg);border-radius:6px;width:100%;height:96px;margin-bottom:10px;display:block}.gal[data-v-c3ee3a1c]{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.gal-item[data-v-c3ee3a1c]{cursor:zoom-in;margin:0}.gal-item img[data-v-c3ee3a1c]{aspect-ratio:4/3;-o-object-fit:cover;object-fit:cover;background:var(--tone-neutral-bg);border-radius:6px;width:100%;display:block}.gal-item figcaption[data-v-c3ee3a1c]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:11px;overflow:hidden}.frames-empty[data-v-c3ee3a1c]{color:var(--ink-faint);margin:8px 0;font-size:13px}.gal-full[data-v-c3ee3a1c]{z-index:60;cursor:zoom-out;background:#000000b8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.gal-full img[data-v-c3ee3a1c]{border-radius:8px;max-width:92vw;max-height:92vh}
@@ -1 +0,0 @@
1
- .harness-caps[data-v-18c014e3]{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.harness-cap[data-v-18c014e3]{border:1px solid var(--border,#2a3a4a);opacity:.75;border-radius:3px;padding:0 6px;font-size:11px;line-height:18px}.page[data-v-18c014e3]{padding:4px}.head[data-v-18c014e3]{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}h2[data-v-18c014e3]{margin:0 0 4px}.sub[data-v-18c014e3]{opacity:.55;margin:0;font-size:12px}.toolbar[data-v-18c014e3]{align-items:center;gap:12px;margin-bottom:12px;display:flex}.admin-note[data-v-18c014e3]{color:var(--ink-faint);align-items:center;gap:5px;font-size:11px;display:inline-flex}.tpl-name[data-v-18c014e3]{align-items:center;gap:6px;display:inline-flex}.vis-tag[data-v-18c014e3]{margin-right:8px}.owner[data-v-18c014e3]{color:var(--ink-soft);font-size:12px}.inst[data-v-18c014e3]{align-items:center;gap:8px;padding:2px 0;font-size:12px;display:flex}.inst-ch[data-v-18c014e3],.inst-id[data-v-18c014e3]{font-family:var(--font-mono);opacity:.6}.empty[data-v-18c014e3]{opacity:.4;padding:6px 0;font-size:12px}
@@ -1 +0,0 @@
1
- {"id":"e5bb1803-86d9-43b3-85be-dc787dc9a978","timestamp":1788626985747,"prerendered":[]}
@@ -1 +0,0 @@
1
- .page[data-v-406b546d]{padding:4px}.head[data-v-406b546d]{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}h2[data-v-406b546d]{margin:0 0 4px}.sub[data-v-406b546d]{opacity:.55;margin:0;font-size:12px}.toolbar[data-v-406b546d]{align-items:center;gap:12px;margin-bottom:12px;display:flex}.admin-note[data-v-406b546d]{color:var(--ink-faint);align-items:center;gap:5px;font-size:11px;display:inline-flex}.grid[data-v-406b546d]{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;display:grid}.card[data-v-406b546d]{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-406b546d]:hover{border-color:var(--line-strong)}.card-head[data-v-406b546d]{align-items:center;gap:8px;display:flex}.name[data-v-406b546d]{text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:15px;font-weight:600;overflow:hidden}.vis-tag[data-v-406b546d]{margin-right:2px}.owner[data-v-406b546d]{color:var(--ink-faint);font-size:11px}.desc[data-v-406b546d]{color:var(--ink-soft);margin:0;font-size:12px}.member-line[data-v-406b546d]{align-items:center;gap:6px;font-size:12px;display:flex}.lead-name[data-v-406b546d]{font-weight:500}.count[data-v-406b546d]{font-family:var(--font-mono);color:var(--ink-faint);font-size:11px}.scenario[data-v-406b546d]{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-406b546d]{align-items:center;gap:6px;margin-top:2px;display:flex}.ws[data-v-406b546d]{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-406b546d]{flex:auto}.card.placeholder[data-v-406b546d]{opacity:.55;cursor:pointer;border-style:dashed;justify-content:center;align-items:center;min-height:160px;font-size:13px}.big[data-v-406b546d]{font-size:28px}
@@ -1 +0,0 @@
1
- .page[data-v-ba25c3b0]{padding:4px}h1[data-v-ba25c3b0]{letter-spacing:-.015em;margin:2px 0 4px;font-size:30px;font-weight:400}.sub[data-v-ba25c3b0]{opacity:.6;margin:0;font-size:12.5px}.mono[data-v-ba25c3b0]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.dim[data-v-ba25c3b0]{opacity:.55}.badges[data-v-ba25c3b0]{gap:8px;display:flex}.badge[data-v-ba25c3b0]{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-ba25c3b0]{flex-direction:column;gap:11px;margin-bottom:14px;padding:12px 18px 11px;display:flex}.ctrl-row[data-v-ba25c3b0]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;display:flex}.ctrl-left[data-v-ba25c3b0]{align-items:center;gap:14px;display:flex}.aw-pill.running[data-v-ba25c3b0]{background:var(--accent)}.cycle[data-v-ba25c3b0]{color:var(--ink-faint);align-items:center;gap:6px;font-size:12px;display:inline-flex}.cycle input[data-v-ba25c3b0]{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-ba25c3b0]{color:var(--ink-soft);align-items:center;gap:8px;font-size:11.5px;display:flex}.ctrl-metrics .sep[data-v-ba25c3b0]{opacity:.4}.ctrl-metrics .warn[data-v-ba25c3b0]{color:var(--tone-warning-dot)}.line-strip[data-v-ba25c3b0]{border-top:1px solid var(--divider-hair);align-items:center;gap:12px;padding-top:10px;display:flex}.strip-label[data-v-ba25c3b0]{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-ba25c3b0]{color:var(--ink-faint);font-size:10px}.strip-scroll[data-v-ba25c3b0]{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-ba25c3b0]::-webkit-scrollbar{height:4px}.strip-scroll[data-v-ba25c3b0]::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:2px}.strip-scroll[data-v-ba25c3b0]::-webkit-scrollbar-track{background:0 0}.line-pill[data-v-ba25c3b0]{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-ba25c3b0]{border:1.5px solid var(--lc,var(--ink-fainter));opacity:.55;border-radius:50%;width:7px;height:7px}.line-pill b[data-v-ba25c3b0]{font-weight:600}.line-pill small[data-v-ba25c3b0]{color:var(--ink-fainter);font-size:10.5px}.line-pill[data-v-ba25c3b0]:hover{border-color:var(--lc,var(--accent));color:var(--ink)}.line-pill.on[data-v-ba25c3b0]{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-ba25c3b0]{background:var(--lc);opacity:1;border-color:#0000}.line-pill.on .lp-run[data-v-ba25c3b0]{color:color-mix(in srgb, var(--lc) 75%, var(--ink))}@media (prefers-reduced-motion:no-preference){.line-pill.on .lp-dot[data-v-ba25c3b0]{box-shadow:0 0 7px color-mix(in srgb, var(--lc) 75%, transparent);animation:1.8s ease-in-out infinite lpPulse-ba25c3b0}}@keyframes lpPulse-ba25c3b0{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-ba25c3b0]{overflow-x:auto}.nodes-table[data-v-ba25c3b0]{border-collapse:collapse;width:100%;font-size:12.5px}.nodes-table tbody tr[data-v-ba25c3b0]{content-visibility:auto;contain-intrinsic-size:auto 42px}.nodes-table td[data-v-ba25c3b0],.nodes-table th[data-v-ba25c3b0]{text-align:left;border-bottom:1px solid var(--divider-hair);padding:9px 12px}.nodes-table th[data-v-ba25c3b0]{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-ba25c3b0]{margin-left:8px}.ch[data-v-ba25c3b0]{color:var(--ink-faint);margin-top:2px;font-size:10px;display:block}.right[data-v-ba25c3b0]{text-align:right}.val[data-v-ba25c3b0]{font-size:13px}.val small[data-v-ba25c3b0]{color:var(--ink-faint);margin-left:3px}.val.stale[data-v-ba25c3b0]{opacity:.45}.val.val-alarm[data-v-ba25c3b0]{color:var(--tone-danger-dot);font-weight:700}.ops-panels[data-v-ba25c3b0]{grid-template-columns:minmax(320px,5fr) minmax(320px,7fr);gap:10px;margin:0 0 10px;display:grid}@media (width<=1100px){.ops-panels[data-v-ba25c3b0]{grid-template-columns:1fr}}.ops-panel[data-v-ba25c3b0]{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-ba25c3b0]{border-color:color-mix(in srgb, var(--tone-danger-dot) 40%, var(--glass-line))}.panel-head[data-v-ba25c3b0]{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-ba25c3b0]{color:var(--tone-danger-dot)}.panel-head .cnt[data-v-ba25c3b0]{color:var(--ink-faint);margin-left:auto;font-size:11px}.panel-head .cnt.hot[data-v-ba25c3b0]{color:var(--tone-danger-dot);font-weight:700}.panel-link[data-v-ba25c3b0]{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-ba25c3b0]{margin-left:12px}.panel-body[data-v-ba25c3b0]{flex-direction:column;gap:5px;max-height:168px;padding:8px 12px;display:flex;overflow-y:auto}.panel-empty[data-v-ba25c3b0]{color:var(--ink-faint);margin:4px 0;font-size:12px}.alarm-row[data-v-ba25c3b0]{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-ba25c3b0]{flex:none}.alarm-row b[data-v-ba25c3b0]{color:var(--ink)}.alarm-row .esc[data-v-ba25c3b0]{color:var(--tone-danger-dot)}.alarm-row .ack[data-v-ba25c3b0]{margin-left:auto}.evt-row[data-v-ba25c3b0]{border-radius:6px;align-items:center;gap:7px;padding:4px 6px;font-size:12px;display:flex}.evt-row[data-v-ba25c3b0]:hover{background:var(--frost-bg)}.evt-row .t[data-v-ba25c3b0]{flex:none;font-size:11px}.evt-row .txt[data-v-ba25c3b0]{min-width:0;color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.src-badge[data-v-ba25c3b0]{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-ba25c3b0]{color:var(--tone-info-dot);border-color:color-mix(in srgb, var(--tone-info-dot) 40%, transparent)}.src-badge.user[data-v-ba25c3b0]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 40%, transparent)}.src-badge.system[data-v-ba25c3b0]{color:var(--ink-faint)}.kind-chip[data-v-ba25c3b0]{color:var(--ink-soft);background:var(--frost-bg);border-radius:5px;flex:none;padding:1px 6px;font-size:10px}.kind-chip.alarm[data-v-ba25c3b0]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.kind-chip.write[data-v-ba25c3b0]{color:var(--tone-info-dot)}.kind-chip.rollback[data-v-ba25c3b0]{color:var(--tone-warning-dot)}.trend-cell[data-v-ba25c3b0]{width:128px}.trend[data-v-ba25c3b0]{width:120px;height:26px;display:block}.trend .trace[data-v-ba25c3b0]{fill:none;stroke:var(--tone-info-dot);stroke-width:1.4px}.trend .trace.alarm[data-v-ba25c3b0]{stroke:var(--tone-danger-dot)}.trend .lim[data-v-ba25c3b0]{stroke:color-mix(in srgb, var(--tone-warning-dot) 62%, transparent);stroke-width:1px;stroke-dasharray:3 3}.trend .lim.max[data-v-ba25c3b0]{stroke:color-mix(in srgb, var(--tone-danger-dot) 55%, transparent)}.st-pill[data-v-ba25c3b0]{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-ba25c3b0]{color:var(--tone-success-dot);background:var(--tone-success-bg)}.st-pill.warn[data-v-ba25c3b0]{color:var(--tone-warning-dot);background:var(--tone-warning-bg)}.st-pill.alarm[data-v-ba25c3b0]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}tr.row-recipe-alarm[data-v-ba25c3b0]{background:color-mix(in srgb, var(--tone-danger-dot,#ff6b6b) 8%, transparent)}tr.row-recipe-alarm td[data-v-ba25c3b0]:first-child{box-shadow:inset 3px 0 0 var(--tone-danger-dot,#ff6b6b)}.st-pill.offline[data-v-ba25c3b0],.st-pill.disabled[data-v-ba25c3b0],.st-pill.idle[data-v-ba25c3b0],.st-pill.unassigned[data-v-ba25c3b0]{color:var(--tone-neutral-dot);background:var(--tone-neutral-bg)}.drv-tag[data-v-ba25c3b0]{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-ba25c3b0]{opacity:.55;border-style:dashed}.console-link[data-v-ba25c3b0]{color:var(--accent);align-items:center;gap:5px;font-size:12.5px;display:inline-flex}.node-toggle[data-v-ba25c3b0]{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-ba25c3b0]:hover{border-color:var(--accent);background:var(--hover-tint)}.node-toggle.off[data-v-ba25c3b0]{color:var(--ink-soft);opacity:.8;border-style:dashed}.err[data-v-ba25c3b0]{color:var(--tone-danger-dot);margin-top:14px;font-size:13px}@media (prefers-reduced-motion:no-preference){.nodes-table tbody tr[data-v-ba25c3b0]:hover{background:var(--hover-tint)}}.infra-banner[data-v-ba25c3b0]{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-ba25c3b0]{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-ba25c3b0]{flex:auto;font-size:12.5px;line-height:1.5}.infra-banner .txt a[data-v-ba25c3b0]{color:var(--accent);text-decoration:underline}.infra-banner .txt b[data-v-ba25c3b0]{font-weight:600}.infra-banner .txt small[data-v-ba25c3b0]{opacity:.75;margin-left:8px;font-size:10.5px}.infra-banner .pill-btn[data-v-ba25c3b0]{color:var(--paper-raised);flex:none;text-decoration:none}.alarm-bar[data-v-ba25c3b0]{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-ba25c3b0]{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-ba25c3b0]{animation:1.6s ease-in-out infinite bellShake-ba25c3b0}@media (prefers-reduced-motion:reduce){.bar-label .bell[data-v-ba25c3b0]{animation:none}}@keyframes bellShake-ba25c3b0{0%,80%,to{transform:rotate(0)}85%{transform:rotate(12deg)}90%{transform:rotate(-10deg)}95%{transform:rotate(6deg)}}.alarm-scroll[data-v-ba25c3b0]{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-ba25c3b0]{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-ba25c3b0]{font-weight:600}.alarm-item .dim[data-v-ba25c3b0]{opacity:.6}.alarm-item .esc[data-v-ba25c3b0]{color:var(--tone-warning-dot)}.alarm-item .ack[data-v-ba25c3b0]{color:var(--paper-raised);background:var(--tone-danger-dot);border-color:#0000;padding:2px 9px}.alarm-item .ack[data-v-ba25c3b0]:hover{opacity:.85;color:var(--paper-raised);border-color:#0000}.ctrl-right[data-v-ba25c3b0]{align-items:center;gap:12px;display:flex}.add-btn[data-v-ba25c3b0]{padding:8px 16px;font-size:13px}.modal-mask[data-v-ba25c3b0]{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-ba25c3b0]{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-ba25c3b0]{margin:0 0 14px;font-size:17px}.seg-row[data-v-ba25c3b0]{gap:8px;margin-bottom:14px;display:flex}.seg[data-v-ba25c3b0]{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-ba25c3b0]{color:var(--on-accent);background:var(--accent);border-color:var(--accent);font-weight:600}.f-grid[data-v-ba25c3b0]{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px;display:grid}.driver-form[data-v-ba25c3b0]{grid-template-columns:repeat(3,1fr)}.cal-form[data-v-ba25c3b0]{grid-template-columns:2fr 1fr;align-items:end}.f[data-v-ba25c3b0]{color:var(--ink-faint);flex-direction:column;gap:4px;font-size:11.5px;display:flex}.f em[data-v-ba25c3b0]{color:var(--tone-danger-dot);margin-left:3px;font-style:normal}.inp[data-v-ba25c3b0]{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-ba25c3b0]{color:var(--ink-fainter);font-size:10px}.test-row[data-v-ba25c3b0]{align-items:center;gap:10px;margin:6px 0 4px;display:flex}.pill-btn[data-v-ba25c3b0]{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-ba25c3b0]:disabled{opacity:.5;cursor:default}.test-result[data-v-ba25c3b0]{font-family:var(--font-mono);font-size:11px}.test-result.ok[data-v-ba25c3b0]{color:var(--tone-success-dot)}.test-result.bad[data-v-ba25c3b0]{color:var(--tone-danger-dot)}.m-err[data-v-ba25c3b0]{color:var(--tone-danger-dot);margin:8px 0 0;font-size:12px}.m-actions[data-v-ba25c3b0]{justify-content:flex-end;gap:10px;margin-top:16px;display:flex}.aw-pill.outline[data-v-ba25c3b0]{color:var(--ink);background:var(--paper-raised);border-color:var(--line-strong)}.sec-label[data-v-ba25c3b0]{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin:14px 0 6px;font-size:11px;font-weight:600}.tpl-table[data-v-ba25c3b0]{border-collapse:collapse;width:100%;font-size:12.5px}.tpl-table td[data-v-ba25c3b0]{border-bottom:1px solid var(--divider-hair);padding:7px 8px}.tpl-table td b[data-v-ba25c3b0]{margin-right:8px}.tpl-table .range[data-v-ba25c3b0]{color:var(--ink-soft);font-size:11.5px}.tpl-table .empty[data-v-ba25c3b0]{color:var(--ink-fainter);text-align:center;padding:14px 0;font-size:12px}.tpl-table .actions[data-v-ba25c3b0]{white-space:nowrap}.mini-btn[data-v-ba25c3b0]{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-ba25c3b0]{color:var(--tone-danger-dot)}.mini-btn[data-v-ba25c3b0]:hover{border-color:var(--accent);color:var(--accent)}.tbl-toolbar[data-v-ba25c3b0]{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-ba25c3b0]{flex-wrap:wrap;align-items:flex-end;gap:9px;display:flex}.flt[data-v-ba25c3b0]{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-fainter);flex-direction:column;gap:3px;font-size:10px;display:flex}.inp-sel[data-v-ba25c3b0]{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-ba25c3b0]:focus{border-color:var(--accent);outline:none}.clear-btn[data-v-ba25c3b0]{margin-bottom:1px}.flt-search[data-v-ba25c3b0]{width:168px;min-width:0}.flt-search[data-v-ba25c3b0]::placeholder{color:var(--ink-fainter)}.count[data-v-ba25c3b0]{color:var(--ink-faint);padding-bottom:4px;font-size:11px}.line-sel[data-v-ba25c3b0]{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-ba25c3b0]:focus{border-color:var(--accent);outline:none}.run-pill[data-v-ba25c3b0]{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-ba25c3b0]{opacity:.7;border:1.5px solid;border-radius:50%;width:6px;height:6px}.run-pill.na[data-v-ba25c3b0]{opacity:.75;border-style:dashed}.run-pill.on[data-v-ba25c3b0]{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-ba25c3b0]{background:var(--tone-success-dot);opacity:1;border-color:#0000}@media (prefers-reduced-motion:no-preference){.run-pill.on .rp-dot[data-v-ba25c3b0]{animation:1.8s ease-in-out infinite rpPulse-ba25c3b0}}@keyframes rpPulse-ba25c3b0{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-ba25c3b0]{max-width:170px}.prod-cell b[data-v-ba25c3b0]{text-overflow:ellipsis;white-space:nowrap;font-weight:600;display:block;overflow:hidden}.prod-cell small[data-v-ba25c3b0]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;font-size:10px;display:block;overflow:hidden}.opt-card[data-v-ba25c3b0]{padding:0}.opt-head[data-v-ba25c3b0]{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-ba25c3b0]{color:var(--tone-info-dot);font-size:16px}.opt-count[data-v-ba25c3b0]{color:var(--tone-info-dot);background:var(--tone-info-bg);border-radius:999px;padding:1px 8px;font-size:10.5px}.opt-chevron[data-v-ba25c3b0]{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-ba25c3b0]{transform:rotate(225deg)}.opt-body[data-v-ba25c3b0]{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-ba25c3b0]{visibility:visible;opacity:1;max-height:64vh;padding-bottom:14px;overflow-y:auto}.opt-filters[data-v-ba25c3b0]{align-items:center;gap:8px;display:flex}.opt-empty[data-v-ba25c3b0]{color:var(--ink-fainter);font-size:11.5px}.opt-list[data-v-ba25c3b0]{flex-direction:column;gap:7px;margin:0;padding:0;list-style:none;display:flex}.opt-row[data-v-ba25c3b0]{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-ba25c3b0]{border-color:color-mix(in srgb, var(--tone-warning-dot) 36%, var(--glass-line))}.opt-row.rolled-back[data-v-ba25c3b0]{border-color:color-mix(in srgb, var(--tone-danger-dot) 30%, var(--glass-line))}.opt-line1[data-v-ba25c3b0]{align-items:center;gap:9px;min-width:0;display:flex}.opt-status[data-v-ba25c3b0]{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-ba25c3b0]{color:var(--tone-warning-dot);border-color:color-mix(in srgb, var(--tone-warning-dot) 45%, transparent)}.opt-status.judged-keep[data-v-ba25c3b0]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 45%, transparent)}.opt-status.rolled-back[data-v-ba25c3b0]{color:var(--tone-danger-dot);border-color:color-mix(in srgb, var(--tone-danger-dot) 45%, transparent)}.opt-node[data-v-ba25c3b0]{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.opt-params[data-v-ba25c3b0]{color:var(--tone-info-dot);flex:none;font-size:11px}.opt-time[data-v-ba25c3b0]{color:var(--ink-fainter);flex:none;margin-left:auto;font-size:10px}.mini-act[data-v-ba25c3b0]{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-ba25c3b0]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.mini-act[data-v-ba25c3b0]:disabled{opacity:.5;cursor:default}.opt-line2[data-v-ba25c3b0]{color:var(--ink-faint);flex-wrap:wrap;gap:8px;font-size:10.5px;display:flex}.opt-judge.keep[data-v-ba25c3b0],.opt-judge.rollback[data-v-ba25c3b0],.opt-judge.uncertain[data-v-ba25c3b0]{color:var(--ink-soft)}.opt-judge b[data-v-ba25c3b0]{font-weight:600}.opt-open-hint[data-v-ba25c3b0]{color:var(--tone-warning-dot)}.opt-agg[data-v-ba25c3b0]{color:var(--ink-fainter)}.opt-series[data-v-ba25c3b0]{flex-wrap:wrap;gap:10px;padding-top:4px;display:flex}.opt-ch[data-v-ba25c3b0]{flex:180px;align-items:center;gap:8px;min-width:160px;display:flex}.opt-spark[data-v-ba25c3b0]{width:120px;height:30px}.opt-spark polyline[data-v-ba25c3b0]{fill:none;stroke:var(--tone-info-dot);stroke-width:1.5px}
@@ -1 +0,0 @@
1
- .page[data-v-f320c05f]{flex-direction:column;gap:14px;display:flex}.badges[data-v-f320c05f]{gap:8px;display:flex}.badge[data-v-f320c05f]{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-f320c05f]{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-f320c05f]{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-f320c05f]:hover{border-color:color-mix(in srgb, var(--tone-info-dot) 60%, transparent)}.fleet-filter[data-v-f320c05f]{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;display:flex}.fleet-filter .aw-seg button[data-v-f320c05f]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:11.5px}.fleet-search[data-v-f320c05f]{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-f320c05f]:focus{border-color:var(--tone-success-dot);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.line-grid[data-v-f320c05f]{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;display:grid}.line-card[data-v-f320c05f]{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-f320c05f]: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-f320c05f]: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-f320c05f]{background:var(--frost-bg)}.line-card.idle .lc-dot[data-v-f320c05f]{box-shadow:none;opacity:.72}.line-card.idle .lc-name[data-v-f320c05f]{color:var(--ink-faint)}.lc-head[data-v-f320c05f]{align-items:center;gap:8px;display:flex}.lc-dot[data-v-f320c05f]{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-f320c05f]{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;overflow:hidden}.lc-state[data-v-f320c05f]{font-family:var(--font-mono);color:var(--ink-fainter);flex:none;margin-left:auto;font-size:10px}.lc-state.on[data-v-f320c05f]{color:var(--tone-success-dot)}.lc-act[data-v-f320c05f]{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-f320c05f],.line-card:hover .lc-act[data-v-f320c05f]{opacity:1}.lc-act[data-v-f320c05f]:hover{color:var(--tone-info-dot);background:var(--tone-info-bg)}.lc-act.danger[data-v-f320c05f]:hover{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.lc-act[data-v-f320c05f]:active{transform:scale(.9)}.lc-run[data-v-f320c05f]{color:var(--tone-info-dot);font-size:10.5px}.lc-run.dim[data-v-f320c05f]{color:var(--ink-fainter)}.lc-run.dim.ph[data-v-f320c05f]{opacity:.75}.lc-stats[data-v-f320c05f]{color:var(--ink-faint);gap:14px;font-size:10.5px;display:flex}.lc-stats b[data-v-f320c05f]{color:var(--ink);font-weight:600}.lc-ctl[data-v-f320c05f]{gap:8px;display:flex}.lc-ctl .inp[data-v-f320c05f]{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-f320c05f]:focus{border-color:var(--tone-success-dot);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.pill-btn[data-v-f320c05f]{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-f320c05f]:hover:not(:disabled){background:var(--accent-strong);box-shadow:0 0 14px var(--accent-soft)}.pill-btn[data-v-f320c05f]:disabled{opacity:.4;cursor:default}.pill-btn.danger[data-v-f320c05f],.pill-btn.stop[data-v-f320c05f]{background:var(--tone-danger-bg);color:var(--tone-danger-dot)}.pill-btn.danger[data-v-f320c05f]:hover:not(:disabled),.pill-btn.stop[data-v-f320c05f]:hover:not(:disabled){background:color-mix(in srgb, var(--tone-danger-dot) 26%, transparent);box-shadow:none}.lc-manage[data-v-f320c05f]{color:var(--tone-info-dot);font-size:11.5px;font-weight:600;text-decoration:none}.lc-manage[data-v-f320c05f]:hover{text-decoration:underline}.new-card[data-v-f320c05f]{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-f320c05f]:hover{color:var(--tone-success-dot);border-color:var(--tone-success-dot);transform:none}.new-card small[data-v-f320c05f]{color:var(--ink-fainter);font-size:10px;font-weight:400}.banner[data-v-f320c05f]{border-radius:10px;padding:8px 12px;font-size:12px}.banner.bad[data-v-f320c05f]{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-f320c05f]{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-f320c05f]{transition:opacity .18s cubic-bezier(.22,1,.36,1)}.modal-leave-active[data-v-f320c05f]{transition:opacity .13s}.modal-enter-from[data-v-f320c05f],.modal-leave-to[data-v-f320c05f]{opacity:0}.modal-enter-active .modal[data-v-f320c05f]{transition:transform .2s cubic-bezier(.22,1,.36,1)}.modal-enter-from .modal[data-v-f320c05f]{transform:translateY(8px)scale(.96)}.modal[data-v-f320c05f]{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-f320c05f]{width:min(640px,100vw - 40px)}.m-title[data-v-f320c05f]{color:var(--ink);align-items:baseline;gap:10px;font-size:15px;display:flex}.m-title.danger-title[data-v-f320c05f]{color:var(--tone-danger-dot);align-items:center}.f[data-v-f320c05f]{color:var(--ink-faint);flex-direction:column;gap:5px;font-size:11px;display:flex}.f em[data-v-f320c05f]{color:var(--tone-danger-dot);font-style:normal}.f .inp[data-v-f320c05f]{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-f320c05f]:focus{border-color:var(--tone-success-dot);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.color-row[data-v-f320c05f]{align-items:center;gap:7px;display:flex}.color-dot[data-v-f320c05f]{cursor:pointer;border:2px solid #0000;border-radius:6px;width:20px;height:20px}.color-dot.on[data-v-f320c05f]{border-color:var(--ink);box-shadow:0 0 10px}.m-actions[data-v-f320c05f]{justify-content:flex-end;gap:8px;display:flex}.m-err[data-v-f320c05f]{color:var(--tone-danger-dot);font-size:11px}.dim[data-v-f320c05f]{color:var(--ink-fainter)}.sec-label[data-v-f320c05f]{color:var(--ink-fainter);letter-spacing:.16em;font-size:10px;font-weight:700}.del-summary[data-v-f320c05f]{color:var(--ink-soft);font-size:12px;line-height:1.6}.del-purge[data-v-f320c05f]{color:var(--ink);cursor:pointer;align-items:center;gap:8px;font-size:12px;display:flex}.del-purge input[data-v-f320c05f]{width:14px;height:14px;accent-color:var(--tone-danger-dot)}.tpl-hint[data-v-f320c05f]{font-size:11px}.tpl-list[data-v-f320c05f]{flex-direction:column;gap:6px;display:flex}.tpl-row[data-v-f320c05f]{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-f320c05f]{flex:1}.tpl-tag[data-v-f320c05f]{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-f320c05f]{color:var(--ink-fainter);border-color:var(--line-strong)}.tpl-form[data-v-f320c05f]{grid-template-columns:1fr 1fr;gap:10px;display:grid}.tpl-sem[data-v-f320c05f]{color:var(--ink-faint);flex:1}textarea.inp[data-v-f320c05f]{resize:vertical;height:auto;padding:6px 9px;font-size:11.5px}.mini-btn[data-v-f320c05f]{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-f320c05f]:hover{border-color:var(--ink-faint);color:var(--ink)}.mini-btn.danger[data-v-f320c05f]{color:var(--tone-danger-dot)}
@@ -1 +0,0 @@
1
- .app-sider[data-v-8c1a7eb9]{background:var(--frost-bg);height:100vh;-webkit-backdrop-filter:var(--aurora-blur);border-right:1px solid var(--glass-line);z-index:20;position:sticky;top:0;overflow:hidden auto}.app-sider[data-v-8c1a7eb9]::-webkit-scrollbar{width:0}.logo[data-v-8c1a7eb9]{border-bottom:1px solid var(--line);align-items:center;gap:12px;height:58px;padding:0 16px;display:flex;overflow:hidden}.logo-mark[data-v-8c1a7eb9]{filter:drop-shadow(0 0 6px #35e0a04d);flex:none;justify-content:center;align-items:center;width:32px;height:36px;display:flex}.logo-text[data-v-8c1a7eb9]{white-space:nowrap;flex-direction:column;line-height:1.25;display:flex}.logo-title[data-v-8c1a7eb9]{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--ink);font-size:13.5px;font-weight:600}.logo-sub[data-v-8c1a7eb9]{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--sider-ink-faint);font-size:8.5px}.sider-section-label[data-v-8c1a7eb9]{letter-spacing:.08em;text-transform:uppercase;color:var(--sider-ink-faint);padding:18px 20px 6px;font-size:11px;font-weight:600}.app-menu[data-v-8c1a7eb9]{flex-direction:column;gap:1px;padding:2px 10px 0;display:flex}.menu-item[data-v-8c1a7eb9]{width:100%;min-height:36px;font-family:var(--font-body);color:var(--sider-ink);text-align:left;cursor:pointer;border-radius:var(--radius-panel-sm);transition:background var(--transition-fast), color var(--transition-fast), transform var(--transition-fast);background:0 0;border:0;align-items:center;padding:0 10px;font-size:13.5px;font-weight:500;display:flex}.menu-item[data-v-8c1a7eb9]:hover{color:var(--ink);background:var(--paper-deep)}.menu-item[data-v-8c1a7eb9]:active{transform:scale(.98)}.menu-item.active[data-v-8c1a7eb9]{color:var(--accent-strong);background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent)}.menu-item.active[data-v-8c1a7eb9]:hover{background:var(--tone-success-bg)}.menu-icon[data-v-8c1a7eb9]{flex:0 0 20px;font-size:16px}.menu-item .menu-icon[data-v-8c1a7eb9]{color:var(--sider-ink-faint)}.menu-item:hover .menu-icon[data-v-8c1a7eb9]{color:var(--ink)}.menu-item.active .menu-icon[data-v-8c1a7eb9]{color:var(--accent-strong)}.menu-label[data-v-8c1a7eb9]{white-space:nowrap;transition:opacity var(--transition-fast);padding-left:10px;overflow:hidden}.menu-item.active .menu-label[data-v-8c1a7eb9]{font-weight:600}.sider-footer[data-v-8c1a7eb9]{width:100%;padding:14px 18px 18px;position:absolute;bottom:0;left:0}.footer-line[data-v-8c1a7eb9]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:.06em;color:var(--sider-ink-faint);align-items:center;gap:8px;font-size:10px;display:flex}.footer-line .sep[data-v-8c1a7eb9]{color:var(--ink-fainter)}.slide-fade-enter-active[data-v-8c1a7eb9],.slide-fade-leave-active[data-v-8c1a7eb9]{transition:opacity .2s cubic-bezier(.22,1,.36,1),transform .2s cubic-bezier(.22,1,.36,1)}.slide-fade-enter-from[data-v-8c1a7eb9],.slide-fade-leave-to[data-v-8c1a7eb9]{opacity:0;transform:translate(-8px)}.app-header[data-v-19b84e01]{height:var(--app-header-h,56px);border-bottom:1px solid var(--divider-hair);justify-content:space-between;align-items:center;padding:0 20px 0 10px;transition:background .3s,border-color .3s;display:flex;position:relative;overflow:hidden}.app-header-glass[data-v-19b84e01]{z-index:30;background:linear-gradient(180deg, var(--frost-bg), color-mix(in srgb, var(--frost-bg) 72%, transparent));-webkit-backdrop-filter:var(--aurora-blur);border-bottom:1px solid var(--glass-line);position:sticky;top:0}.header-left[data-v-19b84e01],.header-right[data-v-19b84e01]{align-items:center;gap:10px;min-width:0;display:flex}.rail-mark[data-v-19b84e01]{color:var(--ink-faint);flex:none;font-size:15px}.trail[data-v-19b84e01]{scrollbar-width:none;flex:0 auto;min-width:0;overflow:auto hidden;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 8px calc(100% - 18px),#0000);mask-image:linear-gradient(90deg,#0000 0,#000 8px calc(100% - 18px),#0000)}.trail[data-v-19b84e01]::-webkit-scrollbar{display:none}.trail-row[data-v-19b84e01]{white-space:nowrap;align-items:center;gap:0;padding:3px 4px;display:flex}.trail-link[data-v-19b84e01]{background:var(--line-strong);flex:none;width:14px;height:1px}.trail-node[data-v-19b84e01]{height:32px;font-family:var(--font-body);letter-spacing:.01em;color:var(--app-text,var(--ink-soft));cursor:pointer;background:var(--paper-deep);border:1px solid var(--line);border-radius:var(--radius-pill);transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);flex:none;align-items:center;gap:6px;padding:0 12px;font-size:12px;font-weight:500;display:inline-flex;position:relative}.trail-node[data-v-19b84e01]:hover{color:var(--ink);background:var(--paper-tint);border-color:var(--line-strong)}.trail-node[data-v-19b84e01]:active{transform:scale(.98)}.trail-node[data-v-19b84e01]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.trail-node.active[data-v-19b84e01]{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}.node-icon[data-v-19b84e01]{font-size:13px}.node-title[data-v-19b84e01]{letter-spacing:.02em;text-overflow:ellipsis;white-space:nowrap;max-width:132px;transition:max-width .18s var(--ease-out-quart), margin .18s var(--ease-out-quart), opacity .18s var(--ease-out-quart);overflow:hidden}.node-close[data-v-19b84e01]{width:16px;height:16px;color:var(--ink-faint);cursor:pointer;border-radius:var(--radius-chip);opacity:0;transition:opacity .18s var(--ease-out-quart), transform .18s var(--ease-out-quart), color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;flex:none;justify-content:center;align-items:center;margin-left:4px;font-size:12px;display:inline-flex;transform:scale(.6)}.trail-node:focus-within .node-close[data-v-19b84e01],.trail-node:hover .node-close[data-v-19b84e01]{opacity:1;transform:none}.node-close[data-v-19b84e01]:hover{color:var(--ink);background:var(--hover-tint)}.node-close[data-v-19b84e01]:active{transform:scale(.9)}.trail-node.active .node-close[data-v-19b84e01]{color:color-mix(in srgb, var(--on-accent) 85%, transparent)}.trail-node.active .node-close[data-v-19b84e01]:hover{color:var(--on-accent);background:color-mix(in srgb, var(--on-accent) 18%, transparent)}.node-close[data-v-19b84e01]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.stamp-enter-active[data-v-19b84e01]{transition:opacity .22s var(--ease-out-quart), transform .22s var(--ease-out-quart)}.stamp-enter-from[data-v-19b84e01]{opacity:0;transform:translateY(4px)}.stamp-leave-active[data-v-19b84e01]{transition:opacity .14s;position:absolute}.stamp-leave-to[data-v-19b84e01]{opacity:0}.stamp-move[data-v-19b84e01]{transition:transform .22s}.plotter-line[data-v-19b84e01]{background:linear-gradient(90deg, transparent, var(--ink-fainter) 30%, var(--accent));opacity:0;pointer-events:none;transform-origin:0;width:100%;height:2px;position:absolute;bottom:-1px;left:0;transform:scaleX(0)}.plotter-line.run[data-v-19b84e01]{animation:.6s cubic-bezier(.3,.8,.4,1) forwards plot-sweep-19b84e01}@keyframes plot-sweep-19b84e01{0%{opacity:.9;transform:scaleX(0)}70%{opacity:.9}to{opacity:0;transform:scaleX(1)}}.collapse-btn[data-v-19b84e01],.icon-btn[data-v-19b84e01]{width:34px;height:34px;color:var(--app-text,var(--ink-soft));cursor:pointer;border-radius:var(--radius-panel-sm);transition:background var(--transition-fast), color var(--transition-fast), transform .16s cubic-bezier(.22, 1, .36, 1);background:0 0;border:0;flex:none;justify-content:center;align-items:center;font-size:16px;display:inline-flex}.collapse-btn[data-v-19b84e01]:hover,.icon-btn[data-v-19b84e01]:hover{color:var(--ink);background:var(--paper-deep)}.collapse-btn[data-v-19b84e01]:active,.icon-btn[data-v-19b84e01]:active{transform:scale(.94)}.lang-select[data-v-19b84e01]{width:118px}.lang-select[data-v-19b84e01] .ant-select-selector{color:var(--app-text,var(--ink));border-color:var(--app-border,var(--line))!important;background:0 0!important}.lang-select[data-v-19b84e01] .ant-select-arrow{color:var(--app-text-secondary,var(--ink-faint))}.user-chip[data-v-19b84e01]{cursor:pointer;border-radius:var(--radius-pill);border:1px solid #0000;align-items:center;gap:10px;height:42px;margin-left:4px;padding:0 12px 0 8px;transition:border-color .16s,background .16s;display:flex}.user-chip[data-v-19b84e01]:hover{border-color:var(--line);background:var(--hover-tint)}.user-initial[data-v-19b84e01]{width:28px;height:28px;font-size:12px}.user-meta[data-v-19b84e01]{flex-direction:column;line-height:1.15;display:flex}.user-name[data-v-19b84e01]{color:var(--app-text,var(--ink));letter-spacing:.01em;font-size:12.5px;font-weight:600}.user-role[data-v-19b84e01]{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--app-text-secondary,var(--ink-faint));font-size:8.5px}.hidden[data-v-19b84e01]{display:none}.ws-dot[data-v-19b84e01]{background:var(--tone-success-dot);width:8px;height:8px;box-shadow:0 0 6px color-mix(in srgb, var(--tone-success-dot) 55%, transparent);border-radius:50%;flex:none;margin:0 2px}.ws-dot.syncing[data-v-19b84e01]{background:var(--tone-warning-dot);box-shadow:0 0 6px color-mix(in srgb, var(--tone-warning-dot) 55%, transparent);animation:1.2s ease-in-out infinite ws-pulse-19b84e01}.ws-dot.down[data-v-19b84e01]{background:var(--tone-danger-dot);box-shadow:0 0 6px color-mix(in srgb, var(--tone-danger-dot) 55%, transparent)}@keyframes ws-pulse-19b84e01{50%{opacity:.45}}.hitl-bell[data-v-19b84e01]{color:var(--tone-warning-dot,#d4a017);position:relative}.hitl-count[data-v-19b84e01]{min-width:15px;height:15px;font-family:var(--font-mono);color:var(--on-accent,#fff);text-align:center;background:var(--tone-danger-dot,#e05252);border-radius:8px;padding:0 4px;font-size:9.5px;font-weight:700;line-height:15px;position:absolute;top:2px;right:2px}.hitl-menu[data-v-19b84e01]{background:var(--paper,#fff);border:1px solid var(--line);border-radius:var(--radius-panel-sm,10px);min-width:260px;max-width:340px;padding:6px;box-shadow:0 10px 32px #00000024}.hitl-menu-title[data-v-19b84e01]{letter-spacing:.08em;color:var(--ink-faint);border-bottom:1px solid var(--line);padding:6px 10px;font-size:11px;font-weight:600}.hitl-item[data-v-19b84e01]{text-align:left;cursor:pointer;border-radius:var(--radius-panel-sm,8px);width:100%;transition:background var(--transition-fast), border-color var(--transition-fast);background:0 0;border:1px solid #0000;flex-direction:column;gap:3px;margin-top:4px;padding:8px 10px;display:flex}.hitl-item[data-v-19b84e01]:hover{background:var(--paper-deep);border-color:var(--line)}.hitl-item-top[data-v-19b84e01]{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.hitl-item-agent[data-v-19b84e01]{color:var(--ink);font-size:12.5px;font-weight:600}.hitl-item-kind[data-v-19b84e01]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--tone-warning-dot,#d4a017);font-size:9.5px}.hitl-item-title[data-v-19b84e01]{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.hitl-item-actions[data-v-19b84e01]{gap:6px;margin-top:6px;display:flex}@media (prefers-reduced-motion:reduce){.plotter-line.run[data-v-19b84e01]{opacity:0;animation:none}.stamp-enter-active[data-v-19b84e01],.stamp-leave-active[data-v-19b84e01],.stamp-move[data-v-19b84e01]{transition:none}}.app-layout[data-v-05636ece]{background:0 0;min-height:100vh}.app-main[data-v-05636ece]{z-index:1;flex-direction:column;flex:auto;min-width:0;min-height:100vh;display:flex;position:relative}.app-content[data-v-05636ece]{flex:1;margin:12px 16px 0;padding:2px}.app-footer[data-v-05636ece]{background:linear-gradient(0deg, var(--frost-bg), color-mix(in srgb, var(--frost-bg) 60%, transparent));-webkit-backdrop-filter:var(--aurora-blur);border-top:1px solid var(--glass-line);height:var(--app-footer-h);font-family:var(--font-mono);letter-spacing:.08em;text-align:center;justify-content:center;align-items:center;gap:10px;padding:0 50px;font-size:10.5px;display:flex}.app-footer .sep[data-v-05636ece]{color:var(--ink-fainter)}.footer-title[data-v-05636ece]{font-size:13px}
@@ -1 +0,0 @@
1
- import{a as e}from"./DNJSkm3Q.js";function t(){let{$http:t}=e();return t}export{t};