agentworkshop 0.7.52 → 0.7.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.AgentWorkShop/prompts/host-tools.json +157 -1
- package/.output/.AgentWorkShop/prompts/host-tools.json +157 -1
- package/.output/.AgentWorkShop/schema.json +4 -1
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/8oRmGaAV.js +1 -0
- package/.output/public/_nuxt/{9zrLAN2o2.js → BJhsCisg2.js} +1 -1
- package/.output/public/_nuxt/BOhcoxIu.js +2 -0
- package/.output/public/_nuxt/{BdM_Qr752.js → BP8TgWo02.js} +1 -1
- package/.output/public/_nuxt/{bg2adfck.js → BPqXOlYX.js} +1 -1
- package/.output/public/_nuxt/{Crbir9cT.js → BQOn0q6Y.js} +1 -1
- package/.output/public/_nuxt/{BPou3U7b.js → BQy0Yy7S.js} +1 -1
- package/.output/public/_nuxt/BTVyPFng2.js +1 -0
- package/.output/public/_nuxt/{qOlYoGLf.js → BWowAAJb.js} +1 -1
- package/.output/public/_nuxt/{CTvh8v4T.js → BXR3tgEk.js} +1 -1
- package/.output/public/_nuxt/{DQMbdg4t.js → BZtgVXC5.js} +1 -1
- package/.output/public/_nuxt/BcX4fktE.js +1 -0
- package/.output/public/_nuxt/{B_LcD7qE2.js → BdF9OAZq2.js} +1 -1
- package/.output/public/_nuxt/{IU-UGkCJ2.js → BhcbvVOa2.js} +1 -1
- package/.output/public/_nuxt/{CBDX7p73.js → BjWbbMHs.js} +1 -1
- package/.output/public/_nuxt/{mNnuUoSy.js → BkfA3BbD.js} +1 -1
- package/.output/public/_nuxt/{YaroNkJZ2.js → BmTzcKJg2.js} +1 -1
- package/.output/public/_nuxt/BnoyYd0Z2.js +1 -0
- package/.output/public/_nuxt/{Bl5dYv4m.js → BqYO-UfR.js} +1 -1
- package/.output/public/_nuxt/Btv3HXrq.js +1 -0
- package/.output/public/_nuxt/{BGKUW7ra.js → Btx8wL4-.js} +1 -1
- package/.output/public/_nuxt/{CBIoheY42.js → BuXaEtBG2.js} +1 -1
- package/.output/public/_nuxt/{BXx9AxdF2.js → BxWvUgMz2.js} +1 -1
- package/.output/public/_nuxt/{1g9IT9Qh2.js → BxoaZc_U2.js} +1 -1
- package/.output/public/_nuxt/C-LU6xv_.js +1 -0
- package/.output/public/_nuxt/{BcQXL8pb.js → C-y_g11k.js} +1 -1
- package/.output/public/_nuxt/{Bt2ZL5332.js → C4sQKuhk.js} +1 -1
- package/.output/public/_nuxt/C7_F68I7.js +1 -0
- package/.output/public/_nuxt/{CkPxL4UX2.js → CBUIODly2.js} +1 -1
- package/.output/public/_nuxt/CFjveTJh.js +1 -0
- package/.output/public/_nuxt/{BQXCMsXk.js → CMWyj56j.js} +1 -1
- package/.output/public/_nuxt/{C4WhK2wq.js → COQM2L1M.js} +1 -1
- package/.output/public/_nuxt/{BiUhxH3t2.js → CV61ysvv.js} +1 -1
- package/.output/public/_nuxt/Ca3iDJwu2.js +21 -0
- package/.output/public/_nuxt/{BiOSWsjD.js → Cg8Pgbeu.js} +1 -1
- package/.output/public/_nuxt/{CFQyYMEn2.js → Ch9KdZWb2.js} +1 -1
- package/.output/public/_nuxt/{B1RT9NTO2.js → ChN5v-i22.js} +1 -1
- package/.output/public/_nuxt/{DefDtlKK.js → Cpm5JYv4.js} +1 -1
- package/.output/public/_nuxt/{DsGf2IV82.js → CtXOpljm2.js} +1 -1
- package/.output/public/_nuxt/{B9cGf8mg.js → CvGYm7w8.js} +1 -1
- package/.output/public/_nuxt/{EhhQmlBV2.js → D2Sm-GTk2.js} +1 -1
- package/.output/public/_nuxt/{DCtk3qqr.js → D8xUsQGt.js} +1 -1
- package/.output/public/_nuxt/{CQabB0oy.js → D9TpiWjt.js} +1 -1
- package/.output/public/_nuxt/DB4ma-iU2.js +1 -0
- package/.output/public/_nuxt/{BDmNbZ252.js → DCPhrNWR2.js} +1 -1
- package/.output/public/_nuxt/{D_Ce9Fon2.js → DFhyhDGa2.js} +1 -1
- package/.output/public/_nuxt/{BE7BrEw6.js → DNZmwhSD.js} +1 -1
- package/.output/public/_nuxt/{CMXcOb6W.js → DO9xaI9a.js} +1 -1
- package/.output/public/_nuxt/{H2rNs1O82.js → DUribplv2.js} +1 -1
- package/.output/public/_nuxt/{B8zP7kaj2.js → DV5joWTn2.js} +1 -1
- package/.output/public/_nuxt/{Da90gveK.js → DVOR2pWg.js} +1 -1
- package/.output/public/_nuxt/{mgWHSRc8.js → DZDi8inD.js} +1 -1
- package/.output/public/_nuxt/DZuXfuXS.js +14 -0
- package/.output/public/_nuxt/{Ccps4cxo.js → D_hCLbi9.js} +1 -1
- package/.output/public/_nuxt/{B_opxrHJ.js → Db4_F1T2.js} +1 -1
- package/.output/public/_nuxt/{xQX5r6tW.js → Dep0Hc9w2.js} +1 -1
- package/.output/public/_nuxt/{evt5VGDh.js → DffgG8vT.js} +1 -1
- package/.output/public/_nuxt/{Bhe953zV2.js → DioKmYyB2.js} +1 -1
- package/.output/public/_nuxt/{D0ldVwl-.js → Dk6Zf3-L.js} +1 -1
- package/.output/public/_nuxt/{Dbe9TFc9.js → DlX0nqUe.js} +1 -1
- package/.output/public/_nuxt/{Chphw5IA2.js → Dm_iKz8k2.js} +1 -1
- package/.output/public/_nuxt/{BVzw5a_0.js → DmzmgYHb2.js} +1 -1
- package/.output/public/_nuxt/{NJn94js_.js → DnAn2LgG.js} +1 -1
- package/.output/public/_nuxt/DuPM4HXw.js +1 -0
- package/.output/public/_nuxt/{DNoEoo8t.js → Dz2SLIde.js} +1 -1
- package/.output/public/_nuxt/DzwIZ81f.js +1 -0
- package/.output/public/_nuxt/{DD6Z0yPN2.js → MbT4wXb62.js} +1 -1
- package/.output/public/_nuxt/{ChGuLxwW2.js → PY2GW_3N2.js} +1 -1
- package/.output/public/_nuxt/PluginSlot.CGH0vb95.css +1 -0
- package/.output/public/_nuxt/{2_DkYoqD2.js → QHo9mN-M2.js} +1 -1
- package/.output/public/_nuxt/{TownView.BvlfuLtP.css → TownView.Xt1yygrh.css} +1 -1
- package/.output/public/_nuxt/{ty5W5QwO.js → WmMwIS4y.js} +1 -1
- package/.output/public/_nuxt/_id_.DZbVLNnu.css +1 -0
- package/.output/public/_nuxt/_wsId_.XjmieZaJ.css +1 -0
- package/.output/public/_nuxt/a4X3ARNm2.js +1 -0
- package/.output/public/_nuxt/{C00Rd6Cg.js → aV6YPjg02.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/af879435-fc74-4017-ade0-3b92c1ab35bb.json +1 -0
- package/.output/public/_nuxt/cY_5jwFz2.js +1 -0
- package/.output/public/_nuxt/dVw8IHY62.js +1 -0
- package/.output/public/_nuxt/{LwIFGLgF.js → deBcbALe2.js} +1 -1
- package/.output/public/_nuxt/{default.CXb_zoN6.css → default.CyLpQD1C.css} +1 -1
- package/.output/public/_nuxt/{BzvHUfRR.js → nT-bgxvf.js} +1 -1
- package/.output/public/_nuxt/tq3HbWr9.js +1 -0
- package/.output/public/_nuxt/{BH3obZJ42.js → uY58gQqR2.js} +1 -1
- package/.output/public/_nuxt/{ZuQtOnfI.js → vPfDYgvR.js} +1 -1
- package/.output/public/_nuxt/{zsRclU9w2.js → xX7ccjDl2.js} +1 -1
- package/.output/public/robots.txt +3 -0
- package/.output/server/chunks/_/binding-authz.mjs +1 -1
- package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
- package/.output/server/chunks/_/entity.mjs +1 -1
- package/.output/server/chunks/_/host-bindings.mjs +1 -1
- package/.output/server/chunks/_/nitro.mjs +3260 -1505
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
- package/.output/server/chunks/build/OmpTerminalPanel-mk31gVzA.mjs +1 -1
- package/.output/server/chunks/build/{PluginSlot-D2WUZgbp.mjs → PluginSlot-CT4YaNrB.mjs} +5 -5
- package/.output/server/chunks/build/{PluginSlot-D2WUZgbp.mjs.map → PluginSlot-CT4YaNrB.mjs.map} +1 -1
- package/.output/server/chunks/build/{TownView-fP9BiALv.mjs → TownView-Bf5VFYFj.mjs} +26 -19
- package/.output/server/chunks/build/TownView-Bf5VFYFj.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-BUpQSlzo.mjs → _id_-CuUmVPRg.mjs} +200 -86
- package/.output/server/chunks/build/_id_-CuUmVPRg.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CDlur81q.mjs → _id_-WF20tjqT.mjs} +12 -11
- package/.output/server/chunks/build/_id_-WF20tjqT.mjs.map +1 -0
- package/.output/server/chunks/build/{_wsId_-C4L9fVHC.mjs → _wsId_-BUIKB68b.mjs} +332 -211
- package/.output/server/chunks/build/{_wsId_-C4L9fVHC.mjs.map → _wsId_-BUIKB68b.mjs.map} +1 -1
- package/.output/server/chunks/build/{agents-ydYu-Ol9.mjs → agents-DqICy4AL.mjs} +8 -7
- package/.output/server/chunks/build/agents-DqICy4AL.mjs.map +1 -0
- package/.output/server/chunks/build/{aml-DsgtDLWF.mjs → aml-C55iuLn-.mjs} +15 -13
- package/.output/server/chunks/build/aml-C55iuLn-.mjs.map +1 -0
- package/.output/server/chunks/build/{api-BY6ji7RC.mjs → api-B4Om0mEc.mjs} +4 -3
- package/.output/server/chunks/build/api-B4Om0mEc.mjs.map +1 -0
- package/.output/server/chunks/build/{apiClient-D281qrK2.mjs → apiClient-BvXtNzC8.mjs} +2 -2
- package/.output/server/chunks/build/apiClient-BvXtNzC8.mjs.map +1 -0
- package/.output/server/chunks/build/{channel-templates-DP1ndA5K.mjs → channel-templates-gdCLajKy.mjs} +5 -4
- package/.output/server/chunks/build/channel-templates-gdCLajKy.mjs.map +1 -0
- package/.output/server/chunks/build/constants-HPHJvjne.mjs +2 -1
- package/.output/server/chunks/build/constants-HPHJvjne.mjs.map +1 -1
- package/.output/server/chunks/build/{daq-N69AOtgw.mjs → daq-D0kLscVr.mjs} +15 -13
- package/.output/server/chunks/build/daq-D0kLscVr.mjs.map +1 -0
- package/.output/server/chunks/build/{dcw-CN9d3Rs7.mjs → dcw-DuhEyu7S.mjs} +11 -10
- package/.output/server/chunks/build/dcw-DuhEyu7S.mjs.map +1 -0
- package/.output/server/chunks/build/dcw-driver-badge-Df5wL_ZA.mjs +20 -0
- package/.output/server/chunks/build/dcw-driver-badge-Df5wL_ZA.mjs.map +1 -0
- package/.output/server/chunks/build/{default-DCf9tn1i.mjs → default-aFGiNebw.mjs} +70 -65
- package/.output/server/chunks/build/{default-DCf9tn1i.mjs.map → default-aFGiNebw.mjs.map} +1 -1
- package/.output/server/chunks/build/hitl-ePh3G3ue.mjs +132 -0
- package/.output/server/chunks/build/hitl-ePh3G3ue.mjs.map +1 -0
- package/.output/server/chunks/build/{logs-BcAjU1Ps.mjs → logs-BlOalbsZ.mjs} +11 -9
- package/.output/server/chunks/build/logs-BlOalbsZ.mjs.map +1 -0
- package/.output/server/chunks/build/monitor-DX_K0WMq.mjs +3 -2
- package/.output/server/chunks/build/{operations-OFHYXwh4.mjs → operations-BD6LK-Yz.mjs} +10 -8
- package/.output/server/chunks/build/operations-BD6LK-Yz.mjs.map +1 -0
- package/.output/server/chunks/build/{pages-BzmrmLL_.mjs → pages-DloBBvU5.mjs} +8 -7
- package/.output/server/chunks/build/pages-DloBBvU5.mjs.map +1 -0
- package/.output/server/chunks/build/permissions-BvmodvsO.mjs +3 -2
- package/.output/server/chunks/build/permissions-BvmodvsO.mjs.map +1 -1
- package/.output/server/chunks/build/{plugins-DSka7-vS.mjs → plugins-NAS9MQ5r.mjs} +5 -4
- package/.output/server/chunks/build/plugins-NAS9MQ5r.mjs.map +1 -0
- package/.output/server/chunks/build/{schedules-BYR-lA1k.mjs → schedules-D8vYHgQ5.mjs} +4 -3
- package/.output/server/chunks/build/{schedules-BYR-lA1k.mjs.map → schedules-D8vYHgQ5.mjs.map} +1 -1
- package/.output/server/chunks/build/{settings-UyZ78w2e.mjs → settings-B7HA-sdb.mjs} +6 -5
- package/.output/server/chunks/build/settings-B7HA-sdb.mjs.map +1 -0
- package/.output/server/chunks/build/{teams-D-Y5mzU7.mjs → teams-wM-MdLv9.mjs} +10 -9
- package/.output/server/chunks/build/teams-wM-MdLv9.mjs.map +1 -0
- package/.output/server/chunks/build/tokens-CloWk4x_.mjs +3 -2
- package/.output/server/chunks/build/tokens-CloWk4x_.mjs.map +1 -1
- package/.output/server/chunks/build/{town-BMlctE4m.mjs → town-B2gBu_ZE.mjs} +12 -9
- package/.output/server/chunks/build/town-B2gBu_ZE.mjs.map +1 -0
- package/.output/server/chunks/build/types-D6J7slEa.mjs +1 -1
- package/.output/server/chunks/build/{useAgentHarnessOptions-CRyQYYY0.mjs → useAgentHarnessOptions-BnFCh23W.mjs} +4 -3
- package/.output/server/chunks/build/useAgentHarnessOptions-BnFCh23W.mjs.map +1 -0
- package/.output/server/chunks/build/{useAgentTemplateActions-CaRsOBmB.mjs → useAgentTemplateActions-DsBRUQni.mjs} +4 -3
- package/.output/server/chunks/build/useAgentTemplateActions-DsBRUQni.mjs.map +1 -0
- package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs +2 -1
- package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs.map +1 -1
- package/.output/server/chunks/build/{useAgentTemplateForm-ChiIuPYr.mjs → useAgentTemplateForm-DzQ_t2Ue.mjs} +4 -3
- package/.output/server/chunks/build/useAgentTemplateForm-DzQ_t2Ue.mjs.map +1 -0
- package/.output/server/chunks/build/{useAgentTemplatesCatalog-Bf5hk6Jf.mjs → useAgentTemplatesCatalog-Q7LgG1Af.mjs} +5 -4
- package/.output/server/chunks/build/useAgentTemplatesCatalog-Q7LgG1Af.mjs.map +1 -0
- package/.output/server/chunks/build/{useAmlDatasets-BM0lZu40.mjs → useAmlDatasets-DeoE1idn.mjs} +5 -4
- package/.output/server/chunks/build/useAmlDatasets-DeoE1idn.mjs.map +1 -0
- package/.output/server/chunks/build/{useAmlEntities-BDQ8TmLL.mjs → useAmlEntities-BMLHU_39.mjs} +5 -4
- package/.output/server/chunks/build/useAmlEntities-BMLHU_39.mjs.map +1 -0
- package/.output/server/chunks/build/{useAmlEnv-DgTVwpqi.mjs → useAmlEnv-DdlyVzPu.mjs} +5 -4
- package/.output/server/chunks/build/useAmlEnv-DdlyVzPu.mjs.map +1 -0
- package/.output/server/chunks/build/{useAmlExperiments-BtyW32PO.mjs → useAmlExperiments-Dloi834i.mjs} +5 -4
- package/.output/server/chunks/build/useAmlExperiments-Dloi834i.mjs.map +1 -0
- package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs +2 -1
- package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs.map +1 -1
- package/.output/server/chunks/build/{useAmlJobs-fk-H5Rp5.mjs → useAmlJobs--a_1ovew.mjs} +5 -4
- package/.output/server/chunks/build/useAmlJobs--a_1ovew.mjs.map +1 -0
- package/.output/server/chunks/build/{useAmlModels-hgyVHoAq.mjs → useAmlModels-D7MuOWOy.mjs} +5 -4
- package/.output/server/chunks/build/useAmlModels-D7MuOWOy.mjs.map +1 -0
- package/.output/server/chunks/build/{useAmlNotes-BjbYNADm.mjs → useAmlNotes-CTZe-GI0.mjs} +5 -4
- package/.output/server/chunks/build/useAmlNotes-CTZe-GI0.mjs.map +1 -0
- package/.output/server/chunks/build/{useAmlPredict-U24-SZNA.mjs → useAmlPredict-BToRrVRV.mjs} +5 -4
- package/.output/server/chunks/build/useAmlPredict-BToRrVRV.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqAddNode-kW7uTSMQ.mjs → useDaqAddNode-CaOCbe4-.mjs} +6 -5
- package/.output/server/chunks/build/useDaqAddNode-CaOCbe4-.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqDetailBinding-cpBz4hSL.mjs → useDaqDetailBinding-C7AbGIdP.mjs} +6 -5
- package/.output/server/chunks/build/useDaqDetailBinding-C7AbGIdP.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqDetailFrames-BZGtKKXW.mjs → useDaqDetailFrames-CmAEdbAL.mjs} +5 -4
- package/.output/server/chunks/build/useDaqDetailFrames-CmAEdbAL.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqDetailHistory-DtSTfyMi.mjs → useDaqDetailHistory-pfi6zXWU.mjs} +5 -4
- package/.output/server/chunks/build/useDaqDetailHistory-pfi6zXWU.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqDetailNode-D_vhG0jF.mjs → useDaqDetailNode-qT7MjqJ7.mjs} +8 -7
- package/.output/server/chunks/build/useDaqDetailNode-qT7MjqJ7.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqDetailParams-JfqHvTxr.mjs → useDaqDetailParams-CrTMDs-2.mjs} +6 -5
- package/.output/server/chunks/build/useDaqDetailParams-CrTMDs-2.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqFilters-BUQtZ82a.mjs → useDaqFilters-CMysN13f.mjs} +8 -7
- package/.output/server/chunks/build/useDaqFilters-CMysN13f.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs +2 -1
- package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs.map +1 -1
- package/.output/server/chunks/build/{useDaqOptimizations-Ct-TSXxy.mjs → useDaqOptimizations-Coq5lsfM.mjs} +5 -4
- package/.output/server/chunks/build/useDaqOptimizations-Coq5lsfM.mjs.map +1 -0
- package/.output/server/chunks/build/{useDaqStream-wOxZcMDA.mjs → useDaqStream-DhzdoyIR.mjs} +3 -3
- package/.output/server/chunks/build/{useDaqStream-wOxZcMDA.mjs.map → useDaqStream-DhzdoyIR.mjs.map} +1 -1
- package/.output/server/chunks/build/{useDaqTemplates-BqQRdrIm.mjs → useDaqTemplates-C7GzQmdJ.mjs} +6 -5
- package/.output/server/chunks/build/useDaqTemplates-C7GzQmdJ.mjs.map +1 -0
- package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs +2 -1
- package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs.map +1 -1
- package/.output/server/chunks/build/{useDashboardData-CNOY4Bi3.mjs → useDashboardData-DgJcGJaF.mjs} +7 -6
- package/.output/server/chunks/build/useDashboardData-DgJcGJaF.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwAddNode-C1HDP3yG.mjs → useDcwAddNode-C9DbEKHi.mjs} +38 -5
- package/.output/server/chunks/build/useDcwAddNode-C9DbEKHi.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwCards-ETEsHvVy.mjs → useDcwCards-VDoMYG7l.mjs} +5 -4
- package/.output/server/chunks/build/useDcwCards-VDoMYG7l.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwDetailScope-QTr1G6Oe.mjs → useDcwDetailScope-CL97tJdJ.mjs} +7 -6
- package/.output/server/chunks/build/useDcwDetailScope-CL97tJdJ.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwDetailTemplates-Djt-0Vse.mjs → useDcwDetailTemplates-OLmjMSGD.mjs} +5 -4
- package/.output/server/chunks/build/useDcwDetailTemplates-OLmjMSGD.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwFilter-FfVlDdyS.mjs → useDcwFilter-Bs9C6-h_.mjs} +5 -4
- package/.output/server/chunks/build/useDcwFilter-Bs9C6-h_.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwLedger-BLoMmcu1.mjs → useDcwLedger-Bbf_iFOY.mjs} +5 -4
- package/.output/server/chunks/build/useDcwLedger-Bbf_iFOY.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwLineMutations-BMC5BTWU.mjs → useDcwLineMutations-Bhtuqw7J.mjs} +5 -4
- package/.output/server/chunks/build/useDcwLineMutations-Bhtuqw7J.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwLineRun-74gN_s6T.mjs → useDcwLineRun-CGqZSnG4.mjs} +5 -4
- package/.output/server/chunks/build/useDcwLineRun-CGqZSnG4.mjs.map +1 -0
- package/.output/server/chunks/build/useDcwParamApprovals-BBwdFsKv.mjs +119 -0
- package/.output/server/chunks/build/useDcwParamApprovals-BBwdFsKv.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwProducts-D-zrMaeV.mjs → useDcwProducts-BoBkJqpv.mjs} +5 -4
- package/.output/server/chunks/build/useDcwProducts-BoBkJqpv.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwQuery-7tX4QYmv.mjs → useDcwQuery-DP7b2qb6.mjs} +5 -4
- package/.output/server/chunks/build/useDcwQuery-DP7b2qb6.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwQuickActions-C-tgcXIr.mjs → useDcwQuickActions-DHRiA9KN.mjs} +5 -4
- package/.output/server/chunks/build/useDcwQuickActions-DHRiA9KN.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwRecipes-FVk5gDLV.mjs → useDcwRecipes-CIMeH2oF.mjs} +5 -4
- package/.output/server/chunks/build/useDcwRecipes-CIMeH2oF.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwStream-D04kCV3J.mjs → useDcwStream-B9ugUWRq.mjs} +10 -3
- package/.output/server/chunks/build/{useDcwStream-D04kCV3J.mjs.map → useDcwStream-B9ugUWRq.mjs.map} +1 -1
- package/.output/server/chunks/build/{useDcwTemplates-LDZffy4u.mjs → useDcwTemplates-M_-qjV8E.mjs} +5 -4
- package/.output/server/chunks/build/useDcwTemplates-M_-qjV8E.mjs.map +1 -0
- package/.output/server/chunks/build/{useDcwWrites-B22mwliK.mjs → useDcwWrites-D94dAzqr.mjs} +5 -4
- package/.output/server/chunks/build/useDcwWrites-D94dAzqr.mjs.map +1 -0
- package/.output/server/chunks/build/{useDeviceTwins-CbVad1M3.mjs → useDeviceTwins-BqwVJaZg.mjs} +2 -2
- package/.output/server/chunks/build/{useDeviceTwins-CbVad1M3.mjs.map → useDeviceTwins-BqwVJaZg.mjs.map} +1 -1
- package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs +2 -1
- package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs.map +1 -1
- package/.output/server/chunks/build/{useLogsManual-COfCyUtj.mjs → useLogsManual-CMjD62nt.mjs} +5 -4
- package/.output/server/chunks/build/useLogsManual-CMjD62nt.mjs.map +1 -0
- package/.output/server/chunks/build/{useLogsQuery-CRAm2hmS.mjs → useLogsQuery-2x1mKxT1.mjs} +5 -4
- package/.output/server/chunks/build/useLogsQuery-2x1mKxT1.mjs.map +1 -0
- package/.output/server/chunks/build/{useLogsScope-ClNijVj4.mjs → useLogsScope-04cUJCU-.mjs} +5 -4
- package/.output/server/chunks/build/useLogsScope-04cUJCU-.mjs.map +1 -0
- package/.output/server/chunks/build/useMonitorColumns-DhYvkLDq.mjs +3 -2
- package/.output/server/chunks/build/useMonitorColumns-DhYvkLDq.mjs.map +1 -1
- package/.output/server/chunks/build/useMonitorData-guVjMDtR.mjs +3 -2
- package/.output/server/chunks/build/useMonitorData-guVjMDtR.mjs.map +1 -1
- package/.output/server/chunks/build/useMonitorFormat-C7lhZe4g.mjs +2 -1
- package/.output/server/chunks/build/useMonitorFormat-C7lhZe4g.mjs.map +1 -1
- package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs +2 -1
- package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs.map +1 -1
- package/.output/server/chunks/build/{useOperationsFeed-CeXeHqUK.mjs → useOperationsFeed-DsA2ym7M.mjs} +5 -4
- package/.output/server/chunks/build/useOperationsFeed-DsA2ym7M.mjs.map +1 -0
- package/.output/server/chunks/build/{useOpsLog-CgnNG7_n.mjs → useOpsLog-SnWPuRtK.mjs} +2 -2
- package/.output/server/chunks/build/{useOpsLog-CgnNG7_n.mjs.map → useOpsLog-SnWPuRtK.mjs.map} +1 -1
- package/.output/server/chunks/build/{useTeamActions-C51ciLb0.mjs → useTeamActions-BOLQkYxg.mjs} +4 -3
- package/.output/server/chunks/build/useTeamActions-BOLQkYxg.mjs.map +1 -0
- package/.output/server/chunks/build/{useTeamAddMemberDialog-DthpCMP8.mjs → useTeamAddMemberDialog-BCgrLPxI.mjs} +4 -3
- package/.output/server/chunks/build/useTeamAddMemberDialog-BCgrLPxI.mjs.map +1 -0
- package/.output/server/chunks/build/{useTeamCreateDialog-Dc2KTwyg.mjs → useTeamCreateDialog-CJk40LqS.mjs} +4 -3
- package/.output/server/chunks/build/useTeamCreateDialog-CJk40LqS.mjs.map +1 -0
- package/.output/server/chunks/build/{useTeamDeployDialog-CXpvPnJD.mjs → useTeamDeployDialog-49hdUXQP.mjs} +4 -3
- package/.output/server/chunks/build/useTeamDeployDialog-49hdUXQP.mjs.map +1 -0
- package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs +2 -1
- package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs.map +1 -1
- package/.output/server/chunks/build/{useTeamPluginDialog-DTs-7SSm.mjs → useTeamPluginDialog-Dh-QOoiU.mjs} +4 -3
- package/.output/server/chunks/build/useTeamPluginDialog-Dh-QOoiU.mjs.map +1 -0
- package/.output/server/chunks/build/{useTeamsCatalog-CcpetYyW.mjs → useTeamsCatalog-HBSyKt5P.mjs} +5 -4
- package/.output/server/chunks/build/useTeamsCatalog-HBSyKt5P.mjs.map +1 -0
- package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs +2 -1
- package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs.map +1 -1
- package/.output/server/chunks/build/useTokenCreate-DkYvEQUD.mjs +3 -2
- package/.output/server/chunks/build/useTokenCreate-DkYvEQUD.mjs.map +1 -1
- package/.output/server/chunks/build/useTokenRename-DOCP4aeI.mjs +3 -2
- package/.output/server/chunks/build/useTokenRename-DOCP4aeI.mjs.map +1 -1
- package/.output/server/chunks/build/useTokenReveal-CybwwflV.mjs +3 -2
- package/.output/server/chunks/build/useTokenReveal-CybwwflV.mjs.map +1 -1
- package/.output/server/chunks/build/useTokensList-BLiMvrc4.mjs +3 -2
- package/.output/server/chunks/build/useTokensList-BLiMvrc4.mjs.map +1 -1
- package/.output/server/chunks/build/useWorkbenchAuth-DqjBX-6w.mjs +3 -2
- package/.output/server/chunks/build/useWorkbenchAuth-DqjBX-6w.mjs.map +1 -1
- package/.output/server/chunks/build/{useWorkbenchWorkspaces-DgiSCzsX.mjs → useWorkbenchWorkspaces-GQVU9BLv.mjs} +6 -4
- package/.output/server/chunks/build/useWorkbenchWorkspaces-GQVU9BLv.mjs.map +1 -0
- package/.output/server/chunks/build/{useWorkshopApi-CO3ophqt.mjs → useWorkshopApi-C9sTYu1F.mjs} +10 -2
- package/.output/server/chunks/build/useWorkshopApi-C9sTYu1F.mjs.map +1 -0
- package/.output/server/chunks/build/{useWorkshopWs-Bm80bLn7.mjs → useWorkshopWs-CgeCsaYJ.mjs} +4 -128
- package/.output/server/chunks/build/useWorkshopWs-CgeCsaYJ.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs +3 -2
- package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs.map +1 -1
- package/.output/server/chunks/build/{useWorkspaceChannels-D61Al2dr.mjs → useWorkspaceChannels-B13vROC1.mjs} +5 -3
- package/.output/server/chunks/build/useWorkspaceChannels-B13vROC1.mjs.map +1 -0
- package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs +2 -1
- package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs.map +1 -1
- package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs +2 -1
- package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs.map +1 -1
- package/.output/server/chunks/build/users-CCf5PgRs.mjs +3 -2
- package/.output/server/chunks/build/users-CCf5PgRs.mjs.map +1 -1
- package/.output/server/chunks/build/{workshop-FQ4YzooB.mjs → workshop-BDqWzJtr.mjs} +6 -4
- package/.output/server/chunks/build/workshop-BDqWzJtr.mjs.map +1 -0
- package/.output/server/chunks/build/workspaces-CmW0cpOt.mjs +1 -1
- package/.output/server/chunks/routes/api/health.get.mjs +2 -1
- package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get.mjs +3 -2
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post.mjs +16 -4
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/mcp/workshop.mjs +45 -15
- package/.output/server/chunks/routes/api/mcp/workshop.mjs.map +1 -1
- package/.output/server/chunks/routes/api/metrics.mjs +4 -1
- package/.output/server/chunks/routes/api/metrics.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +3 -2
- package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +2 -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 +2 -1
- package/.output/server/chunks/routes/api/plugins/i18n.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +2 -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 +48 -0
- package/.output/server/chunks/routes/api/system/backup/list.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/system/backup/run.post.mjs +36 -0
- package/.output/server/chunks/routes/api/system/backup/run.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +3 -2
- 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 -2
- 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 +2 -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 -2
- package/.output/server/chunks/routes/api/system/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.patch.mjs +17 -5
- package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.post.mjs +3 -2
- package/.output/server/chunks/routes/api/system/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index2.get.mjs +3 -2
- 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 -2
- 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 -2
- package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/monitor.get.mjs +2 -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 -2
- 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 +17 -4
- 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 -2
- package/.output/server/chunks/routes/api/system/timezone.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs +16 -4
- package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.get.mjs +3 -2
- package/.output/server/chunks/routes/api/users/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/_id_.put.mjs +16 -4
- package/.output/server/chunks/routes/api/users/_id_.put.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/index.get.mjs +3 -2
- package/.output/server/chunks/routes/api/users/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/index.post.mjs +3 -2
- package/.output/server/chunks/routes/api/users/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/login.post.mjs +5 -3
- package/.output/server/chunks/routes/api/users/login.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/logout.post.mjs +3 -2
- package/.output/server/chunks/routes/api/users/logout.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/me.get.mjs +3 -2
- package/.output/server/chunks/routes/api/users/me.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/users/register.post.mjs +6 -2
- 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 -2
- 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 -2
- 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 -2
- 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 -2
- package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/_...path_.mjs +2 -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 +3 -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 +21 -16
- 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 -2
- 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 -2
- 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 -2
- 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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -2
- 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 +3 -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 +3 -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 +3 -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 +2 -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 +2 -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 -2
- 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 -2
- 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 +3 -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 +3 -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 +3 -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 +3 -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 -2
- 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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +2 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -2
- package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +3 -2
- 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 +2 -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 +2 -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 -2
- 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 +3 -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 +2 -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 +3 -2
- 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 -2
- package/.output/server/chunks/routes/api/workshop/audit.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/caller.mjs +3 -2
- 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 +10 -4
- 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 +2 -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 +2 -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 -2
- 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 -2
- 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 +3 -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 +2 -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 -2
- 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 +2 -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 -2
- 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 +2 -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 +2 -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 +2 -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/stop.post.mjs +2 -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 +2 -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 +2 -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 -2
- 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 +3 -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 +2 -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 +2 -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 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +2 -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 +3 -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 +3 -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 +2 -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 -2
- package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +2 -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 +3 -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 -2
- 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 +3 -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 +3 -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 +2 -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/line.put.mjs +38 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs +2 -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 +2 -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 +2 -1
- 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 +2 -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 +2 -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 +2 -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 +3 -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/twin-profile.get.mjs +3 -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 +3 -2
- 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 +2 -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 +3 -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 -2
- package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/channels.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +6 -5
- 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 +3 -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 +3 -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 +3 -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 +3 -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/samples.get.mjs +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 -2
- 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 +3 -2
- package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +3 -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 +3 -2
- package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +3 -2
- 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 +3 -2
- 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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -2
- package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +3 -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 +8 -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 +3 -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 +3 -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 +3 -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 -2
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs +36 -0
- package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +5 -4
- 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 +3 -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 -2
- 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 +3 -2
- 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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -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 +3 -2
- 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 +3 -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 +3 -2
- 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 +3 -2
- package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +16 -3
- 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 +3 -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 +3 -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 +3 -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 +3 -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 +2 -1
- package/.output/server/chunks/routes/api/workshop/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index.put.mjs +3 -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 -2
- package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index11.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index12.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index12.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index13.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index13.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index14.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index14.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index3.get.mjs +3 -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 -2
- package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/index4.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/index5.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/index6.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/index7.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index8.get.mjs +3 -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 -2
- package/.output/server/chunks/routes/api/workshop/index8.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs +5 -4
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/index9.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +2 -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 +2 -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 +2 -1
- package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +3 -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 +3 -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 +2 -1
- package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +2 -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 +3 -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 +3 -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 +2 -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 +2 -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 -2
- 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 +2 -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 +2 -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 -2
- 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 -2
- 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 -2
- 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 +2 -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 +2 -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/report.post.mjs +3 -2
- 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 +2 -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/update.post.mjs +2 -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 -2
- package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +2 -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 +3 -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 +2 -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 -2
- 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 +3 -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 +3 -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 +2 -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 +2 -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 +2 -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 -2
- package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +2 -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 +6 -2
- 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 +4 -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 +2 -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 +2 -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 +2 -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 +420 -99
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/index.mjs +2 -1
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +7 -3
- package/README.md +11 -5
- package/app/components/app-header/HitlBell.vue +9 -9
- package/app/components/dcw/DcwAddNodeModal.vue +57 -7
- package/app/components/dcw/DcwNodesTable.vue +19 -4
- package/app/components/dcw/DcwParamApprovalCard.vue +110 -0
- package/app/components/dcw/DcwRecipeEditModal.vue +12 -3
- package/app/components/workshop/ChatMemberPanel.vue +39 -38
- package/app/components/workshop/ChatTimeline.vue +33 -24
- package/app/components/workshop/Composer.vue +7 -7
- package/app/components/workshop/NotificationCenter.vue +22 -13
- package/app/components/workshop/PluginSlot.vue +1 -1
- package/app/components/workshop/TaskInspectorDrawer.vue +5 -5
- package/app/components/workshop/blocks/ClusterTool.vue +1 -1
- package/app/components/workshop/composer/ComposerToolbar.vue +2 -2
- package/app/components/workshop/composer/MentionMenu.vue +1 -1
- package/app/components/workshop/composer/ReplyChip.vue +2 -2
- package/app/components/workshop/composer/StatusChip.vue +7 -7
- package/app/components/workshop/console/LineOperationsPanel.vue +15 -14
- package/app/components/workshop/lanes/LaneHeader.vue +5 -3
- package/app/components/workshop/session-list/ChannelSettingsModal.vue +43 -1
- package/app/components/workshop/town/components/TownAgentBindings.vue +10 -1
- package/app/composables/useCodeCopy.ts +16 -2
- package/app/composables/workshop/useDcwStream.ts +4 -0
- package/app/composables/workshop/useWorkshopApi.ts +7 -0
- package/app/pages/dcw/[id].vue +19 -1
- package/app/pages/dcw/composables/useDcwAddNode.ts +35 -1
- package/app/pages/dcw/composables/useDcwParamApprovals.ts +119 -0
- package/app/stores/workshop/notifications.ts +43 -17
- package/app/utils/dcw-driver-badge.ts +16 -0
- package/docs/cli.en.md +1 -1
- package/i18n/dicts/_en.json +1551 -1557
- package/i18n/dicts/_en2.json +300 -300
- package/i18n/dicts/_en4.json +114 -115
- package/i18n/dicts/agentLanesView.json +61 -57
- package/i18n/dicts/appHeader.json +17 -7
- package/i18n/dicts/channelSessionList.json +51 -48
- package/i18n/dicts/chat.json +79 -0
- package/i18n/dicts/clusterTool.json +4 -3
- package/i18n/dicts/composer.json +38 -38
- package/i18n/dicts/dcwDetail.json +219 -209
- package/i18n/dicts/lineOps.json +14 -0
- package/i18n/dicts/multiChannelView.json +13 -13
- package/i18n/dicts/notifications.json +13 -0
- package/i18n/dicts/taskInspectorDrawer.json +25 -19
- package/i18n/locales/en.ts +166 -8
- package/i18n/locales/zh-CN.ts +166 -8
- package/package.json +1 -1
- package/public/robots.txt +3 -0
- package/scripts/_dbg-protocol-matrix.mjs +8 -1
- package/server/api/mcp/workshop.ts +8 -1
- package/server/api/metrics.ts +4 -1
- package/server/api/plugins/[name]/[...path].ts +4 -3
- package/server/api/system/backup/list.get.ts +32 -0
- package/server/api/system/backup/run.post.ts +21 -0
- package/server/api/system/settings/index.patch.ts +12 -2
- package/server/api/system/settings/reset.post.ts +11 -2
- package/server/api/users/[id].delete.ts +9 -2
- package/server/api/users/[id].put.ts +9 -2
- package/server/api/users/index.post.ts +9 -2
- package/server/api/users/login.post.ts +3 -3
- package/server/api/users/register.post.ts +11 -1
- package/server/api/workshop/a2a/[agentId]/rpc/index.post.ts +23 -13
- package/server/api/workshop/channel-templates/[id]/instantiate.post.ts +6 -0
- package/server/api/workshop/channels/[id]/line.put.ts +30 -0
- package/server/api/workshop/dcw/line/query.get.ts +6 -0
- package/server/api/workshop/dcw/mes-test-read.post.ts +24 -0
- package/server/api/workshop/dcw/recipes/[id]/revert.post.ts +3 -2
- package/server/api/workshop/fs/dirs.get.ts +19 -1
- package/server/api/workshop/ops-logs/index.get.ts +3 -2
- package/server/api/workshop/users/register.post.ts +7 -0
- package/server/mcp/workshop-server.ts +36 -13
- package/server/middleware/00-security-headers.ts +38 -0
- package/server/middleware/01-rate-guard.ts +101 -0
- package/server/plugins/backup.ts +56 -1
- package/server/plugins/workshop.ts +4 -0
- package/server/plugins-builtin/diag-bridge/host/plugin.mjs +18 -11
- package/server/repositories/user.repository.ts +10 -5
- package/server/services/user.service.ts +24 -1
- package/server/services/workshop/agents/host-tool-bridge/dispatch.ts +1 -1
- package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +7 -1
- package/server/services/workshop/agents/industrial/index.ts +3 -1
- package/server/services/workshop/agents/industrial/mes-tools.ts +135 -0
- package/server/services/workshop/agents/industrial/ops-tools.ts +243 -30
- package/server/services/workshop/agents/industrial-context.ts +19 -0
- package/server/services/workshop/agents/tool-classes.ts +12 -0
- package/server/services/workshop/aml/dataset-builder.ts +4 -2
- package/server/services/workshop/aml/job-orchestrator/process.ts +1 -0
- package/server/services/workshop/aml/job-orchestrator/shared.ts +2 -0
- package/server/services/workshop/aml/job-orchestrator/start-job.ts +5 -2
- package/server/services/workshop/db/channel.repo.ts +11 -1
- package/server/services/workshop/db/database/migrations.ts +2 -0
- package/server/services/workshop/db/database/rows.ts +2 -0
- package/server/services/workshop/db/database/schema.ts +32 -0
- package/server/services/workshop/db/database/seed.ts +19 -9
- package/server/services/workshop/db/schema.sql +32 -0
- package/server/services/workshop/dcw/dcw-controller/recipes.ts +66 -7
- package/server/services/workshop/dcw/dcw-controller/write.ts +35 -6
- package/server/services/workshop/dcw/dcw-recipe.repo.ts +12 -5
- package/server/services/workshop/dcw/drivers/mes-rest.ts +543 -0
- package/server/services/workshop/dcw/drivers/registry.ts +2 -0
- package/server/services/workshop/dcw/drivers/shared.ts +30 -0
- package/server/services/workshop/dcw/param-map.repo.ts +3 -0
- package/server/services/workshop/mes/mes-controller.ts +410 -0
- package/server/services/workshop/mes/mes-datasets.ts +441 -0
- package/server/services/workshop/plugins/host/init.mjs +9 -1
- package/server/services/workshop/plugins/host/load.mjs +2 -2
- package/server/services/workshop/runtime/manager/admin-channel.ts +27 -1
- package/server/services/workshop/runtime/manager/channel-templates.ts +5 -4
- package/server/services/workshop/runtime/manager/runtime-wiring.ts +17 -1
- package/server/services/workshop/runtime/manager/state.ts +11 -0
- package/server/services/workshop/runtime/scheduler-loop/tick.ts +5 -1
- package/server/services/workshop/runtime/task-engine/helpers.ts +3 -1
- package/shared/config/schema.json +4 -1
- package/shared/daq-protocol.ts +2 -1
- package/shared/dcw-protocol/catalog.ts +25 -1
- package/.output/public/_nuxt/4wrEQ3np2.js +0 -21
- package/.output/public/_nuxt/B9BmiUil.js +0 -2
- package/.output/public/_nuxt/BgEDwFMf.js +0 -1
- package/.output/public/_nuxt/C4lagVdN2.js +0 -1
- package/.output/public/_nuxt/CGQvF-Gg.js +0 -14
- package/.output/public/_nuxt/Cbeifv55.js +0 -1
- package/.output/public/_nuxt/CcGuXiOa.js +0 -1
- package/.output/public/_nuxt/D0SNhlnt.js +0 -1
- package/.output/public/_nuxt/D6lZftfy.js +0 -1
- package/.output/public/_nuxt/DnH9SRMW2.js +0 -1
- package/.output/public/_nuxt/DxagrjB8.js +0 -1
- package/.output/public/_nuxt/ON2x-t6n.js +0 -1
- package/.output/public/_nuxt/PluginSlot.DmjNbrcX.css +0 -1
- package/.output/public/_nuxt/UN3nSFjj2.js +0 -1
- package/.output/public/_nuxt/Z-Z6EhXs.js +0 -1
- package/.output/public/_nuxt/_id_.DamiFT0Q.css +0 -1
- package/.output/public/_nuxt/_wsId_.DkrQkT6r.css +0 -1
- package/.output/public/_nuxt/builds/meta/c64014ca-3595-4b7a-a5ca-055687c83ba2.json +0 -1
- package/.output/public/_nuxt/qPsch_ny2.js +0 -1
- package/.output/server/chunks/build/TownView-fP9BiALv.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-BUpQSlzo.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-CDlur81q.mjs.map +0 -1
- package/.output/server/chunks/build/agents-ydYu-Ol9.mjs.map +0 -1
- package/.output/server/chunks/build/aml-DsgtDLWF.mjs.map +0 -1
- package/.output/server/chunks/build/api-BY6ji7RC.mjs.map +0 -1
- package/.output/server/chunks/build/apiClient-D281qrK2.mjs.map +0 -1
- package/.output/server/chunks/build/channel-templates-DP1ndA5K.mjs.map +0 -1
- package/.output/server/chunks/build/daq-N69AOtgw.mjs.map +0 -1
- package/.output/server/chunks/build/dcw-CN9d3Rs7.mjs.map +0 -1
- package/.output/server/chunks/build/logs-BcAjU1Ps.mjs.map +0 -1
- package/.output/server/chunks/build/operations-OFHYXwh4.mjs.map +0 -1
- package/.output/server/chunks/build/pages-BzmrmLL_.mjs.map +0 -1
- package/.output/server/chunks/build/plugins-DSka7-vS.mjs.map +0 -1
- package/.output/server/chunks/build/settings-UyZ78w2e.mjs.map +0 -1
- package/.output/server/chunks/build/teams-D-Y5mzU7.mjs.map +0 -1
- package/.output/server/chunks/build/town-BMlctE4m.mjs.map +0 -1
- package/.output/server/chunks/build/useAgentHarnessOptions-CRyQYYY0.mjs.map +0 -1
- package/.output/server/chunks/build/useAgentTemplateActions-CaRsOBmB.mjs.map +0 -1
- package/.output/server/chunks/build/useAgentTemplateForm-ChiIuPYr.mjs.map +0 -1
- package/.output/server/chunks/build/useAgentTemplatesCatalog-Bf5hk6Jf.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlDatasets-BM0lZu40.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlEntities-BDQ8TmLL.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlEnv-DgTVwpqi.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlExperiments-BtyW32PO.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlJobs-fk-H5Rp5.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlModels-hgyVHoAq.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlNotes-BjbYNADm.mjs.map +0 -1
- package/.output/server/chunks/build/useAmlPredict-U24-SZNA.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqAddNode-kW7uTSMQ.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailBinding-cpBz4hSL.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailFrames-BZGtKKXW.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailHistory-DtSTfyMi.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailNode-D_vhG0jF.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqDetailParams-JfqHvTxr.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqFilters-BUQtZ82a.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqOptimizations-Ct-TSXxy.mjs.map +0 -1
- package/.output/server/chunks/build/useDaqTemplates-BqQRdrIm.mjs.map +0 -1
- package/.output/server/chunks/build/useDashboardData-CNOY4Bi3.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwAddNode-C1HDP3yG.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwCards-ETEsHvVy.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwDetailScope-QTr1G6Oe.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwDetailTemplates-Djt-0Vse.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwFilter-FfVlDdyS.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwLedger-BLoMmcu1.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwLineMutations-BMC5BTWU.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwLineRun-74gN_s6T.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwProducts-D-zrMaeV.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwQuery-7tX4QYmv.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwQuickActions-C-tgcXIr.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwRecipes-FVk5gDLV.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwTemplates-LDZffy4u.mjs.map +0 -1
- package/.output/server/chunks/build/useDcwWrites-B22mwliK.mjs.map +0 -1
- package/.output/server/chunks/build/useLogsManual-COfCyUtj.mjs.map +0 -1
- package/.output/server/chunks/build/useLogsQuery-CRAm2hmS.mjs.map +0 -1
- package/.output/server/chunks/build/useLogsScope-ClNijVj4.mjs.map +0 -1
- package/.output/server/chunks/build/useOperationsFeed-CeXeHqUK.mjs.map +0 -1
- package/.output/server/chunks/build/useTeamActions-C51ciLb0.mjs.map +0 -1
- package/.output/server/chunks/build/useTeamAddMemberDialog-DthpCMP8.mjs.map +0 -1
- package/.output/server/chunks/build/useTeamCreateDialog-Dc2KTwyg.mjs.map +0 -1
- package/.output/server/chunks/build/useTeamDeployDialog-CXpvPnJD.mjs.map +0 -1
- package/.output/server/chunks/build/useTeamPluginDialog-DTs-7SSm.mjs.map +0 -1
- package/.output/server/chunks/build/useTeamsCatalog-CcpetYyW.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkbenchWorkspaces-DgiSCzsX.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkshopApi-CO3ophqt.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkshopWs-Bm80bLn7.mjs.map +0 -1
- package/.output/server/chunks/build/useWorkspaceChannels-D61Al2dr.mjs.map +0 -1
- package/.output/server/chunks/build/workshop-FQ4YzooB.mjs.map +0 -1
- package/scripts/.chk-tok +0 -1
- package/scripts/.retrain-body.json +0 -1
- package/scripts/.retrain3-body.json +0 -1
- package/scripts/.rt-tok +0 -1
- package/scripts/.rt3-tok +0 -1
- /package/.output/public/_nuxt/{BvRk9kiK2.js → DybRo6-H.js} +0 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP 防护门(公网部署基线)——单中间件四件事,内存滑窗,无外部依赖:
|
|
3
|
+
* 1. User-Agent 黑名单:默认拦常见扫描器(sqlmap/nikto/nuclei…),AW_UA_BLOCKLIST 可追加(正则段,| 分隔)
|
|
4
|
+
* 2. 请求体上限:Content-Length 超限 413(AW_BODY_LIMIT_MB,默认 64MB)
|
|
5
|
+
* 3. 频率限流:/api 认证面(login/register/mcp/a2a)严限,A其余 API 宽限(AW_RATE_LIMIT_API_PER_MIN,默认 600)
|
|
6
|
+
* 4. 404 扫描封锁:1 分钟内 /api/* 404 超过阈值(AW_SCAN_404_LIMIT,默认 60)→ 封 IP 10 分钟(反爬/反目录爆破)
|
|
7
|
+
* 旁路:AW_RATE_LIMIT_OFF=1 或 AW_BENCH_MODE=1(基准隔离实例)整体停用;
|
|
8
|
+
* 全部状态内存态(重启即清),多实例部署时反代层应另配限流。
|
|
9
|
+
*/
|
|
10
|
+
import { defineEventHandler, createError, getRequestIP, getRequestHeaders, getRequestURL } from 'h3'
|
|
11
|
+
|
|
12
|
+
const g = globalThis as typeof globalThis & {
|
|
13
|
+
__awRateBuckets?: Map<string, { count: number, reset: number }>
|
|
14
|
+
__awScanHits?: Map<string, { count: number, reset: number }>
|
|
15
|
+
__awScanBlocked?: Map<string, number>
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const envNum = (v: string | undefined, dflt: number) => {
|
|
19
|
+
const n = Number(v)
|
|
20
|
+
return Number.isFinite(n) && n > 0 ? n : dflt
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const OFF = process.env.AW_RATE_LIMIT_OFF === '1' || process.env.AW_BENCH_MODE === '1'
|
|
24
|
+
const AUTH_LIMIT = envNum(process.env.AW_RATE_LIMIT_AUTH_PER_MIN, 20)
|
|
25
|
+
const API_LIMIT = envNum(process.env.AW_RATE_LIMIT_API_PER_MIN, 600)
|
|
26
|
+
const SCAN_LIMIT = envNum(process.env.AW_SCAN_404_LIMIT, 60)
|
|
27
|
+
const BODY_LIMIT_MB = envNum(process.env.AW_BODY_LIMIT_MB, 64)
|
|
28
|
+
const BLOCK_MS = 10 * 60_000
|
|
29
|
+
const WINDOW_MS = 60_000
|
|
30
|
+
// 默认 UA 黑名单:公认攻击工具,不含任何浏览器/爬虫正常名(正常搜索引擎爬虫由 robots.txt 约束)
|
|
31
|
+
const UA_RE = new RegExp(process.env.AW_UA_BLOCKLIST
|
|
32
|
+
|| 'sqlmap|nikto|nuclei|masscan|zgrab|dirbuster|gobuster|wfuzz|ffuf|hydra|acunetix|nessus|arachni', 'i')
|
|
33
|
+
|
|
34
|
+
/** 认证/敏感面(严限):登录、注册、MCP、A2A */
|
|
35
|
+
function isAuthFace(pathname: string): boolean {
|
|
36
|
+
return pathname.startsWith('/api/users/login')
|
|
37
|
+
|| pathname.startsWith('/api/users/register')
|
|
38
|
+
|| pathname.startsWith('/api/workshop/users/register')
|
|
39
|
+
|| pathname.startsWith('/api/mcp/')
|
|
40
|
+
|| pathname.includes('/a2a/')
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function bucketOf(map: Map<string, { count: number, reset: number }>, key: string, limit: number, now: number): number {
|
|
44
|
+
const b = map.get(key)
|
|
45
|
+
if (!b || b.reset <= now) {
|
|
46
|
+
map.set(key, { count: 1, reset: now + WINDOW_MS })
|
|
47
|
+
return limit - 1
|
|
48
|
+
}
|
|
49
|
+
b.count += 1
|
|
50
|
+
// 可为负:第 N+1 发起 remaining < 0,由调用方判 429(勿钳 0,否则永不触发)
|
|
51
|
+
return limit - b.count
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export default defineEventHandler((event) => {
|
|
55
|
+
if (OFF) return
|
|
56
|
+
const url = getRequestURL(event)
|
|
57
|
+
const path = url.pathname
|
|
58
|
+
const ip = getRequestIP(event, { xForwardedFor: true }) ?? 'local'
|
|
59
|
+
const now = Date.now()
|
|
60
|
+
|
|
61
|
+
// 已封锁 IP(404 扫描触发):直接 403,不看别的
|
|
62
|
+
const blockedUntil = g.__awScanBlocked?.get(ip)
|
|
63
|
+
if (blockedUntil && blockedUntil > now) {
|
|
64
|
+
throw createError({ statusCode: 403, statusMessage: `IP temporarily blocked (scanning): retry after ${Math.ceil((blockedUntil - now) / 1000)}s` })
|
|
65
|
+
}
|
|
66
|
+
if (blockedUntil && g.__awScanBlocked) g.__awScanBlocked.delete(ip)
|
|
67
|
+
|
|
68
|
+
// UA 黑名单(全路径,扫描器对静态面也探)
|
|
69
|
+
const ua = getRequestHeaders(event)['user-agent'] ?? ''
|
|
70
|
+
if (ua && UA_RE.test(ua)) {
|
|
71
|
+
throw createError({ statusCode: 403, statusMessage: 'User agent not allowed' })
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// 请求体上限(带 Content-Length 才拦;chunked 走 nitro 默认)
|
|
75
|
+
const len = Number(getRequestHeaders(event)['content-length'] ?? 0)
|
|
76
|
+
if (len > BODY_LIMIT_MB * 1024 * 1024) {
|
|
77
|
+
throw createError({ statusCode: 413, statusMessage: `Request body too large (limit ${BODY_LIMIT_MB}MB)` })
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// 只对 /api/* 限流(静态/页面不做)
|
|
81
|
+
if (path.startsWith('/api/')) {
|
|
82
|
+
if (!g.__awRateBuckets) g.__awRateBuckets = new Map()
|
|
83
|
+
const limit = isAuthFace(path) ? AUTH_LIMIT : API_LIMIT
|
|
84
|
+
const remaining = bucketOf(g.__awRateBuckets, `${ip}|${limit}`, limit, now)
|
|
85
|
+
if (remaining < 0) {
|
|
86
|
+
throw createError({ statusCode: 429, statusMessage: 'Too many requests: slow down' })
|
|
87
|
+
}
|
|
88
|
+
// 404 扫描计数(res finish 时回填;blocked 判定在下轮请求入口生效)
|
|
89
|
+
if (!g.__awScanHits) g.__awScanHits = new Map()
|
|
90
|
+
const res = event.node?.res
|
|
91
|
+
if (!res) return
|
|
92
|
+
res.once('finish', () => {
|
|
93
|
+
if (res.statusCode !== 404) return
|
|
94
|
+
const hits = bucketOf(g.__awScanHits!, `${ip}`, SCAN_LIMIT, Date.now())
|
|
95
|
+
if (hits <= 0) {
|
|
96
|
+
if (!g.__awScanBlocked) g.__awScanBlocked = new Map()
|
|
97
|
+
g.__awScanBlocked.set(ip, Date.now() + BLOCK_MS)
|
|
98
|
+
}
|
|
99
|
+
})
|
|
100
|
+
}
|
|
101
|
+
})
|
package/server/plugins/backup.ts
CHANGED
|
@@ -53,7 +53,41 @@ async function backupOne(src: string, target: string): Promise<void> {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
/** 数据目录内的 JSON 仓储/状态文件(kv、参数面、节点绑定、插件 kv 等)+ 上级配置根的 config.yml/runtime-settings.json */
|
|
57
|
+
async function backupFlatFiles(dataDir: string, backupDir: string, stamp: string): Promise<void> {
|
|
58
|
+
const bundleDir = resolve(backupDir, `files-${stamp}`)
|
|
59
|
+
mkdirSync(bundleDir, { recursive: true })
|
|
60
|
+
const targets: Array<{ src: string, name: string }> = []
|
|
61
|
+
// dataDir 下所有 .json(逐文件拷贝,目录型子树由各自仓储自轮转,不整树递归)
|
|
62
|
+
try {
|
|
63
|
+
for (const f of readdirSync(dataDir, { withFileTypes: true })) {
|
|
64
|
+
if (f.isFile() && f.name.endsWith('.json')) targets.push({ src: resolve(dataDir, f.name), name: f.name })
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch { /* 数据目录不可读时跳过 JSON 面 */ }
|
|
68
|
+
// 配置根(config.yml + runtime-settings.json)——重建实例的"怎么做"半边
|
|
69
|
+
try {
|
|
70
|
+
const homeMod = await import('@/shared/config/home.mjs')
|
|
71
|
+
const rm = homeMod.resolveRunMode({ cwd: process.cwd(), env: process.env })
|
|
72
|
+
for (const cfg of ['config.yml', 'runtime-settings.json']) {
|
|
73
|
+
const p = resolve(rm.configRoot, cfg)
|
|
74
|
+
if (existsSync(p)) targets.push({ src: p, name: cfg })
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch { /* 模式解析失败只降级 JSON 面 */ }
|
|
78
|
+
for (const t of targets) {
|
|
79
|
+
try {
|
|
80
|
+
const tmp = resolve(bundleDir, `${t.name}.tmp`)
|
|
81
|
+
await copyFileAsync(t.src, tmp)
|
|
82
|
+
renameSync(tmp, resolve(bundleDir, t.name))
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
console.error(`[backup] ${t.name} 快照失败:`, err instanceof Error ? err.message : err)
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export async function backupOnce(dataDir: string): Promise<void> {
|
|
57
91
|
const backupDir = resolve(dataDir, 'backups')
|
|
58
92
|
mkdirSync(backupDir, { recursive: true })
|
|
59
93
|
const stamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19)
|
|
@@ -69,6 +103,8 @@ async function backupOnce(dataDir: string): Promise<void> {
|
|
|
69
103
|
console.error(`[backup] ${file} 快照失败:`, err instanceof Error ? err.message : err)
|
|
70
104
|
}
|
|
71
105
|
}
|
|
106
|
+
// JSON 仓储 + 配置面快照(三库之外的可重建性半边)
|
|
107
|
+
await backupFlatFiles(dataDir, backupDir, stamp)
|
|
72
108
|
// 轮转:每库仅保留最近 backup.keep 份(按文件名内时间戳倒序;env BACKUP_KEEP 兼容)
|
|
73
109
|
const keep = Math.max(1, backupSettings().keep)
|
|
74
110
|
for (const file of DB_FILES) {
|
|
@@ -83,9 +119,28 @@ async function backupOnce(dataDir: string): Promise<void> {
|
|
|
83
119
|
catch { /* 轮转失败不致命 */ }
|
|
84
120
|
}
|
|
85
121
|
}
|
|
122
|
+
// files-<stamp>/ 目录同 keep 轮转
|
|
123
|
+
const fileBundles = readdirSync(backupDir)
|
|
124
|
+
.filter(f => f.startsWith('files-') && !f.includes('.'))
|
|
125
|
+
.sort()
|
|
126
|
+
.reverse()
|
|
127
|
+
for (const stale of fileBundles.slice(keep)) {
|
|
128
|
+
try {
|
|
129
|
+
rmSync(resolve(backupDir, stale), { recursive: true })
|
|
130
|
+
}
|
|
131
|
+
catch { /* 轮转失败不致命 */ }
|
|
132
|
+
}
|
|
86
133
|
console.log('[backup] 快照完成 →', backupDir)
|
|
87
134
|
// R4:记录最近一次成功备份时间,供 /api/metrics 观测
|
|
88
135
|
g.__awBackupLastAt = new Date().toISOString()
|
|
136
|
+
// 备份成败留痕(audit_log;动态导入避免插件装载期循环依赖)
|
|
137
|
+
void import('../services/workshop/ops/ops').then(({ recordOps }) => {
|
|
138
|
+
recordOps({
|
|
139
|
+
actor: 'system', actorName: 'backup', actorKind: 'system',
|
|
140
|
+
action: 'system.backup.run', kind: 'system',
|
|
141
|
+
summary: `数据库快照完成(${DB_FILES.length} 库 + JSON/配置)→ ${backupDir}`,
|
|
142
|
+
})
|
|
143
|
+
}).catch(() => {})
|
|
89
144
|
}
|
|
90
145
|
|
|
91
146
|
export default function backupPlugin() {
|
|
@@ -55,6 +55,7 @@ import { recoverInterruptedJobs, shutdownOrchestrator } from '../services/worksh
|
|
|
55
55
|
import { envStatus, startCreateVenv } from '../services/workshop/aml/env-manager'
|
|
56
56
|
import { attachOmpPluginBridge } from '../services/workshop/agents/plugin-tools'
|
|
57
57
|
import { startAmlRetentionTimer, stopAmlRetentionTimer } from '../services/workshop/aml/retention'
|
|
58
|
+
import { configureMesDatasets, defaultDatasetsDir } from '../services/workshop/mes/mes-datasets'
|
|
58
59
|
|
|
59
60
|
declare global {
|
|
60
61
|
|
|
@@ -149,6 +150,9 @@ export default function workshopPlugin(nitroApp: {
|
|
|
149
150
|
recoverInterruptedJobs()
|
|
150
151
|
startAmlRetentionTimer()
|
|
151
152
|
|
|
153
|
+
// MES 数据集服务(新表由 SCHEMA_SQL 启动建出;CSV 落 <configRoot>/datasets/<id>.csv)
|
|
154
|
+
configureMesDatasets(db, defaultDatasetsDir(dataDir))
|
|
155
|
+
|
|
152
156
|
// 插件 omp 工具注册桥:启动即接管 pending 队列(此前首次 spawn omp agent 才挂桥,
|
|
153
157
|
// 全新实例未 spawn 前 kb_agent/diag_run 等插件工具会一直"未知工具")
|
|
154
158
|
attachOmpPluginBridge()
|
|
@@ -68,17 +68,24 @@ export default {
|
|
|
68
68
|
if (Date.now() - last < AUTO_COOLDOWN_MS) return
|
|
69
69
|
const now = Date.now()
|
|
70
70
|
ctx.kv.set(`cooldown:${line}`, now) // 先占冷却,防同窗连发
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
71
|
+
// 首拍竞态:开线后首个越限样本即刻触发,快照查询早于 tsdb 首次刷盘(TSDB_FLUSH_MS=500ms)
|
|
72
|
+
// → 时窗查空失败。空窗失败定向重试(≤3 次、间隔 5s,总窗 ≤20s);冷却不回滚,仍只此一次派发。
|
|
73
|
+
const question = `${line} 产线该时窗数据深度根因诊断(自动触发:节点 ${s.nodeId} 采样值 ${s.value} ${rule.op === 'lt' ? '<' : '>'} ${rule.value})`
|
|
74
|
+
const attempt = (n) => {
|
|
75
|
+
startDiagnosis(ctx, {
|
|
76
|
+
line,
|
|
77
|
+
fromMs: now - 60 * MIN,
|
|
78
|
+
toMs: now,
|
|
79
|
+
question,
|
|
80
|
+
scene: `${line}_auto`,
|
|
81
|
+
source: 'auto',
|
|
82
|
+
}).then((r) => {
|
|
83
|
+
if (r.ok) ctx.logger.warn(`自动诊断已发起:产线 ${line} runId=${r.runId}(节点 ${s.nodeId}=${s.value} 越限)`)
|
|
84
|
+
else if (n < 3 && String(r.error ?? '').includes('无数采样本')) setTimeout(() => attempt(n + 1), 5000)
|
|
85
|
+
else ctx.logger.warn(`自动诊断发起失败(产线 ${line}): ${r.error}`)
|
|
86
|
+
}).catch(() => {})
|
|
87
|
+
}
|
|
88
|
+
attempt(0)
|
|
82
89
|
}
|
|
83
90
|
catch { /* 钩子内绝不抛 */ }
|
|
84
91
|
})
|
|
@@ -139,7 +139,8 @@ function importLegacyWorkshopUsers(d: DatabaseSync): void {
|
|
|
139
139
|
insertUser.run(row.id, row.name, email, hashPassword(randomPassword()), 'user', 'active', row.created_at ?? now())
|
|
140
140
|
const hash = hashToken(row.token)
|
|
141
141
|
if (!tokenExists.get(hash)) {
|
|
142
|
-
|
|
142
|
+
// 安全基线:token_plain 不落明文(哈希即可鉴权;明文列仅为旧库形状兼容,恒 NULL)
|
|
143
|
+
insertToken.run(randomUUID(), row.id, 'legacy', hash, null, row.created_at ?? now())
|
|
143
144
|
}
|
|
144
145
|
}
|
|
145
146
|
}
|
|
@@ -241,17 +242,21 @@ function toUser(row: Record<string, unknown>): User {
|
|
|
241
242
|
export const userRepository = {
|
|
242
243
|
list({ page, pageSize, keyword }: UserListQuery): Paginated<User> {
|
|
243
244
|
const d = getDb()
|
|
244
|
-
|
|
245
|
+
// 分页边界钳制:超大/非法分页参数在 SQL 外收口(OFFSET 1e20 会打穿 sqlite 抛 500)
|
|
246
|
+
const safePage = Number.isSafeInteger(page) && page >= 1 ? page : 1
|
|
247
|
+
const safeSize = Number.isSafeInteger(pageSize) && pageSize >= 1 ? Math.min(pageSize, 200) : 20
|
|
248
|
+
// LIKE 通配符转义:用户关键词里的 %/_ 按字面匹配,不放大匹配面(ESCAPE 子句配套)
|
|
249
|
+
const kw = keyword?.toLowerCase() ? keyword.toLowerCase().replace(/[\\%_]/g, ch => `\\${ch}`) : ''
|
|
245
250
|
const where = kw
|
|
246
|
-
? `WHERE LOWER(name) LIKE ? OR LOWER(email) LIKE
|
|
251
|
+
? `WHERE LOWER(name) LIKE ? ESCAPE '\\' OR LOWER(email) LIKE ? ESCAPE '\\'`
|
|
247
252
|
: ''
|
|
248
253
|
const params = kw ? [`%${kw}%`, `%${kw}%`] : []
|
|
249
254
|
const total = (d.prepare(`SELECT COUNT(*) AS n FROM users ${where}`).get(...params) as { n: number }).n
|
|
250
255
|
const rows = d.prepare(
|
|
251
256
|
`SELECT id, name, email, role, status, created_at AS createdAt FROM users ${where}
|
|
252
257
|
ORDER BY created_at DESC LIMIT ? OFFSET ?`,
|
|
253
|
-
).all(...params,
|
|
254
|
-
return { items: rows.map(toUser), total, page, pageSize }
|
|
258
|
+
).all(...params, safeSize, (safePage - 1) * safeSize) as Array<Record<string, unknown>>
|
|
259
|
+
return { items: rows.map(toUser), total, page: safePage, pageSize: safeSize }
|
|
255
260
|
},
|
|
256
261
|
|
|
257
262
|
/** 全量用户(不分页;管理面授权矩阵用,避免分页截断) */
|
|
@@ -23,6 +23,12 @@ export function resolveUserByToken(token: string): UserProfile | null {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export const userService = {
|
|
26
|
+
/**
|
|
27
|
+
* 登录防爆破:同 IP+邮箱在 15 分钟窗口内累计失败 ≥5 次 → 锁到窗口结束(429)。
|
|
28
|
+
* 内存态,重启即清;多实例部署由反代层限流补齐。计数表封顶 5000 条防内存滥用。
|
|
29
|
+
*/
|
|
30
|
+
_loginFails: new Map<string, { count: number, firstAt: number }>(),
|
|
31
|
+
|
|
26
32
|
// ===== 管理面(与既有契约一致)=====
|
|
27
33
|
|
|
28
34
|
list(input: UserListInput) {
|
|
@@ -104,9 +110,25 @@ export const userService = {
|
|
|
104
110
|
},
|
|
105
111
|
|
|
106
112
|
/** 登录:密码校验通过后签发新 token(每次登录生成一个可独立吊销的会话 token) */
|
|
107
|
-
login(input: UserLogin): AuthResult {
|
|
113
|
+
login(input: UserLogin, opts: { ip?: string } = {}): AuthResult {
|
|
114
|
+
const FAIL_WINDOW_MS = 15 * 60_000
|
|
115
|
+
const LOCK_THRESHOLD = 5
|
|
116
|
+
const lockKey = `${opts.ip ?? 'local'}|${input.email.toLowerCase()}`
|
|
117
|
+
const fails = this._loginFails
|
|
118
|
+
if (fails.size > 5000) {
|
|
119
|
+
const oldest = fails.keys().next().value
|
|
120
|
+
if (oldest) fails.delete(oldest)
|
|
121
|
+
}
|
|
122
|
+
const rec = fails.get(lockKey)
|
|
123
|
+
// 已达阈值且窗口未过 → 锁定;偶发失败(1-4 次)不锁,窗口滑过即重置
|
|
124
|
+
if (rec && rec.count >= LOCK_THRESHOLD && Date.now() - rec.firstAt < FAIL_WINDOW_MS) {
|
|
125
|
+
const waitMin = Math.ceil((FAIL_WINDOW_MS - (Date.now() - rec.firstAt)) / 60_000)
|
|
126
|
+
throw new AppError(429, 'LOGIN_LOCKED', `失败次数过多,账号已临时锁定,请约 ${waitMin} 分钟后再试`)
|
|
127
|
+
}
|
|
108
128
|
const { id, hash } = userRepository.getPasswordHash(input.email) ?? {}
|
|
109
129
|
if (!id || !hash || !verifyPassword(input.password, hash)) {
|
|
130
|
+
if (!rec || Date.now() - rec.firstAt >= FAIL_WINDOW_MS) fails.set(lockKey, { count: 1, firstAt: Date.now() })
|
|
131
|
+
else rec.count += 1
|
|
110
132
|
throw new AppError(401, 'UNAUTHORIZED', '邮箱或密码错误')
|
|
111
133
|
}
|
|
112
134
|
const user = userRepository.findById(id)
|
|
@@ -116,6 +138,7 @@ export const userService = {
|
|
|
116
138
|
if (user.status !== 'active') {
|
|
117
139
|
throw new AppError(403, 'FORBIDDEN', '账号已禁用')
|
|
118
140
|
}
|
|
141
|
+
fails.delete(lockKey)
|
|
119
142
|
const { raw } = userRepository.createToken(id, `session-${Date.now()}`)
|
|
120
143
|
return { user: this.publicProfile(user), token: raw }
|
|
121
144
|
},
|
|
@@ -96,7 +96,7 @@ export async function dispatchHostTool(ctx: HostToolBridgeContext, req: HostTool
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
// 所有真实写入口在统一分发层再做一次服务端 fail-closed 守卫;工具目录隐藏不是安全边界。
|
|
99
|
-
if (['dcw_control', 'param_control', 'dcw_rollback', 'recipe_update', 'recipe_rollback'].includes(req.toolName)) {
|
|
99
|
+
if (['dcw_control', 'param_control', 'dcw_rollback', 'recipe_update', 'recipe_rollback', 'recipe_trial', 'recipe_apply'].includes(req.toolName)) {
|
|
100
100
|
const profile = getChannelTwinProfile(identity.channelId)
|
|
101
101
|
const guard = twinWriteGuard(identity.channelId, profile)
|
|
102
102
|
if (!guard.allowed) return { text: `${guard.code}: ${guard.message}`, isError: true }
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* 该族**不依赖 workspace**,由 dispatch 在 workspace 门控之前分流(保持原分发顺序)。
|
|
10
10
|
*/
|
|
11
11
|
import type { HostToolResult } from '../types'
|
|
12
|
-
import { toolAmlDatasetBuild, toolAmlDatasetStats, toolAmlJobCancel, toolAmlJobLogs, toolAmlJobStatus, toolAmlJobSubmit, toolAmlLeaderboard, toolAmlModelFind, toolAmlModelPromote, toolAmlModelReference, toolAmlNodeCatalog, toolAmlTrainingPlanCreate, toolAmlTrainingPlanList, toolAmlTrainingPlanTrain, toolDaqFrames, toolDaqQuery, toolDcwControl, toolDcwJudge, toolDcwJournal, toolDcwRead, toolDcwRollback, toolLineContext, toolMyIndustrialNodes, toolOpsLog, toolParamControl, toolParamRead, toolRecipeLog, toolRecipeRollback, toolRecipeUpdate, toolRecipeVersions, toolOptimizationExplore, toolTwinProviderCatalog, toolTwinSceneDiscover, toolTwinSceneCompile, toolTwinSceneFreeze, toolTwinSceneRead, toolTwinPhysicsSpecDraft, toolTwinPhysicsSpecValidate, toolTwinPhysicsSpecCompile, toolTwinSnapshotCreate, toolTwinTrialRun, toolMpcOptimize, toolTwinGateEvaluate, toolTwinBayesOptimize, toolTwinCalibrationRequest } from '../../industrial'
|
|
12
|
+
import { toolAmlDatasetBuild, toolAmlDatasetStats, toolAmlJobCancel, toolAmlJobLogs, toolAmlJobStatus, toolAmlJobSubmit, toolAmlLeaderboard, toolAmlModelFind, toolAmlModelPromote, toolAmlModelReference, toolAmlNodeCatalog, toolAmlTrainingPlanCreate, toolAmlTrainingPlanList, toolAmlTrainingPlanTrain, toolDaqFrames, toolDaqQuery, toolDcwControl, toolDcwJudge, toolDcwJournal, toolDcwRead, toolDcwRollback, toolLineContext, toolMesCatalog, toolMesDatasetRead, toolMesDatasets, toolMesFetch, toolMyIndustrialNodes, toolOpsLog, toolParamControl, toolParamRead, toolRecipeApply, toolRecipeLog, toolRecipeRollback, toolRecipeTrial, toolRecipeUpdate, toolRecipeVersions, toolOptimizationExplore, toolTwinProviderCatalog, toolTwinSceneDiscover, toolTwinSceneCompile, toolTwinSceneFreeze, toolTwinSceneRead, toolTwinPhysicsSpecDraft, toolTwinPhysicsSpecValidate, toolTwinPhysicsSpecCompile, toolTwinSnapshotCreate, toolTwinTrialRun, toolMpcOptimize, toolTwinGateEvaluate, toolTwinBayesOptimize, toolTwinCalibrationRequest } from '../../industrial'
|
|
13
13
|
|
|
14
14
|
type IndustrialToolHandler = (agentId: string, args: Record<string, unknown>, channelId?: string) => Promise<HostToolResult>
|
|
15
15
|
|
|
@@ -60,6 +60,12 @@ const INDUSTRIAL_HANDLERS = new Map<string, IndustrialToolHandler>([
|
|
|
60
60
|
['recipe_versions', (agentId, args) => toolRecipeVersions(agentId, args as { recipe_id?: string, limit?: number | string })],
|
|
61
61
|
['recipe_update', (agentId, args) => toolRecipeUpdate(agentId, args as Parameters<typeof toolRecipeUpdate>[1])],
|
|
62
62
|
['recipe_rollback', (agentId, args) => toolRecipeRollback(agentId, args as Parameters<typeof toolRecipeRollback>[1])],
|
|
63
|
+
['recipe_trial', (agentId, args) => toolRecipeTrial(agentId, args as Parameters<typeof toolRecipeTrial>[1])],
|
|
64
|
+
['recipe_apply', (agentId, args) => toolRecipeApply(agentId, args as Parameters<typeof toolRecipeApply>[1])],
|
|
65
|
+
['mes_catalog', (agentId, args) => toolMesCatalog(agentId, args as Parameters<typeof toolMesCatalog>[1])],
|
|
66
|
+
['mes_fetch', (agentId, args) => toolMesFetch(agentId, args as Parameters<typeof toolMesFetch>[1])],
|
|
67
|
+
['mes_dataset_read', (agentId, args) => toolMesDatasetRead(agentId, args as Parameters<typeof toolMesDatasetRead>[1])],
|
|
68
|
+
['mes_datasets', (agentId, args) => toolMesDatasets(agentId, args as Parameters<typeof toolMesDatasets>[1])],
|
|
63
69
|
])
|
|
64
70
|
|
|
65
71
|
/** 工业工具名集合(与 INDUSTRIAL_HANDLERS 同源;dispatch 据此在 workspace 门控前分流) */
|
|
@@ -12,12 +12,14 @@
|
|
|
12
12
|
* ops-tools.ts 运维日志与配方变更史(ops_log / recipe_* / line_context)
|
|
13
13
|
* aml-dataset-tools.ts AML 数据集与节点目录(aml_node_catalog / aml_dataset_*)
|
|
14
14
|
* aml-job-tools.ts AML 作业与模型(aml_job_* / aml_leaderboard / aml_model_*)
|
|
15
|
+
* mes-tools.ts MES 数据集面(mes_catalog / mes_fetch / mes_dataset_read / mes_datasets)
|
|
15
16
|
*/
|
|
16
17
|
export { toolMyIndustrialNodes, toolDcwControl, toolDcwRead } from './dcw-tools'
|
|
17
18
|
export { toolParamControl, toolParamRead } from './param-tools'
|
|
18
19
|
export { toolDaqQuery, toolDaqFrames } from './daq-tools'
|
|
19
20
|
export { toolDcwJudge, toolDcwRollback, toolDcwJournal } from './dcw-judge-tools'
|
|
20
|
-
export { toolOpsLog, toolRecipeLog, toolLineContext, toolRecipeVersions, toolRecipeUpdate, toolRecipeRollback } from './ops-tools'
|
|
21
|
+
export { toolOpsLog, toolRecipeLog, toolLineContext, toolRecipeVersions, toolRecipeUpdate, toolRecipeRollback, toolRecipeTrial, toolRecipeApply } from './ops-tools'
|
|
22
|
+
export { toolMesCatalog, toolMesFetch, toolMesDatasetRead, toolMesDatasets } from './mes-tools'
|
|
21
23
|
export { toolAmlNodeCatalog, toolAmlDatasetBuild, toolAmlDatasetStats } from './aml-dataset-tools'
|
|
22
24
|
export { toolAmlJobSubmit, toolAmlJobStatus, toolAmlJobLogs, toolAmlJobCancel, toolAmlLeaderboard, toolAmlModelFind, toolAmlModelPromote, toolAmlModelReference, toolAmlTrainingPlanList, toolAmlTrainingPlanTrain, toolAmlTrainingPlanCreate } from './aml-job-tools'
|
|
23
25
|
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MES 数据集工具族(mes_catalog / mes_fetch / mes_dataset_read / mes_datasets)。
|
|
3
|
+
*
|
|
4
|
+
* 面向 Agent 的 MES REST 点位只读面:目录检索、历史取数(护栏在 mes-controller 代码级)、
|
|
5
|
+
* CSV 数据集读取与清单。铁律:MES 行级原文不进 prompt —— 所有回包只给统计摘要 + ≤3 行采样;
|
|
6
|
+
* 全量原文只落 <configRoot>/datasets/<id>.csv(见 services/workshop/mes/mes-datasets.ts)。
|
|
7
|
+
* 权限:fetch 按 dcw 绑线过滤(controller 内代码级);数据集读取/清单按
|
|
8
|
+
* 创建者 ∪ 节点绑定 ∪ 可读产线(agentOpsScope 既有路径)过滤。
|
|
9
|
+
*/
|
|
10
|
+
import type { MesDatasetRow, MesDatasetRead } from '../../mes/mes-datasets'
|
|
11
|
+
import { getMesDatasets } from '../../mes/mes-datasets'
|
|
12
|
+
import { createMesController } from '../../mes/mes-controller'
|
|
13
|
+
import { agentOpsScope } from './ops-tools'
|
|
14
|
+
import { AppError } from '../../../../utils/errors'
|
|
15
|
+
|
|
16
|
+
/** 控制器单例(护栏依赖真实服务;无状态可安全复用) */
|
|
17
|
+
let controller: ReturnType<typeof createMesController> | null = null
|
|
18
|
+
function mesController(): ReturnType<typeof createMesController> {
|
|
19
|
+
controller ??= createMesController()
|
|
20
|
+
return controller
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** 数据集可见性:创建者 ∪ 节点绑定 ∪ 可读产线(节点授权线 ∪ 频道绑定线) */
|
|
24
|
+
function mesDatasetVisible(agentId: string, ds: MesDatasetRow): boolean {
|
|
25
|
+
if (ds.createdBy === agentId) return true
|
|
26
|
+
const scope = agentOpsScope(agentId)
|
|
27
|
+
if (!scope) return false
|
|
28
|
+
if (scope.nodeIds.has(ds.nodeId)) return true
|
|
29
|
+
return !!ds.lineId && (scope.lineIds.includes(ds.lineId) || scope.boundLineIds.includes(ds.lineId))
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** 数据集行 → 一行摘要(id | 节点 | 窗口 | 行数 | 状态) */
|
|
33
|
+
function dsLine(ds: MesDatasetRow): string {
|
|
34
|
+
const win = ds.fromTs && ds.toTs ? `${ds.fromTs.slice(5, 16).replace('T', ' ')} ~ ${ds.toTs.slice(5, 16).replace('T', ' ')}` : '当前值'
|
|
35
|
+
let state: string
|
|
36
|
+
if (ds.status === 'ready') state = `就绪(${ds.rows} 行,sha256 ${ds.sha256.slice(0, 8)})`
|
|
37
|
+
else if (ds.status === 'running') state = '取数中'
|
|
38
|
+
else state = `失败(${ds.error.slice(0, 80)})`
|
|
39
|
+
return `- ${ds.id} | ${ds.nodeName || ds.nodeId} | ${win} | ${state}`
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** 工具:mes_catalog —— MES REST 点位目录(数据驱动;q 子串/产线过滤;只读,无授权门槛)。
|
|
43
|
+
* 每条含 id/单位/量程/读写/历史能力位,是 mes_fetch 与 mes_dataset_read 的寻址入口。 */
|
|
44
|
+
export async function toolMesCatalog(_agentId: string, args: { q?: string, line_id?: string, limit?: number | string } = {}): Promise<{ text: string, isError?: boolean }> {
|
|
45
|
+
try {
|
|
46
|
+
const r = await mesController().catalog(args)
|
|
47
|
+
return { text: r.text }
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
return { text: `MES 点位目录查询失败:${err instanceof Error ? err.message : String(err)}(服务未就绪时请稍后重试)。`, isError: true }
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** 工具:mes_fetch —— MES 历史取数(护栏代码级:绑线授权/窗口≤7天/行数≤5000/每分钟≤6次)。
|
|
55
|
+
* 三模式:无 from/to=当前值快照;小窗口内联统计;大请求异步落 CSV 数据集(回 job_id/dataset_id,
|
|
56
|
+
* 勿轮询,用 mes_datasets 查状态)。回包只含统计摘要 + ≤3 行采样,MES 原文不进对话。 */
|
|
57
|
+
export async function toolMesFetch(agentId: string, args: { ids?: unknown, from?: string, to?: string, max_rows?: number | string } = {}): Promise<{ text: string, isError?: boolean }> {
|
|
58
|
+
try {
|
|
59
|
+
const r = await mesController().fetch(agentId, args)
|
|
60
|
+
return { text: r.text, isError: r.isError }
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
return { text: `MES 取数失败:${err instanceof Error ? err.message : String(err)}(驱动离线或点位配置缺失时常见;可先用 mes_catalog 确认点位)。`, isError: true }
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** 工具:mes_dataset_read —— 读 CSV 数据集(head=列名+总行数 / stats=统计 / rows=分页)。
|
|
68
|
+
* 权限:创建者或有该节点/产线可见权;回包同样只带 ≤3 行采样(原文不进 prompt)。 */
|
|
69
|
+
export async function toolMesDatasetRead(agentId: string, args: { dataset_id?: string, mode?: string, offset?: number | string } = {}): Promise<{ text: string, isError?: boolean }> {
|
|
70
|
+
const datasetId = String(args.dataset_id ?? '').trim()
|
|
71
|
+
if (!datasetId) return { text: 'dataset_id 必填(mes_fetch 异步回包或 mes_datasets 清单里的 id)。', isError: true }
|
|
72
|
+
const modeArg = String(args.mode ?? 'head').trim()
|
|
73
|
+
const mode = modeArg === 'stats' || modeArg === 'rows' ? modeArg : 'head'
|
|
74
|
+
try {
|
|
75
|
+
const store = getMesDatasets()
|
|
76
|
+
const meta = store.datasetMeta(datasetId)
|
|
77
|
+
if (!meta) return { text: `数据集 ${datasetId} 不存在(用 mes_datasets 列出你可读的数据集)。`, isError: true }
|
|
78
|
+
if (!mesDatasetVisible(agentId, meta)) {
|
|
79
|
+
return { text: `无权读取数据集 ${datasetId}(仅创建者、该节点绑定者或该产线可读者可读)。`, isError: true }
|
|
80
|
+
}
|
|
81
|
+
const r: MesDatasetRead = store.readDataset(datasetId, mode, Number(args.offset) || 0)
|
|
82
|
+
const stateTxt = meta.status === 'ready' ? '' : meta.status === 'running' ? '\n注意:数据集仍在取数中,当前为已写入部分。' : `\n注意:取数已失败:${meta.error.slice(0, 120)}(以下为失败前已写入部分)。`
|
|
83
|
+
if (r.mode === 'stats') {
|
|
84
|
+
const s = r.stats
|
|
85
|
+
const f4 = (v: number | null | undefined): string => v == null || !Number.isFinite(v) ? '-' : String(Number(v.toFixed(4)))
|
|
86
|
+
return {
|
|
87
|
+
text: `数据集 ${datasetId} 统计(${meta.nodeName || meta.nodeId},产线 ${meta.lineId || '未分配'}):\n`
|
|
88
|
+
+ ` 数值行数 ${s.count} | 首 ${s.firstTs ?? '-'} ~ 末 ${s.lastTs ?? '-'}\n`
|
|
89
|
+
+ ` min ${f4(s.min)} / max ${f4(s.max)} / mean ${f4(s.mean)} / stddev ${f4(s.stddev)}\n`
|
|
90
|
+
+ ` 文件 sha256 ${meta.sha256.slice(0, 16)}${stateTxt}`,
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// head / rows:列名+行数+分页游标,采样 ≤3 行(原文不进 prompt)
|
|
94
|
+
let headTxt: string
|
|
95
|
+
let totalRows: number
|
|
96
|
+
let sample: string[]
|
|
97
|
+
if (r.mode === 'head') {
|
|
98
|
+
headTxt = `数据集 ${datasetId} 概览(${meta.nodeName || meta.nodeId},产线 ${meta.lineId || '未分配'}):\n 列名: ${r.head.columns.join(', ')}\n 总行数: ${r.head.totalRows}\n`
|
|
99
|
+
totalRows = r.head.totalRows
|
|
100
|
+
sample = r.head.preview.slice(0, 3).map(row => row.join(','))
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
headTxt = `数据集 ${datasetId} 第 ${r.rowsView.offset} 行起的分页(每页 20 行,共 ${r.rowsView.total} 行;本页 ${r.rowsView.rows.length} 行):\n`
|
|
104
|
+
totalRows = r.rowsView.total
|
|
105
|
+
sample = r.rowsView.rows.slice(0, 3).map(row => row.join(','))
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
text: `${headTxt}采样(≤3 行,ts,value): ${sample.join(' | ') || '(空)'}${totalRows > 3 ? '(其余行不进对话;统计用 mode=stats,分页翻看用 offset)' : ''}${stateTxt}`,
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
if (err instanceof AppError && err.status === 404) return { text: err.message, isError: true }
|
|
113
|
+
return { text: `数据集读取失败:${err instanceof Error ? err.message : String(err)}`, isError: true }
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** 工具:mes_datasets —— 你可见的 CSV 数据集清单(新→旧;创建者/节点绑定/产线可读过滤)。
|
|
118
|
+
* 用于找回 mes_fetch 异步作业的 dataset_id 与确认取数状态(替代轮询 job)。 */
|
|
119
|
+
export async function toolMesDatasets(agentId: string, args: { limit?: number | string } = {}): Promise<{ text: string, isError?: boolean }> {
|
|
120
|
+
try {
|
|
121
|
+
const store = getMesDatasets()
|
|
122
|
+
const limit = Math.min(Math.max(Math.round(Number(args.limit)) || 20, 1), 100)
|
|
123
|
+
const visible = store.listDatasets(100).filter(ds => mesDatasetVisible(agentId, ds)).slice(0, limit)
|
|
124
|
+
if (visible.length === 0) {
|
|
125
|
+
return { text: '你还没有可见的 MES 数据集。用 mes_fetch(带 from/to 与较大 max_rows)创建;或刚创建的作业尚未登记(稍后再查)。' }
|
|
126
|
+
}
|
|
127
|
+
const running = visible.filter(ds => ds.status === 'running').length
|
|
128
|
+
return {
|
|
129
|
+
text: `MES 数据集清单(可见 ${visible.length} 条,新→旧${running > 0 ? `;其中 ${running} 条取数中 —— 勿轮询,未完成先做别的` : ''}):\n${visible.map(dsLine).join('\n')}\n\n说明:读统计用 mes_dataset_read(dataset_id, mode=stats);读分页/概览用 mode=head|rows。`,
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
return { text: `数据集清单查询失败:${err instanceof Error ? err.message : String(err)}(服务未就绪时请稍后重试)。`, isError: true }
|
|
134
|
+
}
|
|
135
|
+
}
|