agentworkshop 0.8.6 → 0.8.7
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.
- package/.AgentWorkShop/prompts/host-tools.en.json +196 -68
- package/.AgentWorkShop/prompts/host-tools.json +5 -5
- package/.output/.AgentWorkShop/aml-python/train-example.py +92 -92
- package/.output/.AgentWorkShop/prompts/host-tools.en.json +196 -68
- package/.output/.AgentWorkShop/prompts/host-tools.json +5 -5
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/9Kt-rxrm.js +1 -0
- package/.output/public/_nuxt/ATAvN55g.js +1 -0
- package/.output/public/_nuxt/B3GEA4IW.js +1 -0
- package/.output/public/_nuxt/B9qIhT7k2.js +1 -0
- package/.output/public/_nuxt/BBTI9r9T2.js +1 -0
- package/.output/public/_nuxt/BE9oKpOt.js +1 -0
- package/.output/public/_nuxt/BHOjkDAJ.js +21 -0
- package/.output/public/_nuxt/BTaGYNZF2.js +1 -0
- package/.output/public/_nuxt/BXUDD9fv.js +1 -0
- package/.output/public/_nuxt/BXbZ_hei.js +1 -0
- package/.output/public/_nuxt/BaGy_jAI2.js +1 -0
- package/.output/public/_nuxt/BdfAuX81.js +1 -0
- package/.output/public/_nuxt/Buj_DMJ-.js +1 -0
- package/.output/public/_nuxt/Bv7dyPx4.js +1 -0
- package/.output/public/_nuxt/BvjY-Xks.js +1 -0
- package/.output/public/_nuxt/BxC9PAu-2.js +1 -0
- package/.output/public/_nuxt/Bzfzp9-f.js +1 -0
- package/.output/public/_nuxt/CT4bi_Y4.js +1 -0
- package/.output/public/_nuxt/CWcaJnFp.js +1 -0
- package/.output/public/_nuxt/CYLe9LKr.js +1 -0
- package/.output/public/_nuxt/CeCSjB9O2.js +1 -0
- package/.output/public/_nuxt/CnoJJb7B.js +1 -0
- package/.output/public/_nuxt/Crf8_Ad02.js +1 -0
- package/.output/public/_nuxt/CtMTOx_-2.js +1 -0
- package/.output/public/_nuxt/Cv9OcYm3.js +1 -0
- package/.output/public/_nuxt/CxIF09Zj2.js +1 -0
- package/.output/public/_nuxt/CxR0TyUA.js +1 -0
- package/.output/public/_nuxt/D9tNM-1a.js +9 -0
- package/.output/public/_nuxt/DL8QM0x5.js +1 -0
- package/.output/public/_nuxt/DO9Y3eoU.js +20 -0
- package/.output/public/_nuxt/DQLBGo6O.js +1 -0
- package/.output/public/_nuxt/DSqQKrMK2.js +1 -0
- package/.output/public/_nuxt/DXc4yISs.js +47 -0
- package/.output/public/_nuxt/DXmEuVFQ2.js +1 -0
- package/.output/public/_nuxt/DeXAMdSa2.js +1 -0
- package/.output/public/_nuxt/DjjOAXrj2.js +1 -0
- package/.output/public/_nuxt/DkRozlDP2.js +1 -0
- package/.output/public/_nuxt/DvI5fMX12.js +1 -0
- package/.output/public/_nuxt/DzWyfYJ12.js +2 -0
- package/.output/public/_nuxt/EXs4hr_w2.js +2 -0
- package/.output/public/_nuxt/LS9Wa05P.js +1 -0
- package/.output/public/_nuxt/MmlCf-EZ.js +1 -0
- package/.output/public/_nuxt/OmpTerminalPanel.DMWgGwDs.css +1 -0
- package/.output/public/_nuxt/PluginSlot.BqBzLD4T.css +1 -0
- package/.output/public/_nuxt/TownView.DQaU1HuK.css +1 -0
- package/.output/public/_nuxt/TugRY_4O.js +1 -0
- package/.output/public/_nuxt/UgCvr7b2.js +1 -0
- package/.output/public/_nuxt/WCG1-KXf2.js +16 -0
- package/.output/public/_nuxt/WybiLTow2.js +8 -0
- package/.output/public/_nuxt/YWsTLN5m.js +1 -0
- package/.output/public/_nuxt/Zn0BZpf0.js +3 -0
- package/.output/public/_nuxt/_id_.Be5JaH-P.css +1 -0
- package/.output/public/_nuxt/_wsId_.DSOfdfx2.css +1 -0
- package/.output/public/_nuxt/agents.CRomddYR.css +1 -0
- package/.output/public/_nuxt/aml.DgOMpDpv.css +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/02ba4bc7-f353-4183-a619-716921b5f0dc.json +1 -0
- package/.output/public/_nuxt/default.CpAx70gC.css +1 -0
- package/.output/public/_nuxt/eNEgl-ZF.js +1 -0
- package/.output/public/_nuxt/entry.Buc3k7Ha.css +1 -0
- package/.output/public/_nuxt/fJv3DH8b.js +1 -0
- package/.output/public/_nuxt/logs.6VGjPS34.css +1 -0
- package/.output/public/_nuxt/monitor.OoNTwfMJ.css +1 -0
- package/.output/public/_nuxt/ontology.D4P756Tc.css +1 -0
- package/.output/public/_nuxt/operations.C48ggFa5.css +1 -0
- package/.output/public/_nuxt/pages.Dpa28tJW.css +1 -0
- package/.output/public/_nuxt/permissions.CrV-4t-6.css +1 -0
- package/.output/public/_nuxt/px0VQ09m.js +2 -0
- package/.output/public/_nuxt/schedules.DYWOjGHm.css +1 -0
- package/.output/public/_nuxt/teams.DEJoJ4QV.css +1 -0
- package/.output/public/_nuxt/tokens.DKZWCP5v.css +1 -0
- package/.output/public/_nuxt/tools.DP-nsTli.css +1 -0
- package/.output/public/_nuxt/workshop.PT1xhP8C.css +1 -0
- package/.output/public/favicon.svg +14 -14
- package/.output/public/robots.txt +3 -3
- package/.output/server/chunks/_/AuthGate-G74Wr5IV.mjs +716 -0
- package/.output/server/chunks/_/AuthGate-G74Wr5IV.mjs.map +1 -0
- package/.output/server/chunks/_/FormItemContext-DmuQqaeJ.mjs +72 -0
- package/.output/server/chunks/_/FormItemContext-DmuQqaeJ.mjs.map +1 -0
- package/.output/server/chunks/_/LeftOutlined.mjs.map +1 -1
- package/.output/server/chunks/_/OmpTerminalPanel-CVn7GF98.mjs +942 -0
- package/.output/server/chunks/_/OmpTerminalPanel-CVn7GF98.mjs.map +1 -0
- package/.output/server/chunks/_/PluginSlot-CZlGlRoR.mjs +141 -0
- package/.output/server/chunks/_/PluginSlot-CZlGlRoR.mjs.map +1 -0
- package/.output/server/chunks/_/RightOutlined.mjs.map +1 -1
- package/.output/server/chunks/_/SearchOutlined.mjs +13 -13
- package/.output/server/chunks/_/SearchOutlined.mjs.map +1 -1
- package/.output/server/chunks/_/TownView-CaxNtCrZ.mjs +6496 -0
- package/.output/server/chunks/_/TownView-CaxNtCrZ.mjs.map +1 -0
- package/.output/server/chunks/_/_id_-CvCH8aqA.mjs +2045 -0
- package/.output/server/chunks/_/_id_-CvCH8aqA.mjs.map +1 -0
- package/.output/server/chunks/_/_id_-X_k47fyM.mjs +392 -0
- package/.output/server/chunks/_/_id_-X_k47fyM.mjs.map +1 -0
- package/.output/server/chunks/_/_wsId_-CIXvt220.mjs +14589 -0
- package/.output/server/chunks/_/_wsId_-CIXvt220.mjs.map +1 -0
- package/.output/server/chunks/_/access.mjs +1 -1
- package/.output/server/chunks/_/agents-Bipi0xxl.mjs +1078 -0
- package/.output/server/chunks/_/agents-Bipi0xxl.mjs.map +1 -0
- package/.output/server/chunks/_/alert-CNGhs--Y.mjs +263 -0
- package/.output/server/chunks/_/alert-CNGhs--Y.mjs.map +1 -0
- package/.output/server/chunks/_/aml-gCTIxLoE.mjs +814 -0
- package/.output/server/chunks/_/aml-gCTIxLoE.mjs.map +1 -0
- package/.output/server/chunks/_/analysis-BrSFajFi.mjs +533 -0
- package/.output/server/chunks/_/analysis-BrSFajFi.mjs.map +1 -0
- package/.output/server/chunks/_/api--f4L9O86.mjs +64 -0
- package/.output/server/chunks/_/api--f4L9O86.mjs.map +1 -0
- package/.output/server/chunks/_/api-CRGCw6io.mjs +53 -0
- package/.output/server/chunks/_/api-CRGCw6io.mjs.map +1 -0
- package/.output/server/chunks/_/api-DKutH26K.mjs +72 -0
- package/.output/server/chunks/_/api-DKutH26K.mjs.map +1 -0
- package/.output/server/chunks/_/api-error-BrL8jXVC.mjs +47 -0
- package/.output/server/chunks/_/api-error-BrL8jXVC.mjs.map +1 -0
- package/.output/server/chunks/_/apiClient-DrCvj3Zb.mjs +81 -0
- package/.output/server/chunks/_/apiClient-DrCvj3Zb.mjs.map +1 -0
- package/.output/server/chunks/_/binding-authz.mjs +4 -1
- package/.output/server/chunks/_/binding-authz.mjs.map +1 -1
- package/.output/server/chunks/_/board-DB55AvRS.mjs +189 -0
- package/.output/server/chunks/_/board-DB55AvRS.mjs.map +1 -0
- package/.output/server/chunks/_/builtin-catalog-edpDcgfL.mjs.map +1 -0
- package/.output/server/chunks/_/card-BECE6y_G.mjs +953 -0
- package/.output/server/chunks/_/card-BECE6y_G.mjs.map +1 -0
- package/.output/server/chunks/_/channel-templates-C0Njk-Ir.mjs +942 -0
- package/.output/server/chunks/_/channel-templates-C0Njk-Ir.mjs.map +1 -0
- package/.output/server/chunks/_/chart-pipeline-BpoWYMK_.mjs.map +1 -0
- package/.output/server/chunks/_/chart-trend-BWeZh5Lv.mjs.map +1 -0
- package/.output/server/chunks/_/checkbox-C6xY5uc6.mjs +439 -0
- package/.output/server/chunks/_/checkbox-C6xY5uc6.mjs.map +1 -0
- package/.output/server/chunks/_/client-only-DQ6Q0w4J.mjs +43 -0
- package/.output/server/chunks/_/client-only-DQ6Q0w4J.mjs.map +1 -0
- package/.output/server/chunks/_/constants-HPHJvjne.mjs +142 -0
- package/.output/server/chunks/_/constants-HPHJvjne.mjs.map +1 -0
- package/.output/server/chunks/_/core-CRlsQhzd.mjs +294 -0
- package/.output/server/chunks/_/core-CRlsQhzd.mjs.map +1 -0
- package/.output/server/chunks/_/daq-VLM0Ud2Y.mjs +1266 -0
- package/.output/server/chunks/_/daq-VLM0Ud2Y.mjs.map +1 -0
- package/.output/server/chunks/_/data-Bgx_w04W.mjs +481 -0
- package/.output/server/chunks/_/data-Bgx_w04W.mjs.map +1 -0
- package/.output/server/chunks/_/dcw-BstEJzQ4.mjs +505 -0
- package/.output/server/chunks/_/dcw-BstEJzQ4.mjs.map +1 -0
- package/.output/server/chunks/_/dcw-driver-badge-Df5wL_ZA.mjs.map +1 -0
- package/.output/server/chunks/_/default-Dmo-rt5V.mjs +2353 -0
- package/.output/server/chunks/_/default-Dmo-rt5V.mjs.map +1 -0
- package/.output/server/chunks/_/descriptions-B3uhDesi.mjs +406 -0
- package/.output/server/chunks/_/descriptions-B3uhDesi.mjs.map +1 -0
- package/.output/server/chunks/_/drawer-DwXxapMg.mjs +834 -0
- package/.output/server/chunks/_/drawer-DwXxapMg.mjs.map +1 -0
- package/.output/server/chunks/_/dropdown-DLrGy-Fs.mjs +14 -0
- package/.output/server/chunks/_/dropdown-DLrGy-Fs.mjs.map +1 -0
- package/.output/server/chunks/_/dropdown-nsGv8Gqx.mjs +540 -0
- package/.output/server/chunks/_/dropdown-nsGv8Gqx.mjs.map +1 -0
- package/.output/server/chunks/_/entity.mjs +1 -1
- package/.output/server/chunks/_/error-500.mjs.map +1 -1
- package/.output/server/chunks/_/es-DXSEkmAm.mjs +43 -0
- package/.output/server/chunks/_/es-DXSEkmAm.mjs.map +1 -0
- package/.output/server/chunks/_/firstNotUndefined-laiThpLD.mjs +2448 -0
- package/.output/server/chunks/_/firstNotUndefined-laiThpLD.mjs.map +1 -0
- package/.output/server/chunks/_/form-Cw2Ex9w5.mjs +4712 -0
- package/.output/server/chunks/_/form-Cw2Ex9w5.mjs.map +1 -0
- package/.output/server/chunks/_/hasIn-RYRGomyg.mjs +553 -0
- package/.output/server/chunks/_/hasIn-RYRGomyg.mjs.map +1 -0
- package/.output/server/chunks/_/hitl-CQowkJ6s.mjs +132 -0
- package/.output/server/chunks/_/hitl-CQowkJ6s.mjs.map +1 -0
- package/.output/server/chunks/_/host-bindings.mjs +1 -1
- package/.output/server/chunks/_/index.mjs +1 -1
- package/.output/server/chunks/_/input-CJgB-RL6.mjs +2181 -0
- package/.output/server/chunks/_/input-CJgB-RL6.mjs.map +1 -0
- package/.output/server/chunks/_/input-number-CQKL42p_.mjs +1120 -0
- package/.output/server/chunks/_/input-number-CQKL42p_.mjs.map +1 -0
- package/.output/server/chunks/_/interval-CfceaI3F.mjs +9 -0
- package/.output/server/chunks/_/interval-CfceaI3F.mjs.map +1 -0
- package/.output/server/chunks/_/isNumeric-DQiJ-b15.mjs +7 -0
- package/.output/server/chunks/_/isNumeric-DQiJ-b15.mjs.map +1 -0
- package/.output/server/chunks/_/line-scope.mjs +1 -1
- package/.output/server/chunks/_/logs-Dt4ejjjU.mjs +492 -0
- package/.output/server/chunks/_/logs-Dt4ejjjU.mjs.map +1 -0
- package/.output/server/chunks/_/menu-xO8ocVtL.mjs +1952 -0
- package/.output/server/chunks/_/menu-xO8ocVtL.mjs.map +1 -0
- package/.output/server/chunks/_/monitor-vqmGVVN5.mjs +2253 -0
- package/.output/server/chunks/_/monitor-vqmGVVN5.mjs.map +1 -0
- package/.output/server/chunks/_/narrow-fetch-CcG-BPxc.mjs.map +1 -0
- package/.output/server/chunks/_/nitro.mjs +3017 -2781
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/_/ontology-ih0HgPpL.mjs +1406 -0
- package/.output/server/chunks/_/ontology-ih0HgPpL.mjs.map +1 -0
- package/.output/server/chunks/_/operations-BHmdVOUk.mjs +311 -0
- package/.output/server/chunks/_/operations-BHmdVOUk.mjs.map +1 -0
- package/.output/server/chunks/_/optimizer-DyvIYE4A.mjs +202 -0
- package/.output/server/chunks/_/optimizer-DyvIYE4A.mjs.map +1 -0
- package/.output/server/chunks/_/pages-C2KTn0U1.mjs +542 -0
- package/.output/server/chunks/_/pages-C2KTn0U1.mjs.map +1 -0
- package/.output/server/chunks/_/pagination-BTzq7dD5.mjs +1346 -0
- package/.output/server/chunks/_/pagination-BTzq7dD5.mjs.map +1 -0
- package/.output/server/chunks/_/permissions-BbTI02WI.mjs +637 -0
- package/.output/server/chunks/_/permissions-BbTI02WI.mjs.map +1 -0
- package/.output/server/chunks/_/pipeline-BgNjQ4J3.mjs +212 -0
- package/.output/server/chunks/_/pipeline-BgNjQ4J3.mjs.map +1 -0
- package/.output/server/chunks/_/plugins-CplEv3mY.mjs +272 -0
- package/.output/server/chunks/_/plugins-CplEv3mY.mjs.map +1 -0
- package/.output/server/chunks/_/popconfirm-DuGF7ty-.mjs +340 -0
- package/.output/server/chunks/_/popconfirm-DuGF7ty-.mjs.map +1 -0
- package/.output/server/chunks/_/responsiveObserve-CzRpNXkr.mjs +78 -0
- package/.output/server/chunks/_/responsiveObserve-CzRpNXkr.mjs.map +1 -0
- package/.output/server/chunks/_/rest-auth.mjs +1 -1
- package/.output/server/chunks/_/schedules-BN4t_4PG.mjs +7172 -0
- package/.output/server/chunks/_/schedules-BN4t_4PG.mjs.map +1 -0
- package/.output/server/chunks/_/segmented-29uEKZ3D.mjs +341 -0
- package/.output/server/chunks/_/segmented-29uEKZ3D.mjs.map +1 -0
- package/.output/server/chunks/_/select-CJb2XrQf.mjs +3923 -0
- package/.output/server/chunks/_/select-CJb2XrQf.mjs.map +1 -0
- package/.output/server/chunks/_/settings-BQaAoT4q.mjs +1014 -0
- package/.output/server/chunks/_/settings-BQaAoT4q.mjs.map +1 -0
- package/.output/server/chunks/_/space-BByD-mFE.mjs +110 -0
- package/.output/server/chunks/_/space-BByD-mFE.mjs.map +1 -0
- package/.output/server/chunks/_/spin-XhbgGeLP.mjs +357 -0
- package/.output/server/chunks/_/spin-XhbgGeLP.mjs.map +1 -0
- package/.output/server/chunks/_/studio-D5r5Rzaq.mjs +336 -0
- package/.output/server/chunks/_/studio-D5r5Rzaq.mjs.map +1 -0
- package/.output/server/chunks/_/switch-DWcwVFxW.mjs +377 -0
- package/.output/server/chunks/_/switch-DWcwVFxW.mjs.map +1 -0
- package/.output/server/chunks/_/table-Zhuo7Fq-.mjs +7546 -0
- package/.output/server/chunks/_/table-Zhuo7Fq-.mjs.map +1 -0
- package/.output/server/chunks/_/tabs-BCwBXjNt.mjs +1924 -0
- package/.output/server/chunks/_/tabs-BCwBXjNt.mjs.map +1 -0
- package/.output/server/chunks/_/tag-CRW-anwy.mjs +1156 -0
- package/.output/server/chunks/_/tag-CRW-anwy.mjs.map +1 -0
- package/.output/server/chunks/_/teams-BUtsNTet.mjs +1203 -0
- package/.output/server/chunks/_/teams-BUtsNTet.mjs.map +1 -0
- package/.output/server/chunks/_/tokens-o8lT3x-p.mjs +1062 -0
- package/.output/server/chunks/_/tokens-o8lT3x-p.mjs.map +1 -0
- package/.output/server/chunks/_/tools-DRb5HTtU.mjs +487 -0
- package/.output/server/chunks/_/tools-DRb5HTtU.mjs.map +1 -0
- package/.output/server/chunks/_/tooltip-GlMrUZzx.mjs +920 -0
- package/.output/server/chunks/_/tooltip-GlMrUZzx.mjs.map +1 -0
- package/.output/server/chunks/_/town-BPA3G6yX.mjs +133 -0
- package/.output/server/chunks/_/town-BPA3G6yX.mjs.map +1 -0
- package/.output/server/chunks/_/town-BV-hbwb5.mjs +75 -0
- package/.output/server/chunks/_/town-BV-hbwb5.mjs.map +1 -0
- package/.output/server/chunks/_/types-D6J7slEa.mjs +5565 -0
- package/.output/server/chunks/_/types-D6J7slEa.mjs.map +1 -0
- package/.output/server/chunks/_/types-DWqIeMRP.mjs +76 -0
- package/.output/server/chunks/_/types-DWqIeMRP.mjs.map +1 -0
- package/.output/server/chunks/_/useAgentHarnessOptions-dDHiEoK2.mjs +124 -0
- package/.output/server/chunks/_/useAgentHarnessOptions-dDHiEoK2.mjs.map +1 -0
- package/.output/server/chunks/_/useAgentTemplateActions-S3dtH5UW.mjs +77 -0
- package/.output/server/chunks/_/useAgentTemplateActions-S3dtH5UW.mjs.map +1 -0
- package/.output/server/chunks/_/useAgentTemplateDialogState-CZzpu5og.mjs +67 -0
- package/.output/server/chunks/_/useAgentTemplateDialogState-CZzpu5og.mjs.map +1 -0
- package/.output/server/chunks/_/useAgentTemplateForm-D8gneIvd.mjs +117 -0
- package/.output/server/chunks/_/useAgentTemplateForm-D8gneIvd.mjs.map +1 -0
- package/.output/server/chunks/_/useAgentTemplatesCatalog-DHUpubKM.mjs +133 -0
- package/.output/server/chunks/_/useAgentTemplatesCatalog-DHUpubKM.mjs.map +1 -0
- package/.output/server/chunks/_/useAmlDatasets-CDg3Qbpv.mjs +92 -0
- package/.output/server/chunks/_/useAmlDatasets-CDg3Qbpv.mjs.map +1 -0
- package/.output/server/chunks/_/useAmlEntities-Bcaput4Y.mjs +86 -0
- package/.output/server/chunks/_/useAmlEntities-Bcaput4Y.mjs.map +1 -0
- package/.output/server/chunks/_/useAmlEnv-Dga_Nq6z.mjs +194 -0
- package/.output/server/chunks/_/useAmlEnv-Dga_Nq6z.mjs.map +1 -0
- package/.output/server/chunks/_/useAmlExperiments-CFngqLM3.mjs +89 -0
- package/.output/server/chunks/_/useAmlExperiments-CFngqLM3.mjs.map +1 -0
- package/.output/server/chunks/_/useAmlFormat-C2sl3MGB.mjs +82 -0
- package/.output/server/chunks/_/useAmlFormat-C2sl3MGB.mjs.map +1 -0
- package/.output/server/chunks/_/useAmlJobs-C7onZkcR.mjs +267 -0
- package/.output/server/chunks/_/useAmlJobs-C7onZkcR.mjs.map +1 -0
- package/.output/server/chunks/_/useAmlModels-B2b3mx4d.mjs +93 -0
- package/.output/server/chunks/_/useAmlModels-B2b3mx4d.mjs.map +1 -0
- package/.output/server/chunks/_/useAmlNotes-6gZX7tbx.mjs +86 -0
- package/.output/server/chunks/_/useAmlNotes-6gZX7tbx.mjs.map +1 -0
- package/.output/server/chunks/_/useAmlPredict-DwOmM2ke.mjs +130 -0
- package/.output/server/chunks/_/useAmlPredict-DwOmM2ke.mjs.map +1 -0
- package/.output/server/chunks/_/useAnalysisFeed-CpPsKh_I.mjs +129 -0
- package/.output/server/chunks/_/useAnalysisFeed-CpPsKh_I.mjs.map +1 -0
- package/.output/server/chunks/_/useDaqAddNode-QtJja03_.mjs +142 -0
- package/.output/server/chunks/_/useDaqAddNode-QtJja03_.mjs.map +1 -0
- package/.output/server/chunks/_/useDaqDetailBinding-Dd5c4bep.mjs +70 -0
- package/.output/server/chunks/_/useDaqDetailBinding-Dd5c4bep.mjs.map +1 -0
- package/.output/server/chunks/_/useDaqDetailFrames-C2gvrOr6.mjs +79 -0
- package/.output/server/chunks/_/useDaqDetailFrames-C2gvrOr6.mjs.map +1 -0
- package/.output/server/chunks/_/useDaqDetailHistory-Bhht_iFw.mjs +176 -0
- package/.output/server/chunks/_/useDaqDetailHistory-Bhht_iFw.mjs.map +1 -0
- package/.output/server/chunks/_/useDaqDetailNode-BayXtr5W.mjs +99 -0
- package/.output/server/chunks/_/useDaqDetailNode-BayXtr5W.mjs.map +1 -0
- package/.output/server/chunks/_/useDaqDetailParams-D8d1l3_R.mjs +159 -0
- package/.output/server/chunks/_/useDaqDetailParams-D8d1l3_R.mjs.map +1 -0
- package/.output/server/chunks/_/useDaqFilters-TYucwywj.mjs +222 -0
- package/.output/server/chunks/_/useDaqFilters-TYucwywj.mjs.map +1 -0
- package/.output/server/chunks/_/useDaqNodeWindow-1DWj2H5G.mjs +90 -0
- package/.output/server/chunks/_/useDaqNodeWindow-1DWj2H5G.mjs.map +1 -0
- package/.output/server/chunks/_/useDaqOptimizations-o5hubsm8.mjs +136 -0
- package/.output/server/chunks/_/useDaqOptimizations-o5hubsm8.mjs.map +1 -0
- package/.output/server/chunks/_/useDaqStream-BCTOU87S.mjs +395 -0
- package/.output/server/chunks/_/useDaqStream-BCTOU87S.mjs.map +1 -0
- package/.output/server/chunks/_/useDaqTemplates-Fj64LHfn.mjs +187 -0
- package/.output/server/chunks/_/useDaqTemplates-Fj64LHfn.mjs.map +1 -0
- package/.output/server/chunks/_/useDashboardCharts-D45083s_.mjs +354 -0
- package/.output/server/chunks/_/useDashboardCharts-D45083s_.mjs.map +1 -0
- package/.output/server/chunks/_/useDashboardData-Cm_-daeI.mjs +153 -0
- package/.output/server/chunks/_/useDashboardData-Cm_-daeI.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwAddNode-DaqIQSXN.mjs +219 -0
- package/.output/server/chunks/_/useDcwAddNode-DaqIQSXN.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwCards-OhzgHbAI.mjs +67 -0
- package/.output/server/chunks/_/useDcwCards-OhzgHbAI.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwDetailScope-CaWcaiBg.mjs +184 -0
- package/.output/server/chunks/_/useDcwDetailScope-CaWcaiBg.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwDetailTemplates-CrOgqQMX.mjs +148 -0
- package/.output/server/chunks/_/useDcwDetailTemplates-CrOgqQMX.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwFilter-RH511Ra2.mjs +71 -0
- package/.output/server/chunks/_/useDcwFilter-RH511Ra2.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwLedger-Dg61GD1J.mjs +79 -0
- package/.output/server/chunks/_/useDcwLedger-Dg61GD1J.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwLineMutations-CiurWUFF.mjs +137 -0
- package/.output/server/chunks/_/useDcwLineMutations-CiurWUFF.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwLineRun-DTSemEZb.mjs +104 -0
- package/.output/server/chunks/_/useDcwLineRun-DTSemEZb.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwParamApprovals-DpnD-yw0.mjs +121 -0
- package/.output/server/chunks/_/useDcwParamApprovals-DpnD-yw0.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwProducts-CRAl59cn.mjs +93 -0
- package/.output/server/chunks/_/useDcwProducts-CRAl59cn.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwQuery-Cyh_iGa9.mjs +98 -0
- package/.output/server/chunks/_/useDcwQuery-Cyh_iGa9.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwQuickActions-BW5-5HFn.mjs +88 -0
- package/.output/server/chunks/_/useDcwQuickActions-BW5-5HFn.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwRecipes-Ct9bWJwP.mjs +258 -0
- package/.output/server/chunks/_/useDcwRecipes-Ct9bWJwP.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwStream-BerzMqxo.mjs +455 -0
- package/.output/server/chunks/_/useDcwStream-BerzMqxo.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwTemplates-PMVeSLNP.mjs +91 -0
- package/.output/server/chunks/_/useDcwTemplates-PMVeSLNP.mjs.map +1 -0
- package/.output/server/chunks/_/useDcwWrites-CND_sZdb.mjs +140 -0
- package/.output/server/chunks/_/useDcwWrites-CND_sZdb.mjs.map +1 -0
- package/.output/server/chunks/_/useDeviceTwins-FB6rTm-6.mjs +128 -0
- package/.output/server/chunks/_/useDeviceTwins-FB6rTm-6.mjs.map +1 -0
- package/.output/server/chunks/_/useExpConfirmations-b0bE75Yq.mjs +107 -0
- package/.output/server/chunks/_/useExpConfirmations-b0bE75Yq.mjs.map +1 -0
- package/.output/server/chunks/_/useLocalTime-BJ_4vg1E.mjs +55 -0
- package/.output/server/chunks/_/useLocalTime-BJ_4vg1E.mjs.map +1 -0
- package/.output/server/chunks/_/useLogsFormat-B-o4MHy7.mjs +77 -0
- package/.output/server/chunks/_/useLogsFormat-B-o4MHy7.mjs.map +1 -0
- package/.output/server/chunks/_/useLogsManual-Cxka55hz.mjs +89 -0
- package/.output/server/chunks/_/useLogsManual-Cxka55hz.mjs.map +1 -0
- package/.output/server/chunks/_/useLogsQuery-DxMHc7M4.mjs +150 -0
- package/.output/server/chunks/_/useLogsQuery-DxMHc7M4.mjs.map +1 -0
- package/.output/server/chunks/_/useLogsScope-HuOiW-OR.mjs +83 -0
- package/.output/server/chunks/_/useLogsScope-HuOiW-OR.mjs.map +1 -0
- package/.output/server/chunks/_/useMonitorColumns-vVnt3r5Q.mjs +217 -0
- package/.output/server/chunks/_/useMonitorColumns-vVnt3r5Q.mjs.map +1 -0
- package/.output/server/chunks/_/useMonitorData-Bf3w2khj.mjs +135 -0
- package/.output/server/chunks/_/useMonitorData-Bf3w2khj.mjs.map +1 -0
- package/.output/server/chunks/_/useMonitorFormat-DsiVqWoa.mjs +91 -0
- package/.output/server/chunks/_/useMonitorFormat-DsiVqWoa.mjs.map +1 -0
- package/.output/server/chunks/_/useMonitorTerminal-Dj4QwRNW.mjs +71 -0
- package/.output/server/chunks/_/useMonitorTerminal-Dj4QwRNW.mjs.map +1 -0
- package/.output/server/chunks/_/useOperationsFeed-Bg35fcgt.mjs +195 -0
- package/.output/server/chunks/_/useOperationsFeed-Bg35fcgt.mjs.map +1 -0
- package/.output/server/chunks/_/useOpsLog-BEzBrMf4.mjs +149 -0
- package/.output/server/chunks/_/useOpsLog-BEzBrMf4.mjs.map +1 -0
- package/.output/server/chunks/_/useRecipeDispatchApprovals-CZfcMRYk.mjs +156 -0
- package/.output/server/chunks/_/useRecipeDispatchApprovals-CZfcMRYk.mjs.map +1 -0
- package/.output/server/chunks/_/useResponsive-BKDMGTHs.mjs.map +1 -0
- package/.output/server/chunks/_/useTeamActions-CmiuiQiG.mjs +79 -0
- package/.output/server/chunks/_/useTeamActions-CmiuiQiG.mjs.map +1 -0
- package/.output/server/chunks/_/useTeamAddMemberDialog-CMpzf0jO.mjs +84 -0
- package/.output/server/chunks/_/useTeamAddMemberDialog-CMpzf0jO.mjs.map +1 -0
- package/.output/server/chunks/_/useTeamCreateDialog-BnvjXWso.mjs +97 -0
- package/.output/server/chunks/_/useTeamCreateDialog-BnvjXWso.mjs.map +1 -0
- package/.output/server/chunks/_/useTeamDeployDialog-C0FOUYep.mjs +80 -0
- package/.output/server/chunks/_/useTeamDeployDialog-C0FOUYep.mjs.map +1 -0
- package/.output/server/chunks/_/useTeamDialogState-CFRUQxAf.mjs +82 -0
- package/.output/server/chunks/_/useTeamDialogState-CFRUQxAf.mjs.map +1 -0
- package/.output/server/chunks/_/useTeamPluginDialog-Do-07a47.mjs +103 -0
- package/.output/server/chunks/_/useTeamPluginDialog-Do-07a47.mjs.map +1 -0
- package/.output/server/chunks/_/useTeamsCatalog-ClG_gBI8.mjs +123 -0
- package/.output/server/chunks/_/useTeamsCatalog-ClG_gBI8.mjs.map +1 -0
- package/.output/server/chunks/_/useTokenClipboard-CwQpoFeP.mjs +72 -0
- package/.output/server/chunks/_/useTokenClipboard-CwQpoFeP.mjs.map +1 -0
- package/.output/server/chunks/_/useTokenCreate-C4g5eKd3.mjs +115 -0
- package/.output/server/chunks/_/useTokenCreate-C4g5eKd3.mjs.map +1 -0
- package/.output/server/chunks/_/useTokenRename-ClWrxpNk.mjs +87 -0
- package/.output/server/chunks/_/useTokenRename-ClWrxpNk.mjs.map +1 -0
- package/.output/server/chunks/_/useTokenReveal-C8n1Vt9t.mjs +118 -0
- package/.output/server/chunks/_/useTokenReveal-C8n1Vt9t.mjs.map +1 -0
- package/.output/server/chunks/_/useTokensList-CgiH2W1C.mjs +92 -0
- package/.output/server/chunks/_/useTokensList-CgiH2W1C.mjs.map +1 -0
- package/.output/server/chunks/_/useTownBus-D9SoIsAN.mjs.map +1 -0
- package/.output/server/chunks/_/useWorkbenchAuth-DSstfK5Z.mjs +141 -0
- package/.output/server/chunks/_/useWorkbenchAuth-DSstfK5Z.mjs.map +1 -0
- package/.output/server/chunks/_/useWorkbenchWorkspaces-l_0SUOzn.mjs +138 -0
- package/.output/server/chunks/_/useWorkbenchWorkspaces-l_0SUOzn.mjs.map +1 -0
- package/.output/server/chunks/_/useWorkshopApi-Bqe2FlsB.mjs +127 -0
- package/.output/server/chunks/_/useWorkshopApi-Bqe2FlsB.mjs.map +1 -0
- package/.output/server/chunks/_/useWorkshopWs-DP4MbZsb.mjs +1659 -0
- package/.output/server/chunks/_/useWorkshopWs-DP4MbZsb.mjs.map +1 -0
- package/.output/server/chunks/_/useWorkspaceAuth-CzDigJGl.mjs +60 -0
- package/.output/server/chunks/_/useWorkspaceAuth-CzDigJGl.mjs.map +1 -0
- package/.output/server/chunks/_/useWorkspaceChannels-BLtsS6-m.mjs +92 -0
- package/.output/server/chunks/_/useWorkspaceChannels-BLtsS6-m.mjs.map +1 -0
- package/.output/server/chunks/_/useWorkspacePanels-CTwREmq0.mjs +78 -0
- package/.output/server/chunks/_/useWorkspacePanels-CTwREmq0.mjs.map +1 -0
- package/.output/server/chunks/_/useWorkspaceShell-rQHWNNWJ.mjs +168 -0
- package/.output/server/chunks/_/useWorkspaceShell-rQHWNNWJ.mjs.map +1 -0
- package/.output/server/chunks/_/users-BM1ZzxPp.mjs +569 -0
- package/.output/server/chunks/_/users-BM1ZzxPp.mjs.map +1 -0
- package/.output/server/chunks/_/workshop-CUXCV3RH.mjs +546 -0
- package/.output/server/chunks/_/workshop-CUXCV3RH.mjs.map +1 -0
- package/.output/server/chunks/_/workspaces-CmW0cpOt.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +19 -0
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/analysis/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/analysis/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/analysis/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/execution-mode.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/ingest.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index7.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index6.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index6.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/vm/predict.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/exp/confirmations/_id/decide.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/exp/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs +18 -6
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/index2.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/profiles/_id/publish.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/datasets.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/eligibility.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/experiments.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/index.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/train.post.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs.map +1 -1
- package/.output/server/chunks/virtual/entry.mjs +394 -376
- package/.output/server/chunks/virtual/entry.mjs.map +1 -1
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/chunks/virtual/precomputed.mjs.map +1 -1
- package/.output/server/index.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +4 -3
- package/README.md +13 -8
- package/app/components/AwLogo.vue +75 -75
- package/app/components/aml/AmlDatasetFormModal.vue +279 -279
- package/app/components/aml/AmlDatasetTable.vue +319 -319
- package/app/components/aml/AmlExperimentsTable.vue +142 -142
- package/app/components/aml/AmlInfraBanner.vue +23 -23
- package/app/components/aml/AmlJobsTable.vue +248 -248
- package/app/components/aml/AmlOverviewBar.vue +62 -62
- package/app/components/aml/AmlPageHeader.vue +47 -47
- package/app/components/aml/AmlPredictConsole.vue +201 -201
- package/app/components/app-header/HitlBell.vue +423 -423
- package/app/components/daq/DaqAddNodeModal.vue +209 -209
- package/app/components/daq/DaqAlarmBar.vue +46 -46
- package/app/components/daq/DaqControlCard.vue +159 -159
- package/app/components/daq/DaqInfraBanner.vue +31 -31
- package/app/components/daq/DaqLineBanner.vue +47 -47
- package/app/components/daq/DaqNodePanel.vue +396 -396
- package/app/components/daq/DaqOptPanel.vue +197 -197
- package/app/components/daq/DaqTemplateModal.vue +246 -246
- package/app/components/dashboard/DashboardGaugeBand.vue +78 -78
- package/app/components/dashboard/DashboardHero.vue +209 -209
- package/app/components/dashboard/DashboardLineStatePanel.vue +78 -78
- package/app/components/dashboard/DashboardNodeStatePanel.vue +46 -46
- package/app/components/dashboard/DashboardPipelinePanel.vue +46 -46
- package/app/components/dashboard/DashboardTrendPanel.vue +83 -83
- package/app/components/dashboard/DashboardWritePanel.vue +52 -52
- package/app/components/dcw/DcwCreateLineModal.vue +105 -105
- package/app/components/dcw/DcwDeleteLineModal.vue +73 -73
- package/app/components/dcw/DcwDetailTemplateModal.vue +238 -238
- package/app/components/dcw/DcwLedgerCard.vue +160 -160
- package/app/components/dcw/DcwMesArtifacts.vue +140 -140
- package/app/components/dcw/DcwProductCreateModal.vue +113 -113
- package/app/components/dcw/DcwRecipeDispatchHistoryModal.vue +244 -244
- package/app/components/dcw/DcwRecipeEditModal.vue +399 -399
- package/app/components/dcw/DcwRecipeHistoryModal.vue +165 -165
- package/app/components/dcw/DcwRunDataModal.vue +191 -191
- package/app/components/dcw/DcwTemplateModal.vue +227 -227
- package/app/components/dcw/DcwWriteHistoryCard.vue +96 -96
- package/app/components/dcw/ExpConfirmCard.vue +103 -103
- package/app/components/dcw/RecipeDispatchApprovalCard.vue +330 -330
- package/app/components/logs/LogsEventTable.vue +36 -3
- package/app/components/logs/LogsManualModal.vue +23 -1
- package/app/components/logs/LogsPageHead.vue +122 -71
- package/app/components/monitor/MonitorAgentTable.vue +143 -143
- package/app/components/monitor/MonitorChannelTable.vue +80 -80
- package/app/components/monitor/MonitorLoginGate.vue +24 -24
- package/app/components/monitor/MonitorPageHead.vue +92 -92
- package/app/components/monitor/MonitorProcessTable.vue +159 -159
- package/app/components/ontology/OntologyGraph.vue +356 -356
- package/app/components/operations/OperationsFilterCard.vue +164 -164
- package/app/components/operations/OperationsPageHead.vue +47 -47
- package/app/components/tokens/TokenCreateModal.vue +42 -42
- package/app/components/tokens/TokenOnceModal.vue +164 -164
- package/app/components/tokens/TokenRenameModal.vue +40 -40
- package/app/components/tokens/TokensPageHead.vue +76 -76
- package/app/components/workshop/A2aRpcDebugger.vue +237 -237
- package/app/components/workshop/AgentInspectorDrawer.vue +424 -424
- package/app/components/workshop/AgentLanesView.vue +278 -278
- package/app/components/workshop/ArtifactCard.vue +120 -120
- package/app/components/workshop/AssetLibrary.vue +452 -452
- package/app/components/workshop/ChatMemberPanel.vue +556 -556
- package/app/components/workshop/CommandPalette.vue +270 -270
- package/app/components/workshop/Composer.vue +540 -540
- package/app/components/workshop/DaqTemplateIcon.vue +33 -33
- package/app/components/workshop/DeviceTwinPanel.vue +167 -167
- package/app/components/workshop/FileSelectorModal.vue +188 -188
- package/app/components/workshop/InspectorPanel.vue +301 -301
- package/app/components/workshop/PluginSlot.vue +120 -120
- package/app/components/workshop/TranscriptTimeline.vue +223 -223
- package/app/components/workshop/agents/AgentTemplateEditModal.vue +139 -139
- package/app/components/workshop/blocks/ClusterArtifact.vue +61 -61
- package/app/components/workshop/blocks/ClusterError.vue +85 -85
- package/app/components/workshop/blocks/ClusterLife.vue +87 -87
- package/app/components/workshop/blocks/ClusterMember.vue +95 -95
- package/app/components/workshop/blocks/ClusterMemory.vue +84 -84
- package/app/components/workshop/blocks/ClusterOther.vue +67 -67
- package/app/components/workshop/blocks/ClusterStatus.vue +149 -149
- package/app/components/workshop/blocks/ClusterTool.vue +176 -176
- package/app/components/workshop/blocks/EventBlockAvatar.vue +114 -114
- package/app/components/workshop/blocks/EventBlockHead.vue +232 -232
- package/app/components/workshop/composer/ComposerToolbar.vue +278 -278
- package/app/components/workshop/composer/MentionMenu.vue +135 -135
- package/app/components/workshop/composer/ReplyChip.vue +65 -65
- package/app/components/workshop/composer/StatusChip.vue +171 -171
- package/app/components/workshop/console/Dock.vue +71 -71
- package/app/components/workshop/console/LeftPane.vue +84 -84
- package/app/components/workshop/device-twin/DeviceTwinCard.vue +265 -265
- package/app/components/workshop/device-twin/DeviceTwinDcwSection.vue +203 -203
- package/app/components/workshop/lanes/AddMemberModal.vue +270 -270
- package/app/components/workshop/lanes/EditMemberModal.vue +106 -106
- package/app/components/workshop/lanes/LanesToolbar.vue +97 -97
- package/app/components/workshop/session-list/MountChannelModal.vue +124 -124
- package/app/components/workshop/session-list/SaveTemplateModal.vue +93 -93
- package/app/components/workshop/task-board/Card.vue +172 -172
- package/app/components/workshop/task-board/Column.vue +151 -151
- package/app/components/workshop/task-board/List.vue +157 -157
- package/app/components/workshop/task-board/StatusMenu.vue +88 -88
- package/app/components/workshop/teams/TeamAddMemberModal.vue +53 -53
- package/app/components/workshop/teams/TeamCreateModal.vue +94 -94
- package/app/components/workshop/teams/TeamDeployModal.vue +40 -40
- package/app/components/workshop/teams/TeamPluginModal.vue +119 -119
- package/app/components/workshop/terminal/OmpTerminalPanel.vue +270 -270
- package/app/components/workshop/terminal/TerminalHitlCard.vue +170 -170
- package/app/components/workshop/town/TownScene.ts +466 -466
- package/app/components/workshop/town/TownView.vue +561 -561
- package/app/components/workshop/town/components/AutoModeConfirmModal.vue +94 -94
- package/app/components/workshop/town/components/TownAgentBindings.vue +417 -405
- package/app/components/workshop/town/components/TownAgentInspector.vue +554 -554
- package/app/components/workshop/town/components/TownAlarmList.vue +147 -147
- package/app/components/workshop/town/components/TownBoundaryPanel.vue +350 -350
- package/app/components/workshop/town/components/TownCalloutLayer.vue +147 -147
- package/app/components/workshop/town/components/TownChannelDock.vue +116 -116
- package/app/components/workshop/town/components/TownControlDock.vue +405 -405
- package/app/components/workshop/town/components/TownDaqNodeInspector.vue +345 -345
- package/app/components/workshop/town/components/TownDaqTree.vue +366 -366
- package/app/components/workshop/town/components/TownDcwBindSection.vue +473 -473
- package/app/components/workshop/town/components/TownDcwNodeInspector.vue +185 -185
- package/app/components/workshop/town/components/TownDcwTree.vue +280 -280
- package/app/components/workshop/town/components/TownDeviceBindings.vue +394 -394
- package/app/components/workshop/town/components/TownDeviceTransform.vue +248 -248
- package/app/components/workshop/town/components/TownEventList.vue +120 -120
- package/app/components/workshop/town/components/TownHealthBody.vue +100 -100
- package/app/components/workshop/town/components/TownKpiStrip.vue +207 -207
- package/app/components/workshop/town/components/TownLeftRail.vue +308 -308
- package/app/components/workshop/town/components/TownLoadingMask.vue +61 -61
- package/app/components/workshop/town/components/TownNavMap.vue +154 -154
- package/app/components/workshop/town/components/TownRightRail.vue +543 -543
- package/app/components/workshop/town/components/TownStage.vue +281 -281
- package/app/components/workshop/town/components/TownStageTop.vue +238 -238
- package/app/components/workshop/town/components/TownStatusBar.vue +108 -108
- package/app/components/workshop/town/components/TownTopNav.vue +367 -367
- package/app/components/workshop/town/components/TownTrendDock.vue +178 -178
- package/app/components/workshop/town/scene/town-scene-agents.ts +254 -254
- package/app/components/workshop/town/scene/town-scene-behavior.ts +194 -194
- package/app/components/workshop/town/scene/town-scene-bubbles.ts +96 -96
- package/app/components/workshop/town/scene/town-scene-core.ts +158 -158
- package/app/components/workshop/town/scene/town-scene-models.ts +109 -109
- package/app/components/workshop/town/scene/town-scene-visuals.ts +279 -279
- package/app/components/workshop/town/scene/town-scene3d-agents.ts +308 -308
- package/app/components/workshop/town/scene/town-scene3d-blocks.ts +297 -297
- package/app/components/workshop/town/scene/town-scene3d-bubbles.ts +281 -281
- package/app/components/workshop/town/scene/town-scene3d-camera.ts +282 -282
- package/app/components/workshop/town/scene/town-scene3d-devices.ts +433 -433
- package/app/components/workshop/town/scene/town-scene3d-editing.ts +490 -490
- package/app/components/workshop/town/scene/town-scene3d-events.ts +173 -173
- package/app/components/workshop/town/scene/town-scene3d-factory.ts +412 -412
- package/app/components/workshop/town/scene/town-scene3d-hud.ts +110 -110
- package/app/components/workshop/town/scene/town-scene3d-lifecycle.ts +144 -144
- package/app/components/workshop/town/scene/town-scene3d-links.ts +141 -141
- package/app/components/workshop/town/scene/town-scene3d-loop.ts +286 -286
- package/app/components/workshop/town/scene/town-scene3d-models.ts +154 -154
- package/app/components/workshop/town/scene/town-scene3d-nodes.ts +562 -562
- package/app/components/workshop/town/scene/town-scene3d-ranges.ts +273 -273
- package/app/components/workshop/town/scene/town-scene3d-renderer.ts +320 -320
- package/app/components/workshop/town/scene/town-scene3d-selection.ts +257 -257
- package/app/components/workshop/town/scene/town-scene3d-types.ts +264 -264
- package/app/components/workshop/transcript/TranscriptBlockList.vue +68 -68
- package/app/components/workshop/transcript/TranscriptEarlierPager.vue +81 -81
- package/app/components/workshop/transcript/TranscriptFilterBar.vue +126 -126
- package/app/components/workshop/workbench/CreateWorkspaceModal.vue +36 -36
- package/app/components/workshop/workbench/WorkspaceEmpty.vue +56 -56
- package/app/composables/useResponsive.ts +88 -88
- package/app/composables/workshop/device-twin-types.ts +29 -29
- package/app/composables/workshop/event-blocks/attention.ts +58 -58
- package/app/composables/workshop/event-blocks/classify.ts +44 -44
- package/app/composables/workshop/event-blocks/clusterer.ts +231 -231
- package/app/composables/workshop/event-blocks/fold-stream.ts +45 -45
- package/app/composables/workshop/event-blocks/markdown.ts +81 -81
- package/app/composables/workshop/event-blocks/mentions.ts +49 -49
- package/app/composables/workshop/event-blocks/text-utils.ts +100 -100
- package/app/composables/workshop/event-blocks/types.ts +40 -40
- package/app/composables/workshop/town/town-relay-props.ts +231 -231
- package/app/composables/workshop/town/town-view-types.ts +145 -145
- package/app/composables/workshop/town/useTownAgentBindings.ts +183 -182
- package/app/composables/workshop/town/useTownAgentChat.ts +203 -203
- package/app/composables/workshop/town/useTownAlarms.ts +36 -36
- package/app/composables/workshop/town/useTownCallouts.ts +174 -174
- package/app/composables/workshop/town/useTownChannels.ts +220 -220
- package/app/composables/workshop/town/useTownHealth.ts +66 -66
- package/app/composables/workshop/town/useTownHudTickers.ts +77 -77
- package/app/composables/workshop/town/useTownLayout.ts +277 -277
- package/app/composables/workshop/town/useTownNavMap.ts +301 -301
- package/app/composables/workshop/town/useTownNodeBindings.ts +345 -345
- package/app/composables/workshop/town/useTownPanelDrag.ts +91 -91
- package/app/composables/workshop/town/useTownRailData.ts +421 -421
- package/app/composables/workshop/town/useTownSceneControl.ts +92 -92
- package/app/composables/workshop/town/useTownSceneInput.ts +275 -275
- package/app/composables/workshop/town/useTownSceneRuntime.ts +390 -390
- package/app/composables/workshop/town/useTownSheets.ts +41 -41
- package/app/composables/workshop/town/useTownTrends.ts +93 -93
- package/app/composables/workshop/useChannelList.ts +88 -88
- package/app/composables/workshop/useChannelTerminals.ts +65 -65
- package/app/composables/workshop/useComposerMentions.ts +130 -130
- package/app/composables/workshop/useDcwStream.ts +377 -374
- package/app/composables/workshop/useDeviceTwinDcwWrite.ts +77 -77
- package/app/composables/workshop/useDeviceTwinPanel.ts +56 -56
- package/app/composables/workshop/useEscClose.ts +44 -44
- package/app/composables/workshop/useEventBlockView.ts +159 -159
- package/app/composables/workshop/useEventBlocks.ts +33 -33
- package/app/composables/workshop/useHitlAnswer.ts +184 -184
- package/app/composables/workshop/useLaneWidths.ts +27 -27
- package/app/composables/workshop/useOmpTerminalSession.ts +424 -424
- package/app/composables/workshop/useOpsLog.ts +1 -1
- package/app/composables/workshop/usePluginAdmin.ts +152 -152
- package/app/composables/workshop/usePluginPanels.ts +72 -72
- package/app/composables/workshop/useRuntimeConfigDraft.ts +118 -118
- package/app/composables/workshop/useSettingsGroups.ts +243 -243
- package/app/composables/workshop/useTaskBoardColumns.ts +47 -47
- package/app/composables/workshop/useTerminalRenderer.ts +308 -308
- package/app/composables/workshop/useTranscriptEnterStage.ts +48 -48
- package/app/composables/workshop/useTranscriptHistory.ts +52 -52
- package/app/composables/workshop/useTranscriptScroll.ts +113 -113
- package/app/composables/workshop/useVisibleInterval.ts +42 -42
- package/app/composables/workshop/useWorkshopWs.ts +265 -265
- package/app/config/index.ts +1 -1
- package/app/middleware/locale-cookie.global.ts +22 -22
- package/app/pages/aml/api.ts +6 -6
- package/app/pages/aml/composables/useAmlDatasets.ts +38 -38
- package/app/pages/aml/composables/useAmlEntities.ts +57 -57
- package/app/pages/aml/composables/useAmlEnv.ts +191 -191
- package/app/pages/aml/composables/useAmlExperiments.ts +45 -45
- package/app/pages/aml/composables/useAmlFormat.ts +44 -44
- package/app/pages/aml/composables/useAmlJobs.ts +131 -131
- package/app/pages/aml/composables/useAmlModels.ts +56 -56
- package/app/pages/aml/composables/useAmlNotes.ts +47 -47
- package/app/pages/aml/composables/useAmlPredict.ts +93 -93
- package/app/pages/aml/constants.ts +63 -63
- package/app/pages/aml/index.vue +236 -236
- package/app/pages/composables/useDashboardCharts.ts +192 -192
- package/app/pages/composables/useDashboardData.ts +144 -144
- package/app/pages/daq/composables/useDaqAddNode.ts +126 -126
- package/app/pages/daq/composables/useDaqDetailBinding.ts +29 -29
- package/app/pages/daq/composables/useDaqDetailFrames.ts +42 -42
- package/app/pages/daq/composables/useDaqDetailNode.ts +53 -53
- package/app/pages/daq/composables/useDaqDetailParams.ts +138 -138
- package/app/pages/daq/composables/useDaqFilters.ts +187 -187
- package/app/pages/daq/composables/useDaqNodeWindow.ts +86 -86
- package/app/pages/daq/composables/useDaqOptimizations.ts +99 -99
- package/app/pages/daq/composables/useDaqTemplates.ts +152 -152
- package/app/pages/daq/index.vue +260 -260
- package/app/pages/dcw/composables/useDcwCards.ts +27 -27
- package/app/pages/dcw/composables/useDcwDetailScope.ts +145 -145
- package/app/pages/dcw/composables/useDcwDetailTemplates.ts +94 -94
- package/app/pages/dcw/composables/useDcwFilter.ts +29 -29
- package/app/pages/dcw/composables/useDcwLedger.ts +34 -34
- package/app/pages/dcw/composables/useDcwLineMutations.ts +115 -115
- package/app/pages/dcw/composables/useDcwLineRun.ts +60 -60
- package/app/pages/dcw/composables/useDcwProducts.ts +54 -54
- package/app/pages/dcw/composables/useDcwQuery.ts +68 -68
- package/app/pages/dcw/composables/useDcwQuickActions.ts +47 -47
- package/app/pages/dcw/composables/useDcwRecipes.ts +256 -256
- package/app/pages/dcw/composables/useDcwTemplates.ts +50 -50
- package/app/pages/dcw/index.vue +195 -195
- package/app/pages/dcw/types.ts +9 -9
- package/app/pages/index.vue +126 -126
- package/app/pages/logs/composables/useLogsFormat.ts +43 -43
- package/app/pages/logs/composables/useLogsManual.ts +3 -0
- package/app/pages/logs/composables/useLogsScope.ts +39 -39
- package/app/pages/logs/index.vue +34 -1
- package/app/pages/monitor/types.ts +61 -61
- package/app/pages/operations.vue +61 -61
- package/app/pages/permissions/index.vue +369 -369
- package/app/pages/tokens/composables/useTokenClipboard.ts +33 -33
- package/app/pages/tokens/composables/useTokenCreate.ts +93 -93
- package/app/pages/tokens/composables/useTokenRename.ts +54 -54
- package/app/pages/tokens/composables/useTokenReveal.ts +84 -84
- package/app/pages/tokens/composables/useTokensList.ts +60 -60
- package/app/pages/tokens.vue +111 -111
- package/app/pages/tools/index.vue +98 -98
- package/app/pages/workshop/agents.vue +130 -130
- package/app/pages/workshop/composables/useAgentHarnessOptions.ts +59 -59
- package/app/pages/workshop/composables/useAgentTemplateActions.ts +42 -42
- package/app/pages/workshop/composables/useAgentTemplateDialogState.ts +24 -24
- package/app/pages/workshop/composables/useAgentTemplateForm.ts +88 -88
- package/app/pages/workshop/composables/useAgentTemplatesCatalog.ts +92 -92
- package/app/pages/workshop/composables/useTeamActions.ts +44 -44
- package/app/pages/workshop/composables/useTeamAddMemberDialog.ts +49 -49
- package/app/pages/workshop/composables/useTeamCreateDialog.ts +67 -67
- package/app/pages/workshop/composables/useTeamDeployDialog.ts +49 -49
- package/app/pages/workshop/composables/useTeamDialogState.ts +46 -46
- package/app/pages/workshop/composables/useTeamPluginDialog.ts +72 -72
- package/app/pages/workshop/composables/useTeamsCatalog.ts +100 -100
- package/app/pages/workshop/composables/useWorkbenchWorkspaces.ts +123 -123
- package/app/pages/workshop/composables/useWorkspaceAuth.ts +31 -31
- package/app/pages/workshop/composables/useWorkspaceChannels.ts +62 -62
- package/app/pages/workshop/composables/useWorkspaceShell.ts +136 -136
- package/app/pages/workshop/schedules.vue +553 -553
- package/app/pages/workshop/w/[wsId].vue +221 -221
- package/app/plugins/aw-plugins.client.ts +213 -213
- package/app/plugins/esc-close.client.ts +31 -31
- package/app/stores/workshop/hitl.ts +183 -183
- package/app/stores/workshop/narrow-fetch.ts +23 -23
- package/app/utils/api-error.ts +75 -75
- package/app/utils/builtin-catalog.ts +104 -104
- package/app/utils/chart-trend.ts +97 -97
- package/app/utils/dcw-driver-badge.ts +16 -16
- package/app/utils/dcw-recipe-form.ts +26 -26
- package/cli/commands/tui.mjs +28 -28
- package/cli/commands/update.mjs +124 -124
- package/cli/core/child-lifecycle.mjs +136 -136
- package/cli/core/meta.mjs +38 -38
- package/cli/core/post-build.mjs +96 -96
- package/config.yml +1 -1
- package/docs/cli.en.md +2 -2
- package/docs/cli.md +2 -2
- package/docs/mcp.en.md +27 -27
- package/docs/multi-harness-architecture.md +248 -248
- package/docs/plugins.en.md +1 -1
- package/docs/plugins.md +1 -1
- package/docs/sdk.en.md +1 -1
- package/docs/sdk.md +1 -1
- package/docs/tui.md +43 -43
- package/i18n/dicts/_en.json +1551 -1551
- package/i18n/dicts/_en2.json +300 -300
- package/i18n/dicts/_en4.json +114 -114
- package/i18n/dicts/agentLanesView.json +61 -61
- package/i18n/dicts/appHeader.json +17 -17
- package/i18n/dicts/channelSessionList.json +51 -51
- package/i18n/dicts/chat.json +79 -79
- package/i18n/dicts/clusterTool.json +4 -4
- package/i18n/dicts/composer.json +38 -38
- package/i18n/dicts/ctpl.json +37 -37
- package/i18n/dicts/dcwDetail.json +219 -219
- package/i18n/dicts/lineOps.json +14 -14
- package/i18n/dicts/multiChannelView.json +13 -13
- package/i18n/dicts/notifications.json +13 -13
- package/i18n/dicts/taskInspectorDrawer.json +25 -25
- package/i18n/dicts/teamPlugins.json +10 -10
- package/i18n/dicts/townView.json +211 -209
- package/i18n/locales/en.ts +9 -0
- package/i18n/locales/zh-CN.ts +9 -0
- package/mcp/discovery.mjs +227 -227
- package/package.json +3 -1
- package/public/favicon.svg +14 -14
- package/public/robots.txt +3 -3
- package/scripts/_audit/_live-mqtt-e2e-20261028.mjs +219 -219
- package/scripts/_audit/audit-harness-adapters.md +664 -664
- package/scripts/_audit/aw-mcp-live-e2e.mjs +293 -293
- package/scripts/_audit/bump-version.mjs +51 -51
- package/scripts/_audit/detached-instance.mjs +112 -112
- package/scripts/_audit/detached-start.mjs +103 -103
- package/scripts/_audit/eda-ui-fix-acceptance.mjs +212 -212
- package/scripts/_audit/guard-upstream-liveness.mjs +104 -104
- package/scripts/_audit/http-api-authz-audit.md +657 -657
- package/scripts/_audit/kb-team-mock-e2e.mjs +146 -146
- package/scripts/_audit/kb-team-omp-e2e.mjs +229 -229
- package/scripts/_audit/prompt-injection-probe.mts +76 -76
- package/scripts/_audit/run.mjs +21 -21
- package/scripts/_audit/runtime-audit.md +716 -716
- package/scripts/_audit/skills-guided-e2e.mjs +316 -316
- package/scripts/_audit/stability-soak.mjs +252 -252
- package/scripts/_audit/stubs/nuxt-imports.mjs +67 -67
- package/scripts/_audit/ts-register-hook.mjs +12 -12
- package/scripts/_audit/ts-resolve-hook.mjs +96 -96
- package/scripts/_aw0746-stage12.mjs +94 -94
- package/scripts/_aw0746-stage34.mjs +136 -136
- package/scripts/_aw0746-stage6b-train-sweep.mjs +145 -145
- package/scripts/_aw0746-stage6c-jobsmoke.mjs +69 -69
- package/scripts/_dbg-configroot-audit.mjs +86 -86
- package/scripts/_dbg-daq-intervals-func.mjs +115 -115
- package/scripts/_dbg-perms-e2e.mjs +142 -142
- package/scripts/_dbg-protocol-matrix.mjs +462 -462
- package/scripts/_dbg-render-regression.mjs +193 -193
- package/scripts/_dbg-schedule-e2e.mjs +262 -262
- package/scripts/_e2e-ui-functional.mjs +371 -371
- package/scripts/_lib-aml-python-run.mjs +17 -17
- package/scripts/_plc-sim-detached.cjs +22 -22
- package/scripts/_provision-injection-line.mjs +39 -39
- package/scripts/_run-matrix.ps1 +53 -53
- package/scripts/_sweep-button-contrast.mjs +87 -87
- package/scripts/acceptance-aml-hybrid-e2e.ts +396 -396
- package/scripts/acceptance-aml-hybrid-live.mjs +93 -93
- package/scripts/acceptance-aml-model-identity.ts +137 -137
- package/scripts/agent-daq-isolation-e2e.mjs +91 -91
- package/scripts/api-contract-smoke.mjs +126 -126
- package/scripts/ask-hitl-e2e.mjs +96 -96
- package/scripts/aw-expose.mjs +159 -159
- package/scripts/channel-interaction-smoke.mjs +80 -80
- package/scripts/data-studio-ui-e2e.mjs +163 -163
- package/scripts/demo-group-chat-all-real.ts +279 -279
- package/scripts/dev-modbus-simulator.mjs +55 -55
- package/scripts/docs-shots.mjs +36 -36
- package/scripts/e2e-agentteam-chat.mjs +473 -473
- package/scripts/e2e-agentteam-real-triage.mjs +421 -421
- package/scripts/e2e-aml-decoupled.mjs +162 -162
- package/scripts/e2e-analysis-ledger.mjs +202 -0
- package/scripts/e2e-aw-tui-global.mjs +277 -277
- package/scripts/e2e-binding-modes-real.mjs +442 -0
- package/scripts/e2e-business-loop-real.mjs +391 -0
- package/scripts/e2e-closedloop/cleanup.mjs +27 -27
- package/scripts/e2e-closedloop/lib.mjs +109 -109
- package/scripts/e2e-closedloop/main.mjs +59 -59
- package/scripts/e2e-closedloop/scenarios-accounts.mjs +210 -210
- package/scripts/e2e-closedloop/scenarios-authz.mjs +196 -196
- package/scripts/e2e-closedloop/scenarios-daq-dcw.mjs +222 -222
- package/scripts/e2e-closedloop/scenarios-plugins.mjs +169 -169
- package/scripts/e2e-closedloop/state.mjs +10 -10
- package/scripts/e2e-config-groups.mjs +238 -238
- package/scripts/e2e-core-bridges-matrix.mjs +303 -0
- package/scripts/e2e-crash-cycle.mjs +108 -108
- package/scripts/e2e-error-handling.mjs +190 -0
- package/scripts/e2e-full-closedloop.mjs +16 -16
- package/scripts/e2e-golive-matrix.mjs +515 -0
- package/scripts/e2e-hil-multi-user.mjs +307 -307
- package/scripts/e2e-hil-restart.mjs +339 -339
- package/scripts/e2e-line-governance.mjs +352 -352
- package/scripts/e2e-mes-mirror-real.mjs +418 -0
- package/scripts/e2e-multiexpert-remediation-real.mjs +453 -453
- package/scripts/e2e-node-binding-3mode-real.mjs +792 -697
- package/scripts/e2e-node-binding-authz.mjs +372 -332
- package/scripts/e2e-ontology.mjs +393 -393
- package/scripts/e2e-optimizer-live.mjs +4 -0
- package/scripts/e2e-physical-effect-real.mjs +570 -0
- package/scripts/e2e-plc-plugin-closedloop.mjs +549 -549
- package/scripts/full-stack-shots.mjs +145 -145
- package/scripts/full-tool-injection-harness-e2e.mjs +214 -214
- package/scripts/hitl-reject-e2e.mjs +131 -131
- package/scripts/line-log-smoke.mjs +260 -260
- package/scripts/live-aml-mockomp.mjs +304 -304
- package/scripts/live-aml-optloop-resume.mjs +322 -322
- package/scripts/live-aml-optloop.mjs +588 -588
- package/scripts/live-aml-stage9.mjs +169 -169
- package/scripts/live-aml-two-goals.mjs +315 -315
- package/scripts/live-demo-seed.mjs +157 -0
- package/scripts/live-optloop-two-modes.mjs +857 -857
- package/scripts/mes-agent-integration-e2e.mjs +361 -361
- package/scripts/ops-plugins-e2e.mjs +85 -85
- package/scripts/scenario-suite-setup.mjs +337 -337
- package/scripts/scenario-suite-stability.mjs +144 -144
- package/scripts/security-acceptance.mjs +218 -218
- package/scripts/team-coordination-e2e.mjs +96 -96
- package/scripts/test-agentteam-workflow.ts +472 -472
- package/scripts/test-aw-skills.mjs +102 -102
- package/scripts/test-daq-frame-race.mjs +358 -358
- package/scripts/test-data-root.mjs +208 -208
- package/scripts/test-events-index.mjs +176 -176
- package/scripts/test-group-chat-unit/lib.ts +186 -186
- package/scripts/test-group-chat-unit/main.ts +45 -45
- package/scripts/test-group-chat-unit.ts +35 -35
- package/scripts/test-hitl-decision.ts +526 -526
- package/scripts/test-hitl-registry.ts +112 -112
- package/scripts/test-log-flooding.mjs +160 -160
- package/scripts/test-lru.mjs +101 -101
- package/scripts/test-plugin-hardening.mjs +90 -90
- package/scripts/test-plugin-lifecycle.mjs +173 -173
- package/scripts/test-rollback-index.mjs +137 -137
- package/scripts/test-schedule-runtime.ts +309 -309
- package/scripts/test-sdk-surface.mjs +158 -158
- package/scripts/test-serial-bridge.mjs +418 -418
- package/scripts/test-tui-commands.mjs +148 -148
- package/scripts/test-tui-reducers.mjs +72 -72
- package/scripts/three-system-e2e/lib.mjs +79 -79
- package/scripts/three-system-e2e/main.mjs +40 -40
- package/scripts/three-system-e2e/phases/phase-0-user-token.mjs +42 -42
- package/scripts/three-system-e2e/phases/phase-0a2-line-autoselect.mjs +35 -35
- package/scripts/three-system-e2e/phases/phase-0b-fixture-grants.mjs +39 -39
- package/scripts/three-system-e2e/phases/phase-0c-plugin-outbound-auth.mjs +95 -95
- package/scripts/three-system-e2e/phases/stage-1-health.mjs +47 -47
- package/scripts/three-system-e2e/phases/stage-2-5-team-plugins.mjs +84 -84
- package/scripts/three-system-e2e/phases/stage-2-teams-tools-hitl.mjs +184 -184
- package/scripts/three-system-e2e/phases/stage-3-diag.mjs +73 -73
- package/scripts/three-system-e2e/phases/stage-4-plugin-toggle.mjs +53 -53
- package/scripts/three-system-e2e/state.mjs +87 -87
- package/scripts/three-system-e2e.mjs +40 -40
- package/scripts/tool-face-batch-identity-e2e.mjs +222 -222
- package/scripts/tsconfig.json +14 -14
- package/scripts/tui-smoke.mjs +100 -100
- package/scripts/typecheck.mjs +75 -75
- package/scripts/ui/md-lint.mjs +80 -80
- package/scripts/ui/readme-assets.mjs +30 -30
- package/scripts/ui/readme-shots.mjs +42 -42
- package/scripts/ui/record-demo.mjs +557 -557
- package/scripts/ui/record.mjs +225 -225
- package/scripts/ui/seed-admin.mjs +68 -68
- package/scripts/ui/seed-demo.mjs +83 -83
- package/scripts/ui/seed-industrial-demo.mjs +171 -171
- package/scripts/ui/shot-hero.mjs +25 -25
- package/scripts/ui/shots.mjs +75 -75
- package/scripts/ui/verify-nav.mjs +51 -51
- package/scripts/ui/verify-responsive.mjs +285 -285
- package/sdk/client.d.mts +110 -110
- package/sdk/examples/line-sentinel/index.mjs +105 -105
- package/sdk/examples/ops-notifier/index.mjs +34 -34
- package/sdk/examples/sample-insight/index.mjs +39 -39
- package/server/api/plugins/client/[name].get.ts +18 -18
- package/server/api/plugins/i18n.get.ts +12 -12
- package/server/api/plugins/manifest.get.ts +10 -10
- package/server/api/system/backup/list.get.ts +32 -32
- package/server/api/system/backup/run.post.ts +21 -21
- package/server/api/system/config-groups/[id].delete.ts +21 -21
- package/server/api/system/config-groups/[id].patch.ts +26 -26
- package/server/api/system/config-groups/index.get.ts +21 -21
- package/server/api/system/config-groups/index.post.ts +33 -33
- package/server/api/system/timezone.get.ts +20 -20
- package/server/api/users/tokens/[id]/token.get.ts +11 -11
- package/server/api/workshop/[...path].ts +13 -13
- package/server/api/workshop/agent-tools/approvals/index.get.ts +45 -43
- package/server/api/workshop/agent-tools/bindings/[id].delete.ts +26 -26
- package/server/api/workshop/agent-tools/bindings/grant.post.ts +45 -45
- package/server/api/workshop/agent-tools/bindings/index.get.ts +41 -41
- package/server/api/workshop/agent-tools/bindings/index.post.ts +38 -16
- package/server/api/workshop/agent-tools/bindings/revoke.post.ts +42 -42
- package/server/api/workshop/aml/datasets/[id]/preview.get.ts +68 -68
- package/server/api/workshop/aml/datasets/[id].delete.ts +39 -39
- package/server/api/workshop/aml/datasets/[id].get.ts +53 -53
- package/server/api/workshop/aml/datasets/[id].patch.ts +30 -30
- package/server/api/workshop/aml/datasets/index.get.ts +20 -20
- package/server/api/workshop/aml/datasets/index.post.ts +27 -27
- package/server/api/workshop/aml/entities/index.get.ts +13 -13
- package/server/api/workshop/aml/entities/prune.post.ts +28 -28
- package/server/api/workshop/aml/env/index.get.ts +13 -13
- package/server/api/workshop/aml/env/recheck.post.ts +14 -14
- package/server/api/workshop/aml/env/uv.post.ts +21 -21
- package/server/api/workshop/aml/env/venv.post.ts +24 -24
- package/server/api/workshop/aml/experiments/index.get.ts +35 -35
- package/server/api/workshop/aml/index.get.ts +37 -37
- package/server/api/workshop/aml/jobs/[id]/cancel.post.ts +21 -21
- package/server/api/workshop/aml/jobs/[id]/logs.get.ts +23 -23
- package/server/api/workshop/aml/jobs/[id]/retry.post.ts +20 -20
- package/server/api/workshop/aml/jobs/[id].delete.ts +44 -44
- package/server/api/workshop/aml/jobs/[id].get.ts +23 -23
- package/server/api/workshop/aml/jobs/index.get.ts +26 -26
- package/server/api/workshop/aml/models/[id]/predict.post.ts +24 -24
- package/server/api/workshop/aml/models/[id]/promote.post.ts +30 -30
- package/server/api/workshop/aml/models/index.get.ts +48 -48
- package/server/api/workshop/aml/training-plans/[id]/train.post.ts +18 -18
- package/server/api/workshop/aml/training-plans/[id].delete.ts +18 -18
- package/server/api/workshop/aml/training-plans/[id].patch.ts +30 -30
- package/server/api/workshop/aml/training-plans/index.get.ts +9 -9
- package/server/api/workshop/aml/training-plans/index.post.ts +43 -43
- package/server/api/workshop/analysis/index.post.ts +54 -54
- package/server/api/workshop/approvals/[id]/decide.post.ts +30 -30
- package/server/api/workshop/approvals/index.get.ts +22 -22
- package/server/api/workshop/audit.get.ts +43 -43
- package/server/api/workshop/channels/[id]/chat/messages/[messageId]/read.post.ts +22 -22
- package/server/api/workshop/channels/[id]/chat/messages/index.get.ts +29 -29
- package/server/api/workshop/channels/[id]/chat/messages/index.post.ts +51 -51
- package/server/api/workshop/channels/[id]/chat/permissions.get.ts +35 -35
- package/server/api/workshop/channels/[id]/index.patch.ts +64 -64
- package/server/api/workshop/channels/[id]/members/[userId]/approve.post.ts +20 -20
- package/server/api/workshop/channels/[id]/members/[userId].delete.ts +21 -21
- package/server/api/workshop/channels/[id]/members/index.get.ts +23 -23
- package/server/api/workshop/channels/[id]/members/leave.post.ts +20 -20
- package/server/api/workshop/channels/[id]/twin-profile.get.ts +45 -45
- package/server/api/workshop/channels/[id]/twin-profile.patch.ts +72 -72
- package/server/api/workshop/daq/[id]/test.post.ts +1 -1
- package/server/api/workshop/dcw/[id]/write.post.ts +4 -4
- package/server/api/workshop/dcw/[id].delete.ts +41 -41
- package/server/api/workshop/dcw/mes-test-read.post.ts +24 -24
- package/server/api/workshop/dcw/params/[id]/write.post.ts +21 -21
- package/server/api/workshop/dcw/params/[id].delete.ts +19 -19
- package/server/api/workshop/dcw/params/[id].patch.ts +23 -23
- package/server/api/workshop/dcw/params/index.get.ts +27 -27
- package/server/api/workshop/dcw/params/index.post.ts +25 -25
- package/server/api/workshop/dcw/templates/[key].delete.ts +14 -14
- package/server/api/workshop/dcw/templates/[key].patch.ts +16 -16
- package/server/api/workshop/dcw/templates/index.post.ts +15 -15
- package/server/api/workshop/device-twins/[id].delete.ts +25 -25
- package/server/api/workshop/eda/runs/[id]/labels.patch.ts +25 -25
- package/server/api/workshop/eda/templates/[id].delete.ts +14 -14
- package/server/api/workshop/eda/templates/[id].get.ts +15 -15
- package/server/api/workshop/eda/templates/[id].patch.ts +20 -20
- package/server/api/workshop/eda/templates/index.get.ts +11 -11
- package/server/api/workshop/eda/templates/index.post.ts +20 -20
- package/server/api/workshop/exp/confirmations/[id]/decide.post.ts +41 -41
- package/server/api/workshop/exp/confirmations/index.get.ts +25 -25
- package/server/api/workshop/harnesses/[id]/providers.get.ts +16 -16
- package/server/api/workshop/hitl/respond.post.ts +94 -94
- package/server/api/workshop/notifications/index.get.ts +60 -60
- package/server/api/workshop/notifications/read.post.ts +31 -31
- package/server/api/workshop/ontology/drafts/[draftId]/subgraph.ts +24 -24
- package/server/api/workshop/ops-logs/index.post.ts +20 -2
- package/server/api/workshop/plugins/[name]/disable.post.ts +21 -21
- package/server/api/workshop/plugins/[name]/enable.post.ts +21 -21
- package/server/api/workshop/plugins/[name]/index.get.ts +14 -14
- package/server/api/workshop/schedules/[id]/run.post.ts +15 -15
- package/server/api/workshop/schedules/[id]/runs.get.ts +15 -15
- package/server/api/workshop/schedules/[id].delete.ts +14 -14
- package/server/api/workshop/schedules/[id].get.ts +13 -13
- package/server/api/workshop/schedules/[id].patch.ts +29 -29
- package/server/api/workshop/schedules/index.get.ts +12 -12
- package/server/api/workshop/schedules/index.post.ts +32 -32
- package/server/api/workshop/tasks/[id]/reassign.post.ts +32 -32
- package/server/api/workshop/tasks/[id]/update.post.ts +35 -35
- package/server/api/workshop/teams/[id]/plugins/index.get.ts +36 -36
- package/server/api/workshop/teams/[id]/plugins/index.put.ts +42 -42
- package/server/api/workshop/ws/audience.ts +56 -56
- package/server/api/workshop/ws/db-buffer.ts +68 -68
- package/server/api/workshop/ws/event-mapping.ts +47 -47
- package/server/api/workshop/ws/handlers.ts +132 -132
- package/server/api/workshop/ws/hub.ts +134 -134
- package/server/api/workshop/ws/index.ts +23 -23
- package/server/api/workshop/ws/notification-uplink.ts +77 -77
- package/server/api/workshop/ws/shared.ts +94 -94
- package/server/api/workshop/ws/streams.ts +146 -146
- package/server/middleware/00-security-headers.ts +38 -38
- package/server/middleware/01-rate-guard.ts +101 -101
- package/server/plugins/01-instance-guard.ts +82 -82
- package/server/plugins/aml-twin-worker.ts +32 -32
- package/server/plugins/aw-plugins.ts +4 -1
- package/server/plugins/dev-stability-guard.ts +46 -42
- package/server/plugins/error-ledger.ts +21 -0
- package/server/plugins-builtin/diag-bridge/host/constants.mjs +25 -25
- package/server/plugins-builtin/diag-bridge/host/exports.mjs +104 -104
- package/server/plugins-builtin/diag-bridge/host/index.mjs +15 -15
- package/server/plugins-builtin/diag-bridge/host/intents.mjs +62 -62
- package/server/plugins-builtin/diag-bridge/host/snapshot.mjs +93 -93
- package/server/plugins-builtin/diag-bridge/index.mjs +9 -9
- package/server/plugins-builtin/serial-bridge/client.mjs +211 -211
- package/server/plugins-builtin/serial-bridge/drivers.mjs +409 -409
- package/server/plugins-builtin/serial-bridge/i18n.json +62 -62
- package/server/plugins-builtin/serial-bridge/index.mjs +247 -247
- package/server/plugins-builtin/serial-bridge/lib.mjs +208 -208
- package/server/plugins-builtin/serial-bridge/rtu.mjs +168 -168
- package/server/services/system-config/contracts.ts +29 -29
- package/server/services/system-config/dispose.ts +19 -19
- package/server/services/system-config/facade.ts +26 -26
- package/server/services/system-config/groups.ts +108 -108
- package/server/services/system-config/index.ts +21 -21
- package/server/services/system-config/init.ts +26 -26
- package/server/services/system-config/mutate.ts +103 -103
- package/server/services/system-config/plugins.ts +104 -104
- package/server/services/system-config/snapshot.ts +59 -59
- package/server/services/system-config/state.ts +79 -79
- package/server/services/system-config/types.ts +58 -58
- package/server/services/workshop/agents/adapters/omp-rpc-client/api.ts +111 -111
- package/server/services/workshop/agents/adapters/omp-rpc-client/contracts.ts +22 -22
- package/server/services/workshop/agents/adapters/omp-rpc-client/facade.ts +7 -7
- package/server/services/workshop/agents/adapters/omp-rpc-client/helpers.ts +38 -38
- package/server/services/workshop/agents/adapters/omp-rpc-client/index.ts +25 -25
- package/server/services/workshop/agents/adapters/omp-rpc-client/start.ts +70 -70
- package/server/services/workshop/agents/adapters/omp-rpc-client/state.ts +65 -65
- package/server/services/workshop/agents/adapters/omp-rpc-client/stdout.ts +92 -92
- package/server/services/workshop/agents/adapters/omp-rpc-client/usage.ts +47 -47
- package/server/services/workshop/agents/agent-badge.ts +38 -38
- package/server/services/workshop/agents/agent-dto.ts +54 -54
- package/server/services/workshop/agents/binding-authz.ts +66 -60
- package/server/services/workshop/agents/binding-mode.ts +51 -51
- package/server/services/workshop/agents/codex-agent/client.ts +170 -170
- package/server/services/workshop/agents/codex-agent/core.ts +119 -119
- package/server/services/workshop/agents/codex-agent/facade.ts +8 -8
- package/server/services/workshop/agents/codex-agent/helpers.ts +13 -13
- package/server/services/workshop/agents/codex-agent/hitl.ts +138 -138
- package/server/services/workshop/agents/codex-agent/index.ts +14 -14
- package/server/services/workshop/agents/codex-agent/turn.ts +367 -367
- package/server/services/workshop/agents/codex-agent/types.ts +42 -42
- package/server/services/workshop/agents/harness-process.ts +3 -3
- package/server/services/workshop/agents/harness-spawn-policy.ts +114 -114
- package/server/services/workshop/agents/harness-terminal/api.ts +197 -197
- package/server/services/workshop/agents/harness-terminal/index.ts +17 -17
- package/server/services/workshop/agents/harness-terminal/io.ts +120 -120
- package/server/services/workshop/agents/harness-terminal/park.ts +55 -55
- package/server/services/workshop/agents/harness-terminal/sanitize.ts +98 -98
- package/server/services/workshop/agents/harness-terminal/session.ts +124 -124
- package/server/services/workshop/agents/harness-terminal/shared.ts +74 -74
- package/server/services/workshop/agents/hitl-capabilities.ts +312 -312
- package/server/services/workshop/agents/hitl-decision/answers.ts +32 -32
- package/server/services/workshop/agents/hitl-decision/decide.ts +268 -268
- package/server/services/workshop/agents/hitl-decision/payload.ts +45 -45
- package/server/services/workshop/agents/hitl-decision/shared.ts +108 -108
- package/server/services/workshop/agents/hitl-decision/visibility.ts +94 -94
- package/server/services/workshop/agents/host-tool-bridge/per-agent.ts +17 -3
- package/server/services/workshop/agents/host-tool-bridge/tools/progress.ts +84 -84
- package/server/services/workshop/agents/host-tool-bridge/tools/team-delegation.ts +109 -108
- package/server/services/workshop/agents/host-tool-bridge/tools/team.ts +70 -70
- package/server/services/workshop/agents/industrial/aml-activity.ts +131 -131
- package/server/services/workshop/agents/industrial/audit-query.ts +66 -66
- package/server/services/workshop/agents/industrial/dcw-tools.ts +11 -1
- package/server/services/workshop/agents/industrial/exp-tools.ts +104 -104
- package/server/services/workshop/agents/industrial/ops-tools.ts +8 -2
- package/server/services/workshop/agents/industrial/param-tools.ts +69 -69
- package/server/services/workshop/agents/industrial/recipe-gate.ts +57 -29
- package/server/services/workshop/agents/industrial/recipe-propose-tools.ts +2 -1
- package/server/services/workshop/agents/industrial/tool-verify.ts +23 -3
- package/server/services/workshop/agents/node-bindings.repo.ts +210 -208
- package/server/services/workshop/agents/node-delegation.ts +204 -204
- package/server/services/workshop/agents/omp-agent/core.ts +146 -146
- package/server/services/workshop/agents/omp-agent/facade.ts +8 -8
- package/server/services/workshop/agents/omp-agent/helpers.ts +37 -37
- package/server/services/workshop/agents/omp-agent/index.ts +16 -16
- package/server/services/workshop/agents/omp-agent/types.ts +45 -45
- package/server/services/workshop/agents/opencode-agent/core.ts +77 -77
- package/server/services/workshop/agents/opencode-agent/facade.ts +8 -8
- package/server/services/workshop/agents/opencode-agent/helpers.ts +29 -29
- package/server/services/workshop/agents/opencode-agent/hitl.ts +113 -113
- package/server/services/workshop/agents/opencode-agent/index.ts +16 -16
- package/server/services/workshop/agents/opencode-agent/lifecycle.ts +44 -44
- package/server/services/workshop/agents/opencode-agent/server.ts +244 -244
- package/server/services/workshop/agents/opencode-agent/turn.ts +278 -278
- package/server/services/workshop/agents/opencode-agent/types.ts +54 -54
- package/server/services/workshop/agents/tool-approvals.ts +6 -4
- package/server/services/workshop/agents/tool-classes.ts +44 -44
- package/server/services/workshop/aml/clean.ts +120 -120
- package/server/services/workshop/aml/entity.ts +367 -367
- package/server/services/workshop/aml/job-orchestrator/broadcast.ts +37 -37
- package/server/services/workshop/aml/job-orchestrator/control.ts +94 -94
- package/server/services/workshop/aml/job-orchestrator/failure.ts +96 -96
- package/server/services/workshop/aml/job-orchestrator/index.ts +22 -22
- package/server/services/workshop/aml/job-orchestrator/process.ts +101 -101
- package/server/services/workshop/aml/job-orchestrator/shared.ts +53 -53
- package/server/services/workshop/aml/job-orchestrator/status.ts +20 -20
- package/server/services/workshop/aml/job-orchestrator/tick.ts +37 -37
- package/server/services/workshop/aml/python/train-example.py +92 -92
- package/server/services/workshop/aml/runtime.ts +137 -137
- package/server/services/workshop/aml/stats.ts +140 -140
- package/server/services/workshop/aml/twin/calibration-worker.ts +150 -150
- package/server/services/workshop/aml/twin/model-backed-provider.ts +332 -332
- package/server/services/workshop/aml/twin/physics-spec-draft.ts +185 -185
- package/server/services/workshop/aml/twin/prompt-composer.ts +143 -143
- package/server/services/workshop/aml/twin/training-plans.ts +260 -260
- package/server/services/workshop/aml/twin/write-guard.ts +19 -19
- package/server/services/workshop/assets/character-asset.repo.ts +1 -1
- package/server/services/workshop/assets/device-twin.repo.ts +1 -1
- package/server/services/workshop/daq/daq-controller/contracts.ts +39 -39
- package/server/services/workshop/daq/daq-controller/facade.ts +28 -28
- package/server/services/workshop/daq/daq-controller/frames.ts +137 -137
- package/server/services/workshop/daq/daq-controller/helpers.ts +52 -52
- package/server/services/workshop/daq/daq-controller/index.ts +22 -22
- package/server/services/workshop/daq/drivers/mock.ts +130 -130
- package/server/services/workshop/daq/drivers/modbus-rtu.ts +67 -67
- package/server/services/workshop/daq/drivers/modbus-tcp.ts +310 -310
- package/server/services/workshop/daq/drivers/opcua.ts +227 -227
- package/server/services/workshop/daq/drivers/s7-stub.ts +29 -29
- package/server/services/workshop/daq/host-bindings.ts +71 -71
- package/server/services/workshop/daq/host-ports.ts +65 -65
- package/server/services/workshop/db/aml-team-seeds.ts +118 -118
- package/server/services/workshop/db/backup-registry.ts +33 -33
- package/server/services/workshop/db/channel-member.repo.ts +122 -122
- package/server/services/workshop/db/channel.repo.ts +203 -203
- package/server/services/workshop/db/chat-message.repo.ts +233 -233
- package/server/services/workshop/db/database/index.ts +18 -18
- package/server/services/workshop/db/database/json.ts +14 -14
- package/server/services/workshop/db/database/seed-data.ts +60 -60
- package/server/services/workshop/db/hitl-request.repo.ts +221 -221
- package/server/services/workshop/db/notification.repo.ts +199 -199
- package/server/services/workshop/db/readonly.ts +30 -30
- package/server/services/workshop/db/scheduled-task.repo.ts +235 -235
- package/server/services/workshop/db/transaction.ts +72 -72
- package/server/services/workshop/dcw/dcw-controller/contracts.ts +16 -16
- package/server/services/workshop/dcw/dcw-controller/control.ts +78 -78
- package/server/services/workshop/dcw/dcw-controller/facade.ts +19 -19
- package/server/services/workshop/dcw/dcw-controller/index.ts +22 -22
- package/server/services/workshop/dcw/dcw-controller/params.ts +97 -97
- package/server/services/workshop/dcw/dcw-controller/products.ts +103 -103
- package/server/services/workshop/dcw/dcw-controller/write.ts +12 -0
- package/server/services/workshop/dcw/dcw-node.ts +13 -1
- package/server/services/workshop/dcw/dcw-runtime.ts +2 -1
- package/server/services/workshop/dcw/dcw-templates.ts +136 -136
- package/server/services/workshop/dcw/param-conversion.ts +78 -78
- package/server/services/workshop/dcw/param-map.repo.ts +349 -349
- package/server/services/workshop/dcw/plugin-bridge.ts +45 -45
- package/server/services/workshop/dcw/recipe-rollback-manager/contracts.ts +26 -26
- package/server/services/workshop/dcw/recipe-rollback-manager/facade.ts +13 -13
- package/server/services/workshop/dcw/recipe-rollback-manager/helpers.ts +30 -30
- package/server/services/workshop/dcw/recipe-rollback-manager/index.ts +17 -17
- package/server/services/workshop/dcw/recipe-rollback-manager/internal.ts +33 -33
- package/server/services/workshop/dcw/recipe-rollback-manager/judge.ts +52 -52
- package/server/services/workshop/dcw/recipe-rollback-manager/lock.ts +137 -137
- package/server/services/workshop/dcw/recipe-rollback-manager/state.ts +21 -21
- package/server/services/workshop/dcw/recipe-rollback-manager/types.ts +3 -3
- package/server/services/workshop/dcw/recipe-rollback-manager/views.ts +214 -214
- package/server/services/workshop/eda/template-repo.ts +101 -101
- package/server/services/workshop/exp/exp-collector.ts +275 -275
- package/server/services/workshop/exp/exp-state.repo.ts +339 -339
- package/server/services/workshop/line-scope.ts +80 -80
- package/server/services/workshop/mes/mes-controller.ts +1164 -1155
- package/server/services/workshop/mes/mes-hook.ts +567 -567
- package/server/services/workshop/ontology/subgraph.core.ts +300 -300
- package/server/services/workshop/ontology/subgraph.service.ts +113 -113
- package/server/services/workshop/ops/error-ledger.ts +209 -0
- package/server/services/workshop/plugins/host/api.mjs +90 -90
- package/server/services/workshop/plugins/host/config.mjs +135 -135
- package/server/services/workshop/plugins/host/index.mjs +23 -23
- package/server/services/workshop/plugins/host/init.mjs +109 -109
- package/server/services/workshop/plugins/host/rollback.mjs +72 -72
- package/server/services/workshop/plugins/host/state.mjs +54 -54
- package/server/services/workshop/plugins/host/toggle.mjs +64 -64
- package/server/services/workshop/plugins/host.mjs +9 -9
- package/server/services/workshop/runtime/agent-runtime/facade.ts +7 -7
- package/server/services/workshop/runtime/agent-runtime/helpers.ts +18 -18
- package/server/services/workshop/runtime/agent-runtime/index.ts +19 -19
- package/server/services/workshop/runtime/agent-runtime/lifecycle.ts +137 -137
- package/server/services/workshop/runtime/chat-mention.ts +164 -164
- package/server/services/workshop/runtime/chat-projection.ts +246 -246
- package/server/services/workshop/runtime/manager/admin-agents.ts +268 -268
- package/server/services/workshop/runtime/manager/bus.ts +182 -182
- package/server/services/workshop/runtime/manager/channel-template-constants.ts +20 -20
- package/server/services/workshop/runtime/manager/chat-reply.ts +181 -181
- package/server/services/workshop/runtime/manager/chat.ts +386 -386
- package/server/services/workshop/runtime/manager/facade.ts +24 -24
- package/server/services/workshop/runtime/manager/helpers.ts +119 -119
- package/server/services/workshop/runtime/manager/index.ts +42 -42
- package/server/services/workshop/runtime/manager/internal.ts +73 -73
- package/server/services/workshop/runtime/manager/notifications.ts +108 -108
- package/server/services/workshop/runtime/manager/state.ts +2 -2
- package/server/services/workshop/runtime/manager/teams.ts +148 -148
- package/server/services/workshop/runtime/memory/contracts.ts +18 -18
- package/server/services/workshop/runtime/memory/facade.ts +10 -10
- package/server/services/workshop/runtime/memory/helpers.ts +196 -196
- package/server/services/workshop/runtime/memory/index.ts +27 -27
- package/server/services/workshop/runtime/memory/score.ts +33 -33
- package/server/services/workshop/runtime/memory/state.ts +40 -40
- package/server/services/workshop/runtime/monitor.ts +3 -3
- package/server/services/workshop/runtime/platform-notice.ts +113 -113
- package/server/services/workshop/runtime/schedule-runtime.ts +347 -347
- package/server/services/workshop/runtime/scheduler-loop/contracts.ts +29 -29
- package/server/services/workshop/runtime/scheduler-loop/facade.ts +7 -7
- package/server/services/workshop/runtime/scheduler-loop/helpers.ts +14 -14
- package/server/services/workshop/runtime/scheduler-loop/index.ts +16 -16
- package/server/services/workshop/runtime/task-engine/facade.ts +7 -7
- package/server/services/workshop/runtime/task-engine/index.ts +15 -15
- package/server/services/workshop/runtime/task-engine/types.ts +3 -3
- package/server/services/workshop/runtime/user-notification-hub.ts +192 -192
- package/server/types/pg.d.ts +49 -49
- package/server/utils/approval-gate.ts +67 -67
- package/server/utils/mojibake-guard.ts +29 -29
- package/server/utils/stability-severity.ts +77 -77
- package/shared/config/groups.mjs +241 -241
- package/shared/dcw-protocol/line.ts +4 -1
- package/shared/lru.mjs +97 -97
- package/tui/README.md +74 -74
- package/tui/aw-tui.mjs +445 -445
- package/tui/commands/index.mjs +287 -287
- package/tui/components/chat-log.mjs +42 -42
- package/tui/components/monitor-pane.mjs +39 -39
- package/tui/components/root.mjs +53 -53
- package/tui/components/status-bar.mjs +33 -33
- package/tui/lib/api.mjs +82 -82
- package/tui/lib/pickers.mjs +121 -121
- package/tui/lib/reducers.mjs +218 -218
- package/tui/lib/state.mjs +86 -86
- package/tui/lib/virtual-terminal.mjs +48 -48
- package/tui/lib/ws.mjs +125 -125
- package/tui/theme.mjs +38 -38
- package/.output/.AgentWorkShop/aml-python/__pycache__/aml_eval.cpython-312.pyc +0 -0
- package/.output/.AgentWorkShop/aml-python/__pycache__/amlkit.cpython-312.pyc +0 -0
- package/.output/.AgentWorkShop/aml-python/__pycache__/train-example.cpython-312.pyc +0 -0
- package/.output/.AgentWorkShop/aml-python/__pycache__/train-hybrid-example.cpython-312.pyc +0 -0
- package/.output/public/_nuxt/26OL4Ao82.js +0 -1
- package/.output/public/_nuxt/7op-BMk82.js +0 -1
- package/.output/public/_nuxt/B1SIgyrl.js +0 -1
- package/.output/public/_nuxt/BA2lmfW4.js +0 -1
- package/.output/public/_nuxt/BDXQqSkl2.js +0 -1
- package/.output/public/_nuxt/BI9jj13f2.js +0 -2
- package/.output/public/_nuxt/BPUQZ9Lq2.js +0 -8
- package/.output/public/_nuxt/BVg2R2VB2.js +0 -1
- package/.output/public/_nuxt/BaYDgyaR.js +0 -3
- package/.output/public/_nuxt/BfvuWqSa.js +0 -1
- package/.output/public/_nuxt/BiXqyYNw2.js +0 -1
- package/.output/public/_nuxt/BkEokGX5.js +0 -1
- package/.output/public/_nuxt/BlOm8JIs2.js +0 -1
- package/.output/public/_nuxt/BtZKe9ZV2.js +0 -1
- package/.output/public/_nuxt/BuLoPmcf.js +0 -1
- package/.output/public/_nuxt/BwOK42JQ.js +0 -1
- package/.output/public/_nuxt/BwOko01T.js +0 -47
- package/.output/public/_nuxt/C1RMfPoB2.js +0 -1
- package/.output/public/_nuxt/CBkXv24C2.js +0 -1
- package/.output/public/_nuxt/COfo_Bg3.js +0 -1
- package/.output/public/_nuxt/CY2NkFvI.js +0 -1
- package/.output/public/_nuxt/C_4mzQ5X.js +0 -1
- package/.output/public/_nuxt/CdvMP3lv.js +0 -1
- package/.output/public/_nuxt/CjdxNYpU2.js +0 -1
- package/.output/public/_nuxt/CmuGMxDP.js +0 -1
- package/.output/public/_nuxt/CooauJ7D.js +0 -1
- package/.output/public/_nuxt/D1eVi1zr.js +0 -21
- package/.output/public/_nuxt/D6PUmBb0.js +0 -1
- package/.output/public/_nuxt/D8AvmPUH.js +0 -1
- package/.output/public/_nuxt/DC8sMA36.js +0 -1
- package/.output/public/_nuxt/DDHh85c42.js +0 -2
- package/.output/public/_nuxt/DDXOfmo2.js +0 -20
- package/.output/public/_nuxt/DMFwLxfu.js +0 -1
- package/.output/public/_nuxt/DZqVVvR0.js +0 -1
- package/.output/public/_nuxt/Dr1FVeQG2.js +0 -1
- package/.output/public/_nuxt/DtnsTW7e.js +0 -1
- package/.output/public/_nuxt/DuUc4bbY2.js +0 -1
- package/.output/public/_nuxt/DxDqd6T42.js +0 -16
- package/.output/public/_nuxt/DzU3zEKX.js +0 -1
- package/.output/public/_nuxt/EMbqTHfT.js +0 -1
- package/.output/public/_nuxt/EgO70wrE.js +0 -1
- package/.output/public/_nuxt/HJKu4eEV2.js +0 -1
- package/.output/public/_nuxt/OmpTerminalPanel.ComMDrA8.css +0 -1
- package/.output/public/_nuxt/PluginSlot.CGH0vb95.css +0 -1
- package/.output/public/_nuxt/Rb4o4o-82.js +0 -1
- package/.output/public/_nuxt/Tf6SJSDj.js +0 -1
- package/.output/public/_nuxt/TownView.CC3t-Dte.css +0 -1
- package/.output/public/_nuxt/_id_.BQRWK7J2.css +0 -1
- package/.output/public/_nuxt/_wsId_.CQMH8t8j.css +0 -1
- package/.output/public/_nuxt/agents.D-JPovTZ.css +0 -1
- package/.output/public/_nuxt/aml.PalMp-5n.css +0 -1
- package/.output/public/_nuxt/azOGy_tU2.js +0 -1
- package/.output/public/_nuxt/be-4wyTo.js +0 -1
- package/.output/public/_nuxt/builds/meta/593b65bd-cf1d-4b7f-a993-57e939c38f36.json +0 -1
- package/.output/public/_nuxt/byZYInPk2.js +0 -1
- package/.output/public/_nuxt/dHwWyr6b.js +0 -1
- package/.output/public/_nuxt/dcjPjLPI.js +0 -1
- package/.output/public/_nuxt/default.BEXGWZFQ.css +0 -1
- package/.output/public/_nuxt/entry.D6nBdXet.css +0 -1
- package/.output/public/_nuxt/h-Fn7pRD.js +0 -1
- package/.output/public/_nuxt/logs.BkJPbR_K.css +0 -1
- package/.output/public/_nuxt/monitor.D3yEqqrv.css +0 -1
- package/.output/public/_nuxt/ontology.CkuUThtY.css +0 -1
- package/.output/public/_nuxt/operations.-l6u44Ar.css +0 -1
- package/.output/public/_nuxt/pages.Cdpm_B-G.css +0 -1
- package/.output/public/_nuxt/permissions.DxuOOIqQ.css +0 -1
- package/.output/public/_nuxt/rDvMijKA.js +0 -9
- package/.output/public/_nuxt/schedules.BXNJ9q_I.css +0 -1
- package/.output/public/_nuxt/teams.CLQaXno5.css +0 -1
- package/.output/public/_nuxt/tokens.BDSUWF-L.css +0 -1
- package/.output/public/_nuxt/tools.BwXFAb-X.css +0 -1
- package/.output/public/_nuxt/workshop.BBiFhXuM.css +0 -1
- package/.output/server/chunks/build/AuthGate-nF1evO4v.mjs +0 -716
- package/.output/server/chunks/build/AuthGate-nF1evO4v.mjs.map +0 -1
- package/.output/server/chunks/build/FormItemContext-BlyzocS0.mjs +0 -72
- package/.output/server/chunks/build/FormItemContext-BlyzocS0.mjs.map +0 -1
- package/.output/server/chunks/build/OmpTerminalPanel-BhvhQ1gG.mjs +0 -942
- package/.output/server/chunks/build/OmpTerminalPanel-BhvhQ1gG.mjs.map +0 -1
- package/.output/server/chunks/build/PluginSlot-BUKXwV2X.mjs +0 -141
- package/.output/server/chunks/build/PluginSlot-BUKXwV2X.mjs.map +0 -1
- package/.output/server/chunks/build/TownView-BWMDbosY.mjs +0 -6489
- package/.output/server/chunks/build/TownView-BWMDbosY.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-BK-t8nRG.mjs +0 -392
- package/.output/server/chunks/build/_id_-BK-t8nRG.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-CZPlPDm4.mjs +0 -2045
- package/.output/server/chunks/build/_id_-CZPlPDm4.mjs.map +0 -1
- package/.output/server/chunks/build/_wsId_-C871SDPN.mjs +0 -14589
- package/.output/server/chunks/build/_wsId_-C871SDPN.mjs.map +0 -1
- package/.output/server/chunks/build/agents-D7CdEUTv.mjs +0 -1078
- package/.output/server/chunks/build/agents-D7CdEUTv.mjs.map +0 -1
- package/.output/server/chunks/build/alert-D0ivtTGy.mjs +0 -263
- package/.output/server/chunks/build/alert-D0ivtTGy.mjs.map +0 -1
- package/.output/server/chunks/build/aml-DRAFRcGU.mjs +0 -814
- package/.output/server/chunks/build/aml-DRAFRcGU.mjs.map +0 -1
- package/.output/server/chunks/build/analysis-p-dBkjoK.mjs +0 -533
- package/.output/server/chunks/build/analysis-p-dBkjoK.mjs.map +0 -1
- package/.output/server/chunks/build/api-B4Om0mEc.mjs +0 -53
- package/.output/server/chunks/build/api-B4Om0mEc.mjs.map +0 -1
- package/.output/server/chunks/build/api-BEW_ebY_.mjs +0 -64
- package/.output/server/chunks/build/api-BEW_ebY_.mjs.map +0 -1
- package/.output/server/chunks/build/api-BsAgXWxi.mjs +0 -72
- package/.output/server/chunks/build/api-BsAgXWxi.mjs.map +0 -1
- package/.output/server/chunks/build/api-error-BwAQLw44.mjs +0 -47
- package/.output/server/chunks/build/api-error-BwAQLw44.mjs.map +0 -1
- package/.output/server/chunks/build/apiClient-BvXtNzC8.mjs +0 -81
- package/.output/server/chunks/build/apiClient-BvXtNzC8.mjs.map +0 -1
- package/.output/server/chunks/build/board-CJUc032b.mjs +0 -189
- package/.output/server/chunks/build/board-CJUc032b.mjs.map +0 -1
- package/.output/server/chunks/build/builtin-catalog-edpDcgfL.mjs.map +0 -1
- package/.output/server/chunks/build/card-Cqk0Ur-L.mjs +0 -953
- package/.output/server/chunks/build/card-Cqk0Ur-L.mjs.map +0 -1
- package/.output/server/chunks/build/channel-templates-ggsBacZF.mjs +0 -942
- package/.output/server/chunks/build/channel-templates-ggsBacZF.mjs.map +0 -1
- package/.output/server/chunks/build/chart-pipeline-BpoWYMK_.mjs.map +0 -1
- package/.output/server/chunks/build/chart-trend-BWeZh5Lv.mjs.map +0 -1
- package/.output/server/chunks/build/checkbox-CrT4cnfu.mjs +0 -439
- package/.output/server/chunks/build/checkbox-CrT4cnfu.mjs.map +0 -1
- package/.output/server/chunks/build/client-only-qNA2OVV_.mjs +0 -43
- package/.output/server/chunks/build/client-only-qNA2OVV_.mjs.map +0 -1
- package/.output/server/chunks/build/constants-HPHJvjne.mjs +0 -142
- package/.output/server/chunks/build/constants-HPHJvjne.mjs.map +0 -1
- package/.output/server/chunks/build/core-CgTOPS4t.mjs +0 -294
- package/.output/server/chunks/build/core-CgTOPS4t.mjs.map +0 -1
- package/.output/server/chunks/build/daq-CdxcfY_G.mjs +0 -1266
- package/.output/server/chunks/build/daq-CdxcfY_G.mjs.map +0 -1
- package/.output/server/chunks/build/data-D8uX1dnm.mjs +0 -481
- package/.output/server/chunks/build/data-D8uX1dnm.mjs.map +0 -1
- package/.output/server/chunks/build/dcw-BlDQtS4q.mjs +0 -505
- package/.output/server/chunks/build/dcw-BlDQtS4q.mjs.map +0 -1
- package/.output/server/chunks/build/dcw-driver-badge-Df5wL_ZA.mjs.map +0 -1
- package/.output/server/chunks/build/default-CNWS6NUw.mjs +0 -2353
- package/.output/server/chunks/build/default-CNWS6NUw.mjs.map +0 -1
- package/.output/server/chunks/build/descriptions-BNlfKG9y.mjs +0 -406
- package/.output/server/chunks/build/descriptions-BNlfKG9y.mjs.map +0 -1
- package/.output/server/chunks/build/drawer-Caji0PLs.mjs +0 -834
- package/.output/server/chunks/build/drawer-Caji0PLs.mjs.map +0 -1
- package/.output/server/chunks/build/dropdown-BNwTVGde.mjs +0 -14
- package/.output/server/chunks/build/dropdown-BNwTVGde.mjs.map +0 -1
- package/.output/server/chunks/build/dropdown-Cd-xPhR6.mjs +0 -540
- package/.output/server/chunks/build/dropdown-Cd-xPhR6.mjs.map +0 -1
- package/.output/server/chunks/build/es-Bxu10NJ2.mjs +0 -43
- package/.output/server/chunks/build/es-Bxu10NJ2.mjs.map +0 -1
- package/.output/server/chunks/build/firstNotUndefined-8H5_qHUu.mjs +0 -2448
- package/.output/server/chunks/build/firstNotUndefined-8H5_qHUu.mjs.map +0 -1
- package/.output/server/chunks/build/form-D_UpWPN4.mjs +0 -4712
- package/.output/server/chunks/build/form-D_UpWPN4.mjs.map +0 -1
- package/.output/server/chunks/build/hasIn-DBdElbjM.mjs +0 -553
- package/.output/server/chunks/build/hasIn-DBdElbjM.mjs.map +0 -1
- package/.output/server/chunks/build/hitl-Bd30yr1J.mjs +0 -132
- package/.output/server/chunks/build/hitl-Bd30yr1J.mjs.map +0 -1
- package/.output/server/chunks/build/input-GtPuSEgt.mjs +0 -2181
- package/.output/server/chunks/build/input-GtPuSEgt.mjs.map +0 -1
- package/.output/server/chunks/build/input-number-BNlNDK7H.mjs +0 -1120
- package/.output/server/chunks/build/input-number-BNlNDK7H.mjs.map +0 -1
- package/.output/server/chunks/build/interval-DvHBIIZh.mjs +0 -9
- package/.output/server/chunks/build/interval-DvHBIIZh.mjs.map +0 -1
- package/.output/server/chunks/build/isNumeric-CP7q_yhz.mjs +0 -7
- package/.output/server/chunks/build/isNumeric-CP7q_yhz.mjs.map +0 -1
- package/.output/server/chunks/build/logs-pRb-TMWa.mjs +0 -427
- package/.output/server/chunks/build/logs-pRb-TMWa.mjs.map +0 -1
- package/.output/server/chunks/build/menu-BXt-X0dt.mjs +0 -1952
- package/.output/server/chunks/build/menu-BXt-X0dt.mjs.map +0 -1
- package/.output/server/chunks/build/monitor-Cq6hRFeQ.mjs +0 -2253
- package/.output/server/chunks/build/monitor-Cq6hRFeQ.mjs.map +0 -1
- package/.output/server/chunks/build/narrow-fetch-CcG-BPxc.mjs.map +0 -1
- package/.output/server/chunks/build/ontology-ohICfVVb.mjs +0 -1406
- package/.output/server/chunks/build/ontology-ohICfVVb.mjs.map +0 -1
- package/.output/server/chunks/build/operations-SMQrRAcr.mjs +0 -311
- package/.output/server/chunks/build/operations-SMQrRAcr.mjs.map +0 -1
- package/.output/server/chunks/build/optimizer-BlWTsM-W.mjs +0 -202
- package/.output/server/chunks/build/optimizer-BlWTsM-W.mjs.map +0 -1
- package/.output/server/chunks/build/pages-DsMKUw7i.mjs +0 -542
- package/.output/server/chunks/build/pages-DsMKUw7i.mjs.map +0 -1
- package/.output/server/chunks/build/pagination-DTAconUo.mjs +0 -1346
- package/.output/server/chunks/build/pagination-DTAconUo.mjs.map +0 -1
- package/.output/server/chunks/build/permissions-DgXQZSyx.mjs +0 -637
- package/.output/server/chunks/build/permissions-DgXQZSyx.mjs.map +0 -1
- package/.output/server/chunks/build/pipeline-CkavMBhk.mjs +0 -212
- package/.output/server/chunks/build/pipeline-CkavMBhk.mjs.map +0 -1
- package/.output/server/chunks/build/plugins-LRjaSEZy.mjs +0 -272
- package/.output/server/chunks/build/plugins-LRjaSEZy.mjs.map +0 -1
- package/.output/server/chunks/build/popconfirm-DxYPGRgS.mjs +0 -340
- package/.output/server/chunks/build/popconfirm-DxYPGRgS.mjs.map +0 -1
- package/.output/server/chunks/build/responsiveObserve-DM3hpzhU.mjs +0 -78
- package/.output/server/chunks/build/responsiveObserve-DM3hpzhU.mjs.map +0 -1
- package/.output/server/chunks/build/schedules-Hz2DJUE2.mjs +0 -7172
- package/.output/server/chunks/build/schedules-Hz2DJUE2.mjs.map +0 -1
- package/.output/server/chunks/build/segmented-D3HWtHPw.mjs +0 -341
- package/.output/server/chunks/build/segmented-D3HWtHPw.mjs.map +0 -1
- package/.output/server/chunks/build/select-B3Dsb9yq.mjs +0 -3923
- package/.output/server/chunks/build/select-B3Dsb9yq.mjs.map +0 -1
- package/.output/server/chunks/build/settings-DXLJPq7d.mjs +0 -1014
- package/.output/server/chunks/build/settings-DXLJPq7d.mjs.map +0 -1
- package/.output/server/chunks/build/space-Dwu2Skt8.mjs +0 -110
- package/.output/server/chunks/build/space-Dwu2Skt8.mjs.map +0 -1
- package/.output/server/chunks/build/spin-C2cuvGth.mjs +0 -357
- package/.output/server/chunks/build/spin-C2cuvGth.mjs.map +0 -1
- package/.output/server/chunks/build/studio-hSqH9TYS.mjs +0 -336
- package/.output/server/chunks/build/studio-hSqH9TYS.mjs.map +0 -1
- package/.output/server/chunks/build/switch-CyR-H6Fb.mjs +0 -377
- package/.output/server/chunks/build/switch-CyR-H6Fb.mjs.map +0 -1
- package/.output/server/chunks/build/table-CmVD-cA9.mjs +0 -7546
- package/.output/server/chunks/build/table-CmVD-cA9.mjs.map +0 -1
- package/.output/server/chunks/build/tabs-Vg0e7cZE.mjs +0 -1924
- package/.output/server/chunks/build/tabs-Vg0e7cZE.mjs.map +0 -1
- package/.output/server/chunks/build/tag-y0sn-xv9.mjs +0 -1156
- package/.output/server/chunks/build/tag-y0sn-xv9.mjs.map +0 -1
- package/.output/server/chunks/build/teams-BbwYJyzv.mjs +0 -1203
- package/.output/server/chunks/build/teams-BbwYJyzv.mjs.map +0 -1
- package/.output/server/chunks/build/tokens-GYaGJ35Z.mjs +0 -1062
- package/.output/server/chunks/build/tokens-GYaGJ35Z.mjs.map +0 -1
- package/.output/server/chunks/build/tools-CnYi9cou.mjs +0 -487
- package/.output/server/chunks/build/tools-CnYi9cou.mjs.map +0 -1
- package/.output/server/chunks/build/tooltip-C2n2nNiQ.mjs +0 -920
- package/.output/server/chunks/build/tooltip-C2n2nNiQ.mjs.map +0 -1
- package/.output/server/chunks/build/town-B5aoiG98.mjs +0 -133
- package/.output/server/chunks/build/town-B5aoiG98.mjs.map +0 -1
- package/.output/server/chunks/build/town-BV-hbwb5.mjs +0 -75
- package/.output/server/chunks/build/town-BV-hbwb5.mjs.map +0 -1
- package/.output/server/chunks/build/types-D6J7slEa.mjs +0 -5565
- package/.output/server/chunks/build/types-D6J7slEa.mjs.map +0 -1
- package/.output/server/chunks/build/types-DWqIeMRP.mjs +0 -76
- package/.output/server/chunks/build/types-DWqIeMRP.mjs.map +0 -1
- package/.output/server/chunks/build/useAgentHarnessOptions-Dq0l0Z6d.mjs +0 -124
- package/.output/server/chunks/build/useAgentHarnessOptions-Dq0l0Z6d.mjs.map +0 -1
- package/.output/server/chunks/build/useAgentTemplateActions-BFOHb5-L.mjs +0 -77
- package/.output/server/chunks/build/useAgentTemplateActions-BFOHb5-L.mjs.map +0 -1
- package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs +0 -67
- package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs.map +0 -1
- package/.output/server/chunks/build/useAgentTemplateForm-CuJPOPcK.mjs +0 -117
- package/.output/server/chunks/build/useAgentTemplateForm-CuJPOPcK.mjs.map +0 -1
- package/.output/server/chunks/build/useAgentTemplatesCatalog-B2bIhZLA.mjs +0 -133
- package/.output/server/chunks/build/useAgentTemplatesCatalog-B2bIhZLA.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlDatasets-DeoE1idn.mjs +0 -92
- package/.output/server/chunks/build/useAmlDatasets-DeoE1idn.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlEntities-BJhvdqHJ.mjs +0 -86
- package/.output/server/chunks/build/useAmlEntities-BJhvdqHJ.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlEnv-CDIZ6xTe.mjs +0 -194
- package/.output/server/chunks/build/useAmlEnv-CDIZ6xTe.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlExperiments-Dloi834i.mjs +0 -89
- package/.output/server/chunks/build/useAmlExperiments-Dloi834i.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs +0 -82
- package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlJobs-BF9LpwXz.mjs +0 -267
- package/.output/server/chunks/build/useAmlJobs-BF9LpwXz.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlModels-_bweOr3R.mjs +0 -93
- package/.output/server/chunks/build/useAmlModels-_bweOr3R.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlNotes-DQj980iX.mjs +0 -86
- package/.output/server/chunks/build/useAmlNotes-DQj980iX.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlPredict-DHNgDSJn.mjs +0 -130
- package/.output/server/chunks/build/useAmlPredict-DHNgDSJn.mjs.map +0 -1
- package/.output/server/chunks/build/useAnalysisFeed-BrEGV_9x.mjs +0 -129
- package/.output/server/chunks/build/useAnalysisFeed-BrEGV_9x.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqAddNode-D_Rkju0f.mjs +0 -142
- package/.output/server/chunks/build/useDaqAddNode-D_Rkju0f.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailBinding-DCWaLKXT.mjs +0 -70
- package/.output/server/chunks/build/useDaqDetailBinding-DCWaLKXT.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailFrames-BOIcOJRB.mjs +0 -79
- package/.output/server/chunks/build/useDaqDetailFrames-BOIcOJRB.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailHistory-D6WulPVs.mjs +0 -176
- package/.output/server/chunks/build/useDaqDetailHistory-D6WulPVs.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailNode-DeOsDxK5.mjs +0 -99
- package/.output/server/chunks/build/useDaqDetailNode-DeOsDxK5.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailParams-Cm9a9r5G.mjs +0 -159
- package/.output/server/chunks/build/useDaqDetailParams-Cm9a9r5G.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqFilters-CctmO03p.mjs +0 -222
- package/.output/server/chunks/build/useDaqFilters-CctmO03p.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs +0 -90
- package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqOptimizations-CmX_dpBc.mjs +0 -136
- package/.output/server/chunks/build/useDaqOptimizations-CmX_dpBc.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqStream-B9ZBVQrI.mjs +0 -395
- package/.output/server/chunks/build/useDaqStream-B9ZBVQrI.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqTemplates-CK37sMfi.mjs +0 -187
- package/.output/server/chunks/build/useDaqTemplates-CK37sMfi.mjs.map +0 -1
- package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs +0 -354
- package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs.map +0 -1
- package/.output/server/chunks/build/useDashboardData-NJ7rKxhx.mjs +0 -153
- package/.output/server/chunks/build/useDashboardData-NJ7rKxhx.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwAddNode-DACVcEHs.mjs +0 -219
- package/.output/server/chunks/build/useDcwAddNode-DACVcEHs.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwCards-SaiImIYQ.mjs +0 -67
- package/.output/server/chunks/build/useDcwCards-SaiImIYQ.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwDetailScope-DLOklSMO.mjs +0 -184
- package/.output/server/chunks/build/useDcwDetailScope-DLOklSMO.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwDetailTemplates-ClmIdZ40.mjs +0 -148
- package/.output/server/chunks/build/useDcwDetailTemplates-ClmIdZ40.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwFilter-CPMyCltx.mjs +0 -71
- package/.output/server/chunks/build/useDcwFilter-CPMyCltx.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwLedger-0ie-0WTc.mjs +0 -79
- package/.output/server/chunks/build/useDcwLedger-0ie-0WTc.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwLineMutations-DNxo66yM.mjs +0 -137
- package/.output/server/chunks/build/useDcwLineMutations-DNxo66yM.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwLineRun-CHskwscT.mjs +0 -104
- package/.output/server/chunks/build/useDcwLineRun-CHskwscT.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwParamApprovals-DtScUc-W.mjs +0 -121
- package/.output/server/chunks/build/useDcwParamApprovals-DtScUc-W.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwProducts-BMaxzLu6.mjs +0 -93
- package/.output/server/chunks/build/useDcwProducts-BMaxzLu6.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwQuery-TVU3Eo0M.mjs +0 -98
- package/.output/server/chunks/build/useDcwQuery-TVU3Eo0M.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwQuickActions-BREFmR9T.mjs +0 -88
- package/.output/server/chunks/build/useDcwQuickActions-BREFmR9T.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwRecipes-Bc9urA1N.mjs +0 -258
- package/.output/server/chunks/build/useDcwRecipes-Bc9urA1N.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwStream-Dir5ufAU.mjs +0 -452
- package/.output/server/chunks/build/useDcwStream-Dir5ufAU.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwTemplates-BzagZztS.mjs +0 -91
- package/.output/server/chunks/build/useDcwTemplates-BzagZztS.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwWrites-BROwTLCn.mjs +0 -140
- package/.output/server/chunks/build/useDcwWrites-BROwTLCn.mjs.map +0 -1
- package/.output/server/chunks/build/useDeviceTwins-BqwVJaZg.mjs +0 -128
- package/.output/server/chunks/build/useDeviceTwins-BqwVJaZg.mjs.map +0 -1
- package/.output/server/chunks/build/useExpConfirmations-BM626N4p.mjs +0 -107
- package/.output/server/chunks/build/useExpConfirmations-BM626N4p.mjs.map +0 -1
- package/.output/server/chunks/build/useLocalTime-uVSM44Um.mjs +0 -55
- package/.output/server/chunks/build/useLocalTime-uVSM44Um.mjs.map +0 -1
- package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs +0 -77
- package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs.map +0 -1
- package/.output/server/chunks/build/useLogsManual-cVBZQ_Mt.mjs +0 -88
- package/.output/server/chunks/build/useLogsManual-cVBZQ_Mt.mjs.map +0 -1
- package/.output/server/chunks/build/useLogsQuery-D7hrJ3yn.mjs +0 -150
- package/.output/server/chunks/build/useLogsQuery-D7hrJ3yn.mjs.map +0 -1
- package/.output/server/chunks/build/useLogsScope-aaPQeTRm.mjs +0 -83
- package/.output/server/chunks/build/useLogsScope-aaPQeTRm.mjs.map +0 -1
- package/.output/server/chunks/build/useMonitorColumns-vVnt3r5Q.mjs +0 -217
- package/.output/server/chunks/build/useMonitorColumns-vVnt3r5Q.mjs.map +0 -1
- package/.output/server/chunks/build/useMonitorData-DIkiLr_h.mjs +0 -135
- package/.output/server/chunks/build/useMonitorData-DIkiLr_h.mjs.map +0 -1
- package/.output/server/chunks/build/useMonitorFormat-CyURtH8N.mjs +0 -91
- package/.output/server/chunks/build/useMonitorFormat-CyURtH8N.mjs.map +0 -1
- package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs +0 -71
- package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs.map +0 -1
- package/.output/server/chunks/build/useOperationsFeed-Ci4mZAn_.mjs +0 -195
- package/.output/server/chunks/build/useOperationsFeed-Ci4mZAn_.mjs.map +0 -1
- package/.output/server/chunks/build/useOpsLog-C-M6Eace.mjs +0 -149
- package/.output/server/chunks/build/useOpsLog-C-M6Eace.mjs.map +0 -1
- package/.output/server/chunks/build/useRecipeDispatchApprovals-BYtiqfeb.mjs +0 -156
- package/.output/server/chunks/build/useRecipeDispatchApprovals-BYtiqfeb.mjs.map +0 -1
- package/.output/server/chunks/build/useResponsive-BKDMGTHs.mjs.map +0 -1
- package/.output/server/chunks/build/useTeamActions-BDjU06LP.mjs +0 -79
- package/.output/server/chunks/build/useTeamActions-BDjU06LP.mjs.map +0 -1
- package/.output/server/chunks/build/useTeamAddMemberDialog-J3oFn3FI.mjs +0 -84
- package/.output/server/chunks/build/useTeamAddMemberDialog-J3oFn3FI.mjs.map +0 -1
- package/.output/server/chunks/build/useTeamCreateDialog-fbn4ixYu.mjs +0 -97
- package/.output/server/chunks/build/useTeamCreateDialog-fbn4ixYu.mjs.map +0 -1
- package/.output/server/chunks/build/useTeamDeployDialog-BNezMD2k.mjs +0 -80
- package/.output/server/chunks/build/useTeamDeployDialog-BNezMD2k.mjs.map +0 -1
- package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs +0 -82
- package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs.map +0 -1
- package/.output/server/chunks/build/useTeamPluginDialog-BZznrOVe.mjs +0 -103
- package/.output/server/chunks/build/useTeamPluginDialog-BZznrOVe.mjs.map +0 -1
- package/.output/server/chunks/build/useTeamsCatalog-DuZFP3oG.mjs +0 -123
- package/.output/server/chunks/build/useTeamsCatalog-DuZFP3oG.mjs.map +0 -1
- package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs +0 -72
- package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs.map +0 -1
- package/.output/server/chunks/build/useTokenCreate-Ctl0YGhL.mjs +0 -115
- package/.output/server/chunks/build/useTokenCreate-Ctl0YGhL.mjs.map +0 -1
- package/.output/server/chunks/build/useTokenRename-Cm3ypSfN.mjs +0 -87
- package/.output/server/chunks/build/useTokenRename-Cm3ypSfN.mjs.map +0 -1
- package/.output/server/chunks/build/useTokenReveal-CeoWL5Mt.mjs +0 -118
- package/.output/server/chunks/build/useTokenReveal-CeoWL5Mt.mjs.map +0 -1
- package/.output/server/chunks/build/useTokensList-CNIzON3u.mjs +0 -92
- package/.output/server/chunks/build/useTokensList-CNIzON3u.mjs.map +0 -1
- package/.output/server/chunks/build/useTownBus-D9SoIsAN.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkbenchAuth-CY-bVFMu.mjs +0 -141
- package/.output/server/chunks/build/useWorkbenchAuth-CY-bVFMu.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkbenchWorkspaces-DhZQFss9.mjs +0 -138
- package/.output/server/chunks/build/useWorkbenchWorkspaces-DhZQFss9.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkshopApi-BxHn-4iR.mjs +0 -127
- package/.output/server/chunks/build/useWorkshopApi-BxHn-4iR.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkshopWs-YQ5URrbt.mjs +0 -1659
- package/.output/server/chunks/build/useWorkshopWs-YQ5URrbt.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs +0 -60
- package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkspaceChannels-CPFepxTN.mjs +0 -92
- package/.output/server/chunks/build/useWorkspaceChannels-CPFepxTN.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs +0 -78
- package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs +0 -168
- package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs.map +0 -1
- package/.output/server/chunks/build/users-DjiVC_tS.mjs +0 -569
- package/.output/server/chunks/build/users-DjiVC_tS.mjs.map +0 -1
- package/.output/server/chunks/build/workshop-1gKeDASV.mjs +0 -546
- package/.output/server/chunks/build/workshop-1gKeDASV.mjs.map +0 -1
- package/.output/server/chunks/build/workspaces-CmW0cpOt.mjs.map +0 -1
- package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.json +0 -1
- package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.mtg0vz68-49792-75b0709555.baseline/1459e6269990a5d229b9228c8b2f62ffaa7d350068380ae8b875fee0db45cca6.source +0 -180
- package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.mtg0vz68-49792-75b0709555.baseline/c2991e909c70c5c12b90a407c7adcf63384c51668a2b334e6e047fa675c268fe.source +0 -305
- package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.mtg0vz68-49792-75b0709555.baseline/e09129039d1e27e3fac24becc9bdafd2d1a7c8049bff24173df007be865f0165.source +0 -264
- package/app/.mimosa/hook-status/sess_05189059-e42d-4188-8911-4f7baabe009b-28ef7c75ea.json +0 -14
- package/server/.mimosa/hook-state/sess_869e5bfd-07f4-4b6e-a991-6221fcf6b7d2.json +0 -1
- package/server/.mimosa/hook-state/sess_869e5bfd-07f4-4b6e-a991-6221fcf6b7d2.mvhn1irp-99488-e3fdc1cbfc.baseline/942d2679b87b96c612b4f2a425c3ccc5b6f3234f0cf589a8441602f866fbe277.source +0 -41
- package/server/.mimosa/hook-state/sess_869e5bfd-07f4-4b6e-a991-6221fcf6b7d2.mvhn1irp-99488-e3fdc1cbfc.baseline/dd617a82339d2c61e49e28e416aabeb2fc100fb3cb1beca18d02dfb833214af6.source +0 -51
- package/server/.mimosa/hook-status/sess_869e5bfd-07f4-4b6e-a991-6221fcf6b7d2-e67b6b91bf.json +0 -14
- package/server/services/workshop/.mimosa/hook-state/sess_fed429fb-c8b7-4a50-bbd6-45afc580893f.json +0 -1
- package/server/services/workshop/.mimosa/hook-status/sess_fed429fb-c8b7-4a50-bbd6-45afc580893f-e6b75bbfe6.json +0 -14
- package/server/services/workshop/aml/python/__pycache__/aml_eval.cpython-312.pyc +0 -0
- package/server/services/workshop/aml/python/__pycache__/amlkit.cpython-312.pyc +0 -0
- package/server/services/workshop/aml/python/__pycache__/train-example.cpython-312.pyc +0 -0
- package/server/services/workshop/aml/python/__pycache__/train-hybrid-example.cpython-312.pyc +0 -0
- package/server/services/workshop/optimization/python/.mimosa/hook-state/session_187ec97f45d4bd02369bbe94da527cf1.json +0 -1
- package/server/services/workshop/optimization/python/.mimosa/hook-state/session_187ec97f45d4bd02369bbe94da527cf1.mvjqkcs6-68688-fb7131a89c.baseline/190a6772a4e43801737b4ba6072eb9d53d3099b5d8a9e6f57bc5e8592a26a6c4.source +0 -274
- package/server/services/workshop/optimization/python/.mimosa/hook-status/session_187ec97f45d4bd02369bbe94da527cf1-01ed7f04fa.json +0 -14
- package/server/services/workshop/optimization/python/__pycache__/problems.cpython-312.pyc +0 -0
- /package/.output/public/_nuxt/{6P4ZAzxa2.js → 6P4ZAzxa.js} +0 -0
- /package/.output/public/_nuxt/{9j2J4k4w.js → 9j2J4k4w2.js} +0 -0
- /package/.output/public/_nuxt/{DgrK8UCQ.js → BvRk9kiK2.js} +0 -0
- /package/.output/public/_nuxt/{dVw8IHY62.js → dVw8IHY6.js} +0 -0
- /package/.output/public/_nuxt/{k9b520K-.js → k9b520K-2.js} +0 -0
- /package/.output/server/chunks/{build → _}/builtin-catalog-edpDcgfL.mjs +0 -0
- /package/.output/server/chunks/{build → _}/chart-pipeline-BpoWYMK_.mjs +0 -0
- /package/.output/server/chunks/{build → _}/chart-trend-BWeZh5Lv.mjs +0 -0
- /package/.output/server/chunks/{build → _}/dcw-driver-badge-Df5wL_ZA.mjs +0 -0
- /package/.output/server/chunks/{build → _}/narrow-fetch-CcG-BPxc.mjs +0 -0
- /package/.output/server/chunks/{build → _}/useResponsive-BKDMGTHs.mjs +0 -0
- /package/.output/server/chunks/{build → _}/useTownBus-D9SoIsAN.mjs +0 -0
- /package/.output/server/chunks/{build → _}/workspaces-CmW0cpOt.mjs +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.topnav[data-v-74f391f2]{border-bottom:1px solid var(--hud-line-soft);z-index:60;background:linear-gradient(#0c1320,#0a101b);flex:none;align-items:center;gap:14px;height:50px;padding:0 16px;display:flex;position:relative}.topnav[data-v-74f391f2]:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000 4%,#35e0a059 50%,#0000 96%);height:1px;position:absolute;bottom:-1px;left:0;right:0}.brand[data-v-74f391f2]{align-items:center;gap:10px;min-width:230px;display:flex}.brand-glyph[data-v-74f391f2]{flex:none;width:26px;height:26px}.brand-name[data-v-74f391f2]{letter-spacing:.06em;font-size:14.5px;font-weight:800}.brand-name em[data-v-74f391f2]{color:var(--hud-accent);font-style:normal}.brand-sub[data-v-74f391f2]{color:var(--hud-faint);letter-spacing:.18em;margin-top:2px;font-size:10px}.nav-tabs[data-v-74f391f2]{align-items:center;gap:10px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.nav-action[data-v-74f391f2]{border:1px solid var(--hud-line-hi);border-radius:var(--hud-r-sm);height:32px;color:var(--hud-dim);cursor:pointer;transition:background .15s var(--hud-ease), color .15s var(--hud-ease), border-color .15s var(--hud-ease);background:0 0;padding:0 14px;font-size:12px;font-weight:600}.nav-action[data-v-74f391f2]:hover{background:#14203a;border-color:#33507c}.save-chip[data-v-74f391f2]{font-family:var(--font-mono);letter-spacing:.08em;border:1px solid var(--hud-line-hi);color:var(--hud-dim);border-radius:999px;padding:3px 8px;font-size:10px}.save-chip.s-dirty[data-v-74f391f2]{color:var(--hud-amber);border-color:#f6c45366}.save-chip.s-saving[data-v-74f391f2]{color:var(--hud-dim)}.save-chip.s-saved[data-v-74f391f2]{color:var(--hud-accent);border-color:#35e0a066}.save-chip.s-error[data-v-74f391f2]{color:var(--hud-danger);border-color:#ff6b6b66}.nav-right[data-v-74f391f2]{align-items:center;gap:10px;margin-left:auto;display:flex}.nav-chip[data-v-74f391f2]{font-family:var(--font-mono);color:var(--hud-dim);border:1px solid var(--hud-line);letter-spacing:.06em;border-radius:999px;padding:4px 9px;font-size:11px}.avatar-chip[data-v-74f391f2]{background:var(--hud-panel-2);border:1px solid var(--hud-line);border-radius:999px;align-items:center;gap:7px;padding:3px 10px 3px 3px;display:flex}.avatar-chip span[data-v-74f391f2]{color:var(--hud-text);font-size:12px}.avatar-fallback[data-v-74f391f2]{color:#04120c;background:linear-gradient(135deg, var(--hud-accent), var(--hud-cyan));border-radius:50%;place-items:center;width:24px;height:24px;font-size:10.5px;font-weight:700;display:grid}.seg[data-v-74f391f2]{background:var(--hud-panel);border:1px solid var(--hud-line);border-radius:10px;align-items:center;gap:6px;padding:4px;display:flex}.seg button[data-v-74f391f2]{color:var(--hud-dim);transition:background .15s var(--hud-ease), color .15s var(--hud-ease);border-radius:6px;padding:4px 16px;font-size:11.5px;font-weight:600}.seg button.on[data-v-74f391f2]{background:var(--hud-accent);color:#04120c;box-shadow:0 0 12px #35e0a059}.dock-toggle[data-v-74f391f2],.sheet-btn[data-v-74f391f2],.sheet-hd[data-v-74f391f2]{display:none}.sheet-mask[data-v-74f391f2]{z-index:65;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#04080e99;position:fixed;inset:0}@media (width<=1023px){.topnav[data-v-74f391f2]{flex-wrap:wrap;align-items:center;gap:6px 8px;height:auto;min-height:46px;padding:6px 10px 8px}.brand[data-v-74f391f2]{flex:auto;order:0;gap:8px;min-width:0}.brand>div[data-v-74f391f2]{min-width:0;overflow:hidden}.brand-name[data-v-74f391f2]{white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.nav-right[data-v-74f391f2]{flex:none;order:1;gap:6px;margin-left:0}.nav-tabs[data-v-74f391f2]{flex:100%;order:2;gap:8px;position:static;transform:none}.seg button[data-v-74f391f2]{padding:0 14px;font-size:13px}.nav-action[data-v-74f391f2]{height:40px;padding:0 12px;font-size:13px}.save-chip[data-v-74f391f2]{font-size:11.5px}.nav-chip[data-v-74f391f2]{padding:5px 8px;font-size:11.5px}.avatar-chip[data-v-74f391f2]{padding:3px 8px 3px 3px}.avatar-chip span[data-v-74f391f2]{font-size:13px}.avatar-fallback[data-v-74f391f2]{width:26px;height:26px;font-size:11.5px}.sheet-btn[data-v-74f391f2]{border-radius:var(--hud-r-sm);min-height:40px;color:var(--hud-dim);white-space:nowrap;background:#101a2b;border:1px solid #27395c;align-items:center;gap:6px;padding:0 10px;font-size:12.5px;font-weight:600;display:inline-flex}.sheet-btn.on[data-v-74f391f2]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent);box-shadow:0 0 12px #35e0a04d}.sheet-ico[data-v-74f391f2]{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:16px;height:16px}.topnav.sheet-on[data-v-74f391f2]{z-index:71}}@media (width<=639px){.brand[data-v-74f391f2]{flex:none}.brand>div[data-v-74f391f2]{display:none}.brand-glyph[data-v-74f391f2]{width:28px;height:28px}.nav-fps[data-v-74f391f2],.nav-user span[data-v-74f391f2]{display:none}.avatar-chip[data-v-74f391f2]{padding:3px}.sheet-btn-t[data-v-74f391f2]{display:none}.sheet-btn[data-v-74f391f2]{padding:0 10px}}.daq-list[data-v-c2f30552],.scene-list[data-v-c2f30552]{flex-direction:column;gap:4px;display:flex}.daq-card[data-v-c2f30552]{border-radius:var(--hud-r-md);background:var(--hud-panel-2);cursor:grab;transition:transform .15s var(--hud-ease), border-color .15s var(--hud-ease), background .15s var(--hud-ease);border:1px solid #1f4a3a8c;align-items:center;gap:10px;margin-bottom:4px;padding:8px 9px;display:flex}.daq-card[data-v-c2f30552]:hover{background:#12291f;border-color:#35e0a080;transform:translateY(-1px)}.daq-card[data-v-c2f30552]:active{cursor:grabbing}.daq-ico[data-v-c2f30552]{width:34px;height:34px;color:var(--hud-accent);background:linear-gradient(160deg,#12291f,#0e1a24);border:1px solid #1f4a3aa6;border-radius:9px;flex:none;place-items:center;display:grid}.daq-svg[data-v-c2f30552]{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.daq-meta[data-v-c2f30552]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.daq-name[data-v-c2f30552]{color:var(--hud-text);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.daq-code[data-v-c2f30552]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-faint);font-size:10px}.daq-count[data-v-c2f30552]{font-family:var(--font-mono);color:var(--hud-accent);background:#35e0a01a;border:1px solid #35e0a047;border-radius:6px;flex:none;padding:0 6px;font-size:10px;line-height:15px}.daq-group[data-v-c2f30552]{flex-direction:column;display:flex}.daq-card.tpl[data-v-c2f30552]{cursor:pointer;-webkit-user-select:none;user-select:none;margin-bottom:0}.daq-card.tpl[data-v-c2f30552]:active{cursor:pointer}.daq-card.tpl[data-v-c2f30552]:focus-visible{outline:1px solid var(--hud-accent);outline-offset:1px}.daq-caret[data-v-c2f30552]{color:var(--hud-faint);transition:transform .15s var(--hud-ease);flex:none;font-size:10px}.daq-card.tpl.open .daq-caret[data-v-c2f30552]{transform:rotate(90deg)}.daq-card.tpl[data-v-c2f30552]:hover{transform:none}.daq-add[data-v-c2f30552]{width:18px;height:18px;color:var(--hud-faint);cursor:pointer;opacity:0;transition:opacity .15s var(--hud-ease), color .15s var(--hud-ease), border-color .15s var(--hud-ease), transform .16s cubic-bezier(.22, 1, .36, 1);background:0 0;border:1px solid #2c4568b3;border-radius:6px;flex:none;place-items:center;font-size:12px;line-height:1;display:grid}.daq-card.tpl:focus-within .daq-add[data-v-c2f30552],.daq-card.tpl:hover .daq-add[data-v-c2f30552]{opacity:1}@media (hover:none){.daq-add[data-v-c2f30552]{opacity:1}}.daq-add[data-v-c2f30552]:hover{color:var(--hud-accent);border-color:#35e0a080}.daq-add[data-v-c2f30552]:active{transform:scale(.9)}.daq-children[data-v-c2f30552]{animation:daq-tree-in-c2f30552 .16s var(--hud-ease);flex-direction:column;gap:2px;margin:2px 0 6px;padding-left:16px;display:flex}@keyframes daq-tree-in-c2f30552{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.daq-node[data-v-c2f30552]{cursor:default;transition:background .15s var(--hud-ease), border-color .15s var(--hud-ease), transform .16s cubic-bezier(.22, 1, .36, 1);border:1px solid #0000;border-radius:7px;align-items:center;gap:8px;padding:5px 8px;display:flex}.daq-node[data-v-c2f30552]:hover{background:#111b2c;border-color:#2c456899}.daq-node[draggable=true][data-v-c2f30552]{cursor:grab}.daq-node[draggable=true][data-v-c2f30552]:active{cursor:grabbing;transform:scale(.98)}.daq-node.placed[data-v-c2f30552]{cursor:pointer}.daq-node.placed[draggable=true][data-v-c2f30552]{cursor:grab}.node-dot[data-v-c2f30552]{background:var(--hud-ok);width:7px;height:7px;box-shadow:0 0 6px color-mix(in srgb, var(--hud-ok) 50%, transparent);border-radius:50%;flex:none}.node-dot.offline[data-v-c2f30552]{border:1px solid var(--hud-faint);box-shadow:none;background:0 0}.node-dot.warn[data-v-c2f30552]{background:var(--hud-amber);box-shadow:0 0 6px color-mix(in srgb, var(--hud-amber) 50%, transparent)}.node-dot.alarm[data-v-c2f30552]{background:var(--hud-danger);box-shadow:0 0 6px color-mix(in srgb, var(--hud-danger) 60%, transparent)}.daq-node .daq-name[data-v-c2f30552]{font-size:11.5px;font-weight:500}.daq-node-sub[data-v-c2f30552]{align-items:baseline;gap:7px;min-width:0;display:flex}.node-val[data-v-c2f30552]{color:var(--hud-cyan);flex:none;font-size:10px}.node-dev[data-v-c2f30552]{color:var(--hud-faint);white-space:nowrap;text-overflow:ellipsis;max-width:104px;font-size:9.5px;overflow:hidden}.daq-empty-hint[data-v-c2f30552]{color:var(--hud-faint);padding:4px 8px 6px 10px;font-size:10px}.bind-select[data-v-c2f30552]:hover,.daq-ctl-cycle input[data-v-c2f30552]:hover,.daq-num[data-v-c2f30552]:hover,.obj-input[data-v-c2f30552]:hover,.obj-select[data-v-c2f30552]:hover{border-color:var(--hud-line-hi)}.bind-select[data-v-c2f30552]:focus,.daq-ctl-cycle input[data-v-c2f30552]:focus,.daq-num[data-v-c2f30552]:focus,.obj-input[data-v-c2f30552]:focus,.obj-select[data-v-c2f30552]:focus{border-color:var(--hud-accent);outline:none;box-shadow:0 0 0 3px #35e0a021}input[type=number][data-v-c2f30552]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-c2f30552]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-c2f30552]{appearance:textfield}.daq-ctrl[data-v-c2f30552]{background:var(--hud-panel);border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;padding:8px 10px;display:flex}.daq-ctl-btn[data-v-c2f30552]{font-family:var(--font-mono);letter-spacing:.05em;color:var(--hud-dim);cursor:pointer;border:1px solid var(--hud-line-hi);border-radius:var(--hud-r-sm);background:0 0;padding:4px 12px;font-size:11px}.daq-ctl-btn.on[data-v-c2f30552]{color:var(--hud-accent);border-color:#35e0a073}.daq-ctl-cycle[data-v-c2f30552]{color:var(--hud-faint);align-items:center;gap:5px;font-size:10.5px;display:inline-flex}.daq-ctl-cycle input[data-v-c2f30552],.daq-num[data-v-c2f30552]{width:64px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:6px;padding:2px 6px;font-size:11px}.daq-ctl-cycle[data-v-c2f30552]:focus-visible,button[data-v-c2f30552]:focus-visible,input[data-v-c2f30552]:focus-visible,select[data-v-c2f30552]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-c2f30552]{min-height:40px}}.daq-list[data-v-130f74e4],.scene-list[data-v-130f74e4]{flex-direction:column;gap:4px;display:flex}.daq-card[data-v-130f74e4]{border-radius:var(--hud-r-md);background:var(--hud-panel-2);cursor:grab;transition:transform .15s var(--hud-ease), border-color .15s var(--hud-ease), background .15s var(--hud-ease);border:1px solid #1f4a3a8c;align-items:center;gap:10px;margin-bottom:4px;padding:8px 9px;display:flex}.daq-card[data-v-130f74e4]:hover{background:#12291f;border-color:#35e0a080;transform:translateY(-1px)}.daq-card[data-v-130f74e4]:active{cursor:grabbing}.daq-ico[data-v-130f74e4]{width:34px;height:34px;color:var(--hud-accent);background:linear-gradient(160deg,#12291f,#0e1a24);border:1px solid #1f4a3aa6;border-radius:9px;flex:none;place-items:center;display:grid}.daq-svg[data-v-130f74e4]{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.daq-meta[data-v-130f74e4]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.daq-name[data-v-130f74e4]{color:var(--hud-text);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.daq-code[data-v-130f74e4]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-faint);font-size:10px}.daq-count[data-v-130f74e4]{font-family:var(--font-mono);color:var(--hud-accent);background:#35e0a01a;border:1px solid #35e0a047;border-radius:6px;flex:none;padding:0 6px;font-size:10px;line-height:15px}.daq-group[data-v-130f74e4]{flex-direction:column;display:flex}.daq-card.tpl[data-v-130f74e4]{cursor:pointer;-webkit-user-select:none;user-select:none;margin-bottom:0}.daq-card.tpl[data-v-130f74e4]:active{cursor:pointer}.daq-card.tpl[data-v-130f74e4]:focus-visible{outline:1px solid var(--hud-accent);outline-offset:1px}.daq-caret[data-v-130f74e4]{color:var(--hud-faint);transition:transform .15s var(--hud-ease);flex:none;font-size:10px}.daq-card.tpl.open .daq-caret[data-v-130f74e4]{transform:rotate(90deg)}.daq-card.tpl[data-v-130f74e4]:hover{transform:none}.daq-add[data-v-130f74e4]{width:18px;height:18px;color:var(--hud-faint);cursor:pointer;opacity:0;transition:opacity .15s var(--hud-ease), color .15s var(--hud-ease), border-color .15s var(--hud-ease), transform .16s cubic-bezier(.22, 1, .36, 1);background:0 0;border:1px solid #2c4568b3;border-radius:6px;flex:none;place-items:center;font-size:12px;line-height:1;display:grid}.daq-card.tpl:focus-within .daq-add[data-v-130f74e4],.daq-card.tpl:hover .daq-add[data-v-130f74e4]{opacity:1}@media (hover:none){.daq-add[data-v-130f74e4]{opacity:1}}.daq-add[data-v-130f74e4]:hover{color:var(--hud-accent);border-color:#35e0a080}.daq-add[data-v-130f74e4]:active{transform:scale(.9)}.daq-children[data-v-130f74e4]{animation:daq-tree-in-130f74e4 .16s var(--hud-ease);flex-direction:column;gap:2px;margin:2px 0 6px;padding-left:16px;display:flex}@keyframes daq-tree-in-130f74e4{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.daq-node[data-v-130f74e4]{cursor:default;transition:background .15s var(--hud-ease), border-color .15s var(--hud-ease), transform .16s cubic-bezier(.22, 1, .36, 1);border:1px solid #0000;border-radius:7px;align-items:center;gap:8px;padding:5px 8px;display:flex}.daq-node[data-v-130f74e4]:hover{background:#111b2c;border-color:#2c456899}.daq-node[draggable=true][data-v-130f74e4]{cursor:grab}.daq-node[draggable=true][data-v-130f74e4]:active{cursor:grabbing;transform:scale(.98)}.daq-node.placed[data-v-130f74e4]{cursor:pointer}.daq-node.placed[draggable=true][data-v-130f74e4]{cursor:grab}.node-dot[data-v-130f74e4]{background:var(--hud-ok);width:7px;height:7px;box-shadow:0 0 6px color-mix(in srgb, var(--hud-ok) 50%, transparent);border-radius:50%;flex:none}.node-dot.offline[data-v-130f74e4]{border:1px solid var(--hud-faint);box-shadow:none;background:0 0}.node-dot.warn[data-v-130f74e4]{background:var(--hud-amber);box-shadow:0 0 6px color-mix(in srgb, var(--hud-amber) 50%, transparent)}.node-dot.alarm[data-v-130f74e4]{background:var(--hud-danger);box-shadow:0 0 6px color-mix(in srgb, var(--hud-danger) 60%, transparent)}.daq-node .daq-name[data-v-130f74e4]{font-size:11.5px;font-weight:500}.daq-node-sub[data-v-130f74e4]{align-items:baseline;gap:7px;min-width:0;display:flex}.node-val[data-v-130f74e4]{color:var(--hud-cyan);flex:none;font-size:10px}.node-dev[data-v-130f74e4]{color:var(--hud-faint);white-space:nowrap;text-overflow:ellipsis;max-width:104px;font-size:9.5px;overflow:hidden}.daq-empty-hint[data-v-130f74e4]{color:var(--hud-faint);padding:4px 8px 6px 10px;font-size:10px}button[data-v-130f74e4]:focus-visible,input[data-v-130f74e4]:focus-visible,select[data-v-130f74e4]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-130f74e4]{min-height:40px}}.scene-row[data-v-9618a144]{border-radius:var(--hud-r-md);cursor:grab;transition:background .15s var(--hud-ease), border-color .15s var(--hud-ease);border:1px solid #0000;align-items:center;gap:10px;margin-bottom:4px;padding:8px 9px;display:flex}.scene-row[data-v-9618a144]:hover{background:#111b2c}.scene-row.active[data-v-9618a144]{background:#35e0a00f;border-color:#35e0a059}.scene-row[data-v-9618a144]:active{cursor:grabbing}.scene-ico[data-v-9618a144]{background:color-mix(in srgb, var(--ch,var(--hud-accent)) 16%, #101a2c);border:1px solid color-mix(in srgb, var(--ch,var(--hud-accent)) 45%, transparent);border-radius:8px;flex:none;width:30px;height:30px}.scene-row.active .scene-ico[data-v-9618a144]{box-shadow:0 0 10px color-mix(in srgb, var(--ch,var(--hud-accent)) 40%, transparent)}.scene-meta-wrap[data-v-9618a144]{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.scene-name[data-v-9618a144]{color:var(--hud-text);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.scene-meta[data-v-9618a144]{font-family:var(--font-mono);color:var(--hud-faint);font-size:10px}.scene-add[data-v-9618a144],.scene-cur[data-v-9618a144]{border-radius:6px;flex:none;margin-left:auto;padding:1px 7px;font-size:10px}.scene-cur[data-v-9618a144]{color:var(--hud-accent);border:1px solid #35e0a066}.scene-add[data-v-9618a144]{color:var(--hud-dim);border:1px solid var(--hud-line)}.scene-hint[data-v-9618a144]{color:var(--hud-amber);padding:6px 4px 0;font-size:10px;line-height:1.5}button[data-v-9618a144]:focus-visible,input[data-v-9618a144]:focus-visible,select[data-v-9618a144]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-9618a144]{min-height:40px}}.model-preview-3d[data-v-ed056b0a]{border:1px solid var(--hud-line,#263340);background:radial-gradient(120% 90% at 50% 20%,#41c8f41f,#0000 62%),linear-gradient(#0b121b,#0e141d);border-radius:2px;width:100%;min-height:40px;position:relative;overflow:hidden}.mp-loading[data-v-ed056b0a]{place-items:center;display:grid;position:absolute;inset:0}.mp-spin[data-v-ed056b0a]{border:2px solid #41c8f440;border-top-color:#41c8f4;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite mp-spin-ed056b0a}@keyframes mp-spin-ed056b0a{to{transform:rotate(1turn)}}.mp-failed[data-v-ed056b0a]{font-family:var(--font-mono);letter-spacing:.12em;color:var(--hud-dim,#7f919e);place-items:center;font-size:10px;display:grid;position:absolute;inset:0}.asset-lib[data-v-bab33cc0]{width:184px;font-family:var(--font-body);flex-direction:column;flex:none;gap:8px;padding:0 0 10px;display:flex}.lib-head[data-v-bab33cc0]{border-bottom:1px solid #26334073;align-items:center;gap:7px;padding:10px 12px 6px;display:flex}.head-title[data-v-bab33cc0]{font-family:var(--font-mono);letter-spacing:.16em;color:var(--hud-text,#d9e4ee);white-space:nowrap;font-size:10px;font-weight:600}.head-hint[data-v-bab33cc0]{font-family:var(--font-mono);color:var(--hud-faint,#5b6c7b);white-space:nowrap;margin-left:auto;font-size:10px}.upload-box[data-v-bab33cc0]{transition:border-color .16s var(--hud-ease,ease), background .16s var(--hud-ease,ease);background:#0b101866;border:1px dashed #263340cc;border-radius:2px;flex-direction:column;gap:7px;margin:8px 10px 0;padding:7px;display:flex}.upload-box.drop[data-v-bab33cc0]{border-color:var(--hud-accent,#4da3ff);background:#4da3ff14}.upload-row[data-v-bab33cc0]{cursor:pointer;align-items:center;gap:6px;min-height:26px;display:flex}.file-input[data-v-bab33cc0]{display:none}.upload-name[data-v-bab33cc0]{font-family:var(--font-mono);color:var(--hud-dim,#8496a5);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;font-size:10px;display:inline-flex;overflow:hidden}.upload-ico[data-v-bab33cc0]{color:var(--hud-accent,#4da3ff);font-size:13px}.drop-hint[data-v-bab33cc0]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-accent,#4da3ff);align-items:center;gap:5px;padding:2px 0 4px;font-size:10px;display:inline-flex}.upload-file-tag[data-v-bab33cc0]{font-family:var(--font-mono);color:var(--hud-dim,#8496a5);border:1px solid var(--hud-line,#263340);border-radius:2px;padding:3px 6px;font-size:9.5px}.upload-actions[data-v-bab33cc0]{align-items:center;gap:6px;display:flex}.upload-btn[data-v-bab33cc0]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-text,#d9e4ee);background:var(--hud-panel-raised,#141b26);border:1px solid var(--hud-line,#263340);cursor:pointer;transition:border-color .14s var(--hud-ease,ease), color .14s var(--hud-ease,ease);border-radius:2px;padding:5px 10px;font-size:10px;font-weight:600}.upload-btn[data-v-bab33cc0]:hover:not(:disabled){border-color:var(--hud-accent,#4da3ff);color:var(--hud-accent,#4da3ff)}.upload-btn[data-v-bab33cc0]:disabled{opacity:.45;cursor:default}.upload-btn.go[data-v-bab33cc0]{color:var(--hud-amber,#f5a742);background:#f5a74214;border-color:#f5a7428c}.upload-btn.go[data-v-bab33cc0]:hover:not(:disabled){border-color:var(--hud-amber,#f5a742);color:var(--hud-amber,#f5a742);background:#f5a74229}.mini-err[data-v-bab33cc0]{font-family:var(--font-mono);color:var(--hud-danger,#ff6b5c);font-size:9.5px}.mini-err[data-v-bab33cc0],.mini-msg[data-v-bab33cc0]{font-size:10px}.mini-msg[data-v-bab33cc0]{font-family:var(--font-mono);color:var(--hud-dim,#8496a5);padding:0 10px}.lib-grid[data-v-bab33cc0]{flex-direction:column;gap:4px;max-height:42vh;padding:6px 10px 2px;display:flex;overflow:hidden auto}.model-card[data-v-bab33cc0]{cursor:grab;transition:background .14s var(--hud-ease,ease);background:#141b26a6;border:0;border-radius:2px;flex-direction:column;align-items:stretch;gap:4px;padding:6px;display:flex;position:relative}.model-card[data-v-bab33cc0]:hover{background:var(--hud-panel-hover,#1a2432)}.model-card[data-v-bab33cc0]:active{cursor:grabbing}.model-card .model-preview-3d[data-v-bab33cc0]{margin-bottom:2px}.model-name[data-v-bab33cc0]{color:var(--hud-text,#d9e4ee);text-align:left;text-overflow:ellipsis;white-space:nowrap;padding:0 2px;font-size:11px;font-weight:600;overflow:hidden}.model-badge[data-v-bab33cc0]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-faint,#5b6c7b);text-align:left;padding:0 2px;font-size:10px}.card-actions[data-v-bab33cc0]{justify-content:flex-end;gap:4px;display:flex}.card-btn[data-v-bab33cc0]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-text,#d9e4ee);border:1px solid var(--hud-line,#263340);cursor:pointer;transition:border-color .14s var(--hud-ease,ease), color .14s var(--hud-ease,ease);background:0 0;border-radius:2px;padding:2px 8px;font-size:10px;font-weight:600}.card-btn[data-v-bab33cc0]:hover:not(:disabled){border-color:var(--hud-accent,#4da3ff);color:var(--hud-accent,#4da3ff)}.card-btn.danger[data-v-bab33cc0]{color:var(--hud-danger,#ff6b5c)}.card-btn.danger[data-v-bab33cc0]:hover:not(:disabled){border-color:var(--hud-danger,#ff6b5c);color:var(--hud-danger,#ff6b5c)}.card-btn[data-v-bab33cc0]:disabled{opacity:.45;cursor:default}.model-img[data-v-bab33cc0]{-o-object-fit:contain;object-fit:contain;pointer-events:none;width:46px;height:68px}.model-img.glb[data-v-bab33cc0]{background:var(--hud-input,#0b1018);border:1px dashed var(--hud-line,#263340);border-radius:2px;justify-content:center;align-items:center;width:100%;height:44px;display:inline-flex}.glb-cube[data-v-bab33cc0]{color:var(--hud-faint,#5b6c7b);font-size:24px;line-height:1}.lib-note[data-v-bab33cc0]{font-family:var(--font-mono);color:var(--hud-faint,#5b6c7b);align-items:center;gap:7px;padding:8px 2px;font-size:9.5px;display:flex}.loading-dot[data-v-bab33cc0]{border:2px solid var(--hud-line,#263340);border-top-color:var(--hud-accent,#4da3ff);border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin-bab33cc0}@keyframes spin-bab33cc0{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.loading-dot[data-v-bab33cc0]{animation:none}}.rail[data-v-9075e52d]{background:linear-gradient(#0a101c,#080d16);flex-direction:column;gap:10px;min-height:0;padding:10px;display:flex;overflow:hidden auto}.rail-left[data-v-9075e52d]{border-right:1px solid var(--hud-line-soft)}.rail[data-v-9075e52d]::-webkit-scrollbar{width:8px}.rail[data-v-9075e52d]::-webkit-scrollbar-thumb{background:#1c2942;border:2px solid #080d16;border-radius:4px}.rail[data-v-9075e52d]::-webkit-scrollbar-track{background:0 0}.panel[data-v-9075e52d]{border:1px solid var(--hud-line);border-radius:var(--hud-r-lg);background:linear-gradient(#101827,#0d1420);flex:none;padding:12px;position:relative;box-shadow:inset 0 1px #8fb0dc12,0 10px 28px #03070e73}.panel[data-v-9075e52d]:before{content:"";border-radius:var(--hud-r-lg) var(--hud-r-lg) 0 0;pointer-events:none;background:linear-gradient(#78a5dc0e,#0000);height:44px;position:absolute;inset:0 0 auto}.panel-hd[data-v-9075e52d]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.panel-hd h3[data-v-9075e52d]{letter-spacing:.02em;flex:1;margin:0;padding-left:11px;font-size:12.5px;font-weight:700;position:relative}.panel-hd h3[data-v-9075e52d]:before{content:"";background:var(--hud-accent);width:3px;height:12px;box-shadow:0 0 8px color-mix(in srgb, var(--hud-accent) 45%, transparent);border-radius:2px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.panel-tag[data-v-9075e52d]{font-family:var(--font-mono);color:var(--hud-cyan);background:#41c8f41a;border:1px solid #41c8f440;border-radius:6px;padding:0 6px;font-size:9.5px;line-height:15px}.lib-embed[data-v-9075e52d]{margin:-4px 0 0}@media (prefers-reduced-motion:no-preference){.dock[data-v-9075e52d],.rail-left[data-v-9075e52d],.rail-right[data-v-9075e52d]{animation:.52s cubic-bezier(.22,.68,.36,1) backwards hud-boot-9075e52d}.rail-left[data-v-9075e52d]{animation-delay:40ms}.rail-right[data-v-9075e52d]{animation-delay:.15s}.dock[data-v-9075e52d]{animation-delay:.26s}}@keyframes hud-boot-9075e52d{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.dock-toggle[data-v-9075e52d],.sheet-btn[data-v-9075e52d],.sheet-hd[data-v-9075e52d]{display:none}button[data-v-9075e52d]:focus-visible,input[data-v-9075e52d]:focus-visible,select[data-v-9075e52d]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){.rail[data-v-9075e52d]{z-index:70;overscroll-behavior:contain;border:0;border-top:1px solid var(--hud-line-hi);visibility:hidden;width:auto;max-height:min(76dvh,640px);transition:transform .26s var(--hud-ease), visibility 0s linear .26s;background:linear-gradient(#0c1420,#080d16 46%);border-radius:16px 16px 0 0;gap:8px;padding:0 10px 12px;position:fixed;inset:auto 0 0;overflow-y:auto;transform:translateY(103%);box-shadow:0 -18px 46px #0009}.rail.sheet-open[data-v-9075e52d]{visibility:visible;transition:transform .26s var(--hud-ease), visibility 0s;transform:none}.rail-left[data-v-9075e52d],.rail-right[data-v-9075e52d]{border-left:0;border-right:0}.rail .panel[data-v-9075e52d]{flex:none}.sheet-hd[data-v-9075e52d]{z-index:2;border-bottom:1px solid var(--hud-line-soft);background:linear-gradient(#0e1725,#0c1420);align-items:center;gap:8px;margin:0 -10px 2px;padding:13px 12px 9px;display:flex;position:sticky;top:0}.sheet-grip[data-v-9075e52d]{background:#2c4568;border-radius:2px;width:40px;height:3px;margin-left:-20px;position:absolute;top:6px;left:50%}.sheet-hd-t[data-v-9075e52d]{color:var(--hud-text);letter-spacing:.04em;font-size:13px;font-weight:700}.sheet-x[data-v-9075e52d]{border:1px solid var(--hud-line);width:40px;height:40px;color:var(--hud-dim);background:#101a2b;border-radius:8px;flex:none;margin-left:auto;font-size:15px}}@media (prefers-reduced-motion:reduce){.rail[data-v-9075e52d]{transition:none}}@media (width<=1023px){button[data-v-9075e52d]{min-height:40px}}.stage-top[data-v-1a626121]{z-index:6;pointer-events:none;justify-content:space-between;align-items:flex-start;padding:14px 16px;display:flex;position:absolute;top:0;left:0;right:0}.stage-top[data-v-1a626121]>*{pointer-events:auto}.vp-title[data-v-1a626121]{border-radius:var(--hud-r-md);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#090e18b8;border:1px solid #1c2942;align-items:center;gap:10px;padding:8px 12px;display:flex}.vp-title h2[data-v-1a626121]{letter-spacing:.02em;margin:0;font-size:15px;font-weight:700}.vp-id[data-v-1a626121]{font-family:var(--font-mono);letter-spacing:.04em;color:var(--hud-dim);white-space:nowrap;background:#0a111d99;border:1px solid #223050;border-radius:6px;padding:1px 8px;font-size:10px}.vp-tools[data-v-1a626121]{align-items:center;gap:8px;display:flex}.vp-tool[data-v-1a626121]{width:34px;height:34px;color:var(--hud-dim);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:color .15s var(--hud-ease), border-color .15s var(--hud-ease), background .15s var(--hud-ease);background:#0d1420d9;border:1px solid #223050;border-radius:50%;place-items:center;font-size:12px;font-weight:600;display:grid}.vp-tool[data-v-1a626121]:hover{color:var(--hud-text);border-color:#33507c}.vp-tool.on[data-v-1a626121]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent);box-shadow:0 0 12px #35e0a04d}.vp-svg[data-v-1a626121]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.leaders[data-v-1a626121]{z-index:7;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.angle-chip[data-v-1a626121]{z-index:6;border-radius:var(--hud-r-sm);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--hud-dim);background:#090e18c7;border:1px solid #1c2942;align-items:center;gap:6px;padding:5px 8px;font-size:11.5px;display:flex;position:absolute;top:64px;left:16px}.angle-chip select[data-v-1a626121]{color:var(--hud-text);cursor:pointer;background:0 0;border:0;font-size:11.5px;font-weight:600}.angle-chip select option[data-v-1a626121]{background:#0e1626}.vp-title h2[data-v-1a626121]{color:var(--hud-text)}.vp-tool[data-v-1a626121]:active{transform:scale(.96)}vp-tool[data-v-1a626121]{transition-property:filter,background,border-color,color,transform,opacity;transition-duration:.15s;transition-timing-function:var(--hud-ease)}button[data-v-1a626121]:focus-visible,input[data-v-1a626121]:focus-visible,select[data-v-1a626121]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-1a626121]{min-height:40px}.stage-top[data-v-1a626121]{flex-wrap:wrap;gap:8px;padding:10px 12px}.vp-title[data-v-1a626121]{gap:8px;padding:6px 10px}.vp-title h2[data-v-1a626121]{font-size:14px}.vp-id[data-v-1a626121]{font-size:11.5px}.vp-tool[data-v-1a626121]{width:40px;height:40px}.vp-svg[data-v-1a626121]{width:17px;height:17px}.angle-chip[data-v-1a626121]{min-height:40px;padding:4px 10px;font-size:13px;top:58px;left:12px}.angle-chip select[data-v-1a626121]{font-size:13px}}@media (width<=639px){.stage-top[data-v-1a626121]{padding:8px 10px}.vp-tools[data-v-1a626121]{gap:6px}.vp-tool[data-v-1a626121]{width:40px;height:40px}.angle-chip[data-v-1a626121]{top:54px;left:10px}}.callout-layer[data-v-49198014]{z-index:7;pointer-events:none;position:absolute;inset:0;overflow:hidden}.callout[data-v-49198014]{opacity:0;pointer-events:none;border-radius:var(--hud-r-md);min-width:150px;box-shadow:var(--hud-shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:opacity .22s var(--hud-ease), transform .22s var(--hud-ease), border-color .15s var(--hud-ease);background:linear-gradient(#101a2bf0,#0a101cf0);border:1px solid #41c8f466;padding:9px 12px 8px;position:absolute;transform:translate(-50%,-112%)translateY(5px)}.callout.near[data-v-49198014]{opacity:1;pointer-events:auto;transform:translate(-50%,-112%)}.leaders g[data-v-49198014]{opacity:0;transition:opacity .22s var(--hud-ease)}.leaders g.near[data-v-49198014]{opacity:1}.callout.warn[data-v-49198014]{border-color:#f6c45399}.co-label[data-v-49198014]{color:var(--hud-dim);white-space:nowrap;align-items:center;gap:6px;font-size:10.5px;display:flex}.co-dot[data-v-49198014]{background:var(--hud-cyan);border-radius:50%;flex:none;width:6px;height:6px;box-shadow:0 0 8px #41c8f4e6}.callout.warn .co-dot[data-v-49198014]{background:var(--hud-amber);box-shadow:0 0 8px #f6c453e6}.co-val[data-v-49198014]{font-family:var(--font-mono);letter-spacing:-.01em;color:var(--hud-text);font-variant-numeric:tabular-nums;margin-top:2px;font-size:21px;font-weight:700}.co-val small[data-v-49198014]{color:var(--hud-dim);margin-left:3px;font-size:10.5px;font-weight:500}.co-range[data-v-49198014]{font-family:var(--font-mono);color:var(--hud-faint);margin-top:1px;font-size:9.5px}.callout.warn .co-range[data-v-49198014]{color:var(--hud-amber)}button[data-v-49198014]:focus-visible,input[data-v-49198014]:focus-visible,select[data-v-49198014]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-49198014]{min-height:40px}}@media (prefers-reduced-motion:reduce){.callout[data-v-49198014]{animation:none}}.kpi-strip[data-v-05888286]{z-index:6;pointer-events:none;flex-wrap:wrap;justify-content:center;gap:10px;padding:0 16px;display:flex;position:absolute;bottom:12px;left:0;right:0}.kpi[data-v-05888286]{pointer-events:auto;border-radius:var(--hud-r-md);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:border-color .2s var(--hud-ease), transform .2s var(--hud-ease), box-shadow .2s var(--hud-ease);background:linear-gradient(#141e30eb,#0c1320e6);border:1px solid #1e2c46;align-items:center;gap:10px;padding:8px 14px;display:flex;box-shadow:inset 0 1px #8fb0dc14,0 8px 20px #03070e66}.kpi[data-v-05888286]:hover{border-color:#2c4568;transform:translateY(-1px);box-shadow:inset 0 1px #8fb0dc1a,0 12px 26px #03070e80}.kpi-ico[data-v-05888286]{border-radius:8px;flex:none;place-items:center;width:30px;height:30px;font-size:12px;font-weight:700;display:grid}.kpi-ico.c1[data-v-05888286]{color:var(--hud-cyan);background:#41c8f41f}.kpi-ico.c2[data-v-05888286]{color:var(--hud-accent);background:#35e0a01f}.kpi-ico.c3[data-v-05888286]{color:var(--hud-amber);background:#f6c4531f}.kpi-ico.c4[data-v-05888286]{color:#a78bfa;background:#a78bfa24}.kpi-ico.c5[data-v-05888286]{color:var(--hud-danger);background:#ff6b6b1f}.kpi-svg[data-v-05888286]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.kpi-meta[data-v-05888286]{line-height:1.25}.kpi-label[data-v-05888286]{color:var(--hud-dim);letter-spacing:.08em;text-transform:uppercase;font-size:10px}.kpi-val[data-v-05888286]{font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:19px;font-weight:700}.kpi-val small[data-v-05888286]{color:var(--hud-faint);margin-left:2px;font-size:10px;font-weight:500}button[data-v-05888286]:focus-visible,input[data-v-05888286]:focus-visible,select[data-v-05888286]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-05888286]{min-height:40px}.kpi-strip[data-v-05888286]{overscroll-behavior-x:contain;scrollbar-width:none;flex-wrap:nowrap;justify-content:flex-start;gap:8px;padding:0 12px;bottom:10px;overflow-x:auto}.kpi-strip[data-v-05888286]::-webkit-scrollbar{display:none}.kpi[data-v-05888286]{flex:none;gap:8px;padding:6px 10px}.kpi-ico[data-v-05888286]{width:28px;height:28px}.kpi-label[data-v-05888286]{font-size:11.5px}.kpi-val[data-v-05888286]{font-size:13px}.kpi-val small[data-v-05888286]{font-size:11.5px}}@media (width<=639px){.kpi-strip[data-v-05888286]{padding:0 10px}}.bp-range[data-v-d85cef44]{accent-color:var(--hud-accent)}.bp-val[data-v-d85cef44]{text-align:right;width:40px;font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;flex:none;font-size:10.5px}.bp-seg[data-v-d85cef44]{gap:4px;display:flex}.seg-btn[data-v-d85cef44]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), background .14s var(--hud-ease);border-radius:7px;padding:4px 12px;font-size:10.5px;font-weight:600}.seg-btn[data-v-d85cef44]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.seg-btn.on[data-v-d85cef44]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.boundary-panel[data-v-d85cef44]{z-index:9;border:1px solid var(--hud-line);border-radius:var(--hud-r-lg);width:302px;box-shadow:var(--hud-shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:auto;background:linear-gradient(#101827f7,#0d1420f7);flex-direction:column;gap:7px;padding:12px 14px;display:flex;position:absolute;top:84px;left:16px}.bp-title[data-v-d85cef44]{border-bottom:1px solid var(--hud-line);cursor:grab;touch-action:none;align-items:center;gap:8px;padding-bottom:8px;display:flex}.bp-title[data-v-d85cef44]:active{cursor:grabbing}.bp-name[data-v-d85cef44]{color:var(--hud-text);font-size:13px;font-weight:700}.bp-sub[data-v-d85cef44]{font-family:var(--font-mono);letter-spacing:.12em;color:var(--hud-faint);font-size:10px}.bp-tabs[data-v-d85cef44]{gap:4px;margin-left:auto;display:flex}.bp-tab[data-v-d85cef44]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;border-radius:6px;padding:3px 10px;font-size:10px;font-weight:600}.bp-tab.on[data-v-d85cef44]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.bp-row[data-v-d85cef44]{align-items:center;gap:8px;display:flex}.bp-label[data-v-d85cef44]{width:52px;color:var(--hud-dim);flex:none;font-size:10.5px}.bp-range[data-v-d85cef44]{appearance:none;background:linear-gradient(90deg, var(--hud-accent-dim) var(--fill,50%), #1d2a42 var(--fill,50%));cursor:pointer;border-radius:2px;flex:1;height:4px}.bp-range[data-v-d85cef44]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:12px;height:12px;-webkit-transition:transform .15s var(--hud-ease);transition:transform .15s var(--hud-ease);background:#fff;border-radius:50%}.bp-range[data-v-d85cef44]:hover::-webkit-slider-thumb{transform:scale(1.15)}.bp-hint[data-v-d85cef44]{color:var(--hud-faint);font-size:10px;line-height:1.6}.bp-actions[data-v-d85cef44]{gap:6px;margin-top:4px;display:flex}.bp-btn[data-v-d85cef44]{color:var(--hud-text);border-radius:var(--hud-r-sm);cursor:pointer;background:0 0;border:1px solid #27395c;flex:1;padding:6px 10px;font-size:11px;font-weight:600}.bp-btn[data-v-d85cef44]:hover{background:#14203a;border-color:#33507c}.bp-btn.save[data-v-d85cef44]{color:#04120c;background:var(--hud-accent-dim);border-color:var(--hud-accent-dim)}.bp-btn.save[data-v-d85cef44]:hover{background:#25b57e}.bp-btn.danger[data-v-d85cef44]{color:var(--hud-danger);border-color:#ff6b6b66}.bp-btn.danger[data-v-d85cef44]:hover{background:#ff6b6b1a}.member-list[data-v-d85cef44]{flex-direction:column;gap:5px;max-height:220px;display:flex;overflow:hidden auto}.member-row[data-v-d85cef44]{background:var(--hud-panel-2);border:1px solid var(--hud-line-soft);border-radius:var(--hud-r-md);align-items:center;gap:8px;padding:6px 8px;display:flex}.member-ava[data-v-d85cef44]{width:24px;height:24px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-panel-raised);border:1px solid var(--hud-line);border-radius:7px;flex:none;justify-content:center;align-items:center;font-size:10px;font-weight:700;display:inline-flex}.member-info[data-v-d85cef44]{flex-direction:column;flex:1;min-width:0;display:flex}.member-name[data-v-d85cef44]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.member-role[data-v-d85cef44]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-faint);font-size:10px}.member-role.r-lead[data-v-d85cef44]{color:var(--hud-amber)}.member-role.r-worker[data-v-d85cef44]{color:var(--hud-cyan)}.member-select[data-v-d85cef44]{min-width:0;color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:6px;flex:1;padding:3px 6px;font-size:10px}.drag-grip[data-v-d85cef44]{cursor:grab;touch-action:none}.drag-grip[data-v-d85cef44]:active{cursor:grabbing}.drag-panel[data-v-d85cef44]{will-change:left, top}.bp-btn[data-v-d85cef44]:active{transform:scale(.96)}bp-btn[data-v-d85cef44]{transition-property:filter,background,border-color,color,transform,opacity;transition-duration:.15s;transition-timing-function:var(--hud-ease)}.bp-range[data-v-d85cef44]:focus-visible,button[data-v-d85cef44]:focus-visible,input[data-v-d85cef44]:focus-visible,select[data-v-d85cef44]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-d85cef44]{min-height:40px}}.dock-toggle[data-v-09e9312e]{display:none}.dock-hd[data-v-09e9312e]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.dock-hd h3[data-v-09e9312e]{flex:none;margin:0;font-size:12.5px;font-weight:700}.dock-count[data-v-09e9312e]{letter-spacing:.08em;color:var(--hud-dim);border:1px solid var(--hud-line-soft);border-radius:6px;flex:none;padding:1px 7px;font-size:9.5px}.dock-mode[data-v-09e9312e]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-faint);border:1px solid var(--hud-line);border-radius:6px;margin-left:auto;padding:1px 7px;font-size:10px}.ctl-row[data-v-09e9312e]{align-items:center;gap:10px;margin-bottom:9px;display:flex}.ctl-sec[data-v-09e9312e]{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--hud-faint);border-top:1px solid var(--hud-line-soft);margin:2px 0 7px;padding-top:7px;font-size:10px;font-weight:600}.ctl-sec[data-v-09e9312e]:first-of-type{border-top:0;margin-top:0;padding-top:0}.ctl-name[data-v-09e9312e]{color:var(--hud-dim);flex:none;width:64px;font-size:11.5px}.ctl-val[data-v-09e9312e]{font-family:var(--font-mono);color:var(--hud-text);text-align:right;font-variant-numeric:tabular-nums;flex:none;width:38px;font-size:11px}.ctl-range[data-v-09e9312e]{appearance:none;background:linear-gradient(90deg, var(--hud-accent-dim) var(--fill,50%), #1d2a42 var(--fill,50%));cursor:pointer;border-radius:2px;flex:1;height:4px}.ctl-range[data-v-09e9312e]::-webkit-slider-thumb{-webkit-appearance:none;border:2.5px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#fff;border-radius:50%;box-shadow:0 1px 4px #00000080}.ctl-range[data-v-09e9312e]:hover::-webkit-slider-thumb{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a01f,0 1px 4px #00000080}.ctl-range[data-v-09e9312e]:active::-webkit-slider-thumb{transform:scale(1.05)}.bp-range[data-v-09e9312e]{accent-color:var(--hud-accent)}.bp-range[data-v-09e9312e]::-webkit-slider-thumb{-webkit-transition:transform .15s var(--hud-ease);transition:transform .15s var(--hud-ease)}.bp-range[data-v-09e9312e]:hover::-webkit-slider-thumb{transform:scale(1.15)}.snap-toggle[data-v-09e9312e]{height:22px;color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;border-radius:6px;flex:1;font-size:10.5px;font-weight:600}.snap-toggle.on[data-v-09e9312e]{color:var(--hud-accent);background:#35e0a014;border-color:#35e0a066}.fps-seg[data-v-09e9312e]{flex:1;gap:4px;display:flex}.fps-seg button[data-v-09e9312e]{height:22px;font-family:var(--font-mono);color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), background .14s var(--hud-ease);border-radius:6px;flex:1;font-size:10.5px;font-weight:600}.fps-seg button[data-v-09e9312e]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.fps-seg button.on[data-v-09e9312e]{color:var(--hud-accent);background:#35e0a014;border-color:#35e0a066}.ctl-btns[data-v-09e9312e]{gap:8px;margin-top:auto;display:flex}.btn[data-v-09e9312e]{border-radius:var(--hud-r-sm);white-space:nowrap;cursor:pointer;height:32px;transition:filter .15s var(--hud-ease), background .15s var(--hud-ease), border-color .15s var(--hud-ease);background:0 0;flex:1;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.btn-primary[data-v-09e9312e]{background:var(--hud-accent-dim);color:#04120c}.btn-primary[data-v-09e9312e]:hover{background:#25b57e}.btn-ghost[data-v-09e9312e]{color:var(--hud-text);border:1px solid #27395c}.btn-ghost[data-v-09e9312e]:hover{background:#14203a;border-color:#33507c}.btn-danger[data-v-09e9312e]{color:#fff;background:#b3273a}.btn-danger[data-v-09e9312e]:hover{background:#d1304a}.btn[data-v-09e9312e]:not(:disabled):active{transform:translateY(1px)}.bind-select[data-v-09e9312e]:disabled,.btn[data-v-09e9312e]:disabled,.nav-action[data-v-09e9312e]:disabled,.obj-input[data-v-09e9312e]:disabled,.obj-mini[data-v-09e9312e]:disabled,.obj-select[data-v-09e9312e]:disabled{opacity:.38;cursor:not-allowed;filter:saturate(.4)}.btn[data-v-09e9312e]:disabled:hover,.nav-action[data-v-09e9312e]:disabled:hover{background:inherit}@keyframes estop-pulse-09e9312e{50%{filter:brightness(1.35)}}.btn-danger.armed[data-v-09e9312e]{animation:1s ease-in-out infinite estop-pulse-09e9312e}.btn[data-v-09e9312e]:active,.snap-toggle[data-v-09e9312e]:active{transform:scale(.96)}btn[data-v-09e9312e],snap-toggle[data-v-09e9312e]{transition-property:filter,background,border-color,color,transform,opacity;transition-duration:.15s;transition-timing-function:var(--hud-ease)}.snap-toggle[data-v-09e9312e]:focus-visible,button[data-v-09e9312e]:focus-visible,input[data-v-09e9312e]:focus-visible,select[data-v-09e9312e]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-09e9312e]{min-height:40px}.dock-toggle[data-v-09e9312e]{border:0;border-top:1px solid var(--hud-line-soft);width:100%;min-height:44px;color:var(--hud-text);text-align:left;background:linear-gradient(#101827,#0c131f);align-items:center;gap:8px;padding:0 12px;font-size:13px;font-weight:600;display:flex}.dock-toggle-t[data-v-09e9312e]{flex:none}.dock-toggle-hint[data-v-09e9312e]{color:var(--hud-faint);letter-spacing:.08em;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.dock-caret[data-v-09e9312e]{color:var(--hud-dim);transition:transform .2s var(--hud-ease);flex:none;margin-left:auto}.dock.dock-open .dock-caret[data-v-09e9312e]{transform:rotate(180deg)}.dock-hd h3[data-v-09e9312e]{font-size:13px}.dock-count[data-v-09e9312e],.dock-mode[data-v-09e9312e],.ctl-sec[data-v-09e9312e]{font-size:11.5px}.ctl-row[data-v-09e9312e]{flex-wrap:wrap;gap:6px 10px}.ctl-name[data-v-09e9312e]{width:auto;min-width:62px;font-size:13px}.ctl-val[data-v-09e9312e]{width:auto;min-width:38px;font-size:12.5px}.fps-seg[data-v-09e9312e]{flex-wrap:wrap}.fps-seg button[data-v-09e9312e]{padding:0 10px;font-size:13px}.snap-toggle[data-v-09e9312e]{font-size:11.5px}}@media (prefers-reduced-motion:reduce){.dock-caret[data-v-09e9312e]{transition:none}}@media (width<=1023px){.ctl-val[data-v-09e9312e]{font-size:12.5px}.dock-hd h3[data-v-09e9312e]{font-size:13px}}.dock-hd[data-v-b85dd4a1]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.dock-hd h3[data-v-b85dd4a1]{flex:none;margin:0;font-size:12.5px;font-weight:700}.dock-count[data-v-b85dd4a1]{letter-spacing:.08em;color:var(--hud-dim);border:1px solid var(--hud-line-soft);border-radius:6px;flex:none;padding:1px 7px;font-size:9.5px}.dock-mode[data-v-b85dd4a1]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-faint);border:1px solid var(--hud-line);border-radius:6px;margin-left:auto;padding:1px 7px;font-size:10px}.trend-legend[data-v-b85dd4a1]{scrollbar-width:thin;scrollbar-color:#1c2942 transparent;flex-wrap:wrap;flex:auto;align-content:flex-start;gap:5px;min-width:0;max-height:47px;margin-left:6px;transition:max-height .24s cubic-bezier(.22,.68,.36,1);display:flex;overflow-y:auto}.trend-legend.expanded[data-v-b85dd4a1]{max-height:100px}.trend-legend[data-v-b85dd4a1]::-webkit-scrollbar{width:6px}.trend-legend[data-v-b85dd4a1]::-webkit-scrollbar-thumb{background:#1c2942;border-radius:3px}.trend-legend[data-v-b85dd4a1]::-webkit-scrollbar-track{background:0 0}.lg-chip[data-v-b85dd4a1]{color:var(--hud-dim);border:1px solid var(--hud-line-soft);cursor:pointer;transition:opacity .15s var(--hud-ease), border-color .15s var(--hud-ease), color .15s var(--hud-ease);background:#0d142099;border-radius:6px;align-items:center;gap:5px;padding:2px 8px;font-size:10.5px;display:flex}.lg-chip[data-v-b85dd4a1]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.lg-chip.off[data-v-b85dd4a1]{opacity:.32}.lg-more[data-v-b85dd4a1]{letter-spacing:.04em;color:var(--hud-faint);border-style:dashed;font-size:10px}.lg-more[data-v-b85dd4a1]:hover{color:var(--hud-accent);border-color:#35e0a066}.lg-dot[data-v-b85dd4a1]{border-radius:2px;width:7px;height:7px}.trend-wrap[data-v-b85dd4a1]{flex:1;min-height:0;position:relative}.trend-cv[data-v-b85dd4a1]{width:100%;height:100%;position:absolute;inset:0}.trend-empty[data-v-b85dd4a1]{font-family:var(--font-mono);color:var(--hud-faint);place-content:center;font-size:10.5px;display:grid;position:absolute;inset:0}.lg-chip[data-v-b85dd4a1]:active{transform:scale(.96)}lg-chip[data-v-b85dd4a1]{transition-property:filter,background,border-color,color,transform,opacity;transition-duration:.15s;transition-timing-function:var(--hud-ease)}button[data-v-b85dd4a1]:focus-visible,input[data-v-b85dd4a1]:focus-visible,select[data-v-b85dd4a1]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-b85dd4a1]{min-height:40px}.dock-hd h3[data-v-b85dd4a1]{font-size:13px}.dock-count[data-v-b85dd4a1],.dock-mode[data-v-b85dd4a1],.lg-chip[data-v-b85dd4a1],.trend-empty[data-v-b85dd4a1]{font-size:11.5px}}.loading-mask[data-v-01120fb4]{z-index:90;background:var(--hud-bg);flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:fixed;inset:0}.loading-spinner[data-v-01120fb4]{border:2.5px solid var(--hud-line);border-top-color:var(--hud-accent);border-radius:50%;width:30px;height:30px;animation:.9s linear infinite spin-01120fb4}.loading-text[data-v-01120fb4]{font-family:var(--font-mono);letter-spacing:.24em;color:var(--hud-dim);font-size:11px}@keyframes spin-01120fb4{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.loading-spinner[data-v-01120fb4],.rpg-line.live .rpg-bubble[data-v-01120fb4],.ty-dot[data-v-01120fb4]{animation:none}}@media (width<=1023px){.loading-text[data-v-01120fb4]{font-size:12px}}.stage-col[data-v-e690081d]{flex-direction:column;min-width:0;min-height:0;display:flex}.stage[data-v-e690081d]{background:#060a11;flex:1;min-height:320px;position:relative;overflow:hidden}.stage[data-v-e690081d]:fullscreen{border-radius:0}.town-host[data-v-e690081d]{position:absolute;inset:0}.town-host canvas[data-v-e690081d]{image-rendering:auto;display:block}.stage-vignette[data-v-e690081d]{pointer-events:none;z-index:3;background:radial-gradient(120% 90% at 50% 38%,#0000 52%,#02040980 100%),linear-gradient(#080d1852,#0000 18%),repeating-linear-gradient(0deg,#ffffff03 0 1px,#0000 1px 3px);position:absolute;inset:0}.empty-hint[data-v-e690081d]{z-index:4;text-align:center;color:var(--hud-dim);pointer-events:none;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}.empty-hint b[data-v-e690081d]{color:var(--hud-text);margin-bottom:4px;font-size:14px;display:block}.empty-hint span[data-v-e690081d]{font-size:12px}@media (prefers-reduced-motion:no-preference){.dock[data-v-e690081d],.rail-left[data-v-e690081d],.rail-right[data-v-e690081d]{animation:.52s cubic-bezier(.22,.68,.36,1) backwards hud-boot-e690081d}.rail-left[data-v-e690081d]{animation-delay:40ms}.rail-right[data-v-e690081d]{animation-delay:.15s}.dock[data-v-e690081d]{animation-delay:.26s}}@keyframes hud-boot-e690081d{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.dock[data-v-e690081d]{border-top:1px solid var(--hud-line-soft);background:#080d16;flex:none;grid-template-columns:308px 1fr;gap:10px;padding:10px;display:grid}.dock-card[data-v-e690081d]{border:1px solid var(--hud-line);border-radius:var(--hud-r-lg);background:linear-gradient(#101827,#0d1420);flex-direction:column;min-height:178px;padding:12px 14px;display:flex}.drop-chip[data-v-e690081d],.error-chip[data-v-e690081d]{z-index:20;border-radius:var(--hud-r-md);box-shadow:var(--hud-shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);text-overflow:ellipsis;white-space:nowrap;background:#0e1626f5;border:1px solid #2a3d63;align-items:center;gap:8px;max-width:70%;padding:8px 14px;font-size:11.5px;display:flex;position:absolute;top:64px;left:50%;overflow:hidden;transform:translate(-50%)}.drop-chip[data-v-e690081d]{color:var(--hud-accent)}.error-chip[data-v-e690081d]{color:var(--hud-danger);border-color:#ff6b6b66}@media (width<=1023px){.stage-col[data-v-e690081d],.stage[data-v-e690081d]{min-height:0}.dock[data-v-e690081d]{padding:0;display:block}.dock .dock-card[data-v-e690081d]{display:none}.dock.dock-open[data-v-e690081d]{overscroll-behavior:contain;max-height:52dvh;padding:8px;overflow-y:auto}.dock.dock-open .dock-card[data-v-e690081d]{min-height:0;margin-bottom:8px;display:flex}.dock.dock-open .dock-card[data-v-e690081d]:last-child{margin-bottom:0}.dock-card[data-v-e690081d]{padding:12px}}@media (width<=639px){.dock.dock-open[data-v-e690081d]{max-height:58dvh}}.dcw-err[data-v-4cf7c379]{color:var(--hud-danger);background:#ff6b6b14;border:1px solid #ff6b6b47;border-radius:6px;padding:4px 8px;font-size:10px;display:block}.bind-select[data-v-4cf7c379]:hover,.daq-ctl-cycle input[data-v-4cf7c379]:hover,.daq-num[data-v-4cf7c379]:hover,.obj-input[data-v-4cf7c379]:hover,.obj-select[data-v-4cf7c379]:hover{border-color:var(--hud-line-hi)}.bind-select[data-v-4cf7c379]:focus,.daq-ctl-cycle input[data-v-4cf7c379]:focus,.daq-num[data-v-4cf7c379]:focus,.obj-input[data-v-4cf7c379]:focus,.obj-select[data-v-4cf7c379]:focus{border-color:var(--hud-accent);outline:none;box-shadow:0 0 0 3px #35e0a021}input[type=number][data-v-4cf7c379]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-4cf7c379]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-4cf7c379]{appearance:textfield}.daq-bind-bar[data-v-4cf7c379]{gap:6px;display:flex}.bind-select[data-v-4cf7c379]{min-width:0;height:28px;color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);transition:border-color .15s var(--hud-ease), box-shadow .15s var(--hud-ease), color .15s var(--hud-ease);flex:1;padding:0 8px;font-size:10.5px}.bind-select[data-v-4cf7c379]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.bind-select[data-v-4cf7c379]:focus{border-color:var(--hud-accent);color:var(--hud-text);outline:none;box-shadow:0 0 0 3px #35e0a021}.bind-add-btn[data-v-4cf7c379]{color:#04120c;background:var(--hud-accent-dim);border-radius:var(--hud-r-sm);cursor:pointer;height:28px;transition:background .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border:0;flex:none;padding:0 12px;font-size:10.5px;font-weight:600}.bind-add-btn[data-v-4cf7c379]:hover:not(:disabled){background:var(--hud-accent);box-shadow:0 0 14px #35e0a059}.bind-add-btn[data-v-4cf7c379]:disabled{opacity:.4;cursor:default}.daq-info-row[data-v-4cf7c379]{color:var(--hud-dim);justify-content:space-between;gap:8px;padding:3px 0;font-size:11px;display:flex}.daq-info-row b[data-v-4cf7c379]{font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;font-weight:600}.daq-info-row b.cy[data-v-4cf7c379]{color:var(--hud-cyan);font-size:13px}.bind-select[data-v-4cf7c379]:focus-visible,button[data-v-4cf7c379]:focus-visible,input[data-v-4cf7c379]:focus-visible,select[data-v-4cf7c379]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-4cf7c379]{min-height:40px}}.ctl-btns[data-v-776dd9ad]{gap:8px;margin-top:auto;display:flex}.btn[data-v-776dd9ad]{border-radius:var(--hud-r-sm);white-space:nowrap;cursor:pointer;height:32px;transition:filter .15s var(--hud-ease), background .15s var(--hud-ease), border-color .15s var(--hud-ease);background:0 0;flex:1;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.btn-primary[data-v-776dd9ad]{background:var(--hud-accent-dim);color:#04120c}.btn-primary[data-v-776dd9ad]:hover{background:#25b57e}.btn-ghost[data-v-776dd9ad]{color:var(--hud-text);border:1px solid #27395c}.btn-ghost[data-v-776dd9ad]:hover{background:#14203a;border-color:#33507c}.btn-danger[data-v-776dd9ad]{color:#fff;background:#b3273a}.btn-danger[data-v-776dd9ad]:hover{background:#d1304a}.btn[data-v-776dd9ad]:not(:disabled):active{transform:translateY(1px)}.bind-select[data-v-776dd9ad]:disabled,.btn[data-v-776dd9ad]:disabled,.nav-action[data-v-776dd9ad]:disabled,.obj-input[data-v-776dd9ad]:disabled,.obj-mini[data-v-776dd9ad]:disabled,.obj-select[data-v-776dd9ad]:disabled{opacity:.38;cursor:not-allowed;filter:saturate(.4)}.btn[data-v-776dd9ad]:disabled:hover,.nav-action[data-v-776dd9ad]:disabled:hover{background:inherit}.ins-empty[data-v-776dd9ad]{color:var(--hud-faint);text-align:center;padding:8px 0 6px;font-size:11px}.bind-select[data-v-776dd9ad]:hover,.daq-ctl-cycle input[data-v-776dd9ad]:hover,.daq-num[data-v-776dd9ad]:hover,.obj-input[data-v-776dd9ad]:hover,.obj-select[data-v-776dd9ad]:hover{border-color:var(--hud-line-hi)}.bind-select[data-v-776dd9ad]:focus,.daq-ctl-cycle input[data-v-776dd9ad]:focus,.daq-num[data-v-776dd9ad]:focus,.obj-input[data-v-776dd9ad]:focus,.obj-select[data-v-776dd9ad]:focus{border-color:var(--hud-accent);outline:none;box-shadow:0 0 0 3px #35e0a021}input[type=number][data-v-776dd9ad]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-776dd9ad]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-776dd9ad]{appearance:textfield}.daq-bind-bar[data-v-776dd9ad]{gap:6px;display:flex}.bind-select[data-v-776dd9ad]{min-width:0;height:28px;color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);transition:border-color .15s var(--hud-ease), box-shadow .15s var(--hud-ease), color .15s var(--hud-ease);flex:1;padding:0 8px;font-size:10.5px}.bind-select[data-v-776dd9ad]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.bind-select[data-v-776dd9ad]:focus{border-color:var(--hud-accent);color:var(--hud-text);outline:none;box-shadow:0 0 0 3px #35e0a021}.bind-add-btn[data-v-776dd9ad]{color:#04120c;background:var(--hud-accent-dim);border-radius:var(--hud-r-sm);cursor:pointer;height:28px;transition:background .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border:0;flex:none;padding:0 12px;font-size:10.5px;font-weight:600}.bind-add-btn[data-v-776dd9ad]:hover:not(:disabled){background:var(--hud-accent);box-shadow:0 0 14px #35e0a059}.bind-add-btn[data-v-776dd9ad]:disabled{opacity:.4;cursor:default}.daq-info-row[data-v-776dd9ad]{color:var(--hud-dim);justify-content:space-between;gap:8px;padding:3px 0;font-size:11px;display:flex}.daq-info-row b[data-v-776dd9ad]{font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;font-weight:600}.daq-info-row b.cy[data-v-776dd9ad]{color:var(--hud-cyan);font-size:13px}.daq-ctrl[data-v-776dd9ad]{background:var(--hud-panel);border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;padding:8px 10px;display:flex}.daq-ctl-btn[data-v-776dd9ad]{font-family:var(--font-mono);letter-spacing:.05em;color:var(--hud-dim);cursor:pointer;border:1px solid var(--hud-line-hi);border-radius:var(--hud-r-sm);background:0 0;padding:4px 12px;font-size:11px}.daq-ctl-btn.on[data-v-776dd9ad]{color:var(--hud-accent);border-color:#35e0a073}.daq-ctl-cycle[data-v-776dd9ad]{color:var(--hud-faint);align-items:center;gap:5px;font-size:10.5px;display:inline-flex}.daq-ctl-cycle input[data-v-776dd9ad],.daq-num[data-v-776dd9ad]{width:64px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:6px;padding:2px 6px;font-size:11px}.daq-th-inputs[data-v-776dd9ad]{color:var(--hud-faint);align-items:center;gap:4px;font-size:10px;display:inline-flex}.bind-add-btn.warn[data-v-776dd9ad]:not(:disabled){color:var(--hud-amber);box-shadow:none;background:#f6c4531f}.bind-add-btn.warn[data-v-776dd9ad]:hover:not(:disabled){background:#f6c45333;box-shadow:0 0 14px #f6c45340}.bind-add-btn.danger[data-v-776dd9ad]:not(:disabled){color:var(--hud-danger);box-shadow:none;background:#ff6b6b1a}.bind-add-btn.danger[data-v-776dd9ad]:hover:not(:disabled){background:#ff6b6b2e;box-shadow:0 0 14px #ff6b6b40}.bind-select[data-v-776dd9ad]:focus-visible,.daq-num[data-v-776dd9ad]:focus-visible,button[data-v-776dd9ad]:focus-visible,input[data-v-776dd9ad]:focus-visible,select[data-v-776dd9ad]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-776dd9ad]{min-height:40px}}.ctl-btns[data-v-6c9152af]{gap:8px;margin-top:auto;display:flex}.btn[data-v-6c9152af]{border-radius:var(--hud-r-sm);white-space:nowrap;cursor:pointer;height:32px;transition:filter .15s var(--hud-ease), background .15s var(--hud-ease), border-color .15s var(--hud-ease);background:0 0;flex:1;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.btn-primary[data-v-6c9152af]{background:var(--hud-accent-dim);color:#04120c}.btn-primary[data-v-6c9152af]:hover{background:#25b57e}.btn-ghost[data-v-6c9152af]{color:var(--hud-text);border:1px solid #27395c}.btn-ghost[data-v-6c9152af]:hover{background:#14203a;border-color:#33507c}.btn-danger[data-v-6c9152af]{color:#fff;background:#b3273a}.btn-danger[data-v-6c9152af]:hover{background:#d1304a}.btn[data-v-6c9152af]:not(:disabled):active{transform:translateY(1px)}.bind-select[data-v-6c9152af]:disabled,.btn[data-v-6c9152af]:disabled,.nav-action[data-v-6c9152af]:disabled,.obj-input[data-v-6c9152af]:disabled,.obj-mini[data-v-6c9152af]:disabled,.obj-select[data-v-6c9152af]:disabled{opacity:.38;cursor:not-allowed;filter:saturate(.4)}.btn[data-v-6c9152af]:disabled:hover,.nav-action[data-v-6c9152af]:disabled:hover{background:inherit}.sect-hd[data-v-6c9152af]{color:var(--hud-faint);letter-spacing:.16em;align-items:center;gap:6px;margin:10px 0 7px;font-size:10px;font-weight:700;display:flex}.sect-hd[data-v-6c9152af]:before{content:"";background:var(--hud-accent);opacity:.55;border-radius:1px;width:3px;height:9px}.obj-row[data-v-6c9152af]{align-items:center;gap:8px;margin-bottom:8px;display:flex}.obj-label[data-v-6c9152af]{width:52px;color:var(--hud-dim);flex:none;font-size:10.5px}.obj-input[data-v-6c9152af],.obj-select[data-v-6c9152af]{min-width:0;color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);transition:border-color .15s var(--hud-ease);border-radius:7px;flex:1;padding:5px 8px;font-size:11.5px}.obj-input[data-v-6c9152af]:focus,.obj-select[data-v-6c9152af]:focus{border-color:var(--hud-accent);outline:none}.ins-empty[data-v-6c9152af]{color:var(--hud-faint);text-align:center;padding:8px 0 6px;font-size:11px}.bind-row[data-v-6c9152af]{border:1px solid var(--hud-line-soft);border-radius:var(--hud-r-md);background:#0f1726;align-items:center;gap:8px;margin-bottom:6px;padding:7px 9px;display:flex}.bind-ico[data-v-6c9152af]{width:26px;height:26px;color:var(--hud-accent);background:#0d1a26;border-radius:7px;flex:none;place-items:center;display:grid}.bind-svg[data-v-6c9152af]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.bind-meta[data-v-6c9152af]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.bind-label[data-v-6c9152af]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.bind-val[data-v-6c9152af]{font-family:var(--font-mono);color:var(--hud-cyan);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.bind-val b[data-v-6c9152af]{font-size:11px;font-weight:700}.bind-spark[data-v-6c9152af]{flex:none;width:56px;height:20px}.bind-x[data-v-6c9152af]{width:22px;height:22px;color:var(--hud-faint);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none}.bind-x[data-v-6c9152af]:hover{color:var(--hud-danger);background:#ff6b6b1f}.bind-add-wrap[data-v-6c9152af]{position:relative}.bind-add[data-v-6c9152af]{width:100%;height:30px;color:var(--hud-dim);border-radius:var(--hud-r-sm);cursor:pointer;background:0 0;border:1px dashed #274064;font-size:11px;transition:border-color .15s,color .15s}.bind-add[data-v-6c9152af]:hover{border-color:var(--hud-accent-dim);color:var(--hud-accent)}.bind-pop[data-v-6c9152af]{z-index:30;overscroll-behavior:contain;border-radius:var(--hud-r-md);max-height:min(46vh,420px);box-shadow:var(--hud-shadow-pop,0 16px 40px #0000008c);background:#0e1626;border:1px solid #27395c;position:absolute;bottom:calc(100% + 4px);left:0;right:0;overflow:hidden auto}.bind-pop[data-v-6c9152af]::-webkit-scrollbar{width:8px}.bind-pop[data-v-6c9152af]::-webkit-scrollbar-thumb{background:#2c4568 padding-box content-box;border:2px solid #0000;border-radius:9999px}.bind-pop[data-v-6c9152af]::-webkit-scrollbar-thumb:hover{background:#3d5a85 padding-box content-box}.bind-pop button[data-v-6c9152af]{width:100%;color:var(--hud-dim);cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:7px 10px;font-size:11.5px;display:flex}.bind-pop button[data-v-6c9152af]:hover{color:var(--hud-text);background:#12203a}.bind-pop .bind-svg[data-v-6c9152af]{color:var(--hud-accent)}.bind-pop button>span[data-v-6c9152af]{white-space:nowrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;overflow:hidden}.bp-group[data-v-6c9152af]{flex-direction:column;display:flex}.bp-group+.bp-group[data-v-6c9152af]{border-top:1px solid #27395c8c}.bp-tpl[data-v-6c9152af]{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--hud-faint);padding:6px 10px 3px;font-size:10px}.bp-cur[data-v-6c9152af]{color:var(--hud-faint);white-space:nowrap;text-overflow:ellipsis;max-width:96px;margin-left:auto;font-size:9.5px;font-style:normal;overflow:hidden}.bp-empty[data-v-6c9152af]{color:var(--hud-faint);padding:10px;font-size:10.5px}.bind-select[data-v-6c9152af]:hover,.daq-ctl-cycle input[data-v-6c9152af]:hover,.daq-num[data-v-6c9152af]:hover,.obj-input[data-v-6c9152af]:hover,.obj-select[data-v-6c9152af]:hover{border-color:var(--hud-line-hi)}.bind-select[data-v-6c9152af]:focus,.daq-ctl-cycle input[data-v-6c9152af]:focus,.daq-num[data-v-6c9152af]:focus,.obj-input[data-v-6c9152af]:focus,.obj-select[data-v-6c9152af]:focus{border-color:var(--hud-accent);outline:none;box-shadow:0 0 0 3px #35e0a021}input[type=number][data-v-6c9152af]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-6c9152af]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-6c9152af]{appearance:textfield}.bind-row[data-v-6c9152af]{transition:border-color .18s var(--hud-ease), box-shadow .18s var(--hud-ease)}.bind-row[data-v-6c9152af]:hover{border-color:var(--hud-line-hi);box-shadow:0 6px 18px #03070e66}.bind-add[data-v-6c9152af]:hover{background:#35e0a00d;border-style:solid}.obj-input[data-v-6c9152af]:focus-visible,.obj-select[data-v-6c9152af]:focus-visible,button[data-v-6c9152af]:focus-visible,input[data-v-6c9152af]:focus-visible,select[data-v-6c9152af]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-6c9152af]{min-height:40px}.bind-val b[data-v-6c9152af]{font-size:12px}}.sect-hd[data-v-5e658430]{color:var(--hud-faint);letter-spacing:.16em;align-items:center;gap:6px;margin:10px 0 7px;font-size:10px;font-weight:700;display:flex}.sect-hd[data-v-5e658430]:before{content:"";background:var(--hud-accent);opacity:.55;border-radius:1px;width:3px;height:9px}.ins-empty[data-v-5e658430]{color:var(--hud-faint);text-align:center;padding:8px 0 6px;font-size:11px}.bind-add-wrap[data-v-5e658430]{position:relative}.bind-add[data-v-5e658430]{width:100%;height:30px;color:var(--hud-dim);border-radius:var(--hud-r-sm);cursor:pointer;background:0 0;border:1px dashed #274064;font-size:11px;transition:border-color .15s,color .15s}.bind-add[data-v-5e658430]:hover{border-color:var(--hud-accent-dim);color:var(--hud-accent)}.bind-pop[data-v-5e658430]{z-index:30;overscroll-behavior:contain;border-radius:var(--hud-r-md);max-height:min(46vh,420px);box-shadow:var(--hud-shadow-pop,0 16px 40px #0000008c);background:#0e1626;border:1px solid #27395c;position:absolute;bottom:calc(100% + 4px);left:0;right:0;overflow:hidden auto}.bind-pop[data-v-5e658430]::-webkit-scrollbar{width:8px}.bind-pop[data-v-5e658430]::-webkit-scrollbar-thumb{background:#2c4568 padding-box content-box;border:2px solid #0000;border-radius:9999px}.bind-pop[data-v-5e658430]::-webkit-scrollbar-thumb:hover{background:#3d5a85 padding-box content-box}.bind-pop button[data-v-5e658430]{width:100%;color:var(--hud-dim);cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:7px 10px;font-size:11.5px;display:flex}.bind-pop button[data-v-5e658430]:hover{color:var(--hud-text);background:#12203a}.bind-pop .bind-svg[data-v-5e658430]{color:var(--hud-accent)}.bind-pop button>span[data-v-5e658430]{white-space:nowrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;overflow:hidden}.bp-group[data-v-5e658430]{flex-direction:column;display:flex}.bp-group+.bp-group[data-v-5e658430]{border-top:1px solid #27395c8c}.bp-tpl[data-v-5e658430]{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--hud-faint);padding:6px 10px 3px;font-size:10px}.bp-cur[data-v-5e658430]{color:var(--hud-faint);white-space:nowrap;text-overflow:ellipsis;max-width:96px;margin-left:auto;font-size:9.5px;font-style:normal;overflow:hidden}.bp-empty[data-v-5e658430]{color:var(--hud-faint);padding:10px;font-size:10.5px}.dcw-row[data-v-5e658430]{border:1px solid var(--hud-line);border-radius:var(--hud-r-md);transition:border-color .18s var(--hud-ease), box-shadow .18s var(--hud-ease);background:linear-gradient(#111a2b,#0e1522);flex-direction:column;gap:8px;margin-bottom:7px;padding:9px 10px 10px;display:flex}.dcw-row[data-v-5e658430]:hover{border-color:var(--hud-line-hi);box-shadow:0 6px 18px #03070e66}.dcw-top[data-v-5e658430]{align-items:center;gap:8px;display:flex}.dcw-id[data-v-5e658430]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.dcw-name[data-v-5e658430]{color:var(--hud-faint);text-overflow:ellipsis;white-space:nowrap;font-size:9.5px;overflow:hidden}.dcw-tag[data-v-5e658430]{font-style:normal;font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-amber);vertical-align:1px;background:#f6c4531a;border:1px solid #f6c45352;border-radius:4px;margin-left:5px;padding:0 5px;font-size:10px;font-weight:700;display:inline-block}.dcw-cur[data-v-5e658430]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;flex:none;align-items:baseline;gap:3px;display:flex}.dcw-cur b[data-v-5e658430]{color:var(--hud-cyan);text-shadow:0 0 14px #41c8f447;font-size:16px;font-weight:700}.dcw-cur i[data-v-5e658430]{color:var(--hud-faint);font-size:9.5px;font-style:normal}.dcw-win[data-v-5e658430]{border:1px solid var(--hud-line-soft);background:#0a111db8;border-radius:7px;align-items:center;gap:7px;padding:4px 8px;display:flex}.dcw-win em[data-v-5e658430]{letter-spacing:.14em;color:var(--hud-faint);flex:none;font-size:10px;font-style:normal;font-weight:700}.dcw-win-num[data-v-5e658430]{font-family:var(--font-mono);color:var(--hud-dim);font-variant-numeric:tabular-nums;flex:none;font-size:9.5px}.dcw-win-track[data-v-5e658430]{background:#1a2740;border-radius:999px;flex:1;height:4px;position:relative}.dcw-win-track[data-v-5e658430]:before{content:"";border-radius:inherit;background:linear-gradient(90deg,#5a82af66,#5a82af24);position:absolute;inset:0}.dcw-win-track i[data-v-5e658430]{border:2px solid var(--hud-cyan);width:9px;height:9px;transition:left .3s var(--hud-ease);background:#dfeef8;border-radius:50%;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 8px #41c8f48c}.dcw-win.recipe em[data-v-5e658430]{color:var(--hud-amber)}.dcw-win.recipe .dcw-win-track[data-v-5e658430]:before{background:linear-gradient(90deg,#f6c45380,#f6c45329)}.dcw-win.recipe .dcw-win-track i[data-v-5e658430]{border-color:var(--hud-amber);box-shadow:0 0 8px #f6c4538c}.dcw-write[data-v-5e658430]{gap:6px;display:flex}.dcw-write input[data-v-5e658430]{min-width:0;height:27px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);transition:border-color .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border-radius:7px;flex:1;padding:0 9px;font-size:11.5px}.dcw-write input[data-v-5e658430]::placeholder{color:var(--hud-faint);font-size:10px}.dcw-write input[data-v-5e658430]:focus{border-color:var(--hud-accent);outline:none;box-shadow:0 0 0 3px #35e0a021}.dcw-send[data-v-5e658430]{height:27px;font-family:var(--font-mono);letter-spacing:.1em;color:#04120c;background:var(--hud-accent-dim);cursor:pointer;transition:background .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border:0;border-radius:7px;flex:none;padding:0 14px;font-size:10.5px;font-weight:700}.dcw-send[data-v-5e658430]:hover:not(:disabled){background:var(--hud-accent);box-shadow:0 0 14px #35e0a059}.dcw-send[data-v-5e658430]:disabled{opacity:.38;cursor:default}.dcw-err[data-v-5e658430]{color:var(--hud-danger);background:#ff6b6b14;border:1px solid #ff6b6b47;border-radius:6px;padding:4px 8px;font-size:10px;display:block}.bind-select[data-v-5e658430]:hover,.daq-ctl-cycle input[data-v-5e658430]:hover,.daq-num[data-v-5e658430]:hover,.obj-input[data-v-5e658430]:hover,.obj-select[data-v-5e658430]:hover{border-color:var(--hud-line-hi)}.bind-select[data-v-5e658430]:focus,.daq-ctl-cycle input[data-v-5e658430]:focus,.daq-num[data-v-5e658430]:focus,.obj-input[data-v-5e658430]:focus,.obj-select[data-v-5e658430]:focus{border-color:var(--hud-accent);outline:none;box-shadow:0 0 0 3px #35e0a021}input[type=number][data-v-5e658430]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-5e658430]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number][data-v-5e658430]{appearance:textfield}.bind-row[data-v-5e658430]{transition:border-color .18s var(--hud-ease), box-shadow .18s var(--hud-ease)}.bind-row[data-v-5e658430]:hover{border-color:var(--hud-line-hi);box-shadow:0 6px 18px #03070e66}.bind-add[data-v-5e658430]:hover{background:#35e0a00d;border-style:solid}.bind-select[data-v-5e658430]:focus-visible,button[data-v-5e658430]:focus-visible,dcw-write input[data-v-5e658430],input[data-v-5e658430]:focus-visible,select[data-v-5e658430]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-5e658430]{min-height:40px}}.ctl-btns[data-v-a52a1b2b]{gap:8px;margin-top:auto;display:flex}.btn[data-v-a52a1b2b]{border-radius:var(--hud-r-sm);white-space:nowrap;cursor:pointer;height:32px;transition:filter .15s var(--hud-ease), background .15s var(--hud-ease), border-color .15s var(--hud-ease);background:0 0;flex:1;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.btn-primary[data-v-a52a1b2b]{background:var(--hud-accent-dim);color:#04120c}.btn-primary[data-v-a52a1b2b]:hover{background:#25b57e}.btn-ghost[data-v-a52a1b2b]{color:var(--hud-text);border:1px solid #27395c}.btn-ghost[data-v-a52a1b2b]:hover{background:#14203a;border-color:#33507c}.btn-danger[data-v-a52a1b2b]{color:#fff;background:#b3273a}.btn-danger[data-v-a52a1b2b]:hover{background:#d1304a}.btn[data-v-a52a1b2b]:not(:disabled):active{transform:translateY(1px)}.bind-select[data-v-a52a1b2b]:disabled,.btn[data-v-a52a1b2b]:disabled,.nav-action[data-v-a52a1b2b]:disabled,.obj-input[data-v-a52a1b2b]:disabled,.obj-mini[data-v-a52a1b2b]:disabled,.obj-select[data-v-a52a1b2b]:disabled{opacity:.38;cursor:not-allowed;filter:saturate(.4)}.btn[data-v-a52a1b2b]:disabled:hover,.nav-action[data-v-a52a1b2b]:disabled:hover{background:inherit}.sect-hd[data-v-a52a1b2b]{color:var(--hud-faint);letter-spacing:.16em;align-items:center;gap:6px;margin:10px 0 7px;font-size:10px;font-weight:700;display:flex}.sect-hd[data-v-a52a1b2b]:before{content:"";background:var(--hud-accent);opacity:.55;border-radius:1px;width:3px;height:9px}.obj-mini[data-v-a52a1b2b]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;border-radius:7px;flex:none;padding:4px 10px;font-size:10.5px;font-weight:600}.obj-mini.on[data-v-a52a1b2b]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.obj-mini.danger[data-v-a52a1b2b]{color:var(--hud-danger);width:100%;margin-top:4px}.obj-range[data-v-a52a1b2b]{accent-color:var(--hud-accent);flex:1}.bp-seg[data-v-a52a1b2b]{gap:4px;display:flex}.seg-btn[data-v-a52a1b2b]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), background .14s var(--hud-ease);border-radius:7px;padding:4px 12px;font-size:10.5px;font-weight:600}.seg-btn[data-v-a52a1b2b]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.seg-btn.on[data-v-a52a1b2b]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.xz-seg[data-v-a52a1b2b]{gap:6px;margin-bottom:8px;display:flex}.xz-seg .seg-btn[data-v-a52a1b2b]{flex:1}.scale-row[data-v-a52a1b2b]{align-items:center;gap:8px;display:flex}.scale-max[data-v-a52a1b2b],.scale-min[data-v-a52a1b2b]{font-family:var(--font-mono);color:var(--hud-faint);font-size:10px}.scale-range[data-v-a52a1b2b]{accent-color:var(--hud-accent);flex:1}.scale-val[data-v-a52a1b2b]{text-align:center;font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;margin-bottom:4px;font-size:11px}.ins-foot[data-v-a52a1b2b]{gap:8px;margin-top:12px;display:flex}.ins-del[data-v-a52a1b2b]{color:var(--hud-danger);background:#ff6b6b1a;border:1px solid #ff6b6b66}.ins-del.armed[data-v-a52a1b2b]{background:var(--hud-danger);color:#fff}.ins-empty[data-v-a52a1b2b]{color:var(--hud-faint);text-align:center;padding:8px 0 6px;font-size:11px}.obj-range[data-v-a52a1b2b],.scale-range[data-v-a52a1b2b]{appearance:none;cursor:pointer;background:#1a2740;border-radius:999px;outline:none;height:4px}.obj-range[data-v-a52a1b2b]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#e8f6ef;border-radius:50%;box-shadow:0 0 0 3px #35e0a026,0 2px 6px #03070e80}.scale-range[data-v-a52a1b2b]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#e8f6ef;border-radius:50%;box-shadow:0 0 0 3px #35e0a026,0 2px 6px #03070e80}.obj-range[data-v-a52a1b2b]::-webkit-slider-thumb:hover{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a033,0 2px 8px #03070e8c}.scale-range[data-v-a52a1b2b]::-webkit-slider-thumb:hover{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a033,0 2px 8px #03070e8c}.obj-range[data-v-a52a1b2b]::-moz-range-thumb{border:2px solid var(--hud-accent);background:#e8f6ef;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 3px #35e0a026}.scale-range[data-v-a52a1b2b]::-moz-range-thumb{border:2px solid var(--hud-accent);background:#e8f6ef;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 3px #35e0a026}.obj-range[data-v-a52a1b2b]::-moz-range-track{background:#1a2740;border-radius:999px;height:4px}.scale-range[data-v-a52a1b2b]::-moz-range-track{background:#1a2740;border-radius:999px;height:4px}@keyframes estop-pulse-a52a1b2b{50%{filter:brightness(1.35)}}.btn-danger.armed[data-v-a52a1b2b]{animation:1s ease-in-out infinite estop-pulse-a52a1b2b}.btn[data-v-a52a1b2b]:active,.obj-mini[data-v-a52a1b2b]:active{transform:scale(.96)}btn[data-v-a52a1b2b],obj-mini[data-v-a52a1b2b]{transition-property:filter,background,border-color,color,transform,opacity;transition-duration:.15s;transition-timing-function:var(--hud-ease)}.obj-range[data-v-a52a1b2b]:focus-visible,.scale-range[data-v-a52a1b2b]:focus-visible,button[data-v-a52a1b2b]:focus-visible,input[data-v-a52a1b2b]:focus-visible,select[data-v-a52a1b2b]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-a52a1b2b]{min-height:40px}}@media (prefers-reduced-motion:reduce){.btn-danger.armed[data-v-a52a1b2b]{animation:none}}.modal-mask[data-v-84095bae]{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-84095bae]{background:var(--surface-glass-strong);width:480px;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:20px 22px;overflow-y:auto}.m-title[data-v-84095bae]{margin:0 0 12px;font-size:15.5px}.m-line[data-v-84095bae]{color:var(--ink-soft);margin:0 0 8px;font-size:12px;line-height:1.6}.m-line.strong[data-v-84095bae]{color:var(--ink);font-weight:600}.m-line.warn[data-v-84095bae]{color:var(--tone-warning-dot)}.m-err[data-v-84095bae]{color:var(--tone-danger-dot);margin:2px 0 6px;font-size:12px}.m-actions[data-v-84095bae]{justify-content:flex-end;gap:10px;margin-top:14px;display:flex}@media (width<=900px){.modal[data-v-84095bae]{width:calc(100vw - 20px);max-width:calc(100vw - 20px);padding:16px 14px}.m-actions[data-v-84095bae]{flex-wrap:wrap}.m-actions[data-v-84095bae]>*{flex:auto}.pill-btn[data-v-84095bae]{min-height:40px}}.ins-chip-row[data-v-8ffedfe0]{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.ins-chip[data-v-8ffedfe0]{font-family:var(--font-mono);color:var(--hud-dim);border:1px solid #26354a;border-radius:6px;padding:1.5px 7px;font-size:9.5px}.ins-chip.accent[data-v-8ffedfe0]{color:var(--hud-accent);border-color:#35e0a066}.sect-hd[data-v-8ffedfe0]{color:var(--hud-faint);letter-spacing:.16em;align-items:center;gap:6px;margin:10px 0 7px;font-size:10px;font-weight:700;display:flex}.sect-hd[data-v-8ffedfe0]:before{content:"";background:var(--hud-accent);opacity:.55;border-radius:1px;width:3px;height:9px}.obj-sep[data-v-8ffedfe0]{background:var(--hud-line-soft);height:1px;margin:8px 0}.ins-empty[data-v-8ffedfe0]{color:var(--hud-faint);text-align:center;padding:8px 0 6px;font-size:11px}.bind-row[data-v-8ffedfe0]{border:1px solid var(--hud-line-soft);border-radius:var(--hud-r-md);background:#0f1726;align-items:center;gap:8px;margin-bottom:6px;padding:7px 9px;display:flex}.bind-ico[data-v-8ffedfe0]{width:26px;height:26px;color:var(--hud-accent);background:#0d1a26;border-radius:7px;flex:none;place-items:center;display:grid}.bind-svg[data-v-8ffedfe0]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.bind-meta[data-v-8ffedfe0]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.bind-label[data-v-8ffedfe0]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.bind-val[data-v-8ffedfe0]{font-family:var(--font-mono);color:var(--hud-cyan);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.bind-val b[data-v-8ffedfe0]{font-size:11px;font-weight:700}.bind-spark[data-v-8ffedfe0]{flex:none;width:56px;height:20px}.bind-x[data-v-8ffedfe0]{width:22px;height:22px;color:var(--hud-faint);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none}.bind-x[data-v-8ffedfe0]:hover{color:var(--hud-danger);background:#ff6b6b1f}.dcw-write[data-v-8ffedfe0]{gap:6px;display:flex}.dcw-write input[data-v-8ffedfe0]{min-width:0;height:27px;font-family:var(--font-mono);color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);transition:border-color .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border-radius:7px;flex:1;padding:0 9px;font-size:11.5px}.dcw-write input[data-v-8ffedfe0]::placeholder{color:var(--hud-faint);font-size:10px}.dcw-write input[data-v-8ffedfe0]:focus{border-color:var(--hud-accent);outline:none;box-shadow:0 0 0 3px #35e0a021}.bind-row[data-v-8ffedfe0]{transition:border-color .18s var(--hud-ease), box-shadow .18s var(--hud-ease)}.bind-row[data-v-8ffedfe0]:hover{border-color:var(--hud-line-hi);box-shadow:0 6px 18px #03070e66}.bind-add[data-v-8ffedfe0]:hover{background:#35e0a00d;border-style:solid}.daq-bind-bar[data-v-8ffedfe0]{gap:6px;display:flex}.bind-select[data-v-8ffedfe0]{min-width:0;height:28px;color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);border-radius:var(--hud-r-sm);transition:border-color .15s var(--hud-ease), box-shadow .15s var(--hud-ease), color .15s var(--hud-ease);flex:1;padding:0 8px;font-size:10.5px}.bind-select[data-v-8ffedfe0]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.bind-select[data-v-8ffedfe0]:focus{border-color:var(--hud-accent);color:var(--hud-text);outline:none;box-shadow:0 0 0 3px #35e0a021}.bind-add-btn[data-v-8ffedfe0]{color:#04120c;background:var(--hud-accent-dim);border-radius:var(--hud-r-sm);cursor:pointer;height:28px;transition:background .15s var(--hud-ease), box-shadow .15s var(--hud-ease);border:0;flex:none;padding:0 12px;font-size:10.5px;font-weight:600}.bind-add-btn[data-v-8ffedfe0]:hover:not(:disabled){background:var(--hud-accent);box-shadow:0 0 14px #35e0a059}.bind-add-btn[data-v-8ffedfe0]:disabled{opacity:.4;cursor:default}.bind-add-btn.warn[data-v-8ffedfe0]:not(:disabled){color:var(--hud-amber);box-shadow:none;background:#f6c4531f}.bind-add-btn.warn[data-v-8ffedfe0]:hover:not(:disabled){background:#f6c45333;box-shadow:0 0 14px #f6c45340}.bind-add-btn.danger[data-v-8ffedfe0]:not(:disabled){color:var(--hud-danger);box-shadow:none;background:#ff6b6b1a}.bind-add-btn.danger[data-v-8ffedfe0]:hover:not(:disabled){background:#ff6b6b2e;box-shadow:0 0 14px #ff6b6b40}.approval-card[data-v-8ffedfe0]{border-radius:var(--hud-r-md);background:#f6c4530f;border:1px solid #f6c4534d;margin-bottom:7px;padding:8px 9px}.approval-detail[data-v-8ffedfe0]{color:var(--hud-text);font-size:11px}.approval-ttl[data-v-8ffedfe0]{font-family:var(--font-mono);letter-spacing:.05em;color:var(--hud-amber);margin-top:5px;font-size:9.5px}.approval-ttl.urgent[data-v-8ffedfe0]{color:var(--hud-danger)}.bind-add[data-v-8ffedfe0]:active,.bind-x[data-v-8ffedfe0]:active{transform:scale(.96)}bind-add[data-v-8ffedfe0],bind-x[data-v-8ffedfe0]{transition-property:filter,background,border-color,color,transform,opacity;transition-duration:.15s;transition-timing-function:var(--hud-ease)}.bind-select[data-v-8ffedfe0]:focus-visible,button[data-v-8ffedfe0]:focus-visible,input[data-v-8ffedfe0]:focus-visible,select[data-v-8ffedfe0]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-8ffedfe0]{min-height:40px}}.sect-hd[data-v-81afe13e]{color:var(--hud-faint);letter-spacing:.16em;align-items:center;gap:6px;margin:10px 0 7px;font-size:10px;font-weight:700;display:flex}.sect-hd[data-v-81afe13e]:before{content:"";background:var(--hud-accent);opacity:.55;border-radius:1px;width:3px;height:9px}.obj-row[data-v-81afe13e]{align-items:center;gap:8px;margin-bottom:8px;display:flex}.obj-label[data-v-81afe13e]{width:52px;color:var(--hud-dim);flex:none;font-size:10.5px}.obj-input[data-v-81afe13e],.obj-select[data-v-81afe13e]{min-width:0;color:var(--hud-text);background:var(--hud-input);border:1px solid var(--hud-line);transition:border-color .15s var(--hud-ease);border-radius:7px;flex:1;padding:5px 8px;font-size:11.5px}.obj-input[data-v-81afe13e]:focus,.obj-select[data-v-81afe13e]:focus{border-color:var(--hud-accent);outline:none}.obj-sep[data-v-81afe13e]{background:var(--hud-line-soft);height:1px;margin:8px 0}.range-status[data-v-81afe13e]{min-width:0;color:var(--hud-faint);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:10px;overflow:hidden}.obj-mini[data-v-81afe13e]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;border-radius:7px;flex:none;padding:4px 10px;font-size:10.5px;font-weight:600}.obj-mini.on[data-v-81afe13e]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.obj-mini.danger[data-v-81afe13e]{color:var(--hud-danger);width:100%;margin-top:4px}.obj-range[data-v-81afe13e]{accent-color:var(--hud-accent);flex:1}.bp-val[data-v-81afe13e]{text-align:right;width:40px;font-family:var(--font-mono);color:var(--hud-text);font-variant-numeric:tabular-nums;flex:none;font-size:10.5px}.bp-seg[data-v-81afe13e]{gap:4px;display:flex}.seg-btn[data-v-81afe13e]{color:var(--hud-dim);background:var(--hud-input);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), background .14s var(--hud-ease);border-radius:7px;padding:4px 12px;font-size:10.5px;font-weight:600}.seg-btn[data-v-81afe13e]:hover{border-color:var(--hud-line-hi);color:var(--hud-text)}.seg-btn.on[data-v-81afe13e]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent)}.ins-empty[data-v-81afe13e]{color:var(--hud-faint);text-align:center;padding:8px 0 6px;font-size:11px}.rpg-lines.chat-embed[data-v-81afe13e]{border:1px solid var(--hud-line-soft);border-radius:var(--hud-r-md);background:#0f172680;max-height:268px;padding:2px 0 4px}.chat-sect[data-v-81afe13e]{align-items:center;gap:8px;display:flex}.chat-sect .chat-refresh[data-v-81afe13e]{margin-left:auto}.chat-id-row[data-v-81afe13e]{align-items:center;gap:10px;margin-bottom:4px;display:flex}.chat-badge[data-v-81afe13e]{--p-acc:var(--hud-accent);width:34px;height:34px;font-family:var(--font-mono);color:var(--p-acc);background:color-mix(in srgb, var(--p-acc) 10%, transparent);border:1px solid color-mix(in srgb, var(--p-acc) 45%, transparent);border-radius:var(--hud-r-sm);flex:none;place-items:center;font-size:15px;font-weight:700;display:grid}.chat-nameplate[data-v-81afe13e]{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.chat-name[data-v-81afe13e]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:650;overflow:hidden}.chat-meta[data-v-81afe13e]{align-items:center;gap:6px;display:flex}.chat-state[data-v-81afe13e]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-dim);border:1px solid var(--hud-line);border-radius:6px;padding:1px 6px;font-size:10px}.chat-role[data-v-81afe13e]{font-family:var(--font-mono);letter-spacing:.12em;border-radius:6px;padding:1px 7px;font-size:10px;font-weight:700}.chat-role.r-lead[data-v-81afe13e]{color:var(--hud-amber);background:#f6c4531a;border:1px solid #f6c45373}.chat-role.r-worker[data-v-81afe13e]{color:var(--hud-cyan);background:#41c8f41a;border:1px solid #41c8f466}.chat-state.s-busy[data-v-81afe13e]{color:var(--hud-amber);border-color:#f6c45380}.chat-state.s-stopped[data-v-81afe13e]{color:var(--hud-danger);border-color:#ff6b6b80}.chat-harness[data-v-81afe13e]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-faint);font-size:10px}.chat-count[data-v-81afe13e]{font-family:var(--font-mono);color:var(--hud-faint);font-size:10px}.chat-refresh[data-v-81afe13e]{width:22px;height:22px;font-family:var(--font-mono);color:var(--hud-dim);border:1px solid var(--hud-line);cursor:pointer;transition:border-color .14s var(--hud-ease), color .14s var(--hud-ease), transform .32s var(--hud-ease);background:0 0;border-radius:6px;flex:none;font-size:11px}.chat-refresh[data-v-81afe13e]:hover{border-color:var(--hud-accent);color:var(--hud-accent)}.chat-refresh[data-v-81afe13e]:active{transform:rotate(180deg)}.rpg-lines[data-v-81afe13e]{flex-direction:column;flex:1;gap:7px;min-height:0;padding:10px 12px 12px;display:flex;overflow:hidden auto}.rpg-divider[data-v-81afe13e]{font-family:var(--font-mono);letter-spacing:.2em;color:var(--hud-faint);margin:4px 0 2px;font-size:10px}.rpg-divider.live[data-v-81afe13e]{color:var(--hud-amber)}.rpg-line[data-v-81afe13e]{align-items:flex-start;gap:8px;display:flex}.rpg-time[data-v-81afe13e]{text-align:right;width:52px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-faint);flex:none;margin-top:5px;font-size:10px}.rpg-bubble[data-v-81afe13e]{background:var(--hud-panel-2);border:1px solid var(--hud-line);border-radius:var(--hud-r-md);flex-direction:column;flex:1;gap:2px;min-width:0;padding:7px 11px;display:flex}.rpg-line.hist[data-v-81afe13e]{opacity:.62}.rpg-line.live .rpg-bubble[data-v-81afe13e]{animation:rise .26s var(--hud-ease) both;border-color:var(--hud-line-hi);background:#14213a}.rpg-kind[data-v-81afe13e]{font-family:var(--font-mono);letter-spacing:.14em;color:var(--hud-faint);align-self:flex-start;font-size:10px}.rpg-kind.k-artifact[data-v-81afe13e]{color:var(--hud-accent)}.rpg-kind.k-error[data-v-81afe13e]{color:var(--hud-danger)}.rpg-text[data-v-81afe13e]{color:var(--hud-text);word-break:break-word;text-wrap:pretty;font-size:13px;line-height:1.6}.rpg-line.live .rpg-text[data-v-81afe13e]{color:#edf4fa}.rpg-typing[data-v-81afe13e]{align-items:center;gap:4px;padding:5px 2px;display:flex}.ty-dot[data-v-81afe13e]{background:var(--hud-amber);width:5px;height:5px;animation:ty-bounce-81afe13e 1.15s var(--hud-ease) infinite;border-radius:50%}.ty-dot[data-v-81afe13e]:nth-child(2){animation-delay:.15s}.ty-dot[data-v-81afe13e]:nth-child(3){animation-delay:.3s}.ty-label[data-v-81afe13e]{font-family:var(--font-mono);color:var(--hud-faint);margin-left:5px;font-size:10px}.rpg-note[data-v-81afe13e]{font-family:var(--font-mono);color:var(--hud-dim);text-align:center;padding:14px 0;font-size:10px}.obj-range[data-v-81afe13e],.scale-range[data-v-81afe13e]{appearance:none;cursor:pointer;background:#1a2740;border-radius:999px;outline:none;height:4px}.obj-range[data-v-81afe13e]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#e8f6ef;border-radius:50%;box-shadow:0 0 0 3px #35e0a026,0 2px 6px #03070e80}.scale-range[data-v-81afe13e]::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--hud-accent);width:13px;height:13px;-webkit-transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);transition:transform .15s var(--hud-ease), box-shadow .15s var(--hud-ease);background:#e8f6ef;border-radius:50%;box-shadow:0 0 0 3px #35e0a026,0 2px 6px #03070e80}.obj-range[data-v-81afe13e]::-webkit-slider-thumb:hover{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a033,0 2px 8px #03070e8c}.scale-range[data-v-81afe13e]::-webkit-slider-thumb:hover{transform:scale(1.18);box-shadow:0 0 0 5px #35e0a033,0 2px 8px #03070e8c}.obj-range[data-v-81afe13e]::-moz-range-thumb{border:2px solid var(--hud-accent);background:#e8f6ef;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 3px #35e0a026}.scale-range[data-v-81afe13e]::-moz-range-thumb{border:2px solid var(--hud-accent);background:#e8f6ef;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 3px #35e0a026}.obj-range[data-v-81afe13e]::-moz-range-track{background:#1a2740;border-radius:999px;height:4px}.scale-range[data-v-81afe13e]::-moz-range-track{background:#1a2740;border-radius:999px;height:4px}@keyframes ty-bounce-81afe13e{0%,60%,to{opacity:.5;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.mini-btn[data-v-81afe13e]:active,.obj-mini[data-v-81afe13e]:active{transform:scale(.96)}mini-btn[data-v-81afe13e],obj-mini[data-v-81afe13e]{transition-property:filter,background,border-color,color,transform,opacity;transition-duration:.15s;transition-timing-function:var(--hud-ease)}.obj-mini[data-v-81afe13e]:focus-visible,.obj-range[data-v-81afe13e]:focus-visible,.obj-select[data-v-81afe13e]:focus-visible,button[data-v-81afe13e]:focus-visible,input[data-v-81afe13e]:focus-visible,select[data-v-81afe13e]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-81afe13e]{min-height:40px}}@media (prefers-reduced-motion:reduce){.rpg-line.live .rpg-bubble[data-v-81afe13e],.ty-dot[data-v-81afe13e]{animation:none}}.health-body[data-v-f80a31d6]{align-items:center;gap:14px;display:flex}.donut-wrap[data-v-f80a31d6]{flex:none;width:118px;height:118px;position:relative}.donut-wrap canvas[data-v-f80a31d6]{width:118px;height:118px}.donut-center[data-v-f80a31d6]{text-align:center;place-content:center;display:grid;position:absolute;inset:0}.donut-center b[data-v-f80a31d6]{font-family:var(--font-mono);color:var(--hud-accent);font-size:21px;font-weight:700}.donut-center span[data-v-f80a31d6]{color:var(--hud-faint);font-size:9.5px}.health-legend[data-v-f80a31d6]{flex-direction:column;flex:1;gap:8px;display:flex}.hl-row[data-v-f80a31d6]{align-items:center;gap:7px;font-size:11.5px;display:flex}.hl-dot[data-v-f80a31d6]{border-radius:50%;flex:none;width:7px;height:7px}.hl-row .n[data-v-f80a31d6]{font-family:var(--font-mono);color:var(--hud-text);margin-left:auto;font-size:13px;font-weight:700}button[data-v-f80a31d6]:focus-visible,input[data-v-f80a31d6]:focus-visible,select[data-v-f80a31d6]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-f80a31d6]{min-height:40px}}.rail-empty[data-v-59eabea7]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-faint);text-align:center;flex-direction:column;align-items:center;gap:7px;padding:16px 10px 13px;font-size:9.5px;display:flex}.rail-empty .re-ico[data-v-59eabea7]{fill:none;width:19px;height:19px;stroke:var(--hud-faint);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;opacity:.85}.alarm-list[data-v-59eabea7]{flex-direction:column;display:flex}.al-row[data-v-59eabea7]{border-radius:var(--hud-r-md);align-items:flex-start;gap:9px;padding:9px 8px;transition:background .15s;display:flex}.al-row[data-v-59eabea7]:hover{background:#101a2c}.al-ico[data-v-59eabea7]{border-radius:8px;flex:none;place-items:center;width:28px;height:28px;display:grid}.al-ico.crit[data-v-59eabea7]{color:var(--hud-danger);background:#ff6b6b1f}.al-ico.warn[data-v-59eabea7]{color:var(--hud-amber);background:#f6c4531f}.al-ico.info[data-v-59eabea7]{color:var(--hud-cyan);background:#41c8f41f}.al-svg[data-v-59eabea7]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.al-body[data-v-59eabea7]{flex:1;min-width:0}.al-txt[data-v-59eabea7]{color:var(--hud-text);font-size:12px;font-weight:500;line-height:1.35}.al-src[data-v-59eabea7]{font-family:var(--font-mono);color:var(--hud-faint);margin-top:2px;font-size:9.5px}.al-state[data-v-59eabea7]{cursor:pointer;background:0 0;border:1px solid;border-radius:6px;flex:none;margin-top:2px;padding:2px 7px;font-size:9.5px;font-weight:600}.al-state.s0[data-v-59eabea7]{color:var(--hud-danger);background:#ff6b6b1a;border-color:#ff6b6b66}.al-state.s1[data-v-59eabea7]{color:var(--hud-amber);background:#f6c4531a;border-color:#f6c45359}.al-state.s2[data-v-59eabea7]{color:var(--hud-dim);background:#8fa0b514;border-color:#8fa0b54d}.nav-bell-warn[data-v-59eabea7]{color:var(--hud-danger);border-color:#ff6b6b80}.al-state[data-v-59eabea7]:active{transform:scale(.96)}al-state[data-v-59eabea7]{transition-property:filter,background,border-color,color,transform,opacity;transition-duration:.15s;transition-timing-function:var(--hud-ease)}button[data-v-59eabea7]:focus-visible,input[data-v-59eabea7]:focus-visible,select[data-v-59eabea7]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-59eabea7]{min-height:40px}}.event-list[data-v-f43bf1fb]{flex-direction:column;flex:1;min-height:0;max-height:200px;display:flex;overflow:hidden auto}.event-row[data-v-f43bf1fb]{transition:background .13s var(--hud-ease);border-radius:7px;align-items:center;gap:7px;padding:4px 6px;display:flex}.event-row[data-v-f43bf1fb]:hover{background:#35e0a00d}.ev-time[data-v-f43bf1fb]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-faint);flex:none;font-size:10px}.ev-name[data-v-f43bf1fb]{text-overflow:ellipsis;white-space:nowrap;max-width:70px;font-family:var(--font-mono);color:var(--hud-text);flex:none;font-size:10px;font-weight:600;overflow:hidden}.ev-text[data-v-f43bf1fb]{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--hud-dim);flex:1;font-size:10.5px;overflow:hidden}.event-empty[data-v-f43bf1fb]{font-family:var(--font-mono);color:var(--hud-faint);text-align:center;padding:12px;font-size:9.5px}.rail-empty[data-v-f43bf1fb]{font-family:var(--font-mono);letter-spacing:.06em;color:var(--hud-faint);text-align:center;flex-direction:column;align-items:center;gap:7px;padding:16px 10px 13px;font-size:9.5px;display:flex}.rail-empty .re-ico[data-v-f43bf1fb]{fill:none;width:19px;height:19px;stroke:var(--hud-faint);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;opacity:.85}button[data-v-f43bf1fb]:focus-visible,input[data-v-f43bf1fb]:focus-visible,select[data-v-f43bf1fb]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-f43bf1fb]{min-height:40px}}.vp-tools[data-v-882f1c98]{align-items:center;gap:8px;display:flex}.vp-tool[data-v-882f1c98]{width:34px;height:34px;color:var(--hud-dim);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:color .15s var(--hud-ease), border-color .15s var(--hud-ease), background .15s var(--hud-ease);background:#0d1420d9;border:1px solid #223050;border-radius:50%;place-items:center;font-size:12px;font-weight:600;display:grid}.vp-tool[data-v-882f1c98]:hover{color:var(--hud-text);border-color:#33507c}.vp-tool.on[data-v-882f1c98]{color:#04120c;background:var(--hud-accent);border-color:var(--hud-accent);box-shadow:0 0 12px #35e0a04d}.vp-svg[data-v-882f1c98]{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.mm-body[data-v-882f1c98]{align-items:stretch;gap:8px;display:flex}.mm-wrap[data-v-882f1c98]{border-radius:var(--hud-r-md);background:#060b13;border:1px solid #223050;flex:1;min-height:148px;position:relative;overflow:hidden}.mini-svg[data-v-882f1c98]{cursor:crosshair;width:100%;height:100%;position:absolute;inset:0}.nav-cv[data-v-882f1c98]{cursor:crosshair;touch-action:none;width:100%;height:100%;position:absolute;inset:0}.mm-col[data-v-882f1c98]{flex-direction:column;gap:6px;display:flex}.mm-col .vp-tool[data-v-882f1c98]{border-radius:8px;width:30px;height:30px}.mm-meta[data-v-882f1c98]{color:var(--hud-faint);letter-spacing:.08em;text-align:center;margin-top:8px;font-size:9.5px}.vp-tool[data-v-882f1c98]:active{transform:scale(.96)}vp-tool[data-v-882f1c98]{transition-property:filter,background,border-color,color,transform,opacity;transition-duration:.15s;transition-timing-function:var(--hud-ease)}button[data-v-882f1c98]:focus-visible,input[data-v-882f1c98]:focus-visible,select[data-v-882f1c98]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (width<=1023px){button[data-v-882f1c98]{min-height:40px}}.twin-dcw[data-v-d0cfc6e2]{border-top:1px dashed #f0a04c59;flex-direction:column;gap:6px;margin:0 0 2px;padding-top:6px;display:flex}.dcw-item[data-v-d0cfc6e2]{flex-direction:column;gap:3px;display:flex}.dcw-head[data-v-d0cfc6e2]{font-family:var(--font-mono);color:var(--hud-dim);justify-content:space-between;align-items:baseline;gap:6px;font-size:9.5px;display:flex}.dcw-head em[data-v-d0cfc6e2]{text-overflow:ellipsis;white-space:nowrap;font-style:normal;overflow:hidden}.dcw-src[data-v-d0cfc6e2]{color:var(--hud-amber,#f6c453);border:1px solid #f0a04c80;border-radius:2px;margin-left:4px;padding:0 3px;font-size:10px;font-style:normal}.dcw-set[data-v-d0cfc6e2]{font-variant-numeric:tabular-nums;color:var(--hud-amber,#f6c453);white-space:nowrap;font-size:12px;font-weight:700}.dcw-set i[data-v-d0cfc6e2]{opacity:.75;margin-left:2px;font-size:10px;font-style:normal;font-weight:500}.dcw-act[data-v-d0cfc6e2]{font-family:var(--font-mono);color:var(--hud-dim);justify-content:space-between;align-items:baseline;gap:6px;font-size:10px;display:flex}.dcw-act em[data-v-d0cfc6e2]{letter-spacing:.08em;color:var(--hud-faint);font-size:10px;font-style:normal}.dcw-act b[data-v-d0cfc6e2]{font-variant-numeric:tabular-nums;color:var(--hud-accent,#35e0a0);white-space:nowrap;font-size:11.5px;font-weight:700}.dcw-act b i[data-v-d0cfc6e2]{opacity:.75;margin-left:2px;font-size:10px;font-style:normal;font-weight:500}.dcw-act-at[data-v-d0cfc6e2]{color:var(--hud-faint);font-size:10px;font-style:normal}.dcw-win[data-v-d0cfc6e2]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-faint);letter-spacing:.04em;font-size:10px}.dcw-win span[data-v-d0cfc6e2]{border-bottom:1px dotted var(--hud-line);padding-bottom:1px}.dcw-ctrl[data-v-d0cfc6e2]{align-items:center;gap:4px;display:flex}.dcw-ctrl .ctrl-input[data-v-d0cfc6e2]{flex:1;width:auto;min-width:0}.dcw-send[data-v-d0cfc6e2]{color:var(--hud-amber,#f6c453);border-color:#f0a04c80;flex:none}.dcw-send[data-v-d0cfc6e2]:hover:not(:disabled){color:var(--hud-amber,#f6c453);border-color:var(--hud-amber,#f6c453);background:#f0a04c1f}.dcw-err[data-v-d0cfc6e2]{font-family:var(--font-mono);color:var(--hud-danger,#ff6b5c);font-size:10px}.ctrl-btn[data-v-d0cfc6e2]{letter-spacing:.06em;font-size:10px;font-weight:600;font-family:var(--font-mono);color:var(--hud-text);border:1px solid var(--hud-line);cursor:pointer;background:0 0;border-radius:2px;padding:3px 7px;transition:border-color .14s,color .14s,background .14s}.ctrl-btn[data-v-d0cfc6e2]:hover:not(:disabled){border-color:var(--hud-accent);color:var(--hud-accent)}.ctrl-btn[data-v-d0cfc6e2]:disabled{opacity:.45;cursor:default}.ctrl-input[data-v-d0cfc6e2]{width:48px;font-family:var(--font-mono);border:1px solid var(--hud-line);background:var(--hud-input);color:var(--hud-text);font-variant-numeric:tabular-nums;border-radius:2px;padding:3px 6px;font-size:10px}.ctrl-input[data-v-d0cfc6e2]:focus{border-color:var(--hud-accent);outline:none}.twin-card[data-v-16fa0638]{text-align:left;cursor:pointer;background:#141b26a6;border:0;border-radius:2px;flex-direction:column;gap:6px;margin:0 10px;padding:8px 9px;transition:background .16s;display:flex}.twin-card[data-v-16fa0638]:hover{background:var(--hud-panel-hover)}.twin-card[data-v-16fa0638]:active{background:var(--hud-panel-raised)}.twin-card:hover .twin-name[data-v-16fa0638]{color:#e8f1f8}.twin-card.daq[data-v-16fa0638]{background:#35e0a00f;border:1px solid #35e0a052}.twin-card.daq[data-v-16fa0638]:hover{background:#35e0a01c;border-color:#35e0a080}.twin-card.daq .twin-code[data-v-16fa0638],.twin-card.daq .twin-model-tag[data-v-16fa0638]{color:var(--hud-accent,#35e0a0)}.twin-row[data-v-16fa0638]{align-items:center;gap:8px;min-width:0;display:flex}.twin-model-tag[data-v-16fa0638]{min-width:30px;font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-faint);flex:none;font-size:10px;font-weight:600}.twin-idbar[data-v-16fa0638]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.twin-name[data-v-16fa0638]{color:var(--hud-text);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:600;overflow:hidden}.twin-code[data-v-16fa0638]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-dim);font-size:10px}.twin-del[data-v-16fa0638]{width:18px;height:18px;font-family:var(--font-mono);color:var(--hud-dim,#8496a5);border:1px solid var(--hud-line,#263340);cursor:pointer;background:0 0;border-radius:2px;flex:none;font-size:10px;line-height:1;transition:border-color .14s,color .14s,background .14s}.twin-del[data-v-16fa0638]:hover:not(:disabled){border-color:var(--hud-danger,#ff6b5c);color:var(--hud-danger,#ff6b5c)}.twin-del.armed[data-v-16fa0638]{color:#1a0d0a;background:var(--hud-danger,#ff6b5c);border-color:var(--hud-danger,#ff6b5c);width:auto;padding:0 5px}.twin-del[data-v-16fa0638]:disabled{opacity:.4;cursor:default}.twin-state[data-v-16fa0638]{font-family:var(--font-mono);letter-spacing:.08em;color:var(--hud-dim);border:1px solid var(--hud-line);border-radius:2px;flex:none;align-items:center;gap:5px;padding:2px 5px;font-size:10px;display:inline-flex}.twin-state.s-alarm[data-v-16fa0638]{color:var(--hud-danger);border-color:#ff6b5c80}.twin-state.s-running[data-v-16fa0638]{color:var(--hud-ok);border-color:#7fd4a066}.twin-state-dot[data-v-16fa0638]{border-radius:50%;width:5px;height:5px}.twin-tele[data-v-16fa0638]{border-top:1px dashed var(--hud-line);grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 10px;margin:0 0 2px;padding-top:6px;display:grid}.tele-item[data-v-16fa0638]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-dim);justify-content:space-between;gap:6px;min-width:0;font-size:9.5px;display:flex}.tele-item em[data-v-16fa0638]{text-overflow:ellipsis;font-style:normal;overflow:hidden}.tele-item b[data-v-16fa0638]{color:var(--hud-text);font-weight:500}.twin-daq[data-v-16fa0638]{border-top:1px dashed #35e0a04d;flex-direction:column;gap:2px;margin:0 0 2px;padding-top:6px;display:flex}.daq-item[data-v-16fa0638]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-accent,#35e0a0);justify-content:space-between;align-items:baseline;gap:6px;min-width:0;font-size:9.5px;display:flex}.daq-item em[data-v-16fa0638]{text-overflow:ellipsis;white-space:nowrap;opacity:.85;font-style:normal;overflow:hidden}.daq-item b[data-v-16fa0638]{white-space:nowrap;font-size:10.5px;font-weight:700}.daq-item b i[data-v-16fa0638]{opacity:.75;margin-left:2px;font-size:10px;font-style:normal;font-weight:500}.daq-item.alarm[data-v-16fa0638]{color:var(--hud-amber,#f6c453)}.twin-panel[data-v-96db9064]{width:auto;box-shadow:none;background:0 0;border:0;border-radius:0;flex-direction:column;flex:none;gap:8px;padding:0;display:flex}.twin-head[data-v-96db9064]{border-bottom:1px solid #26334073;align-items:center;gap:8px;padding:10px 12px 6px;display:flex}.twin-error[data-v-96db9064]{color:#ffb4b4;word-break:break-all;background:#ff6b6b1a;border:1px solid #ff6b6b59;border-radius:8px;padding:7px 10px;font-size:11px;line-height:1.5}.twin-kicker[data-v-96db9064]{font-family:var(--font-mono);letter-spacing:.16em;color:var(--hud-text,#d9e4ee);font-size:10px;font-weight:600}.twin-count[data-v-96db9064]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--hud-dim,#8496a5);margin-left:auto;font-size:10px}.twin-empty[data-v-96db9064]{padding:10px}.twin-empty-frame[data-v-96db9064]{border:1px dashed var(--hud-line);flex-direction:column;gap:4px;padding:12px 10px;display:flex}.twin-empty-title[data-v-96db9064]{font-family:var(--font-mono);letter-spacing:.1em;color:var(--hud-text);font-size:11px}.twin-empty-sub[data-v-96db9064]{color:var(--hud-dim);font-size:10px;line-height:1.6}.twin-list[data-v-96db9064]{flex-direction:column;gap:4px;max-height:46vh;padding:4px 0 10px;display:flex;overflow:hidden auto}.twin-err[data-v-96db9064]{color:var(--hud-danger);padding:0 10px 8px;font-size:9.5px}.rail[data-v-bed627c4]{background:linear-gradient(#0a101c,#080d16);flex-direction:column;gap:10px;min-height:0;padding:10px;display:flex;overflow:hidden auto}.rail-right[data-v-bed627c4]{border-left:1px solid var(--hud-line-soft)}.rail[data-v-bed627c4]::-webkit-scrollbar{width:8px}.rail[data-v-bed627c4]::-webkit-scrollbar-thumb{background:#1c2942;border:2px solid #080d16;border-radius:4px}.rail[data-v-bed627c4]::-webkit-scrollbar-track{background:0 0}.ins-enter-active[data-v-bed627c4]{transition:opacity .2s var(--hud-ease), transform .2s var(--hud-ease)}.ins-leave-active[data-v-bed627c4]{transition:opacity .12s}.ins-enter-from[data-v-bed627c4]{opacity:0;transform:translate(12px)}.ins-leave-to[data-v-bed627c4]{opacity:0}.panel[data-v-bed627c4]{border:1px solid var(--hud-line);border-radius:var(--hud-r-lg);background:linear-gradient(#101827,#0d1420);flex:none;padding:12px;position:relative;box-shadow:inset 0 1px #8fb0dc12,0 10px 28px #03070e73}.panel[data-v-bed627c4]:before{content:"";border-radius:var(--hud-r-lg) var(--hud-r-lg) 0 0;pointer-events:none;background:linear-gradient(#78a5dc0e,#0000);height:44px;position:absolute;inset:0 0 auto}.panel-hd[data-v-bed627c4]{align-items:center;gap:8px;margin-bottom:10px;display:flex}.panel-hd h3[data-v-bed627c4]{letter-spacing:.02em;flex:1;margin:0;padding-left:11px;font-size:12.5px;font-weight:700;position:relative}.panel-hd h3[data-v-bed627c4]:before{content:"";background:var(--hud-accent);width:3px;height:12px;box-shadow:0 0 8px color-mix(in srgb, var(--hud-accent) 45%, transparent);border-radius:2px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.panel-tag[data-v-bed627c4]{font-family:var(--font-mono);color:var(--hud-cyan);background:#41c8f41a;border:1px solid #41c8f440;border-radius:6px;padding:0 6px;font-size:9.5px;line-height:15px}@media (prefers-reduced-motion:no-preference){.dock[data-v-bed627c4],.rail-left[data-v-bed627c4],.rail-right[data-v-bed627c4]{animation:.52s cubic-bezier(.22,.68,.36,1) backwards hud-boot-bed627c4}.rail-left[data-v-bed627c4]{animation-delay:40ms}.rail-right[data-v-bed627c4]{animation-delay:.15s}.dock[data-v-bed627c4]{animation-delay:.26s}}@keyframes hud-boot-bed627c4{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.inspector[data-v-bed627c4]{animation:rise-bed627c4 .18s var(--hud-ease)}@keyframes rise-bed627c4{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.al-state[data-v-bed627c4]:active,.bind-add[data-v-bed627c4]:active,.bind-x[data-v-bed627c4]:active,.bp-btn[data-v-bed627c4]:active,.btn[data-v-bed627c4]:active,.lg-chip[data-v-bed627c4]:active,.mini-btn[data-v-bed627c4]:active,.obj-mini[data-v-bed627c4]:active,.snap-toggle[data-v-bed627c4]:active,.vp-tool[data-v-bed627c4]:active{transform:scale(.96)}.al-state[data-v-bed627c4],.bind-add[data-v-bed627c4],.bp-btn[data-v-bed627c4],.btn[data-v-bed627c4],.lg-chip[data-v-bed627c4],.mini-btn[data-v-bed627c4],.obj-mini[data-v-bed627c4],.snap-toggle[data-v-bed627c4],.vp-tool[data-v-bed627c4]{transition-property:filter,background,border-color,color,transform,opacity;transition-duration:.15s;transition-timing-function:var(--hud-ease)}button[data-v-bed627c4]:focus-visible,input[data-v-bed627c4]:focus-visible,select[data-v-bed627c4]:focus-visible{box-shadow:0 0 0 2px var(--hud-bg), 0 0 0 4px #41c8f473;border-radius:6px;outline:none}@media (prefers-reduced-motion:reduce){.callout[data-v-bed627c4],.inspector[data-v-bed627c4]{animation:none}}.dock-toggle[data-v-bed627c4],.sheet-btn[data-v-bed627c4],.sheet-hd[data-v-bed627c4]{display:none}@media (width<=1023px){.rail[data-v-bed627c4]{z-index:70;overscroll-behavior:contain;border:0;border-top:1px solid var(--hud-line-hi);visibility:hidden;width:auto;max-height:min(76dvh,640px);transition:transform .26s var(--hud-ease), visibility 0s linear .26s;background:linear-gradient(#0c1420,#080d16 46%);border-radius:16px 16px 0 0;gap:8px;padding:0 10px 12px;position:fixed;inset:auto 0 0;overflow-y:auto;transform:translateY(103%);box-shadow:0 -18px 46px #0009}.rail.sheet-open[data-v-bed627c4]{visibility:visible;transition:transform .26s var(--hud-ease), visibility 0s;transform:none}.rail-left[data-v-bed627c4],.rail-right[data-v-bed627c4]{border-left:0;border-right:0}.rail .panel[data-v-bed627c4]{flex:none}.sheet-hd[data-v-bed627c4]{z-index:2;border-bottom:1px solid var(--hud-line-soft);background:linear-gradient(#0e1725,#0c1420);align-items:center;gap:8px;margin:0 -10px 2px;padding:13px 12px 9px;display:flex;position:sticky;top:0}.sheet-grip[data-v-bed627c4]{background:#2c4568;border-radius:2px;width:40px;height:3px;margin-left:-20px;position:absolute;top:6px;left:50%}.sheet-hd-t[data-v-bed627c4]{color:var(--hud-text);letter-spacing:.04em;font-size:13px;font-weight:700}.sheet-x[data-v-bed627c4]{border:1px solid var(--hud-line);width:40px;height:40px;color:var(--hud-dim);background:#101a2b;border-radius:8px;flex:none;margin-left:auto;font-size:15px}}@media (prefers-reduced-motion:reduce){.rail[data-v-bed627c4]{transition:none}}@media (width<=1023px){button[data-v-bed627c4]{min-height:40px}}.statusbar[data-v-8fceb8be]{border-top:1px solid var(--hud-line-soft);height:30px;color:var(--hud-dim);z-index:60;background:#0a101b;flex:none;align-items:center;gap:18px;padding:0 14px;font-size:11px;display:flex;position:relative}.statusbar b[data-v-8fceb8be]{color:var(--hud-accent);font-weight:600}.statusbar .sb-stats[data-v-8fceb8be]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:.02em;align-items:center;gap:7px;display:inline-flex}.sb-stats b[data-v-8fceb8be]{color:var(--hud-text);font-weight:600}.sb-stats i[data-v-8fceb8be]{color:var(--hud-line-hi);font-style:normal}.sb-dot[data-v-8fceb8be]{background:var(--hud-accent);width:7px;height:7px;box-shadow:0 0 6px var(--hud-accent);vertical-align:1px;border-radius:50%;margin-right:6px;display:inline-block}.sb-dot.red[data-v-8fceb8be]{background:var(--hud-danger);box-shadow:0 0 6px var(--hud-danger)}.sb-dot[data-v-8fceb8be]:not(.red){animation:sb-pulse-8fceb8be 2.4s var(--hud-ease) infinite}@keyframes sb-pulse-8fceb8be{0%,to{opacity:1}50%{opacity:.4}}@media (prefers-reduced-motion:reduce){.sb-dot[data-v-8fceb8be]:not(.red){animation:none}}.sb-lat[data-v-8fceb8be]{font-family:var(--font-mono);font-variant-numeric:tabular-nums;position:absolute;left:50%;transform:translate(-50%)}.statusbar .copy[data-v-8fceb8be]{color:var(--hud-faint);font-family:var(--font-mono);margin-left:auto;font-size:10px}@media (width<=1023px){.statusbar[data-v-8fceb8be]{flex-wrap:wrap;gap:6px 12px;height:auto;min-height:30px;padding:5px 10px;font-size:11.5px}.statusbar .copy[data-v-8fceb8be]{display:none}.sb-lat[data-v-8fceb8be]{margin-left:auto;position:static;transform:none}.statusbar[data-v-8fceb8be]{font-size:12px}}.town-view[data-v-27dde437]{--hud-bg:#070b13;--hud-panel:#0d1420;--hud-panel-2:#111a2b;--hud-panel-raised:#152034;--hud-panel-hover:#16233a;--hud-line:#1d2a42;--hud-line-soft:#16202f;--hud-line-hi:#2c4568;--hud-input:#0a111d;--hud-text:#e8eef8;--hud-dim:#8fa0b5;--hud-faint:#5f6e84;--hud-accent:#35e0a0;--hud-accent-dim:#1f9e6e;--hud-cyan:#41c8f4;--hud-amber:#f6c453;--hud-ok:#35e0a0;--hud-danger:#ff6b6b;--hud-shadow:0 16px 40px #0000008c;--hud-ease:cubic-bezier(.22, .68, .36, 1);--hud-r-sm:8px;--hud-r-md:10px;--hud-r-lg:12px;background:var(--hud-bg);height:100%;min-height:0;color:var(--hud-text);font-family:var(--font-body);flex-direction:column;font-size:13px;display:flex}.town-view small[data-v-27dde437]{font-size:10px}.app[data-v-27dde437]{flex:1;grid-template-columns:clamp(212px,19vw,250px) minmax(0,1fr) clamp(284px,26vw,342px);min-height:0;display:grid}.town-view[data-v-27dde437] ::-webkit-scrollbar{width:8px;height:8px}.town-view[data-v-27dde437] ::-webkit-scrollbar-track{background:0 0}.town-view[data-v-27dde437] ::-webkit-scrollbar-thumb{background:#1c2942;border:2px solid #080d16;border-radius:4px}.town-view[data-v-27dde437] ::-webkit-scrollbar-thumb:hover{background:#2c4568}.sheet-mask[data-v-27dde437]{z-index:69;-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);background:#03060c9e;position:fixed;inset:0}@media (width<=1023px){.town-view[data-v-27dde437]{--hud-faint:#8b9bb0}.app[data-v-27dde437]{grid-template-columns:minmax(0,1fr)}.town-view[data-v-27dde437] :where(.panel-tag,.daq-code,.daq-count,.daq-caret,.node-val,.node-dev,.daq-empty-hint,.scene-meta,.scene-cur,.scene-add,.scene-hint,.co-label,.co-range,.lg-chip,.lg-more,.ins-chip,.sect-hd,.obj-label,.range-status,.obj-mini,.bp-val,.seg-btn,.scale-min,.scale-max,.scale-val,.ins-empty,.donut-center span,.ev-time,.ev-name,.ev-text,.event-empty,.rail-empty,.al-src,.al-state,.mm-meta,.chat-state,.chat-role,.chat-harness,.chat-count,.rpg-divider,.rpg-time,.rpg-kind,.ty-label,.rpg-note,.bp-sub,.bp-tab,.bp-label,.bp-hint,.bp-btn,.member-ava,.member-role,.member-select,.bind-label,.bind-val,.bp-tpl,.bp-cur,.bp-empty,.dcw-name,.dcw-tag,.dcw-win-num,.dcw-send,.dcw-err,.bind-select,.bind-add-btn,.daq-ctl-cycle,.daq-num,.daq-th-inputs,.approval-ttl,.approval-detail){font-size:11.5px}.town-view[data-v-27dde437] :where(.daq-name,.scene-name,.al-txt,.ev-text,.chat-name,.co-val,.rpg-text,.daq-info-row,.daq-ctl-btn,.rail-empty,.rpg-note,.member-name,.bind-label,.dcw-cur){font-size:13px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{N as e,mt as t,v as n}from"./CavpkQb0.js";import{P as r,S as i,V as a,W as o,f as s,h as c,i as l,j as u,tt as d}from"./C6lssmvl.js";import{n as f}from"./D1MkndMZ.js";import{t as p}from"./N-CCmCsX.js";import{t as m}from"./BDNMzG2s.js";var h=[`data-plugin-slot`],g=[`data-plugin-panel`],_={class:`plugin-slot-title`},v=Object.assign(m(i({__name:`PluginSlot`,props:{slotName:{}},setup(i){let m=i,{panelsOf:v}=p(),y=v(m.slotName),{t:b}=f(),x=new Map;function S(e){return`${e.plugin}/${e.name}`}function C(e){if(e.titleKey){let t=e.titleKey.startsWith(`plugin.`)?e.titleKey:`plugin.${e.plugin}.${e.titleKey}`,n=b(t);if(n!==t)return n}return e.title??`${e.plugin}.${e.name}`}async function w(){await u();let e=T.value;if(!e)return;let t=new Set(y.value.map(S));for(let[e,n]of[...x.entries()])if(!t.has(e)){try{n.cleanup?.()}catch{}n.el.remove(),x.delete(e)}for(let t of y.value){let n=S(t);if(x.has(n))continue;let r=e.querySelector(`[data-plugin-panel="${n}"]`);if(r)try{let e=await t.mount(r);x.set(n,{el:r,cleanup:typeof e==`function`?e:void 0})}catch(e){console.warn(`[plugin-slot] panel render failed ${n}:`,e)}}}let T=n(null);return d(y,()=>void w(),{deep:!0,immediate:!0}),r(()=>{for(let e of x.values())try{e.cleanup?.()}catch{}x.clear()}),(n,r)=>(a(),c(`div`,{ref_key:`hostRef`,ref:T,class:`plugin-slot`,"data-plugin-slot":i.slotName},[(a(!0),c(l,null,o(e(y),e=>(a(),c(`div`,{key:S(e),class:`plugin-slot-panel`,"data-plugin-panel":S(e)},[s(`div`,_,t(C(e)),1)],8,g))),128))],8,h))}}),[[`__scopeId`,`data-v-bca9965d`]]),{__name:`WorkshopPluginSlot`});export{v as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./DK3Fl9T5.js";import{v as t}from"./CavpkQb0.js";import{d as n}from"./C6lssmvl.js";import{t as r}from"./WCG1-KXf2.js";var i=e({useDcwFilter:()=>a});function a(e){let i=r(),a=t(`all`),o=t(``);return{filterState:a,searchText:o,runningCount:n(()=>e.value.filter(e=>i.lineStateOf(e.line.id).active).length),shownCards:n(()=>e.value.filter(e=>{let t=i.lineStateOf(e.line.id).active;if(a.value===`running`&&!t||a.value===`idle`&&t)return!1;let n=o.value.trim().toLowerCase();return!(n&&!e.line.name.toLowerCase().includes(n)&&!(e.line.description??``).toLowerCase().includes(n))}))}}export{i as n,a as t};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import{g as e}from"./CavpkQb0.js";import{t}from"./36oeS8_R.js";import{t as n}from"./R5Pz7BqB.js";import{n as r}from"./B6C4WofF.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:`小端(DC BA / 全字节反转)`},{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:`小端(DC BA / 全字节反转)`},{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);仅 http/https,内网地址需同时开启 allowPrivateHost`},{key:`bodyKey`,label:`JSON 键(可选)`,type:`string`,placeholder:`setpoint`,hint:`留空 = {"value": 设定值};填写 = {"键": 设定值}`},{key:`headersJSON`,label:`请求头(可选)`,type:`string`,placeholder:`{"X-API-Token":"{{SECRET:PLC_KEY}}"}`,hint:`JSON 对象形式的 HTTP 头;值支持 {{SECRET:REF}}(未解析整头省略)`},{key:`timeoutMs`,label:`超时(ms)`,type:`number`,default:6e3,hint:`单次写入超时,钳 1000–60000ms,缺省 6000`},{key:`authType`,label:`认证方式`,type:`select`,default:`none`,options:[{value:`none`,label:`无认证(缺省)`},{value:`bearer`,label:`Bearer(Authorization 头)`},{value:`header`,label:`自定义头(authHeaderName)`}],hint:`与 secretRef 配合;缺省 none 保持旧配置行为`},{key:`authHeaderName`,label:`自定义认证头名(可选)`,type:`string`,placeholder:`X-Api-Token`,hint:`authType=header 时的头名`},{key:`secretRef`,label:`凭据引用(secretRef)`,type:`string`,placeholder:`plc-line1`,hint:`凭据引用名;token 从 env AW_SECRET_<REF大写> 或管理端运行时凭据仓读取,不落明文`},{key:`allowPrivateHost`,label:`内网地址白名单`,type:`select`,default:`false`,options:[{value:`false`,label:`拒绝(默认,SSRF 防护)`},{value:`true`,label:`允许(内网 PLC/网关显式开启)`}],hint:`内网/环回地址显式白名单开关(生产写接口通常在内网)`}]},{kind:`mes-rest`,label:`MES 集成(REST API 映射)`,status:`real`,configFields:[{key:`baseUrl`,label:`MES 服务地址(baseUrl)`,type:`string`,required:!0,placeholder:`https://mes.example.com`,hint:`仅 http/https;内网地址需同时开启 allowPrivateHost`},{key:`authType`,label:`认证方式(authType)`,type:`select`,default:`bearer`,options:[{value:`bearer`,label:`Bearer(Authorization 头)`},{value:`header`,label:`自定义头(authHeaderName)`},{value:`none`,label:`无认证`}],hint:`凭据注入方式`},{key:`secretRef`,label:`凭据引用(secretRef)`,type:`string`,placeholder:`line1-mes`,hint:`凭据引用名;token 从 env AW_MES_<REF大写>_TOKEN、管理端运行时凭据仓(/api/workshop/mes/secrets)或运行时设置 mes.secret.<ref> 读取,不落明文`},{key:`authHeaderName`,label:`自定义认证头名(可选)`,type:`string`,placeholder:`X-Api-Token`,hint:`authType=header 时的自定义头名`},{key:`requestTimeoutMs`,label:`请求超时(ms)`,type:`number`,default:1e4,hint:`单次 MES 请求超时,缺省 10s`},{key:`allowPrivateHost`,label:`内网地址白名单`,type:`select`,default:`false`,options:[{value:`false`,label:`拒绝(默认,SSRF 防护)`},{value:`true`,label:`允许(内网 MES 显式开启)`}],hint:`内网/环回地址显式白名单开关(生产 MES 通常在内网)`},{key:`desc`,label:`节点语义描述(desc)`,type:`string`,placeholder:`烘箱温度设定回写 MES 工单;异常时先查工单状态`,hint:`节点语义描述(给 Agent 看):参数物理含义、异常时先查什么`},{key:`headers`,label:`默认请求头(headers)`,type:`text`,placeholder:`{"X-Unit":"L01","X-API-Token":"{{SECRET:MES_PRIMARY}}"}`,hint:`默认请求头 JSON(随读/写/史所有请求携带;值支持 {{SECRET:REF}} 引用凭据不落明文;映射级 headers 与认证头可覆盖)`},{key:`readMap`,label:`当前值映射(readMap)`,type:`text`,placeholder:`{"path":"/api/v1/params/{name}/current","query":{"name":"TEMP_SP"},"response":{"valuePath":"data.value","tsPath":"data.ts","tsFormat":"epoch_ms"}}`,hint:`当前值映射 JSON:{method,path,query,headers,response:{valuePath,tsPath,tsFormat}}`},{key:`writeMap`,label:`写映射(writeMap)`,type:`text`,placeholder:`{"method":"POST","path":"/api/v1/params/{name}/setpoint","query":{"name":"TEMP_SP"},"bodyTemplate":{"value":"{{value}}"},"successOn":[200,201],"response":{"ackPath":"ack"}}`,hint:`写映射 JSON(可选):{method,path,bodyTemplate,successOn,response:{ackPath}};bodyTemplate 里 {{value}} 为治理后工程值`},{key:`historyMap`,label:`历史映射(historyMap)`,type:`text`,placeholder:`{"path":"/api/v1/params/{name}/history","query":{"name":"TEMP_SP"},"response":{"rowsPath":"data.rows[*]","valuePath":"value","tsPath":"ts","nextCursorPath":"data.nextCursor"},"pageSize":500,"maxPages":40}`,hint:`历史映射 JSON(可选):{method,path,query,response:{rowsPath,valuePath,tsPath,nextCursorPath},pageSize,maxPages};response.format 支持数据格式全谱:scalar(缺省,每时间点一个数值)/vector(检测向量如膜厚断面,配 valuesPath)/image(图像帧如 CCD,配 dataPath+mimePath)/table/event(记录流)`},{key:`writeHook`,label:`写入构造钩子(writeHook)`,type:`text`,placeholder:`function (eng, ctx) {
|
|
2
|
+
// eng = recipe 下发的本参数工程值;返回真实写请求(多字段 API 只写本节点负责的一个字段)
|
|
3
|
+
return { method: 'POST', path: '/api/v1/params/multi/set', body: { tem: eng } }
|
|
4
|
+
}`,hint:`可选 JS 函数表达式:(eng, ctx) => {method?,path?,query?,headers?,body?};覆盖 writeMap 声明(body 缺省 {{value}} 模板);recipe 下发时每个参数只把本节点的值传给本 API`},{key:`writeCheckHook`,label:`写响应二次校验钩子(writeCheckHook)`,type:`text`,placeholder:`function (param, ctx) {
|
|
5
|
+
// param = {status, reply(MES 响应 JSON), eng(本次设定)};返回 {ok, message}
|
|
6
|
+
return { ok: !!(param.reply && param.reply.applied && param.reply.applied.tem === param.eng), message: 'applied.tem === 设定值' }
|
|
7
|
+
}`,hint:`可选 JS 函数表达式:(param, ctx) => {ok, message};对 MES 响应 data 做业务二次校验(回读之外),ok=false 即写失败`},{key:`requestHook`,label:`请求构造钩子(requestHook)`,type:`text`,placeholder:`function (param, ctx) {
|
|
8
|
+
// param = Agent 传入的参数对象;返回请求覆盖(合入映射声明,钩子优先)
|
|
9
|
+
return { query: { from: param.from, to: param.to, lane: param.lane } }
|
|
10
|
+
}`,hint:`可选 JS 函数表达式:(param, ctx) => {path?,query?,headers?};返回值合入映射声明(钩子优先);独立子进程执行,4s 超时击杀`},{key:`dataHook`,label:`数据下沉钩子(dataHook)`,type:`text`,placeholder:`function (param, data, ctx) {
|
|
11
|
+
// data.rows = 格式化行(标量 value/向量 values/图像 data+mime/记录 record);data.node = 点位信息
|
|
12
|
+
const means = data.rows.map(r => r.values.reduce((a, b) => a + b, 0) / r.values.length)
|
|
13
|
+
ctx.plot({ name: 'trend', title: data.node.name, series: [{ name: 'rowMean', points: means.map((v, i) => [i, v]) }] })
|
|
14
|
+
ctx.saveCsv({ name: 'rows', rows: [['ts', 'mean']].concat(data.rows.map(r => [r.ts, r.values[0]])) })
|
|
15
|
+
return { summary: \`行数 \${data.rows.length},均值 \${means[0].toFixed(2)}\`, context: '已绘图并存 CSV' }
|
|
16
|
+
}`,hint:`可选 JS 函数表达式:(param, data, ctx) => {summary?,context?,stats?};ctx 提供 saveCsv/saveJson/saveText/savePng/plot(SVG)/log/now,产物落数据根 mes-artifacts/<点位id>/;Agent 取数回包自动附处理摘要与产物清单;独立子进程执行,4s 超时击杀`}]}],o=(e,t)=>r({base:`/api/workshop/dcw`,path:e,init:t,retries:(t?.method??`GET`).toUpperCase()===`GET`?2:0});function s(){let r=e([]),s=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),s.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),s.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=s.get(t.nodeId);n&&(n.value=t.value,n.state=t.ok?`ok`:`error`,n.lastAttemptAt=t.at,t.ok&&(n.lastWriteAt=t.at,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=s.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 o(``);r.splice(0,r.length,...e.nodes),s.clear();for(let e of r)s.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 o(`/optimizations?${t.toString()}`);g.splice(0,g.length,...n.records)},fetchLedger:async e=>(await o(`/${e}/param-ledger`)).ledger,optimizationSeries:async(e,t)=>o(`/optimizations/${e}/series${t?`?windowMs=${t}`:``}`),judgeOptimization:async(e,t,n)=>{await o(`/optimizations/${e}/judge`,{method:`POST`,body:JSON.stringify({verdict:t,reason:n})})},rollbackOptimization:async e=>{await o(`/optimizations/${e}/rollback`,{method:`POST`,body:JSON.stringify({})})},rollbackNode:async(e,t)=>{await o(`/journal/node/${e}/rollback`,{method:`POST`,body:JSON.stringify({to:t})})},markGood:async(e,t)=>{await o(`/recipes/${e}/mark-good`,{method:`POST`,body:JSON.stringify({runId:t})})},rollbackRecipeGood:async e=>{await o(`/recipes/${e}/rollback-good`,{method:`POST`,body:JSON.stringify({})})},createFromTemplate:async(e,t)=>{let n=await o(``,{method:`POST`,body:JSON.stringify({templateRef:e,...t})});return v(n.node),n.node},patchNode:async(e,t)=>{await o(`/${e}`,{method:`PATCH`,body:JSON.stringify(t)})},removeNode:async e=>{await o(`/${e}`,{method:`DELETE`});let t=r.findIndex(t=>t.id===e);t>=0&&r.splice(t,1),s.delete(e)},bindNode:async(e,t)=>{v((await o(`/${e}/bind`,{method:`POST`,body:JSON.stringify({deviceId:t})})).node)},write:async(e,t)=>o(`/${e}/write`,{method:`POST`,body:JSON.stringify({value:t})}).then(e=>e.outcome),readNode:async e=>o(`/${e}/read`,{method:`POST`,body:JSON.stringify({})}).then(e=>e.read),testDriver:async(e,t)=>o(`/test-driver`,{method:`POST`,body:JSON.stringify({driver:e,driverConfig:t})}).then(e=>e.test),mesTestRead:async e=>o(`/mes-test-read`,{method:`POST`,body:JSON.stringify({driverConfig:e})}),mesHookTest:async(e,t)=>o(`/mes-hook-test`,{method:`POST`,body:JSON.stringify({driverConfig:e,param:t})}),testNode:async e=>o(`/${e}/test`,{method:`POST`}).then(e=>e.test),startStop:async e=>{let t=await o(`/controller`,{method:`POST`,body:JSON.stringify({action:e})});Object.assign(c,t.controller)},createTemplate:async e=>{let t=await o(`/templates`,{method:`POST`,body:JSON.stringify(e)});return l.push(t.template),t.template},createRecipe:async e=>{let t=await o(`/recipes`,{method:`POST`,body:JSON.stringify(e)});return u.push(t.recipe),t.recipe},updateRecipe:async(e,t)=>{let n=await o(`/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 o(`/recipes/${e}`,{method:`DELETE`});let t=u.findIndex(t=>t.id===e);t>=0&&u.splice(t,1)},applyRecipe:async e=>{let t=await o(`/recipes/${e}/apply`,{method:`POST`});return d.push(t.run),t.run},recipeVersions:async e=>(await o(`/recipes/${e}/versions`)).versions??[],revertRecipe:async(e,t)=>{let n=await o(`/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 o(`/runs/${e}/close`,{method:`POST`}),n=d.findIndex(t=>t.id===e);return n>=0&&(d[n]=t.run),t.run},runData:e=>o(`/runs/${e}/data`),nodeById:e=>s.get(e)??r.find(t=>t.id===e),createProduct:async e=>{let t=await o(`/products`,{method:`POST`,body:JSON.stringify(e)});return p.push(t.product),t.product},updateProduct:async(e,t)=>o(`/products/${e}`,{method:`PATCH`,body:JSON.stringify(t)}).then(e=>(E(),e.product)),removeProduct:async e=>{await o(`/products/${e}`,{method:`DELETE`});let t=p.findIndex(t=>t.id===e);t>=0&&p.splice(t,1)},createLine:async e=>{let t=await o(`/lines`,{method:`POST`,body:JSON.stringify(e)});return m.push(t.line),t.line},updateLine:async(e,t)=>{let n=await o(`/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 o(`/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 o(`/lines/${e}/start`,{method:`POST`,body:JSON.stringify({recipeId:t})});h[e]=n.line},stopLine:async e=>{let t=await o(`/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)),o(`/line/query?${t.toString()}`)}});async function E(){try{let e=await o(``);p.splice(0,p.length,...e.products??[]),u.splice(0,u.length,...e.recipes??[])}catch{}}return T}var c=`__dcwStream`;function l(){let e=globalThis;return e[c]||(e[c]=s()),e[c]}export{a as n,l as t};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import{N as e,dt as t,g as n,mt as r,v as i}from"./CavpkQb0.js";import{R as ee,S as te,V as a,W as o,d as ne,f as s,h as c,i as l,it as u,m as d,y as f}from"./C6lssmvl.js";import{c as p,l as m}from"./ri9UF8rk.js";import{n as re}from"./Bko5adbu.js";import{n as ie}from"./D1MkndMZ.js";import{t as h}from"./BDNMzG2s.js";import{t as ae}from"./CNs_Ozdc.js";import{n as g,r as _}from"./k9b520K-2.js";var oe={class:`optimizer-page`},se={class:`aw-page-head`},ce={class:`aw-kicker`},le={class:`sub`},ue={class:`aw-stamp`},de={key:0,class:`banner error`},fe={key:1,class:`banner ok`},pe={class:`tabs`},me=[`onClick`],he={key:2,class:`panel`},ge={class:`grid`},_e={key:0},ve={key:1},ye={key:2},be={class:`hint`},xe={class:`grid var-row`},Se={key:0},v={key:1},y={class:`tbl`},b=[`onClick`],x={key:0,class:`hint`},S={class:`actions`},C=[`disabled`],w=[`disabled`],T=[`disabled`],E={class:`hint`},D={class:`list`},O={class:`mono`},k={key:3,class:`panel`},A={class:`actions`},j=[`disabled`],Ce={class:`list`},we={class:`json`},Te={key:1,class:`hint`},Ee={key:4,class:`panel`},De={class:`grid`},Oe={class:`block`},ke={class:`block`},Ae={class:`hint`},je={class:`actions`},Me=[`disabled`],Ne={class:`tbl`},Pe={class:`desc-cell`},Fe=[`onClick`],Ie={key:5,class:`panel`},Le={class:`grid`},Re={class:`hint`},ze={class:`actions`},Be=[`disabled`],M={class:`tbl`},Ve={class:`mono`},He=[`onClick`],Ue={key:6,class:`panel`},We={class:`grid`},Ge={class:`actions`},Ke=[`disabled`],qe={class:`tbl`},Je={class:`mono`},Ye={class:`mono`},Xe={class:`hint`},N=h(te({__name:`index`,setup(te){ae({layout:`default`});let{t:h}=ie();re({title:()=>h(`menu.optimizer`)});let N=i(`spec`),P=i(``),F=i(``),I=i(!1),L=i([]),R=i([]),z=i([]),B=i([]),V=i(null),H=n({id:`mv1`,nodeId:``,role:`mv`,unit:``,scale:1,offset:0,delayMs:0,min:0,max:100,maxStep:void 0}),U=i([]),W=n({id:`pms-demo`,version:1,lineId:``,productId:``,recipeId:``,recipeVersion:0,beatMs:5e3,historySteps:24,horizonSteps:10,trainerRef:`linear_arx@1`,arOrder:2,inputOrder:1,order:1,ridgeLambda:.001,runIds:``,conditionId:`default`,purpose:`mpc_surrogate`}),G=n({id:`optp-demo`,version:1,name:``,description:``,modelId:``,template:`linear_mpc_quadratic@1`,solver:`osqp_mpc@1`,processSpecRef:``,configJson:`{
|
|
2
|
+
"linear_mpc_quadratic": {
|
|
3
|
+
"cvWeights": {"cv1": 1},
|
|
4
|
+
"duWeights": {"mv1": 0.1},
|
|
5
|
+
"terminalWeight": 2,
|
|
6
|
+
"targets": {"cv1": 50}
|
|
7
|
+
}
|
|
8
|
+
}`}),K=n({workspaceId:``,channelId:``,agentInstanceId:``,profileId:``,profileVersion:1,mode:`recommendation`}),q=i(``),J=i(``),Y=i(``),Ze=ne(()=>U.value.length===0);function X(e){F.value=e,setTimeout(()=>{F.value=``},4e3)}function Z(e){P.value=e instanceof Error?e.message:String(e)}function Qe(){let e={...H};if(!e.nodeId.trim()){P.value=h(`optimizer.nodeRequired`);return}U.value.push(e),H.nodeId=``}function Q(){let e=[{id:W.conditionId||`default`,match:[{field:`recipeId`,op:`eq`,value:W.recipeId}]}],t=W.trainerRef===`linear_arx@1`?{ref:`linear_arx@1`,config:{arOrder:W.arOrder,inputOrder:W.inputOrder,ridgeLambda:W.ridgeLambda,standardize:!0}}:{ref:`static_response@1`,config:{order:W.order,ridgeLambda:W.ridgeLambda,standardize:!0}},n=W.trainerRef===`linear_arx@1`?{id:`linear_state_space`,version:1,inputSemantics:`setpoint`,mode:`state_space`}:{id:`static_response`,version:1,inputSemantics:`setpoint`,mode:`static`};return{schemaVersion:2,id:W.id,version:W.version,lineId:W.lineId,productId:W.productId,recipeId:W.recipeId,recipeVersion:W.recipeVersion,conditions:e,variables:U.value.map(e=>({id:e.id,nodeId:e.nodeId,role:e.role,field:`value`,unit:e.unit,scale:e.scale,offset:e.offset,...e.role===`mv`?{delayMs:e.delayMs,min:e.min,max:e.max,maxStep:e.maxStep}:{}})),timing:{beatMs:W.beatMs,historySteps:W.historySteps,horizonSteps:W.horizonSteps,fixedDt:!0},trainer:t,datasetPolicy:{...W.runIds.trim()?{runIds:W.runIds.split(`,`).map(e=>e.trim()).filter(Boolean)}:{},split:{valRatio:.2,testRatio:.2,seed:42},cleaning:{hampelK:5}},gatePolicyRef:`process-model.gates@1`,modelInterface:n,effectiveDomain:{mv:Object.fromEntries(U.value.filter(e=>e.role===`mv`).map(e=>[e.id,{min:e.min,max:e.max,...e.maxStep?{maxStep:e.maxStep}:{}}])),cv:Object.fromEntries(U.value.filter(e=>e.role===`cv`).map(e=>[e.id,{min:e.min,max:e.max}]))},purpose:W.purpose}}async function $e(){I.value=!0,P.value=``;try{let e=Q(),t=await _(`/specs`,{method:`POST`,body:e});X(h(`optimizer.specSaved`,{id:`${t.spec.id}@${t.spec.version}`})),await $()}catch(e){Z(e)}finally{I.value=!1}}async function et(){I.value=!0,P.value=``;try{let e=await _(`/datasets`,{method:`POST`,body:Q()});q.value=e.datasetId,X(h(`optimizer.datasetBuilt`,{id:e.datasetId,rows:e.rowCount}))}catch(e){Z(e)}finally{I.value=!1}}async function tt(){I.value=!0,P.value=``;try{if(!q.value)throw Error(h(`optimizer.datasetRequired`));let e=await _(`/train`,{method:`POST`,body:{spec:Q(),datasetId:q.value,modelName:`${W.id}@${W.version}`}});X(h(`optimizer.jobSubmitted`,{id:e.job.id}))}catch(e){Z(e)}finally{I.value=!1}}async function nt(){I.value=!0,P.value=``;try{if(!q.value)throw Error(h(`optimizer.datasetRequired`));let e=await _(`/eligibility`,{method:`POST`,body:{specId:W.id,specVersion:W.version,datasetId:q.value,scope:`simulation`}});V.value=e.report,X(h(`optimizer.eligibilityDone`))}catch(e){Z(e)}finally{I.value=!1}}async function rt(){I.value=!0,P.value=``;try{let e={schemaVersion:1,id:G.id,version:G.version,name:G.name||void 0,description:G.description||void 0,modelRef:{modelId:G.modelId,artifactKind:`linear_state_space@1`,artifactHash:``,modelInterface:`linear_state_space`,stage:`candidate`},problemTemplateRef:G.template,problemConfig:JSON.parse(G.configJson),solverRef:G.solver,solverVersion:`1`,processSpecRef:G.processSpecRef||`${W.id}@${W.version}`,conditionIds:[],status:`draft`};await g(`/optimization/profiles`,{method:`POST`,body:e}),X(h(`optimizer.profileSaved`)),await $()}catch(e){Z(e)}finally{I.value=!1}}async function it(e,t){I.value=!0,P.value=``;try{await g(`/optimization/profiles/${encodeURIComponent(e)}/publish?version=${t}`,{method:`POST`}),X(h(`optimizer.profilePublished`)),await $()}catch(e){Z(e)}finally{I.value=!1}}async function at(){I.value=!0,P.value=``;try{await g(`/optimization/bindings`,{method:`POST`,body:{...K}}),X(h(`optimizer.bindingCreated`)),await $()}catch(e){Z(e)}finally{I.value=!1}}async function ot(e){I.value=!0,P.value=``;try{await g(`/optimization/bindings/${encodeURIComponent(e)}`,{method:`DELETE`}),X(h(`optimizer.bindingRevoked`)),await $()}catch(e){Z(e)}finally{I.value=!1}}async function st(){I.value=!0,P.value=``;try{await g(`/optimization/solve`,{method:`POST`,body:{agentInstanceId:J.value,...Y.value?{bindingId:Y.value}:{}}}),X(h(`optimizer.solveDone`)),await $()}catch(e){Z(e)}finally{I.value=!1}}async function $(){try{let[e,t,n,r]=await Promise.all([_(`/specs`),g(`/optimization/profiles`),g(`/optimization/bindings`),g(`/optimization/runs`)]);L.value=e.specs,R.value=t.profiles,z.value=n.bindings,B.value=r.runs}catch(e){Z(e)}}return ee($),(n,i)=>(a(),c(`div`,oe,[s(`div`,se,[s(`p`,ce,r(e(h)(`optimizer.kicker`)),1),s(`h1`,null,r(e(h)(`menu.optimizer`)),1),s(`p`,le,r(e(h)(`optimizer.subtitle`)),1),s(`span`,ue,r(e(h)(`optimizer.recommendationOnly`)),1)]),P.value?(a(),c(`div`,de,r(P.value),1)):d(``,!0),F.value?(a(),c(`div`,fe,r(F.value),1)):d(``,!0),s(`nav`,pe,[(a(),c(l,null,o([`spec`,`eligibility`,`profile`,`binding`,`runs`],n=>s(`button`,{key:n,class:t([`pill-btn`,{active:N.value===n}]),onClick:e=>N.value=n},r(e(h)(`optimizer.tab.${n}`)),11,me)),64))]),N.value===`spec`?(a(),c(`section`,he,[s(`h2`,null,r(e(h)(`optimizer.spec.title`)),1),s(`div`,ge,[s(`label`,null,[f(r(e(h)(`optimizer.fields.line`)),1),u(s(`input`,{"onUpdate:modelValue":i[0]||=e=>W.lineId=e,placeholder:`ln-...`},null,512),[[m,W.lineId]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.product`)),1),u(s(`input`,{"onUpdate:modelValue":i[1]||=e=>W.productId=e,placeholder:`pd-...`},null,512),[[m,W.productId]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.recipe`)),1),u(s(`input`,{"onUpdate:modelValue":i[2]||=e=>W.recipeId=e,placeholder:`rc-...`},null,512),[[m,W.recipeId]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.recipeVersion`)),1),u(s(`input`,{"onUpdate:modelValue":i[3]||=e=>W.recipeVersion=e,type:`number`,min:`0`},null,512),[[m,W.recipeVersion,void 0,{number:!0}]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.beat`)),1),u(s(`input`,{"onUpdate:modelValue":i[4]||=e=>W.beatMs=e,type:`number`,min:`1000`,step:`1000`},null,512),[[m,W.beatMs,void 0,{number:!0}]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.history`)),1),u(s(`input`,{"onUpdate:modelValue":i[5]||=e=>W.historySteps=e,type:`number`,min:`1`},null,512),[[m,W.historySteps,void 0,{number:!0}]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.horizon`)),1),u(s(`input`,{"onUpdate:modelValue":i[6]||=e=>W.horizonSteps=e,type:`number`,min:`1`},null,512),[[m,W.horizonSteps,void 0,{number:!0}]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.trainer`))+` `,1),u(s(`select`,{"onUpdate:modelValue":i[7]||=e=>W.trainerRef=e},[...i[39]||=[s(`option`,{value:`linear_arx@1`},`linear_arx@1`,-1),s(`option`,{value:`static_response@1`},`static_response@1`,-1)]],512),[[p,W.trainerRef]])]),W.trainerRef===`linear_arx@1`?(a(),c(`label`,_e,[f(r(e(h)(`optimizer.fields.arOrder`)),1),u(s(`input`,{"onUpdate:modelValue":i[8]||=e=>W.arOrder=e,type:`number`,min:`1`},null,512),[[m,W.arOrder,void 0,{number:!0}]])])):d(``,!0),W.trainerRef===`linear_arx@1`?(a(),c(`label`,ve,[f(r(e(h)(`optimizer.fields.inputOrder`)),1),u(s(`input`,{"onUpdate:modelValue":i[9]||=e=>W.inputOrder=e,type:`number`,min:`1`},null,512),[[m,W.inputOrder,void 0,{number:!0}]])])):(a(),c(`label`,ye,[f(r(e(h)(`optimizer.fields.order`)),1),u(s(`select`,{"onUpdate:modelValue":i[10]||=e=>W.order=e},[...i[40]||=[s(`option`,{value:1},`1`,-1),s(`option`,{value:2},`2`,-1)]],512),[[p,W.order,void 0,{number:!0}]])])),s(`label`,null,[f(r(e(h)(`optimizer.fields.runIds`)),1),u(s(`input`,{"onUpdate:modelValue":i[11]||=e=>W.runIds=e,placeholder:`rr-...,rr-...`},null,512),[[m,W.runIds]])])]),s(`h3`,null,r(e(h)(`optimizer.spec.variables`)),1),s(`p`,be,r(e(h)(`optimizer.spec.modelUnitsHint`)),1),s(`div`,xe,[s(`label`,null,[f(r(e(h)(`optimizer.fields.varId`)),1),u(s(`input`,{"onUpdate:modelValue":i[12]||=e=>H.id=e},null,512),[[m,H.id]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.nodeId`)),1),u(s(`input`,{"onUpdate:modelValue":i[13]||=e=>H.nodeId=e,placeholder:`node-...`},null,512),[[m,H.nodeId]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.role`)),1),u(s(`select`,{"onUpdate:modelValue":i[14]||=e=>H.role=e},[...i[41]||=[s(`option`,{value:`mv`},`mv`,-1),s(`option`,{value:`cv`},`cv`,-1),s(`option`,{value:`md`},`md`,-1),s(`option`,{value:`feature`},`feature`,-1)]],512),[[p,H.role]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.unit`)),1),u(s(`input`,{"onUpdate:modelValue":i[15]||=e=>H.unit=e,placeholder:`μm / ℃ / bar`},null,512),[[m,H.unit]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.scale`)),1),u(s(`input`,{"onUpdate:modelValue":i[16]||=e=>H.scale=e,type:`number`,step:`any`},null,512),[[m,H.scale,void 0,{number:!0}]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.offset`)),1),u(s(`input`,{"onUpdate:modelValue":i[17]||=e=>H.offset=e,type:`number`,step:`any`},null,512),[[m,H.offset,void 0,{number:!0}]])]),H.role===`mv`?(a(),c(`label`,Se,[f(r(e(h)(`optimizer.fields.delayMs`)),1),u(s(`input`,{"onUpdate:modelValue":i[18]||=e=>H.delayMs=e,type:`number`,min:`0`},null,512),[[m,H.delayMs,void 0,{number:!0}]])])):d(``,!0),s(`label`,null,[f(r(e(h)(`optimizer.fields.min`)),1),u(s(`input`,{"onUpdate:modelValue":i[19]||=e=>H.min=e,type:`number`,step:`any`},null,512),[[m,H.min,void 0,{number:!0}]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.max`)),1),u(s(`input`,{"onUpdate:modelValue":i[20]||=e=>H.max=e,type:`number`,step:`any`},null,512),[[m,H.max,void 0,{number:!0}]])]),H.role===`mv`?(a(),c(`label`,v,[f(r(e(h)(`optimizer.fields.maxStep`)),1),u(s(`input`,{"onUpdate:modelValue":i[21]||=e=>H.maxStep=e,type:`number`,step:`any`},null,512),[[m,H.maxStep,void 0,{number:!0}]])])):d(``,!0),s(`button`,{class:`ghost-btn`,onClick:Qe},r(e(h)(`optimizer.spec.addVariable`)),1)]),s(`table`,y,[i[42]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`id`),s(`th`,null,`node`),s(`th`,null,`role`),s(`th`,null,`unit`),s(`th`,null,`delay`),s(`th`,null,`range`),s(`th`)])],-1),s(`tbody`,null,[(a(!0),c(l,null,o(U.value,(t,n)=>(a(),c(`tr`,{key:`${t.id}-${n}`},[s(`td`,null,r(t.id),1),s(`td`,null,r(t.nodeId),1),s(`td`,null,r(t.role),1),s(`td`,null,r(t.unit),1),s(`td`,null,r(t.role===`mv`?`${t.delayMs}ms`:`—`),1),s(`td`,null,r(t.min)+` … `+r(t.max),1),s(`td`,null,[s(`button`,{class:`mini-btn`,onClick:e=>U.value.splice(n,1)},r(e(h)(`optimizer.remove`)),9,b)])]))),128))])]),Ze.value?(a(),c(`p`,x,r(e(h)(`optimizer.spec.needVariables`)),1)):d(``,!0),s(`div`,S,[s(`button`,{class:`pill-btn`,disabled:I.value,onClick:$e},r(e(h)(`optimizer.spec.save`)),9,C),s(`button`,{class:`pill-btn`,disabled:I.value,onClick:et},r(e(h)(`optimizer.spec.buildDataset`)),9,w),s(`button`,{class:`pill-btn`,disabled:I.value,onClick:tt},r(e(h)(`optimizer.spec.train`)),9,T)]),s(`p`,E,r(e(h)(`optimizer.currentDataset`))+`: `+r(q.value||`—`),1),s(`ul`,D,[(a(!0),c(l,null,o(L.value,e=>(a(),c(`li`,{key:`${e.id}@${e.version}`},[s(`code`,null,r(e.id)+`@`+r(e.version),1),f(` · `+r(e.status)+` · `+r(e.lineId)+` / `+r(e.recipeId)+` `,1),s(`span`,O,r(e.contentHash?.slice(0,10)),1)]))),128))])])):d(``,!0),N.value===`eligibility`?(a(),c(`section`,k,[s(`h2`,null,r(e(h)(`optimizer.eligibility.title`)),1),s(`div`,A,[s(`button`,{class:`pill-btn`,disabled:I.value,onClick:nt},r(e(h)(`optimizer.eligibility.evaluate`)),9,j)]),V.value?(a(),c(l,{key:0},[s(`p`,null,[s(`strong`,null,r(V.value.optimizationEligible?e(h)(`optimizer.eligibility.yes`):e(h)(`optimizer.eligibility.no`)),1),f(` · scope=`+r(V.value.scope)+` · `+r(V.value.evidenceVersion),1)]),s(`ul`,Ce,[(a(!0),c(l,null,o(V.value.gaps||[],(e,t)=>(a(),c(`li`,{key:t,class:`gap`},[s(`code`,null,r(e.code),1),f(` `+r(e.message),1)]))),128))]),s(`pre`,we,r(JSON.stringify(V.value.metrics,null,2)),1)],64)):(a(),c(`p`,Te,r(e(h)(`optimizer.eligibility.empty`)),1))])):d(``,!0),N.value===`profile`?(a(),c(`section`,Ee,[s(`h2`,null,r(e(h)(`optimizer.profile.title`)),1),s(`div`,De,[s(`label`,null,[i[43]||=f(`id`,-1),u(s(`input`,{"onUpdate:modelValue":i[22]||=e=>G.id=e},null,512),[[m,G.id]])]),s(`label`,null,[i[44]||=f(`version`,-1),u(s(`input`,{"onUpdate:modelValue":i[23]||=e=>G.version=e,type:`number`,min:`1`},null,512),[[m,G.version,void 0,{number:!0}]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.name`)),1),u(s(`input`,{"onUpdate:modelValue":i[24]||=e=>G.name=e,placeholder:`膜厚闭环-MPC 配置`},null,512),[[m,G.name]])]),s(`label`,Oe,[f(r(e(h)(`optimizer.fields.description`)),1),u(s(`input`,{"onUpdate:modelValue":i[25]||=e=>G.description=e,placeholder:`这个求解配置代表什么工况/目标/约束(用户与 Agent 都看这段)`},null,512),[[m,G.description]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.model`)),1),u(s(`input`,{"onUpdate:modelValue":i[26]||=e=>G.modelId=e,placeholder:`mdl-...`},null,512),[[m,G.modelId]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.template`)),1),u(s(`select`,{"onUpdate:modelValue":i[27]||=e=>G.template=e},[...i[45]||=[s(`option`,{value:`linear_mpc_quadratic@1`},`linear_mpc_quadratic@1`,-1),s(`option`,{value:`steady_response@1`},`steady_response@1`,-1)]],512),[[p,G.template]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.solver`)),1),u(s(`select`,{"onUpdate:modelValue":i[28]||=e=>G.solver=e},[...i[46]||=[s(`option`,{value:`osqp_mpc@1`},`osqp_mpc@1`,-1),s(`option`,{value:`scipy_slsqp@1`},`scipy_slsqp@1`,-1)]],512),[[p,G.solver]])]),s(`label`,null,[i[47]||=f(`processSpecRef`,-1),u(s(`input`,{"onUpdate:modelValue":i[29]||=e=>G.processSpecRef=e,placeholder:`pms@1`},null,512),[[m,G.processSpecRef]])])]),s(`label`,ke,[f(r(e(h)(`optimizer.profile.config`)),1),u(s(`textarea`,{"onUpdate:modelValue":i[30]||=e=>G.configJson=e,rows:`10`},null,512),[[m,G.configJson]])]),s(`p`,Ae,r(e(h)(`optimizer.profile.configHint`)),1),s(`div`,je,[s(`button`,{class:`pill-btn`,disabled:I.value,onClick:rt},r(e(h)(`optimizer.profile.save`)),9,Me)]),s(`table`,Ne,[s(`thead`,null,[s(`tr`,null,[i[48]||=s(`th`,null,`profile`,-1),s(`th`,null,r(e(h)(`optimizer.fields.name`)),1),s(`th`,null,r(e(h)(`optimizer.fields.description`)),1),i[49]||=s(`th`,null,`status`,-1),i[50]||=s(`th`,null,`model`,-1),i[51]||=s(`th`,null,`solver`,-1),i[52]||=s(`th`,null,null,-1)])]),s(`tbody`,null,[(a(!0),c(l,null,o(R.value,t=>(a(),c(`tr`,{key:`${t.id}@${t.version}`},[s(`td`,null,r(t.id)+`@`+r(t.version),1),s(`td`,null,r(t.profile?.name||t.name||`--`),1),s(`td`,Pe,r(t.profile?.description||t.description||`--`),1),s(`td`,null,r(t.status),1),s(`td`,null,r(t.modelRef),1),s(`td`,null,r(t.solverRef),1),s(`td`,null,[t.status===`published`?d(``,!0):(a(),c(`button`,{key:0,class:`mini-btn`,onClick:e=>it(t.id,t.version)},r(e(h)(`optimizer.publish`)),9,Fe))])]))),128))])])])):d(``,!0),N.value===`binding`?(a(),c(`section`,Ie,[s(`h2`,null,r(e(h)(`optimizer.binding.title`)),1),s(`div`,Le,[s(`label`,null,[i[53]||=f(`workspaceId`,-1),u(s(`input`,{"onUpdate:modelValue":i[31]||=e=>K.workspaceId=e},null,512),[[m,K.workspaceId]])]),s(`label`,null,[i[54]||=f(`channelId`,-1),u(s(`input`,{"onUpdate:modelValue":i[32]||=e=>K.channelId=e},null,512),[[m,K.channelId]])]),s(`label`,null,[f(r(e(h)(`optimizer.fields.agentInstance`)),1),u(s(`input`,{"onUpdate:modelValue":i[33]||=e=>K.agentInstanceId=e,placeholder:`channel_agents.id`},null,512),[[m,K.agentInstanceId]])]),s(`label`,null,[i[55]||=f(`profileId`,-1),u(s(`input`,{"onUpdate:modelValue":i[34]||=e=>K.profileId=e},null,512),[[m,K.profileId]])]),s(`label`,null,[i[56]||=f(`profileVersion`,-1),u(s(`input`,{"onUpdate:modelValue":i[35]||=e=>K.profileVersion=e,type:`number`,min:`1`},null,512),[[m,K.profileVersion,void 0,{number:!0}]])]),s(`label`,null,[i[58]||=f(`mode`,-1),u(s(`select`,{"onUpdate:modelValue":i[36]||=e=>K.mode=e},[...i[57]||=[s(`option`,{value:`recommendation`},`recommendation`,-1),s(`option`,{value:`shadow`},`shadow`,-1)]],512),[[p,K.mode]])])]),s(`p`,Re,r(e(h)(`optimizer.binding.identityHint`)),1),s(`div`,ze,[s(`button`,{class:`pill-btn`,disabled:I.value,onClick:at},r(e(h)(`optimizer.binding.create`)),9,Be)]),s(`table`,M,[i[59]||=s(`thead`,null,[s(`tr`,null,[s(`th`,null,`id`),s(`th`,null,`channel`),s(`th`,null,`agent`),s(`th`,null,`profile`),s(`th`,null,`mode`),s(`th`,null,`rev`),s(`th`)])],-1),s(`tbody`,null,[(a(!0),c(l,null,o(z.value,t=>(a(),c(`tr`,{key:t.id},[s(`td`,Ve,r(t.id),1),s(`td`,null,r(t.channelId),1),s(`td`,null,r(t.channelAgentId),1),s(`td`,null,r(t.profileVersion),1),s(`td`,null,r(t.mode),1),s(`td`,null,r(t.revision),1),s(`td`,null,[s(`button`,{class:`mini-btn`,onClick:e=>ot(t.id)},r(e(h)(`optimizer.binding.revoke`)),9,He)])]))),128))])])])):d(``,!0),N.value===`runs`?(a(),c(`section`,Ue,[s(`h2`,null,r(e(h)(`optimizer.runs.title`)),1),s(`div`,We,[s(`label`,null,[f(r(e(h)(`optimizer.fields.agentInstance`)),1),u(s(`input`,{"onUpdate:modelValue":i[37]||=e=>J.value=e},null,512),[[m,J.value]])]),s(`label`,null,[f(`bindingId (`+r(e(h)(`optimizer.optional`))+`)`,1),u(s(`input`,{"onUpdate:modelValue":i[38]||=e=>Y.value=e},null,512),[[m,Y.value]])])]),s(`div`,Ge,[s(`button`,{class:`pill-btn`,disabled:I.value,onClick:st},r(e(h)(`optimizer.runs.solve`)),9,Ke)]),s(`table`,qe,[s(`thead`,null,[s(`tr`,null,[i[60]||=s(`th`,null,`run`,-1),i[61]||=s(`th`,null,`status`,-1),i[62]||=s(`th`,null,`profile`,-1),i[63]||=s(`th`,null,`IR hash`,-1),s(`th`,null,r(e(h)(`optimizer.runs.recommendation`)),1),i[64]||=s(`th`,null,`validUntil`,-1)])]),s(`tbody`,null,[(a(!0),c(l,null,o(B.value,e=>(a(),c(`tr`,{key:e.id},[s(`td`,Je,r(e.id),1),s(`td`,null,r(e.status),1),s(`td`,null,r(e.profileId),1),s(`td`,Ye,r(e.problemIrHash?.slice(0,10)),1),s(`td`,{class:t({unverified:e.recommendation?.status===`unverified`})},r(e.recommendation?.statusLabel??`—`),3),s(`td`,null,r(e.recommendation?.validUntil??`—`),1)]))),128))])]),s(`p`,Xe,r(e(h)(`optimizer.runs.zeroWrite`)),1)])):d(``,!0)]))}}),[[`__scopeId`,`data-v-ef998496`]]);export{N as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./DK3Fl9T5.js";import{g as t,v as n}from"./CavpkQb0.js";import{d as r}from"./C6lssmvl.js";import{n as i}from"./D1MkndMZ.js";import{t as a}from"./R5Pz7BqB.js";import{t as o}from"./WCG1-KXf2.js";var s=e({useDcwQuery:()=>c});function c(e){let{t:s}=i(),c=o(),{lineId:l}=e,u=t({productId:``,recipeId:``,paramKey:``,nodeId:``,lastMin:30,bucketMs:15e3}),d=n(null),f=n(!1),p=n(``);async function m(){f.value=!0,p.value=``,d.value=null;try{d.value=await c.queryLine({lineId:l.value,productId:u.productId||void 0,recipeId:u.recipeId||void 0,paramKey:u.paramKey||void 0,nodeId:u.nodeId||void 0,fromMs:Date.now()-u.lastMin*6e4,toMs:Date.now(),bucketMs:u.bucketMs>0?u.bucketMs:void 0,limit:2e3}),d.value.channels.length===0&&(p.value=s(`dcwDetail.kszv5sq136`))}catch(e){p.value=a(e)}finally{f.value=!1}}return{query:u,queryResult:d,queryBusy:f,queryError:p,doQuery:m,daqParamKeys:r(()=>c.templates.map(e=>e.key))}}export{s as n,c as t};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{N as e,dt as t,ft as n,g as r,mt as i,u as a,v as o}from"./CavpkQb0.js";import{$ as s,P as c,R as l,S as u,V as d,W as f,b as p,f as m,h,i as g,it as _,k as v,m as y,p as b,tt as x,y as S}from"./C6lssmvl.js";import{c as C,d as w,f as T,l as E}from"./ri9UF8rk.js";import{n as D}from"./Bko5adbu.js";import{n as ee}from"./D1MkndMZ.js";import{t as O}from"./CElzwyXQ.js";import{i as te}from"./DXgw1dVL.js";import{t as k}from"./BDNMzG2s.js";import{t as ne}from"./R5Pz7BqB.js";import{t as re}from"./DoL9u6wu.js";import{t as ie}from"./Cn6EojFe.js";import{t as ae}from"./B_Obcbiu.js";import{t as oe}from"./JegDslce.js";import{c as se,l as ce,u as A}from"./B6Olw0Op.js";import{t as le}from"./eePbiWEh.js";import{t as ue}from"./D7TZLu4F.js";import{t as j}from"./2v5GdspM.js";import{r as de,t as fe}from"./CnYazk8d.js";import{t as pe}from"./SvjzWbn8.js";import{t as me}from"./B6UwtJ1a.js";import{t as M}from"./CLFmtXU7.js";import{t as he}from"./CNs_Ozdc.js";import{t as ge}from"./CfIbFnJz.js";var _e={class:`aw-page-head`},ve={class:`sub`},N={class:`badges mono`},ye=[`title`],P=[`title`],be=Object.assign(k(u({__name:`AmlPageHeader`,props:{overview:{},env:{},pythonText:{},venvText:{},uvText:{}},setup(e){return(n,r)=>(d(),h(`div`,_e,[m(`div`,null,[r[0]||=m(`p`,{class:`aw-kicker`},` AGENTWORKSHOP / AML STUDIO `,-1),m(`h1`,null,i(n.$t(`aml.k1amlx001`)),1),m(`p`,ve,i(n.$t(`aml.k1amlx002`)),1)]),m(`div`,N,[m(`span`,{class:t([`badge`,{bad:e.overview!=null&&!e.overview.runtime.python.ok}]),title:e.overview?.runtime.python.reason??``},`PYTHON · `+i(e.pythonText),11,ye),m(`span`,{class:t([`badge`,{bad:e.overview!=null&&!e.overview.runtime.venvReady}])},`VENV · `+i(e.venvText),3),m(`span`,{class:t([`badge`,{bad:e.env!=null&&!e.env.uv.ok}]),title:e.env?.uv.reason??e.env?.uv.path??``},`UV · `+i(e.uvText),11,P)])]))}}),[[`__scopeId`,`data-v-826711fe`]]),{__name:`AmlPageHeader`}),xe={key:0,class:`infra-banner`},F={class:`txt`},Se={class:`mono`},Ce=Object.assign(k(u({__name:`AmlInfraBanner`,props:{overview:{}},setup(e){return(t,n)=>e.overview!=null&&!e.overview.runtime.python.ok?(d(),h(`div`,xe,[n[0]||=m(`span`,{class:`i-tabler-alert-triangle`},null,-1),m(`span`,F,[S(i(t.$t(`aml.k1amlx014`)),1),m(`b`,Se,i(e.overview.runtime.python.reason??``),1)])])):y(``,!0)}}),[[`__scopeId`,`data-v-7eaa5bb0`]]),{__name:`AmlInfraBanner`}),we={key:0,class:`aw-tile ov-card`},Te={class:`ov-row mono`},Ee={class:`ov-item`},I={class:`ov-item`},De={class:`ov-item`},Oe={class:`ov-item`},L=[`title`],R={key:1,class:`err`},ke=Object.assign(k(u({__name:`AmlOverviewBar`,props:{overview:{},overviewError:{},pythonText:{},venvText:{}},emits:[`reload`],setup(e){return(n,r)=>e.overview?(d(),h(`section`,we,[m(`div`,Te,[m(`span`,{class:t([`ov-item`,e.overview.runtime.python.ok?`ok`:`bad`])},[m(`span`,{class:t(e.overview.runtime.python.ok?`i-tabler-circle-check`:`i-tabler-alert-triangle`)},null,2),S(` `+i(n.$t(`aml.k1amlx003`))+` · `+i(e.pythonText),1)],2),m(`span`,{class:t([`ov-item`,{ok:e.overview.runtime.venvReady}])},i(n.$t(`aml.k1amlx006`))+` · `+i(e.venvText),3),m(`span`,Ee,[S(i(n.$t(`aml.k1amlx009`))+` `,1),m(`b`,null,i(e.overview.runtime.queued),1)]),m(`span`,I,[S(i(n.$t(`aml.k1amlx010`))+` `,1),m(`b`,null,i(e.overview.runtime.running),1)]),r[1]||=m(`span`,{class:`sep`},`·`,-1),m(`span`,De,[S(i(n.$t(`aml.k1amlx011`))+` `,1),m(`b`,null,i(e.overview.counts.datasets),1)]),m(`span`,Oe,[S(i(n.$t(`aml.k1amlx012`))+` `,1),m(`b`,null,i(e.overview.counts.models),1)]),m(`span`,{class:`ov-item accent`,title:n.$t(`aml.k1amlx013`)},[S(i(n.$t(`aml.k1amlx013`))+` `,1),m(`b`,null,i(e.overview.counts.productions),1)],8,L),m(`button`,{class:`mini-btn reload`,onClick:r[0]||=e=>n.$emit(`reload`)},i(n.$t(`aml.k1amlx017`)),1)])])):e.overviewError?(d(),h(`p`,R,i(n.$t(`aml.k1amlx015`))+`:`+i(e.overviewError),1)):y(``,!0)}}),[[`__scopeId`,`data-v-9a4afc27`]]),{__name:`AmlOverviewBar`}),z={class:`aw-tile zone env-zone`},B={class:`zone-head`},V={class:`zone-actions`},Ae=[`disabled`],je={key:0,class:`infra-banner`},H={class:`txt`},Me={class:`mono`},Ne={class:`env-grid`},U={class:`ec-head`},Pe={class:`ec-state`},W={key:0,class:`ec-detail mono`},G={key:1,class:`ec-detail`},K={class:`ec-actions`},q=[`disabled`,`title`],J={class:`ec-head`},Y={class:`ec-state`},X={class:`ec-detail mono`},Fe={class:`ec-actions`},Z=[`disabled`,`title`],Ie=[`disabled`],Q={class:`env-card`},$={class:`ec-head`},Le={class:`ec-detail mono`},Re={class:`ec-detail dim`},ze={class:`ec-detail`},Be={class:`mono`},Ve={class:`dim`},He={class:`ec-head`},Ue={key:0,class:`ec-state`},We={key:0,class:`ec-detail mono`},Ge={key:1,class:`ec-issues mono`},Ke=[`title`],qe={class:`tag`},Je={class:`ec-actions`},Ye={key:1,class:`env-task`},Xe={class:`et-head mono`},Ze={class:`dim`},Qe={key:0,class:`dim`},$e={class:`et-log mono`},et={key:0,class:`err`},tt=Object.assign(k(u({__name:`AmlEnvPanel`,props:{env:{},inventory:{},envBusy:{type:Boolean},uvText:{},uvSourceText:{},blockerText:{},rootSourceLabel:{}},emits:[`recheck`,`installUv`,`createVenv`,`prune`],setup(n){let r=o(!1),{shortId:a}=j();return(o,s)=>(d(),h(`section`,z,[m(`div`,B,[m(`h2`,null,i(o.$t(`aml.k1amlx162`)),1),m(`div`,V,[m(`button`,{class:`mini-btn`,disabled:n.envBusy,onClick:s[0]||=e=>o.$emit(`recheck`)},i(o.$t(`aml.k1amlx175`)),9,Ae),m(`button`,{class:`mini-btn`,onClick:s[1]||=e=>r.value=!r.value},i(r.value?o.$t(`aml.k1amlx181`):o.$t(`aml.k1amlx180`)),1)])]),n.env.preflight.canRunJobs?y(``,!0):(d(),h(`div`,je,[s[6]||=m(`span`,{class:`i-tabler-alert-triangle`},null,-1),m(`span`,H,[S(i(o.$t(`aml.k1amlx178`))+`:`,1),m(`b`,Me,i(n.blockerText),1)])])),m(`div`,Ne,[m(`div`,{class:t([`env-card`,n.env.uv.ok?`ok`:`bad`])},[m(`div`,U,[m(`span`,{class:t(n.env.uv.ok?`i-tabler-circle-check`:`i-tabler-alert-triangle`)},null,2),m(`b`,null,i(o.$t(`aml.k1amlx163`)),1),m(`span`,Pe,i(n.uvText),1)]),n.env.uv.ok?(d(),h(`p`,W,[S(i(n.env.uv.path),1),n.uvSourceText?(d(),h(g,{key:0},[S(` · `+i(n.uvSourceText),1)],64)):y(``,!0)])):(d(),h(`p`,G,i(o.$t(`aml.k1amlx177`)),1)),m(`div`,K,[n.env.uv.ok?y(``,!0):(d(),h(`button`,{key:0,class:`mini-btn primary`,disabled:n.envBusy,title:o.$t(`aml.k1amlx176`),onClick:s[2]||=e=>o.$emit(`installUv`)},[s[7]||=m(`span`,{class:`i-tabler-download`},null,-1),S(` `+i(n.env.task?.kind===`install-uv`&&n.env.task.status===`running`?o.$t(`aml.k1amlx167`):o.$t(`aml.k1amlx166`)),1)],8,q))])],2),m(`div`,{class:t([`env-card`,n.env.venv.ready?`ok`:`bad`])},[m(`div`,J,[m(`span`,{class:t(n.env.venv.ready?`i-tabler-circle-check`:`i-tabler-alert-triangle`)},null,2),m(`b`,null,i(o.$t(`aml.k1amlx168`)),1),m(`span`,Y,i(n.env.venv.ready?o.$t(`aml.k1amlx007`):o.$t(`aml.k1amlx008`)),1)]),m(`p`,X,[S(i(n.env.venv.dir)+` `,1),n.env.venv.ready?(d(),h(g,{key:0},[S(` · `+i(n.env.venv.sizeMb)+` MB `,1)],64)):y(``,!0)]),m(`div`,Fe,[m(`button`,{class:`mini-btn primary`,disabled:n.envBusy||!n.env.python.ok&&!n.env.uv.ok,title:n.env.python.ok?``:n.env.uv.ok?`系统无 Python —— 将由 uv 自动安装托管解释器并创建环境(uv 优先)`:n.env.python.reason??``,onClick:s[3]||=e=>o.$emit(`createVenv`,!1)},[s[8]||=m(`span`,{class:`i-tabler-plus`},null,-1),S(` `+i(n.env.task?.kind===`create-venv`&&n.env.task.status===`running`?o.$t(`aml.k1amlx170`):o.$t(`aml.k1amlx168`)),1)],8,Z),n.env.venv.ready?(d(),h(`button`,{key:0,class:`mini-btn`,disabled:n.envBusy,onClick:s[4]||=e=>o.$emit(`createVenv`,!0)},i(o.$t(`aml.k1amlx169`)),9,Ie)):y(``,!0)])],2),m(`div`,Q,[m(`div`,$,[s[9]||=m(`span`,{class:`i-tabler-folder`},null,-1),m(`b`,null,i(o.$t(`aml.k1amlx171`)),1)]),m(`p`,Le,i(n.env.amlRoot),1),m(`p`,Re,i(o.$t(`aml.k1amlx201`)),1),m(`p`,ze,[S(i(o.$t(`aml.k1amlx174`))+`: `,1),m(`b`,Be,i(n.env.disk.usedMb)+` / `+i(n.env.disk.quotaMb)+` MB`,1),m(`span`,Ve,` · `+i(n.rootSourceLabel),1)])]),m(`div`,{class:t([`env-card`,n.inventory==null?``:n.inventory.ok?`ok`:`bad`])},[m(`div`,He,[m(`span`,{class:t(n.inventory?.ok===!1?`i-tabler-alert-triangle`:`i-tabler-database`)},null,2),m(`b`,null,i(o.$t(`aml.k1amlx182`)),1),n.inventory?(d(),h(`span`,Ue,i(n.inventory.ok?o.$t(`aml.k1amlx183`):o.$t(`aml.k1amlx184`)),1)):y(``,!0)]),n.inventory?(d(),h(`p`,We,i(o.$t(`aml.k1amlx011`))+` `+i(n.inventory.counts.datasets)+`/`+i(n.inventory.entities.datasets)+` · `+i(o.$t(`aml.k1amlx010`))+` `+i(n.inventory.counts.jobs)+`/`+i(n.inventory.entities.jobs)+` · `+i(o.$t(`aml.k1amlx012`))+` `+i(n.inventory.counts.models)+`/`+i(n.inventory.entities.models),1)):y(``,!0),n.inventory&&n.inventory.issues.length>0?(d(),h(`ul`,Ge,[(d(!0),h(g,null,f(n.inventory.issues.slice(0,5),t=>(d(),h(`li`,{key:`${t.kind}:${t.id}:${t.problem}`,title:t.detail},[m(`span`,qe,i(t.problem===`entity_missing`?o.$t(`aml.k1amlx185`):t.problem===`orphan_dir`?o.$t(`aml.k1amlx186`):o.$t(`aml.k1amlx187`)),1),S(` `+i(t.kind)+` `+i(e(a)(t.id)),1)],8,Ke))),128))])):y(``,!0),m(`div`,Je,[n.inventory&&n.inventory.issues.some(e=>e.problem===`orphan_dir`)?(d(),h(`button`,{key:0,class:`mini-btn`,onClick:s[5]||=e=>o.$emit(`prune`)},[s[10]||=m(`span`,{class:`i-tabler-trash`},null,-1),S(` `+i(o.$t(`aml.k1amlx188`)),1)])):y(``,!0)])],2)]),n.env.task&&r.value?(d(),h(`div`,Ye,[m(`div`,Xe,[m(`span`,{class:t(n.env.task.status===`running`?`i-tabler-loader-2 spin`:n.env.task.status===`done`?`i-tabler-circle-check`:`i-tabler-alert-triangle`)},null,2),m(`b`,null,i(n.env.task.kind),1),m(`span`,Ze,i(n.env.task.status),1),n.env.task.status===`running`?(d(),h(`span`,Qe,`· `+i(o.$t(`aml.k1amlx179`)),1)):y(``,!0)]),m(`pre`,$e,i(n.env.task.log.slice(-40).join(`
|
|
2
|
+
`)),1),n.env.task.error?(d(),h(`p`,et,i(n.env.task.error),1)):y(``,!0)])):y(``,!0)]))}}),[[`__scopeId`,`data-v-f2c92c1d`]]),{__name:`AmlEnvPanel`}),nt={class:`aw-tile zone`},rt={class:`zone-head`},it={class:`mono cnt`},at={class:`zone-actions`},ot={key:0,class:`tbl-scroll`},st={class:`tbl tbl-datasets`},ct={class:`num`},lt={class:`num`},ut=[`onClick`],dt={class:`mono dim`},ft={class:`mono`},pt={class:`mono`},mt={class:`mono num`},ht={class:`mono num`},gt={key:0,class:`note-edit`},_t=[`placeholder`,`onKeyup`],vt=[`onClick`],yt={key:1,class:`note-text`},bt=[`title`],xt=[`title`,`onClick`],St=[`title`,`onClick`],Ct={key:0,class:`detail-row`},wt={colspan:`7`},Tt={key:0,class:`dim pad`},Et={key:1,class:`err pad`},Dt={key:2,class:`det-grid`},Ot={class:`det-title`},kt={class:`sub-tbl`},At={class:`num`},jt={class:`num`},Mt={class:`num`},Nt={class:`num`},Pt={class:`num`},Ft={class:`mono`},It={class:`role-chip`},Lt={class:`mono num`},Rt={class:`mono num`},zt={class:`mono num`},Bt={class:`mono num`},Vt={class:`mono num`},Ht={class:`det-title`},Ut={key:0,class:`sub-tbl`},Wt={class:`num`},Gt={class:`num`},Kt={class:`mono`},qt={class:`mono`},Jt={class:`mono num`},Yt={class:`mono num`},Xt={key:1,class:`dim`},Zt={class:`det-title`},Qt={class:`mono dim run-line`},$t={key:3,class:`dim pad`},en={key:1,class:`empty`},tn=Object.assign(k(u({__name:`AmlDatasetTable`,props:v({datasets:{},expandedDs:{},dsDetails:{},noteEditing:{}},{noteDraft:{required:!0},noteDraftModifiers:{}}),emits:v([`toggle`,`reload`,`create`,`editNote`,`saveNote`,`cancelNote`,`remove`],[`update:noteDraft`]),setup(n){let r=s(n,`noteDraft`),{fmtTime:a,fmtNum:o,fmtPct:c,shortId:l}=j();return(s,u)=>(d(),h(`section`,nt,[m(`div`,rt,[m(`h2`,null,[u[6]||=m(`span`,{class:`i-tabler-database`},null,-1),S(` `+i(s.$t(`aml.k1amlx016`))+` `,1),m(`b`,it,i(n.datasets.length),1)]),m(`div`,at,[m(`button`,{class:`mini-btn`,onClick:u[0]||=e=>s.$emit(`reload`)},i(s.$t(`aml.k1amlx017`)),1),m(`button`,{class:`pill-btn`,onClick:u[1]||=e=>s.$emit(`create`)},[u[7]||=m(`span`,{class:`i-tabler-plus`},null,-1),S(` `+i(s.$t(`aml.k1amlx018`)),1)])])]),n.datasets.length?(d(),h(`div`,ot,[m(`table`,st,[m(`thead`,null,[m(`tr`,null,[m(`th`,null,i(s.$t(`aml.k1amlx020`)),1),m(`th`,null,i(s.$t(`aml.k1amlx021`)),1),m(`th`,null,i(s.$t(`aml.k1amlx022`)),1),m(`th`,ct,i(s.$t(`aml.k1amlx023`)),1),m(`th`,lt,i(s.$t(`aml.k1amlx024`)),1),m(`th`,null,i(s.$t(`aml.k1amlx025`)),1),m(`th`,null,i(s.$t(`aml.k1amlx026`)),1)])]),m(`tbody`,null,[(d(!0),h(g,null,f(n.datasets,p=>(d(),h(g,{key:p.id},[m(`tr`,{class:t([`row-main`,{open:n.expandedDs===p.id}]),onClick:e=>s.$emit(`toggle`,p.id)},[m(`td`,dt,i(e(a)(p.createdAt)),1),m(`td`,ft,i(e(l)(p.productId)),1),m(`td`,pt,i(e(l)(p.recipeId)),1),m(`td`,mt,i(p.rowCount),1),m(`td`,ht,i(p.runIds.length),1),m(`td`,null,[S(i(p.createdBy),1),m(`small`,{class:t([`kind`,p.createdByKind])},i(p.createdByKind===`agent`?`Agent`:s.$t(`aml.k1amlx049`)),3)]),m(`td`,{class:`note-cell`,onClick:u[5]||=T(()=>{},[`stop`])},[n.noteEditing===p.id?(d(),h(`div`,gt,[_(m(`input`,{"onUpdate:modelValue":u[2]||=e=>r.value=e,placeholder:s.$t(`aml.k1amlx189`),onKeyup:[w(e=>s.$emit(`saveNote`,p.id),[`enter`]),u[3]||=w(e=>s.$emit(`cancelNote`),[`esc`])]},null,40,_t),[[E,r.value]]),m(`button`,{class:`mini-btn`,onClick:e=>s.$emit(`saveNote`,p.id)},i(s.$t(`aml.k1amlx191`)),9,vt),m(`button`,{class:`mini-btn`,onClick:u[4]||=e=>s.$emit(`cancelNote`)},i(s.$t(`aml.k1amlx202`)),1)])):(d(),h(`span`,yt,[m(`span`,{class:`note`,title:p.note},i(p.note||`--`),9,bt),m(`span`,{class:`i-tabler-pencil edit-i`,title:s.$t(`aml.k1amlx189`),onClick:e=>s.$emit(`editNote`,p.id,p.note)},null,8,xt),m(`span`,{class:`i-tabler-trash edit-i`,title:s.$t(`aml.k1amlx190`),onClick:e=>s.$emit(`remove`,p.id,s.$t(`aml.k1amlx198`))},null,8,St)]))])],10,ut),n.expandedDs===p.id?(d(),h(`tr`,Ct,[m(`td`,wt,[n.dsDetails[p.id]?.loading?(d(),h(`div`,Tt,i(s.$t(`aml.k1amlx030`)),1)):n.dsDetails[p.id]?.error?(d(),h(`div`,Et,i(s.$t(`aml.k1amlx031`))+`:`+i(n.dsDetails[p.id]?.error),1)):n.dsDetails[p.id]?.report?(d(),h(`div`,Dt,[m(`div`,null,[m(`p`,Ot,i(s.$t(`aml.k1amlx027`)),1),m(`table`,kt,[m(`thead`,null,[m(`tr`,null,[m(`th`,null,i(s.$t(`aml.k1amlx033`)),1),m(`th`,null,i(s.$t(`aml.k1amlx034`)),1),m(`th`,At,i(s.$t(`aml.k1amlx035`)),1),m(`th`,jt,i(s.$t(`aml.k1amlx036`)),1),m(`th`,Mt,i(s.$t(`aml.k1amlx037`)),1),m(`th`,Nt,i(s.$t(`aml.k1amlx038`)),1),m(`th`,Pt,i(s.$t(`aml.k1amlx039`)),1)])]),m(`tbody`,null,[(d(!0),h(g,null,f(n.dsDetails[p.id]?.report?.nodeSummaries,t=>(d(),h(`tr`,{key:t.nodeId},[m(`td`,Ft,i(t.nodeId),1),m(`td`,null,[m(`small`,It,i(t.role),1)]),m(`td`,Lt,i(e(c)(t.cleanedRatio)),1),m(`td`,Rt,i(e(c)(t.missingRatio)),1),m(`td`,zt,i(e(o)(t.mean,3)),1),m(`td`,Bt,i(e(o)(t.std,3)),1),m(`td`,Vt,i(e(o)(t.min,2))+`~`+i(e(o)(t.max,2)),1)]))),128))])])]),m(`div`,null,[m(`p`,Ht,i(s.$t(`aml.k1amlx028`)),1),n.dsDetails[p.id]?.report?.lagEstimates.length?(d(),h(`table`,Ut,[m(`thead`,null,[m(`tr`,null,[m(`th`,null,i(s.$t(`aml.k1amlx040`)),1),m(`th`,null,i(s.$t(`aml.k1amlx041`)),1),m(`th`,Wt,i(s.$t(`aml.k1amlx042`)),1),m(`th`,Gt,i(s.$t(`aml.k1amlx043`)),1)])]),m(`tbody`,null,[(d(!0),h(g,null,f(n.dsDetails[p.id]?.report?.lagEstimates,t=>(d(),h(`tr`,{key:`${t.controlId}->${t.targetId}`},[m(`td`,Kt,i(t.controlId),1),m(`td`,qt,i(t.targetId),1),m(`td`,Jt,i(t.lagSteps),1),m(`td`,Yt,i(e(o)(t.corr,3)),1)]))),128))])])):(d(),h(`p`,Xt,i(s.$t(`aml.k1amlx032`)),1)),m(`p`,Zt,i(s.$t(`aml.k1amlx029`)),1),m(`p`,Qt,[S(i(s.$t(`aml.k1amlx044`))+` `,1),m(`b`,null,i(n.dsDetails[p.id]?.report?.runsUsed.length??0),1),S(` · `+i(s.$t(`aml.k1amlx045`))+` `,1),m(`b`,null,i(n.dsDetails[p.id]?.report?.runsDropped.length??0),1),S(` · `+i(s.$t(`aml.k1amlx046`))+` `,1),m(`b`,null,i(n.dsDetails[p.id]?.report?.windowCount.train)+`/`+i(n.dsDetails[p.id]?.report?.windowCount.val)+`/`+i(n.dsDetails[p.id]?.report?.windowCount.test),1)]),(d(!0),h(g,null,f(n.dsDetails[p.id]?.report?.runsDropped,t=>(d(),h(`p`,{key:t.runId,class:`mono drop-line`},` ✗ `+i(e(l)(t.runId))+` — `+i(t.reason),1))),128))])])):(d(),h(`p`,$t,i(s.$t(`aml.k1amlx047`)),1))])])):y(``,!0)],64))),128))])])])):(d(),h(`p`,en,i(s.$t(`aml.k1amlx019`)),1))]))}}),[[`__scopeId`,`data-v-7702fce2`]]),{__name:`AmlDatasetTable`}),nn={class:`aw-tile zone`},rn={class:`zone-head`},an={class:`mono cnt`},on=[`title`],sn={key:0,class:`tbl-scroll`},cn={class:`tbl tbl-jobs`},ln={class:`prog-th`},un={class:`right`},dn=[`onClick`],fn={class:`mono`},pn={class:`mono dim`},mn={class:`mono dim`},hn={class:`mono dim`},gn={class:`prog-cell`},_n={class:`prog`},vn={class:`mono prog-num`},yn={class:`mono dim`},bn={class:`right acts`},xn=[`disabled`,`onClick`],Sn=[`disabled`,`onClick`],Cn=[`title`,`onClick`],wn={key:0,class:`detail-row`},Tn={colspan:`8`},En={key:0,class:`dim pad`},Dn={key:1,class:`err pad`},On={key:2,class:`det-grid`},kn={class:`det-title`},An={key:0,class:`sub-tbl`},jn={class:`num`},Mn={class:`num`},Nn={class:`mono gate-id`},Pn={class:`dim`},Fn={class:`mono num`},In={class:`mono num dim`},Ln={class:`dim gate-detail`},Rn={key:1,class:`dim`},zn={key:2,class:`mono dim gate-detail`},Bn={key:3,class:`err gate-detail`},Vn={class:`det-title`},Hn={key:0,class:`mono live-hint`},Un={class:`logs`},Wn={key:1,class:`empty`},Gn=Object.assign(k(u({__name:`AmlJobsTable`,props:{jobRows:{},expandedJob:{},jobDetails:{},confirmCancel:{},cancelling:{},confirmRetry:{},retrying:{}},emits:[`toggle`,`reload`,`cancel`,`retry`,`remove`],setup(r){let{fmtTime:a,fmtNum:o,shortId:s,statusLabel:c,isActiveStatus:l,canRetry:u}=j();return(p,_)=>(d(),h(`section`,nn,[m(`div`,rn,[m(`h2`,null,[_[1]||=m(`span`,{class:`i-tabler-brain`},null,-1),S(` `+i(p.$t(`aml.k1amlx074`))+` `,1),m(`b`,an,i(r.jobRows.length),1),r.jobRows.some(t=>e(l)(t.status))?(d(),h(`span`,{key:0,class:`live-dot`,title:p.$t(`aml.k1amlx091`)},null,8,on)):y(``,!0)]),m(`button`,{class:`mini-btn`,onClick:_[0]||=e=>p.$emit(`reload`)},i(p.$t(`aml.k1amlx017`)),1)]),r.jobRows.length?(d(),h(`div`,sn,[m(`table`,cn,[m(`thead`,null,[m(`tr`,null,[m(`th`,null,i(p.$t(`aml.k1amlx076`)),1),m(`th`,null,i(p.$t(`aml.k1amlx011`)),1),m(`th`,null,i(p.$t(`aml.k1amlx066`)),1),m(`th`,null,i(p.$t(`aml.k1amlx077`)),1),m(`th`,null,i(p.$t(`aml.k1amlx078`)),1),m(`th`,ln,i(p.$t(`aml.k1amlx079`)),1),m(`th`,null,i(p.$t(`aml.k1amlx020`)),1),m(`th`,un,i(p.$t(`aml.k1amlx127`)),1)])]),m(`tbody`,null,[(d(!0),h(g,null,f(r.jobRows,_=>(d(),h(g,{key:_.id},[m(`tr`,{class:t([`row-main`,{open:r.expandedJob===_.id}]),onClick:e=>p.$emit(`toggle`,_.id)},[m(`td`,fn,i(e(s)(_.id)),1),m(`td`,pn,i(e(s)(_.datasetId)),1),m(`td`,mn,i(_.purpose),1),m(`td`,null,[m(`span`,{class:t([`st-pill`,_.status])},i(e(c)(_.status)),3)]),m(`td`,hn,i(_.stage||`--`),1),m(`td`,gn,[m(`span`,_n,[m(`i`,{style:n({width:`${Math.max(0,Math.min(100,_.progress))}%`}),class:t({done:_.status===`done`,bad:_.status===`failed`})},null,6)]),m(`span`,vn,i(Math.round(_.progress))+`%`,1)]),m(`td`,yn,i(e(a)(_.createdAt)),1),m(`td`,bn,[e(l)(_.status)?(d(),h(`button`,{key:0,class:`mini-btn danger`,disabled:r.cancelling===_.id,onClick:T(e=>p.$emit(`cancel`,_.id),[`stop`])},i(r.confirmCancel===_.id?p.$t(`aml.k1amlx094`):r.cancelling===_.id?p.$t(`aml.k1amlx093`):p.$t(`aml.k1amlx071`)),9,xn)):y(``,!0),e(u)(_.status)?(d(),h(`button`,{key:1,class:`mini-btn`,disabled:r.retrying===_.id,onClick:T(e=>p.$emit(`retry`,_.id),[`stop`])},i(r.confirmRetry===_.id?p.$t(`aml.k1amlx096`):p.$t(`aml.k1amlx095`)),9,Sn)):y(``,!0),e(l)(_.status)?y(``,!0):(d(),h(`span`,{key:2,class:`i-tabler-trash edit-i`,title:p.$t(`aml.k1amlx190`),onClick:T(e=>p.$emit(`remove`,_.id,p.$t(`aml.k1amlx200`)),[`stop`])},null,8,Cn))])],10,dn),r.expandedJob===_.id?(d(),h(`tr`,wn,[m(`td`,Tn,[r.jobDetails[_.id]?.loading?(d(),h(`div`,En,i(p.$t(`aml.k1amlx030`)),1)):r.jobDetails[_.id]?.error?(d(),h(`div`,Dn,i(r.jobDetails[_.id]?.error),1)):(d(),h(`div`,On,[m(`div`,null,[m(`p`,kn,i(p.$t(`aml.k1amlx083`)),1),r.jobDetails[_.id]?.gates?.checks.length?(d(),h(`table`,An,[m(`thead`,null,[m(`tr`,null,[m(`th`,null,i(p.$t(`aml.k1amlx084`)),1),m(`th`,jn,i(p.$t(`aml.k1amlx085`)),1),m(`th`,Mn,i(p.$t(`aml.k1amlx086`)),1),m(`th`,null,i(p.$t(`aml.k1amlx118`)),1)])]),m(`tbody`,null,[(d(!0),h(g,null,f(r.jobDetails[_.id]?.gates?.checks,n=>(d(),h(`tr`,{key:n.id},[m(`td`,null,[m(`b`,Nn,i(n.id),1),m(`small`,Pn,i(n.name),1)]),m(`td`,Fn,i(e(o)(n.value)),1),m(`td`,In,i(e(o)(n.threshold)),1),m(`td`,null,[m(`span`,{class:t([`verdict`,n.pass?`pass`:`fail`])},i(n.pass?p.$t(`aml.k1amlx087`):p.$t(`aml.k1amlx088`)),3),m(`small`,Ln,i(n.detail),1)])]))),128))])])):(d(),h(`p`,Rn,i(p.$t(`aml.k1amlx082`)),1)),r.jobDetails[_.id]?.metrics?.oneStepTest?(d(),h(`p`,zn,[S(i(p.$t(`aml.k1amlx099`))+`: `+i(p.$t(`aml.k1amlx116`))+` `+i(e(o)(r.jobDetails[_.id]?.metrics?.oneStepTest?.nrmse))+` `,1),r.jobDetails[_.id]?.metrics?.rolloutTest?(d(),h(g,{key:0},[S(` · `+i(p.$t(`aml.k1amlx117`))+` `+i(e(o)(r.jobDetails[_.id]?.metrics?.rolloutTest?.nrmse)),1)],64)):y(``,!0)])):y(``,!0),_.error?(d(),h(`p`,Bn,i(p.$t(`aml.k1amlx092`))+`:`+i(_.error),1)):y(``,!0)]),m(`div`,null,[m(`p`,Vn,[S(i(p.$t(`aml.k1amlx089`))+` `,1),e(l)(_.status)?(d(),h(`span`,Hn,i(p.$t(`aml.k1amlx091`)),1)):y(``,!0)]),m(`pre`,Un,i((r.jobDetails[_.id]?.logs??[]).join(`
|
|
3
|
+
`)||p.$t(`aml.k1amlx090`)),1)])]))])])):y(``,!0)],64))),128))])])])):(d(),h(`p`,Wn,i(p.$t(`aml.k1amlx075`)),1))]))}}),[[`__scopeId`,`data-v-de392e34`]]),{__name:`AmlJobsTable`}),Kn={class:`aw-tile zone`},qn={class:`zone-head`},Jn={class:`mono cnt`},Yn={class:`zone-actions`},Xn={value:``},Zn=[`value`],Qn=[`disabled`],$n={key:0,class:`tbl-scroll`},er={class:`tbl tbl-exp`},tr=[`title`],nr=[`title`],rr={class:`mono`},ir={key:0,class:`best-tag`},ar={class:`mono dim`},or={class:`note-cell`},sr=[`title`],cr={class:`mono dim`},lr={class:`mono num`},ur={class:`mono num`},dr={key:1,class:`empty`},fr={key:2,class:`err pad`},pr=Object.assign(k(u({__name:`AmlExperimentsTable`,props:v({datasets:{},experiments:{},bestExpId:{},expError:{}},{expDatasetId:{required:!0},expDatasetIdModifiers:{}}),emits:v([`reload`],[`update:expDatasetId`]),setup(n){let r=s(n,`expDatasetId`),{fmtTime:a,fmtNum:o,shortId:c,expStatusLabel:l}=j();return(s,u)=>(d(),h(`section`,Kn,[m(`div`,qn,[m(`h2`,null,[u[3]||=m(`span`,{class:`i-tabler-trophy`},null,-1),S(` `+i(s.$t(`aml.k1amlx109`))+` `,1),m(`b`,Jn,i(n.experiments.length),1)]),m(`div`,Yn,[_(m(`select`,{"onUpdate:modelValue":u[0]||=e=>r.value=e,class:`inp-sel`,onChange:u[1]||=e=>s.$emit(`reload`)},[m(`option`,Xn,i(s.$t(`aml.k1amlx111`)),1),(d(!0),h(g,null,f(n.datasets,t=>(d(),h(`option`,{key:t.id,value:t.id},i(e(c)(t.id))+` · `+i(e(c)(t.recipeId)),9,Zn))),128))],544),[[C,r.value]]),m(`button`,{class:`mini-btn`,disabled:!r.value,onClick:u[2]||=e=>s.$emit(`reload`)},i(s.$t(`aml.k1amlx017`)),9,Qn)])]),n.experiments.length?(d(),h(`div`,$n,[m(`table`,er,[m(`thead`,null,[m(`tr`,null,[m(`th`,null,i(s.$t(`aml.k1amlx113`)),1),m(`th`,null,i(s.$t(`aml.k1amlx020`)),1),m(`th`,null,i(s.$t(`aml.k1amlx114`)),1),m(`th`,null,i(s.$t(`aml.k1amlx115`)),1),m(`th`,{class:`num`,title:s.$t(`aml.k1amlx121`)},i(s.$t(`aml.k1amlx116`)),9,tr),m(`th`,{class:`num`,title:s.$t(`aml.k1amlx122`)},i(s.$t(`aml.k1amlx117`)),9,nr),m(`th`,null,i(s.$t(`aml.k1amlx118`)),1)])]),m(`tbody`,null,[(d(!0),h(g,null,f(n.experiments,r=>(d(),h(`tr`,{key:r.id,class:t({best:r.id===n.bestExpId})},[m(`td`,rr,[r.id===n.bestExpId?(d(),h(`span`,ir,i(s.$t(`aml.k1amlx120`)),1)):y(``,!0),S(` `+i(e(c)(r.id)),1)]),m(`td`,ar,i(e(a)(r.createdAt)),1),m(`td`,or,[m(`span`,{class:`note`,title:r.changeNote},i(r.changeNote||`--`),9,sr)]),m(`td`,cr,i(r.parentExperimentId?e(c)(r.parentExperimentId):`--`),1),m(`td`,lr,i(e(o)(r.metrics?.oneStepTest?.nrmse)),1),m(`td`,ur,i(e(o)(r.metrics?.rolloutTest?.nrmse)),1),m(`td`,null,[m(`span`,{class:t([`st-pill`,r.status])},i(e(l)(r.status)),3)])],2))),128))])])])):(d(),h(`p`,dr,i(r.value?s.$t(`aml.k1amlx112`):s.$t(`aml.k1amlx110`)),1)),n.expError?(d(),h(`p`,fr,i(n.expError),1)):y(``,!0)]))}}),[[`__scopeId`,`data-v-56917d4e`]]),{__name:`AmlExperimentsTable`}),mr={class:`aw-tile zone`},hr={class:`zone-head`},gr={class:`mono cnt`},_r={key:0,class:`tbl-scroll`},vr={class:`tbl tbl-models`},yr=[`title`],br={class:`right`},xr={class:`mono`},Sr=[`title`],Cr={class:`label-text`},wr=[`title`],Tr={class:`mono dim`},Er={class:`mono dim`},Dr={class:`mono dim`},Or={class:`mono dim`},kr={key:0,class:`note-edit`},Ar=[`placeholder`,`onKeyup`],jr=[`onClick`],Mr={key:1,class:`note-text`},Nr=[`title`],Pr=[`title`,`onClick`],Fr={class:`right acts`},Ir=[`disabled`,`onClick`],Lr={key:0,class:`dim`},Rr=[`title`,`onClick`],zr={key:1,class:`empty`},Br=Object.assign(k(u({__name:`AmlModelsTable`,props:v({models:{},noteEditing:{},confirmPromote:{},promoting:{}},{noteDraft:{required:!0},noteDraftModifiers:{}}),emits:v([`reload`,`editNote`,`saveNote`,`cancelNote`,`promote`,`remove`],[`update:noteDraft`]),setup(n){let r=s(n,`noteDraft`),{fmtTime:a,fmtNum:o,shortId:c}=j();return(s,l)=>(d(),h(`section`,mr,[m(`div`,hr,[m(`h2`,null,[l[5]||=m(`span`,{class:`i-tabler-cube-3d-sphere`},null,-1),S(` `+i(s.$t(`aml.k1amlx123`))+` `,1),m(`b`,gr,i(n.models.length),1)]),m(`button`,{class:`mini-btn`,onClick:l[0]||=e=>s.$emit(`reload`)},i(s.$t(`aml.k1amlx017`)),1)]),n.models.length?(d(),h(`div`,_r,[m(`table`,vr,[m(`thead`,null,[m(`tr`,null,[m(`th`,null,i(s.$t(`aml.k1amlx125`)),1),m(`th`,null,i(s.$t(`aml.k1amlx204`)),1),m(`th`,null,i(s.$t(`aml.k1amlx021`)),1),m(`th`,null,i(s.$t(`aml.k1amlx022`)),1),m(`th`,null,i(s.$t(`aml.k1amlx078`)),1),m(`th`,{title:s.$t(`aml.k1amlx126`)},i(s.$t(`aml.k1amlx099`)),9,yr),m(`th`,null,i(s.$t(`aml.k1amlx020`)),1),m(`th`,null,i(s.$t(`aml.k1amlx026`)),1),m(`th`,br,i(s.$t(`aml.k1amlx127`)),1)])]),m(`tbody`,null,[(d(!0),h(g,null,f(n.models,u=>(d(),h(`tr`,{key:u.id},[m(`td`,xr,i(e(c)(u.id)),1),m(`td`,{class:`label-cell`,title:u.description||u.label},[m(`span`,Cr,i(u.label||`--`),1),u.description?(d(),h(`span`,{key:0,class:`desc-text`,title:u.description},i(u.description),9,wr)):y(``,!0)],8,Sr),m(`td`,Tr,i(e(c)(u.productId)),1),m(`td`,Er,i(e(c)(u.recipeId)),1),m(`td`,null,[m(`span`,{class:t([`stage-pill`,u.stage])},i(u.stage),3)]),m(`td`,Dr,i(s.$t(`aml.k1amlx116`))+` `+i(e(o)(u.metrics?.oneStepTest?.nrmse))+` · `+i(s.$t(`aml.k1amlx117`))+` `+i(e(o)(u.metrics?.rolloutTest?.nrmse)),1),m(`td`,Or,i(e(a)(u.createdAt)),1),m(`td`,{class:`note-cell`,onClick:l[4]||=T(()=>{},[`stop`])},[n.noteEditing===u.id?(d(),h(`div`,kr,[_(m(`input`,{"onUpdate:modelValue":l[1]||=e=>r.value=e,placeholder:s.$t(`aml.k1amlx189`),onKeyup:[w(e=>s.$emit(`saveNote`,u.id),[`enter`]),l[2]||=w(e=>s.$emit(`cancelNote`),[`esc`])]},null,40,Ar),[[E,r.value]]),m(`button`,{class:`mini-btn`,onClick:e=>s.$emit(`saveNote`,u.id)},i(s.$t(`aml.k1amlx191`)),9,jr),m(`button`,{class:`mini-btn`,onClick:l[3]||=e=>s.$emit(`cancelNote`)},i(s.$t(`aml.k1amlx202`)),1)])):(d(),h(`span`,Mr,[m(`span`,{class:`note`,title:u.note},i(u.note||`--`),9,Nr),m(`span`,{class:`i-tabler-pencil edit-i`,title:s.$t(`aml.k1amlx189`),onClick:e=>s.$emit(`editNote`,u.id,u.note)},null,8,Pr)]))]),m(`td`,Fr,[(d(!0),h(g,null,f(e(A)(u),e=>(d(),h(`button`,{key:e.to,class:t([`mini-btn`,{danger:e.to===`retired`}]),disabled:n.promoting===`${u.id}:${e.to}`,onClick:t=>s.$emit(`promote`,u,e.to)},i(n.confirmPromote===`${u.id}:${e.to}`?s.$t(`aml.k1amlx131`):s.$t(e.key)),11,Ir))),128)),e(A)(u).length===0?(d(),h(`span`,Lr,`--`)):y(``,!0),m(`span`,{class:`i-tabler-trash edit-i`,title:s.$t(`aml.k1amlx190`),onClick:e=>s.$emit(`remove`,u.id,s.$t(`aml.k1amlx199`))},null,8,Rr)])]))),128))])])])):(d(),h(`p`,zr,i(s.$t(`aml.k1amlx124`)),1))]))}}),[[`__scopeId`,`data-v-cdf91f1d`]]),{__name:`AmlModelsTable`}),Vr={class:`aw-tile zone`},Hr={class:`zone-head`},Ur={value:``},Wr=[`value`],Gr={key:0,class:`pc-body`},Kr={class:`det-title`},qr={class:`io-grid mono`},Jr={class:`io-item`},Yr={class:`io-item`},Xr={class:`io-item`},Zr=[`title`],Qr=[`title`],$r=[`title`],ei={class:`pc-form`},ti={class:`pc-field`},ni=[`placeholder`],ri={class:`pc-side`},ii={class:`pc-field`},ai={class:`pc-field`},oi=[`disabled`],si={class:`hint dim`},ci={key:0,class:`err`},li={class:`det-title`},ui={class:`sub-tbl`},di={class:`num`},fi={class:`num`},pi={key:0,class:`dim`},mi={class:`mono num`},hi={class:`mono num dim`},gi={class:`mono dim gate-detail`},_i={key:1,class:`empty`},vi={key:1,class:`empty`},yi=Object.assign(k(u({__name:`AmlPredictConsole`,props:{models:{}},setup(t){let n=t,{productionModels:r,predModelId:o,predModel:s,predHistory:c,predControls:l,predSteps:u,predBusy:p,predError:v,predResult:b,onPullLatest:x,doPredict:w}=M(()=>n.models),{fmtNum:T,shortId:D}=j();return(t,n)=>(d(),h(`section`,Vr,[m(`div`,Hr,[m(`h2`,null,[n[6]||=m(`span`,{class:`i-tabler-chart-line`},null,-1),S(` `+i(t.$t(`aml.k1amlx133`)),1)]),e(r).length?_((d(),h(`select`,{key:0,"onUpdate:modelValue":n[0]||=e=>a(o)?o.value=e:null,class:`inp-sel`},[m(`option`,Ur,i(t.$t(`aml.k1amlx134`)),1),(d(!0),h(g,null,f(e(r),t=>(d(),h(`option`,{key:t.id,value:t.id},i(e(D)(t.id))+` · `+i(e(D)(t.recipeId)),9,Wr))),128))],512)),[[C,e(o)]]):y(``,!0)]),e(r).length?(d(),h(g,{key:0},[e(s)?.ioSpec?(d(),h(`div`,Gr,[m(`p`,Kr,i(t.$t(`aml.k1amlx136`)),1),m(`div`,qr,[m(`span`,Jr,[S(i(t.$t(`aml.k1amlx140`))+` `,1),m(`b`,null,i(e(s).ioSpec.historySteps),1)]),m(`span`,Yr,[S(i(t.$t(`aml.k1amlx141`))+` `,1),m(`b`,null,i(e(s).ioSpec.horizonSteps),1)]),m(`span`,Xr,[S(i(t.$t(`aml.k1amlx142`))+` `,1),m(`b`,null,i(e(s).ioSpec.beatMs)+`ms`,1)]),m(`span`,{class:`io-item`,title:e(s).ioSpec.allNodes.join(`, `)},[S(i(t.$t(`aml.k1amlx137`))+`(`+i(e(s).ioSpec.allNodes.length)+`) `,1),m(`b`,null,i(e(s).ioSpec.allNodes.map(t=>e(D)(t)).join(`, `)),1)],8,Zr),m(`span`,{class:`io-item`,title:e(s).ioSpec.controlNodes.join(`, `)},[S(i(t.$t(`aml.k1amlx138`))+` `,1),m(`b`,null,i(e(s).ioSpec.controlNodes.map(t=>e(D)(t)).join(`, `)),1)],8,Qr),m(`span`,{class:`io-item`,title:e(s).ioSpec.targetNodes.join(`, `)},[S(i(t.$t(`aml.k1amlx139`))+` `,1),m(`b`,null,i(e(s).ioSpec.targetNodes.map(t=>e(D)(t)).join(`, `)),1)],8,$r)]),m(`div`,ei,[m(`label`,ti,[m(`span`,null,i(t.$t(`aml.k1amlx143`)),1),_(m(`textarea`,{"onUpdate:modelValue":n[1]||=e=>a(c)?c.value=e:null,class:`inp area`,rows:`5`,placeholder:t.$t(`aml.k1amlx144`)},null,8,ni),[[E,e(c)]])]),m(`div`,ri,[m(`button`,{class:`ghost-btn`,onClick:n[2]||=(...t)=>e(x)&&e(x)(...t)},[n[7]||=m(`span`,{class:`i-tabler-download`},null,-1),S(` `+i(t.$t(`aml.k1amlx145`)),1)]),m(`label`,ii,[m(`span`,null,i(t.$t(`aml.k1amlx156`)),1),_(m(`textarea`,{"onUpdate:modelValue":n[3]||=e=>a(l)?l.value=e:null,class:`inp area`,rows:`3`,placeholder:`[[…]]`},null,512),[[E,e(l)]])]),m(`label`,ai,[m(`span`,null,i(t.$t(`aml.k1amlx147`)),1),_(m(`input`,{"onUpdate:modelValue":n[4]||=e=>a(u)?u.value=e:null,type:`number`,min:`1`,class:`inp`},null,512),[[E,e(u),void 0,{number:!0}]])]),m(`button`,{class:`pill-btn`,disabled:e(p)||!e(c).trim(),onClick:n[5]||=(...t)=>e(w)&&e(w)(...t)},i(e(p)?t.$t(`aml.k1amlx149`):t.$t(`aml.k1amlx148`)),9,oi)])]),m(`p`,si,i(t.$t(`aml.k1amlx146`)),1),e(v)?(d(),h(`p`,ci,i(e(v)),1)):y(``,!0),e(b)?(d(),h(g,{key:1},[m(`p`,li,i(t.$t(`aml.k1amlx150`)),1),m(`table`,ui,[m(`thead`,null,[m(`tr`,null,[m(`th`,di,i(t.$t(`aml.k1amlx151`)),1),m(`th`,fi,i(t.$t(`aml.k1amlx152`)),1),(d(!0),h(g,null,f(e(b).targetNodes,(n,r)=>(d(),h(`th`,{key:n,class:`num`},[S(i(e(D)(n)),1),r===0?(d(),h(`small`,pi,` (`+i(t.$t(`aml.k1amlx041`))+`)`,1)):y(``,!0)]))),128))])]),m(`tbody`,null,[(d(!0),h(g,null,f(e(b).forecast,(t,n)=>(d(),h(`tr`,{key:n},[m(`td`,mi,i(n+1),1),m(`td`,hi,i(e(T)((n+1)*e(b).beatMs/1e3,1)),1),(d(!0),h(g,null,f(t,(t,n)=>(d(),h(`td`,{key:n,class:`mono num`},i(e(T)(t,3)),1))),128))]))),128))])]),m(`p`,gi,i(t.$t(`aml.k1amlx155`))+`:`+i(e(b).assumptions),1)],64)):y(``,!0)])):(d(),h(`p`,_i,i(t.$t(`aml.k1amlx134`)),1))],64)):(d(),h(`p`,vi,i(t.$t(`aml.k1amlx135`)),1))]))}}),[[`__scopeId`,`data-v-f32229b5`]]),{__name:`AmlPredictConsole`}),bi={class:`modal`},xi={class:`m-title`},Si={class:`f-grid`},Ci={class:`f`},wi={class:`f`},Ti={class:`f`},Ei={class:`sec-label`},Di={class:`node-rows`},Oi=[`onUpdate:modelValue`,`placeholder`],ki=[`onUpdate:modelValue`],Ai={value:`control`},ji={value:`feature`},Mi={value:`target`},Ni=[`disabled`,`onClick`],Pi={class:`f-grid`},Fi={class:`f`},Ii={class:`f`},Li={class:`f`},Ri={class:`f`},zi={class:`f`},Bi={class:`f`},Vi={class:`f`},Hi={value:`mpc_surrogate`},Ui={value:`quality_predict`},Wi={class:`f wide`},Gi=[`placeholder`],Ki={key:0,class:`m-err`},qi={class:`m-actions`},Ji=[`disabled`],Yi=Object.assign(k(u({__name:`AmlDatasetFormModal`,props:{open:{type:Boolean,required:!0},openModifiers:{}},emits:v([`created`],[`update:open`]),setup(e,{emit:t}){let n=t,a=s(e,`open`),{t:c}=ee(),{shortId:l}=j(),u=o(!1),p=o(``),v=r({lineId:``,productId:``,recipeId:``,beatMs:5e3,historySteps:60,horizonSteps:30,valRatio:.15,testRatio:.15,seed:7,purpose:`mpc_surrogate`,note:``}),b=r([{nodeId:``,role:`control`},{nodeId:``,role:`target`}]);x(a,e=>{e&&(p.value=``)});function w(){b.push({nodeId:``,role:`feature`})}function D(e){b.splice(e,1)}async function O(){p.value=``;let e=b.filter(e=>e.nodeId.trim()).map(e=>({nodeId:e.nodeId.trim(),role:e.role}));if(!v.lineId.trim()||!v.productId.trim()||!v.recipeId.trim()){p.value=c(`aml.k1amlx161`);return}if(e.length<2||!e.some(e=>e.role===`target`)){p.value=c(`aml.k1amlx054`);return}u.value=!0;try{let t=await ie(`/datasets`,{method:`POST`,body:JSON.stringify({lineId:v.lineId.trim(),productId:v.productId.trim(),recipeId:v.recipeId.trim(),nodes:e,beatMs:Number(v.beatMs),window:{historySteps:Number(v.historySteps),horizonSteps:Number(v.horizonSteps)},split:{valRatio:Number(v.valRatio),testRatio:Number(v.testRatio),seed:Number(v.seed)},purpose:v.purpose,note:v.note.trim()||void 0})});te.success(c(`aml.k1amlx073`,{p0:l(t.dataset.id),p1:t.dataset.rowCount})),a.value=!1,n(`created`)}catch(e){p.value=ne(e)}finally{u.value=!1}}return(e,t)=>a.value?(d(),h(`div`,{key:0,class:`modal-mask`,onClick:t[12]||=T(e=>a.value=!1,[`self`])},[m(`div`,bi,[m(`h3`,xi,i(e.$t(`aml.k1amlx050`)),1),m(`div`,Si,[m(`label`,Ci,[m(`span`,null,[S(i(e.$t(`aml.k1amlx051`)),1),t[13]||=m(`em`,null,`*`,-1)]),_(m(`input`,{"onUpdate:modelValue":t[0]||=e=>v.lineId=e,class:`inp`,placeholder:`line-ov-01`},null,512),[[E,v.lineId]])]),m(`label`,wi,[m(`span`,null,[S(i(e.$t(`aml.k1amlx052`)),1),t[14]||=m(`em`,null,`*`,-1)]),_(m(`input`,{"onUpdate:modelValue":t[1]||=e=>v.productId=e,class:`inp`},null,512),[[E,v.productId]])]),m(`label`,Ti,[m(`span`,null,[S(i(e.$t(`aml.k1amlx053`)),1),t[15]||=m(`em`,null,`*`,-1)]),_(m(`input`,{"onUpdate:modelValue":t[2]||=e=>v.recipeId=e,class:`inp`},null,512),[[E,v.recipeId]])])]),m(`p`,Ei,i(e.$t(`aml.k1amlx054`)),1),m(`div`,Di,[(d(!0),h(g,null,f(b,(t,n)=>(d(),h(`div`,{key:n,class:`node-row`},[_(m(`input`,{"onUpdate:modelValue":e=>t.nodeId=e,class:`inp grow`,placeholder:e.$t(`aml.k1amlx056`)},null,8,Oi),[[E,t.nodeId]]),_(m(`select`,{"onUpdate:modelValue":e=>t.role=e,class:`inp sel`},[m(`option`,Ai,i(e.$t(`aml.k1amlx057`)),1),m(`option`,ji,i(e.$t(`aml.k1amlx058`)),1),m(`option`,Mi,i(e.$t(`aml.k1amlx059`)),1)],8,ki),[[C,t.role]]),m(`button`,{class:`mini-btn danger`,disabled:b.length<=1,onClick:e=>D(n)},` ✕ `,8,Ni)]))),128)),m(`button`,{class:`mini-btn`,onClick:w},[t[16]||=m(`span`,{class:`i-tabler-plus`},null,-1),S(` `+i(e.$t(`aml.k1amlx055`)),1)])]),m(`div`,Pi,[m(`label`,Fi,[m(`span`,null,i(e.$t(`aml.k1amlx060`)),1),_(m(`input`,{"onUpdate:modelValue":t[3]||=e=>v.beatMs=e,type:`number`,min:`1000`,step:`500`,class:`inp`},null,512),[[E,v.beatMs,void 0,{number:!0}]])]),m(`label`,Ii,[m(`span`,null,i(e.$t(`aml.k1amlx061`)),1),_(m(`input`,{"onUpdate:modelValue":t[4]||=e=>v.historySteps=e,type:`number`,min:`1`,class:`inp`},null,512),[[E,v.historySteps,void 0,{number:!0}]])]),m(`label`,Li,[m(`span`,null,i(e.$t(`aml.k1amlx062`)),1),_(m(`input`,{"onUpdate:modelValue":t[5]||=e=>v.horizonSteps=e,type:`number`,min:`1`,class:`inp`},null,512),[[E,v.horizonSteps,void 0,{number:!0}]])]),m(`label`,Ri,[m(`span`,null,i(e.$t(`aml.k1amlx063`)),1),_(m(`input`,{"onUpdate:modelValue":t[6]||=e=>v.valRatio=e,type:`number`,min:`0`,max:`0.8`,step:`0.05`,class:`inp`},null,512),[[E,v.valRatio,void 0,{number:!0}]])]),m(`label`,zi,[m(`span`,null,i(e.$t(`aml.k1amlx064`)),1),_(m(`input`,{"onUpdate:modelValue":t[7]||=e=>v.testRatio=e,type:`number`,min:`0`,max:`0.8`,step:`0.05`,class:`inp`},null,512),[[E,v.testRatio,void 0,{number:!0}]])]),m(`label`,Bi,[m(`span`,null,i(e.$t(`aml.k1amlx065`)),1),_(m(`input`,{"onUpdate:modelValue":t[8]||=e=>v.seed=e,type:`number`,class:`inp`},null,512),[[E,v.seed,void 0,{number:!0}]])]),m(`label`,Vi,[m(`span`,null,i(e.$t(`aml.k1amlx066`)),1),_(m(`select`,{"onUpdate:modelValue":t[9]||=e=>v.purpose=e,class:`inp`},[m(`option`,Hi,i(e.$t(`aml.k1amlx067`)),1),m(`option`,Ui,i(e.$t(`aml.k1amlx068`)),1)],512),[[C,v.purpose]])]),m(`label`,Wi,[m(`span`,null,i(e.$t(`aml.k1amlx026`)),1),_(m(`input`,{"onUpdate:modelValue":t[10]||=e=>v.note=e,class:`inp`,placeholder:e.$t(`aml.k1amlx069`)},null,8,Gi),[[E,v.note]])])]),p.value?(d(),h(`p`,Ki,i(p.value),1)):y(``,!0),m(`div`,qi,[m(`button`,{class:`ghost-btn`,onClick:t[11]||=e=>a.value=!1},i(e.$t(`aml.k1amlx071`)),1),m(`button`,{class:`pill-btn`,disabled:u.value,onClick:O},i(u.value?e.$t(`aml.k1amlx070`):e.$t(`aml.k1amlx072`)),9,Ji)])])])):y(``,!0)}}),[[`__scopeId`,`data-v-8e9b667b`]]),{__name:`AmlDatasetFormModal`}),Xi={class:`page`},Zi=k(u({__name:`index`,setup(t){let{t:n}=ee();he({layout:`default`}),D({title:()=>n(`aml.k1amlx160`)});let{overview:r,overviewError:i,env:s,envBusy:u,inventory:f,pythonText:m,venvText:g,uvText:_,uvSourceText:v,blockerText:S,rootSourceLabel:C,loadOverview:w,loadEnv:T,loadInventory:E,startEnvPoll:te,stopEnvPoll:k,installUv:ne,createVenv:ie,recheckEnv:A,pruneOrphans:j}=le(),{datasets:M,expandedDs:_e,dsDetails:ve,loadDatasets:N,toggleDs:ye}=ae(),{jobRows:P,jobDetails:xe,expandedJob:F,confirmCancel:Se,cancelling:we,confirmRetry:Te,retrying:Ee,loadJobs:I,toggleJob:De,refreshJobLogs:Oe,onCancelJob:L,onRetryJob:R}=fe(),{expDatasetId:z,experiments:B,expError:V,bestExpId:Ae,loadExperiments:je}=ue(),{models:H,confirmPromote:Me,promoting:Ne,loadModels:U,onPromote:Pe}=pe({reloadOverview:w}),{noteEditing:W,noteDraft:G,startEditNote:K,cancelEditNote:q,saveNote:J}=me({reloadDatasets:N,reloadModels:U}),{removeEntity:Y}=oe({reloadDatasets:N,reloadModels:U,reloadJobs:I,reloadOverview:w,reloadInventory:E}),X=o(!1);function Fe(){w(),T(),E(),N(),I(),U()}let Z=de(),Ie=re(),Q=null,$=null;return l(()=>{Ie.ensureConnected(),Q=Z.ensure(),w(),T(),E(),N(),I(),U(),(s.value?.task?.status??r.value?.env?.task?.status)===`running`&&(u.value=!0,te()),ge(()=>{w(),I()},8e3,{bgMs:3e4}),$=O(()=>{let e=F.value;if(!e||document.hidden)return;let t=P.value.find(t=>t.id===e);t&&se(t.status)&&Oe(e)},5e3)}),c(()=>{Q?.(),$&&clearInterval($),k()}),x(()=>Z.lastJob.value,e=>{e&&ce(e.status)&&I()}),x(()=>Z.lastModel.value,()=>{U()}),x(()=>Z.lastDataset.value,()=>{N()}),(t,n)=>(d(),h(`div`,Xi,[p(be,{overview:e(r),env:e(s),"python-text":e(m),"venv-text":e(g),"uv-text":e(_)},null,8,[`overview`,`env`,`python-text`,`venv-text`,`uv-text`]),p(Ce,{overview:e(r)},null,8,[`overview`]),p(ke,{overview:e(r),"overview-error":e(i),"python-text":e(m),"venv-text":e(g),onReload:Fe},null,8,[`overview`,`overview-error`,`python-text`,`venv-text`]),e(s)?(d(),b(tt,{key:0,env:e(s),inventory:e(f),"env-busy":e(u),"uv-text":e(_),"uv-source-text":e(v),"blocker-text":e(S),"root-source-label":e(C),onRecheck:e(A),onInstallUv:e(ne),onCreateVenv:e(ie),onPrune:e(j)},null,8,[`env`,`inventory`,`env-busy`,`uv-text`,`uv-source-text`,`blocker-text`,`root-source-label`,`onRecheck`,`onInstallUv`,`onCreateVenv`,`onPrune`])):y(``,!0),p(tn,{"note-draft":e(G),"onUpdate:noteDraft":n[0]||=e=>a(G)?G.value=e:null,datasets:e(M),"expanded-ds":e(_e),"ds-details":e(ve),"note-editing":e(W),onToggle:e(ye),onReload:e(N),onCreate:n[1]||=e=>X.value=!0,onEditNote:e(K),onSaveNote:n[2]||=t=>e(J)(`datasets`,t),onCancelNote:e(q),onRemove:n[3]||=(t,n)=>e(Y)(`datasets`,t,n)},null,8,[`note-draft`,`datasets`,`expanded-ds`,`ds-details`,`note-editing`,`onToggle`,`onReload`,`onEditNote`,`onCancelNote`]),p(Gn,{"job-rows":e(P),"expanded-job":e(F),"job-details":e(xe),"confirm-cancel":e(Se),cancelling:e(we),"confirm-retry":e(Te),retrying:e(Ee),onToggle:e(De),onReload:e(I),onCancel:e(L),onRetry:e(R),onRemove:n[4]||=(t,n)=>e(Y)(`jobs`,t,n)},null,8,[`job-rows`,`expanded-job`,`job-details`,`confirm-cancel`,`cancelling`,`confirm-retry`,`retrying`,`onToggle`,`onReload`,`onCancel`,`onRetry`]),p(pr,{"exp-dataset-id":e(z),"onUpdate:expDatasetId":n[5]||=e=>a(z)?z.value=e:null,datasets:e(M),experiments:e(B),"best-exp-id":e(Ae),"exp-error":e(V),onReload:e(je)},null,8,[`exp-dataset-id`,`datasets`,`experiments`,`best-exp-id`,`exp-error`,`onReload`]),p(Br,{"note-draft":e(G),"onUpdate:noteDraft":n[6]||=e=>a(G)?G.value=e:null,models:e(H),"note-editing":e(W),"confirm-promote":e(Me),promoting:e(Ne),onReload:e(U),onEditNote:e(K),onSaveNote:n[7]||=t=>e(J)(`models`,t),onCancelNote:e(q),onPromote:e(Pe),onRemove:n[8]||=(t,n)=>e(Y)(`models`,t,n)},null,8,[`note-draft`,`models`,`note-editing`,`confirm-promote`,`promoting`,`onReload`,`onEditNote`,`onCancelNote`,`onPromote`]),p(yi,{models:e(H)},null,8,[`models`]),p(Yi,{open:X.value,"onUpdate:open":n[9]||=e=>X.value=e,onCreated:e(N)},null,8,[`open`,`onCreated`])]))}}),[[`__scopeId`,`data-v-e48806b2`]]);export{Zi as default};
|