agentworkshop 0.7.44 → 0.7.47
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.json +265 -6
- package/.AgentWorkShop/prompts/lead-supervise.md +54 -29
- package/.AgentWorkShop/prompts/peer-reply-optional.md +6 -2
- package/.AgentWorkShop/prompts/peer-reply-required.md +8 -7
- package/.output/.AgentWorkShop/aml-python/__pycache__/amlkit.cpython-312.pyc +0 -0
- package/.output/.AgentWorkShop/aml-python/amlkit.py +185 -120
- package/.output/.AgentWorkShop/aml-python/requirements.txt +9 -7
- package/.output/.AgentWorkShop/aml-python/train-hybrid-example.py +87 -0
- package/.output/.AgentWorkShop/prompts/host-tools.json +265 -6
- package/.output/.AgentWorkShop/prompts/lead-supervise.md +54 -29
- package/.output/.AgentWorkShop/prompts/peer-reply-optional.md +6 -2
- package/.output/.AgentWorkShop/prompts/peer-reply-required.md +8 -7
- package/.output/.AgentWorkShop/schema.json +12 -0
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/-hB4kEmt.js +1 -0
- package/.output/public/_nuxt/1g9IT9Qh2.js +1 -0
- package/.output/public/_nuxt/74x7BOWv2.js +1 -0
- package/.output/public/_nuxt/9c5GOgbu.js +1 -0
- package/.output/public/_nuxt/9zrLAN2o2.js +1 -0
- package/.output/public/_nuxt/B1RT9NTO2.js +1 -0
- package/.output/public/_nuxt/B2x8SKRO.js +1 -0
- package/.output/public/_nuxt/B6Olw0Op.js +1 -0
- package/.output/public/_nuxt/B7jlMWsz.js +1 -0
- package/.output/public/_nuxt/B8cnjDtt.js +1 -0
- package/.output/public/_nuxt/B9rIcCX12.js +1 -0
- package/.output/public/_nuxt/BACBBVdw.js +1 -0
- package/.output/public/_nuxt/BBhLVYdM.js +1 -0
- package/.output/public/_nuxt/BDmNbZ252.js +1 -0
- package/.output/public/_nuxt/BFVf8HLR.js +1 -0
- package/.output/public/_nuxt/BGKUW7ra.js +1 -0
- package/.output/public/_nuxt/BH3obZJ42.js +1 -0
- package/.output/public/_nuxt/BHwG4yNs.js +1 -0
- package/.output/public/_nuxt/BIOq3xqe2.js +1 -0
- package/.output/public/_nuxt/BITZvQBK.js +1 -0
- package/.output/public/_nuxt/BL_dbd2v2.js +1 -0
- package/.output/public/_nuxt/BMMoqi94.js +1 -0
- package/.output/public/_nuxt/BNnnYEYh2.js +1 -0
- package/.output/public/_nuxt/BQXCMsXk.js +1 -0
- package/.output/public/_nuxt/BS9P_Ies2.js +1 -0
- package/.output/public/_nuxt/BWU1pvLL.js +1 -0
- package/.output/public/_nuxt/B_9_BM9G.js +3 -0
- package/.output/public/_nuxt/B_LcD7qE2.js +1 -0
- package/.output/public/_nuxt/BcQXL8pb.js +1 -0
- package/.output/public/_nuxt/BdM_Qr752.js +1 -0
- package/.output/public/_nuxt/BiOSWsjD.js +2 -0
- package/.output/public/_nuxt/BkSViqQd.js +1 -0
- package/.output/public/_nuxt/Bl5dYv4m.js +1 -0
- package/.output/public/_nuxt/BmiMC_BC.js +2 -0
- package/.output/public/_nuxt/BnpY_zNx.js +1 -0
- package/.output/public/_nuxt/BqYVLAcm.js +1 -0
- package/.output/public/_nuxt/Br3AySNQ.js +1 -0
- package/.output/public/_nuxt/Br3MggOL.js +1 -0
- package/.output/public/_nuxt/BrRX-l9B2.js +4108 -0
- package/.output/public/_nuxt/Bt2ZL5332.js +1 -0
- package/.output/public/_nuxt/Bub2P5me.js +28 -0
- package/.output/public/_nuxt/BvRk9kiK.js +0 -0
- package/.output/public/_nuxt/BvRk9kiK2.js +0 -0
- package/.output/public/_nuxt/Bwc6lt2X.js +3 -0
- package/.output/public/_nuxt/BxHBIVAg.js +1 -0
- package/.output/public/_nuxt/BxYTM0hb.js +1 -0
- package/.output/public/_nuxt/ByMj6e7s.js +3 -0
- package/.output/public/_nuxt/BzvHUfRR2.js +1 -0
- package/.output/public/_nuxt/C2YYOgMe.js +42 -0
- package/.output/public/_nuxt/C3twEwTh2.js +1 -0
- package/.output/public/_nuxt/C4WhK2wq.js +1 -0
- package/.output/public/_nuxt/C50LmoI1.js +0 -0
- package/.output/public/_nuxt/CAaSPBqk.js +1 -0
- package/.output/public/_nuxt/CBDX7p73.js +1 -0
- package/.output/public/_nuxt/CD9lpEz22.js +13 -0
- package/.output/public/_nuxt/CGZVhYJ4.js +1 -0
- package/.output/public/_nuxt/CJRDL4EG.js +1 -0
- package/.output/public/_nuxt/CKQPwwZa2.js +1 -0
- package/.output/public/_nuxt/CLySL7mW.js +75 -0
- package/.output/public/_nuxt/CMXcOb6W.js +1 -0
- package/.output/public/_nuxt/CN1CDAwe.js +1 -0
- package/.output/public/_nuxt/CP0I2l-6.js +1 -0
- package/.output/public/_nuxt/CP0Nep9S.js +1 -0
- package/.output/public/_nuxt/CPeZNE4S2.js +1 -0
- package/.output/public/_nuxt/CPmNRTBk2.js +21 -0
- package/.output/public/_nuxt/CQabB0oy.js +1 -0
- package/.output/public/_nuxt/CT-vTjcG.js +1 -0
- package/.output/public/_nuxt/CTVfcnjU.js +3 -0
- package/.output/public/_nuxt/CWzp2R6G.js +1 -0
- package/.output/public/_nuxt/C_VAXV7I2.js +7 -0
- package/.output/public/_nuxt/CavpkQb0.js +1 -0
- package/.output/public/_nuxt/CeWnOF3O.js +1 -0
- package/.output/public/_nuxt/CfLUvgr32.js +1 -0
- package/.output/public/_nuxt/Ch1P2mIf.js +1 -0
- package/.output/public/_nuxt/ChoLwR-s.js +1 -0
- package/.output/public/_nuxt/Chphw5IA2.js +1 -0
- package/.output/public/_nuxt/ChtjzEpK2.js +19 -0
- package/.output/public/_nuxt/CiTQY_n32.js +1 -0
- package/.output/public/_nuxt/Ck5oMvUk.js +1 -0
- package/.output/public/_nuxt/Ckafrjnw2.js +1 -0
- package/.output/public/_nuxt/Cm_PTn9t2.js +1 -0
- package/.output/public/_nuxt/Cmp8PMrA.js +1 -0
- package/.output/public/_nuxt/Cnrmlixo.js +3 -0
- package/.output/public/_nuxt/Cr518Gh02.js +1 -0
- package/.output/public/_nuxt/Crbir9cT.js +1 -0
- package/.output/public/_nuxt/CtPNnATm2.js +31 -0
- package/.output/public/_nuxt/Cu8c3oMN2.js +1 -0
- package/.output/public/_nuxt/CwLQAKay2.js +1 -0
- package/.output/public/_nuxt/CzlUIbK32.js +17 -0
- package/.output/public/_nuxt/D6lZftfy.js +1 -0
- package/.output/public/_nuxt/D83nVQPl.js +1 -0
- package/.output/public/_nuxt/D89BUtx6.js +1 -0
- package/.output/public/_nuxt/DCtk3qqr.js +1 -0
- package/.output/public/_nuxt/DD6Z0yPN2.js +1 -0
- package/.output/public/_nuxt/DGw8juu_.js +2 -0
- package/.output/public/_nuxt/DHSDk8Bq2.js +4 -0
- package/.output/public/_nuxt/DJdDFnjG2.js +1 -0
- package/.output/public/_nuxt/DJyNDnag.js +1 -0
- package/.output/public/_nuxt/DK3Fl9T5.js +1 -0
- package/.output/public/_nuxt/DLPuRMeG.js +19 -0
- package/.output/public/_nuxt/DMYYS5sK.js +1 -0
- package/.output/public/_nuxt/DNno23Jf2.js +1 -0
- package/.output/public/_nuxt/DNoEoo8t.js +1 -0
- package/.output/public/_nuxt/DPUXbTg92.js +1 -0
- package/.output/public/_nuxt/DRpFsrno.js +1 -0
- package/.output/public/_nuxt/DXIaadqv.js +1 -0
- package/.output/public/_nuxt/D_7AzAWe.js +1 -0
- package/.output/public/_nuxt/Dbe9TFc9.js +1 -0
- package/.output/public/_nuxt/DdNujZN5.js +1 -0
- package/.output/public/_nuxt/DdvQ7LRI.js +14 -0
- package/.output/public/_nuxt/DhFv8S2Z.js +1 -0
- package/.output/public/_nuxt/DkJVtqfc.js +1 -0
- package/.output/public/_nuxt/DkLCjrCk2.js +47 -0
- package/.output/public/_nuxt/DkpmSnHX.js +1 -0
- package/.output/public/_nuxt/DlUQa0wn2.js +1 -0
- package/.output/public/_nuxt/DoKpLEqc.js +1 -0
- package/.output/public/_nuxt/DpqA8D8_.js +1 -0
- package/.output/public/_nuxt/Dq0emNZi2.js +1 -0
- package/.output/public/_nuxt/DqtgGFEc.js +1 -0
- package/.output/public/_nuxt/DqtnqNgL2.js +1 -0
- package/.output/public/_nuxt/Dqz5HiXa.js +2 -0
- package/.output/public/_nuxt/DxagrjB8.js +1 -0
- package/.output/public/_nuxt/Dy3oXKdn2.js +1 -0
- package/.output/public/_nuxt/DzBbYWrw2.js +1 -0
- package/.output/public/_nuxt/EhhQmlBV2.js +1 -0
- package/.output/public/_nuxt/H2rNs1O82.js +1 -0
- package/.output/public/_nuxt/H6pPjo0l.js +1 -0
- package/.output/public/_nuxt/JAM4aNC_.js +1 -0
- package/.output/public/_nuxt/JgheoP3e.js +1 -0
- package/.output/public/_nuxt/LwIFGLgF.js +1 -0
- package/.output/public/_nuxt/Nw_6OpQZ2.js +1 -0
- package/.output/public/_nuxt/OXtV_ukR.js +1 -0
- package/.output/public/_nuxt/OmpTerminalPanel.ComMDrA8.css +1 -0
- package/.output/public/_nuxt/PLGqdko0.js +1 -0
- package/.output/public/_nuxt/PixDfCSm.js +1 -0
- package/.output/public/_nuxt/RAqsw632.js +1 -0
- package/.output/public/_nuxt/Sjjmp5OD2.js +1 -0
- package/.output/public/_nuxt/TOWR4WpO.js +1 -0
- package/.output/public/_nuxt/TownView.BvlfuLtP.css +1 -0
- package/.output/public/_nuxt/U8oQxruK.js +1 -0
- package/.output/public/_nuxt/WleoCtUX.js +1 -0
- package/.output/public/_nuxt/YaroNkJZ2.js +1 -0
- package/.output/public/_nuxt/Z-Z6EhXs.js +1 -0
- package/.output/public/_nuxt/ZuQtOnfI.js +1 -0
- package/.output/public/_nuxt/ZvXovq7N2.js +1 -0
- package/.output/public/_nuxt/_id_.BTrFUIHX.css +1 -0
- package/.output/public/_nuxt/_id_.Bossmhv1.css +1 -0
- package/.output/public/_nuxt/_wsId_.D-u-dbP9.css +1 -0
- package/.output/public/_nuxt/agents.Cgm_JG9L.css +1 -0
- package/.output/public/_nuxt/aml.Bi5X6_oi.css +1 -0
- package/.output/public/_nuxt/bg2adfck.js +1 -0
- package/.output/public/_nuxt/bt__BP-I.js +13 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/1b18aaf2-ccbc-45e0-b9c3-107655b226f9.json +1 -0
- package/.output/public/_nuxt/cBI0JqsV2.js +209 -0
- package/.output/public/_nuxt/cDcDztgb2.js +1 -0
- package/.output/public/_nuxt/cGSl2GZp.js +1 -0
- package/.output/public/_nuxt/csitHKnE2.js +1 -0
- package/.output/public/_nuxt/d-w5jR8R.js +1 -0
- package/.output/public/_nuxt/daq.0uieKcZk.css +1 -0
- package/.output/public/_nuxt/dcw.pQRVkAi_.css +1 -0
- package/.output/public/_nuxt/default.uao9U50c.css +1 -0
- package/.output/public/_nuxt/e7BBCLxr.js +1 -0
- package/.output/public/_nuxt/entry.6DEjPWvR.css +1 -0
- package/.output/public/_nuxt/eutnXI4F.js +24 -0
- package/.output/public/_nuxt/fxWyOzyp2.js +1 -0
- package/.output/public/_nuxt/hkMGMTqt.js +1 -0
- package/.output/public/_nuxt/ikAUnxx3.js +1 -0
- package/.output/public/_nuxt/lWYQbIR3.js +1 -0
- package/.output/public/_nuxt/logs.CD0Olr3c.css +1 -0
- package/.output/public/_nuxt/monitor.CI2v5Nvl.css +1 -0
- package/.output/public/_nuxt/pages.CMhSEhEb.css +1 -0
- package/.output/public/_nuxt/permissions.DxuOOIqQ.css +1 -0
- package/.output/public/_nuxt/plugins.C50x1qZp.css +1 -0
- package/.output/public/_nuxt/qOlYoGLf.js +1 -0
- package/.output/public/_nuxt/schedules.BXNJ9q_I.css +1 -0
- package/.output/public/_nuxt/settings.Bo5EYkLI.css +1 -0
- package/.output/public/_nuxt/teams.sGmx1AdX.css +1 -0
- package/.output/public/_nuxt/tokens.DFMFaCYU.css +1 -0
- package/.output/public/_nuxt/uI9Ki_XZ.js +9 -0
- package/.output/public/_nuxt/users.DBxcKnfg.css +1 -0
- package/.output/public/_nuxt/v55S8LnT.js +1 -0
- package/.output/public/_nuxt/wDPc4SSR.js +106 -0
- package/.output/public/_nuxt/workshop.b4YRXEe0.css +1 -0
- package/.output/public/_nuxt/y9kob70X.js +1 -0
- package/.output/public/_nuxt/zh-S_7rN.js +1 -0
- package/.output/server/chunks/_/LeftOutlined.mjs +1 -1
- package/.output/server/chunks/_/SearchOutlined.mjs +1243 -279
- package/.output/server/chunks/_/SearchOutlined.mjs.map +1 -1
- package/.output/server/chunks/_/binding-authz.mjs +1 -1
- package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
- package/.output/server/chunks/_/entity.mjs +1 -1
- package/.output/server/chunks/_/env-manager.mjs +1 -1
- package/.output/server/chunks/_/host-bindings.mjs +1 -1
- package/.output/server/chunks/_/nitro.mjs +27006 -19064
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
- package/.output/server/chunks/build/Checkbox-4EdGAAl_.mjs +206 -0
- package/.output/server/chunks/build/Checkbox-4EdGAAl_.mjs.map +1 -0
- package/.output/server/chunks/build/FormItemContext-4ORSzhWv.mjs +72 -0
- package/.output/server/chunks/build/FormItemContext-4ORSzhWv.mjs.map +1 -0
- package/.output/server/chunks/build/OmpTerminalPanel-EQHrOJbw.mjs +942 -0
- package/.output/server/chunks/build/OmpTerminalPanel-EQHrOJbw.mjs.map +1 -0
- package/.output/server/chunks/build/PluginSlot-BP_qedpQ.mjs +399 -0
- package/.output/server/chunks/build/PluginSlot-BP_qedpQ.mjs.map +1 -0
- package/.output/server/chunks/build/TownView-BAR8CPIZ.mjs +6373 -0
- package/.output/server/chunks/build/TownView-BAR8CPIZ.mjs.map +1 -0
- package/.output/server/chunks/build/_id_-DgMpjM3_.mjs +1354 -0
- package/.output/server/chunks/build/_id_-DgMpjM3_.mjs.map +1 -0
- package/.output/server/chunks/build/_id_-Dv3BQbYV.mjs +388 -0
- package/.output/server/chunks/build/_id_-Dv3BQbYV.mjs.map +1 -0
- package/.output/server/chunks/build/_wsId_-BKJvFmyf.mjs +13109 -0
- package/.output/server/chunks/build/_wsId_-BKJvFmyf.mjs.map +1 -0
- package/.output/server/chunks/build/agents-B2GLPmn2.mjs +1085 -0
- package/.output/server/chunks/build/agents-B2GLPmn2.mjs.map +1 -0
- package/.output/server/chunks/build/aml-DdWicH3t.mjs +806 -0
- package/.output/server/chunks/build/aml-DdWicH3t.mjs.map +1 -0
- package/.output/server/chunks/build/api-BY6ji7RC.mjs +50 -0
- package/.output/server/chunks/build/api-BY6ji7RC.mjs.map +1 -0
- package/.output/server/chunks/build/api-error-BwAQLw44.mjs +47 -0
- package/.output/server/chunks/build/api-error-BwAQLw44.mjs.map +1 -0
- package/.output/server/chunks/build/apiClient-D281qrK2.mjs +81 -0
- package/.output/server/chunks/build/apiClient-D281qrK2.mjs.map +1 -0
- package/.output/server/chunks/build/builtin-catalog-edpDcgfL.mjs +1 -1
- package/.output/server/chunks/build/card-CUSocE9p.mjs +953 -0
- package/.output/server/chunks/build/card-CUSocE9p.mjs.map +1 -0
- package/.output/server/chunks/build/channel-templates-RPOtkgRf.mjs +846 -0
- package/.output/server/chunks/build/channel-templates-RPOtkgRf.mjs.map +1 -0
- package/.output/server/chunks/build/checkbox-C4AKj81e.mjs +439 -0
- package/.output/server/chunks/build/checkbox-C4AKj81e.mjs.map +1 -0
- package/.output/server/chunks/build/client-only-qNA2OVV_.mjs +43 -0
- package/.output/server/chunks/build/client-only-qNA2OVV_.mjs.map +1 -0
- package/.output/server/chunks/build/constants-HPHJvjne.mjs +139 -0
- package/.output/server/chunks/build/constants-HPHJvjne.mjs.map +1 -0
- package/.output/server/chunks/build/core-CgTOPS4t.mjs +294 -0
- package/.output/server/chunks/build/core-CgTOPS4t.mjs.map +1 -0
- package/.output/server/chunks/build/daq-CPtsh0e7.mjs +1253 -0
- package/.output/server/chunks/build/daq-CPtsh0e7.mjs.map +1 -0
- package/.output/server/chunks/build/dcw-ry5Gyw6Y.mjs +478 -0
- package/.output/server/chunks/build/dcw-ry5Gyw6Y.mjs.map +1 -0
- package/.output/server/chunks/build/default-DxOE1eB0.mjs +2061 -0
- package/.output/server/chunks/build/default-DxOE1eB0.mjs.map +1 -0
- package/.output/server/chunks/build/descriptions-CFaUq4y4.mjs +406 -0
- package/.output/server/chunks/build/descriptions-CFaUq4y4.mjs.map +1 -0
- package/.output/server/chunks/build/drawer-Cfh9_zft.mjs +834 -0
- package/.output/server/chunks/build/drawer-Cfh9_zft.mjs.map +1 -0
- package/.output/server/chunks/build/dropdown-KdKWCS5K.mjs +556 -0
- package/.output/server/chunks/build/dropdown-KdKWCS5K.mjs.map +1 -0
- package/.output/server/chunks/build/dropdown-Yev6knaj.mjs +14 -0
- package/.output/server/chunks/build/dropdown-Yev6knaj.mjs.map +1 -0
- package/.output/server/chunks/build/form-uSlNqIAV.mjs +4711 -0
- package/.output/server/chunks/build/form-uSlNqIAV.mjs.map +1 -0
- package/.output/server/chunks/build/input-Cr_KFj4T.mjs +1381 -0
- package/.output/server/chunks/build/input-Cr_KFj4T.mjs.map +1 -0
- package/.output/server/chunks/build/input-number-BRVnxeiA.mjs +1119 -0
- package/.output/server/chunks/build/input-number-BRVnxeiA.mjs.map +1 -0
- package/.output/server/chunks/build/interval-DvHBIIZh.mjs +9 -0
- package/.output/server/chunks/build/interval-DvHBIIZh.mjs.map +1 -0
- package/.output/server/chunks/build/logs-CeaiO3y9.mjs +367 -0
- package/.output/server/chunks/build/logs-CeaiO3y9.mjs.map +1 -0
- package/.output/server/chunks/build/menu-BgkRSSx7.mjs +1949 -0
- package/.output/server/chunks/build/menu-BgkRSSx7.mjs.map +1 -0
- package/.output/server/chunks/build/monitor-DnuXEIi5.mjs +2245 -0
- package/.output/server/chunks/build/monitor-DnuXEIi5.mjs.map +1 -0
- package/.output/server/chunks/build/narrow-fetch-CcG-BPxc.mjs +6 -0
- package/.output/server/chunks/build/narrow-fetch-CcG-BPxc.mjs.map +1 -0
- package/.output/server/chunks/build/pages-Bn90ijKD.mjs +539 -0
- package/.output/server/chunks/build/pages-Bn90ijKD.mjs.map +1 -0
- package/.output/server/chunks/build/permissions-DL70W1YD.mjs +629 -0
- package/.output/server/chunks/build/permissions-DL70W1YD.mjs.map +1 -0
- package/.output/server/chunks/build/plugins-DrsZo--K.mjs +246 -0
- package/.output/server/chunks/build/plugins-DrsZo--K.mjs.map +1 -0
- package/.output/server/chunks/build/popconfirm-Ox-_2V8A.mjs +339 -0
- package/.output/server/chunks/build/popconfirm-Ox-_2V8A.mjs.map +1 -0
- package/.output/server/chunks/build/schedules-VLzNcjnW.mjs +7164 -0
- package/.output/server/chunks/build/schedules-VLzNcjnW.mjs.map +1 -0
- package/.output/server/chunks/build/segmented-C61yLHvo.mjs +341 -0
- package/.output/server/chunks/build/segmented-C61yLHvo.mjs.map +1 -0
- package/.output/server/chunks/build/select-rdBWytVK.mjs +3922 -0
- package/.output/server/chunks/build/select-rdBWytVK.mjs.map +1 -0
- package/.output/server/chunks/build/settings-DVAUVMsX.mjs +1089 -0
- package/.output/server/chunks/build/settings-DVAUVMsX.mjs.map +1 -0
- package/.output/server/chunks/build/space-B2uhHJG8.mjs +110 -0
- package/.output/server/chunks/build/space-B2uhHJG8.mjs.map +1 -0
- package/.output/server/chunks/build/spin-C2cuvGth.mjs +357 -0
- package/.output/server/chunks/build/spin-C2cuvGth.mjs.map +1 -0
- package/.output/server/chunks/build/switch-DZAUIbIN.mjs +377 -0
- package/.output/server/chunks/build/switch-DZAUIbIN.mjs.map +1 -0
- package/.output/server/chunks/build/table-DOFAvY-v.mjs +8881 -0
- package/.output/server/chunks/build/table-DOFAvY-v.mjs.map +1 -0
- package/.output/server/chunks/build/tabs-DTeIuZeP.mjs +1923 -0
- package/.output/server/chunks/build/tabs-DTeIuZeP.mjs.map +1 -0
- package/.output/server/chunks/build/tag-CHLGvNM6.mjs +1029 -0
- package/.output/server/chunks/build/tag-CHLGvNM6.mjs.map +1 -0
- package/.output/server/chunks/build/teams-Mc07PYO8.mjs +1195 -0
- package/.output/server/chunks/build/teams-Mc07PYO8.mjs.map +1 -0
- package/.output/server/chunks/build/tokens-DiwD5qni.mjs +1036 -0
- package/.output/server/chunks/build/tokens-DiwD5qni.mjs.map +1 -0
- package/.output/server/chunks/build/town-BIn3be5v.mjs +39 -0
- package/.output/server/chunks/build/town-BIn3be5v.mjs.map +1 -0
- package/.output/server/chunks/build/town-D8VmTCmN.mjs +128 -0
- package/.output/server/chunks/build/town-D8VmTCmN.mjs.map +1 -0
- package/.output/server/chunks/build/types-D6J7slEa.mjs +5561 -0
- package/.output/server/chunks/build/types-D6J7slEa.mjs.map +1 -0
- package/.output/server/chunks/build/useAgentHarnessOptions-CPn5dzKe.mjs +121 -0
- package/.output/server/chunks/build/useAgentHarnessOptions-CPn5dzKe.mjs.map +1 -0
- package/.output/server/chunks/build/useAgentTemplateActions-DQWzVnZ0.mjs +74 -0
- package/.output/server/chunks/build/useAgentTemplateActions-DQWzVnZ0.mjs.map +1 -0
- package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs +64 -0
- package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs.map +1 -0
- package/.output/server/chunks/build/useAgentTemplateForm-vqyiRPtt.mjs +114 -0
- package/.output/server/chunks/build/useAgentTemplateForm-vqyiRPtt.mjs.map +1 -0
- package/.output/server/chunks/build/useAgentTemplatesCatalog-DcQbsOik.mjs +130 -0
- package/.output/server/chunks/build/useAgentTemplatesCatalog-DcQbsOik.mjs.map +1 -0
- package/.output/server/chunks/build/useAmlDatasets-BM0lZu40.mjs +89 -0
- package/.output/server/chunks/build/useAmlDatasets-BM0lZu40.mjs.map +1 -0
- package/.output/server/chunks/build/useAmlEntities-BjXWvFd_.mjs +83 -0
- package/.output/server/chunks/build/useAmlEntities-BjXWvFd_.mjs.map +1 -0
- package/.output/server/chunks/build/useAmlEnv-BB7p6x_w.mjs +191 -0
- package/.output/server/chunks/build/useAmlEnv-BB7p6x_w.mjs.map +1 -0
- package/.output/server/chunks/build/useAmlExperiments-BtyW32PO.mjs +86 -0
- package/.output/server/chunks/build/useAmlExperiments-BtyW32PO.mjs.map +1 -0
- package/.output/server/chunks/build/useAmlFormat-WrKuRfw2.mjs +79 -0
- package/.output/server/chunks/build/useAmlFormat-WrKuRfw2.mjs.map +1 -0
- package/.output/server/chunks/build/useAmlJobs-DBuLvWMF.mjs +263 -0
- package/.output/server/chunks/build/useAmlJobs-DBuLvWMF.mjs.map +1 -0
- package/.output/server/chunks/build/useAmlModels-VurmkBYe.mjs +90 -0
- package/.output/server/chunks/build/useAmlModels-VurmkBYe.mjs.map +1 -0
- package/.output/server/chunks/build/useAmlNotes-BUdj3X6Y.mjs +83 -0
- package/.output/server/chunks/build/useAmlNotes-BUdj3X6Y.mjs.map +1 -0
- package/.output/server/chunks/build/useAmlPredict-DFy-Do10.mjs +127 -0
- package/.output/server/chunks/build/useAmlPredict-DFy-Do10.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqAddNode-kW7uTSMQ.mjs +139 -0
- package/.output/server/chunks/build/useDaqAddNode-kW7uTSMQ.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqDetailBinding-cpBz4hSL.mjs +67 -0
- package/.output/server/chunks/build/useDaqDetailBinding-cpBz4hSL.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqDetailFrames-BZGtKKXW.mjs +76 -0
- package/.output/server/chunks/build/useDaqDetailFrames-BZGtKKXW.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqDetailHistory-C4_hVeqZ.mjs +173 -0
- package/.output/server/chunks/build/useDaqDetailHistory-C4_hVeqZ.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqDetailNode-Bwid_iA8.mjs +96 -0
- package/.output/server/chunks/build/useDaqDetailNode-Bwid_iA8.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqDetailParams-JfqHvTxr.mjs +156 -0
- package/.output/server/chunks/build/useDaqDetailParams-JfqHvTxr.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqFilters-C13836p-.mjs +219 -0
- package/.output/server/chunks/build/useDaqFilters-C13836p-.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs +87 -0
- package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqOptimizations-Ct-TSXxy.mjs +133 -0
- package/.output/server/chunks/build/useDaqOptimizations-Ct-TSXxy.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqStream-wOxZcMDA.mjs +395 -0
- package/.output/server/chunks/build/useDaqStream-wOxZcMDA.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqTemplates-BqQRdrIm.mjs +184 -0
- package/.output/server/chunks/build/useDaqTemplates-BqQRdrIm.mjs.map +1 -0
- package/.output/server/chunks/build/useDashboardCharts-DZysNDUX.mjs +351 -0
- package/.output/server/chunks/build/useDashboardCharts-DZysNDUX.mjs.map +1 -0
- package/.output/server/chunks/build/useDashboardData-Ny_wtbo6.mjs +150 -0
- package/.output/server/chunks/build/useDashboardData-Ny_wtbo6.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwAddNode-C8nE7geh.mjs +148 -0
- package/.output/server/chunks/build/useDcwAddNode-C8nE7geh.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwCards-ETEsHvVy.mjs +64 -0
- package/.output/server/chunks/build/useDcwCards-ETEsHvVy.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwDetailScope-BNrpDzbO.mjs +181 -0
- package/.output/server/chunks/build/useDcwDetailScope-BNrpDzbO.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwDetailTemplates-IcKAJ37Y.mjs +145 -0
- package/.output/server/chunks/build/useDcwDetailTemplates-IcKAJ37Y.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwFilter-FfVlDdyS.mjs +68 -0
- package/.output/server/chunks/build/useDcwFilter-FfVlDdyS.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwLedger-BLoMmcu1.mjs +76 -0
- package/.output/server/chunks/build/useDcwLedger-BLoMmcu1.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwLineMutations-BMC5BTWU.mjs +134 -0
- package/.output/server/chunks/build/useDcwLineMutations-BMC5BTWU.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwLineRun-Bpxk4mse.mjs +101 -0
- package/.output/server/chunks/build/useDcwLineRun-Bpxk4mse.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwProducts-D-zrMaeV.mjs +90 -0
- package/.output/server/chunks/build/useDcwProducts-D-zrMaeV.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwQuery-1lYHOaU6.mjs +95 -0
- package/.output/server/chunks/build/useDcwQuery-1lYHOaU6.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwQuickActions-C-tgcXIr.mjs +85 -0
- package/.output/server/chunks/build/useDcwQuickActions-C-tgcXIr.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwRecipes-BzGOymqz.mjs +237 -0
- package/.output/server/chunks/build/useDcwRecipes-BzGOymqz.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwStream-D04kCV3J.mjs +435 -0
- package/.output/server/chunks/build/useDcwStream-D04kCV3J.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwTemplates-Dsjw9u6U.mjs +88 -0
- package/.output/server/chunks/build/useDcwTemplates-Dsjw9u6U.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwWrites-3RxwN36I.mjs +120 -0
- package/.output/server/chunks/build/useDcwWrites-3RxwN36I.mjs.map +1 -0
- package/.output/server/chunks/build/useDeviceTwins-CbVad1M3.mjs +128 -0
- package/.output/server/chunks/build/useDeviceTwins-CbVad1M3.mjs.map +1 -0
- package/.output/server/chunks/build/useLocalTime-9a4B-aHv.mjs +1 -8
- package/.output/server/chunks/build/useLocalTime-9a4B-aHv.mjs.map +1 -1
- package/.output/server/chunks/build/useLogsFormat-BlwLpyzy.mjs +74 -0
- package/.output/server/chunks/build/useLogsFormat-BlwLpyzy.mjs.map +1 -0
- package/.output/server/chunks/build/useLogsManual-Deev2Cjk.mjs +81 -0
- package/.output/server/chunks/build/useLogsManual-Deev2Cjk.mjs.map +1 -0
- package/.output/server/chunks/build/useLogsQuery-CRAm2hmS.mjs +112 -0
- package/.output/server/chunks/build/useLogsQuery-CRAm2hmS.mjs.map +1 -0
- package/.output/server/chunks/build/useLogsScope-ClNijVj4.mjs +80 -0
- package/.output/server/chunks/build/useLogsScope-ClNijVj4.mjs.map +1 -0
- package/.output/server/chunks/build/useMonitorColumns-ylxrUNTK.mjs +212 -0
- package/.output/server/chunks/build/useMonitorColumns-ylxrUNTK.mjs.map +1 -0
- package/.output/server/chunks/build/useMonitorData-CEpKXoD4.mjs +131 -0
- package/.output/server/chunks/build/useMonitorData-CEpKXoD4.mjs.map +1 -0
- package/.output/server/chunks/build/useMonitorFormat-_7zLapf3.mjs +87 -0
- package/.output/server/chunks/build/useMonitorFormat-_7zLapf3.mjs.map +1 -0
- package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs +68 -0
- package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs.map +1 -0
- package/.output/server/chunks/build/useOpsLog-CgnNG7_n.mjs +137 -0
- package/.output/server/chunks/build/useOpsLog-CgnNG7_n.mjs.map +1 -0
- package/.output/server/chunks/build/useTeamActions-D6sxdpkP.mjs +76 -0
- package/.output/server/chunks/build/useTeamActions-D6sxdpkP.mjs.map +1 -0
- package/.output/server/chunks/build/useTeamAddMemberDialog-Q-ntQ6Vo.mjs +81 -0
- package/.output/server/chunks/build/useTeamAddMemberDialog-Q-ntQ6Vo.mjs.map +1 -0
- package/.output/server/chunks/build/useTeamCreateDialog-D7OMfDTM.mjs +94 -0
- package/.output/server/chunks/build/useTeamCreateDialog-D7OMfDTM.mjs.map +1 -0
- package/.output/server/chunks/build/useTeamDeployDialog-vBRqjiut.mjs +77 -0
- package/.output/server/chunks/build/useTeamDeployDialog-vBRqjiut.mjs.map +1 -0
- package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs +79 -0
- package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs.map +1 -0
- package/.output/server/chunks/build/useTeamPluginDialog-B8kxewpZ.mjs +100 -0
- package/.output/server/chunks/build/useTeamPluginDialog-B8kxewpZ.mjs.map +1 -0
- package/.output/server/chunks/build/useTeamsCatalog-xRhk7ezA.mjs +120 -0
- package/.output/server/chunks/build/useTeamsCatalog-xRhk7ezA.mjs.map +1 -0
- package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs +69 -0
- package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs.map +1 -0
- package/.output/server/chunks/build/useTokenCreate-DpDcF1Vx.mjs +112 -0
- package/.output/server/chunks/build/useTokenCreate-DpDcF1Vx.mjs.map +1 -0
- package/.output/server/chunks/build/useTokenRename-BRejFrtc.mjs +84 -0
- package/.output/server/chunks/build/useTokenRename-BRejFrtc.mjs.map +1 -0
- package/.output/server/chunks/build/useTokenReveal-DER2afAS.mjs +115 -0
- package/.output/server/chunks/build/useTokenReveal-DER2afAS.mjs.map +1 -0
- package/.output/server/chunks/build/useTokensList-DHt65IOY.mjs +89 -0
- package/.output/server/chunks/build/useTokensList-DHt65IOY.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkbenchAuth-B2j-zILO.mjs +135 -0
- package/.output/server/chunks/build/useWorkbenchAuth-B2j-zILO.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkbenchWorkspaces-B_2mOxN6.mjs +133 -0
- package/.output/server/chunks/build/useWorkbenchWorkspaces-B_2mOxN6.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkshopApi-B1B9vd4m.mjs +102 -0
- package/.output/server/chunks/build/useWorkshopApi-B1B9vd4m.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkshopWs-B-Es2Xg3.mjs +1782 -0
- package/.output/server/chunks/build/useWorkshopWs-B-Es2Xg3.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkspaceAuth-tQ1ORWXo.mjs +57 -0
- package/.output/server/chunks/build/useWorkspaceAuth-tQ1ORWXo.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkspaceChannels-BwB6TAWY.mjs +87 -0
- package/.output/server/chunks/build/useWorkspaceChannels-BwB6TAWY.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkspacePanels-CuAmDpT5.mjs +75 -0
- package/.output/server/chunks/build/useWorkspacePanels-CuAmDpT5.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkspaceShell-CcQ4JlqO.mjs +165 -0
- package/.output/server/chunks/build/useWorkspaceShell-CcQ4JlqO.mjs.map +1 -0
- package/.output/server/chunks/build/users-De2HygNt.mjs +561 -0
- package/.output/server/chunks/build/users-De2HygNt.mjs.map +1 -0
- package/.output/server/chunks/build/workshop-CmgpTwyf.mjs +1018 -0
- package/.output/server/chunks/build/workshop-CmgpTwyf.mjs.map +1 -0
- package/.output/server/chunks/build/workspaces-DVIEk1Bl.mjs +139 -0
- package/.output/server/chunks/build/workspaces-DVIEk1Bl.mjs.map +1 -0
- package/.output/server/chunks/routes/api/health.get.mjs +2 -2
- package/.output/server/chunks/routes/api/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/mcp/workshop.mjs +2 -2
- package/.output/server/chunks/routes/api/metrics.mjs +2 -2
- package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +2 -2
- package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +2 -2
- package/.output/server/chunks/routes/api/plugins/i18n.get.mjs +2 -2
- package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +2 -2
- package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/system/config.get.mjs +2 -2
- package/.output/server/chunks/routes/api/system/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/system/index.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/system/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/system/index2.get.mjs +2 -2
- package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +35 -4
- package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +2 -2
- package/.output/server/chunks/routes/api/system/monitor.get.mjs +2 -2
- package/.output/server/chunks/routes/api/system/settings/events.get.mjs +2 -2
- package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +2 -2
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/users/_id_.get.mjs +2 -2
- package/.output/server/chunks/routes/api/users/_id_.put.mjs +2 -2
- package/.output/server/chunks/routes/api/users/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/users/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/users/login.post.mjs +2 -2
- package/.output/server/chunks/routes/api/users/logout.post.mjs +2 -2
- package/.output/server/chunks/routes/api/users/me.get.mjs +2 -2
- package/.output/server/chunks/routes/api/users/register.post.mjs +2 -2
- package/.output/server/chunks/routes/api/users/setup-status.get.mjs +2 -2
- package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +2 -2
- package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/_...path_.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +38 -6
- package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +14 -5
- 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 +2 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +2 -2
- 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 +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/audit.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/caller.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +10 -5
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs +41 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs +52 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs +33 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs +48 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +10 -14
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +15 -28
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +29 -23
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +9 -4
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +22 -10
- package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs +34 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs +33 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs +34 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs +35 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs +33 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +22 -6
- package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.get.mjs +21 -3
- package/.output/server/chunks/routes/api/workshop/channels.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +5 -5
- package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +11 -4
- package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +28 -36
- package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index.put.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs +26 -12
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index11.get.mjs +12 -7
- package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index12.get.mjs +3 -3
- package/.output/server/chunks/routes/api/workshop/index12.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index13.get.mjs +29 -0
- package/.output/server/chunks/routes/api/workshop/index13.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/index14.get.mjs +28 -0
- package/.output/server/chunks/routes/api/workshop/index14.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index3.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs +14 -16
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs +40 -19
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.post.mjs +19 -5
- package/.output/server/chunks/routes/api/workshop/index8.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs +20 -24
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.post.mjs +30 -0
- package/.output/server/chunks/routes/api/workshop/index9.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs +41 -0
- package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs +29 -0
- package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs +31 -0
- package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs +30 -0
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs +29 -0
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs +40 -0
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs +39 -0
- package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs +44 -0
- package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +9 -5
- package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +3 -3
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +2 -2
- package/.output/server/chunks/routes/renderer.mjs +3 -3
- package/.output/server/chunks/virtual/entry.mjs +6055 -1624
- package/.output/server/chunks/virtual/entry.mjs.map +1 -1
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/index.mjs +15 -5549
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +102 -48
- package/README.md +105 -38
- package/app/components/AppHeader.vue +26 -703
- package/app/components/aml/AmlDatasetFormModal.vue +279 -0
- package/app/components/aml/AmlDatasetTable.vue +319 -0
- package/app/components/aml/AmlEnvPanel.vue +230 -0
- package/app/components/aml/AmlExperimentsTable.vue +142 -0
- package/app/components/aml/AmlInfraBanner.vue +23 -0
- package/app/components/aml/AmlJobsTable.vue +248 -0
- package/app/components/aml/AmlModelsTable.vue +173 -0
- package/app/components/aml/AmlOverviewBar.vue +62 -0
- package/app/components/aml/AmlPageHeader.vue +47 -0
- package/app/components/aml/AmlPredictConsole.vue +201 -0
- package/app/components/app-header/HeaderTools.vue +208 -0
- package/app/components/app-header/HitlBell.vue +423 -0
- package/app/components/app-header/TrailNav.vue +261 -0
- package/app/components/app-header/UserChip.vue +150 -0
- package/app/components/daq/DaqAddNodeModal.vue +209 -0
- package/app/components/daq/DaqAlarmBar.vue +46 -0
- package/app/components/daq/DaqControlCard.vue +159 -0
- package/app/components/daq/DaqDetailFramesTile.vue +139 -0
- package/app/components/daq/DaqDetailHistoryCard.vue +128 -0
- package/app/components/daq/DaqDetailLiveCard.vue +92 -0
- package/app/components/daq/DaqDetailParamForm.vue +350 -0
- package/app/components/daq/DaqInfraBanner.vue +31 -0
- package/app/components/daq/DaqLineBanner.vue +47 -0
- package/app/components/daq/DaqNodePanel.vue +396 -0
- package/app/components/daq/DaqOptPanel.vue +197 -0
- package/app/components/daq/DaqTemplateModal.vue +246 -0
- package/app/components/dashboard/DashboardFleetPanel.vue +228 -0
- package/app/components/dashboard/DashboardGaugeBand.vue +78 -0
- package/app/components/dashboard/DashboardHarnessPanel.vue +149 -0
- package/app/components/dashboard/DashboardHero.vue +209 -0
- package/app/components/dashboard/DashboardLineStatePanel.vue +78 -0
- package/app/components/dashboard/DashboardNodeStatePanel.vue +46 -0
- package/app/components/dashboard/DashboardPipelinePanel.vue +46 -0
- package/app/components/dashboard/DashboardTrendPanel.vue +83 -0
- package/app/components/dashboard/DashboardWritePanel.vue +52 -0
- package/app/components/dcw/DcwAddNodeModal.vue +328 -0
- package/app/components/dcw/DcwAdoptCard.vue +89 -0
- package/app/components/dcw/DcwCreateLineModal.vue +105 -0
- package/app/components/dcw/DcwDeleteLineModal.vue +73 -0
- package/app/components/dcw/DcwDetailHead.vue +65 -0
- package/app/components/dcw/DcwDetailTemplateModal.vue +238 -0
- package/app/components/dcw/DcwEditLineModal.vue +108 -0
- package/app/components/dcw/DcwGatewayBar.vue +94 -0
- package/app/components/dcw/DcwLedgerCard.vue +160 -0
- package/app/components/dcw/DcwLineCard.vue +117 -0
- package/app/components/dcw/DcwLineRunCard.vue +158 -0
- package/app/components/dcw/DcwNodesTable.vue +253 -0
- package/app/components/dcw/DcwProductCreateModal.vue +113 -0
- package/app/components/dcw/DcwQueryCard.vue +251 -0
- package/app/components/dcw/DcwRecipeEditModal.vue +285 -0
- package/app/components/dcw/DcwRecipeHistoryModal.vue +165 -0
- package/app/components/dcw/DcwRecipePanel.vue +367 -0
- package/app/components/dcw/DcwRunDataModal.vue +191 -0
- package/app/components/dcw/DcwTemplateModal.vue +227 -0
- package/app/components/dcw/DcwWriteHistoryCard.vue +96 -0
- package/app/components/logs/LogsEventTable.vue +309 -0
- package/app/components/logs/LogsFilterCard.vue +234 -0
- package/app/components/logs/LogsManualModal.vue +231 -0
- package/app/components/logs/LogsPageHead.vue +71 -0
- package/app/components/monitor/MonitorAgentTable.vue +143 -0
- package/app/components/monitor/MonitorChannelTable.vue +80 -0
- package/app/components/monitor/MonitorLoginGate.vue +24 -0
- package/app/components/monitor/MonitorPageHead.vue +92 -0
- package/app/components/monitor/MonitorProcessTable.vue +159 -0
- package/app/components/monitor/MonitorStatGrid.vue +165 -0
- package/app/components/settings/AppearancePane.vue +282 -0
- package/app/components/settings/PluginsSection.vue +280 -0
- package/app/components/settings/RuntimeFieldRow.vue +189 -0
- package/app/components/settings/RuntimeGroupSection.vue +290 -0
- package/app/components/settings/RuntimePane.vue +235 -0
- package/app/components/settings/SystemPane.vue +83 -0
- package/app/components/tokens/TokenCreateModal.vue +42 -0
- package/app/components/tokens/TokenOnceModal.vue +164 -0
- package/app/components/tokens/TokenRenameModal.vue +40 -0
- package/app/components/tokens/TokensAuthGate.vue +47 -0
- package/app/components/tokens/TokensPageHead.vue +76 -0
- package/app/components/tokens/TokensTable.vue +227 -0
- package/app/components/workshop/AgentLanesView.vue +35 -755
- package/app/components/workshop/ChannelSessionList.vue +58 -493
- package/app/components/workshop/ChatMemberPanel.vue +555 -0
- package/app/components/workshop/ChatTimeline.vue +569 -0
- package/app/components/workshop/CommandPalette.vue +1 -0
- package/app/components/workshop/Composer.vue +224 -511
- package/app/components/workshop/DeviceTwinPanel.vue +23 -499
- package/app/components/workshop/EventBlock.vue +20 -408
- package/app/components/workshop/MemoryPanel.vue +405 -364
- package/app/components/workshop/MultiChannelView.vue +189 -189
- package/app/components/workshop/NotificationCenter.vue +325 -0
- package/app/components/workshop/TaskBoardView.vue +260 -686
- package/app/components/workshop/TaskInspectorDrawer.vue +484 -390
- package/app/components/workshop/TranscriptTimeline.vue +60 -438
- package/app/components/workshop/agents/AgentTemplateEditModal.vue +139 -0
- package/app/components/workshop/agents/AgentTemplateTable.vue +269 -0
- package/app/components/workshop/agents/AgentTemplateToolbar.vue +67 -0
- package/app/components/workshop/blocks/ClusterRoute.vue +1 -1
- package/app/components/workshop/blocks/EventBlockAvatar.vue +114 -0
- package/app/components/workshop/blocks/EventBlockHead.vue +232 -0
- package/app/components/workshop/composer/ComposerToolbar.vue +278 -0
- package/app/components/workshop/composer/MentionMenu.vue +135 -0
- package/app/components/workshop/composer/ReplyChip.vue +65 -0
- package/app/components/workshop/composer/StatusChip.vue +171 -0
- package/app/components/workshop/console/CenterPane.vue +94 -0
- package/app/components/workshop/console/Dock.vue +71 -0
- package/app/components/workshop/console/LeftPane.vue +84 -0
- package/app/components/workshop/console/RightPane.vue +95 -0
- package/app/components/workshop/console/Topbar.vue +289 -0
- package/app/components/workshop/device-twin/DeviceTwinCard.vue +265 -0
- package/app/components/workshop/device-twin/DeviceTwinDcwSection.vue +203 -0
- package/app/components/workshop/lanes/AddMemberModal.vue +270 -0
- package/app/components/workshop/lanes/EditMemberModal.vue +106 -0
- package/app/components/workshop/lanes/LaneHeader.vue +432 -0
- package/app/components/workshop/lanes/LanesToolbar.vue +97 -0
- package/app/components/workshop/session-list/ChannelSettingsModal.vue +329 -0
- package/app/components/workshop/session-list/MountChannelModal.vue +124 -0
- package/app/components/workshop/session-list/SaveTemplateModal.vue +93 -0
- package/app/components/workshop/task-board/Card.vue +172 -0
- package/app/components/workshop/task-board/Column.vue +151 -0
- package/app/components/workshop/task-board/List.vue +157 -0
- package/app/components/workshop/task-board/StatusMenu.vue +88 -0
- package/app/components/workshop/teams/TeamAddMemberModal.vue +53 -0
- package/app/components/workshop/teams/TeamCard.vue +183 -0
- package/app/components/workshop/teams/TeamCreateModal.vue +94 -0
- package/app/components/workshop/teams/TeamDeployModal.vue +40 -0
- package/app/components/workshop/teams/TeamPluginModal.vue +119 -0
- package/app/components/workshop/terminal/OmpTerminalPanel.vue +19 -760
- package/app/components/workshop/terminal/TerminalHitlCard.vue +170 -0
- package/app/components/workshop/town/TownScene.ts +72 -961
- package/app/components/workshop/town/TownScene3D.ts +357 -4045
- package/app/components/workshop/town/TownView.vue +461 -7405
- package/app/components/workshop/town/components/TownAgentBindings.vue +380 -0
- package/app/components/workshop/town/components/TownAgentInspector.vue +546 -0
- package/app/components/workshop/town/components/TownAlarmList.vue +147 -0
- package/app/components/workshop/town/components/TownBoundaryPanel.vue +350 -0
- package/app/components/workshop/town/components/TownCalloutLayer.vue +147 -0
- package/app/components/workshop/town/components/TownChannelDock.vue +116 -0
- package/app/components/workshop/town/components/TownControlDock.vue +400 -0
- package/app/components/workshop/town/components/TownDaqNodeInspector.vue +345 -0
- package/app/components/workshop/town/components/TownDaqTree.vue +366 -0
- package/app/components/workshop/town/components/TownDcwBindSection.vue +473 -0
- package/app/components/workshop/town/components/TownDcwNodeInspector.vue +185 -0
- package/app/components/workshop/town/components/TownDcwTree.vue +280 -0
- package/app/components/workshop/town/components/TownDeviceBindings.vue +394 -0
- package/app/components/workshop/town/components/TownDeviceTransform.vue +248 -0
- package/app/components/workshop/town/components/TownEventList.vue +120 -0
- package/app/components/workshop/town/components/TownHealthBody.vue +100 -0
- package/app/components/workshop/town/components/TownKpiStrip.vue +207 -0
- package/app/components/workshop/town/components/TownLeftRail.vue +308 -0
- package/app/components/workshop/town/components/TownLoadingMask.vue +61 -0
- package/app/components/workshop/town/components/TownNavMap.vue +154 -0
- package/app/components/workshop/town/components/TownRightRail.vue +540 -0
- package/app/components/workshop/town/components/TownStage.vue +281 -0
- package/app/components/workshop/town/components/TownStageTop.vue +238 -0
- package/app/components/workshop/town/components/TownStatusBar.vue +108 -0
- package/app/components/workshop/town/components/TownTopNav.vue +367 -0
- package/app/components/workshop/town/components/TownTrendDock.vue +178 -0
- package/app/components/workshop/town/scene/town-scene-agents.ts +254 -0
- package/app/components/workshop/town/scene/town-scene-behavior.ts +194 -0
- package/app/components/workshop/town/scene/town-scene-bubbles.ts +96 -0
- package/app/components/workshop/town/scene/town-scene-core.ts +158 -0
- package/app/components/workshop/town/scene/town-scene-models.ts +109 -0
- package/app/components/workshop/town/scene/town-scene-visuals.ts +279 -0
- package/app/components/workshop/town/scene/town-scene3d-agents.ts +308 -0
- package/app/components/workshop/town/scene/town-scene3d-blocks.ts +297 -0
- package/app/components/workshop/town/scene/town-scene3d-bubbles.ts +281 -0
- package/app/components/workshop/town/scene/town-scene3d-camera.ts +282 -0
- package/app/components/workshop/town/scene/town-scene3d-devices.ts +433 -0
- package/app/components/workshop/town/scene/town-scene3d-editing.ts +490 -0
- package/app/components/workshop/town/scene/town-scene3d-events.ts +173 -0
- package/app/components/workshop/town/scene/town-scene3d-factory.ts +412 -0
- package/app/components/workshop/town/scene/town-scene3d-hud.ts +110 -0
- package/app/components/workshop/town/scene/town-scene3d-lifecycle.ts +144 -0
- package/app/components/workshop/town/scene/town-scene3d-links.ts +141 -0
- package/app/components/workshop/town/scene/town-scene3d-loop.ts +286 -0
- package/app/components/workshop/town/scene/town-scene3d-models.ts +154 -0
- package/app/components/workshop/town/scene/town-scene3d-nodes.ts +562 -0
- package/app/components/workshop/town/scene/town-scene3d-ranges.ts +273 -0
- package/app/components/workshop/town/scene/town-scene3d-renderer.ts +320 -0
- package/app/components/workshop/town/scene/town-scene3d-selection.ts +257 -0
- package/app/components/workshop/town/scene/town-scene3d-types.ts +264 -0
- package/app/components/workshop/transcript/TranscriptBlockList.vue +68 -0
- package/app/components/workshop/transcript/TranscriptEarlierPager.vue +81 -0
- package/app/components/workshop/transcript/TranscriptEmptyState.vue +153 -0
- package/app/components/workshop/transcript/TranscriptFilterBar.vue +126 -0
- package/app/components/workshop/workbench/AuthGate.vue +179 -0
- package/app/components/workshop/workbench/CreateWorkspaceModal.vue +36 -0
- package/app/components/workshop/workbench/WorkbenchHead.vue +129 -0
- package/app/components/workshop/workbench/WorkspaceCard.vue +198 -0
- package/app/components/workshop/workbench/WorkspaceEmpty.vue +56 -0
- package/app/composables/workshop/device-twin-types.ts +29 -0
- package/app/composables/workshop/event-blocks/attention.ts +58 -0
- package/app/composables/workshop/event-blocks/classify.ts +44 -0
- package/app/composables/workshop/event-blocks/clusterer.ts +231 -0
- package/app/composables/workshop/event-blocks/constants.ts +48 -0
- package/app/composables/workshop/event-blocks/fold-stream.ts +45 -0
- package/app/composables/workshop/event-blocks/markdown.ts +81 -0
- package/app/composables/workshop/event-blocks/mentions.ts +49 -0
- package/app/composables/workshop/event-blocks/text-utils.ts +100 -0
- package/app/composables/workshop/event-blocks/types.ts +40 -0
- package/app/composables/workshop/town/town-relay-props.ts +226 -0
- package/app/composables/workshop/town/town-view-types.ts +145 -0
- package/app/composables/workshop/town/useTownAgentBindings.ts +115 -0
- package/app/composables/workshop/town/useTownAgentChat.ts +203 -0
- package/app/composables/workshop/town/useTownAlarms.ts +36 -0
- package/app/composables/workshop/town/useTownCallouts.ts +174 -0
- package/app/composables/workshop/town/useTownChannels.ts +220 -0
- package/app/composables/workshop/town/useTownHealth.ts +66 -0
- package/app/composables/workshop/town/useTownHudTickers.ts +77 -0
- package/app/composables/workshop/town/useTownLayout.ts +277 -0
- package/app/composables/workshop/town/useTownNavMap.ts +301 -0
- package/app/composables/workshop/town/useTownNodeBindings.ts +345 -0
- package/app/composables/workshop/town/useTownPanelDrag.ts +91 -0
- package/app/composables/workshop/town/useTownRailData.ts +421 -0
- package/app/composables/workshop/town/useTownSceneControl.ts +92 -0
- package/app/composables/workshop/town/useTownSceneInput.ts +275 -0
- package/app/composables/workshop/town/useTownSceneRuntime.ts +390 -0
- package/app/composables/workshop/town/useTownSheets.ts +41 -0
- package/app/composables/workshop/town/useTownTrends.ts +93 -0
- package/app/composables/workshop/useChannelList.ts +88 -0
- package/app/composables/workshop/useChannelTerminals.ts +65 -0
- package/app/composables/workshop/useComposerMentions.ts +130 -0
- package/app/composables/workshop/useDeviceTwinDcwWrite.ts +77 -0
- package/app/composables/workshop/useDeviceTwinPanel.ts +56 -0
- package/app/composables/workshop/useEventBlockView.ts +159 -0
- package/app/composables/workshop/useEventBlocks.ts +33 -662
- package/app/composables/workshop/useHitlAnswer.ts +184 -0
- package/app/composables/workshop/useLaneWidths.ts +27 -0
- package/app/composables/workshop/useOmpTerminalSession.ts +424 -0
- package/app/composables/workshop/usePluginAdmin.ts +152 -0
- package/app/composables/workshop/useRuntimeConfigDraft.ts +118 -0
- package/app/composables/workshop/useSettingsGroups.ts +243 -0
- package/app/composables/workshop/useTaskBoardColumns.ts +47 -0
- package/app/composables/workshop/useTaskBoardDrag.ts +78 -0
- package/app/composables/workshop/useTaskBoardMenu.ts +60 -0
- package/app/composables/workshop/useTaskBoardTasks.ts +74 -0
- package/app/composables/workshop/useTerminalRenderer.ts +308 -0
- package/app/composables/workshop/useTranscriptEnterStage.ts +48 -0
- package/app/composables/workshop/useTranscriptHistory.ts +52 -0
- package/app/composables/workshop/useTranscriptScroll.ts +113 -0
- package/app/composables/workshop/useWorkshopApi.ts +85 -2
- package/app/composables/workshop/useWorkshopWs.ts +265 -126
- package/app/config/schema.ts +13 -0
- package/app/layouts/town.vue +21 -16
- package/app/pages/aml/api.ts +6 -0
- package/app/pages/aml/composables/useAmlDatasets.ts +38 -0
- package/app/pages/aml/composables/useAmlEntities.ts +57 -0
- package/app/pages/aml/composables/useAmlEnv.ts +191 -0
- package/app/pages/aml/composables/useAmlExperiments.ts +45 -0
- package/app/pages/aml/composables/useAmlFormat.ts +44 -0
- package/app/pages/aml/composables/useAmlJobs.ts +131 -0
- package/app/pages/aml/composables/useAmlModels.ts +56 -0
- package/app/pages/aml/composables/useAmlNotes.ts +47 -0
- package/app/pages/aml/composables/useAmlPredict.ts +93 -0
- package/app/pages/aml/constants.ts +63 -0
- package/app/pages/aml/index.vue +143 -2596
- package/app/pages/aml/styles.css +420 -0
- package/app/pages/aml/types.ts +189 -0
- package/app/pages/composables/useDashboardCharts.ts +192 -0
- package/app/pages/composables/useDashboardData.ts +144 -0
- package/app/pages/daq/[id].vue +59 -929
- package/app/pages/daq/composables/useDaqAddNode.ts +126 -0
- package/app/pages/daq/composables/useDaqDetailBinding.ts +29 -0
- package/app/pages/daq/composables/useDaqDetailFrames.ts +42 -0
- package/app/pages/daq/composables/useDaqDetailHistory.ts +199 -0
- package/app/pages/daq/composables/useDaqDetailNode.ts +53 -0
- package/app/pages/daq/composables/useDaqDetailParams.ts +138 -0
- package/app/pages/daq/composables/useDaqFilters.ts +187 -0
- package/app/pages/daq/composables/useDaqNodeWindow.ts +86 -0
- package/app/pages/daq/composables/useDaqOptimizations.ts +99 -0
- package/app/pages/daq/composables/useDaqTemplates.ts +152 -0
- package/app/pages/daq/daq-page.css +681 -0
- package/app/pages/daq/index.vue +132 -2188
- package/app/pages/dcw/[id].vue +297 -2615
- package/app/pages/dcw/composables/useDcwAddNode.ts +121 -0
- package/app/pages/dcw/composables/useDcwCards.ts +27 -0
- package/app/pages/dcw/composables/useDcwDetailScope.ts +145 -0
- package/app/pages/dcw/composables/useDcwDetailTemplates.ts +94 -0
- package/app/pages/dcw/composables/useDcwFilter.ts +29 -0
- package/app/pages/dcw/composables/useDcwLedger.ts +34 -0
- package/app/pages/dcw/composables/useDcwLineMutations.ts +115 -0
- package/app/pages/dcw/composables/useDcwLineRun.ts +60 -0
- package/app/pages/dcw/composables/useDcwProducts.ts +54 -0
- package/app/pages/dcw/composables/useDcwQuery.ts +68 -0
- package/app/pages/dcw/composables/useDcwQuickActions.ts +47 -0
- package/app/pages/dcw/composables/useDcwRecipes.ts +239 -0
- package/app/pages/dcw/composables/useDcwTemplates.ts +50 -0
- package/app/pages/dcw/composables/useDcwWrites.ts +81 -0
- package/app/pages/dcw/dcw-page.css +344 -0
- package/app/pages/dcw/index.vue +64 -986
- package/app/pages/dcw/types.ts +9 -0
- package/app/pages/index.vue +64 -925
- package/app/pages/logs/composables/useLogsFormat.ts +43 -0
- package/app/pages/logs/composables/useLogsManual.ts +63 -0
- package/app/pages/logs/composables/useLogsQuery.ts +52 -0
- package/app/pages/logs/composables/useLogsScope.ts +39 -0
- package/app/pages/logs/index.vue +57 -728
- package/app/pages/monitor/composables/useMonitorColumns.ts +69 -0
- package/app/pages/monitor/composables/useMonitorData.ts +124 -0
- package/app/pages/monitor/composables/useMonitorFormat.ts +39 -0
- package/app/pages/monitor/composables/useMonitorTerminal.ts +28 -0
- package/app/pages/monitor/types.ts +61 -0
- package/app/pages/monitor.vue +88 -658
- package/app/pages/permissions/index.vue +3 -2
- package/app/pages/plugins/index.vue +3 -2
- package/app/pages/settings.vue +7 -1403
- package/app/pages/tokens/composables/useTokenClipboard.ts +33 -0
- package/app/pages/tokens/composables/useTokenCreate.ts +93 -0
- package/app/pages/tokens/composables/useTokenRename.ts +54 -0
- package/app/pages/tokens/composables/useTokenReveal.ts +84 -0
- package/app/pages/tokens/composables/useTokensList.ts +60 -0
- package/app/pages/tokens.vue +79 -597
- package/app/pages/users.vue +5 -4
- package/app/pages/workshop/agents.vue +47 -529
- package/app/pages/workshop/composables/useAgentHarnessOptions.ts +59 -0
- package/app/pages/workshop/composables/useAgentTemplateActions.ts +42 -0
- package/app/pages/workshop/composables/useAgentTemplateDialogState.ts +24 -0
- package/app/pages/workshop/composables/useAgentTemplateForm.ts +88 -0
- package/app/pages/workshop/composables/useAgentTemplatesCatalog.ts +92 -0
- package/app/pages/workshop/composables/useTeamActions.ts +44 -0
- package/app/pages/workshop/composables/useTeamAddMemberDialog.ts +49 -0
- package/app/pages/workshop/composables/useTeamCreateDialog.ts +67 -0
- package/app/pages/workshop/composables/useTeamDeployDialog.ts +49 -0
- package/app/pages/workshop/composables/useTeamDialogState.ts +46 -0
- package/app/pages/workshop/composables/useTeamPluginDialog.ts +72 -0
- package/app/pages/workshop/composables/useTeamsCatalog.ts +100 -0
- package/app/pages/workshop/composables/useWorkbenchAuth.ts +125 -0
- package/app/pages/workshop/composables/useWorkbenchWorkspaces.ts +123 -0
- package/app/pages/workshop/composables/useWorkspaceAuth.ts +31 -0
- package/app/pages/workshop/composables/useWorkspaceChannels.ts +62 -0
- package/app/pages/workshop/composables/useWorkspacePanels.ts +56 -0
- package/app/pages/workshop/composables/useWorkspaceShell.ts +136 -0
- package/app/pages/workshop/index.vue +68 -620
- package/app/pages/workshop/schedules.vue +553 -0
- package/app/pages/workshop/teams.vue +58 -568
- package/app/pages/workshop/w/[wsId].vue +113 -596
- package/app/stores/workshop/chat.ts +434 -0
- package/app/stores/workshop/entities.ts +385 -283
- package/app/stores/workshop/events.ts +5 -4
- package/app/stores/workshop/hitl.ts +110 -7
- package/app/stores/workshop/narrow-fetch.ts +23 -0
- package/app/stores/workshop/notifications.ts +288 -0
- package/app/stores/workshop/user.ts +23 -10
- package/app/stores/workshop/workspaces.ts +12 -2
- package/config.yml +7 -1
- package/docs/aml.md +11 -0
- package/docs/cli.en.md +5 -5
- package/docs/cli.md +5 -5
- package/docs/full-test-plan.md +15 -1
- 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/i18n/dicts/dcwDetail.json +2 -0
- package/i18n/locales/en.ts +71 -0
- package/i18n/locales/zh-CN.ts +71 -0
- package/package.json +2 -3
- package/scripts/_audit/detached-instance.mjs +112 -0
- package/scripts/_audit/schedules-ui/schedules-page.png +0 -0
- package/scripts/_audit/schedules-ui/workspace-channel-tag.png +0 -0
- package/scripts/_audit/stubs/nuxt-imports.mjs +67 -0
- package/scripts/_audit/ts-register-hook.mjs +12 -0
- package/scripts/_audit/ts-resolve-hook.mjs +25 -5
- package/scripts/_audit/watchdog-recovery-test.mjs +24 -2
- package/scripts/_aw-packaged-start.cjs +22 -0
- package/scripts/_aw0746-stage12.mjs +94 -0
- package/scripts/_aw0746-stage34.mjs +134 -0
- package/scripts/_aw0746-stage5.mjs +106 -0
- package/scripts/_aw0746-stage6-aml.mjs +177 -0
- package/scripts/_aw0746-stage6b-train-sweep.mjs +142 -0
- package/scripts/_aw0746-stage7-twin.mjs +259 -0
- package/scripts/_aw0746-train-strong.py +142 -0
- package/scripts/_dbg-comm-verify.mjs +188 -0
- package/scripts/_dbg-full-feature-e2e.mjs +19 -11
- package/scripts/_dbg-im-e2e.mjs +169 -0
- package/scripts/_dbg-opt2-run.mjs +114 -0
- package/scripts/_dbg-opt2-setup.mjs +95 -0
- package/scripts/_dbg-param-map-e2e.ts +1 -1
- package/scripts/_dbg-param-map-rest-smoke.mjs +1 -1
- package/scripts/_dbg-real-scenario-e2e.mjs +246 -0
- package/scripts/_dbg-schedule-e2e.mjs +262 -0
- package/scripts/_dbg-schedule-ui-verify.mjs +115 -0
- package/scripts/_dbg-team-matrix.mjs +148 -0
- package/scripts/_dbg-ui-fullcrawl.mjs +91 -0
- package/scripts/_dbg-ui-static-audit.mjs +65 -0
- package/scripts/_dbg-write-lock-e2e.mjs +131 -0
- package/scripts/_plc-sim-detached.cjs +22 -0
- package/scripts/_probe-daq-omp-task.mjs +100 -0
- package/scripts/_probe-daq-scope-default.mjs +123 -0
- package/scripts/_probe-density.cjs +15 -0
- package/scripts/_probe-gate-model.mjs +34 -0
- package/scripts/_probe-model-eligibility.cjs +13 -0
- package/scripts/_probe-recipe-switch.mjs +92 -0
- package/scripts/_provision-injection-line.mjs +39 -0
- package/scripts/_run-matrix.ps1 +53 -0
- package/scripts/_run-real-injection-fifo-goals.mjs +367 -0
- package/scripts/acceptance-aml-db.ts +23 -0
- package/scripts/acceptance-aml-hybrid-live.mjs +94 -0
- package/scripts/acceptance-aml-hybrid-twin.ts +93 -0
- package/scripts/acceptance-hybrid-python.py +51 -0
- package/scripts/aml-ui-smoke.mjs +2 -0
- package/scripts/api-live-e2e.mjs +32 -7
- package/scripts/demo-group-chat-all-real.ts +279 -0
- package/scripts/demo-group-chat-omp-cases.ts +210 -0
- package/scripts/demo-group-chat-omp.ts +184 -0
- package/scripts/demo-group-chat-order.ts +197 -0
- package/scripts/e2e-agent-team.mjs +6 -4
- package/scripts/e2e-agentteam-chat.mjs +473 -0
- package/scripts/e2e-agentteam-real-triage.mjs +421 -0
- package/scripts/e2e-agentteam-task-flow-real.ts +443 -0
- package/scripts/e2e-aw-tui-global.mjs +8 -8
- package/scripts/e2e-channel-isolation.ts +5 -1
- package/scripts/e2e-closedloop/cleanup.mjs +27 -0
- package/scripts/e2e-closedloop/lib.mjs +109 -0
- package/scripts/e2e-closedloop/main.mjs +59 -0
- package/scripts/e2e-closedloop/scenarios-accounts.mjs +208 -0
- package/scripts/e2e-closedloop/scenarios-authz.mjs +190 -0
- package/scripts/e2e-closedloop/scenarios-daq-dcw.mjs +219 -0
- package/scripts/e2e-closedloop/scenarios-plugins.mjs +169 -0
- package/scripts/e2e-closedloop/state.mjs +10 -0
- package/scripts/e2e-crash-cycle.mjs +108 -0
- package/scripts/e2e-full-closedloop.mjs +6 -919
- package/scripts/e2e-hil-multi-user.mjs +307 -0
- package/scripts/e2e-hil-restart.mjs +339 -0
- package/scripts/e2e-hitl-live.mjs +336 -323
- package/scripts/e2e-lead-team-mgmt.ts +1 -1
- package/scripts/e2e-memory-system.ts +70 -89
- package/scripts/e2e-multiharness-team.mjs +32 -15
- package/scripts/e2e-omp-workspace.ts +21 -6
- package/scripts/e2e-parallel-execution.mjs +20 -6
- package/scripts/e2e-plc-plugin-closedloop.mjs +96 -65
- package/scripts/e2e-rest-memory.mjs +26 -11
- package/scripts/e2e-resume-crash.mjs +22 -7
- package/scripts/e2e-task-queue.ts +8 -8
- package/scripts/e2e-template-isolation.mjs +4 -2
- package/scripts/proof-omp-real.ts +189 -0
- package/scripts/real-injection-closed-loop.mjs +383 -0
- package/scripts/test-agent-runtime.ts +5 -1
- package/scripts/test-agentteam-guardrails.ts +113 -0
- package/scripts/test-agentteam-task-chat-flow.ts +420 -0
- package/scripts/test-agentteam-workflow.ts +472 -0
- package/scripts/test-collab-e2e.mjs +17 -3
- package/scripts/test-dcw-read.ts +9 -2
- package/scripts/test-event-persistence.mjs +10 -2
- package/scripts/test-full-system.ts +16 -3
- package/scripts/test-group-chat-hardening.ts +265 -0
- package/scripts/test-group-chat-unit/lib.ts +186 -0
- package/scripts/test-group-chat-unit/main.ts +45 -0
- package/scripts/test-group-chat-unit/section-a-migration.ts +75 -0
- package/scripts/test-group-chat-unit/section-b-permission-matrix.ts +88 -0
- package/scripts/test-group-chat-unit/section-c-member-lifecycle.ts +64 -0
- package/scripts/test-group-chat-unit/section-d-mention-resolution.ts +36 -0
- package/scripts/test-group-chat-unit/section-e-chat-facts.ts +97 -0
- package/scripts/test-group-chat-unit/section-f-user-notifications.ts +52 -0
- package/scripts/test-group-chat-unit/section-g-member-projection.ts +44 -0
- package/scripts/test-group-chat-unit/section-h-outbox-consistency.ts +30 -0
- package/scripts/test-group-chat-unit/section-i-read-idempotency.ts +24 -0
- package/scripts/test-group-chat-unit/section-j-permission-scope.ts +150 -0
- package/scripts/test-group-chat-unit.ts +35 -0
- package/scripts/test-hitl-decision.ts +526 -0
- package/scripts/test-hitl-legacy-channel-auth.ts +143 -0
- package/scripts/test-lane-history-live.mjs +30 -7
- package/scripts/test-memory-vector.ts +10 -0
- package/scripts/test-orchestration.ts +7 -2
- package/scripts/test-persistence-lazy.ts +7 -1
- package/scripts/test-prompt-system.mjs +46 -20
- package/scripts/test-route-reason.mjs +9 -2
- package/scripts/test-schedule-runtime.ts +309 -0
- package/scripts/test-scheduler-loop/lib.ts +321 -0
- package/scripts/test-scheduler-loop/main.ts +40 -0
- package/scripts/test-scheduler-loop/scenarios-modes.ts +95 -0
- package/scripts/test-scheduler-loop/scenarios-runtime.ts +58 -0
- package/scripts/test-scheduler-loop/scenarios-supervise.ts +183 -0
- package/scripts/test-scheduler-loop/scenarios-triage.ts +102 -0
- package/scripts/test-scheduler-loop.ts +5 -460
- package/scripts/test-supervision-watchdog.ts +105 -0
- package/scripts/test-task-engine.ts +27 -5
- package/scripts/test-task-lease-fencing.ts +154 -0
- package/scripts/test-terminal-e2e.mjs +9 -3
- package/scripts/three-system-e2e/lib.mjs +79 -0
- package/scripts/three-system-e2e/main.mjs +40 -0
- package/scripts/three-system-e2e/phases/phase-0-user-token.mjs +42 -0
- package/scripts/three-system-e2e/phases/phase-0a2-line-autoselect.mjs +35 -0
- package/scripts/three-system-e2e/phases/phase-0b-fixture-grants.mjs +39 -0
- package/scripts/three-system-e2e/phases/phase-0c-plugin-outbound-auth.mjs +95 -0
- package/scripts/three-system-e2e/phases/stage-1-health.mjs +47 -0
- package/scripts/three-system-e2e/phases/stage-2-5-team-plugins.mjs +84 -0
- package/scripts/three-system-e2e/phases/stage-2-teams-tools-hitl.mjs +184 -0
- package/scripts/three-system-e2e/phases/stage-3-diag.mjs +73 -0
- package/scripts/three-system-e2e/phases/stage-4-plugin-toggle.mjs +53 -0
- package/scripts/three-system-e2e/state.mjs +87 -0
- package/scripts/three-system-e2e.mjs +24 -646
- package/scripts/typecheck.mjs +75 -0
- package/scripts/ui/lib.mjs +14 -2
- package/scripts/ui/smoke-refactor.mjs +258 -0
- package/scripts/verify-a2a-live.mjs +15 -1
- package/scripts/verify-ws-events.mjs +19 -1
- package/server/api/system/monitor/terminal/ws.ts +51 -1
- package/server/api/workshop/agent-tools/approvals/[id]/decide.post.ts +59 -5
- package/server/api/workshop/agent-tools/approvals/index.get.ts +28 -3
- package/server/api/workshop/channel-templates/[id]/instantiate.post.ts +6 -1
- package/server/api/workshop/channels/[id]/chat/messages/[messageId]/read.post.ts +22 -0
- package/server/api/workshop/channels/[id]/chat/messages/index.get.ts +29 -0
- package/server/api/workshop/channels/[id]/chat/messages/index.post.ts +51 -0
- package/server/api/workshop/channels/[id]/chat/permissions.get.ts +35 -0
- package/server/api/workshop/channels/[id]/index.patch.ts +34 -8
- package/server/api/workshop/channels/[id]/members/[userId]/approve.post.ts +20 -0
- package/server/api/workshop/channels/[id]/members/[userId].delete.ts +21 -0
- package/server/api/workshop/channels/[id]/members/index.get.ts +23 -0
- package/server/api/workshop/channels/[id]/members/join.post.ts +30 -0
- package/server/api/workshop/channels/[id]/members/leave.post.ts +20 -0
- package/server/api/workshop/channels/[id]/messages/index.post.ts +3 -0
- package/server/api/workshop/channels/[id]/tasks/index.post.ts +8 -0
- package/server/api/workshop/channels.get.ts +21 -1
- package/server/api/workshop/hitl/pending.get.ts +27 -7
- package/server/api/workshop/hitl/respond.post.ts +86 -89
- package/server/api/workshop/notifications/index.get.ts +60 -0
- package/server/api/workshop/notifications/read.post.ts +31 -0
- package/server/api/workshop/schedules/[id]/run.post.ts +15 -0
- package/server/api/workshop/schedules/[id]/runs.get.ts +15 -0
- package/server/api/workshop/schedules/[id].delete.ts +14 -0
- package/server/api/workshop/schedules/[id].get.ts +13 -0
- package/server/api/workshop/schedules/[id].patch.ts +29 -0
- package/server/api/workshop/schedules/index.get.ts +12 -0
- package/server/api/workshop/schedules/index.post.ts +32 -0
- package/server/api/workshop/tasks/[id]/reassign.post.ts +32 -0
- package/server/api/workshop/tasks/[id]/update.post.ts +35 -0
- package/server/api/workshop/tasks/[id].get.ts +15 -6
- package/server/api/workshop/ws/audience.ts +56 -0
- package/server/api/workshop/ws/db-buffer.ts +68 -0
- package/server/api/workshop/ws/event-mapping.ts +47 -0
- package/server/api/workshop/ws/handlers.ts +132 -0
- package/server/api/workshop/ws/hub.ts +133 -0
- package/server/api/workshop/ws/index.ts +23 -0
- package/server/api/workshop/ws/notification-uplink.ts +77 -0
- package/server/api/workshop/ws/peer-sub.ts +128 -0
- package/server/api/workshop/ws/publish.ts +122 -0
- package/server/api/workshop/ws/shared.ts +94 -0
- package/server/api/workshop/ws/streams.ts +146 -0
- package/server/api/workshop/ws/subscriptions.ts +137 -0
- package/server/plugins/workshop.ts +30 -0
- package/server/plugins-builtin/diag-bridge/host/constants.mjs +25 -0
- package/server/plugins-builtin/diag-bridge/host/diagnosis.mjs +56 -0
- package/server/plugins-builtin/diag-bridge/host/helpers.mjs +126 -0
- package/server/plugins-builtin/diag-bridge/host/index.mjs +15 -0
- package/server/plugins-builtin/diag-bridge/host/plugin.mjs +296 -0
- package/server/plugins-builtin/diag-bridge/host/snapshot.mjs +93 -0
- package/server/plugins-builtin/diag-bridge/host/sweep.mjs +51 -0
- package/server/plugins-builtin/diag-bridge/index.mjs +6 -605
- package/server/repositories/user.repository.ts +13 -0
- package/server/services/system-config/contracts.ts +29 -0
- package/server/services/system-config/dispose.ts +19 -0
- package/server/services/system-config/facade.ts +26 -0
- package/server/services/system-config/groups.ts +108 -0
- package/server/services/system-config/helpers.ts +41 -0
- package/server/services/system-config/index.ts +21 -0
- package/server/services/system-config/init.ts +26 -0
- package/server/services/system-config/mutate.ts +103 -0
- package/server/services/system-config/plugins.ts +104 -0
- package/server/services/system-config/recompute.ts +66 -0
- package/server/services/system-config/snapshot.ts +59 -0
- package/server/services/system-config/state.ts +79 -0
- package/server/services/system-config/types.ts +58 -0
- package/server/services/workshop/agents/adapters/line-spawn.ts +2 -2
- package/server/services/workshop/agents/adapters/omp-rpc-client/api.ts +111 -0
- package/server/services/workshop/agents/adapters/omp-rpc-client/contracts.ts +22 -0
- package/server/services/workshop/agents/adapters/omp-rpc-client/facade.ts +7 -0
- package/server/services/workshop/agents/adapters/omp-rpc-client/frames.ts +111 -0
- package/server/services/workshop/agents/adapters/omp-rpc-client/helpers.ts +38 -0
- package/server/services/workshop/agents/adapters/omp-rpc-client/index.ts +25 -0
- package/server/services/workshop/agents/adapters/omp-rpc-client/start.ts +70 -0
- package/server/services/workshop/agents/adapters/omp-rpc-client/state.ts +65 -0
- package/server/services/workshop/agents/adapters/omp-rpc-client/stdout.ts +92 -0
- package/server/services/workshop/agents/adapters/omp-rpc-client/types.ts +115 -0
- package/server/services/workshop/agents/adapters/omp-rpc-client/usage.ts +47 -0
- package/server/services/workshop/agents/agent-interface.ts +52 -4
- package/server/services/workshop/agents/base-agent.ts +36 -8
- package/server/services/workshop/agents/claude-agent.ts +5 -0
- package/server/services/workshop/agents/codex-agent/client.ts +170 -0
- package/server/services/workshop/agents/codex-agent/core.ts +119 -0
- package/server/services/workshop/agents/codex-agent/facade.ts +8 -0
- package/server/services/workshop/agents/codex-agent/helpers.ts +13 -0
- package/server/services/workshop/agents/codex-agent/hitl.ts +138 -0
- package/server/services/workshop/agents/codex-agent/index.ts +14 -0
- package/server/services/workshop/agents/codex-agent/turn.ts +367 -0
- package/server/services/workshop/agents/codex-agent/types.ts +42 -0
- package/server/services/workshop/agents/dsh-agent.ts +5 -0
- package/server/services/workshop/agents/harness-availability.ts +127 -127
- package/server/services/workshop/agents/harness-terminal/api.ts +197 -0
- package/server/services/workshop/agents/harness-terminal/index.ts +17 -0
- package/server/services/workshop/agents/harness-terminal/io.ts +120 -0
- package/server/services/workshop/agents/harness-terminal/park.ts +55 -0
- package/server/services/workshop/agents/harness-terminal/sanitize.ts +98 -0
- package/server/services/workshop/agents/harness-terminal/session.ts +124 -0
- package/server/services/workshop/agents/harness-terminal/shared.ts +74 -0
- package/server/services/workshop/agents/hermes-agent.ts +5 -0
- package/server/services/workshop/agents/hitl-capabilities.ts +312 -0
- package/server/services/workshop/agents/hitl-decision/answers.ts +27 -0
- package/server/services/workshop/agents/hitl-decision/decide.ts +268 -0
- package/server/services/workshop/agents/hitl-decision/dispatcher.ts +81 -0
- package/server/services/workshop/agents/hitl-decision/index.ts +24 -0
- package/server/services/workshop/agents/hitl-decision/payload.ts +45 -0
- package/server/services/workshop/agents/hitl-decision/reconcile.ts +70 -0
- package/server/services/workshop/agents/hitl-decision/shared.ts +106 -0
- package/server/services/workshop/agents/hitl-decision/visibility.ts +94 -0
- package/server/services/workshop/agents/hitl-registry.ts +403 -7
- package/server/services/workshop/agents/host-tool-bridge/catalog.ts +78 -0
- package/server/services/workshop/agents/host-tool-bridge/dispatch.ts +167 -0
- package/server/services/workshop/agents/host-tool-bridge/index.ts +15 -0
- package/server/services/workshop/agents/host-tool-bridge/session.ts +22 -0
- package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +64 -0
- package/server/services/workshop/agents/host-tool-bridge/tools/memory.ts +44 -0
- package/server/services/workshop/agents/host-tool-bridge/tools/messaging.ts +182 -0
- package/server/services/workshop/agents/host-tool-bridge/tools/progress.ts +84 -0
- package/server/services/workshop/agents/host-tool-bridge/tools/tasks.ts +120 -0
- package/server/services/workshop/agents/host-tool-bridge/tools/team.ts +70 -0
- package/server/services/workshop/agents/host-tool-bridge/types.ts +31 -0
- package/server/services/workshop/agents/industrial/aml-dataset-tools.ts +276 -0
- package/server/services/workshop/agents/industrial/aml-job-tools.ts +363 -0
- package/server/services/workshop/agents/industrial/daq-tools.ts +251 -0
- package/server/services/workshop/agents/industrial/dcw-judge-tools.ts +153 -0
- package/server/services/workshop/agents/industrial/dcw-tools.ts +213 -0
- package/server/services/workshop/agents/industrial/index.ts +24 -0
- package/server/services/workshop/agents/industrial/ops-tools.ts +382 -0
- package/server/services/workshop/agents/industrial/param-tools.ts +172 -0
- package/server/services/workshop/agents/industrial/twin-tools.ts +250 -0
- package/server/services/workshop/agents/mock-agent.ts +136 -12
- package/server/services/workshop/agents/omp-agent/client.ts +116 -0
- package/server/services/workshop/agents/omp-agent/context-governance.ts +204 -0
- package/server/services/workshop/agents/omp-agent/core.ts +146 -0
- package/server/services/workshop/agents/omp-agent/event-mapping.ts +142 -0
- package/server/services/workshop/agents/omp-agent/facade.ts +8 -0
- package/server/services/workshop/agents/omp-agent/helpers.ts +37 -0
- package/server/services/workshop/agents/omp-agent/index.ts +16 -0
- package/server/services/workshop/agents/omp-agent/lifecycle.ts +80 -0
- package/server/services/workshop/agents/omp-agent/tools-steer.ts +487 -0
- package/server/services/workshop/agents/omp-agent/types.ts +45 -0
- package/server/services/workshop/agents/opencode-agent/core.ts +77 -0
- package/server/services/workshop/agents/opencode-agent/engine-agnostic.ts +274 -0
- package/server/services/workshop/agents/opencode-agent/facade.ts +8 -0
- package/server/services/workshop/agents/opencode-agent/helpers.ts +29 -0
- package/server/services/workshop/agents/opencode-agent/hitl.ts +113 -0
- package/server/services/workshop/agents/opencode-agent/index.ts +16 -0
- package/server/services/workshop/agents/opencode-agent/lifecycle.ts +44 -0
- package/server/services/workshop/agents/opencode-agent/server.ts +244 -0
- package/server/services/workshop/agents/opencode-agent/turn.ts +278 -0
- package/server/services/workshop/agents/opencode-agent/types.ts +54 -0
- package/server/services/workshop/agents/prompt-builder.ts +16 -6
- package/server/services/workshop/agents/qwen-agent.ts +6 -2
- package/server/services/workshop/agents/registry.ts +32 -2
- package/server/services/workshop/aml/job-orchestrator/broadcast.ts +37 -0
- package/server/services/workshop/aml/job-orchestrator/control.ts +94 -0
- package/server/services/workshop/aml/job-orchestrator/failure.ts +77 -0
- package/server/services/workshop/aml/job-orchestrator/index.ts +22 -0
- package/server/services/workshop/aml/job-orchestrator/process.ts +100 -0
- package/server/services/workshop/aml/job-orchestrator/shared.ts +51 -0
- package/server/services/workshop/aml/job-orchestrator/stages.ts +96 -0
- package/server/services/workshop/aml/job-orchestrator/start-job.ts +140 -0
- package/server/services/workshop/aml/job-orchestrator/status.ts +20 -0
- package/server/services/workshop/aml/job-orchestrator/submit.ts +120 -0
- package/server/services/workshop/aml/job-orchestrator/tick.ts +37 -0
- package/server/services/workshop/aml/python/__pycache__/amlkit.cpython-312.pyc +0 -0
- package/server/services/workshop/aml/python/amlkit.py +185 -120
- package/server/services/workshop/aml/python/requirements.txt +9 -7
- package/server/services/workshop/aml/python/train-hybrid-example.py +87 -0
- package/server/services/workshop/aml/twin/acceptance.ts +68 -0
- package/server/services/workshop/aml/twin/calibration-scheduler.ts +48 -0
- package/server/services/workshop/aml/twin/channel-profile.ts +43 -0
- package/server/services/workshop/aml/twin/contracts.ts +215 -0
- package/server/services/workshop/aml/twin/physics-runtime.ts +165 -0
- package/server/services/workshop/aml/twin/repo.ts +31 -0
- package/server/services/workshop/aml/twin/snapshot-service.ts +81 -0
- package/server/services/workshop/aml/twin/trial-service.ts +89 -0
- package/server/services/workshop/aml/twin/uq-ood.ts +66 -0
- package/server/services/workshop/daq/daq-controller/contracts.ts +39 -0
- package/server/services/workshop/daq/daq-controller/crud.ts +202 -0
- package/server/services/workshop/daq/daq-controller/driver-probe.ts +64 -0
- package/server/services/workshop/daq/daq-controller/facade.ts +28 -0
- package/server/services/workshop/daq/daq-controller/frames.ts +137 -0
- package/server/services/workshop/daq/daq-controller/helpers.ts +52 -0
- package/server/services/workshop/daq/daq-controller/index.ts +22 -0
- package/server/services/workshop/daq/daq-controller/ingest.ts +189 -0
- package/server/services/workshop/daq/daq-controller/runtime-control.ts +72 -0
- package/server/services/workshop/daq/daq-controller/state.ts +194 -0
- package/server/services/workshop/daq/daq-controller/sweep-alarms.ts +164 -0
- package/server/services/workshop/daq/daq-controller/tsdb-twin.ts +138 -0
- package/server/services/workshop/daq/daq-controller/types.ts +68 -0
- package/server/services/workshop/daq/daq-controller/views.ts +84 -0
- package/server/services/workshop/daq/drivers/http.ts +95 -0
- package/server/services/workshop/daq/drivers/index.ts +29 -0
- package/server/services/workshop/daq/drivers/mock.ts +130 -0
- package/server/services/workshop/daq/drivers/modbus-rtu.ts +67 -0
- package/server/services/workshop/daq/drivers/modbus-tcp.ts +307 -0
- package/server/services/workshop/daq/drivers/mqtt.ts +182 -0
- package/server/services/workshop/daq/drivers/opcua.ts +227 -0
- package/server/services/workshop/daq/drivers/registry.ts +144 -0
- package/server/services/workshop/daq/drivers/s7-stub.ts +29 -0
- package/server/services/workshop/daq/drivers/shared.ts +60 -0
- package/server/services/workshop/db/channel-member.repo.ts +122 -0
- package/server/services/workshop/db/channel.repo.ts +93 -8
- package/server/services/workshop/db/chat-message.repo.ts +233 -0
- package/server/services/workshop/db/database/index.ts +18 -0
- package/server/services/workshop/db/database/json.ts +14 -0
- package/server/services/workshop/db/database/migrations.ts +367 -0
- package/server/services/workshop/db/database/open.ts +76 -0
- package/server/services/workshop/db/database/rows.ts +374 -0
- package/server/services/workshop/db/database/schema.ts +651 -0
- package/server/services/workshop/db/database/seed-data.ts +60 -0
- package/server/services/workshop/db/database/seed.ts +145 -0
- package/server/services/workshop/db/hitl-request.repo.ts +221 -0
- package/server/services/workshop/db/notification.repo.ts +199 -0
- package/server/services/workshop/db/outbox.repo.ts +127 -0
- package/server/services/workshop/db/scheduled-task.repo.ts +235 -0
- package/server/services/workshop/db/schema.sql +185 -0
- package/server/services/workshop/db/task.repo.ts +185 -69
- package/server/services/workshop/db/transaction.ts +72 -0
- package/server/services/workshop/dcw/dcw-controller/actuation.ts +127 -0
- package/server/services/workshop/dcw/dcw-controller/bindings.ts +83 -0
- package/server/services/workshop/dcw/dcw-controller/contracts.ts +16 -0
- package/server/services/workshop/dcw/dcw-controller/control.ts +78 -0
- package/server/services/workshop/dcw/dcw-controller/crud.ts +152 -0
- package/server/services/workshop/dcw/dcw-controller/facade.ts +19 -0
- package/server/services/workshop/dcw/dcw-controller/helpers.ts +57 -0
- package/server/services/workshop/dcw/dcw-controller/index.ts +22 -0
- package/server/services/workshop/dcw/dcw-controller/lines.ts +213 -0
- package/server/services/workshop/dcw/dcw-controller/params.ts +97 -0
- package/server/services/workshop/dcw/dcw-controller/products.ts +103 -0
- package/server/services/workshop/dcw/dcw-controller/recipes.ts +137 -0
- package/server/services/workshop/dcw/dcw-controller/state.ts +66 -0
- package/server/services/workshop/dcw/dcw-controller/types.ts +57 -0
- package/server/services/workshop/dcw/dcw-controller/write.ts +147 -0
- package/server/services/workshop/dcw/dcw-node.ts +8 -0
- package/server/services/workshop/dcw/drivers/http.ts +66 -0
- package/server/services/workshop/dcw/drivers/index.ts +26 -0
- package/server/services/workshop/dcw/drivers/mock.ts +44 -0
- package/server/services/workshop/dcw/drivers/modbus-rtu.ts +93 -0
- package/server/services/workshop/dcw/drivers/modbus.ts +139 -0
- package/server/services/workshop/dcw/drivers/mqtt.ts +108 -0
- package/server/services/workshop/dcw/drivers/opcua.ts +110 -0
- package/server/services/workshop/dcw/drivers/registry.ts +118 -0
- package/server/services/workshop/dcw/drivers/shared.ts +113 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/contracts.ts +26 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/facade.ts +13 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/helpers.ts +30 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/index.ts +17 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/internal.ts +33 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/judge.ts +52 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/lock.ts +137 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/rollback.ts +190 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/state.ts +21 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/sweep.ts +77 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/types.ts +3 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/views.ts +214 -0
- package/server/services/workshop/plugins/host/api.mjs +90 -0
- package/server/services/workshop/plugins/host/config.mjs +135 -0
- package/server/services/workshop/plugins/host/index.mjs +23 -0
- package/server/services/workshop/plugins/host/init.mjs +101 -0
- package/server/services/workshop/plugins/host/load.mjs +321 -0
- package/server/services/workshop/plugins/host/reload.mjs +94 -0
- package/server/services/workshop/plugins/host/rollback.mjs +72 -0
- package/server/services/workshop/plugins/host/services.mjs +58 -0
- package/server/services/workshop/plugins/host/state.mjs +54 -0
- package/server/services/workshop/plugins/host/toggle.mjs +64 -0
- package/server/services/workshop/plugins/host.mjs +6 -890
- package/server/services/workshop/runtime/agent-runtime/contracts.ts +25 -0
- package/server/services/workshop/runtime/agent-runtime/facade.ts +7 -0
- package/server/services/workshop/runtime/agent-runtime/helpers.ts +18 -0
- package/server/services/workshop/runtime/agent-runtime/index.ts +19 -0
- package/server/services/workshop/runtime/agent-runtime/lifecycle.ts +119 -0
- package/server/services/workshop/runtime/agent-runtime/message.ts +409 -0
- package/server/services/workshop/runtime/agent-runtime/state.ts +371 -0
- package/server/services/workshop/runtime/agent-runtime/supervise.ts +188 -0
- package/server/services/workshop/runtime/agent-runtime/types.ts +186 -0
- package/server/services/workshop/runtime/channel-runtime.ts +7 -0
- package/server/services/workshop/runtime/chat-mention.ts +164 -0
- package/server/services/workshop/runtime/chat-projection.ts +246 -0
- package/server/services/workshop/runtime/execution-mode.ts +11 -2
- package/server/services/workshop/runtime/manager/a2a.ts +283 -0
- package/server/services/workshop/runtime/manager/access.ts +483 -0
- package/server/services/workshop/runtime/manager/admin-agents.ts +268 -0
- package/server/services/workshop/runtime/manager/admin-channel.ts +276 -0
- package/server/services/workshop/runtime/manager/bus.ts +182 -0
- package/server/services/workshop/runtime/manager/channel-templates.ts +171 -0
- package/server/services/workshop/runtime/manager/chat-reply.ts +181 -0
- package/server/services/workshop/runtime/manager/chat.ts +384 -0
- package/server/services/workshop/runtime/manager/contracts.ts +210 -0
- package/server/services/workshop/runtime/manager/facade.ts +24 -0
- package/server/services/workshop/runtime/manager/helpers.ts +119 -0
- package/server/services/workshop/runtime/manager/host-tools.ts +249 -0
- package/server/services/workshop/runtime/manager/index.ts +42 -0
- package/server/services/workshop/runtime/manager/internal.ts +73 -0
- package/server/services/workshop/runtime/manager/lead-team.ts +161 -0
- package/server/services/workshop/runtime/manager/notifications.ts +108 -0
- package/server/services/workshop/runtime/manager/runtime-observe.ts +300 -0
- package/server/services/workshop/runtime/manager/runtime-wiring.ts +307 -0
- package/server/services/workshop/runtime/manager/schedules.ts +302 -0
- package/server/services/workshop/runtime/manager/state.ts +644 -0
- package/server/services/workshop/runtime/manager/tasks.ts +518 -0
- package/server/services/workshop/runtime/manager/teams.ts +148 -0
- package/server/services/workshop/runtime/manager/types.ts +245 -0
- package/server/services/workshop/runtime/manager/workspace.ts +136 -0
- package/server/services/workshop/runtime/memory/contracts.ts +18 -0
- package/server/services/workshop/runtime/memory/facade.ts +10 -0
- package/server/services/workshop/runtime/memory/governance.ts +184 -0
- package/server/services/workshop/runtime/memory/helpers.ts +196 -0
- package/server/services/workshop/runtime/memory/index.ts +27 -0
- package/server/services/workshop/runtime/memory/recall.ts +216 -0
- package/server/services/workshop/runtime/memory/score.ts +33 -0
- package/server/services/workshop/runtime/memory/state.ts +40 -0
- package/server/services/workshop/runtime/memory/types.ts +44 -0
- package/server/services/workshop/runtime/memory/write.ts +93 -0
- package/server/services/workshop/runtime/permission-scope.ts +81 -0
- package/server/services/workshop/runtime/schedule-runtime.ts +320 -0
- package/server/services/workshop/runtime/scheduler-loop/contracts.ts +29 -0
- package/server/services/workshop/runtime/scheduler-loop/execute.ts +295 -0
- package/server/services/workshop/runtime/scheduler-loop/facade.ts +7 -0
- package/server/services/workshop/runtime/scheduler-loop/helpers.ts +14 -0
- package/server/services/workshop/runtime/scheduler-loop/index.ts +16 -0
- package/server/services/workshop/runtime/scheduler-loop/rules.ts +131 -0
- package/server/services/workshop/runtime/scheduler-loop/snapshot.ts +99 -0
- package/server/services/workshop/runtime/scheduler-loop/state.ts +150 -0
- package/server/services/workshop/runtime/scheduler-loop/tick.ts +157 -0
- package/server/services/workshop/runtime/scheduler-loop/types.ts +50 -0
- package/server/services/workshop/runtime/task-engine/contracts.ts +16 -0
- package/server/services/workshop/runtime/task-engine/create.ts +145 -0
- package/server/services/workshop/runtime/task-engine/facade.ts +7 -0
- package/server/services/workshop/runtime/task-engine/helpers.ts +87 -0
- package/server/services/workshop/runtime/task-engine/index.ts +15 -0
- package/server/services/workshop/runtime/task-engine/lease.ts +79 -0
- package/server/services/workshop/runtime/task-engine/lifecycle.ts +308 -0
- package/server/services/workshop/runtime/task-engine/policy.ts +113 -0
- package/server/services/workshop/runtime/task-engine/transition.ts +146 -0
- package/server/services/workshop/runtime/task-engine/types.ts +3 -0
- package/server/services/workshop/runtime/task-engine/update.ts +116 -0
- package/server/services/workshop/runtime/task-engine/views.ts +169 -0
- package/server/services/workshop/runtime/user-notification-hub.ts +192 -0
- package/server/services/workshop/settings.ts +32 -0
- package/server/services/workshop/types/task.ts +85 -0
- package/server/utils/errors.ts +2 -0
- package/server/utils/mojibake-guard.ts +29 -0
- package/shared/config/schema.json +12 -0
- package/shared/dcw-protocol/catalog.ts +203 -0
- package/shared/dcw-protocol/closed-loop.ts +137 -0
- package/shared/dcw-protocol/index.ts +19 -0
- package/shared/dcw-protocol/line.ts +131 -0
- package/shared/dcw-protocol/recipe.ts +301 -0
- package/shared/workshop-protocol.ts +327 -5
- package/tui/aw-tui.mjs +27 -6
- package/tui/lib/pickers.mjs +21 -2
- package/.output/public/_nuxt/4sIEbgcl.js +0 -42
- package/.output/public/_nuxt/B7gZokg82.js +0 -209
- package/.output/public/_nuxt/B8uy9iRW.js +0 -1
- package/.output/public/_nuxt/BC9wjTJK2.js +0 -4
- package/.output/public/_nuxt/BCGafdXT.js +0 -2
- package/.output/public/_nuxt/BDmh31hl.js +0 -1
- package/.output/public/_nuxt/BFjGV-RV2.js +0 -4108
- package/.output/public/_nuxt/BGTYYQH-.js +0 -1
- package/.output/public/_nuxt/BHA40aHa.js +0 -1
- package/.output/public/_nuxt/BJHKLJJU.js +0 -1
- package/.output/public/_nuxt/BN6iuJEg2.js +0 -1
- package/.output/public/_nuxt/BU83-NnX.js +0 -106
- package/.output/public/_nuxt/BUmHEJ77.js +0 -2
- package/.output/public/_nuxt/BY7YrV_D.js +0 -1
- package/.output/public/_nuxt/BYhEUx8t.js +0 -17
- package/.output/public/_nuxt/BneN7fbu.js +0 -75
- package/.output/public/_nuxt/Bqcgz95s.js +0 -18
- package/.output/public/_nuxt/C3J6FYKa.js +0 -1
- package/.output/public/_nuxt/C3gwHTz0.js +0 -1
- package/.output/public/_nuxt/C4DWUZ6d2.js +0 -1
- package/.output/public/_nuxt/C7UlqPeD.js +0 -1
- package/.output/public/_nuxt/CClOy-Hz2.js +0 -1
- package/.output/public/_nuxt/CFxtLwjp.js +0 -1
- package/.output/public/_nuxt/CS50LB_l.js +0 -1
- package/.output/public/_nuxt/CSkxz2NX.js +0 -3
- package/.output/public/_nuxt/CTmDn-YP.js +0 -1
- package/.output/public/_nuxt/CWoJjWmZ.js +0 -1
- package/.output/public/_nuxt/CYWVXZTS2.js +0 -7
- package/.output/public/_nuxt/C__m4EhR.js +0 -1
- package/.output/public/_nuxt/CoNpEq5X.js +0 -1
- package/.output/public/_nuxt/Crod5z2f.js +0 -1
- package/.output/public/_nuxt/Cs8pVeVG.js +0 -1
- package/.output/public/_nuxt/CssgYAAL2.js +0 -1
- package/.output/public/_nuxt/CzlMDL5H.js +0 -13
- package/.output/public/_nuxt/D0ZBQrN_2.js +0 -1
- package/.output/public/_nuxt/D6uzXueg.js +0 -2
- package/.output/public/_nuxt/D98NH8kG.js +0 -1
- package/.output/public/_nuxt/D9Oidm5I.js +0 -1
- package/.output/public/_nuxt/DBHNsT1Y.js +0 -23
- package/.output/public/_nuxt/DDgJcSET.js +0 -19
- package/.output/public/_nuxt/DGIuvyRN2.js +0 -1
- package/.output/public/_nuxt/DGj-WEBg.js +0 -1
- package/.output/public/_nuxt/DHFrCUxA2.js +0 -13
- package/.output/public/_nuxt/DIaZ2PTo2.js +0 -1
- package/.output/public/_nuxt/DKySmNPI.js +0 -14
- package/.output/public/_nuxt/DPnwL14Y.js +0 -1
- package/.output/public/_nuxt/DR12_WCA.js +0 -3
- package/.output/public/_nuxt/DTFCy6h-.js +0 -1
- package/.output/public/_nuxt/DYr1VMiQ.js +0 -6
- package/.output/public/_nuxt/DZtm4l-P2.js +0 -1
- package/.output/public/_nuxt/DdD9mCHM.js +0 -1
- package/.output/public/_nuxt/DeyBFhKH2.js +0 -4
- package/.output/public/_nuxt/Di0NY_ht.js +0 -1
- package/.output/public/_nuxt/DkGQ7lnb2.js +0 -1
- package/.output/public/_nuxt/DtYHUi5Z.js +0 -1
- package/.output/public/_nuxt/Dz_Q3Lpw2.js +0 -1
- package/.output/public/_nuxt/DzbFpZRk.js +0 -3
- package/.output/public/_nuxt/EHlEMRii.js +0 -1
- package/.output/public/_nuxt/Eke1fs-U.js +0 -1
- package/.output/public/_nuxt/H0BcqZtT.js +0 -9
- package/.output/public/_nuxt/HSYEkkce.js +0 -1
- package/.output/public/_nuxt/IREZ1eC2.js +0 -1
- package/.output/public/_nuxt/J9oU00D1.js +0 -1
- package/.output/public/_nuxt/JCoYF4IJ.js +0 -31
- package/.output/public/_nuxt/JTLM-kqr2.js +0 -1
- package/.output/public/_nuxt/KZQX7xoM.js +0 -3
- package/.output/public/_nuxt/OmpTerminalPanel.BxR5-lvi.css +0 -1
- package/.output/public/_nuxt/RYFtK4qZ2.js +0 -1
- package/.output/public/_nuxt/SSyAPaHc.js +0 -1
- package/.output/public/_nuxt/TownView.li4EMQxK.css +0 -1
- package/.output/public/_nuxt/VdLk4jLE2.js +0 -1
- package/.output/public/_nuxt/YnQxK3eG.js +0 -1
- package/.output/public/_nuxt/_id_.BhsXoEuk.css +0 -1
- package/.output/public/_nuxt/_id_.DQyj-WKN.css +0 -1
- package/.output/public/_nuxt/_wsId_.CTx-BlfF.css +0 -1
- package/.output/public/_nuxt/aLLjF2K-2.js +0 -1
- package/.output/public/_nuxt/aShsv_rG.js +0 -19
- package/.output/public/_nuxt/aWWIh8YL.js +0 -24
- package/.output/public/_nuxt/aesgXKSr.js +0 -4
- package/.output/public/_nuxt/agents.B21nUEUX.css +0 -1
- package/.output/public/_nuxt/aml.ekTjxFkf.css +0 -1
- package/.output/public/_nuxt/builds/meta/b5506ef0-f48e-4f14-a6c0-d65e505d0b09.json +0 -1
- package/.output/public/_nuxt/ca4TJ3Op.js +0 -1
- package/.output/public/_nuxt/daq.BdVmoIfe.css +0 -1
- package/.output/public/_nuxt/dcw.DCgyzpWV.css +0 -1
- package/.output/public/_nuxt/default.Bh3L2HU8.css +0 -1
- package/.output/public/_nuxt/entry.bdm0tv6M.css +0 -1
- package/.output/public/_nuxt/jZsY8yYz.js +0 -1
- package/.output/public/_nuxt/lHAxdSsj.js +0 -1
- package/.output/public/_nuxt/logs.BpKzmKsh.css +0 -1
- package/.output/public/_nuxt/monitor.D9pe7qN6.css +0 -1
- package/.output/public/_nuxt/pages.j9rzRocr.css +0 -1
- package/.output/public/_nuxt/pdk8jLGT.js +0 -1
- package/.output/public/_nuxt/permissions.DwTVlFe6.css +0 -1
- package/.output/public/_nuxt/plugins.DhiZbHU8.css +0 -1
- package/.output/public/_nuxt/settings.BRx9rIDg.css +0 -1
- package/.output/public/_nuxt/teams.BLlOPB_Z.css +0 -1
- package/.output/public/_nuxt/tokens.De8xzszn.css +0 -1
- package/.output/public/_nuxt/town.BLrD9-WH.css +0 -1
- package/.output/public/_nuxt/users.DLgZ1D0h.css +0 -1
- package/.output/public/_nuxt/vRTjoWqd.js +0 -1
- package/.output/public/_nuxt/workshop.D1jFNkrn.css +0 -1
- package/.output/public/_nuxt/xh3_vYcu.js +0 -1
- package/.output/public/_nuxt/zq5t1vyX.js +0 -1
- package/.output/server/chunks/build/Checkbox-eax2M3o-.mjs +0 -207
- package/.output/server/chunks/build/Checkbox-eax2M3o-.mjs.map +0 -1
- package/.output/server/chunks/build/OmpTerminalPanel-CVvxpsF7.mjs +0 -915
- package/.output/server/chunks/build/OmpTerminalPanel-CVvxpsF7.mjs.map +0 -1
- package/.output/server/chunks/build/PluginSlot-CcR4Ys3T.mjs +0 -400
- package/.output/server/chunks/build/PluginSlot-CcR4Ys3T.mjs.map +0 -1
- package/.output/server/chunks/build/TownView-CJ6IsDCc.mjs +0 -2791
- package/.output/server/chunks/build/TownView-CJ6IsDCc.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-CVD_H0ir.mjs +0 -804
- package/.output/server/chunks/build/_id_-CVD_H0ir.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-CtxMb3qp.mjs +0 -381
- package/.output/server/chunks/build/_id_-CtxMb3qp.mjs.map +0 -1
- package/.output/server/chunks/build/_wsId_-DpY3T-md.mjs +0 -10136
- package/.output/server/chunks/build/_wsId_-DpY3T-md.mjs.map +0 -1
- package/.output/server/chunks/build/agents-DsCkuXDV.mjs +0 -1114
- package/.output/server/chunks/build/agents-DsCkuXDV.mjs.map +0 -1
- package/.output/server/chunks/build/aml-CT0xKGKI.mjs +0 -605
- package/.output/server/chunks/build/aml-CT0xKGKI.mjs.map +0 -1
- package/.output/server/chunks/build/api-error-dul30BYQ.mjs +0 -47
- package/.output/server/chunks/build/api-error-dul30BYQ.mjs.map +0 -1
- package/.output/server/chunks/build/apiClient-BwnfOQU8.mjs +0 -81
- package/.output/server/chunks/build/apiClient-BwnfOQU8.mjs.map +0 -1
- package/.output/server/chunks/build/button-DEcZFcqN.mjs +0 -1938
- package/.output/server/chunks/build/button-DEcZFcqN.mjs.map +0 -1
- package/.output/server/chunks/build/card-Dipvaykh.mjs +0 -955
- package/.output/server/chunks/build/card-Dipvaykh.mjs.map +0 -1
- package/.output/server/chunks/build/channel-templates-Dla9FbYa.mjs +0 -847
- package/.output/server/chunks/build/channel-templates-Dla9FbYa.mjs.map +0 -1
- package/.output/server/chunks/build/checkbox-8fB-wI-T.mjs +0 -439
- package/.output/server/chunks/build/checkbox-8fB-wI-T.mjs.map +0 -1
- package/.output/server/chunks/build/client-only-D5BzSQc6.mjs +0 -43
- package/.output/server/chunks/build/client-only-D5BzSQc6.mjs.map +0 -1
- package/.output/server/chunks/build/daq-DWWSKGAV.mjs +0 -1059
- package/.output/server/chunks/build/daq-DWWSKGAV.mjs.map +0 -1
- package/.output/server/chunks/build/dcw-CT8k17_E.mjs +0 -250
- package/.output/server/chunks/build/dcw-CT8k17_E.mjs.map +0 -1
- package/.output/server/chunks/build/default-D3525UFX.mjs +0 -1487
- package/.output/server/chunks/build/default-D3525UFX.mjs.map +0 -1
- package/.output/server/chunks/build/drawer-Cmh90erI.mjs +0 -836
- package/.output/server/chunks/build/drawer-Cmh90erI.mjs.map +0 -1
- package/.output/server/chunks/build/dropdown-CGQ0KAzA.mjs +0 -14
- package/.output/server/chunks/build/dropdown-CGQ0KAzA.mjs.map +0 -1
- package/.output/server/chunks/build/dropdown-vhn1NPFs.mjs +0 -558
- package/.output/server/chunks/build/dropdown-vhn1NPFs.mjs.map +0 -1
- package/.output/server/chunks/build/initDefaultProps-DIbWwP4R.mjs +0 -21
- package/.output/server/chunks/build/initDefaultProps-DIbWwP4R.mjs.map +0 -1
- package/.output/server/chunks/build/input-number-DzpyYB99.mjs +0 -1521
- package/.output/server/chunks/build/input-number-DzpyYB99.mjs.map +0 -1
- package/.output/server/chunks/build/input-sf_BT6o6.mjs +0 -2617
- package/.output/server/chunks/build/input-sf_BT6o6.mjs.map +0 -1
- package/.output/server/chunks/build/logs--dByNyhw.mjs +0 -198
- package/.output/server/chunks/build/logs--dByNyhw.mjs.map +0 -1
- package/.output/server/chunks/build/menu-WCrlpYVh.mjs +0 -1950
- package/.output/server/chunks/build/menu-WCrlpYVh.mjs.map +0 -1
- package/.output/server/chunks/build/modal-yvUquPj5.mjs +0 -1272
- package/.output/server/chunks/build/modal-yvUquPj5.mjs.map +0 -1
- package/.output/server/chunks/build/monitor-Dh2Kvaq5.mjs +0 -2212
- package/.output/server/chunks/build/monitor-Dh2Kvaq5.mjs.map +0 -1
- package/.output/server/chunks/build/pages-BHcSBM2D.mjs +0 -518
- package/.output/server/chunks/build/pages-BHcSBM2D.mjs.map +0 -1
- package/.output/server/chunks/build/permissions-68SsNjex.mjs +0 -629
- package/.output/server/chunks/build/permissions-68SsNjex.mjs.map +0 -1
- package/.output/server/chunks/build/plugins-BNgIi61W.mjs +0 -246
- package/.output/server/chunks/build/plugins-BNgIi61W.mjs.map +0 -1
- package/.output/server/chunks/build/popconfirm-CRaHcz5O.mjs +0 -342
- package/.output/server/chunks/build/popconfirm-CRaHcz5O.mjs.map +0 -1
- package/.output/server/chunks/build/segmented-3TrWo0lS.mjs +0 -5047
- package/.output/server/chunks/build/segmented-3TrWo0lS.mjs.map +0 -1
- package/.output/server/chunks/build/select-D-CeE5vY.mjs +0 -3923
- package/.output/server/chunks/build/select-D-CeE5vY.mjs.map +0 -1
- package/.output/server/chunks/build/settings-ipYBDWdn.mjs +0 -1175
- package/.output/server/chunks/build/settings-ipYBDWdn.mjs.map +0 -1
- package/.output/server/chunks/build/space-CCBYAkXt.mjs +0 -197
- package/.output/server/chunks/build/space-CCBYAkXt.mjs.map +0 -1
- package/.output/server/chunks/build/spin-HVY81X_L.mjs +0 -358
- package/.output/server/chunks/build/spin-HVY81X_L.mjs.map +0 -1
- package/.output/server/chunks/build/switch-CelRXpcy.mjs +0 -377
- package/.output/server/chunks/build/switch-CelRXpcy.mjs.map +0 -1
- package/.output/server/chunks/build/table-BjSWwmic.mjs +0 -8883
- package/.output/server/chunks/build/table-BjSWwmic.mjs.map +0 -1
- package/.output/server/chunks/build/tabs-BM3tAh_J.mjs +0 -1925
- package/.output/server/chunks/build/tabs-BM3tAh_J.mjs.map +0 -1
- package/.output/server/chunks/build/tag-DNE9vXc0.mjs +0 -1029
- package/.output/server/chunks/build/tag-DNE9vXc0.mjs.map +0 -1
- package/.output/server/chunks/build/teams-5lx-CwFa.mjs +0 -1218
- package/.output/server/chunks/build/teams-5lx-CwFa.mjs.map +0 -1
- package/.output/server/chunks/build/tokens-q-IDT8Io.mjs +0 -908
- package/.output/server/chunks/build/tokens-q-IDT8Io.mjs.map +0 -1
- package/.output/server/chunks/build/town-BUqRobze.mjs +0 -52
- package/.output/server/chunks/build/town-BUqRobze.mjs.map +0 -1
- package/.output/server/chunks/build/town-QJWB5wng.mjs +0 -125
- package/.output/server/chunks/build/town-QJWB5wng.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqStream-DfCFpb3p.mjs +0 -395
- package/.output/server/chunks/build/useDaqStream-DfCFpb3p.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwStream-UPiX-3iO.mjs +0 -435
- package/.output/server/chunks/build/useDcwStream-UPiX-3iO.mjs.map +0 -1
- package/.output/server/chunks/build/useDeviceTwins-Yko6nNPF.mjs +0 -128
- package/.output/server/chunks/build/useDeviceTwins-Yko6nNPF.mjs.map +0 -1
- package/.output/server/chunks/build/useOpsLog-CO_VWh7t.mjs +0 -137
- package/.output/server/chunks/build/useOpsLog-CO_VWh7t.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkshopApi-NyjL0L3j.mjs +0 -90
- package/.output/server/chunks/build/useWorkshopApi-NyjL0L3j.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkshopWs-C_I7q9As.mjs +0 -1319
- package/.output/server/chunks/build/useWorkshopWs-C_I7q9As.mjs.map +0 -1
- package/.output/server/chunks/build/users-Cfd5-l2-.mjs +0 -561
- package/.output/server/chunks/build/users-Cfd5-l2-.mjs.map +0 -1
- package/.output/server/chunks/build/workshop-BIlCj_ZP.mjs +0 -931
- package/.output/server/chunks/build/workshop-BIlCj_ZP.mjs.map +0 -1
- package/.output/server/chunks/build/workspaces-Bgz5Ekwp.mjs +0 -139
- package/.output/server/chunks/build/workspaces-Bgz5Ekwp.mjs.map +0 -1
- package/scripts/test-agent-brain.ts +0 -135
- package/scripts/test-game-session.ts +0 -160
- package/scripts/test-protocol.ts +0 -156
- package/scripts/verify-game.mjs +0 -477
- package/server/api/workshop/ws.ts +0 -763
- package/server/services/system-config.ts +0 -629
- package/server/services/workshop/agents/adapters/omp-rpc-client.ts +0 -604
- package/server/services/workshop/agents/codex-agent.ts +0 -743
- package/server/services/workshop/agents/harness-terminal.ts +0 -625
- package/server/services/workshop/agents/host-tool-bridge.ts +0 -714
- package/server/services/workshop/agents/industrial-tools.ts +0 -1680
- package/server/services/workshop/agents/omp-agent.ts +0 -1199
- package/server/services/workshop/agents/opencode-agent.ts +0 -960
- package/server/services/workshop/aml/job-orchestrator.ts +0 -639
- package/server/services/workshop/daq/daq-controller.ts +0 -1284
- package/server/services/workshop/daq/drivers.ts +0 -1196
- package/server/services/workshop/db/database.ts +0 -1044
- package/server/services/workshop/dcw/dcw-controller.ts +0 -1176
- package/server/services/workshop/dcw/drivers.ts +0 -731
- package/server/services/workshop/dcw/recipe-rollback-manager.ts +0 -713
- package/server/services/workshop/runtime/agent-runtime.ts +0 -821
- package/server/services/workshop/runtime/manager.ts +0 -3050
- package/server/services/workshop/runtime/memory.ts +0 -681
- package/server/services/workshop/runtime/scheduler-loop.ts +0 -799
- package/server/services/workshop/runtime/task-engine.ts +0 -574
- package/shared/dcw-protocol.ts +0 -747
- /package/.output/public/_nuxt/{BrIJiJSN.js → BrIJiJSN2.js} +0 -0
- /package/.output/public/_nuxt/{CNs_Ozdc2.js → CNs_Ozdc.js} +0 -0
- /package/.output/public/_nuxt/{DIOBYJe3.js → DIOBYJe32.js} +0 -0
- /package/.output/public/_nuxt/{lO5tpDZ5.js → lO5tpDZ52.js} +0 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import{t as e}from"./BBrRELH32.js";import{n as t,t as n}from"./CWKEp1wx2.js";import{$ as r,A as i,B as a,C as o,Ct as s,D as c,E as l,F as u,G as d,H as f,I as p,J as m,K as h,L as g,M as _,N as v,O as y,P as b,Q as x,R as S,S as ee,St as C,T as w,U as te,V as ne,W as re,X as ie,Y as T,Z as ae,_ as oe,_t as se,a as E,at as ce,b as le,bt as D,c as ue,ct as O,d as k,dt as de,et as fe,f as A,ft as j,g as pe,gt as me,h as M,ht as N,i as P,it as F,j as he,k as I,lt as ge,m as _e,mt as ve,n as ye,nt as be,o as L,ot as xe,p as Se,pt as Ce,q as R,r as z,rt as we,s as Te,st as Ee,t as De,tt as Oe,u as ke,v as Ae,vt as je,w as B,x as Me,xt as V,y as Ne,yt as H,z as Pe}from"./BrRX-l9B2.js";var Fe=new C,Ie=new C,Le=new C,Re=new V,ze=new Oe(new C(0,1,0),0),Be=new xe;function Ve(e,t,n,r){let i=e.renderer.domElement.getBoundingClientRect(),a=Fe;if(e.camera.getWorldDirection(a),Ie.set(t-e.camera.position.x,n-e.camera.position.y,r-e.camera.position.z).dot(a)<=.1)return null;let o=Le.set(t,n,r).project(e.camera);return o.z>1||Math.abs(o.x)>1.6||Math.abs(o.y)>1.6?null:{x:i.left+(o.x+1)/2*i.width,y:i.top+(1-o.y)/2*i.height}}function He(e,t,n){let r=e.renderer.domElement.getBoundingClientRect(),i=(t-r.left)/r.width*2-1,a=-((n-r.top)/r.height)*2+1,o=Be;o.setFromCamera(Re.set(i,a),e.camera);let s=Le;return o.ray.intersectPlane(ze,s),s?{x:s.x,z:s.z}:{x:e.camera.position.x,z:e.camera.position.z}}function Ue(e,t,n){e.camTarget.x-=t,e.camTarget.z-=n}function We(e,t,n){let r=e.camera.aspect||1.6;return Math.max(t/(.82*613*r),n/779)}function Ge(e,t,n){let r=We(e,t,n);r>e.dolly&&(e.autoDolly=Math.min(40,r*1.18))}function Ke(e,t){let n={std:{yaw:0,pitch:.7,radius:1178},top:{yaw:0,pitch:1.51,radius:2400},front:{yaw:0,pitch:.09,radius:1510},side:{yaw:Math.PI/2,pitch:.33,radius:1320}};e.viewTarget={...n[t]??n.std}}function qe(e,t,n){e.viewCur={yaw:e.viewCur.yaw-t*.0052,pitch:Math.min(1.52,Math.max(.06,e.viewCur.pitch+n*.0052)),radius:e.viewCur.radius},e.viewTarget={...e.viewCur},e.markDirty()}function Je(e,t){e.autoOrbit=t}function Ye(e){return e.autoOrbit}function Xe(e,t,n){let r=e.viewCur.radius*e.dolly*.0011,i=Math.sin(e.viewCur.yaw),a=Math.cos(e.viewCur.yaw),o=Math.sin(e.viewCur.pitch);Ue(e,(a*t+o*i*n)*r,(-i*t+o*a*n)*r)}function Ze(e,t,n=900){Ke(e,t)}function Qe(e){return{pos:{x:e.camera.position.x,y:e.camera.position.y,z:e.camera.position.z},target:{x:e.camTarget.x,z:e.camTarget.z},yaw:e.viewCur.yaw,dolly:e.dolly}}function $e(e,t,n){e.camTarget.x-=t,e.camTarget.z-=n,e.camera.position.x-=t,e.camera.position.z-=n,e.markDirty()}function et(e){e.dolly=1,e.autoDolly=null,rt(e,z,P),Ke(e,`std`)}function tt(e,t){e.autoDolly=null,e.dolly=Math.min(1e3,Math.max(.001,e.dolly+t))}function nt(e,t,n){rt(e,t,n)}function rt(e,t,n){let r=performance.now(),i=e.camTarget.x,a=e.camTarget.z,o=()=>{let s=Math.min(1,(performance.now()-r)/600),c=1-(1-s)**3;e.camTarget.x=i+(t-i)*c,e.camTarget.z=a+(n-a)*c,s<1&&e.pushAnim(o)};e.pushAnim(o)}function it(e,t){let n=1-Math.exp(-t*7.2);e.autoDolly!==null&&(e.dolly+=(e.autoDolly-e.dolly)*n,Math.abs(e.autoDolly-e.dolly)<.01&&(e.autoDolly=null));let r=1-Math.exp(-t*4.8);for(let t of[`yaw`,`pitch`,`radius`])e.viewCur[t]+=(e.viewTarget[t]-e.viewCur[t])*r;e.autoOrbit&&!e.isPointerDragging()&&(e.viewCur.yaw-=t*.156,e.viewTarget.yaw=e.viewCur.yaw);let i=e.viewCur.radius*e.dolly,a=Math.cos(e.viewCur.pitch);e.camera.position.set(e.camTarget.x+i*a*Math.sin(e.viewCur.yaw),20+i*Math.sin(e.viewCur.pitch),e.camTarget.z+i*a*Math.cos(e.viewCur.yaw)),e.camera.lookAt(e.camTarget.x,20,e.camTarget.z);let o=Math.max(.05,1.2*e.dolly),s=16e3*e.dolly;(Math.abs(e.camera.near-o)>.005||Math.abs(e.camera.far-s)>1)&&(e.camera.near=o,e.camera.far=s,e.camera.updateProjectionMatrix()),e.skyDome&&(e.skyDome.position.set(e.camTarget.x,0,e.camTarget.z),e.skyDome.scale.setScalar(Math.max(1,e.dolly*1.3))),e.ground.position.set(e.camTarget.x,0,e.camTarget.z);let c=e.ground.material.map;c&&c.offset.set(e.camTarget.x/(L*16/c.repeat.x),-e.camTarget.z/(E*16/c.repeat.y));let l=e.scene.fog;l instanceof p&&(l.near=1400*e.dolly,l.far=8800*e.dolly);let u=e.keyLight.shadow.camera,d=1600*Math.max(1,e.dolly);Math.abs(u.right-d)>1&&(u.left=-d,u.right=d,u.top=2300*Math.max(1,e.dolly),u.bottom=-2300*Math.max(1,e.dolly),u.updateProjectionMatrix(),e.renderer.shadowMap.needsUpdate=!0)}var U=new xe,W=new C,G=new C,K=new F,at={X:new C(1,0,0),Y:new C(0,1,0),Z:new C(0,0,1)},ot={type:`change`},st={type:`mouseDown`,mode:null},ct={type:`mouseUp`,mode:null},lt={type:`objectChange`},ut=class extends he{constructor(e,t=null){super(void 0,t);let n=new Ot(this);this._root=n;let r=new kt;this._gizmo=r,n.add(r);let i=new At;this._plane=i,n.add(i);let a=this;function o(e,t){let n=t;Object.defineProperty(a,e,{get:function(){return n===void 0?t:n},set:function(t){n!==t&&(n=t,i[e]=t,r[e]=t,a.dispatchEvent({type:e+`-changed`,value:t}),a.dispatchEvent(ot))}}),a[e]=t,i[e]=t,r[e]=t}o(`camera`,e),o(`object`,void 0),o(`enabled`,!0),o(`axis`,null),o(`mode`,`translate`),o(`translationSnap`,null),o(`rotationSnap`,null),o(`scaleSnap`,null),o(`space`,`world`),o(`size`,1),this.viewport=null,o(`dragging`,!1),o(`showX`,!0),o(`showY`,!0),o(`showZ`,!0),o(`showXY`,!0),o(`showYZ`,!0),o(`showXZ`,!0),o(`showXYZE`,!0),o(`showE`,!0),o(`minX`,-1/0),o(`maxX`,1/0),o(`minY`,-1/0),o(`maxY`,1/0),o(`minZ`,-1/0),o(`maxZ`,1/0);let s=new C,c=new C,l=new F,u=new F,d=new C,f=new F,p=new C,m=new C,h=new C,g=new C;o(`worldPosition`,s),o(`worldPositionStart`,c),o(`worldQuaternion`,l),o(`worldQuaternionStart`,u),o(`cameraPosition`,d),o(`cameraQuaternion`,f),o(`pointStart`,p),o(`pointEnd`,m),o(`rotationAxis`,h),o(`rotationAngle`,0),o(`eye`,g),this._offset=new C,this._startNorm=new C,this._endNorm=new C,this._cameraScale=new C,this._parentPosition=new C,this._parentQuaternion=new F,this._parentQuaternionInv=new F,this._parentScale=new C,this._worldScaleStart=new C,this._worldQuaternionInv=new F,this._worldScale=new C,this._positionStart=new C,this._quaternionStart=new F,this._scaleStart=new C,this._getPointer=dt.bind(this),this._onPointerDown=pt.bind(this),this._onPointerHover=ft.bind(this),this._onPointerMove=mt.bind(this),this._onPointerUp=ht.bind(this),t!==null&&this.connect(t)}connect(e){super.connect(e),this.domElement.addEventListener(`pointerdown`,this._onPointerDown),this.domElement.addEventListener(`pointermove`,this._onPointerHover),this.domElement.addEventListener(`pointerup`,this._onPointerUp),this.domElement.style.touchAction=`none`}disconnect(){this.domElement.removeEventListener(`pointerdown`,this._onPointerDown),this.domElement.removeEventListener(`pointermove`,this._onPointerHover),this.domElement.removeEventListener(`pointermove`,this._onPointerMove),this.domElement.removeEventListener(`pointerup`,this._onPointerUp),this.domElement.style.touchAction=``}getHelper(){return this._root}pointerHover(e){if(this.object===void 0||this.dragging===!0)return;e!==null&&U.setFromCamera(e,this.camera);let t=gt(this._gizmo.picker[this.mode],U);this.axis=t?t.object.name:null}pointerDown(e){if(!(this.object===void 0||this.dragging===!0||e!=null&&e.button!==0)&&this.axis!==null){e!==null&&U.setFromCamera(e,this.camera);let t=gt(this._plane,U,!0);t&&(this.object.updateMatrixWorld(),this.object.parent.updateMatrixWorld(),this._positionStart.copy(this.object.position),this._quaternionStart.copy(this.object.quaternion),this._scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this._worldScaleStart),this.pointStart.copy(t.point).sub(this.worldPositionStart)),this.dragging=!0,st.mode=this.mode,this.dispatchEvent(st)}}pointerMove(e){let t=this.axis,n=this.mode,r=this.object,i=this.space;if(n===`scale`?i=`local`:(t===`E`||t===`XYZE`||t===`XYZ`)&&(i=`world`),r===void 0||t===null||this.dragging===!1||e!==null&&e.button!==-1)return;e!==null&&U.setFromCamera(e,this.camera);let a=gt(this._plane,U,!0);if(a){if(this.pointEnd.copy(a.point).sub(this.worldPositionStart),n===`translate`)this._offset.copy(this.pointEnd).sub(this.pointStart),i===`local`&&t!==`XYZ`&&this._offset.applyQuaternion(this._worldQuaternionInv),t.indexOf(`X`)===-1&&(this._offset.x=0),t.indexOf(`Y`)===-1&&(this._offset.y=0),t.indexOf(`Z`)===-1&&(this._offset.z=0),i===`local`&&t!==`XYZ`?this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale):this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale),r.position.copy(this._offset).add(this._positionStart),this.translationSnap&&(i===`local`&&(r.position.applyQuaternion(K.copy(this._quaternionStart).invert()),t.search(`X`)!==-1&&(r.position.x=Math.round(r.position.x/this.translationSnap)*this.translationSnap),t.search(`Y`)!==-1&&(r.position.y=Math.round(r.position.y/this.translationSnap)*this.translationSnap),t.search(`Z`)!==-1&&(r.position.z=Math.round(r.position.z/this.translationSnap)*this.translationSnap),r.position.applyQuaternion(this._quaternionStart)),i===`world`&&(r.getWorldPosition(W),t.search(`X`)!==-1&&(W.x=Math.round(W.x/this.translationSnap)*this.translationSnap),t.search(`Y`)!==-1&&(W.y=Math.round(W.y/this.translationSnap)*this.translationSnap),t.search(`Z`)!==-1&&(W.z=Math.round(W.z/this.translationSnap)*this.translationSnap),r.position.copy(r.parent.worldToLocal(W)))),r.position.x=Math.max(this.minX,Math.min(this.maxX,r.position.x)),r.position.y=Math.max(this.minY,Math.min(this.maxY,r.position.y)),r.position.z=Math.max(this.minZ,Math.min(this.maxZ,r.position.z));else if(n===`scale`){if(t.search(`XYZ`)!==-1){let e=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(e*=-1),G.set(e,e,e)}else W.copy(this.pointStart),G.copy(this.pointEnd),W.applyQuaternion(this._worldQuaternionInv),G.applyQuaternion(this._worldQuaternionInv),G.divide(W),t.search(`X`)===-1&&(G.x=1),t.search(`Y`)===-1&&(G.y=1),t.search(`Z`)===-1&&(G.z=1);r.scale.copy(this._scaleStart).multiply(G),this.scaleSnap&&(t.search(`X`)!==-1&&(r.scale.x=Math.round(r.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),t.search(`Y`)!==-1&&(r.scale.y=Math.round(r.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),t.search(`Z`)!==-1&&(r.scale.z=Math.round(r.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(n===`rotate`){this._offset.copy(this.pointEnd).sub(this.pointStart);let e=20/this.worldPosition.distanceTo(W.setFromMatrixPosition(this.camera.matrixWorld)),n=!1;t===`XYZE`?(this.rotationAxis.copy(this._offset).cross(this.eye).normalize(),this.rotationAngle=this._offset.dot(W.copy(this.rotationAxis).cross(this.eye))*e):(t===`X`||t===`Y`||t===`Z`)&&(this.rotationAxis.copy(at[t]),W.copy(at[t]),i===`local`&&W.applyQuaternion(this.worldQuaternion),W.cross(this.eye),W.length()===0?n=!0:this.rotationAngle=this._offset.dot(W.normalize())*e),(t===`E`||n)&&(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this._startNorm.copy(this.pointStart).normalize(),this._endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this._endNorm.cross(this._startNorm).dot(this.eye)<0?1:-1),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),i===`local`&&t!==`E`&&t!==`XYZE`?(r.quaternion.copy(this._quaternionStart),r.quaternion.multiply(K.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this._parentQuaternionInv),r.quaternion.copy(K.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),r.quaternion.multiply(this._quaternionStart).normalize())}this.dispatchEvent(ot),this.dispatchEvent(lt)}}pointerUp(e){(e===null||e.button===0)&&(this.dragging&&this.axis!==null&&(ct.mode=this.mode,this.dispatchEvent(ct)),this.dragging=!1,this.axis=null)}dispose(){this.disconnect(),this._root.dispose()}attach(e){return this.object=e,this._root.visible=!0,this}detach(){return this.object=void 0,this.axis=null,this._root.visible=!1,this}reset(){this.enabled&&this.dragging&&(this.object.position.copy(this._positionStart),this.object.quaternion.copy(this._quaternionStart),this.object.scale.copy(this._scaleStart),this.dispatchEvent(ot),this.dispatchEvent(lt),this.pointStart.copy(this.pointEnd))}getRaycaster(){return U}getMode(){return this.mode}setMode(e){this.mode=e}setTranslationSnap(e){this.translationSnap=e}setRotationSnap(e){this.rotationSnap=e}setScaleSnap(e){this.scaleSnap=e}setSize(e){this.size=e}setSpace(e){this.space=e}setColors(e,t,n,r){let i=this._gizmo.materialLib;i.xAxis.color.set(e),i.yAxis.color.set(t),i.zAxis.color.set(n),i.active.color.set(r),i.xAxisTransparent.color.set(e),i.yAxisTransparent.color.set(t),i.zAxisTransparent.color.set(n),i.activeTransparent.color.set(r),i.xAxis._color&&i.xAxis._color.set(e),i.yAxis._color&&i.yAxis._color.set(t),i.zAxis._color&&i.zAxis._color.set(n),i.active._color&&i.active._color.set(r),i.xAxisTransparent._color&&i.xAxisTransparent._color.set(e),i.yAxisTransparent._color&&i.yAxisTransparent._color.set(t),i.zAxisTransparent._color&&i.zAxisTransparent._color.set(n),i.activeTransparent._color&&i.activeTransparent._color.set(r)}};function dt(e){if(this.domElement.ownerDocument.pointerLockElement)return{x:0,y:0,button:e.button};{let t=this.domElement.getBoundingClientRect(),n=this.viewport,r,i,a,o;return n===null?(r=0,i=0,a=t.width,o=t.height):(r=n.x,i=t.height-n.y-n.w,a=n.z,o=n.w),{x:(e.clientX-t.left-r)/a*2-1,y:-(e.clientY-t.top-i)/o*2+1,button:e.button}}}function ft(e){if(this.enabled)switch(e.pointerType){case`mouse`:case`pen`:this.pointerHover(this._getPointer(e))}}function pt(e){this.enabled&&(document.pointerLockElement||this.domElement.setPointerCapture(e.pointerId),this.domElement.addEventListener(`pointermove`,this._onPointerMove),this.pointerHover(this._getPointer(e)),this.pointerDown(this._getPointer(e)))}function mt(e){this.enabled&&this.pointerMove(this._getPointer(e))}function ht(e){this.enabled&&(this.domElement.releasePointerCapture(e.pointerId),this.domElement.removeEventListener(`pointermove`,this._onPointerMove),this.pointerUp(this._getPointer(e)))}function gt(e,t,n){let r=t.intersectObject(e,!0);for(let e=0;e<r.length;e++)if(r[e].object.visible||n)return r[e];return!1}var _t=new b,q=new C(0,1,0),vt=new C(0,0,0),yt=new d,bt=new F,xt=new F,J=new C,St=new d,Ct=new C(1,0,0),Y=new C(0,1,0),wt=new C(0,0,1),Tt=new C,Et=new C,Dt=new C,Ot=class extends ie{constructor(e){super(),this.isTransformControlsRoot=!0,this.controls=e,this.visible=!1}updateMatrixWorld(e){let t=this.controls;t.object!==void 0&&(t.object.updateMatrixWorld(),t.object.parent===null?console.error(`TransformControls: The attached 3D object must be a part of the scene graph.`):t.object.parent.matrixWorld.decompose(t._parentPosition,t._parentQuaternion,t._parentScale),t.object.matrixWorld.decompose(t.worldPosition,t.worldQuaternion,t._worldScale),t._parentQuaternionInv.copy(t._parentQuaternion).invert(),t._worldQuaternionInv.copy(t.worldQuaternion).invert()),t.camera.updateMatrixWorld(),t.camera.matrixWorld.decompose(t.cameraPosition,t.cameraQuaternion,t._cameraScale),t.camera.isOrthographicCamera?t.camera.getWorldDirection(t.eye).negate():t.eye.copy(t.cameraPosition).sub(t.worldPosition).normalize(),this.parent&&(St.copy(this.parent.matrixWorld).invert(),St.decompose(this.position,this.quaternion,this.scale)),super.updateMatrixWorld(e)}dispose(){this.traverse(function(e){e.geometry&&e.geometry.dispose(),e.material&&e.material.dispose()})}},kt=class extends ie{constructor(){super(),this.isTransformControlsGizmo=!0,this.type=`TransformControlsGizmo`;let e=new R({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),t=new ne({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),n=e.clone();n.opacity=.15;let r=t.clone();r.opacity=.5;let i=e.clone();i.color.setHex(16711680);let o=e.clone();o.color.setHex(65280);let s=e.clone();s.color.setHex(255);let c=e.clone();c.color.setHex(16711680),c.opacity=.5;let l=e.clone();l.color.setHex(65280),l.opacity=.5;let d=e.clone();d.color.setHex(255),d.opacity=.5;let f=e.clone();f.opacity=.25;let p=e.clone();p.color.setHex(16776960),p.opacity=.25;let m=e.clone();m.color.setHex(16776960);let g=e.clone();g.color.setHex(7895160),this.materialLib={xAxis:i,yAxis:o,zAxis:s,active:m,xAxisTransparent:c,yAxisTransparent:l,zAxisTransparent:d,activeTransparent:p};let v=new _(0,.04,.1,12);v.translate(0,.05,0);let y=new B(.08,.08,.08);y.translate(0,.04,0);let b=new w;b.setAttribute(`position`,new u([0,0,0,1,0,0],3));let x=new _(.0075,.0075,.5,3);x.translate(0,.25,0);function S(e,t){let n=new H(e,.0075,3,64,t*Math.PI*2);return n.rotateY(Math.PI/2),n.rotateX(Math.PI/2),n}function ee(){let e=new w;return e.setAttribute(`position`,new u([0,0,0,1,1,1],3)),e}let C={X:[[new h(v,i),[.5,0,0],[0,0,-Math.PI/2]],[new h(v,i),[-.5,0,0],[0,0,Math.PI/2]],[new h(x,i),[0,0,0],[0,0,-Math.PI/2]]],Y:[[new h(v,o),[0,.5,0]],[new h(v,o),[0,-.5,0],[Math.PI,0,0]],[new h(x,o)]],Z:[[new h(v,s),[0,0,.5],[Math.PI/2,0,0]],[new h(v,s),[0,0,-.5],[-Math.PI/2,0,0]],[new h(x,s),null,[Math.PI/2,0,0]]],XYZ:[[new h(new ae(.1,0),f),[0,0,0]]],XY:[[new h(new B(.15,.15,.01),d),[.15,.15,0]]],YZ:[[new h(new B(.15,.15,.01),c),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new h(new B(.15,.15,.01),l),[.15,0,.15],[-Math.PI/2,0,0]]]},te={X:[[new h(new _(.2,0,.6,4),n),[.3,0,0],[0,0,-Math.PI/2]],[new h(new _(.2,0,.6,4),n),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new h(new _(.2,0,.6,4),n),[0,.3,0]],[new h(new _(.2,0,.6,4),n),[0,-.3,0],[0,0,Math.PI]]],Z:[[new h(new _(.2,0,.6,4),n),[0,0,.3],[Math.PI/2,0,0]],[new h(new _(.2,0,.6,4),n),[0,0,-.3],[-Math.PI/2,0,0]]],XYZ:[[new h(new ae(.2,0),n)]],XY:[[new h(new B(.2,.2,.01),n),[.15,.15,0]]],YZ:[[new h(new B(.2,.2,.01),n),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new h(new B(.2,.2,.01),n),[.15,0,.15],[-Math.PI/2,0,0]]]},re={START:[[new h(new ae(.01,2),r),null,null,null,`helper`]],END:[[new h(new ae(.01,2),r),null,null,null,`helper`]],DELTA:[[new a(ee(),r),null,null,null,`helper`]],X:[[new a(b,r),[-1e3,0,0],null,[1e6,1,1],`helper`]],Y:[[new a(b,r),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],`helper`]],Z:[[new a(b,r),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],`helper`]]},T={XYZE:[[new h(S(.5,1),g),null,[0,Math.PI/2,0]]],X:[[new h(S(.5,.5),i)]],Y:[[new h(S(.5,.5),o),null,[0,0,-Math.PI/2]]],Z:[[new h(S(.5,.5),s),null,[0,Math.PI/2,0]]],E:[[new h(S(.75,1),p),null,[0,Math.PI/2,0]]]},oe={AXIS:[[new a(b,r),[-1e3,0,0],null,[1e6,1,1],`helper`]]},se={XYZE:[[new h(new N(.25,10,8),n)]],X:[[new h(new H(.5,.1,4,24),n),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new h(new H(.5,.1,4,24),n),[0,0,0],[Math.PI/2,0,0]]],Z:[[new h(new H(.5,.1,4,24),n),[0,0,0],[0,0,-Math.PI/2]]],E:[[new h(new H(.75,.1,2,24),n)]]},E={X:[[new h(y,i),[.5,0,0],[0,0,-Math.PI/2]],[new h(x,i),[0,0,0],[0,0,-Math.PI/2]],[new h(y,i),[-.5,0,0],[0,0,Math.PI/2]]],Y:[[new h(y,o),[0,.5,0]],[new h(x,o)],[new h(y,o),[0,-.5,0],[0,0,Math.PI]]],Z:[[new h(y,s),[0,0,.5],[Math.PI/2,0,0]],[new h(x,s),[0,0,0],[Math.PI/2,0,0]],[new h(y,s),[0,0,-.5],[-Math.PI/2,0,0]]],XY:[[new h(new B(.15,.15,.01),d),[.15,.15,0]]],YZ:[[new h(new B(.15,.15,.01),c),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new h(new B(.15,.15,.01),l),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new h(new B(.1,.1,.1),f)]]},ce={X:[[new h(new _(.2,0,.6,4),n),[.3,0,0],[0,0,-Math.PI/2]],[new h(new _(.2,0,.6,4),n),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new h(new _(.2,0,.6,4),n),[0,.3,0]],[new h(new _(.2,0,.6,4),n),[0,-.3,0],[0,0,Math.PI]]],Z:[[new h(new _(.2,0,.6,4),n),[0,0,.3],[Math.PI/2,0,0]],[new h(new _(.2,0,.6,4),n),[0,0,-.3],[-Math.PI/2,0,0]]],XY:[[new h(new B(.2,.2,.01),n),[.15,.15,0]]],YZ:[[new h(new B(.2,.2,.01),n),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new h(new B(.2,.2,.01),n),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new h(new B(.2,.2,.2),n),[0,0,0]]]},le={X:[[new a(b,r),[-1e3,0,0],null,[1e6,1,1],`helper`]],Y:[[new a(b,r),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],`helper`]],Z:[[new a(b,r),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],`helper`]]};function D(e){let t=new ie;for(let n in e)for(let r=e[n].length;r--;){let i=e[n][r][0].clone(),a=e[n][r][1],o=e[n][r][2],s=e[n][r][3],c=e[n][r][4];i.name=n,i.tag=c,a&&i.position.set(a[0],a[1],a[2]),o&&i.rotation.set(o[0],o[1],o[2]),s&&i.scale.set(s[0],s[1],s[2]),i.updateMatrix();let l=i.geometry.clone();l.applyMatrix4(i.matrix),i.geometry=l,i.renderOrder=1/0,i.position.set(0,0,0),i.rotation.set(0,0,0),i.scale.set(1,1,1),t.add(i)}return t}this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=D(C)),this.add(this.gizmo.rotate=D(T)),this.add(this.gizmo.scale=D(E)),this.add(this.picker.translate=D(te)),this.add(this.picker.rotate=D(se)),this.add(this.picker.scale=D(ce)),this.add(this.helper.translate=D(re)),this.add(this.helper.rotate=D(oe)),this.add(this.helper.scale=D(le)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}updateMatrixWorld(e){let t=(this.mode===`scale`?`local`:this.space)===`local`?this.worldQuaternion:xt;this.gizmo.translate.visible=this.mode===`translate`,this.gizmo.rotate.visible=this.mode===`rotate`,this.gizmo.scale.visible=this.mode===`scale`,this.helper.translate.visible=this.mode===`translate`,this.helper.rotate.visible=this.mode===`rotate`,this.helper.scale.visible=this.mode===`scale`;let n=[];n=n.concat(this.picker[this.mode].children),n=n.concat(this.gizmo[this.mode].children),n=n.concat(this.helper[this.mode].children);for(let e=0;e<n.length;e++){let r=n[e];r.visible=!0,r.rotation.set(0,0,0),r.position.copy(this.worldPosition);let i;if(i=this.camera.isOrthographicCamera?(this.camera.top-this.camera.bottom)/this.camera.zoom:this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),r.scale.set(1,1,1).multiplyScalar(i*this.size/4),r.tag===`helper`){r.visible=!1,r.name===`AXIS`?(r.visible=!!this.axis,this.axis===`X`&&(K.setFromEuler(_t.set(0,0,0)),r.quaternion.copy(t).multiply(K),Math.abs(q.copy(Ct).applyQuaternion(t).dot(this.eye))>.9&&(r.visible=!1)),this.axis===`Y`&&(K.setFromEuler(_t.set(0,0,Math.PI/2)),r.quaternion.copy(t).multiply(K),Math.abs(q.copy(Y).applyQuaternion(t).dot(this.eye))>.9&&(r.visible=!1)),this.axis===`Z`&&(K.setFromEuler(_t.set(0,Math.PI/2,0)),r.quaternion.copy(t).multiply(K),Math.abs(q.copy(wt).applyQuaternion(t).dot(this.eye))>.9&&(r.visible=!1)),this.axis===`XYZE`&&(K.setFromEuler(_t.set(0,Math.PI/2,0)),q.copy(this.rotationAxis),r.quaternion.setFromRotationMatrix(yt.lookAt(vt,q,Y)),r.quaternion.multiply(K),r.visible=this.dragging),this.axis===`E`&&(r.visible=!1)):r.name===`START`?(r.position.copy(this.worldPositionStart),r.visible=this.dragging):r.name===`END`?(r.position.copy(this.worldPosition),r.visible=this.dragging):r.name===`DELTA`?(r.position.copy(this.worldPositionStart),r.quaternion.copy(this.worldQuaternionStart),W.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),W.applyQuaternion(this.worldQuaternionStart.clone().invert()),r.scale.copy(W),r.visible=this.dragging):(r.quaternion.copy(t),this.dragging?r.position.copy(this.worldPositionStart):r.position.copy(this.worldPosition),this.axis&&(r.visible=this.axis.search(r.name)!==-1));continue}if(r.quaternion.copy(t),this.mode===`translate`||this.mode===`scale`){let e=.99,n=.2;r.name===`X`&&Math.abs(q.copy(Ct).applyQuaternion(t).dot(this.eye))>e&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`Y`&&Math.abs(q.copy(Y).applyQuaternion(t).dot(this.eye))>e&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`Z`&&Math.abs(q.copy(wt).applyQuaternion(t).dot(this.eye))>e&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`XY`&&Math.abs(q.copy(wt).applyQuaternion(t).dot(this.eye))<n&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`YZ`&&Math.abs(q.copy(Ct).applyQuaternion(t).dot(this.eye))<n&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name===`XZ`&&Math.abs(q.copy(Y).applyQuaternion(t).dot(this.eye))<n&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1)}else this.mode===`rotate`&&(bt.copy(t),q.copy(this.eye).applyQuaternion(K.copy(t).invert()),r.name.search(`E`)!==-1&&r.quaternion.setFromRotationMatrix(yt.lookAt(this.eye,vt,Y)),r.name===`X`&&(K.setFromAxisAngle(Ct,Math.atan2(-q.y,q.z)),K.multiplyQuaternions(bt,K),r.quaternion.copy(K)),r.name===`Y`&&(K.setFromAxisAngle(Y,Math.atan2(q.x,q.z)),K.multiplyQuaternions(bt,K),r.quaternion.copy(K)),r.name===`Z`&&(K.setFromAxisAngle(wt,Math.atan2(q.y,q.x)),K.multiplyQuaternions(bt,K),r.quaternion.copy(K)));r.visible=r.visible&&(r.name.indexOf(`X`)===-1||this.showX),r.visible=r.visible&&(r.name.indexOf(`Y`)===-1||this.showY),r.visible=r.visible&&(r.name.indexOf(`Z`)===-1||this.showZ),r.visible=r.visible&&(r.name.indexOf(`E`)===-1||this.showX&&this.showY&&this.showZ),r.visible=r.visible&&(r.name.indexOf(`XY`)===-1||this.showXY),r.visible=r.visible&&(r.name.indexOf(`YZ`)===-1||this.showYZ),r.visible=r.visible&&(r.name.indexOf(`XZ`)===-1||this.showXZ),r.visible=r.visible&&(r.name!==`E`||this.showE),r.visible=r.visible&&(r.name!==`XYZE`||this.showXYZE),r.material._color=r.material._color||r.material.color.clone(),r.material._opacity=r.material._opacity||r.material.opacity,r.material.color.copy(r.material._color),r.material.opacity=r.material._opacity,this.enabled&&this.axis&&(r.name===this.axis||this.axis.split(``).some(function(e){return r.name===e}))&&(r.material.color.copy(this.materialLib.active.color),r.material.opacity=1)}super.updateMatrixWorld(e)}},At=class extends h{constructor(){super(new be(1e5,1e5,2,2),new R({visible:!1,wireframe:!0,side:2,transparent:!0,opacity:.1,toneMapped:!1})),this.isTransformControlsPlane=!0,this.type=`TransformControlsPlane`}updateMatrixWorld(e){let t=this.space;switch(this.position.copy(this.worldPosition),this.mode===`scale`&&(t=`local`),Tt.copy(Ct).applyQuaternion(t===`local`?this.worldQuaternion:xt),Et.copy(Y).applyQuaternion(t===`local`?this.worldQuaternion:xt),Dt.copy(wt).applyQuaternion(t===`local`?this.worldQuaternion:xt),q.copy(Et),this.mode){case`translate`:case`scale`:switch(this.axis){case`X`:q.copy(this.eye).cross(Tt),J.copy(Tt).cross(q);break;case`Y`:q.copy(this.eye).cross(Et),J.copy(Et).cross(q);break;case`Z`:q.copy(this.eye).cross(Dt),J.copy(Dt).cross(q);break;case`XY`:J.copy(Dt);break;case`YZ`:J.copy(Tt);break;case`XZ`:q.copy(Dt),J.copy(Et);break;case`XYZ`:case`E`:J.set(0,0,0)}break;default:J.set(0,0,0)}J.length()===0?this.quaternion.copy(this.cameraQuaternion):(St.lookAt(W.set(0,0,0),J,q),this.quaternion.setFromRotationMatrix(St)),super.updateMatrixWorld(e)}},jt={name:`CopyShader`,uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:`
|
|
2
|
+
|
|
3
|
+
varying vec2 vUv;
|
|
4
|
+
|
|
5
|
+
void main() {
|
|
6
|
+
|
|
7
|
+
vUv = uv;
|
|
8
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
9
|
+
|
|
10
|
+
}`,fragmentShader:`
|
|
11
|
+
|
|
12
|
+
uniform float opacity;
|
|
13
|
+
|
|
14
|
+
uniform sampler2D tDiffuse;
|
|
15
|
+
|
|
16
|
+
varying vec2 vUv;
|
|
17
|
+
|
|
18
|
+
void main() {
|
|
19
|
+
|
|
20
|
+
vec4 texel = texture2D( tDiffuse, vUv );
|
|
21
|
+
gl_FragColor = opacity * texel;
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
}`},X=class{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error(`THREE.Pass: .render() must be implemented in derived pass.`)}dispose(){}},Mt=new x(-1,1,1,-1,0,1),Nt=new class extends w{constructor(){super(),this.setAttribute(`position`,new u([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute(`uv`,new u([0,2,0,0,2,0],2))}},Pt=class{constructor(e){this._mesh=new h(Nt,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,Mt)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}},Ft=class extends X{constructor(e,t=`tDiffuse`){super(),this.textureID=t,this.uniforms=null,this.material=null,e instanceof j?(this.uniforms=e.uniforms,this.material=e):e&&(this.uniforms=D.clone(e.uniforms),this.material=new j({name:e.name===void 0?`unspecified`:e.name,defines:Object.assign({},e.defines),uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader})),this._fsQuad=new Pt(this.material)}render(e,t,n){this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=n.texture),this._fsQuad.material=this.material,this.renderToScreen?(e.setRenderTarget(null),this._fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),this._fsQuad.render(e))}dispose(){this.material.dispose(),this._fsQuad.dispose()}},It=class extends X{constructor(e,t){super(),this.scene=e,this.camera=t,this.clear=!0,this.needsSwap=!1,this.inverse=!1}render(e,t,n){let r=e.getContext(),i=e.state;i.buffers.color.setMask(!1),i.buffers.depth.setMask(!1),i.buffers.color.setLocked(!0),i.buffers.depth.setLocked(!0);let a,o;this.inverse?(a=0,o=1):(a=1,o=0),i.buffers.stencil.setTest(!0),i.buffers.stencil.setOp(r.REPLACE,r.REPLACE,r.REPLACE),i.buffers.stencil.setFunc(r.ALWAYS,a,4294967295),i.buffers.stencil.setClear(o),i.buffers.stencil.setLocked(!0),e.setRenderTarget(n),this.clear&&e.clear(),e.render(this.scene,this.camera),e.setRenderTarget(t),this.clear&&e.clear(),e.render(this.scene,this.camera),i.buffers.color.setLocked(!1),i.buffers.depth.setLocked(!1),i.buffers.color.setMask(!0),i.buffers.depth.setMask(!0),i.buffers.stencil.setLocked(!1),i.buffers.stencil.setFunc(r.EQUAL,1,4294967295),i.buffers.stencil.setOp(r.KEEP,r.KEEP,r.KEEP),i.buffers.stencil.setLocked(!0)}},Lt=class extends X{constructor(){super(),this.needsSwap=!1}render(e){e.state.buffers.stencil.setLocked(!1),e.state.buffers.stencil.setTest(!1)}},Rt=class{constructor(e,t){if(this.renderer=e,this._pixelRatio=e.getPixelRatio(),t===void 0){let n=e.getSize(new V);this._width=n.width,this._height=n.height,t=new s(this._width*this._pixelRatio,this._height*this._pixelRatio,{type:S}),t.texture.name=`EffectComposer.rt1`}else this._width=t.width,this._height=t.height;this.renderTarget1=t,this.renderTarget2=t.clone(),this.renderTarget2.texture.name=`EffectComposer.rt2`,this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new Ft(jt),this.copyPass.material.blending=0,this.timer=new je}swapBuffers(){let e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e}addPass(e){this.passes.push(e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(e,t){this.passes.splice(t,0,e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(e){let t=this.passes.indexOf(e);t!==-1&&this.passes.splice(t,1)}isLastEnabledPass(e){for(let t=e+1;t<this.passes.length;t++)if(this.passes[t].enabled)return!1;return!0}render(e){this.timer.update(),e===void 0&&(e=this.timer.getDelta());let t=this.renderer.getRenderTarget(),n=!1;for(let t=0,r=this.passes.length;t<r;t++){let r=this.passes[t];if(r.enabled!==!1){if(r.renderToScreen=this.renderToScreen&&this.isLastEnabledPass(t),r.render(this.renderer,this.writeBuffer,this.readBuffer,e,n),r.needsSwap){if(n){let t=this.renderer.getContext(),n=this.renderer.state.buffers.stencil;n.setFunc(t.NOTEQUAL,1,4294967295),this.copyPass.render(this.renderer,this.writeBuffer,this.readBuffer,e),n.setFunc(t.EQUAL,1,4294967295)}this.swapBuffers()}It!==void 0&&(r instanceof It?n=!0:r instanceof Lt&&(n=!1))}}this.renderer.setRenderTarget(t)}reset(e){if(e===void 0){let t=this.renderer.getSize(new V);this._pixelRatio=this.renderer.getPixelRatio(),this._width=t.width,this._height=t.height,e=this.renderTarget1.clone(),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.renderTarget1=e,this.renderTarget2=e.clone(),this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2}setSize(e,t){this._width=e,this._height=t;let n=this._width*this._pixelRatio,r=this._height*this._pixelRatio;this.renderTarget1.setSize(n,r),this.renderTarget2.setSize(n,r);for(let e=0;e<this.passes.length;e++)this.passes[e].setSize(n,r)}setPixelRatio(e){this._pixelRatio=e,this.setSize(this._width,this._height)}dispose(){this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.copyPass.dispose()}},zt=class extends X{constructor(e,t,n=null,r=null,i=null){super(),this.scene=e,this.camera=t,this.overrideMaterial=n,this.clearColor=r,this.clearAlpha=i,this.clear=!0,this.clearDepth=!1,this.needsSwap=!1,this.isRenderPass=!0,this._oldClearColor=new I}render(e,t,n){let r=e.autoClear;e.autoClear=!1;let i,a;this.overrideMaterial!==null&&(a=this.scene.overrideMaterial,this.scene.overrideMaterial=this.overrideMaterial),this.clearColor!==null&&(e.getClearColor(this._oldClearColor),e.setClearColor(this.clearColor,e.getClearAlpha())),this.clearAlpha!==null&&(i=e.getClearAlpha(),e.setClearAlpha(this.clearAlpha)),this.clearDepth==1&&e.clearDepth(),e.setRenderTarget(this.renderToScreen?null:n),this.clear===!0&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),e.render(this.scene,this.camera),this.clearColor!==null&&e.setClearColor(this._oldClearColor),this.clearAlpha!==null&&e.setClearAlpha(i),this.overrideMaterial!==null&&(this.scene.overrideMaterial=a),e.autoClear=r}},Bt={name:`LuminosityHighPassShader`,uniforms:{tDiffuse:{value:null},luminosityThreshold:{value:1},smoothWidth:{value:1},defaultColor:{value:new I(0)},defaultOpacity:{value:0}},vertexShader:`
|
|
25
|
+
|
|
26
|
+
varying vec2 vUv;
|
|
27
|
+
|
|
28
|
+
void main() {
|
|
29
|
+
|
|
30
|
+
vUv = uv;
|
|
31
|
+
|
|
32
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
33
|
+
|
|
34
|
+
}`,fragmentShader:`
|
|
35
|
+
|
|
36
|
+
uniform sampler2D tDiffuse;
|
|
37
|
+
uniform vec3 defaultColor;
|
|
38
|
+
uniform float defaultOpacity;
|
|
39
|
+
uniform float luminosityThreshold;
|
|
40
|
+
uniform float smoothWidth;
|
|
41
|
+
|
|
42
|
+
varying vec2 vUv;
|
|
43
|
+
|
|
44
|
+
void main() {
|
|
45
|
+
|
|
46
|
+
vec4 texel = texture2D( tDiffuse, vUv );
|
|
47
|
+
|
|
48
|
+
float v = luminance( texel.xyz );
|
|
49
|
+
|
|
50
|
+
vec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );
|
|
51
|
+
|
|
52
|
+
float alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );
|
|
53
|
+
|
|
54
|
+
gl_FragColor = mix( outputColor, texel, alpha );
|
|
55
|
+
|
|
56
|
+
}`},Vt=class e extends X{constructor(e,t=1,n,r){super(),this.strength=t,this.radius=n,this.threshold=r,this.resolution=e===void 0?new V(256,256):new V(e.x,e.y),this.clearColor=new I(0,0,0),this.needsSwap=!1,this.renderTargetsHorizontal=[],this.renderTargetsVertical=[],this.nMips=5;let i=Math.round(this.resolution.x/2),a=Math.round(this.resolution.y/2);this.renderTargetBright=new s(i,a,{type:S}),this.renderTargetBright.texture.name=`UnrealBloomPass.bright`,this.renderTargetBright.texture.generateMipmaps=!1;for(let e=0;e<this.nMips;e++){let t=new s(i,a,{type:S});t.texture.name=`UnrealBloomPass.h`+e,t.texture.generateMipmaps=!1,this.renderTargetsHorizontal.push(t);let n=new s(i,a,{type:S});n.texture.name=`UnrealBloomPass.v`+e,n.texture.generateMipmaps=!1,this.renderTargetsVertical.push(n),i=Math.round(i/2),a=Math.round(a/2)}let o=Bt;this.highPassUniforms=D.clone(o.uniforms),this.highPassUniforms.luminosityThreshold.value=r,this.highPassUniforms.smoothWidth.value=.01,this.materialHighPassFilter=new j({uniforms:this.highPassUniforms,vertexShader:o.vertexShader,fragmentShader:o.fragmentShader}),this.separableBlurMaterials=[];let c=[6,10,14,18,22];i=Math.round(this.resolution.x/2),a=Math.round(this.resolution.y/2);for(let e=0;e<this.nMips;e++)this.separableBlurMaterials.push(this._getSeparableBlurMaterial(c[e])),this.separableBlurMaterials[e].uniforms.invSize.value=new V(1/i,1/a),i=Math.round(i/2),a=Math.round(a/2);this.compositeMaterial=this._getCompositeMaterial(this.nMips),this.compositeMaterial.uniforms.blurTexture1.value=this.renderTargetsVertical[0].texture,this.compositeMaterial.uniforms.blurTexture2.value=this.renderTargetsVertical[1].texture,this.compositeMaterial.uniforms.blurTexture3.value=this.renderTargetsVertical[2].texture,this.compositeMaterial.uniforms.blurTexture4.value=this.renderTargetsVertical[3].texture,this.compositeMaterial.uniforms.blurTexture5.value=this.renderTargetsVertical[4].texture,this.compositeMaterial.uniforms.bloomStrength.value=t,this.compositeMaterial.uniforms.bloomRadius.value=.1;let l=[1,.8,.6,.4,.2];this.compositeMaterial.uniforms.bloomFactors.value=l,this.bloomTintColors=[new C(1,1,1),new C(1,1,1),new C(1,1,1),new C(1,1,1),new C(1,1,1)],this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors,this.copyUniforms=D.clone(jt.uniforms),this.blendMaterial=new j({uniforms:this.copyUniforms,vertexShader:jt.vertexShader,fragmentShader:jt.fragmentShader,premultipliedAlpha:!0,blending:2,depthTest:!1,depthWrite:!1,transparent:!0}),this._oldClearColor=new I,this._oldClearAlpha=1,this._basic=new R,this._fsQuad=new Pt(null)}dispose(){for(let e=0;e<this.renderTargetsHorizontal.length;e++)this.renderTargetsHorizontal[e].dispose();for(let e=0;e<this.renderTargetsVertical.length;e++)this.renderTargetsVertical[e].dispose();this.renderTargetBright.dispose();for(let e=0;e<this.separableBlurMaterials.length;e++)this.separableBlurMaterials[e].dispose();this.compositeMaterial.dispose(),this.blendMaterial.dispose(),this._basic.dispose(),this._fsQuad.dispose()}setSize(e,t){let n=Math.round(e/2),r=Math.round(t/2);this.renderTargetBright.setSize(n,r);for(let e=0;e<this.nMips;e++)this.renderTargetsHorizontal[e].setSize(n,r),this.renderTargetsVertical[e].setSize(n,r),this.separableBlurMaterials[e].uniforms.invSize.value=new V(1/n,1/r),n=Math.round(n/2),r=Math.round(r/2)}render(t,n,r,i,a){t.getClearColor(this._oldClearColor),this._oldClearAlpha=t.getClearAlpha();let o=t.autoClear;t.autoClear=!1,t.setClearColor(this.clearColor,0),a&&t.state.buffers.stencil.setTest(!1),this.renderToScreen&&(this._fsQuad.material=this._basic,this._basic.map=r.texture,t.setRenderTarget(null),t.clear(),this._fsQuad.render(t)),this.highPassUniforms.tDiffuse.value=r.texture,this.highPassUniforms.luminosityThreshold.value=this.threshold,this._fsQuad.material=this.materialHighPassFilter,t.setRenderTarget(this.renderTargetBright),t.clear(),this._fsQuad.render(t);let s=this.renderTargetBright;for(let n=0;n<this.nMips;n++)this._fsQuad.material=this.separableBlurMaterials[n],this.separableBlurMaterials[n].uniforms.colorTexture.value=s.texture,this.separableBlurMaterials[n].uniforms.direction.value=e.BlurDirectionX,t.setRenderTarget(this.renderTargetsHorizontal[n]),t.clear(),this._fsQuad.render(t),this.separableBlurMaterials[n].uniforms.colorTexture.value=this.renderTargetsHorizontal[n].texture,this.separableBlurMaterials[n].uniforms.direction.value=e.BlurDirectionY,t.setRenderTarget(this.renderTargetsVertical[n]),t.clear(),this._fsQuad.render(t),s=this.renderTargetsVertical[n];this._fsQuad.material=this.compositeMaterial,this.compositeMaterial.uniforms.bloomStrength.value=this.strength,this.compositeMaterial.uniforms.bloomRadius.value=this.radius,this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors,t.setRenderTarget(this.renderTargetsHorizontal[0]),t.clear(),this._fsQuad.render(t),this._fsQuad.material=this.blendMaterial,this.copyUniforms.tDiffuse.value=this.renderTargetsHorizontal[0].texture,a&&t.state.buffers.stencil.setTest(!0),this.renderToScreen?(t.setRenderTarget(null),this._fsQuad.render(t)):(t.setRenderTarget(r),this._fsQuad.render(t)),t.setClearColor(this._oldClearColor,this._oldClearAlpha),t.autoClear=o}_getSeparableBlurMaterial(e){let t=[],n=e/3;for(let r=0;r<e;r++)t.push(.39894*Math.exp(-.5*r*r/(n*n))/n);return new j({defines:{KERNEL_RADIUS:e},uniforms:{colorTexture:{value:null},invSize:{value:new V(.5,.5)},direction:{value:new V(.5,.5)},gaussianCoefficients:{value:t}},vertexShader:`
|
|
57
|
+
|
|
58
|
+
varying vec2 vUv;
|
|
59
|
+
|
|
60
|
+
void main() {
|
|
61
|
+
|
|
62
|
+
vUv = uv;
|
|
63
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
64
|
+
|
|
65
|
+
}`,fragmentShader:`
|
|
66
|
+
|
|
67
|
+
#include <common>
|
|
68
|
+
|
|
69
|
+
varying vec2 vUv;
|
|
70
|
+
|
|
71
|
+
uniform sampler2D colorTexture;
|
|
72
|
+
uniform vec2 invSize;
|
|
73
|
+
uniform vec2 direction;
|
|
74
|
+
uniform float gaussianCoefficients[KERNEL_RADIUS];
|
|
75
|
+
|
|
76
|
+
void main() {
|
|
77
|
+
|
|
78
|
+
float weightSum = gaussianCoefficients[0];
|
|
79
|
+
vec3 diffuseSum = texture2D( colorTexture, vUv ).rgb * weightSum;
|
|
80
|
+
|
|
81
|
+
for ( int i = 1; i < KERNEL_RADIUS; i ++ ) {
|
|
82
|
+
|
|
83
|
+
float x = float( i );
|
|
84
|
+
float w = gaussianCoefficients[i];
|
|
85
|
+
vec2 uvOffset = direction * invSize * x;
|
|
86
|
+
vec3 sample1 = texture2D( colorTexture, vUv + uvOffset ).rgb;
|
|
87
|
+
vec3 sample2 = texture2D( colorTexture, vUv - uvOffset ).rgb;
|
|
88
|
+
diffuseSum += ( sample1 + sample2 ) * w;
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
gl_FragColor = vec4( diffuseSum, 1.0 );
|
|
93
|
+
|
|
94
|
+
}`})}_getCompositeMaterial(e){return new j({defines:{NUM_MIPS:e},uniforms:{blurTexture1:{value:null},blurTexture2:{value:null},blurTexture3:{value:null},blurTexture4:{value:null},blurTexture5:{value:null},bloomStrength:{value:1},bloomFactors:{value:null},bloomTintColors:{value:null},bloomRadius:{value:0}},vertexShader:`
|
|
95
|
+
|
|
96
|
+
varying vec2 vUv;
|
|
97
|
+
|
|
98
|
+
void main() {
|
|
99
|
+
|
|
100
|
+
vUv = uv;
|
|
101
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
102
|
+
|
|
103
|
+
}`,fragmentShader:`
|
|
104
|
+
|
|
105
|
+
varying vec2 vUv;
|
|
106
|
+
|
|
107
|
+
uniform sampler2D blurTexture1;
|
|
108
|
+
uniform sampler2D blurTexture2;
|
|
109
|
+
uniform sampler2D blurTexture3;
|
|
110
|
+
uniform sampler2D blurTexture4;
|
|
111
|
+
uniform sampler2D blurTexture5;
|
|
112
|
+
uniform float bloomStrength;
|
|
113
|
+
uniform float bloomRadius;
|
|
114
|
+
uniform float bloomFactors[NUM_MIPS];
|
|
115
|
+
uniform vec3 bloomTintColors[NUM_MIPS];
|
|
116
|
+
|
|
117
|
+
float lerpBloomFactor( const in float factor ) {
|
|
118
|
+
|
|
119
|
+
float mirrorFactor = 1.2 - factor;
|
|
120
|
+
return mix( factor, mirrorFactor, bloomRadius );
|
|
121
|
+
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
void main() {
|
|
125
|
+
|
|
126
|
+
// 3.0 for backwards compatibility with previous alpha-based intensity
|
|
127
|
+
vec3 bloom = 3.0 * bloomStrength * (
|
|
128
|
+
lerpBloomFactor( bloomFactors[ 0 ] ) * bloomTintColors[ 0 ] * texture2D( blurTexture1, vUv ).rgb +
|
|
129
|
+
lerpBloomFactor( bloomFactors[ 1 ] ) * bloomTintColors[ 1 ] * texture2D( blurTexture2, vUv ).rgb +
|
|
130
|
+
lerpBloomFactor( bloomFactors[ 2 ] ) * bloomTintColors[ 2 ] * texture2D( blurTexture3, vUv ).rgb +
|
|
131
|
+
lerpBloomFactor( bloomFactors[ 3 ] ) * bloomTintColors[ 3 ] * texture2D( blurTexture4, vUv ).rgb +
|
|
132
|
+
lerpBloomFactor( bloomFactors[ 4 ] ) * bloomTintColors[ 4 ] * texture2D( blurTexture5, vUv ).rgb
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
float bloomAlpha = max( bloom.r, max( bloom.g, bloom.b ) );
|
|
136
|
+
gl_FragColor = vec4( bloom, bloomAlpha );
|
|
137
|
+
|
|
138
|
+
}`})}};Vt.BlurDirectionX=new V(1,0),Vt.BlurDirectionY=new V(0,1);var Ht={name:`OutputShader`,uniforms:{tDiffuse:{value:null},toneMappingExposure:{value:1}},vertexShader:`
|
|
139
|
+
precision highp float;
|
|
140
|
+
|
|
141
|
+
uniform mat4 modelViewMatrix;
|
|
142
|
+
uniform mat4 projectionMatrix;
|
|
143
|
+
|
|
144
|
+
attribute vec3 position;
|
|
145
|
+
attribute vec2 uv;
|
|
146
|
+
|
|
147
|
+
varying vec2 vUv;
|
|
148
|
+
|
|
149
|
+
void main() {
|
|
150
|
+
|
|
151
|
+
vUv = uv;
|
|
152
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
153
|
+
|
|
154
|
+
}`,fragmentShader:`
|
|
155
|
+
|
|
156
|
+
precision highp float;
|
|
157
|
+
|
|
158
|
+
uniform sampler2D tDiffuse;
|
|
159
|
+
|
|
160
|
+
#include <tonemapping_pars_fragment>
|
|
161
|
+
#include <colorspace_pars_fragment>
|
|
162
|
+
|
|
163
|
+
varying vec2 vUv;
|
|
164
|
+
|
|
165
|
+
void main() {
|
|
166
|
+
|
|
167
|
+
gl_FragColor = texture2D( tDiffuse, vUv );
|
|
168
|
+
|
|
169
|
+
// tone mapping
|
|
170
|
+
|
|
171
|
+
#ifdef LINEAR_TONE_MAPPING
|
|
172
|
+
|
|
173
|
+
gl_FragColor.rgb = LinearToneMapping( gl_FragColor.rgb );
|
|
174
|
+
|
|
175
|
+
#elif defined( REINHARD_TONE_MAPPING )
|
|
176
|
+
|
|
177
|
+
gl_FragColor.rgb = ReinhardToneMapping( gl_FragColor.rgb );
|
|
178
|
+
|
|
179
|
+
#elif defined( CINEON_TONE_MAPPING )
|
|
180
|
+
|
|
181
|
+
gl_FragColor.rgb = CineonToneMapping( gl_FragColor.rgb );
|
|
182
|
+
|
|
183
|
+
#elif defined( ACES_FILMIC_TONE_MAPPING )
|
|
184
|
+
|
|
185
|
+
gl_FragColor.rgb = ACESFilmicToneMapping( gl_FragColor.rgb );
|
|
186
|
+
|
|
187
|
+
#elif defined( AGX_TONE_MAPPING )
|
|
188
|
+
|
|
189
|
+
gl_FragColor.rgb = AgXToneMapping( gl_FragColor.rgb );
|
|
190
|
+
|
|
191
|
+
#elif defined( NEUTRAL_TONE_MAPPING )
|
|
192
|
+
|
|
193
|
+
gl_FragColor.rgb = NeutralToneMapping( gl_FragColor.rgb );
|
|
194
|
+
|
|
195
|
+
#elif defined( CUSTOM_TONE_MAPPING )
|
|
196
|
+
|
|
197
|
+
gl_FragColor.rgb = CustomToneMapping( gl_FragColor.rgb );
|
|
198
|
+
|
|
199
|
+
#endif
|
|
200
|
+
|
|
201
|
+
// color space
|
|
202
|
+
|
|
203
|
+
#ifdef SRGB_TRANSFER
|
|
204
|
+
|
|
205
|
+
gl_FragColor = sRGBTransferOETF( gl_FragColor );
|
|
206
|
+
|
|
207
|
+
#endif
|
|
208
|
+
|
|
209
|
+
}`},Ut=class extends X{constructor(){super(),this.isOutputPass=!0,this.uniforms=D.clone(Ht.uniforms),this.material=new ce({name:Ht.name,uniforms:this.uniforms,vertexShader:Ht.vertexShader,fragmentShader:Ht.fragmentShader}),this._fsQuad=new Pt(this.material),this._outputColorSpace=null,this._toneMapping=null}render(e,t,n){this.uniforms.tDiffuse.value=n.texture,this.uniforms.toneMappingExposure.value=e.toneMappingExposure,(this._outputColorSpace!==e.outputColorSpace||this._toneMapping!==e.toneMapping)&&(this._outputColorSpace=e.outputColorSpace,this._toneMapping=e.toneMapping,this.material.defines={},i.getTransfer(this._outputColorSpace)===`srgb`&&(this.material.defines.SRGB_TRANSFER=``),this._toneMapping===1?this.material.defines.LINEAR_TONE_MAPPING=``:this._toneMapping===2?this.material.defines.REINHARD_TONE_MAPPING=``:this._toneMapping===3?this.material.defines.CINEON_TONE_MAPPING=``:this._toneMapping===4?this.material.defines.ACES_FILMIC_TONE_MAPPING=``:this._toneMapping===6?this.material.defines.AGX_TONE_MAPPING=``:this._toneMapping===7?this.material.defines.NEUTRAL_TONE_MAPPING=``:this._toneMapping===5&&(this.material.defines.CUSTOM_TONE_MAPPING=``),this.material.needsUpdate=!0),this.renderToScreen===!0?(e.setRenderTarget(null),this._fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),this._fsQuad.render(e))}dispose(){this.material.dispose(),this._fsQuad.dispose()}};function Wt(e,t,n){let r=new Ce;e===`rect`?(r.moveTo(-t,-n),r.lineTo(t,-n),r.lineTo(t,n),r.lineTo(-t,n),r.closePath()):r.absellipse(0,0,t,n,0,Math.PI*2);let i=new ve(r,e===`rect`?1:56);return i.rotateX(Math.PI/2),i}function Gt(e,t,n,i=13){let a=Math.max(4,t-i),o=Math.max(4,n-i),s=new Ce,c=new r;e===`rect`?(s.moveTo(-t,-n),s.lineTo(t,-n),s.lineTo(t,n),s.lineTo(-t,n),s.closePath(),c.moveTo(-a,-o),c.lineTo(a,-o),c.lineTo(a,o),c.lineTo(-a,o),c.closePath()):(s.absellipse(0,0,t,n,0,Math.PI*2),c.absellipse(0,0,a,o,0,Math.PI*2)),s.holes.push(c);let l=new ve(s,e===`rect`?1:56);return l.rotateX(Math.PI/2),l}function Kt(e){let t=e.rotationY*Math.PI/180;e.platform.rotation.set(0,t,0),e.padRing.rotation.set(0,t,0);let n=e.platform.geometry;e.platform.geometry=Wt(e.shape,e.radiusX,e.radiusZ),n.dispose();let r=e.padRing.geometry;e.padRing.geometry=Gt(e.shape,e.radiusX,e.radiusZ),r.dispose()}function qt(e){return`#${e.toString(16).padStart(6,`0`)}`}function Z(e,t,n,r,i,a=`#41c8f4`){let o=document.createElement(`canvas`),s=o.getContext(`2d`),c=`600 21px "Geist Mono", Geist, "PingFang SC", monospace`;s.font=c;let u=Math.max(104,Math.ceil(s.measureText(t).width)+26+14);o.width=u,o.height=48,s.font=c,s.fillStyle=`rgba(10,14,20,0.8)`,s.fillRect(0,0,u,48),s.strokeStyle=`${a}66`,s.lineWidth=1,s.strokeRect(.5,.5,u-1,47),s.fillStyle=a,s.fillRect(0,0,3,48),s.fillStyle=`#dce7f0`,s.textAlign=`left`,s.textBaseline=`middle`,s.fillText(t,26,25);let d=new l(o);d.colorSpace=ge;let f=new me(new se({map:d,transparent:!0,depthTest:!1}));return f.scale.set(u/6,8,1),f.position.set(n,r,i),e.add(f),f}function Jt(e,t){let n=new g,r=new T({color:2766146,roughness:.45,metalness:.65}),i=new h(new _(7,9,5,12),r);i.position.y=2.5;let a=new h(new _(1.6,1.6,30,8),r);a.position.y=18;let o=new h(new ae(6.5),new R({color:t}));return o.material.color.multiplyScalar(4.5),o.position.y=37,n.add(i,a,o),n}function Yt(e,t,n,r){let i=r.rotationY*Math.PI/180,a=new h(Wt(r.shape,r.radiusX,r.radiusZ),new T({color:n,transparent:!0,opacity:.24,roughness:.85,metalness:.12,emissive:n,emissiveIntensity:.12,side:2}));a.rotation.set(0,i,0),a.position.set(r.x,.16,r.z),a.receiveShadow=!1,e.add(a);let o=new h(Gt(r.shape,r.radiusX,r.radiusZ),new R({color:n,transparent:!0,opacity:.52,side:2,depthWrite:!1}));o.rotation.set(0,i,0),o.position.set(r.x,.34,r.z),e.add(o);let s=Jt(e,n);return s.position.set(r.x,0,r.z),e.add(s),{platform:a,padRing:o,beacon:s}}function Xt(){let e=new h(new O(20,26,32),new R({color:16172115,transparent:!0,opacity:.8,side:2}));e.rotation.x=-Math.PI/2,e.position.y=.3;let t=new h(new O(20,26,32,1,0,Math.PI*1.5),new R({color:3530912,transparent:!0,opacity:.55,side:2,depthWrite:!1,blending:2}));return t.rotation.x=-Math.PI/2,t.position.y=.34,t.visible=!1,{ring:e,arc:t}}function Zt(e){let t=new g,n=new T({color:10465992,metalness:.85,roughness:.32}),r=new T({color:7636636,metalness:.35,roughness:.5}),i=new T({color:5596282,metalness:.4,roughness:.55}),a=new T({color:2831426,metalness:.7,roughness:.45}),o=new T({color:14674162,metalness:1,roughness:.14}),s=new T({color:12941893,metalness:.9,roughness:.35}),c=new R({color:4311284});c.color.multiplyScalar(5);let l=(e,t,n,r)=>{let i=new h(new B(e*34,t*34,n*34),r);return i.castShadow=!0,i},u=(e,t,n,r,i=20)=>{let a=new h(new _(e*34,t*34,n*34,i),r);return a.castShadow=!0,a},d=(e,n,r,i)=>(e.position.set(n*34,r*34,i*34),t.add(e),e);d(u(.17,.22,.09,a),0,.045,0),d(u(.028,.028,.95,n,10),0,.55,0);let f=new h(new H(3.06,.68,10,28),new R({color:3530912}));if(f.material.color.multiplyScalar(6),f.rotation.x=Math.PI/2,t.add(f),f.position.y=34.68,e.endsWith(`temp-tc`)){d(l(.24,.32,.24,r),0,1.2,0);let e=d(u(.014,.014,.4,n,8),.14,.85,0);e.rotation.z=-.5}else if(e.endsWith(`pressure-tx`))d(u(.13,.16,.3,n),0,1.22,0),d(u(.12,.12,.05,a),0,1.4,0),d(l(.05,.05,.2,s),0,1.1,.2);else if(e.endsWith(`tension-cell`)){d(l(.34,.2,.2,r),0,1.25,0);for(let e of[-.11,.11]){let t=d(u(.06,.06,.26,o),e,1.25,0);t.rotation.x=Math.PI/2}}else if(e.endsWith(`line-encoder`)){d(l(.34,.05,.05,n),.14,1.28,0);let e=d(u(.16,.16,.05,a),.32,1.28,0);e.rotation.z=Math.PI/2,d(new h(new H(.1*34,.51,10,26),f.material),.35,1.28,0)}else if(e.endsWith(`vision-cam`)){d(l(.28,.2,.36,i),0,1.3,0);let e=d(u(.07,.09,.14,a),0,1.3,.24);e.rotation.x=Math.PI/2,d(new h(new H(2.55,.012*34,10,24),f.material),0,1.3,.3)}else e.endsWith(`power-meter`)&&(d(l(.32,.42,.18,r),0,1.3,0),d(u(.012,.012,.42,n,8),.1,1.7,0),d(new h(new N(.028*34,10,8),f.material),.1,1.92,0),d(l(.2,.06,.02,c),0,1.42,.1));return{group:t,ledRing:f}}function Qt(){let e=new g,t=new T({color:2766146,roughness:.42,metalness:.62}),n=new T({color:1317668,roughness:.6,metalness:.4}),r=new R({color:4311284}),i=new h(new c(.42,.62,8,16),t);i.position.y=.86;let a=new h(new N(.32,16,12),t);a.position.y=1.62;let o=new h(new B(.4,.1,.12),r);o.position.set(0,1.66,.27);let s=new h(new N(.14,12,8),r);s.position.set(0,1.1,.36);let l=new h(new _(.5,.62,.26,16),n);l.position.y=.16;let u=new h(new _(.03,.03,.5,6),n);u.position.set(0,2.04,0);let d=new h(new N(.08,10,8),r);return d.position.set(0,2.34,0),e.add(i,a,o,s,l,u,d),e}function $t(e){let t=1024,n=document.createElement(`canvas`);n.width=t,n.height=t;let r=n.getContext(`2d`),i=r.createLinearGradient(0,0,t,t);i.addColorStop(0,`#151f36`),i.addColorStop(.5,`#101a2d`),i.addColorStop(1,`#131c31`),r.fillStyle=i,r.fillRect(0,0,t,t),r.strokeStyle=`rgba(42,63,102,0.32)`,r.lineWidth=2;for(let e=0;e<=8;e++){let n=e/8*t;r.beginPath(),r.moveTo(n,0),r.lineTo(n,t),r.stroke(),r.beginPath(),r.moveTo(0,n),r.lineTo(t,n),r.stroke()}r.strokeStyle=`rgba(42,63,102,0.2)`,r.lineWidth=1;for(let e=0;e<=32;e++){let n=e/32*t;r.beginPath(),r.moveTo(n,0),r.lineTo(n,t),r.stroke(),r.beginPath(),r.moveTo(0,n),r.lineTo(t,n),r.stroke()}r.fillStyle=`rgba(255,255,255,0.02)`;for(let e=0;e<900;e++){let n=e*733%t,i=e*151%t;r.fillRect(n,i,2,2)}let a=new l(n);return a.colorSpace=ge,a.wrapS=Ee,a.wrapT=Ee,a.repeat.set(23,17),a.anisotropy=Math.min(8,e.capabilities.getMaxAnisotropy()),a}function en(){let e=document.createElement(`canvas`);e.width=1024,e.height=256;let t=e.getContext(`2d`),n=t.createLinearGradient(0,0,0,256);n.addColorStop(0,`#080d16`),n.addColorStop(.4,`#121b27`),n.addColorStop(.64,`#22303e`),n.addColorStop(.84,`#3b4b5b`),n.addColorStop(1,`#2a3644`),t.fillStyle=n,t.fillRect(0,0,e.width,e.height);let r=20260831,i=()=>(r=(r*1103515245+12345)%2147483648,r/2147483648);for(let n=0;n<220;n++){let n=i()*e.width,r=i()*i()*118,a=i()<.88?1:2,o=.12+i()*.5;t.fillStyle=i()<.24?`rgba(160,220,255,${o.toFixed(2)})`:`rgba(232,240,250,${o.toFixed(2)})`,t.beginPath(),t.arc(n,r,a,0,Math.PI*2),t.fill()}let a=new l(e);a.colorSpace=ge;let o=new N(5600,24,16),s=new R({map:a,side:1,fog:!1,depthWrite:!1}),c=new h(o,s);return c.position.set(z,0,P),c.renderOrder=-10,c}function tn(e,t){try{let n=e.material;return n.map=$t(t),n.color.set(16777215),n.roughness=.94,n.metalness=.06,n.envMapIntensity=.28,n.needsUpdate=!0,!0}catch{}return!1}function nn(e){e.renderer=new le({antialias:!0,alpha:!0,powerPreference:`high-performance`}),e.renderer.setPixelRatio(Math.min(window.devicePixelRatio,2)),e.renderer.setSize(e.el.clientWidth||1100,e.el.clientHeight||700),e.renderer.shadowMap.enabled=!0,e.renderer.shadowMap.type=2,e.renderer.shadowMap.autoUpdate=!1,e.renderer.outputColorSpace=ge,e.renderer.toneMapping=4,e.renderer.toneMappingExposure=1.12,e.renderer.info.autoReset=!1,e.el.appendChild(e.renderer.domElement),e.resizeOb=new ResizeObserver(()=>{let t=e.el.clientWidth,n=e.el.clientHeight;t<2||n<2||(e.renderer.setSize(t,n),e.composer.setSize(t,n),e.camera.aspect=t/n,e.camera.updateProjectionMatrix(),e.markDirty())}),e.resizeOb.observe(e.el);let t=null;e.renderer.domElement.addEventListener(`pointerdown`,e=>{t=e.button===0?{x:e.clientX,y:e.clientY}:null}),e.renderer.domElement.addEventListener(`pointerup`,n=>{if(n.button!==0||e.pointerDrag||e.tControls?.dragging)return;if(t&&Math.hypot(n.clientX-t.x,n.clientY-t.y)>8){t=null;return}t=null;let r=e.screenToWorld(n.clientX,n.clientY),i=e.pickBeacon(r.x,r.z);if(i){e.setSelected(null),e.selectChannel(i.cid),e.focusTo(i.x,i.z);return}let a=e.pickAt(r.x,r.z);if(a){e.setSelected(a),e.selectedChannel&&e.selectChannel(null);return}let o=e.pickChannel(r.x,r.z);e.setSelected(null),o&&e.mode===`edit`&&e.selectChannel(o)}),e.renderer.domElement.addEventListener(`dblclick`,t=>{if(e.pointerDrag)return;let n=e.screenToWorld(t.clientX,t.clientY),r=e.pickAt(n.x,n.z);if(r?.kind===`agent`){let t=e.agents.get(r.id);t&&e.focusTo(t.root.position.x,t.root.position.z)}else if(r?.kind===`device`){let t=e.deviceNodes.get(r.id);t&&e.focusTo(t.root.position.x,t.root.position.z)}else{let t=e.pickChannel(n.x,n.z),r=t?e.blocks.get(t):void 0;r&&(e.selectChannel(t),e.focusTo(r.x,r.z))}}),e.scene=new de,e.scene.background=new I(659224),e.scene.fog=new p(1779766,1400,8800);try{let t=new Ne(e.renderer);e.scene.environment=t.fromScene(new De,.04).texture,e.scene.environmentIntensity=.42,t.dispose()}catch{}e.skyDome=en(),e.scene.add(e.skyDome);for(let t=0;t<4;t++){let n=new h(new H(16,6,8,20),new R({color:16172115,transparent:!0,opacity:.95,depthTest:!1}));n.rotation.x=Math.PI/2,n.position.y=1.4,n.visible=!1,e.scene.add(n),e.resizeHandles.push({mesh:n,cid:``,handle:t})}for(let t=0;t<4;t++){let n=new h(new H(10,4,8,16),new R({color:4311284,transparent:!0,opacity:.95,depthTest:!1}));n.rotation.x=Math.PI/2,n.position.y=1.2,n.visible=!1,e.scene.add(n),e.agentRangeHandles.push({mesh:n,agentId:``,handle:t})}let n=new h(new O(.92,1,56),new R({color:16172115,transparent:!0,opacity:.85,side:2,depthWrite:!1,blending:2}));n.rotation.x=-Math.PI/2,n.position.y=.5,n.visible=!1,n.renderOrder=5,e.scene.add(n),e.selRing=n,e.camera=new fe(55,(e.el.clientWidth||1100)/(e.el.clientHeight||700),1,12e3),e.camera.position.set(z,760,P+900),e.camera.lookAt(z,20,P);let r=new ut(e.camera,e.renderer.domElement);r.size=.85,r.setMode(`translate`),r.showY=!1,r.addEventListener(`dragging-changed`,t=>{if(!t.value){let t=e.selected;t?.kind===`device`&&e.deviceNodes.has(t.id)&&e.persistDeviceTransform(t.id)}}),r.addEventListener(`objectChange`,()=>{let t=e.selected;if(!t||t.kind!==`device`)return;let n=e.deviceNodes.get(t.id);if(n){if(r.mode===`scale`&&Math.abs(n.root.scale.x-1)>1e-4){let r=e.scalables.get(`device:${t.id}`)?.userScale??1;e.setModelScale(t.id,Math.min(50,Math.max(.02,r*n.root.scale.x)),`device`),n.root.scale.set(1,1,1)}e.markDirty()}}),e.tControls=r,e.scene.add(r.getHelper()),e.scene.add(new Me(13690094,1.6));let i=new Pe(10471400,3813157,.7);e.scene.add(i);let a=new v(16774368,3.2);a.position.set(z+500,900,P+300),a.castShadow=!0,e.keyLight=a,a.shadow.mapSize.set(2048,2048),a.shadow.camera.left=-1400,a.shadow.camera.right=1400,a.shadow.camera.top=2e3,a.shadow.camera.bottom=-2e3,a.shadow.normalBias=2,a.shadow.bias=-2e-4,a.shadow.radius=6,e.scene.add(a);let o=new v(8961023,.75);o.position.set(z-1200,900,P-800),e.scene.add(o);let c=new v(4311284,1.4);c.position.set(z-1400,620,P-1e3),e.scene.add(c);let l=new v(3530912,.4);l.position.set(z+700,380,P+900),e.scene.add(l);let u=new T({color:16777215,roughness:.62,metalness:.3,envMapIntensity:.42});e.ground=new h(new be(L*16,E*16),u),e.ground.rotation.x=-Math.PI/2,e.ground.receiveShadow=!0,e.scene.add(e.ground),e.scene.add(e.daqLinkGroup,e.filmWebGroup);let d=new s(1,1,{type:S,samples:4});e.composer=new Rt(e.renderer,d),e.composer.setPixelRatio(e.renderer.getPixelRatio()),e.composer.setSize(e.el.clientWidth||1100,e.el.clientHeight||700),e.composer.addPass(new zt(e.scene,e.camera)),e.composer.addPass(new Vt(new V(e.el.clientWidth||1100,e.el.clientHeight||700),.32,.35,3)),e.composer.addPass(new Ut),tn(e.ground,e.renderer)&&e.markDirty()}function rn(e,t,n,r,i,a){e.dbgBubbles.push({text:i,at:Date.now()}),e.dbgBubbles.length>30&&e.dbgBubbles.splice(0,e.dbgBubbles.length-30),e.lastActivity={channelId:t,agentName:(n?e.agents.get(n)?.name:void 0)??e.blocks.get(t)?.name??`系统`,text:i,at:Date.now()},e.recentActivity.push(e.lastActivity),e.recentActivity.length>30&&e.recentActivity.splice(0,e.recentActivity.length-30),e.emit(`lastActivity`,e.lastActivity);let o=e.receivers.get(t);o||(o={channelId:t,queue:[],current:null,currentUntil:0},e.receivers.set(t,o)),o.queue.length>=24&&o.queue.splice(0,o.queue.length-24),o.queue.push({agentId:n??null,kind:r,text:i,ttlMs:a}),e.markDirty()}function an(e,t){for(let n of e.receivers.values()){if(n.current){if(t<n.currentUntil)continue;on(e,n.channelId,n.current),n.current=null}let r=n.queue.shift();r&&(n.current=r,n.currentUntil=t+_e(r.text,n.queue.length),sn(e,n.channelId,r))}}function on(e,t,n){if(!n.agentId)return;let r=e.agents.get(n.agentId);r?.bubble&&(e.scene.remove(r.bubble),r.bubble=null,r.bubbleText=null,r.bubbleTimer&&=(clearTimeout(r.bubbleTimer),null))}function sn(e,t,n){let r=n.agentId?e.agents.get(n.agentId):void 0,i=e.blocks.get(t);if(!r&&!i)return;let a=r?.name??i?.name??`系统`,o=r?r.colorNum:i?.color??4311284,s=(n.kind===`artifact`&&!n.text.startsWith(`📦`)?`📦 ${n.text}`:n.text)||`…`,c=cn(s,a,o,n.kind),l=r?.root.position.x??i.x,u=r?.root.position.z??i.z;if(c.position.set(l,r?108+Math.max(0,r.model.scale.y-1)*22:64,u),e.scene.add(c),!r){window.setTimeout(()=>{e.scene.remove(c)},ue(n.text)+500);return}r.bubble&&(e.scene.remove(r.bubble),e.disposeCanvasTextures(r.bubble),r.bubbleText=null),r.bubble=c,r.bubbleText=s,ln(e,c),e.markDirty()}function cn(e,t,n,r){let i=`#${n.toString(16).padStart(6,`0`)}`,a=document.createElement(`canvas`),o=a.getContext(`2d`),s=`18px Geist, "PingFang SC", sans-serif`;o.font=s;let c=un(o,e.replace(/\s+/g,` `).trim()||`…`,470,6),u=Math.max(...c.map(e=>o.measureText(e).width)),d=Math.min(680,Math.max(140,Math.ceil(u)+36)),f=26+c.length*24+24,p=f+13;a.width=d,a.height=p,o.clearRect(0,0,d,p);let m=d/2,h=Math.min(24,d*.32),g=()=>{o.beginPath(),o.moveTo(4,0),o.lineTo(d-4,0),o.quadraticCurveTo(d,0,d,4),o.lineTo(d,f-4),o.quadraticCurveTo(d,f,d-4,f),o.lineTo(m+h/2,f),o.lineTo(m,f+13),o.lineTo(m-h/2,f),o.lineTo(4,f),o.quadraticCurveTo(0,f,0,f-4),o.lineTo(0,4),o.quadraticCurveTo(0,0,4,0),o.closePath()};o.save(),o.shadowColor=`rgba(0,0,0,0.55)`,o.shadowBlur=14,o.shadowOffsetY=4,g(),o.fillStyle=`rgba(14,18,27,0.94)`,o.fill(),o.restore(),o.save(),g(),o.clip(),o.fillStyle=`rgba(255,255,255,0.045)`,o.fillRect(0,0,d,38),o.restore(),o.globalAlpha=.28,o.fillStyle=`#fff`,o.fillRect(18,30,d-36,1),o.globalAlpha=1,g(),o.lineWidth=1.2,o.strokeStyle=`rgba(140,170,195,0.4)`,o.stroke(),o.save(),g(),o.clip(),o.fillStyle=i,o.fillRect(0,0,3,f),o.restore(),o.font=`600 13px "Geist Mono", Geist, "PingFang SC", monospace`,o.fillStyle=i,o.textBaseline=`middle`,o.textAlign=`left`,o.fillText(t,18,22);let _=r===`artifact`?`ARTIFACT`:r===`error`?`FAULT`:``;if(_){let e=o.measureText(_).width+12;o.font=`600 10px "Geist Mono", Geist, monospace`,o.fillStyle=r===`error`?`#ff8d80`:`#9fc3e8`,o.strokeStyle=r===`error`?`rgba(255,141,128,0.55)`:`rgba(159,195,232,0.45)`,o.lineWidth=1;let t=d-18-e;o.beginPath(),o.rect(t,14,e,16),o.fill(),o.stroke(),o.textAlign=`center`,o.fillText(_,t+e/2,22.5)}o.font=s,o.fillStyle=r===`error`?`#ff9d9d`:`#eef2fb`,o.textAlign=`left`,c.forEach((e,t)=>o.fillText(e,18,48+t*24));let v=new l(a);v.colorSpace=ge;let y=new me(new se({map:v,transparent:!0,depthTest:!1,depthWrite:!1})),b=2.4;return y.scale.set(d/b,p/b,1),y}function ln(e,t){let n=t.scale.x,r=t.scale.y;t.scale.set(n*.62,r*.62,1);let i=performance.now(),a=()=>{if(e.disposed)return;let o=Math.min(1,(performance.now()-i)/180),s=.62+.38*(1-(1-o)**3);t.scale.set(n*s,r*s,1),o<1&&e.pushAnim(a)};e.pushAnim(a)}function un(e,t,n,r){let i=[],a=``;for(let o of t)if(e.measureText(a+o).width>n&&a){if(i.push(a),a=o,i.length>=r)return i[r-1]=`${i[r-1]??``}…`,i}else a+=o;return a&&i.push(a),i.length===0&&i.push(`…`),i}var dn=new C,fn=new C,pn=new C;function mn(e){if(e.topYCache!=null)return e.topYCache;let t=new o().setFromObject(e.holder),n=Number.isFinite(t.max.y)?Math.max(40,t.max.y):64;return e.topYCache=n,n}function hn(e,t){e.daqLinksWanted=t;let n=t.filter(t=>e.deviceNodes.has(t.daqId)&&e.deviceNodes.has(t.deviceId)),r=n.map(e=>`${e.daqId}>${e.deviceId}`).sort().join(`|`);if(r!==e.daqLinkSig){e.daqLinkSig=r;for(let t of e.daqLinks)e.daqLinkGroup.remove(t.line),e.daqLinkGroup.remove(t.pulse),t.line.geometry.dispose();e.daqLinks=[];for(let t of n){let n=e.deviceNodes.get(t.daqId),r=e.deviceNodes.get(t.deviceId),i=new C(n.root.position.x,42,n.root.position.z),o=new C(r.root.position.x,mn(r)+6,r.root.position.z),s=i.clone().add(o).multiplyScalar(.5);s.y=Math.max(i.y,o.y)+42;let c=new we(i,s,o),l=new w().setFromPoints(c.getPoints(28)),u=new a(l,new f({color:3530912,transparent:!0,opacity:.55,dashSize:8,gapSize:5}));u.computeLineDistances();let d=new h(new N(2.6,10,8),new R({color:4311284}));d.material.color.multiplyScalar(5),e.daqLinkGroup.add(u,d),e.daqLinks.push({...t,line:u,pulse:d,curve:c,pt:Math.random(),ptSig:``})}e.markDirty()}}function gn(e){for(let t of e.daqLinks){let n=e.deviceNodes.get(t.daqId),r=e.deviceNodes.get(t.deviceId);if(!n||!r)continue;let i=mn(r)+6,a=`${Math.round(n.root.position.x)},${Math.round(n.root.position.z)},${Math.round(r.root.position.x)},${Math.round(r.root.position.z)},${Math.round(i)}`;if(a===t.ptSig)continue;t.ptSig=a;let o=dn.set(n.root.position.x,42,n.root.position.z),s=fn.set(r.root.position.x,i,r.root.position.z),c=pn.copy(o).add(s).multiplyScalar(.5);c.y=Math.max(o.y,s.y)+42,t.curve.v0.copy(o),t.curve.v1.copy(c),t.curve.v2.copy(s);let l=t.curve.getPoints(28);t.line.geometry.setFromPoints(l),t.line.computeLineDistances()}}function _n(e){let t=e.toLowerCase();return/extruder|caster|mdo|tdo|winder/.test(t)}function vn(e){let t=[...e.deviceNodes.values()].filter(e=>_n(e.modelRef)&&!e.modelRef.startsWith(`daq-`)).sort((e,t)=>e.root.position.x-t.root.position.x),n=t.map(e=>`${e.twinId}:${Math.round(e.root.position.x)},${Math.round(e.root.position.z)}`).join(`|`);if(n!==e.filmWebSig){for(e.filmWebSig=n;e.filmWebGroup.children.length;){let t=e.filmWebGroup.children[0];e.filmWebGroup.remove(t),t.geometry.dispose()}e.filmWebMat||=new T({color:11196671,metalness:.1,roughness:.35,transparent:!0,opacity:.28,emissive:2845583,emissiveIntensity:.25,side:2,depthWrite:!1});for(let n=0;n<t.length-1;n++){let r=t[n].root.position,i=t[n+1].root.position,a=Math.abs(i.x-r.x)-110;if(a<30)continue;let o=new h(new B(a,1.2,46),e.filmWebMat);o.position.set((r.x+i.x)/2,48,(r.z+i.z)/2),e.filmWebGroup.add(o)}e.markDirty()}}function yn(t,r){if(r.type===`channel.snapshot`)return;if(r.type===`scene.layout.saved`){let e=r.payload;t.blocks.has(e.channelId)&&(t.applySceneLayouts([...t.layouts.values(),e]),t.getChannelLayout(e.channelId)&&t.updateChannelLayout(e.channelId,e));return}if(r.type===`scene.layout.removed`){let{channelId:e}=r.payload;t.removeChannel(e);return}let i=e(r);if(!i)return;if(i.agentId){let e=t.agents.get(i.agentId);e&&(r.type===`agent.status`&&(e.state=r.payload.state,e.state!==`busy`&&(e.progress=null)),r.type===`task.progress`&&(e.progress=r.payload.progress),t.dirty=!0)}i.bubble&&t.enqueueBubble(i.bubble.channelId,i.bubble.agentId,i.bubble.kind,i.bubble.text,i.bubble.ttlMs),Sn(t,r);let a=n(r,{resolveTaskAssignee:t.resolveTaskAssignee??void 0});a&&bn(t,a)}function bn(e,t){let n=e.agents.get(t.fromId),r=e.agents.get(t.toId);!n||!r||n.dragging||(n.behavior.mode=`approach`,n.behavior.targetId=r.agentId,n.behavior.action=t,r.dragging||(r.behavior.engaged=!0,r.behavior.roamTarget=null),e.emit(`behavior`,{agentName:n.name,action:xn(t.kind),targetName:r.name}))}function xn(e){return e===`task`?`下发任务`:`回复`}function Sn(e,t){let n=e.blocks.get(t.channelId),r=t.agentId?e.agents.get(t.agentId):void 0,i=r?.root.position.x??n?.x,a=r?.root.position.z??n?.z;i!==void 0&&a!==void 0&&(t.type===`agent.message`||t.type===`agent.status.message`||t.type===`a2a.message`?Cn(e,i,a,r?4311284:n?.color??4311284):t.type===`error`||t.type===`task.status`&&(t.payload.state===`failed`||t.payload.state===`canceled`)?Cn(e,i,a,16739179):t.type===`task.status`&&t.payload.state===`completed`&&wn(e,i,a,3530912))}function Cn(e,t,n,r){let i=new h(new O(10,22,24),new R({color:r,transparent:!0,opacity:.8,side:2,depthWrite:!1}));i.rotation.x=-Math.PI/2,i.position.set(t,.4,n),e.scene.add(i);let a=performance.now(),o=()=>{let t=Math.min(1,(performance.now()-a)/800),n=1-(1-t)**3;if(i.scale.setScalar(1+n*1.6),i.material.opacity=.8*(1-n),t>=1){e.scene.remove(i),i.geometry.dispose(),i.material.dispose();return}e.pushAnim(o)};e.pushAnim(o)}function wn(e,t,n,r){let i=new _(6,12,120,16);i.translate(0,60,0);let a=new h(i,new R({color:r,transparent:!0,opacity:.8,depthWrite:!1}));a.position.set(t,0,n),a.scale.y=.01,e.scene.add(a);let o=performance.now(),s=()=>{let t=Math.min(1,(performance.now()-o)/900),n=1-(1-t)**2;if(a.scale.y=.01+n*.99,a.material.opacity=.8*(1-t),t>=1){e.scene.remove(a),a.geometry.dispose(),a.material.dispose();return}e.pushAnim(s)};e.pushAnim(s)}function Tn(e){return{blocks:e.blocks.size,agents:[...e.agents.values()].map(e=>({agentId:e.agentId,name:e.name,role:e.role,channelId:e.channelId,state:e.state,progress:e.progress,x:Math.round(e.root.position.x),y:Math.round(e.root.position.z),visible:!0,draggable:!0,auraColor:e.colorNum,behavior:e.behavior.mode,targetId:e.behavior.targetId,homeX:Math.round(e.homeX),homeY:Math.round(e.homeZ),textureKey:e.textureKey,modelRef:e.modelRef,decorated:!e.channelId,range:e.range?{x:Math.round(e.range.x),z:Math.round(e.range.z),radiusX:Math.round(e.range.radiusX),radiusZ:Math.round(e.range.radiusZ),shape:e.range.shape}:null,bubbleText:e.bubbleText,anim:e.animState})),bubbles:e.dbgBubbles.slice(-8),activity:e.lastActivity,player:{x:Math.round(e.camera.position.x),y:Math.round(e.camera.position.z)}}}function En(e){let t=e=>e===`alarm`?16739179:e===`offline`?8689317:e===`running`?3530912:16172115;return{world:{w:L,h:E},blocks:[...e.blocks.values()].map(e=>({x:e.x/L,y:e.z/E,color:e.color,name:e.name,shape:e.shape,rx:e.radiusX/L,rz:e.radiusZ/E,rot:e.rotationY})),agents:[...e.agents.values()].map(e=>({x:e.root.position.x/L,y:e.root.position.z/E,color:e.colorNum,busy:e.state===`busy`})),devices:[...e.deviceNodes.values()].map(e=>({twinId:e.twinId,x:e.root.position.x/L,y:e.root.position.z/E,color:t(e.state),state:e.state,daq:e.modelRef.startsWith(`daq-`)||e.modelRef.includes(`daq`),bound:!1})),player:{x:e.camTarget.x/L,y:e.camTarget.z/E}}}function Dn(e){return[...e.recentActivity]}function On(e,t){return new Promise((n,r)=>{e.load(t,e=>n({scene:e.scene,animations:e.animations??[]}),void 0,r)})}async function kn(e,t,n,r){try{let i=await On(e.gltfLoader,t),a=new o().setFromObject(i.scene),s=r/Math.max(.5,a.max.y-a.min.y);i.scene.scale.setScalar(s),i.scene.position.y=0,i.scene.traverse(e=>{e.isMesh&&(e.castShadow=!0)}),An(e,i.scene,`device`),i.scene.traverse(e=>{e!==i.scene&&(e.matrixAutoUpdate=!1,e.updateMatrix())}),n.add(i.scene)}catch{}}function An(e,t,n){t.traverse(e=>{let t=e;if(!t.isMesh)return;t.receiveShadow=!0;let r=e=>{let t=e,r;if(t?.isMeshBasicMaterial){if(n===`device`&&/led|lamp|light/i.test(t.name??``)){let e=t.userData??={};return e.hdrBoost||=(t.color.multiplyScalar(4.5),!0),t}r=new T({map:t.map??null,color:t.color.clone().multiplyScalar(n===`character`?.38:.5),transparent:t.transparent,opacity:t.opacity,alphaTest:t.alphaTest,side:t.side,roughness:n===`character`?.92:.6,metalness:n===`character`?0:.25}),r.name=t.name??``,t.dispose()}else{let t=e;if(!t||!(`envMapIntensity`in t))return e;r=t}if(n===`character`)return r.envMapIntensity=.45,r.metalness>.3&&(r.metalness=0),r;if(r.transparent)return r.envMapIntensity=.42,r.emissive&&r.emissive.setScalar(Math.max(r.emissive.r,.06)),r;if(r.metalness>=.5)return r.envMapIntensity=.85,r;if(r.isMeshPhysicalMaterial){let e=r;return e.clearcoat=.35,e.clearcoatRoughness=.4,e.envMapIntensity=.7,e.needsUpdate=!0,e}let i=new m({color:r.color,map:r.map,normalMap:r.normalMap,roughnessMap:r.roughnessMap,aoMap:r.aoMap,emissive:r.emissive,emissiveMap:r.emissiveMap,emissiveIntensity:r.emissiveIntensity,roughness:Math.min(r.roughness,.55),metalness:r.metalness,clearcoat:.35,clearcoatRoughness:.4});return i.name=r.name,i.side=r.side,r.dispose(),i};t.material=Array.isArray(t.material)?t.material.map(r):r(t.material)}),e.markDirty()}function Q(e,t,n,r){let i=Te(e,t,n,48).map(([e,t])=>new C(e,0,t)),a=new w().setFromPoints(i);return new te(a,new ne({color:r,transparent:!0,opacity:.75,depthTest:!1}))}var jn=class{channelId;name;x;z;radiusX;radiusZ;shape;rotationY;color;platform;padRing;beacon;boundary;label;members=[];host;constructor(e){Object.assign(this,e)}layout(){return{channelId:this.channelId,x:this.x,z:this.z,radiusX:this.radiusX,radiusZ:this.radiusZ,shape:this.shape,rotationY:this.rotationY}}normLayout(){return M(this.layout())}handlePoints(){return this.shape===`rect`?[[this.radiusX,this.radiusZ],[-this.radiusX,this.radiusZ],[-this.radiusX,-this.radiusZ],[this.radiusX,-this.radiusZ]]:[[this.radiusX,0],[-this.radiusX,0],[0,this.radiusZ],[0,-this.radiusZ]]}pointIn(e,t){return pe(this.layout(),e,t)}moveBy(e,t){this.x+=e,this.z+=t,this.platform.position.set(this.x,.16,this.z),this.padRing.position.set(this.x,.32,this.z),this.beacon.position.set(this.x,0,this.z),this.boundary.position.set(this.x,.3,this.z),this.boundary.rotation.y=this.rotationY*Math.PI/180,this.label.position.set(this.x,30,this.z);for(let n of this.members)n.root.position.x+=e,n.root.position.z+=t,n.homeX+=e,n.homeZ+=t,n.range&&(n.range.x+=e,n.range.z+=t,n.renderRangeLine());this.host.trackLayout(this)}applyPatch(e){e.x!==void 0&&(this.x=e.x),e.z!==void 0&&(this.z=e.z),e.radiusX!==void 0&&(this.radiusX=e.radiusX),e.radiusZ!==void 0&&(this.radiusZ=e.radiusZ),e.shape!==void 0&&(this.shape=e.shape),e.rotationY!==void 0&&(this.rotationY=e.rotationY)}clampMembersAndRanges(){let e=this.layout();for(let t of this.members){let n=A(e,t.root.position.x,t.root.position.z,16);if(t.root.position.x=n.x,t.root.position.z=n.z,t.homeX=n.x,t.homeZ=n.z,t.range){t.renderRangeLine();let e=k(t.range,t.homeX,t.homeZ,0);(e.x!==t.homeX||e.z!==t.homeZ)&&(t.homeX=e.x,t.homeZ=e.z,t.root.position.x=e.x,t.root.position.z=e.z)}}this.host.markDirty()}},Mn=class{channelId;agentId;name;role;root;model;mixer;clips;colorNum;nameSprite;bubble;bubbleText;bubbleTimer;state;progress;behavior;dragging;homeX;homeZ;range;rangeLine;textureKey;modelRef;animState=`idle`;activeAction=null;host;moving=!1;aura=null;auraMats=[];auraPhase=0;attachAura(e,t){let n=new g,r=[],i=(t,i,a,o)=>{let s=new R({color:e,transparent:!0,opacity:o,side:2,depthWrite:!1,blending:2});s.userData.baseOp=o,r.push(s);let c=new h(new O(t,i,44),s);c.rotation.x=-Math.PI/2,c.position.y=a,n.add(c)};i(34,40,.36,.26),t===`lead`&&i(46,50,.42,.2),this.root.add(n),this.aura=n,this.auraMats=r,this.auraPhase=Math.random()*Math.PI*2}constructor(e){Object.assign(this,e)}reached(e){return Math.hypot(this.root.position.x-e.x,this.root.position.z-e.z)<=48}driveToward(e,n,r){this.moving=!0;let i={x:this.root.position.x,z:this.root.position.z},a=t({x:i.x,y:i.z},{x:e.x,y:e.z},n,r),o=a.x,s=a.y;if(this.range){let e=k(this.range,o,s,6);o=e.x,s=e.z}else{let e=this.host.blockLayoutOf(this.channelId);if(e){let t=A(e,o,s,6);o=t.x,s=t.z}}this.root.position.x=o,this.root.position.z=s;let c=a.dir===`left`?Math.PI:0,l=this.root.rotation.y,u=c-l;u>Math.PI?u-=Math.PI*2:u<-Math.PI&&(u+=Math.PI*2);let d=r*3.2;this.root.rotation.y=l+Math.max(-d,Math.min(d,u))}update(e){this.moving=!1;try{this.updateBehavior(e)}finally{this.playWalkAnim(this.moving)}}updateBehavior(e){let t=this.behavior;if(t.mode===`idle`||t.mode===`roam`){if(t.engaged||this.dragging)return;if(t.mode=`roam`,!t.roamTarget){if(performance.now()<t.pauseUntil)return;let e=this.host.blockLayoutOf(this.channelId),n,r;if(this.range){n=this.homeX+(Math.random()*2-1)*this.range.radiusX*.9,r=this.homeZ+(Math.random()*2-1)*this.range.radiusZ*.9;let e=k(this.range,n,r,8);n=e.x,r=e.z}else{let t=e?Math.min(e.radiusX,e.radiusZ)*.45:80;if(n=this.homeX+(Math.random()*2-1)*t,r=this.homeZ+(Math.random()*2-1)*t*.6,e){let t=A(e,n,r,16);n=t.x,r=t.z}}t.roamTarget={x:n,z:r}}this.driveToward(t.roamTarget,48,e),this.reached(t.roamTarget)&&(t.roamTarget=null,t.pauseUntil=performance.now()+350+Math.random()*900);return}if(t.mode===`approach`){let n=t.targetId?this.host.getAgent(t.targetId):void 0;if(!n){t.mode=`idle`;return}let r={x:n.root.position.x,z:n.root.position.z};if(this.range){let e=k(this.range,r.x,r.z,8);r={x:e.x,z:e.z}}this.driveToward(r,96,e),this.reached(r)&&(this.host.deliverBehavior(this,n),t.action?.requireReply?(t.mode=`wait`,t.waitUntil=performance.now()+ye):(t.mode=`returnHome`,this.host.releaseEngaged(this),t.targetId=null));return}if(t.mode===`wait`){if(this.dragging)return;let n=t.targetId?this.host.getAgent(t.targetId):void 0;if(n&&!n.dragging){let t={x:n.root.position.x+28,z:n.root.position.z+8};this.driveToward(t,96*.6,e)}performance.now()>=t.waitUntil&&(t.mode=`returnHome`,this.host.releaseEngaged(this));return}if(t.mode===`returnHome`){if(this.dragging)return;let n={x:this.homeX,z:this.homeZ};this.driveToward(n,96*.7,e),this.reached(n)&&(this.root.position.set(this.homeX,0,this.homeZ),t.mode=`idle`,t.targetId=null,t.action=void 0)}}playWalkAnim(e){let t=e?`walk`:`idle`;this.animState!==t&&(this.animState=t,this.host.notifyMotion(this));let n=()=>{let t=performance.now(),n=1.2+Math.sin(t*.0016)*1.6,r=Math.abs(Math.sin(t*.005))*6;this.model.position.y=e?r:n;let i=e?Math.sin(t*.006)*.07:0;this.model.rotation.z+=(i-this.model.rotation.z)*.12};if(this.clips.length===0){n();return}if(!this.mixer)return;let r=e=>e.name.toLowerCase(),i=e?this.clips.find(e=>/walk|run|move/.test(r(e)))??this.clips[Math.min(1,this.clips.length-1)]:this.clips.find(e=>/idle|stand|breath/.test(r(e)))??(this.clips.length>1?this.clips[0]:null);if(!i){this.activeAction&&=(this.activeAction.fadeOut(.15),null),n();return}let a=this.mixer.clipAction(i);if(this.activeAction===a){a.timeScale=e?1.3:.9;return}a.reset().setEffectiveTimeScale(e?1.3:.9).fadeIn(.15).play(),this.activeAction&&this.activeAction.fadeOut(.15),this.activeAction=a}setHome(e,t){this.homeX=e,this.homeZ=t}renderRangeLine(){if(this.rangeLine&&=(this.host.threeScene.remove(this.rangeLine),null),!this.range)return;let e=4311284,t=Q(this.range.shape,this.range.radiusX,this.range.radiusZ,e);t.material=new f({color:e,transparent:!0,opacity:.75,depthTest:!1,dashSize:14,gapSize:9}),t.computeLineDistances(),t.position.set(this.range.x,.5,this.range.z),t.rotation.y=this.range.rotationY*Math.PI/180,t.visible=this.host.rangeLineVisibleFor(this),this.host.threeScene.add(t),this.rangeLine=t,this.host.markDirty()}attachBubble(e,t){this.bubble&&(this.host.threeScene.remove(this.bubble),this.bubbleText=null),this.bubble=e,this.bubbleText=t}clearBubble(){this.bubble&&(this.host.threeScene.remove(this.bubble),this.bubble=null,this.bubbleText=null)}},Nn=class{twinId;name;modelRef;root;holder;ring;arc=null;label;state;telemetry;host;constructor(e){Object.assign(this,e)}topYCache=null;lineColor=``;applyLine=null;updateRing(){let e=this.ring.material;this.lineColor?e.color.set(this.lineColor):e.color.setHex(this.state===`alarm`?16739179:this.state===`offline`?8689317:this.state===`running`?3530912:16172115),this.arc&&(this.arc.visible=this.state===`running`)}applyTwin(e){e.state&&(this.state=e.state),e.telemetry&&(this.telemetry={...this.telemetry,...e.telemetry}),e.name&&e.name!==this.name&&this.host.renameDeviceSprite(this,e.name),e.modelRef&&e.modelRef!==this.modelRef&&this.host.swapDeviceModelSprite(this,e.modelRef),(e.lineColor??``)!==this.lineColor&&(this.lineColor=e.lineColor??``,this.applyLine?.(this.lineColor)),this.updateRing(),this.host.markDirty()}rememberTransform(){return{posX:Math.round(this.root.position.x*10)/10,posZ:Math.round(this.root.position.z*10)/10,rotationY:Math.round(re.radToDeg(this.root.rotation.y)*10)/10}}};function Pn(e,t,n){t.name=n.trim(),e.scene.remove(t.label),t.label=Z(e.scene,`⚙ ${t.name}`,t.root.position.x,60,t.root.position.z),e.markDirty()}function Fn(e,t,n){let r=e.modelsById.get(n);r?.file&&(t.modelRef!==n||t.holder.userData.modelFile!==r.file)&&(t.modelRef=n,t.holder.clear(),t.holder.userData.modelFile=r.file,kn(e,r.file,t.holder,192),e.markDirty())}function In(e,t,n,r,i,a){let o=`dev-${Date.now().toString(36)}`,s=new g;s.position.set(t,0,n);let{ring:c,arc:l}=Xt();s.add(c,l);let u=new g;s.add(u),u.userData.modelFile=i;let d=Z(e.scene,`⚙ ${a}`,t,60,n);e.scene.add(s);let f=new Nn({twinId:o,name:a,modelRef:r,root:s,holder:u,ring:c,label:d,state:`idle`,telemetry:{}});f.host=e,f.arc=l,f.updateRing(),e.deviceNodes.set(o,f),e.registerScalable(`device`,o,u),kn(e,i,u,192);let p=e.scalables.get(`device:${o}`),m=e.devices?.create({name:a,modelRef:r,kind:`device`,controls:[`power_on`,`power_off`,`set_speed`],posX:Math.round(t*10)/10,posZ:Math.round(n*10)/10,scale:p?Math.round(p.userScale*100)/100:1});return m?(e.pendingDeviceCreates.set(o,{name:a,modelRef:r,posX:t,posZ:n}),m.then(t=>{let n=e.cancelledDeviceCreates.delete(o);if(e.pendingDeviceCreates.delete(o),n){e.devices?.remove?.(t.id).catch(()=>{});return}e.disposed||Ln(e,o,t.id)}).catch(()=>{e.cancelledDeviceCreates.delete(o),e.pendingDeviceCreates.delete(o)}),o):o}function Ln(e,t,n){e.pendingDeviceCreates.delete(t);let r=e.deviceNodes.get(t);if(!r)return;let i=e.deviceNodes.get(n);if(i&&i!==r){Zn(e,t),e.selected?.kind===`device`&&e.selected.id===t&&e.setSelected({kind:`device`,id:n});return}e.deviceNodes.delete(t),r.twinId=n,e.deviceNodes.set(n,r);let a=e.scalables.get(`device:${t}`);e.scalables.delete(`device:${t}`),a&&(a.id=n,e.scalables.set(`device:${n}`,a));let o=e.pendingSaveTimers.get(t);e.pendingSaveTimers.delete(t),o&&e.pendingSaveTimers.set(n,o),e.pointerDrag?.kind===`device`&&e.pointerDrag.id===t&&(e.pointerDrag.id=n),e.selected?.kind===`device`&&e.selected.id===t&&e.setSelected({kind:`device`,id:n}),Gn(e,n)}function Rn(e,t,n,r){let i=e.deviceNodes.get(t);i&&(n&&(i.state=n,i.updateRing()),r&&(i.telemetry={...i.telemetry,...r}),e.markDirty())}function zn(e,t,n){let r=e.deviceNodes.get(t);!r||!n.trim()||n.trim()===r.name||e.renameDeviceSprite(r,n)}function Bn(e,t,n){let r=e.deviceNodes.get(t);r&&e.swapDeviceModelSprite(r,n)}function Vn(e,t){return e.deviceNodes.get(t)?.name??``}function Hn(e,t){return e.deviceNodes.get(t)?.modelRef??``}async function Un(e,t){if(e.deviceNodes.get(t)){if(e.pendingDeviceCreates.has(t)){e.cancelledDeviceCreates.add(t),Zn(e,t);return}try{await e.devices?.remove?.(t)}catch{}Zn(e,t)}}function Wn(e){return[...e.deviceNodes.values()].map(e=>({twinId:e.twinId,name:e.name,x:Math.round(e.root.position.x),z:Math.round(e.root.position.z),topY:Math.round(mn(e)),state:e.state,telemetry:e.telemetry}))}function Gn(e,t){let n=e.deviceNodes.get(t);if(!n||!e.devices?.update||e.pendingDeviceCreates.has(t))return;let r=e.scalables.get(`device:${t}`),i=e.pendingSaveTimers.get(t);i&&clearTimeout(i),e.pendingSaveTimers.set(t,setTimeout(()=>{e.pendingSaveTimers.delete(t),!(e.disposed||e.pendingDeviceCreates.has(t))&&(e.emitSaveState(`saving`),e.devices.update(t,{posX:Math.round(n.root.position.x*10)/10,posZ:Math.round(n.root.position.z*10)/10,rotationY:Math.round(re.radToDeg(n.root.rotation.y)*10)/10,scale:r?Math.round(r.userScale*100)/100:void 0}).then(()=>e.emitSaveState(`saved`,Date.now())).catch(()=>e.emitSaveState(`error`)))},350)),e.emitSaveState(`dirty`)}function Kn(e){for(let t of[...e.deviceNodes.keys()])Gn(e,t)}function qn(e,t){let n=new Set(t.map(e=>e.id));for(let t of[...e.deviceNodes.keys()])!n.has(t)&&!e.pendingDeviceCreates.has(t)&&Zn(e,t);for(let n of t){let t=e.deviceNodes.get(n.id);if(!t){let r=[...e.pendingDeviceCreates.entries()].find(([,e])=>e.name===n.name&&e.modelRef===n.modelRef);r&&(Ln(e,r[0],n.id),t=e.deviceNodes.get(n.id))}if(!t){(n.kind===`daq`||(n.modelRef??``).startsWith(`daq-`)||(n.modelRef??``).startsWith(`dcw-`)||Jn(e,n.modelRef)?.file)&&typeof n.posX==`number`&&typeof n.posZ==`number`?Yn(e,n):e.pendingDeviceTwins.set(n.id,n);continue}if(e.pendingDeviceTwins.delete(n.id),t.applyTwin(n),e.pointerDrag?.id!==n.id){let r=typeof n.posX==`number`&&n.posX!==t.root.position.x||typeof n.posZ==`number`&&n.posZ!==t.root.position.z;typeof n.posX==`number`&&(t.root.position.x=n.posX),typeof n.posZ==`number`&&(t.root.position.z=n.posZ),typeof n.rotationY==`number`&&(t.root.rotation.y=n.rotationY*Math.PI/180);let i=e.scalables.get(`device:${n.id}`);typeof n.scale==`number`&&i&&(i.userScale=n.scale,i.holder.scale.setScalar(n.scale)),r&&e.markDirty()}e.markDirty()}e.daqLinksWanted.length&&e.syncDaqLinks(e.daqLinksWanted);for(let t of[...e.pendingDeviceTwins.keys()])n.has(t)||e.pendingDeviceTwins.delete(t)}function Jn(e,t){let n=e.modelsById.get(t);if(n?.file)return{id:n.id,file:n.file,hFactor:n.hFactor??1};for(let[n,r]of e.modelsById)if(!(r.kind!==`dev`||!r.file)&&(n===`dev-folder-${t}`||n.endsWith(`-${t}`)))return{id:n,file:r.file,hFactor:r.hFactor??1};return null}function Yn(e,t){if(t.kind===`daq`||(t.modelRef??``).startsWith(`daq-`)||(t.modelRef??``).startsWith(`dcw-`)){Xn(e,t);return}let n=Jn(e,t.modelRef),r=n?.file??``;if(!r)return;let i=typeof t.posX==`number`?t.posX:z,a=typeof t.posZ==`number`?t.posZ:P,o=new g;o.position.set(i,0,a),o.rotation.y=typeof t.rotationY==`number`?t.rotationY*Math.PI/180:0;let{ring:s,arc:c}=Xt();o.add(s,c);let l=new g;o.add(l);let u=Z(e.scene,`⚙ ${t.name}`,i,60,a);l.userData.modelFile=r,e.scene.add(o);let d=new Nn({twinId:t.id,name:t.name,modelRef:t.modelRef,root:o,holder:l,ring:s,label:u,state:t.state??`idle`,telemetry:t.telemetry??{}});d.host=e,d.arc=c,d.updateRing(),e.deviceNodes.set(t.id,d),e.registerScalable(`device`,t.id,l,typeof t.scale==`number`?t.scale:void 0),kn(e,r,l,192*(n?.hFactor??1)),e.markDirty()}function Xn(e,t){let n=typeof t.posX==`number`?t.posX:z,r=typeof t.posZ==`number`?t.posZ:P,i=new g;i.position.set(n,0,r),i.rotation.y=typeof t.rotationY==`number`?t.rotationY*Math.PI/180:0;let{group:a,ledRing:o}=Zt(t.modelRef);i.add(a);let s=new h(new O(16,21,36),new R({color:3530912,transparent:!0,opacity:.5,side:2,depthWrite:!1}));s.rotation.x=-Math.PI/2,s.position.y=.35,i.add(s);let c=new h(new O(24,34,48),new R({color:3530912,transparent:!0,opacity:.16,side:2,depthWrite:!1,blending:2}));c.rotation.x=-Math.PI/2,c.position.y=.28,i.add(c);let l=t.lineColor||`#35e0a0`,u=Z(e.scene,t.name,n,62,r,l);e.scene.add(i);let d=new Nn({twinId:t.id,name:t.name,modelRef:t.modelRef,root:i,holder:i,ring:s,label:u,state:t.state??`running`,telemetry:t.telemetry??{}});d.host=e,d.lineColor=t.lineColor??``,d.applyLine=t=>{let n=new I(t||`#35e0a0`);s.material.color.copy(n),c.material.color.copy(n),o.material.color.copy(n).multiplyScalar(6),e.scene.remove(u),u.material.dispose();let r=Z(e.scene,d.name,i.position.x,62,i.position.z,t||`#35e0a0`);d.label=r,e.scene.add(r),e.markDirty()},t.lineColor&&d.applyLine(t.lineColor),d.updateRing(),e.deviceNodes.set(t.id,d),e.daqLedRings.set(t.id,o),e.registerScalable(`device`,t.id,i,typeof t.scale==`number`?t.scale:void 0),e.markDirty()}function Zn(e,t){let n=e.deviceNodes.get(t);n&&(e.scene.remove(n.root),e.scene.remove(n.label),e.disposeDeviceAssets(n),e.selected?.kind===`device`&&e.selected.id===t&&e.setSelected(null),e.scalables.delete(`device:${t}`),e.deviceNodes.delete(t),e.daqLedRings.delete(t),e.daqLinkSig=``,e.filmWebSig=``,e.markDirty())}function Qn(e,t,n,r,i){let a=t.agentId;if(e.agents.has(a))return;let o=e.blockLayoutOf(t.channelId),s=t.homeX??n,c=t.homeZ??r;if(o){let e=A(o,s,c,20);s=e.x,c=e.z}let l=t.range??null,u=new g;u.position.set(s,0,c);let d=Z(e.scene,t.name,s,48,c,qt(i)),f=t.modelRef||`hero-anime-1`,p=new g;u.add(p),e.scene.add(u);let m=new Mn({channelId:t.channelId,agentId:a,name:t.name,role:t.role,root:u,model:p,mixer:null,clips:[],colorNum:i,nameSprite:d,bubble:null,bubbleText:null,bubbleTimer:null,state:t.state,progress:t.currentTaskProgress??null,dragging:!1,homeX:s,homeZ:c,range:l,rangeLine:null,textureKey:f,modelRef:t.modelRef??``,behavior:{mode:`idle`,roamTarget:null,targetId:null,waitUntil:0,pauseUntil:0,engaged:!1}});m.host=e,m.attachAura(i,t.role),e.agents.set(a,m);let h=e.modelsById.get(f)??(f.startsWith(`hero-anime-`)?{id:f,file:`/assets/game/character/${f}.glb`,name:`二次元角色`}:e.modelsById.get(`hero-3d`)??{id:`hero-3d`,file:`/assets/game/character/hero-3d.glb`,name:`标准员工模型`});$(e,m,h.file,h.name),m.renderRangeLine(),e.emit(`agentCount`,e.agents.size)}async function $(e,t,n,r){let i=e.gltfCache.get(n),a,s;if(i)a=i.scene.clone(!0),s=i.height;else try{let t=await On(e.gltfLoader,n);a=t.scene;let r=new o().setFromObject(a);s=Math.max(.5,r.max.y-r.min.y),e.gltfCache.set(n,{file:n,scene:a,height:s}),e.agentAnimClips.set(n,t.animations)}catch{a=Qt(),s=1.4}a.position.y=0,a.scale.setScalar(120/s),a.traverse(e=>{e.isMesh&&(e.castShadow=!0)}),e.enhancePbrMaterials(a,`character`),t.model.clear(),t.model.add(a),e.registerScalable(`agent`,t.agentId,t.model),t.mixer=null,t.activeAction=null;let c=e.agentAnimClips.get(n)??[],l=c[0];if(l){t.mixer=new ee(a),t.clips=c;let e=t.mixer.clipAction(l);e.play(),t.activeAction=e}e.markDirty()}function $n(e,t){if(e.disposed)return;let n=new Set;for(let r of t){let t=e.modelsById.get(r.id);(!t||t.file!==r.file||t.name!==r.name||t.kind!==r.kind||t.hFactor!==(r.hFactor??1))&&(e.modelsById.set(r.id,{...r,hFactor:r.hFactor??1}),n.add(r.id))}if(n.size>0){for(let t of e.agents.values()){if(!t.modelRef||!n.has(t.modelRef))continue;let r=e.modelsById.get(t.modelRef);r&&$(e,t,r.file,r.name)}for(let t of e.deviceNodes.values())n.has(t.modelRef)&&e.swapDeviceModelSprite(t,t.modelRef)}for(let t of[...e.pendingDeviceTwins.values()])!(t.kind===`daq`||(t.modelRef??``).startsWith(`daq-`))&&!e.modelsById.get(t.modelRef)?.file||(e.pendingDeviceTwins.delete(t.id),e.recreateDeviceNode(t))}function er(e,t,n){let r=e.agents.get(t);if(!r)return;let i=e.modelsById.get(n),a=i?.file??`/assets/game/character/hero-3d.glb`;r.modelRef=n,r.textureKey=n,$(e,r,a,i?.name??n)}function tr(e,t,n){let r=e.agents.get(t);if(!r||r.clips.length===0||!r.mixer)return;let i=r.clips.findIndex(e=>e.name.toLowerCase().includes(n.toLowerCase()));i<0&&(i=n===`work`?r.clips.length-1:n===`walk`?Math.min(1,r.clips.length-1):0);let a=r.clips[i];a&&(r.mixer.stopAllAction(),r.mixer.clipAction(a).reset().play())}function nr(e,t){return e.agents.get(t)?.modelRef??null}function rr(e,t){return e.agents.get(t)?.name??t.slice(0,8)}function ir(e,t){let n=e.agents.get(t);return n?n.clips.map(e=>({name:e.name,duration:Math.round(e.duration*10)/10})):[]}function ar(e,t,n,r){let i=or(e,t,n,80),a=e.modelsById.get(r),o=a?.id??r;return a?.kind===`dev`?{mode:`spawn`,agentId:e.spawnDeviceNode(t,n,o,a.file,a.name),textureKey:o,x:Math.round(t),y:Math.round(n)}:i?(sr(e,i,o),e.enqueueBubble(i.channelId,i.agentId,`info`,`换装 → ${a?.name??r}`,2200),{mode:`rebind`,agentId:i.agentId,textureKey:o,x:Math.round(i.root.position.x),y:Math.round(i.root.position.z)}):(cr(e,t,n,o,(a??{id:r,file:``,name:r}).name),{mode:`spawn`,textureKey:o,x:Math.round(t),y:Math.round(n)})}function or(e,t,n,r){let i,a=r;for(let r of e.agents.values()){let e=Math.hypot(r.root.position.x-t,r.root.position.z-n);e<a&&(i=r,a=e)}return i}function sr(e,t,n){let r=e.modelsById.get(n),i=r?.file??lr(e,n)??`/assets/game/character/hero-3d.glb`;t.modelRef=n,t.textureKey=n,$(e,t,i,r?.name??n)}function cr(e,t,n,r,i){let a=new g;a.position.set(t,0,n);let o=new g;a.add(o);let s=Z(e.scene,i,t,48,n,qt(16771524));e.scene.add(a);let c=new Mn({channelId:``,agentId:`resident-${Date.now().toString(36)}`,name:i,role:`worker`,root:a,model:o,mixer:null,clips:[],colorNum:16771524,nameSprite:s,bubble:null,bubbleText:null,bubbleTimer:null,state:`idle`,progress:null,dragging:!1,homeX:t,homeZ:n,range:null,rangeLine:null,textureKey:r,modelRef:r,behavior:{mode:`idle`,roamTarget:null,targetId:null,waitUntil:0,pauseUntil:0,engaged:!1}});c.host=e,c.attachAura(16771524,`worker`),e.agents.set(c.agentId,c);let l=e.modelsById.get(r);$(e,c,l?.file??`/assets/game/character/hero-3d.glb`,l?.name??i)}function lr(e,t){return e.modelsById.get(t)?.file??``}function ur(e,t){e.entityIndex.clear();for(let n of t){e.entityIndex.set(n.channelId,n);let t=e.layouts.get(n.channelId);t&&dr(e,n,t)}e.emit(`blockCount`,e.blocks.size),e.emit(`agentCount`,e.agents.size)}function dr(e,t,n){let r=M(n),i=ke(t.channelId),a=Yt(e.scene,t.channelName,i,r),o=new jn({channelId:t.channelId,name:t.channelName,x:r.x,z:r.z,radiusX:r.radiusX,radiusZ:r.radiusZ,shape:r.shape,rotationY:r.rotationY,color:i,platform:a.platform,padRing:a.padRing,beacon:a.beacon,boundary:Q(r.shape,r.radiusX,r.radiusZ,i),label:Z(e.scene,t.channelName,r.x,30,r.z)});o.host=e,o.boundary.position.set(r.x,.3,r.z),o.boundary.rotation.y=r.rotationY*Math.PI/180,e.scene.add(o.boundary),e.blocks.set(t.channelId,o),fr(e,t,o);for(let n of e.agents.values())n.channelId===t.channelId&&!o.members.includes(n)&&o.members.push(n)}function fr(e,t,n){let{x:r,z:i,radiusX:a,radiusZ:o}=n,s=.6,c=Math.max(1,t.agents.length);t.agents.forEach((l,u)=>{let d,f;if(typeof l.homeX==`number`&&typeof l.homeZ==`number`)d=l.homeX,f=l.homeZ;else{let e=c<=1?0:u/(c-1)*2-1;d=r+e*a*s*.8,f=i+(l.role===`lead`?0:(u%2==0?-1:1)*o*s*.4)}e.ensureAgent({...l,channelId:t.channelId},d,f,n.color)})}function pr(e,t){e.layouts.clear();for(let n of t){let t=M(n);e.layouts.set(t.channelId,t)}}function mr(e,t){return e.blocks.has(t)}function hr(e,t){let n=e.blocks.get(t);return n?n.layout():null}function gr(e){return[...e.blocks.keys()]}function _r(e,t){let n=e.blocks.get(t);return n?n.layout():null}function vr(e,t){e.layouts.set(t.channelId,t.normLayout())}function yr(e){return{x:Math.round(e.camTarget.x),z:Math.round(e.camTarget.z)}}function br(e,t,n,r,i,a){let o=e.blocks.get(r);if(o)return e.focusTo(o.x,o.z),{x:Math.round(o.x),z:Math.round(o.z),channelId:r,name:o.name};let s={channelId:r,x:t,z:n,radiusX:Math.max(120,110+a*18),radiusZ:Math.max(80,70+a*14),shape:`ellipse`,rotationY:0};e.layouts.set(r,M(s));let c=e.entityIndex.get(r);if(c)dr(e,c,s);else{let a=ke(r),o=Yt(e.scene,i,a,s),c=new jn({channelId:r,name:i,x:t,z:n,radiusX:s.radiusX,radiusZ:s.radiusZ,shape:s.shape,rotationY:s.rotationY,color:a,platform:o.platform,padRing:o.padRing,beacon:o.beacon,boundary:Q(s.shape,s.radiusX,s.radiusZ,a),label:Z(e.scene,i,t,30,n)});c.host=e,c.boundary.position.set(t,.3,n),e.scene.add(c.boundary),e.blocks.set(r,c)}return e.emit(`blockCount`,e.blocks.size),e.emit(`agentCount`,e.agents.size),{x:Math.round(t),z:Math.round(n),channelId:r,name:i}}function xr(e,t,n){let r=e.blocks.get(t);if(!r)return;n.x!==void 0&&(r.x=n.x),n.z!==void 0&&(r.z=n.z),n.radiusX!==void 0&&(r.radiusX=Math.max(60,n.radiusX)),n.radiusZ!==void 0&&(r.radiusZ=Math.max(40,n.radiusZ)),n.shape!==void 0&&(r.shape=n.shape),n.rotationY!==void 0&&(r.rotationY=n.rotationY);let i=M({channelId:t,x:r.x,z:r.z,radiusX:r.radiusX,radiusZ:r.radiusZ,shape:r.shape,rotationY:r.rotationY});e.layouts.set(t,i),e.scene.remove(r.boundary),Kt(r),r.boundary=Q(i.shape,i.radiusX,i.radiusZ,r.color),r.boundary.position.set(i.x,.3,i.z),r.boundary.rotation.y=i.rotationY*Math.PI/180,e.scene.add(r.boundary),e.clampAgentsToBoundary(t),e.markDirty()}function Sr(e,t){let n=e.blocks.get(t);if(n){e.scene.remove(n.platform),e.scene.remove(n.padRing),e.scene.remove(n.beacon),n.boundary&&e.scene.remove(n.boundary),e.scene.remove(n.label);for(let[n,r]of[...e.agents.entries()])r.channelId===t&&(e.scene.remove(r.root),r.nameSprite&&e.scene.remove(r.nameSprite),r.bubble&&e.scene.remove(r.bubble),r.rangeLine&&e.scene.remove(r.rangeLine),e.disposeAgentAssets(r),e.agents.delete(n));n.label&&e.disposeCanvasTextures(n.label),e.rangeDrawAgent&&e.agents.get(e.rangeDrawAgent)===void 0&&e.cancelRangeDraw(),e.blocks.delete(t),e.layouts.delete(t),e.receivers.delete(t);for(let t of e.resizeHandles)t.mesh.visible=!1;for(let t of e.agentRangeHandles)t.mesh.visible=!1;e.selectedChannel===t&&(e.selectedChannel=null,e.emit(`selectChannel`,null)),e.emit(`blockCount`,e.blocks.size),e.emit(`agentCount`,e.agents.size),e.markDirty()}}function Cr(e){return[...e.blocks.values()].map(e=>({channelId:e.channelId,x:e.x,z:e.z,radiusX:e.radiusX,radiusZ:e.radiusZ,shape:e.shape,rotationY:e.rotationY}))}function wr(e,t){let n={channelId:t.channelId,x:t.x,z:t.z,radiusX:t.radiusX,radiusZ:t.radiusZ,shape:t.shape,rotationY:t.rotationY};e.layouts.set(t.channelId,M(n)),t.platform.position.set(t.x,.16,t.z),t.padRing.position.set(t.x,.34,t.z),Kt(t),t.boundary&&e.scene.remove(t.boundary),t.boundary=Q(t.shape,t.radiusX,t.radiusZ,t.color),t.boundary.position.set(t.x,.3,t.z),t.boundary.rotation.y=t.rotationY*Math.PI/180,e.scene.add(t.boundary),e.markDirty()}var Tr=[{scale:1,shadow:2048,bloom:!0},{scale:.8,shadow:2048,bloom:!0},{scale:.65,shadow:1024,bloom:!0},{scale:.55,shadow:1024,bloom:!1}],Er={ultra:{scale:1,shadow:2048,bloom:!0},hd:{scale:.8,shadow:2048,bloom:!0},normal:{scale:.6,shadow:1024,bloom:!0}};function Dr(e){let t=()=>{if(e.disposed)return;e.raf=requestAnimationFrame(t),e.rafCount+=1;let n=e.clock.getDelta();if(e.frameBudgetMs>0){if(e.frameAcc+=n*1e3,e.frameAcc<e.frameBudgetMs-.5)return;e.frameAcc=0}let r=Math.min(n,.1),i=e.clock.elapsedTime;e.drainReceivers(performance.now());for(let t of e.agents.values())t.state!==`stopped`&&!t.dragging&&t.update(r);for(let t of e.agents.values())t.mixer&&t.mixer.update(r);for(let t of e.blocks.values())t.beacon.rotation.y+=r*.4;for(let t of e.agents.values())if(t.nameSprite.position.set(t.root.position.x,48,t.root.position.z),t.bubble&&t.bubble.position.set(t.root.position.x,108+Math.max(0,t.model.scale.y-1)*22,t.root.position.z),t.auraMats.length){let e=.8+.2*Math.sin(i*2.2+t.auraPhase);for(let n of t.auraMats)n.opacity=n.userData.baseOp*e}for(let t of e.deviceNodes.values())t.label.position.set(t.root.position.x,60,t.root.position.z),t.arc?.visible&&(t.arc.rotation.z+=r*1.6);for(let t of e.daqLedRings.values()){t.rotation.z+=r*1.2;let e=1+Math.sin(i*3.2)*.08;t.scale.setScalar(e)}if(e.daqLinks.length){e.dirty&&e.refreshDaqLinks();for(let t of e.daqLinks)t.pt=(t.pt+r*.3)%1,t.pulse.position.copy(t.curve.getPoint(t.pt))}if(e.dirty&&e.rebuildFilmWeb(),e.selRing){let t=e.selected,n=0,i=0,a=0;if(t?.kind===`agent`){let r=e.agents.get(t.id);r&&(n=r.root.position.x,i=r.root.position.z,a=46*Math.max(.6,r.model.scale.y))}else if(t?.kind===`device`){let r=e.deviceNodes.get(t.id);r&&(n=r.root.position.x,i=r.root.position.z,a=Math.max(34,e.deviceTopY(r)*.42))}e.selRing.visible=a>0,a>0&&(e.selRing.position.set(n,.5,i),e.selRing.scale.setScalar(a),e.selRing.rotation.z+=r*.9)}let a=e.rafAnims;e.rafAnims=[];for(let e of a)e();it(e,r);let o=!1;for(let t of e.agents.values())if(t.mixer){o=!0;break}e.renderer.shadowMap.needsUpdate=e.dirty||o,e.renderer.info.reset(),e.composer.render(r),e.dirty=!1,e.frameCount+=1;let s=performance.now();if(e.fpsWinT0===0&&(e.fpsWinT0=s),s-e.fpsWinT0>=1e3){let t=Math.round(e.frameCount*1e3/(s-e.fpsWinT0));e.emit(`fps`,t),kr(e,t);let n=e.renderer.info;globalThis.__townStats={fps:t,rafHz:e.rafCount,drawCalls:n.render.calls,triangles:n.render.triangles,geometries:n.memory.geometries,textures:n.memory.textures,tier:e.qTier,dpr:+e.renderer.getPixelRatio().toFixed(2),frameBudgetMs:+e.frameBudgetMs.toFixed(2),agents:e.agents.size,devices:e.deviceNodes.size},e.frameCount=0,e.rafCount=0,e.fpsWinT0=s}};t()}function Or(e,t){if(e.qualityMode=t,t===`auto`){Ar(e);return}let n=Er[t];jr(e,Math.max(.5,e.baseDpr*n.scale));let r=e.keyLight;(r.shadow.mapSize.x??0)!==n.shadow&&(r.shadow.mapSize.set(n.shadow,n.shadow),r.shadow.map?.dispose(),r.shadow.map=null,e.renderer.shadowMap.needsUpdate=!0);let i=e.composer.passes.find(e=>e instanceof Vt);i&&(i.enabled=n.bloom)}function kr(e,t){if(e.qualityMode!==`auto`)return;let n=Tr.length-1;t<17&&e.qTier<n?++e.qLowStreak>=2&&(e.qTier++,Ar(e),e.qLowStreak=0,e.qHighStreak=0):t>=27&&e.qTier>0?++e.qHighStreak>=4&&(e.qTier--,Ar(e),e.qHighStreak=0,e.qLowStreak=0):(e.qLowStreak=0,e.qHighStreak=0)}function Ar(e){let t=Tr[e.qTier];jr(e,Math.max(.5,e.baseDpr*t.scale));let n=e.keyLight;(n.shadow.mapSize.x??0)!==t.shadow&&(n.shadow.mapSize.set(t.shadow,t.shadow),n.shadow.map?.dispose(),n.shadow.map=null,e.renderer.shadowMap.needsUpdate=!0);let r=e.composer.passes.find(e=>e instanceof Vt);r&&(r.enabled=t.bloom)}function jr(e,t){e.renderer.setPixelRatio(t),e.composer.setPixelRatio(t);let n=e.el.clientWidth||1100,r=e.el.clientHeight||700;e.renderer.setSize(n,r),e.composer.setSize(n,r)}function Mr(e,t,n){for(let r of e.blocks.values())if(Math.hypot(r.x-t,r.z-n)<34)return{cid:r.channelId,x:r.x,z:r.z};return null}function Nr(e,t,n){let r=null;for(let i of e.agents.values()){let e=Math.hypot(i.root.position.x-t,i.root.position.z-n);e<90&&(!r||e<r.d)&&(r={kind:`agent`,id:i.agentId,d:e})}for(let i of e.deviceNodes.values()){let e=Math.hypot(i.root.position.x-t,i.root.position.z-n);e<90&&(!r||e<r.d)&&(r={kind:`device`,id:i.twinId,d:e})}return r?{kind:r.kind,id:r.id}:null}function Pr(e,t,n){for(let r of e.blocks.values()){let e={channelId:r.channelId,x:r.x,z:r.z,radiusX:r.radiusX,radiusZ:r.radiusZ,shape:r.shape,rotationY:r.rotationY};if(pe(e,t,n))return r.channelId}return null}function Fr(e,t,n){for(let r of e.blocks.values()){let e=oe(r,t,n),i=Math.hypot(e.x/r.radiusX,e.z/r.radiusZ),a=42/Math.min(r.radiusX,r.radiusZ);if(Math.abs(i-1)<=a)return{cid:r.channelId,rx0:r.radiusX,rz0:r.radiusZ,rd0:i}}return null}function Ir(e,t){if((!t||t.kind!==`agent`||t.id!==e.rangeDrawAgent)&&e.cancelRangeDraw(),e.selected=t,e.tControls&&(t?.kind===`device`&&e.mode===`edit`&&e.deviceNodes.has(t.id)?e.tControls.attach(e.deviceNodes.get(t.id).root):e.tControls.detach()),e.refreshAgentRangeLines(),e.refreshAgentRangeHandles(),!t){e.emit(`select`,null);return}let n=e.scalables.get(`${t.kind}:${t.id}`);n&&e.emit(`select`,{kind:t.kind,id:t.id,scale:n.userScale,rotation:Math.round(Hr(e,t.id,t.kind)*10)/10})}function Lr(e,t,n,r){let i=r??(e.scalables.has(`device:${t}`)?`device`:`agent`),a=`${i}:${t}`,o=e.scalables.get(a);if(o){if(o.userScale=n,o.holder.scale.setScalar(o.userScale),i===`device`){let n=e.deviceNodes.get(t);n&&(n.topYCache=null)}e.markDirty()}}function Rr(e){if(!e.selected)return null;let t=e.scalables.get(`${e.selected.kind}:${e.selected.id}`);return t?{kind:e.selected.kind,id:e.selected.id,scale:t.userScale,rotation:Math.round(Hr(e,e.selected.id,e.selected.kind)*10)/10}:null}function zr(e,t,n,r,i){let a=i===void 0?typeof localStorage<`u`?Number(localStorage.getItem(`town.scale.${t}:${n}`)??1):1:i,o=Number.isFinite(a)&&a>0?a:1;if(e.scalables.set(`${t}:${n}`,{kind:t,id:n,userScale:o,holder:r}),r.scale.setScalar(o),t===`device`){let t=e.deviceNodes.get(n);t&&(t.topYCache=null)}}function Br(e,t,n){let r=e.scalables.get(`${t}:${n}`);!r||typeof localStorage>`u`||(localStorage.setItem(`town.scale.${t}:${n}`,String(r.userScale)),t===`device`&&e.persistDeviceTransform(n))}function Vr(e,t,n,r){if((r??(e.deviceNodes.has(t)?`device`:`agent`))===`device`){let r=e.deviceNodes.get(t);if(!r)return;r.root.rotation.y=n*Math.PI/180}else{let r=e.agents.get(t);if(!r)return;r.root.rotation.y=n*Math.PI/180}e.markDirty()}function Hr(e,t,n){if((n??(e.deviceNodes.has(t)?`device`:`agent`))===`device`){let n=e.deviceNodes.get(t);return n?re.radToDeg(n.root.rotation.y):0}let r=e.agents.get(t);return r?re.radToDeg(r.root.rotation.y):0}function Ur(e,t){e.tControls&&(e.tControls.setMode(t),e.tControls.showX=t!==`rotate`,e.tControls.showY=t!==`translate`,e.tControls.showZ=t!==`rotate`)}function Wr(e){return!!e.tControls&&(e.tControls.dragging||!!e.tControls.axis)}function Gr(e,t){e.renderer.toneMappingExposure=Math.min(2.2,Math.max(.2,t))}function Kr(e,t){let n=Math.min(1,Math.max(.05,t));for(let t of e.blocks.values())t.platform.material.opacity=.24*n;e.markDirty()}function qr(e,t){e.selectedChannel=t,e.emit(`selectChannel`,t),e.refreshChannelHandles(),e.cancelRangeDraw(),e.refreshAgentRangeHandles();for(let n of e.blocks.values()){let e=n.boundary.material;e.color.setHex(n.channelId===t?16172115:n.color),e.opacity=n.channelId===t?1:.75}t&&!e.pointerDrag&&e.focusTo(e.blocks.get(t)?.x??1600,e.blocks.get(t)?.z??1200)}function Jr(e){return e.selectedChannel}function Yr(e){e&&e.traverse(e=>{let t=e.material,n=Array.isArray(t)?t:t?[t]:[];for(let e of n){let t=e;t.map&&t.map.image instanceof HTMLCanvasElement&&t.map.dispose(),e.dispose()}})}function Xr(e){e.ring.geometry.dispose(),e.ring.material.dispose(),e.arc&&(e.arc.geometry.dispose(),e.arc.material.dispose()),Yr(e.label)}function Zr(e){Yr(e.nameSprite??null),Yr(e.bubble??null),e.rangeLine?.geometry.dispose(),e.aura&&=(e.aura.traverse(e=>{let t=e;t.isMesh&&(t.geometry.dispose(),t.material.dispose())}),null)}function Qr(e){for(let t of e.agents.values())e.scene.remove(t.root),t.nameSprite&&e.scene.remove(t.nameSprite),t.bubble&&e.scene.remove(t.bubble),t.rangeLine&&e.scene.remove(t.rangeLine),Zr(t);for(let t of e.blocks.values())e.scene.remove(t.platform),e.scene.remove(t.padRing),e.scene.remove(t.beacon),e.scene.remove(t.boundary),e.scene.remove(t.label),Yr(t.label);for(let t of e.deviceNodes.values())e.scene.remove(t.root),e.scene.remove(t.label),Xr(t);e.deviceNodes.clear(),e.scalables.clear(),e.receivers.clear(),e.pointerDrag=null,e.cancelRangeDraw(),e.selected=null,e.selectedChannel=null;for(let t of e.resizeHandles)t.mesh.visible=!1;for(let t of e.agentRangeHandles)t.mesh.visible=!1;e.agents.clear(),e.blocks.clear()}function $r(e){e.disposed=!0,cancelAnimationFrame(e.raf),delete globalThis.__townScene3d;for(let t of e.pendingSaveTimers.values())clearTimeout(t);e.pendingSaveTimers.clear(),e.receivers.clear(),e.resizeOb?.disconnect(),e.resizeOb=null,e.tControls?.dispose(),e.tControls=null,e.composer?.dispose(),e.renderer.dispose(),e.renderer.domElement.parentElement===e.el&&e.renderer.domElement.remove()}function ei(e,t){if(e.mode!==t){e.mode=t,t===`browse`&&(e.pointerDrag&&ci(e),e.cancelRangeDraw(),e.setSelected(null),e.tControls?.detach()),e.refreshChannelHandles(),e.refreshAgentRangeHandles();for(let t of e.agents.values())t.renderRangeLine();e.dirty=!0}}function ti(e){return e.mode}function ni(e,t){e.snapEnabled=t}function ri(e){return e.snapEnabled}function ii(e,t,n){if(e.mode!==`edit`||e.isGizmoBusy())return!1;let r=e.screenToWorld(t,n),i=e.pickAgentRangeHandle(r.x,r.z);if(i)return e.pointerDrag={kind:`agentRangeResize`,id:i.agentId,handle:i.handle},e.emitSaveState(`dirty`),!0;let a=fi(e,r.x,r.z);if(a)return e.pointerDrag={kind:`resize`,id:a.cid,handle:a.handle},e.setSelected(null),e.emitSaveState(`dirty`),!0;if(e.rangeDrawAgent)return e.pointerDrag={kind:`rangeDraw`,id:e.rangeDrawAgent,x0:r.x,z0:r.z},e.rangeDrawPreviewState=null,!0;let o=e.pickAt(r.x,r.z);if(o){if(o.kind===`device`)return e.deviceNodes.has(o.id)?(e.pointerDrag=o,e.setSelected(o),e.emitSaveState(`dirty`),!0):!1;let t=e.agents.get(o.id);return!t||!t.channelId?!1:(t.bubbleTimer&&=(clearTimeout(t.bubbleTimer),null),t.dragging=!0,t.behavior.mode=`idle`,t.behavior.targetId=null,e.pointerDrag=o,e.setSelected(o),e.emitSaveState(`dirty`),!0)}let s=e.hitAgentRangeBoundary(r.x,r.z);if(s&&s.range)return e.pointerDrag={kind:`agentRange`,id:s.agentId,dx:s.range.x-r.x,dz:s.range.z-r.z},e.setSelected({kind:`agent`,id:s.agentId}),e.emitSaveState(`dirty`),!0;let c=e.pickChannelEdge(r.x,r.z);if(c)return e.pointerDrag={kind:`channelEdge`,id:c.cid,rx0:c.rx0,rz0:c.rz0,rd0:c.rd0},e.setSelected(null),e.selectChannel(c.cid),e.emitSaveState(`dirty`),!0;if(e.pickBeacon(r.x,r.z))return!1;let l=e.pickChannel(r.x,r.z);if(l){let t=e.blocks.get(l);return t?(e.pointerDrag={kind:`channel`,id:l,dx:t.x-r.x,dz:t.z-r.z},e.setSelected(null),e.selectChannel(l),e.emitSaveState(`dirty`),!0):!1}return!1}function ai(e){return e.pointerDrag!==null}function oi(e,t){return e.snapEnabled?Math.round(t/16)*16:Math.round(t*10)/10}function si(e,t,n){if(!e.pointerDrag)return;let r=e.screenToWorld(t,n),i=oi(e,r.x),a=oi(e,r.z),o=e.pointerDrag;if(o.kind===`device`){let t=e.deviceNodes.get(o.id);t&&(t.root.position.x=i,t.root.position.z=a,e.dirty=!0)}else if(o.kind===`agent`){let t=e.agents.get(o.id);if(t){let n=i,r=a,o=e.blockLayout(t.channelId);if(o){let e=A(o,i,a,20);n=e.x,r=e.z}t.root.position.x=n,t.root.position.z=r,e.dirty=!0}}else if(o.kind===`rangeDraw`){let t=e.agents.get(o.id);if(!t)return;let n=e.blockLayout(t.channelId),i=r.x,a=r.z;if(n){let e=A(n,i,a,12);i=e.x,a=e.z}e.rangeDrawPreviewState={x0:o.x0,z0:o.z0,x1:i,z1:a},e.updateRangeDrawPreview(o.x0,o.z0,i,a),e.dirty=!0}else if(o.kind===`agentRange`){let t=e.agents.get(o.id);if(!t||!t.range)return;let n=i+o.dx,r=a+o.dz;t.range={...t.range,x:n,z:r},t.renderRangeLine(),e.refreshAgentRangeHandles(),e.dirty=!0}else if(o.kind===`agentRangeResize`){let t=e.agents.get(o.id);if(!t||!t.range)return;t.range=e.applyAgentRangeResize(t.range,o.handle,r.x,r.z),t.renderRangeLine(),e.refreshAgentRangeHandles(),e.autoFrameTo(t.range.radiusX,t.range.radiusZ),e.dirty=!0}else if(o.kind===`channel`){let t=e.blocks.get(o.id);t&&li(e,t,i+o.dx,a+o.dz)}else if(o.kind===`resize`){let t=e.blocks.get(o.id);t&&pi(e,t,o.handle,r.x,r.z)}else if(o.kind===`channelEdge`){let t=e.blocks.get(o.id);if(t){let n=oe(t,i,a),r=Math.hypot(n.x/o.rx0,n.z/o.rz0),s=o.rd0>.05?r/o.rd0:1;t.radiusX=Math.max(60,Math.round(o.rx0*s)),t.radiusZ=Math.max(40,Math.round(o.rz0*s)),e.applyLayoutToBlock(t),e.autoFrameTo(t.radiusX,t.radiusZ)}}}function ci(e){if(!e.pointerDrag)return;let t=e.pointerDrag;if(e.pointerDrag=null,t.kind===`device`)e.deviceNodes.get(t.id)&&e.persistDeviceTransform(t.id);else if(t.kind===`agent`){let n=e.agents.get(t.id);n&&(n.homeX=n.root.position.x,n.homeZ=n.root.position.z,n.dragging=!1,e.emitSaveState(`saving`),e.agentApi?.updateHome(t.id,n.channelId,n.homeX,n.homeZ).then(()=>e.emitSaveState(`saved`,Date.now())).catch(()=>e.emitSaveState(`error`)))}else if(t.kind===`rangeDraw`){let n=e.agents.get(t.id);if(n&&e.rangeDrawPreviewState){let r=e.rangeDrawPreviewState,i={x:(r.x0+r.x1)/2,z:(r.z0+r.z1)/2,radiusX:Math.abs(r.x1-r.x0)/2,radiusZ:Math.abs(r.z1-r.z0)/2,shape:`rect`,rotationY:0};if(i.radiusX>=40&&i.radiusZ>=40){n.range=i,n.renderRangeLine();let r=k(n.range,n.homeX,n.homeZ,0);(r.x!==n.homeX||r.z!==n.homeZ)&&(n.homeX=r.x,n.homeZ=r.z,n.root.position.x=r.x,n.root.position.z=r.z,e.agentApi?.updateHome(t.id,n.channelId,r.x,r.z).catch(()=>{})),e.emitSaveState(`saving`),e.agentApi?.updateRange(t.id,n.channelId,n.range).then(()=>e.emitSaveState(`saved`,Date.now())).catch(()=>e.emitSaveState(`error`))}}e.cancelRangeDraw(),e.refreshAgentRangeHandles(),e.emitAgentRangeChanged(t.id)}else if(t.kind===`agentRange`||t.kind===`agentRangeResize`){let n=e.agents.get(t.id);n&&n.range&&(e.emitSaveState(`saving`),e.agentApi?.updateRange(t.id,n.channelId,n.range).then(()=>e.emitSaveState(`saved`,Date.now())).catch(()=>e.emitSaveState(`error`))),e.refreshAgentRangeHandles(),e.emitAgentRangeChanged(t.id)}else if(e.blocks.get(t.id)){mi(e,t.id),di(e);let n=e.getChannelLayout(t.id);n&&(e.emitSaveState(`saving`),e.channelApi?.save(t.id,n).then(()=>e.emitSaveState(`saved`,Date.now())).catch(()=>e.emitSaveState(`error`)),e.emit(`channelResized`,{channelId:t.id,layout:n}))}}function li(e,t,n,r){t.moveBy(n-t.x,r-t.z),e.refreshAgentRangeHandles(),e.dirty=!0}function ui(e){return e.shape===`rect`?[[e.radiusX,e.radiusZ],[-e.radiusX,e.radiusZ],[-e.radiusX,-e.radiusZ],[e.radiusX,-e.radiusZ]]:[[e.radiusX,0],[-e.radiusX,0],[0,e.radiusZ],[0,-e.radiusZ]]}function di(e){for(let t of e.resizeHandles)t.mesh.visible=!1;if(e.mode!==`edit`||!e.selectedChannel)return;let t=e.blocks.get(e.selectedChannel);if(!t)return;let n=t.rotationY*Math.PI/180,r=ui(t);for(let i=0;i<e.resizeHandles.length&&i<r.length;i++){let[a,o]=r[i],s=t.x+a*Math.cos(n)-o*Math.sin(n),c=t.z+a*Math.sin(n)+o*Math.cos(n);e.resizeHandles[i].cid=t.channelId,e.resizeHandles[i].mesh.position.set(s,1.4,c),e.resizeHandles[i].mesh.visible=!0}}function fi(e,t,n){if(e.mode!==`edit`)return null;for(let r of e.resizeHandles)if(r.mesh.visible&&Math.hypot(r.mesh.position.x-t,r.mesh.position.z-n)<90)return{cid:r.cid,handle:r.handle};return null}function pi(e,t,n,r,i){let a=-t.rotationY*Math.PI/180,o=Math.cos(a),s=Math.sin(a),c=r-t.x,l=i-t.z,u=c*o-l*s,d=c*s+l*o;t.shape===`rect`?(t.radiusX=Math.max(60,Math.abs(u)),t.radiusZ=Math.max(40,Math.abs(d))):n===0||n===1?t.radiusX=Math.max(60,Math.abs(u)):t.radiusZ=Math.max(40,Math.abs(d)),e.applyLayoutToBlock(t),di(e),e.autoFrameTo(t.radiusX,t.radiusZ),e.dirty=!0}function mi(e,t){let n=e.blocks.get(t);n&&(n.clampMembersAndRanges(),e.dirty=!0)}function hi(e,t){return e.mode===`edit`||e.selected?.kind===`agent`&&e.selected.id===t.agentId}function gi(e,t){e.emit(`agentRangeChanged`,{agentId:t})}function _i(e){for(let t of e.agents.values())t.rangeLine&&(t.rangeLine.visible=vi(e,t))}function vi(e,t){return e.mode===`edit`||e.selected?.kind===`agent`&&e.selected.id===t.agentId}function yi(e){for(let t of e.agentRangeHandles)t.mesh.visible=!1;if(e.mode!==`edit`||!e.selected||e.selected.kind!==`agent`)return;let t=e.agents.get(e.selected.id);if(!t||!t.range)return;let n=t.range.rotationY*Math.PI/180,r=e.boundaryHandlePoints(t.range);for(let i=0;i<e.agentRangeHandles.length&&i<r.length;i++){let[a,o]=r[i],s=t.range.x+a*Math.cos(n)-o*Math.sin(n),c=t.range.z+a*Math.sin(n)+o*Math.cos(n);e.agentRangeHandles[i].agentId=t.agentId,e.agentRangeHandles[i].mesh.position.set(s,1.2,c),e.agentRangeHandles[i].mesh.visible=!0}}function bi(e,t,n){if(e.mode!==`edit`)return null;for(let r of e.agentRangeHandles)if(r.mesh.visible&&Math.hypot(r.mesh.position.x-t,r.mesh.position.z-n)<40)return{agentId:r.agentId,handle:r.handle};return null}function xi(e,t,n){if(e.mode===`edit`){for(let r of e.agents.values())if(!(!r.range||!r.channelId)&&Se(r.range,t,n)<26)return r}}function Si(e,t,n,r){let i=-e.rotationY*Math.PI/180,a=Math.cos(i),o=Math.sin(i),s=n-e.x,c=r-e.z,l=s*a-c*o,u=s*o+c*a,d;return d=e.shape===`rect`?{...e,radiusX:Math.max(30,Math.abs(l)),radiusZ:Math.max(30,Math.abs(u))}:t===0||t===1?{...e,radiusX:Math.max(30,Math.abs(l))}:{...e,radiusZ:Math.max(30,Math.abs(u))},d}function Ci(e,t,n,r,i){let a=Math.min(t,r),o=Math.max(t,r),s=Math.min(n,i),c=Math.max(n,i),l=(a+o)/2,u=(s+c)/2,d=Math.max(8,(o-a)/2),f=Math.max(8,(c-s)/2);if(!e.rangeDrawLine){let t=Q(`rect`,1,1,4311284);t.material.opacity=.95,t.position.y=.5,e.scene.add(t),e.rangeDrawLine=t}e.rangeDrawLine.position.set(l,.5,u),e.rangeDrawLine.rotation.y=0;let p=new w().setFromPoints([new C(-d,0,-f),new C(d,0,-f),new C(d,0,f),new C(-d,0,f)]);e.rangeDrawLine.geometry.dispose(),e.rangeDrawLine.geometry=p}function wi(e){e.rangeDrawAgent===null&&!e.rangeDrawLine||(e.rangeDrawAgent=null,e.rangeDrawPreviewState=null,e.rangeDrawLine&&=(e.scene.remove(e.rangeDrawLine),null),e.dirty=!0)}function Ti(e,t){let n=e.agents.get(t);!n||!n.channelId||e.mode!==`edit`||(e.setSelected({kind:`agent`,id:t}),wi(e),e.rangeDrawAgent=t,e.rangeDrawPreviewState=null,yi(e),e.dirty=!0)}function Ei(e,t){return e.rangeDrawAgent?t===void 0||e.rangeDrawAgent===t:!1}function Di(e,t){return e.agents.get(t)?.range??null}function Oi(e,t,n){let r=e.agents.get(t);if(!r)return;r.range||={x:r.homeX,z:r.homeZ,radiusX:120,radiusZ:90,shape:`ellipse`,rotationY:0},r.range={...r.range,...n};let i=k(r.range,r.homeX,r.homeZ,0);(i.x!==r.homeX||i.z!==r.homeZ)&&(r.homeX=i.x,r.homeZ=i.z,r.root.position.x=i.x,r.root.position.z=i.z,e.rangeHomeMoved={agentId:t,x:i.x,z:i.z}),r.renderRangeLine(),yi(e),e.dirty=!0}function ki(e,t){let n=e.agents.get(t);if(n){if(e.rangeHomeMoved?.agentId===t){let{x:r,z:i}=e.rangeHomeMoved;e.rangeHomeMoved=null,e.agentApi?.updateHome(t,n.channelId,r,i).catch(()=>{})}e.emitSaveState(`saving`),e.agentApi?.updateRange(t,n.channelId,n.range).then(()=>e.emitSaveState(`saved`,Date.now())).catch(()=>e.emitSaveState(`error`)),gi(e,t)}}function Ai(e,t){let n=e.agents.get(t);n&&(n.rangeLine&&=(e.scene.remove(n.rangeLine),null),n.range=null,e.rangeHomeMoved=null,yi(e),e.emitSaveState(`saving`),e.agentApi?.updateRange(t,n.channelId,null).then(()=>e.emitSaveState(`saved`,Date.now())).catch(()=>e.emitSaveState(`error`)),gi(e,t),e.dirty=!0)}var ji=class{renderer;composer;camera;camTarget=new C(z,20,P);keyLight;scene;ground;skyDome=null;blocks=new Map;agents=new Map;deviceNodes=new Map;daqLedRings=new Map;daqLinkGroup=new g;daqLinks=[];daqLinkSig=``;daqLinksWanted=[];filmWebGroup=new g;filmWebSig=``;filmWebMat=null;pendingDeviceTwins=new Map;pendingDeviceCreates=new Map;cancelledDeviceCreates=new Set;scalables=new Map;selected=null;modelsById=new Map;gltfCache=new Map;gltfLoader=new Ae;el;raf=0;clock=new y;frameCount=0;fpsAccum=0;fpsWinT0=0;rafCount=0;frameBudgetMs=25;setFpsCap(e){this.frameBudgetMs=e>0?1e3/e:0,this.frameAcc=0}frameAcc=0;baseDpr=Math.min(window.devicePixelRatio,2);dirty=!0;flagBy=new Map;disposed=!1;dolly=1;autoOrbit=!1;viewCur={yaw:0,pitch:.7,radius:1178};viewTarget={yaw:0,pitch:.7,radius:1178};tControls=null;resizeOb=null;mode=`browse`;pointerDrag=null;snapEnabled=!0;selRing=null;resizeHandles=[];agentRangeHandles=[];rangeDrawLine=null;rangeDrawAgent=null;rangeDrawPreviewState=null;rangeHomeMoved=null;lastActivity=null;recentActivity=[];dbgBubbles=[];receivers=new Map;container;resolveTaskAssignee=null;devices=null;agentApi=null;channelApi=null;busHandlers=new Map;constructor(e,t){this.el=t,this.container=t,this.initRenderer(),this.buildBlocks(e)}get blockHost(){return this}get agentHost(){return this}get deviceHost(){return this}initRenderer(){nn(this),globalThis.__townScene3d=this,this.loop()}on(e,t){return this.busHandlers.set(e,t),()=>this.busHandlers.delete(e)}emit(e,t){let n=this.busHandlers.get(e);n&&n(t)}buildBlocks(e){ur(this,e)}pickBeacon(e,t){return Mr(this,e,t)}ensureAgent(e,t,n,r){Qn(this,e,t,n,r)}agentAnimClips=new Map;registerModelsFromList(e){$n(this,e)}applySceneLayouts(e){pr(this,e)}hasChannel(e){return mr(this,e)}blockLayout(e){return hr(this,e)}placedChannels(){return gr(this)}getChannelLayout(e){return _r(this,e)}get threeScene(){return this.scene}markDirty(){this.dirty=!0}trackLayout(e){vr(this,e)}renameDeviceSprite(e,t){Pn(this,e,t)}swapDeviceModelSprite(e,t){Fn(this,e,t)}hydrate(e,t,n){this.applySceneLayouts(t),this.rebuild(e),this.syncDevices(n),this.emit(`blockCount`,this.blocks.size),this.emit(`agentCount`,this.agents.size)}rebuild(e){this.resetAll(),this.buildBlocks(e),this.emit(`blockCount`,this.blocks.size),this.emit(`agentCount`,this.agents.size)}focusChannel(e){let t=this.blocks.get(e);t&&this.focusTo(t.x,t.z)}dropChannelOnWorld(e,t,n,r,i){return br(this,e,t,n,r,i)}updateChannelLayout(e,t){xr(this,e,t)}removeChannel(e){Sr(this,e)}applyBlockMove(e,t,n){li(this,e,t,n)}applyLayoutToBlock(e){wr(this,e)}boundaryHandlePoints(e){return ui(e)}refreshChannelHandles(){di(this)}pickResizeHandle(e,t){return fi(this,e,t)}applyResize(e,t,n,r){pi(this,e,t,n,r)}clampAgentsToBoundary(e){mi(this,e)}getSelectedChannel(){return Jr(this)}selectChannel(e){qr(this,e)}getAllChannelLayouts(){return Cr(this)}handleTownEvent(e){yn(this,e)}startBehavior(e){bn(this,e)}behaviorActionLabel(e){return xn(e)}notifyMotion(e){this.emit(`motion`,{agentName:e.name,anim:e.animState,at:Date.now()})}deliverBehavior(e,t){let n=e.behavior.action?.text??``;n&&this.enqueueBubble(e.channelId,e.agentId,`info`,n,2600),this.emit(`behavior`,{agentName:e.name,action:this.behaviorActionLabel(e.behavior.action?.kind??`message`),targetName:t.name})}releaseEngaged(e){let t=e.behavior.targetId?this.agents.get(e.behavior.targetId):void 0;t&&(t.behavior.engaged=!1)}getAgent(e){return this.agents.get(e)}blockLayoutOf(e){return this.blockLayout(e)}getCameraTarget(){return yr(this)}swapAgentModel(e,t){er(this,e,t)}emitResonance(e){Sn(this,e)}rafAnims=[];layouts=new Map;entityIndex=new Map;selectedChannel=null;enqueueBubble(e,t,n,r,i){rn(this,e,t,n,r,i)}drainReceivers(e){an(this,e)}get canvas(){return this.renderer.domElement}worldToScreen(e,t,n){return Ve(this,e,t,n)}screenToWorld(e,t){return He(this,e,t)}panBy(e,t){Ue(this,e,t)}autoFrameTo(e,t){Ge(this,e,t)}setViewPreset(e){Ke(this,e)}orbitBy(e,t){qe(this,e,t)}setAutoOrbit(e){Je(this,e)}getAutoOrbit(){return Ye(this)}panByScreen(e,t){Xe(this,e,t)}flyToPreset(e,t=900){Ze(this,e,t)}getCameraPose(){return Qe(this)}panWorldBy(e,t){$e(this,e,t)}resetView(){et(this)}zoomBy(e){tt(this,e)}focusTo(e,t){nt(this,e,t)}pushAnim(e){this.rafAnims.push(e)}autoDolly=null;setTransformMode(e){Ur(this,e)}isGizmoBusy(){return Wr(this)}setExposure(e){Gr(this,e)}setTerritoryOpacity(e){Kr(this,e)}dropModelOnWorld(e,t,n){return ar(this,e,t,n)}spawnDeviceNode(e,t,n,r,i){return In(this,e,t,n,r,i)}enhancePbrMaterials(e,t){An(this,e,t)}getDebugState(){return Tn(this)}getMinimapState(){return En(this)}getRecentActivity(){return Dn(this)}updateDeviceNode(e,t,n){Rn(this,e,t,n)}renameDevice(e,t){zn(this,e,t)}swapDeviceModel(e,t){Bn(this,e,t)}getDeviceName(e){return Vn(this,e)}getDeviceModelRef(e){return Hn(this,e)}async removeDevice(e){await Un(this,e)}getDeviceNodes(){return Wn(this)}setAnimPref(e,t){tr(this,e,t)}getAgentModel(e){return nr(this,e)}getAgentName(e){return rr(this,e)}getAgentClips(e){return ir(this,e)}pickAt(e,t){return Nr(this,e,t)}pickChannel(e,t){return Pr(this,e,t)}pickChannelEdge(e,t){return Fr(this,e,t)}setSelected(e){Ir(this,e)}setModelScale(e,t,n){Lr(this,e,t,n)}getSelectedScale(){return Rr(this)}registerScalable(e,t,n,r){zr(this,e,t,n,r)}persistScale(e,t){Br(this,e,t)}setMode(e){ei(this,e)}getMode(){return ti(this)}setSnap(e){ni(this,e)}getSnap(){return ri(this)}tryStartPointerDrag(e,t){return ii(this,e,t)}isPointerDragging(){return ai(this)}snapWorld(e){return oi(this,e)}movePointerDrag(e,t){si(this,e,t)}endPointerDrag(){ci(this)}rangeLineVisible(e){return hi(this,e)}emitAgentRangeChanged(e){gi(this,e)}refreshAgentRangeLines(){_i(this)}rangeLineVisibleFor(e){return vi(this,e)}refreshAgentRangeHandles(){yi(this)}pickAgentRangeHandle(e,t){return bi(this,e,t)}hitAgentRangeBoundary(e,t){return xi(this,e,t)}applyAgentRangeResize(e,t,n,r){return Si(e,t,n,r)}updateRangeDrawPreview(e,t,n,r){Ci(this,e,t,n,r)}cancelRangeDraw(){wi(this)}startRangeDraw(e){Ti(this,e)}isRangeDrawing(e){return Ei(this,e)}debugAdvanceReceiver(e){let t=this.receivers.get(e);t&&(t.currentUntil=0)}getAgentRange(e){return Di(this,e)}setAgentRangeScene(e,t){Oi(this,e,t)}commitAgentRange(e){ki(this,e)}clearAgentRange(e){Ai(this,e)}setModelRotation(e,t,n){Vr(this,e,t,n)}getModelRotation(e,t){return Hr(this,e,t)}emitSaveState(e,t=Date.now()){this.emit(`saveState`,{state:e,at:t})}persistDeviceTransform(e){Gn(this,e)}persistAllDevices(){Kn(this)}pendingSaveTimers=new Map;syncDevices(e){qn(this,e)}recreateDeviceNode(e){Yn(this,e)}deviceTopY(e){return mn(e)}syncDaqLinks(e){hn(this,e)}refreshDaqLinks(){gn(this)}rebuildFilmWeb(){vn(this)}loop(){Dr(this)}qTier=0;qLowStreak=0;qHighStreak=0;qualityMode=`auto`;setQualityMode(e){Or(this,e)}adaptQuality(e){kr(this,e)}applyQuality(){Ar(this)}applyPixelRatio(e){jr(this,e)}disposeCanvasTextures(e){Yr(e)}disposeDeviceAssets(e){Xr(e)}disposeAgentAssets(e){Zr(e)}resetAll(){Qr(this)}dispose(){$r(this)}};export{Mn as Agent3D,jn as Block3D,Nn as DeviceNode,ji as TownScene3D,Q as makeBoundary};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{N as e,dt as t,ft as n,mt as r,u as i}from"./CavpkQb0.js";import{Q as a,S as o,V as s,W as c,b as l,f as u,h as d,i as f,k as p,m,nt as h,p as g,rt as _,y as v}from"./ByMj6e7s.js";import{c as y,d as b,o as ee,s as x}from"./Dqz5HiXa.js";import{t as te}from"./Cmp8PMrA.js";import{n as S}from"./Cnrmlixo.js";import{t as C}from"./DzBbYWrw2.js";import{t as w}from"./BDNMzG2s2.js";import{r as T}from"./Du9v6qGB.js";import{t as E}from"./Dy3oXKdn2.js";import{t as D}from"./BDmNbZ252.js";import{t as O}from"./74x7BOWv2.js";import{t as k}from"./Chphw5IA2.js";import{t as A}from"./9zrLAN2o2.js";import{t as ne}from"./H2rNs1O82.js";import{t as re}from"./BdM_Qr752.js";import{t as ie}from"./C3twEwTh2.js";import{t as ae}from"./Cr518Gh02.js";var j={class:`aw-page-head`},oe={class:`aw-kicker`},se={class:`sub`},ce={class:`badges mono`},le={class:`badge`},ue={class:`badge`},de={class:`badge`},fe=Object.assign(w(o({__name:`DcwDetailHead`,props:{line:{},lineId:{},nodesCount:{},productsCount:{},recipesCount:{}},setup(e){return(t,i)=>(s(),d(`div`,j,[u(`div`,null,[u(`p`,oe,[u(`span`,{class:`line-chip`,style:n({background:e.line?.color??`#3aa0ff`})},null,4),v(`AGENTWORKSHOP / LINE / `+r(e.line?.name??e.lineId),1)]),u(`h1`,null,r(e.line?.name??t.$t(`dcwDetail.k1b2snna151`))+` · `+r(t.$t(`dcwDetail.k1l0iow1137`)),1),u(`p`,se,r(e.line?.description||t.$t(`dcwDetail.kzcbfki152`)),1)]),u(`div`,ce,[u(`span`,le,r(t.$t(`dcwDetail.k45uio082`))+` `+r(e.nodesCount),1),u(`span`,ue,r(t.$t(`dcwDetail.k3waz1025`))+` `+r(e.productsCount),1),u(`span`,de,r(t.$t(`dcwDetail.k48grv027`))+` `+r(e.recipesCount),1)])]))}}),[[`__scopeId`,`data-v-2c59e7e0`]]),{__name:`DcwDetailHead`}),pe={class:`aw-tile ctrl-card`},me={class:`ctrl-left`},he=[`title`],ge={class:`ctrl-right`},_e={class:`ctrl-metrics mono`},ve=[`title`],ye=[`title`],be=[`title`],xe=Object.assign(w(o({__name:`DcwGatewayBar`,props:{running:{type:Boolean},nodesOnline:{},nodesTotal:{},writesTotal:{},writesFailed:{}},emits:[`toggle`,`open-templates`,`open-add`],setup(e,{emit:n}){let i=n;return(n,a)=>(s(),d(`section`,pe,[u(`div`,me,[u(`button`,{class:t([`aw-pill`,{running:e.running}]),title:n.$t(`dcwDetail.k1snap154`),onClick:a[0]||=t=>i(`toggle`,e.running?`pause`:`resume`)},[u(`span`,{class:t(e.running?`i-tabler-player-pause`:`i-tabler-player-play`)},null,2),v(` `+r(e.running?n.$t(`dcwDetail.kplrsg153`):n.$t(`dcwDetail.knxgni9169`)),1)],10,he)]),u(`div`,ge,[u(`span`,_e,[u(`span`,null,r(n.$t(`dcwDetail.k45uio082`))+` `+r(e.nodesOnline)+`/`+r(e.nodesTotal),1),a[3]||=u(`span`,{class:`sep`},`·`,-1),u(`span`,{title:n.$t(`dcwDetail.kd3ygmn001`)},r(n.$t(`dcwDetail.k3wtib138`))+` `+r(e.writesTotal),9,ve),a[4]||=u(`span`,{class:`sep`},`·`,-1),u(`span`,{class:t({warn:e.writesFailed>0}),title:n.$t(`dcwDetail.kd3znl0002`)},r(n.$t(`dcwDetail.k3yit7139`))+` `+r(e.writesFailed),11,ye)]),u(`button`,{class:`aw-pill outline`,title:n.$t(`dcwDetail.kc4ixly003`),onClick:a[1]||=e=>i(`open-templates`)},[a[5]||=u(`span`,{class:`i-tabler-template`},null,-1),v(` `+r(n.$t(`dcwDetail.k1972dx9020`)),1)],8,be),u(`button`,{class:`aw-pill add-btn`,onClick:a[2]||=e=>i(`open-add`)},[a[6]||=u(`span`,{class:`i-tabler-plus`},null,-1),v(` `+r(n.$t(`dcwDetail.k1976uns021`)),1)])])]))}}),[[`__scopeId`,`data-v-e18f9fc9`]]),{__name:`DcwGatewayBar`}),Se={key:0,class:`aw-tile adopt-card`},Ce={class:`adopt-title`},we={class:`adopt-list`},Te=[`onClick`],M=[`onClick`],Ee=Object.assign(w(o({__name:`DcwAdoptCard`,props:{unassignedNodes:{},unassignedProducts:{}},emits:[`adopt-node`,`adopt-product`],setup(e,{emit:t}){let n=t;return(t,i)=>e.unassignedNodes.length||e.unassignedProducts.length?(s(),d(`section`,Se,[u(`b`,Ce,r(t.$t(`dcwDetail.kaebkky022`)),1),u(`div`,we,[(s(!0),d(f,null,c(e.unassignedNodes,e=>(s(),d(`span`,{key:e.id,class:`adopt-chip`},[v(r(e.name)+` `,1),u(`button`,{class:`mini-btn`,onClick:t=>n(`adopt-node`,e.id)},r(t.$t(`dcwDetail.kyjp9fg023`)),9,Te)]))),128)),(s(!0),d(f,null,c(e.unassignedProducts,e=>(s(),d(`span`,{key:e.id,class:`adopt-chip`},[v(r(e.name)+`(`+r(t.$t(`dcwDetail.k3km252140`)),1),u(`button`,{class:`mini-btn`,onClick:t=>n(`adopt-product`,e.id)},r(t.$t(`dcwDetail.kyjp9fg023`)),9,M)]))),128))])])):m(``,!0)}}),[[`__scopeId`,`data-v-6ad055a2`]]),{__name:`DcwAdoptCard`}),De={class:`aw-tile line-card`},N={class:`line-status`},Oe={class:`line-info`},ke={key:0,class:`mono dim`},Ae={key:1,class:`dim`},je={class:`line-ctl`},Me={class:`ctl-sel`},Ne={value:``},P=[`value`],Pe={class:`ctl-sel`},Fe=[`disabled`],Ie={value:``},F=[`value`,`disabled`],I=[`disabled`,`title`],Le=[`disabled`],Re={key:0,class:`banner bad`,style:{"margin-top":`10px`}},ze={key:1,class:`banner good`,style:{"margin-top":`10px`}},Be=Object.assign(w(o({__name:`DcwLineRunCard`,props:p({ls:{},lineProducts:{},lineRecipes:{},lineBusy:{type:Boolean},lineMsg:{},lineErr:{}},{productId:{required:!0},productIdModifiers:{},recipeId:{required:!0},recipeIdModifiers:{}}),emits:p([`start`,`stop`],[`update:productId`,`update:recipeId`]),setup(e,{emit:n}){let i=n,o=a(e,`productId`),l=a(e,`recipeId`);return(n,a)=>(s(),d(`section`,De,[u(`div`,N,[u(`span`,{class:t([`line-dot`,{on:e.ls.active}])},null,2),u(`div`,Oe,[u(`b`,null,r(e.ls.active?n.$t(`dcwDetail.k1pxrhx0154`):n.$t(`dcwDetail.k1b2hxmx170`)),1),e.ls.active?(s(),d(`small`,ke,r(e.ls.productName)+` · `+r(e.ls.recipeName)+` · `+r(n.$t(`dcwDetail.k400lb075`))+` `+r(e.ls.runId)+` · `+r(n.$t(`dcwDetail.k3zkt2166`))+` `+r(e.ls.startedAt?.slice(11,19))+` `+r(n.$t(`dcwDetail.k69vag8168`))+` `+r(e.ls.taggedSamples)+` `+r(n.$t(`dcwDetail.k4118o085`)),1)):(s(),d(`small`,Ae,r(n.$t(`dcwDetail.k19pof14024`)),1))])]),u(`div`,je,[u(`label`,Me,[u(`span`,null,r(n.$t(`dcwDetail.k3waz1025`)),1),_(u(`select`,{"onUpdate:modelValue":a[0]||=e=>o.value=e,class:`inp`,onChange:a[1]||=e=>l.value=``},[u(`option`,Ne,r(n.$t(`dcwDetail.kuisodh026`)),1),(s(!0),d(f,null,c(e.lineProducts,e=>(s(),d(`option`,{key:e.id,value:e.id},r(e.name),9,P))),128))],544),[[x,o.value]])]),u(`label`,Pe,[u(`span`,null,r(n.$t(`dcwDetail.k48grv027`)),1),_(u(`select`,{"onUpdate:modelValue":a[2]||=e=>l.value=e,class:`inp`,disabled:!o.value},[u(`option`,Ie,r(n.$t(`dcwDetail.kutxzsz028`)),1),(s(!0),d(f,null,c(e.lineRecipes,e=>(s(),d(`option`,{key:e.id,value:e.id,disabled:e.params.length===0},r(e.name)+r(e.params.length===0?n.$t(`dcwDetail.k1hicmch155`):n.$t(`dcwDetail.k1lzfi4g180`,{p0:e.params.length})),9,F))),128))],8,Fe),[[x,l.value]])]),e.ls.active?(s(),d(`button`,{key:1,class:`pill-btn stop`,disabled:e.lineBusy,onClick:a[4]||=e=>i(`stop`)},r(n.$t(`dcwDetail.k1xyhd2y030`)),9,Le)):(s(),d(`button`,{key:0,class:`pill-btn`,disabled:e.lineBusy||!l.value,title:l.value?n.$t(`dcwDetail.startTip`):n.$t(`dcwDetail.startNeedRecipe`),onClick:a[3]||=e=>i(`start`)},r(n.$t(`dcwDetail.kfb8vml029`)),9,I))]),e.lineErr?(s(),d(`p`,Re,r(e.lineErr),1)):m(``,!0),e.lineMsg?(s(),d(`p`,ze,r(e.lineMsg),1)):m(``,!0)]))}}),[[`__scopeId`,`data-v-7ef9dbe9`]]),{__name:`DcwLineRunCard`}),Ve={class:`modal`},He={class:`m-title`},Ue={class:`dim mono`},L={class:`dim tpl-hint`},We={class:`tpl-chips`},R=[`title`],Ge={class:`mono`},Ke={class:`sec-label`},z={class:`f-grid tpl-form`},qe={class:`f`},B=[`placeholder`],Je={class:`f`},Ye=[`placeholder`],Xe={class:`f`},Ze=[`placeholder`],Qe={class:`f`},V=[`placeholder`],$e={class:`f`},et=[`placeholder`],tt={class:`f`},nt=[`placeholder`],H={class:`f`},rt={class:`f`},it=[`value`],at={class:`f`},ot=[`placeholder`],st={key:0,class:`banner good`,style:{"margin-top":`10px`}},ct={key:1,class:`m-err`},lt={class:`m-actions`},ut=[`disabled`],dt=Object.assign(w(o({__name:`DcwDetailTemplateModal`,props:p({templates:{},tplIcons:{},builtinCount:{},customCount:{},tplSaving:{type:Boolean},tplError:{},tplOk:{}},{open:{type:Boolean,required:!0},openModifiers:{},form:{required:!0},formModifiers:{}}),emits:p([`submit`,`close`],[`update:open`,`update:form`]),setup(n,{emit:i}){let o=i,{t:l}=S(),p=a(n,`open`),h=a(n,`form`);return(i,a)=>p.value?(s(),d(`div`,{key:0,class:`modal-mask`,onClick:a[11]||=b(e=>p.value=!1,[`self`])},[u(`div`,Ve,[u(`h3`,He,[v(r(i.$t(`dcwDetail.k1x4vam0031`))+` `,1),u(`small`,Ue,r(i.$t(`dcwDetail.k3x23c141`))+` `+r(n.builtinCount)+` · `+r(i.$t(`dcwDetail.k3t616a142`))+` `+r(n.customCount),1)]),u(`p`,L,r(i.$t(`dcwDetail.ke1iyud032`)),1),u(`div`,We,[(s(!0),d(f,null,c(n.templates,n=>(s(),d(`span`,{key:n.key,class:`tpl-chip`,title:`${n.code} · ${n.min}~${n.max} ${n.unit}${n.semantics?` · ${n.semantics}`:``}`},[v(r((`catalogTplName`in i?i.catalogTplName:e(T))(e(l),n))+` `,1),u(`small`,Ge,r(n.min)+`~`+r(n.max)+r(n.unit),1),u(`em`,{class:t([`tpl-tag`,{builtin:n.builtin}])},r(n.builtin?i.$t(`dcwDetail.k3x23c141`):i.$t(`dcwDetail.k3t616a142`)),3)],8,R))),128))]),u(`p`,Ke,r(i.$t(`dcwDetail.k169eb4s033`)),1),u(`div`,z,[u(`label`,qe,[u(`span`,null,[v(r(i.$t(`dcwDetail.k1f55q76034`)),1),a[12]||=u(`em`,null,`*`,-1)]),_(u(`input`,{"onUpdate:modelValue":a[0]||=e=>h.value.name=e,class:`inp`,placeholder:i.$t(`dcwDetail.k1tooi3o004`)},null,8,B),[[y,h.value.name]])]),u(`label`,Je,[u(`span`,null,r(i.$t(`dcwDetail.k1bqk219035`)),1),_(u(`input`,{"onUpdate:modelValue":a[1]||=e=>h.value.ch=e,class:`inp`,placeholder:i.$t(`dcwDetail.k698qz0005`)},null,8,Ye),[[y,h.value.ch]])]),u(`label`,Xe,[u(`span`,null,r(i.$t(`dcwDetail.k1ayxrqb036`)),1),_(u(`input`,{"onUpdate:modelValue":a[2]||=e=>h.value.code=e,class:`inp`,placeholder:i.$t(`dcwDetail.codePh`)},null,8,Ze),[[y,h.value.code]])]),u(`label`,Qe,[u(`span`,null,[v(r(i.$t(`dcwDetail.k3x4ef037`)),1),a[13]||=u(`em`,null,`*`,-1)]),_(u(`input`,{"onUpdate:modelValue":a[3]||=e=>h.value.unit=e,class:`inp`,placeholder:i.$t(`dcwDetail.unitPh`)},null,8,V),[[y,h.value.unit]])]),u(`label`,$e,[u(`span`,null,[v(r(i.$t(`dcwDetail.k1l9jv5m038`)),1),a[14]||=u(`em`,null,`*`,-1)]),_(u(`input`,{"onUpdate:modelValue":a[4]||=e=>h.value.min=e,type:`number`,class:`inp`,placeholder:i.$t(`dcwDetail.kxz9174006`)},null,8,et),[[y,h.value.min,void 0,{number:!0}]])]),u(`label`,tt,[u(`span`,null,[v(r(i.$t(`dcwDetail.k1l9jv4p039`)),1),a[15]||=u(`em`,null,`*`,-1)]),_(u(`input`,{"onUpdate:modelValue":a[5]||=e=>h.value.max=e,type:`number`,class:`inp`,placeholder:i.$t(`dcwDetail.kxz9167007`)},null,8,nt),[[y,h.value.max,void 0,{number:!0}]])]),u(`label`,H,[u(`span`,null,r(i.$t(`dcwDetail.k3mxmcx040`)),1),_(u(`input`,{"onUpdate:modelValue":a[6]||=e=>h.value.decimals=e,type:`number`,min:`0`,max:`4`,class:`inp`},null,512),[[y,h.value.decimals,void 0,{number:!0}]])]),u(`label`,rt,[u(`span`,null,r(i.$t(`dcwDetail.k3xx56041`)),1),_(u(`select`,{"onUpdate:modelValue":a[7]||=e=>h.value.icon=e,class:`inp`},[(s(!0),d(f,null,c(n.tplIcons,e=>(s(),d(`option`,{key:e.key,value:e.key},r(e.label),9,it))),128))],512),[[x,h.value.icon]])])]),u(`label`,at,[u(`span`,null,r(i.$t(`dcwDetail.knjmyfr042`)),1),_(u(`textarea`,{"onUpdate:modelValue":a[8]||=e=>h.value.semantics=e,class:`inp`,rows:`2`,placeholder:i.$t(`dcwDetail.k1qdnfzc008`)},null,8,ot),[[y,h.value.semantics]])]),n.tplOk?(s(),d(`p`,st,r(n.tplOk),1)):m(``,!0),n.tplError?(s(),d(`p`,ct,r(n.tplError),1)):m(``,!0),u(`div`,lt,[u(`button`,{class:`aw-pill outline`,onClick:a[9]||=e=>p.value=!1},r(i.$t(`dcwDetail.k3x62t043`)),1),u(`button`,{class:`pill-btn`,disabled:n.tplSaving||!h.value.name.trim()||h.value.unit.trim()===``||h.value.min===``||h.value.max===``,onClick:a[10]||=e=>o(`submit`)},r(n.tplSaving?i.$t(`dcwDetail.k1bg4759156`):i.$t(`dcwDetail.k1bg9nga171`)),9,ut)])])])):m(``,!0)}}),[[`__scopeId`,`data-v-f19aa086`]]),{__name:`DcwDetailTemplateModal`}),ft={class:`modal`},U={class:`m-title`},pt={class:`seg-row`},mt={class:`f-grid`},ht={class:`f`},gt=[`value`],_t={class:`f`},W=[`placeholder`],G={class:`f`},K=[`placeholder`],q={class:`f`},J=[`placeholder`],Y={class:`f`},X=[`placeholder`],Z={class:`f-grid cal-form`},Q={class:`f`},vt={value:`none`},yt={value:`linear`},bt={class:`f`},xt={style:{display:`flex`,gap:`6px`}},St=[`disabled`,`title`],Ct=[`disabled`,`title`],wt={class:`f-grid`},Tt={class:`f`},Et=[`value`],Dt={key:0,class:`f-grid driver-form`},$={key:0,style:{color:`var(--tone-danger-dot)`,"font-style":`normal`}},Ot=[`onUpdate:modelValue`],kt=[`value`],At=[`onUpdate:modelValue`,`type`,`placeholder`],jt={key:2,class:`hint`},Mt={class:`test-row`},Nt=[`disabled`],Pt={class:`f`},Ft=[`placeholder`],It={key:1,class:`m-err`},Lt={class:`m-actions`},Rt=[`disabled`],zt=Object.assign(w(o({__name:`DcwAddNodeModal`,props:p({templates:{},driverCatalog:{},addFields:{},addTesting:{type:Boolean},addTest:{},addSaving:{type:Boolean},addError:{}},{open:{type:Boolean,required:!0},openModifiers:{},scenario:{required:!0},scenarioModifiers:{},template:{required:!0},templateModifiers:{},driver:{required:!0},driverModifiers:{},name:{required:!0},nameModifiers:{},hold:{required:!0},holdModifiers:{},read:{required:!0},readModifiers:{},writeLock:{required:!0},writeLockModifiers:{},cfg:{required:!0},cfgModifiers:{},transform:{required:!0},transformModifiers:{},semantics:{required:!0},semanticsModifiers:{}}),emits:p([`test`,`submit`],[`update:open`,`update:scenario`,`update:template`,`update:driver`,`update:name`,`update:hold`,`update:read`,`update:writeLock`,`update:cfg`,`update:transform`,`update:semantics`]),setup(n,{emit:i}){let o=i,{t:l}=S(),p=a(n,`open`),h=a(n,`scenario`),g=a(n,`template`),te=a(n,`driver`),C=a(n,`name`),w=a(n,`hold`),E=a(n,`read`),D=a(n,`writeLock`),O=a(n,`cfg`),k=a(n,`transform`),A=a(n,`semantics`);return(i,a)=>p.value?(s(),d(`div`,{key:0,class:`modal-mask`,onClick:a[15]||=b(e=>p.value=!1,[`self`])},[u(`div`,ft,[u(`h3`,U,r(i.$t(`dcwDetail.k1976uns021`)),1),u(`div`,pt,[u(`button`,{class:t([`seg`,{on:h.value===`mock`}]),onClick:a[0]||=e=>h.value=`mock`},r(i.$t(`dcwDetail.mockPlc`)),3),u(`button`,{class:t([`seg`,{on:h.value===`real`}]),onClick:a[1]||=e=>h.value=`real`},r(i.$t(`dcwDetail.kyj8fen044`)),3)]),u(`div`,mt,[u(`label`,ht,[u(`span`,null,r(i.$t(`dcwDetail.k1ejzwqp045`)),1),_(u(`select`,{"onUpdate:modelValue":a[2]||=e=>g.value=e,class:`inp`},[(s(!0),d(f,null,c(n.templates,t=>(s(),d(`option`,{key:t.key,value:t.key},r((`catalogTplName`in i?i.catalogTplName:e(T))(e(l),t))+` · `+r(t.ch)+`(`+r(t.min)+`~`+r(t.max)+` `+r(t.unit)+`)`+r(t.builtin?``:i.$t(`dcwDetail.kr45rk9157`)),9,gt))),128))],512),[[x,g.value]])]),u(`label`,_t,[u(`span`,null,r(i.$t(`dcwDetail.k1ce2k1y046`)),1),_(u(`input`,{"onUpdate:modelValue":a[3]||=e=>C.value=e,class:`inp`,placeholder:i.$t(`dcwDetail.kgpxzy3009`)},null,8,W),[[y,C.value]])]),u(`label`,G,[u(`span`,null,r(i.$t(`dcwDetail.k1vyb8im047`)),1),_(u(`input`,{"onUpdate:modelValue":a[4]||=e=>w.value=e,type:`number`,min:`0`,max:`3600000`,step:`500`,class:`inp`,placeholder:i.$t(`dcwDetail.kb1srz0010`)},null,8,K),[[y,w.value,void 0,{number:!0}]])]),u(`label`,q,[u(`span`,null,r(i.$t(`dcwDetail.k9r7d4e016`)),1),_(u(`input`,{"onUpdate:modelValue":a[5]||=e=>E.value=e,type:`number`,min:`0`,max:`3600000`,step:`500`,class:`inp`,placeholder:i.$t(`dcwDetail.k9r7d4e017`)},null,8,J),[[y,E.value,void 0,{number:!0}]])]),u(`label`,Y,[u(`span`,null,r(i.$t(`dcwDetail.writeLockLabel`)),1),_(u(`input`,{"onUpdate:modelValue":a[6]||=e=>D.value=e,type:`number`,min:`0`,max:`3600`,step:`1`,class:`inp`,placeholder:i.$t(`dcwDetail.writeLockHint`)},null,8,X),[[y,D.value,void 0,{number:!0}]])])]),u(`div`,Z,[u(`label`,Q,[u(`span`,null,r(i.$t(`dcwDetail.kiune1f048`)),1),_(u(`select`,{"onUpdate:modelValue":a[7]||=e=>k.value.kind=e,class:`inp`},[u(`option`,vt,r(i.$t(`dcwDetail.kkzy0k049`)),1),u(`option`,yt,r(i.$t(`dcwDetail.linearCalOpt`)),1)],512),[[x,k.value.kind]])]),u(`label`,bt,[a[16]||=u(`span`,null,`scale / offset`,-1),u(`div`,xt,[_(u(`input`,{"onUpdate:modelValue":a[8]||=e=>k.value.scale=e,type:`number`,step:`0.1`,class:`inp`,disabled:k.value.kind!==`linear`,title:i.$t(`dcwDetail.calScaleTip`)},null,8,St),[[y,k.value.scale,void 0,{number:!0}]]),_(u(`input`,{"onUpdate:modelValue":a[9]||=e=>k.value.offset=e,type:`number`,step:`0.1`,class:`inp`,disabled:k.value.kind!==`linear`,title:i.$t(`dcwDetail.calOffsetTip`)},null,8,Ct),[[y,k.value.offset,void 0,{number:!0}]])])])]),h.value===`real`?(s(),d(f,{key:0},[u(`div`,wt,[u(`label`,Tt,[u(`span`,null,r(i.$t(`dcwDetail.k1kt87rx050`)),1),_(u(`select`,{"onUpdate:modelValue":a[10]||=e=>te.value=e,class:`inp`},[(s(!0),d(f,null,c(n.driverCatalog.filter(e=>e.status!==`builtin`),e=>(s(),d(`option`,{key:e.kind,value:e.kind},r(e.label)+r(e.plugin?` ⌁`:``),9,Et))),128))],512),[[x,te.value]])])]),n.addFields.length?(s(),d(`div`,Dt,[(s(!0),d(f,null,c(n.addFields,e=>(s(),d(`label`,{key:e.key,class:`f`},[u(`span`,null,[v(r(e.label),1),e.required?(s(),d(`em`,$,`*`)):m(``,!0)]),e.type===`select`?_((s(),d(`select`,{key:0,"onUpdate:modelValue":t=>O.value[e.key]=t,class:`inp`},[(s(!0),d(f,null,c(e.options,e=>(s(),d(`option`,{key:e.value,value:e.value},r(e.label),9,kt))),128))],8,Ot)),[[x,O.value[e.key]]]):_((s(),d(`input`,{key:1,"onUpdate:modelValue":t=>O.value[e.key]=t,type:e.type===`number`?`number`:`text`,placeholder:e.placeholder,class:`inp`},null,8,At)),[[ee,O.value[e.key]]]),e.hint?(s(),d(`small`,jt,r(e.hint),1)):m(``,!0)]))),128))])):m(``,!0),u(`div`,Mt,[u(`button`,{class:`pill-btn outline`,disabled:n.addTesting,onClick:a[11]||=e=>o(`test`)},r(n.addTesting?i.$t(`dcwDetail.k1fsh720158`):i.$t(`dcwDetail.k1fstglk172`)),9,Nt),n.addTest?(s(),d(`span`,{key:0,class:t([`test-result`,n.addTest.ok?`good`:`bad`])},r(n.addTest.ok?`✓`:`✗`)+` `+r(n.addTest.message),3)):m(``,!0)])],64)):m(``,!0),u(`label`,Pt,[u(`span`,null,r(i.$t(`dcwDetail.k1hgizn7051`)),1),_(u(`textarea`,{"onUpdate:modelValue":a[12]||=e=>A.value=e,class:`inp`,rows:`2`,placeholder:i.$t(`dcwDetail.k12bnyt9011`)},null,8,Ft),[[y,A.value]])]),n.addError?(s(),d(`p`,It,r(n.addError),1)):m(``,!0),u(`div`,Lt,[u(`button`,{class:`aw-pill outline`,onClick:a[13]||=e=>p.value=!1},r(i.$t(`dcwDetail.k3xdnn052`)),1),u(`button`,{class:`aw-pill`,disabled:n.addSaving,onClick:a[14]||=e=>o(`submit`)},r(n.addSaving?i.$t(`dcwDetail.k1bg4759156`):i.$t(`dcwDetail.k1bge46t173`)),9,Rt)])])])):m(``,!0)}}),[[`__scopeId`,`data-v-bb8a6efc`]]),{__name:`DcwAddNodeModal`}),Bt={class:`aw-tile table-card`},Vt={class:`nodes-table`},Ht={class:`right`},Ut={class:`mono dim`},Wt={class:`mono ch`},Gt=[`disabled`,`title`,`onClick`],Kt={key:0,class:`st-pill paused`},qt={class:`mono val`},Jt={key:0,class:`dim`},Yt={class:`mono val`},Xt=[`title`],Zt={key:0,class:`dim`},Qt=[`disabled`,`title`,`onClick`],$t={class:`write-row`},en=[`onUpdate:modelValue`,`placeholder`,`min`,`max`,`step`,`disabled`,`title`],tn=[`disabled`,`title`,`onClick`],nn={class:`mono dim`},rn={class:`mono`},an=[`title`],on=[`title`],sn={class:`right`},cn=[`onClick`],ln={key:0},un={colspan:`9`},dn={class:`pane-empty`,style:{"min-height":`120px`}},fn={class:`pe-sub`},pn=Object.assign(w(o({__name:`DcwNodesTable`,props:p({lineNodes:{},stateLabel:{},togglingId:{},readingId:{},writingId:{},loaded:{type:Boolean},error:{},dcwTemplateRefCh:{type:Function},nodeDeviceNames:{type:Function}},{setInputs:{required:!0},setInputsModifiers:{}}),emits:p([`toggle`,`read`,`write`,`remove`],[`update:setInputs`]),setup(e,{emit:n}){let i=n,o=a(e,`setInputs`);return(n,a)=>{let l=C;return s(),g(l,{spinning:!e.loaded&&!e.error},{default:h(()=>[u(`section`,Bt,[u(`table`,Vt,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,r(n.$t(`dcwDetail.k1e2dtkt053`)),1),u(`th`,null,r(n.$t(`dcwDetail.k403cy054`)),1),u(`th`,null,r(n.$t(`dcwDetail.k42w8s055`)),1),u(`th`,null,r(n.$t(`dcwDetail.k1deqh0d056`)),1),u(`th`,null,r(n.$t(`dcwDetail.k9r7d4e018`)),1),u(`th`,null,r(n.$t(`dcwDetail.k1k79ec9057`)),1),u(`th`,null,r(n.$t(`dcwDetail.k1dexou6058`)),1),u(`th`,null,r(n.$t(`dcwDetail.k1b1nnaa059`)),1),u(`th`,null,r(n.$t(`dcwDetail.k1i8rtqt060`)),1),u(`th`,Ht,r(n.$t(`dcwDetail.k40aa6061`)),1)])]),u(`tbody`,null,[(s(!0),d(f,null,c(e.lineNodes,c=>(s(),d(`tr`,{key:c.id,class:t({"node-paused":!c.enabled})},[u(`td`,null,[u(`span`,Ut,r(c.id.slice(0,8)),1),u(`b`,null,r(c.name),1),u(`small`,Wt,r(e.dcwTemplateRefCh(c.templateRef)),1)]),u(`td`,null,[u(`button`,{class:t([`ctrl-toggle`,{on:c.enabled}]),disabled:e.togglingId===c.id,title:c.enabled?n.$t(`dcwDetail.pauseCtrlTip`):n.$t(`dcwDetail.enableCtrlTip`),onClick:e=>i(`toggle`,c.id,!c.enabled)},[a[0]||=u(`span`,{class:`ct-dot`},null,-1),v(` `+r(c.enabled?n.$t(`dcwDetail.k3o3ib3159`):n.$t(`dcwDetail.k3n93ed062`)),1)],10,Gt)]),u(`td`,null,[c.enabled?(s(),d(`span`,{key:1,class:t([`st-pill`,c.state])},r(e.stateLabel[c.state]??c.state),3)):(s(),d(`span`,Kt,r(n.$t(`dcwDetail.k3n93ed062`)),1))]),u(`td`,qt,[v(r(c.value==null?`--`:c.value.toFixed(c.decimals))+` `,1),u(`small`,null,r(c.unit),1),c.lastAckAt?(s(),d(`small`,Jt,` · `+r(c.lastAckAt.slice(11,19)),1)):m(``,!0)]),u(`td`,Yt,[u(`span`,{title:c.lastReadError??n.$t(`dcwDetail.k9r7d4e019`),class:t({"read-stale":c.lastReadError})},r(c.readValue==null?`--`:c.readValue.toFixed(c.decimals)),11,Xt),u(`small`,null,r(c.unit),1),c.lastReadAt?(s(),d(`small`,Zt,` · `+r(c.lastReadAt.slice(11,19)),1)):m(``,!0),u(`button`,{class:`mini-btn read-btn`,disabled:e.readingId===c.id,title:n.$t(`dcwDetail.k9r7d4e020`),onClick:e=>i(`read`,c.id)},r(e.readingId===c.id?`···`:n.$t(`dcwDetail.k9r7d4e021`)),9,Qt)]),u(`td`,null,[u(`div`,$t,[_(u(`input`,{"onUpdate:modelValue":e=>o.value[c.id]=e,type:`number`,class:`inp write-inp mono`,placeholder:`${c.min}~${c.max}`,min:c.min,max:c.max,step:10**-c.decimals,disabled:!c.enabled,title:c.enabled?``:n.$t(`dcwDetail.pausedTip`)},null,8,en),[[y,o.value[c.id],void 0,{number:!0}]]),u(`button`,{class:`mini-btn write-btn`,disabled:!c.enabled||e.writingId===c.id||o.value[c.id]==null||o.value[c.id]===``,title:c.enabled?n.$t(`dcwDetail.writeTip`):n.$t(`dcwDetail.pausedTip`),onClick:e=>i(`write`,c.id,Number(o.value[c.id]))},r(e.writingId===c.id?n.$t(`dcwDetail.k3l3h80123`):n.$t(`dcwDetail.k3w6td174`)),9,tn)])]),u(`td`,nn,r(c.min)+` ~ `+r(c.max)+` `+r(c.unit),1),u(`td`,rn,[v(r(c.holdIntervalMs==null?n.$t(`dcwDetail.k3zul4160`):`${c.holdIntervalMs}ms`)+` `,1),u(`small`,{class:`dim`,title:n.$t(`dcwDetail.k9r7d4e016`)},`· `+r(c.readIntervalMs===0?n.$t(`dcwDetail.k9r7d4e022`):c.readIntervalMs==null?n.$t(`dcwDetail.k9r7d4e023`):`${c.readIntervalMs}ms`),9,an),u(`small`,{class:`dim`,title:n.$t(`dcwDetail.writeLockHint`)},`· `+r(c.writeLockSeconds===0?`0s`:`${c.writeLockSeconds}s`),9,on)]),u(`td`,null,r(e.nodeDeviceNames(c)),1),u(`td`,sn,[u(`button`,{class:`mini-btn danger`,onClick:e=>i(`remove`,c.id)},r(n.$t(`dcwDetail.k3xakp063`)),9,cn)])],2))),128)),e.loaded&&e.lineNodes.length===0?(s(),d(`tr`,ln,[u(`td`,un,[u(`div`,dn,[u(`p`,fn,r(n.$t(`dcwDetail.k1wtecyw064`)),1)])])])):m(``,!0)])])])]),_:1},8,[`spinning`])}}}),[[`__scopeId`,`data-v-c3bdf494`]]),{__name:`DcwNodesTable`}),mn={class:`modal`},hn={class:`m-title`},gn={class:`sec-label`},_n={class:`nodes-table`},vn={class:`mono dim`},yn={class:`mono`},bn={class:`mono`},xn={class:`mono dim`},Sn={class:`mono dim`},Cn={key:0},wn={colspan:`6`,class:`dim`,style:{"text-align":`center`,padding:`12px`}},Tn={class:`sec-label`},En={class:`nodes-table`},Dn={class:`mono`},On={class:`mono dim`},kn={class:`mono dim`},An={key:0},jn={colspan:`6`,class:`dim`,style:{"text-align":`center`,padding:`12px`}},Mn={class:`m-actions`},Nn=Object.assign(w(o({__name:`DcwRunDataModal`,props:{runDataView:{}},emits:[`close`],setup(e,{emit:n}){let i=n;return(n,a)=>e.runDataView?(s(),d(`div`,{key:0,class:`modal-mask`,onClick:a[1]||=b(e=>i(`close`),[`self`])},[u(`div`,mn,[u(`h3`,hn,r(n.$t(`dcwDetail.k11lq94k145`))+` `+r(e.runDataView.data.run.recipeName)+`(`+r(e.runDataView.runId)+`) `,1),u(`p`,gn,r(n.$t(`dcwDetail.k1me41w8080`)),1),u(`table`,_n,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,r(n.$t(`dcwDetail.k48hde081`)),1),u(`th`,null,r(n.$t(`dcwDetail.k45uio082`)),1),u(`th`,null,r(n.$t(`dcwDetail.k40t11083`)),1),u(`th`,null,r(n.$t(`dcwDetail.k3xuaw084`)),1),a[2]||=u(`th`,null,`min ~ max`,-1),u(`th`,null,r(n.$t(`dcwDetail.k4118o085`)),1)])]),u(`tbody`,null,[(s(!0),d(f,null,c(e.runDataView.data.daq,e=>(s(),d(`tr`,{key:e.nodeId},[u(`td`,null,[v(r(e.ch),1),u(`small`,vn,r(e.unit),1)]),u(`td`,null,r(e.nodeName),1),u(`td`,yn,r(e.latest),1),u(`td`,bn,r(e.avg),1),u(`td`,xn,r(e.min)+` ~ `+r(e.max),1),u(`td`,Sn,r(e.cnt),1)]))),128)),e.runDataView.data.daq.length===0?(s(),d(`tr`,Cn,[u(`td`,wn,r(n.$t(`dcwDetail.kd457ry086`)),1)])):m(``,!0)])]),u(`p`,Tn,r(n.$t(`dcwDetail.k12b7cxs087`)),1),u(`table`,En,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,r(n.$t(`dcwDetail.k3xbjr088`)),1),u(`th`,null,r(n.$t(`dcwDetail.k45uio082`)),1),u(`th`,null,r(n.$t(`dcwDetail.k3ncbsh089`)),1),u(`th`,null,r(n.$t(`dcwDetail.k3lh3mz090`)),1),u(`th`,null,r(n.$t(`dcwDetail.k454pg091`)),1),u(`th`,null,r(n.$t(`dcwDetail.k40ieu092`)),1)])]),u(`tbody`,null,[(s(!0),d(f,null,c(e.runDataView.data.writes,(e,i)=>(s(),d(`tr`,{key:i},[u(`td`,null,r(e.param),1),u(`td`,null,r(e.nodeName),1),u(`td`,Dn,r(e.eng),1),u(`td`,On,r(e.raw),1),u(`td`,null,[u(`span`,{class:t([`st-pill`,e.ok?`ok`:`alarm`])},r(e.ok?`ACK`:n.$t(`dcwDetail.k3yit7139`)),3)]),u(`td`,kn,r(e.at.slice(5,19)),1)]))),128)),e.runDataView.data.writes.length===0?(s(),d(`tr`,An,[u(`td`,jn,r(n.$t(`dcwDetail.knzcp8i093`)),1)])):m(``,!0)])]),u(`div`,Mn,[u(`button`,{class:`aw-pill outline`,onClick:a[0]||=e=>i(`close`)},r(n.$t(`dcwDetail.k3x62t043`)),1)])])])):m(``,!0)}}),[[`__scopeId`,`data-v-23fad435`]]),{__name:`DcwRunDataModal`}),Pn={class:`aw-tile recipe-card`},Fn={class:`recipe-hd`},In={class:`panel-tag mono`},Ln={class:`recipe-sub`},Rn={key:0,class:`product-row`},zn=[`title`,`onClick`],Bn=[`title`,`onClick`],Vn={key:1,class:`dim`,style:{margin:`6px 0 12px`,"font-size":`12px`}},Hn={class:`recipe-grid`},Un={class:`recipe-name`},Wn=[`title`],Gn={class:`dim`},Kn={class:`mono dim`},qn={key:0,class:`dim desc`},Jn={class:`recipe-params mono`},Yn=[`title`],Xn={key:0,class:`chip-stale-tag`},Zn=[`title`],Qn={key:0,class:`chip-stale-tag`},$n={class:`recipe-actions`},er=[`onClick`],tr=[`onClick`],nr=[`onClick`],rr={key:0,class:`mono`},ir=[`onClick`],ar={key:0,class:`pane-empty`,style:{"grid-column":`1 / -1`}},or={key:2,class:`banner good`},sr=[`disabled`],cr={key:3,class:`runs`},lr={class:`sec-label`},ur={class:`nodes-table`},dr={class:`right`},fr={class:`mono`},pr={class:`mono dim`},mr={class:`right`},hr=[`disabled`,`onClick`],gr=[`onClick`],_r=Object.assign(w(o({__name:`DcwRecipePanel`,props:p({lineProducts:{},visibleRecipes:{},lineRuns:{},applyResult:{},runDataView:{},runDataLoading:{type:Boolean},productName:{type:Function},paramStatus:{type:Function},paramNodeName:{type:Function},daqWindowStatus:{type:Function},daqNodeCh:{type:Function}},{filterProductId:{required:!0},filterProductIdModifiers:{}}),emits:p([`create`,`open-product`,`apply`,`edit`,`history`,`remove-recipe`,`remove-product`,`view-run`,`close-run`,`close-run-data`],[`update:filterProductId`]),setup(n,{emit:i}){let o=i,{t:p}=S(),h=a(n,`filterProductId`);return(i,a)=>{let g=Nn;return s(),d(`section`,Pn,[u(`div`,Fn,[u(`h3`,null,r(i.$t(`dcwDetail.k1j8w3hd065`)),1),u(`span`,In,r(n.lineProducts.length)+` `+r(i.$t(`dcwDetail.k1av3wgs143`))+` `+r(n.visibleRecipes.length)+` `+r(i.$t(`dcwDetail.k48grv027`)),1),u(`button`,{class:`pill-btn`,style:{"margin-left":`auto`},onClick:a[0]||=e=>o(`create`)},r(i.$t(`dcwDetail.k1akm6dc066`)),1),u(`button`,{class:`mini-btn`,onClick:a[1]||=e=>o(`open-product`)},r(i.$t(`dcwDetail.k1aka0ki067`)),1)]),u(`p`,Ln,r(i.$t(`dcwDetail.k6bl2q8068`)),1),n.lineProducts.length?(s(),d(`div`,Rn,[u(`button`,{class:t([`prod-chip`,{on:h.value===``}]),onClick:a[2]||=e=>h.value=``},r(i.$t(`dcwDetail.k3x4t1069`)),3),(s(!0),d(f,null,c(n.lineProducts,e=>(s(),d(`button`,{key:e.id,class:t([`prod-chip`,{on:h.value===e.id}]),title:e.description,onClick:t=>h.value=e.id},[v(r(e.name)+` `,1),u(`span`,{class:`prod-del`,title:i.$t(`dcwDetail.k1bpfjgx012`),onClick:b(t=>o(`remove-product`,e.id),[`stop`])},`×`,8,Bn)],10,zn))),128))])):(s(),d(`p`,Vn,r(i.$t(`dcwDetail.knov3zg070`)),1)),u(`div`,Hn,[(s(!0),d(f,null,c(n.visibleRecipes,a=>(s(),d(`div`,{key:a.id,class:`recipe-item`},[u(`div`,Un,[u(`b`,null,r(a.name),1),a.version?(s(),d(`span`,{key:0,class:`param-chip mono`,title:e(p)(`dcwDetail.histTitle`)},`v`+r(a.version),9,Wn)):m(``,!0),u(`small`,Gn,r(n.productName(a.productId)),1),u(`small`,Kn,r(a.id),1)]),a.description?(s(),d(`p`,qn,r(a.description),1)):m(``,!0),u(`div`,Jn,[(s(!0),d(f,null,c(a.params,(e,i)=>(s(),d(`span`,{key:i,class:t([`param-chip`,{stale:n.paramStatus(e.nodeId,a.lineId)}]),title:n.paramStatus(e.nodeId,a.lineId)?.label??``},[v(r(n.paramNodeName(e.nodeId))+` = `+r(e.value),1),n.paramStatus(e.nodeId,a.lineId)?(s(),d(`span`,Xn,r(n.paramStatus(e.nodeId,a.lineId).label),1)):m(``,!0)],10,Yn))),128)),(s(!0),d(f,null,c(a.daqWindows,(e,o)=>(s(),d(`span`,{key:`w-${o}`,class:t([`param-chip daqwin`,{stale:n.daqWindowStatus(e.nodeId,a.lineId)}]),title:n.daqWindowStatus(e.nodeId,a.lineId)?.label??i.$t(`dcwDetail.k1l11api013`)},[v(` ◎ `+r(n.daqNodeCh(e.nodeId))+` ∈ [`+r(e.min??`-∞`)+`, `+r(e.max??`+∞`)+`]`,1),n.daqWindowStatus(e.nodeId,a.lineId)?(s(),d(`span`,Qn,r(n.daqWindowStatus(e.nodeId,a.lineId).label),1)):m(``,!0)],10,Zn))),128))]),u(`div`,$n,[u(`button`,{class:`pill-btn`,onClick:e=>o(`apply`,a.id)},r(i.$t(`dcwDetail.k1497qvr071`)),9,er),u(`button`,{class:`mini-btn`,onClick:e=>o(`edit`,a.id)},r(i.$t(`dcwDetail.k45eb0072`)),9,tr),u(`button`,{class:`mini-btn`,onClick:e=>o(`history`,a.id)},[v(r(e(p)(`dcwDetail.histBtn`)),1),a.version?(s(),d(`span`,rr,`·v`+r(a.version),1)):m(``,!0)],8,nr),u(`button`,{class:`mini-btn danger`,onClick:e=>o(`remove-recipe`,a.id)},r(i.$t(`dcwDetail.k3xakp063`)),9,ir)])]))),128)),n.visibleRecipes.length===0?(s(),d(`div`,ar,r(i.$t(`dcwDetail.keko1xy073`)),1)):m(``,!0)]),n.applyResult?(s(),d(`div`,or,[v(r(i.$t(`dcwDetail.k1l3hrvp144`))+` `+r(n.applyResult.runId)+` `+r(i.$t(`dcwDetail.k1g3lh2v167`))+r(n.applyResult.ok)+`/`+r(n.applyResult.total)+` `+r(i.$t(`dcwDetail.k1bqci06149`))+` `,1),u(`button`,{class:`mini-btn`,style:{"margin-left":`10px`},disabled:n.runDataLoading,onClick:a[3]||=e=>o(`view-run`,n.applyResult.runId)},r(n.runDataLoading?i.$t(`dcwDetail.k1br0ij9161`):i.$t(`dcwDetail.kxwei5175`)),9,sr)])):m(``,!0),n.lineRuns.length?(s(),d(`div`,cr,[u(`p`,lr,r(i.$t(`dcwDetail.k1rjer8d074`)),1),u(`table`,ur,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,r(i.$t(`dcwDetail.k400lb075`)),1),u(`th`,null,r(i.$t(`dcwDetail.k48grv027`)),1),u(`th`,null,r(i.$t(`dcwDetail.k4497j076`)),1),u(`th`,null,r(i.$t(`dcwDetail.k1bqhtmu077`)),1),u(`th`,dr,r(i.$t(`dcwDetail.k40aa6061`)),1)])]),u(`tbody`,null,[(s(!0),d(f,null,c([...n.lineRuns].reverse().slice(0,8),e=>(s(),d(`tr`,{key:e.id},[u(`td`,fr,r(e.id),1),u(`td`,null,r(e.recipeName),1),u(`td`,pr,r(e.startedAt.slice(5,19))+` ~ `+r(e.endedAt?e.endedAt.slice(5,19):i.$t(`dcwDetail.k3vpfg9162`)),1),u(`td`,null,[u(`span`,{class:t([`st-pill`,e.results.every(e=>e.ok)?`ok`:`warn`])},r(e.results.filter(e=>e.ok).length)+`/`+r(e.results.length),3)]),u(`td`,mr,[u(`button`,{class:`mini-btn`,disabled:n.runDataLoading,onClick:t=>o(`view-run`,e.id)},r(i.$t(`dcwDetail.k1dzwrdp078`)),9,hr),e.endedAt?m(``,!0):(s(),d(`button`,{key:0,class:`mini-btn`,onClick:t=>o(`close-run`,e.id)},r(i.$t(`dcwDetail.k1blr7y7079`)),9,gr))])]))),128))])])])):m(``,!0),l(g,{"run-data-view":n.runDataView,onClose:a[4]||=e=>o(`close-run-data`)},null,8,[`run-data-view`])])}}}),[[`__scopeId`,`data-v-a0cf197b`]]),{__name:`DcwRecipePanel`}),vr={class:`modal`},yr={class:`m-title`},br={class:`f-grid`},xr={class:`f`},Sr=[`value`],Cr={class:`f`},wr=[`placeholder`],Tr={class:`f`},Er=[`placeholder`],Dr={class:`sec-label`},Or={class:`f`},kr=[`onUpdate:modelValue`],Ar=[`value`],jr={key:0,class:`row-stale`},Mr={class:`f`},Nr=[`onUpdate:modelValue`],Pr={class:`f`},Fr=[`onUpdate:modelValue`,`placeholder`],Ir={class:`f`},Lr=[`onUpdate:modelValue`,`placeholder`],Rr=[`onClick`],zr={class:`sec-label`},Br={class:`f`},Vr=[`onUpdate:modelValue`],Hr=[`value`],Ur={class:`f`},Wr=[`onUpdate:modelValue`],Gr={class:`f`},Kr=[`onUpdate:modelValue`],qr=[`onClick`],Jr=[`disabled`,`title`],Yr={key:0,class:`m-note`},Xr={key:1,class:`m-err`},Zr={class:`m-actions`},Qr=[`disabled`],$r=Object.assign(w(o({__name:`DcwRecipeEditModal`,props:p({lineProducts:{},lineNodes:{},lineDaqNodes:{},lineId:{},recipeEditing:{},recipeSaving:{type:Boolean},recipeError:{},recipeStaleNote:{},dcwTemplateRefCh:{type:Function},nodeMin:{type:Function},nodeMax:{type:Function},paramStatus:{type:Function}},{open:{type:Boolean,required:!0},openModifiers:{},form:{required:!0},formModifiers:{}}),emits:p([`submit`,`close`],[`update:open`,`update:form`]),setup(e,{emit:t}){let n=t,i=a(e,`open`),o=a(e,`form`);return(t,a)=>i.value?(s(),d(`div`,{key:0,class:`modal-mask`,onClick:a[7]||=b(e=>i.value=!1,[`self`])},[u(`div`,vr,[u(`h3`,yr,r(e.recipeEditing?t.$t(`dcwDetail.k1iiwk0i163`):t.$t(`dcwDetail.k1efq0r9176`)),1),u(`div`,br,[u(`label`,xr,[u(`span`,null,[v(r(t.$t(`dcwDetail.k1dw4fzf094`)),1),a[8]||=u(`em`,null,`*`,-1)]),_(u(`select`,{"onUpdate:modelValue":a[0]||=e=>o.value.productId=e,class:`inp`},[(s(!0),d(f,null,c(e.lineProducts,e=>(s(),d(`option`,{key:e.id,value:e.id},r(e.name),9,Sr))),128))],512),[[x,o.value.productId]])]),u(`label`,Cr,[u(`span`,null,[v(r(t.$t(`dcwDetail.k1l3f8so095`)),1),a[9]||=u(`em`,null,`*`,-1)]),_(u(`input`,{"onUpdate:modelValue":a[1]||=e=>o.value.name=e,class:`inp`,placeholder:t.$t(`dcwDetail.k12c11vm014`)},null,8,wr),[[y,o.value.name]])]),u(`label`,Tr,[u(`span`,null,r(t.$t(`dcwDetail.k40gkk096`)),1),_(u(`input`,{"onUpdate:modelValue":a[2]||=e=>o.value.description=e,class:`inp`,placeholder:t.$t(`dcwDetail.k1hxx8hy015`)},null,8,Er),[[y,o.value.description]])])]),u(`p`,Dr,r(t.$t(`dcwDetail.ka1kfgh097`)),1),(s(!0),d(f,null,c(o.value.params,(n,i)=>(s(),d(`div`,{key:i,class:`param-row`},[u(`label`,Or,[u(`span`,null,r(t.$t(`dcwDetail.k1e2dtkt053`)),1),_(u(`select`,{"onUpdate:modelValue":e=>n.nodeId=e,class:`inp`},[(s(!0),d(f,null,c(e.lineNodes,t=>(s(),d(`option`,{key:t.id,value:t.id},r(t.name)+`(`+r(e.dcwTemplateRefCh(t.templateRef))+` · `+r(t.min)+`~`+r(t.max)+` `+r(t.unit)+`) `,9,Ar))),128))],8,kr),[[x,n.nodeId]]),e.paramStatus(n.nodeId,e.lineId)?(s(),d(`span`,jr,r(e.paramStatus(n.nodeId,e.lineId).label),1)):m(``,!0)]),u(`label`,Mr,[u(`span`,null,[v(r(t.$t(`dcwDetail.k3renp2098`)),1),a[10]||=u(`em`,null,`*`,-1)]),_(u(`input`,{"onUpdate:modelValue":e=>n.value=e,type:`number`,class:`inp`,step:.1},null,8,Nr),[[y,n.value,void 0,{number:!0}]])]),u(`label`,Pr,[u(`span`,null,r(t.$t(`dcwDetail.k134rw3b146`))+r(e.nodeMin(n.nodeId)??`-`)+`)`,1),_(u(`input`,{"onUpdate:modelValue":e=>n.min=e,type:`number`,class:`inp`,step:.1,placeholder:t.$t(`dcwDetail.k5vew9z016`)},null,8,Fr),[[y,n.min,void 0,{number:!0}]])]),u(`label`,Ir,[u(`span`,null,r(t.$t(`dcwDetail.khrv911147`))+r(e.nodeMax(n.nodeId)??`-`)+`)`,1),_(u(`input`,{"onUpdate:modelValue":e=>n.max=e,type:`number`,class:`inp`,step:.1,placeholder:t.$t(`dcwDetail.kzoh5pr017`)},null,8,Lr),[[y,n.max,void 0,{number:!0}]])]),u(`button`,{class:`mini-btn danger param-del`,onClick:e=>o.value.params.splice(i,1)},r(t.$t(`dcwDetail.k44idg099`)),9,Rr)]))),128)),u(`button`,{class:`mini-btn`,onClick:a[3]||=t=>o.value.params.push({nodeId:e.lineNodes[0]?.id??``,value:``,min:``,max:``})},r(t.$t(`dcwDetail.k1broh7h100`)),1),u(`p`,zr,r(t.$t(`dcwDetail.k1h5gues101`)),1),(s(!0),d(f,null,c(o.value.daqWindows,(n,i)=>(s(),d(`div`,{key:`dw-${i}`,class:`param-row`},[u(`label`,Br,[u(`span`,null,r(t.$t(`dcwDetail.k1empnnb102`)),1),_(u(`select`,{"onUpdate:modelValue":e=>n.nodeId=e,class:`inp`},[(s(!0),d(f,null,c(e.lineDaqNodes,e=>(s(),d(`option`,{key:e.id,value:e.id},r(e.name)+`(`+r(e.min)+`~`+r(e.max)+` `+r(e.unit)+`) `,9,Hr))),128))],8,Vr),[[x,n.nodeId]])]),u(`label`,Ur,[u(`span`,null,r(t.$t(`dcwDetail.kqm08ap103`)),1),_(u(`input`,{"onUpdate:modelValue":e=>n.min=e,type:`number`,class:`inp`,step:.1},null,8,Wr),[[y,n.min,void 0,{number:!0}]])]),u(`label`,Gr,[u(`span`,null,r(t.$t(`dcwDetail.kpypf8g104`)),1),_(u(`input`,{"onUpdate:modelValue":e=>n.max=e,type:`number`,class:`inp`,step:.1},null,8,Kr),[[y,n.max,void 0,{number:!0}]])]),u(`button`,{class:`mini-btn danger param-del`,onClick:e=>o.value.daqWindows.splice(i,1)},r(t.$t(`dcwDetail.k44idg099`)),9,qr)]))),128)),u(`button`,{class:`mini-btn`,disabled:e.lineDaqNodes.length===0,title:e.lineDaqNodes.length===0?t.$t(`dcwDetail.noDaqTip`):``,onClick:a[4]||=t=>o.value.daqWindows.push({nodeId:e.lineDaqNodes[0]?.id??``,min:``,max:``})},r(t.$t(`dcwDetail.kv1de1p105`)),9,Jr),e.recipeStaleNote?(s(),d(`p`,Yr,r(e.recipeStaleNote),1)):m(``,!0),e.recipeError?(s(),d(`p`,Xr,r(e.recipeError),1)):m(``,!0),u(`div`,Zr,[u(`button`,{class:`aw-pill outline`,onClick:a[5]||=e=>i.value=!1},r(t.$t(`dcwDetail.k3xdnn052`)),1),u(`button`,{class:`pill-btn`,disabled:e.recipeSaving,onClick:a[6]||=e=>n(`submit`)},r(e.recipeSaving?t.$t(`dcwDetail.k1b38d59164`):t.$t(`dcwDetail.k1b3kwg0177`)),9,Qr)])])])):m(``,!0)}}),[[`__scopeId`,`data-v-1896aa5e`]]),{__name:`DcwRecipeEditModal`}),ei={class:`modal`,style:{"max-width":`760px`}},ti={class:`modal-head`},ni={key:0,class:`dim`,style:{"margin-left":`8px`,"font-size":`12px`}},ri={key:0,class:`banner good`,style:{margin:`6px 0`}},ii={key:1,class:`dim`},ai={key:2,class:`pane-empty`},oi={class:`ver-head`},si={class:`mono ver-v`},ci={class:`mono dim`},li={class:`ver-actor`},ui=[`onClick`],di={key:0,class:`ver-desc`},fi={class:`ver-diff mono`},pi=Object.assign(w(o({__name:`DcwRecipeHistoryModal`,props:p({verRecipe:{},verRows:{},verLoading:{type:Boolean},verMsg:{},paramNodeName:{type:Function}},{open:{type:Boolean,required:!0},openModifiers:{}}),emits:p([`revert`,`close`],[`update:open`]),setup(n,{emit:i}){let o=n,l=i,{t:p}=S(),h=a(n,`open`),g=e=>e===`agent`?`Agent`:p(e===`system`?`dcwDetail.srcSystem`:`dcwDetail.srcUser`);function _(e,t){if(t===0)return p(`dcwDetail.histInit`);let n=o.verRows[t-1],r=e.params.map(e=>({p:e,old:n.params.find(t=>t.nodeId===e.nodeId)})).filter(({p:e,old:t})=>!t||t.value!==e.value).map(({p:e,old:t})=>`${o.paramNodeName(e.nodeId)}: ${t?.value??p(`dcwDetail.histAdded`)} → ${e.value}`);return r.length>0?r.join(`;`):p(`dcwDetail.histNoChange`)}return(i,a)=>h.value?(s(),d(`div`,{key:0,class:`modal-mask`,onClick:a[1]||=b(e=>h.value=!1,[`self`])},[u(`div`,ei,[u(`div`,ti,[u(`h3`,null,[v(r(e(p)(`dcwDetail.histTitle`)),1),n.verRecipe?(s(),d(`span`,ni,r(n.verRecipe.name)+` · v`+r(n.verRecipe.version),1)):m(``,!0)]),u(`button`,{class:`mini-btn`,onClick:a[0]||=e=>h.value=!1},` ✕ `)]),n.verMsg?(s(),d(`p`,ri,r(n.verMsg),1)):m(``,!0),n.verLoading?(s(),d(`p`,ii,r(e(p)(`dcwDetail.histLoading`)),1)):n.verRows.length===0?(s(),d(`div`,ai,r(e(p)(`dcwDetail.histEmpty`)),1)):(s(!0),d(f,{key:3},c(n.verRows,(n,i)=>(s(),d(`div`,{key:n.version,class:t([`ver-row`,{cur:n.current}])},[u(`div`,oi,[u(`span`,si,`v`+r(n.version),1),u(`span`,{class:t([`ver-src`,n.by??(n.current?`cur`:``)])},r(n.current?e(p)(`dcwDetail.histCurrent`):g(n.by)),3),u(`span`,ci,r(n.at.slice(0,19).replace(`T`,` `)),1),u(`span`,li,r(n.actorName||`—`),1),n.current?m(``,!0):(s(),d(`button`,{key:0,class:`mini-btn`,onClick:e=>l(`revert`,n.version)},r(e(p)(`dcwDetail.revertTo`)),9,ui))]),n.description?(s(),d(`p`,di,r(n.description),1)):m(``,!0),u(`p`,fi,r(_(n,i)),1)],2))),128))])])):m(``,!0)}}),[[`__scopeId`,`data-v-322135bb`]]),{__name:`DcwRecipeHistoryModal`}),mi={class:`aw-tile query-card`},hi={class:`sec-label`},gi={class:`q-grid`},_i={class:`f`},vi={value:``},yi=[`value`],bi={class:`f`},xi=[`disabled`],Si={value:``},Ci=[`value`],wi={class:`f`},Ti={value:``},Ei=[`value`],Di={class:`f`},Oi={value:``},ki=[`value`],Ai={class:`f`},ji={class:`f`},Mi={class:`f q-actions`},Ni=[`disabled`],Pi={key:0,class:`banner bad`,style:{"margin-top":`8px`}},Fi={key:1,class:`q-result`},Ii={class:`nodes-table`},Li={class:`mono dim`},Ri={class:`mono`},zi={class:`mono`},Bi={class:`mono`},Vi={class:`mono dim`},Hi=Object.assign(w(o({__name:`DcwQueryCard`,props:p({lineProducts:{},visibleRecipes:{},lineDaqNodes:{},daqParamKeys:{},queryBusy:{type:Boolean},queryError:{},queryResult:{}},{query:{required:!0},queryModifiers:{}}),emits:p([`run`],[`update:query`]),setup(e,{emit:t}){let n=t,i=a(e,`query`);function o(e){let t=e?.value??e?.avg;return t==null?`--`:String(Math.round(t*1e3)/1e3)}return(t,a)=>(s(),d(`section`,mi,[u(`p`,hi,r(t.$t(`dcwDetail.k1us3jse106`)),1),u(`div`,gi,[u(`label`,_i,[u(`span`,null,r(t.$t(`dcwDetail.k3waz1025`)),1),_(u(`select`,{"onUpdate:modelValue":a[0]||=e=>i.value.productId=e,class:`inp`,onChange:a[1]||=e=>i.value.recipeId=``},[u(`option`,vi,r(t.$t(`dcwDetail.k1bkl1jx107`)),1),(s(!0),d(f,null,c(e.lineProducts,e=>(s(),d(`option`,{key:e.id,value:e.id},r(e.name),9,yi))),128))],544),[[x,i.value.productId]])]),u(`label`,bi,[u(`span`,null,r(t.$t(`dcwDetail.k48grv027`)),1),_(u(`select`,{"onUpdate:modelValue":a[2]||=e=>i.value.recipeId=e,class:`inp`,disabled:!i.value.productId},[u(`option`,Si,r(t.$t(`dcwDetail.k1bkx7cr108`)),1),(s(!0),d(f,null,c(e.visibleRecipes,e=>(s(),d(`option`,{key:e.id,value:e.id},r(e.name),9,Ci))),128))],8,xi),[[x,i.value.recipeId]])]),u(`label`,wi,[u(`span`,null,r(t.$t(`dcwDetail.k1demcae109`)),1),_(u(`select`,{"onUpdate:modelValue":a[3]||=e=>i.value.paramKey=e,class:`inp`},[u(`option`,Ti,r(t.$t(`dcwDetail.k1bkx7ya110`)),1),(s(!0),d(f,null,c(e.daqParamKeys,e=>(s(),d(`option`,{key:e,value:e},r(e),9,Ei))),128))],512),[[x,i.value.paramKey]])]),u(`label`,Di,[u(`span`,null,r(t.$t(`dcwDetail.k45uio082`)),1),_(u(`select`,{"onUpdate:modelValue":a[4]||=e=>i.value.nodeId=e,class:`inp`},[u(`option`,Oi,r(t.$t(`dcwDetail.k1bkul3k111`)),1),(s(!0),d(f,null,c(e.lineDaqNodes,e=>(s(),d(`option`,{key:e.id,value:e.id},r(e.name),9,ki))),128))],512),[[x,i.value.nodeId]])]),u(`label`,Ai,[u(`span`,null,r(t.$t(`dcwDetail.kx2ojn0112`)),1),_(u(`input`,{"onUpdate:modelValue":a[5]||=e=>i.value.lastMin=e,type:`number`,min:`1`,max:`10080`,class:`inp`},null,512),[[y,i.value.lastMin,void 0,{number:!0}]])]),u(`label`,ji,[u(`span`,null,r(t.$t(`dcwDetail.kjvnvn4113`)),1),_(u(`input`,{"onUpdate:modelValue":a[6]||=e=>i.value.bucketMs=e,type:`number`,min:`1000`,step:`500`,class:`inp`},null,512),[[y,i.value.bucketMs,void 0,{number:!0}]])]),u(`div`,Mi,[u(`button`,{class:`pill-btn`,disabled:e.queryBusy,onClick:a[7]||=e=>n(`run`)},r(e.queryBusy?t.$t(`dcwDetail.k1eyx09r165`):t.$t(`dcwDetail.k416ek178`)),9,Ni)])]),e.queryError?(s(),d(`p`,Pi,r(e.queryError),1)):m(``,!0),e.queryResult?(s(),d(`div`,Fi,[u(`table`,Ii,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,r(t.$t(`dcwDetail.k48hde081`)),1),u(`th`,null,r(t.$t(`dcwDetail.k45uio082`)),1),u(`th`,null,r(t.$t(`dcwDetail.k42kcu114`)),1),u(`th`,null,r(t.$t(`dcwDetail.k49ujb115`)),1),u(`th`,null,r(t.$t(`dcwDetail.k40pvw116`)),1),u(`th`,null,r(t.$t(`dcwDetail.k3xho3117`)),1)])]),u(`tbody`,null,[(s(!0),d(f,null,c(e.queryResult.channels,e=>(s(),d(`tr`,{key:e.nodeId},[u(`td`,null,[v(r(e.ch),1),u(`small`,Li,r(e.unit),1)]),u(`td`,null,r(e.nodeName),1),u(`td`,Ri,r(e.points.length),1),u(`td`,zi,r(o(e.points[0])),1),u(`td`,Bi,r(o(e.points[e.points.length-1])),1),u(`td`,Vi,r(new Date(e.points[0]?.at??0).toLocaleTimeString())+` ~ `+r(new Date(e.points[e.points.length-1]?.at??0).toLocaleTimeString()),1)]))),128))])])])):m(``,!0)]))}}),[[`__scopeId`,`data-v-49f143ca`]]),{__name:`DcwQueryCard`}),Ui={class:`aw-tile table-card`},Wi={class:`sec-label`},Gi={class:`nodes-table`},Ki={class:`mono dim`},qi={class:`mono`},Ji={class:`mono dim`},Yi={class:`dim`},Xi=Object.assign(w(o({__name:`DcwWriteHistoryCard`,props:{lineHistory:{}},setup(e){return(n,i)=>(s(),d(`section`,Ui,[u(`p`,Wi,r(n.$t(`dcwDetail.kw7ym9b148`))+` `+r(e.lineHistory.length)+` `+r(n.$t(`dcwDetail.k40bfz150`)),1),u(`table`,Gi,[u(`tbody`,null,[(s(!0),d(f,null,c(e.lineHistory.slice(0,12),e=>(s(),d(`tr`,{key:e.id},[u(`td`,Ki,r(e.at.slice(5,19)),1),u(`td`,null,r(e.param),1),u(`td`,null,r(e.nodeName),1),u(`td`,qi,r(e.eng),1),u(`td`,Ji,` raw `+r(e.raw??`-`),1),u(`td`,null,[u(`span`,{class:t([`st-pill`,e.ok?`ok`:`alarm`])},r(e.ok?`ACK`:n.$t(`dcwDetail.k3yit7139`)),3)]),u(`td`,Yi,r(e.recipeRunId?n.$t(`dcwDetail.k6vgks7181`,{p0:e.recipeRunId}):n.$t(`dcwDetail.manualTag`)),1)]))),128))])])]))}}),[[`__scopeId`,`data-v-1ca86a1c`]]),{__name:`DcwWriteHistoryCard`}),Zi={class:`modal`},Qi={class:`m-title`},$i={class:`f-grid`},ea={class:`f`},ta=[`placeholder`],na={class:`f`},ra=[`placeholder`],ia={key:0,class:`m-err`},aa={class:`m-actions`},oa=[`disabled`],sa=Object.assign(w(o({__name:`DcwProductCreateModal`,props:p({productSaving:{type:Boolean},productError:{}},{open:{type:Boolean,required:!0},openModifiers:{},form:{required:!0},formModifiers:{}}),emits:p([`submit`,`close`],[`update:open`,`update:form`]),setup(e,{emit:t}){let n=t,i=a(e,`open`),o=a(e,`form`);return(t,a)=>i.value?(s(),d(`div`,{key:0,class:`modal-mask`,onClick:a[4]||=b(e=>i.value=!1,[`self`])},[u(`div`,Zi,[u(`h3`,Qi,r(t.$t(`dcwDetail.k1efduyf118`)),1),u(`div`,$i,[u(`label`,ea,[u(`span`,null,[v(r(t.$t(`dcwDetail.k1avjrl6119`)),1),a[5]||=u(`em`,null,`*`,-1)]),_(u(`input`,{"onUpdate:modelValue":a[0]||=e=>o.value.name=e,class:`inp`,placeholder:t.$t(`dcwDetail.k12c11vm014`)},null,8,ta),[[y,o.value.name]])]),u(`label`,na,[u(`span`,null,r(t.$t(`dcwDetail.k40gkk096`)),1),_(u(`input`,{"onUpdate:modelValue":a[1]||=e=>o.value.description=e,class:`inp`,placeholder:t.$t(`dcwDetail.k1hxx8hy015`)},null,8,ra),[[y,o.value.description]])])]),e.productError?(s(),d(`p`,ia,r(e.productError),1)):m(``,!0),u(`div`,aa,[u(`button`,{class:`aw-pill outline`,onClick:a[2]||=e=>i.value=!1},r(t.$t(`dcwDetail.k3xdnn052`)),1),u(`button`,{class:`pill-btn`,disabled:e.productSaving,onClick:a[3]||=e=>n(`submit`)},r(e.productSaving?t.$t(`dcwDetail.k1bg4759156`):t.$t(`dcwDetail.k1bg4kn6179`)),9,oa)])])])):m(``,!0)}}),[[`__scopeId`,`data-v-aa17ef24`]]),{__name:`DcwProductCreateModal`}),ca={class:`aw-tile ledger-card`},la={class:`ledger-head`},ua={value:``},da=[`value`],fa={class:`ledger-tri`},pa={class:`tri-cell`},ma={class:`mono`},ha={class:`tri-cell`},ga={class:`mono`},_a={class:`tri-cell`},va={class:`mono`},ya={class:`ledger-cols`},ba={class:`ledger-col`},xa={class:`sec-t`},Sa={class:`ledger-list mono`},Ca={class:`ledger-col`},wa={class:`sec-t`},Ta={class:`ledger-list`},Ea={class:`mono`},Da=Object.assign(w(o({__name:`DcwLedgerCard`,props:p({lineNodes:{},ledger:{}},{nodeId:{required:!0},nodeIdModifiers:{}}),emits:p([`load`,`rollback`],[`update:nodeId`]),setup(e,{emit:n}){let i=n,o=a(e,`nodeId`);return(n,a)=>(s(),d(`section`,ca,[u(`div`,la,[u(`b`,null,r(n.$t(`dcwDetail.k1ledgt001`)),1),_(u(`select`,{"onUpdate:modelValue":a[0]||=e=>o.value=e,class:`inp`,onChange:a[1]||=e=>i(`load`)},[u(`option`,ua,r(n.$t(`dcwDetail.k1ledgs001`)),1),(s(!0),d(f,null,c(e.lineNodes,e=>(s(),d(`option`,{key:e.id,value:e.id},r(e.name),9,da))),128))],544),[[x,o.value]])]),e.ledger?(s(),d(f,{key:0},[u(`div`,fa,[u(`div`,pa,[u(`small`,null,r(n.$t(`dcwDetail.k1ledgv001`)),1),u(`b`,ma,r(e.ledger.current??`--`),1)]),u(`div`,ha,[u(`small`,null,r(n.$t(`dcwDetail.k1ledgv002`)),1),u(`b`,ga,r(e.ledger.recipeTarget??`--`),1)]),u(`div`,_a,[u(`small`,null,r(n.$t(`dcwDetail.k1ledgv003`)),1),u(`b`,va,r(e.ledger.lastGood??`--`),1)]),u(`button`,{class:`mini-btn`,onClick:a[2]||=e=>i(`load`)},r(n.$t(`dcwDetail.k1ledga001`)),1),u(`button`,{class:`mini-btn danger`,onClick:a[3]||=e=>i(`rollback`)},r(n.$t(`dcwDetail.k1ledga002`)),1)]),u(`div`,ya,[u(`div`,ba,[u(`small`,xa,r(n.$t(`dcwDetail.k1ledgh001`)),1),u(`ul`,Sa,[(s(!0),d(f,null,c(e.ledger.journal,e=>(s(),d(`li`,{key:e.id},r(e.at.slice(5,16).replace(`T`,` `))+` [`+r(e.source)+`] `+r(e.prevValue??`?`)+` → `+r(e.newValue),1))),128))])]),u(`div`,Ca,[u(`small`,wa,r(n.$t(`dcwDetail.k1ledgr001`)),1),u(`ul`,Ta,[(s(!0),d(f,null,c(e.ledger.records,e=>(s(),d(`li`,{key:e.id,class:`ledger-rec`},[u(`span`,{class:t([`rec-st`,e.status])},r(e.status),3),u(`span`,Ea,r(e.params[0]?.from??`?`)+` → `+r(e.params[0]?.to),1),u(`small`,null,r(e.judge?`${e.judge.verdict}(${e.judge.by})`:e.status===`open`?`open`:e.closedBy??``),1)]))),128))])])])],64)):m(``,!0)]))}}),[[`__scopeId`,`data-v-15a6bb00`]]),{__name:`DcwLedgerCard`}),Oa={key:0,class:`page`},ka={class:`banner bad`},Aa={key:1,class:`page`},ja={key:2,class:`err`},Ma=w(o({__name:`[id]`,setup(n){let a=D(),o=ae(),c=k(),f=A(a),p=ne(a,f),_=ie(a,p,f,o),y=re(a),b=E(a),ee=O(b),{dcw:x,line:S,lineId:C,ls:w,lineNodes:T,lineProducts:j,lineRecipesAll:oe,lineRuns:se,lineHistory:ce,unassignedNodes:le,unassignedProducts:ue,stateLabel:de,dcwTemplateRefCh:pe,nodeMin:me,nodeMax:he,lineDaqNodes:ge,daqNodeCh:_e,adoptNode:ve,adoptProduct:ye,productName:be,paramStatus:Se,paramNodeName:Ce,daqWindowStatus:we,nodeDeviceNames:Te}=a,{setInputs:M,writingId:De,writeError:N,writeOk:Oe,readingId:ke,togglingId:Ae,doWrite:je,doRead:Me,toggleControl:Ne}=o,{ledgerNodeId:P,ledger:Pe,loadLedger:Fe,rollbackLedgerNode:Ie}=c,{lineProductId:F,lineRecipeId:I,lineBusy:Le,lineMsg:Re,lineErr:ze,lineRecipes:Ve,doLineStart:He,doLineStop:Ue}=f,{filterProductId:L,visibleRecipes:We,productOpen:R,productSaving:Ge,productError:Ke,productForm:z,doCreateProduct:qe}=p,{verOpen:B,verRecipe:Je,verRows:Ye,verLoading:Xe,verMsg:Ze,doRevert:Qe,recipeOpen:V,recipeEditing:$e,recipeSaving:et,recipeError:tt,recipeStaleNote:nt,recipeForm:H,applyResult:rt,runDataView:it,runDataLoading:at,openRecipeCreate:ot,openRecipeEdit:st,openRecipeHistory:ct,saveRecipe:lt,doApplyRecipe:ut,doViewRun:ft}=_,{query:U,queryBusy:pt,queryError:mt,queryResult:ht,doQuery:gt,daqParamKeys:_t}=y,{addOpen:W,addScenario:G,addTemplate:K,addDriver:q,addName:J,addHold:Y,addRead:X,addWriteLock:Z,addCfg:Q,addTransform:vt,addSemantics:yt,addTesting:bt,addTest:xt,addSaving:St,addError:Ct,addFields:wt,driverCatalog:Tt,doTestConnection:Et,doAddNode:Dt}=b,{tplOpen:$,tplSaving:Ot,tplError:kt,tplOk:At,tplForm:jt,tplIcons:Mt,builtinCount:Nt,customCount:Pt,openTplModal:Ft,doCreateTemplate:It}=ee;return(n,a)=>{let o=te,c=fe,f=xe,p=Ee,_=Be,y=dt,b=zt,ee=pn,E=_r,D=$r,O=pi,k=Hi,A=Xi,ne=sa,re=Da;return e(x).loaded&&!e(S)?(s(),d(`div`,Oa,[u(`p`,ka,r(n.$t(`dcwDetail.k19337yp018`)),1),l(o,{class:`pill-btn`,to:`/dcw`},{default:h(()=>[v(r(n.$t(`dcwDetail.kllwu1c019`)),1)]),_:1})])):(s(),d(`div`,Aa,[l(c,{line:e(S),"line-id":e(C),"nodes-count":e(T).length,"products-count":e(j).length,"recipes-count":e(oe).length},null,8,[`line`,`line-id`,`nodes-count`,`products-count`,`recipes-count`]),l(f,{running:e(x).controller.running,"nodes-online":e(x).controller.nodesOnline,"nodes-total":e(x).controller.nodesTotal,"writes-total":e(x).controller.writesTotal,"writes-failed":e(x).controller.writesFailed,onToggle:e(x).startStop,onOpenTemplates:e(Ft),onOpenAdd:a[0]||=e=>W.value=!0},null,8,[`running`,`nodes-online`,`nodes-total`,`writes-total`,`writes-failed`,`onToggle`,`onOpenTemplates`]),e(N)||e(Oe)?(s(),d(`p`,{key:0,class:t([`banner`,e(N)?`bad`:`good`])},r(e(N)||e(Oe)),3)):m(``,!0),l(p,{"unassigned-nodes":e(le),"unassigned-products":e(ue),onAdoptNode:e(ve),onAdoptProduct:e(ye)},null,8,[`unassigned-nodes`,`unassigned-products`,`onAdoptNode`,`onAdoptProduct`]),l(_,{"product-id":e(F),"onUpdate:productId":a[1]||=e=>i(F)?F.value=e:null,"recipe-id":e(I),"onUpdate:recipeId":a[2]||=e=>i(I)?I.value=e:null,ls:e(w),"line-products":e(j),"line-recipes":e(Ve),"line-busy":e(Le),"line-msg":e(Re),"line-err":e(ze),onStart:e(He),onStop:e(Ue)},null,8,[`product-id`,`recipe-id`,`ls`,`line-products`,`line-recipes`,`line-busy`,`line-msg`,`line-err`,`onStart`,`onStop`]),l(y,{open:e($),"onUpdate:open":a[3]||=e=>i($)?$.value=e:null,form:e(jt),"onUpdate:form":a[4]||=e=>i(jt)?jt.value=e:null,templates:e(x).templates,"tpl-icons":e(Mt),"builtin-count":e(Nt),"custom-count":e(Pt),"tpl-saving":e(Ot),"tpl-error":e(kt),"tpl-ok":e(At),onSubmit:e(It),onClose:a[5]||=e=>$.value=!1},null,8,[`open`,`form`,`templates`,`tpl-icons`,`builtin-count`,`custom-count`,`tpl-saving`,`tpl-error`,`tpl-ok`,`onSubmit`]),l(b,{open:e(W),"onUpdate:open":a[6]||=e=>i(W)?W.value=e:null,scenario:e(G),"onUpdate:scenario":a[7]||=e=>i(G)?G.value=e:null,template:e(K),"onUpdate:template":a[8]||=e=>i(K)?K.value=e:null,driver:e(q),"onUpdate:driver":a[9]||=e=>i(q)?q.value=e:null,name:e(J),"onUpdate:name":a[10]||=e=>i(J)?J.value=e:null,hold:e(Y),"onUpdate:hold":a[11]||=e=>i(Y)?Y.value=e:null,read:e(X),"onUpdate:read":a[12]||=e=>i(X)?X.value=e:null,"write-lock":e(Z),"onUpdate:writeLock":a[13]||=e=>i(Z)?Z.value=e:null,cfg:e(Q),"onUpdate:cfg":a[14]||=e=>i(Q)?Q.value=e:null,transform:e(vt),"onUpdate:transform":a[15]||=e=>i(vt)?vt.value=e:null,semantics:e(yt),"onUpdate:semantics":a[16]||=e=>i(yt)?yt.value=e:null,templates:e(x).templates,"driver-catalog":e(Tt),"add-fields":e(wt),"add-testing":e(bt),"add-test":e(xt),"add-saving":e(St),"add-error":e(Ct),onTest:e(Et),onSubmit:e(Dt)},null,8,[`open`,`scenario`,`template`,`driver`,`name`,`hold`,`read`,`write-lock`,`cfg`,`transform`,`semantics`,`templates`,`driver-catalog`,`add-fields`,`add-testing`,`add-test`,`add-saving`,`add-error`,`onTest`,`onSubmit`]),l(ee,{"set-inputs":e(M),"onUpdate:setInputs":a[17]||=e=>i(M)?M.value=e:null,"line-nodes":e(T),"state-label":e(de),"toggling-id":e(Ae),"reading-id":e(ke),"writing-id":e(De),loaded:e(x).loaded,error:e(x).error,"dcw-template-ref-ch":e(pe),"node-device-names":e(Te),onToggle:e(Ne),onRead:e(Me),onWrite:e(je),onRemove:e(x).removeNode},null,8,[`set-inputs`,`line-nodes`,`state-label`,`toggling-id`,`reading-id`,`writing-id`,`loaded`,`error`,`dcw-template-ref-ch`,`node-device-names`,`onToggle`,`onRead`,`onWrite`,`onRemove`]),l(E,{"filter-product-id":e(L),"onUpdate:filterProductId":a[18]||=e=>i(L)?L.value=e:null,"line-products":e(j),"visible-recipes":e(We),"line-runs":e(se),"apply-result":e(rt),"run-data-view":e(it),"run-data-loading":e(at),"product-name":e(be),"param-status":e(Se),"param-node-name":e(Ce),"daq-window-status":e(we),"daq-node-ch":e(_e),onCreate:e(ot),onOpenProduct:a[19]||=e=>R.value=!0,onApply:e(ut),onEdit:e(st),onHistory:e(ct),onRemoveRecipe:e(x).removeRecipe,onRemoveProduct:e(x).removeProduct,onViewRun:e(ft),onCloseRun:e(x).closeRun,onCloseRunData:a[20]||=e=>it.value=null},null,8,[`filter-product-id`,`line-products`,`visible-recipes`,`line-runs`,`apply-result`,`run-data-view`,`run-data-loading`,`product-name`,`param-status`,`param-node-name`,`daq-window-status`,`daq-node-ch`,`onCreate`,`onApply`,`onEdit`,`onHistory`,`onRemoveRecipe`,`onRemoveProduct`,`onViewRun`,`onCloseRun`]),l(D,{open:e(V),"onUpdate:open":a[21]||=e=>i(V)?V.value=e:null,form:e(H),"onUpdate:form":a[22]||=e=>i(H)?H.value=e:null,"line-products":e(j),"line-nodes":e(T),"line-daq-nodes":e(ge),"line-id":e(C),"recipe-editing":e($e),"recipe-saving":e(et),"recipe-error":e(tt),"recipe-stale-note":e(nt),"dcw-template-ref-ch":e(pe),"node-min":e(me),"node-max":e(he),"param-status":e(Se),onSubmit:e(lt),onClose:a[23]||=e=>V.value=!1},null,8,[`open`,`form`,`line-products`,`line-nodes`,`line-daq-nodes`,`line-id`,`recipe-editing`,`recipe-saving`,`recipe-error`,`recipe-stale-note`,`dcw-template-ref-ch`,`node-min`,`node-max`,`param-status`,`onSubmit`]),l(O,{open:e(B),"onUpdate:open":a[24]||=e=>i(B)?B.value=e:null,"ver-recipe":e(Je),"ver-rows":e(Ye),"ver-loading":e(Xe),"ver-msg":e(Ze),"param-node-name":e(Ce),onRevert:e(Qe),onClose:a[25]||=e=>B.value=!1},null,8,[`open`,`ver-recipe`,`ver-rows`,`ver-loading`,`ver-msg`,`param-node-name`,`onRevert`]),l(k,{query:e(U),"onUpdate:query":a[26]||=e=>i(U)?U.value=e:null,"line-products":e(j),"visible-recipes":e(We),"line-daq-nodes":e(ge),"daq-param-keys":e(_t),"query-busy":e(pt),"query-error":e(mt),"query-result":e(ht),onRun:e(gt)},null,8,[`query`,`line-products`,`visible-recipes`,`line-daq-nodes`,`daq-param-keys`,`query-busy`,`query-error`,`query-result`,`onRun`]),e(ce).length?(s(),g(A,{key:1,"line-history":e(ce)},null,8,[`line-history`])):m(``,!0),l(ne,{open:e(R),"onUpdate:open":a[27]||=e=>i(R)?R.value=e:null,form:e(z),"onUpdate:form":a[28]||=e=>i(z)?z.value=e:null,"product-saving":e(Ge),"product-error":e(Ke),onSubmit:e(qe),onClose:a[29]||=e=>R.value=!1},null,8,[`open`,`form`,`product-saving`,`product-error`,`onSubmit`]),e(x).error?(s(),d(`p`,ja,[v(r(e(x).error)+`(`,1),l(o,{to:`/workshop`},{default:h(()=>[v(r(n.$t(`dcwDetail.k1bhhheq120`)),1)]),_:1}),a[31]||=v(`) `,-1)])):m(``,!0),l(re,{"node-id":e(P),"onUpdate:nodeId":a[30]||=e=>i(P)?P.value=e:null,"line-nodes":e(T),ledger:e(Pe),onLoad:e(Fe),onRollback:e(Ie)},null,8,[`node-id`,`line-nodes`,`ledger`,`onLoad`,`onRollback`])]))}}}),[[`__scopeId`,`data-v-6186fc46`]]);export{Ma as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./DK3Fl9T5.js";import{d as t}from"./ByMj6e7s.js";import{n}from"./Cnrmlixo.js";var r=e({useDashboardCharts:()=>i});function i(e){let{t:r}=n(),{pal:i,isDark:a,trendNodes:o,trendBuf:s,linesActive:c,writeRate:l,daq:u,dcw:d}=e,f=t(()=>a.value?`#e8eef8`:`#1f2a3a`),p=t(()=>a.value?`rgba(143,160,181,0.85)`:`rgba(80,95,120,0.85)`),m=t(()=>a.value?`rgba(143,160,181,0.13)`:`rgba(80,95,120,0.14)`),h=t(()=>a.value?`rgba(10,16,28,0.94)`:`rgba(255,255,255,0.97)`),g=t(()=>({backgroundColor:h.value,borderColor:m.value,textStyle:{color:f.value,fontSize:11}})),_=t(()=>({backgroundColor:`transparent`,tooltip:{trigger:`axis`,...g.value},legend:{top:0,right:4,icon:`roundRect`,itemWidth:10,itemHeight:4,textStyle:{color:p.value,fontSize:10.5}},grid:{left:42,right:14,top:30,bottom:24},xAxis:{type:`time`,axisLabel:{color:p.value,fontSize:10,formatter:`{HH}:{mm}:{ss}`},axisLine:{lineStyle:{color:m.value}},splitLine:{show:!1}},yAxis:{type:`value`,min:0,max:100,axisLabel:{color:p.value,fontSize:10},splitLine:{lineStyle:{color:m.value}}},series:o.value.map((e,t)=>{let n=[i.value.accent,i.value.cyan,i.value.amber,i.value.violet][t%4];return{name:e.name,type:`line`,smooth:!0,showSymbol:!1,connectNulls:!0,lineStyle:{width:1.6,color:n},itemStyle:{color:n},data:s.value.map(t=>[t.t,t.m[e.id]??null])}})})),v=t(()=>({backgroundColor:`transparent`,tooltip:{trigger:`item`,...g.value},legend:{bottom:0,left:`center`,icon:`roundRect`,itemWidth:10,itemHeight:4,textStyle:{color:p.value,fontSize:10.5}},series:[{type:`pie`,radius:[`62%`,`82%`],center:[`50%`,`44%`],label:{show:!1},silent:!1,data:[{value:c.value.length,name:r(`home.runNow`),itemStyle:{color:i.value.accent}},{value:Math.max(d.lines.length-c.value.length,0),name:r(`home.standBy`),itemStyle:{color:m.value}}]}]})),y=t(()=>({backgroundColor:`transparent`,tooltip:{trigger:`axis`,axisPointer:{type:`shadow`},...g.value},grid:{left:70,right:34,top:10,bottom:24},xAxis:{type:`value`,axisLabel:{color:p.value,fontSize:10,formatter:e=>e>=1e3?`${Math.round(e/1e3)}k`:String(e)},splitLine:{lineStyle:{color:m.value}}},yAxis:{type:`category`,data:[r(`home.pipelineSeries.stored`),r(`home.pipelineSeries.consumed`),r(`home.pipelineSeries.produced`)],axisLabel:{color:p.value,fontSize:10.5},axisLine:{lineStyle:{color:m.value}}},series:[{type:`bar`,barWidth:10,data:[{value:u.meta.samplesStored??0,itemStyle:{color:i.value.amber}},{value:u.meta.consumed??0,itemStyle:{color:i.value.cyan}},{value:u.meta.produced??0,itemStyle:{color:i.value.accent}}],itemStyle:{borderRadius:[0,5,5,0]}}]})),b=t(()=>({backgroundColor:`transparent`,series:[{type:`gauge`,startAngle:210,endAngle:-30,min:0,max:100,radius:`92%`,center:[`50%`,`58%`],progress:{show:!0,width:12,itemStyle:{color:i.value.accent}},axisLine:{lineStyle:{width:12,color:[[1,m.value]]}},axisTick:{show:!1},splitLine:{show:!1},axisLabel:{show:!1},pointer:{show:!1},anchor:{show:!1},title:{show:!1},detail:{valueAnimation:!0,formatter:`{value}%`,color:f.value,fontSize:26,fontFamily:`monospace`,offsetCenter:[0,`4%`]},data:[{value:l.value}]}]})),x=t(()=>[{key:`ok`,color:i.value.accent},{key:`warn`,color:i.value.amber},{key:`alarm`,color:i.value.danger},{key:`writing`,color:i.value.cyan},{key:`idle`,color:a.value?`#5f6e84`:`#8fa0b5`},{key:`error`,color:`#ff8a5c`},{key:`offline`,color:a.value?`rgba(95,110,132,0.38)`:`rgba(143,160,181,0.35)`}]);return{trendOpt:_,lineStateOpt:v,pipelineOpt:y,writeOpt:b,nodeStateOpt:t(()=>{let e=new Map;for(let t of u.nodes)e.set(t.state,(e.get(t.state)??0)+1);let t=new Map;for(let e of d.nodes)t.set(e.state,(t.get(e.state)??0)+1);let n=x.value.filter(n=>e.get(n.key)||t.get(n.key));return{backgroundColor:`transparent`,tooltip:{trigger:`axis`,axisPointer:{type:`shadow`},...g.value},legend:{top:0,left:`center`,icon:`roundRect`,itemWidth:10,itemHeight:4,textStyle:{color:p.value,fontSize:10}},grid:{left:56,right:14,top:30,bottom:24},xAxis:{type:`value`,axisLabel:{color:p.value,fontSize:10},splitLine:{lineStyle:{color:m.value}}},yAxis:{type:`category`,data:[r(`home.stateDcw`),r(`home.stateDaq`)],axisLabel:{color:p.value,fontSize:10.5},axisLine:{lineStyle:{color:m.value}}},series:n.map(n=>({name:r(`home.states.${n.key}`),type:`bar`,stack:`nodes`,barWidth:12,itemStyle:{color:n.color},data:[t.get(n.key)??0,e.get(n.key)??0]}))}})}}export{r as n,i as t};
|