agentworkshop 0.8.8 → 0.9.1

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 (591) 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/247a0d5c-de27-46a4-8f76-3e64affe9473.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 +2836 -1334
  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 +370 -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 +240 -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 +49 -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 +289 -0
  569. package/server/services/workshop/aml/ontology-learning.ts +143 -0
  570. package/server/services/workshop/aml/twin/cross-check-service.ts +114 -0
  571. package/server/services/workshop/aml/twin/cross-check.ts +176 -0
  572. package/server/services/workshop/daq/daq-controller/contracts.ts +3 -0
  573. package/server/services/workshop/daq/daq-controller/crud.ts +12 -2
  574. package/server/services/workshop/daq/daq-controller/push.ts +22 -0
  575. package/server/services/workshop/daq/drivers/mqtt.ts +28 -0
  576. package/server/services/workshop/daq/drivers/shared.ts +6 -0
  577. package/server/services/workshop/db/database/open.ts +2 -0
  578. package/server/services/workshop/db/database/rows.ts +4 -1
  579. package/server/services/workshop/db/database/schema.ts +38 -2
  580. package/server/services/workshop/db/message.repo.ts +10 -3
  581. package/server/services/workshop/dcw/dcw-controller/write-audit.ts +21 -1
  582. package/server/services/workshop/process-model/experiment-runner.ts +437 -0
  583. package/server/services/workshop/process-model/experiment.ts +31 -10
  584. package/server/services/workshop/process-model/plan-safety.ts +69 -0
  585. package/server/services/workshop/runtime/agent-runtime/lifecycle.ts +34 -11
  586. package/server/services/workshop/runtime/agent-runtime/state.ts +6 -1
  587. package/server/services/workshop/settings.ts +4 -1
  588. package/server/services/workshop/types/a2a.ts +16 -1
  589. package/shared/config/schema.json +2 -0
  590. package/shared/dcw-protocol/closed-loop.ts +2 -0
  591. package/.output/public/_nuxt/builds/meta/1231252d-2864-43c0-83b2-4e70d3b86dea.json +0 -1
@@ -0,0 +1,143 @@
1
+ /**
2
+ * 本体学习闭环(科学探索计划 P6,docs/plans/2026-11-02-scientific-exploration-plan.md):
3
+ * - backfillInterventionEvidence:干预台账的判定(效应/CI/MDE/欠功效/混杂)回灌 ontology_evidence,
4
+ * 以 intervention_events.id 为 source_ref(可追溯、幂等:同一干预不重复登记);
5
+ * - resolveCouplingFromOntology:供 P5 通道 B 查询"该 actuator→target 有没有耦合路径",
6
+ * 三值返回:true=有边;false=已发布本体存在但明确无边;null=未发布本体(unknown,不拦)。
7
+ * 只追加证据,**不改本体版本**(版本变更仍走 draft→approve→publish 人工链)。
8
+ */
9
+ import { createHash } from 'node:crypto'
10
+ import { getOntologyRepo } from '../ontology/repo'
11
+ import type { InterventionEventRow } from './intervention-ledger'
12
+
13
+ function hashOf(s: string): string {
14
+ return createHash('sha256').update(s).digest('hex').slice(0, 32)
15
+ }
16
+
17
+ /** 干预判定 → 证据等级(观测证据,不是人工断言) */
18
+ function evidenceLevelOf(verdict: string): string {
19
+ if (verdict === 'identifiable_effect' || verdict === 'no_resolvable_effect') return 'observed'
20
+ if (verdict === 'underpowered' || verdict === 'confounded') return 'observed_weak'
21
+ return 'observed_unassessed'
22
+ }
23
+
24
+ export interface BackfillResult {
25
+ appended: boolean
26
+ reason: string
27
+ evidenceId?: string
28
+ ontologyId?: string
29
+ }
30
+
31
+ /**
32
+ * 回灌一次干预判定到本体证据账本(targetKind=relation,targetKey=`src->dst`)。
33
+ * 幂等:source_ref = 干预 id,已存在同 sourceRef 的行则跳过。
34
+ */
35
+ export function backfillInterventionEvidence(event: InterventionEventRow): BackfillResult {
36
+ if (!event.targetNodeId) return { appended: false, reason: '干预无 targetNodeId(非判读路径),不登记耦合证据' }
37
+ if (event.verdict === 'pending' || event.verdict === 'unassessed') {
38
+ return { appended: false, reason: `判定 ${event.verdict} 未收口,不登记证据` }
39
+ }
40
+ const repo = getOntologyRepo()
41
+ const version = repo.latestPublishedForLine(event.lineId)
42
+ if (!version) return { appended: false, reason: '该产线无已发布本体,证据暂存于干预台账(发布后可按台账回填)' }
43
+ const targetKey = `${event.nodeId}->${event.targetNodeId}`
44
+ const existing = repo.listEvidence(version.id, { targetKind: 'relation', targetKey, limit: 500 })
45
+ if (existing.some(e => e.sourceRef === event.id)) {
46
+ return { appended: false, reason: '已登记(幂等跳过)', ontologyId: version.id }
47
+ }
48
+ const id = `ev-intv-${event.id}`
49
+ const detail = {
50
+ interventionId: event.id,
51
+ verdict: event.verdict,
52
+ effect: event.effect,
53
+ ciLow: event.ciLow,
54
+ ciHigh: event.ciHigh,
55
+ mde: event.mde,
56
+ fromValue: event.fromValue,
57
+ toValue: event.toValue,
58
+ path: event.path,
59
+ ts: event.ts,
60
+ note: event.verdict === 'no_resolvable_effect'
61
+ ? '窗口充分的负结论:该步幅下无可分辨效应(不是失败)'
62
+ : event.verdict === 'underpowered'
63
+ ? '欠功效:当前步幅/窗长不足,不能据此判定有无耦合'
64
+ : event.verdict === 'confounded'
65
+ ? '被混杂:档位与时间不可分,不能据此判定有无耦合'
66
+ : '效应可分辨(CI 不含 0)',
67
+ }
68
+ repo.appendEvidence({
69
+ id,
70
+ ontologyId: version.id,
71
+ targetKind: 'relation',
72
+ targetKey,
73
+ level: evidenceLevelOf(event.verdict),
74
+ sourceType: 'intervention',
75
+ sourceRef: event.id,
76
+ sourceRefHash: hashOf(JSON.stringify(detail)),
77
+ detailJson: JSON.stringify(detail),
78
+ createdBy: event.actor || 'system',
79
+ createdAt: new Date().toISOString(),
80
+ })
81
+ return { appended: true, reason: '已登记', evidenceId: id, ontologyId: version.id }
82
+ }
83
+
84
+ export interface OntologyCouplingResolution {
85
+ /** true=存在耦合路径;false=本体明确无路径;null=未声明/无已发布本体 */
86
+ hasCouplingPath: boolean | null
87
+ evidence: string[]
88
+ ontologyId?: string
89
+ version?: number
90
+ /** 该耦合的证据支持/否证计数(来自 intervention 回灌) */
91
+ supportCount: number
92
+ refuteCount: number
93
+ }
94
+
95
+ /**
96
+ * P5 通道 B:查询已发布本体里 control→target 的耦合路径。
97
+ * 关系匹配:predicate ∈ influences/actuates 且 src/dst 命中(节点 id → 语义绑定 entity_key 兜底)。
98
+ * 有已发布版本但找不到边 → hasCouplingPath=false(明确断言"无路径",这是可证伪的一等事实)。
99
+ */
100
+ export function resolveCouplingFromOntology(lineId: string, controlNodeId: string, targetNodeId: string): OntologyCouplingResolution {
101
+ const repo = getOntologyRepo()
102
+ const version = repo.latestPublishedForLine(lineId)
103
+ if (!version) return { hasCouplingPath: null, evidence: [], supportCount: 0, refuteCount: 0 }
104
+ const keyOf = (kind: 'dcw' | 'daq', nodeId: string): string[] => {
105
+ const keys = [nodeId]
106
+ try {
107
+ for (const b of repo.listBindingsByTarget(kind, nodeId)) if (b.entityKey) keys.push(String(b.entityKey))
108
+ }
109
+ catch { /* 绑定表不可读 → 仅按节点 id 匹配 */ }
110
+ return keys
111
+ }
112
+ const srcs = keyOf('dcw', controlNodeId)
113
+ const dsts = keyOf('daq', targetNodeId)
114
+ const relations = repo.listRelations(version.id, version.version)
115
+ // 注意:repo 把 predicate 列映射为关系对象的 kind 字段(不是 predicate)
116
+ const hits = relations.filter(r => (r.kind === 'influences' || r.kind === 'actuates')
117
+ && srcs.includes(String(r.srcKey)) && dsts.includes(String(r.dstKey)))
118
+ const targetKey = `${controlNodeId}->${targetNodeId}`
119
+ const ledger = repo.listEvidence(version.id, { targetKind: 'relation', targetKey, limit: 500 })
120
+ const verdictOf = (detailJson: string): string | undefined => {
121
+ try {
122
+ return (JSON.parse(detailJson) as { verdict?: string }).verdict
123
+ }
124
+ catch {
125
+ return undefined
126
+ }
127
+ }
128
+ const supportCount = ledger.filter(e => verdictOf(e.detailJson) === 'identifiable_effect').length
129
+ const refuteCount = ledger.filter(e => verdictOf(e.detailJson) === 'no_resolvable_effect').length
130
+ const evidence = [
131
+ ...hits.map(h => `relation ${h.kind}:${h.srcKey}→${h.dstKey}(${h.status})`),
132
+ ...(supportCount ? [`干预证据支持 ${supportCount} 次(效应可分辨)`] : []),
133
+ ...(refuteCount ? [`干预证据否证 ${refuteCount} 次(无可分辨效应)`] : []),
134
+ ]
135
+ return {
136
+ hasCouplingPath: hits.length > 0,
137
+ evidence,
138
+ ontologyId: version.id,
139
+ version: version.version,
140
+ supportCount,
141
+ refuteCount,
142
+ }
143
+ }
@@ -0,0 +1,114 @@
1
+ /**
2
+ * 下发前双通道互审的**服务态**(P5 补全,2026-11-02 上线前加固):
3
+ * 纯判定在 cross-check.ts;本模块负责取证据并接到探索下发路径上:
4
+ * - 模型通道:渠道绑定模型(aml_channel_profiles.bound_model_id)的 ARX 工件
5
+ * (model.json 的 A/B/C/D + io_spec 的 mvOrder/cvOrder/norm),阶跃仿真求稳态增益;
6
+ * 非 ARX 工件/OOD 无工件一律 unknown(**不拦**:缺证据不是反证);
7
+ * - 本体通道:已发布本体的 actuator→target 耦合边(含干预回灌的 support/refute 计数);
8
+ * - 逃生门 AW_CROSSCHECK_GATE=0 关闭强制(仅保留告警)。
9
+ * 只有"确证冲突"才拒(模型有效应 & 本体明确无路径,或反之);manual 模式交给 HITL 卡。
10
+ */
11
+ import { readFileSync } from 'node:fs'
12
+ import { join } from 'node:path'
13
+ import { getAmlRuntime } from '../runtime'
14
+ import { parseIoSpec } from '../model-registry'
15
+ import { getChannelTwinProfile } from './channel-profile'
16
+ import { resolveCouplingFromOntology } from '../ontology-learning'
17
+ import { evaluateCrossCheck, scientificPayloadLines, type CrossCheckResult } from './cross-check'
18
+ import type { ArxArtifactLike } from '../action-coverage'
19
+
20
+ export function crossCheckGateEnabled(): boolean {
21
+ return process.env.AW_CROSSCHECK_GATE !== '0'
22
+ }
23
+
24
+ export interface ModelChannelResolution {
25
+ artifact: ArxArtifactLike | null
26
+ modelId?: string
27
+ reason: string
28
+ }
29
+
30
+ /** 渠道绑定模型 → ARX 工件(含 norm 供物理单位换算);不可用时如实给 reason */
31
+ export function resolveModelChannel(channelId: string | undefined): ModelChannelResolution {
32
+ if (!channelId) return { artifact: null, reason: '无频道上下文,模型通道 unknown' }
33
+ let boundModelId: string | undefined
34
+ try {
35
+ boundModelId = getChannelTwinProfile(channelId).boundModelId
36
+ }
37
+ catch {
38
+ return { artifact: null, reason: '频道 profile 不可读,模型通道 unknown' }
39
+ }
40
+ if (!boundModelId) return { artifact: null, reason: '频道未绑定 AML 模型,模型通道 unknown' }
41
+ try {
42
+ const row = getAmlRuntime().repo.model.get(boundModelId)
43
+ if (!row) return { artifact: null, modelId: boundModelId, reason: '绑定模型已不存在,模型通道 unknown' }
44
+ const artifact = JSON.parse(readFileSync(join(row.path, 'model.json'), 'utf8')) as Record<string, unknown>
45
+ if (artifact.kind !== 'linear_state_space@1') {
46
+ return { artifact: null, modelId: boundModelId, reason: `工件类型 ${String(artifact.kind)} 暂不支持动作敏感度(仅 ARX),模型通道 unknown` }
47
+ }
48
+ const io = parseIoSpec(row) as unknown as {
49
+ mvOrder?: string[]
50
+ cvOrder?: string[]
51
+ norm?: { u: { mean: number[], std: number[] }, y: { mean: number[], std: number[] } }
52
+ }
53
+ return {
54
+ artifact: {
55
+ A: artifact.A as number[][],
56
+ B: artifact.B as number[][],
57
+ C: artifact.C as number[][],
58
+ D: artifact.D as number[][],
59
+ mvOrder: (artifact.mvOrder as string[]) ?? io.mvOrder ?? [],
60
+ cvOrder: (artifact.cvOrder as string[]) ?? io.cvOrder ?? [],
61
+ ...(io.norm ? { norm: io.norm } : {}),
62
+ },
63
+ modelId: boundModelId,
64
+ reason: '模型通道就绪(ARX 阶跃仿真)',
65
+ }
66
+ }
67
+ catch (err) {
68
+ return { artifact: null, modelId: boundModelId, reason: `工件读取失败(${err instanceof Error ? err.message : String(err)}),模型通道 unknown` }
69
+ }
70
+ }
71
+
72
+ export interface DispatchCrossCheckInput {
73
+ lineId: string
74
+ controlNodeId: string
75
+ targetNodeId: string
76
+ /** 拟下发步长(物理单位,有正负) */
77
+ proposedDelta: number
78
+ channelId?: string
79
+ /** true=自动执行路径(冲突直接拒);false=需人工批准路径(冲突进审批卡) */
80
+ auto: boolean
81
+ }
82
+
83
+ export interface DispatchCrossCheckOutcome {
84
+ blocked: boolean
85
+ text: string
86
+ warnings: string[]
87
+ result: CrossCheckResult
88
+ modelReason: string
89
+ }
90
+
91
+ export function preDispatchCrossCheck(input: DispatchCrossCheckInput): DispatchCrossCheckOutcome {
92
+ const model = resolveModelChannel(input.channelId)
93
+ const ontology = resolveCouplingFromOntology(input.lineId, input.controlNodeId, input.targetNodeId)
94
+ const result = evaluateCrossCheck({
95
+ controlNodeId: input.controlNodeId,
96
+ targetNodeId: input.targetNodeId,
97
+ proposedDelta: input.proposedDelta,
98
+ auto: input.auto,
99
+ model: { artifact: model.artifact, targetNodeId: input.targetNodeId },
100
+ ontology: { hasCouplingPath: ontology.hasCouplingPath, evidence: ontology.evidence },
101
+ })
102
+ const enabled = crossCheckGateEnabled()
103
+ const blocked = enabled && result.decision === 'reject'
104
+ const lines = scientificPayloadLines(result.payload)
105
+ const text = [
106
+ blocked ? '互审拒绝(双通道确证冲突),本次下发未执行:' : '互审通过(未发现确证冲突)',
107
+ ...result.conflicts.map(c => ` ✗ ${c}`),
108
+ ...result.warnings.map(w => ` ⚠ ${w}`),
109
+ ` [模型通道] ${model.reason}`,
110
+ ...lines.map(l => ` ${l}`),
111
+ blocked ? ' 处置:改用人工审批(manual)并由审批人写明理由;或先补数据集/重训模型/更新本体断言。' : '',
112
+ ].filter(Boolean)
113
+ return { blocked, text: text.join('\n'), warnings: result.warnings, result, modelReason: model.reason }
114
+ }
@@ -0,0 +1,176 @@
1
+ /**
2
+ * 下发前双通道互审(科学探索计划 P5,docs/plans/2026-11-02-scientific-exploration-plan.md):
3
+ * - 通道 A(模型):AML 代理模型对拟下发 Δ 的稳态增益(ARX 用阶跃仿真;无模型 = unknown);
4
+ * - 通道 B(本体/机理):已发布本体的 actuator→target 耦合断言(有路径/明确无路径/无声明)。
5
+ * 三值逻辑,只有**确证冲突**才拦(unknown 不拦 —— 缺证据不是反证):
6
+ * A 有效应 & B 明确无路径 → conflict(自动模式拒;人工模式必须写明理由)
7
+ * A 无效应 & B 断言有路径 → conflict(同规则)
8
+ * UQ 拒收(OOD/覆盖率低) → require_human(auto 模式下拒)
9
+ * 可辨识性欠功效/混杂 → allow_with_warning(卡片写明"当前步幅不构成可分辨干预")
10
+ * 输出科学载荷(审批卡自动填):效应估计/CI/MDE/动作覆盖/证据边/可证伪方式。
11
+ */
12
+ import { arxStepResponseGain, type ArxArtifactLike, type ActionCoverage } from '../action-coverage'
13
+
14
+ export interface ModelChannelInput {
15
+ /** null = 无可用模型/工件不支持 */
16
+ artifact: ArxArtifactLike | null
17
+ targetNodeId: string
18
+ /** UQ/OOD 结论(来自 uq-ood.evaluateEnsemble;无模型时省略) */
19
+ uq?: { accepted: boolean, rejectCode?: string }
20
+ }
21
+
22
+ export interface OntologyChannelInput {
23
+ /** true=存在 actuator→target 耦合路径;false=本体**明确断言无耦合**;null=本体未声明(unknown) */
24
+ hasCouplingPath: boolean | null
25
+ /** 支撑边/证据的人类可读摘要(进审批卡) */
26
+ evidence: string[]
27
+ }
28
+
29
+ export interface IdentifiabilityInputSummary {
30
+ verdict: string
31
+ effect?: number | null
32
+ ciLow?: number | null
33
+ ciHigh?: number | null
34
+ mde?: number | null
35
+ }
36
+
37
+ export interface ScientificPayload {
38
+ controlNodeId: string
39
+ targetNodeId: string
40
+ proposedDelta: number
41
+ /** 模型侧预测的稳态变化(物理单位;unknown → null) */
42
+ modelEffect: number | null
43
+ modelConverged: boolean
44
+ ontologyHasCouplingPath: boolean | null
45
+ identifiabilityVerdict: string | null
46
+ effectEstimate: number | null
47
+ ciLow: number | null
48
+ ciHigh: number | null
49
+ mde: number | null
50
+ actionCoverage: Pick<ActionCoverage, 'distinctLevels' | 'collinearityWithTime' | 'monolithicSequence'> | null
51
+ evidenceEdges: string[]
52
+ /** 该结论的可证伪方式(机器可读 + 人读) */
53
+ falsificationMethod: string
54
+ }
55
+
56
+ export type CrossCheckDecision = 'allow' | 'allow_with_warning' | 'require_human' | 'reject'
57
+
58
+ export interface CrossCheckResult {
59
+ decision: CrossCheckDecision
60
+ conflicts: string[]
61
+ warnings: string[]
62
+ payload: ScientificPayload
63
+ }
64
+
65
+ export interface CrossCheckInput {
66
+ controlNodeId: string
67
+ targetNodeId: string
68
+ proposedDelta: number
69
+ /** 自动模式下冲突/需人审是否直接拒(auto=true 时 require_human → reject) */
70
+ auto: boolean
71
+ model?: ModelChannelInput
72
+ ontology?: OntologyChannelInput
73
+ identifiability?: IdentifiabilityInputSummary
74
+ actionCoverage?: ActionCoverage
75
+ /** 判定"有效应"的增益下限(物理单位/单位Δ);缺省 1e-9 */
76
+ minGain?: number
77
+ }
78
+
79
+ /**
80
+ * 三值互审判定(纯函数)。冲突判据:
81
+ * - 模型通道:converged 且 |gain×Δ| > minGain → 认为模型预测"有效应";
82
+ * 否则(收敛但增益≈0)→ 预测"无效应";未收敛/无模型 → unknown(不参与冲突)
83
+ * - 本体通道:hasCouplingPath true/false/null
84
+ * 只有 (有效应 & 明确无路径) 或 (无效应 & 明确有路径) 才 conflict。
85
+ */
86
+ export function evaluateCrossCheck(input: CrossCheckInput): CrossCheckResult {
87
+ const minGain = input.minGain ?? 1e-9
88
+ const conflicts: string[] = []
89
+ const warnings: string[] = []
90
+
91
+ let modelEffect: number | null = null
92
+ let modelConverged = false
93
+ let modelHasEffect: boolean | null = null
94
+ if (input.model?.artifact) {
95
+ const sensitivity = arxStepResponseGain(input.model.artifact, input.controlNodeId)
96
+ if (sensitivity) {
97
+ modelConverged = sensitivity.converged
98
+ if (sensitivity.converged) {
99
+ const gain = sensitivity.gains[input.model.targetNodeId]
100
+ if (typeof gain === 'number' && Number.isFinite(gain)) {
101
+ modelEffect = gain * input.proposedDelta
102
+ modelHasEffect = Math.abs(gain) > minGain
103
+ }
104
+ }
105
+ }
106
+ }
107
+
108
+ const onto = input.ontology ?? { hasCouplingPath: null, evidence: [] }
109
+ if (modelHasEffect === true && onto.hasCouplingPath === false) {
110
+ conflicts.push(`模型预测有效应(Δy≈${modelEffect?.toPrecision(4)})但本体明确断言 ${input.controlNodeId}→${input.targetNodeId} 无耦合路径`)
111
+ }
112
+ if (modelHasEffect === false && onto.hasCouplingPath === true) {
113
+ conflicts.push(`模型预测无可分辨效应但本体断言存在耦合路径(${onto.evidence[0] ?? '无证据摘要'}):模型可能未学到该动作维度,先查 G6 动作覆盖`)
114
+ }
115
+ if (input.model?.uq && !input.model.uq.accepted) {
116
+ warnings.push(`模型 UQ/OOD 未通过(${input.model.uq.rejectCode ?? 'unknown'}):预测不可作为下发依据`)
117
+ if (input.auto) conflicts.push('UQ/OOD 未通过,自动模式拒绝;请转人工审批或先补充标定')
118
+ }
119
+
120
+ const v = input.identifiability
121
+ if (v && (v.verdict === 'UNDERPOWERED' || v.verdict === 'CONFOUNDED')) {
122
+ warnings.push(`可辨识性 ${v.verdict}:当前步幅/窗口不足以分辨效应${v.mde != null ? `(MDE=${v.mde.toPrecision(3)})` : ''};卡片请写明"不构成可分辨干预"`)
123
+ }
124
+
125
+ const coverage = input.actionCoverage
126
+ const payload: ScientificPayload = {
127
+ controlNodeId: input.controlNodeId,
128
+ targetNodeId: input.targetNodeId,
129
+ proposedDelta: input.proposedDelta,
130
+ modelEffect,
131
+ modelConverged,
132
+ ontologyHasCouplingPath: onto.hasCouplingPath,
133
+ identifiabilityVerdict: v?.verdict ?? null,
134
+ effectEstimate: v?.effect ?? null,
135
+ ciLow: v?.ciLow ?? null,
136
+ ciHigh: v?.ciHigh ?? null,
137
+ mde: v?.mde ?? null,
138
+ actionCoverage: coverage
139
+ ? { distinctLevels: coverage.distinctLevels, collinearityWithTime: coverage.collinearityWithTime, monolithicSequence: coverage.monolithicSequence }
140
+ : null,
141
+ evidenceEdges: onto.evidence,
142
+ falsificationMethod: buildFalsificationMethod(input, modelHasEffect),
143
+ }
144
+
145
+ let decision: CrossCheckDecision
146
+ if (conflicts.length > 0) decision = input.auto ? 'reject' : 'require_human'
147
+ else if (warnings.length > 0) decision = input.auto ? 'require_human' : 'allow_with_warning'
148
+ else decision = 'allow'
149
+ if (decision === 'require_human' && input.auto) decision = 'reject'
150
+
151
+ return { decision, conflicts, warnings, payload }
152
+ }
153
+
154
+ /** 可证伪方式:写清楚"什么结果会推翻这次下发" */
155
+ export function buildFalsificationMethod(input: CrossCheckInput, modelHasEffect: boolean | null): string {
156
+ const delta = input.proposedDelta
157
+ const parts = [
158
+ `若响应窗(≥3 个主导扰动周期)内 ${input.targetNodeId} 的变化量在 95% CI 内不含 0 且方向与模型预测(${modelHasEffect === true ? '有' : modelHasEffect === false ? '无' : '未知'}效应)不一致,则本次因果断言被否证`,
159
+ `比较基准 = 干预前同长窗口;置信区间用 bootstrap(种子固定可复现)`,
160
+ `Δ控制=${delta} 的效应若小于 MDE,结论只能记为"不可辨识",不得外推`,
161
+ ]
162
+ if (input.ontology?.hasCouplingPath === false) parts.push('本体无耦合断言与实测有效应冲突时,以实测为准并回灌本体证据(需人工确认版本)')
163
+ return parts.join(';')
164
+ }
165
+
166
+ /** 审批卡人读段落(与 payload 同源;detail 文本 + 结构化载荷双通道) */
167
+ export function scientificPayloadLines(payload: ScientificPayload): string[] {
168
+ const fmt = (x: number | null): string => (x != null && Number.isFinite(x) ? x.toPrecision(4) : '—')
169
+ return [
170
+ `[科学依据] 模型预测:${payload.modelEffect == null ? '无可用模型(unknown)' : `Δy≈${fmt(payload.modelEffect)}${payload.modelConverged ? '' : '(未收敛)'}`}`,
171
+ `[科学依据] 本体耦合:${payload.ontologyHasCouplingPath == null ? '未声明' : payload.ontologyHasCouplingPath ? `存在路径(${payload.evidenceEdges.slice(0, 2).join(' / ') || '无证据摘要'})` : '明确无耦合路径'}`,
172
+ `[科学依据] 可辨识性:${payload.identifiabilityVerdict ?? '未评估'}${payload.mde != null ? `;MDE=${fmt(payload.mde)}` : ''}${payload.effectEstimate != null ? `;上次效应 ${fmt(payload.effectEstimate)} CI[${fmt(payload.ciLow)}, ${fmt(payload.ciHigh)}]` : ''}`,
173
+ payload.actionCoverage ? `[科学依据] 动作覆盖:水平 ${payload.actionCoverage.distinctLevels} 个,时间共线 |r|=${payload.actionCoverage.collinearityWithTime.toFixed(3)}${payload.actionCoverage.monolithicSequence ? '(纯阶梯,与时间不可分)' : ''}` : null,
174
+ `[可证伪] ${payload.falsificationMethod}`,
175
+ ].filter((x): x is string => x != null)
176
+ }
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * 契约成员:
8
8
  * drainFrames → 由 frames.ts 实现
9
+ * daqPushRearm → 由 push.ts 实现(R-2:driverConfig 变更清退避+重建订阅)
9
10
  * emitController → 由 views.ts 实现
10
11
  * emitNodeChanged → 由 views.ts 实现
11
12
  * evictFrames → 由 frames.ts 实现
@@ -25,6 +26,8 @@ import type { DaqNode } from '../daq-node'
25
26
 
26
27
  export abstract class DaqControllerContracts {
27
28
  protected abstract drainFrames(): DaqFrameRow[]
29
+ /** R-2:driverConfig 变更后调用 —— 清该节点推送重试退避并立即对账订阅(对齐轮询路径 rearm 语义) */
30
+ protected abstract daqPushRearm(nodeId: string): void
28
31
  protected abstract emitController(): void
29
32
  protected abstract emitNodeChanged(op: AepDaqNodeChange['op'], node: DaqNode | null): void
30
33
  protected abstract evictFrames(keepLast: number): number
@@ -63,7 +63,11 @@ export abstract class DaqControllerCrud extends DaqControllerRuntimeControl {
63
63
  if (patch.driver !== undefined) node.driver = requireDriverKind(patch.driver)
64
64
  // P0-2(2026-10-28 审查):GET 投影的 `******` 可能是整包 PATCH 回来的回显,
65
65
  // 入口单点剔除,绝不让掩码覆盖真实凭据(新明文照常写入)。
66
- if (patch.driverConfig !== undefined) node.driverConfig = { ...node.driverConfig, ...stripMaskedSecrets(patch.driverConfig) }
66
+ let driverConfigChanged = false
67
+ if (patch.driverConfig !== undefined) {
68
+ node.driverConfig = { ...node.driverConfig, ...stripMaskedSecrets(patch.driverConfig) }
69
+ driverConfigChanged = true
70
+ }
67
71
  if (patch.transform !== undefined) {
68
72
  if (patch.transform.kind === 'linear' && (!Number.isFinite(Number(patch.transform.scale)) || Number(patch.transform.scale) === 0)) {
69
73
  throw new AppError(400, ErrorCodes.VALIDATION_ERROR, '标定系数 scale 必须为非零数字(物理值 = scale × PLC值 + offset)')
@@ -95,7 +99,13 @@ export abstract class DaqControllerCrud extends DaqControllerRuntimeControl {
95
99
  rearm = true
96
100
  }
97
101
  if (rearm) this.runtimes.get(id)?.rearm() // 元数据变更即刻生效(独立运行时节拍重置)
98
- if (patch.posX !== undefined) node.posX = patch.posX
102
+ // R-2(2026-11-01):driverConfig 变更与轮询路径 rearm 对齐 —— 清推送订阅重试
103
+ // 退避并即刻对账订阅。旧行为:退避(map 值)跨 driverConfig 变更存续,broker
104
+ // 长时间死亡后修好配置仍要等满退避窗(实测"Mqtt 拒连后修配置必须重建节点");
105
+ // 现在改配置 = 立即放弃旧退避,下一拍 syncPushBindings 按新指纹重建订阅;
106
+ // 同时驱逐该 broker 的死连接(池条目在 broker 长期死亡后可能处于僵尸态,
107
+ // mqtt.js 重连循环不再推进 —— 驱逐让下一次订阅全新建连)。
108
+ if (driverConfigChanged) this.daqPushRearm(id)
99
109
  if (patch.posZ !== undefined) node.posZ = patch.posZ
100
110
  if (patch.lineId !== undefined) {
101
111
  const lid = String(patch.lineId)
@@ -196,6 +196,28 @@ export abstract class DaqControllerPush extends DaqControllerState {
196
196
  catch { /* 已停 */ }
197
197
  }
198
198
 
199
+ /** R-2(2026-11-01):driverConfig 变更 → 清退避 + 回收订阅,下一拍按新指纹重建。
200
+ * 与轮询路径 PATCH→rearm 语义对齐:改配置 = 立即放弃旧退避,绝不"修好配置还要
201
+ * 等满退避窗"(实测 broker 长期死亡后修正 endpoint,热修被迫重建节点)。 */
202
+ protected daqPushRearm(nodeId: string): void {
203
+ this.pushRetryAt.delete(nodeId)
204
+ void this.stopPushBinding(nodeId)
205
+ // 死连接驱逐:broker 长期死亡后池内条目可能处于僵尸态(mqtt.js 重连循环不再推进
206
+ // 且永不自愈,实测"重建节点才恢复"的真实根因)。这里按节点当前 broker 键驱逐,
207
+ // 下一次订阅(本拍 syncPushBindings)全新建连,彻底摆脱僵尸条目。
208
+ try {
209
+ const node = this.repo.byId(nodeId)
210
+ const drv = node ? resolveDaqDriver(node.driver) : null
211
+ if (node && drv && typeof drv.evictPoolConn === 'function') drv.evictPoolConn(node.driverConfig ?? {})
212
+ }
213
+ catch { /* 驱逐失败不阻断对账:退避已清,退避窗后自然重试 */ }
214
+ // 立即对账一次(不等 250ms 扫描):改配置即刻生效的最后一环。
215
+ try {
216
+ this.syncPushBindings()
217
+ }
218
+ catch { /* 对账异常由 sweep 的 guardStep 兜底 */ }
219
+ }
220
+
199
221
  /** 停止全部订阅(网关停止/进程退出) */
200
222
  async stopAllPushBindings(): Promise<void> {
201
223
  const ids = [...this.pushBindings.keys()]
@@ -128,6 +128,29 @@ function brokerUrl(cfg: Record<string, unknown>): string {
128
128
  return `mqtt${secure ? 's' : ''}://${String(cfg.host)}:${Number(cfg.port ?? 1883)}`
129
129
  }
130
130
 
131
+ /** R-2(2026-11-01):按配置驱逐池内连接(尽力而为)。
132
+ * broker 长期死亡后,池内条目可能处于僵尸态:mqtt.js 重连循环不再推进、connected 恒
133
+ * false、节点侧每次订阅快速失败 —— 此前唯一的恢复手段是重建节点(整条订阅随新节点
134
+ * 全新建连)。这里主动 end(true) 并从池移除,下一次订阅全新建连,热修 endpoint 即刻生效。
135
+ * 仅驱逐"当前未连接"的条目:连接健康的条目绝不碰(不影响其他共享该 broker 的节点)。 */
136
+ export function evictMqttPoolConn(cfg: Record<string, unknown>): boolean {
137
+ try {
138
+ const key = safeMqttKey(cfg)
139
+ const conn = mqttPool.get(key)
140
+ if (!conn) return false
141
+ if (conn.connected) return false // 健康连接不驱逐
142
+ mqttPool.delete(key)
143
+ try {
144
+ conn.client.end(true)
145
+ }
146
+ catch { /* 已死 */ }
147
+ return true
148
+ }
149
+ catch {
150
+ return false
151
+ }
152
+ }
153
+
131
154
  /** 订阅单 topic(SUBACK 等待;5s 超时;重连时由 connect 事件重放) */
132
155
  async function subscribeTopic(conn: MqttConn, topic: string, qos: number): Promise<void> {
133
156
  await new Promise<void>((resolve, reject) => {
@@ -457,6 +480,11 @@ export const mqttDaqDriver: DaqDriver = {
457
480
  return `${safeMqttKey(c)}|topic=${String(c.topic ?? '')}|qos=${Number(c.qos ?? 1)}|${decode}`
458
481
  },
459
482
 
483
+ /** R-2:驱逐未连接的僵尸池条目(健康连接绝不碰);修复配置后下次订阅全新建连 */
484
+ evictPoolConn(driverConfig) {
485
+ return evictMqttPoolConn(driverConfig)
486
+ },
487
+
460
488
  async sample({ driverConfig, signalKind, ctx }) {
461
489
  const topic = String(driverConfig.topic ?? '')
462
490
  if (!topic) throw new Error('缺少主题 topic')
@@ -89,4 +89,10 @@ export interface DaqDriver {
89
89
  * 避免改密码/换主题后仍挂在旧连接上。缺省由控制器按常见字段拼一个保守指纹。
90
90
  */
91
91
  fingerprint?(driverConfig: Record<string, unknown>): string
92
+ /**
93
+ * 可选:按 driverConfig 驱逐池内死连接(R-2)。控制器在 driverConfig 变更后调用,
94
+ * 让"broker 长期死亡后修好配置"立即全新建连,不必重建节点。实现应只驱逐未连接的
95
+ * 僵尸条目(健康连接绝不碰),无池化驱动的实现可不提供。
96
+ */
97
+ evictPoolConn?(driverConfig: Record<string, unknown>): boolean
92
98
  }
@@ -88,6 +88,8 @@ export function initWorkshopDb(db: DatabaseSync): void {
88
88
  migrateAgentTokenGraceColumns(db)
89
89
  // v33(2026-10-28):频道执行模式列(observe/manual/auto;NULL 按 auto 中性生效,零行为变化)
90
90
  migrateChannelExecutionModeColumn(db)
91
+ // P3-4(2026-11-01):steer 失败重投上限 —— messages.attempts 列(重投 +1,≥3 → dead)
92
+ migrateAddColumn(db, 'messages', 'attempts', 'INTEGER NOT NULL DEFAULT 0')
91
93
  // v32(ONT):Profile 冻结本体引用摘要(缺省 [] = 无本体约束域;只前滚,不回填)
92
94
  migrateAddColumn(db, 'optimizer_profiles', 'ontology_refs_json', 'TEXT NOT NULL DEFAULT \'[]\'')
93
95
  seedDefaultWorkshopData(db)
@@ -289,7 +289,10 @@ export interface MessageRow {
289
289
  role: string
290
290
  partsJson: string
291
291
  metadataJson: string
292
- state: 'pending' | 'consuming' | 'consumed'
292
+ /** P3-4:'dead' = 重投次数达上限(3),永不再投递(审计可见) */
293
+ state: 'pending' | 'consuming' | 'consumed' | 'dead'
294
+ /** P3-4:steer 失败重投计数(requeue 时 +1) */
295
+ attempts: number
293
296
  createdAt: string
294
297
  consumedAt: string | null
295
298
  }
@@ -53,7 +53,8 @@ CREATE TABLE IF NOT EXISTS messages (
53
53
  role TEXT NOT NULL, -- 'ROLE_USER' | 'ROLE_AGENT'
54
54
  parts_json TEXT NOT NULL,
55
55
  metadata_json TEXT NOT NULL DEFAULT '{}', -- x-aw-target-agent / x-aw-task-kind
56
- state TEXT NOT NULL DEFAULT 'pending', -- pending|consuming|consumed
56
+ state TEXT NOT NULL DEFAULT 'pending', -- pending|consuming|consumed|dead(P3-4:重投达上限)
57
+ attempts INTEGER NOT NULL DEFAULT 0, -- P3-4:steer 失败重投计数(requeue +1)
57
58
  created_at TEXT NOT NULL,
58
59
  consumed_at TEXT
59
60
  );
@@ -1183,7 +1184,42 @@ CREATE TABLE IF NOT EXISTS ontology_rule_traces (
1183
1184
  row_hash TEXT NOT NULL DEFAULT '',
1184
1185
  created_at TEXT NOT NULL
1185
1186
  );
1186
- CREATE INDEX IF NOT EXISTS idx_ontology_traces_version ON ontology_rule_traces(ontology_id, version, created_at DESC);`
1187
+ CREATE INDEX IF NOT EXISTS idx_ontology_traces_version ON ontology_rule_traces(ontology_id, version, created_at DESC);
1188
+
1189
+ -- v34(科学探索计划 P2,2026-11-02):干预台账 —— 所有治理下发(manual/agent/recipe/rollback)
1190
+ -- 在 dcw write() 唯一咽喉单点入册,一行一次真实下发;verdict 由 aml/identifiability 引擎回填。
1191
+ -- 拒绝路径沿 recordOps 审计(dcw.write.rejected),不入本表(只记已受理下发)。
1192
+ CREATE TABLE IF NOT EXISTS intervention_events (
1193
+ id TEXT PRIMARY KEY,
1194
+ ts TEXT NOT NULL, -- 下发受理时刻(ISO)
1195
+ line_id TEXT NOT NULL DEFAULT '',
1196
+ node_id TEXT NOT NULL,
1197
+ node_name TEXT NOT NULL DEFAULT '',
1198
+ from_value REAL,
1199
+ to_value REAL,
1200
+ actual_value REAL, -- 回读证实值(readback-verified 时)
1201
+ ack TEXT NOT NULL DEFAULT '', -- readback-verified|transport-ack|unverified
1202
+ path TEXT NOT NULL DEFAULT '', -- manual|agent|recipe|rollback
1203
+ actor TEXT NOT NULL DEFAULT '',
1204
+ actor_name TEXT NOT NULL DEFAULT '',
1205
+ channel_id TEXT NOT NULL DEFAULT '',
1206
+ approval_id TEXT,
1207
+ recipe_run_id TEXT,
1208
+ hypothesis TEXT NOT NULL DEFAULT '',
1209
+ target_node_id TEXT, -- 判读目标(带判读上下文的路径写入)
1210
+ criterion_json TEXT, -- {metric, op, threshold, mde} 机器可读判据
1211
+ settle_ms INTEGER, -- 判读窗长
1212
+ verdict TEXT NOT NULL DEFAULT 'pending', -- pending|unassessed|identifiable_effect|no_resolvable_effect|underpowered|confounded
1213
+ effect REAL,
1214
+ ci_low REAL,
1215
+ ci_high REAL,
1216
+ mde REAL,
1217
+ verdict_json TEXT,
1218
+ created_at TEXT NOT NULL,
1219
+ updated_at TEXT NOT NULL
1220
+ );
1221
+ CREATE INDEX IF NOT EXISTS idx_intervention_events_node ON intervention_events(node_id, ts DESC);
1222
+ CREATE INDEX IF NOT EXISTS idx_intervention_events_line ON intervention_events(line_id, ts DESC);`
1187
1223
 
1188
1224
  // ===== 默认种子数据(首轮初始化注入;owner NULL = 公共资源,所有登录用户只读共享) =====
1189
1225