agentworkshop 0.7.38 → 0.7.40
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/aml-mission-default.md +20 -20
- package/.AgentWorkShop/prompts/aml-playbook.md +49 -49
- package/.AgentWorkShop/prompts/host-tools.json +1293 -1238
- package/.AgentWorkShop/prompts/peer-reply-cross-channel.md +10 -10
- package/.output/.AgentWorkShop/prompts/aml-mission-default.md +20 -20
- package/.output/.AgentWorkShop/prompts/aml-playbook.md +49 -49
- package/.output/.AgentWorkShop/prompts/host-tools.json +1293 -1238
- package/.output/.AgentWorkShop/prompts/peer-reply-cross-channel.md +10 -10
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/88GOowgO2.js +1 -0
- package/.output/public/_nuxt/{BNT8gYU92.js → BC9wjTJK2.js} +2 -2
- package/.output/public/_nuxt/BOt2SP4z.js +1 -0
- package/.output/public/_nuxt/BP-NyKVG.js +18 -0
- package/.output/public/_nuxt/{HBLJ-wei.js → BXxH0UQE.js} +1 -1
- package/.output/public/_nuxt/{zIGh7R49.js → BneN7fbu.js} +1 -1
- package/.output/public/_nuxt/BsROmY89.js +1 -0
- package/.output/public/_nuxt/{C_OLzD09.js → C4oW1HsE.js} +1 -1
- package/.output/public/_nuxt/CFxtLwjp.js +1 -0
- package/.output/public/_nuxt/{Cec0Ua3F.js → CS50LB_l.js} +1 -1
- package/.output/public/_nuxt/C_iYD-EB.js +1 -0
- package/.output/public/_nuxt/{DAe0h2MB.js → ClILjvWH.js} +1 -1
- package/.output/public/_nuxt/CssgYAAL2.js +1 -0
- package/.output/public/_nuxt/{CY9LbPCI.js → CzOCSGLe.js} +1 -1
- package/.output/public/_nuxt/D8qvkfyY.js +1 -0
- package/.output/public/_nuxt/DCn7QZ5N.js +2 -0
- package/.output/public/_nuxt/DGIuvyRN2.js +1 -0
- package/.output/public/_nuxt/{CojCTLKD.js → DGj-WEBg.js} +1 -1
- package/.output/public/_nuxt/{DDShH71m.js → DS8qj8EL.js} +1 -1
- package/.output/public/_nuxt/DTFCy6h-.js +1 -0
- package/.output/public/_nuxt/{DrYV5i68.js → DUjW5Yq5.js} +1 -1
- package/.output/public/_nuxt/DZshyNLa.js +1 -0
- package/.output/public/_nuxt/{45zuyAso.js → D_OTvQza.js} +1 -1
- package/.output/public/_nuxt/DcsCcxp4.js +1 -0
- package/.output/public/_nuxt/{DUrecWPx.js → Dihnimlk.js} +2 -2
- package/.output/public/_nuxt/Dqw1lpr-.js +1 -0
- package/.output/public/_nuxt/{BG8sCcwx.js → Dr9v6C0f.js} +9 -9
- package/.output/public/_nuxt/{8NMOXZOV.js → Du9ZJtnj.js} +1 -1
- package/.output/public/_nuxt/TownView.f-YOdXRs.css +1 -0
- package/.output/public/_nuxt/_id_.CM4bIgKY.css +1 -0
- package/.output/public/_nuxt/_id_.bNV69Dtf.css +1 -0
- package/.output/public/_nuxt/_wsId_.B4WiqkIS.css +1 -0
- package/.output/public/_nuxt/agents.ZD0rVdHE.css +1 -0
- package/.output/public/_nuxt/aml.BN8ZEW4h.css +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/f4707884-7cf4-4a31-80d2-e3d72b73745f.json +1 -0
- package/.output/public/_nuxt/channel-templates.BOtahzPi.css +1 -0
- package/.output/public/_nuxt/daq.B0D3dPAc.css +1 -0
- package/.output/public/_nuxt/dcw.8Y7FqCVN.css +1 -0
- package/.output/public/_nuxt/default.J32SgqFY.css +1 -0
- package/.output/public/_nuxt/entry.bdm0tv6M.css +1 -0
- package/.output/public/_nuxt/logs.BpKzmKsh.css +1 -0
- package/.output/public/_nuxt/monitor.D9pe7qN6.css +1 -0
- package/.output/public/_nuxt/pages.D7aSDlUI.css +1 -0
- package/.output/public/_nuxt/permissions.DwTVlFe6.css +1 -0
- package/.output/public/_nuxt/plugins.sb4nDGqr.css +1 -0
- package/.output/public/_nuxt/{Cbq-mryP.js → qr6R6Ha1.js} +1 -1
- package/.output/public/_nuxt/settings.BTgR-NiE.css +1 -0
- package/.output/public/_nuxt/teams.CxnxKVVs.css +1 -0
- package/.output/public/_nuxt/tokens.BFY7qv4f.css +1 -0
- package/.output/public/_nuxt/{town.DKIAhKnx.css → town.BBXZmeoP.css} +1 -1
- package/.output/public/_nuxt/users.DLgZ1D0h.css +1 -0
- package/.output/public/_nuxt/workshop.CR_QzeAN.css +1 -0
- package/.output/public/_nuxt/{BzHEilTt.js → xh3_vYcu.js} +1 -1
- package/.output/public/_nuxt/yF0aYMF1.js +4 -0
- package/.output/server/chunks/_/entity.mjs.map +1 -1
- package/.output/server/chunks/_/nitro.mjs +2244 -1464
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/build/{TownView-jVazYOjN.mjs → TownView-BuLAsmpR.mjs} +288 -206
- package/.output/server/chunks/build/TownView-BuLAsmpR.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CfVosNg3.mjs → _id_-BU1wfOID.mjs} +138 -138
- package/.output/server/chunks/build/{_id_-CfVosNg3.mjs.map → _id_-BU1wfOID.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-Hwr4rZpr.mjs → _id_-BYsEua57.mjs} +33 -32
- package/.output/server/chunks/build/_id_-BYsEua57.mjs.map +1 -0
- package/.output/server/chunks/build/{_wsId_-BVg3bB77.mjs → _wsId_-BxlDcJHg.mjs} +293 -259
- package/.output/server/chunks/build/{_wsId_-BVg3bB77.mjs.map → _wsId_-BxlDcJHg.mjs.map} +1 -1
- package/.output/server/chunks/build/{agents-Bvin73QY.mjs → agents-CLQqJF2y.mjs} +21 -27
- package/.output/server/chunks/build/agents-CLQqJF2y.mjs.map +1 -0
- package/.output/server/chunks/build/{aml-BCSJCdX7.mjs → aml-_7FdFL2p.mjs} +109 -109
- package/.output/server/chunks/build/{aml-BCSJCdX7.mjs.map → aml-_7FdFL2p.mjs.map} +1 -1
- package/.output/server/chunks/build/api-error-dul30BYQ.mjs.map +1 -1
- package/.output/server/chunks/build/{channel-templates-BTq8570n.mjs → channel-templates-p6SZNjlM.mjs} +19 -19
- package/.output/server/chunks/build/{channel-templates-BTq8570n.mjs.map → channel-templates-p6SZNjlM.mjs.map} +1 -1
- package/.output/server/chunks/build/{daq-C03Uu5UE.mjs → daq-cgyjKmJu.mjs} +188 -122
- package/.output/server/chunks/build/daq-cgyjKmJu.mjs.map +1 -0
- package/.output/server/chunks/build/{dcw-6vEYVeje.mjs → dcw-CoTxBlAZ.mjs} +45 -45
- package/.output/server/chunks/build/{dcw-6vEYVeje.mjs.map → dcw-CoTxBlAZ.mjs.map} +1 -1
- package/.output/server/chunks/build/{default-hseyOqBT.mjs → default-BE4r0FZN.mjs} +158 -79
- package/.output/server/chunks/build/{default-hseyOqBT.mjs.map → default-BE4r0FZN.mjs.map} +1 -1
- package/.output/server/chunks/build/{logs-B-xhuqln.mjs → logs-BSOeZwwI.mjs} +34 -34
- package/.output/server/chunks/build/{logs-B-xhuqln.mjs.map → logs-BSOeZwwI.mjs.map} +1 -1
- package/.output/server/chunks/build/{monitor-CyfDt4nR.mjs → monitor-C0okQaXz.mjs} +33 -33
- package/.output/server/chunks/build/{monitor-CyfDt4nR.mjs.map → monitor-C0okQaXz.mjs.map} +1 -1
- package/.output/server/chunks/build/{pages-BO7yZsXA.mjs → pages-DFxjn9Xa.mjs} +33 -17
- package/.output/server/chunks/build/pages-DFxjn9Xa.mjs.map +1 -0
- package/.output/server/chunks/build/{permissions-B52oOmaO.mjs → permissions-68SsNjex.mjs} +12 -12
- package/.output/server/chunks/build/{permissions-B52oOmaO.mjs.map → permissions-68SsNjex.mjs.map} +1 -1
- package/.output/server/chunks/build/{plugins-CUWmMdyt.mjs → plugins-lGlUr1lj.mjs} +17 -17
- package/.output/server/chunks/build/{plugins-CUWmMdyt.mjs.map → plugins-lGlUr1lj.mjs.map} +1 -1
- package/.output/server/chunks/build/{settings-DoQ2Oq3P.mjs → settings-Ddd1qx2Z.mjs} +50 -47
- package/.output/server/chunks/build/settings-Ddd1qx2Z.mjs.map +1 -0
- package/.output/server/chunks/build/{teams-2kz3CusY.mjs → teams-MEDLZdMn.mjs} +38 -34
- package/.output/server/chunks/build/teams-MEDLZdMn.mjs.map +1 -0
- package/.output/server/chunks/build/{tokens-BbWLqtVz.mjs → tokens-C7fTM5C2.mjs} +14 -14
- package/.output/server/chunks/build/{tokens-BbWLqtVz.mjs.map → tokens-C7fTM5C2.mjs.map} +1 -1
- package/.output/server/chunks/build/{town-BOl6hs9B.mjs → town-qMPql9Se.mjs} +36 -10
- package/.output/server/chunks/build/town-qMPql9Se.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqStream-CIBaiGAl.mjs +1 -1
- package/.output/server/chunks/build/useDcwStream-CBbiYnWe.mjs +1 -1
- package/.output/server/chunks/build/useResponsive-BKDMGTHs.mjs +49 -0
- package/.output/server/chunks/build/useResponsive-BKDMGTHs.mjs.map +1 -0
- package/.output/server/chunks/build/{users-fohSmF-J.mjs → users-Cfd5-l2-.mjs} +6 -6
- package/.output/server/chunks/build/{users-fohSmF-J.mjs.map → users-Cfd5-l2-.mjs.map} +1 -1
- package/.output/server/chunks/build/{workshop-DX5-ldc4.mjs → workshop-BL5bhfs0.mjs} +15 -15
- package/.output/server/chunks/build/{workshop-DX5-ldc4.mjs.map → workshop-BL5bhfs0.mjs.map} +1 -1
- package/.output/server/chunks/build/{workspaces-BuydxM-3.mjs → workspaces-Bgz5Ekwp.mjs} +18 -3
- package/.output/server/chunks/build/workspaces-Bgz5Ekwp.mjs.map +1 -0
- package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/settings/events.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +6 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.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/channel-templates/_id/instantiate.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +3 -3
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -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.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +3 -2
- 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/index2.post.mjs +8 -6
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +5 -5
- 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 +14 -4
- 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 +4 -4
- 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 +4 -3
- 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 +31 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +28 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +32 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +34 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +33 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +34 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +3 -3
- package/.output/server/chunks/virtual/entry.mjs +53 -25
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +204 -40
- package/README.md +739 -591
- package/app/app.vue +9 -3
- package/app/assets/css/main.css +517 -7
- package/app/components/AppHeader.vue +98 -24
- package/app/components/AppSidebar.vue +118 -11
- package/app/components/AwChart.vue +2 -1
- package/app/components/workshop/AgentInspectorDrawer.vue +6 -6
- package/app/components/workshop/AgentLanesView.vue +52 -1
- package/app/components/workshop/AssetLibrary.vue +4 -2
- package/app/components/workshop/ChannelSessionList.vue +4 -2
- package/app/components/workshop/Composer.vue +96 -0
- package/app/components/workshop/DaqNodeRow.vue +19 -0
- package/app/components/workshop/DaqTemplateIcon.vue +33 -0
- package/app/components/workshop/DeviceTwinPanel.vue +37 -35
- package/app/components/workshop/EventBlock.vue +3 -3
- package/app/components/workshop/InspectorPanel.vue +47 -11
- package/app/components/workshop/LiveAgentBar.vue +34 -0
- package/app/components/workshop/TaskBoardView.vue +83 -33
- package/app/components/workshop/TranscriptTimeline.vue +56 -0
- package/app/components/workshop/blocks/ClusterError.vue +1 -1
- package/app/components/workshop/blocks/ClusterRoute.vue +3 -1
- package/app/components/workshop/blocks/ClusterStatus.vue +2 -2
- package/app/components/workshop/blocks/ClusterStream.vue +8 -2
- package/app/components/workshop/town/ModelPreview3D.vue +1 -1
- package/app/components/workshop/town/TownView.vue +507 -82
- package/app/composables/useResponsive.ts +88 -0
- package/app/composables/useRouteMeta.ts +3 -0
- package/app/composables/workshop/useDcwStream.ts +1 -1
- package/app/composables/workshop/useVisibleInterval.ts +2 -2
- package/app/composables/workshop/useWorkshopApi.ts +1 -1
- package/app/layouts/default.vue +46 -2
- package/app/pages/aml/index.vue +712 -616
- package/app/pages/daq/[id].vue +3 -2
- package/app/pages/daq/index.vue +209 -9
- package/app/pages/dcw/[id].vue +109 -28
- package/app/pages/dcw/index.vue +83 -23
- package/app/pages/index.vue +35 -1
- package/app/pages/logs/index.vue +147 -13
- package/app/pages/monitor.vue +56 -12
- package/app/pages/permissions/index.vue +34 -0
- package/app/pages/plugins/index.vue +35 -4
- package/app/pages/settings.vue +90 -21
- package/app/pages/tokens.vue +23 -0
- package/app/pages/town.vue +50 -5
- package/app/pages/users.vue +23 -0
- package/app/pages/workshop/agents.vue +92 -2
- package/app/pages/workshop/channel-templates.vue +53 -0
- package/app/pages/workshop/index.vue +14 -0
- package/app/pages/workshop/teams.vue +66 -6
- package/app/pages/workshop/w/[wsId].vue +202 -14
- package/app/plugins/aw-plugins.client.ts +13 -8
- package/app/stores/app.ts +33 -1
- package/app/stores/workshop/user.ts +1 -1
- package/app/stores/workshop/workspaces.ts +18 -2
- package/app/utils/api-error.ts +1 -1
- package/cli/commands/build.mjs +8 -1
- package/docker-compose.yml +6 -0
- package/docs/full-test-plan.md +4 -0
- package/docs/plugins.en.md +1 -0
- package/docs/plugins.md +1 -0
- package/i18n/locales/en.ts +3 -0
- package/i18n/locales/zh-CN.ts +3 -0
- package/nuxt.config.ts +31 -0
- package/package.json +9 -1
- package/scripts/_audit/detached-start.mjs +103 -0
- package/scripts/_audit/guard-upstream-liveness.mjs +104 -0
- package/scripts/_dbg-param-map-e2e.ts +242 -0
- package/scripts/_dbg-param-map-rest-smoke.mjs +73 -0
- package/scripts/_dbg-param-real-scenario.mjs +153 -0
- package/scripts/_dbg-perms-e2e.mjs +10 -3
- package/scripts/_dbg-protocol-matrix.mjs +453 -441
- package/scripts/_dbg-render-regression.mjs +151 -130
- package/scripts/_dbg-town-agents-probe.mjs +60 -0
- package/scripts/_dbg-visual-acceptance.mjs +63 -0
- package/scripts/api-live-e2e.mjs +40 -8
- package/scripts/capture-walkthrough.mjs +232 -0
- package/scripts/e2e-agent-team.mjs +5 -3
- package/scripts/render-walkthrough-figure.mjs +46 -0
- package/scripts/seed-walkthrough-fixture.mjs +143 -0
- package/scripts/test-plugin-hardening.mjs +8 -0
- package/scripts/three-system-e2e.mjs +6 -6
- package/scripts/ui/admin-shots.mjs +46 -0
- package/scripts/ui/audit-layout.mjs +301 -0
- package/scripts/ui/bump-microfont.mjs +39 -0
- package/scripts/ui/lib.mjs +198 -0
- package/scripts/ui/linkcheck2.mjs +37 -0
- package/scripts/ui/live-render-check.mjs +72 -0
- package/scripts/ui/md-lint.mjs +80 -0
- package/scripts/ui/perf-audit.mjs +132 -0
- package/scripts/ui/readme-assets.mjs +30 -0
- package/scripts/ui/readme-shots.mjs +42 -0
- package/scripts/ui/record.mjs +225 -0
- package/scripts/ui/seed-admin.mjs +68 -0
- package/scripts/ui/seed-demo.mjs +83 -0
- package/scripts/ui/shot-hero.mjs +25 -0
- package/scripts/ui/shots.mjs +75 -0
- package/scripts/ui/sim-ui-shot.mjs +16 -0
- package/scripts/ui/verify-nav.mjs +51 -0
- package/scripts/ui/verify-responsive.mjs +285 -0
- package/server/api/system/config-groups/[id].patch.ts +1 -1
- package/server/api/system/config-groups/index.post.ts +1 -1
- package/server/api/system/settings/events.get.ts +1 -1
- package/server/api/system/settings/index.patch.ts +1 -1
- package/server/api/workshop/agent-tools/invoke.post.ts +16 -2
- package/server/api/workshop/aml/datasets/[id].get.ts +8 -1
- package/server/api/workshop/daq/infra/reconnect.post.ts +1 -1
- package/server/api/workshop/daq/templates/[key].delete.ts +1 -0
- package/server/api/workshop/daq/templates/[key].patch.ts +1 -0
- package/server/api/workshop/daq/templates/index.post.ts +1 -0
- package/server/api/workshop/dcw/[id]/write.post.ts +10 -2
- package/server/api/workshop/dcw/[id].delete.ts +5 -2
- package/server/api/workshop/dcw/index.get.ts +2 -0
- package/server/api/workshop/dcw/lines/[id].patch.ts +1 -1
- package/server/api/workshop/dcw/params/[id]/read.post.ts +17 -0
- package/server/api/workshop/dcw/params/[id]/write.post.ts +21 -0
- package/server/api/workshop/dcw/params/[id].delete.ts +19 -0
- package/server/api/workshop/dcw/params/[id].patch.ts +23 -0
- package/server/api/workshop/dcw/params/index.get.ts +27 -0
- package/server/api/workshop/dcw/params/index.post.ts +25 -0
- package/server/api/workshop/permissions/index.get.ts +3 -1
- package/server/plugins/aw-plugins.ts +14 -3
- package/server/plugins/dev-stability-guard.ts +3 -1
- package/server/plugins/system-config.ts +6 -1
- package/server/plugins-builtin/rag-bridge/index.mjs +9 -2
- package/server/services/system-config.ts +28 -9
- package/server/services/workshop/agents/adapters/one-shot-cli-agent.ts +2 -1
- package/server/services/workshop/agents/agent-interface.ts +8 -6
- package/server/services/workshop/agents/base-agent.ts +18 -4
- package/server/services/workshop/agents/claude-agent.ts +7 -3
- package/server/services/workshop/agents/codex-agent.ts +3 -3
- package/server/services/workshop/agents/dsh-agent.ts +3 -3
- package/server/services/workshop/agents/goose-agent.ts +0 -1
- package/server/services/workshop/agents/harness-terminal.ts +14 -1
- package/server/services/workshop/agents/hermes-agent.ts +4 -2
- package/server/services/workshop/agents/host-tool-bridge.ts +5 -1
- package/server/services/workshop/agents/industrial-context.ts +4 -1
- package/server/services/workshop/agents/industrial-tools.ts +164 -6
- package/server/services/workshop/agents/omp-agent.ts +15 -9
- package/server/services/workshop/agents/opencode-agent.ts +47 -21
- package/server/services/workshop/agents/qwen-agent.ts +10 -5
- package/server/services/workshop/aml/entity.ts +3 -1
- package/server/services/workshop/aml/python-runtime.ts +3 -2
- package/server/services/workshop/daq/bus/mqtt.adapter.ts +8 -4
- package/server/services/workshop/daq/daq-controller.ts +18 -3
- package/server/services/workshop/daq/daq-runtime.ts +5 -3
- package/server/services/workshop/daq/drivers.ts +63 -8
- package/server/services/workshop/daq/host-ports.ts +3 -2
- package/server/services/workshop/daq/storage/timescale.adapter.ts +3 -1
- package/server/services/workshop/db/channel.repo.ts +4 -0
- package/server/services/workshop/db/ops.repo.ts +5 -2
- package/server/services/workshop/db/retention.ts +8 -3
- package/server/services/workshop/dcw/dcw-controller.ts +143 -16
- package/server/services/workshop/dcw/dcw-product.repo.ts +38 -1
- package/server/services/workshop/dcw/dcw-runtime.ts +3 -2
- package/server/services/workshop/dcw/drivers.ts +5 -2
- package/server/services/workshop/dcw/param-conversion.ts +78 -0
- package/server/services/workshop/dcw/param-limits.ts +142 -0
- package/server/services/workshop/dcw/param-map.repo.ts +305 -0
- package/server/services/workshop/dcw/recipe-rollback-manager.ts +13 -7
- package/server/services/workshop/runtime/agent-runtime.ts +4 -0
- package/server/services/workshop/runtime/manager.ts +9 -2
- package/server/services/workshop/settings.ts +4 -2
- package/server/types/pg.d.ts +49 -0
- package/server/utils/stability-severity.ts +13 -2
- package/shared/config/groups.mjs +22 -1
- package/shared/config/home.d.mts +28 -0
- package/shared/dcw-protocol.ts +136 -0
- package/uno.config.ts +12 -1
- package/.output/public/_nuxt/BFkgkW8u.js +0 -4
- package/.output/public/_nuxt/C5gUkRwn.js +0 -1
- package/.output/public/_nuxt/CM12FuB42.js +0 -1
- package/.output/public/_nuxt/CZiw7sEV.js +0 -1
- package/.output/public/_nuxt/Cc_9VzD42.js +0 -1
- package/.output/public/_nuxt/CdPzkOMV.js +0 -1
- package/.output/public/_nuxt/D1YDxZpZ.js +0 -1
- package/.output/public/_nuxt/D20Yamr4.js +0 -1
- package/.output/public/_nuxt/DVsjtsvZ2.js +0 -1
- package/.output/public/_nuxt/DmqknNvV.js +0 -18
- package/.output/public/_nuxt/DnUuIR83.js +0 -1
- package/.output/public/_nuxt/S_fVQwJK.js +0 -1
- package/.output/public/_nuxt/TownView.0oLiQgTC.css +0 -1
- package/.output/public/_nuxt/_id_.D-SYuyZb.css +0 -1
- package/.output/public/_nuxt/_id_.hma_BU6T.css +0 -1
- package/.output/public/_nuxt/_wsId_.B12v3PhY.css +0 -1
- package/.output/public/_nuxt/agents.BV70ioCv.css +0 -1
- package/.output/public/_nuxt/ahgEJu2R.js +0 -1
- package/.output/public/_nuxt/aml.COEKNNqK.css +0 -1
- package/.output/public/_nuxt/builds/meta/44b66249-54d0-4c8a-9057-9755a32329e2.json +0 -1
- package/.output/public/_nuxt/channel-templates.C-M5nKcC.css +0 -1
- package/.output/public/_nuxt/daq.B3265ZDn.css +0 -1
- package/.output/public/_nuxt/dcw.DLYZqEhT.css +0 -1
- package/.output/public/_nuxt/default.DE_vT238.css +0 -1
- package/.output/public/_nuxt/entry.BB-Eeh-J.css +0 -1
- package/.output/public/_nuxt/logs.CqFyMrJw.css +0 -1
- package/.output/public/_nuxt/monitor.B--1dPzs.css +0 -1
- package/.output/public/_nuxt/pages.ooEzrMm9.css +0 -1
- package/.output/public/_nuxt/permissions.B1pjGChZ.css +0 -1
- package/.output/public/_nuxt/plugins.5e5chZ67.css +0 -1
- package/.output/public/_nuxt/pz2JDAM7.js +0 -2
- package/.output/public/_nuxt/settings.Dm3M0RLy.css +0 -1
- package/.output/public/_nuxt/teams.BC75EGnR.css +0 -1
- package/.output/public/_nuxt/tokens.xRb1fSPU.css +0 -1
- package/.output/public/_nuxt/users.CXnP2E08.css +0 -1
- package/.output/public/_nuxt/workshop.Jk5HxWPE.css +0 -1
- package/.output/server/chunks/build/TownView-jVazYOjN.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-Hwr4rZpr.mjs.map +0 -1
- package/.output/server/chunks/build/agents-Bvin73QY.mjs.map +0 -1
- package/.output/server/chunks/build/daq-C03Uu5UE.mjs.map +0 -1
- package/.output/server/chunks/build/pages-BO7yZsXA.mjs.map +0 -1
- package/.output/server/chunks/build/settings-DoQ2Oq3P.mjs.map +0 -1
- package/.output/server/chunks/build/teams-2kz3CusY.mjs.map +0 -1
- package/.output/server/chunks/build/town-BOl6hs9B.mjs.map +0 -1
- package/.output/server/chunks/build/workspaces-BuydxM-3.mjs.map +0 -1
- /package/.output/public/_nuxt/{36oeS8_R2.js → 36oeS8_R.js} +0 -0
- /package/.output/public/_nuxt/{CYWVXZTS.js → CYWVXZTS2.js} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./B7gZokg82.js","./BBrRELH32.js","./CWKEp1wx2.js","./BFjGV-RV2.js","./RYFtK4qZ2.js","./BGkumHZ32.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{$ as e,C as t,Ht as n,P as r,R as i,S as a,Ut as o,V as s,Vt as c,W as l,_t as u,at as d,b as f,ct as p,d as m,dt as h,f as g,ft as _,h as v,ht as y,i as b,j as ee,m as x,nt as S,p as te,pt as C,rt as w,tt as ne,ut as T,v as re,xt as E,y as D,yt as O}from"./CSkxz2NX.js";import{c as k,d as ie,f as ae,l as A,t as oe,u as se}from"./D6uzXueg.js";import{t as ce}from"./HclGiUj8.js";import{n as le}from"./KZQX7xoM.js";import{t as j}from"./CWoJjWmZ.js";import{t as ue}from"./36oeS8_R.js";import{t as de}from"./DIaZ2PTo2.js";import{t as fe}from"./aLLjF2K-2.js";import{t as M}from"./BDNMzG2s2.js";import{t as pe}from"./BBrRELH32.js";import{C as me,L as he,N,O as ge,St as _e,_ as ve,b as ye,c as be,dt as xe,et as P,v as Se,y as F,z as Ce}from"./BFjGV-RV2.js";import{t as we}from"./DGIuvyRN2.js";import{t as Te}from"./CssgYAAL2.js";import{t as I}from"./D0ZBQrN_2.js";import{n as Ee,t as De}from"./BC9wjTJK2.js";import{r as Oe,t as ke}from"./DcsCcxp4.js";import{t as Ae}from"./D8qvkfyY.js";import{t as je}from"./C3J6FYKa.js";import{n as Me}from"./DeYsUzhr.js";var Ne=`__characterAssets`;function Pe(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 Fe(){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},i=h({models:e,loaded:!1,loading:!1,error:``,async load(){if(!(i.loading||i.loaded)){i.loading=!0;try{let[e,a]=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=a.status===`fulfilled`?await a.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(Pe(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);i.models.splice(0,i.models.length,...f),i.loaded=!0,i.error=``}catch(e){i.loaded=!1,i.error=I(e)}finally{i.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 a=await fetch(`/api/workshop/assets/character`,{method:`POST`,headers:r(!1),body:n}),o=await a.json().catch(()=>({}));if(!a.ok||!o?.data?.asset)throw Error(o?.message??`上传失败`);return i.loaded=!1,await i.load(),Pe(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 i.loaded=!1,await i.load(),{used:n?.data?.used??0}},async uploadDevice(e,t){let n=new FormData;n.append(`file`,e),t&&n.append(`name`,t);let a=await fetch(`/api/workshop/assets/devices`,{method:`POST`,headers:r(!1),body:n}),o=await a.json().catch(()=>({}));if(!a.ok||!o?.data?.asset)throw Error(o?.message??`设备模型上传失败`);i.loaded=!1,await i.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()}),a=await n.json().catch(()=>({}));if(!n.ok)throw Error(a?.message??`设备模型删除失败`);i.loaded=!1,await i.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 i}function Ie(){let e=globalThis;e[Ne]||(e[Ne]=Fe());let t=e[Ne];return t.load(),t}var Le={key:0,class:`mp-loading`},L={key:1,class:`mp-failed`},R=Object.assign(M(a({__name:`ModelPreview3D`,props:{file:{default:``},localFile:{default:null},height:{default:64}},setup(t){let a=t,o=C(null),c=C(!1),l=C(!1),u=globalThis,d=``;function f(){if(u.__modelPreviewRig)return u.__modelPreviewRig;let e=new ye({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 ge},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(),u.__modelPreviewRig=t,t}function p(){let e=u.__modelPreviewRig;!e||e.slots.size>0||(cancelAnimationFrame(e.raf),e.renderer.dispose(),e.renderer.domElement.remove(),delete u.__modelPreviewRig)}function m(e){try{let t=new F(u.__modelPreviewRig.renderer);e.environment=t.fromScene(new ve,.04).texture,e.environmentIntensity=.55,t.dispose()}catch{}e.add(new Ce(14674431,3813157,1.3));let t=new N(16773855,2.2);t.position.set(3,4,2),e.add(t);let n=new N(4311284,1);n.position.set(-3,1,-2.5),e.add(n)}function h(e){let t=new me().setFromObject(e),n=new _e;t.getSize(n);let r=t.getCenter(new _e),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 y(e){if(!o.value||c.value)return;let t=o.value,n=t.clientWidth||120,r=a.height||64,i=f(),s=document.createElement(`canvas`);s.style.width=`100%`,s.style.height=`${r}px`,s.width=Math.max(2,Math.round(n*Math.min(window.devicePixelRatio,1.5))),s.height=Math.max(2,Math.round(r*Math.min(window.devicePixelRatio,1.5)));let u=s.getContext(`2d`);if(!u){c.value=!0;return}t.appendChild(s);let d=new xe;m(d);let p=new P(38,n/r,.1,100);p.position.set(2.4,1.8,3.1),p.lookAt(0,0,0);let g=new he;d.add(g),_={canvas:s,ctx:u,scene:d,camera:p,group:g,w:s.width,h:s.height,speed:.6,visible:!1,io:null},typeof IntersectionObserver<`u`?(_.io=new IntersectionObserver(e=>{for(let t of e)_&&(_.visible=t.isIntersecting)}),_.io.observe(s)):_.visible=!0,i.slots.add(_),l.value=!0,new Se().load(e,e=>{let t=e.scene;_&&(t.traverse(e=>{let t=e;t.isMesh&&(t.castShadow=!1,t.receiveShadow=!1)}),h(t),_.group.add(t),l.value=!1)},void 0,()=>{l.value=!1,c.value=!0})}function b(){if(d&&URL.revokeObjectURL(d),d=``,_){let e=u.__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 S(){if(c.value=!1,a.localFile){d=URL.createObjectURL(a.localFile),y(d);return}a.file&&y(a.file)}return i(S),e(()=>[a.file,a.localFile],()=>{b(),(a.localFile??(a.file?a.file:null))&&ee(()=>S())}),r(b),(e,r)=>(s(),v(`div`,{ref_key:`hostRef`,ref:o,class:`model-preview-3d`,style:n({height:`${t.height}px`})},[E(l)?(s(),v(`div`,Le,[...r[0]||=[g(`span`,{class:`mp-spin`},null,-1)]])):E(c)?(s(),v(`div`,L,` PREVIEW NA `)):x(``,!0)],4))}}),[[`__scopeId`,`data-v-ed056b0a`]]),{__name:`WorkshopTownModelPreview3D`}),Re={class:`asset-lib`},ze={class:`lib-head`},z={class:`head-title`},Be={class:`head-hint`},B={class:`upload-row`},Ve={class:`upload-name`},He={key:0,class:`drop-hint`},Ue={key:1,class:`upload-file-tag`},We={class:`upload-actions`},Ge=[`disabled`],Ke=[`disabled`],qe={key:2,class:`mini-err`},Je={key:3,class:`mini-err`},Ye={class:`lib-grid`},Xe=[`data-model-id`,`title`,`onDragstart`],Ze={key:1,class:`model-img glb dev`},Qe={class:`model-name`},V={class:`model-badge`},H={class:`card-actions`},$e=[`disabled`,`onClick`],et={key:0,class:`lib-note`},tt={key:1,class:`lib-note`},nt={key:0,class:`mini-msg`},rt=Object.assign(M(a({__name:`AssetLibrary`,setup(e){let{t}=le(),n=Ie(),r=m(()=>n.models.filter(e=>e.kind===`dev`)),i=e=>/\.(glb|gltf)$/i.test(e);function a(e,t){e.dataTransfer&&(e.dataTransfer.setData(`application/x-aw-model`,t),e.dataTransfer.setData(`text/plain`,t),e.dataTransfer.effectAllowed=`copy`)}let u=C(!1),d=C(``),f=C(null),p=C(!1),h=e=>{let t=e.target;y(t.files?.[0]??null)},_=e=>{p.value=!1,y(e.dataTransfer?.files?.[0]??null)},y=e=>{if(e&&!/\.(glb|gltf|obj|fbx)$/i.test(e.name)){d.value=`仅支持 .glb/.gltf/.obj/.fbx 模型文件`;return}f.value=e,d.value=``},ee=()=>{f.value=null};async function S(){let e=f.value;if(!e){d.value=t(`assetLibrary.kcjqcaw012`);return}u.value=!0,d.value=``;try{let r=await n.uploadDevice(e);f.value=null,d.value=t(`assetLibrary.k8nv3or016`,{p0:r.name})}catch(e){d.value=I(e)}finally{u.value=!1}}let w=C(``),ne=C(``);async function T(e){w.value=e,ne.value=``;try{await n.removeDevice(e),ne.value=t(`assetLibrary.k8n918k013`)}catch(e){ne.value=I(e)}finally{w.value=``}}return(e,t)=>(s(),v(`aside`,Re,[g(`div`,ze,[g(`span`,z,o(e.$t(`assetLibrary.k7la4x5001`)),1),g(`span`,Be,o(e.$t(`assetLibrary.kulif5b002`)),1)]),g(`div`,{class:c([`upload-box`,{drop:E(p)}]),onDragover:t[0]||=ae(e=>p.value=!0,[`prevent`]),onDragleave:t[1]||=e=>p.value=!1,onDrop:ae(_,[`prevent`])},[g(`label`,B,[g(`input`,{type:`file`,accept:`.glb,.gltf,.obj,.fbx`,class:`file-input`,onChange:h},null,32),g(`span`,Ve,[t[2]||=g(`span`,{class:`i-tabler-plus upload-ico`},null,-1),D(` `+o(E(f)?.name||e.$t(`assetLibrary.k1iiort6010`)),1)])]),E(p)?(s(),v(`span`,He,[t[3]||=g(`span`,{class:`i-tabler-download`},null,-1),D(` `+o(e.$t(`assetLibrary.k5hg6jq003`)),1)])):x(``,!0),E(f)?(s(),v(b,{key:1},[i(E(f).name)?(s(),te(R,{key:0,"local-file":E(f),height:92},null,8,[`local-file`])):(s(),v(`span`,Ue,o(E(f).name)+` (`+o(e.$t(`assetLibrary.k1xz5wvk009`)),1)),g(`div`,We,[g(`button`,{class:`upload-btn go`,disabled:E(u),onClick:S},o(E(u)?e.$t(`assetLibrary.k1ar7n8i005`):e.$t(`assetLibrary.k1hhga4h014`)),9,Ge),g(`button`,{class:`upload-btn`,disabled:E(u),onClick:ee},o(e.$t(`assetLibrary.k3xdnn004`)),9,Ke)])],64)):E(u)?(s(),v(`span`,qe,o(e.$t(`assetLibrary.k1ar7n8i005`)),1)):x(``,!0),E(d)&&!E(f)?(s(),v(`span`,Je,o(E(d)),1)):x(``,!0)],34),g(`div`,Ye,[(s(!0),v(b,null,l(E(r),n=>(s(),v(`div`,{key:n.id,class:`model-card`,"data-model-id":n.id,draggable:`true`,title:n.hint||e.$t(`assetLibrary.katn7lo015`,{p0:n.name}),onDragstart:e=>a(e,n.id)},[i(n.file)?(s(),te(R,{key:0,file:n.file,height:76},null,8,[`file`])):(s(),v(`span`,Ze,[...t[4]||=[g(`span`,{class:`i-tabler-cpu glb-cube`,"aria-hidden":`true`},null,-1)]])),g(`span`,Qe,o(n.name),1),g(`span`,V,o(e.$t(`assetLibrary.k1n32zs0006`)),1),g(`div`,H,[n.file.includes(`/assets/game/devices/`)?(s(),v(`button`,{key:0,class:`card-btn danger`,disabled:E(w)===n.id,onClick:e=>T(n.id)},o(E(w)===n.id?`…`:e.$t(`assetLibrary.k498l011`)),9,$e)):x(``,!0)])],40,Xe))),128)),E(n).loaded?E(r).length===0?(s(),v(`div`,tt,o(e.$t(`assetLibrary.k15527e1008`)),1)):x(``,!0):(s(),v(`div`,et,[t[5]||=g(`span`,{class:`loading-dot`},null,-1),D(` `+o(e.$t(`assetLibrary.k1kq2tmi007`)),1)]))]),E(ne)?(s(),v(`span`,nt,o(E(ne)),1)):x(``,!0)]))}}),[[`__scopeId`,`data-v-3d6a30ed`]]),{__name:`WorkshopAssetLibrary`}),it=[`innerHTML`],at=Object.assign(a({__name:`DaqTemplateIcon`,props:{icon:{}},setup(e){let t=e,n={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"/>`},r=m(()=>n[t.icon]??n.gateway);return(e,t)=>(s(),v(`svg`,{viewBox:`0 0 24 24`,innerHTML:E(r)},null,8,it))}}),{__name:`WorkshopDaqTemplateIcon`}),ot={class:`twin-panel`},st={class:`twin-head`},ct={class:`twin-kicker`},lt={class:`twin-count`},ut={key:0,class:`twin-error`},U={key:1,class:`twin-empty`},W={key:2,class:`twin-empty`},dt={class:`twin-empty-frame`},ft={class:`twin-empty-title`},pt={class:`twin-empty-sub`},mt={key:3,class:`twin-list`},ht=[`onClick`],gt={class:`twin-row`},_t={class:`twin-model-tag`},vt={class:`twin-idbar`},yt={class:`twin-name`},bt={class:`twin-code`},xt=[`disabled`,`title`,`onClick`],St={key:0,class:`twin-tele`},Ct={key:1,class:`twin-daq`},wt={key:2,class:`twin-dcw`},Tt={class:`dcw-head`},Et={key:0,class:`dcw-src`},Dt={class:`dcw-set`},Ot=[`title`],kt={key:0,class:`dcw-act-at`},At={class:`dcw-win`},G=[`title`],jt={class:`dcw-ctrl`},Mt=[`onUpdate:modelValue`,`step`,`min`,`max`,`placeholder`,`onKeydown`],Nt=[`disabled`,`title`,`onClick`],Pt={key:1,class:`dcw-err`},Ft={key:4,class:`twin-err`},It=Object.assign(M(a({__name:`DeviceTwinPanel`,props:{daqLive:{},dcwLive:{}},emits:[`focus-device`],setup(e){let{t}=le(),a=je(),u=Ae(),d=e=>e.kind===`daq`||(e.modelRef??``).startsWith(`daq-`),f=null;i(()=>{a.load(),f=j(()=>void a.load(),2e3)}),r(()=>{f&&clearInterval(f)});let p=C(``),m=C(``),_=C(``),y=null;async function ee(e){if(_.value!==e.id){_.value=e.id,y&&clearTimeout(y),y=setTimeout(()=>{_.value=``},3e3);return}y&&clearTimeout(y),_.value=``,p.value=e.id,m.value=``;try{await a.remove(e.id)}catch(e){m.value=I(e)}finally{p.value=``}}let te={idle:`var(--hud-amber)`,running:`var(--hud-ok)`,alarm:`var(--hud-danger)`,offline:`var(--hud-dim)`},w={idle:`STANDBY`,running:`RUNNING`,alarm:`ALARM`,offline:`OFFLINE`},ne=e=>e.replace(/[^A-Za-z0-9]/g,``).slice(0,4).toUpperCase()||`DEV`,T=e=>e.replace(/^dev-/,``).replace(/[^a-z0-9]/gi,``).slice(-6).toUpperCase(),re=e=>typeof e==`number`?(Math.round(e*100)/100).toString():String(e),O=e=>`${Number.isFinite(e.lo)?e.lo:`-∞`} ~ ${Number.isFinite(e.hi)?e.hi:`+∞`} ${e.unit}`,k=h({}),oe=h({}),se=C(``);function ce(e){let n=k[e.id];if(n==null||n===``)return;let r=Number(n);if(r<e.lo||r>e.hi){oe[e.id]=t(`deviceTwinPanel.kxddket010`,{p0:e.src===`recipe`?t(`deviceTwinPanel.kq2jssk008`):t(`deviceTwinPanel.k1iwj796009`),p1:O(e)});return}oe[e.id]=``,se.value=e.id,u.write(e.id,r).then(t=>{t.ok||(oe[e.id]=t.message)}).catch(t=>{oe[e.id]=I(t)}).finally(()=>{se.value=``})}return(t,r)=>(s(),v(`aside`,ot,[g(`div`,st,[g(`span`,ct,o(t.$t(`deviceTwinPanel.k7k6evr002`)),1),g(`span`,lt,o(E(a).twins.length),1)]),E(a).error?(s(),v(`div`,ut,o(E(a).error),1)):x(``,!0),E(a).loaded?E(a).twins.length===0?(s(),v(`div`,W,[g(`div`,dt,[g(`div`,ft,o(t.$t(`deviceTwinPanel.k13y2qmg004`)),1),g(`div`,pt,o(t.$t(`deviceTwinPanel.kotf23l005`)),1)])])):(s(),v(`div`,mt,[(s(!0),v(b,null,l(E(a).twins,i=>(s(),v(`button`,{key:i.id,class:c([`twin-card`,{daq:d(i)}]),type:`button`,onClick:e=>t.$emit(`focus-device`,i)},[g(`div`,gt,[g(`span`,_t,o(ne(i.modelRef||i.name)),1),g(`div`,vt,[g(`span`,yt,o(i.name),1),g(`span`,bt,o(d(i)?`DAQ`:T(i.id)),1)]),g(`button`,{class:c([`twin-del`,{armed:E(_)===i.id}]),disabled:E(p)===i.id,title:E(_)===i.id?`再次点击确认删除该设备实例`:`删除该设备实例`,onClick:ae(e=>ee(i),[`stop`])},o(E(_)===i.id?t.$t(`deviceTwinPanel.k44653007`):`✕`),11,xt),g(`span`,{class:c([`twin-state`,`s-${i.state}`])},[g(`i`,{class:`twin-state-dot`,style:n({background:te[i.state]||`var(--hud-dim)`})},null,4),D(` `+o(w[i.state]||i.state),1)],2)]),Object.keys(i.telemetry).length?(s(),v(`div`,St,[(s(!0),v(b,null,l(i.telemetry,(e,t)=>(s(),v(`span`,{key:t,class:`tele-item`},[g(`em`,null,o(t),1),g(`b`,null,o(re(e)),1)]))),128))])):x(``,!0),e.daqLive?.[i.id]?.length?(s(),v(`div`,Ct,[(s(!0),v(b,null,l(e.daqLive[i.id],(e,t)=>(s(),v(`span`,{key:`${e.ch}-${t}`,class:c([`daq-item`,{alarm:e.alarm}])},[g(`em`,null,o(e.ch),1),g(`b`,null,[D(o(e.value),1),g(`i`,null,o(e.unit),1)])],2))),128))])):x(``,!0),e.dcwLive?.[i.id]?.length?(s(),v(`div`,wt,[(s(!0),v(b,null,l(e.dcwLive[i.id],e=>(s(),v(`div`,{key:e.id,class:`dcw-item`},[g(`div`,Tt,[g(`em`,null,[D(o(e.ch),1),e.src===`recipe`?(s(),v(`i`,Et,o(t.$t(`deviceTwinPanel.k48grv006`)),1)):x(``,!0)]),g(`b`,Dt,[D(o(e.value==null?`--`:e.value.toFixed(e.decimals)),1),g(`i`,null,o(e.unit),1)])]),e.readValue!=null||e.lastReadAt?(s(),v(`div`,{key:0,class:`dcw-act`,title:t.$t(`deviceTwinPanel.k9r7d4e030`)},[r[0]||=g(`em`,null,`ACT`,-1),g(`b`,null,[D(o(e.readValue==null?`--`:e.readValue.toFixed(e.decimals)),1),g(`i`,null,o(e.unit),1)]),e.lastReadAt?(s(),v(`i`,kt,o(e.lastReadAt.slice(11,19)),1)):x(``,!0)],8,Ot)):x(``,!0),g(`div`,At,[g(`span`,{title:e.src===`recipe`?`当前运行配方工艺窗口`:`节点全局量程`},o(O(e)),9,G)]),g(`div`,jt,[S(g(`input`,{"onUpdate:modelValue":t=>E(k)[e.id]=t,type:`number`,class:`ctrl-input`,step:10**-e.decimals,min:Number.isFinite(e.lo)?e.lo:void 0,max:Number.isFinite(e.hi)?e.hi:void 0,placeholder:`${Number.isFinite(e.lo)?e.lo:``} ~ ${Number.isFinite(e.hi)?e.hi:``}`,onKeydown:ie(t=>ce(e),[`enter`])},null,40,Mt),[[A,E(k)[e.id],void 0,{number:!0}]]),g(`button`,{class:`ctrl-btn dcw-send`,disabled:E(k)[e.id]==null||E(k)[e.id]===``||E(se)===e.id,title:t.$t(`deviceTwinPanel.k1j04u8001`),onClick:ae(t=>ce(e),[`stop`])},o(E(se)===e.id?`···`:`SET`),9,Nt)]),E(oe)[e.id]?(s(),v(`small`,Pt,o(E(oe)[e.id]),1)):x(``,!0)]))),128))])):x(``,!0)],10,ht))),128))])):(s(),v(`div`,U,o(t.$t(`deviceTwinPanel.kkw7sn5003`)),1)),E(m)?(s(),v(`span`,Ft,o(E(m)),1)):x(``,!0)]))}}),[[`__scopeId`,`data-v-37ad3127`]]),{__name:`WorkshopDeviceTwinPanel`}),Lt=`__sceneLayouts`;function Rt(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 zt(){let e=null,t=e=>new Promise(t=>setTimeout(t,e)),n=h({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:Me()},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:Rt(),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:Rt()}),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:Rt()});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=I(n),r<2&&await t(400*(r+1))}n.loaded=!1,n.error=e}finally{n.loading=!1}}return n}function Bt(){let e=globalThis;e[Lt]||(e[Lt]=zt());let t=e[Lt];return t.load(),t}function Vt(e){return d()?(T(e),!0):!1}var Ht=typeof window<`u`&&typeof document<`u`;typeof WorkerGlobalScope<`u`&&globalThis instanceof WorkerGlobalScope;var Ut=Object.prototype.toString,Wt=e=>Ut.call(e)===`[object Object]`,Gt=()=>{};function Kt(...e){if(e.length!==1)return u(...e);let t=e[0];return typeof t==`function`?_(w(()=>({get:t,set:Gt}))):C(t)}function qt(e,t){function n(...n){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(r).catch(i)})}return n}var Jt=e=>e();function Yt(e=Jt,t={}){let{initialState:n=`active`}=t,r=Kt(n===`active`);function i(){r.value=!1}function a(){r.value=!0}return{isActive:_(r),pause:i,resume:a,eventFilter:(...t)=>{r.value&&e(...t)}}}function Xt(e){return Array.isArray(e)?e:[e]}function Zt(e){return e||t()}function Qt(t,n,r={}){let{eventFilter:i=Jt,...a}=r;return e(t,qt(i,n),a)}function $t(e,t,n={}){let{eventFilter:r,initialState:i=`active`,...a}=n,{eventFilter:o,pause:s,resume:c,isActive:l}=Yt(r,{initialState:i});return{stop:Qt(e,t,{...a,eventFilter:o}),pause:s,resume:c,isActive:l}}function en(e,t=!0,n){Zt(n)?i(e,n):t?e():ee(e)}function tn(t,n,r){return e(t,n,{...r,immediate:!0})}var nn=Ht?window:void 0;Ht&&window.document,Ht&&window.navigator,Ht&&window.location;function rn(e){let t=O(e);return t?.$el??t}function an(...e){let t=[],n=()=>{t.forEach(e=>e()),t.length=0},r=(e,t,n,r)=>(e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)),i=m(()=>{let t=Xt(O(e[0])).filter(e=>e!=null);return t.every(e=>typeof e!=`string`)?t:void 0}),a=tn(()=>[i.value?.map(e=>rn(e))??[nn].filter(e=>e!=null),Xt(O(i.value?e[1]:e[0])),Xt(E(i.value?e[2]:e[1])),O(i.value?e[3]:e[2])],([e,i,a,o])=>{if(n(),!e?.length||!i?.length||!a?.length)return;let s=Wt(o)?{...o}:o;t.push(...e.flatMap(e=>i.flatMap(t=>a.map(n=>r(e,t,n,s)))))},{flush:`post`});return Vt(n),()=>{a(),n()}}var K=typeof globalThis<`u`?globalThis:typeof window<`u`?window:typeof global<`u`?global:typeof self<`u`?self:{},on=`__vueuse_ssr_handlers__`,sn=cn();function cn(){return on in K||(K[on]=K[on]||{}),K[on]}function q(e,t){return sn[e]||t}function ln(e){return e==null?`any`:e instanceof Set?`set`:e instanceof Map?`map`:e instanceof Date?`date`:typeof e==`boolean`?`boolean`:typeof e==`string`?`string`:typeof e==`object`?`object`:Number.isNaN(e)?`any`:`number`}var un={boolean:{read:e=>e===`true`,write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},dn=`vueuse-storage`;function fn(t,n,r,i={}){let{flush:a=`pre`,deep:o=!0,listenToStorageChanges:s=!0,writeDefaults:c=!0,mergeDefaults:l=!1,shallow:u,window:d=nn,eventFilter:f,onError:p=e=>{console.error(e)},initOnMounted:h}=i,g=(u?y:C)(typeof n==`function`?n():n),_=m(()=>O(t));if(!r)try{r=q(`getDefaultStorage`,()=>nn?.localStorage)()}catch(e){p(e)}if(!r)return g;let v=O(n),b=ln(v),x=i.serializer??un[b],{pause:S,resume:te}=$t(g,e=>T(e),{flush:a,deep:o,eventFilter:f});e(_,()=>E(),{flush:a});let w=!1;d&&s&&(r instanceof Storage?an(d,`storage`,e=>{h&&!w||E(e)},{passive:!0}):an(d,dn,e=>{h&&!w||D(e)})),h?en(()=>{w=!0,E()}):E();function ne(e,t){if(d){let n={key:_.value,oldValue:e,newValue:t,storageArea:r};d.dispatchEvent(r instanceof Storage?new StorageEvent(`storage`,n):new CustomEvent(dn,{detail:n}))}}function T(e){try{let t=r.getItem(_.value);if(e==null)ne(t,null),r.removeItem(_.value);else{let n=x.write(e);t!==n&&(r.setItem(_.value,n),ne(t,n))}}catch(e){p(e)}}function re(e){let t=e?e.newValue:r.getItem(_.value);if(t==null)return c&&v!=null&&r.setItem(_.value,x.write(v)),v;if(!e&&l){let e=x.read(t);return typeof l==`function`?l(e,v):b===`object`&&!Array.isArray(e)?{...v,...e}:e}return typeof t==`string`?x.read(t):t}function E(e){if(!(e&&e.storageArea!==r)){if(e&&e.key==null){g.value=v;return}if(!(e&&e.key!==_.value)){S();try{let t=x.write(g.value);(e===void 0||e?.newValue!==t)&&(g.value=re(e))}catch(e){p(e)}finally{e?ee(te):te()}}}}function D(e){E(e.detail)}return g}var pn={class:`town-view`},mn={class:`brand`},hn={class:`brand-sub`},gn=[`aria-label`],_n={class:`seg`},vn=[`disabled`,`title`],yn={class:`nav-right`},bn=[`title`],xn={class:`nav-chip mono nav-fps`},Sn=[`title`],Cn={class:`avatar-fallback`},wn=[`aria-expanded`,`title`],Tn={class:`sheet-btn-t`},En=[`aria-expanded`,`title`],Dn={class:`sheet-btn-t`},On={class:`app`},kn={class:`sheet-hd`},An={class:`sheet-hd-t`},jn={class:`panel`},Mn={class:`panel-hd`},Nn={class:`panel-tag`},Pn={class:`panel`},Fn={class:`panel-hd`},In={class:`panel-tag`},Ln={class:`daq-ctrl`},Rn=[`title`],zn=[`title`],Bn=[`value`],Vn={class:`daq-list`},Hn=[`title`,`onClick`,`onKeydown`],Un={class:`daq-ico`},Wn={class:`daq-meta`},Gn={class:`daq-name`},Kn={class:`daq-code`},qn=[`title`,`onClick`],Jn={class:`daq-count`},Yn={key:0,class:`daq-children`},Xn=[`draggable`,`title`,`onDragstart`,`onClick`],Zn={class:`daq-meta`},Qn={class:`daq-name`},$n={class:`daq-node-sub`},er={class:`node-val mono`},tr={class:`node-dev`},nr={key:0,class:`scene-cur`},rr={key:0,class:`daq-empty-hint`},ir={class:`panel`},ar={class:`panel-hd`},or={class:`panel-tag`},sr={class:`daq-list`},cr=[`title`,`onClick`,`onKeydown`],lr={class:`daq-ico`},ur={class:`daq-meta`},dr={class:`daq-name`},fr={class:`daq-code`},pr=[`title`,`onClick`],mr={class:`daq-count`},hr={key:0,class:`daq-children`},gr=[`draggable`,`title`,`onDragstart`,`onClick`],_r={class:`daq-meta`},vr={class:`daq-name`},yr={class:`daq-node-sub`},br={class:`node-val mono`},xr={class:`node-dev`},Sr={key:0,class:`scene-cur`},Cr={key:0,class:`daq-empty-hint`},wr={class:`panel`},Tr={class:`panel-hd`},Er={class:`panel-tag`},Dr={class:`scene-list`},Or=[`draggable`,`data-channel-id`,`title`,`onDragstart`,`onClick`],kr={class:`scene-meta-wrap`},Ar={class:`scene-name`},jr={class:`scene-meta`},Mr={key:0,class:`scene-cur`},Nr={key:1,class:`scene-add`},Pr={key:0,class:`scene-hint`},Fr={class:`stage-col`},Ir={class:`stage-top`},Lr={class:`vp-title`},Rr={class:`vp-id`},zr={class:`vp-tools`},Br=[`title`],Vr=[`title`],Hr=[`title`],Ur=[`title`],Wr={class:`angle-chip`},Gr=[`value`,`aria-label`],Kr={value:`std`},qr={class:`leaders`},Jr=[`d`,`stroke`],Yr=[`cx`,`cy`,`fill`],Xr={class:`callout-layer`},Zr=[`title`,`onClick`],Qr={class:`co-label`},$r={class:`co-val`},ei={class:`co-range`},ti={class:`kpi-strip`},ni={class:`kpi`},ri={class:`kpi-meta`},ii={class:`kpi-label`},ai={class:`kpi-val`},oi={class:`kpi`},si={class:`kpi-meta`},ci={class:`kpi-label`},li={class:`kpi-val`},ui={class:`kpi`},di={class:`kpi-meta`},fi={class:`kpi-label`},pi={class:`kpi-val`},mi={class:`kpi`},hi={class:`kpi-meta`},gi={class:`kpi-label`},_i={class:`kpi-val`},vi={class:`kpi`},yi={class:`kpi-meta`},bi={class:`kpi-label`},xi={class:`kpi-val`},Si={key:1,class:`empty-hint`},Ci=[`title`],wi={class:`bp-name`},Ti={class:`bp-sub`},Ei={class:`bp-tabs`},Di={class:`bp-row`},Oi={class:`bp-label`},ki={class:`bp-seg`},Ai={class:`bp-row`},ji={class:`bp-label`},Mi={class:`bp-val`},Ni={class:`bp-row`},Pi={class:`bp-label`},Fi={class:`bp-val`},Ii={class:`bp-row`},Li={class:`bp-label`},Ri={class:`bp-val`},zi={class:`bp-hint`},Bi={class:`member-list`},Vi={class:`member-info`},Hi={class:`member-name`},Ui=[`value`,`onChange`],Wi=[`value`],Gi={key:0,class:`bp-hint`},Ki={class:`bp-actions`},qi={key:3,class:`drop-chip`},Ji={key:4,class:`error-chip`},Yi={key:5,"data-hud":`town-loading`,class:`loading-mask`},Xi={class:`loading-text`},Zi=[`aria-expanded`],Qi={class:`dock-toggle-t`},$i={class:`dock-toggle-hint mono`},ea={id:`town-dock-controls`,class:`dock-card`},ta={class:`dock-hd`},na={class:`dock-mode`},ra={class:`ctl-sec`},ia={class:`ctl-row`},aa=[`title`],oa={class:`fps-seg`},sa=[`onClick`],ca={class:`ctl-row`},la=[`title`],ua={class:`fps-seg`},da=[`onClick`],fa={class:`ctl-sec`},pa={class:`ctl-row`},ma={class:`ctl-name`},ha=[`value`],ga={class:`ctl-val`},_a={class:`ctl-row`},va={class:`ctl-name`},ya=[`value`],ba={class:`ctl-val`},xa={class:`ctl-row`},Sa={class:`ctl-name`},Ca=[`value`],wa={class:`ctl-val`},Ta={class:`ctl-row`},Ea=[`title`],Da=[`value`],Oa={class:`ctl-val`},ka={class:`ctl-sec`},Aa={class:`ctl-row`},ja={class:`ctl-name`},Ma={class:`ctl-btns`},Na=[`disabled`,`title`],Pa={class:`dock-card`},Fa={class:`dock-hd`},Ia={class:`dock-count mono`},La=[`onClick`],Ra=[`title`],za={class:`trend-wrap`},Ba={key:0,class:`trend-empty`},Va={class:`sheet-hd`},Ha={class:`sheet-hd-t`},Ua={key:0,class:`panel inspector`},Wa={class:`panel-hd`},Ga=[`title`],Ka={class:`ins-chip-row`},qa={class:`ins-chip mono`},Ja={key:0,class:`ins-chip accent`},Ya={key:1,class:`ins-chip accent`},Xa={key:0,class:`daq-info`},Za={class:`daq-info-row`},Qa={class:`cy`},$a={class:`daq-info-row`},eo={class:`daq-info-row`},to={class:`daq-bind-bar`},no=[`step`,`placeholder`],ro=[`disabled`],io={key:0,class:`dcw-err`},ao={key:1,class:`daq-bind-bar`},oo={value:``},so=[`value`],co=[`disabled`],lo={key:1,class:`daq-info`},uo={class:`daq-info-row`},fo={class:`cy`},po={class:`daq-info-row`},mo={class:`daq-info-row`},ho={key:0,class:`daq-bind-bar`},go={value:``},_o=[`value`],vo=[`disabled`],yo={key:1,class:`daq-node-ctl`},bo={class:`daq-info-row`},xo={class:`daq-th-inputs`},So={class:`daq-info-row`},Co={class:`daq-th-inputs`},wo=[`value`],To=[`value`],Eo={class:`daq-info-row`},Do={class:`daq-th-inputs`},Oo=[`value`],ko=[`value`],Ao={class:`daq-info-row`},jo={class:`daq-info-row`},Mo=[`title`],No={key:2,class:`ins-empty`},Po={class:`obj-row`},Fo={class:`obj-label`},Io=[`placeholder`,`disabled`,`title`],Lo={class:`obj-row`},Ro={class:`obj-label`},zo=[`value`,`disabled`],Bo=[`value`],Vo={class:`sect-hd`},Ho={class:`bind-ico`},Uo={class:`bind-meta`},Wo={class:`bind-label`},Go={class:`bind-val`},Ko=[`title`,`onClick`],qo={key:0,class:`ins-empty`},Jo={key:1,class:`bind-add-wrap`},Yo={key:0,class:`bp-group`},Xo={class:`bp-tpl`},Zo=[`data-node-id`,`title`,`onClick`],Qo={key:0,class:`bp-cur`},$o={key:1,class:`bp-cur`},es={key:0,class:`bp-empty`},ts={class:`sect-hd`},ns={class:`dcw-top`},rs={class:`bind-ico`},is={class:`dcw-id`},as={class:`bind-label`},os={key:0,class:`dcw-tag`},ss={class:`dcw-name`},cs={class:`dcw-cur`},ls=[`title`,`onClick`],us={class:`dcw-win-num`},ds={class:`dcw-win-track`},fs={class:`dcw-win-num`},ps={class:`dcw-write`},ms=[`onUpdate:modelValue`,`step`,`placeholder`,`onKeydown`],hs=[`disabled`,`title`,`onClick`],gs={key:0,class:`dcw-err`},_s={key:2,class:`ins-empty`},vs={key:3,class:`bind-add-wrap`},ys={key:0,class:`bp-group`},bs={class:`bp-tpl`},xs=[`data-node-id`,`title`,`onClick`],Ss={key:0,class:`bp-cur`},Cs={key:1,class:`bp-cur`},ws={key:0,class:`bp-empty`},Ts={class:`xz-seg`},Es={class:`scale-row`},Ds=[`value`],Os={class:`scale-val`},ks={class:`ins-foot`},As={key:5,class:`ins-empty`},js={class:`chat-id-row`},Ms={class:`chat-nameplate`},Ns={class:`chat-name`},Ps={class:`chat-meta`},Fs={key:0,class:`chat-harness`},Is={class:`chat-count`},Ls={class:`obj-row`},Rs={class:`obj-label`},zs=[`value`,`disabled`],Bs=[`value`],Vs={class:`obj-row`},Hs={class:`obj-label`},Us={class:`range-status`},Ws=[`title`],Gs={class:`sect-hd`},Ks={class:`bind-meta`},qs={class:`bind-label`},Js=[`value`,`title`,`onChange`],Ys={value:`auto`},Xs={value:`manual`},Zs=[`title`,`onClick`],Qs={key:0,class:`ins-empty`},$s={key:1,class:`daq-bind-bar`,style:{"margin-bottom":`8px`}},ec={value:`dcw`},tc={value:`daq`},nc={value:``},rc=[`value`],ic=[`value`],ac={value:`auto`},oc={value:`manual`},sc=[`disabled`],cc={class:`sect-hd`,style:{color:`var(--hud-amber)`}},lc={class:`approval-detail`},uc=[`onUpdate:modelValue`,`placeholder`],dc={class:`daq-bind-bar`,style:{"margin-top":`5px`}},fc=[`onClick`],pc=[`onClick`],mc={class:`obj-row`},hc={class:`obj-label`},gc={class:`bp-seg`},_c={class:`obj-row`},vc={class:`obj-label`},yc={class:`bp-val`},bc={class:`obj-row`},xc={class:`obj-label`},Sc={class:`bp-val`},Cc={key:4,class:`ins-empty`},wc={class:`sect-hd chat-sect`},Tc=[`title`],Ec={key:0,class:`rpg-note`},Dc={class:`rpg-divider`},Oc={class:`rpg-time`},kc={class:`rpg-bubble`},Ac={class:`rpg-text`},jc={key:2,class:`rpg-divider live`},Mc={class:`rpg-time`},Nc={class:`rpg-bubble`},Pc={class:`rpg-text`},Fc={key:3,class:`rpg-typing`},Ic={class:`ty-label`},Lc={key:4,class:`rpg-note`},Rc={class:`panel`},zc={class:`panel-hd`},Bc={class:`health-body`},Vc={class:`donut-wrap`},Hc={class:`donut-center`},Uc={class:`health-legend`},Wc={class:`hl-row`},Gc={class:`n`},Kc={class:`hl-row`},qc={class:`n`},Jc={class:`hl-row`},Yc={class:`n`},Xc={class:`hl-row`},Zc={class:`n`},Qc={class:`panel`},$c={class:`panel-hd`},el={class:`panel-tag`},tl={class:`panel`},nl={class:`panel-hd`},rl={class:`panel-tag`},il=[`title`],al={class:`alarm-list`},ol={class:`al-body`},sl={class:`al-txt`},cl={class:`al-src`},ll=[`onClick`],ul={key:0,class:`rail-empty`},dl={class:`panel`},fl={class:`panel-hd`},pl={class:`panel-tag`},ml={class:`event-list`},hl={class:`ev-time`},gl=[`title`],_l=[`title`],vl={key:0,class:`rail-empty`},yl={class:`panel`},bl={class:`panel-hd`},xl={class:`mm-body`},Sl=[`title`],Cl={class:`mm-col`},wl=[`title`],Tl=[`title`],El=[`title`],Dl={class:`mm-meta mono`},Ol={class:`statusbar`},kl={class:`sb-stats`},Al={class:`sb-lat mono`},jl={class:`copy`},Ml={key:1,"data-hud":`town-loading`,class:`loading-mask`},Nl={class:`loading-text`},Pl=`aw-town-panel-pos`,Fl=3200,Il=2400,Ll=3e4,Rl=80,zl=120,Bl=104,Vl=8,Hl=1600,Ul=Object.assign(M(a({__name:`TownView`,props:{channelId:{},allChannels:{type:Boolean}},setup(t){let{t:a}=le(),u=t,d=Ee(),_=Te(),{conn:te}=De(),w=ue(),T=Ie(),O=je(),M=Bt(),me=fe(),{isDesktop:he}=we(),N=C(null),ge=C(!1);function _e(e){N.value=N.value===e?null:e}function ve(){N.value=null}function ye(e){e.key===`Escape`&&N.value&&ve()}i(()=>window.addEventListener(`keydown`,ye)),r(()=>window.removeEventListener(`keydown`,ye)),e(he,e=>{e&&(N.value=null,ge.value=!1)});let xe=C(null),P=y(null),Se=y(null),F=y(null),Ce=typeof window<`u`?new URLSearchParams(location.search).get(`render`)!==`2d`:!0,Me=C(!1),Ne=C(0),Pe=C(0),Fe=C(0),Le=C(null),L=C(null),R=C(``),Re=m(()=>te.state===`connecting`),ze=m(()=>d.channels[u.channelId]?.name??``),z=C(`browse`),Be=C(!0),B=C(null),Ve=m(()=>{switch(B.value?.state){case`dirty`:return a(`townView.k3oo50k155`);case`saving`:return a(`townView.k1b38d59156`);case`saved`:return a(`townView.k3n51yk157`);case`error`:return a(`townView.k1b3ayhc158`);default:return``}});function He(){z.value=z.value===`browse`?`edit`:`browse`,F.value?.setMode(z.value),z.value===`browse`&&(Qe(),$e(null)),W.value=!1}let Ue=C(`translate`);function We(e){Ue.value=e,F.value?.setTransformMode(e)}e(()=>[L.value,z.value],([e,t])=>{t===`edit`&&e?.kind===`device`&&F.value?.setTransformMode(Ue.value)});function Ge(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`){Qe();return}z.value===`edit`&&L.value?.kind===`device`&&(n===`g`?We(`translate`):n===`r`?We(`rotate`):n===`s`?We(`scale`):(e.key===`Delete`||e.key===`Backspace`)&&bt())}function Ke(){Be.value=!Be.value,F.value?.setSnap(Be.value)}function qe(e,t,n,r){let i=t||u.channelId;return i?me.request({method:`PATCH`,url:`/workshop/channels/${i}/agents/${e}/position`,data:{x:n,z:r}}).catch(()=>null):Promise.resolve()}function Je(e,t,n){let r=t||u.channelId;return r?me.request({method:`PATCH`,url:`/workshop/channels/${r}/agents/${e}/range`,data:{range:n}}).catch(()=>null):Promise.resolve()}function Ye(){if(z.value!==`edit`){Ht();return}F.value?.persistAllDevices()}function Xe(e){L.value&&F.value?.setModelScale(L.value.id,e,L.value.kind)}function Ze(e){L.value&&F.value?.persistScale(L.value.kind,L.value.id)}function Qe(){L.value=null}let V=C(null),H=C(null);function $e(e){V.value=e,H.value=e?F.value?.getChannelLayout(e)??null:null}async function et(){if(!V.value||!H.value)return;let e=H.value,t={x:e.x,z:e.z,radiusX:e.radiusX,radiusZ:e.radiusZ,shape:e.shape??`ellipse`,rotationY:e.rotationY??0};try{await M.save(V.value,t),B.value={state:`saved`,at:Date.now()}}catch(e){B.value={state:`error`,at:Date.now()},R.value=I(e)}}async function tt(){if(V.value)try{await M.remove(V.value),F.value?.removeChannel(V.value),$e(null)}catch(e){R.value=I(e)}}function nt(){!V.value||!H.value||(F.value?.updateChannelLayout(V.value,H.value),B.value={state:`dirty`,at:Date.now()})}let it=C(``);function ot(e){let t=F.value;if(t){if(e.placed){t.focusChannel(e.channelId),$e(e.channelId);return}it.value=a(`townView.k7rvbts159`),window.setTimeout(()=>{it.value=``},2600)}}function st(e,t,n){let r=F.value;if(!r)return!1;let i=G().find(t=>t.channelId===e),o=i?.channelName??d.channels[e]?.name??e.slice(0,8),s=i?.agents.length??d.agents[e]?.length??0;return r.getChannelLayout(e)?(it.value=a(`townView.kcyn0191`,{p0:o}),window.setTimeout(()=>{it.value=``},2600),r.focusChannel(e),$e(e),!1):(r.dropChannelOnWorld(t,n,e,o,s),M.save(e,{x:t,z:n,radiusX:Math.max(120,110+s*18),radiusZ:Math.max(80,70+s*14),shape:`ellipse`,rotationY:0}).then(()=>{B.value={state:`saved`,at:Date.now()}}).catch(()=>{B.value={state:`error`,at:Date.now()}}),r.focusChannel(e),!0)}let ct=m(()=>T.models.filter(e=>e.kind===`glb`)),lt=m(()=>T.models.filter(e=>e.kind===`dev`)),ut=C(``),U=C(null),W=C(!1);e(()=>L.value,e=>{if(ut.value=e?.kind===`device`?F.value?.getDeviceName?.(e.id)??``:``,U.value=null,e?.kind===`agent`){let t=F.value?.getAgentRange?.(e.id);U.value=t?{radiusX:t.radiusX,radiusZ:t.radiusZ,shape:t.shape}:null,W.value=F.value?.isRangeDrawing(e.id)??!1}else W.value=!1});let dt=m(()=>{let e=L.value;if(!e||e.kind!==`agent`)return``;let t=F.value?.getAgentRange?.(e.id);return t?`${t.shape===`rect`?a(`townView.k43u0g050`):a(`townView.k414bc049`)} ${Math.round(t.radiusX)} × ${Math.round(t.radiusZ)}`:a(`townView.k1v1icf6160`)});function ft(){let e=L.value;if(!(!e||e.kind!==`agent`)){if(W.value){F.value?.cancelRangeDraw(),W.value=!1;return}F.value?.startRangeDraw(e.id),W.value=!0}}function pt(){!L.value||L.value.kind!==`agent`||!U.value||(F.value?.setAgentRangeScene(L.value.id,U.value),B.value={state:`dirty`,at:Date.now()})}function mt(){!L.value||L.value.kind!==`agent`||F.value?.commitAgentRange(L.value.id)}function ht(){let e=L.value;!e||e.kind!==`agent`||(F.value?.clearAgentRange(e.id),U.value=null,W.value=!1)}function gt(){if(!L.value||L.value.kind!==`device`)return;let e=L.value.id,t=ut.value.trim();t&&(F.value?.renameDevice(e,t),O.update(e,{name:t}).catch(e=>{R.value=I(e)}))}async function _t(e){let t=L.value;if(!t||t.kind!==`agent`)return;let n=t.id,r=d.agents?Object.keys(d.agents).find(e=>(d.agents[e]??[]).some(e=>e.agentId===n)):void 0;if(!r){R.value=a(`townView.kpplr16161`);return}try{await T.bind(r,n,e),F.value?.swapAgentModel(n,e)}catch(e){R.value=I(e)}}async function vt(e){let t=L.value;if(!(!t||t.kind!==`device`)){F.value?.swapDeviceModel(t.id,e);try{await O.update(t.id,{modelRef:e})}catch(e){R.value=I(e)}}}let yt=C(``);function bt(){let e=L.value;if(!(!e||e.kind!==`device`)){if(yt.value!==e.id){yt.value=e.id,window.setTimeout(()=>{yt.value===e.id&&(yt.value=``)},3e3);return}yt.value=``,F.value?.removeDevice(e.id).then(()=>Qe()).catch(e=>{R.value=I(e)})}}let xt=C(`boundary`),St=m(()=>V.value?G().find(e=>e.channelId===V.value)?.agents??[]:[]);async function Ct(e,t){if(V.value)try{await T.bind(V.value,e,t),F.value?.swapAgentModel(e,t)}catch(e){R.value=I(e)}}function wt(e){xt.value=e}let Tt=C(0),Et=m(()=>(Tt.value,Dt().map(e=>({channelId:e,name:d.channels[e]?.name??e.slice(0,8),agentCount:(d.agents[e]??[]).length,placed:F.value?.hasChannel(e)??!1,color:kt(e)}))));function Dt(){let e=[];for(let t of Ot()??[])for(let n of t.channelIds??[])e.includes(n)||e.push(n);return e.includes(u.channelId)||e.push(u.channelId),e}function Ot(){return _.workspaces}function kt(e){return be(e)}function At(e,t){e.dataTransfer&&(e.dataTransfer.setData(`application/x-aw-channel`,t),e.dataTransfer.setData(`text/plain`,t),e.dataTransfer.effectAllowed=`copy`)}function G(){let e=[];for(let[t,n]of Object.entries(d.channels)){let r=(d.agents[t]??[]).map(e=>{let n=e.currentTaskId?(d.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:n?.title??null,currentTaskProgress:e.currentTaskProgress??n?.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:n.name,agents:r})}return e}function jt(e){!e||!(`registerModelsFromList`in e)||(`screenToWorld`in e?e.registerModelsFromList(T.models.map(e=>({id:e.id,file:e.file,name:e.name,kind:e.kind,hFactor:e.hFactor??1}))):e.registerModelsFromList(T.models.map(e=>({id:e.id,file:e.file,name:e.name}))))}e(()=>T.models.map(e=>`${e.id}:${e.file}`).join(`|`),()=>jt(P.value));async function Mt(){P.value||!xe.value||(Ce?await Nt():await Pt())}async function Nt(){let e=xe.value;if(!e)return;let[{TownScene3D:t}]=await Promise.all([ce(()=>import(`./B7gZokg82.js`),__vite__mapDeps([0,1,2,3]),import.meta.url)]),n=new t(G(),e);n.resolveTaskAssignee=e=>d.tasks[u.channelId]?.find(t=>t.id===e)?.assigneeId??null,n.devices={async create(e){return{id:(await O.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(J.nodeById(e)){await J.saveTransform(e,t.posX,t.posZ);return}await O.update(e,t)},async remove(e){if(J.nodeById(e)){await J.removeNode(e);return}await O.remove(e)},async control(e,t,n){return O.control(e,t,n)}},n.agentApi={async updateHome(e,t,n,r){return qe(e,t,n,r)},async updateRange(e,t,n){return Je(e,t,n)}},n.channelApi={async save(e,t){return M.save(e,t)}},P.value=n,jt(n),F.value=n,n.setFpsCap(Number(xf.value)),n.setQualityMode(wf.value),Ft(n),n.on(`select`,e=>{L.value=e}),n.on(`saveState`,e=>{B.value=e}),n.on(`selectChannel`,e=>{$e(e)}),n.on(`channelResized`,e=>{e&&V.value===e.channelId&&(H.value=e.layout)}),n.on(`agentRangeChanged`,e=>{if(e&&L.value?.kind===`agent`&&L.value.id===e.agentId){let t=F.value?.getAgentRange?.(e.agentId);U.value=t?{radiusX:t.radiusX,radiusZ:t.radiusZ,shape:t.shape}:null}}),Me.value=!0,Lt(n),Jf=ru(n),M.load().then(()=>{n.hydrate(G(),Object.values(M.layouts),eu.value),Kt()}).catch(e=>{R.value=a(`townView.k1hmf2ut192`,{p0:I(e)}),window.setTimeout(()=>{M.load()},2500)})}async function Pt(){let e=xe.value;if(!e)return;let[t,{TownScene:n}]=await Promise.all([ce(()=>import(`./BGkumHZ32.js`),[],import.meta.url),ce(()=>import(`./RYFtK4qZ2.js`),__vite__mapDeps([4,5,1,2]),import.meta.url)]),r=new n(G());P.value=r,jt(r),r.resolveTaskAssignee=e=>d.tasks[u.channelId]?.find(t=>t.id===e)?.assigneeId??null;let i=new t.Game({type:t.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:t.Scale.FIT,autoCenter:t.Scale.CENTER_BOTH},scene:r});Se.value=i,Ft(r),r.on(`ready`,()=>{Me.value=!0,Lt(r)})}function Ft(e){let t=e;t.on(`fps`,e=>{Ne.value=e}),t.on(`agentCount`,e=>{Pe.value=e}),t.on(`blockCount`,e=>{Fe.value=e,Tt.value++}),t.on(`lastActivity`,e=>{Le.value=e});let n=w.subscribe(t=>{try{if(t.type===`channel.snapshot`){e.rebuild(G()),P.value&&Wt(P.value),u.channelId&&e.focusChannel(u.channelId);return}if(t.type===`device.updated`){O.applyRemote(t.payload),P.value&&Wt(P.value);return}if(t.type===`device.created`){O.load().then(()=>{P.value&&Wt(P.value)});return}if(t.type===`device.deleted`){O.removeRemote(t.payload.id),P.value&&Wt(P.value);return}if(t.type===`scene.layout.saved`||t.type===`scene.layout.removed`){M.load().then(()=>{Gt(P.value),Kt()});return}let n=pe(t)?.bubble;n?.agentId&&Wl(n.agentId,n.kind,n.text,t.at,t.seq),e.handleTownEvent(t)}catch(e){R.value=I(e)}});P._off=n,window.__town={get scene(){return P.value},get game(){return Se.value},buildInput:G,get characterAssets(){return T}}}function Lt(e){if(`screenToWorld`in e){Ut(e);return}zt(e)}let Rt=[];function zt(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),Rt.push(()=>window.removeEventListener(`pointermove`,o)),Rt.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);tn.value=a})}let Vt=null;function Ht(){R.value=a(`townView.kt6xb5p162`),Vt&&clearTimeout(Vt),Vt=setTimeout(()=>{R.value=``},2600)}function Ut(e){let t=e.canvas;if(!t)return;let n=0,r=0,i=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(),n=2,r=t.clientX,i=t.clientY;return}t.button===0&&(e.tryStartPointerDrag(t.clientX,t.clientY)||(n=1,r=t.clientX,i=t.clientY))}});let a=t=>{if(e.isGizmoBusy?.())return;if(e.isPointerDragging()){e.movePointerDrag(t.clientX,t.clientY);return}if(!n)return;let a=t.clientX-r,o=t.clientY-i;r=t.clientX,i=t.clientY,n===1?e.orbitBy(a,o):e.panByScreen(a,o)},o=()=>{if(e.isPointerDragging()){e.endPointerDrag();return}n=0};window.addEventListener(`pointermove`,a),window.addEventListener(`pointerup`,o),Rt.push(()=>window.removeEventListener(`pointermove`,a)),Rt.push(()=>window.removeEventListener(`pointerup`,o)),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 n=t.dataTransfer;if(!n)return;if(z.value!==`edit`){Ht();return}let r=n.getData(`application/x-aw-channel`)||n.getData(`text/plain`);if(r&&Et.value.some(e=>e.channelId===r)){let n=e.screenToWorld(t.clientX,t.clientY);st(r,n.x,n.z);return}let i=n.getData(`application/x-aw-daq-node`);if(i){let n=J.nodeById(i);if(n){let r=e.screenToWorld(t.clientX,t.clientY);J.patchNode(i,{posX:Math.round(r.x),posZ:Math.round(r.z)}).then(()=>{if(!n.deviceBindingId){let e=Qu(r.x,r.z,95);e&&Xu(i,e.id)}}).catch(e=>{R.value=I(e)})}return}let a=n.getData(`application/x-aw-dcw-node`);if(a){let n=Y.nodes.find(e=>e.id===a);if(n){let r=e.screenToWorld(t.clientX,t.clientY);Y.patchNode(a,{posX:Math.round(r.x),posZ:Math.round(r.z)}).then(()=>{if(!n.deviceBindingId){let e=Qu(r.x,r.z,95);e&&Y.bindNode(a,e.id).catch(e=>{R.value=I(e)})}P.value&&Wt(P.value)}).catch(e=>{R.value=I(e)})}return}let o=n.getData(`application/x-aw-model`)||n.getData(`text/plain`);if(o){let n=e.screenToWorld(t.clientX,t.clientY),r=e.dropModelOnWorld(n.x,n.z,o);tn.value=r}})}function Wt(e){`syncDevices`in e&&e.syncDevices(eu.value)}e(()=>M.rev,e=>{let t=F.value;!t||!M.loaded||e===0||(t.hydrate(G(),Object.values(M.layouts),eu.value),Kt())});function Gt(e){if(!e||!(`applySceneLayouts`in e))return;let t=e;t.applySceneLayouts(Object.values(M.layouts)),t.rebuild(G())}function Kt(){M.load().finally(()=>{})}function qt(e){let t=F.value;t&&(typeof e.posX==`number`&&typeof e.posZ==`number`&&t.focusTo(e.posX,e.posZ),t.setSelected?.({kind:`device`,id:e.id}))}let Jt=h({});function Yt(){if(!(typeof localStorage>`u`))try{let e=JSON.parse(localStorage.getItem(Pl)||`{}`);for(let t of Object.keys(e))e[t]&&Number.isFinite(e[t].x)&&(Jt[t]=e[t])}catch{}}function Xt(){try{localStorage.setItem(Pl,JSON.stringify(Jt))}catch{}}let Zt=null;function Qt(e,t){let n=e.currentTarget,r=n.closest(`.drag-panel`),i=n.closest(`.town-frame`);if(!r||!i)return;e.preventDefault();let a=r.getBoundingClientRect(),o=i.getBoundingClientRect();r.style.left=`${a.left-o.left}px`,r.style.top=`${a.top-o.top}px`,r.style.bottom=`auto`,r.style.transform=`none`,Jt[t]={x:a.left-o.left,y:a.top-o.top},Zt={frame:i,panel:r,offX:e.clientX-a.left,offY:e.clientY-a.top},document.body.style.userSelect=`none`,document.body.style.cursor=`grabbing`;let s=e=>{let n=Zt;if(!n)return;let r=n.frame.getBoundingClientRect(),i=e.clientX-n.offX-r.left,a=e.clientY-n.offY-r.top,o=n.panel.offsetWidth,s=Math.max(-o+90,Math.min(i,r.width-30)),c=Math.max(4,Math.min(a,r.height-34));n.panel.style.left=`${s}px`,n.panel.style.top=`${c}px`,Jt[t]={x:s,y:c}},c=()=>{Zt=null,document.body.style.userSelect=``,document.body.style.cursor=``,window.removeEventListener(`pointermove`,s),window.removeEventListener(`pointerup`,c),Xt()};window.addEventListener(`pointermove`,s),window.addEventListener(`pointerup`,c)}Yt();let $t=y(null),en=e=>`#${e.toString(16).padStart(6,`0`)}`,tn=y(null),nn=m(()=>{let e=tn.value;return e?e.mode===`rebind`?a(`townView.kgz2nej193`,{p0:e.agentId?.slice(0,8)??a(`townView.k479op189`),p1:e.textureKey}):a(`townView.k5e2460194`,{p0:e.textureKey}):``}),rn=m(()=>{let e=L.value;if(!e||e.kind!==`agent`)return[];let t=Ul.get(e.id);if(!t||t.length===0)return[];let n=q.value.length?q.value[q.value.length-1]?.at??0:0;return t.filter(e=>e.at>n)}),an=m(()=>!L.value||L.value.kind!==`agent`?``:F.value?.getAgentName?.(L.value.id)??a(`townView.k3xdvm125`)),K=m(()=>{let e=L.value;if(!e||e.kind!==`agent`)return null;for(let t of Object.values(d.agents)){let n=(t??[]).find(t=>t.agentId===e.id);if(n)return n}return null}),on=m(()=>K.value?.role===`lead`?`Leader`:`Worker`),sn=m(()=>K.value?.role===`lead`?`LEADER`:`WORKER`),cn=m(()=>{let e=K.value?.state;return a(e===`busy`?`townView.k3n4l5f163`:e===`stopped`?`townView.k3n58d1164`:`townView.k3zcvb115`)}),q=C([]),ln=C(!1),un=new Map,dn=C(null),Ul=h(new Map);function Wl(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=Ul.get(e);o||(o=[],Ul.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>Rl&&o.splice(0,o.length-Rl))}function Gl(){return typeof document>`u`?``:document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``}function Kl(e){for(let t of Object.keys(d.agents))if((d.agents[t]??[]).some(t=>t.agentId===e))return t}async function ql(e,t,n=!1){let r=un.get(e);if(!n&&r&&Date.now()-r.at<Ll){q.value=r.rows;return}ln.value=!0;try{let n=Gl(),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=pe(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),un.set(e,{rows:o,at:Date.now()}),q.value=o}catch{q.value=[]}finally{ln.value=!1}}function Jl(){let e=L.value;if(!e||e.kind!==`agent`)return;let t=Kl(e.id);t&&ql(e.id,t,!0)}e(()=>L.value,e=>{if(!e||e.kind!==`agent`){q.value=[];return}let t=Kl(e.id);t?ql(e.id,t):q.value=[]},{immediate:!0});let Yl=m(()=>{let e=L.value;if(!e||e.kind!==`agent`)return`#35e0a0`;let t=Kl(e.id);return t?be(t)??`#35e0a0`:`#35e0a0`});function Xl(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 Zl(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`)}`}e(()=>q.value.length+rn.value.length,async()=>{await ee();let e=dn.value;e&&(e.scrollTop=e.scrollHeight)});let Ql=e=>Y.lines.find(t=>t.id===e)?.color,$l=m(()=>Y.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?Ql(e.lineId):void 0,updatedAt:e.lastWriteAt??e.createdAt}))),eu=m(()=>[...O.twins.filter(e=>!bu(e)),...X.value,...$l.value]),tu=e=>eu.value.find(t=>t.id===e),nu=m(()=>Me.value&&Fe.value===0&&!eu.value.some(e=>typeof e.posX==`number`&&typeof e.posZ==`number`));function ru(e){return j(()=>{O.load().then(()=>{if(P.value===e){e.syncDevices(eu.value);for(let t of e.getDeviceNodes()){let n=tu(t.twinId);n&&e.updateDeviceNode(t.twinId,n.state,n.telemetry)}}})},5e3)}let iu=y([]),J=ke(),Y=Ae(),au=h(Y.templates.map(e=>({id:e.key,name:e.name,code:e.code,ch:e.ch,unit:e.unit,min:e.min,max:e.max,decimals:e.decimals,icon:e.icon})));e(()=>Y.templates,e=>{e?.length&&au.splice(0,au.length,...e.map(e=>({id:e.key,name:e.name,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 ou=fn(`aw.twin.treeOpen`,{});function su(e){ou.value[e]=!ou.value[e]}let cu=m(()=>{let e=new Map;for(let t of J.nodes){let n=t.templateRef.startsWith(`daq-`)?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}),lu=m(()=>{let e=new Map;for(let t of Y.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 uu(e){try{let t=(cu.value.get(e.id)?.length??0)+1;await J.createFromTemplate(`daq-${e.id}`,{name:`${e.name} ${String(t).padStart(2,`0`)}`}),ou.value[`daq:${e.id}`]=!0}catch(e){R.value=I(e)}}async function du(e){try{await Y.createFromTemplate(`dcw-${e.id}`,{}),ou.value[`dcw:${e.id}`]=!0}catch(e){R.value=I(e)}}function fu(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 pu(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 mu(e){return!J.controller.running||!e.enabled||e.state===`offline`?`offline`:e.state===`alarm`?`alarm`:e.state===`warn`?`warn`:`running`}function hu(e){return!e.enabled||e.state===`error`?`offline`:`running`}let gu=h(Oe.map(e=>({id:e.key,name:e.name,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})));e(()=>J.templates,e=>{e?.length&&gu.splice(0,gu.length,...e.map(e=>({id:e.key,name:e.name,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 _u=e=>{let t=e.startsWith(`daq-`)?e.slice(4):e;return gu.find(e=>e.id===t)},vu=e=>_u(e.templateRef);function yu(e){return!J.controller.running||!e.enabled?`offline`:e.state===`alarm`?`alarm`:`running`}let bu=e=>e.kind===`daq`||(e.modelRef??``).startsWith(`daq-`),X=m(()=>J.nodes.map(e=>({id:e.id,workspaceId:``,name:e.name,modelRef:`daq-${vu(e)?.id??`unknown`}`,boundAgentId:null,kind:`daq`,telemetry:{value:e.value??0},desired:{},controls:[],state:yu(e),posX:e.posX,posZ:e.posZ,lineId:e.lineId||void 0,lineColor:e.lineId?Ql(e.lineId):void 0,updatedAt:e.lastAt??e.createdAt}))),xu=C(0),Su=new Map,Cu=new Map,wu=null,Tu=!1;function Eu(){Tu||(Tu=!0,setTimeout(()=>{Tu=!1,xu.value++},200))}function Du(e){if(!e.nodeId||typeof e.value!=`number`||!Number.isFinite(e.value))return;let t=e.state??`ok`;Su.set(e.nodeId,{value:e.value,state:t,atMs:Date.parse(e.at??``)||Date.now()});let n=Cu.get(e.nodeId);n||(n=[],Cu.set(e.nodeId,n)),n.push(e.value),n.length>zl&&n.shift();let r=Au.get(e.nodeId);r&&r!==t&&ju(e.nodeId,r,t,e.value),r!==t&&Au.set(e.nodeId,t),Eu()}let Ou=m(()=>{xu.value;let e=new Map;for(let t of J.nodes){let n=vu(t);if(!n)continue;let r=Su.get(t.id),i=r&&(!t.lastAt||r.atMs>=Date.parse(t.lastAt)),a=i?r.value:t.value;if(a==null)continue;let o=i?r.state:t.state;e.set(t.id,{value:a,hist:Cu.get(t.id)??t.hist,phase:0,tpl:n,alarm:o===`alarm`})}return e}),ku=e=>e.value.toFixed(e.tpl.decimals),Au=new Map;function ju(e,t,n,r){let i=J.nodeById(e),o=i?vu(i):null,s=i?.deviceIds??(i?.deviceBindingId?[i.deviceBindingId]:[]),c=(s.length?s.map(e=>O.byId(e)?.name??e.slice(0,8)).join(` / `):null)??i?.name??e.slice(0,8),l=`${r?.toFixed(o?.decimals??2)??`--`} ${o?.unit??``}`;n===`alarm`?gf(a(`townView.k113fir9195`,{p0:c,p1:o?.ch??``,p2:l}),`crit`,c):n===`warn`?gf(a(`townView.k1knv89d196`,{p0:c,p1:o?.ch??``,p2:l}),`warn`,c):t!==`ok`&&n===`ok`&&gf(a(`townView.ksjancw197`,{p0:c,p1:o?.ch??``}),`info`,c)}e(()=>J.nodes.map(e=>`${e.id}:${e.state}`).join(`|`),()=>{for(let e of J.nodes){let t=Au.get(e.id);Au.set(e.id,e.state),!(!t||t===e.state)&&ju(e.id,t,e.state,e.value)}});function Mu(e){return Math.max(0,Math.ceil((Date.parse(e.expiresAt)-Date.now())/1e3))}let Nu=()=>{let e=document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``;return{"content-type":`application/json`,authorization:`Bearer ${decodeURIComponent(e)}`}},Pu=C([]),Fu=C(`dcw`),Iu=C(``),Lu=C(`auto`),Ru=C([]),zu=h({}),Bu=null;async function Vu(){let e=L.value?.id;if(!(L.value?.kind!==`agent`||!e))try{let t=await fetch(`/api/workshop/agent-tools/bindings?agentId=${encodeURIComponent(e)}`,{headers:Nu()}).then(e=>e.json());Pu.value=t.data?.bindings??[]}catch{}}async function Hu(){let e=L.value?.id;if(!(L.value?.kind!==`agent`||!e))try{let t=await fetch(`/api/workshop/agent-tools/approvals?agentId=${encodeURIComponent(e)}`,{headers:Nu()}).then(e=>e.json());Ru.value=t.data?.approvals??[]}catch{}}async function Uu(){!L.value?.id||!Iu.value||(await fetch(`/api/workshop/agent-tools/bindings`,{method:`POST`,headers:Nu(),body:JSON.stringify({agentId:L.value.id,nodeId:Iu.value,kind:Fu.value,mode:Lu.value})}),Iu.value=``,await Vu())}async function Wu(e){await fetch(`/api/workshop/agent-tools/bindings/${e}`,{method:`DELETE`,headers:Nu()}),await Vu()}async function Gu(e,t){await fetch(`/api/workshop/agent-tools/bindings/${e}`,{method:`PATCH`,headers:Nu(),body:JSON.stringify({mode:t})}),await Vu()}async function Ku(e,t){await fetch(`/api/workshop/agent-tools/approvals/${e}/decide`,{method:`POST`,headers:Nu(),body:JSON.stringify({approved:t,comment:zu[e]??``})}),Reflect.deleteProperty(zu,e),await Hu()}e(()=>L.value?.id,e=>{Bu&&=(clearInterval(Bu),null),L.value?.kind===`agent`&&e&&(Vu(),Hu(),Bu=j(()=>{Hu()},1e3))},{immediate:!0}),r(()=>{Bu&&clearInterval(Bu)});function qu(e){return e.kind===`dcw`?Y.nodeById(e.nodeId)?.name??e.nodeId:J.nodeById(e.nodeId)?.name??e.nodeId}let Ju=e=>J.nodeById(e)?.deviceIds?.[0]??J.nodeById(e)?.deviceBindingId??null,Yu=e=>e?J.nodes.filter(t=>(t.deviceIds??(t.deviceBindingId?[t.deviceBindingId]:[])).includes(e)).map(e=>e.id):[];function Xu(e,t){J.bindNode(e,t).catch(e=>{R.value=I(e)})}function Zu(e){J.bindNode(e,null).catch(e=>{R.value=I(e)})}function Qu(e,t,n){let r=null,i=n;for(let n of O.twins){if(bu(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 $u=C(!1),ed=C(!1),td=C(420);function nd(e,t){let n=t.currentTarget,r=n?.closest(`.panel`);if(n&&r){let e=n.getBoundingClientRect().top-r.getBoundingClientRect().top-12;td.value=Math.max(160,Math.round(e))}e===`daq`?$u.value=!$u.value:ed.value=!ed.value}let rd=m(()=>{let e=L.value?.kind===`device`?L.value.id:``,t={};if(!e)return t;for(let n of J.nodes){if(n.deviceBindingId===e)continue;let r=vu(n);r&&(t[r.id]??=[]).push({id:n.id,name:n.name,tpl:r,devName:n.deviceBindingId?O.byId(n.deviceBindingId)?.name??null:null,placed:typeof n.posX==`number`})}return t}),id=m(()=>Object.values(rd.value).reduce((e,t)=>e+t.length,0));function ad(e){let t=L.value?.kind===`device`?L.value.id:``;t&&(Xu(e,t),$u.value=!1)}let od=new Map;function sd(e,t){let n=t;n?od.set(e,n):od.delete(e)}function cd(){for(let[e,t]of od){let n=Ou.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=Bf(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()}}e(()=>J.nodes.map(e=>`${e.id}:${e.posX??``}:${e.posZ??``}:${e.enabled}:${e.state}:${e.deviceBindingId??``}`).join(`|`),()=>{P.value&&Wt(P.value)}),e(()=>Y.nodes.map(e=>`${e.id}:${e.posX??``}:${e.posZ??``}:${e.enabled}:${e.deviceBindingId??``}:${e.value??``}`).join(`|`),()=>{P.value&&Wt(P.value)}),e(()=>J.nodes.map(e=>`${e.id}:${e.deviceBindingId??``}`).join(`|`),()=>{let e=F.value;!e||!(`syncDaqLinks`in e)||e.syncDaqLinks(J.nodes.filter(e=>e.deviceBindingId).map(e=>({daqId:e.id,deviceId:e.deviceBindingId})))});let ld=m(()=>L.value?.kind===`device`&&(ud.value?.modelRef||``).startsWith(`daq-`)),ud=m(()=>L.value?.kind===`device`?tu(L.value?.id)??null:null),dd=m(()=>{let e=L.value?.id;return e?Ou.value.get(e)??null:null}),fd=C(``),pd=m(()=>{let e=L.value?.id;return e?Yu(e).map(e=>{let t=tu(e),n=Ou.value.get(e),r=n?.tpl??_u(t?.modelRef??``);return{daqId:e,name:t?.name??e,ch:r?.ch??a(`townView.k1ef3cls168`),icon:r?.icon??`gateway`,value:n?ku(n):`--`,unit:n?.tpl.unit??r?.unit??``,color:Bf(e)}}):[]}),md=m(()=>{let e=L.value?.id;if(!e)return``;let t=Ju(e);return t?O.twins.find(e=>e.id===t)?.name??t.slice(0,8):``}),hd=e=>e?Y.nodes.filter(t=>t.deviceBindingId===e):[];function gd(e){let t=Y.nodeById(e);if(!t||!t.lineId)return null;let n=Y.lineStateOf(t.lineId);if(!n.active||!n.recipeId)return null;let r=Y.recipes.find(e=>e.id===n.recipeId);return r?r.params.find(t=>t.nodeId===e)??null:null}let _d=m(()=>{let e=L.value?.id;return e?hd(e).map(e=>{let t=e.templateRef.startsWith(`dcw-`)?e.templateRef.slice(4):e.templateRef,n=Y.templates.find(e=>e.key===t),r=gd(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:r?.min??null,rMax:r?.max??null}}):[]});function vd(e){let t=gd(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 yd(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 bd=h({}),xd=h({});function Sd(e){let t=bd[e.id];if(t==null||t===``)return;let n=vd(e);if(Number(t)<n.lo||Number(t)>n.hi){xd[e.id]=a(`townView.kbuyve5198`,{p0:n.src===`recipe`?a(`townView.kb251ac190`):a(`townView.k1iwj796179`),p1:Number.isFinite(n.lo)?n.lo:`-∞`,p2:Number.isFinite(n.hi)?n.hi:`+∞`});return}xd[e.id]=``,Y.write(e.id,Number(t)).then(t=>{t.ok||(xd[e.id]=t.message)}).catch(t=>{xd[e.id]=I(t)})}let Cd=e=>{let t=e.startsWith(`dcw-`)?e.slice(4):e;return au.find(e=>e.id===t)},wd=m(()=>{let e=L.value?.kind===`device`?L.value.id:``,t={};if(!e)return t;for(let n of Y.nodes){if(n.deviceBindingId===e)continue;let r=Cd(n.templateRef);r&&(t[r.id]??=[]).push({id:n.id,name:n.name,tpl:r,devName:n.deviceBindingId?O.byId(n.deviceBindingId)?.name??null:null,placed:typeof n.posX==`number`})}return t}),Td=m(()=>Object.values(wd.value).reduce((e,t)=>e+t.length,0));function Ed(e){let t=L.value?.kind===`device`?L.value.id:``;t&&(Y.bindNode(e,t).catch(e=>{R.value=I(e)}),ed.value=!1)}function Dd(e){Y.bindNode(e,null).catch(e=>{R.value=I(e)})}let Od=m(()=>L.value?.kind===`device`&&(tu(L.value?.id)?.modelRef??``).startsWith(`dcw-`)),Z=m(()=>{let e=L.value?.id;return e?Y.nodeById(e)??null:null}),kd=m(()=>{let e=Z.value;return e?vd(e):null}),Ad=m(()=>{let e=Z.value;return e?.deviceBindingId?O.twins.find(t=>t.id===e.deviceBindingId)?.name??e.deviceBindingId.slice(0,8):``}),jd=C(``);function Md(){let e=Z.value;!e||!jd.value||(Y.bindNode(e.id,jd.value).catch(e=>{R.value=I(e)}),jd.value=``)}function Nd(){let e=Z.value;e&&Y.bindNode(e.id,null).catch(e=>{R.value=I(e)})}function Pd(){let e=Z.value;e&&Sd(e)}function Fd(e){if(!e)return`--`;let t=vd(e);return`${Number.isFinite(t.lo)?t.lo:`-∞`} ~ ${Number.isFinite(t.hi)?t.hi:`+∞`} ${e.unit}`}function Id(e){if(!e)return``;let t=vd(e);return`${Number.isFinite(t.lo)?t.lo:``} ~ ${Number.isFinite(t.hi)?t.hi:``}`}let Q=m(()=>{let e=L.value?.id;return e?J.nodeById(e)??null:null}),Ld=C(null);e(Q,e=>{Ld.value=e?e.intervalMs??J.controller.defaultIntervalMs:null},{immediate:!0});function Rd(){let e=Q.value;!e||Ld.value==null||J.patchNode(e.id,{intervalMs:Math.max(120,Math.min(6e4,Math.round(Ld.value)))}).catch(e=>{R.value=I(e)})}function zd(e,t){let n=Number(t);Number.isFinite(n)&&J.patchNode(Q.value.id,{[e]:(e.startsWith(`warn`),n)}).catch(e=>{R.value=I(e)})}let Bd=C(!0);function Vd(e){let t=Ju(e)??e,n=tu(t);n&&(L.value={kind:`device`,id:t,scale:L.value?.scale??1,rotation:L.value?.rotation??0},ut.value=n.name)}let Hd=C(!1);function Ud(){Hd.value=!Hd.value,F.value?.setAutoOrbit(Hd.value)}function Wd(){let e=F.value,t=L.value;if(e){if(!t){R.value=a(`townView.k15tn2fh169`);return}if(t.kind===`device`){let n=e.getDeviceNodes().find(e=>e.twinId===t.id);n&&e.focusTo(n.x,n.z)}else{let n=e.getAgent(t.id);n&&e.focusTo(n.root.position.x,n.root.position.z)}}}let Gd=C({}),Kd=fn(`aw.twin.calloutNear`,1150),qd=m(()=>{let e={};for(let t of X.value){let n=Ou.value.get(t.id);if(!n)continue;let r={ch:n.tpl.ch,value:ku(n),unit:n.tpl.unit,alarm:n.alarm??!1};(e[t.id]??=[]).push(r);let i=Ju(t.id);i&&(e[i]??=[]).push(r)}return e}),Jd=m(()=>{let e={};for(let t of Y.nodes){if(!t.deviceBindingId)continue;let n=t.templateRef.startsWith(`dcw-`)?t.templateRef.slice(4):t.templateRef,r=Y.templates.find(e=>e.key===n),i=vd(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}),Yd=C({pos:{x:0,y:0,z:0},target:{x:0,z:0},yaw:0,dolly:1}),Xd=m(()=>{if(!Bd.value)return[];let e=F.value;if(!e)return[];let t=e.getDeviceNodes(),n=tf.value?.clientWidth??1600,r=[];for(let e of X.value){let n=Ou.value.get(e.id);if(!n)continue;let i=Ju(e.id),a=i?t.find(e=>e.twinId===i):t.find(t=>t.twinId===e.id);if(!a)continue;let o=Gd.value[e.id];o&&r.push({t:e,st:n,anchor:a,pos:o})}let i=new Map(r.map(e=>[e.anchor.twinId,e.anchor.topY])),a=new Map;for(let e of r){let t=a.get(e.anchor.twinId)??[];t.push(e),a.set(e.anchor.twinId,t)}let o=[];for(let e of a.values()){e.sort((e,t)=>e.t.id<t.t.id?-1:1);let t=e[0],r=Math.hypot(Yd.value.pos.x-t.anchor.x,Yd.value.pos.y-(i.get(t.anchor.twinId)??60),Yd.value.pos.z-t.anchor.z)<Kd.value,a=Math.min(n-96,Math.max(96,t.pos.x));e.forEach((e,n)=>{let{lo:i,hi:s}=Df(e.st.tpl.min,e.st.tpl.max);o.push({id:e.t.id,x:a,y:t.pos.y-n*Bl,label:`${e.st.tpl.ch} · ${e.anchor.name||e.t.name}`,value:ku(e.st),unit:e.st.tpl.unit,lo:i,hi:s,warn:e.st.alarm??!1,near:r,leader:n===0})})}return o}),Zd=null,Qd=m(()=>O.twins.length),$d=m(()=>O.twins.filter(e=>e.state===`running`).length),ef=de(),tf=C(null),nf=C(`std`);function rf(e){nf.value=e.target.value,F.value?.setViewPreset(nf.value)}function af(){document.fullscreenElement?document.exitFullscreen():tf.value?.requestFullscreen?.()}let of=m(()=>O.twins.filter(e=>e.state===`idle`).length),sf=m(()=>O.twins.filter(e=>e.state===`alarm`).length),cf=m(()=>O.twins.filter(e=>e.state===`offline`).length),lf=m(()=>{let e=O.twins.length;if(!e)return 100;let t=$d.value+of.value;return Math.round(t/e*100)}),uf=m(()=>lf.value>=90?`#35e0a0`:lf.value>=60?`#f6c453`:`#ff6b6b`),df=C(null);function ff(){let e=df.value;if(!e)return;let t=e.getContext(`2d`);if(!t)return;let n=O.twins.length||1,r=[{n:$d.value,color:`#35e0a0`},{n:of.value,color:`#f6c453`},{n:sf.value,color:`#ff6b6b`},{n:cf.value,color:`#3a4a63`}];t.clearRect(0,0,118,118),t.lineWidth=12;let i=-Math.PI/2;for(let e of r){if(!e.n)continue;let r=e.n/n*Math.PI*2;t.beginPath(),t.strokeStyle=e.color,t.arc(59,59,48,i,i+r),t.stroke(),i+=r}}e(lf,()=>ff()),e(()=>O.twins.length,()=>ff()),i(()=>ff());let pf=C([]),mf=0,hf=[a(`townView.k3ng94k170`),a(`townView.k3mi2n0171`),a(`townView.k3ncnxl172`)];function gf(e,t=`warn`,n=`SYSTEM`){let r=new Date,i=[r.getHours(),r.getMinutes(),r.getSeconds()].map(e=>String(e).padStart(2,`0`)).join(`:`);pf.value.unshift({id:++mf,txt:e,src:n,time:i,state:0,level:t}),pf.value.length>30&&pf.value.pop()}let _f=m(()=>pf.value.filter(e=>e.state<2).length);function vf(e){let t=pf.value.find(t=>t.id===e);t&&(t.state=Math.min(2,t.state+1))}function yf(){pf.value=pf.value.map(e=>({...e,state:2}))}let bf=C(100),xf=fn(`aw.twin.fpsCap`,`60`),Sf=[{v:`60`,label:`60`},{v:`120`,label:`120`},{v:`0`,label:`∞`}];function Cf(e){xf.value=e,F.value?.setFpsCap(Number(e))}let wf=fn(`aw.twin.quality`,`auto`),Tf=[{v:`auto`,label:`townView.qualityAuto`},{v:`normal`,label:`townView.qualityNormal`},{v:`hd`,label:`townView.qualityHD`},{v:`ultra`,label:`townView.qualityUltra`}];function Ef(e){wf.value=e,F.value?.setQualityMode(e)}function Df(e,t){let n=bf.value/100,r=(e+t)/2;return{lo:r-(r-e)*n,hi:r+(t-r)*n}}let Of=C(!1);function kf(){Of.value=!Of.value,gf(Of.value?a(`townView.kb157zk173`):a(`townView.k1s9qzr9174`),Of.value?`crit`:`info`,`SYSTEM`)}let Af=C(1.12),jf=C(1);function Mf(e,t,n){return`${Math.min(100,Math.max(0,(e-t)/(n-t)*100)).toFixed(1)}%`}function Nf(e){Af.value=Number(e.target.value)/100,F.value?.setExposure(Af.value)}function Pf(e){jf.value=Number(e.target.value)/100,F.value?.setTerritoryOpacity(jf.value)}function Ff(){F.value?.resetView(),Af.value=1.12,jf.value=1,F.value?.setExposure(1.12),F.value?.setTerritoryOpacity(1)}function If(e){Rf.value={...Rf.value,[e]:!Rf.value[e]}}let Lf=C(null),Rf=C({}),zf=[`#35e0a0`,`#41c8f4`,`#f6c453`,`#a78bfa`,`#ff6b6b`,`#4dd0e1`],Bf=e=>zf[Math.abs(e.split(``).reduce((e,t)=>e*31+t.charCodeAt(0),7))%zf.length]??`#35e0a0`;function Vf(e,t){let n=Rf.value[e];return n==null?(t??X.value.findIndex(t=>t.id===e))<Vl:!n}let Hf=C(!1),Uf=m(()=>Math.max(X.value.length-Vl,0)),Wf=m(()=>Hf.value?X.value:X.value.slice(0,Vl));function Gf(){let e=Lf.value;if(!e)return;let t=Math.min(window.devicePixelRatio,2),n=e.clientWidth,r=e.clientHeight;(e.width!==n*t||e.height!==r*t)&&(e.width=n*t,e.height=r*t);let i=e.getContext(`2d`);if(i){i.setTransform(t,0,0,t,0,0),i.clearRect(0,0,n,r),i.strokeStyle=`rgba(29, 42, 66, 0.6)`,i.lineWidth=1;for(let e=1;e<4;e++){let t=r/4*e;i.beginPath(),i.moveTo(0,t),i.lineTo(n,t),i.stroke()}X.value.forEach((e,t)=>{if(!Vf(e.id,t))return;let a=Ou.value.get(e.id);if(!a)return;let o=Cu.get(e.id)??a.hist;if(o.length<2)return;let s=a.tpl.min,c=a.tpl.max;i.strokeStyle=Bf(e.id),i.lineWidth=1.6,i.beginPath(),o.forEach((e,t)=>{let a=t/119*n,o=r-(e-s)/(c-s)*(r-8)-4;t===0?i.moveTo(a,o):i.lineTo(a,o)}),i.stroke()})}}let Kf=null,qf=null,Jf=null,Yf=null,Xf=C(null),Zf=m(()=>Math.min(5,Math.max(.4,Yd.value.dolly))),$=null;function Qf(e){let t=e.clientWidth||220,n=e.clientHeight||148;return{s:t/(Hl*Zf.value),w:t,h:n}}function $f(){let e=Xf.value,t=$t.value,n=F.value;if(!e)return;let r=Math.min(window.devicePixelRatio||1,2),i=Qf(e);(e.width!==Math.round(i.w*r)||e.height!==Math.round(i.h*r))&&(e.width=Math.round(i.w*r),e.height=Math.round(i.h*r));let a=e.getContext(`2d`);if(!a)return;a.setTransform(r,0,0,r,0,0),a.fillStyle=`#060b13`,a.fillRect(0,0,i.w,i.h);let o=n?.getCameraPose(),s=o?o.target.x:Fl/2,c=o?o.target.z:Il/2,l=i.w/2/i.s,u=i.h/2/i.s,d=(e,t)=>({x:i.w/2+(e-s)*i.s,y:i.h/2+(t-c)*i.s}),f=(e,t,n=60)=>e>s-l-n&&e<s+l+n&&t>c-u-n&&t<c+u+n;a.fillStyle=`rgba(65,200,244,.10)`;for(let e=Math.floor((s-l)/250)*250;e<=s+l;e+=250)for(let t=Math.floor((c-u)/250)*250;t<=c+u;t+=250){let n=d(e,t);a.fillRect(n.x-1,n.y-1,1.6,1.6)}let p=d(0,0),m=d(Fl,Il);a.strokeStyle=`rgba(53,224,160,.35)`,a.lineWidth=1,a.strokeRect(p.x,p.y,m.x-p.x,m.y-p.y);for(let e of t?.blocks??[]){let t=e.x*Fl,n=e.y*Il;if(!f(t,n,400))continue;let r=d(t,n),o=Math.max(4,(e.rx??.03)*Fl*i.s),s=Math.max(3,(e.rz??.03)*Il*i.s);a.strokeStyle=en(e.color),a.globalAlpha=.6,a.lineWidth=1,a.beginPath(),a.ellipse(r.x,r.y,o,s,0,0,Math.PI*2),a.stroke(),a.globalAlpha=.08,a.fillStyle=en(e.color),a.fill(),a.globalAlpha=1}a.strokeStyle=`rgba(65,200,244,.28)`;let h=new Set(J.nodes.filter(e=>e.deviceBindingId).map(e=>e.id));for(let[e,n]of J.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 o=d(r.x*Fl,r.y*Il),s=d(i.x*Fl,i.y*Il);a.beginPath(),a.moveTo(o.x,o.y),a.lineTo(s.x,s.y),a.stroke()}let g=e=>e.x>=7&&e.x<=i.w-7&&e.y>=7&&e.y<=i.h-7?{...e,edge:!1}:{x:Math.min(i.w-7,Math.max(7,e.x)),y:Math.min(i.h-7,Math.max(7,e.y)),edge:!0};for(let e of t?.devices??[]){let t=g(d(e.x*Fl,e.y*Il));if(e.daq)a.globalAlpha=t.edge?.4:1,a.fillStyle=`#35e0a0`,a.beginPath(),a.arc(t.x,t.y,t.edge?1.8:2.4,0,7),a.fill(),!t.edge&&e.twinId&&h.has(e.twinId)&&(a.strokeStyle=`rgba(53,224,160,.5)`,a.beginPath(),a.arc(t.x,t.y,4.4,0,7),a.stroke());else{a.globalAlpha=t.edge?.4:1,a.fillStyle=en(e.color);let n=t.edge?3.6:5.2;a.fillRect(t.x-n/2,t.y-n/2,n,n)}a.globalAlpha=1}for(let e of t?.agents??[]){let t=g(d(e.x*Fl,e.y*Il));a.globalAlpha=t.edge?.35:1,a.fillStyle=en(e.color),a.beginPath(),a.arc(t.x,t.y,t.edge?1.6:2.2,0,7),a.fill(),a.globalAlpha=1}if(o){let e=Math.atan2(-Math.cos(o.yaw),-Math.sin(o.yaw)),t=Math.min(i.w,i.h)*.36;a.fillStyle=`rgba(65,200,244,.14)`,a.strokeStyle=`rgba(65,200,244,.5)`,a.lineWidth=1,a.beginPath(),a.moveTo(i.w/2,i.h/2),a.arc(i.w/2,i.h/2,t,e-.4,e+.4),a.closePath(),a.fill(),a.stroke();let n=d(o.pos.x,o.pos.z);n.x>4&&n.x<i.w-4&&n.y>4&&n.y<i.h-4&&(a.fillStyle=`rgba(255,255,255,.85)`,a.beginPath(),a.arc(n.x,n.y,2.4,0,7),a.fill())}a.fillStyle=`#fff`,a.beginPath(),a.arc(i.w/2,i.h/2,3,0,7),a.fill(),a.strokeStyle=`rgba(255,255,255,.4)`,a.beginPath(),a.arc(i.w/2,i.h/2,5.5,0,7),a.stroke()}function ep(e){F.value?.zoomBy(e.deltaY>0?.14:-.12)}function tp(e){$={lx:e.clientX,ly:e.clientY,moved:!1};try{e.target.setPointerCapture?.(e.pointerId)}catch{}}function np(e){let t=Xf.value,n=F.value;if(!$||!t||!n)return;let r=Qf(t),i=e.clientX-$.lx,a=e.clientY-$.ly;Math.abs(i)+Math.abs(a)>3&&($.moved=!0);let o=i/r.s,s=a/r.s;$.lx=e.clientX,$.ly=e.clientY,n.panWorldBy(o,s)}function rp(e){let t=Xf.value,n=F.value;if($&&!$.moved&&t&&n){let r=t.getBoundingClientRect(),i=Qf(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)}$=null}function ip(){let e=P.value;e?.getMinimapState&&($t.value=e.getMinimapState()),$f();let t=F.value;if(t&&(Yd.value=t.getCameraPose(),Bd.value)){let e=t.getDeviceNodes(),n=tf.value?.getBoundingClientRect(),r={};for(let i of X.value){let a=Ju(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})}Gd.value=r}}function ap(){if(document.hidden){Kf&&=(clearInterval(Kf),null),Yf&&=(clearInterval(Yf),null),qf&&=(clearInterval(qf),null);return}Kf||=j(ip,150),Yf||=j(()=>{J.nodes.length&&(Gf(),cd())},200),qf||=j(()=>{let e=P.value;e?.getRecentActivity&&(iu.value=e.getRecentActivity())},400)}return i(()=>{window.addEventListener(`keydown`,Ge),document.addEventListener(`visibilitychange`,ap),J.ensureWsFeed(),J.load(),wu=ue().subscribe(e=>{e.type===`daq.reading`&&Du(e.payload)}),Y.ensureWsFeed(),Y.load(),Kf=j(ip,150),Yf=j(()=>{J.nodes.length&&(Gf(),cd())},200),qf=j(()=>{let e=P.value;e?.getRecentActivity&&(iu.value=e.getRecentActivity())},400)}),r(()=>{window.removeEventListener(`keydown`,Ge);for(let e of Rt)try{e()}catch{}Rt.length=0,document.removeEventListener(`visibilitychange`,ap),Kf&&clearInterval(Kf),Yf&&clearInterval(Yf),qf&&clearInterval(qf),Jf&&clearInterval(Jf),Zd&&clearInterval(Zd),Kf=null,Yf=null,qf=null,Jf=null,Zd=null}),i(()=>{Mt();let e=G();e.length>0&&P.value&&P.value.rebuild(e)}),r(()=>{wu?.();let e=P._off;e?.(),F.value?.dispose(),F.value=null,Se.value?.destroy(!0),Se.value=null,P.value=null}),(e,t)=>{let r=rt,i=at,a=It;return s(),v(`div`,pn,[g(`header`,{class:c([`topnav`,{"sheet-on":E(N)}])},[g(`div`,mn,[t[55]||=re(`<svg class="brand-glyph" viewBox="0 0 32 32" fill="none" aria-hidden="true" data-v-3e78e101><path d="M16 2.5 27.5 9v14L16 29.5 4.5 23V9L16 2.5Z" stroke="#35e0a0" stroke-width="1.6" data-v-3e78e101></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-3e78e101></path><circle cx="16" cy="16" r="2.4" fill="#35e0a0" data-v-3e78e101></circle><circle cx="25.5" cy="7.5" r="1.6" fill="#41c8f4" data-v-3e78e101></circle></svg>`,1),g(`div`,null,[t[54]||=g(`div`,{class:`brand-name`},[D(` DIGITAL `),g(`em`,null,`TWIN`)],-1),g(`div`,hn,` AGENTWORKSHOP · `+o(e.$t(`townView.klyi8yg127`)),1)])]),g(`nav`,{class:`nav-tabs`,"aria-label":e.$t(`townView.k1c9jyta001`)},[g(`div`,_n,[g(`button`,{class:c({on:E(z)===`browse`}),onClick:t[0]||=e=>E(z)===`edit`&&He()},o(e.$t(`townView.k48dwh027`)),3),g(`button`,{class:c({on:E(z)===`edit`}),onClick:t[1]||=e=>E(z)===`browse`&&He()},o(e.$t(`townView.k45eb0028`)),3)]),g(`button`,{class:`nav-action`,disabled:E(z)!==`edit`,title:E(z)===`edit`?`把全部设备的位置/朝向/缩放写入数据库`:`运行模式只读`,onClick:Ye},o(e.$t(`townView.k1b3bk8t029`)),9,vn),E(B)&&E(B).state!==`idle`?(s(),v(`span`,{key:0,class:c([`save-chip`,`s-${E(B).state}`])},o(E(Ve)),3)):x(``,!0)],8,gn),g(`div`,yn,[g(`span`,{class:c([`nav-chip mono`,{"nav-bell-warn":E(_f)>0}]),title:e.$t(`townView.k1fsi3ir002`)},`◉ `+o(E(_f)),11,bn),g(`span`,xn,o(E(Ne))+` FPS`,1),g(`div`,{class:`avatar-chip nav-user`,title:e.$t(`townView.k1demf38003`)},[g(`div`,Cn,o((E(ef).user?.name??`OP`).slice(0,2).toUpperCase()),1),g(`span`,null,o(E(ef).user?.name||e.$t(`townView.k1pub99m139`)),1)],8,Sn),g(`button`,{type:`button`,class:c([`sheet-btn`,{on:E(N)===`left`}]),"aria-controls":`town-rail-left`,"aria-expanded":E(N)===`left`?`true`:`false`,title:e.$t(`townView.k1k75lzy030`),onClick:t[2]||=e=>_e(`left`)},[t[56]||=g(`svg`,{class:`sheet-ico`,viewBox:`0 0 24 24`,"aria-hidden":`true`},[g(`path`,{d:`M4 6h16M4 12h11M4 18h16`})],-1),g(`span`,Tn,o(e.$t(`townView.k1k75lzy030`)),1)],10,wn),g(`button`,{type:`button`,class:c([`sheet-btn`,{on:E(N)===`right`}]),"aria-controls":`town-rail-right`,"aria-expanded":E(N)===`right`?`true`:`false`,title:e.$t(`townView.k17dkhgd112`),onClick:t[3]||=e=>_e(`right`)},[t[57]||=g(`svg`,{class:`sheet-ico`,viewBox:`0 0 24 24`,"aria-hidden":`true`},[g(`path`,{d:`M20 6H4M20 12H9M20 18H4`})],-1),g(`span`,Dn,o(e.$t(`townView.k17dkhgd112`)),1)],10,En)])],2),g(`div`,On,[g(`aside`,{id:`town-rail-left`,class:c([`rail rail-left`,{"sheet-open":E(N)===`left`}])},[g(`div`,kn,[t[58]||=g(`span`,{class:`sheet-grip`,"aria-hidden":`true`},null,-1),g(`span`,An,o(e.$t(`townView.k1k75lzy030`)),1),g(`button`,{type:`button`,class:`sheet-x`,"aria-label":`关闭`,onClick:ve},` ✕ `)]),g(`section`,jn,[g(`div`,Mn,[g(`h3`,null,o(e.$t(`townView.k1k75lzy030`)),1),g(`span`,Nn,o(E(lt).length),1)]),f(r,{class:`lib-embed`})]),g(`section`,Pn,[g(`div`,Fn,[g(`h3`,null,o(e.$t(`townView.k2gwyas031`)),1),g(`span`,In,o(E(X).length),1)]),g(`div`,Ln,[g(`button`,{class:c([`daq-ctl-btn`,{on:E(J).controller.running}]),title:E(J).controller.running?`暂停全部采集:停止所有启用节点的采样(节点级启停独立)`:`恢复全部采集:仅启用节点恢复采集(手动停用的保持停用)`,onClick:t[4]||=e=>E(J).controllerAction(E(J).controller.running?`pause`:`resume`)},o(E(J).controller.running?e.$t(`townView.k3w3j8f140`):e.$t(`townView.k3n93ed175`)),11,Rn),g(`label`,{class:`daq-ctl-cycle mono`,title:e.$t(`townView.khzlyf5004`)},[D(o(e.$t(`townView.k3xg3w032`))+` `,1),g(`input`,{type:`number`,min:`200`,max:`60000`,step:`100`,value:E(J).controller.defaultIntervalMs,onChange:t[5]||=e=>E(J).controllerAction(`config`,Number(e.target.value))},null,40,Bn),t[59]||=D(`ms `,-1)],8,zn)]),g(`div`,Vn,[(s(!0),v(b,null,l(E(gu),n=>(s(),v(`div`,{key:n.id,class:`daq-group`},[g(`div`,{class:c([`daq-card tpl`,{open:!!E(ou)[`daq:${n.id}`]}]),role:`button`,tabindex:`0`,title:e.$t(`townView.k2tplxp0001`,{p0:n.name,p1:n.ch,p2:n.min,p3:n.max,p4:n.unit}),onClick:e=>su(`daq:${n.id}`),onKeydown:ie(ae(e=>su(`daq:${n.id}`),[`prevent`]),[`enter`])},[t[60]||=g(`span`,{class:`daq-caret`},`▶`,-1),g(`span`,Un,[f(i,{class:`daq-svg`,icon:n.icon},null,8,[`icon`])]),g(`div`,Wn,[g(`span`,Gn,o(n.name),1),g(`span`,Kn,o(n.code),1)]),E(z)===`edit`?(s(),v(`button`,{key:0,class:`daq-add`,title:e.$t(`townView.k2tplxp0002`,{p0:n.name}),onClick:ae(e=>uu(n),[`stop`])},` + `,8,qn)):x(``,!0),g(`span`,Jn,`×`+o(E(cu).get(n.id)?.length??0),1)],42,Hn),E(ou)[`daq:${n.id}`]?(s(),v(`div`,Yn,[(s(!0),v(b,null,l(E(cu).get(n.id)??[],t=>(s(),v(`div`,{key:t.id,class:c([`daq-node`,{placed:typeof t.posX==`number`}]),draggable:E(z)===`edit`,title:typeof t.posX==`number`?e.$t(`townView.k2tplxp0005`):e.$t(`townView.k2tplxp0006`),onDragstart:e=>fu(e,t),onClick:e=>typeof t.posX==`number`&&qt({id:t.id,posX:t.posX,posZ:t.posZ})},[g(`span`,{class:c([`node-dot`,mu(t)])},null,2),g(`div`,Zn,[g(`span`,Qn,o(t.name),1),g(`span`,$n,[g(`span`,er,o(t.value==null?`--`:`${t.value.toFixed(n.decimals)} ${n.unit}`),1),g(`span`,tr,o(t.deviceBindingId?E(O).byId(t.deviceBindingId)?.name??e.$t(`townView.k3own4q148`):e.$t(`townView.k3own4q148`)),1)])]),typeof t.posX==`number`?(s(),v(`span`,nr,`✓`)):x(``,!0)],42,Xn))),128)),E(cu).get(n.id)?.length?x(``,!0):(s(),v(`div`,rr,o(e.$t(`townView.k2tplxp0003`)),1))])):x(``,!0)]))),128))])]),g(`section`,ir,[g(`div`,ar,[g(`h3`,null,o(e.$t(`townView.km7ayhi033`)),1),g(`span`,or,o(E(Y).nodes.length),1)]),g(`div`,sr,[(s(!0),v(b,null,l(E(au),n=>(s(),v(`div`,{key:n.id,class:`daq-group`},[g(`div`,{class:c([`daq-card tpl`,{open:!!E(ou)[`dcw:${n.id}`]}]),role:`button`,tabindex:`0`,title:e.$t(`townView.k2tplxp0001`,{p0:n.name,p1:n.ch,p2:n.min,p3:n.max,p4:n.unit}),onClick:e=>su(`dcw:${n.id}`),onKeydown:ie(ae(e=>su(`dcw:${n.id}`),[`prevent`]),[`enter`])},[t[61]||=g(`span`,{class:`daq-caret`},`▶`,-1),g(`span`,lr,[f(i,{class:`daq-svg`,icon:n.icon},null,8,[`icon`])]),g(`div`,ur,[g(`span`,dr,o(n.name),1),g(`span`,fr,o(n.code),1)]),E(z)===`edit`?(s(),v(`button`,{key:0,class:`daq-add`,title:e.$t(`townView.k2tplxp0002`,{p0:n.name}),onClick:ae(e=>du(n),[`stop`])},` + `,8,pr)):x(``,!0),g(`span`,mr,`×`+o(E(lu).get(n.id)?.length??0),1)],42,cr),E(ou)[`dcw:${n.id}`]?(s(),v(`div`,hr,[(s(!0),v(b,null,l(E(lu).get(n.id)??[],t=>(s(),v(`div`,{key:t.id,class:c([`daq-node`,{placed:typeof t.posX==`number`}]),draggable:E(z)===`edit`,title:typeof t.posX==`number`?e.$t(`townView.k2tplxp0005`):e.$t(`townView.k2tplxp0006`),onDragstart:e=>pu(e,t),onClick:e=>typeof t.posX==`number`&&qt({id:t.id,posX:t.posX,posZ:t.posZ})},[g(`span`,{class:c([`node-dot`,hu(t)])},null,2),g(`div`,_r,[g(`span`,vr,o(t.name),1),g(`span`,yr,[g(`span`,br,o(t.value==null?`--`:`${t.value.toFixed(n.decimals)} ${n.unit}`),1),g(`span`,xr,o(t.deviceBindingId?E(O).byId(t.deviceBindingId)?.name??e.$t(`townView.k3own4q148`):e.$t(`townView.k3own4q148`)),1)])]),typeof t.posX==`number`?(s(),v(`span`,Sr,`✓`)):x(``,!0)],42,gr))),128)),E(lu).get(n.id)?.length?x(``,!0):(s(),v(`div`,Cr,o(e.$t(`townView.k2tplxp0003`)),1))])):x(``,!0)]))),128))])]),g(`section`,wr,[g(`div`,Tr,[g(`h3`,null,o(e.$t(`townView.k1c9n911034`)),1),g(`span`,Er,o(E(Et).length),1)]),g(`div`,Dr,[(s(!0),v(b,null,l(E(Et),t=>(s(),v(`div`,{key:t.channelId,class:c([`scene-row`,{active:t.placed}]),draggable:!t.placed&&E(z)===`edit`,"data-channel-id":t.channelId,title:t.placed?`已在场景中,点击定位`:`拖拽到场景放置`,onDragstart:e=>t.placed?void 0:At(e,t.channelId),onClick:e=>ot(t)},[g(`span`,{class:`scene-ico`,style:n({"--ch":t.color})},null,4),g(`div`,kr,[g(`span`,Ar,o(t.name),1),g(`span`,jr,o(t.agentCount)+` `+o(e.$t(`townView.k1brss7t128`))+` `+o(t.placed?e.$t(`townView.k3n94g3141`):e.$t(`townView.k3os7i3176`)),1)]),t.placed?(s(),v(`span`,Mr,`✓`)):(s(),v(`span`,Nr,`+`))],42,Or))),128)),E(it)?(s(),v(`div`,Pr,o(E(it)),1)):x(``,!0)])])],2),g(`main`,Fr,[g(`div`,{ref_key:`stageRef`,ref:tf,class:`stage`},[g(`div`,{id:`town-host`,ref_key:`hostRef`,ref:xe,class:`town-host`},null,512),t[77]||=g(`div`,{class:`stage-vignette`},null,-1),g(`div`,Ir,[g(`div`,Lr,[g(`h2`,null,o(e.$t(`townView.k1b0z4vr035`)),1),g(`span`,Rr,`CH · `+o(E(ze)||e.$t(`townView.k3lkuz3142`)),1)]),g(`div`,zr,[g(`button`,{class:`vp-tool`,title:e.$t(`townView.k18d6wnb005`),onClick:Wd},[...t[62]||=[g(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[g(`circle`,{cx:`12`,cy:`12`,r:`7`}),g(`path`,{d:`M12 2v4M12 18v4M2 12h4M18 12h4`})],-1)]],8,Br),g(`button`,{class:c([`vp-tool`,{on:E(Hd)}]),title:e.$t(`townView.k1io51dn006`),onClick:Ud},[...t[63]||=[g(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[g(`circle`,{cx:`12`,cy:`12`,r:`3.2`}),g(`path`,{d:`M20.5 9a10 10 0 0 1 .3 4.5M3.5 15a10 10 0 0 1-.3-4.5`})],-1)]],10,Vr),g(`button`,{class:c([`vp-tool`,{on:E(Bd)}]),title:e.$t(`townView.k1sgjlq8007`),onClick:t[6]||=e=>Bd.value=!E(Bd)},[...t[64]||=[g(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[g(`path`,{d:`M4 8h12l4 4-4 4H4z`}),g(`circle`,{cx:`8.5`,cy:`12`,r:`1.4`})],-1)]],10,Hr),g(`button`,{class:`vp-tool`,title:e.$t(`townView.k3wuf0008`),onClick:af},[...t[65]||=[g(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[g(`path`,{d:`M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5`})],-1)]],8,Ur)])]),g(`div`,Wr,[g(`select`,{value:E(nf),"aria-label":e.$t(`townView.k1k4j5i7009`),onChange:t[7]||=e=>rf(e)},[g(`option`,Kr,o(e.$t(`townView.kv72860036`)),1),t[66]||=g(`option`,{value:`top`},` 俯视 · TOP `,-1),t[67]||=g(`option`,{value:`front`},` 前视 · FRONT `,-1),t[68]||=g(`option`,{value:`side`},` 侧视 · SIDE `,-1)],40,Gr)]),E(Bd)?(s(),v(b,{key:0},[(s(),v(`svg`,qr,[(s(!0),v(b,null,l(E(Xd),e=>S((s(),v(`g`,{key:`ld-${e.id}`,class:c({near:e.near})},[g(`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,Jr),g(`circle`,{cx:e.x,cy:e.y,r:`2.6`,fill:e.warn?`#f6c453`:`#41c8f4`},null,8,Yr)],2)),[[se,e.leader]])),128))])),g(`div`,Xr,[(s(!0),v(b,null,l(E(Xd),r=>(s(),v(`div`,{key:r.id,class:c([`callout`,{warn:r.warn,near:r.near}]),style:n({left:r.x+`px`,top:r.y+`px`}),title:e.$t(`townView.k1ejxiwp010`),onClick:e=>Vd(r.id)},[g(`div`,Qr,[t[69]||=g(`span`,{class:`co-dot`},null,-1),D(o(r.label),1)]),g(`div`,$r,[D(o(r.value),1),g(`small`,null,o(r.unit),1)]),g(`div`,ei,o(e.$t(`townView.k1faqmjb073`))+` `+o(r.lo.toFixed(Math.min(2,(String(r.lo).split(`.`)[1]??``).length+1)))+` – `+o(r.hi.toFixed(Math.min(2,(String(r.hi).split(`.`)[1]??``).length+1))),1)],14,Zr))),128))])],64)):x(``,!0),g(`div`,ti,[g(`div`,ni,[t[70]||=g(`span`,{class:`kpi-ico c1`},[g(`svg`,{class:`kpi-svg`,viewBox:`0 0 24 24`},[g(`path`,{d:`M4 8.5 12 4l8 4.5v7L12 20l-8-4.5v-7Z`}),g(`path`,{d:`M4 8.5l8 4.5 8-4.5M12 13v7`})])],-1),g(`div`,ri,[g(`div`,ii,o(e.$t(`townView.k1k6xemt037`)),1),g(`div`,ai,[D(o(E(Qd)),1),g(`small`,null,o(e.$t(`townView.k49lh038`)),1)])])]),g(`div`,oi,[t[71]||=g(`span`,{class:`kpi-ico c2`},[g(`svg`,{class:`kpi-svg`,viewBox:`0 0 24 24`},[g(`path`,{d:`m5 12.5 4.5 4.5L19 7.5`})])],-1),g(`div`,si,[g(`div`,ci,o(e.$t(`townView.k1l1a9t2039`)),1),g(`div`,li,[D(o(E($d)),1),g(`small`,null,o(e.$t(`townView.k49lh038`)),1)])])]),g(`div`,ui,[t[72]||=g(`span`,{class:`kpi-ico c3`},[g(`svg`,{class:`kpi-svg`,viewBox:`0 0 24 24`},[g(`path`,{d:`M12 3 22 20H2L12 3Z`}),g(`path`,{d:`M12 10v4M12 17v.2`})])],-1),g(`div`,di,[g(`div`,fi,o(e.$t(`townView.k1fsi3ir002`)),1),g(`div`,pi,[D(o(E(_f)),1),g(`small`,null,o(e.$t(`townView.k4dfq040`)),1)])])]),g(`div`,mi,[t[73]||=re(`<span class="kpi-ico c4" data-v-3e78e101><svg class="kpi-svg" viewBox="0 0 24 24" data-v-3e78e101><path d="M9.5 14.5 14.5 9.5" data-v-3e78e101></path><path d="M11 6.5 12.8 4.7a4 4 0 0 1 5.6 5.6L16.5 12" data-v-3e78e101></path><path d="m13 17.5-1.8 1.8a4 4 0 0 1-5.6-5.6L7.5 12" data-v-3e78e101></path></svg></span>`,1),g(`div`,hi,[g(`div`,gi,o(e.$t(`townView.k1emsai1041`)),1),g(`div`,_i,[D(o(E(X).length),1),g(`small`,null,o(e.$t(`townView.k4l1w042`)),1)])])]),g(`div`,vi,[t[75]||=re(`<span class="kpi-ico c5" data-v-3e78e101><svg class="kpi-svg" viewBox="0 0 24 24" data-v-3e78e101><path d="M5 19a9 9 0 1 1 14 0" data-v-3e78e101></path><path d="M12 13l3.5-3.5" data-v-3e78e101></path><circle cx="12" cy="13" r="1.4" data-v-3e78e101></circle></svg></span>`,1),g(`div`,yi,[g(`div`,bi,o(e.$t(`townView.kbrxdq1043`)),1),g(`div`,xi,[D(o(E(lf)),1),t[74]||=g(`small`,null,`%`,-1)])])])]),E(nu)?(s(),v(`div`,Si,[g(`b`,null,o(e.$t(`townView.k3rwxjc044`)),1),g(`span`,null,o(e.$t(`townView.k1sa1eaj045`)),1)])):x(``,!0),E(V)&&E(H)?(s(),v(`div`,{key:2,class:`boundary-panel drag-panel`,style:n(E(Jt).boundary?{left:E(Jt).boundary.x+`px`,top:E(Jt).boundary.y+`px`,bottom:`auto`,transform:`none`}:void 0)},[g(`div`,{class:`bp-title drag-grip`,title:e.$t(`townView.k1d0rl5z011`),onPointerdown:t[10]||=e=>Qt(e,`boundary`)},[g(`span`,wi,o(E(d).channels[E(V)]?.name??E(V).slice(0,8)),1),g(`span`,Ti,o(e.$t(`townView.k1mehlxs046`)),1),g(`div`,Ei,[g(`button`,{class:c([`bp-tab`,{on:E(xt)===`boundary`}]),onClick:t[8]||=e=>wt(`boundary`)},o(e.$t(`townView.k489ka047`)),3),g(`button`,{class:c([`bp-tab`,{on:E(xt)===`members`}]),onClick:t[9]||=e=>wt(`members`)},o(e.$t(`townView.k3ztf1129`))+` `+o(E(St).length),3)])],40,Ci),E(xt)===`boundary`?(s(),v(b,{key:0},[g(`div`,Di,[g(`span`,Oi,o(e.$t(`townView.k3zhy5048`)),1),g(`div`,ki,[g(`button`,{class:c([`seg-btn`,{on:E(H).shape===`ellipse`}]),onClick:t[11]||=e=>{E(H).shape=`ellipse`,nt()}},o(e.$t(`townView.k414bc049`)),3),g(`button`,{class:c([`seg-btn`,{on:E(H).shape===`rect`}]),onClick:t[12]||=e=>{E(H).shape=`rect`,nt()}},o(e.$t(`townView.k43u0g050`)),3)])]),g(`div`,Ai,[g(`span`,ji,o(e.$t(`townView.k1fbz4s1051`)),1),S(g(`input`,{"onUpdate:modelValue":t[13]||=e=>E(H).radiusX=e,class:`bp-range`,type:`range`,min:`80`,max:`4000`,step:`8`,style:n({"--fill":Mf(E(H).radiusX,80,4e3)}),onChange:nt},null,36),[[A,E(H).radiusX,void 0,{number:!0}]]),g(`span`,Mi,o(Math.round(E(H).radiusX)),1)]),g(`div`,Ni,[g(`span`,Pi,o(e.$t(`townView.k1ighwgs052`)),1),S(g(`input`,{"onUpdate:modelValue":t[14]||=e=>E(H).radiusZ=e,class:`bp-range`,type:`range`,min:`60`,max:`4000`,step:`8`,style:n({"--fill":Mf(E(H).radiusZ,60,4e3)}),onChange:nt},null,36),[[A,E(H).radiusZ,void 0,{number:!0}]]),g(`span`,Fi,o(Math.round(E(H).radiusZ)),1)]),g(`div`,Ii,[g(`span`,Li,o(e.$t(`townView.k40qab053`)),1),S(g(`input`,{"onUpdate:modelValue":t[15]||=e=>E(H).rotationY=e,class:`bp-range`,type:`range`,min:`0`,max:`360`,step:`5`,style:n({"--fill":Mf(E(H).rotationY??0,0,360)}),onChange:nt},null,36),[[A,E(H).rotationY,void 0,{number:!0}]]),g(`span`,Ri,o(Math.round(E(H).rotationY??0))+`°`,1)])],64)):(s(),v(b,{key:1},[g(`div`,zi,o(e.$t(`townView.kimxls2054`)),1),g(`div`,Bi,[(s(!0),v(b,null,l(E(St),e=>(s(),v(`div`,{key:e.agentId,class:`member-row`},[g(`span`,{class:`member-ava`,style:n({color:kt(E(V))})},o(e.name.charAt(0).toUpperCase()),5),g(`div`,Vi,[g(`span`,Hi,o(e.name),1),g(`span`,{class:c([`member-role`,e.role===`lead`?`r-lead`:`r-worker`])},o(e.role===`lead`?`Leader`:`Worker`),3)]),g(`select`,{class:`member-select`,value:(e.modelRef??``)||`hero-3d`,onChange:t=>Ct(e.agentId,t.target.value)},[(s(!0),v(b,null,l(E(ct),e=>(s(),v(`option`,{key:e.id,value:e.id},o(e.name),9,Wi))),128))],40,Ui)]))),128)),E(St).length===0?(s(),v(`div`,Gi,o(e.$t(`townView.k419rbs055`)),1)):x(``,!0)])],64)),g(`div`,Ki,[E(xt)===`boundary`?(s(),v(`button`,{key:0,class:`bp-btn save`,onClick:et},o(e.$t(`townView.k1b3kp8f056`)),1)):x(``,!0),g(`button`,{class:`bp-btn danger`,onClick:tt},o(e.$t(`townView.k1hs45qg057`)),1),g(`button`,{class:`bp-btn`,onClick:t[16]||=e=>$e(null)},o(e.$t(`townView.k3x62t058`)),1)])],4)):x(``,!0),E(nn)?(s(),v(`div`,qi,o(E(nn)),1)):x(``,!0),E(R)?(s(),v(`div`,Ji,o(E(R)),1)):x(``,!0),E(Me)?x(``,!0):(s(),v(`div`,Yi,[t[76]||=g(`div`,{class:`loading-spinner`},null,-1),g(`span`,Xi,o(e.$t(`townView.kvjdqfg059`)),1)]))],512),g(`div`,{class:c([`dock`,{"dock-open":E(ge)}])},[g(`button`,{type:`button`,class:`dock-toggle`,"aria-controls":`town-dock-controls`,"aria-expanded":E(ge)?`true`:`false`,onClick:t[17]||=e=>ge.value=!E(ge)},[g(`span`,Qi,o(e.$t(`townView.k1c9iq23060`)),1),g(`span`,$i,o(E(z)===`edit`?e.$t(`townView.k1iipfcs143`):e.$t(`townView.k1l147w1177`)),1),t[78]||=g(`span`,{class:`dock-caret`,"aria-hidden":`true`},`▾`,-1)],8,Zi),g(`section`,ea,[g(`div`,ta,[g(`h3`,null,o(e.$t(`townView.k1c9iq23060`)),1),g(`span`,na,o(E(z)===`edit`?e.$t(`townView.k1iipfcs143`):e.$t(`townView.k1l147w1177`)),1)]),g(`p`,ra,o(e.$t(`townView.secRender`)),1),g(`div`,ia,[g(`span`,{class:`ctl-name`,title:e.$t(`townView.qualityTip`)},o(e.$t(`townView.qualityLabel`)),9,aa),g(`div`,oa,[(s(),v(b,null,l(Tf,t=>g(`button`,{key:t.v,class:c({on:E(wf)===t.v}),onClick:e=>Ef(t.v)},o(e.$t(t.label)),11,sa)),64))]),t[79]||=g(`span`,{class:`ctl-val`},null,-1)]),g(`div`,ca,[g(`span`,{class:`ctl-name`,title:e.$t(`townView.fpsCapTip`)},o(e.$t(`townView.fpsCapLabel`)),9,la),g(`div`,ua,[(s(),v(b,null,l(Sf,e=>g(`button`,{key:e.v,class:c({on:E(xf)===e.v}),onClick:t=>Cf(e.v)},o(e.label),11,da)),64))]),t[80]||=g(`span`,{class:`ctl-val`},null,-1)]),g(`p`,fa,o(e.$t(`townView.secEnv`)),1),g(`div`,pa,[g(`span`,ma,o(e.$t(`townView.k1gizopz061`)),1),g(`input`,{class:`ctl-range`,type:`range`,min:`30`,max:`220`,value:Math.round(E(Af)*100),style:n({"--fill":Mf(Math.round(E(Af)*100),30,220)}),onInput:t[18]||=e=>Nf(e)},null,44,ha),g(`span`,ga,o(Math.round(E(Af)*100))+`%`,1)]),g(`div`,_a,[g(`span`,va,o(e.$t(`townView.k1bcpqto062`)),1),g(`input`,{class:`ctl-range`,type:`range`,min:`10`,max:`100`,value:Math.round(E(jf)*100),style:n({"--fill":Mf(Math.round(E(jf)*100),10,100)}),onInput:t[19]||=e=>Pf(e)},null,44,ya),g(`span`,ba,o(Math.round(E(jf)*100))+`%`,1)]),g(`div`,xa,[g(`span`,Sa,o(e.$t(`townView.k1bztha1063`)),1),g(`input`,{class:`ctl-range`,type:`range`,min:`60`,max:`120`,value:E(bf),style:n({"--fill":Mf(E(bf),60,120)}),onInput:t[20]||=e=>bf.value=Number(e.target.value)},null,44,Ca),g(`span`,wa,o(E(bf))+`%`,1)]),g(`div`,Ta,[g(`span`,{class:`ctl-name`,title:e.$t(`townView.kz71l1f012`)},o(e.$t(`townView.ka4i1s9064`)),9,Ea),g(`input`,{class:`ctl-range`,type:`range`,min:`0`,max:`3000`,step:`50`,value:E(Kd),style:n({"--fill":Mf(E(Kd),0,3e3)}),onInput:t[21]||=e=>Kd.value=Number(e.target.value)},null,44,Da),g(`span`,Oa,o(E(Kd)===0?e.$t(`townView.k493s144`):`${E(Kd)}`),1)]),g(`p`,ka,o(e.$t(`townView.secOps`)),1),g(`div`,Aa,[g(`span`,ja,o(e.$t(`townView.k1idc6pa065`)),1),g(`button`,{class:c([`snap-toggle`,{on:E(Be)}]),onClick:Ke},o(E(Be)?e.$t(`townView.k4bs5145`):e.$t(`townView.k493s144`)),3),t[81]||=g(`span`,{class:`ctl-val`},null,-1)]),g(`div`,Ma,[g(`button`,{class:`btn btn-primary`,onClick:Ff},o(e.$t(`townView.k1lap9bs024`)),1),g(`button`,{class:`btn btn-ghost`,disabled:E(z)!==`edit`,title:E(z)===`edit`?e.$t(`townView.ksavetip181`):e.$t(`townView.krotip182`),onClick:Ye},o(e.$t(`townView.k1b3bk8t029`)),9,Na),g(`button`,{class:c([`btn btn-danger`,{armed:E(Of)}]),onClick:kf},o(e.$t(`townView.k1i046wf066`)),3)])]),g(`section`,Pa,[g(`div`,Fa,[g(`h3`,null,o(e.$t(`townView.k1kfoef9067`)),1),g(`span`,Ia,o(E(X).length),1),g(`div`,{class:c([`trend-legend`,{expanded:E(Hf)}])},[(s(!0),v(b,null,l(E(Wf),e=>(s(),v(`button`,{key:e.id,class:c([`lg-chip`,{off:!Vf(e.id)}]),onClick:t=>If(e.id)},[g(`span`,{class:`lg-dot`,style:n({background:Bf(e.id)})},null,4),D(o(e.name),1)],10,La))),128)),E(Uf)>0?(s(),v(`button`,{key:0,class:`lg-chip lg-more mono`,title:E(Hf)?e.$t(`townView.trendCollapse`):e.$t(`townView.trendExpandAll`,{p0:E(X).length}),onClick:t[22]||=e=>Hf.value=!E(Hf)},o(E(Hf)?e.$t(`townView.trendCollapse`):`+${E(Uf)}`),9,Ra)):x(``,!0)],2)]),g(`div`,za,[g(`canvas`,{ref_key:`trendCanvas`,ref:Lf,class:`trend-cv`},null,512),E(X).length?x(``,!0):(s(),v(`span`,Ba,o(e.$t(`townView.k1uht2uv068`)),1))])])],2)]),g(`aside`,{id:`town-rail-right`,class:c([`rail rail-right`,{"sheet-open":E(N)===`right`}])},[g(`div`,Va,[t[82]||=g(`span`,{class:`sheet-grip`,"aria-hidden":`true`},null,-1),g(`span`,Ha,o(e.$t(`townView.k17dkhgd112`)),1),g(`button`,{type:`button`,class:`sheet-x`,"aria-label":`关闭`,onClick:ve},` ✕ `)]),f(oe,{name:`ins`},{default:ne(()=>[E(L)?(s(),v(`section`,Ua,[g(`div`,Wa,[g(`h3`,null,o(E(L).kind===`device`?E(Od)?e.$t(`townView.k1ekqxlt146`):E(ld)?e.$t(`townView.k1empnnb178`):e.$t(`townView.k1k6wg8j185`):E(on)),1),g(`button`,{class:`mini-btn`,title:e.$t(`townView.k1bsckft013`),onClick:Qe},` ✕ `,8,Ga)]),g(`div`,Ka,[g(`span`,qa,o(E(L).id.slice(0,8)),1),E(L).kind===`device`&&E(ld)?(s(),v(`span`,Ja,`DAQ`)):E(L).kind===`device`&&E(Od)?(s(),v(`span`,Ya,`DCW`)):x(``,!0)]),E(L).kind===`device`?(s(),v(b,{key:0},[E(Od)?(s(),v(`div`,Xa,[g(`div`,Za,[g(`span`,null,o(e.$t(`townView.k1deqh0d069`)),1),g(`b`,Qa,o(E(Z)?.value==null?`--`:E(Z).value.toFixed(E(Z).decimals))+` `+o(E(Z)?.unit),1)]),g(`div`,$a,[g(`span`,null,o(E(kd)?.src===`recipe`?e.$t(`townView.kq2jssk147`):e.$t(`townView.k1iwj796179`)),1),g(`b`,{class:c({amber:E(kd)?.src===`recipe`})},o(Fd(E(Z))),3)]),g(`div`,eo,[g(`span`,null,o(e.$t(`townView.k1i8rtqt070`)),1),g(`b`,null,o(E(Ad)||e.$t(`townView.k3own4q148`)),1)]),g(`div`,to,[S(g(`input`,{"onUpdate:modelValue":t[23]||=e=>E(bd)[E(L).id]=e,type:`number`,class:`bind-select`,step:10**-(E(Z)?.decimals??2),placeholder:Id(E(Z)),onKeydown:ie(Pd,[`enter`])},null,40,no),[[A,E(bd)[E(L).id],void 0,{number:!0}]]),g(`button`,{class:`bind-add-btn`,disabled:E(bd)[E(L).id]==null||E(bd)[E(L).id]===``,onClick:Pd},o(e.$t(`townView.kwrbtn180`)),9,ro)]),E(xd)[E(L).id]?(s(),v(`p`,io,o(E(xd)[E(L).id]),1)):x(``,!0),E(z)===`edit`?(s(),v(`div`,ao,[S(g(`select`,{"onUpdate:modelValue":t[24]||=e=>p(jd)?jd.value=e:null,class:`bind-select`},[g(`option`,oo,o(e.$t(`townView.kjo6ekr071`)),1),(s(!0),v(b,null,l(E(O).twins.filter(e=>!bu(e)&&e.id!==(E(L)?.id??``)),e=>(s(),v(`option`,{key:e.id,value:e.id},o(e.name),9,so))),128))],512),[[k,E(jd)]]),g(`button`,{class:`bind-add-btn`,disabled:!E(Ad)&&!E(jd),onClick:t[25]||=e=>E(Ad)?Nd():Md()},o(E(Ad)?e.$t(`townView.k479eh149`):e.$t(`townView.k452a8102`)),9,co)])):x(``,!0)])):E(ld)?(s(),v(`div`,lo,[g(`div`,uo,[g(`span`,null,o(e.$t(`townView.k3mv305072`)),1),g(`b`,fo,o(E(dd)?ku(E(dd)):`--`)+` `+o(E(dd)?.tpl.unit),1)]),g(`div`,po,[g(`span`,null,o(e.$t(`townView.k1faqmjb073`)),1),g(`b`,null,o(E(dd)?.tpl.min)+` ~ `+o(E(dd)?.tpl.max),1)]),g(`div`,mo,[g(`span`,null,o(e.$t(`townView.k1i8rtqt070`)),1),g(`b`,null,o(E(md)||e.$t(`townView.k3own4q148`)),1)]),E(z)===`edit`?(s(),v(`div`,ho,[S(g(`select`,{"onUpdate:modelValue":t[26]||=e=>p(fd)?fd.value=e:null,class:`bind-select`},[g(`option`,go,o(e.$t(`townView.kjo6ekr071`)),1),(s(!0),v(b,null,l(E(O).twins.filter(e=>!bu(e)&&e.id!==(E(L)?.id??``)),e=>(s(),v(`option`,{key:e.id,value:e.id},o(e.name),9,_o))),128))],512),[[k,E(fd)]]),g(`button`,{class:`bind-add-btn`,disabled:!E(md)&&!E(fd),onClick:t[27]||=e=>{E(md)?Zu(E(L).id):Xu(E(L).id,E(fd)),fd.value=``}},o(E(md)?e.$t(`townView.k479eh149`):e.$t(`townView.k452a8102`)),9,vo)])):x(``,!0),E(z)===`edit`&&E(Q)?(s(),v(`div`,yo,[g(`div`,bo,[g(`span`,null,o(e.$t(`townView.k1l6g2ga074`)),1),g(`span`,xo,[S(g(`input`,{"onUpdate:modelValue":t[28]||=e=>p(Ld)?Ld.value=e:null,type:`number`,min:`200`,max:`60000`,step:`100`,class:`daq-num`,onChange:Rd},null,544),[[A,E(Ld),void 0,{number:!0}]]),g(`small`,null,o(e.$t(`townView.k1or92b075`)),1)])]),g(`div`,So,[g(`span`,null,o(e.$t(`townView.k3x5tpx076`)),1),g(`span`,Co,[g(`input`,{value:E(Q).warnLow,type:`number`,step:`any`,class:`daq-num`,onChange:t[29]||=e=>zd(`warnLow`,e.target.value)},null,40,wo),t[83]||=D(` ~ `,-1),g(`input`,{value:E(Q).warnHigh,type:`number`,step:`any`,class:`daq-num`,onChange:t[30]||=e=>zd(`warnHigh`,e.target.value)},null,40,To)])]),g(`div`,Eo,[g(`span`,null,o(e.$t(`townView.k1hjj0jf077`)),1),g(`span`,Do,[g(`input`,{value:E(Q).min,type:`number`,step:`any`,class:`daq-num`,onChange:t[31]||=e=>zd(`min`,e.target.value)},null,40,Oo),t[84]||=D(` ~ `,-1),g(`input`,{value:E(Q).max,type:`number`,step:`any`,class:`daq-num`,onChange:t[32]||=e=>zd(`max`,e.target.value)},null,40,ko)])]),g(`div`,Ao,[g(`span`,null,o(e.$t(`townView.k48tki078`)),1),g(`button`,{class:c([`bind-add-btn`,{warn:E(Q).enabled}]),onClick:t[33]||=e=>E(J).patchNode(E(L).id,{enabled:!E(Q).enabled})},o(E(Q).enabled?e.$t(`townView.k1wv0nyo150`):e.$t(`townView.kh1586b180`)),3)]),g(`div`,jo,[g(`span`,null,o(e.$t(`townView.k3xakp079`)),1),g(`button`,{class:`bind-add-btn danger`,title:e.$t(`townView.kpwutri014`),onClick:t[34]||=e=>bt()},o(e.$t(`townView.k1bpp30k080`)),9,Mo)])])):(s(),v(`div`,No,o(e.$t(`townView.kzk5dfx081`)),1))])):(s(),v(b,{key:2},[g(`div`,Po,[g(`span`,Fo,o(e.$t(`townView.k3xhia082`)),1),S(g(`input`,{"onUpdate:modelValue":t[35]||=e=>p(ut)?ut.value=e:null,class:`obj-input`,placeholder:e.$t(`townView.k1k6vbaf015`),disabled:E(z)!==`edit`,title:E(z)===`edit`?`设备名称`:`运行模式只读`,onChange:gt,onKeydown:ie(gt,[`enter`])},null,40,Io),[[A,E(ut)]])]),g(`div`,Lo,[g(`span`,Ro,o(e.$t(`townView.k41amp083`)),1),g(`select`,{class:`obj-select`,value:E(F)?.getDeviceModelRef?.(E(L).id)??``,disabled:E(z)!==`edit`,onChange:t[36]||=e=>vt(e.target.value)},[(s(!0),v(b,null,l(E(lt),e=>(s(),v(`option`,{key:e.id,value:e.id},o(e.name),9,Bo))),128))],40,zo)]),g(`div`,Vo,o(e.$t(`townView.k1vtyk05130`))+` `+o(E(pd).length)+` `+o(e.$t(`townView.k3vfpz5138`)),1),(s(!0),v(b,null,l(E(pd),t=>(s(),v(`div`,{key:t.daqId,class:`bind-row`},[g(`span`,Ho,[f(i,{class:`bind-svg`,icon:t.icon},null,8,[`icon`])]),g(`span`,Uo,[g(`span`,Wo,o(t.ch),1),g(`span`,Go,[g(`b`,null,o(t.value),1),D(` `+o(t.unit)+` · `+o(t.name),1)])]),g(`canvas`,{ref_for:!0,ref:e=>sd(t.daqId,e),class:`bind-spark`,width:`56`,height:`20`},null,512),E(z)===`edit`?(s(),v(`button`,{key:0,class:`bind-x`,title:e.$t(`townView.k1k73omv016`),onClick:e=>Zu(t.daqId)},` ✕ `,8,Ko)):x(``,!0)]))),128)),E(pd).length?x(``,!0):(s(),v(`div`,qo,o(e.$t(`townView.kgpuqhb084`)),1)),E(z)===`edit`?(s(),v(`div`,Jo,[g(`button`,{class:`bind-add`,onClick:t[37]||=e=>nd(`daq`,e)},o(e.$t(`townView.kvm0lin085`)),1),E($u)?(s(),v(`div`,{key:0,class:`bind-pop`,style:n({maxHeight:`${E(td)}px`})},[(s(!0),v(b,null,l(E(gu),t=>(s(),v(b,{key:t.id},[E(rd)[t.id]?.length?(s(),v(`div`,Yo,[g(`span`,Xo,o(t.name)+` · `+o(t.ch),1),(s(!0),v(b,null,l(E(rd)[t.id],t=>(s(),v(`button`,{key:t.id,"data-node-id":t.id,title:t.devName?e.$t(`townView.k2bindr0007`,{p0:t.devName}):e.$t(`townView.k2bindr0008`),onClick:e=>ad(t.id)},[f(i,{class:`bind-svg`,icon:t.tpl.icon},null,8,[`icon`]),g(`span`,null,[D(o(t.name),1),t.devName?(s(),v(`i`,Qo,`→ `+o(t.devName),1)):t.placed?x(``,!0):(s(),v(`i`,$o,o(e.$t(`townView.k2bindr0009`)),1))])],8,Zo))),128))])):x(``,!0)],64))),128)),E(id)?x(``,!0):(s(),v(`div`,es,o(e.$t(`townView.k2bindr0010`)),1))],4)):x(``,!0)])):x(``,!0),g(`div`,ts,o(e.$t(`townView.ktzir2t131`))+` `+o(E(_d).length)+` `+o(e.$t(`townView.k4l1w042`)),1),(s(!0),v(b,null,l(E(_d),t=>(s(),v(`div`,{key:t.dcwId,class:`dcw-row`},[g(`div`,ns,[g(`span`,rs,[f(i,{class:`bind-svg`,icon:t.icon},null,8,[`icon`])]),g(`span`,is,[g(`span`,as,[D(o(t.ch),1),t.rMin!=null||t.rMax!=null?(s(),v(`i`,os,o(e.$t(`townView.k48grv086`)),1)):x(``,!0)]),g(`span`,ss,o(t.name),1)]),g(`span`,cs,[g(`b`,null,o(t.value==null?`--`:t.value.toFixed(t.decimals)),1),g(`i`,null,o(t.unit),1)]),E(z)===`edit`?(s(),v(`button`,{key:0,class:`bind-x`,title:e.$t(`townView.k1k73omv016`),onClick:e=>Dd(t.dcwId)},` ✕ `,8,ls)):x(``,!0)]),g(`div`,{class:c([`dcw-win`,{recipe:t.rMin!=null||t.rMax!=null}])},[g(`em`,null,o(t.rMin!=null||t.rMax!=null?e.$t(`townView.k1l3m0hx151`):e.$t(`townView.k1bc6rqf181`)),1),g(`span`,us,o(t.rMin??`-∞`),1),g(`span`,ds,[g(`i`,{style:n({left:`${yd(t)}%`})},null,4)]),g(`span`,fs,o(t.rMax??`+∞`),1)],2),g(`div`,ps,[S(g(`input`,{"onUpdate:modelValue":e=>E(bd)[t.dcwId]=e,type:`number`,step:10**-t.decimals,placeholder:`${t.rMin??t.gMin} ~ ${t.rMax??t.gMax}`,onKeydown:ie(e=>Sd(E(Y).nodeById(t.dcwId)),[`enter`])},null,40,ms),[[A,E(bd)[t.dcwId],void 0,{number:!0}]]),g(`button`,{class:`dcw-send`,disabled:E(bd)[t.dcwId]==null||E(bd)[t.dcwId]===``,title:e.$t(`townView.k15t7izc017`),onClick:e=>Sd(E(Y).nodeById(t.dcwId))},` write `,8,hs)]),E(xd)[t.dcwId]?(s(),v(`small`,gs,o(E(xd)[t.dcwId]),1)):x(``,!0)]))),128)),E(_d).length?x(``,!0):(s(),v(`div`,_s,o(e.$t(`townView.k10smf24087`)),1)),E(z)===`edit`?(s(),v(`div`,vs,[g(`button`,{class:`bind-add`,onClick:t[38]||=e=>nd(`dcw`,e)},o(e.$t(`townView.kvk1vh5088`)),1),E(ed)?(s(),v(`div`,{key:0,class:`bind-pop`,style:n({maxHeight:`${E(td)}px`})},[(s(!0),v(b,null,l(E(au),t=>(s(),v(b,{key:t.id},[E(wd)[t.id]?.length?(s(),v(`div`,ys,[g(`span`,bs,o(t.name)+` · `+o(t.ch),1),(s(!0),v(b,null,l(E(wd)[t.id],t=>(s(),v(`button`,{key:t.id,"data-node-id":t.id,title:t.devName?e.$t(`townView.k2bindr0007`,{p0:t.devName}):e.$t(`townView.k2bindr0008`),onClick:e=>Ed(t.id)},[f(i,{class:`bind-svg`,icon:t.tpl.icon},null,8,[`icon`]),g(`span`,null,[D(o(t.name),1),t.devName?(s(),v(`i`,Ss,`→ `+o(t.devName),1)):t.placed?x(``,!0):(s(),v(`i`,Cs,o(e.$t(`townView.k2bindr0009`)),1))])],8,xs))),128))])):x(``,!0)],64))),128)),E(Td)?x(``,!0):(s(),v(`div`,ws,o(e.$t(`townView.k2bindr0010`)),1))],4)):x(``,!0)])):x(``,!0),E(z)===`edit`?(s(),v(b,{key:4},[t[87]||=g(`div`,{class:`sect-hd`},` 变换 · BLENDER `,-1),g(`div`,Ts,[g(`button`,{class:c([`seg-btn`,{on:E(Ue)===`translate`}]),onClick:t[39]||=e=>We(`translate`)},o(e.$t(`townView.k1hg3167089`)),3),g(`button`,{class:c([`seg-btn`,{on:E(Ue)===`rotate`}]),onClick:t[40]||=e=>We(`rotate`)},o(e.$t(`townView.k1enlg7i090`)),3),g(`button`,{class:c([`seg-btn`,{on:E(Ue)===`scale`}]),onClick:t[41]||=e=>We(`scale`)},o(e.$t(`townView.k1ibjg3j091`)),3)]),g(`div`,Es,[t[85]||=g(`span`,{class:`scale-min`},`0.2×`,-1),g(`input`,{class:`scale-range`,type:`range`,min:`0.2`,max:`5`,step:`0.05`,value:E(L).scale,onInput:t[42]||=e=>Xe(Number(e.target.value)),onChange:t[43]||=e=>Ze(Number(e.target.value))},null,40,Ds),t[86]||=g(`span`,{class:`scale-max`},`5×`,-1)]),g(`div`,Os,o(Math.round(E(L).scale*100))+`% `,1),g(`div`,ks,[g(`button`,{class:c([`btn btn-danger ins-del`,{armed:E(yt)===E(L).id}]),onClick:bt},o(E(yt)===E(L).id?e.$t(`townView.k1w10xa5152`):e.$t(`townView.k121kfef182`)),3)])],64)):(s(),v(`div`,As,o(e.$t(`townView.kt0i3y2092`)),1))],64))],64)):E(L).kind===`agent`?(s(),v(b,{key:1},[g(`div`,js,[g(`span`,{class:`chat-badge`,style:n({"--p-acc":E(Yl)})},o(E(an).slice(0,1).toUpperCase()),5),g(`div`,Ms,[g(`span`,Ns,o(E(an)),1),g(`span`,Ps,[g(`span`,{class:c([`chat-role`,E(K)?.role===`lead`?`r-lead`:`r-worker`])},o(E(sn)),3),g(`span`,{class:c([`chat-state`,`s-${E(K)?.state??`idle`}`])},o(E(cn)),3),E(K)?.harness?(s(),v(`span`,Fs,o(E(K).harness.toUpperCase()),1)):x(``,!0),g(`span`,Is,o(E(q).length+E(rn).length)+` `+o(e.$t(`townView.k4dfq040`)),1)])])]),g(`div`,Ls,[g(`span`,Rs,o(e.$t(`townView.k41amp083`)),1),g(`select`,{class:`obj-select`,value:(E(F)?.getAgentModel?.(E(L).id)??``)||`hero-3d`,disabled:E(z)!==`edit`,onChange:t[44]||=e=>_t(e.target.value)},[(s(!0),v(b,null,l(E(ct),e=>(s(),v(`option`,{key:e.id,value:e.id},o(e.name),9,Bs))),128))],40,zs)]),t[91]||=g(`div`,{class:`obj-sep`},null,-1),g(`div`,Vs,[g(`span`,Hs,o(e.$t(`townView.k1fix3hb093`)),1),g(`span`,Us,o(E(dt)),1),E(z)===`edit`?(s(),v(`button`,{key:0,class:c([`obj-mini`,{on:E(W)}]),title:e.$t(`townView.k13enoy3018`),onClick:ft},o(E(W)?e.$t(`townView.k3slzhc153`):e.$t(`townView.k1f1xmci183`)),11,Ws)):x(``,!0)]),t[92]||=g(`div`,{class:`obj-sep`},null,-1),g(`div`,Gs,o(e.$t(`townView.k1p7nru2094`)),1),(s(!0),v(b,null,l(E(Pu),t=>(s(),v(`div`,{key:t.id,class:`bind-row`},[g(`span`,{class:c([`ins-chip`,t.kind===`dcw`?`accent`:``]),style:{flex:`none`}},o(t.kind===`dcw`?e.$t(`townView.k40ifw097`):e.$t(`townView.k40rjw098`)),3),g(`span`,Ks,[g(`span`,qs,o(qu(t)),1),g(`select`,{class:`bind-select`,style:{"margin-top":`3px`},value:t.mode,title:e.$t(`townView.khqvwix019`),onChange:e=>Gu(t.id,e.target.value)},[g(`option`,Ys,o(e.$t(`townView.k1io1ylm095`)),1),g(`option`,Xs,o(e.$t(`townView.k1duyr8q096`)),1)],40,Js)]),g(`button`,{class:`bind-x`,title:e.$t(`townView.k1k73omv016`),onClick:e=>Wu(t.id)},` ✕ `,8,Zs)]))),128)),E(Pu).length?x(``,!0):(s(),v(`div`,Qs,` 未绑定工业节点 —— 绑定后 Agent 可用 dcw_control / daq_query 工具 `)),E(z)===`edit`?(s(),v(`div`,$s,[S(g(`select`,{"onUpdate:modelValue":t[45]||=e=>p(Fu)?Fu.value=e:null,class:`bind-select`,style:{flex:`none`,width:`62px`}},[g(`option`,ec,o(e.$t(`townView.k40ifw097`)),1),g(`option`,tc,o(e.$t(`townView.k40rjw098`)),1)],512),[[k,E(Fu)]]),S(g(`select`,{"onUpdate:modelValue":t[46]||=e=>p(Iu)?Iu.value=e:null,class:`bind-select`},[g(`option`,nc,o(e.$t(`townView.kurjldk099`)),1),E(Fu)===`dcw`?(s(!0),v(b,{key:0},l(E(Y).nodes,e=>(s(),v(`option`,{key:e.id,value:e.id},o(e.name),9,rc))),128)):(s(!0),v(b,{key:1},l(E(J).nodes,e=>(s(),v(`option`,{key:e.id,value:e.id},o(e.name),9,ic))),128))],512),[[k,E(Iu)]]),S(g(`select`,{"onUpdate:modelValue":t[47]||=e=>p(Lu)?Lu.value=e:null,class:`bind-select`,style:{flex:`none`,width:`76px`}},[g(`option`,ac,o(e.$t(`townView.k45kpj100`)),1),g(`option`,oc,o(e.$t(`townView.k3zul4101`)),1)],512),[[k,E(Lu)]]),g(`button`,{class:`bind-add-btn`,disabled:!E(Iu),onClick:Uu},o(e.$t(`townView.k452a8102`)),9,sc)])):x(``,!0),E(Ru).length?(s(),v(b,{key:2},[g(`div`,cc,o(e.$t(`townView.k1gk2jg7132`))+` `+o(E(Ru).length),1),(s(!0),v(b,null,l(E(Ru),t=>(s(),v(`div`,{key:t.id,class:`approval-card`},[g(`div`,lc,o(t.detail),1),g(`div`,{class:c([`approval-ttl`,{urgent:Mu(t)<=30}])},` ⏱ `+o(Mu(t))+`s `+o(e.$t(`townView.hitlAutoReject`)),3),S(g(`input`,{"onUpdate:modelValue":e=>E(zu)[t.id]=e,class:`dcw-write input-inline`,style:{width:`100%`,"margin-top":`5px`},placeholder:e.$t(`townView.keztqrn020`)},null,8,uc),[[A,E(zu)[t.id]]]),g(`div`,dc,[g(`button`,{class:`bind-add-btn`,onClick:e=>Ku(t.id,!0)},o(e.$t(`townView.kslcozu103`)),9,fc),g(`button`,{class:`bind-add-btn danger`,onClick:e=>Ku(t.id,!1)},o(e.$t(`townView.k14gu3rd104`)),9,pc)])]))),128))],64)):x(``,!0),E(U)&&E(z)===`edit`?(s(),v(b,{key:3},[g(`div`,mc,[g(`span`,hc,o(e.$t(`townView.k3zhy5048`)),1),g(`div`,gc,[g(`button`,{class:c([`seg-btn`,{on:E(U).shape===`ellipse`}]),onClick:t[48]||=e=>{E(U).shape=`ellipse`,pt()}},o(e.$t(`townView.k414bc049`)),3),g(`button`,{class:c([`seg-btn`,{on:E(U).shape===`rect`}]),onClick:t[49]||=e=>{E(U).shape=`rect`,pt()}},o(e.$t(`townView.k43u0g050`)),3)])]),g(`div`,_c,[g(`span`,vc,o(e.$t(`townView.k41lwj105`)),1),S(g(`input`,{"onUpdate:modelValue":t[50]||=e=>E(U).radiusX=e,class:`obj-range`,type:`range`,min:`40`,max:`4000`,step:`8`,onInput:pt,onChange:mt},null,544),[[A,E(U).radiusX,void 0,{number:!0}]]),g(`span`,yc,o(Math.round(E(U).radiusX)),1)]),g(`div`,bc,[g(`span`,xc,o(e.$t(`townView.k45bta106`)),1),S(g(`input`,{"onUpdate:modelValue":t[51]||=e=>E(U).radiusZ=e,class:`obj-range`,type:`range`,min:`40`,max:`4000`,step:`8`,onInput:pt,onChange:mt},null,544),[[A,E(U).radiusZ,void 0,{number:!0}]]),g(`span`,Sc,o(Math.round(E(U).radiusZ)),1)]),g(`button`,{class:`obj-mini danger`,onClick:ht},o(e.$t(`townView.k1w45mzc107`)),1)],64)):(s(),v(`div`,Cc,o(e.$t(`townView.k14s8urm108`)),1)),t[93]||=g(`div`,{class:`obj-sep`},null,-1),g(`div`,wc,[D(o(e.$t(`townView.k1ghjbfc133`))+` `+o(E(an))+` `,1),g(`button`,{class:`mini-btn chat-refresh`,title:e.$t(`townView.k15avt7g021`),onClick:Jl},o(E(ln)?`…`:`↻`),9,Tc)]),g(`div`,{ref_key:`chatScroll`,ref:dn,class:`rpg-lines chat-embed`},[E(ln)?(s(),v(`div`,Ec,o(e.$t(`townView.kkhlx5h109`)),1)):x(``,!0),E(q).length?(s(),v(b,{key:1},[g(`div`,Dc,o(e.$t(`townView.k768cnt134`))+` `+o(E(q).length),1),(s(!0),v(b,null,l(E(q),e=>(s(),v(`div`,{key:e.id,class:`rpg-line hist`},[g(`span`,Oc,o(Zl(e.at)),1),g(`div`,kc,[Xl(e.kind)?(s(),v(`span`,{key:0,class:c([`rpg-kind`,`k-${e.kind}`])},o(Xl(e.kind)),3)):x(``,!0),g(`span`,Ac,o(e.text),1)])]))),128))],64)):x(``,!0),E(rn).length?(s(),v(`div`,jc,o(e.$t(`townView.k1cwz73k135`))+` `+o(E(rn).length),1)):x(``,!0),(s(!0),v(b,null,l(E(rn),e=>(s(),v(`div`,{key:e.id,class:`rpg-line live`},[g(`span`,Mc,o(Zl(e.at)),1),g(`div`,Nc,[g(`span`,Pc,o(e.text),1)])]))),128)),E(K)?.state===`busy`?(s(),v(`div`,Fc,[t[88]||=g(`span`,{class:`ty-dot`},null,-1),t[89]||=g(`span`,{class:`ty-dot`},null,-1),t[90]||=g(`span`,{class:`ty-dot`},null,-1),g(`span`,Ic,o(e.$t(`townView.k3o5tz9110`)),1)])):x(``,!0),!E(ln)&&!E(q).length&&!E(rn).length?(s(),v(`div`,Lc,o(e.$t(`townView.k1qkqld7111`)),1)):x(``,!0)],512)],64)):x(``,!0)])):x(``,!0)]),_:1}),g(`section`,Rc,[g(`div`,zc,[g(`h3`,null,o(e.$t(`townView.k17dkhgd112`)),1)]),g(`div`,Bc,[g(`div`,Vc,[g(`canvas`,{ref_key:`donutCanvas`,ref:df,width:`118`,height:`118`},null,512),g(`div`,Hc,[g(`b`,{style:n({color:E(uf)})},o(E(lf))+`%`,5),g(`span`,null,o(e.$t(`townView.k7h1nxo113`)),1)])]),g(`div`,Uc,[g(`div`,Wc,[t[94]||=g(`span`,{class:`hl-dot`,style:{background:`var(--hud-accent)`}},null,-1),D(` `+o(e.$t(`townView.k3vp67i114`))+` `,1),g(`span`,Gc,o(E($d)),1)]),g(`div`,Kc,[t[95]||=g(`span`,{class:`hl-dot`,style:{background:`var(--hud-amber)`}},null,-1),D(` `+o(e.$t(`townView.k3zcvb115`))+` `,1),g(`span`,qc,o(E(of)),1)]),g(`div`,Jc,[t[96]||=g(`span`,{class:`hl-dot`,style:{background:`var(--hud-danger)`}},null,-1),D(` `+o(e.$t(`townView.k3xmid116`))+` `,1),g(`span`,Yc,o(E(sf)),1)]),g(`div`,Xc,[t[97]||=g(`span`,{class:`hl-dot`,style:{background:`#3a4a63`}},null,-1),D(` `+o(e.$t(`townView.statesOffline`))+` `,1),g(`span`,Zc,o(E(cf)),1)])])])]),g(`section`,Qc,[g(`div`,$c,[g(`h3`,null,o(e.$t(`townView.k1q247fn117`)),1),g(`span`,el,o(E(O).twins.length),1)]),f(a,{class:`kd-embed`,"daq-live":E(qd),"dcw-live":E(Jd),onFocusDevice:qt},null,8,[`daq-live`,`dcw-live`])]),g(`section`,tl,[g(`div`,nl,[g(`h3`,null,o(e.$t(`townView.k1cxf749118`)),1),g(`span`,rl,o(E(_f))+` `+o(e.$t(`townView.k4dfq040`)),1),g(`button`,{class:`mini-btn`,title:e.$t(`townView.k1bkswpz022`),onClick:yf},` ✓ `,8,il)]),g(`div`,al,[(s(!0),v(b,null,l(E(pf).slice(0,8),e=>(s(),v(`div`,{key:e.id,class:`al-row`},[g(`span`,{class:c([`al-ico`,e.state===2?`info`:e.state===1?`warn`:`crit`])},[...t[98]||=[g(`svg`,{class:`al-svg`,viewBox:`0 0 24 24`},[g(`path`,{d:`M12 3 22 20H2L12 3Z`}),g(`path`,{d:`M12 10v4M12 17v.2`})],-1)]],2),g(`div`,ol,[g(`div`,sl,o(e.txt),1),g(`div`,cl,o(e.src)+` · `+o(e.time),1)]),g(`button`,{class:c([`al-state`,`s${e.state}`]),onClick:t=>vf(e.id)},o(hf[e.state]),11,ll)]))),128)),E(pf).length?x(``,!0):(s(),v(`div`,ul,[t[99]||=g(`svg`,{class:`re-ico`,viewBox:`0 0 24 24`},[g(`path`,{d:`M12 3l7 3v5c0 4.6-3 8.2-7 10-4-1.8-7-5.4-7-10V6l7-3Z`}),g(`path`,{d:`m9.2 12.2 2 2 3.6-4`})],-1),g(`span`,null,o(e.$t(`townView.kjz544r119`)),1)]))])]),g(`section`,dl,[g(`div`,fl,[g(`h3`,null,o(e.$t(`townView.k1cxdtq2120`)),1),g(`span`,pl,o(E(iu).length),1)]),g(`div`,ml,[(s(!0),v(b,null,l([...E(iu)].reverse(),(e,t)=>(s(),v(`div`,{key:`${e.at}-${t}`,class:`event-row`},[g(`span`,hl,o(Zl(e.at)),1),g(`span`,{class:`ev-name`,title:e.agentName},o(e.agentName),9,gl),g(`span`,{class:`ev-text`,title:e.text},o(e.text),9,_l)]))),128)),E(iu).length?x(``,!0):(s(),v(`div`,vl,[t[100]||=g(`svg`,{class:`re-ico`,viewBox:`0 0 24 24`},[g(`path`,{d:`M3 12h3l2.5-6 4 12L15 12h6`})],-1),g(`span`,null,o(e.$t(`townView.k2uk6ua121`)),1)]))])]),g(`section`,yl,[g(`div`,bl,[g(`h3`,null,o(e.$t(`townView.kjug2jq122`)),1)]),g(`div`,xl,[g(`div`,{class:`mm-wrap`,title:e.$t(`townView.klfwiqg023`)},[g(`canvas`,{ref_key:`navCanvas`,ref:Xf,class:`nav-cv`,onPointerdown:tp,onPointermove:np,onPointerup:rp,onPointercancel:rp,onWheel:ae(ep,[`prevent`])},null,544)],8,Sl),g(`div`,Cl,[g(`button`,{class:`vp-tool`,title:e.$t(`townView.k1lap9bs024`),onClick:Ff},[...t[101]||=[g(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[g(`path`,{d:`M3 12a9 9 0 1 0 3-6.7M3 4v5h5`})],-1)]],8,wl),g(`button`,{class:`vp-tool`,title:e.$t(`townView.kav8a8k025`),onClick:t[52]||=e=>E(F)?.zoomBy(.22)},[...t[102]||=[g(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[g(`circle`,{cx:`11`,cy:`11`,r:`6.5`}),g(`path`,{d:`m16 16 4.5 4.5M8.5 11h5`})],-1)]],8,Tl),g(`button`,{class:`vp-tool`,title:e.$t(`townView.k1u7uce9026`),onClick:t[53]||=e=>E(F)?.zoomBy(-.18)},[...t[103]||=[g(`svg`,{class:`vp-svg`,viewBox:`0 0 24 24`},[g(`circle`,{cx:`11`,cy:`11`,r:`6.5`}),g(`path`,{d:`m16 16 4.5 4.5M8.5 11h5M11 8.5v5`})],-1)]],8,El)])]),g(`div`,Dl,o(e.$t(`townView.k1gaaodq136`))+o(E(Zf).toFixed(1))+` · `+o(E($t)?.devices?.length??0)+` `+o(e.$t(`townView.k47e16126`)),1)])],2)]),g(`footer`,Ol,[g(`span`,null,[g(`span`,{class:c([`sb-dot`,{red:E(te).state!==`open`}])},null,2),D(o(e.$t(`townView.k1i4g246123`))+` `,1),g(`b`,null,o(E(te).state===`open`?e.$t(`townView.k41k5c154`):E(Re)?e.$t(`townView.k3lmtk3184`):e.$t(`townView.k44c2n186`)),1)]),g(`span`,kl,[D(o(e.$t(`townView.k4a0jt124`))+` `,1),g(`b`,null,o(E(Fe)),1),t[104]||=g(`i`,null,`·`,-1),D(o(e.$t(`townView.k3xdvm125`))+` `,1),g(`b`,null,o(E(Pe)),1),t[105]||=g(`i`,null,`·`,-1),D(o(e.$t(`townView.k47e16126`))+` `,1),g(`b`,null,o(E(Qd)),1)]),g(`span`,Al,o(E(Ne))+` FPS `,1),g(`span`,jl,` © 2026 ABO · DIGITAL TWIN · `+o(e.$t(`townView.k1h5gxpf137`)),1)]),E(N)?(s(),v(`div`,{key:0,class:`sheet-mask`,onClick:ve})):x(``,!0),E(Me)?x(``,!0):(s(),v(`div`,Ml,[t[106]||=g(`div`,{class:`loading-spinner`},null,-1),g(`span`,Nl,o(e.$t(`townView.kvjdqfg059`)),1)]))])}}}),[[`__scopeId`,`data-v-3e78e101`]]),{__name:`WorkshopTownView`});export{fn as n,Ul as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{P as e,R as t,d as n,et as r,pt as i}from"./CSkxz2NX.js";var a={desktop:1024,drawer:900,single:640},o=i(0),s=0,c=null;function l(){typeof window>`u`||c||(c=()=>{o.value=window.innerWidth},window.addEventListener(`resize`,c,{passive:!0}),window.addEventListener(`orientationchange`,c,{passive:!0}),o.value=window.innerWidth)}function u(){typeof window>`u`||!c||(window.removeEventListener(`resize`,c),window.removeEventListener(`orientationchange`,c),c=null)}function d(){typeof window<`u`&&!o.value&&(o.value=window.innerWidth),t(()=>{s+=1,l()}),e(()=>{s=Math.max(0,s-1),s===0&&u()});let i=n(()=>o.value||1440),c=n(()=>i.value<a.single),d=n(()=>i.value<a.drawer),f=n(()=>i.value>=a.drawer&&i.value<a.desktop),p=n(()=>i.value>=a.desktop),m=n(()=>d.value?c.value?`mobile`:`compact`:f.value?`tablet`:`desktop`);return r(()=>{document.documentElement.dataset.vpTier=m.value}),{width:i,tier:m,isMobile:c,isTablet:f,isDesktop:p,isDrawer:d}}export{d as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t}from"./BU83-NnX.js";import{$ as n,S as r,Ut as i,V as a,b as o,ct as s,d as c,f as l,h as u,m as d,p as f,pt as p,tt as m,xt as h,y as g}from"./CSkxz2NX.js";import{s as _}from"./YnQxK3eG.js";import{n as v}from"./DtYHUi5Z.js";import{n as y}from"./KZQX7xoM.js";import{t as b}from"./
|
|
1
|
+
import{a as e,c as t}from"./BU83-NnX.js";import{$ as n,S as r,Ut as i,V as a,b as o,ct as s,d as c,f as l,h as u,m as d,p as f,pt as p,tt as m,xt as h,y as g}from"./CSkxz2NX.js";import{s as _}from"./YnQxK3eG.js";import{n as v}from"./DtYHUi5Z.js";import{n as y}from"./KZQX7xoM.js";import{t as b}from"./BneN7fbu.js";import{t as x}from"./aWWIh8YL.js";import{i as S}from"./DBHNsT1Y.js";import{t as C}from"./BCGafdXT.js";import{t as w}from"./pdk8jLGT.js";import{t as T}from"./BYhEUx8t.js";import{t as E}from"./jZsY8yYz.js";import{t as D}from"./DIaZ2PTo2.js";import{t as O}from"./BDNMzG2s2.js";var k={class:`page-wrap`},A={class:`aw-page-head`},j={class:`sub`},M={class:`gate-title`},N={class:`gate-hint`},P=O(r({__name:`users`,setup(r){let{t:O}=y(),P=D(),F=p(!1),I=p([]),L=p(``),R=c(()=>P.authHeaders()),z=async()=>{if(P.isAdmin){F.value=!0;try{let e=await _(`/api/users`,{headers:R.value,query:{pageSize:100,keyword:L.value||void 0}});I.value=e.data?.items??[]}catch(t){e.error(t instanceof Error?t.message:O(`users.k1br33vc006`))}finally{F.value=!1}}};n(()=>P.isLoggedIn,e=>{e&&z()},{immediate:!0});let B={admin:`volcano`,editor:`blue`,user:`default`},V=c(()=>[{title:O(`users.name`),dataIndex:`name`,key:`name`},{title:O(`users.email`),dataIndex:`email`,key:`email`},{title:O(`users.role`),dataIndex:`role`,key:`role`,width:110},{title:O(`common.status`),dataIndex:`status`,key:`status`,width:90},{title:O(`users.created`),dataIndex:`createdAt`,key:`createdAt`,width:150},{title:O(`common.actions`),key:`action`,width:220}]);function H(e){return O(`users.role${e.charAt(0).toUpperCase()}${e.slice(1)}`)}let U=async(t,n)=>{try{await _(`/api/users/${t.id}`,{method:`PUT`,headers:R.value,body:{role:n}}),e.success(O(`users.krkb23h011`,{p0:t.name,p1:n})),z()}catch(t){e.error(t instanceof Error?t.message:O(`users.k1enhqn3007`))}},W=async t=>{let n=t.status===`active`?`disabled`:`active`;try{await _(`/api/users/${t.id}`,{method:`PUT`,headers:R.value,body:{status:n}}),e.success(O(`users.k1u7u12g012`,{p0:t.name,p1:O(n===`active`?`users.k3xhfg009`:`users.k3wsi1010`)})),z()}catch(t){e.error(t instanceof Error?t.message:O(`users.k1enhqn3007`))}},G=async t=>{try{await _(`/api/users/${t.id}`,{method:`DELETE`,headers:R.value}),e.success(O(`users.knh5f2r013`,{p0:t.name})),z()}catch(t){e.error(t instanceof Error?t.message:O(`users.k1bphrb3008`))}},K=e=>e.id===P.user?.id;return v({title:()=>O(`titles.users`)}),(e,n)=>{let r=C,c=S,p=T,_=x,v=t,y=w,D=E,R=b;return a(),u(`div`,k,[l(`div`,A,[l(`div`,null,[n[2]||=l(`p`,{class:`aw-kicker`},` agentworkshop / identity `,-1),l(`h1`,null,[g(i(h(O)(`users.title`))+` `,1),o(r,{color:`volcano`,class:`admin-tag`},{default:m(()=>[...n[1]||=[l(`span`,{class:`i-tabler-shield-check`},null,-1),g(` admin `,-1)]]),_:1})]),l(`p`,j,i(e.$t(`users.k1flpho5002`)),1)]),o(c,{value:h(L),"onUpdate:value":n[0]||=e=>s(L)?L.value=e:null,placeholder:h(O)(`users.search`),style:{width:`240px`},onSearch:z},null,8,[`value`,`placeholder`])]),h(P).isAdmin?(a(),f(p,{key:1,bordered:!1,class:`table-card`},{default:m(()=>[o(R,{"data-source":h(I),columns:h(V),loading:h(F),"row-key":`id`,size:`small`,pagination:!1},{bodyCell:m(({column:t,record:n})=>[t.key===`role`?(a(),f(r,{key:0,color:B[n.role]},{default:m(()=>[g(i(H(n.role)),1)]),_:2},1032,[`color`])):t.key===`status`?(a(),f(r,{key:1,color:n.status===`active`?`green`:`default`},{default:m(()=>[g(i(n.status===`active`?e.$t(`users.k3xhfg009`):e.$t(`users.k3wsi1010`)),1)]),_:2},1032,[`color`])):t.key===`action`?(a(),f(D,{key:2,size:`small`},{default:m(()=>[o(_,{value:n.role,size:`small`,style:{width:`92px`},disabled:K(n),options:[{value:`user`,label:`user`},{value:`editor`,label:`editor`},{value:`admin`,label:`admin`}],onChange:e=>U(n,e)},null,8,[`value`,`disabled`,`onChange`]),o(v,{size:`small`,type:`text`,disabled:K(n),onClick:e=>W(n)},{default:m(()=>[g(i(n.status===`active`?e.$t(`users.k3wsi1010`):e.$t(`users.k3xhfg009`)),1)]),_:2},1032,[`disabled`,`onClick`]),o(y,{title:e.$t(`users.k1jk2os9001`),disabled:K(n),onConfirm:e=>G(n)},{default:m(()=>[o(v,{size:`small`,type:`text`,danger:``,disabled:K(n)},{default:m(()=>[g(i(e.$t(`users.k3xakp005`)),1)]),_:1},8,[`disabled`])]),_:2},1032,[`title`,`disabled`,`onConfirm`])]),_:2},1024)):d(``,!0)]),_:1},8,[`data-source`,`columns`,`loading`])]),_:1})):(a(),f(p,{key:0,bordered:!1,class:`gate-card`},{default:m(()=>[n[3]||=l(`span`,{class:`i-tabler-lock gate-icon`},null,-1),l(`p`,M,i(e.$t(`users.kpdo6rc003`)),1),l(`p`,N,i(e.$t(`users.k1mue9bl004`)),1)]),_:1}))])}}}),[[`__scopeId`,`data-v-d99c9da7`]]);export{P as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,n}from"./BU83-NnX.js";import{S as r,Ut as i,V as a,Vt as ee,W as te,b as o,ct as s,d as c,dt as l,f as u,h as d,i as f,m as p,p as m,pt as h,tt as g,xt as _,y as v}from"./CSkxz2NX.js";import{d as ne}from"./BJHKLJJU.js";import{n as y}from"./DtYHUi5Z.js";import{n as b}from"./KZQX7xoM.js";import{n as re,r as ie,t as ae}from"./DDgJcSET.js";import{t as oe}from"./aWWIh8YL.js";import{r as se,t as ce}from"./DBHNsT1Y.js";import{i as le,n as ue,t as de}from"./BCGafdXT.js";import{t as fe}from"./pdk8jLGT.js";import{t as pe}from"./jZsY8yYz.js";import{t as me}from"./DZtm4l-P2.js";import{t as he}from"./CClOy-Hz2.js";import{t as x}from"./DIaZ2PTo2.js";import{t as S}from"./BDNMzG2s2.js";import{t as C}from"./D0ZBQrN_2.js";import{t as w}from"./BN6iuJEg2.js";import{t as T}from"./CNs_Ozdc2.js";var E={class:`page`},D={class:`head`},O={class:`sub`},k={class:`toolbar`},A={key:0,class:`admin-note`},j={class:`grid`},M={class:`card-head`},N={class:`name`},P={class:`owner`},F={key:0,class:`desc`},I={class:`member-line`},L={class:`lead-name`},R={key:0,class:`count`},ge={key:1,class:`count`},_e=[`title`],ve={class:`card-foot`},ye=[`title`],z=S(r({__name:`channel-templates`,setup(r){let{t:S}=b();T({layout:`default`});let z=w(),B=x(),V=h([]),H=h([]),U=h(!1),W=async()=>{U.value=!0;try{let[e,t]=await Promise.all([z.listChannelTemplates(),z.listTemplates()]);V.value=e?.data??[],H.value=t?.data??[]}finally{U.value=!1}};W();let G=h(`all`),K=c(()=>{let e=B.user?.id;switch(G.value){case`mine`:return V.value.filter(t=>t.ownerUserId===e);case`public`:return V.value.filter(e=>e.visibility===`public`);case`builtin`:return V.value.filter(e=>e.isBuiltin);default:return V.value}}),q=e=>!e.isBuiltin&&(e.ownerUserId===B.user?.id||B.isAdmin),J=e=>e.isBuiltin?{text:S(`ctpl.k3x23c021`),color:`default`,icon:`i-tabler-lock`}:e.visibility===`public`?{text:S(`ctpl.k3wv1t022`),color:`green`}:{text:S(`ctpl.k447jj023`),color:`default`},be=e=>`templateId`in e?H.value.find(t=>t.id===e.templateId)?.name??e.templateId.slice(0,8):e.inline.name,Y=h(!1),X=l({name:``,description:``,scenarioPrompt:``,workspace:``,visibility:`private`,leadId:``,memberIds:[]}),Z=()=>{X.name=``,X.description=``,X.scenarioPrompt=``,X.workspace=``,X.visibility=`private`,X.leadId=``,X.memberIds=[],Y.value=!0},xe=async()=>{if(!X.name.trim()){e.warning(S(`ctpl.k1i0ji0y024`));return}let t=X.leadId?H.value.find(e=>e.id===X.leadId):void 0,n=X.memberIds.filter(e=>e!==X.leadId).map(e=>({templateId:e,role:`worker`}));try{await z.createChannelTemplate({name:X.name.trim(),description:X.description||void 0,scenarioPrompt:X.scenarioPrompt||void 0,workspace:X.workspace||void 0,lead:t?{name:t.name,harness:t.harness,config:t.config}:null,members:n,visibility:X.visibility}),e.success(S(`ctpl.kyppebc025`)),Y.value=!1,W()}catch(t){e.error(C(t))}},Se=async(t,n)=>{try{await z.updateChannelTemplate(t.id,{visibility:n?`public`:`private`}),e.success(S(n?`ctpl.kkziya3026`:`ctpl.k1xxabaf027`)),W()}catch(t){e.error(C(t))}},Q=h(null),Ce=async t=>{Q.value=t.id;try{let n=(await z.instantiateChannelTemplate(t.id))?.data;e.success(S(`ctpl.kefkfnl030`,{p0:t.name,p1:n?.agentCount??0}))}catch(t){e.error(C(t))}finally{Q.value=null}},$=async t=>{await z.deleteChannelTemplate(t.id),e.success(S(`ctpl.k1oxfuqj028`)),W()};return y({title:()=>S(`titles.ctpl`)}),(e,r)=>{let c=t,l=pe,h=ae,y=de,b=he,x=fe,S=me,C=ce,w=ie,T=oe,z=se,W=ue,we=le,Te=re,Ee=n;return a(),d(`div`,E,[u(`div`,D,[u(`div`,null,[u(`h2`,null,`Channel `+i(e.$t(`ctpl.k1f54iqd029`)),1),u(`p`,O,i(e.$t(`ctpl.k18gglgp011`)),1)]),o(l,null,{default:g(()=>[o(c,{onClick:r[0]||=t=>(`navigateTo`in e?e.navigateTo:_(ne))(`/workshop`)},{default:g(()=>[v(i(e.$t(`ctpl.krpx6qa012`)),1)]),_:1}),o(c,{type:`primary`,onClick:Z},{default:g(()=>[v(i(e.$t(`ctpl.k1efixrj013`)),1)]),_:1})]),_:1})]),u(`div`,k,[o(h,{value:_(G),"onUpdate:value":r[1]||=e=>s(G)?G.value=e:null,size:`small`,options:[{value:`all`,label:e.$t(`chips.chipAll`,{n:_(V).length})},{value:`mine`,label:e.$t(`chips.mine`)},{value:`public`,label:e.$t(`chips.public`)},{value:`builtin`,label:e.$t(`chips.builtin`)}]},null,8,[`value`,`options`]),_(B).isAdmin?(a(),d(`span`,A,[r[10]||=u(`span`,{class:`i-tabler-shield-check`},null,-1),v(` `+i(e.$t(`ctpl.ka1gpdj014`)),1)])):p(``,!0)]),o(S,{spinning:_(U)},{default:g(()=>[u(`div`,j,[(a(!0),d(f,null,te(_(K),t=>(a(),d(`div`,{key:t.id,class:`card`},[u(`div`,M,[u(`span`,N,i(t.name),1),o(y,{color:J(t).color,class:`vis-tag`},{default:g(()=>[J(t).icon?(a(),d(`span`,{key:0,class:ee(J(t).icon)},null,2)):p(``,!0),v(i(J(t).text),1)]),_:2},1032,[`color`]),!t.isBuiltin&&q(t)?(a(),m(b,{key:0,checked:t.visibility===`public`,size:`small`,"checked-children":`公开`,"un-checked-children":`私有`,onChange:e=>Se(t,e===!0)},null,8,[`checked`,`onChange`])):p(``,!0),u(`span`,P,i(t.ownerName??`-`),1)]),t.description?(a(),d(`p`,F,i(t.description),1)):p(``,!0),u(`div`,I,[r[12]||=u(`span`,{class:`i-tabler-users-group`},null,-1),t.lead||t.members.length>0?(a(),d(f,{key:0},[o(y,{color:`gold`},{default:g(()=>[...r[11]||=[v(` lead `,-1)]]),_:1}),u(`span`,L,i(t.lead?.name??be(t.members.find(e=>e.role===`lead`)??t.members[0])),1),t.members.filter(e=>e.role!==`lead`).length>0?(a(),d(`span`,R,`+ `+i(t.members.filter(e=>e.role!==`lead`).length)+` worker`,1)):p(``,!0)],64)):(a(),d(`span`,ge,i(e.$t(`ctpl.k3rx4ps015`)),1))]),t.scenarioPrompt?(a(),d(`div`,{key:1,class:`scenario`,title:t.scenarioPrompt},i(t.scenarioPrompt.slice(0,90))+i(t.scenarioPrompt.length>90?`…`:``),9,_e)):p(``,!0),u(`div`,ve,[t.workspace?(a(),d(`span`,{key:0,class:`ws`,title:t.workspace},[r[13]||=u(`span`,{class:`i-tabler-folder`},null,-1),v(` `+i(t.workspace),1)],8,ye)):p(``,!0),r[14]||=u(`span`,{class:`spacer`},null,-1),q(t)?(a(),m(x,{key:1,title:e.$t(`ctpl.k117jag9001`),onConfirm:e=>$(t)},{default:g(()=>[o(c,{size:`small`,type:`text`,danger:``},{default:g(()=>[v(i(e.$t(`ctpl.k3xakp016`)),1)]),_:1})]),_:1},8,[`title`,`onConfirm`])):p(``,!0),o(c,{size:`small`,type:`primary`,ghost:``,loading:_(Q)===t.id,title:e.$t(`ctpl.knjomku002`),onClick:e=>Ce(t)},{default:g(()=>[v(i(e.$t(`ctpl.k3mr1fo017`)),1)]),_:1},8,[`loading`,`title`,`onClick`])])]))),128)),_(K).length===0?(a(),d(`div`,{key:0,class:`card placeholder`,onClick:Z},[r[15]||=u(`span`,{class:`i-tabler-layout-grid-add big`},null,-1),u(`span`,null,i(e.$t(`ctpl.k19fglby018`)),1)])):p(``,!0)])]),_:1},8,[`spinning`]),o(Ee,{open:_(Y),"onUpdate:open":r[9]||=e=>s(Y)?Y.value=e:null,title:`新建 Channel 模板`,"ok-text":`创建`,"cancel-text":`取消`,onOk:xe},{default:g(()=>[o(Te,{layout:`vertical`},{default:g(()=>[o(w,{label:e.$t(`ctpl.k1f55q76003`)},{default:g(()=>[o(C,{value:_(X).name,"onUpdate:value":r[2]||=e=>_(X).name=e},null,8,[`value`])]),_:1},8,[`label`]),o(w,{label:e.$t(`ctpl.k40gkk004`)},{default:g(()=>[o(C,{value:_(X).description,"onUpdate:value":r[3]||=e=>_(X).description=e},null,8,[`value`])]),_:1},8,[`label`]),o(w,{label:`Lead 模板(实例化时克隆为 channel lead)`},{default:g(()=>[o(T,{value:_(X).leadId,"onUpdate:value":r[4]||=e=>_(X).leadId=e,"allow-clear":``,placeholder:e.$t(`ctpl.k1ju32o7005`),options:_(H).map(e=>({value:e.id,label:`${e.name}(${e.harness})`}))},null,8,[`value`,`placeholder`,`options`])]),_:1}),o(w,{label:e.$t(`ctpl.k5uq1js006`)},{default:g(()=>[o(T,{value:_(X).memberIds,"onUpdate:value":r[5]||=e=>_(X).memberIds=e,mode:`multiple`,placeholder:e.$t(`ctpl.kqmdkc9007`),options:_(H).filter(e=>e.id!==_(X).leadId).map(e=>({value:e.id,label:`${e.name}(${e.harness})`}))},null,8,[`value`,`placeholder`,`options`])]),_:1},8,[`label`]),o(w,{label:e.$t(`ctpl.k1q87yho008`)},{default:g(()=>[o(z,{value:_(X).scenarioPrompt,"onUpdate:value":r[6]||=e=>_(X).scenarioPrompt=e,rows:3},null,8,[`value`])]),_:1},8,[`label`]),o(w,{label:e.$t(`ctpl.kk4u5cr009`)},{default:g(()=>[o(C,{value:_(X).workspace,"onUpdate:value":r[7]||=e=>_(X).workspace=e,placeholder:`data/workspaces/<channelId>`},null,8,[`value`])]),_:1},8,[`label`]),o(w,{label:e.$t(`ctpl.k3lrqn0010`)},{default:g(()=>[o(we,{value:_(X).visibility,"onUpdate:value":r[8]||=e=>_(X).visibility=e},{default:g(()=>[o(W,{value:`private`},{default:g(()=>[v(i(e.$t(`ctpl.k17jfge3019`)),1)]),_:1}),o(W,{value:`public`},{default:g(()=>[v(i(e.$t(`ctpl.k191u0u5020`)),1)]),_:1})]),_:1},8,[`value`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`open`])])}}}),[[`__scopeId`,`data-v-
|
|
1
|
+
import{a as e,c as t,n}from"./BU83-NnX.js";import{S as r,Ut as i,V as a,Vt as ee,W as te,b as o,ct as s,d as c,dt as l,f as u,h as d,i as f,m as p,p as m,pt as h,tt as g,xt as _,y as v}from"./CSkxz2NX.js";import{d as ne}from"./BJHKLJJU.js";import{n as y}from"./DtYHUi5Z.js";import{n as b}from"./KZQX7xoM.js";import{n as re,r as ie,t as ae}from"./DDgJcSET.js";import{t as oe}from"./aWWIh8YL.js";import{r as se,t as ce}from"./DBHNsT1Y.js";import{i as le,n as ue,t as de}from"./BCGafdXT.js";import{t as fe}from"./pdk8jLGT.js";import{t as pe}from"./jZsY8yYz.js";import{t as me}from"./DZtm4l-P2.js";import{t as he}from"./CClOy-Hz2.js";import{t as x}from"./DIaZ2PTo2.js";import{t as S}from"./BDNMzG2s2.js";import{t as C}from"./D0ZBQrN_2.js";import{t as w}from"./BN6iuJEg2.js";import{t as T}from"./CNs_Ozdc2.js";var E={class:`page`},D={class:`head`},O={class:`sub`},k={class:`toolbar`},A={key:0,class:`admin-note`},j={class:`grid`},M={class:`card-head`},N={class:`name`},P={class:`owner`},F={key:0,class:`desc`},I={class:`member-line`},L={class:`lead-name`},R={key:0,class:`count`},ge={key:1,class:`count`},_e=[`title`],ve={class:`card-foot`},ye=[`title`],z=S(r({__name:`channel-templates`,setup(r){let{t:S}=b();T({layout:`default`});let z=w(),B=x(),V=h([]),H=h([]),U=h(!1),W=async()=>{U.value=!0;try{let[e,t]=await Promise.all([z.listChannelTemplates(),z.listTemplates()]);V.value=e?.data??[],H.value=t?.data??[]}finally{U.value=!1}};W();let G=h(`all`),K=c(()=>{let e=B.user?.id;switch(G.value){case`mine`:return V.value.filter(t=>t.ownerUserId===e);case`public`:return V.value.filter(e=>e.visibility===`public`);case`builtin`:return V.value.filter(e=>e.isBuiltin);default:return V.value}}),q=e=>!e.isBuiltin&&(e.ownerUserId===B.user?.id||B.isAdmin),J=e=>e.isBuiltin?{text:S(`ctpl.k3x23c021`),color:`default`,icon:`i-tabler-lock`}:e.visibility===`public`?{text:S(`ctpl.k3wv1t022`),color:`green`}:{text:S(`ctpl.k447jj023`),color:`default`},be=e=>`templateId`in e?H.value.find(t=>t.id===e.templateId)?.name??e.templateId.slice(0,8):e.inline.name,Y=h(!1),X=l({name:``,description:``,scenarioPrompt:``,workspace:``,visibility:`private`,leadId:``,memberIds:[]}),Z=()=>{X.name=``,X.description=``,X.scenarioPrompt=``,X.workspace=``,X.visibility=`private`,X.leadId=``,X.memberIds=[],Y.value=!0},xe=async()=>{if(!X.name.trim()){e.warning(S(`ctpl.k1i0ji0y024`));return}let t=X.leadId?H.value.find(e=>e.id===X.leadId):void 0,n=X.memberIds.filter(e=>e!==X.leadId).map(e=>({templateId:e,role:`worker`}));try{await z.createChannelTemplate({name:X.name.trim(),description:X.description||void 0,scenarioPrompt:X.scenarioPrompt||void 0,workspace:X.workspace||void 0,lead:t?{name:t.name,harness:t.harness,config:t.config}:null,members:n,visibility:X.visibility}),e.success(S(`ctpl.kyppebc025`)),Y.value=!1,W()}catch(t){e.error(C(t))}},Se=async(t,n)=>{try{await z.updateChannelTemplate(t.id,{visibility:n?`public`:`private`}),e.success(S(n?`ctpl.kkziya3026`:`ctpl.k1xxabaf027`)),W()}catch(t){e.error(C(t))}},Q=h(null),Ce=async t=>{Q.value=t.id;try{let n=(await z.instantiateChannelTemplate(t.id))?.data;e.success(S(`ctpl.kefkfnl030`,{p0:t.name,p1:n?.agentCount??0}))}catch(t){e.error(C(t))}finally{Q.value=null}},$=async t=>{await z.deleteChannelTemplate(t.id),e.success(S(`ctpl.k1oxfuqj028`)),W()};return y({title:()=>S(`titles.ctpl`)}),(e,r)=>{let c=t,l=pe,h=ae,y=de,b=he,x=fe,S=me,C=ce,w=ie,T=oe,z=se,W=ue,we=le,Te=re,Ee=n;return a(),d(`div`,E,[u(`div`,D,[u(`div`,null,[u(`h2`,null,`Channel `+i(e.$t(`ctpl.k1f54iqd029`)),1),u(`p`,O,i(e.$t(`ctpl.k18gglgp011`)),1)]),o(l,null,{default:g(()=>[o(c,{onClick:r[0]||=t=>(`navigateTo`in e?e.navigateTo:_(ne))(`/workshop`)},{default:g(()=>[v(i(e.$t(`ctpl.krpx6qa012`)),1)]),_:1}),o(c,{type:`primary`,onClick:Z},{default:g(()=>[v(i(e.$t(`ctpl.k1efixrj013`)),1)]),_:1})]),_:1})]),u(`div`,k,[o(h,{value:_(G),"onUpdate:value":r[1]||=e=>s(G)?G.value=e:null,size:`small`,options:[{value:`all`,label:e.$t(`chips.chipAll`,{n:_(V).length})},{value:`mine`,label:e.$t(`chips.mine`)},{value:`public`,label:e.$t(`chips.public`)},{value:`builtin`,label:e.$t(`chips.builtin`)}]},null,8,[`value`,`options`]),_(B).isAdmin?(a(),d(`span`,A,[r[10]||=u(`span`,{class:`i-tabler-shield-check`},null,-1),v(` `+i(e.$t(`ctpl.ka1gpdj014`)),1)])):p(``,!0)]),o(S,{spinning:_(U)},{default:g(()=>[u(`div`,j,[(a(!0),d(f,null,te(_(K),t=>(a(),d(`div`,{key:t.id,class:`card`},[u(`div`,M,[u(`span`,N,i(t.name),1),o(y,{color:J(t).color,class:`vis-tag`},{default:g(()=>[J(t).icon?(a(),d(`span`,{key:0,class:ee(J(t).icon)},null,2)):p(``,!0),v(i(J(t).text),1)]),_:2},1032,[`color`]),!t.isBuiltin&&q(t)?(a(),m(b,{key:0,checked:t.visibility===`public`,size:`small`,"checked-children":`公开`,"un-checked-children":`私有`,onChange:e=>Se(t,e===!0)},null,8,[`checked`,`onChange`])):p(``,!0),u(`span`,P,i(t.ownerName??`-`),1)]),t.description?(a(),d(`p`,F,i(t.description),1)):p(``,!0),u(`div`,I,[r[12]||=u(`span`,{class:`i-tabler-users-group`},null,-1),t.lead||t.members.length>0?(a(),d(f,{key:0},[o(y,{color:`gold`},{default:g(()=>[...r[11]||=[v(` lead `,-1)]]),_:1}),u(`span`,L,i(t.lead?.name??be(t.members.find(e=>e.role===`lead`)??t.members[0])),1),t.members.filter(e=>e.role!==`lead`).length>0?(a(),d(`span`,R,`+ `+i(t.members.filter(e=>e.role!==`lead`).length)+` worker`,1)):p(``,!0)],64)):(a(),d(`span`,ge,i(e.$t(`ctpl.k3rx4ps015`)),1))]),t.scenarioPrompt?(a(),d(`div`,{key:1,class:`scenario`,title:t.scenarioPrompt},i(t.scenarioPrompt.slice(0,90))+i(t.scenarioPrompt.length>90?`…`:``),9,_e)):p(``,!0),u(`div`,ve,[t.workspace?(a(),d(`span`,{key:0,class:`ws`,title:t.workspace},[r[13]||=u(`span`,{class:`i-tabler-folder`},null,-1),v(` `+i(t.workspace),1)],8,ye)):p(``,!0),r[14]||=u(`span`,{class:`spacer`},null,-1),q(t)?(a(),m(x,{key:1,title:e.$t(`ctpl.k117jag9001`),onConfirm:e=>$(t)},{default:g(()=>[o(c,{size:`small`,type:`text`,danger:``},{default:g(()=>[v(i(e.$t(`ctpl.k3xakp016`)),1)]),_:1})]),_:1},8,[`title`,`onConfirm`])):p(``,!0),o(c,{size:`small`,type:`primary`,ghost:``,loading:_(Q)===t.id,title:e.$t(`ctpl.knjomku002`),onClick:e=>Ce(t)},{default:g(()=>[v(i(e.$t(`ctpl.k3mr1fo017`)),1)]),_:1},8,[`loading`,`title`,`onClick`])])]))),128)),_(K).length===0?(a(),d(`div`,{key:0,class:`card placeholder`,onClick:Z},[r[15]||=u(`span`,{class:`i-tabler-layout-grid-add big`},null,-1),u(`span`,null,i(e.$t(`ctpl.k19fglby018`)),1)])):p(``,!0)])]),_:1},8,[`spinning`]),o(Ee,{open:_(Y),"onUpdate:open":r[9]||=e=>s(Y)?Y.value=e:null,title:`新建 Channel 模板`,"ok-text":`创建`,"cancel-text":`取消`,onOk:xe},{default:g(()=>[o(Te,{layout:`vertical`},{default:g(()=>[o(w,{label:e.$t(`ctpl.k1f55q76003`)},{default:g(()=>[o(C,{value:_(X).name,"onUpdate:value":r[2]||=e=>_(X).name=e},null,8,[`value`])]),_:1},8,[`label`]),o(w,{label:e.$t(`ctpl.k40gkk004`)},{default:g(()=>[o(C,{value:_(X).description,"onUpdate:value":r[3]||=e=>_(X).description=e},null,8,[`value`])]),_:1},8,[`label`]),o(w,{label:`Lead 模板(实例化时克隆为 channel lead)`},{default:g(()=>[o(T,{value:_(X).leadId,"onUpdate:value":r[4]||=e=>_(X).leadId=e,"allow-clear":``,placeholder:e.$t(`ctpl.k1ju32o7005`),options:_(H).map(e=>({value:e.id,label:`${e.name}(${e.harness})`}))},null,8,[`value`,`placeholder`,`options`])]),_:1}),o(w,{label:e.$t(`ctpl.k5uq1js006`)},{default:g(()=>[o(T,{value:_(X).memberIds,"onUpdate:value":r[5]||=e=>_(X).memberIds=e,mode:`multiple`,placeholder:e.$t(`ctpl.kqmdkc9007`),options:_(H).filter(e=>e.id!==_(X).leadId).map(e=>({value:e.id,label:`${e.name}(${e.harness})`}))},null,8,[`value`,`placeholder`,`options`])]),_:1},8,[`label`]),o(w,{label:e.$t(`ctpl.k1q87yho008`)},{default:g(()=>[o(z,{value:_(X).scenarioPrompt,"onUpdate:value":r[6]||=e=>_(X).scenarioPrompt=e,rows:3},null,8,[`value`])]),_:1},8,[`label`]),o(w,{label:e.$t(`ctpl.kk4u5cr009`)},{default:g(()=>[o(C,{value:_(X).workspace,"onUpdate:value":r[7]||=e=>_(X).workspace=e,placeholder:`data/workspaces/<channelId>`},null,8,[`value`])]),_:1},8,[`label`]),o(w,{label:e.$t(`ctpl.k3lrqn0010`)},{default:g(()=>[o(we,{value:_(X).visibility,"onUpdate:value":r[8]||=e=>_(X).visibility=e},{default:g(()=>[o(W,{value:`private`},{default:g(()=>[v(i(e.$t(`ctpl.k17jfge3019`)),1)]),_:1}),o(W,{value:`public`},{default:g(()=>[v(i(e.$t(`ctpl.k191u0u5020`)),1)]),_:1})]),_:1},8,[`value`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`open`])])}}}),[[`__scopeId`,`data-v-b5127862`]]);export{z as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ut as e}from"./CSkxz2NX.js";import{t}from"./CWoJjWmZ.js";function n(n,r,i={}){let a=i.bgMs===void 0?r*3:i.bgMs,o=null;function s(e){c(),e!==null&&e>0&&(o=t(n,e))}function c(){o&&=(clearInterval(o),null)}function l(){document.hidden?s(a):(s(r),n())}s(document.hidden?a:r),document.addEventListener(`visibilitychange`,l),e(()=>{c(),document.removeEventListener(`visibilitychange`,l)})}export{n as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,n}from"./BU83-NnX.js";import{$ as r,R as i,S as a,Ut as o,V as s,Vt as ee,W as c,b as l,ct as u,f as d,h as f,i as p,m,p as h,pt as g,tt as _,xt as v,y}from"./CSkxz2NX.js";import{d as b,f as te}from"./D6uzXueg.js";import{d as x}from"./BJHKLJJU.js";import{s as S}from"./YnQxK3eG.js";import{n as C}from"./DtYHUi5Z.js";import{n as w}from"./KZQX7xoM.js";import{n as ne,t as re}from"./DBHNsT1Y.js";import{n as ie,t as ae}from"./DR12_WCA.js";import{t as oe}from"./BYhEUx8t.js";import{t as se}from"./jZsY8yYz.js";import{t as ce}from"./DZtm4l-P2.js";import{t as T}from"./DIaZ2PTo2.js";import{t as E}from"./BDNMzG2s2.js";import{t as D}from"./
|
|
1
|
+
import{a as e,c as t,n}from"./BU83-NnX.js";import{$ as r,R as i,S as a,Ut as o,V as s,Vt as ee,W as c,b as l,ct as u,f as d,h as f,i as p,m,p as h,pt as g,tt as _,xt as v,y}from"./CSkxz2NX.js";import{d as b,f as te}from"./D6uzXueg.js";import{d as x}from"./BJHKLJJU.js";import{s as S}from"./YnQxK3eG.js";import{n as C}from"./DtYHUi5Z.js";import{n as w}from"./KZQX7xoM.js";import{n as ne,t as re}from"./DBHNsT1Y.js";import{n as ie,t as ae}from"./DR12_WCA.js";import{t as oe}from"./BYhEUx8t.js";import{t as se}from"./jZsY8yYz.js";import{t as ce}from"./DZtm4l-P2.js";import{t as T}from"./DIaZ2PTo2.js";import{t as E}from"./BDNMzG2s2.js";import{t as D}from"./CssgYAAL2.js";import{t as O}from"./D0ZBQrN_2.js";import{n as le,t as ue}from"./BC9wjTJK2.js";import{t as de}from"./CNs_Ozdc2.js";var fe={class:`page`},pe={key:0,class:`auth-gate aw-orbs`},me={class:`sub`},he={class:`hint`},ge={class:`hint`},_e={class:`aw-page-head`},ve={class:`sub`},ye={class:`head-acts`},k={class:`lib-links`},A={class:`grid`},j={class:`card-head`},M={class:`name`},N={class:`card-body`},P=[`onClick`],be={class:`ch-name`},xe={class:`ch-meta`},Se={key:0,class:`empty`},Ce={class:`card-foot`},we=[`onClick`],F=[`onClick`],I=E(a({__name:`index`,setup(a){let{t:E}=w();de({layout:`default`});let I=T(),L=D(),R=le(),{subscribe:Te}=ue(),z=g(`login`),B=g(``),V=g(``),H=g(``),U=g(``),W=g(!1),G=g(!1);i(async()=>{try{let e=await S(`/api/users/setup-status`);e.code===0&&e.data?.needsSetup&&(G.value=!0,z.value=`register`)}catch{}});let K=async()=>{if(!B.value.trim()){e.warning(E(`wsHome.k1vnhyks019`));return}if(!V.value.trim()){e.warning(E(`wsHome.k8ieqzj020`));return}if(H.value.length<6){e.warning(E(`wsHome.ksx73ra021`));return}W.value=!0;try{let t=await I.register(B.value,V.value,H.value);e.success(G.value?`管理员账号创建成功:${t.name} 已进入系统`:E(`wsHome.k1mbatbh030`,{p0:t.name})),G.value=!1,B.value=``,V.value=``,H.value=``}catch(t){e.error(O(t))}finally{W.value=!1}},q=async()=>{if(!V.value.trim()){e.warning(E(`wsHome.k8ieqzj020`));return}W.value=!0;try{let t=await I.login(V.value,H.value);e.success(E(`wsHome.kwixbdl031`,{p0:t.name})),G.value=!1,H.value=``}catch(t){e.error(O(t))}finally{W.value=!1}},J=async()=>{W.value=!0;try{let t=await I.loginWithToken(U.value);e.success(E(`wsHome.kwixbdl031`,{p0:t.name})),G.value=!1,U.value=``}catch(t){e.error(O(t))}finally{W.value=!1}},Ee=()=>{I.logout(),e.success(E(`wsHome.k3ngm6p022`))},Y=g(!1);r(()=>I.isLoggedIn,async t=>{if(!t){Y.value=!1;return}if(await I.refresh(),I.isLoggedIn)try{await L.load(),Y.value=!0}catch(t){e.error(t instanceof Error?t.message:E(`wsHome.k1br33vc023`))}},{immediate:!0}),r(()=>Y.value&&L.workspaces.map(e=>e.channelIds.join(`,`)).join(`|`),()=>{if(Y.value)for(let e of L.workspaces)for(let t of e.channelIds)Te(t)},{immediate:!0});let X=g(!1),Z=g(``),Q=g(!1),$=async()=>{let t=Z.value.trim();if(!t){e.warning(`Workspace 名称必填`);return}Q.value=!0;try{let e=await L.create(t);X.value=!1,Z.value=``,L.setActiveWorkspaceId(e.id),x(`/workshop/w/${e.id}`)}catch(t){e.error(O(t))}finally{Q.value=!1}},De=async t=>{await L.remove(t),e.success(E(`wsHome.k3n5sd7024`))},Oe=e=>e.map(e=>{let t=R.channels[e],n=R.agents[e]??[];return{id:e,name:t?.name??e.slice(0,8),synced:t!==void 0,agents:n.length,busy:n.filter(e=>e.state===`busy`).length,activeTasks:(R.tasks[e]??[]).filter(e=>![`COMPLETED`,`CANCELED`,`FAILED`].includes(e.state)).length}});return C({title:()=>E(`titles.workshop`)}),(e,r)=>{let i=re,a=ne,g=t,S=se,C=ie,w=ae,T=oe,E=ce,D=n;return s(),f(`div`,fe,[v(I).isLoggedIn?(s(),f(p,{key:1},[d(`div`,_e,[d(`div`,null,[r[16]||=d(`p`,{class:`aw-kicker`},` workshop / overview `,-1),d(`h1`,null,`Workshop `+o(e.$t(`wsHome.k3n4m5c025`)),1),d(`p`,ve,o(v(I).user?.name)+` `+o(e.$t(`wsHome.ke16e53026`)),1)]),d(`div`,ye,[d(`div`,k,[d(`button`,{type:`button`,class:`lib-link`,onClick:r[7]||=t=>(`navigateTo`in e?e.navigateTo:v(x))(`/workshop/agents`)},o(e.$t(`wsHome.k3pa5h4013`)),1),d(`button`,{type:`button`,class:`lib-link`,onClick:r[8]||=t=>(`navigateTo`in e?e.navigateTo:v(x))(`/workshop/teams`)},o(e.$t(`wsHome.k3svl8y014`)),1),d(`button`,{type:`button`,class:`lib-link`,onClick:r[9]||=t=>(`navigateTo`in e?e.navigateTo:v(x))(`/workshop/channel-templates`)},` Channel `+o(e.$t(`wsHome.k41ds5027`)),1),d(`button`,{type:`button`,class:`lib-link`,onClick:r[10]||=t=>(`navigateTo`in e?e.navigateTo:v(x))(`/tokens`)},` API Token `),d(`button`,{type:`button`,class:`lib-link`,onClick:Ee},o(e.$t(`wsHome.k484e7015`)),1)]),d(`button`,{class:`aw-pill im`,onClick:r[11]||=e=>X.value=!0},[r[17]||=d(`span`,{class:`i-tabler-plus im-pop`},null,-1),y(` `+o(e.$t(`wsHome.newWs`)),1)])])]),l(E,{spinning:!v(Y)},{default:_(()=>[d(`div`,A,[(s(!0),f(p,null,c(v(L).workspaces,t=>(s(),f(`div`,{key:t.id,class:`card`},[d(`div`,j,[r[18]||=d(`span`,{class:`card-mark`},[d(`span`,{class:`i-tabler-box`})],-1),d(`span`,M,o(t.name),1)]),d(`div`,N,[(s(!0),f(p,null,c(Oe(t.channelIds),n=>(s(),f(`div`,{key:n.id,class:`ch-row`,onClick:n=>(`navigateTo`in e?e.navigateTo:v(x))(`/workshop/w/${t.id}`)},[d(`span`,{class:ee([`dot`,{live:n.activeTasks>0}])},null,2),d(`span`,be,o(n.name),1),d(`span`,xe,[n.synced?(s(),f(p,{key:0},[y(o(n.agents)+` `+o(e.$t(`wsHome.k1ggoa45028`))+` `+o(n.busy)+` / `+o(e.$t(`wsHome.k3wcox029`))+` `+o(n.activeTasks),1)],64)):(s(),f(p,{key:1},[y(o(e.$t(`wsHome.k1bst7s9016`)),1)],64))])],8,P))),128)),t.channelIds.length===0?(s(),f(`div`,Se,o(e.$t(`wsHome.k1ylgrbc017`)),1)):m(``,!0)]),d(`div`,Ce,[d(`button`,{class:`aw-pill outline im`,onClick:n=>(`navigateTo`in e?e.navigateTo:v(x))(`/workshop/w/${t.id}`)},[r[19]||=d(`span`,{class:`i-tabler-arrow-right im-pop`},null,-1),y(` `+o(e.$t(`wsHome.kr1uwwi018`)),1)],8,we),d(`button`,{class:`aw-ghost im`,title:`删除 Workspace`,onClick:te(e=>De(t.id),[`stop`])},[...r[20]||=[d(`span`,{class:`i-tabler-trash im-shake`},null,-1)]],8,F)])]))),128)),v(L).workspaces.length===0&&v(Y)?(s(),f(`button`,{key:0,class:`ws-empty`,onClick:r[12]||=e=>X.value=!0},[...r[21]||=[d(`span`,{class:`i-tabler-layout-2 ws-empty-ico`},null,-1),d(`span`,{class:`aw-empty-title`},`从一条产线、一个 Agent 开始`,-1),d(`span`,{class:`aw-empty-sub`},`Workspace 是频道与任务的容器 —— 建立第一个工作区后,你的 Agent 团队即可上线作业。`,-1),d(`span`,{class:`pill-btn ws-empty-cta`},[d(`span`,{class:`i-tabler-plus`}),y(` 新建第一个 Workspace `)],-1)]])):m(``,!0)])]),_:1},8,[`spinning`]),l(D,{open:v(X),"onUpdate:open":r[14]||=e=>u(X)?X.value=e:null,title:e.$t(`wsHome.newWs`),"confirm-loading":v(Q),"ok-text":`创建并进入`,"cancel-text":`取消`,onOk:$},{default:_(()=>[l(i,{value:v(Z),"onUpdate:value":r[13]||=e=>u(Z)?Z.value=e:null,placeholder:e.$t(`wsHome.ksmpk8l007`),onKeydown:b($,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`open`,`title`,`confirm-loading`])],64)):(s(),f(`div`,pe,[l(T,{class:`auth-card`},{default:_(()=>[r[15]||=d(`p`,{class:`aw-kicker`},` agentworkshop / sign in `,-1),d(`h2`,null,o(v(G)?`创建管理员账号`:e.$t(`wsHome.kr0vzqu008`)),1),d(`p`,me,o(v(G)?`系统尚无任何用户:首个注册的账号将成为管理员,创建后自动进入系统。`:`全局用户系统统管身份;每个用户可管理多个 API Token,管理 API 需用户 token(Authorization: Bearer)。`),1),l(w,{"active-key":v(z),"onUpdate:activeKey":r[6]||=e=>u(z)?z.value=e:null},{default:_(()=>[v(G)?m(``,!0):(s(),h(C,{key:`login`,tab:`账号登录`},{default:_(()=>[l(S,{direction:`vertical`,style:{width:`100%`}},{default:_(()=>[l(i,{value:v(V),"onUpdate:value":r[0]||=e=>u(V)?V.value=e:null,type:`email`,placeholder:e.$t(`wsHome.k48h2c001`),onKeydown:b(q,[`enter`])},null,8,[`value`,`placeholder`]),l(a,{value:v(H),"onUpdate:value":r[1]||=e=>u(H)?H.value=e:null,placeholder:e.$t(`wsHome.k3yvgs002`),onKeydown:b(q,[`enter`])},null,8,[`value`,`placeholder`]),l(g,{type:`primary`,block:``,loading:v(W),onClick:q},{default:_(()=>[y(o(e.$t(`wsHome.k43kol009`)),1)]),_:1},8,[`loading`]),d(`p`,he,o(e.$t(`wsHome.k17x74cj010`)),1)]),_:1})]),_:1})),l(C,{key:`register`,tab:v(G)?`注册管理员`:`注册新用户`},{default:_(()=>[l(S,{direction:`vertical`,style:{width:`100%`}},{default:_(()=>[l(i,{value:v(B),"onUpdate:value":r[2]||=e=>u(B)?B.value=e:null,placeholder:e.$t(`wsHome.kwgbai9003`)},null,8,[`value`,`placeholder`]),l(i,{value:v(V),"onUpdate:value":r[3]||=e=>u(V)?V.value=e:null,type:`email`,placeholder:e.$t(`wsHome.kizjkbo004`)},null,8,[`value`,`placeholder`]),l(a,{value:v(H),"onUpdate:value":r[4]||=e=>u(H)?H.value=e:null,placeholder:e.$t(`wsHome.kh3cqfn005`),onKeydown:b(K,[`enter`])},null,8,[`value`,`placeholder`]),l(g,{type:`primary`,block:``,loading:v(W),onClick:K},{default:_(()=>[y(o(v(G)?`创建管理员并进入`:e.$t(`wsHome.k1so6a0v011`)),1)]),_:1},8,[`loading`]),d(`p`,ge,o(e.$t(`wsHome.k1r0a4u3012`)),1)]),_:1})]),_:1},8,[`tab`]),v(G)?m(``,!0):(s(),h(C,{key:`token`,tab:`Token 登录`},{default:_(()=>[l(S,{direction:`vertical`,style:{width:`100%`}},{default:_(()=>[l(a,{value:v(U),"onUpdate:value":r[5]||=e=>u(U)?U.value=e:null,placeholder:e.$t(`wsHome.k15qunld006`),onKeydown:b(J,[`enter`])},null,8,[`value`,`placeholder`]),l(g,{type:`primary`,block:``,loading:v(W),onClick:J},{default:_(()=>[y(o(e.$t(`wsHome.k43kol009`)),1)]),_:1},8,[`loading`])]),_:1})]),_:1}))]),_:1},8,[`active-key`])]),_:1})]))])}}}),[[`__scopeId`,`data-v-c28be202`]]);export{I as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./BU83-NnX.js";import{C as t}from"./DdD9mCHM.js";import{R as n,S as ee,Ut as r,V as i,Vt as a,W as o,d as s,dt as c,f as l,h as u,i as d,m as f,nt as p,p as te,pt as m,s as ne,xt as h,y as g}from"./CSkxz2NX.js";import{c as _,d as re,f as ie,l as v}from"./D6uzXueg.js";import{t as y}from"./BDNMzG2s2.js";import{t as ae}from"./D0ZBQrN_2.js";import{t as oe}from"./BC9wjTJK2.js";import{t as se}from"./D8qvkfyY.js";import{t as ce}from"./CFxtLwjp.js";var le={class:`page`},ue={class:`aw-page-head`},de={class:`sub`},fe={class:`head-actions`},pe=[`title`],b={class:`live-txt mono`},x={class:`filter-card`},S={class:`flt`},C={value:``},w=[`value`],T={class:`flt`},E={value:``},D=[`value`],O={class:`flt`},k={value:``},A=[`value`],j={class:`flt`},M={value:``},N={value:`user`},P={value:`system`},F={class:`flt`},I={value:``},L=[`value`],R={class:`flt flt-grow`},z=[`placeholder`],B=[`disabled`],me={class:`table-card`},he={key:0,class:`err`},ge={class:`log-table`},_e={class:`th-time`},ve={class:`th-src`},ye={class:`th-kind`},be={class:`th-scope`},xe={class:`th-detail`},Se={class:`mono dim`},Ce={class:`actor`},we={class:`summary`},Te={class:`mono dim action`},Ee={class:`scope`},De=[`title`],Oe=[`title`],ke={key:2,class:`scope-chip`,title:`Recipe`},Ae={key:3,class:`dim`},je={class:`detail-cell`},Me=[`onClick`],Ne={key:1,class:`dim`},Pe={key:0,class:`log-detail-row`},Fe={colspan:`7`,class:`detail-td`},V={class:`detail-box mono`},Ie={class:`log-empty-row`},Le={key:0,colspan:`7`,class:`empty`},Re={class:`modal`},ze={class:`m-title`},Be={class:`m-f`},Ve=[`placeholder`],He={class:`m-f`},Ue=[`placeholder`],We={class:`m-grid`},Ge={class:`m-f`},Ke={value:``},qe=[`value`],Je={class:`m-f`},Ye={value:``},Xe=[`value`],Ze={class:`m-f`},Qe={value:``},$e=[`value`],et={key:0,class:`err`},tt={class:`m-actions`},nt=[`disabled`],H=y(ee({name:`OpsLogsPage`,setup(ee){let y=e=>t().$i18n.t(e),H=se(),rt=oe(),U=ce(),it=[`write`,`manual`,`alarm`,`line`,`recipe`,`rollback`,`daq`,`system`],W=c({lineId:``,productId:``,recipeId:``,actorKind:``,kind:``,text:``}),G=m(null),K=m(!1),q=c({summary:``,detail:``,lineId:``,productId:``,recipeId:``}),at=s(()=>!!(W.lineId||W.productId||W.recipeId||W.actorKind||W.kind||W.text.trim())),J=s(()=>H.products.filter(e=>!W.lineId||e.lineId===W.lineId)),Y=s(()=>H.recipes.filter(e=>(!W.lineId||e.lineId===W.lineId)&&(!W.productId||e.productId===W.productId)));function X(){U.fetchLogs({lineId:W.lineId,productId:W.productId,recipeId:W.recipeId,actorKind:W.actorKind,kind:W.kind,q:W.text.trim(),limit:300}),G.value=null}function ot(){W.lineId=``,W.productId=``,W.recipeId=``,W.actorKind=``,W.kind=``,W.text=``,X()}function st(){q.summary=``,q.detail=``,q.lineId=W.lineId,q.productId=W.productId,q.recipeId=W.recipeId,K.value=!0}async function ct(){try{let t=q.detail.trim();await U.postManual({summary:q.summary.trim(),lineId:q.lineId,productId:q.productId,recipeId:q.recipeId,...t?{detail:{note:t}}:{}}),e.success(y(`logs.mOk`)),K.value=!1,X()}catch(t){e.error(ae(t))}}function lt(e){return!!e.detailJson&&e.detailJson!==`{}`}function ut(e){G.value=G.value===e.id?null:e.id}function dt(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function ft(e){let t=new Date(e);if(!Number.isFinite(t.getTime()))return e;let n=e=>String(e).padStart(2,`0`);return`${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function pt(e){return e===`agent`?`Agent`:y(e===`user`?`logs.src.user`:`logs.src.system`)}function mt(e){return e?y(`logs.kind.${e}`):`—`}function Z(e){return H.lines.find(t=>t.id===e)?.name??``}function Q(e){return H.products.find(t=>t.id===e)?.name??``}function $(e){return H.recipes.find(t=>t.id===e)?.name??``}return n(()=>{rt.ensureConnected(),U.ensureLive(),H.load(),X()}),(e,t)=>(i(),u(`div`,le,[l(`header`,ue,[l(`div`,null,[t[17]||=l(`p`,{class:`aw-kicker`},` agentworkshop / audit log `,-1),l(`h1`,null,r(e.$t(`logs.title`)),1),l(`p`,de,r(e.$t(`logs.sub`)),1)]),l(`div`,fe,[l(`span`,{class:`live-dot`,title:e.$t(`logs.liveHint`)},null,8,pe),l(`span`,b,r(e.$t(`logs.live`))+` `+r(h(U).recent.length),1),l(`button`,{class:`pill-btn`,onClick:st},[t[18]||=l(`span`,{class:`i-tabler-plus`},null,-1),g(` `+r(e.$t(`logs.manual`)),1)])])]),l(`section`,x,[l(`label`,S,[l(`span`,null,r(e.$t(`logs.fLine`)),1),p(l(`select`,{"onUpdate:modelValue":t[0]||=e=>W.lineId=e,class:`inp-sel`,onChange:t[1]||=e=>{W.productId=``,W.recipeId=``}},[l(`option`,C,r(e.$t(`logs.all`)),1),(i(!0),u(d,null,o(h(H).lines,e=>(i(),u(`option`,{key:e.id,value:e.id},r(e.name),9,w))),128))],544),[[_,W.lineId]])]),l(`label`,T,[l(`span`,null,r(e.$t(`logs.fProduct`)),1),p(l(`select`,{"onUpdate:modelValue":t[2]||=e=>W.productId=e,class:`inp-sel`,onChange:t[3]||=e=>W.recipeId=``},[l(`option`,E,r(e.$t(`logs.all`)),1),(i(!0),u(d,null,o(J.value,e=>(i(),u(`option`,{key:e.id,value:e.id},r(e.name),9,D))),128))],544),[[_,W.productId]])]),l(`label`,O,[t[19]||=l(`span`,null,`Recipe`,-1),p(l(`select`,{"onUpdate:modelValue":t[4]||=e=>W.recipeId=e,class:`inp-sel`},[l(`option`,k,r(e.$t(`logs.all`)),1),(i(!0),u(d,null,o(Y.value,e=>(i(),u(`option`,{key:e.id,value:e.id},r(e.name),9,A))),128))],512),[[_,W.recipeId]])]),l(`label`,j,[l(`span`,null,r(e.$t(`logs.fSource`)),1),p(l(`select`,{"onUpdate:modelValue":t[5]||=e=>W.actorKind=e,class:`inp-sel`},[l(`option`,M,r(e.$t(`logs.all`)),1),l(`option`,N,r(e.$t(`logs.src.user`)),1),t[20]||=l(`option`,{value:`agent`},` Agent `,-1),l(`option`,P,r(e.$t(`logs.src.system`)),1)],512),[[_,W.actorKind]])]),l(`label`,F,[l(`span`,null,r(e.$t(`logs.fKind`)),1),p(l(`select`,{"onUpdate:modelValue":t[6]||=e=>W.kind=e,class:`inp-sel`},[l(`option`,I,r(e.$t(`logs.all`)),1),(i(),u(d,null,o(it,t=>l(`option`,{key:t,value:t},r(e.$t(`logs.kind.${t}`)),9,L)),64))],512),[[_,W.kind]])]),l(`label`,R,[l(`span`,null,r(e.$t(`logs.fKeyword`)),1),p(l(`input`,{"onUpdate:modelValue":t[7]||=e=>W.text=e,class:`inp-sel`,type:`search`,placeholder:e.$t(`logs.fKeywordPh`),onKeydown:re(X,[`enter`])},null,40,z),[[v,W.text]])]),l(`button`,{class:`pill-btn`,disabled:h(U).loading.list,onClick:X},[t[21]||=l(`span`,{class:`i-tabler-search`},null,-1),g(` `+r(e.$t(`logs.query`)),1)],8,B),at.value?(i(),u(`button`,{key:0,class:`mini-btn`,onClick:ot},r(e.$t(`logs.reset`)),1)):f(``,!0)]),l(`section`,me,[h(U).error.list?(i(),u(`p`,he,r(h(U).error.list),1)):f(``,!0),l(`table`,ge,[l(`thead`,null,[l(`tr`,null,[l(`th`,_e,r(e.$t(`logs.thTime`)),1),l(`th`,ve,r(e.$t(`logs.fSource`)),1),l(`th`,null,r(e.$t(`logs.thActor`)),1),l(`th`,ye,r(e.$t(`logs.fKind`)),1),l(`th`,null,r(e.$t(`logs.thSummary`)),1),l(`th`,be,r(e.$t(`logs.thScope`)),1),l(`th`,xe,r(e.$t(`logs.thDetail`)),1)])]),l(`tbody`,null,[(i(!0),u(d,null,o(h(U).results,t=>(i(),u(d,{key:t.id},[l(`tr`,null,[l(`td`,Se,r(ft(t.at)),1),l(`td`,null,[l(`span`,{class:a([`src-badge`,t.actorKind])},r(pt(t.actorKind)),3)]),l(`td`,Ce,r(t.actorName||t.actor||`—`),1),l(`td`,null,[l(`span`,{class:a([`kind-chip`,t.kind])},r(mt(t.kind)),3)]),l(`td`,we,[g(r(t.summary)+` `,1),l(`small`,Te,r(t.action),1)]),l(`td`,Ee,[Z(t.lineId)?(i(),u(`span`,{key:0,class:`scope-chip`,title:e.$t(`logs.fLine`)},r(Z(t.lineId)),9,De)):f(``,!0),Q(t.productId)?(i(),u(`span`,{key:1,class:`scope-chip`,title:e.$t(`logs.fProduct`)},r(Q(t.productId)),9,Oe)):f(``,!0),$(t.recipeId)?(i(),u(`span`,ke,r($(t.recipeId)),1)):f(``,!0),!t.lineId&&!t.productId&&!t.recipeId?(i(),u(`span`,Ae,`—`)):f(``,!0)]),l(`td`,je,[lt(t)?(i(),u(`button`,{key:0,class:`mini-btn`,onClick:e=>ut(t)},r(G.value===t.id?e.$t(`logs.fold`):e.$t(`logs.expand`)),9,Me)):(i(),u(`span`,Ne,r(e.$t(`logs.noDetail`)),1))])]),G.value===t.id?(i(),u(`tr`,Pe,[l(`td`,Fe,[l(`pre`,V,r(dt(t.detailJson)),1)])])):f(``,!0)],64))),128)),l(`tr`,Ie,[h(U).results.length===0?(i(),u(`td`,Le,[h(U).loading.list?(i(),u(d,{key:0},[g(r(e.$t(`logs.loading`)),1)],64)):(i(),u(d,{key:1},[g(r(e.$t(`logs.empty`)),1)],64))])):f(``,!0)])])])]),(i(),te(ne,{to:`body`},[K.value?(i(),u(`div`,{key:0,class:`modal-mask`,onClick:t[16]||=ie(e=>K.value=!1,[`self`])},[l(`div`,Re,[l(`h3`,ze,r(e.$t(`logs.manual`)),1),l(`label`,Be,[l(`span`,null,r(e.$t(`logs.mSummary`))+` *`,1),p(l(`textarea`,{"onUpdate:modelValue":t[8]||=e=>q.summary=e,rows:`3`,placeholder:e.$t(`logs.mSummaryPh`)},null,8,Ve),[[v,q.summary]])]),l(`label`,He,[l(`span`,null,r(e.$t(`logs.mDetail`)),1),p(l(`textarea`,{"onUpdate:modelValue":t[9]||=e=>q.detail=e,rows:`2`,placeholder:e.$t(`logs.mDetailPh`)},null,8,Ue),[[v,q.detail]])]),l(`div`,We,[l(`label`,Ge,[l(`span`,null,r(e.$t(`logs.fLine`)),1),p(l(`select`,{"onUpdate:modelValue":t[10]||=e=>q.lineId=e,class:`inp-sel`,onChange:t[11]||=e=>{q.productId=``,q.recipeId=``}},[l(`option`,Ke,r(e.$t(`logs.all`)),1),(i(!0),u(d,null,o(h(H).lines,e=>(i(),u(`option`,{key:e.id,value:e.id},r(e.name),9,qe))),128))],544),[[_,q.lineId]])]),l(`label`,Je,[l(`span`,null,r(e.$t(`logs.fProduct`)),1),p(l(`select`,{"onUpdate:modelValue":t[12]||=e=>q.productId=e,class:`inp-sel`,onChange:t[13]||=e=>q.recipeId=``},[l(`option`,Ye,r(e.$t(`logs.all`)),1),(i(!0),u(d,null,o(J.value,e=>(i(),u(`option`,{key:e.id,value:e.id},r(e.name),9,Xe))),128))],544),[[_,q.productId]])]),l(`label`,Ze,[t[22]||=l(`span`,null,`Recipe`,-1),p(l(`select`,{"onUpdate:modelValue":t[14]||=e=>q.recipeId=e,class:`inp-sel`},[l(`option`,Qe,r(e.$t(`logs.all`)),1),(i(!0),u(d,null,o(Y.value,e=>(i(),u(`option`,{key:e.id,value:e.id},r(e.name),9,$e))),128))],512),[[_,q.recipeId]])])]),h(U).error.post?(i(),u(`p`,et,r(h(U).error.post),1)):f(``,!0),l(`div`,tt,[l(`button`,{class:`ghost-btn`,onClick:t[15]||=e=>K.value=!1},r(e.$t(`common.cancel`)),1),l(`button`,{class:`pill-btn`,disabled:h(U).loading.posting||!q.summary.trim(),onClick:ct},r(e.$t(`logs.mSubmit`)),9,nt)])])])):f(``,!0)]))]))}}),[[`__scopeId`,`data-v-d6872483`]]);export{H as default};
|