agentworkshop 0.7.39 → 0.7.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.AgentWorkShop/prompts/host-tools.json +55 -0
- package/.output/.AgentWorkShop/prompts/host-tools.json +55 -0
- 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/{CY9LbPCI.js → BN16aRdQ.js} +1 -1
- package/.output/public/_nuxt/BWVhZntO.js +1 -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/{DUrecWPx.js → C0ZrS1KL.js} +2 -2
- package/.output/public/_nuxt/{C_OLzD09.js → C4oW1HsE.js} +1 -1
- package/.output/public/_nuxt/{CUDwzgLV.js → C4s_niy-.js} +9 -9
- package/.output/public/_nuxt/CFxtLwjp.js +1 -0
- package/.output/public/_nuxt/{Cec0Ua3F.js → CS50LB_l.js} +1 -1
- package/.output/public/_nuxt/CssgYAAL2.js +1 -0
- package/.output/public/_nuxt/D6mbFA-a.js +1 -0
- package/.output/public/_nuxt/D98NH8kG.js +1 -0
- package/.output/public/_nuxt/DGIuvyRN2.js +1 -0
- package/.output/public/_nuxt/DGbd-UiG.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/{45zuyAso.js → D_OTvQza.js} +1 -1
- package/.output/public/_nuxt/Dap5PmTL.js +2 -0
- package/.output/public/_nuxt/Dqw1lpr-.js +1 -0
- package/.output/public/_nuxt/DvLxILQP.js +1 -0
- package/.output/public/_nuxt/IREZ1eC2.js +1 -0
- package/.output/public/_nuxt/TownView.f-YOdXRs.css +1 -0
- package/.output/public/_nuxt/_id_.D9ymtHB5.css +1 -0
- package/.output/public/_nuxt/_id_.jf-_8E_c.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/78a295bb-2072-48a4-8b46-6d545fdae743.json +1 -0
- package/.output/public/_nuxt/ca4TJ3Op.js +1 -0
- package/.output/public/_nuxt/channel-templates.BOtahzPi.css +1 -0
- package/.output/public/_nuxt/daq.DjSgY94l.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/eqq3wWQF.js +18 -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 +2355 -1362
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/build/{TownView-jVazYOjN.mjs → TownView--otsnr_7.mjs} +290 -208
- package/.output/server/chunks/build/TownView--otsnr_7.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CfVosNg3.mjs → _id_-Brv-JSvr.mjs} +142 -141
- package/.output/server/chunks/build/_id_-Brv-JSvr.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-Hwr4rZpr.mjs → _id_-D9pl1OZy.mjs} +38 -36
- package/.output/server/chunks/build/_id_-D9pl1OZy.mjs.map +1 -0
- package/.output/server/chunks/build/{_wsId_-BVg3bB77.mjs → _wsId_-BASfDf0s.mjs} +295 -261
- package/.output/server/chunks/build/{_wsId_-BVg3bB77.mjs.map → _wsId_-BASfDf0s.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-DkMvD8sg.mjs} +193 -126
- package/.output/server/chunks/build/daq-DkMvD8sg.mjs.map +1 -0
- package/.output/server/chunks/build/{dcw-6vEYVeje.mjs → dcw-C1jgVJkO.mjs} +46 -46
- package/.output/server/chunks/build/{dcw-6vEYVeje.mjs.map → dcw-C1jgVJkO.mjs.map} +1 -1
- package/.output/server/chunks/build/{default-CZmZFpqH.mjs → default-BE4r0FZN.mjs} +152 -58
- package/.output/server/chunks/build/{default-CZmZFpqH.mjs.map → default-BE4r0FZN.mjs.map} +1 -1
- package/.output/server/chunks/build/{logs-B-xhuqln.mjs → logs--dByNyhw.mjs} +35 -35
- package/.output/server/chunks/build/{logs-B-xhuqln.mjs.map → logs--dByNyhw.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-B0bUWnC6.mjs} +35 -19
- package/.output/server/chunks/build/pages-B0bUWnC6.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-CoQdblbZ.mjs} +38 -12
- package/.output/server/chunks/build/town-CoQdblbZ.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqStream-CIBaiGAl.mjs → useDaqStream-DfCFpb3p.mjs} +9 -3
- package/.output/server/chunks/build/useDaqStream-DfCFpb3p.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwStream-CBbiYnWe.mjs → useDcwStream-UPiX-3iO.mjs} +11 -2
- package/.output/server/chunks/build/useDcwStream-UPiX-3iO.mjs.map +1 -0
- 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/start.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.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/index5.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs +5 -1
- 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 +51 -25
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +203 -39
- 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 -7
- package/app/components/AppSidebar.vue +117 -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/useDaqStream.ts +7 -4
- package/app/composables/workshop/useDcwStream.ts +8 -2
- 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 +12 -7
- package/app/pages/daq/index.vue +216 -13
- package/app/pages/dcw/[id].vue +117 -32
- 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/cli.en.md +2 -2
- package/docs/cli.md +2 -2
- package/docs/plugins.en.md +33 -1
- package/docs/plugins.md +29 -1
- package/docs/sdk.en.md +1 -1
- package/docs/sdk.md +1 -1
- package/i18n/locales/en.ts +2 -0
- package/i18n/locales/zh-CN.ts +2 -0
- package/nuxt.config.ts +31 -0
- package/package.json +11 -2
- 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/_loop-biax-campaign.mjs +124 -0
- package/scripts/api-live-e2e.mjs +40 -8
- package/scripts/capture-walkthrough.mjs +232 -0
- 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/test-serial-bridge.mjs +418 -0
- 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/e2e-interactive.mjs +328 -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/seed-industrial-demo.mjs +171 -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/index.get.ts +3 -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 +5 -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 +23 -10
- package/server/plugins/dev-stability-guard.ts +3 -1
- package/server/plugins/system-config.ts +6 -1
- package/server/plugins-builtin/serial-bridge/client.mjs +210 -0
- package/server/plugins-builtin/serial-bridge/drivers.mjs +409 -0
- package/server/plugins-builtin/serial-bridge/i18n.json +62 -0
- package/server/plugins-builtin/serial-bridge/index.mjs +247 -0
- package/server/plugins-builtin/serial-bridge/lib.mjs +208 -0
- package/server/plugins-builtin/serial-bridge/rtu.mjs +168 -0
- 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 +25 -5
- package/server/services/workshop/daq/daq-runtime.ts +5 -3
- package/server/services/workshop/daq/drivers.ts +141 -11
- 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 +147 -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 +90 -4
- 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/plugin-bridge.ts +45 -0
- package/server/services/workshop/dcw/recipe-rollback-manager.ts +13 -7
- package/server/services/workshop/plugins/host.mjs +30 -0
- 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/daq-protocol.ts +15 -0
- package/shared/dcw-protocol.ts +136 -0
- package/uno.config.ts +12 -1
- package/.output/public/_nuxt/8NMOXZOV.js +0 -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/CmsOtOAA2.js +0 -1
- package/.output/public/_nuxt/D1YDxZpZ.js +0 -1
- package/.output/public/_nuxt/D20Yamr4.js +0 -1
- package/.output/public/_nuxt/DAe0h2MB.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/4457d63f-0866-4cea-b320-04a321f24795.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.BXI_fZUi.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_-CfVosNg3.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/useDaqStream-CIBaiGAl.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwStream-CBbiYnWe.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
|
@@ -531,6 +531,61 @@
|
|
|
531
531
|
]
|
|
532
532
|
}
|
|
533
533
|
},
|
|
534
|
+
{
|
|
535
|
+
"name": "param_control",
|
|
536
|
+
"label": "Param Control",
|
|
537
|
+
"description": "按工艺参数下发设定值(推荐的参数语义寻址面;param=工艺参数 id 或 key)。参数 → PLC 执行点的映射由系统封装,你只面对真实物理量纲,不需要也不可见寄存器/数据类型等底层细节。设定值受四层限界联锁(节点安全量程 ∩ 工艺参数基准限界 ∩ 活动产品限界 ∩ 活动配方工艺窗口)逐层收窄,用户与 Agent 一体约束,越界直接拒绝。手动确认模式下需等待用户批准。下发前先调用 my_industrial_nodes 理解参数语义。",
|
|
538
|
+
"parameters": {
|
|
539
|
+
"type": "object",
|
|
540
|
+
"properties": {
|
|
541
|
+
"param": {
|
|
542
|
+
"type": "string",
|
|
543
|
+
"description": "工艺参数 id(pp-*)或参数 key(产线内唯一,见 my_industrial_nodes / line_context)"
|
|
544
|
+
},
|
|
545
|
+
"value": {
|
|
546
|
+
"type": "number",
|
|
547
|
+
"description": "目标设定值(真实物理量纲,如 ℃)"
|
|
548
|
+
},
|
|
549
|
+
"line_id": {
|
|
550
|
+
"type": "string",
|
|
551
|
+
"description": "产线 id(可选;参数 key 跨产线同名时用于消歧)"
|
|
552
|
+
},
|
|
553
|
+
"hypothesis": {
|
|
554
|
+
"type": "string",
|
|
555
|
+
"description": "本次调参假设(入优化记录档案):目标 + 预期效果 + 观察计划"
|
|
556
|
+
},
|
|
557
|
+
"task_id": {
|
|
558
|
+
"type": "string",
|
|
559
|
+
"description": "关联的优化任务 id(可选,入优化记录档案)"
|
|
560
|
+
}
|
|
561
|
+
},
|
|
562
|
+
"required": [
|
|
563
|
+
"param",
|
|
564
|
+
"value"
|
|
565
|
+
]
|
|
566
|
+
}
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
"name": "param_read",
|
|
570
|
+
"label": "Param Read",
|
|
571
|
+
"description": "按工艺参数读取 PLC 当前值(param=工艺参数 id 或 key),返回实时读数(物理量纲)与当前设定值对照,以及该参数当前的有效写入区间(分层限界)。用于下发前取证、下发后复核。读取是被动观测,不需要审批。",
|
|
572
|
+
"parameters": {
|
|
573
|
+
"type": "object",
|
|
574
|
+
"properties": {
|
|
575
|
+
"param": {
|
|
576
|
+
"type": "string",
|
|
577
|
+
"description": "工艺参数 id(pp-*)或参数 key"
|
|
578
|
+
},
|
|
579
|
+
"line_id": {
|
|
580
|
+
"type": "string",
|
|
581
|
+
"description": "产线 id(可选;参数 key 跨产线同名时用于消歧)"
|
|
582
|
+
}
|
|
583
|
+
},
|
|
584
|
+
"required": [
|
|
585
|
+
"param"
|
|
586
|
+
]
|
|
587
|
+
}
|
|
588
|
+
},
|
|
534
589
|
{
|
|
535
590
|
"name": "daq_query",
|
|
536
591
|
"label": "DAQ Query",
|
|
@@ -531,6 +531,61 @@
|
|
|
531
531
|
]
|
|
532
532
|
}
|
|
533
533
|
},
|
|
534
|
+
{
|
|
535
|
+
"name": "param_control",
|
|
536
|
+
"label": "Param Control",
|
|
537
|
+
"description": "按工艺参数下发设定值(推荐的参数语义寻址面;param=工艺参数 id 或 key)。参数 → PLC 执行点的映射由系统封装,你只面对真实物理量纲,不需要也不可见寄存器/数据类型等底层细节。设定值受四层限界联锁(节点安全量程 ∩ 工艺参数基准限界 ∩ 活动产品限界 ∩ 活动配方工艺窗口)逐层收窄,用户与 Agent 一体约束,越界直接拒绝。手动确认模式下需等待用户批准。下发前先调用 my_industrial_nodes 理解参数语义。",
|
|
538
|
+
"parameters": {
|
|
539
|
+
"type": "object",
|
|
540
|
+
"properties": {
|
|
541
|
+
"param": {
|
|
542
|
+
"type": "string",
|
|
543
|
+
"description": "工艺参数 id(pp-*)或参数 key(产线内唯一,见 my_industrial_nodes / line_context)"
|
|
544
|
+
},
|
|
545
|
+
"value": {
|
|
546
|
+
"type": "number",
|
|
547
|
+
"description": "目标设定值(真实物理量纲,如 ℃)"
|
|
548
|
+
},
|
|
549
|
+
"line_id": {
|
|
550
|
+
"type": "string",
|
|
551
|
+
"description": "产线 id(可选;参数 key 跨产线同名时用于消歧)"
|
|
552
|
+
},
|
|
553
|
+
"hypothesis": {
|
|
554
|
+
"type": "string",
|
|
555
|
+
"description": "本次调参假设(入优化记录档案):目标 + 预期效果 + 观察计划"
|
|
556
|
+
},
|
|
557
|
+
"task_id": {
|
|
558
|
+
"type": "string",
|
|
559
|
+
"description": "关联的优化任务 id(可选,入优化记录档案)"
|
|
560
|
+
}
|
|
561
|
+
},
|
|
562
|
+
"required": [
|
|
563
|
+
"param",
|
|
564
|
+
"value"
|
|
565
|
+
]
|
|
566
|
+
}
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
"name": "param_read",
|
|
570
|
+
"label": "Param Read",
|
|
571
|
+
"description": "按工艺参数读取 PLC 当前值(param=工艺参数 id 或 key),返回实时读数(物理量纲)与当前设定值对照,以及该参数当前的有效写入区间(分层限界)。用于下发前取证、下发后复核。读取是被动观测,不需要审批。",
|
|
572
|
+
"parameters": {
|
|
573
|
+
"type": "object",
|
|
574
|
+
"properties": {
|
|
575
|
+
"param": {
|
|
576
|
+
"type": "string",
|
|
577
|
+
"description": "工艺参数 id(pp-*)或参数 key"
|
|
578
|
+
},
|
|
579
|
+
"line_id": {
|
|
580
|
+
"type": "string",
|
|
581
|
+
"description": "产线 id(可选;参数 key 跨产线同名时用于消歧)"
|
|
582
|
+
}
|
|
583
|
+
},
|
|
584
|
+
"required": [
|
|
585
|
+
"param"
|
|
586
|
+
]
|
|
587
|
+
}
|
|
588
|
+
},
|
|
534
589
|
{
|
|
535
590
|
"name": "daq_query",
|
|
536
591
|
"label": "DAQ Query",
|
package/.output/nitro.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,c as t,j as n}from"./BU83-NnX.js";import{$ as r,D as i,G as a,H as o,Ht as s,P as c,R as l,S as u,Ut as d,V as f,Vt as p,W as m,b as h,d as g,et as _,f as v,h as y,ht as b,i as x,m as S,nt as C,p as w,pt as T,tt as E,v as D,xt as O,y as k}from"./CSkxz2NX.js";import{d as ee,f as A,n as j,t as M,u as N}from"./D6uzXueg.js";import{d as P,p as te}from"./BJHKLJJU.js";import{i as F}from"./YnQxK3eG.js";import{n as ne,r as I,t as re}from"./xh3_vYcu.js";import{n as ie}from"./KZQX7xoM.js";import{t as ae}from"./D9Oidm5I.js";import{At as L,St as oe,d as R,jt as se,n as z,nt as ce,t as B,u as le,wt as ue}from"./4sIEbgcl.js";import{i as de}from"./DYr1VMiQ.js";import{t as fe}from"./aWWIh8YL.js";import{a as pe,i as me,n as he,r as ge,t as _e}from"./CzlMDL5H.js";import{t as V}from"./lO5tpDZ5.js";import{n as H}from"./JCoYF4IJ.js";import{t as U}from"./Crod5z2f.js";import{t as ve}from"./C4DWUZ6d2.js";import{t as ye}from"./JTLM-kqr2.js";import{t as be}from"./DIaZ2PTo2.js";import{t as W}from"./BDNMzG2s2.js";import{t as xe}from"./DGIuvyRN2.js";import{t as G}from"./CssgYAAL2.js";import{t as Se}from"./D0ZBQrN_2.js";import{m as Ce,p as we,t as Te}from"./BC9wjTJK2.js";import{t as Ee}from"./BN6iuJEg2.js";var De=e=>{let{componentCls:t,colorBgContainer:n,colorBgBody:r,colorText:i}=e;return{[`${t}-sider-light`]:{background:n,[`${t}-sider-trigger`]:{color:i,background:n},[`${t}-sider-zero-width-trigger`]:{color:i,background:n,border:`1px solid ${r}`,borderInlineStart:0}}}},Oe=e=>{let{antCls:t,componentCls:n,colorText:r,colorTextLightSolid:i,colorBgHeader:a,colorBgBody:o,colorBgTrigger:s,layoutHeaderHeight:c,layoutHeaderPaddingInline:l,layoutHeaderColor:u,layoutFooterPadding:d,layoutTriggerHeight:f,layoutZeroTriggerSize:p,motionDurationMid:m,motionDurationSlow:h,fontSize:g,borderRadius:_}=e;return{[n]:L(L({display:`flex`,flex:`auto`,flexDirection:`column`,color:r,minHeight:0,background:o,"&, *":{boxSizing:`border-box`},[`&${n}-has-sider`]:{flexDirection:`row`,[`> ${n}, > ${n}-content`]:{width:0}},[`${n}-header, &${n}-footer`]:{flex:`0 0 auto`},[`${n}-header`]:{height:c,paddingInline:l,color:u,lineHeight:`${c}px`,background:a,[`${t}-menu`]:{lineHeight:`inherit`}},[`${n}-footer`]:{padding:d,color:r,fontSize:g,background:o},[`${n}-content`]:{flex:`auto`,minHeight:0},[`${n}-sider`]:{position:`relative`,minWidth:0,background:a,transition:`all ${m}, background 0s`,"&-children":{height:`100%`,marginTop:-.1,paddingTop:.1,[`${t}-menu${t}-menu-inline-collapsed`]:{width:`auto`}},"&-has-trigger":{paddingBottom:f},"&-right":{order:1},"&-trigger":{position:`fixed`,bottom:0,zIndex:1,height:f,color:i,lineHeight:`${f}px`,textAlign:`center`,background:s,cursor:`pointer`,transition:`all ${m}`},"&-zero-width":{"> *":{overflow:`hidden`},"&-trigger":{position:`absolute`,top:c,insetInlineEnd:-p,zIndex:1,width:p,height:p,color:i,fontSize:e.fontSizeXL,display:`flex`,alignItems:`center`,justifyContent:`center`,background:a,borderStartStartRadius:0,borderStartEndRadius:_,borderEndEndRadius:_,borderEndStartRadius:0,cursor:`pointer`,transition:`background ${h} ease`,"&::after":{position:`absolute`,inset:0,background:`transparent`,transition:`all ${h}`,content:`""`},"&:hover::after":{background:`rgba(255, 255, 255, 0.2)`},"&-right":{insetInlineStart:-p,borderStartStartRadius:_,borderStartEndRadius:0,borderEndEndRadius:0,borderEndStartRadius:_}}}}},De(e)),{"&-rtl":{direction:`rtl`}})}},ke=R(`Layout`,e=>{let{colorText:t,controlHeightSM:n,controlHeight:r,controlHeightLG:i,marginXXS:a}=e,o=i*1.25;return[Oe(le(e,{layoutHeaderHeight:r*2,layoutHeaderPaddingInline:o,layoutHeaderColor:t,layoutFooterPadding:`${n}px ${o}px`,layoutTriggerHeight:i+a*2,layoutZeroTriggerSize:i}))]},e=>{let{colorBgLayout:t}=e;return{colorBgHeader:`#001529`,colorBgBody:t,colorBgTrigger:`#002140`}}),K=()=>({prefixCls:String,hasSider:{type:Boolean,default:void 0},tagName:String});function q(e){let{suffixCls:t,tagName:n,name:r}=e;return e=>u({compatConfig:{MODE:3},name:r,props:K(),setup(r,i){let{slots:a}=i,{prefixCls:o}=z(t,r);return()=>{let t=L(L({},r),{prefixCls:o.value,tagName:n});return h(e,t,a)}}})}var J=u({compatConfig:{MODE:3},props:K(),setup(e,t){let{slots:n}=t;return()=>h(e.tagName,{class:e.prefixCls},n)}}),Ae=u({compatConfig:{MODE:3},inheritAttrs:!1,props:K(),setup(e,t){let{slots:n,attrs:r}=t,{prefixCls:i,direction:a}=z(``,e),[s,c]=ke(i),l=T([]);o(pe,{addSider:e=>{l.value=[...l.value,e]},removeSider:e=>{l.value=l.value.filter(t=>t!==e)}});let u=g(()=>{let{prefixCls:t,hasSider:n}=e;return{[c.value]:!0,[`${t}`]:!0,[`${t}-has-sider`]:typeof n==`boolean`?n:l.value.length>0,[`${t}-rtl`]:a.value===`rtl`}});return()=>{let{tagName:t}=e;return s(h(t,L(L({},r),{class:[u.value,r.class]}),n))}}}),Y=q({suffixCls:`layout`,tagName:`section`,name:`ALayout`})(Ae),X=q({suffixCls:`layout-header`,tagName:`header`,name:`ALayoutHeader`})(J),Z=q({suffixCls:`layout-footer`,tagName:`footer`,name:`ALayoutFooter`})(J),Q=q({suffixCls:`layout-content`,tagName:`main`,name:`ALayoutContent`})(J),je={icon:{tag:`svg`,attrs:{viewBox:`0 0 1024 1024`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0zm0 284a56 56 0 10112 0 56 56 0 10-112 0z`}}]},name:`bars`,theme:`outlined`};function Me(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:Object(arguments[t]),r=Object.keys(n);typeof Object.getOwnPropertySymbols==`function`&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){Ne(e,t,n[t])})}return e}function Ne(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Pe=function(e,t){var r=Me({},e,t.attrs);return h(n,Me({},r,{icon:je}),null)};Pe.displayName=`BarsOutlined`,Pe.inheritAttrs=!1;var Fe={xs:`479.98px`,sm:`575.98px`,md:`767.98px`,lg:`991.98px`,xl:`1199.98px`,xxl:`1599.98px`,xxxl:`1999.98px`},Ie=()=>({prefixCls:String,collapsible:{type:Boolean,default:void 0},collapsed:{type:Boolean,default:void 0},defaultCollapsed:{type:Boolean,default:void 0},reverseArrow:{type:Boolean,default:void 0},zeroWidthTriggerStyle:{type:Object,default:void 0},trigger:B.any,width:B.oneOfType([B.number,B.string]),collapsedWidth:B.oneOfType([B.number,B.string]),breakpoint:B.oneOf(ce(`xs`,`sm`,`md`,`lg`,`xl`,`xxl`,`xxxl`)),theme:B.oneOf(ce(`light`,`dark`)).def(`dark`),onBreakpoint:Function,onCollapse:Function}),Le=(()=>{let e=0;return function(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:``;return e+=1,`${t}${e}`}})(),$=u({compatConfig:{MODE:3},name:`ALayoutSider`,inheritAttrs:!1,props:oe(Ie(),{collapsible:!1,defaultCollapsed:!1,reverseArrow:!1,width:200,collapsedWidth:80}),emits:[`breakpoint`,`update:collapsed`,`collapse`],setup(e,t){let{emit:n,attrs:a,slots:s}=t,{prefixCls:u}=z(`layout-sider`,e),d=i(pe,void 0),f=b(!!(e.collapsed===void 0?e.defaultCollapsed:e.collapsed)),p=b(!1);r(()=>e.collapsed,()=>{f.value=!!e.collapsed}),o(me,f);let m=(t,r)=>{e.collapsed===void 0&&(f.value=t),n(`update:collapsed`,t),n(`collapse`,t,r)},g=b(e=>{p.value=e.matches,n(`breakpoint`,e.matches),f.value!==e.matches&&m(e.matches,`responsive`)}),_;function v(e){return g.value(e)}let y=Le(`ant-sider-`);d&&d.addSider(y),l(()=>{r(()=>e.breakpoint,()=>{try{_?.removeEventListener(`change`,v)}catch{_?.removeListener(v)}if(typeof window<`u`){let{matchMedia:t}=window;if(t&&e.breakpoint&&e.breakpoint in Fe){_=t(`(max-width: ${Fe[e.breakpoint]})`);try{_.addEventListener(`change`,v)}catch{_.addListener(v)}v(_)}}},{immediate:!0})}),c(()=>{try{_?.removeEventListener(`change`,v)}catch{_?.removeListener(v)}d&&d.removeSider(y)});let x=()=>{m(!f.value,`clickTrigger`)};return()=>{let t=u.value,{collapsedWidth:n,width:r,reverseArrow:i,zeroWidthTriggerStyle:o,trigger:c=s.trigger?.call(s),collapsible:l,theme:d}=e,m=f.value?n:r,g=V(m)?`${m}px`:String(m),_=parseFloat(String(n||0))===0?h(`span`,{onClick:x,class:ue(`${t}-zero-width-trigger`,`${t}-zero-width-trigger-${i?`right`:`left`}`),style:o},[c||h(Pe,null,null)]):null,v={expanded:h(i?H:U,null,null),collapsed:h(i?U:H,null,null)}[f.value?`collapsed`:`expanded`],y=c===null?null:_||h(`div`,{class:`${t}-trigger`,onClick:x,style:{width:g}},[c||v]),b=[a.style,{flex:`0 0 ${g}`,maxWidth:g,minWidth:g,width:g}],S=ue(t,`${t}-${d}`,{[`${t}-collapsed`]:!!f.value,[`${t}-has-trigger`]:l&&c!==null&&!_,[`${t}-below`]:!!p.value,[`${t}-zero-width`]:parseFloat(g)===0},a.class);return h(`aside`,se(se({},a),{},{class:S,style:b}),[h(`div`,{class:`${t}-children`},[s.default?.call(s)]),l||p.value&&_?y:null])}}}),Re=X,ze=Z,Be=$,Ve=Q,He=L(Y,{Header:X,Footer:Z,Content:Q,Sider:$,install:e=>(e.component(Y.name,Y),e.component(X.name,X),e.component(Z.name,Z),e.component($.name,$),e.component(Q.name,Q),e)}),Ue=[`width`,`height`],We=Object.assign(u({__name:`AwLogo`,props:{size:{default:32}},setup(e){return(t,n)=>(f(),y(`svg`,{width:e.size,height:e.size,viewBox:`0 0 64 64`,fill:`none`,"aria-hidden":`true`},[...n[0]||=[D(`<defs><linearGradient id="aw-logo-gradient" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#35e0a0"></stop><stop offset="1" stop-color="#41c8f4"></stop></linearGradient></defs><path d="M32 4 L56 18 V46 L32 60 L8 46 V18 Z" stroke="url(#aw-logo-gradient)" stroke-width="4" stroke-linejoin="round"></path><path d="M32 15 L46.7 23.5 V40.5 L32 49 L17.3 40.5 V23.5 Z" stroke="#41c8f4" stroke-opacity="0.45" stroke-width="1.8" stroke-dasharray="4 3"></path><path d="M32 23 L25 38 M32 23 L39 38 M25 38 L39 38" stroke="#35e0a0" stroke-width="1.8" stroke-opacity="0.75"></path><circle cx="32" cy="23" r="3.4" fill="#35e0a0"></circle><circle cx="25" cy="38" r="3.4" fill="#41c8f4"></circle><circle cx="39" cy="38" r="3.4" fill="#41c8f4"></circle>`,7)]],8,Ue))}}),{__name:`AwLogo`}),Ge={class:`logo`},Ke={class:`logo-mark`,"aria-hidden":`true`},qe={class:`logo-text`},Je={class:`logo-title`},Ye={class:`app-menu`},Xe={class:`menu-group-label`},Ze={class:`menu-group-text`},Qe={class:`menu-group-sep`,"aria-hidden":`true`},$e=[`title`,`onClick`],et={class:`sider-footer`},tt={class:`footer-line`},nt=Object.assign(W(u({__name:`AppSidebar`,setup(e){let t=be(),{t:n}=ie(),i=te(),a=re(),o=ne(),s=T(!1),u=g(()=>[{id:`console`,label:n(`menu.groups.console`),items:[{key:`/`,icon:`i-tabler-layout-dashboard`,label:n(`menu.dashboard`),motion:`im-pop`},{key:`/workshop`,icon:`i-tabler-box`,label:n(`menu.workshop`),motion:`im-pop`},{key:`/town`,icon:`i-tabler-map-2`,label:n(`menu.town`),motion:`im-pop`},{key:`/daq`,icon:`i-tabler-activity`,label:n(`menu.daq`),motion:`im-pop`},{key:`/dcw`,icon:`i-tabler-settings-automation`,label:n(`menu.dcw`),motion:`im-pop`},{key:`/aml`,icon:`i-tabler-flask`,label:n(`menu.aml`),motion:`im-pop`}]},{id:`ops`,label:n(`menu.groups.ops`),items:[{key:`/monitor`,icon:`i-tabler-cpu`,label:n(`menu.monitor`),motion:`im-pulse`},{key:`/logs`,icon:`i-tabler-list-details`,label:n(`menu.logs`),motion:`im-pop`}]},{id:`system`,label:n(`menu.groups.system`),items:[{key:`/tokens`,icon:`i-tabler-key`,label:n(`menu.tokens`),motion:`im-nudge-up`},{key:`/users`,icon:`i-tabler-users-group`,label:n(`menu.users`),motion:`im-pop`},{key:`/permissions`,icon:`i-tabler-shield-lock`,label:n(`menu.permissions`),motion:`im-pop`,adminOnly:!0},{key:`/plugins`,icon:`i-tabler-puzzle`,label:n(`menu.plugins`),motion:`im-pop`},{key:`/settings`,icon:`i-tabler-settings`,label:n(`menu.settings`),motion:`im-rotate`}]}].map(e=>({...e,items:e.items.filter(e=>!e.adminOnly||s.value&&t.isAdmin)})).filter(e=>e.items.length>0)),b=e=>e===`/`?i.path===`/`:i.path.startsWith(e),w=e=>{D.value&&o.closeMobileNav(),b(e)||P(e)},{isDrawer:D,isTablet:k}=xe();l(()=>{s.value=!0});let ee=g(()=>s.value?D.value?`drawer`:k.value?`rail`:`full`:void 0),A=g(()=>D.value?!1:k.value?!0:o.sidebarCollapsed),j=g(()=>!A.value),F=g(()=>D.value&&o.mobileNavOpen);r(()=>i.path,()=>{o.mobileNavOpen&&o.closeMobileNav()}),_(()=>{typeof document>`u`||(document.body.classList.toggle(`nav-drawer`,D.value),document.body.classList.toggle(`nav-drawer-open`,F.value))}),c(()=>{typeof document>`u`||document.body.classList.remove(`nav-drawer`,`nav-drawer-open`)}),r(F,e=>{typeof document>`u`||(document.body.style.overflow=e?`hidden`:``)});let I=e=>{e.key===`Escape`&&F.value&&o.closeMobileNav()};return l(()=>window.addEventListener(`keydown`,I)),c(()=>{window.removeEventListener(`keydown`,I),typeof document<`u`&&(document.body.style.overflow=``)}),(e,t)=>{let n=We,r=Be;return f(),y(x,null,[h(r,{collapsed:O(A),trigger:null,collapsible:``,width:228,"collapsed-width":64,class:`app-sider`,"data-nav-mode":O(ee),"aria-hidden":O(D)&&!O(F)?`true`:void 0},{default:E(()=>[v(`div`,Ge,[v(`div`,Ke,[h(n,{size:30})]),h(M,{name:`slide-fade`},{default:E(()=>[C(v(`div`,qe,[v(`span`,Je,d(O(a).name),1),t[1]||=v(`span`,{class:`logo-sub`},`digital twin`,-1)],512),[[N,O(j)]])]),_:1})]),v(`nav`,Ye,[(f(!0),y(x,null,m(O(u),e=>(f(),y(`div`,{key:e.id,class:`menu-group`},[C(v(`div`,Xe,[v(`span`,Ze,d(e.label),1),t[2]||=v(`span`,{class:`menu-group-rule`,"aria-hidden":`true`},null,-1)],512),[[N,O(j)]]),C(v(`div`,Qe,null,512),[[N,!O(j)]]),(f(!0),y(x,null,m(e.items,e=>(f(),y(`button`,{key:e.key,type:`button`,class:p([`menu-item im`,{active:b(e.key)}]),title:O(j)?void 0:e.label,onClick:t=>w(e.key)},[v(`span`,{class:p([`menu-icon`,[e.icon,e.motion]])},null,2),C(v(`span`,{class:`menu-label`},d(e.label),513),[[N,O(j)]])],10,$e))),128))]))),128))]),C(v(`div`,et,[t[4]||=v(`div`,{class:`footer-rule`},null,-1),v(`div`,tt,[v(`span`,null,`v`+d(O(a).version),1),t[3]||=v(`span`,{class:`sep`},`/`,-1),v(`span`,null,d(O(a).mode),1)])],512),[[N,O(j)]])]),_:1},8,[`collapsed`,`data-nav-mode`,`aria-hidden`]),O(F)?(f(),y(`div`,{key:0,class:`nav-scrim`,"aria-hidden":`true`,onClick:t[0]||=e=>O(o).closeMobileNav()})):S(``,!0)],64)}}}),[[`__scopeId`,`data-v-a91ac3dd`]]),{__name:`AppSidebar`}),rt=F(`app.routeTrail`,()=>{let e=T([]);function t(t){if(!t||t.startsWith(`/api`))return;let n=e.value.filter(e=>e.path!==t);e.value=[...n,{path:t,at:Date.now()}].slice(-8)}function n(t){let n=e.value.findIndex(e=>e.path===t);return n>=0&&(e.value=e.value.filter(e=>e.path!==t)),n}function r(){e.value=[]}return{waypoints:e,visit:t,remove:n,clear:r}},{persist:{pick:[`waypoints`],storage:I.localStorage()}});function it(){let{t:e}=ie(),t=G(),n={"/":{key:`menu.dashboard`,icon:`i-tabler-layout-dashboard`},"/workshop":{key:`menu.workshop`,icon:`i-tabler-box`},"/workshop/agents":{key:`meta.agents`,icon:`i-tabler-users`},"/workshop/teams":{key:`meta.teams`,icon:`i-tabler-users-group`},"/workshop/channel-templates":{key:`meta.ctpl`,icon:`i-tabler-layout-grid-add`},"/town":{key:`menu.town`,icon:`i-tabler-map-2`},"/tokens":{key:`menu.tokens`,icon:`i-tabler-key`},"/daq":{key:`menu.daq`,icon:`i-tabler-activity`},"/dcw":{key:`menu.dcw`,icon:`i-tabler-settings-automation`},"/aml":{key:`menu.aml`,icon:`i-tabler-flask`},"/logs":{key:`menu.logs`,icon:`i-tabler-list-details`},"/permissions":{key:`menu.permissions`,icon:`i-tabler-shield-lock`},"/plugins":{key:`menu.plugins`,icon:`i-tabler-puzzle`},"/users":{key:`menu.users`,icon:`i-tabler-users-group`},"/monitor":{key:`menu.monitor`,icon:`i-tabler-cpu`},"/settings":{key:`menu.settings`,icon:`i-tabler-settings`}};return{metaFor:r=>{let i=n[r];if(i)return{title:e(i.key),icon:i.icon};let a=r.match(/^\/workshop\/w\/([^/]+)$/);if(a){let n=a[1];return{title:t.workspaces.find(e=>e.id===n)?.name??`${e(`header.workspace`)} ${n.slice(0,6)}`,icon:`i-tabler-console`}}let o=r.split(`/`).filter(Boolean).pop()??`·`;return{title:o.charAt(0).toUpperCase()+o.slice(1),icon:`i-tabler-point`}}}}var at={class:`header-left`},ot=[`aria-label`,`aria-expanded`],st={class:`mobile-title`},ct=[`aria-label`],lt=[`title`,`onClick`,`onKeydown`],ut={class:`node-title`},dt=[`aria-label`,`title`,`onClick`],ft={class:`header-right`},pt=[`title`],mt={class:`hitl-count`},ht={class:`hitl-menu`},gt={class:`hitl-menu-title`},_t=[`onClick`],vt={class:`hitl-item-top`},yt={class:`hitl-item-agent`},bt={class:`hitl-item-kind`},xt={class:`hitl-item-title`},St=[`title`],Ct={class:`user-chip`},wt={class:`user-initial aw-avatar`},Tt={class:`user-meta`},Et={class:`user-name`},Dt={class:`user-role`},Ot=Object.assign(W(u({__name:`AppHeader`,setup(n){let{t:i,locale:a,locales:o,setLocale:s}=ie(),u=ne(),_=te(),b=rt(),C=be(),{metaFor:D}=it(),M=we(),N=Te(),F=()=>{C.isLoggedIn&&N.ensureConnected()};r(()=>C.token,e=>{e?(F(),M.loadSnapshot()):M.clear()},{immediate:!0});let I=new Set([`codex-approval`,`opencode-permission`,`dsh-permission`]),re=e=>{switch(e){case`omp-dialog`:return i(`appHeader.hitlKindOmp`);case`dcw-approval`:return i(`appHeader.hitlKindDcw`);case`codex-approval`:return i(`appHeader.hitlKindCodex`);case`opencode-permission`:return i(`appHeader.hitlKindOpencode`);case`dsh-permission`:return i(`appHeader.hitlKindDsh`);default:return e}},L=e=>{P({path:`/monitor`,query:{agentId:e.agentId,channelId:e.channelId}})},oe=Ee(),R=T(null),se=async(t,n)=>{R.value=`${t.kind}:${t.id}`;try{await oe.respondHitl({kind:t.kind,id:t.id,confirmed:n,cancelled:!n}),await M.loadSnapshot()}catch(t){e.error(Se(t))}finally{R.value=null}},z=g(()=>o.value.map(e=>({label:le.value?e.code.split(`-`)[0].toUpperCase():e.name,value:e.code}))),ce=e=>{e!=null&&(localStorage.setItem(`aw.locale`,String(e)),s(String(e)),window.location.reload())},{isDrawer:B,isMobile:le}=xe(),ue=g(()=>B.value?u.mobileNavOpen?i(`header.closeNav`):i(`header.openNav`):u.sidebarCollapsed?i(`header.expand`):i(`header.collapse`)),pe=()=>{B.value?u.toggleMobileNav():u.toggleSidebar()},me=g(()=>D(_.path).title),V=T(!1),H=T(!1),U=null;r(()=>_.path,()=>{b.visit(_.path),H.value=!1,requestAnimationFrame(()=>{H.value=!0,U&&clearTimeout(U),U=setTimeout(()=>{H.value=!1},620)})},{immediate:!1}),l(()=>{V.value=!0,b.visit(_.path)}),c(()=>{U&&clearTimeout(U)});let ye=e=>{e!==_.path&&P(e)},W=e=>{let t=b.remove(e);if(e!==_.path)return;let n=b.waypoints,r=n[Math.min(Math.max(t-1,0),Math.max(n.length-1,0))]?.path??`/`;P(r)},G=T(!1);function De(){document.fullscreenElement?(document.exitFullscreen(),G.value=!1):(document.documentElement.requestFullscreen(),G.value=!0)}let Oe=g(()=>(C.user?.name??`?`).trim().charAt(0).toUpperCase()),ke=g(()=>C.user?.name??i(`header.guest`)),K=g(()=>C.isLoggedIn?C.user?.role??`user`:`anonymous`),q=Ce(),J=g(()=>q.state!==`closed`||q.lastDataAt>0),Ae=g(()=>q.state===`open`?q.pendingReplay?`syncing`:`live`:q.state===`connecting`?`syncing`:`down`),Y=g(()=>q.state===`open`?q.pendingReplay?i(`appHeader.kwsdot0002`):i(`appHeader.kwsdot0001`):q.state===`connecting`?i(`appHeader.kwsdot0003`):i(`appHeader.kwsdot0004`)),X=g(()=>{let e=[{key:`tokens`,icon:`i-tabler-key`,label:i(`menu.tokens`)},{key:`settings`,icon:`i-tabler-adjustments`,label:i(`menu.settings`)}];return C.isLoggedIn&&(e.push({key:`d-logout`,label:``,divider:!0}),e.push({key:`logout`,icon:`i-tabler-logout`,label:i(`header.logout`),danger:!0})),e}),Z=async({key:e})=>{e===`settings`?P(`/settings`):e===`tokens`?P(`/tokens`):e===`logout`&&(await C.logout(),P(`/workshop`))};return(e,n)=>{let r=t,o=ve,s=ae,c=de,l=fe,g=he,C=ge,T=_e,N=Re;return f(),w(N,{class:`app-header app-header-glass`},{default:E(()=>[v(`div`,at,[v(`button`,{class:`collapse-btn`,"aria-label":O(ue),"aria-expanded":O(B)?O(u).mobileNavOpen:!O(u).sidebarCollapsed,onClick:n[0]||=e=>pe()},[...n[3]||=[v(`span`,{class:`i-tabler-menu-2`},null,-1)]],8,ot),v(`span`,st,d(O(me)),1),n[5]||=v(`span`,{class:`rail-mark i-tabler-route`},null,-1),v(`nav`,{class:`trail`,"aria-label":O(i)(`header.trail`)},[h(j,{name:`stamp`,tag:`div`,class:`trail-row`},{default:E(()=>[O(V)?(f(!0),y(x,{key:0},m(O(b).waypoints,(t,r)=>(f(),y(x,{key:t.path},[r>0?(f(),y(`span`,{key:`link-${t.path}`,class:`trail-link`,"aria-hidden":`true`})):S(``,!0),v(`div`,{class:p([`trail-node`,{active:t.path===O(_).path}]),role:`button`,tabindex:`0`,title:O(D)(t.path).title,onClick:e=>ye(t.path),onKeydown:ee(A(e=>ye(t.path),[`prevent`]),[`enter`])},[v(`span`,{class:p([`node-icon`,O(D)(t.path).icon])},null,2),v(`span`,ut,d(O(D)(t.path).title),1),v(`button`,{class:`node-close`,"aria-label":e.$t(`appHeader.kzwjv99001`,{p0:O(D)(t.path).title}),title:e.$t(`appHeader.kzwjv99001`,{p0:O(D)(t.path).title}),onClick:A(e=>W(t.path),[`stop`])},[...n[4]||=[v(`span`,{class:`i-tabler-x`},null,-1)]],8,dt)],42,lt)],64))),128)):S(``,!0)]),_:1})],8,ct)]),v(`div`,ft,[h(s,null,{default:E(()=>[O(M).count>0?(f(),w(o,{key:0,placement:`bottomRight`},{overlay:E(()=>[v(`div`,ht,[v(`div`,gt,d(O(i)(`appHeader.hitlBadge`))+` · `+d(O(M).count),1),(f(!0),y(x,null,m(O(M).items,e=>(f(),y(`button`,{key:`${e.kind}:${e.id}`,class:`hitl-item`,onClick:t=>L(e)},[v(`span`,vt,[v(`span`,yt,d(e.agentName),1),v(`span`,bt,d(re(e.kind)),1)]),v(`span`,xt,d(e.title),1),O(I).has(e.kind)?(f(),y(`span`,{key:0,class:`hitl-item-actions`,onClick:n[1]||=A(()=>{},[`stop`])},[h(r,{size:`small`,type:`primary`,loading:O(R)===`${e.kind}:${e.id}`,onClick:t=>se(e,!0)},{default:E(()=>[k(d(O(i)(`appHeader.hitlApprove`)),1)]),_:1},8,[`loading`,`onClick`]),h(r,{size:`small`,danger:``,disabled:O(R)===`${e.kind}:${e.id}`,onClick:t=>se(e,!1)},{default:E(()=>[k(d(O(i)(`appHeader.hitlReject`)),1)]),_:1},8,[`disabled`,`onClick`])])):S(``,!0)],8,_t))),128))])]),default:E(()=>[v(`button`,{class:`icon-btn hitl-bell`,title:O(i)(`appHeader.hitlBadge`)},[n[6]||=v(`span`,{class:`i-tabler-bell-ringing`},null,-1),v(`span`,mt,d(O(M).count),1)],8,pt)]),_:1})):S(``,!0)]),_:1}),O(V)&&O(J)?(f(),y(`span`,{key:0,class:p([`ws-dot`,O(Ae)]),title:O(Y)},null,10,St)):S(``,!0),h(c,{title:O(i)(`header.fullscreen`)},{default:E(()=>[v(`button`,{class:`icon-btn hdr-fullscreen`,onClick:De},[v(`span`,{class:p([`i-tabler-arrows-maximize`,{hidden:O(G)}])},null,2),v(`span`,{class:p([`i-tabler-arrows-minimize`,{hidden:!O(G)}])},null,2)])]),_:1},8,[`title`]),h(l,{id:`hdr-locale`,value:O(a),size:`middle`,options:O(z),class:`lang-select`,onChange:ce},null,8,[`value`,`options`]),h(c,{title:O(u).isDark?O(i)(`common.light`):O(i)(`common.dark`)},{default:E(()=>[v(`button`,{class:`icon-btn`,onClick:n[2]||=e=>O(u).toggleDark()},[v(`span`,{class:p([`i-tabler-sun-high`,{hidden:O(u).isDark}])},null,2),v(`span`,{class:p([`i-tabler-moon-stars`,{hidden:!O(u).isDark}])},null,2)])]),_:1},8,[`title`]),h(o,null,{overlay:E(()=>[h(T,{onClick:Z},{default:E(()=>[(f(!0),y(x,null,m(O(X),e=>(f(),y(x,{key:e.key},[e.divider?(f(),w(g,{key:0})):(f(),w(C,{key:e.key,danger:e.danger},{default:E(()=>[v(`span`,{class:p([e.icon,`mr-2`])},null,2),k(` `+d(e.label),1)]),_:2},1032,[`danger`]))],64))),128))]),_:1})]),default:E(()=>[v(`div`,Ct,[h(s,null,{fallback:E(()=>[...n[7]||=[v(`span`,{class:`user-initial aw-avatar`},`·`,-1),v(`span`,{class:`user-meta`},[v(`span`,{class:`user-name`},`·`),v(`span`,{class:`user-role`},`·`)],-1)]]),default:E(()=>[v(`span`,wt,d(O(Oe)),1),v(`span`,Tt,[v(`span`,Et,d(O(ke)),1),v(`span`,Dt,d(O(K)),1)])]),_:1})])]),_:1})]),v(`span`,{class:p([`plotter-line`,{run:O(H)}]),"aria-hidden":`true`},null,2)]),_:1})}}}),[[`__scopeId`,`data-v-a6ff3f55`]]),{__name:`AppHeader`}),kt={class:`footer-title aw-serif-accent`},At={class:`footer-corner`},jt=W(u({__name:`default`,setup(e){let{token:t}=ye.useToken(),n=re();return(e,r)=>{let i=nt,o=Ot,c=Ve,l=ze,u=He;return f(),w(u,{class:`app-layout`,"has-sider":``},{default:E(()=>[h(i),h(u,{class:`app-main`,style:s({background:`transparent`,"--app-bg-container":O(t)?.colorBgContainer,"--app-bg-layout":O(t)?.colorBgLayout,"--app-text":O(t)?.colorText,"--app-text-secondary":O(t)?.colorTextSecondary,"--app-border":O(t)?.colorBorderSecondary,"--app-fill":O(t)?.colorFillQuaternary,"--app-header-h":`56px`,"--app-footer-h":`46px`})},{default:E(()=>[h(o),h(c,{class:`app-content`},{default:E(()=>[a(e.$slots,`default`,{},void 0,!0)]),_:3}),h(l,{class:`app-footer`,style:s({color:O(t)?.colorTextSecondary})},{default:E(()=>[v(`span`,kt,d(O(n).title),1),r[4]||=v(`span`,{class:`sep`},`/`,-1),v(`span`,null,`mode=`+d(O(n).mode),1),v(`span`,At,[v(`span`,null,`v`+d(O(n).version),1),r[0]||=v(`span`,{class:`sep`},`·`,-1),r[1]||=v(`a`,{class:`footer-link`,href:`https://github.com/kingdol666/AgentWorkShop`,target:`_blank`,rel:`noopener`},`GitHub`,-1),r[2]||=v(`span`,{class:`sep`},`·`,-1),r[3]||=v(`a`,{class:`footer-link`,href:`https://kingdol666.github.io/AgentWorkShop/`,target:`_blank`,rel:`noopener`},`Docs`,-1)])]),_:1},8,[`style`])]),_:3},8,[`style`]),r[5]||=v(`span`,{class:`aw-noise`,"aria-hidden":`true`},null,-1)]),_:3})}}}),[[`__scopeId`,`data-v-e4abc244`]]);export{jt as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{$ as e,P as t,R as n,dt as r}from"./CSkxz2NX.js";import{i,s as a}from"./YnQxK3eG.js";import{t as o}from"./CWoJjWmZ.js";import{t as s}from"./DIaZ2PTo2.js";import{t as c}from"./36oeS8_R2.js";var l=45e3,u=9e4,d=i(`workshop.connection`,{state:()=>({state:`closed`,cursors:{},lastDataAt:0,pendingReplay:!1,lastError:``,retryCount:0})}),f=class{onEvent;onStateChange;onPendingReplay;onDataRecovered;ws=null;retry=0;closedByUser=!1;subscribed=new Set;refCounts=new Map;lastSeqByChannel=new Map;lastFrameAt=0;lastDataAt=0;userToken=``;constructor(e,t,n=()=>{},r=()=>{}){this.onEvent=e,this.onStateChange=t,this.onPendingReplay=n,this.onDataRecovered=r}updateCursor(e,t){Number.isFinite(t)&&this.lastSeqByChannel.set(e,t)}url(){return typeof location>`u`?`ws://localhost/api/workshop/ws`:`${location.protocol===`https:`?`wss`:`ws`}://${location.host}/api/workshop/ws${this.userToken?`?token=${encodeURIComponent(this.userToken)}`:``}`}connect(){if(typeof window>`u`)return;this.onStateChange(`connecting`,this.retry);let e=new WebSocket(this.url());this.ws=e,this.lastFrameAt=Date.now(),this.lastDataAt=Date.now(),e.onopen=()=>{this.retry=0,this.onStateChange(`open`,0);for(let e of this.subscribed)this.sendSub(e,this.lastSeqByChannel.get(e))},e.onmessage=e=>{this.lastFrameAt=Date.now();try{let t=JSON.parse(e.data);t.type!==`pong`&&(this.lastDataAt=Date.now(),this.onDataRecovered()),this.onEvent(t)}catch{}},e.onclose=()=>{if(this.ws=null,this.closedByUser){this.onStateChange(`closed`,0);return}this.onStateChange(`closed`,this.retry),this.subscribed.size>0&&this.onPendingReplay();let e=Math.min(1e3*2**this.retry,1e4);this.retry+=1,setTimeout(()=>{this.closedByUser||this.connect()},e)},e.onerror=()=>{}}checkStale(){let e=this.ws;!e||e.readyState!==WebSocket.OPEN||(Date.now()-this.lastFrameAt>l||Date.now()-this.lastDataAt>u)&&e.close()}sendSub(e,t){let n={type:`sub`,channelId:e,token:this.userToken};typeof t==`number`&&(n.lastSeq=t),this.ws?.send(JSON.stringify(n))}subscribe(e,t){let n=this.refCounts.get(e)??0;this.refCounts.set(e,n+1),!(n>0)&&(this.subscribed.add(e),typeof t==`number`&&this.lastSeqByChannel.set(e,t),this.ws?.readyState===WebSocket.OPEN?this.sendSub(e,this.lastSeqByChannel.get(e)):this.ws||this.connect())}ensureConnected(){typeof window>`u`||this.ws||this.connect()}unsubscribe(e){let t=this.refCounts.get(e)??0;t<=1?(this.refCounts.delete(e),this.subscribed.delete(e),this.ws?.readyState===WebSocket.OPEN&&this.ws?.send(JSON.stringify({type:`unsub`,channelId:e}))):this.refCounts.set(e,t-1)}refCount(e){return this.refCounts.get(e)??0}ping(){try{this.ws?.send(JSON.stringify({type:`ping`}))}catch{try{this.ws?.close()}catch{}}}close(){this.closedByUser=!0,this.ws?.close()}},p=e=>`${e.kind}:${e.id}`,m=i(`workshop.hitl`,{state:()=>({items:[],snapshotLoaded:!1}),getters:{count:e=>e.items.length,byAgent:e=>{let t=new Map;for(let n of e.items){let e=t.get(n.agentId)??[];e.push(n),t.set(n.agentId,e)}return t}},actions:{applyEnvelope(e){if(e.type===`hitl.request`){let t=e.payload,n=p(t),r=this.items.findIndex(e=>p(e)===n);r>=0?this.items[r]=t:this.items.push(t)}else if(e.type===`hitl.resolved`){let t=e.payload;this.items=this.items.filter(e=>p(e)!==p(t))}},async loadSnapshot(){if(typeof window>`u`)return;let e=s().token;if(e)try{let t=await a(`/api/workshop/hitl/pending`,{headers:{authorization:`Bearer ${e}`}});t.code===0&&t.data&&(this.items=t.data.items,this.snapshotLoaded=!0)}catch{}},invalidate(){this.snapshotLoaded=!1},clear(){this.items=[],this.snapshotLoaded=!1}}}),h=/^🔧\s*\S+/,g={read:{icon:`i-tabler-file-search`,kind:`native`},write:{icon:`i-tabler-pencil`,kind:`native`},edit:{icon:`i-tabler-edit`,kind:`native`},bash:{icon:`i-tabler-terminal-2`,kind:`native`},grep:{icon:`i-tabler-search`,kind:`native`},glob:{icon:`i-tabler-folders`,kind:`native`},dispatch_task:{icon:`i-tabler-send`,kind:`host`},reassign_task:{icon:`i-tabler-arrows-exchange`,kind:`host`},update_task:{icon:`i-tabler-pencil-code`,kind:`host`},cancel_task:{icon:`i-tabler-circle-x`,kind:`host`},complete_task:{icon:`i-tabler-circle-check`,kind:`host`},report_progress:{icon:`i-tabler-progress-check`,kind:`host`},send_message_to_agent:{icon:`i-tabler-message`,kind:`host`},poll_messages:{icon:`i-tabler-inbox`,kind:`host`},broadcast_message:{icon:`i-tabler-rss`,kind:`host`},list_team_agents:{icon:`i-tabler-users`,kind:`host`},list_channel_tasks:{icon:`i-tabler-list`,kind:`host`},get_task_details:{icon:`i-tabler-eye`,kind:`host`},get_my_task_queue:{icon:`i-tabler-stack-2`,kind:`host`},get_queue_overview:{icon:`i-tabler-chart-bar`,kind:`host`},search_memory:{icon:`i-tabler-brain`,kind:`host`},save_memory:{icon:`i-tabler-bookmark`,kind:`host`},create_team_agent:{icon:`i-tabler-user-plus`,kind:`host`},update_team_agent:{icon:`i-tabler-user-cog`,kind:`host`},remove_team_agent:{icon:`i-tabler-user-minus`,kind:`host`}},_={tool:{label:`tool`,icon:`i-tabler-tool`},status:{label:`status`,icon:`i-tabler-dots`},life:{label:`state`,icon:`i-tabler-activity`},route:{label:`message`,icon:`i-tabler-route`},stream:{label:`llm`,icon:`i-tabler-message-dots`},task:{label:`task`,icon:`i-tabler-checklist`},artifact:{label:`artifact`,icon:`i-tabler-package`},member:{label:`team`,icon:`i-tabler-users`},memory:{label:`memory`,icon:`i-tabler-bookmark`},error:{label:`error`,icon:`i-tabler-alert-triangle`},other:{label:`event`,icon:`i-tabler-dots`}};function v(e){switch(e.type){case`agent.status.message`:return h.test(String(e.payload.text??``))?`tool`:`status`;case`agent.status`:return`life`;case`a2a.message`:return`route`;case`agent.delta`:case`agent.message`:return`stream`;case`task.status`:case`task.progress`:return`task`;case`a2a.artifact`:return`artifact`;case`agent.member`:return`member`;case`memory.saved`:return`memory`;case`error`:return`error`;default:return`other`}}function y(e){if(!e)return`#6e6e77`;let t=0;for(let n of e)t=(t*31+n.charCodeAt(0))%360;return`hsl(${t}, 42%, 34%)`}var b={silent:0,status:1,attention:2,terminal:3};function x(e){switch(e.type){case`error`:return`attention`;case`a2a.artifact`:case`agent.message`:return`terminal`;case`task.status`:{let t=String(e.payload.state??``);return t===`COMPLETED`||t===`FAILED`||t===`CANCELED`?`terminal`:t===`WAITING`?`attention`:`status`}case`a2a.message`:return(e.payload.metadata??{})[`x-aw-require-reply`]===`true`?`attention`:`status`;case`agent.delta`:case`agent.status.message`:case`task.progress`:case`memory.saved`:return`silent`;default:return`status`}}function S(e){let t=`silent`;for(let n of e){let e=x(n);b[e]>b[t]&&(t=e)}return t}function C(e){return e.replace(/\s+/g,` `).trim()}function ee(e){let t=e.events[e.events.length-1];return t?t.type===`agent.delta`&&!e.settled:!1}function w(e){if(e.taskId)return e.taskId;switch(e.type){case`task.status`:case`task.progress`:return String(e.payload.taskId??``)||null;case`a2a.artifact`:return String(e.payload.taskId??``)||null;default:return null}}function T(e,t){return e==null||t==null||e===t}function E(e,t){let n=e.trim(),r=t.trim();return!n||!r?`none`:n===r||C(n)===C(r)?`dup`:r.startsWith(n)?`extend`:`none`}var D=class{arr=[];last=null;tracks=new Map;trail=Object.create(null);idSeq=0;processed=0;headSeq=void 0;get blocks(){return this.arr}get processedCount(){return this.processed}reset(){this.arr.length=0,this.last=null,this.tracks.clear(),this.trail=Object.create(null),this.processed=0,this.headSeq=void 0}sync(e){let t=e.length>0?e[0]?.seq:void 0;(e.length<this.processed||t!==this.headSeq)&&this.reset();for(let t=this.processed;t<e.length;t++)this.push(e[t]);this.processed=e.length,this.headSeq=e.length>0?e[0]?.seq:void 0}push(e){if(e.type===`channel.snapshot`||e.type===`pong`||e.type===`agent.delta`&&!O(e)||(e.type===`agent.status.message`||e.type===`agent.message`)&&!O(e).trim())return this.last;let t=e.agentId??null,n=w(e),i=t??``,a=`${i}\u0000${n??``}`,o=v(e);if(e.type===`agent.status.message`&&o===`status`){let t=O(e).trim(),n=this.tracks.get(a);if(t&&n&&n.text){let r=E(n.text,t);if(r===`dup`||r===`extend`)return this.foldInto(n,e,t)}}if(e.type===`agent.message`){let t=O(e).trim(),n=this.tracks.get(a);if(t&&n&&n.text){let r=E(n.text,t);if(r===`dup`||r===`extend`)return this.foldInto(n,e,t)}}let s=o;if(e.type===`agent.delta`)s=`stream`;else if(e.type===`agent.message`)s=`stream`;else if(o===`status`){let t=this.last;t!==null&&t.kind===`stream`&&e.agentId===t.agentId&&T(t.taskId,n)&&!t.settled&&(s=`stream`)}if(this.last!==null&&this.last.kind===s&&this.last.agentId===e.agentId&&t!==null&&T(this.last.taskId,n)&&!(s===`stream`&&this.last.settled)&&!(s===`task`&&this.last.taskId&&n&&this.last.taskId!==n)&&!(s===`artifact`&&this.last.taskId&&n&&this.last.taskId!==n)&&this.last){let t=this.last;if(t.events.push(e),t.lastAt=e.at,s===`stream`){if(e.type===`agent.delta`){t.settled=!1;let r=this.tracks.get(a);r?(r.text+=O(e),r.last=t,this.setTrail(i,n,r.text)):(t.settled=!1,this.setTrail(i,n,O(e)))}else t.settled=!0,this.setTrail(i,n,`${O(e)}`)}return t}let c=r({id:`b${++this.idSeq}`,kind:s,agentId:t,taskId:n,events:[e],firstAt:e.at,lastAt:e.at,settled:s===`stream`&&e.type!==`agent.delta`,folded:0,overrideText:null,coveredBy:null,dupStream:!1});if(this.arr.push(c),this.last=c,s===`stream`){let t=this.tracks.get(a);if(t&&t.pieces.length>0&&!t.pieces.includes(c)?(t.pieces.push(c),t.last=c):t||this.tracks.set(a,{text:``,pieces:[c],last:c}),e.type===`agent.delta`){let t=this.tracks.get(a);t&&(t.text+=O(e),this.setTrail(i,n,t.text))}}if(s===`artifact`){let t=O(e),n=this.trail[a]??this.trail[`${i}\u0000`];n&&t&&C(n)===C(t)&&(c.dupStream=!0)}return c}foldInto(e,t,n){let r=e.last;r.events.push(t),r.folded+=1,r.lastAt=t.at,r.settled=!0,r.overrideText=n;for(let t of e.pieces)t!==r&&(t.coveredBy=r.id);return e.text=``,e.pieces=[r],e.last=r,this.setTrail(r.agentId??``,r.taskId,n),r}setTrail(e,t,n){this.trail[`${e}\u0000${t??``}`]=n}};function O(e){switch(e.type){case`agent.delta`:return String(e.payload.delta??``);case`agent.status.message`:return String(e.payload.text??``);case`agent.message`:case`a2a.message`:return(e.payload.parts??[]).map(e=>e.text??``).join(`
|
|
1
|
+
import{$ as e,P as t,R as n,dt as r}from"./CSkxz2NX.js";import{i,s as a}from"./YnQxK3eG.js";import{t as o}from"./CWoJjWmZ.js";import{t as s}from"./36oeS8_R.js";import{t as c}from"./DIaZ2PTo2.js";var l=45e3,u=9e4,d=i(`workshop.connection`,{state:()=>({state:`closed`,cursors:{},lastDataAt:0,pendingReplay:!1,lastError:``,retryCount:0})}),f=class{onEvent;onStateChange;onPendingReplay;onDataRecovered;ws=null;retry=0;closedByUser=!1;subscribed=new Set;refCounts=new Map;lastSeqByChannel=new Map;lastFrameAt=0;lastDataAt=0;userToken=``;constructor(e,t,n=()=>{},r=()=>{}){this.onEvent=e,this.onStateChange=t,this.onPendingReplay=n,this.onDataRecovered=r}updateCursor(e,t){Number.isFinite(t)&&this.lastSeqByChannel.set(e,t)}url(){return typeof location>`u`?`ws://localhost/api/workshop/ws`:`${location.protocol===`https:`?`wss`:`ws`}://${location.host}/api/workshop/ws${this.userToken?`?token=${encodeURIComponent(this.userToken)}`:``}`}connect(){if(typeof window>`u`)return;this.onStateChange(`connecting`,this.retry);let e=new WebSocket(this.url());this.ws=e,this.lastFrameAt=Date.now(),this.lastDataAt=Date.now(),e.onopen=()=>{this.retry=0,this.onStateChange(`open`,0);for(let e of this.subscribed)this.sendSub(e,this.lastSeqByChannel.get(e))},e.onmessage=e=>{this.lastFrameAt=Date.now();try{let t=JSON.parse(e.data);t.type!==`pong`&&(this.lastDataAt=Date.now(),this.onDataRecovered()),this.onEvent(t)}catch{}},e.onclose=()=>{if(this.ws=null,this.closedByUser){this.onStateChange(`closed`,0);return}this.onStateChange(`closed`,this.retry),this.subscribed.size>0&&this.onPendingReplay();let e=Math.min(1e3*2**this.retry,1e4);this.retry+=1,setTimeout(()=>{this.closedByUser||this.connect()},e)},e.onerror=()=>{}}checkStale(){let e=this.ws;!e||e.readyState!==WebSocket.OPEN||(Date.now()-this.lastFrameAt>l||Date.now()-this.lastDataAt>u)&&e.close()}sendSub(e,t){let n={type:`sub`,channelId:e,token:this.userToken};typeof t==`number`&&(n.lastSeq=t),this.ws?.send(JSON.stringify(n))}subscribe(e,t){let n=this.refCounts.get(e)??0;this.refCounts.set(e,n+1),!(n>0)&&(this.subscribed.add(e),typeof t==`number`&&this.lastSeqByChannel.set(e,t),this.ws?.readyState===WebSocket.OPEN?this.sendSub(e,this.lastSeqByChannel.get(e)):this.ws||this.connect())}ensureConnected(){typeof window>`u`||this.ws||this.connect()}unsubscribe(e){let t=this.refCounts.get(e)??0;t<=1?(this.refCounts.delete(e),this.subscribed.delete(e),this.ws?.readyState===WebSocket.OPEN&&this.ws?.send(JSON.stringify({type:`unsub`,channelId:e}))):this.refCounts.set(e,t-1)}refCount(e){return this.refCounts.get(e)??0}ping(){try{this.ws?.send(JSON.stringify({type:`ping`}))}catch{try{this.ws?.close()}catch{}}}close(){this.closedByUser=!0,this.ws?.close()}},p=e=>`${e.kind}:${e.id}`,m=i(`workshop.hitl`,{state:()=>({items:[],snapshotLoaded:!1}),getters:{count:e=>e.items.length,byAgent:e=>{let t=new Map;for(let n of e.items){let e=t.get(n.agentId)??[];e.push(n),t.set(n.agentId,e)}return t}},actions:{applyEnvelope(e){if(e.type===`hitl.request`){let t=e.payload,n=p(t),r=this.items.findIndex(e=>p(e)===n);r>=0?this.items[r]=t:this.items.push(t)}else if(e.type===`hitl.resolved`){let t=e.payload;this.items=this.items.filter(e=>p(e)!==p(t))}},async loadSnapshot(){if(typeof window>`u`)return;let e=c().token;if(e)try{let t=await a(`/api/workshop/hitl/pending`,{headers:{authorization:`Bearer ${e}`}});t.code===0&&t.data&&(this.items=t.data.items,this.snapshotLoaded=!0)}catch{}},invalidate(){this.snapshotLoaded=!1},clear(){this.items=[],this.snapshotLoaded=!1}}}),h=/^🔧\s*\S+/,g={read:{icon:`i-tabler-file-search`,kind:`native`},write:{icon:`i-tabler-pencil`,kind:`native`},edit:{icon:`i-tabler-edit`,kind:`native`},bash:{icon:`i-tabler-terminal-2`,kind:`native`},grep:{icon:`i-tabler-search`,kind:`native`},glob:{icon:`i-tabler-folders`,kind:`native`},dispatch_task:{icon:`i-tabler-send`,kind:`host`},reassign_task:{icon:`i-tabler-arrows-exchange`,kind:`host`},update_task:{icon:`i-tabler-pencil-code`,kind:`host`},cancel_task:{icon:`i-tabler-circle-x`,kind:`host`},complete_task:{icon:`i-tabler-circle-check`,kind:`host`},report_progress:{icon:`i-tabler-progress-check`,kind:`host`},send_message_to_agent:{icon:`i-tabler-message`,kind:`host`},poll_messages:{icon:`i-tabler-inbox`,kind:`host`},broadcast_message:{icon:`i-tabler-rss`,kind:`host`},list_team_agents:{icon:`i-tabler-users`,kind:`host`},list_channel_tasks:{icon:`i-tabler-list`,kind:`host`},get_task_details:{icon:`i-tabler-eye`,kind:`host`},get_my_task_queue:{icon:`i-tabler-stack-2`,kind:`host`},get_queue_overview:{icon:`i-tabler-chart-bar`,kind:`host`},search_memory:{icon:`i-tabler-brain`,kind:`host`},save_memory:{icon:`i-tabler-bookmark`,kind:`host`},create_team_agent:{icon:`i-tabler-user-plus`,kind:`host`},update_team_agent:{icon:`i-tabler-user-cog`,kind:`host`},remove_team_agent:{icon:`i-tabler-user-minus`,kind:`host`}},_={tool:{label:`tool`,icon:`i-tabler-tool`},status:{label:`status`,icon:`i-tabler-dots`},life:{label:`state`,icon:`i-tabler-activity`},route:{label:`message`,icon:`i-tabler-route`},stream:{label:`llm`,icon:`i-tabler-message-dots`},task:{label:`task`,icon:`i-tabler-checklist`},artifact:{label:`artifact`,icon:`i-tabler-package`},member:{label:`team`,icon:`i-tabler-users`},memory:{label:`memory`,icon:`i-tabler-bookmark`},error:{label:`error`,icon:`i-tabler-alert-triangle`},other:{label:`event`,icon:`i-tabler-dots`}};function v(e){switch(e.type){case`agent.status.message`:return h.test(String(e.payload.text??``))?`tool`:`status`;case`agent.status`:return`life`;case`a2a.message`:return`route`;case`agent.delta`:case`agent.message`:return`stream`;case`task.status`:case`task.progress`:return`task`;case`a2a.artifact`:return`artifact`;case`agent.member`:return`member`;case`memory.saved`:return`memory`;case`error`:return`error`;default:return`other`}}function y(e){if(!e)return`#6e6e77`;let t=0;for(let n of e)t=(t*31+n.charCodeAt(0))%360;return`hsl(${t}, 42%, 34%)`}var b={silent:0,status:1,attention:2,terminal:3};function x(e){switch(e.type){case`error`:return`attention`;case`a2a.artifact`:case`agent.message`:return`terminal`;case`task.status`:{let t=String(e.payload.state??``);return t===`COMPLETED`||t===`FAILED`||t===`CANCELED`?`terminal`:t===`WAITING`?`attention`:`status`}case`a2a.message`:return(e.payload.metadata??{})[`x-aw-require-reply`]===`true`?`attention`:`status`;case`agent.delta`:case`agent.status.message`:case`task.progress`:case`memory.saved`:return`silent`;default:return`status`}}function S(e){let t=`silent`;for(let n of e){let e=x(n);b[e]>b[t]&&(t=e)}return t}function C(e){return e.replace(/\s+/g,` `).trim()}function ee(e){let t=e.events[e.events.length-1];return t?t.type===`agent.delta`&&!e.settled:!1}function w(e){if(e.taskId)return e.taskId;switch(e.type){case`task.status`:case`task.progress`:return String(e.payload.taskId??``)||null;case`a2a.artifact`:return String(e.payload.taskId??``)||null;default:return null}}function T(e,t){return e==null||t==null||e===t}function E(e,t){let n=e.trim(),r=t.trim();return!n||!r?`none`:n===r||C(n)===C(r)?`dup`:r.startsWith(n)?`extend`:`none`}var D=class{arr=[];last=null;tracks=new Map;trail=Object.create(null);idSeq=0;processed=0;headSeq=void 0;get blocks(){return this.arr}get processedCount(){return this.processed}reset(){this.arr.length=0,this.last=null,this.tracks.clear(),this.trail=Object.create(null),this.processed=0,this.headSeq=void 0}sync(e){let t=e.length>0?e[0]?.seq:void 0;(e.length<this.processed||t!==this.headSeq)&&this.reset();for(let t=this.processed;t<e.length;t++)this.push(e[t]);this.processed=e.length,this.headSeq=e.length>0?e[0]?.seq:void 0}push(e){if(e.type===`channel.snapshot`||e.type===`pong`||e.type===`agent.delta`&&!O(e)||(e.type===`agent.status.message`||e.type===`agent.message`)&&!O(e).trim())return this.last;let t=e.agentId??null,n=w(e),i=t??``,a=`${i}\u0000${n??``}`,o=v(e);if(e.type===`agent.status.message`&&o===`status`){let t=O(e).trim(),n=this.tracks.get(a);if(t&&n&&n.text){let r=E(n.text,t);if(r===`dup`||r===`extend`)return this.foldInto(n,e,t)}}if(e.type===`agent.message`){let t=O(e).trim(),n=this.tracks.get(a);if(t&&n&&n.text){let r=E(n.text,t);if(r===`dup`||r===`extend`)return this.foldInto(n,e,t)}}let s=o;if(e.type===`agent.delta`)s=`stream`;else if(e.type===`agent.message`)s=`stream`;else if(o===`status`){let t=this.last;t!==null&&t.kind===`stream`&&e.agentId===t.agentId&&T(t.taskId,n)&&!t.settled&&(s=`stream`)}if(this.last!==null&&this.last.kind===s&&this.last.agentId===e.agentId&&t!==null&&T(this.last.taskId,n)&&!(s===`stream`&&this.last.settled)&&!(s===`task`&&this.last.taskId&&n&&this.last.taskId!==n)&&!(s===`artifact`&&this.last.taskId&&n&&this.last.taskId!==n)&&this.last){let t=this.last;if(t.events.push(e),t.lastAt=e.at,s===`stream`){if(e.type===`agent.delta`){t.settled=!1;let r=this.tracks.get(a);r?(r.text+=O(e),r.last=t,this.setTrail(i,n,r.text)):(t.settled=!1,this.setTrail(i,n,O(e)))}else t.settled=!0,this.setTrail(i,n,`${O(e)}`)}return t}let c=r({id:`b${++this.idSeq}`,kind:s,agentId:t,taskId:n,events:[e],firstAt:e.at,lastAt:e.at,settled:s===`stream`&&e.type!==`agent.delta`,folded:0,overrideText:null,coveredBy:null,dupStream:!1});if(this.arr.push(c),this.last=c,s===`stream`){let t=this.tracks.get(a);if(t&&t.pieces.length>0&&!t.pieces.includes(c)?(t.pieces.push(c),t.last=c):t||this.tracks.set(a,{text:``,pieces:[c],last:c}),e.type===`agent.delta`){let t=this.tracks.get(a);t&&(t.text+=O(e),this.setTrail(i,n,t.text))}}if(s===`artifact`){let t=O(e),n=this.trail[a]??this.trail[`${i}\u0000`];n&&t&&C(n)===C(t)&&(c.dupStream=!0)}return c}foldInto(e,t,n){let r=e.last;r.events.push(t),r.folded+=1,r.lastAt=t.at,r.settled=!0,r.overrideText=n;for(let t of e.pieces)t!==r&&(t.coveredBy=r.id);return e.text=``,e.pieces=[r],e.last=r,this.setTrail(r.agentId??``,r.taskId,n),r}setTrail(e,t,n){this.trail[`${e}\u0000${t??``}`]=n}};function O(e){switch(e.type){case`agent.delta`:return String(e.payload.delta??``);case`agent.status.message`:return String(e.payload.text??``);case`agent.message`:case`a2a.message`:return(e.payload.parts??[]).map(e=>e.text??``).join(`
|
|
2
2
|
`);case`a2a.artifact`:return(e.payload.artifact?.parts??[]).map(e=>e.text??``).join(`
|
|
3
3
|
`);default:return``}}function k(e){if(e.overrideText)return e.overrideText;let t=``;for(let n of e.events){if(n.type===`agent.delta`){t+=O(n);continue}if(n.type!==`agent.status.message`&&n.type===`agent.message`){let e=O(n).trim();e&&(t=`${t?`${t}\n`:``}${e}`);continue}}return t}function A(e,t,n){return e>0&&(n||t<e)}function j(e){return e.replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e]??e)}function M(e){return e.replace(/`([^`\n]+)`/g,`<code>$1</code>`).replace(/\*\*([^*\n]+)\*\*/g,`<b>$1</b>`).replace(/(^|\s)\*([^*\n]+)\*(?=\s|$)/g,`$1<i>$2</i>`)}var N={note:{label:`说明`,icon:`i-tabler-info-circle`},tip:{label:`提示`,icon:`i-tabler-bulb`},important:{label:`重要`,icon:`i-tabler-flag`},warning:{label:`警告`,icon:`i-tabler-alert-triangle`},caution:{label:`注意`,icon:`i-tabler-shield-half`}};function P(e){let t=[];return j(e).replace(/```([\w+-]*)\n?([\s\S]*?)(?:```|$)/g,(e,n,r)=>{let i=t.length;return t.push(`<div class="code-block" data-lang="${n||`text`}"><div class="code-head"><span class="code-lang">${n||`text`}</span><button type="button" class="code-copy">复制</button></div><pre><code>${r.replace(/\n$/,``)}</code></pre></div>`),`@@AWCODE${i}@@`}).split(/\n{2,}/).map(e=>{let t=e.split(`
|
|
4
|
-
`);if(/^### /.test(e))return`<h5>${M(e.slice(4))}</h5>`;if(/^## /.test(e))return`<h4>${M(e.slice(3))}</h4>`;if(/^# /.test(e))return`<h4>${M(e.slice(2))}</h4>`;if(t.every(e=>/^\s*[-*] /.test(e)))return t.some(e=>/^\s*[-*] \[[ xX]\] /.test(e))?`<ul class="task-list">${t.map(e=>{let t=/^\s*[-*] \[([ xX])\] (.*)$/.exec(e),n=(t[1]??` `).toLowerCase()===`x`;return`<li class="task-item${n?` done`:``}"><span class="task-check${n?` on`:``}">${n?`✓`:``}</span><span class="task-text">${M(t[2]??``)}</span></li>`}).join(``)}</ul>`:`<ul>${t.map(e=>`<li>${M(e.replace(/^\s*[-*] /,``))}</li>`).join(``)}</ul>`;if(t.every(e=>/^>\s?/.test(e))){let e=/^>\s*\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\s*(.*)$/.exec(t[0]??``);if(e){let n=N[e[1].toLowerCase()],r=e[2]??``,i=[...r?[r]:[],...t.slice(1).map(e=>e.replace(/^>\s?/,``))];return`<div class="gh-alert gh-${e[1].toLowerCase()}"><div class="gh-title"><span class="${n.icon}"></span>${n.label}</div><p>${i.map(e=>M(e)).join(`<br>`)}</p></div>`}return`<blockquote>${t.map(e=>M(e.replace(/^>\s?/,``))).join(`<br>`)}</blockquote>`}return t.length===1&&/^@@AWCODE\d+@@$/.test(e)?e:`<p>${t.map(e=>M(e)).join(`<br>`)}</p>`}).join(``).replace(/@@AWCODE(\d+)@@/g,(e,n)=>t[Number(n)]??``)}function te(e){let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return RegExp(`(^|(?<![\\w@]))@(${t})(?=$|[\\s,.;:!?、,。;:!?…)\\]】」』])`,`gu`)}function ne(e,t){let n=[];if(t.length===0)return{text:e,hits:n};let r=[...t].sort((e,t)=>t.name.length-e.name.length),i=e;for(let e of r)e.name&&(i=i.replace(te(e.name),(t,r,i)=>(n.push(e),`\uE000M${n.length-1}\uE000`)));return{text:i,hits:n}}function F(e,t){return e.replace(/\uE000M(\d+)\uE000/g,(e,n)=>{let r=t[Number(n)];return r?`<span class="md-mention" data-agent-id="${j(r.agentId)}">@${j(r.name)}</span>`:``})}function I(e,t){let{text:n,hits:r}=ne(e,t);return F(P(n),r)}var L=5e3,R=[`agent.delta`],z={all:null,messages:[`agent.message`,`agent.delta`,`agent.status.message`,`a2a.message`],tasks:[`task.status`,`task.progress`,`a2a.artifact`],team:[`agent.member`,`task.status`],errors:[`error`],key:null};function B(e,t,n,r){if(e.type===`channel.snapshot`)return!1;if(t===`key`){let t=x(e);return t===`attention`||t===`terminal`}return n&&!n.includes(e.type)?!1:r&&e.type!==`task.status`&&e.type!==`task.progress`?e.agentId===r||e.type===`a2a.message`&&e.payload.metadata?.[`x-aw-target-agent`]===r:!0}function V(e,t,n,r){return e.filter(e=>B(e,t,n,r))}var H=Object.freeze([]),U=new Map;function W(e,t){let n=0,r=e.length;for(;n<r;){let i=n+r>>>1;(e[i]?.seq??0)>t?r=i:n=i+1}return n}var G=()=>({lastSeq:0,items:[],consumed:new Set,byAgent:new Map});function K(e,t){let n=t.agentId;if(!n)return;let r=e.byAgent.get(n);r?r.push(t):e.byAgent.set(n,[t])}function q(e,t){for(let n of t){let t=e.byAgent.get(n.agentId??``);if(!t)continue;let r=t.indexOf(n);r>=0&&t.splice(r,1),t.length===0&&e.byAgent.delete(n.agentId??``)}}function J(e){e.byAgent.clear();for(let t of e.items)K(e,t)}function Y(e,t,n){let r=0;for(let i of t)typeof i.seq!=`number`||i.seq>n||e.consumed.has(i.seq)||(e.items.push(i),e.consumed.add(i.seq),r+=1);if(r>0){e.items.sort((e,t)=>e.seq-t.seq);let t=e.items.length-L;t>0&&e.items.splice(0,t),J(e)}return r}var X=i(`workshop.events`,{state:()=>({rings:{},filters:{},focusAgents:{},laneLoaded:{}}),getters:{ring(e){return t=>e.rings[t]??G()},timeline(e){return t=>{let n=e.rings[t];if(!n)return H;let r=e.filters[t]??`all`,i=e.focusAgents[t]??null,a=n.items,o=z[r],s=a.length>0?a[a.length-1]?.seq??0:-1,c=U.get(t);if(!c||c.filter!==r||c.focus!==i||a.length===0&&c.result.length>0||c.lastSeq>s){let e=V(a,r,o,i);return U.set(t,{filter:r,focus:i,lastSeq:s,result:e}),e}let l=a[0]?.seq??0,u=c.result;if(u.length>0&&(u[0]?.seq??0)<l){let e=0;for(;e<u.length&&(u[e]?.seq??0)<l;)e++;u.splice(0,e)}if(s>c.lastSeq){let e=W(a,c.lastSeq);for(let t=e;t<a.length;t++){let e=a[t];B(e,r,o,i)&&u.push(e)}c.lastSeq=s}return u}},agentEvents(e){return(t,n)=>n?e.rings[t]?.byAgent.get(n)??H:H},lastSeq(e){return t=>e.rings[t]?.lastSeq??0}},actions:{ingest(e){if(!e.channelId)return;let t=this.rings[e.channelId]??G();if(e.type===`channel.snapshot`){this.rings[e.channelId]={lastSeq:e.seq,items:[],consumed:new Set([e.seq]),byAgent:new Map};return}if(typeof e.seq==`number`&&e.seq>t.lastSeq){if(t.consumed.add(e.seq),e.type===`agent.delta`){let n=t.items[t.items.length-1];if(n&&n.type===`agent.delta`&&n.agentId===e.agentId&&(n.taskId??null)===(e.taskId??null)&&n){let r=n.payload.delta;n.payload.delta=r+e.payload.delta,t.lastSeq=e.seq,this.rings[e.channelId]=t;return}}t.items.push(e),K(t,e),t.items.length>L&&q(t,t.items.splice(0,t.items.length-L)),t.lastSeq=e.seq,t.consumed.size>2e4&&(t.consumed=new Set(t.items.map(e=>e.seq))),this.rings[e.channelId]=t}},setFilter(e,t){this.filters[e]=t},async loadHistory(e,t=200){if(typeof window>`u`)return;let n=this.rings[e]??G();try{let r=await a(`/api/workshop/channels/${e}/events`,{params:{limit:t,excludeTypes:R.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});if(r.code!==0||!r.data?.items?.length)return;Y(n,r.data.items,n.lastSeq),this.rings[e]=n}catch{}},async loadEarlier(e,t=200){if(typeof window>`u`)return!1;let n=this.rings[e];if(!n)return!1;let r=n.items.length>0?n.items[0]?.seq??0:n.lastSeq;if(r<=1)return!1;try{let i=await a(`/api/workshop/channels/${e}/events`,{params:{limit:t,beforeSeq:Math.max(1,r-1),excludeTypes:R.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});if(i.code!==0||!i.data?.items?.length)return!1;let o=Y(n,i.data.items,n.lastSeq);return o>0&&(this.rings[e]=n),o>0&&i.data.items.length>=t}catch{return!1}},async loadLaneHistory(e,t,n=200){if(typeof window>`u`||this.laneLoaded[e]?.has(t))return;(this.laneLoaded[e]??=new Set).add(t);for(let t=0;t<20&&this.lastSeq(e)===0;t++)await new Promise(e=>setTimeout(e,150));if(this.lastSeq(e)===0){this.laneLoaded[e]?.delete(t);return}let r=this.rings[e];try{let i=await a(`/api/workshop/channels/${e}/events`,{params:{limit:n,agentId:t,excludeTypes:R.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});i.code===0&&i.data?.items?.length&&(Y(r,i.data.items,r.lastSeq),this.rings[e]=r)}catch{this.laneLoaded[e]?.delete(t)}},async loadLaneEarlier(e,t,n=200){if(typeof window>`u`)return!1;let r=this.rings[e];if(!r)return!1;let i=0;for(let e of r.items)if(e.agentId===t){i=e.seq;break}if(i<=1)return!1;try{let o=await a(`/api/workshop/channels/${e}/events`,{params:{limit:n,agentId:t,beforeSeq:i-1,excludeTypes:R.join(`,`)},headers:{authorization:`Bearer ${s().token}`}});if(o.code!==0||!o.data?.items?.length)return!1;let c=Y(r,o.data.items,r.lastSeq);return c>0&&(this.rings[e]=r),c>0&&o.data.items.length>=n}catch{return!1}},setFocusAgent(e,t){this.focusAgents[e]=t},clear(e){Reflect.deleteProperty(this.rings,e),Reflect.deleteProperty(this.laneLoaded,e)}}}),Z=i(`workshop.entities`,{state:()=>({channels:{},agents:{},tasks:{},refreshing:{},refreshingAgents:{}}),getters:{agentById(e){return(t,n)=>e.agents[t]?.find(e=>e.agentId===n)},agentName(e){return(t,n)=>n?e.agents[t]?.find(e=>e.agentId===n)?.name??n.slice(0,8):`system`},taskTitle(e){return(t,n)=>n?e.tasks[t]?.find(e=>e.id===n)?.title??n.slice(0,8):``},rootTasks(e){return t=>(e.tasks[t]??[]).filter(e=>!e.parentId)},taskById(e){return(t,n)=>e.tasks[t]?.find(e=>e.id===n)},busyCount(e){return t=>(e.agents[t]??[]).filter(e=>e.state===`busy`).length}},actions:{applySnapshot(e){let{channelId:t}=e;this.channels[t]={...e.channel,loadedAt:Date.now()},this.agents[t]=e.agents.map(e=>({...e,modelRef:e.config?.modelRef??e.modelRef??null})),this.tasks[t]=e.tasks.map(e=>this.toTaskView(e))},applyEvent(e){let t=e.channelId;switch(e.type){case`agent.status`:{let n=this.agents[t]??[],r=e.payload,i={agentId:r.agentId,state:r.state,currentTaskId:r.currentTaskId??null,currentTaskTitle:r.currentTaskTitle??null,currentTaskProgress:r.currentTaskProgress??null,queued:r.queued??r.queuedCount??0,completed:r.completed??r.completedCount??0},a=n.findIndex(e=>e.agentId===i.agentId);if(a>=0)n[a]={...n[a],...i};else{let e={agentId:i.agentId,state:i.state,currentTaskId:i.currentTaskId??null,queued:i.queued,completed:i.completed,name:i.agentId.slice(0,8),role:`worker`,harness:`-`};n.push(e),this.refreshAgents(t)}this.agents[t]=[...n];break}case`agent.member`:{let n=e.payload,r=this.agents[t]??[],i=r.findIndex(e=>e.agentId===n.agentId);if(n.op===`added`)i<0&&r.push({agentId:n.agentId,name:n.name,role:n.role,harness:n.harness,enabled:n.enabled,config:n.config,modelRef:n.config?.modelRef??null,state:`idle`,currentTaskId:null,queued:0,completed:0});else if(n.op===`updated`){if(i>=0){let e=r[i],t=n.config??e.config;r[i]={...e,name:n.name??e.name,role:n.role??e.role,harness:n.harness??e.harness,enabled:n.enabled??e.enabled,config:t,modelRef:t?.modelRef??e.modelRef??null}}}else n.op===`removed`&&i>=0&&r.splice(i,1);this.agents[t]=[...r];break}case`task.status`:{let n=e.payload,r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId);if(i>=0){let e=r[i];r[i]={...e,state:n.state,assigneeId:n.assigneeId??e.assigneeId,title:n.title??e.title,parentId:n.parentId??e.parentId,progress:Math.max(e.progress,n.progress??0),routeReason:n.routeReason??e.routeReason,createdAt:n.createdAt??e.createdAt,artifacts:Math.max(e.artifacts,n.artifacts??0)}}else{let e={id:n.taskId,title:n.title??n.taskId.slice(0,8),state:n.state,progress:n.progress??0,assigneeId:n.assigneeId??``,artifacts:n.artifacts??0};n.parentId&&(e.parentId=n.parentId),n.routeReason&&(e.routeReason=n.routeReason),n.createdAt&&(e.createdAt=n.createdAt),r.push(e),n.title===void 0&&this.refreshTasks(t)}this.tasks[t]=[...r];break}case`task.progress`:{let n=e.payload,r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId),a=i>=0?r[i]:void 0;a&&(r[i]={...a,progress:n.progress}),this.tasks[t]=[...r];break}case`a2a.artifact`:{let n=e.payload;if(!n.taskId)break;let r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId),a=i>=0?r[i]:void 0;a&&(r[i]={...a,artifacts:a.artifacts+1}),this.tasks[t]=[...r];break}}},toTaskView(e){return{id:e.id,parentId:e.parentId,title:e.title,state:e.state,progress:e.progress,assigneeId:e.assigneeId,artifacts:e.artifacts.length,updatedAt:e.updatedAt}},refreshChannel(e,t){this.applySnapshot(t)},refreshAgents(e){this.refreshingAgents[e]||(this.refreshingAgents[e]=!0,a(`/api/workshop/channels/${e}/agents`,{headers:{authorization:`Bearer ${s().token}`}}).then(t=>{let n=t.data??[],r=[...this.agents[e]??[]];for(let e of n){let t=r.findIndex(t=>t.agentId===e.id);t>=0?r[t]={...r[t],name:e.name,role:e.role,harness:e.harness,config:e.config}:r.push({agentId:e.id,name:e.name,role:e.role,harness:e.harness,config:e.config,state:`idle`,currentTaskId:null,queued:0,completed:0})}this.agents[e]=r}).catch(()=>{}).finally(()=>{this.refreshingAgents[e]=!1}))},refreshTasks(e){this.refreshing[e]||(this.refreshing[e]=!0,a(`/api/workshop/channels/${e}/tasks`,{headers:{authorization:`Bearer ${s().token}`}}).then(t=>{let n=t.data??[],r=this.tasks[e]??[],i=new Map(r.map(e=>[e.id,e])),a=new Set(n.map(e=>e.id)),o=n.map(e=>{let t=i.get(e.id),n=this.toTaskView(e);return t&&t.progress>n.progress?{...n,progress:t.progress}:n});for(let e of r)a.has(e.id)||o.push(e);this.tasks[e]=o}).catch(()=>{}).finally(()=>{this.refreshing[e]=!1}))}}}),Q=null,$=0;function re(){let r=d(),i=s(),a=X(),l=Z(),u=m(),p=c(),h=globalThis.__workshopWs??null,g=new Map;if(!h){let e=new f(t=>{if(t.channelId&&typeof t.seq==`number`&&t.seq>0&&t.type!==`channel.snapshot`){let e=g.get(t.channelId)??0;if(t.seq<=e)return;g.set(t.channelId,t.seq),r.pendingReplay&&=!1}t.type===`channel.snapshot`&&t.channelId?(g.set(t.channelId,typeof t.seq==`number`?t.seq:0),r.pendingReplay=!1,a.ingest(t),l.applyEvent(t),l.applySnapshot(t.payload),a.loadHistory(t.channelId)):(a.ingest(t),l.applyEvent(t)),(t.type===`hitl.request`||t.type===`hitl.resolved`)&&u.applyEnvelope(t),typeof t.seq==`number`&&t.seq>0&&t.channelId&&(r.cursors[t.channelId]=t.seq,e.updateCursor(t.channelId,t.seq)),p.emit(t)},(e,t)=>{r.state=e,r.retryCount=t},()=>{r.pendingReplay=!0},()=>{r.lastDataAt=Date.now()});h=e,globalThis.__workshopWs=h}return e(()=>i.token,e=>{h instanceof f&&(h.userToken=e)},{immediate:!0}),n(()=>{$++,!Q&&(Q=o(()=>{h?.ping(),h?.checkStale()},15e3))}),t(()=>{--$<=0&&Q&&(clearInterval(Q),Q=null)}),{subscribe:e=>{let t=a.lastSeq(e);h?.subscribe(e,t>0?t:void 0)},unsubscribe:e=>{h&&(h.unsubscribe(e),h.refCount(e)===0&&a.clear(e))},ensureConnected:()=>{h?.ensureConnected()},conn:r}}export{_ as a,S as c,I as d,A as f,D as i,k as l,d as m,Z as n,g as o,m as p,X as r,y as s,re as t,ee as u};
|
|
4
|
+
`);if(/^### /.test(e))return`<h5>${M(e.slice(4))}</h5>`;if(/^## /.test(e))return`<h4>${M(e.slice(3))}</h4>`;if(/^# /.test(e))return`<h4>${M(e.slice(2))}</h4>`;if(t.every(e=>/^\s*[-*] /.test(e)))return t.some(e=>/^\s*[-*] \[[ xX]\] /.test(e))?`<ul class="task-list">${t.map(e=>{let t=/^\s*[-*] \[([ xX])\] (.*)$/.exec(e),n=(t[1]??` `).toLowerCase()===`x`;return`<li class="task-item${n?` done`:``}"><span class="task-check${n?` on`:``}">${n?`✓`:``}</span><span class="task-text">${M(t[2]??``)}</span></li>`}).join(``)}</ul>`:`<ul>${t.map(e=>`<li>${M(e.replace(/^\s*[-*] /,``))}</li>`).join(``)}</ul>`;if(t.every(e=>/^>\s?/.test(e))){let e=/^>\s*\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\]\s*(.*)$/.exec(t[0]??``);if(e){let n=N[e[1].toLowerCase()],r=e[2]??``,i=[...r?[r]:[],...t.slice(1).map(e=>e.replace(/^>\s?/,``))];return`<div class="gh-alert gh-${e[1].toLowerCase()}"><div class="gh-title"><span class="${n.icon}"></span>${n.label}</div><p>${i.map(e=>M(e)).join(`<br>`)}</p></div>`}return`<blockquote>${t.map(e=>M(e.replace(/^>\s?/,``))).join(`<br>`)}</blockquote>`}return t.length===1&&/^@@AWCODE\d+@@$/.test(e)?e:`<p>${t.map(e=>M(e)).join(`<br>`)}</p>`}).join(``).replace(/@@AWCODE(\d+)@@/g,(e,n)=>t[Number(n)]??``)}function te(e){let t=e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return RegExp(`(^|(?<![\\w@]))@(${t})(?=$|[\\s,.;:!?、,。;:!?…)\\]】」』])`,`gu`)}function ne(e,t){let n=[];if(t.length===0)return{text:e,hits:n};let r=[...t].sort((e,t)=>t.name.length-e.name.length),i=e;for(let e of r)e.name&&(i=i.replace(te(e.name),(t,r,i)=>(n.push(e),`\uE000M${n.length-1}\uE000`)));return{text:i,hits:n}}function F(e,t){return e.replace(/\uE000M(\d+)\uE000/g,(e,n)=>{let r=t[Number(n)];return r?`<span class="md-mention" data-agent-id="${j(r.agentId)}">@${j(r.name)}</span>`:``})}function I(e,t){let{text:n,hits:r}=ne(e,t);return F(P(n),r)}var L=5e3,R=[`agent.delta`],z={all:null,messages:[`agent.message`,`agent.delta`,`agent.status.message`,`a2a.message`],tasks:[`task.status`,`task.progress`,`a2a.artifact`],team:[`agent.member`,`task.status`],errors:[`error`],key:null};function B(e,t,n,r){if(e.type===`channel.snapshot`)return!1;if(t===`key`){let t=x(e);return t===`attention`||t===`terminal`}return n&&!n.includes(e.type)?!1:r&&e.type!==`task.status`&&e.type!==`task.progress`?e.agentId===r||e.type===`a2a.message`&&e.payload.metadata?.[`x-aw-target-agent`]===r:!0}function V(e,t,n,r){return e.filter(e=>B(e,t,n,r))}var H=Object.freeze([]),U=new Map;function W(e,t){let n=0,r=e.length;for(;n<r;){let i=n+r>>>1;(e[i]?.seq??0)>t?r=i:n=i+1}return n}var G=()=>({lastSeq:0,items:[],consumed:new Set,byAgent:new Map});function K(e,t){let n=t.agentId;if(!n)return;let r=e.byAgent.get(n);r?r.push(t):e.byAgent.set(n,[t])}function q(e,t){for(let n of t){let t=e.byAgent.get(n.agentId??``);if(!t)continue;let r=t.indexOf(n);r>=0&&t.splice(r,1),t.length===0&&e.byAgent.delete(n.agentId??``)}}function J(e){e.byAgent.clear();for(let t of e.items)K(e,t)}function Y(e,t,n){let r=0;for(let i of t)typeof i.seq!=`number`||i.seq>n||e.consumed.has(i.seq)||(e.items.push(i),e.consumed.add(i.seq),r+=1);if(r>0){e.items.sort((e,t)=>e.seq-t.seq);let t=e.items.length-L;t>0&&e.items.splice(0,t),J(e)}return r}var X=i(`workshop.events`,{state:()=>({rings:{},filters:{},focusAgents:{},laneLoaded:{}}),getters:{ring(e){return t=>e.rings[t]??G()},timeline(e){return t=>{let n=e.rings[t];if(!n)return H;let r=e.filters[t]??`all`,i=e.focusAgents[t]??null,a=n.items,o=z[r],s=a.length>0?a[a.length-1]?.seq??0:-1,c=U.get(t);if(!c||c.filter!==r||c.focus!==i||a.length===0&&c.result.length>0||c.lastSeq>s){let e=V(a,r,o,i);return U.set(t,{filter:r,focus:i,lastSeq:s,result:e}),e}let l=a[0]?.seq??0,u=c.result;if(u.length>0&&(u[0]?.seq??0)<l){let e=0;for(;e<u.length&&(u[e]?.seq??0)<l;)e++;u.splice(0,e)}if(s>c.lastSeq){let e=W(a,c.lastSeq);for(let t=e;t<a.length;t++){let e=a[t];B(e,r,o,i)&&u.push(e)}c.lastSeq=s}return u}},agentEvents(e){return(t,n)=>n?e.rings[t]?.byAgent.get(n)??H:H},lastSeq(e){return t=>e.rings[t]?.lastSeq??0}},actions:{ingest(e){if(!e.channelId)return;let t=this.rings[e.channelId]??G();if(e.type===`channel.snapshot`){this.rings[e.channelId]={lastSeq:e.seq,items:[],consumed:new Set([e.seq]),byAgent:new Map};return}if(typeof e.seq==`number`&&e.seq>t.lastSeq){if(t.consumed.add(e.seq),e.type===`agent.delta`){let n=t.items[t.items.length-1];if(n&&n.type===`agent.delta`&&n.agentId===e.agentId&&(n.taskId??null)===(e.taskId??null)&&n){let r=n.payload.delta;n.payload.delta=r+e.payload.delta,t.lastSeq=e.seq,this.rings[e.channelId]=t;return}}t.items.push(e),K(t,e),t.items.length>L&&q(t,t.items.splice(0,t.items.length-L)),t.lastSeq=e.seq,t.consumed.size>2e4&&(t.consumed=new Set(t.items.map(e=>e.seq))),this.rings[e.channelId]=t}},setFilter(e,t){this.filters[e]=t},async loadHistory(e,t=200){if(typeof window>`u`)return;let n=this.rings[e]??G();try{let r=await a(`/api/workshop/channels/${e}/events`,{params:{limit:t,excludeTypes:R.join(`,`)},headers:{authorization:`Bearer ${c().token}`}});if(r.code!==0||!r.data?.items?.length)return;Y(n,r.data.items,n.lastSeq),this.rings[e]=n}catch{}},async loadEarlier(e,t=200){if(typeof window>`u`)return!1;let n=this.rings[e];if(!n)return!1;let r=n.items.length>0?n.items[0]?.seq??0:n.lastSeq;if(r<=1)return!1;try{let i=await a(`/api/workshop/channels/${e}/events`,{params:{limit:t,beforeSeq:Math.max(1,r-1),excludeTypes:R.join(`,`)},headers:{authorization:`Bearer ${c().token}`}});if(i.code!==0||!i.data?.items?.length)return!1;let o=Y(n,i.data.items,n.lastSeq);return o>0&&(this.rings[e]=n),o>0&&i.data.items.length>=t}catch{return!1}},async loadLaneHistory(e,t,n=200){if(typeof window>`u`||this.laneLoaded[e]?.has(t))return;(this.laneLoaded[e]??=new Set).add(t);for(let t=0;t<20&&this.lastSeq(e)===0;t++)await new Promise(e=>setTimeout(e,150));if(this.lastSeq(e)===0){this.laneLoaded[e]?.delete(t);return}let r=this.rings[e];try{let i=await a(`/api/workshop/channels/${e}/events`,{params:{limit:n,agentId:t,excludeTypes:R.join(`,`)},headers:{authorization:`Bearer ${c().token}`}});i.code===0&&i.data?.items?.length&&(Y(r,i.data.items,r.lastSeq),this.rings[e]=r)}catch{this.laneLoaded[e]?.delete(t)}},async loadLaneEarlier(e,t,n=200){if(typeof window>`u`)return!1;let r=this.rings[e];if(!r)return!1;let i=0;for(let e of r.items)if(e.agentId===t){i=e.seq;break}if(i<=1)return!1;try{let o=await a(`/api/workshop/channels/${e}/events`,{params:{limit:n,agentId:t,beforeSeq:i-1,excludeTypes:R.join(`,`)},headers:{authorization:`Bearer ${c().token}`}});if(o.code!==0||!o.data?.items?.length)return!1;let s=Y(r,o.data.items,r.lastSeq);return s>0&&(this.rings[e]=r),s>0&&o.data.items.length>=n}catch{return!1}},setFocusAgent(e,t){this.focusAgents[e]=t},clear(e){Reflect.deleteProperty(this.rings,e),Reflect.deleteProperty(this.laneLoaded,e)}}}),Z=i(`workshop.entities`,{state:()=>({channels:{},agents:{},tasks:{},refreshing:{},refreshingAgents:{}}),getters:{agentById(e){return(t,n)=>e.agents[t]?.find(e=>e.agentId===n)},agentName(e){return(t,n)=>n?e.agents[t]?.find(e=>e.agentId===n)?.name??n.slice(0,8):`system`},taskTitle(e){return(t,n)=>n?e.tasks[t]?.find(e=>e.id===n)?.title??n.slice(0,8):``},rootTasks(e){return t=>(e.tasks[t]??[]).filter(e=>!e.parentId)},taskById(e){return(t,n)=>e.tasks[t]?.find(e=>e.id===n)},busyCount(e){return t=>(e.agents[t]??[]).filter(e=>e.state===`busy`).length}},actions:{applySnapshot(e){let{channelId:t}=e;this.channels[t]={...e.channel,loadedAt:Date.now()},this.agents[t]=e.agents.map(e=>({...e,modelRef:e.config?.modelRef??e.modelRef??null})),this.tasks[t]=e.tasks.map(e=>this.toTaskView(e))},applyEvent(e){let t=e.channelId;switch(e.type){case`agent.status`:{let n=this.agents[t]??[],r=e.payload,i={agentId:r.agentId,state:r.state,currentTaskId:r.currentTaskId??null,currentTaskTitle:r.currentTaskTitle??null,currentTaskProgress:r.currentTaskProgress??null,queued:r.queued??r.queuedCount??0,completed:r.completed??r.completedCount??0},a=n.findIndex(e=>e.agentId===i.agentId);if(a>=0)n[a]={...n[a],...i};else{let e={agentId:i.agentId,state:i.state,currentTaskId:i.currentTaskId??null,queued:i.queued,completed:i.completed,name:i.agentId.slice(0,8),role:`worker`,harness:`-`};n.push(e),this.refreshAgents(t)}this.agents[t]=[...n];break}case`agent.member`:{let n=e.payload,r=this.agents[t]??[],i=r.findIndex(e=>e.agentId===n.agentId);if(n.op===`added`)i<0&&r.push({agentId:n.agentId,name:n.name,role:n.role,harness:n.harness,enabled:n.enabled,config:n.config,modelRef:n.config?.modelRef??null,state:`idle`,currentTaskId:null,queued:0,completed:0});else if(n.op===`updated`){if(i>=0){let e=r[i],t=n.config??e.config;r[i]={...e,name:n.name??e.name,role:n.role??e.role,harness:n.harness??e.harness,enabled:n.enabled??e.enabled,config:t,modelRef:t?.modelRef??e.modelRef??null}}}else n.op===`removed`&&i>=0&&r.splice(i,1);this.agents[t]=[...r];break}case`task.status`:{let n=e.payload,r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId);if(i>=0){let e=r[i];r[i]={...e,state:n.state,assigneeId:n.assigneeId??e.assigneeId,title:n.title??e.title,parentId:n.parentId??e.parentId,progress:Math.max(e.progress,n.progress??0),routeReason:n.routeReason??e.routeReason,createdAt:n.createdAt??e.createdAt,artifacts:Math.max(e.artifacts,n.artifacts??0)}}else{let e={id:n.taskId,title:n.title??n.taskId.slice(0,8),state:n.state,progress:n.progress??0,assigneeId:n.assigneeId??``,artifacts:n.artifacts??0};n.parentId&&(e.parentId=n.parentId),n.routeReason&&(e.routeReason=n.routeReason),n.createdAt&&(e.createdAt=n.createdAt),r.push(e),n.title===void 0&&this.refreshTasks(t)}this.tasks[t]=[...r];break}case`task.progress`:{let n=e.payload,r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId),a=i>=0?r[i]:void 0;a&&(r[i]={...a,progress:n.progress}),this.tasks[t]=[...r];break}case`a2a.artifact`:{let n=e.payload;if(!n.taskId)break;let r=this.tasks[t]??[],i=r.findIndex(e=>e.id===n.taskId),a=i>=0?r[i]:void 0;a&&(r[i]={...a,artifacts:a.artifacts+1}),this.tasks[t]=[...r];break}}},toTaskView(e){return{id:e.id,parentId:e.parentId,title:e.title,state:e.state,progress:e.progress,assigneeId:e.assigneeId,artifacts:e.artifacts.length,updatedAt:e.updatedAt}},refreshChannel(e,t){this.applySnapshot(t)},refreshAgents(e){this.refreshingAgents[e]||(this.refreshingAgents[e]=!0,a(`/api/workshop/channels/${e}/agents`,{headers:{authorization:`Bearer ${c().token}`}}).then(t=>{let n=t.data??[],r=[...this.agents[e]??[]];for(let e of n){let t=r.findIndex(t=>t.agentId===e.id);t>=0?r[t]={...r[t],name:e.name,role:e.role,harness:e.harness,config:e.config}:r.push({agentId:e.id,name:e.name,role:e.role,harness:e.harness,config:e.config,state:`idle`,currentTaskId:null,queued:0,completed:0})}this.agents[e]=r}).catch(()=>{}).finally(()=>{this.refreshingAgents[e]=!1}))},refreshTasks(e){this.refreshing[e]||(this.refreshing[e]=!0,a(`/api/workshop/channels/${e}/tasks`,{headers:{authorization:`Bearer ${c().token}`}}).then(t=>{let n=t.data??[],r=this.tasks[e]??[],i=new Map(r.map(e=>[e.id,e])),a=new Set(n.map(e=>e.id)),o=n.map(e=>{let t=i.get(e.id),n=this.toTaskView(e);return t&&t.progress>n.progress?{...n,progress:t.progress}:n});for(let e of r)a.has(e.id)||o.push(e);this.tasks[e]=o}).catch(()=>{}).finally(()=>{this.refreshing[e]=!1}))}}}),Q=null,$=0;function re(){let r=d(),i=c(),a=X(),l=Z(),u=m(),p=s(),h=globalThis.__workshopWs??null,g=new Map;if(!h){let e=new f(t=>{if(t.channelId&&typeof t.seq==`number`&&t.seq>0&&t.type!==`channel.snapshot`){let e=g.get(t.channelId)??0;if(t.seq<=e)return;g.set(t.channelId,t.seq),r.pendingReplay&&=!1}t.type===`channel.snapshot`&&t.channelId?(g.set(t.channelId,typeof t.seq==`number`?t.seq:0),r.pendingReplay=!1,a.ingest(t),l.applyEvent(t),l.applySnapshot(t.payload),a.loadHistory(t.channelId)):(a.ingest(t),l.applyEvent(t)),(t.type===`hitl.request`||t.type===`hitl.resolved`)&&u.applyEnvelope(t),typeof t.seq==`number`&&t.seq>0&&t.channelId&&(r.cursors[t.channelId]=t.seq,e.updateCursor(t.channelId,t.seq)),p.emit(t)},(e,t)=>{r.state=e,r.retryCount=t},()=>{r.pendingReplay=!0},()=>{r.lastDataAt=Date.now()});h=e,globalThis.__workshopWs=h}return e(()=>i.token,e=>{h instanceof f&&(h.userToken=e)},{immediate:!0}),n(()=>{$++,!Q&&(Q=o(()=>{h?.ping(),h?.checkStale()},15e3))}),t(()=>{--$<=0&&Q&&(clearInterval(Q),Q=null)}),{subscribe:e=>{let t=a.lastSeq(e);h?.subscribe(e,t>0?t:void 0)},unsubscribe:e=>{h&&(h.unsubscribe(e),h.refCount(e)===0&&a.clear(e))},ensureConnected:()=>{h?.ensureConnected()},conn:r}}export{_ as a,S as c,I as d,A as f,D as i,k as l,d as m,Z as n,g as o,m as p,X as r,y as s,re as t,ee as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ht as e,S as t,Ut as n,V as r,Vt as i,W as a,b as o,d as s,dt as c,f as l,h as u,i as d,m as f,nt as p,pt as m,tt as h,xt as g,y as _}from"./CSkxz2NX.js";import{c as v,f as y,l as b,o as ee,t as x}from"./D6uzXueg.js";import{t as te}from"./BHA40aHa.js";import{n as ne}from"./KZQX7xoM.js";import{t as S}from"./BDNMzG2s2.js";import{t as C}from"./D0ZBQrN_2.js";import{r as w,t as re}from"./D20Yamr4.js";var ie={class:`page`},ae={class:`aw-page-head`},oe={class:`sub`},se={class:`badges mono`},ce=[`title`],le={class:`badge`},ue={key:0,class:`banner bad`},de={class:`fleet-filter`},fe={class:`aw-seg`},pe=[`placeholder`],me={class:`line-grid aw-stagger`},he={class:`lc-head`},ge={class:`lc-name`},_e=[`title`,`onClick`],ve=[`title`,`onClick`],ye={key:0,class:`lc-run mono`},be={class:`lc-stats mono`},xe={class:`lc-ctl`},Se=[`onUpdate:modelValue`,`disabled`,`title`],Ce={value:``},we=[`value`,`disabled`],Te=[`disabled`,`onClick`],Ee=[`disabled`,`onClick`],De={key:1,class:`banner`},Oe={key:2,class:`banner`},ke={class:`modal`},Ae={class:`m-title`},je={class:`f`},Me=[`placeholder`],Ne={class:`f`},Pe=[`placeholder`],Fe={class:`f`},Ie={class:`color-row`},Le=[`onClick`],Re={class:`dim`},ze={key:0,class:`m-err`},Be={class:`m-actions`},Ve=[`disabled`],He={class:`modal`},Ue={class:`m-title`},We={class:`f`},Ge=[`placeholder`],Ke={class:`f`},qe=[`placeholder`],Je={class:`f`},Ye={class:`color-row`},Xe=[`onClick`],Ze={class:`dim`},Qe={key:0,class:`m-err`},$e={class:`m-actions`},et=[`disabled`],tt={class:`modal`},nt={class:`m-title danger-title`},rt={class:`del-summary`},it={class:`del-purge`},at={key:0,class:`m-err`},ot={class:`m-actions`},st=[`disabled`],ct={class:`modal wide`},lt={class:`m-title`},ut={class:`dim mono`},dt={class:`dim tpl-hint`},ft={class:`tpl-list`},pt=[`title`],mt={class:`mono dim`},ht={key:0,class:`tpl-sem`},gt=[`onClick`],_t={class:`sec-label`},vt={class:`tpl-form`},yt={class:`f`},bt=[`placeholder`],xt={class:`f`},St=[`placeholder`],Ct={class:`f`},wt={class:`f`},Tt={class:`f`},Et={class:`f`},Dt={class:`f`},Ot={class:`f`},kt=[`value`],At={class:`f`},jt=[`placeholder`],Mt={key:0,class:`m-err`},Nt={class:`m-actions`},Pt=[`disabled`],Ft={key:3,class:`banner bad`},T=S(t({__name:`index`,setup(t){let{t:S}=ne(),T=re();T.load();let E=s(()=>T.lines.map(e=>({line:e,nodes:T.nodes.filter(t=>t.lineId===e.id).length,products:T.products.filter(t=>t.lineId===e.id).length,recipes:T.recipes.filter(t=>t.lineId===e.id).length}))),D=s(()=>T.nodes.filter(e=>!e.lineId).length+T.products.filter(e=>!e.lineId).length),O=m(`all`),k=m(``),A=s(()=>E.value.filter(e=>T.lineStateOf(e.line.id).active).length),j=s(()=>E.value.filter(e=>{let t=T.lineStateOf(e.line.id).active;if(O.value===`running`&&!t||O.value===`idle`&&t)return!1;let n=k.value.trim().toLowerCase();return!(n&&!e.line.name.toLowerCase().includes(n)&&!(e.line.description??``).toLowerCase().includes(n))})),M=m(!1),N=m(!1),P=m(``),F=c({name:``,description:``,color:``}),I=s(()=>w[T.lines.length%w.length]??`#3aa0ff`);function It(){F.name=``,F.description=``,F.color=``,P.value=``,M.value=!0}async function Lt(){N.value=!0,P.value=``;try{await T.createLine({name:F.name.trim(),description:F.description.trim(),color:F.color||void 0}),M.value=!1}catch(e){P.value=C(e)}finally{N.value=!1}}let L=m(``),R=m(``),z=c({});async function Rt(e){L.value=e.line.id,R.value=``;try{let t=z[e.line.id]??``;if(!t)throw Error(S(`dcw.k188cswn039`));await T.startLine(e.line.id,t)}catch(e){R.value=C(e)}finally{L.value=``}}async function zt(e){L.value=e.line.id,R.value=``;try{await T.stopLine(e.line.id)}catch(e){R.value=C(e)}finally{L.value=``}}function B(e){return T.recipes.filter(t=>t.lineId===e)}let V=m(!1),H=m(!1),U=m(``),W=m(!0),G=m(null);function Bt(e){G.value=e,W.value=!0,U.value=``,V.value=!0}async function Vt(){if(G.value){H.value=!0,U.value=``;try{await T.removeLine(G.value.line.id,W.value),V.value=!1}catch(e){U.value=C(e)}finally{H.value=!1}}}let K=m(!1),q=m(!1),J=m(``),Y=c({id:``,name:``,description:``,color:``});function Ht(e){Y.id=e.line.id,Y.name=e.line.name,Y.description=e.line.description,Y.color=e.line.color,J.value=``,K.value=!0}async function Ut(){q.value=!0,J.value=``;try{await T.updateLine(Y.id,{name:Y.name.trim(),description:Y.description.trim(),color:Y.color||void 0}),K.value=!1}catch(e){J.value=C(e)}finally{q.value=!1}}let X=m(!1),Z=m(``),Q=c({name:``,ch:``,code:``,unit:``,min:``,max:``,decimals:1,icon:`gateway`,semantics:``}),Wt=[{key:`thermo`,label:S(`dcw.k422b8040`)},{key:`pressure`,label:S(`dcw.k3x6ff041`)},{key:`tension`,label:S(`dcw.k3z9xc042`)},{key:`encoder`,label:S(`dcw.kjb3vhs043`)},{key:`camera`,label:S(`dcw.k47atw044`)},{key:`gateway`,label:S(`dcw.k48c07045`)}];async function Gt(){Z.value=``;try{if(!Q.name.trim())throw Error(S(`dcw.k6ugbw2046`));if(Q.min===``||Q.max===``)throw Error(S(`dcw.k13awowo047`));await T.createTemplate({name:Q.name.trim(),ch:Q.ch.trim()||Q.name.trim(),code:Q.code.trim()||`CUSTOM`,unit:Q.unit.trim()||`-`,min:Number(Q.min),max:Number(Q.max),decimals:Number(Q.decimals)||0,icon:Q.icon,semantics:Q.semantics.trim()||void 0}),Q.name=``,Q.ch=``,Q.code=``,Q.unit=``,Q.min=``,Q.max=``}catch(e){Z.value=C(e)}}async function Kt(e){Z.value=``;try{await fetch(`/api/workshop/dcw/templates/${e}`,{method:`DELETE`,headers:{authorization:`Bearer ${document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``}`}}).then(async e=>{let t=await e.json().catch(()=>({}));if(t?.code!==0)throw Error(t?.message??S(`dcw.k1bphrb3048`))});let t=T.templates.findIndex(t=>t.key===e);t>=0&&T.templates.splice(t,1)}catch(e){Z.value=C(e)}}let $=s(()=>T.templates.filter(e=>e.builtin).length);return(t,s)=>{let c=te;return r(),u(`div`,ie,[l(`div`,ae,[l(`div`,null,[s[27]||=l(`p`,{class:`aw-kicker`},` AGENTWORKSHOP / LINE OPERATIONS `,-1),l(`h1`,null,n(t.$t(`dcw.k1b2tk5c009`)),1),l(`p`,oe,n(t.$t(`dcw.k5q0aqi010`)),1)]),l(`div`,se,[D.value?(r(),u(`span`,{key:0,class:`badge warn-badge`,title:t.$t(`dcw.k1i5a9vw001`)},n(t.$t(`dcw.k3ootr6049`))+` `+n(D.value),9,ce)):f(``,!0),l(`span`,le,n(t.$t(`dcw.k3wj9n050`))+` `+n(g(T).lines.length),1),l(`button`,{class:`badge tpl-btn`,onClick:s[0]||=e=>X.value=!0},n(t.$t(`dcw.k11nndsp051`))+` `+n(g(T).templates.length),1)])]),R.value?(r(),u(`p`,ue,n(R.value),1)):f(``,!0),l(`div`,de,[l(`div`,fe,[l(`button`,{class:i({on:O.value===`all`}),onClick:s[1]||=e=>O.value=`all`},n(t.$t(`common.all`))+` `+n(E.value.length),3),l(`button`,{class:i({on:O.value===`running`}),onClick:s[2]||=e=>O.value=`running`},n(t.$t(`dcw.k1eox1el055`))+` `+n(A.value),3),l(`button`,{class:i({on:O.value===`idle`}),onClick:s[3]||=e=>O.value=`idle`},n(t.$t(`dcw.k149r6y7059`))+` `+n(E.value.length-A.value),3)]),p(l(`input`,{"onUpdate:modelValue":s[4]||=e=>k.value=e,class:`inp fleet-search`,type:`search`,placeholder:t.$t(`dcw.filterSearchPh`)},null,8,pe),[[b,k.value]])]),l(`div`,me,[(r(!0),u(d,null,a(j.value,f=>(r(),u(`div`,{key:f.line.id,class:i([`line-card aw-liftable`,{idle:!g(T).lineStateOf(f.line.id).active}]),style:e({"--lc":f.line.color})},[l(`div`,he,[s[30]||=l(`span`,{class:`lc-dot`},null,-1),l(`b`,ge,n(f.line.name),1),l(`span`,{class:i([`lc-state`,{on:g(T).lineStateOf(f.line.id).active}])},n(g(T).lineStateOf(f.line.id).active?t.$t(`dcw.k1eox1el055`):t.$t(`dcw.k149r6y7059`)),3),l(`button`,{class:`lc-act`,title:t.$t(`common.edit`),onClick:e=>Ht(f)},[...s[28]||=[l(`span`,{class:`i-tabler-pencil`},null,-1)]],8,_e),l(`button`,{class:`lc-act danger`,title:t.$t(`dcw.k3xakp026`),onClick:e=>Bt(f)},[...s[29]||=[l(`span`,{class:`i-tabler-trash`},null,-1)]],8,ve)]),g(T).lineStateOf(f.line.id).active?(r(),u(`small`,ye,n(g(T).lineStateOf(f.line.id).productName)+` · `+n(g(T).lineStateOf(f.line.id).recipeName)+` · `+n(t.$t(`dcw.k3zz0f052`))+` `+n(g(T).lineStateOf(f.line.id).taggedSamples),1)):(r(),u(`small`,{key:1,class:i([`lc-run dim`,{ph:!f.line.description}])},n(f.line.description||t.$t(`dcw.k18moyq1056`)),3)),l(`div`,be,[l(`span`,null,[_(n(t.$t(`dcw.k45uio011`))+` `,1),l(`b`,null,n(f.nodes),1)]),l(`span`,null,[_(n(t.$t(`dcw.k3waz1012`))+` `,1),l(`b`,null,n(f.products),1)]),l(`span`,null,[_(n(t.$t(`dcw.k48grv013`))+` `,1),l(`b`,null,n(f.recipes),1)])]),l(`div`,xe,[g(T).lineStateOf(f.line.id).active?(r(),u(`button`,{key:1,class:`pill-btn stop`,disabled:L.value===f.line.id,onClick:e=>zt(f)},n(t.$t(`dcw.k148rclf015`)),9,Ee)):(r(),u(d,{key:0},[p(l(`select`,{"onUpdate:modelValue":e=>z[f.line.id]=e,class:`inp`,disabled:B(f.line.id).length===0,title:t.$t(`dcw.k1dhaby4003`)},[l(`option`,Ce,n(B(f.line.id).length?t.$t(`dcw.kutxzsz057`):t.$t(`dcw.k1elczt9060`)),1),(r(!0),u(d,null,a(B(f.line.id),e=>(r(),u(`option`,{key:e.id,value:e.id,disabled:e.params.length===0},n(e.name)+`(`+n(e.params.length)+`) `,9,we))),128))],8,Se),[[v,z[f.line.id]]]),l(`button`,{class:`pill-btn`,disabled:L.value===f.line.id||!z[f.line.id],onClick:e=>Rt(f)},n(t.$t(`dcw.k149b4vg014`)),9,Te)],64))]),o(c,{class:`lc-manage`,to:`/dcw/${f.line.id}`},{default:h(()=>[_(n(t.$t(`dcw.k1fwqw5g016`)),1)]),_:1},8,[`to`])],6))),128)),l(`button`,{class:`line-card new-card`,onClick:It},[s[31]||=l(`span`,{class:`i-tabler-plus`},null,-1),_(` `+n(t.$t(`dcw.k1efe391017`))+` `,1),l(`small`,null,n(t.$t(`dcw.k19dlbli053`)),1)])]),g(T).loaded&&g(T).lines.length===0?(r(),u(`p`,De,n(t.$t(`dcw.k1sk85vs018`)),1)):g(T).loaded&&j.value.length===0?(r(),u(`p`,Oe,n(t.$t(`dcw.filterEmpty`)),1)):f(``,!0),o(x,{name:`modal`},{default:h(()=>[M.value?(r(),u(`div`,{key:0,class:`modal-mask`,onClick:s[8]||=y(e=>M.value=!1,[`self`])},[l(`div`,ke,[l(`h3`,Ae,n(t.$t(`dcw.k1efe391017`)),1),l(`label`,je,[l(`span`,null,[_(n(t.$t(`dcw.k1b2ioko019`)),1),s[32]||=l(`em`,null,`*`,-1)]),p(l(`input`,{"onUpdate:modelValue":s[5]||=e=>F.name=e,class:`inp`,placeholder:t.$t(`dcw.kru37i3004`)},null,8,Me),[[b,F.name]])]),l(`label`,Ne,[l(`span`,null,n(t.$t(`dcw.k24dxcd020`)),1),p(l(`input`,{"onUpdate:modelValue":s[6]||=e=>F.description=e,class:`inp`,placeholder:t.$t(`dcw.k1f2nwsp005`)},null,8,Pe),[[b,F.description]])]),l(`div`,Fe,[l(`span`,null,n(t.$t(`dcw.k1x7nubr021`)),1),l(`div`,Ie,[(r(!0),u(d,null,a(g(w),t=>(r(),u(`button`,{key:t,class:i([`color-dot`,{on:F.color===t}]),style:e({background:t}),onClick:e=>F.color=F.color===t?``:t},null,14,Le))),128)),l(`small`,Re,n(F.color||t.$t(`dcw.k1qidbpy061`,{p0:I.value})),1)])]),P.value?(r(),u(`p`,ze,n(P.value),1)):f(``,!0),l(`div`,Be,[l(`button`,{class:`mini-btn`,onClick:s[7]||=e=>M.value=!1},n(t.$t(`dcw.k3xdnn022`)),1),l(`button`,{class:`pill-btn`,disabled:N.value||!F.name.trim(),onClick:Lt},n(t.$t(`dcw.k3wzi2023`)),9,Ve)])])])):f(``,!0)]),_:1}),o(x,{name:`modal`},{default:h(()=>[K.value?(r(),u(`div`,{key:0,class:`modal-mask`,onClick:s[12]||=y(e=>K.value=!1,[`self`])},[l(`div`,He,[l(`h3`,Ue,n(t.$t(`dcw.k5tq8wc071`)),1),l(`label`,We,[l(`span`,null,[_(n(t.$t(`dcw.k1b2ioko019`)),1),s[33]||=l(`em`,null,`*`,-1)]),p(l(`input`,{"onUpdate:modelValue":s[9]||=e=>Y.name=e,class:`inp`,placeholder:t.$t(`dcw.kru37i3004`)},null,8,Ge),[[b,Y.name]])]),l(`label`,Ke,[l(`span`,null,n(t.$t(`dcw.k24dxcd020`)),1),p(l(`input`,{"onUpdate:modelValue":s[10]||=e=>Y.description=e,class:`inp`,placeholder:t.$t(`dcw.k1f2nwsp005`)},null,8,qe),[[b,Y.description]])]),l(`div`,Je,[l(`span`,null,n(t.$t(`dcw.k1x7nubr021`)),1),l(`div`,Ye,[(r(!0),u(d,null,a(g(w),t=>(r(),u(`button`,{key:t,class:i([`color-dot`,{on:Y.color===t}]),style:e({background:t}),onClick:e=>Y.color=Y.color===t?``:t},null,14,Xe))),128)),l(`small`,Ze,n(Y.color||t.$t(`dcw.k1qidbpy061`,{p0:I.value})),1)])]),J.value?(r(),u(`p`,Qe,n(J.value),1)):f(``,!0),l(`div`,$e,[l(`button`,{class:`mini-btn`,onClick:s[11]||=e=>K.value=!1},n(t.$t(`dcw.k3xdnn022`)),1),l(`button`,{class:`pill-btn`,disabled:q.value||!Y.name.trim(),onClick:Ut},n(t.$t(`common.save`)),9,et)])])])):f(``,!0)]),_:1}),o(x,{name:`modal`},{default:h(()=>[V.value&&G.value?(r(),u(`div`,{key:0,class:`modal-mask`,onClick:s[15]||=y(e=>V.value=!1,[`self`])},[l(`div`,tt,[l(`h3`,nt,[s[34]||=l(`span`,{class:`i-tabler-alert-triangle`},null,-1),_(` `+n(t.$t(`dcw.k7xq2mfd063`,{p0:G.value.line.name})),1)]),l(`p`,rt,n(W.value?t.$t(`dcw.k4r7nbd073`,{p0:G.value.line.name,p1:G.value.nodes,p2:G.value.products,p3:G.value.recipes}):t.$t(`dcw.k1gp649b062`,{p0:G.value.line.name,p1:G.value.nodes,p2:G.value.products,p3:G.value.recipes})),1),l(`label`,it,[p(l(`input`,{"onUpdate:modelValue":s[13]||=e=>W.value=e,type:`checkbox`},null,512),[[ee,W.value]]),l(`span`,null,n(t.$t(`dcw.k9m2vxa072`)),1)]),U.value?(r(),u(`p`,at,n(U.value),1)):f(``,!0),l(`div`,ot,[l(`button`,{class:`mini-btn`,onClick:s[14]||=e=>V.value=!1},n(t.$t(`dcw.k3xdnn022`)),1),l(`button`,{class:`pill-btn danger`,disabled:H.value,onClick:Vt},n(t.$t(`dcw.k3xakp026`)),9,st)])])])):f(``,!0)]),_:1}),o(x,{name:`modal`},{default:h(()=>[X.value?(r(),u(`div`,{key:0,class:`modal-mask`,onClick:s[26]||=y(e=>X.value=!1,[`self`])},[l(`div`,ct,[l(`h3`,lt,[_(n(t.$t(`dcw.k11oadmx024`))+` `,1),l(`small`,ut,n(t.$t(`dcw.k3x23c054`))+` `+n($.value)+` · `+n(t.$t(`dcw.k3t616a058`))+` `+n(g(T).templates.length-$.value),1)]),l(`p`,dt,n(t.$t(`dcw.k2hlav5025`)),1),l(`div`,ft,[(r(!0),u(d,null,a(g(T).templates,e=>(r(),u(`div`,{key:e.key,class:`tpl-row`,title:e.semantics??``},[l(`b`,null,n(e.name),1),l(`small`,mt,n(e.code)+` · `+n(e.min)+`~`+n(e.max)+` `+n(e.unit),1),e.semantics?(r(),u(`small`,ht,n(e.semantics.slice(0,40))+n(e.semantics.length>40?`…`:``),1)):f(``,!0),l(`span`,{class:i([`tpl-tag`,{builtin:e.builtin}])},n(e.builtin?t.$t(`dcw.k3x23c054`):t.$t(`dcw.k3t616a058`)),3),e.builtin?f(``,!0):(r(),u(`button`,{key:1,class:`mini-btn danger`,onClick:t=>Kt(e.key)},n(t.$t(`dcw.k3xakp026`)),9,gt))],8,pt))),128))]),l(`p`,_t,n(t.$t(`dcw.k169eb4s027`)),1),l(`div`,vt,[l(`label`,yt,[l(`span`,null,[_(n(t.$t(`dcw.k3xhia028`)),1),s[35]||=l(`em`,null,`*`,-1)]),p(l(`input`,{"onUpdate:modelValue":s[16]||=e=>Q.name=e,class:`inp`,placeholder:t.$t(`dcw.k1tooi3o006`)},null,8,bt),[[b,Q.name]])]),l(`label`,xt,[l(`span`,null,n(t.$t(`dcw.k1bqk219029`)),1),p(l(`input`,{"onUpdate:modelValue":s[17]||=e=>Q.ch=e,class:`inp`,placeholder:t.$t(`dcw.k698qz0007`)},null,8,St),[[b,Q.ch]])]),l(`label`,Ct,[l(`span`,null,n(t.$t(`dcw.k1ayxrqb030`)),1),p(l(`input`,{"onUpdate:modelValue":s[18]||=e=>Q.code=e,class:`inp`,placeholder:`如 MOTOR · I`},null,512),[[b,Q.code]])]),l(`label`,wt,[l(`span`,null,n(t.$t(`dcw.k3x4ef031`)),1),p(l(`input`,{"onUpdate:modelValue":s[19]||=e=>Q.unit=e,class:`inp`,placeholder:`如 A`},null,512),[[b,Q.unit]])]),l(`label`,Tt,[l(`span`,null,[_(n(t.$t(`dcw.k1l9jv5m032`)),1),s[36]||=l(`em`,null,`*`,-1)]),p(l(`input`,{"onUpdate:modelValue":s[20]||=e=>Q.min=e,type:`number`,class:`inp`},null,512),[[b,Q.min,void 0,{number:!0}]])]),l(`label`,Et,[l(`span`,null,[_(n(t.$t(`dcw.k1l9jv4p033`)),1),s[37]||=l(`em`,null,`*`,-1)]),p(l(`input`,{"onUpdate:modelValue":s[21]||=e=>Q.max=e,type:`number`,class:`inp`},null,512),[[b,Q.max,void 0,{number:!0}]])]),l(`label`,Dt,[l(`span`,null,n(t.$t(`dcw.k3mxmcx034`)),1),p(l(`input`,{"onUpdate:modelValue":s[22]||=e=>Q.decimals=e,type:`number`,class:`inp`},null,512),[[b,Q.decimals,void 0,{number:!0}]])]),l(`label`,Ot,[l(`span`,null,n(t.$t(`dcw.k3xx56035`)),1),p(l(`select`,{"onUpdate:modelValue":s[23]||=e=>Q.icon=e,class:`inp`},[(r(),u(d,null,a(Wt,e=>l(`option`,{key:e.key,value:e.key},n(e.label),9,kt)),64))],512),[[v,Q.icon]])])]),l(`label`,At,[l(`span`,null,n(t.$t(`dcw.k1b6qorg036`)),1),p(l(`textarea`,{"onUpdate:modelValue":s[24]||=e=>Q.semantics=e,class:`inp`,rows:`3`,placeholder:t.$t(`dcw.k1qdnfzc008`)},null,8,jt),[[b,Q.semantics]])]),Z.value?(r(),u(`p`,Mt,n(Z.value),1)):f(``,!0),l(`div`,Nt,[l(`button`,{class:`mini-btn`,onClick:s[25]||=e=>X.value=!1},n(t.$t(`dcw.k3x62t037`)),1),l(`button`,{class:`pill-btn`,disabled:!Q.name.trim()||Q.min===``||Q.max===``,onClick:Gt},n(t.$t(`dcw.k1bg9nga038`)),9,Pt)])])])):f(``,!0)]),_:1}),g(T).error?(r(),u(`p`,Ft,n(g(T).error),1)):f(``,!0)])}}}),[[`__scopeId`,`data-v-9c3442da`]]);export{T as default};
|
|
1
|
+
import{Ht as e,S as t,Ut as n,V as r,Vt as i,W as a,b as o,d as s,dt as c,f as l,h as u,i as d,m as f,nt as p,pt as m,tt as h,xt as g,y as _}from"./CSkxz2NX.js";import{c as v,f as y,l as b,o as ee,t as x}from"./D6uzXueg.js";import{t as te}from"./BHA40aHa.js";import{n as ne}from"./KZQX7xoM.js";import{t as S}from"./BDNMzG2s2.js";import{t as C}from"./D0ZBQrN_2.js";import{r as w,t as re}from"./ca4TJ3Op.js";var ie={class:`page`},ae={class:`aw-page-head`},oe={class:`sub`},se={class:`badges mono`},ce=[`title`],le={class:`badge`},ue={key:0,class:`banner bad`},de={class:`fleet-filter`},fe={class:`aw-seg`},pe=[`placeholder`],me={class:`line-grid aw-stagger`},he={class:`lc-head`},ge={class:`lc-name`},_e=[`title`,`onClick`],ve=[`title`,`onClick`],ye={key:0,class:`lc-run mono`},be={class:`lc-stats mono`},xe={class:`lc-ctl`},Se=[`onUpdate:modelValue`,`disabled`,`title`],Ce={value:``},we=[`value`,`disabled`],Te=[`disabled`,`onClick`],Ee=[`disabled`,`onClick`],De={key:1,class:`banner`},Oe={key:2,class:`banner`},ke={class:`modal`},Ae={class:`m-title`},je={class:`f`},Me=[`placeholder`],Ne={class:`f`},Pe=[`placeholder`],Fe={class:`f`},Ie={class:`color-row`},Le=[`onClick`],Re={class:`dim`},ze={key:0,class:`m-err`},Be={class:`m-actions`},Ve=[`disabled`],He={class:`modal`},Ue={class:`m-title`},We={class:`f`},Ge=[`placeholder`],Ke={class:`f`},qe=[`placeholder`],Je={class:`f`},Ye={class:`color-row`},Xe=[`onClick`],Ze={class:`dim`},Qe={key:0,class:`m-err`},$e={class:`m-actions`},et=[`disabled`],tt={class:`modal`},nt={class:`m-title danger-title`},rt={class:`del-summary`},it={class:`del-purge`},at={key:0,class:`m-err`},ot={class:`m-actions`},st=[`disabled`],ct={class:`modal wide`},lt={class:`m-title`},ut={class:`dim mono`},dt={class:`dim tpl-hint`},ft={class:`tpl-list`},pt=[`title`],mt={class:`mono dim`},ht={key:0,class:`tpl-sem`},gt=[`onClick`],_t={class:`sec-label`},vt={class:`tpl-form`},yt={class:`f`},bt=[`placeholder`],xt={class:`f`},St=[`placeholder`],Ct={class:`f`},wt={class:`f`},Tt={class:`f`},Et={class:`f`},Dt={class:`f`},Ot={class:`f`},kt=[`value`],At={class:`f`},jt=[`placeholder`],Mt={key:0,class:`m-err`},Nt={class:`m-actions`},Pt=[`disabled`],Ft={key:3,class:`banner bad`},T=S(t({__name:`index`,setup(t){let{t:S}=ne(),T=re();T.load();let E=s(()=>T.lines.map(e=>({line:e,nodes:T.nodes.filter(t=>t.lineId===e.id).length,products:T.products.filter(t=>t.lineId===e.id).length,recipes:T.recipes.filter(t=>t.lineId===e.id).length}))),D=s(()=>T.nodes.filter(e=>!e.lineId).length+T.products.filter(e=>!e.lineId).length),O=m(`all`),k=m(``),A=s(()=>E.value.filter(e=>T.lineStateOf(e.line.id).active).length),j=s(()=>E.value.filter(e=>{let t=T.lineStateOf(e.line.id).active;if(O.value===`running`&&!t||O.value===`idle`&&t)return!1;let n=k.value.trim().toLowerCase();return!(n&&!e.line.name.toLowerCase().includes(n)&&!(e.line.description??``).toLowerCase().includes(n))})),M=m(!1),N=m(!1),P=m(``),F=c({name:``,description:``,color:``}),I=s(()=>w[T.lines.length%w.length]??`#3aa0ff`);function It(){F.name=``,F.description=``,F.color=``,P.value=``,M.value=!0}async function Lt(){N.value=!0,P.value=``;try{await T.createLine({name:F.name.trim(),description:F.description.trim(),color:F.color||void 0}),M.value=!1}catch(e){P.value=C(e)}finally{N.value=!1}}let L=m(``),R=m(``),z=c({});async function Rt(e){L.value=e.line.id,R.value=``;try{let t=z[e.line.id]??``;if(!t)throw Error(S(`dcw.k188cswn039`));await T.startLine(e.line.id,t)}catch(e){R.value=C(e)}finally{L.value=``}}async function zt(e){L.value=e.line.id,R.value=``;try{await T.stopLine(e.line.id)}catch(e){R.value=C(e)}finally{L.value=``}}function B(e){return T.recipes.filter(t=>t.lineId===e)}let V=m(!1),H=m(!1),U=m(``),W=m(!0),G=m(null);function Bt(e){G.value=e,W.value=!0,U.value=``,V.value=!0}async function Vt(){if(G.value){H.value=!0,U.value=``;try{await T.removeLine(G.value.line.id,W.value),V.value=!1}catch(e){U.value=C(e)}finally{H.value=!1}}}let K=m(!1),q=m(!1),J=m(``),Y=c({id:``,name:``,description:``,color:``});function Ht(e){Y.id=e.line.id,Y.name=e.line.name,Y.description=e.line.description,Y.color=e.line.color,J.value=``,K.value=!0}async function Ut(){q.value=!0,J.value=``;try{await T.updateLine(Y.id,{name:Y.name.trim(),description:Y.description.trim(),color:Y.color||void 0}),K.value=!1}catch(e){J.value=C(e)}finally{q.value=!1}}let X=m(!1),Z=m(``),Q=c({name:``,ch:``,code:``,unit:``,min:``,max:``,decimals:1,icon:`gateway`,semantics:``}),Wt=[{key:`thermo`,label:S(`dcw.k422b8040`)},{key:`pressure`,label:S(`dcw.k3x6ff041`)},{key:`tension`,label:S(`dcw.k3z9xc042`)},{key:`encoder`,label:S(`dcw.kjb3vhs043`)},{key:`camera`,label:S(`dcw.k47atw044`)},{key:`gateway`,label:S(`dcw.k48c07045`)}];async function Gt(){Z.value=``;try{if(!Q.name.trim())throw Error(S(`dcw.k6ugbw2046`));if(Q.min===``||Q.max===``)throw Error(S(`dcw.k13awowo047`));await T.createTemplate({name:Q.name.trim(),ch:Q.ch.trim()||Q.name.trim(),code:Q.code.trim()||`CUSTOM`,unit:Q.unit.trim()||`-`,min:Number(Q.min),max:Number(Q.max),decimals:Number(Q.decimals)||0,icon:Q.icon,semantics:Q.semantics.trim()||void 0}),Q.name=``,Q.ch=``,Q.code=``,Q.unit=``,Q.min=``,Q.max=``}catch(e){Z.value=C(e)}}async function Kt(e){Z.value=``;try{await fetch(`/api/workshop/dcw/templates/${e}`,{method:`DELETE`,headers:{authorization:`Bearer ${document.cookie.match(/(?:^|;\s*)token=([^;]+)/)?.[1]??``}`}}).then(async e=>{let t=await e.json().catch(()=>({}));if(t?.code!==0)throw Error(t?.message??S(`dcw.k1bphrb3048`))});let t=T.templates.findIndex(t=>t.key===e);t>=0&&T.templates.splice(t,1)}catch(e){Z.value=C(e)}}let $=s(()=>T.templates.filter(e=>e.builtin).length);return(t,s)=>{let c=te;return r(),u(`div`,ie,[l(`div`,ae,[l(`div`,null,[s[27]||=l(`p`,{class:`aw-kicker`},` AGENTWORKSHOP / LINE OPERATIONS `,-1),l(`h1`,null,n(t.$t(`dcw.k1b2tk5c009`)),1),l(`p`,oe,n(t.$t(`dcw.k5q0aqi010`)),1)]),l(`div`,se,[D.value?(r(),u(`span`,{key:0,class:`badge warn-badge`,title:t.$t(`dcw.k1i5a9vw001`)},n(t.$t(`dcw.k3ootr6049`))+` `+n(D.value),9,ce)):f(``,!0),l(`span`,le,n(t.$t(`dcw.k3wj9n050`))+` `+n(g(T).lines.length),1),l(`button`,{class:`badge tpl-btn`,onClick:s[0]||=e=>X.value=!0},n(t.$t(`dcw.k11nndsp051`))+` `+n(g(T).templates.length),1)])]),R.value?(r(),u(`p`,ue,n(R.value),1)):f(``,!0),l(`div`,de,[l(`div`,fe,[l(`button`,{class:i({on:O.value===`all`}),onClick:s[1]||=e=>O.value=`all`},n(t.$t(`common.all`))+` `+n(E.value.length),3),l(`button`,{class:i({on:O.value===`running`}),onClick:s[2]||=e=>O.value=`running`},n(t.$t(`dcw.k1eox1el055`))+` `+n(A.value),3),l(`button`,{class:i({on:O.value===`idle`}),onClick:s[3]||=e=>O.value=`idle`},n(t.$t(`dcw.k149r6y7059`))+` `+n(E.value.length-A.value),3)]),p(l(`input`,{"onUpdate:modelValue":s[4]||=e=>k.value=e,class:`inp fleet-search`,type:`search`,placeholder:t.$t(`dcw.filterSearchPh`)},null,8,pe),[[b,k.value]])]),l(`div`,me,[(r(!0),u(d,null,a(j.value,f=>(r(),u(`div`,{key:f.line.id,class:i([`line-card aw-liftable`,{idle:!g(T).lineStateOf(f.line.id).active}]),style:e({"--lc":f.line.color})},[l(`div`,he,[s[30]||=l(`span`,{class:`lc-dot`},null,-1),l(`b`,ge,n(f.line.name),1),l(`span`,{class:i([`lc-state`,{on:g(T).lineStateOf(f.line.id).active}])},n(g(T).lineStateOf(f.line.id).active?t.$t(`dcw.k1eox1el055`):t.$t(`dcw.k149r6y7059`)),3),l(`button`,{class:`lc-act`,title:t.$t(`common.edit`),onClick:e=>Ht(f)},[...s[28]||=[l(`span`,{class:`i-tabler-pencil`},null,-1)]],8,_e),l(`button`,{class:`lc-act danger`,title:t.$t(`dcw.k3xakp026`),onClick:e=>Bt(f)},[...s[29]||=[l(`span`,{class:`i-tabler-trash`},null,-1)]],8,ve)]),g(T).lineStateOf(f.line.id).active?(r(),u(`small`,ye,n(g(T).lineStateOf(f.line.id).productName)+` · `+n(g(T).lineStateOf(f.line.id).recipeName)+` · `+n(t.$t(`dcw.k3zz0f052`))+` `+n(g(T).lineStateOf(f.line.id).taggedSamples),1)):(r(),u(`small`,{key:1,class:i([`lc-run dim`,{ph:!f.line.description}])},n(f.line.description||t.$t(`dcw.k18moyq1056`)),3)),l(`div`,be,[l(`span`,null,[_(n(t.$t(`dcw.k45uio011`))+` `,1),l(`b`,null,n(f.nodes),1)]),l(`span`,null,[_(n(t.$t(`dcw.k3waz1012`))+` `,1),l(`b`,null,n(f.products),1)]),l(`span`,null,[_(n(t.$t(`dcw.k48grv013`))+` `,1),l(`b`,null,n(f.recipes),1)])]),l(`div`,xe,[g(T).lineStateOf(f.line.id).active?(r(),u(`button`,{key:1,class:`pill-btn stop`,disabled:L.value===f.line.id,onClick:e=>zt(f)},n(t.$t(`dcw.k148rclf015`)),9,Ee)):(r(),u(d,{key:0},[p(l(`select`,{"onUpdate:modelValue":e=>z[f.line.id]=e,class:`inp`,disabled:B(f.line.id).length===0,title:t.$t(`dcw.k1dhaby4003`)},[l(`option`,Ce,n(B(f.line.id).length?t.$t(`dcw.kutxzsz057`):t.$t(`dcw.k1elczt9060`)),1),(r(!0),u(d,null,a(B(f.line.id),e=>(r(),u(`option`,{key:e.id,value:e.id,disabled:e.params.length===0},n(e.name)+`(`+n(e.params.length)+`) `,9,we))),128))],8,Se),[[v,z[f.line.id]]]),l(`button`,{class:`pill-btn`,disabled:L.value===f.line.id||!z[f.line.id],onClick:e=>Rt(f)},n(t.$t(`dcw.k149b4vg014`)),9,Te)],64))]),o(c,{class:`lc-manage`,to:`/dcw/${f.line.id}`},{default:h(()=>[_(n(t.$t(`dcw.k1fwqw5g016`)),1)]),_:1},8,[`to`])],6))),128)),l(`button`,{class:`line-card new-card`,onClick:It},[s[31]||=l(`span`,{class:`i-tabler-plus`},null,-1),_(` `+n(t.$t(`dcw.k1efe391017`))+` `,1),l(`small`,null,n(t.$t(`dcw.k19dlbli053`)),1)])]),g(T).loaded&&g(T).lines.length===0?(r(),u(`p`,De,n(t.$t(`dcw.k1sk85vs018`)),1)):g(T).loaded&&j.value.length===0?(r(),u(`p`,Oe,n(t.$t(`dcw.filterEmpty`)),1)):f(``,!0),o(x,{name:`modal`},{default:h(()=>[M.value?(r(),u(`div`,{key:0,class:`modal-mask`,onClick:s[8]||=y(e=>M.value=!1,[`self`])},[l(`div`,ke,[l(`h3`,Ae,n(t.$t(`dcw.k1efe391017`)),1),l(`label`,je,[l(`span`,null,[_(n(t.$t(`dcw.k1b2ioko019`)),1),s[32]||=l(`em`,null,`*`,-1)]),p(l(`input`,{"onUpdate:modelValue":s[5]||=e=>F.name=e,class:`inp`,placeholder:t.$t(`dcw.kru37i3004`)},null,8,Me),[[b,F.name]])]),l(`label`,Ne,[l(`span`,null,n(t.$t(`dcw.k24dxcd020`)),1),p(l(`input`,{"onUpdate:modelValue":s[6]||=e=>F.description=e,class:`inp`,placeholder:t.$t(`dcw.k1f2nwsp005`)},null,8,Pe),[[b,F.description]])]),l(`div`,Fe,[l(`span`,null,n(t.$t(`dcw.k1x7nubr021`)),1),l(`div`,Ie,[(r(!0),u(d,null,a(g(w),t=>(r(),u(`button`,{key:t,class:i([`color-dot`,{on:F.color===t}]),style:e({background:t}),onClick:e=>F.color=F.color===t?``:t},null,14,Le))),128)),l(`small`,Re,n(F.color||t.$t(`dcw.k1qidbpy061`,{p0:I.value})),1)])]),P.value?(r(),u(`p`,ze,n(P.value),1)):f(``,!0),l(`div`,Be,[l(`button`,{class:`mini-btn`,onClick:s[7]||=e=>M.value=!1},n(t.$t(`dcw.k3xdnn022`)),1),l(`button`,{class:`pill-btn`,disabled:N.value||!F.name.trim(),onClick:Lt},n(t.$t(`dcw.k3wzi2023`)),9,Ve)])])])):f(``,!0)]),_:1}),o(x,{name:`modal`},{default:h(()=>[K.value?(r(),u(`div`,{key:0,class:`modal-mask`,onClick:s[12]||=y(e=>K.value=!1,[`self`])},[l(`div`,He,[l(`h3`,Ue,n(t.$t(`dcw.k5tq8wc071`)),1),l(`label`,We,[l(`span`,null,[_(n(t.$t(`dcw.k1b2ioko019`)),1),s[33]||=l(`em`,null,`*`,-1)]),p(l(`input`,{"onUpdate:modelValue":s[9]||=e=>Y.name=e,class:`inp`,placeholder:t.$t(`dcw.kru37i3004`)},null,8,Ge),[[b,Y.name]])]),l(`label`,Ke,[l(`span`,null,n(t.$t(`dcw.k24dxcd020`)),1),p(l(`input`,{"onUpdate:modelValue":s[10]||=e=>Y.description=e,class:`inp`,placeholder:t.$t(`dcw.k1f2nwsp005`)},null,8,qe),[[b,Y.description]])]),l(`div`,Je,[l(`span`,null,n(t.$t(`dcw.k1x7nubr021`)),1),l(`div`,Ye,[(r(!0),u(d,null,a(g(w),t=>(r(),u(`button`,{key:t,class:i([`color-dot`,{on:Y.color===t}]),style:e({background:t}),onClick:e=>Y.color=Y.color===t?``:t},null,14,Xe))),128)),l(`small`,Ze,n(Y.color||t.$t(`dcw.k1qidbpy061`,{p0:I.value})),1)])]),J.value?(r(),u(`p`,Qe,n(J.value),1)):f(``,!0),l(`div`,$e,[l(`button`,{class:`mini-btn`,onClick:s[11]||=e=>K.value=!1},n(t.$t(`dcw.k3xdnn022`)),1),l(`button`,{class:`pill-btn`,disabled:q.value||!Y.name.trim(),onClick:Ut},n(t.$t(`common.save`)),9,et)])])])):f(``,!0)]),_:1}),o(x,{name:`modal`},{default:h(()=>[V.value&&G.value?(r(),u(`div`,{key:0,class:`modal-mask`,onClick:s[15]||=y(e=>V.value=!1,[`self`])},[l(`div`,tt,[l(`h3`,nt,[s[34]||=l(`span`,{class:`i-tabler-alert-triangle`},null,-1),_(` `+n(t.$t(`dcw.k7xq2mfd063`,{p0:G.value.line.name})),1)]),l(`p`,rt,n(W.value?t.$t(`dcw.k4r7nbd073`,{p0:G.value.line.name,p1:G.value.nodes,p2:G.value.products,p3:G.value.recipes}):t.$t(`dcw.k1gp649b062`,{p0:G.value.line.name,p1:G.value.nodes,p2:G.value.products,p3:G.value.recipes})),1),l(`label`,it,[p(l(`input`,{"onUpdate:modelValue":s[13]||=e=>W.value=e,type:`checkbox`},null,512),[[ee,W.value]]),l(`span`,null,n(t.$t(`dcw.k9m2vxa072`)),1)]),U.value?(r(),u(`p`,at,n(U.value),1)):f(``,!0),l(`div`,ot,[l(`button`,{class:`mini-btn`,onClick:s[14]||=e=>V.value=!1},n(t.$t(`dcw.k3xdnn022`)),1),l(`button`,{class:`pill-btn danger`,disabled:H.value,onClick:Vt},n(t.$t(`dcw.k3xakp026`)),9,st)])])])):f(``,!0)]),_:1}),o(x,{name:`modal`},{default:h(()=>[X.value?(r(),u(`div`,{key:0,class:`modal-mask`,onClick:s[26]||=y(e=>X.value=!1,[`self`])},[l(`div`,ct,[l(`h3`,lt,[_(n(t.$t(`dcw.k11oadmx024`))+` `,1),l(`small`,ut,n(t.$t(`dcw.k3x23c054`))+` `+n($.value)+` · `+n(t.$t(`dcw.k3t616a058`))+` `+n(g(T).templates.length-$.value),1)]),l(`p`,dt,n(t.$t(`dcw.k2hlav5025`)),1),l(`div`,ft,[(r(!0),u(d,null,a(g(T).templates,e=>(r(),u(`div`,{key:e.key,class:`tpl-row`,title:e.semantics??``},[l(`b`,null,n(e.name),1),l(`small`,mt,n(e.code)+` · `+n(e.min)+`~`+n(e.max)+` `+n(e.unit),1),e.semantics?(r(),u(`small`,ht,n(e.semantics.slice(0,40))+n(e.semantics.length>40?`…`:``),1)):f(``,!0),l(`span`,{class:i([`tpl-tag`,{builtin:e.builtin}])},n(e.builtin?t.$t(`dcw.k3x23c054`):t.$t(`dcw.k3t616a058`)),3),e.builtin?f(``,!0):(r(),u(`button`,{key:1,class:`mini-btn danger`,onClick:t=>Kt(e.key)},n(t.$t(`dcw.k3xakp026`)),9,gt))],8,pt))),128))]),l(`p`,_t,n(t.$t(`dcw.k169eb4s027`)),1),l(`div`,vt,[l(`label`,yt,[l(`span`,null,[_(n(t.$t(`dcw.k3xhia028`)),1),s[35]||=l(`em`,null,`*`,-1)]),p(l(`input`,{"onUpdate:modelValue":s[16]||=e=>Q.name=e,class:`inp`,placeholder:t.$t(`dcw.k1tooi3o006`)},null,8,bt),[[b,Q.name]])]),l(`label`,xt,[l(`span`,null,n(t.$t(`dcw.k1bqk219029`)),1),p(l(`input`,{"onUpdate:modelValue":s[17]||=e=>Q.ch=e,class:`inp`,placeholder:t.$t(`dcw.k698qz0007`)},null,8,St),[[b,Q.ch]])]),l(`label`,Ct,[l(`span`,null,n(t.$t(`dcw.k1ayxrqb030`)),1),p(l(`input`,{"onUpdate:modelValue":s[18]||=e=>Q.code=e,class:`inp`,placeholder:`如 MOTOR · I`},null,512),[[b,Q.code]])]),l(`label`,wt,[l(`span`,null,n(t.$t(`dcw.k3x4ef031`)),1),p(l(`input`,{"onUpdate:modelValue":s[19]||=e=>Q.unit=e,class:`inp`,placeholder:`如 A`},null,512),[[b,Q.unit]])]),l(`label`,Tt,[l(`span`,null,[_(n(t.$t(`dcw.k1l9jv5m032`)),1),s[36]||=l(`em`,null,`*`,-1)]),p(l(`input`,{"onUpdate:modelValue":s[20]||=e=>Q.min=e,type:`number`,class:`inp`},null,512),[[b,Q.min,void 0,{number:!0}]])]),l(`label`,Et,[l(`span`,null,[_(n(t.$t(`dcw.k1l9jv4p033`)),1),s[37]||=l(`em`,null,`*`,-1)]),p(l(`input`,{"onUpdate:modelValue":s[21]||=e=>Q.max=e,type:`number`,class:`inp`},null,512),[[b,Q.max,void 0,{number:!0}]])]),l(`label`,Dt,[l(`span`,null,n(t.$t(`dcw.k3mxmcx034`)),1),p(l(`input`,{"onUpdate:modelValue":s[22]||=e=>Q.decimals=e,type:`number`,class:`inp`},null,512),[[b,Q.decimals,void 0,{number:!0}]])]),l(`label`,Ot,[l(`span`,null,n(t.$t(`dcw.k3xx56035`)),1),p(l(`select`,{"onUpdate:modelValue":s[23]||=e=>Q.icon=e,class:`inp`},[(r(),u(d,null,a(Wt,e=>l(`option`,{key:e.key,value:e.key},n(e.label),9,kt)),64))],512),[[v,Q.icon]])])]),l(`label`,At,[l(`span`,null,n(t.$t(`dcw.k1b6qorg036`)),1),p(l(`textarea`,{"onUpdate:modelValue":s[24]||=e=>Q.semantics=e,class:`inp`,rows:`3`,placeholder:t.$t(`dcw.k1qdnfzc008`)},null,8,jt),[[b,Q.semantics]])]),Z.value?(r(),u(`p`,Mt,n(Z.value),1)):f(``,!0),l(`div`,Nt,[l(`button`,{class:`mini-btn`,onClick:s[25]||=e=>X.value=!1},n(t.$t(`dcw.k3x62t037`)),1),l(`button`,{class:`pill-btn`,disabled:!Q.name.trim()||Q.min===``||Q.max===``,onClick:Gt},n(t.$t(`dcw.k1bg9nga038`)),9,Pt)])])])):f(``,!0)]),_:1}),g(T).error?(r(),u(`p`,Ft,n(g(T).error),1)):f(``,!0)])}}}),[[`__scopeId`,`data-v-7ef81432`]]);export{T as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,P as t,R as n,S as r,Ut as i,V as a,Vt as o,W as s,b as c,d as l,dt as ee,f as u,h as d,i as f,m as p,nt as m,pt as h,tt as te,xt as g,y as _}from"./CSkxz2NX.js";import{c as v,f as ne,l as y,s as re}from"./D6uzXueg.js";import{a as ie}from"./C__m4EhR.js";import{t as ae}from"./BHA40aHa.js";import{n as oe}from"./KZQX7xoM.js";import{t as se}from"./CWoJjWmZ.js";import{t as b}from"./BDNMzG2s2.js";import{t as ce}from"./D0ZBQrN_2.js";import{t as le}from"./CNs_Ozdc2.js";import{a as ue,n as de,t as fe}from"./D98NH8kG.js";import{t as pe}from"./ca4TJ3Op.js";import{t as me}from"./C3J6FYKa.js";var he={class:`page`},ge={class:`aw-kicker`},_e={class:`aw-page-head`},ve={key:0,class:`err`},ye={key:1,class:`grid`},be={class:`col-live`},xe={class:`aw-tile value-card`},Se={class:`aw-kicker`},Ce={class:`big-val mono`},we={class:`facts mono`},Te={class:`col-form aw-tile pad`},Ee={class:`sec`},De={class:`field`},Oe={class:`field`},ke={value:``},Ae=[`value`],je={class:`field`},Me=[`value`,`disabled`],Ne={class:`field row`},Pe=[`disabled`],Fe={class:`field row`},Ie=[`disabled`],Le=[`disabled`],Re={class:`field row`},ze=[`disabled`],Be={class:`field`},Ve={class:`field`},He={class:`field-row`},Ue={class:`field`},We={class:`field`},Ge={class:`field`},Ke={class:`field`},qe=[`disabled`],Je={class:`sec mt`},Ye={class:`driver-grid`},Xe={key:0},Ze=[`onUpdate:modelValue`],Qe=[`value`],$e=[`onUpdate:modelValue`,`type`,`placeholder`],et={class:`test-row`},tt=[`disabled`],nt={class:`sec mt`},rt={class:`bind-row`},it={value:``},at=[`value`],ot={class:`col-hist aw-tile pad`},st={class:`hist-hd`},ct={class:`sec`},lt={class:`hist-ctl mono`},ut=[`value`],dt=[`title`],ft=[`placeholder`],pt={class:`raw-table mono`},mt={key:2,class:`aw-tile pad frames-tile`},ht={class:`hist-hd`},gt={class:`sec`},_t={class:`mono frames-n`},vt=[`viewBox`],yt=[`points`],bt={class:`raw-table mono`},xt={key:0,class:`gal`},St=[`title`,`onClick`],Ct=[`src`],wt={class:`mono`},Tt={key:1,class:`frames-empty`},Et=[`src`],x=320,Dt=84,Ot=`#35e0a0`,kt=`rgba(120,135,160,0.18)`,At=`rgba(140,155,175,0.8)`,jt=b(r({__name:`[id]`,setup(r){let{t:b}=oe();le({layout:`default`});let jt=ie(),S=l(()=>String(jt.params.id??``)),C=fe(),Mt=pe();Mt.load();let w=me(),T=l(()=>C.nodeById(S.value)??null),Nt=l(()=>{let e=T.value?ue(T.value.templateRef):``;return C.templates.find(t=>t.key===e)??null}),Pt={ok:b(`daqDetail.k41k5c026`),warn:b(`daqDetail.k49z8v027`),alarm:b(`daqDetail.k3xmid028`),offline:b(`daqDetail.k44c2n029`)},Ft=()=>{let e=T.value;return!e||!C.controller.running||!e.enabled?`offline`:e.state},It=null;n(()=>{It=C.ensureWsFeed(),C.load(),w.load(),D.value&&k()}),t(()=>It?.());let E=l(()=>Nt.value?.signalKind??`scalar`),D=l(()=>E.value!==`scalar`),O=l(()=>C.framesOf(S.value));async function k(){S.value&&await C.fetchFrames(S.value,{limit:24}).catch(()=>{})}e(S,()=>{D.value&&k()});let Lt=e=>new Date(e).toLocaleTimeString(`zh-CN`,{hour12:!1}),Rt=e=>Object.entries(e.metrics??{}).slice(0,3).map(([e,t])=>`${e}=${t}`).join(` `),zt=l(()=>O.value.find(e=>e.kind===`vector`&&e.points?.length)),Bt=l(()=>{let e=zt.value?.points??[];if(e.length<2)return``;let t=Math.min(...e),n=Math.max(...e)-t||1;return e.map((r,i)=>`${(i/(e.length-1)*x).toFixed(1)},${(78-(r-t)/n*72).toFixed(1)}`).join(` `)}),A=h(null);function Vt(e){return e==null?b(`daqDetail.k9vnp9h053`,{p0:C.controller.defaultPublishIntervalMs}):e===0?b(`daqDetail.k1m1zwux030`):`${e}ms`}let j=ee({enabled:!0,driver:`mock`,lineId:``,followGlobal:!0,intervalMs:5e3,calKind:`none`,calScale:1,calOffset:0,publishFollow:!0,publishEveryFrame:!1,publishMs:1e3,unit:``,decimals:1,min:0,max:100,warnLow:null,warnHigh:null});e(T,e=>{e&&(j.enabled=e.enabled,j.lineId=e.lineId??``,j.driver=e.driver,j.followGlobal=e.intervalMs==null,j.intervalMs=e.intervalMs??C.controller.defaultIntervalMs,j.publishFollow=e.publishIntervalMs==null,j.publishEveryFrame=e.publishIntervalMs===0,j.publishMs=e.publishIntervalMs==null?C.controller.defaultPublishIntervalMs:e.publishIntervalMs,j.unit=e.unit,j.decimals=e.decimals,j.min=e.min,j.max=e.max,j.warnLow=e.warnLow,j.warnHigh=e.warnHigh)},{immediate:!0});let M=l(()=>C.meta.drivers.length?C.meta.drivers:de.map(e=>({...e}))),N=h({}),P=l(()=>M.value.find(e=>e.kind===j.driver)?.configFields??[]);e(T,e=>{e&&(N.value={...e.driverConfig})},{immediate:!0}),e(()=>j.driver,()=>{if(P.value.length&&Object.keys(N.value).length===0){let e={};for(let t of P.value)t.default!==void 0&&(e[t.key]=t.default);N.value=e}},{immediate:!0});let F=h(!1),I=h(null);async function Ht(){F.value=!0,I.value=null;try{await C.patchNode(S.value,{driver:j.driver,driverConfig:{...N.value}}),I.value=await C.testNode(S.value)}catch(e){I.value={ok:!1,message:ce(e)}}finally{F.value=!1}}let L=h(!1);async function Ut(){let e=T.value;if(!(!e||L.value)){L.value=!0;try{await C.patchNode(e.id,{enabled:j.enabled,driver:j.driver,lineId:j.lineId,driverConfig:{...N.value},intervalMs:j.followGlobal?null:Math.max(1e3,Math.min(6e4,Math.round(j.intervalMs))),publishIntervalMs:j.publishFollow?null:j.publishEveryFrame?0:Math.max(0,Math.min(6e4,Math.round(j.publishMs))),unit:j.unit,decimals:Math.max(0,Math.min(6,Math.round(j.decimals))),min:j.min,max:j.max,warnLow:j.warnLow,warnHigh:j.warnHigh})}finally{L.value=!1}}}function Wt(e){return C.meta.drivers.find(t=>t.kind===e)?.status===`planned`}let R=h(``),Gt=l(()=>(T.value?.deviceIds??(T.value?.deviceBindingId?[T.value.deviceBindingId]:[])).map(e=>w.twins.find(t=>t.id===e)?.name??`${e.slice(0,8)}…`).join(` / `));function Kt(){C.bindNode(S.value,T.value?.deviceBindingId?null:R.value||null)}let qt=l(()=>w.twins.filter(e=>e.kind!==`daq`&&e.id!==T.value?.id)),z=h([]),B=h(15e3),V=h(!1),Jt=[{label:`1s 桶`,ms:1e3},{label:`5s 桶`,ms:5e3},{label:`15s 桶(默认)`,ms:15e3},{label:`30s 桶`,ms:3e4},{label:`1min 桶`,ms:6e4}];async function H(){if(S.value){V.value=!0;try{let e=await C.samplesOf(S.value,{toMs:Date.now(),bucketMs:B.value||void 0,limit:400});z.value=[...e].reverse()}finally{V.value=!1,U()}}}let Yt=h(null);function U(){let e=Yt.value;if(!e)return;let t=Math.min(window.devicePixelRatio||1,2),n=e.clientWidth,r=e.clientHeight;(e.width!==n*t||e.height!==r*t)&&(e.width=n*t,e.height=r*t);let i=e.getContext(`2d`);if(!i)return;i.setTransform(t,0,0,t,0,0),i.clearRect(0,0,n,r);for(let e=1;e<4;e++)i.strokeStyle=kt,i.beginPath(),i.moveTo(0,r/4*e),i.lineTo(n,r/4*e),i.stroke();let a=z.value;if(a.length<2)return;let o=1/0,s=-1/0;for(let e of a){let t=e.value??e.avg??e.min??0;o=Math.min(o,t),s=Math.max(s,t)}let c=Math.max(s-o,1e-9);i.strokeStyle=At,i.font=`10px monospace`,i.fillStyle=At,i.fillText(s.toFixed(2),4,11),i.fillText(o.toFixed(2),4,r-4),i.strokeStyle=Ot,i.lineWidth=1.6,i.beginPath(),a.forEach((e,t)=>{let s=t/(a.length-1)*n,l=r-((e.value??e.avg??0)-o)/c*(r-16)-8;t===0?i.moveTo(s,l):i.lineTo(s,l)}),i.stroke()}let W=h(null),G=null,K=``;function q(){let e=W.value,t=T.value;if(!e||!t||t.hist.length<2)return;let n=`${t.hist.length}:${t.hist[t.hist.length-1]}:${t.hist[0]}`;if(n===K)return;K=n;let r=Math.min(window.devicePixelRatio||1,2),i=e.clientWidth,a=e.clientHeight;(e.width!==i*r||e.height!==a*r)&&(e.width=i*r,e.height=a*r);let o=e.getContext(`2d`);if(!o)return;o.setTransform(r,0,0,r,0,0),o.clearRect(0,0,i,a);let s=Math.max(...t.hist),c=Math.min(...t.hist),l=Math.max(s-c,1e-9);o.strokeStyle=`rgba(65,200,244,0.9)`,o.lineWidth=1.5,o.beginPath(),t.hist.forEach((e,n)=>{let r=n/(t.hist.length-1)*i,s=a-(e-c)/l*(a-6)-3;n===0?o.moveTo(r,s):o.lineTo(r,s)}),o.stroke()}let J=null,Y=!1;function Xt(){Y=document.hidden,Y||(q(),Z.value&&H())}let X=h(0),Z=l(()=>{let e=C.controller.minQueryDisplayIntervalMs??500,t=X.value>0?X.value:C.controller.queryDisplayIntervalMs??0;return t>0?Math.max(e,t):0}),Q=null;function $(){Q&&=(clearInterval(Q),null);let e=Z.value;e&&(Q=se(()=>{document.hidden||V.value||H()},e))}return n(()=>{H(),G=se(()=>{Y||q()},800),document.addEventListener(`visibilitychange`,Xt),typeof ResizeObserver<`u`&&(J=new ResizeObserver(()=>{K=``,q(),U()}),W.value&&J.observe(W.value)),$()}),t(()=>{G&&clearInterval(G),Q&&clearInterval(Q),document.removeEventListener(`visibilitychange`,Xt),J?.disconnect(),J=null}),e(B,()=>void H()),e(Z,()=>$()),(e,t)=>{let n=ae;return a(),d(`div`,he,[u(`p`,ge,[c(n,{to:`/daq`,class:`back`},{default:te(()=>[_(i(e.$t(`daqDetail.k1emg364001`)),1)]),_:1}),_(` / NODE `+i(S.value.slice(0,8).toUpperCase()),1)]),u(`div`,_e,[u(`h1`,null,i(T.value?.name??S.value),1),u(`span`,{class:o([`st-pill`,[Ft()]])},i(Pt[Ft()]),3)]),!T.value&&g(C).error?(a(),d(`p`,ve,[_(i(g(C).error)+`(`,1),c(n,{to:`/workshop`},{default:te(()=>[_(i(e.$t(`daqDetail.k1bhhheq002`)),1)]),_:1}),t[21]||=_(`) `,-1)])):p(``,!0),T.value?(a(),d(`div`,ye,[u(`section`,be,[u(`div`,xe,[u(`p`,Se,i(e.$t(`daqDetail.k1fx2vik032`))+` `+i(Nt.value?.ch??`-`),1),u(`div`,Ce,[_(i(T.value.value==null?`--`:T.value.value.toFixed(T.value.decimals)),1),u(`small`,null,i(T.value.unit),1)]),u(`canvas`,{ref_key:`liveCanvas`,ref:W,class:`live-canvas`},null,512),u(`dl`,we,[u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k4a0la003`)),1),u(`dd`,null,i(T.value.driver)+i(Wt(T.value.driver)?e.$t(`daqDetail.kz8zr9v035`):``),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k3xg3w004`)),1),u(`dd`,null,i(T.value.intervalMs??e.$t(`daqDetail.k9vnp9h053`,{p0:g(C).controller.defaultIntervalMs})),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k3w6td005`)),1),u(`dd`,null,i(Vt(T.value.publishIntervalMs)),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k3x5tpx006`)),1),u(`dd`,null,i(T.value.warnLow??`-∞`)+` ~ `+i(T.value.warnHigh??`+∞`),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k1hjj0jf007`)),1),u(`dd`,null,i(T.value.min)+` ~ `+i(T.value.max),1)]),u(`div`,null,[u(`dt`,null,i(e.$t(`daqDetail.k1i8rtqt008`)),1),u(`dd`,null,i(Gt.value||e.$t(`daqDetail.k3own4q036`)),1)])])])]),u(`section`,Te,[u(`h3`,Ee,i(e.$t(`daqDetail.kd9d69j009`)),1),u(`form`,{class:`form-grid`,onSubmit:ne(Ut,[`prevent`])},[u(`label`,De,[u(`span`,null,i(e.$t(`daqDetail.k1iw7tbf010`)),1),u(`button`,{type:`button`,class:o([`toggle`,{on:j.enabled}]),onClick:t[0]||=e=>j.enabled=!j.enabled},i(j.enabled?e.$t(`daqDetail.k3w3j8f037`):e.$t(`daqDetail.k3n5aaj045`)),3)]),u(`label`,Oe,[u(`span`,null,i(e.$t(`daqDetail.k12k23od011`)),1),m(u(`select`,{"onUpdate:modelValue":t[1]||=e=>j.lineId=e,class:`input`},[u(`option`,ke,i(e.$t(`daqDetail.k3ootr6012`)),1),(a(!0),d(f,null,s(g(Mt).lines,e=>(a(),d(`option`,{key:e.id,value:e.id},i(e.name),9,Ae))),128))],512),[[v,j.lineId]])]),u(`label`,je,[u(`span`,null,i(e.$t(`daqDetail.k1l6smxo013`)),1),m(u(`select`,{"onUpdate:modelValue":t[2]||=e=>j.driver=e,class:`input`},[(a(!0),d(f,null,s(M.value,t=>(a(),d(`option`,{key:t.kind,value:t.kind,disabled:t.status===`planned`},i(t.label)+i(t.plugin?` ⌁`:``)+i(t.status===`planned`?e.$t(`daqDetail.kz8zr9v035`):``),9,Me))),128))],512),[[v,j.driver]])]),u(`label`,Ne,[u(`button`,{type:`button`,class:o([`toggle slim`,{on:j.followGlobal}]),onClick:t[3]||=e=>j.followGlobal=!j.followGlobal},i(j.followGlobal?e.$t(`daqDetail.k1k2ueyq038`):e.$t(`daqDetail.k1cgi8fy046`)),3),m(u(`input`,{"onUpdate:modelValue":t[4]||=e=>j.intervalMs=e,type:`number`,min:`1000`,max:`60000`,step:`500`,class:`input`,disabled:j.followGlobal},null,8,Pe),[[y,j.intervalMs,void 0,{number:!0}]]),t[22]||=u(`small`,null,`ms`,-1)]),u(`label`,Fe,[u(`button`,{type:`button`,class:o([`toggle slim`,{on:j.calKind===`linear`}]),title:`采集标定 decoder:物理值 = scale × PLC采集值 + offset`,onClick:t[5]||=e=>j.calKind=j.calKind===`linear`?`none`:`linear`},i(j.calKind===`linear`?e.$t(`daqDetail.k1eru4r1039`):e.$t(`daqDetail.k3oktae047`)),3),m(u(`input`,{"onUpdate:modelValue":t[6]||=e=>j.calScale=e,type:`number`,step:`0.1`,class:`input`,disabled:j.calKind!==`linear`,title:`decode 斜率(≠0)`},null,8,Ie),[[y,j.calScale,void 0,{number:!0}]]),m(u(`input`,{"onUpdate:modelValue":t[7]||=e=>j.calOffset=e,type:`number`,step:`0.1`,class:`input`,disabled:j.calKind!==`linear`,title:`decode 截距`},null,8,Le),[[y,j.calOffset,void 0,{number:!0}]]),t[23]||=u(`small`,null,`decoder`,-1)]),u(`label`,Re,[u(`button`,{type:`button`,class:o([`toggle slim`,{on:j.publishFollow}]),onClick:t[8]||=e=>j.publishFollow=!j.publishFollow},i(j.publishFollow?e.$t(`daqDetail.k1k2t5o7040`):e.$t(`daqDetail.k1cggz5f048`)),3),u(`span`,{class:o([`toggle slim`,{on:j.publishEveryFrame}]),style:{cursor:`pointer`},onClick:t[9]||=e=>j.publishEveryFrame=!j.publishEveryFrame},i(j.publishEveryFrame?e.$t(`daqDetail.k41mvv041`):e.$t(`daqDetail.k3n42dj049`)),3),m(u(`input`,{"onUpdate:modelValue":t[10]||=e=>j.publishMs=e,type:`number`,min:`0`,max:`60000`,step:`100`,class:`input`,disabled:j.publishFollow||j.publishEveryFrame},null,8,ze),[[y,j.publishMs,void 0,{number:!0}]]),t[24]||=u(`small`,null,`ms`,-1)]),u(`label`,Be,[u(`span`,null,i(e.$t(`daqDetail.k3x4ef014`)),1),m(u(`input`,{"onUpdate:modelValue":t[11]||=e=>j.unit=e,class:`input`},null,512),[[y,j.unit]])]),u(`label`,Ve,[u(`span`,null,i(e.$t(`daqDetail.k3mxmcx015`)),1),m(u(`input`,{"onUpdate:modelValue":t[12]||=e=>j.decimals=e,type:`number`,min:`0`,max:`6`,class:`input`},null,512),[[y,j.decimals,void 0,{number:!0}]])]),u(`div`,He,[u(`label`,Ue,[u(`span`,null,i(e.$t(`daqDetail.k1l9jv5m016`)),1),m(u(`input`,{"onUpdate:modelValue":t[13]||=e=>j.min=e,type:`number`,step:`any`,class:`input`},null,512),[[y,j.min,void 0,{number:!0}]])]),u(`label`,We,[u(`span`,null,i(e.$t(`daqDetail.k1md63hm017`)),1),m(u(`input`,{"onUpdate:modelValue":t[14]||=e=>j.warnLow=e,type:`number`,step:`any`,class:`input`},null,512),[[y,j.warnLow,void 0,{number:!0}]])]),u(`label`,Ge,[u(`span`,null,i(e.$t(`daqDetail.k1md63gp018`)),1),m(u(`input`,{"onUpdate:modelValue":t[15]||=e=>j.warnHigh=e,type:`number`,step:`any`,class:`input`},null,512),[[y,j.warnHigh,void 0,{number:!0}]])]),u(`label`,Ke,[u(`span`,null,i(e.$t(`daqDetail.k1l9jv4p019`)),1),m(u(`input`,{"onUpdate:modelValue":t[16]||=e=>j.max=e,type:`number`,step:`any`,class:`input`},null,512),[[y,j.max,void 0,{number:!0}]])])]),u(`button`,{class:`aw-pill`,type:`submit`,disabled:L.value},i(L.value?e.$t(`daqDetail.k1as0g50042`):e.$t(`daqDetail.ksn9cgo050`)),9,qe)],32),P.value.length?(a(),d(f,{key:0},[u(`h3`,Je,i(e.$t(`daqDetail.k1p9gioa033`))+` `+i(M.value.find(e=>e.kind===j.driver)?.label),1),u(`div`,Ye,[(a(!0),d(f,null,s(P.value,e=>(a(),d(`label`,{key:e.key,class:`field`},[u(`span`,null,[_(i(e.label),1),e.required?(a(),d(`em`,Xe,`*`)):p(``,!0)]),e.type===`select`?m((a(),d(`select`,{key:0,"onUpdate:modelValue":t=>N.value[e.key]=t,class:`input`},[(a(!0),d(f,null,s(e.options,e=>(a(),d(`option`,{key:e.value,value:e.value},i(e.label),9,Qe))),128))],8,Ze)),[[v,N.value[e.key]]]):m((a(),d(`input`,{key:1,"onUpdate:modelValue":t=>N.value[e.key]=t,type:e.type===`number`?`number`:`text`,placeholder:e.placeholder,class:`input`},null,8,$e)),[[re,N.value[e.key]]])]))),128))]),u(`div`,et,[u(`button`,{class:`pill-btn`,disabled:F.value,onClick:Ht},i(F.value?e.$t(`daqDetail.k1fsh720043`):e.$t(`daqDetail.k1fstglk051`)),9,tt),I.value?(a(),d(`span`,{key:0,class:o([`test-out mono`,I.value.ok?`ok`:`bad`])},i(I.value.ok?`✓`:`✗`)+` `+i(I.value.message),3)):p(``,!0)])],64)):p(``,!0),u(`h3`,nt,i(e.$t(`daqDetail.k1ie6qju020`)),1),u(`div`,rt,[m(u(`select`,{"onUpdate:modelValue":t[17]||=e=>R.value=e,class:`input grow`},[u(`option`,it,i(e.$t(`daqDetail.kjobzu3021`)),1),(a(!0),d(f,null,s(qt.value,e=>(a(),d(`option`,{key:e.id,value:e.id},i(e.name),9,at))),128))],512),[[v,R.value]]),u(`button`,{class:`pill-btn`,onClick:Kt},i(Gt.value?e.$t(`daqDetail.k479eh044`):e.$t(`daqDetail.k452a8052`)),1)])]),u(`section`,ot,[u(`div`,st,[u(`h3`,ct,i(e.$t(`daqDetail.k1i535i5034`))+i(g(C).meta.tsdb)+`) `,1),u(`div`,lt,[m(u(`select`,{"onUpdate:modelValue":t[18]||=e=>B.value=e,class:`input`},[(a(),d(f,null,s(Jt,e=>u(`option`,{key:e.ms,value:e.ms},i(e.label),9,ut)),64))],512),[[v,B.value,void 0,{number:!0}]]),u(`label`,{class:`refresh-ctl`,title:e.$t(`daqDetail.k1rfrshint001`,{p0:g(C).controller.minQueryDisplayIntervalMs??500})},[t[25]||=u(`span`,{class:`i-tabler-refresh`},null,-1),m(u(`input`,{"onUpdate:modelValue":t[19]||=e=>X.value=e,type:`number`,min:0,max:`600000`,step:`500`,placeholder:String(g(C).controller.queryDisplayIntervalMs??5e3)},null,8,ft),[[y,X.value,void 0,{number:!0}]]),t[26]||=_(`ms `,-1)],8,dt),u(`button`,{class:`pill-btn`,onClick:H},i(e.$t(`daqDetail.k3x1jg022`)),1)])]),u(`canvas`,{ref_key:`chartCanvas`,ref:Yt,class:`hist-canvas`},null,512),u(`table`,pt,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,i(e.$t(`daqDetail.k40vsf023`)),1),u(`th`,null,i(e.$t(`daqDetail.k48v5024`)),1),u(`th`,null,i(e.$t(`daqDetail.k4bza025`)),1)])]),u(`tbody`,null,[(a(!0),d(f,null,s(z.value.filter(e=>e.value!=null).slice(-12).reverse(),(e,t)=>(a(),d(`tr`,{key:t},[u(`td`,null,i(new Date(e.at).toLocaleTimeString(`zh-CN`,{hour12:!1})),1),u(`td`,null,i(e.value.toFixed(T.value?.decimals??2)),1),u(`td`,null,i(e.state),1)]))),128))])])])])):p(``,!0),D.value?(a(),d(`section`,mt,[u(`div`,ht,[u(`h3`,gt,[_(i(E.value===`image`?e.$t(`daqDetail.kfrm0001`):e.$t(`daqDetail.kfrm0002`))+` `,1),u(`span`,_t,i(O.value.length),1)]),u(`button`,{class:`pill-btn`,onClick:k},i(e.$t(`daqDetail.k3x1jg022`)),1)]),E.value===`vector`?(a(),d(f,{key:0},[(a(),d(`svg`,{class:`vec-svg`,viewBox:`0 0 ${x} ${Dt}`,preserveAspectRatio:`none`},[u(`polyline`,{points:Bt.value,fill:`none`,stroke:`var(--accent)`,"stroke-width":`1.5`},null,8,yt)],8,vt)),u(`table`,bt,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,i(e.$t(`daqDetail.k40vsf023`)),1),u(`th`,null,i(e.$t(`daqDetail.kfrm0004`)),1),u(`th`,null,i(e.$t(`daqDetail.kfrm0005`)),1)])]),u(`tbody`,null,[(a(!0),d(f,null,s(O.value.filter(e=>e.kind===`vector`).slice(0,12),e=>(a(),d(`tr`,{key:e.at},[u(`td`,null,i(Lt(e.at)),1),u(`td`,null,i(e.points?.length??0),1),u(`td`,null,i(Rt(e)),1)]))),128))])])],64)):(a(),d(f,{key:1},[O.value.length?(a(),d(`div`,xt,[(a(!0),d(f,null,s(O.value,t=>(a(),d(`figure`,{key:t.at,class:`gal-item`,title:e.$t(`daqDetail.kfrm0006`),onClick:e=>A.value=t},[u(`img`,{src:t.thumbUrl,loading:`lazy`,alt:`daq frame`},null,8,Ct),u(`figcaption`,wt,i(Lt(t.at))+` · `+i(Rt(t)),1)],8,St))),128))])):(a(),d(`p`,Tt,i(e.$t(`daqDetail.kfrm0003`)),1)),A.value?(a(),d(`div`,{key:2,class:`gal-full`,onClick:t[20]||=e=>A.value=null},[u(`img`,{src:A.value.contentUrl??A.value.thumbUrl,alt:`daq frame full`},null,8,Et)])):p(``,!0)],64))])):p(``,!0)])}}}),[[`__scopeId`,`data-v-6e40dda6`]]);export{jt as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t}from"./BU83-NnX.js";import{R as n,S as r,Ut as i,V as a,Vt as o,W as s,b as c,d as l,f as u,h as d,i as f,m as p,p as m,pt as h,tt as g,y as _}from"./CSkxz2NX.js";import{f as v}from"./D6uzXueg.js";import{s as y}from"./YnQxK3eG.js";import{n as b}from"./KZQX7xoM.js";import{t as ee}from"./DzbFpZRk.js";import{t as te}from"./Dz_Q3Lpw2.js";import{t as ne}from"./CClOy-Hz2.js";import{t as re}from"./DIaZ2PTo2.js";import{t as x}from"./BDNMzG2s2.js";import{t as S}from"./D0ZBQrN_2.js";import{t as C}from"./zq5t1vyX.js";var w={class:`plugins-page`},T={class:`aw-page-head`},ie={class:`pg-sub`},ae={class:`pg-stats`},oe={class:`stat`},E={class:`stat`},D={class:`stat`},O={key:1,class:`pg-empty`},k={class:`pg-empty-t`},A={class:`pg-grid aw-stagger`},j=[`onClick`],M={class:`card-head`},N={class:`card-name`},P={class:`card-ver`},F={class:`card-desc`},I={class:`card-tags`},L={key:0,class:`tag client`},R={key:0,class:`card-routes`},z={class:`detail`},B={class:`scope-hint`},V={key:0},H={key:1,style:{color:`#ff6b6b`}},U={key:0,class:`dim`},W=x(r({__name:`index`,setup(r){let{t:x}=b(),W=re(),G=h([]),K=h([]),q=h(!1),J=h(``),Y=h(!1),X=h(null);function Z(){let e=W.token;return e?{authorization:`Bearer ${e}`}:{}}async function Q(){q.value=!0;try{let e=await y(`/api/workshop/plugins`,{headers:Z()});G.value=e.plugins??[],K.value=e.failures??[]}catch(t){e.error(S(t,x(`plugins.loadFail`)))}finally{q.value=!1}}async function se(t){J.value=t.name;try{let n=await y(`/api/workshop/plugins/${t.name}/${t.enabled?`disable`:`enable`}`,{method:`POST`,headers:Z()});if(n.code!==0||!n.data)throw Error(x(`plugins.enableFail`));t.enabled=n.data.enabled,e.success(`${t.name} · ${n.data.enabled?x(`plugins.enabled`):x(`plugins.disabled`)}`),setTimeout(Q,800)}catch(t){e.error(S(t,x(`plugins.enableFail`)))}finally{J.value=``}}let ce=l(()=>G.value.filter(e=>e.enabled).length),le=l(()=>G.value.filter(e=>e.hasClient).length);function $(e){return x(e===`project`?`plugins.scopeProject`:`plugins.scopeUser`)}function ue(e){X.value=e,Y.value=!0}return n(Q),(e,n)=>{let r=t,l=ee,h=C,y=ne,b=te;return a(),d(`div`,w,[u(`header`,T,[u(`div`,null,[n[2]||=u(`p`,{class:`aw-kicker`},` agentworkshop / plugins `,-1),u(`h1`,null,i(e.$t(`plugins.title`)),1),u(`p`,ie,i(e.$t(`plugins.subtitle`)),1)]),u(`div`,ae,[u(`span`,oe,[_(i(e.$t(`plugins.enabled`))+` `,1),u(`b`,null,i(ce.value),1)]),u(`span`,E,[_(i(e.$t(`plugins.hasClient`))+` `,1),u(`b`,null,i(le.value),1)]),u(`span`,D,[_(i(e.$t(`plugins.routes`))+` `,1),u(`b`,null,i(G.value.reduce((e,t)=>e+t.routes.length,0)),1)]),c(r,{size:`small`,loading:q.value,onClick:Q},{default:g(()=>[_(i(e.$t(`plugins.refresh`)),1)]),_:1},8,[`loading`])])]),K.value.length?(a(),m(l,{key:0,type:`error`,"show-icon":``,class:`pg-failures`,message:e.$t(`plugins.loadFailures`,{n:K.value.length})},{description:g(()=>[(a(!0),d(f,null,s(K.value,e=>(a(),d(`div`,{key:e.source,class:`fail-line`},i(e.source)+` — `+i(e.error),1))),128))]),_:1},8,[`message`])):p(``,!0),!G.value.length&&!q.value?(a(),d(`div`,O,[n[3]||=u(`span`,{class:`i-tabler-puzzle pg-empty-ico`},null,-1),u(`p`,k,i(e.$t(`plugins.empty`)),1)])):p(``,!0),G.value.length?(a(),m(h,{key:2,"slot-name":`plugins.page`})):p(``,!0),u(`div`,A,[(a(!0),d(f,null,s(G.value,t=>(a(),d(`article`,{key:`${t.scope}:${t.name}`,class:o([`pg-card aw-liftable`,{"is-off":!t.enabled}]),onClick:e=>ue(t)},[u(`div`,M,[u(`span`,N,i(t.name),1),u(`span`,P,i(t.version),1),c(y,{checked:t.enabled,loading:J.value===t.name,size:`small`,onClick:n[0]||=v(()=>{},[`stop`]),onChange:e=>se(t)},null,8,[`checked`,`loading`,`onChange`])]),u(`p`,F,i(t.description||`—`),1),u(`div`,I,[u(`span`,{class:o([`tag`,t.scope])},i($(t.scope)),3),u(`span`,{class:o([`tag`,t.enabled?`on`:`off`])},i(t.enabled?e.$t(`plugins.enabled`):e.$t(`plugins.disabled`)),3),t.hasClient?(a(),d(`span`,L,i(e.$t(`plugins.hasClient`)),1)):p(``,!0)]),t.routes.length?(a(),d(`div`,R,[(a(!0),d(f,null,s(t.routes,e=>(a(),d(`code`,{key:e.method+e.path},i(e.method)+` `+i(e.path),1))),128))])):p(``,!0)],10,j))),128))]),c(b,{open:Y.value,"onUpdate:open":n[1]||=e=>Y.value=e,title:X.value?.name,width:`460`},{default:g(()=>[X.value?(a(),d(f,{key:0},[u(`dl`,z,[n[4]||=u(`dt`,null,`version`,-1),u(`dd`,null,i(X.value.version),1),n[5]||=u(`dt`,null,`scope`,-1),u(`dd`,null,i($(X.value.scope)),1),u(`dd`,B,i(X.value.scope===`project`?e.$t(`plugins.scopeBuiltinHint`):e.$t(`plugins.scopeUserHint`)),1),n[6]||=u(`dt`,null,`enabled`,-1),u(`dd`,null,i(X.value.enabled),1),n[7]||=u(`dt`,null,`client`,-1),u(`dd`,null,i(X.value.hasClient?`✓`:`—`),1),X.value.error?(a(),d(`dt`,V,` error `)):p(``,!0),X.value.error?(a(),d(`dd`,H,i(X.value.error),1)):p(``,!0)]),u(`h4`,null,i(e.$t(`plugins.routes`)),1),(a(!0),d(f,null,s(X.value.routes,e=>(a(),d(`code`,{key:e.method+e.path,class:`detail-route`},i(e.method)+` /api/plugins/`+i(X.value.name)+i(e.path),1))),128)),X.value.routes.length?p(``,!0):(a(),d(`p`,U,` — `))],64)):p(``,!0)]),_:1},8,[`open`,`title`])])}}}),[[`__scopeId`,`data-v-
|
|
1
|
+
import{a as e,c as t}from"./BU83-NnX.js";import{R as n,S as r,Ut as i,V as a,Vt as o,W as s,b as c,d as l,f as u,h as d,i as f,m as p,p as m,pt as h,tt as g,y as _}from"./CSkxz2NX.js";import{f as v}from"./D6uzXueg.js";import{s as y}from"./YnQxK3eG.js";import{n as b}from"./KZQX7xoM.js";import{t as ee}from"./DzbFpZRk.js";import{t as te}from"./Dz_Q3Lpw2.js";import{t as ne}from"./CClOy-Hz2.js";import{t as re}from"./DIaZ2PTo2.js";import{t as x}from"./BDNMzG2s2.js";import{t as S}from"./D0ZBQrN_2.js";import{t as C}from"./zq5t1vyX.js";var w={class:`plugins-page`},T={class:`aw-page-head`},ie={class:`pg-sub`},ae={class:`pg-stats`},oe={class:`stat`},E={class:`stat`},D={class:`stat`},O={key:1,class:`pg-empty`},k={class:`pg-empty-t`},A={class:`pg-grid aw-stagger`},j=[`onClick`],M={class:`card-head`},N={class:`card-name`},P={class:`card-ver`},F={class:`card-desc`},I={class:`card-tags`},L={key:0,class:`tag client`},R={key:0,class:`card-routes`},z={class:`detail`},B={class:`scope-hint`},V={key:0},H={key:1,style:{color:`#ff6b6b`}},U={key:0,class:`dim`},W=x(r({__name:`index`,setup(r){let{t:x}=b(),W=re(),G=h([]),K=h([]),q=h(!1),J=h(``),Y=h(!1),X=h(null);function Z(){let e=W.token;return e?{authorization:`Bearer ${e}`}:{}}async function Q(){q.value=!0;try{let e=await y(`/api/workshop/plugins`,{headers:Z()});G.value=e.plugins??[],K.value=e.failures??[]}catch(t){e.error(S(t,x(`plugins.loadFail`)))}finally{q.value=!1}}async function se(t){J.value=t.name;try{let n=await y(`/api/workshop/plugins/${t.name}/${t.enabled?`disable`:`enable`}`,{method:`POST`,headers:Z()});if(n.code!==0||!n.data)throw Error(x(`plugins.enableFail`));t.enabled=n.data.enabled,e.success(`${t.name} · ${n.data.enabled?x(`plugins.enabled`):x(`plugins.disabled`)}`),setTimeout(Q,800)}catch(t){e.error(S(t,x(`plugins.enableFail`)))}finally{J.value=``}}let ce=l(()=>G.value.filter(e=>e.enabled).length),le=l(()=>G.value.filter(e=>e.hasClient).length);function $(e){return x(e===`project`?`plugins.scopeProject`:`plugins.scopeUser`)}function ue(e){X.value=e,Y.value=!0}return n(Q),(e,n)=>{let r=t,l=ee,h=C,y=ne,b=te;return a(),d(`div`,w,[u(`header`,T,[u(`div`,null,[n[2]||=u(`p`,{class:`aw-kicker`},` agentworkshop / plugins `,-1),u(`h1`,null,i(e.$t(`plugins.title`)),1),u(`p`,ie,i(e.$t(`plugins.subtitle`)),1)]),u(`div`,ae,[u(`span`,oe,[_(i(e.$t(`plugins.enabled`))+` `,1),u(`b`,null,i(ce.value),1)]),u(`span`,E,[_(i(e.$t(`plugins.hasClient`))+` `,1),u(`b`,null,i(le.value),1)]),u(`span`,D,[_(i(e.$t(`plugins.routes`))+` `,1),u(`b`,null,i(G.value.reduce((e,t)=>e+t.routes.length,0)),1)]),c(r,{size:`small`,loading:q.value,onClick:Q},{default:g(()=>[_(i(e.$t(`plugins.refresh`)),1)]),_:1},8,[`loading`])])]),K.value.length?(a(),m(l,{key:0,type:`error`,"show-icon":``,class:`pg-failures`,message:e.$t(`plugins.loadFailures`,{n:K.value.length})},{description:g(()=>[(a(!0),d(f,null,s(K.value,e=>(a(),d(`div`,{key:e.source,class:`fail-line`},i(e.source)+` — `+i(e.error),1))),128))]),_:1},8,[`message`])):p(``,!0),!G.value.length&&!q.value?(a(),d(`div`,O,[n[3]||=u(`span`,{class:`i-tabler-puzzle pg-empty-ico`},null,-1),u(`p`,k,i(e.$t(`plugins.empty`)),1)])):p(``,!0),G.value.length?(a(),m(h,{key:2,"slot-name":`plugins.page`})):p(``,!0),u(`div`,A,[(a(!0),d(f,null,s(G.value,t=>(a(),d(`article`,{key:`${t.scope}:${t.name}`,class:o([`pg-card aw-liftable`,{"is-off":!t.enabled}]),onClick:e=>ue(t)},[u(`div`,M,[u(`span`,N,i(t.name),1),u(`span`,P,i(t.version),1),c(y,{checked:t.enabled,loading:J.value===t.name,size:`small`,onClick:n[0]||=v(()=>{},[`stop`]),onChange:e=>se(t)},null,8,[`checked`,`loading`,`onChange`])]),u(`p`,F,i(t.description||`—`),1),u(`div`,I,[u(`span`,{class:o([`tag`,t.scope])},i($(t.scope)),3),u(`span`,{class:o([`tag`,t.enabled?`on`:`off`])},i(t.enabled?e.$t(`plugins.enabled`):e.$t(`plugins.disabled`)),3),t.hasClient?(a(),d(`span`,L,i(e.$t(`plugins.hasClient`)),1)):p(``,!0)]),t.routes.length?(a(),d(`div`,R,[(a(!0),d(f,null,s(t.routes,e=>(a(),d(`code`,{key:e.method+e.path},i(e.method)+` `+i(e.path),1))),128))])):p(``,!0)],10,j))),128))]),c(b,{open:Y.value,"onUpdate:open":n[1]||=e=>Y.value=e,title:X.value?.name,width:`460`},{default:g(()=>[X.value?(a(),d(f,{key:0},[u(`dl`,z,[n[4]||=u(`dt`,null,`version`,-1),u(`dd`,null,i(X.value.version),1),n[5]||=u(`dt`,null,`scope`,-1),u(`dd`,null,i($(X.value.scope)),1),u(`dd`,B,i(X.value.scope===`project`?e.$t(`plugins.scopeBuiltinHint`):e.$t(`plugins.scopeUserHint`)),1),n[6]||=u(`dt`,null,`enabled`,-1),u(`dd`,null,i(X.value.enabled),1),n[7]||=u(`dt`,null,`client`,-1),u(`dd`,null,i(X.value.hasClient?`✓`:`—`),1),X.value.error?(a(),d(`dt`,V,` error `)):p(``,!0),X.value.error?(a(),d(`dd`,H,i(X.value.error),1)):p(``,!0)]),u(`h4`,null,i(e.$t(`plugins.routes`)),1),(a(!0),d(f,null,s(X.value.routes,e=>(a(),d(`code`,{key:e.method+e.path,class:`detail-route`},i(e.method)+` /api/plugins/`+i(X.value.name)+i(e.path),1))),128)),X.value.routes.length?p(``,!0):(a(),d(`p`,U,` — `))],64)):p(``,!0)]),_:1},8,[`open`,`title`])])}}}),[[`__scopeId`,`data-v-91571e48`]]);export{W as default};
|