agentworkshop 0.8.8 → 0.9.0

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 (589) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +68 -0
  2. package/.output/.AgentWorkShop/prompts/host-tools.json +68 -0
  3. package/.output/.AgentWorkShop/schema.json +2 -0
  4. package/.output/nitro.json +1 -1
  5. package/.output/public/_nuxt/{Cdi9qfTr.js → CDO7Zey1.js} +2 -2
  6. package/.output/public/_nuxt/builds/latest.json +1 -1
  7. package/.output/public/_nuxt/builds/meta/f507c33b-4ecc-4e32-af88-2e3736b443e9.json +1 -0
  8. package/.output/server/chunks/_/access.mjs +1 -1
  9. package/.output/server/chunks/_/data-export.mjs +5 -5
  10. package/.output/server/chunks/_/data-query.mjs +2 -2
  11. package/.output/server/chunks/_/eda-run.repo.mjs +3 -3
  12. package/.output/server/chunks/_/features.mjs +5 -5
  13. package/.output/server/chunks/_/golden.mjs +2 -2
  14. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  15. package/.output/server/chunks/_/index.mjs +2 -2
  16. package/.output/server/chunks/_/mes-secrets.repo.mjs +1 -1
  17. package/.output/server/chunks/_/nitro.mjs +2556 -1314
  18. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  19. package/.output/server/chunks/_/spc.mjs +2 -2
  20. package/.output/server/chunks/build/_id_-CsCtnbwe.mjs +1 -1
  21. package/.output/server/chunks/build/_id_-P1W47Gqq.mjs +1 -1
  22. package/.output/server/chunks/build/_wsId_-DpOErFj6.mjs +1 -1
  23. package/.output/server/chunks/build/agents-D7CdEUTv.mjs +1 -1
  24. package/.output/server/chunks/build/aml-DRAFRcGU.mjs +1 -1
  25. package/.output/server/chunks/build/analysis-J9axLuRt.mjs +1 -1
  26. package/.output/server/chunks/build/api-B4Om0mEc.mjs +1 -1
  27. package/.output/server/chunks/build/api-BEW_ebY_.mjs +1 -1
  28. package/.output/server/chunks/build/api-BsAgXWxi.mjs +1 -1
  29. package/.output/server/chunks/build/board-CJUc032b.mjs +1 -1
  30. package/.output/server/chunks/build/channel-templates-ggsBacZF.mjs +1 -1
  31. package/.output/server/chunks/build/constants-HPHJvjne.mjs +1 -1
  32. package/.output/server/chunks/build/daq-B_dRMDw4.mjs +1 -1
  33. package/.output/server/chunks/build/data-D8uX1dnm.mjs +1 -1
  34. package/.output/server/chunks/build/dcw-D_HD_H_2.mjs +1 -1
  35. package/.output/server/chunks/build/default-CNWS6NUw.mjs +1 -1
  36. package/.output/server/chunks/build/es-Bxu10NJ2.mjs +1 -1
  37. package/.output/server/chunks/build/logs-BnYSMRXM.mjs +1 -1
  38. package/.output/server/chunks/build/monitor-Cq6hRFeQ.mjs +1 -1
  39. package/.output/server/chunks/build/ontology-ohICfVVb.mjs +1 -1
  40. package/.output/server/chunks/build/operations-4zOVhW7o.mjs +1 -1
  41. package/.output/server/chunks/build/optimizer-BlWTsM-W.mjs +1 -1
  42. package/.output/server/chunks/build/pages-DEv4ProW.mjs +1 -1
  43. package/.output/server/chunks/build/permissions-DgXQZSyx.mjs +1 -1
  44. package/.output/server/chunks/build/pipeline-CkavMBhk.mjs +1 -1
  45. package/.output/server/chunks/build/plugins-LRjaSEZy.mjs +1 -1
  46. package/.output/server/chunks/build/schedules-Hz2DJUE2.mjs +1 -1
  47. package/.output/server/chunks/build/settings-DXLJPq7d.mjs +1 -1
  48. package/.output/server/chunks/build/studio-hSqH9TYS.mjs +1 -1
  49. package/.output/server/chunks/build/teams-BbwYJyzv.mjs +1 -1
  50. package/.output/server/chunks/build/tokens-GYaGJ35Z.mjs +1 -1
  51. package/.output/server/chunks/build/tools-CnYi9cou.mjs +1 -1
  52. package/.output/server/chunks/build/town-BV-hbwb5.mjs +1 -1
  53. package/.output/server/chunks/build/town-CcoQKjMj.mjs +1 -1
  54. package/.output/server/chunks/build/types-D6J7slEa.mjs +1 -1
  55. package/.output/server/chunks/build/types-DWqIeMRP.mjs +1 -1
  56. package/.output/server/chunks/build/useAgentHarnessOptions-Dq0l0Z6d.mjs +1 -1
  57. package/.output/server/chunks/build/useAgentTemplateActions-BFOHb5-L.mjs +1 -1
  58. package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs +1 -1
  59. package/.output/server/chunks/build/useAgentTemplateForm-CuJPOPcK.mjs +1 -1
  60. package/.output/server/chunks/build/useAgentTemplatesCatalog-B2bIhZLA.mjs +1 -1
  61. package/.output/server/chunks/build/useAmlDatasets-DeoE1idn.mjs +1 -1
  62. package/.output/server/chunks/build/useAmlEntities-BJhvdqHJ.mjs +1 -1
  63. package/.output/server/chunks/build/useAmlEnv-CDIZ6xTe.mjs +1 -1
  64. package/.output/server/chunks/build/useAmlExperiments-Dloi834i.mjs +1 -1
  65. package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs +1 -1
  66. package/.output/server/chunks/build/useAmlJobs-BF9LpwXz.mjs +1 -1
  67. package/.output/server/chunks/build/useAmlModels-_bweOr3R.mjs +1 -1
  68. package/.output/server/chunks/build/useAmlNotes-DQj980iX.mjs +1 -1
  69. package/.output/server/chunks/build/useAmlPredict-DHNgDSJn.mjs +1 -1
  70. package/.output/server/chunks/build/useAnalysisFeed-BrEGV_9x.mjs +1 -1
  71. package/.output/server/chunks/build/useDaqAddNode-D_Rkju0f.mjs +1 -1
  72. package/.output/server/chunks/build/useDaqDetailBinding-DCWaLKXT.mjs +1 -1
  73. package/.output/server/chunks/build/useDaqDetailFrames-BOIcOJRB.mjs +1 -1
  74. package/.output/server/chunks/build/useDaqDetailHistory-D6WulPVs.mjs +1 -1
  75. package/.output/server/chunks/build/useDaqDetailNode-BGMRUIXN.mjs +1 -1
  76. package/.output/server/chunks/build/useDaqDetailParams-Cm9a9r5G.mjs +1 -1
  77. package/.output/server/chunks/build/useDaqFilters-zAAVlzJQ.mjs +1 -1
  78. package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs +1 -1
  79. package/.output/server/chunks/build/useDaqOptimizations-BE_9Z2s_.mjs +1 -1
  80. package/.output/server/chunks/build/useDaqTemplates-CK37sMfi.mjs +1 -1
  81. package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs +1 -1
  82. package/.output/server/chunks/build/useDashboardData-Cw8lrPo5.mjs +1 -1
  83. package/.output/server/chunks/build/useDcwAddNode-KnocMk1m.mjs +1 -1
  84. package/.output/server/chunks/build/useDcwCards-C53IiOcg.mjs +1 -1
  85. package/.output/server/chunks/build/useDcwDetailScope-D6qXrfZu.mjs +1 -1
  86. package/.output/server/chunks/build/useDcwDetailTemplates-DPOXu1o_.mjs +1 -1
  87. package/.output/server/chunks/build/useDcwFilter-DNQ6Ivwd.mjs +1 -1
  88. package/.output/server/chunks/build/useDcwLedger-BhbUBCbi.mjs +1 -1
  89. package/.output/server/chunks/build/useDcwLineMutations-KA7VnggO.mjs +1 -1
  90. package/.output/server/chunks/build/useDcwLineRun-3zx_UCxi.mjs +1 -1
  91. package/.output/server/chunks/build/useDcwParamApprovals-DzyY6Tmi.mjs +1 -1
  92. package/.output/server/chunks/build/useDcwProducts-B05ymt3k.mjs +1 -1
  93. package/.output/server/chunks/build/useDcwQuery-vWpgpSmJ.mjs +1 -1
  94. package/.output/server/chunks/build/useDcwQuickActions-DUkLy34S.mjs +1 -1
  95. package/.output/server/chunks/build/useDcwRecipes-BAb4Yg3d.mjs +1 -1
  96. package/.output/server/chunks/build/useDcwTemplates-D2aoejps.mjs +1 -1
  97. package/.output/server/chunks/build/useDcwWrites-7w8txksD.mjs +1 -1
  98. package/.output/server/chunks/build/useExpConfirmations-BM626N4p.mjs +1 -1
  99. package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs +1 -1
  100. package/.output/server/chunks/build/useLogsManual-D0dvgCsP.mjs +1 -1
  101. package/.output/server/chunks/build/useLogsQuery-D7hrJ3yn.mjs +1 -1
  102. package/.output/server/chunks/build/useLogsScope-DEUyq-My.mjs +1 -1
  103. package/.output/server/chunks/build/useMonitorColumns-vVnt3r5Q.mjs +1 -1
  104. package/.output/server/chunks/build/useMonitorData-DIkiLr_h.mjs +1 -1
  105. package/.output/server/chunks/build/useMonitorFormat-CyURtH8N.mjs +1 -1
  106. package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs +1 -1
  107. package/.output/server/chunks/build/useOperationsFeed-Ci4mZAn_.mjs +1 -1
  108. package/.output/server/chunks/build/useRecipeDispatchApprovals-BYtiqfeb.mjs +1 -1
  109. package/.output/server/chunks/build/useTeamActions-BDjU06LP.mjs +1 -1
  110. package/.output/server/chunks/build/useTeamAddMemberDialog-J3oFn3FI.mjs +1 -1
  111. package/.output/server/chunks/build/useTeamCreateDialog-fbn4ixYu.mjs +1 -1
  112. package/.output/server/chunks/build/useTeamDeployDialog-BNezMD2k.mjs +1 -1
  113. package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs +1 -1
  114. package/.output/server/chunks/build/useTeamPluginDialog-BZznrOVe.mjs +1 -1
  115. package/.output/server/chunks/build/useTeamsCatalog-DuZFP3oG.mjs +1 -1
  116. package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs +1 -1
  117. package/.output/server/chunks/build/useTokenCreate-Ctl0YGhL.mjs +1 -1
  118. package/.output/server/chunks/build/useTokenRename-Cm3ypSfN.mjs +1 -1
  119. package/.output/server/chunks/build/useTokenReveal-CeoWL5Mt.mjs +1 -1
  120. package/.output/server/chunks/build/useTokensList-CNIzON3u.mjs +1 -1
  121. package/.output/server/chunks/build/useWorkbenchAuth-CY-bVFMu.mjs +1 -1
  122. package/.output/server/chunks/build/useWorkbenchWorkspaces-DhZQFss9.mjs +1 -1
  123. package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs +1 -1
  124. package/.output/server/chunks/build/useWorkspaceChannels-CPFepxTN.mjs +1 -1
  125. package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs +1 -1
  126. package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs +1 -1
  127. package/.output/server/chunks/build/users-DjiVC_tS.mjs +1 -1
  128. package/.output/server/chunks/build/workshop-1gKeDASV.mjs +1 -1
  129. package/.output/server/chunks/routes/api/health.get.mjs +1 -1
  130. package/.output/server/chunks/routes/api/index.get.mjs +1 -1
  131. package/.output/server/chunks/routes/api/index.post.mjs +1 -1
  132. package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -1
  133. package/.output/server/chunks/routes/api/metrics.mjs +1 -1
  134. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +1 -1
  135. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +1 -1
  136. package/.output/server/chunks/routes/api/plugins/i18n.get.mjs +1 -1
  137. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +1 -1
  138. package/.output/server/chunks/routes/api/system/backup/list.get.mjs +1 -1
  139. package/.output/server/chunks/routes/api/system/backup/run.post.mjs +3 -3
  140. package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +1 -1
  141. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs +1 -1
  142. package/.output/server/chunks/routes/api/system/config.get.mjs +1 -1
  143. package/.output/server/chunks/routes/api/system/index.get.mjs +1 -1
  144. package/.output/server/chunks/routes/api/system/index.patch.mjs +1 -1
  145. package/.output/server/chunks/routes/api/system/index.post.mjs +1 -1
  146. package/.output/server/chunks/routes/api/system/index2.get.mjs +1 -1
  147. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +1 -1
  148. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +1 -1
  149. package/.output/server/chunks/routes/api/system/monitor.get.mjs +1 -1
  150. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +1 -1
  151. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +1 -1
  152. package/.output/server/chunks/routes/api/system/timezone.get.mjs +1 -1
  153. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -1
  154. package/.output/server/chunks/routes/api/users/_id_.get.mjs +1 -1
  155. package/.output/server/chunks/routes/api/users/_id_.put.mjs +1 -1
  156. package/.output/server/chunks/routes/api/users/change-password.post.mjs +1 -1
  157. package/.output/server/chunks/routes/api/users/index.get.mjs +1 -1
  158. package/.output/server/chunks/routes/api/users/index.post.mjs +1 -1
  159. package/.output/server/chunks/routes/api/users/login.post.mjs +1 -1
  160. package/.output/server/chunks/routes/api/users/logout.post.mjs +1 -1
  161. package/.output/server/chunks/routes/api/users/me.get.mjs +1 -1
  162. package/.output/server/chunks/routes/api/users/register.post.mjs +1 -1
  163. package/.output/server/chunks/routes/api/users/setup-status.get.mjs +1 -1
  164. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +1 -1
  165. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +1 -1
  166. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +1 -1
  167. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +1 -1
  168. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +1 -1
  169. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +1 -1
  170. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +1 -1
  171. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +1 -1
  172. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +1 -1
  173. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +1 -1
  174. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs +1 -1
  175. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs +1 -1
  176. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +1 -1
  177. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +2 -2
  178. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +1 -1
  179. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +1 -1
  180. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +1 -1
  181. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +1 -1
  182. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +1 -1
  183. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +1 -1
  184. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +1 -1
  185. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +1 -1
  186. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +1 -1
  187. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +1 -1
  188. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +1 -1
  189. package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +1 -1
  190. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +1 -1
  191. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +1 -1
  192. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +1 -1
  193. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +1 -1
  194. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +1 -1
  195. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +1 -1
  196. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +1 -1
  197. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +1 -1
  198. package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs +1 -1
  199. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +1 -1
  200. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +1 -1
  201. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +1 -1
  202. package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs +1 -1
  203. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +1 -1
  204. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +1 -1
  205. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +1 -1
  206. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +1 -1
  207. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +1 -1
  208. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +1 -1
  209. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +1 -1
  210. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +1 -1
  211. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +1 -1
  212. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs +1 -1
  213. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs +1 -1
  214. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs +1 -1
  215. package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs +1 -1
  216. package/.output/server/chunks/routes/api/workshop/analysis/_id_.delete.mjs +1 -1
  217. package/.output/server/chunks/routes/api/workshop/analysis/_id_.get.mjs +1 -1
  218. package/.output/server/chunks/routes/api/workshop/analysis/_id_.patch.mjs +1 -1
  219. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +1 -1
  220. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +1 -1
  221. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +1 -1
  222. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +1 -1
  223. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +1 -1
  224. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +1 -1
  225. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +1 -1
  226. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +1 -1
  227. package/.output/server/chunks/routes/api/workshop/caller.mjs +1 -1
  228. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +2 -2
  229. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +1 -1
  230. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +1 -1
  231. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +1 -1
  232. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +1 -1
  233. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +1 -1
  234. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +1 -1
  235. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +1 -1
  236. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +1 -1
  237. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +1 -1
  238. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +1 -1
  239. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +1 -1
  240. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +1 -1
  241. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/rotate-token.post.mjs +1 -1
  242. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +1 -1
  243. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +1 -1
  244. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +1 -1
  245. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs +1 -1
  246. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs +1 -1
  247. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs +1 -1
  248. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs +1 -1
  249. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +1 -1
  250. package/.output/server/chunks/routes/api/workshop/channels/_id/execution-mode.patch.mjs +1 -1
  251. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +1 -1
  252. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +1 -1
  253. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +1 -1
  254. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +1 -1
  255. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +1 -1
  256. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.put.mjs +1 -1
  257. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +1 -1
  258. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -1
  259. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +1 -1
  260. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -1
  261. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +1 -1
  262. package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs +1 -1
  263. package/.output/server/chunks/routes/api/workshop/channels/_id/index7.get.mjs +1 -1
  264. package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs +1 -1
  265. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs +1 -1
  266. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs +1 -1
  267. package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs +1 -1
  268. package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs +1 -1
  269. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +1 -1
  270. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +1 -1
  271. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -1
  272. package/.output/server/chunks/routes/api/workshop/channels/_id/tools/reset.post.mjs +1 -1
  273. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs +1 -1
  274. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs +1 -1
  275. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +1 -1
  276. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +1 -1
  277. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +1 -1
  278. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +1 -1
  279. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +7 -7
  280. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -1
  281. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +1 -1
  282. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +1 -1
  283. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +1 -1
  284. package/.output/server/chunks/routes/api/workshop/daq/_id/ingest.post.mjs +2 -2
  285. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -1
  286. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +1 -1
  287. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +1 -1
  288. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +1 -1
  289. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +1 -1
  290. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +1 -1
  291. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +1 -1
  292. package/.output/server/chunks/routes/api/workshop/daq/export/_id_.get.mjs +1 -1
  293. package/.output/server/chunks/routes/api/workshop/daq/export-file.get.mjs +1 -1
  294. package/.output/server/chunks/routes/api/workshop/daq/index.get.mjs +1 -1
  295. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +1 -1
  296. package/.output/server/chunks/routes/api/workshop/daq/index2.post.mjs +1 -1
  297. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -1
  298. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
  299. package/.output/server/chunks/routes/api/workshop/daq/query.get.mjs +1 -1
  300. package/.output/server/chunks/routes/api/workshop/daq/storage/retention.put.mjs +1 -1
  301. package/.output/server/chunks/routes/api/workshop/daq/storage/rollup.post.mjs +1 -1
  302. package/.output/server/chunks/routes/api/workshop/daq/storage.get.mjs +1 -1
  303. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
  304. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
  305. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
  306. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
  307. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +1 -1
  308. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -1
  309. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
  310. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
  311. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
  312. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
  313. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
  314. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
  315. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -1
  316. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
  317. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
  318. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
  319. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -1
  320. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -1
  321. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +1 -1
  322. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
  323. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -1
  324. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +1 -1
  325. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +1 -1
  326. package/.output/server/chunks/routes/api/workshop/dcw/index7.get.mjs +1 -1
  327. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
  328. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -1
  329. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
  330. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
  331. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
  332. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +1 -1
  333. package/.output/server/chunks/routes/api/workshop/dcw/mes-artifacts/file.get.mjs +1 -1
  334. package/.output/server/chunks/routes/api/workshop/dcw/mes-hook-test.post.mjs +1 -1
  335. package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs +1 -1
  336. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
  337. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
  338. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -1
  339. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -1
  340. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +1 -1
  341. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +1 -1
  342. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +1 -1
  343. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +1 -1
  344. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
  345. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
  346. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
  347. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
  348. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +1 -1
  349. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
  350. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +1 -1
  351. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -2
  352. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +1 -1
  353. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
  354. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
  355. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
  356. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  357. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  358. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
  359. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +1 -1
  360. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +1 -1
  361. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
  362. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +1 -1
  363. package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.delete.mjs +1 -1
  364. package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.get.mjs +1 -1
  365. package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.patch.mjs +1 -1
  366. package/.output/server/chunks/routes/api/workshop/eda/commonality.get.mjs +1 -1
  367. package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.delete.mjs +1 -1
  368. package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.get.mjs +1 -1
  369. package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.patch.mjs +1 -1
  370. package/.output/server/chunks/routes/api/workshop/eda/features/jobs.get.mjs +1 -1
  371. package/.output/server/chunks/routes/api/workshop/eda/features/run.post.mjs +1 -1
  372. package/.output/server/chunks/routes/api/workshop/eda/golden/_id_.delete.mjs +1 -1
  373. package/.output/server/chunks/routes/api/workshop/eda/golden/deviation.get.mjs +1 -1
  374. package/.output/server/chunks/routes/api/workshop/eda/golden/single.get.mjs +1 -1
  375. package/.output/server/chunks/routes/api/workshop/eda/index.get.mjs +1 -1
  376. package/.output/server/chunks/routes/api/workshop/eda/index.post.mjs +1 -1
  377. package/.output/server/chunks/routes/api/workshop/eda/index2.get.mjs +1 -1
  378. package/.output/server/chunks/routes/api/workshop/eda/index2.post.mjs +1 -1
  379. package/.output/server/chunks/routes/api/workshop/eda/index3.get.mjs +1 -1
  380. package/.output/server/chunks/routes/api/workshop/eda/index3.post.mjs +1 -1
  381. package/.output/server/chunks/routes/api/workshop/eda/index4.get.mjs +1 -1
  382. package/.output/server/chunks/routes/api/workshop/eda/index4.post.mjs +1 -1
  383. package/.output/server/chunks/routes/api/workshop/eda/index5.get.mjs +1 -1
  384. package/.output/server/chunks/routes/api/workshop/eda/index5.post.mjs +1 -1
  385. package/.output/server/chunks/routes/api/workshop/eda/index6.get.mjs +1 -1
  386. package/.output/server/chunks/routes/api/workshop/eda/index6.post.mjs +1 -1
  387. package/.output/server/chunks/routes/api/workshop/eda/index7.get.mjs +1 -1
  388. package/.output/server/chunks/routes/api/workshop/eda/index7.post.mjs +1 -1
  389. package/.output/server/chunks/routes/api/workshop/eda/index8.get.mjs +1 -1
  390. package/.output/server/chunks/routes/api/workshop/eda/index8.post.mjs +1 -1
  391. package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.get.mjs +1 -1
  392. package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.patch.mjs +1 -1
  393. package/.output/server/chunks/routes/api/workshop/eda/runs/_id/labels.patch.mjs +1 -1
  394. package/.output/server/chunks/routes/api/workshop/eda/runs.get.mjs +1 -1
  395. package/.output/server/chunks/routes/api/workshop/eda/spc/_id/recompute.post.mjs +1 -1
  396. package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.delete.mjs +1 -1
  397. package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.get.mjs +1 -1
  398. package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.delete.mjs +1 -1
  399. package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.get.mjs +1 -1
  400. package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.patch.mjs +1 -1
  401. package/.output/server/chunks/routes/api/workshop/eda/vm/predict.post.mjs +1 -1
  402. package/.output/server/chunks/routes/api/workshop/exp/confirmations/_id/decide.post.mjs +1 -1
  403. package/.output/server/chunks/routes/api/workshop/exp/index.get.mjs +1 -1
  404. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +1 -1
  405. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  406. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  407. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  408. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  409. package/.output/server/chunks/routes/api/workshop/index.get.mjs +1 -1
  410. package/.output/server/chunks/routes/api/workshop/index.mjs +1 -1
  411. package/.output/server/chunks/routes/api/workshop/index.post.mjs +1 -1
  412. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  413. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +1 -1
  414. package/.output/server/chunks/routes/api/workshop/index10.post.mjs +1 -1
  415. package/.output/server/chunks/routes/api/workshop/index11.get.mjs +1 -1
  416. package/.output/server/chunks/routes/api/workshop/index12.get.mjs +1 -1
  417. package/.output/server/chunks/routes/api/workshop/index13.get.mjs +1 -1
  418. package/.output/server/chunks/routes/api/workshop/index14.get.mjs +1 -1
  419. package/.output/server/chunks/routes/api/workshop/index15.get.mjs +1 -1
  420. package/.output/server/chunks/routes/api/workshop/index16.get.mjs +1 -1
  421. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +1 -1
  422. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -1
  423. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +1 -1
  424. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
  425. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +1 -1
  426. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
  427. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -1
  428. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -1
  429. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
  430. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
  431. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -1
  432. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +1 -1
  433. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +1 -1
  434. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +1 -1
  435. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +1 -1
  436. package/.output/server/chunks/routes/api/workshop/index9.post.mjs +1 -1
  437. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +1 -1
  438. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +1 -1
  439. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +1 -1
  440. package/.output/server/chunks/routes/api/workshop/mes/datasets.get.mjs +1 -1
  441. package/.output/server/chunks/routes/api/workshop/mes/index.get.mjs +1 -1
  442. package/.output/server/chunks/routes/api/workshop/mes/index.put.mjs +1 -1
  443. package/.output/server/chunks/routes/api/workshop/mes/points.get.mjs +1 -1
  444. package/.output/server/chunks/routes/api/workshop/mes/preview.post.mjs +1 -1
  445. package/.output/server/chunks/routes/api/workshop/mes/secrets/_ref_.delete.mjs +1 -1
  446. package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs +1 -1
  447. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/autofix.mjs +1 -1
  448. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/compile.mjs +1 -1
  449. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/evidence.mjs +1 -1
  450. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/publish.mjs +1 -1
  451. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval-decision.mjs +1 -1
  452. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval.mjs +1 -1
  453. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/transition.mjs +1 -1
  454. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/subgraph.mjs +1 -1
  455. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/validate.mjs +1 -1
  456. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId_.mjs +1 -1
  457. package/.output/server/chunks/routes/api/workshop/ontology/export/_ontologyId_.mjs +1 -1
  458. package/.output/server/chunks/routes/api/workshop/ontology/index.mjs +1 -1
  459. package/.output/server/chunks/routes/api/workshop/ontology/scene.mjs +1 -1
  460. package/.output/server/chunks/routes/api/workshop/ontology/traces/_ontologyId_.mjs +1 -1
  461. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId/compare.mjs +1 -1
  462. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId_.mjs +1 -1
  463. package/.output/server/chunks/routes/api/workshop/optimization/bindings/_id_.delete.mjs +1 -1
  464. package/.output/server/chunks/routes/api/workshop/optimization/capabilities.get.mjs +1 -1
  465. package/.output/server/chunks/routes/api/workshop/optimization/index.get.mjs +1 -1
  466. package/.output/server/chunks/routes/api/workshop/optimization/index.mjs +1 -1
  467. package/.output/server/chunks/routes/api/workshop/optimization/index2.mjs +1 -1
  468. package/.output/server/chunks/routes/api/workshop/optimization/profiles/_id/publish.post.mjs +1 -1
  469. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/crosscheck.post.mjs +1 -1
  470. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/dispatch.post.mjs +1 -1
  471. package/.output/server/chunks/routes/api/workshop/optimization/solve.post.mjs +1 -1
  472. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  473. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  474. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +1 -1
  475. package/.output/server/chunks/routes/api/workshop/process-model/datasets.post.mjs +1 -1
  476. package/.output/server/chunks/routes/api/workshop/process-model/eligibility.mjs +1 -1
  477. package/.output/server/chunks/routes/api/workshop/process-model/experiments.mjs +305 -20
  478. package/.output/server/chunks/routes/api/workshop/process-model/experiments.mjs.map +1 -1
  479. package/.output/server/chunks/routes/api/workshop/process-model/index.mjs +1 -1
  480. package/.output/server/chunks/routes/api/workshop/process-model/specs/_id/publish.post.mjs +1 -1
  481. package/.output/server/chunks/routes/api/workshop/process-model/train.post.mjs +1 -1
  482. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +1 -1
  483. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  484. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  485. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +1 -1
  486. package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs +1 -1
  487. package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs +1 -1
  488. package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs +1 -1
  489. package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs +1 -1
  490. package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs +1 -1
  491. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +1 -1
  492. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +1 -1
  493. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +1 -1
  494. package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs +1 -1
  495. package/.output/server/chunks/routes/api/workshop/tasks/_id/reopen.post.mjs +1 -1
  496. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +1 -1
  497. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +1 -1
  498. package/.output/server/chunks/routes/api/workshop/tasks/_id/supersede.post.mjs +1 -1
  499. package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs +1 -1
  500. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +1 -1
  501. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +1 -1
  502. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +1 -1
  503. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +1 -1
  504. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +1 -1
  505. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +1 -1
  506. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +1 -1
  507. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +1 -1
  508. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +1 -1
  509. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +1 -1
  510. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +1 -1
  511. package/.output/server/chunks/routes/api/workshop/tools/_name_.get.mjs +1 -1
  512. package/.output/server/chunks/routes/api/workshop/tools/sync.post.mjs +1 -1
  513. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +1 -1
  514. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +1 -1
  515. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +2 -2
  516. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +1 -1
  517. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +1 -1
  518. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +1 -1
  519. package/.output/server/chunks/routes/renderer.mjs +2 -2
  520. package/.output/server/chunks/virtual/entry.mjs +5 -1
  521. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  522. package/.output/server/index.mjs +1 -1
  523. package/.output/server/package.json +1 -1
  524. package/README-zh.md +3 -3
  525. package/README.md +3 -3
  526. package/config.yml +1 -1
  527. package/docs/aml.md +112 -112
  528. package/docs/cli.en.md +4 -4
  529. package/docs/cli.md +3 -3
  530. package/docs/plugins.en.md +1 -1
  531. package/docs/plugins.md +1 -1
  532. package/docs/sdk.en.md +1 -1
  533. package/docs/sdk.md +1 -1
  534. package/i18n/locales/en.ts +2 -0
  535. package/i18n/locales/zh-CN.ts +2 -0
  536. package/package.json +1 -1
  537. package/scripts/_audit/demo-shot-studio.mjs +37 -0
  538. package/scripts/_audit/demo-shots.mjs +38 -0
  539. package/scripts/_audit/gen-demo-report.py +69 -0
  540. package/scripts/_audit/mqtt-pub.mjs +13 -0
  541. package/scripts/_audit/mqtt-topic-probe.mjs +15 -0
  542. package/scripts/_audit/proto-b3-device-4021.mjs +90 -0
  543. package/scripts/_audit/proto-doc-device-4120.mjs +53 -0
  544. package/scripts/acceptance-scientific-loop.ts +224 -0
  545. package/scripts/generate-identifiability-fixtures.ts +98 -0
  546. package/server/api/workshop/process-model/experiments.ts +28 -2
  547. package/server/plugins-builtin/diag-bridge/host/plugin.mjs +759 -753
  548. package/server/plugins-builtin/rag-bridge/index.mjs +490 -484
  549. package/server/repositories/user.repository.ts +24 -1
  550. package/server/services/user.service.ts +8 -6
  551. package/server/services/workshop/agents/host-tool-bridge/catalog.ts +2 -0
  552. package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +4 -1
  553. package/server/services/workshop/agents/host-tool-bridge/tools/messaging.ts +5 -1
  554. package/server/services/workshop/agents/industrial/aml-dataset-tools.ts +3 -0
  555. package/server/services/workshop/agents/industrial/bench-approval-only.ts +335 -58
  556. package/server/services/workshop/agents/industrial/dcw-tools.ts +7 -1
  557. package/server/services/workshop/agents/industrial/identifiability-tools.ts +247 -0
  558. package/server/services/workshop/agents/industrial/index.ts +1 -0
  559. package/server/services/workshop/agents/industrial/manual-approval.ts +3 -1
  560. package/server/services/workshop/agents/industrial/ops-tools.ts +58 -15
  561. package/server/services/workshop/agents/industrial/optimization-tools.ts +33 -19
  562. package/server/services/workshop/agents/plugin-governance.ts +22 -2
  563. package/server/services/workshop/aml/action-coverage.ts +253 -0
  564. package/server/services/workshop/aml/causal-claim.ts +68 -0
  565. package/server/services/workshop/aml/dataset-builder.ts +19 -0
  566. package/server/services/workshop/aml/gates.ts +45 -1
  567. package/server/services/workshop/aml/identifiability.ts +335 -0
  568. package/server/services/workshop/aml/intervention-ledger.ts +281 -0
  569. package/server/services/workshop/aml/ontology-learning.ts +143 -0
  570. package/server/services/workshop/aml/twin/cross-check.ts +176 -0
  571. package/server/services/workshop/daq/daq-controller/contracts.ts +3 -0
  572. package/server/services/workshop/daq/daq-controller/crud.ts +12 -2
  573. package/server/services/workshop/daq/daq-controller/push.ts +22 -0
  574. package/server/services/workshop/daq/drivers/mqtt.ts +28 -0
  575. package/server/services/workshop/daq/drivers/shared.ts +6 -0
  576. package/server/services/workshop/db/database/open.ts +2 -0
  577. package/server/services/workshop/db/database/rows.ts +4 -1
  578. package/server/services/workshop/db/database/schema.ts +38 -2
  579. package/server/services/workshop/db/message.repo.ts +10 -3
  580. package/server/services/workshop/dcw/dcw-controller/write-audit.ts +21 -1
  581. package/server/services/workshop/process-model/experiment-runner.ts +393 -0
  582. package/server/services/workshop/process-model/experiment.ts +25 -10
  583. package/server/services/workshop/runtime/agent-runtime/lifecycle.ts +34 -11
  584. package/server/services/workshop/runtime/agent-runtime/state.ts +6 -1
  585. package/server/services/workshop/settings.ts +4 -1
  586. package/server/services/workshop/types/a2a.ts +16 -1
  587. package/shared/config/schema.json +2 -0
  588. package/shared/dcw-protocol/closed-loop.ts +2 -0
  589. package/.output/public/_nuxt/builds/meta/1231252d-2864-43c0-83b2-4e70d3b86dea.json +0 -1
@@ -0,0 +1,393 @@
1
+ /**
2
+ * 参数试验计划执行器(科学探索计划 P4,docs/plans/2026-11-02-scientific-exploration-plan.md):
3
+ * 把 process_model_experiments 从"仅仿真线可建"升级为**治理分档**:
4
+ * - simulated=true → tier=sim_auto:建计划即可执行(既有行为不变);
5
+ * - 真实线 → tier=real_hitl:建计划落 awaiting_approval,须单卡 HITL 批准(卡上带成本核算)
6
+ * 后转 planned 才能执行。
7
+ * 执行语义(正交化由机制保证,不靠 Agent 自觉):
8
+ * - 步序 = repeats × levels,默认 seeded 随机化(randomizedOrder=false 时按原序);
9
+ * - 每步:写控制(走 DcwController.write 咽喉,source=agent → 步长/60s 间隔/保持窗照常生效)
10
+ * → 等 settleMs → 等 observeMs → 下一步;
11
+ * - 预算:步数上限 + 总时长上限,超限即 FAILED 并写明原因(不静默续跑);
12
+ * - abortOnAlarm:每步前查告警,命中即 FAILED(剩余步不执行);
13
+ * - 台账:写咽喉已自动落 intervention_events(hypothesis 前缀 [pexp:<id>] 建立关联),
14
+ * 计划结束时按台账汇总 verdict 分布进计划状态。
15
+ * 副作用全部经注入(测试可替换),默认实现走真实控制器/数采/告警仓储。
16
+ */
17
+ import { createHash } from 'node:crypto'
18
+ import { AppError } from '../../../utils/errors'
19
+ import { getDcwLineRepo } from '../dcw/dcw-line.repo'
20
+ import { getDcwController } from '../dcw/dcw-controller'
21
+ import { getRecipeRollBackManager } from '../dcw/recipe-rollback-manager'
22
+ import { getDaqController } from '../daq/daq-controller'
23
+ import { getAmlRuntime } from '../aml/runtime'
24
+ import { getExperimentPlan, updateExperimentStatus, type ExperimentPlanRow } from './experiment'
25
+ import { assessIdentifiability, dominantPeriod } from '../aml/identifiability'
26
+ import { attachAssessment, listInterventions, verdictCodeOf, verdictDetailOf } from '../aml/intervention-ledger'
27
+ import { backfillInterventionEvidence } from '../aml/ontology-learning'
28
+
29
+ export interface ExperimentPlanBody {
30
+ version: 1
31
+ lineId: string
32
+ simSceneId: string | null
33
+ specId: string | null
34
+ levels: Record<string, number[]>
35
+ repeats: number
36
+ settleMs: number
37
+ observeMs: number
38
+ randomizedOrder: boolean
39
+ abortOnAlarm: boolean
40
+ design: string
41
+ tier?: 'sim_auto' | 'real_hitl'
42
+ /** 主控制量 → 观测目标节点(执行时读回);缺省取 spec 或首个控制量,无目标则跳过判读 */
43
+ targets?: Record<string, string>
44
+ /** 创建时核算的成本(人读 + 机读) */
45
+ cost?: ExperimentCost
46
+ /** 真实线批准凭据(approveExperimentPlan 写入) */
47
+ approvalId?: string
48
+ approvedBy?: string
49
+ approvedAt?: string
50
+ note?: string
51
+ }
52
+
53
+ export interface ExperimentCost {
54
+ /** 各控制量中最大的水平数(展示用) */
55
+ levelsPerControl: number
56
+ /** 全部控制量水平数之和(步数基数) */
57
+ levelsTotal: number
58
+ controls: number
59
+ repeats: number
60
+ steps: number
61
+ perStepMs: number
62
+ totalDurationMs: number
63
+ /** 建议的单步响应窗(ms):已知主导周期时为 3×周期,否则 = settleMs */
64
+ suggestedWindowMs: number | null
65
+ dominantPeriodMs: number | null
66
+ summary: string
67
+ }
68
+
69
+ export interface ExperimentStep {
70
+ index: number
71
+ controlId: string
72
+ level: number
73
+ repeat: number
74
+ }
75
+
76
+ /** 真/仿真产线分档(不 throw:调用方按 tier 决定是否挂 HITL) */
77
+ export function resolveExperimentTier(lineId: string): { lineId: string, lineName: string, simulated: boolean, tier: 'sim_auto' | 'real_hitl', simSceneId?: string } {
78
+ const line = getDcwLineRepo().byId(lineId)
79
+ if (!line) throw new AppError(404, 'LINE_NOT_FOUND', `产线 ${lineId} 不存在`)
80
+ const simulated = line.simulated === true
81
+ return { lineId: line.id, lineName: line.name, simulated, tier: simulated ? 'sim_auto' : 'real_hitl', simSceneId: line.simSceneId }
82
+ }
83
+
84
+ /** 真实线下 60s 节点最小间隔(与 write() 的在线写联锁同口径) */
85
+ const REAL_MIN_STEP_MS = 60_000
86
+
87
+ /**
88
+ * 成本核算(创建时就算给用户看):步数 × 每步驻留。真实线每步至少 60s(写间隔联锁),
89
+ * 仿真线不受此限。已知主导周期时,建议窗 = 3×周期,单步驻留取 max(settle, 建议窗, 60s)。
90
+ */
91
+ export function estimateExperimentCost(plan: Pick<ExperimentPlanBody, 'levels' | 'repeats' | 'settleMs' | 'observeMs' | 'tier'>, opts: { dominantPeriodMs?: number | null } = {}): ExperimentCost {
92
+ const controls = Object.keys(plan.levels).length
93
+ const levelsPerControl = Math.max(0, ...Object.values(plan.levels).map(v => v.length))
94
+ // 步数 = 各控制量水平数之和 × 轮数(不是 max×控制量数 —— 控制量水平数可以不同)
95
+ const levelsTotal = Object.values(plan.levels).reduce((a, v) => a + v.length, 0)
96
+ const repeats = plan.repeats
97
+ const steps = levelsTotal * repeats
98
+ const period = opts.dominantPeriodMs ?? null
99
+ const suggestedWindowMs = period != null && period > 0 ? Math.round(3 * period) : null
100
+ const minStep = plan.tier === 'real_hitl' ? REAL_MIN_STEP_MS : 0
101
+ const holdMs = Math.max(plan.settleMs, suggestedWindowMs ?? 0, minStep)
102
+ const perStepMs = holdMs + plan.observeMs
103
+ const totalDurationMs = steps * perStepMs
104
+ const summary = `${controls} 个控制量共 ${levelsTotal} 个水平 × ${repeats} 轮 = ${steps} 步;每步 ${Math.round(perStepMs / 1000)}s(驻留 ${Math.round(holdMs / 1000)}s${
105
+ suggestedWindowMs != null ? `,含 3×主导周期 ${(suggestedWindowMs / 1000).toFixed(1)}s` : ''
106
+ }${minStep ? ',真实线 60s 写间隔下限' : ''} + 观测 ${Math.round(plan.observeMs / 1000)}s);预计总时长 ≈ ${(totalDurationMs / 3600_000).toFixed(2)} 小时`
107
+ return { levelsPerControl, levelsTotal, controls, repeats, steps, perStepMs, totalDurationMs, suggestedWindowMs, dominantPeriodMs: period, summary }
108
+ }
109
+
110
+ function seededShuffle<T>(items: T[], seed: number): T[] {
111
+ let a = seed >>> 0
112
+ const rnd = () => {
113
+ a |= 0
114
+ a = (a + 0x6D2B79F5) | 0
115
+ let t = Math.imul(a ^ (a >>> 15), 1 | a)
116
+ t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t
117
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296
118
+ }
119
+ const out = [...items]
120
+ for (let i = out.length - 1; i > 0; i--) {
121
+ const j = Math.floor(rnd() * (i + 1))
122
+ const tmp = out[i]!
123
+ out[i] = out[j]!
124
+ out[j] = tmp
125
+ }
126
+ return out
127
+ }
128
+
129
+ /**
130
+ * 生成执行步序:按 repeats × (control,level) 展开,randomizedOrder 时用计划 id 派生种子洗牌
131
+ * (同一计划可复现;跨控制量也打散,避免"先把一个 MV 走完再走另一个"带来的时间混杂)。
132
+ */
133
+ export function buildExperimentSteps(plan: ExperimentPlanBody, planId: string): ExperimentStep[] {
134
+ const base: Array<{ controlId: string, level: number, repeat: number }> = []
135
+ for (let r = 0; r < plan.repeats; r++) {
136
+ for (const [controlId, levels] of Object.entries(plan.levels)) {
137
+ for (const level of levels) base.push({ controlId, level, repeat: r })
138
+ }
139
+ }
140
+ const seed = createHash('sha256').update(planId).digest().readUInt32BE(0)
141
+ const ordered = plan.randomizedOrder ? seededShuffle(base, seed) : base
142
+ return ordered.map((s, index) => ({ index, ...s }))
143
+ }
144
+
145
+ export function parsePlan(row: ExperimentPlanRow): ExperimentPlanBody {
146
+ return JSON.parse(row.planJson) as ExperimentPlanBody
147
+ }
148
+
149
+ /** 真实线批准:awaiting_approval → planned(记录批准凭据;幂等) */
150
+ export function approveExperimentPlan(id: string, approvalId: string, approvedBy: string): ExperimentPlanRow {
151
+ const row = getExperimentPlan(id)
152
+ if (!row) throw new AppError(404, 'EXPERIMENT_PLAN_NOT_FOUND', `试验计划 ${id} 不存在`)
153
+ const plan = parsePlan(row)
154
+ if (row.status === 'planned' && plan.approvalId) return row
155
+ if (row.status !== 'awaiting_approval') {
156
+ throw new AppError(409, 'EXPERIMENT_STATUS_INVALID', `计划 ${id} 当前状态 ${row.status},只有 awaiting_approval 可批准`)
157
+ }
158
+ const next: ExperimentPlanBody = { ...plan, approvalId, approvedBy, approvedAt: new Date().toISOString() }
159
+ const db = getAmlRuntime().db
160
+ db.prepare('UPDATE process_model_experiments SET plan_json = ?, status = \'planned\', updated_at = ? WHERE id = ?')
161
+ .run(JSON.stringify(next), new Date().toISOString(), id)
162
+ return getExperimentPlan(id)!
163
+ }
164
+
165
+ // ---------- 执行 ----------
166
+
167
+ export interface ExperimentRunnerDeps {
168
+ /** 写控制(默认走 DcwController.write 咽喉;测试注入) */
169
+ write?: (controlId: string, level: number, meta: { hypothesis: string, planId: string, stepIndex: number }) => Promise<{ ok: boolean, message?: string, recordId?: string }>
170
+ /** 关闭单步调控记录(默认 judge=rollback 关闭不执行回退;测试注入) */
171
+ closeRecord?: (recordId: string, reason: string) => void
172
+ /** 读目标窗均值(默认 daq samples;测试注入) */
173
+ readTargetMean?: (targetNodeId: string, fromMs: number, toMs: number) => Promise<number | null>
174
+ /** 读目标窗序列(默认 daq samples;判定用;缺省跳过引擎判读) */
175
+ readTargetSeries?: (targetNodeId: string, fromMs: number, toMs: number) => Promise<number[]>
176
+ /** 告警检查(默认查 audit_log 最近一条 level=error 的 alarm 行;测试注入) */
177
+ alarmActive?: (lineId: string, sinceMs: number) => Promise<boolean>
178
+ sleep?: (ms: number) => Promise<void>
179
+ /** 时钟(测试可推进) */
180
+ now?: () => number
181
+ }
182
+
183
+ export interface ExperimentRunResult {
184
+ planId: string
185
+ status: 'done' | 'failed' | 'cancelled'
186
+ executedSteps: number
187
+ totalSteps: number
188
+ failedReason?: string
189
+ verdicts: Record<string, number>
190
+ startedAt: string
191
+ finishedAt: string
192
+ }
193
+
194
+ function defaultWrite(): NonNullable<ExperimentRunnerDeps['write']> {
195
+ return async (controlId, level, meta) => {
196
+ try {
197
+ const outcome = await getDcwController().write(controlId, level, null, {
198
+ source: 'agent',
199
+ actor: `plan:${meta.planId}`,
200
+ actorName: `试验计划 ${meta.planId}`,
201
+ hypothesis: meta.hypothesis,
202
+ })
203
+ return { ok: outcome.ok !== false, message: outcome.message, recordId: outcome.recordId }
204
+ }
205
+ catch (err) {
206
+ return { ok: false, message: err instanceof Error ? err.message : String(err) }
207
+ }
208
+ }
209
+ }
210
+
211
+ /**
212
+ * 关闭单步的调控闭环记录(默认实现):不关闭会让下一步被"单一开放记录"守卫拒绝
213
+ * (beforeWrite: 正在优化试验中)。judge('rollback') 按设计只落判定、记录仍 open,
214
+ * 因此用 keep + takeover:关闭记录但**跳过好锚晋升**(试验步是探索,不是产能优化,
215
+ * 不应污染 keep 锚点链)。
216
+ */
217
+ function defaultCloseRecord(): NonNullable<ExperimentRunnerDeps['closeRecord']> {
218
+ return (recordId, reason) => {
219
+ try {
220
+ getRecipeRollBackManager().judge(recordId, 'keep', reason, 'system', 'experiment-plan', { takeover: true })
221
+ }
222
+ catch { /* 已关闭/记录不存在:不影响执行 */ }
223
+ }
224
+ }
225
+
226
+ const sleepReal = (ms: number) => new Promise<void>(r => setTimeout(r, ms))
227
+
228
+ export async function runExperimentPlan(id: string, deps: ExperimentRunnerDeps = {}): Promise<ExperimentRunResult> {
229
+ const row = getExperimentPlan(id)
230
+ if (!row) throw new AppError(404, 'EXPERIMENT_PLAN_NOT_FOUND', `试验计划 ${id} 不存在`)
231
+ const plan = parsePlan(row)
232
+ const tier = plan.tier ?? (resolveExperimentTier(plan.lineId).tier)
233
+ if (row.status === 'running') throw new AppError(409, 'EXPERIMENT_ALREADY_RUNNING', `计划 ${id} 正在执行`)
234
+ if (row.status !== 'planned') {
235
+ throw new AppError(409, 'EXPERIMENT_STATUS_INVALID', `计划 ${id} 当前状态 ${row.status},只有 planned 可执行${tier === 'real_hitl' ? '(真实线须先 HITL 批准)' : ''}`)
236
+ }
237
+ // 真实线执行前复核批准凭据(防"建完直接跑"绕过 HITL)
238
+ if (tier === 'real_hitl' && !plan.approvalId) {
239
+ throw new AppError(409, 'EXPERIMENT_APPROVAL_REQUIRED', `计划 ${id} 为真实产线计划,缺少 HITL 批准凭据,拒绝执行`)
240
+ }
241
+ const budget = JSON.parse(row.budgetJson) as { maxRuns?: number, maxDurationMs?: number }
242
+ const steps = buildExperimentSteps(plan, id)
243
+ if (budget.maxRuns && steps.length > budget.maxRuns) {
244
+ updateExperimentStatus(id, 'failed')
245
+ return {
246
+ planId: id, status: 'failed', executedSteps: 0, totalSteps: steps.length,
247
+ failedReason: `步数 ${steps.length} 超预算 maxRuns=${budget.maxRuns}(创建即拒绝执行)`,
248
+ verdicts: {}, startedAt: new Date().toISOString(), finishedAt: new Date().toISOString(),
249
+ }
250
+ }
251
+
252
+ const write = deps.write ?? defaultWrite()
253
+ const closeRecord = deps.closeRecord ?? defaultCloseRecord()
254
+ const readTarget = deps.readTargetMean ?? (async (nodeId, fromMs, toMs) => {
255
+ try {
256
+ const pts = await getDaqController().samples(nodeId, { fromMs, toMs, bucketMs: 1000, limit: 600 }) as Array<{ value?: number, avg?: number }>
257
+ const vals = pts.map(p => Number(p.value ?? p.avg)).filter(Number.isFinite)
258
+ return vals.length ? vals.reduce((a, b) => a + b, 0) / vals.length : null
259
+ }
260
+ catch {
261
+ return null
262
+ }
263
+ })
264
+ const alarmActive = deps.alarmActive ?? (async (lineId, sinceMs) => {
265
+ try {
266
+ const hit = getAmlRuntime().db.prepare(`SELECT id FROM audit_log WHERE line_id = ? AND level = 'error' AND created_at >= ? LIMIT 1`)
267
+ .get(lineId, new Date(sinceMs).toISOString()) as { id?: string } | undefined
268
+ return !!hit
269
+ }
270
+ catch {
271
+ return false
272
+ }
273
+ })
274
+ const readSeries = deps.readTargetSeries ?? (async (nodeId, fromMs, toMs) => {
275
+ try {
276
+ const pts = await getDaqController().samples(nodeId, { fromMs, toMs, bucketMs: 1000, limit: Math.max(60, Math.ceil((toMs - fromMs) / 1000) + 10) }) as Array<{ value?: number, avg?: number }>
277
+ return pts.map(p => Number(p.value ?? p.avg)).filter(Number.isFinite)
278
+ }
279
+ catch {
280
+ return []
281
+ }
282
+ })
283
+ const sleep = deps.sleep ?? sleepReal
284
+ const now = deps.now ?? (() => Date.now())
285
+
286
+ updateExperimentStatus(id, 'running')
287
+ const startedAt = new Date(now()).toISOString()
288
+ const started = now()
289
+ // 计划级主导周期估计:用一段长历史(≥30min 与 6×settle 的较大者)估一次,
290
+ // 逐步判定统一使用 —— 短窗局部自相关会把局部纹波当周期(事故形态)。
291
+ let expectedPeriodMs: number | undefined
292
+ const firstTarget = plan.targets ? Object.values(plan.targets)[0] : undefined
293
+ if (firstTarget) {
294
+ try {
295
+ const longMs = Math.max(30 * 60_000, plan.settleMs * 6)
296
+ const longSeries = await readSeries(firstTarget, now() - longMs, now())
297
+ if (longSeries.length >= 64) {
298
+ const p = dominantPeriod(longSeries)
299
+ // 长历史必须覆盖 ≥3 个周期才采信该估计
300
+ if (p.lagBeats != null && longSeries.length / p.lagBeats >= 3) expectedPeriodMs = p.lagBeats * 1000
301
+ }
302
+ }
303
+ catch { /* 估计失败退回逐步检测 */ }
304
+ }
305
+ let executed = 0
306
+ let failedReason: string | undefined
307
+
308
+ for (const step of steps) {
309
+ // 预算:总时长超限即停(不静默续跑)
310
+ if (budget.maxDurationMs && now() - started > budget.maxDurationMs) {
311
+ failedReason = `超出预算 maxDurationMs=${budget.maxDurationMs}ms(已执行 ${executed}/${steps.length} 步)`
312
+ break
313
+ }
314
+ if (plan.abortOnAlarm && await alarmActive(plan.lineId, started)) {
315
+ failedReason = `告警中止(abortOnAlarm):第 ${executed + 1} 步前检测到产线告警,剩余 ${steps.length - executed} 步未执行`
316
+ break
317
+ }
318
+ const hypothesis = `[pexp:${id}] 试验步 ${step.index + 1}/${steps.length}:${step.controlId}=${step.level}(第 ${step.repeat + 1} 轮)`
319
+ const res = await write(step.controlId, step.level, { hypothesis, planId: id, stepIndex: step.index })
320
+ if (!res.ok) {
321
+ failedReason = `第 ${step.index + 1} 步写入被拒:${res.message ?? '未知原因'}`
322
+ break
323
+ }
324
+ executed++
325
+ const writeAt = now()
326
+ await sleep(plan.settleMs)
327
+ // 观测窗 + 引擎判读:有目标映射时,写前窗/写后窗各取一次序列交给可辨识性引擎,
328
+ // 判定回填本步干预台账(与 optimization_explore 同口径);无目标则只驻留。
329
+ const target = plan.targets?.[step.controlId]
330
+ if (target) {
331
+ const pre = await readSeries(target, writeAt - plan.settleMs, writeAt)
332
+ await sleep(plan.observeMs)
333
+ const post = await readSeries(target, writeAt, now())
334
+ await readTarget(target, writeAt, now())
335
+ if (pre.length >= 8 && post.length >= 8) {
336
+ try {
337
+ const v = assessIdentifiability({ pre, post, beatMs: 1000, ...(expectedPeriodMs != null ? { expectedPeriodMs } : {}) })
338
+ // 写咽喉落行时若无 targetNodeId 会标 unassessed(尚无判定)—— 两者都视为"待判定"
339
+ const row = listInterventions({ nodeId: step.controlId, limit: 50 })
340
+ .find(r => r.hypothesis.startsWith(`[pexp:${id}]`) && (r.verdict === 'pending' || r.verdict === 'unassessed'))
341
+ if (row) {
342
+ attachAssessment(row.id, {
343
+ verdict: verdictCodeOf(v),
344
+ effect: v.effect,
345
+ ciLow: v.ciLow,
346
+ ciHigh: v.ciHigh,
347
+ mde: v.mde,
348
+ targetNodeId: target,
349
+ detail: verdictDetailOf(v),
350
+ })
351
+ // P6:判定回灌本体证据(有已发布本体才落;幂等)
352
+ const updated = listInterventions({ nodeId: step.controlId, limit: 1 })[0]
353
+ if (updated) {
354
+ try {
355
+ backfillInterventionEvidence(updated)
356
+ }
357
+ catch { /* 证据登记失败不影响执行 */ }
358
+ }
359
+ }
360
+ }
361
+ catch { /* 判读失败按未判定处理 */ }
362
+ }
363
+ }
364
+ else {
365
+ await sleep(plan.observeMs)
366
+ }
367
+ // 关闭本步调控记录(否则下一步会被"单一开放记录"守卫拒绝)
368
+ if (res.recordId) closeRecord(res.recordId, `试验计划 ${id} 第 ${step.index + 1} 步执行完成,由计划执行器关闭(关闭记录不晋升锚点)`)
369
+ }
370
+
371
+ // 台账汇总:按 hypothesis 前缀 [pexp:<id>] 找本次计划的干预行
372
+ const verdicts: Record<string, number> = {}
373
+ try {
374
+ const involved = new Set(Object.keys(plan.levels))
375
+ const rows = listInterventions({ lineId: plan.lineId, limit: 200 })
376
+ .filter(r => involved.has(r.nodeId) && r.hypothesis.startsWith(`[pexp:${id}]`))
377
+ for (const r of rows) verdicts[r.verdict] = (verdicts[r.verdict] ?? 0) + 1
378
+ }
379
+ catch { /* 台账不可读不影响执行结果 */ }
380
+
381
+ const status: ExperimentRunResult['status'] = failedReason ? 'failed' : 'done'
382
+ updateExperimentStatus(id, status)
383
+ return {
384
+ planId: id,
385
+ status,
386
+ executedSteps: executed,
387
+ totalSteps: steps.length,
388
+ ...(failedReason ? { failedReason } : {}),
389
+ verdicts,
390
+ startedAt,
391
+ finishedAt: new Date(now()).toISOString(),
392
+ }
393
+ }
@@ -1,13 +1,16 @@
1
1
  /**
2
- * 模拟参数试验计划(G2.11 / C9 / A9):
3
- * - 只有 simulated=true 的产线可发起;真实线 → SIM_ONLY_VIOLATION;
4
- * - 计划只落 process_model_experiments;动作明细仍走既有 optimization_explorations/DCW 记录
2
+ * 参数试验计划(G2.11 / C9 / A9;P4 治理分档 2026-11-02):
3
+ * - simulated=true → tier=sim_auto,建计划即可执行(既有行为不变);
4
+ * - 真实线 → tier=real_hitl,创建后落 awaiting_approval,须 approveExperimentPlan
5
+ * 单卡 HITL 批准(卡上带成本核算)后才能由 runExperimentPlan 执行;
6
+ * - 计划只落 process_model_experiments;动作明细仍走既有 DCW 写咽喉/台账
5
7
  * (不制造第二套写设备账本)。
6
8
  */
7
9
  import type { DatabaseSync } from 'node:sqlite'
8
10
  import { AppError } from '../../../utils/errors'
9
11
  import { getAmlRuntime } from '../aml/runtime'
10
12
  import { getDcwLineRepo } from '../dcw/dcw-line.repo'
13
+ import { estimateExperimentCost, resolveExperimentTier, type ExperimentPlanBody, type ExperimentCost } from './experiment-runner'
11
14
 
12
15
  export interface ExperimentPlanInput {
13
16
  lineId: string
@@ -21,6 +24,10 @@ export interface ExperimentPlanInput {
21
24
  abortOnAlarm?: boolean
22
25
  budget?: { maxRuns?: number, maxDurationMs?: number }
23
26
  createdBy?: string
27
+ /** MV → 观测目标节点(执行时读回;缺省不读) */
28
+ targets?: Record<string, string>
29
+ /** 已知主导扰动周期(ms;来自可辨识性引擎):成本核算按 3×周期给建议窗 */
30
+ dominantPeriodMs?: number
24
31
  }
25
32
 
26
33
  export interface ExperimentPlanRow {
@@ -44,7 +51,7 @@ export function assertSimulatedLine(lineId: string): { id: string, simSceneId?:
44
51
  }
45
52
 
46
53
  export function createExperimentPlan(input: ExperimentPlanInput): ExperimentPlanRow {
47
- const line = assertSimulatedLine(input.lineId)
54
+ const tierInfo = resolveExperimentTier(input.lineId)
48
55
  if (!Object.keys(input.levels).length) throw new AppError(422, 'EXPERIMENT_PLAN_INVALID', '至少需要 1 个 MV 的水平序列')
49
56
  for (const [id, levels] of Object.entries(input.levels)) {
50
57
  if (!Array.isArray(levels) || levels.length < 2) throw new AppError(422, 'EXPERIMENT_PLAN_INVALID', `MV ${id} 至少需要 2 个水平(阶跃/多水平)`)
@@ -57,10 +64,15 @@ export function createExperimentPlan(input: ExperimentPlanInput): ExperimentPlan
57
64
  const db = getAmlRuntime().db
58
65
  const id = `pexp-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 6)}`
59
66
  const now = new Date().toISOString()
60
- const plan = {
67
+ // P4 成本前置:创建时就核算(真实线含 60s 写间隔下限;已知主导周期时按 3×周期建议窗)
68
+ const cost: ExperimentCost = estimateExperimentCost(
69
+ { levels: input.levels, repeats, settleMs, observeMs, tier: tierInfo.tier },
70
+ { dominantPeriodMs: input.dominantPeriodMs ?? null },
71
+ )
72
+ const plan: ExperimentPlanBody = {
61
73
  version: 1,
62
74
  lineId: input.lineId,
63
- simSceneId: line.simSceneId ?? null,
75
+ simSceneId: tierInfo.simSceneId ?? null,
64
76
  specId: input.specId ?? null,
65
77
  levels: input.levels,
66
78
  repeats,
@@ -69,12 +81,15 @@ export function createExperimentPlan(input: ExperimentPlanInput): ExperimentPlan
69
81
  randomizedOrder: input.randomizedOrder !== false,
70
82
  abortOnAlarm: input.abortOnAlarm !== false,
71
83
  design: 'stepped_multi_level',
72
- note: '动作明细写入既有 optimization_explorations/DCW 账本;本台账只保存计划与状态',
84
+ tier: tierInfo.tier,
85
+ ...(input.targets ? { targets: input.targets } : {}),
86
+ cost,
87
+ note: '动作明细经 DCW 写咽喉落 intervention_events([pexp:<id>] 前缀关联);本台账只保存计划与状态',
73
88
  }
74
- const budget = { maxRuns: input.budget?.maxRuns ?? 20, maxDurationMs: input.budget?.maxDurationMs ?? 4 * 3600_000 }
89
+ const budget = { maxRuns: input.budget?.maxRuns ?? Math.max(20, cost.steps), maxDurationMs: input.budget?.maxDurationMs ?? 4 * 3600_000 }
75
90
  db.prepare(`INSERT INTO process_model_experiments (id, line_id, plan_json, status, budget_json, created_by, created_at, updated_at)
76
- VALUES (?, ?, ?, 'planned', ?, ?, ?, ?)`)
77
- .run(id, input.lineId, JSON.stringify(plan), JSON.stringify(budget), input.createdBy ?? '', now, now)
91
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`)
92
+ .run(id, input.lineId, JSON.stringify(plan), tierInfo.tier === 'real_hitl' ? 'awaiting_approval' : 'planned', JSON.stringify(budget), input.createdBy ?? '', now, now)
78
93
  return this_get(db, id)!
79
94
  }
80
95
 
@@ -42,19 +42,42 @@ export abstract class AgentRuntimeLifecycle extends AgentRuntimeState {
42
42
  this.deps.mailbox.close()
43
43
  // 状态广播:前端经 WS agent.status 实时反映 stopped
44
44
  this.deps.bus.notifyAgent({ agentId: this.agentId, state: 'stopped', ...this.queueContext() })
45
- // 宽限等待消费循环退出,但**不无限等**:impl 若不响应 abort(如长 sleep 的
46
- // mock/外部进程卡死),HTTP stop 请求会无限悬挂(实测 30s×8 全超时)。
47
- // 超过宽限即放行 —— loop 自身的 finally 稍后自行收尾,dispose 照常执行。
48
- await Promise.race([
49
- this.loopPromise?.catch(() => { }),
50
- new Promise(r => setTimeout(r, 10_000)),
51
- ])
52
- // 清理 impl 持有的资源(omp 子进程等);容错:impl.dispose 可能不存在
45
+ // R-1(2026-11-01):dispose 从 stop() 的同步链路下放后台。
46
+ // 旧行为:await 宽限(≤10s)+ await impl.dispose(omp client 内含 ≤3s SIGKILL
47
+ // 等待)——调用方(HTTP 管理动作/D1 兜底/实例删除)在卸载窗口内被同步占住;
48
+ // 该窗口叠加事件循环繁忙时,健康探针连续 3 次失联 → 守护判僵死 SIGKILL 整个
49
+ // 服务进程(实测:"卸载一个 agent"演化为"全站活性风险")。
50
+ // 新语义:墓碑已立(索引已摘/信箱已关/广播已发),剩余收尾(宽限循环退出 +
51
+ // 子进程终止)不阻塞任何调用方;收尾全程容错并在完成后二次广播 stopped。
52
+ // stop() 的 await 语义保留给**同步可完成的部分**;后台收尾失败仅记日志,
53
+ // 不影响系统活性 —— 卸载与全站活性从此解耦。
54
+ void this.disposeInBackground()
55
+ }
56
+
57
+ /** R-1:后台收尾(宽限消费循环退出 → dispose impl)。失败只记日志,不反压调用方。 */
58
+ private async disposeInBackground(): Promise<void> {
53
59
  try {
54
- await this.impl.dispose?.()
60
+ // 宽限等待消费循环退出,但**不无限等**:impl 若不响应 abort(如长 sleep 的
61
+ // mock/外部进程卡死),超过宽限即放行 —— loop 自身的 finally 稍后自行收尾。
62
+ await Promise.race([
63
+ this.loopPromise?.catch(() => { }),
64
+ new Promise(r => setTimeout(r, 10_000)),
65
+ ])
66
+ // 清理 impl 持有的资源(omp 子进程等);容错:impl.dispose 可能不存在
67
+ try {
68
+ await this.impl.dispose?.()
69
+ }
70
+ catch (err) {
71
+ log.error(`[AgentRuntime:${this.agentId}] dispose 失败:`, err)
72
+ }
55
73
  }
56
- catch (err) {
57
- log.error(`[AgentRuntime:${this.agentId}] dispose 失败:`, err)
74
+ finally {
75
+ // 收尾完成(或放行)后补一次状态广播:消费循环若在宽限后才退出,
76
+ // 其 finally 内的状态广播可能晚于本条;此处保证 stopped 是最后一条。
77
+ try {
78
+ this.deps.bus.notifyAgent({ agentId: this.agentId, state: 'stopped', ...this.queueContext() })
79
+ }
80
+ catch { /* 广播失败不影响收尾 */ }
58
81
  }
59
82
  }
60
83
 
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { AgentRuntimeContracts } from './contracts'
6
6
  import type { A2AMessage } from '../../types/a2a'
7
+ import { isHumanChatDelivery } from '../../types/a2a'
7
8
  import type { AgentEvent, AgentInfo, AgentInterface, AgentWorkspace } from '../../agents/agent-interface'
8
9
  import type { AgentMemory } from '../memory'
9
10
  import type { AgentStatusView, AgentTaskQueueView, HarnessContinuityView, SupervisionAttemptView } from '../../types/task'
@@ -370,7 +371,11 @@ export abstract class AgentRuntimeState extends AgentRuntimeContracts {
370
371
  try {
371
372
  const deadline = Date.now() + Math.max(0, waitMs)
372
373
  for (;;) {
373
- const msgs = await this.deps.mailbox.peek(limit)
374
+ // 人类群聊投递不交给 poll 认领:必须留给消息回合收尾的 platformReply 回写群聊。
375
+ // (poll 取走后文本只留在 Agent 会话里,用户永远收不到答复——实测故障。)
376
+ const msgs = (await this.deps.mailbox.peek(Math.max(limit, 10)))
377
+ .filter(m => !isHumanChatDelivery(m))
378
+ .slice(0, limit)
374
379
  if (msgs.length > 0 || Date.now() >= deadline) return msgs
375
380
  const { promise, resolve } = Promise.withResolvers<unknown>()
376
381
  const off = this.deps.mailbox.onArrival(() => resolve(undefined))
@@ -332,7 +332,7 @@ export interface AmlSettings {
332
332
  job: { timeoutMs: number, maxConcurrent: number, diskQuotaMb: number, stallMs: number, logTailLines: number }
333
333
  dataset: { maxRows: number, retentionDays: number, allowCrossRecipe: boolean }
334
334
  model: { retiredKeepDays: number }
335
- gates: { nrmse: number, rolloutNrmse: number, valTestGap: number, minRows: number, minRuns: number }
335
+ gates: { nrmse: number, rolloutNrmse: number, valTestGap: number, minRows: number, minRuns: number, minControlLevels: number, maxCollinearity: number }
336
336
  }
337
337
  /** AML 自动建模平台运行语义(live 键热生效;logTailLines 非描述符键,固定缺省) */
338
338
  export function amlSettings(): AmlSettings {
@@ -363,6 +363,9 @@ export function amlSettings(): AmlSettings {
363
363
  valTestGap: Number(get('gates.valTestGap', 0.20)),
364
364
  minRows: Number(get('gates.minRows', 500)),
365
365
  minRuns: Number(get('gates.minRuns', 3)),
366
+ // P3/G6 动作覆盖门:控制量至少 3 个水平(可区分线性/二次),与时间序号 |r| ≤ 0.9
367
+ minControlLevels: Number(get('gates.minControlLevels', 3)),
368
+ maxCollinearity: Number(get('gates.maxCollinearity', 0.9)),
366
369
  },
367
370
  }
368
371
  }
@@ -39,11 +39,26 @@ export interface ChannelMail {
39
39
  parts: Part[]
40
40
  metadata: Record<string, unknown>
41
41
  /** 投递状态:pending=未消费 / consuming=消费中 / consumed=已消费 */
42
- state: 'pending' | 'consuming' | 'consumed'
42
+ state: 'pending' | 'consuming' | 'consumed' | 'dead'
43
43
  createdAt: string
44
44
  consumedAt: string | null
45
45
  }
46
46
 
47
+ /**
48
+ * 人类群聊投递消息(平台盖章 x-aw-source-chat-message-id;非 Agent 间协作)。
49
+ *
50
+ * 这类消息必须走消息回合(processMessage)收尾的 platformReply 才能把答复回写群聊;
51
+ * poll_messages 的「读即取」一旦认领,poll 轮次内的文本不会触发 platformReply,
52
+ * 用户就永远收不到回答(实测:15:15 提问被 lead 的 poll 取走,15:50 群聊仍无回复)。
53
+ */
54
+ export function isHumanChatDelivery(m: { metadata?: Record<string, unknown> }): boolean {
55
+ const meta = m.metadata ?? {}
56
+ const from = meta['x-aw-from-agent']
57
+ if (typeof from === 'string' && from.length > 0) return false
58
+ const sourceChatId = meta['x-aw-source-chat-message-id']
59
+ return typeof sourceChatId === 'string' && sourceChatId.length > 0
60
+ }
61
+
47
62
  /** A2A 成果:任务作业产出的内容集合 */
48
63
  export interface A2AArtifact {
49
64
  artifactId: string
@@ -159,6 +159,8 @@
159
159
  { "key": "aml.gates.valTestGap", "type": "number", "group": "aml", "label": "门禁:泛化差", "labelKey": "settings.runtime.aml.gateValTestGap", "description": "门禁 G3:|test-val|/val 相对差上限(防过拟合验证集)", "applies": "live", "default": 0.2, "min": 0.01, "max": 2 },
160
160
  { "key": "aml.gates.minRows", "type": "number", "group": "aml", "label": "门禁:最少样本行", "labelKey": "settings.runtime.aml.gateMinRows", "description": "门禁 G4a:数据集滑窗样本行数下限", "applies": "live", "default": 500, "min": 50, "max": 1000000 },
161
161
  { "key": "aml.gates.minRuns", "type": "number", "group": "aml", "label": "门禁:最少批次数", "labelKey": "settings.runtime.aml.gateMinRuns", "description": "门禁 G4b:数据集覆盖的批次(run)数下限", "applies": "live", "default": 3, "min": 1, "max": 1000 },
162
+ { "key": "aml.gates.minControlLevels", "type": "number", "group": "aml", "label": "门禁 G6:控制量最少水平数", "labelKey": "settings.runtime.aml.gateMinControlLevels", "description": "动作覆盖门 G6:每个 role=control 节点至少出现的历史水平数(<3 无法区分线性/二次,模型学不到动作维度)", "applies": "live", "default": 3, "min": 2, "max": 20 },
163
+ { "key": "aml.gates.maxCollinearity", "type": "number", "group": "aml", "label": "门禁 G6:控制量与时间最大共线", "labelKey": "settings.runtime.aml.gateMaxCollinearity", "description": "动作覆盖门 G6:控制量序列与时间序号 |pearson| 上限(纯阶梯/单调斜坡无论档数多少都与时间不可分;2 水平的 |r| 理论上限仅 0.866)", "applies": "live", "default": 0.9, "min": 0.5, "max": 1 },
162
164
  { "key": "aml.uq.freshDays", "type": "number", "group": "aml", "label": "UQ 证据保鲜天数", "labelKey": "settings.runtime.aml.uqFreshDays", "description": "工件 UQ 校准时间(calibratedAt)超过该天数后建议降级 unverified(需重训刷新证据)", "applies": "live", "default": 7, "min": 1, "max": 365 },
163
165
 
164
166
  { "key": "mcp.enabled", "type": "boolean", "group": "mcp", "label": "启动 MCP 集成", "labelKey": "settings.runtime.mcp.enabled", "description": "允许 aw 工业 MCP(mcp/aw-mcp-server.mjs)连接并操作本实例;停用后 MCP 工具调用将被拒绝(平台 REST 与频道内 agent 不受影响)。也可用环境变量 AW_MCP_ENABLED 覆盖。", "applies": "live", "default": false, "aliases": ["AW_MCP_ENABLED"] },
@@ -23,6 +23,8 @@ export interface DcwWriteMeta {
23
23
  hypothesis?: string
24
24
  /** 精确关联触发本次 Agent 写入的人工审批记录 */
25
25
  approvalId?: string
26
+ /** 触发写入的 Channel(v34 干预台账归因;manual/recipe 等无频道路径缺省为空) */
27
+ channelId?: string
26
28
  /** 写入发生时频道的生效执行模式(observe/manual/auto;2026-10-28 三模式台账口径,事后审计用) */
27
29
  executionMode?: 'observe' | 'manual' | 'auto'
28
30
  /** D8 基准消融臂(仅 AW_BENCH_MODE=1 时被 write() 识别;生产模式恒忽略) */
@@ -1 +0,0 @@
1
- {"id":"1231252d-2864-43c0-83b2-4e70d3b86dea","timestamp":1793420326476,"prerendered":[]}