agentworkshop 0.7.49 → 0.7.50

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 (883) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +409 -6
  2. package/.output/.AgentWorkShop/aml-python/__pycache__/aml_eval.cpython-312.pyc +0 -0
  3. package/.output/.AgentWorkShop/aml-python/__pycache__/amlkit.cpython-312.pyc +0 -0
  4. package/.output/.AgentWorkShop/aml-python/__pycache__/train-example.cpython-312.pyc +0 -0
  5. package/.output/.AgentWorkShop/aml-python/__pycache__/train-hybrid-example.cpython-312.pyc +0 -0
  6. package/.output/.AgentWorkShop/aml-python/aml_eval.py +39 -6
  7. package/.output/.AgentWorkShop/aml-python/amlkit.py +222 -3
  8. package/.output/.AgentWorkShop/aml-python/train-hybrid-example.py +278 -32
  9. package/.output/.AgentWorkShop/prompts/host-tools.json +409 -6
  10. package/.output/.AgentWorkShop/schema.json +135 -133
  11. package/.output/nitro.json +1 -1
  12. package/.output/public/_nuxt/2_DkYoqD2.js +1 -0
  13. package/.output/public/_nuxt/8FXd9As6.js +1 -0
  14. package/.output/public/_nuxt/{d-w5jR8R.js → B3zB6K6m.js} +1 -1
  15. package/.output/public/_nuxt/{OXtV_ukR.js → B4ujjkUI.js} +1 -1
  16. package/.output/public/_nuxt/B9BmiUil.js +2 -0
  17. package/.output/public/_nuxt/B9QzrmgE.js +1 -0
  18. package/.output/public/_nuxt/BE7BrEw6.js +1 -0
  19. package/.output/public/_nuxt/{Cu8c3oMN2.js → BFZIll912.js} +1 -1
  20. package/.output/public/_nuxt/{ChtjzEpK2.js → BGAaKBeo2.js} +1 -1
  21. package/.output/public/_nuxt/BOmDHp5L.js +14 -0
  22. package/.output/public/_nuxt/BPou3U7b.js +1 -0
  23. package/.output/public/_nuxt/{CiTQY_n32.js → BXx9AxdF2.js} +1 -1
  24. package/.output/public/_nuxt/Bfe2qOYs.js +1 -0
  25. package/.output/public/_nuxt/BgEDwFMf.js +1 -0
  26. package/.output/public/_nuxt/BgnhB8r5.js +1 -0
  27. package/.output/public/_nuxt/Bhe953zV2.js +1 -0
  28. package/.output/public/_nuxt/{BITZvQBK.js → Bpkm4W5P.js} +1 -1
  29. package/.output/public/_nuxt/C4lagVdN2.js +1 -0
  30. package/.output/public/_nuxt/C5cf3T4d.js +1 -0
  31. package/.output/public/_nuxt/CBIoheY42.js +1 -0
  32. package/.output/public/_nuxt/{CN1CDAwe.js → CFQSjB1h.js} +1 -1
  33. package/.output/public/_nuxt/CFQyYMEn2.js +1 -0
  34. package/.output/public/_nuxt/CHrErv1E.js +1 -0
  35. package/.output/public/_nuxt/{fxWyOzyp2.js → CI2yXRr42.js} +1 -1
  36. package/.output/public/_nuxt/CIduggmC.js +1 -0
  37. package/.output/public/_nuxt/CU-mhG0-.js +1 -0
  38. package/.output/public/_nuxt/CXzfXC5M.js +1 -0
  39. package/.output/public/_nuxt/{H6pPjo0l.js → C_sjV3Ee.js} +1 -1
  40. package/.output/public/_nuxt/Ccps4cxo.js +1 -0
  41. package/.output/public/_nuxt/{CPmNRTBk2.js → CdIsmU5a2.js} +10 -10
  42. package/.output/public/_nuxt/{BS9P_Ies2.js → ChGuLxwW2.js} +1 -1
  43. package/.output/public/_nuxt/{Ck5oMvUk.js → Cn6ihm8j.js} +1 -1
  44. package/.output/public/_nuxt/{CWzp2R6G.js → D-Xyb3DA.js} +1 -1
  45. package/.output/public/_nuxt/D0SNhlnt.js +1 -0
  46. package/.output/public/_nuxt/D0ldVwl-.js +1 -0
  47. package/.output/public/_nuxt/DClNt1uS.js +1 -0
  48. package/.output/public/_nuxt/{CTVfcnjU.js → DQMbdg4t.js} +2 -2
  49. package/.output/public/_nuxt/{DHSDk8Bq2.js → DTxfFIvL2.js} +1 -1
  50. package/.output/public/_nuxt/DVKXGuMz2.js +1 -0
  51. package/.output/public/_nuxt/{CLySL7mW.js → Da0h_6VA.js} +1 -1
  52. package/.output/public/_nuxt/{PixDfCSm.js → DefDtlKK.js} +1 -1
  53. package/.output/public/_nuxt/DjefmmJu.js +1 -0
  54. package/.output/public/_nuxt/DnH9SRMW2.js +1 -0
  55. package/.output/public/_nuxt/{BmiMC_BC.js → DppqsiPC.js} +1 -1
  56. package/.output/public/_nuxt/Drq9iy6V.js +1 -0
  57. package/.output/public/_nuxt/DsGf2IV82.js +1 -0
  58. package/.output/public/_nuxt/{DoKpLEqc.js → DzfVS8N72.js} +1 -1
  59. package/.output/public/_nuxt/{DRpFsrno.js → I1cI6sPJ2.js} +1 -1
  60. package/.output/public/_nuxt/IU-UGkCJ2.js +1 -0
  61. package/.output/public/_nuxt/KXjvpIk2.js +1 -0
  62. package/.output/public/_nuxt/NJn94js_.js +1 -0
  63. package/.output/public/_nuxt/ON2x-t6n.js +1 -0
  64. package/.output/public/_nuxt/S799kNo8.js +1 -0
  65. package/.output/public/_nuxt/{uI9Ki_XZ.js → S9rLP7_v.js} +1 -1
  66. package/.output/public/_nuxt/UN3nSFjj2.js +1 -0
  67. package/.output/public/_nuxt/WVTVkqef.js +1 -0
  68. package/.output/public/_nuxt/{C_VAXV7I2.js → Yv9YItEX2.js} +1 -1
  69. package/.output/public/_nuxt/_id_.DamiFT0Q.css +1 -0
  70. package/.output/public/_nuxt/{_id_.BTrFUIHX.css → _id_.DpRe1PRh.css} +1 -1
  71. package/.output/public/_nuxt/_wsId_.DkrQkT6r.css +1 -0
  72. package/.output/public/_nuxt/aml.-czpKIs8.css +1 -0
  73. package/.output/public/_nuxt/asmJ99nX2.js +47 -0
  74. package/.output/public/_nuxt/builds/latest.json +1 -1
  75. package/.output/public/_nuxt/builds/meta/08ba670b-7512-426b-a0ae-b10cbeb1c985.json +1 -0
  76. package/.output/public/_nuxt/{default.uao9U50c.css → default.CXb_zoN6.css} +1 -1
  77. package/.output/public/_nuxt/{entry.6DEjPWvR.css → entry.JdEG3KJg.css} +1 -1
  78. package/.output/public/_nuxt/jRTz0hjN2.js +1 -0
  79. package/.output/public/_nuxt/{DLPuRMeG.js → k5K6Jj6g.js} +1 -1
  80. package/.output/public/_nuxt/operations.B8X9uWK6.css +1 -0
  81. package/.output/public/_nuxt/{settings.Bo5EYkLI.css → settings.O26Dw1iT.css} +1 -1
  82. package/.output/public/_nuxt/{BACBBVdw.js → tKxYgsf-.js} +1 -1
  83. package/.output/public/_nuxt/{Cm_PTn9t2.js → vXrNItas2.js} +1 -1
  84. package/.output/public/_nuxt/{Cr518Gh02.js → zsRclU9w2.js} +1 -1
  85. package/.output/server/chunks/_/LeftOutlined.mjs +1 -1
  86. package/.output/server/chunks/_/SearchOutlined.mjs +1 -1
  87. package/.output/server/chunks/_/binding-authz.mjs +1 -1
  88. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  89. package/.output/server/chunks/_/entity.mjs +1 -1
  90. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  91. package/.output/server/chunks/_/nitro.mjs +26134 -21024
  92. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  93. package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
  94. package/.output/server/chunks/build/Checkbox-4EdGAAl_.mjs +1 -1
  95. package/.output/server/chunks/build/FormItemContext-4ORSzhWv.mjs +1 -1
  96. package/.output/server/chunks/build/{OmpTerminalPanel-EQHrOJbw.mjs → OmpTerminalPanel-mk31gVzA.mjs} +3 -3
  97. package/.output/server/chunks/build/{OmpTerminalPanel-EQHrOJbw.mjs.map → OmpTerminalPanel-mk31gVzA.mjs.map} +1 -1
  98. package/.output/server/chunks/build/{PluginSlot-BP_qedpQ.mjs → PluginSlot-D2WUZgbp.mjs} +2 -2
  99. package/.output/server/chunks/build/{PluginSlot-BP_qedpQ.mjs.map → PluginSlot-D2WUZgbp.mjs.map} +1 -1
  100. package/.output/server/chunks/build/{TownView-BAR8CPIZ.mjs → TownView-fP9BiALv.mjs} +6 -6
  101. package/.output/server/chunks/build/{TownView-BAR8CPIZ.mjs.map → TownView-fP9BiALv.mjs.map} +1 -1
  102. package/.output/server/chunks/build/{_id_-DgMpjM3_.mjs → _id_-BUpQSlzo.mjs} +142 -106
  103. package/.output/server/chunks/build/_id_-BUpQSlzo.mjs.map +1 -0
  104. package/.output/server/chunks/build/{_id_-Dv3BQbYV.mjs → _id_-CDlur81q.mjs} +25 -24
  105. package/.output/server/chunks/build/_id_-CDlur81q.mjs.map +1 -0
  106. package/.output/server/chunks/build/{_wsId_-BKJvFmyf.mjs → _wsId_-DPy2BXRd.mjs} +547 -158
  107. package/.output/server/chunks/build/_wsId_-DPy2BXRd.mjs.map +1 -0
  108. package/.output/server/chunks/build/{agents-B2GLPmn2.mjs → agents-CDLcboCv.mjs} +12 -12
  109. package/.output/server/chunks/build/{agents-B2GLPmn2.mjs.map → agents-CDLcboCv.mjs.map} +1 -1
  110. package/.output/server/chunks/build/{aml-DdWicH3t.mjs → aml-DsgtDLWF.mjs} +28 -27
  111. package/.output/server/chunks/build/aml-DsgtDLWF.mjs.map +1 -0
  112. package/.output/server/chunks/build/api-BY6ji7RC.mjs +6 -6
  113. package/.output/server/chunks/build/card-CUSocE9p.mjs +1 -1
  114. package/.output/server/chunks/build/{channel-templates-RPOtkgRf.mjs → channel-templates-DjEsj0_v.mjs} +8 -8
  115. package/.output/server/chunks/build/{channel-templates-RPOtkgRf.mjs.map → channel-templates-DjEsj0_v.mjs.map} +1 -1
  116. package/.output/server/chunks/build/checkbox-C4AKj81e.mjs +1 -1
  117. package/.output/server/chunks/build/constants-HPHJvjne.mjs +6 -6
  118. package/.output/server/chunks/build/{daq-CPtsh0e7.mjs → daq-N69AOtgw.mjs} +12 -11
  119. package/.output/server/chunks/build/daq-N69AOtgw.mjs.map +1 -0
  120. package/.output/server/chunks/build/{dcw-ry5Gyw6Y.mjs → dcw-CN9d3Rs7.mjs} +10 -10
  121. package/.output/server/chunks/build/{dcw-ry5Gyw6Y.mjs.map → dcw-CN9d3Rs7.mjs.map} +1 -1
  122. package/.output/server/chunks/build/{default-DxOE1eB0.mjs → default-DCf9tn1i.mjs} +38 -30
  123. package/.output/server/chunks/build/{default-DxOE1eB0.mjs.map → default-DCf9tn1i.mjs.map} +1 -1
  124. package/.output/server/chunks/build/descriptions-CFaUq4y4.mjs +1 -1
  125. package/.output/server/chunks/build/drawer-Cfh9_zft.mjs +1 -1
  126. package/.output/server/chunks/build/dropdown-KdKWCS5K.mjs +1 -1
  127. package/.output/server/chunks/build/form-uSlNqIAV.mjs +1 -1
  128. package/.output/server/chunks/build/input-Cr_KFj4T.mjs +1 -1
  129. package/.output/server/chunks/build/input-number-BRVnxeiA.mjs +1 -1
  130. package/.output/server/chunks/build/{logs-CeaiO3y9.mjs → logs-BcAjU1Ps.mjs} +12 -11
  131. package/.output/server/chunks/build/logs-BcAjU1Ps.mjs.map +1 -0
  132. package/.output/server/chunks/build/menu-BgkRSSx7.mjs +1 -1
  133. package/.output/server/chunks/build/{monitor-DnuXEIi5.mjs → monitor-DX_K0WMq.mjs} +13 -13
  134. package/.output/server/chunks/build/{monitor-DnuXEIi5.mjs.map → monitor-DX_K0WMq.mjs.map} +1 -1
  135. package/.output/server/chunks/build/operations-OFHYXwh4.mjs +282 -0
  136. package/.output/server/chunks/build/operations-OFHYXwh4.mjs.map +1 -0
  137. package/.output/server/chunks/build/{pages-Bn90ijKD.mjs → pages-rZKH72eC.mjs} +10 -11
  138. package/.output/server/chunks/build/pages-rZKH72eC.mjs.map +1 -0
  139. package/.output/server/chunks/build/{permissions-DL70W1YD.mjs → permissions-BvmodvsO.mjs} +8 -8
  140. package/.output/server/chunks/build/{permissions-DL70W1YD.mjs.map → permissions-BvmodvsO.mjs.map} +1 -1
  141. package/.output/server/chunks/build/{plugins-DrsZo--K.mjs → plugins-DSka7-vS.mjs} +9 -9
  142. package/.output/server/chunks/build/{plugins-DrsZo--K.mjs.map → plugins-DSka7-vS.mjs.map} +1 -1
  143. package/.output/server/chunks/build/popconfirm-Ox-_2V8A.mjs +1 -1
  144. package/.output/server/chunks/build/{schedules-VLzNcjnW.mjs → schedules-lo4bfgVt.mjs} +8 -8
  145. package/.output/server/chunks/build/{schedules-VLzNcjnW.mjs.map → schedules-lo4bfgVt.mjs.map} +1 -1
  146. package/.output/server/chunks/build/segmented-C61yLHvo.mjs +1 -1
  147. package/.output/server/chunks/build/select-rdBWytVK.mjs +1 -1
  148. package/.output/server/chunks/build/{settings-DVAUVMsX.mjs → settings-CAJWvul5.mjs} +32 -13
  149. package/.output/server/chunks/build/settings-CAJWvul5.mjs.map +1 -0
  150. package/.output/server/chunks/build/space-B2uhHJG8.mjs +1 -1
  151. package/.output/server/chunks/build/spin-C2cuvGth.mjs +1 -1
  152. package/.output/server/chunks/build/switch-DZAUIbIN.mjs +1 -1
  153. package/.output/server/chunks/build/table-DOFAvY-v.mjs +1 -1
  154. package/.output/server/chunks/build/tabs-DTeIuZeP.mjs +1 -1
  155. package/.output/server/chunks/build/tag-CHLGvNM6.mjs +1 -1
  156. package/.output/server/chunks/build/{teams-Mc07PYO8.mjs → teams-DBBvIToa.mjs} +14 -14
  157. package/.output/server/chunks/build/{teams-Mc07PYO8.mjs.map → teams-DBBvIToa.mjs.map} +1 -1
  158. package/.output/server/chunks/build/{tokens-DiwD5qni.mjs → tokens-CloWk4x_.mjs} +12 -12
  159. package/.output/server/chunks/build/{tokens-DiwD5qni.mjs.map → tokens-CloWk4x_.mjs.map} +1 -1
  160. package/.output/server/chunks/build/{town-D8VmTCmN.mjs → town-BMlctE4m.mjs} +12 -12
  161. package/.output/server/chunks/build/{town-D8VmTCmN.mjs.map → town-BMlctE4m.mjs.map} +1 -1
  162. package/.output/server/chunks/build/types-D6J7slEa.mjs +1 -1
  163. package/.output/server/chunks/build/{useAgentHarnessOptions-CPn5dzKe.mjs → useAgentHarnessOptions-D6SJ_uUr.mjs} +7 -7
  164. package/.output/server/chunks/build/{useAgentHarnessOptions-CPn5dzKe.mjs.map → useAgentHarnessOptions-D6SJ_uUr.mjs.map} +1 -1
  165. package/.output/server/chunks/build/{useAgentTemplateActions-DQWzVnZ0.mjs → useAgentTemplateActions-CdG4g_PF.mjs} +7 -7
  166. package/.output/server/chunks/build/{useAgentTemplateActions-DQWzVnZ0.mjs.map → useAgentTemplateActions-CdG4g_PF.mjs.map} +1 -1
  167. package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs +6 -6
  168. package/.output/server/chunks/build/{useAgentTemplateForm-vqyiRPtt.mjs → useAgentTemplateForm-a5y-N5sB.mjs} +7 -7
  169. package/.output/server/chunks/build/{useAgentTemplateForm-vqyiRPtt.mjs.map → useAgentTemplateForm-a5y-N5sB.mjs.map} +1 -1
  170. package/.output/server/chunks/build/{useAgentTemplatesCatalog-DcQbsOik.mjs → useAgentTemplatesCatalog-pBVcUuN3.mjs} +7 -7
  171. package/.output/server/chunks/build/{useAgentTemplatesCatalog-DcQbsOik.mjs.map → useAgentTemplatesCatalog-pBVcUuN3.mjs.map} +1 -1
  172. package/.output/server/chunks/build/useAmlDatasets-BM0lZu40.mjs +6 -6
  173. package/.output/server/chunks/build/{useAmlEntities-BjXWvFd_.mjs → useAmlEntities-BDQ8TmLL.mjs} +7 -7
  174. package/.output/server/chunks/build/{useAmlEntities-BjXWvFd_.mjs.map → useAmlEntities-BDQ8TmLL.mjs.map} +1 -1
  175. package/.output/server/chunks/build/{useAmlEnv-BB7p6x_w.mjs → useAmlEnv-DgTVwpqi.mjs} +7 -7
  176. package/.output/server/chunks/build/{useAmlEnv-BB7p6x_w.mjs.map → useAmlEnv-DgTVwpqi.mjs.map} +1 -1
  177. package/.output/server/chunks/build/useAmlExperiments-BtyW32PO.mjs +6 -6
  178. package/.output/server/chunks/build/{useAmlFormat-WrKuRfw2.mjs → useAmlFormat-C2sl3MGB.mjs} +7 -7
  179. package/.output/server/chunks/build/{useAmlFormat-WrKuRfw2.mjs.map → useAmlFormat-C2sl3MGB.mjs.map} +1 -1
  180. package/.output/server/chunks/build/{useAmlJobs-DBuLvWMF.mjs → useAmlJobs-fk-H5Rp5.mjs} +10 -9
  181. package/.output/server/chunks/build/useAmlJobs-fk-H5Rp5.mjs.map +1 -0
  182. package/.output/server/chunks/build/{useAmlModels-VurmkBYe.mjs → useAmlModels-hgyVHoAq.mjs} +7 -7
  183. package/.output/server/chunks/build/{useAmlModels-VurmkBYe.mjs.map → useAmlModels-hgyVHoAq.mjs.map} +1 -1
  184. package/.output/server/chunks/build/{useAmlNotes-BUdj3X6Y.mjs → useAmlNotes-BjbYNADm.mjs} +7 -7
  185. package/.output/server/chunks/build/{useAmlNotes-BUdj3X6Y.mjs.map → useAmlNotes-BjbYNADm.mjs.map} +1 -1
  186. package/.output/server/chunks/build/{useAmlPredict-DFy-Do10.mjs → useAmlPredict-U24-SZNA.mjs} +7 -7
  187. package/.output/server/chunks/build/{useAmlPredict-DFy-Do10.mjs.map → useAmlPredict-U24-SZNA.mjs.map} +1 -1
  188. package/.output/server/chunks/build/useDaqAddNode-kW7uTSMQ.mjs +7 -7
  189. package/.output/server/chunks/build/useDaqDetailBinding-cpBz4hSL.mjs +6 -6
  190. package/.output/server/chunks/build/useDaqDetailFrames-BZGtKKXW.mjs +6 -6
  191. package/.output/server/chunks/build/{useDaqDetailHistory-C4_hVeqZ.mjs → useDaqDetailHistory-DtSTfyMi.mjs} +7 -7
  192. package/.output/server/chunks/build/{useDaqDetailHistory-C4_hVeqZ.mjs.map → useDaqDetailHistory-DtSTfyMi.mjs.map} +1 -1
  193. package/.output/server/chunks/build/{useDaqDetailNode-Bwid_iA8.mjs → useDaqDetailNode-D_vhG0jF.mjs} +8 -8
  194. package/.output/server/chunks/build/{useDaqDetailNode-Bwid_iA8.mjs.map → useDaqDetailNode-D_vhG0jF.mjs.map} +1 -1
  195. package/.output/server/chunks/build/useDaqDetailParams-JfqHvTxr.mjs +7 -7
  196. package/.output/server/chunks/build/{useDaqFilters-C13836p-.mjs → useDaqFilters-BUQtZ82a.mjs} +8 -8
  197. package/.output/server/chunks/build/{useDaqFilters-C13836p-.mjs.map → useDaqFilters-BUQtZ82a.mjs.map} +1 -1
  198. package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs +6 -6
  199. package/.output/server/chunks/build/useDaqOptimizations-Ct-TSXxy.mjs +6 -6
  200. package/.output/server/chunks/build/useDaqStream-wOxZcMDA.mjs +1 -1
  201. package/.output/server/chunks/build/useDaqTemplates-BqQRdrIm.mjs +7 -7
  202. package/.output/server/chunks/build/{useDashboardCharts-DZysNDUX.mjs → useDashboardCharts-D45083s_.mjs} +7 -7
  203. package/.output/server/chunks/build/{useDashboardCharts-DZysNDUX.mjs.map → useDashboardCharts-D45083s_.mjs.map} +1 -1
  204. package/.output/server/chunks/build/{useDashboardData-Ny_wtbo6.mjs → useDashboardData-Do_Vsepa.mjs} +8 -8
  205. package/.output/server/chunks/build/{useDashboardData-Ny_wtbo6.mjs.map → useDashboardData-Do_Vsepa.mjs.map} +1 -1
  206. package/.output/server/chunks/build/{useDcwAddNode-C8nE7geh.mjs → useDcwAddNode-C1HDP3yG.mjs} +12 -9
  207. package/.output/server/chunks/build/useDcwAddNode-C1HDP3yG.mjs.map +1 -0
  208. package/.output/server/chunks/build/useDcwCards-ETEsHvVy.mjs +6 -6
  209. package/.output/server/chunks/build/{useDcwDetailScope-BNrpDzbO.mjs → useDcwDetailScope-QTr1G6Oe.mjs} +7 -7
  210. package/.output/server/chunks/build/{useDcwDetailScope-BNrpDzbO.mjs.map → useDcwDetailScope-QTr1G6Oe.mjs.map} +1 -1
  211. package/.output/server/chunks/build/{useDcwDetailTemplates-IcKAJ37Y.mjs → useDcwDetailTemplates-Djt-0Vse.mjs} +7 -7
  212. package/.output/server/chunks/build/{useDcwDetailTemplates-IcKAJ37Y.mjs.map → useDcwDetailTemplates-Djt-0Vse.mjs.map} +1 -1
  213. package/.output/server/chunks/build/useDcwFilter-FfVlDdyS.mjs +6 -6
  214. package/.output/server/chunks/build/useDcwLedger-BLoMmcu1.mjs +6 -6
  215. package/.output/server/chunks/build/useDcwLineMutations-BMC5BTWU.mjs +6 -6
  216. package/.output/server/chunks/build/{useDcwLineRun-Bpxk4mse.mjs → useDcwLineRun-74gN_s6T.mjs} +7 -7
  217. package/.output/server/chunks/build/{useDcwLineRun-Bpxk4mse.mjs.map → useDcwLineRun-74gN_s6T.mjs.map} +1 -1
  218. package/.output/server/chunks/build/useDcwProducts-D-zrMaeV.mjs +6 -6
  219. package/.output/server/chunks/build/{useDcwQuery-1lYHOaU6.mjs → useDcwQuery-7tX4QYmv.mjs} +7 -7
  220. package/.output/server/chunks/build/{useDcwQuery-1lYHOaU6.mjs.map → useDcwQuery-7tX4QYmv.mjs.map} +1 -1
  221. package/.output/server/chunks/build/useDcwQuickActions-C-tgcXIr.mjs +6 -6
  222. package/.output/server/chunks/build/{useDcwRecipes-BzGOymqz.mjs → useDcwRecipes-FVk5gDLV.mjs} +23 -15
  223. package/.output/server/chunks/build/useDcwRecipes-FVk5gDLV.mjs.map +1 -0
  224. package/.output/server/chunks/build/useDcwStream-D04kCV3J.mjs +1 -1
  225. package/.output/server/chunks/build/{useDcwTemplates-Dsjw9u6U.mjs → useDcwTemplates-LDZffy4u.mjs} +7 -7
  226. package/.output/server/chunks/build/{useDcwTemplates-Dsjw9u6U.mjs.map → useDcwTemplates-LDZffy4u.mjs.map} +1 -1
  227. package/.output/server/chunks/build/{useDcwWrites-3RxwN36I.mjs → useDcwWrites-B22mwliK.mjs} +25 -8
  228. package/.output/server/chunks/build/useDcwWrites-B22mwliK.mjs.map +1 -0
  229. package/.output/server/chunks/build/useLocalTime-DZ2RAtVs.mjs +49 -0
  230. package/.output/server/chunks/build/useLocalTime-DZ2RAtVs.mjs.map +1 -0
  231. package/.output/server/chunks/build/{useLogsFormat-BlwLpyzy.mjs → useLogsFormat-B-o4MHy7.mjs} +7 -7
  232. package/.output/server/chunks/build/{useLogsFormat-BlwLpyzy.mjs.map → useLogsFormat-B-o4MHy7.mjs.map} +1 -1
  233. package/.output/server/chunks/build/{useLogsManual-Deev2Cjk.mjs → useLogsManual-COfCyUtj.mjs} +7 -7
  234. package/.output/server/chunks/build/{useLogsManual-Deev2Cjk.mjs.map → useLogsManual-COfCyUtj.mjs.map} +1 -1
  235. package/.output/server/chunks/build/useLogsQuery-CRAm2hmS.mjs +6 -6
  236. package/.output/server/chunks/build/useLogsScope-ClNijVj4.mjs +6 -6
  237. package/.output/server/chunks/build/{useMonitorColumns-ylxrUNTK.mjs → useMonitorColumns-DhYvkLDq.mjs} +7 -7
  238. package/.output/server/chunks/build/{useMonitorColumns-ylxrUNTK.mjs.map → useMonitorColumns-DhYvkLDq.mjs.map} +1 -1
  239. package/.output/server/chunks/build/{useMonitorData-CEpKXoD4.mjs → useMonitorData-guVjMDtR.mjs} +9 -8
  240. package/.output/server/chunks/build/useMonitorData-guVjMDtR.mjs.map +1 -0
  241. package/.output/server/chunks/build/{useMonitorFormat-_7zLapf3.mjs → useMonitorFormat-C7lhZe4g.mjs} +13 -12
  242. package/.output/server/chunks/build/useMonitorFormat-C7lhZe4g.mjs.map +1 -0
  243. package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs +6 -6
  244. package/.output/server/chunks/build/useOperationsFeed-CeXeHqUK.mjs +191 -0
  245. package/.output/server/chunks/build/useOperationsFeed-CeXeHqUK.mjs.map +1 -0
  246. package/.output/server/chunks/build/{useTeamActions-D6sxdpkP.mjs → useTeamActions-C4n-taBk.mjs} +7 -7
  247. package/.output/server/chunks/build/{useTeamActions-D6sxdpkP.mjs.map → useTeamActions-C4n-taBk.mjs.map} +1 -1
  248. package/.output/server/chunks/build/{useTeamAddMemberDialog-Q-ntQ6Vo.mjs → useTeamAddMemberDialog-Cp_z3nMa.mjs} +7 -7
  249. package/.output/server/chunks/build/{useTeamAddMemberDialog-Q-ntQ6Vo.mjs.map → useTeamAddMemberDialog-Cp_z3nMa.mjs.map} +1 -1
  250. package/.output/server/chunks/build/{useTeamCreateDialog-D7OMfDTM.mjs → useTeamCreateDialog-C8LKUoe2.mjs} +7 -7
  251. package/.output/server/chunks/build/{useTeamCreateDialog-D7OMfDTM.mjs.map → useTeamCreateDialog-C8LKUoe2.mjs.map} +1 -1
  252. package/.output/server/chunks/build/{useTeamDeployDialog-vBRqjiut.mjs → useTeamDeployDialog-wdBVsNWY.mjs} +7 -7
  253. package/.output/server/chunks/build/{useTeamDeployDialog-vBRqjiut.mjs.map → useTeamDeployDialog-wdBVsNWY.mjs.map} +1 -1
  254. package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs +6 -6
  255. package/.output/server/chunks/build/{useTeamPluginDialog-B8kxewpZ.mjs → useTeamPluginDialog-CIk8G8nI.mjs} +7 -7
  256. package/.output/server/chunks/build/{useTeamPluginDialog-B8kxewpZ.mjs.map → useTeamPluginDialog-CIk8G8nI.mjs.map} +1 -1
  257. package/.output/server/chunks/build/{useTeamsCatalog-xRhk7ezA.mjs → useTeamsCatalog-D6TULzmS.mjs} +7 -7
  258. package/.output/server/chunks/build/{useTeamsCatalog-xRhk7ezA.mjs.map → useTeamsCatalog-D6TULzmS.mjs.map} +1 -1
  259. package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs +6 -6
  260. package/.output/server/chunks/build/{useTokenCreate-DpDcF1Vx.mjs → useTokenCreate-DkYvEQUD.mjs} +7 -7
  261. package/.output/server/chunks/build/{useTokenCreate-DpDcF1Vx.mjs.map → useTokenCreate-DkYvEQUD.mjs.map} +1 -1
  262. package/.output/server/chunks/build/{useTokenRename-BRejFrtc.mjs → useTokenRename-DOCP4aeI.mjs} +7 -7
  263. package/.output/server/chunks/build/{useTokenRename-BRejFrtc.mjs.map → useTokenRename-DOCP4aeI.mjs.map} +1 -1
  264. package/.output/server/chunks/build/{useTokenReveal-DER2afAS.mjs → useTokenReveal-CybwwflV.mjs} +7 -7
  265. package/.output/server/chunks/build/{useTokenReveal-DER2afAS.mjs.map → useTokenReveal-CybwwflV.mjs.map} +1 -1
  266. package/.output/server/chunks/build/{useTokensList-DHt65IOY.mjs → useTokensList-BLiMvrc4.mjs} +7 -7
  267. package/.output/server/chunks/build/{useTokensList-DHt65IOY.mjs.map → useTokensList-BLiMvrc4.mjs.map} +1 -1
  268. package/.output/server/chunks/build/{useWorkbenchAuth-B2j-zILO.mjs → useWorkbenchAuth-DqjBX-6w.mjs} +7 -7
  269. package/.output/server/chunks/build/{useWorkbenchAuth-B2j-zILO.mjs.map → useWorkbenchAuth-DqjBX-6w.mjs.map} +1 -1
  270. package/.output/server/chunks/build/{useWorkbenchWorkspaces-B_2mOxN6.mjs → useWorkbenchWorkspaces-DgiSCzsX.mjs} +10 -9
  271. package/.output/server/chunks/build/useWorkbenchWorkspaces-DgiSCzsX.mjs.map +1 -0
  272. package/.output/server/chunks/build/{useWorkshopWs-B-Es2Xg3.mjs → useWorkshopWs-Bm80bLn7.mjs} +8 -7
  273. package/.output/server/chunks/build/useWorkshopWs-Bm80bLn7.mjs.map +1 -0
  274. package/.output/server/chunks/build/{useWorkspaceAuth-tQ1ORWXo.mjs → useWorkspaceAuth-Dlvj9csD.mjs} +8 -8
  275. package/.output/server/chunks/build/{useWorkspaceAuth-tQ1ORWXo.mjs.map → useWorkspaceAuth-Dlvj9csD.mjs.map} +1 -1
  276. package/.output/server/chunks/build/{useWorkspaceChannels-BwB6TAWY.mjs → useWorkspaceChannels-D61Al2dr.mjs} +11 -10
  277. package/.output/server/chunks/build/useWorkspaceChannels-D61Al2dr.mjs.map +1 -0
  278. package/.output/server/chunks/build/{useWorkspacePanels-CuAmDpT5.mjs → useWorkspacePanels-CTwREmq0.mjs} +8 -8
  279. package/.output/server/chunks/build/{useWorkspacePanels-CuAmDpT5.mjs.map → useWorkspacePanels-CTwREmq0.mjs.map} +1 -1
  280. package/.output/server/chunks/build/{useWorkspaceShell-CcQ4JlqO.mjs → useWorkspaceShell-BCypjjjE.mjs} +7 -7
  281. package/.output/server/chunks/build/{useWorkspaceShell-CcQ4JlqO.mjs.map → useWorkspaceShell-BCypjjjE.mjs.map} +1 -1
  282. package/.output/server/chunks/build/{users-De2HygNt.mjs → users-CCf5PgRs.mjs} +8 -8
  283. package/.output/server/chunks/build/{users-De2HygNt.mjs.map → users-CCf5PgRs.mjs.map} +1 -1
  284. package/.output/server/chunks/build/{workshop-CmgpTwyf.mjs → workshop-FQ4YzooB.mjs} +13 -12
  285. package/.output/server/chunks/build/workshop-FQ4YzooB.mjs.map +1 -0
  286. package/.output/server/chunks/build/{workspaces-DVIEk1Bl.mjs → workspaces-CmW0cpOt.mjs} +1 -1
  287. package/.output/server/chunks/build/{workspaces-DVIEk1Bl.mjs.map → workspaces-CmW0cpOt.mjs.map} +1 -1
  288. package/.output/server/chunks/routes/api/health.get.mjs +6 -6
  289. package/.output/server/chunks/routes/api/index.get.mjs +7 -7
  290. package/.output/server/chunks/routes/api/index.post.mjs +7 -7
  291. package/.output/server/chunks/routes/api/mcp/workshop.mjs +6 -6
  292. package/.output/server/chunks/routes/api/metrics.mjs +6 -6
  293. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +6 -6
  294. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +6 -6
  295. package/.output/server/chunks/routes/api/plugins/i18n.get.mjs +6 -6
  296. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +6 -6
  297. package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +6 -6
  298. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs +6 -6
  299. package/.output/server/chunks/routes/api/system/config.get.mjs +6 -6
  300. package/.output/server/chunks/routes/api/system/index.get.mjs +6 -6
  301. package/.output/server/chunks/routes/api/system/index.patch.mjs +6 -6
  302. package/.output/server/chunks/routes/api/system/index.post.mjs +6 -6
  303. package/.output/server/chunks/routes/api/system/index2.get.mjs +6 -6
  304. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +6 -6
  305. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +6 -6
  306. package/.output/server/chunks/routes/api/system/monitor.get.mjs +6 -6
  307. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +6 -6
  308. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +6 -6
  309. package/.output/server/chunks/routes/api/system/timezone.get.mjs +36 -0
  310. package/.output/server/chunks/routes/api/system/timezone.get.mjs.map +1 -0
  311. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +7 -7
  312. package/.output/server/chunks/routes/api/users/_id_.get.mjs +7 -7
  313. package/.output/server/chunks/routes/api/users/_id_.put.mjs +7 -7
  314. package/.output/server/chunks/routes/api/users/index.get.mjs +7 -7
  315. package/.output/server/chunks/routes/api/users/index.post.mjs +7 -7
  316. package/.output/server/chunks/routes/api/users/login.post.mjs +7 -7
  317. package/.output/server/chunks/routes/api/users/logout.post.mjs +7 -7
  318. package/.output/server/chunks/routes/api/users/me.get.mjs +7 -7
  319. package/.output/server/chunks/routes/api/users/register.post.mjs +7 -7
  320. package/.output/server/chunks/routes/api/users/setup-status.get.mjs +7 -7
  321. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +7 -7
  322. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +7 -7
  323. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +7 -7
  324. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +6 -6
  325. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +7 -7
  326. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +5 -5
  327. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +6 -6
  328. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +7 -7
  329. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +7 -7
  330. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +10 -7
  331. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs.map +1 -1
  332. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +7 -7
  333. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +7 -7
  334. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +7 -7
  335. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +7 -7
  336. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +7 -7
  337. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +6 -6
  338. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +6 -6
  339. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +6 -6
  340. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +6 -6
  341. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +6 -6
  342. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +7 -7
  343. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +7 -7
  344. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +7 -7
  345. package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +7 -7
  346. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +7 -8
  347. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs.map +1 -1
  348. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +7 -8
  349. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs.map +1 -1
  350. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +7 -8
  351. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs.map +1 -1
  352. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +7 -7
  353. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +7 -7
  354. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +6 -6
  355. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +20 -7
  356. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs.map +1 -1
  357. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +7 -8
  358. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs.map +1 -1
  359. package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs +49 -0
  360. package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs.map +1 -0
  361. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +7 -7
  362. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +7 -7
  363. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +7 -7
  364. package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs +28 -0
  365. package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs.map +1 -0
  366. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +7 -7
  367. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +7 -7
  368. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +7 -7
  369. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +7 -7
  370. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +7 -7
  371. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +7 -7
  372. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +7 -7
  373. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +7 -7
  374. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +7 -7
  375. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs +35 -0
  376. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs.map +1 -0
  377. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs +35 -0
  378. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs.map +1 -0
  379. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs +44 -0
  380. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs.map +1 -0
  381. package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs +46 -0
  382. package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs.map +1 -0
  383. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +7 -7
  384. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +5 -5
  385. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +5 -5
  386. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +6 -6
  387. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +6 -6
  388. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +5 -5
  389. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +6 -6
  390. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +6 -6
  391. package/.output/server/chunks/routes/api/workshop/caller.mjs +7 -7
  392. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +16 -10
  393. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs.map +1 -1
  394. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +6 -6
  395. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +6 -6
  396. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +6 -6
  397. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +6 -6
  398. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +7 -7
  399. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +6 -6
  400. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +6 -6
  401. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +6 -6
  402. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +6 -6
  403. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +6 -6
  404. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +6 -6
  405. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +6 -6
  406. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +6 -6
  407. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +6 -6
  408. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +6 -6
  409. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs +6 -6
  410. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs +6 -6
  411. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs +6 -6
  412. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs +6 -6
  413. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +6 -6
  414. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +6 -6
  415. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +6 -6
  416. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +7 -7
  417. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +6 -6
  418. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +6 -6
  419. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +6 -6
  420. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +6 -6
  421. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +6 -6
  422. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +6 -6
  423. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +7 -7
  424. package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs +6 -6
  425. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs +6 -6
  426. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs +6 -6
  427. package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs +6 -6
  428. package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs +6 -6
  429. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +6 -6
  430. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +6 -6
  431. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +7 -7
  432. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs +51 -0
  433. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs.map +1 -0
  434. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs +71 -0
  435. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs.map +1 -0
  436. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +6 -6
  437. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +7 -7
  438. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +6 -6
  439. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +6 -6
  440. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +9 -9
  441. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +7 -7
  442. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +7 -7
  443. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +7 -7
  444. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +7 -7
  445. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +7 -7
  446. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +7 -7
  447. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +7 -7
  448. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +7 -7
  449. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +7 -7
  450. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +7 -7
  451. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +7 -7
  452. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +7 -7
  453. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +7 -7
  454. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +7 -7
  455. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +7 -7
  456. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +7 -7
  457. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +7 -7
  458. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +7 -7
  459. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +7 -7
  460. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +7 -7
  461. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +7 -7
  462. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +7 -7
  463. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +7 -7
  464. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +7 -7
  465. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +7 -7
  466. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +7 -7
  467. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +7 -7
  468. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +7 -7
  469. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +7 -7
  470. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +7 -7
  471. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +7 -7
  472. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +7 -7
  473. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +7 -7
  474. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +7 -7
  475. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +7 -7
  476. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +7 -7
  477. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +7 -7
  478. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +7 -7
  479. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +7 -7
  480. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +7 -7
  481. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +7 -7
  482. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +7 -7
  483. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +7 -7
  484. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +7 -7
  485. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +7 -7
  486. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +7 -7
  487. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +7 -7
  488. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +7 -7
  489. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +7 -7
  490. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +7 -7
  491. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +7 -7
  492. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +7 -7
  493. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +7 -7
  494. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +7 -7
  495. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +7 -7
  496. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +7 -7
  497. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +7 -7
  498. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +7 -7
  499. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +7 -7
  500. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +7 -7
  501. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +7 -7
  502. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +7 -7
  503. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +7 -7
  504. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +7 -7
  505. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +7 -7
  506. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +7 -7
  507. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +7 -7
  508. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +7 -7
  509. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +7 -7
  510. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +7 -7
  511. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +5 -5
  512. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +7 -7
  513. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +7 -7
  514. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +7 -7
  515. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +7 -7
  516. package/.output/server/chunks/routes/api/workshop/index.get.mjs +6 -6
  517. package/.output/server/chunks/routes/api/workshop/index.post.mjs +6 -6
  518. package/.output/server/chunks/routes/api/workshop/index.put.mjs +7 -7
  519. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +7 -7
  520. package/.output/server/chunks/routes/api/workshop/index11.get.mjs +6 -6
  521. package/.output/server/chunks/routes/api/workshop/index12.get.mjs +6 -6
  522. package/.output/server/chunks/routes/api/workshop/index13.get.mjs +6 -6
  523. package/.output/server/chunks/routes/api/workshop/index14.get.mjs +6 -6
  524. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +7 -8
  525. package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
  526. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +6 -6
  527. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +6 -6
  528. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +7 -7
  529. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +6 -6
  530. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +7 -7
  531. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +7 -7
  532. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +7 -7
  533. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +7 -7
  534. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +7 -7
  535. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +7 -7
  536. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +6 -6
  537. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +6 -6
  538. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +6 -6
  539. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +6 -6
  540. package/.output/server/chunks/routes/api/workshop/index9.post.mjs +6 -6
  541. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +6 -6
  542. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +6 -6
  543. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +6 -6
  544. package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs +6 -6
  545. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +7 -7
  546. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +7 -7
  547. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +6 -6
  548. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +6 -6
  549. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +7 -7
  550. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +7 -7
  551. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +6 -6
  552. package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs +6 -6
  553. package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs +6 -6
  554. package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs +6 -6
  555. package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs +6 -6
  556. package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs +6 -6
  557. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +6 -6
  558. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +6 -6
  559. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +6 -6
  560. package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs +6 -6
  561. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +6 -6
  562. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +6 -6
  563. package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs +6 -6
  564. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +6 -6
  565. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +6 -6
  566. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +6 -6
  567. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +6 -6
  568. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +6 -6
  569. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +7 -7
  570. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +7 -7
  571. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +6 -6
  572. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +6 -6
  573. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +6 -6
  574. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +6 -6
  575. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +6 -6
  576. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +6 -6
  577. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +7 -7
  578. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +6 -6
  579. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +6 -6
  580. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +6 -6
  581. package/.output/server/chunks/routes/renderer.mjs +2 -2
  582. package/.output/server/chunks/virtual/entry.mjs +645 -525
  583. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  584. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  585. package/.output/server/index.mjs +6 -6
  586. package/.output/server/package.json +1 -1
  587. package/README-zh.md +33 -17
  588. package/README.md +32 -16
  589. package/app/components/AppSidebar.vue +1 -0
  590. package/app/components/aml/AmlModelsTable.vue +180 -173
  591. package/app/components/daq/DaqDetailFramesTile.vue +140 -139
  592. package/app/components/daq/DaqDetailHistoryCard.vue +129 -128
  593. package/app/components/dcw/DcwAddNodeModal.vue +342 -328
  594. package/app/components/dcw/DcwNodesTable.vue +290 -253
  595. package/app/components/dcw/DcwQueryCard.vue +252 -251
  596. package/app/components/dcw/DcwRecipeEditModal.vue +297 -285
  597. package/app/components/dcw/DcwRecipePanel.vue +371 -367
  598. package/app/components/operations/OperationsFilterCard.vue +164 -0
  599. package/app/components/operations/OperationsPageHead.vue +47 -0
  600. package/app/components/operations/OperationsTimeline.vue +215 -0
  601. package/app/components/settings/RuntimeFieldRow.vue +207 -189
  602. package/app/components/workshop/ChatTimeline.vue +596 -569
  603. package/app/components/workshop/EventBlock.vue +224 -214
  604. package/app/components/workshop/blocks/ClusterTool.vue +20 -2
  605. package/app/components/workshop/console/LineOperationsPanel.vue +179 -0
  606. package/app/components/workshop/console/RightPane.vue +6 -0
  607. package/app/composables/workshop/event-blocks/constants.ts +48 -2
  608. package/app/composables/workshop/operation-events.ts +151 -0
  609. package/app/composables/workshop/useAmlStream.ts +137 -136
  610. package/app/composables/workshop/useLocalTime.ts +81 -37
  611. package/app/config/schema.ts +3 -0
  612. package/app/pages/aml/styles.css +422 -420
  613. package/app/pages/aml/types.ts +195 -189
  614. package/app/pages/dcw/[id].vue +300 -297
  615. package/app/pages/dcw/composables/useDcwAddNode.ts +124 -121
  616. package/app/pages/dcw/composables/useDcwRecipes.ts +242 -239
  617. package/app/pages/dcw/composables/useDcwWrites.ts +100 -81
  618. package/app/pages/monitor/composables/useMonitorData.ts +125 -124
  619. package/app/pages/monitor/composables/useMonitorFormat.ts +41 -39
  620. package/app/pages/operations/composables/useOperationsFeed.ts +137 -0
  621. package/app/pages/operations.vue +61 -0
  622. package/app/stores/runtime-config.ts +1 -1
  623. package/app/stores/workshop/chat.ts +434 -434
  624. package/app/stores/workshop/notifications.ts +288 -288
  625. package/app/utils/dcw-recipe-form.ts +26 -0
  626. package/cli/aw.mjs +3 -2
  627. package/cli/commands/mcp.mjs +154 -0
  628. package/cli/core/context.mjs +5 -0
  629. package/config.yml +180 -176
  630. package/docs/aml.md +112 -111
  631. package/docs/cli.en.md +13 -11
  632. package/docs/cli.md +12 -10
  633. package/docs/plugins.en.md +621 -567
  634. package/docs/plugins.md +610 -560
  635. package/docs/sdk.en.md +964 -922
  636. package/docs/sdk.md +900 -861
  637. package/i18n/dicts/aml.json +207 -205
  638. package/i18n/locales/en.ts +37 -0
  639. package/i18n/locales/zh-CN.ts +37 -0
  640. package/nuxt.config.ts +2 -0
  641. package/package.json +178 -172
  642. package/scripts/.chk-tok +1 -0
  643. package/scripts/.retrain-body.json +1 -0
  644. package/scripts/.retrain3-body.json +1 -0
  645. package/scripts/.rt-tok +1 -0
  646. package/scripts/.rt3-tok +1 -0
  647. package/scripts/_audit/.tmp/audit-data/dcw-params.json +15 -0
  648. package/scripts/_audit/.tmp/audit-data/dcws.json +30 -0
  649. package/scripts/_audit/aw-mcp-live-e2e.mjs +293 -0
  650. package/scripts/_audit/dcw-controller-e2e.ts +25 -18
  651. package/scripts/_audit/dcw-rollback-ledger.ts +4 -1
  652. package/scripts/_audit/feature-audit-e2e.mjs +339 -0
  653. package/scripts/_audit/full-e2e-adopt.mjs +238 -0
  654. package/scripts/_audit/full-e2e-close-loop.mjs +134 -0
  655. package/scripts/_audit/full-e2e-retrain.mjs +320 -0
  656. package/scripts/_audit/full-e2e-supplement.mjs +192 -0
  657. package/scripts/_audit/full-e2e-ui-final.mjs +111 -0
  658. package/scripts/_audit/full-e2e-ui-mount.mjs +111 -0
  659. package/scripts/_audit/full-feature-e2e-20260927.mjs +627 -0
  660. package/scripts/_audit/kb-diag-complete.mjs +261 -0
  661. package/scripts/_audit/kb-diag-complete2.mjs +271 -0
  662. package/scripts/_audit/kb-diag-loop-e2e.mjs +357 -0
  663. package/scripts/_audit/kb-diag-loop-mock.mjs +416 -0
  664. package/scripts/_audit/kb-diag-loop-v2.mjs +314 -0
  665. package/scripts/_audit/recipe-save-e2e.mjs +365 -0
  666. package/scripts/_audit/run.mjs +21 -0
  667. package/scripts/_audit/runtime-dir-e2e.mjs +393 -0
  668. package/scripts/_audit/skills-guided-e2e.mjs +316 -0
  669. package/scripts/_audit/stability-soak.mjs +252 -0
  670. package/scripts/_aw0748-failclosed-probe.mjs +1 -1
  671. package/scripts/_aw0748-mock-closedloop.mjs +12 -0
  672. package/scripts/_aw0748-mock-dispatch-diag.mjs +66 -0
  673. package/scripts/_dbg-configroot-audit.mjs +86 -84
  674. package/scripts/_dbg-daq-intervals-func.mjs +115 -94
  675. package/scripts/_dbg-optloop-ui-shots.mjs +52 -0
  676. package/scripts/_dbg-param-map-e2e.ts +7 -1
  677. package/scripts/_dbg-perms-e2e.mjs +11 -1
  678. package/scripts/_dbg-protocol-matrix.mjs +3 -1
  679. package/scripts/_dbg-render-regression.mjs +67 -25
  680. package/scripts/_lib-aml-python-run.mjs +17 -0
  681. package/scripts/_lint-reflow.mjs +105 -0
  682. package/scripts/_probe-model-channel-link.cjs +25 -0
  683. package/scripts/acceptance-aml-hybrid-e2e.ts +396 -0
  684. package/scripts/acceptance-aml-hybrid-twin.ts +3 -3
  685. package/scripts/acceptance-aml-model-identity.ts +137 -0
  686. package/scripts/dev-guard.mjs +4 -2
  687. package/scripts/dev-protocol-simulators.mjs +3 -2
  688. package/scripts/e2e-aml-decoupled.mjs +162 -0
  689. package/scripts/e2e-closedloop/scenarios-accounts.mjs +2 -0
  690. package/scripts/e2e-closedloop/scenarios-authz.mjs +12 -6
  691. package/scripts/e2e-closedloop/scenarios-daq-dcw.mjs +4 -1
  692. package/scripts/e2e-timezone-settings.mjs +57 -0
  693. package/scripts/live-aml-mockomp.mjs +304 -0
  694. package/scripts/live-aml-optloop-resume.mjs +322 -0
  695. package/scripts/live-aml-optloop.mjs +545 -0
  696. package/scripts/live-aml-stage9.mjs +169 -0
  697. package/scripts/live-aml-two-goals.mjs +315 -0
  698. package/scripts/live-optloop-two-modes.mjs +857 -0
  699. package/scripts/start.mjs +3 -1
  700. package/scripts/test-aw-skills.mjs +102 -0
  701. package/scripts/test-twin-plugin-sdk.mjs +30 -0
  702. package/sdk/context.mjs +305 -0
  703. package/sdk/index.d.mts +149 -0
  704. package/sdk/index.mjs +5 -2
  705. package/server/api/system/timezone.get.ts +20 -0
  706. package/server/api/workshop/agent-tools/bindings/[id].patch.ts +28 -23
  707. package/server/api/workshop/aml/jobs/index.post.ts +74 -44
  708. package/server/api/workshop/aml/training-plans/[id]/train.post.ts +18 -0
  709. package/server/api/workshop/aml/training-plans/[id].delete.ts +18 -0
  710. package/server/api/workshop/aml/training-plans/[id].patch.ts +30 -0
  711. package/server/api/workshop/aml/training-plans/index.get.ts +9 -0
  712. package/server/api/workshop/aml/training-plans/index.post.ts +43 -0
  713. package/server/api/workshop/aml/twin/providers.get.ts +33 -0
  714. package/server/api/workshop/channel-templates/[id]/instantiate.post.ts +8 -2
  715. package/server/api/workshop/channels/[id]/twin-profile.get.ts +45 -0
  716. package/server/api/workshop/channels/[id]/twin-profile.patch.ts +72 -0
  717. package/server/plugins/00-local-time.ts +13 -10
  718. package/server/plugins/aml-twin-worker.ts +32 -0
  719. package/server/plugins/aw-plugins.ts +16 -0
  720. package/server/plugins/workshop.ts +21 -0
  721. package/server/plugins-builtin/twin-injection-default/index.mjs +23 -0
  722. package/server/services/system-config/helpers.ts +42 -41
  723. package/server/services/system-config/recompute.ts +68 -66
  724. package/server/services/workshop/agents/host-tool-bridge/catalog.ts +50 -18
  725. package/server/services/workshop/agents/host-tool-bridge/dispatch.ts +51 -5
  726. package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +19 -6
  727. package/server/services/workshop/agents/industrial/aml-dataset-tools.ts +276 -276
  728. package/server/services/workshop/agents/industrial/aml-job-tools.ts +549 -363
  729. package/server/services/workshop/agents/industrial/audit-query.ts +30 -0
  730. package/server/services/workshop/agents/industrial/dcw-judge-tools.ts +9 -13
  731. package/server/services/workshop/agents/industrial/dcw-tools.ts +208 -213
  732. package/server/services/workshop/agents/industrial/index.ts +3 -2
  733. package/server/services/workshop/agents/industrial/manual-approval.ts +45 -0
  734. package/server/services/workshop/agents/industrial/ops-tools.ts +370 -382
  735. package/server/services/workshop/agents/industrial/optimization-tools.ts +148 -0
  736. package/server/services/workshop/agents/industrial/param-tools.ts +169 -172
  737. package/server/services/workshop/agents/industrial/twin-tools.ts +618 -61
  738. package/server/services/workshop/agents/industrial-context.ts +4 -2
  739. package/server/services/workshop/agents/node-bindings.repo.ts +35 -2
  740. package/server/services/workshop/agents/tool-classes.ts +28 -0
  741. package/server/services/workshop/aml/aml.repo.ts +412 -386
  742. package/server/services/workshop/aml/job-orchestrator/stages.ts +108 -96
  743. package/server/services/workshop/aml/job-orchestrator/start-job.ts +29 -5
  744. package/server/services/workshop/aml/job-orchestrator/submit.ts +36 -1
  745. package/server/services/workshop/aml/model-registry.ts +265 -175
  746. package/server/services/workshop/aml/predictor.ts +336 -262
  747. package/server/services/workshop/aml/python/__pycache__/aml_eval.cpython-312.pyc +0 -0
  748. package/server/services/workshop/aml/python/__pycache__/amlkit.cpython-312.pyc +0 -0
  749. package/server/services/workshop/aml/python/__pycache__/train-example.cpython-312.pyc +0 -0
  750. package/server/services/workshop/aml/python/__pycache__/train-hybrid-example.cpython-312.pyc +0 -0
  751. package/server/services/workshop/aml/python/aml_eval.py +39 -6
  752. package/server/services/workshop/aml/python/amlkit.py +222 -3
  753. package/server/services/workshop/aml/python/train-hybrid-example.py +278 -32
  754. package/server/services/workshop/aml/runtime.ts +4 -3
  755. package/server/services/workshop/aml/twin/acceptance.ts +26 -0
  756. package/server/services/workshop/aml/twin/binding-snapshot.ts +603 -0
  757. package/server/services/workshop/aml/twin/calibration-worker.ts +150 -0
  758. package/server/services/workshop/aml/twin/channel-profile.ts +80 -7
  759. package/server/services/workshop/aml/twin/contracts.ts +3 -0
  760. package/server/services/workshop/aml/twin/declarative-provider.ts +108 -0
  761. package/server/services/workshop/aml/twin/feature-flags.ts +63 -0
  762. package/server/services/workshop/aml/twin/hybrid-provider.ts +86 -0
  763. package/server/services/workshop/aml/twin/model-backed-provider.ts +332 -0
  764. package/server/services/workshop/aml/twin/physics-spec-draft.ts +185 -0
  765. package/server/services/workshop/aml/twin/physics-spec.ts +338 -0
  766. package/server/services/workshop/aml/twin/prompt-composer.ts +143 -0
  767. package/server/services/workshop/aml/twin/provider-contracts.ts +98 -34
  768. package/server/services/workshop/aml/twin/provider-health.ts +69 -8
  769. package/server/services/workshop/aml/twin/provider-loader.ts +76 -45
  770. package/server/services/workshop/aml/twin/provider-registry.ts +670 -49
  771. package/server/services/workshop/aml/twin/repo.ts +63 -4
  772. package/server/services/workshop/aml/twin/scene-builder.ts +118 -0
  773. package/server/services/workshop/aml/twin/scene-lifecycle.ts +60 -0
  774. package/server/services/workshop/aml/twin/snapshot-service.ts +395 -22
  775. package/server/services/workshop/aml/twin/training-plans.ts +260 -0
  776. package/server/services/workshop/aml/twin/trial-service.ts +97 -13
  777. package/server/services/workshop/aml/twin/write-guard.ts +20 -0
  778. package/server/services/workshop/daq/daq-controller/state.ts +8 -5
  779. package/server/services/workshop/daq/drivers/registry.ts +116 -144
  780. package/server/services/workshop/db/database/migrations.ts +40 -0
  781. package/server/services/workshop/db/database/open.ts +4 -1
  782. package/server/services/workshop/db/database/schema.ts +68 -1
  783. package/server/services/workshop/db/database/seed.ts +22 -0
  784. package/server/services/workshop/db/readonly.ts +30 -0
  785. package/server/services/workshop/dcw/dcw-controller/crud.ts +162 -152
  786. package/server/services/workshop/dcw/dcw-controller/helpers.ts +61 -57
  787. package/server/services/workshop/dcw/dcw-controller/types.ts +61 -57
  788. package/server/services/workshop/dcw/dcw-controller/write-audit.ts +49 -0
  789. package/server/services/workshop/dcw/dcw-controller/write.ts +137 -147
  790. package/server/services/workshop/dcw/dcw-node.ts +18 -2
  791. package/server/services/workshop/dcw/dcw-recipe.repo.ts +5 -0
  792. package/server/services/workshop/dcw/dcw-runtime.ts +9 -3
  793. package/server/services/workshop/dcw/drivers/index.ts +2 -1
  794. package/server/services/workshop/dcw/drivers/modbus-rtu.ts +85 -93
  795. package/server/services/workshop/dcw/drivers/modbus.ts +131 -139
  796. package/server/services/workshop/dcw/drivers/opcua.ts +103 -110
  797. package/server/services/workshop/dcw/drivers/registry.ts +25 -45
  798. package/server/services/workshop/dcw/drivers/shared.ts +24 -6
  799. package/server/services/workshop/dcw/param-limits.ts +193 -142
  800. package/server/services/workshop/dcw/param-map.repo.ts +318 -305
  801. package/server/services/workshop/plugin-driver-registry.ts +108 -0
  802. package/server/services/workshop/runtime/manager/admin-channel.ts +13 -0
  803. package/server/services/workshop/runtime/manager/channel-templates.ts +29 -2
  804. package/server/services/workshop/runtime/manager/runtime-wiring.ts +8 -0
  805. package/server/services/workshop/runtime/permission-scope.ts +79 -81
  806. package/server/services/workshop/runtime/schedule-runtime.ts +33 -6
  807. package/server/utils/errors.ts +8 -0
  808. package/shared/config/engine.mjs +5 -0
  809. package/shared/config/home.mjs +15 -20
  810. package/shared/config/schema.json +135 -133
  811. package/shared/dcw-protocol/line.ts +133 -131
  812. package/shared/dcw-protocol/recipe.ts +311 -301
  813. package/shared/local-time.mjs +116 -36
  814. package/.output/public/_nuxt/-hB4kEmt.js +0 -1
  815. package/.output/public/_nuxt/74x7BOWv2.js +0 -1
  816. package/.output/public/_nuxt/9c5GOgbu.js +0 -1
  817. package/.output/public/_nuxt/BHwG4yNs.js +0 -1
  818. package/.output/public/_nuxt/BIOq3xqe2.js +0 -1
  819. package/.output/public/_nuxt/BL_dbd2v2.js +0 -1
  820. package/.output/public/_nuxt/BNnnYEYh2.js +0 -1
  821. package/.output/public/_nuxt/BxYTM0hb.js +0 -1
  822. package/.output/public/_nuxt/C3twEwTh2.js +0 -1
  823. package/.output/public/_nuxt/CGZVhYJ4.js +0 -1
  824. package/.output/public/_nuxt/CJRDL4EG.js +0 -1
  825. package/.output/public/_nuxt/CKQPwwZa2.js +0 -1
  826. package/.output/public/_nuxt/CeWnOF3O.js +0 -1
  827. package/.output/public/_nuxt/ChoLwR-s.js +0 -1
  828. package/.output/public/_nuxt/DGw8juu_.js +0 -2
  829. package/.output/public/_nuxt/DJdDFnjG2.js +0 -1
  830. package/.output/public/_nuxt/DXIaadqv.js +0 -1
  831. package/.output/public/_nuxt/D_7AzAWe.js +0 -1
  832. package/.output/public/_nuxt/DdvQ7LRI.js +0 -14
  833. package/.output/public/_nuxt/DeYsUzhr.js +0 -1
  834. package/.output/public/_nuxt/DkLCjrCk2.js +0 -47
  835. package/.output/public/_nuxt/DpqA8D8_.js +0 -1
  836. package/.output/public/_nuxt/DqtgGFEc.js +0 -1
  837. package/.output/public/_nuxt/Dy3oXKdn2.js +0 -1
  838. package/.output/public/_nuxt/PLGqdko0.js +0 -1
  839. package/.output/public/_nuxt/U8oQxruK.js +0 -1
  840. package/.output/public/_nuxt/WleoCtUX.js +0 -1
  841. package/.output/public/_nuxt/ZvXovq7N2.js +0 -1
  842. package/.output/public/_nuxt/_id_.Bossmhv1.css +0 -1
  843. package/.output/public/_nuxt/_wsId_.D-u-dbP9.css +0 -1
  844. package/.output/public/_nuxt/aml.Bi5X6_oi.css +0 -1
  845. package/.output/public/_nuxt/builds/meta/0530cee1-fff5-4025-a6f4-5708b6534608.json +0 -1
  846. package/.output/public/_nuxt/cDcDztgb2.js +0 -1
  847. package/.output/public/_nuxt/e7BBCLxr.js +0 -1
  848. package/.output/public/_nuxt/hkMGMTqt.js +0 -1
  849. package/.output/public/_nuxt/ikAUnxx3.js +0 -1
  850. package/.output/public/_nuxt/y9kob70X.js +0 -1
  851. package/.output/server/chunks/_/env-manager.mjs +0 -162
  852. package/.output/server/chunks/_/env-manager.mjs.map +0 -1
  853. package/.output/server/chunks/build/_id_-DgMpjM3_.mjs.map +0 -1
  854. package/.output/server/chunks/build/_id_-Dv3BQbYV.mjs.map +0 -1
  855. package/.output/server/chunks/build/_wsId_-BKJvFmyf.mjs.map +0 -1
  856. package/.output/server/chunks/build/aml-DdWicH3t.mjs.map +0 -1
  857. package/.output/server/chunks/build/client-only-qNA2OVV_.mjs +0 -43
  858. package/.output/server/chunks/build/client-only-qNA2OVV_.mjs.map +0 -1
  859. package/.output/server/chunks/build/daq-CPtsh0e7.mjs.map +0 -1
  860. package/.output/server/chunks/build/logs-CeaiO3y9.mjs.map +0 -1
  861. package/.output/server/chunks/build/pages-Bn90ijKD.mjs.map +0 -1
  862. package/.output/server/chunks/build/settings-DVAUVMsX.mjs.map +0 -1
  863. package/.output/server/chunks/build/useAmlJobs-DBuLvWMF.mjs.map +0 -1
  864. package/.output/server/chunks/build/useDcwAddNode-C8nE7geh.mjs.map +0 -1
  865. package/.output/server/chunks/build/useDcwRecipes-BzGOymqz.mjs.map +0 -1
  866. package/.output/server/chunks/build/useDcwWrites-3RxwN36I.mjs.map +0 -1
  867. package/.output/server/chunks/build/useLocalTime-9a4B-aHv.mjs +0 -35
  868. package/.output/server/chunks/build/useLocalTime-9a4B-aHv.mjs.map +0 -1
  869. package/.output/server/chunks/build/useMonitorData-CEpKXoD4.mjs.map +0 -1
  870. package/.output/server/chunks/build/useMonitorFormat-_7zLapf3.mjs.map +0 -1
  871. package/.output/server/chunks/build/useWorkbenchWorkspaces-B_2mOxN6.mjs.map +0 -1
  872. package/.output/server/chunks/build/useWorkshopWs-B-Es2Xg3.mjs.map +0 -1
  873. package/.output/server/chunks/build/useWorkspaceChannels-BwB6TAWY.mjs.map +0 -1
  874. package/.output/server/chunks/build/workshop-CmgpTwyf.mjs.map +0 -1
  875. /package/.output/public/_nuxt/{B2x8SKRO.js → B2x8SKRO2.js} +0 -0
  876. /package/.output/public/_nuxt/{BzvHUfRR2.js → BzvHUfRR.js} +0 -0
  877. /package/.output/public/_nuxt/{DPUXbTg92.js → DPUXbTg9.js} +0 -0
  878. /package/.output/public/_nuxt/{DdNujZN5.js → DdNujZN52.js} +0 -0
  879. /package/.output/public/_nuxt/{DlUQa0wn2.js → DlUQa0wn.js} +0 -0
  880. /package/.output/public/_nuxt/{Du9v6qGB.js → Du9v6qGB2.js} +0 -0
  881. /package/.output/public/_nuxt/{TOWR4WpO.js → TOWR4WpO2.js} +0 -0
  882. /package/.output/public/_nuxt/{cBI0JqsV2.js → cBI0JqsV.js} +0 -0
  883. /package/.output/public/_nuxt/{zh-S_7rN.js → zh-S_7rN2.js} +0 -0
@@ -15,17 +15,17 @@ import 'url';
15
15
  import 'node:crypto';
16
16
  import 'node:events';
17
17
  import 'node:buffer';
18
- import 'node:url';
19
18
  import 'node:fs';
20
19
  import 'node:path';
21
- import 'node:fs/promises';
22
- import 'node:os';
20
+ import 'node:url';
23
21
  import 'js-yaml';
22
+ import 'node:os';
23
+ import 'zod';
24
24
  import 'node:child_process';
25
- import 'node:net';
26
- import 'node:util';
27
25
  import 'node:sqlite';
28
26
  import 'node:module';
27
+ import 'node:fs/promises';
28
+ import 'node:net';
29
+ import 'node:util';
29
30
  import 'node:zlib';
30
- import 'zod';
31
31
  //# sourceMappingURL=index.mjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentworkshop-prod",
3
- "version": "0.7.49",
3
+ "version": "0.7.50",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
package/README-zh.md CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  **[English](./README.md)** · **[在线文档](https://kingdol666.github.io/AgentWorkShop)** · **[版本发布](https://github.com/kingdol666/AgentWorkShop/releases)** · **[更新日志](./changelog.md)** · **[插件 API](./docs/plugins.md)** · **[SDK](./docs/sdk.md)**
30
30
 
31
- <sub><b>v0.7.49</b> · 14 个执行引擎 · 6 种现场协议(5 内置 + 串口插件) · 111 个运行时设置项 · 双语文档(简体中文 / English)</sub>
31
+ <sub><b>v0.7.50</b> · 14 个执行引擎 · 6 种现场协议(5 内置 + 串口插件) · 113 个运行时设置项 · 双语文档(简体中文 / English)</sub>
32
32
 
33
33
  <br />
34
34
 
@@ -79,7 +79,7 @@
79
79
  7 状态任务机 · 根任务队列 + 执行租约<br/>
80
80
  群聊作业 · 定时任务 · HITL 审批<br/>
81
81
  FTS5 + 向量记忆 · 插件热重载<br/>
82
- SDK · CLI · TUI · 约 1100+ 条验收断言
82
+ SDK · CLI · TUI · 外部 MCP · 约 1100+ 条验收断言
83
83
 
84
84
  </td>
85
85
  </tr>
@@ -96,7 +96,7 @@ SDK · CLI · TUI · 约 1100+ 条验收断言
96
96
  | **上手指南** | [指南](https://kingdol666.github.io/AgentWorkShop/guide/getting-started) | `docs/site/guide/` | 安装 → 首次运行 → 第一次「Agent × 产线」会话、配置系统、数采协议、数控读写、HITL、配方版本、多 Harness 团队、产线权限、AML |
97
97
  | **插件开发** | [插件指南](https://kingdol666.github.io/AgentWorkShop/plugins/) | [`docs/plugins.md`](./docs/plugins.md) | 完整扩展契约:三种作用域、`index.mjs` 清单、`ctx` 服务端/浏览器能力面、`settings`/`groups` 声明、生命周期事件、i18n、面板、团队级开关、一个真实案例 |
98
98
  | **SDK** | [SDK 指南](https://kingdol666.github.io/AgentWorkShop/sdk/) | [`docs/sdk.md`](./docs/sdk.md) | `agentworkshop/sdk` 作为编程客户端(带信封处理的平台 REST 客户端)与插件扩展基座;TypeScript 类型;浏览器端 SDK |
99
- | **CLI** | [CLI 手册](https://kingdol666.github.io/AgentWorkShop/cli/) | [`docs/cli.md`](./docs/cli.md) | 全部 14 个 `aw` 指令、全局选项、退出码、双模式路径模型、指令注册系统、维护者发布指引 |
99
+ | **CLI** | [CLI 手册](https://kingdol666.github.io/AgentWorkShop/cli/) | [`docs/cli.md`](./docs/cli.md) | 全部 15 个 `aw` 指令、全局选项、退出码、双模式路径模型、指令注册系统、维护者发布指引 |
100
100
  | **AML** | [AML 指南](https://kingdol666.github.io/AgentWorkShop/guide/aml) | [`docs/aml.md`](./docs/aml.md) | 自动建模实验室:数据集构建、作业编排、模型注册表、晋级门禁、Agent 工具 |
101
101
  | **TUI** | — | [`docs/tui.md`](./docs/tui.md) · [`tui/README.md`](./tui/README.md) | 终端工作台:频道、Agent、任务、实时监控、HITL 应答 |
102
102
  | **多 Harness 架构** | — | [`docs/multi-harness-architecture.md`](./docs/multi-harness-architecture.md) | 引擎分类、归一化会话契约、供应商/模型目录、失败模式 |
@@ -178,10 +178,14 @@ AgentWorkShop 起家于**多智能体软件工作坊**——Channel 内的编码
178
178
  | **全操作审计日志** | 用户 / Agent / 系统 的每个动作都落进同一份可检索日志;操作者归属「Channel名/成员名」,与用户和系统天然区分。经 WS 实时推送。 |
179
179
  | **团队级插件开关** | 每个团队(Channel)持有**独立插件开关组**(`channel_plugins`):被关闭插件的工具不注入该团队 Agent。插件本体经 `aw plugin` 与 `/plugins` 页热管理。 |
180
180
  | **插件扩展 API** | `plugins/<name>/` 下的一个自包含目录**同时增强两半**:`index.mjs`(服务端:钩子、路由、Agent 工具、**数采读驱动 / DCW 写驱动**/帧处理器/节点模板、配置分组、KV、定时器)与 `client.mjs`(浏览器:注入具名插槽的面板、i18n、设置 UI)。三种作用域——`builtin`(随包发布)> `project`(检出)> `user`(`~/.AgentWorkShop`)——启停**与代码修改**均有约 1 秒热重载;停用插件的驱动随热重载立即摘除。内置示例 **serial-bridge**(串口通信:读/写驱动 + 串口探针 API + 前端面板)。完整契约见 [`docs/plugins.md`](./docs/plugins.md)。 |
181
- | **AML —— 自动建模实验室** | 数据集构建 → 训练作业 → 排行榜 → 晋级门禁 → 模型引用,全部可在 `/aml` 页驱动,也可由 Agent 通过 10 个 `aml_*` 工具驱动。Python 运行时由 `uv` 引导至 `./aml` 资产根;产物与元数据都留在配置根下。 |
182
- | **AML 混合孪生 × MPC** | 灰箱物理主干 + 有界 PyTorch 残差;`TwinSnapshot` / `VirtualTrial` / `RecommendationCertificate` 配 UQ/OOD 筛查与全轨迹门禁;`hybrid_twin` profile 会额外注入 6 个工具(`twin_*`、`mpc_optimize`)。试验按设计保持虚拟(`candidateExecuted=false`),证书签发前只做推荐、不落真实写入。 |
181
+ | **AML —— 自动建模实验室** | 数据集构建 → 训练作业 → 排行榜 → 晋级门禁 → 模型引用,全部可在 `/aml` 页驱动,也可由 Agent 通过 **14 个 `aml_*` 工具**驱动。Python 运行时由 `uv` 引导至配置根内的 `aml/` 资产根;产物与元数据都留在配置根下。模型带人读身份——label(产线 · 配方 · 目标)、description 与产线/目标 id——可用 `aml_model_find` 按场景选型。 |
182
+ | **AML 混合孪生 × MPC** | 灰箱物理主干 + 有界 PyTorch 残差;`TwinSnapshot` / `VirtualTrial` / `RecommendationCertificate` 配 UQ/OOD 筛查与全轨迹门禁;`hybrid_twin` profile 会额外注入 **12 个 profile 工具**(场景发现/编译/冻结、物理 spec 起草/校验/编译、快照、试验、MPC、门禁、Provider 目录)与通用工具 `twin_calibration_request`。试验按设计保持虚拟(`candidateExecuted=false`),证书签发前只做推荐、不落真实写入。 |
183
+ | **双模式优化闭环** | 专属频道模板把闭环**结构性拆开**:*aml-training* 频道拿建模面(数据集、作业、场景编译、物理 spec、建模任务——无产线写入、无 MPC),*aml-optimization* 频道拿执行面(快照、试验、门禁、MPC、贝叶斯寻优 `twin_bayes_optimize`、受治理微写 `optimization_explore`)——边训边优在结构上不可能。**探索**模式走治理链写入并做响应回读配对(每笔写入落 `optimization_explorations` 台账);**生产**模式要求绑定过门禁的模型(`aml` 模式,实例化时给 `boundModelId`)。 |
183
184
  | **运行时可观测** | `GET /api/system/monitor` 把 Agent 团队内部暴露成数字:根队列深度、看门狗介入次数、Harness 会话复用、记忆 outbox 积压——每项都有对应的文档化回退开关,新机制可以不重新部署就关掉。 |
184
- | **全量配置驱动运行时** | 全部运行旋钮(记忆预算、上下文压缩、回退护栏、保留策略、备份、日志级别…)在设置描述符注册表声明一次,优先级 **config.yml < runtime-settings < env**——**111 个设置项、16 组**(32 live / 79 restart),代码零硬编码默认。 |
185
+ | **产线操作单页(`/operations`)** | 一页看全对产线的每一次触碰:实时操作流水(REST 快照 + WS 推流)把写控、数采、建模、配方、回退、报警、产线、人工、系统动作归入**九类分类**,写控行渲染结构化 **前值 → 后值 diff 徽章**(失败标红),并直接从事件流推断**闭环阶段**(监视 → 探索·小步 → 推荐搜索 → 影子验证 → 生产)。同一数据面也供工作台控制台的「产线作业」面板使用。 |
186
+ | **外部 MCP 网关** | `aw mcp` 启动零依赖的 **stdio MCP 服务**(38 个工具),自动发现运行中的实例(环境变量 → 锁文件 → 配置文件),把产线、配方(含 mark-good)、受治理 DCW 写入、工艺参数语义映射、数采查询、频道、团队供给、模型晋升、判卷/回退与插件管理暴露给任意 MCP 客户端——受 `mcp.enabled` 运行时设置门控,附 `--doctor` 与 `--print-config` 辅助指令。 |
187
+ | **全量配置驱动运行时** | 全部运行旋钮(记忆预算、上下文压缩、回退护栏、保留策略、备份、日志级别、系统时区、MCP 开关…)在设置描述符注册表声明一次,优先级 **config.yml < runtime-settings < env**——**113 个设置项、18 组**(34 live / 79 restart),代码零硬编码默认。 |
188
+ | **可配置系统时区** | 一个 `time.timeZone` 设置项(IANA 时区,live 热生效)统一驱动人读时间——日志、聊天、审计、Agent 记录与定时任务;机器时间轴(数采样本、`timestamptz`)仍保存绝对时间。 |
185
189
  | **可配置节拍** | 采样与查询的默认值/下限全部是 **live 设置**(`daq.sampling.*`、`daq.query.*`):热重载、create/patch 时钳制,Agent 工具描述实时携带当前值。 |
186
190
 
187
191
  #### 数字孪生
@@ -258,7 +262,7 @@ AgentWorkShop 起家于**多智能体软件工作坊**——Channel 内的编码
258
262
  <td width="50%"><img src="https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/shot-monitor.png" alt="运行时监控" width="100%" /><br/><sub><b>运行时监控。</b>每条已接线频道、成员数、依赖环与归属用户。</sub></td>
259
263
  </tr>
260
264
  <tr>
261
- <td><img src="https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/shot-settings.png" alt="系统设置" width="100%" /><br/><sub><b>系统设置。</b>16 组 111 个设置项,由描述符驱动——CLI 读的是同一份注册表。</sub></td>
265
+ <td><img src="https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/shot-settings.png" alt="系统设置" width="100%" /><br/><sub><b>系统设置。</b>18 组 113 个设置项,由描述符驱动——CLI 读的是同一份注册表。</sub></td>
262
266
  <td><img src="https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/shot-plugins.png" alt="插件管理" width="100%" /><br/><sub><b>插件管理。</b>三种作用域、改代码即热重载、按团队开关。</sub></td>
263
267
  </tr>
264
268
  </table>
@@ -382,7 +386,7 @@ aw update --check # 只报告,不安装
382
386
  npm install -g agentworkshop@latest # 手动等效
383
387
  ```
384
388
 
385
- 版本遵循 semver。每次 `aw start` 都会校验配置根,并把 `home` 之前的旧版 `data/` 布局迁移进来(以最新文件为准),因此数据可以跨版本存活。SQLite schema 迁移在服务端启动时执行。当前版本:**v0.7.49**——见[版本发布](https://github.com/kingdol666/AgentWorkShop/releases)。
389
+ 版本遵循 semver。每次 `aw start` 都会校验配置根,并把 `home` 之前的旧版 `data/` 布局迁移进来(以最新文件为准),因此数据可以跨版本存活。SQLite schema 迁移在服务端启动时执行。当前版本:**v0.7.50**——见[版本发布](https://github.com/kingdol666/AgentWorkShop/releases)。
386
390
 
387
391
  ### 第一次「Agent × 产线」会话(约 2 分钟)
388
392
 
@@ -431,6 +435,7 @@ aw config set daq.query.minBucketMs 500 # 查询下限(samples/产
431
435
  | `aw stop` | 依单实例锁终止运行中的 aw 服务实例 |
432
436
  | `aw config list · get · set · unset · reset` | 读写运行时设置(schema 校验 + 原子写盘) |
433
437
  | `aw plugin list · create · enable · disable` | 跨三种作用域管理插件:查看、脚手架(默认 project 作用域;`--global` 为 user 作用域)、启停(写状态文件,运行中的服务约 1 秒热重载) |
438
+ | `aw mcp` | 工业 MCP stdio 服务(38 个工具,覆盖平台 REST:产线、配方、DCW 写入、参数映射、数采、频道、团队、模型晋升、插件)——自动发现运行实例;`--doctor` 一次讲清发现/健康/鉴权,`--print-config` 直出可粘贴的 MCP 客户端配置 |
434
439
  | `aw home` | 查看/初始化配置根 `.AgentWorkShop` |
435
440
  | `aw init <dir>` | 脚手架一个可运行的新项目(含完整配置系统与 CLI) |
436
441
  | `aw register <路径\|URL\|npm:包名>` | 注册一条新指令——项目级或 `--global` 用户级 |
@@ -491,10 +496,14 @@ export async function run(argv, ctx) {
491
496
 
492
497
  这是闭环里的建模半边:`/aml` 用已打标的遥测构建**数据集**,把**训练作业**提交到 `uv` 托管的 Python 运行时,在**排行榜**上给各次运行排名,并且只有跨过配置的**门禁**(NRMSE、rollout NRMSE、验证/测试差距、最小行数与运行次数)才允许晋级。晋级后的模型按 id 引用,因此 MPC 或影子孪生控制器消费的是有版本号的产物,而不是含糊的「最新」。
493
498
 
494
- - Agent 通过 10 个工具做同样的事(`aml_dataset_build`、`aml_job_submit`、`aml_job_status`、`aml_leaderboard`、`aml_model_promote`……)——提交一个目标,让团队去训练并汇报。
499
+ - Agent 通过 14 个工具做同样的事(`aml_dataset_build`、`aml_job_submit`、`aml_job_status`、`aml_leaderboard`、`aml_model_promote`、`aml_model_find`、`aml_training_plan_*`……)——提交一个目标,让团队去训练并汇报。
495
500
  - Python 运行时由 `uv` 自行引导进配置根内的 `./aml` 资产根;数据集/产物/元数据路径、磁盘配额、作业超时、并发与保留策略全部是**设置项**(`aml` 组共 16 项),而不是常量。
496
501
  - 治理默认保守:跨配方数据集除非显式允许否则拒绝,每个作业都有归属。
497
- - **混合孪生 × MPC 内核**:AML 同时承载**混合孪生**平面——`SceneContract` / `PhysicsModelManifest` / `TwinSnapshot` / `ObjectiveProfile` / `VirtualTrial` / `RecommendationCertificate`,底座是带**有界 PyTorch 残差**的灰箱物理主干,外加 UQ/OOD 筛查与全轨迹硬约束门禁。频道通过 `hybrid_twin` profile 显式启用,启用后会注入 6 个专属工具(`twin_scene_read`、`twin_snapshot_create`、`twin_trial_run`、`mpc_optimize`、`twin_gate_evaluate`、`twin_calibration_request`);试验按设计就是**虚拟**的(`candidateExecuted=false`),只有门禁与收益同时通过才签发推荐证书。服务端策略两档:`safe_small_step`(数据不足) 与 `precise_search`(模型过门禁)。计划与验收记录见 [`docs/aml-hybrid-twin-mpc-integration-plan.md`](./docs/aml-hybrid-twin-mpc-integration-plan.md)、[`docs/aml-hybrid-twin-implementation-acceptance.md`](./docs/aml-hybrid-twin-implementation-acceptance.md)。
502
+ - **混合孪生 × MPC 内核**:AML 同时承载**混合孪生**平面——`SceneContract` / `PhysicsModelManifest` / `TwinSnapshot` / `ObjectiveProfile` / `VirtualTrial` / `RecommendationCertificate`,底座是带**有界 PyTorch 残差**的灰箱物理主干,外加 UQ/OOD 筛查与全轨迹硬约束门禁。频道通过 `hybrid_twin` profile 显式启用,启用后会注入 12 个 profile 专属工具(`twin_provider_catalog`、`twin_scene_discover/compile/freeze`、`twin_physics_spec_draft/validate/compile`、`twin_scene_read`、`twin_snapshot_create`、`twin_trial_run`、`mpc_optimize`、`twin_gate_evaluate`)与通用工具 `twin_calibration_request`;试验按设计就是**虚拟**的(`candidateExecuted=false`),只有门禁与收益同时通过才签发推荐证书。服务端策略两档:`safe_small_step`(数据不足) 与 `precise_search`(模型过门禁)。计划与验收记录见 [`docs/aml-hybrid-twin-mpc-integration-plan.md`](./docs/aml-hybrid-twin-mpc-integration-plan.md)、[`docs/aml-hybrid-twin-implementation-acceptance.md`](./docs/aml-hybrid-twin-implementation-acceptance.md)。
503
+ - **任意场景建模闭环**:闭环不绑定内置场景。绑定节点 → `twin_scene_discover` 带证据推断 control/state/disturbance/target/guard 语义 → `twin_scene_compile` 生成 `SceneContract` 草稿 → 您确认 → `twin_scene_freeze` 冻结(版本不可覆盖)→ `twin_physics_spec_draft` 起草骨架 PhysicsSpec(每个状态一条一阶弛豫方程,τ/增益为带先验盒的可校准参数)供您润色 → 校验/编译(白名单 AST,禁任意代码)→ `aml_job_submit { job_kind: 'hybrid_residual' }` **可不带代码**:内置参考训练器先做物理参数校准(stage A)、再拟合 3 成员有界残差集成(stage B)、最后报告 conformal q90 覆盖率(stage D)——校准后的 spec 回写,评估/预测/试验三侧同源。
504
+ - **模型驱动孪生与持续校准**:`twin_trial_run` / `mpc_optimize` 可传 `model_id`——rollout 由训练出的 hybrid 模型驱动(校准后物理主干 + 残差集成 ONNX,`ModelBackedHybridProvider`),UQ 覆盖率与成员分歧来自训练工件;模型数据集与场景的产线/产品/配方不一致直接拒绝(`TWIN_MODEL_SCENE_MISMATCH`)。持续校准请求由 60s 定时 worker 消费,自动提交 `hybrid_residual` 重训**候选**;晋升仍走 HITL + Twin Gate(`AML_TWIN_WORKER_DISABLED=1` 可整体关闭)。
505
+ - **双模式优化闭环**:随包附带两个频道模板——`chtpl-aml-training-default`(建模面:22 个工具,无产线写入、无 MPC)与 `chtpl-aml-optimization-default`(执行面:快照/试验/门禁/MPC/贝叶斯寻优,外加 `optimization_explore`——受治理微写,每笔设定值与响应回读配对落 `optimization_explorations` 台账)。两面按频道互斥注入;优化频道实例化时可选**探索**模式(治理小步,无需模型)或 **aml** 模式(必须给 `boundModelId`——过门禁的模型先绑定,执行面才解锁)。
506
+ - **孪生 Provider 插件 SDK(热加载)**:工业场景的物理主干 / 场景包 / 目标 / 求解器经 `ctx.twin` 注册进 **Twin Provider Registry**(`registerPhysicsProvider` / `registerScenePack` / `registerObjectiveProfile` / `registerTrainingAdapter` / `registerSolverAdapter`,另有 `listProviders` / `getProviderHealth` / `resolveProvider` / `validateProvider` / `retireProvider` / `isRegistryAvailable`)。孪生工具按 `SceneContract.physicsProfileId` 解析 Provider(解析不到回退内置 `twin-injection-default`),**换场景不改工具与频道**;热重载按 **generation** 装载新代、排空旧代,试验与 MPC 持租约 ⇒ 在飞工作不被作废,`retireProvider` 等引用归零才下线。系统自带注塑 Provider 走的正是这套外部契约(`server/plugins-builtin/twin-injection-default/`),装法与其它插件同址、停用或热重载无需重启。清单字段与可运行示例见 [`docs/plugins.md`](./docs/plugins.md)「混合孪生 Provider 插件」,SDK 面见 [`docs/sdk.md`](./docs/sdk.md) §4.10。
498
507
 
499
508
  ---
500
509
 
@@ -596,12 +605,12 @@ SUBMITTED ─▶ ASSIGNED ─▶ WORKING ─▶ WAITING ─▶ COMPLETED
596
605
  | 真引擎协作 | 任务流真跑 **PASS**、`e2e-omp-workspace` **13 / 13**、群聊全真 **PASS**、多用户 HIL **PASS**(2026-09-24) | 真实 `omp` lead + worker:分解/派发/进度/成果/workspace 文件读取与卸载;多用户 HITL 可见性;多引擎团队 14/18(omp 与 dsh 全绿) | `npx tsx scripts/e2e-agentteam-task-flow-real.ts` · `npx tsx scripts/e2e-omp-workspace.ts` |
597
606
  | 前端验收 | 响应式门禁 **16 / 16** 页、抽屉交互 **10 / 10**(2026-09-24,真实 Chromium) | 全部产品页(含 3D 小镇)在门禁阈值下渲染通过;抽屉开合、滚动锁、路由跳转、零 pageerror | `node scripts/ui/verify-responsive.mjs --routes all` · `node scripts/ui/verify-nav.mjs` |
598
607
  | `_aw0746-stage12.mjs` | **10 / 0**(2026-09-25,全局安装的 **v0.7.49 打包系统**) | 健康门(version=0.7.49)→ 管理员登录/角色面 → 创建 Channel(真实 `omp` lead)→ 开群聊 → **真实 omp 群聊回复** → 系统监控可见 omp 子进程 | `AW_BASE=<base> node scripts/_aw0746-stage12.mjs` |
599
- | `_aw0746-stage34.mjs` | **11 / 0**(2026-09-25,v0.7.49 打包系统 + PLC 模拟器) | 模拟器建线(11 数控 + 14 数采)→ 产品/配方三元组 → 开跑后**样本逐条带 recipe_id/run_id** → `daq_query` **默认只取当前活动批次**(`scope=all` 可放开,实测 1 vs 4)→ 实例化 Hybrid Twin 模板(lead + 3 worker,注入孪生 6 件套 / 总 57 工具) | `AW_BASE=<base> node scripts/_aw0746-stage34.mjs` |
608
+ | `_aw0746-stage34.mjs` | **13 / 0**(2026-09-25,v0.7.49 打包系统 + PLC 模拟器) | 模拟器建线(11 数控 + 14 数采)→ 产品/配方三元组 → 开跑后**样本逐条带 recipe_id/run_id** → `daq_query` **默认只取当前活动批次**(`scope=all` 可放开,实测 1 vs 4)→ 实例化 Hybrid Twin 模板(lead + 3 worker,注入孪生 6 件套 / 总 57 工具) | `AW_BASE=<base> node scripts/_aw0746-stage34.mjs` |
600
609
  | `_aw0746-stage6b-train-sweep.mjs` | 门禁**全绿**(2026-09-25,v0.7.46 打包系统,真实 torch 训练) | 1 s 拍格数据集(**1724 行 / 10 批次**)→ 内联 code 作业真实训练 → G1 单步 **0.0992**(≤0.10)/ G2 滚动 0.1092(≤0.25)/ G3 泛化 14.6%(≤20%)/ G4 行数与批次 → 模型注册并**晋升 production** | `AW_BASE=<base> AW_DATASET_ID=<ds> node scripts/_aw0746-stage6b-train-sweep.mjs` |
601
610
  | `_aw0746-stage7-twin.mjs` | **17 / 0**(2026-09-25,v0.7.49 打包系统,真实 DAQ + 真实模型) | 真实样本 → TwinSnapshot `fresh=true` → 65 组真实 VirtualTrial(12 条安全候选,`candidateExecuted=false`)→ 12 项推荐门禁 **write_eligible** → 门禁结论回写模型 `twinEligibility` → `mpc_optimize` 升档 **precise_search** → 全程 **0 DCW 写入** | `AW_BASE=<base> AW_REQUIRE_MODEL=1 node scripts/_aw0746-stage7-twin.mjs` |
602
611
  | `_aw0746-stage6c-jobsmoke.mjs` | **5 / 0**(2026-09-25,v0.7.49 打包系统) | AML 作业链路:内联 `code` 被接受(不再要求 `workspace/train.py`)→ 作业到终态 → 训练日志/ONNX 痕迹 → 实验与逐项门禁落库 | `AW_BASE=<base> node scripts/_aw0746-stage6c-jobsmoke.mjs` |
603
612
  | `_aw0748-failclosed-probe.mjs` | **7 / 0**(2026-09-25,v0.7.49 打包系统) | 硬约束**失败关闭**回归:auto_daq 按真实绑定取样建快照 → 可映射约束 `weight` 正常评估 → 不可映射的 `part_weight` 判不通过并给出明细(v0.7.47 会假通过)→ 空轨迹同样判不通过 | `AW_BASE=<base> node scripts/_aw0748-failclosed-probe.mjs` |
604
- | `_aw0748-mock-closedloop.mjs` | **11 / 0**(2026-09-25,v0.7.49 打包系统,进程内 `mock`,零额度) | 调度闭环回归:创建 mock Channel → 根任务被真实派发并收口 → `[mock:complex]` 强制委派出子任务 → 父任务汇总收口 → **第二个/第三个根任务同样被派发**(修复前:lead 空闲卸载后 `scheduler` 置空,后续根任务只落库、一直 SUBMITTED 直到 `ROOT_TIMEOUT`)→ mock 无 host tool 通道时工具桥显式拒绝 | `AW_BASE=<base> node scripts/_aw0748-mock-closedloop.mjs` |
613
+ | `_aw0748-mock-closedloop.mjs` | **13 / 0**(2026-09-25,v0.7.49 打包系统,进程内 `mock`,零额度) | 调度闭环回归:创建 mock Channel → 根任务被真实派发并收口 → `[mock:complex]` 强制委派出子任务 → 父任务汇总收口 → mock worker 就位后 [mock:complex] 委派子任务并汇总 → **第二个/第三个根任务同样被派发**(修复前:lead 空闲卸载后 `scheduler` 置空,后续根任务只落库、一直 SUBMITTED 直到 `ROOT_TIMEOUT`)→ mock 无 host tool 通道时工具桥显式拒绝 | `AW_BASE=<base> node scripts/_aw0748-mock-closedloop.mjs` |
605
614
  | 工业基准——integrated | **83 / 83 检查,硬门禁绿**(2026-09-21) | 五协议五产线基准:连通性、采样入 Timescale、受控下发、治理、Agent 闭环、工艺参数语义层 | `node bench/pipeline.mjs --profile integrated` |
606
615
  | 多场景闭环 | 4 场景 · 闭环达标(2026-09-21) | 注塑克重窗口寻优 · A²/O 污水排放达标 + 能耗最小化 · 连续退火质量窗与产能权衡 · BOPET 产线任务 | `node bench/scenarios.mjs --scenarios injection,wwtp,anneal` |
607
616
  | 产线权限 / 审计负向 | 21 / 21 + 9 / 9(2026-09-12) | 三态产线授权 + 人类可读 403、绑定主体校验、授权撤销收敛、无 token WS 零遥测 | `node scripts/_dbg-perms-e2e.mjs <base> <adminPass>` · `node scripts/_dbg-audit-neg-e2e.mjs <base> <adminPass>` |
@@ -622,7 +631,7 @@ AgentWorkShop/
622
631
  │ ├── pages/ # / · /workshop · /workshop/agents · /workshop/teams
623
632
  │ │ # /workshop/channel-templates · /workshop/schedules · /workshop/w/:id
624
633
  │ │ # /town · /daq · /daq/:id · /dcw · /dcw/:id
625
- │ │ # /aml · /monitor · /logs · /permissions
634
+ │ │ # /aml · /operations · /monitor · /logs · /permissions
626
635
  │ │ # /plugins · /users · /tokens · /settings
627
636
  │ ├── components/workshop/ # 时间线 · 泳道 · 任务板 · 记忆面板 · 3D 小镇
628
637
  │ └── stores/composables/ # Pinia + AEP 客户端
@@ -633,13 +642,14 @@ AgentWorkShop/
633
642
  │ │ ├── agents/ # AgentInterface:14 个引擎(+ 工业工具)
634
643
  │ │ ├── daq/ dcw/ aml/ # 边缘运行时 · 驱动 · 队列 · 存储 · 建模实验室
635
644
  │ │ └── db/ # node:sqlite 仓储层
636
- │ ├── mcp/ # MCP 服务(25 个工具)
637
- │ ├── plugins-builtin/ # 随包发布的插件(diag-bridge · rag-bridge · serial-bridge)
645
+ │ ├── mcp/ # MCP 服务(25 个工具,进程内 workshop 面)
646
+ │ ├── plugins-builtin/ # 随包发布的插件(serial-bridge · rag-bridge · diag-bridge · twin-injection-default)
638
647
  │ └── plugins/ # 运行时装配(单例)
648
+ ├── mcp/ # aw mcp —— 零依赖 stdio MCP 网关(38 个工具,实例自动发现)
639
649
  ├── sdk/ # agentworkshop/sdk——插件上下文、钩子总线、REST 客户端、浏览器 SDK
640
650
  ├── tui/ # 终端工作台(aw tui)
641
651
  ├── shared/
642
- │ └── config/ # schema.json(111 个设置描述符)+ 引擎(合并/校验/持久化)+ 路径解析器
652
+ │ └── config/ # schema.json(113 个设置描述符)+ 引擎(合并/校验/持久化)+ 路径解析器
643
653
  ├── config.yml # 工厂默认值(构建/启动时读取;版本号来自 package.json)
644
654
  ├── .AgentWorkShop/ # 检出内的配置根——prompts(版本化)+ 运行时覆盖 · 数据 · 日志 · 指令(git 忽略)
645
655
  ├── data/ # 迁移前的旧版位置(自动迁移进配置根)
@@ -719,7 +729,7 @@ cd docs/site && npx vitepress build # 生产构建 → .vitepress/dist
719
729
  | 插件系统 v2:浏览器面板注入、插件级 settings/groups、插件 i18n、宿主运行时服务(`ctx.services`/`ctx.daq`/`ctx.omp`) | 已交付 |
720
730
  | Instrument Glass 材质层(v0.7.36):三级半透明材质、通透感、高光边缘、弹簧动效、逐页路由转场 | 已交付 |
721
731
  | 实时管线优化:数采帧索引 O(n²)→O(n)、逐 Agent 增量事件索引、图表原地更新、按大小感知的 JSON 持久化 | 已交付 |
722
- | AML 自动建模实验室:数据集构建 · 作业编排(uv 托管 Python)· 排行榜 · 晋级门禁 · 10 个 Agent 工具 | 已交付 |
732
+ | AML 自动建模实验室:数据集构建 · 作业编排(uv 托管 Python)· 排行榜 · 晋级门禁 · 14 个 Agent 工具 | 已交付 |
723
733
  | Claude Agent SDK 适配器——常驻会话、同轮 steer 与 `canUseTool` HITL | 已交付 |
724
734
  | 工艺参数语义映射:`param_control`/`param_read` 按工艺参数寻址、四层写入限界、调控闭环(`dcw_judge`/`dcw_rollback`) | 已交付 |
725
735
  | Channel 群聊:请求升级为可追踪作业;原生 HITL(`omp` ask → 审批 → 回执) | 已交付 |
@@ -730,6 +740,12 @@ cd docs/site && npx vitepress build # 生产构建 → .vitepress/dist
730
740
  | 运行时可观测:`GET /api/system/monitor` 团队指标,每项带文档化回滚开关 | 已交付 |
731
741
  | 工业基准:integrated 档(83 项检查、硬门禁)+ 多场景闭环(注塑 / 污水 / 退火 / BOPET)+ 质量目标 optloop 寻优 | 已交付 |
732
742
  | 生产构建全覆盖验收波次矩阵(约 1100+ 条真实断言,2026-09-24) | 已交付 |
743
+ | 孪生 Provider 插件 SDK:物理/场景/目标/训练/求解器 Provider 经 `ctx.twin` 热加载注册,按 generation 装载 + 租约排空,内置 Provider 走同一外部契约 | 已交付 |
744
+ | 任意场景混合孪生建模闭环:场景发现 → 编译 → 冻结 → 物理 spec 起草/校验/编译 → 参考训练器作业(物理校准 + 残差集成 + conformal UQ)、模型驱动试验、持续校准 worker | 已交付 |
745
+ | 双模式优化闭环:`aml-training` / `aml-optimization` 专属频道模板、互斥工具面、探索 ↔ 生产双模式、带回读配对的治理微写 | 已交付 |
746
+ | 产线操作流水:`/operations` 单页 + 工作台控制台面板,九类操作时间线、结构化写控 diff、闭环阶段推断 | 已交付 |
747
+ | 外部 MCP 网关:`aw mcp` stdio 服务(38 个工具)、实例自动发现、`mcp.enabled` 运行时门控 | 已交付 |
748
+ | 可配置系统时区(`time.timeZone`,live 热生效)+ 配方参数级单步限幅 `stepLimit` + 配方 `description` 元字段 | 已交付 |
733
749
  | 生产硬化:TLS、MQTT 鉴权、OPC UA 签名+加密缺省、结构化审计日志 | 规划中 |
734
750
  | 边缘部署形态:独立 edge-agent + 中心 broker | 规划中 |
735
751
  | 报警外送(邮件/webhook)+ 确认工作流 | 规划中 |
package/README.md CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  **[简体中文](./README-zh.md)** · **[Documentation](https://kingdol666.github.io/AgentWorkShop)** · **[Releases](https://github.com/kingdol666/AgentWorkShop/releases)** · **[Changelog](./changelog.md)** · **[Plugin API](./docs/plugins.md)** · **[SDK](./docs/sdk.md)**
30
30
 
31
- <sub><b>v0.7.49</b> · 14 engines · 6 field protocols (5 built-in + serial plugin) · 111 runtime settings · bilingual docs (简体中文 / English)</sub>
31
+ <sub><b>v0.7.50</b> · 14 engines · 6 field protocols (5 built-in + serial plugin) · 113 runtime settings · bilingual docs (简体中文 / English)</sub>
32
32
 
33
33
  <br />
34
34
 
@@ -79,7 +79,7 @@ Supervisory layer, second-level soft real-time<br/>
79
79
  7-state task machine · root queue + lease fencing<br/>
80
80
  Group chat jobs · scheduled tasks · HITL<br/>
81
81
  FTS5 + vector memory · hot-reloadable plugins<br/>
82
- SDK · CLI · TUI · ~1100+ acceptance assertions
82
+ SDK · CLI · TUI · external MCP · ~1100+ acceptance assertions
83
83
 
84
84
  </td>
85
85
  </tr>
@@ -96,7 +96,7 @@ Docs are bilingual — the [VitePress site](https://kingdol666.github.io/AgentWo
96
96
  | **Getting started** | [Guide](https://kingdol666.github.io/AgentWorkShop/guide/getting-started) | `docs/site/guide/` | install → first run → first agent × line session, configuration, DAQ protocols, DCW read/write, HITL, recipe versioning, multi-harness teams, line permissions, AML |
97
97
  | **Plugin development** | [Plugin guide](https://kingdol666.github.io/AgentWorkShop/plugins/) | [`docs/plugins.md`](./docs/plugins.md) | the full extension contract: three scopes, `index.mjs` manifest, `ctx` server/browser surface, `settings`/`groups` declarations, lifecycle events, i18n, panels, team-scoped switches, a real example |
98
98
  | **SDK** | [SDK guide](https://kingdol666.github.io/AgentWorkShop/sdk/) | [`docs/sdk.md`](./docs/sdk.md) | `agentworkshop/sdk` as a programming client (platform REST client with envelope handling) and as the plugin extension base; TypeScript types; browser-side SDK |
99
- | **CLI** | [CLI manual](https://kingdol666.github.io/AgentWorkShop/cli/) | [`docs/cli.md`](./docs/cli.md) | all 14 `aw` commands, global options, exit codes, dual-mode path model, the command-registration system, maintainer publish guide |
99
+ | **CLI** | [CLI manual](https://kingdol666.github.io/AgentWorkShop/cli/) | [`docs/cli.md`](./docs/cli.md) | all 15 `aw` commands, global options, exit codes, dual-mode path model, the command-registration system, maintainer publish guide |
100
100
  | **AML** | [AML guide](https://kingdol666.github.io/AgentWorkShop/guide/aml) | [`docs/aml.md`](./docs/aml.md) | auto-modeling lab: dataset build, job orchestration, model registry, promotion gates, agent tools |
101
101
  | **TUI** | — | [`docs/tui.md`](./docs/tui.md) · [`tui/README.md`](./tui/README.md) | terminal workbench: channels, agents, tasks, live monitor, HITL answering |
102
102
  | **Multi-harness architecture** | — | [`docs/multi-harness-architecture.md`](./docs/multi-harness-architecture.md) | engine taxonomy, normalized session contract, provider/model catalog, failure modes |
@@ -179,10 +179,14 @@ Recorded against a running instance: real DAQ history, real write control, real
179
179
  | **Full-operation audit log** | Every user / agent / system action lands in one queryable log; operators are attributed to "Channel/Member", distinct from users and the system. Streamed live over WS. |
180
180
  | **Team-scoped plugin switches** | Each team (channel) keeps an **independent plugin switch set** (`channel_plugins`): a disabled plugin's tools are not injected into that team's agents. Plugins themselves are hot-managed via `aw plugin` and the `/plugins` page. |
181
181
  | **Plugin extension API** | A self-contained directory under `plugins/<name>/` enhances **both halves at once**: `index.mjs` (server: hooks, routes, agent tools, **DAQ read drivers / DCW write drivers**, frame processors, node templates, config groups, KV, timers) and `client.mjs` (browser: panels injected into named slots, i18n, settings UI). Three scopes — `builtin` (shipped) > `project` (checkout) > `user` (`~/.AgentWorkShop`) — with ~1 s hot reload on enable/disable **and on code edits**; a disabled plugin's drivers are removed on hot reload immediately. Built-in example: **serial-bridge** (serial communication: read/write drivers, serial probe API, frontend panel). Full contract in [`docs/plugins.md`](./docs/plugins.md). |
182
- | **AML — auto-modeling lab** | Dataset build → training job → leaderboard → promotion gates → model reference, all driven from `/aml` or by agents through 10 `aml_*` tools. Python runtime bootstrapped with `uv` into an `./aml` asset root; artifacts and metadata stay under the config root. |
183
- | **AML hybrid twin × MPC** | Grey-box physics core + bounded PyTorch residual, `TwinSnapshot` / `VirtualTrial` / `RecommendationCertificate` with UQ/OOD screening and all-trajectory gates; the `hybrid_twin` channel profile injects 6 extra tools (`twin_*`, `mpc_optimize`). Trials stay virtual (`candidateExecuted=false`) and writes are recommendation-only until a certificate is certified. |
182
+ | **AML — auto-modeling lab** | Dataset build → training job → leaderboard → promotion gates → model reference, all driven from `/aml` or by agents through **14 `aml_*` tools**. Python runtime bootstrapped with `uv` into an `aml/` asset root inside the config root; artifacts and metadata stay under the config root. Models carry a human-readable identity — label (line · recipe · objective), description and line/objective ids — selectable via `aml_model_find`. |
183
+ | **AML hybrid twin × MPC** | Grey-box physics core + bounded PyTorch residual, `TwinSnapshot` / `VirtualTrial` / `RecommendationCertificate` with UQ/OOD screening and all-trajectory gates; the `hybrid_twin` channel profile injects **12 profile tools** (scene discovery/compile/freeze, physics-spec draft/validate/compile, snapshot, trial, MPC, gate, provider catalog) plus the general `twin_calibration_request`. Trials stay virtual (`candidateExecuted=false`) and writes are recommendation-only until a certificate is certified. |
184
+ | **Two-mode optimization loop** | Dedicated channel templates split the loop **structurally**: an *aml-training* channel gets the modeling face (datasets, jobs, scene compile, physics specs, training plans — no plant writes, no MPC) and an *aml-optimization* channel gets the acting face (snapshots, trials, gate, MPC, Bayesian search `twin_bayes_optimize`, governed micro-writes `optimization_explore`) — training-while-optimizing is impossible by construction. **Exploration** mode writes through the governed chain with response read-back pairing (every write lands in an `optimization_explorations` ledger); **production** mode requires a bound model that cleared the twin gates (`aml` mode, `boundModelId` at instantiate time). |
184
185
  | **Runtime observability** | `GET /api/system/monitor` exposes the agent-team internals as numbers: root queue depth, watchdog interventions, harness session reuse, pending memory outbox — each guarded by a documented rollback switch, so new machinery can be turned off without a redeploy. |
185
- | **Fully config-driven runtime** | Every runtime knob (memory budgets, compaction, rollback guardrails, retention, backups, log level…) is declared once in the settings descriptor registry with precedence **config.yml < runtime-settings < env** — **111 settings across 16 groups** (32 live / 79 restart), no hardcoded defaults in code. |
186
+ | **Line operations feed (`/operations`)** | One page for every touch on the plant: a live operation feed (REST snapshot + WS stream) classifies writes, DAQ, AML, recipe, rollback, alarm, line, manual and system actions into **nine categories**, renders structured **before → after diff badges** on write rows (failures marked red), and infers the **closed-loop phase** (monitor → exploration · small-step → recommendation search → shadow verification → production) straight from the event stream. The same feed powers a line-operations panel inside the workshop console. |
187
+ | **External MCP gateway** | `aw mcp` starts a zero-dependency **stdio MCP server** (38 tools) that discovers a running instance automatically (env → lock file → config file) and exposes lines, recipes (incl. mark-good), governed DCW writes, semantic parameter mapping, DAQ queries, channels, team provisioning, model promotion, judge/rollback and plugin management to any MCP client — gated by the `mcp.enabled` runtime setting, with `--doctor` and `--print-config` helpers. |
188
+ | **Fully config-driven runtime** | Every runtime knob (memory budgets, compaction, rollback guardrails, retention, backups, log level, system timezone, MCP gate…) is declared once in the settings descriptor registry with precedence **config.yml < runtime-settings < env** — **113 settings across 18 groups** (34 live / 79 restart), no hardcoded defaults in code. |
189
+ | **Configurable system timezone** | One `time.timeZone` setting (IANA id, live-applied) drives human-facing timestamps — logs, chat, audit, agent records and schedules — through a single formatter; machine timelines (DAQ samples, `timestamptz`) stay absolute. |
186
190
  | **Configurable cadences** | Sampling and query defaults/floors are **live settings** (`daq.sampling.*`, `daq.query.*`): hot-reloaded, clamped on node create/patch, and agent tool descriptions always carry the current values. |
187
191
 
188
192
  #### Digital twin
@@ -250,7 +254,7 @@ page headers stack, dense tables become scrollable ledgers with a pinned identit
250
254
  <td width="50%"><img src="https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/shot-monitor.png" alt="Runtime monitor" width="100%" /><br/><sub><b>Runtime monitor.</b> Every wired channel, member count, dependency cycle and owner.</sub></td>
251
255
  </tr>
252
256
  <tr>
253
- <td><img src="https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/shot-settings.png" alt="Settings" width="100%" /><br/><sub><b>Settings.</b> 111 keys across 16 groups, descriptor-driven — the same registry the CLI reads.</sub></td>
257
+ <td><img src="https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/shot-settings.png" alt="Settings" width="100%" /><br/><sub><b>Settings.</b> 113 keys across 18 groups, descriptor-driven — the same registry the CLI reads.</sub></td>
254
258
  <td><img src="https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/shot-plugins.png" alt="Plugins" width="100%" /><br/><sub><b>Plugins.</b> Three scopes, hot reload on edit, per-team switches.</sub></td>
255
259
  </tr>
256
260
  </table>
@@ -373,7 +377,7 @@ aw update --check # only report; nothing is installed
373
377
  npm install -g agentworkshop@latest # manual equivalent
374
378
  ```
375
379
 
376
- Releases follow semver. `aw start` verifies the config root on every launch and migrates the legacy pre-`home` `data/` layout into it (newest file wins), so data survives upgrades. SQLite schema migrations run server-side at boot. Current version: **v0.7.49** — see [Releases](https://github.com/kingdol666/AgentWorkShop/releases).
380
+ Releases follow semver. `aw start` verifies the config root on every launch and migrates the legacy pre-`home` `data/` layout into it (newest file wins), so data survives upgrades. SQLite schema migrations run server-side at boot. Current version: **v0.7.50** — see [Releases](https://github.com/kingdol666/AgentWorkShop/releases).
377
381
 
378
382
  ### Your first agent × line session (~2 minutes)
379
383
 
@@ -422,6 +426,7 @@ Agent tool descriptions are re-rendered with the current values on every injecti
422
426
  | `aw stop` | Stop a running `aw` service instance via the single-instance lock |
423
427
  | `aw config list · get · set · unset · reset` | Read & write runtime settings (validated against the schema, atomic writes) |
424
428
  | `aw plugin list · create · enable · disable` | Manage plugins across all three scopes: inspect, scaffold (project scope; `--global` for user scope), enable/disable (state file, ~1 s hot reload on the running server) |
429
+ | `aw mcp` | Industrial MCP stdio server (38 tools over the platform REST: lines, recipes, DCW writes, parameter mapping, DAQ, channels, teams, model promotion, plugins) — auto-discovers the running instance; `--doctor` diagnoses discovery/health/auth, `--print-config` emits a ready-to-paste MCP client config |
425
430
  | `aw home` | Inspect / initialize the config root `.AgentWorkShop` |
426
431
  | `aw init <dir>` | Scaffold a runnable project (full config system + CLI included) |
427
432
  | `aw register <path\|url\|npm:pkg>` | Register a new command — project-local or `--global` |
@@ -482,10 +487,14 @@ export async function run(argv, ctx) {
482
487
 
483
488
  The modeling half of the loop: `/aml` builds **datasets** out of tagged telemetry, submits **training jobs** to a `uv`-managed Python runtime, ranks runs on a **leaderboard**, and promotes a model only when it clears the configured **gates** (NRMSE, rollout NRMSE, validation/test gap, minimum rows and runs). Promoted models are referenced by id, so an MPC or shadow-twin controller can consume a versioned artifact instead of a vague "latest".
484
489
 
485
- - Agents do the same work through 10 tools (`aml_dataset_build`, `aml_job_submit`, `aml_job_status`, `aml_leaderboard`, `aml_model_promote`, …) — submit a goal and let the team train and report.
490
+ - Agents do the same work through 14 tools (`aml_dataset_build`, `aml_job_submit`, `aml_job_status`, `aml_leaderboard`, `aml_model_promote`, `aml_model_find`, `aml_training_plan_*`, …) — submit a goal and let the team train and report.
486
491
  - The Python runtime bootstraps itself with `uv` into an `./aml` asset root inside the config root; dataset/artifact/metadata paths, disk quota, job timeout, concurrency and retention are all **settings** (16 in the `aml` group), not constants.
487
492
  - Governance defaults are conservative: cross-recipe datasets are refused unless explicitly allowed, and every job is attributed.
488
- - **Hybrid twin × MPC core**: AML also owns the *hybrid twin* plane — `SceneContract` / `PhysicsModelManifest` / `TwinSnapshot` / `ObjectiveProfile` / `VirtualTrial` / `RecommendationCertificate` on top of a grey-box physics core with a bounded PyTorch residual, UQ/OOD screening and all-trajectory hard-constraint gates. Channels opt in through the `hybrid_twin` profile, which injects six extra agent tools (`twin_scene_read`, `twin_snapshot_create`, `twin_trial_run`, `mpc_optimize`, `twin_gate_evaluate`, `twin_calibration_request`); a trial is *virtual* by design (`candidateExecuted=false`) and a recommendation is only certified when gates and benefit pass. Server-side strategies are `safe_small_step` (insufficient data) and `precise_search` (model cleared gates). Plan + acceptance record: [`docs/aml-hybrid-twin-mpc-integration-plan.md`](./docs/aml-hybrid-twin-mpc-integration-plan.md), [`docs/aml-hybrid-twin-implementation-acceptance.md`](./docs/aml-hybrid-twin-implementation-acceptance.md).
493
+ - **Hybrid twin × MPC core**: AML also owns the *hybrid twin* plane — `SceneContract` / `PhysicsModelManifest` / `TwinSnapshot` / `ObjectiveProfile` / `VirtualTrial` / `RecommendationCertificate` on top of a grey-box physics core with a bounded PyTorch residual, UQ/OOD screening and all-trajectory hard-constraint gates. Channels opt in through the `hybrid_twin` profile, which injects twelve profile agent tools (`twin_provider_catalog`, `twin_scene_discover/compile/freeze`, `twin_physics_spec_draft/validate/compile`, `twin_scene_read`, `twin_snapshot_create`, `twin_trial_run`, `mpc_optimize`, `twin_gate_evaluate`) plus the general `twin_calibration_request`; a trial is *virtual* by design (`candidateExecuted=false`) and a recommendation is only certified when gates and benefit pass. Server-side strategies are `safe_small_step` (insufficient data) and `precise_search` (model cleared gates). Plan + acceptance record: [`docs/aml-hybrid-twin-mpc-integration-plan.md`](./docs/aml-hybrid-twin-mpc-integration-plan.md), [`docs/aml-hybrid-twin-implementation-acceptance.md`](./docs/aml-hybrid-twin-implementation-acceptance.md).
494
+ - **Any-scene modeling loop**: the loop is not tied to a bundled scene. Bind nodes → `twin_scene_discover` infers control/state/disturbance/target/guard semantics with evidence → `twin_scene_compile` drafts a `SceneContract` → you confirm → `twin_scene_freeze` freezes it (immutable versions) → `twin_physics_spec_draft` proposes a skeleton PhysicsSpec (one first-order relaxation equation per state, τ/gain as calibratable prior-boxed parameters) that you refine → validate/compile (whitelisted AST, no arbitrary code) → `aml_job_submit { job_kind: 'hybrid_residual' }` runs without any code: the built-in reference trainer calibrates physics parameters (stage A), fits a 3-member bounded residual ensemble (stage B) and reports conformal q90 coverage (stage D) — the calibrated spec is written back and shared by evaluation, prediction and trials.
495
+ - **Model-backed twin & continuous calibration**: `twin_trial_run` / `mpc_optimize` accept a `model_id` — the rollout is then driven by the trained hybrid model (calibrated physics + residual-ensemble ONNX, `ModelBackedHybridProvider`) with UQ coverage and member disagreement coming from training artifacts, and a dataset whose line/product/recipe doesn't match the scene is rejected (`TWIN_MODEL_SCENE_MISMATCH`). Calibration requests are consumed by a 60 s worker that re-submits `hybrid_residual` retraining *candidates* automatically; promotion still goes through HITL + Twin Gate (`AML_TWIN_WORKER_DISABLED=1` turns the worker off).
496
+ - **Two-mode optimization loop**: `aw` ships two channel templates — `chtpl-aml-training-default` (modeling face: 22 tools, no plant writes, no MPC) and `chtpl-aml-optimization-default` (acting face: snapshot/trial/gate/MPC/Bayesian search plus `optimization_explore`, the governed micro-write that pairs every setpoint with its response read-back in an `optimization_explorations` ledger). The faces are mutually exclusive per channel; optimization channels instantiate either in **exploration** mode (governed small steps, no model required) or **aml** mode (`boundModelId` required — a gate-cleared model must be bound before the acting face unlocks).
497
+ - **Twin provider plugin SDK (hot-loaded)**: an industrial scene's physics core / scene packs / objectives / solvers register through `ctx.twin` into the **Twin Provider Registry** (`registerPhysicsProvider` / `registerScenePack` / `registerObjectiveProfile` / `registerTrainingAdapter` / `registerSolverAdapter`, plus `listProviders` / `getProviderHealth` / `resolveProvider` / `validateProvider` / `retireProvider` / `isRegistryAvailable`). Twin tools resolve providers via `SceneContract.physicsProfileId` (falling back to the bundled `twin-injection-default`), so **swapping scenes changes neither tools nor channels**; a hot reload stages a new **generation** and drains the old one while trials and MPC hold leases, so in-flight work is never invalidated and `retireProvider` only unloads at zero references. The bundled injection provider ships through that same external contract (`server/plugins-builtin/twin-injection-default/`), and plugins live in the usual scopes with no restart for disable/reload. Field tables and a runnable example: [`docs/plugins.md`](./docs/plugins.md) → "Hybrid-twin provider plugins"; SDK surface: [`docs/sdk.md`](./docs/sdk.md) §4.10.
489
498
 
490
499
  ---
491
500
 
@@ -600,12 +609,12 @@ in [`docs/audit/e2e-2026-09-24-all-features.md`](./docs/audit/e2e-2026-09-24-all
600
609
  | Real-engine collaboration | task-flow real **PASS**, `e2e-omp-workspace` **13 / 13**, group-chat real **PASS**, multi-user HIL **PASS** (2026-09-24) | real `omp` lead + workers: decomposition, dispatch, progress, artifacts, workspace-scoped file reads, unload; multi-user HITL visibility; multi-harness team 14/18 (omp + dsh green) | `npx tsx scripts/e2e-agentteam-task-flow-real.ts` · `npx tsx scripts/e2e-omp-workspace.ts` |
601
610
  | Front-end acceptance | responsive gate **16 / 16** routes, nav drawer **10 / 10** (2026-09-24, real Chromium) | every product page incl. the 3D town renders at the gate thresholds; drawer interaction, scroll lock, route change, zero page errors | `node scripts/ui/verify-responsive.mjs --routes all` · `node scripts/ui/verify-nav.mjs` |
602
611
  | `_aw0746-stage12.mjs` | **10 / 0** (2026-09-25, globally installed **v0.7.49 packaged build**) | health gate (version=0.7.49) → admin login/role surface → channel creation with a real `omp` lead → group chat opened → **real omp reply** → omp child process visible in monitoring | `AW_BASE=<base> node scripts/_aw0746-stage12.mjs` |
603
- | `_aw0746-stage34.mjs` | **11 / 0** (2026-09-25, v0.7.49 packaged build + PLC simulator) | line provisioned from the simulator (11 DCW + 14 DAQ) → product/recipe triple → **every sample tagged with recipe_id/run_id** while running → `daq_query` **defaults to the active batch** (`scope=all` opts out, measured 1 vs 4) → Hybrid Twin template instantiated (lead + 3 workers, 6 twin tools injected, 57 total) | `AW_BASE=<base> node scripts/_aw0746-stage34.mjs` |
612
+ | `_aw0746-stage34.mjs` | **13 / 0** (2026-09-25, v0.7.49 packaged build + PLC simulator) | line provisioned from the simulator (11 DCW + 14 DAQ) → product/recipe triple → **every sample tagged with recipe_id/run_id** while running → `daq_query` **defaults to the active batch** (`scope=all` opts out, measured 1 vs 4) → Hybrid Twin template instantiated (lead + 3 workers, 6 twin tools injected, 57 total) | `AW_BASE=<base> node scripts/_aw0746-stage34.mjs` |
604
613
  | `_aw0746-stage6b-train-sweep.mjs` | gates **all green** (2026-09-25, v0.7.46 packaged build, real torch training) | 1 s grid dataset (**1724 rows / 10 runs**) → inline-code job trained for real → G1 one-step **0.0992** (≤0.10) / G2 rollout 0.1092 (≤0.25) / G3 generalisation 14.6% (≤20%) / G4 rows+runs → model registered and **promoted to production** | `AW_BASE=<base> AW_DATASET_ID=<ds> node scripts/_aw0746-stage6b-train-sweep.mjs` |
605
614
  | `_aw0746-stage7-twin.mjs` | **17 / 0** (2026-09-25, v0.7.49 packaged build, real DAQ + real model) | real samples → TwinSnapshot `fresh=true` → 65 real VirtualTrials (12 safe candidates, `candidateExecuted=false`) → 12-check recommendation gate **write_eligible** → verdict written back to the model as `twinEligibility` → `mpc_optimize` upgrades to **precise_search** → **0 DCW writes** throughout | `AW_BASE=<base> AW_REQUIRE_MODEL=1 node scripts/_aw0746-stage7-twin.mjs` |
606
615
  | `_aw0746-stage6c-jobsmoke.mjs` | **5 / 0** (2026-09-25, v0.7.49 packaged build) | AML job path: inline `code` accepted (no `workspace/train.py` required) → job reaches a terminal state → training logs/ONNX traces → experiment plus per-check gates persisted | `AW_BASE=<base> node scripts/_aw0746-stage6c-jobsmoke.mjs` |
607
616
  | `_aw0748-failclosed-probe.mjs` | **7 / 0** (2026-09-25, v0.7.49 packaged build) | hard-constraint **fail-closed** regression: `auto_daq` builds a snapshot from real bindings → a mappable `weight` constraint evaluates normally → an unmappable `part_weight` constraint is judged not passed with a precise detail (v0.7.47 passed it falsely) → an empty trajectory is also judged not passed | `AW_BASE=<base> node scripts/_aw0748-failclosed-probe.mjs` |
608
- | `_aw0748-mock-closedloop.mjs` | **11 / 0** (2026-09-25, v0.7.49 packaged build, in-process `mock`, no quota) | scheduler closed-loop regression: create a mock channel → the root task is genuinely dispatched and closed → `[mock:complex]` forces delegation into child tasks → the parent closes after they finish → **the second and third root tasks are dispatched too** (before the fix the lead was unloaded while idle, `cr.scheduler` became null and later root tasks only landed in the DB, sitting in SUBMITTED until `ROOT_TIMEOUT`) → the tool bridge explicitly rejects host tools for mock | `AW_BASE=<base> node scripts/_aw0748-mock-closedloop.mjs` |
617
+ | `_aw0748-mock-closedloop.mjs` | **13 / 0** (2026-09-25, v0.7.49 packaged build, in-process `mock`, no quota) | scheduler closed-loop regression: create a mock channel → the root task is genuinely dispatched and closed → `[mock:complex]` forces delegation into child tasks → the parent closes after they finish → **the second and third root tasks are dispatched too** (before the fix the lead was unloaded while idle, `cr.scheduler` became null and later root tasks only landed in the DB, sitting in SUBMITTED until `ROOT_TIMEOUT`) → the tool bridge explicitly rejects host tools for mock | `AW_BASE=<base> node scripts/_aw0748-mock-closedloop.mjs` |
609
618
  | Industrial bench — integrated | **83 / 83 checks, hard gate green** (2026-09-21) | five-protocol five-line bench: connectivity, sampling into Timescale, governed writes, governance, agent closed loop, semantic parameter layer | `node bench/pipeline.mjs --profile integrated` |
610
619
  | Multi-scenario closed loop | 4 scenarios · closed loops reached (2026-09-21) | injection-molding weight-window tuning · A²/O wastewater compliance with energy minimum · continuous-annealing quality window vs throughput · BOPET line mission | `node bench/scenarios.mjs --scenarios injection,wwtp,anneal` |
611
620
  | Line permissions / audit-negative | 21 / 21 + 9 / 9 (2026-09-12) | three-state line grants with human-readable 403s, binding-subject validation, revocation convergence, unauthenticated WS receives zero telemetry | `node scripts/_dbg-perms-e2e.mjs <base> <adminPass>` · `node scripts/_dbg-audit-neg-e2e.mjs <base> <adminPass>` |
@@ -628,7 +637,7 @@ AgentWorkShop/
628
637
  │ ├── pages/ # / · /workshop · /workshop/agents · /workshop/teams
629
638
  │ │ # /workshop/channel-templates · /workshop/schedules · /workshop/w/:id
630
639
  │ │ # /town · /daq · /daq/:id · /dcw · /dcw/:id
631
- │ │ # /aml · /monitor · /logs · /permissions
640
+ │ │ # /aml · /operations · /monitor · /logs · /permissions
632
641
  │ │ # /plugins · /users · /tokens · /settings
633
642
  │ ├── components/workshop/ # timeline · lanes · task board · memory panel · 3D town
634
643
  │ └── stores/composables/ # Pinia + AEP client
@@ -639,13 +648,14 @@ AgentWorkShop/
639
648
  │ │ ├── agents/ # AgentInterface: 14 engines (+ industrial tools)
640
649
  │ │ ├── daq/ dcw/ aml/ # edge runtimes · drivers · bus · storage · modeling lab
641
650
  │ │ └── db/ # repos over node:sqlite
642
- │ ├── mcp/ # MCP server (25 tools)
643
- │ ├── plugins-builtin/ # plugins shipped with the package (diag-bridge · rag-bridge · serial-bridge)
651
+ │ ├── mcp/ # MCP server (25 tools, in-process workshop face)
652
+ │ ├── plugins-builtin/ # plugins shipped with the package (serial-bridge · rag-bridge · diag-bridge · twin-injection-default)
644
653
  │ └── plugins/ # runtime assembly (singletons)
654
+ ├── mcp/ # aw mcp — zero-dependency stdio MCP gateway (38 tools, instance auto-discovery)
645
655
  ├── sdk/ # agentworkshop/sdk — plugin context, hook bus, REST client, browser SDK
646
656
  ├── tui/ # terminal workbench (aw tui)
647
657
  ├── shared/
648
- │ └── config/ # schema.json (111 setting descriptors) + engine (merge/validate/persist) + path resolver
658
+ │ └── config/ # schema.json (113 setting descriptors) + engine (merge/validate/persist) + path resolver
649
659
  ├── config.yml # factory defaults (read at build/start; version comes from package.json)
650
660
  ├── .AgentWorkShop/ # config root in a checkout — prompts (versioned) + runtime overrides · data · logs · commands (git-ignored)
651
661
  ├── data/ # legacy pre-migration location (auto-migrated into the config root)
@@ -740,6 +750,12 @@ building, so those files are the single source of truth for the single-page guid
740
750
  | Runtime observability: `GET /api/system/monitor` team metrics, each with a documented rollback switch | Shipped |
741
751
  | Industrial bench: integrated profile (83 checks, hard gate) + multi-scenario closed loops (injection / wwtp / anneal / BOPET) + quality-target optloop | Shipped |
742
752
  | Full-coverage acceptance wave matrix on a production build (~1100+ real assertions, 2026-09-24) | Shipped |
753
+ | Twin provider plugin SDK: hot-loadable physics/scene/objective/training/solver providers via `ctx.twin`, generation-staged reload with lease draining, bundled provider shipped through the same external contract | Shipped |
754
+ | Any-scene hybrid-twin modeling loop: scene discover → compile → freeze → physics-spec draft/validate/compile → reference-trainer job (physics calibration + residual ensemble + conformal UQ), model-backed trials, continuous-calibration worker | Shipped |
755
+ | Two-mode optimization loop: dedicated `aml-training` / `aml-optimization` channel templates, mutually exclusive tool faces, exploration ↔ production modes with governed read-back-paired micro-writes | Shipped |
756
+ | Line operations feed: `/operations` page + workshop-console panel, nine-category operation timeline, structured write diffs, closed-loop phase inference | Shipped |
757
+ | External MCP gateway: `aw mcp` stdio server (38 tools), instance auto-discovery, `mcp.enabled` runtime gate | Shipped |
758
+ | Configurable system timezone (`time.timeZone`, live) + recipe `stepLimit` per-parameter single-step bound + recipe `description` metadata | Shipped |
743
759
  | Production hardening: TLS, MQTT auth, OPC UA sign+encrypt defaults, structured audit log | Planned |
744
760
  | Edge deployment shape: standalone edge-agent + central broker | Planned |
745
761
  | Alarm outbound delivery (email/webhook) + ack workflow | Planned |
@@ -52,6 +52,7 @@ const menuGroups = computed<MenuGroup[]>(() => [
52
52
  id: 'ops',
53
53
  label: t('menu.groups.ops'),
54
54
  items: [
55
+ { key: '/operations', icon: 'i-tabler-stream', label: t('menu.operations'), motion: 'im-pop' },
55
56
  { key: '/monitor', icon: 'i-tabler-cpu', label: t('menu.monitor'), motion: 'im-pulse' },
56
57
  { key: '/logs', icon: 'i-tabler-list-details', label: t('menu.logs'), motion: 'im-pop' },
57
58
  ],