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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"town-CoQdblbZ.mjs","sources":["../../../../app/pages/town.vue"],"names":["$t"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workshop-BL5bhfs0.mjs","sources":["../../../../app/pages/workshop/index.vue"],"names":["api","useHead","$t","navigateTo"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"schemaVersion":"mimosa-stop-continuation/v1","generation":"mtxwtxme-61028-1f4519fbc4","used":false,"reportPersisted":false,"claim":null,"updatedAt":"2026-09-12T04:53:46.023Z"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"touched":[],"bashMutation":false,"reportedFindings":[],"findingEvents":[],"baseline":{"storageId":"mtxwtxme-61028-1f4519fbc4","createdAt":"2026-09-12T04:53:45.974Z","files":{"e2e-agent-channel-task.ts":{"existed":true,"snapshot":"50ca2810cf0b248c96948994c0c404531bbad6e553166b6816b3b03bfa0f75d2.source"},"e2e-aml.ts":{"existed":true,"snapshot":"86b7c1daafc8b60ba9982dde5bf1bcc74265709483c176e71f23ec6fc267451f.source"},"e2e-channel-isolation.ts":{"existed":true,"snapshot":"b3713d78e2b2f93905ff6be8d58a8d0a2f42dea322eb67c987fda22ff6a084d5.source"},"e2e-lead-team-mgmt.ts":{"existed":true,"snapshot":"461feca1c14a695eb8b0f17a6f95fe97eeceabc0510faaea4ba6d25bde147d8d.source"},"e2e-memory-system.ts":{"existed":true,"snapshot":"b3849943c3aff102d1af815631fc843a2a52c17646a4b04696ece323e483bbec.source"},"e2e-multi-harness.ts":{"existed":true,"snapshot":"d5170dc9a9879fda04fdf91d8a110d4efb6787ee38dda596d4da899883d36a72.source"},"e2e-omp-workspace.ts":{"existed":true,"snapshot":"145a6e6ba811af35aed31e0cc3211f53706a14980fa069ee9e3c1591139f96f0.source"},"e2e-task-queue.ts":{"existed":true,"snapshot":"9962f2d1b3a85137bd40cc835725600b39f89ee02a27c06b2e0402e1eafde115.source"},"smoke-optimization-verify.ts":{"existed":true,"snapshot":"77bc47854b577900621cacf1697f81fa2bc005af129d37614a97a3441c08f99f.source"},"test-a2a-types.ts":{"existed":true,"snapshot":"359e474ae83db35e4615d3728de6bf694b64d4dce9b536730a3b6518f9c0494a.source"},"test-agent-brain.ts":{"existed":true,"snapshot":"52d9e8cb591a9ae86e238c3620a610cd386717bee222c0f37b25b2ac7e523dc4.source"},"test-agent-multi-channel.ts":{"existed":true,"snapshot":"fe4dfd81178fd6b648335f6405d9ede71319aebde796008e50db21f8adf44c99.source"},"test-agent-runtime.ts":{"existed":true,"snapshot":"33a0db0d2d95d2c11d0720090458e5fba1425376f5ceb5b422d1d3471be3226b.source"},"test-channel-routing.ts":{"existed":true,"snapshot":"4cfadbda8591f29d5e1e230dc000e701b756e850441b3900fb596a4d2f6e98c2.source"},"test-dcw-read.ts":{"existed":true,"snapshot":"0554197c3d2bac203a1f5c48a5d52495d1336db1bd7aa4f4c19875810363e684.source"},"test-dual-drive.ts":{"existed":true,"snapshot":"20ee9967aa0541c516db7575bdd4a1a745939bc7016bd10d7635903113edb8ec.source"},"test-full-system.ts":{"existed":true,"snapshot":"dc59bcd7bb397be63ba2f2c3fec23f3782dcb17d2d75a9981eeced761f33eb32.source"},"test-game-session.ts":{"existed":true,"snapshot":"263c2e05b425e5c322e60c6475279f963bab3a873eb521b21df7fec935a46597.source"},"test-hitl-registry.ts":{"existed":true,"snapshot":"1ae0fb281f97899c025e368ca73f41349b01fb5f85b19e08d7ebccff49095ed5.source"},"test-mcp-tools.ts":{"existed":true,"snapshot":"37a4c3c31c4b70f6b719c53d1e9c4fcba603f31adfdd11bb6ef9f0d094923c56.source"},"test-memory-dynamic.ts":{"existed":true,"snapshot":"ffb4e3aa548cfdadabaa44ab599f9b6a3ca6288176a2cc7a4b2fc2a12b5fb848.source"},"test-memory-maintenance.ts":{"existed":true,"snapshot":"f94449380af09f31ac352152007146a75cc80bae8d6411ffe57b2c56f933b0ff.source"},"test-memory-vector.ts":{"existed":true,"snapshot":"d32c24d61eb8b33c73e5a8fc7e4dc7ef437aed238ee4371c2b00617e6104090a.source"},"test-memory.ts":{"existed":true,"snapshot":"05c203d12a954fffba942e1d626e3f5fec05b18a5aef2bac003b7884a4b77406.source"},"test-orchestration.ts":{"existed":true,"snapshot":"a5241091650134d0919897e086a606a3846c8b2b54f8b4c84a8696c145ac3e9e.source"},"test-persistence-lazy.ts":{"existed":true,"snapshot":"eb5ff8cf66b92aec7bf6726781d8df74faa2b030c3aaac17d6b00c1fc04c9b32.source"},"test-protocol.ts":{"existed":true,"snapshot":"6c87daafa4c006560a954636a97333f6123153c9d34d96203f7ee3a14e556357.source"},"test-scheduler-loop.ts":{"existed":true,"snapshot":"7bbb789d3a527817118cf8399ed1861d6a962ade10878fd07223435d333a7089.source"},"test-task-engine.ts":{"existed":true,"snapshot":"f10615a6fae18436e70d1201b2d44fdae3174a3aa7bb4db97dea1b3ed291d721.source"},"test-workshop-db.ts":{"existed":true,"snapshot":"f36d3e271668bc1260c2823542d22dbf1d0f7041ff16b1ac175bce2256e582ca.source"},"_dbg-agent-dcw-rw.ts":{"existed":true,"snapshot":"233751843aeba9d4c5263f275b8102de00443c06f286918cbd23e0b6729e01aa.source"},"_dbg-harness-ui-e2e.py":{"existed":true,"snapshot":"8df66d62bd41984d0970e8236882080c5085ac937d07a29779463d6a03b37c76.source"},"_audit/dcw-controller-e2e.ts":{"existed":true,"snapshot":"af19fa4c6e34d5540028be4b17600161283af3a2a2dfc61a3fdc0834436a0c14.source"},"_audit/dcw-flush-cost.ts":{"existed":true,"snapshot":"bac735a3803a6650b7f1eb8f587e6dc5c68ea055000c3c99a11789438b78e837.source"},"_audit/dcw-rollback-ledger.ts":{"existed":true,"snapshot":"054bb4bc4e4217a2ab0b0c6b663747214a9af464f5568ea60e784704e340bb0f.source"},"_audit/dcw-unrecorded-write.ts":{"existed":true,"snapshot":"a1090ea066b792cb201739f4994e37bf7c12f52e805239a1eab87f18a537f266.source"},"_audit/dcw-write-mutex.ts":{"existed":true,"snapshot":"2ac5eaac28eaaee2178c4b32014df8e732f9dd432a285a872f5b7f31c1395fa4.source"}},"complete":true,"candidateLimit":5000,"discoveredFiles":37,"capturedFiles":37,"truncated":false,"omittedAtLeast":0,"firstOmitted":"","errors":[]},"stateErrors":[],"omittedReportedFindings":0,"omittedFindingEvents":0,"processing":null,"updatedAt":"2026-09-12T04:53:46.024Z"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 审计实验 2 —— RecipeRollBackRepo 账本算法/落盘成本(只读审计)。
|
|
3
|
-
*
|
|
4
|
-
* 关键:cwd 切到 scripts/_audit/.tmp,使 repo 的 DATA_DIR 指向临时目录,
|
|
5
|
-
* **绝不触碰 server/data/dcw-rollback.json**(真实数据文件)。
|
|
6
|
-
*
|
|
7
|
-
* 运行:node --experimental-transform-types scripts/_audit/run.mjs scripts/_audit/dcw-rollback-ledger.ts
|
|
8
|
-
*/
|
|
9
|
-
import { mkdirSync } from 'node:fs'
|
|
10
|
-
|
|
11
|
-
const TMP = new URL('./.tmp/', import.meta.url)
|
|
12
|
-
mkdirSync(new URL('server/data/', TMP), { recursive: true })
|
|
13
|
-
process.chdir(new URL('.tmp/', new URL('.', import.meta.url)).pathname.replace(/^\//, ''))
|
|
14
|
-
|
|
15
|
-
const { RecipeRollBackRepo } = await import('../../server/services/workshop/dcw/recipe-rollback.repo')
|
|
16
|
-
|
|
17
|
-
const CAP_ANCHORS = 20000
|
|
18
|
-
const CAP_RECORDS = 2000
|
|
19
|
-
|
|
20
|
-
function anchorOf(i: number, nodeId = `n-${i % 50}`) {
|
|
21
|
-
return {
|
|
22
|
-
lineId: 'ln-audit',
|
|
23
|
-
nodeId,
|
|
24
|
-
prevValue: i,
|
|
25
|
-
newValue: i + 1,
|
|
26
|
-
source: 'manual' as const,
|
|
27
|
-
actor: 'user',
|
|
28
|
-
recipeRunId: null,
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/** 贴近真实形状的 windowAgg(实测 server/data/dcw-rollback.json:平均记录 1267 B) */
|
|
33
|
-
function aggOf(nodeId: string) {
|
|
34
|
-
return {
|
|
35
|
-
at: new Date().toISOString(),
|
|
36
|
-
fromMs: Date.now() - 600_000,
|
|
37
|
-
toMs: Date.now(),
|
|
38
|
-
channels: Array.from({ length: 8 }, (_, k) => ({
|
|
39
|
-
daqNodeId: `dq-${k}`,
|
|
40
|
-
ch: `CH${k}`,
|
|
41
|
-
unit: 'C',
|
|
42
|
-
latest: 123.45,
|
|
43
|
-
avg: 121.11,
|
|
44
|
-
min: 100.5,
|
|
45
|
-
max: 140.25,
|
|
46
|
-
cnt: 120,
|
|
47
|
-
breaches: 0,
|
|
48
|
-
nodeIdFallback: nodeId,
|
|
49
|
-
})),
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
function ms(fn: () => void): number {
|
|
54
|
-
const t0 = performance.now()
|
|
55
|
-
fn()
|
|
56
|
-
return performance.now() - t0
|
|
57
|
-
}
|
|
58
|
-
function report(label: string, totalMs: number, iters: number): void {
|
|
59
|
-
console.log(` ${label}: total=${totalMs.toFixed(1)}ms per-op=${(totalMs / iters).toFixed(3)}ms (iters=${iters})`)
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
console.log('=== A. anchors 到达上限后的每次 appendAnchor 成本 ===')
|
|
63
|
-
{
|
|
64
|
-
const repo = new RecipeRollBackRepo()
|
|
65
|
-
for (let i = 0; i < CAP_ANCHORS; i++) repo.appendAnchor(anchorOf(i))
|
|
66
|
-
console.log(` 填充后 anchors=${repo.stats().anchors}(cap=${CAP_ANCHORS})`)
|
|
67
|
-
const iters = 200
|
|
68
|
-
const t = ms(() => {
|
|
69
|
-
for (let i = 0; i < iters; i++) repo.appendAnchor(anchorOf(CAP_ANCHORS + i))
|
|
70
|
-
}, iters)
|
|
71
|
-
report('appendAnchor(在上限稳态,每次触发 splice+new Set)', t, iters)
|
|
72
|
-
console.log(` 追加后 anchors=${repo.stats().anchors}(仍为 cap,说明每写都触发淘汰路径)`)
|
|
73
|
-
|
|
74
|
-
console.log('\n=== B. 查询方法成本(20000 锚 / 50 节点) ===')
|
|
75
|
-
const nodeId = 'n-0'
|
|
76
|
-
let t1 = ms(() => { for (let i = 0; i < 1000; i++) repo.lastStableAnchor(nodeId) }, 1000)
|
|
77
|
-
report('lastStableAnchor (O(1) 索引)', t1, 1000)
|
|
78
|
-
t1 = ms(() => { for (let i = 0; i < 1000; i++) repo.lastRollbackAnchor(nodeId) }, 1000)
|
|
79
|
-
report('lastRollbackAnchor (节点子序列倒扫)', t1, 1000)
|
|
80
|
-
t1 = ms(() => { for (let i = 0; i < 200; i++) repo.anchorById('anc-nonexistent') }, 200)
|
|
81
|
-
report('anchorById (全量 find,未命中=最坏)', t1, 200)
|
|
82
|
-
t1 = ms(() => { for (let i = 0; i < 200; i++) repo.listAnchors({ lineId: 'ln-nope', limit: 100 }) }, 200)
|
|
83
|
-
report('listAnchors({lineId}) 无命中 → 全量 20000 倒扫', t1, 200)
|
|
84
|
-
t1 = ms(() => { for (let i = 0; i < 200; i++) repo.listAnchors({ nodeId, limit: 30 }) }, 200)
|
|
85
|
-
report('listAnchors({nodeId, limit:30}) 走索引', t1, 200)
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
console.log('\n=== C. records(2000 上限)+ open 索引 ===')
|
|
89
|
-
{
|
|
90
|
-
const repo = new RecipeRollBackRepo()
|
|
91
|
-
for (let i = 0; i < CAP_RECORDS; i++) {
|
|
92
|
-
repo.insertRecord({
|
|
93
|
-
lineId: 'ln-audit',
|
|
94
|
-
nodeId: `n-${i % 50}`,
|
|
95
|
-
nodeName: `node-${i % 50}`,
|
|
96
|
-
recipeId: null,
|
|
97
|
-
hypothesis: 'h',
|
|
98
|
-
params: [{ nodeId: `n-${i % 50}`, templateRef: 'cw-temp', from: i, to: i + 1 }],
|
|
99
|
-
setAt: new Date().toISOString(),
|
|
100
|
-
status: 'open',
|
|
101
|
-
judge: null,
|
|
102
|
-
anchorId: `anc-${i}`,
|
|
103
|
-
policy: 'auto_rollback',
|
|
104
|
-
})
|
|
105
|
-
}
|
|
106
|
-
console.log(` records=${repo.stats().records} open=${repo.stats().open}(每节点仅索引最后一条)`)
|
|
107
|
-
const t = ms(() => { for (let i = 0; i < 200; i++) repo.listOpenRecords() }, 200)
|
|
108
|
-
report('listOpenRecords (O(open))', t, 200)
|
|
109
|
-
const t2 = ms(() => { for (let i = 0; i < 200; i++) repo.chainRollbackCount('n-0') }, 200)
|
|
110
|
-
report('chainRollbackCount (全量 2000 filter)', t2, 200)
|
|
111
|
-
const t3 = ms(() => { for (let i = 0; i < 2000; i++) repo.byId('opt-nonexistent') }, 2000)
|
|
112
|
-
report('byId (全量 find,未命中=最坏)', t3, 2000)
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
console.log('\n=== D. 同节点第二条 open 记录 → 索引可见性 ===')
|
|
116
|
-
{
|
|
117
|
-
const repo = new RecipeRollBackRepo()
|
|
118
|
-
const r1 = repo.insertRecord({ nodeId: 'n-x', status: 'open', policy: 'auto_rollback', setAt: new Date().toISOString(), params: [], lineId: 'l' } as never)
|
|
119
|
-
const r2 = repo.insertRecord({ nodeId: 'n-x', status: 'open', policy: 'auto_rollback', setAt: new Date().toISOString(), params: [], lineId: 'l' } as never)
|
|
120
|
-
const open = repo.listOpenRecords()
|
|
121
|
-
const listed = repo.listRecords({ nodeId: 'n-x', status: 'open', limit: 50 })
|
|
122
|
-
console.log(` insertRecord #1=${r1.id} #2=${r2.id}`)
|
|
123
|
-
console.log(` listOpenRecords() 返回 ${open.length} 条;listRecords(status=open) 返回 ${listed.length} 条`)
|
|
124
|
-
console.log(` → 未被索引的 open 记录是否可达:${open.some(r => r.id === r1.id) ? '可达' : '不可达(永不被 sweep 评估)'}`)
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
console.log('\n=== E. flushNow(全量序列化)成本 ===')
|
|
128
|
-
{
|
|
129
|
-
const repo = new RecipeRollBackRepo()
|
|
130
|
-
for (let i = 0; i < CAP_ANCHORS; i++) repo.appendAnchor(anchorOf(i))
|
|
131
|
-
for (let i = 0; i < CAP_RECORDS; i++) {
|
|
132
|
-
repo.insertRecord({
|
|
133
|
-
lineId: 'ln-audit',
|
|
134
|
-
nodeId: `n-${i % 50}`,
|
|
135
|
-
nodeName: `node-${i % 50}`,
|
|
136
|
-
recipeId: null,
|
|
137
|
-
hypothesis: 'h',
|
|
138
|
-
params: [{ nodeId: `n-${i % 50}`, templateRef: 'cw-temp', from: i, to: i + 1 }],
|
|
139
|
-
setAt: new Date().toISOString(),
|
|
140
|
-
status: 'closed-line-stop',
|
|
141
|
-
judge: null,
|
|
142
|
-
anchorId: `anc-${i}`,
|
|
143
|
-
policy: 'auto_rollback',
|
|
144
|
-
windowAgg: aggOf(`n-${i % 50}`),
|
|
145
|
-
} as never)
|
|
146
|
-
}
|
|
147
|
-
const iters = 20
|
|
148
|
-
const t = ms(() => { for (let i = 0; i < iters; i++) repo.flushNow() }, iters)
|
|
149
|
-
report(`flushNow(anchors=${CAP_ANCHORS} + records=${CAP_RECORDS} 含聚合)`, t, iters)
|
|
150
|
-
const { statSync } = await import('node:fs')
|
|
151
|
-
const size = statSync(process.cwd() + '/server/data/dcw-rollback.json').size
|
|
152
|
-
console.log(` 落盘文件大小=${(size / 1024 / 1024).toFixed(2)} MB(每次 agent/rollback 写后同步全量重写)`)
|
|
153
|
-
}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DCW 读写集成单元测试:驱动 read 原语(mock/modbus 形态判定)/工程量↔原始值对称映射/
|
|
3
|
-
* 节点读状态记账/运行时周期读调度/手动读取/Agent dcw_read 工具(鉴权+执行,AW_HOME 隔离)。
|
|
4
|
-
* 运行: AW_MODE=home AW_HOME=<tmp> npx tsx --tsconfig .nuxt/tsconfig.server.json scripts/test-dcw-read.ts
|
|
5
|
-
*/
|
|
6
|
-
import { mkdtempSync, rmSync } from 'node:fs'
|
|
7
|
-
import { tmpdir } from 'node:os'
|
|
8
|
-
import { join } from 'node:path'
|
|
9
|
-
|
|
10
|
-
// 工具段需要文件型仓库:整体进程重定向到一次性配置根(避免触碰检出内 .AgentWorkShop)
|
|
11
|
-
const awHome = mkdtempSync(join(tmpdir(), 'aw-dcw-read-'))
|
|
12
|
-
process.env.AW_MODE = 'home'
|
|
13
|
-
process.env.AW_HOME = awHome
|
|
14
|
-
|
|
15
|
-
let failures = 0
|
|
16
|
-
function check(name: string, ok: boolean, detail = ''): void {
|
|
17
|
-
console.log(` ${ok ? 'PASS' : 'FAIL'} ${name}${detail ? ` — ${detail}` : ''}`)
|
|
18
|
-
if (!ok) failures += 1
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// ===== 1. 驱动 read 原语 =====
|
|
22
|
-
console.log('\n--- 驱动 read 原语 ---')
|
|
23
|
-
{
|
|
24
|
-
const { mockDcwDriver, supportsDcwRead } = await import('../server/services/workshop/dcw/drivers')
|
|
25
|
-
const domain = { min: 0, max: 300 }
|
|
26
|
-
const w = await mockDcwDriver.write({ eng: 165, tolerance: 0.1, domain, driverConfig: { key: 't1' } })
|
|
27
|
-
check('mock 写入成功', w.ok)
|
|
28
|
-
const r = await mockDcwDriver.read!({ domain, driverConfig: { key: 't1' } })
|
|
29
|
-
check('mock 读回写值(读写闭环)', r.ok && r.eng === 165 && r.raw === 165, `eng=${r.eng}`)
|
|
30
|
-
const miss = await mockDcwDriver.read!({ domain, driverConfig: { key: 'never-written' } })
|
|
31
|
-
check('mock 未写地址读取明确失败', !miss.ok && miss.eng == null)
|
|
32
|
-
check('读能力判定:mock/modbus-tcp/modbus-rtu/opcua 可读,mqtt/http 不可读',
|
|
33
|
-
supportsDcwRead('mock') && supportsDcwRead('modbus-tcp') && supportsDcwRead('modbus-rtu') && supportsDcwRead('opcua')
|
|
34
|
-
&& !supportsDcwRead('mqtt') && !supportsDcwRead('http'))
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// ===== 2. 工程量↔原始值映射对称 =====
|
|
38
|
-
console.log('\n--- 工程量↔原始值映射 ---')
|
|
39
|
-
{
|
|
40
|
-
const { engToRaw, rawToEng } = await import('../server/services/workshop/dcw/drivers')
|
|
41
|
-
const input = { eng: 50, tolerance: 0, domain: { min: 0, max: 100 }, driverConfig: { rawMin: 0, rawMax: 16383, engMin: 0, engMax: 100 } }
|
|
42
|
-
const raw = engToRaw(50, input)
|
|
43
|
-
check('线性映射:eng 50 → raw 8191.5', Math.abs(raw - 8191.5) < 1e-9, String(raw))
|
|
44
|
-
check('映射对称:rawToEng(engToRaw(x)) = x', Math.abs(rawToEng(raw, input) - 50) < 1e-9)
|
|
45
|
-
const pass = { eng: 7, tolerance: 0, domain: { min: 0, max: 100 }, driverConfig: {} }
|
|
46
|
-
check('无原始量程:直传(float32 语义)', engToRaw(7, pass) === 7 && rawToEng(7, pass) === 7)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// ===== 3. 节点读状态记账 =====
|
|
50
|
-
console.log('\n--- 节点读状态 ---')
|
|
51
|
-
{
|
|
52
|
-
const { DcwNode } = await import('../server/services/workshop/dcw/dcw-node')
|
|
53
|
-
const n = new DcwNode({ id: 'dw-t1', templateRef: 'dcw-temp-sp', readIntervalMs: 2000 })
|
|
54
|
-
const at = new Date().toISOString()
|
|
55
|
-
n.applyReadResult(168.456, 168.456, true, '读回', at)
|
|
56
|
-
check('成功读数回填(按 decimals 取整)', n.readValue === 168.5 && n.lastReadAt === at && n.lastReadError == null, `readValue=${n.readValue}`)
|
|
57
|
-
n.applyReadResult(null, null, false, '链路超时', new Date().toISOString())
|
|
58
|
-
check('失败读保留旧值并记原因', n.readValue === 168.5 && n.lastReadError === '链路超时')
|
|
59
|
-
n.applyReadResult(170, 170, true, '读回', new Date().toISOString())
|
|
60
|
-
check('恢复成功后清空错误', n.readValue === 170 && n.lastReadError == null)
|
|
61
|
-
const row = n.toRow()
|
|
62
|
-
const n2 = DcwNode.fromRow(row)
|
|
63
|
-
check('持久化 roundtrip(readIntervalMs/readValue/lastRead*)', n2.readIntervalMs === 2000 && n2.readValue === 170 && n2.lastReadError == null)
|
|
64
|
-
const v = n2.toView()
|
|
65
|
-
check('视图透出读字段', v.readValue === 170 && v.readIntervalMs === 2000 && 'lastReadError' in v)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// ===== 4. 运行时周期读调度 =====
|
|
69
|
-
console.log('\n--- 运行时周期读调度 ---')
|
|
70
|
-
{
|
|
71
|
-
const { DcwNode } = await import('../server/services/workshop/dcw/dcw-node')
|
|
72
|
-
const rtMod = await import('../server/services/workshop/dcw/dcw-runtime')
|
|
73
|
-
const { DcwNodeRuntime } = rtMod
|
|
74
|
-
type DcwRuntimeHost = import('../server/services/workshop/dcw/dcw-runtime').DcwRuntimeHost
|
|
75
|
-
type DcwNodeT = import('../server/services/workshop/dcw/dcw-node').DcwNode
|
|
76
|
-
const reads: number[] = []
|
|
77
|
-
const atNow = () => new Date().toISOString()
|
|
78
|
-
// 记账语义与控制器一致:读成功回填节点 readValue
|
|
79
|
-
const makeHost = (defaults: { holdIntervalMs: number, readIntervalMs: number }): DcwRuntimeHost => ({
|
|
80
|
-
running: () => true,
|
|
81
|
-
defaults: () => defaults,
|
|
82
|
-
executeWrite: async () => ({ ok: true, message: '', raw: null, readback: null }),
|
|
83
|
-
executeRead: async (node: DcwNodeT) => {
|
|
84
|
-
reads.push(Date.now())
|
|
85
|
-
node.applyReadResult(1, 1, true, '读回', atNow())
|
|
86
|
-
return { ok: true, value: 1, raw: 1, message: '', at: atNow() }
|
|
87
|
-
},
|
|
88
|
-
})
|
|
89
|
-
const n = new DcwNode({ id: 'dw-t2', templateRef: 'dcw-temp-sp', readIntervalMs: 1000 })
|
|
90
|
-
const rt = new DcwNodeRuntime(n, makeHost({ holdIntervalMs: 0, readIntervalMs: 5000 }))
|
|
91
|
-
const t0 = 1_000_000
|
|
92
|
-
rt.tick(t0)
|
|
93
|
-
rt.tick(t0 + 500)
|
|
94
|
-
rt.tick(t0 + 1100)
|
|
95
|
-
check('周期读按 readIntervalMs 节拍触发(两次窗内各一次)', reads.length === 2, `reads=${reads.length}`)
|
|
96
|
-
check('写心跳不触发(value=null)', reads.length === 2)
|
|
97
|
-
n.readValue = 165
|
|
98
|
-
const manual = await rt.readNow()
|
|
99
|
-
check('手动读取(readNow)执行并记账', manual.ok && n.readValue === 1 && n.lastReadError == null, `readValue=${n.readValue}`)
|
|
100
|
-
const schedAfterManual = reads.length
|
|
101
|
-
const off = new DcwNode({ id: 'dw-t3', templateRef: 'dcw-temp-sp', readIntervalMs: 0 })
|
|
102
|
-
const rtOff = new DcwNodeRuntime(off, makeHost({ holdIntervalMs: 0, readIntervalMs: 5000 }))
|
|
103
|
-
rtOff.tick(t0)
|
|
104
|
-
rtOff.tick(t0 + 2000)
|
|
105
|
-
check('readIntervalMs=0 关闭周期读', reads.length === schedAfterManual)
|
|
106
|
-
// 在飞互斥:挂起中的读阻塞 readNow → 409
|
|
107
|
-
let release: (() => void) | null = null
|
|
108
|
-
const slowHost: DcwRuntimeHost = {
|
|
109
|
-
running: () => true,
|
|
110
|
-
defaults: () => ({ holdIntervalMs: 0, readIntervalMs: 5000 }),
|
|
111
|
-
executeWrite: async () => ({ ok: true, message: '', raw: null, readback: null }),
|
|
112
|
-
executeRead: async () => {
|
|
113
|
-
await new Promise<void>((r) => {
|
|
114
|
-
release = r
|
|
115
|
-
})
|
|
116
|
-
return { ok: true, value: 1, raw: null, message: '', at: atNow() }
|
|
117
|
-
},
|
|
118
|
-
}
|
|
119
|
-
const rtSlow = new DcwNodeRuntime(new DcwNode({ id: 'dw-t4', templateRef: 'dcw-temp-sp', readIntervalMs: null }), slowHost)
|
|
120
|
-
const inFlight = rtSlow.readNow()
|
|
121
|
-
let conflicted = false
|
|
122
|
-
await rtSlow.readNow().catch((e: unknown) => {
|
|
123
|
-
conflicted = (e as { status?: number }).status === 409
|
|
124
|
-
})
|
|
125
|
-
release!()
|
|
126
|
-
const done = await inFlight
|
|
127
|
-
check('读在飞互斥(并发 readNow → 409)', conflicted && done.ok)
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// ===== 5. Agent dcw_read 工具(鉴权 + 执行;隔离配置根) =====
|
|
131
|
-
console.log('\n--- Agent dcw_read 工具 ---')
|
|
132
|
-
{
|
|
133
|
-
const { toolDcwRead } = await import('../server/services/workshop/agents/industrial-tools')
|
|
134
|
-
const denied = await toolDcwRead('agent-x', { node_id: 'dw-none' })
|
|
135
|
-
check('未绑定 agent 读取被拒', denied.isError === true && /未绑定|无权/.test(denied.text))
|
|
136
|
-
const { getDcwController } = await import('../server/services/workshop/dcw/dcw-controller')
|
|
137
|
-
const { getAgentNodeBindingRepo } = await import('../server/services/workshop/agents/node-bindings.repo')
|
|
138
|
-
const node = getDcwController().create({ templateRef: 'dcw-temp-sp', driver: 'mock', driverConfig: { key: 'agent-t' }, readIntervalMs: 0, name: '读链路测试节点' })
|
|
139
|
-
const repo = getAgentNodeBindingRepo()
|
|
140
|
-
repo.bind('agent-a', node.id, 'dcw', 'auto')
|
|
141
|
-
const before = await toolDcwRead('agent-a', { node_id: node.id })
|
|
142
|
-
check('从未下发的节点:鉴权通过并如实报告读取失败(mock 无记录)', before.isError === true && /读取失败/.test(before.text) && !/无权|未绑定/.test(before.text), before.text.slice(0, 80))
|
|
143
|
-
await getDcwController().write(node.id, 172.5, null, { source: 'manual', actor: 'tester' })
|
|
144
|
-
const after = await toolDcwRead('agent-a', { node_id: node.id })
|
|
145
|
-
check('写入后读取:ACT 与 SET 一致', after.isError !== true && /172\.5/.test(after.text) && /一致/.test(after.text), after.text.replace(/\n/g, ' | ').slice(0, 140))
|
|
146
|
-
const other = await toolDcwRead('agent-b', { node_id: node.id })
|
|
147
|
-
check('其他 agent 越权读取被拒', other.isError === true)
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// 收尾
|
|
151
|
-
rmSync(awHome, { recursive: true, force: true })
|
|
152
|
-
console.log(failures === 0 ? '\nDCW-READ ALL PASS' : `\nDCW-READ FAILED(${failures})`)
|
|
153
|
-
process.exit(failures === 0 ? 0 : 1)
|