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.
Files changed (1086) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +157 -1
  2. package/.output/.AgentWorkShop/prompts/host-tools.json +157 -1
  3. package/.output/.AgentWorkShop/schema.json +4 -1
  4. package/.output/nitro.json +1 -1
  5. package/.output/public/_nuxt/8oRmGaAV.js +1 -0
  6. package/.output/public/_nuxt/{9zrLAN2o2.js → BJhsCisg2.js} +1 -1
  7. package/.output/public/_nuxt/BOhcoxIu.js +2 -0
  8. package/.output/public/_nuxt/{BdM_Qr752.js → BP8TgWo02.js} +1 -1
  9. package/.output/public/_nuxt/{bg2adfck.js → BPqXOlYX.js} +1 -1
  10. package/.output/public/_nuxt/{Crbir9cT.js → BQOn0q6Y.js} +1 -1
  11. package/.output/public/_nuxt/{BPou3U7b.js → BQy0Yy7S.js} +1 -1
  12. package/.output/public/_nuxt/BTVyPFng2.js +1 -0
  13. package/.output/public/_nuxt/{qOlYoGLf.js → BWowAAJb.js} +1 -1
  14. package/.output/public/_nuxt/{CTvh8v4T.js → BXR3tgEk.js} +1 -1
  15. package/.output/public/_nuxt/{DQMbdg4t.js → BZtgVXC5.js} +1 -1
  16. package/.output/public/_nuxt/BcX4fktE.js +1 -0
  17. package/.output/public/_nuxt/{B_LcD7qE2.js → BdF9OAZq2.js} +1 -1
  18. package/.output/public/_nuxt/{IU-UGkCJ2.js → BhcbvVOa2.js} +1 -1
  19. package/.output/public/_nuxt/{CBDX7p73.js → BjWbbMHs.js} +1 -1
  20. package/.output/public/_nuxt/{mNnuUoSy.js → BkfA3BbD.js} +1 -1
  21. package/.output/public/_nuxt/{YaroNkJZ2.js → BmTzcKJg2.js} +1 -1
  22. package/.output/public/_nuxt/BnoyYd0Z2.js +1 -0
  23. package/.output/public/_nuxt/{Bl5dYv4m.js → BqYO-UfR.js} +1 -1
  24. package/.output/public/_nuxt/Btv3HXrq.js +1 -0
  25. package/.output/public/_nuxt/{BGKUW7ra.js → Btx8wL4-.js} +1 -1
  26. package/.output/public/_nuxt/{CBIoheY42.js → BuXaEtBG2.js} +1 -1
  27. package/.output/public/_nuxt/{BXx9AxdF2.js → BxWvUgMz2.js} +1 -1
  28. package/.output/public/_nuxt/{1g9IT9Qh2.js → BxoaZc_U2.js} +1 -1
  29. package/.output/public/_nuxt/C-LU6xv_.js +1 -0
  30. package/.output/public/_nuxt/{BcQXL8pb.js → C-y_g11k.js} +1 -1
  31. package/.output/public/_nuxt/{Bt2ZL5332.js → C4sQKuhk.js} +1 -1
  32. package/.output/public/_nuxt/C7_F68I7.js +1 -0
  33. package/.output/public/_nuxt/{CkPxL4UX2.js → CBUIODly2.js} +1 -1
  34. package/.output/public/_nuxt/CFjveTJh.js +1 -0
  35. package/.output/public/_nuxt/{BQXCMsXk.js → CMWyj56j.js} +1 -1
  36. package/.output/public/_nuxt/{C4WhK2wq.js → COQM2L1M.js} +1 -1
  37. package/.output/public/_nuxt/{BiUhxH3t2.js → CV61ysvv.js} +1 -1
  38. package/.output/public/_nuxt/Ca3iDJwu2.js +21 -0
  39. package/.output/public/_nuxt/{BiOSWsjD.js → Cg8Pgbeu.js} +1 -1
  40. package/.output/public/_nuxt/{CFQyYMEn2.js → Ch9KdZWb2.js} +1 -1
  41. package/.output/public/_nuxt/{B1RT9NTO2.js → ChN5v-i22.js} +1 -1
  42. package/.output/public/_nuxt/{DefDtlKK.js → Cpm5JYv4.js} +1 -1
  43. package/.output/public/_nuxt/{DsGf2IV82.js → CtXOpljm2.js} +1 -1
  44. package/.output/public/_nuxt/{B9cGf8mg.js → CvGYm7w8.js} +1 -1
  45. package/.output/public/_nuxt/{EhhQmlBV2.js → D2Sm-GTk2.js} +1 -1
  46. package/.output/public/_nuxt/{DCtk3qqr.js → D8xUsQGt.js} +1 -1
  47. package/.output/public/_nuxt/{CQabB0oy.js → D9TpiWjt.js} +1 -1
  48. package/.output/public/_nuxt/DB4ma-iU2.js +1 -0
  49. package/.output/public/_nuxt/{BDmNbZ252.js → DCPhrNWR2.js} +1 -1
  50. package/.output/public/_nuxt/{D_Ce9Fon2.js → DFhyhDGa2.js} +1 -1
  51. package/.output/public/_nuxt/{BE7BrEw6.js → DNZmwhSD.js} +1 -1
  52. package/.output/public/_nuxt/{CMXcOb6W.js → DO9xaI9a.js} +1 -1
  53. package/.output/public/_nuxt/{H2rNs1O82.js → DUribplv2.js} +1 -1
  54. package/.output/public/_nuxt/{B8zP7kaj2.js → DV5joWTn2.js} +1 -1
  55. package/.output/public/_nuxt/{Da90gveK.js → DVOR2pWg.js} +1 -1
  56. package/.output/public/_nuxt/{mgWHSRc8.js → DZDi8inD.js} +1 -1
  57. package/.output/public/_nuxt/DZuXfuXS.js +14 -0
  58. package/.output/public/_nuxt/{Ccps4cxo.js → D_hCLbi9.js} +1 -1
  59. package/.output/public/_nuxt/{B_opxrHJ.js → Db4_F1T2.js} +1 -1
  60. package/.output/public/_nuxt/{xQX5r6tW.js → Dep0Hc9w2.js} +1 -1
  61. package/.output/public/_nuxt/{evt5VGDh.js → DffgG8vT.js} +1 -1
  62. package/.output/public/_nuxt/{Bhe953zV2.js → DioKmYyB2.js} +1 -1
  63. package/.output/public/_nuxt/{D0ldVwl-.js → Dk6Zf3-L.js} +1 -1
  64. package/.output/public/_nuxt/{Dbe9TFc9.js → DlX0nqUe.js} +1 -1
  65. package/.output/public/_nuxt/{Chphw5IA2.js → Dm_iKz8k2.js} +1 -1
  66. package/.output/public/_nuxt/{BVzw5a_0.js → DmzmgYHb2.js} +1 -1
  67. package/.output/public/_nuxt/{NJn94js_.js → DnAn2LgG.js} +1 -1
  68. package/.output/public/_nuxt/DuPM4HXw.js +1 -0
  69. package/.output/public/_nuxt/{DNoEoo8t.js → Dz2SLIde.js} +1 -1
  70. package/.output/public/_nuxt/DzwIZ81f.js +1 -0
  71. package/.output/public/_nuxt/{DD6Z0yPN2.js → MbT4wXb62.js} +1 -1
  72. package/.output/public/_nuxt/{ChGuLxwW2.js → PY2GW_3N2.js} +1 -1
  73. package/.output/public/_nuxt/PluginSlot.CGH0vb95.css +1 -0
  74. package/.output/public/_nuxt/{2_DkYoqD2.js → QHo9mN-M2.js} +1 -1
  75. package/.output/public/_nuxt/{TownView.BvlfuLtP.css → TownView.Xt1yygrh.css} +1 -1
  76. package/.output/public/_nuxt/{ty5W5QwO.js → WmMwIS4y.js} +1 -1
  77. package/.output/public/_nuxt/_id_.DZbVLNnu.css +1 -0
  78. package/.output/public/_nuxt/_wsId_.XjmieZaJ.css +1 -0
  79. package/.output/public/_nuxt/a4X3ARNm2.js +1 -0
  80. package/.output/public/_nuxt/{C00Rd6Cg.js → aV6YPjg02.js} +1 -1
  81. package/.output/public/_nuxt/builds/latest.json +1 -1
  82. package/.output/public/_nuxt/builds/meta/af879435-fc74-4017-ade0-3b92c1ab35bb.json +1 -0
  83. package/.output/public/_nuxt/cY_5jwFz2.js +1 -0
  84. package/.output/public/_nuxt/dVw8IHY62.js +1 -0
  85. package/.output/public/_nuxt/{LwIFGLgF.js → deBcbALe2.js} +1 -1
  86. package/.output/public/_nuxt/{default.CXb_zoN6.css → default.CyLpQD1C.css} +1 -1
  87. package/.output/public/_nuxt/{BzvHUfRR.js → nT-bgxvf.js} +1 -1
  88. package/.output/public/_nuxt/tq3HbWr9.js +1 -0
  89. package/.output/public/_nuxt/{BH3obZJ42.js → uY58gQqR2.js} +1 -1
  90. package/.output/public/_nuxt/{ZuQtOnfI.js → vPfDYgvR.js} +1 -1
  91. package/.output/public/_nuxt/{zsRclU9w2.js → xX7ccjDl2.js} +1 -1
  92. package/.output/public/robots.txt +3 -0
  93. package/.output/server/chunks/_/binding-authz.mjs +1 -1
  94. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  95. package/.output/server/chunks/_/entity.mjs +1 -1
  96. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  97. package/.output/server/chunks/_/nitro.mjs +3260 -1505
  98. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  99. package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
  100. package/.output/server/chunks/build/OmpTerminalPanel-mk31gVzA.mjs +1 -1
  101. package/.output/server/chunks/build/{PluginSlot-D2WUZgbp.mjs → PluginSlot-CT4YaNrB.mjs} +5 -5
  102. package/.output/server/chunks/build/{PluginSlot-D2WUZgbp.mjs.map → PluginSlot-CT4YaNrB.mjs.map} +1 -1
  103. package/.output/server/chunks/build/{TownView-fP9BiALv.mjs → TownView-Bf5VFYFj.mjs} +26 -19
  104. package/.output/server/chunks/build/TownView-Bf5VFYFj.mjs.map +1 -0
  105. package/.output/server/chunks/build/{_id_-BUpQSlzo.mjs → _id_-CuUmVPRg.mjs} +200 -86
  106. package/.output/server/chunks/build/_id_-CuUmVPRg.mjs.map +1 -0
  107. package/.output/server/chunks/build/{_id_-CDlur81q.mjs → _id_-WF20tjqT.mjs} +12 -11
  108. package/.output/server/chunks/build/_id_-WF20tjqT.mjs.map +1 -0
  109. package/.output/server/chunks/build/{_wsId_-C4L9fVHC.mjs → _wsId_-BUIKB68b.mjs} +332 -211
  110. package/.output/server/chunks/build/{_wsId_-C4L9fVHC.mjs.map → _wsId_-BUIKB68b.mjs.map} +1 -1
  111. package/.output/server/chunks/build/{agents-ydYu-Ol9.mjs → agents-DqICy4AL.mjs} +8 -7
  112. package/.output/server/chunks/build/agents-DqICy4AL.mjs.map +1 -0
  113. package/.output/server/chunks/build/{aml-DsgtDLWF.mjs → aml-C55iuLn-.mjs} +15 -13
  114. package/.output/server/chunks/build/aml-C55iuLn-.mjs.map +1 -0
  115. package/.output/server/chunks/build/{api-BY6ji7RC.mjs → api-B4Om0mEc.mjs} +4 -3
  116. package/.output/server/chunks/build/api-B4Om0mEc.mjs.map +1 -0
  117. package/.output/server/chunks/build/{apiClient-D281qrK2.mjs → apiClient-BvXtNzC8.mjs} +2 -2
  118. package/.output/server/chunks/build/apiClient-BvXtNzC8.mjs.map +1 -0
  119. package/.output/server/chunks/build/{channel-templates-DP1ndA5K.mjs → channel-templates-gdCLajKy.mjs} +5 -4
  120. package/.output/server/chunks/build/channel-templates-gdCLajKy.mjs.map +1 -0
  121. package/.output/server/chunks/build/constants-HPHJvjne.mjs +2 -1
  122. package/.output/server/chunks/build/constants-HPHJvjne.mjs.map +1 -1
  123. package/.output/server/chunks/build/{daq-N69AOtgw.mjs → daq-D0kLscVr.mjs} +15 -13
  124. package/.output/server/chunks/build/daq-D0kLscVr.mjs.map +1 -0
  125. package/.output/server/chunks/build/{dcw-CN9d3Rs7.mjs → dcw-DuhEyu7S.mjs} +11 -10
  126. package/.output/server/chunks/build/dcw-DuhEyu7S.mjs.map +1 -0
  127. package/.output/server/chunks/build/dcw-driver-badge-Df5wL_ZA.mjs +20 -0
  128. package/.output/server/chunks/build/dcw-driver-badge-Df5wL_ZA.mjs.map +1 -0
  129. package/.output/server/chunks/build/{default-DCf9tn1i.mjs → default-aFGiNebw.mjs} +70 -65
  130. package/.output/server/chunks/build/{default-DCf9tn1i.mjs.map → default-aFGiNebw.mjs.map} +1 -1
  131. package/.output/server/chunks/build/hitl-ePh3G3ue.mjs +132 -0
  132. package/.output/server/chunks/build/hitl-ePh3G3ue.mjs.map +1 -0
  133. package/.output/server/chunks/build/{logs-BcAjU1Ps.mjs → logs-BlOalbsZ.mjs} +11 -9
  134. package/.output/server/chunks/build/logs-BlOalbsZ.mjs.map +1 -0
  135. package/.output/server/chunks/build/monitor-DX_K0WMq.mjs +3 -2
  136. package/.output/server/chunks/build/{operations-OFHYXwh4.mjs → operations-BD6LK-Yz.mjs} +10 -8
  137. package/.output/server/chunks/build/operations-BD6LK-Yz.mjs.map +1 -0
  138. package/.output/server/chunks/build/{pages-BzmrmLL_.mjs → pages-DloBBvU5.mjs} +8 -7
  139. package/.output/server/chunks/build/pages-DloBBvU5.mjs.map +1 -0
  140. package/.output/server/chunks/build/permissions-BvmodvsO.mjs +3 -2
  141. package/.output/server/chunks/build/permissions-BvmodvsO.mjs.map +1 -1
  142. package/.output/server/chunks/build/{plugins-DSka7-vS.mjs → plugins-NAS9MQ5r.mjs} +5 -4
  143. package/.output/server/chunks/build/plugins-NAS9MQ5r.mjs.map +1 -0
  144. package/.output/server/chunks/build/{schedules-BYR-lA1k.mjs → schedules-D8vYHgQ5.mjs} +4 -3
  145. package/.output/server/chunks/build/{schedules-BYR-lA1k.mjs.map → schedules-D8vYHgQ5.mjs.map} +1 -1
  146. package/.output/server/chunks/build/{settings-UyZ78w2e.mjs → settings-B7HA-sdb.mjs} +6 -5
  147. package/.output/server/chunks/build/settings-B7HA-sdb.mjs.map +1 -0
  148. package/.output/server/chunks/build/{teams-D-Y5mzU7.mjs → teams-wM-MdLv9.mjs} +10 -9
  149. package/.output/server/chunks/build/teams-wM-MdLv9.mjs.map +1 -0
  150. package/.output/server/chunks/build/tokens-CloWk4x_.mjs +3 -2
  151. package/.output/server/chunks/build/tokens-CloWk4x_.mjs.map +1 -1
  152. package/.output/server/chunks/build/{town-BMlctE4m.mjs → town-B2gBu_ZE.mjs} +12 -9
  153. package/.output/server/chunks/build/town-B2gBu_ZE.mjs.map +1 -0
  154. package/.output/server/chunks/build/types-D6J7slEa.mjs +1 -1
  155. package/.output/server/chunks/build/{useAgentHarnessOptions-CRyQYYY0.mjs → useAgentHarnessOptions-BnFCh23W.mjs} +4 -3
  156. package/.output/server/chunks/build/useAgentHarnessOptions-BnFCh23W.mjs.map +1 -0
  157. package/.output/server/chunks/build/{useAgentTemplateActions-CaRsOBmB.mjs → useAgentTemplateActions-DsBRUQni.mjs} +4 -3
  158. package/.output/server/chunks/build/useAgentTemplateActions-DsBRUQni.mjs.map +1 -0
  159. package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs +2 -1
  160. package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs.map +1 -1
  161. package/.output/server/chunks/build/{useAgentTemplateForm-ChiIuPYr.mjs → useAgentTemplateForm-DzQ_t2Ue.mjs} +4 -3
  162. package/.output/server/chunks/build/useAgentTemplateForm-DzQ_t2Ue.mjs.map +1 -0
  163. package/.output/server/chunks/build/{useAgentTemplatesCatalog-Bf5hk6Jf.mjs → useAgentTemplatesCatalog-Q7LgG1Af.mjs} +5 -4
  164. package/.output/server/chunks/build/useAgentTemplatesCatalog-Q7LgG1Af.mjs.map +1 -0
  165. package/.output/server/chunks/build/{useAmlDatasets-BM0lZu40.mjs → useAmlDatasets-DeoE1idn.mjs} +5 -4
  166. package/.output/server/chunks/build/useAmlDatasets-DeoE1idn.mjs.map +1 -0
  167. package/.output/server/chunks/build/{useAmlEntities-BDQ8TmLL.mjs → useAmlEntities-BMLHU_39.mjs} +5 -4
  168. package/.output/server/chunks/build/useAmlEntities-BMLHU_39.mjs.map +1 -0
  169. package/.output/server/chunks/build/{useAmlEnv-DgTVwpqi.mjs → useAmlEnv-DdlyVzPu.mjs} +5 -4
  170. package/.output/server/chunks/build/useAmlEnv-DdlyVzPu.mjs.map +1 -0
  171. package/.output/server/chunks/build/{useAmlExperiments-BtyW32PO.mjs → useAmlExperiments-Dloi834i.mjs} +5 -4
  172. package/.output/server/chunks/build/useAmlExperiments-Dloi834i.mjs.map +1 -0
  173. package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs +2 -1
  174. package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs.map +1 -1
  175. package/.output/server/chunks/build/{useAmlJobs-fk-H5Rp5.mjs → useAmlJobs--a_1ovew.mjs} +5 -4
  176. package/.output/server/chunks/build/useAmlJobs--a_1ovew.mjs.map +1 -0
  177. package/.output/server/chunks/build/{useAmlModels-hgyVHoAq.mjs → useAmlModels-D7MuOWOy.mjs} +5 -4
  178. package/.output/server/chunks/build/useAmlModels-D7MuOWOy.mjs.map +1 -0
  179. package/.output/server/chunks/build/{useAmlNotes-BjbYNADm.mjs → useAmlNotes-CTZe-GI0.mjs} +5 -4
  180. package/.output/server/chunks/build/useAmlNotes-CTZe-GI0.mjs.map +1 -0
  181. package/.output/server/chunks/build/{useAmlPredict-U24-SZNA.mjs → useAmlPredict-BToRrVRV.mjs} +5 -4
  182. package/.output/server/chunks/build/useAmlPredict-BToRrVRV.mjs.map +1 -0
  183. package/.output/server/chunks/build/{useDaqAddNode-kW7uTSMQ.mjs → useDaqAddNode-CaOCbe4-.mjs} +6 -5
  184. package/.output/server/chunks/build/useDaqAddNode-CaOCbe4-.mjs.map +1 -0
  185. package/.output/server/chunks/build/{useDaqDetailBinding-cpBz4hSL.mjs → useDaqDetailBinding-C7AbGIdP.mjs} +6 -5
  186. package/.output/server/chunks/build/useDaqDetailBinding-C7AbGIdP.mjs.map +1 -0
  187. package/.output/server/chunks/build/{useDaqDetailFrames-BZGtKKXW.mjs → useDaqDetailFrames-CmAEdbAL.mjs} +5 -4
  188. package/.output/server/chunks/build/useDaqDetailFrames-CmAEdbAL.mjs.map +1 -0
  189. package/.output/server/chunks/build/{useDaqDetailHistory-DtSTfyMi.mjs → useDaqDetailHistory-pfi6zXWU.mjs} +5 -4
  190. package/.output/server/chunks/build/useDaqDetailHistory-pfi6zXWU.mjs.map +1 -0
  191. package/.output/server/chunks/build/{useDaqDetailNode-D_vhG0jF.mjs → useDaqDetailNode-qT7MjqJ7.mjs} +8 -7
  192. package/.output/server/chunks/build/useDaqDetailNode-qT7MjqJ7.mjs.map +1 -0
  193. package/.output/server/chunks/build/{useDaqDetailParams-JfqHvTxr.mjs → useDaqDetailParams-CrTMDs-2.mjs} +6 -5
  194. package/.output/server/chunks/build/useDaqDetailParams-CrTMDs-2.mjs.map +1 -0
  195. package/.output/server/chunks/build/{useDaqFilters-BUQtZ82a.mjs → useDaqFilters-CMysN13f.mjs} +8 -7
  196. package/.output/server/chunks/build/useDaqFilters-CMysN13f.mjs.map +1 -0
  197. package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs +2 -1
  198. package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs.map +1 -1
  199. package/.output/server/chunks/build/{useDaqOptimizations-Ct-TSXxy.mjs → useDaqOptimizations-Coq5lsfM.mjs} +5 -4
  200. package/.output/server/chunks/build/useDaqOptimizations-Coq5lsfM.mjs.map +1 -0
  201. package/.output/server/chunks/build/{useDaqStream-wOxZcMDA.mjs → useDaqStream-DhzdoyIR.mjs} +3 -3
  202. package/.output/server/chunks/build/{useDaqStream-wOxZcMDA.mjs.map → useDaqStream-DhzdoyIR.mjs.map} +1 -1
  203. package/.output/server/chunks/build/{useDaqTemplates-BqQRdrIm.mjs → useDaqTemplates-C7GzQmdJ.mjs} +6 -5
  204. package/.output/server/chunks/build/useDaqTemplates-C7GzQmdJ.mjs.map +1 -0
  205. package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs +2 -1
  206. package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs.map +1 -1
  207. package/.output/server/chunks/build/{useDashboardData-CNOY4Bi3.mjs → useDashboardData-DgJcGJaF.mjs} +7 -6
  208. package/.output/server/chunks/build/useDashboardData-DgJcGJaF.mjs.map +1 -0
  209. package/.output/server/chunks/build/{useDcwAddNode-C1HDP3yG.mjs → useDcwAddNode-C9DbEKHi.mjs} +38 -5
  210. package/.output/server/chunks/build/useDcwAddNode-C9DbEKHi.mjs.map +1 -0
  211. package/.output/server/chunks/build/{useDcwCards-ETEsHvVy.mjs → useDcwCards-VDoMYG7l.mjs} +5 -4
  212. package/.output/server/chunks/build/useDcwCards-VDoMYG7l.mjs.map +1 -0
  213. package/.output/server/chunks/build/{useDcwDetailScope-QTr1G6Oe.mjs → useDcwDetailScope-CL97tJdJ.mjs} +7 -6
  214. package/.output/server/chunks/build/useDcwDetailScope-CL97tJdJ.mjs.map +1 -0
  215. package/.output/server/chunks/build/{useDcwDetailTemplates-Djt-0Vse.mjs → useDcwDetailTemplates-OLmjMSGD.mjs} +5 -4
  216. package/.output/server/chunks/build/useDcwDetailTemplates-OLmjMSGD.mjs.map +1 -0
  217. package/.output/server/chunks/build/{useDcwFilter-FfVlDdyS.mjs → useDcwFilter-Bs9C6-h_.mjs} +5 -4
  218. package/.output/server/chunks/build/useDcwFilter-Bs9C6-h_.mjs.map +1 -0
  219. package/.output/server/chunks/build/{useDcwLedger-BLoMmcu1.mjs → useDcwLedger-Bbf_iFOY.mjs} +5 -4
  220. package/.output/server/chunks/build/useDcwLedger-Bbf_iFOY.mjs.map +1 -0
  221. package/.output/server/chunks/build/{useDcwLineMutations-BMC5BTWU.mjs → useDcwLineMutations-Bhtuqw7J.mjs} +5 -4
  222. package/.output/server/chunks/build/useDcwLineMutations-Bhtuqw7J.mjs.map +1 -0
  223. package/.output/server/chunks/build/{useDcwLineRun-74gN_s6T.mjs → useDcwLineRun-CGqZSnG4.mjs} +5 -4
  224. package/.output/server/chunks/build/useDcwLineRun-CGqZSnG4.mjs.map +1 -0
  225. package/.output/server/chunks/build/useDcwParamApprovals-BBwdFsKv.mjs +119 -0
  226. package/.output/server/chunks/build/useDcwParamApprovals-BBwdFsKv.mjs.map +1 -0
  227. package/.output/server/chunks/build/{useDcwProducts-D-zrMaeV.mjs → useDcwProducts-BoBkJqpv.mjs} +5 -4
  228. package/.output/server/chunks/build/useDcwProducts-BoBkJqpv.mjs.map +1 -0
  229. package/.output/server/chunks/build/{useDcwQuery-7tX4QYmv.mjs → useDcwQuery-DP7b2qb6.mjs} +5 -4
  230. package/.output/server/chunks/build/useDcwQuery-DP7b2qb6.mjs.map +1 -0
  231. package/.output/server/chunks/build/{useDcwQuickActions-C-tgcXIr.mjs → useDcwQuickActions-DHRiA9KN.mjs} +5 -4
  232. package/.output/server/chunks/build/useDcwQuickActions-DHRiA9KN.mjs.map +1 -0
  233. package/.output/server/chunks/build/{useDcwRecipes-FVk5gDLV.mjs → useDcwRecipes-CIMeH2oF.mjs} +5 -4
  234. package/.output/server/chunks/build/useDcwRecipes-CIMeH2oF.mjs.map +1 -0
  235. package/.output/server/chunks/build/{useDcwStream-D04kCV3J.mjs → useDcwStream-B9ugUWRq.mjs} +10 -3
  236. package/.output/server/chunks/build/{useDcwStream-D04kCV3J.mjs.map → useDcwStream-B9ugUWRq.mjs.map} +1 -1
  237. package/.output/server/chunks/build/{useDcwTemplates-LDZffy4u.mjs → useDcwTemplates-M_-qjV8E.mjs} +5 -4
  238. package/.output/server/chunks/build/useDcwTemplates-M_-qjV8E.mjs.map +1 -0
  239. package/.output/server/chunks/build/{useDcwWrites-B22mwliK.mjs → useDcwWrites-D94dAzqr.mjs} +5 -4
  240. package/.output/server/chunks/build/useDcwWrites-D94dAzqr.mjs.map +1 -0
  241. package/.output/server/chunks/build/{useDeviceTwins-CbVad1M3.mjs → useDeviceTwins-BqwVJaZg.mjs} +2 -2
  242. package/.output/server/chunks/build/{useDeviceTwins-CbVad1M3.mjs.map → useDeviceTwins-BqwVJaZg.mjs.map} +1 -1
  243. package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs +2 -1
  244. package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs.map +1 -1
  245. package/.output/server/chunks/build/{useLogsManual-COfCyUtj.mjs → useLogsManual-CMjD62nt.mjs} +5 -4
  246. package/.output/server/chunks/build/useLogsManual-CMjD62nt.mjs.map +1 -0
  247. package/.output/server/chunks/build/{useLogsQuery-CRAm2hmS.mjs → useLogsQuery-2x1mKxT1.mjs} +5 -4
  248. package/.output/server/chunks/build/useLogsQuery-2x1mKxT1.mjs.map +1 -0
  249. package/.output/server/chunks/build/{useLogsScope-ClNijVj4.mjs → useLogsScope-04cUJCU-.mjs} +5 -4
  250. package/.output/server/chunks/build/useLogsScope-04cUJCU-.mjs.map +1 -0
  251. package/.output/server/chunks/build/useMonitorColumns-DhYvkLDq.mjs +3 -2
  252. package/.output/server/chunks/build/useMonitorColumns-DhYvkLDq.mjs.map +1 -1
  253. package/.output/server/chunks/build/useMonitorData-guVjMDtR.mjs +3 -2
  254. package/.output/server/chunks/build/useMonitorData-guVjMDtR.mjs.map +1 -1
  255. package/.output/server/chunks/build/useMonitorFormat-C7lhZe4g.mjs +2 -1
  256. package/.output/server/chunks/build/useMonitorFormat-C7lhZe4g.mjs.map +1 -1
  257. package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs +2 -1
  258. package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs.map +1 -1
  259. package/.output/server/chunks/build/{useOperationsFeed-CeXeHqUK.mjs → useOperationsFeed-DsA2ym7M.mjs} +5 -4
  260. package/.output/server/chunks/build/useOperationsFeed-DsA2ym7M.mjs.map +1 -0
  261. package/.output/server/chunks/build/{useOpsLog-CgnNG7_n.mjs → useOpsLog-SnWPuRtK.mjs} +2 -2
  262. package/.output/server/chunks/build/{useOpsLog-CgnNG7_n.mjs.map → useOpsLog-SnWPuRtK.mjs.map} +1 -1
  263. package/.output/server/chunks/build/{useTeamActions-C51ciLb0.mjs → useTeamActions-BOLQkYxg.mjs} +4 -3
  264. package/.output/server/chunks/build/useTeamActions-BOLQkYxg.mjs.map +1 -0
  265. package/.output/server/chunks/build/{useTeamAddMemberDialog-DthpCMP8.mjs → useTeamAddMemberDialog-BCgrLPxI.mjs} +4 -3
  266. package/.output/server/chunks/build/useTeamAddMemberDialog-BCgrLPxI.mjs.map +1 -0
  267. package/.output/server/chunks/build/{useTeamCreateDialog-Dc2KTwyg.mjs → useTeamCreateDialog-CJk40LqS.mjs} +4 -3
  268. package/.output/server/chunks/build/useTeamCreateDialog-CJk40LqS.mjs.map +1 -0
  269. package/.output/server/chunks/build/{useTeamDeployDialog-CXpvPnJD.mjs → useTeamDeployDialog-49hdUXQP.mjs} +4 -3
  270. package/.output/server/chunks/build/useTeamDeployDialog-49hdUXQP.mjs.map +1 -0
  271. package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs +2 -1
  272. package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs.map +1 -1
  273. package/.output/server/chunks/build/{useTeamPluginDialog-DTs-7SSm.mjs → useTeamPluginDialog-Dh-QOoiU.mjs} +4 -3
  274. package/.output/server/chunks/build/useTeamPluginDialog-Dh-QOoiU.mjs.map +1 -0
  275. package/.output/server/chunks/build/{useTeamsCatalog-CcpetYyW.mjs → useTeamsCatalog-HBSyKt5P.mjs} +5 -4
  276. package/.output/server/chunks/build/useTeamsCatalog-HBSyKt5P.mjs.map +1 -0
  277. package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs +2 -1
  278. package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs.map +1 -1
  279. package/.output/server/chunks/build/useTokenCreate-DkYvEQUD.mjs +3 -2
  280. package/.output/server/chunks/build/useTokenCreate-DkYvEQUD.mjs.map +1 -1
  281. package/.output/server/chunks/build/useTokenRename-DOCP4aeI.mjs +3 -2
  282. package/.output/server/chunks/build/useTokenRename-DOCP4aeI.mjs.map +1 -1
  283. package/.output/server/chunks/build/useTokenReveal-CybwwflV.mjs +3 -2
  284. package/.output/server/chunks/build/useTokenReveal-CybwwflV.mjs.map +1 -1
  285. package/.output/server/chunks/build/useTokensList-BLiMvrc4.mjs +3 -2
  286. package/.output/server/chunks/build/useTokensList-BLiMvrc4.mjs.map +1 -1
  287. package/.output/server/chunks/build/useWorkbenchAuth-DqjBX-6w.mjs +3 -2
  288. package/.output/server/chunks/build/useWorkbenchAuth-DqjBX-6w.mjs.map +1 -1
  289. package/.output/server/chunks/build/{useWorkbenchWorkspaces-DgiSCzsX.mjs → useWorkbenchWorkspaces-GQVU9BLv.mjs} +6 -4
  290. package/.output/server/chunks/build/useWorkbenchWorkspaces-GQVU9BLv.mjs.map +1 -0
  291. package/.output/server/chunks/build/{useWorkshopApi-CO3ophqt.mjs → useWorkshopApi-C9sTYu1F.mjs} +10 -2
  292. package/.output/server/chunks/build/useWorkshopApi-C9sTYu1F.mjs.map +1 -0
  293. package/.output/server/chunks/build/{useWorkshopWs-Bm80bLn7.mjs → useWorkshopWs-CgeCsaYJ.mjs} +4 -128
  294. package/.output/server/chunks/build/useWorkshopWs-CgeCsaYJ.mjs.map +1 -0
  295. package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs +3 -2
  296. package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs.map +1 -1
  297. package/.output/server/chunks/build/{useWorkspaceChannels-D61Al2dr.mjs → useWorkspaceChannels-B13vROC1.mjs} +5 -3
  298. package/.output/server/chunks/build/useWorkspaceChannels-B13vROC1.mjs.map +1 -0
  299. package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs +2 -1
  300. package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs.map +1 -1
  301. package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs +2 -1
  302. package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs.map +1 -1
  303. package/.output/server/chunks/build/users-CCf5PgRs.mjs +3 -2
  304. package/.output/server/chunks/build/users-CCf5PgRs.mjs.map +1 -1
  305. package/.output/server/chunks/build/{workshop-FQ4YzooB.mjs → workshop-BDqWzJtr.mjs} +6 -4
  306. package/.output/server/chunks/build/workshop-BDqWzJtr.mjs.map +1 -0
  307. package/.output/server/chunks/build/workspaces-CmW0cpOt.mjs +1 -1
  308. package/.output/server/chunks/routes/api/health.get.mjs +2 -1
  309. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  310. package/.output/server/chunks/routes/api/index.get.mjs +3 -2
  311. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  312. package/.output/server/chunks/routes/api/index.post.mjs +16 -4
  313. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  314. package/.output/server/chunks/routes/api/mcp/workshop.mjs +45 -15
  315. package/.output/server/chunks/routes/api/mcp/workshop.mjs.map +1 -1
  316. package/.output/server/chunks/routes/api/metrics.mjs +4 -1
  317. package/.output/server/chunks/routes/api/metrics.mjs.map +1 -1
  318. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +3 -2
  319. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
  320. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +2 -1
  321. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs.map +1 -1
  322. package/.output/server/chunks/routes/api/plugins/i18n.get.mjs +2 -1
  323. package/.output/server/chunks/routes/api/plugins/i18n.get.mjs.map +1 -1
  324. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +2 -1
  325. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs.map +1 -1
  326. package/.output/server/chunks/routes/api/system/backup/list.get.mjs +48 -0
  327. package/.output/server/chunks/routes/api/system/backup/list.get.mjs.map +1 -0
  328. package/.output/server/chunks/routes/api/system/backup/run.post.mjs +36 -0
  329. package/.output/server/chunks/routes/api/system/backup/run.post.mjs.map +1 -0
  330. package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +3 -2
  331. package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs.map +1 -1
  332. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs +3 -2
  333. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs.map +1 -1
  334. package/.output/server/chunks/routes/api/system/config.get.mjs +2 -1
  335. package/.output/server/chunks/routes/api/system/config.get.mjs.map +1 -1
  336. package/.output/server/chunks/routes/api/system/index.get.mjs +3 -2
  337. package/.output/server/chunks/routes/api/system/index.get.mjs.map +1 -1
  338. package/.output/server/chunks/routes/api/system/index.patch.mjs +17 -5
  339. package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
  340. package/.output/server/chunks/routes/api/system/index.post.mjs +3 -2
  341. package/.output/server/chunks/routes/api/system/index.post.mjs.map +1 -1
  342. package/.output/server/chunks/routes/api/system/index2.get.mjs +3 -2
  343. package/.output/server/chunks/routes/api/system/index2.get.mjs.map +1 -1
  344. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +3 -2
  345. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs.map +1 -1
  346. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +3 -2
  347. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs.map +1 -1
  348. package/.output/server/chunks/routes/api/system/monitor.get.mjs +2 -1
  349. package/.output/server/chunks/routes/api/system/monitor.get.mjs.map +1 -1
  350. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +3 -2
  351. package/.output/server/chunks/routes/api/system/settings/events.get.mjs.map +1 -1
  352. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +17 -4
  353. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs.map +1 -1
  354. package/.output/server/chunks/routes/api/system/timezone.get.mjs +3 -2
  355. package/.output/server/chunks/routes/api/system/timezone.get.mjs.map +1 -1
  356. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +16 -4
  357. package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
  358. package/.output/server/chunks/routes/api/users/_id_.get.mjs +3 -2
  359. package/.output/server/chunks/routes/api/users/_id_.get.mjs.map +1 -1
  360. package/.output/server/chunks/routes/api/users/_id_.put.mjs +16 -4
  361. package/.output/server/chunks/routes/api/users/_id_.put.mjs.map +1 -1
  362. package/.output/server/chunks/routes/api/users/index.get.mjs +3 -2
  363. package/.output/server/chunks/routes/api/users/index.get.mjs.map +1 -1
  364. package/.output/server/chunks/routes/api/users/index.post.mjs +3 -2
  365. package/.output/server/chunks/routes/api/users/index.post.mjs.map +1 -1
  366. package/.output/server/chunks/routes/api/users/login.post.mjs +5 -3
  367. package/.output/server/chunks/routes/api/users/login.post.mjs.map +1 -1
  368. package/.output/server/chunks/routes/api/users/logout.post.mjs +3 -2
  369. package/.output/server/chunks/routes/api/users/logout.post.mjs.map +1 -1
  370. package/.output/server/chunks/routes/api/users/me.get.mjs +3 -2
  371. package/.output/server/chunks/routes/api/users/me.get.mjs.map +1 -1
  372. package/.output/server/chunks/routes/api/users/register.post.mjs +6 -2
  373. package/.output/server/chunks/routes/api/users/register.post.mjs.map +1 -1
  374. package/.output/server/chunks/routes/api/users/setup-status.get.mjs +3 -2
  375. package/.output/server/chunks/routes/api/users/setup-status.get.mjs.map +1 -1
  376. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +3 -2
  377. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs.map +1 -1
  378. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +3 -2
  379. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs.map +1 -1
  380. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +3 -2
  381. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs.map +1 -1
  382. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +2 -1
  383. package/.output/server/chunks/routes/api/workshop/_...path_.mjs.map +1 -1
  384. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +3 -2
  385. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs.map +1 -1
  386. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +21 -16
  387. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs.map +1 -1
  388. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +3 -2
  389. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs.map +1 -1
  390. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +3 -2
  391. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs.map +1 -1
  392. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +3 -2
  393. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs.map +1 -1
  394. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +3 -2
  395. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs.map +1 -1
  396. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs +3 -2
  397. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs.map +1 -1
  398. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs +3 -2
  399. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs.map +1 -1
  400. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +3 -2
  401. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs.map +1 -1
  402. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +3 -2
  403. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
  404. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +3 -2
  405. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs.map +1 -1
  406. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +3 -2
  407. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs.map +1 -1
  408. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +3 -2
  409. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs.map +1 -1
  410. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +2 -1
  411. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs.map +1 -1
  412. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +2 -1
  413. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs.map +1 -1
  414. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +3 -2
  415. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs.map +1 -1
  416. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +3 -2
  417. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs.map +1 -1
  418. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +3 -2
  419. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs.map +1 -1
  420. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +3 -2
  421. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs.map +1 -1
  422. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +3 -2
  423. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs.map +1 -1
  424. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +3 -2
  425. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs.map +1 -1
  426. package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +3 -2
  427. package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs.map +1 -1
  428. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +3 -2
  429. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs.map +1 -1
  430. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +3 -2
  431. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs.map +1 -1
  432. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +3 -2
  433. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs.map +1 -1
  434. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +3 -2
  435. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs.map +1 -1
  436. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +3 -2
  437. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs.map +1 -1
  438. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +2 -1
  439. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs.map +1 -1
  440. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +3 -2
  441. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs.map +1 -1
  442. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +3 -2
  443. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs.map +1 -1
  444. package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs +3 -2
  445. package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs.map +1 -1
  446. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +3 -2
  447. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs.map +1 -1
  448. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +3 -2
  449. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs.map +1 -1
  450. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +3 -2
  451. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs.map +1 -1
  452. package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs +3 -2
  453. package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs.map +1 -1
  454. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +3 -2
  455. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs.map +1 -1
  456. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +3 -2
  457. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs.map +1 -1
  458. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +3 -2
  459. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs.map +1 -1
  460. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +3 -2
  461. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs.map +1 -1
  462. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +3 -2
  463. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs.map +1 -1
  464. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +3 -2
  465. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs.map +1 -1
  466. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +3 -2
  467. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs.map +1 -1
  468. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +3 -2
  469. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs.map +1 -1
  470. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +3 -2
  471. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs.map +1 -1
  472. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs +3 -2
  473. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs.map +1 -1
  474. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs +3 -2
  475. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs.map +1 -1
  476. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs +3 -2
  477. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs.map +1 -1
  478. package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs +3 -2
  479. package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs.map +1 -1
  480. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +3 -2
  481. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs.map +1 -1
  482. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +2 -1
  483. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs.map +1 -1
  484. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +2 -1
  485. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs.map +1 -1
  486. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +3 -2
  487. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs.map +1 -1
  488. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +3 -2
  489. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs.map +1 -1
  490. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +2 -1
  491. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs.map +1 -1
  492. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +3 -2
  493. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs.map +1 -1
  494. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +3 -2
  495. package/.output/server/chunks/routes/api/workshop/audit.get.mjs.map +1 -1
  496. package/.output/server/chunks/routes/api/workshop/caller.mjs +3 -2
  497. package/.output/server/chunks/routes/api/workshop/caller.mjs.map +1 -1
  498. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +10 -4
  499. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs.map +1 -1
  500. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +2 -1
  501. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs.map +1 -1
  502. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +2 -1
  503. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs.map +1 -1
  504. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +3 -2
  505. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs.map +1 -1
  506. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +3 -2
  507. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs.map +1 -1
  508. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +3 -2
  509. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs.map +1 -1
  510. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +2 -1
  511. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs.map +1 -1
  512. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +3 -2
  513. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs.map +1 -1
  514. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +2 -1
  515. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs.map +1 -1
  516. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +3 -2
  517. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs.map +1 -1
  518. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +2 -1
  519. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs.map +1 -1
  520. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +2 -1
  521. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs.map +1 -1
  522. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +2 -1
  523. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs.map +1 -1
  524. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +2 -1
  525. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs.map +1 -1
  526. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +2 -1
  527. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs.map +1 -1
  528. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +2 -1
  529. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs.map +1 -1
  530. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs +3 -2
  531. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs.map +1 -1
  532. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs +3 -2
  533. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs.map +1 -1
  534. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs +2 -1
  535. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs.map +1 -1
  536. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs +2 -1
  537. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs.map +1 -1
  538. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +3 -2
  539. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs.map +1 -1
  540. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +2 -1
  541. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs.map +1 -1
  542. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +3 -2
  543. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs.map +1 -1
  544. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +3 -2
  545. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs.map +1 -1
  546. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +2 -1
  547. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs.map +1 -1
  548. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +3 -2
  549. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs.map +1 -1
  550. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +2 -1
  551. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs.map +1 -1
  552. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +3 -2
  553. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs.map +1 -1
  554. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +3 -2
  555. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs.map +1 -1
  556. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +3 -2
  557. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs.map +1 -1
  558. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +3 -2
  559. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs.map +1 -1
  560. package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs +2 -1
  561. package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs.map +1 -1
  562. package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs +38 -0
  563. package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs.map +1 -0
  564. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs +2 -1
  565. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs.map +1 -1
  566. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs +2 -1
  567. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs.map +1 -1
  568. package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs +2 -1
  569. package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs.map +1 -1
  570. package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs +2 -1
  571. package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs.map +1 -1
  572. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +2 -1
  573. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs.map +1 -1
  574. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +2 -1
  575. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs.map +1 -1
  576. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +3 -2
  577. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs.map +1 -1
  578. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs +3 -2
  579. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs.map +1 -1
  580. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs +3 -2
  581. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs.map +1 -1
  582. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +2 -1
  583. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs.map +1 -1
  584. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +3 -2
  585. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs.map +1 -1
  586. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +3 -2
  587. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs.map +1 -1
  588. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +2 -1
  589. package/.output/server/chunks/routes/api/workshop/channels.get.mjs.map +1 -1
  590. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +6 -5
  591. package/.output/server/chunks/routes/api/workshop/channels.post.mjs.map +1 -1
  592. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +3 -2
  593. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
  594. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +3 -2
  595. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs.map +1 -1
  596. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +3 -2
  597. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -1
  598. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +3 -2
  599. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -1
  600. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +3 -2
  601. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
  602. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +3 -2
  603. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs.map +1 -1
  604. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +3 -2
  605. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs.map +1 -1
  606. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +3 -2
  607. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
  608. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +3 -2
  609. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
  610. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +3 -2
  611. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs.map +1 -1
  612. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +3 -2
  613. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
  614. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +3 -2
  615. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -1
  616. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +3 -2
  617. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs.map +1 -1
  618. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +3 -2
  619. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs.map +1 -1
  620. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +3 -2
  621. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs.map +1 -1
  622. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +3 -2
  623. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs.map +1 -1
  624. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +3 -2
  625. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs.map +1 -1
  626. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +3 -2
  627. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
  628. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +3 -2
  629. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs.map +1 -1
  630. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +3 -2
  631. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs.map +1 -1
  632. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +3 -2
  633. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs.map +1 -1
  634. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +3 -2
  635. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
  636. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +3 -2
  637. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
  638. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +3 -2
  639. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs.map +1 -1
  640. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +3 -2
  641. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs.map +1 -1
  642. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +3 -2
  643. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs.map +1 -1
  644. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +3 -2
  645. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs.map +1 -1
  646. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +3 -2
  647. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
  648. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +3 -2
  649. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
  650. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +3 -2
  651. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
  652. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +3 -2
  653. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs.map +1 -1
  654. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +3 -2
  655. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs.map +1 -1
  656. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +3 -2
  657. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs.map +1 -1
  658. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +3 -2
  659. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs.map +1 -1
  660. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +3 -2
  661. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
  662. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +3 -2
  663. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs.map +1 -1
  664. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +3 -2
  665. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs.map +1 -1
  666. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +3 -2
  667. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs.map +1 -1
  668. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +8 -2
  669. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
  670. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +3 -2
  671. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
  672. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +3 -2
  673. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
  674. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +3 -2
  675. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs.map +1 -1
  676. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +3 -2
  677. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
  678. package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs +36 -0
  679. package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs.map +1 -0
  680. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +3 -2
  681. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs.map +1 -1
  682. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +3 -2
  683. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs.map +1 -1
  684. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +3 -2
  685. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs.map +1 -1
  686. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +3 -2
  687. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs.map +1 -1
  688. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +3 -2
  689. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs.map +1 -1
  690. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +3 -2
  691. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs.map +1 -1
  692. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +3 -2
  693. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs.map +1 -1
  694. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +3 -2
  695. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs.map +1 -1
  696. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +3 -2
  697. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs.map +1 -1
  698. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +3 -2
  699. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs.map +1 -1
  700. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +3 -2
  701. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs.map +1 -1
  702. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +3 -2
  703. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs.map +1 -1
  704. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +5 -4
  705. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs.map +1 -1
  706. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +3 -2
  707. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs.map +1 -1
  708. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +3 -2
  709. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs.map +1 -1
  710. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +3 -2
  711. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs.map +1 -1
  712. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +3 -2
  713. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs.map +1 -1
  714. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +3 -2
  715. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs.map +1 -1
  716. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +3 -2
  717. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
  718. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +3 -2
  719. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs.map +1 -1
  720. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +3 -2
  721. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs.map +1 -1
  722. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +3 -2
  723. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs.map +1 -1
  724. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +3 -2
  725. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs.map +1 -1
  726. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +3 -2
  727. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs.map +1 -1
  728. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +3 -2
  729. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs.map +1 -1
  730. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +3 -2
  731. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs.map +1 -1
  732. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +3 -2
  733. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs.map +1 -1
  734. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +16 -3
  735. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs.map +1 -1
  736. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +3 -2
  737. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs.map +1 -1
  738. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +3 -2
  739. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs.map +1 -1
  740. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +3 -2
  741. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs.map +1 -1
  742. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +3 -2
  743. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs.map +1 -1
  744. package/.output/server/chunks/routes/api/workshop/index.get.mjs +2 -1
  745. package/.output/server/chunks/routes/api/workshop/index.get.mjs.map +1 -1
  746. package/.output/server/chunks/routes/api/workshop/index.post.mjs +3 -2
  747. package/.output/server/chunks/routes/api/workshop/index.post.mjs.map +1 -1
  748. package/.output/server/chunks/routes/api/workshop/index.put.mjs +3 -2
  749. package/.output/server/chunks/routes/api/workshop/index.put.mjs.map +1 -1
  750. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +3 -2
  751. package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
  752. package/.output/server/chunks/routes/api/workshop/index11.get.mjs +2 -1
  753. package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -1
  754. package/.output/server/chunks/routes/api/workshop/index12.get.mjs +2 -1
  755. package/.output/server/chunks/routes/api/workshop/index12.get.mjs.map +1 -1
  756. package/.output/server/chunks/routes/api/workshop/index13.get.mjs +2 -1
  757. package/.output/server/chunks/routes/api/workshop/index13.get.mjs.map +1 -1
  758. package/.output/server/chunks/routes/api/workshop/index14.get.mjs +2 -1
  759. package/.output/server/chunks/routes/api/workshop/index14.get.mjs.map +1 -1
  760. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +3 -2
  761. package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
  762. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +3 -2
  763. package/.output/server/chunks/routes/api/workshop/index2.post.mjs.map +1 -1
  764. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +3 -2
  765. package/.output/server/chunks/routes/api/workshop/index3.get.mjs.map +1 -1
  766. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +3 -2
  767. package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
  768. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +2 -1
  769. package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
  770. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +3 -2
  771. package/.output/server/chunks/routes/api/workshop/index4.post.mjs.map +1 -1
  772. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +3 -2
  773. package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
  774. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +3 -2
  775. package/.output/server/chunks/routes/api/workshop/index5.post.mjs.map +1 -1
  776. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +3 -2
  777. package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
  778. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +3 -2
  779. package/.output/server/chunks/routes/api/workshop/index6.post.mjs.map +1 -1
  780. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +3 -2
  781. package/.output/server/chunks/routes/api/workshop/index7.get.mjs.map +1 -1
  782. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +3 -2
  783. package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
  784. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +3 -2
  785. package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
  786. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +3 -2
  787. package/.output/server/chunks/routes/api/workshop/index8.post.mjs.map +1 -1
  788. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +5 -4
  789. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  790. package/.output/server/chunks/routes/api/workshop/index9.post.mjs +3 -2
  791. package/.output/server/chunks/routes/api/workshop/index9.post.mjs.map +1 -1
  792. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +2 -1
  793. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs.map +1 -1
  794. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +2 -1
  795. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs.map +1 -1
  796. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +2 -1
  797. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs.map +1 -1
  798. package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs +3 -2
  799. package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs.map +1 -1
  800. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +3 -2
  801. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs.map +1 -1
  802. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +3 -2
  803. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs.map +1 -1
  804. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +2 -1
  805. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs.map +1 -1
  806. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +2 -1
  807. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs.map +1 -1
  808. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +3 -2
  809. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs.map +1 -1
  810. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +3 -2
  811. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs.map +1 -1
  812. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +2 -1
  813. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs.map +1 -1
  814. package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs +2 -1
  815. package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs.map +1 -1
  816. package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs +3 -2
  817. package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs.map +1 -1
  818. package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs +2 -1
  819. package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs.map +1 -1
  820. package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs +2 -1
  821. package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs.map +1 -1
  822. package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs +3 -2
  823. package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs.map +1 -1
  824. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +3 -2
  825. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs.map +1 -1
  826. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +3 -2
  827. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs.map +1 -1
  828. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +2 -1
  829. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs.map +1 -1
  830. package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs +2 -1
  831. package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs.map +1 -1
  832. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +3 -2
  833. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs.map +1 -1
  834. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +2 -1
  835. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs.map +1 -1
  836. package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs +2 -1
  837. package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs.map +1 -1
  838. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +3 -2
  839. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs.map +1 -1
  840. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +2 -1
  841. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs.map +1 -1
  842. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +3 -2
  843. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs.map +1 -1
  844. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +2 -1
  845. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs.map +1 -1
  846. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +3 -2
  847. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs.map +1 -1
  848. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +3 -2
  849. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs.map +1 -1
  850. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +3 -2
  851. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs.map +1 -1
  852. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +2 -1
  853. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs.map +1 -1
  854. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +2 -1
  855. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs.map +1 -1
  856. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +2 -1
  857. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs.map +1 -1
  858. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +3 -2
  859. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs.map +1 -1
  860. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +2 -1
  861. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs.map +1 -1
  862. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +6 -2
  863. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs.map +1 -1
  864. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +4 -3
  865. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs.map +1 -1
  866. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +2 -1
  867. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs.map +1 -1
  868. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +2 -1
  869. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs.map +1 -1
  870. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +2 -1
  871. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs.map +1 -1
  872. package/.output/server/chunks/routes/renderer.mjs +2 -2
  873. package/.output/server/chunks/virtual/entry.mjs +420 -99
  874. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  875. package/.output/server/index.mjs +2 -1
  876. package/.output/server/index.mjs.map +1 -1
  877. package/.output/server/package.json +1 -1
  878. package/README-zh.md +7 -3
  879. package/README.md +11 -5
  880. package/app/components/app-header/HitlBell.vue +9 -9
  881. package/app/components/dcw/DcwAddNodeModal.vue +57 -7
  882. package/app/components/dcw/DcwNodesTable.vue +19 -4
  883. package/app/components/dcw/DcwParamApprovalCard.vue +110 -0
  884. package/app/components/dcw/DcwRecipeEditModal.vue +12 -3
  885. package/app/components/workshop/ChatMemberPanel.vue +39 -38
  886. package/app/components/workshop/ChatTimeline.vue +33 -24
  887. package/app/components/workshop/Composer.vue +7 -7
  888. package/app/components/workshop/NotificationCenter.vue +22 -13
  889. package/app/components/workshop/PluginSlot.vue +1 -1
  890. package/app/components/workshop/TaskInspectorDrawer.vue +5 -5
  891. package/app/components/workshop/blocks/ClusterTool.vue +1 -1
  892. package/app/components/workshop/composer/ComposerToolbar.vue +2 -2
  893. package/app/components/workshop/composer/MentionMenu.vue +1 -1
  894. package/app/components/workshop/composer/ReplyChip.vue +2 -2
  895. package/app/components/workshop/composer/StatusChip.vue +7 -7
  896. package/app/components/workshop/console/LineOperationsPanel.vue +15 -14
  897. package/app/components/workshop/lanes/LaneHeader.vue +5 -3
  898. package/app/components/workshop/session-list/ChannelSettingsModal.vue +43 -1
  899. package/app/components/workshop/town/components/TownAgentBindings.vue +10 -1
  900. package/app/composables/useCodeCopy.ts +16 -2
  901. package/app/composables/workshop/useDcwStream.ts +4 -0
  902. package/app/composables/workshop/useWorkshopApi.ts +7 -0
  903. package/app/pages/dcw/[id].vue +19 -1
  904. package/app/pages/dcw/composables/useDcwAddNode.ts +35 -1
  905. package/app/pages/dcw/composables/useDcwParamApprovals.ts +119 -0
  906. package/app/stores/workshop/notifications.ts +43 -17
  907. package/app/utils/dcw-driver-badge.ts +16 -0
  908. package/docs/cli.en.md +1 -1
  909. package/i18n/dicts/_en.json +1551 -1557
  910. package/i18n/dicts/_en2.json +300 -300
  911. package/i18n/dicts/_en4.json +114 -115
  912. package/i18n/dicts/agentLanesView.json +61 -57
  913. package/i18n/dicts/appHeader.json +17 -7
  914. package/i18n/dicts/channelSessionList.json +51 -48
  915. package/i18n/dicts/chat.json +79 -0
  916. package/i18n/dicts/clusterTool.json +4 -3
  917. package/i18n/dicts/composer.json +38 -38
  918. package/i18n/dicts/dcwDetail.json +219 -209
  919. package/i18n/dicts/lineOps.json +14 -0
  920. package/i18n/dicts/multiChannelView.json +13 -13
  921. package/i18n/dicts/notifications.json +13 -0
  922. package/i18n/dicts/taskInspectorDrawer.json +25 -19
  923. package/i18n/locales/en.ts +166 -8
  924. package/i18n/locales/zh-CN.ts +166 -8
  925. package/package.json +1 -1
  926. package/public/robots.txt +3 -0
  927. package/scripts/_dbg-protocol-matrix.mjs +8 -1
  928. package/server/api/mcp/workshop.ts +8 -1
  929. package/server/api/metrics.ts +4 -1
  930. package/server/api/plugins/[name]/[...path].ts +4 -3
  931. package/server/api/system/backup/list.get.ts +32 -0
  932. package/server/api/system/backup/run.post.ts +21 -0
  933. package/server/api/system/settings/index.patch.ts +12 -2
  934. package/server/api/system/settings/reset.post.ts +11 -2
  935. package/server/api/users/[id].delete.ts +9 -2
  936. package/server/api/users/[id].put.ts +9 -2
  937. package/server/api/users/index.post.ts +9 -2
  938. package/server/api/users/login.post.ts +3 -3
  939. package/server/api/users/register.post.ts +11 -1
  940. package/server/api/workshop/a2a/[agentId]/rpc/index.post.ts +23 -13
  941. package/server/api/workshop/channel-templates/[id]/instantiate.post.ts +6 -0
  942. package/server/api/workshop/channels/[id]/line.put.ts +30 -0
  943. package/server/api/workshop/dcw/line/query.get.ts +6 -0
  944. package/server/api/workshop/dcw/mes-test-read.post.ts +24 -0
  945. package/server/api/workshop/dcw/recipes/[id]/revert.post.ts +3 -2
  946. package/server/api/workshop/fs/dirs.get.ts +19 -1
  947. package/server/api/workshop/ops-logs/index.get.ts +3 -2
  948. package/server/api/workshop/users/register.post.ts +7 -0
  949. package/server/mcp/workshop-server.ts +36 -13
  950. package/server/middleware/00-security-headers.ts +38 -0
  951. package/server/middleware/01-rate-guard.ts +101 -0
  952. package/server/plugins/backup.ts +56 -1
  953. package/server/plugins/workshop.ts +4 -0
  954. package/server/plugins-builtin/diag-bridge/host/plugin.mjs +18 -11
  955. package/server/repositories/user.repository.ts +10 -5
  956. package/server/services/user.service.ts +24 -1
  957. package/server/services/workshop/agents/host-tool-bridge/dispatch.ts +1 -1
  958. package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +7 -1
  959. package/server/services/workshop/agents/industrial/index.ts +3 -1
  960. package/server/services/workshop/agents/industrial/mes-tools.ts +135 -0
  961. package/server/services/workshop/agents/industrial/ops-tools.ts +243 -30
  962. package/server/services/workshop/agents/industrial-context.ts +19 -0
  963. package/server/services/workshop/agents/tool-classes.ts +12 -0
  964. package/server/services/workshop/aml/dataset-builder.ts +4 -2
  965. package/server/services/workshop/aml/job-orchestrator/process.ts +1 -0
  966. package/server/services/workshop/aml/job-orchestrator/shared.ts +2 -0
  967. package/server/services/workshop/aml/job-orchestrator/start-job.ts +5 -2
  968. package/server/services/workshop/db/channel.repo.ts +11 -1
  969. package/server/services/workshop/db/database/migrations.ts +2 -0
  970. package/server/services/workshop/db/database/rows.ts +2 -0
  971. package/server/services/workshop/db/database/schema.ts +32 -0
  972. package/server/services/workshop/db/database/seed.ts +19 -9
  973. package/server/services/workshop/db/schema.sql +32 -0
  974. package/server/services/workshop/dcw/dcw-controller/recipes.ts +66 -7
  975. package/server/services/workshop/dcw/dcw-controller/write.ts +35 -6
  976. package/server/services/workshop/dcw/dcw-recipe.repo.ts +12 -5
  977. package/server/services/workshop/dcw/drivers/mes-rest.ts +543 -0
  978. package/server/services/workshop/dcw/drivers/registry.ts +2 -0
  979. package/server/services/workshop/dcw/drivers/shared.ts +30 -0
  980. package/server/services/workshop/dcw/param-map.repo.ts +3 -0
  981. package/server/services/workshop/mes/mes-controller.ts +410 -0
  982. package/server/services/workshop/mes/mes-datasets.ts +441 -0
  983. package/server/services/workshop/plugins/host/init.mjs +9 -1
  984. package/server/services/workshop/plugins/host/load.mjs +2 -2
  985. package/server/services/workshop/runtime/manager/admin-channel.ts +27 -1
  986. package/server/services/workshop/runtime/manager/channel-templates.ts +5 -4
  987. package/server/services/workshop/runtime/manager/runtime-wiring.ts +17 -1
  988. package/server/services/workshop/runtime/manager/state.ts +11 -0
  989. package/server/services/workshop/runtime/scheduler-loop/tick.ts +5 -1
  990. package/server/services/workshop/runtime/task-engine/helpers.ts +3 -1
  991. package/shared/config/schema.json +4 -1
  992. package/shared/daq-protocol.ts +2 -1
  993. package/shared/dcw-protocol/catalog.ts +25 -1
  994. package/.output/public/_nuxt/4wrEQ3np2.js +0 -21
  995. package/.output/public/_nuxt/B9BmiUil.js +0 -2
  996. package/.output/public/_nuxt/BgEDwFMf.js +0 -1
  997. package/.output/public/_nuxt/C4lagVdN2.js +0 -1
  998. package/.output/public/_nuxt/CGQvF-Gg.js +0 -14
  999. package/.output/public/_nuxt/Cbeifv55.js +0 -1
  1000. package/.output/public/_nuxt/CcGuXiOa.js +0 -1
  1001. package/.output/public/_nuxt/D0SNhlnt.js +0 -1
  1002. package/.output/public/_nuxt/D6lZftfy.js +0 -1
  1003. package/.output/public/_nuxt/DnH9SRMW2.js +0 -1
  1004. package/.output/public/_nuxt/DxagrjB8.js +0 -1
  1005. package/.output/public/_nuxt/ON2x-t6n.js +0 -1
  1006. package/.output/public/_nuxt/PluginSlot.DmjNbrcX.css +0 -1
  1007. package/.output/public/_nuxt/UN3nSFjj2.js +0 -1
  1008. package/.output/public/_nuxt/Z-Z6EhXs.js +0 -1
  1009. package/.output/public/_nuxt/_id_.DamiFT0Q.css +0 -1
  1010. package/.output/public/_nuxt/_wsId_.DkrQkT6r.css +0 -1
  1011. package/.output/public/_nuxt/builds/meta/c64014ca-3595-4b7a-a5ca-055687c83ba2.json +0 -1
  1012. package/.output/public/_nuxt/qPsch_ny2.js +0 -1
  1013. package/.output/server/chunks/build/TownView-fP9BiALv.mjs.map +0 -1
  1014. package/.output/server/chunks/build/_id_-BUpQSlzo.mjs.map +0 -1
  1015. package/.output/server/chunks/build/_id_-CDlur81q.mjs.map +0 -1
  1016. package/.output/server/chunks/build/agents-ydYu-Ol9.mjs.map +0 -1
  1017. package/.output/server/chunks/build/aml-DsgtDLWF.mjs.map +0 -1
  1018. package/.output/server/chunks/build/api-BY6ji7RC.mjs.map +0 -1
  1019. package/.output/server/chunks/build/apiClient-D281qrK2.mjs.map +0 -1
  1020. package/.output/server/chunks/build/channel-templates-DP1ndA5K.mjs.map +0 -1
  1021. package/.output/server/chunks/build/daq-N69AOtgw.mjs.map +0 -1
  1022. package/.output/server/chunks/build/dcw-CN9d3Rs7.mjs.map +0 -1
  1023. package/.output/server/chunks/build/logs-BcAjU1Ps.mjs.map +0 -1
  1024. package/.output/server/chunks/build/operations-OFHYXwh4.mjs.map +0 -1
  1025. package/.output/server/chunks/build/pages-BzmrmLL_.mjs.map +0 -1
  1026. package/.output/server/chunks/build/plugins-DSka7-vS.mjs.map +0 -1
  1027. package/.output/server/chunks/build/settings-UyZ78w2e.mjs.map +0 -1
  1028. package/.output/server/chunks/build/teams-D-Y5mzU7.mjs.map +0 -1
  1029. package/.output/server/chunks/build/town-BMlctE4m.mjs.map +0 -1
  1030. package/.output/server/chunks/build/useAgentHarnessOptions-CRyQYYY0.mjs.map +0 -1
  1031. package/.output/server/chunks/build/useAgentTemplateActions-CaRsOBmB.mjs.map +0 -1
  1032. package/.output/server/chunks/build/useAgentTemplateForm-ChiIuPYr.mjs.map +0 -1
  1033. package/.output/server/chunks/build/useAgentTemplatesCatalog-Bf5hk6Jf.mjs.map +0 -1
  1034. package/.output/server/chunks/build/useAmlDatasets-BM0lZu40.mjs.map +0 -1
  1035. package/.output/server/chunks/build/useAmlEntities-BDQ8TmLL.mjs.map +0 -1
  1036. package/.output/server/chunks/build/useAmlEnv-DgTVwpqi.mjs.map +0 -1
  1037. package/.output/server/chunks/build/useAmlExperiments-BtyW32PO.mjs.map +0 -1
  1038. package/.output/server/chunks/build/useAmlJobs-fk-H5Rp5.mjs.map +0 -1
  1039. package/.output/server/chunks/build/useAmlModels-hgyVHoAq.mjs.map +0 -1
  1040. package/.output/server/chunks/build/useAmlNotes-BjbYNADm.mjs.map +0 -1
  1041. package/.output/server/chunks/build/useAmlPredict-U24-SZNA.mjs.map +0 -1
  1042. package/.output/server/chunks/build/useDaqAddNode-kW7uTSMQ.mjs.map +0 -1
  1043. package/.output/server/chunks/build/useDaqDetailBinding-cpBz4hSL.mjs.map +0 -1
  1044. package/.output/server/chunks/build/useDaqDetailFrames-BZGtKKXW.mjs.map +0 -1
  1045. package/.output/server/chunks/build/useDaqDetailHistory-DtSTfyMi.mjs.map +0 -1
  1046. package/.output/server/chunks/build/useDaqDetailNode-D_vhG0jF.mjs.map +0 -1
  1047. package/.output/server/chunks/build/useDaqDetailParams-JfqHvTxr.mjs.map +0 -1
  1048. package/.output/server/chunks/build/useDaqFilters-BUQtZ82a.mjs.map +0 -1
  1049. package/.output/server/chunks/build/useDaqOptimizations-Ct-TSXxy.mjs.map +0 -1
  1050. package/.output/server/chunks/build/useDaqTemplates-BqQRdrIm.mjs.map +0 -1
  1051. package/.output/server/chunks/build/useDashboardData-CNOY4Bi3.mjs.map +0 -1
  1052. package/.output/server/chunks/build/useDcwAddNode-C1HDP3yG.mjs.map +0 -1
  1053. package/.output/server/chunks/build/useDcwCards-ETEsHvVy.mjs.map +0 -1
  1054. package/.output/server/chunks/build/useDcwDetailScope-QTr1G6Oe.mjs.map +0 -1
  1055. package/.output/server/chunks/build/useDcwDetailTemplates-Djt-0Vse.mjs.map +0 -1
  1056. package/.output/server/chunks/build/useDcwFilter-FfVlDdyS.mjs.map +0 -1
  1057. package/.output/server/chunks/build/useDcwLedger-BLoMmcu1.mjs.map +0 -1
  1058. package/.output/server/chunks/build/useDcwLineMutations-BMC5BTWU.mjs.map +0 -1
  1059. package/.output/server/chunks/build/useDcwLineRun-74gN_s6T.mjs.map +0 -1
  1060. package/.output/server/chunks/build/useDcwProducts-D-zrMaeV.mjs.map +0 -1
  1061. package/.output/server/chunks/build/useDcwQuery-7tX4QYmv.mjs.map +0 -1
  1062. package/.output/server/chunks/build/useDcwQuickActions-C-tgcXIr.mjs.map +0 -1
  1063. package/.output/server/chunks/build/useDcwRecipes-FVk5gDLV.mjs.map +0 -1
  1064. package/.output/server/chunks/build/useDcwTemplates-LDZffy4u.mjs.map +0 -1
  1065. package/.output/server/chunks/build/useDcwWrites-B22mwliK.mjs.map +0 -1
  1066. package/.output/server/chunks/build/useLogsManual-COfCyUtj.mjs.map +0 -1
  1067. package/.output/server/chunks/build/useLogsQuery-CRAm2hmS.mjs.map +0 -1
  1068. package/.output/server/chunks/build/useLogsScope-ClNijVj4.mjs.map +0 -1
  1069. package/.output/server/chunks/build/useOperationsFeed-CeXeHqUK.mjs.map +0 -1
  1070. package/.output/server/chunks/build/useTeamActions-C51ciLb0.mjs.map +0 -1
  1071. package/.output/server/chunks/build/useTeamAddMemberDialog-DthpCMP8.mjs.map +0 -1
  1072. package/.output/server/chunks/build/useTeamCreateDialog-Dc2KTwyg.mjs.map +0 -1
  1073. package/.output/server/chunks/build/useTeamDeployDialog-CXpvPnJD.mjs.map +0 -1
  1074. package/.output/server/chunks/build/useTeamPluginDialog-DTs-7SSm.mjs.map +0 -1
  1075. package/.output/server/chunks/build/useTeamsCatalog-CcpetYyW.mjs.map +0 -1
  1076. package/.output/server/chunks/build/useWorkbenchWorkspaces-DgiSCzsX.mjs.map +0 -1
  1077. package/.output/server/chunks/build/useWorkshopApi-CO3ophqt.mjs.map +0 -1
  1078. package/.output/server/chunks/build/useWorkshopWs-Bm80bLn7.mjs.map +0 -1
  1079. package/.output/server/chunks/build/useWorkspaceChannels-D61Al2dr.mjs.map +0 -1
  1080. package/.output/server/chunks/build/workshop-FQ4YzooB.mjs.map +0 -1
  1081. package/scripts/.chk-tok +0 -1
  1082. package/scripts/.retrain-body.json +0 -1
  1083. package/scripts/.retrain3-body.json +0 -1
  1084. package/scripts/.rt-tok +0 -1
  1085. package/scripts/.rt3-tok +0 -1
  1086. /package/.output/public/_nuxt/{BvRk9kiK2.js → DybRo6-H.js} +0 -0
@@ -11,16 +11,33 @@ import { getDcwLineRepo } from '../../dcw/dcw-line.repo'
11
11
  import { getDcwProductRepo } from '../../dcw/dcw-product.repo'
12
12
  import { getDcwRecipeRepo } from '../../dcw/dcw-recipe.repo'
13
13
  import { getOps } from '../../ops/ops'
14
+ import { settingOf } from '../../settings'
14
15
  import { fanoutQuery, windowOf } from './audit-query'
15
16
 
16
17
  // ================================================================
17
18
  // 运维日志 / Recipe 变更史查询(Agent 自查面:负责产线 scoped)
18
19
  // ================================================================
19
20
 
20
- /** Agent 负责范围 = 绑定节点的全集(节点 id 集 + 这些节点所属产线集);无绑定 = 无范围 */
21
- export function agentOpsScope(agentId: string): { lineIds: string[], nodeIds: Set<string> } | null {
21
+ /** v18:频道绑定产线(只读扩权)——经全局 manager 读;manager 未装配/未绑定 = null */
22
+ function channelBoundLineId(agentId: string): string | null {
23
+ try {
24
+ const g = globalThis as typeof globalThis & {
25
+ __workshopManager?: { channelLineBindingOf(id: string): string | null }
26
+ }
27
+ return g.__workshopManager?.channelLineBindingOf(agentId) ?? null
28
+ }
29
+ catch {
30
+ return null
31
+ }
32
+ }
33
+
34
+ /** Agent 负责范围 = 绑定节点的全集(节点 id 集 + 这些节点所属产线集;写权限依据)
35
+ * ∪ 频道绑定产线(boundLineIds;v18 只读扩权:日志/配方史/上下文可读,写仍走节点授权)。 */
36
+ export function agentOpsScope(agentId: string): { lineIds: string[], nodeIds: Set<string>, boundLineIds: string[] } | null {
22
37
  const bindings = getAgentNodeBindingRepo().byAgent(agentId)
23
- if (bindings.length === 0) return null
38
+ const boundLine = channelBoundLineId(agentId)
39
+ const boundLineIds = boundLine ? [boundLine] : []
40
+ if (bindings.length === 0 && boundLineIds.length === 0) return null
24
41
  const lineIds = new Set<string>()
25
42
  const nodeIds = new Set<string>()
26
43
  for (const b of bindings) {
@@ -31,7 +48,17 @@ export function agentOpsScope(agentId: string): { lineIds: string[], nodeIds: Se
31
48
  }
32
49
  catch { /* 节点刚被删等情况忽略 */ }
33
50
  }
34
- return { lineIds: [...lineIds], nodeIds }
51
+ return { lineIds: [...lineIds], nodeIds, boundLineIds }
52
+ }
53
+
54
+ /** 读工具的可见产线全集 = 节点授权线 ∪ 频道绑定线(去重) */
55
+ function readableLineIds(scope: { lineIds: string[], boundLineIds: string[] }): string[] {
56
+ return [...new Set([...scope.lineIds, ...scope.boundLineIds])]
57
+ }
58
+
59
+ /** 产线展示标注:仅频道绑定(非节点授权)的线标注只读来源 */
60
+ function lineTag(lid: string, scope: { lineIds: string[], boundLineIds: string[] }): string {
61
+ return scope.lineIds.includes(lid) ? '' : '(频道绑定,只读)'
35
62
  }
36
63
 
37
64
  /** 配方参数的节点失效态(数据一致性展示/Agent 提示共用):null=正常 */
@@ -63,19 +90,20 @@ export async function toolOpsLog(agentId: string, args: {
63
90
  const audit = getOps()?.audit
64
91
  if (!audit) return { text: '审计仓储未装配(服务未就绪),请稍后重试。', isError: true }
65
92
  const scope = agentOpsScope(agentId)
66
- if (!scope) return { text: '你尚未绑定任何工业节点,无日志可查(日志权限跟随节点绑定)。', isError: true }
93
+ if (!scope) return { text: '你尚未绑定任何工业节点,所在频道也未绑定产线,无日志可查(日志权限跟随节点绑定或频道绑线)。', isError: true }
67
94
  const nodeId = String(args.node_id ?? '').trim()
68
95
  const lineId = String(args.line_id ?? '').trim()
96
+ const readable = readableLineIds(scope)
69
97
  if (nodeId && !scope.nodeIds.has(nodeId))
70
98
  return { text: `无权查询节点 ${nodeId} 的日志(仅可查自己绑定的节点;用 my_industrial_nodes 查看绑定)。`, isError: true }
71
- if (lineId && !scope.lineIds.includes(lineId))
72
- return { text: `无权查询产线 ${lineId} 的日志(你的负责产线:${scope.lineIds.join(', ') || '(绑定节点均未分配产线)'})。`, isError: true }
99
+ if (lineId && !readable.includes(lineId))
100
+ return { text: `无权查询产线 ${lineId} 的日志(你的可读产线:${readable.join(', ') || '(无)'})。`, isError: true }
73
101
  const kind = String(args.kind ?? '').trim() || undefined
74
102
  const actorKind = String(args.actor_kind ?? '').trim() || undefined
75
103
  const mine = args.mine === true || args.mine === 'true'
76
104
  const { minutes, limit, from } = windowOf(args)
77
105
 
78
- const lines = lineId ? [lineId] : scope.lineIds
106
+ const lines = lineId ? [lineId] : readable
79
107
  let rows = fanoutQuery(audit, lines, lid => ({ lineId: lid, kind, actorKind, actor: mine ? agentId : undefined, from, limit }))
80
108
  if (nodeId) rows = rows.filter(r => r.targetId === nodeId)
81
109
  rows.sort((a, b) => String(b.at).localeCompare(String(a.at)))
@@ -86,7 +114,7 @@ export async function toolOpsLog(agentId: string, args: {
86
114
  const src = OPS_ACTOR_LABEL[String(r.actorKind)] ?? String(r.actorKind)
87
115
  return `- [${fmtAuditAt(String(r.at))}] 来源=${src} 操作者=${String(r.actorName) || String(r.actor)} | ${String(r.action)} | ${String(r.summary)}`
88
116
  })
89
- const scopeNote = lineId ? `产线 ${lineId}` : `负责产线 ${scope.lineIds.length} 条`
117
+ const scopeNote = lineId ? `产线 ${lineId}` : `可读产线 ${readable.length} 条`
90
118
  return {
91
119
  text: `运维日志(${scopeNote},近 ${minutes} 分钟,${rows.length} 条,新→旧):\n${body.join('\n')}\n\n说明:来源=Agent 的操作者格式为「Channel名/成员名」;需要节点级参数值变更史用 dcw_journal,配方下发/回退专门视图用 recipe_log。`,
92
120
  }
@@ -103,14 +131,15 @@ export async function toolRecipeLog(agentId: string, args: {
103
131
  const audit = getOps()?.audit
104
132
  if (!audit) return { text: '审计仓储未装配(服务未就绪),请稍后重试。', isError: true }
105
133
  const scope = agentOpsScope(agentId)
106
- if (!scope) return { text: '你尚未绑定任何工业节点,无 Recipe 历史可查(权限跟随节点绑定)。', isError: true }
134
+ if (!scope) return { text: '你尚未绑定任何工业节点,所在频道也未绑定产线,无 Recipe 历史可查(权限跟随节点绑定或频道绑线)。', isError: true }
107
135
  const lineId = String(args.line_id ?? '').trim()
108
- if (lineId && !scope.lineIds.includes(lineId))
109
- return { text: `无权查询产线 ${lineId} 的 Recipe 历史(你的负责产线:${scope.lineIds.join(', ') || '(无)'})。`, isError: true }
136
+ const readable = readableLineIds(scope)
137
+ if (lineId && !readable.includes(lineId))
138
+ return { text: `无权查询产线 ${lineId} 的 Recipe 历史(你的可读产线:${readable.join(', ') || '(无)'})。`, isError: true }
110
139
  const recipeId = String(args.recipe_id ?? '').trim() || undefined
111
140
  const { minutes, limit, from } = windowOf(args)
112
141
 
113
- const lines = lineId ? [lineId] : scope.lineIds
142
+ const lines = lineId ? [lineId] : readable
114
143
  const rows = fanoutQuery(audit, lines, lid => [
115
144
  { lineId: lid, kind: 'recipe', recipeId, from, limit },
116
145
  { lineId: lid, kind: 'rollback', recipeId, from, limit },
@@ -131,9 +160,8 @@ export async function toolRecipeLog(agentId: string, args: {
131
160
  : action
132
161
  return `- [${fmtAuditAt(String(r.at))}] ${tag} 来源=${src} 操作者=${String(r.actorName) || String(r.actor)} | ${String(r.summary)}${r.recipeId ? `(配方 ${String(r.recipeId).slice(0, 8)})` : ''}`
133
162
  })
134
- return {
135
- text: `Recipe 变更史(${lineId ? `产线 ${lineId}` : `负责产线 ${scope.lineIds.length} 条`},近 ${minutes} 分钟,${rows.length} 条,新→旧):\n${body.join('\n')}\n\n说明:配方下发=整批参数写命令;优化开窗=单次设定变更(含 Agent 假设);回退执行=已恢复基线值。节点级参数值逐笔历史用 dcw_journal(node_id)。`,
136
- }
163
+ const text = `Recipe 变更史(${lineId ? `产线 ${lineId}` : `可读产线 ${readable.length} 条`},近 ${minutes} 分钟,${rows.length} 条,新→旧):\n${body.join('\n')}\n\n说明:配方下发=整批参数写命令;优化开窗=单次设定变更(含 Agent 假设);回退执行=已恢复基线值。节点级参数值逐笔历史用 dcw_journal(node_id)。`
164
+ return { text }
137
165
  }
138
166
 
139
167
  // ================================================================
@@ -145,11 +173,12 @@ export async function toolRecipeLog(agentId: string, args: {
145
173
  * 配方目标 vs PLC 当前值对照、lastGood 批次。 */
146
174
  export async function toolLineContext(agentId: string, args: { line_id?: string } = {}): Promise<{ text: string, isError?: boolean }> {
147
175
  const scope = agentOpsScope(agentId)
148
- if (!scope) return { text: '你尚未绑定任何工业节点,暂无产线上下文(请先在数字孪生界面绑定节点)。' }
176
+ if (!scope) return { text: '你尚未绑定任何工业节点,所在频道也未绑定产线,暂无产线上下文(可在频道设置绑定产线获得只读上下文,或在数字孪生界面绑定节点)。' }
149
177
  const wanted = String(args.line_id ?? '').trim()
150
- const lineIds = wanted ? [wanted] : scope.lineIds
151
- if (wanted && !scope.lineIds.includes(wanted)) {
152
- return { text: `产线 ${wanted} 不在你的负责范围(你绑定节点覆盖的产线:${scope.lineIds.join(', ') || '无'})。`, isError: true }
178
+ const readable = readableLineIds(scope)
179
+ const lineIds = wanted ? [wanted] : readable
180
+ if (wanted && !readable.includes(wanted)) {
181
+ return { text: `产线 ${wanted} 不在你的可读范围(节点授权与频道绑定覆盖:${readable.join(', ') || '无'})。`, isError: true }
153
182
  }
154
183
  if (lineIds.length === 0) return { text: '你绑定的节点均未分配产线(未挂线的节点没有产线/产品/配方上下文)。' }
155
184
 
@@ -159,7 +188,7 @@ export async function toolLineContext(agentId: string, args: { line_id?: string
159
188
  const run = getActiveLineRun(lid)
160
189
  const recipe = run?.recipeId ? getDcwController().listRecipes().find(r => r.id === run.recipeId) : undefined
161
190
  const parts: string[] = []
162
- parts.push(`■ 产线 ${line?.name ?? lid}(${lid})· 状态:${run ? '运行中' : '待机/停线'}`)
191
+ parts.push(`■ 产线 ${line?.name ?? lid}(${lid})${lineTag(lid, scope)} · 状态:${run ? '运行中' : '待机/停线'}`)
163
192
  if (run) {
164
193
  parts.push(` 活动批次 ${run.runId.slice(0, 8)} · 产品「${run.productName}」(${run.productId}) · 开跑 ${run.startedAt.slice(11, 19)} · 已打标 ${run.taggedSamples} 样本`)
165
194
  }
@@ -210,7 +239,7 @@ export async function toolLineContext(agentId: string, args: { line_id?: string
210
239
  sections.push(parts.join('\n'))
211
240
  }
212
241
  return {
213
- text: `你控制的产线全景(${sections.length} 条):\n\n${sections.join('\n\n')}\n\n说明:配方目标=开跑批次冻结的工艺窗口;PLC 当前值=实时读数。把验证过的最佳参数固化到配方用 recipe_update;回退配方到稳定版本用 recipe_rollback;逐节点参数变更史用 dcw_journal;配方版本史用 recipe_versions。`,
242
+ text: `你控制的产线全景(${sections.length} 条):\n\n${sections.join('\n\n')}\n\n说明:配方目标=开跑批次冻结的工艺窗口;PLC 当前值=实时读数;(频道绑定,只读)= 该线来自频道绑定的只读授权,可看日志/配方/状态,参数下发仍需节点授权。把验证过的最佳参数固化到配方用 recipe_update;回退配方到稳定版本用 recipe_rollback;逐节点参数变更史用 dcw_journal;配方版本史用 recipe_versions。`,
214
243
  }
215
244
  }
216
245
 
@@ -221,9 +250,11 @@ export async function toolRecipeVersions(agentId: string, args: { recipe_id?: st
221
250
  if (!recipeId) return { text: 'recipe_id 必填(line_context 可看到当前配方的 id)。', isError: true }
222
251
  const recipe = getDcwController().listRecipes().find(r => r.id === recipeId)
223
252
  if (!recipe) return { text: `配方 ${recipeId} 不存在。`, isError: true }
253
+ // 只读面:节点授权线 ∪ 频道绑定线均可看版本史(回退走 toolRecipeRollback 的写门)
224
254
  const scope = agentOpsScope(agentId)
225
- if (!scope || !recipe.lineId || !scope.lineIds.includes(recipe.lineId)) {
226
- return { text: `无权查看配方 ${recipeId} 的版本史(该配方不在你负责的产线上)。`, isError: true }
255
+ const readable = scope ? readableLineIds(scope) : []
256
+ if (!recipe.lineId || !readable.includes(recipe.lineId)) {
257
+ return { text: `无权查看配方 ${recipeId} 的版本史(该配方不在你可读的产线上)。`, isError: true }
227
258
  }
228
259
  const rows = getDcwController().recipeVersions(recipeId)
229
260
  const limit = Math.min(Number(args.limit) || 20, 50)
@@ -294,12 +325,18 @@ export async function toolRecipeUpdate(agentId: string, args: {
294
325
  })
295
326
  .map((p) => {
296
327
  const patch = list.find(x => String(x.node_id).trim() === p.nodeId)
297
- if (!patch) return { nodeId: p.nodeId, templateRef: p.templateRef, value: p.value, min: p.min, max: p.max }
298
- const out: { nodeId: string, templateRef?: string, value: number, min?: number, max?: number } = { nodeId: p.nodeId, templateRef: p.templateRef, value: Number(patch.value) }
328
+ // stepLimit 必须随行携带:丢了会被 normParams 视为"参数有变化"(同值也空转增版),
329
+ // 且配方层单步限幅被静默抹掉(退化为参数/节点层默认)——治理数据完整性
330
+ const out: { nodeId: string, templateRef?: string, value: number, min?: number, max?: number, stepLimit?: number } = {
331
+ nodeId: p.nodeId,
332
+ templateRef: p.templateRef,
333
+ value: patch ? Number(patch.value) : p.value,
334
+ }
299
335
  if (p.min != null) out.min = p.min
300
- if (patch.min != null && Number.isFinite(Number(patch.min))) out.min = Number(patch.min)
336
+ if (patch?.min != null && Number.isFinite(Number(patch.min))) out.min = Number(patch.min)
301
337
  if (p.max != null) out.max = p.max
302
- if (patch.max != null && Number.isFinite(Number(patch.max))) out.max = Number(patch.max)
338
+ if (patch?.max != null && Number.isFinite(Number(patch.max))) out.max = Number(patch.max)
339
+ if (p.stepLimit != null) out.stepLimit = p.stepLimit
303
340
  return out
304
341
  })
305
342
  const extra = list.filter(p => !recipe.params.some(x => x.nodeId === String(p.node_id).trim()))
@@ -327,16 +364,19 @@ export async function toolRecipeUpdate(agentId: string, args: {
327
364
  }
328
365
 
329
366
  /** 工具:recipe_rollback —— 回退配方参数到稳定版本(指定历史版本或已知良好批次快照)。
330
- * 生成新版本(非破坏,历史保留);不改运行中 PLC 当前值。 */
367
+ * 生成新版本(非破坏,历史保留);不改运行中 PLC 当前值。
368
+ * v19 dispatch=true = **统一回退**:定义回退 + 该版本参数整批重下发到 PLC(批次级恢复)。 */
331
369
  export async function toolRecipeRollback(agentId: string, args: {
332
370
  recipe_id?: string
333
371
  version?: number | string
334
372
  to_last_good?: boolean | string
373
+ dispatch?: boolean | string
335
374
  reason?: string
336
375
  }): Promise<{ text: string, isError?: boolean }> {
337
376
  const recipeId = String(args.recipe_id ?? '').trim()
338
377
  const reason = String(args.reason ?? '').trim()
339
378
  const toLastGood = args.to_last_good === true || args.to_last_good === 'true'
379
+ const dispatch = args.dispatch === true || args.dispatch === 'true'
340
380
  const version = Number(args.version)
341
381
  if (!recipeId) return { text: 'recipe_id 必填。', isError: true }
342
382
  if (!reason) return { text: 'reason 必填:回退必须说明原因(如优化翻车/越限),便于版本史追溯。', isError: true }
@@ -351,6 +391,23 @@ export async function toolRecipeRollback(agentId: string, args: {
351
391
  return { text: `不能回退到 v${version}(当前已是 v${recipe.version ?? 1};回退目标是更早的版本)。`, isError: true }
352
392
  }
353
393
  try {
394
+ if (dispatch) {
395
+ const { recipe: updated, run, definitionNoop } = await getDcwController().rollbackRecipeAndDispatch(recipeId, {
396
+ version: toLastGood ? undefined : version,
397
+ toLastGood,
398
+ by: 'agent',
399
+ actorName: agentBadgeLabel(agentId),
400
+ actor: agentId,
401
+ description: reason,
402
+ })
403
+ const okN = run.results.filter(r => r.ok).length
404
+ const defNote = definitionNoop
405
+ ? `定义已在目标版本 v${updated.version ?? 1}(未生成新版本)`
406
+ : `已生成 v${updated.version ?? 1}`
407
+ return {
408
+ text: `统一回退完成:配方「${updated.name}」${defNote},参数恢复为目标版本(${toLastGood ? '已知良好批次冻结' : `v${version}`}),并已整批重下发到 PLC(${okN}/${run.results.length} 参数成功);原因:${reason}。\n用 daq_query 复测确认恢复效果;版本史用 recipe_versions 复核。`,
409
+ }
410
+ }
354
411
  const updated = getDcwController().revertRecipe(recipeId, {
355
412
  version: toLastGood ? undefined : version,
356
413
  toLastGood,
@@ -361,10 +418,166 @@ export async function toolRecipeRollback(agentId: string, args: {
361
418
  description: reason,
362
419
  })
363
420
  return {
364
- text: `回退完成:配方「${updated.name}」已生成 v${updated.version ?? 1},参数恢复为目标版本(${toLastGood ? '已知良好批次冻结' : `v${version}`});原因:${reason}。\n运行中批次不受影响(仍按开跑冻结参数);新参数下次开跑生效。版本史用 recipe_versions 复核。`,
421
+ text: `回退完成:配方「${updated.name}」已生成 v${updated.version ?? 1},参数恢复为目标版本(${toLastGood ? '已知良好批次冻结' : `v${version}`});原因:${reason}。\n注意:仅回退了配方定义,运行中 PLC 未变动;要把恢复参数写入产线(统一回退),用 recipe_rollback 并带 dispatch=true。版本史用 recipe_versions 复核。`,
365
422
  }
366
423
  }
367
424
  catch (err) {
368
425
  return { text: `回退失败:${err instanceof Error ? err.message : String(err)}`, isError: true }
369
426
  }
370
427
  }
428
+
429
+ /**
430
+ * v19.5 HITL 下发裁决门:security.recipeDispatchApproval 开启时,配方下发动作
431
+ * 不直接执行 —— 挂起等待人工裁决(复用 ToolApprovalService,人类批/拒理由原样回流):
432
+ * 批准 → 按原逻辑执行下发,回执附人工附言;
433
+ * 拒绝(可附指导)→ 工具回包携带人工指导文本,Agent 按指导修订候选后重新提交 ——
434
+ * 即"改好配方交给人类判断是否下发;不下发则人告诉 Agent 怎么修"的真实作业语义。
435
+ * 超时(默认 180s,security.hitl_timeout_ms)自动按拒绝收敛。
436
+ */
437
+ async function hitlDispatchGate(agentId: string, detail: string, title: string): Promise<{ approved: boolean, comment: string }> {
438
+ const { getToolApprovals } = await import('../tool-approvals')
439
+ const decision = await getToolApprovals().request(agentId, 'recipe-dispatch', 'dcw', detail, { title })
440
+ return { approved: decision.approved, comment: decision.comment }
441
+ }
442
+
443
+ /** 工具:recipe_trial —— 多参数候选整批试验下发(v19 配方链路核心)。
444
+ * 候选值只覆盖列出节点(**必须是自己绑定的数控节点**);整批一次落产线,**不写配方版本** ——
445
+ * 复测判读:有进步/达标 → recipe_update 固化(同 id 版本+1);劣化 → recipe_rollback(dispatch=true) 统一回退。
446
+ * 受同线试验节拍卡控(默认 ≥5 分钟,防连发震荡);四层限界(量程∩参数∩产品)照常拦截。 */
447
+ export async function toolRecipeTrial(agentId: string, args: {
448
+ recipe_id?: string
449
+ params?: Array<{ node_id?: string, value?: number | string }>
450
+ hypothesis?: string
451
+ }): Promise<{ text: string, isError?: boolean }> {
452
+ const recipeId = String(args.recipe_id ?? '').trim()
453
+ const hypothesis = String(args.hypothesis ?? '').trim()
454
+ if (!recipeId) return { text: 'recipe_id 必填(line_context 可看到当前配方 id)。', isError: true }
455
+ if (!hypothesis) return { text: 'hypothesis 必填:试验必须声明依据(知识库条目/数据分析结论),便于审计追溯。', isError: true }
456
+ const list = (args.params ?? []).filter(p => p && String(p.node_id ?? '').trim() && Number.isFinite(Number(p.value)))
457
+ .map(p => ({ nodeId: String(p.node_id).trim(), value: Number(p.value) }))
458
+ if (list.length === 0) return { text: 'params 至少提供一条 {node_id, value}(value 必须为数字);试验的意义就是多参数一次整批改动。', isError: true }
459
+ const recipe = getDcwController().listRecipes().find(r => r.id === recipeId)
460
+ if (!recipe) return { text: `配方 ${recipeId} 不存在。`, isError: true }
461
+ const repo = getAgentNodeBindingRepo()
462
+ for (const p of list) {
463
+ const node = getDcwController().byId(p.nodeId)
464
+ if (!node) return { text: `节点 ${p.nodeId} 已删除,不能纳入试验。`, isError: true }
465
+ if (node.lineId !== recipe.lineId) return { text: `节点「${node.name}」不在配方「${recipe.name}」所在产线,不可混入试验。`, isError: true }
466
+ if (!node.enabled) return { text: `节点「${node.name}」已停用,试验被拒。`, isError: true }
467
+ if (!repo.find(agentId, p.nodeId, 'dcw')) {
468
+ return { text: `无权试验节点「${node.name}」(仅可改自己绑定的数控节点;缺授权找 lead 用 team_grant_nodes 授予)。`, isError: true }
469
+ }
470
+ }
471
+ try {
472
+ // v19.5 HITL 门:开启人工审批时,整批试验前先挂起等人工裁决(拒绝附指导 → 回给 Agent 修订)
473
+ let hitlNote = ''
474
+ if (settingOf('security.recipeDispatchApproval') === true) {
475
+ const gate = await hitlDispatchGate(
476
+ agentId,
477
+ `配方试验候选(整批 ${list.length} 参数):${list.map((p) => {
478
+ const node = getDcwController().byId(p.nodeId)
479
+ const old = recipe.params.find(x => x.nodeId === p.nodeId)?.value
480
+ return `${node?.name ?? p.nodeId} ${old ?? '?'}→${p.value}${node?.unit ?? ''}`
481
+ }).join(';')} | 假设:${hypothesis} | 批准=整批下发试验(不写版本);拒绝可附指导`,
482
+ '配方试验(整批候选)下发审批',
483
+ )
484
+ if (!gate.approved) {
485
+ return {
486
+ text: `人工未批准本次试验下发。人工指导:${gate.comment || '(无附言,仅不同意候选)'}。请按人工指导修订候选参数(必要时先 recipe_update 调整基线),然后重新提交 recipe_trial。`,
487
+ }
488
+ }
489
+ // 人工附言随批准回执回流(Agent 与审计都能看到放行时人的原话)
490
+ if (gate.comment) hitlNote = `\n人工附言:${gate.comment}`
491
+ }
492
+ const run = await getDcwController().applyRecipe(recipeId, { overrides: list, trial: true })
493
+ const okN = run.results.filter(r => r.ok).length
494
+ // 批次级留痕:试验动作入审计(逐参数写已有 write-audit;这里是"一次试验"粒度)
495
+ try {
496
+ const { recordOps } = await import('../../ops/ops')
497
+ recordOps({
498
+ actor: agentId, actorName: agentBadgeLabel(agentId), actorKind: 'agent',
499
+ action: 'recipe.trial', kind: 'recipe', targetKind: 'recipe', targetId: recipeId, recipeId, lineId: recipe.lineId,
500
+ summary: `配方试验整批下发(${okN}/${run.results.length} 成功,批次 ${run.id.slice(0, 8)}):${list.map(p => `${p.nodeId.slice(0, 8)}→${p.value}`).join(';')} | 假设:${hypothesis}`,
501
+ })
502
+ }
503
+ catch { /* 审计失败不影响试验结果 */ }
504
+ const changed = run.results.map((r) => {
505
+ const node = r.nodeId ? getDcwController().byId(r.nodeId) : undefined
506
+ const reason = r.ok ? '' : `(${String(r.message).slice(0, 60)})`
507
+ return `${node?.name ?? r.templateRef}→${r.value}${node?.unit ?? ''}${r.ok ? '' : ` 被拒${reason}`}`
508
+ }).join(';')
509
+ return {
510
+ text: `试验已整批下发(${okN}/${run.results.length} 成功,批次 ${run.id.slice(0, 8)}):${changed}。假设:${hypothesis}。${hitlNote}注意:本次试验**未写入配方版本** —— 等待工艺惯性后 daq_query 复测判读:有进步/达标 → recipe_update 把候选值固化进配方(同 id 版本+1);无进步/劣化 → recipe_rollback(recipe_id, dispatch=true, reason=…) 统一回退(定义回退+PLC 整批恢复)。`,
511
+ }
512
+ }
513
+ catch (err) {
514
+ return { text: `试验下发失败:${err instanceof Error ? err.message : String(err)}`, isError: true }
515
+ }
516
+ }
517
+
518
+ /** 工具:recipe_apply —— 把配方当前已固化参数整批下发到产线(改配方(recipe_update)之后用)。
519
+ * 与 recipe_trial 的区别:apply 下发的是**已固化版本**(无候选覆盖),用于"改配方 → 配方下发"链路的正式下发。 */
520
+ export async function toolRecipeApply(agentId: string, args: {
521
+ recipe_id?: string
522
+ reason?: string
523
+ }): Promise<{ text: string, isError?: boolean }> {
524
+ const recipeId = String(args.recipe_id ?? '').trim()
525
+ if (!recipeId) return { text: 'recipe_id 必填(line_context 可看到当前配方 id)。', isError: true }
526
+ const recipe = getDcwController().listRecipes().find(r => r.id === recipeId)
527
+ if (!recipe) return { text: `配方 ${recipeId} 不存在。`, isError: true }
528
+ const scope = agentOpsScope(agentId)
529
+ if (!scope || !recipe.lineId || !scope.lineIds.includes(recipe.lineId)) {
530
+ return { text: `无权下发配方 ${recipeId}(该配方不在你负责的产线上)。`, isError: true }
531
+ }
532
+ const boundInRecipe = getAgentNodeBindingRepo().byAgent(agentId)
533
+ .some(b => b.kind === 'dcw' && recipe.params.some(p => p.nodeId === b.nodeId))
534
+ if (!boundInRecipe) {
535
+ return { text: `无权下发配方 ${recipeId}(需持有该配方至少一个数控节点的授权;找 lead 用 team_grant_nodes 授予)。`, isError: true }
536
+ }
537
+ try {
538
+ // v19.5 HITL 门:开启人工审批时,正式下发前先挂起等人工裁决(拒绝附指导 → 回给 Agent 修订)
539
+ let hitlNote = ''
540
+ if (settingOf('security.recipeDispatchApproval') === true) {
541
+ const gate = await hitlDispatchGate(
542
+ agentId,
543
+ `配方正式下发:「${recipe.name}」v${recipe.version ?? 1} 全参数整批(${recipe.params.length} 项):${recipe.params.map((p) => {
544
+ const node = getDcwController().byId(p.nodeId)
545
+ return `${node?.name ?? p.nodeId}=${p.value}${node?.unit ?? ''}`
546
+ }).join(';')} | 批准=整批下发到 PLC;拒绝可附指导`,
547
+ '配方下发审批',
548
+ )
549
+ if (!gate.approved) {
550
+ return {
551
+ text: `人工未批准本次配方下发。人工指导:${gate.comment || '(无附言)'}。请按人工指导修订配方(recipe_update)后重新提交 recipe_apply。`,
552
+ }
553
+ }
554
+ // 人工附言随批准回执回流(与 recipe_trial 同口径)
555
+ if (gate.comment) hitlNote = `\n人工附言:${gate.comment}`
556
+ }
557
+ const run = await getDcwController().applyRecipe(recipeId)
558
+ const okN = run.results.filter(r => r.ok).length
559
+ // 逐参数标注:被跳过/失败的参数(节点停用/已删除/限界拒绝)必须透出给 Agent,
560
+ // 否则回包只见 N/N 成功数,无法定位哪些参数未生效(与 recipe_trial 的逐参数渲染同口径)。
561
+ const skipped = run.results.filter(r => !r.ok)
562
+ .map((r) => {
563
+ const node = r.nodeId ? getDcwController().byId(r.nodeId) : undefined
564
+ return `${node?.name ?? r.templateRef ?? r.nodeId ?? '?'}: ${String(r.message).slice(0, 80)}`
565
+ })
566
+ const skippedNote = skipped.length > 0 ? `\n未生效参数(${skipped.length}):\n - ${skipped.join('\n - ')}` : ''
567
+ try {
568
+ const { recordOps } = await import('../../ops/ops')
569
+ recordOps({
570
+ actor: agentId, actorName: agentBadgeLabel(agentId), actorKind: 'agent',
571
+ action: 'recipe.apply', kind: 'recipe', targetKind: 'recipe', targetId: recipeId, recipeId, lineId: recipe.lineId,
572
+ summary: `Agent 整批下发配方 v${recipe.version ?? 1}(${okN}/${run.results.length} 参数成功,批次 ${run.id.slice(0, 8)})${args.reason ? ` | 原因:${String(args.reason).trim()}` : ''}`,
573
+ })
574
+ }
575
+ catch { /* 审计失败不影响下发结果 */ }
576
+ return {
577
+ text: `配方「${recipe.name}」v${recipe.version ?? 1} 已整批下发(${okN}/${run.results.length} 参数成功,批次 ${run.id.slice(0, 8)})。${skippedNote}${hitlNote}用 daq_query 复测确认工艺响应。`,
578
+ }
579
+ }
580
+ catch (err) {
581
+ return { text: `配方下发失败:${err instanceof Error ? err.message : String(err)}`, isError: true }
582
+ }
583
+ }
@@ -9,6 +9,7 @@
9
9
 
10
10
  import { getAgentNodeBindingRepo } from './node-bindings.repo'
11
11
  import { getDcwController } from '../dcw/dcw-controller'
12
+ import { getDcwNodeRepo } from '../dcw/dcw-node.repo'
12
13
  import { getDcwLineRepo } from '../dcw/dcw-line.repo'
13
14
  import { getActiveLineRun } from '../dcw/line-run'
14
15
  import { findDcwTemplate } from '../dcw/dcw-templates'
@@ -18,6 +19,7 @@ import { findDaqTemplate } from '../daq/daq-templates'
18
19
  import { getDeviceTwinRepo } from '../assets/device-twin.repo'
19
20
  import { getRecipeRollBackManager } from '../dcw/recipe-rollback-manager'
20
21
  import { limitsBreakdownOf } from '../dcw/param-limits'
22
+ import { MES_REST_DRIVER_KIND, mesCatalogEntryOf } from '../mes/mes-controller'
21
23
 
22
24
  /** 从属设备描述(名称/状态/实时遥测;数据驱动) */
23
25
  function describeTwin(bindId: string | null | undefined): string | null {
@@ -170,6 +172,23 @@ export function buildIndustrialContext(agentId: string): string {
170
172
  if (alarms.length > 0) {
171
173
  lines.push(`- **当前报警**: ${alarms.map(n => `${n.name} 实时 ${n.value ?? '?'}${n.unit} 处于报警态(越量程或越配方监控窗口)`)},应优先判读(设定-响应滞后 vs 真实异常)并处置`)
172
174
  }
175
+ // MES REST 点位段:本产线 mes-rest 节点 ≤30 条全量简列(>30 给前 30 + 检索指引);
176
+ // 只列语义面(名称/单位/量程/能力/desc),取数走 mes_fetch(原文不进 prompt)
177
+ try {
178
+ const mesEntries = getDcwNodeRepo().all()
179
+ .filter(n => n.lineId === lineId && n.driver === MES_REST_DRIVER_KIND)
180
+ .map(mesCatalogEntryOf)
181
+ if (mesEntries.length > 0) {
182
+ const MES_BRIEF_MAX = 30
183
+ const capOf = (e: { readable: boolean, writable: boolean, historyable: boolean }): string =>
184
+ [e.readable ? '读' : null, e.writable ? '写' : null, e.historyable ? '史' : null].filter(Boolean).join('/') || '-'
185
+ const shown = mesEntries.slice(0, MES_BRIEF_MAX)
186
+ .map(e => ` ${e.name}|${e.unit || '-'}|${e.min}~${e.max}|${capOf(e)}|${e.desc.slice(0, 40)}`)
187
+ const rest = mesEntries.length - shown.length
188
+ lines.push(`- MES REST 点位(${mesEntries.length} 条,名称|单位|量程|读写/历史能力|描述):\n${shown.join('\n')}${rest > 0 ? `\n (其余 ${rest} 条未列出,用 mes_catalog 检索)` : ''}`)
189
+ }
190
+ }
191
+ catch { /* MES 面未就绪(单测/降级)不阻断简报 */ }
173
192
  sections.push(lines.join('\n'))
174
193
  }
175
194
  if (sections.length === 0) return ''
@@ -27,4 +27,16 @@ export const HYBRID_TWIN_DIRECT_WRITE_TOOL_NAMES = new Set([
27
27
  'dcw_rollback',
28
28
  'recipe_update',
29
29
  'recipe_rollback',
30
+ 'recipe_trial',
31
+ 'recipe_apply',
32
+ ])
33
+
34
+ /** MES 数据集工具(只读面:点位目录/历史取数/数据集读取与清单)。
35
+ * 不落 HIGH_RISK、不写 PLC —— fetch 只写 CSV 数据集文件(护栏在 mes-controller 代码级:
36
+ * 绑线授权/窗口≤7天/行数≤5000/频次限流);权限面与目录注入面可同源引用本集合。 */
37
+ export const MES_READ_TOOL_NAMES = new Set([
38
+ 'mes_catalog',
39
+ 'mes_fetch',
40
+ 'mes_dataset_read',
41
+ 'mes_datasets',
30
42
  ])
@@ -194,7 +194,9 @@ export async function buildDataset(spec: AmlDatasetSpec, by: { id: string, kind:
194
194
  continue
195
195
  }
196
196
 
197
- // 公共网格:[max(t0), min(t1)];逐节点最近邻对齐,网格点缺失计 NaN
197
+ // 公共网格:[max(t0), min(t1)];逐节点最近邻对齐,网格点缺失计 NaN。
198
+ // 全节点查空(如该 run 采样缺失/时序库丢数)时 g0/g1 保持 ±Infinity,
199
+ // 必须按丢弃处理 —— 否则 steps=Infinity 会把网格循环推到 RangeError(500)。
198
200
  let g0 = -Infinity
199
201
  let g1 = Infinity
200
202
  for (const n of order) {
@@ -206,7 +208,7 @@ export async function buildDataset(spec: AmlDatasetSpec, by: { id: string, kind:
206
208
  g0 = Math.max(g0, first.at)
207
209
  g1 = Math.min(g1, last.at)
208
210
  }
209
- const steps = g1 > g0 ? Math.floor((g1 - g0) / beat) + 1 : 0
211
+ const steps = Number.isFinite(g0) && Number.isFinite(g1) && g1 > g0 ? Math.floor((g1 - g0) / beat) + 1 : 0
210
212
  if (steps < spec.window.historySteps + spec.window.horizonSteps + 2) {
211
213
  runsDropped.push({ runId: run.id, reason: `有效网格 ${steps} 步不足一个窗口` })
212
214
  continue
@@ -96,5 +96,6 @@ export function handleProtocolLine(run: RunningJob, rawLine: string): void {
96
96
  }
97
97
  else if (evt.type === 'error' && evt.message) {
98
98
  pushLog(run, `[error] ${evt.message}`)
99
+ run.lastProtocolError = String(evt.message).slice(0, 300) // 结题失败原因优先用它(见 start-job 评估段)
99
100
  }
100
101
  }
@@ -31,6 +31,8 @@ export interface RunningJob {
31
31
  logLines: string[]
32
32
  protocolBadLines: number
33
33
  killed: boolean
34
+ /** 最近一条 ##AML error 协议消息(评估器的人读失败原因走 stdout;stderr 尾常为空) */
35
+ lastProtocolError?: string
34
36
  }
35
37
 
36
38
  export interface OrchestratorState {
@@ -140,8 +140,11 @@ export async function startJob(row: AmlJobRow): Promise<void> {
140
140
  const exit2 = await runPython(run, vpy, [evalScript, '--job', join(jobDir, 'job.json')], jobDir)
141
141
  if (run.killed) return
142
142
  if (exit2.code !== 0) {
143
- rt.repo.job.fail(row.id, 'failed', `评估失败:${lastErrLine(exit2.errTail)}(永久错误不重试)`, new Date().toISOString())
144
- experimentFail(run, `评估失败:${lastErrLine(exit2.errTail)}`)
143
+ // 失败原因优先取评估器的 ##AML error 协议消息(如「test 切分为空…」,人读可操作);
144
+ // stderr 尾兜底 —— 评估器把错误走 stdout 协议行时 errTail 常为空,只给 "exit" 无从排查。
145
+ const reason = run.lastProtocolError || lastErrLine(exit2.errTail)
146
+ rt.repo.job.fail(row.id, 'failed', `评估失败:${reason}(永久错误不重试)`, new Date().toISOString())
147
+ experimentFail(run, `评估失败:${reason}`)
145
148
  finishRun(run)
146
149
  return
147
150
  }
@@ -11,7 +11,7 @@ import type { DatabaseSync } from 'node:sqlite'
11
11
  import type { ChannelRow } from './database'
12
12
 
13
13
  /** 查询列(蛇形列名 → 驼峰行字段) */
14
- const COLS = 'id, name, description, scenario_prompt AS scenarioPrompt, llm_json AS llmJson, lead_agent_id AS leadAgentId, workspace, enabled, owner_user_id AS ownerUserId, visibility, join_policy AS joinPolicy, approval_policy AS approvalPolicy, chat_enabled AS chatEnabled, version, created_at AS createdAt, updated_at AS updatedAt'
14
+ const COLS = 'id, name, description, scenario_prompt AS scenarioPrompt, llm_json AS llmJson, lead_agent_id AS leadAgentId, workspace, enabled, owner_user_id AS ownerUserId, visibility, join_policy AS joinPolicy, approval_policy AS approvalPolicy, chat_enabled AS chatEnabled, version, line_id AS lineId, created_at AS createdAt, updated_at AS updatedAt'
15
15
 
16
16
  export interface ChannelCreateInput {
17
17
  name: string
@@ -99,6 +99,7 @@ export function createChannelRepo(db: DatabaseSync) {
99
99
  approvalPolicy: input.approvalPolicy ?? 'owner_only',
100
100
  chatEnabled: input.chatEnabled ?? 0,
101
101
  version: 1,
102
+ lineId: '',
102
103
  createdAt: now,
103
104
  updatedAt: now,
104
105
  }
@@ -189,5 +190,14 @@ export function createChannelRepo(db: DatabaseSync) {
189
190
  remove(id: string): void {
190
191
  removeStmt.run(id)
191
192
  },
193
+
194
+ /** v18:绑定/解绑产线(lineId=''=解绑)。只读扩权面:成员可读该线日志/配方/历史/状态;写仍走节点授权。 */
195
+ setLine(id: string, lineId: string): ChannelRow | undefined {
196
+ const current = selectById.get(id) as unknown as ChannelRow | undefined
197
+ if (!current) return undefined
198
+ db.prepare('UPDATE channels SET line_id = ?, updated_at = ? WHERE id = ?')
199
+ .run(lineId, new Date().toISOString(), id)
200
+ return { ...current, lineId, updatedAt: new Date().toISOString() }
201
+ },
192
202
  }
193
203
  }
@@ -10,6 +10,8 @@ export function migrateGroupChatV17(db: DatabaseSync): void {
10
10
  migrateAddColumn(db, 'channels', 'approval_policy', 'TEXT NOT NULL DEFAULT \'owner_only\'')
11
11
  migrateAddColumn(db, 'channels', 'chat_enabled', 'INTEGER NOT NULL DEFAULT 0')
12
12
  migrateAddColumn(db, 'channels', 'version', 'INTEGER NOT NULL DEFAULT 1')
13
+ // v18:Channel 绑定产线(空串=未绑定;只读扩权面,见 ops-tools agentOpsScope)
14
+ migrateAddColumn(db, 'channels', 'line_id', 'TEXT NOT NULL DEFAULT \'\'')
13
15
  // 规范化非法值(历史手改/测试数据):未知取值一律回落到最保守档,不放宽权限
14
16
  db.exec(`UPDATE channels SET visibility = 'private' WHERE visibility NOT IN ('private', 'public')`)
15
17
  db.exec(`UPDATE channels SET join_policy = 'owner_approve' WHERE join_policy NOT IN ('open', 'owner_approve')`)
@@ -27,6 +27,8 @@ export interface ChannelRow {
27
27
  chatEnabled: number
28
28
  /** v17 乐观锁版本(每次设置变更 +1) */
29
29
  version: number
30
+ /** v18 绑定产线(空串=未绑定;只读扩权:成员可读该线日志/配方/历史/状态,写仍走节点授权) */
31
+ lineId: string
30
32
  createdAt: string
31
33
  updatedAt: string
32
34
  }
@@ -711,6 +711,38 @@ CREATE TABLE IF NOT EXISTS twin_update_runs (
711
711
  );
712
712
  CREATE UNIQUE INDEX IF NOT EXISTS uq_twin_update_active_dedup ON twin_update_runs(dedup_key) WHERE state IN ('queued','running','cooldown');
713
713
 
714
+ -- v25: MES REST · CSV 数据集(Agent mes_fetch 异步取数的落盘事实源;铁律:MES 原文不进 prompt,工具面只回 stats+采样)
715
+ CREATE TABLE IF NOT EXISTS mes_datasets (
716
+ id TEXT PRIMARY KEY,
717
+ line_id TEXT,
718
+ node_id TEXT,
719
+ node_name TEXT,
720
+ from_ts TEXT,
721
+ to_ts TEXT,
722
+ rows INTEGER DEFAULT 0,
723
+ sha256 TEXT,
724
+ file_path TEXT,
725
+ status TEXT DEFAULT 'ready', -- running(取数中) | ready | failed
726
+ error TEXT,
727
+ created_by TEXT,
728
+ created_at TEXT
729
+ );
730
+ CREATE INDEX IF NOT EXISTS idx_mes_datasets_line ON mes_datasets(line_id, created_at DESC);
731
+
732
+ -- v25: MES REST · 取数作业(进程内异步执行的账本,绝不进调度循环;重启后遗留 running 由查询侧按 failed 呈现)
733
+ CREATE TABLE IF NOT EXISTS mes_fetch_jobs (
734
+ id TEXT PRIMARY KEY,
735
+ dataset_id TEXT,
736
+ agent_id TEXT,
737
+ status TEXT DEFAULT 'running', -- running | done | failed
738
+ rows INTEGER DEFAULT 0,
739
+ error TEXT,
740
+ created_at TEXT,
741
+ updated_at TEXT
742
+ );
743
+ CREATE INDEX IF NOT EXISTS idx_mes_fetch_jobs_dataset ON mes_fetch_jobs(dataset_id);
744
+ CREATE INDEX IF NOT EXISTS idx_mes_fetch_jobs_agent ON mes_fetch_jobs(agent_id, created_at DESC);
745
+
714
746
  CREATE INDEX IF NOT EXISTS idx_hitl_requests_agent ON hitl_requests(agent_id, status);`
715
747
 
716
748
  // ===== 默认种子数据(首轮初始化注入;owner NULL = 公共资源,所有登录用户只读共享) =====