agentworkshop 0.7.53 → 0.7.54
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 +87 -0
- package/.output/.AgentWorkShop/prompts/host-tools.json +87 -0
- package/.output/.AgentWorkShop/schema.json +2 -1
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{9zrLAN2o2.js → BJhsCisg2.js} +1 -1
- package/.output/public/_nuxt/BOhcoxIu.js +2 -0
- package/.output/public/_nuxt/{BdM_Qr752.js → BP8TgWo02.js} +1 -1
- package/.output/public/_nuxt/{bg2adfck.js → BPqXOlYX.js} +1 -1
- package/.output/public/_nuxt/{Crbir9cT.js → BQOn0q6Y.js} +1 -1
- package/.output/public/_nuxt/{BLnLjzka.js → BQy0Yy7S.js} +1 -1
- package/.output/public/_nuxt/BTVyPFng2.js +1 -0
- package/.output/public/_nuxt/{qOlYoGLf.js → BWowAAJb.js} +1 -1
- package/.output/public/_nuxt/{BwlGxRxA.js → BZtgVXC5.js} +1 -1
- package/.output/public/_nuxt/BcX4fktE.js +1 -0
- package/.output/public/_nuxt/{B_LcD7qE2.js → BdF9OAZq2.js} +1 -1
- package/.output/public/_nuxt/{IU-UGkCJ2.js → BhcbvVOa2.js} +1 -1
- package/.output/public/_nuxt/{CBDX7p73.js → BjWbbMHs.js} +1 -1
- package/.output/public/_nuxt/{YaroNkJZ2.js → BmTzcKJg2.js} +1 -1
- package/.output/public/_nuxt/BnoyYd0Z2.js +1 -0
- package/.output/public/_nuxt/{Bl5dYv4m.js → BqYO-UfR.js} +1 -1
- package/.output/public/_nuxt/Btv3HXrq.js +1 -0
- package/.output/public/_nuxt/{BGKUW7ra.js → Btx8wL4-.js} +1 -1
- package/.output/public/_nuxt/{CBIoheY42.js → BuXaEtBG2.js} +1 -1
- package/.output/public/_nuxt/{DSqMyLCV2.js → BxWvUgMz2.js} +1 -1
- package/.output/public/_nuxt/{1g9IT9Qh2.js → BxoaZc_U2.js} +1 -1
- package/.output/public/_nuxt/C-LU6xv_.js +1 -0
- package/.output/public/_nuxt/{BcQXL8pb.js → C-y_g11k.js} +1 -1
- package/.output/public/_nuxt/C7_F68I7.js +1 -0
- package/.output/public/_nuxt/CFjveTJh.js +1 -0
- package/.output/public/_nuxt/{BQXCMsXk.js → CMWyj56j.js} +1 -1
- package/.output/public/_nuxt/{C4WhK2wq.js → COQM2L1M.js} +1 -1
- package/.output/public/_nuxt/{CjwxhpwR2.js → CV61ysvv.js} +1 -1
- package/.output/public/_nuxt/{sl1EEoCr2.js → Ca3iDJwu2.js} +5 -5
- package/.output/public/_nuxt/{BiOSWsjD.js → Cg8Pgbeu.js} +1 -1
- package/.output/public/_nuxt/{BSdJTnk12.js → Ch9KdZWb2.js} +1 -1
- package/.output/public/_nuxt/{B1RT9NTO2.js → ChN5v-i22.js} +1 -1
- package/.output/public/_nuxt/{DE6H1HdJ.js → Cpm5JYv4.js} +1 -1
- package/.output/public/_nuxt/{DsGf2IV82.js → CtXOpljm2.js} +1 -1
- package/.output/public/_nuxt/{EhhQmlBV2.js → D2Sm-GTk2.js} +1 -1
- package/.output/public/_nuxt/{DCtk3qqr.js → D8xUsQGt.js} +1 -1
- package/.output/public/_nuxt/{CQabB0oy.js → D9TpiWjt.js} +1 -1
- package/.output/public/_nuxt/DB4ma-iU2.js +1 -0
- package/.output/public/_nuxt/{BDmNbZ252.js → DCPhrNWR2.js} +1 -1
- package/.output/public/_nuxt/{BE7BrEw6.js → DNZmwhSD.js} +1 -1
- package/.output/public/_nuxt/{CMXcOb6W.js → DO9xaI9a.js} +1 -1
- package/.output/public/_nuxt/{H2rNs1O82.js → DUribplv2.js} +1 -1
- package/.output/public/_nuxt/DZuXfuXS.js +14 -0
- package/.output/public/_nuxt/{Ccps4cxo.js → D_hCLbi9.js} +1 -1
- package/.output/public/_nuxt/{DlCktWDT.js → Db4_F1T2.js} +1 -1
- package/.output/public/_nuxt/{Bhe953zV2.js → DioKmYyB2.js} +1 -1
- package/.output/public/_nuxt/{77DRSnQv.js → Dk6Zf3-L.js} +1 -1
- package/.output/public/_nuxt/{Dbe9TFc9.js → DlX0nqUe.js} +1 -1
- package/.output/public/_nuxt/{Chphw5IA2.js → Dm_iKz8k2.js} +1 -1
- package/.output/public/_nuxt/{NJn94js_.js → DnAn2LgG.js} +1 -1
- package/.output/public/_nuxt/DuPM4HXw.js +1 -0
- package/.output/public/_nuxt/{DNoEoo8t.js → Dz2SLIde.js} +1 -1
- package/.output/public/_nuxt/DzwIZ81f.js +1 -0
- package/.output/public/_nuxt/{DD6Z0yPN2.js → MbT4wXb62.js} +1 -1
- package/.output/public/_nuxt/{BpcQDwKM2.js → PY2GW_3N2.js} +1 -1
- package/.output/public/_nuxt/{2_DkYoqD2.js → QHo9mN-M2.js} +1 -1
- package/.output/public/_nuxt/{TownView.BvlfuLtP.css → TownView.Xt1yygrh.css} +1 -1
- package/.output/public/_nuxt/_id_.DZbVLNnu.css +1 -0
- package/.output/public/_nuxt/a4X3ARNm2.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/af879435-fc74-4017-ade0-3b92c1ab35bb.json +1 -0
- package/.output/public/_nuxt/cY_5jwFz2.js +1 -0
- package/.output/public/_nuxt/dVw8IHY62.js +1 -0
- package/.output/public/_nuxt/{LwIFGLgF.js → deBcbALe2.js} +1 -1
- package/.output/public/_nuxt/{BzvHUfRR.js → nT-bgxvf.js} +1 -1
- package/.output/public/_nuxt/tq3HbWr9.js +1 -0
- package/.output/public/_nuxt/{BH3obZJ42.js → uY58gQqR2.js} +1 -1
- package/.output/public/_nuxt/{ZuQtOnfI.js → vPfDYgvR.js} +1 -1
- package/.output/public/_nuxt/{zsRclU9w2.js → xX7ccjDl2.js} +1 -1
- package/.output/server/chunks/_/nitro.mjs +2652 -1422
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/build/OmpTerminalPanel-mk31gVzA.mjs +1 -1
- package/.output/server/chunks/build/{TownView-fP9BiALv.mjs → TownView-Bf5VFYFj.mjs} +26 -19
- package/.output/server/chunks/build/TownView-Bf5VFYFj.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CK-QFrDV.mjs → _id_-CuUmVPRg.mjs} +192 -82
- package/.output/server/chunks/build/_id_-CuUmVPRg.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CDlur81q.mjs → _id_-WF20tjqT.mjs} +12 -11
- package/.output/server/chunks/build/_id_-WF20tjqT.mjs.map +1 -0
- package/.output/server/chunks/build/{_wsId_-DdqXzycE.mjs → _wsId_-BUIKB68b.mjs} +13 -10
- package/.output/server/chunks/build/{_wsId_-DdqXzycE.mjs.map → _wsId_-BUIKB68b.mjs.map} +1 -1
- package/.output/server/chunks/build/agents-DqICy4AL.mjs +2 -1
- package/.output/server/chunks/build/agents-DqICy4AL.mjs.map +1 -1
- package/.output/server/chunks/build/{aml-DsgtDLWF.mjs → aml-C55iuLn-.mjs} +15 -13
- package/.output/server/chunks/build/aml-C55iuLn-.mjs.map +1 -0
- package/.output/server/chunks/build/{api-BY6ji7RC.mjs → api-B4Om0mEc.mjs} +4 -3
- package/.output/server/chunks/build/api-B4Om0mEc.mjs.map +1 -0
- package/.output/server/chunks/build/{apiClient-D281qrK2.mjs → apiClient-BvXtNzC8.mjs} +2 -2
- package/.output/server/chunks/build/apiClient-BvXtNzC8.mjs.map +1 -0
- package/.output/server/chunks/build/channel-templates-gdCLajKy.mjs +3 -2
- package/.output/server/chunks/build/channel-templates-gdCLajKy.mjs.map +1 -1
- package/.output/server/chunks/build/constants-HPHJvjne.mjs +2 -1
- package/.output/server/chunks/build/constants-HPHJvjne.mjs.map +1 -1
- package/.output/server/chunks/build/{daq-N69AOtgw.mjs → daq-D0kLscVr.mjs} +15 -13
- package/.output/server/chunks/build/daq-D0kLscVr.mjs.map +1 -0
- package/.output/server/chunks/build/{dcw-CN9d3Rs7.mjs → dcw-DuhEyu7S.mjs} +11 -10
- package/.output/server/chunks/build/dcw-DuhEyu7S.mjs.map +1 -0
- package/.output/server/chunks/build/dcw-driver-badge-Df5wL_ZA.mjs +20 -0
- package/.output/server/chunks/build/dcw-driver-badge-Df5wL_ZA.mjs.map +1 -0
- package/.output/server/chunks/build/{default-CXUe4HL7.mjs → default-aFGiNebw.mjs} +6 -4
- package/.output/server/chunks/build/{default-CXUe4HL7.mjs.map → default-aFGiNebw.mjs.map} +1 -1
- package/.output/server/chunks/build/hitl-ePh3G3ue.mjs +132 -0
- package/.output/server/chunks/build/hitl-ePh3G3ue.mjs.map +1 -0
- package/.output/server/chunks/build/{logs-BcAjU1Ps.mjs → logs-BlOalbsZ.mjs} +11 -9
- package/.output/server/chunks/build/logs-BlOalbsZ.mjs.map +1 -0
- package/.output/server/chunks/build/monitor-DX_K0WMq.mjs +3 -2
- package/.output/server/chunks/build/{operations-OFHYXwh4.mjs → operations-BD6LK-Yz.mjs} +10 -8
- package/.output/server/chunks/build/operations-BD6LK-Yz.mjs.map +1 -0
- package/.output/server/chunks/build/{pages-CRMeXrxG.mjs → pages-DloBBvU5.mjs} +7 -6
- package/.output/server/chunks/build/pages-DloBBvU5.mjs.map +1 -0
- package/.output/server/chunks/build/permissions-BvmodvsO.mjs +3 -2
- package/.output/server/chunks/build/permissions-BvmodvsO.mjs.map +1 -1
- package/.output/server/chunks/build/plugins-NAS9MQ5r.mjs +3 -2
- package/.output/server/chunks/build/plugins-NAS9MQ5r.mjs.map +1 -1
- package/.output/server/chunks/build/schedules-D8vYHgQ5.mjs +2 -1
- package/.output/server/chunks/build/settings-B7HA-sdb.mjs +3 -2
- package/.output/server/chunks/build/settings-B7HA-sdb.mjs.map +1 -1
- package/.output/server/chunks/build/teams-wM-MdLv9.mjs +2 -1
- package/.output/server/chunks/build/teams-wM-MdLv9.mjs.map +1 -1
- package/.output/server/chunks/build/tokens-CloWk4x_.mjs +3 -2
- package/.output/server/chunks/build/tokens-CloWk4x_.mjs.map +1 -1
- package/.output/server/chunks/build/{town-BMlctE4m.mjs → town-B2gBu_ZE.mjs} +12 -9
- package/.output/server/chunks/build/town-B2gBu_ZE.mjs.map +1 -0
- package/.output/server/chunks/build/types-D6J7slEa.mjs +1 -1
- package/.output/server/chunks/build/useAgentHarnessOptions-BnFCh23W.mjs +2 -1
- package/.output/server/chunks/build/useAgentHarnessOptions-BnFCh23W.mjs.map +1 -1
- package/.output/server/chunks/build/useAgentTemplateActions-DsBRUQni.mjs +2 -1
- package/.output/server/chunks/build/useAgentTemplateActions-DsBRUQni.mjs.map +1 -1
- package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs +2 -1
- package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs.map +1 -1
- package/.output/server/chunks/build/useAgentTemplateForm-DzQ_t2Ue.mjs +2 -1
- package/.output/server/chunks/build/useAgentTemplateForm-DzQ_t2Ue.mjs.map +1 -1
- package/.output/server/chunks/build/useAgentTemplatesCatalog-Q7LgG1Af.mjs +3 -2
- package/.output/server/chunks/build/useAgentTemplatesCatalog-Q7LgG1Af.mjs.map +1 -1
- package/.output/server/chunks/build/{useAmlDatasets-BM0lZu40.mjs → useAmlDatasets-DeoE1idn.mjs} +5 -4
- package/.output/server/chunks/build/useAmlDatasets-DeoE1idn.mjs.map +1 -0
- package/.output/server/chunks/build/{useAmlEntities-BDQ8TmLL.mjs → useAmlEntities-BMLHU_39.mjs} +5 -4
- package/.output/server/chunks/build/useAmlEntities-BMLHU_39.mjs.map +1 -0
- package/.output/server/chunks/build/{useAmlEnv-DgTVwpqi.mjs → useAmlEnv-DdlyVzPu.mjs} +5 -4
- package/.output/server/chunks/build/useAmlEnv-DdlyVzPu.mjs.map +1 -0
- package/.output/server/chunks/build/{useAmlExperiments-BtyW32PO.mjs → useAmlExperiments-Dloi834i.mjs} +5 -4
- package/.output/server/chunks/build/useAmlExperiments-Dloi834i.mjs.map +1 -0
- package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs +2 -1
- package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs.map +1 -1
- package/.output/server/chunks/build/{useAmlJobs-fk-H5Rp5.mjs → useAmlJobs--a_1ovew.mjs} +5 -4
- package/.output/server/chunks/build/useAmlJobs--a_1ovew.mjs.map +1 -0
- package/.output/server/chunks/build/{useAmlModels-hgyVHoAq.mjs → useAmlModels-D7MuOWOy.mjs} +5 -4
- package/.output/server/chunks/build/useAmlModels-D7MuOWOy.mjs.map +1 -0
- package/.output/server/chunks/build/{useAmlNotes-BjbYNADm.mjs → useAmlNotes-CTZe-GI0.mjs} +5 -4
- package/.output/server/chunks/build/useAmlNotes-CTZe-GI0.mjs.map +1 -0
- package/.output/server/chunks/build/{useAmlPredict-U24-SZNA.mjs → useAmlPredict-BToRrVRV.mjs} +5 -4
- package/.output/server/chunks/build/useAmlPredict-BToRrVRV.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqAddNode-kW7uTSMQ.mjs → useDaqAddNode-CaOCbe4-.mjs} +6 -5
- package/.output/server/chunks/build/useDaqAddNode-CaOCbe4-.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqDetailBinding-cpBz4hSL.mjs → useDaqDetailBinding-C7AbGIdP.mjs} +6 -5
- package/.output/server/chunks/build/useDaqDetailBinding-C7AbGIdP.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqDetailFrames-BZGtKKXW.mjs → useDaqDetailFrames-CmAEdbAL.mjs} +5 -4
- package/.output/server/chunks/build/useDaqDetailFrames-CmAEdbAL.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqDetailHistory-DtSTfyMi.mjs → useDaqDetailHistory-pfi6zXWU.mjs} +5 -4
- package/.output/server/chunks/build/useDaqDetailHistory-pfi6zXWU.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqDetailNode-D_vhG0jF.mjs → useDaqDetailNode-qT7MjqJ7.mjs} +8 -7
- package/.output/server/chunks/build/useDaqDetailNode-qT7MjqJ7.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqDetailParams-JfqHvTxr.mjs → useDaqDetailParams-CrTMDs-2.mjs} +6 -5
- package/.output/server/chunks/build/useDaqDetailParams-CrTMDs-2.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqFilters-BUQtZ82a.mjs → useDaqFilters-CMysN13f.mjs} +8 -7
- package/.output/server/chunks/build/useDaqFilters-CMysN13f.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs +2 -1
- package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs.map +1 -1
- package/.output/server/chunks/build/{useDaqOptimizations-Ct-TSXxy.mjs → useDaqOptimizations-Coq5lsfM.mjs} +5 -4
- package/.output/server/chunks/build/useDaqOptimizations-Coq5lsfM.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqStream-wOxZcMDA.mjs → useDaqStream-DhzdoyIR.mjs} +3 -3
- package/.output/server/chunks/build/{useDaqStream-wOxZcMDA.mjs.map → useDaqStream-DhzdoyIR.mjs.map} +1 -1
- package/.output/server/chunks/build/{useDaqTemplates-BqQRdrIm.mjs → useDaqTemplates-C7GzQmdJ.mjs} +6 -5
- package/.output/server/chunks/build/useDaqTemplates-C7GzQmdJ.mjs.map +1 -0
- package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs +2 -1
- package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs.map +1 -1
- package/.output/server/chunks/build/{useDashboardData-DWJ6vHjm.mjs → useDashboardData-DgJcGJaF.mjs} +6 -5
- package/.output/server/chunks/build/useDashboardData-DgJcGJaF.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwAddNode-C1HDP3yG.mjs → useDcwAddNode-C9DbEKHi.mjs} +38 -5
- package/.output/server/chunks/build/useDcwAddNode-C9DbEKHi.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwCards-ETEsHvVy.mjs → useDcwCards-VDoMYG7l.mjs} +5 -4
- package/.output/server/chunks/build/useDcwCards-VDoMYG7l.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwDetailScope-QTr1G6Oe.mjs → useDcwDetailScope-CL97tJdJ.mjs} +7 -6
- package/.output/server/chunks/build/useDcwDetailScope-CL97tJdJ.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwDetailTemplates-Djt-0Vse.mjs → useDcwDetailTemplates-OLmjMSGD.mjs} +5 -4
- package/.output/server/chunks/build/useDcwDetailTemplates-OLmjMSGD.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwFilter-FfVlDdyS.mjs → useDcwFilter-Bs9C6-h_.mjs} +5 -4
- package/.output/server/chunks/build/useDcwFilter-Bs9C6-h_.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwLedger-BLoMmcu1.mjs → useDcwLedger-Bbf_iFOY.mjs} +5 -4
- package/.output/server/chunks/build/useDcwLedger-Bbf_iFOY.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwLineMutations-BMC5BTWU.mjs → useDcwLineMutations-Bhtuqw7J.mjs} +5 -4
- package/.output/server/chunks/build/useDcwLineMutations-Bhtuqw7J.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwLineRun-74gN_s6T.mjs → useDcwLineRun-CGqZSnG4.mjs} +5 -4
- package/.output/server/chunks/build/useDcwLineRun-CGqZSnG4.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwParamApprovals-BBwdFsKv.mjs +119 -0
- package/.output/server/chunks/build/useDcwParamApprovals-BBwdFsKv.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwProducts-D-zrMaeV.mjs → useDcwProducts-BoBkJqpv.mjs} +5 -4
- package/.output/server/chunks/build/useDcwProducts-BoBkJqpv.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwQuery-7tX4QYmv.mjs → useDcwQuery-DP7b2qb6.mjs} +5 -4
- package/.output/server/chunks/build/useDcwQuery-DP7b2qb6.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwQuickActions-C-tgcXIr.mjs → useDcwQuickActions-DHRiA9KN.mjs} +5 -4
- package/.output/server/chunks/build/useDcwQuickActions-DHRiA9KN.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwRecipes-FVk5gDLV.mjs → useDcwRecipes-CIMeH2oF.mjs} +5 -4
- package/.output/server/chunks/build/useDcwRecipes-CIMeH2oF.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwStream-D04kCV3J.mjs → useDcwStream-B9ugUWRq.mjs} +10 -3
- package/.output/server/chunks/build/{useDcwStream-D04kCV3J.mjs.map → useDcwStream-B9ugUWRq.mjs.map} +1 -1
- package/.output/server/chunks/build/{useDcwTemplates-LDZffy4u.mjs → useDcwTemplates-M_-qjV8E.mjs} +5 -4
- package/.output/server/chunks/build/useDcwTemplates-M_-qjV8E.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwWrites-B22mwliK.mjs → useDcwWrites-D94dAzqr.mjs} +5 -4
- package/.output/server/chunks/build/useDcwWrites-D94dAzqr.mjs.map +1 -0
- package/.output/server/chunks/build/{useDeviceTwins-CbVad1M3.mjs → useDeviceTwins-BqwVJaZg.mjs} +2 -2
- package/.output/server/chunks/build/{useDeviceTwins-CbVad1M3.mjs.map → useDeviceTwins-BqwVJaZg.mjs.map} +1 -1
- package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs +2 -1
- package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs.map +1 -1
- package/.output/server/chunks/build/{useLogsManual-COfCyUtj.mjs → useLogsManual-CMjD62nt.mjs} +5 -4
- package/.output/server/chunks/build/useLogsManual-CMjD62nt.mjs.map +1 -0
- package/.output/server/chunks/build/{useLogsQuery-CRAm2hmS.mjs → useLogsQuery-2x1mKxT1.mjs} +5 -4
- package/.output/server/chunks/build/useLogsQuery-2x1mKxT1.mjs.map +1 -0
- package/.output/server/chunks/build/{useLogsScope-ClNijVj4.mjs → useLogsScope-04cUJCU-.mjs} +5 -4
- package/.output/server/chunks/build/useLogsScope-04cUJCU-.mjs.map +1 -0
- package/.output/server/chunks/build/useMonitorColumns-DhYvkLDq.mjs +3 -2
- package/.output/server/chunks/build/useMonitorColumns-DhYvkLDq.mjs.map +1 -1
- package/.output/server/chunks/build/useMonitorData-guVjMDtR.mjs +3 -2
- package/.output/server/chunks/build/useMonitorData-guVjMDtR.mjs.map +1 -1
- package/.output/server/chunks/build/useMonitorFormat-C7lhZe4g.mjs +2 -1
- package/.output/server/chunks/build/useMonitorFormat-C7lhZe4g.mjs.map +1 -1
- package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs +2 -1
- package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs.map +1 -1
- package/.output/server/chunks/build/{useOperationsFeed-CeXeHqUK.mjs → useOperationsFeed-DsA2ym7M.mjs} +5 -4
- package/.output/server/chunks/build/useOperationsFeed-DsA2ym7M.mjs.map +1 -0
- package/.output/server/chunks/build/{useOpsLog-CgnNG7_n.mjs → useOpsLog-SnWPuRtK.mjs} +2 -2
- package/.output/server/chunks/build/{useOpsLog-CgnNG7_n.mjs.map → useOpsLog-SnWPuRtK.mjs.map} +1 -1
- package/.output/server/chunks/build/useTeamActions-BOLQkYxg.mjs +2 -1
- package/.output/server/chunks/build/useTeamActions-BOLQkYxg.mjs.map +1 -1
- package/.output/server/chunks/build/useTeamAddMemberDialog-BCgrLPxI.mjs +2 -1
- package/.output/server/chunks/build/useTeamAddMemberDialog-BCgrLPxI.mjs.map +1 -1
- package/.output/server/chunks/build/useTeamCreateDialog-CJk40LqS.mjs +2 -1
- package/.output/server/chunks/build/useTeamCreateDialog-CJk40LqS.mjs.map +1 -1
- package/.output/server/chunks/build/useTeamDeployDialog-49hdUXQP.mjs +2 -1
- package/.output/server/chunks/build/useTeamDeployDialog-49hdUXQP.mjs.map +1 -1
- package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs +2 -1
- package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs.map +1 -1
- package/.output/server/chunks/build/useTeamPluginDialog-Dh-QOoiU.mjs +2 -1
- package/.output/server/chunks/build/useTeamPluginDialog-Dh-QOoiU.mjs.map +1 -1
- package/.output/server/chunks/build/useTeamsCatalog-HBSyKt5P.mjs +3 -2
- package/.output/server/chunks/build/useTeamsCatalog-HBSyKt5P.mjs.map +1 -1
- package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs +2 -1
- package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs.map +1 -1
- package/.output/server/chunks/build/useTokenCreate-DkYvEQUD.mjs +3 -2
- package/.output/server/chunks/build/useTokenCreate-DkYvEQUD.mjs.map +1 -1
- package/.output/server/chunks/build/useTokenRename-DOCP4aeI.mjs +3 -2
- package/.output/server/chunks/build/useTokenRename-DOCP4aeI.mjs.map +1 -1
- package/.output/server/chunks/build/useTokenReveal-CybwwflV.mjs +3 -2
- package/.output/server/chunks/build/useTokenReveal-CybwwflV.mjs.map +1 -1
- package/.output/server/chunks/build/useTokensList-BLiMvrc4.mjs +3 -2
- package/.output/server/chunks/build/useTokensList-BLiMvrc4.mjs.map +1 -1
- package/.output/server/chunks/build/useWorkbenchAuth-DqjBX-6w.mjs +3 -2
- package/.output/server/chunks/build/useWorkbenchAuth-DqjBX-6w.mjs.map +1 -1
- package/.output/server/chunks/build/{useWorkbenchWorkspaces-DgiSCzsX.mjs → useWorkbenchWorkspaces-GQVU9BLv.mjs} +6 -4
- package/.output/server/chunks/build/useWorkbenchWorkspaces-GQVU9BLv.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkshopApi-C9sTYu1F.mjs +1 -1
- package/.output/server/chunks/build/{useWorkshopWs-Bm80bLn7.mjs → useWorkshopWs-CgeCsaYJ.mjs} +4 -128
- package/.output/server/chunks/build/useWorkshopWs-CgeCsaYJ.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs +3 -2
- package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs.map +1 -1
- package/.output/server/chunks/build/{useWorkspaceChannels-D61Al2dr.mjs → useWorkspaceChannels-B13vROC1.mjs} +5 -3
- package/.output/server/chunks/build/useWorkspaceChannels-B13vROC1.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs +2 -1
- package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs.map +1 -1
- package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs +2 -1
- package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs.map +1 -1
- package/.output/server/chunks/build/users-CCf5PgRs.mjs +3 -2
- package/.output/server/chunks/build/users-CCf5PgRs.mjs.map +1 -1
- package/.output/server/chunks/build/{workshop-FQ4YzooB.mjs → workshop-BDqWzJtr.mjs} +6 -4
- package/.output/server/chunks/build/workshop-BDqWzJtr.mjs.map +1 -0
- package/.output/server/chunks/build/workspaces-CmW0cpOt.mjs +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +2 -1
- package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/mcp/workshop.mjs +3 -2
- package/.output/server/chunks/routes/api/mcp/workshop.mjs.map +1 -1
- package/.output/server/chunks/routes/api/metrics.mjs +2 -1
- package/.output/server/chunks/routes/api/metrics.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +2 -1
- package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/i18n.get.mjs +2 -1
- package/.output/server/chunks/routes/api/plugins/i18n.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +2 -1
- package/.output/server/chunks/routes/api/plugins/manifest.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/backup/list.get.mjs +2 -1
- package/.output/server/chunks/routes/api/system/backup/list.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/backup/run.post.mjs +4 -3
- package/.output/server/chunks/routes/api/system/backup/run.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/config.get.mjs +2 -1
- package/.output/server/chunks/routes/api/system/config.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/system/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/system/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index2.get.mjs +2 -1
- package/.output/server/chunks/routes/api/system/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +2 -1
- 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 -1
- package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/monitor.get.mjs +2 -1
- package/.output/server/chunks/routes/api/system/monitor.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/settings/events.get.mjs +2 -1
- package/.output/server/chunks/routes/api/system/settings/events.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +2 -1
- package/.output/server/chunks/routes/api/system/settings/reset.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/timezone.get.mjs +2 -1
- package/.output/server/chunks/routes/api/system/timezone.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/users/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.put.mjs +2 -1
- package/.output/server/chunks/routes/api/users/_id_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/users/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/users/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/login.post.mjs +2 -1
- package/.output/server/chunks/routes/api/users/login.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/logout.post.mjs +2 -1
- package/.output/server/chunks/routes/api/users/logout.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/me.get.mjs +2 -1
- package/.output/server/chunks/routes/api/users/me.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/register.post.mjs +2 -1
- package/.output/server/chunks/routes/api/users/register.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/setup-status.get.mjs +2 -1
- package/.output/server/chunks/routes/api/users/setup-status.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +2 -1
- package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/_...path_.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/_...path_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +2 -1
- 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 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/audit.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/audit.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/caller.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/caller.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +3 -2
- 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 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +2 -1
- 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 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- 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 +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +5 -4
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs +36 -0
- package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +3 -2
- 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 +3 -2
- 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 -1
- package/.output/server/chunks/routes/api/workshop/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index.put.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/index.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index11.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index12.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index12.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index13.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index13.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index14.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index14.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index8.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index9.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/runtime.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +2 -1
- 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 -1
- package/.output/server/chunks/routes/api/workshop/tasks.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/users/me.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/users/register.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +2 -2
- package/.output/server/chunks/virtual/entry.mjs +90 -57
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/index.mjs +2 -1
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +3 -3
- package/README.md +5 -5
- package/app/components/dcw/DcwAddNodeModal.vue +54 -4
- package/app/components/dcw/DcwNodesTable.vue +15 -0
- package/app/components/dcw/DcwParamApprovalCard.vue +110 -0
- package/app/components/dcw/DcwRecipeEditModal.vue +10 -1
- package/app/components/workshop/town/components/TownAgentBindings.vue +10 -1
- package/app/composables/workshop/useDcwStream.ts +4 -0
- package/app/pages/dcw/[id].vue +19 -1
- package/app/pages/dcw/composables/useDcwAddNode.ts +35 -1
- package/app/pages/dcw/composables/useDcwParamApprovals.ts +119 -0
- package/app/utils/dcw-driver-badge.ts +16 -0
- package/docs/cli.en.md +1 -1
- package/i18n/locales/en.ts +14 -0
- package/i18n/locales/zh-CN.ts +14 -0
- package/package.json +1 -1
- package/scripts/_dbg-protocol-matrix.mjs +8 -1
- package/server/api/workshop/dcw/mes-test-read.post.ts +24 -0
- package/server/plugins/workshop.ts +4 -0
- package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +7 -3
- package/server/services/workshop/agents/industrial/index.ts +2 -0
- package/server/services/workshop/agents/industrial/mes-tools.ts +135 -0
- package/server/services/workshop/agents/industrial/ops-tools.ts +79 -8
- package/server/services/workshop/agents/industrial-context.ts +19 -0
- package/server/services/workshop/agents/tool-classes.ts +10 -0
- package/server/services/workshop/db/database/schema.ts +32 -0
- package/server/services/workshop/db/schema.sql +32 -0
- package/server/services/workshop/dcw/dcw-controller/recipes.ts +9 -6
- package/server/services/workshop/dcw/dcw-recipe.repo.ts +8 -2
- package/server/services/workshop/dcw/drivers/mes-rest.ts +543 -0
- package/server/services/workshop/dcw/drivers/registry.ts +2 -0
- package/server/services/workshop/dcw/drivers/shared.ts +30 -0
- package/server/services/workshop/mes/mes-controller.ts +410 -0
- package/server/services/workshop/mes/mes-datasets.ts +441 -0
- package/server/services/workshop/runtime/manager/state.ts +11 -0
- package/server/services/workshop/runtime/scheduler-loop/tick.ts +5 -1
- package/server/services/workshop/runtime/task-engine/helpers.ts +3 -1
- package/shared/config/schema.json +2 -1
- package/shared/daq-protocol.ts +2 -1
- package/shared/dcw-protocol/catalog.ts +25 -1
- package/.output/public/_nuxt/BUD1CNvB2.js +0 -1
- package/.output/public/_nuxt/BhlRInVa.js +0 -1
- package/.output/public/_nuxt/CR-ILcRu2.js +0 -1
- package/.output/public/_nuxt/CZLnEnbE.js +0 -14
- package/.output/public/_nuxt/Chxx-DIE2.js +0 -1
- package/.output/public/_nuxt/D6lZftfy.js +0 -1
- package/.output/public/_nuxt/DAGuPgXa.js +0 -2
- package/.output/public/_nuxt/DWsgRq2c.js +0 -1
- package/.output/public/_nuxt/DxagrjB8.js +0 -1
- package/.output/public/_nuxt/UN3nSFjj2.js +0 -1
- package/.output/public/_nuxt/Z-Z6EhXs.js +0 -1
- package/.output/public/_nuxt/_id_.rdGx-UDx.css +0 -1
- package/.output/public/_nuxt/_kUzq9VF.js +0 -1
- package/.output/public/_nuxt/builds/meta/5ccc21c2-aba0-4b63-9a13-410e0569e345.json +0 -1
- package/.output/public/_nuxt/o9rJf00k.js +0 -1
- package/.output/server/chunks/build/TownView-fP9BiALv.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-CDlur81q.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-CK-QFrDV.mjs.map +0 -1
- package/.output/server/chunks/build/aml-DsgtDLWF.mjs.map +0 -1
- package/.output/server/chunks/build/api-BY6ji7RC.mjs.map +0 -1
- package/.output/server/chunks/build/apiClient-D281qrK2.mjs.map +0 -1
- package/.output/server/chunks/build/daq-N69AOtgw.mjs.map +0 -1
- package/.output/server/chunks/build/dcw-CN9d3Rs7.mjs.map +0 -1
- package/.output/server/chunks/build/logs-BcAjU1Ps.mjs.map +0 -1
- package/.output/server/chunks/build/operations-OFHYXwh4.mjs.map +0 -1
- package/.output/server/chunks/build/pages-CRMeXrxG.mjs.map +0 -1
- package/.output/server/chunks/build/town-BMlctE4m.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlDatasets-BM0lZu40.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlEntities-BDQ8TmLL.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlEnv-DgTVwpqi.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlExperiments-BtyW32PO.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlJobs-fk-H5Rp5.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlModels-hgyVHoAq.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlNotes-BjbYNADm.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlPredict-U24-SZNA.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqAddNode-kW7uTSMQ.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailBinding-cpBz4hSL.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailFrames-BZGtKKXW.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailHistory-DtSTfyMi.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailNode-D_vhG0jF.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailParams-JfqHvTxr.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqFilters-BUQtZ82a.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqOptimizations-Ct-TSXxy.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqTemplates-BqQRdrIm.mjs.map +0 -1
- package/.output/server/chunks/build/useDashboardData-DWJ6vHjm.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwAddNode-C1HDP3yG.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwCards-ETEsHvVy.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwDetailScope-QTr1G6Oe.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwDetailTemplates-Djt-0Vse.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwFilter-FfVlDdyS.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwLedger-BLoMmcu1.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwLineMutations-BMC5BTWU.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwLineRun-74gN_s6T.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwProducts-D-zrMaeV.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwQuery-7tX4QYmv.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwQuickActions-C-tgcXIr.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwRecipes-FVk5gDLV.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwTemplates-LDZffy4u.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwWrites-B22mwliK.mjs.map +0 -1
- package/.output/server/chunks/build/useLogsManual-COfCyUtj.mjs.map +0 -1
- package/.output/server/chunks/build/useLogsQuery-CRAm2hmS.mjs.map +0 -1
- package/.output/server/chunks/build/useLogsScope-ClNijVj4.mjs.map +0 -1
- package/.output/server/chunks/build/useOperationsFeed-CeXeHqUK.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkbenchWorkspaces-DgiSCzsX.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkshopWs-Bm80bLn7.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkspaceChannels-D61Al2dr.mjs.map +0 -1
- package/.output/server/chunks/build/workshop-FQ4YzooB.mjs.map +0 -1
- /package/.output/public/_nuxt/{C4sQKuhk2.js → C4sQKuhk.js} +0 -0
- /package/.output/public/_nuxt/{Dep0Hc9w.js → Dep0Hc9w2.js} +0 -0
- /package/.output/public/_nuxt/{DmzmgYHb.js → DmzmgYHb2.js} +0 -0
- /package/.output/public/_nuxt/{BvRk9kiK2.js → DybRo6-H.js} +0 -0
- /package/.output/public/_nuxt/{aV6YPjg0.js → aV6YPjg02.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{N as e,dt as t,mt as n,u as r}from"./CavpkQb0.js";import{Q as i,S as a,V as o,W as s,b as c,f as l,h as u,i as d,k as f,m as p,nt as m,p as h,y as g}from"./ByMj6e7s.js";import{d as _}from"./Br3AySNQ.js";import{n as v}from"./DkpmSnHX.js";import{n as y}from"./Cnrmlixo.js";import{c as b,n as x}from"./wDPc4SSR.js";import{n as S,t as C}from"./k5K6Jj6g.js";import{t as w}from"./eutnXI4F.js";import{t as T}from"./CAaSPBqk.js";import{i as E,n as D,t as O}from"./DppqsiPC.js";import{r as k,t as A}from"./bt__BP-I.js";import{t as j}from"./CPeZNE4S2.js";import{n as M,t as N}from"./Yv9YItEX2.js";import{t as P}from"./CwLQAKay2.js";import{t as F}from"./DzBbYWrw2.js";import{t as I}from"./DqtnqNgL2.js";import{t as ee}from"./CfLUvgr32.js";import{t as L}from"./BDNMzG2s2.js";import{t as R}from"./CNs_Ozdc.js";import{i as z}from"./Du9v6qGB2.js";import{t as B}from"./DffgG8vT.js";import{t as V}from"./Dep0Hc9w.js";import{t as H}from"./DmzmgYHb.js";import{t as U}from"./aV6YPjg0.js";import{t as W}from"./TOWR4WpO2.js";import{t as G}from"./CBUIODly2.js";import{t as K}from"./DFhyhDGa2.js";var q=Object.assign(a({__name:`TeamAddMemberModal`,props:f({team:{},memberOptions:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:f([`added`],[`update:open`]),setup(t,{emit:a}){let s=t,l=i(t,`open`),u=a,{addTemplateId:d,addRole:f,submit:p}=V({open:l,teamId:()=>s.team?.id,onAdded:()=>u(`added`)});return(i,a)=>{let s=w,u=S,_=D,v=E,y=C,b=x;return o(),h(b,{open:l.value,"onUpdate:open":a[2]||=e=>l.value=e,title:i.$t(`teams.k6ljhyv029`,{p0:t.team?.name??``}),"ok-text":i.$t(`teams.joinOk`),"cancel-text":i.$t(`common.cancel`),onOk:e(p)},{default:m(()=>[c(y,{layout:`vertical`},{default:m(()=>[c(u,{label:i.$t(`teams.k41ds5006`)},{default:m(()=>[c(s,{value:e(d),"onUpdate:value":a[0]||=e=>r(d)?d.value=e:null,options:t.memberOptions},null,8,[`value`,`options`])]),_:1},8,[`label`]),c(u,{label:i.$t(`teams.k479op007`)},{default:m(()=>[c(v,{value:e(f),"onUpdate:value":a[1]||=e=>r(f)?f.value=e:null},{default:m(()=>[c(_,{value:`worker`},{default:m(()=>[...a[3]||=[g(` worker `,-1)]]),_:1}),c(_,{value:`lead`},{default:m(()=>[g(n(i.$t(`teams.keowzlv017`)),1)]),_:1})]),_:1},8,[`value`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`open`,`title`,`ok-text`,`cancel-text`,`onOk`])}}}),{__name:`WorkshopTeamsTeamAddMemberModal`}),J={class:`card`},Y={class:`card-head`},X={class:`name`},Z={class:`owner`},Q={class:`members`},te={class:`member-name`},ne={class:`member-harness`},re=[`onClick`],ie=Object.assign(L(a({__name:`TeamCard`,props:{team:{},vis:{},canWrite:{type:Boolean}},emits:[`toggleVisibility`,`deploy`,`plugins`,`remove`,`addMember`,`removeMember`],setup(e,{emit:r}){let i=r,{t:a}=y(),f=e=>z(a,e);return(r,a)=>{let _=O,v=I,y=k,x=A,S=P,C=b;return o(),u(`div`,J,[l(`div`,Y,[l(`span`,X,n(f(e.team)),1),c(_,{color:e.vis.color,class:`vis-tag`},{default:m(()=>[e.vis.icon?(o(),u(`span`,{key:0,class:t(e.vis.icon)},null,2)):p(``,!0),g(n(e.vis.text),1)]),_:1},8,[`color`]),!e.team.isBuiltin&&e.canWrite?(o(),h(v,{key:0,checked:e.team.visibility===`public`,size:`small`,title:e.team.visibility===`public`?r.$t(`teams.toPrivate`):r.$t(`teams.toPublic`),onChange:a[0]||=t=>i(`toggleVisibility`,e.team,t===!0)},null,8,[`checked`,`title`])):p(``,!0),l(`span`,Z,n(e.team.ownerName??`-`),1),e.canWrite?(o(),h(S,{key:1},{overlay:m(()=>[c(x,null,{default:m(()=>[c(y,{onClick:a[1]||=t=>i(`deploy`,e.team)},{default:m(()=>[g(n(r.$t(`teams.deployToChannel`)),1)]),_:1}),c(y,{onClick:a[2]||=t=>i(`plugins`,e.team)},{default:m(()=>[g(n(r.$t(`teams.k1plugon047`)),1)]),_:1}),c(y,{danger:``,onClick:a[3]||=t=>i(`remove`,e.team)},{default:m(()=>[g(n(r.$t(`teams.k1bpojhf011`)),1)]),_:1})]),_:1})]),default:m(()=>[a[6]||=l(`span`,{class:`i-tabler-dots op`},null,-1)]),_:1})):(o(),h(C,{key:2,class:`deploy-btn`,size:`small`,type:`default`,title:r.$t(`teams.kxheuf1001`),onClick:a[4]||=t=>i(`deploy`,e.team)},{default:m(()=>[g(n(r.$t(`teams.k48ja7012`)),1)]),_:1},8,[`title`]))]),l(`div`,Q,[(o(!0),u(d,null,s(e.team.members,t=>(o(),u(`div`,{key:t.templateId,class:`member`},[c(_,{color:t.role===`lead`?`gold`:`blue`,class:`role`},{default:m(()=>[g(n(t.role),1)]),_:2},1032,[`color`]),l(`span`,te,n(f(t)),1),l(`span`,ne,n(t.harness),1),e.canWrite?(o(),u(`span`,{key:0,class:`i-tabler-x rm`,onClick:n=>i(`removeMember`,e.team,t.templateId)},null,8,re)):p(``,!0)]))),128)),e.canWrite?(o(),h(C,{key:0,size:`small`,type:`dashed`,block:``,onClick:a[5]||=t=>i(`addMember`,e.team)},{default:m(()=>[g(n(r.$t(`teams.krt2oib013`)),1)]),_:1})):p(``,!0)])])}}}),[[`__scopeId`,`data-v-2702e977`]]),{__name:`WorkshopTeamsTeamCard`}),ae={class:`aw-mono`},oe={key:0,class:`plug-builtin-tag`},se={class:`plug-hint`},ce=Object.assign(L(a({__name:`TeamCreateModal`,props:{open:{type:Boolean,default:!1},openModifiers:{}},emits:f([`created`],[`update:open`]),setup(t,{emit:a}){let f=i(t,`open`),_=a,{createForm:v,platformPlugins:y,pluginChecked:b,submit:w}=H({open:f,onCreated:()=>_(`created`)});return(t,i)=>{let a=T,_=S,O=D,k=E,A=N,j=M,P=C,F=x;return o(),h(F,{open:f.value,"onUpdate:open":i[4]||=e=>f.value=e,title:t.$t(`teams.k1efmuyx002`),"ok-text":t.$t(`common.create`),"cancel-text":t.$t(`common.cancel`),onOk:e(w)},{default:m(()=>[c(P,{layout:`vertical`},{default:m(()=>[c(_,{label:t.$t(`teams.k3xhia003`)},{default:m(()=>[c(a,{value:e(v).name,"onUpdate:value":i[0]||=t=>e(v).name=t},null,8,[`value`])]),_:1},8,[`label`]),c(_,{label:t.$t(`teams.k40gkk004`)},{default:m(()=>[c(a,{value:e(v).description,"onUpdate:value":i[1]||=t=>e(v).description=t},null,8,[`value`])]),_:1},8,[`label`]),c(_,{label:t.$t(`teams.k3lrqn0005`)},{default:m(()=>[c(k,{value:e(v).visibility,"onUpdate:value":i[2]||=t=>e(v).visibility=t},{default:m(()=>[c(O,{value:`private`},{default:m(()=>[g(n(t.$t(`teams.k17jfge3015`)),1)]),_:1}),c(O,{value:`public`},{default:m(()=>[g(n(t.$t(`teams.k1h2lq0o016`)),1)]),_:1})]),_:1},8,[`value`])]),_:1},8,[`label`]),e(y).length?(o(),h(_,{key:0,label:t.$t(`teams.k1plugon041`)},{default:m(()=>[c(j,{value:e(b),"onUpdate:value":i[3]||=e=>r(b)?b.value=e:null,class:`plug-create-group`},{default:m(()=>[(o(!0),u(d,null,s(e(y),e=>(o(),h(A,{key:e.name,value:e.name},{default:m(()=>[l(`span`,ae,n(e.name),1),e.builtin?(o(),u(`span`,oe,n(t.$t(`teams.k3x23c018`)),1)):p(``,!0)]),_:2},1032,[`value`]))),128))]),_:1},8,[`value`]),l(`div`,se,n(t.$t(`teams.k1plugon042`)),1)]),_:1},8,[`label`])):p(``,!0)]),_:1})]),_:1},8,[`open`,`title`,`ok-text`,`cancel-text`,`onOk`])}}}),[[`__scopeId`,`data-v-998f66e7`]]),{__name:`WorkshopTeamsTeamCreateModal`}),le=Object.assign(a({__name:`TeamDeployModal`,props:f({team:{},channels:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:[`update:open`],setup(t){let n=t,a=i(t,`open`),{deployChannelId:s,deploying:l,submit:u}=U({open:a,teamId:()=>n.team?.id});return(n,i)=>{let d=w,f=S,p=C,g=x;return o(),h(g,{open:a.value,"onUpdate:open":i[1]||=e=>a.value=e,title:n.$t(`teams.k1c0o6oe030`,{p0:t.team?.name??``}),"confirm-loading":e(l),"ok-text":n.$t(`teams.deployOk`),"cancel-text":n.$t(`common.cancel`),onOk:e(u)},{default:m(()=>[c(p,{layout:`vertical`},{default:m(()=>[c(f,{label:n.$t(`teams.targetChannelLabel`)},{default:m(()=>[c(d,{value:e(s),"onUpdate:value":i[0]||=e=>r(s)?s.value=e:null,options:t.channels.map(e=>({value:e.id,label:e.name}))},null,8,[`value`,`options`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`open`,`title`,`confirm-loading`,`ok-text`,`cancel-text`,`onOk`])}}}),{__name:`WorkshopTeamsTeamDeployModal`}),ue={class:`plug-source`},de={class:`plug-text`},fe={class:`plug-name`},pe={class:`aw-mono`},$={key:0,class:`plug-builtin-tag`},me={class:`plug-desc`},he={key:0,class:`plug-hint`},ge=Object.assign(L(a({__name:`TeamPluginModal`,props:f({team:{}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:[`update:open`],setup(t){let r=t,a=i(t,`open`),{rows:f,source:_,loading:v,saving:y,toggle:b}=G({open:a,teamId:()=>r.team?.id});return(r,i)=>{let S=I,C=F,w=x;return o(),h(w,{open:a.value,"onUpdate:open":i[0]||=e=>a.value=e,title:r.$t(`teams.k1plugon040`,{p0:t.team?.name??``}),footer:null},{default:m(()=>[c(C,{spinning:e(v)},{default:m(()=>[l(`p`,ue,[e(_)===`explicit`?(o(),u(d,{key:0},[g(n(r.$t(`teams.k1plugon045`)),1)],64)):(o(),u(d,{key:1},[g(n(r.$t(`teams.k1plugon044`)),1)],64))]),(o(!0),u(d,null,s(e(f),t=>(o(),u(`div`,{key:t.name,class:`plug-row`},[l(`div`,de,[l(`div`,fe,[l(`span`,pe,n(t.name),1),t.builtin?(o(),u(`span`,$,n(r.$t(`teams.k3x23c018`)),1)):p(``,!0)]),l(`div`,me,n(t.description||`—`),1)]),c(S,{checked:t.enabled,size:`small`,loading:e(y)===t.name,onChange:n=>e(b)(t,n===!0)},null,8,[`checked`,`loading`,`onChange`])]))),128)),e(f).length===0&&!e(v)?(o(),u(`div`,he,n(r.$t(`teams.k1plugon046`)),1)):p(``,!0)]),_:1},8,[`spinning`])]),_:1},8,[`open`,`title`])}}}),[[`__scopeId`,`data-v-2459d0b0`]]),{__name:`WorkshopTeamsTeamPluginModal`}),_e={class:`page`},ve={class:`head`},ye={class:`sub`},be={class:`toolbar`},xe={key:0,class:`admin-note`},Se={class:`grid`},Ce=L(a({__name:`teams`,setup(t){let{t:i}=y();R({layout:`default`});let{teams:a,channels:f,loading:x,load:S,memberOptions:C,filter:w,shown:T,canWrite:E,visTag:D,isAdmin:O}=K(),{toggleVisibility:k,removeMember:A,removeTeam:M}=B({reload:S}),{createOpen:N,addOpen:P,addTeam:I,openAdd:L,deployOpen:z,deployTeam:V,openDeploy:H,plugOpen:U,plugTeam:G,openPlugins:J}=W();return v({title:()=>i(`titles.teams`)}),(t,i)=>{let v=b,y=j,R=ee,B=F;return o(),u(`div`,_e,[l(`div`,ve,[l(`div`,null,[l(`h2`,null,`AgentTeam `+n(t.$t(`teams.k3svl8y028`)),1),l(`p`,ye,n(t.$t(`teams.k12gl4wn008`)),1)]),c(y,null,{default:m(()=>[c(v,{onClick:i[0]||=n=>(`navigateTo`in t?t.navigateTo:e(_))(`/workshop`)},{default:m(()=>[g(n(t.$t(`teams.krpx6qa009`)),1)]),_:1}),c(v,{type:`primary`,onClick:i[1]||=e=>N.value=!0},{default:m(()=>[g(n(t.$t(`teams.k1efmuyx002`)),1)]),_:1})]),_:1})]),l(`div`,be,[c(R,{value:e(w),"onUpdate:value":i[2]||=e=>r(w)?w.value=e:null,size:`small`,options:[{value:`all`,label:t.$t(`chips.chipAll`,{n:e(a).length})},{value:`mine`,label:t.$t(`chips.mine`)},{value:`public`,label:t.$t(`chips.public`)},{value:`builtin`,label:t.$t(`chips.builtin`)}]},null,8,[`value`,`options`]),e(O)?(o(),u(`span`,xe,[i[8]||=l(`span`,{class:`i-tabler-shield-check`},null,-1),g(` `+n(t.$t(`teams.k1bpgi8h010`)),1)])):p(``,!0)]),c(B,{spinning:e(x)},{default:m(()=>[l(`div`,Se,[(o(!0),u(d,null,s(e(T),t=>(o(),h(ie,{key:t.id,team:t,vis:e(D)(t),"can-write":e(E)(t),onToggleVisibility:e(k),onDeploy:e(H),onPlugins:e(J),onRemove:e(M),onAddMember:e(L),onRemoveMember:e(A)},null,8,[`team`,`vis`,`can-write`,`onToggleVisibility`,`onDeploy`,`onPlugins`,`onRemove`,`onAddMember`,`onRemoveMember`]))),128)),e(T).length===0?(o(),u(`div`,{key:0,class:`card placeholder`,onClick:i[3]||=e=>N.value=!0},[i[9]||=l(`span`,{class:`i-tabler-plus big`},null,-1),l(`span`,null,n(t.$t(`teams.k6cbbgf014`)),1)])):p(``,!0)])]),_:1},8,[`spinning`]),c(ce,{open:e(N),"onUpdate:open":i[4]||=e=>r(N)?N.value=e:null,onCreated:e(S)},null,8,[`open`,`onCreated`]),c(q,{open:e(P),"onUpdate:open":i[5]||=e=>r(P)?P.value=e:null,team:e(I),"member-options":e(C),onAdded:e(S)},null,8,[`open`,`team`,`member-options`,`onAdded`]),c(le,{open:e(z),"onUpdate:open":i[6]||=e=>r(z)?z.value=e:null,team:e(V),channels:e(f)},null,8,[`open`,`team`,`channels`]),c(ge,{open:e(U),"onUpdate:open":i[7]||=e=>r(U)?U.value=e:null,team:e(G)},null,8,[`open`,`team`])])}}}),[[`__scopeId`,`data-v-4808e7ff`]]);export{Ce as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{g as e}from"./CavpkQb0.js";import{t}from"./JgheoP3e.js";import{t as n}from"./Crbir9cT.js";var r=`__deviceTwins`;function i(){let r=[],i=e({twins:r,loaded:!1,error:``,async load(){return i.__loading||=(async()=>{try{let e=await n({base:`/api/workshop/device-twins`,retries:2});i.twins.splice(0,i.twins.length,...e?.twins??[]),i.loaded=!0,i.error=``}catch(e){i.loaded=!1,i.error=t(e)}finally{i.__loading=null}})(),i.__loading},applyRemote(e){let t=i.twins.findIndex(t=>t.id===e.id);t>=0?Object.assign(i.twins[t],e):i.twins.push({...e})},removeRemote(e){let t=i.twins.findIndex(t=>t.id===e);t>=0&&i.twins.splice(t,1)},byId(e){return r.find(t=>t.id===e)},async create(e){let t=await n({base:`/api/workshop/device-twins`,init:{method:`POST`,body:JSON.stringify(e)}});return i.loaded=!1,await i.load(),t.twin},async update(e,t){let r=await n({base:`/api/workshop/device-twins/${e}`,init:{method:`PATCH`,body:JSON.stringify(t)}});return i.loaded=!1,await i.load(),r.twin},async control(e,t,r){let a=await n({base:`/api/workshop/device-twins/${e}/control`,init:{method:`POST`,body:JSON.stringify({command:t,args:r??{}})}});return i.loaded=!1,await i.load(),a.twin},async pushTelemetry(e,t){let r=await n({base:`/api/workshop/device-twins/${e}/telemetry`,init:{method:`POST`,body:JSON.stringify({telemetry:t})}});return i.loaded=!1,await i.load(),r.twin},async remove(e){await n({base:`/api/workshop/device-twins/${e}`,init:{method:`DELETE`}}),i.loaded=!1,await i.load()}});return i}function a(){let e=globalThis;e[r]||(e[r]=i());let t=e[r];return t.load(),t}export{a as t};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cBI0JqsV.js","./BBrRELH32.js","./CWKEp1wx2.js","./BrRX-l9B2.js","./Ckafrjnw2.js","./BGkumHZ32.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{N as e,S as t,dt as n,ft as r,g as i,mt as a,u as o,v as s}from"./CavpkQb0.js";import{D as c,H as l,P as u,Q as d,R as f,S as p,V as m,W as h,b as g,d as _,et as v,f as y,h as b,i as x,j as S,k as C,m as w,nt as T,p as E,rt as D,v as O,y as k}from"./ByMj6e7s.js";import{c as A,d as j,l as M,s as N,t as P,u as F}from"./Dqz5HiXa.js";import{t as I}from"./HclGiUj8.js";import{n as L}from"./Cnrmlixo.js";import{t as R}from"./RAqsw632.js";import{t as ee}from"./36oeS8_R.js";import{t as z}from"./CI2yXRr42.js";import{t as B}from"./Nw_6OpQZ2.js";import{t as V}from"./BDNMzG2s2.js";import{t as H}from"./BBrRELH32.js";import{C as U,L as W,N as G,O as K,St as te,b as q,dt as J,et as Y,l as X,t as Z,v as ne,y as re,z as ie}from"./BrRX-l9B2.js";import{t as ae}from"./DlUQa0wn.js";import{n as oe}from"./Bfe2qOYs.js";import{o as se,t as ce}from"./DWsgRq2c.js";import{t as le}from"./C_sjV3Ee.js";import{t as Q}from"./JgheoP3e.js";import{r as ue,t as de}from"./Bl5dYv4m.js";import{t as fe}from"./DxagrjB8.js";import{t as pe}from"./D6lZftfy.js";import{a as me,o as he,r as ge}from"./Du9v6qGB2.js";import{t as _e}from"./CT-vTjcG.js";var ve=`__characterAssets`;function ye(e){return{id:e.id,name:e.name,file:e.file,frames:e.sheet?.frames??4,frameWidth:e.sheet?.frameWidth??48,frameHeight:e.sheet?.frameHeight??88,kind:e.kind===`glb`?`glb`:e.kind===`dev`?`dev`:`sheet`,builtin:e.author===`system`,applied:(e.appliedTo?.length??0)>0}}function be(){let e=[],t=[{id:`knight`,name:`灰羽骑士`,file:`/assets/game/character/knight.png`,frames:4,frameWidth:48,frameHeight:88,kind:`sheet`,builtin:!0,applied:!1},{id:`mage`,name:`紫晶法师`,file:`/assets/game/character/mage.png`,frames:4,frameWidth:48,frameHeight:88,kind:`sheet`,builtin:!0,applied:!1},{id:`bot`,name:`青枢机械`,file:`/assets/game/character/bot.png`,frames:4,frameWidth:48,frameHeight:88,kind:`sheet`,builtin:!0,applied:!1},{id:`hero-3d`,name:`标准员工模型`,file:`/assets/game/character/hero-3d.glb`,frames:1,frameWidth:0,frameHeight:0,kind:`glb`,builtin:!0,applied:!1,hint:`默认员工 3D 模型`},{id:`yangyang-walk`,name:`杨杨(走路)`,file:`/assets/game/character/yangyang-walk.glb`,frames:1,frameWidth:0,frameHeight:0,kind:`glb`,builtin:!0,applied:!1,hint:`自定义角色:骨骼走路动画(剪辑 WALK;文件较大,建议少量绑定)`},{id:`device-3d`,name:`工业泵设备`,file:`/assets/game/character/device-3d.glb`,frames:1,frameWidth:0,frameHeight:0,kind:`dev`,builtin:!0,applied:!1,hint:`数字孪生实体模型(拖入场景生成设备)`}],n=[];try{let e=Object.assign({});for(let[t,r]of Object.entries(e)){let e=t.split(`/`).pop()??``,i=`dev-folder-`+e.replace(/\.glb$/i,``),a=r.replace(/^\/public\//,`/`);n.push({id:i,name:e.replace(/\.glb$/i,``).replace(/[-_]/g,` `),file:a,frames:1,frameWidth:0,frameHeight:0,kind:`dev`,builtin:!0,applied:!1,hint:`设备实体(拖入场景生成数字孪生)`})}}catch{}let r=(e=!0)=>{let t=typeof document<`u`?document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``:``,n={},r=t||``;return r&&(n.authorization=`Bearer ${decodeURIComponent(r)}`),e&&(n[`content-type`]=`application/json`),n},a=i({models:e,loaded:!1,loading:!1,error:``,async load(){if(!(a.loading||a.loaded)){a.loading=!0;try{let[e,i]=await Promise.allSettled([fetch(`/api/workshop/assets/character`,{headers:r()}),fetch(`/api/workshop/assets/devices`,{headers:r()})]),o=e.status===`fulfilled`?await e.value.json().catch(()=>({})):{},s=i.status===`fulfilled`?await i.value.json().catch(()=>({})):{},c=o?.data?.assets??[],l=(s?.data?.devices??[]).map(e=>({id:e.id,name:e.name,file:e.file,frames:1,frameWidth:0,frameHeight:0,kind:`dev`,builtin:!0,applied:!1,hint:`设备实体(拖入场景生成数字孪生)`,hFactor:typeof e.defaultScale==`number`&&e.defaultScale>0?e.defaultScale:1})),u=new Set(t.map(e=>e.file)),d=(s?.data?.characters??[]).filter(e=>!u.has(e.file)).map(e=>({id:e.id,name:e.name,file:e.file,frames:1,frameWidth:0,frameHeight:0,kind:`glb`,builtin:!0,applied:!1,hint:`角色 3D 模型(在频道成员管理中设置)`})),f=[],p=new Set;for(let e of c)f.push(ye(e)),p.add(e.id);for(let e of l)p.has(e.id)||(f.push(e),p.add(e.id));for(let e of d)p.has(e.id)||(f.push(e),p.add(e.id));for(let e of t)p.has(e.id)||f.push(e);for(let e of n)p.has(e.id)||f.push(e);a.models.splice(0,a.models.length,...f),a.loaded=!0,a.error=``}catch(e){a.loaded=!1,a.error=Q(e)}finally{a.loading=!1}}},byId(t){return e.find(e=>e.id===t)},async upload(e,t){let n=new FormData;n.append(`file`,e),n.append(`name`,t.name??e.name.replace(/\.[^.]+$/,``)),n.append(`workspaceId`,t.workspaceId??``),n.append(`kind`,t.kind??`sheet`),n.append(`frameWidth`,String(t.frameWidth??48)),n.append(`frameHeight`,String(t.frameHeight??88)),n.append(`frames`,String(t.frames??4));let i=await fetch(`/api/workshop/assets/character`,{method:`POST`,headers:r(!1),body:n}),o=await i.json().catch(()=>({}));if(!i.ok||!o?.data?.asset)throw Error(o?.message??`上传失败`);return a.loaded=!1,await a.load(),ye(o.data.asset)},async remove(e){let t=await fetch(`/api/workshop/assets/character/${e}`,{method:`DELETE`,headers:r()}),n=await t.json().catch(()=>({}));if(!t.ok)throw Error(n?.message??`删除失败`);return a.loaded=!1,await a.load(),{used:n?.data?.used??0}},async uploadDevice(e,t){let n=new FormData;n.append(`file`,e),t&&n.append(`name`,t);let i=await fetch(`/api/workshop/assets/devices`,{method:`POST`,headers:r(!1),body:n}),o=await i.json().catch(()=>({}));if(!i.ok||!o?.data?.asset)throw Error(o?.message??`设备模型上传失败`);a.loaded=!1,await a.load();let s=o.data.asset;return{id:s.id,name:s.name,file:s.file,frames:1,frameWidth:0,frameHeight:0,kind:`dev`,builtin:!1,applied:!1,hint:`设备实体(拖入场景生成数字孪生)`}},async removeDevice(e){let t=e.replace(/^dev-folder-/,``),n=await fetch(`/api/workshop/assets/devices/${encodeURIComponent(t)}`,{method:`DELETE`,headers:r()}),i=await n.json().catch(()=>({}));if(!n.ok)throw Error(i?.message??`设备模型删除失败`);a.loaded=!1,await a.load()},async bind(e,t,n){let i=await fetch(`/api/workshop/channels/${e}/agents/${t}/model`,{method:`PATCH`,headers:r(),body:JSON.stringify({modelRef:n})}),a=await i.json().catch(()=>({}));if(!i.ok)throw Error(a?.message??`绑定失败`)}});return a}function xe(){let e=globalThis;e[ve]||(e[ve]=be());let t=e[ve];return t.load(),t}var $=`__sceneLayouts`;function Se(e=!0){let t=typeof document<`u`?document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``:``,n={};return t&&(n.authorization=`Bearer ${decodeURIComponent(t)}`),e&&(n[`content-type`]=`application/json`),n}function Ce(){let e=null,t=e=>new Promise(t=>setTimeout(t,e)),n=i({layouts:{},loaded:!1,loading:!1,error:``,rev:0,async load(){return e||=r().finally(()=>{e=null}),e},byChannel(e){return n.layouts[e]},async save(e,r){n.layouts[e]={channelId:e,x:r.x,z:r.z,radiusX:r.radiusX,radiusZ:r.radiusZ,shape:r.shape??`ellipse`,rotationY:r.rotationY??0,updatedAt:oe()},n.rev++;let i=null;for(let a=0;a<3;a++)try{let t=await fetch(`/api/workshop/scene/layouts/${e}`,{method:`PUT`,headers:Se(),body:JSON.stringify(r)}),i=await t.json().catch(()=>({}));if(!t.ok||!i?.data?.layout)throw Error(i?.message??`保存频道布局失败`);return n.layouts[e]=i.data.layout,i.data.layout}catch(e){i=e instanceof Error?e:Error(String(e)),a<2&&await t(500*(a+1))}throw i??Error(`保存频道布局失败`)},async remove(e){let t=await fetch(`/api/workshop/scene/layouts/${e}`,{method:`DELETE`,headers:Se()}),r=await t.json().catch(()=>({}));if(!t.ok)throw Error(r?.message??`移除频道放置失败`);let i=Object.fromEntries(Object.entries(n.layouts).filter(([t])=>t!==e));n.layouts=i,n.rev++}});async function r(){n.loading=!0;let e=``;try{for(let r=0;r<3;r++)try{let e=await fetch(`/api/workshop/scene/layouts`,{headers:Se()});if(!e.ok)throw Error(`HTTP ${e.status}`);let t=(await e.json().catch(()=>({})))?.data?.layouts??[],r={};for(let e of t)r[e.channelId]=e;n.layouts=r,n.loaded=!0,n.error=``,n.rev++;return}catch(n){e=Q(n),r<2&&await t(400*(r+1))}n.loaded=!1,n.error=e}finally{n.loading=!1}}return n}function we(){let e=globalThis;e[$]||(e[$]=Ce());let t=e[$];return t.load(),t}function Te(){let{isDesktop:e}=ae(),t=s(null),n=s(!1);function r(e){t.value=t.value===e?null:e}function i(){t.value=null}function a(e){e.key===`Escape`&&t.value&&i()}return f(()=>window.addEventListener(`keydown`,a)),u(()=>window.removeEventListener(`keydown`,a)),v(e,e=>{e&&(t.value=null,n.value=!1)}),{isDesktop:e,sheetOpen:t,dockOpen:n,toggleSheet:r,closeSheet:i,onSheetKey:a}}function Ee(e){let{props:t,entities:n,wsStore:r,sceneLayouts:i,characterAssets:a,scene3dRef:o,errorText:c,saveState:l}=e,{t:u}=L(),d=s(null),f=s(null);function p(e){d.value=e,f.value=e?o.value?.getChannelLayout(e)??null:null}async function m(){if(!d.value||!f.value)return;let e=f.value,t={x:e.x,z:e.z,radiusX:e.radiusX,radiusZ:e.radiusZ,shape:e.shape??`ellipse`,rotationY:e.rotationY??0};try{await i.save(d.value,t),l.value={state:`saved`,at:Date.now()}}catch(e){l.value={state:`error`,at:Date.now()},c.value=Q(e)}}async function h(){if(d.value)try{await i.remove(d.value),o.value?.removeChannel(d.value),p(null)}catch(e){c.value=Q(e)}}function g(){!d.value||!f.value||(o.value?.updateChannelLayout(d.value,f.value),l.value={state:`dirty`,at:Date.now()})}let v=s(``);function y(e){let t=o.value;if(t){if(e.placed){t.focusChannel(e.channelId),p(e.channelId);return}v.value=u(`townView.k7rvbts159`),window.setTimeout(()=>{v.value=``},2600)}}function b(e,t,r){let a=o.value;if(!a)return!1;let s=j().find(t=>t.channelId===e),c=s?.channelName??n.channels[e]?.name??e.slice(0,8),d=s?.agents.length??n.agents[e]?.length??0;return a.getChannelLayout(e)?(v.value=u(`townView.kcyn0191`,{p0:c}),window.setTimeout(()=>{v.value=``},2600),a.focusChannel(e),p(e),!1):(a.dropChannelOnWorld(t,r,e,c,d),i.save(e,{x:t,z:r,radiusX:Math.max(120,110+d*18),radiusZ:Math.max(80,70+d*14),shape:`ellipse`,rotationY:0}).then(()=>{l.value={state:`saved`,at:Date.now()}}).catch(()=>{l.value={state:`error`,at:Date.now()}}),a.focusChannel(e),!0)}let x=s(`boundary`),S=_(()=>d.value?j().find(e=>e.channelId===d.value)?.agents??[]:[]);async function C(e,t){if(d.value)try{await a.bind(d.value,e,t),o.value?.swapAgentModel(e,t)}catch(e){c.value=Q(e)}}function w(e){x.value=e}let T=s(0),E=_(()=>(T.value,D().map(e=>({channelId:e,name:n.channels[e]?.name??e.slice(0,8),agentCount:(n.agents[e]??[]).length,placed:o.value?.hasChannel(e)??!1,color:k(e)}))));function D(){let e=[];for(let t of O()??[])for(let n of t.channelIds??[])e.includes(n)||e.push(n);return e.includes(t.channelId)||e.push(t.channelId),e}function O(){return r.workspaces}function k(e){return X(e)}function A(e,t){e.dataTransfer&&(e.dataTransfer.setData(`application/x-aw-channel`,t),e.dataTransfer.setData(`text/plain`,t),e.dataTransfer.effectAllowed=`copy`)}function j(){let e=[];for(let[t,r]of Object.entries(n.channels)){let i=(n.agents[t]??[]).map(e=>{let r=e.currentTaskId?(n.tasks[t]??[]).find(t=>t.id===e.currentTaskId):void 0;return{agentId:e.agentId,name:e.name,role:e.role,harness:e.harness,state:e.state,currentTaskId:e.currentTaskId??null,currentTaskTitle:r?.title??null,currentTaskProgress:e.currentTaskProgress??r?.progress??null,modelRef:e.modelRef??null,homeX:e.config?.homeX??null,homeZ:e.config?.homeZ??null,range:e.config?.range??null}});e.push({channelId:t,channelName:r.name,agents:i})}return e}return{selectedChannel:d,boundaryDraft:f,onSelectChannel:p,saveChannelLayout:m,removeChannelFromScene:h,applyBoundaryDraft:g,dockHint:v,onDockCardClick:y,dropChannelAt:b,channelPanelTab:x,channelMembers:S,bindMemberModel:C,openChannelTab:w,dockRev:T,dockChannels:E,hashColor:k,onChannelDragStart:A,buildTownInput:j}}function De(){let e=i({}),t=`aw-town-panel-pos`;function n(){if(!(typeof localStorage>`u`))try{let n=JSON.parse(localStorage.getItem(t)||`{}`);for(let t of Object.keys(n))n[t]&&Number.isFinite(n[t].x)&&(e[t]=n[t])}catch{}}function r(){try{localStorage.setItem(t,JSON.stringify(e))}catch{}}let a=null;function o(t,n){let i=t.currentTarget,o=i.closest(`.drag-panel`),s=o?.offsetParent??i.closest(`.town-view`);if(!o||!s)return;t.preventDefault();let c=o.getBoundingClientRect(),l=s.getBoundingClientRect();o.style.left=`${c.left-l.left}px`,o.style.top=`${c.top-l.top}px`,o.style.bottom=`auto`,o.style.transform=`none`,e[n]={x:c.left-l.left,y:c.top-l.top},a={frame:s,panel:o,offX:t.clientX-c.left,offY:t.clientY-c.top},document.body.style.userSelect=`none`,document.body.style.cursor=`grabbing`;let u=t=>{let r=a;if(!r)return;let i=r.frame.getBoundingClientRect(),o=t.clientX-r.offX-i.left,s=t.clientY-r.offY-i.top,c=r.panel.offsetWidth,l=Math.max(-c+90,Math.min(o,i.width-30)),u=Math.max(4,Math.min(s,i.height-34));r.panel.style.left=`${l}px`,r.panel.style.top=`${u}px`,e[n]={x:l,y:u}},d=()=>{a=null,document.body.style.userSelect=``,document.body.style.cursor=``,window.removeEventListener(`pointermove`,u),window.removeEventListener(`pointerup`,d),r()};window.addEventListener(`pointermove`,u),window.addEventListener(`pointerup`,d)}return f(()=>n()),{panelPos:e,restorePanelPos:n,savePanelPos:r,onPanelGripDown:o}}function Oe(e){let{props:t,entities:n,http:r,characterAssets:i,deviceTwins:a,scene3dRef:o,selected:c,errorText:l,saveState:d,onSelectChannel:p}=e,{t:m}=L(),h=s(`browse`),g=s(!0);function y(){h.value=h.value===`browse`?`edit`:`browse`,o.value?.setMode(h.value),h.value===`browse`&&(k(),p(null)),P.value=!1}let b=s(`translate`);function x(e){b.value=e,o.value?.setTransformMode(e)}v(()=>[c.value,h.value],([e,t])=>{t===`edit`&&e?.kind===`device`&&o.value?.setTransformMode(b.value)});function S(e){let t=e.target;if(t&&(t.tagName===`INPUT`||t.tagName===`SELECT`||t.tagName===`TEXTAREA`||t.isContentEditable))return;let n=e.key.toLowerCase();if(e.key===`Escape`){k();return}h.value===`edit`&&c.value?.kind===`device`&&(n===`g`?x(`translate`):n===`r`?x(`rotate`):n===`s`?x(`scale`):(e.key===`Delete`||e.key===`Backspace`)&&W())}function C(){g.value=!g.value,o.value?.setSnap(g.value)}function w(e,n,i,a){let o=n||t.channelId;return o?r.request({method:`PATCH`,url:`/workshop/channels/${o}/agents/${e}/position`,data:{x:i,z:a}}).catch(()=>null):Promise.resolve()}function T(e,n,i){let a=n||t.channelId;return a?r.request({method:`PATCH`,url:`/workshop/channels/${a}/agents/${e}/range`,data:{range:i}}).catch(()=>null):Promise.resolve()}function E(){if(h.value!==`edit`){K();return}o.value?.persistAllDevices()}function D(e){c.value&&o.value?.setModelScale(c.value.id,e,c.value.kind)}function O(e){c.value&&o.value?.persistScale(c.value.kind,c.value.id)}function k(){c.value=null}let A=_(()=>i.models.filter(e=>e.kind===`glb`)),j=_(()=>i.models.filter(e=>e.kind===`dev`)),M=s(``),N=s(null),P=s(!1);v(()=>c.value,e=>{if(M.value=e?.kind===`device`?o.value?.getDeviceName?.(e.id)??``:``,N.value=null,e?.kind===`agent`){let t=o.value?.getAgentRange?.(e.id);N.value=t?{radiusX:t.radiusX,radiusZ:t.radiusZ,shape:t.shape}:null,P.value=o.value?.isRangeDrawing(e.id)??!1}else P.value=!1});let F=_(()=>{let e=c.value;if(!e||e.kind!==`agent`)return``;let t=o.value?.getAgentRange?.(e.id);return t?`${t.shape===`rect`?m(`townView.k43u0g050`):m(`townView.k414bc049`)} ${Math.round(t.radiusX)} × ${Math.round(t.radiusZ)}`:m(`townView.k1v1icf6160`)});function I(){let e=c.value;if(!(!e||e.kind!==`agent`)){if(P.value){o.value?.cancelRangeDraw(),P.value=!1;return}o.value?.startRangeDraw(e.id),P.value=!0}}function R(){!c.value||c.value.kind!==`agent`||!N.value||(o.value?.setAgentRangeScene(c.value.id,N.value),d.value={state:`dirty`,at:Date.now()})}function ee(){!c.value||c.value.kind!==`agent`||o.value?.commitAgentRange(c.value.id)}function z(){let e=c.value;!e||e.kind!==`agent`||(o.value?.clearAgentRange(e.id),N.value=null,P.value=!1)}function B(){if(!c.value||c.value.kind!==`device`)return;let e=c.value.id,t=M.value.trim();t&&(o.value?.renameDevice(e,t),a.update(e,{name:t}).catch(e=>{l.value=Q(e)}))}async function V(e){let t=c.value;if(!t||t.kind!==`agent`)return;let r=t.id,a=n.agents?Object.keys(n.agents).find(e=>(n.agents[e]??[]).some(e=>e.agentId===r)):void 0;if(!a){l.value=m(`townView.kpplr16161`);return}try{await i.bind(a,r,e),o.value?.swapAgentModel(r,e)}catch(e){l.value=Q(e)}}async function H(e){let t=c.value;if(!(!t||t.kind!==`device`)){o.value?.swapDeviceModel(t.id,e);try{await a.update(t.id,{modelRef:e})}catch(e){l.value=Q(e)}}}let U=s(``);function W(){let e=c.value;if(!(!e||e.kind!==`device`)){if(U.value!==e.id){U.value=e.id,window.setTimeout(()=>{U.value===e.id&&(U.value=``)},3e3);return}U.value=``,o.value?.removeDevice(e.id).then(()=>k()).catch(e=>{l.value=Q(e)})}}let G=null;function K(){l.value=m(`townView.kt6xb5p162`),G&&clearTimeout(G),G=setTimeout(()=>{l.value=``},2600)}let{panelPos:te,onPanelGripDown:q}=De(),J=s(null),Y=s(`std`);function X(e){Y.value=e.target.value,o.value?.setViewPreset(Y.value)}function Z(){document.fullscreenElement?document.exitFullscreen():J.value?.requestFullscreen?.()}return f(()=>window.addEventListener(`keydown`,S)),u(()=>window.removeEventListener(`keydown`,S)),{mode:h,snap:g,tMode:b,setTMode:x,toggleMode:y,toggleSnap:C,onTownKey:S,updateAgentHome:w,updateAgentRange:T,saveLayout:E,runHint:K,onScaleInput:D,onScaleCommit:O,closeScale:k,agentModels:A,deviceModels:j,objNameDraft:M,agentRangeDraft:N,agentDrawingRange:P,agentRangeStatusText:F,onToggleRangeDraw:I,applyAgentRangeDraft:R,onAgentRangeCommit:ee,onClearAgentRange:z,onObjNameCommit:B,bindAgentModel:V,bindDeviceModel:H,deviceDeleteArmed:U,removeSelectedDevice:W,panelPos:te,onPanelGripDown:q,stageRef:J,viewPreset:Y,onViewPreset:X,fullscreenStage:Z}}function ke(e){let{selected:t,entities:n,scene3dRef:r}=e,{t:a}=L(),o=_(()=>{let e=t.value;if(!e||e.kind!==`agent`)return[];let n=b.get(e.id);if(!n||n.length===0)return[];let r=p.value.length?p.value[p.value.length-1]?.at??0:0;return n.filter(e=>e.at>r)}),c=_(()=>!t.value||t.value.kind!==`agent`?``:r.value?.getAgentName?.(t.value.id)??a(`townView.k3xdvm125`)),l=_(()=>{let e=t.value;if(!e||e.kind!==`agent`)return null;for(let t of Object.values(n.agents)){let n=(t??[]).find(t=>t.agentId===e.id);if(n)return n}return null}),u=_(()=>l.value?.role===`lead`?`Leader`:`Worker`),d=_(()=>l.value?.role===`lead`?`LEADER`:`WORKER`),f=_(()=>{let e=l.value?.state;return a(e===`busy`?`townView.k3n4l5f163`:e===`stopped`?`townView.k3n58d1164`:`townView.k3zcvb115`)}),p=s([]),m=s(!1),h=new Map,g=s(null);function y(e){g.value=e}let b=i(new Map);function x(e,t,n,r,i){let a=typeof r==`number`?r:r?Date.parse(String(r)):Date.now();if(!Number.isFinite(a)||a<=0)return;let o=b.get(e);o||(o=[],b.set(e,o));let s=o[o.length-1];s&&s.text===n&&Math.abs(a-s.at)<1500||(o.push({id:`live-${i??a}-${o.length}`,agentId:e,text:n,kind:t,at:a,live:!0}),o.length>80&&o.splice(0,o.length-80))}function C(){return typeof document>`u`?``:document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``}function w(e){for(let t of Object.keys(n.agents))if((n.agents[t]??[]).some(t=>t.agentId===e))return t}async function T(e,t,n=!1){let r=h.get(e);if(!n&&r&&Date.now()-r.at<3e4){p.value=r.rows;return}m.value=!0;try{let n=C(),r=`/api/workshop/channels/${t}/events?limit=500&excludeTypes=agent.delta`,i=await(await fetch(r,{headers:n?{authorization:`Bearer ${decodeURIComponent(n)}`}:{}})).json().catch(()=>null),a=i?.data?.items??(Array.isArray(i?.data)?i.data:[]),o=[];for(let t of a){let n=H(t)?.bubble;if(!n||n.agentId!==e)continue;let r=t.at,i=typeof r==`number`?r:r?Date.parse(String(r)):0;o.push({id:`${String(t.seq??o.length)}-${o.length}`,agentId:n.agentId,text:n.text,kind:n.kind,at:i,live:!1})}o.sort((e,t)=>e.at-t.at),h.set(e,{rows:o,at:Date.now()}),p.value=o}catch{p.value=[]}finally{m.value=!1}}function E(){let e=t.value;if(!e||e.kind!==`agent`)return;let n=w(e.id);n&&T(e.id,n,!0)}v(()=>t.value,e=>{if(!e||e.kind!==`agent`){p.value=[];return}let t=w(e.id);t?T(e.id,t):p.value=[]},{immediate:!0});let D=_(()=>{let e=t.value;if(!e||e.kind!==`agent`)return`#35e0a0`;let n=w(e.id);return n?X(n)??`#35e0a0`:`#35e0a0`});function O(e){switch(e){case`artifact`:return a(`townView.k3w9q9165`);case`delta`:return`……`;case`info`:return a(`townView.k44xa7166`);case`error`:return a(`townView.k3zbgf167`);default:return``}}function k(e){if(!e||!Number.isFinite(e)||e<=0)return`--:--:--`;let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`}return v(()=>p.value.length+o.value.length,async()=>{await S();let e=g.value;e&&(e.scrollTop=e.scrollHeight)}),{agentChatRows:o,agentChatTitle:c,selectedAgentMeta:l,selectedAgentRoleLabel:u,selectedAgentRoleTag:d,agentChatStateLabel:f,agentHistory:p,historyLoading:m,appendLiveChat:x,onRefreshHistory:E,agentChatColor:D,chatKindLabel:O,fmtTime:k,setChatScroll:y}}function Ae(e){let{selected:t,daq:n,dcw:r}=e;function a(e){return Math.max(0,Math.ceil((Date.parse(e.expiresAt)-Date.now())/1e3))}let o=()=>{let e=document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``;return{"content-type":`application/json`,authorization:`Bearer ${decodeURIComponent(e)}`}},c=s([]),l=s(`dcw`),d=s(``),f=s(`auto`),p=s([]),m=i({}),h=null;async function g(){let e=t.value?.id;if(!(t.value?.kind!==`agent`||!e))try{let t=await fetch(`/api/workshop/agent-tools/bindings?agentId=${encodeURIComponent(e)}`,{headers:o()}).then(e=>e.json());c.value=t.data?.bindings??[]}catch{}}async function _(){let e=t.value?.id;if(!(t.value?.kind!==`agent`||!e))try{let t=await fetch(`/api/workshop/agent-tools/approvals?agentId=${encodeURIComponent(e)}`,{headers:o()}).then(e=>e.json());p.value=t.data?.approvals??[]}catch{}}async function y(){!t.value?.id||!d.value||(await fetch(`/api/workshop/agent-tools/bindings`,{method:`POST`,headers:o(),body:JSON.stringify({agentId:t.value.id,nodeId:d.value,kind:l.value,mode:f.value})}),d.value=``,await g())}async function b(e){await fetch(`/api/workshop/agent-tools/bindings/${e}`,{method:`DELETE`,headers:o()}),await g()}async function x(e,t){await fetch(`/api/workshop/agent-tools/bindings/${e}`,{method:`PATCH`,headers:o(),body:JSON.stringify({mode:t})}),await g()}async function S(e,t){await fetch(`/api/workshop/agent-tools/approvals/${e}/decide`,{method:`POST`,headers:o(),body:JSON.stringify({approved:t,comment:m[e]??``})}),Reflect.deleteProperty(m,e),await _()}v(()=>t.value?.id,e=>{h&&=(clearInterval(h),null),t.value?.kind===`agent`&&e&&(g(),_(),h=R(()=>{_()},1e3))},{immediate:!0}),u(()=>{h&&clearInterval(h)});function C(e){return e.kind===`dcw`?r.nodeById(e.nodeId)?.name??e.nodeId:n.nodeById(e.nodeId)?.name??e.nodeId}return{approvalRemainingSec:a,agentBindings:c,agentBindKind:l,agentBindNodeId:d,agentBindMode:f,pendingApprovals:p,approvalComments:m,bindAgentNode:y,unbindAgentNode:b,setBindingMode:x,decideApproval:S,bindingNodeName:C}}function je(){let{t:e}=L(),t=s([]),n=0,r=[e(`townView.k3ng94k170`),e(`townView.k3mi2n0171`),e(`townView.k3ncnxl172`)];function i(e,r=`warn`,i=`SYSTEM`){let a=new Date,o=[a.getHours(),a.getMinutes(),a.getSeconds()].map(e=>String(e).padStart(2,`0`)).join(`:`);t.value.unshift({id:++n,txt:e,src:i,time:o,state:0,level:r}),t.value.length>30&&t.value.pop()}let a=_(()=>t.value.filter(e=>e.state<2).length);function o(e){let n=t.value.find(t=>t.id===e);n&&(n.state=Math.min(2,n.state+1))}function c(){t.value=t.value.map(e=>({...e,state:2}))}return{alarms:t,ALARM_STATES:r,raiseAlarm:i,activeAlarmCount:a,advanceAlarm:o,clearAlarms:c}}function Me(e){let{scene3dRef:t,raiseAlarm:n}=e,{t:r}=L(),i=s(100),a=_e(`aw.twin.fpsCap`,`60`),o=[{v:`60`,label:`60`},{v:`120`,label:`120`},{v:`0`,label:`∞`}];function c(e){a.value=e,t.value?.setFpsCap(Number(e))}let l=_e(`aw.twin.quality`,`auto`),u=[{v:`auto`,label:`townView.qualityAuto`},{v:`normal`,label:`townView.qualityNormal`},{v:`hd`,label:`townView.qualityHD`},{v:`ultra`,label:`townView.qualityUltra`}];function d(e){l.value=e,t.value?.setQualityMode(e)}function f(e,t){let n=i.value/100,r=(e+t)/2;return{lo:r-(r-e)*n,hi:r+(t-r)*n}}let p=s(!1);function m(){p.value=!p.value,n(p.value?r(`townView.kb157zk173`):r(`townView.k1s9qzr9174`),p.value?`crit`:`info`,`SYSTEM`)}let h=s(1.12),g=s(1);function _(e,t,n){return`${Math.min(100,Math.max(0,(e-t)/(n-t)*100)).toFixed(1)}%`}function v(e){h.value=Number(e.target.value)/100,t.value?.setExposure(h.value)}function y(e){g.value=Number(e.target.value)/100,t.value?.setTerritoryOpacity(g.value)}function b(){t.value?.resetView(),h.value=1.12,g.value=1,t.value?.setExposure(1.12),t.value?.setTerritoryOpacity(1)}return{threshPct:i,fpsCap:a,FPS_OPTIONS:o,setFpsCap:c,qualityMode:l,QUALITY_OPTIONS:u,setQualityMode:d,alarmRange:f,estop:p,toggleEstop:m,exposure:h,tintOpacity:g,sliderPct:_,onExposureInput:v,onTintInput:y,onResetView:b}}function Ne(e){let{deviceTwins:t}=e,n=_(()=>t.twins.length),r=_(()=>t.twins.filter(e=>e.state===`running`).length),i=_(()=>t.twins.filter(e=>e.state===`idle`).length),a=_(()=>t.twins.filter(e=>e.state===`alarm`).length),o=_(()=>t.twins.filter(e=>e.state===`offline`).length),c=_(()=>{let e=t.twins.length;if(!e)return 100;let n=r.value+i.value;return Math.round(n/e*100)}),l=_(()=>c.value>=90?`#35e0a0`:c.value>=60?`#f6c453`:`#ff6b6b`),u=s(null);function d(e){u.value=e}function p(){let e=u.value;if(!e)return;let n=e.getContext(`2d`);if(!n)return;let s=t.twins.length||1,c=[{n:r.value,color:`#35e0a0`},{n:i.value,color:`#f6c453`},{n:a.value,color:`#ff6b6b`},{n:o.value,color:`#3a4a63`}];n.clearRect(0,0,118,118),n.lineWidth=12;let l=-Math.PI/2;for(let e of c){if(!e.n)continue;let t=e.n/s*Math.PI*2;n.beginPath(),n.strokeStyle=e.color,n.arc(59,59,48,l,l+t),n.stroke(),l+=t}}return v(c,()=>p()),v(()=>t.twins.length,()=>p()),f(()=>p()),{deviceCount:n,runningCount:r,idleCount:i,alarmCount:a,offlineCount:o,healthPct:c,healthTone:l,setDonutCanvas:d}}function Pe(e){let{daq:t,dcw:n,deviceTwins:r,townBus:a,sceneRef:o,scene3dRef:c,errorText:l,ready:d,blockCount:p,raiseAlarm:m}=e,{t:h}=L();function g(e){`syncDevices`in e&&e.syncDevices(x.value)}let y=e=>n.lines.find(t=>t.id===e)?.color,b=_(()=>n.nodes.map(e=>({id:e.id,workspaceId:``,name:e.name,modelRef:`dcw-${e.templateRef.startsWith(`dcw-`)?e.templateRef.slice(4):e.templateRef}`,boundAgentId:null,kind:`daq`,telemetry:{value:e.value??0},desired:{},controls:[],state:e.enabled?e.state===`error`?`alarm`:`running`:`offline`,posX:e.posX,posZ:e.posZ,lineId:e.lineId||void 0,lineColor:e.lineId?y(e.lineId):void 0,updatedAt:e.lastWriteAt??e.createdAt}))),x=_(()=>[...r.twins.filter(e=>!z(e)),...B.value,...b.value]),S=e=>x.value.find(t=>t.id===e),C=_(()=>d.value&&p.value===0&&!x.value.some(e=>typeof e.posX==`number`&&typeof e.posZ==`number`)),w=i(n.templates.map(e=>({id:e.key,name:ge(h,e),code:e.code,ch:e.ch,unit:e.unit,min:e.min,max:e.max,decimals:e.decimals,icon:e.icon})));v(()=>n.templates,e=>{e?.length&&w.splice(0,w.length,...e.map(e=>({id:e.key,name:ge(h,e),code:e.code,ch:e.ch,unit:e.unit,min:e.min,max:e.max,decimals:e.decimals,icon:e.icon})))},{immediate:!0,deep:!0});let T=_e(`aw.twin.treeOpen`,{});function E(e){T.value[e]=!T.value[e]}let D=_(()=>{let e=new Map;for(let n of t.nodes){let t=n.templateRef.startsWith(`daq-`)?n.templateRef.slice(4):n.templateRef,r=e.get(t)??[];r.push(n),e.set(t,r)}for(let t of e.values())t.sort((e,t)=>e.name.localeCompare(t.name,void 0,{numeric:!0}));return e}),O=_(()=>{let e=new Map;for(let t of n.nodes){let n=t.templateRef.startsWith(`dcw-`)?t.templateRef.slice(4):t.templateRef,r=e.get(n)??[];r.push(t),e.set(n,r)}for(let t of e.values())t.sort((e,t)=>e.name.localeCompare(t.name,void 0,{numeric:!0}));return e});async function k(e){try{let n=(D.value.get(e.id)?.length??0)+1;await t.createFromTemplate(`daq-${e.id}`,{name:`${e.name} ${String(n).padStart(2,`0`)}`}),T.value[`daq:${e.id}`]=!0}catch(e){l.value=Q(e)}}async function A(e){try{await n.createFromTemplate(`dcw-${e.id}`,{}),T.value[`dcw:${e.id}`]=!0}catch(e){l.value=Q(e)}}function j(e,t){e.dataTransfer&&(e.dataTransfer.setData(`application/x-aw-daq-node`,t.id),e.dataTransfer.setData(`text/plain`,t.id),e.dataTransfer.effectAllowed=`copy`)}function M(e,t){e.dataTransfer&&(e.dataTransfer.setData(`application/x-aw-dcw-node`,t.id),e.dataTransfer.setData(`text/plain`,t.id),e.dataTransfer.effectAllowed=`copy`)}function N(e){return!t.controller.running||!e.enabled||e.state===`offline`?`offline`:e.state===`alarm`?`alarm`:e.state===`warn`?`warn`:`running`}function P(e){return!e.enabled||e.state===`error`?`offline`:`running`}let F=i(ue.map(e=>({id:e.key,name:ge(h,e),code:e.code,ch:e.ch,unit:e.unit,base:e.base,amp:e.amp,min:e.min,max:e.max,decimals:e.decimals,icon:e.icon})));v(()=>t.templates,e=>{e?.length&&F.splice(0,F.length,...e.map(e=>({id:e.key,name:ge(h,e),code:e.code,ch:e.ch,unit:e.unit,base:e.base,amp:e.amp,min:e.min,max:e.max,decimals:e.decimals,icon:e.icon})))},{immediate:!0,deep:!0});let I=e=>{let t=e.startsWith(`daq-`)?e.slice(4):e;return F.find(e=>e.id===t)},R=e=>I(e.templateRef);function ee(e){return!t.controller.running||!e.enabled?`offline`:e.state===`alarm`?`alarm`:`running`}let z=e=>e.kind===`daq`||(e.modelRef??``).startsWith(`daq-`),B=_(()=>t.nodes.map(e=>({id:e.id,workspaceId:``,name:e.name,modelRef:`daq-${R(e)?.id??`unknown`}`,boundAgentId:null,kind:`daq`,telemetry:{value:e.value??0},desired:{},controls:[],state:ee(e),posX:e.posX,posZ:e.posZ,lineId:e.lineId||void 0,lineColor:e.lineId?y(e.lineId):void 0,updatedAt:e.lastAt??e.createdAt}))),V=s(0),H=new Map,U=new Map,W=null,G=!1;function K(){G||(G=!0,setTimeout(()=>{G=!1,V.value++},200))}function te(e){if(!e.nodeId||typeof e.value!=`number`||!Number.isFinite(e.value))return;let t=e.state??`ok`;H.set(e.nodeId,{value:e.value,state:t,atMs:Date.parse(e.at??``)||Date.now()});let n=U.get(e.nodeId);n||(n=[],U.set(e.nodeId,n)),n.push(e.value),n.length>120&&n.shift();let r=Y.get(e.nodeId);r&&r!==t&&X(e.nodeId,r,t,e.value),r!==t&&Y.set(e.nodeId,t),K()}let q=_(()=>{V.value;let e=new Map;for(let n of t.nodes){let t=R(n);if(!t)continue;let r=H.get(n.id),i=r&&(!n.lastAt||r.atMs>=Date.parse(n.lastAt)),a=i?r.value:n.value;if(a==null)continue;let o=i?r.state:n.state;e.set(n.id,{value:a,hist:U.get(n.id)??n.hist,phase:0,tpl:t,alarm:o===`alarm`})}return e}),J=e=>e.value.toFixed(e.tpl.decimals),Y=new Map;function X(e,n,i,a){let o=t.nodeById(e),s=o?R(o):null,c=o?.deviceIds??(o?.deviceBindingId?[o.deviceBindingId]:[]),l=(c.length?c.map(e=>r.byId(e)?.name??e.slice(0,8)).join(` / `):null)??o?.name??e.slice(0,8),u=`${a?.toFixed(s?.decimals??2)??`--`} ${s?.unit??``}`;i===`alarm`?m(h(`townView.k113fir9195`,{p0:l,p1:s?.ch??``,p2:u}),`crit`,l):i===`warn`?m(h(`townView.k1knv89d196`,{p0:l,p1:s?.ch??``,p2:u}),`warn`,l):n!==`ok`&&i===`ok`&&m(h(`townView.ksjancw197`,{p0:l,p1:s?.ch??``}),`info`,l)}v(()=>t.nodes.map(e=>`${e.id}:${e.state}`).join(`|`),()=>{for(let e of t.nodes){let t=Y.get(e.id);Y.set(e.id,e.state),!(!t||t===e.state)&&X(e.id,t,e.state,e.value)}});let Z=new Map;function ne(e,t){let n=t;n?Z.set(e,n):Z.delete(e)}function re(){for(let[e,t]of Z){let n=q.value.get(e),r=t.getContext(`2d`);if(!n||!r)continue;let i=t.width,a=t.height;r.clearRect(0,0,i,a);let o=n.hist;if(o.length<2)continue;let s=o[0],c=o[0];for(let e of o)e<s&&(s=e),e>c&&(c=e);let l=Math.max(1e-6,c-s);r.strokeStyle=ae(e),r.lineWidth=1.4,r.beginPath(),o.forEach((e,t)=>{let n=t/(o.length-1)*(i-2)+1,c=a-2-(e-s)/l*(a-4);t?r.lineTo(n,c):r.moveTo(n,c)}),r.stroke()}}v(()=>t.nodes.map(e=>`${e.id}:${e.posX??``}:${e.posZ??``}:${e.enabled}:${e.state}:${e.deviceBindingId??``}`).join(`|`),()=>{o.value&&g(o.value)}),v(()=>n.nodes.map(e=>`${e.id}:${e.posX??``}:${e.posZ??``}:${e.enabled}:${e.deviceBindingId??``}:${e.value??``}`).join(`|`),()=>{o.value&&g(o.value)}),v(()=>t.nodes.map(e=>`${e.id}:${e.deviceBindingId??``}`).join(`|`),()=>{let e=c.value;!e||!(`syncDaqLinks`in e)||e.syncDaqLinks(t.nodes.filter(e=>e.deviceBindingId).map(e=>({daqId:e.id,deviceId:e.deviceBindingId})))});let ie=[`#35e0a0`,`#41c8f4`,`#f6c453`,`#a78bfa`,`#ff6b6b`,`#4dd0e1`],ae=e=>ie[Math.abs(e.split(``).reduce((e,t)=>e*31+t.charCodeAt(0),7))%ie.length]??`#35e0a0`;return f(()=>{t.ensureWsFeed(),t.load(),W=a.subscribe(e=>{e.type===`daq.reading`&&te(e.payload)}),n.ensureWsFeed(),n.load()}),u(()=>{W?.()}),{dcwTwins:b,sceneTwinPool:x,sceneTwinById:S,sceneEmpty:C,syncSceneDevices:g,daqTemplates:F,dcwTemplates:w,treeOpen:T,toggleTreeGroup:E,daqNodesByTpl:D,dcwNodesByTpl:O,createDaqFromTemplate:k,createDcwFromTemplate:A,onDaqNodeDragStart:j,onDcwNodeDragStart:M,daqLeafState:N,dcwLeafState:P,daqTplById:I,daqTplOf:R,isLegacyDaqTwin:z,daqTwins:B,daqSim:q,fmtDaq:J,trendColor:ae,rtcHist:U,RTC_HIST_CAP:120,setSparkRef:ne,drawBindSparks:re}}function Fe(e){let{selected:t,daq:n,dcw:r,deviceTwins:a,daqSim:o,daqTplById:c,daqTplOf:l,isLegacyDaqTwin:u,fmtDaq:d,sceneTwinById:f,dcwTemplates:p,trendColor:m,errorText:h}=e,{t:g}=L(),y=e=>n.nodeById(e)?.deviceIds?.[0]??n.nodeById(e)?.deviceBindingId??null,b=e=>e?n.nodes.filter(t=>(t.deviceIds??(t.deviceBindingId?[t.deviceBindingId]:[])).includes(e)).map(e=>e.id):[];function x(e,t){n.bindNode(e,t).catch(e=>{h.value=Q(e)})}function S(e){n.bindNode(e,null).catch(e=>{h.value=Q(e)})}function C(e,t,n){let r=null,i=n;for(let n of a.twins){if(u(n)||typeof n.posX!=`number`||typeof n.posZ!=`number`)continue;let a=Math.hypot(n.posX-e,n.posZ-t);a<i&&(i=a,r=n)}return r}let w=s(!1),T=s(!1),E=s(420);function D(e,t){let n=t.currentTarget,r=n?.closest(`.panel`);if(n&&r){let e=n.getBoundingClientRect().top-r.getBoundingClientRect().top-12;E.value=Math.max(160,Math.round(e))}e===`daq`?w.value=!w.value:T.value=!T.value}let O=_(()=>{let e=t.value?.kind===`device`?t.value.id:``,r={};if(!e)return r;for(let t of n.nodes){if(t.deviceBindingId===e)continue;let n=l(t);n&&(r[n.id]??=[]).push({id:t.id,name:t.name,tpl:n,devName:t.deviceBindingId?a.byId(t.deviceBindingId)?.name??null:null,placed:typeof t.posX==`number`})}return r}),k=_(()=>Object.values(O.value).reduce((e,t)=>e+t.length,0));function A(e){let n=t.value?.kind===`device`?t.value.id:``;n&&(x(e,n),w.value=!1)}let j=_(()=>t.value?.kind===`device`&&(M.value?.modelRef||``).startsWith(`daq-`)),M=_(()=>t.value?.kind===`device`?f(t.value?.id)??null:null),N=_(()=>{let e=t.value?.id;return e?o.value.get(e)??null:null}),P=s(``),F=_(()=>{let e=t.value?.id;return e?b(e).map(e=>{let t=f(e),n=o.value.get(e),r=n?.tpl??c(t?.modelRef??``);return{daqId:e,name:t?.name??e,ch:r?.ch??g(`townView.k1ef3cls168`),icon:r?.icon??`gateway`,value:n?d(n):`--`,unit:n?.tpl.unit??r?.unit??``,color:m(e)}}):[]}),I=_(()=>{let e=t.value?.id;if(!e)return``;let n=y(e);return n?a.twins.find(e=>e.id===n)?.name??n.slice(0,8):``}),R=e=>e?r.nodes.filter(t=>t.deviceBindingId===e):[];function ee(e){let t=r.nodeById(e);if(!t||!t.lineId)return null;let n=r.lineStateOf(t.lineId);if(!n.active||!n.recipeId)return null;let i=r.recipes.find(e=>e.id===n.recipeId);return i?i.params.find(t=>t.nodeId===e)??null:null}let z=_(()=>{let e=t.value?.id;return e?R(e).map(e=>{let t=e.templateRef.startsWith(`dcw-`)?e.templateRef.slice(4):e.templateRef,n=r.templates.find(e=>e.key===t),i=ee(e.id);return{dcwId:e.id,name:e.name,ch:n?.ch??t,unit:e.unit,icon:n?.icon??`gateway`,value:e.value,state:e.state,decimals:e.decimals,gMin:e.min,gMax:e.max,rMin:i?.min??null,rMax:i?.max??null}}):[]});function B(e){let t=ee(e.id);return t&&(t.min!=null||t.max!=null)?{lo:t.min??-1/0,hi:t.max??1/0,src:`recipe`}:{lo:e.min,hi:e.max,src:`global`}}function V(e){let t=e.rMin??e.gMin,n=e.rMax??e.gMax;return!Number.isFinite(t)||!Number.isFinite(n)||n<=t||e.value==null?50:Math.min(100,Math.max(0,(e.value-t)/(n-t)*100))}let H=i({}),U=i({});function W(e){let t=H[e.id];if(t==null||t===``)return;let n=B(e);if(Number(t)<n.lo||Number(t)>n.hi){U[e.id]=g(`townView.kbuyve5198`,{p0:n.src===`recipe`?g(`townView.kb251ac190`):g(`townView.k1iwj796179`),p1:Number.isFinite(n.lo)?n.lo:`-∞`,p2:Number.isFinite(n.hi)?n.hi:`+∞`});return}U[e.id]=``,r.write(e.id,Number(t)).then(t=>{t.ok||(U[e.id]=t.message)}).catch(t=>{U[e.id]=Q(t)})}let G=e=>{let t=e.startsWith(`dcw-`)?e.slice(4):e;return p.find(e=>e.id===t)},K=_(()=>{let e=t.value?.kind===`device`?t.value.id:``,n={};if(!e)return n;for(let t of r.nodes){if(t.deviceBindingId===e)continue;let r=G(t.templateRef);r&&(n[r.id]??=[]).push({id:t.id,name:t.name,tpl:r,devName:t.deviceBindingId?a.byId(t.deviceBindingId)?.name??null:null,placed:typeof t.posX==`number`})}return n}),te=_(()=>Object.values(K.value).reduce((e,t)=>e+t.length,0));function q(e){let n=t.value?.kind===`device`?t.value.id:``;n&&(r.bindNode(e,n).catch(e=>{h.value=Q(e)}),T.value=!1)}function J(e){r.bindNode(e,null).catch(e=>{h.value=Q(e)})}let Y=_(()=>t.value?.kind===`device`&&(f(t.value?.id)?.modelRef??``).startsWith(`dcw-`)),X=_(()=>{let e=t.value?.id;return e?r.nodeById(e)??null:null}),Z=_(()=>{let e=X.value;return e?B(e):null}),ne=_(()=>{let e=X.value;return e?.deviceBindingId?a.twins.find(t=>t.id===e.deviceBindingId)?.name??e.deviceBindingId.slice(0,8):``}),re=s(``);function ie(){let e=X.value;!e||!re.value||(r.bindNode(e.id,re.value).catch(e=>{h.value=Q(e)}),re.value=``)}function ae(){let e=X.value;e&&r.bindNode(e.id,null).catch(e=>{h.value=Q(e)})}function oe(){let e=X.value;e&&W(e)}function se(e){if(!e)return`--`;let t=B(e);return`${Number.isFinite(t.lo)?t.lo:`-∞`} ~ ${Number.isFinite(t.hi)?t.hi:`+∞`} ${e.unit}`}function ce(e){if(!e)return``;let t=B(e);return`${Number.isFinite(t.lo)?t.lo:``} ~ ${Number.isFinite(t.hi)?t.hi:``}`}let le=_(()=>{let e=t.value?.id;return e?n.nodeById(e)??null:null}),ue=s(null);v(le,e=>{ue.value=e?e.intervalMs??n.controller.defaultIntervalMs:null},{immediate:!0});function de(){let e=le.value;!e||ue.value==null||n.patchNode(e.id,{intervalMs:Math.max(120,Math.min(6e4,Math.round(ue.value)))}).catch(e=>{h.value=Q(e)})}function fe(e,t){let r=Number(t);Number.isFinite(r)&&n.patchNode(le.value.id,{[e]:(e.startsWith(`warn`),r)}).catch(e=>{h.value=Q(e)})}return{boundDeviceOf:y,daqOfDevice:b,bindDaq:x,unbindDaq:S,nearestDeviceTwin:C,bindPopOpen:w,dcwBindPopOpen:T,bindPopMaxH:E,toggleBindPop:D,daqBindChoices:O,daqBindChoiceCount:k,bindDaqChoice:A,selectedIsDaq:j,daqOfSelected:M,selectedDaqSim:N,bindPick:P,boundDaqRows:F,daqBoundDeviceName:I,selectedIsDcw:Y,selectedDcwNode:X,selectedDcwWindow:Z,selectedDcwDeviceName:ne,dcwBindPick:re,boundDcwRows:z,bindSelectedDcw:ie,unbindSelectedDcw:ae,doWriteSelectedDcw:oe,dcwWinLabel:se,dcwWinInputPh:ce,dcwWriteDrafts:H,dcwWriteErrs:U,doDcwWrite:W,dcwBindChoices:K,dcwBindChoiceCount:te,dcwMarkPct:V,bindDcwChoice:q,unbindDcw:J,selectedDaqNode:le,daqIntervalDraft:ue,onDaqIntervalCommit:de,onDaqThresholdCommit:fe,dcwWindowOf:B}}function Ie(e){let{mode:n,runHint:r,dockChannels:i,dropChannelAt:a,daq:o,dcw:s,nearestDeviceTwin:c,bindDaq:l,syncSceneDevices:d,sceneRef:f,errorText:p}=e,{t:m}=L();function h(e){if(`screenToWorld`in e){y(e);return}v(e)}let g=[];function v(e){let t=e.game.canvas;if(!t)return;let n=(n,r)=>{let i=e.cameras.main,a=t.getBoundingClientRect(),o=(n-a.left)/a.width,s=(r-a.top)/a.height;return{x:i.worldView.x+o*i.worldView.width,y:i.worldView.y+s*i.worldView.height}},r=!1,i=0,a=0;t.addEventListener(`pointerdown`,e=>{e.button===0&&(r=!0,i=e.clientX,a=e.clientY)});let o=n=>{if(!r)return;let o=e.cameras.main,s=t.getBoundingClientRect(),c=e.game.scale.width/s.width,l=(n.clientX-i)*c/o.zoom,u=(n.clientY-a)*c/o.zoom;o.scrollX-=l,o.scrollY-=u,i=n.clientX,a=n.clientY},s=()=>{r=!1};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s),g.push(()=>window.removeEventListener(`pointermove`,o)),g.push(()=>window.removeEventListener(`pointerup`,s)),t.addEventListener(`wheel`,t=>{t.preventDefault();let n=e.cameras.main,r=n.zoom+(t.deltaY<0?.08:-.08);n.setZoom(Math.min(2.4,Math.max(.6,r)))},{passive:!1}),t.addEventListener(`dragover`,e=>{e.preventDefault(),e.dataTransfer.dropEffect=`copy`}),t.addEventListener(`drop`,t=>{t.preventDefault();let r=t.dataTransfer?.getData(`application/x-aw-model`)||t.dataTransfer?.getData(`text/plain`);if(!r)return;let i=n(t.clientX,t.clientY),a=e.dropModelOnWorld(i.x,i.y,r);b.value=a})}function y(e){let t=e.canvas;if(!t)return;let u=0,m=0,h=0;t.addEventListener(`contextmenu`,e=>e.preventDefault()),t.addEventListener(`mousedown`,e=>{e.button===1&&e.preventDefault()}),t.addEventListener(`pointerdown`,t=>{if(!e.isGizmoBusy?.()){if(t.button===1||t.button===2||t.shiftKey){t.preventDefault(),u=2,m=t.clientX,h=t.clientY;return}t.button===0&&(e.tryStartPointerDrag(t.clientX,t.clientY)||(u=1,m=t.clientX,h=t.clientY))}});let _=t=>{if(e.isGizmoBusy?.())return;if(e.isPointerDragging()){e.movePointerDrag(t.clientX,t.clientY);return}if(!u)return;let n=t.clientX-m,r=t.clientY-h;m=t.clientX,h=t.clientY,u===1?e.orbitBy(n,r):e.panByScreen(n,r)},v=()=>{if(e.isPointerDragging()){e.endPointerDrag();return}u=0};window.addEventListener(`pointermove`,_),window.addEventListener(`pointerup`,v),g.push(()=>window.removeEventListener(`pointermove`,_)),g.push(()=>window.removeEventListener(`pointerup`,v)),t.addEventListener(`wheel`,t=>{t.preventDefault(),e.zoomBy(t.deltaY>0?.12:-.11)},{passive:!1}),t.addEventListener(`dragover`,e=>{e.preventDefault(),e.dataTransfer.dropEffect=`copy`}),t.addEventListener(`drop`,t=>{t.preventDefault();let u=t.dataTransfer;if(!u)return;if(n.value!==`edit`){r();return}let m=u.getData(`application/x-aw-channel`)||u.getData(`text/plain`);if(m&&i.value.some(e=>e.channelId===m)){let n=e.screenToWorld(t.clientX,t.clientY);a(m,n.x,n.z);return}let h=u.getData(`application/x-aw-daq-node`);if(h){let n=o.nodeById(h);if(n){let r=e.screenToWorld(t.clientX,t.clientY);o.patchNode(h,{posX:Math.round(r.x),posZ:Math.round(r.z)}).then(()=>{if(!n.deviceBindingId){let e=c(r.x,r.z,95);e&&l(h,e.id)}}).catch(e=>{p.value=Q(e)})}return}let g=u.getData(`application/x-aw-dcw-node`);if(g){let n=s.nodes.find(e=>e.id===g);if(n){let r=e.screenToWorld(t.clientX,t.clientY);s.patchNode(g,{posX:Math.round(r.x),posZ:Math.round(r.z)}).then(()=>{if(!n.deviceBindingId){let e=c(r.x,r.z,95);e&&s.bindNode(g,e.id).catch(e=>{p.value=Q(e)})}f.value&&d(f.value)}).catch(e=>{p.value=Q(e)})}return}let _=u.getData(`application/x-aw-model`)||u.getData(`text/plain`);if(_){let n=e.screenToWorld(t.clientX,t.clientY),r=e.dropModelOnWorld(n.x,n.z,_);b.value=r}})}let b=t(null),x=_(()=>{let e=b.value;return e?e.mode===`rebind`?m(`townView.kgz2nej193`,{p0:e.agentId?.slice(0,8)??m(`townView.k479op189`),p1:e.textureKey}):m(`townView.k5e2460194`,{p0:e.textureKey}):``});return u(()=>{for(let e of g)try{e()}catch{}g.length=0}),{bindSceneInput:h,lastDropText:x}}function Le(e){let{props:t,entities:n,sceneLayouts:r,characterAssets:i,deviceTwins:a,townBus:o,daq:s,sceneRef:c,scene3dRef:l,gameRef:d,hostRef:p,render3d:m,ready:h,fps:g,agentCount:_,blockCount:y,activity:b,selected:x,errorText:S,saveState:C,fpsCap:w,qualityMode:T,selectedChannel:E,boundaryDraft:D,agentRangeDraft:O,onSelectChannel:k,buildTownInput:A,updateAgentHome:j,updateAgentRange:M,sceneTwinPool:N,sceneTwinById:P,syncSceneDevices:F,appendLiveChat:ee,bindSceneInput:z,dockRev:B}=e,{t:V}=L(),U=null;function W(e){!e||!(`registerModelsFromList`in e)||(`screenToWorld`in e?e.registerModelsFromList(i.models.map(e=>({id:e.id,file:e.file,name:e.name,kind:e.kind,hFactor:e.hFactor??1}))):e.registerModelsFromList(i.models.map(e=>({id:e.id,file:e.file,name:e.name}))))}v(()=>i.models.map(e=>`${e.id}:${e.file}`).join(`|`),()=>W(c.value));async function G(){c.value||!p.value||(m?await K():await te())}async function K(){let e=p.value;if(!e)return;let[{TownScene3D:i}]=await Promise.all([I(()=>import(`./cBI0JqsV.js`),__vite__mapDeps([0,1,2,3]),import.meta.url)]),o=new i(A(),e);o.resolveTaskAssignee=e=>n.tasks[t.channelId]?.find(t=>t.id===e)?.assigneeId??null,o.devices={async create(e){return{id:(await a.create({name:e.name,modelRef:e.modelRef,kind:e.kind,controls:e.controls,posX:e.posX,posZ:e.posZ,scale:e.scale})).id}},async update(e,t){if(s.nodeById(e)){await s.saveTransform(e,t.posX,t.posZ);return}await a.update(e,t)},async remove(e){if(s.nodeById(e)){await s.removeNode(e);return}await a.remove(e)},async control(e,t,n){return a.control(e,t,n)}},o.agentApi={async updateHome(e,t,n,r){return j(e,t,n,r)},async updateRange(e,t,n){return M(e,t,n)}},o.channelApi={async save(e,t){return r.save(e,t)}},c.value=o,W(o),l.value=o,o.setFpsCap(Number(w.value)),o.setQualityMode(T.value),q(o),o.on(`select`,e=>{x.value=e}),o.on(`saveState`,e=>{C.value=e}),o.on(`selectChannel`,e=>{k(e)}),o.on(`channelResized`,e=>{e&&E.value===e.channelId&&(D.value=e.layout)}),o.on(`agentRangeChanged`,e=>{if(e&&x.value?.kind===`agent`&&x.value.id===e.agentId){let t=l.value?.getAgentRange?.(e.agentId);O.value=t?{radiusX:t.radiusX,radiusZ:t.radiusZ,shape:t.shape}:null}}),h.value=!0,z(o),U=Z(o),r.load().then(()=>{o.hydrate(A(),Object.values(r.layouts),N.value),Y()}).catch(e=>{S.value=V(`townView.k1hmf2ut192`,{p0:Q(e)}),window.setTimeout(()=>{r.load()},2500)})}async function te(){let e=p.value;if(!e)return;let[r,{TownScene:i}]=await Promise.all([I(()=>import(`./BGkumHZ32.js`),[],import.meta.url),I(()=>import(`./Ckafrjnw2.js`),__vite__mapDeps([4,5,1,2]),import.meta.url)]),a=new i(A());c.value=a,W(a),a.resolveTaskAssignee=e=>n.tasks[t.channelId]?.find(t=>t.id===e)?.assigneeId??null;let o=new r.Game({type:r.AUTO,parent:e.id||`town-host`,width:1100,height:700,backgroundColor:`#eceae4`,pixelArt:!0,antialias:!1,roundPixels:!0,powerPreference:`high-performance`,physics:{default:`arcade`,arcade:{gravity:{x:0,y:0},debug:!1}},scale:{mode:r.Scale.FIT,autoCenter:r.Scale.CENTER_BOTH},scene:a});d.value=o,q(a),a.on(`ready`,()=>{h.value=!0,z(a)})}function q(e){let n=e;n.on(`fps`,e=>{g.value=e}),n.on(`agentCount`,e=>{_.value=e}),n.on(`blockCount`,e=>{y.value=e,B.value++}),n.on(`lastActivity`,e=>{b.value=e});let s=o.subscribe(n=>{try{if(n.type===`channel.snapshot`){e.rebuild(A()),c.value&&F(c.value),t.channelId&&e.focusChannel(t.channelId);return}if(n.type===`device.updated`){a.applyRemote(n.payload),c.value&&F(c.value);return}if(n.type===`device.created`){a.load().then(()=>{c.value&&F(c.value)});return}if(n.type===`device.deleted`){a.removeRemote(n.payload.id),c.value&&F(c.value);return}if(n.type===`scene.layout.saved`||n.type===`scene.layout.removed`){r.load().then(()=>{J(c.value),Y()});return}let i=H(n)?.bubble;i?.agentId&&ee(i.agentId,i.kind,i.text,n.at,n.seq),e.handleTownEvent(n)}catch(e){S.value=Q(e)}});c._off=s,window.__town={get scene(){return c.value},get game(){return d.value},buildInput:A,get characterAssets(){return i}}}v(()=>r.rev,e=>{let t=l.value;!t||!r.loaded||e===0||(t.hydrate(A(),Object.values(r.layouts),N.value),Y())});function J(e){if(!e||!(`applySceneLayouts`in e))return;let t=e;t.applySceneLayouts(Object.values(r.layouts)),t.rebuild(A())}function Y(){r.load().finally(()=>{})}function X(e){let t=l.value;t&&(typeof e.posX==`number`&&typeof e.posZ==`number`&&t.focusTo(e.posX,e.posZ),t.setSelected?.({kind:`device`,id:e.id}))}function Z(e){return R(()=>{a.load().then(()=>{if(c.value===e){e.syncDevices(N.value);for(let t of e.getDeviceNodes()){let n=P(t.twinId);n&&e.updateDeviceNode(t.twinId,n.state,n.telemetry)}}})},5e3)}return f(()=>{G();let e=A();e.length>0&&c.value&&c.value.rebuild(e)}),u(()=>{U&&clearInterval(U),U=null;let e=c._off;e?.(),l.value?.dispose(),l.value=null,d.value?.destroy(!0),d.value=null,c.value=null}),{onFocusDevice:X,syncSceneLayouts:J}}function Re(e){let{selected:t,objNameDraft:n,scene3dRef:r,stageRef:i,dcw:a,daqTwins:o,daqSim:c,boundDeviceOf:l,sceneTwinById:d,dcwWindowOf:f,fmtDaq:p,alarmRange:m,errorText:h}=e,{t:g}=L(),v=s(!0);function y(e){let r=l(e)??e,i=d(r);i&&(t.value={kind:`device`,id:r,scale:t.value?.scale??1,rotation:t.value?.rotation??0},n.value=i.name)}let b=s(!1);function x(){b.value=!b.value,r.value?.setAutoOrbit(b.value)}function S(){let e=r.value,n=t.value;if(e){if(!n){h.value=g(`townView.k15tn2fh169`);return}if(n.kind===`device`){let t=e.getDeviceNodes().find(e=>e.twinId===n.id);t&&e.focusTo(t.x,t.z)}else{let t=e.getAgent(n.id);t&&e.focusTo(t.root.position.x,t.root.position.z)}}}let C=s({}),w=_e(`aw.twin.calloutNear`,1150),T=_(()=>{let e={};for(let t of o.value){let n=c.value.get(t.id);if(!n)continue;let r={ch:n.tpl.ch,value:p(n),unit:n.tpl.unit,alarm:n.alarm??!1};(e[t.id]??=[]).push(r);let i=l(t.id);i&&(e[i]??=[]).push(r)}return e}),E=_(()=>{let e={};for(let t of a.nodes){if(!t.deviceBindingId)continue;let n=t.templateRef.startsWith(`dcw-`)?t.templateRef.slice(4):t.templateRef,r=a.templates.find(e=>e.key===n),i=f(t);(e[t.deviceBindingId]??=[]).push({id:t.id,ch:r?.ch??n,name:t.name,unit:t.unit,value:t.value,readValue:t.readValue,lastReadAt:t.lastReadAt,decimals:t.decimals,lo:i.lo,hi:i.hi,src:i.src})}return e}),D=s({pos:{x:0,y:0,z:0},target:{x:0,z:0},yaw:0,dolly:1}),O=_(()=>{if(!v.value)return[];let e=r.value;if(!e)return[];let t=e.getDeviceNodes(),n=i.value?.clientWidth??1600,a=[];for(let e of o.value){let n=c.value.get(e.id);if(!n)continue;let r=l(e.id),i=r?t.find(e=>e.twinId===r):t.find(t=>t.twinId===e.id);if(!i)continue;let o=C.value[e.id];o&&a.push({t:e,st:n,anchor:i,pos:o})}let s=new Map(a.map(e=>[e.anchor.twinId,e.anchor.topY])),u=new Map;for(let e of a){let t=u.get(e.anchor.twinId)??[];t.push(e),u.set(e.anchor.twinId,t)}let d=[];for(let e of u.values()){e.sort((e,t)=>e.t.id<t.t.id?-1:1);let t=e[0],r=Math.hypot(D.value.pos.x-t.anchor.x,D.value.pos.y-(s.get(t.anchor.twinId)??60),D.value.pos.z-t.anchor.z)<w.value,i=Math.min(n-96,Math.max(96,t.pos.x));e.forEach((e,n)=>{let{lo:a,hi:o}=m(e.st.tpl.min,e.st.tpl.max);d.push({id:e.t.id,x:i,y:t.pos.y-n*104,label:`${e.st.tpl.ch} · ${e.anchor.name||e.t.name}`,value:p(e.st),unit:e.st.tpl.unit,lo:a,hi:o,warn:e.st.alarm??!1,near:r,leader:n===0})})}return d});return u(()=>{}),{showCallouts:v,selectDeviceFromCallout:y,orbitOn:b,toggleOrbit:x,locateSelected:S,calloutPos:C,calloutNearDist:w,daqLive:T,dcwLive:E,camPose:D,callouts:O}}function ze(e){let{daqTwins:t,daqSim:n,rtcHist:r,RTC_HIST_CAP:i,trendColor:a}=e;function o(e){u.value={...u.value,[e]:!u.value[e]}}let c=s(null);function l(e){c.value=e}let u=s({});function d(e,n){let r=u.value[e];return r==null?(n??t.value.findIndex(t=>t.id===e))<8:!r}let f=s(!1),p=_(()=>Math.max(t.value.length-8,0)),m=_(()=>f.value?t.value:t.value.slice(0,8));function h(){let e=c.value;if(!e)return;let o=Math.min(window.devicePixelRatio,2),s=e.clientWidth,l=e.clientHeight;(e.width!==s*o||e.height!==l*o)&&(e.width=s*o,e.height=l*o);let u=e.getContext(`2d`);if(u){u.setTransform(o,0,0,o,0,0),u.clearRect(0,0,s,l),u.strokeStyle=`rgba(29, 42, 66, 0.6)`,u.lineWidth=1;for(let e=1;e<4;e++){let t=l/4*e;u.beginPath(),u.moveTo(0,t),u.lineTo(s,t),u.stroke()}t.value.forEach((e,t)=>{if(!d(e.id,t))return;let o=n.value.get(e.id);if(!o)return;let c=r.get(e.id)??o.hist;if(c.length<2)return;let f=o.tpl.min,p=o.tpl.max;u.strokeStyle=a(e.id),u.lineWidth=1.6,u.beginPath(),c.forEach((e,t)=>{let n=t/(i-1)*s,r=l-(e-f)/(p-f)*(l-8)-4;t===0?u.moveTo(n,r):u.lineTo(n,r)}),u.stroke()})}}return{hiddenTrends:u,toggleTrend:o,setTrendCanvas:l,trendOn:d,trendExpanded:f,trendOverflow:p,trendChips:m,drawTrend:h}}function Be(e){let{sceneRef:n,scene3dRef:r,stageRef:i,camPose:a,calloutPos:o,showCallouts:c,daq:l,daqTwins:d,boundDeviceOf:p}=e,m=null,h=3200,g=2400,v=t(null),y=e=>`#${e.toString(16).padStart(6,`0`)}`,b=s(null);function x(e){b.value=e}let S=_(()=>Math.min(5,Math.max(.4,a.value.dolly))),C=null;function w(e){let t=e.clientWidth||220,n=e.clientHeight||148;return{s:t/(1600*S.value),w:t,h:n}}function T(){let e=b.value,t=v.value,n=r.value;if(!e)return;let i=Math.min(window.devicePixelRatio||1,2),a=w(e);(e.width!==Math.round(a.w*i)||e.height!==Math.round(a.h*i))&&(e.width=Math.round(a.w*i),e.height=Math.round(a.h*i));let o=e.getContext(`2d`);if(!o)return;o.setTransform(i,0,0,i,0,0),o.fillStyle=`#060b13`,o.fillRect(0,0,a.w,a.h);let s=n?.getCameraPose(),c=s?s.target.x:h/2,u=s?s.target.z:g/2,d=a.w/2/a.s,f=a.h/2/a.s,p=(e,t)=>({x:a.w/2+(e-c)*a.s,y:a.h/2+(t-u)*a.s}),m=(e,t,n=60)=>e>c-d-n&&e<c+d+n&&t>u-f-n&&t<u+f+n;o.fillStyle=`rgba(65,200,244,.10)`;for(let e=Math.floor((c-d)/250)*250;e<=c+d;e+=250)for(let t=Math.floor((u-f)/250)*250;t<=u+f;t+=250){let n=p(e,t);o.fillRect(n.x-1,n.y-1,1.6,1.6)}let _=p(0,0),x=p(h,g);o.strokeStyle=`rgba(53,224,160,.35)`,o.lineWidth=1,o.strokeRect(_.x,_.y,x.x-_.x,x.y-_.y);for(let e of t?.blocks??[]){let t=e.x*h,n=e.y*g;if(!m(t,n,400))continue;let r=p(t,n),i=Math.max(4,(e.rx??.03)*h*a.s),s=Math.max(3,(e.rz??.03)*g*a.s);o.strokeStyle=y(e.color),o.globalAlpha=.6,o.lineWidth=1,o.beginPath(),o.ellipse(r.x,r.y,i,s,0,0,Math.PI*2),o.stroke(),o.globalAlpha=.08,o.fillStyle=y(e.color),o.fill(),o.globalAlpha=1}o.strokeStyle=`rgba(65,200,244,.28)`;let S=new Set(l.nodes.filter(e=>e.deviceBindingId).map(e=>e.id));for(let[e,n]of l.nodes.filter(e=>e.deviceBindingId).map(e=>[e.id,e.deviceBindingId])){let r=(t?.devices??[]).find(t=>t.twinId===e),i=(t?.devices??[]).find(e=>e.twinId===n);if(!r||!i)continue;let a=p(r.x*h,r.y*g),s=p(i.x*h,i.y*g);o.beginPath(),o.moveTo(a.x,a.y),o.lineTo(s.x,s.y),o.stroke()}let C=e=>e.x>=7&&e.x<=a.w-7&&e.y>=7&&e.y<=a.h-7?{...e,edge:!1}:{x:Math.min(a.w-7,Math.max(7,e.x)),y:Math.min(a.h-7,Math.max(7,e.y)),edge:!0};for(let e of t?.devices??[]){let t=C(p(e.x*h,e.y*g));if(e.daq)o.globalAlpha=t.edge?.4:1,o.fillStyle=`#35e0a0`,o.beginPath(),o.arc(t.x,t.y,t.edge?1.8:2.4,0,7),o.fill(),!t.edge&&e.twinId&&S.has(e.twinId)&&(o.strokeStyle=`rgba(53,224,160,.5)`,o.beginPath(),o.arc(t.x,t.y,4.4,0,7),o.stroke());else{o.globalAlpha=t.edge?.4:1,o.fillStyle=y(e.color);let n=t.edge?3.6:5.2;o.fillRect(t.x-n/2,t.y-n/2,n,n)}o.globalAlpha=1}for(let e of t?.agents??[]){let t=C(p(e.x*h,e.y*g));o.globalAlpha=t.edge?.35:1,o.fillStyle=y(e.color),o.beginPath(),o.arc(t.x,t.y,t.edge?1.6:2.2,0,7),o.fill(),o.globalAlpha=1}if(s){let e=Math.atan2(-Math.cos(s.yaw),-Math.sin(s.yaw)),t=Math.min(a.w,a.h)*.36;o.fillStyle=`rgba(65,200,244,.14)`,o.strokeStyle=`rgba(65,200,244,.5)`,o.lineWidth=1,o.beginPath(),o.moveTo(a.w/2,a.h/2),o.arc(a.w/2,a.h/2,t,e-.4,e+.4),o.closePath(),o.fill(),o.stroke();let n=p(s.pos.x,s.pos.z);n.x>4&&n.x<a.w-4&&n.y>4&&n.y<a.h-4&&(o.fillStyle=`rgba(255,255,255,.85)`,o.beginPath(),o.arc(n.x,n.y,2.4,0,7),o.fill())}o.fillStyle=`#fff`,o.beginPath(),o.arc(a.w/2,a.h/2,3,0,7),o.fill(),o.strokeStyle=`rgba(255,255,255,.4)`,o.beginPath(),o.arc(a.w/2,a.h/2,5.5,0,7),o.stroke()}function E(e){r.value?.zoomBy(e.deltaY>0?.14:-.12)}function D(e){C={lx:e.clientX,ly:e.clientY,moved:!1};try{e.target.setPointerCapture?.(e.pointerId)}catch{}}function O(e){let t=b.value,n=r.value;if(!C||!t||!n)return;let i=w(t),a=e.clientX-C.lx,o=e.clientY-C.ly;Math.abs(a)+Math.abs(o)>3&&(C.moved=!0);let s=a/i.s,c=o/i.s;C.lx=e.clientX,C.ly=e.clientY,n.panWorldBy(s,c)}function k(e){let t=b.value,n=r.value;if(C&&!C.moved&&t&&n){let r=t.getBoundingClientRect(),i=w(t),a=n.getCameraPose(),o=a.target.x+(e.clientX-r.left-r.width/2)/i.s,s=a.target.z+(e.clientY-r.top-r.height/2)/i.s;n.focusTo(o,s)}C=null}function A(){let e=n.value;e?.getMinimapState&&(v.value=e.getMinimapState()),T();let t=r.value;if(t&&(a.value=t.getCameraPose(),c.value)){let e=t.getDeviceNodes(),n=i.value?.getBoundingClientRect(),r={};for(let i of d.value){let a=p(i.id),o=a?e.find(e=>e.twinId===a):e.find(e=>e.twinId===i.id);if(!o)continue;let s=t.worldToScreen(o.x,(o.topY??92)+26,o.z);s&&n&&(r[i.id]={x:s.x-n.left,y:s.y-n.top})}o.value=r}}function j(){if(document.hidden){m&&=(clearInterval(m),null);return}m||=R(A,150)}return f(()=>{document.addEventListener(`visibilitychange`,j),m=R(A,150)}),u(()=>{document.removeEventListener(`visibilitychange`,j),m&&clearInterval(m),m=null}),{minimap:v,navScale:S,setNavCanvas:x,onNavWheel:E,onNavDown:D,onNavMove:O,onNavUp:k,drawNavMap:T,miniTick:A}}function Ve(e){let{sceneRef:n,daq:r,drawTrend:i,drawBindSparks:a}=e,o=null,s=null,c=t([]);function l(){if(document.hidden){s&&=(clearInterval(s),null),o&&=(clearInterval(o),null);return}s||=R(()=>{r.nodes.length&&(i(),a())},200),o||=R(()=>{let e=n.value;e?.getRecentActivity&&(c.value=e.getRecentActivity())},400)}return f(()=>{document.addEventListener(`visibilitychange`,l),s=R(()=>{r.nodes.length&&(i(),a())},200),o=R(()=>{let e=n.value;e?.getRecentActivity&&(c.value=e.getRecentActivity())},400)}),u(()=>{document.removeEventListener(`visibilitychange`,l),s&&clearInterval(s),o&&clearInterval(o),s=null,o=null}),{ticker:c}}var He={class:`brand`},Ue={class:`brand-sub`},We=[`aria-label`],Ge={class:`seg`},Ke=[`disabled`,`title`],qe={class:`nav-right`},Je=[`title`],Ye={class:`nav-chip mono nav-fps`},Xe=[`title`],Ze={class:`avatar-fallback`},Qe=[`aria-expanded`,`title`],$e={class:`sheet-btn-t`},et=[`aria-expanded`,`title`],tt={class:`sheet-btn-t`},nt=Object.assign(V(p({__name:`TownTopNav`,props:{mode:{},fps:{},activeAlarmCount:{},userName:{},saveState:{},saveStateLabel:{},sheetOpen:{}},emits:[`toggle-mode`,`save-layout`,`toggle-sheet`],setup(e,{emit:t}){let r=t;return(t,i)=>(m(),b(`header`,{class:n([`topnav`,{"sheet-on":e.sheetOpen}])},[y(`div`,He,[i[6]||=O(`<svg class="brand-glyph" viewBox="0 0 32 32" fill="none" aria-hidden="true" data-v-f5e9d35e><path d="M16 2.5 27.5 9v14L16 29.5 4.5 23V9L16 2.5Z" stroke="#35e0a0" stroke-width="1.6" data-v-f5e9d35e></path><path d="M16 8.2 22.5 12v8L16 23.8 9.5 20v-8L16 8.2Z" stroke="#41c8f4" stroke-width="1.3" opacity=".85" data-v-f5e9d35e></path><circle cx="16" cy="16" r="2.4" fill="#35e0a0" data-v-f5e9d35e></circle><circle cx="25.5" cy="7.5" r="1.6" fill="#41c8f4" data-v-f5e9d35e></circle></svg>`,1),y(`div`,null,[i[5]||=y(`div`,{class:`brand-name`},[k(` DIGITAL `),y(`em`,null,`TWIN`)],-1),y(`div`,Ue,` AGENTWORKSHOP · `+a(t.$t(`townView.klyi8yg127`)),1)])]),y(`nav`,{class:`nav-tabs`,"aria-label":t.$t(`townView.k1c9jyta001`)},[y(`div`,Ge,[y(`button`,{class:n({on:e.mode===`browse`}),onClick:i[0]||=t=>e.mode===`edit`&&r(`toggle-mode`)},a(t.$t(`townView.k48dwh027`)),3),y(`button`,{class:n({on:e.mode===`edit`}),onClick:i[1]||=t=>e.mode===`browse`&&r(`toggle-mode`)},a(t.$t(`townView.k45eb0028`)),3)]),y(`button`,{class:`nav-action`,disabled:e.mode!==`edit`,title:e.mode===`edit`?t.$t(`townView.saveLayoutTip`):t.$t(`townView.readonlyTip`),onClick:i[2]||=e=>r(`save-layout`)},a(t.$t(`townView.k1b3bk8t029`)),9,Ke),e.saveState&&e.saveState.state!==`idle`?(m(),b(`span`,{key:0,class:n([`save-chip`,`s-${e.saveState.state}`])},a(e.saveStateLabel),3)):w(``,!0)],8,We),y(`div`,qe,[y(`span`,{class:n([`nav-chip mono`,{"nav-bell-warn":e.activeAlarmCount>0}]),title:t.$t(`townView.k1fsi3ir002`)},`◉ `+a(e.activeAlarmCount),11,Je),y(`span`,Ye,a(e.fps)+` FPS`,1),y(`div`,{class:`avatar-chip nav-user`,title:t.$t(`townView.k1demf38003`)},[y(`div`,Ze,a(e.userName.slice(0,2).toUpperCase()),1),y(`span`,null,a(e.userName||t.$t(`townView.k1pub99m139`)),1)],8,Xe),y(`button`,{type:`button`,class:n([`sheet-btn`,{on:e.sheetOpen===`left`}]),"aria-controls":`town-rail-left`,"aria-expanded":e.sheetOpen===`left`?`true`:`false`,title:t.$t(`townView.k1k75lzy030`),onClick:i[3]||=e=>r(`toggle-sheet`,`left`)},[i[7]||=y(`svg`,{class:`sheet-ico`,viewBox:`0 0 24 24`,"aria-hidden":`true`},[y(`path`,{d:`M4 6h16M4 12h11M4 18h16`})],-1),y(`span`,$e,a(t.$t(`townView.k1k75lzy030`)),1)],10,Qe),y(`button`,{type:`button`,class:n([`sheet-btn`,{on:e.sheetOpen===`right`}]),"aria-controls":`town-rail-right`,"aria-expanded":e.sheetOpen===`right`?`true`:`false`,title:t.$t(`townView.k17dkhgd112`),onClick:i[4]||=e=>r(`toggle-sheet`,`right`)},[i[8]||=y(`svg`,{class:`sheet-ico`,viewBox:`0 0 24 24`,"aria-hidden":`true`},[y(`path`,{d:`M20 6H4M20 12H9M20 18H4`})],-1),y(`span`,tt,a(t.$t(`townView.k17dkhgd112`)),1)],10,et)])],2))}}),[[`__scopeId`,`data-v-f5e9d35e`]]),{__name:`WorkshopTownComponentsTownTopNav`}),rt=[`innerHTML`],it=Object.assign(p({__name:`DaqTemplateIcon`,props:{icon:{}},setup(t){let n=t,r={thermo:`<path d="M10 4a2 2 0 0 1 4 0v9a4 4 0 1 1-4 0V4Z"/><circle cx="12" cy="16.5" r="1.6"/>`,pressure:`<circle cx="12" cy="12" r="8"/><path d="m12 12 3.5-3.5"/><circle cx="12" cy="12" r="1.2"/>`,tension:`<circle cx="12" cy="10" r="4"/><path d="M4 18.5h16M8 18.5V14M16 18.5V14"/><path d="M2.5 10H8M16 10h5.5"/>`,encoder:`<circle cx="12" cy="12" r="8"/><circle cx="12" cy="12" r="2"/><path d="M12 4v3M12 17v3M4 12h3M17 12h3"/>`,camera:`<rect x="3" y="7" width="13" height="10" rx="2"/><path d="m16 11 5-3v8l-5-3"/><circle cx="8" cy="12" r="2.5"/>`,gateway:`<rect x="8" y="11" width="8" height="10" rx="1.5"/><circle cx="12" cy="5.5" r="1.5"/><path d="M12 10V7M8.5 8.5a5 5 0 0 1 7 0M6 6a8.5 8.5 0 0 1 12 0"/>`},i=_(()=>r[n.icon]??r.gateway);return(t,n)=>(m(),b(`svg`,{viewBox:`0 0 24 24`,innerHTML:e(i)},null,8,rt))}}),{__name:`WorkshopDaqTemplateIcon`}),at={class:`daq-ctrl`},ot=[`title`],st=[`title`],ct=[`value`],lt={class:`daq-list`},ut=[`title`,`onClick`,`onKeydown`],dt={class:`daq-ico`},ft={class:`daq-meta`},pt={class:`daq-name`},mt={class:`daq-code`},ht=[`title`,`onClick`],gt={class:`daq-count`},_t={key:0,class:`daq-children`},vt=[`draggable`,`title`,`onDragstart`,`onClick`],yt={class:`daq-meta`},bt={class:`daq-name`},xt={class:`daq-node-sub`},St={class:`node-val mono`},Ct={class:`node-dev`},wt={key:0,class:`scene-cur`},Tt={key:0,class:`daq-empty-hint`},Et=Object.assign(V(p({__name:`TownDaqTree`,props:{mode:{},treeOpen:{},daqTemplates:{},daqNodesByTpl:{},deviceTwins:{},daq:{},daqLeafState:{type:Function},toggleTreeGroup:{type:Function},createDaqFromTemplate:{type:Function},onDaqNodeDragStart:{type:Function},onFocusDevice:{type:Function}},setup(e){return(t,r)=>{let i=it;return m(),b(x,null,[y(`div`,at,[y(`button`,{class:n([`daq-ctl-btn`,{on:e.daq.controller.running}]),title:e.daq.controller.running?t.$t(`townView.daqPauseTip`):t.$t(`townView.daqResumeTip`),onClick:r[0]||=t=>e.daq.controllerAction(e.daq.controller.running?`pause`:`resume`)},a(e.daq.controller.running?t.$t(`townView.k3w3j8f140`):t.$t(`townView.k3n93ed175`)),11,ot),y(`label`,{class:`daq-ctl-cycle mono`,title:t.$t(`townView.khzlyf5004`)},[k(a(t.$t(`townView.k3xg3w032`))+` `,1),y(`input`,{type:`number`,min:`200`,max:`60000`,step:`100`,value:e.daq.controller.defaultIntervalMs,onChange:r[1]||=t=>e.daq.controllerAction(`config`,Number(t.target.value))},null,40,ct),r[2]||=k(`ms `,-1)],8,st)]),y(`div`,lt,[(m(!0),b(x,null,h(e.daqTemplates,o=>(m(),b(`div`,{key:o.id,class:`daq-group`},[y(`div`,{class:n([`daq-card tpl`,{open:!!e.treeOpen[`daq:${o.id}`]}]),role:`button`,tabindex:`0`,title:t.$t(`townView.k2tplxp0001`,{p0:o.name,p1:o.ch,p2:o.min,p3:o.max,p4:o.unit}),onClick:t=>e.toggleTreeGroup(`daq:${o.id}`),onKeydown:F(j(t=>e.toggleTreeGroup(`daq:${o.id}`),[`prevent`]),[`enter`])},[r[3]||=y(`span`,{class:`daq-caret`},`▶`,-1),y(`span`,dt,[g(i,{class:`daq-svg`,icon:o.icon},null,8,[`icon`])]),y(`div`,ft,[y(`span`,pt,a(o.name),1),y(`span`,mt,a(o.code),1)]),e.mode===`edit`?(m(),b(`button`,{key:0,class:`daq-add`,title:t.$t(`townView.k2tplxp0002`,{p0:o.name}),onClick:j(t=>e.createDaqFromTemplate(o),[`stop`])},` + `,8,ht)):w(``,!0),y(`span`,gt,`×`+a(e.daqNodesByTpl.get(o.id)?.length??0),1)],42,ut),e.treeOpen[`daq:${o.id}`]?(m(),b(`div`,_t,[(m(!0),b(x,null,h(e.daqNodesByTpl.get(o.id)??[],r=>(m(),b(`div`,{key:r.id,class:n([`daq-node`,{placed:typeof r.posX==`number`}]),draggable:e.mode===`edit`,title:typeof r.posX==`number`?t.$t(`townView.k2tplxp0005`):t.$t(`townView.k2tplxp0006`),onDragstart:t=>e.onDaqNodeDragStart(t,r),onClick:t=>typeof r.posX==`number`&&e.onFocusDevice({id:r.id,posX:r.posX,posZ:r.posZ})},[y(`span`,{class:n([`node-dot`,e.daqLeafState(r)])},null,2),y(`div`,yt,[y(`span`,bt,a(r.name),1),y(`span`,xt,[y(`span`,St,a(r.value==null?`--`:`${r.value.toFixed(o.decimals)} ${o.unit}`),1),y(`span`,Ct,a(r.deviceBindingId?e.deviceTwins.byId(r.deviceBindingId)?.name??t.$t(`townView.k3own4q148`):t.$t(`townView.k3own4q148`)),1)])]),typeof r.posX==`number`?(m(),b(`span`,wt,`✓`)):w(``,!0)],42,vt))),128)),e.daqNodesByTpl.get(o.id)?.length?w(``,!0):(m(),b(`div`,Tt,a(t.$t(`townView.k2tplxp0003`)),1))])):w(``,!0)]))),128))])],64)}}}),[[`__scopeId`,`data-v-da341b93`]]),{__name:`WorkshopTownComponentsTownDaqTree`}),Dt={class:`daq-list`},Ot=[`title`,`onClick`,`onKeydown`],kt={class:`daq-ico`},At={class:`daq-meta`},jt={class:`daq-name`},Mt={class:`daq-code`},Nt=[`title`,`onClick`],Pt={class:`daq-count`},Ft={key:0,class:`daq-children`},It=[`draggable`,`title`,`onDragstart`,`onClick`],Lt={class:`daq-meta`},Rt={class:`daq-name`},zt={class:`daq-node-sub`},Bt={class:`node-val mono`},Vt={class:`node-dev`},Ht={key:0,class:`scene-cur`},Ut={key:0,class:`daq-empty-hint`},Wt=Object.assign(V(p({__name:`TownDcwTree`,props:{mode:{},treeOpen:{},dcwTemplates:{},dcwNodesByTpl:{},deviceTwins:{},dcwLeafState:{type:Function},toggleTreeGroup:{type:Function},createDcwFromTemplate:{type:Function},onDcwNodeDragStart:{type:Function},onFocusDevice:{type:Function}},setup(e){return(t,r)=>{let i=it;return m(),b(`div`,Dt,[(m(!0),b(x,null,h(e.dcwTemplates,o=>(m(),b(`div`,{key:o.id,class:`daq-group`},[y(`div`,{class:n([`daq-card tpl`,{open:!!e.treeOpen[`dcw:${o.id}`]}]),role:`button`,tabindex:`0`,title:t.$t(`townView.k2tplxp0001`,{p0:o.name,p1:o.ch,p2:o.min,p3:o.max,p4:o.unit}),onClick:t=>e.toggleTreeGroup(`dcw:${o.id}`),onKeydown:F(j(t=>e.toggleTreeGroup(`dcw:${o.id}`),[`prevent`]),[`enter`])},[r[0]||=y(`span`,{class:`daq-caret`},`▶`,-1),y(`span`,kt,[g(i,{class:`daq-svg`,icon:o.icon},null,8,[`icon`])]),y(`div`,At,[y(`span`,jt,a(o.name),1),y(`span`,Mt,a(o.code),1)]),e.mode===`edit`?(m(),b(`button`,{key:0,class:`daq-add`,title:t.$t(`townView.k2tplxp0002`,{p0:o.name}),onClick:j(t=>e.createDcwFromTemplate(o),[`stop`])},` + `,8,Nt)):w(``,!0),y(`span`,Pt,`×`+a(e.dcwNodesByTpl.get(o.id)?.length??0),1)],42,Ot),e.treeOpen[`dcw:${o.id}`]?(m(),b(`div`,Ft,[(m(!0),b(x,null,h(e.dcwNodesByTpl.get(o.id)??[],r=>(m(),b(`div`,{key:r.id,class:n([`daq-node`,{placed:typeof r.posX==`number`}]),draggable:e.mode===`edit`,title:typeof r.posX==`number`?t.$t(`townView.k2tplxp0005`):t.$t(`townView.k2tplxp0006`),onDragstart:t=>e.onDcwNodeDragStart(t,r),onClick:t=>typeof r.posX==`number`&&e.onFocusDevice({id:r.id,posX:r.posX,posZ:r.posZ})},[y(`span`,{class:n([`node-dot`,e.dcwLeafState(r)])},null,2),y(`div`,Lt,[y(`span`,Rt,a(r.name),1),y(`span`,zt,[y(`span`,Bt,a(r.value==null?`--`:`${r.value.toFixed(o.decimals)} ${o.unit}`),1),y(`span`,Vt,a(r.deviceBindingId?e.deviceTwins.byId(r.deviceBindingId)?.name??t.$t(`townView.k3own4q148`):t.$t(`townView.k3own4q148`)),1)])]),typeof r.posX==`number`?(m(),b(`span`,Ht,`✓`)):w(``,!0)],42,It))),128)),e.dcwNodesByTpl.get(o.id)?.length?w(``,!0):(m(),b(`div`,Ut,a(t.$t(`townView.k2tplxp0003`)),1))])):w(``,!0)]))),128))])}}}),[[`__scopeId`,`data-v-eec89406`]]),{__name:`WorkshopTownComponentsTownDcwTree`}),Gt={class:`scene-list`},Kt=[`draggable`,`data-channel-id`,`title`,`onDragstart`,`onClick`],qt={class:`scene-meta-wrap`},Jt={class:`scene-name`},Yt={class:`scene-meta`},Xt={key:0,class:`scene-cur`},Zt={key:1,class:`scene-add`},Qt={key:0,class:`scene-hint`},$t=Object.assign(V(p({__name:`TownChannelDock`,props:{mode:{},dockChannels:{},dockHint:{},onChannelDragStart:{type:Function},onDockCardClick:{type:Function}},setup(e){return(t,i)=>(m(),b(`div`,Gt,[(m(!0),b(x,null,h(e.dockChannels,i=>(m(),b(`div`,{key:i.channelId,class:n([`scene-row`,{active:i.placed}]),draggable:!i.placed&&e.mode===`edit`,"data-channel-id":i.channelId,title:i.placed?t.$t(`townView.chPlaced`):t.$t(`townView.chDragHint`),onDragstart:t=>i.placed?void 0:e.onChannelDragStart(t,i.channelId),onClick:t=>e.onDockCardClick(i)},[y(`span`,{class:`scene-ico`,style:r({"--ch":i.color})},null,4),y(`div`,qt,[y(`span`,Jt,a(i.name),1),y(`span`,Yt,a(i.agentCount)+` `+a(t.$t(`townView.k1brss7t128`))+` `+a(i.placed?t.$t(`townView.k3n94g3141`):t.$t(`townView.k3os7i3176`)),1)]),i.placed?(m(),b(`span`,Xt,`✓`)):(m(),b(`span`,Zt,`+`))],42,Kt))),128)),e.dockHint?(m(),b(`div`,Qt,a(e.dockHint),1)):w(``,!0)]))}}),[[`__scopeId`,`data-v-fc42bb88`]]),{__name:`WorkshopTownComponentsTownChannelDock`}),en={key:0,class:`mp-loading`},tn={key:1,class:`mp-failed`},nn=Object.assign(V(p({__name:`ModelPreview3D`,props:{file:{default:``},localFile:{default:null},height:{default:64}},setup(t){let n=t,i=s(null),a=s(!1),o=s(!1),c=globalThis,l=``;function d(){if(c.__modelPreviewRig)return c.__modelPreviewRig;let e=new q({alpha:!0,antialias:!1,powerPreference:`low-power`});e.setPixelRatio(Math.min(window.devicePixelRatio,1.5)),e.toneMapping=4,e.toneMappingExposure=1.15;let t={renderer:e,slots:new Set,raf:0,clock:new K},n=0,r=()=>{t.raf=requestAnimationFrame(r);let e=t.clock.getDelta();if(n+=e*1e3,n<1e3/30)return;let i=n/1e3;n=0;for(let e of t.slots)!e.canvas.isConnected||!e.visible||(e.group&&(e.group.rotation.y+=i*e.speed),t.renderer.setSize(e.w,e.h,!1),t.renderer.render(e.scene,e.camera),e.ctx.clearRect(0,0,e.w,e.h),e.ctx.drawImage(t.renderer.domElement,0,0,e.w,e.h))};return r(),c.__modelPreviewRig=t,t}function p(){let e=c.__modelPreviewRig;!e||e.slots.size>0||(cancelAnimationFrame(e.raf),e.renderer.dispose(),e.renderer.domElement.remove(),delete c.__modelPreviewRig)}function h(e){try{let t=new re(c.__modelPreviewRig.renderer);e.environment=t.fromScene(new Z,.04).texture,e.environmentIntensity=.55,t.dispose()}catch{}e.add(new ie(14674431,3813157,1.3));let t=new G(16773855,2.2);t.position.set(3,4,2),e.add(t);let n=new G(4311284,1);n.position.set(-3,1,-2.5),e.add(n)}function g(e){let t=new U().setFromObject(e),n=new te;t.getSize(n);let r=t.getCenter(new te),i=2/(Math.max(n.x,Math.max(n.y,n.z))||1);e.scale.setScalar(i),e.position.set(-r.x*i,-r.y*i,-r.z*i)}let _=null;function x(e){if(!i.value||a.value)return;let t=i.value,r=t.clientWidth||120,s=n.height||64,c=d(),l=document.createElement(`canvas`);l.style.width=`100%`,l.style.height=`${s}px`,l.width=Math.max(2,Math.round(r*Math.min(window.devicePixelRatio,1.5))),l.height=Math.max(2,Math.round(s*Math.min(window.devicePixelRatio,1.5)));let u=l.getContext(`2d`);if(!u){a.value=!0;return}t.appendChild(l);let f=new J;h(f);let p=new Y(38,r/s,.1,100);p.position.set(2.4,1.8,3.1),p.lookAt(0,0,0);let m=new W;f.add(m),_={canvas:l,ctx:u,scene:f,camera:p,group:m,w:l.width,h:l.height,speed:.6,visible:!1,io:null},typeof IntersectionObserver<`u`?(_.io=new IntersectionObserver(e=>{for(let t of e)_&&(_.visible=t.isIntersecting)}),_.io.observe(l)):_.visible=!0,c.slots.add(_),o.value=!0,new ne().load(e,e=>{let t=e.scene;_&&(t.traverse(e=>{let t=e;t.isMesh&&(t.castShadow=!1,t.receiveShadow=!1)}),g(t),_.group.add(t),o.value=!1)},void 0,()=>{o.value=!1,a.value=!0})}function C(){if(l&&URL.revokeObjectURL(l),l=``,_){let e=c.__modelPreviewRig;_.io?.disconnect(),e?.slots.delete(_),_.scene.traverse(e=>{let t=e;if(t.isMesh){t.geometry?.dispose();let e=Array.isArray(t.material)?t.material:[t.material];for(let t of e){for(let e of Object.keys(t)){let n=t[e];n&&n.isTexture&&n.dispose()}t?.dispose()}}}),_.canvas.remove(),_=null,p()}}function T(){if(a.value=!1,n.localFile){l=URL.createObjectURL(n.localFile),x(l);return}n.file&&x(n.file)}return f(T),v(()=>[n.file,n.localFile],()=>{C(),(n.localFile??(n.file?n.file:null))&&S(()=>T())}),u(C),(n,s)=>(m(),b(`div`,{ref_key:`hostRef`,ref:i,class:`model-preview-3d`,style:r({height:`${t.height}px`})},[e(o)?(m(),b(`div`,en,[...s[0]||=[y(`span`,{class:`mp-spin`},null,-1)]])):e(a)?(m(),b(`div`,tn,` PREVIEW NA `)):w(``,!0)],4))}}),[[`__scopeId`,`data-v-ed056b0a`]]),{__name:`WorkshopTownModelPreview3D`}),rn={class:`asset-lib`},an={class:`lib-head`},on={class:`head-title`},sn={class:`head-hint`},cn={class:`upload-row`},ln={class:`upload-name`},un={key:0,class:`drop-hint`},dn={key:1,class:`upload-file-tag`},fn={class:`upload-actions`},pn=[`disabled`],mn=[`disabled`],hn={key:2,class:`mini-err`},gn={key:3,class:`mini-err`},_n={class:`lib-grid`},vn=[`data-model-id`,`title`,`onDragstart`],yn={key:1,class:`model-img glb dev`},bn={class:`model-name`},xn={class:`model-badge`},Sn={class:`card-actions`},Cn=[`disabled`,`onClick`],wn={key:0,class:`lib-note`},Tn={key:1,class:`lib-note`},En={key:0,class:`mini-msg`},Dn=Object.assign(V(p({__name:`AssetLibrary`,setup(t){let{t:r}=L(),i=xe(),o=_(()=>i.models.filter(e=>e.kind===`dev`)),c=e=>/\.(glb|gltf)$/i.test(e);function l(e,t){e.dataTransfer&&(e.dataTransfer.setData(`application/x-aw-model`,t),e.dataTransfer.setData(`text/plain`,t),e.dataTransfer.effectAllowed=`copy`)}let u=s(!1),d=s(``),f=s(null),p=s(!1),g=e=>{let t=e.target;S(t.files?.[0]??null)},v=e=>{p.value=!1,S(e.dataTransfer?.files?.[0]??null)},S=e=>{if(e&&!/\.(glb|gltf|obj|fbx)$/i.test(e.name)){d.value=r(`assetLibrary.badModelFile`);return}f.value=e,d.value=``},C=()=>{f.value=null};async function T(){let e=f.value;if(!e){d.value=r(`assetLibrary.kcjqcaw012`);return}u.value=!0,d.value=``;try{let t=await i.uploadDevice(e);f.value=null,d.value=r(`assetLibrary.k8nv3or016`,{p0:t.name})}catch(e){d.value=Q(e)}finally{u.value=!1}}let D=s(``),O=s(``);async function A(e){D.value=e,O.value=``;try{await i.removeDevice(e),O.value=r(`assetLibrary.k8n918k013`)}catch(e){O.value=Q(e)}finally{D.value=``}}return(t,s)=>(m(),b(`aside`,rn,[y(`div`,an,[y(`span`,on,a(t.$t(`assetLibrary.k7la4x5001`)),1),y(`span`,sn,a(t.$t(`assetLibrary.kulif5b002`)),1)]),y(`div`,{class:n([`upload-box`,{drop:e(p)}]),onDragover:s[0]||=j(e=>p.value=!0,[`prevent`]),onDragleave:s[1]||=e=>p.value=!1,onDrop:j(v,[`prevent`])},[y(`label`,cn,[y(`input`,{type:`file`,accept:`.glb,.gltf,.obj,.fbx`,class:`file-input`,onChange:g},null,32),y(`span`,ln,[s[2]||=y(`span`,{class:`i-tabler-plus upload-ico`},null,-1),k(` `+a(e(f)?.name||t.$t(`assetLibrary.k1iiort6010`)),1)])]),e(p)?(m(),b(`span`,un,[s[3]||=y(`span`,{class:`i-tabler-download`},null,-1),k(` `+a(t.$t(`assetLibrary.k5hg6jq003`)),1)])):w(``,!0),e(f)?(m(),b(x,{key:1},[c(e(f).name)?(m(),E(nn,{key:0,"local-file":e(f),height:92},null,8,[`local-file`])):(m(),b(`span`,dn,a(e(f).name)+` (`+a(t.$t(`assetLibrary.k1xz5wvk009`)),1)),y(`div`,fn,[y(`button`,{class:`upload-btn go`,disabled:e(u),onClick:T},a(e(u)?t.$t(`assetLibrary.k1ar7n8i005`):t.$t(`assetLibrary.k1hhga4h014`)),9,pn),y(`button`,{class:`upload-btn`,disabled:e(u),onClick:C},a(t.$t(`assetLibrary.k3xdnn004`)),9,mn)])],64)):e(u)?(m(),b(`span`,hn,a(t.$t(`assetLibrary.k1ar7n8i005`)),1)):w(``,!0),e(d)&&!e(f)?(m(),b(`span`,gn,a(e(d)),1)):w(``,!0)],34),y(`div`,_n,[(m(!0),b(x,null,h(e(o),n=>(m(),b(`div`,{key:n.id,class:`model-card`,"data-model-id":n.id,draggable:`true`,title:(`townModelHint`in t?t.townModelHint:e(me))(e(r),n)||t.$t(`assetLibrary.katn7lo015`,{p0:(`townModelName`in t?t.townModelName:e(he))(e(r),n)}),onDragstart:e=>l(e,n.id)},[c(n.file)?(m(),E(nn,{key:0,file:n.file,height:76},null,8,[`file`])):(m(),b(`span`,yn,[...s[4]||=[y(`span`,{class:`i-tabler-cpu glb-cube`,"aria-hidden":`true`},null,-1)]])),y(`span`,bn,a((`townModelName`in t?t.townModelName:e(he))(e(r),n)),1),y(`span`,xn,a(t.$t(`assetLibrary.k1n32zs0006`)),1),y(`div`,Sn,[n.file.includes(`/assets/game/devices/`)?(m(),b(`button`,{key:0,class:`card-btn danger`,disabled:e(D)===n.id,onClick:e=>A(n.id)},a(e(D)===n.id?`…`:t.$t(`assetLibrary.k498l011`)),9,Cn)):w(``,!0)])],40,vn))),128)),e(i).loaded?e(o).length===0?(m(),b(`div`,Tn,a(t.$t(`assetLibrary.k15527e1008`)),1)):w(``,!0):(m(),b(`div`,wn,[s[5]||=y(`span`,{class:`loading-dot`},null,-1),k(` `+a(t.$t(`assetLibrary.k1kq2tmi007`)),1)]))]),e(O)?(m(),b(`span`,En,a(e(O)),1)):w(``,!0)]))}}),[[`__scopeId`,`data-v-f9b68f56`]]),{__name:`WorkshopAssetLibrary`}),On={class:`sheet-hd`},kn={class:`sheet-hd-t`},An=[`aria-label`],jn={class:`panel`},Mn={class:`panel-hd`},Nn={class:`panel-tag`},Pn={class:`panel`},Fn={class:`panel-hd`},In={class:`panel-tag`},Ln={class:`panel`},Rn={class:`panel-hd`},zn={class:`panel-tag`},Bn={class:`panel`},Vn={class:`panel-hd`},Hn={class:`panel-tag`},Un=Object.assign(V(p({__name:`TownLeftRail`,props:{sheetOpen:{},closeSheet:{type:Function},mode:{},treeOpen:{},deviceModels:{},daqTwins:{},deviceTwins:{},daq:{},daqTemplates:{},daqNodesByTpl:{},daqLeafState:{type:Function},toggleTreeGroup:{type:Function},createDaqFromTemplate:{type:Function},onDaqNodeDragStart:{type:Function},dcw:{},dcwTemplates:{},dcwNodesByTpl:{},dcwLeafState:{type:Function},createDcwFromTemplate:{type:Function},onDcwNodeDragStart:{type:Function},dockChannels:{},dockHint:{},onChannelDragStart:{type:Function},onDockCardClick:{type:Function},onFocusDevice:{type:Function}},setup(e){return(t,r)=>(m(),b(`aside`,{id:`town-rail-left`,class:n([`rail rail-left`,{"sheet-open":e.sheetOpen===`left`}])},[y(`div`,On,[r[1]||=y(`span`,{class:`sheet-grip`,"aria-hidden":`true`},null,-1),y(`span`,kn,a(t.$t(`townView.k1k75lzy030`)),1),y(`button`,{type:`button`,class:`sheet-x`,"aria-label":t.$t(`common.close`),onClick:r[0]||=(...t)=>e.closeSheet&&e.closeSheet(...t)},` ✕ `,8,An)]),y(`section`,jn,[y(`div`,Mn,[y(`h3`,null,a(t.$t(`townView.k1k75lzy030`)),1),y(`span`,Nn,a(e.deviceModels.length),1)]),g(Dn,{class:`lib-embed`})]),y(`section`,Pn,[y(`div`,Fn,[y(`h3`,null,a(t.$t(`townView.k2gwyas031`)),1),y(`span`,In,a(e.daqTwins.length),1)]),g(Et,{mode:e.mode,"tree-open":e.treeOpen,"daq-templates":e.daqTemplates,"daq-nodes-by-tpl":e.daqNodesByTpl,"device-twins":e.deviceTwins,daq:e.daq,"daq-leaf-state":e.daqLeafState,"toggle-tree-group":e.toggleTreeGroup,"create-daq-from-template":e.createDaqFromTemplate,"on-daq-node-drag-start":e.onDaqNodeDragStart,"on-focus-device":e.onFocusDevice},null,8,[`mode`,`tree-open`,`daq-templates`,`daq-nodes-by-tpl`,`device-twins`,`daq`,`daq-leaf-state`,`toggle-tree-group`,`create-daq-from-template`,`on-daq-node-drag-start`,`on-focus-device`])]),y(`section`,Ln,[y(`div`,Rn,[y(`h3`,null,a(t.$t(`townView.km7ayhi033`)),1),y(`span`,zn,a(e.dcw.nodes.length),1)]),g(Wt,{mode:e.mode,"tree-open":e.treeOpen,"dcw-templates":e.dcwTemplates,"dcw-nodes-by-tpl":e.dcwNodesByTpl,"device-twins":e.deviceTwins,"dcw-leaf-state":e.dcwLeafState,"toggle-tree-group":e.toggleTreeGroup,"create-dcw-from-template":e.createDcwFromTemplate,"on-dcw-node-drag-start":e.onDcwNodeDragStart,"on-focus-device":e.onFocusDevice},null,8,[`mode`,`tree-open`,`dcw-templates`,`dcw-nodes-by-tpl`,`device-twins`,`dcw-leaf-state`,`toggle-tree-group`,`create-dcw-from-template`,`on-dcw-node-drag-start`,`on-focus-device`])]),y(`section`,Bn,[y(`div`,Vn,[y(`h3`,null,a(t.$t(`townView.k1c9n911034`)),1),y(`span`,Hn,a(e.dockChannels.length),1)]),g($t,{mode:e.mode,"dock-channels":e.dockChannels,"dock-hint":e.dockHint,"on-channel-drag-start":e.onChannelDragStart,"on-dock-card-click":e.onDockCardClick},null,8,[`mode`,`dock-channels`,`dock-hint`,`on-channel-drag-start`,`on-dock-card-click`])])],2))}}),[[`__scopeId`,`data-v-1c78d963`]]),{__name:`WorkshopTownComponentsTownLeftRail`}),Wn={class:`stage-top`},Gn={class:`vp-title`},Kn={class:`vp-id`},qn={class:`vp-tools`},Jn=[`title`],Yn=[`title`],Xn=[`title`],Zn=[`title`],Qn={class:`angle-chip`},$n=[`value`,`aria-label`],er={value:`std`},tr={value:`top`},nr={value:`front`},rr={value:`side`},ir=Object.assign(V(p({__name:`TownStageTop`,props:C({activeChannelName:{},viewPreset:{},orbitOn:{type:Boolean},locateSelected:{type:Function},toggleOrbit:{type:Function},fullscreenStage:{type:Function},onViewPreset:{type:Function}},{showCallouts:{type:Boolean,required:!0},showCalloutsModifiers:{}}),emits:[`update:showCallouts`],setup(e){let t=d(e,`showCallouts`);return(r,i)=>(m(),b(x,null,[y(`div`,Wn,[y(`div`,Gn,[y(`h2`,null,a(r.$t(`townView.k1b0z4vr035`)),1),y(`span`,Kn,`CH · `+a(e.activeChannelName||r.$t(`townView.k3lkuz3142`)),1)]),y(`div`,qn,[y(`button`,{class:`vp-tool`,title:r.$t(`townView.k18d6wnb005`),onClick:i[0]||=(...t)=>e.locateSelected&&e.locateSelected(...t)},[...i[5]||=[y(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[y(`circle`,{cx:`12`,cy:`12`,r:`7`}),y(`path`,{d:`M12 2v4M12 18v4M2 12h4M18 12h4`})],-1)]],8,Jn),y(`button`,{class:n([`vp-tool`,{on:e.orbitOn}]),title:r.$t(`townView.k1io51dn006`),onClick:i[1]||=(...t)=>e.toggleOrbit&&e.toggleOrbit(...t)},[...i[6]||=[y(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[y(`circle`,{cx:`12`,cy:`12`,r:`3.2`}),y(`path`,{d:`M20.5 9a10 10 0 0 1 .3 4.5M3.5 15a10 10 0 0 1-.3-4.5`})],-1)]],10,Yn),y(`button`,{class:n([`vp-tool`,{on:t.value}]),title:r.$t(`townView.k1sgjlq8007`),onClick:i[2]||=e=>t.value=!t.value},[...i[7]||=[y(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[y(`path`,{d:`M4 8h12l4 4-4 4H4z`}),y(`circle`,{cx:`8.5`,cy:`12`,r:`1.4`})],-1)]],10,Xn),y(`button`,{class:`vp-tool`,title:r.$t(`townView.k3wuf0008`),onClick:i[3]||=(...t)=>e.fullscreenStage&&e.fullscreenStage(...t)},[...i[8]||=[y(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[y(`path`,{d:`M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5`})],-1)]],8,Zn)])]),y(`div`,Qn,[y(`select`,{value:e.viewPreset,"aria-label":r.$t(`townView.k1k4j5i7009`),onChange:i[4]||=t=>e.onViewPreset(t)},[y(`option`,er,a(r.$t(`townView.kv72860036`)),1),y(`option`,tr,a(r.$t(`townView.viewTop`)),1),y(`option`,nr,a(r.$t(`townView.viewFront`)),1),y(`option`,rr,a(r.$t(`townView.viewSide`)),1)],40,$n)])],64))}}),[[`__scopeId`,`data-v-2a11f411`]]),{__name:`WorkshopTownComponentsTownStageTop`}),ar={class:`leaders`},or=[`d`,`stroke`],sr=[`cx`,`cy`,`fill`],cr={class:`callout-layer`},lr=[`title`,`onClick`],ur={class:`co-label`},dr={class:`co-val`},fr={class:`co-range`},pr=Object.assign(V(p({__name:`TownCalloutLayer`,props:{showCallouts:{type:Boolean},callouts:{},selectDeviceFromCallout:{type:Function}},setup(e){return(t,i)=>e.showCallouts?(m(),b(x,{key:0},[(m(),b(`svg`,ar,[(m(!0),b(x,null,h(e.callouts,e=>D((m(),b(`g`,{key:`ld-${e.id}`,class:n({near:e.near})},[y(`path`,{d:`M ${e.x} ${e.y-8} L ${e.x} ${e.y-2}`,stroke:e.warn?`rgba(246,196,83,.8)`:`rgba(65,200,244,.55)`,"stroke-width":`1.3`,fill:`none`},null,8,or),y(`circle`,{cx:e.x,cy:e.y,r:`2.6`,fill:e.warn?`#f6c453`:`#41c8f4`},null,8,sr)],2)),[[M,e.leader]])),128))])),y(`div`,cr,[(m(!0),b(x,null,h(e.callouts,o=>(m(),b(`div`,{key:o.id,class:n([`callout`,{warn:o.warn,near:o.near}]),style:r({left:o.x+`px`,top:o.y+`px`}),title:t.$t(`townView.k1ejxiwp010`),onClick:t=>e.selectDeviceFromCallout(o.id)},[y(`div`,ur,[i[0]||=y(`span`,{class:`co-dot`},null,-1),k(a(o.label),1)]),y(`div`,dr,[k(a(o.value),1),y(`small`,null,a(o.unit),1)]),y(`div`,fr,a(t.$t(`townView.k1faqmjb073`))+` `+a(o.lo.toFixed(Math.min(2,(String(o.lo).split(`.`)[1]??``).length+1)))+` – `+a(o.hi.toFixed(Math.min(2,(String(o.hi).split(`.`)[1]??``).length+1))),1)],14,lr))),128))])],64)):w(``,!0)}}),[[`__scopeId`,`data-v-f4158f42`]]),{__name:`WorkshopTownComponentsTownCalloutLayer`}),mr={class:`kpi-strip`},hr={class:`kpi`},gr={class:`kpi-meta`},_r={class:`kpi-label`},vr={class:`kpi-val`},yr={class:`kpi`},br={class:`kpi-meta`},xr={class:`kpi-label`},Sr={class:`kpi-val`},Cr={class:`kpi`},wr={class:`kpi-meta`},Tr={class:`kpi-label`},Er={class:`kpi-val`},Dr={class:`kpi`},Or={class:`kpi-meta`},kr={class:`kpi-label`},Ar={class:`kpi-val`},jr={class:`kpi`},Mr={class:`kpi-meta`},Nr={class:`kpi-label`},Pr={class:`kpi-val`},Fr=Object.assign(V(p({__name:`TownKpiStrip`,props:{deviceCount:{},runningCount:{},activeAlarmCount:{},channelCount:{},healthPct:{}},setup(e){return(t,n)=>(m(),b(`div`,mr,[y(`div`,hr,[n[0]||=y(`span`,{class:`kpi-ico c1`},[y(`svg`,{class:`kpi-svg`,viewBox:`0 0 24 24`},[y(`path`,{d:`M4 8.5 12 4l8 4.5v7L12 20l-8-4.5v-7Z`}),y(`path`,{d:`M4 8.5l8 4.5 8-4.5M12 13v7`})])],-1),y(`div`,gr,[y(`div`,_r,a(t.$t(`townView.k1k6xemt037`)),1),y(`div`,vr,[k(a(e.deviceCount),1),y(`small`,null,a(t.$t(`townView.k49lh038`)),1)])])]),y(`div`,yr,[n[1]||=y(`span`,{class:`kpi-ico c2`},[y(`svg`,{class:`kpi-svg`,viewBox:`0 0 24 24`},[y(`path`,{d:`m5 12.5 4.5 4.5L19 7.5`})])],-1),y(`div`,br,[y(`div`,xr,a(t.$t(`townView.k1l1a9t2039`)),1),y(`div`,Sr,[k(a(e.runningCount),1),y(`small`,null,a(t.$t(`townView.k49lh038`)),1)])])]),y(`div`,Cr,[n[2]||=y(`span`,{class:`kpi-ico c3`},[y(`svg`,{class:`kpi-svg`,viewBox:`0 0 24 24`},[y(`path`,{d:`M12 3 22 20H2L12 3Z`}),y(`path`,{d:`M12 10v4M12 17v.2`})])],-1),y(`div`,wr,[y(`div`,Tr,a(t.$t(`townView.k1fsi3ir002`)),1),y(`div`,Er,[k(a(e.activeAlarmCount),1),y(`small`,null,a(t.$t(`townView.k4dfq040`)),1)])])]),y(`div`,Dr,[n[3]||=O(`<span class="kpi-ico c4" data-v-4fd4f40a><svg class="kpi-svg" viewBox="0 0 24 24" data-v-4fd4f40a><path d="M9.5 14.5 14.5 9.5" data-v-4fd4f40a></path><path d="M11 6.5 12.8 4.7a4 4 0 0 1 5.6 5.6L16.5 12" data-v-4fd4f40a></path><path d="m13 17.5-1.8 1.8a4 4 0 0 1-5.6-5.6L7.5 12" data-v-4fd4f40a></path></svg></span>`,1),y(`div`,Or,[y(`div`,kr,a(t.$t(`townView.k1emsai1041`)),1),y(`div`,Ar,[k(a(e.channelCount),1),y(`small`,null,a(t.$t(`townView.k4l1w042`)),1)])])]),y(`div`,jr,[n[5]||=O(`<span class="kpi-ico c5" data-v-4fd4f40a><svg class="kpi-svg" viewBox="0 0 24 24" data-v-4fd4f40a><path d="M5 19a9 9 0 1 1 14 0" data-v-4fd4f40a></path><path d="M12 13l3.5-3.5" data-v-4fd4f40a></path><circle cx="12" cy="13" r="1.4" data-v-4fd4f40a></circle></svg></span>`,1),y(`div`,Mr,[y(`div`,Nr,a(t.$t(`townView.kbrxdq1043`)),1),y(`div`,Pr,[k(a(e.healthPct),1),n[4]||=y(`small`,null,`%`,-1)])])])]))}}),[[`__scopeId`,`data-v-4fd4f40a`]]),{__name:`WorkshopTownComponentsTownKpiStrip`}),Ir=[`title`],Lr={class:`bp-name`},Rr={class:`bp-sub`},zr={class:`bp-tabs`},Br={class:`bp-row`},Vr={class:`bp-label`},Hr={class:`bp-seg`},Ur={class:`bp-row`},Wr={class:`bp-label`},Gr={class:`bp-val`},Kr={class:`bp-row`},qr={class:`bp-label`},Jr={class:`bp-val`},Yr={class:`bp-row`},Xr={class:`bp-label`},Zr={class:`bp-val`},Qr={class:`bp-hint`},$r={class:`member-list`},ei={class:`member-info`},ti={class:`member-name`},ni=[`value`,`onChange`],ri=[`value`],ii={key:0,class:`bp-hint`},ai={class:`bp-actions`},oi=Object.assign(V(p({__name:`TownBoundaryPanel`,props:C({selectedChannel:{},channelName:{},channelPanelTab:{},channelMembers:{},agentModels:{},panelPos:{},sliderPct:{type:Function},hashColor:{type:Function},onPanelGripDown:{type:Function},openChannelTab:{type:Function},applyBoundaryDraft:{type:Function},bindMemberModel:{type:Function},saveChannelLayout:{type:Function},removeChannelFromScene:{type:Function},onSelectChannel:{type:Function}},{boundaryDraft:{required:!0},boundaryDraftModifiers:{}}),emits:[`update:boundaryDraft`],setup(e){let t=d(e,`boundaryDraft`);return(i,o)=>(m(),b(`div`,{class:`boundary-panel drag-panel`,style:r(e.panelPos.boundary?{left:e.panelPos.boundary.x+`px`,top:e.panelPos.boundary.y+`px`,bottom:`auto`,transform:`none`}:void 0)},[y(`div`,{class:`bp-title drag-grip`,title:i.$t(`townView.k1d0rl5z011`),onPointerdown:o[2]||=t=>e.onPanelGripDown(t,`boundary`)},[y(`span`,Lr,a(e.channelName??e.selectedChannel.slice(0,8)),1),y(`span`,Rr,a(i.$t(`townView.k1mehlxs046`)),1),y(`div`,zr,[y(`button`,{class:n([`bp-tab`,{on:e.channelPanelTab===`boundary`}]),onClick:o[0]||=t=>e.openChannelTab(`boundary`)},a(i.$t(`townView.k489ka047`)),3),y(`button`,{class:n([`bp-tab`,{on:e.channelPanelTab===`members`}]),onClick:o[1]||=t=>e.openChannelTab(`members`)},a(i.$t(`townView.k3ztf1129`))+` `+a(e.channelMembers.length),3)])],40,Ir),e.channelPanelTab===`boundary`?(m(),b(x,{key:0},[y(`div`,Br,[y(`span`,Vr,a(i.$t(`townView.k3zhy5048`)),1),y(`div`,Hr,[y(`button`,{class:n([`seg-btn`,{on:t.value.shape===`ellipse`}]),onClick:o[3]||=n=>{t.value.shape=`ellipse`,e.applyBoundaryDraft()}},a(i.$t(`townView.k414bc049`)),3),y(`button`,{class:n([`seg-btn`,{on:t.value.shape===`rect`}]),onClick:o[4]||=n=>{t.value.shape=`rect`,e.applyBoundaryDraft()}},a(i.$t(`townView.k43u0g050`)),3)])]),y(`div`,Ur,[y(`span`,Wr,a(i.$t(`townView.k1fbz4s1051`)),1),D(y(`input`,{"onUpdate:modelValue":o[5]||=e=>t.value.radiusX=e,class:`bp-range`,type:`range`,min:`80`,max:`4000`,step:`8`,style:r({"--fill":e.sliderPct(t.value.radiusX,80,4e3)}),onChange:o[6]||=(...t)=>e.applyBoundaryDraft&&e.applyBoundaryDraft(...t)},null,36),[[A,t.value.radiusX,void 0,{number:!0}]]),y(`span`,Gr,a(Math.round(t.value.radiusX)),1)]),y(`div`,Kr,[y(`span`,qr,a(i.$t(`townView.k1ighwgs052`)),1),D(y(`input`,{"onUpdate:modelValue":o[7]||=e=>t.value.radiusZ=e,class:`bp-range`,type:`range`,min:`60`,max:`4000`,step:`8`,style:r({"--fill":e.sliderPct(t.value.radiusZ,60,4e3)}),onChange:o[8]||=(...t)=>e.applyBoundaryDraft&&e.applyBoundaryDraft(...t)},null,36),[[A,t.value.radiusZ,void 0,{number:!0}]]),y(`span`,Jr,a(Math.round(t.value.radiusZ)),1)]),y(`div`,Yr,[y(`span`,Xr,a(i.$t(`townView.k40qab053`)),1),D(y(`input`,{"onUpdate:modelValue":o[9]||=e=>t.value.rotationY=e,class:`bp-range`,type:`range`,min:`0`,max:`360`,step:`5`,style:r({"--fill":e.sliderPct(t.value.rotationY??0,0,360)}),onChange:o[10]||=(...t)=>e.applyBoundaryDraft&&e.applyBoundaryDraft(...t)},null,36),[[A,t.value.rotationY,void 0,{number:!0}]]),y(`span`,Zr,a(Math.round(t.value.rotationY??0))+`°`,1)])],64)):(m(),b(x,{key:1},[y(`div`,Qr,a(i.$t(`townView.kimxls2054`)),1),y(`div`,$r,[(m(!0),b(x,null,h(e.channelMembers,t=>(m(),b(`div`,{key:t.agentId,class:`member-row`},[y(`span`,{class:`member-ava`,style:r({color:e.hashColor(e.selectedChannel)})},a(t.name.charAt(0).toUpperCase()),5),y(`div`,ei,[y(`span`,ti,a(t.name),1),y(`span`,{class:n([`member-role`,t.role===`lead`?`r-lead`:`r-worker`])},a(t.role===`lead`?`Leader`:`Worker`),3)]),y(`select`,{class:`member-select`,value:(t.modelRef??``)||`hero-3d`,onChange:n=>e.bindMemberModel(t.agentId,n.target.value)},[(m(!0),b(x,null,h(e.agentModels,e=>(m(),b(`option`,{key:e.id,value:e.id},a(e.name),9,ri))),128))],40,ni)]))),128)),e.channelMembers.length===0?(m(),b(`div`,ii,a(i.$t(`townView.k419rbs055`)),1)):w(``,!0)])],64)),y(`div`,ai,[e.channelPanelTab===`boundary`?(m(),b(`button`,{key:0,class:`bp-btn save`,onClick:o[11]||=(...t)=>e.saveChannelLayout&&e.saveChannelLayout(...t)},a(i.$t(`townView.k1b3kp8f056`)),1)):w(``,!0),y(`button`,{class:`bp-btn danger`,onClick:o[12]||=(...t)=>e.removeChannelFromScene&&e.removeChannelFromScene(...t)},a(i.$t(`townView.k1hs45qg057`)),1),y(`button`,{class:`bp-btn`,onClick:o[13]||=t=>e.onSelectChannel(null)},a(i.$t(`townView.k3x62t058`)),1)])],4))}}),[[`__scopeId`,`data-v-4018844c`]]),{__name:`WorkshopTownComponentsTownBoundaryPanel`}),si=[`aria-expanded`],ci={class:`dock-toggle-t`},li={class:`dock-toggle-hint mono`},ui={id:`town-dock-controls`,class:`dock-card`},di={class:`dock-hd`},fi={class:`dock-mode`},pi={class:`ctl-sec`},mi={class:`ctl-row`},hi=[`title`],gi={class:`fps-seg`},_i=[`onClick`],vi={class:`ctl-row`},yi=[`title`],bi={class:`fps-seg`},xi=[`onClick`],Si={class:`ctl-sec`},Ci={class:`ctl-row`},wi={class:`ctl-name`},Ti=[`value`],Ei={class:`ctl-val`},Di={class:`ctl-row`},Oi={class:`ctl-name`},ki=[`value`],Ai={class:`ctl-val`},ji={class:`ctl-row`},Mi={class:`ctl-name`},Ni=[`value`],Pi={class:`ctl-val`},Fi={class:`ctl-row`},Ii=[`title`],Li=[`value`],Ri={class:`ctl-val`},zi={class:`ctl-sec`},Bi={class:`ctl-row`},Vi={class:`ctl-name`},Hi={class:`ctl-btns`},Ui=[`disabled`,`title`],Wi=Object.assign(V(p({__name:`TownControlDock`,props:C({mode:{},qualityMode:{},fpsCap:{},qualityOptions:{},fpsOptions:{},exposure:{},tintOpacity:{},snap:{type:Boolean},estop:{type:Boolean},sliderPct:{type:Function},setQualityMode:{type:Function},setFpsCap:{type:Function},onExposureInput:{type:Function},onTintInput:{type:Function},toggleSnap:{type:Function},onResetView:{type:Function},saveLayout:{type:Function},toggleEstop:{type:Function}},{dockOpen:{type:Boolean,required:!0},dockOpenModifiers:{},threshPct:{required:!0},threshPctModifiers:{},calloutNearDist:{required:!0},calloutNearDistModifiers:{}}),emits:[`update:dockOpen`,`update:threshPct`,`update:calloutNearDist`],setup(e){let t=d(e,`dockOpen`),i=d(e,`threshPct`),o=d(e,`calloutNearDist`);return(s,c)=>(m(),b(x,null,[y(`button`,{type:`button`,class:`dock-toggle`,"aria-controls":`town-dock-controls`,"aria-expanded":t.value?`true`:`false`,onClick:c[0]||=e=>t.value=!t.value},[y(`span`,ci,a(s.$t(`townView.k1c9iq23060`)),1),y(`span`,li,a(e.mode===`edit`?s.$t(`townView.k1iipfcs143`):s.$t(`townView.k1l147w1177`)),1),c[9]||=y(`span`,{class:`dock-caret`,"aria-hidden":`true`},`▾`,-1)],8,si),y(`section`,ui,[y(`div`,di,[y(`h3`,null,a(s.$t(`townView.k1c9iq23060`)),1),y(`span`,fi,a(e.mode===`edit`?s.$t(`townView.k1iipfcs143`):s.$t(`townView.k1l147w1177`)),1)]),y(`p`,pi,a(s.$t(`townView.secRender`)),1),y(`div`,mi,[y(`span`,{class:`ctl-name`,title:s.$t(`townView.qualityTip`)},a(s.$t(`townView.qualityLabel`)),9,hi),y(`div`,gi,[(m(!0),b(x,null,h(e.qualityOptions,t=>(m(),b(`button`,{key:t.v,class:n({on:e.qualityMode===t.v}),onClick:n=>e.setQualityMode(t.v)},a(s.$t(t.label)),11,_i))),128))]),c[10]||=y(`span`,{class:`ctl-val`},null,-1)]),y(`div`,vi,[y(`span`,{class:`ctl-name`,title:s.$t(`townView.fpsCapTip`)},a(s.$t(`townView.fpsCapLabel`)),9,yi),y(`div`,bi,[(m(!0),b(x,null,h(e.fpsOptions,t=>(m(),b(`button`,{key:t.v,class:n({on:e.fpsCap===t.v}),onClick:n=>e.setFpsCap(t.v)},a(t.label),11,xi))),128))]),c[11]||=y(`span`,{class:`ctl-val`},null,-1)]),y(`p`,Si,a(s.$t(`townView.secEnv`)),1),y(`div`,Ci,[y(`span`,wi,a(s.$t(`townView.k1gizopz061`)),1),y(`input`,{class:`ctl-range`,type:`range`,min:`30`,max:`220`,value:Math.round(e.exposure*100),style:r({"--fill":e.sliderPct(Math.round(e.exposure*100),30,220)}),onInput:c[1]||=t=>e.onExposureInput(t)},null,44,Ti),y(`span`,Ei,a(Math.round(e.exposure*100))+`%`,1)]),y(`div`,Di,[y(`span`,Oi,a(s.$t(`townView.k1bcpqto062`)),1),y(`input`,{class:`ctl-range`,type:`range`,min:`10`,max:`100`,value:Math.round(e.tintOpacity*100),style:r({"--fill":e.sliderPct(Math.round(e.tintOpacity*100),10,100)}),onInput:c[2]||=t=>e.onTintInput(t)},null,44,ki),y(`span`,Ai,a(Math.round(e.tintOpacity*100))+`%`,1)]),y(`div`,ji,[y(`span`,Mi,a(s.$t(`townView.k1bztha1063`)),1),y(`input`,{class:`ctl-range`,type:`range`,min:`60`,max:`120`,value:i.value,style:r({"--fill":e.sliderPct(i.value,60,120)}),onInput:c[3]||=e=>i.value=Number(e.target.value)},null,44,Ni),y(`span`,Pi,a(i.value)+`%`,1)]),y(`div`,Fi,[y(`span`,{class:`ctl-name`,title:s.$t(`townView.kz71l1f012`)},a(s.$t(`townView.ka4i1s9064`)),9,Ii),y(`input`,{class:`ctl-range`,type:`range`,min:`0`,max:`3000`,step:`50`,value:o.value,style:r({"--fill":e.sliderPct(o.value,0,3e3)}),onInput:c[4]||=e=>o.value=Number(e.target.value)},null,44,Li),y(`span`,Ri,a(o.value===0?s.$t(`townView.k493s144`):`${o.value}`),1)]),y(`p`,zi,a(s.$t(`townView.secOps`)),1),y(`div`,Bi,[y(`span`,Vi,a(s.$t(`townView.k1idc6pa065`)),1),y(`button`,{class:n([`snap-toggle`,{on:e.snap}]),onClick:c[5]||=(...t)=>e.toggleSnap&&e.toggleSnap(...t)},a(e.snap?s.$t(`townView.k4bs5145`):s.$t(`townView.k493s144`)),3),c[12]||=y(`span`,{class:`ctl-val`},null,-1)]),y(`div`,Hi,[y(`button`,{class:`btn btn-primary`,onClick:c[6]||=(...t)=>e.onResetView&&e.onResetView(...t)},a(s.$t(`townView.k1lap9bs024`)),1),y(`button`,{class:`btn btn-ghost`,disabled:e.mode!==`edit`,title:e.mode===`edit`?s.$t(`townView.ksavetip181`):s.$t(`townView.krotip182`),onClick:c[7]||=(...t)=>e.saveLayout&&e.saveLayout(...t)},a(s.$t(`townView.k1b3bk8t029`)),9,Ui),y(`button`,{class:n([`btn btn-danger`,{armed:e.estop}]),onClick:c[8]||=(...t)=>e.toggleEstop&&e.toggleEstop(...t)},a(s.$t(`townView.k1i046wf066`)),3)])])],64))}}),[[`__scopeId`,`data-v-efbde94b`]]),{__name:`WorkshopTownComponentsTownControlDock`}),Gi={class:`dock-card`},Ki={class:`dock-hd`},qi={class:`dock-count mono`},Ji=[`onClick`],Yi=[`title`],Xi={class:`trend-wrap`},Zi={key:0,class:`trend-empty`},Qi=Object.assign(V(p({__name:`TownTrendDock`,props:C({channelCount:{},trendChips:{},trendOverflow:{},trendOn:{type:Function},trendColor:{type:Function},toggleTrend:{type:Function},setCanvas:{type:Function}},{trendExpanded:{type:Boolean,required:!0},trendExpandedModifiers:{}}),emits:[`update:trendExpanded`],setup(e){let t=d(e,`trendExpanded`);return(i,o)=>(m(),b(`section`,Gi,[y(`div`,Ki,[y(`h3`,null,a(i.$t(`townView.k1kfoef9067`)),1),y(`span`,qi,a(e.channelCount),1),y(`div`,{class:n([`trend-legend`,{expanded:t.value}])},[(m(!0),b(x,null,h(e.trendChips,t=>(m(),b(`button`,{key:t.id,class:n([`lg-chip`,{off:!e.trendOn(t.id)}]),onClick:n=>e.toggleTrend(t.id)},[y(`span`,{class:`lg-dot`,style:r({background:e.trendColor(t.id)})},null,4),k(a(t.name),1)],10,Ji))),128)),e.trendOverflow>0?(m(),b(`button`,{key:0,class:`lg-chip lg-more mono`,title:t.value?i.$t(`townView.trendCollapse`):i.$t(`townView.trendExpandAll`,{p0:e.channelCount}),onClick:o[0]||=e=>t.value=!t.value},a(t.value?i.$t(`townView.trendCollapse`):`+${e.trendOverflow}`),9,Yi)):w(``,!0)],2)]),y(`div`,Xi,[y(`canvas`,{ref:e.setCanvas,class:`trend-cv`},null,512),e.channelCount?w(``,!0):(m(),b(`span`,Zi,a(i.$t(`townView.k1uht2uv068`)),1))])]))}}),[[`__scopeId`,`data-v-56688a45`]]),{__name:`WorkshopTownComponentsTownTrendDock`}),$i={key:0,"data-hud":`town-loading`,class:`loading-mask`},ea={class:`loading-text`},ta=Object.assign(V(p({__name:`TownLoadingMask`,props:{ready:{type:Boolean}},setup(e){return(t,n)=>e.ready?w(``,!0):(m(),b(`div`,$i,[n[0]||=y(`div`,{class:`loading-spinner`},null,-1),y(`span`,ea,a(t.$t(`townView.kvjdqfg059`)),1)]))}}),[[`__scopeId`,`data-v-e73bf2bd`]]),{__name:`WorkshopTownComponentsTownLoadingMask`}),na={class:`stage-col`},ra={key:0,class:`empty-hint`},ia={key:2,class:`drop-chip`},aa={key:3,class:`error-chip`},oa=Object.assign(V(p({__name:`TownStage`,props:C({setStageRef:{type:Function},setHostRef:{type:Function},mode:{},ready:{type:Boolean},errorText:{},lastDropText:{},activeChannelName:{},viewPreset:{},orbitOn:{type:Boolean},locateSelected:{type:Function},toggleOrbit:{type:Function},fullscreenStage:{type:Function},onViewPreset:{type:Function},callouts:{},selectDeviceFromCallout:{type:Function},deviceCount:{},runningCount:{},activeAlarmCount:{},daqTwins:{},healthPct:{},sceneEmpty:{type:Boolean},selectedChannel:{},channelPanelTab:{},channelMembers:{},agentModels:{},panelPos:{},sliderPct:{type:Function},hashColor:{type:Function},onPanelGripDown:{type:Function},openChannelTab:{type:Function},applyBoundaryDraft:{type:Function},bindMemberModel:{type:Function},saveChannelLayout:{type:Function},removeChannelFromScene:{type:Function},onSelectChannel:{type:Function},entities:{},qualityMode:{},fpsCap:{},qualityOptions:{},fpsOptions:{},exposure:{},tintOpacity:{},snap:{type:Boolean},estop:{type:Boolean},setQualityMode:{type:Function},setFpsCap:{type:Function},onExposureInput:{type:Function},onTintInput:{type:Function},toggleSnap:{type:Function},onResetView:{type:Function},saveLayout:{type:Function},toggleEstop:{type:Function},trendChips:{},trendOverflow:{},trendOn:{type:Function},trendColor:{type:Function},toggleTrend:{type:Function},setTrendCanvas:{type:Function}},{showCallouts:{type:Boolean,required:!0},showCalloutsModifiers:{},boundaryDraft:{required:!0},boundaryDraftModifiers:{},dockOpen:{type:Boolean,required:!0},dockOpenModifiers:{},threshPct:{required:!0},threshPctModifiers:{},calloutNearDist:{required:!0},calloutNearDistModifiers:{},trendExpanded:{type:Boolean,required:!0},trendExpandedModifiers:{}}),emits:[`update:showCallouts`,`update:boundaryDraft`,`update:dockOpen`,`update:threshPct`,`update:calloutNearDist`,`update:trendExpanded`],setup(e){let t=d(e,`showCallouts`),r=d(e,`boundaryDraft`),i=d(e,`dockOpen`),o=d(e,`threshPct`),s=d(e,`calloutNearDist`),c=d(e,`trendExpanded`);return(l,u)=>(m(),b(`main`,na,[y(`div`,{ref:e.setStageRef,class:`stage`},[y(`div`,{id:`town-host`,ref:e.setHostRef,class:`town-host`},null,512),u[6]||=y(`div`,{class:`stage-vignette`},null,-1),g(ir,{"show-callouts":t.value,"onUpdate:showCallouts":u[0]||=e=>t.value=e,"active-channel-name":e.activeChannelName,"view-preset":e.viewPreset,"orbit-on":e.orbitOn,"locate-selected":e.locateSelected,"toggle-orbit":e.toggleOrbit,"fullscreen-stage":e.fullscreenStage,"on-view-preset":e.onViewPreset},null,8,[`show-callouts`,`active-channel-name`,`view-preset`,`orbit-on`,`locate-selected`,`toggle-orbit`,`fullscreen-stage`,`on-view-preset`]),g(pr,{"show-callouts":t.value,callouts:e.callouts,"select-device-from-callout":e.selectDeviceFromCallout},null,8,[`show-callouts`,`callouts`,`select-device-from-callout`]),g(Fr,{"device-count":e.deviceCount,"running-count":e.runningCount,"active-alarm-count":e.activeAlarmCount,"channel-count":e.daqTwins.length,"health-pct":e.healthPct},null,8,[`device-count`,`running-count`,`active-alarm-count`,`channel-count`,`health-pct`]),e.sceneEmpty?(m(),b(`div`,ra,[y(`b`,null,a(l.$t(`townView.k3rwxjc044`)),1),y(`span`,null,a(l.$t(`townView.k1sa1eaj045`)),1)])):w(``,!0),e.selectedChannel&&r.value?(m(),E(oi,{key:1,"boundary-draft":r.value,"onUpdate:boundaryDraft":u[1]||=e=>r.value=e,"selected-channel":e.selectedChannel,"channel-name":e.entities.channels[e.selectedChannel]?.name,"channel-panel-tab":e.channelPanelTab,"channel-members":e.channelMembers,"agent-models":e.agentModels,"panel-pos":e.panelPos,"slider-pct":e.sliderPct,"hash-color":e.hashColor,"on-panel-grip-down":e.onPanelGripDown,"open-channel-tab":e.openChannelTab,"apply-boundary-draft":e.applyBoundaryDraft,"bind-member-model":e.bindMemberModel,"save-channel-layout":e.saveChannelLayout,"remove-channel-from-scene":e.removeChannelFromScene,"on-select-channel":e.onSelectChannel},null,8,[`boundary-draft`,`selected-channel`,`channel-name`,`channel-panel-tab`,`channel-members`,`agent-models`,`panel-pos`,`slider-pct`,`hash-color`,`on-panel-grip-down`,`open-channel-tab`,`apply-boundary-draft`,`bind-member-model`,`save-channel-layout`,`remove-channel-from-scene`,`on-select-channel`])):w(``,!0),e.lastDropText?(m(),b(`div`,ia,a(e.lastDropText),1)):w(``,!0),e.errorText?(m(),b(`div`,aa,a(e.errorText),1)):w(``,!0),g(ta,{ready:e.ready},null,8,[`ready`])],512),y(`div`,{class:n([`dock`,{"dock-open":i.value}])},[g(Wi,{"dock-open":i.value,"onUpdate:dockOpen":u[2]||=e=>i.value=e,"thresh-pct":o.value,"onUpdate:threshPct":u[3]||=e=>o.value=e,"callout-near-dist":s.value,"onUpdate:calloutNearDist":u[4]||=e=>s.value=e,mode:e.mode,"quality-mode":e.qualityMode,"fps-cap":e.fpsCap,"quality-options":e.qualityOptions,"fps-options":e.fpsOptions,exposure:e.exposure,"tint-opacity":e.tintOpacity,snap:e.snap,estop:e.estop,"slider-pct":e.sliderPct,"set-quality-mode":e.setQualityMode,"set-fps-cap":e.setFpsCap,"on-exposure-input":e.onExposureInput,"on-tint-input":e.onTintInput,"toggle-snap":e.toggleSnap,"on-reset-view":e.onResetView,"save-layout":e.saveLayout,"toggle-estop":e.toggleEstop},null,8,[`dock-open`,`thresh-pct`,`callout-near-dist`,`mode`,`quality-mode`,`fps-cap`,`quality-options`,`fps-options`,`exposure`,`tint-opacity`,`snap`,`estop`,`slider-pct`,`set-quality-mode`,`set-fps-cap`,`on-exposure-input`,`on-tint-input`,`toggle-snap`,`on-reset-view`,`save-layout`,`toggle-estop`]),g(Qi,{"trend-expanded":c.value,"onUpdate:trendExpanded":u[5]||=e=>c.value=e,"channel-count":e.daqTwins.length,"trend-chips":e.trendChips,"trend-overflow":e.trendOverflow,"trend-on":e.trendOn,"trend-color":e.trendColor,"toggle-trend":e.toggleTrend,"set-canvas":e.setTrendCanvas},null,8,[`trend-expanded`,`channel-count`,`trend-chips`,`trend-overflow`,`trend-on`,`trend-color`,`toggle-trend`,`set-canvas`])],2)]))}}),[[`__scopeId`,`data-v-873dd442`]]),{__name:`WorkshopTownComponentsTownStage`}),sa={class:`daq-info`},ca={class:`daq-info-row`},la={class:`cy`},ua={class:`daq-info-row`},da={class:`daq-info-row`},fa={class:`daq-bind-bar`},pa=[`step`,`placeholder`],ma=[`disabled`],ha={key:0,class:`dcw-err`},ga={key:1,class:`daq-bind-bar`},_a={value:``},va=[`value`],ya=[`disabled`],ba=Object.assign(V(p({__name:`TownDcwNodeInspector`,props:C({mode:{},selected:{},deviceTwins:{},dcw:{},selectedDcwNode:{},selectedDcwWindow:{},selectedDcwDeviceName:{},dcwWriteErrs:{},dcwWinLabel:{type:Function},dcwWinInputPh:{type:Function},isLegacyDaqTwin:{type:Function},doWriteSelectedDcw:{type:Function},bindSelectedDcw:{type:Function},unbindSelectedDcw:{type:Function}},{dcwWriteDrafts:{required:!0},dcwWriteDraftsModifiers:{},dcwBindPick:{required:!0},dcwBindPickModifiers:{}}),emits:[`update:dcwWriteDrafts`,`update:dcwBindPick`],setup(e){let t=d(e,`dcwWriteDrafts`),r=d(e,`dcwBindPick`);return(i,o)=>(m(),b(`div`,sa,[y(`div`,ca,[y(`span`,null,a(i.$t(`townView.k1deqh0d069`)),1),y(`b`,la,a(e.selectedDcwNode?.value==null?`--`:e.selectedDcwNode.value.toFixed(e.selectedDcwNode.decimals))+` `+a(e.selectedDcwNode?.unit),1)]),y(`div`,ua,[y(`span`,null,a(e.selectedDcwWindow?.src===`recipe`?i.$t(`townView.kq2jssk147`):i.$t(`townView.k1iwj796179`)),1),y(`b`,{class:n({amber:e.selectedDcwWindow?.src===`recipe`})},a(e.dcwWinLabel(e.selectedDcwNode)),3)]),y(`div`,da,[y(`span`,null,a(i.$t(`townView.k1i8rtqt070`)),1),y(`b`,null,a(e.selectedDcwDeviceName||i.$t(`townView.k3own4q148`)),1)]),y(`div`,fa,[D(y(`input`,{"onUpdate:modelValue":o[0]||=n=>t.value[e.selected.id]=n,type:`number`,class:`bind-select`,step:10**-(e.selectedDcwNode?.decimals??2),placeholder:e.dcwWinInputPh(e.selectedDcwNode),onKeydown:o[1]||=F((...t)=>e.doWriteSelectedDcw&&e.doWriteSelectedDcw(...t),[`enter`])},null,40,pa),[[A,t.value[e.selected.id],void 0,{number:!0}]]),y(`button`,{class:`bind-add-btn`,disabled:t.value[e.selected.id]==null||t.value[e.selected.id]===``,onClick:o[2]||=(...t)=>e.doWriteSelectedDcw&&e.doWriteSelectedDcw(...t)},a(i.$t(`townView.kwrbtn180`)),9,ma)]),e.dcwWriteErrs[e.selected.id]?(m(),b(`p`,ha,a(e.dcwWriteErrs[e.selected.id]),1)):w(``,!0),e.mode===`edit`?(m(),b(`div`,ga,[D(y(`select`,{"onUpdate:modelValue":o[3]||=e=>r.value=e,class:`bind-select`},[y(`option`,_a,a(i.$t(`townView.kjo6ekr071`)),1),(m(!0),b(x,null,h(e.deviceTwins.twins.filter(t=>!e.isLegacyDaqTwin(t)&&t.id!==(e.selected?.id??``)),e=>(m(),b(`option`,{key:e.id,value:e.id},a(e.name),9,va))),128))],512),[[N,r.value]]),y(`button`,{class:`bind-add-btn`,disabled:!e.selectedDcwDeviceName&&!r.value,onClick:o[4]||=t=>e.selectedDcwDeviceName?e.unbindSelectedDcw():e.bindSelectedDcw()},a(e.selectedDcwDeviceName?i.$t(`townView.k479eh149`):i.$t(`townView.k452a8102`)),9,ya)])):w(``,!0)]))}}),[[`__scopeId`,`data-v-1ae246fd`]]),{__name:`WorkshopTownComponentsTownDcwNodeInspector`}),xa={class:`daq-info`},Sa={class:`daq-info-row`},Ca={class:`cy`},wa={class:`daq-info-row`},Ta={class:`daq-info-row`},Ea={key:0,class:`daq-bind-bar`},Da={value:``},Oa=[`value`],ka=[`disabled`],Aa={key:1,class:`daq-node-ctl`},ja={class:`daq-info-row`},Ma={class:`daq-th-inputs`},Na={class:`daq-info-row`},Pa={class:`daq-th-inputs`},Fa=[`value`],Ia=[`value`],La={class:`daq-info-row`},Ra={class:`daq-th-inputs`},za=[`value`],Ba=[`value`],Va={class:`daq-info-row`},Ha={class:`daq-info-row`},Ua=[`title`],Wa={key:2,class:`ins-empty`},Ga=Object.assign(V(p({__name:`TownDaqNodeInspector`,props:C({mode:{},selected:{},deviceTwins:{},daq:{},daqBoundDeviceName:{},selectedDaqNode:{},selectedDaqSim:{},fmtDaq:{type:Function},isLegacyDaqTwin:{type:Function},onDaqIntervalCommit:{type:Function},onDaqThresholdCommit:{type:Function},removeSelectedDevice:{type:Function},unbindDaq:{type:Function},bindDaq:{type:Function}},{bindPick:{required:!0},bindPickModifiers:{},daqIntervalDraft:{required:!0},daqIntervalDraftModifiers:{}}),emits:[`update:bindPick`,`update:daqIntervalDraft`],setup(e){let t=d(e,`bindPick`),r=d(e,`daqIntervalDraft`);return(i,o)=>(m(),b(`div`,xa,[y(`div`,Sa,[y(`span`,null,a(i.$t(`townView.k3mv305072`)),1),y(`b`,Ca,a(e.selectedDaqSim?e.fmtDaq(e.selectedDaqSim):`--`)+` `+a(e.selectedDaqSim?.tpl.unit),1)]),y(`div`,wa,[y(`span`,null,a(i.$t(`townView.k1faqmjb073`)),1),y(`b`,null,a(e.selectedDaqSim?.tpl.min)+` ~ `+a(e.selectedDaqSim?.tpl.max),1)]),y(`div`,Ta,[y(`span`,null,a(i.$t(`townView.k1i8rtqt070`)),1),y(`b`,null,a(e.daqBoundDeviceName||i.$t(`townView.k3own4q148`)),1)]),e.mode===`edit`?(m(),b(`div`,Ea,[D(y(`select`,{"onUpdate:modelValue":o[0]||=e=>t.value=e,class:`bind-select`},[y(`option`,Da,a(i.$t(`townView.kjo6ekr071`)),1),(m(!0),b(x,null,h(e.deviceTwins.twins.filter(t=>!e.isLegacyDaqTwin(t)&&t.id!==(e.selected?.id??``)),e=>(m(),b(`option`,{key:e.id,value:e.id},a(e.name),9,Oa))),128))],512),[[N,t.value]]),y(`button`,{class:`bind-add-btn`,disabled:!e.daqBoundDeviceName&&!t.value,onClick:o[1]||=n=>{e.daqBoundDeviceName?e.unbindDaq(e.selected.id):e.bindDaq(e.selected.id,t.value),t.value=``}},a(e.daqBoundDeviceName?i.$t(`townView.k479eh149`):i.$t(`townView.k452a8102`)),9,ka)])):w(``,!0),e.mode===`edit`&&e.selectedDaqNode?(m(),b(`div`,Aa,[y(`div`,ja,[y(`span`,null,a(i.$t(`townView.k1l6g2ga074`)),1),y(`span`,Ma,[D(y(`input`,{"onUpdate:modelValue":o[2]||=e=>r.value=e,type:`number`,min:`200`,max:`60000`,step:`100`,class:`daq-num`,onChange:o[3]||=(...t)=>e.onDaqIntervalCommit&&e.onDaqIntervalCommit(...t)},null,544),[[A,r.value,void 0,{number:!0}]]),y(`small`,null,a(i.$t(`townView.k1or92b075`)),1)])]),y(`div`,Na,[y(`span`,null,a(i.$t(`townView.k3x5tpx076`)),1),y(`span`,Pa,[y(`input`,{value:e.selectedDaqNode.warnLow,type:`number`,step:`any`,class:`daq-num`,onChange:o[4]||=t=>e.onDaqThresholdCommit(`warnLow`,t.target.value)},null,40,Fa),o[10]||=k(` ~ `,-1),y(`input`,{value:e.selectedDaqNode.warnHigh,type:`number`,step:`any`,class:`daq-num`,onChange:o[5]||=t=>e.onDaqThresholdCommit(`warnHigh`,t.target.value)},null,40,Ia)])]),y(`div`,La,[y(`span`,null,a(i.$t(`townView.k1hjj0jf077`)),1),y(`span`,Ra,[y(`input`,{value:e.selectedDaqNode.min,type:`number`,step:`any`,class:`daq-num`,onChange:o[6]||=t=>e.onDaqThresholdCommit(`min`,t.target.value)},null,40,za),o[11]||=k(` ~ `,-1),y(`input`,{value:e.selectedDaqNode.max,type:`number`,step:`any`,class:`daq-num`,onChange:o[7]||=t=>e.onDaqThresholdCommit(`max`,t.target.value)},null,40,Ba)])]),y(`div`,Va,[y(`span`,null,a(i.$t(`townView.k48tki078`)),1),y(`button`,{class:n([`bind-add-btn`,{warn:e.selectedDaqNode.enabled}]),onClick:o[8]||=t=>e.daq.patchNode(e.selected.id,{enabled:!e.selectedDaqNode.enabled})},a(e.selectedDaqNode.enabled?i.$t(`townView.k1wv0nyo150`):i.$t(`townView.kh1586b180`)),3)]),y(`div`,Ha,[y(`span`,null,a(i.$t(`townView.k3xakp079`)),1),y(`button`,{class:`bind-add-btn danger`,title:i.$t(`townView.kpwutri014`),onClick:o[9]||=t=>e.removeSelectedDevice()},a(i.$t(`townView.k1bpp30k080`)),9,Ua)])])):(m(),b(`div`,Wa,a(i.$t(`townView.kzk5dfx081`)),1))]))}}),[[`__scopeId`,`data-v-99706174`]]),{__name:`WorkshopTownComponentsTownDaqNodeInspector`}),Ka={class:`obj-row`},qa={class:`obj-label`},Ja=[`placeholder`,`disabled`,`title`],Ya={class:`obj-row`},Xa={class:`obj-label`},Za=[`value`,`disabled`],Qa=[`value`],$a={class:`sect-hd`},eo={class:`bind-ico`},to={class:`bind-meta`},no={class:`bind-label`},ro={class:`bind-val`},io=[`title`,`onClick`],ao={key:0,class:`ins-empty`},oo={key:1,class:`bind-add-wrap`},so={key:0,class:`bp-group`},co={class:`bp-tpl`},lo=[`data-node-id`,`title`,`onClick`],uo={key:0,class:`bp-cur`},fo={key:1,class:`bp-cur`},po={key:0,class:`bp-empty`},mo=Object.assign(V(p({__name:`TownDeviceBindings`,props:C({mode:{},selected:{},scene3dRef:{},deviceModels:{},boundDaqRows:{},daqTemplates:{},daqBindChoices:{},daqBindChoiceCount:{},bindPopOpen:{type:Boolean},bindPopMaxH:{},toggleBindPop:{type:Function},bindDaqChoice:{type:Function},unbindDaq:{type:Function},setSparkRef:{type:Function},onObjNameCommit:{type:Function},bindDeviceModel:{type:Function}},{objNameDraft:{required:!0},objNameDraftModifiers:{}}),emits:[`update:objNameDraft`],setup(t){let{t:n}=L(),i=d(t,`objNameDraft`);return(o,s)=>{let c=it;return m(),b(x,null,[y(`div`,Ka,[y(`span`,qa,a(o.$t(`townView.k3xhia082`)),1),D(y(`input`,{"onUpdate:modelValue":s[0]||=e=>i.value=e,class:`obj-input`,placeholder:o.$t(`townView.k1k6vbaf015`),disabled:t.mode!==`edit`,title:t.mode===`edit`?o.$t(`townView.deviceName`):o.$t(`townView.readonlyTip`),onChange:s[1]||=(...e)=>t.onObjNameCommit&&t.onObjNameCommit(...e),onKeydown:s[2]||=F((...e)=>t.onObjNameCommit&&t.onObjNameCommit(...e),[`enter`])},null,40,Ja),[[A,i.value]])]),y(`div`,Ya,[y(`span`,Xa,a(o.$t(`townView.k41amp083`)),1),y(`select`,{class:`obj-select`,value:t.scene3dRef?.getDeviceModelRef?.(t.selected.id)??``,disabled:t.mode!==`edit`,onChange:s[3]||=e=>t.bindDeviceModel(e.target.value)},[(m(!0),b(x,null,h(t.deviceModels,t=>(m(),b(`option`,{key:t.id,value:t.id},a((`townModelName`in o?o.townModelName:e(he))(e(n),t)),9,Qa))),128))],40,Za)]),y(`div`,$a,a(o.$t(`townView.k1vtyk05130`))+` `+a(t.boundDaqRows.length)+` `+a(o.$t(`townView.k3vfpz5138`)),1),(m(!0),b(x,null,h(t.boundDaqRows,e=>(m(),b(`div`,{key:e.daqId,class:`bind-row`},[y(`span`,eo,[g(c,{class:`bind-svg`,icon:e.icon},null,8,[`icon`])]),y(`span`,to,[y(`span`,no,a(e.ch),1),y(`span`,ro,[y(`b`,null,a(e.value),1),k(` `+a(e.unit)+` · `+a(e.name),1)])]),y(`canvas`,{ref_for:!0,ref:n=>t.setSparkRef(e.daqId,n),class:`bind-spark`,width:`56`,height:`20`},null,512),t.mode===`edit`?(m(),b(`button`,{key:0,class:`bind-x`,title:o.$t(`townView.k1k73omv016`),onClick:n=>t.unbindDaq(e.daqId)},` ✕ `,8,io)):w(``,!0)]))),128)),t.boundDaqRows.length?w(``,!0):(m(),b(`div`,ao,a(o.$t(`townView.kgpuqhb084`)),1)),t.mode===`edit`?(m(),b(`div`,oo,[y(`button`,{class:`bind-add`,onClick:s[4]||=e=>t.toggleBindPop(`daq`,e)},a(o.$t(`townView.kvm0lin085`)),1),t.bindPopOpen?(m(),b(`div`,{key:0,class:`bind-pop`,style:r({maxHeight:`${t.bindPopMaxH}px`})},[(m(!0),b(x,null,h(t.daqTemplates,e=>(m(),b(x,{key:e.id},[t.daqBindChoices[e.id]?.length?(m(),b(`div`,so,[y(`span`,co,a(e.name)+` · `+a(e.ch),1),(m(!0),b(x,null,h(t.daqBindChoices[e.id],e=>(m(),b(`button`,{key:e.id,"data-node-id":e.id,title:e.devName?o.$t(`townView.k2bindr0007`,{p0:e.devName}):o.$t(`townView.k2bindr0008`),onClick:n=>t.bindDaqChoice(e.id)},[g(c,{class:`bind-svg`,icon:e.tpl.icon},null,8,[`icon`]),y(`span`,null,[k(a(e.name),1),e.devName?(m(),b(`i`,uo,`→ `+a(e.devName),1)):e.placed?w(``,!0):(m(),b(`i`,fo,a(o.$t(`townView.k2bindr0009`)),1))])],8,lo))),128))])):w(``,!0)],64))),128)),t.daqBindChoiceCount?w(``,!0):(m(),b(`div`,po,a(o.$t(`townView.k2bindr0010`)),1))],4)):w(``,!0)])):w(``,!0)],64)}}}),[[`__scopeId`,`data-v-841967dc`]]),{__name:`WorkshopTownComponentsTownDeviceBindings`}),ho={class:`sect-hd`},go={class:`dcw-top`},_o={class:`bind-ico`},vo={class:`dcw-id`},yo={class:`bind-label`},bo={key:0,class:`dcw-tag`},xo={class:`dcw-name`},So={class:`dcw-cur`},Co=[`title`,`onClick`],wo={class:`dcw-win-num`},To={class:`dcw-win-track`},Eo={class:`dcw-win-num`},Do={class:`dcw-write`},Oo=[`onUpdate:modelValue`,`step`,`placeholder`,`onKeydown`],ko=[`disabled`,`title`,`onClick`],Ao={key:0,class:`dcw-err`},jo={key:0,class:`ins-empty`},Mo={key:1,class:`bind-add-wrap`},No={key:0,class:`bp-group`},Po={class:`bp-tpl`},Fo=[`data-node-id`,`title`,`onClick`],Io={key:0,class:`bp-cur`},Lo={key:1,class:`bp-cur`},Ro={key:0,class:`bp-empty`},zo=Object.assign(V(p({__name:`TownDcwBindSection`,props:C({mode:{},dcw:{},boundDcwRows:{},dcwTemplates:{},dcwBindChoices:{},dcwBindChoiceCount:{},dcwBindPopOpen:{type:Boolean},bindPopMaxH:{},dcwWriteErrs:{},dcwMarkPct:{type:Function},doDcwWrite:{type:Function},unbindDcw:{type:Function},toggleBindPop:{type:Function},bindDcwChoice:{type:Function}},{dcwWriteDrafts:{required:!0},dcwWriteDraftsModifiers:{}}),emits:[`update:dcwWriteDrafts`],setup(e){let t=d(e,`dcwWriteDrafts`);return(i,o)=>{let s=it;return m(),b(x,null,[y(`div`,ho,a(i.$t(`townView.ktzir2t131`))+` `+a(e.boundDcwRows.length)+` `+a(i.$t(`townView.k4l1w042`)),1),(m(!0),b(x,null,h(e.boundDcwRows,o=>(m(),b(`div`,{key:o.dcwId,class:`dcw-row`},[y(`div`,go,[y(`span`,_o,[g(s,{class:`bind-svg`,icon:o.icon},null,8,[`icon`])]),y(`span`,vo,[y(`span`,yo,[k(a(o.ch),1),o.rMin!=null||o.rMax!=null?(m(),b(`i`,bo,a(i.$t(`townView.k48grv086`)),1)):w(``,!0)]),y(`span`,xo,a(o.name),1)]),y(`span`,So,[y(`b`,null,a(o.value==null?`--`:o.value.toFixed(o.decimals)),1),y(`i`,null,a(o.unit),1)]),e.mode===`edit`?(m(),b(`button`,{key:0,class:`bind-x`,title:i.$t(`townView.k1k73omv016`),onClick:t=>e.unbindDcw(o.dcwId)},` ✕ `,8,Co)):w(``,!0)]),y(`div`,{class:n([`dcw-win`,{recipe:o.rMin!=null||o.rMax!=null}])},[y(`em`,null,a(o.rMin!=null||o.rMax!=null?i.$t(`townView.k1l3m0hx151`):i.$t(`townView.k1bc6rqf181`)),1),y(`span`,wo,a(o.rMin??`-∞`),1),y(`span`,To,[y(`i`,{style:r({left:`${e.dcwMarkPct(o)}%`})},null,4)]),y(`span`,Eo,a(o.rMax??`+∞`),1)],2),y(`div`,Do,[D(y(`input`,{"onUpdate:modelValue":e=>t.value[o.dcwId]=e,type:`number`,step:10**-o.decimals,placeholder:`${o.rMin??o.gMin} ~ ${o.rMax??o.gMax}`,onKeydown:F(t=>e.doDcwWrite(e.dcw.nodeById(o.dcwId)),[`enter`])},null,40,Oo),[[A,t.value[o.dcwId],void 0,{number:!0}]]),y(`button`,{class:`dcw-send`,disabled:t.value[o.dcwId]==null||t.value[o.dcwId]===``,title:i.$t(`townView.k15t7izc017`),onClick:t=>e.doDcwWrite(e.dcw.nodeById(o.dcwId))},` write `,8,ko)]),e.dcwWriteErrs[o.dcwId]?(m(),b(`small`,Ao,a(e.dcwWriteErrs[o.dcwId]),1)):w(``,!0)]))),128)),e.boundDcwRows.length?w(``,!0):(m(),b(`div`,jo,a(i.$t(`townView.k10smf24087`)),1)),e.mode===`edit`?(m(),b(`div`,Mo,[y(`button`,{class:`bind-add`,onClick:o[0]||=t=>e.toggleBindPop(`dcw`,t)},a(i.$t(`townView.kvk1vh5088`)),1),e.dcwBindPopOpen?(m(),b(`div`,{key:0,class:`bind-pop`,style:r({maxHeight:`${e.bindPopMaxH}px`})},[(m(!0),b(x,null,h(e.dcwTemplates,t=>(m(),b(x,{key:t.id},[e.dcwBindChoices[t.id]?.length?(m(),b(`div`,No,[y(`span`,Po,a(t.name)+` · `+a(t.ch),1),(m(!0),b(x,null,h(e.dcwBindChoices[t.id],t=>(m(),b(`button`,{key:t.id,"data-node-id":t.id,title:t.devName?i.$t(`townView.k2bindr0007`,{p0:t.devName}):i.$t(`townView.k2bindr0008`),onClick:n=>e.bindDcwChoice(t.id)},[g(s,{class:`bind-svg`,icon:t.tpl.icon},null,8,[`icon`]),y(`span`,null,[k(a(t.name),1),t.devName?(m(),b(`i`,Io,`→ `+a(t.devName),1)):t.placed?w(``,!0):(m(),b(`i`,Lo,a(i.$t(`townView.k2bindr0009`)),1))])],8,Fo))),128))])):w(``,!0)],64))),128)),e.dcwBindChoiceCount?w(``,!0):(m(),b(`div`,Ro,a(i.$t(`townView.k2bindr0010`)),1))],4)):w(``,!0)])):w(``,!0)],64)}}}),[[`__scopeId`,`data-v-f4d75d2d`]]),{__name:`WorkshopTownComponentsTownDcwBindSection`}),Bo={class:`sect-hd`},Vo={class:`xz-seg`},Ho={class:`scale-row`},Uo=[`value`],Wo={class:`scale-val`},Go={class:`ins-foot`},Ko={key:1,class:`ins-empty`},qo=Object.assign(V(p({__name:`TownDeviceTransform`,props:{mode:{},selected:{},tMode:{},deviceDeleteArmed:{},setTMode:{type:Function},onScaleInput:{type:Function},onScaleCommit:{type:Function},removeSelectedDevice:{type:Function}},setup(e){return(t,r)=>e.mode===`edit`?(m(),b(x,{key:0},[y(`div`,Bo,a(t.$t(`townView.transformBlender`)),1),y(`div`,Vo,[y(`button`,{class:n([`seg-btn`,{on:e.tMode===`translate`}]),onClick:r[0]||=t=>e.setTMode(`translate`)},a(t.$t(`townView.k1hg3167089`)),3),y(`button`,{class:n([`seg-btn`,{on:e.tMode===`rotate`}]),onClick:r[1]||=t=>e.setTMode(`rotate`)},a(t.$t(`townView.k1enlg7i090`)),3),y(`button`,{class:n([`seg-btn`,{on:e.tMode===`scale`}]),onClick:r[2]||=t=>e.setTMode(`scale`)},a(t.$t(`townView.k1ibjg3j091`)),3)]),y(`div`,Ho,[r[6]||=y(`span`,{class:`scale-min`},`0.2×`,-1),y(`input`,{class:`scale-range`,type:`range`,min:`0.2`,max:`5`,step:`0.05`,value:e.selected.scale,onInput:r[3]||=t=>e.onScaleInput(Number(t.target.value)),onChange:r[4]||=t=>e.onScaleCommit(Number(t.target.value))},null,40,Uo),r[7]||=y(`span`,{class:`scale-max`},`5×`,-1)]),y(`div`,Wo,a(Math.round(e.selected.scale*100))+`% `,1),y(`div`,Go,[y(`button`,{class:n([`btn btn-danger ins-del`,{armed:e.deviceDeleteArmed===e.selected.id}]),onClick:r[5]||=(...t)=>e.removeSelectedDevice&&e.removeSelectedDevice(...t)},a(e.deviceDeleteArmed===e.selected.id?t.$t(`townView.k1w10xa5152`):t.$t(`townView.k121kfef182`)),3)])],64)):(m(),b(`div`,Ko,a(t.$t(`townView.kt0i3y2092`)),1))}}),[[`__scopeId`,`data-v-ef619efa`]]),{__name:`WorkshopTownComponentsTownDeviceTransform`}),Jo={class:`sect-hd`},Yo={class:`bind-meta`},Xo={class:`bind-label`},Zo=[`value`,`title`,`onChange`],Qo={value:`auto`},$o={value:`manual`},es=[`title`,`onClick`],ts={key:0,class:`ins-empty`},ns={key:1,class:`daq-bind-bar`,style:{"margin-bottom":`8px`}},rs={value:`dcw`},is={value:`daq`},as={value:``},os=[`value`],ss=[`value`],cs={value:`auto`},ls={value:`manual`},us=[`disabled`],ds={class:`sect-hd`,style:{color:`var(--hud-amber)`}},fs={class:`approval-detail`},ps=[`onUpdate:modelValue`,`placeholder`],ms={class:`daq-bind-bar`,style:{"margin-top":`5px`}},hs=[`onClick`],gs=[`onClick`],_s=Object.assign(V(p({__name:`TownAgentBindings`,props:C({mode:{},agentBindings:{},pendingApprovals:{},approvalRemainingSec:{type:Function},bindingNodeName:{type:Function},setBindingMode:{type:Function},unbindAgentNode:{type:Function},bindAgentNode:{type:Function},decideApproval:{type:Function},daq:{},dcw:{}},{agentBindKind:{required:!0},agentBindKindModifiers:{},agentBindNodeId:{required:!0},agentBindNodeIdModifiers:{},agentBindMode:{required:!0},agentBindModeModifiers:{},approvalComments:{required:!0},approvalCommentsModifiers:{}}),emits:[`update:agentBindKind`,`update:agentBindNodeId`,`update:agentBindMode`,`update:approvalComments`],setup(e){let t=d(e,`agentBindKind`),r=d(e,`agentBindNodeId`),i=d(e,`agentBindMode`),o=d(e,`approvalComments`);return(s,c)=>(m(),b(x,null,[c[4]||=y(`div`,{class:`obj-sep`},null,-1),y(`div`,Jo,a(s.$t(`townView.k1p7nru2094`)),1),(m(!0),b(x,null,h(e.agentBindings,t=>(m(),b(`div`,{key:t.id,class:`bind-row`},[y(`span`,{class:n([`ins-chip`,t.kind===`dcw`?`accent`:``]),style:{flex:`none`}},a(t.kind===`dcw`?s.$t(`townView.k40ifw097`):s.$t(`townView.k40rjw098`)),3),y(`span`,Yo,[y(`span`,Xo,a(e.bindingNodeName(t)),1),y(`select`,{class:`bind-select`,style:{"margin-top":`3px`},value:t.mode,title:s.$t(`townView.khqvwix019`),onChange:n=>e.setBindingMode(t.id,n.target.value)},[y(`option`,Qo,a(s.$t(`townView.k1io1ylm095`)),1),y(`option`,$o,a(s.$t(`townView.k1duyr8q096`)),1)],40,Zo)]),y(`button`,{class:`bind-x`,title:s.$t(`townView.k1k73omv016`),onClick:n=>e.unbindAgentNode(t.id)},` ✕ `,8,es)]))),128)),e.agentBindings.length?w(``,!0):(m(),b(`div`,ts,a(s.$t(`townView.unboundTip`)),1)),e.mode===`edit`?(m(),b(`div`,ns,[D(y(`select`,{"onUpdate:modelValue":c[0]||=e=>t.value=e,class:`bind-select`,style:{flex:`none`,width:`62px`}},[y(`option`,rs,a(s.$t(`townView.k40ifw097`)),1),y(`option`,is,a(s.$t(`townView.k40rjw098`)),1)],512),[[N,t.value]]),D(y(`select`,{"onUpdate:modelValue":c[1]||=e=>r.value=e,class:`bind-select`},[y(`option`,as,a(s.$t(`townView.kurjldk099`)),1),t.value===`dcw`?(m(!0),b(x,{key:0},h(e.dcw.nodes,e=>(m(),b(`option`,{key:e.id,value:e.id},a(e.name),9,os))),128)):(m(!0),b(x,{key:1},h(e.daq.nodes,e=>(m(),b(`option`,{key:e.id,value:e.id},a(e.name),9,ss))),128))],512),[[N,r.value]]),D(y(`select`,{"onUpdate:modelValue":c[2]||=e=>i.value=e,class:`bind-select`,style:{flex:`none`,width:`76px`}},[y(`option`,cs,a(s.$t(`townView.k45kpj100`)),1),y(`option`,ls,a(s.$t(`townView.k3zul4101`)),1)],512),[[N,i.value]]),y(`button`,{class:`bind-add-btn`,disabled:!r.value,onClick:c[3]||=(...t)=>e.bindAgentNode&&e.bindAgentNode(...t)},a(s.$t(`townView.k452a8102`)),9,us)])):w(``,!0),e.pendingApprovals.length?(m(),b(x,{key:2},[y(`div`,ds,a(s.$t(`townView.k1gk2jg7132`))+` `+a(e.pendingApprovals.length),1),(m(!0),b(x,null,h(e.pendingApprovals,t=>(m(),b(`div`,{key:t.id,class:`approval-card`},[y(`div`,fs,a(t.detail),1),y(`div`,{class:n([`approval-ttl`,{urgent:e.approvalRemainingSec(t)<=30}])},` ⏱ `+a(e.approvalRemainingSec(t))+`s `+a(s.$t(`townView.hitlAutoReject`)),3),D(y(`input`,{"onUpdate:modelValue":e=>o.value[t.id]=e,class:`dcw-write input-inline`,style:{width:`100%`,"margin-top":`5px`},placeholder:s.$t(`townView.keztqrn020`)},null,8,ps),[[A,o.value[t.id]]]),y(`div`,ms,[y(`button`,{class:`bind-add-btn`,onClick:n=>e.decideApproval(t.id,!0)},a(s.$t(`townView.kslcozu103`)),9,hs),y(`button`,{class:`bind-add-btn danger`,onClick:n=>e.decideApproval(t.id,!1)},a(s.$t(`townView.k14gu3rd104`)),9,gs)])]))),128))],64)):w(``,!0)],64))}}),[[`__scopeId`,`data-v-a99d4e87`]]),{__name:`WorkshopTownComponentsTownAgentBindings`}),vs={class:`chat-id-row`},ys={class:`chat-nameplate`},bs={class:`chat-name`},xs={class:`chat-meta`},Ss={key:0,class:`chat-harness`},Cs={class:`chat-count`},ws={class:`obj-row`},Ts={class:`obj-label`},Es=[`value`,`disabled`],Ds=[`value`],Os={class:`obj-row`},ks={class:`obj-label`},As={class:`range-status`},js=[`title`],Ms={class:`obj-row`},Ns={class:`obj-label`},Ps={class:`bp-seg`},Fs={class:`obj-row`},Is={class:`obj-label`},Ls={class:`bp-val`},Rs={class:`obj-row`},zs={class:`obj-label`},Bs={class:`bp-val`},Vs={key:1,class:`ins-empty`},Hs={class:`sect-hd chat-sect`},Us=[`title`],Ws={key:0,class:`rpg-note`},Gs={class:`rpg-divider`},Ks={class:`rpg-time`},qs={class:`rpg-bubble`},Js={class:`rpg-text`},Ys={key:2,class:`rpg-divider live`},Xs={class:`rpg-time`},Zs={class:`rpg-bubble`},Qs={class:`rpg-text`},$s={key:3,class:`rpg-typing`},ec={class:`ty-label`},tc={key:4,class:`rpg-note`},nc=Object.assign(V(p({__name:`TownAgentInspector`,props:C({mode:{},selected:{},scene3dRef:{},agentModels:{},agentRole:{},agentState:{},agentHarness:{},agentChatTitle:{},agentChatColor:{},agentChatStateLabel:{},selectedAgentRoleTag:{},agentDrawingRange:{type:Boolean},agentRangeStatusText:{},agentHistory:{},agentChatRows:{},historyLoading:{type:Boolean},fmtTime:{type:Function},chatKindLabel:{type:Function},onRefreshHistory:{type:Function},onToggleRangeDraw:{type:Function},applyAgentRangeDraft:{type:Function},onAgentRangeCommit:{type:Function},onClearAgentRange:{type:Function},bindAgentModel:{type:Function},setChatScroll:{type:Function},agentBindings:{},pendingApprovals:{},approvalRemainingSec:{type:Function},bindingNodeName:{type:Function},setBindingMode:{type:Function},unbindAgentNode:{type:Function},bindAgentNode:{type:Function},decideApproval:{type:Function},daq:{},dcw:{}},{agentRangeDraft:{required:!0},agentRangeDraftModifiers:{},agentBindKind:{required:!0},agentBindKindModifiers:{},agentBindNodeId:{required:!0},agentBindNodeIdModifiers:{},agentBindMode:{required:!0},agentBindModeModifiers:{},approvalComments:{required:!0},approvalCommentsModifiers:{}}),emits:[`update:agentRangeDraft`,`update:agentBindKind`,`update:agentBindNodeId`,`update:agentBindMode`,`update:approvalComments`],setup(e){let t=d(e,`agentRangeDraft`),i=d(e,`agentBindKind`),o=d(e,`agentBindNodeId`),s=d(e,`agentBindMode`),c=d(e,`approvalComments`);return(l,u)=>(m(),b(x,null,[y(`div`,vs,[y(`span`,{class:`chat-badge`,style:r({"--p-acc":e.agentChatColor})},a(e.agentChatTitle.slice(0,1).toUpperCase()),5),y(`div`,ys,[y(`span`,bs,a(e.agentChatTitle),1),y(`span`,xs,[y(`span`,{class:n([`chat-role`,e.agentRole===`lead`?`r-lead`:`r-worker`])},a(e.selectedAgentRoleTag),3),y(`span`,{class:n([`chat-state`,`s-${e.agentState??`idle`}`])},a(e.agentChatStateLabel),3),e.agentHarness?(m(),b(`span`,Ss,a(e.agentHarness.toUpperCase()),1)):w(``,!0),y(`span`,Cs,a(e.agentHistory.length+e.agentChatRows.length)+` `+a(l.$t(`townView.k4dfq040`)),1)])])]),y(`div`,ws,[y(`span`,Ts,a(l.$t(`townView.k41amp083`)),1),y(`select`,{class:`obj-select`,value:(e.scene3dRef?.getAgentModel?.(e.selected.id)??``)||`hero-3d`,disabled:e.mode!==`edit`,onChange:u[0]||=t=>e.bindAgentModel(t.target.value)},[(m(!0),b(x,null,h(e.agentModels,e=>(m(),b(`option`,{key:e.id,value:e.id},a(e.name),9,Ds))),128))],40,Es)]),u[19]||=y(`div`,{class:`obj-sep`},null,-1),y(`div`,Os,[y(`span`,ks,a(l.$t(`townView.k1fix3hb093`)),1),y(`span`,As,a(e.agentRangeStatusText),1),e.mode===`edit`?(m(),b(`button`,{key:0,class:n([`obj-mini`,{on:e.agentDrawingRange}]),title:l.$t(`townView.k13enoy3018`),onClick:u[1]||=(...t)=>e.onToggleRangeDraw&&e.onToggleRangeDraw(...t)},a(e.agentDrawingRange?l.$t(`townView.k3slzhc153`):l.$t(`townView.k1f1xmci183`)),11,js)):w(``,!0)]),g(_s,{"agent-bind-kind":i.value,"onUpdate:agentBindKind":u[2]||=e=>i.value=e,"agent-bind-node-id":o.value,"onUpdate:agentBindNodeId":u[3]||=e=>o.value=e,"agent-bind-mode":s.value,"onUpdate:agentBindMode":u[4]||=e=>s.value=e,"approval-comments":c.value,"onUpdate:approvalComments":u[5]||=e=>c.value=e,mode:e.mode,"agent-bindings":e.agentBindings,"pending-approvals":e.pendingApprovals,"approval-remaining-sec":e.approvalRemainingSec,daq:e.daq,dcw:e.dcw,"binding-node-name":e.bindingNodeName,"set-binding-mode":e.setBindingMode,"unbind-agent-node":e.unbindAgentNode,"bind-agent-node":e.bindAgentNode,"decide-approval":e.decideApproval},null,8,[`agent-bind-kind`,`agent-bind-node-id`,`agent-bind-mode`,`approval-comments`,`mode`,`agent-bindings`,`pending-approvals`,`approval-remaining-sec`,`daq`,`dcw`,`binding-node-name`,`set-binding-mode`,`unbind-agent-node`,`bind-agent-node`,`decide-approval`]),t.value&&e.mode===`edit`?(m(),b(x,{key:0},[y(`div`,Ms,[y(`span`,Ns,a(l.$t(`townView.k3zhy5048`)),1),y(`div`,Ps,[y(`button`,{class:n([`seg-btn`,{on:t.value.shape===`ellipse`}]),onClick:u[6]||=n=>{t.value.shape=`ellipse`,e.applyAgentRangeDraft()}},a(l.$t(`townView.k414bc049`)),3),y(`button`,{class:n([`seg-btn`,{on:t.value.shape===`rect`}]),onClick:u[7]||=n=>{t.value.shape=`rect`,e.applyAgentRangeDraft()}},a(l.$t(`townView.k43u0g050`)),3)])]),y(`div`,Fs,[y(`span`,Is,a(l.$t(`townView.k41lwj105`)),1),D(y(`input`,{"onUpdate:modelValue":u[8]||=e=>t.value.radiusX=e,class:`obj-range`,type:`range`,min:`40`,max:`4000`,step:`8`,onInput:u[9]||=(...t)=>e.applyAgentRangeDraft&&e.applyAgentRangeDraft(...t),onChange:u[10]||=(...t)=>e.onAgentRangeCommit&&e.onAgentRangeCommit(...t)},null,544),[[A,t.value.radiusX,void 0,{number:!0}]]),y(`span`,Ls,a(Math.round(t.value.radiusX)),1)]),y(`div`,Rs,[y(`span`,zs,a(l.$t(`townView.k45bta106`)),1),D(y(`input`,{"onUpdate:modelValue":u[11]||=e=>t.value.radiusZ=e,class:`obj-range`,type:`range`,min:`40`,max:`4000`,step:`8`,onInput:u[12]||=(...t)=>e.applyAgentRangeDraft&&e.applyAgentRangeDraft(...t),onChange:u[13]||=(...t)=>e.onAgentRangeCommit&&e.onAgentRangeCommit(...t)},null,544),[[A,t.value.radiusZ,void 0,{number:!0}]]),y(`span`,Bs,a(Math.round(t.value.radiusZ)),1)]),y(`button`,{class:`obj-mini danger`,onClick:u[14]||=(...t)=>e.onClearAgentRange&&e.onClearAgentRange(...t)},a(l.$t(`townView.k1w45mzc107`)),1)],64)):(m(),b(`div`,Vs,a(l.$t(`townView.k14s8urm108`)),1)),u[20]||=y(`div`,{class:`obj-sep`},null,-1),y(`div`,Hs,[k(a(l.$t(`townView.k1ghjbfc133`))+` `+a(e.agentChatTitle)+` `,1),y(`button`,{class:`mini-btn chat-refresh`,title:l.$t(`townView.k15avt7g021`),onClick:u[15]||=(...t)=>e.onRefreshHistory&&e.onRefreshHistory(...t)},a(e.historyLoading?`…`:`↻`),9,Us)]),y(`div`,{ref:e.setChatScroll,class:`rpg-lines chat-embed`},[e.historyLoading?(m(),b(`div`,Ws,a(l.$t(`townView.kkhlx5h109`)),1)):w(``,!0),e.agentHistory.length?(m(),b(x,{key:1},[y(`div`,Gs,a(l.$t(`townView.k768cnt134`))+` `+a(e.agentHistory.length),1),(m(!0),b(x,null,h(e.agentHistory,t=>(m(),b(`div`,{key:t.id,class:`rpg-line hist`},[y(`span`,Ks,a(e.fmtTime(t.at)),1),y(`div`,qs,[e.chatKindLabel(t.kind)?(m(),b(`span`,{key:0,class:n([`rpg-kind`,`k-${t.kind}`])},a(e.chatKindLabel(t.kind)),3)):w(``,!0),y(`span`,Js,a(t.text),1)])]))),128))],64)):w(``,!0),e.agentChatRows.length?(m(),b(`div`,Ys,a(l.$t(`townView.k1cwz73k135`))+` `+a(e.agentChatRows.length),1)):w(``,!0),(m(!0),b(x,null,h(e.agentChatRows,t=>(m(),b(`div`,{key:t.id,class:`rpg-line live`},[y(`span`,Xs,a(e.fmtTime(t.at)),1),y(`div`,Zs,[y(`span`,Qs,a(t.text),1)])]))),128)),e.agentState===`busy`?(m(),b(`div`,$s,[u[16]||=y(`span`,{class:`ty-dot`},null,-1),u[17]||=y(`span`,{class:`ty-dot`},null,-1),u[18]||=y(`span`,{class:`ty-dot`},null,-1),y(`span`,ec,a(l.$t(`townView.k3o5tz9110`)),1)])):w(``,!0),!e.historyLoading&&!e.agentHistory.length&&!e.agentChatRows.length?(m(),b(`div`,tc,a(l.$t(`townView.k1qkqld7111`)),1)):w(``,!0)],512)],64))}}),[[`__scopeId`,`data-v-15686d36`]]),{__name:`WorkshopTownComponentsTownAgentInspector`}),rc={class:`health-body`},ic={class:`donut-wrap`},ac={class:`donut-center`},oc={class:`health-legend`},sc={class:`hl-row`},cc={class:`n`},lc={class:`hl-row`},uc={class:`n`},dc={class:`hl-row`},fc={class:`n`},pc={class:`hl-row`},mc={class:`n`},hc=Object.assign(V(p({__name:`TownHealthBody`,props:{healthPct:{},healthTone:{},idleCount:{},alarmCount:{},offlineCount:{},runningCount:{},setCanvas:{type:Function}},setup(e){return(t,n)=>(m(),b(`div`,rc,[y(`div`,ic,[y(`canvas`,{ref:e.setCanvas,width:`118`,height:`118`},null,512),y(`div`,ac,[y(`b`,{style:r({color:e.healthTone})},a(e.healthPct)+`%`,5),y(`span`,null,a(t.$t(`townView.k7h1nxo113`)),1)])]),y(`div`,oc,[y(`div`,sc,[n[0]||=y(`span`,{class:`hl-dot`,style:{background:`var(--hud-accent)`}},null,-1),k(` `+a(t.$t(`townView.k3vp67i114`))+` `,1),y(`span`,cc,a(e.runningCount),1)]),y(`div`,lc,[n[1]||=y(`span`,{class:`hl-dot`,style:{background:`var(--hud-amber)`}},null,-1),k(` `+a(t.$t(`townView.k3zcvb115`))+` `,1),y(`span`,uc,a(e.idleCount),1)]),y(`div`,dc,[n[2]||=y(`span`,{class:`hl-dot`,style:{background:`var(--hud-danger)`}},null,-1),k(` `+a(t.$t(`townView.k3xmid116`))+` `,1),y(`span`,fc,a(e.alarmCount),1)]),y(`div`,pc,[n[3]||=y(`span`,{class:`hl-dot`,style:{background:`#3a4a63`}},null,-1),k(` `+a(t.$t(`townView.statesOffline`))+` `,1),y(`span`,mc,a(e.offlineCount),1)])])]))}}),[[`__scopeId`,`data-v-2e57631b`]]),{__name:`WorkshopTownComponentsTownHealthBody`}),gc={class:`alarm-list`},_c={class:`al-body`},vc={class:`al-txt`},yc={class:`al-src`},bc=[`onClick`],xc={key:0,class:`rail-empty`},Sc=Object.assign(V(p({__name:`TownAlarmList`,props:{alarms:{},alarmStates:{},advanceAlarm:{type:Function}},setup(e){return(t,r)=>(m(),b(`div`,gc,[(m(!0),b(x,null,h(e.alarms.slice(0,8),t=>(m(),b(`div`,{key:t.id,class:`al-row`},[y(`span`,{class:n([`al-ico`,t.state===2?`info`:t.state===1?`warn`:`crit`])},[...r[0]||=[y(`svg`,{class:`al-svg`,viewBox:`0 0 24 24`},[y(`path`,{d:`M12 3 22 20H2L12 3Z`}),y(`path`,{d:`M12 10v4M12 17v.2`})],-1)]],2),y(`div`,_c,[y(`div`,vc,a(t.txt),1),y(`div`,yc,a(t.src)+` · `+a(t.time),1)]),y(`button`,{class:n([`al-state`,`s${t.state}`]),onClick:n=>e.advanceAlarm(t.id)},a(e.alarmStates[t.state]),11,bc)]))),128)),e.alarms.length?w(``,!0):(m(),b(`div`,xc,[r[1]||=y(`svg`,{class:`re-ico`,viewBox:`0 0 24 24`},[y(`path`,{d:`M12 3l7 3v5c0 4.6-3 8.2-7 10-4-1.8-7-5.4-7-10V6l7-3Z`}),y(`path`,{d:`m9.2 12.2 2 2 3.6-4`})],-1),y(`span`,null,a(t.$t(`townView.kjz544r119`)),1)]))]))}}),[[`__scopeId`,`data-v-cc7acafa`]]),{__name:`WorkshopTownComponentsTownAlarmList`}),Cc={class:`event-list`},wc={class:`ev-time`},Tc=[`title`],Ec=[`title`],Dc={key:0,class:`rail-empty`},Oc=Object.assign(V(p({__name:`TownEventList`,props:{ticker:{},fmtTime:{type:Function}},setup(e){return(t,n)=>(m(),b(`div`,Cc,[(m(!0),b(x,null,h([...e.ticker].reverse(),(t,n)=>(m(),b(`div`,{key:`${t.at}-${n}`,class:`event-row`},[y(`span`,wc,a(e.fmtTime(t.at)),1),y(`span`,{class:`ev-name`,title:t.agentName},a(t.agentName),9,Tc),y(`span`,{class:`ev-text`,title:t.text},a(t.text),9,Ec)]))),128)),e.ticker.length?w(``,!0):(m(),b(`div`,Dc,[n[0]||=y(`svg`,{class:`re-ico`,viewBox:`0 0 24 24`},[y(`path`,{d:`M3 12h3l2.5-6 4 12L15 12h6`})],-1),y(`span`,null,a(t.$t(`townView.k2uk6ua121`)),1)]))]))}}),[[`__scopeId`,`data-v-93c4c4bd`]]),{__name:`WorkshopTownComponentsTownEventList`}),kc={class:`mm-body`},Ac=[`title`],jc={class:`mm-col`},Mc=[`title`],Nc=[`title`],Pc=[`title`],Fc={class:`mm-meta mono`},Ic=Object.assign(V(p({__name:`TownNavMap`,props:{minimap:{},navScale:{},scene3dRef:{},setCanvas:{type:Function},onNavDown:{type:Function},onNavMove:{type:Function},onNavUp:{type:Function},onNavWheel:{type:Function},onResetView:{type:Function}},setup(e){return(t,n)=>(m(),b(x,null,[y(`div`,kc,[y(`div`,{class:`mm-wrap`,title:t.$t(`townView.klfwiqg023`)},[y(`canvas`,{ref:e.setCanvas,class:`nav-cv`,onPointerdown:n[0]||=(...t)=>e.onNavDown&&e.onNavDown(...t),onPointermove:n[1]||=(...t)=>e.onNavMove&&e.onNavMove(...t),onPointerup:n[2]||=(...t)=>e.onNavUp&&e.onNavUp(...t),onPointercancel:n[3]||=(...t)=>e.onNavUp&&e.onNavUp(...t),onWheel:n[4]||=j((...t)=>e.onNavWheel&&e.onNavWheel(...t),[`prevent`])},null,544)],8,Ac),y(`div`,jc,[y(`button`,{class:`vp-tool`,title:t.$t(`townView.k1lap9bs024`),onClick:n[5]||=(...t)=>e.onResetView&&e.onResetView(...t)},[...n[8]||=[y(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[y(`path`,{d:`M3 12a9 9 0 1 0 3-6.7M3 4v5h5`})],-1)]],8,Mc),y(`button`,{class:`vp-tool`,title:t.$t(`townView.kav8a8k025`),onClick:n[6]||=t=>e.scene3dRef?.zoomBy(.22)},[...n[9]||=[y(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[y(`circle`,{cx:`11`,cy:`11`,r:`6.5`}),y(`path`,{d:`m16 16 4.5 4.5M8.5 11h5`})],-1)]],8,Nc),y(`button`,{class:`vp-tool`,title:t.$t(`townView.k1u7uce9026`),onClick:n[7]||=t=>e.scene3dRef?.zoomBy(-.18)},[...n[10]||=[y(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[y(`circle`,{cx:`11`,cy:`11`,r:`6.5`}),y(`path`,{d:`m16 16 4.5 4.5M8.5 11h5M11 8.5v5`})],-1)]],8,Pc)])]),y(`div`,Fc,a(t.$t(`townView.k1gaaodq136`))+a(e.navScale.toFixed(1))+` · `+a(e.minimap?.devices?.length??0)+` `+a(t.$t(`townView.k47e16126`)),1)],64))}}),[[`__scopeId`,`data-v-954a301c`]]),{__name:`WorkshopTownComponentsTownNavMap`});function Lc(){let{t:e}=L(),t=fe(),n=i({drafts:{},errs:{},busy:``,winText:e=>`${Number.isFinite(e.lo)?e.lo:`-∞`} ~ ${Number.isFinite(e.hi)?e.hi:`+∞`} ${e.unit}`,write(r){let i=n.drafts[r.id];if(i==null||i===``)return;let a=Number(i);if(a<r.lo||a>r.hi){n.errs[r.id]=e(`deviceTwinPanel.kxddket010`,{p0:r.src===`recipe`?e(`deviceTwinPanel.kq2jssk008`):e(`deviceTwinPanel.k1iwj796009`),p1:n.winText(r)});return}n.errs[r.id]=``,n.busy=r.id,t.write(r.id,a).then(e=>{e.ok||(n.errs[r.id]=e.message)}).catch(e=>{n.errs[r.id]=Q(e)}).finally(()=>{n.busy=``})}});return n}var Rc=Symbol(`aw.deviceTwin.dcwWrite`);function zc(){let e=Lc();return l(Rc,e),e}function Bc(){let e=c(Rc);if(!e)throw Error(`[deviceTwin] useDeviceTwinDcwWriteContext: 缺少 provideDeviceTwinDcwWrite()`);return e}var Vc={class:`twin-dcw`},Hc={class:`dcw-head`},Uc={key:0,class:`dcw-src`},Wc={class:`dcw-set`},Gc=[`title`],Kc={key:0,class:`dcw-act-at`},qc={class:`dcw-win`},Jc=[`title`],Yc={class:`dcw-ctrl`},Xc=[`onUpdate:modelValue`,`step`,`min`,`max`,`placeholder`,`onKeydown`],Zc=[`disabled`,`title`,`onClick`],Qc={key:1,class:`dcw-err`},$c=Object.assign(V(p({__name:`DeviceTwinDcwSection`,props:{rows:{}},setup(t){let n=Bc();return(r,i)=>(m(),b(`div`,Vc,[(m(!0),b(x,null,h(t.rows,t=>(m(),b(`div`,{key:t.id,class:`dcw-item`},[y(`div`,Hc,[y(`em`,null,[k(a(t.ch),1),t.src===`recipe`?(m(),b(`i`,Uc,a(r.$t(`deviceTwinPanel.k48grv006`)),1)):w(``,!0)]),y(`b`,Wc,[k(a(t.value==null?`--`:t.value.toFixed(t.decimals)),1),y(`i`,null,a(t.unit),1)])]),t.readValue!=null||t.lastReadAt?(m(),b(`div`,{key:0,class:`dcw-act`,title:r.$t(`deviceTwinPanel.k9r7d4e030`)},[i[0]||=y(`em`,null,`ACT`,-1),y(`b`,null,[k(a(t.readValue==null?`--`:t.readValue.toFixed(t.decimals)),1),y(`i`,null,a(t.unit),1)]),t.lastReadAt?(m(),b(`i`,Kc,a(t.lastReadAt.slice(11,19)),1)):w(``,!0)],8,Gc)):w(``,!0),y(`div`,qc,[y(`span`,{title:t.src===`recipe`?r.$t(`deviceTwinPanel.winRecipe`):r.$t(`deviceTwinPanel.winRange`)},a(e(n).winText(t)),9,Jc)]),y(`div`,Yc,[D(y(`input`,{"onUpdate:modelValue":r=>e(n).drafts[t.id]=r,type:`number`,class:`ctrl-input`,step:10**-t.decimals,min:Number.isFinite(t.lo)?t.lo:void 0,max:Number.isFinite(t.hi)?t.hi:void 0,placeholder:`${Number.isFinite(t.lo)?t.lo:``} ~ ${Number.isFinite(t.hi)?t.hi:``}`,onKeydown:F(r=>e(n).write(t),[`enter`])},null,40,Xc),[[A,e(n).drafts[t.id],void 0,{number:!0}]]),y(`button`,{class:`ctrl-btn dcw-send`,disabled:e(n).drafts[t.id]==null||e(n).drafts[t.id]===``||e(n).busy===t.id,title:r.$t(`deviceTwinPanel.k1j04u8001`),onClick:j(r=>e(n).write(t),[`stop`])},a(e(n).busy===t.id?`···`:`SET`),9,Zc)]),e(n).errs[t.id]?(m(),b(`small`,Qc,a(e(n).errs[t.id]),1)):w(``,!0)]))),128))]))}}),[[`__scopeId`,`data-v-e13b315d`]]),{__name:`WorkshopDeviceTwinDcwSection`}),el={class:`twin-row`},tl={class:`twin-model-tag`},nl={class:`twin-idbar`},rl={class:`twin-name`},il={class:`twin-code`},al=[`disabled`,`title`],ol={key:0,class:`twin-tele`},sl={key:1,class:`twin-daq`},cl=Object.assign(V(p({__name:`DeviceTwinCard`,props:{twin:{},daqRows:{},dcwRows:{},armed:{type:Boolean},busy:{type:Boolean}},emits:[`focus`,`remove`],setup(e){let t=e=>e.kind===`daq`||(e.modelRef??``).startsWith(`daq-`),i={idle:`var(--hud-amber)`,running:`var(--hud-ok)`,alarm:`var(--hud-danger)`,offline:`var(--hud-dim)`},o={idle:`STANDBY`,running:`RUNNING`,alarm:`ALARM`,offline:`OFFLINE`},s=e=>e.replace(/[^A-Za-z0-9]/g,``).slice(0,4).toUpperCase()||`DEV`,c=e=>e.replace(/^dev-/,``).replace(/[^a-z0-9]/gi,``).slice(-6).toUpperCase(),l=e=>typeof e==`number`?(Math.round(e*100)/100).toString():String(e);return(u,d)=>(m(),b(`button`,{class:n([`twin-card`,{daq:t(e.twin)}]),type:`button`,onClick:d[1]||=e=>u.$emit(`focus`)},[y(`div`,el,[y(`span`,tl,a(s(e.twin.modelRef||e.twin.name)),1),y(`div`,nl,[y(`span`,rl,a(e.twin.name),1),y(`span`,il,a(t(e.twin)?`DAQ`:c(e.twin.id)),1)]),y(`button`,{class:n([`twin-del`,{armed:e.armed}]),disabled:e.busy,title:e.armed?u.$t(`deviceTwinPanel.armDelete`):u.$t(`deviceTwinPanel.delDevice`),onClick:d[0]||=j(e=>u.$emit(`remove`),[`stop`])},a(e.armed?u.$t(`deviceTwinPanel.k44653007`):`✕`),11,al),y(`span`,{class:n([`twin-state`,`s-${e.twin.state}`])},[y(`i`,{class:`twin-state-dot`,style:r({background:i[e.twin.state]||`var(--hud-dim)`})},null,4),k(` `+a(o[e.twin.state]||e.twin.state),1)],2)]),Object.keys(e.twin.telemetry).length?(m(),b(`div`,ol,[(m(!0),b(x,null,h(e.twin.telemetry,(e,t)=>(m(),b(`span`,{key:t,class:`tele-item`},[y(`em`,null,a(t),1),y(`b`,null,a(l(e)),1)]))),128))])):w(``,!0),e.daqRows?.length?(m(),b(`div`,sl,[(m(!0),b(x,null,h(e.daqRows,(e,t)=>(m(),b(`span`,{key:`${e.ch}-${t}`,class:n([`daq-item`,{alarm:e.alarm}])},[y(`em`,null,a(e.ch),1),y(`b`,null,[k(a(e.value),1),y(`i`,null,a(e.unit),1)])],2))),128))])):w(``,!0),e.dcwRows?.length?(m(),E($c,{key:2,rows:e.dcwRows??[]},null,8,[`rows`])):w(``,!0)],2))}}),[[`__scopeId`,`data-v-259585c1`]]),{__name:`WorkshopDeviceTwinCard`});function ll(){let e=pe(),t=null;f(()=>{e.load(),t=R(()=>void e.load(),2e3)}),u(()=>{t&&clearInterval(t)});let n=s(``),r=s(``),i=s(``),a=null;async function o(t){if(i.value!==t.id){i.value=t.id,a&&clearTimeout(a),a=setTimeout(()=>{i.value=``},3e3);return}a&&clearTimeout(a),i.value=``,n.value=t.id,r.value=``;try{await e.remove(t.id)}catch(e){r.value=Q(e)}finally{n.value=``}}return{twins:e,busyId:n,ctrlMsg:r,armedId:i,removeTwin:o}}var ul={class:`twin-panel`},dl={class:`twin-head`},fl={class:`twin-kicker`},pl={class:`twin-count`},ml={key:0,class:`twin-error`},hl={key:1,class:`twin-empty`},gl={key:2,class:`twin-empty`},_l={class:`twin-empty-frame`},vl={class:`twin-empty-title`},yl={class:`twin-empty-sub`},bl={key:3,class:`twin-list`},xl={key:4,class:`twin-err`},Sl=Object.assign(V(p({__name:`DeviceTwinPanel`,props:{daqLive:{},dcwLive:{}},emits:[`focus-device`],setup(t){let{twins:n,busyId:r,ctrlMsg:i,armedId:o,removeTwin:s}=ll();return zc(),(c,l)=>(m(),b(`aside`,ul,[y(`div`,dl,[y(`span`,fl,a(c.$t(`deviceTwinPanel.k7k6evr002`)),1),y(`span`,pl,a(e(n).twins.length),1)]),e(n).error?(m(),b(`div`,ml,a(e(n).error),1)):w(``,!0),e(n).loaded?e(n).twins.length===0?(m(),b(`div`,gl,[y(`div`,_l,[y(`div`,vl,a(c.$t(`deviceTwinPanel.k13y2qmg004`)),1),y(`div`,yl,a(c.$t(`deviceTwinPanel.kotf23l005`)),1)])])):(m(),b(`div`,bl,[(m(!0),b(x,null,h(e(n).twins,n=>(m(),E(cl,{key:n.id,twin:n,"daq-rows":t.daqLive?.[n.id],"dcw-rows":t.dcwLive?.[n.id],armed:e(o)===n.id,busy:e(r)===n.id,onFocus:e=>c.$emit(`focus-device`,n),onRemove:t=>e(s)(n)},null,8,[`twin`,`daq-rows`,`dcw-rows`,`armed`,`busy`,`onFocus`,`onRemove`]))),128))])):(m(),b(`div`,hl,a(c.$t(`deviceTwinPanel.kkw7sn5003`)),1)),e(i)?(m(),b(`span`,xl,a(e(i)),1)):w(``,!0)]))}}),[[`__scopeId`,`data-v-9fd2b035`]]),{__name:`WorkshopDeviceTwinPanel`}),Cl={class:`sheet-hd`},wl={class:`sheet-hd-t`},Tl=[`aria-label`],El={key:0,class:`panel inspector`},Dl={class:`panel-hd`},Ol=[`title`],kl={class:`ins-chip-row`},Al={class:`ins-chip mono`},jl={key:0,class:`ins-chip accent`},Ml={key:1,class:`ins-chip accent`},Nl={class:`panel`},Pl={class:`panel-hd`},Fl={class:`panel`},Il={class:`panel-hd`},Ll={class:`panel-tag`},Rl={class:`panel`},zl={class:`panel-hd`},Bl={class:`panel-tag`},Vl=[`title`],Hl={class:`panel`},Ul={class:`panel-hd`},Wl={class:`panel-tag`},Gl={class:`panel`},Kl={class:`panel-hd`},ql=Object.assign(V(p({__name:`TownRightRail`,props:C({sheetOpen:{},closeSheet:{type:Function},mode:{},selected:{},selectedIsDaq:{type:Boolean},selectedIsDcw:{type:Boolean},selectedAgentRoleLabel:{},selectedAgentMeta:{},closeScale:{type:Function},deviceTwins:{},deviceModels:{},daq:{},dcw:{},selectedDcwNode:{},selectedDcwWindow:{},selectedDcwDeviceName:{},dcwWriteErrs:{},dcwWinLabel:{type:Function},dcwWinInputPh:{type:Function},isLegacyDaqTwin:{type:Function},doWriteSelectedDcw:{type:Function},bindSelectedDcw:{type:Function},unbindSelectedDcw:{type:Function},daqBoundDeviceName:{},selectedDaqNode:{},selectedDaqSim:{},fmtDaq:{type:Function},onDaqIntervalCommit:{type:Function},onDaqThresholdCommit:{type:Function},removeSelectedDevice:{type:Function},unbindDaq:{type:Function},bindDaq:{type:Function},daqTemplates:{},daqBindChoices:{},daqBindChoiceCount:{},bindPopOpen:{type:Boolean},bindPopMaxH:{},toggleBindPop:{type:Function},bindDaqChoice:{type:Function},setSparkRef:{type:Function},onObjNameCommit:{type:Function},bindDeviceModel:{type:Function},boundDaqRows:{},boundDcwRows:{},dcwTemplates:{},dcwBindChoices:{},dcwBindChoiceCount:{},dcwBindPopOpen:{type:Boolean},dcwMarkPct:{type:Function},doDcwWrite:{type:Function},unbindDcw:{type:Function},bindDcwChoice:{type:Function},tMode:{},deviceDeleteArmed:{},setTMode:{type:Function},onScaleInput:{type:Function},onScaleCommit:{type:Function},agentModels:{},agentChatTitle:{},agentChatColor:{},agentChatStateLabel:{},selectedAgentRoleTag:{},agentDrawingRange:{type:Boolean},agentRangeStatusText:{},agentHistory:{},agentChatRows:{},historyLoading:{type:Boolean},fmtTime:{type:Function},chatKindLabel:{type:Function},onRefreshHistory:{type:Function},onToggleRangeDraw:{type:Function},applyAgentRangeDraft:{type:Function},onAgentRangeCommit:{type:Function},onClearAgentRange:{type:Function},bindAgentModel:{type:Function},setChatScroll:{type:Function},agentBindings:{},pendingApprovals:{},approvalRemainingSec:{type:Function},bindingNodeName:{type:Function},setBindingMode:{type:Function},unbindAgentNode:{type:Function},bindAgentNode:{type:Function},decideApproval:{type:Function},healthPct:{},healthTone:{},idleCount:{},alarmCount:{},offlineCount:{},runningCount:{},setDonutCanvas:{type:Function},daqLive:{},dcwLive:{},onFocusDevice:{type:Function},alarms:{},alarmStates:{},advanceAlarm:{type:Function},activeAlarmCount:{},clearAlarms:{type:Function},ticker:{},minimap:{},navScale:{},scene3dRef:{},setNavCanvas:{type:Function},onNavDown:{type:Function},onNavMove:{type:Function},onNavUp:{type:Function},onNavWheel:{type:Function},onResetView:{type:Function}},{objNameDraft:{required:!0},objNameDraftModifiers:{},bindPick:{required:!0},bindPickModifiers:{},daqIntervalDraft:{required:!0},daqIntervalDraftModifiers:{},dcwWriteDrafts:{required:!0},dcwWriteDraftsModifiers:{},dcwBindPick:{required:!0},dcwBindPickModifiers:{},agentRangeDraft:{required:!0},agentRangeDraftModifiers:{},agentBindKind:{required:!0},agentBindKindModifiers:{},agentBindNodeId:{required:!0},agentBindNodeIdModifiers:{},agentBindMode:{required:!0},agentBindModeModifiers:{},approvalComments:{required:!0},approvalCommentsModifiers:{}}),emits:[`update:objNameDraft`,`update:bindPick`,`update:daqIntervalDraft`,`update:dcwWriteDrafts`,`update:dcwBindPick`,`update:agentRangeDraft`,`update:agentBindKind`,`update:agentBindNodeId`,`update:agentBindMode`,`update:approvalComments`],setup(e){let t=d(e,`objNameDraft`),r=d(e,`bindPick`),i=d(e,`daqIntervalDraft`),o=d(e,`dcwWriteDrafts`),s=d(e,`dcwBindPick`),c=d(e,`agentRangeDraft`),l=d(e,`agentBindKind`),u=d(e,`agentBindNodeId`),f=d(e,`agentBindMode`),p=d(e,`approvalComments`);return(d,h)=>(m(),b(`aside`,{id:`town-rail-right`,class:n([`rail rail-right`,{"sheet-open":e.sheetOpen===`right`}])},[y(`div`,Cl,[h[14]||=y(`span`,{class:`sheet-grip`,"aria-hidden":`true`},null,-1),y(`span`,wl,a(d.$t(`townView.k17dkhgd112`)),1),y(`button`,{type:`button`,class:`sheet-x`,"aria-label":d.$t(`common.close`),onClick:h[0]||=(...t)=>e.closeSheet&&e.closeSheet(...t)},` ✕ `,8,Tl)]),g(P,{name:`ins`},{default:T(()=>[e.selected?(m(),b(`section`,El,[y(`div`,Dl,[y(`h3`,null,a(e.selected.kind===`device`?e.selectedIsDcw?d.$t(`townView.k1ekqxlt146`):e.selectedIsDaq?d.$t(`townView.k1empnnb178`):d.$t(`townView.k1k6wg8j185`):e.selectedAgentRoleLabel),1),y(`button`,{class:`mini-btn`,title:d.$t(`townView.k1bsckft013`),onClick:h[1]||=(...t)=>e.closeScale&&e.closeScale(...t)},` ✕ `,8,Ol)]),y(`div`,kl,[y(`span`,Al,a(e.selected.id.slice(0,8)),1),e.selected.kind===`device`&&e.selectedIsDaq?(m(),b(`span`,jl,`DAQ`)):e.selected.kind===`device`&&e.selectedIsDcw?(m(),b(`span`,Ml,`DCW`)):w(``,!0)]),e.selected.kind===`device`?(m(),b(x,{key:0},[e.selectedIsDcw?(m(),E(ba,{key:0,"dcw-write-drafts":o.value,"onUpdate:dcwWriteDrafts":h[2]||=e=>o.value=e,"dcw-bind-pick":s.value,"onUpdate:dcwBindPick":h[3]||=e=>s.value=e,mode:e.mode,selected:e.selected,"device-twins":e.deviceTwins,dcw:e.dcw,"selected-dcw-node":e.selectedDcwNode,"selected-dcw-window":e.selectedDcwWindow,"selected-dcw-device-name":e.selectedDcwDeviceName,"dcw-write-errs":e.dcwWriteErrs,"dcw-win-label":e.dcwWinLabel,"dcw-win-input-ph":e.dcwWinInputPh,"is-legacy-daq-twin":e.isLegacyDaqTwin,"do-write-selected-dcw":e.doWriteSelectedDcw,"bind-selected-dcw":e.bindSelectedDcw,"unbind-selected-dcw":e.unbindSelectedDcw},null,8,[`dcw-write-drafts`,`dcw-bind-pick`,`mode`,`selected`,`device-twins`,`dcw`,`selected-dcw-node`,`selected-dcw-window`,`selected-dcw-device-name`,`dcw-write-errs`,`dcw-win-label`,`dcw-win-input-ph`,`is-legacy-daq-twin`,`do-write-selected-dcw`,`bind-selected-dcw`,`unbind-selected-dcw`])):e.selectedIsDaq?(m(),E(Ga,{key:1,"bind-pick":r.value,"onUpdate:bindPick":h[4]||=e=>r.value=e,"daq-interval-draft":i.value,"onUpdate:daqIntervalDraft":h[5]||=e=>i.value=e,mode:e.mode,selected:e.selected,"device-twins":e.deviceTwins,daq:e.daq,"daq-bound-device-name":e.daqBoundDeviceName,"selected-daq-node":e.selectedDaqNode,"selected-daq-sim":e.selectedDaqSim,"fmt-daq":e.fmtDaq,"is-legacy-daq-twin":e.isLegacyDaqTwin,"on-daq-interval-commit":e.onDaqIntervalCommit,"on-daq-threshold-commit":e.onDaqThresholdCommit,"remove-selected-device":e.removeSelectedDevice,"unbind-daq":e.unbindDaq,"bind-daq":e.bindDaq},null,8,[`bind-pick`,`daq-interval-draft`,`mode`,`selected`,`device-twins`,`daq`,`daq-bound-device-name`,`selected-daq-node`,`selected-daq-sim`,`fmt-daq`,`is-legacy-daq-twin`,`on-daq-interval-commit`,`on-daq-threshold-commit`,`remove-selected-device`,`unbind-daq`,`bind-daq`])):(m(),b(x,{key:2},[g(mo,{"obj-name-draft":t.value,"onUpdate:objNameDraft":h[6]||=e=>t.value=e,mode:e.mode,selected:e.selected,"scene-3d-ref":e.scene3dRef,"device-models":e.deviceModels,"bound-daq-rows":e.boundDaqRows,"daq-templates":e.daqTemplates,"daq-bind-choices":e.daqBindChoices,"daq-bind-choice-count":e.daqBindChoiceCount,"bind-pop-open":e.bindPopOpen,"bind-pop-max-h":e.bindPopMaxH,"toggle-bind-pop":e.toggleBindPop,"bind-daq-choice":e.bindDaqChoice,"unbind-daq":e.unbindDaq,"set-spark-ref":e.setSparkRef,"on-obj-name-commit":e.onObjNameCommit,"bind-device-model":e.bindDeviceModel},null,8,[`obj-name-draft`,`mode`,`selected`,`scene-3d-ref`,`device-models`,`bound-daq-rows`,`daq-templates`,`daq-bind-choices`,`daq-bind-choice-count`,`bind-pop-open`,`bind-pop-max-h`,`toggle-bind-pop`,`bind-daq-choice`,`unbind-daq`,`set-spark-ref`,`on-obj-name-commit`,`bind-device-model`]),g(zo,{"dcw-write-drafts":o.value,"onUpdate:dcwWriteDrafts":h[7]||=e=>o.value=e,mode:e.mode,dcw:e.dcw,"bound-dcw-rows":e.boundDcwRows,"dcw-templates":e.dcwTemplates,"dcw-bind-choices":e.dcwBindChoices,"dcw-bind-choice-count":e.dcwBindChoiceCount,"dcw-bind-pop-open":e.dcwBindPopOpen,"bind-pop-max-h":e.bindPopMaxH,"dcw-write-errs":e.dcwWriteErrs,"dcw-mark-pct":e.dcwMarkPct,"do-dcw-write":e.doDcwWrite,"unbind-dcw":e.unbindDcw,"toggle-bind-pop":e.toggleBindPop,"bind-dcw-choice":e.bindDcwChoice},null,8,[`dcw-write-drafts`,`mode`,`dcw`,`bound-dcw-rows`,`dcw-templates`,`dcw-bind-choices`,`dcw-bind-choice-count`,`dcw-bind-pop-open`,`bind-pop-max-h`,`dcw-write-errs`,`dcw-mark-pct`,`do-dcw-write`,`unbind-dcw`,`toggle-bind-pop`,`bind-dcw-choice`]),g(qo,{mode:e.mode,selected:e.selected,"t-mode":e.tMode,"device-delete-armed":e.deviceDeleteArmed,"set-t-mode":e.setTMode,"on-scale-input":e.onScaleInput,"on-scale-commit":e.onScaleCommit,"remove-selected-device":e.removeSelectedDevice},null,8,[`mode`,`selected`,`t-mode`,`device-delete-armed`,`set-t-mode`,`on-scale-input`,`on-scale-commit`,`remove-selected-device`])],64))],64)):e.selected.kind===`agent`?(m(),E(nc,{key:1,"agent-range-draft":c.value,"onUpdate:agentRangeDraft":h[8]||=e=>c.value=e,"agent-bind-kind":l.value,"onUpdate:agentBindKind":h[9]||=e=>l.value=e,"agent-bind-node-id":u.value,"onUpdate:agentBindNodeId":h[10]||=e=>u.value=e,"agent-bind-mode":f.value,"onUpdate:agentBindMode":h[11]||=e=>f.value=e,"approval-comments":p.value,"onUpdate:approvalComments":h[12]||=e=>p.value=e,mode:e.mode,selected:e.selected,"scene-3d-ref":e.scene3dRef,"agent-models":e.agentModels,"agent-role":e.selectedAgentMeta?.role??null,"agent-state":e.selectedAgentMeta?.state??null,"agent-harness":e.selectedAgentMeta?.harness??null,"agent-chat-title":e.agentChatTitle,"agent-chat-color":e.agentChatColor,"agent-chat-state-label":e.agentChatStateLabel,"selected-agent-role-tag":e.selectedAgentRoleTag,"agent-drawing-range":e.agentDrawingRange,"agent-range-status-text":e.agentRangeStatusText,"agent-history":e.agentHistory,"agent-chat-rows":e.agentChatRows,"history-loading":e.historyLoading,"fmt-time":e.fmtTime,"chat-kind-label":e.chatKindLabel,"on-refresh-history":e.onRefreshHistory,"on-toggle-range-draw":e.onToggleRangeDraw,"apply-agent-range-draft":e.applyAgentRangeDraft,"on-agent-range-commit":e.onAgentRangeCommit,"on-clear-agent-range":e.onClearAgentRange,"bind-agent-model":e.bindAgentModel,"set-chat-scroll":e.setChatScroll,"agent-bindings":e.agentBindings,"pending-approvals":e.pendingApprovals,"approval-remaining-sec":e.approvalRemainingSec,"binding-node-name":e.bindingNodeName,"set-binding-mode":e.setBindingMode,"unbind-agent-node":e.unbindAgentNode,"bind-agent-node":e.bindAgentNode,"decide-approval":e.decideApproval,daq:e.daq,dcw:e.dcw},null,8,`agent-range-draft.agent-bind-kind.agent-bind-node-id.agent-bind-mode.approval-comments.mode.selected.scene-3d-ref.agent-models.agent-role.agent-state.agent-harness.agent-chat-title.agent-chat-color.agent-chat-state-label.selected-agent-role-tag.agent-drawing-range.agent-range-status-text.agent-history.agent-chat-rows.history-loading.fmt-time.chat-kind-label.on-refresh-history.on-toggle-range-draw.apply-agent-range-draft.on-agent-range-commit.on-clear-agent-range.bind-agent-model.set-chat-scroll.agent-bindings.pending-approvals.approval-remaining-sec.binding-node-name.set-binding-mode.unbind-agent-node.bind-agent-node.decide-approval.daq.dcw`.split(`.`))):w(``,!0)])):w(``,!0)]),_:1}),y(`section`,Nl,[y(`div`,Pl,[y(`h3`,null,a(d.$t(`townView.k17dkhgd112`)),1)]),g(hc,{"health-pct":e.healthPct,"health-tone":e.healthTone,"idle-count":e.idleCount,"alarm-count":e.alarmCount,"offline-count":e.offlineCount,"running-count":e.runningCount,"set-canvas":e.setDonutCanvas},null,8,[`health-pct`,`health-tone`,`idle-count`,`alarm-count`,`offline-count`,`running-count`,`set-canvas`])]),y(`section`,Fl,[y(`div`,Il,[y(`h3`,null,a(d.$t(`townView.k1q247fn117`)),1),y(`span`,Ll,a(e.deviceTwins.twins.length),1)]),g(Sl,{class:`kd-embed`,"daq-live":e.daqLive,"dcw-live":e.dcwLive,onFocusDevice:e.onFocusDevice},null,8,[`daq-live`,`dcw-live`,`onFocusDevice`])]),y(`section`,Rl,[y(`div`,zl,[y(`h3`,null,a(d.$t(`townView.k1cxf749118`)),1),y(`span`,Bl,a(e.activeAlarmCount)+` `+a(d.$t(`townView.k4dfq040`)),1),y(`button`,{class:`mini-btn`,title:d.$t(`townView.k1bkswpz022`),onClick:h[13]||=(...t)=>e.clearAlarms&&e.clearAlarms(...t)},` ✓ `,8,Vl)]),g(Sc,{alarms:e.alarms,"alarm-states":e.alarmStates,"advance-alarm":e.advanceAlarm},null,8,[`alarms`,`alarm-states`,`advance-alarm`])]),y(`section`,Hl,[y(`div`,Ul,[y(`h3`,null,a(d.$t(`townView.k1cxdtq2120`)),1),y(`span`,Wl,a(e.ticker.length),1)]),g(Oc,{ticker:e.ticker,"fmt-time":e.fmtTime},null,8,[`ticker`,`fmt-time`])]),y(`section`,Gl,[y(`div`,Kl,[y(`h3`,null,a(d.$t(`townView.kjug2jq122`)),1)]),g(Ic,{minimap:e.minimap,"nav-scale":e.navScale,"scene-3d-ref":e.scene3dRef,"set-canvas":e.setNavCanvas,"on-nav-down":e.onNavDown,"on-nav-move":e.onNavMove,"on-nav-up":e.onNavUp,"on-nav-wheel":e.onNavWheel,"on-reset-view":e.onResetView},null,8,[`minimap`,`nav-scale`,`scene-3d-ref`,`set-canvas`,`on-nav-down`,`on-nav-move`,`on-nav-up`,`on-nav-wheel`,`on-reset-view`])])],2))}}),[[`__scopeId`,`data-v-ae60794f`]]),{__name:`WorkshopTownComponentsTownRightRail`}),Jl={class:`statusbar`},Yl={class:`sb-stats`},Xl={class:`sb-lat mono`},Zl={class:`copy`},Ql=Object.assign(V(p({__name:`TownStatusBar`,props:{connState:{},syncing:{type:Boolean},blockCount:{},agentCount:{},deviceCount:{},fps:{}},setup(e){return(t,r)=>(m(),b(`footer`,Jl,[y(`span`,null,[y(`span`,{class:n([`sb-dot`,{red:e.connState!==`open`}])},null,2),k(a(t.$t(`townView.k1i4g246123`))+` `,1),y(`b`,null,a(e.connState===`open`?t.$t(`townView.k41k5c154`):e.syncing?t.$t(`townView.k3lmtk3184`):t.$t(`townView.k44c2n186`)),1)]),y(`span`,Yl,[k(a(t.$t(`townView.k4a0jt124`))+` `,1),y(`b`,null,a(e.blockCount),1),r[0]||=y(`i`,null,`·`,-1),k(a(t.$t(`townView.k3xdvm125`))+` `,1),y(`b`,null,a(e.agentCount),1),r[1]||=y(`i`,null,`·`,-1),k(a(t.$t(`townView.k47e16126`))+` `,1),y(`b`,null,a(e.deviceCount),1)]),y(`span`,Xl,a(e.fps)+` FPS `,1),y(`span`,Zl,` © 2026 ABO · DIGITAL TWIN · `+a(t.$t(`townView.k1h5gxpf137`)),1)]))}}),[[`__scopeId`,`data-v-5a3727ac`]]),{__name:`WorkshopTownComponentsTownStatusBar`}),$l={class:`town-view`},eu={class:`app`},tu=Object.assign(V(p({__name:`TownView`,props:{channelId:{},allChannels:{type:Boolean}},setup(n){let{t:r}=L(),i=n,a=se(),c=le(),{conn:l}=ce(),u=ee(),d=xe(),f=pe(),p=we(),h=B(),v=de(),x=fe(),S=z(),{sheetOpen:C,dockOpen:T,toggleSheet:E,closeSheet:D}=Te(),O=s(null),k=t(null),A=t(null),j=t(null),M=typeof window<`u`?new URLSearchParams(location.search).get(`render`)!==`2d`:!0,N=s(!1),P=s(0),F=s(0),I=s(0),R=s(null),V=s(null),H=s(``),U=_(()=>l.state===`connecting`),W=_(()=>a.channels[i.channelId]?.name??``),G=s(null),K=_(()=>{switch(G.value?.state){case`dirty`:return r(`townView.k3oo50k155`);case`saving`:return r(`townView.k1b38d59156`);case`saved`:return r(`townView.k3n51yk157`);case`error`:return r(`townView.k1b3ayhc158`);default:return``}});function te(e){ht.value=e}function q(e){O.value=e}let{selectedChannel:J,boundaryDraft:Y,onSelectChannel:X,saveChannelLayout:Z,removeChannelFromScene:ne,applyBoundaryDraft:re,dockHint:ie,onDockCardClick:ae,dropChannelAt:oe,channelPanelTab:Q,channelMembers:ue,bindMemberModel:me,openChannelTab:he,dockRev:ge,dockChannels:_e,hashColor:ve,onChannelDragStart:ye,buildTownInput:be}=Ee({props:i,entities:a,wsStore:c,sceneLayouts:p,characterAssets:d,scene3dRef:j,errorText:H,saveState:G}),{mode:$,snap:Se,tMode:Ce,setTMode:De,toggleMode:He,toggleSnap:Ue,updateAgentHome:We,updateAgentRange:Ge,saveLayout:Ke,runHint:qe,onScaleInput:Je,onScaleCommit:Ye,closeScale:Xe,agentModels:Ze,deviceModels:Qe,objNameDraft:$e,agentRangeDraft:et,agentDrawingRange:tt,agentRangeStatusText:rt,onToggleRangeDraw:it,applyAgentRangeDraft:at,onAgentRangeCommit:ot,onClearAgentRange:st,onObjNameCommit:ct,bindAgentModel:lt,bindDeviceModel:ut,deviceDeleteArmed:dt,removeSelectedDevice:ft,panelPos:pt,onPanelGripDown:mt,stageRef:ht,viewPreset:gt,onViewPreset:_t,fullscreenStage:vt}=Oe({props:i,entities:a,http:h,characterAssets:d,deviceTwins:f,scene3dRef:j,selected:V,errorText:H,saveState:G,onSelectChannel:X}),{agentChatRows:yt,agentChatTitle:bt,selectedAgentMeta:xt,selectedAgentRoleLabel:St,selectedAgentRoleTag:Ct,agentChatStateLabel:wt,agentHistory:Tt,historyLoading:Et,appendLiveChat:Dt,onRefreshHistory:Ot,agentChatColor:kt,chatKindLabel:At,fmtTime:jt,setChatScroll:Mt}=ke({selected:V,entities:a,scene3dRef:j}),{approvalRemainingSec:Nt,agentBindings:Pt,agentBindKind:Ft,agentBindNodeId:It,agentBindMode:Lt,pendingApprovals:Rt,approvalComments:zt,bindAgentNode:Bt,unbindAgentNode:Vt,setBindingMode:Ht,decideApproval:Ut,bindingNodeName:Wt}=Ae({selected:V,daq:v,dcw:x}),{alarms:Gt,ALARM_STATES:Kt,raiseAlarm:qt,activeAlarmCount:Jt,advanceAlarm:Yt,clearAlarms:Xt}=je(),{threshPct:Zt,fpsCap:Qt,FPS_OPTIONS:$t,setFpsCap:en,qualityMode:tn,QUALITY_OPTIONS:nn,setQualityMode:rn,alarmRange:an,estop:on,toggleEstop:sn,exposure:cn,tintOpacity:ln,sliderPct:un,onExposureInput:dn,onTintInput:fn,onResetView:pn}=Me({scene3dRef:j,raiseAlarm:qt}),{deviceCount:mn,runningCount:hn,idleCount:gn,alarmCount:_n,offlineCount:vn,healthPct:yn,healthTone:bn,setDonutCanvas:xn}=Ne({deviceTwins:f}),{sceneTwinPool:Sn,sceneTwinById:Cn,sceneEmpty:wn,syncSceneDevices:Tn,daqTemplates:En,dcwTemplates:Dn,treeOpen:On,toggleTreeGroup:kn,daqNodesByTpl:An,dcwNodesByTpl:jn,createDaqFromTemplate:Mn,createDcwFromTemplate:Nn,onDaqNodeDragStart:Pn,onDcwNodeDragStart:Fn,daqLeafState:In,dcwLeafState:Ln,daqTplById:Rn,daqTplOf:zn,isLegacyDaqTwin:Bn,daqTwins:Vn,daqSim:Hn,fmtDaq:Wn,trendColor:Gn,rtcHist:Kn,RTC_HIST_CAP:qn,setSparkRef:Jn,drawBindSparks:Yn}=Pe({daq:v,dcw:x,deviceTwins:f,townBus:u,sceneRef:k,scene3dRef:j,errorText:H,ready:N,blockCount:I,raiseAlarm:qt}),{boundDeviceOf:Xn,bindDaq:Zn,unbindDaq:Qn,nearestDeviceTwin:$n,bindPopOpen:er,dcwBindPopOpen:tr,bindPopMaxH:nr,toggleBindPop:rr,daqBindChoices:ir,daqBindChoiceCount:ar,bindDaqChoice:or,selectedIsDaq:sr,selectedDaqSim:cr,bindPick:lr,boundDaqRows:ur,daqBoundDeviceName:dr,selectedIsDcw:fr,selectedDcwNode:pr,selectedDcwWindow:mr,selectedDcwDeviceName:hr,dcwBindPick:gr,boundDcwRows:_r,bindSelectedDcw:vr,unbindSelectedDcw:yr,doWriteSelectedDcw:br,dcwWinLabel:xr,dcwWinInputPh:Sr,dcwWriteDrafts:Cr,dcwWriteErrs:wr,doDcwWrite:Tr,dcwBindChoices:Er,dcwBindChoiceCount:Dr,dcwMarkPct:Or,bindDcwChoice:kr,unbindDcw:Ar,selectedDaqNode:jr,daqIntervalDraft:Mr,onDaqIntervalCommit:Nr,onDaqThresholdCommit:Pr,dcwWindowOf:Fr}=Fe({selected:V,daq:v,dcw:x,deviceTwins:f,daqSim:Hn,daqTplById:Rn,daqTplOf:zn,isLegacyDaqTwin:Bn,fmtDaq:Wn,sceneTwinById:Cn,dcwTemplates:Dn,trendColor:Gn,errorText:H}),{bindSceneInput:Ir,lastDropText:Lr}=Ie({mode:$,runHint:qe,dockChannels:_e,dropChannelAt:oe,daq:v,dcw:x,nearestDeviceTwin:$n,bindDaq:Zn,syncSceneDevices:Tn,sceneRef:k,errorText:H}),{onFocusDevice:Rr}=Le({props:i,entities:a,sceneLayouts:p,characterAssets:d,deviceTwins:f,townBus:u,daq:v,sceneRef:k,scene3dRef:j,gameRef:A,hostRef:O,render3d:M,ready:N,fps:P,agentCount:F,blockCount:I,activity:R,selected:V,errorText:H,saveState:G,fpsCap:Qt,qualityMode:tn,selectedChannel:J,boundaryDraft:Y,agentRangeDraft:et,onSelectChannel:X,buildTownInput:be,updateAgentHome:We,updateAgentRange:Ge,sceneTwinPool:Sn,sceneTwinById:Cn,syncSceneDevices:Tn,appendLiveChat:Dt,bindSceneInput:Ir,dockRev:ge}),{showCallouts:zr,selectDeviceFromCallout:Br,orbitOn:Vr,toggleOrbit:Hr,locateSelected:Ur,calloutPos:Wr,calloutNearDist:Gr,daqLive:Kr,dcwLive:qr,camPose:Jr,callouts:Yr}=Re({selected:V,objNameDraft:$e,scene3dRef:j,stageRef:ht,dcw:x,daqTwins:Vn,daqSim:Hn,boundDeviceOf:Xn,sceneTwinById:Cn,dcwWindowOf:Fr,fmtDaq:Wn,alarmRange:an,errorText:H}),{toggleTrend:Xr,setTrendCanvas:Zr,trendOn:Qr,trendExpanded:$r,trendOverflow:ei,trendChips:ti,drawTrend:ni}=ze({daqTwins:Vn,daqSim:Hn,rtcHist:Kn,RTC_HIST_CAP:qn,trendColor:Gn}),{minimap:ri,navScale:ii,setNavCanvas:ai,onNavWheel:oi,onNavDown:si,onNavMove:ci,onNavUp:li}=Be({sceneRef:k,scene3dRef:j,stageRef:ht,camPose:Jr,calloutPos:Wr,showCallouts:zr,daq:v,daqTwins:Vn,boundDeviceOf:Xn}),{ticker:ui}=Ve({sceneRef:k,daq:v,drawTrend:ni,drawBindSparks:Yn});return(t,n)=>(m(),b(`div`,$l,[g(nt,{mode:e($),fps:e(P),"active-alarm-count":e(Jt),"user-name":e(S).user?.name??`OP`,"save-state":e(G),"save-state-label":e(K),"sheet-open":e(C),onToggleMode:e(He),onSaveLayout:e(Ke),onToggleSheet:e(E)},null,8,[`mode`,`fps`,`active-alarm-count`,`user-name`,`save-state`,`save-state-label`,`sheet-open`,`onToggleMode`,`onSaveLayout`,`onToggleSheet`]),y(`div`,eu,[g(Un,{"sheet-open":e(C),"close-sheet":e(D),mode:e($),"tree-open":e(On),"device-models":e(Qe),"daq-twins":e(Vn),"device-twins":e(f),daq:e(v),"daq-templates":e(En),"daq-nodes-by-tpl":e(An),"daq-leaf-state":e(In),"toggle-tree-group":e(kn),"create-daq-from-template":e(Mn),"on-daq-node-drag-start":e(Pn),dcw:e(x),"dcw-templates":e(Dn),"dcw-nodes-by-tpl":e(jn),"dcw-leaf-state":e(Ln),"create-dcw-from-template":e(Nn),"on-dcw-node-drag-start":e(Fn),"dock-channels":e(_e),"dock-hint":e(ie),"on-channel-drag-start":e(ye),"on-dock-card-click":e(ae),"on-focus-device":e(Rr)},null,8,[`sheet-open`,`close-sheet`,`mode`,`tree-open`,`device-models`,`daq-twins`,`device-twins`,`daq`,`daq-templates`,`daq-nodes-by-tpl`,`daq-leaf-state`,`toggle-tree-group`,`create-daq-from-template`,`on-daq-node-drag-start`,`dcw`,`dcw-templates`,`dcw-nodes-by-tpl`,`dcw-leaf-state`,`create-dcw-from-template`,`on-dcw-node-drag-start`,`dock-channels`,`dock-hint`,`on-channel-drag-start`,`on-dock-card-click`,`on-focus-device`]),g(oa,{"show-callouts":e(zr),"onUpdate:showCallouts":n[0]||=e=>o(zr)?zr.value=e:null,"boundary-draft":e(Y),"onUpdate:boundaryDraft":n[1]||=e=>o(Y)?Y.value=e:null,"dock-open":e(T),"onUpdate:dockOpen":n[2]||=e=>o(T)?T.value=e:null,"thresh-pct":e(Zt),"onUpdate:threshPct":n[3]||=e=>o(Zt)?Zt.value=e:null,"callout-near-dist":e(Gr),"onUpdate:calloutNearDist":n[4]||=e=>o(Gr)?Gr.value=e:null,"trend-expanded":e($r),"onUpdate:trendExpanded":n[5]||=e=>o($r)?$r.value=e:null,"set-stage-ref":te,"set-host-ref":q,mode:e($),ready:e(N),"error-text":e(H),"last-drop-text":e(Lr),"active-channel-name":e(W),"view-preset":e(gt),"orbit-on":e(Vr),"locate-selected":e(Ur),"toggle-orbit":e(Hr),"fullscreen-stage":e(vt),"on-view-preset":e(_t),callouts:e(Yr),"select-device-from-callout":e(Br),"device-count":e(mn),"running-count":e(hn),"active-alarm-count":e(Jt),"daq-twins":e(Vn),"health-pct":e(yn),"scene-empty":e(wn),"selected-channel":e(J),"channel-panel-tab":e(Q),"channel-members":e(ue),"agent-models":e(Ze),"panel-pos":e(pt),"slider-pct":e(un),"hash-color":e(ve),"on-panel-grip-down":e(mt),"open-channel-tab":e(he),"apply-boundary-draft":e(re),"bind-member-model":e(me),"save-channel-layout":e(Z),"remove-channel-from-scene":e(ne),"on-select-channel":e(X),entities:e(a),"quality-mode":e(tn),"fps-cap":e(Qt),"quality-options":e(nn),"fps-options":e($t),exposure:e(cn),"tint-opacity":e(ln),snap:e(Se),estop:e(on),"set-quality-mode":e(rn),"set-fps-cap":e(en),"on-exposure-input":e(dn),"on-tint-input":e(fn),"toggle-snap":e(Ue),"on-reset-view":e(pn),"save-layout":e(Ke),"toggle-estop":e(sn),"trend-chips":e(ti),"trend-overflow":e(ei),"trend-on":e(Qr),"trend-color":e(Gn),"toggle-trend":e(Xr),"set-trend-canvas":e(Zr)},null,8,`show-callouts.boundary-draft.dock-open.thresh-pct.callout-near-dist.trend-expanded.mode.ready.error-text.last-drop-text.active-channel-name.view-preset.orbit-on.locate-selected.toggle-orbit.fullscreen-stage.on-view-preset.callouts.select-device-from-callout.device-count.running-count.active-alarm-count.daq-twins.health-pct.scene-empty.selected-channel.channel-panel-tab.channel-members.agent-models.panel-pos.slider-pct.hash-color.on-panel-grip-down.open-channel-tab.apply-boundary-draft.bind-member-model.save-channel-layout.remove-channel-from-scene.on-select-channel.entities.quality-mode.fps-cap.quality-options.fps-options.exposure.tint-opacity.snap.estop.set-quality-mode.set-fps-cap.on-exposure-input.on-tint-input.toggle-snap.on-reset-view.save-layout.toggle-estop.trend-chips.trend-overflow.trend-on.trend-color.toggle-trend.set-trend-canvas`.split(`.`)),g(ql,{"obj-name-draft":e($e),"onUpdate:objNameDraft":n[6]||=e=>o($e)?$e.value=e:null,"bind-pick":e(lr),"onUpdate:bindPick":n[7]||=e=>o(lr)?lr.value=e:null,"daq-interval-draft":e(Mr),"onUpdate:daqIntervalDraft":n[8]||=e=>o(Mr)?Mr.value=e:null,"dcw-write-drafts":e(Cr),"onUpdate:dcwWriteDrafts":n[9]||=e=>o(Cr)?Cr.value=e:null,"dcw-bind-pick":e(gr),"onUpdate:dcwBindPick":n[10]||=e=>o(gr)?gr.value=e:null,"agent-range-draft":e(et),"onUpdate:agentRangeDraft":n[11]||=e=>o(et)?et.value=e:null,"agent-bind-kind":e(Ft),"onUpdate:agentBindKind":n[12]||=e=>o(Ft)?Ft.value=e:null,"agent-bind-node-id":e(It),"onUpdate:agentBindNodeId":n[13]||=e=>o(It)?It.value=e:null,"agent-bind-mode":e(Lt),"onUpdate:agentBindMode":n[14]||=e=>o(Lt)?Lt.value=e:null,"approval-comments":e(zt),"onUpdate:approvalComments":n[15]||=e=>o(zt)?zt.value=e:null,"sheet-open":e(C),"close-sheet":e(D),mode:e($),selected:e(V),"selected-is-daq":e(sr),"selected-is-dcw":e(fr),"selected-agent-role-label":e(St),"selected-agent-meta":e(xt),"close-scale":e(Xe),"device-twins":e(f),"device-models":e(Qe),daq:e(v),dcw:e(x),"selected-dcw-node":e(pr),"selected-dcw-window":e(mr),"selected-dcw-device-name":e(hr),"dcw-write-errs":e(wr),"dcw-win-label":e(xr),"dcw-win-input-ph":e(Sr),"is-legacy-daq-twin":e(Bn),"do-write-selected-dcw":e(br),"bind-selected-dcw":e(vr),"unbind-selected-dcw":e(yr),"daq-bound-device-name":e(dr),"selected-daq-node":e(jr),"selected-daq-sim":e(cr),"fmt-daq":e(Wn),"on-daq-interval-commit":e(Nr),"on-daq-threshold-commit":e(Pr),"remove-selected-device":e(ft),"unbind-daq":e(Qn),"bind-daq":e(Zn),"daq-templates":e(En),"daq-bind-choices":e(ir),"daq-bind-choice-count":e(ar),"bind-pop-open":e(er),"bind-pop-max-h":e(nr),"toggle-bind-pop":e(rr),"bind-daq-choice":e(or),"set-spark-ref":e(Jn),"on-obj-name-commit":e(ct),"bind-device-model":e(ut),"bound-daq-rows":e(ur),"bound-dcw-rows":e(_r),"dcw-templates":e(Dn),"dcw-bind-choices":e(Er),"dcw-bind-choice-count":e(Dr),"dcw-bind-pop-open":e(tr),"dcw-mark-pct":e(Or),"do-dcw-write":e(Tr),"unbind-dcw":e(Ar),"bind-dcw-choice":e(kr),"t-mode":e(Ce),"device-delete-armed":e(dt),"set-t-mode":e(De),"on-scale-input":e(Je),"on-scale-commit":e(Ye),"agent-models":e(Ze),"agent-chat-title":e(bt),"agent-chat-color":e(kt),"agent-chat-state-label":e(wt),"selected-agent-role-tag":e(Ct),"agent-drawing-range":e(tt),"agent-range-status-text":e(rt),"agent-history":e(Tt),"agent-chat-rows":e(yt),"history-loading":e(Et),"fmt-time":e(jt),"chat-kind-label":e(At),"on-refresh-history":e(Ot),"on-toggle-range-draw":e(it),"apply-agent-range-draft":e(at),"on-agent-range-commit":e(ot),"on-clear-agent-range":e(st),"bind-agent-model":e(lt),"set-chat-scroll":e(Mt),"agent-bindings":e(Pt),"pending-approvals":e(Rt),"approval-remaining-sec":e(Nt),"binding-node-name":e(Wt),"set-binding-mode":e(Ht),"unbind-agent-node":e(Vt),"bind-agent-node":e(Bt),"decide-approval":e(Ut),"health-pct":e(yn),"health-tone":e(bn),"idle-count":e(gn),"alarm-count":e(_n),"offline-count":e(vn),"running-count":e(hn),"set-donut-canvas":e(xn),"daq-live":e(Kr),"dcw-live":e(qr),"on-focus-device":e(Rr),alarms:e(Gt),"alarm-states":e(Kt),"advance-alarm":e(Yt),"active-alarm-count":e(Jt),"clear-alarms":e(Xt),ticker:e(ui),minimap:e(ri),"nav-scale":e(ii),"scene3d-ref":e(j),"set-nav-canvas":e(ai),"on-nav-down":e(si),"on-nav-move":e(ci),"on-nav-up":e(li),"on-nav-wheel":e(oi),"on-reset-view":e(pn)},null,8,`obj-name-draft.bind-pick.daq-interval-draft.dcw-write-drafts.dcw-bind-pick.agent-range-draft.agent-bind-kind.agent-bind-node-id.agent-bind-mode.approval-comments.sheet-open.close-sheet.mode.selected.selected-is-daq.selected-is-dcw.selected-agent-role-label.selected-agent-meta.close-scale.device-twins.device-models.daq.dcw.selected-dcw-node.selected-dcw-window.selected-dcw-device-name.dcw-write-errs.dcw-win-label.dcw-win-input-ph.is-legacy-daq-twin.do-write-selected-dcw.bind-selected-dcw.unbind-selected-dcw.daq-bound-device-name.selected-daq-node.selected-daq-sim.fmt-daq.on-daq-interval-commit.on-daq-threshold-commit.remove-selected-device.unbind-daq.bind-daq.daq-templates.daq-bind-choices.daq-bind-choice-count.bind-pop-open.bind-pop-max-h.toggle-bind-pop.bind-daq-choice.set-spark-ref.on-obj-name-commit.bind-device-model.bound-daq-rows.bound-dcw-rows.dcw-templates.dcw-bind-choices.dcw-bind-choice-count.dcw-bind-pop-open.dcw-mark-pct.do-dcw-write.unbind-dcw.bind-dcw-choice.t-mode.device-delete-armed.set-t-mode.on-scale-input.on-scale-commit.agent-models.agent-chat-title.agent-chat-color.agent-chat-state-label.selected-agent-role-tag.agent-drawing-range.agent-range-status-text.agent-history.agent-chat-rows.history-loading.fmt-time.chat-kind-label.on-refresh-history.on-toggle-range-draw.apply-agent-range-draft.on-agent-range-commit.on-clear-agent-range.bind-agent-model.set-chat-scroll.agent-bindings.pending-approvals.approval-remaining-sec.binding-node-name.set-binding-mode.unbind-agent-node.bind-agent-node.decide-approval.health-pct.health-tone.idle-count.alarm-count.offline-count.running-count.set-donut-canvas.daq-live.dcw-live.on-focus-device.alarms.alarm-states.advance-alarm.active-alarm-count.clear-alarms.ticker.minimap.nav-scale.scene3d-ref.set-nav-canvas.on-nav-down.on-nav-move.on-nav-up.on-nav-wheel.on-reset-view`.split(`.`))]),g(Ql,{"conn-state":e(l).state,syncing:e(U),"block-count":e(I),"agent-count":e(F),"device-count":e(mn),fps:e(P)},null,8,[`conn-state`,`syncing`,`block-count`,`agent-count`,`device-count`,`fps`]),e(C)?(m(),b(`div`,{key:0,class:`sheet-mask`,onClick:n[16]||=(...t)=>e(D)&&e(D)(...t)})):w(``,!0),g(ta,{ready:e(N)},null,8,[`ready`])]))}}),[[`__scopeId`,`data-v-efceabf0`]]),{__name:`WorkshopTownView`});export{tu as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{v as e}from"./CavpkQb0.js";import{P as t,R as n,et as r}from"./ByMj6e7s.js";import{i}from"./S799kNo8.js";import{t as a}from"./RAqsw632.js";import{t as o}from"./36oeS8_R.js";import{t as s}from"./CI2yXRr42.js";import{n as c}from"./Bfe2qOYs.js";import{t as l}from"./Ch1P2mIf.js";import{t as u}from"./JgheoP3e.js";var d=50,f=10,p=2e3,m=i(`workshop.notifications`,()=>{let t=e([]),n=e(0),r=e(null),i=e(new Set),a=e(!1),o=e(null),u=e(0),m=e(!1),h=null;function g(e=5e3){m.value=!0,h&&clearTimeout(h),h=setTimeout(()=>{m.value=!1,h=null},e)}function _(){m.value=!1,h&&=(clearTimeout(h),null)}function v(e){if(!e)return;let t=i.value;if(t.has(e)||t.add(e),t.size>p){let e=[...t].slice(-Math.floor(p/2));i.value=new Set(e)}}function y(e){let n=t.value,r=0;for(;r<n.length&&n[r].createdAt>=e.createdAt;)r++;n.splice(r,0,e)}function b(e,r={}){if(!e?.id)return!1;let a=t.value.findIndex(t=>t.id===e.id);return a>=0?(t.value[a]={...t.value[a],...e},!1):e.eventId&&i.value.has(e.eventId)?!1:(v(e.eventId),y(e),e.readAt||(n.value+=1),x(e),r.live&&(o.value=e,u.value+=1),!0)}function x(e){let t=r.value;(!t||e.createdAt>t.createdAt||e.createdAt===t.createdAt&&e.id>t.id)&&(r.value={createdAt:e.createdAt,id:e.id})}function S(e){if(e.type===`notification.created`){b(e.payload,{live:!m.value});return}e.type===`notification.read`&&C(e.payload)}function C(e){let r=e.readAt||c();for(let n of t.value)n.readAt||e.id&&n.id!==e.id||!e.id&&e.channelId&&n.channelId!==e.channelId||(n.readAt=r);n.value=t.value.filter(e=>!e.readAt).length}async function w(e){let t=s().token,n={limit:String(d)};e&&(n.cursor=`${e.createdAt}|${e.id}`);let r=Object.entries(n).map(([e,t])=>`${e}=${encodeURIComponent(t)}`).join(`&`),i=await l(`/api/workshop/notifications?${r}`,{headers:t?{authorization:`Bearer ${t}`}:{}});if(i.code!==0||!i.data)throw Error(i.message??`通知拉取失败`);return i.data}let T=null,E=0;async function D(e){if(T)return T;let t=2e3-(Date.now()-E);return t>0&&await new Promise(e=>setTimeout(e,t)),E=Date.now(),T=(async()=>{try{await e()}finally{T=null}})(),T}async function O(){typeof window>`u`||!s().token||await D(async()=>{let e=await w(null);t.value=[...e.notifications??[]];for(let e of t.value)v(e.eventId);n.value=e.unreadCount??t.value.filter(e=>!e.readAt).length;let i=t.value[0];r.value=i?{createdAt:i.createdAt,id:i.id}:null,a.value=!0}).catch(()=>{})}async function k(){if(typeof window>`u`||!s().token)return 0;if(!a.value)return await O(),0;let e=0;try{return await D(async()=>{for(let t=0;t<f;t+=1){let t=await w(r.value),i=t.notifications??[];for(let t of i)b(t)&&(e+=1);if(t.nextCursor&&(r.value=t.nextCursor),n.value=t.unreadCount??n.value,i.length<d||!t.nextCursor)return}}),e}catch{return e}}function A(e){e&&(!r.value||e.createdAt>r.value.createdAt||e.createdAt===r.value.createdAt&&e.id>r.value.id)&&(r.value=e)}async function j(e){let r=s().token,i=await l(`/api/workshop/notifications/read`,{method:`POST`,body:{...e},headers:r?{authorization:`Bearer ${r}`}:{}});if(i.code!==0||!i.data)throw Error(i.message??`标记已读失败`);let a=c();for(let n of t.value)n.readAt||e.id&&n.id!==e.id||!e.id&&!e.all&&e.channelId&&n.channelId!==e.channelId||(n.readAt=a);return n.value=i.data.unreadCount??t.value.filter(e=>!e.readAt).length,i.data.count??0}function M(){t.value=[],n.value=0,r.value=null,i.value=new Set,a.value=!1,o.value=null,_()}return{items:t,unreadCount:n,cursor:r,seenEventIds:i,loaded:a,liveItem:o,liveSeq:u,replaying:m,beginReplay:g,endReplay:_,applyEnvelope:S,applyRead:C,upsertNotification:b,loadSnapshot:O,backfill:k,applyReplayCursor:A,markRead:j,clear:M}}),h=45e3,g=9e4,_=i(`workshop.connection`,{state:()=>({state:`closed`,cursors:{},lastDataAt:0,pendingReplay:!1,lastError:``,retryCount:0})}),v=class{onEvent;onStateChange;onPendingReplay;onDataRecovered;ws=null;retry=0;closedByUser=!1;subscribed=new Set;refCounts=new Map;lastSeqByChannel=new Map;lastFrameAt=0;lastDataAt=0;userToken=``;constructor(e,t,n=()=>{},r=()=>{}){this.onEvent=e,this.onStateChange=t,this.onPendingReplay=n,this.onDataRecovered=r}updateCursor(e,t){Number.isFinite(t)&&this.lastSeqByChannel.set(e,t)}url(){return typeof location>`u`?`ws://localhost/api/workshop/ws`:`${location.protocol===`https:`?`wss`:`ws`}://${location.host}/api/workshop/ws${this.userToken?`?token=${encodeURIComponent(this.userToken)}`:``}`}connect(){if(typeof window>`u`)return;this.onStateChange(`connecting`,this.retry);let e=new WebSocket(this.url());this.ws=e,this.lastFrameAt=Date.now(),this.lastDataAt=Date.now(),e.onopen=()=>{this.retry=0,this.onStateChange(`open`,0);for(let e of this.subscribed)this.sendSub(e,this.lastSeqByChannel.get(e))},e.onmessage=e=>{this.lastFrameAt=Date.now();try{let t=JSON.parse(e.data);t.type!==`pong`&&(this.lastDataAt=Date.now(),this.onDataRecovered()),this.onEvent(t)}catch{}},e.onclose=()=>{if(this.ws=null,this.closedByUser){this.onStateChange(`closed`,0);return}this.onStateChange(`closed`,this.retry),this.subscribed.size>0&&this.onPendingReplay();let e=Math.min(1e3*2**this.retry,1e4);this.retry+=1,setTimeout(()=>{this.closedByUser||this.connect()},e)},e.onerror=()=>{}}checkStale(){let e=this.ws;!e||e.readyState!==WebSocket.OPEN||(Date.now()-this.lastFrameAt>h||Date.now()-this.lastDataAt>g)&&e.close()}sendSub(e,t){let n={type:`sub`,channelId:e,token:this.userToken};typeof t==`number`&&(n.lastSeq=t),this.ws?.send(JSON.stringify(n))}subscribe(e,t){let n=this.refCounts.get(e)??0;this.refCounts.set(e,n+1),!(n>0)&&(this.subscribed.add(e),typeof t==`number`&&this.lastSeqByChannel.set(e,t),this.ws?.readyState===WebSocket.OPEN?this.sendSub(e,this.lastSeqByChannel.get(e)):this.ws||this.connect())}ensureConnected(){typeof window>`u`||this.ws||this.connect()}unsubscribe(e){let t=this.refCounts.get(e)??0;t<=1?(this.refCounts.delete(e),this.subscribed.delete(e),this.ws?.readyState===WebSocket.OPEN&&this.ws?.send(JSON.stringify({type:`unsub`,channelId:e}))):this.refCounts.set(e,t-1)}refCount(e){return this.refCounts.get(e)??0}ping(){try{this.ws?.send(JSON.stringify({type:`ping`}))}catch{try{this.ws?.close()}catch{}}}close(){this.closedByUser=!0,this.ws?.close()}},y={silent:0,status:1,attention:2,terminal:3};function b(e){switch(e.type){case`error`:return`attention`;case`a2a.artifact`:case`agent.message`:return`terminal`;case`task.status`:{let t=String(e.payload.state??``);return t===`COMPLETED`||t===`FAILED`||t===`CANCELED`?`terminal`:t===`WAITING`?`attention`:`status`}case`a2a.message`:return(e.payload.metadata??{})[`x-aw-require-reply`]===`true`?`attention`:`status`;case`agent.delta`:case`agent.status.message`:case`task.progress`:case`memory.saved`:return`silent`;default:return`status`}}function x(e){let t=`silent`;for(let n of e){let e=b(n);y[e]>y[t]&&(t=e)}return t}var S=5e3,C=[`agent.delta`],w={all:null,messages:[`agent.message`,`agent.delta`,`agent.status.message`,`a2a.message`],tasks:[`task.status`,`task.progress`,`a2a.artifact`],team:[`agent.member`,`task.status`],errors:[`error`],key:null};function T(e,t,n,r){if(e.type===`channel.snapshot`)return!1;if(t===`key`){let t=b(e);return t===`attention`||t===`terminal`}return n&&!n.includes(e.type)?!1:r&&e.type!==`task.status`&&e.type!==`task.progress`?e.agentId===r||e.type===`a2a.message`&&e.payload.metadata?.[`x-aw-target-agent`]===r:!0}function E(e,t,n,r){return e.filter(e=>T(e,t,n,r))}var D=Object.freeze([]),O=new Map;function k(e,t){let n=0,r=e.length;for(;n<r;){let i=n+r>>>1;(e[i]?.seq??0)>t?r=i:n=i+1}return n}var A=()=>({lastSeq:0,items:[],consumed:new Set,byAgent:new Map});function j(e,t){let n=t.agentId;if(!n)return;let r=e.byAgent.get(n);r?r.push(t):e.byAgent.set(n,[t])}function M(e,t){for(let n of t){let t=e.byAgent.get(n.agentId??``);if(!t)continue;let r=t.indexOf(n);r>=0&&t.splice(r,1),t.length===0&&e.byAgent.delete(n.agentId??``)}}function N(e){e.byAgent.clear();for(let t of e.items)j(e,t)}function P(e,t,n){let r=0;for(let i of t)typeof i.seq!=`number`||i.seq>n||e.consumed.has(i.seq)||(e.items.push(i),e.consumed.add(i.seq),r+=1);if(r>0){e.items.sort((e,t)=>e.seq-t.seq);let t=e.items.length-S;t>0&&e.items.splice(0,t),N(e)}return r}var F=i(`workshop.events`,{state:()=>({rings:{},filters:{},focusAgents:{},laneLoaded:{}}),getters:{ring(e){return t=>e.rings[t]??A()},timeline(e){return t=>{let n=e.rings[t];if(!n)return D;let r=e.filters[t]??`all`,i=e.focusAgents[t]??null,a=n.items,o=w[r],s=a.length>0?a[a.length-1]?.seq??0:-1,c=O.get(t);if(!c||c.filter!==r||c.focus!==i||a.length===0&&c.result.length>0||c.lastSeq>s){let e=E(a,r,o,i);return O.set(t,{filter:r,focus:i,lastSeq:s,result:e}),e}let l=a[0]?.seq??0,u=c.result;if(u.length>0&&(u[0]?.seq??0)<l){let e=0;for(;e<u.length&&(u[e]?.seq??0)<l;)e++;u.splice(0,e)}if(s>c.lastSeq){let e=k(a,c.lastSeq);for(let t=e;t<a.length;t++){let e=a[t];T(e,r,o,i)&&u.push(e)}c.lastSeq=s}return u}},agentEvents(e){return(t,n)=>n?e.rings[t]?.byAgent.get(n)??D:D},lastSeq(e){return t=>e.rings[t]?.lastSeq??0}},actions:{ingest(e){if(!e.channelId)return;let t=this.rings[e.channelId]??A();if(e.type===`channel.snapshot`){this.rings[e.channelId]={lastSeq:e.seq,items:[],consumed:new Set([e.seq]),byAgent:new Map};return}if(typeof e.seq==`number`&&e.seq>t.lastSeq){if(t.consumed.add(e.seq),e.type===`agent.delta`){let n=t.items[t.items.length-1];if(n&&n.type===`agent.delta`&&n.agentId===e.agentId&&(n.taskId??null)===(e.taskId??null)&&n){let r=n.payload.delta;n.payload.delta=r+e.payload.delta,t.lastSeq=e.seq,this.rings[e.channelId]=t;return}}t.items.push(e),j(t,e),t.items.length>S&&M(t,t.items.splice(0,t.items.length-S)),t.lastSeq=e.seq,t.consumed.size>2e4&&(t.consumed=new Set(t.items.map(e=>e.seq))),this.rings[e.channelId]=t}},setFilter(e,t){this.filters[e]=t},async loadHistory(e,t=200){if(typeof window>`u`)return;let n=this.rings[e]??A();try{let r=await l(`/api/workshop/channels/${e}/events`,{params:{limit:t,excludeTypes:C.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});if(r.code!==0||!r.data?.items?.length)return;P(n,r.data.items,n.lastSeq),this.rings[e]=n}catch{}},async loadEarlier(e,t=200){if(typeof window>`u`)return!1;let n=this.rings[e];if(!n)return!1;let r=n.items.length>0?n.items[0]?.seq??0:n.lastSeq;if(r<=1)return!1;try{let i=await l(`/api/workshop/channels/${e}/events`,{params:{limit:t,beforeSeq:Math.max(1,r-1),excludeTypes:C.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});if(i.code!==0||!i.data?.items?.length)return!1;let a=P(n,i.data.items,n.lastSeq);return a>0&&(this.rings[e]=n),a>0&&i.data.items.length>=t}catch{return!1}},async loadLaneHistory(e,t,n=200){if(typeof window>`u`||this.laneLoaded[e]?.has(t))return;(this.laneLoaded[e]??=new Set).add(t);for(let t=0;t<20&&this.lastSeq(e)===0;t++)await new Promise(e=>setTimeout(e,150));if(this.lastSeq(e)===0){this.laneLoaded[e]?.delete(t);return}let r=this.rings[e];try{let i=await l(`/api/workshop/channels/${e}/events`,{params:{limit:n,agentId:t,excludeTypes:C.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});i.code===0&&i.data?.items?.length&&(P(r,i.data.items,r.lastSeq),this.rings[e]=r)}catch{this.laneLoaded[e]?.delete(t)}},async loadLaneEarlier(e,t,n=200){if(typeof window>`u`)return!1;let r=this.rings[e];if(!r)return!1;let i=0;for(let e of r.items)if(e.agentId===t){i=e.seq;break}if(i<=1)return!1;try{let a=await l(`/api/workshop/channels/${e}/events`,{params:{limit:n,agentId:t,beforeSeq:i-1,excludeTypes:C.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});if(a.code!==0||!a.data?.items?.length)return!1;let o=P(r,a.data.items,r.lastSeq);return o>0&&(this.rings[e]=r),o>0&&a.data.items.length>=n}catch{return!1}},setFocusAgent(e,t){this.focusAgents[e]=t},clear(e){Reflect.deleteProperty(this.rings,e),Reflect.deleteProperty(this.laneLoaded,e)}}});function I(e){return e===`COMPLETED`||e===`FAILED`||e===`CANCELED`}function L(){return{activeRootId:null,queuedRoots:[],completedRoots:0,activeRootCount:0,queuedRootCount:0}}function R(e){let t=e.filter(e=>!e.parentId&&e.rootQueueSeq!=null).sort((e,t)=>(e.rootQueueSeq??0)-(t.rootQueueSeq??0)||String(e.createdAt).localeCompare(String(t.createdAt))),n=t.filter(e=>!I(e.state));return{activeRootId:n[0]?.id??null,queuedRoots:n.slice(1).map((e,t)=>({taskId:e.id,title:e.title,position:t+2,state:e.state,createdAt:e.createdAt})),completedRoots:t.length-n.length,activeRootCount:+(n.length>0),queuedRootCount:Math.max(0,n.length-1)}}var z=i(`workshop.entities`,{state:()=>({channels:{},agents:{},tasks:{},rootQueues:{},refreshing:{},refreshingAgents:{}}),getters:{agentById(e){return(t,n)=>e.agents[t]?.find(e=>e.agentId===n)},agentName(e){return(t,n)=>n?e.agents[t]?.find(e=>e.agentId===n)?.name??n.slice(0,8):`system`},taskTitle(e){return(t,n)=>n?e.tasks[t]?.find(e=>e.id===n)?.title??n.slice(0,8):``},rootTasks(e){return t=>(e.tasks[t]??[]).filter(e=>!e.parentId)},taskById(e){return(t,n)=>e.tasks[t]?.find(e=>e.id===n)},busyCount(e){return t=>(e.agents[t]??[]).filter(e=>e.state===`busy`).length},rootQueue(e){return t=>e.rootQueues[t]??L()},activeRootId(e){return t=>e.rootQueues[t]?.activeRootId??(e.tasks[t]??[]).filter(e=>!e.parentId&&!I(e.state))[0]?.id??null}},actions:{applySnapshot(e){let{channelId:t}=e;this.channels[t]={...e.channel,loadedAt:Date.now()},this.agents[t]=e.agents.map(e=>({...e,modelRef:e.config?.modelRef??e.modelRef??null})),this.tasks[t]=e.tasks.map(e=>this.toTaskView(e)),this.rootQueues[t]=e.rootQueue??R(e.tasks)},applyEvent(e){let t=e.channelId;switch(e.type){case`agent.status`:{let n=this.agents[t]??[],r=e.payload,i={agentId:r.agentId,state:r.state,currentTaskId:r.currentTaskId??null,currentTaskTitle:r.currentTaskTitle??null,currentTaskProgress:r.currentTaskProgress??null,queued:r.queued??r.queuedCount??0,completed:r.completed??r.completedCount??0,...r.context===void 0?{}:{context:r.context},...r.supervision?{supervision:r.supervision}:{},...r.continuity?{continuity:r.continuity}:{}},a=n.findIndex(e=>e.agentId===i.agentId);if(a>=0)n[a]={...n[a],...i};else{let e={agentId:i.agentId,state:i.state,currentTaskId:i.currentTaskId??null,queued:i.queued,completed:i.completed,name:i.agentId.slice(0,8),role:`worker`,harness:`-`,...r.supervision?{supervision:r.supervision}:{},...r.continuity?{continuity:r.continuity}:{}};n.push(e),this.refreshAgents(t)}this.agents[t]=[...n];break}case`agent.member`:{let n=e.payload,r=this.agents[t]??[],i=r.findIndex(e=>e.agentId===n.agentId);if(n.op===`added`)i<0&&r.push({agentId:n.agentId,name:n.name,role:n.role,harness:n.harness,enabled:n.enabled,config:n.config,modelRef:n.config?.modelRef??null,state:`idle`,currentTaskId:null,queued:0,completed:0});else if(n.op===`updated`){if(i>=0){let e=r[i],t=n.config??e.config;r[i]={...e,name:n.name??e.name,role:n.role??e.role,harness:n.harness??e.harness,enabled:n.enabled??e.enabled,config:t,modelRef:t?.modelRef??e.modelRef??null}}}else n.op===`removed`&&i>=0&&r.splice(i,1);this.agents[t]=[...r];break}case`task.status`:{let n=e.payload,r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId);if(i>=0){let e=r[i];r[i]={...e,state:n.state,assigneeId:n.assigneeId??e.assigneeId,title:n.title??e.title,parentId:n.parentId??e.parentId,rootQueueSeq:n.rootQueueSeq??e.rootQueueSeq,progress:Math.max(e.progress,n.progress??0),routeReason:n.routeReason??e.routeReason,closeReason:n.closeReason??e.closeReason,deadlineAt:n.deadlineAt??e.deadlineAt,retryCount:n.retryCount??e.retryCount,createdAt:n.createdAt??e.createdAt,artifacts:Math.max(e.artifacts,n.artifacts??0)}}else{let e={id:n.taskId,title:n.title??n.taskId.slice(0,8),state:n.state,progress:n.progress??0,assigneeId:n.assigneeId??``,artifacts:n.artifacts??0};n.parentId&&(e.parentId=n.parentId),n.rootQueueSeq!=null&&(e.rootQueueSeq=n.rootQueueSeq),n.routeReason&&(e.routeReason=n.routeReason),n.closeReason&&(e.closeReason=n.closeReason),n.deadlineAt&&(e.deadlineAt=n.deadlineAt),n.retryCount!=null&&(e.retryCount=n.retryCount),n.createdAt&&(e.createdAt=n.createdAt),r.push(e),n.title===void 0&&this.refreshTasks(t)}this.tasks[t]=[...r];break}case`task.progress`:{let n=e.payload,r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId),a=i>=0?r[i]:void 0;a&&(r[i]={...a,progress:n.progress}),this.tasks[t]=[...r];break}case`root.queue`:this.rootQueues[t]=e.payload;break;case`a2a.artifact`:{let n=e.payload;if(!n.taskId)break;let r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId),a=i>=0?r[i]:void 0;a&&(r[i]={...a,artifacts:a.artifacts+1}),this.tasks[t]=[...r];break}}},toTaskView(e){return{id:e.id,parentId:e.parentId,rootQueueSeq:e.rootQueueSeq,title:e.title,state:e.state,progress:e.progress,assigneeId:e.assigneeId,artifacts:e.artifacts.length,routeReason:e.routeReason,sourceChatMessageId:e.sourceChatMessageId,sourceChatDeliveryId:e.sourceChatDeliveryId,retryCount:e.retryCount,closeReason:e.closeReason,deadlineAt:e.deadlineAt,createdAt:e.createdAt,updatedAt:e.updatedAt}},refreshChannel(e,t){this.applySnapshot(t)},refreshAgents(e){this.refreshingAgents[e]||(this.refreshingAgents[e]=!0,l(`/api/workshop/channels/${e}/agents`,{headers:{authorization:`Bearer ${s().token}`}}).then(t=>{let n=t.data??[],r=[...this.agents[e]??[]];for(let e of n){let t=r.findIndex(t=>t.agentId===e.id);t>=0?r[t]={...r[t],name:e.name,role:e.role,harness:e.harness,config:e.config}:r.push({agentId:e.id,name:e.name,role:e.role,harness:e.harness,config:e.config,state:`idle`,currentTaskId:null,queued:0,completed:0})}this.agents[e]=r}).catch(()=>{}).finally(()=>{this.refreshingAgents[e]=!1}))},refreshTasks(e){this.refreshing[e]||(this.refreshing[e]=!0,l(`/api/workshop/channels/${e}/tasks`,{headers:{authorization:`Bearer ${s().token}`}}).then(t=>{let n=t.data??[],r=this.tasks[e]??[],i=new Map(r.map(e=>[e.id,e])),a=new Set(n.map(e=>e.id)),o=n.map(e=>{let t=i.get(e.id),n=this.toTaskView(e);return t&&t.progress>n.progress?{...n,progress:t.progress}:n});for(let e of r)a.has(e.id)||o.push(e);this.tasks[e]=o}).catch(()=>{}).finally(()=>{this.refreshing[e]=!1}))}}}),B=e=>`${e.kind}:${e.id}`;function V(e){let t=e??{},n=t.data?.code??t.response?.data?.code,r=Number(t.statusCode??t.status??t.response?.status??0);return{ok:!1,code:n==null?r===409?`ALREADY_RESOLVED`:r===403?`APPROVAL_FORBIDDEN`:r?`HTTP_${r}`:``:String(n),message:u(e)}}var H=i(`workshop.hitl`,{state:()=>({items:[],snapshotLoaded:!1,answering:null}),getters:{count:e=>e.items.length,byAgent:e=>{let t=new Map;for(let n of e.items){let e=t.get(n.agentId)??[];e.push(n),t.set(n.agentId,e)}return t},byKey:e=>(t,n)=>e.items.find(e=>e.kind===t&&e.id===n)},actions:{applyEnvelope(e){if(e.type===`hitl.request`){let t=e.payload,n=B(t),r=this.items.findIndex(e=>B(e)===n);r>=0?this.items[r]=t:this.items.push(t)}else if(e.type===`hitl.resolved`){let t=e.payload;this.items=this.items.filter(e=>B(e)!==B(t))}},async loadSnapshot(){if(typeof window>`u`)return;let e=s().token;if(e)try{let t=await l(`/api/workshop/hitl/pending`,{headers:{authorization:`Bearer ${e}`}});t.code===0&&t.data&&(this.items=t.data.items,this.snapshotLoaded=!0)}catch{}},async answer(e,t){let n=B(e);if(this.answering)return{ok:!1,code:`BUSY`,message:`已有应答提交中`};this.answering=n;let r=s().token;try{let i=await l(`/api/workshop/hitl/respond`,{method:`POST`,body:{kind:e.kind,id:e.id,...t},headers:r?{authorization:`Bearer ${r}`}:{}});return i.code===0?(this.items=this.items.filter(e=>B(e)!==n),await this.loadSnapshot(),{ok:!0,code:``,message:i.message??`ok`}):(await this.loadSnapshot(),{ok:!1,code:String(i.code??``),message:i.message??`应答失败`})}catch(e){let t=V(e);return(t.code===`ALREADY_RESOLVED`||t.code===`APPROVAL_FORBIDDEN`||t.code===`NOT_RESPONDABLE`)&&await this.loadSnapshot(),t}finally{this.answering=null}},invalidate(){this.snapshotLoaded=!1},clear(){this.items=[],this.snapshotLoaded=!1,this.answering=null}}});function U(e){let t=e??{},n=t.response?.data?.code??t.data?.code;return n==null?``:String(n)}function W(e){let t=e??{},n=t.response?.data?.message??t.data?.message;return typeof n==`string`&&n.trim()?n.trim():u(e)}function G(e,t){let n=e.length;for(let r=e.length-1;r>=0;r--){if(e[r].createdAt<=t.createdAt){n=r+1;break}n=r}e.splice(n,0,t)}var K=i(`workshop.chat`,()=>{let t=e({}),n=e({}),r=e({}),i=e({}),a=e({}),o=e(new Set),u=e({}),d=e({}),f=e(null);function p(e){return t.value[e]??=[]}function m(e,t){let n=t||e.channelId;if(!n||!e?.id)return!1;let r=p(n),i=r.findIndex(t=>t.id===e.id);return i>=0?(r[i]={...r[i],...e},!1):(G(r,e),!0)}function h(e){let t=e.channelId;if(!t||!e.deliveryId)return;let n=i.value[t]??={};n[e.deliveryId]={...n[e.deliveryId],...e}}function g(e){switch(e.type){case`chat.message`:m(e.payload,e.channelId||void 0);break;case`chat.delivery.status`:h(e.payload);break;case`chat.member`:{let t=e.payload,r=e.channelId;if(!r||!t?.userId)break;let i=n.value[r]??=[],a=i.findIndex(e=>e.userId===t.userId),o={userId:t.userId,displayName:t.displayName??null,role:t.role,status:t.status,joinedAt:t.joinedAt,leftAt:t.leftAt??null};a>=0?i[a]=o:i.push(o);break}case`chat.settings`:{let t=e.payload,n=t?.id||e.channelId;n&&(r.value[n]=t);break}}}function _(e,t,i){if(e){t?.channel&&(r.value[e]=t.channel),Array.isArray(t?.members)&&(n.value[e]=t.members.map(e=>({...e})));for(let n of t?.chatMessages??[])m(n,e);t?.permissions?a.value[e]=t.permissions:i!==void 0&&(a.value[e]=i??null),o.value.add(e)}}async function v(e,t={}){let n=s().token,r=t.query?`?${Object.entries(t.query).filter(([,e])=>e!==void 0&&e!==``).map(([e,t])=>`${e}=${encodeURIComponent(String(t))}`).join(`&`)}`:``,i=await l(`${e}${r}`,{method:t.method??`GET`,body:t.body,headers:n?{authorization:`Bearer ${n}`}:{}});if(i.code!==0||i.data==null)throw Error(i.message??`群聊请求失败`);return i.data}async function y(e,t={}){if(typeof window>`u`||!e)return!1;let n=t.limit??50;d.value[e]=!0;try{let r=await v(`/api/workshop/channels/${e}/chat/messages`,{query:{before:t.before,limit:n}});for(let t of r.messages??[])m(t,e);r.permissions&&(a.value[e]=r.permissions),o.value.add(e);let i=(r.messages?.length??0)>=n;return u.value[e]=i,i}finally{d.value[e]=!1}}async function b(e){if(!(typeof window>`u`||!e))try{let t=await v(`/api/workshop/channels/${e}/members`);n.value[e]=t.members??[],t.permissions&&(a.value[e]=t.permissions)}catch{}}async function x(e){if(typeof window>`u`||!e)return null;try{let t=await v(`/api/workshop/channels/${e}/chat/permissions`);return t.channel&&(r.value[e]=t.channel),a.value[e]=t.permissions,t.permissions}catch{return a.value[e]=null,null}}async function S(e){let t=await v(`/api/workshop/channels/${e.channelId}/chat/messages`,{method:`POST`,body:{text:e.text,mentions:e.mentions??[],replyToId:e.replyToId??null,clientMessageId:e.clientMessageId}});t.message&&m(t.message,e.channelId);for(let n of t.deliveries??[])h({deliveryId:n.deliveryId,chatMessageId:t.message?.id??``,channelId:e.channelId,targetAgentId:n.agentId,mailboxMessageId:null,status:n.status,updatedAt:c()});return t}async function C(e){let t=await v(`/api/workshop/channels/${e}/members/join`,{method:`POST`,body:{}});return t.permissions&&(a.value[e]=t.permissions),await Promise.all([b(e).catch(()=>{}),y(e).catch(()=>{})]),t.status}async function w(e){await v(`/api/workshop/channels/${e}/members/leave`,{method:`POST`,body:{}}),await x(e)}async function T(e,t){await v(`/api/workshop/channels/${e}/members/${encodeURIComponent(t)}`,{method:`DELETE`}),await b(e)}async function E(e,t){await v(`/api/workshop/channels/${e}/members/${encodeURIComponent(t)}/approve`,{method:`POST`,body:{}}),await b(e)}async function D(e,t){let n=r.value[e]?.version,i=await v(`/api/workshop/channels/${e}`,{method:`PATCH`,body:{...t,version:n}}),a=r.value[e];r.value[e]={id:i.id??e,name:i.name??a?.name??``,description:i.description??a?.description??``,visibility:i.visibility??a?.visibility??`private`,joinPolicy:i.joinPolicy??a?.joinPolicy??`owner_approve`,approvalPolicy:i.approvalPolicy??a?.approvalPolicy??`owner_only`,chatEnabled:i.chatEnabled??a?.chatEnabled??0,version:i.version??a?.version??0,legacy:i.ownerUserId===void 0?a?.legacy??!1:i.ownerUserId===null},await x(e)}function O(e){f.value=e}function k(){f.value=null}function A(e){let t=i.value[e];return t?Object.values(t):[]}function j(e,t){return A(e).filter(e=>e.chatMessageId===t)}function M(e){Reflect.deleteProperty(t.value,e),Reflect.deleteProperty(n.value,e),Reflect.deleteProperty(i.value,e),o.value.delete(e)}return{messages:t,members:n,settings:r,deliveries:i,permissions:a,loadedChannels:o,hasMoreHistory:u,loadingHistory:d,replyTarget:f,applyEnvelope:g,applySnapshot:_,loadHistory:y,loadMembers:b,loadPermissions:x,send:S,join:C,leave:w,removeMember:T,approveMember:E,updateSettings:D,setReplyTarget:O,clearReplyTarget:k,deliveriesOf:j,deliveriesOfChannel:A,clear:M}}),q=globalThis;q.__workshopWsHeartbeat??=null,q.__workshopWsHeartbeatUsers??=0,q.__workshopWsNotifHosts??=0,q.__workshopWsNotifSubscribed??=!1;function J(e,t){if(!e.channelId||typeof e.seq!=`number`||e.seq<=0||e.type===`channel.snapshot`)return!1;let n=t.get(e.channelId)??0;return e.seq<=n||(t.set(e.channelId,e.seq),!1)}function Y(){let e=_(),i=s(),c=o(),l=q.__workshopWs??null,u=new Map;if(!l){let t=new v(n=>{let r=F(),i=z(),a=K(),o=H(),s=m();if(!J(n,u)){if(n.channelId&&typeof n.seq==`number`&&n.seq>0&&(e.pendingReplay&&=!1),n.type===`channel.snapshot`&&n.channelId){u.set(n.channelId,typeof n.seq==`number`?n.seq:0),e.pendingReplay=!1,r.ingest(n),i.applyEvent(n),i.applySnapshot(n.payload);let t=n.payload;a.applySnapshot(n.channelId,t.chat??null,t.permissions),r.loadHistory(n.channelId)}else r.ingest(n),i.applyEvent(n),typeof n.type==`string`&&n.type.startsWith(`chat.`)&&a.applyEnvelope(n);(n.type===`hitl.request`||n.type===`hitl.resolved`)&&o.applyEnvelope(n),(n.type===`notification.created`||n.type===`notification.read`)&&s.applyEnvelope(n),n.type===`notification.snapshot`&&(s.applyReplayCursor(n.payload?.nextCursor??null),s.endReplay()),typeof n.seq==`number`&&n.seq>0&&n.channelId&&(e.cursors[n.channelId]=n.seq,t.updateCursor(n.channelId,n.seq)),c.emit(n)}},(t,n)=>{e.state=t,e.retryCount=n,t===`open`&&m().backfill()},()=>{e.pendingReplay=!0},()=>{e.lastDataAt=Date.now();let t=m();q.__workshopWsNotifSubscribed&&f(),t.backfill()});l=t,q.__workshopWs=l}let d=e=>{let t=l?.ws;if(!(!t||t.readyState!==WebSocket.OPEN))try{t.send(JSON.stringify(e))}catch{}},f=()=>{let e=m(),t=e.cursor;e.beginReplay(),d(t?{type:`subNotifications`,cursor:t}:{type:`subNotifications`})};return r(()=>i.token,e=>{let t=m();l instanceof v&&(l.userToken=e),e?((q.__workshopWsNotifHosts??0)>0&&(q.__workshopWsNotifSubscribed=!0,f()),t.loadSnapshot()):(q.__workshopWsNotifSubscribed&&(q.__workshopWsNotifSubscribed=!1,d({type:`unsubNotifications`})),t.clear())},{immediate:!0}),n(()=>{q.__workshopWsHeartbeatUsers=(q.__workshopWsHeartbeatUsers??0)+1,!q.__workshopWsHeartbeat&&(q.__workshopWsHeartbeat=a(()=>{l?.ping(),l?.checkStale()},15e3))}),t(()=>{let e=(q.__workshopWsHeartbeatUsers??1)-1;q.__workshopWsHeartbeatUsers=e>0?e:0,e<=0&&q.__workshopWsHeartbeat&&(clearInterval(q.__workshopWsHeartbeat),q.__workshopWsHeartbeat=null)}),{subscribe:e=>{let t=F().lastSeq(e);l?.subscribe(e,t>0?t:void 0)},unsubscribe:e=>{l&&(l.unsubscribe(e),l.refCount(e)===0&&F().clear(e))},ensureConnected:()=>{l?.ensureConnected()},hostNotifications:()=>{let e=m();q.__workshopWsNotifHosts=(q.__workshopWsNotifHosts??0)+1,!q.__workshopWsNotifSubscribed&&i.token&&(q.__workshopWsNotifSubscribed=!0,f(),e.loadSnapshot());let t=!1;return()=>{if(t)return;t=!0;let e=(q.__workshopWsNotifHosts??1)-1;q.__workshopWsNotifHosts=e>0?e:0,e<=0&&(q.__workshopWsNotifSubscribed=!1,i.token&&d({type:`unsubNotifications`}))}},conn:e}}export{H as a,x as c,K as i,_ as l,U as n,z as o,W as r,F as s,Y as t,m as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{g as e}from"./CavpkQb0.js";import{t}from"./36oeS8_R.js";import{t as n}from"./JgheoP3e.js";import{t as r}from"./Crbir9cT.js";var i=[{key:`temp-sp`,name:`温度设定器`,code:`TEMP · SP`,ch:`烘箱温度设定`,unit:`℃`,min:150,max:200,decimals:1,icon:`thermo`,semantics:`烘箱/熔体温度设定:升高使热塑温度上升(成膜更均匀但能耗高、过热降解风险),降低则偏冷易厚度不均。调整后需等待热惯性(数十秒级)再评估效果。`},{key:`speed-sp`,name:`速度设定器`,code:`LINE · SP`,ch:`产线速度设定`,unit:`m/min`,min:280,max:360,decimals:0,icon:`encoder`,semantics:`产线速度设定:升速提高产能但缩短物料受热时间(温度补偿需联动),降速利于精细工艺。速度变化会同步影响张力与厚度分布。`},{key:`tension-sp`,name:`张力设定器`,code:`TENSION · SP`,ch:`膜张力设定`,unit:`kN`,min:18,max:26,decimals:1,icon:`tension`,semantics:`膜张力设定:张力过大易断膜/拉伸变形,过小则跑偏起皱。调整需平缓,并与速度联动观察。`},{key:`pressure-sp`,name:`压力设定器`,code:`PRESSURE · SP`,ch:`熔体压力设定`,unit:`MPa`,min:.6,max:1.2,decimals:2,icon:`pressure`,semantics:`熔体压力设定:反映挤出/泵送负荷,压力偏高提示阻力大或温度偏低,偏低可能是料位不足。调整需小幅步进。`}],a=[{kind:`mock`,label:`Mock 模拟 PLC`,status:`builtin`,configFields:[]},{kind:`modbus-tcp`,label:`Modbus TCP(PLC/网关 写保持寄存器)`,status:`real`,configFields:[{key:`host`,label:`设备地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.10`,hint:`PLC 或 Modbus 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`Modbus TCP 标准端口 502`},{key:`unitId`,label:`单元号(unitId)`,type:`number`,default:1,hint:`从站地址,常见 1`},{key:`register`,label:`写寄存器地址`,type:`number`,required:!0,placeholder:`40021`,hint:`4xxxx=保持寄存器(写);回读同址校验`},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]},{key:`engMin`,label:`工程量程下限`,type:`number`,hint:`线性换算:eng ∈ [engMin, engMax] ↔ raw ∈ [rawMin, rawMax];float32 且未填原始量程时 raw=eng`},{key:`engMax`,label:`工程量程上限`,type:`number`},{key:`rawMin`,label:`原始值下限`,type:`number`,hint:`如 int16 用 0~2000 表示 0.1 分辨率`},{key:`rawMax`,label:`原始值上限`,type:`number`}]},{kind:`opcua`,label:`OPC UA(PLC/MES 写节点值)`,status:`real`,configFields:[{key:`endpoint`,label:`端点(endpoint)`,type:`string`,required:!0,placeholder:`opc.tcp://192.168.1.10:4840`,hint:`OPC UA 服务器地址`},{key:`nodeId`,label:`节点 ID(NodeId)`,type:`string`,required:!0,placeholder:`ns=2;s=Channel1.Device1.SetTemp`,hint:`要写入的变量节点`},{key:`securityMode`,label:`安全策略`,type:`select`,default:`None`,options:[{value:`None`,label:`None(无加密,内网常用)`},{value:`Sign`,label:`Sign(签名)`},{value:`SignAndEncrypt`,label:`SignAndEncrypt(签名+加密)`}]},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`modbus-rtu`,label:`Modbus RTU over TCP(串口网关 写保持寄存器)`,status:`real`,configFields:[{key:`host`,label:`网关地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.50`,hint:`串口服务器/RTU 转 TCP 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`网关透传端口(常见 502 / 8899 / 26)`},{key:`unitId`,label:`从站地址(unitId)`,type:`number`,default:1,hint:`RS-485 总线上的从站地址`},{key:`register`,label:`写寄存器地址`,type:`number`,required:!0,placeholder:`40021`,hint:`4xxxx=保持寄存器(写);回读同址校验`},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]},{key:`engMin`,label:`工程量程下限`,type:`number`,hint:`线性换算:eng ∈ [engMin, engMax] ↔ raw ∈ [rawMin, rawMax];float32 且未填原始量程时 raw=eng`},{key:`engMax`,label:`工程量程上限`,type:`number`},{key:`rawMin`,label:`原始值下限`,type:`number`},{key:`rawMax`,label:`原始值上限`,type:`number`}]},{kind:`mqtt`,label:`MQTT(发布设定值到 Broker)`,status:`real`,configFields:[{key:`host`,label:`Broker 地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.20`,hint:`MQTT Broker 地址(与边缘网关约定同一 Broker)`},{key:`port`,label:`端口`,type:`number`,default:1883,hint:`MQTT TCP 端口 1883`},{key:`topic`,label:`下发主题(topic)`,type:`string`,required:!0,placeholder:`factory/line1/setpoint`,hint:`网关订阅的控制主题(勿与采集主题相同)`},{key:`jsonKey`,label:`JSON 键(可选)`,type:`string`,placeholder:`setpoint`,hint:`留空 = 纯数字报文;填写 = {"键":值} JSON 报文`},{key:`qos`,label:`QoS`,type:`number`,default:1,hint:`0=至多一次 1=至少一次(推荐)`},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`http`,label:`HTTP/REST(POST 设定值)`,status:`real`,configFields:[{key:`url`,label:`写接口地址(URL)`,type:`string`,required:!0,placeholder:`http://192.168.1.30/api/setpoint`,hint:`接收设定值的 HTTP 接口(POST JSON)`},{key:`bodyKey`,label:`JSON 键(可选)`,type:`string`,placeholder:`setpoint`,hint:`留空 = {"value": 设定值};填写 = {"键": 设定值}`},{key:`headersJSON`,label:`请求头(可选)`,type:`string`,placeholder:`{"Authorization":"Bearer xxx"}`,hint:`JSON 对象形式的 HTTP 头`}]}],o=(e,t)=>r({base:`/api/workshop/dcw`,path:e,init:t,retries:(t?.method??`GET`).toUpperCase()===`GET`?2:0});function s(){let r=e([]),s=new Map,c=e({running:!0,nodesTotal:0,nodesOnline:0,writesTotal:0,writesFailed:0}),l=e(i.map(e=>({...e}))),u=e([]),d=e([]),f=e([]),p=e([]),m=e([]),h=e({}),g=e([]),_=e(a.map(e=>({kind:e.kind,label:e.label,status:e.status,configFields:e.configFields})));function v(e){let t=r.findIndex(t=>t.id===e.id);t>=0?r[t]=Object.assign(r[t],e):(r.push(e),s.set(e.id,r[r.length-1]))}function y(e){if(e.node){if(e.op===`removed`){let t=r.findIndex(t=>t.id===e.node.id);t>=0&&r.splice(t,1),s.delete(e.node.id);return}v(e.node)}}let b=0,x=null;function S(){b++,b===1&&(x=t().subscribe(C));let e=!1;return()=>{e||(e=!0,--b===0&&(x?.(),x=null))}}function C(e){if(e.type===`dcw.written`){let t=e.payload,n=s.get(t.nodeId);n&&(n.value=t.value,n.state=t.ok?`ok`:`error`,n.lastWriteAt=t.at,t.ok&&(n.lastAckAt=t.at)),f.unshift({id:`${t.nodeId}-${t.at}`,nodeId:t.nodeId,nodeName:n?.name??t.nodeId,param:``,eng:t.value,raw:t.raw,ok:t.ok,message:t.message,recipeRunId:t.recipeRunId,at:t.at}),f.length>60&&f.splice(60)}else if(e.type===`dcw.read`){let t=e.payload,n=s.get(t.nodeId);n&&(t.ok&&(n.readValue=t.value),n.lastReadAt=t.at,n.lastReadError=t.ok?null:t.message)}else if(e.type===`dcw.node.changed`)y(e.payload);else if(e.type===`dcw.controller`)Object.assign(c,e.payload);else if(e.type===`dcw.optimization.changed`){let t=e.payload.record,n=g.findIndex(e=>e.id===t.id);n>=0?g[n]=t:g.unshift(t),g.length>200&&(g.length=200)}}async function w(){try{let e=await o(``);r.splice(0,r.length,...e.nodes),s.clear();for(let e of r)s.set(e.id,e);Object.assign(c,e.controller),e.templates?.length&&l.splice(0,l.length,...e.templates.map(e=>({...e}))),e.drivers?.length&&_.splice(0,_.length,...e.drivers),u.splice(0,u.length,...e.recipes??[]),d.splice(0,d.length,...e.runs??[]),f.splice(0,f.length,...e.history??[]),p.splice(0,p.length,...e.products??[]),m.splice(0,m.length,...e.lines??[]);for(let e of Object.keys(h))Reflect.deleteProperty(h,e);for(let t of e.lineStates??[])h[t.lineId]=t;T.loaded=!0,T.error=``}catch(e){T.error=n(e)}}let T=e({nodes:r,controller:c,templates:l,recipes:u,runs:d,history:f,products:p,lines:m,lineStates:h,optimizations:g,driverCatalog:_,loaded:!1,error:``,ensureWsFeed:S,load:w,loadOptimizations:async e=>{let t=new URLSearchParams;e?.lineId&&t.set(`lineId`,e.lineId),e?.recipeId&&t.set(`recipeId`,e.recipeId),e?.nodeId&&t.set(`nodeId`,e.nodeId),e?.status&&t.set(`status`,e.status),t.set(`limit`,String(e?.limit??100));let n=await o(`/optimizations?${t.toString()}`);g.splice(0,g.length,...n.records)},fetchLedger:async e=>(await o(`/${e}/param-ledger`)).ledger,optimizationSeries:async(e,t)=>o(`/optimizations/${e}/series${t?`?windowMs=${t}`:``}`),judgeOptimization:async(e,t,n)=>{await o(`/optimizations/${e}/judge`,{method:`POST`,body:JSON.stringify({verdict:t,reason:n})})},rollbackOptimization:async e=>{await o(`/optimizations/${e}/rollback`,{method:`POST`,body:JSON.stringify({})})},rollbackNode:async(e,t)=>{await o(`/journal/node/${e}/rollback`,{method:`POST`,body:JSON.stringify({to:t})})},markGood:async(e,t)=>{await o(`/recipes/${e}/mark-good`,{method:`POST`,body:JSON.stringify({runId:t})})},rollbackRecipeGood:async e=>{await o(`/recipes/${e}/rollback-good`,{method:`POST`,body:JSON.stringify({})})},createFromTemplate:async(e,t)=>{let n=await o(``,{method:`POST`,body:JSON.stringify({templateRef:e,...t})});return v(n.node),n.node},patchNode:async(e,t)=>{await o(`/${e}`,{method:`PATCH`,body:JSON.stringify(t)})},removeNode:async e=>{await o(`/${e}`,{method:`DELETE`});let t=r.findIndex(t=>t.id===e);t>=0&&r.splice(t,1),s.delete(e)},bindNode:async(e,t)=>{v((await o(`/${e}/bind`,{method:`POST`,body:JSON.stringify({deviceId:t})})).node)},write:async(e,t)=>o(`/${e}/write`,{method:`POST`,body:JSON.stringify({value:t})}).then(e=>e.outcome),readNode:async e=>o(`/${e}/read`,{method:`POST`,body:JSON.stringify({})}).then(e=>e.read),testDriver:async(e,t)=>o(`/test-driver`,{method:`POST`,body:JSON.stringify({driver:e,driverConfig:t})}).then(e=>e.test),testNode:async e=>o(`/${e}/test`,{method:`POST`}).then(e=>e.test),startStop:async e=>{let t=await o(`/controller`,{method:`POST`,body:JSON.stringify({action:e})});Object.assign(c,t.controller)},createTemplate:async e=>{let t=await o(`/templates`,{method:`POST`,body:JSON.stringify(e)});return l.push(t.template),t.template},createRecipe:async e=>{let t=await o(`/recipes`,{method:`POST`,body:JSON.stringify(e)});return u.push(t.recipe),t.recipe},updateRecipe:async(e,t)=>{let n=await o(`/recipes/${e}`,{method:`PATCH`,body:JSON.stringify(t)}),r=u.findIndex(t=>t.id===e);return r>=0&&(u[r]=n.recipe),n.recipe},removeRecipe:async e=>{await o(`/recipes/${e}`,{method:`DELETE`});let t=u.findIndex(t=>t.id===e);t>=0&&u.splice(t,1)},applyRecipe:async e=>{let t=await o(`/recipes/${e}/apply`,{method:`POST`});return d.push(t.run),t.run},recipeVersions:async e=>(await o(`/recipes/${e}/versions`)).versions??[],revertRecipe:async(e,t)=>{let n=await o(`/recipes/${e}/revert`,{method:`POST`,body:JSON.stringify(t)}),r=u.findIndex(t=>t.id===e);return r>=0&&(u[r]=n.recipe),n.recipe},closeRun:async e=>{let t=await o(`/runs/${e}/close`,{method:`POST`}),n=d.findIndex(t=>t.id===e);return n>=0&&(d[n]=t.run),t.run},runData:e=>o(`/runs/${e}/data`),nodeById:e=>s.get(e)??r.find(t=>t.id===e),createProduct:async e=>{let t=await o(`/products`,{method:`POST`,body:JSON.stringify(e)});return p.push(t.product),t.product},updateProduct:async(e,t)=>o(`/products/${e}`,{method:`PATCH`,body:JSON.stringify(t)}).then(e=>(E(),e.product)),removeProduct:async e=>{await o(`/products/${e}`,{method:`DELETE`});let t=p.findIndex(t=>t.id===e);t>=0&&p.splice(t,1)},createLine:async e=>{let t=await o(`/lines`,{method:`POST`,body:JSON.stringify(e)});return m.push(t.line),t.line},updateLine:async(e,t)=>{let n=await o(`/lines/${e}`,{method:`PATCH`,body:JSON.stringify(t)}),r=m.findIndex(t=>t.id===e);r>=0&&(m[r]=n.line)},removeLine:async(e,t=!1)=>{await o(`/lines/${e}${t?`?purge=1`:``}`,{method:`DELETE`});let n=m.findIndex(t=>t.id===e);n>=0&&m.splice(n,1),Reflect.deleteProperty(h,e),await w()},startLine:async(e,t)=>{let n=await o(`/lines/${e}/start`,{method:`POST`,body:JSON.stringify({recipeId:t})});h[e]=n.line},stopLine:async e=>{let t=await o(`/lines/${e}/stop`,{method:`POST`});h[e]=t.line},lineStateOf:e=>h[e]??{lineId:e,active:!1,runId:null,recipeId:null,recipeName:null,productId:null,productName:null,startedAt:null,taggedSamples:0},queryLine:e=>{let t=new URLSearchParams;return e.lineId&&t.set(`lineId`,e.lineId),e.productId&&t.set(`productId`,e.productId),e.recipeId&&t.set(`recipeId`,e.recipeId),e.paramKey&&t.set(`paramKey`,e.paramKey),e.nodeId&&t.set(`nodeId`,e.nodeId),e.fromMs!=null&&t.set(`from`,String(e.fromMs)),e.toMs!=null&&t.set(`to`,String(e.toMs)),e.bucketMs!=null&&t.set(`bucketMs`,String(e.bucketMs)),e.limit!=null&&t.set(`limit`,String(e.limit)),o(`/line/query?${t.toString()}`)}});async function E(){try{let e=await o(``);p.splice(0,p.length,...e.products??[]),u.splice(0,u.length,...e.recipes??[])}catch{}}return T}var c=`__dcwStream`;function l(){let e=globalThis;return e[c]||(e[c]=s()),e[c]}export{a as n,l as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./DK3Fl9T5.js";import{g as t,v as n}from"./CavpkQb0.js";import{d as r}from"./ByMj6e7s.js";import{n as i}from"./Cnrmlixo.js";import{t as a}from"./JgheoP3e.js";import{n as o,t as s}from"./DxagrjB8.js";var c=e({useDcwAddNode:()=>l});function l(e){let{t:c}=i(),l=s(),{lineId:u}=e,d=n(!1),f=n(`mock`),p=n(l.templates[0]?.key??``),m=n(`mock`),h=n(``),g=n(null),_=n(null),v=n(60),y=n(null),b=n({}),x=t({kind:`none`,scale:1,offset:0}),S=n(``),C=n(!1),w=n(null),T=n(!1),E=n(``),D=r(()=>l.driverCatalog.length?l.driverCatalog:o.map(e=>({...e}))),O=r(()=>D.value.find(e=>e.kind===m.value)),k=r(()=>O.value?.configFields??[]);function A(){let e={};for(let t of k.value)t.default!==void 0&&(e[t.key]=t.default);b.value=e,w.value=null}A();async function j(){C.value=!0,w.value=null;try{w.value=await l.testDriver(m.value,b.value)}catch(e){w.value={ok:!1,message:a(e)}}finally{C.value=!1}}async function M(){T.value=!0,E.value=``;try{for(let e of k.value)if(e.required&&(b.value[e.key]===void 0||b.value[e.key]===``))throw Error(c(`dcwDetail.k8x1un1184`,{p0:e.label}));let e=x.kind===`linear`?{kind:`linear`,scale:Number(x.scale),offset:Number(x.offset)}:void 0;await l.createFromTemplate(`dcw-${p.value}`,{name:h.value.trim()||void 0,driver:m.value,driverConfig:{...b.value},transform:e,holdIntervalMs:g.value,readIntervalMs:_.value,writeLockSeconds:v.value,...y.value==null?{}:{stepLimit:y.value},lineId:u.value,semantics:S.value.trim()||void 0}),d.value=!1,h.value=``,S.value=``}catch(e){E.value=a(e)}finally{T.value=!1}}return{addOpen:d,addScenario:f,addTemplate:p,addDriver:m,addName:h,addHold:g,addRead:_,addWriteLock:v,addStepLimit:y,addCfg:b,addTransform:x,addSemantics:S,addTesting:C,addTest:w,addSaving:T,addError:E,driverCatalog:D,addFields:k,doTestConnection:j,doAddNode:M}}export{c as n,l as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./DK3Fl9T5.js";import{t}from"./Crbir9cT.js";var n=e({amlApi:()=>r});function r(e,n){return t({base:`/api/workshop/aml`,path:e,init:n})}export{n,r as t};
|