agentworkshop 0.7.34 → 0.7.37
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/.AgentWorkShop/aml-python/aml_eval.py +171 -0
- package/.output/.AgentWorkShop/aml-python/amlkit.py +120 -0
- package/.output/.AgentWorkShop/aml-python/requirements.txt +7 -0
- package/.output/.AgentWorkShop/aml-python/train-example.py +92 -0
- package/.output/.AgentWorkShop/schema.json +2 -1
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{DLljr7g0.js → 45zuyAso.js} +1 -1
- package/.output/public/_nuxt/4sIEbgcl.js +42 -0
- package/.output/public/_nuxt/8NMOXZOV.js +1 -0
- package/.output/public/_nuxt/BCGafdXT.js +2 -0
- package/.output/public/_nuxt/BDNMzG2s2.js +1 -0
- package/.output/public/_nuxt/{C-mDhyEd.js → BDmh31hl.js} +1 -1
- package/.output/public/_nuxt/BFkgkW8u.js +4 -0
- package/.output/public/_nuxt/BG8sCcwx.js +14 -0
- package/.output/public/_nuxt/{D8CqF0yy.js → BHA40aHa.js} +1 -1
- package/.output/public/_nuxt/BJHKLJJU.js +1 -0
- package/.output/public/_nuxt/{DoTdlVVe2.js → BN6iuJEg2.js} +1 -1
- package/.output/public/_nuxt/BNT8gYU92.js +4 -0
- package/.output/public/_nuxt/BU83-NnX.js +106 -0
- package/.output/public/_nuxt/BYhEUx8t.js +17 -0
- package/.output/public/_nuxt/BzHEilTt.js +1 -0
- package/.output/public/_nuxt/{Ct-WOVr4.js → C3J6FYKa.js} +1 -1
- package/.output/public/_nuxt/C3gwHTz0.js +1 -0
- package/.output/public/_nuxt/C4DWUZ6d2.js +1 -0
- package/.output/public/_nuxt/C5gUkRwn.js +1 -0
- package/.output/public/_nuxt/CClOy-Hz2.js +1 -0
- package/.output/public/_nuxt/{CUXCQXjG.js → CM12FuB42.js} +1 -1
- package/.output/public/_nuxt/{BSCpFtzG.js → CSkxz2NX.js} +1 -1
- package/.output/public/_nuxt/CWoJjWmZ.js +1 -0
- package/.output/public/_nuxt/CY9LbPCI.js +1 -0
- package/.output/public/_nuxt/CYWVXZTS.js +7 -0
- package/.output/public/_nuxt/CZiw7sEV.js +1 -0
- package/.output/public/_nuxt/C_OLzD09.js +1 -0
- package/.output/public/_nuxt/C__m4EhR.js +1 -0
- package/.output/public/_nuxt/Cbq-mryP.js +1 -0
- package/.output/public/_nuxt/{C4OAdbVK2.js → Cc_9VzD42.js} +1 -1
- package/.output/public/_nuxt/{BASN8nZ0.js → CdPzkOMV.js} +1 -1
- package/.output/public/_nuxt/Cec0Ua3F.js +1 -0
- package/.output/public/_nuxt/{DYKVPzN-.js → CoNpEq5X.js} +1 -1
- package/.output/public/_nuxt/CojCTLKD.js +1 -0
- package/.output/public/_nuxt/{B7wL3pDk.js → Crod5z2f.js} +1 -1
- package/.output/public/_nuxt/CzlMDL5H.js +13 -0
- package/.output/public/_nuxt/{G0qIw7Gq2.js → D0ZBQrN_2.js} +1 -1
- package/.output/public/_nuxt/{Lp7Ll94I.js → D1YDxZpZ.js} +1 -1
- package/.output/public/_nuxt/{Bc0AmjfT.js → D20Yamr4.js} +1 -1
- package/.output/public/_nuxt/D6uzXueg.js +2 -0
- package/.output/public/_nuxt/D9Oidm5I.js +1 -0
- package/.output/public/_nuxt/DAe0h2MB.js +1 -0
- package/.output/public/_nuxt/DBHNsT1Y.js +23 -0
- package/.output/public/_nuxt/DDShH71m.js +1 -0
- package/.output/public/_nuxt/DDgJcSET.js +19 -0
- package/.output/public/_nuxt/DHFrCUxA2.js +13 -0
- package/.output/public/_nuxt/{BcrN7QEl2.js → DIaZ2PTo2.js} +1 -1
- package/.output/public/_nuxt/DPnwL14Y.js +1 -0
- package/.output/public/_nuxt/DR12_WCA.js +3 -0
- package/.output/public/_nuxt/{B9nXmjSB.js → DUrecWPx.js} +4 -4
- package/.output/public/_nuxt/DVsjtsvZ2.js +1 -0
- package/.output/public/_nuxt/DYr1VMiQ.js +6 -0
- package/.output/public/_nuxt/DZtm4l-P2.js +1 -0
- package/.output/public/_nuxt/DdD9mCHM.js +1 -0
- package/.output/public/_nuxt/DeJykBFf.js +9 -0
- package/.output/public/_nuxt/{DoMxCWN52.js → DeyBFhKH2.js} +1 -1
- package/.output/public/_nuxt/DkGQ7lnb2.js +1 -0
- package/.output/public/_nuxt/DmqknNvV.js +18 -0
- package/.output/public/_nuxt/DnUuIR83.js +1 -0
- package/.output/public/_nuxt/DrYV5i68.js +1 -0
- package/.output/public/_nuxt/{B5S_UyaC.js → DtYHUi5Z.js} +1 -1
- package/.output/public/_nuxt/Dz_Q3Lpw2.js +1 -0
- package/.output/public/_nuxt/DzbFpZRk.js +3 -0
- package/.output/public/_nuxt/HBLJ-wei.js +1 -0
- package/.output/public/_nuxt/JCoYF4IJ.js +31 -0
- package/.output/public/_nuxt/JTLM-kqr2.js +1 -0
- package/.output/public/_nuxt/{BeIfu4N3.js → KZQX7xoM.js} +2 -2
- package/.output/public/_nuxt/S_fVQwJK.js +1 -0
- package/.output/public/_nuxt/TownView.0oLiQgTC.css +1 -0
- package/.output/public/_nuxt/YnQxK3eG.js +1 -0
- package/.output/public/_nuxt/_id_.D-SYuyZb.css +1 -0
- package/.output/public/_nuxt/_id_.hma_BU6T.css +1 -0
- package/.output/public/_nuxt/_wsId_.B12v3PhY.css +1 -0
- package/.output/public/_nuxt/aLLjF2K-2.js +1 -0
- package/.output/public/_nuxt/aWWIh8YL.js +24 -0
- package/.output/public/_nuxt/ahgEJu2R.js +1 -0
- package/.output/public/_nuxt/aml.COEKNNqK.css +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/a66fdef7-dcfd-453b-b1f6-543c7dfd98d5.json +1 -0
- package/.output/public/_nuxt/daq.B3265ZDn.css +1 -0
- package/.output/public/_nuxt/dcw.DLYZqEhT.css +1 -0
- package/.output/public/_nuxt/default.DE_vT238.css +1 -0
- package/.output/public/_nuxt/entry.BB-Eeh-J.css +1 -0
- package/.output/public/_nuxt/jZsY8yYz.js +1 -0
- package/.output/public/_nuxt/logs.CqFyMrJw.css +1 -0
- package/.output/public/_nuxt/pages.ooEzrMm9.css +1 -0
- package/.output/public/_nuxt/pdk8jLGT.js +1 -0
- package/.output/public/_nuxt/plugins.5e5chZ67.css +1 -0
- package/.output/public/_nuxt/pz2JDAM7.js +2 -0
- package/.output/public/_nuxt/settings.Dm3M0RLy.css +1 -0
- package/.output/public/_nuxt/town.DKIAhKnx.css +1 -0
- package/.output/public/_nuxt/users.CXnP2E08.css +1 -0
- package/.output/public/_nuxt/vRTjoWqd.js +1 -0
- package/.output/public/_nuxt/workshop.Jk5HxWPE.css +1 -0
- package/.output/public/_nuxt/zIGh7R49.js +75 -0
- package/.output/public/_nuxt/zq5t1vyX.js +1 -0
- package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
- package/.output/server/chunks/_/entity.mjs +174 -0
- package/.output/server/chunks/_/entity.mjs.map +1 -0
- package/.output/server/chunks/_/env-manager.mjs +162 -0
- package/.output/server/chunks/_/env-manager.mjs.map +1 -0
- package/.output/server/chunks/_/host-bindings.mjs +1 -1
- package/.output/server/chunks/_/nitro.mjs +1523 -1027
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
- package/.output/server/chunks/build/{TownView-BdHnAilw.mjs → TownView-jVazYOjN.mjs} +141 -141
- package/.output/server/chunks/build/{TownView-BdHnAilw.mjs.map → TownView-jVazYOjN.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-Cb845FHR.mjs → _id_-CfVosNg3.mjs} +136 -136
- package/.output/server/chunks/build/{_id_-Cb845FHR.mjs.map → _id_-CfVosNg3.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-fadFPl2i.mjs → _id_-Hwr4rZpr.mjs} +32 -32
- package/.output/server/chunks/build/{_id_-fadFPl2i.mjs.map → _id_-Hwr4rZpr.mjs.map} +1 -1
- package/.output/server/chunks/build/{_wsId_-CTZswnm5.mjs → _wsId_-BVg3bB77.mjs} +175 -165
- package/.output/server/chunks/build/{_wsId_-CTZswnm5.mjs.map → _wsId_-BVg3bB77.mjs.map} +1 -1
- package/.output/server/chunks/build/aml-BCSJCdX7.mjs +588 -0
- package/.output/server/chunks/build/aml-BCSJCdX7.mjs.map +1 -0
- package/.output/server/chunks/build/{daq-BvihjQyW.mjs → daq-C03Uu5UE.mjs} +108 -106
- package/.output/server/chunks/build/daq-C03Uu5UE.mjs.map +1 -0
- package/.output/server/chunks/build/{dcw-Ks2vJ4PF.mjs → dcw-6vEYVeje.mjs} +44 -44
- package/.output/server/chunks/build/{dcw-Ks2vJ4PF.mjs.map → dcw-6vEYVeje.mjs.map} +1 -1
- package/.output/server/chunks/build/{default-GgHt4O2R.mjs → default-hseyOqBT.mjs} +30 -27
- package/.output/server/chunks/build/{default-GgHt4O2R.mjs.map → default-hseyOqBT.mjs.map} +1 -1
- package/.output/server/chunks/build/{logs-CYBhkQwh.mjs → logs-B-xhuqln.mjs} +35 -35
- package/.output/server/chunks/build/{logs-CYBhkQwh.mjs.map → logs-B-xhuqln.mjs.map} +1 -1
- package/.output/server/chunks/build/{pages-C-6BRtv8.mjs → pages-BO7yZsXA.mjs} +18 -27
- package/.output/server/chunks/build/pages-BO7yZsXA.mjs.map +1 -0
- package/.output/server/chunks/build/{plugins-dZRegC7m.mjs → plugins-CUWmMdyt.mjs} +17 -17
- package/.output/server/chunks/build/{plugins-dZRegC7m.mjs.map → plugins-CUWmMdyt.mjs.map} +1 -1
- package/.output/server/chunks/build/{settings-CgDLkP3s.mjs → settings-DoQ2Oq3P.mjs} +43 -43
- package/.output/server/chunks/build/{settings-CgDLkP3s.mjs.map → settings-DoQ2Oq3P.mjs.map} +1 -1
- package/.output/server/chunks/build/{town-DJ-V5G9U.mjs → town-BOl6hs9B.mjs} +7 -7
- package/.output/server/chunks/build/{town-DJ-V5G9U.mjs.map → town-BOl6hs9B.mjs.map} +1 -1
- package/.output/server/chunks/build/useDaqStream-CIBaiGAl.mjs +1 -1
- package/.output/server/chunks/build/useDcwStream-CBbiYnWe.mjs +1 -1
- package/.output/server/chunks/build/{useWorkshopWs-CprkZEdq.mjs → useWorkshopWs-C_I7q9As.mjs} +110 -32
- package/.output/server/chunks/build/{useWorkshopWs-CprkZEdq.mjs.map → useWorkshopWs-C_I7q9As.mjs.map} +1 -1
- package/.output/server/chunks/build/{users-4nzxTjFT.mjs → users-fohSmF-J.mjs} +6 -6
- package/.output/server/chunks/build/{users-4nzxTjFT.mjs.map → users-fohSmF-J.mjs.map} +1 -1
- package/.output/server/chunks/build/{workshop-81xhz368.mjs → workshop-DX5-ldc4.mjs} +15 -15
- package/.output/server/chunks/build/{workshop-81xhz368.mjs.map → workshop-DX5-ldc4.mjs.map} +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +21 -8
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +58 -0
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +27 -6
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +49 -0
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +45 -0
- package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +30 -0
- package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +40 -0
- package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +42 -0
- package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +4 -22
- package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +4 -16
- package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +19 -34
- package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +41 -0
- package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +62 -0
- package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +63 -0
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +54 -0
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +46 -0
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +2 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +4 -4
- package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs +12 -1
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +2 -2
- package/.output/server/chunks/routes/renderer.mjs +2 -2
- package/.output/server/chunks/virtual/entry.mjs +103 -17
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +578 -507
- package/README.md +125 -51
- package/app/assets/css/main.css +329 -22
- package/app/components/AppHeader.vue +5 -4
- package/app/components/AppSidebar.vue +5 -4
- package/app/components/AwChart.vue +17 -0
- package/app/components/workshop/AgentLanesView.vue +2 -2
- package/app/components/workshop/ChannelSessionList.vue +3 -3
- package/app/components/workshop/CommandPalette.vue +1 -2
- package/app/components/workshop/Composer.vue +4 -4
- package/app/components/workshop/DaqNodeRow.vue +20 -1
- package/app/components/workshop/EventBlock.vue +3 -3
- package/app/components/workshop/MentionHoverCard.vue +1 -1
- package/app/components/workshop/MultiChannelView.vue +1 -1
- package/app/components/workshop/TaskBoardView.vue +5 -5
- package/app/components/workshop/TranscriptTimeline.vue +3 -3
- package/app/components/workshop/blocks/ClusterRoute.vue +3 -3
- package/app/components/workshop/blocks/ClusterStream.vue +1 -1
- package/app/components/workshop/blocks/ClusterTool.vue +1 -1
- package/app/components/workshop/lanes/LaneBlocks.vue +5 -2
- package/app/components/workshop/town/TownView.vue +0 -7
- package/app/composables/workshop/useClusteredBlocks.ts +22 -3
- package/app/composables/workshop/useEscClose.ts +44 -0
- package/app/config/index.ts +2 -1
- package/app/layouts/default.vue +25 -8
- package/app/pages/aml/index.vue +626 -4
- package/app/pages/daq/[id].vue +1 -1
- package/app/pages/daq/index.vue +10 -12
- package/app/pages/dcw/[id].vue +2 -2
- package/app/pages/dcw/index.vue +7 -11
- package/app/pages/index.vue +24 -6
- package/app/pages/logs/index.vue +2 -6
- package/app/pages/plugins/index.vue +1 -1
- package/app/pages/settings.vue +2 -2
- package/app/pages/town.vue +0 -2
- package/app/pages/users.vue +1 -1
- package/app/pages/workshop/index.vue +2 -2
- package/app/plugins/esc-close.client.ts +31 -0
- package/app/stores/workshop/events.ts +186 -36
- package/bin/aw.mjs +7 -2
- package/cli/aw.mjs +19 -34
- package/cli/commands/build.mjs +18 -1
- package/cli/commands/config.mjs +2 -0
- package/cli/commands/plugin.mjs +45 -18
- package/cli/commands/register.mjs +6 -2
- package/cli/commands/status.mjs +2 -1
- package/cli/commands/update.mjs +1 -1
- package/cli/commands/version.mjs +1 -1
- package/cli/core/args.mjs +76 -4
- package/cli/core/help.mjs +3 -1
- package/cli/core/meta.mjs +38 -0
- package/cli/core/post-build.mjs +96 -0
- package/cli/core/registry.mjs +6 -3
- package/config.yml +28 -26
- package/docs/aml.md +99 -0
- package/docs/cli.en.md +445 -0
- package/docs/cli.md +410 -220
- package/docs/full-test-plan.md +174 -0
- package/docs/multi-harness-architecture.md +248 -0
- package/docs/plugins.en.md +534 -0
- package/docs/plugins.md +531 -179
- package/docs/sdk.en.md +922 -0
- package/docs/sdk.md +725 -129
- package/i18n/dicts/aml.json +43 -1
- package/i18n/locales/en.ts +1928 -1885
- package/i18n/locales/zh-CN.ts +1928 -1885
- package/nuxt.config.ts +27 -2
- package/package.json +164 -153
- package/scripts/.mimosa/hook-status/sess_aeaecb58-8833-4b83-b93c-050467d21e03-d944d71bb3.json +14 -0
- package/scripts/_audit/aml-layout-diag.mjs +83 -0
- package/scripts/_audit/bump-version.mjs +51 -0
- package/scripts/_audit/channel-inspect.mjs +49 -0
- package/scripts/_audit/cleanup-apply.mjs +89 -0
- package/scripts/_audit/cleanup-plan.mjs +82 -0
- package/scripts/_audit/contrast-check.mjs +43 -0
- package/scripts/_audit/dcw-unrecorded-write.ts +1 -1
- package/scripts/_audit/design-shots.mjs +145 -0
- package/scripts/_audit/docs-font-probe.mjs +68 -0
- package/scripts/_audit/docs-probe.mjs +107 -0
- package/scripts/_audit/docs-shots.mjs +171 -0
- package/scripts/_audit/docs-v3-verify.mjs +255 -0
- package/scripts/_audit/docs-vue-lint.mjs +81 -0
- package/scripts/_audit/docs-vue-lint2.mjs +91 -0
- package/scripts/_audit/exp-cost-scaling.mjs +4 -1
- package/scripts/_audit/exp-envelope-and-png.mjs +2 -1
- package/scripts/_audit/exp-sweep-fairness.mjs +4 -2
- package/scripts/_audit/fix-settings-count.mjs +57 -0
- package/scripts/_audit/glass-verify.mjs +155 -0
- package/scripts/_audit/hydration-diff.mjs +104 -0
- package/scripts/_audit/hydration-head.mjs +36 -0
- package/scripts/_audit/hydration-probe.mjs +59 -0
- package/scripts/_audit/lead-matrix-test.mjs +172 -0
- package/scripts/_audit/plc-agent-task.mjs +74 -0
- package/scripts/_audit/plc-clean-scenario.mjs +434 -0
- package/scripts/_audit/plc-clean-shots.mjs +161 -0
- package/scripts/_audit/plc-fc10-probe.mjs +30 -0
- package/scripts/_audit/probe-binding.mjs +114 -103
- package/scripts/_audit/review-fix-verify.mjs +158 -0
- package/scripts/_audit/seed-demo.mjs +165 -0
- package/scripts/_audit/town-focus-shot.mjs +129 -0
- package/scripts/_audit/town-reposition.mjs +85 -0
- package/scripts/_audit/ts-resolve-hook.mjs +57 -22
- package/scripts/_audit/verify-cleanup.mjs +67 -0
- package/scripts/_audit/verify-release-pack.mjs +82 -0
- package/scripts/_audit/watchdog-recovery-test.mjs +127 -0
- package/scripts/_dbg-audit-all-pages.mjs +43 -43
- package/scripts/_dbg-configroot-audit.mjs +84 -84
- package/scripts/_dbg-daq-intervals-func.mjs +94 -94
- package/scripts/_dbg-daq-rowstyle-verify.mjs +112 -112
- package/scripts/_dbg-groups-ui-verify.mjs +122 -122
- package/scripts/_dbg-harness-e2e.mjs +92 -92
- package/scripts/_dbg-harness-ui-e2e.py +97 -97
- package/scripts/_dbg-hitl-timeout-e2e.mjs +93 -93
- package/scripts/_dbg-multiharness-live-e2e.mjs +254 -254
- package/scripts/_dbg-opslog-agent-e2e.mjs +194 -194
- package/scripts/_dbg-opt-team-e2e.mjs +133 -133
- package/scripts/_dbg-recipe-e2e.mjs +176 -176
- package/scripts/_dbg-recipe-stale-e2e.mjs +135 -135
- package/scripts/_dbg-render-perf.mjs +142 -142
- package/scripts/_dbg-render-regression.mjs +130 -130
- package/scripts/_dbg-town-smoke.mjs +54 -54
- package/scripts/aw-start-smoke.mjs +27 -8
- package/scripts/check-docs-sync.mjs +367 -0
- package/scripts/e2e-full-closedloop.mjs +36 -18
- package/scripts/production-closed-loop-e2e.mjs +300 -303
- package/scripts/test-cli-exit.mjs +129 -21
- package/scripts/test-daq-frame-race.mjs +144 -96
- package/scripts/test-events-index.mjs +176 -0
- package/scripts/test-lru.mjs +34 -11
- package/scripts/test-memory-month-query.mjs +11 -3
- package/scripts/test-plugin-hardening.mjs +7 -2
- package/scripts/test-plugin-lifecycle.mjs +173 -0
- package/scripts/test-rollback-index.mjs +76 -18
- package/scripts/test-sdk-surface.mjs +6 -3
- package/sdk/client.mjs +16 -7
- package/sdk/context.mjs +21 -9
- package/sdk/examples/line-sentinel/client.mjs +13 -6
- package/sdk/examples/line-sentinel/index.mjs +5 -2
- package/sdk/examples/ops-notifier/client.mjs +3 -1
- package/sdk/examples/sample-insight/client.mjs +4 -2
- package/sdk/index.d.mts +133 -16
- package/sdk/index.mjs +3 -2
- package/sdk/lifecycle.mjs +8 -3
- package/server/api/workshop/agent-tools/bindings/index.post.ts +22 -7
- package/server/api/workshop/aml/datasets/[id].delete.ts +39 -0
- package/server/api/workshop/aml/datasets/[id].get.ts +31 -9
- package/server/api/workshop/aml/datasets/[id].patch.ts +30 -0
- package/server/api/workshop/aml/entities/index.get.ts +13 -0
- package/server/api/workshop/aml/entities/prune.post.ts +28 -0
- package/server/api/workshop/aml/env/index.get.ts +13 -0
- package/server/api/workshop/aml/env/recheck.post.ts +14 -0
- package/server/api/workshop/aml/env/uv.post.ts +21 -0
- package/server/api/workshop/aml/env/venv.post.ts +24 -0
- package/server/api/workshop/aml/index.get.ts +14 -1
- package/server/api/workshop/aml/jobs/[id].delete.ts +44 -0
- package/server/api/workshop/aml/models/[id].delete.ts +35 -0
- package/server/api/workshop/aml/models/[id].patch.ts +30 -0
- package/server/services/workshop/agents/agent-interface.ts +3 -0
- package/server/services/workshop/agents/codex-agent.ts +4 -7
- package/server/services/workshop/agents/dsh-agent.ts +4 -7
- package/server/services/workshop/agents/opencode-agent.ts +5 -7
- package/server/services/workshop/aml/aml.repo.ts +18 -0
- package/server/services/workshop/aml/dataset-builder.ts +4 -0
- package/server/services/workshop/aml/entity.ts +365 -0
- package/server/services/workshop/aml/env-manager.ts +242 -0
- package/server/services/workshop/aml/job-orchestrator.ts +4 -15
- package/server/services/workshop/aml/model-registry.ts +6 -0
- package/server/services/workshop/aml/python-runtime.ts +396 -62
- package/server/services/workshop/aml/runtime.ts +95 -4
- package/server/services/workshop/daq/bus/mqtt.adapter.ts +3 -1
- package/server/services/workshop/daq/daq-controller.ts +95 -47
- package/server/services/workshop/daq/daq-node.repo.ts +0 -10
- package/server/services/workshop/daq/daq-runtime.ts +0 -5
- package/server/services/workshop/json-store.mjs +35 -2
- package/server/services/workshop/plugins/host.mjs +14 -5
- package/server/services/workshop/runtime/manager.ts +28 -1
- package/server/services/workshop/runtime/scheduler-loop.ts +10 -1
- package/server/services/workshop/settings.ts +2 -0
- package/shared/config/home.mjs +58 -0
- package/shared/config/schema.json +2 -1
- package/shared/lru.mjs +4 -1
- package/.output/public/_nuxt/-6OnbLFb.js +0 -1
- package/.output/public/_nuxt/-nb2uqVg.js +0 -1
- package/.output/public/_nuxt/4bHdIqEg.js +0 -18
- package/.output/public/_nuxt/6PZPfFcO.js +0 -17
- package/.output/public/_nuxt/BBBtwOpo.js +0 -9
- package/.output/public/_nuxt/BBwMH_hG.js +0 -7
- package/.output/public/_nuxt/BDUjyaF4.js +0 -42
- package/.output/public/_nuxt/BNXfwXpE.js +0 -1
- package/.output/public/_nuxt/BN_PdN3J.js +0 -24
- package/.output/public/_nuxt/BSSUlJnx2.js +0 -1
- package/.output/public/_nuxt/BWSE6hR6.js +0 -1
- package/.output/public/_nuxt/BZGNTgTQ2.js +0 -1
- package/.output/public/_nuxt/BZv4RFYN.js +0 -1
- package/.output/public/_nuxt/BcmbLh2z2.js +0 -1
- package/.output/public/_nuxt/BfGc7TJp.js +0 -1
- package/.output/public/_nuxt/BgTB6h_q.js +0 -2
- package/.output/public/_nuxt/BkLJA9J5.js +0 -1
- package/.output/public/_nuxt/Bp5luxkg2.js +0 -1
- package/.output/public/_nuxt/BuCHayqN.js +0 -1
- package/.output/public/_nuxt/BuvcLKh1.js +0 -19
- package/.output/public/_nuxt/C3tCneTM.js +0 -1
- package/.output/public/_nuxt/C77oC8yC2.js +0 -7
- package/.output/public/_nuxt/C9f8QMp12.js +0 -1
- package/.output/public/_nuxt/CKfhtOt7.js +0 -13
- package/.output/public/_nuxt/CQvmN-Mi.js +0 -1
- package/.output/public/_nuxt/CUDrOuW7.js +0 -1
- package/.output/public/_nuxt/CZcC-gpk.js +0 -1
- package/.output/public/_nuxt/CbzsPO5H.js +0 -1
- package/.output/public/_nuxt/CdSOrh2c.js +0 -1
- package/.output/public/_nuxt/Cgx818r-.js +0 -1
- package/.output/public/_nuxt/Cjm7VogC.js +0 -1
- package/.output/public/_nuxt/Cm5mDxzH.js +0 -1
- package/.output/public/_nuxt/CmHzfVc5.js +0 -3
- package/.output/public/_nuxt/Cn3J3NXR.js +0 -23
- package/.output/public/_nuxt/Cno6kYiO2.js +0 -1
- package/.output/public/_nuxt/Cp6z0RN7.js +0 -1
- package/.output/public/_nuxt/CwqIxJGj.js +0 -2
- package/.output/public/_nuxt/D-Ca4BGY.js +0 -70
- package/.output/public/_nuxt/D0fhp-Ga.js +0 -75
- package/.output/public/_nuxt/D1z7i2UP.js +0 -31
- package/.output/public/_nuxt/DIaTPH1M.js +0 -1
- package/.output/public/_nuxt/DTYBfjRY.js +0 -1
- package/.output/public/_nuxt/DXRZPxGs.js +0 -1
- package/.output/public/_nuxt/DZzGarBE2.js +0 -13
- package/.output/public/_nuxt/DaMCzQhv.js +0 -1
- package/.output/public/_nuxt/DoLasgPj2.js +0 -1
- package/.output/public/_nuxt/DpojD719.js +0 -1
- package/.output/public/_nuxt/DsVcWfyR.js +0 -1
- package/.output/public/_nuxt/DtBu71ev.js +0 -32
- package/.output/public/_nuxt/Dy-mxvXY2.js +0 -1
- package/.output/public/_nuxt/DzuC31-i.js +0 -2
- package/.output/public/_nuxt/FQri3dV3.js +0 -1
- package/.output/public/_nuxt/ORt9oDIy2.js +0 -1
- package/.output/public/_nuxt/TownView.CtskuMXS.css +0 -1
- package/.output/public/_nuxt/VLI2Zy4t.js +0 -5
- package/.output/public/_nuxt/_id_.MbzdFygI.css +0 -1
- package/.output/public/_nuxt/_id_.hRYo-EAB.css +0 -1
- package/.output/public/_nuxt/_wsId_.gXMEOYgX.css +0 -1
- package/.output/public/_nuxt/aml.WU_bh87J.css +0 -1
- package/.output/public/_nuxt/arUY5dyq2.js +0 -4
- package/.output/public/_nuxt/builds/meta/adc365b6-f636-4a2b-9527-79819c1e874b.json +0 -1
- package/.output/public/_nuxt/daq.Bb6l44-O.css +0 -1
- package/.output/public/_nuxt/dcw.rXH2fc2Z.css +0 -1
- package/.output/public/_nuxt/default.jNT73_hq.css +0 -1
- package/.output/public/_nuxt/ekuGmQ7R.js +0 -1
- package/.output/public/_nuxt/entry.jFrFAWuA.css +0 -1
- package/.output/public/_nuxt/logs.DMOM-iHe.css +0 -1
- package/.output/public/_nuxt/niDwBOZW.js +0 -3
- package/.output/public/_nuxt/pMoIO6rr.js +0 -14
- package/.output/public/_nuxt/pages.Cc8GX9T1.css +0 -1
- package/.output/public/_nuxt/plugins.wIPyfPn-.css +0 -1
- package/.output/public/_nuxt/rqZ-1SoP.js +0 -2
- package/.output/public/_nuxt/settings.BCm4NZIc.css +0 -1
- package/.output/public/_nuxt/town.C_DsNW0J.css +0 -1
- package/.output/public/_nuxt/users.DuAt_Zwf.css +0 -1
- package/.output/public/_nuxt/vJ4FPb-_.js +0 -1
- package/.output/public/_nuxt/workshop.BJg84pOK.css +0 -1
- package/.output/server/chunks/build/aml-uBNIppIf.mjs +0 -508
- package/.output/server/chunks/build/aml-uBNIppIf.mjs.map +0 -1
- package/.output/server/chunks/build/daq-BvihjQyW.mjs.map +0 -1
- package/.output/server/chunks/build/pages-C-6BRtv8.mjs.map +0 -1
- package/scripts/_audit/.tmp/audit-data/dcws.json +0 -28
- package/scripts/_audit/.tmp/dcw-writes.json +0 -15650
- package/scripts/_audit/.tmp/dcws.json +0 -9033
- package/scripts/_audit/.tmp/pollution-backup/dcw-rollback.polluted.json +0 -470006
- package/scripts/_audit/.tmp/pollution-backup/dcws.polluted.json +0 -9085
- package/scripts/_audit/.tmp/probe-cwd.txt +0 -1
- package/scripts/_audit/awhome/commands/README.md +0 -3
- package/scripts/_audit/awhome/commands/hello.mjs +0 -12
- package/scripts/_audit/diag-cwd.ts +0 -20
- package/scripts/_audit/diag-cwd2.ts +0 -19
- package/scripts/_audit/hello.mjs +0 -12
- package/scripts/_audit/ndjson-partial-line-repro.mjs +0 -77
- package/scripts/_audit/opencode-await-ternary-repro.mjs +0 -20
- package/scripts/_audit/part-frag.txt +0 -84
- package/scripts/_audit/part-head.txt +0 -45
- package/scripts/_audit/probe-child.mjs +0 -17
- package/scripts/_audit/probe-envelope.mjs +0 -49
- package/scripts/_audit/probe-packlist.mjs +0 -67
- package/scripts/_audit/probe-routes.mjs +0 -47
- package/scripts/_audit/probe-routes2.mjs +0 -38
- package/scripts/_audit/probe.ts +0 -9
- package/scripts/_audit/probe2.ts +0 -6
- package/scripts/_audit/probe3.ts +0 -3
- package/scripts/_audit/probe4.ts +0 -3
- package/scripts/_audit/proj/.AgentWorkShop/commands/echoargs.mjs +0 -13
- package/scripts/_audit/proj/config.yml +0 -1
- package/scripts/_audit/run.mjs +0 -30
- package/scripts/_audit/tsconfig.probe.json +0 -24
- package/scripts/_audit/typecheck-out.txt +0 -466
- package/scripts/_daq-realtime-probe.mjs +0 -68
- package/scripts/_daq-warn-probe.mjs +0 -50
- package/scripts/_dbg-acc-1-setup.mjs +0 -57
- package/scripts/_dbg-acc-2-diag.mjs +0 -14
- package/scripts/_dbg-acc-2-intervals.mjs +0 -81
- package/scripts/_dbg-acc-3-daq.mjs +0 -48
- package/scripts/_dbg-acc-4-team.mjs +0 -92
- package/scripts/_dbg-acc-5-visual.mjs +0 -63
- package/scripts/_dbg-acc-5b-ws-town.mjs +0 -18
- package/scripts/_dbg-acc-5c-town.mjs +0 -12
- package/scripts/_dbg-acc-6-i18n.mjs +0 -19
- package/scripts/_dbg-agent-tools-audit.mjs +0 -154
- package/scripts/_dbg-agent-workflow-audit.mjs +0 -177
- package/scripts/_dbg-agents-dropdown-shot.py +0 -33
- package/scripts/_dbg-anim-verify.mjs +0 -81
- package/scripts/_dbg-app-shot.mjs +0 -48
- package/scripts/_dbg-autoframe.mjs +0 -103
- package/scripts/_dbg-availability-probe.ts +0 -11
- package/scripts/_dbg-beacon-final.mjs +0 -181
- package/scripts/_dbg-bind-bidi-e2e.mjs +0 -239
- package/scripts/_dbg-callout-near.mjs +0 -108
- package/scripts/_dbg-catalog-smoke.ts +0 -20
- package/scripts/_dbg-cf-line-shot.mjs +0 -18
- package/scripts/_dbg-chan-focus.mjs +0 -49
- package/scripts/_dbg-channel-plugin-ui.mjs +0 -94
- package/scripts/_dbg-cleanup.mjs +0 -31
- package/scripts/_dbg-closedloop-ui-shot.mjs +0 -61
- package/scripts/_dbg-codex-handshake.ts +0 -30
- package/scripts/_dbg-codex-probe.mjs +0 -58
- package/scripts/_dbg-codex-sandbox.ts +0 -58
- package/scripts/_dbg-codex-turn.ts +0 -65
- package/scripts/_dbg-collab-scenario-e2e.mjs +0 -185
- package/scripts/_dbg-config-smoke.ts +0 -28
- package/scripts/_dbg-console-audit.mjs +0 -61
- package/scripts/_dbg-console-probe.mjs +0 -23
- package/scripts/_dbg-context-inject-audit.mjs +0 -231
- package/scripts/_dbg-cpu-profile.mjs +0 -53
- package/scripts/_dbg-crash-recovery.mjs +0 -143
- package/scripts/_dbg-crop-shot.mjs +0 -16
- package/scripts/_dbg-cross-channel-e2e.mjs +0 -157
- package/scripts/_dbg-cross-team-visibility-e2e.mjs +0 -129
- package/scripts/_dbg-crush-probe.sh +0 -21
- package/scripts/_dbg-crush-spawn-probe.ts +0 -22
- package/scripts/_dbg-daq-acc-probe.mjs +0 -24
- package/scripts/_dbg-daq-attrib.mjs +0 -34
- package/scripts/_dbg-daq-bind-audit.mjs +0 -119
- package/scripts/_dbg-daq-cadence.mjs +0 -104
- package/scripts/_dbg-daq-debug.mjs +0 -22
- package/scripts/_dbg-daq-diag.mjs +0 -33
- package/scripts/_dbg-daq-e2e.mjs +0 -171
- package/scripts/_dbg-daq-film.mjs +0 -136
- package/scripts/_dbg-daq-filter-e2e.mjs +0 -109
- package/scripts/_dbg-daq-filter-e2e2.mjs +0 -62
- package/scripts/_dbg-daq-final-regression.mjs +0 -78
- package/scripts/_dbg-daq-frame-alarm.mjs +0 -49
- package/scripts/_dbg-daq-frame-ui.mjs +0 -62
- package/scripts/_dbg-daq-frame-ws.mjs +0 -72
- package/scripts/_dbg-daq-full-check.mjs +0 -179
- package/scripts/_dbg-daq-line-note-verify.mjs +0 -61
- package/scripts/_dbg-daq-linebanner-audit.mjs +0 -107
- package/scripts/_dbg-daq-pages-shot.mjs +0 -37
- package/scripts/_dbg-daq-perf.mjs +0 -61
- package/scripts/_dbg-daq-probe.mjs +0 -27
- package/scripts/_dbg-daq-recipe-e2e.mjs +0 -30
- package/scripts/_dbg-daq-redesign-shot.mjs +0 -88
- package/scripts/_dbg-daq-rows-probe.mjs +0 -26
- package/scripts/_dbg-daq-rowstate-e2e.mjs +0 -152
- package/scripts/_dbg-daq-rowstate-shot.mjs +0 -45
- package/scripts/_dbg-daq-rowstate-shot2.mjs +0 -38
- package/scripts/_dbg-daq-tpl.mjs +0 -144
- package/scripts/_dbg-dash-console-check.mjs +0 -49
- package/scripts/_dbg-dash-deep-probe.mjs +0 -61
- package/scripts/_dbg-dash-hitpoint.mjs +0 -44
- package/scripts/_dbg-dash-live-shot.mjs +0 -36
- package/scripts/_dbg-dash-shot.mjs +0 -21
- package/scripts/_dbg-dashboard-shot.mjs +0 -35
- package/scripts/_dbg-dcw-audit.mjs +0 -126
- package/scripts/_dbg-dcw-card-e2e.mjs +0 -108
- package/scripts/_dbg-dcw-channel-ui.mjs +0 -144
- package/scripts/_dbg-dcw-examples.mjs +0 -81
- package/scripts/_dbg-dcw-light-shot.mjs +0 -19
- package/scripts/_dbg-dcw-line-audit.mjs +0 -107
- package/scripts/_dbg-dcw-pause-tpl-audit.mjs +0 -161
- package/scripts/_dbg-dcw-pause-ui.mjs +0 -175
- package/scripts/_dbg-dcw-read-toolface.ts +0 -13
- package/scripts/_dbg-dcw-read-ui.mjs +0 -74
- package/scripts/_dbg-dcw-scene.mjs +0 -72
- package/scripts/_dbg-dcw-shot2.mjs +0 -14
- package/scripts/_dbg-dcw-twin-e2e.mjs +0 -192
- package/scripts/_dbg-diag-mock-loop.mjs +0 -89
- package/scripts/_dbg-diag-watch.mjs +0 -95
- package/scripts/_dbg-docs-site-shot.mjs +0 -32
- package/scripts/_dbg-dsh-probe.mjs +0 -31
- package/scripts/_dbg-dt-interact.mjs +0 -193
- package/scripts/_dbg-error-probe.mjs +0 -54
- package/scripts/_dbg-filter-light-verify.mjs +0 -54
- package/scripts/_dbg-final-acceptance-2.mjs +0 -72
- package/scripts/_dbg-final-acceptance.mjs +0 -192
- package/scripts/_dbg-final-agent-e2e.mjs +0 -151
- package/scripts/_dbg-final-features.mjs +0 -155
- package/scripts/_dbg-final-fixups.mjs +0 -62
- package/scripts/_dbg-final-full-e2e.mjs +0 -218
- package/scripts/_dbg-final-line-e2e.mjs +0 -173
- package/scripts/_dbg-final-shots.mjs +0 -32
- package/scripts/_dbg-final-t6-hitl.mjs +0 -38
- package/scripts/_dbg-final-visual.mjs +0 -29
- package/scripts/_dbg-fix-unused-imports.py +0 -41
- package/scripts/_dbg-focus-range.mjs +0 -115
- package/scripts/_dbg-fresh-scene-e2e.mjs +0 -125
- package/scripts/_dbg-fullchain-e2e.mjs +0 -178
- package/scripts/_dbg-gate-debug.mjs +0 -37
- package/scripts/_dbg-gif-encode.mjs +0 -111
- package/scripts/_dbg-gizmo.mjs +0 -95
- package/scripts/_dbg-glass-probe.mjs +0 -57
- package/scripts/_dbg-glass-shot.mjs +0 -50
- package/scripts/_dbg-glass-sweep.mjs +0 -25
- package/scripts/_dbg-glb-probe.mjs +0 -43
- package/scripts/_dbg-goose-probe.mjs +0 -33
- package/scripts/_dbg-goose-probe.sh +0 -10
- package/scripts/_dbg-hardening-probe.mjs +0 -90
- package/scripts/_dbg-harness-cancel-repro.mjs +0 -81
- package/scripts/_dbg-harness-ui-dbg.py +0 -49
- package/scripts/_dbg-harness-ui-shot.py +0 -109
- package/scripts/_dbg-hero-btn-probe.mjs +0 -21
- package/scripts/_dbg-hidden-check.mjs +0 -21
- package/scripts/_dbg-hmi-audit.mjs +0 -164
- package/scripts/_dbg-home-repro.mjs +0 -24
- package/scripts/_dbg-home-stack.mjs +0 -13
- package/scripts/_dbg-host.mjs +0 -16
- package/scripts/_dbg-huashu-survey.mjs +0 -31
- package/scripts/_dbg-huashu-survey2.mjs +0 -35
- package/scripts/_dbg-huashu-verify.mjs +0 -25
- package/scripts/_dbg-huashu-verify2.mjs +0 -26
- package/scripts/_dbg-hydration-detail.mjs +0 -18
- package/scripts/_dbg-i18n-debug.mjs +0 -27
- package/scripts/_dbg-i18n-debug2.mjs +0 -26
- package/scripts/_dbg-i18n-final.mjs +0 -42
- package/scripts/_dbg-i18n-scan.mjs +0 -38
- package/scripts/_dbg-infra-lifecycle.mjs +0 -44
- package/scripts/_dbg-interval-config.mjs +0 -156
- package/scripts/_dbg-interval-scenario.mjs +0 -126
- package/scripts/_dbg-kicker-check.mjs +0 -11
- package/scripts/_dbg-line-aura-shots.mjs +0 -54
- package/scripts/_dbg-line-control-e2e.mjs +0 -120
- package/scripts/_dbg-line-gate-audit.mjs +0 -108
- package/scripts/_dbg-line-live-e2e.mjs +0 -144
- package/scripts/_dbg-line-repo-test.ts +0 -10
- package/scripts/_dbg-line-scenario-e2e.mjs +0 -256
- package/scripts/_dbg-line-spawn.ts +0 -31
- package/scripts/_dbg-live-engine-probe.mjs +0 -80
- package/scripts/_dbg-login-debug.py +0 -23
- package/scripts/_dbg-login-e2e.mjs +0 -26
- package/scripts/_dbg-logs-ui-e2e.py +0 -126
- package/scripts/_dbg-mcp-bridge-probe.mjs +0 -147
- package/scripts/_dbg-modbus-latency.mjs +0 -22
- package/scripts/_dbg-mqtt-chain-e2e.mjs +0 -90
- package/scripts/_dbg-mqtt-publisher.mjs +0 -17
- package/scripts/_dbg-nav-rpg.mjs +0 -84
- package/scripts/_dbg-nav-shot.mjs +0 -28
- package/scripts/_dbg-nav.mjs +0 -27
- package/scripts/_dbg-oneshot-impl-probe.ts +0 -67
- package/scripts/_dbg-opencode-sse.mjs +0 -101
- package/scripts/_dbg-opencode-start.ts +0 -57
- package/scripts/_dbg-opslog-e2e.mjs +0 -121
- package/scripts/_dbg-opslog-shots.mjs +0 -62
- package/scripts/_dbg-optimization-e2e.mjs +0 -94
- package/scripts/_dbg-orbit.mjs +0 -58
- package/scripts/_dbg-overview-probe.sh +0 -31
- package/scripts/_dbg-panesplitter-fix-check.mjs +0 -62
- package/scripts/_dbg-perms-visual.mjs +0 -36
- package/scripts/_dbg-pg-tcp-probe.cjs +0 -27
- package/scripts/_dbg-phase-e3-monitor.mjs +0 -25
- package/scripts/_dbg-pi-spawn-probe.ts +0 -33
- package/scripts/_dbg-plc-agent-loop.ts +0 -102
- package/scripts/_dbg-plc-e2e.mjs +0 -171
- package/scripts/_dbg-plugin-agent-read.ts +0 -56
- package/scripts/_dbg-plugin-config-ui.mjs +0 -111
- package/scripts/_dbg-plugin-matrix.mjs +0 -212
- package/scripts/_dbg-plugin-panels-ui.mjs +0 -54
- package/scripts/_dbg-plugin-sink-rest.mjs +0 -70
- package/scripts/_dbg-plugin-sink-ui.mjs +0 -81
- package/scripts/_dbg-plugin-tools-inject.ts +0 -80
- package/scripts/_dbg-plugin-ui-wizard.mjs +0 -125
- package/scripts/_dbg-plugin-verify-e2e.mjs +0 -123
- package/scripts/_dbg-plugins-e2e.mjs +0 -101
- package/scripts/_dbg-pop-clamp-verify.mjs +0 -77
- package/scripts/_dbg-preset-e2e.mjs +0 -116
- package/scripts/_dbg-preview-console.mjs +0 -28
- package/scripts/_dbg-preview-minrepro.mjs +0 -156
- package/scripts/_dbg-preview-pixels.mjs +0 -93
- package/scripts/_dbg-prompts-hotreload-test.ts +0 -76
- package/scripts/_dbg-prompts-resolve-test.ts +0 -39
- package/scripts/_dbg-quality-pages-e2e.mjs +0 -84
- package/scripts/_dbg-query-cancel.ts +0 -12
- package/scripts/_dbg-qwen-acp-probe.mjs +0 -30
- package/scripts/_dbg-qwen-capture.mjs +0 -21
- package/scripts/_dbg-rail-tree-e2e.mjs +0 -183
- package/scripts/_dbg-real-driver-e2e.mjs +0 -55
- package/scripts/_dbg-redesign-shots.mjs +0 -34
- package/scripts/_dbg-registry-smoke.ts +0 -14
- package/scripts/_dbg-release-smoke.mjs +0 -104
- package/scripts/_dbg-repo-setup-verify.mjs +0 -31
- package/scripts/_dbg-resolve-probe.ts +0 -6
- package/scripts/_dbg-restart-persist.mjs +0 -41
- package/scripts/_dbg-retention-test.ts +0 -25
- package/scripts/_dbg-rollback-mgr-audit.mjs +0 -169
- package/scripts/_dbg-rpg.mjs +0 -71
- package/scripts/_dbg-sc001-dispatch.mjs +0 -63
- package/scripts/_dbg-scenario-final-shot.mjs +0 -24
- package/scripts/_dbg-scenario-phase-e2.mjs +0 -75
- package/scripts/_dbg-scenario-phase-e3.mjs +0 -96
- package/scripts/_dbg-scenario-phase1.mjs +0 -90
- package/scripts/_dbg-scenario-phase2.mjs +0 -105
- package/scripts/_dbg-scenario-phase3-monitor.mjs +0 -48
- package/scripts/_dbg-scenario-phase3.mjs +0 -111
- package/scripts/_dbg-scene-polish-shot.mjs +0 -118
- package/scripts/_dbg-selring-probe.mjs +0 -47
- package/scripts/_dbg-settings-draft-probe.mjs +0 -39
- package/scripts/_dbg-settings-probe.mjs +0 -33
- package/scripts/_dbg-setup-e2e.mjs +0 -88
- package/scripts/_dbg-sideinfo.mjs +0 -101
- package/scripts/_dbg-sim-keeper.mjs +0 -100
- package/scripts/_dbg-splitter.mjs +0 -88
- package/scripts/_dbg-swatch-check.mjs +0 -10
- package/scripts/_dbg-task-cancel-probe.mjs +0 -66
- package/scripts/_dbg-team-drill.mjs +0 -173
- package/scripts/_dbg-town-alarm-e2e.mjs +0 -40
- package/scripts/_dbg-town-beauty-shots.mjs +0 -54
- package/scripts/_dbg-town-daq-shot.mjs +0 -26
- package/scripts/_dbg-town-full-e2e.mjs +0 -104
- package/scripts/_dbg-town-gate.mjs +0 -44
- package/scripts/_dbg-town-ins-probe.mjs +0 -37
- package/scripts/_dbg-town-perf.mjs +0 -50
- package/scripts/_dbg-town-polish-shots.mjs +0 -82
- package/scripts/_dbg-town-realtime.mjs +0 -42
- package/scripts/_dbg-town-shot.py +0 -25
- package/scripts/_dbg-town-shot3.mjs +0 -17
- package/scripts/_dbg-town-truth.mjs +0 -37
- package/scripts/_dbg-town-truth2.mjs +0 -27
- package/scripts/_dbg-transform-audit.mjs +0 -98
- package/scripts/_dbg-trend-expand-test.mjs +0 -38
- package/scripts/_dbg-twindaq-focus.mjs +0 -81
- package/scripts/_dbg-ui-polish-shot.mjs +0 -43
- package/scripts/_dbg-ui-polish-verify1.mjs +0 -92
- package/scripts/_dbg-ui-polish-verify2.mjs +0 -50
- package/scripts/_dbg-ui-polish-verify3.mjs +0 -51
- package/scripts/_dbg-ui-polish-verify4.mjs +0 -50
- package/scripts/_dbg-ui-shot.mjs +0 -26
- package/scripts/_dbg-ui-shots.mjs +0 -28
- package/scripts/_dbg-ui-survey.py +0 -52
- package/scripts/_dbg-unify-shot.mjs +0 -43
- package/scripts/_dbg-uplink-probe.mjs +0 -36
- package/scripts/_dbg-wizard-preview-shot.mjs +0 -58
- package/scripts/_dbg-wizard-ui-e2e.mjs +0 -93
- package/scripts/_dbg-ws-probe.mjs +0 -86
- package/scripts/_dbg-ws-shot2.mjs +0 -23
- package/scripts/_dbg-wsdot-sanity.mjs +0 -25
- package/scripts/_dev-stack.mjs +0 -46
- package/scripts/_http-driver-probe.mjs +0 -30
- package/scripts/_mqtt-driver-probe.mjs +0 -30
- package/scripts/_newdriver-rest-probe.mjs +0 -100
- package/scripts/_node-state-probe.mjs +0 -5
- package/scripts/_opcua-driver-probe.mjs +0 -31
- package/scripts/_rtu-debug.mjs +0 -41
- package/scripts/_rtu-direct.mjs +0 -6
- package/scripts/_rtu-driver-probe.mjs +0 -53
- package/scripts/_spike-pitui.mjs +0 -116
- package/scripts/_tmp-args-probe.mjs +0 -20
- package/scripts/_tmp-cyc-entry.mjs +0 -8
- package/scripts/_tmp-cyc-main.mjs +0 -5
- package/scripts/_tmp-cyc-mod.mjs +0 -2
- package/scripts/_tmp-cycle-a.mjs +0 -6
- package/scripts/_tmp-cycle-b.mjs +0 -2
- package/scripts/_tmp-cycle-probe.mjs +0 -4
- package/scripts/_tmp-entry-variant.mjs +0 -2
- package/scripts/_tmp-help-probe.mjs +0 -19
- package/scripts/_tmp-help-probe2.mjs +0 -2
- package/scripts/_tmp-trace-preload.mjs +0 -1
- package/scripts/_wizard-shots.mjs +0 -90
- package/scripts/acceptance-suite.py +0 -207
- package/scripts/aml-agent-bridge.ts +0 -230
- package/scripts/aml-industrial-loop.ts +0 -232
- package/scripts/build-film-devices.mjs +0 -227
- package/scripts/collab-live-test.py +0 -177
- package/scripts/debug-mcp-http.ts +0 -64
- package/scripts/demo-lead-worker.ts +0 -256
- package/scripts/demo-modes.ts +0 -415
- package/scripts/demo-omp-channel.ts +0 -135
- package/scripts/design-preflight.mjs +0 -223
- package/scripts/design-verify-templates.mjs +0 -110
- package/scripts/design-verify.mjs +0 -170
- package/scripts/dev-window.cmd +0 -6
- package/scripts/device-line-restore.mjs +0 -34
- package/scripts/diag-lead-status.ts +0 -101
- package/scripts/e2e-a2a-steer-live.mjs +0 -193
- package/scripts/e2e-dual-drive-comm.ts +0 -259
- package/scripts/e2e-full-scenario.ts +0 -321
- package/scripts/e2e-harness-consistency.ts +0 -204
- package/scripts/e2e-harness-provider-task.mjs +0 -126
- package/scripts/e2e-line-live.mjs +0 -144
- package/scripts/e2e-memory-persistence.ts +0 -320
- package/scripts/e2e-omp-modes.ts +0 -274
- package/scripts/e2e-omp-realtime.ts +0 -258
- package/scripts/e2e-plc-scenario.mjs +0 -292
- package/scripts/e2e-real-scenario.mjs +0 -466
- package/scripts/e2e-tab-close.mjs +0 -136
- package/scripts/e2e-token-ui.mjs +0 -149
- package/scripts/final-soup-run.py +0 -192
- package/scripts/final-soup-watch.py +0 -83
- package/scripts/i18n-codemod.mjs +0 -173
- package/scripts/i18n-fix-en.py +0 -28
- package/scripts/i18n-fix-en2.py +0 -31
- package/scripts/i18n-merge.mjs +0 -191
- package/scripts/migrate-local-time.mjs +0 -123
- package/scripts/omp-real-test.py +0 -328
- package/scripts/team-plugins-api-smoke.mjs +0 -149
- package/scripts/test-a2a-relay.mjs +0 -222
- package/scripts/test-aml-integration.ts +0 -159
- package/scripts/test-aml-job.ts +0 -174
- package/scripts/test-aml-unit.ts +0 -184
- package/scripts/test-api-client.ts +0 -108
- package/scripts/test-api-suite.mjs +0 -271
- package/scripts/test-block-consumption.mjs +0 -194
- package/scripts/test-cmd-render.mjs +0 -218
- package/scripts/test-collab-omp.mjs +0 -192
- package/scripts/test-config-precedence.ts +0 -124
- package/scripts/test-context-governor.ts +0 -176
- package/scripts/test-daq-frames.ts +0 -180
- package/scripts/test-daq-minio.ts +0 -77
- package/scripts/test-dedup-logic.ts +0 -132
- package/scripts/test-e2e-collaboration.ts +0 -262
- package/scripts/test-e2e-monitor.ts +0 -192
- package/scripts/test-event-history.ts +0 -112
- package/scripts/test-exec-modes.ts +0 -316
- package/scripts/test-fifo-realtime.mjs +0 -193
- package/scripts/test-final-e2e.mjs +0 -290
- package/scripts/test-goal-summary.ts +0 -202
- package/scripts/test-harness-liveness.ts +0 -109
- package/scripts/test-harness-terminal.ts +0 -164
- package/scripts/test-header-trail.mjs +0 -95
- package/scripts/test-hitl.ts +0 -360
- package/scripts/test-koda-restyle.mjs +0 -105
- package/scripts/test-lane-raw.ts +0 -67
- package/scripts/test-lanes-history-render.mjs +0 -138
- package/scripts/test-loop-omp.mjs +0 -154
- package/scripts/test-mdlite.ts +0 -53
- package/scripts/test-memory-brief-chronicle.ts +0 -180
- package/scripts/test-memory-rrf-mmr.ts +0 -114
- package/scripts/test-mock-collab.mjs +0 -226
- package/scripts/test-modern-render.mjs +0 -174
- package/scripts/test-omp-terminal.mjs +0 -187
- package/scripts/test-plugin-ext.ts +0 -173
- package/scripts/test-prompts-loader.ts +0 -56
- package/scripts/test-real-scenario.mjs +0 -290
- package/scripts/test-stream-render.ts +0 -37
- package/scripts/test-task-drawer.mjs +0 -204
- package/scripts/test-task-invariants.mjs +0 -169
- package/scripts/test-town-3d.mjs +0 -121
- package/scripts/test-town-layout.mjs +0 -200
- package/scripts/test-town-page.mjs +0 -136
- package/scripts/test-town-scene-math.ts +0 -169
- package/scripts/test-town-twin.mjs +0 -121
- package/scripts/test-town-upload.mjs +0 -89
- package/scripts/test-town-user-flow.mjs +0 -619
- package/scripts/test-town-world.mjs +0 -76
- package/scripts/test-town-wuwa.mjs +0 -198
- package/scripts/test-user-isolation.mjs +0 -193
- package/scripts/test-workshop-entries.ts +0 -370
- package/scripts/test-workspace-api.ts +0 -329
- package/scripts/test-ws-aep.mjs +0 -187
- package/scripts/test-ws-protocol.ts +0 -134
- package/scripts/town-demo-seed.mjs +0 -75
- package/scripts/town-scene-clear.mjs +0 -56
- package/scripts/verify-exec-modes-report.ts +0 -248
- package/scripts/verify-lead-mail.ts +0 -188
- package/scripts/verify-page-smoke.mjs +0 -87
- package/scripts/ws-test.mjs +0 -176
- package/scripts/ws-test.py +0 -4
|
@@ -1 +0,0 @@
|
|
|
1
|
-
x
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// scratch audit command (registration target experiment)
|
|
2
|
-
export const meta = {
|
|
3
|
-
name: 'hello-audit',
|
|
4
|
-
group: 'audit',
|
|
5
|
-
summary: 'hello from audit scratch',
|
|
6
|
-
needsProject: false,
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export async function run() {
|
|
10
|
-
console.log('hello-audit ok')
|
|
11
|
-
return 0
|
|
12
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readdirSync, rmSync } from 'node:fs'
|
|
2
|
-
|
|
3
|
-
const target = new URL('./.tmp/server/', import.meta.url)
|
|
4
|
-
console.log('[diag] entry file url =', import.meta.url)
|
|
5
|
-
console.log('[diag] rm target =', target.href)
|
|
6
|
-
console.log('[diag] before rm exists =', existsSync(target))
|
|
7
|
-
rmSync(target, { recursive: true, force: true })
|
|
8
|
-
console.log('[diag] after rm exists =', existsSync(target))
|
|
9
|
-
mkdirSync(new URL('./.tmp/server/data/', import.meta.url), { recursive: true })
|
|
10
|
-
|
|
11
|
-
const chdirTo = new URL('./.tmp/', import.meta.url).pathname.replace(/^\//, '')
|
|
12
|
-
console.log('[diag] chdir target =', chdirTo)
|
|
13
|
-
process.chdir(chdirTo)
|
|
14
|
-
console.log('[diag] cwd =', process.cwd())
|
|
15
|
-
console.log('[diag] cwd contents =', readdirSync(process.cwd()))
|
|
16
|
-
|
|
17
|
-
const mod = await import('../../server/services/workshop/dcw/recipe-rollback.repo')
|
|
18
|
-
const repo = new mod.RecipeRollBackRepo()
|
|
19
|
-
console.log('[diag] ledger stats =', JSON.stringify(repo.stats()))
|
|
20
|
-
console.log('[diag] data dir contents =', readdirSync(new URL('./.tmp/server/data/', import.meta.url)))
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { existsSync, readdirSync, statSync } from 'node:fs'
|
|
2
|
-
import path from 'node:path'
|
|
3
|
-
|
|
4
|
-
process.chdir(new URL('./.tmp/', import.meta.url).pathname.replace(/^\//, ''))
|
|
5
|
-
console.log('[diag2] cwd =', process.cwd())
|
|
6
|
-
console.log('[diag2] dir listing =', readdirSync(path.join(process.cwd(), 'server', 'data')))
|
|
7
|
-
const guess = path.join(process.cwd(), 'server', 'data', 'dcw-rollback.json')
|
|
8
|
-
console.log('[diag2] guessed ROLLBACK_PATH exists =', existsSync(guess))
|
|
9
|
-
|
|
10
|
-
const mod = await import('../../server/services/workshop/dcw/recipe-rollback.repo')
|
|
11
|
-
const repo = new mod.RecipeRollBackRepo()
|
|
12
|
-
const first = repo.listAnchors({ limit: 2 })
|
|
13
|
-
const last = repo.listAnchors({ limit: 2 })
|
|
14
|
-
console.log('[diag2] stats =', JSON.stringify(repo.stats()))
|
|
15
|
-
console.log('[diag2] first anchors =', JSON.stringify(first.map(a => ({ id: a.id, at: a.at, node: a.nodeId }))))
|
|
16
|
-
console.log('[diag2] exists after import =', existsSync(guess), existsSync(guess) ? statSync(guess).size : 0)
|
|
17
|
-
console.log('[diag2] dir listing after import =', readdirSync(path.join(process.cwd(), 'server', 'data')))
|
|
18
|
-
const repo2 = new mod.RecipeRollBackRepo()
|
|
19
|
-
console.log('[diag2] second instance stats =', JSON.stringify(repo2.stats()))
|
package/scripts/_audit/hello.mjs
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// scratch audit command (registration target experiment)
|
|
2
|
-
export const meta = {
|
|
3
|
-
name: 'hello-audit',
|
|
4
|
-
group: 'audit',
|
|
5
|
-
summary: 'hello from audit scratch',
|
|
6
|
-
needsProject: false,
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export async function run() {
|
|
10
|
-
console.log('hello-audit ok')
|
|
11
|
-
return 0
|
|
12
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Audit repro (read-only w.r.t. product source).
|
|
3
|
-
*
|
|
4
|
-
* Sandbox blocks `spawn()` with piped stdio (EPERM on named pipes), so this drives the
|
|
5
|
-
* accumulation loop with a synthetic EventEmitter instead of a real child: it delivers
|
|
6
|
-
* the SAME chunk sequence the OS pipe delivers when one logical NDJSON line exceeds the
|
|
7
|
-
* pipe read size (64 KiB) — i.e. a JSON object split across two `data` events.
|
|
8
|
-
*
|
|
9
|
-
* Logic under test is copied verbatim from
|
|
10
|
-
* server/services/workshop/agents/adapters/one-shot-cli-agent.ts:404-428
|
|
11
|
-
* and the correct reference from
|
|
12
|
-
* server/services/workshop/agents/adapters/stdio-jsonrpc.ts:234-252
|
|
13
|
-
*/
|
|
14
|
-
import { EventEmitter } from 'node:events'
|
|
15
|
-
|
|
16
|
-
const tryParse = (line) => { try { return JSON.parse(line) } catch { return null } }
|
|
17
|
-
|
|
18
|
-
/** 2 chunks of one NDJSON stream; chunk #1 ends mid-JSON-object. */
|
|
19
|
-
const CHUNKS = [
|
|
20
|
-
'{"type":"message","role":"assistant","content":"hello wor',
|
|
21
|
-
'ld"}\n{"type":"result","usage":{"input_tokens":42}}\n',
|
|
22
|
-
]
|
|
23
|
-
|
|
24
|
-
function feed(onData) {
|
|
25
|
-
const s = new EventEmitter()
|
|
26
|
-
s.setEncoding = () => {}
|
|
27
|
-
const p = new Promise((r) => s.on('end', r))
|
|
28
|
-
onData(s)
|
|
29
|
-
queueMicrotask(() => {
|
|
30
|
-
for (const c of CHUNKS) s.emit('data', c)
|
|
31
|
-
s.emit('end')
|
|
32
|
-
})
|
|
33
|
-
return p
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// ---- A. verbatim copy of one-shot-cli-agent.ts:404-428 (plainTextStdout !== true) ----
|
|
37
|
-
const aFrames = []
|
|
38
|
-
const aDeltas = []
|
|
39
|
-
const aDrops = []
|
|
40
|
-
await feed((s) => {
|
|
41
|
-
s.on('data', (chunk) => {
|
|
42
|
-
for (const rawLine of chunk.split(/\r?\n/)) {
|
|
43
|
-
const line = rawLine.trim()
|
|
44
|
-
if (!line) continue
|
|
45
|
-
const json = tryParse(line)
|
|
46
|
-
if (json === null) {
|
|
47
|
-
aDrops.push(line)
|
|
48
|
-
continue
|
|
49
|
-
}
|
|
50
|
-
aFrames.push(json.type)
|
|
51
|
-
if (json.type === 'message') aDeltas.push(json.content)
|
|
52
|
-
}
|
|
53
|
-
})
|
|
54
|
-
})
|
|
55
|
-
|
|
56
|
-
// ---- B. verbatim copy of stdio-jsonrpc.ts:234-252 (buffered) ----
|
|
57
|
-
const bFrames = []
|
|
58
|
-
let buf = ''
|
|
59
|
-
await feed((s) => {
|
|
60
|
-
s.on('data', (data) => {
|
|
61
|
-
buf += data
|
|
62
|
-
const lines = buf.split('\n')
|
|
63
|
-
buf = lines.pop() ?? ''
|
|
64
|
-
for (const line of lines) {
|
|
65
|
-
const trimmed = line.trim()
|
|
66
|
-
if (!trimmed) continue
|
|
67
|
-
const json = tryParse(trimmed)
|
|
68
|
-
if (json === null) continue
|
|
69
|
-
bFrames.push(json.type)
|
|
70
|
-
}
|
|
71
|
-
})
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
console.log('A one-shot-cli-agent.ts loop : frames=%d %j drops=%d %j assistantText=%j',
|
|
75
|
-
aFrames.length, aFrames, aDrops.length, aDrops, aDeltas.join(''))
|
|
76
|
-
console.log('B stdio-jsonrpc.ts loop : frames=%d %j', bFrames.length, bFrames)
|
|
77
|
-
console.log('VERDICT: one-shot loses %d/%d frames and the entire assistant message.', 2 - aFrames.length, 2)
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Audit repro: `await` binds tighter than `?:`, so the expression at
|
|
3
|
-
* server/services/workshop/agents/opencode-agent.ts:805-808 yields a Promise, never the
|
|
4
|
-
* resolved session object.
|
|
5
|
-
*/
|
|
6
|
-
const DEFAULT_PERMISSION = [{ permission: 'edit' }]
|
|
7
|
-
|
|
8
|
-
const api = async (path, body) => ({ id: 'ses_real', echo: body })
|
|
9
|
-
const createWith = (extra) => api('/session', { ...extra })
|
|
10
|
-
|
|
11
|
-
const created = await (DEFAULT_PERMISSION) // <- `await` applies ONLY to the condition
|
|
12
|
-
? createWith({ permission: DEFAULT_PERMISSION }).catch(() => createWith(undefined))
|
|
13
|
-
: createWith(undefined)
|
|
14
|
-
|
|
15
|
-
console.log('typeof created =', typeof created)
|
|
16
|
-
console.log('created instanceof Promise=', created instanceof Promise)
|
|
17
|
-
console.log('created?.id =', created?.id)
|
|
18
|
-
const sessionId = String(created?.id ?? '')
|
|
19
|
-
console.log('this.sessionId =', JSON.stringify(sessionId))
|
|
20
|
-
console.log('if (!this.sessionId) =', !sessionId, '-> enters 3x retry loop, then throws')
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
- **Evidence**: the PATCH authenticates and then mutates by **row id** with no ownership, line, or role check 鈥?no `lineMode`, no verification that the binding belongs to a channel the caller can see:
|
|
2
|
-
|
|
3
|
-
```ts
|
|
4
|
-
// bindings/[id].patch.ts:9-14
|
|
5
|
-
export default defineApiHandler(async (event) => {
|
|
6
|
-
resolveUser(event)
|
|
7
|
-
const id = getRouterParam(event, 'id')!
|
|
8
|
-
const body = await readBody<{ mode?: 'auto' | 'manual' }>(event) ?? {}
|
|
9
|
-
return { binding: getAgentNodeBindingRepo().setMode(id, body.mode ?? 'auto') }
|
|
10
|
-
})
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
The DELETE is the same, and it additionally force-denies the target agent's in-flight approval:
|
|
14
|
-
|
|
15
|
-
```ts
|
|
16
|
-
// bindings/[id].delete.ts:10-20
|
|
17
|
-
export default defineApiHandler(async (event) => {
|
|
18
|
-
resolveUser(event)
|
|
19
|
-
const id = getRouterParam(event, 'id')!
|
|
20
|
-
const repo = getAgentNodeBindingRepo()
|
|
21
|
-
const all = repo.all()
|
|
22
|
-
const binding = all.find(b => b.id === id)
|
|
23
|
-
if (!binding) throw createError({ statusCode: 404, statusMessage: 'binding not found' })
|
|
24
|
-
if (!repo.unbind(id)) throw createError({ statusCode: 404, statusMessage: 'binding not found' })
|
|
25
|
-
// 瑙g粦鍗冲け鏁?璇?Agent 瀵硅鑺傜偣鐨勬寕璧峰鎵规寜鎷掔粷鏀舵暃(tool result 娉ㄦ槑鍘熷洜)
|
|
26
|
-
getToolApprovals().cancelPendingFor(binding.agentId, binding.nodeId)
|
|
27
|
-
return { ok: true }
|
|
28
|
-
})
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Note the contrast with the **create** path, which *does* check the line:
|
|
32
|
-
`bindings/index.post.ts:28-32` `const mode = lineMode(user, lineId); if (mode === 'none' || (needOperate && mode !== 'operate')) throw new AppError(403, 'LINE_FORBIDDEN', 鈥?`.
|
|
33
|
-
|
|
34
|
-
- **Impact**: the entire manual-approval safety model is one unauthenticated-by-ownership PATCH away from being disabled.
|
|
35
|
-
Any authenticated user who learns a binding id 鈥?and ids are enumerable for free, see the next finding 鈥?can flip a
|
|
36
|
-
`dcw` binding from `manual` to `auto`, permanently removing human approval for that agent/node pair (the tool then takes
|
|
37
|
-
the `binding.mode === 'manual'` branch at `industrial-tools.ts:128` as false and writes immediately at `:157`). The
|
|
38
|
-
DELETE variant is worse in effect: it unbinds a *victim's* agent and cancels that agent's **pending approvals**
|
|
39
|
-
(`cancelPendingFor` 鈫?`tool-approvals.ts:112-127` resolves them as `denied` with `'缁戝畾宸茶В闄?瀹℃壒澶辨晥'`), so an
|
|
40
|
-
attacker can silently veto a write an operator was about to authorise, and the audit trail blames a binding change.
|
|
41
|
-
|
|
42
|
-
- **Fix**: in both handlers resolve the binding first, derive its node, and enforce `requireLineMode(user, nodeLine, 'operate')`
|
|
43
|
-
(same predicate as `bindings/index.post.ts:28-32`); additionally assert the caller owns or can read the agent's channel.
|
|
44
|
-
Minimal version for PATCH: `const b = repo.all().find(x => x.id === id); requireLineMode(user, nodeLineOf(b), 'operate')`.
|
|
45
|
-
|
|
46
|
-
- **Verification**: as a `role:'user'` with `readonly` (or no) grant on the target line,
|
|
47
|
-
`PATCH /api/workshop/agent-tools/bindings/<id> {"mode":"auto"}` 鈫?expect 403; today it returns 200 and
|
|
48
|
-
`GET 鈥?bindings?agentId=<victim>` shows `mode: "auto"`. Static:
|
|
49
|
-
`rg -n "lineMode|requireLineMode|requireRole" server/api/workshop/agent-tools/bindings/\[id\].patch.ts` 鈫?0 hits today.
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
### [P0] `GET /api/workshop/agent-tools/bindings` enumerates every agent's node grants to any user
|
|
54
|
-
|
|
55
|
-
- **Where**: `server/api/workshop/agent-tools/bindings/index.get.ts:9-13`
|
|
56
|
-
|
|
57
|
-
- **Evidence**:
|
|
58
|
-
|
|
59
|
-
```ts
|
|
60
|
-
// bindings/index.get.ts:12-13
|
|
61
|
-
const agentId = typeof q.agentId === 'string' ? q.agentId : ''
|
|
62
|
-
return { bindings: agentId ? getAgentNodeBindingRepo().byAgent(agentId) : getAgentNodeBindingRepo().all() }
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
`.all()` returns the entire global binding table 鈥?`agentId`, `nodeId`, `kind`, `mode`, `id`
|
|
66
|
-
(`node-bindings.repo.ts:22-29,48-50`) 鈥?for every agent in every channel, to **any** authenticated user with no line or
|
|
67
|
-
ownership filter. Omitting `agentId` is the leak; supplying one is a targeted lookup.
|
|
68
|
-
|
|
69
|
-
- **Impact**: this is the enumeration primitive that makes the previous two findings trivially exploitable 鈥?it hands the
|
|
70
|
-
attacker the exact binding `id` (needed by the `[id].patch`/`[id].delete` endpoints) plus which agents control which
|
|
71
|
-
physical nodes. It also discloses the full plant's agent鈫攁ctuator map, which is sensitive operational topology: an
|
|
72
|
-
attacker learns which `nodeId` values are `kind:'dcw'` (writable) and which are `manual` (approval-gated) versus `auto`.
|
|
73
|
-
|
|
74
|
-
- **Fix**: require `agentId`, and filter the result through `filterByLine(user, 鈥?` on the node's line (or the agent's
|
|
75
|
-
channel ownership); only `admin`/`editor` may call it without a filter 鈥?mirroring `agents/index.get.ts:11`'s
|
|
76
|
-
`listAgentsVisibleTo(user)` pattern.
|
|
77
|
-
|
|
78
|
-
- **Verification**: as a `role:'user'` with no grants, `GET /api/workshop/agent-tools/bindings` (no query) 鈫?today returns
|
|
79
|
-
every binding; after the fix expect 400 or an empty/filtered list.
|
|
80
|
-
Static: `rg -n "filterByLine|lineMode|visibleLineIds" server/api/workshop/agent-tools/bindings/index.get.ts` 鈫?0 hits.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
### [P1] Industrial GET handlers return cross-line data (no `filterByLine`)
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# Audit 鈥?Agent runtime integration + node-binding access control
|
|
2
|
-
|
|
3
|
-
Scope: `server/services/workshop/agents/**`, `server/services/workshop/runtime/**`, `server/services/workshop/permissions.ts`,
|
|
4
|
-
`server/api/workshop/agents/**`, `server/api/workshop/agent-tools/**`, `server/api/workshop/runtime.get.ts`, related repos.
|
|
5
|
-
Read-only audit. Working tree unmodified. Scratch: `scripts/_audit/`.
|
|
6
|
-
|
|
7
|
-
Legend: **P0** = authz hole / unsafe mutation / leak 路 **P1** = correctness/perf 路 **P2** = duplication/hygiene.
|
|
8
|
-
`鈿燯NVERIFIED` marks a claim not personally confirmed against source.
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Executive summary
|
|
13
|
-
|
|
14
|
-
| # | Severity | Finding | Anchor |
|
|
15
|
-
|---|---|---|---|
|
|
16
|
-
| 1 | **P0** | `dcw_rollback(node_id=鈥?` writes a DCW node with **no binding check** and **no HITL approval** | `industrial-tools.ts:401-420`, `recipe-rollback-manager.ts:253-279` |
|
|
17
|
-
| 2 | **P0** | Manual-mode binding promise ("姣忔鎵ц闇€鐢ㄦ埛鎵瑰噯") is bypassed by the rollback path | `dcw-controller.ts:503-517`, `recipe-rollback-manager.ts:403-410` |
|
|
18
|
-
| 3 | **P0** | Any authenticated dashboard user can invoke **any tool as any `agentId`** on the tool bridge (incl. arbitrary Python via `aml_job_submit`) | `agent-tools/invoke.post.ts:16-26`, `manager.ts:2746-2752`, `industrial-tools.ts:1150-1170` |
|
|
19
|
-
| 4 | **P0** | `dcw_judge`/`dcw_rollback` accept takeover of **stale records on unbound nodes** (write path) | `industrial-tools.ts:381-383,413-416` |
|
|
20
|
-
| 5 | **P0** | `PATCH`/`DELETE /agent-tools/bindings/:id` let any user flip any binding to `auto` (= strip HITL) or cancel another agent's pending approvals | `bindings/[id].patch.ts:9-14`, `bindings/[id].delete.ts:10-20` |
|
|
21
|
-
| 6 | **P0** | `GET /agent-tools/bindings` (no query) returns the whole global agent鈫攏ode grant table to any user 鈥?the enumeration primitive for #5 | `bindings/index.get.ts:12-13` |
|
|
22
|
-
| 7 | P1 | Industrial GET handlers return cross-line recipes/runs/alarms/ledgers (no `filterByLine`) | `dcw/recipes/index.get.ts:8-11`, `daq/alarms.get.ts:10-15` |
|
|
23
|
-
| 8 | P1 | `GET /api/workshop/channels/:id` boots runtimes and mutates the messages table | `channels/[id]/index.get.ts:16`, `manager.ts:694-720` |
|
|
24
|
-
| 9 | P1 | `GET /api/workshop/workspaces` DELETEs rows from inside a `.filter()` callback | `manager.ts:1125-1129` |
|
|
25
|
-
| 10 | P1 | `GET /api/workshop/daq` inserts node rows and starts the 250 ms acquisition timer | `daq/index.get.ts:20-22`, `daq-controller.ts:1146-1163` |
|
|
26
|
-
| 11 | P1 | Scheduler tick scans the channel's entire task history, every tick | `task-engine.ts:137-139`, `task.repo.ts:80` |
|
|
27
|
-
| 12 | P1 | NDJSON partial-line handling missing in the shared base used by 13 harnesses | `one-shot-cli-agent.ts:406-428` |
|
|
28
|
-
| 13 | P1 | `runMemoryMaintenance` still does `limit=1_000_000` + JS-filter per agent | `runtime/memory.ts:668-674` |
|
|
29
|
-
| 14 | P1 | `reflectCounts` / `lastToolInvokeAt` / `ownerNameCache` / `nameCache` / `probeCache` / `runErrorRetries` / `idleSince` are unbounded | 搂3 |
|
|
30
|
-
| 15 | P1 | `limit: 1_000_000` / `10_000` to fetch one memory row by id | `manager.ts:1489`, `:1552` |
|
|
31
|
-
| 16 | P1 | `pickReceiverWorker` does one task query per candidate (N+1) | `manager.ts:1744-1757` |
|
|
32
|
-
| 17 | P1 | Renaming/disabling a *busy* member silently has no effect (disabled workers keep working) | `manager.ts:1571-1581`, `:745-749` |
|
|
33
|
-
| 18 | P1 | No cap on concurrent agent child processes / sessions | 搂7 |
|
|
34
|
-
| 19 | P2 | 12+ adapters duplicate spawn/env/parse/kill/queue logic instead of declaring a spec | 搂8 |
|
|
35
|
-
| 20 | P2 | `manager.ts` (3016 lines) mixes 16 unrelated subsystems | 搂9 |
|
|
36
|
-
| 21 | P2 | `harness-models.opencodeCatalog` leaks temp dirs containing copied provider credentials | `harness-models.ts:133,143` |
|
|
37
|
-
|
|
38
|
-
**Q1 answer (short):** the binding **is** enforced on `dcw_control` / `dcw_read` / `daq_query` / `daq_frames` / `dcw_journal` /
|
|
39
|
-
`ops_log` / `recipe_log` / `aml_*`. It is **NOT** enforced on `dcw_rollback` and is only *partially* enforced on
|
|
40
|
-
`dcw_judge`. Unbound agents therefore **do not** get a default-allow on `dcw_control` (good), but they **do** get one on
|
|
41
|
-
the rollback write path (P0). There is no "no bindings 鈬?allow all" fallback anywhere.
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
### [P0] `dcw_rollback` writes any DCW node without any node-binding check
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// audit probe: child-lifecycle signal semantics
|
|
2
|
-
import { runChild, signalExitCode, SHUTDOWN_GRACE_MS } from '../../cli/core/child-lifecycle.mjs'
|
|
3
|
-
|
|
4
|
-
console.log('signalExitCode(SIGINT) =', signalExitCode('SIGINT'))
|
|
5
|
-
console.log('signalExitCode(SIGTERM) =', signalExitCode('SIGTERM'))
|
|
6
|
-
console.log('signalExitCode(SIGKILL) =', signalExitCode('SIGKILL'))
|
|
7
|
-
console.log('signalExitCode(SIGWEIRD) =', signalExitCode('SIGWEIRD'))
|
|
8
|
-
console.log('SHUTDOWN_GRACE_MS =', SHUTDOWN_GRACE_MS)
|
|
9
|
-
|
|
10
|
-
const normal = await runChild(process.execPath, ['-e', 'process.exit(7)'], { stdio: 'inherit' })
|
|
11
|
-
console.log('normal child exit 7 ->', normal)
|
|
12
|
-
|
|
13
|
-
const selfKill = await runChild(process.execPath, ['-e', 'process.kill(process.pid, "SIGTERM")'], { stdio: 'inherit' })
|
|
14
|
-
console.log('self-SIGTERM child ->', selfKill, '(POSIX convention would be 143)')
|
|
15
|
-
|
|
16
|
-
const missing = await runChild(process.execPath, ['-e', ''], { stdio: 'inherit' })
|
|
17
|
-
console.log('clean child ->', missing)
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
// audit probe: SDK envelope handling — api.mjs vs client.mjs ctx.fetch (fixed document stub)
|
|
2
|
-
import { createServer } from 'node:http'
|
|
3
|
-
import { createPlatformClient } from '../../sdk/api.mjs'
|
|
4
|
-
|
|
5
|
-
const srv = createServer((req, res) => {
|
|
6
|
-
res.setHeader('content-type', 'application/json')
|
|
7
|
-
if (req.url.startsWith('/api/biz-error')) {
|
|
8
|
-
res.end(JSON.stringify({ code: 'LINE_FORBIDDEN', message: '无该产线权限', data: null }))
|
|
9
|
-
return
|
|
10
|
-
}
|
|
11
|
-
if (req.url.startsWith('/api/http-500')) {
|
|
12
|
-
res.statusCode = 500
|
|
13
|
-
res.end(JSON.stringify({ code: 'INTERNAL_ERROR', message: '服务器内部错误', data: null }))
|
|
14
|
-
return
|
|
15
|
-
}
|
|
16
|
-
res.end(JSON.stringify({ code: 0, message: 'ok', data: { hello: 'world' } }))
|
|
17
|
-
})
|
|
18
|
-
await new Promise(r => srv.listen(0, '127.0.0.1', r))
|
|
19
|
-
const base = `http://127.0.0.1:${srv.address().port}`
|
|
20
|
-
|
|
21
|
-
globalThis.document = {
|
|
22
|
-
cookie: '',
|
|
23
|
-
addEventListener() {},
|
|
24
|
-
removeEventListener() {},
|
|
25
|
-
createElement: () => ({ style: {}, setAttribute() {}, append() {}, addEventListener() {} }),
|
|
26
|
-
getElementById: () => null,
|
|
27
|
-
body: { append() {} },
|
|
28
|
-
visibilityState: 'visible',
|
|
29
|
-
}
|
|
30
|
-
const { createClientContext } = await import('../../sdk/client.mjs')
|
|
31
|
-
const cctx = createClientContext({ name: 'probe', baseUrl: base })
|
|
32
|
-
console.log('ctx.fetch(/api/ok) ->', JSON.stringify(await cctx.fetch('/api/ok')))
|
|
33
|
-
try {
|
|
34
|
-
const r = await cctx.fetch('/api/biz-error')
|
|
35
|
-
console.log(`ctx.fetch(/api/biz-error) -> NO THROW, returned ${JSON.stringify(r)} <-- business error swallowed`)
|
|
36
|
-
}
|
|
37
|
-
catch (err) {
|
|
38
|
-
console.log(`ctx.fetch(/api/biz-error) -> threw: status=${err.status} code=${err.code} message=${err.message}`)
|
|
39
|
-
}
|
|
40
|
-
try {
|
|
41
|
-
await cctx.fetch('/api/http-500')
|
|
42
|
-
console.log('ctx.fetch(/api/http-500) -> NO THROW (bug)')
|
|
43
|
-
}
|
|
44
|
-
catch (err) {
|
|
45
|
-
console.log(`ctx.fetch(/api/http-500) -> threw: status=${err.status} code=${err.code} hasBody=${'body' in err}`)
|
|
46
|
-
}
|
|
47
|
-
srv.closeAllConnections?.()
|
|
48
|
-
await new Promise(r => srv.close(r))
|
|
49
|
-
process.exit(0)
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
// audit probe: packlist-equivalent check of package.json "files" vs "exports" + transitive relative imports
|
|
2
|
-
import { readFileSync, existsSync, statSync } from 'node:fs'
|
|
3
|
-
import { dirname, join, resolve, relative } from 'node:path'
|
|
4
|
-
|
|
5
|
-
const ROOT = resolve(process.cwd())
|
|
6
|
-
const pkg = JSON.parse(readFileSync(join(ROOT, 'package.json'), 'utf8'))
|
|
7
|
-
const files = pkg.files ?? []
|
|
8
|
-
|
|
9
|
-
const under = (rel, entry) => {
|
|
10
|
-
const e = entry.replace(/^\.\//, '').replace(/\/$/, '')
|
|
11
|
-
if (rel === e) return true
|
|
12
|
-
if (rel.startsWith(`${e}/`)) return true
|
|
13
|
-
return false
|
|
14
|
-
}
|
|
15
|
-
const covered = rel => files.some(f => under(rel, f))
|
|
16
|
-
const cov = rel => covered(rel) ? 'COVERED' : '*** NOT-COVERED ***'
|
|
17
|
-
|
|
18
|
-
console.log('== exports targets vs "files" whitelist ==')
|
|
19
|
-
const targets = []
|
|
20
|
-
for (const [key, val] of Object.entries(pkg.exports ?? {})) {
|
|
21
|
-
for (const [cond, p] of Object.entries(val)) {
|
|
22
|
-
if (typeof p !== 'string' || !p.startsWith('./')) continue
|
|
23
|
-
targets.push(p.slice(2))
|
|
24
|
-
console.log(` ${codepoint(p)} ${key} (${cond}) -> ${p.slice(2)}: ${cov(p.slice(2))}`)
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
for (const [name, p] of Object.entries(pkg.bin ?? {})) {
|
|
28
|
-
console.log(` bin ${name} -> ${p}: ${cov(p)}`)
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// always included by npm regardless of "files"
|
|
32
|
-
const always = ['package.json', 'README.md', 'README-zh.md', 'LICENSE', '.npmrc', '.gitignore']
|
|
33
|
-
console.log('\n== named dependencies (.npmrc/.gitignore are NEVER shipped) ==')
|
|
34
|
-
for (const f of always) console.log(` ${f}: ${existsSync(join(ROOT, f)) ? (covered(f) ? 'in files' : 'not in files (npm default rules apply)') : 'absent'}`)
|
|
35
|
-
|
|
36
|
-
// transitive relative-import scan from entry points
|
|
37
|
-
const entries = [...new Set([...targets, ...Object.values(pkg.bin ?? {})])]
|
|
38
|
-
const seen = new Set()
|
|
39
|
-
const missing = []
|
|
40
|
-
const specRe = /(?:from\s*|import\s*\(\s*|import\s+)['"]([^'"]+)['"]/g
|
|
41
|
-
|
|
42
|
-
function scan(rel) {
|
|
43
|
-
if (seen.has(rel)) return
|
|
44
|
-
seen.add(rel)
|
|
45
|
-
const abs = join(ROOT, rel)
|
|
46
|
-
if (!existsSync(abs) || !statSync(abs).isFile()) { missing.push(`${rel} (does not exist)`); return }
|
|
47
|
-
if (!covered(rel)) missing.push(`${rel} (not covered by "files")`)
|
|
48
|
-
if (!/\.(mjs|js|cjs|d\.mts|mts)$/.test(rel)) return
|
|
49
|
-
const src = readFileSync(abs, 'utf8')
|
|
50
|
-
for (const m of src.matchAll(specRe)) {
|
|
51
|
-
const spec = m[1]
|
|
52
|
-
if (spec.startsWith('node:') || spec.startsWith('@/') || !spec.startsWith('.')) continue
|
|
53
|
-
const target = resolve(dirname(abs), spec)
|
|
54
|
-
const relTarget = relative(ROOT, target).replace(/\\/g, '/')
|
|
55
|
-
scan(relTarget)
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
for (const e of entries) scan(e.replace(/^\.\//, ''))
|
|
60
|
-
console.log(`\n== transitive relative-import graph: ${seen.size} files reached from ${entries.length} entry points ==`)
|
|
61
|
-
if (missing.length) {
|
|
62
|
-
console.log('PROBLEMS:')
|
|
63
|
-
for (const m of [...new Set(missing)]) console.log(' ' + m)
|
|
64
|
-
}
|
|
65
|
-
else { console.log(' every reached file exists and is covered by "files"') }
|
|
66
|
-
|
|
67
|
-
function codepoint(s) { return s.padEnd(22) }
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
// audit probe: compare SDK createPlatformClient paths against the live server (route existence only)
|
|
2
|
-
// A route that exists but requires auth answers 401/UNAUTHORIZED; a missing route answers 404/NOT_FOUND.
|
|
3
|
-
const BASE = process.env.AW_PROBE_BASE ?? 'http://127.0.0.1:3001'
|
|
4
|
-
|
|
5
|
-
const probes = [
|
|
6
|
-
['users.list', 'GET', '/api/users'],
|
|
7
|
-
['users.get', 'GET', '/api/users/__nonexistent__'],
|
|
8
|
-
['users.update(PATCH)', 'PATCH', '/api/users/__nonexistent__'],
|
|
9
|
-
['users.update(PUT)', 'PUT', '/api/users/__nonexistent__'],
|
|
10
|
-
['users.me', 'GET', '/api/users/me'],
|
|
11
|
-
['lines.list', 'GET', '/api/workshop/dcw/lines'],
|
|
12
|
-
['lines.get', 'GET', '/api/workshop/dcw/lines/__nonexistent__'],
|
|
13
|
-
['products.list', 'GET', '/api/workshop/dcw/products'],
|
|
14
|
-
['products.get', 'GET', '/api/workshop/dcw/products/__nonexistent__'],
|
|
15
|
-
['recipes.list', 'GET', '/api/workshop/dcw/recipes'],
|
|
16
|
-
['dcwNodes.list', 'GET', '/api/workshop/dcw'],
|
|
17
|
-
['dcwNodes.get', 'GET', '/api/workshop/dcw/__nonexistent__'],
|
|
18
|
-
['daqNodes.list', 'GET', '/api/workshop/daq'],
|
|
19
|
-
['daqNodes.get', 'GET', '/api/workshop/daq/__nonexistent__'],
|
|
20
|
-
['daqNodes.alarms', 'GET', '/api/workshop/daq/alarms'],
|
|
21
|
-
['twins.list', 'GET', '/api/workshop/device-twins'],
|
|
22
|
-
['twins.get', 'GET', '/api/workshop/device-twins/__nonexistent__'],
|
|
23
|
-
['teams.list', 'GET', '/api/workshop/teams'],
|
|
24
|
-
['teams.get', 'GET', '/api/workshop/teams/__nonexistent__'],
|
|
25
|
-
['agents.list', 'GET', '/api/workshop/agents'],
|
|
26
|
-
['channels.list', 'GET', '/api/workshop/channels'],
|
|
27
|
-
['permissions.overview', 'GET', '/api/workshop/permissions'],
|
|
28
|
-
['plugins.manifest', 'GET', '/api/plugins/manifest'],
|
|
29
|
-
['ping(=manifest)', 'GET', '/api/plugins/manifest'],
|
|
30
|
-
['templates.daq', 'GET', '/api/workshop/daq'],
|
|
31
|
-
['templates.dcw', 'GET', '/api/workshop/dcw'],
|
|
32
|
-
]
|
|
33
|
-
|
|
34
|
-
for (const [name, method, path] of probes) {
|
|
35
|
-
let line
|
|
36
|
-
try {
|
|
37
|
-
const res = await fetch(`${BASE}${path}`, { method, headers: { accept: 'application/json' } })
|
|
38
|
-
const body = await res.json().catch(() => null)
|
|
39
|
-
const code = body && typeof body === 'object' ? (body.code ?? '(none)') : '(non-json)'
|
|
40
|
-
const hasTemplates = body && typeof body === 'object' && body.data && typeof body.data === 'object' && 'templates' in body.data
|
|
41
|
-
line = `${name.padEnd(22)} ${String(method).padEnd(5)} ${path.padEnd(46)} http=${res.status} code=${String(code).slice(0, 24)} templates=${hasTemplates}`
|
|
42
|
-
}
|
|
43
|
-
catch (err) {
|
|
44
|
-
line = `${name.padEnd(22)} ${String(method).padEnd(5)} ${path.padEnd(46)} FETCH-FAIL ${err.message}`
|
|
45
|
-
}
|
|
46
|
-
console.log(line)
|
|
47
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
// audit probe v2: distinguish "route missing" (h3 bare 404) from "route exists" (envelope JSON)
|
|
2
|
-
const BASE = process.env.AW_PROBE_BASE ?? 'http://127.0.0.1:3001'
|
|
3
|
-
const probes = [
|
|
4
|
-
['users.list ', 'GET', '/api/users'],
|
|
5
|
-
['users.get ', 'GET', '/api/users/__none__'],
|
|
6
|
-
['users.update PATCH(sdk) ', 'PATCH', '/api/users/__none__'],
|
|
7
|
-
['users.update PUT(server) ', 'PUT', '/api/users/__none__'],
|
|
8
|
-
['lines.list ', 'GET', '/api/workshop/dcw/lines'],
|
|
9
|
-
['lines.get ', 'GET', '/api/workshop/dcw/lines/__none__'],
|
|
10
|
-
['lines.update PATCH ', 'PATCH', '/api/workshop/dcw/lines/__none__'],
|
|
11
|
-
['products.list ', 'GET', '/api/workshop/dcw/products'],
|
|
12
|
-
['products.get ', 'GET', '/api/workshop/dcw/products/__none__'],
|
|
13
|
-
['products.update PATCH ', 'PATCH', '/api/workshop/dcw/products/__none__'],
|
|
14
|
-
['recipes.list ', 'GET', '/api/workshop/dcw/recipes'],
|
|
15
|
-
['recipes.get ', 'GET', '/api/workshop/dcw/recipes/__none__'],
|
|
16
|
-
['recipes.update PATCH ', 'PATCH', '/api/workshop/dcw/recipes/__none__'],
|
|
17
|
-
['dcwNodes.get ', 'GET', '/api/workshop/dcw/__none__'],
|
|
18
|
-
['daqNodes.get ', 'GET', '/api/workshop/daq/__none__'],
|
|
19
|
-
['twins.get ', 'GET', '/api/workshop/device-twins/__none__'],
|
|
20
|
-
['teams.get ', 'GET', '/api/workshop/teams/__none__'],
|
|
21
|
-
['agents.get ', 'GET', '/api/workshop/agents/__none__'],
|
|
22
|
-
['channels.list ', 'GET', '/api/workshop/channels'],
|
|
23
|
-
['unknown /api/workshop/nope ', 'GET', '/api/workshop/nope'],
|
|
24
|
-
['unknown /api/workshop/dcw/products (GET, route missing)', 'GET', '/api/workshop/dcw/products'],
|
|
25
|
-
]
|
|
26
|
-
|
|
27
|
-
for (const [name, method, path] of probes) {
|
|
28
|
-
try {
|
|
29
|
-
const res = await fetch(`${BASE}${path}`, { method, headers: { accept: 'application/json' } })
|
|
30
|
-
const text = await res.text()
|
|
31
|
-
const kind = text === '' ? 'EMPTY-BODY(h3 bare 404/405)'
|
|
32
|
-
: (text.trimStart().startsWith('{') ? `JSON ${text.slice(0, 72).replace(/\s+/g, ' ')}` : `RAW ${text.slice(0, 40).replace(/\s+/g, ' ')}`)
|
|
33
|
-
console.log(`${name} ${String(method).padEnd(5)} http=${String(res.status).padEnd(3)} ct=${String(res.headers.get('content-type')).padEnd(16)} ${kind}`)
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
console.log(`${name} FETCH-FAIL ${err.message}`)
|
|
37
|
-
}
|
|
38
|
-
}
|
package/scripts/_audit/probe.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
// audit probe: does the SDK type surface resolve the way docs promise?
|
|
2
|
-
import { createClientContext, type ClientContext } from '@/sdk/client.mjs'
|
|
3
|
-
import type { PluginContext, PluginDef, PlatformClient } from '@/sdk/index.mjs'
|
|
4
|
-
|
|
5
|
-
export const a: ClientContext | null = null
|
|
6
|
-
export const b: PluginContext | null = null
|
|
7
|
-
export const c: PluginDef | null = null
|
|
8
|
-
export const d: PlatformClient | null = null
|
|
9
|
-
export const e = createClientContext
|
package/scripts/_audit/probe2.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
// audit probe 2: relative specifier (no alias), mirrors nuxt app compilerOptions
|
|
2
|
-
import type { ClientContext } from '../../sdk/client.mjs'
|
|
3
|
-
import type { PluginContext } from '../../sdk/index.mjs'
|
|
4
|
-
|
|
5
|
-
export const a2: ClientContext | null = null
|
|
6
|
-
export const b2: PluginContext | null = null
|
package/scripts/_audit/probe3.ts
DELETED
package/scripts/_audit/probe4.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// scratch audit command: echoes the argv the CLI dispatcher produced
|
|
2
|
-
export const meta = {
|
|
3
|
-
name: 'echoargs',
|
|
4
|
-
group: 'audit',
|
|
5
|
-
summary: 'echo parsed argv (audit scratch)',
|
|
6
|
-
usage: 'aw echoargs [--any]',
|
|
7
|
-
needsProject: false,
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export async function run(argv, ctx) {
|
|
11
|
-
console.log(JSON.stringify({ argv, mode: ctx.mode, root: ctx.root, cwd: ctx.cwd }))
|
|
12
|
-
return 0
|
|
13
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# scratch audit project (read-only audit harness; safe to delete)
|
package/scripts/_audit/run.mjs
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 审计实验运行器(只读审计专用):
|
|
3
|
-
* 1) **强制隔离运行数据目录**(AW_DATA_DIR/AW_MODE/AW_HOME → scripts/_audit/.tmp):
|
|
4
|
-
* 仓库已改为 ensureDataDir()(配置根 <repo>/.AgentWorkShop/data),单纯 chdir 不再隔离,
|
|
5
|
-
* 实验若不做这一步会把合成数据写进线上数据根(本轮审计已发生并已修复)。
|
|
6
|
-
* 2) 注册扩展名省略解析钩子(仓库源码风格 './dcw-node' 与 '@/' 别名);
|
|
7
|
-
* 3) 加载目标 TS 入口。
|
|
8
|
-
* 用法:node scripts/_audit/run.mjs scripts/_audit/<entry>.ts
|
|
9
|
-
*/
|
|
10
|
-
import { mkdirSync } from 'node:fs'
|
|
11
|
-
import { register } from 'node:module'
|
|
12
|
-
import { fileURLToPath, pathToFileURL } from 'node:url'
|
|
13
|
-
|
|
14
|
-
const TMP = new URL('./.tmp/', import.meta.url)
|
|
15
|
-
const TMP_DIR = fileURLToPath(TMP)
|
|
16
|
-
mkdirSync(TMP_DIR, { recursive: true })
|
|
17
|
-
|
|
18
|
-
process.env.AW_DATA_DIR = fileURLToPath(new URL('./.tmp/audit-data/', import.meta.url))
|
|
19
|
-
process.env.AW_MODE = 'home'
|
|
20
|
-
process.env.AW_HOME = fileURLToPath(new URL('./.tmp/awhome/', import.meta.url))
|
|
21
|
-
mkdirSync(process.env.AW_DATA_DIR, { recursive: true })
|
|
22
|
-
mkdirSync(process.env.AW_HOME, { recursive: true })
|
|
23
|
-
|
|
24
|
-
register('./ts-resolve-hook.mjs', import.meta.url)
|
|
25
|
-
const entry = process.argv[2]
|
|
26
|
-
if (!entry) {
|
|
27
|
-
console.error('usage: node scripts/_audit/run.mjs <entry.ts>')
|
|
28
|
-
process.exit(2)
|
|
29
|
-
}
|
|
30
|
-
await import(pathToFileURL(entry).href)
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ESNext",
|
|
4
|
-
"module": "preserve",
|
|
5
|
-
"moduleResolution": "Bundler",
|
|
6
|
-
"allowJs": true,
|
|
7
|
-
"strict": true,
|
|
8
|
-
"noEmit": true,
|
|
9
|
-
"skipLibCheck": true,
|
|
10
|
-
"verbatimModuleSyntax": true,
|
|
11
|
-
"paths": {
|
|
12
|
-
"@/*": [
|
|
13
|
-
"../../*"
|
|
14
|
-
]
|
|
15
|
-
},
|
|
16
|
-
"types": []
|
|
17
|
-
},
|
|
18
|
-
"include": [
|
|
19
|
-
"probe.ts",
|
|
20
|
-
"probe2.ts",
|
|
21
|
-
"probe3.ts",
|
|
22
|
-
"probe4.ts"
|
|
23
|
-
]
|
|
24
|
-
}
|