agentworkshop 0.7.41 → 0.7.44
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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/B8uy9iRW.js +1 -0
- package/.output/public/_nuxt/BGTYYQH-.js +1 -0
- package/.output/public/_nuxt/BUmHEJ77.js +2 -0
- package/.output/public/_nuxt/BY7YrV_D.js +1 -0
- package/.output/public/_nuxt/Bqcgz95s.js +18 -0
- package/.output/public/_nuxt/C7UlqPeD.js +1 -0
- package/.output/public/_nuxt/CTmDn-YP.js +1 -0
- package/.output/public/_nuxt/Cs8pVeVG.js +1 -0
- package/.output/public/_nuxt/DKySmNPI.js +14 -0
- package/.output/public/_nuxt/Di0NY_ht.js +1 -0
- package/.output/public/_nuxt/Du9v6qGB.js +1 -0
- package/.output/public/_nuxt/{DGbd-UiG.js → EHlEMRii.js} +1 -1
- package/.output/public/_nuxt/Eke1fs-U.js +1 -0
- package/.output/public/_nuxt/{DeJykBFf.js → H0BcqZtT.js} +1 -1
- package/.output/public/_nuxt/{C4oW1HsE.js → HSYEkkce.js} +1 -1
- package/.output/public/_nuxt/{D_OTvQza.js → J9oU00D1.js} +1 -1
- package/.output/public/_nuxt/OmpTerminalPanel.BxR5-lvi.css +1 -0
- package/.output/public/_nuxt/SSyAPaHc.js +1 -0
- package/.output/public/_nuxt/TownView.li4EMQxK.css +1 -0
- package/.output/public/_nuxt/VdLk4jLE2.js +1 -0
- package/.output/public/_nuxt/_id_.BhsXoEuk.css +1 -0
- package/.output/public/_nuxt/_id_.DQyj-WKN.css +1 -0
- package/.output/public/_nuxt/{_wsId_.B4WiqkIS.css → _wsId_.CTx-BlfF.css} +1 -1
- package/.output/public/_nuxt/aShsv_rG.js +19 -0
- package/.output/public/_nuxt/{yF0aYMF1.js → aesgXKSr.js} +3 -3
- package/.output/public/_nuxt/agents.B21nUEUX.css +1 -0
- package/.output/public/_nuxt/aml.ekTjxFkf.css +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/b5506ef0-f48e-4f14-a6c0-d65e505d0b09.json +1 -0
- package/.output/public/_nuxt/channel-templates.DplM1pJ3.css +1 -0
- package/.output/public/_nuxt/daq.BdVmoIfe.css +1 -0
- package/.output/public/_nuxt/dcw.DCgyzpWV.css +1 -0
- package/.output/public/_nuxt/{default.J32SgqFY.css → default.Bh3L2HU8.css} +1 -1
- package/.output/public/_nuxt/lHAxdSsj.js +1 -0
- package/.output/public/_nuxt/pages.j9rzRocr.css +1 -0
- package/.output/public/_nuxt/plugins.DhiZbHU8.css +1 -0
- package/.output/public/_nuxt/settings.BRx9rIDg.css +1 -0
- package/.output/public/_nuxt/teams.BLlOPB_Z.css +1 -0
- package/.output/public/_nuxt/tokens.De8xzszn.css +1 -0
- package/.output/public/_nuxt/workshop.D1jFNkrn.css +1 -0
- package/.output/server/chunks/_/nitro.mjs +748 -733
- package/.output/server/chunks/build/{OmpTerminalPanel-Cu_s4i0A.mjs → OmpTerminalPanel-CVvxpsF7.mjs} +15 -15
- package/.output/server/chunks/build/{OmpTerminalPanel-Cu_s4i0A.mjs.map → OmpTerminalPanel-CVvxpsF7.mjs.map} +1 -1
- package/.output/server/chunks/build/{TownView--otsnr_7.mjs → TownView-CJ6IsDCc.mjs} +226 -225
- package/.output/server/chunks/build/{TownView--otsnr_7.mjs.map → TownView-CJ6IsDCc.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-Brv-JSvr.mjs → _id_-CVD_H0ir.mjs} +143 -142
- package/.output/server/chunks/build/_id_-CVD_H0ir.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-D9pl1OZy.mjs → _id_-CtxMb3qp.mjs} +41 -41
- package/.output/server/chunks/build/_id_-CtxMb3qp.mjs.map +1 -0
- package/.output/server/chunks/build/{_wsId_-BASfDf0s.mjs → _wsId_-DpY3T-md.mjs} +514 -444
- package/.output/server/chunks/build/{_wsId_-BASfDf0s.mjs.map → _wsId_-DpY3T-md.mjs.map} +1 -1
- package/.output/server/chunks/build/{agents-CLQqJF2y.mjs → agents-DsCkuXDV.mjs} +49 -46
- package/.output/server/chunks/build/agents-DsCkuXDV.mjs.map +1 -0
- package/.output/server/chunks/build/{aml-_7FdFL2p.mjs → aml-CT0xKGKI.mjs} +122 -105
- package/.output/server/chunks/build/aml-CT0xKGKI.mjs.map +1 -0
- package/.output/server/chunks/build/builtin-catalog-edpDcgfL.mjs +117 -0
- package/.output/server/chunks/build/builtin-catalog-edpDcgfL.mjs.map +1 -0
- package/.output/server/chunks/build/{channel-templates-p6SZNjlM.mjs → channel-templates-Dla9FbYa.mjs} +49 -37
- package/.output/server/chunks/build/channel-templates-Dla9FbYa.mjs.map +1 -0
- package/.output/server/chunks/build/{daq-DkMvD8sg.mjs → daq-DWWSKGAV.mjs} +89 -88
- package/.output/server/chunks/build/daq-DWWSKGAV.mjs.map +1 -0
- package/.output/server/chunks/build/{dcw-C1jgVJkO.mjs → dcw-CT8k17_E.mjs} +44 -43
- package/.output/server/chunks/build/dcw-CT8k17_E.mjs.map +1 -0
- package/.output/server/chunks/build/{default-BE4r0FZN.mjs → default-D3525UFX.mjs} +16 -15
- package/.output/server/chunks/build/{default-BE4r0FZN.mjs.map → default-D3525UFX.mjs.map} +1 -1
- package/.output/server/chunks/build/{monitor-C0okQaXz.mjs → monitor-Dh2Kvaq5.mjs} +2 -2
- package/.output/server/chunks/build/{monitor-C0okQaXz.mjs.map → monitor-Dh2Kvaq5.mjs.map} +1 -1
- package/.output/server/chunks/build/{pages-B0bUWnC6.mjs → pages-BHcSBM2D.mjs} +24 -18
- package/.output/server/chunks/build/pages-BHcSBM2D.mjs.map +1 -0
- package/.output/server/chunks/build/{plugins-lGlUr1lj.mjs → plugins-BNgIi61W.mjs} +23 -17
- package/.output/server/chunks/build/plugins-BNgIi61W.mjs.map +1 -0
- package/.output/server/chunks/build/{settings-Ddd1qx2Z.mjs → settings-ipYBDWdn.mjs} +45 -44
- package/.output/server/chunks/build/settings-ipYBDWdn.mjs.map +1 -0
- package/.output/server/chunks/build/{teams-MEDLZdMn.mjs → teams-5lx-CwFa.mjs} +47 -44
- package/.output/server/chunks/build/teams-5lx-CwFa.mjs.map +1 -0
- package/.output/server/chunks/build/{tokens-C7fTM5C2.mjs → tokens-q-IDT8Io.mjs} +73 -53
- package/.output/server/chunks/build/tokens-q-IDT8Io.mjs.map +1 -0
- package/.output/server/chunks/build/{town-CoQdblbZ.mjs → town-QJWB5wng.mjs} +3 -2
- package/.output/server/chunks/build/town-QJWB5wng.mjs.map +1 -0
- package/.output/server/chunks/build/{workshop-BL5bhfs0.mjs → workshop-BIlCj_ZP.mjs} +45 -45
- package/.output/server/chunks/build/workshop-BIlCj_ZP.mjs.map +1 -0
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/chunks/virtual/entry.mjs +637 -86
- package/.output/server/chunks/virtual/entry.mjs.map +1 -1
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +13 -3
- package/README.md +13 -3
- package/app/components/AppHeader.vue +961 -959
- package/app/components/workshop/A2aRpcDebugger.vue +237 -237
- package/app/components/workshop/AgentInspectorDrawer.vue +424 -424
- package/app/components/workshop/AgentLanesView.vue +998 -998
- package/app/components/workshop/ArtifactCard.vue +120 -120
- package/app/components/workshop/AssetLibrary.vue +452 -452
- package/app/components/workshop/ChannelSessionList.vue +812 -804
- package/app/components/workshop/CommandPalette.vue +269 -269
- package/app/components/workshop/Composer.vue +827 -827
- package/app/components/workshop/DeviceTwinPanel.vue +643 -643
- package/app/components/workshop/EventBlock.vue +602 -602
- package/app/components/workshop/FileSelectorModal.vue +188 -188
- package/app/components/workshop/InspectorPanel.vue +301 -301
- package/app/components/workshop/MemoryPanel.vue +364 -364
- package/app/components/workshop/MultiChannelView.vue +189 -189
- package/app/components/workshop/TaskBoardView.vue +686 -686
- package/app/components/workshop/TaskInspectorDrawer.vue +390 -390
- package/app/components/workshop/TranscriptTimeline.vue +601 -601
- package/app/components/workshop/blocks/ClusterArtifact.vue +61 -61
- package/app/components/workshop/blocks/ClusterError.vue +85 -85
- package/app/components/workshop/blocks/ClusterLife.vue +87 -87
- package/app/components/workshop/blocks/ClusterMember.vue +95 -93
- package/app/components/workshop/blocks/ClusterMemory.vue +84 -84
- package/app/components/workshop/blocks/ClusterOther.vue +67 -67
- package/app/components/workshop/blocks/ClusterStatus.vue +149 -147
- package/app/components/workshop/blocks/ClusterTool.vue +158 -158
- package/app/components/workshop/terminal/OmpTerminalPanel.vue +1011 -1011
- package/app/components/workshop/town/TownView.vue +56 -56
- package/app/middleware/locale-cookie.global.ts +22 -0
- package/app/pages/aml/index.vue +24 -2
- package/app/pages/daq/[id].vue +11 -11
- package/app/pages/daq/index.vue +2316 -2316
- package/app/pages/dcw/[id].vue +18 -19
- package/app/pages/dcw/index.vue +3 -3
- package/app/pages/index.vue +987 -981
- package/app/pages/plugins/index.vue +317 -311
- package/app/pages/settings.vue +1564 -1562
- package/app/pages/tokens.vue +15 -15
- package/app/pages/workshop/agents.vue +612 -609
- package/app/pages/workshop/channel-templates.vue +18 -11
- package/app/pages/workshop/index.vue +668 -668
- package/app/pages/workshop/teams.vue +743 -740
- package/app/pages/workshop/w/[wsId].vue +704 -704
- package/app/plugins/locale-restore.client.ts +16 -1
- package/app/utils/builtin-catalog.ts +104 -0
- package/config.yml +170 -170
- package/docs/full-test-plan.md +2 -3
- package/i18n/locales/en.ts +293 -35
- package/i18n/locales/zh-CN.ts +265 -7
- package/package.json +2 -2
- package/scripts/_dbg-perms-e2e.mjs +132 -109
- package/scripts/_demo-agentteam-capture.mjs +278 -0
- package/scripts/_e2e-ui-functional.mjs +371 -0
- package/scripts/_i18n-en-cjk-scan.mjs +28 -0
- package/scripts/_i18n-en-verify.mjs +107 -0
- package/scripts/_i18n-extra-checks.mjs +53 -0
- package/scripts/_i18n-scan-hardcoded.mjs +180 -0
- package/scripts/_i18n-verify-keys.mjs +50 -0
- package/scripts/_loop-biax-campaign.mjs +15 -9
- package/scripts/_sweep-button-contrast.mjs +87 -0
- package/scripts/ui/record-demo.mjs +557 -0
- package/server/plugins-builtin/diag-bridge/index.mjs +608 -661
- package/server/plugins-builtin/rag-bridge/index.mjs +57 -133
- package/server/services/workshop/daq/drivers.ts +11 -0
- package/.output/public/_nuxt/88GOowgO2.js +0 -1
- package/.output/public/_nuxt/BN16aRdQ.js +0 -1
- package/.output/public/_nuxt/BWVhZntO.js +0 -1
- package/.output/public/_nuxt/BXxH0UQE.js +0 -1
- package/.output/public/_nuxt/BsROmY89.js +0 -1
- package/.output/public/_nuxt/C0ZrS1KL.js +0 -19
- package/.output/public/_nuxt/C4s_niy-.js +0 -14
- package/.output/public/_nuxt/D6mbFA-a.js +0 -1
- package/.output/public/_nuxt/DS8qj8EL.js +0 -1
- package/.output/public/_nuxt/DUjW5Yq5.js +0 -1
- package/.output/public/_nuxt/Dap5PmTL.js +0 -2
- package/.output/public/_nuxt/Dqw1lpr-.js +0 -1
- package/.output/public/_nuxt/DvLxILQP.js +0 -1
- package/.output/public/_nuxt/OmpTerminalPanel.B_Pl5Ynm.css +0 -1
- package/.output/public/_nuxt/TownView.f-YOdXRs.css +0 -1
- package/.output/public/_nuxt/_id_.D9ymtHB5.css +0 -1
- package/.output/public/_nuxt/_id_.jf-_8E_c.css +0 -1
- package/.output/public/_nuxt/agents.ZD0rVdHE.css +0 -1
- package/.output/public/_nuxt/aml.BN8ZEW4h.css +0 -1
- package/.output/public/_nuxt/builds/meta/78a295bb-2072-48a4-8b46-6d545fdae743.json +0 -1
- package/.output/public/_nuxt/channel-templates.BOtahzPi.css +0 -1
- package/.output/public/_nuxt/daq.DjSgY94l.css +0 -1
- package/.output/public/_nuxt/dcw.8Y7FqCVN.css +0 -1
- package/.output/public/_nuxt/eqq3wWQF.js +0 -18
- package/.output/public/_nuxt/pages.D7aSDlUI.css +0 -1
- package/.output/public/_nuxt/plugins.sb4nDGqr.css +0 -1
- package/.output/public/_nuxt/qr6R6Ha1.js +0 -1
- package/.output/public/_nuxt/settings.BTgR-NiE.css +0 -1
- package/.output/public/_nuxt/teams.CxnxKVVs.css +0 -1
- package/.output/public/_nuxt/tokens.BFY7qv4f.css +0 -1
- package/.output/public/_nuxt/workshop.CR_QzeAN.css +0 -1
- package/.output/server/chunks/build/_id_-Brv-JSvr.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-D9pl1OZy.mjs.map +0 -1
- package/.output/server/chunks/build/agents-CLQqJF2y.mjs.map +0 -1
- package/.output/server/chunks/build/aml-_7FdFL2p.mjs.map +0 -1
- package/.output/server/chunks/build/channel-templates-p6SZNjlM.mjs.map +0 -1
- package/.output/server/chunks/build/daq-DkMvD8sg.mjs.map +0 -1
- package/.output/server/chunks/build/dcw-C1jgVJkO.mjs.map +0 -1
- package/.output/server/chunks/build/pages-B0bUWnC6.mjs.map +0 -1
- package/.output/server/chunks/build/plugins-lGlUr1lj.mjs.map +0 -1
- package/.output/server/chunks/build/settings-Ddd1qx2Z.mjs.map +0 -1
- package/.output/server/chunks/build/teams-MEDLZdMn.mjs.map +0 -1
- package/.output/server/chunks/build/tokens-C7fTM5C2.mjs.map +0 -1
- package/.output/server/chunks/build/town-CoQdblbZ.mjs.map +0 -1
- package/.output/server/chunks/build/workshop-BL5bhfs0.mjs.map +0 -1
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.continue.json +0 -1
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.json +0 -1
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/054bb4bc4e4217a2ab0b0c6b663747214a9af464f5568ea60e784704e340bb0f.source +0 -153
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/0554197c3d2bac203a1f5c48a5d52495d1336db1bd7aa4f4c19875810363e684.source +0 -153
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/05c203d12a954fffba942e1d626e3f5fec05b18a5aef2bac003b7884a4b77406.source +0 -431
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/145a6e6ba811af35aed31e0cc3211f53706a14980fa069ee9e3c1591139f96f0.source +0 -180
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/1ae0fb281f97899c025e368ca73f41349b01fb5f85b19e08d7ebccff49095ed5.source +0 -112
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/20ee9967aa0541c516db7575bdd4a1a745939bc7016bd10d7635903113edb8ec.source +0 -227
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/233751843aeba9d4c5263f275b8102de00443c06f286918cbd23e0b6729e01aa.source +0 -131
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/263c2e05b425e5c322e60c6475279f963bab3a873eb521b21df7fec935a46597.source +0 -160
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/2ac5eaac28eaaee2178c4b32014df8e732f9dd432a285a872f5b7f31c1395fa4.source +0 -157
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/33a0db0d2d95d2c11d0720090458e5fba1425376f5ceb5b422d1d3471be3226b.source +0 -348
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/359e474ae83db35e4615d3728de6bf694b64d4dce9b536730a3b6518f9c0494a.source +0 -296
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/37a4c3c31c4b70f6b719c53d1e9c4fcba603f31adfdd11bb6ef9f0d094923c56.source +0 -285
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/461feca1c14a695eb8b0f17a6f95fe97eeceabc0510faaea4ba6d25bde147d8d.source +0 -217
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/4cfadbda8591f29d5e1e230dc000e701b756e850441b3900fb596a4d2f6e98c2.source +0 -301
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/50ca2810cf0b248c96948994c0c404531bbad6e553166b6816b3b03bfa0f75d2.source +0 -151
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/52d9e8cb591a9ae86e238c3620a610cd386717bee222c0f37b25b2ac7e523dc4.source +0 -135
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/6c87daafa4c006560a954636a97333f6123153c9d34d96203f7ee3a14e556357.source +0 -156
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/77bc47854b577900621cacf1697f81fa2bc005af129d37614a97a3441c08f99f.source +0 -72
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/7bbb789d3a527817118cf8399ed1861d6a962ade10878fd07223435d333a7089.source +0 -469
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/86b7c1daafc8b60ba9982dde5bf1bcc74265709483c176e71f23ec6fc267451f.source +0 -259
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/8df66d62bd41984d0970e8236882080c5085ac937d07a29779463d6a03b37c76.source +0 -97
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/9962f2d1b3a85137bd40cc835725600b39f89ee02a27c06b2e0402e1eafde115.source +0 -277
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/a1090ea066b792cb201739f4994e37bf7c12f52e805239a1eab87f18a537f266.source +0 -171
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/a5241091650134d0919897e086a606a3846c8b2b54f8b4c84a8696c145ac3e9e.source +0 -425
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/af19fa4c6e34d5540028be4b17600161283af3a2a2dfc61a3fdc0834436a0c14.source +0 -99
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/b3713d78e2b2f93905ff6be8d58a8d0a2f42dea322eb67c987fda22ff6a084d5.source +0 -325
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/b3849943c3aff102d1af815631fc843a2a52c17646a4b04696ece323e483bbec.source +0 -332
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/bac735a3803a6650b7f1eb8f587e6dc5c68ea055000c3c99a11789438b78e837.source +0 -43
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/d32c24d61eb8b33c73e5a8fc7e4dc7ef437aed238ee4371c2b00617e6104090a.source +0 -154
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/d5170dc9a9879fda04fdf91d8a110d4efb6787ee38dda596d4da899883d36a72.source +0 -531
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/dc59bcd7bb397be63ba2f2c3fec23f3782dcb17d2d75a9981eeced761f33eb32.source +0 -439
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/eb5ff8cf66b92aec7bf6726781d8df74faa2b030c3aaac17d6b00c1fc04c9b32.source +0 -323
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f10615a6fae18436e70d1201b2d44fdae3174a3aa7bb4db97dea1b3ed291d721.source +0 -433
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f36d3e271668bc1260c2823542d22dbf1d0f7041ff16b1ac175bce2256e582ca.source +0 -280
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f94449380af09f31ac352152007146a75cc80bae8d6411ffe57b2c56f933b0ff.source +0 -117
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/fe4dfd81178fd6b648335f6405d9ede71319aebde796008e50db21f8adf44c99.source +0 -160
- package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/ffb4e3aa548cfdadabaa44ab599f9b6a3ca6288176a2cc7a4b2fc2a12b5fb848.source +0 -101
- package/scripts/.mimosa/hook-status/sess_aeaecb58-8833-4b83-b93c-050467d21e03-d944d71bb3.json +0 -14
- package/scripts/_dbg-audit-all-pages.mjs +0 -43
- package/scripts/_dbg-daq-frames-e2e.mjs +0 -118
- package/scripts/_dbg-daq-rowstyle-verify.mjs +0 -112
- package/scripts/_dbg-hitl-timeout-e2e.mjs +0 -93
- package/scripts/_dbg-live-line-e2e.mjs +0 -279
- package/scripts/_dbg-minimal-omp.mjs +0 -77
- package/scripts/_dbg-mode-nav.mjs +0 -173
- package/scripts/_dbg-real-scenario-timeline.log +0 -55
- package/scripts/_dbg-team-repro.mjs +0 -76
- package/scripts/_dbg-town-agents-probe.mjs +0 -60
- package/scripts/_dbg-visual-acceptance.mjs +0 -63
- package/scripts/_townview_style.css +0 -1185
- package/scripts/_townview_template.html +0 -1215
- package/server/data/agent-node-bindings.json +0 -554
- package/server/data/daq-templates.json +0 -16
- package/server/data/daqs.json +0 -7464
- package/server/data/dcw-lines.json +0 -1787
- package/server/data/dcw-products.json +0 -1626
- package/server/data/dcw-recipes.json +0 -4672
- package/server/data/dcw-rollback.json +0 -20754
- package/server/data/dcw-runs.json +0 -6354
- package/server/data/dcw-templates.json +0 -146
- package/server/data/dcw-writes.json +0 -15650
- package/server/data/dcws.json +0 -9033
- package/server/data/device-twins.json +0 -133
- package/server/data/line-runs.json +0 -322
- package/server/data/scene-layouts.json +0 -277
|
@@ -3,20 +3,18 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 把本地 rag-knowledge 服务(FastAPI 后端 + Nuxt web)集成为 AgentWorkShop 的
|
|
5
5
|
* 团队知识库:启动即确保「aw-industrial」知识库存在,并向 agent 注入三个工具——
|
|
6
|
-
*
|
|
6
|
+
* kb_agent(知识库 Agent 对话)——检索/入库/经验全部由知识库内部 Agent 处理。
|
|
7
7
|
* 另开放 /health、/search、/experience 三个插件 API 便于运维探查。
|
|
8
8
|
* 服务不可达时工具返回 isError 文本(含原因与修复建议),绝不抛异常拖垮宿主。
|
|
9
9
|
*/
|
|
10
10
|
const KB_NAME = 'aw-industrial'
|
|
11
|
-
const CATEGORIES = ['best_practice', 'troubleshooting', 'lesson_learned', 'optimization', 'tip', 'workflow', 'decision']
|
|
12
|
-
const SEVERITIES = ['critical', 'important', 'normal', 'tip'] // rag-knowledge ExperienceCreate.severity 枚举
|
|
13
11
|
const DEFAULT_BASE = 'http://127.0.0.1:8770' // FastAPI 后端
|
|
14
12
|
const DEFAULT_WEB = 'http://127.0.0.1:6789' // Nuxt web(文档写盘)
|
|
15
13
|
|
|
16
14
|
export default {
|
|
17
15
|
name: 'rag-bridge',
|
|
18
|
-
version: '
|
|
19
|
-
description: 'rag-knowledge
|
|
16
|
+
version: '2.1.0',
|
|
17
|
+
description: 'rag-knowledge 知识库桥接 v2.1:kb_agent 对话工具(功能解耦,sync/async 双模式)+ kb_agent_status 异步结果查询',
|
|
20
18
|
auth: 'user', // 平台转发层按此声明统一校验(缺省 'none' 开放)
|
|
21
19
|
client: './client.mjs', // 前端面板(插件页注入;i18n 见 i18n.json)
|
|
22
20
|
// 插件配置分组:插件调用平台 API 增加自己的设置分区(设置页独立成区、可折叠)。
|
|
@@ -165,157 +163,92 @@ export default {
|
|
|
165
163
|
return null
|
|
166
164
|
}
|
|
167
165
|
|
|
168
|
-
// ================= 工具 ×
|
|
166
|
+
// ================= 工具 ×1(kb_agent —— 功能解耦的唯一入口) =================
|
|
167
|
+
// 外部系统不再拼装检索/入库步骤:一个对话工具把任务原话交给 rag-knowledge
|
|
168
|
+
// 的原生 Agent(claude SDK + QDCVR skill + kb-mcp),检索/入库/经验/图谱全部
|
|
169
|
+
// 由知识库内部 Agent 自主完成,直接返回最终结果。
|
|
169
170
|
|
|
170
171
|
ctx.omp.registerTool({
|
|
171
|
-
name: '
|
|
172
|
-
label: '
|
|
173
|
-
description: '
|
|
172
|
+
name: 'kb_agent',
|
|
173
|
+
label: '知识库Agent',
|
|
174
|
+
description: '与 rag-knowledge 知识库的原生 Agent 对话(知识库操作唯一入口,功能解耦)。把任务原话交给它:检索问答(知识库侧自动走 QDCVR 全流程,返回带引用的可信答案)、文档入库(给出标题与完整 markdown 正文)、经验沉淀、图谱关联等,全部由知识库内部 Agent 自主处理并返回最终结果。harness/permission 一般留空(默认 claude + 最高权限)。',
|
|
174
175
|
parameters: {
|
|
175
176
|
type: 'object',
|
|
176
177
|
properties: {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
178
|
+
prompt: { type: 'string', description: '给知识库 Agent 的完整任务原话。检索:要查的问题;入库:目标知识库名(缺省 aw-industrial)+文档标题+完整 markdown 正文;经验:标题/类别/问题/解决方案' },
|
|
179
|
+
mode: { type: 'string', enum: ['sync', 'async'], description: '执行方式(按场景自选):sync 同步等待知识库执行完并返回结果(检索问答用,需要立刻拿到答案);async 异步——立即返回 task_id,知识库在后台完成任务,完成后可用 kb_agent_status 查询该 task 的结果(入库/经验沉淀类用,无需等待)' },
|
|
180
|
+
harness: { type: 'string', description: '可选:知识库侧执行引擎(缺省 claude,一般无需填写)' },
|
|
181
|
+
permission: { type: 'string', description: '可选:权限模式(缺省 bypassPermissions 最高权限,一般无需填写)' },
|
|
180
182
|
},
|
|
181
|
-
required: ['
|
|
183
|
+
required: ['prompt'],
|
|
182
184
|
},
|
|
183
185
|
roles: ['lead', 'worker'],
|
|
184
186
|
handler: async (args) => {
|
|
185
187
|
if (!state.outbound) {
|
|
186
|
-
return { text:
|
|
188
|
+
return { text: '知识库 Agent 不可用:' + outboundOff().error + '。修复后重启服务。', isError: true }
|
|
187
189
|
}
|
|
188
|
-
const
|
|
189
|
-
if (!
|
|
190
|
-
const
|
|
191
|
-
const
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
const results = Array.isArray(r.body?.stage2?.results) ? r.body.stage2.results : []
|
|
198
|
-
if (results.length === 0) {
|
|
199
|
-
return { text: `未检索到相关经验/文档(查询:「${query}」)。可尝试更换关键词,或确认资料是否已用 kb_index 入库。` }
|
|
200
|
-
}
|
|
201
|
-
const top = results.slice(0, 5)
|
|
202
|
-
const lines = top.map((h, i) => {
|
|
203
|
-
const score = Number(h?.score ?? 0).toFixed(4)
|
|
204
|
-
const path = String(h?.doc_path ?? '(无路径)')
|
|
205
|
-
const brief = String(h?.content ?? '').replace(/\s+/g, ' ').trim().slice(0, 160)
|
|
206
|
-
return `${i + 1}. [score=${score}] ${path}\n ${brief}${String(h?.content ?? '').length > 160 ? '…' : ''}`
|
|
207
|
-
})
|
|
208
|
-
return { text: `检索到 ${results.length} 条(展示前 ${top.length} 条):\n${lines.join('\n')}` }
|
|
209
|
-
},
|
|
210
|
-
})
|
|
190
|
+
const prompt = String(args.prompt ?? '').trim()
|
|
191
|
+
if (!prompt) return { text: 'prompt 必填(把要做的任务完整描述给知识库 Agent)。', isError: true }
|
|
192
|
+
const mode = String(args.mode ?? '').trim().toLowerCase() === 'async' ? 'async' : 'sync'
|
|
193
|
+
const body = { prompt, timeout_ms: 540000, mode }
|
|
194
|
+
const harness = String(args.harness ?? '').trim()
|
|
195
|
+
if (harness) body.harness = harness
|
|
196
|
+
const permission = String(args.permission ?? '').trim()
|
|
197
|
+
if (permission) body.permission = permission
|
|
211
198
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
type: 'object',
|
|
218
|
-
properties: {
|
|
219
|
-
title: { type: 'string', description: '经验标题(一句话概括)' },
|
|
220
|
-
category: { type: 'string', enum: CATEGORIES, description: '经验类别' },
|
|
221
|
-
problem: { type: 'string', description: '遇到的问题/场景' },
|
|
222
|
-
solution: { type: 'string', description: '解决方案/操作步骤' },
|
|
223
|
-
key_lessons: { type: 'array', items: { type: 'string' }, description: '关键教训(条目列表,可选)' },
|
|
224
|
-
tags: { type: 'array', items: { type: 'string' }, description: '标签(可选)' },
|
|
225
|
-
severity: { type: 'string', enum: SEVERITIES, description: '严重程度(critical/important/normal/tip,可选,缺省 normal)' },
|
|
226
|
-
},
|
|
227
|
-
required: ['title', 'category'],
|
|
228
|
-
},
|
|
229
|
-
roles: ['lead', 'worker'],
|
|
230
|
-
handler: async (args) => {
|
|
231
|
-
if (!state.outbound) {
|
|
232
|
-
return { text: `经验沉淀不可用:${outboundOff().error}。修复后重启服务。`, isError: true }
|
|
233
|
-
}
|
|
234
|
-
const title = String(args.title ?? '').trim()
|
|
235
|
-
if (!title) return { text: 'title 必填(经验标题)。', isError: true }
|
|
236
|
-
const category = String(args.category ?? '').trim()
|
|
237
|
-
if (!CATEGORIES.includes(category)) {
|
|
238
|
-
return { text: `category 必须是以下之一:${CATEGORIES.join('/')}`, isError: true }
|
|
239
|
-
}
|
|
240
|
-
const kb = await requireKbId()
|
|
241
|
-
if (!kb) {
|
|
242
|
-
return { text: `经验沉淀失败:知识库 ${KB_NAME} 不存在且自动建库失败(检查 web ${web()} 是否启动)。`, isError: true }
|
|
243
|
-
}
|
|
244
|
-
const body = {
|
|
245
|
-
title,
|
|
246
|
-
category,
|
|
247
|
-
problem: String(args.problem ?? ''),
|
|
248
|
-
solution: String(args.solution ?? ''),
|
|
249
|
-
}
|
|
250
|
-
const lessons = (Array.isArray(args.key_lessons) ? args.key_lessons : []).map(s => String(s).trim()).filter(Boolean)
|
|
251
|
-
if (lessons.length) body.key_lessons = lessons
|
|
252
|
-
const tags = (Array.isArray(args.tags) ? args.tags : []).map(s => String(s).trim()).filter(Boolean)
|
|
253
|
-
if (tags.length) body.tags = tags
|
|
254
|
-
const severity = String(args.severity ?? '').trim()
|
|
255
|
-
if (severity) {
|
|
256
|
-
// rag-knowledge ExperienceCreate.severity 是枚举,非法值会被 422 拒收——先在本侧校验
|
|
257
|
-
if (!SEVERITIES.includes(severity)) {
|
|
258
|
-
return { text: `severity 必须是以下之一:${SEVERITIES.join('/')}`, isError: true }
|
|
199
|
+
if (mode === 'async') {
|
|
200
|
+
// 异步:立即返回 task_id,知识库后台完成;结果稍后用 kb_agent_status 查询
|
|
201
|
+
const sub = await ragCall('POST', web() + '/api/kb/agent/chat', body, { timeoutMs: 30000, retries: 0 })
|
|
202
|
+
if (!sub.ok) {
|
|
203
|
+
return { text: '知识库异步任务提交失败:' + String(sub.error ?? '').slice(0, 200) + '。请确认 rag-knowledge web(' + web() + ') 已启动后重试。', isError: true }
|
|
259
204
|
}
|
|
260
|
-
|
|
205
|
+
const taskId = String(sub.body?.task_id ?? '')
|
|
206
|
+
if (!taskId) return { text: '知识库异步任务提交异常:响应缺少 task_id。', isError: true }
|
|
207
|
+
return { text: '已提交知识库异步任务(后台执行中,无需等待):\ntask_id=' + taskId + '\n任务完成后可调用 kb_agent_status(task_id) 获取该任务的执行结果。' }
|
|
261
208
|
}
|
|
262
|
-
|
|
209
|
+
|
|
210
|
+
const r = await ragCall('POST', web() + '/api/kb/agent/chat', body, { timeoutMs: 580000 })
|
|
263
211
|
if (!r.ok) {
|
|
264
|
-
return { text:
|
|
212
|
+
return { text: '知识库 Agent 调用失败:' + String(r.error ?? '').slice(0, 200) + '。请确认 rag-knowledge web(' + web() + ') 已启动后重试。', isError: true }
|
|
265
213
|
}
|
|
266
|
-
const
|
|
267
|
-
|
|
268
|
-
return { text: `经验已沉淀:${title}(id=${expId},category=${category},kb=${KB_NAME})。` }
|
|
214
|
+
const reply = String(r.body?.reply ?? '').trim()
|
|
215
|
+
return { text: reply || '(知识库 Agent 返回空回复)' }
|
|
269
216
|
},
|
|
270
217
|
})
|
|
271
218
|
|
|
272
219
|
ctx.omp.registerTool({
|
|
273
|
-
name: '
|
|
274
|
-
label: '
|
|
275
|
-
description: '
|
|
220
|
+
name: 'kb_agent_status',
|
|
221
|
+
label: '知识库任务状态',
|
|
222
|
+
description: '查询知识库异步任务的执行状态与结果(kb_agent 以 mode=async 提交后,用返回的 task_id 查询;任务完成后返回知识库 Agent 的完整结果)。',
|
|
276
223
|
parameters: {
|
|
277
224
|
type: 'object',
|
|
278
225
|
properties: {
|
|
279
|
-
|
|
280
|
-
content: { type: 'string', description: '文档正文(markdown)' },
|
|
281
|
-
tags: { type: 'array', items: { type: 'string' }, description: '标签(可选)' },
|
|
226
|
+
task_id: { type: 'string', description: 'kb_agent 异步提交时返回的 task_id' },
|
|
282
227
|
},
|
|
283
|
-
required: ['
|
|
228
|
+
required: ['task_id'],
|
|
284
229
|
},
|
|
285
230
|
roles: ['lead', 'worker'],
|
|
286
231
|
handler: async (args) => {
|
|
287
232
|
if (!state.outbound) {
|
|
288
|
-
return { text:
|
|
289
|
-
}
|
|
290
|
-
const title = String(args.title ?? '').trim()
|
|
291
|
-
const content = String(args.content ?? '')
|
|
292
|
-
if (!title) return { text: 'title 必填(文档标题)。', isError: true }
|
|
293
|
-
if (!content.trim()) return { text: 'content 必填(markdown 正文,不能为空)。', isError: true }
|
|
294
|
-
const kb = await requireKbId()
|
|
295
|
-
if (!kb) {
|
|
296
|
-
return { text: `文档入库失败:知识库 ${KB_NAME} 不存在且自动建库失败(检查 web ${web()} 是否启动)。`, isError: true }
|
|
233
|
+
return { text: '知识库 Agent 不可用:' + outboundOff().error + '。修复后重启服务。', isError: true }
|
|
297
234
|
}
|
|
298
|
-
const
|
|
299
|
-
|
|
300
|
-
const
|
|
301
|
-
|
|
302
|
-
{
|
|
303
|
-
if (!w.ok) {
|
|
304
|
-
return { text: `文档入库卡在第 1 步(web 写盘 ${web()}/api/kb/documents/create):${w.error}。未产生索引,可直接重试。`, isError: true }
|
|
235
|
+
const taskId = String(args.task_id ?? '').trim()
|
|
236
|
+
if (!taskId) return { text: 'task_id 必填(kb_agent 异步提交时返回的 id)。', isError: true }
|
|
237
|
+
const r = await callJson('GET', web() + '/api/kb/agent/tasks/' + encodeURIComponent(taskId), null, { timeoutMs: 15000, retries: 0 })
|
|
238
|
+
if (!r.ok) {
|
|
239
|
+
return { text: '任务查询失败:' + String(r.error ?? '') + '(不存在/已过期 2h/服务重启过,或任务从未提交)。', isError: true }
|
|
305
240
|
}
|
|
306
|
-
const
|
|
307
|
-
|
|
308
|
-
|
|
241
|
+
const body = r.body || {}
|
|
242
|
+
const status = String(body.status ?? 'unknown')
|
|
243
|
+
if (status === 'running') {
|
|
244
|
+
return { text: '任务 ' + taskId + ' 仍在后台执行中(running)。稍后再次查询。' }
|
|
309
245
|
}
|
|
310
|
-
|
|
311
|
-
const
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
return { text: `文档入库卡在第 2 步(backend 索引 ${base()}/api/v1/search/index-document):${r.error}。文档已写盘(${docPath}),服务恢复后可重试入库(同名会生成新文件)。`, isError: true }
|
|
246
|
+
const result = body.result || {}
|
|
247
|
+
const reply = String(result.reply ?? result.partial_text ?? '').trim()
|
|
248
|
+
if (status === 'completed' && reply) {
|
|
249
|
+
return { text: '任务 ' + taskId + ' 已完成。知识库 Agent 结果:\n\n' + reply }
|
|
315
250
|
}
|
|
316
|
-
|
|
317
|
-
ctx.kv.bump('index.count')
|
|
318
|
-
return { text: `文档已入库:${docPath}(向量分块 ${chunks},kb=${KB_NAME}),可立即用 kb_search 检索。` }
|
|
251
|
+
return { text: '任务 ' + taskId + ' 状态:' + status + '\n' + String(result.error ?? '').slice(0, 300) + (result.partial_text ? '\n[部分输出]\n' + String(result.partial_text).slice(0, 600) : '') }
|
|
319
252
|
},
|
|
320
253
|
})
|
|
321
254
|
|
|
@@ -407,12 +340,3 @@ export default {
|
|
|
407
340
|
function trimSlash(s) {
|
|
408
341
|
return s.replace(/\/+$/, '')
|
|
409
342
|
}
|
|
410
|
-
|
|
411
|
-
/** 标题 → 安全文件名(剔除路径非法字符;确保 .md 后缀) */
|
|
412
|
-
function safeFileName(title) {
|
|
413
|
-
// eslint-disable-next-line no-control-regex -- 文件名净化:必须剔除控制字符
|
|
414
|
-
let name = String(title).replace(/[\\/:*?"<>|\u0000-\u001f]/g, '-').replace(/\s+/g, ' ').trim().replace(/^[.\s]+|[.\s]+$/g, '')
|
|
415
|
-
if (!name) name = 'untitled'
|
|
416
|
-
if (name.length > 80) name = name.slice(0, 80).trim()
|
|
417
|
-
return name.toLowerCase().endsWith('.md') ? name : `${name}.md`
|
|
418
|
-
}
|
|
@@ -331,6 +331,17 @@ export async function getModbusConn(cfg: Record<string, unknown>, transport: Mod
|
|
|
331
331
|
// 会以 unhandledRejection 打崩进程(stability-guard fatal)。池层已有 evict 自愈,这里只需静默。
|
|
332
332
|
const sock = (client as unknown as { port?: { client?: { on?: (ev: string, cb: (e: Error) => void) => void } } }).port?.client
|
|
333
333
|
sock?.on?.('error', () => {})
|
|
334
|
+
// write-after-end 防线:evict/close 与在飞事务竞态时,modbus-serial 仍可能对已 end/destroy 的
|
|
335
|
+
// socket 调 write —— 该错误的 emit 路径并不总走 'error' 事件(实测同步抛出打崩进程,
|
|
336
|
+
// ERR_STREAM_WRITE_AFTER_END)。在 socket 层直接拦截:已终结即丢弃写入,让上层超时兜底。
|
|
337
|
+
const sockWritable = sock as unknown as { writableEnded?: boolean, destroyed?: boolean, write?: (...a: unknown[]) => unknown } | null
|
|
338
|
+
if (sockWritable?.write) {
|
|
339
|
+
const rawWrite = sockWritable.write.bind(sock)
|
|
340
|
+
sockWritable.write = (...a: unknown[]) => {
|
|
341
|
+
if (sockWritable.writableEnded || sockWritable.destroyed) return false
|
|
342
|
+
return rawWrite(...a)
|
|
343
|
+
}
|
|
344
|
+
}
|
|
334
345
|
const conn: ModbusConn = { client, lastUsed: Date.now(), tail: Promise.resolve(), pending: 0, errors: 0 }
|
|
335
346
|
modbusPool.set(key, conn)
|
|
336
347
|
return conn
|
|
@@ -1 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
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};
|
|
@@ -1 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,n}from"./BU83-NnX.js";import{S as r,Ut as i,V as a,Vt as ee,W as o,b as s,ct as c,d as l,dt as te,f as u,h as d,i as f,m as p,p as m,pt as h,tt as g,xt as _,y as v}from"./CSkxz2NX.js";import{d as ne}from"./BJHKLJJU.js";import{n as y}from"./DtYHUi5Z.js";import{n as b}from"./KZQX7xoM.js";import{n as re,r as ie,t as ae}from"./DDgJcSET.js";import{t as oe}from"./aWWIh8YL.js";import{t as se}from"./DBHNsT1Y.js";import{i as ce,n as le,t as ue}from"./BCGafdXT.js";import{r as de,t as fe}from"./CzlMDL5H.js";import{t as pe}from"./jZsY8yYz.js";import{n as me,t as he}from"./CYWVXZTS2.js";import{t as ge}from"./C4DWUZ6d2.js";import{t as _e}from"./DZtm4l-P2.js";import{t as ve}from"./CClOy-Hz2.js";import{t as x}from"./DIaZ2PTo2.js";import{t as S}from"./BDNMzG2s2.js";import{t as C}from"./D0ZBQrN_2.js";import{t as ye}from"./BN6iuJEg2.js";import{t as be}from"./CNs_Ozdc2.js";var xe={class:`page`},Se={class:`head`},Ce={class:`sub`},we={class:`toolbar`},Te={key:0,class:`admin-note`},Ee={class:`grid`},De={class:`card-head`},Oe={class:`name`},ke={class:`owner`},Ae={class:`members`},je={class:`member-name`},Me={class:`member-harness`},Ne=[`onClick`],Pe={class:`aw-mono`},Fe={key:0,class:`plug-builtin-tag`},Ie={class:`plug-hint`},Le={class:`plug-source`},Re={class:`plug-text`},ze={class:`plug-name`},Be={class:`aw-mono`},Ve={key:0,class:`plug-builtin-tag`},He={class:`plug-desc`},Ue={key:0,class:`plug-hint`},w=S(r({__name:`teams`,setup(r){let{t:S}=b();be({layout:`default`});let w=ye(),T=x(),E=h([]),D=h([]),We=h([]),O=h(!1),k=async()=>{O.value=!0;try{let[e,t,n]=await Promise.all([w.listTeams(),w.listTemplates(),w.listChannels()]);E.value=e?.data??[],D.value=t?.data??[],We.value=n?.data??[]}finally{O.value=!1}};k();let A=h({});(async()=>{try{let e=(await w.listHarnesses())?.data?.harnesses;if(Array.isArray(e)){let t={};for(let n of e)t[n.id]=n.available!==!1;A.value=t}}catch{}})();let Ge=e=>A.value[e.harness]===!1,Ke=l(()=>D.value.map(e=>{let t=Ge(e);return{value:e.id,label:t?`${e.name}(${e.harness} · ${S(`agents.notInstalled`)})`:`${e.name}(${e.harness})`,disabled:t}})),j=h(`all`),qe=l(()=>{let e=T.user?.id;switch(j.value){case`mine`:return E.value.filter(t=>t.ownerUserId===e);case`public`:return E.value.filter(e=>e.visibility===`public`);case`builtin`:return E.value.filter(e=>e.isBuiltin);default:return E.value}}),M=e=>!e.isBuiltin&&(e.ownerUserId===T.user?.id||T.isAdmin),N=e=>e.isBuiltin?{text:S(`teams.k3x23c018`),color:`default`,icon:`i-tabler-lock`}:e.visibility===`public`?{text:S(`teams.k3wv1t019`),color:`green`}:{text:S(`teams.k447jj020`),color:`default`},P=h(!1),F=te({name:``,description:``,visibility:`private`}),I=h([]),L=h({});(async()=>{try{let e=await w.listPlugins(),t=e?.plugins??e?.data?.plugins??[],n=(Array.isArray(t)?t:[]).filter(e=>e.enabled!==!1);I.value=n;let r={};for(let e of n)r[e.name]=!0;L.value=r}catch{}})();let R=l({get:()=>Object.entries(L.value).filter(([,e])=>e).map(([e])=>e),set:e=>{let t={};for(let n of I.value)t[n.name]=e.includes(n.name);L.value=t}}),Je=async()=>{if(!F.name.trim()){e.warning(S(`teams.k1bvcdo2021`));return}let t=Object.entries(L.value).map(([e,t])=>({name:e,enabled:t}));await w.createTeam({name:F.name.trim(),description:F.description||void 0,visibility:F.visibility,plugins:t}),e.success(S(`teams.k3n5hak022`)),P.value=!1,F.name=``,F.description=``,F.visibility=`private`,L.value=Object.fromEntries(Object.entries(L.value).map(([e])=>[e,!0])),k()},Ye=async(t,n)=>{try{await w.updateTeam(t.id,{visibility:n?`public`:`private`}),e.success(S(n?`teams.k1globhp023`:`teams.k1xxabaf024`)),k()}catch(t){e.error(C(t))}},z=h(!1),B=h(null),V=h(``),H=h(`worker`),Xe=e=>{B.value=e,V.value=``,H.value=`worker`,z.value=!0},Ze=async()=>{if(!B.value||!V.value){e.warning(S(`teams.k1kw4rtj025`));return}try{await w.addTeamMember(B.value.id,{agentId:V.value,role:H.value}),e.success(S(`teams.k3n5hzw026`)),z.value=!1,k()}catch(t){e.error(C(t))}},Qe=async(e,t)=>{await w.removeTeamMember(e.id,t),k()},U=h(!1),W=h(null),G=h(``),K=h(!1),$e=e=>{W.value=e,G.value=``,U.value=!0},et=async()=>{if(!W.value||!G.value){e.warning(`选择目标 Channel`);return}K.value=!0;try{let t=(await w.deployTeam(W.value.id,G.value))?.data?.agents?.length??0;e.success(S(`teams.kh90glh031`,{p0:t})),U.value=!1}catch(t){e.error(C(t))}finally{K.value=!1}},tt=async t=>{await w.deleteTeam(t.id),e.success(S(`teams.k1oxjrxx027`)),k()},q=h(!1),J=h(null),Y=h([]),X=h(`default`),Z=h(!1),Q=h(null),nt=e=>{J.value=e,Y.value=[],X.value=`default`,q.value=!0,$(e)},$=async t=>{Z.value=!0;try{let e=(await w.listTeamPlugins(t.id))?.data??{};Y.value=e.plugins??[],X.value=e.source===`explicit`?`explicit`:`default`}catch(t){e.error(C(t))}finally{Z.value=!1}},rt=async(t,n)=>{if(!J.value||Q.value)return;let r=J.value.id;Q.value=t.name;try{let i=Y.value.map(e=>({name:e.name,enabled:e.name===t.name?n:e.enabled})),a=(await w.putTeamPlugins(r,{plugins:i}))?.data??{};Y.value=a.plugins??i.map(e=>({...e})),X.value=a.source===`explicit`?`explicit`:`default`,e.success(S(`teams.k1plugon043`))}catch(t){e.error(C(t))}finally{Q.value=null}};return y({title:()=>S(`titles.teams`)}),(e,r)=>{let l=t,te=pe,h=ae,y=ue,b=ve,x=de,S=fe,C=ge,ye=_e,be=se,w=ie,D=le,k=ce,A=he,Ge=me,L=re,$=n,it=oe;return a(),d(`div`,xe,[u(`div`,Se,[u(`div`,null,[u(`h2`,null,`AgentTeam `+i(e.$t(`teams.k3svl8y028`)),1),u(`p`,Ce,i(e.$t(`teams.k12gl4wn008`)),1)]),s(te,null,{default:g(()=>[s(l,{onClick:r[0]||=t=>(`navigateTo`in e?e.navigateTo:_(ne))(`/workshop`)},{default:g(()=>[v(i(e.$t(`teams.krpx6qa009`)),1)]),_:1}),s(l,{type:`primary`,onClick:r[1]||=e=>P.value=!0},{default:g(()=>[v(i(e.$t(`teams.k1efmuyx002`)),1)]),_:1})]),_:1})]),u(`div`,we,[s(h,{value:_(j),"onUpdate:value":r[2]||=e=>c(j)?j.value=e:null,size:`small`,options:[{value:`all`,label:e.$t(`chips.chipAll`,{n:_(E).length})},{value:`mine`,label:e.$t(`chips.mine`)},{value:`public`,label:e.$t(`chips.public`)},{value:`builtin`,label:e.$t(`chips.builtin`)}]},null,8,[`value`,`options`]),_(T).isAdmin?(a(),d(`span`,Te,[r[15]||=u(`span`,{class:`i-tabler-shield-check`},null,-1),v(` `+i(e.$t(`teams.k1bpgi8h010`)),1)])):p(``,!0)]),s(ye,{spinning:_(O)},{default:g(()=>[u(`div`,Ee,[(a(!0),d(f,null,o(_(qe),t=>(a(),d(`div`,{key:t.id,class:`card`},[u(`div`,De,[u(`span`,Oe,i(t.name),1),s(y,{color:N(t).color,class:`vis-tag`},{default:g(()=>[N(t).icon?(a(),d(`span`,{key:0,class:ee(N(t).icon)},null,2)):p(``,!0),v(i(N(t).text),1)]),_:2},1032,[`color`]),!t.isBuiltin&&M(t)?(a(),m(b,{key:0,checked:t.visibility===`public`,size:`small`,title:t.visibility===`public`?`点击转为私有`:`点击公开(全员可部署)`,onChange:e=>Ye(t,e===!0)},null,8,[`checked`,`title`,`onChange`])):p(``,!0),u(`span`,ke,i(t.ownerName??`-`),1),M(t)?(a(),m(C,{key:1},{overlay:g(()=>[s(S,null,{default:g(()=>[s(x,{onClick:e=>$e(t)},{default:g(()=>[...r[16]||=[v(` 部署到 Channel… `,-1)]]),_:1},8,[`onClick`]),s(x,{onClick:e=>nt(t)},{default:g(()=>[v(i(e.$t(`teams.k1plugon047`)),1)]),_:1},8,[`onClick`]),s(x,{danger:``,onClick:e=>tt(t)},{default:g(()=>[v(i(e.$t(`teams.k1bpojhf011`)),1)]),_:1},8,[`onClick`])]),_:2},1024)]),default:g(()=>[r[17]||=u(`span`,{class:`i-tabler-dots op`},null,-1)]),_:2},1024)):(a(),m(l,{key:2,class:`deploy-btn`,size:`small`,type:`default`,title:e.$t(`teams.kxheuf1001`),onClick:e=>$e(t)},{default:g(()=>[v(i(e.$t(`teams.k48ja7012`)),1)]),_:1},8,[`title`,`onClick`]))]),u(`div`,Ae,[(a(!0),d(f,null,o(t.members,e=>(a(),d(`div`,{key:e.templateId,class:`member`},[s(y,{color:e.role===`lead`?`gold`:`blue`,class:`role`},{default:g(()=>[v(i(e.role),1)]),_:2},1032,[`color`]),u(`span`,je,i(e.name),1),u(`span`,Me,i(e.harness),1),M(t)?(a(),d(`span`,{key:0,class:`i-tabler-x rm`,onClick:n=>Qe(t,e.templateId)},null,8,Ne)):p(``,!0)]))),128)),M(t)?(a(),m(l,{key:0,size:`small`,type:`dashed`,block:``,onClick:e=>Xe(t)},{default:g(()=>[v(i(e.$t(`teams.krt2oib013`)),1)]),_:1},8,[`onClick`])):p(``,!0)])]))),128)),_(qe).length===0?(a(),d(`div`,{key:0,class:`card placeholder`,onClick:r[3]||=e=>P.value=!0},[r[18]||=u(`span`,{class:`i-tabler-plus big`},null,-1),u(`span`,null,i(e.$t(`teams.k6cbbgf014`)),1)])):p(``,!0)])]),_:1},8,[`spinning`]),s($,{open:_(P),"onUpdate:open":r[8]||=e=>c(P)?P.value=e:null,title:e.$t(`teams.k1efmuyx002`),"ok-text":`创建`,"cancel-text":`取消`,onOk:Je},{default:g(()=>[s(L,{layout:`vertical`},{default:g(()=>[s(w,{label:e.$t(`teams.k3xhia003`)},{default:g(()=>[s(be,{value:_(F).name,"onUpdate:value":r[4]||=e=>_(F).name=e},null,8,[`value`])]),_:1},8,[`label`]),s(w,{label:e.$t(`teams.k40gkk004`)},{default:g(()=>[s(be,{value:_(F).description,"onUpdate:value":r[5]||=e=>_(F).description=e},null,8,[`value`])]),_:1},8,[`label`]),s(w,{label:e.$t(`teams.k3lrqn0005`)},{default:g(()=>[s(k,{value:_(F).visibility,"onUpdate:value":r[6]||=e=>_(F).visibility=e},{default:g(()=>[s(D,{value:`private`},{default:g(()=>[v(i(e.$t(`teams.k17jfge3015`)),1)]),_:1}),s(D,{value:`public`},{default:g(()=>[v(i(e.$t(`teams.k1h2lq0o016`)),1)]),_:1})]),_:1},8,[`value`])]),_:1},8,[`label`]),_(I).length?(a(),m(w,{key:0,label:e.$t(`teams.k1plugon041`)},{default:g(()=>[s(Ge,{value:_(R),"onUpdate:value":r[7]||=e=>c(R)?R.value=e:null,class:`plug-create-group`},{default:g(()=>[(a(!0),d(f,null,o(_(I),t=>(a(),m(A,{key:t.name,value:t.name},{default:g(()=>[u(`span`,Pe,i(t.name),1),t.builtin?(a(),d(`span`,Fe,i(e.$t(`teams.k3x23c018`)),1)):p(``,!0)]),_:2},1032,[`value`]))),128))]),_:1},8,[`value`]),u(`div`,Ie,i(e.$t(`teams.k1plugon042`)),1)]),_:1},8,[`label`])):p(``,!0)]),_:1})]),_:1},8,[`open`,`title`]),s($,{open:_(z),"onUpdate:open":r[11]||=e=>c(z)?z.value=e:null,title:e.$t(`teams.k6ljhyv029`,{p0:_(B)?.name??``}),"ok-text":`加入`,"cancel-text":`取消`,onOk:Ze},{default:g(()=>[s(L,{layout:`vertical`},{default:g(()=>[s(w,{label:e.$t(`teams.k41ds5006`)},{default:g(()=>[s(it,{value:_(V),"onUpdate:value":r[9]||=e=>c(V)?V.value=e:null,options:_(Ke)},null,8,[`value`,`options`])]),_:1},8,[`label`]),s(w,{label:e.$t(`teams.k479op007`)},{default:g(()=>[s(k,{value:_(H),"onUpdate:value":r[10]||=e=>c(H)?H.value=e:null},{default:g(()=>[s(D,{value:`worker`},{default:g(()=>[...r[19]||=[v(` worker `,-1)]]),_:1}),s(D,{value:`lead`},{default:g(()=>[v(i(e.$t(`teams.keowzlv017`)),1)]),_:1})]),_:1},8,[`value`])]),_:1},8,[`label`])]),_:1})]),_:1},8,[`open`,`title`]),s($,{open:_(U),"onUpdate:open":r[13]||=e=>c(U)?U.value=e:null,title:e.$t(`teams.k1c0o6oe030`,{p0:_(W)?.name??``}),"confirm-loading":_(K),"ok-text":`部署`,"cancel-text":`取消`,onOk:et},{default:g(()=>[s(L,{layout:`vertical`},{default:g(()=>[s(w,{label:`目标 Channel(须无 lead 冲突)`},{default:g(()=>[s(it,{value:_(G),"onUpdate:value":r[12]||=e=>c(G)?G.value=e:null,options:_(We).map(e=>({value:e.id,label:e.name}))},null,8,[`value`,`options`])]),_:1})]),_:1})]),_:1},8,[`open`,`title`,`confirm-loading`]),s($,{open:_(q),"onUpdate:open":r[14]||=e=>c(q)?q.value=e:null,title:e.$t(`teams.k1plugon040`,{p0:_(J)?.name??``}),footer:null},{default:g(()=>[s(ye,{spinning:_(Z)},{default:g(()=>[u(`p`,Le,[_(X)===`explicit`?(a(),d(f,{key:0},[v(i(e.$t(`teams.k1plugon045`)),1)],64)):(a(),d(f,{key:1},[v(i(e.$t(`teams.k1plugon044`)),1)],64))]),(a(!0),d(f,null,o(_(Y),t=>(a(),d(`div`,{key:t.name,class:`plug-row`},[u(`div`,Re,[u(`div`,ze,[u(`span`,Be,i(t.name),1),t.builtin?(a(),d(`span`,Ve,i(e.$t(`teams.k3x23c018`)),1)):p(``,!0)]),u(`div`,He,i(t.description||`—`),1)]),s(b,{checked:t.enabled,size:`small`,loading:_(Q)===t.name,onChange:e=>rt(t,e===!0)},null,8,[`checked`,`loading`,`onChange`])]))),128)),_(Y).length===0&&!_(Z)?(a(),d(`div`,Ue,i(e.$t(`teams.k1plugon046`)),1)):p(``,!0)]),_:1},8,[`spinning`])]),_:1},8,[`open`,`title`])])}}}),[[`__scopeId`,`data-v-5a420f71`]]);export{w as default};
|