agentworkshop 0.8.6 → 0.8.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.AgentWorkShop/prompts/host-tools.en.json +302 -174
- package/.AgentWorkShop/prompts/host-tools.json +4109 -4080
- package/.AgentWorkShop/prompts/lead-supervise.md +6 -0
- package/.AgentWorkShop/prompts/mode-goal.md +3 -3
- package/.output/.AgentWorkShop/prompts/host-tools.en.json +302 -174
- package/.output/.AgentWorkShop/prompts/host-tools.json +4109 -4080
- package/.output/.AgentWorkShop/prompts/lead-supervise.md +6 -0
- package/.output/.AgentWorkShop/prompts/mode-goal.md +3 -3
- package/.output/.AgentWorkShop/schema.json +171 -152
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/11Nifltq2.js +16 -0
- package/.output/public/_nuxt/{o8sYG6xx2.js → B37d6f-P2.js} +1 -1
- package/.output/public/_nuxt/{DtnsTW7e.js → B8vwpJxO.js} +1 -1
- package/.output/public/_nuxt/{BiXqyYNw2.js → BEbg8OxK2.js} +1 -1
- package/.output/public/_nuxt/{dcjPjLPI.js → BFUO7wT0.js} +1 -1
- package/.output/public/_nuxt/{Rb4o4o-82.js → BclHgAY62.js} +1 -1
- package/.output/public/_nuxt/{CdvMP3lv.js → BkZomIrQ.js} +1 -1
- package/.output/public/_nuxt/{D1eVi1zr.js → BwQJEuBn.js} +1 -1
- package/.output/public/_nuxt/{DMFwLxfu.js → C-wrWG5m.js} +1 -1
- package/.output/public/_nuxt/{COfo_Bg3.js → C0I4h6do.js} +1 -1
- package/.output/public/_nuxt/{BA2lmfW4.js → C0wjQa6_.js} +1 -1
- package/.output/public/_nuxt/{Dr1FVeQG2.js → C5x3IQz42.js} +1 -1
- package/.output/public/_nuxt/{BlOm8JIs2.js → C7BcCB7C2.js} +1 -1
- package/.output/public/_nuxt/{BwOK42JQ.js → CBpkE3Aa.js} +1 -1
- package/.output/public/_nuxt/{be-4wyTo.js → CEOSV8kw.js} +1 -1
- package/.output/public/_nuxt/{BuLoPmcf.js → CHpYSwnV.js} +1 -1
- package/.output/public/_nuxt/{EMbqTHfT.js → CYLe9LKr.js} +1 -1
- package/.output/public/_nuxt/CZgxZE_w2.js +1 -0
- package/.output/public/_nuxt/{DDXOfmo2.js → Cdi9qfTr.js} +5 -5
- package/.output/public/_nuxt/{hyLdZsOd2.js → CfE35xQa2.js} +1 -1
- package/.output/public/_nuxt/{azOGy_tU2.js → Cgym6fLd2.js} +1 -1
- package/.output/public/_nuxt/CjhzuymI.js +2 -0
- package/.output/public/_nuxt/{DC8sMA36.js → CoAJnzi9.js} +1 -1
- package/.output/public/_nuxt/{CooauJ7D.js → CuHnwZbm.js} +1 -1
- package/.output/public/_nuxt/{Tf6SJSDj.js → CwHhmA3N.js} +1 -1
- package/.output/public/_nuxt/{DzU3zEKX.js → D1Ljnzu-.js} +1 -1
- package/.output/public/_nuxt/{DoprKJ5a2.js → D9saExk92.js} +1 -1
- package/.output/public/_nuxt/{D6PUmBb0.js → DDLi49qE.js} +1 -1
- package/.output/public/_nuxt/{BoXKUOiN2.js → DNlwacP72.js} +1 -1
- package/.output/public/_nuxt/{ZzOyoXex2.js → DPIImHuY2.js} +1 -1
- package/.output/public/_nuxt/{CY2NkFvI.js → DW6X-3XT.js} +1 -1
- package/.output/public/_nuxt/{HJKu4eEV2.js → DZc-zU-H2.js} +1 -1
- package/.output/public/_nuxt/{C1RMfPoB2.js → Df35i2Tg2.js} +1 -1
- package/.output/public/_nuxt/DvGgUSuN2.js +2 -0
- package/.output/public/_nuxt/{EgO70wrE.js → DvfiRGS-.js} +1 -1
- package/.output/public/_nuxt/{C_4mzQ5X.js → DzPypczG.js} +1 -1
- package/.output/public/_nuxt/{BDXQqSkl2.js → FQK98hkN2.js} +1 -1
- package/.output/public/_nuxt/{7op-BMk82.js → Lq_0yoit2.js} +1 -1
- package/.output/public/_nuxt/{K5Xen0wZ2.js → MJD65-MH2.js} +1 -1
- package/.output/public/_nuxt/{TownView.CC3t-Dte.css → TownView.B_8ctigh.css} +1 -1
- package/.output/public/_nuxt/{h-Fn7pRD.js → WZrTmJqL.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/1231252d-2864-43c0-83b2-4e70d3b86dea.json +1 -0
- package/.output/public/_nuxt/{entry.D6nBdXet.css → entry.Buc3k7Ha.css} +1 -1
- package/.output/public/_nuxt/{DDHh85c42.js → gfKPQ5o72.js} +1 -1
- package/.output/public/_nuxt/logs.DlG85QRw.css +1 -0
- package/.output/server/chunks/_/access.mjs +4 -2
- package/.output/server/chunks/_/access.mjs.map +1 -1
- package/.output/server/chunks/_/binding-authz.mjs +4 -1
- package/.output/server/chunks/_/binding-authz.mjs.map +1 -1
- package/.output/server/chunks/_/catalog-view.mjs +1 -1
- package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
- package/.output/server/chunks/_/data-export.mjs +12 -12
- package/.output/server/chunks/_/data-export.mjs.map +1 -1
- package/.output/server/chunks/_/data-query.mjs +3 -3
- package/.output/server/chunks/_/eda-run.repo.mjs +5 -3
- package/.output/server/chunks/_/eda-run.repo.mjs.map +1 -1
- package/.output/server/chunks/_/entity.mjs +1 -1
- package/.output/server/chunks/_/features.mjs +8 -6
- package/.output/server/chunks/_/features.mjs.map +1 -1
- package/.output/server/chunks/_/golden.mjs +3 -3
- package/.output/server/chunks/_/host-bindings.mjs +4 -2
- package/.output/server/chunks/_/host-bindings.mjs.map +1 -1
- package/.output/server/chunks/_/index.mjs +4 -2
- package/.output/server/chunks/_/index.mjs.map +1 -1
- package/.output/server/chunks/_/line-scope.mjs +1 -1
- package/.output/server/chunks/_/mes-console.mjs +1 -1
- package/.output/server/chunks/_/mes-secrets.repo.mjs +4 -2
- package/.output/server/chunks/_/mes-secrets.repo.mjs.map +1 -1
- package/.output/server/chunks/_/nitro.mjs +5219 -2553
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/_/ocap.mjs +1 -1
- package/.output/server/chunks/_/rest-auth.mjs +1 -1
- package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
- package/.output/server/chunks/_/spc.mjs +4 -2
- package/.output/server/chunks/_/spc.mjs.map +1 -1
- package/.output/server/chunks/_/user.schema.mjs +1 -1
- package/.output/server/chunks/build/{TownView-BWMDbosY.mjs → TownView-BqdMFqei.mjs} +53 -46
- package/.output/server/chunks/build/TownView-BqdMFqei.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-BK-t8nRG.mjs → _id_-CsCtnbwe.mjs} +6 -4
- package/.output/server/chunks/build/_id_-CsCtnbwe.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CZPlPDm4.mjs → _id_-P1W47Gqq.mjs} +15 -13
- package/.output/server/chunks/build/_id_-P1W47Gqq.mjs.map +1 -0
- package/.output/server/chunks/build/{_wsId_-C871SDPN.mjs → _wsId_-DpOErFj6.mjs} +6 -4
- package/.output/server/chunks/build/{_wsId_-C871SDPN.mjs.map → _wsId_-DpOErFj6.mjs.map} +1 -1
- package/.output/server/chunks/build/agents-D7CdEUTv.mjs +3 -1
- package/.output/server/chunks/build/agents-D7CdEUTv.mjs.map +1 -1
- package/.output/server/chunks/build/aml-DRAFRcGU.mjs +3 -1
- package/.output/server/chunks/build/aml-DRAFRcGU.mjs.map +1 -1
- package/.output/server/chunks/build/{analysis-p-dBkjoK.mjs → analysis-J9axLuRt.mjs} +6 -4
- package/.output/server/chunks/build/analysis-J9axLuRt.mjs.map +1 -0
- package/.output/server/chunks/build/api-B4Om0mEc.mjs +3 -1
- package/.output/server/chunks/build/api-B4Om0mEc.mjs.map +1 -1
- package/.output/server/chunks/build/api-BEW_ebY_.mjs +3 -1
- package/.output/server/chunks/build/api-BEW_ebY_.mjs.map +1 -1
- package/.output/server/chunks/build/api-BsAgXWxi.mjs +3 -1
- package/.output/server/chunks/build/api-BsAgXWxi.mjs.map +1 -1
- package/.output/server/chunks/build/board-CJUc032b.mjs +3 -1
- package/.output/server/chunks/build/board-CJUc032b.mjs.map +1 -1
- package/.output/server/chunks/build/channel-templates-ggsBacZF.mjs +3 -1
- package/.output/server/chunks/build/channel-templates-ggsBacZF.mjs.map +1 -1
- package/.output/server/chunks/build/constants-HPHJvjne.mjs +3 -1
- package/.output/server/chunks/build/constants-HPHJvjne.mjs.map +1 -1
- package/.output/server/chunks/build/{daq-CdxcfY_G.mjs → daq-B_dRMDw4.mjs} +8 -6
- package/.output/server/chunks/build/daq-B_dRMDw4.mjs.map +1 -0
- package/.output/server/chunks/build/data-D8uX1dnm.mjs +3 -1
- package/.output/server/chunks/build/data-D8uX1dnm.mjs.map +1 -1
- package/.output/server/chunks/build/{dcw-BlDQtS4q.mjs → dcw-D_HD_H_2.mjs} +11 -9
- package/.output/server/chunks/build/dcw-D_HD_H_2.mjs.map +1 -0
- package/.output/server/chunks/build/default-CNWS6NUw.mjs +3 -1
- package/.output/server/chunks/build/es-Bxu10NJ2.mjs +3 -1
- package/.output/server/chunks/build/es-Bxu10NJ2.mjs.map +1 -1
- package/.output/server/chunks/build/{logs-pRb-TMWa.mjs → logs-BnYSMRXM.mjs} +109 -42
- package/.output/server/chunks/build/logs-BnYSMRXM.mjs.map +1 -0
- package/.output/server/chunks/build/monitor-Cq6hRFeQ.mjs +3 -1
- package/.output/server/chunks/build/ontology-ohICfVVb.mjs +3 -1
- package/.output/server/chunks/build/ontology-ohICfVVb.mjs.map +1 -1
- package/.output/server/chunks/build/{operations-SMQrRAcr.mjs → operations-4zOVhW7o.mjs} +6 -4
- package/.output/server/chunks/build/operations-4zOVhW7o.mjs.map +1 -0
- package/.output/server/chunks/build/optimizer-BlWTsM-W.mjs +3 -1
- package/.output/server/chunks/build/optimizer-BlWTsM-W.mjs.map +1 -1
- package/.output/server/chunks/build/{pages-DsMKUw7i.mjs → pages-DEv4ProW.mjs} +6 -4
- package/.output/server/chunks/build/pages-DEv4ProW.mjs.map +1 -0
- package/.output/server/chunks/build/permissions-DgXQZSyx.mjs +3 -1
- package/.output/server/chunks/build/permissions-DgXQZSyx.mjs.map +1 -1
- package/.output/server/chunks/build/pipeline-CkavMBhk.mjs +3 -1
- package/.output/server/chunks/build/pipeline-CkavMBhk.mjs.map +1 -1
- package/.output/server/chunks/build/plugins-LRjaSEZy.mjs +3 -1
- package/.output/server/chunks/build/plugins-LRjaSEZy.mjs.map +1 -1
- package/.output/server/chunks/build/schedules-Hz2DJUE2.mjs +3 -1
- package/.output/server/chunks/build/settings-DXLJPq7d.mjs +3 -1
- package/.output/server/chunks/build/settings-DXLJPq7d.mjs.map +1 -1
- package/.output/server/chunks/build/studio-hSqH9TYS.mjs +3 -1
- package/.output/server/chunks/build/studio-hSqH9TYS.mjs.map +1 -1
- package/.output/server/chunks/build/teams-BbwYJyzv.mjs +3 -1
- package/.output/server/chunks/build/teams-BbwYJyzv.mjs.map +1 -1
- package/.output/server/chunks/build/tokens-GYaGJ35Z.mjs +3 -1
- package/.output/server/chunks/build/tokens-GYaGJ35Z.mjs.map +1 -1
- package/.output/server/chunks/build/tools-CnYi9cou.mjs +3 -1
- package/.output/server/chunks/build/tools-CnYi9cou.mjs.map +1 -1
- package/.output/server/chunks/build/town-BV-hbwb5.mjs +3 -1
- package/.output/server/chunks/build/town-BV-hbwb5.mjs.map +1 -1
- package/.output/server/chunks/build/{town-B5aoiG98.mjs → town-CcoQKjMj.mjs} +6 -4
- package/.output/server/chunks/build/town-CcoQKjMj.mjs.map +1 -0
- package/.output/server/chunks/build/types-D6J7slEa.mjs +1 -1
- package/.output/server/chunks/build/types-DWqIeMRP.mjs +3 -1
- package/.output/server/chunks/build/types-DWqIeMRP.mjs.map +1 -1
- package/.output/server/chunks/build/useAgentHarnessOptions-Dq0l0Z6d.mjs +3 -1
- package/.output/server/chunks/build/useAgentHarnessOptions-Dq0l0Z6d.mjs.map +1 -1
- package/.output/server/chunks/build/useAgentTemplateActions-BFOHb5-L.mjs +3 -1
- package/.output/server/chunks/build/useAgentTemplateActions-BFOHb5-L.mjs.map +1 -1
- package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs +3 -1
- package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs.map +1 -1
- package/.output/server/chunks/build/useAgentTemplateForm-CuJPOPcK.mjs +3 -1
- package/.output/server/chunks/build/useAgentTemplateForm-CuJPOPcK.mjs.map +1 -1
- package/.output/server/chunks/build/useAgentTemplatesCatalog-B2bIhZLA.mjs +3 -1
- package/.output/server/chunks/build/useAgentTemplatesCatalog-B2bIhZLA.mjs.map +1 -1
- package/.output/server/chunks/build/useAmlDatasets-DeoE1idn.mjs +3 -1
- package/.output/server/chunks/build/useAmlDatasets-DeoE1idn.mjs.map +1 -1
- package/.output/server/chunks/build/useAmlEntities-BJhvdqHJ.mjs +3 -1
- package/.output/server/chunks/build/useAmlEntities-BJhvdqHJ.mjs.map +1 -1
- package/.output/server/chunks/build/useAmlEnv-CDIZ6xTe.mjs +3 -1
- package/.output/server/chunks/build/useAmlEnv-CDIZ6xTe.mjs.map +1 -1
- package/.output/server/chunks/build/useAmlExperiments-Dloi834i.mjs +3 -1
- package/.output/server/chunks/build/useAmlExperiments-Dloi834i.mjs.map +1 -1
- package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs +3 -1
- package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs.map +1 -1
- package/.output/server/chunks/build/useAmlJobs-BF9LpwXz.mjs +3 -1
- package/.output/server/chunks/build/useAmlJobs-BF9LpwXz.mjs.map +1 -1
- package/.output/server/chunks/build/useAmlModels-_bweOr3R.mjs +3 -1
- package/.output/server/chunks/build/useAmlModels-_bweOr3R.mjs.map +1 -1
- package/.output/server/chunks/build/useAmlNotes-DQj980iX.mjs +3 -1
- package/.output/server/chunks/build/useAmlNotes-DQj980iX.mjs.map +1 -1
- package/.output/server/chunks/build/useAmlPredict-DHNgDSJn.mjs +3 -1
- package/.output/server/chunks/build/useAmlPredict-DHNgDSJn.mjs.map +1 -1
- package/.output/server/chunks/build/useAnalysisFeed-BrEGV_9x.mjs +3 -1
- package/.output/server/chunks/build/useAnalysisFeed-BrEGV_9x.mjs.map +1 -1
- package/.output/server/chunks/build/useDaqAddNode-D_Rkju0f.mjs +4 -2
- package/.output/server/chunks/build/useDaqAddNode-D_Rkju0f.mjs.map +1 -1
- package/.output/server/chunks/build/useDaqDetailBinding-DCWaLKXT.mjs +3 -1
- package/.output/server/chunks/build/useDaqDetailBinding-DCWaLKXT.mjs.map +1 -1
- package/.output/server/chunks/build/useDaqDetailFrames-BOIcOJRB.mjs +3 -1
- package/.output/server/chunks/build/useDaqDetailFrames-BOIcOJRB.mjs.map +1 -1
- package/.output/server/chunks/build/useDaqDetailHistory-D6WulPVs.mjs +3 -1
- package/.output/server/chunks/build/useDaqDetailHistory-D6WulPVs.mjs.map +1 -1
- package/.output/server/chunks/build/{useDaqDetailNode-DeOsDxK5.mjs → useDaqDetailNode-BGMRUIXN.mjs} +6 -4
- package/.output/server/chunks/build/useDaqDetailNode-BGMRUIXN.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqDetailParams-Cm9a9r5G.mjs +4 -2
- package/.output/server/chunks/build/useDaqDetailParams-Cm9a9r5G.mjs.map +1 -1
- package/.output/server/chunks/build/{useDaqFilters-CctmO03p.mjs → useDaqFilters-zAAVlzJQ.mjs} +6 -4
- package/.output/server/chunks/build/useDaqFilters-zAAVlzJQ.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs +3 -1
- package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs.map +1 -1
- package/.output/server/chunks/build/{useDaqOptimizations-CmX_dpBc.mjs → useDaqOptimizations-BE_9Z2s_.mjs} +5 -3
- package/.output/server/chunks/build/useDaqOptimizations-BE_9Z2s_.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqStream-B9ZBVQrI.mjs +1 -1
- package/.output/server/chunks/build/useDaqTemplates-CK37sMfi.mjs +4 -2
- package/.output/server/chunks/build/useDaqTemplates-CK37sMfi.mjs.map +1 -1
- package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs +3 -1
- package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs.map +1 -1
- package/.output/server/chunks/build/{useDashboardData-NJ7rKxhx.mjs → useDashboardData-Cw8lrPo5.mjs} +5 -3
- package/.output/server/chunks/build/useDashboardData-Cw8lrPo5.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwAddNode-DACVcEHs.mjs → useDcwAddNode-KnocMk1m.mjs} +6 -4
- package/.output/server/chunks/build/useDcwAddNode-KnocMk1m.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwCards-SaiImIYQ.mjs → useDcwCards-C53IiOcg.mjs} +5 -3
- package/.output/server/chunks/build/useDcwCards-C53IiOcg.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwDetailScope-DLOklSMO.mjs → useDcwDetailScope-D6qXrfZu.mjs} +5 -3
- package/.output/server/chunks/build/useDcwDetailScope-D6qXrfZu.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwDetailTemplates-ClmIdZ40.mjs → useDcwDetailTemplates-DPOXu1o_.mjs} +5 -3
- package/.output/server/chunks/build/useDcwDetailTemplates-DPOXu1o_.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwFilter-CPMyCltx.mjs → useDcwFilter-DNQ6Ivwd.mjs} +5 -3
- package/.output/server/chunks/build/useDcwFilter-DNQ6Ivwd.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwLedger-0ie-0WTc.mjs → useDcwLedger-BhbUBCbi.mjs} +5 -3
- package/.output/server/chunks/build/useDcwLedger-BhbUBCbi.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwLineMutations-DNxo66yM.mjs → useDcwLineMutations-KA7VnggO.mjs} +5 -3
- package/.output/server/chunks/build/useDcwLineMutations-KA7VnggO.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwLineRun-CHskwscT.mjs → useDcwLineRun-3zx_UCxi.mjs} +5 -3
- package/.output/server/chunks/build/useDcwLineRun-3zx_UCxi.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwParamApprovals-DtScUc-W.mjs → useDcwParamApprovals-DzyY6Tmi.mjs} +5 -3
- package/.output/server/chunks/build/useDcwParamApprovals-DzyY6Tmi.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwProducts-BMaxzLu6.mjs → useDcwProducts-B05ymt3k.mjs} +5 -3
- package/.output/server/chunks/build/useDcwProducts-B05ymt3k.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwQuery-TVU3Eo0M.mjs → useDcwQuery-vWpgpSmJ.mjs} +5 -3
- package/.output/server/chunks/build/useDcwQuery-vWpgpSmJ.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwQuickActions-BREFmR9T.mjs → useDcwQuickActions-DUkLy34S.mjs} +5 -3
- package/.output/server/chunks/build/useDcwQuickActions-DUkLy34S.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwRecipes-Bc9urA1N.mjs → useDcwRecipes-BAb4Yg3d.mjs} +5 -3
- package/.output/server/chunks/build/useDcwRecipes-BAb4Yg3d.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwStream-Dir5ufAU.mjs → useDcwStream-RN3U_Jsh.mjs} +7 -4
- package/.output/server/chunks/build/useDcwStream-RN3U_Jsh.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwTemplates-BzagZztS.mjs → useDcwTemplates-D2aoejps.mjs} +5 -3
- package/.output/server/chunks/build/useDcwTemplates-D2aoejps.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwWrites-BROwTLCn.mjs → useDcwWrites-7w8txksD.mjs} +5 -3
- package/.output/server/chunks/build/useDcwWrites-7w8txksD.mjs.map +1 -0
- package/.output/server/chunks/build/useExpConfirmations-BM626N4p.mjs +3 -1
- package/.output/server/chunks/build/useExpConfirmations-BM626N4p.mjs.map +1 -1
- package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs +3 -1
- package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs.map +1 -1
- package/.output/server/chunks/build/{useLogsManual-cVBZQ_Mt.mjs → useLogsManual-D0dvgCsP.mjs} +5 -2
- package/.output/server/chunks/build/useLogsManual-D0dvgCsP.mjs.map +1 -0
- package/.output/server/chunks/build/useLogsQuery-D7hrJ3yn.mjs +3 -1
- package/.output/server/chunks/build/useLogsQuery-D7hrJ3yn.mjs.map +1 -1
- package/.output/server/chunks/build/{useLogsScope-aaPQeTRm.mjs → useLogsScope-DEUyq-My.mjs} +5 -3
- package/.output/server/chunks/build/useLogsScope-DEUyq-My.mjs.map +1 -0
- package/.output/server/chunks/build/useMonitorColumns-vVnt3r5Q.mjs +3 -1
- package/.output/server/chunks/build/useMonitorColumns-vVnt3r5Q.mjs.map +1 -1
- package/.output/server/chunks/build/useMonitorData-DIkiLr_h.mjs +3 -1
- package/.output/server/chunks/build/useMonitorData-DIkiLr_h.mjs.map +1 -1
- package/.output/server/chunks/build/useMonitorFormat-CyURtH8N.mjs +3 -1
- package/.output/server/chunks/build/useMonitorFormat-CyURtH8N.mjs.map +1 -1
- package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs +3 -1
- package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs.map +1 -1
- package/.output/server/chunks/build/useOperationsFeed-Ci4mZAn_.mjs +3 -1
- package/.output/server/chunks/build/useOperationsFeed-Ci4mZAn_.mjs.map +1 -1
- package/.output/server/chunks/build/useOpsLog-C-M6Eace.mjs.map +1 -1
- package/.output/server/chunks/build/useRecipeDispatchApprovals-BYtiqfeb.mjs +3 -1
- package/.output/server/chunks/build/useRecipeDispatchApprovals-BYtiqfeb.mjs.map +1 -1
- package/.output/server/chunks/build/useTeamActions-BDjU06LP.mjs +3 -1
- package/.output/server/chunks/build/useTeamActions-BDjU06LP.mjs.map +1 -1
- package/.output/server/chunks/build/useTeamAddMemberDialog-J3oFn3FI.mjs +3 -1
- package/.output/server/chunks/build/useTeamAddMemberDialog-J3oFn3FI.mjs.map +1 -1
- package/.output/server/chunks/build/useTeamCreateDialog-fbn4ixYu.mjs +3 -1
- package/.output/server/chunks/build/useTeamCreateDialog-fbn4ixYu.mjs.map +1 -1
- package/.output/server/chunks/build/useTeamDeployDialog-BNezMD2k.mjs +3 -1
- package/.output/server/chunks/build/useTeamDeployDialog-BNezMD2k.mjs.map +1 -1
- package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs +3 -1
- package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs.map +1 -1
- package/.output/server/chunks/build/useTeamPluginDialog-BZznrOVe.mjs +3 -1
- package/.output/server/chunks/build/useTeamPluginDialog-BZznrOVe.mjs.map +1 -1
- package/.output/server/chunks/build/useTeamsCatalog-DuZFP3oG.mjs +3 -1
- package/.output/server/chunks/build/useTeamsCatalog-DuZFP3oG.mjs.map +1 -1
- package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs +3 -1
- package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs.map +1 -1
- package/.output/server/chunks/build/useTokenCreate-Ctl0YGhL.mjs +3 -1
- package/.output/server/chunks/build/useTokenCreate-Ctl0YGhL.mjs.map +1 -1
- package/.output/server/chunks/build/useTokenRename-Cm3ypSfN.mjs +3 -1
- package/.output/server/chunks/build/useTokenRename-Cm3ypSfN.mjs.map +1 -1
- package/.output/server/chunks/build/useTokenReveal-CeoWL5Mt.mjs +3 -1
- package/.output/server/chunks/build/useTokenReveal-CeoWL5Mt.mjs.map +1 -1
- package/.output/server/chunks/build/useTokensList-CNIzON3u.mjs +3 -1
- package/.output/server/chunks/build/useTokensList-CNIzON3u.mjs.map +1 -1
- package/.output/server/chunks/build/useWorkbenchAuth-CY-bVFMu.mjs +3 -1
- package/.output/server/chunks/build/useWorkbenchAuth-CY-bVFMu.mjs.map +1 -1
- package/.output/server/chunks/build/useWorkbenchWorkspaces-DhZQFss9.mjs +3 -1
- package/.output/server/chunks/build/useWorkbenchWorkspaces-DhZQFss9.mjs.map +1 -1
- package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs +3 -1
- package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs.map +1 -1
- package/.output/server/chunks/build/useWorkspaceChannels-CPFepxTN.mjs +3 -1
- package/.output/server/chunks/build/useWorkspaceChannels-CPFepxTN.mjs.map +1 -1
- package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs +3 -1
- package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs.map +1 -1
- package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs +3 -1
- package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs.map +1 -1
- package/.output/server/chunks/build/users-DjiVC_tS.mjs +3 -1
- package/.output/server/chunks/build/users-DjiVC_tS.mjs.map +1 -1
- package/.output/server/chunks/build/workshop-1gKeDASV.mjs +3 -1
- package/.output/server/chunks/build/workshop-1gKeDASV.mjs.map +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +3 -1
- package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +3 -1
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/mcp/workshop.mjs +4 -2
- package/.output/server/chunks/routes/api/mcp/workshop.mjs.map +1 -1
- package/.output/server/chunks/routes/api/metrics.mjs +3 -1
- package/.output/server/chunks/routes/api/metrics.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +3 -1
- package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/i18n.get.mjs +3 -1
- package/.output/server/chunks/routes/api/plugins/i18n.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +3 -1
- package/.output/server/chunks/routes/api/plugins/manifest.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/backup/list.get.mjs +3 -1
- package/.output/server/chunks/routes/api/system/backup/list.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/backup/run.post.mjs +5 -3
- package/.output/server/chunks/routes/api/system/backup/run.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/config.get.mjs +3 -1
- package/.output/server/chunks/routes/api/system/config.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/system/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.post.mjs +3 -1
- package/.output/server/chunks/routes/api/system/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index2.get.mjs +3 -1
- package/.output/server/chunks/routes/api/system/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +3 -1
- package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +3 -1
- package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/monitor.get.mjs +3 -1
- package/.output/server/chunks/routes/api/system/monitor.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/settings/events.get.mjs +3 -1
- package/.output/server/chunks/routes/api/system/settings/events.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +3 -1
- package/.output/server/chunks/routes/api/system/settings/reset.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/timezone.get.mjs +3 -1
- package/.output/server/chunks/routes/api/system/timezone.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/users/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.put.mjs +3 -1
- package/.output/server/chunks/routes/api/users/_id_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/change-password.post.mjs +3 -1
- package/.output/server/chunks/routes/api/users/change-password.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/users/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/index.post.mjs +3 -1
- package/.output/server/chunks/routes/api/users/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/login.post.mjs +5 -4
- package/.output/server/chunks/routes/api/users/login.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/logout.post.mjs +3 -1
- package/.output/server/chunks/routes/api/users/logout.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/me.get.mjs +3 -1
- package/.output/server/chunks/routes/api/users/me.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/register.post.mjs +3 -1
- package/.output/server/chunks/routes/api/users/register.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/setup-status.get.mjs +3 -1
- package/.output/server/chunks/routes/api/users/setup-status.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +3 -1
- package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/_...path_.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/_...path_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +12 -2
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +22 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +4 -2
- 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 +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +3 -1
- 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 +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +4 -2
- 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 +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/analysis/_id_.delete.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/analysis/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/analysis/_id_.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/analysis/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/analysis/_id_.patch.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/analysis/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +6 -3
- package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/audit.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/audit.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/caller.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/caller.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +5 -3
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/rotate-token.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/rotate-token.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/execution-mode.patch.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/execution-mode.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.put.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +6 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index7.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index7.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/tools/reset.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/tools/reset.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs +21 -4
- package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/channels.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +10 -8
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/ingest.post.mjs +15 -3
- package/.output/server/chunks/routes/api/workshop/daq/_id/ingest.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/export/_id_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/daq/export/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/export-file.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/daq/export-file.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index2.post.mjs +6 -4
- package/.output/server/chunks/routes/api/workshop/daq/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/query.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/daq/query.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/storage/retention.put.mjs +68 -0
- package/.output/server/chunks/routes/api/workshop/daq/storage/retention.put.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/daq/storage/rollup.post.mjs +45 -0
- package/.output/server/chunks/routes/api/workshop/daq/storage/rollup.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/daq/storage.get.mjs +36 -0
- package/.output/server/chunks/routes/api/workshop/daq/storage.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +6 -4
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +6 -4
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +5 -3
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index7.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index7.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/mes-artifacts/file.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/mes-artifacts/file.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/mes-hook-test.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/mes-hook-test.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +18 -4
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +6 -3
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +6 -3
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +6 -3
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/commonality.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/eda/commonality.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/features/jobs.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/features/jobs.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/features/run.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/features/run.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/golden/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/golden/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/golden/deviation.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/golden/deviation.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/golden/single.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/golden/single.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index2.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index2.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index3.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index3.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index4.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index4.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index4.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index5.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index5.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index5.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index6.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/eda/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index6.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/eda/index6.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index7.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index7.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index7.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index7.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index8.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index8.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/index8.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/index8.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/runs/_id/labels.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/runs/_id/labels.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/runs.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/runs.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/spc/_id/recompute.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/spc/_id/recompute.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/eda/vm/predict.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/eda/vm/predict.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/exp/confirmations/_id/decide.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/exp/confirmations/_id/decide.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/exp/index.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/exp/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/index.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index.put.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/index.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index10.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index10.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index11.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index12.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/index12.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index13.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index13.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index14.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index14.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index15.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index15.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index16.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index16.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs +25 -10
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/index3.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs +231 -5
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs +23 -7
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index8.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index9.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mes/datasets.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/mes/datasets.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mes/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/mes/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mes/index.put.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/mes/index.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mes/points.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/mes/points.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mes/preview.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/mes/preview.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mes/secrets/_ref_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/mes/secrets/_ref_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/autofix.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/autofix.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/compile.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/compile.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/evidence.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/evidence.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/publish.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/publish.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval-decision.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval-decision.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/transition.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/transition.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/subgraph.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/subgraph.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/validate.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/validate.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId_.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/export/_ontologyId_.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/export/_ontologyId_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/index.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/index.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/scene.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/scene.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/traces/_ontologyId_.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/traces/_ontologyId_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId/compare.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId/compare.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId_.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/bindings/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/optimization/bindings/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/capabilities.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/optimization/capabilities.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/index.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/optimization/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/index.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/optimization/index.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/index2.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/optimization/index2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/profiles/_id/publish.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/optimization/profiles/_id/publish.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/crosscheck.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/crosscheck.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/dispatch.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/dispatch.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/optimization/solve.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/optimization/solve.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/datasets.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/process-model/datasets.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/eligibility.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/process-model/eligibility.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/experiments.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/process-model/experiments.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/index.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/process-model/index.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/specs/_id/publish.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/process-model/specs/_id/publish.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/process-model/train.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/process-model/train.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/runtime.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/reopen.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/reopen.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/supersede.post.mjs +43 -0
- package/.output/server/chunks/routes/api/workshop/tasks/_id/supersede.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/tasks.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tools/_name_.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/tools/_name_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tools/sync.post.mjs +4 -2
- package/.output/server/chunks/routes/api/workshop/tools/sync.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/users/me.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/users/register.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +5 -3
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/renderer.mjs +2 -2
- package/.output/server/chunks/virtual/entry.mjs +50 -32
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/index.mjs +3 -1
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/node_modules/pg/esm/index.mjs +20 -0
- package/.output/server/node_modules/pg/lib/client.js +828 -0
- package/.output/server/node_modules/pg/lib/connection-parameters.js +184 -0
- package/.output/server/node_modules/pg/lib/connection.js +243 -0
- package/.output/server/node_modules/pg/lib/crypto/cert-signatures.js +122 -0
- package/.output/server/node_modules/pg/lib/crypto/sasl.js +262 -0
- package/.output/server/node_modules/pg/lib/crypto/utils.js +89 -0
- package/.output/server/node_modules/pg/lib/defaults.js +94 -0
- package/.output/server/node_modules/pg/lib/index.js +73 -0
- package/.output/server/node_modules/pg/lib/native/client.js +420 -0
- package/.output/server/node_modules/pg/lib/native/index.js +2 -0
- package/.output/server/node_modules/pg/lib/native/query.js +165 -0
- package/.output/server/node_modules/pg/lib/query.js +259 -0
- package/.output/server/node_modules/pg/lib/result.js +109 -0
- package/.output/server/node_modules/pg/lib/stream.js +83 -0
- package/.output/server/node_modules/pg/lib/type-overrides.js +35 -0
- package/.output/server/node_modules/pg/lib/utils.js +207 -0
- package/.output/server/node_modules/pg/package.json +76 -0
- package/.output/server/node_modules/pg-cloudflare/dist/empty.js +6 -0
- package/.output/server/node_modules/pg-cloudflare/package.json +39 -0
- package/.output/server/node_modules/pg-connection-string/index.js +237 -0
- package/.output/server/node_modules/pg-connection-string/package.json +52 -0
- package/.output/server/node_modules/pg-int8/index.js +100 -0
- package/.output/server/node_modules/pg-int8/package.json +24 -0
- package/.output/server/node_modules/pg-pool/index.js +517 -0
- package/.output/server/node_modules/pg-pool/package.json +51 -0
- package/.output/server/node_modules/pg-protocol/dist/buffer-reader.js +55 -0
- package/.output/server/node_modules/pg-protocol/dist/buffer-writer.js +104 -0
- package/.output/server/node_modules/pg-protocol/dist/index.js +15 -0
- package/.output/server/node_modules/pg-protocol/dist/messages.js +160 -0
- package/.output/server/node_modules/pg-protocol/dist/parser.js +325 -0
- package/.output/server/node_modules/pg-protocol/dist/serializer.js +196 -0
- package/.output/server/node_modules/pg-protocol/package.json +44 -0
- package/.output/server/node_modules/pg-types/index.js +47 -0
- package/.output/server/node_modules/pg-types/lib/arrayParser.js +11 -0
- package/.output/server/node_modules/pg-types/lib/binaryParsers.js +257 -0
- package/.output/server/node_modules/pg-types/lib/builtins.js +73 -0
- package/.output/server/node_modules/pg-types/lib/textParsers.js +215 -0
- package/.output/server/node_modules/pg-types/package.json +42 -0
- package/.output/server/node_modules/pgpass/lib/helper.js +233 -0
- package/.output/server/node_modules/pgpass/lib/index.js +23 -0
- package/.output/server/node_modules/pgpass/package.json +41 -0
- package/.output/server/node_modules/postgres-array/index.js +97 -0
- package/.output/server/node_modules/postgres-array/package.json +35 -0
- package/.output/server/node_modules/postgres-bytea/index.js +33 -0
- package/.output/server/node_modules/postgres-bytea/package.json +34 -0
- package/.output/server/node_modules/postgres-date/index.js +116 -0
- package/.output/server/node_modules/postgres-date/package.json +33 -0
- package/.output/server/node_modules/postgres-interval/index.js +126 -0
- package/.output/server/node_modules/postgres-interval/package.json +35 -0
- package/.output/server/node_modules/split2/index.js +141 -0
- package/.output/server/node_modules/split2/package.json +39 -0
- package/.output/server/node_modules/xtend/mutable.js +17 -0
- package/.output/server/node_modules/xtend/package.json +55 -0
- package/.output/server/package.json +15 -1
- package/README-zh.md +255 -992
- package/README.md +254 -1023
- package/app/components/logs/LogsEventTable.vue +36 -3
- package/app/components/logs/LogsManualModal.vue +23 -1
- package/app/components/logs/LogsPageHead.vue +56 -5
- package/app/components/workshop/town/components/TownAgentBindings.vue +16 -4
- package/app/components/workshop/town/components/TownAgentInspector.vue +1 -1
- package/app/components/workshop/town/components/TownRightRail.vue +1 -1
- package/app/composables/workshop/town/town-view-types.ts +2 -2
- package/app/composables/workshop/town/useTownAgentBindings.ts +3 -2
- package/app/composables/workshop/town/useTownRailData.ts +1 -1
- package/app/composables/workshop/useDcwStream.ts +5 -2
- package/app/composables/workshop/useOpsLog.ts +191 -191
- package/app/config/schema.ts +15 -1
- package/app/pages/logs/composables/useLogsManual.ts +71 -68
- package/app/pages/logs/index.vue +34 -1
- package/config.yml +212 -193
- package/docker-compose.yml +69 -63
- package/docs/cli.en.md +447 -447
- package/docs/cli.md +412 -412
- package/docs/plugins.en.md +641 -641
- package/docs/plugins.md +630 -630
- package/docs/sdk.en.md +964 -964
- package/docs/sdk.md +900 -900
- package/i18n/dicts/townView.json +3 -1
- package/i18n/locales/en.ts +3371 -3362
- package/i18n/locales/zh-CN.ts +3370 -3361
- package/mcp/aw-mcp-server.mjs +1 -1
- package/package.json +189 -187
- package/scripts/_audit/kill-acceptance-strays.mjs +47 -0
- package/scripts/_audit/proto-doc-broker-20261031.mjs +11 -0
- package/scripts/_audit/proto-doc-device-20261031.mjs +53 -0
- package/scripts/_audit/proto-doc-mqtt-20261031.mjs +32 -0
- package/scripts/_audit/run-full-acceptance-20261030.sh +82 -0
- package/scripts/api-live-e2e.mjs +91 -32
- package/scripts/e2e-agentteam-goal-closure.mjs +496 -0
- package/scripts/e2e-analysis-ledger.mjs +202 -0
- package/scripts/e2e-binding-modes-real.mjs +442 -0
- package/scripts/e2e-business-loop-real.mjs +391 -0
- package/scripts/e2e-core-bridges-matrix.mjs +303 -0
- package/scripts/e2e-dcw-halfopen-resilience.mjs +140 -0
- package/scripts/e2e-error-handling.mjs +190 -0
- package/scripts/e2e-golive-matrix.mjs +515 -0
- package/scripts/e2e-idd-results-ui.mjs +182 -175
- package/scripts/e2e-mes-mirror-real.mjs +427 -0
- package/scripts/e2e-model-loop-live.mjs +90 -54
- package/scripts/e2e-node-binding-3mode-real.mjs +110 -15
- package/scripts/e2e-node-binding-authz.mjs +41 -1
- package/scripts/e2e-optimizer-live.mjs +4 -0
- package/scripts/e2e-paper-paired-route.mjs +791 -0
- package/scripts/e2e-physical-effect-real.mjs +572 -0
- package/scripts/e2e-real-channel-mission.mjs +543 -0
- package/scripts/e2e-security-b0.mjs +280 -0
- package/scripts/e2e-security-b1.mjs +165 -0
- package/scripts/e2e-security-b2b5.mjs +280 -0
- package/scripts/live-demo-seed.mjs +157 -0
- package/scripts/onboarding/preflight.mjs +231 -0
- package/scripts/onboarding/provision-line.mjs +11 -1
- package/scripts/onboarding/verify-mirror.mjs +145 -0
- package/scripts/start.mjs +279 -250
- package/sdk/context.mjs +34 -1
- package/server/api/users/login.post.ts +3 -2
- package/server/api/users/register.post.ts +22 -21
- package/server/api/workshop/a2a/[agentId]/card/index.get.ts +86 -75
- package/server/api/workshop/agent-tools/approvals/index.get.ts +3 -1
- package/server/api/workshop/agent-tools/bindings/index.post.ts +38 -16
- package/server/api/workshop/analysis/index.post.ts +20 -3
- package/server/api/workshop/assets/devices/index.post.ts +55 -53
- package/server/api/workshop/channels/[id]/tasks/index.post.ts +2 -0
- package/server/api/workshop/channels/[id]/twin-profile.patch.ts +20 -1
- package/server/api/workshop/daq/[id]/ingest.post.ts +25 -1
- package/server/api/workshop/daq/index.post.ts +45 -1
- package/server/api/workshop/daq/storage/retention.put.ts +66 -0
- package/server/api/workshop/daq/storage/rollup.post.ts +28 -0
- package/server/api/workshop/daq/storage.get.ts +17 -0
- package/server/api/workshop/daq/templates/[key].delete.ts +2 -2
- package/server/api/workshop/daq/templates/[key].patch.ts +19 -19
- package/server/api/workshop/daq/templates/index.post.ts +18 -18
- package/server/api/workshop/dcw/[id]/write.post.ts +28 -27
- package/server/api/workshop/dcw/recipes/[id].delete.ts +21 -2
- package/server/api/workshop/device-twins/[id]/control.post.ts +23 -21
- package/server/api/workshop/device-twins/[id].delete.ts +3 -1
- package/server/api/workshop/device-twins/[id].patch.ts +31 -29
- package/server/api/workshop/ops-logs/index.post.ts +92 -69
- package/server/api/workshop/tasks/[id]/supersede.post.ts +28 -0
- package/server/middleware/00-security-headers.ts +8 -1
- package/server/middleware/01-rate-guard.ts +34 -6
- package/server/plugins/00-daq-credentials.ts +33 -0
- package/server/plugins/01-instance-guard.ts +49 -13
- package/server/plugins/aw-plugins.ts +4 -1
- package/server/plugins/backup.ts +268 -257
- package/server/plugins/daq.ts +40 -1
- package/server/plugins/dev-stability-guard.ts +4 -0
- package/server/plugins/error-ledger.ts +21 -0
- package/server/repositories/user.repository.ts +520 -507
- package/server/schemas/user.schema.ts +74 -74
- package/server/services/system-config/mutate.ts +9 -2
- package/server/services/system-config/secrets.ts +50 -0
- package/server/services/system-config/snapshot.ts +13 -2
- package/server/services/user.service.ts +277 -258
- package/server/services/workshop/agents/adapters/line-spawn.ts +148 -144
- package/server/services/workshop/agents/adapters/omp-rpc-client/start.ts +5 -1
- package/server/services/workshop/agents/agent-interface.ts +2 -0
- package/server/services/workshop/agents/base-agent.ts +3 -3
- package/server/services/workshop/agents/binding-authz.ts +7 -1
- package/server/services/workshop/agents/governance-harness-audit.ts +216 -0
- package/server/services/workshop/agents/host-tool-bridge/catalog.ts +1 -0
- package/server/services/workshop/agents/host-tool-bridge/dispatch.ts +428 -410
- package/server/services/workshop/agents/host-tool-bridge/per-agent.ts +17 -3
- package/server/services/workshop/agents/host-tool-bridge/tools/messaging.ts +46 -13
- package/server/services/workshop/agents/host-tool-bridge/tools/progress.ts +48 -6
- package/server/services/workshop/agents/host-tool-bridge/tools/tasks.ts +52 -14
- package/server/services/workshop/agents/host-tool-bridge/tools/team-delegation.ts +22 -1
- package/server/services/workshop/agents/host-tool-bridge/types.ts +1 -1
- package/server/services/workshop/agents/industrial/aml-job-tools.ts +6 -4
- package/server/services/workshop/agents/industrial/bench-approval-only.ts +117 -0
- package/server/services/workshop/agents/industrial/daq-tools.ts +79 -20
- package/server/services/workshop/agents/industrial/dcw-tools.ts +14 -1
- package/server/services/workshop/agents/industrial/fallback-hints.ts +31 -0
- package/server/services/workshop/agents/industrial/manual-approval.ts +2 -2
- package/server/services/workshop/agents/industrial/ops-tools.ts +72 -23
- package/server/services/workshop/agents/industrial/recipe-gate.ts +57 -29
- package/server/services/workshop/agents/industrial/recipe-propose-tools.ts +6 -4
- package/server/services/workshop/agents/industrial/tool-verify.ts +23 -3
- package/server/services/workshop/agents/mock-agent.ts +4 -0
- package/server/services/workshop/agents/node-bindings.repo.ts +8 -6
- package/server/services/workshop/agents/omp-agent/agentteam-audit.ts +147 -0
- package/server/services/workshop/agents/omp-agent/client.ts +1 -1
- package/server/services/workshop/agents/omp-agent/event-mapping.ts +21 -0
- package/server/services/workshop/agents/omp-agent/tools-steer.ts +100 -6
- package/server/services/workshop/agents/tool-approvals.ts +6 -4
- package/server/services/workshop/agents/tool-classes.ts +12 -0
- package/server/services/workshop/aml/dataset-builder.ts +4 -0
- package/server/services/workshop/aml/env-lease.ts +178 -148
- package/server/services/workshop/aml/model-registry.ts +16 -2
- package/server/services/workshop/bench-mode.ts +22 -0
- package/server/services/workshop/daq/alarm-notify.ts +122 -102
- package/server/services/workshop/daq/daq-controller/crud.ts +210 -210
- package/server/services/workshop/daq/daq-controller/driver-probe.ts +68 -67
- package/server/services/workshop/daq/daq-controller/frames.ts +5 -4
- package/server/services/workshop/daq/daq-controller/sweep-alarms.ts +214 -186
- package/server/services/workshop/daq/daq-controller/types.ts +5 -0
- package/server/services/workshop/daq/daq-node.ts +7 -0
- package/server/services/workshop/daq/daq-templates.ts +235 -225
- package/server/services/workshop/daq/drivers/modbus-tcp.ts +27 -16
- package/server/services/workshop/daq/field-group.ts +266 -0
- package/server/services/workshop/daq/infra-credentials.ts +201 -0
- package/server/services/workshop/daq/infra.ts +250 -229
- package/server/services/workshop/daq/ingest-policy.ts +80 -66
- package/server/services/workshop/daq/objectstore/index.ts +88 -88
- package/server/services/workshop/daq/storage/index.ts +157 -4
- package/server/services/workshop/daq/storage/retention.ts +142 -0
- package/server/services/workshop/daq/storage/sqlite.adapter.ts +16 -3
- package/server/services/workshop/daq/storage/timescale-rollup.ts +600 -0
- package/server/services/workshop/daq/storage/timescale.adapter.ts +46 -13
- package/server/services/workshop/daq/storage/tsdb-port.ts +120 -0
- package/server/services/workshop/db/chat-message.repo.ts +28 -0
- package/server/services/workshop/db/database/open.ts +6 -0
- package/server/services/workshop/db/database/rows.ts +2 -0
- package/server/services/workshop/db/database/schema.ts +8 -0
- package/server/services/workshop/db/database/seed.ts +6 -6
- package/server/services/workshop/db/schema.sql +7 -0
- package/server/services/workshop/db/task.repo.ts +8 -3
- package/server/services/workshop/dcw/dcw-controller/actuation.ts +7 -0
- package/server/services/workshop/dcw/dcw-controller/crud.ts +5 -0
- package/server/services/workshop/dcw/dcw-controller/helpers.ts +62 -61
- package/server/services/workshop/dcw/dcw-controller/recipes.ts +14 -8
- package/server/services/workshop/dcw/dcw-controller/state.ts +88 -71
- package/server/services/workshop/dcw/dcw-controller/write-audit.ts +1 -1
- package/server/services/workshop/dcw/dcw-controller/write.ts +225 -212
- package/server/services/workshop/dcw/dcw-node.ts +13 -1
- package/server/services/workshop/dcw/dcw-runtime.ts +2 -1
- package/server/services/workshop/dcw/drivers/mqtt.ts +4 -3
- package/server/services/workshop/dcw/mqtt-payload.ts +64 -0
- package/server/services/workshop/dcw/recipe-rollback-manager/lock.ts +1 -0
- package/server/services/workshop/eda/data-export.ts +275 -274
- package/server/services/workshop/json-store.mjs +143 -137
- package/server/services/workshop/mes/mes-controller.ts +9 -0
- package/server/services/workshop/mes/mes-hook.ts +28 -1
- package/server/services/workshop/net/ssrf.ts +83 -74
- package/server/services/workshop/ops/error-ledger.ts +209 -0
- package/server/services/workshop/optimization/profile-adopt.service.ts +28 -2
- package/server/services/workshop/plugins/host/init.mjs +21 -2
- package/server/services/workshop/plugins/host/reload.mjs +8 -1
- package/server/services/workshop/runtime/agent-runtime/harness-failure.ts +58 -0
- package/server/services/workshop/runtime/agent-runtime/message.ts +37 -2
- package/server/services/workshop/runtime/agent-runtime/state.ts +12 -2
- package/server/services/workshop/runtime/agent-runtime/types.ts +2 -0
- package/server/services/workshop/runtime/channel-runtime.ts +80 -1
- package/server/services/workshop/runtime/embedding-provider.ts +100 -83
- package/server/services/workshop/runtime/execution-mode.ts +8 -0
- package/server/services/workshop/runtime/manager/admin-channel.ts +19 -14
- package/server/services/workshop/runtime/manager/chat.ts +62 -2
- package/server/services/workshop/runtime/manager/contracts.ts +7 -0
- package/server/services/workshop/runtime/manager/helpers.ts +5 -2
- package/server/services/workshop/runtime/manager/runtime-observe.ts +1 -3
- package/server/services/workshop/runtime/manager/runtime-wiring.ts +18 -6
- package/server/services/workshop/runtime/manager/schedules.ts +7 -0
- package/server/services/workshop/runtime/manager/state.ts +16 -2
- package/server/services/workshop/runtime/manager/tasks.ts +34 -1
- package/server/services/workshop/runtime/manager/workspace.ts +1 -0
- package/server/services/workshop/runtime/scheduler-loop/rules.ts +17 -1
- package/server/services/workshop/runtime/scheduler-loop/tick.ts +31 -3
- package/server/services/workshop/runtime/task-engine/create.ts +15 -1
- package/server/services/workshop/runtime/task-engine/helpers.ts +2 -0
- package/server/services/workshop/runtime/task-engine/lifecycle.ts +68 -9
- package/server/services/workshop/settings.ts +35 -1
- package/server/services/workshop/types/task.ts +2 -0
- package/server/utils/asset-auth.ts +15 -0
- package/server/utils/request-ip.ts +29 -0
- package/server/utils/response.ts +3 -6
- package/shared/config/schema.json +171 -152
- package/shared/daq-protocol.ts +8 -0
- package/shared/dcw-protocol/catalog.ts +1 -0
- package/shared/dcw-protocol/closed-loop.ts +2 -0
- package/shared/dcw-protocol/line.ts +4 -1
- package/.output/public/_nuxt/B1SIgyrl.js +0 -1
- package/.output/public/_nuxt/BI9jj13f2.js +0 -2
- package/.output/public/_nuxt/CTGJHZ8X2.js +0 -1
- package/.output/public/_nuxt/DxDqd6T42.js +0 -16
- package/.output/public/_nuxt/builds/meta/593b65bd-cf1d-4b7f-a993-57e939c38f36.json +0 -1
- package/.output/public/_nuxt/logs.BkJPbR_K.css +0 -1
- package/.output/server/chunks/build/TownView-BWMDbosY.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-BK-t8nRG.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-CZPlPDm4.mjs.map +0 -1
- package/.output/server/chunks/build/analysis-p-dBkjoK.mjs.map +0 -1
- package/.output/server/chunks/build/daq-CdxcfY_G.mjs.map +0 -1
- package/.output/server/chunks/build/dcw-BlDQtS4q.mjs.map +0 -1
- package/.output/server/chunks/build/logs-pRb-TMWa.mjs.map +0 -1
- package/.output/server/chunks/build/operations-SMQrRAcr.mjs.map +0 -1
- package/.output/server/chunks/build/pages-DsMKUw7i.mjs.map +0 -1
- package/.output/server/chunks/build/town-B5aoiG98.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailNode-DeOsDxK5.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqFilters-CctmO03p.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqOptimizations-CmX_dpBc.mjs.map +0 -1
- package/.output/server/chunks/build/useDashboardData-NJ7rKxhx.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwAddNode-DACVcEHs.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwCards-SaiImIYQ.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwDetailScope-DLOklSMO.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwDetailTemplates-ClmIdZ40.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwFilter-CPMyCltx.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwLedger-0ie-0WTc.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwLineMutations-DNxo66yM.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwLineRun-CHskwscT.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwParamApprovals-DtScUc-W.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwProducts-BMaxzLu6.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwQuery-TVU3Eo0M.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwQuickActions-BREFmR9T.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwRecipes-Bc9urA1N.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwStream-Dir5ufAU.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwTemplates-BzagZztS.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwWrites-BROwTLCn.mjs.map +0 -1
- package/.output/server/chunks/build/useLogsManual-cVBZQ_Mt.mjs.map +0 -1
- package/.output/server/chunks/build/useLogsScope-aaPQeTRm.mjs.map +0 -1
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* 数据分析台账 E2E —— 实例④(隔离,mock harness 确定性):
|
|
4
|
+
* Agent 把数据分析结果持久化(analysis_save,append-only 台账)
|
|
5
|
+
* → 按条件检索(analysis_query 列表/关键词/类别/时间窗)
|
|
6
|
+
* → 精确查回详情(analysis_query report_id 完整正文+结论+指标)
|
|
7
|
+
* → REST /analysis 面与权限边界(跨线不可见、append-only、人工修订归因)。
|
|
8
|
+
*
|
|
9
|
+
* 收口条件:全部断言 PASS。
|
|
10
|
+
* 运行:node scripts/e2e-analysis-ledger.mjs(自起隔离实例,端口 3416)
|
|
11
|
+
* 证据:docs/audit/evidence/2026-10-28-analysis-ledger/report.json
|
|
12
|
+
*/
|
|
13
|
+
import { spawn } from 'node:child_process'
|
|
14
|
+
import { mkdirSync, openSync, writeFileSync } from 'node:fs'
|
|
15
|
+
import { dirname, join, resolve } from 'node:path'
|
|
16
|
+
import { fileURLToPath } from 'node:url'
|
|
17
|
+
import { tmpdir } from 'node:os'
|
|
18
|
+
import { DatabaseSync } from 'node:sqlite'
|
|
19
|
+
|
|
20
|
+
const REPO = resolve(dirname(fileURLToPath(import.meta.url)), '..')
|
|
21
|
+
const TAG = `al${Date.now().toString(36).slice(-4)}`
|
|
22
|
+
const ROOT = join(tmpdir(), `aw-analysis-e2e-${TAG}`)
|
|
23
|
+
mkdirSync(join(ROOT, 'home'), { recursive: true })
|
|
24
|
+
const results = []
|
|
25
|
+
const ok = (id, name, cond, detail = '') => {
|
|
26
|
+
results.push({ id, name, pass: Boolean(cond), detail: String(detail).slice(0, 700) })
|
|
27
|
+
console.log(`${cond ? '✔' : '✖'} [${id}] ${name}${cond ? '' : ` — ${String(detail).slice(0, 500)}`}`)
|
|
28
|
+
return Boolean(cond)
|
|
29
|
+
}
|
|
30
|
+
const sleep = ms => new Promise(r => setTimeout(r, ms))
|
|
31
|
+
|
|
32
|
+
let port = 0
|
|
33
|
+
for (const p of [3416, 3417]) {
|
|
34
|
+
try {
|
|
35
|
+
const r = await fetch(`http://127.0.0.1:${p}/api/health`, { signal: AbortSignal.timeout(1200) })
|
|
36
|
+
if (r.ok) continue
|
|
37
|
+
}
|
|
38
|
+
catch { /* 空闲 */ }
|
|
39
|
+
port = p
|
|
40
|
+
break
|
|
41
|
+
}
|
|
42
|
+
if (!port) {
|
|
43
|
+
console.error('无空闲端口')
|
|
44
|
+
process.exit(1)
|
|
45
|
+
}
|
|
46
|
+
const BASE = `http://127.0.0.1:${port}`
|
|
47
|
+
process.env.NO_PROXY = '127.0.0.1,localhost'
|
|
48
|
+
const logFd = openSync(join(ROOT, 'dev.log'), 'a')
|
|
49
|
+
const child = spawn(process.execPath, [join(REPO, 'bin', 'aw.mjs'), 'dev', '--port', String(port)], {
|
|
50
|
+
cwd: REPO,
|
|
51
|
+
env: { ...process.env, AW_MODE: 'home', AW_HOME: join(ROOT, 'home'), AW_RATE_LIMIT_OFF: '1', NUXT_SESSION_PASSWORD: 'AnalysisLedger#2026-key', NO_PROXY: '127.0.0.1,localhost' },
|
|
52
|
+
stdio: ['ignore', logFd, logFd],
|
|
53
|
+
windowsHide: true,
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
async function api(method, path, body, token, extraHeaders = {}, timeoutMs = 120_000) {
|
|
57
|
+
const res = await fetch(BASE + path, {
|
|
58
|
+
method,
|
|
59
|
+
headers: { ...(body !== undefined ? { 'content-type': 'application/json' } : {}), ...(token ? { authorization: `Bearer ${token}` } : {}), ...extraHeaders },
|
|
60
|
+
body: body === undefined ? undefined : JSON.stringify(body),
|
|
61
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
62
|
+
})
|
|
63
|
+
let json = null
|
|
64
|
+
try {
|
|
65
|
+
json = await res.json()
|
|
66
|
+
}
|
|
67
|
+
catch { /* 非 JSON */ }
|
|
68
|
+
return { status: res.status, ...json }
|
|
69
|
+
}
|
|
70
|
+
const invText = r => String(r?.data?.result?.text ?? r?.data?.text ?? '')
|
|
71
|
+
const invErr = r => Boolean(r?.data?.result?.isError ?? r?.data?.isError)
|
|
72
|
+
const callAs = (agentId, token, tool, args) => api('POST', '/api/workshop/agent-tools/invoke', { agentId, tool, args }, undefined, { 'x-aw-agent-token': token })
|
|
73
|
+
|
|
74
|
+
let admin = ''
|
|
75
|
+
try {
|
|
76
|
+
let healthy = false
|
|
77
|
+
for (let i = 0; i < 90; i++) {
|
|
78
|
+
await sleep(2000)
|
|
79
|
+
try {
|
|
80
|
+
const h = await api('GET', '/api/health', undefined, undefined, {}, 3000)
|
|
81
|
+
if (h?.data?.status === 'ok' && h?.data?.workshop === 'ready') {
|
|
82
|
+
healthy = true
|
|
83
|
+
break
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch { /* 未就绪 */ }
|
|
87
|
+
}
|
|
88
|
+
ok('A0', '隔离实例④启动 + workshop ready', healthy, `port=${port}`)
|
|
89
|
+
if (!healthy) throw new Error('实例未就绪')
|
|
90
|
+
admin = (await api('POST', '/api/users/register', { name: `al-admin-${TAG}`, email: `al-${TAG}@awshop.local`, password: 'AlAdmin#2026' })).data?.token
|
|
91
|
+
ok('A0b', 'admin 注册', Boolean(admin))
|
|
92
|
+
|
|
93
|
+
// ── 场景:两线各带数采;频道绑线A;两个 Agent(w1 绑线A 数采,w2 无绑定) ──
|
|
94
|
+
const lineA = (await api('POST', '/api/workshop/dcw/lines', { name: `台账线A-${TAG}` }, admin)).data?.line?.id
|
|
95
|
+
const lineB = (await api('POST', '/api/workshop/dcw/lines', { name: `台账线B-${TAG}` }, admin)).data?.line?.id
|
|
96
|
+
const dnA = (await api('POST', '/api/workshop/daq', { name: `数采A-${TAG}`, driver: 'mock', templateRef: 'daq-temp-tc', lineId: lineA, intervalMs: 1000, publishIntervalMs: 0 }, admin)).data?.node?.id
|
|
97
|
+
const ch = (await api('POST', '/api/workshop/channels', { name: `台账频道-${TAG}`, lineId: lineA, leadAgent: { name: `al-lead-${TAG}`, harness: 'mock' } }, admin)).data
|
|
98
|
+
const mkWorker = async (name) => {
|
|
99
|
+
const w = (await api('POST', `/api/workshop/channels/${ch.channelId}/agents`, { name, harness: 'mock', role: 'worker' }, admin)).data
|
|
100
|
+
return String(w?.id ?? w?.agentId ?? '')
|
|
101
|
+
}
|
|
102
|
+
const w1 = await mkWorker(`al-w1-${TAG}`)
|
|
103
|
+
const w2 = await mkWorker(`al-w2-${TAG}`)
|
|
104
|
+
void w2
|
|
105
|
+
await api('POST', '/api/workshop/daq/controller', { action: 'start' }, admin)
|
|
106
|
+
await sleep(6000)
|
|
107
|
+
const b1 = await api('POST', '/api/workshop/agent-tools/bindings', { agentId: w1, nodeId: dnA, kind: 'daq', mode: 'auto' }, admin)
|
|
108
|
+
ok('A1', '场景就绪(两线/数采/频道/双 worker/绑定)', Boolean(lineA && lineB && dnA && w1 && w2) && b1.status === 200, JSON.stringify({ lineA, lineB, dnA, w1, w2 }))
|
|
109
|
+
const tok1 = (() => {
|
|
110
|
+
const db = new DatabaseSync(join(ROOT, 'home', 'data', 'workshop.sqlite'))
|
|
111
|
+
try {
|
|
112
|
+
return String(db.prepare('SELECT token FROM channel_agents WHERE id = ?').get(w1)?.token ?? '')
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
db.close()
|
|
116
|
+
}
|
|
117
|
+
})()
|
|
118
|
+
void w2
|
|
119
|
+
|
|
120
|
+
// ── Agent 持久化分析结果(先抓真实数据再留痕) ──
|
|
121
|
+
const data = await callAs(w1, tok1, 'daq_query', { node_id: dnA, last_minutes: 5 })
|
|
122
|
+
const sampleOk = !invErr(data)
|
|
123
|
+
const nowIso = new Date().toISOString()
|
|
124
|
+
const saved1 = await callAs(w1, tok1, 'analysis_save', {
|
|
125
|
+
title: `腔体温度趋势分析-${TAG}`,
|
|
126
|
+
summary: '近5分钟温度稳定在设定带内,无越限趋势',
|
|
127
|
+
conclusions: '1) 样本充足;2) 均值接近设定值;3) 无报警趋势',
|
|
128
|
+
report: `# 腔体温度趋势分析\n\n数据来源 daq_query(${dnA}),窗口最近5分钟。逐桶统计显示温度围绕设定值窄幅波动,无单向漂移;建议维持当前配方。`,
|
|
129
|
+
category: 'trend',
|
|
130
|
+
line_id: lineA,
|
|
131
|
+
window_from: nowIso,
|
|
132
|
+
window_to: nowIso,
|
|
133
|
+
data_sources: [`daq_query:${dnA}`],
|
|
134
|
+
metrics: { sampleCount: 30, meanTempC: 60.2, maxDeviationC: 1.8 },
|
|
135
|
+
})
|
|
136
|
+
const save1Text = invText(saved1)
|
|
137
|
+
const reportId = save1Text.match(/ar-[a-z0-9]+/i)?.[0] ?? ''
|
|
138
|
+
ok('A2', `Agent analysis_save 持久化(先抓数据:采样=${sampleOk})→ 返回台账 id`, sampleOk && !invErr(saved1) && Boolean(reportId), save1Text.slice(0, 240))
|
|
139
|
+
const saved2 = await callAs(w1, tok1, 'analysis_save', {
|
|
140
|
+
title: `压力越限筛查-${TAG}`,
|
|
141
|
+
summary: '压力测点无越限记录,筛查通过',
|
|
142
|
+
conclusions: '无越限',
|
|
143
|
+
report: '压力筛查:窗口内无越限样本。',
|
|
144
|
+
category: 'alarm-review',
|
|
145
|
+
line_id: lineA,
|
|
146
|
+
})
|
|
147
|
+
ok('A2b', '第二条留痕(不同类别)', !invErr(saved2), invText(saved2).slice(0, 200))
|
|
148
|
+
|
|
149
|
+
// ── 检索:列表 / 关键词 / 类别 / 详情 ──
|
|
150
|
+
const qList = await callAs(w1, tok1, 'analysis_query', { line_id: lineA, limit: 20 })
|
|
151
|
+
const listText = invText(qList)
|
|
152
|
+
ok('A3', 'analysis_query 按线列表 → 两条可见', !invErr(qList) && listText.includes(`趋势分析-${TAG}`) && listText.includes(`越限筛查-${TAG}`), listText.slice(0, 260))
|
|
153
|
+
const qKw = await callAs(w1, tok1, 'analysis_query', { q: '越限筛查' })
|
|
154
|
+
ok('A3b', '关键词检索命中目标报告', !invErr(qKw) && invText(qKw).includes(`压力越限筛查-${TAG}`), invText(qKw).slice(0, 220))
|
|
155
|
+
const qDetail = await callAs(w1, tok1, 'analysis_query', { report_id: reportId })
|
|
156
|
+
const detailText = invText(qDetail)
|
|
157
|
+
ok('A4', 'report_id 精确查回详情(完整正文+结论+指标)',
|
|
158
|
+
!invErr(qDetail) && detailText.includes('腔体温度趋势分析') && detailText.includes('逐桶统计') && detailText.includes('60.2') && detailText.includes('样本充足'),
|
|
159
|
+
detailText.slice(0, 320))
|
|
160
|
+
|
|
161
|
+
// ── 权限边界:跨线不可见;append-only(工具面无修改);人工修订走 REST 且带归因 ──
|
|
162
|
+
const qB = await callAs(w1, tok1, 'analysis_query', { line_id: lineB })
|
|
163
|
+
ok('A5', '跨线查询不泄漏他线报告', !invText(qB).includes(`趋势分析-${TAG}`), invText(qB).slice(0, 160))
|
|
164
|
+
const toolsW1 = (await api('GET', `/api/workshop/agent-tools/list?agentId=${encodeURIComponent(w1)}`, undefined, undefined, { 'x-aw-agent-token': tok1 })).data?.tools ?? []
|
|
165
|
+
const analysisTools = toolsW1.filter(t => t.name.startsWith('analysis_')).map(t => t.name)
|
|
166
|
+
ok('A5b', 'Agent 分析工具面=save+query(无修改/删除,append-only)', analysisTools.includes('analysis_save') && analysisTools.includes('analysis_query') && !analysisTools.some(t => /edit|delete|update/.test(t)), analysisTools.join(','))
|
|
167
|
+
const w1Row = (await api('GET', `/api/workshop/agent-tools/list?agentId=${encodeURIComponent(w1)}`, undefined, undefined, { 'x-aw-agent-token': tok1 }))
|
|
168
|
+
void w1Row
|
|
169
|
+
// 人工修订(REST,editor 归因)→ Agent 查回的是修订后内容
|
|
170
|
+
const patched = await api('PATCH', `/api/workshop/analysis/${reportId}`, { summary: '近5分钟温度稳定(人工复核修订)' }, admin)
|
|
171
|
+
ok('A6', '人工经 REST 修订摘要(admin/editor 通道)', patched.status === 200, `status=${patched.status} msg=${String(patched?.message ?? '').slice(0, 120)}`)
|
|
172
|
+
const qAfter = await callAs(w1, tok1, 'analysis_query', { report_id: reportId })
|
|
173
|
+
ok('A6b', 'Agent 查回修订后内容(台账修订留痕)', !invErr(qAfter) && invText(qAfter).includes('人工复核修订'), invText(qAfter).slice(0, 200))
|
|
174
|
+
// REST 列表面(前端 /analysis 数据源)
|
|
175
|
+
const restList = await api('GET', `/api/workshop/analysis?lineId=${lineA}&limit=20`, undefined, admin)
|
|
176
|
+
const restRows = restList?.data?.reports ?? restList?.data?.items ?? restList?.data ?? []
|
|
177
|
+
const restHit = JSON.stringify(restRows).includes(`腔体温度趋势分析-${TAG}`)
|
|
178
|
+
ok('A7', 'REST /analysis 列表面可见台账(前端 /analysis 页数据源)', restList.status === 200 && restHit, `status=${restList.status} rows=${Array.isArray(restRows) ? restRows.length : '?'} hit=${restHit}`)
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
ok('FATAL', 'E2E 未捕获异常', false, err instanceof Error ? `${err.message}\n${err.stack ?? ''}` : String(err))
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
try {
|
|
185
|
+
child.kill()
|
|
186
|
+
}
|
|
187
|
+
catch { /* noop */ }
|
|
188
|
+
const passed = results.filter(r => r.pass).length
|
|
189
|
+
const total = results.length
|
|
190
|
+
const evidenceDir = join(REPO, 'docs', 'audit', 'evidence', '2026-10-28-analysis-ledger')
|
|
191
|
+
mkdirSync(evidenceDir, { recursive: true })
|
|
192
|
+
const evidencePath = join(evidenceDir, 'report.json')
|
|
193
|
+
writeFileSync(evidencePath, JSON.stringify({
|
|
194
|
+
at: new Date().toISOString(),
|
|
195
|
+
env: { base: BASE, home: join(ROOT, 'home'), devLog: join(ROOT, 'dev.log'), instance: '④-analysis-ledger', mode: 'isolated', harness: 'mock(deterministic)' },
|
|
196
|
+
summary: { total, passed, failed: total - passed, verdict: passed === total ? 'PASS' : 'FAIL' },
|
|
197
|
+
results,
|
|
198
|
+
}, null, 2))
|
|
199
|
+
console.log(`\n结论:${passed === total ? 'PASS' : 'FAIL'}(${passed}/${total})`)
|
|
200
|
+
console.log(`证据:${evidencePath}`)
|
|
201
|
+
process.exit(passed === total ? 0 : 1)
|
|
202
|
+
}
|
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* 绑定方式 × 真实协议验收 —— line-recipe / recipe / dcw / 无 dcw 四种授权面
|
|
4
|
+
*
|
|
5
|
+
* 场景:一条真实 Modbus/OPC UA/MQTT/HTTP 产线(物理孪生模拟器),两个配方 R1/R2。
|
|
6
|
+
* 四个 Agent(独立频道,同一产线)分别采用不同绑定方式,用真实 `agent-tools/invoke`
|
|
7
|
+
* (agent 令牌 + HITL)验证设计语义,并直读设备侧信号确认"能不能真下发":
|
|
8
|
+
*
|
|
9
|
+
* A 窄绑:dcw(zone1,screw)+ recipe(R1) → 下发被收窄到绑定点位,未绑点被拒且点名
|
|
10
|
+
* B 配方:recipe(R1) 且无 dcw → 向下兼容:整配方全参数可下发
|
|
11
|
+
* C 产线:line-recipe(整线) 且无 dcw → 可新建/修改配方;下发按"无 dcw=全量"兼容
|
|
12
|
+
* D 裸奔:无任何绑定(仅频道绑线只读) → 读允许,写/版本操作拒绝
|
|
13
|
+
*
|
|
14
|
+
* 收口条件:每种绑定的允许/拒绝与设备侧实际变化一致;Qwen 模型自主下发亦落设备。
|
|
15
|
+
*
|
|
16
|
+
* 运行:node scripts/e2e-binding-modes-real.mjs(自起隔离模拟器 4036;平台实例 3421)
|
|
17
|
+
* 证据:docs/audit/evidence/2026-10-29-binding-modes/report.json
|
|
18
|
+
*/
|
|
19
|
+
import { spawn } from 'node:child_process'
|
|
20
|
+
import { existsSync, mkdirSync, openSync, readFileSync, rmSync, writeFileSync } from 'node:fs'
|
|
21
|
+
import { dirname, join, resolve } from 'node:path'
|
|
22
|
+
import { pathToFileURL, fileURLToPath } from 'node:url'
|
|
23
|
+
import { DatabaseSync } from 'node:sqlite'
|
|
24
|
+
|
|
25
|
+
const REPO = resolve(dirname(fileURLToPath(import.meta.url)), '..')
|
|
26
|
+
const HOME = process.env.AW_BIND_HOME ?? 'D:/tmp/aw-bind-20261029'
|
|
27
|
+
const PORT = Number(process.env.AW_BIND_PORT ?? 3421)
|
|
28
|
+
const BASE = `http://127.0.0.1:${PORT}`
|
|
29
|
+
const SIM_PORT = Number(process.env.AW_BIND_SIM_PORT ?? 4036)
|
|
30
|
+
const SIM_BASE = `http://127.0.0.1:${SIM_PORT}`
|
|
31
|
+
const SIM_SHADOW = process.env.AW_BIND_SIM_SHADOW ?? 'D:/tmp/aw-phys-sim-shadow-4036'
|
|
32
|
+
const EVIDENCE_DIR = join(REPO, 'docs', 'audit', 'evidence', '2026-10-29-binding-modes')
|
|
33
|
+
|
|
34
|
+
process.env.SIM_BASE = SIM_BASE
|
|
35
|
+
process.env.SIM_PORT = String(SIM_PORT)
|
|
36
|
+
process.env.SIM_SHADOW_DIR = SIM_SHADOW
|
|
37
|
+
process.env.NO_PROXY = '127.0.0.1,localhost'
|
|
38
|
+
process.env.no_proxy = '127.0.0.1,localhost'
|
|
39
|
+
|
|
40
|
+
const results = []
|
|
41
|
+
const sleep = ms => new Promise(r => setTimeout(r, ms))
|
|
42
|
+
const ok = (id, name, cond, detail = '') => {
|
|
43
|
+
results.push({ id, name, pass: Boolean(cond), detail: String(detail).slice(0, 1800) })
|
|
44
|
+
console.log(`${cond ? '✔' : '✖'} [${id}] ${name}${cond ? '' : ` — ${String(detail).slice(0, 750)}`}`)
|
|
45
|
+
return Boolean(cond)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async function simApi(method, path, body) {
|
|
49
|
+
const res = await fetch(SIM_BASE + path, {
|
|
50
|
+
method,
|
|
51
|
+
headers: body !== undefined ? { 'content-type': 'application/json' } : {},
|
|
52
|
+
body: body === undefined ? undefined : JSON.stringify(body),
|
|
53
|
+
signal: AbortSignal.timeout(20_000),
|
|
54
|
+
})
|
|
55
|
+
const json = await res.json().catch(() => null)
|
|
56
|
+
return { status: res.status, data: json?.data ?? json, message: json?.message ?? '' }
|
|
57
|
+
}
|
|
58
|
+
async function simNodes() {
|
|
59
|
+
const r = await simApi('GET', '/api/nodes')
|
|
60
|
+
return r.data ?? []
|
|
61
|
+
}
|
|
62
|
+
function simSignal(nodes, deviceId, signalId) {
|
|
63
|
+
const sig = (nodes.find(n => n.id === deviceId)?.signals ?? []).find(s => s.id === signalId)
|
|
64
|
+
return sig?.value == null ? null : Number(sig.value)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function stopInstance(home) {
|
|
68
|
+
const pidFile = join(home, 'server.pid')
|
|
69
|
+
if (!existsSync(pidFile)) return
|
|
70
|
+
const pid = Number(readFileSync(pidFile, 'utf8').trim())
|
|
71
|
+
if (!Number.isInteger(pid) || pid <= 0) return
|
|
72
|
+
try {
|
|
73
|
+
spawn('taskkill', ['/PID', String(pid), '/T', '/F'], { windowsHide: true })
|
|
74
|
+
}
|
|
75
|
+
catch { /* 已退出 */ }
|
|
76
|
+
}
|
|
77
|
+
async function health() {
|
|
78
|
+
try {
|
|
79
|
+
const r = await fetch(`${BASE}/api/health`, { signal: AbortSignal.timeout(2500) })
|
|
80
|
+
if (!r.ok) return null
|
|
81
|
+
return (await r.json())?.data ?? null
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return null
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async function startInstance() {
|
|
88
|
+
stopInstance(HOME)
|
|
89
|
+
await sleep(1500)
|
|
90
|
+
if (await health()) throw new Error(`端口 ${PORT} 已被非本验收实例占用`)
|
|
91
|
+
if (!/aw-bind/.test(HOME)) throw new Error(`拒绝清理非验收目录:${HOME}`)
|
|
92
|
+
rmSync(HOME, { recursive: true, force: true })
|
|
93
|
+
mkdirSync(HOME, { recursive: true })
|
|
94
|
+
const log = openSync(join(HOME, 'server.log'), 'a')
|
|
95
|
+
const child = spawn(process.execPath, [join(REPO, '.output', 'server', 'index.mjs')], {
|
|
96
|
+
cwd: REPO,
|
|
97
|
+
env: {
|
|
98
|
+
...process.env,
|
|
99
|
+
AW_MODE: 'home',
|
|
100
|
+
AW_HOME: HOME,
|
|
101
|
+
PORT: String(PORT),
|
|
102
|
+
NUXT_SESSION_PASSWORD: 'bind-20261029-session',
|
|
103
|
+
AW_TRIAL_INTERVAL_MS: '0',
|
|
104
|
+
AW_RATE_LIMIT_OFF: '1',
|
|
105
|
+
NO_PROXY: '127.0.0.1,localhost',
|
|
106
|
+
},
|
|
107
|
+
detached: true,
|
|
108
|
+
stdio: ['ignore', log, log],
|
|
109
|
+
windowsHide: true,
|
|
110
|
+
})
|
|
111
|
+
child.unref()
|
|
112
|
+
writeFileSync(join(HOME, 'server.pid'), String(child.pid))
|
|
113
|
+
for (let i = 0; i < 120; i++) {
|
|
114
|
+
await sleep(1000)
|
|
115
|
+
const h = await health()
|
|
116
|
+
if (h?.workshop === 'ready') return h
|
|
117
|
+
}
|
|
118
|
+
throw new Error('隔离实例未在 120s 内就绪')
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
let admin = ''
|
|
122
|
+
async function apiOnce(method, path, body, token = admin, extraHeaders = {}, timeoutMs = 120_000) {
|
|
123
|
+
const res = await fetch(BASE + path, {
|
|
124
|
+
method,
|
|
125
|
+
headers: {
|
|
126
|
+
...(body !== undefined ? { 'content-type': 'application/json' } : {}),
|
|
127
|
+
...(token ? { authorization: `Bearer ${token}` } : {}),
|
|
128
|
+
...extraHeaders,
|
|
129
|
+
},
|
|
130
|
+
body: body === undefined ? undefined : JSON.stringify(body),
|
|
131
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
132
|
+
})
|
|
133
|
+
let json = null
|
|
134
|
+
try {
|
|
135
|
+
json = await res.json()
|
|
136
|
+
}
|
|
137
|
+
catch { /* 非 JSON */ }
|
|
138
|
+
return { status: res.status, ...json }
|
|
139
|
+
}
|
|
140
|
+
async function api(method, path, body, token = admin, extraHeaders = {}, timeoutMs = 120_000) {
|
|
141
|
+
try {
|
|
142
|
+
return await apiOnce(method, path, body, token, extraHeaders, timeoutMs)
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
if (err instanceof TypeError) {
|
|
146
|
+
await sleep(1500)
|
|
147
|
+
return apiOnce(method, path, body, token, extraHeaders, timeoutMs)
|
|
148
|
+
}
|
|
149
|
+
throw err
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function must(resp, what) {
|
|
153
|
+
if (resp.status !== 200 || !resp?.data) throw new Error(`${what} 失败:${resp.status} ${JSON.stringify(resp).slice(0, 500)}`)
|
|
154
|
+
return resp.data
|
|
155
|
+
}
|
|
156
|
+
function agentTokenOf(agentId) {
|
|
157
|
+
const db = new DatabaseSync(join(HOME, 'data', 'workshop.sqlite'), { readOnly: true })
|
|
158
|
+
try {
|
|
159
|
+
return String(db.prepare('SELECT token FROM channel_agents WHERE id = ?').get(agentId)?.token ?? '')
|
|
160
|
+
}
|
|
161
|
+
finally {
|
|
162
|
+
db.close()
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
async function pendingOf(agentId) {
|
|
166
|
+
const r = await api('GET', `/api/workshop/agent-tools/approvals?agentId=${encodeURIComponent(agentId)}`)
|
|
167
|
+
return (r?.data?.approvals ?? []).filter(a => a.status === 'pending')
|
|
168
|
+
}
|
|
169
|
+
/** 以 agent 令牌调用工具;出现 HITL 卡自动批准(验收模拟人工),返回文本/isError */
|
|
170
|
+
async function invokeAs(agentId, token, tool, args, { approve = true, timeoutMs = 180_000 } = {}) {
|
|
171
|
+
const cards = []
|
|
172
|
+
let resp = null
|
|
173
|
+
let err = null
|
|
174
|
+
const started = Date.now()
|
|
175
|
+
const p = api('POST', '/api/workshop/agent-tools/invoke', { agentId, tool, args }, undefined, { 'x-aw-agent-token': token }, timeoutMs)
|
|
176
|
+
.then((r) => { resp = r })
|
|
177
|
+
.catch((e) => { err = e })
|
|
178
|
+
while (!resp && !err && Date.now() - started < timeoutMs - 10_000) {
|
|
179
|
+
if (approve) {
|
|
180
|
+
for (const card of await pendingOf(agentId)) {
|
|
181
|
+
if (cards.includes(card.id)) continue
|
|
182
|
+
cards.push(card.id)
|
|
183
|
+
console.log(` · [${tool}] HITL 卡 ${card.id} → 批准`)
|
|
184
|
+
await api('POST', `/api/workshop/agent-tools/approvals/${card.id}/decide`, { approved: true, comment: '验收:绑定方式测试' })
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
await sleep(1000)
|
|
188
|
+
}
|
|
189
|
+
await p
|
|
190
|
+
const text = String(resp?.data?.result?.text ?? resp?.data?.text ?? '')
|
|
191
|
+
const isError = Boolean(resp?.data?.result?.isError ?? resp?.data?.isError) || Boolean(err)
|
|
192
|
+
return { resp, text, isError, cards }
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const evidence = { at: new Date().toISOString(), scenario: {}, assertions: results }
|
|
196
|
+
|
|
197
|
+
try {
|
|
198
|
+
const sim = await import(pathToFileURL(join(REPO, 'bench', 'lib', 'sim.mjs')).href)
|
|
199
|
+
const boot = await sim.ensureSimulator({ log: m => console.log(` ${m}`) })
|
|
200
|
+
ok('S0', '隔离模拟器在线(4036)', boot.started || /already-up/.test(String(boot.reason)), JSON.stringify(boot))
|
|
201
|
+
stopInstance('D:/tmp/aw-golive-20261028')
|
|
202
|
+
stopInstance('D:/tmp/aw-phys-20261028')
|
|
203
|
+
await sleep(2000)
|
|
204
|
+
await sim.applyPreset('cast-film-physics')
|
|
205
|
+
const nodes = await simNodes()
|
|
206
|
+
ok('S1', '四协议设备端点在线', nodes.filter(n => n.runtime?.running).length >= 5, nodes.map(n => `${n.id}:${n.protocol}`).join(', '))
|
|
207
|
+
|
|
208
|
+
const exportItems = async id => must(await simApi('GET', `/api/nodes/${id}/export`), `导出 ${id}`).items ?? []
|
|
209
|
+
const bySignal = async (id, signal) => {
|
|
210
|
+
const row = (await exportItems(id)).find(i => i.signal === signal)
|
|
211
|
+
if (!row) throw new Error(`导出缺少 ${id}/${signal}`)
|
|
212
|
+
return row.driverConfig
|
|
213
|
+
}
|
|
214
|
+
const cfgZone = await bySignal('dev-extruder-mbtcp', '加热区1SP')
|
|
215
|
+
const cfgScrew = await bySignal('dev-extruder-opcua', 'ScrewSpeedSP')
|
|
216
|
+
const cfgLine = await bySignal('dev-gauge-mqtt', 'lineSpeedSP')
|
|
217
|
+
const cfgGap = await bySignal('dev-inspect-http', 'dieGapSP')
|
|
218
|
+
const cfgTemp = await bySignal('dev-extruder-mbtcp', '熔体温度')
|
|
219
|
+
|
|
220
|
+
const h = await startInstance()
|
|
221
|
+
ok('P0', '生产构建隔离实例就绪', h?.workshop === 'ready', `port=${PORT} version=${h?.version}`)
|
|
222
|
+
admin = (await api('POST', '/api/users/register', { name: '绑定矩阵管理员', email: `bind-${Date.now()}@awshop.local`, password: 'Bind#2026' })).data?.token
|
|
223
|
+
ok('P0b', 'admin 注册', Boolean(admin))
|
|
224
|
+
|
|
225
|
+
const line = must(await api('POST', '/api/workshop/dcw/lines', { name: '绑定矩阵线', description: '四种绑定方式 × 真实协议' }), '建线').line?.id
|
|
226
|
+
const daq = must(await api('POST', '/api/workshop/daq', {
|
|
227
|
+
templateRef: 'daq-temp-tc', name: '熔体温度', driver: 'modbus-tcp', driverConfig: cfgTemp,
|
|
228
|
+
lineId: line, intervalMs: 1000, publishIntervalMs: 0, min: 0, max: 400, decimals: 2,
|
|
229
|
+
}), '建 DAQ').node?.id
|
|
230
|
+
const mk = async (name, driver, driverConfig, unit, min, max, decimals, stepLimit) =>
|
|
231
|
+
must(await api('POST', '/api/workshop/dcw', {
|
|
232
|
+
templateRef: 'temp-sp', name, driver, driverConfig, lineId: line, unit, min, max, decimals,
|
|
233
|
+
stepLimit, writeLockSeconds: 0, readIntervalMs: 2000,
|
|
234
|
+
}), `建 ${name}`).node?.id
|
|
235
|
+
const zone = await mk('加热区1设定', 'modbus-tcp', cfgZone, 'C', 120, 260, 2, 5)
|
|
236
|
+
const screw = await mk('螺杆转速设定', 'opcua', cfgScrew, 'rpm', 50, 200, 0, 10)
|
|
237
|
+
const speed = await mk('线速度设定', 'mqtt', cfgLine, 'm/min', 20, 120, 1, 5)
|
|
238
|
+
const gap = await mk('模口间隙设定', 'http', { ...cfgGap, allowPrivateHost: 'true' }, 'mm', 0.5, 2, 3, 0.2)
|
|
239
|
+
const dw = [zone, screw, speed, gap]
|
|
240
|
+
ok('P1', '一 DAQ + 四协议 DCW 接入', Boolean(line && daq) && dw.every(Boolean), JSON.stringify({ line, daq, dw }))
|
|
241
|
+
|
|
242
|
+
const params = (await api('GET', `/api/workshop/dcw/params?lineId=${line}`)).data?.params ?? []
|
|
243
|
+
const limits = { zone1_sp: { min: 120, max: 260 }, screw_sp: { min: 50, max: 200 }, line_speed_sp: { min: 20, max: 120 }, die_gap_sp: { min: 0.5, max: 2 } }
|
|
244
|
+
const keys = [['zone1_sp', zone], ['screw_sp', screw], ['line_speed_sp', speed], ['die_gap_sp', gap]]
|
|
245
|
+
for (const [key, nodeId] of keys) {
|
|
246
|
+
const row = params.find(p => p.nodeId === nodeId)
|
|
247
|
+
if (row) await api('PATCH', `/api/workshop/dcw/params/${row.id}`, { key, desc: key, ...limits[key] })
|
|
248
|
+
else await api('POST', '/api/workshop/dcw/params', { nodeId, key, desc: key, ...limits[key] })
|
|
249
|
+
}
|
|
250
|
+
const product = must(await api('POST', '/api/workshop/dcw/products', { name: '绑定矩阵产品', lineId: line, paramLimits: limits }), '建产品').product
|
|
251
|
+
const R1 = must(await api('POST', '/api/workshop/dcw/recipes', {
|
|
252
|
+
name: '绑定矩阵配方R1', productId: product.id, opIntervalMs: 0,
|
|
253
|
+
params: [
|
|
254
|
+
{ nodeId: zone, value: 195, min: 120, max: 260, stepLimit: 5 },
|
|
255
|
+
{ nodeId: screw, value: 160, min: 50, max: 200, stepLimit: 10 },
|
|
256
|
+
{ nodeId: speed, value: 90, min: 20, max: 120, stepLimit: 5 },
|
|
257
|
+
{ nodeId: gap, value: 1.1, min: 0.5, max: 2, stepLimit: 0.2 },
|
|
258
|
+
],
|
|
259
|
+
daqWindows: [{ nodeId: daq, min: 0, max: 400 }],
|
|
260
|
+
}), '建 R1').recipe
|
|
261
|
+
await api('POST', '/api/workshop/daq/controller', { action: 'start' })
|
|
262
|
+
const started = await api('POST', `/api/workshop/dcw/lines/${line}/start`, { recipeId: R1.id })
|
|
263
|
+
await api('PATCH', `/api/workshop/dcw/lines/${line}`, { controlMode: 'auto', confirm: true })
|
|
264
|
+
await sleep(10_000)
|
|
265
|
+
const dev0 = await simNodes()
|
|
266
|
+
ok('P2', '开线且 R1 基线落设备', started.status === 200
|
|
267
|
+
&& Math.abs((simSignal(dev0, 'dev-extruder-mbtcp', 'zone1-sp') ?? NaN) - 195) < 0.02
|
|
268
|
+
&& Math.abs((simSignal(dev0, 'dev-extruder-opcua', 'screw-sp') ?? NaN) - 160) < 0.02,
|
|
269
|
+
JSON.stringify({ zone: simSignal(dev0, 'dev-extruder-mbtcp', 'zone1-sp'), screw: simSignal(dev0, 'dev-extruder-opcua', 'screw-sp') }))
|
|
270
|
+
|
|
271
|
+
// ── 四个 Agent/频道(同一产线),不同绑定 ──
|
|
272
|
+
const tools = ['my_industrial_nodes', 'line_context', 'daq_query', 'recipe_catalog', 'recipe_trial', 'recipe_update', 'recipe_rollback', 'recipe_create', 'complete_task', 'report_progress'].map(name => ({ name, enabled: true }))
|
|
273
|
+
const mkChannel = async (name, harness) => {
|
|
274
|
+
const ch = (await api('POST', '/api/workshop/channels', {
|
|
275
|
+
name, lineId: line,
|
|
276
|
+
scenarioPrompt: '你是工艺操作员:只操作你被授权的对象;未收到任务时禁止自主下发;严格按任务执行。',
|
|
277
|
+
leadAgent: { name: `${name}-lead`, harness },
|
|
278
|
+
})).data
|
|
279
|
+
await api('PATCH', `/api/workshop/channels/${ch.channelId}`, { llm: { provider: 'lm-studio', model: process.env.AW_DEMO_MODEL ?? 'qwen3.5-9b-64k' } })
|
|
280
|
+
await api('PATCH', `/api/workshop/channels/${ch.channelId}/execution-mode`, { mode: 'manual' })
|
|
281
|
+
await api('PUT', `/api/workshop/channels/${ch.channelId}/tools`, { mode: 'selected', tools })
|
|
282
|
+
return { channelId: ch.channelId, agentId: ch.leadAgentId, token: agentTokenOf(ch.leadAgentId) }
|
|
283
|
+
}
|
|
284
|
+
const A = await mkChannel('验收-窄绑dcw', 'mock')
|
|
285
|
+
const B = await mkChannel('验收-仅配方', 'mock')
|
|
286
|
+
const C = await mkChannel('验收-产线管理权', 'mock')
|
|
287
|
+
const D = await mkChannel('验收-无绑定', 'mock')
|
|
288
|
+
|
|
289
|
+
const bind = async (agentId, nodeId, kind) => {
|
|
290
|
+
const r = await api('POST', '/api/workshop/agent-tools/bindings', { agentId, nodeId, kind, mode: 'auto' })
|
|
291
|
+
if (r?.data?.binding?.mode === 'manual') await api('PATCH', `/api/workshop/agent-tools/bindings/${r.data.binding.id}`, { mode: 'auto', confirm: true })
|
|
292
|
+
return r
|
|
293
|
+
}
|
|
294
|
+
const bA1 = await bind(A.agentId, zone, 'dcw')
|
|
295
|
+
const bA2 = await bind(A.agentId, screw, 'dcw')
|
|
296
|
+
const bAR = await bind(A.agentId, R1.id, 'recipe')
|
|
297
|
+
const bBR = await bind(B.agentId, R1.id, 'recipe')
|
|
298
|
+
const bCL = await bind(C.agentId, line, 'line-recipe')
|
|
299
|
+
ok('G0', '四种绑定建立(dcw×2+recipe / recipe / line-recipe / 无)',
|
|
300
|
+
[bA1, bA2, bAR, bBR, bCL].every(r => r.status === 200 && r?.data?.binding?.id),
|
|
301
|
+
JSON.stringify({ A: [bA1.status, bA2.status, bAR.status], B: bBR.status, C: bCL.status, D: 'none' }))
|
|
302
|
+
|
|
303
|
+
// A0 注入面:绑定点位 + 下发收窄声明(配方面会列出全部参数供阅读,写面才是授权面)
|
|
304
|
+
const aNodes = await invokeAs(A.agentId, A.token, 'my_industrial_nodes', {})
|
|
305
|
+
const aNodesText = aNodes.text
|
|
306
|
+
ok('A0', '窄绑 Agent 注入面声明「下发收窄」且含绑定点位', /加热区1设定/.test(aNodesText)
|
|
307
|
+
&& /螺杆转速设定/.test(aNodesText) && /收窄|只能下发|已绑定数控节点/.test(aNodesText),
|
|
308
|
+
aNodesText.replace(/\s+/g, ' ').slice(0, 600))
|
|
309
|
+
|
|
310
|
+
// A1 窄绑:整配方四参数 → 拒绝并点名未绑点位
|
|
311
|
+
const devA0 = await simNodes()
|
|
312
|
+
const aFull = await invokeAs(A.agentId, A.token, 'recipe_trial', {
|
|
313
|
+
line_id: line,
|
|
314
|
+
params: [{ node_id: zone, value: 200 }, { node_id: screw, value: 170 }, { node_id: speed, value: 85 }, { node_id: gap, value: 1.2 }],
|
|
315
|
+
hypothesis: '窄绑验收:整配方应在未绑点位处被拒',
|
|
316
|
+
})
|
|
317
|
+
const devA1 = await simNodes()
|
|
318
|
+
const unchangedA1 = Math.abs((simSignal(devA1, 'dev-gauge-mqtt', 'linespeed-sp') ?? NaN) - 90) < 0.02
|
|
319
|
+
&& Math.abs((simSignal(devA1, 'dev-extruder-mbtcp', 'zone1-sp') ?? NaN) - (simSignal(devA0, 'dev-extruder-mbtcp', 'zone1-sp') ?? NaN)) < 0.02
|
|
320
|
+
ok('A1', '窄绑整配方被拒且点名未绑点位、设备不变',
|
|
321
|
+
aFull.isError && /线速度设定|模口间隙设定/.test(aFull.text) && unchangedA1,
|
|
322
|
+
aFull.text.replace(/\s+/g, ' ').slice(0, 600))
|
|
323
|
+
|
|
324
|
+
// A2 窄绑:只下发绑定的两个点 → 成功,设备变化
|
|
325
|
+
const aPart = await invokeAs(A.agentId, A.token, 'recipe_trial', {
|
|
326
|
+
line_id: line,
|
|
327
|
+
params: [{ node_id: zone, value: 200 }, { node_id: screw, value: 170 }],
|
|
328
|
+
hypothesis: '窄绑验收:只改动被授权的两个点位',
|
|
329
|
+
})
|
|
330
|
+
await sleep(1500)
|
|
331
|
+
const devA2 = await simNodes()
|
|
332
|
+
const zoneA2 = simSignal(devA2, 'dev-extruder-mbtcp', 'zone1-sp')
|
|
333
|
+
const screwA2 = simSignal(devA2, 'dev-extruder-opcua', 'screw-sp')
|
|
334
|
+
ok('A2', '窄绑只下发绑定点位成功(设备=200/170),未绑点位不动',
|
|
335
|
+
!aPart.isError && Math.abs((zoneA2 ?? NaN) - 200) < 0.02 && Math.abs((screwA2 ?? NaN) - 170) < 0.02
|
|
336
|
+
&& Math.abs((simSignal(devA2, 'dev-gauge-mqtt', 'linespeed-sp') ?? NaN) - 90) < 0.02,
|
|
337
|
+
`text=${aPart.text.replace(/\s+/g, ' ').slice(0, 320)} zone=${zoneA2} screw=${screwA2}`)
|
|
338
|
+
|
|
339
|
+
// A3 版本操作:recipe 绑定即可(不需要 dcw 全量)
|
|
340
|
+
const aUpd = await invokeAs(A.agentId, A.token, 'recipe_update', {
|
|
341
|
+
recipe_id: R1.id, params: [{ node_id: zone, value: 197 }], reason: '窄绑验收:recipe 绑定者可改配方版本',
|
|
342
|
+
})
|
|
343
|
+
const vAfterA = ((await api('GET', `/api/workshop/dcw/recipes/${R1.id}/versions`)).data?.versions ?? [])
|
|
344
|
+
ok('A3', '窄绑(recipe 绑定)可做版本修改,版本递增',
|
|
345
|
+
!aUpd.isError && vAfterA.length >= 2 && Number(vAfterA[vAfterA.length - 1]?.version) >= 2,
|
|
346
|
+
`text=${aUpd.text.replace(/\s+/g, ' ').slice(0, 260)} versions=${vAfterA.map(v => v.version).join(',')}`)
|
|
347
|
+
|
|
348
|
+
// B1 仅配方绑定、无 dcw → 全参数下发(向下兼容)
|
|
349
|
+
const bFull = await invokeAs(B.agentId, B.token, 'recipe_trial', {
|
|
350
|
+
line_id: line,
|
|
351
|
+
params: [{ node_id: zone, value: 200 }, { node_id: screw, value: 175 }, { node_id: speed, value: 85 }, { node_id: gap, value: 1.2 }],
|
|
352
|
+
hypothesis: '仅配方绑定无 dcw:按向下兼容应可全参数下发',
|
|
353
|
+
})
|
|
354
|
+
await sleep(1500)
|
|
355
|
+
const devB = await simNodes()
|
|
356
|
+
const bAll = Math.abs((simSignal(devB, 'dev-extruder-mbtcp', 'zone1-sp') ?? NaN) - 200) < 0.02
|
|
357
|
+
&& Math.abs((simSignal(devB, 'dev-extruder-opcua', 'screw-sp') ?? NaN) - 175) < 0.02
|
|
358
|
+
&& Math.abs((simSignal(devB, 'dev-gauge-mqtt', 'linespeed-sp') ?? NaN) - 85) < 0.02
|
|
359
|
+
&& Math.abs((simSignal(devB, 'dev-inspect-http', 'diegap-sp') ?? NaN) - 1.2) < 0.011
|
|
360
|
+
ok('B1', '仅配方绑定 + 无 dcw → 四参数全量下发成功(向下兼容)', !bFull.isError && bAll,
|
|
361
|
+
`text=${bFull.text.replace(/\s+/g, ' ').slice(0, 300)} device=${JSON.stringify([simSignal(devB, 'dev-extruder-mbtcp', 'zone1-sp'), simSignal(devB, 'dev-extruder-opcua', 'screw-sp'), simSignal(devB, 'dev-gauge-mqtt', 'linespeed-sp'), simSignal(devB, 'dev-inspect-http', 'diegap-sp')])}`)
|
|
362
|
+
|
|
363
|
+
// B2 版本回退
|
|
364
|
+
const bRb = await invokeAs(B.agentId, B.token, 'recipe_rollback', {
|
|
365
|
+
recipe_id: R1.id, version: 1, reason: '仅配方绑定验收:回退定义到 v1(不触产线)',
|
|
366
|
+
})
|
|
367
|
+
const vAfterB = ((await api('GET', `/api/workshop/dcw/recipes/${R1.id}/versions`)).data?.versions ?? [])
|
|
368
|
+
const lastB = vAfterB[vAfterB.length - 1]
|
|
369
|
+
ok('B2', '仅配方绑定可回退版本(v3=v1 定义)',
|
|
370
|
+
!bRb.isError && Number(lastB?.version) >= 3
|
|
371
|
+
&& (lastB?.params ?? []).some(p => p.nodeId === zone && Number(p.value) === 195),
|
|
372
|
+
`text=${bRb.text.replace(/\s+/g, ' ').slice(0, 260)} versions=${vAfterB.map(v => `${v.version}:${(v.params ?? []).map(p => p.value).join('/')}`).join(',')}`)
|
|
373
|
+
|
|
374
|
+
// C1 产线管理权:新建配方
|
|
375
|
+
const recipesBefore = new Set(((await api('GET', '/api/workshop/dcw/recipes')).data?.recipes ?? []).map(r => r.id))
|
|
376
|
+
const cCreate = await invokeAs(C.agentId, C.token, 'recipe_create', {
|
|
377
|
+
line_id: line, name: '产线管理权新建配方', product_id: product.id,
|
|
378
|
+
params: [{ node_id: zone, value: 196 }, { node_id: screw, value: 165 }],
|
|
379
|
+
reason: '产线管理权验收:整线范围内新建配方',
|
|
380
|
+
})
|
|
381
|
+
let R2 = ''
|
|
382
|
+
for (let i = 0; i < 10 && !R2; i++) {
|
|
383
|
+
const list = ((await api('GET', '/api/workshop/dcw/recipes')).data?.recipes ?? []).filter(r => r.lineId === line && !recipesBefore.has(r.id))
|
|
384
|
+
R2 = list[0]?.id ?? ''
|
|
385
|
+
if (!R2) await sleep(1000)
|
|
386
|
+
}
|
|
387
|
+
ok('C1', '产线管理权可新建配方(无需单配方绑定)', !cCreate.isError && Boolean(R2),
|
|
388
|
+
`text=${cCreate.text.replace(/\s+/g, ' ').slice(0, 300)} new=${R2 || '(未找到)'}`)
|
|
389
|
+
|
|
390
|
+
// C2 产线管理权、无 dcw → 全参数下发(兼容)
|
|
391
|
+
const cTrial = await invokeAs(C.agentId, C.token, 'recipe_trial', {
|
|
392
|
+
line_id: line,
|
|
393
|
+
params: [{ node_id: zone, value: 199 }, { node_id: screw, value: 172 }, { node_id: speed, value: 87 }, { node_id: gap, value: 1.15 }],
|
|
394
|
+
hypothesis: '产线管理权 + 无 dcw:全参数下发兼容',
|
|
395
|
+
})
|
|
396
|
+
await sleep(1500)
|
|
397
|
+
const devC = await simNodes()
|
|
398
|
+
ok('C2', '产线管理权(无 dcw)全参数下发成功',
|
|
399
|
+
!cTrial.isError
|
|
400
|
+
&& Math.abs((simSignal(devC, 'dev-extruder-mbtcp', 'zone1-sp') ?? NaN) - 199) < 0.02
|
|
401
|
+
&& Math.abs((simSignal(devC, 'dev-gauge-mqtt', 'linespeed-sp') ?? NaN) - 87) < 0.02,
|
|
402
|
+
`text=${cTrial.text.replace(/\s+/g, ' ').slice(0, 260)} device=${JSON.stringify([simSignal(devC, 'dev-extruder-mbtcp', 'zone1-sp'), simSignal(devC, 'dev-gauge-mqtt', 'linespeed-sp')])}`)
|
|
403
|
+
|
|
404
|
+
// C3 产线管理权:修改活动配方(版本操作)
|
|
405
|
+
const cUpd = await invokeAs(C.agentId, C.token, 'recipe_update', {
|
|
406
|
+
recipe_id: R1.id, params: [{ node_id: screw, value: 174 }], reason: '产线管理权验收:修改活动配方版本',
|
|
407
|
+
})
|
|
408
|
+
const vAfterC = ((await api('GET', `/api/workshop/dcw/recipes/${R1.id}/versions`)).data?.versions ?? [])
|
|
409
|
+
ok('C3', '产线管理权可修改任意配方版本',
|
|
410
|
+
!cUpd.isError && vAfterC.length >= 4,
|
|
411
|
+
`text=${cUpd.text.replace(/\s+/g, ' ').slice(0, 260)} versions=${vAfterC.map(v => v.version).join(',')}`)
|
|
412
|
+
|
|
413
|
+
// D1/D2 无绑定:写与版本均拒绝;D3 读允许(频道绑线只读扩权)
|
|
414
|
+
const dTrial = await invokeAs(D.agentId, D.token, 'recipe_trial', { line_id: line, params: [{ node_id: zone, value: 201 }], hypothesis: '无绑定验收:应拒绝' })
|
|
415
|
+
const dUpd = await invokeAs(D.agentId, D.token, 'recipe_update', { recipe_id: R1.id, params: [{ node_id: zone, value: 201 }], reason: '无绑定验收:应拒绝' })
|
|
416
|
+
ok('D1', '无任何绑定:下发被拒', dTrial.isError && /绑定|授权|无权/.test(dTrial.text), dTrial.text.replace(/\s+/g, ' ').slice(0, 420))
|
|
417
|
+
ok('D2', '无任何绑定:版本修改被拒', dUpd.isError && /绑定|授权|无权|配方级/.test(dUpd.text), dUpd.text.replace(/\s+/g, ' ').slice(0, 420))
|
|
418
|
+
const dRead = await invokeAs(D.agentId, D.token, 'daq_query', { line_id: line, last_minutes: 3, bucket_ms: 1000 })
|
|
419
|
+
ok('D3', '无绑定但频道绑线:只读抓数允许', !dRead.isError && /样本\s*\d+\s*点/.test(dRead.text), dRead.text.replace(/\s+/g, ' ').slice(0, 320))
|
|
420
|
+
|
|
421
|
+
// 模型决策环节不在本套件门禁内:绑定语义是授权契约,用 Agent 令牌 + HITL 确定性验证;
|
|
422
|
+
// Qwen 实时抓数已在 2026-10-29-mes-mirror Q1 覆盖,模型自主下发在 2026-10-28-physical-effect 覆盖。
|
|
423
|
+
// 本地 9B 在长任务回合会偶发长时间不产出(实测),把它放进门禁会让授权验收变成模型可用性抽奖。
|
|
424
|
+
|
|
425
|
+
evidence.scenario = { line, daq, dw, R1: R1.id, R2, agents: { A: A.agentId, B: B.agentId, C: C.agentId, D: D.agentId }, channelB: B.channelId }
|
|
426
|
+
evidence.texts = { aNodes: aNodesText.slice(0, 1200), aFull: aFull.text.slice(0, 900), aPart: aPart.text.slice(0, 600), bFull: bFull.text.slice(0, 600), dTrial: dTrial.text.slice(0, 600), dUpd: dUpd.text.slice(0, 600), dRead: dRead.text.slice(0, 600) }
|
|
427
|
+
evidence.qwen = { skipped: true, reason: 'bundle gate 只验证授权契约;模型路径见 mes-mirror Q1 / physical-effect', coveredBy: ['2026-10-29-mes-mirror#Q1', '2026-10-28-physical-effect'] }
|
|
428
|
+
}
|
|
429
|
+
catch (err) {
|
|
430
|
+
ok('FATAL', '验收未捕获异常', false, err instanceof Error ? `${err.message}\n${err.stack ?? ''}` : String(err))
|
|
431
|
+
}
|
|
432
|
+
finally {
|
|
433
|
+
mkdirSync(EVIDENCE_DIR, { recursive: true })
|
|
434
|
+
const passed = results.filter(r => r.pass).length
|
|
435
|
+
const total = results.length
|
|
436
|
+
evidence.summary = { total, passed, failed: total - passed, verdict: passed === total ? 'PASS' : 'FAIL' }
|
|
437
|
+
writeFileSync(join(EVIDENCE_DIR, 'report.json'), JSON.stringify(evidence, null, 2))
|
|
438
|
+
console.log(`\n结论:${passed === total ? 'PASS' : 'FAIL'}(${passed}/${total})`)
|
|
439
|
+
console.log(`证据:${join(EVIDENCE_DIR, 'report.json')}`)
|
|
440
|
+
console.log(`现场:平台 ${BASE}(AW_HOME=${HOME}) / 模拟器 ${SIM_BASE}`)
|
|
441
|
+
process.exit(passed === total ? 0 : 1)
|
|
442
|
+
}
|