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,247 @@
1
+ /**
2
+ * 可辨识性工具族(科学探索计划 P1/P2,docs/plans/2026-11-02-scientific-exploration-plan.md):
3
+ * - explorationIdentifiabilityPreflight:optimization_explore 前置门(上次干预未收口/欠功效建议窗未过 → 拦)
4
+ * - identifiabilityLearningText:verdict → 判读学习文案(方向性外推措辞仅在效应可分辨时出现)
5
+ * - toolDaqIdentifiability:对数采节点做可辨识性预检(主导周期/建议试验窗/半窗对比)
6
+ * - toolInterventionHistory:干预台账查询(只读;可读线口径与 line_context 同源)
7
+ * 全部只读;逃生开关 AW_IDENT_GATE=0 一键回到旧行为(零回归通道)。
8
+ */
9
+ import { getDaqController } from '../../daq/daq-controller'
10
+ import { resolveRefFaces } from './tool-verify'
11
+ import { assessIdentifiability, dominantPeriod, type IdentifiabilityVerdict } from '../../aml/identifiability'
12
+ import { summarize } from '../../aml/stats'
13
+ import { backfillInterventionEvidence } from '../../aml/ontology-learning'
14
+ import {
15
+ attachAssessment,
16
+ interventionLines,
17
+ latestIntervention,
18
+ listInterventions,
19
+ pendingUnclosedEvent,
20
+ recentBlockedVerdictEvent,
21
+ verdictCodeOf,
22
+ verdictDetailOf,
23
+ verdictLabel,
24
+ } from '../../aml/intervention-ledger'
25
+
26
+ /** 门禁总开关(缺省启用;AW_IDENT_GATE=0 回到旧行为) */
27
+ export function identGateEnabled(): boolean {
28
+ return process.env.AW_IDENT_GATE !== '0'
29
+ }
30
+
31
+ /**
32
+ * 时序取数(与 readTargetMean 同源:daq samples,1s 桶,value/avg 兼容)。
33
+ * 一次调用同时产出均值(台账旧链用)与序列(引擎判读用)—— 判读不增取数。
34
+ */
35
+ export async function readTargetWindow(nodeId: string, fromMs: number, toMs: number): Promise<{ mean: number | null, values: number[] }> {
36
+ try {
37
+ const pts = await getDaqController().samples(nodeId, { fromMs, toMs, bucketMs: 1000, limit: Math.max(60, Math.ceil((toMs - fromMs) / 1000) + 10) }) as Array<{ at?: number, value?: number, avg?: number }>
38
+ const values = pts.map(p => Number(p.value ?? p.avg)).filter(Number.isFinite)
39
+ if (values.length === 0) return { mean: null, values }
40
+ return { mean: values.reduce((a, b) => a + b, 0) / values.length, values }
41
+ }
42
+ catch {
43
+ return { mean: null, values: [] }
44
+ }
45
+ }
46
+
47
+ /** 序列周期提示(非阻断;从已取序列派生,不额外取数) */
48
+ export function periodHintFromSeries(values: number[]): string {
49
+ if (values.length < 32) return ''
50
+ const period = dominantPeriod(values)
51
+ if (period.lagBeats == null) return ''
52
+ const periodMin = (period.lagBeats / 60).toFixed(2)
53
+ return `目标节点检出主导扰动周期 ≈${periodMin} min:建议单次响应窗(settle_seconds)≥ ${Math.ceil((3 * period.lagBeats) / 60)} min、以 ≥3 个水平做正交阶梯探索,否则单步差分大概率不可辨识。`
54
+ }
55
+
56
+ export interface ExplorationGateResult {
57
+ blocked: boolean
58
+ /** blocked 时的拒绝文案(结构化、带正交化建议) */
59
+ text: string
60
+ /** 非阻断提示(拼进探索回包,提醒窗长/水平设计) */
61
+ hint: string
62
+ }
63
+
64
+ /**
65
+ * optimization_explore 前置门(零取数,只查台账):同节点上一次干预未收口(判读窗未满)
66
+ * 或欠功效/混杂建议窗未过期 → 拒绝新激励。周期探测提示在写后从写前序列派生,不在此读数。
67
+ */
68
+ export async function explorationIdentifiabilityPreflight(controlNodeId: string): Promise<ExplorationGateResult> {
69
+ if (!identGateEnabled()) return { blocked: false, text: '', hint: '' }
70
+ const pending = pendingUnclosedEvent(controlNodeId)
71
+ if (pending) {
72
+ return {
73
+ blocked: true,
74
+ text: `可辨识性门禁:节点 ${controlNodeId} 上一次干预(${pending.row.ts})判读尚未收口,剩余约 ${Math.ceil(pending.remainMs / 1000)}s。两次干预的响应会叠加,判读必然失真 —— 请先等待收口(或以 daq_query 确认上一步响应已回稳),再发新激励。`,
75
+ hint: '',
76
+ }
77
+ }
78
+ const blockedVerdict = recentBlockedVerdictEvent(controlNodeId)
79
+ if (blockedVerdict) {
80
+ const elapsedMin = Math.max(0, Math.ceil((Date.now() - Date.parse(blockedVerdict.row.ts)) / 60000))
81
+ return {
82
+ blocked: true,
83
+ text: `可辨识性门禁:上一次对 ${controlNodeId} 的干预判定为「${verdictLabel(blockedVerdict.row.verdict)}」,其建议试验窗(≈${Math.round(blockedVerdict.suggestedWindowMs / 60000)} min)尚未过期(已过 ${elapsedMin} min)。继续同幅激励大概率重复欠功效探索 —— 建议改为:① settle_seconds ≥ 3×主导周期;② ≥3 个水平正交阶梯往返(随机化顺序);③ 或换目标量/执行器。如确需立即继续,设 AW_IDENT_GATE=0 停用门禁并自行承担判读风险。`,
84
+ hint: '',
85
+ }
86
+ }
87
+ return { blocked: false, text: '', hint: '' }
88
+ }
89
+
90
+ /** verdict → 判读学习文案(方向性外推措辞仅在效应可分辨时出现 —— P1 门禁挂钩第二处) */
91
+ export function identifiabilityLearningText(v: IdentifiabilityVerdict): string {
92
+ const fmt = (x: number | null): string => (x != null && Number.isFinite(x) ? x.toPrecision(4) : '?')
93
+ switch (v.verdict) {
94
+ case 'IDENTIFIABLE':
95
+ if (v.significant) {
96
+ return `学习(可辨识): 该方向目标响应 ${v.effect != null && v.effect > 0 ? '上升' : '下降'} ${fmt(Math.abs(v.effect ?? 0))}(95% CI [${fmt(v.ciLow)}, ${fmt(v.ciHigh)}]);可按此符号外推,建议以反向步验证。`
97
+ }
98
+ return `学习(负结论): 本步幅下无可分辨效应:Δ=${fmt(v.effect)},CI 含 0,分辨率 MDE=${fmt(v.mde)}。负结论可入库;若工艺上预期有效应,请增大 step 或 settle_seconds 后重试,不要据本步外推方向。`
99
+ case 'UNDERPOWERED':
100
+ return `学习(不可辨识): 响应窗仅覆盖 ${v.postCoveragePeriods != null ? v.postCoveragePeriods.toFixed(2) : '?'} 个主导扰动周期(<3),分辨率 MDE=${fmt(v.mde)}。建议 settle_seconds ≥ ${v.suggestedWindowMs != null ? Math.round(v.suggestedWindowMs / 1000) : '?'}s、≥3 水平正交阶梯;本次结论按暂定处理,不要外推。`
101
+ case 'CONFOUNDED':
102
+ return `学习(被混杂): 控制量与自然漂移在时间上不可分(|r|=${v.collinearity != null ? v.collinearity.toFixed(3) : '?'}),判读不可信。建议随机化干预相位或 ABAB 往返校验后再判;本次结论按暂定处理。`
103
+ default:
104
+ return ''
105
+ }
106
+ }
107
+
108
+ /**
109
+ * P5 审批卡科学载荷(写咽喉 manual 分支用):把该节点最近一次干预的判定
110
+ * (效应/CI/MDE/建议窗)与可证伪方式装成结构化 payload + 人读行。
111
+ * 无历史 → 字段为 null 并如实写"未评估"(不编造方向性结论)。
112
+ */
113
+ export function scientificPayloadForWrite(nodeId: string, nodeName: string, proposedValue: number): { payload: Record<string, unknown>, lines: string[] } {
114
+ const last = latestIntervention(nodeId)
115
+ const fmt = (x: number | null): string => (x != null && Number.isFinite(x) ? x.toPrecision(4) : '—')
116
+ const payload = {
117
+ controlNodeId: nodeId,
118
+ nodeName,
119
+ proposedValue,
120
+ lastVerdict: last?.verdict ?? null,
121
+ lastEffect: last?.effect ?? null,
122
+ lastCiLow: last?.ciLow ?? null,
123
+ lastCiHigh: last?.ciHigh ?? null,
124
+ lastMde: last?.mde ?? null,
125
+ suggestedWindowMs: (last?.verdictDetail?.suggestedWindowMs as number | undefined) ?? null,
126
+ actionCoverage: (last?.verdictDetail?.controlLevels as number | undefined) ?? null,
127
+ falsificationMethod: last
128
+ ? `若响应窗(≥3 个主导扰动周期)内目标变化 95% CI 不含 0 且方向与上次判定相反,则上次因果断言被否证;Δ 小于 MDE 时只能记"不可辨识"`
129
+ : `首次干预:须在响应窗(≥3 个主导扰动周期)后按 bootstrap CI 判定;Δ 小于 MDE 记"不可辨识",不外推方向`,
130
+ }
131
+ const lines = [
132
+ `[科学依据] 上次判定:${last ? `${verdictLabel(last.verdict)}${last.effect != null ? `;效应 ${fmt(last.effect)}` : ''}${last.mde != null ? `;MDE=${fmt(last.mde)}` : ''}` : '无历史(首次干预,判读窗口须覆盖 ≥3 个主导扰动周期)'}`,
133
+ ...(payload.suggestedWindowMs ? [`[科学依据] 建议响应窗 ≥ ${Math.round((payload.suggestedWindowMs as number) / 1000)}s(3×主导周期)`] : []),
134
+ `[可证伪] ${payload.falsificationMethod}`,
135
+ ]
136
+ return { payload, lines }
137
+ }
138
+
139
+ /** 探索步后:引擎判定回填干预台账(写咽喉已落行,此处挂目标与判定)+ 回灌本体证据 */
140
+ export function attachExplorationVerdict(controlNodeId: string, targetNodeId: string, v: IdentifiabilityVerdict): void {
141
+ try {
142
+ const ev = latestIntervention(controlNodeId)
143
+ if (!ev || ev.path !== 'agent') return
144
+ attachAssessment(ev.id, {
145
+ verdict: verdictCodeOf(v),
146
+ effect: v.effect,
147
+ ciLow: v.ciLow,
148
+ ciHigh: v.ciHigh,
149
+ mde: v.mde,
150
+ targetNodeId,
151
+ detail: verdictDetailOf(v),
152
+ })
153
+ // P6:判定回灌本体证据(幂等;无已发布本体则暂留在台账)
154
+ const updated = latestIntervention(controlNodeId)
155
+ if (updated) {
156
+ try {
157
+ backfillInterventionEvidence(updated)
158
+ }
159
+ catch {
160
+ // 证据登记失败不影响探索回包(台账仍是事实源)
161
+ }
162
+ }
163
+ }
164
+ catch {
165
+ // 回填失败不影响探索回包
166
+ }
167
+ }
168
+
169
+ /**
170
+ * daq_identifiability:对数采节点做可辨识性预检(只读)。
171
+ * 输出:序列摘要 / 主导扰动周期 / 建议试验窗 / 前后半窗对比判定(漂移与自然波动基线)。
172
+ */
173
+ export async function toolDaqIdentifiability(agentId: string, args: { node_id?: string, minutes?: number | string }): Promise<{ text: string, isError?: boolean }> {
174
+ try {
175
+ const nodeId = String(args.node_id ?? '').trim()
176
+ if (!nodeId) return { text: '缺少 node_id。', isError: true }
177
+ const faces = resolveRefFaces(agentId)
178
+ if (!faces.daqBoundNodes.has(nodeId) && !faces.channelLineNodes.has(nodeId)) {
179
+ return {
180
+ text: `节点 ${nodeId} 不在你的数采可见范围(绑定数采节点:${[...faces.daqBoundNodes].join(', ') || '(无)'}${faces.channelLineNodes.size > 0 ? `;频道绑线只读节点:${faces.channelLineNodes.size} 个` : ''})。请让用户或 lead 绑定该数采节点。`,
181
+ isError: true,
182
+ }
183
+ }
184
+ const minutes = Math.min(240, Math.max(5, Math.floor(Number(args.minutes ?? 30) || 30)))
185
+ const now = Date.now()
186
+ const series = (await readTargetWindow(nodeId, now - minutes * 60_000, now)).values
187
+ if (series.length < 8) {
188
+ return { text: `节点 ${nodeId} 近 ${minutes} min 仅 ${series.length} 拍(需 ≥8):采样不足或节点不活跃,无法做可辨识性预检。`, isError: true }
189
+ }
190
+ const sum = summarize(nodeId, 'target', series, 0, 0)
191
+ const lines = [
192
+ `可辨识性预检(${nodeId},近 ${minutes} min):`,
193
+ ` 序列:${sum.count} 拍,均值 ${sum.mean.toFixed(4)},σ=${sum.std.toFixed(4)},范围 [${sum.min.toFixed(4)}, ${sum.max.toFixed(4)}]`,
194
+ ]
195
+ const period = dominantPeriod(series)
196
+ if (period.lagBeats != null) {
197
+ const periodMin = (period.lagBeats / 60).toFixed(2)
198
+ lines.push(` 主导扰动周期 ≈ ${periodMin} min(自相关峰 r=${period.peakCorr.toFixed(2)})`)
199
+ lines.push(` 建议正交试验:单点响应窗 ≥ ${(3 * period.lagBeats / 60).toFixed(1)} min(3×周期),≥3 个水平阶梯往返`)
200
+ }
201
+ else {
202
+ lines.push(' 未检出显著周期性;试验窗按噪声分辨率(MDE)评估即可')
203
+ }
204
+ const half = Math.floor(series.length / 2)
205
+ const v = assessIdentifiability({ pre: series.slice(0, half), post: series.slice(half), beatMs: 1000 })
206
+ lines.push(` 前后半窗对比:Δ=${v.effect != null ? v.effect.toPrecision(4) : '?'}(95% CI [${v.ciLow?.toPrecision(4) ?? '?'}, ${v.ciHigh?.toPrecision(4) ?? '?'}]),判定:${v.verdict}${v.significant ? '(显著漂移)' : ''}`)
207
+ for (const r of v.reasons) lines.push(` · ${r}`)
208
+ return { text: lines.join('\n') }
209
+ }
210
+ catch (err) {
211
+ return { text: `可辨识性预检失败:${err instanceof Error ? err.message : String(err)}`, isError: true }
212
+ }
213
+ }
214
+
215
+ /**
216
+ * intervention_history:干预台账查询(只读;可见性 = 可读产线 ∪ 绑定节点,与 line_context 同源)。
217
+ */
218
+ export async function toolInterventionHistory(agentId: string, args: { node_id?: string, line_id?: string, limit?: number | string }): Promise<{ text: string, isError?: boolean }> {
219
+ try {
220
+ const faces = resolveRefFaces(agentId)
221
+ const limit = Math.min(50, Math.max(1, Math.floor(Number(args.limit ?? 10) || 10)))
222
+ const nodeId = String(args.node_id ?? '').trim()
223
+ const lineId = String(args.line_id ?? '').trim()
224
+ if (!nodeId && !lineId) {
225
+ return { text: '请传 node_id 或 line_id(可先用 line_context 取产线 id)。', isError: true }
226
+ }
227
+ const rows = listInterventions({ nodeId: nodeId || undefined, lineId: lineId || undefined, limit })
228
+ const visible = rows.filter(r => faces.readableLines.has(r.lineId) || faces.boundNodes.has(r.nodeId))
229
+ if (rows.length > 0 && visible.length === 0) {
230
+ return { text: '查询命中记录但均不在你的可读范围(可读产线 ∪ 绑定节点)内,已按 fail-closed 隐藏。', isError: true }
231
+ }
232
+ if (visible.length === 0) {
233
+ return { text: `干预台账暂无${nodeId ? `节点 ${nodeId}` : ''}${lineId ? `产线 ${lineId}` : ''}的记录(台账记录所有已受理下发,含手动/Agent/配方/回退;2026-11-02 起积累)。` }
234
+ }
235
+ const byVerdict = new Map<string, number>()
236
+ for (const r of visible) byVerdict.set(r.verdict, (byVerdict.get(r.verdict) ?? 0) + 1)
237
+ const stats = [...byVerdict.entries()].map(([k, n]) => `${verdictLabel(k)}×${n}`).join(', ')
238
+ const lines = [
239
+ `干预台账(最近 ${visible.length} 条${nodeId ? `,节点 ${nodeId}` : ''}${lineId ? `,产线 ${lineId}` : ''};判定分布:${stats}):`,
240
+ ...interventionLines(visible).map(l => ` ${l}`),
241
+ ]
242
+ return { text: lines.join('\n') }
243
+ }
244
+ catch (err) {
245
+ return { text: `台账查询失败:${err instanceof Error ? err.message : String(err)}`, isError: true }
246
+ }
247
+ }
@@ -25,6 +25,7 @@ export { toolAmlNodeCatalog, toolAmlDatasetBuild, toolAmlDatasetStats } from './
25
25
  export { toolAmlJobSubmit, toolAmlJobStatus, toolAmlJobLogs, toolAmlJobCancel, toolAmlLeaderboard, toolAmlModelFind, toolAmlModelPromote, toolAmlModelReference, toolAmlModelAnnotate, toolAmlTrainingPlanList, toolAmlTrainingPlanTrain, toolAmlTrainingPlanCreate } from './aml-job-tools'
26
26
 
27
27
  export { toolOptimizationExplore } from './optimization-tools'
28
+ export { toolDaqIdentifiability, toolInterventionHistory } from './identifiability-tools'
28
29
  export { toolTwinProviderCatalog, toolTwinSceneDiscover, toolTwinSceneCompile, toolTwinSceneFreeze, toolTwinSceneRead, toolTwinPhysicsSpecDraft, toolTwinPhysicsSpecValidate, toolTwinPhysicsSpecCompile, toolTwinSnapshotCreate, toolTwinTrialRun, toolMpcOptimize, toolTwinGateEvaluate, toolTwinCalibrationRequest, toolTwinBayesOptimize } from './twin-tools'
29
30
  export { toolAmlActivity } from './aml-activity'
30
31
  export { toolRecipePropose } from './recipe-propose-tools'
@@ -21,6 +21,8 @@ export async function requestManualApproval(args: {
21
21
  * 配方授权路径传「绑定配方仍存在且仍包含该参数节点」——否则批准时绑定已解除仍会执行。
22
22
  */
23
23
  verify?: () => boolean
24
+ /** P5 科学载荷(效应/CI/MDE/证据边/可证伪方式):随审批卡结构化落库,前端直接渲染 */
25
+ payload?: unknown
24
26
  }): Promise<{ ok: true, comment: string, approvalId: string } | { ok: false, text: string, isError: true }> {
25
27
  const action = args.action ?? '下发'
26
28
  const pendingText = action === '回退'
@@ -31,7 +33,7 @@ export async function requestManualApproval(args: {
31
33
  if (approvals.hasPendingFor(args.agentId, args.nodeId)) {
32
34
  return { ok: false, text: pendingText, isError: true }
33
35
  }
34
- const ap = await approvals.request(args.agentId, args.nodeId, 'dcw', args.detail)
36
+ const ap = await approvals.request(args.agentId, args.nodeId, 'dcw', args.detail, args.payload !== undefined ? { payload: args.payload } : undefined)
35
37
  if (!ap.approved) {
36
38
  return {
37
39
  ok: false,
@@ -3,6 +3,7 @@
3
3
  * (由 server/services/workshop/agents/industrial-tools.ts 按职责拆出;内容逐行原文搬运)
4
4
  */
5
5
  import type { RecipeView } from '../../../../../shared/dcw-protocol'
6
+ import { randomUUID } from 'node:crypto'
6
7
  import { agentBadgeLabel } from '../agent-badge'
7
8
  import { getActiveLineRun } from '../../dcw/line-run'
8
9
  import { getAgentNodeBindingRepo } from '../node-bindings.repo'
@@ -18,7 +19,7 @@ import { settingOf } from '../../settings'
18
19
  import { fanoutQuery, windowOf } from './audit-query'
19
20
  import { assertRecipeCreate, assertRecipeOperation, recipeApprovalPayload, type ActiveRecipeContext } from './recipe-gate'
20
21
  import { RECOVERY_RETRY_HINT, RECOVERY_TRACE_HINT, RECOVERY_VERIFY_HINT } from './fallback-hints'
21
- import { approvalOnlyTrialReceipt } from './bench-approval-only'
22
+ import { approvalOnlyTrialReceipt, sameApprovalOnlyTrialReceipt, type ApprovalOnlyTrialReceipt } from './bench-approval-only'
22
23
  import { currentToolInvocation } from '../governance-harness-audit'
23
24
  import { executionModeOfAgent } from '../execution-mode'
24
25
 
@@ -1007,18 +1008,30 @@ async function hitlDispatchGate(agentId: string, recipeId: string, detail: strin
1007
1008
  payload?: unknown
1008
1009
  trialTargets?: Array<{ id: string, driver: string, driverConfig: Record<string, unknown> }>
1009
1010
  lineId?: string
1010
- }): Promise<{ approved: boolean, comment: string, id: string, approval_bypassed?: true }> {
1011
+ trialParams?: Array<{ node_id: string, value: number }>
1012
+ hypothesis?: string
1013
+ invocationId?: string
1014
+ }): Promise<{ approved: boolean, comment: string, id: string, approval_bypassed?: true, approval_receipt?: ApprovalOnlyTrialReceipt }> {
1011
1015
  if (opts?.trialTargets) {
1012
- const receipt = approvalOnlyTrialReceipt({ recipeId, line: getDcwLineRepo().byId(opts.lineId ?? ''), nodes: opts.trialTargets })
1016
+ const receipt = approvalOnlyTrialReceipt({
1017
+ stage: 'approval',
1018
+ invocationId: opts.invocationId ?? '',
1019
+ actorId: agentId,
1020
+ recipeId,
1021
+ line: getDcwLineRepo().byId(opts.lineId ?? ''),
1022
+ nodes: opts.trialTargets,
1023
+ hypothesis: opts.hypothesis ?? '',
1024
+ params: opts.trialParams ?? [],
1025
+ })
1013
1026
  if (receipt) {
1014
1027
  recordOps({
1015
1028
  actor: agentId, actorName: agentBadgeLabel(agentId), actorKind: 'agent',
1016
1029
  action: 'recipe.approval.bypassed', kind: 'recipe', targetKind: 'recipe', targetId: recipeId,
1017
1030
  lineId: opts.lineId ?? '', recipeId,
1018
1031
  summary: '隔离模拟器审批消融:仅跳过人工审批等待,无人工批准记录',
1019
- detail: receipt,
1032
+ detail: { ...receipt, stage: 'approval-gate' },
1020
1033
  })
1021
- return { approved: true, comment: '', id: '', approval_bypassed: true }
1034
+ return { approved: true, comment: '', id: '', approval_bypassed: true, approval_receipt: receipt }
1022
1035
  }
1023
1036
  }
1024
1037
  const { getToolApprovals } = await import('../tool-approvals')
@@ -1148,6 +1161,7 @@ export async function toolRecipeTrial(agentId: string, args: {
1148
1161
  if (!target.ok) return { text: target.text, isError: true }
1149
1162
  const recipe = target.recipe
1150
1163
  const recipeId = recipe.id
1164
+ const toolInvocationId = currentToolInvocation()?.invocationId ?? randomUUID()
1151
1165
  // 权限模型 v2 + 2026-10-28 双轨:recipe 绑定 ∨ 本次候选覆盖集 ⊆ dcw 节点绑定面
1152
1166
  const gate = assertRecipeOperation(agentId, recipe, 'trial', list.map(p => p.nodeId))
1153
1167
  if (!gate.ok) return { text: gate.text, isError: true }
@@ -1171,6 +1185,7 @@ export async function toolRecipeTrial(agentId: string, args: {
1171
1185
  let hitlNote = ''
1172
1186
  let gateApprovalId = ''
1173
1187
  let approvalBypassed = false
1188
+ let approvalReceipt: ApprovalOnlyTrialReceipt | null = null
1174
1189
  if (gate.hitlRequired) {
1175
1190
  const gateDecision = await hitlDispatchGate(
1176
1191
  agentId,
@@ -1181,18 +1196,32 @@ export async function toolRecipeTrial(agentId: string, args: {
1181
1196
  return `${node?.name ?? p.nodeId} ${old ?? '?'}→${p.value}${node?.unit ?? ''}`
1182
1197
  }).join(';')} | 假设:${hypothesis} | 批准=整批下发试验(不写版本);拒绝可附指导`,
1183
1198
  `${emergency ? '【应急】' : ''}配方试验(整批候选)下发审批`,
1184
- { lineId: recipe.lineId, trialTargets: list.map(p => getDcwController().byId(p.nodeId)!), payload: { ...recipeApprovalPayload('trial', recipe.id, recipe.name, {
1185
- reason: hypothesis,
1186
- params: list.map((p) => {
1187
- const node = getDcwController().byId(p.nodeId)
1188
- const old = recipe.params.find(x => x.nodeId === p.nodeId)?.value
1189
- return { nodeId: p.nodeId, name: node?.name ?? p.nodeId, from: old ?? null, to: p.value, unit: node?.unit }
1190
- }),
1191
- context: gate.activeContext,
1192
- }), ...(emergency ? { emergency: true } : {}) } },
1199
+ {
1200
+ lineId: recipe.lineId,
1201
+ trialTargets: list.map(p => getDcwController().byId(p.nodeId)!),
1202
+ trialParams: list.map(p => ({ node_id: p.nodeId, value: p.value })),
1203
+ hypothesis,
1204
+ invocationId: toolInvocationId,
1205
+ payload: {
1206
+ ...recipeApprovalPayload('trial', recipe.id, recipe.name, {
1207
+ reason: hypothesis,
1208
+ params: list.map((p) => {
1209
+ const node = getDcwController().byId(p.nodeId)
1210
+ const old = recipe.params.find(x => x.nodeId === p.nodeId)?.value
1211
+ return { nodeId: p.nodeId, name: node?.name ?? p.nodeId, from: old ?? null, to: p.value, unit: node?.unit }
1212
+ }),
1213
+ context: gate.activeContext,
1214
+ }),
1215
+ ...(emergency ? { emergency: true } : {}),
1216
+ },
1217
+ },
1193
1218
  )
1194
1219
  gateApprovalId = gateDecision.id
1195
1220
  approvalBypassed = gateDecision.approval_bypassed === true
1221
+ approvalReceipt = gateDecision.approval_receipt ?? null
1222
+ if (approvalBypassed && !approvalReceipt) {
1223
+ return { text: 'Approval-only qualification receipt is missing; dispatch was refused.', isError: true, approval_bypassed: true }
1224
+ }
1196
1225
  if (!gateDecision.approved) {
1197
1226
  return {
1198
1227
  text: `人工未批准本次试验下发。人工指导:${gateDecision.comment || '(无附言,仅不同意候选)'}。请按人工指导修订候选参数(必要时先 recipe_update 调整基线),然后重新提交 recipe_trial。`,
@@ -1211,7 +1240,21 @@ export async function toolRecipeTrial(agentId: string, args: {
1211
1240
  const execGate = assertRecipeOperation(agentId, recipe, 'trial', list.map(p => p.nodeId))
1212
1241
  if (!execGate.ok) return { text: `下发前授权复核未通过,本次未执行:${execGate.text}`, isError: true }
1213
1242
  // Recheck the qualified driver/PID after the asynchronous grant revalidation.
1214
- if (approvalBypassed) approvalOnlyTrialReceipt({ recipeId, line: getDcwLineRepo().byId(recipe.lineId), nodes: list.map(p => getDcwController().byId(p.nodeId)!) })
1243
+ if (approvalBypassed) {
1244
+ const dispatchReceipt = approvalOnlyTrialReceipt({
1245
+ stage: 'dispatch',
1246
+ invocationId: toolInvocationId,
1247
+ actorId: agentId,
1248
+ recipeId,
1249
+ line: getDcwLineRepo().byId(recipe.lineId),
1250
+ nodes: list.map(p => getDcwController().byId(p.nodeId)!),
1251
+ hypothesis,
1252
+ params: list.map(p => ({ node_id: p.nodeId, value: p.value })),
1253
+ })
1254
+ if (!sameApprovalOnlyTrialReceipt(approvalReceipt, dispatchReceipt)) {
1255
+ return { text: 'Approval-only qualification changed or was consumed before dispatch; write was refused.', isError: true, approval_bypassed: true }
1256
+ }
1257
+ }
1215
1258
  const invocation = currentToolInvocation()
1216
1259
  const run = await getDcwController().applyRecipe(recipeId, {
1217
1260
  overrides: list, trial: true, agentDispatch: true, agentApprovalId: gateApprovalId, emergency,
@@ -13,27 +13,16 @@ import { createId } from '../../aml/twin/contracts'
13
13
  import { getAmlRuntime } from '../../aml/runtime'
14
14
  import { getChannelTwinProfile } from '../../aml/twin/channel-profile'
15
15
  import { getAgentNodeBindingRepo } from '../node-bindings.repo'
16
- import { getDaqController } from '../../daq/daq-controller'
17
16
  import { getDcwController } from '../../dcw/dcw-controller'
18
17
  import type { HostToolResult } from '../host-tool-bridge/types'
19
18
  import { dcwControlGovernedInternal } from './dcw-tools'
20
19
  import { resolveRefFaces } from './tool-verify'
20
+ // P1/P2(科学探索计划):可辨识性前置门 + 引擎判读 + 台账回填
21
+ import { assessIdentifiability } from '../../aml/identifiability'
22
+ import { attachExplorationVerdict, explorationIdentifiabilityPreflight, identGateEnabled, identifiabilityLearningText, periodHintFromSeries, readTargetWindow } from './identifiability-tools'
21
23
 
22
24
  const sleep = (ms: number) => new Promise(r => setTimeout(r, ms))
23
25
 
24
- async function readTargetMean(nodeId: string, windowMs = 45_000): Promise<number | null> {
25
- const now = Date.now()
26
- try {
27
- const pts = await getDaqController().samples(nodeId, { fromMs: now - windowMs, toMs: now, bucketMs: 1000, limit: 60 }) as Array<{ at?: number, value?: number, avg?: number }>
28
- const vals = pts.map(p => Number(p.value ?? p.avg)).filter(Number.isFinite)
29
- if (vals.length === 0) return null
30
- return vals.reduce((a, b) => a + b, 0) / vals.length
31
- }
32
- catch {
33
- return null
34
- }
35
- }
36
-
37
26
  export async function toolOptimizationExplore(agentId: string, args: {
38
27
  control_node_id?: string
39
28
  target_node_id?: string
@@ -93,10 +82,17 @@ export async function toolOptimizationExplore(agentId: string, args: {
93
82
  }
94
83
  }
95
84
 
96
- const targetBefore = await readTargetMean(targetNodeId)
85
+ // P1 可辨识性前置门:上次干预未收口(判读窗未满)或欠功效/混杂建议窗未过期 → 拒发新激励
86
+ // (两次激励响应叠加必致判读失真;门禁零取数只查台账;AW_IDENT_GATE=0 为逃生开关)
87
+ const gate = await explorationIdentifiabilityPreflight(controlNodeId)
88
+ if (gate.blocked) return { text: gate.text, isError: true }
97
89
 
98
90
  // 真实写入:复用 dcw_control 全治理链(手动绑定会挂 HITL,auto+bounded 走限界直写)
99
91
  const settleSec = Math.min(300, Math.max(10, Number(args.settle_seconds ?? 45)))
92
+ const writeAtMs = Date.now()
93
+ // 写前窗(=settle 窗):均值走旧台账链,序列留给引擎判读 —— 同一次取数,不增读
94
+ const preWindow = await readTargetWindow(targetNodeId, writeAtMs - settleSec * 1000, writeAtMs)
95
+ const targetBefore = preWindow.mean
100
96
  const write = await dcwControlGovernedInternal(agentId, {
101
97
  node_id: controlNodeId,
102
98
  value: target,
@@ -105,9 +101,20 @@ export async function toolOptimizationExplore(agentId: string, args: {
105
101
  const writeOk = !write.isError
106
102
 
107
103
  let targetAfter: number | null = null
104
+ let verdictText = ''
108
105
  if (writeOk) {
109
106
  await sleep(settleSec * 1000)
110
- targetAfter = await readTargetMean(targetNodeId)
107
+ // 写后窗(=settle 窗):一次取数同时取均值与序列(与写前窗对称)
108
+ const postWindow = await readTargetWindow(targetNodeId, writeAtMs, Date.now())
109
+ targetAfter = postWindow.mean
110
+ // P1 判读:前后窗完整序列交给可辨识性引擎(不再以单点差分作因果依据),
111
+ // 判定回填干预台账(intervention_events);序列不足时 verdictText 空 → 中性文案,不外推。
112
+ if (identGateEnabled() && preWindow.values.length >= 8 && postWindow.values.length >= 8) {
113
+ const v = assessIdentifiability({ pre: preWindow.values, post: postWindow.values, beatMs: 1000 })
114
+ attachExplorationVerdict(controlNodeId, targetNodeId, v)
115
+ verdictText = identifiabilityLearningText(v)
116
+ if (!gate.hint) gate.hint = periodHintFromSeries(preWindow.values)
117
+ }
111
118
  }
112
119
 
113
120
  const record = {
@@ -146,11 +153,18 @@ export async function toolOptimizationExplore(agentId: string, args: {
146
153
  ` 控制: ${node.name}(${controlNodeId}) ${record.controlBefore} → ${record.controlAfter}(步长 ${Number(step).toFixed(3)},方向 ${record.direction}${clamped ? ',触调试边界截断' : ''})`,
147
154
  ` 响应: ${targetNodeId} ${targetBefore != null ? targetBefore.toFixed(3) : 'n/a'} → ${targetAfter != null ? targetAfter.toFixed(3) : 'n/a'}(Δ=${deltaTarget != null ? deltaTarget.toFixed(3) : 'n/a'},窗口 ${settleSec}s)`,
148
155
  ` goal: ${goalText}`,
149
- deltaTarget != null
150
- ? ` 学习: 该方向目标响应 ${deltaTarget > 0 ? '上升' : '下降'} ${Math.abs(deltaTarget).toFixed(3)};继续探索请按此符号外推,或反向验证。`
151
- : ' 学习: 响应窗口内未读到稳定差分;建议增大 settle_seconds 或检查目标节点采样。',
156
+ // P1 门禁挂钩:方向性外推措辞只在引擎判"效应可分辨"时出现(verdictText);
157
+ // 判读欠功效/混杂/负结论时如实转述;拍数不足时中性提示,不外推。
158
+ verdictText
159
+ ? ` ${verdictText}`
160
+ : deltaTarget != null
161
+ ? (identGateEnabled()
162
+ ? ` 学习: 响应窗拍数不足以做可辨识性判读(前后各需 ≥8 拍);单点差分 Δ=${deltaTarget > 0 ? '+' : ''}${deltaTarget.toFixed(3)} 仅供参考,不要据此直接外推方向。建议增大 settle_seconds 或检查目标节点采样。`
163
+ : ` 学习: 该方向目标响应 ${deltaTarget > 0 ? '上升' : '下降'} ${Math.abs(deltaTarget).toFixed(3)};继续探索请按此符号外推,或反向验证。`)
164
+ : ' 学习: 响应窗口内未读到稳定差分;建议增大 settle_seconds 或检查目标节点采样。',
152
165
  `探索记录已归档,可在 AML 界面与训练数据回流中使用。`,
153
166
  ]
167
+ if (gate.hint) lines.push(` 提示: ${gate.hint}`)
154
168
  return { text: lines.join('\n') }
155
169
  }
156
170
  catch (err) {
@@ -14,6 +14,7 @@ import { checkToolAgainstScope } from '../runtime/permission-scope'
14
14
  import { getToolApprovals } from './tool-approvals'
15
15
  import { verifyToolReferences } from './industrial/tool-verify'
16
16
  import { recordOps } from '../ops/ops'
17
+ import { assessCausalClaim, causalClaimLines } from '../aml/causal-claim'
17
18
  import type { HostToolResult } from './host-tool-bridge/types'
18
19
 
19
20
  export interface PluginGovernanceIdentity {
@@ -66,11 +67,30 @@ async function governKbAgent(identity: PluginGovernanceIdentity, toolName: strin
66
67
  }
67
68
  return null
68
69
  }
70
+ // P6 因果断言质量门:识别无证据锚的因果叙述(事故:无锚叙述污染 KB),
71
+ // 在审批卡标注 anecdotal 并留 ops 告警;不禁止写入(人审可见即可)。
72
+ const claim = assessCausalClaim(prompt)
73
+ if (claim.anecdotal) {
74
+ recordOps({
75
+ actor: identity.agentId, actorName: identity.name, actorKind: 'agent',
76
+ action: 'plugin.kb.anecdotal_causal_claim', kind: 'system', level: 'warn',
77
+ targetKind: 'tool', targetId: toolName,
78
+ summary: '知识库入库含无证据锚的因果断言(anecdotal),已在审批卡标注',
79
+ detail: { reasons: claim.reasons, prompt: prompt.slice(0, 300) },
80
+ })
81
+ }
69
82
  // 写入知识库:显式人工审批(与配方/产线写同源审批服务;缺省超时=拒绝)
70
- const detail = `知识库入库审批(kb_agent):\n${prompt.slice(0, 1200)}`
83
+ const qualityLines = causalClaimLines(claim)
84
+ const detail = `知识库入库审批(kb_agent):\n${prompt.slice(0, 1200)}${qualityLines.length ? `\n${qualityLines.join('\n')}` : ''}`
71
85
  const decision = await getToolApprovals().request(identity.agentId, '', 'kb', detail, {
72
86
  title: '知识库入库审批',
73
- payload: { tool: 'kb_agent', action: 'ingest', prompt: prompt.slice(0, 2000), mode: String(args.mode ?? 'sync') },
87
+ payload: {
88
+ tool: 'kb_agent',
89
+ action: 'ingest',
90
+ prompt: prompt.slice(0, 2000),
91
+ mode: String(args.mode ?? 'sync'),
92
+ causalClaim: { isCausal: claim.isCausal, hasEvidenceRef: claim.hasEvidenceRef, anecdotal: claim.anecdotal, refs: claim.refs },
93
+ },
74
94
  })
75
95
  if (!decision.approved) {
76
96
  recordOps({