agentworkshop 0.7.40 → 0.7.44

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 (327) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/B8uy9iRW.js +1 -0
  3. package/.output/public/_nuxt/BGTYYQH-.js +1 -0
  4. package/.output/public/_nuxt/BUmHEJ77.js +2 -0
  5. package/.output/public/_nuxt/BY7YrV_D.js +1 -0
  6. package/.output/public/_nuxt/Bqcgz95s.js +18 -0
  7. package/.output/public/_nuxt/C7UlqPeD.js +1 -0
  8. package/.output/public/_nuxt/CTmDn-YP.js +1 -0
  9. package/.output/public/_nuxt/Cs8pVeVG.js +1 -0
  10. package/.output/public/_nuxt/{DcsCcxp4.js → D98NH8kG.js} +1 -1
  11. package/.output/public/_nuxt/DKySmNPI.js +14 -0
  12. package/.output/public/_nuxt/Di0NY_ht.js +1 -0
  13. package/.output/public/_nuxt/Du9v6qGB.js +1 -0
  14. package/.output/public/_nuxt/{C_iYD-EB.js → EHlEMRii.js} +1 -1
  15. package/.output/public/_nuxt/Eke1fs-U.js +1 -0
  16. package/.output/public/_nuxt/{DeJykBFf.js → H0BcqZtT.js} +1 -1
  17. package/.output/public/_nuxt/{C4oW1HsE.js → HSYEkkce.js} +1 -1
  18. package/.output/public/_nuxt/{DZshyNLa.js → IREZ1eC2.js} +1 -1
  19. package/.output/public/_nuxt/{D_OTvQza.js → J9oU00D1.js} +1 -1
  20. package/.output/public/_nuxt/OmpTerminalPanel.BxR5-lvi.css +1 -0
  21. package/.output/public/_nuxt/SSyAPaHc.js +1 -0
  22. package/.output/public/_nuxt/TownView.li4EMQxK.css +1 -0
  23. package/.output/public/_nuxt/VdLk4jLE2.js +1 -0
  24. package/.output/public/_nuxt/_id_.BhsXoEuk.css +1 -0
  25. package/.output/public/_nuxt/_id_.DQyj-WKN.css +1 -0
  26. package/.output/public/_nuxt/{_wsId_.B4WiqkIS.css → _wsId_.CTx-BlfF.css} +1 -1
  27. package/.output/public/_nuxt/aShsv_rG.js +19 -0
  28. package/.output/public/_nuxt/{yF0aYMF1.js → aesgXKSr.js} +3 -3
  29. package/.output/public/_nuxt/agents.B21nUEUX.css +1 -0
  30. package/.output/public/_nuxt/aml.ekTjxFkf.css +1 -0
  31. package/.output/public/_nuxt/builds/latest.json +1 -1
  32. package/.output/public/_nuxt/builds/meta/b5506ef0-f48e-4f14-a6c0-d65e505d0b09.json +1 -0
  33. package/.output/public/_nuxt/ca4TJ3Op.js +1 -0
  34. package/.output/public/_nuxt/channel-templates.DplM1pJ3.css +1 -0
  35. package/.output/public/_nuxt/daq.BdVmoIfe.css +1 -0
  36. package/.output/public/_nuxt/dcw.DCgyzpWV.css +1 -0
  37. package/.output/public/_nuxt/{default.J32SgqFY.css → default.Bh3L2HU8.css} +1 -1
  38. package/.output/public/_nuxt/lHAxdSsj.js +1 -0
  39. package/.output/public/_nuxt/pages.j9rzRocr.css +1 -0
  40. package/.output/public/_nuxt/plugins.DhiZbHU8.css +1 -0
  41. package/.output/public/_nuxt/settings.BRx9rIDg.css +1 -0
  42. package/.output/public/_nuxt/teams.BLlOPB_Z.css +1 -0
  43. package/.output/public/_nuxt/tokens.De8xzszn.css +1 -0
  44. package/.output/public/_nuxt/workshop.D1jFNkrn.css +1 -0
  45. package/.output/server/chunks/_/nitro.mjs +1058 -830
  46. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  47. package/.output/server/chunks/build/{OmpTerminalPanel-Cu_s4i0A.mjs → OmpTerminalPanel-CVvxpsF7.mjs} +15 -15
  48. package/.output/server/chunks/build/{OmpTerminalPanel-Cu_s4i0A.mjs.map → OmpTerminalPanel-CVvxpsF7.mjs.map} +1 -1
  49. package/.output/server/chunks/build/{TownView-BuLAsmpR.mjs → TownView-CJ6IsDCc.mjs} +229 -228
  50. package/.output/server/chunks/build/{TownView-BuLAsmpR.mjs.map → TownView-CJ6IsDCc.mjs.map} +1 -1
  51. package/.output/server/chunks/build/{_id_-BU1wfOID.mjs → _id_-CVD_H0ir.mjs} +149 -147
  52. package/.output/server/chunks/build/_id_-CVD_H0ir.mjs.map +1 -0
  53. package/.output/server/chunks/build/{_id_-BYsEua57.mjs → _id_-CtxMb3qp.mjs} +47 -46
  54. package/.output/server/chunks/build/_id_-CtxMb3qp.mjs.map +1 -0
  55. package/.output/server/chunks/build/{_wsId_-BxlDcJHg.mjs → _wsId_-DpY3T-md.mjs} +516 -446
  56. package/.output/server/chunks/build/{_wsId_-BxlDcJHg.mjs.map → _wsId_-DpY3T-md.mjs.map} +1 -1
  57. package/.output/server/chunks/build/{agents-CLQqJF2y.mjs → agents-DsCkuXDV.mjs} +49 -46
  58. package/.output/server/chunks/build/agents-DsCkuXDV.mjs.map +1 -0
  59. package/.output/server/chunks/build/{aml-_7FdFL2p.mjs → aml-CT0xKGKI.mjs} +122 -105
  60. package/.output/server/chunks/build/aml-CT0xKGKI.mjs.map +1 -0
  61. package/.output/server/chunks/build/builtin-catalog-edpDcgfL.mjs +117 -0
  62. package/.output/server/chunks/build/builtin-catalog-edpDcgfL.mjs.map +1 -0
  63. package/.output/server/chunks/build/{channel-templates-p6SZNjlM.mjs → channel-templates-Dla9FbYa.mjs} +49 -37
  64. package/.output/server/chunks/build/channel-templates-Dla9FbYa.mjs.map +1 -0
  65. package/.output/server/chunks/build/{daq-cgyjKmJu.mjs → daq-DWWSKGAV.mjs} +95 -93
  66. package/.output/server/chunks/build/daq-DWWSKGAV.mjs.map +1 -0
  67. package/.output/server/chunks/build/{dcw-CoTxBlAZ.mjs → dcw-CT8k17_E.mjs} +46 -45
  68. package/.output/server/chunks/build/dcw-CT8k17_E.mjs.map +1 -0
  69. package/.output/server/chunks/build/{default-BE4r0FZN.mjs → default-D3525UFX.mjs} +16 -15
  70. package/.output/server/chunks/build/{default-BE4r0FZN.mjs.map → default-D3525UFX.mjs.map} +1 -1
  71. package/.output/server/chunks/build/{logs-BSOeZwwI.mjs → logs--dByNyhw.mjs} +2 -2
  72. package/.output/server/chunks/build/{logs-BSOeZwwI.mjs.map → logs--dByNyhw.mjs.map} +1 -1
  73. package/.output/server/chunks/build/{monitor-C0okQaXz.mjs → monitor-Dh2Kvaq5.mjs} +2 -2
  74. package/.output/server/chunks/build/{monitor-C0okQaXz.mjs.map → monitor-Dh2Kvaq5.mjs.map} +1 -1
  75. package/.output/server/chunks/build/{pages-DFxjn9Xa.mjs → pages-BHcSBM2D.mjs} +26 -20
  76. package/.output/server/chunks/build/pages-BHcSBM2D.mjs.map +1 -0
  77. package/.output/server/chunks/build/{plugins-lGlUr1lj.mjs → plugins-BNgIi61W.mjs} +23 -17
  78. package/.output/server/chunks/build/plugins-BNgIi61W.mjs.map +1 -0
  79. package/.output/server/chunks/build/{settings-Ddd1qx2Z.mjs → settings-ipYBDWdn.mjs} +45 -44
  80. package/.output/server/chunks/build/settings-ipYBDWdn.mjs.map +1 -0
  81. package/.output/server/chunks/build/{teams-MEDLZdMn.mjs → teams-5lx-CwFa.mjs} +47 -44
  82. package/.output/server/chunks/build/teams-5lx-CwFa.mjs.map +1 -0
  83. package/.output/server/chunks/build/{tokens-C7fTM5C2.mjs → tokens-q-IDT8Io.mjs} +73 -53
  84. package/.output/server/chunks/build/tokens-q-IDT8Io.mjs.map +1 -0
  85. package/.output/server/chunks/build/{town-qMPql9Se.mjs → town-QJWB5wng.mjs} +5 -4
  86. package/.output/server/chunks/build/town-QJWB5wng.mjs.map +1 -0
  87. package/.output/server/chunks/build/{useDaqStream-CIBaiGAl.mjs → useDaqStream-DfCFpb3p.mjs} +9 -3
  88. package/.output/server/chunks/build/useDaqStream-DfCFpb3p.mjs.map +1 -0
  89. package/.output/server/chunks/build/{useDcwStream-CBbiYnWe.mjs → useDcwStream-UPiX-3iO.mjs} +11 -2
  90. package/.output/server/chunks/build/useDcwStream-UPiX-3iO.mjs.map +1 -0
  91. package/.output/server/chunks/build/{workshop-BL5bhfs0.mjs → workshop-BIlCj_ZP.mjs} +45 -45
  92. package/.output/server/chunks/build/workshop-BIlCj_ZP.mjs.map +1 -0
  93. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
  94. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +3 -3
  95. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +1 -1
  96. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
  97. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
  98. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +1 -1
  99. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +1 -1
  100. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  101. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  102. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  103. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  104. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  105. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  106. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  107. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +3 -1
  108. package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
  109. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +3 -1
  110. package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
  111. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  112. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  113. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  114. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  115. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
  116. package/.output/server/chunks/routes/renderer.mjs +2 -2
  117. package/.output/server/chunks/virtual/entry.mjs +639 -88
  118. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  119. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  120. package/.output/server/package.json +1 -1
  121. package/README-zh.md +16 -6
  122. package/README.md +17 -7
  123. package/app/components/AppHeader.vue +961 -959
  124. package/app/components/workshop/A2aRpcDebugger.vue +237 -237
  125. package/app/components/workshop/AgentInspectorDrawer.vue +424 -424
  126. package/app/components/workshop/AgentLanesView.vue +998 -998
  127. package/app/components/workshop/ArtifactCard.vue +120 -120
  128. package/app/components/workshop/AssetLibrary.vue +452 -452
  129. package/app/components/workshop/ChannelSessionList.vue +812 -804
  130. package/app/components/workshop/CommandPalette.vue +269 -269
  131. package/app/components/workshop/Composer.vue +827 -827
  132. package/app/components/workshop/DeviceTwinPanel.vue +643 -643
  133. package/app/components/workshop/EventBlock.vue +602 -602
  134. package/app/components/workshop/FileSelectorModal.vue +188 -188
  135. package/app/components/workshop/InspectorPanel.vue +301 -301
  136. package/app/components/workshop/MemoryPanel.vue +364 -364
  137. package/app/components/workshop/MultiChannelView.vue +189 -189
  138. package/app/components/workshop/TaskBoardView.vue +686 -686
  139. package/app/components/workshop/TaskInspectorDrawer.vue +390 -390
  140. package/app/components/workshop/TranscriptTimeline.vue +601 -601
  141. package/app/components/workshop/blocks/ClusterArtifact.vue +61 -61
  142. package/app/components/workshop/blocks/ClusterError.vue +85 -85
  143. package/app/components/workshop/blocks/ClusterLife.vue +87 -87
  144. package/app/components/workshop/blocks/ClusterMember.vue +95 -93
  145. package/app/components/workshop/blocks/ClusterMemory.vue +84 -84
  146. package/app/components/workshop/blocks/ClusterOther.vue +67 -67
  147. package/app/components/workshop/blocks/ClusterStatus.vue +149 -147
  148. package/app/components/workshop/blocks/ClusterTool.vue +158 -158
  149. package/app/components/workshop/terminal/OmpTerminalPanel.vue +1011 -1011
  150. package/app/components/workshop/town/TownView.vue +56 -56
  151. package/app/composables/workshop/useDaqStream.ts +7 -4
  152. package/app/composables/workshop/useDcwStream.ts +8 -2
  153. package/app/middleware/locale-cookie.global.ts +22 -0
  154. package/app/pages/aml/index.vue +24 -2
  155. package/app/pages/daq/[id].vue +20 -16
  156. package/app/pages/daq/index.vue +2310 -2307
  157. package/app/pages/dcw/[id].vue +26 -23
  158. package/app/pages/dcw/index.vue +3 -3
  159. package/app/pages/index.vue +987 -981
  160. package/app/pages/plugins/index.vue +317 -311
  161. package/app/pages/settings.vue +1564 -1562
  162. package/app/pages/tokens.vue +15 -15
  163. package/app/pages/workshop/agents.vue +612 -609
  164. package/app/pages/workshop/channel-templates.vue +18 -11
  165. package/app/pages/workshop/index.vue +668 -668
  166. package/app/pages/workshop/teams.vue +743 -740
  167. package/app/pages/workshop/w/[wsId].vue +704 -704
  168. package/app/plugins/locale-restore.client.ts +16 -1
  169. package/app/utils/builtin-catalog.ts +104 -0
  170. package/config.yml +170 -170
  171. package/docs/cli.en.md +2 -2
  172. package/docs/cli.md +2 -2
  173. package/docs/full-test-plan.md +2 -3
  174. package/docs/plugins.en.md +33 -1
  175. package/docs/plugins.md +29 -1
  176. package/docs/sdk.en.md +1 -1
  177. package/docs/sdk.md +1 -1
  178. package/i18n/locales/en.ts +293 -35
  179. package/i18n/locales/zh-CN.ts +265 -7
  180. package/package.json +4 -3
  181. package/scripts/_dbg-perms-e2e.mjs +132 -109
  182. package/scripts/_demo-agentteam-capture.mjs +278 -0
  183. package/scripts/_e2e-ui-functional.mjs +371 -0
  184. package/scripts/_i18n-en-cjk-scan.mjs +28 -0
  185. package/scripts/_i18n-en-verify.mjs +107 -0
  186. package/scripts/_i18n-extra-checks.mjs +53 -0
  187. package/scripts/_i18n-scan-hardcoded.mjs +180 -0
  188. package/scripts/_i18n-verify-keys.mjs +50 -0
  189. package/scripts/_loop-biax-campaign.mjs +130 -0
  190. package/scripts/_sweep-button-contrast.mjs +87 -0
  191. package/scripts/test-serial-bridge.mjs +418 -0
  192. package/scripts/ui/e2e-interactive.mjs +328 -0
  193. package/scripts/ui/record-demo.mjs +557 -0
  194. package/scripts/ui/seed-industrial-demo.mjs +171 -0
  195. package/server/api/workshop/daq/index.get.ts +3 -1
  196. package/server/api/workshop/dcw/index.get.ts +3 -0
  197. package/server/plugins/aw-plugins.ts +9 -7
  198. package/server/plugins-builtin/diag-bridge/index.mjs +608 -661
  199. package/server/plugins-builtin/rag-bridge/index.mjs +57 -133
  200. package/server/plugins-builtin/serial-bridge/client.mjs +210 -0
  201. package/server/plugins-builtin/serial-bridge/drivers.mjs +409 -0
  202. package/server/plugins-builtin/serial-bridge/i18n.json +62 -0
  203. package/server/plugins-builtin/serial-bridge/index.mjs +247 -0
  204. package/server/plugins-builtin/serial-bridge/lib.mjs +208 -0
  205. package/server/plugins-builtin/serial-bridge/rtu.mjs +168 -0
  206. package/server/services/workshop/daq/daq-controller.ts +7 -2
  207. package/server/services/workshop/daq/drivers.ts +89 -3
  208. package/server/services/workshop/dcw/dcw-controller.ts +5 -1
  209. package/server/services/workshop/dcw/drivers.ts +85 -2
  210. package/server/services/workshop/dcw/plugin-bridge.ts +45 -0
  211. package/server/services/workshop/plugins/host.mjs +30 -0
  212. package/shared/daq-protocol.ts +15 -0
  213. package/.output/public/_nuxt/88GOowgO2.js +0 -1
  214. package/.output/public/_nuxt/BOt2SP4z.js +0 -1
  215. package/.output/public/_nuxt/BP-NyKVG.js +0 -18
  216. package/.output/public/_nuxt/BXxH0UQE.js +0 -1
  217. package/.output/public/_nuxt/BsROmY89.js +0 -1
  218. package/.output/public/_nuxt/ClILjvWH.js +0 -1
  219. package/.output/public/_nuxt/CzOCSGLe.js +0 -1
  220. package/.output/public/_nuxt/D8qvkfyY.js +0 -1
  221. package/.output/public/_nuxt/DCn7QZ5N.js +0 -2
  222. package/.output/public/_nuxt/DS8qj8EL.js +0 -1
  223. package/.output/public/_nuxt/DUjW5Yq5.js +0 -1
  224. package/.output/public/_nuxt/Dihnimlk.js +0 -19
  225. package/.output/public/_nuxt/Dqw1lpr-.js +0 -1
  226. package/.output/public/_nuxt/Dr9v6C0f.js +0 -14
  227. package/.output/public/_nuxt/Du9ZJtnj.js +0 -1
  228. package/.output/public/_nuxt/OmpTerminalPanel.B_Pl5Ynm.css +0 -1
  229. package/.output/public/_nuxt/TownView.f-YOdXRs.css +0 -1
  230. package/.output/public/_nuxt/_id_.CM4bIgKY.css +0 -1
  231. package/.output/public/_nuxt/_id_.bNV69Dtf.css +0 -1
  232. package/.output/public/_nuxt/agents.ZD0rVdHE.css +0 -1
  233. package/.output/public/_nuxt/aml.BN8ZEW4h.css +0 -1
  234. package/.output/public/_nuxt/builds/meta/f4707884-7cf4-4a31-80d2-e3d72b73745f.json +0 -1
  235. package/.output/public/_nuxt/channel-templates.BOtahzPi.css +0 -1
  236. package/.output/public/_nuxt/daq.B0D3dPAc.css +0 -1
  237. package/.output/public/_nuxt/dcw.8Y7FqCVN.css +0 -1
  238. package/.output/public/_nuxt/pages.D7aSDlUI.css +0 -1
  239. package/.output/public/_nuxt/plugins.sb4nDGqr.css +0 -1
  240. package/.output/public/_nuxt/qr6R6Ha1.js +0 -1
  241. package/.output/public/_nuxt/settings.BTgR-NiE.css +0 -1
  242. package/.output/public/_nuxt/teams.CxnxKVVs.css +0 -1
  243. package/.output/public/_nuxt/tokens.BFY7qv4f.css +0 -1
  244. package/.output/public/_nuxt/workshop.CR_QzeAN.css +0 -1
  245. package/.output/server/chunks/build/_id_-BU1wfOID.mjs.map +0 -1
  246. package/.output/server/chunks/build/_id_-BYsEua57.mjs.map +0 -1
  247. package/.output/server/chunks/build/agents-CLQqJF2y.mjs.map +0 -1
  248. package/.output/server/chunks/build/aml-_7FdFL2p.mjs.map +0 -1
  249. package/.output/server/chunks/build/channel-templates-p6SZNjlM.mjs.map +0 -1
  250. package/.output/server/chunks/build/daq-cgyjKmJu.mjs.map +0 -1
  251. package/.output/server/chunks/build/dcw-CoTxBlAZ.mjs.map +0 -1
  252. package/.output/server/chunks/build/pages-DFxjn9Xa.mjs.map +0 -1
  253. package/.output/server/chunks/build/plugins-lGlUr1lj.mjs.map +0 -1
  254. package/.output/server/chunks/build/settings-Ddd1qx2Z.mjs.map +0 -1
  255. package/.output/server/chunks/build/teams-MEDLZdMn.mjs.map +0 -1
  256. package/.output/server/chunks/build/tokens-C7fTM5C2.mjs.map +0 -1
  257. package/.output/server/chunks/build/town-qMPql9Se.mjs.map +0 -1
  258. package/.output/server/chunks/build/useDaqStream-CIBaiGAl.mjs.map +0 -1
  259. package/.output/server/chunks/build/useDcwStream-CBbiYnWe.mjs.map +0 -1
  260. package/.output/server/chunks/build/workshop-BL5bhfs0.mjs.map +0 -1
  261. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.continue.json +0 -1
  262. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.json +0 -1
  263. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/054bb4bc4e4217a2ab0b0c6b663747214a9af464f5568ea60e784704e340bb0f.source +0 -153
  264. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/0554197c3d2bac203a1f5c48a5d52495d1336db1bd7aa4f4c19875810363e684.source +0 -153
  265. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/05c203d12a954fffba942e1d626e3f5fec05b18a5aef2bac003b7884a4b77406.source +0 -431
  266. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/145a6e6ba811af35aed31e0cc3211f53706a14980fa069ee9e3c1591139f96f0.source +0 -180
  267. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/1ae0fb281f97899c025e368ca73f41349b01fb5f85b19e08d7ebccff49095ed5.source +0 -112
  268. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/20ee9967aa0541c516db7575bdd4a1a745939bc7016bd10d7635903113edb8ec.source +0 -227
  269. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/233751843aeba9d4c5263f275b8102de00443c06f286918cbd23e0b6729e01aa.source +0 -131
  270. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/263c2e05b425e5c322e60c6475279f963bab3a873eb521b21df7fec935a46597.source +0 -160
  271. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/2ac5eaac28eaaee2178c4b32014df8e732f9dd432a285a872f5b7f31c1395fa4.source +0 -157
  272. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/33a0db0d2d95d2c11d0720090458e5fba1425376f5ceb5b422d1d3471be3226b.source +0 -348
  273. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/359e474ae83db35e4615d3728de6bf694b64d4dce9b536730a3b6518f9c0494a.source +0 -296
  274. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/37a4c3c31c4b70f6b719c53d1e9c4fcba603f31adfdd11bb6ef9f0d094923c56.source +0 -285
  275. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/461feca1c14a695eb8b0f17a6f95fe97eeceabc0510faaea4ba6d25bde147d8d.source +0 -217
  276. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/4cfadbda8591f29d5e1e230dc000e701b756e850441b3900fb596a4d2f6e98c2.source +0 -301
  277. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/50ca2810cf0b248c96948994c0c404531bbad6e553166b6816b3b03bfa0f75d2.source +0 -151
  278. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/52d9e8cb591a9ae86e238c3620a610cd386717bee222c0f37b25b2ac7e523dc4.source +0 -135
  279. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/6c87daafa4c006560a954636a97333f6123153c9d34d96203f7ee3a14e556357.source +0 -156
  280. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/77bc47854b577900621cacf1697f81fa2bc005af129d37614a97a3441c08f99f.source +0 -72
  281. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/7bbb789d3a527817118cf8399ed1861d6a962ade10878fd07223435d333a7089.source +0 -469
  282. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/86b7c1daafc8b60ba9982dde5bf1bcc74265709483c176e71f23ec6fc267451f.source +0 -259
  283. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/8df66d62bd41984d0970e8236882080c5085ac937d07a29779463d6a03b37c76.source +0 -97
  284. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/9962f2d1b3a85137bd40cc835725600b39f89ee02a27c06b2e0402e1eafde115.source +0 -277
  285. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/a1090ea066b792cb201739f4994e37bf7c12f52e805239a1eab87f18a537f266.source +0 -171
  286. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/a5241091650134d0919897e086a606a3846c8b2b54f8b4c84a8696c145ac3e9e.source +0 -425
  287. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/af19fa4c6e34d5540028be4b17600161283af3a2a2dfc61a3fdc0834436a0c14.source +0 -99
  288. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/b3713d78e2b2f93905ff6be8d58a8d0a2f42dea322eb67c987fda22ff6a084d5.source +0 -325
  289. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/b3849943c3aff102d1af815631fc843a2a52c17646a4b04696ece323e483bbec.source +0 -332
  290. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/bac735a3803a6650b7f1eb8f587e6dc5c68ea055000c3c99a11789438b78e837.source +0 -43
  291. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/d32c24d61eb8b33c73e5a8fc7e4dc7ef437aed238ee4371c2b00617e6104090a.source +0 -154
  292. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/d5170dc9a9879fda04fdf91d8a110d4efb6787ee38dda596d4da899883d36a72.source +0 -531
  293. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/dc59bcd7bb397be63ba2f2c3fec23f3782dcb17d2d75a9981eeced761f33eb32.source +0 -439
  294. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/eb5ff8cf66b92aec7bf6726781d8df74faa2b030c3aaac17d6b00c1fc04c9b32.source +0 -323
  295. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f10615a6fae18436e70d1201b2d44fdae3174a3aa7bb4db97dea1b3ed291d721.source +0 -433
  296. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f36d3e271668bc1260c2823542d22dbf1d0f7041ff16b1ac175bce2256e582ca.source +0 -280
  297. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f94449380af09f31ac352152007146a75cc80bae8d6411ffe57b2c56f933b0ff.source +0 -117
  298. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/fe4dfd81178fd6b648335f6405d9ede71319aebde796008e50db21f8adf44c99.source +0 -160
  299. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/ffb4e3aa548cfdadabaa44ab599f9b6a3ca6288176a2cc7a4b2fc2a12b5fb848.source +0 -101
  300. package/scripts/.mimosa/hook-status/sess_aeaecb58-8833-4b83-b93c-050467d21e03-d944d71bb3.json +0 -14
  301. package/scripts/_dbg-audit-all-pages.mjs +0 -43
  302. package/scripts/_dbg-daq-frames-e2e.mjs +0 -118
  303. package/scripts/_dbg-daq-rowstyle-verify.mjs +0 -112
  304. package/scripts/_dbg-hitl-timeout-e2e.mjs +0 -93
  305. package/scripts/_dbg-live-line-e2e.mjs +0 -279
  306. package/scripts/_dbg-minimal-omp.mjs +0 -77
  307. package/scripts/_dbg-mode-nav.mjs +0 -173
  308. package/scripts/_dbg-real-scenario-timeline.log +0 -55
  309. package/scripts/_dbg-team-repro.mjs +0 -76
  310. package/scripts/_dbg-town-agents-probe.mjs +0 -60
  311. package/scripts/_dbg-visual-acceptance.mjs +0 -63
  312. package/scripts/_townview_style.css +0 -1185
  313. package/scripts/_townview_template.html +0 -1215
  314. package/server/data/agent-node-bindings.json +0 -554
  315. package/server/data/daq-templates.json +0 -16
  316. package/server/data/daqs.json +0 -7464
  317. package/server/data/dcw-lines.json +0 -1787
  318. package/server/data/dcw-products.json +0 -1626
  319. package/server/data/dcw-recipes.json +0 -4672
  320. package/server/data/dcw-rollback.json +0 -20754
  321. package/server/data/dcw-runs.json +0 -6354
  322. package/server/data/dcw-templates.json +0 -146
  323. package/server/data/dcw-writes.json +0 -15650
  324. package/server/data/dcws.json +0 -9033
  325. package/server/data/device-twins.json +0 -133
  326. package/server/data/line-runs.json +0 -322
  327. package/server/data/scene-layouts.json +0 -277
@@ -1,4 +1,4 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./BU83-NnX.js","./CSkxz2NX.js","./D6uzXueg.js","./4sIEbgcl.js"])))=>i.map(i=>d[i]);
2
- import{a as e}from"./BU83-NnX.js";import{$ as t,Ht as n,P as r,R as ee,S as i,Ut as a,V as o,Vt as s,W as c,d as l,dt as te,f as u,h as d,i as f,m as p,nt as m,pt as h,y as g}from"./CSkxz2NX.js";import{c as ne,d as re,f as _,l as v}from"./D6uzXueg.js";import{n as ie}from"./DtYHUi5Z.js";import{t as ae}from"./HclGiUj8.js";import{n as oe}from"./KZQX7xoM.js";import{t as se}from"./CWoJjWmZ.js";import{t as y}from"./36oeS8_R.js";import{t as b}from"./BDNMzG2s2.js";import{t as x}from"./D0ZBQrN_2.js";import{t as ce}from"./BC9wjTJK2.js";import{t as le}from"./CNs_Ozdc2.js";import{t as ue}from"./DTFCy6h-.js";import{t as de}from"./BDmh31hl.js";function S(){let e=h(new Map),t=h(null),n=h(null),r=h(null);function ee(t){let n=e.value.get(t.jobId),r=new Map(e.value);r.set(t.jobId,{jobId:t.jobId,datasetId:t.datasetId||n?.datasetId||``,lineId:t.lineId??n?.lineId??``,status:t.status,stage:t.stage,progress:t.progress,purpose:t.purpose??n?.purpose,note:t.note,at:new Date().toISOString()}),e.value=r}function i(e){if(e.type===`aml.job`){let n=e.payload;if(!n?.jobId)return;t.value=n,ee(n)}else if(e.type===`aml.dataset`){let t=e.payload;if(!t?.datasetId)return;n.value=t}else if(e.type===`aml.model`){let t=e.payload;if(!t?.modelId)return;r.value=t}}let a=0,o=null;function s(){a=Math.max(0,a-1),a===0&&o&&(o(),o=null)}function c(){a++,o||=y().subscribe(i);let e=!1;return()=>{e||(e=!0,s())}}function l(){s()}return{jobs:e,lastJob:t,lastDataset:n,lastModel:r,ensure:c,dispose:l}}var fe=`__amlStream`;function pe(){let e=globalThis;return e[fe]||(e[fe]=S()),e[fe]}var me={class:`page`},he={class:`aw-page-head`},ge={class:`sub`},_e={class:`badges mono`},ve=[`title`],ye=[`title`],be={key:0,class:`infra-banner`},xe={class:`txt`},Se={class:`mono`},Ce={key:1,class:`aw-tile ov-card`},we={class:`ov-row mono`},Te={class:`ov-item`},Ee={class:`ov-item`},De={class:`ov-item`},Oe={class:`ov-item`},ke=[`title`],Ae={key:2,class:`err`},je={key:3,class:`aw-tile zone env-zone`},Me={class:`zone-head`},Ne={class:`zone-actions`},Pe=[`disabled`],Fe={key:0,class:`infra-banner`},Ie={class:`txt`},Le={class:`mono`},Re={class:`env-grid`},ze={class:`ec-head`},Be={class:`ec-state`},Ve={key:0,class:`ec-detail mono`},He={key:1,class:`ec-detail`},Ue={class:`ec-actions`},We=[`disabled`,`title`],Ge={class:`ec-head`},Ke={class:`ec-state`},qe={class:`ec-detail mono`},Je={class:`ec-actions`},Ye=[`disabled`,`title`],Xe=[`disabled`],Ze={class:`env-card`},Qe={class:`ec-head`},$e={class:`ec-detail mono`},et={class:`ec-detail dim`},tt={class:`ec-detail`},nt={class:`mono`},rt={class:`dim`},it={class:`ec-head`},at={key:0,class:`ec-state`},ot={key:0,class:`ec-detail mono`},st={key:1,class:`ec-issues mono`},ct=[`title`],lt={class:`tag`},ut={class:`ec-actions`},dt={key:1,class:`env-task`},ft={class:`et-head mono`},pt={class:`dim`},mt={key:0,class:`dim`},ht={class:`et-log mono`},gt={key:0,class:`err`},_t={class:`aw-tile zone`},vt={class:`zone-head`},yt={class:`mono cnt`},bt={class:`zone-actions`},xt={key:0,class:`tbl-scroll`},St={class:`tbl tbl-datasets`},Ct={class:`num`},wt={class:`num`},Tt=[`onClick`],Et={class:`mono dim`},Dt={class:`mono`},Ot={class:`mono`},kt={class:`mono num`},At={class:`mono num`},jt={key:0,class:`note-edit`},Mt=[`placeholder`,`onKeyup`],Nt=[`onClick`],Pt={key:1,class:`note-text`},Ft=[`title`],It=[`title`,`onClick`],Lt=[`title`,`onClick`],Rt={key:0,class:`detail-row`},zt={colspan:`7`},Bt={key:0,class:`dim pad`},Vt={key:1,class:`err pad`},Ht={key:2,class:`det-grid`},Ut={class:`det-title`},Wt={class:`sub-tbl`},Gt={class:`num`},Kt={class:`num`},qt={class:`num`},Jt={class:`num`},Yt={class:`num`},Xt={class:`mono`},Zt={class:`role-chip`},Qt={class:`mono num`},$t={class:`mono num`},en={class:`mono num`},tn={class:`mono num`},nn={class:`mono num`},rn={class:`det-title`},an={key:0,class:`sub-tbl`},on={class:`num`},sn={class:`num`},cn={class:`mono`},ln={class:`mono`},un={class:`mono num`},dn={class:`mono num`},fn={key:1,class:`dim`},pn={class:`det-title`},mn={class:`mono dim run-line`},hn={key:3,class:`dim pad`},gn={key:1,class:`empty`},_n={class:`aw-tile zone`},vn={class:`zone-head`},yn={class:`mono cnt`},bn=[`title`],xn={key:0,class:`tbl-scroll`},Sn={class:`tbl tbl-jobs`},Cn={class:`prog-th`},wn={class:`right`},Tn=[`onClick`],En={class:`mono`},Dn={class:`mono dim`},On={class:`mono dim`},kn={class:`mono dim`},An={class:`prog-cell`},jn={class:`prog`},Mn={class:`mono prog-num`},Nn={class:`mono dim`},Pn={class:`right acts`},Fn=[`disabled`,`onClick`],In=[`disabled`,`onClick`],Ln=[`title`,`onClick`],Rn={key:0,class:`detail-row`},zn={colspan:`8`},Bn={key:0,class:`dim pad`},Vn={key:1,class:`err pad`},Hn={key:2,class:`det-grid`},Un={class:`det-title`},Wn={key:0,class:`sub-tbl`},Gn={class:`num`},Kn={class:`num`},qn={class:`mono gate-id`},Jn={class:`dim`},Yn={class:`mono num`},Xn={class:`mono num dim`},Zn={class:`dim gate-detail`},Qn={key:1,class:`dim`},$n={key:2,class:`mono dim gate-detail`},er={key:3,class:`err gate-detail`},tr={class:`det-title`},nr={key:0,class:`mono live-hint`},rr={class:`logs`},ir={key:1,class:`empty`},ar={class:`aw-tile zone`},or={class:`zone-head`},sr={class:`mono cnt`},cr={class:`zone-actions`},lr={value:``},ur=[`value`],dr=[`disabled`],fr={key:0,class:`tbl-scroll`},pr={class:`tbl tbl-exp`},mr=[`title`],hr=[`title`],gr={class:`mono`},_r={key:0,class:`best-tag`},vr={class:`mono dim`},yr={class:`note-cell`},br=[`title`],xr={class:`mono dim`},Sr={class:`mono num`},Cr={class:`mono num`},wr={key:1,class:`empty`},Tr={key:2,class:`err pad`},Er={class:`aw-tile zone`},Dr={class:`zone-head`},Or={class:`mono cnt`},kr={key:0,class:`tbl-scroll`},Ar={class:`tbl tbl-models`},jr=[`title`],Mr={class:`right`},Nr={class:`mono`},Pr={class:`mono dim`},Fr={class:`mono dim`},Ir={class:`mono dim`},Lr={class:`mono dim`},Rr={key:0,class:`note-edit`},zr=[`placeholder`,`onKeyup`],Br=[`onClick`],Vr={key:1,class:`note-text`},Hr=[`title`],Ur=[`title`,`onClick`],Wr={class:`right acts`},Gr=[`disabled`,`onClick`],Kr={key:0,class:`dim`},qr=[`title`,`onClick`],Jr={key:1,class:`empty`},Yr={class:`aw-tile zone`},Xr={class:`zone-head`},Zr={value:``},Qr=[`value`],$r={key:0,class:`pc-body`},ei={class:`det-title`},ti={class:`io-grid mono`},ni={class:`io-item`},ri={class:`io-item`},ii={class:`io-item`},ai=[`title`],oi=[`title`],si=[`title`],ci={class:`pc-form`},li={class:`pc-field`},ui=[`placeholder`],di={class:`pc-side`},fi={class:`pc-field`},pi={class:`pc-field`},mi=[`disabled`],hi={class:`hint dim`},gi={key:0,class:`err`},_i={class:`det-title`},vi={class:`sub-tbl`},yi={class:`num`},bi={class:`num`},xi={key:0,class:`dim`},Si={class:`mono num`},Ci={class:`mono num dim`},wi={class:`mono dim gate-detail`},Ti={key:1,class:`empty`},Ei={key:1,class:`empty`},Di={class:`modal`},Oi={class:`m-title`},ki={class:`f-grid`},Ai={class:`f`},ji={class:`f`},Mi={class:`f`},Ni={class:`sec-label`},Pi={class:`node-rows`},Fi=[`onUpdate:modelValue`,`placeholder`],Ii=[`onUpdate:modelValue`],Li={value:`control`},Ri={value:`feature`},zi={value:`target`},Bi=[`disabled`,`onClick`],Vi={class:`f-grid`},Hi={class:`f`},Ui={class:`f`},Wi={class:`f`},Gi={class:`f`},Ki={class:`f`},qi={class:`f`},Ji={class:`f`},Yi={value:`mpc_surrogate`},Xi={value:`quality_predict`},Zi={class:`f wide`},Qi=[`placeholder`],$i={key:0,class:`m-err`},ea={class:`m-actions`},ta=[`disabled`],na=b(i({__name:`index`,setup(i){let{t:y}=oe();le({layout:`default`}),ie({title:()=>y(`aml.k1amlx160`)});function b(e,t){return de({base:`/api/workshop/aml`,path:e,init:t})}let S=pe(),fe=ce(),na=null,ra=null;ee(()=>{fe.ensureConnected(),na=S.ensure(),D(),_a(),Ta(),N(),V(),J(),(O.value?.task?.status??E.value?.env?.task?.status)===`running`&&(k.value=!0,ba()),ue(()=>{D(),V()},8e3,{bgMs:3e4}),ra=se(()=>{let e=W.value;if(!e||document.hidden)return;let t=H.value.find(t=>t.id===e);t&&T(t.status)&&Ha(e)},5e3)}),r(()=>{na?.(),ra&&clearInterval(ra),ya()}),t(()=>S.lastJob.value,e=>{e&&oa(e.status)&&V()}),t(()=>S.lastModel.value,()=>{J()}),t(()=>S.lastDataset.value,()=>{N()});function ia(e){if(!e)return`--`;let t=new Date(e);return Number.isFinite(t.getTime())?`${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)} ${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`:`--`}function C(e,t=4){return e==null||!Number.isFinite(e)?`--`:String(Number(e.toFixed(t)))}function aa(e,t=1){return e==null||!Number.isFinite(e)?`--`:`${(e*100).toFixed(t)}%`}function w(e){return e.length>12?`${e.slice(0,10)}…`:e}function T(e){return e===`queued`||e===`provisioning`||e===`training`||e===`evaluating`}function oa(e){return e===`done`||e===`failed`||e===`cancelled`||e===`timeout`||e===`interrupted`}function sa(e){return e===`failed`||e===`timeout`||e===`interrupted`}function ca(e){let t={queued:`aml.k1amlx100`,provisioning:`aml.k1amlx101`,training:`aml.k1amlx102`,evaluating:`aml.k1amlx103`,done:`aml.k1amlx104`,failed:`aml.k1amlx105`,cancelled:`aml.k1amlx106`,timeout:`aml.k1amlx107`,interrupted:`aml.k1amlx108`};return t[e]?y(t[e]):e}function la(e){let t={running:`aml.k1amlx119`,gates_passed:`aml.k1amlx080`,gates_failed:`aml.k1amlx081`,failed:`aml.k1amlx105`};return t[e]?y(t[e]):e}let E=h(null),ua=h(``);async function D(){try{E.value=await b(``),ua.value=``}catch(e){ua.value=x(e)}}let da=l(()=>{let e=E.value?.runtime;return e?e.python.ok?e.python.version??y(`aml.k1amlx004`):y(`aml.k1amlx005`):`--`}),fa=l(()=>E.value?E.value.runtime.venvReady?y(`aml.k1amlx007`):y(`aml.k1amlx008`):`--`),O=h(null),pa=h(!1),k=h(!1),ma=h(!1),ha=l(()=>{let e=O.value?.uv??E.value?.env?.uv;return e?e.ok?e.version??y(`aml.k1amlx164`):y(`aml.k1amlx165`):`--`}),ga=l(()=>{let e=(O.value?.uv??E.value?.env?.uv)?.source;return e?{config:`aml.python.uvBin`,project:`./aml/tools`,state:`./aml/runtime/uv.json`,path:`PATH`}[e]??e:``});async function _a(){try{O.value=await b(`/env`)}catch{}}let va=null;function ya(){va!=null&&(clearInterval(va),va=null)}function ba(){ya(),va=se(()=>{(async()=>{await _a(),await D(),(O.value?.task==null||O.value.task.status!==`running`)&&(ya(),k.value=!1)})()},1500)}async function xa(t,n){k.value=!0,ma.value=!0;try{await b(t,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n??{})}),await _a(),ba()}catch(t){k.value=!1,e.error(`${y(`aml.k1amlx203`)}:${x(t)}`)}}async function Sa(){await xa(`/env/uv`)}async function Ca(e=!1){await xa(`/env/venv`,{force:e})}async function wa(){k.value=!0;try{O.value=await b(`/env/recheck`,{method:`POST`,headers:{"content-type":`application/json`},body:`{}`}),await D()}catch(t){e.error(`${y(`aml.k1amlx203`)}:${x(t)}`)}finally{k.value=!1}}let A=h(null);async function Ta(){try{A.value=await b(`/entities`)}catch{}}async function Ea(){try{let t=await b(`/entities/prune`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({dryRun:!1})});e.success(`${y(`aml.k1amlx188`)}:${t.removed.length}`),await Ta()}catch(t){e.error(`${y(`aml.k1amlx203`)}:${x(t)}`)}}function Da(){D(),_a(),Ta(),N(),V(),J()}let j=h([]),M=h(``);async function N(){try{let e=await b(`/datasets`);j.value=e.datasets}catch{}}let Oa=h(``),P=h(``);function ka(e,t){Oa.value=e,P.value=t??``}function F(){Oa.value=``,P.value=``}async function Aa(t,n){try{await b(`/${t}/${n}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({note:P.value})}),e.success(y(`aml.k1amlx192`)),F(),t===`datasets`?await N():await J()}catch(t){e.error(`${y(`aml.k1amlx203`)}:${x(t)}`)}}async function ja(t,n,r){if(await Ma(r))try{await b(`/${t}/${n}`,{method:`DELETE`}),e.success(y(`aml.k1amlx193`)),t===`datasets`?await N():t===`models`?await J():await V(),await D(),await Ta()}catch(t){e.error(`${y(`aml.k1amlx203`)}:${x(t)}`)}}async function Ma(e){try{let{Modal:t}=await ae(async()=>{let{Modal:e}=await import(`./BU83-NnX.js`).then(e=>e.t);return{Modal:e}},__vite__mapDeps([0,1,2,3]),import.meta.url);return await new Promise(n=>{t.confirm({title:e,okText:y(`aml.k1amlx190`),cancelText:y(`aml.k1amlx202`),onOk:()=>n(!0),onCancel:()=>n(!1)})})}catch{return!0}}let I=te({});async function Na(e){if(M.value=M.value===e?``:e,M.value&&!I[e]){I[e]={loading:!0,error:``,report:null};try{let t=await b(`/datasets/${e}`);I[e]={loading:!1,error:``,report:t.report}}catch(t){I[e]={loading:!1,error:x(t),report:null}}}}let L=h(!1),Pa=h(!1),R=h(``),z=te({lineId:``,productId:``,recipeId:``,beatMs:5e3,historySteps:60,horizonSteps:30,valRatio:.15,testRatio:.15,seed:7,purpose:`mpc_surrogate`,note:``}),B=te([{nodeId:``,role:`control`},{nodeId:``,role:`target`}]);function Fa(){R.value=``,L.value=!0}function Ia(){B.push({nodeId:``,role:`feature`})}function La(e){B.splice(e,1)}async function Ra(){R.value=``;let t=B.filter(e=>e.nodeId.trim()).map(e=>({nodeId:e.nodeId.trim(),role:e.role}));if(!z.lineId.trim()||!z.productId.trim()||!z.recipeId.trim()){R.value=y(`aml.k1amlx161`);return}if(t.length<2||!t.some(e=>e.role===`target`)){R.value=y(`aml.k1amlx054`);return}Pa.value=!0;try{let n=await b(`/datasets`,{method:`POST`,body:JSON.stringify({lineId:z.lineId.trim(),productId:z.productId.trim(),recipeId:z.recipeId.trim(),nodes:t,beatMs:Number(z.beatMs),window:{historySteps:Number(z.historySteps),horizonSteps:Number(z.horizonSteps)},split:{valRatio:Number(z.valRatio),testRatio:Number(z.testRatio),seed:Number(z.seed)},purpose:z.purpose,note:z.note.trim()||void 0})});e.success(y(`aml.k1amlx073`,{p0:w(n.dataset.id),p1:n.dataset.rowCount})),L.value=!1,await N()}catch(e){R.value=x(e)}finally{Pa.value=!1}}let za=h([]);async function V(){try{let e=await b(`/jobs`);za.value=e.jobs}catch{}}let H=l(()=>za.value.map(e=>{let t=S.jobs.value.get(e.id);return t?{...e,status:t.status||e.status,stage:t.stage||e.stage,progress:t.progress??e.progress,live:!0}:e})),U=te({}),W=h(``);async function Ba(e){return(await b(`/jobs/${e}/logs?lines=120`)).logs}async function Va(e){if(W.value=W.value===e?``:e,W.value&&!U[e]){U[e]={loading:!0,error:``,metrics:null,gates:null,logs:[]};try{let[t,n]=await Promise.all([b(`/jobs/${e}`),Ba(e)]);U[e]={loading:!1,error:``,metrics:t.metrics,gates:t.gates,logs:n}}catch(t){U[e]={loading:!1,error:x(t),metrics:null,gates:null,logs:[]}}}}async function Ha(e){let t=U[e];if(t)try{t.logs=await Ba(e)}catch{}}let Ua=h(``),Wa=h(``);async function Ga(t){if(Ua.value!==t){Ua.value=t;return}Ua.value=``,Wa.value=t;try{await b(`/jobs/${t}/cancel`,{method:`POST`,body:JSON.stringify({})}),e.success(y(`aml.k1amlx097`,{p0:w(t)})),await V()}catch(t){e.error(x(t))}finally{Wa.value=``}}let Ka=h(``),qa=h(``);async function Ja(t){if(Ka.value!==t){Ka.value=t;return}Ka.value=``,qa.value=t;try{await b(`/jobs/${t}/retry`,{method:`POST`,body:JSON.stringify({})}),e.success(y(`aml.k1amlx098`,{p0:w(t)})),await V()}catch(t){e.error(x(t))}finally{qa.value=``}}let G=h(``),K=h([]),Ya=h(!1),Xa=h(``);async function Za(){if(!G.value){K.value=[];return}Ya.value=!0,Xa.value=``;try{let e=await b(`/experiments?datasetId=${encodeURIComponent(G.value)}`);K.value=e.experiments}catch(e){Xa.value=x(e)}finally{Ya.value=!1}}let Qa=l(()=>{let e=null;for(let t of K.value){let n=t.metrics?.oneStepTest?.nrmse;t.status===`gates_passed`&&n!=null&&Number.isFinite(n)&&(e==null||n<e.nrmse)&&(e={id:t.id,nrmse:n})}return e?.id??``}),q=h([]);async function J(){try{let e=await b(`/models`);q.value=e.models}catch{}}let $a=h(``),eo=h(``);function to(e){return e.stage===`candidate`?[{to:`shadow`,key:`aml.k1amlx128`},{to:`production`,key:`aml.k1amlx129`}]:e.stage===`shadow`?[{to:`production`,key:`aml.k1amlx129`},{to:`retired`,key:`aml.k1amlx130`}]:e.stage===`production`?[{to:`retired`,key:`aml.k1amlx130`}]:[]}async function no(t,n){let r=`${t.id}:${n}`;if($a.value!==r){$a.value=r;return}$a.value=``,eo.value=r;try{let r=await b(`/models/${t.id}/promote`,{method:`POST`,body:JSON.stringify({toStage:n})});r.ok&&e.success(y(`aml.k1amlx132`,{p0:r.from??t.stage,p1:n})),await Promise.all([J(),D()])}catch(t){e.error(x(t))}finally{eo.value=``}}let ro=l(()=>q.value.filter(e=>e.stage===`production`)),io=h(``),Y=l(()=>q.value.find(e=>e.id===io.value)??null),ao=h(``),X=h(``),Z=h(null),oo=h(!1),Q=h(``),$=h(null);function so(){e.info(y(`aml.k1amlx146`))}function co(e){let t=e.trim();if(!t)return null;try{let e=JSON.parse(t);return!Array.isArray(e)||e.length===0?null:e.every(e=>Array.isArray(e)&&e.length>0&&e.every(e=>typeof e==`number`&&Number.isFinite(e)))?e:null}catch{return null}}async function lo(){Q.value=``,$.value=null;let t=Y.value;if(!t)return;let n=co(ao.value);if(!n){Q.value=y(`aml.k1amlx153`);return}let r=X.value.trim()?co(X.value):void 0;if(X.value.trim()&&!r){Q.value=y(`aml.k1amlx153`);return}oo.value=!0;try{let ee=typeof Z.value==`number`&&Number.isFinite(Z.value)?Z.value:void 0,i=await b(`/models/${t.id}/predict`,{method:`POST`,body:JSON.stringify({history:n,controls:r,steps:ee})});$.value=i.prediction,e.success(y(`aml.k1amlx154`,{p0:i.prediction.forecast.length,p1:i.prediction.targetNodes.length}))}catch(e){Q.value=x(e)}finally{oo.value=!1}}return(e,t)=>(o(),d(`div`,me,[u(`div`,he,[u(`div`,null,[t[28]||=u(`p`,{class:`aw-kicker`},` AGENTWORKSHOP / AML STUDIO `,-1),u(`h1`,null,a(e.$t(`aml.k1amlx001`)),1),u(`p`,ge,a(e.$t(`aml.k1amlx002`)),1)]),u(`div`,_e,[u(`span`,{class:s([`badge`,{bad:E.value!=null&&!E.value.runtime.python.ok}]),title:E.value?.runtime.python.reason??``},`PYTHON · `+a(da.value),11,ve),u(`span`,{class:s([`badge`,{bad:E.value!=null&&!E.value.runtime.venvReady}])},`VENV · `+a(fa.value),3),u(`span`,{class:s([`badge`,{bad:O.value!=null&&!O.value.uv.ok}]),title:O.value?.uv.reason??O.value?.uv.path??``},`UV · `+a(ha.value),11,ye)])]),E.value!=null&&!E.value.runtime.python.ok?(o(),d(`div`,be,[t[29]||=u(`span`,{class:`i-tabler-alert-triangle`},null,-1),u(`span`,xe,[g(a(e.$t(`aml.k1amlx014`)),1),u(`b`,Se,a(E.value.runtime.python.reason??``),1)])])):p(``,!0),E.value?(o(),d(`section`,Ce,[u(`div`,we,[u(`span`,{class:s([`ov-item`,E.value.runtime.python.ok?`ok`:`bad`])},[u(`span`,{class:s(E.value.runtime.python.ok?`i-tabler-circle-check`:`i-tabler-alert-triangle`)},null,2),g(` `+a(e.$t(`aml.k1amlx003`))+` · `+a(da.value),1)],2),u(`span`,{class:s([`ov-item`,{ok:E.value.runtime.venvReady}])},a(e.$t(`aml.k1amlx006`))+` · `+a(fa.value),3),u(`span`,Te,[g(a(e.$t(`aml.k1amlx009`))+` `,1),u(`b`,null,a(E.value.runtime.queued),1)]),u(`span`,Ee,[g(a(e.$t(`aml.k1amlx010`))+` `,1),u(`b`,null,a(E.value.runtime.running),1)]),t[30]||=u(`span`,{class:`sep`},`·`,-1),u(`span`,De,[g(a(e.$t(`aml.k1amlx011`))+` `,1),u(`b`,null,a(E.value.counts.datasets),1)]),u(`span`,Oe,[g(a(e.$t(`aml.k1amlx012`))+` `,1),u(`b`,null,a(E.value.counts.models),1)]),u(`span`,{class:`ov-item accent`,title:e.$t(`aml.k1amlx013`)},[g(a(e.$t(`aml.k1amlx013`))+` `,1),u(`b`,null,a(E.value.counts.productions),1)],8,ke),u(`button`,{class:`mini-btn reload`,onClick:Da},a(e.$t(`aml.k1amlx017`)),1)])])):ua.value?(o(),d(`p`,Ae,a(e.$t(`aml.k1amlx015`))+`:`+a(ua.value),1)):p(``,!0),O.value?(o(),d(`section`,je,[u(`div`,Me,[u(`h2`,null,a(e.$t(`aml.k1amlx162`)),1),u(`div`,Ne,[u(`button`,{class:`mini-btn`,disabled:k.value,onClick:wa},a(e.$t(`aml.k1amlx175`)),9,Pe),u(`button`,{class:`mini-btn`,onClick:t[0]||=e=>pa.value=!pa.value},a(pa.value?e.$t(`aml.k1amlx181`):e.$t(`aml.k1amlx180`)),1)])]),O.value.preflight.canRunJobs?p(``,!0):(o(),d(`div`,Fe,[t[31]||=u(`span`,{class:`i-tabler-alert-triangle`},null,-1),u(`span`,Ie,[g(a(e.$t(`aml.k1amlx178`))+`:`,1),u(`b`,Le,a(O.value.preflight.blockers.join(` / `)),1)])])),u(`div`,Re,[u(`div`,{class:s([`env-card`,O.value.uv.ok?`ok`:`bad`])},[u(`div`,ze,[u(`span`,{class:s(O.value.uv.ok?`i-tabler-circle-check`:`i-tabler-alert-triangle`)},null,2),u(`b`,null,a(e.$t(`aml.k1amlx163`)),1),u(`span`,Be,a(ha.value),1)]),O.value.uv.ok?(o(),d(`p`,Ve,[g(a(O.value.uv.path),1),ga.value?(o(),d(f,{key:0},[g(` · `+a(ga.value),1)],64)):p(``,!0)])):(o(),d(`p`,He,a(e.$t(`aml.k1amlx177`)),1)),u(`div`,Ue,[O.value.uv.ok?p(``,!0):(o(),d(`button`,{key:0,class:`mini-btn primary`,disabled:k.value,title:e.$t(`aml.k1amlx176`),onClick:Sa},[t[32]||=u(`span`,{class:`i-tabler-download`},null,-1),g(` `+a(O.value.task?.kind===`install-uv`&&O.value.task.status===`running`?e.$t(`aml.k1amlx167`):e.$t(`aml.k1amlx166`)),1)],8,We))])],2),u(`div`,{class:s([`env-card`,O.value.venv.ready?`ok`:`bad`])},[u(`div`,Ge,[u(`span`,{class:s(O.value.venv.ready?`i-tabler-circle-check`:`i-tabler-alert-triangle`)},null,2),u(`b`,null,a(e.$t(`aml.k1amlx168`)),1),u(`span`,Ke,a(O.value.venv.ready?e.$t(`aml.k1amlx007`):e.$t(`aml.k1amlx008`)),1)]),u(`p`,qe,[g(a(O.value.venv.dir)+` `,1),O.value.venv.ready?(o(),d(f,{key:0},[g(` · `+a(O.value.venv.sizeMb)+` MB `,1)],64)):p(``,!0)]),u(`div`,Je,[u(`button`,{class:`mini-btn primary`,disabled:k.value||!O.value.python.ok,title:O.value.python.ok?``:O.value.python.reason??``,onClick:t[1]||=e=>Ca(!1)},[t[33]||=u(`span`,{class:`i-tabler-plus`},null,-1),g(` `+a(O.value.task?.kind===`create-venv`&&O.value.task.status===`running`?e.$t(`aml.k1amlx170`):e.$t(`aml.k1amlx168`)),1)],8,Ye),O.value.venv.ready?(o(),d(`button`,{key:0,class:`mini-btn`,disabled:k.value,onClick:t[2]||=e=>Ca(!0)},a(e.$t(`aml.k1amlx169`)),9,Xe)):p(``,!0)])],2),u(`div`,Ze,[u(`div`,Qe,[t[34]||=u(`span`,{class:`i-tabler-folder`},null,-1),u(`b`,null,a(e.$t(`aml.k1amlx171`)),1)]),u(`p`,$e,a(O.value.amlRoot),1),u(`p`,et,a(e.$t(`aml.k1amlx201`)),1),u(`p`,tt,[g(a(e.$t(`aml.k1amlx174`))+`: `,1),u(`b`,nt,a(O.value.disk.usedMb)+` / `+a(O.value.disk.quotaMb)+` MB`,1),u(`span`,rt,` · `+a(O.value.amlRootSource),1)])]),u(`div`,{class:s([`env-card`,A.value==null?``:A.value.ok?`ok`:`bad`])},[u(`div`,it,[u(`span`,{class:s(A.value?.ok===!1?`i-tabler-alert-triangle`:`i-tabler-database`)},null,2),u(`b`,null,a(e.$t(`aml.k1amlx182`)),1),A.value?(o(),d(`span`,at,a(A.value.ok?e.$t(`aml.k1amlx183`):e.$t(`aml.k1amlx184`)),1)):p(``,!0)]),A.value?(o(),d(`p`,ot,a(e.$t(`aml.k1amlx011`))+` `+a(A.value.counts.datasets)+`/`+a(A.value.entities.datasets)+` · `+a(e.$t(`aml.k1amlx010`))+` `+a(A.value.counts.jobs)+`/`+a(A.value.entities.jobs)+` · `+a(e.$t(`aml.k1amlx012`))+` `+a(A.value.counts.models)+`/`+a(A.value.entities.models),1)):p(``,!0),A.value&&A.value.issues.length>0?(o(),d(`ul`,st,[(o(!0),d(f,null,c(A.value.issues.slice(0,5),t=>(o(),d(`li`,{key:`${t.kind}:${t.id}:${t.problem}`,title:t.detail},[u(`span`,lt,a(t.problem===`entity_missing`?e.$t(`aml.k1amlx185`):t.problem===`orphan_dir`?e.$t(`aml.k1amlx186`):e.$t(`aml.k1amlx187`)),1),g(` `+a(t.kind)+` `+a(w(t.id)),1)],8,ct))),128))])):p(``,!0),u(`div`,ut,[A.value&&A.value.issues.some(e=>e.problem===`orphan_dir`)?(o(),d(`button`,{key:0,class:`mini-btn`,onClick:Ea},[t[35]||=u(`span`,{class:`i-tabler-trash`},null,-1),g(` `+a(e.$t(`aml.k1amlx188`)),1)])):p(``,!0)])],2)]),O.value.task&&pa.value?(o(),d(`div`,dt,[u(`div`,ft,[u(`span`,{class:s(O.value.task.status===`running`?`i-tabler-loader-2 spin`:O.value.task.status===`done`?`i-tabler-circle-check`:`i-tabler-alert-triangle`)},null,2),u(`b`,null,a(O.value.task.kind),1),u(`span`,pt,a(O.value.task.status),1),O.value.task.status===`running`?(o(),d(`span`,mt,`· `+a(e.$t(`aml.k1amlx179`)),1)):p(``,!0)]),u(`pre`,ht,a(O.value.task.log.slice(-40).join(`
3
- `)),1),O.value.task.error?(o(),d(`p`,gt,a(O.value.task.error),1)):p(``,!0)])):p(``,!0)])):p(``,!0),u(`section`,_t,[u(`div`,vt,[u(`h2`,null,[t[36]||=u(`span`,{class:`i-tabler-database`},null,-1),g(` `+a(e.$t(`aml.k1amlx016`))+` `,1),u(`b`,yt,a(j.value.length),1)]),u(`div`,bt,[u(`button`,{class:`mini-btn`,onClick:t[3]||=e=>N()},a(e.$t(`aml.k1amlx017`)),1),u(`button`,{class:`pill-btn`,onClick:Fa},[t[37]||=u(`span`,{class:`i-tabler-plus`},null,-1),g(` `+a(e.$t(`aml.k1amlx018`)),1)])])]),j.value.length?(o(),d(`div`,xt,[u(`table`,St,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx020`)),1),u(`th`,null,a(e.$t(`aml.k1amlx021`)),1),u(`th`,null,a(e.$t(`aml.k1amlx022`)),1),u(`th`,Ct,a(e.$t(`aml.k1amlx023`)),1),u(`th`,wt,a(e.$t(`aml.k1amlx024`)),1),u(`th`,null,a(e.$t(`aml.k1amlx025`)),1),u(`th`,null,a(e.$t(`aml.k1amlx026`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(j.value,n=>(o(),d(f,{key:n.id},[u(`tr`,{class:s([`row-main`,{open:M.value===n.id}]),onClick:e=>Na(n.id)},[u(`td`,Et,a(ia(n.createdAt)),1),u(`td`,Dt,a(w(n.productId)),1),u(`td`,Ot,a(w(n.recipeId)),1),u(`td`,kt,a(n.rowCount),1),u(`td`,At,a(n.runIds.length),1),u(`td`,null,[g(a(n.createdBy),1),u(`small`,{class:s([`kind`,n.createdByKind])},a(n.createdByKind===`agent`?`Agent`:e.$t(`aml.k1amlx049`)),3)]),u(`td`,{class:`note-cell`,onClick:t[5]||=_(()=>{},[`stop`])},[Oa.value===n.id?(o(),d(`div`,jt,[m(u(`input`,{"onUpdate:modelValue":t[4]||=e=>P.value=e,placeholder:e.$t(`aml.k1amlx189`),onKeyup:[re(e=>Aa(`datasets`,n.id),[`enter`]),re(F,[`esc`])]},null,40,Mt),[[v,P.value]]),u(`button`,{class:`mini-btn`,onClick:e=>Aa(`datasets`,n.id)},a(e.$t(`aml.k1amlx191`)),9,Nt),u(`button`,{class:`mini-btn`,onClick:F},a(e.$t(`aml.k1amlx202`)),1)])):(o(),d(`span`,Pt,[u(`span`,{class:`note`,title:n.note},a(n.note||`--`),9,Ft),u(`span`,{class:`i-tabler-pencil edit-i`,title:e.$t(`aml.k1amlx189`),onClick:e=>ka(n.id,n.note)},null,8,It),u(`span`,{class:`i-tabler-trash edit-i`,title:e.$t(`aml.k1amlx190`),onClick:t=>ja(`datasets`,n.id,e.$t(`aml.k1amlx198`))},null,8,Lt)]))])],10,Tt),M.value===n.id?(o(),d(`tr`,Rt,[u(`td`,zt,[I[n.id]?.loading?(o(),d(`div`,Bt,a(e.$t(`aml.k1amlx030`)),1)):I[n.id]?.error?(o(),d(`div`,Vt,a(e.$t(`aml.k1amlx031`))+`:`+a(I[n.id]?.error),1)):I[n.id]?.report?(o(),d(`div`,Ht,[u(`div`,null,[u(`p`,Ut,a(e.$t(`aml.k1amlx027`)),1),u(`table`,Wt,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx033`)),1),u(`th`,null,a(e.$t(`aml.k1amlx034`)),1),u(`th`,Gt,a(e.$t(`aml.k1amlx035`)),1),u(`th`,Kt,a(e.$t(`aml.k1amlx036`)),1),u(`th`,qt,a(e.$t(`aml.k1amlx037`)),1),u(`th`,Jt,a(e.$t(`aml.k1amlx038`)),1),u(`th`,Yt,a(e.$t(`aml.k1amlx039`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(I[n.id]?.report?.nodeSummaries,e=>(o(),d(`tr`,{key:e.nodeId},[u(`td`,Xt,a(e.nodeId),1),u(`td`,null,[u(`small`,Zt,a(e.role),1)]),u(`td`,Qt,a(aa(e.cleanedRatio)),1),u(`td`,$t,a(aa(e.missingRatio)),1),u(`td`,en,a(C(e.mean,3)),1),u(`td`,tn,a(C(e.std,3)),1),u(`td`,nn,a(C(e.min,2))+`~`+a(C(e.max,2)),1)]))),128))])])]),u(`div`,null,[u(`p`,rn,a(e.$t(`aml.k1amlx028`)),1),I[n.id]?.report?.lagEstimates.length?(o(),d(`table`,an,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx040`)),1),u(`th`,null,a(e.$t(`aml.k1amlx041`)),1),u(`th`,on,a(e.$t(`aml.k1amlx042`)),1),u(`th`,sn,a(e.$t(`aml.k1amlx043`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(I[n.id]?.report?.lagEstimates,e=>(o(),d(`tr`,{key:`${e.controlId}->${e.targetId}`},[u(`td`,cn,a(e.controlId),1),u(`td`,ln,a(e.targetId),1),u(`td`,un,a(e.lagSteps),1),u(`td`,dn,a(C(e.corr,3)),1)]))),128))])])):(o(),d(`p`,fn,a(e.$t(`aml.k1amlx032`)),1)),u(`p`,pn,a(e.$t(`aml.k1amlx029`)),1),u(`p`,mn,[g(a(e.$t(`aml.k1amlx044`))+` `,1),u(`b`,null,a(I[n.id]?.report?.runsUsed.length??0),1),g(` · `+a(e.$t(`aml.k1amlx045`))+` `,1),u(`b`,null,a(I[n.id]?.report?.runsDropped.length??0),1),g(` · `+a(e.$t(`aml.k1amlx046`))+` `,1),u(`b`,null,a(I[n.id]?.report?.windowCount.train)+`/`+a(I[n.id]?.report?.windowCount.val)+`/`+a(I[n.id]?.report?.windowCount.test),1)]),(o(!0),d(f,null,c(I[n.id]?.report?.runsDropped,e=>(o(),d(`p`,{key:e.runId,class:`mono drop-line`},` ✗ `+a(w(e.runId))+` — `+a(e.reason),1))),128))])])):(o(),d(`p`,hn,a(e.$t(`aml.k1amlx047`)),1))])])):p(``,!0)],64))),128))])])])):(o(),d(`p`,gn,a(e.$t(`aml.k1amlx019`)),1))]),u(`section`,_n,[u(`div`,vn,[u(`h2`,null,[t[38]||=u(`span`,{class:`i-tabler-brain`},null,-1),g(` `+a(e.$t(`aml.k1amlx074`))+` `,1),u(`b`,yn,a(H.value.length),1),H.value.some(e=>T(e.status))?(o(),d(`span`,{key:0,class:`live-dot`,title:e.$t(`aml.k1amlx091`)},null,8,bn)):p(``,!0)]),u(`button`,{class:`mini-btn`,onClick:t[6]||=e=>V()},a(e.$t(`aml.k1amlx017`)),1)]),H.value.length?(o(),d(`div`,xn,[u(`table`,Sn,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx076`)),1),u(`th`,null,a(e.$t(`aml.k1amlx011`)),1),u(`th`,null,a(e.$t(`aml.k1amlx066`)),1),u(`th`,null,a(e.$t(`aml.k1amlx077`)),1),u(`th`,null,a(e.$t(`aml.k1amlx078`)),1),u(`th`,Cn,a(e.$t(`aml.k1amlx079`)),1),u(`th`,null,a(e.$t(`aml.k1amlx020`)),1),u(`th`,wn,a(e.$t(`aml.k1amlx127`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(H.value,t=>(o(),d(f,{key:t.id},[u(`tr`,{class:s([`row-main`,{open:W.value===t.id}]),onClick:e=>Va(t.id)},[u(`td`,En,a(w(t.id)),1),u(`td`,Dn,a(w(t.datasetId)),1),u(`td`,On,a(t.purpose),1),u(`td`,null,[u(`span`,{class:s([`st-pill`,t.status])},a(ca(t.status)),3)]),u(`td`,kn,a(t.stage||`--`),1),u(`td`,An,[u(`span`,jn,[u(`i`,{style:n({width:`${Math.max(0,Math.min(100,t.progress))}%`}),class:s({done:t.status===`done`,bad:t.status===`failed`})},null,6)]),u(`span`,Mn,a(Math.round(t.progress))+`%`,1)]),u(`td`,Nn,a(ia(t.createdAt)),1),u(`td`,Pn,[T(t.status)?(o(),d(`button`,{key:0,class:`mini-btn danger`,disabled:Wa.value===t.id,onClick:_(e=>Ga(t.id),[`stop`])},a(Ua.value===t.id?e.$t(`aml.k1amlx094`):Wa.value===t.id?e.$t(`aml.k1amlx093`):e.$t(`aml.k1amlx071`)),9,Fn)):p(``,!0),sa(t.status)?(o(),d(`button`,{key:1,class:`mini-btn`,disabled:qa.value===t.id,onClick:_(e=>Ja(t.id),[`stop`])},a(Ka.value===t.id?e.$t(`aml.k1amlx096`):e.$t(`aml.k1amlx095`)),9,In)):p(``,!0),T(t.status)?p(``,!0):(o(),d(`span`,{key:2,class:`i-tabler-trash edit-i`,title:e.$t(`aml.k1amlx190`),onClick:_(n=>ja(`jobs`,t.id,e.$t(`aml.k1amlx200`)),[`stop`])},null,8,Ln))])],10,Tn),W.value===t.id?(o(),d(`tr`,Rn,[u(`td`,zn,[U[t.id]?.loading?(o(),d(`div`,Bn,a(e.$t(`aml.k1amlx030`)),1)):U[t.id]?.error?(o(),d(`div`,Vn,a(U[t.id]?.error),1)):(o(),d(`div`,Hn,[u(`div`,null,[u(`p`,Un,a(e.$t(`aml.k1amlx083`)),1),U[t.id]?.gates?.checks.length?(o(),d(`table`,Wn,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx084`)),1),u(`th`,Gn,a(e.$t(`aml.k1amlx085`)),1),u(`th`,Kn,a(e.$t(`aml.k1amlx086`)),1),u(`th`,null,a(e.$t(`aml.k1amlx118`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(U[t.id]?.gates?.checks,t=>(o(),d(`tr`,{key:t.id},[u(`td`,null,[u(`b`,qn,a(t.id),1),u(`small`,Jn,a(t.name),1)]),u(`td`,Yn,a(C(t.value)),1),u(`td`,Xn,a(C(t.threshold)),1),u(`td`,null,[u(`span`,{class:s([`verdict`,t.pass?`pass`:`fail`])},a(t.pass?e.$t(`aml.k1amlx087`):e.$t(`aml.k1amlx088`)),3),u(`small`,Zn,a(t.detail),1)])]))),128))])])):(o(),d(`p`,Qn,a(e.$t(`aml.k1amlx082`)),1)),U[t.id]?.metrics?.oneStepTest?(o(),d(`p`,$n,[g(a(e.$t(`aml.k1amlx099`))+`: `+a(e.$t(`aml.k1amlx116`))+` `+a(C(U[t.id]?.metrics?.oneStepTest?.nrmse))+` `,1),U[t.id]?.metrics?.rolloutTest?(o(),d(f,{key:0},[g(` · `+a(e.$t(`aml.k1amlx117`))+` `+a(C(U[t.id]?.metrics?.rolloutTest?.nrmse)),1)],64)):p(``,!0)])):p(``,!0),t.error?(o(),d(`p`,er,a(e.$t(`aml.k1amlx092`))+`:`+a(t.error),1)):p(``,!0)]),u(`div`,null,[u(`p`,tr,[g(a(e.$t(`aml.k1amlx089`))+` `,1),T(t.status)?(o(),d(`span`,nr,a(e.$t(`aml.k1amlx091`)),1)):p(``,!0)]),u(`pre`,rr,a((U[t.id]?.logs??[]).join(`
4
- `)||e.$t(`aml.k1amlx090`)),1)])]))])])):p(``,!0)],64))),128))])])])):(o(),d(`p`,ir,a(e.$t(`aml.k1amlx075`)),1))]),u(`section`,ar,[u(`div`,or,[u(`h2`,null,[t[39]||=u(`span`,{class:`i-tabler-trophy`},null,-1),g(` `+a(e.$t(`aml.k1amlx109`))+` `,1),u(`b`,sr,a(K.value.length),1)]),u(`div`,cr,[m(u(`select`,{"onUpdate:modelValue":t[7]||=e=>G.value=e,class:`inp-sel`,onChange:Za},[u(`option`,lr,a(e.$t(`aml.k1amlx111`)),1),(o(!0),d(f,null,c(j.value,e=>(o(),d(`option`,{key:e.id,value:e.id},a(w(e.id))+` · `+a(w(e.recipeId)),9,ur))),128))],544),[[ne,G.value]]),u(`button`,{class:`mini-btn`,disabled:!G.value,onClick:Za},a(e.$t(`aml.k1amlx017`)),9,dr)])]),K.value.length?(o(),d(`div`,fr,[u(`table`,pr,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx113`)),1),u(`th`,null,a(e.$t(`aml.k1amlx020`)),1),u(`th`,null,a(e.$t(`aml.k1amlx114`)),1),u(`th`,null,a(e.$t(`aml.k1amlx115`)),1),u(`th`,{class:`num`,title:e.$t(`aml.k1amlx121`)},a(e.$t(`aml.k1amlx116`)),9,mr),u(`th`,{class:`num`,title:e.$t(`aml.k1amlx122`)},a(e.$t(`aml.k1amlx117`)),9,hr),u(`th`,null,a(e.$t(`aml.k1amlx118`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(K.value,t=>(o(),d(`tr`,{key:t.id,class:s({best:t.id===Qa.value})},[u(`td`,gr,[t.id===Qa.value?(o(),d(`span`,_r,a(e.$t(`aml.k1amlx120`)),1)):p(``,!0),g(` `+a(w(t.id)),1)]),u(`td`,vr,a(ia(t.createdAt)),1),u(`td`,yr,[u(`span`,{class:`note`,title:t.changeNote},a(t.changeNote||`--`),9,br)]),u(`td`,xr,a(t.parentExperimentId?w(t.parentExperimentId):`--`),1),u(`td`,Sr,a(C(t.metrics?.oneStepTest?.nrmse)),1),u(`td`,Cr,a(C(t.metrics?.rolloutTest?.nrmse)),1),u(`td`,null,[u(`span`,{class:s([`st-pill`,t.status])},a(la(t.status)),3)])],2))),128))])])])):(o(),d(`p`,wr,a(G.value?e.$t(`aml.k1amlx112`):e.$t(`aml.k1amlx110`)),1)),Xa.value?(o(),d(`p`,Tr,a(Xa.value),1)):p(``,!0)]),u(`section`,Er,[u(`div`,Dr,[u(`h2`,null,[t[40]||=u(`span`,{class:`i-tabler-cube-3d-sphere`},null,-1),g(` `+a(e.$t(`aml.k1amlx123`))+` `,1),u(`b`,Or,a(q.value.length),1)]),u(`button`,{class:`mini-btn`,onClick:t[8]||=e=>J()},a(e.$t(`aml.k1amlx017`)),1)]),q.value.length?(o(),d(`div`,kr,[u(`table`,Ar,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx125`)),1),u(`th`,null,a(e.$t(`aml.k1amlx021`)),1),u(`th`,null,a(e.$t(`aml.k1amlx022`)),1),u(`th`,null,a(e.$t(`aml.k1amlx078`)),1),u(`th`,{title:e.$t(`aml.k1amlx126`)},a(e.$t(`aml.k1amlx099`)),9,jr),u(`th`,null,a(e.$t(`aml.k1amlx020`)),1),u(`th`,null,a(e.$t(`aml.k1amlx026`)),1),u(`th`,Mr,a(e.$t(`aml.k1amlx127`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(q.value,n=>(o(),d(`tr`,{key:n.id},[u(`td`,Nr,a(w(n.id)),1),u(`td`,Pr,a(w(n.productId)),1),u(`td`,Fr,a(w(n.recipeId)),1),u(`td`,null,[u(`span`,{class:s([`stage-pill`,n.stage])},a(n.stage),3)]),u(`td`,Ir,a(e.$t(`aml.k1amlx116`))+` `+a(C(n.metrics?.oneStepTest?.nrmse))+` · `+a(e.$t(`aml.k1amlx117`))+` `+a(C(n.metrics?.rolloutTest?.nrmse)),1),u(`td`,Lr,a(ia(n.createdAt)),1),u(`td`,{class:`note-cell`,onClick:t[10]||=_(()=>{},[`stop`])},[Oa.value===n.id?(o(),d(`div`,Rr,[m(u(`input`,{"onUpdate:modelValue":t[9]||=e=>P.value=e,placeholder:e.$t(`aml.k1amlx189`),onKeyup:[re(e=>Aa(`models`,n.id),[`enter`]),re(F,[`esc`])]},null,40,zr),[[v,P.value]]),u(`button`,{class:`mini-btn`,onClick:e=>Aa(`models`,n.id)},a(e.$t(`aml.k1amlx191`)),9,Br),u(`button`,{class:`mini-btn`,onClick:F},a(e.$t(`aml.k1amlx202`)),1)])):(o(),d(`span`,Vr,[u(`span`,{class:`note`,title:n.note},a(n.note||`--`),9,Hr),u(`span`,{class:`i-tabler-pencil edit-i`,title:e.$t(`aml.k1amlx189`),onClick:e=>ka(n.id,n.note)},null,8,Ur)]))]),u(`td`,Wr,[(o(!0),d(f,null,c(to(n),t=>(o(),d(`button`,{key:t.to,class:s([`mini-btn`,{danger:t.to===`retired`}]),disabled:eo.value===`${n.id}:${t.to}`,onClick:e=>no(n,t.to)},a($a.value===`${n.id}:${t.to}`?e.$t(`aml.k1amlx131`):e.$t(t.key)),11,Gr))),128)),to(n).length===0?(o(),d(`span`,Kr,`--`)):p(``,!0),u(`span`,{class:`i-tabler-trash edit-i`,title:e.$t(`aml.k1amlx190`),onClick:t=>ja(`models`,n.id,e.$t(`aml.k1amlx199`))},null,8,qr)])]))),128))])])])):(o(),d(`p`,Jr,a(e.$t(`aml.k1amlx124`)),1))]),u(`section`,Yr,[u(`div`,Xr,[u(`h2`,null,[t[41]||=u(`span`,{class:`i-tabler-chart-line`},null,-1),g(` `+a(e.$t(`aml.k1amlx133`)),1)]),ro.value.length?m((o(),d(`select`,{key:0,"onUpdate:modelValue":t[11]||=e=>io.value=e,class:`inp-sel`},[u(`option`,Zr,a(e.$t(`aml.k1amlx134`)),1),(o(!0),d(f,null,c(ro.value,e=>(o(),d(`option`,{key:e.id,value:e.id},a(w(e.id))+` · `+a(w(e.recipeId)),9,Qr))),128))],512)),[[ne,io.value]]):p(``,!0)]),ro.value.length?(o(),d(f,{key:0},[Y.value?.ioSpec?(o(),d(`div`,$r,[u(`p`,ei,a(e.$t(`aml.k1amlx136`)),1),u(`div`,ti,[u(`span`,ni,[g(a(e.$t(`aml.k1amlx140`))+` `,1),u(`b`,null,a(Y.value.ioSpec.historySteps),1)]),u(`span`,ri,[g(a(e.$t(`aml.k1amlx141`))+` `,1),u(`b`,null,a(Y.value.ioSpec.horizonSteps),1)]),u(`span`,ii,[g(a(e.$t(`aml.k1amlx142`))+` `,1),u(`b`,null,a(Y.value.ioSpec.beatMs)+`ms`,1)]),u(`span`,{class:`io-item`,title:Y.value.ioSpec.allNodes.join(`, `)},[g(a(e.$t(`aml.k1amlx137`))+`(`+a(Y.value.ioSpec.allNodes.length)+`) `,1),u(`b`,null,a(Y.value.ioSpec.allNodes.map(e=>w(e)).join(`, `)),1)],8,ai),u(`span`,{class:`io-item`,title:Y.value.ioSpec.controlNodes.join(`, `)},[g(a(e.$t(`aml.k1amlx138`))+` `,1),u(`b`,null,a(Y.value.ioSpec.controlNodes.map(e=>w(e)).join(`, `)),1)],8,oi),u(`span`,{class:`io-item`,title:Y.value.ioSpec.targetNodes.join(`, `)},[g(a(e.$t(`aml.k1amlx139`))+` `,1),u(`b`,null,a(Y.value.ioSpec.targetNodes.map(e=>w(e)).join(`, `)),1)],8,si)]),u(`div`,ci,[u(`label`,li,[u(`span`,null,a(e.$t(`aml.k1amlx143`)),1),m(u(`textarea`,{"onUpdate:modelValue":t[12]||=e=>ao.value=e,class:`inp area`,rows:`5`,placeholder:e.$t(`aml.k1amlx144`)},null,8,ui),[[v,ao.value]])]),u(`div`,di,[u(`button`,{class:`ghost-btn`,onClick:so},[t[42]||=u(`span`,{class:`i-tabler-download`},null,-1),g(` `+a(e.$t(`aml.k1amlx145`)),1)]),u(`label`,fi,[u(`span`,null,a(e.$t(`aml.k1amlx156`)),1),m(u(`textarea`,{"onUpdate:modelValue":t[13]||=e=>X.value=e,class:`inp area`,rows:`3`,placeholder:`[[…]]`},null,512),[[v,X.value]])]),u(`label`,pi,[u(`span`,null,a(e.$t(`aml.k1amlx147`)),1),m(u(`input`,{"onUpdate:modelValue":t[14]||=e=>Z.value=e,type:`number`,min:`1`,class:`inp`},null,512),[[v,Z.value,void 0,{number:!0}]])]),u(`button`,{class:`pill-btn`,disabled:oo.value||!ao.value.trim(),onClick:lo},a(oo.value?e.$t(`aml.k1amlx149`):e.$t(`aml.k1amlx148`)),9,mi)])]),u(`p`,hi,a(e.$t(`aml.k1amlx146`)),1),Q.value?(o(),d(`p`,gi,a(Q.value),1)):p(``,!0),$.value?(o(),d(f,{key:1},[u(`p`,_i,a(e.$t(`aml.k1amlx150`)),1),u(`table`,vi,[u(`thead`,null,[u(`tr`,null,[u(`th`,yi,a(e.$t(`aml.k1amlx151`)),1),u(`th`,bi,a(e.$t(`aml.k1amlx152`)),1),(o(!0),d(f,null,c($.value.targetNodes,(t,n)=>(o(),d(`th`,{key:t,class:`num`},[g(a(w(t)),1),n===0?(o(),d(`small`,xi,` (`+a(e.$t(`aml.k1amlx041`))+`)`,1)):p(``,!0)]))),128))])]),u(`tbody`,null,[(o(!0),d(f,null,c($.value.forecast,(e,t)=>(o(),d(`tr`,{key:t},[u(`td`,Si,a(t+1),1),u(`td`,Ci,a(C((t+1)*$.value.beatMs/1e3,1)),1),(o(!0),d(f,null,c(e,(e,t)=>(o(),d(`td`,{key:t,class:`mono num`},a(C(e,3)),1))),128))]))),128))])]),u(`p`,wi,a(e.$t(`aml.k1amlx155`))+`:`+a($.value.assumptions),1)],64)):p(``,!0)])):(o(),d(`p`,Ti,a(e.$t(`aml.k1amlx134`)),1))],64)):(o(),d(`p`,Ei,a(e.$t(`aml.k1amlx135`)),1))]),L.value?(o(),d(`div`,{key:4,class:`modal-mask`,onClick:t[27]||=_(e=>L.value=!1,[`self`])},[u(`div`,Di,[u(`h3`,Oi,a(e.$t(`aml.k1amlx050`)),1),u(`div`,ki,[u(`label`,Ai,[u(`span`,null,[g(a(e.$t(`aml.k1amlx051`)),1),t[43]||=u(`em`,null,`*`,-1)]),m(u(`input`,{"onUpdate:modelValue":t[15]||=e=>z.lineId=e,class:`inp`,placeholder:`line-ov-01`},null,512),[[v,z.lineId]])]),u(`label`,ji,[u(`span`,null,[g(a(e.$t(`aml.k1amlx052`)),1),t[44]||=u(`em`,null,`*`,-1)]),m(u(`input`,{"onUpdate:modelValue":t[16]||=e=>z.productId=e,class:`inp`},null,512),[[v,z.productId]])]),u(`label`,Mi,[u(`span`,null,[g(a(e.$t(`aml.k1amlx053`)),1),t[45]||=u(`em`,null,`*`,-1)]),m(u(`input`,{"onUpdate:modelValue":t[17]||=e=>z.recipeId=e,class:`inp`},null,512),[[v,z.recipeId]])])]),u(`p`,Ni,a(e.$t(`aml.k1amlx054`)),1),u(`div`,Pi,[(o(!0),d(f,null,c(B,(t,n)=>(o(),d(`div`,{key:n,class:`node-row`},[m(u(`input`,{"onUpdate:modelValue":e=>t.nodeId=e,class:`inp grow`,placeholder:e.$t(`aml.k1amlx056`)},null,8,Fi),[[v,t.nodeId]]),m(u(`select`,{"onUpdate:modelValue":e=>t.role=e,class:`inp sel`},[u(`option`,Li,a(e.$t(`aml.k1amlx057`)),1),u(`option`,Ri,a(e.$t(`aml.k1amlx058`)),1),u(`option`,zi,a(e.$t(`aml.k1amlx059`)),1)],8,Ii),[[ne,t.role]]),u(`button`,{class:`mini-btn danger`,disabled:B.length<=1,onClick:e=>La(n)},` ✕ `,8,Bi)]))),128)),u(`button`,{class:`mini-btn`,onClick:Ia},[t[46]||=u(`span`,{class:`i-tabler-plus`},null,-1),g(` `+a(e.$t(`aml.k1amlx055`)),1)])]),u(`div`,Vi,[u(`label`,Hi,[u(`span`,null,a(e.$t(`aml.k1amlx060`)),1),m(u(`input`,{"onUpdate:modelValue":t[18]||=e=>z.beatMs=e,type:`number`,min:`1000`,step:`500`,class:`inp`},null,512),[[v,z.beatMs,void 0,{number:!0}]])]),u(`label`,Ui,[u(`span`,null,a(e.$t(`aml.k1amlx061`)),1),m(u(`input`,{"onUpdate:modelValue":t[19]||=e=>z.historySteps=e,type:`number`,min:`1`,class:`inp`},null,512),[[v,z.historySteps,void 0,{number:!0}]])]),u(`label`,Wi,[u(`span`,null,a(e.$t(`aml.k1amlx062`)),1),m(u(`input`,{"onUpdate:modelValue":t[20]||=e=>z.horizonSteps=e,type:`number`,min:`1`,class:`inp`},null,512),[[v,z.horizonSteps,void 0,{number:!0}]])]),u(`label`,Gi,[u(`span`,null,a(e.$t(`aml.k1amlx063`)),1),m(u(`input`,{"onUpdate:modelValue":t[21]||=e=>z.valRatio=e,type:`number`,min:`0`,max:`0.8`,step:`0.05`,class:`inp`},null,512),[[v,z.valRatio,void 0,{number:!0}]])]),u(`label`,Ki,[u(`span`,null,a(e.$t(`aml.k1amlx064`)),1),m(u(`input`,{"onUpdate:modelValue":t[22]||=e=>z.testRatio=e,type:`number`,min:`0`,max:`0.8`,step:`0.05`,class:`inp`},null,512),[[v,z.testRatio,void 0,{number:!0}]])]),u(`label`,qi,[u(`span`,null,a(e.$t(`aml.k1amlx065`)),1),m(u(`input`,{"onUpdate:modelValue":t[23]||=e=>z.seed=e,type:`number`,class:`inp`},null,512),[[v,z.seed,void 0,{number:!0}]])]),u(`label`,Ji,[u(`span`,null,a(e.$t(`aml.k1amlx066`)),1),m(u(`select`,{"onUpdate:modelValue":t[24]||=e=>z.purpose=e,class:`inp`},[u(`option`,Yi,a(e.$t(`aml.k1amlx067`)),1),u(`option`,Xi,a(e.$t(`aml.k1amlx068`)),1)],512),[[ne,z.purpose]])]),u(`label`,Zi,[u(`span`,null,a(e.$t(`aml.k1amlx026`)),1),m(u(`input`,{"onUpdate:modelValue":t[25]||=e=>z.note=e,class:`inp`,placeholder:e.$t(`aml.k1amlx069`)},null,8,Qi),[[v,z.note]])])]),R.value?(o(),d(`p`,$i,a(R.value),1)):p(``,!0),u(`div`,ea,[u(`button`,{class:`ghost-btn`,onClick:t[26]||=e=>L.value=!1},a(e.$t(`aml.k1amlx071`)),1),u(`button`,{class:`pill-btn`,disabled:Pa.value,onClick:Ra},a(Pa.value?e.$t(`aml.k1amlx070`):e.$t(`aml.k1amlx072`)),9,ta)])])])):p(``,!0)]))}}),[[`__scopeId`,`data-v-1b416c3a`]]);export{na as default};
2
+ import{a as e}from"./BU83-NnX.js";import{$ as t,Ht as n,P as r,R as ee,S as i,Ut as a,V as o,Vt as s,W as c,d as l,dt as te,f as u,h as d,i as f,m as p,nt as m,pt as h,y as g}from"./CSkxz2NX.js";import{c as ne,d as re,f as _,l as v}from"./D6uzXueg.js";import{n as ie}from"./DtYHUi5Z.js";import{t as ae}from"./HclGiUj8.js";import{n as oe}from"./KZQX7xoM.js";import{t as se}from"./CWoJjWmZ.js";import{t as y}from"./36oeS8_R.js";import{t as b}from"./BDNMzG2s2.js";import{t as x}from"./D0ZBQrN_2.js";import{t as ce}from"./BC9wjTJK2.js";import{t as le}from"./CNs_Ozdc2.js";import{t as ue}from"./DTFCy6h-.js";import{t as de}from"./BDmh31hl.js";function S(){let e=h(new Map),t=h(null),n=h(null),r=h(null);function ee(t){let n=e.value.get(t.jobId),r=new Map(e.value);r.set(t.jobId,{jobId:t.jobId,datasetId:t.datasetId||n?.datasetId||``,lineId:t.lineId??n?.lineId??``,status:t.status,stage:t.stage,progress:t.progress,purpose:t.purpose??n?.purpose,note:t.note,at:new Date().toISOString()}),e.value=r}function i(e){if(e.type===`aml.job`){let n=e.payload;if(!n?.jobId)return;t.value=n,ee(n)}else if(e.type===`aml.dataset`){let t=e.payload;if(!t?.datasetId)return;n.value=t}else if(e.type===`aml.model`){let t=e.payload;if(!t?.modelId)return;r.value=t}}let a=0,o=null;function s(){a=Math.max(0,a-1),a===0&&o&&(o(),o=null)}function c(){a++,o||=y().subscribe(i);let e=!1;return()=>{e||(e=!0,s())}}function l(){s()}return{jobs:e,lastJob:t,lastDataset:n,lastModel:r,ensure:c,dispose:l}}var fe=`__amlStream`;function pe(){let e=globalThis;return e[fe]||(e[fe]=S()),e[fe]}var me={class:`page`},he={class:`aw-page-head`},ge={class:`sub`},_e={class:`badges mono`},ve=[`title`],ye=[`title`],be={key:0,class:`infra-banner`},xe={class:`txt`},Se={class:`mono`},Ce={key:1,class:`aw-tile ov-card`},we={class:`ov-row mono`},Te={class:`ov-item`},Ee={class:`ov-item`},De={class:`ov-item`},Oe={class:`ov-item`},ke=[`title`],Ae={key:2,class:`err`},je={key:3,class:`aw-tile zone env-zone`},Me={class:`zone-head`},Ne={class:`zone-actions`},Pe=[`disabled`],Fe={key:0,class:`infra-banner`},Ie={class:`txt`},Le={class:`mono`},Re={class:`env-grid`},ze={class:`ec-head`},Be={class:`ec-state`},Ve={key:0,class:`ec-detail mono`},He={key:1,class:`ec-detail`},Ue={class:`ec-actions`},We=[`disabled`,`title`],Ge={class:`ec-head`},Ke={class:`ec-state`},qe={class:`ec-detail mono`},Je={class:`ec-actions`},Ye=[`disabled`,`title`],Xe=[`disabled`],Ze={class:`env-card`},Qe={class:`ec-head`},$e={class:`ec-detail mono`},et={class:`ec-detail dim`},tt={class:`ec-detail`},nt={class:`mono`},rt={class:`dim`},it={class:`ec-head`},at={key:0,class:`ec-state`},ot={key:0,class:`ec-detail mono`},st={key:1,class:`ec-issues mono`},ct=[`title`],lt={class:`tag`},ut={class:`ec-actions`},dt={key:1,class:`env-task`},ft={class:`et-head mono`},pt={class:`dim`},mt={key:0,class:`dim`},ht={class:`et-log mono`},gt={key:0,class:`err`},_t={class:`aw-tile zone`},vt={class:`zone-head`},yt={class:`mono cnt`},bt={class:`zone-actions`},xt={key:0,class:`tbl-scroll`},St={class:`tbl tbl-datasets`},Ct={class:`num`},wt={class:`num`},Tt=[`onClick`],Et={class:`mono dim`},Dt={class:`mono`},Ot={class:`mono`},kt={class:`mono num`},At={class:`mono num`},jt={key:0,class:`note-edit`},Mt=[`placeholder`,`onKeyup`],Nt=[`onClick`],Pt={key:1,class:`note-text`},Ft=[`title`],It=[`title`,`onClick`],Lt=[`title`,`onClick`],Rt={key:0,class:`detail-row`},zt={colspan:`7`},Bt={key:0,class:`dim pad`},Vt={key:1,class:`err pad`},Ht={key:2,class:`det-grid`},Ut={class:`det-title`},Wt={class:`sub-tbl`},Gt={class:`num`},Kt={class:`num`},qt={class:`num`},Jt={class:`num`},Yt={class:`num`},Xt={class:`mono`},Zt={class:`role-chip`},Qt={class:`mono num`},$t={class:`mono num`},en={class:`mono num`},tn={class:`mono num`},nn={class:`mono num`},rn={class:`det-title`},an={key:0,class:`sub-tbl`},on={class:`num`},sn={class:`num`},cn={class:`mono`},ln={class:`mono`},un={class:`mono num`},dn={class:`mono num`},fn={key:1,class:`dim`},pn={class:`det-title`},mn={class:`mono dim run-line`},hn={key:3,class:`dim pad`},gn={key:1,class:`empty`},_n={class:`aw-tile zone`},vn={class:`zone-head`},yn={class:`mono cnt`},bn=[`title`],xn={key:0,class:`tbl-scroll`},Sn={class:`tbl tbl-jobs`},Cn={class:`prog-th`},wn={class:`right`},Tn=[`onClick`],En={class:`mono`},Dn={class:`mono dim`},On={class:`mono dim`},kn={class:`mono dim`},An={class:`prog-cell`},jn={class:`prog`},Mn={class:`mono prog-num`},Nn={class:`mono dim`},Pn={class:`right acts`},Fn=[`disabled`,`onClick`],In=[`disabled`,`onClick`],Ln=[`title`,`onClick`],Rn={key:0,class:`detail-row`},zn={colspan:`8`},Bn={key:0,class:`dim pad`},Vn={key:1,class:`err pad`},Hn={key:2,class:`det-grid`},Un={class:`det-title`},Wn={key:0,class:`sub-tbl`},Gn={class:`num`},Kn={class:`num`},qn={class:`mono gate-id`},Jn={class:`dim`},Yn={class:`mono num`},Xn={class:`mono num dim`},Zn={class:`dim gate-detail`},Qn={key:1,class:`dim`},$n={key:2,class:`mono dim gate-detail`},er={key:3,class:`err gate-detail`},tr={class:`det-title`},nr={key:0,class:`mono live-hint`},rr={class:`logs`},ir={key:1,class:`empty`},ar={class:`aw-tile zone`},or={class:`zone-head`},sr={class:`mono cnt`},cr={class:`zone-actions`},lr={value:``},ur=[`value`],dr=[`disabled`],fr={key:0,class:`tbl-scroll`},pr={class:`tbl tbl-exp`},mr=[`title`],hr=[`title`],gr={class:`mono`},_r={key:0,class:`best-tag`},vr={class:`mono dim`},yr={class:`note-cell`},br=[`title`],xr={class:`mono dim`},Sr={class:`mono num`},Cr={class:`mono num`},wr={key:1,class:`empty`},Tr={key:2,class:`err pad`},Er={class:`aw-tile zone`},Dr={class:`zone-head`},Or={class:`mono cnt`},kr={key:0,class:`tbl-scroll`},Ar={class:`tbl tbl-models`},jr=[`title`],Mr={class:`right`},Nr={class:`mono`},Pr={class:`mono dim`},Fr={class:`mono dim`},Ir={class:`mono dim`},Lr={class:`mono dim`},Rr={key:0,class:`note-edit`},zr=[`placeholder`,`onKeyup`],Br=[`onClick`],Vr={key:1,class:`note-text`},Hr=[`title`],Ur=[`title`,`onClick`],Wr={class:`right acts`},Gr=[`disabled`,`onClick`],Kr={key:0,class:`dim`},qr=[`title`,`onClick`],Jr={key:1,class:`empty`},Yr={class:`aw-tile zone`},Xr={class:`zone-head`},Zr={value:``},Qr=[`value`],$r={key:0,class:`pc-body`},ei={class:`det-title`},ti={class:`io-grid mono`},ni={class:`io-item`},ri={class:`io-item`},ii={class:`io-item`},ai=[`title`],oi=[`title`],si=[`title`],ci={class:`pc-form`},li={class:`pc-field`},ui=[`placeholder`],di={class:`pc-side`},fi={class:`pc-field`},pi={class:`pc-field`},mi=[`disabled`],hi={class:`hint dim`},gi={key:0,class:`err`},_i={class:`det-title`},vi={class:`sub-tbl`},yi={class:`num`},bi={class:`num`},xi={key:0,class:`dim`},Si={class:`mono num`},Ci={class:`mono num dim`},wi={class:`mono dim gate-detail`},Ti={key:1,class:`empty`},Ei={key:1,class:`empty`},Di={class:`modal`},Oi={class:`m-title`},ki={class:`f-grid`},Ai={class:`f`},ji={class:`f`},Mi={class:`f`},Ni={class:`sec-label`},Pi={class:`node-rows`},Fi=[`onUpdate:modelValue`,`placeholder`],Ii=[`onUpdate:modelValue`],Li={value:`control`},Ri={value:`feature`},zi={value:`target`},Bi=[`disabled`,`onClick`],Vi={class:`f-grid`},Hi={class:`f`},Ui={class:`f`},Wi={class:`f`},Gi={class:`f`},Ki={class:`f`},qi={class:`f`},Ji={class:`f`},Yi={value:`mpc_surrogate`},Xi={value:`quality_predict`},Zi={class:`f wide`},Qi=[`placeholder`],$i={key:0,class:`m-err`},ea={class:`m-actions`},ta=[`disabled`],na=b(i({__name:`index`,setup(i){let{t:y}=oe();le({layout:`default`}),ie({title:()=>y(`aml.k1amlx160`)});function b(e,t){return de({base:`/api/workshop/aml`,path:e,init:t})}let S=pe(),fe=ce(),na=null,ra=null;ee(()=>{fe.ensureConnected(),na=S.ensure(),D(),xa(),ka(),N(),V(),J(),(O.value?.task?.status??E.value?.env?.task?.status)===`running`&&(k.value=!0,wa()),ue(()=>{D(),V()},8e3,{bgMs:3e4}),ra=se(()=>{let e=W.value;if(!e||document.hidden)return;let t=H.value.find(t=>t.id===e);t&&T(t.status)&&Ka(e)},5e3)}),r(()=>{na?.(),ra&&clearInterval(ra),Ca()}),t(()=>S.lastJob.value,e=>{e&&oa(e.status)&&V()}),t(()=>S.lastModel.value,()=>{J()}),t(()=>S.lastDataset.value,()=>{N()});function ia(e){if(!e)return`--`;let t=new Date(e);return Number.isFinite(t.getTime())?`${String(t.getMonth()+1).padStart(2,`0`)}-${String(t.getDate()).padStart(2,`0`)} ${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`:`--`}function C(e,t=4){return e==null||!Number.isFinite(e)?`--`:String(Number(e.toFixed(t)))}function aa(e,t=1){return e==null||!Number.isFinite(e)?`--`:`${(e*100).toFixed(t)}%`}function w(e){return e.length>12?`${e.slice(0,10)}…`:e}function T(e){return e===`queued`||e===`provisioning`||e===`training`||e===`evaluating`}function oa(e){return e===`done`||e===`failed`||e===`cancelled`||e===`timeout`||e===`interrupted`}function sa(e){return e===`failed`||e===`timeout`||e===`interrupted`}function ca(e){let t={queued:`aml.k1amlx100`,provisioning:`aml.k1amlx101`,training:`aml.k1amlx102`,evaluating:`aml.k1amlx103`,done:`aml.k1amlx104`,failed:`aml.k1amlx105`,cancelled:`aml.k1amlx106`,timeout:`aml.k1amlx107`,interrupted:`aml.k1amlx108`};return t[e]?y(t[e]):e}function la(e){let t={running:`aml.k1amlx119`,gates_passed:`aml.k1amlx080`,gates_failed:`aml.k1amlx081`,failed:`aml.k1amlx105`};return t[e]?y(t[e]):e}let E=h(null),ua=h(``);async function D(){try{E.value=await b(``),ua.value=``}catch(e){ua.value=x(e)}}let da=l(()=>{let e=E.value?.runtime;return e?e.python.ok?e.python.version??y(`aml.k1amlx004`):y(`aml.k1amlx005`):`--`}),fa=l(()=>E.value?E.value.runtime.venvReady?y(`aml.k1amlx007`):y(`aml.k1amlx008`):`--`),pa={"训练环境(./aml/.venv)尚未创建:请在「运行环境」面板点击「创建训练环境」":`aml.blockerVenv`,"Python 解释器不可用":`aml.blockerPython`},ma=l(()=>(O.value?.preflight?.blockers??[]).map(e=>pa[e]?y(pa[e]):e).join(` / `)),ha={env:`aml.rootSourceEnv`,repo:`aml.rootSourceRepo`,home:`aml.rootSourceHome`},ga=l(()=>{let e=O.value?.amlRootMode??``,t=ha[e];return t?y(t):O.value?.amlRootSource??``}),O=h(null),_a=h(!1),k=h(!1),va=h(!1),ya=l(()=>{let e=O.value?.uv??E.value?.env?.uv;return e?e.ok?e.version??y(`aml.k1amlx164`):y(`aml.k1amlx165`):`--`}),ba=l(()=>{let e=(O.value?.uv??E.value?.env?.uv)?.source;return e?{config:`aml.python.uvBin`,project:`./aml/tools`,state:`./aml/runtime/uv.json`,path:`PATH`}[e]??e:``});async function xa(){try{O.value=await b(`/env`)}catch{}}let Sa=null;function Ca(){Sa!=null&&(clearInterval(Sa),Sa=null)}function wa(){Ca(),Sa=se(()=>{(async()=>{await xa(),await D(),(O.value?.task==null||O.value.task.status!==`running`)&&(Ca(),k.value=!1)})()},1500)}async function Ta(t,n){k.value=!0,va.value=!0;try{await b(t,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(n??{})}),await xa(),wa()}catch(t){k.value=!1,e.error(`${y(`aml.k1amlx203`)}:${x(t)}`)}}async function Ea(){await Ta(`/env/uv`)}async function Da(e=!1){await Ta(`/env/venv`,{force:e})}async function Oa(){k.value=!0;try{O.value=await b(`/env/recheck`,{method:`POST`,headers:{"content-type":`application/json`},body:`{}`}),await D()}catch(t){e.error(`${y(`aml.k1amlx203`)}:${x(t)}`)}finally{k.value=!1}}let A=h(null);async function ka(){try{A.value=await b(`/entities`)}catch{}}async function Aa(){try{let t=await b(`/entities/prune`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({dryRun:!1})});e.success(`${y(`aml.k1amlx188`)}:${t.removed.length}`),await ka()}catch(t){e.error(`${y(`aml.k1amlx203`)}:${x(t)}`)}}function ja(){D(),xa(),ka(),N(),V(),J()}let j=h([]),M=h(``);async function N(){try{let e=await b(`/datasets`);j.value=e.datasets}catch{}}let Ma=h(``),P=h(``);function Na(e,t){Ma.value=e,P.value=t??``}function F(){Ma.value=``,P.value=``}async function Pa(t,n){try{await b(`/${t}/${n}`,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify({note:P.value})}),e.success(y(`aml.k1amlx192`)),F(),t===`datasets`?await N():await J()}catch(t){e.error(`${y(`aml.k1amlx203`)}:${x(t)}`)}}async function Fa(t,n,r){if(await Ia(r))try{await b(`/${t}/${n}`,{method:`DELETE`}),e.success(y(`aml.k1amlx193`)),t===`datasets`?await N():t===`models`?await J():await V(),await D(),await ka()}catch(t){e.error(`${y(`aml.k1amlx203`)}:${x(t)}`)}}async function Ia(e){try{let{Modal:t}=await ae(async()=>{let{Modal:e}=await import(`./BU83-NnX.js`).then(e=>e.t);return{Modal:e}},__vite__mapDeps([0,1,2,3]),import.meta.url);return await new Promise(n=>{t.confirm({title:e,okText:y(`aml.k1amlx190`),cancelText:y(`aml.k1amlx202`),onOk:()=>n(!0),onCancel:()=>n(!1)})})}catch{return!0}}let I=te({});async function La(e){if(M.value=M.value===e?``:e,M.value&&!I[e]){I[e]={loading:!0,error:``,report:null};try{let t=await b(`/datasets/${e}`);I[e]={loading:!1,error:``,report:t.report}}catch(t){I[e]={loading:!1,error:x(t),report:null}}}}let L=h(!1),Ra=h(!1),R=h(``),z=te({lineId:``,productId:``,recipeId:``,beatMs:5e3,historySteps:60,horizonSteps:30,valRatio:.15,testRatio:.15,seed:7,purpose:`mpc_surrogate`,note:``}),B=te([{nodeId:``,role:`control`},{nodeId:``,role:`target`}]);function za(){R.value=``,L.value=!0}function Ba(){B.push({nodeId:``,role:`feature`})}function Va(e){B.splice(e,1)}async function Ha(){R.value=``;let t=B.filter(e=>e.nodeId.trim()).map(e=>({nodeId:e.nodeId.trim(),role:e.role}));if(!z.lineId.trim()||!z.productId.trim()||!z.recipeId.trim()){R.value=y(`aml.k1amlx161`);return}if(t.length<2||!t.some(e=>e.role===`target`)){R.value=y(`aml.k1amlx054`);return}Ra.value=!0;try{let n=await b(`/datasets`,{method:`POST`,body:JSON.stringify({lineId:z.lineId.trim(),productId:z.productId.trim(),recipeId:z.recipeId.trim(),nodes:t,beatMs:Number(z.beatMs),window:{historySteps:Number(z.historySteps),horizonSteps:Number(z.horizonSteps)},split:{valRatio:Number(z.valRatio),testRatio:Number(z.testRatio),seed:Number(z.seed)},purpose:z.purpose,note:z.note.trim()||void 0})});e.success(y(`aml.k1amlx073`,{p0:w(n.dataset.id),p1:n.dataset.rowCount})),L.value=!1,await N()}catch(e){R.value=x(e)}finally{Ra.value=!1}}let Ua=h([]);async function V(){try{let e=await b(`/jobs`);Ua.value=e.jobs}catch{}}let H=l(()=>Ua.value.map(e=>{let t=S.jobs.value.get(e.id);return t?{...e,status:t.status||e.status,stage:t.stage||e.stage,progress:t.progress??e.progress,live:!0}:e})),U=te({}),W=h(``);async function Wa(e){return(await b(`/jobs/${e}/logs?lines=120`)).logs}async function Ga(e){if(W.value=W.value===e?``:e,W.value&&!U[e]){U[e]={loading:!0,error:``,metrics:null,gates:null,logs:[]};try{let[t,n]=await Promise.all([b(`/jobs/${e}`),Wa(e)]);U[e]={loading:!1,error:``,metrics:t.metrics,gates:t.gates,logs:n}}catch(t){U[e]={loading:!1,error:x(t),metrics:null,gates:null,logs:[]}}}}async function Ka(e){let t=U[e];if(t)try{t.logs=await Wa(e)}catch{}}let qa=h(``),Ja=h(``);async function Ya(t){if(qa.value!==t){qa.value=t;return}qa.value=``,Ja.value=t;try{await b(`/jobs/${t}/cancel`,{method:`POST`,body:JSON.stringify({})}),e.success(y(`aml.k1amlx097`,{p0:w(t)})),await V()}catch(t){e.error(x(t))}finally{Ja.value=``}}let Xa=h(``),Za=h(``);async function Qa(t){if(Xa.value!==t){Xa.value=t;return}Xa.value=``,Za.value=t;try{await b(`/jobs/${t}/retry`,{method:`POST`,body:JSON.stringify({})}),e.success(y(`aml.k1amlx098`,{p0:w(t)})),await V()}catch(t){e.error(x(t))}finally{Za.value=``}}let G=h(``),K=h([]),$a=h(!1),eo=h(``);async function to(){if(!G.value){K.value=[];return}$a.value=!0,eo.value=``;try{let e=await b(`/experiments?datasetId=${encodeURIComponent(G.value)}`);K.value=e.experiments}catch(e){eo.value=x(e)}finally{$a.value=!1}}let no=l(()=>{let e=null;for(let t of K.value){let n=t.metrics?.oneStepTest?.nrmse;t.status===`gates_passed`&&n!=null&&Number.isFinite(n)&&(e==null||n<e.nrmse)&&(e={id:t.id,nrmse:n})}return e?.id??``}),q=h([]);async function J(){try{let e=await b(`/models`);q.value=e.models}catch{}}let ro=h(``),io=h(``);function ao(e){return e.stage===`candidate`?[{to:`shadow`,key:`aml.k1amlx128`},{to:`production`,key:`aml.k1amlx129`}]:e.stage===`shadow`?[{to:`production`,key:`aml.k1amlx129`},{to:`retired`,key:`aml.k1amlx130`}]:e.stage===`production`?[{to:`retired`,key:`aml.k1amlx130`}]:[]}async function oo(t,n){let r=`${t.id}:${n}`;if(ro.value!==r){ro.value=r;return}ro.value=``,io.value=r;try{let r=await b(`/models/${t.id}/promote`,{method:`POST`,body:JSON.stringify({toStage:n})});r.ok&&e.success(y(`aml.k1amlx132`,{p0:r.from??t.stage,p1:n})),await Promise.all([J(),D()])}catch(t){e.error(x(t))}finally{io.value=``}}let so=l(()=>q.value.filter(e=>e.stage===`production`)),co=h(``),Y=l(()=>q.value.find(e=>e.id===co.value)??null),lo=h(``),X=h(``),Z=h(null),uo=h(!1),Q=h(``),$=h(null);function fo(){e.info(y(`aml.k1amlx146`))}function po(e){let t=e.trim();if(!t)return null;try{let e=JSON.parse(t);return!Array.isArray(e)||e.length===0?null:e.every(e=>Array.isArray(e)&&e.length>0&&e.every(e=>typeof e==`number`&&Number.isFinite(e)))?e:null}catch{return null}}async function mo(){Q.value=``,$.value=null;let t=Y.value;if(!t)return;let n=po(lo.value);if(!n){Q.value=y(`aml.k1amlx153`);return}let r=X.value.trim()?po(X.value):void 0;if(X.value.trim()&&!r){Q.value=y(`aml.k1amlx153`);return}uo.value=!0;try{let ee=typeof Z.value==`number`&&Number.isFinite(Z.value)?Z.value:void 0,i=await b(`/models/${t.id}/predict`,{method:`POST`,body:JSON.stringify({history:n,controls:r,steps:ee})});$.value=i.prediction,e.success(y(`aml.k1amlx154`,{p0:i.prediction.forecast.length,p1:i.prediction.targetNodes.length}))}catch(e){Q.value=x(e)}finally{uo.value=!1}}return(e,t)=>(o(),d(`div`,me,[u(`div`,he,[u(`div`,null,[t[28]||=u(`p`,{class:`aw-kicker`},` AGENTWORKSHOP / AML STUDIO `,-1),u(`h1`,null,a(e.$t(`aml.k1amlx001`)),1),u(`p`,ge,a(e.$t(`aml.k1amlx002`)),1)]),u(`div`,_e,[u(`span`,{class:s([`badge`,{bad:E.value!=null&&!E.value.runtime.python.ok}]),title:E.value?.runtime.python.reason??``},`PYTHON · `+a(da.value),11,ve),u(`span`,{class:s([`badge`,{bad:E.value!=null&&!E.value.runtime.venvReady}])},`VENV · `+a(fa.value),3),u(`span`,{class:s([`badge`,{bad:O.value!=null&&!O.value.uv.ok}]),title:O.value?.uv.reason??O.value?.uv.path??``},`UV · `+a(ya.value),11,ye)])]),E.value!=null&&!E.value.runtime.python.ok?(o(),d(`div`,be,[t[29]||=u(`span`,{class:`i-tabler-alert-triangle`},null,-1),u(`span`,xe,[g(a(e.$t(`aml.k1amlx014`)),1),u(`b`,Se,a(E.value.runtime.python.reason??``),1)])])):p(``,!0),E.value?(o(),d(`section`,Ce,[u(`div`,we,[u(`span`,{class:s([`ov-item`,E.value.runtime.python.ok?`ok`:`bad`])},[u(`span`,{class:s(E.value.runtime.python.ok?`i-tabler-circle-check`:`i-tabler-alert-triangle`)},null,2),g(` `+a(e.$t(`aml.k1amlx003`))+` · `+a(da.value),1)],2),u(`span`,{class:s([`ov-item`,{ok:E.value.runtime.venvReady}])},a(e.$t(`aml.k1amlx006`))+` · `+a(fa.value),3),u(`span`,Te,[g(a(e.$t(`aml.k1amlx009`))+` `,1),u(`b`,null,a(E.value.runtime.queued),1)]),u(`span`,Ee,[g(a(e.$t(`aml.k1amlx010`))+` `,1),u(`b`,null,a(E.value.runtime.running),1)]),t[30]||=u(`span`,{class:`sep`},`·`,-1),u(`span`,De,[g(a(e.$t(`aml.k1amlx011`))+` `,1),u(`b`,null,a(E.value.counts.datasets),1)]),u(`span`,Oe,[g(a(e.$t(`aml.k1amlx012`))+` `,1),u(`b`,null,a(E.value.counts.models),1)]),u(`span`,{class:`ov-item accent`,title:e.$t(`aml.k1amlx013`)},[g(a(e.$t(`aml.k1amlx013`))+` `,1),u(`b`,null,a(E.value.counts.productions),1)],8,ke),u(`button`,{class:`mini-btn reload`,onClick:ja},a(e.$t(`aml.k1amlx017`)),1)])])):ua.value?(o(),d(`p`,Ae,a(e.$t(`aml.k1amlx015`))+`:`+a(ua.value),1)):p(``,!0),O.value?(o(),d(`section`,je,[u(`div`,Me,[u(`h2`,null,a(e.$t(`aml.k1amlx162`)),1),u(`div`,Ne,[u(`button`,{class:`mini-btn`,disabled:k.value,onClick:Oa},a(e.$t(`aml.k1amlx175`)),9,Pe),u(`button`,{class:`mini-btn`,onClick:t[0]||=e=>_a.value=!_a.value},a(_a.value?e.$t(`aml.k1amlx181`):e.$t(`aml.k1amlx180`)),1)])]),O.value.preflight.canRunJobs?p(``,!0):(o(),d(`div`,Fe,[t[31]||=u(`span`,{class:`i-tabler-alert-triangle`},null,-1),u(`span`,Ie,[g(a(e.$t(`aml.k1amlx178`))+`:`,1),u(`b`,Le,a(ma.value),1)])])),u(`div`,Re,[u(`div`,{class:s([`env-card`,O.value.uv.ok?`ok`:`bad`])},[u(`div`,ze,[u(`span`,{class:s(O.value.uv.ok?`i-tabler-circle-check`:`i-tabler-alert-triangle`)},null,2),u(`b`,null,a(e.$t(`aml.k1amlx163`)),1),u(`span`,Be,a(ya.value),1)]),O.value.uv.ok?(o(),d(`p`,Ve,[g(a(O.value.uv.path),1),ba.value?(o(),d(f,{key:0},[g(` · `+a(ba.value),1)],64)):p(``,!0)])):(o(),d(`p`,He,a(e.$t(`aml.k1amlx177`)),1)),u(`div`,Ue,[O.value.uv.ok?p(``,!0):(o(),d(`button`,{key:0,class:`mini-btn primary`,disabled:k.value,title:e.$t(`aml.k1amlx176`),onClick:Ea},[t[32]||=u(`span`,{class:`i-tabler-download`},null,-1),g(` `+a(O.value.task?.kind===`install-uv`&&O.value.task.status===`running`?e.$t(`aml.k1amlx167`):e.$t(`aml.k1amlx166`)),1)],8,We))])],2),u(`div`,{class:s([`env-card`,O.value.venv.ready?`ok`:`bad`])},[u(`div`,Ge,[u(`span`,{class:s(O.value.venv.ready?`i-tabler-circle-check`:`i-tabler-alert-triangle`)},null,2),u(`b`,null,a(e.$t(`aml.k1amlx168`)),1),u(`span`,Ke,a(O.value.venv.ready?e.$t(`aml.k1amlx007`):e.$t(`aml.k1amlx008`)),1)]),u(`p`,qe,[g(a(O.value.venv.dir)+` `,1),O.value.venv.ready?(o(),d(f,{key:0},[g(` · `+a(O.value.venv.sizeMb)+` MB `,1)],64)):p(``,!0)]),u(`div`,Je,[u(`button`,{class:`mini-btn primary`,disabled:k.value||!O.value.python.ok,title:O.value.python.ok?``:O.value.python.reason??``,onClick:t[1]||=e=>Da(!1)},[t[33]||=u(`span`,{class:`i-tabler-plus`},null,-1),g(` `+a(O.value.task?.kind===`create-venv`&&O.value.task.status===`running`?e.$t(`aml.k1amlx170`):e.$t(`aml.k1amlx168`)),1)],8,Ye),O.value.venv.ready?(o(),d(`button`,{key:0,class:`mini-btn`,disabled:k.value,onClick:t[2]||=e=>Da(!0)},a(e.$t(`aml.k1amlx169`)),9,Xe)):p(``,!0)])],2),u(`div`,Ze,[u(`div`,Qe,[t[34]||=u(`span`,{class:`i-tabler-folder`},null,-1),u(`b`,null,a(e.$t(`aml.k1amlx171`)),1)]),u(`p`,$e,a(O.value.amlRoot),1),u(`p`,et,a(e.$t(`aml.k1amlx201`)),1),u(`p`,tt,[g(a(e.$t(`aml.k1amlx174`))+`: `,1),u(`b`,nt,a(O.value.disk.usedMb)+` / `+a(O.value.disk.quotaMb)+` MB`,1),u(`span`,rt,` · `+a(ga.value),1)])]),u(`div`,{class:s([`env-card`,A.value==null?``:A.value.ok?`ok`:`bad`])},[u(`div`,it,[u(`span`,{class:s(A.value?.ok===!1?`i-tabler-alert-triangle`:`i-tabler-database`)},null,2),u(`b`,null,a(e.$t(`aml.k1amlx182`)),1),A.value?(o(),d(`span`,at,a(A.value.ok?e.$t(`aml.k1amlx183`):e.$t(`aml.k1amlx184`)),1)):p(``,!0)]),A.value?(o(),d(`p`,ot,a(e.$t(`aml.k1amlx011`))+` `+a(A.value.counts.datasets)+`/`+a(A.value.entities.datasets)+` · `+a(e.$t(`aml.k1amlx010`))+` `+a(A.value.counts.jobs)+`/`+a(A.value.entities.jobs)+` · `+a(e.$t(`aml.k1amlx012`))+` `+a(A.value.counts.models)+`/`+a(A.value.entities.models),1)):p(``,!0),A.value&&A.value.issues.length>0?(o(),d(`ul`,st,[(o(!0),d(f,null,c(A.value.issues.slice(0,5),t=>(o(),d(`li`,{key:`${t.kind}:${t.id}:${t.problem}`,title:t.detail},[u(`span`,lt,a(t.problem===`entity_missing`?e.$t(`aml.k1amlx185`):t.problem===`orphan_dir`?e.$t(`aml.k1amlx186`):e.$t(`aml.k1amlx187`)),1),g(` `+a(t.kind)+` `+a(w(t.id)),1)],8,ct))),128))])):p(``,!0),u(`div`,ut,[A.value&&A.value.issues.some(e=>e.problem===`orphan_dir`)?(o(),d(`button`,{key:0,class:`mini-btn`,onClick:Aa},[t[35]||=u(`span`,{class:`i-tabler-trash`},null,-1),g(` `+a(e.$t(`aml.k1amlx188`)),1)])):p(``,!0)])],2)]),O.value.task&&_a.value?(o(),d(`div`,dt,[u(`div`,ft,[u(`span`,{class:s(O.value.task.status===`running`?`i-tabler-loader-2 spin`:O.value.task.status===`done`?`i-tabler-circle-check`:`i-tabler-alert-triangle`)},null,2),u(`b`,null,a(O.value.task.kind),1),u(`span`,pt,a(O.value.task.status),1),O.value.task.status===`running`?(o(),d(`span`,mt,`· `+a(e.$t(`aml.k1amlx179`)),1)):p(``,!0)]),u(`pre`,ht,a(O.value.task.log.slice(-40).join(`
3
+ `)),1),O.value.task.error?(o(),d(`p`,gt,a(O.value.task.error),1)):p(``,!0)])):p(``,!0)])):p(``,!0),u(`section`,_t,[u(`div`,vt,[u(`h2`,null,[t[36]||=u(`span`,{class:`i-tabler-database`},null,-1),g(` `+a(e.$t(`aml.k1amlx016`))+` `,1),u(`b`,yt,a(j.value.length),1)]),u(`div`,bt,[u(`button`,{class:`mini-btn`,onClick:t[3]||=e=>N()},a(e.$t(`aml.k1amlx017`)),1),u(`button`,{class:`pill-btn`,onClick:za},[t[37]||=u(`span`,{class:`i-tabler-plus`},null,-1),g(` `+a(e.$t(`aml.k1amlx018`)),1)])])]),j.value.length?(o(),d(`div`,xt,[u(`table`,St,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx020`)),1),u(`th`,null,a(e.$t(`aml.k1amlx021`)),1),u(`th`,null,a(e.$t(`aml.k1amlx022`)),1),u(`th`,Ct,a(e.$t(`aml.k1amlx023`)),1),u(`th`,wt,a(e.$t(`aml.k1amlx024`)),1),u(`th`,null,a(e.$t(`aml.k1amlx025`)),1),u(`th`,null,a(e.$t(`aml.k1amlx026`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(j.value,n=>(o(),d(f,{key:n.id},[u(`tr`,{class:s([`row-main`,{open:M.value===n.id}]),onClick:e=>La(n.id)},[u(`td`,Et,a(ia(n.createdAt)),1),u(`td`,Dt,a(w(n.productId)),1),u(`td`,Ot,a(w(n.recipeId)),1),u(`td`,kt,a(n.rowCount),1),u(`td`,At,a(n.runIds.length),1),u(`td`,null,[g(a(n.createdBy),1),u(`small`,{class:s([`kind`,n.createdByKind])},a(n.createdByKind===`agent`?`Agent`:e.$t(`aml.k1amlx049`)),3)]),u(`td`,{class:`note-cell`,onClick:t[5]||=_(()=>{},[`stop`])},[Ma.value===n.id?(o(),d(`div`,jt,[m(u(`input`,{"onUpdate:modelValue":t[4]||=e=>P.value=e,placeholder:e.$t(`aml.k1amlx189`),onKeyup:[re(e=>Pa(`datasets`,n.id),[`enter`]),re(F,[`esc`])]},null,40,Mt),[[v,P.value]]),u(`button`,{class:`mini-btn`,onClick:e=>Pa(`datasets`,n.id)},a(e.$t(`aml.k1amlx191`)),9,Nt),u(`button`,{class:`mini-btn`,onClick:F},a(e.$t(`aml.k1amlx202`)),1)])):(o(),d(`span`,Pt,[u(`span`,{class:`note`,title:n.note},a(n.note||`--`),9,Ft),u(`span`,{class:`i-tabler-pencil edit-i`,title:e.$t(`aml.k1amlx189`),onClick:e=>Na(n.id,n.note)},null,8,It),u(`span`,{class:`i-tabler-trash edit-i`,title:e.$t(`aml.k1amlx190`),onClick:t=>Fa(`datasets`,n.id,e.$t(`aml.k1amlx198`))},null,8,Lt)]))])],10,Tt),M.value===n.id?(o(),d(`tr`,Rt,[u(`td`,zt,[I[n.id]?.loading?(o(),d(`div`,Bt,a(e.$t(`aml.k1amlx030`)),1)):I[n.id]?.error?(o(),d(`div`,Vt,a(e.$t(`aml.k1amlx031`))+`:`+a(I[n.id]?.error),1)):I[n.id]?.report?(o(),d(`div`,Ht,[u(`div`,null,[u(`p`,Ut,a(e.$t(`aml.k1amlx027`)),1),u(`table`,Wt,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx033`)),1),u(`th`,null,a(e.$t(`aml.k1amlx034`)),1),u(`th`,Gt,a(e.$t(`aml.k1amlx035`)),1),u(`th`,Kt,a(e.$t(`aml.k1amlx036`)),1),u(`th`,qt,a(e.$t(`aml.k1amlx037`)),1),u(`th`,Jt,a(e.$t(`aml.k1amlx038`)),1),u(`th`,Yt,a(e.$t(`aml.k1amlx039`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(I[n.id]?.report?.nodeSummaries,e=>(o(),d(`tr`,{key:e.nodeId},[u(`td`,Xt,a(e.nodeId),1),u(`td`,null,[u(`small`,Zt,a(e.role),1)]),u(`td`,Qt,a(aa(e.cleanedRatio)),1),u(`td`,$t,a(aa(e.missingRatio)),1),u(`td`,en,a(C(e.mean,3)),1),u(`td`,tn,a(C(e.std,3)),1),u(`td`,nn,a(C(e.min,2))+`~`+a(C(e.max,2)),1)]))),128))])])]),u(`div`,null,[u(`p`,rn,a(e.$t(`aml.k1amlx028`)),1),I[n.id]?.report?.lagEstimates.length?(o(),d(`table`,an,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx040`)),1),u(`th`,null,a(e.$t(`aml.k1amlx041`)),1),u(`th`,on,a(e.$t(`aml.k1amlx042`)),1),u(`th`,sn,a(e.$t(`aml.k1amlx043`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(I[n.id]?.report?.lagEstimates,e=>(o(),d(`tr`,{key:`${e.controlId}->${e.targetId}`},[u(`td`,cn,a(e.controlId),1),u(`td`,ln,a(e.targetId),1),u(`td`,un,a(e.lagSteps),1),u(`td`,dn,a(C(e.corr,3)),1)]))),128))])])):(o(),d(`p`,fn,a(e.$t(`aml.k1amlx032`)),1)),u(`p`,pn,a(e.$t(`aml.k1amlx029`)),1),u(`p`,mn,[g(a(e.$t(`aml.k1amlx044`))+` `,1),u(`b`,null,a(I[n.id]?.report?.runsUsed.length??0),1),g(` · `+a(e.$t(`aml.k1amlx045`))+` `,1),u(`b`,null,a(I[n.id]?.report?.runsDropped.length??0),1),g(` · `+a(e.$t(`aml.k1amlx046`))+` `,1),u(`b`,null,a(I[n.id]?.report?.windowCount.train)+`/`+a(I[n.id]?.report?.windowCount.val)+`/`+a(I[n.id]?.report?.windowCount.test),1)]),(o(!0),d(f,null,c(I[n.id]?.report?.runsDropped,e=>(o(),d(`p`,{key:e.runId,class:`mono drop-line`},` ✗ `+a(w(e.runId))+` — `+a(e.reason),1))),128))])])):(o(),d(`p`,hn,a(e.$t(`aml.k1amlx047`)),1))])])):p(``,!0)],64))),128))])])])):(o(),d(`p`,gn,a(e.$t(`aml.k1amlx019`)),1))]),u(`section`,_n,[u(`div`,vn,[u(`h2`,null,[t[38]||=u(`span`,{class:`i-tabler-brain`},null,-1),g(` `+a(e.$t(`aml.k1amlx074`))+` `,1),u(`b`,yn,a(H.value.length),1),H.value.some(e=>T(e.status))?(o(),d(`span`,{key:0,class:`live-dot`,title:e.$t(`aml.k1amlx091`)},null,8,bn)):p(``,!0)]),u(`button`,{class:`mini-btn`,onClick:t[6]||=e=>V()},a(e.$t(`aml.k1amlx017`)),1)]),H.value.length?(o(),d(`div`,xn,[u(`table`,Sn,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx076`)),1),u(`th`,null,a(e.$t(`aml.k1amlx011`)),1),u(`th`,null,a(e.$t(`aml.k1amlx066`)),1),u(`th`,null,a(e.$t(`aml.k1amlx077`)),1),u(`th`,null,a(e.$t(`aml.k1amlx078`)),1),u(`th`,Cn,a(e.$t(`aml.k1amlx079`)),1),u(`th`,null,a(e.$t(`aml.k1amlx020`)),1),u(`th`,wn,a(e.$t(`aml.k1amlx127`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(H.value,t=>(o(),d(f,{key:t.id},[u(`tr`,{class:s([`row-main`,{open:W.value===t.id}]),onClick:e=>Ga(t.id)},[u(`td`,En,a(w(t.id)),1),u(`td`,Dn,a(w(t.datasetId)),1),u(`td`,On,a(t.purpose),1),u(`td`,null,[u(`span`,{class:s([`st-pill`,t.status])},a(ca(t.status)),3)]),u(`td`,kn,a(t.stage||`--`),1),u(`td`,An,[u(`span`,jn,[u(`i`,{style:n({width:`${Math.max(0,Math.min(100,t.progress))}%`}),class:s({done:t.status===`done`,bad:t.status===`failed`})},null,6)]),u(`span`,Mn,a(Math.round(t.progress))+`%`,1)]),u(`td`,Nn,a(ia(t.createdAt)),1),u(`td`,Pn,[T(t.status)?(o(),d(`button`,{key:0,class:`mini-btn danger`,disabled:Ja.value===t.id,onClick:_(e=>Ya(t.id),[`stop`])},a(qa.value===t.id?e.$t(`aml.k1amlx094`):Ja.value===t.id?e.$t(`aml.k1amlx093`):e.$t(`aml.k1amlx071`)),9,Fn)):p(``,!0),sa(t.status)?(o(),d(`button`,{key:1,class:`mini-btn`,disabled:Za.value===t.id,onClick:_(e=>Qa(t.id),[`stop`])},a(Xa.value===t.id?e.$t(`aml.k1amlx096`):e.$t(`aml.k1amlx095`)),9,In)):p(``,!0),T(t.status)?p(``,!0):(o(),d(`span`,{key:2,class:`i-tabler-trash edit-i`,title:e.$t(`aml.k1amlx190`),onClick:_(n=>Fa(`jobs`,t.id,e.$t(`aml.k1amlx200`)),[`stop`])},null,8,Ln))])],10,Tn),W.value===t.id?(o(),d(`tr`,Rn,[u(`td`,zn,[U[t.id]?.loading?(o(),d(`div`,Bn,a(e.$t(`aml.k1amlx030`)),1)):U[t.id]?.error?(o(),d(`div`,Vn,a(U[t.id]?.error),1)):(o(),d(`div`,Hn,[u(`div`,null,[u(`p`,Un,a(e.$t(`aml.k1amlx083`)),1),U[t.id]?.gates?.checks.length?(o(),d(`table`,Wn,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx084`)),1),u(`th`,Gn,a(e.$t(`aml.k1amlx085`)),1),u(`th`,Kn,a(e.$t(`aml.k1amlx086`)),1),u(`th`,null,a(e.$t(`aml.k1amlx118`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(U[t.id]?.gates?.checks,t=>(o(),d(`tr`,{key:t.id},[u(`td`,null,[u(`b`,qn,a(t.id),1),u(`small`,Jn,a(t.name),1)]),u(`td`,Yn,a(C(t.value)),1),u(`td`,Xn,a(C(t.threshold)),1),u(`td`,null,[u(`span`,{class:s([`verdict`,t.pass?`pass`:`fail`])},a(t.pass?e.$t(`aml.k1amlx087`):e.$t(`aml.k1amlx088`)),3),u(`small`,Zn,a(t.detail),1)])]))),128))])])):(o(),d(`p`,Qn,a(e.$t(`aml.k1amlx082`)),1)),U[t.id]?.metrics?.oneStepTest?(o(),d(`p`,$n,[g(a(e.$t(`aml.k1amlx099`))+`: `+a(e.$t(`aml.k1amlx116`))+` `+a(C(U[t.id]?.metrics?.oneStepTest?.nrmse))+` `,1),U[t.id]?.metrics?.rolloutTest?(o(),d(f,{key:0},[g(` · `+a(e.$t(`aml.k1amlx117`))+` `+a(C(U[t.id]?.metrics?.rolloutTest?.nrmse)),1)],64)):p(``,!0)])):p(``,!0),t.error?(o(),d(`p`,er,a(e.$t(`aml.k1amlx092`))+`:`+a(t.error),1)):p(``,!0)]),u(`div`,null,[u(`p`,tr,[g(a(e.$t(`aml.k1amlx089`))+` `,1),T(t.status)?(o(),d(`span`,nr,a(e.$t(`aml.k1amlx091`)),1)):p(``,!0)]),u(`pre`,rr,a((U[t.id]?.logs??[]).join(`
4
+ `)||e.$t(`aml.k1amlx090`)),1)])]))])])):p(``,!0)],64))),128))])])])):(o(),d(`p`,ir,a(e.$t(`aml.k1amlx075`)),1))]),u(`section`,ar,[u(`div`,or,[u(`h2`,null,[t[39]||=u(`span`,{class:`i-tabler-trophy`},null,-1),g(` `+a(e.$t(`aml.k1amlx109`))+` `,1),u(`b`,sr,a(K.value.length),1)]),u(`div`,cr,[m(u(`select`,{"onUpdate:modelValue":t[7]||=e=>G.value=e,class:`inp-sel`,onChange:to},[u(`option`,lr,a(e.$t(`aml.k1amlx111`)),1),(o(!0),d(f,null,c(j.value,e=>(o(),d(`option`,{key:e.id,value:e.id},a(w(e.id))+` · `+a(w(e.recipeId)),9,ur))),128))],544),[[ne,G.value]]),u(`button`,{class:`mini-btn`,disabled:!G.value,onClick:to},a(e.$t(`aml.k1amlx017`)),9,dr)])]),K.value.length?(o(),d(`div`,fr,[u(`table`,pr,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx113`)),1),u(`th`,null,a(e.$t(`aml.k1amlx020`)),1),u(`th`,null,a(e.$t(`aml.k1amlx114`)),1),u(`th`,null,a(e.$t(`aml.k1amlx115`)),1),u(`th`,{class:`num`,title:e.$t(`aml.k1amlx121`)},a(e.$t(`aml.k1amlx116`)),9,mr),u(`th`,{class:`num`,title:e.$t(`aml.k1amlx122`)},a(e.$t(`aml.k1amlx117`)),9,hr),u(`th`,null,a(e.$t(`aml.k1amlx118`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(K.value,t=>(o(),d(`tr`,{key:t.id,class:s({best:t.id===no.value})},[u(`td`,gr,[t.id===no.value?(o(),d(`span`,_r,a(e.$t(`aml.k1amlx120`)),1)):p(``,!0),g(` `+a(w(t.id)),1)]),u(`td`,vr,a(ia(t.createdAt)),1),u(`td`,yr,[u(`span`,{class:`note`,title:t.changeNote},a(t.changeNote||`--`),9,br)]),u(`td`,xr,a(t.parentExperimentId?w(t.parentExperimentId):`--`),1),u(`td`,Sr,a(C(t.metrics?.oneStepTest?.nrmse)),1),u(`td`,Cr,a(C(t.metrics?.rolloutTest?.nrmse)),1),u(`td`,null,[u(`span`,{class:s([`st-pill`,t.status])},a(la(t.status)),3)])],2))),128))])])])):(o(),d(`p`,wr,a(G.value?e.$t(`aml.k1amlx112`):e.$t(`aml.k1amlx110`)),1)),eo.value?(o(),d(`p`,Tr,a(eo.value),1)):p(``,!0)]),u(`section`,Er,[u(`div`,Dr,[u(`h2`,null,[t[40]||=u(`span`,{class:`i-tabler-cube-3d-sphere`},null,-1),g(` `+a(e.$t(`aml.k1amlx123`))+` `,1),u(`b`,Or,a(q.value.length),1)]),u(`button`,{class:`mini-btn`,onClick:t[8]||=e=>J()},a(e.$t(`aml.k1amlx017`)),1)]),q.value.length?(o(),d(`div`,kr,[u(`table`,Ar,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,a(e.$t(`aml.k1amlx125`)),1),u(`th`,null,a(e.$t(`aml.k1amlx021`)),1),u(`th`,null,a(e.$t(`aml.k1amlx022`)),1),u(`th`,null,a(e.$t(`aml.k1amlx078`)),1),u(`th`,{title:e.$t(`aml.k1amlx126`)},a(e.$t(`aml.k1amlx099`)),9,jr),u(`th`,null,a(e.$t(`aml.k1amlx020`)),1),u(`th`,null,a(e.$t(`aml.k1amlx026`)),1),u(`th`,Mr,a(e.$t(`aml.k1amlx127`)),1)])]),u(`tbody`,null,[(o(!0),d(f,null,c(q.value,n=>(o(),d(`tr`,{key:n.id},[u(`td`,Nr,a(w(n.id)),1),u(`td`,Pr,a(w(n.productId)),1),u(`td`,Fr,a(w(n.recipeId)),1),u(`td`,null,[u(`span`,{class:s([`stage-pill`,n.stage])},a(n.stage),3)]),u(`td`,Ir,a(e.$t(`aml.k1amlx116`))+` `+a(C(n.metrics?.oneStepTest?.nrmse))+` · `+a(e.$t(`aml.k1amlx117`))+` `+a(C(n.metrics?.rolloutTest?.nrmse)),1),u(`td`,Lr,a(ia(n.createdAt)),1),u(`td`,{class:`note-cell`,onClick:t[10]||=_(()=>{},[`stop`])},[Ma.value===n.id?(o(),d(`div`,Rr,[m(u(`input`,{"onUpdate:modelValue":t[9]||=e=>P.value=e,placeholder:e.$t(`aml.k1amlx189`),onKeyup:[re(e=>Pa(`models`,n.id),[`enter`]),re(F,[`esc`])]},null,40,zr),[[v,P.value]]),u(`button`,{class:`mini-btn`,onClick:e=>Pa(`models`,n.id)},a(e.$t(`aml.k1amlx191`)),9,Br),u(`button`,{class:`mini-btn`,onClick:F},a(e.$t(`aml.k1amlx202`)),1)])):(o(),d(`span`,Vr,[u(`span`,{class:`note`,title:n.note},a(n.note||`--`),9,Hr),u(`span`,{class:`i-tabler-pencil edit-i`,title:e.$t(`aml.k1amlx189`),onClick:e=>Na(n.id,n.note)},null,8,Ur)]))]),u(`td`,Wr,[(o(!0),d(f,null,c(ao(n),t=>(o(),d(`button`,{key:t.to,class:s([`mini-btn`,{danger:t.to===`retired`}]),disabled:io.value===`${n.id}:${t.to}`,onClick:e=>oo(n,t.to)},a(ro.value===`${n.id}:${t.to}`?e.$t(`aml.k1amlx131`):e.$t(t.key)),11,Gr))),128)),ao(n).length===0?(o(),d(`span`,Kr,`--`)):p(``,!0),u(`span`,{class:`i-tabler-trash edit-i`,title:e.$t(`aml.k1amlx190`),onClick:t=>Fa(`models`,n.id,e.$t(`aml.k1amlx199`))},null,8,qr)])]))),128))])])])):(o(),d(`p`,Jr,a(e.$t(`aml.k1amlx124`)),1))]),u(`section`,Yr,[u(`div`,Xr,[u(`h2`,null,[t[41]||=u(`span`,{class:`i-tabler-chart-line`},null,-1),g(` `+a(e.$t(`aml.k1amlx133`)),1)]),so.value.length?m((o(),d(`select`,{key:0,"onUpdate:modelValue":t[11]||=e=>co.value=e,class:`inp-sel`},[u(`option`,Zr,a(e.$t(`aml.k1amlx134`)),1),(o(!0),d(f,null,c(so.value,e=>(o(),d(`option`,{key:e.id,value:e.id},a(w(e.id))+` · `+a(w(e.recipeId)),9,Qr))),128))],512)),[[ne,co.value]]):p(``,!0)]),so.value.length?(o(),d(f,{key:0},[Y.value?.ioSpec?(o(),d(`div`,$r,[u(`p`,ei,a(e.$t(`aml.k1amlx136`)),1),u(`div`,ti,[u(`span`,ni,[g(a(e.$t(`aml.k1amlx140`))+` `,1),u(`b`,null,a(Y.value.ioSpec.historySteps),1)]),u(`span`,ri,[g(a(e.$t(`aml.k1amlx141`))+` `,1),u(`b`,null,a(Y.value.ioSpec.horizonSteps),1)]),u(`span`,ii,[g(a(e.$t(`aml.k1amlx142`))+` `,1),u(`b`,null,a(Y.value.ioSpec.beatMs)+`ms`,1)]),u(`span`,{class:`io-item`,title:Y.value.ioSpec.allNodes.join(`, `)},[g(a(e.$t(`aml.k1amlx137`))+`(`+a(Y.value.ioSpec.allNodes.length)+`) `,1),u(`b`,null,a(Y.value.ioSpec.allNodes.map(e=>w(e)).join(`, `)),1)],8,ai),u(`span`,{class:`io-item`,title:Y.value.ioSpec.controlNodes.join(`, `)},[g(a(e.$t(`aml.k1amlx138`))+` `,1),u(`b`,null,a(Y.value.ioSpec.controlNodes.map(e=>w(e)).join(`, `)),1)],8,oi),u(`span`,{class:`io-item`,title:Y.value.ioSpec.targetNodes.join(`, `)},[g(a(e.$t(`aml.k1amlx139`))+` `,1),u(`b`,null,a(Y.value.ioSpec.targetNodes.map(e=>w(e)).join(`, `)),1)],8,si)]),u(`div`,ci,[u(`label`,li,[u(`span`,null,a(e.$t(`aml.k1amlx143`)),1),m(u(`textarea`,{"onUpdate:modelValue":t[12]||=e=>lo.value=e,class:`inp area`,rows:`5`,placeholder:e.$t(`aml.k1amlx144`)},null,8,ui),[[v,lo.value]])]),u(`div`,di,[u(`button`,{class:`ghost-btn`,onClick:fo},[t[42]||=u(`span`,{class:`i-tabler-download`},null,-1),g(` `+a(e.$t(`aml.k1amlx145`)),1)]),u(`label`,fi,[u(`span`,null,a(e.$t(`aml.k1amlx156`)),1),m(u(`textarea`,{"onUpdate:modelValue":t[13]||=e=>X.value=e,class:`inp area`,rows:`3`,placeholder:`[[…]]`},null,512),[[v,X.value]])]),u(`label`,pi,[u(`span`,null,a(e.$t(`aml.k1amlx147`)),1),m(u(`input`,{"onUpdate:modelValue":t[14]||=e=>Z.value=e,type:`number`,min:`1`,class:`inp`},null,512),[[v,Z.value,void 0,{number:!0}]])]),u(`button`,{class:`pill-btn`,disabled:uo.value||!lo.value.trim(),onClick:mo},a(uo.value?e.$t(`aml.k1amlx149`):e.$t(`aml.k1amlx148`)),9,mi)])]),u(`p`,hi,a(e.$t(`aml.k1amlx146`)),1),Q.value?(o(),d(`p`,gi,a(Q.value),1)):p(``,!0),$.value?(o(),d(f,{key:1},[u(`p`,_i,a(e.$t(`aml.k1amlx150`)),1),u(`table`,vi,[u(`thead`,null,[u(`tr`,null,[u(`th`,yi,a(e.$t(`aml.k1amlx151`)),1),u(`th`,bi,a(e.$t(`aml.k1amlx152`)),1),(o(!0),d(f,null,c($.value.targetNodes,(t,n)=>(o(),d(`th`,{key:t,class:`num`},[g(a(w(t)),1),n===0?(o(),d(`small`,xi,` (`+a(e.$t(`aml.k1amlx041`))+`)`,1)):p(``,!0)]))),128))])]),u(`tbody`,null,[(o(!0),d(f,null,c($.value.forecast,(e,t)=>(o(),d(`tr`,{key:t},[u(`td`,Si,a(t+1),1),u(`td`,Ci,a(C((t+1)*$.value.beatMs/1e3,1)),1),(o(!0),d(f,null,c(e,(e,t)=>(o(),d(`td`,{key:t,class:`mono num`},a(C(e,3)),1))),128))]))),128))])]),u(`p`,wi,a(e.$t(`aml.k1amlx155`))+`:`+a($.value.assumptions),1)],64)):p(``,!0)])):(o(),d(`p`,Ti,a(e.$t(`aml.k1amlx134`)),1))],64)):(o(),d(`p`,Ei,a(e.$t(`aml.k1amlx135`)),1))]),L.value?(o(),d(`div`,{key:4,class:`modal-mask`,onClick:t[27]||=_(e=>L.value=!1,[`self`])},[u(`div`,Di,[u(`h3`,Oi,a(e.$t(`aml.k1amlx050`)),1),u(`div`,ki,[u(`label`,Ai,[u(`span`,null,[g(a(e.$t(`aml.k1amlx051`)),1),t[43]||=u(`em`,null,`*`,-1)]),m(u(`input`,{"onUpdate:modelValue":t[15]||=e=>z.lineId=e,class:`inp`,placeholder:`line-ov-01`},null,512),[[v,z.lineId]])]),u(`label`,ji,[u(`span`,null,[g(a(e.$t(`aml.k1amlx052`)),1),t[44]||=u(`em`,null,`*`,-1)]),m(u(`input`,{"onUpdate:modelValue":t[16]||=e=>z.productId=e,class:`inp`},null,512),[[v,z.productId]])]),u(`label`,Mi,[u(`span`,null,[g(a(e.$t(`aml.k1amlx053`)),1),t[45]||=u(`em`,null,`*`,-1)]),m(u(`input`,{"onUpdate:modelValue":t[17]||=e=>z.recipeId=e,class:`inp`},null,512),[[v,z.recipeId]])])]),u(`p`,Ni,a(e.$t(`aml.k1amlx054`)),1),u(`div`,Pi,[(o(!0),d(f,null,c(B,(t,n)=>(o(),d(`div`,{key:n,class:`node-row`},[m(u(`input`,{"onUpdate:modelValue":e=>t.nodeId=e,class:`inp grow`,placeholder:e.$t(`aml.k1amlx056`)},null,8,Fi),[[v,t.nodeId]]),m(u(`select`,{"onUpdate:modelValue":e=>t.role=e,class:`inp sel`},[u(`option`,Li,a(e.$t(`aml.k1amlx057`)),1),u(`option`,Ri,a(e.$t(`aml.k1amlx058`)),1),u(`option`,zi,a(e.$t(`aml.k1amlx059`)),1)],8,Ii),[[ne,t.role]]),u(`button`,{class:`mini-btn danger`,disabled:B.length<=1,onClick:e=>Va(n)},` ✕ `,8,Bi)]))),128)),u(`button`,{class:`mini-btn`,onClick:Ba},[t[46]||=u(`span`,{class:`i-tabler-plus`},null,-1),g(` `+a(e.$t(`aml.k1amlx055`)),1)])]),u(`div`,Vi,[u(`label`,Hi,[u(`span`,null,a(e.$t(`aml.k1amlx060`)),1),m(u(`input`,{"onUpdate:modelValue":t[18]||=e=>z.beatMs=e,type:`number`,min:`1000`,step:`500`,class:`inp`},null,512),[[v,z.beatMs,void 0,{number:!0}]])]),u(`label`,Ui,[u(`span`,null,a(e.$t(`aml.k1amlx061`)),1),m(u(`input`,{"onUpdate:modelValue":t[19]||=e=>z.historySteps=e,type:`number`,min:`1`,class:`inp`},null,512),[[v,z.historySteps,void 0,{number:!0}]])]),u(`label`,Wi,[u(`span`,null,a(e.$t(`aml.k1amlx062`)),1),m(u(`input`,{"onUpdate:modelValue":t[20]||=e=>z.horizonSteps=e,type:`number`,min:`1`,class:`inp`},null,512),[[v,z.horizonSteps,void 0,{number:!0}]])]),u(`label`,Gi,[u(`span`,null,a(e.$t(`aml.k1amlx063`)),1),m(u(`input`,{"onUpdate:modelValue":t[21]||=e=>z.valRatio=e,type:`number`,min:`0`,max:`0.8`,step:`0.05`,class:`inp`},null,512),[[v,z.valRatio,void 0,{number:!0}]])]),u(`label`,Ki,[u(`span`,null,a(e.$t(`aml.k1amlx064`)),1),m(u(`input`,{"onUpdate:modelValue":t[22]||=e=>z.testRatio=e,type:`number`,min:`0`,max:`0.8`,step:`0.05`,class:`inp`},null,512),[[v,z.testRatio,void 0,{number:!0}]])]),u(`label`,qi,[u(`span`,null,a(e.$t(`aml.k1amlx065`)),1),m(u(`input`,{"onUpdate:modelValue":t[23]||=e=>z.seed=e,type:`number`,class:`inp`},null,512),[[v,z.seed,void 0,{number:!0}]])]),u(`label`,Ji,[u(`span`,null,a(e.$t(`aml.k1amlx066`)),1),m(u(`select`,{"onUpdate:modelValue":t[24]||=e=>z.purpose=e,class:`inp`},[u(`option`,Yi,a(e.$t(`aml.k1amlx067`)),1),u(`option`,Xi,a(e.$t(`aml.k1amlx068`)),1)],512),[[ne,z.purpose]])]),u(`label`,Zi,[u(`span`,null,a(e.$t(`aml.k1amlx026`)),1),m(u(`input`,{"onUpdate:modelValue":t[25]||=e=>z.note=e,class:`inp`,placeholder:e.$t(`aml.k1amlx069`)},null,8,Qi),[[v,z.note]])])]),R.value?(o(),d(`p`,$i,a(R.value),1)):p(``,!0),u(`div`,ea,[u(`button`,{class:`ghost-btn`,onClick:t[26]||=e=>L.value=!1},a(e.$t(`aml.k1amlx071`)),1),u(`button`,{class:`pill-btn`,disabled:Ra.value,onClick:Ha},a(Ra.value?e.$t(`aml.k1amlx070`):e.$t(`aml.k1amlx072`)),9,ta)])])])):p(``,!0)]))}}),[[`__scopeId`,`data-v-3e891789`]]);export{na as default};
@@ -0,0 +1 @@
1
+ .harness-caps[data-v-6db201e9]{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.harness-cap[data-v-6db201e9]{border:1px solid var(--border,#2a3a4a);opacity:.75;border-radius:3px;padding:0 6px;font-size:11px;line-height:18px}.h-opt[data-v-6db201e9]{align-items:center;gap:7px;display:inline-flex}.h-opt-dot[data-v-6db201e9]{background:var(--tone-success-dot,#4a6b57);border-radius:50%;flex:none;width:6px;height:6px}.h-opt.off .h-opt-dot[data-v-6db201e9]{background:var(--tone-danger-dot,#c25a4e)}.h-opt.off[data-v-6db201e9]{opacity:.6}.h-install[data-v-6db201e9]{color:var(--accent);margin-left:8px;text-decoration:none}.h-install[data-v-6db201e9]:hover{text-decoration:underline}.harness-status[data-v-6db201e9]{color:var(--ink-faint);align-items:center;gap:6px;margin-top:6px;font-size:11px;display:flex}.harness-status.off[data-v-6db201e9]{color:var(--danger,#c25a4e)}.h-cell[data-v-6db201e9]{font-family:var(--font-mono);align-items:center;gap:6px;font-size:12px;display:inline-flex}.h-dot[data-v-6db201e9]{background:var(--ok,#4a6b57);border-radius:50%;width:6px;height:6px}.h-cell.off .h-dot[data-v-6db201e9]{background:var(--danger,#c25a4e)}.h-cell.off[data-v-6db201e9]{opacity:.75}.h-miss[data-v-6db201e9]{color:var(--danger,#c25a4e);font-family:var(--font-sans);font-size:11px}.page[data-v-6db201e9]{padding:4px}.head[data-v-6db201e9]{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}h2[data-v-6db201e9]{margin:0 0 4px}.sub[data-v-6db201e9]{opacity:.55;margin:0;font-size:12px}.toolbar[data-v-6db201e9]{align-items:center;gap:12px;margin-bottom:12px;display:flex}.admin-note[data-v-6db201e9]{color:var(--ink-faint);align-items:center;gap:5px;font-size:11px;display:inline-flex}.tpl-name[data-v-6db201e9]{align-items:center;gap:6px;display:inline-flex}.vis-tag[data-v-6db201e9]{margin-right:8px}.owner[data-v-6db201e9]{color:var(--ink-soft);font-size:12px}.inst[data-v-6db201e9]{align-items:center;gap:8px;padding:2px 0;font-size:12px;display:flex}.inst-ch[data-v-6db201e9],.inst-id[data-v-6db201e9]{font-family:var(--font-mono);opacity:.6}.empty[data-v-6db201e9]{opacity:.4;padding:6px 0;font-size:12px}@media (width<=900px){.head[data-v-6db201e9]{flex-direction:column;align-items:stretch;gap:12px}.head>div[data-v-6db201e9]{min-width:0}.head h2[data-v-6db201e9]{font-size:21px;line-height:1.25}.head[data-v-6db201e9] .ant-space{flex-direction:column;align-items:stretch;gap:8px;width:100%;display:flex}.head[data-v-6db201e9] .ant-space-item{width:100%}.head[data-v-6db201e9] .ant-btn{width:100%;min-height:40px}.toolbar[data-v-6db201e9]{flex-wrap:wrap;gap:8px}.toolbar[data-v-6db201e9] .ant-segmented{flex:100%;min-width:0}.admin-note[data-v-6db201e9]{flex:100%;min-width:0;font-size:11.5px;line-height:1.5}.page[data-v-6db201e9] .ant-table-content table{min-width:828px}.page[data-v-6db201e9] .ant-table colgroup col:first-child{width:44px}.page[data-v-6db201e9] .ant-table-tbody>tr>td:first-child,.page[data-v-6db201e9] .ant-table-thead>tr>th:first-child{width:44px;min-width:44px;padding-left:6px;padding-right:2px}.page[data-v-6db201e9] .ant-table-tbody>tr>td:nth-child(2),.page[data-v-6db201e9] .ant-table-thead>tr>th:nth-child(2){z-index:2;background:var(--paper-raised);min-width:132px;box-shadow:1px 0 0 var(--line);position:sticky;left:44px}.page[data-v-6db201e9] .ant-table-thead>tr>th:nth-child(2){z-index:3}}@media (width<=640px){.page[data-v-6db201e9]{padding:0}.head h2[data-v-6db201e9]{font-size:19px}.sub[data-v-6db201e9]{font-size:11.5px;line-height:1.5}.tpl-name[data-v-6db201e9]{min-width:120px}.page[data-v-6db201e9] .ant-table .ant-btn-sm{min-height:34px}}@media (width<=900px){.page[data-v-6db201e9] .ant-switch{position:relative}.page[data-v-6db201e9] .ant-switch:after{content:"";position:absolute;inset:-12px -6px}}
@@ -0,0 +1 @@
1
+ .page[data-v-3e891789]{padding:4px}h1[data-v-3e891789]{letter-spacing:-.015em;margin:2px 0 4px;font-size:30px;font-weight:400}.sub[data-v-3e891789]{opacity:.6;margin:0;font-size:12.5px}.mono[data-v-3e891789]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.dim[data-v-3e891789]{opacity:.55}.err[data-v-3e891789]{color:var(--tone-danger-dot);margin:6px 0;font-size:12.5px}.pad[data-v-3e891789]{padding:10px 12px}.badges[data-v-3e891789]{gap:8px;display:flex}.badge[data-v-3e891789]{letter-spacing:.05em;color:var(--ink-soft);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:3px 10px;font-size:11.5px}.badge.bad[data-v-3e891789]{color:var(--tone-danger-dot);border-color:color-mix(in srgb, var(--tone-danger-dot) 45%, transparent)}.infra-banner[data-v-3e891789]{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-panel-sm,10px);align-items:flex-start;gap:10px;margin-bottom:14px;padding:10px 14px;display:flex}.infra-banner>span[data-v-3e891789]:first-child{flex:none;margin-top:2px}.infra-banner .txt[data-v-3e891789]{flex:auto;font-size:12.5px;line-height:1.5}.ov-card[data-v-3e891789]{margin-bottom:14px;padding:10px 18px}.ov-row[data-v-3e891789]{color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:8px 16px;font-size:12px;display:flex}.ov-item[data-v-3e891789]{align-items:center;gap:5px;display:inline-flex}.ov-item b[data-v-3e891789]{color:var(--ink);font-weight:700}.ov-item.ok[data-v-3e891789]{color:var(--tone-success-dot)}.ov-item.bad[data-v-3e891789]{color:var(--tone-danger-dot)}.ov-item.accent b[data-v-3e891789]{color:var(--accent)}.ov-row .sep[data-v-3e891789]{opacity:.4}.ov-row .reload[data-v-3e891789]{margin-left:auto}.zone[data-v-3e891789]{margin-bottom:14px;padding:12px 18px 14px}.zone-head[data-v-3e891789]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 12px;margin-bottom:10px;display:flex}.zone-head h2[data-v-3e891789]{letter-spacing:.01em;flex-wrap:wrap;align-items:center;gap:8px;margin:0;font-size:15px;font-weight:600;display:inline-flex}.zone-head h2 .cnt[data-v-3e891789]{color:var(--ink-faint);font-size:11.5px;font-weight:400}.zone-actions[data-v-3e891789]{align-items:center;gap:8px;display:flex}.env-grid[data-v-3e891789]{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;display:grid}.env-card[data-v-3e891789]{background:var(--surface-sunken,color-mix(in srgb, var(--ink) 3%, transparent));border:1px solid var(--divider-hair);border-radius:var(--radius-chip);flex-direction:column;gap:6px;padding:10px 12px;display:flex}.env-card.ok[data-v-3e891789]{border-color:color-mix(in srgb, var(--tone-success-dot) 35%, transparent)}.env-card.bad[data-v-3e891789]{border-color:color-mix(in srgb, var(--tone-warning-dot) 40%, transparent)}.env-card .ec-head[data-v-3e891789]{align-items:center;gap:6px;font-size:12.5px;display:flex}.env-card .ec-head .ec-state[data-v-3e891789]{color:var(--ink-faint);margin-left:auto;font-size:11.5px}.env-card.ok .ec-head>span[data-v-3e891789]:first-child{color:var(--tone-success-dot)}.env-card.bad .ec-head>span[data-v-3e891789]:first-child{color:var(--tone-warning-dot)}.env-card .ec-detail[data-v-3e891789]{color:var(--ink-soft);overflow-wrap:anywhere;margin:0;font-size:11.5px;line-height:1.55}.env-card .ec-detail.dim[data-v-3e891789]{color:var(--ink-faint)}.env-card .ec-actions[data-v-3e891789]{flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:4px;display:flex}.env-card .ec-issues[data-v-3e891789]{max-height:96px;margin:0;padding:0;font-size:11.5px;list-style:none;overflow-y:auto}.env-card .ec-issues li[data-v-3e891789]{color:var(--ink-soft);align-items:center;gap:6px;padding:1px 0;display:flex}.env-card .ec-issues .tag[data-v-3e891789]{color:var(--tone-warning-dot);background:var(--tone-warning-bg);border-radius:3px;flex:none;padding:0 5px;font-size:11.5px}.env-task[data-v-3e891789]{border-top:1px solid var(--divider-hair);margin-top:10px;padding-top:10px}.env-task .et-head[data-v-3e891789]{align-items:center;gap:8px;font-size:12px;display:flex}.env-task .et-head .dim[data-v-3e891789]{color:var(--ink-faint);font-weight:400}.env-task .et-log[data-v-3e891789]{white-space:pre-wrap;background:var(--surface-sunken,color-mix(in srgb, var(--ink) 4%, transparent));border-radius:var(--radius-chip);max-height:220px;margin:6px 0 0;padding:8px 10px;font-size:11.5px;line-height:1.5;overflow:auto}.mini-btn.primary[data-v-3e891789]{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 45%, transparent)}@keyframes amlSpin-3e891789{to{transform:rotate(1turn)}}.spin[data-v-3e891789]{animation:1s linear infinite amlSpin-3e891789;display:inline-block}@media (prefers-reduced-motion:reduce){.spin[data-v-3e891789]{animation:none}}.note-edit[data-v-3e891789]{align-items:center;gap:6px;display:flex}.note-edit input[data-v-3e891789]{min-width:120px;color:var(--ink);border:1px solid var(--line-strong);background:0 0;border-radius:4px;padding:3px 6px;font-size:12px}.note-text[data-v-3e891789]{align-items:center;gap:6px;display:inline-flex}.note-text .edit-i[data-v-3e891789]{cursor:pointer;opacity:.5}.note-text .edit-i[data-v-3e891789]:hover{opacity:1}.live-dot[data-v-3e891789]{background:var(--tone-success-dot);width:7px;height:7px;box-shadow:0 0 6px color-mix(in srgb, var(--tone-success-dot) 60%, transparent);border-radius:50%}@media (prefers-reduced-motion:no-preference){.live-dot[data-v-3e891789]{animation:1.8s ease-in-out infinite amlPulse-3e891789}}@keyframes amlPulse-3e891789{50%{opacity:.4}}.tbl[data-v-3e891789]{border-collapse:collapse;width:100%;font-size:12.5px}.tbl td[data-v-3e891789],.tbl th[data-v-3e891789]{text-align:left;border-bottom:1px solid var(--divider-hair);padding:8px 10px}.tbl th[data-v-3e891789]{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--line-strong);font-size:11.5px;font-weight:600}.tbl .num[data-v-3e891789],.tbl .right[data-v-3e891789]{text-align:right}.tbl .acts[data-v-3e891789]{white-space:nowrap}.tbl .acts .mini-btn+.mini-btn[data-v-3e891789]{margin-left:6px}.row-main[data-v-3e891789]{cursor:pointer}@media (prefers-reduced-motion:no-preference){.row-main[data-v-3e891789]:hover{background:var(--hover-tint)}}.row-main.open td[data-v-3e891789]{border-bottom-color:#0000}.note-cell[data-v-3e891789]{max-width:260px}.note[data-v-3e891789]{text-overflow:ellipsis;white-space:nowrap;width:100%;display:inline-block;overflow:hidden}.kind[data-v-3e891789]{border:1px solid var(--line);color:var(--ink-faint);border-radius:99px;margin-left:6px;padding:1px 6px;font-size:11.5px}.kind.agent[data-v-3e891789]{color:var(--tone-info-dot);border-color:color-mix(in srgb, var(--tone-info-dot) 40%, transparent)}.detail-row td[data-v-3e891789]{background:var(--frost-bg);padding:0 12px 12px}.det-grid[data-v-3e891789]{grid-template-columns:minmax(340px,3fr) minmax(280px,2fr);gap:10px 22px;display:grid}@media (width<=1100px){.det-grid[data-v-3e891789]{grid-template-columns:1fr}}.det-title[data-v-3e891789]{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin:10px 0 6px;font-size:11.5px;font-weight:600}.det-title[data-v-3e891789]:first-child{margin-top:10px}.sub-tbl[data-v-3e891789]{border-collapse:collapse;width:100%;font-size:12px}.sub-tbl td[data-v-3e891789],.sub-tbl th[data-v-3e891789]{text-align:left;border-bottom:1px solid var(--divider-hair);padding:5px 8px}.sub-tbl th[data-v-3e891789]{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);font-size:11.5px}.sub-tbl .num[data-v-3e891789]{text-align:right}.role-chip[data-v-3e891789]{font-family:var(--font-mono);background:var(--paper-deep);color:var(--ink-soft);border-radius:5px;padding:1px 6px;font-size:11.5px}.run-line[data-v-3e891789]{overflow-wrap:anywhere;margin:4px 0;font-size:11.5px}.run-line b[data-v-3e891789]{color:var(--ink)}.drop-line[data-v-3e891789]{color:var(--tone-danger-dot);overflow-wrap:anywhere;margin:2px 0;font-size:11.5px}.st-pill[data-v-3e891789]{font-family:var(--font-mono);letter-spacing:.04em;border-radius:var(--radius-pill);padding:3px 9px;font-size:11.5px;display:inline-block}.st-pill.provisioning[data-v-3e891789],.st-pill.queued[data-v-3e891789]{color:var(--tone-neutral-dot);background:var(--tone-neutral-bg)}.st-pill.evaluating[data-v-3e891789],.st-pill.running[data-v-3e891789],.st-pill.training[data-v-3e891789]{color:var(--tone-info-dot);background:color-mix(in srgb, var(--tone-info-dot) 12%, transparent)}.st-pill.done[data-v-3e891789],.st-pill.gates_passed[data-v-3e891789]{color:var(--tone-success-dot);background:var(--tone-success-bg)}.st-pill.failed[data-v-3e891789],.st-pill.gates_failed[data-v-3e891789],.st-pill.timeout[data-v-3e891789]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.st-pill.cancelled[data-v-3e891789],.st-pill.interrupted[data-v-3e891789]{color:var(--tone-neutral-dot);background:var(--tone-neutral-bg)}.prog-th[data-v-3e891789]{min-width:140px}.prog-cell[data-v-3e891789]{white-space:nowrap}.prog[data-v-3e891789]{vertical-align:middle;background:var(--paper-deep);border-radius:3px;width:96px;height:6px;display:inline-block;overflow:hidden}.prog i[data-v-3e891789]{background:var(--tone-info-dot);border-radius:3px;height:100%;transition:width .4s;display:block}.prog i.done[data-v-3e891789]{background:var(--tone-success-dot)}.prog i.bad[data-v-3e891789]{background:var(--tone-danger-dot)}.prog-num[data-v-3e891789]{color:var(--ink-soft);margin-left:7px;font-size:11.5px}.gate-id[data-v-3e891789]{font-weight:700}.gate-detail[data-v-3e891789]{margin-top:3px;font-size:11px;display:block}.verdict[data-v-3e891789]{border-radius:99px;padding:1px 7px;font-size:11.5px}.verdict.pass[data-v-3e891789]{color:var(--tone-success-dot);background:var(--tone-success-bg)}.verdict.fail[data-v-3e891789]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.live-hint[data-v-3e891789]{letter-spacing:0;color:var(--tone-info-dot);text-transform:none;margin-left:8px;font-size:11.5px;font-weight:400}.logs[data-v-3e891789]{max-height:260px;font-family:var(--font-mono);color:var(--ink-soft);background:var(--paper-deep);border:1px solid var(--divider-hair);white-space:pre-wrap;word-break:break-all;border-radius:8px;margin:0;padding:9px 11px;font-size:11px;line-height:1.55;overflow-y:auto}tr.best[data-v-3e891789]{background:color-mix(in srgb, var(--accent) 9%, transparent)}tr.best td[data-v-3e891789]:first-child{box-shadow:inset 3px 0 0 var(--accent)}.best-tag[data-v-3e891789]{color:var(--on-accent);background:var(--accent);border-radius:99px;margin-right:6px;padding:1px 7px;font-size:11.5px}.stage-pill[data-v-3e891789]{font-family:var(--font-mono);letter-spacing:.04em;border:1px solid var(--line-strong);border-radius:var(--radius-pill);color:var(--ink-soft);padding:3px 9px;font-size:11.5px;display:inline-block}.stage-pill.shadow[data-v-3e891789]{color:var(--tone-info-dot);border-color:color-mix(in srgb, var(--tone-info-dot) 45%, transparent)}.stage-pill.production[data-v-3e891789]{color:var(--tone-success-dot);background:var(--tone-success-bg);border-color:#0000}.stage-pill.retired[data-v-3e891789]{opacity:.55;border-style:dashed}.inp-sel[data-v-3e891789]{color:var(--ink);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:5px 10px;font-size:12px}.pc-body[data-v-3e891789]{margin-top:4px}.io-grid[data-v-3e891789]{color:var(--ink-soft);flex-wrap:wrap;gap:6px 14px;margin-bottom:10px;font-size:11.5px;display:flex}.io-item b[data-v-3e891789]{color:var(--ink);overflow-wrap:anywhere;font-weight:600}.pc-form[data-v-3e891789]{grid-template-columns:minmax(300px,3fr) minmax(220px,2fr);gap:12px 18px;display:grid}@media (width<=1100px){.pc-form[data-v-3e891789]{grid-template-columns:1fr}}.pc-field[data-v-3e891789]{color:var(--ink-soft);flex-direction:column;gap:5px;margin-top:8px;font-size:12px;display:flex}.pc-side[data-v-3e891789]{flex-direction:column;align-items:stretch;gap:8px;display:flex}.pc-side .ghost-btn[data-v-3e891789]{align-self:flex-start;margin-top:8px}.pc-side .pill-btn[data-v-3e891789]{margin-top:auto}.inp[data-v-3e891789]{font-family:var(--font-mono);color:var(--ink);background:var(--paper-deep);border:1px solid var(--line-strong);border-radius:var(--radius-chip);padding:6px 10px;font-size:12px}.inp.area[data-v-3e891789]{resize:vertical;line-height:1.5}.inp[data-v-3e891789]:focus{border-color:var(--accent);outline:none}.hint[data-v-3e891789]{margin:8px 0 0;font-size:11.5px;line-height:1.6}.modal-mask[data-v-3e891789]{z-index:60;background:color-mix(in srgb, var(--ink) 45%, transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);justify-content:center;align-items:flex-start;padding:8vh 16px 16px;display:flex;position:fixed;inset:0}.modal[data-v-3e891789]{background:var(--paper);border:1px solid var(--line-strong);border-radius:14px;width:min(760px,100%);max-height:84vh;padding:18px 22px 16px;overflow-y:auto;box-shadow:0 18px 48px #00000040}.m-title[data-v-3e891789]{margin:0 0 12px;font-size:16px;font-weight:600}.f-grid[data-v-3e891789]{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 14px;margin-bottom:10px;display:grid}@media (width<=720px){.f-grid[data-v-3e891789]{grid-template-columns:1fr}}.f[data-v-3e891789]{color:var(--ink-soft);flex-direction:column;gap:4px;font-size:12px;display:flex}.f.wide[data-v-3e891789]{grid-column:1/-1}.f em[data-v-3e891789]{color:var(--tone-danger-dot);margin-left:2px;font-style:normal}.sec-label[data-v-3e891789]{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin:12px 0 8px;font-size:11px;font-weight:600}.node-rows[data-v-3e891789]{flex-direction:column;gap:7px;margin-bottom:12px;display:flex}.node-row[data-v-3e891789]{align-items:center;gap:8px;display:flex}.node-row .grow[data-v-3e891789]{flex:auto}.node-row .sel[data-v-3e891789]{flex:0 0 220px}.m-err[data-v-3e891789]{color:var(--tone-danger-dot);margin:6px 0;font-size:12.5px}.m-actions[data-v-3e891789]{justify-content:flex-end;gap:10px;margin-top:12px;display:flex}.empty[data-v-3e891789]{color:var(--ink-faint);text-align:center;margin:6px 0;padding:18px 0;font-size:12.5px}.tbl-scroll[data-v-3e891789]{-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:auto}@media (width<=900px){.tbl-scroll[data-v-3e891789]{scrollbar-width:thin;overflow-x:auto}.tbl-datasets[data-v-3e891789]{min-width:720px}.tbl-jobs[data-v-3e891789]{min-width:860px}.tbl-exp[data-v-3e891789]{min-width:700px}.tbl-models[data-v-3e891789]{min-width:780px}.tbl td[data-v-3e891789],.tbl th[data-v-3e891789]{white-space:nowrap}.tbl tbody>tr>td[data-v-3e891789]:first-child,.tbl thead>tr>th[data-v-3e891789]:first-child{z-index:2;background:var(--paper-raised);box-shadow:1px 0 0 var(--line);position:sticky;left:0}.tbl thead>tr>th[data-v-3e891789]:first-child{z-index:3}.detail-row>td[data-v-3e891789]:first-child{box-shadow:none;background:var(--frost-bg);position:static}.inp[data-v-3e891789],.inp-sel[data-v-3e891789],.mini-btn[data-v-3e891789],.note-edit input[data-v-3e891789],.pill-btn[data-v-3e891789]{min-height:40px}.tbl .acts .mini-btn+.mini-btn[data-v-3e891789]{margin-left:8px}.note-cell[data-v-3e891789]{max-width:200px}.note-edit[data-v-3e891789]{flex-wrap:wrap}.zone[data-v-3e891789]{padding:12px 12px 14px}.f-grid[data-v-3e891789],.det-grid[data-v-3e891789]{grid-template-columns:1fr}.m-actions[data-v-3e891789],.mx-actions[data-v-3e891789]{flex-wrap:wrap}.modal[data-v-3e891789]{padding:16px}.node-row[data-v-3e891789]{flex-wrap:wrap}.node-row .sel[data-v-3e891789]{flex:100%}.modal-mask[data-v-3e891789]{padding:4vh 10px 12px}}@media (width<=640px){.zone-head[data-v-3e891789]{gap:8px}.zone-head h2[data-v-3e891789]{font-size:14px}.zone-actions[data-v-3e891789]{flex-wrap:wrap}.ov-card[data-v-3e891789]{padding:10px 12px}}
@@ -1 +1 @@
1
- {"id":"f4707884-7cf4-4a31-80d2-e3d72b73745f","timestamp":1789741900121}
1
+ {"id":"b5506ef0-f48e-4f14-a6c0-d65e505d0b09","timestamp":1789908352429}
@@ -0,0 +1 @@
1
+ {"id":"b5506ef0-f48e-4f14-a6c0-d65e505d0b09","timestamp":1789908352429,"prerendered":[]}
@@ -0,0 +1 @@
1
+ import{dt as e}from"./CSkxz2NX.js";import{t}from"./36oeS8_R.js";import{t as n}from"./D0ZBQrN_2.js";import{t as r}from"./BDmh31hl.js";var i=[{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:`熔体压力设定:反映挤出/泵送负荷,压力偏高提示阻力大或温度偏低,偏低可能是料位不足。调整需小幅步进。`}],a=[{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 头`}]}],o=[`#3aa0ff`,`#f4c542`,`#35e0a0`,`#41c8f4`,`#b58cff`,`#ff8a5c`],s=(e,t)=>r({base:`/api/workshop/dcw`,path:e,init:t,retries:(t?.method??`GET`).toUpperCase()===`GET`?2:0});function c(){let r=e([]),o=new Map,c=e({running:!0,nodesTotal:0,nodesOnline:0,writesTotal:0,writesFailed:0}),l=e(i.map(e=>({...e}))),u=e([]),d=e([]),f=e([]),p=e([]),m=e([]),h=e({}),g=e([]),_=e(a.map(e=>({kind:e.kind,label:e.label,status:e.status,configFields:e.configFields})));function v(e){let t=r.findIndex(t=>t.id===e.id);t>=0?r[t]=Object.assign(r[t],e):(r.push(e),o.set(e.id,r[r.length-1]))}function y(e){if(e.node){if(e.op===`removed`){let t=r.findIndex(t=>t.id===e.node.id);t>=0&&r.splice(t,1),o.delete(e.node.id);return}v(e.node)}}let b=0,x=null;function S(){b++,b===1&&(x=t().subscribe(C));let e=!1;return()=>{e||(e=!0,--b===0&&(x?.(),x=null))}}function C(e){if(e.type===`dcw.written`){let t=e.payload,n=o.get(t.nodeId);n&&(n.value=t.value,n.state=t.ok?`ok`:`error`,n.lastWriteAt=t.at,t.ok&&(n.lastAckAt=t.at)),f.unshift({id:`${t.nodeId}-${t.at}`,nodeId:t.nodeId,nodeName:n?.name??t.nodeId,param:``,eng:t.value,raw:t.raw,ok:t.ok,message:t.message,recipeRunId:t.recipeRunId,at:t.at}),f.length>60&&f.splice(60)}else if(e.type===`dcw.read`){let t=e.payload,n=o.get(t.nodeId);n&&(t.ok&&(n.readValue=t.value),n.lastReadAt=t.at,n.lastReadError=t.ok?null:t.message)}else if(e.type===`dcw.node.changed`)y(e.payload);else if(e.type===`dcw.controller`)Object.assign(c,e.payload);else if(e.type===`dcw.optimization.changed`){let t=e.payload.record,n=g.findIndex(e=>e.id===t.id);n>=0?g[n]=t:g.unshift(t),g.length>200&&(g.length=200)}}async function w(){try{let e=await s(``);r.splice(0,r.length,...e.nodes),o.clear();for(let e of r)o.set(e.id,e);Object.assign(c,e.controller),e.templates?.length&&l.splice(0,l.length,...e.templates.map(e=>({...e}))),e.drivers?.length&&_.splice(0,_.length,...e.drivers),u.splice(0,u.length,...e.recipes??[]),d.splice(0,d.length,...e.runs??[]),f.splice(0,f.length,...e.history??[]),p.splice(0,p.length,...e.products??[]),m.splice(0,m.length,...e.lines??[]);for(let e of Object.keys(h))Reflect.deleteProperty(h,e);for(let t of e.lineStates??[])h[t.lineId]=t;T.loaded=!0,T.error=``}catch(e){T.error=n(e)}}let T=e({nodes:r,controller:c,templates:l,recipes:u,runs:d,history:f,products:p,lines:m,lineStates:h,optimizations:g,driverCatalog:_,loaded:!1,error:``,ensureWsFeed:S,load:w,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 s(`/optimizations?${t.toString()}`);g.splice(0,g.length,...n.records)},fetchLedger:async e=>(await s(`/${e}/param-ledger`)).ledger,optimizationSeries:async(e,t)=>s(`/optimizations/${e}/series${t?`?windowMs=${t}`:``}`),judgeOptimization:async(e,t,n)=>{await s(`/optimizations/${e}/judge`,{method:`POST`,body:JSON.stringify({verdict:t,reason:n})})},rollbackOptimization:async e=>{await s(`/optimizations/${e}/rollback`,{method:`POST`,body:JSON.stringify({})})},rollbackNode:async(e,t)=>{await s(`/journal/node/${e}/rollback`,{method:`POST`,body:JSON.stringify({to:t})})},markGood:async(e,t)=>{await s(`/recipes/${e}/mark-good`,{method:`POST`,body:JSON.stringify({runId:t})})},rollbackRecipeGood:async e=>{await s(`/recipes/${e}/rollback-good`,{method:`POST`,body:JSON.stringify({})})},createFromTemplate:async(e,t)=>{let n=await s(``,{method:`POST`,body:JSON.stringify({templateRef:e,...t})});return v(n.node),n.node},patchNode:async(e,t)=>{await s(`/${e}`,{method:`PATCH`,body:JSON.stringify(t)})},removeNode:async e=>{await s(`/${e}`,{method:`DELETE`});let t=r.findIndex(t=>t.id===e);t>=0&&r.splice(t,1),o.delete(e)},bindNode:async(e,t)=>{v((await s(`/${e}/bind`,{method:`POST`,body:JSON.stringify({deviceId:t})})).node)},write:async(e,t)=>s(`/${e}/write`,{method:`POST`,body:JSON.stringify({value:t})}).then(e=>e.outcome),readNode:async e=>s(`/${e}/read`,{method:`POST`,body:JSON.stringify({})}).then(e=>e.read),testDriver:async(e,t)=>s(`/test-driver`,{method:`POST`,body:JSON.stringify({driver:e,driverConfig:t})}).then(e=>e.test),testNode:async e=>s(`/${e}/test`,{method:`POST`}).then(e=>e.test),startStop:async e=>{let t=await s(`/controller`,{method:`POST`,body:JSON.stringify({action:e})});Object.assign(c,t.controller)},createTemplate:async e=>{let t=await s(`/templates`,{method:`POST`,body:JSON.stringify(e)});return l.push(t.template),t.template},createRecipe:async e=>{let t=await s(`/recipes`,{method:`POST`,body:JSON.stringify(e)});return u.push(t.recipe),t.recipe},updateRecipe:async(e,t)=>{let n=await s(`/recipes/${e}`,{method:`PATCH`,body:JSON.stringify(t)}),r=u.findIndex(t=>t.id===e);return r>=0&&(u[r]=n.recipe),n.recipe},removeRecipe:async e=>{await s(`/recipes/${e}`,{method:`DELETE`});let t=u.findIndex(t=>t.id===e);t>=0&&u.splice(t,1)},applyRecipe:async e=>{let t=await s(`/recipes/${e}/apply`,{method:`POST`});return d.push(t.run),t.run},recipeVersions:async e=>(await s(`/recipes/${e}/versions`)).versions??[],revertRecipe:async(e,t)=>{let n=await s(`/recipes/${e}/revert`,{method:`POST`,body:JSON.stringify(t)}),r=u.findIndex(t=>t.id===e);return r>=0&&(u[r]=n.recipe),n.recipe},closeRun:async e=>{let t=await s(`/runs/${e}/close`,{method:`POST`}),n=d.findIndex(t=>t.id===e);return n>=0&&(d[n]=t.run),t.run},runData:e=>s(`/runs/${e}/data`),nodeById:e=>o.get(e)??r.find(t=>t.id===e),createProduct:async e=>{let t=await s(`/products`,{method:`POST`,body:JSON.stringify(e)});return p.push(t.product),t.product},updateProduct:async(e,t)=>s(`/products/${e}`,{method:`PATCH`,body:JSON.stringify(t)}).then(e=>(E(),e.product)),removeProduct:async e=>{await s(`/products/${e}`,{method:`DELETE`});let t=p.findIndex(t=>t.id===e);t>=0&&p.splice(t,1)},createLine:async e=>{let t=await s(`/lines`,{method:`POST`,body:JSON.stringify(e)});return m.push(t.line),t.line},updateLine:async(e,t)=>{let n=await s(`/lines/${e}`,{method:`PATCH`,body:JSON.stringify(t)}),r=m.findIndex(t=>t.id===e);r>=0&&(m[r]=n.line)},removeLine:async(e,t=!1)=>{await s(`/lines/${e}${t?`?purge=1`:``}`,{method:`DELETE`});let n=m.findIndex(t=>t.id===e);n>=0&&m.splice(n,1),Reflect.deleteProperty(h,e),await w()},startLine:async(e,t)=>{let n=await s(`/lines/${e}/start`,{method:`POST`,body:JSON.stringify({recipeId:t})});h[e]=n.line},stopLine:async e=>{let t=await s(`/lines/${e}/stop`,{method:`POST`});h[e]=t.line},lineStateOf:e=>h[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)),s(`/line/query?${t.toString()}`)}});async function E(){try{let e=await s(``);p.splice(0,p.length,...e.products??[]),u.splice(0,u.length,...e.recipes??[])}catch{}}return T}var l=`__dcwStream`;function u(){let e=globalThis;return e[l]||(e[l]=c()),e[l]}export{a as n,o as r,u as t};
@@ -0,0 +1 @@
1
+ .page[data-v-2c33b698]{padding:4px}.head[data-v-2c33b698]{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}h2[data-v-2c33b698]{margin:0 0 4px}.sub[data-v-2c33b698]{opacity:.55;margin:0;font-size:12px}.toolbar[data-v-2c33b698]{align-items:center;gap:12px;margin-bottom:12px;display:flex}.admin-note[data-v-2c33b698]{color:var(--ink-faint);align-items:center;gap:5px;font-size:11px;display:inline-flex}.grid[data-v-2c33b698]{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;display:grid}.card[data-v-2c33b698]{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-2c33b698]:hover{border-color:var(--line-strong)}.card-head[data-v-2c33b698]{align-items:center;gap:8px;display:flex}.name[data-v-2c33b698]{text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:15px;font-weight:600;overflow:hidden}.vis-tag[data-v-2c33b698]{margin-right:2px}.owner[data-v-2c33b698]{color:var(--ink-faint);font-size:11px}.desc[data-v-2c33b698]{color:var(--ink-soft);margin:0;font-size:12px}.member-line[data-v-2c33b698]{align-items:center;gap:6px;font-size:12px;display:flex}.lead-name[data-v-2c33b698]{font-weight:500}.count[data-v-2c33b698]{font-family:var(--font-mono);color:var(--ink-faint);font-size:11px}.scenario[data-v-2c33b698]{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-2c33b698]{align-items:center;gap:6px;margin-top:2px;display:flex}.ws[data-v-2c33b698]{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-2c33b698]{flex:auto}.card.placeholder[data-v-2c33b698]{opacity:.55;cursor:pointer;border-style:dashed;justify-content:center;align-items:center;min-height:160px;font-size:13px}.big[data-v-2c33b698]{font-size:28px}@media (width<=900px){.head[data-v-2c33b698]{flex-direction:column;align-items:stretch;gap:12px}.head>div[data-v-2c33b698]{min-width:0}.head h2[data-v-2c33b698]{font-size:21px;line-height:1.25}.head[data-v-2c33b698] .ant-space{flex-direction:column;align-items:stretch;gap:8px;width:100%;display:flex}.head[data-v-2c33b698] .ant-space-item{width:100%}.head[data-v-2c33b698] .ant-btn{width:100%;min-height:40px}.toolbar[data-v-2c33b698]{flex-wrap:wrap;gap:8px}.toolbar[data-v-2c33b698] .ant-segmented{flex:100%;min-width:0}.admin-note[data-v-2c33b698]{flex:100%;min-width:0;font-size:11.5px;line-height:1.5}.grid[data-v-2c33b698]{grid-template-columns:1fr}.card-head[data-v-2c33b698],.member-line[data-v-2c33b698],.card-foot[data-v-2c33b698]{flex-wrap:wrap}.ws[data-v-2c33b698]{max-width:100%}}@media (width<=640px){.page[data-v-2c33b698]{padding:0}.head h2[data-v-2c33b698]{font-size:19px}.sub[data-v-2c33b698]{font-size:11.5px;line-height:1.5}.scenario[data-v-2c33b698]{font-size:11.5px}}
@@ -0,0 +1 @@
1
+ .mono[data-v-4b6f87e1]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.dim[data-v-4b6f87e1]{opacity:.55}.ch[data-v-4b6f87e1]{color:var(--ink-faint);margin-top:2px;font-size:10px;display:block}.val[data-v-4b6f87e1]{font-size:13px}.val small[data-v-4b6f87e1]{color:var(--ink-faint);margin-left:3px}.val.stale[data-v-4b6f87e1]{opacity:.45}.val.val-alarm[data-v-4b6f87e1]{color:var(--tone-danger-dot);font-weight:700}.trend-cell[data-v-4b6f87e1]{width:128px}.trend[data-v-4b6f87e1]{width:120px;height:26px;display:block}.trend .trace[data-v-4b6f87e1]{fill:none;stroke:var(--tone-info-dot);stroke-width:1.4px}.trend .trace.alarm[data-v-4b6f87e1]{stroke:var(--tone-danger-dot)}.trend .trace-idle[data-v-4b6f87e1]{stroke:var(--ink-fainter);stroke-width:1px;stroke-dasharray:2 4;opacity:.55}.trend .lim[data-v-4b6f87e1]{stroke:color-mix(in srgb, var(--tone-warning-dot) 62%, transparent);stroke-width:1px;stroke-dasharray:3 3}.trend .lim.max[data-v-4b6f87e1]{stroke:color-mix(in srgb, var(--tone-danger-dot) 55%, transparent)}.st-pill[data-v-4b6f87e1]{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-4b6f87e1]{color:var(--tone-success-dot);background:var(--tone-success-bg)}.st-pill.warn[data-v-4b6f87e1]{color:var(--tone-warning-dot);background:var(--tone-warning-bg)}.st-pill.alarm[data-v-4b6f87e1]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}tr.row-recipe-alarm[data-v-4b6f87e1]{background:color-mix(in srgb, var(--tone-danger-dot,#ff6b6b) 8%, transparent)}tr.row-recipe-alarm td[data-v-4b6f87e1]:first-child{box-shadow:inset 3px 0 0 var(--tone-danger-dot,#ff6b6b)}.st-pill.offline[data-v-4b6f87e1],.st-pill.disabled[data-v-4b6f87e1],.st-pill.idle[data-v-4b6f87e1],.st-pill.unassigned[data-v-4b6f87e1]{color:var(--tone-neutral-dot);background:var(--tone-neutral-bg)}.drv-tag[data-v-4b6f87e1]{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-4b6f87e1]{opacity:.55;border-style:dashed}.console-link[data-v-4b6f87e1]{color:var(--accent);align-items:center;gap:5px;font-size:12.5px;display:inline-flex}.node-toggle[data-v-4b6f87e1]{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-4b6f87e1]:hover{border-color:var(--accent);background:var(--hover-tint)}.node-toggle.off[data-v-4b6f87e1]{color:var(--ink-soft);opacity:.8;border-style:dashed}.dev-binds[data-v-4b6f87e1]{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.dev-bind-chip[data-v-4b6f87e1]{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);align-items:center;gap:4px;padding:1px 7px;font-size:11px;display:inline-flex}.dev-unbind[data-v-4b6f87e1]{cursor:pointer;opacity:.55;font-size:10px}.dev-unbind[data-v-4b6f87e1]:hover{opacity:1;color:var(--tone-danger-dot)}.dev-add[data-v-4b6f87e1]{max-width:130px;font-size:11px}.line-sel[data-v-4b6f87e1]{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-4b6f87e1]:focus{border-color:var(--accent);outline:none}.run-pill[data-v-4b6f87e1]{color:var(--ink-faint);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-4b6f87e1]{opacity:.7;border:1.5px solid;border-radius:50%;width:6px;height:6px}.run-pill.na[data-v-4b6f87e1]{opacity:.75;border-style:dashed}.run-pill.on[data-v-4b6f87e1]{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-4b6f87e1]{background:var(--tone-success-dot);opacity:1;border-color:#0000}@media (width<=900px){.ch[data-v-4b6f87e1],.dev-add[data-v-4b6f87e1],.dev-bind-chip[data-v-4b6f87e1],.dev-unbind[data-v-4b6f87e1],.drv-tag[data-v-4b6f87e1],.node-meta small[data-v-4b6f87e1],.st-pill[data-v-4b6f87e1],small.mono[data-v-4b6f87e1]{font-size:11.5px}}@media (prefers-reduced-motion:no-preference){.run-pill.on .rp-dot[data-v-4b6f87e1]{animation:1.8s ease-in-out infinite rpPulse-4b6f87e1}}@keyframes rpPulse-4b6f87e1{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-4b6f87e1]{max-width:170px}.prod-cell b[data-v-4b6f87e1]{text-overflow:ellipsis;white-space:nowrap;font-weight:600;display:block;overflow:hidden}.prod-cell small[data-v-4b6f87e1]{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;font-size:10px;display:block;overflow:hidden}.page[data-v-4f34001a]{padding:4px}h1[data-v-4f34001a]{letter-spacing:-.015em;margin:2px 0 4px;font-size:30px;font-weight:400}.sub[data-v-4f34001a]{opacity:.6;margin:0;font-size:12.5px}.mono[data-v-4f34001a]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.dim[data-v-4f34001a]{opacity:.55}.badges[data-v-4f34001a]{gap:8px;display:flex}.badge[data-v-4f34001a]{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-4f34001a]{flex-direction:column;gap:11px;margin-bottom:14px;padding:12px 18px 11px;display:flex}.ctrl-row[data-v-4f34001a]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;display:flex}.ctrl-left[data-v-4f34001a]{flex-wrap:wrap;align-items:center;gap:14px;min-width:0;display:flex}.ctrl-left[data-v-4f34001a]>*,.ctrl-right[data-v-4f34001a]>*{flex:none}.aw-pill[data-v-4f34001a]{white-space:nowrap;flex:none}.mini-act[data-v-4f34001a],.mini-btn[data-v-4f34001a],.node-toggle[data-v-4f34001a],.pill-btn[data-v-4f34001a]{white-space:nowrap}.aw-pill.running[data-v-4f34001a]{background:var(--accent)}.cycle[data-v-4f34001a]{white-space:nowrap;color:var(--ink-faint);flex:none;align-items:center;gap:6px;font-size:12px;display:inline-flex}.cycle input[data-v-4f34001a]{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-4f34001a]{min-width:0;color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:8px;font-size:11.5px;display:flex}.ctrl-metrics>span[data-v-4f34001a]{white-space:nowrap}.ctrl-metrics .sep[data-v-4f34001a]{opacity:.4}.ctrl-metrics .warn[data-v-4f34001a]{color:var(--tone-warning-dot)}.line-strip[data-v-4f34001a]{border-top:1px solid var(--divider-hair);align-items:center;gap:12px;padding-top:10px;display:flex}.strip-label[data-v-4f34001a]{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);flex:none;align-items:center;gap:6px;font-size:10.5px;display:inline-flex}.strip-label small[data-v-4f34001a]{color:var(--ink-faint);font-size:10px}.strip-scroll[data-v-4f34001a]{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-4f34001a]::-webkit-scrollbar{height:4px}.strip-scroll[data-v-4f34001a]::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:2px}.strip-scroll[data-v-4f34001a]::-webkit-scrollbar-track{background:0 0}.line-pill[data-v-4f34001a]{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-4f34001a]{border:1.5px solid var(--lc,var(--ink-fainter));opacity:.55;border-radius:50%;width:7px;height:7px}.line-pill b[data-v-4f34001a]{font-weight:600}.line-pill small[data-v-4f34001a]{color:var(--ink-faint);font-size:10.5px}.line-pill[data-v-4f34001a]:hover{border-color:var(--lc,var(--accent));color:var(--ink)}.line-pill.on[data-v-4f34001a]{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-4f34001a]{background:var(--lc);opacity:1;border-color:#0000}.line-pill.on .lp-run[data-v-4f34001a]{color:color-mix(in srgb, var(--lc) 75%, var(--ink))}@media (prefers-reduced-motion:no-preference){.line-pill.on .lp-dot[data-v-4f34001a]{box-shadow:0 0 7px color-mix(in srgb, var(--lc) 75%, transparent);animation:1.8s ease-in-out infinite lpPulse-4f34001a}}@keyframes lpPulse-4f34001a{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-4f34001a]{overflow-x:auto}.vs-pad td[data-v-4f34001a]{border:0!important;padding:0!important}.nodes-table[data-v-4f34001a]{border-collapse:collapse;width:100%;font-size:12.5px}.nodes-table tbody tr[data-v-4f34001a]{content-visibility:auto;contain-intrinsic-size:auto 42px}.nodes-table[data-v-4f34001a] td,.nodes-table th[data-v-4f34001a]{text-align:left;border-bottom:1px solid var(--divider-hair);padding:9px 12px}.nodes-table th[data-v-4f34001a]{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[data-v-4f34001a] td b{margin-left:8px}.nodes-table[data-v-4f34001a] .right,.right[data-v-4f34001a]{text-align:right}.ops-panels[data-v-4f34001a]{grid-template-columns:minmax(320px,5fr) minmax(320px,7fr);gap:10px;margin:0 0 10px;display:grid}@media (width<=1100px){.ops-panels[data-v-4f34001a]{grid-template-columns:1fr}}.ops-panel[data-v-4f34001a]{background:var(--surface-glass);border:1px solid var(--glass-line);min-width:0;-webkit-backdrop-filter:var(--aurora-blur) saturate(1.15);backdrop-filter:var(--aurora-blur) saturate(1.15);border-radius:10px}.ops-panel.alarm-panel.live[data-v-4f34001a]{border-color:color-mix(in srgb, var(--tone-danger-dot) 40%, var(--glass-line))}.panel-head[data-v-4f34001a]{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-4f34001a]{color:var(--tone-danger-dot)}.panel-head .cnt[data-v-4f34001a]{color:var(--ink-faint);margin-left:auto;font-size:11px}.panel-head .cnt.hot[data-v-4f34001a]{color:var(--tone-danger-dot);font-weight:700}.panel-link[data-v-4f34001a]{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-4f34001a]{margin-left:12px}.panel-body[data-v-4f34001a]{flex-direction:column;gap:5px;max-height:168px;padding:8px 12px;display:flex;overflow-y:auto}.panel-empty[data-v-4f34001a]{color:var(--ink-faint);margin:4px 0;font-size:12px}.alarm-row[data-v-4f34001a]{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-4f34001a]{flex:none}.alarm-row b[data-v-4f34001a]{color:var(--ink)}.alarm-row .esc[data-v-4f34001a]{color:var(--tone-danger-dot)}.alarm-row .ack[data-v-4f34001a]{margin-left:auto}.evt-row[data-v-4f34001a]{border-radius:6px;align-items:center;gap:7px;padding:4px 6px;font-size:12px;display:flex}.evt-row[data-v-4f34001a]:hover{background:var(--frost-bg)}.evt-row .t[data-v-4f34001a]{flex:none;font-size:11px}.evt-row .txt[data-v-4f34001a]{min-width:0;color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.src-badge[data-v-4f34001a]{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-4f34001a]{color:var(--tone-info-dot);border-color:color-mix(in srgb, var(--tone-info-dot) 40%, transparent)}.src-badge.user[data-v-4f34001a]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 40%, transparent)}.src-badge.system[data-v-4f34001a]{color:var(--ink-faint)}.kind-chip[data-v-4f34001a]{color:var(--ink-soft);background:var(--frost-bg);border-radius:5px;flex:none;padding:1px 6px;font-size:10px}.kind-chip.alarm[data-v-4f34001a]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.kind-chip.write[data-v-4f34001a]{color:var(--tone-info-dot)}.kind-chip.rollback[data-v-4f34001a]{color:var(--tone-warning-dot)}.err[data-v-4f34001a]{color:var(--tone-danger-dot);margin-top:14px;font-size:13px}@media (prefers-reduced-motion:no-preference){.nodes-table tbody tr[data-v-4f34001a]:hover{background:var(--hover-tint)}}.infra-banner[data-v-4f34001a]{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-4f34001a]{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-4f34001a]{flex:auto;font-size:12.5px;line-height:1.5}.infra-banner .txt a[data-v-4f34001a]{color:var(--accent);text-decoration:underline}.infra-banner .txt b[data-v-4f34001a]{font-weight:600}.infra-banner .txt small[data-v-4f34001a]{opacity:.75;margin-left:8px;font-size:10.5px}.infra-banner .pill-btn[data-v-4f34001a]{flex:none}.alarm-bar[data-v-4f34001a]{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);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;padding:8px 14px;display:flex}.bar-label[data-v-4f34001a]{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-4f34001a]{animation:1.6s ease-in-out infinite bellShake-4f34001a}@media (prefers-reduced-motion:reduce){.bar-label .bell[data-v-4f34001a]{animation:none}}@keyframes bellShake-4f34001a{0%,80%,to{transform:rotate(0)}85%{transform:rotate(12deg)}90%{transform:rotate(-10deg)}95%{transform:rotate(6deg)}}.alarm-scroll[data-v-4f34001a]{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-4f34001a]{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-4f34001a]{font-weight:600}.alarm-item .dim[data-v-4f34001a]{opacity:.6}.alarm-item .esc[data-v-4f34001a]{color:var(--tone-warning-dot)}.alarm-item .ack[data-v-4f34001a]{color:var(--paper-raised);background:var(--tone-danger-dot);border-color:#0000;padding:2px 9px}.alarm-item .ack[data-v-4f34001a]:hover{opacity:.85;color:var(--paper-raised);border-color:#0000}.ctrl-right[data-v-4f34001a]{flex-wrap:wrap;align-items:center;gap:12px;min-width:0;display:flex}.add-btn[data-v-4f34001a]{white-space:nowrap;padding:8px 16px;font-size:13px}.modal-mask[data-v-4f34001a]{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-4f34001a]{background:var(--surface-glass-strong);width:640px;max-width:94vw;max-height:88vh;-webkit-backdrop-filter:var(--aurora-blur);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-4f34001a]{margin:0 0 14px;font-size:17px}.seg-row[data-v-4f34001a]{gap:8px;margin-bottom:14px;display:flex}.seg[data-v-4f34001a]{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-4f34001a]{color:var(--on-accent);background:var(--accent);border-color:var(--accent);font-weight:600}.f-grid[data-v-4f34001a]{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px;display:grid}.driver-form[data-v-4f34001a]{grid-template-columns:repeat(3,1fr)}.cal-form[data-v-4f34001a]{grid-template-columns:2fr 1fr;align-items:end}.f[data-v-4f34001a]{color:var(--ink-faint);flex-direction:column;gap:4px;font-size:11.5px;display:flex}.f em[data-v-4f34001a]{color:var(--tone-danger-dot);margin-left:3px;font-style:normal}.inp[data-v-4f34001a]{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-4f34001a]{color:var(--ink-faint);font-size:10px}.test-row[data-v-4f34001a]{align-items:center;gap:10px;margin:6px 0 4px;display:flex}.test-result[data-v-4f34001a]{font-family:var(--font-mono);font-size:11px}.test-result.ok[data-v-4f34001a]{color:var(--tone-success-dot)}.test-result.bad[data-v-4f34001a]{color:var(--tone-danger-dot)}.m-err[data-v-4f34001a]{color:var(--tone-danger-dot);margin:8px 0 0;font-size:12px}.m-actions[data-v-4f34001a]{justify-content:flex-end;gap:10px;margin-top:16px;display:flex}.aw-pill.outline[data-v-4f34001a]{color:var(--ink);background:var(--paper-raised);border-color:var(--line-strong)}.sec-label[data-v-4f34001a]{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin:14px 0 6px;font-size:11px;font-weight:600}.tpl-table[data-v-4f34001a]{border-collapse:collapse;width:100%;font-size:12.5px}.tpl-table td[data-v-4f34001a]{border-bottom:1px solid var(--divider-hair);padding:7px 8px}.tpl-table td b[data-v-4f34001a]{margin-right:8px}.tpl-table .range[data-v-4f34001a]{color:var(--ink-soft);font-size:11.5px}.tpl-table .empty[data-v-4f34001a]{color:var(--ink-faint);text-align:center;padding:14px 0;font-size:12px}.tpl-table .actions[data-v-4f34001a]{white-space:nowrap}.tbl-toolbar[data-v-4f34001a]{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-4f34001a]{flex-wrap:wrap;align-items:flex-end;gap:9px;display:flex}.flt[data-v-4f34001a]{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);flex-direction:column;gap:3px;font-size:10px;display:flex}.inp-sel[data-v-4f34001a]{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-4f34001a]:focus{border-color:var(--accent);outline:none}.clear-btn[data-v-4f34001a]{margin-bottom:1px}.flt-search[data-v-4f34001a]{width:168px;min-width:0}.flt-search[data-v-4f34001a]::placeholder{color:var(--ink-faint)}.count[data-v-4f34001a]{color:var(--ink-faint);padding-bottom:4px;font-size:11px}.opt-card[data-v-4f34001a]{padding:0}.opt-head[data-v-4f34001a]{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-4f34001a]{color:var(--tone-info-dot);font-size:16px}.opt-count[data-v-4f34001a]{color:var(--tone-info-dot);background:var(--tone-info-bg);border-radius:999px;padding:1px 8px;font-size:10.5px}.opt-chevron[data-v-4f34001a]{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-4f34001a]{transform:rotate(225deg)}.opt-body[data-v-4f34001a]{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-4f34001a]{visibility:visible;opacity:1;max-height:64vh;padding-bottom:14px;overflow-y:auto}.opt-filters[data-v-4f34001a]{align-items:center;gap:8px;display:flex}.opt-empty[data-v-4f34001a]{color:var(--ink-faint);font-size:11.5px}.opt-list[data-v-4f34001a]{flex-direction:column;gap:7px;margin:0;padding:0;list-style:none;display:flex}.opt-row[data-v-4f34001a]{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-4f34001a]{border-color:color-mix(in srgb, var(--tone-warning-dot) 36%, var(--glass-line))}.opt-row.rolled-back[data-v-4f34001a]{border-color:color-mix(in srgb, var(--tone-danger-dot) 30%, var(--glass-line))}.opt-line1[data-v-4f34001a]{align-items:center;gap:9px;min-width:0;display:flex}.opt-status[data-v-4f34001a]{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-4f34001a]{color:var(--tone-warning-dot);border-color:color-mix(in srgb, var(--tone-warning-dot) 45%, transparent)}.opt-status.judged-keep[data-v-4f34001a]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 45%, transparent)}.opt-status.rolled-back[data-v-4f34001a]{color:var(--tone-danger-dot);border-color:color-mix(in srgb, var(--tone-danger-dot) 45%, transparent)}.opt-node[data-v-4f34001a]{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.opt-params[data-v-4f34001a]{color:var(--tone-info-dot);flex:none;font-size:11px}.opt-time[data-v-4f34001a]{color:var(--ink-faint);flex:none;margin-left:auto;font-size:10px}.mini-act[data-v-4f34001a]{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-4f34001a]{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.mini-act[data-v-4f34001a]:disabled{opacity:.5;cursor:default}.opt-line2[data-v-4f34001a]{color:var(--ink-faint);flex-wrap:wrap;gap:8px;font-size:10.5px;display:flex}.opt-judge.keep[data-v-4f34001a],.opt-judge.rollback[data-v-4f34001a],.opt-judge.uncertain[data-v-4f34001a]{color:var(--ink-soft)}.opt-judge b[data-v-4f34001a]{font-weight:600}.opt-open-hint[data-v-4f34001a]{color:var(--tone-warning-dot)}.opt-agg[data-v-4f34001a]{color:var(--ink-faint)}.opt-series[data-v-4f34001a]{flex-wrap:wrap;gap:10px;padding-top:4px;display:flex}.opt-ch[data-v-4f34001a]{flex:180px;align-items:center;gap:8px;min-width:160px;display:flex}.opt-spark[data-v-4f34001a]{width:120px;height:30px}.opt-spark polyline[data-v-4f34001a]{fill:none;stroke:var(--tone-info-dot);stroke-width:1.5px}.badge[data-v-4f34001a],.evt-row .t[data-v-4f34001a],.flt[data-v-4f34001a],.hint[data-v-4f34001a],.infra-banner .txt small[data-v-4f34001a],.kind-chip[data-v-4f34001a],.line-pill small[data-v-4f34001a],.mini-act[data-v-4f34001a],.opt-count[data-v-4f34001a],.opt-line2[data-v-4f34001a],.opt-status[data-v-4f34001a],.opt-time[data-v-4f34001a],.sec-label[data-v-4f34001a],.src-badge[data-v-4f34001a],.strip-label[data-v-4f34001a],.strip-label small[data-v-4f34001a]{font-size:11.5px}.sub[data-v-4f34001a]{font-size:13px}.alarm-item small[data-v-4f34001a],.alarm-row small[data-v-4f34001a]{font-size:11.5px}@media (width<=900px){.page small[data-v-4f34001a],.page small.mono[data-v-4f34001a],.page small.mono b[data-v-4f34001a]{font-size:11.5px}.alarm-item[data-v-4f34001a]{padding:6px 10px}.alarm-item .ack[data-v-4f34001a],.mini-btn.ack[data-v-4f34001a]{white-space:nowrap;min-height:32px;padding:4px 12px}.alarm-row[data-v-4f34001a]{flex-wrap:wrap}.flt[data-v-4f34001a],.hint[data-v-4f34001a],.sec-label[data-v-4f34001a]{font-size:11.5px}.inp-sel[data-v-4f34001a]{font-size:12.5px}.badge[data-v-4f34001a],.line-pill small[data-v-4f34001a],.strip-label[data-v-4f34001a]{font-size:11.5px}.ctrl-metrics[data-v-4f34001a]{font-size:12px}.evt-row[data-v-4f34001a]{font-size:12.5px}.evt-row .t[data-v-4f34001a],.kind-chip[data-v-4f34001a],.src-badge[data-v-4f34001a]{font-size:11.5px}.panel-head[data-v-4f34001a]{font-size:13px}.alarm-item[data-v-4f34001a],.alarm-item small[data-v-4f34001a],.alarm-row small[data-v-4f34001a],.clear-btn[data-v-4f34001a],.mini-act[data-v-4f34001a],.opt-count[data-v-4f34001a],.opt-line2[data-v-4f34001a],.opt-status[data-v-4f34001a],.opt-time[data-v-4f34001a],.strip-label small[data-v-4f34001a]{font-size:11.5px}.opt-empty[data-v-4f34001a],.panel-empty[data-v-4f34001a],.tpl-table .range[data-v-4f34001a]{font-size:12px}.infra-banner .txt small[data-v-4f34001a]{font-size:11.5px}.m-title[data-v-4f34001a]{font-size:16px}.sub[data-v-4f34001a]{font-size:13px}}@media (width<=700px){.ctrl-card[data-v-4f34001a]{padding:12px 14px 11px}.ctrl-row[data-v-4f34001a]{flex-direction:column;align-items:stretch;gap:12px}.ctrl-left[data-v-4f34001a]{gap:10px}.ctrl-left>.aw-pill[data-v-4f34001a]{flex:100%}.ctrl-left>.cycle[data-v-4f34001a]{flex:calc(50% - 5px);justify-content:space-between}.cycle input[data-v-4f34001a]{width:62px}.ctrl-right[data-v-4f34001a]{gap:10px}.ctrl-metrics[data-v-4f34001a]{flex:100%}.ctrl-right>.add-btn[data-v-4f34001a]{flex:calc(50% - 5px)}.alarm-bar[data-v-4f34001a]{flex-direction:column;align-items:stretch;gap:8px;padding:10px 12px}.bar-label[data-v-4f34001a]{justify-content:flex-start}.alarm-scroll[data-v-4f34001a]{width:100%;padding-bottom:3px}.alarm-item[data-v-4f34001a]{max-width:100%}.tbl-toolbar[data-v-4f34001a]{flex-direction:column;align-items:stretch;gap:8px;padding:11px 12px}.filters[data-v-4f34001a]{grid-template-columns:1fr 1fr;gap:8px 10px;display:grid}.filters>.flt[data-v-4f34001a]{min-width:0}.inp-sel[data-v-4f34001a]{width:100%;min-width:0}.flt-search[data-v-4f34001a]{width:100%}.clear-btn[data-v-4f34001a]{grid-column:1/-1;min-height:34px}.count[data-v-4f34001a]{padding-bottom:0}.opt-filters[data-v-4f34001a]{grid-template-columns:1fr 1fr;gap:8px;display:grid}.opt-filters>.mini-act[data-v-4f34001a]{grid-column:1/-1;min-height:34px}.opt-line1[data-v-4f34001a]{flex-wrap:wrap}.opt-node[data-v-4f34001a]{white-space:normal;flex:100%;overflow:visible}.opt-time[data-v-4f34001a]{margin-left:0}.opt-ch[data-v-4f34001a]{flex:100%}.opt-spark[data-v-4f34001a]{flex:auto;width:auto;min-width:96px}.nodes-table[data-v-4f34001a] td,.nodes-table th[data-v-4f34001a]{padding:7px 8px}.table-card[data-v-4f34001a]{-webkit-overflow-scrolling:touch}.opt-body.open[data-v-4f34001a]{max-height:70vh}.evt-row[data-v-4f34001a]{flex-wrap:wrap}.evt-row .txt[data-v-4f34001a]{white-space:normal;flex:100%;overflow:visible}}
@@ -0,0 +1 @@
1
+ .page[data-v-13f2a5a8]{flex-direction:column;gap:14px;display:flex}.badges[data-v-13f2a5a8]{gap:8px;display:flex}.badge[data-v-13f2a5a8]{color:var(--ink-faint);background:var(--glass-bg);border:1px solid var(--glass-line);-webkit-backdrop-filter:var(--frost-blur);backdrop-filter:var(--frost-blur);border-radius:999px;padding:3px 10px;font-size:11.5px}.warn-badge[data-v-13f2a5a8]{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-13f2a5a8]{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-13f2a5a8]:hover{border-color:color-mix(in srgb, var(--tone-info-dot) 60%, transparent)}.fleet-filter[data-v-13f2a5a8]{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;display:flex}.fleet-filter .aw-seg button[data-v-13f2a5a8]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:11.5px}.fleet-search[data-v-13f2a5a8]{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-13f2a5a8]:focus{border-color:var(--tone-success-dot);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.line-grid[data-v-13f2a5a8]{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;display:grid}.line-card[data-v-13f2a5a8]{text-align:left;background:var(--surface-glass);-webkit-backdrop-filter:var(--aurora-blur);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-13f2a5a8]: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-13f2a5a8]: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-13f2a5a8]{background:var(--frost-bg)}.line-card.idle .lc-dot[data-v-13f2a5a8]{box-shadow:none;opacity:.72}.line-card.idle .lc-name[data-v-13f2a5a8]{color:var(--ink-faint)}.lc-head[data-v-13f2a5a8]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.lc-dot[data-v-13f2a5a8]{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-13f2a5a8]{min-width:0;color:var(--ink);overflow-wrap:anywhere;flex:auto;font-size:14.5px}.lc-state[data-v-13f2a5a8]{font-family:var(--font-mono);color:var(--ink-faint);flex:none;margin-left:auto;font-size:11.5px}.lc-state.on[data-v-13f2a5a8]{color:var(--tone-success-dot)}.lc-act[data-v-13f2a5a8]{width:22px;height:22px;color:var(--ink-faint);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-13f2a5a8],.line-card:hover .lc-act[data-v-13f2a5a8]{opacity:1}.lc-act[data-v-13f2a5a8]:hover{color:var(--tone-info-dot);background:var(--tone-info-bg)}.lc-act.danger[data-v-13f2a5a8]:hover{color:var(--tone-danger-dot);background:var(--tone-danger-bg)}.lc-act[data-v-13f2a5a8]:active{transform:scale(.9)}.lc-run[data-v-13f2a5a8]{color:var(--tone-info-dot);font-size:11.5px}.lc-run.dim[data-v-13f2a5a8]{color:var(--ink-faint)}.lc-run.dim.ph[data-v-13f2a5a8]{opacity:.75}.lc-stats[data-v-13f2a5a8]{color:var(--ink-faint);flex-wrap:wrap;gap:6px 14px;font-size:11.5px;display:flex}.lc-stats b[data-v-13f2a5a8]{color:var(--ink);font-weight:600}.lc-ctl[data-v-13f2a5a8]{gap:8px;display:flex}.lc-ctl .inp[data-v-13f2a5a8]{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-13f2a5a8]:focus{border-color:var(--tone-success-dot);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.lc-ctl .pill-btn[data-v-13f2a5a8]{flex:none}.lc-manage[data-v-13f2a5a8]{color:var(--tone-info-dot);font-size:11.5px;font-weight:600;text-decoration:none}.lc-manage[data-v-13f2a5a8]:hover{text-decoration:underline}.new-card[data-v-13f2a5a8]{color:var(--ink-faint);border:1px dashed var(--line-strong);box-shadow:none;-webkit-backdrop-filter:none;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-13f2a5a8]:hover{color:var(--tone-success-dot);border-color:var(--tone-success-dot);transform:none}.new-card small[data-v-13f2a5a8]{color:var(--ink-faint);font-size:11.5px;font-weight:400}.banner[data-v-13f2a5a8]{border-radius:10px;padding:8px 12px;font-size:12px}.banner.bad[data-v-13f2a5a8]{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-13f2a5a8]{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-13f2a5a8]{transition:opacity .18s cubic-bezier(.22,1,.36,1)}.modal-leave-active[data-v-13f2a5a8]{transition:opacity .13s}.modal-enter-from[data-v-13f2a5a8],.modal-leave-to[data-v-13f2a5a8]{opacity:0}.modal-enter-active .modal[data-v-13f2a5a8]{transition:transform .2s cubic-bezier(.22,1,.36,1)}.modal-enter-from .modal[data-v-13f2a5a8]{transform:translateY(8px)scale(.96)}.modal[data-v-13f2a5a8]{background:var(--surface-glass-strong);width:min(440px,100vw - 40px);max-height:82vh;-webkit-backdrop-filter:var(--aurora-blur);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-13f2a5a8]{width:min(640px,100vw - 40px)}.m-title[data-v-13f2a5a8]{color:var(--ink);align-items:baseline;gap:10px;font-size:15px;display:flex}.m-title.danger-title[data-v-13f2a5a8]{color:var(--tone-danger-dot);align-items:center}.f[data-v-13f2a5a8]{color:var(--ink-faint);flex-direction:column;gap:5px;font-size:11px;display:flex}.f em[data-v-13f2a5a8]{color:var(--tone-danger-dot);font-style:normal}.f .inp[data-v-13f2a5a8]{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-13f2a5a8]:focus{border-color:var(--tone-success-dot);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.color-row[data-v-13f2a5a8]{align-items:center;gap:7px;display:flex}.color-dot[data-v-13f2a5a8]{cursor:pointer;border:2px solid #0000;border-radius:6px;width:20px;height:20px}.color-dot.on[data-v-13f2a5a8]{border-color:var(--ink);box-shadow:0 0 10px}.m-actions[data-v-13f2a5a8]{justify-content:flex-end;gap:8px;display:flex}.m-err[data-v-13f2a5a8]{color:var(--tone-danger-dot);font-size:11px}.dim[data-v-13f2a5a8]{color:var(--ink-faint)}.sec-label[data-v-13f2a5a8]{color:var(--ink-faint);letter-spacing:.14em;font-size:11.5px;font-weight:700}.del-summary[data-v-13f2a5a8]{color:var(--ink-soft);font-size:12px;line-height:1.6}.del-purge[data-v-13f2a5a8]{color:var(--ink);cursor:pointer;align-items:center;gap:8px;font-size:12px;display:flex}.del-purge input[data-v-13f2a5a8]{width:14px;height:14px;accent-color:var(--tone-danger-dot)}.tpl-hint[data-v-13f2a5a8]{font-size:11px}.tpl-list[data-v-13f2a5a8]{flex-direction:column;gap:6px;display:flex}.tpl-row[data-v-13f2a5a8]{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-13f2a5a8]{flex:1}.tpl-tag[data-v-13f2a5a8]{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:11.5px}.tpl-tag.builtin[data-v-13f2a5a8]{color:var(--ink-faint);border-color:var(--line-strong)}.tpl-form[data-v-13f2a5a8]{grid-template-columns:1fr 1fr;gap:10px;display:grid}.tpl-sem[data-v-13f2a5a8]{color:var(--ink-faint);flex:1}textarea.inp[data-v-13f2a5a8]{resize:vertical;height:auto;padding:6px 9px;font-size:11.5px}@media (width<=900px){.badge.tpl-btn[data-v-13f2a5a8],.fleet-filter .aw-seg button[data-v-13f2a5a8],.fleet-search[data-v-13f2a5a8],.lc-ctl .inp[data-v-13f2a5a8],.line-card .pill-btn[data-v-13f2a5a8],.m-actions .mini-btn[data-v-13f2a5a8],.m-actions .pill-btn[data-v-13f2a5a8],.tpl-row .mini-btn[data-v-13f2a5a8]{min-height:40px}.lc-act[data-v-13f2a5a8]{opacity:1;width:40px;height:40px;font-size:16px}.lc-ctl[data-v-13f2a5a8]{flex-wrap:wrap}.lc-ctl .inp[data-v-13f2a5a8]{flex:150px}.lc-ctl .pill-btn[data-v-13f2a5a8]{flex:auto}.lc-manage[data-v-13f2a5a8]{align-items:center;min-height:40px;display:inline-flex}.color-row[data-v-13f2a5a8]{flex-wrap:wrap}.color-dot[data-v-13f2a5a8]{width:40px;height:40px}.del-purge input[data-v-13f2a5a8]{width:20px;height:20px}.modal[data-v-13f2a5a8]{width:min(440px,100vw - 20px);padding:14px}.modal.wide[data-v-13f2a5a8]{width:min(640px,100vw - 20px)}.tpl-form[data-v-13f2a5a8]{grid-template-columns:1fr}.tpl-row[data-v-13f2a5a8],.m-actions[data-v-13f2a5a8]{flex-wrap:wrap}.m-actions[data-v-13f2a5a8]>*{flex:auto}.fleet-filter[data-v-13f2a5a8]{gap:10px}.fleet-search[data-v-13f2a5a8]{flex:100%;width:100%;margin-left:0}}@media (width<=640px){.line-grid[data-v-13f2a5a8]{grid-template-columns:1fr}.line-card[data-v-13f2a5a8]{padding:12px}}
@@ -1 +1 @@
1
- .app-sider[data-v-a91ac3dd]{background:var(--mat-chrome-bg);height:100vh;-webkit-backdrop-filter:var(--vibrancy-chrome);backdrop-filter:var(--vibrancy-chrome);border-right:1px solid var(--glass-line);box-shadow:var(--glass-specular);z-index:20;position:sticky;top:0;overflow:hidden auto}.app-sider[data-v-a91ac3dd]::-webkit-scrollbar{width:0}.logo[data-v-a91ac3dd]{border-bottom:1px solid var(--line);align-items:center;gap:12px;height:58px;padding:0 16px;display:flex;overflow:hidden}.logo-mark[data-v-a91ac3dd]{filter:drop-shadow(0 0 6px #35e0a042);flex:none;justify-content:center;align-items:center;width:32px;height:36px;display:flex}.logo-text[data-v-a91ac3dd]{white-space:nowrap;flex-direction:column;line-height:1.25;display:flex}.logo-title[data-v-a91ac3dd]{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink);font-size:13px;font-weight:600}.logo-sub[data-v-a91ac3dd]{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--sider-ink-faint);font-size:9.5px}.app-menu[data-v-a91ac3dd]{flex-direction:column;gap:14px;padding:16px 10px 0;display:flex}.menu-group[data-v-a91ac3dd]{flex-direction:column;gap:1px;display:flex}.menu-group-label[data-v-a91ac3dd]{align-items:center;gap:8px;height:22px;margin-bottom:3px;padding:0 10px;display:flex}.menu-group-text[data-v-a91ac3dd]{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--sider-ink-faint);flex:none;font-size:9.5px;font-weight:600}.menu-group-rule[data-v-a91ac3dd]{background:linear-gradient(90deg, var(--divider-hair), transparent);flex:auto;height:1px}.menu-group-sep[data-v-a91ac3dd]{background:var(--line-strong);width:18px;height:1px;margin:6px 0 6px 13px}.menu-item[data-v-a91ac3dd]{width:100%;min-height:34px;font-family:var(--font-body);color:var(--sider-ink);text-align:left;cursor:pointer;border-radius:var(--radius-panel-sm);transition:background-color var(--transition-fast), color var(--transition-fast), padding-left var(--transition-fast), transform var(--transition-fast);background:0 0;border:0;align-items:center;padding:0 10px;font-size:13px;font-weight:500;display:flex;position:relative}@media (hover:hover) and (pointer:fine){.menu-item[data-v-a91ac3dd]:hover{color:var(--ink);background:var(--paper-deep);padding-left:13px}}.menu-item[data-v-a91ac3dd]:active{transform:scale(.985)}.menu-item.active[data-v-a91ac3dd]{color:var(--accent-strong);background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent);font-weight:600}.menu-item.active[data-v-a91ac3dd]:hover{background:var(--tone-success-bg);padding-left:10px}.menu-icon[data-v-a91ac3dd]{flex:0 0 20px;font-size:16px}.menu-item .menu-icon[data-v-a91ac3dd]{color:var(--sider-ink-faint);transition:color var(--transition-fast)}.menu-item:hover .menu-icon[data-v-a91ac3dd]{color:var(--ink)}.menu-item.active .menu-icon[data-v-a91ac3dd]{color:var(--accent-strong)}.menu-label[data-v-a91ac3dd]{white-space:nowrap;text-overflow:ellipsis;transition:opacity var(--transition-fast);padding-left:10px;overflow:hidden}.sider-footer[data-v-a91ac3dd]{background:linear-gradient(180deg, transparent, var(--frost-bg) 42%);width:100%;padding:0 18px 18px;position:absolute;bottom:0;left:0}.footer-rule[data-v-a91ac3dd]{background:repeating-linear-gradient(90deg, var(--tick-c-fine) 0 1px, transparent 1px 9px), var(--divider-hair);opacity:.9;height:1px;margin-bottom:12px}.footer-line[data-v-a91ac3dd]{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-a91ac3dd]{color:var(--ink-faint)}.slide-fade-enter-active[data-v-a91ac3dd],.slide-fade-leave-active[data-v-a91ac3dd]{transition:opacity .2s cubic-bezier(.22,1,.36,1),transform .2s cubic-bezier(.22,1,.36,1)}.slide-fade-enter-from[data-v-a91ac3dd],.slide-fade-leave-to[data-v-a91ac3dd]{opacity:0;transform:translate(-8px)}.nav-scrim[data-v-a91ac3dd]{z-index:1100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#060c1494;animation:.2s both nav-scrim-in-a91ac3dd;position:fixed;inset:0}@keyframes nav-scrim-in-a91ac3dd{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.nav-scrim[data-v-a91ac3dd]{animation:none}}.app-header[data-v-a6ff3f55]{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-a6ff3f55]{z-index:30;background:var(--mat-chrome-bg);-webkit-backdrop-filter:var(--vibrancy-chrome);backdrop-filter:var(--vibrancy-chrome);border-bottom:1px solid var(--glass-line);box-shadow:var(--glass-specular);position:sticky;top:0}.header-left[data-v-a6ff3f55],.header-right[data-v-a6ff3f55]{align-items:center;gap:10px;min-width:0;display:flex}.rail-mark[data-v-a6ff3f55]{color:var(--ink-faint);flex:none;font-size:15px}.trail[data-v-a6ff3f55]{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-a6ff3f55]::-webkit-scrollbar{display:none}.trail-row[data-v-a6ff3f55]{white-space:nowrap;align-items:center;gap:0;padding:3px 4px;display:flex}.trail-link[data-v-a6ff3f55]{background:var(--line-strong);flex:none;width:14px;height:1px}.trail-node[data-v-a6ff3f55]{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-a6ff3f55]:hover{color:var(--ink);background:var(--paper-tint);border-color:var(--line-strong)}.trail-node[data-v-a6ff3f55]:active{transform:scale(.98)}.trail-node[data-v-a6ff3f55]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.trail-node.active[data-v-a6ff3f55]{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}.node-icon[data-v-a6ff3f55]{font-size:13px}.node-title[data-v-a6ff3f55]{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-a6ff3f55]{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-a6ff3f55],.trail-node:hover .node-close[data-v-a6ff3f55]{opacity:1;transform:none}.node-close[data-v-a6ff3f55]:hover{color:var(--ink);background:var(--hover-tint)}.node-close[data-v-a6ff3f55]:active{transform:scale(.9)}.trail-node.active .node-close[data-v-a6ff3f55]{color:color-mix(in srgb, var(--on-accent) 85%, transparent)}.trail-node.active .node-close[data-v-a6ff3f55]:hover{color:var(--on-accent);background:color-mix(in srgb, var(--on-accent) 18%, transparent)}.node-close[data-v-a6ff3f55]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.stamp-enter-active[data-v-a6ff3f55]{transition:opacity .22s var(--ease-out-quart), transform .22s var(--ease-out-quart)}.stamp-enter-from[data-v-a6ff3f55]{opacity:0;transform:translateY(4px)}.stamp-leave-active[data-v-a6ff3f55]{transition:opacity .14s;position:absolute}.stamp-leave-to[data-v-a6ff3f55]{opacity:0}.stamp-move[data-v-a6ff3f55]{transition:transform .22s}.plotter-line[data-v-a6ff3f55]{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-a6ff3f55]{animation:.6s cubic-bezier(.3,.8,.4,1) forwards plot-sweep-a6ff3f55}@keyframes plot-sweep-a6ff3f55{0%{opacity:.9;transform:scaleX(0)}70%{opacity:.9}to{opacity:0;transform:scaleX(1)}}.collapse-btn[data-v-a6ff3f55],.icon-btn[data-v-a6ff3f55]{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-a6ff3f55]:hover,.icon-btn[data-v-a6ff3f55]:hover{color:var(--ink);background:var(--paper-deep)}.collapse-btn[data-v-a6ff3f55]:active,.icon-btn[data-v-a6ff3f55]:active{transform:scale(.94)}.lang-select[data-v-a6ff3f55]{width:118px}.lang-select[data-v-a6ff3f55] .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-a6ff3f55] .ant-select-arrow{color:var(--app-text-secondary,var(--ink-faint))}.user-chip[data-v-a6ff3f55]{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-a6ff3f55]:hover{border-color:var(--line);background:var(--hover-tint)}.user-initial[data-v-a6ff3f55]{width:28px;height:28px;font-size:12px}.user-meta[data-v-a6ff3f55]{flex-direction:column;line-height:1.15;display:flex}.user-name[data-v-a6ff3f55]{color:var(--app-text,var(--ink));letter-spacing:.01em;font-size:12.5px;font-weight:600}.user-role[data-v-a6ff3f55]{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--app-text-secondary,var(--ink-faint));font-size:9.5px}.mobile-title[data-v-a6ff3f55]{min-width:0;color:var(--app-text,var(--ink));text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;display:none;overflow:hidden}@media (width<=899px){.rail-mark[data-v-a6ff3f55],.trail[data-v-a6ff3f55]{display:none}.mobile-title[data-v-a6ff3f55]{margin-left:2px;display:block}.app-header[data-v-a6ff3f55]{padding:0 12px 0 8px}}@media (width<=639px){.hdr-fullscreen[data-v-a6ff3f55]{display:none}.user-chip[data-v-a6ff3f55]{height:38px;padding:0 6px}.user-meta[data-v-a6ff3f55]{display:none}.lang-select[data-v-a6ff3f55]{width:76px}.lang-select[data-v-a6ff3f55] .ant-select-selection-item{padding-inline-end:16px;font-size:12.5px}.header-left[data-v-a6ff3f55],.header-right[data-v-a6ff3f55]{gap:4px}}.hidden[data-v-a6ff3f55]{display:none}.ws-dot[data-v-a6ff3f55]{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-a6ff3f55]{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-a6ff3f55}.ws-dot.down[data-v-a6ff3f55]{background:var(--tone-danger-dot);box-shadow:0 0 6px color-mix(in srgb, var(--tone-danger-dot) 55%, transparent)}@keyframes ws-pulse-a6ff3f55{50%{opacity:.45}}.hitl-bell[data-v-a6ff3f55]{color:var(--tone-warning-dot,#d4a017);position:relative}.hitl-count[data-v-a6ff3f55]{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-a6ff3f55]{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-a6ff3f55]{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-a6ff3f55]{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-a6ff3f55]:hover{background:var(--paper-deep);border-color:var(--line)}.hitl-item-top[data-v-a6ff3f55]{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.hitl-item-agent[data-v-a6ff3f55]{color:var(--ink);font-size:12.5px;font-weight:600}.hitl-item-kind[data-v-a6ff3f55]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--tone-warning-dot,#d4a017);font-size:9.5px}.hitl-item-title[data-v-a6ff3f55]{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.hitl-item-actions[data-v-a6ff3f55]{gap:6px;margin-top:6px;display:flex}@media (prefers-reduced-motion:reduce){.plotter-line.run[data-v-a6ff3f55]{opacity:0;animation:none}.stamp-enter-active[data-v-a6ff3f55],.stamp-leave-active[data-v-a6ff3f55],.stamp-move[data-v-a6ff3f55]{transition:none}}.app-layout[data-v-e4abc244]{background:0 0;flex-direction:row;min-height:100vh;display:flex}.app-main[data-v-e4abc244]{flex-direction:column;flex:auto;min-width:0;min-height:100vh;display:flex;position:relative}.app-content[data-v-e4abc244]{flex:1;margin:12px 16px 0;padding:2px}.app-footer[data-v-e4abc244]{background:var(--mat-chrome-bg);-webkit-backdrop-filter:var(--vibrancy-chrome);backdrop-filter:var(--vibrancy-chrome);border-top:1px solid var(--glass-line);box-shadow:var(--glass-specular);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;position:relative}.app-footer .sep[data-v-e4abc244]{color:var(--ink-faint)}.footer-title[data-v-e4abc244]{font-size:13px}.footer-corner[data-v-e4abc244]{height:100%;color:var(--ink-faint);letter-spacing:.06em;align-items:center;gap:8px;font-size:10px;display:inline-flex;position:absolute;bottom:0;right:24px}.footer-corner .footer-link[data-v-e4abc244]{color:inherit;border-bottom:1px solid #0000;text-decoration:none;transition:color .15s,border-color .15s}.footer-corner .footer-link[data-v-e4abc244]:hover{color:inherit;opacity:.85;border-bottom-color:currentColor}
1
+ .app-sider[data-v-a91ac3dd]{background:var(--mat-chrome-bg);height:100vh;-webkit-backdrop-filter:var(--vibrancy-chrome);backdrop-filter:var(--vibrancy-chrome);border-right:1px solid var(--glass-line);box-shadow:var(--glass-specular);z-index:20;position:sticky;top:0;overflow:hidden auto}.app-sider[data-v-a91ac3dd]::-webkit-scrollbar{width:0}.logo[data-v-a91ac3dd]{border-bottom:1px solid var(--line);align-items:center;gap:12px;height:58px;padding:0 16px;display:flex;overflow:hidden}.logo-mark[data-v-a91ac3dd]{filter:drop-shadow(0 0 6px #35e0a042);flex:none;justify-content:center;align-items:center;width:32px;height:36px;display:flex}.logo-text[data-v-a91ac3dd]{white-space:nowrap;flex-direction:column;line-height:1.25;display:flex}.logo-title[data-v-a91ac3dd]{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink);font-size:13px;font-weight:600}.logo-sub[data-v-a91ac3dd]{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--sider-ink-faint);font-size:9.5px}.app-menu[data-v-a91ac3dd]{flex-direction:column;gap:14px;padding:16px 10px 0;display:flex}.menu-group[data-v-a91ac3dd]{flex-direction:column;gap:1px;display:flex}.menu-group-label[data-v-a91ac3dd]{align-items:center;gap:8px;height:22px;margin-bottom:3px;padding:0 10px;display:flex}.menu-group-text[data-v-a91ac3dd]{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--sider-ink-faint);flex:none;font-size:9.5px;font-weight:600}.menu-group-rule[data-v-a91ac3dd]{background:linear-gradient(90deg, var(--divider-hair), transparent);flex:auto;height:1px}.menu-group-sep[data-v-a91ac3dd]{background:var(--line-strong);width:18px;height:1px;margin:6px 0 6px 13px}.menu-item[data-v-a91ac3dd]{width:100%;min-height:34px;font-family:var(--font-body);color:var(--sider-ink);text-align:left;cursor:pointer;border-radius:var(--radius-panel-sm);transition:background-color var(--transition-fast), color var(--transition-fast), padding-left var(--transition-fast), transform var(--transition-fast);background:0 0;border:0;align-items:center;padding:0 10px;font-size:13px;font-weight:500;display:flex;position:relative}@media (hover:hover) and (pointer:fine){.menu-item[data-v-a91ac3dd]:hover{color:var(--ink);background:var(--paper-deep);padding-left:13px}}.menu-item[data-v-a91ac3dd]:active{transform:scale(.985)}.menu-item.active[data-v-a91ac3dd]{color:var(--accent-strong);background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent);font-weight:600}.menu-item.active[data-v-a91ac3dd]:hover{background:var(--tone-success-bg);padding-left:10px}.menu-icon[data-v-a91ac3dd]{flex:0 0 20px;font-size:16px}.menu-item .menu-icon[data-v-a91ac3dd]{color:var(--sider-ink-faint);transition:color var(--transition-fast)}.menu-item:hover .menu-icon[data-v-a91ac3dd]{color:var(--ink)}.menu-item.active .menu-icon[data-v-a91ac3dd]{color:var(--accent-strong)}.menu-label[data-v-a91ac3dd]{white-space:nowrap;text-overflow:ellipsis;transition:opacity var(--transition-fast);padding-left:10px;overflow:hidden}.sider-footer[data-v-a91ac3dd]{background:linear-gradient(180deg, transparent, var(--frost-bg) 42%);width:100%;padding:0 18px 18px;position:absolute;bottom:0;left:0}.footer-rule[data-v-a91ac3dd]{background:repeating-linear-gradient(90deg, var(--tick-c-fine) 0 1px, transparent 1px 9px), var(--divider-hair);opacity:.9;height:1px;margin-bottom:12px}.footer-line[data-v-a91ac3dd]{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-a91ac3dd]{color:var(--ink-faint)}.slide-fade-enter-active[data-v-a91ac3dd],.slide-fade-leave-active[data-v-a91ac3dd]{transition:opacity .2s cubic-bezier(.22,1,.36,1),transform .2s cubic-bezier(.22,1,.36,1)}.slide-fade-enter-from[data-v-a91ac3dd],.slide-fade-leave-to[data-v-a91ac3dd]{opacity:0;transform:translate(-8px)}.nav-scrim[data-v-a91ac3dd]{z-index:1100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#060c1494;animation:.2s both nav-scrim-in-a91ac3dd;position:fixed;inset:0}@keyframes nav-scrim-in-a91ac3dd{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.nav-scrim[data-v-a91ac3dd]{animation:none}}.app-header[data-v-1742cc1f]{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-1742cc1f]{z-index:30;background:var(--mat-chrome-bg);-webkit-backdrop-filter:var(--vibrancy-chrome);backdrop-filter:var(--vibrancy-chrome);border-bottom:1px solid var(--glass-line);box-shadow:var(--glass-specular);position:sticky;top:0}.header-left[data-v-1742cc1f],.header-right[data-v-1742cc1f]{align-items:center;gap:10px;min-width:0;display:flex}.rail-mark[data-v-1742cc1f]{color:var(--ink-faint);flex:none;font-size:15px}.trail[data-v-1742cc1f]{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-1742cc1f]::-webkit-scrollbar{display:none}.trail-row[data-v-1742cc1f]{white-space:nowrap;align-items:center;gap:0;padding:3px 4px;display:flex}.trail-link[data-v-1742cc1f]{background:var(--line-strong);flex:none;width:14px;height:1px}.trail-node[data-v-1742cc1f]{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-1742cc1f]:hover{color:var(--ink);background:var(--paper-tint);border-color:var(--line-strong)}.trail-node[data-v-1742cc1f]:active{transform:scale(.98)}.trail-node[data-v-1742cc1f]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.trail-node.active[data-v-1742cc1f]{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}.node-icon[data-v-1742cc1f]{font-size:13px}.node-title[data-v-1742cc1f]{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-1742cc1f]{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-1742cc1f],.trail-node:hover .node-close[data-v-1742cc1f]{opacity:1;transform:none}.node-close[data-v-1742cc1f]:hover{color:var(--ink);background:var(--hover-tint)}.node-close[data-v-1742cc1f]:active{transform:scale(.9)}.trail-node.active .node-close[data-v-1742cc1f]{color:color-mix(in srgb, var(--on-accent) 85%, transparent)}.trail-node.active .node-close[data-v-1742cc1f]:hover{color:var(--on-accent);background:color-mix(in srgb, var(--on-accent) 18%, transparent)}.node-close[data-v-1742cc1f]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.stamp-enter-active[data-v-1742cc1f]{transition:opacity .22s var(--ease-out-quart), transform .22s var(--ease-out-quart)}.stamp-enter-from[data-v-1742cc1f]{opacity:0;transform:translateY(4px)}.stamp-leave-active[data-v-1742cc1f]{transition:opacity .14s;position:absolute}.stamp-leave-to[data-v-1742cc1f]{opacity:0}.stamp-move[data-v-1742cc1f]{transition:transform .22s}.plotter-line[data-v-1742cc1f]{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-1742cc1f]{animation:.6s cubic-bezier(.3,.8,.4,1) forwards plot-sweep-1742cc1f}@keyframes plot-sweep-1742cc1f{0%{opacity:.9;transform:scaleX(0)}70%{opacity:.9}to{opacity:0;transform:scaleX(1)}}.collapse-btn[data-v-1742cc1f],.icon-btn[data-v-1742cc1f]{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-1742cc1f]:hover,.icon-btn[data-v-1742cc1f]:hover{color:var(--ink);background:var(--paper-deep)}.collapse-btn[data-v-1742cc1f]:active,.icon-btn[data-v-1742cc1f]:active{transform:scale(.94)}.lang-select[data-v-1742cc1f]{width:118px}.lang-select[data-v-1742cc1f] .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-1742cc1f] .ant-select-arrow{color:var(--app-text-secondary,var(--ink-faint))}.user-chip[data-v-1742cc1f]{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-1742cc1f]:hover{border-color:var(--line);background:var(--hover-tint)}.user-initial[data-v-1742cc1f]{width:28px;height:28px;font-size:12px}.user-meta[data-v-1742cc1f]{flex-direction:column;line-height:1.15;display:flex}.user-name[data-v-1742cc1f]{color:var(--app-text,var(--ink));letter-spacing:.01em;font-size:12.5px;font-weight:600}.user-role[data-v-1742cc1f]{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--app-text-secondary,var(--ink-faint));font-size:9.5px}.mobile-title[data-v-1742cc1f]{min-width:0;color:var(--app-text,var(--ink));text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;display:none;overflow:hidden}@media (width<=899px){.rail-mark[data-v-1742cc1f],.trail[data-v-1742cc1f]{display:none}.mobile-title[data-v-1742cc1f]{margin-left:2px;display:block}.app-header[data-v-1742cc1f]{padding:0 12px 0 8px}}@media (width<=639px){.hdr-fullscreen[data-v-1742cc1f]{display:none}.user-chip[data-v-1742cc1f]{height:38px;padding:0 6px}.user-meta[data-v-1742cc1f]{display:none}.lang-select[data-v-1742cc1f]{width:76px}.lang-select[data-v-1742cc1f] .ant-select-selection-item{padding-inline-end:16px;font-size:12.5px}.header-left[data-v-1742cc1f],.header-right[data-v-1742cc1f]{gap:4px}}.hidden[data-v-1742cc1f]{display:none}.ws-dot[data-v-1742cc1f]{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-1742cc1f]{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-1742cc1f}.ws-dot.down[data-v-1742cc1f]{background:var(--tone-danger-dot);box-shadow:0 0 6px color-mix(in srgb, var(--tone-danger-dot) 55%, transparent)}@keyframes ws-pulse-1742cc1f{50%{opacity:.45}}.hitl-bell[data-v-1742cc1f]{color:var(--tone-warning-dot,#d4a017);position:relative}.hitl-count[data-v-1742cc1f]{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-1742cc1f]{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-1742cc1f]{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-1742cc1f]{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-1742cc1f]:hover{background:var(--paper-deep);border-color:var(--line)}.hitl-item-top[data-v-1742cc1f]{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.hitl-item-agent[data-v-1742cc1f]{color:var(--ink);font-size:12.5px;font-weight:600}.hitl-item-kind[data-v-1742cc1f]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--tone-warning-dot,#d4a017);font-size:9.5px}.hitl-item-title[data-v-1742cc1f]{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.hitl-item-actions[data-v-1742cc1f]{gap:6px;margin-top:6px;display:flex}@media (prefers-reduced-motion:reduce){.plotter-line.run[data-v-1742cc1f]{opacity:0;animation:none}.stamp-enter-active[data-v-1742cc1f],.stamp-leave-active[data-v-1742cc1f],.stamp-move[data-v-1742cc1f]{transition:none}}.app-layout[data-v-e4abc244]{background:0 0;flex-direction:row;min-height:100vh;display:flex}.app-main[data-v-e4abc244]{flex-direction:column;flex:auto;min-width:0;min-height:100vh;display:flex;position:relative}.app-content[data-v-e4abc244]{flex:1;margin:12px 16px 0;padding:2px}.app-footer[data-v-e4abc244]{background:var(--mat-chrome-bg);-webkit-backdrop-filter:var(--vibrancy-chrome);backdrop-filter:var(--vibrancy-chrome);border-top:1px solid var(--glass-line);box-shadow:var(--glass-specular);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;position:relative}.app-footer .sep[data-v-e4abc244]{color:var(--ink-faint)}.footer-title[data-v-e4abc244]{font-size:13px}.footer-corner[data-v-e4abc244]{height:100%;color:var(--ink-faint);letter-spacing:.06em;align-items:center;gap:8px;font-size:10px;display:inline-flex;position:absolute;bottom:0;right:24px}.footer-corner .footer-link[data-v-e4abc244]{color:inherit;border-bottom:1px solid #0000;text-decoration:none;transition:color .15s,border-color .15s}.footer-corner .footer-link[data-v-e4abc244]:hover{color:inherit;opacity:.85;border-bottom-color:currentColor}
@@ -0,0 +1 @@
1
+ import{$ as e,P as t,R as n,S as r,Ut as i,V as a,Vt as o,W as s,b as c,d as l,dt as ee,f as u,h as d,i as f,m as p,nt as m,pt as h,tt as te,xt as g,y as _}from"./CSkxz2NX.js";import{c as v,f as ne,l as y,s as re}from"./D6uzXueg.js";import{a as ie}from"./C__m4EhR.js";import{t as ae}from"./BHA40aHa.js";import{n as oe}from"./KZQX7xoM.js";import{t as se}from"./CWoJjWmZ.js";import{t as b}from"./BDNMzG2s2.js";import{t as ce}from"./D0ZBQrN_2.js";import{t as le}from"./CNs_Ozdc2.js";import{a as ue,n as de,t as fe}from"./D98NH8kG.js";import{t as pe}from"./ca4TJ3Op.js";import{t as me}from"./C3J6FYKa.js";var he={class:`page`},ge={class:`aw-kicker`},_e={class:`aw-page-head`},ve={key:0,class:`err`},ye={key:1,class:`grid`},be={class:`col-live`},xe={class:`aw-tile value-card`},Se={class:`aw-kicker`},Ce={class:`big-val mono`},we={class:`facts mono`},Te={class:`col-form aw-tile pad`},Ee={class:`sec`},De={class:`field`},Oe={class:`field`},ke={value:``},Ae=[`value`],je={class:`field`},Me=[`value`,`disabled`],Ne={class:`field row`},Pe=[`disabled`],Fe={class:`field row`},Ie=[`title`],Le=[`disabled`,`title`],Re=[`disabled`,`title`],ze={class:`field row`},Be=[`disabled`],Ve={class:`field`},He={class:`field`},Ue={class:`field-row`},We={class:`field`},Ge={class:`field`},Ke={class:`field`},qe={class:`field`},Je=[`disabled`],Ye={class:`sec mt`},Xe={class:`driver-grid`},Ze={key:0},Qe=[`onUpdate:modelValue`],$e=[`value`],et=[`onUpdate:modelValue`,`type`,`placeholder`],tt={class:`test-row`},nt=[`disabled`],rt={class:`sec mt`},it={class:`bind-row`},at={value:``},ot=[`value`],st={class:`col-hist aw-tile pad`},ct={class:`hist-hd`},lt={class:`sec`},ut={class:`hist-ctl mono`},dt=[`value`],ft=[`title`],pt=[`placeholder`],mt={class:`raw-table mono`},ht={key:2,class:`aw-tile pad frames-tile`},gt={class:`hist-hd`},_t={class:`sec`},vt={class:`mono frames-n`},yt=[`viewBox`],bt=[`points`],xt={class:`raw-table mono`},St={key:0,class:`gal`},Ct=[`title`,`onClick`],wt=[`src`],Tt={class:`mono`},Et={key:1,class:`frames-empty`},Dt=[`src`],x=320,Ot=84,kt=`#35e0a0`,At=`rgba(120,135,160,0.18)`,jt=`rgba(140,155,175,0.8)`,Mt=b(r({__name:`[id]`,setup(r){let{t:b}=oe();le({layout:`default`});let Mt=ie(),S=l(()=>String(Mt.params.id??``)),C=fe(),Nt=pe();Nt.load();let w=me(),T=l(()=>C.nodeById(S.value)??null),Pt=l(()=>{let e=T.value?ue(T.value.templateRef):``;return C.templates.find(t=>t.key===e)??null}),Ft=l(()=>({ok:b(`daqDetail.k41k5c026`),warn:b(`daqDetail.k49z8v027`),alarm:b(`daqDetail.k3xmid028`),offline:b(`daqDetail.k44c2n029`)})),It=()=>{let e=T.value;return!e||!C.controller.running||!e.enabled?`offline`:e.state},Lt=null;n(()=>{Lt=C.ensureWsFeed(),C.load(),w.load(),D.value&&k()}),t(()=>Lt?.());let E=l(()=>Pt.value?.signalKind??`scalar`),D=l(()=>E.value!==`scalar`),O=l(()=>C.framesOf(S.value));async function k(){S.value&&await C.fetchFrames(S.value,{limit:24}).catch(()=>{})}e(S,()=>{D.value&&k()});let Rt=e=>new Date(e).toLocaleTimeString(`zh-CN`,{hour12:!1}),zt=e=>Object.entries(e.metrics??{}).slice(0,3).map(([e,t])=>`${e}=${t}`).join(` `),Bt=l(()=>O.value.find(e=>e.kind===`vector`&&e.points?.length)),Vt=l(()=>{let e=Bt.value?.points??[];if(e.length<2)return``;let t=Math.min(...e),n=Math.max(...e)-t||1;return e.map((r,i)=>`${(i/(e.length-1)*x).toFixed(1)},${(78-(r-t)/n*72).toFixed(1)}`).join(` `)}),A=h(null);function Ht(e){return e==null?b(`daqDetail.k9vnp9h053`,{p0:C.controller.defaultPublishIntervalMs}):e===0?b(`daqDetail.k1m1zwux030`):`${e}ms`}let j=ee({enabled:!0,driver:`mock`,lineId:``,followGlobal:!0,intervalMs:5e3,calKind:`none`,calScale:1,calOffset:0,publishFollow:!0,publishEveryFrame:!1,publishMs:1e3,unit:``,decimals:1,min:0,max:100,warnLow:null,warnHigh:null});e(T,e=>{e&&(j.enabled=e.enabled,j.lineId=e.lineId??``,j.driver=e.driver,j.followGlobal=e.intervalMs==null,j.intervalMs=e.intervalMs??C.controller.defaultIntervalMs,j.publishFollow=e.publishIntervalMs==null,j.publishEveryFrame=e.publishIntervalMs===0,j.publishMs=e.publishIntervalMs==null?C.controller.defaultPublishIntervalMs:e.publishIntervalMs,j.unit=e.unit,j.decimals=e.decimals,j.min=e.min,j.max=e.max,j.warnLow=e.warnLow,j.warnHigh=e.warnHigh)},{immediate:!0});let M=l(()=>C.meta.drivers.length?C.meta.drivers:de.map(e=>({...e}))),N=h({}),P=l(()=>M.value.find(e=>e.kind===j.driver)?.configFields??[]);e(T,e=>{e&&(N.value={...e.driverConfig})},{immediate:!0}),e(()=>j.driver,()=>{if(P.value.length&&Object.keys(N.value).length===0){let e={};for(let t of P.value)t.default!==void 0&&(e[t.key]=t.default);N.value=e}},{immediate:!0});let F=h(!1),I=h(null);async function Ut(){F.value=!0,I.value=null;try{await C.patchNode(S.value,{driver:j.driver,driverConfig:{...N.value}}),I.value=await C.testNode(S.value)}catch(e){I.value={ok:!1,message:ce(e)}}finally{F.value=!1}}let L=h(!1);async function Wt(){let e=T.value;if(!(!e||L.value)){L.value=!0;try{await C.patchNode(e.id,{enabled:j.enabled,driver:j.driver,lineId:j.lineId,driverConfig:{...N.value},intervalMs:j.followGlobal?null:Math.max(1e3,Math.min(6e4,Math.round(j.intervalMs))),publishIntervalMs:j.publishFollow?null:j.publishEveryFrame?0:Math.max(0,Math.min(6e4,Math.round(j.publishMs))),unit:j.unit,decimals:Math.max(0,Math.min(6,Math.round(j.decimals))),min:j.min,max:j.max,warnLow:j.warnLow,warnHigh:j.warnHigh})}finally{L.value=!1}}}function Gt(e){return C.meta.drivers.find(t=>t.kind===e)?.status===`planned`}let R=h(``),Kt=l(()=>(T.value?.deviceIds??(T.value?.deviceBindingId?[T.value.deviceBindingId]:[])).map(e=>w.twins.find(t=>t.id===e)?.name??`${e.slice(0,8)}…`).join(` / `));function qt(){C.bindNode(S.value,T.value?.deviceBindingId?null:R.value||null)}let Jt=l(()=>w.twins.filter(e=>e.kind!==`daq`&&e.id!==T.value?.id)),z=h([]),B=h(15e3),V=h(!1),Yt=l(()=>[{label:b(`daqDetail.bucket1s`),ms:1e3},{label:b(`daqDetail.bucket5s`),ms:5e3},{label:b(`daqDetail.bucket15s`),ms:15e3},{label:b(`daqDetail.bucket30s`),ms:3e4},{label:b(`daqDetail.bucket60s`),ms:6e4}]);async function H(){if(S.value){V.value=!0;try{let e=await C.samplesOf(S.value,{toMs:Date.now(),bucketMs:B.value||void 0,limit:400});z.value=[...e].reverse()}finally{V.value=!1,U()}}}let Xt=h(null);function U(){let e=Xt.value;if(!e)return;let t=Math.min(window.devicePixelRatio||1,2),n=e.clientWidth,r=e.clientHeight;(e.width!==n*t||e.height!==r*t)&&(e.width=n*t,e.height=r*t);let i=e.getContext(`2d`);if(!i)return;i.setTransform(t,0,0,t,0,0),i.clearRect(0,0,n,r);for(let e=1;e<4;e++)i.strokeStyle=At,i.beginPath(),i.moveTo(0,r/4*e),i.lineTo(n,r/4*e),i.stroke();let a=z.value;if(a.length<2)return;let o=1/0,s=-1/0;for(let e of a){let t=e.value??e.avg??e.min??0;o=Math.min(o,t),s=Math.max(s,t)}let c=Math.max(s-o,1e-9);i.strokeStyle=jt,i.font=`10px monospace`,i.fillStyle=jt,i.fillText(s.toFixed(2),4,11),i.fillText(o.toFixed(2),4,r-4),i.strokeStyle=kt,i.lineWidth=1.6,i.beginPath(),a.forEach((e,t)=>{let s=t/(a.length-1)*n,l=r-((e.value??e.avg??0)-o)/c*(r-16)-8;t===0?i.moveTo(s,l):i.lineTo(s,l)}),i.stroke()}let W=h(null),G=null,K=``;function q(){let e=W.value,t=T.value;if(!e||!t||t.hist.length<2)return;let n=`${t.hist.length}:${t.hist[t.hist.length-1]}:${t.hist[0]}`;if(n===K)return;K=n;let r=Math.min(window.devicePixelRatio||1,2),i=e.clientWidth,a=e.clientHeight;(e.width!==i*r||e.height!==a*r)&&(e.width=i*r,e.height=a*r);let o=e.getContext(`2d`);if(!o)return;o.setTransform(r,0,0,r,0,0),o.clearRect(0,0,i,a);let s=Math.max(...t.hist),c=Math.min(...t.hist),l=Math.max(s-c,1e-9);o.strokeStyle=`rgba(65,200,244,0.9)`,o.lineWidth=1.5,o.beginPath(),t.hist.forEach((e,n)=>{let r=n/(t.hist.length-1)*i,s=a-(e-c)/l*(a-6)-3;n===0?o.moveTo(r,s):o.lineTo(r,s)}),o.stroke()}let J=null,Y=!1;function Zt(){Y=document.hidden,Y||(q(),Z.value&&H())}let X=h(0),Z=l(()=>{let e=C.controller.minQueryDisplayIntervalMs??500,t=X.value>0?X.value:C.controller.queryDisplayIntervalMs??0;return t>0?Math.max(e,t):0}),Q=null;function $(){Q&&=(clearInterval(Q),null);let e=Z.value;e&&(Q=se(()=>{document.hidden||V.value||H()},e))}return n(()=>{H(),G=se(()=>{Y||q()},800),document.addEventListener(`visibilitychange`,Zt),typeof ResizeObserver<`u`&&(J=new ResizeObserver(()=>{K=``,q(),U()}),W.value&&J.observe(W.value)),$()}),t(()=>{G&&clearInterval(G),Q&&clearInterval(Q),document.removeEventListener(`visibilitychange`,Zt),J?.disconnect(),J=null}),e(B,()=>void H()),e(Z,()=>$()),(e,t)=>{let n=ae;return a(),d(`div`,he,[u(`p`,ge,[c(n,{to:`/daq`,class:`back`},{default:te(()=>[_(i(e.$t(`daqDetail.k1emg364001`)),1)]),_:1}),_(` / NODE `+i(S.value.slice(0,8).toUpperCase()),1)]),u(`div`,_e,[u(`h1`,null,i(T.value?.name??S.value),1),u(`span`,{class:o([`st-pill`,[It()]])},i(Ft.value[It()]),3)]),!T.value&&g(C).error?(a(),d(`p`,ve,[_(i(g(C).error)+`(`,1),c(n,{to:`/workshop`},{default:te(()=>[_(i(e.$t(`daqDetail.k1bhhheq002`)),1)]),_:1}),t[21]||=_(`) `,-1)])):p(``,!0),T.value?(a(),d(`div`,ye,[u(`section`,be,[u(`div`,xe,[u(`p`,Se,i(e.$t(`daqDetail.k1fx2vik032`))+` `+i(Pt.value?.ch??`-`),1),u(`div`,Ce,[_(i(T.value.value==null?`--`:T.value.value.toFixed(T.value.decimals)),1),u(`small`,null,i(T.value.unit),1)]),u(`canvas`,{ref_key:`liveCanvas`,ref:W,class:`live-canvas`},null,512),u(`dl`,we,[u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k4a0la003`)),1),u(`dd`,null,i(T.value.driver)+i(Gt(T.value.driver)?e.$t(`daqDetail.kz8zr9v035`):``),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k3xg3w004`)),1),u(`dd`,null,i(T.value.intervalMs??e.$t(`daqDetail.k9vnp9h053`,{p0:g(C).controller.defaultIntervalMs})),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k3w6td005`)),1),u(`dd`,null,i(Ht(T.value.publishIntervalMs)),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k3x5tpx006`)),1),u(`dd`,null,i(T.value.warnLow??`-∞`)+` ~ `+i(T.value.warnHigh??`+∞`),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k1hjj0jf007`)),1),u(`dd`,null,i(T.value.min)+` ~ `+i(T.value.max),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k1i8rtqt008`)),1),u(`dd`,null,i(Kt.value||e.$t(`daqDetail.k3own4q036`)),1)])])])]),u(`section`,Te,[u(`h3`,Ee,i(e.$t(`daqDetail.kd9d69j009`)),1),u(`form`,{class:`form-grid`,onSubmit:ne(Wt,[`prevent`])},[u(`label`,De,[u(`span`,null,i(e.$t(`daqDetail.k1iw7tbf010`)),1),u(`button`,{type:`button`,class:o([`toggle`,{on:j.enabled}]),onClick:t[0]||=e=>j.enabled=!j.enabled},i(j.enabled?e.$t(`daqDetail.k3w3j8f037`):e.$t(`daqDetail.k3n5aaj045`)),3)]),u(`label`,Oe,[u(`span`,null,i(e.$t(`daqDetail.k12k23od011`)),1),m(u(`select`,{"onUpdate:modelValue":t[1]||=e=>j.lineId=e,class:`input`},[u(`option`,ke,i(e.$t(`daqDetail.k3ootr6012`)),1),(a(!0),d(f,null,s(g(Nt).lines,e=>(a(),d(`option`,{key:e.id,value:e.id},i(e.name),9,Ae))),128))],512),[[v,j.lineId]])]),u(`label`,je,[u(`span`,null,i(e.$t(`daqDetail.k1l6smxo013`)),1),m(u(`select`,{"onUpdate:modelValue":t[2]||=e=>j.driver=e,class:`input`},[(a(!0),d(f,null,s(M.value,t=>(a(),d(`option`,{key:t.kind,value:t.kind,disabled:t.status===`planned`},i(t.label)+i(t.plugin?` ⌁`:``)+i(t.status===`planned`?e.$t(`daqDetail.kz8zr9v035`):``),9,Me))),128))],512),[[v,j.driver]])]),u(`label`,Ne,[u(`button`,{type:`button`,class:o([`toggle slim`,{on:j.followGlobal}]),onClick:t[3]||=e=>j.followGlobal=!j.followGlobal},i(j.followGlobal?e.$t(`daqDetail.k1k2ueyq038`):e.$t(`daqDetail.k1cgi8fy046`)),3),m(u(`input`,{"onUpdate:modelValue":t[4]||=e=>j.intervalMs=e,type:`number`,min:`1000`,max:`60000`,step:`500`,class:`input`,disabled:j.followGlobal},null,8,Pe),[[y,j.intervalMs,void 0,{number:!0}]]),t[22]||=u(`small`,null,`ms`,-1)]),u(`label`,Fe,[u(`button`,{type:`button`,class:o([`toggle slim`,{on:j.calKind===`linear`}]),title:e.$t(`daqDetail.calDecoderTip`),onClick:t[5]||=e=>j.calKind=j.calKind===`linear`?`none`:`linear`},i(j.calKind===`linear`?e.$t(`daqDetail.k1eru4r1039`):e.$t(`daqDetail.k3oktae047`)),11,Ie),m(u(`input`,{"onUpdate:modelValue":t[6]||=e=>j.calScale=e,type:`number`,step:`0.1`,class:`input`,disabled:j.calKind!==`linear`,title:e.$t(`daqDetail.calScaleTip`)},null,8,Le),[[y,j.calScale,void 0,{number:!0}]]),m(u(`input`,{"onUpdate:modelValue":t[7]||=e=>j.calOffset=e,type:`number`,step:`0.1`,class:`input`,disabled:j.calKind!==`linear`,title:e.$t(`daqDetail.calOffsetTip`)},null,8,Re),[[y,j.calOffset,void 0,{number:!0}]]),t[23]||=u(`small`,null,`decoder`,-1)]),u(`label`,ze,[u(`button`,{type:`button`,class:o([`toggle slim`,{on:j.publishFollow}]),onClick:t[8]||=e=>j.publishFollow=!j.publishFollow},i(j.publishFollow?e.$t(`daqDetail.k1k2t5o7040`):e.$t(`daqDetail.k1cggz5f048`)),3),u(`span`,{class:o([`toggle slim`,{on:j.publishEveryFrame}]),style:{cursor:`pointer`},onClick:t[9]||=e=>j.publishEveryFrame=!j.publishEveryFrame},i(j.publishEveryFrame?e.$t(`daqDetail.k41mvv041`):e.$t(`daqDetail.k3n42dj049`)),3),m(u(`input`,{"onUpdate:modelValue":t[10]||=e=>j.publishMs=e,type:`number`,min:`0`,max:`60000`,step:`100`,class:`input`,disabled:j.publishFollow||j.publishEveryFrame},null,8,Be),[[y,j.publishMs,void 0,{number:!0}]]),t[24]||=u(`small`,null,`ms`,-1)]),u(`label`,Ve,[u(`span`,null,i(e.$t(`daqDetail.k3x4ef014`)),1),m(u(`input`,{"onUpdate:modelValue":t[11]||=e=>j.unit=e,class:`input`},null,512),[[y,j.unit]])]),u(`label`,He,[u(`span`,null,i(e.$t(`daqDetail.k3mxmcx015`)),1),m(u(`input`,{"onUpdate:modelValue":t[12]||=e=>j.decimals=e,type:`number`,min:`0`,max:`6`,class:`input`},null,512),[[y,j.decimals,void 0,{number:!0}]])]),u(`div`,Ue,[u(`label`,We,[u(`span`,null,i(e.$t(`daqDetail.k1l9jv5m016`)),1),m(u(`input`,{"onUpdate:modelValue":t[13]||=e=>j.min=e,type:`number`,step:`any`,class:`input`},null,512),[[y,j.min,void 0,{number:!0}]])]),u(`label`,Ge,[u(`span`,null,i(e.$t(`daqDetail.k1md63hm017`)),1),m(u(`input`,{"onUpdate:modelValue":t[14]||=e=>j.warnLow=e,type:`number`,step:`any`,class:`input`},null,512),[[y,j.warnLow,void 0,{number:!0}]])]),u(`label`,Ke,[u(`span`,null,i(e.$t(`daqDetail.k1md63gp018`)),1),m(u(`input`,{"onUpdate:modelValue":t[15]||=e=>j.warnHigh=e,type:`number`,step:`any`,class:`input`},null,512),[[y,j.warnHigh,void 0,{number:!0}]])]),u(`label`,qe,[u(`span`,null,i(e.$t(`daqDetail.k1l9jv4p019`)),1),m(u(`input`,{"onUpdate:modelValue":t[16]||=e=>j.max=e,type:`number`,step:`any`,class:`input`},null,512),[[y,j.max,void 0,{number:!0}]])])]),u(`button`,{class:`aw-pill`,type:`submit`,disabled:L.value},i(L.value?e.$t(`daqDetail.k1as0g50042`):e.$t(`daqDetail.ksn9cgo050`)),9,Je)],32),P.value.length?(a(),d(f,{key:0},[u(`h3`,Ye,i(e.$t(`daqDetail.k1p9gioa033`))+` `+i(M.value.find(e=>e.kind===j.driver)?.label),1),u(`div`,Xe,[(a(!0),d(f,null,s(P.value,e=>(a(),d(`label`,{key:e.key,class:`field`},[u(`span`,null,[_(i(e.label),1),e.required?(a(),d(`em`,Ze,`*`)):p(``,!0)]),e.type===`select`?m((a(),d(`select`,{key:0,"onUpdate:modelValue":t=>N.value[e.key]=t,class:`input`},[(a(!0),d(f,null,s(e.options,e=>(a(),d(`option`,{key:e.value,value:e.value},i(e.label),9,$e))),128))],8,Qe)),[[v,N.value[e.key]]]):m((a(),d(`input`,{key:1,"onUpdate:modelValue":t=>N.value[e.key]=t,type:e.type===`number`?`number`:`text`,placeholder:e.placeholder,class:`input`},null,8,et)),[[re,N.value[e.key]]])]))),128))]),u(`div`,tt,[u(`button`,{class:`pill-btn`,disabled:F.value,onClick:Ut},i(F.value?e.$t(`daqDetail.k1fsh720043`):e.$t(`daqDetail.k1fstglk051`)),9,nt),I.value?(a(),d(`span`,{key:0,class:o([`test-out mono`,I.value.ok?`ok`:`bad`])},i(I.value.ok?`✓`:`✗`)+` `+i(I.value.message),3)):p(``,!0)])],64)):p(``,!0),u(`h3`,rt,i(e.$t(`daqDetail.k1ie6qju020`)),1),u(`div`,it,[m(u(`select`,{"onUpdate:modelValue":t[17]||=e=>R.value=e,class:`input grow`},[u(`option`,at,i(e.$t(`daqDetail.kjobzu3021`)),1),(a(!0),d(f,null,s(Jt.value,e=>(a(),d(`option`,{key:e.id,value:e.id},i(e.name),9,ot))),128))],512),[[v,R.value]]),u(`button`,{class:`pill-btn`,onClick:qt},i(Kt.value?e.$t(`daqDetail.k479eh044`):e.$t(`daqDetail.k452a8052`)),1)])]),u(`section`,st,[u(`div`,ct,[u(`h3`,lt,i(e.$t(`daqDetail.k1i535i5034`))+i(g(C).meta.tsdb)+`) `,1),u(`div`,ut,[m(u(`select`,{"onUpdate:modelValue":t[18]||=e=>B.value=e,class:`input`},[(a(!0),d(f,null,s(Yt.value,e=>(a(),d(`option`,{key:e.ms,value:e.ms},i(e.label),9,dt))),128))],512),[[v,B.value,void 0,{number:!0}]]),u(`label`,{class:`refresh-ctl`,title:e.$t(`daqDetail.k1rfrshint001`,{p0:g(C).controller.minQueryDisplayIntervalMs??500})},[t[25]||=u(`span`,{class:`i-tabler-refresh`},null,-1),m(u(`input`,{"onUpdate:modelValue":t[19]||=e=>X.value=e,type:`number`,min:0,max:`600000`,step:`500`,placeholder:String(g(C).controller.queryDisplayIntervalMs??5e3)},null,8,pt),[[y,X.value,void 0,{number:!0}]]),t[26]||=_(`ms `,-1)],8,ft),u(`button`,{class:`pill-btn`,onClick:H},i(e.$t(`daqDetail.k3x1jg022`)),1)])]),u(`canvas`,{ref_key:`chartCanvas`,ref:Xt,class:`hist-canvas`},null,512),u(`table`,mt,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,i(e.$t(`daqDetail.k40vsf023`)),1),u(`th`,null,i(e.$t(`daqDetail.k48v5024`)),1),u(`th`,null,i(e.$t(`daqDetail.k4bza025`)),1)])]),u(`tbody`,null,[(a(!0),d(f,null,s(z.value.filter(e=>e.value!=null).slice(-12).reverse(),(e,t)=>(a(),d(`tr`,{key:t},[u(`td`,null,i(new Date(e.at).toLocaleTimeString(`zh-CN`,{hour12:!1})),1),u(`td`,null,i(e.value.toFixed(T.value?.decimals??2)),1),u(`td`,null,i(e.state),1)]))),128))])])])])):p(``,!0),D.value?(a(),d(`section`,ht,[u(`div`,gt,[u(`h3`,_t,[_(i(E.value===`image`?e.$t(`daqDetail.kfrm0001`):e.$t(`daqDetail.kfrm0002`))+` `,1),u(`span`,vt,i(O.value.length),1)]),u(`button`,{class:`pill-btn`,onClick:k},i(e.$t(`daqDetail.k3x1jg022`)),1)]),E.value===`vector`?(a(),d(f,{key:0},[(a(),d(`svg`,{class:`vec-svg`,viewBox:`0 0 ${x} ${Ot}`,preserveAspectRatio:`none`},[u(`polyline`,{points:Vt.value,fill:`none`,stroke:`var(--accent)`,"stroke-width":`1.5`},null,8,bt)],8,yt)),u(`table`,xt,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,i(e.$t(`daqDetail.k40vsf023`)),1),u(`th`,null,i(e.$t(`daqDetail.kfrm0004`)),1),u(`th`,null,i(e.$t(`daqDetail.kfrm0005`)),1)])]),u(`tbody`,null,[(a(!0),d(f,null,s(O.value.filter(e=>e.kind===`vector`).slice(0,12),e=>(a(),d(`tr`,{key:e.at},[u(`td`,null,i(Rt(e.at)),1),u(`td`,null,i(e.points?.length??0),1),u(`td`,null,i(zt(e)),1)]))),128))])])],64)):(a(),d(f,{key:1},[O.value.length?(a(),d(`div`,St,[(a(!0),d(f,null,s(O.value,t=>(a(),d(`figure`,{key:t.at,class:`gal-item`,title:e.$t(`daqDetail.kfrm0006`),onClick:e=>A.value=t},[u(`img`,{src:t.thumbUrl,loading:`lazy`,alt:`daq frame`},null,8,wt),u(`figcaption`,Tt,i(Rt(t.at))+` · `+i(zt(t)),1)],8,Ct))),128))])):(a(),d(`p`,Et,i(e.$t(`daqDetail.kfrm0003`)),1)),A.value?(a(),d(`div`,{key:2,class:`gal-full`,onClick:t[20]||=e=>A.value=null},[u(`img`,{src:A.value.contentUrl??A.value.thumbUrl,alt:`daq frame full`},null,8,Dt)])):p(``,!0)],64))])):p(``,!0)])}}}),[[`__scopeId`,`data-v-a4c18069`]]);export{Mt as default};
@@ -0,0 +1 @@
1
+ .home[data-v-43d29695]{padding:4px}.hero[data-v-43d29695]{margin-bottom:var(--gap-block);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;padding:30px 34px 32px;display:flex;overflow:hidden}.hero-scale[data-v-43d29695]{pointer-events:none;background:repeating-linear-gradient(90deg, color-mix(in srgb, var(--ink) 26%, transparent) 0 1px, transparent 1px 120px), repeating-linear-gradient(90deg, color-mix(in srgb, var(--ink) 11%, transparent) 0 1px, transparent 1px 24px);opacity:.55;height:9px;position:absolute;bottom:0;left:0;right:0;-webkit-mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000);mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000)}.hero-main[data-v-43d29695]{flex-direction:column;gap:10px;max-width:620px;display:flex}.hero-title[data-v-43d29695]{font-family:var(--font-display);letter-spacing:-.015em;color:var(--ink);margin:0;font-size:36px;font-weight:400;line-height:1.12}.hero-sub[data-v-43d29695]{max-width:54ch;color:var(--ink-faint);margin:0;font-size:13px;line-height:1.65}.hero-acts[data-v-43d29695]{flex-wrap:wrap;gap:10px;margin-top:4px;display:flex}.hero-live[data-v-43d29695]{background:var(--frost-bg);border:1px solid var(--glass-line);border-left:2px solid var(--accent);border-radius:0 var(--radius-panel-sm) var(--radius-panel-sm) 0;flex-direction:column;gap:10px;min-width:224px;padding:15px 18px 13px;display:flex}.live-badge[data-v-43d29695]{letter-spacing:.16em;width:fit-content;color:var(--tone-success-dot);border:1px solid color-mix(in srgb, var(--tone-success-dot) 45%, transparent);border-radius:var(--radius-pill);align-items:center;gap:7px;padding:2px 10px;font-size:10px;display:inline-flex}.live-dot[data-v-43d29695]{background:var(--tone-success-dot);border-radius:50%;width:6px;height:6px}@media (prefers-reduced-motion:no-preference){.live-dot[data-v-43d29695]{animation:1.6s ease-in-out infinite livePulse-43d29695}}@keyframes livePulse-43d29695{0%,to{box-shadow:0 0 3px var(--tone-success-dot)}50%{box-shadow:0 0 9px var(--tone-success-dot)}}.live-rows[data-v-43d29695]{flex-direction:column;margin:0;display:flex}.live-row[data-v-43d29695]{border-top:1px solid var(--divider-hair);justify-content:space-between;align-items:baseline;gap:16px;padding:7px 0;display:flex}.live-row[data-v-43d29695]:first-child{border-top:0;padding-top:2px}.live-row dt[data-v-43d29695]{color:var(--ink-faint);font-size:11.5px}.live-row dd[data-v-43d29695]{color:var(--ink);margin:0;font-size:13.5px}.live-row dd b[data-v-43d29695]{font-weight:500}.live-row dd small[data-v-43d29695]{color:var(--ink-faint);font-size:11px}.live-row.is-alarm dd[data-v-43d29695],.live-row.is-alarm dt[data-v-43d29695]{color:var(--tone-danger-dot)}.aw-gauge-band[data-v-43d29695]{--cols:6;margin-bottom:var(--gap-block)}@media (width<=1240px){.aw-gauge-band[data-v-43d29695]{--cols:3}}@media (width<=720px){.aw-gauge-band[data-v-43d29695]{--cols:2}}.grid[data-v-43d29695]{gap:var(--gap-block);margin-bottom:var(--gap-block);grid-template-columns:repeat(12,1fr);display:grid}.span8[data-v-43d29695]{grid-column:span 8}.span4[data-v-43d29695]{grid-column:span 4}@media (width<=1100px){.span4[data-v-43d29695],.span8[data-v-43d29695]{grid-column:span 12}}.aw-bench-sub[data-v-43d29695]{letter-spacing:.02em;color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}@media (width<=1500px){.aw-bench-sub[data-v-43d29695]{display:none}}.chart[data-v-43d29695]{width:100%}.h280[data-v-43d29695]{height:280px}.h240[data-v-43d29695]{height:240px}.donut-wrap[data-v-43d29695]{position:relative}.donut-center[data-v-43d29695]{pointer-events:none;flex-direction:column;align-items:center;width:100%;display:flex;position:absolute;top:38%;left:0;transform:translateY(-50%)}.donut-center b[data-v-43d29695]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink);font-size:26px;font-weight:500}.donut-center small[data-v-43d29695]{color:var(--ink-faint);font-size:11px}.fleet[data-v-43d29695]{margin-bottom:var(--gap-block)}.fleet-grid[data-v-43d29695]{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.line-card[data-v-43d29695]{cursor:pointer;background:var(--frost-bg);border:1px solid var(--glass-line);border-radius:var(--radius-panel-sm);transition:border-color var(--transition-fast), background-color var(--transition-fast), transform var(--transition-base), box-shadow var(--transition-base);padding:13px 15px}@media (hover:hover) and (prefers-reduced-motion:no-preference){.line-card[data-v-43d29695]:hover{border-color:var(--lc,var(--accent));box-shadow:var(--glass-edge), var(--shadow-float);transform:translateY(-1px)}}.line-card.on[data-v-43d29695]{background:color-mix(in srgb, var(--lc) 7%, var(--paper-deep));border-color:color-mix(in srgb, var(--lc) 45%, transparent)}.lc-head[data-v-43d29695]{align-items:center;gap:8px;display:flex}.lc-dot[data-v-43d29695]{border:1.5px solid var(--lc);border-radius:50%;flex:none;width:8px;height:8px}.line-card.on .lc-dot[data-v-43d29695]{background:var(--lc);box-shadow:0 0 7px color-mix(in srgb, var(--lc) 70%, transparent)}.lc-head b[data-v-43d29695]{color:var(--ink);font-size:13px}.lc-state[data-v-43d29695]{font-family:var(--font-mono);letter-spacing:.05em;color:var(--ink-faint);border:1px solid var(--line-strong);border-radius:var(--radius-pill);margin-left:auto;padding:1px 8px;font-size:10px}.lc-state.on[data-v-43d29695]{color:var(--tone-success-dot);border-color:color-mix(in srgb, var(--tone-success-dot) 45%, transparent)}.lc-run[data-v-43d29695]{color:color-mix(in srgb, var(--lc) 70%, var(--ink));flex-direction:column;gap:2px;margin-top:8px;font-size:11.5px;display:flex}.lc-run small[data-v-43d29695]{color:var(--ink-faint);font-size:10px}.lc-meta[data-v-43d29695]{color:var(--ink-faint);border-top:1px solid var(--divider-hair);gap:14px;margin-top:9px;padding-top:8px;font-size:10.5px;display:flex}.harness[data-v-43d29695]{margin-bottom:var(--gap-block)}.harness-row[data-v-43d29695]{flex-wrap:wrap;gap:8px;padding:2px 0 4px;display:flex}.h-item[data-v-43d29695]{cursor:default;background:color-mix(in srgb, var(--ink) 3%, transparent);border:1px solid var(--divider-hair);border-radius:var(--radius-pill);align-items:center;gap:7px;padding:5px 12px;font-size:11.5px;transition:border-color .15s,background .15s;display:flex}.h-item[data-v-43d29695]:hover{border-color:var(--line-strong)}.h-item.link[data-v-43d29695]{cursor:pointer}.h-item.link[data-v-43d29695]:hover{border-color:var(--accent);color:var(--accent)}.h-go[data-v-43d29695]{color:var(--ink-faint);flex:none;font-size:10px}.h-item.link:hover .h-go[data-v-43d29695]{color:var(--accent)}.h-dot[data-v-43d29695]{background:var(--tone-success-dot,#4a6b57);border-radius:50%;flex:none;width:6px;height:6px}.h-item.off[data-v-43d29695]{opacity:.55}.h-item.off .h-dot[data-v-43d29695]{background:var(--tone-danger-dot,#c25a4e)}.h-name[data-v-43d29695]{color:var(--ink);font-weight:600}.h-item.off .h-name[data-v-43d29695]{color:var(--ink-soft)}.h-cmd[data-v-43d29695]{color:var(--ink-faint);font-size:10px}@media (width<=900px){.fleet-all small[data-v-43d29695],.h-cmd[data-v-43d29695],.h-go[data-v-43d29695],.lc-meta[data-v-43d29695],.lc-meta span[data-v-43d29695],.lc-run small[data-v-43d29695],.lc-state[data-v-43d29695]{font-size:11.5px}}.fleet-all[data-v-43d29695]{min-height:86px;color:var(--ink-faint);background:0 0;border-style:dashed;flex-direction:column;justify-content:center;align-items:center;gap:6px;transition:border-color .15s,color .15s,background .15s;display:flex}.fleet-all[data-v-43d29695]:hover{color:var(--accent);background:color-mix(in srgb, var(--accent) 5%, transparent);border-color:color-mix(in srgb, var(--accent) 45%, transparent)}.fa-n[data-v-43d29695]{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:22px;line-height:1}.fleet-all:hover .fa-n[data-v-43d29695]{color:var(--accent)}.fa-label[data-v-43d29695]{font-size:12px}.fa-arrow[data-v-43d29695]{font-size:15px;transition:transform .16s cubic-bezier(.22,1,.36,1)}.fleet-all:hover .fa-arrow[data-v-43d29695]{transform:translate(3px)}.fleet-empty[data-v-43d29695]{color:var(--ink-faint);text-align:center;padding:18px 0;font-size:12px}@media (width<=640px){.hero[data-v-43d29695]{padding:24px 20px}.hero-title[data-v-43d29695]{font-size:28px}}
@@ -0,0 +1 @@
1
+ .plugins-page[data-v-ff6a645e]{max-width:1080px;margin:0 auto;padding:24px 20px 48px}.pg-sub[data-v-ff6a645e]{opacity:.6;margin:8px 0 0;font-size:12.5px}.pg-stats[data-v-ff6a645e]{opacity:.85;align-items:center;gap:14px;font-size:12px;display:flex}.pg-stats b[data-v-ff6a645e]{font-size:15px}.pg-failures[data-v-ff6a645e]{margin-bottom:16px}.fail-line[data-v-ff6a645e]{font-family:ui-monospace,monospace;font-size:11px}.pg-empty[data-v-ff6a645e]{text-align:center;border:1px dashed var(--line-strong);border-radius:var(--radius-panel);background:var(--paper-deep);flex-direction:column;align-items:center;gap:10px;padding:56px 24px;display:flex}.pg-empty-ico[data-v-ff6a645e]{color:var(--ink-faint);font-size:30px}.pg-empty-t[data-v-ff6a645e]{color:var(--ink-faint);margin:0;font-size:12.5px}.pg-grid[data-v-ff6a645e]{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;display:grid}.pg-card[data-v-ff6a645e]{border:1px solid var(--aw-border,#8098c740);background:var(--aw-card,#ffffff0a);cursor:pointer;border-radius:12px;padding:14px 16px;transition:border-color .2s,transform .2s;position:relative}.pg-card[data-v-ff6a645e]:hover{border-color:var(--aw-accent,#35e0a0);transform:translateY(-1px)}.pg-card.is-off[data-v-ff6a645e]{opacity:.55}.card-head[data-v-ff6a645e]{align-items:center;gap:10px;display:flex}.card-name[data-v-ff6a645e]{font-size:15px;font-weight:700}.card-ver[data-v-ff6a645e]{color:inherit;opacity:.5;font-family:ui-monospace,monospace;font-size:11px}.card-head .a-switch[data-v-ff6a645e]{margin-left:auto}.card-desc[data-v-ff6a645e]{opacity:.75;min-height:18px;margin:8px 0;font-size:12px}.card-tags[data-v-ff6a645e]{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.tag[data-v-ff6a645e]{border:1px solid #8098c74d;border-radius:999px;padding:2px 8px;font-size:10px}.tag.project[data-v-ff6a645e]{color:color-mix(in srgb, #35e0a0 42%, var(--ink));border-color:#35e0a080}.tag.user[data-v-ff6a645e]{color:color-mix(in srgb, #41c8f4 46%, var(--ink));border-color:#41c8f480}.tag.on[data-v-ff6a645e]{color:color-mix(in srgb, #35e0a0 42%, var(--ink));border-color:#35e0a080}.tag.off[data-v-ff6a645e]{color:color-mix(in srgb, #ff6b6b 55%, var(--ink));border-color:#ff6b6b66}.tag.client[data-v-ff6a645e]{border-color:color-mix(in srgb, var(--ink) 24%, transparent);color:var(--ink-soft)}.card-routes[data-v-ff6a645e]{flex-direction:column;gap:2px;display:flex}.card-routes code[data-v-ff6a645e]{opacity:.65;font-size:10px}.detail dt[data-v-ff6a645e]{opacity:.5;margin-top:10px;font-size:11px}.detail dd[data-v-ff6a645e]{margin:2px 0 0;font-family:ui-monospace,monospace;font-size:12px}.detail .scope-hint[data-v-ff6a645e]{opacity:.6;margin-bottom:6px;font-family:inherit;font-size:11px}.detail-route[data-v-ff6a645e]{opacity:.8;margin-bottom:4px;font-size:11px;display:block}h4[data-v-ff6a645e]{margin:16px 0 6px}.dim[data-v-ff6a645e]{opacity:.45}@media (width<=900px){.plugins-page[data-v-ff6a645e]{max-width:100%;padding:16px 12px 40px}.pg-stats[data-v-ff6a645e]{flex-wrap:wrap;gap:10px 14px;width:100%;font-size:11.5px}.pg-grid[data-v-ff6a645e]{grid-template-columns:1fr}.card-head[data-v-ff6a645e]{flex-wrap:wrap}.card-routes code[data-v-ff6a645e],.detail-route[data-v-ff6a645e]{overflow-wrap:anywhere}}@media (width<=640px){.plugins-page[data-v-ff6a645e]{padding:12px 8px 40px}.pg-sub[data-v-ff6a645e]{font-size:11.5px;line-height:1.5}.tag[data-v-ff6a645e]{font-size:11.5px}.card-desc[data-v-ff6a645e]{font-size:12.5px}.pg-stats[data-v-ff6a645e] .ant-btn{min-height:40px}}
@@ -0,0 +1 @@
1
+ .settings-page[data-v-5f6f2d0f]{padding:4px}.settings-card[data-v-5f6f2d0f]{overflow:hidden}.settings-layout[data-v-5f6f2d0f]{min-height:420px;display:flex}.settings-nav[data-v-5f6f2d0f]{border-right:1px solid var(--line);flex-direction:column;flex:0 0 180px;gap:2px;padding:14px;display:flex}.nav-item[data-v-5f6f2d0f]{width:100%;font-family:var(--font-body);color:var(--ink-faint);text-align:left;cursor:pointer;border-radius:var(--radius-panel-sm);transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:0;align-items:center;gap:9px;padding:8px 10px;font-size:13px;font-weight:500;display:flex}.nav-item[data-v-5f6f2d0f]:hover{color:var(--ink);background:var(--paper-deep)}.nav-item.active[data-v-5f6f2d0f]{color:var(--ink);background:var(--paper-deep);font-weight:600}.settings-body[data-v-5f6f2d0f]{flex:1;min-width:0;padding:22px 26px}.section-title[data-v-5f6f2d0f]{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);margin:0 0 4px;font-size:22px;font-weight:400}.section-desc[data-v-5f6f2d0f]{color:var(--ink-faint);margin:0 0 18px;font-size:13px;line-height:1.6}.color-swatches[data-v-5f6f2d0f]{flex-wrap:wrap;gap:10px;margin:12px 0 4px;display:flex}.swatch[data-v-5f6f2d0f]{font-family:var(--font-body);color:var(--ink-soft);cursor:pointer;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:var(--radius-pill);transition:border-color var(--transition-fast), background var(--transition-fast);align-items:center;gap:8px;padding:8px 14px;font-size:13px;font-weight:500;display:inline-flex;position:relative}.swatch[data-v-5f6f2d0f]:hover{background:var(--paper-deep)}.swatch.on[data-v-5f6f2d0f]{color:var(--ink);border-color:var(--ink)}.swatch-dot[data-v-5f6f2d0f]{background:var(--sw);border:1px solid #00000014;border-radius:50%;width:14px;height:14px}.swatch-check[data-v-5f6f2d0f]{color:var(--ink);font-size:13px}.reset-btn[data-v-5f6f2d0f]{margin:10px 0 4px}.set-row[data-v-5f6f2d0f],.toggle-row[data-v-5f6f2d0f]{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;padding:18px 0;display:flex}.set-text[data-v-5f6f2d0f]{min-width:0}.set-title[data-v-5f6f2d0f]{color:var(--ink-soft);font-size:14px;font-weight:500}.set-sub[data-v-5f6f2d0f]{max-width:52ch;color:var(--ink-faint);margin-top:3px;font-size:13px;line-height:1.5}.switch[data-v-5f6f2d0f]{cursor:pointer;background:var(--line-strong);border-radius:var(--radius-pill);border:0;flex:none;width:42px;height:25px;padding:0;transition:background .18s cubic-bezier(.22,1,.36,1);position:relative}.switch .knob[data-v-5f6f2d0f]{background:var(--paper-raised);border-radius:50%;width:19px;height:19px;transition:transform .18s cubic-bezier(.22,1,.36,1);position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #0c0a0940}.switch.on[data-v-5f6f2d0f]{background:var(--accent)}.switch.on .knob[data-v-5f6f2d0f]{transform:translate(17px)}@media (prefers-reduced-motion:reduce){.switch[data-v-5f6f2d0f],.switch .knob[data-v-5f6f2d0f]{transition:none}}.identity-note[data-v-5f6f2d0f]{color:var(--ink-faint);margin:14px 0 0;font-size:12.5px}.rt-notice[data-v-5f6f2d0f]{margin:0 0 14px}.rt-groups-bar[data-v-5f6f2d0f]{align-items:center;gap:8px;margin:12px 0 10px;display:flex}.rt-groups-count[data-v-5f6f2d0f]{color:var(--ink-faint);font-size:11.5px}.rt-groups-add[data-v-5f6f2d0f]{margin-left:auto}.rt-group-form[data-v-5f6f2d0f]{background:var(--frost-bg);border:1px solid var(--glass-line);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;padding:10px 12px;display:flex}.rt-group[data-v-5f6f2d0f]{background:var(--surface-glass);border:1px solid var(--glass-line);border-radius:10px;margin:0 0 10px}.rt-group.grp-plugin[data-v-5f6f2d0f]{border-left:3px solid color-mix(in srgb, var(--tone-info-dot) 55%, transparent)}.rt-group-head[data-v-5f6f2d0f]{border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 14px;display:flex}.rt-group.collapsed .rt-group-head[data-v-5f6f2d0f]{border-radius:10px}.rt-group-head[role=button][data-v-5f6f2d0f]{cursor:pointer}.rt-group-head[role=button][data-v-5f6f2d0f]:hover{background:var(--hover-tint)}.rt-caret[data-v-5f6f2d0f]{color:var(--ink-faint);flex:none;font-size:15px}.rt-group-icon[data-v-5f6f2d0f]{color:var(--accent);flex:none;font-size:14px}.rt-rename[data-v-5f6f2d0f]{width:200px;color:var(--ink);background:var(--paper-deep);border:1px solid var(--accent);border-radius:var(--radius-chip);padding:2px 8px;font-size:14px}.rt-group-badge[data-v-5f6f2d0f]{color:var(--ink-faint);border:1px solid var(--glass-line);border-radius:99px;flex:none;padding:1px 7px;font-size:11.5px}.rt-group.grp-plugin .rt-group-badge[data-v-5f6f2d0f]{color:var(--tone-info-dot);border-color:color-mix(in srgb, var(--tone-info-dot) 40%, transparent)}.rt-group-fields[data-v-5f6f2d0f]{color:var(--ink-faint);flex:none;font-size:11.5px}.rt-group-desc[data-v-5f6f2d0f]{min-width:0;color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.rt-group-ops[data-v-5f6f2d0f]{opacity:0;align-items:center;gap:2px;margin-left:auto;transition:opacity .15s;display:flex}.rt-group-head:hover .rt-group-ops[data-v-5f6f2d0f],.rt-group-ops[data-v-5f6f2d0f]:focus-within{opacity:1}.rt-group-body[data-v-5f6f2d0f]{border-top:1px solid var(--line);padding:0 14px 6px}.rt-group-empty[data-v-5f6f2d0f]{color:var(--ink-faint);margin:10px 0 4px;font-size:12.5px}.rt-group-title[data-v-5f6f2d0f]{font-family:var(--font-display);letter-spacing:.01em;color:var(--ink-soft);margin:0;font-size:14.5px;font-weight:600}.rt-group-title.plugin-group-title[data-v-5f6f2d0f]{margin:20px 0 2px;font-size:15px}.rt-row[data-v-5f6f2d0f]{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:18px;padding:11px 0;display:flex}.rt-main[data-v-5f6f2d0f]{min-width:0}.rt-title[data-v-5f6f2d0f]{color:var(--ink-soft);align-items:center;gap:8px;font-size:13.5px;font-weight:500;display:flex}.rt-sub[data-v-5f6f2d0f]{max-width:46ch;color:var(--ink-faint);margin-top:3px;font-size:13px;line-height:1.5}.rt-tag[data-v-5f6f2d0f]{font-family:var(--font-mono);color:var(--ink-faint);border:1px solid var(--line-strong);border-radius:var(--radius-pill);padding:1px 7px;font-size:11.5px;font-weight:500;line-height:1.5}.rt-tag.src-runtime[data-v-5f6f2d0f]{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 45%, transparent)}.rt-tag.src-env[data-v-5f6f2d0f]{color:#c9963f;border-color:#c9963f73}.rt-tag.live[data-v-5f6f2d0f]{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 45%, transparent)}.rt-tag.restart[data-v-5f6f2d0f]{color:#c9963f;border-color:#c9963f73}.rt-ctrl[data-v-5f6f2d0f]{flex:none;align-items:center;gap:8px;display:flex}.rt-color[data-v-5f6f2d0f]{align-items:center;gap:8px;display:inline-flex}.rt-color input[type=color][data-v-5f6f2d0f]{cursor:pointer;background:var(--paper-raised);border:1px solid var(--line-strong);border-radius:6px;width:36px;height:32px;padding:2px}.rt-reset[data-v-5f6f2d0f]{padding:4px 9px;font-size:12px}.rt-actions[data-v-5f6f2d0f]{align-items:center;gap:10px;margin-top:18px;display:flex}.rt-path[data-v-5f6f2d0f]{color:var(--ink-faint);margin-left:auto;font-size:11.5px}.plugin-group-title[data-v-5f6f2d0f]{border-top:1px solid var(--line);margin-top:30px;padding-top:22px}.plugin-row[data-v-5f6f2d0f]{border-bottom:1px solid var(--line);transition:opacity var(--transition-fast);justify-content:space-between;align-items:center;gap:18px;padding:13px 0;display:flex}.plugin-row.off[data-v-5f6f2d0f]{opacity:.55}.plugin-main[data-v-5f6f2d0f]{min-width:0}.plugin-health[data-v-5f6f2d0f]{align-items:center;gap:5px;max-width:320px;font-size:12.5px;line-height:1.4;display:inline-flex}.plugin-health.ok[data-v-5f6f2d0f]{color:#2e9e6b}.plugin-health.bad[data-v-5f6f2d0f]{color:#c2554a}.plugin-health.faint[data-v-5f6f2d0f]{color:var(--ink-faint)}.plugin-health .spin[data-v-5f6f2d0f]{animation:.9s linear infinite plugin-spin-5f6f2d0f}@keyframes plugin-spin-5f6f2d0f{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.plugin-health .spin[data-v-5f6f2d0f]{animation:none}}@media (width<=768px){.plugin-row[data-v-5f6f2d0f],.rt-row[data-v-5f6f2d0f]{flex-direction:column;align-items:flex-start;gap:10px}.rt-actions[data-v-5f6f2d0f]{flex-wrap:wrap}.rt-path[data-v-5f6f2d0f]{margin-left:0}}@media (width<=899px){.settings-layout[data-v-5f6f2d0f]{flex-direction:column;min-height:0}.settings-nav[data-v-5f6f2d0f]{overscroll-behavior-x:contain;border-right:0;border-bottom:1px solid var(--line);scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-direction:row;flex:none;gap:6px;padding:8px 10px;overflow-x:auto}.settings-nav[data-v-5f6f2d0f]::-webkit-scrollbar{display:none}.nav-item[data-v-5f6f2d0f]{white-space:nowrap;flex:none;width:auto;min-height:40px;padding:8px 14px}.settings-body[data-v-5f6f2d0f]{padding:16px 12px}.settings-card[data-v-5f6f2d0f] .ant-card-body{padding:12px}.identity-note[data-v-5f6f2d0f],.plugin-health[data-v-5f6f2d0f],.rt-group-empty[data-v-5f6f2d0f],.rt-sub[data-v-5f6f2d0f],.section-desc[data-v-5f6f2d0f],.set-sub[data-v-5f6f2d0f]{font-size:13px}.rt-group-desc[data-v-5f6f2d0f]{flex:100%}.rt-group-head .mini-btn[data-v-5f6f2d0f],.rt-group-ops .mini-btn[data-v-5f6f2d0f]{min-width:40px;min-height:40px;padding:6px 10px}}@media (hover:none){.rt-group-ops[data-v-5f6f2d0f]{opacity:1}}
@@ -0,0 +1 @@
1
+ .page[data-v-ce9bd2cc]{padding:4px}.head[data-v-ce9bd2cc]{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}h2[data-v-ce9bd2cc]{margin:0 0 4px}.sub[data-v-ce9bd2cc]{opacity:.55;margin:0;font-size:12px}.toolbar[data-v-ce9bd2cc]{align-items:center;gap:12px;margin-bottom:12px;display:flex}.admin-note[data-v-ce9bd2cc]{color:var(--ink-faint);align-items:center;gap:5px;font-size:11px;display:inline-flex}.grid[data-v-ce9bd2cc]{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;display:grid}.card[data-v-ce9bd2cc]{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius-panel);transition:border-color var(--transition-fast);flex-direction:column;gap:10px;padding:14px;display:flex}.card[data-v-ce9bd2cc]:hover{border-color:var(--line-strong)}.card-head[data-v-ce9bd2cc]{align-items:center;gap:8px;display:flex}.name[data-v-ce9bd2cc]{flex:auto;font-size:15px;font-weight:600}.vis-tag[data-v-ce9bd2cc]{margin-right:2px}.owner[data-v-ce9bd2cc]{color:var(--ink-faint);font-size:11px}.deploy-btn[data-v-ce9bd2cc]{border-color:var(--line-strong);flex:none;font-size:11.5px}.op[data-v-ce9bd2cc]{cursor:pointer;opacity:.4}.op[data-v-ce9bd2cc]:hover{opacity:1}.members[data-v-ce9bd2cc]{flex-direction:column;gap:4px;display:flex}.member[data-v-ce9bd2cc]{align-items:center;gap:6px;font-size:12px;display:flex}.member-name[data-v-ce9bd2cc]{font-weight:500}.member-harness[data-v-ce9bd2cc]{font-family:var(--font-mono);opacity:.5;margin-left:auto;font-size:10.5px}.rm[data-v-ce9bd2cc]{cursor:pointer;opacity:.35}.rm[data-v-ce9bd2cc]:hover{opacity:1}.card.placeholder[data-v-ce9bd2cc]{opacity:.55;cursor:pointer;border-style:dashed;justify-content:center;align-items:center;min-height:140px;font-size:13px}.big[data-v-ce9bd2cc]{font-size:28px}.plug-create-group[data-v-ce9bd2cc]{flex-direction:column;gap:6px;display:flex}.plug-builtin-tag[data-v-ce9bd2cc]{font-family:var(--font-mono);color:var(--ink-faint);border:1px solid var(--line-strong);border-radius:var(--radius-pill,999px);margin-left:6px;padding:0 6px;font-size:10.5px}.plug-hint[data-v-ce9bd2cc]{color:var(--ink-faint);margin-top:6px;font-size:11.5px;line-height:1.5}.plug-source[data-v-ce9bd2cc]{color:var(--ink-faint);margin:0 0 10px;font-size:12px}.plug-row[data-v-ce9bd2cc]{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:14px;padding:10px 0;display:flex}.plug-row[data-v-ce9bd2cc]:last-of-type{border-bottom:0}.plug-text[data-v-ce9bd2cc]{min-width:0}.plug-name[data-v-ce9bd2cc]{align-items:center;gap:6px;font-size:13px;font-weight:500;display:flex}.plug-desc[data-v-ce9bd2cc]{color:var(--ink-faint);margin-top:2px;font-size:11.5px;line-height:1.5}@media (width<=900px){.head[data-v-ce9bd2cc]{flex-direction:column;align-items:stretch;gap:12px}.head>div[data-v-ce9bd2cc]{min-width:0}.head h2[data-v-ce9bd2cc]{font-size:21px;line-height:1.25}.head[data-v-ce9bd2cc] .ant-space{flex-direction:column;align-items:stretch;gap:8px;width:100%;display:flex}.head[data-v-ce9bd2cc] .ant-space-item{width:100%}.head[data-v-ce9bd2cc] .ant-btn{width:100%;min-height:40px}.toolbar[data-v-ce9bd2cc]{flex-wrap:wrap;gap:8px}.toolbar[data-v-ce9bd2cc] .ant-segmented{flex:100%;min-width:0}.admin-note[data-v-ce9bd2cc]{flex:100%;min-width:0;font-size:11.5px;line-height:1.5}.grid[data-v-ce9bd2cc]{grid-template-columns:1fr}.card-head[data-v-ce9bd2cc],.member[data-v-ce9bd2cc]{flex-wrap:wrap}.member-harness[data-v-ce9bd2cc]{font-size:11.5px}}@media (width<=640px){.page[data-v-ce9bd2cc]{padding:0}.head h2[data-v-ce9bd2cc]{font-size:19px}.sub[data-v-ce9bd2cc]{font-size:11.5px;line-height:1.5}}