agentworkshop 0.8.7 → 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 (2696) hide show
  1. package/.AgentWorkShop/prompts/host-tools.en.json +302 -302
  2. package/.AgentWorkShop/prompts/host-tools.json +4177 -4080
  3. package/.AgentWorkShop/prompts/lead-supervise.md +6 -0
  4. package/.AgentWorkShop/prompts/mode-goal.md +3 -3
  5. package/.output/.AgentWorkShop/aml-python/__pycache__/aml_eval.cpython-312.pyc +0 -0
  6. package/.output/.AgentWorkShop/aml-python/__pycache__/amlkit.cpython-312.pyc +0 -0
  7. package/.output/.AgentWorkShop/aml-python/__pycache__/train-example.cpython-312.pyc +0 -0
  8. package/.output/.AgentWorkShop/aml-python/__pycache__/train-hybrid-example.cpython-312.pyc +0 -0
  9. package/.output/.AgentWorkShop/aml-python/train-example.py +92 -92
  10. package/.output/.AgentWorkShop/prompts/host-tools.en.json +302 -302
  11. package/.output/.AgentWorkShop/prompts/host-tools.json +4177 -4080
  12. package/.output/.AgentWorkShop/prompts/lead-supervise.md +6 -0
  13. package/.output/.AgentWorkShop/prompts/mode-goal.md +3 -3
  14. package/.output/.AgentWorkShop/schema.json +173 -152
  15. package/.output/nitro.json +1 -1
  16. package/.output/public/_nuxt/11Nifltq2.js +16 -0
  17. package/.output/public/_nuxt/26OL4Ao82.js +1 -0
  18. package/.output/public/_nuxt/B37d6f-P2.js +1 -0
  19. package/.output/public/_nuxt/B8vwpJxO.js +1 -0
  20. package/.output/public/_nuxt/BEbg8OxK2.js +1 -0
  21. package/.output/public/_nuxt/BFUO7wT0.js +1 -0
  22. package/.output/public/_nuxt/BPUQZ9Lq2.js +8 -0
  23. package/.output/public/_nuxt/BVg2R2VB2.js +1 -0
  24. package/.output/public/_nuxt/BaYDgyaR.js +3 -0
  25. package/.output/public/_nuxt/BclHgAY62.js +1 -0
  26. package/.output/public/_nuxt/BfvuWqSa.js +1 -0
  27. package/.output/public/_nuxt/BkEokGX5.js +1 -0
  28. package/.output/public/_nuxt/BkZomIrQ.js +1 -0
  29. package/.output/public/_nuxt/BtZKe9ZV2.js +1 -0
  30. package/.output/public/_nuxt/BwOko01T.js +47 -0
  31. package/.output/public/_nuxt/BwQJEuBn.js +21 -0
  32. package/.output/public/_nuxt/C-wrWG5m.js +1 -0
  33. package/.output/public/_nuxt/C0I4h6do.js +1 -0
  34. package/.output/public/_nuxt/C0wjQa6_.js +1 -0
  35. package/.output/public/_nuxt/C5x3IQz42.js +1 -0
  36. package/.output/public/_nuxt/C7BcCB7C2.js +1 -0
  37. package/.output/public/_nuxt/CBkXv24C2.js +1 -0
  38. package/.output/public/_nuxt/CBpkE3Aa.js +1 -0
  39. package/.output/public/_nuxt/CDO7Zey1.js +20 -0
  40. package/.output/public/_nuxt/CEOSV8kw.js +1 -0
  41. package/.output/public/_nuxt/CHpYSwnV.js +1 -0
  42. package/.output/public/_nuxt/CZgxZE_w2.js +1 -0
  43. package/.output/public/_nuxt/CfE35xQa2.js +1 -0
  44. package/.output/public/_nuxt/Cgym6fLd2.js +1 -0
  45. package/.output/public/_nuxt/CjdxNYpU2.js +1 -0
  46. package/.output/public/_nuxt/CjhzuymI.js +2 -0
  47. package/.output/public/_nuxt/CmuGMxDP.js +1 -0
  48. package/.output/public/_nuxt/CoAJnzi9.js +1 -0
  49. package/.output/public/_nuxt/CuHnwZbm.js +1 -0
  50. package/.output/public/_nuxt/CwHhmA3N.js +1 -0
  51. package/.output/public/_nuxt/D1Ljnzu-.js +1 -0
  52. package/.output/public/_nuxt/D8AvmPUH.js +1 -0
  53. package/.output/public/_nuxt/D9saExk92.js +1 -0
  54. package/.output/public/_nuxt/DDLi49qE.js +1 -0
  55. package/.output/public/_nuxt/DNlwacP72.js +1 -0
  56. package/.output/public/_nuxt/DPIImHuY2.js +1 -0
  57. package/.output/public/_nuxt/DW6X-3XT.js +1 -0
  58. package/.output/public/_nuxt/DZc-zU-H2.js +1 -0
  59. package/.output/public/_nuxt/DZqVVvR0.js +1 -0
  60. package/.output/public/_nuxt/Df35i2Tg2.js +1 -0
  61. package/.output/public/_nuxt/DuUc4bbY2.js +1 -0
  62. package/.output/public/_nuxt/DvGgUSuN2.js +2 -0
  63. package/.output/public/_nuxt/DvfiRGS-.js +1 -0
  64. package/.output/public/_nuxt/DzPypczG.js +1 -0
  65. package/.output/public/_nuxt/FQK98hkN2.js +1 -0
  66. package/.output/public/_nuxt/Lq_0yoit2.js +1 -0
  67. package/.output/public/_nuxt/MJD65-MH2.js +1 -0
  68. package/.output/public/_nuxt/OmpTerminalPanel.ComMDrA8.css +1 -0
  69. package/.output/public/_nuxt/PluginSlot.CGH0vb95.css +1 -0
  70. package/.output/public/_nuxt/TownView.B_8ctigh.css +1 -0
  71. package/.output/public/_nuxt/WZrTmJqL.js +1 -0
  72. package/.output/public/_nuxt/_id_.BQRWK7J2.css +1 -0
  73. package/.output/public/_nuxt/_wsId_.CQMH8t8j.css +1 -0
  74. package/.output/public/_nuxt/agents.D-JPovTZ.css +1 -0
  75. package/.output/public/_nuxt/aml.PalMp-5n.css +1 -0
  76. package/.output/public/_nuxt/builds/latest.json +1 -1
  77. package/.output/public/_nuxt/builds/meta/f507c33b-4ecc-4e32-af88-2e3736b443e9.json +1 -0
  78. package/.output/public/_nuxt/byZYInPk2.js +1 -0
  79. package/.output/public/_nuxt/dHwWyr6b.js +1 -0
  80. package/.output/public/_nuxt/default.BEXGWZFQ.css +1 -0
  81. package/.output/public/_nuxt/gfKPQ5o72.js +2 -0
  82. package/.output/public/_nuxt/logs.DlG85QRw.css +1 -0
  83. package/.output/public/_nuxt/monitor.D3yEqqrv.css +1 -0
  84. package/.output/public/_nuxt/ontology.CkuUThtY.css +1 -0
  85. package/.output/public/_nuxt/operations.-l6u44Ar.css +1 -0
  86. package/.output/public/_nuxt/pages.Cdpm_B-G.css +1 -0
  87. package/.output/public/_nuxt/permissions.DxuOOIqQ.css +1 -0
  88. package/.output/public/_nuxt/rDvMijKA.js +9 -0
  89. package/.output/public/_nuxt/schedules.BXNJ9q_I.css +1 -0
  90. package/.output/public/_nuxt/teams.CLQaXno5.css +1 -0
  91. package/.output/public/_nuxt/tokens.BDSUWF-L.css +1 -0
  92. package/.output/public/_nuxt/tools.BwXFAb-X.css +1 -0
  93. package/.output/public/_nuxt/workshop.BBiFhXuM.css +1 -0
  94. package/.output/public/favicon.svg +14 -14
  95. package/.output/public/robots.txt +3 -3
  96. package/.output/server/chunks/_/LeftOutlined.mjs.map +1 -1
  97. package/.output/server/chunks/_/RightOutlined.mjs.map +1 -1
  98. package/.output/server/chunks/_/SearchOutlined.mjs +13 -13
  99. package/.output/server/chunks/_/SearchOutlined.mjs.map +1 -1
  100. package/.output/server/chunks/_/access.mjs +5 -3
  101. package/.output/server/chunks/_/access.mjs.map +1 -1
  102. package/.output/server/chunks/_/catalog-view.mjs +1 -1
  103. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  104. package/.output/server/chunks/_/data-export.mjs +12 -12
  105. package/.output/server/chunks/_/data-export.mjs.map +1 -1
  106. package/.output/server/chunks/_/data-query.mjs +3 -3
  107. package/.output/server/chunks/_/eda-run.repo.mjs +6 -4
  108. package/.output/server/chunks/_/eda-run.repo.mjs.map +1 -1
  109. package/.output/server/chunks/_/error-500.mjs.map +1 -1
  110. package/.output/server/chunks/_/features.mjs +9 -7
  111. package/.output/server/chunks/_/features.mjs.map +1 -1
  112. package/.output/server/chunks/_/golden.mjs +3 -3
  113. package/.output/server/chunks/_/host-bindings.mjs +5 -3
  114. package/.output/server/chunks/_/host-bindings.mjs.map +1 -1
  115. package/.output/server/chunks/_/index.mjs +5 -3
  116. package/.output/server/chunks/_/index.mjs.map +1 -1
  117. package/.output/server/chunks/_/line-scope.mjs +1 -1
  118. package/.output/server/chunks/_/mes-console.mjs +1 -1
  119. package/.output/server/chunks/_/mes-secrets.repo.mjs +5 -3
  120. package/.output/server/chunks/_/mes-secrets.repo.mjs.map +1 -1
  121. package/.output/server/chunks/_/nitro.mjs +8022 -4350
  122. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  123. package/.output/server/chunks/_/ocap.mjs +1 -1
  124. package/.output/server/chunks/_/rest-auth.mjs +1 -1
  125. package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
  126. package/.output/server/chunks/_/spc.mjs +5 -3
  127. package/.output/server/chunks/_/spc.mjs.map +1 -1
  128. package/.output/server/chunks/_/user.schema.mjs +1 -1
  129. package/.output/server/chunks/build/AuthGate-nF1evO4v.mjs +716 -0
  130. package/.output/server/chunks/build/AuthGate-nF1evO4v.mjs.map +1 -0
  131. package/.output/server/chunks/build/FormItemContext-BlyzocS0.mjs +72 -0
  132. package/.output/server/chunks/build/FormItemContext-BlyzocS0.mjs.map +1 -0
  133. package/.output/server/chunks/build/OmpTerminalPanel-BhvhQ1gG.mjs +942 -0
  134. package/.output/server/chunks/build/OmpTerminalPanel-BhvhQ1gG.mjs.map +1 -0
  135. package/.output/server/chunks/build/PluginSlot-BUKXwV2X.mjs +141 -0
  136. package/.output/server/chunks/build/PluginSlot-BUKXwV2X.mjs.map +1 -0
  137. package/.output/server/chunks/build/TownView-BqdMFqei.mjs +6496 -0
  138. package/.output/server/chunks/build/TownView-BqdMFqei.mjs.map +1 -0
  139. package/.output/server/chunks/build/_id_-CsCtnbwe.mjs +394 -0
  140. package/.output/server/chunks/build/_id_-CsCtnbwe.mjs.map +1 -0
  141. package/.output/server/chunks/build/_id_-P1W47Gqq.mjs +2047 -0
  142. package/.output/server/chunks/build/_id_-P1W47Gqq.mjs.map +1 -0
  143. package/.output/server/chunks/build/_wsId_-DpOErFj6.mjs +14591 -0
  144. package/.output/server/chunks/build/_wsId_-DpOErFj6.mjs.map +1 -0
  145. package/.output/server/chunks/build/agents-D7CdEUTv.mjs +1080 -0
  146. package/.output/server/chunks/build/agents-D7CdEUTv.mjs.map +1 -0
  147. package/.output/server/chunks/build/alert-D0ivtTGy.mjs +263 -0
  148. package/.output/server/chunks/build/alert-D0ivtTGy.mjs.map +1 -0
  149. package/.output/server/chunks/build/aml-DRAFRcGU.mjs +816 -0
  150. package/.output/server/chunks/build/aml-DRAFRcGU.mjs.map +1 -0
  151. package/.output/server/chunks/build/analysis-J9axLuRt.mjs +535 -0
  152. package/.output/server/chunks/build/analysis-J9axLuRt.mjs.map +1 -0
  153. package/.output/server/chunks/build/api-B4Om0mEc.mjs +55 -0
  154. package/.output/server/chunks/build/api-B4Om0mEc.mjs.map +1 -0
  155. package/.output/server/chunks/build/api-BEW_ebY_.mjs +66 -0
  156. package/.output/server/chunks/build/api-BEW_ebY_.mjs.map +1 -0
  157. package/.output/server/chunks/build/api-BsAgXWxi.mjs +74 -0
  158. package/.output/server/chunks/build/api-BsAgXWxi.mjs.map +1 -0
  159. package/.output/server/chunks/build/api-error-BwAQLw44.mjs +47 -0
  160. package/.output/server/chunks/build/api-error-BwAQLw44.mjs.map +1 -0
  161. package/.output/server/chunks/build/apiClient-BvXtNzC8.mjs +81 -0
  162. package/.output/server/chunks/build/apiClient-BvXtNzC8.mjs.map +1 -0
  163. package/.output/server/chunks/build/board-CJUc032b.mjs +191 -0
  164. package/.output/server/chunks/build/board-CJUc032b.mjs.map +1 -0
  165. package/.output/server/chunks/build/builtin-catalog-edpDcgfL.mjs.map +1 -0
  166. package/.output/server/chunks/build/card-Cqk0Ur-L.mjs +953 -0
  167. package/.output/server/chunks/build/card-Cqk0Ur-L.mjs.map +1 -0
  168. package/.output/server/chunks/build/channel-templates-ggsBacZF.mjs +944 -0
  169. package/.output/server/chunks/build/channel-templates-ggsBacZF.mjs.map +1 -0
  170. package/.output/server/chunks/build/chart-pipeline-BpoWYMK_.mjs.map +1 -0
  171. package/.output/server/chunks/build/chart-trend-BWeZh5Lv.mjs.map +1 -0
  172. package/.output/server/chunks/build/checkbox-CrT4cnfu.mjs +439 -0
  173. package/.output/server/chunks/build/checkbox-CrT4cnfu.mjs.map +1 -0
  174. package/.output/server/chunks/build/client-only-qNA2OVV_.mjs +43 -0
  175. package/.output/server/chunks/build/client-only-qNA2OVV_.mjs.map +1 -0
  176. package/.output/server/chunks/build/constants-HPHJvjne.mjs +144 -0
  177. package/.output/server/chunks/build/constants-HPHJvjne.mjs.map +1 -0
  178. package/.output/server/chunks/build/core-CgTOPS4t.mjs +294 -0
  179. package/.output/server/chunks/build/core-CgTOPS4t.mjs.map +1 -0
  180. package/.output/server/chunks/build/daq-B_dRMDw4.mjs +1268 -0
  181. package/.output/server/chunks/build/daq-B_dRMDw4.mjs.map +1 -0
  182. package/.output/server/chunks/build/data-D8uX1dnm.mjs +483 -0
  183. package/.output/server/chunks/build/data-D8uX1dnm.mjs.map +1 -0
  184. package/.output/server/chunks/build/dcw-D_HD_H_2.mjs +507 -0
  185. package/.output/server/chunks/build/dcw-D_HD_H_2.mjs.map +1 -0
  186. package/.output/server/chunks/build/dcw-driver-badge-Df5wL_ZA.mjs.map +1 -0
  187. package/.output/server/chunks/build/default-CNWS6NUw.mjs +2355 -0
  188. package/.output/server/chunks/build/default-CNWS6NUw.mjs.map +1 -0
  189. package/.output/server/chunks/build/descriptions-BNlfKG9y.mjs +406 -0
  190. package/.output/server/chunks/build/descriptions-BNlfKG9y.mjs.map +1 -0
  191. package/.output/server/chunks/build/drawer-Caji0PLs.mjs +834 -0
  192. package/.output/server/chunks/build/drawer-Caji0PLs.mjs.map +1 -0
  193. package/.output/server/chunks/build/dropdown-BNwTVGde.mjs +14 -0
  194. package/.output/server/chunks/build/dropdown-BNwTVGde.mjs.map +1 -0
  195. package/.output/server/chunks/build/dropdown-Cd-xPhR6.mjs +540 -0
  196. package/.output/server/chunks/build/dropdown-Cd-xPhR6.mjs.map +1 -0
  197. package/.output/server/chunks/build/es-Bxu10NJ2.mjs +45 -0
  198. package/.output/server/chunks/build/es-Bxu10NJ2.mjs.map +1 -0
  199. package/.output/server/chunks/build/firstNotUndefined-8H5_qHUu.mjs +2448 -0
  200. package/.output/server/chunks/build/firstNotUndefined-8H5_qHUu.mjs.map +1 -0
  201. package/.output/server/chunks/build/form-D_UpWPN4.mjs +4712 -0
  202. package/.output/server/chunks/build/form-D_UpWPN4.mjs.map +1 -0
  203. package/.output/server/chunks/build/hasIn-DBdElbjM.mjs +553 -0
  204. package/.output/server/chunks/build/hasIn-DBdElbjM.mjs.map +1 -0
  205. package/.output/server/chunks/build/hitl-Bd30yr1J.mjs +132 -0
  206. package/.output/server/chunks/build/hitl-Bd30yr1J.mjs.map +1 -0
  207. package/.output/server/chunks/build/input-GtPuSEgt.mjs +2181 -0
  208. package/.output/server/chunks/build/input-GtPuSEgt.mjs.map +1 -0
  209. package/.output/server/chunks/build/input-number-BNlNDK7H.mjs +1120 -0
  210. package/.output/server/chunks/build/input-number-BNlNDK7H.mjs.map +1 -0
  211. package/.output/server/chunks/build/interval-DvHBIIZh.mjs +9 -0
  212. package/.output/server/chunks/build/interval-DvHBIIZh.mjs.map +1 -0
  213. package/.output/server/chunks/build/isNumeric-CP7q_yhz.mjs +7 -0
  214. package/.output/server/chunks/build/isNumeric-CP7q_yhz.mjs.map +1 -0
  215. package/.output/server/chunks/build/logs-BnYSMRXM.mjs +494 -0
  216. package/.output/server/chunks/build/logs-BnYSMRXM.mjs.map +1 -0
  217. package/.output/server/chunks/build/menu-BXt-X0dt.mjs +1952 -0
  218. package/.output/server/chunks/build/menu-BXt-X0dt.mjs.map +1 -0
  219. package/.output/server/chunks/build/monitor-Cq6hRFeQ.mjs +2255 -0
  220. package/.output/server/chunks/build/monitor-Cq6hRFeQ.mjs.map +1 -0
  221. package/.output/server/chunks/build/narrow-fetch-CcG-BPxc.mjs.map +1 -0
  222. package/.output/server/chunks/build/ontology-ohICfVVb.mjs +1408 -0
  223. package/.output/server/chunks/build/ontology-ohICfVVb.mjs.map +1 -0
  224. package/.output/server/chunks/build/operations-4zOVhW7o.mjs +313 -0
  225. package/.output/server/chunks/build/operations-4zOVhW7o.mjs.map +1 -0
  226. package/.output/server/chunks/build/optimizer-BlWTsM-W.mjs +204 -0
  227. package/.output/server/chunks/build/optimizer-BlWTsM-W.mjs.map +1 -0
  228. package/.output/server/chunks/build/pages-DEv4ProW.mjs +544 -0
  229. package/.output/server/chunks/build/pages-DEv4ProW.mjs.map +1 -0
  230. package/.output/server/chunks/build/pagination-DTAconUo.mjs +1346 -0
  231. package/.output/server/chunks/build/pagination-DTAconUo.mjs.map +1 -0
  232. package/.output/server/chunks/build/permissions-DgXQZSyx.mjs +639 -0
  233. package/.output/server/chunks/build/permissions-DgXQZSyx.mjs.map +1 -0
  234. package/.output/server/chunks/build/pipeline-CkavMBhk.mjs +214 -0
  235. package/.output/server/chunks/build/pipeline-CkavMBhk.mjs.map +1 -0
  236. package/.output/server/chunks/build/plugins-LRjaSEZy.mjs +274 -0
  237. package/.output/server/chunks/build/plugins-LRjaSEZy.mjs.map +1 -0
  238. package/.output/server/chunks/build/popconfirm-DxYPGRgS.mjs +340 -0
  239. package/.output/server/chunks/build/popconfirm-DxYPGRgS.mjs.map +1 -0
  240. package/.output/server/chunks/build/responsiveObserve-DM3hpzhU.mjs +78 -0
  241. package/.output/server/chunks/build/responsiveObserve-DM3hpzhU.mjs.map +1 -0
  242. package/.output/server/chunks/build/schedules-Hz2DJUE2.mjs +7174 -0
  243. package/.output/server/chunks/build/schedules-Hz2DJUE2.mjs.map +1 -0
  244. package/.output/server/chunks/build/segmented-D3HWtHPw.mjs +341 -0
  245. package/.output/server/chunks/build/segmented-D3HWtHPw.mjs.map +1 -0
  246. package/.output/server/chunks/build/select-B3Dsb9yq.mjs +3923 -0
  247. package/.output/server/chunks/build/select-B3Dsb9yq.mjs.map +1 -0
  248. package/.output/server/chunks/build/settings-DXLJPq7d.mjs +1016 -0
  249. package/.output/server/chunks/build/settings-DXLJPq7d.mjs.map +1 -0
  250. package/.output/server/chunks/build/space-Dwu2Skt8.mjs +110 -0
  251. package/.output/server/chunks/build/space-Dwu2Skt8.mjs.map +1 -0
  252. package/.output/server/chunks/build/spin-C2cuvGth.mjs +357 -0
  253. package/.output/server/chunks/build/spin-C2cuvGth.mjs.map +1 -0
  254. package/.output/server/chunks/build/studio-hSqH9TYS.mjs +338 -0
  255. package/.output/server/chunks/build/studio-hSqH9TYS.mjs.map +1 -0
  256. package/.output/server/chunks/build/switch-CyR-H6Fb.mjs +377 -0
  257. package/.output/server/chunks/build/switch-CyR-H6Fb.mjs.map +1 -0
  258. package/.output/server/chunks/build/table-CmVD-cA9.mjs +7546 -0
  259. package/.output/server/chunks/build/table-CmVD-cA9.mjs.map +1 -0
  260. package/.output/server/chunks/build/tabs-Vg0e7cZE.mjs +1924 -0
  261. package/.output/server/chunks/build/tabs-Vg0e7cZE.mjs.map +1 -0
  262. package/.output/server/chunks/build/tag-y0sn-xv9.mjs +1156 -0
  263. package/.output/server/chunks/build/tag-y0sn-xv9.mjs.map +1 -0
  264. package/.output/server/chunks/build/teams-BbwYJyzv.mjs +1205 -0
  265. package/.output/server/chunks/build/teams-BbwYJyzv.mjs.map +1 -0
  266. package/.output/server/chunks/build/tokens-GYaGJ35Z.mjs +1064 -0
  267. package/.output/server/chunks/build/tokens-GYaGJ35Z.mjs.map +1 -0
  268. package/.output/server/chunks/build/tools-CnYi9cou.mjs +489 -0
  269. package/.output/server/chunks/build/tools-CnYi9cou.mjs.map +1 -0
  270. package/.output/server/chunks/build/tooltip-C2n2nNiQ.mjs +920 -0
  271. package/.output/server/chunks/build/tooltip-C2n2nNiQ.mjs.map +1 -0
  272. package/.output/server/chunks/build/town-BV-hbwb5.mjs +77 -0
  273. package/.output/server/chunks/build/town-BV-hbwb5.mjs.map +1 -0
  274. package/.output/server/chunks/build/town-CcoQKjMj.mjs +135 -0
  275. package/.output/server/chunks/build/town-CcoQKjMj.mjs.map +1 -0
  276. package/.output/server/chunks/build/types-D6J7slEa.mjs +5565 -0
  277. package/.output/server/chunks/build/types-D6J7slEa.mjs.map +1 -0
  278. package/.output/server/chunks/build/types-DWqIeMRP.mjs +78 -0
  279. package/.output/server/chunks/build/types-DWqIeMRP.mjs.map +1 -0
  280. package/.output/server/chunks/build/useAgentHarnessOptions-Dq0l0Z6d.mjs +126 -0
  281. package/.output/server/chunks/build/useAgentHarnessOptions-Dq0l0Z6d.mjs.map +1 -0
  282. package/.output/server/chunks/build/useAgentTemplateActions-BFOHb5-L.mjs +79 -0
  283. package/.output/server/chunks/build/useAgentTemplateActions-BFOHb5-L.mjs.map +1 -0
  284. package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs +69 -0
  285. package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs.map +1 -0
  286. package/.output/server/chunks/build/useAgentTemplateForm-CuJPOPcK.mjs +119 -0
  287. package/.output/server/chunks/build/useAgentTemplateForm-CuJPOPcK.mjs.map +1 -0
  288. package/.output/server/chunks/build/useAgentTemplatesCatalog-B2bIhZLA.mjs +135 -0
  289. package/.output/server/chunks/build/useAgentTemplatesCatalog-B2bIhZLA.mjs.map +1 -0
  290. package/.output/server/chunks/build/useAmlDatasets-DeoE1idn.mjs +94 -0
  291. package/.output/server/chunks/build/useAmlDatasets-DeoE1idn.mjs.map +1 -0
  292. package/.output/server/chunks/build/useAmlEntities-BJhvdqHJ.mjs +88 -0
  293. package/.output/server/chunks/build/useAmlEntities-BJhvdqHJ.mjs.map +1 -0
  294. package/.output/server/chunks/build/useAmlEnv-CDIZ6xTe.mjs +196 -0
  295. package/.output/server/chunks/build/useAmlEnv-CDIZ6xTe.mjs.map +1 -0
  296. package/.output/server/chunks/build/useAmlExperiments-Dloi834i.mjs +91 -0
  297. package/.output/server/chunks/build/useAmlExperiments-Dloi834i.mjs.map +1 -0
  298. package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs +84 -0
  299. package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs.map +1 -0
  300. package/.output/server/chunks/build/useAmlJobs-BF9LpwXz.mjs +269 -0
  301. package/.output/server/chunks/build/useAmlJobs-BF9LpwXz.mjs.map +1 -0
  302. package/.output/server/chunks/build/useAmlModels-_bweOr3R.mjs +95 -0
  303. package/.output/server/chunks/build/useAmlModels-_bweOr3R.mjs.map +1 -0
  304. package/.output/server/chunks/build/useAmlNotes-DQj980iX.mjs +88 -0
  305. package/.output/server/chunks/build/useAmlNotes-DQj980iX.mjs.map +1 -0
  306. package/.output/server/chunks/build/useAmlPredict-DHNgDSJn.mjs +132 -0
  307. package/.output/server/chunks/build/useAmlPredict-DHNgDSJn.mjs.map +1 -0
  308. package/.output/server/chunks/build/useAnalysisFeed-BrEGV_9x.mjs +131 -0
  309. package/.output/server/chunks/build/useAnalysisFeed-BrEGV_9x.mjs.map +1 -0
  310. package/.output/server/chunks/build/useDaqAddNode-D_Rkju0f.mjs +144 -0
  311. package/.output/server/chunks/build/useDaqAddNode-D_Rkju0f.mjs.map +1 -0
  312. package/.output/server/chunks/build/useDaqDetailBinding-DCWaLKXT.mjs +72 -0
  313. package/.output/server/chunks/build/useDaqDetailBinding-DCWaLKXT.mjs.map +1 -0
  314. package/.output/server/chunks/build/useDaqDetailFrames-BOIcOJRB.mjs +81 -0
  315. package/.output/server/chunks/build/useDaqDetailFrames-BOIcOJRB.mjs.map +1 -0
  316. package/.output/server/chunks/build/useDaqDetailHistory-D6WulPVs.mjs +178 -0
  317. package/.output/server/chunks/build/useDaqDetailHistory-D6WulPVs.mjs.map +1 -0
  318. package/.output/server/chunks/build/useDaqDetailNode-BGMRUIXN.mjs +101 -0
  319. package/.output/server/chunks/build/useDaqDetailNode-BGMRUIXN.mjs.map +1 -0
  320. package/.output/server/chunks/build/useDaqDetailParams-Cm9a9r5G.mjs +161 -0
  321. package/.output/server/chunks/build/useDaqDetailParams-Cm9a9r5G.mjs.map +1 -0
  322. package/.output/server/chunks/build/useDaqFilters-zAAVlzJQ.mjs +224 -0
  323. package/.output/server/chunks/build/useDaqFilters-zAAVlzJQ.mjs.map +1 -0
  324. package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs +92 -0
  325. package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs.map +1 -0
  326. package/.output/server/chunks/build/useDaqOptimizations-BE_9Z2s_.mjs +138 -0
  327. package/.output/server/chunks/build/useDaqOptimizations-BE_9Z2s_.mjs.map +1 -0
  328. package/.output/server/chunks/build/useDaqStream-B9ZBVQrI.mjs +395 -0
  329. package/.output/server/chunks/build/useDaqStream-B9ZBVQrI.mjs.map +1 -0
  330. package/.output/server/chunks/build/useDaqTemplates-CK37sMfi.mjs +189 -0
  331. package/.output/server/chunks/build/useDaqTemplates-CK37sMfi.mjs.map +1 -0
  332. package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs +356 -0
  333. package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs.map +1 -0
  334. package/.output/server/chunks/build/useDashboardData-Cw8lrPo5.mjs +155 -0
  335. package/.output/server/chunks/build/useDashboardData-Cw8lrPo5.mjs.map +1 -0
  336. package/.output/server/chunks/build/useDcwAddNode-KnocMk1m.mjs +221 -0
  337. package/.output/server/chunks/build/useDcwAddNode-KnocMk1m.mjs.map +1 -0
  338. package/.output/server/chunks/build/useDcwCards-C53IiOcg.mjs +69 -0
  339. package/.output/server/chunks/build/useDcwCards-C53IiOcg.mjs.map +1 -0
  340. package/.output/server/chunks/build/useDcwDetailScope-D6qXrfZu.mjs +186 -0
  341. package/.output/server/chunks/build/useDcwDetailScope-D6qXrfZu.mjs.map +1 -0
  342. package/.output/server/chunks/build/useDcwDetailTemplates-DPOXu1o_.mjs +150 -0
  343. package/.output/server/chunks/build/useDcwDetailTemplates-DPOXu1o_.mjs.map +1 -0
  344. package/.output/server/chunks/build/useDcwFilter-DNQ6Ivwd.mjs +73 -0
  345. package/.output/server/chunks/build/useDcwFilter-DNQ6Ivwd.mjs.map +1 -0
  346. package/.output/server/chunks/build/useDcwLedger-BhbUBCbi.mjs +81 -0
  347. package/.output/server/chunks/build/useDcwLedger-BhbUBCbi.mjs.map +1 -0
  348. package/.output/server/chunks/build/useDcwLineMutations-KA7VnggO.mjs +139 -0
  349. package/.output/server/chunks/build/useDcwLineMutations-KA7VnggO.mjs.map +1 -0
  350. package/.output/server/chunks/build/useDcwLineRun-3zx_UCxi.mjs +106 -0
  351. package/.output/server/chunks/build/useDcwLineRun-3zx_UCxi.mjs.map +1 -0
  352. package/.output/server/chunks/build/useDcwParamApprovals-DzyY6Tmi.mjs +123 -0
  353. package/.output/server/chunks/build/useDcwParamApprovals-DzyY6Tmi.mjs.map +1 -0
  354. package/.output/server/chunks/build/useDcwProducts-B05ymt3k.mjs +95 -0
  355. package/.output/server/chunks/build/useDcwProducts-B05ymt3k.mjs.map +1 -0
  356. package/.output/server/chunks/build/useDcwQuery-vWpgpSmJ.mjs +100 -0
  357. package/.output/server/chunks/build/useDcwQuery-vWpgpSmJ.mjs.map +1 -0
  358. package/.output/server/chunks/build/useDcwQuickActions-DUkLy34S.mjs +90 -0
  359. package/.output/server/chunks/build/useDcwQuickActions-DUkLy34S.mjs.map +1 -0
  360. package/.output/server/chunks/build/useDcwRecipes-BAb4Yg3d.mjs +260 -0
  361. package/.output/server/chunks/build/useDcwRecipes-BAb4Yg3d.mjs.map +1 -0
  362. package/.output/server/chunks/build/useDcwStream-RN3U_Jsh.mjs +455 -0
  363. package/.output/server/chunks/build/useDcwStream-RN3U_Jsh.mjs.map +1 -0
  364. package/.output/server/chunks/build/useDcwTemplates-D2aoejps.mjs +93 -0
  365. package/.output/server/chunks/build/useDcwTemplates-D2aoejps.mjs.map +1 -0
  366. package/.output/server/chunks/build/useDcwWrites-7w8txksD.mjs +142 -0
  367. package/.output/server/chunks/build/useDcwWrites-7w8txksD.mjs.map +1 -0
  368. package/.output/server/chunks/build/useDeviceTwins-BqwVJaZg.mjs +128 -0
  369. package/.output/server/chunks/build/useDeviceTwins-BqwVJaZg.mjs.map +1 -0
  370. package/.output/server/chunks/build/useExpConfirmations-BM626N4p.mjs +109 -0
  371. package/.output/server/chunks/build/useExpConfirmations-BM626N4p.mjs.map +1 -0
  372. package/.output/server/chunks/build/useLocalTime-uVSM44Um.mjs +55 -0
  373. package/.output/server/chunks/build/useLocalTime-uVSM44Um.mjs.map +1 -0
  374. package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs +79 -0
  375. package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs.map +1 -0
  376. package/.output/server/chunks/build/useLogsManual-D0dvgCsP.mjs +91 -0
  377. package/.output/server/chunks/build/useLogsManual-D0dvgCsP.mjs.map +1 -0
  378. package/.output/server/chunks/build/useLogsQuery-D7hrJ3yn.mjs +152 -0
  379. package/.output/server/chunks/build/useLogsQuery-D7hrJ3yn.mjs.map +1 -0
  380. package/.output/server/chunks/build/useLogsScope-DEUyq-My.mjs +85 -0
  381. package/.output/server/chunks/build/useLogsScope-DEUyq-My.mjs.map +1 -0
  382. package/.output/server/chunks/build/useMonitorColumns-vVnt3r5Q.mjs +219 -0
  383. package/.output/server/chunks/build/useMonitorColumns-vVnt3r5Q.mjs.map +1 -0
  384. package/.output/server/chunks/build/useMonitorData-DIkiLr_h.mjs +137 -0
  385. package/.output/server/chunks/build/useMonitorData-DIkiLr_h.mjs.map +1 -0
  386. package/.output/server/chunks/build/useMonitorFormat-CyURtH8N.mjs +93 -0
  387. package/.output/server/chunks/build/useMonitorFormat-CyURtH8N.mjs.map +1 -0
  388. package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs +73 -0
  389. package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs.map +1 -0
  390. package/.output/server/chunks/build/useOperationsFeed-Ci4mZAn_.mjs +197 -0
  391. package/.output/server/chunks/build/useOperationsFeed-Ci4mZAn_.mjs.map +1 -0
  392. package/.output/server/chunks/build/useOpsLog-C-M6Eace.mjs +149 -0
  393. package/.output/server/chunks/build/useOpsLog-C-M6Eace.mjs.map +1 -0
  394. package/.output/server/chunks/build/useRecipeDispatchApprovals-BYtiqfeb.mjs +158 -0
  395. package/.output/server/chunks/build/useRecipeDispatchApprovals-BYtiqfeb.mjs.map +1 -0
  396. package/.output/server/chunks/build/useResponsive-BKDMGTHs.mjs.map +1 -0
  397. package/.output/server/chunks/build/useTeamActions-BDjU06LP.mjs +81 -0
  398. package/.output/server/chunks/build/useTeamActions-BDjU06LP.mjs.map +1 -0
  399. package/.output/server/chunks/build/useTeamAddMemberDialog-J3oFn3FI.mjs +86 -0
  400. package/.output/server/chunks/build/useTeamAddMemberDialog-J3oFn3FI.mjs.map +1 -0
  401. package/.output/server/chunks/build/useTeamCreateDialog-fbn4ixYu.mjs +99 -0
  402. package/.output/server/chunks/build/useTeamCreateDialog-fbn4ixYu.mjs.map +1 -0
  403. package/.output/server/chunks/build/useTeamDeployDialog-BNezMD2k.mjs +82 -0
  404. package/.output/server/chunks/build/useTeamDeployDialog-BNezMD2k.mjs.map +1 -0
  405. package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs +84 -0
  406. package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs.map +1 -0
  407. package/.output/server/chunks/build/useTeamPluginDialog-BZznrOVe.mjs +105 -0
  408. package/.output/server/chunks/build/useTeamPluginDialog-BZznrOVe.mjs.map +1 -0
  409. package/.output/server/chunks/build/useTeamsCatalog-DuZFP3oG.mjs +125 -0
  410. package/.output/server/chunks/build/useTeamsCatalog-DuZFP3oG.mjs.map +1 -0
  411. package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs +74 -0
  412. package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs.map +1 -0
  413. package/.output/server/chunks/build/useTokenCreate-Ctl0YGhL.mjs +117 -0
  414. package/.output/server/chunks/build/useTokenCreate-Ctl0YGhL.mjs.map +1 -0
  415. package/.output/server/chunks/build/useTokenRename-Cm3ypSfN.mjs +89 -0
  416. package/.output/server/chunks/build/useTokenRename-Cm3ypSfN.mjs.map +1 -0
  417. package/.output/server/chunks/build/useTokenReveal-CeoWL5Mt.mjs +120 -0
  418. package/.output/server/chunks/build/useTokenReveal-CeoWL5Mt.mjs.map +1 -0
  419. package/.output/server/chunks/build/useTokensList-CNIzON3u.mjs +94 -0
  420. package/.output/server/chunks/build/useTokensList-CNIzON3u.mjs.map +1 -0
  421. package/.output/server/chunks/build/useTownBus-D9SoIsAN.mjs.map +1 -0
  422. package/.output/server/chunks/build/useWorkbenchAuth-CY-bVFMu.mjs +143 -0
  423. package/.output/server/chunks/build/useWorkbenchAuth-CY-bVFMu.mjs.map +1 -0
  424. package/.output/server/chunks/build/useWorkbenchWorkspaces-DhZQFss9.mjs +140 -0
  425. package/.output/server/chunks/build/useWorkbenchWorkspaces-DhZQFss9.mjs.map +1 -0
  426. package/.output/server/chunks/build/useWorkshopApi-BxHn-4iR.mjs +127 -0
  427. package/.output/server/chunks/build/useWorkshopApi-BxHn-4iR.mjs.map +1 -0
  428. package/.output/server/chunks/build/useWorkshopWs-YQ5URrbt.mjs +1659 -0
  429. package/.output/server/chunks/build/useWorkshopWs-YQ5URrbt.mjs.map +1 -0
  430. package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs +62 -0
  431. package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs.map +1 -0
  432. package/.output/server/chunks/build/useWorkspaceChannels-CPFepxTN.mjs +94 -0
  433. package/.output/server/chunks/build/useWorkspaceChannels-CPFepxTN.mjs.map +1 -0
  434. package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs +80 -0
  435. package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs.map +1 -0
  436. package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs +170 -0
  437. package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs.map +1 -0
  438. package/.output/server/chunks/build/users-DjiVC_tS.mjs +571 -0
  439. package/.output/server/chunks/build/users-DjiVC_tS.mjs.map +1 -0
  440. package/.output/server/chunks/build/workshop-1gKeDASV.mjs +548 -0
  441. package/.output/server/chunks/build/workshop-1gKeDASV.mjs.map +1 -0
  442. package/.output/server/chunks/build/workspaces-CmW0cpOt.mjs.map +1 -0
  443. package/.output/server/chunks/routes/api/health.get.mjs +4 -2
  444. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  445. package/.output/server/chunks/routes/api/index.get.mjs +4 -2
  446. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  447. package/.output/server/chunks/routes/api/index.post.mjs +4 -2
  448. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  449. package/.output/server/chunks/routes/api/mcp/workshop.mjs +5 -3
  450. package/.output/server/chunks/routes/api/mcp/workshop.mjs.map +1 -1
  451. package/.output/server/chunks/routes/api/metrics.mjs +4 -2
  452. package/.output/server/chunks/routes/api/metrics.mjs.map +1 -1
  453. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +4 -2
  454. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
  455. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +4 -2
  456. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs.map +1 -1
  457. package/.output/server/chunks/routes/api/plugins/i18n.get.mjs +4 -2
  458. package/.output/server/chunks/routes/api/plugins/i18n.get.mjs.map +1 -1
  459. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +4 -2
  460. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs.map +1 -1
  461. package/.output/server/chunks/routes/api/system/backup/list.get.mjs +4 -2
  462. package/.output/server/chunks/routes/api/system/backup/list.get.mjs.map +1 -1
  463. package/.output/server/chunks/routes/api/system/backup/run.post.mjs +6 -4
  464. package/.output/server/chunks/routes/api/system/backup/run.post.mjs.map +1 -1
  465. package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +4 -2
  466. package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs.map +1 -1
  467. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs +4 -2
  468. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs.map +1 -1
  469. package/.output/server/chunks/routes/api/system/config.get.mjs +4 -2
  470. package/.output/server/chunks/routes/api/system/config.get.mjs.map +1 -1
  471. package/.output/server/chunks/routes/api/system/index.get.mjs +4 -2
  472. package/.output/server/chunks/routes/api/system/index.get.mjs.map +1 -1
  473. package/.output/server/chunks/routes/api/system/index.patch.mjs +4 -2
  474. package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
  475. package/.output/server/chunks/routes/api/system/index.post.mjs +4 -2
  476. package/.output/server/chunks/routes/api/system/index.post.mjs.map +1 -1
  477. package/.output/server/chunks/routes/api/system/index2.get.mjs +4 -2
  478. package/.output/server/chunks/routes/api/system/index2.get.mjs.map +1 -1
  479. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +4 -2
  480. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs.map +1 -1
  481. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +4 -2
  482. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs.map +1 -1
  483. package/.output/server/chunks/routes/api/system/monitor.get.mjs +4 -2
  484. package/.output/server/chunks/routes/api/system/monitor.get.mjs.map +1 -1
  485. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +4 -2
  486. package/.output/server/chunks/routes/api/system/settings/events.get.mjs.map +1 -1
  487. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +4 -2
  488. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs.map +1 -1
  489. package/.output/server/chunks/routes/api/system/timezone.get.mjs +4 -2
  490. package/.output/server/chunks/routes/api/system/timezone.get.mjs.map +1 -1
  491. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +4 -2
  492. package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
  493. package/.output/server/chunks/routes/api/users/_id_.get.mjs +4 -2
  494. package/.output/server/chunks/routes/api/users/_id_.get.mjs.map +1 -1
  495. package/.output/server/chunks/routes/api/users/_id_.put.mjs +4 -2
  496. package/.output/server/chunks/routes/api/users/_id_.put.mjs.map +1 -1
  497. package/.output/server/chunks/routes/api/users/change-password.post.mjs +4 -2
  498. package/.output/server/chunks/routes/api/users/change-password.post.mjs.map +1 -1
  499. package/.output/server/chunks/routes/api/users/index.get.mjs +4 -2
  500. package/.output/server/chunks/routes/api/users/index.get.mjs.map +1 -1
  501. package/.output/server/chunks/routes/api/users/index.post.mjs +4 -2
  502. package/.output/server/chunks/routes/api/users/index.post.mjs.map +1 -1
  503. package/.output/server/chunks/routes/api/users/login.post.mjs +6 -5
  504. package/.output/server/chunks/routes/api/users/login.post.mjs.map +1 -1
  505. package/.output/server/chunks/routes/api/users/logout.post.mjs +4 -2
  506. package/.output/server/chunks/routes/api/users/logout.post.mjs.map +1 -1
  507. package/.output/server/chunks/routes/api/users/me.get.mjs +4 -2
  508. package/.output/server/chunks/routes/api/users/me.get.mjs.map +1 -1
  509. package/.output/server/chunks/routes/api/users/register.post.mjs +4 -2
  510. package/.output/server/chunks/routes/api/users/register.post.mjs.map +1 -1
  511. package/.output/server/chunks/routes/api/users/setup-status.get.mjs +4 -2
  512. package/.output/server/chunks/routes/api/users/setup-status.get.mjs.map +1 -1
  513. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +4 -2
  514. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs.map +1 -1
  515. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +4 -2
  516. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs.map +1 -1
  517. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +4 -2
  518. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs.map +1 -1
  519. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +4 -2
  520. package/.output/server/chunks/routes/api/workshop/_...path_.mjs.map +1 -1
  521. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +13 -3
  522. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs.map +1 -1
  523. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +4 -2
  524. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs.map +1 -1
  525. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +4 -2
  526. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs.map +1 -1
  527. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +4 -2
  528. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs.map +1 -1
  529. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +4 -2
  530. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs.map +1 -1
  531. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +4 -2
  532. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs.map +1 -1
  533. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs +4 -2
  534. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs.map +1 -1
  535. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs +4 -2
  536. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs.map +1 -1
  537. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +4 -2
  538. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs.map +1 -1
  539. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +5 -3
  540. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
  541. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +4 -2
  542. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs.map +1 -1
  543. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +4 -2
  544. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs.map +1 -1
  545. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +4 -2
  546. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs.map +1 -1
  547. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +4 -2
  548. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs.map +1 -1
  549. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +4 -2
  550. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs.map +1 -1
  551. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +4 -2
  552. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs.map +1 -1
  553. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +4 -2
  554. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs.map +1 -1
  555. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +4 -2
  556. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs.map +1 -1
  557. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +4 -2
  558. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs.map +1 -1
  559. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +4 -2
  560. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs.map +1 -1
  561. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +4 -2
  562. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs.map +1 -1
  563. package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +4 -2
  564. package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs.map +1 -1
  565. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +4 -2
  566. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs.map +1 -1
  567. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +4 -2
  568. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs.map +1 -1
  569. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +4 -2
  570. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs.map +1 -1
  571. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +4 -2
  572. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs.map +1 -1
  573. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +4 -2
  574. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs.map +1 -1
  575. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +4 -2
  576. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs.map +1 -1
  577. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +4 -2
  578. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs.map +1 -1
  579. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +4 -2
  580. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs.map +1 -1
  581. package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs +4 -2
  582. package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs.map +1 -1
  583. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +4 -2
  584. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs.map +1 -1
  585. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +4 -2
  586. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs.map +1 -1
  587. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +4 -2
  588. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs.map +1 -1
  589. package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs +4 -2
  590. package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs.map +1 -1
  591. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +4 -2
  592. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs.map +1 -1
  593. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +4 -2
  594. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs.map +1 -1
  595. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +4 -2
  596. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs.map +1 -1
  597. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +4 -2
  598. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs.map +1 -1
  599. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +4 -2
  600. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs.map +1 -1
  601. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +4 -2
  602. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs.map +1 -1
  603. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +4 -2
  604. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs.map +1 -1
  605. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +4 -2
  606. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs.map +1 -1
  607. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +4 -2
  608. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs.map +1 -1
  609. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs +4 -2
  610. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs.map +1 -1
  611. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs +4 -2
  612. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs.map +1 -1
  613. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs +4 -2
  614. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs.map +1 -1
  615. package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs +4 -2
  616. package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs.map +1 -1
  617. package/.output/server/chunks/routes/api/workshop/analysis/_id_.delete.mjs +4 -2
  618. package/.output/server/chunks/routes/api/workshop/analysis/_id_.delete.mjs.map +1 -1
  619. package/.output/server/chunks/routes/api/workshop/analysis/_id_.get.mjs +4 -2
  620. package/.output/server/chunks/routes/api/workshop/analysis/_id_.get.mjs.map +1 -1
  621. package/.output/server/chunks/routes/api/workshop/analysis/_id_.patch.mjs +4 -2
  622. package/.output/server/chunks/routes/api/workshop/analysis/_id_.patch.mjs.map +1 -1
  623. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +4 -2
  624. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs.map +1 -1
  625. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +4 -2
  626. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs.map +1 -1
  627. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +4 -2
  628. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs.map +1 -1
  629. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +4 -2
  630. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs.map +1 -1
  631. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +5 -3
  632. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs.map +1 -1
  633. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +4 -2
  634. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs.map +1 -1
  635. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +7 -4
  636. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs.map +1 -1
  637. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +4 -2
  638. package/.output/server/chunks/routes/api/workshop/audit.get.mjs.map +1 -1
  639. package/.output/server/chunks/routes/api/workshop/caller.mjs +4 -2
  640. package/.output/server/chunks/routes/api/workshop/caller.mjs.map +1 -1
  641. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +6 -4
  642. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs.map +1 -1
  643. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +4 -2
  644. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs.map +1 -1
  645. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +4 -2
  646. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs.map +1 -1
  647. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +4 -2
  648. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs.map +1 -1
  649. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +4 -2
  650. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs.map +1 -1
  651. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +5 -3
  652. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs.map +1 -1
  653. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +4 -2
  654. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs.map +1 -1
  655. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +4 -2
  656. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs.map +1 -1
  657. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +4 -2
  658. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs.map +1 -1
  659. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +4 -2
  660. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs.map +1 -1
  661. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +4 -2
  662. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs.map +1 -1
  663. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +4 -2
  664. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs.map +1 -1
  665. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +4 -2
  666. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs.map +1 -1
  667. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/rotate-token.post.mjs +4 -2
  668. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/rotate-token.post.mjs.map +1 -1
  669. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +4 -2
  670. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs.map +1 -1
  671. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +4 -2
  672. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs.map +1 -1
  673. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +4 -2
  674. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs.map +1 -1
  675. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs +4 -2
  676. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs.map +1 -1
  677. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs +5 -3
  678. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs.map +1 -1
  679. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs +4 -2
  680. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs.map +1 -1
  681. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs +4 -2
  682. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs.map +1 -1
  683. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +4 -2
  684. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs.map +1 -1
  685. package/.output/server/chunks/routes/api/workshop/channels/_id/execution-mode.patch.mjs +5 -3
  686. package/.output/server/chunks/routes/api/workshop/channels/_id/execution-mode.patch.mjs.map +1 -1
  687. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +4 -2
  688. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs.map +1 -1
  689. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +5 -3
  690. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs.map +1 -1
  691. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +5 -3
  692. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs.map +1 -1
  693. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +4 -2
  694. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs.map +1 -1
  695. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +4 -2
  696. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs.map +1 -1
  697. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.put.mjs +5 -3
  698. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.put.mjs.map +1 -1
  699. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +4 -2
  700. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs.map +1 -1
  701. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +5 -3
  702. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs.map +1 -1
  703. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +4 -2
  704. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs.map +1 -1
  705. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +7 -3
  706. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs.map +1 -1
  707. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +5 -3
  708. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs.map +1 -1
  709. package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs +4 -2
  710. package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs.map +1 -1
  711. package/.output/server/chunks/routes/api/workshop/channels/_id/index7.get.mjs +4 -2
  712. package/.output/server/chunks/routes/api/workshop/channels/_id/index7.get.mjs.map +1 -1
  713. package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs +4 -2
  714. package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs.map +1 -1
  715. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs +4 -2
  716. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs.map +1 -1
  717. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs +4 -2
  718. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs.map +1 -1
  719. package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs +4 -2
  720. package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs.map +1 -1
  721. package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs +4 -2
  722. package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs.map +1 -1
  723. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +4 -2
  724. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs.map +1 -1
  725. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +4 -2
  726. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs.map +1 -1
  727. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +5 -3
  728. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs.map +1 -1
  729. package/.output/server/chunks/routes/api/workshop/channels/_id/tools/reset.post.mjs +5 -3
  730. package/.output/server/chunks/routes/api/workshop/channels/_id/tools/reset.post.mjs.map +1 -1
  731. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs +5 -3
  732. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs.map +1 -1
  733. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs +22 -5
  734. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs.map +1 -1
  735. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +4 -2
  736. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs.map +1 -1
  737. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +5 -3
  738. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs.map +1 -1
  739. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +4 -2
  740. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs.map +1 -1
  741. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +4 -2
  742. package/.output/server/chunks/routes/api/workshop/channels.get.mjs.map +1 -1
  743. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +11 -9
  744. package/.output/server/chunks/routes/api/workshop/channels.post.mjs.map +1 -1
  745. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +4 -2
  746. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
  747. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +4 -2
  748. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs.map +1 -1
  749. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +4 -2
  750. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -1
  751. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +4 -2
  752. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -1
  753. package/.output/server/chunks/routes/api/workshop/daq/_id/ingest.post.mjs +16 -4
  754. package/.output/server/chunks/routes/api/workshop/daq/_id/ingest.post.mjs.map +1 -1
  755. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +5 -3
  756. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
  757. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +4 -2
  758. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs.map +1 -1
  759. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +4 -2
  760. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs.map +1 -1
  761. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +4 -2
  762. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
  763. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +4 -2
  764. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
  765. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +4 -2
  766. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs.map +1 -1
  767. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +4 -2
  768. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
  769. package/.output/server/chunks/routes/api/workshop/daq/export/_id_.get.mjs +4 -2
  770. package/.output/server/chunks/routes/api/workshop/daq/export/_id_.get.mjs.map +1 -1
  771. package/.output/server/chunks/routes/api/workshop/daq/export-file.get.mjs +4 -2
  772. package/.output/server/chunks/routes/api/workshop/daq/export-file.get.mjs.map +1 -1
  773. package/.output/server/chunks/routes/api/workshop/daq/index.get.mjs +4 -2
  774. package/.output/server/chunks/routes/api/workshop/daq/index.get.mjs.map +1 -1
  775. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +4 -2
  776. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -1
  777. package/.output/server/chunks/routes/api/workshop/daq/index2.post.mjs +7 -5
  778. package/.output/server/chunks/routes/api/workshop/daq/index2.post.mjs.map +1 -1
  779. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +5 -3
  780. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs.map +1 -1
  781. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +5 -3
  782. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs.map +1 -1
  783. package/.output/server/chunks/routes/api/workshop/daq/query.get.mjs +4 -2
  784. package/.output/server/chunks/routes/api/workshop/daq/query.get.mjs.map +1 -1
  785. package/.output/server/chunks/routes/api/workshop/daq/storage/retention.put.mjs +68 -0
  786. package/.output/server/chunks/routes/api/workshop/daq/storage/retention.put.mjs.map +1 -0
  787. package/.output/server/chunks/routes/api/workshop/daq/storage/rollup.post.mjs +45 -0
  788. package/.output/server/chunks/routes/api/workshop/daq/storage/rollup.post.mjs.map +1 -0
  789. package/.output/server/chunks/routes/api/workshop/daq/storage.get.mjs +36 -0
  790. package/.output/server/chunks/routes/api/workshop/daq/storage.get.mjs.map +1 -0
  791. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +7 -5
  792. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs.map +1 -1
  793. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +7 -5
  794. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs.map +1 -1
  795. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +5 -3
  796. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs.map +1 -1
  797. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +5 -3
  798. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
  799. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +5 -3
  800. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs.map +1 -1
  801. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +5 -3
  802. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs.map +1 -1
  803. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +5 -3
  804. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs.map +1 -1
  805. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +5 -3
  806. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
  807. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +6 -4
  808. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
  809. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +5 -3
  810. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs.map +1 -1
  811. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +5 -3
  812. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs.map +1 -1
  813. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +5 -3
  814. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs.map +1 -1
  815. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +5 -3
  816. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs.map +1 -1
  817. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +5 -3
  818. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
  819. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +5 -3
  820. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
  821. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +5 -3
  822. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
  823. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +5 -3
  824. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs.map +1 -1
  825. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +5 -3
  826. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs.map +1 -1
  827. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +5 -3
  828. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs.map +1 -1
  829. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +5 -3
  830. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs.map +1 -1
  831. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +5 -3
  832. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
  833. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +5 -3
  834. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs.map +1 -1
  835. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +4 -2
  836. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs.map +1 -1
  837. package/.output/server/chunks/routes/api/workshop/dcw/index7.get.mjs +4 -2
  838. package/.output/server/chunks/routes/api/workshop/dcw/index7.get.mjs.map +1 -1
  839. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +5 -3
  840. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs.map +1 -1
  841. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +5 -3
  842. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
  843. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +5 -3
  844. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
  845. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +5 -3
  846. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
  847. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +5 -3
  848. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs.map +1 -1
  849. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +4 -2
  850. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
  851. package/.output/server/chunks/routes/api/workshop/dcw/mes-artifacts/file.get.mjs +5 -3
  852. package/.output/server/chunks/routes/api/workshop/dcw/mes-artifacts/file.get.mjs.map +1 -1
  853. package/.output/server/chunks/routes/api/workshop/dcw/mes-hook-test.post.mjs +5 -3
  854. package/.output/server/chunks/routes/api/workshop/dcw/mes-hook-test.post.mjs.map +1 -1
  855. package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs +5 -3
  856. package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs.map +1 -1
  857. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +5 -3
  858. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs.map +1 -1
  859. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +5 -3
  860. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs.map +1 -1
  861. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +5 -3
  862. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs.map +1 -1
  863. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +5 -3
  864. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs.map +1 -1
  865. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +5 -3
  866. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs.map +1 -1
  867. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +5 -3
  868. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs.map +1 -1
  869. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +5 -3
  870. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs.map +1 -1
  871. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +5 -3
  872. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs.map +1 -1
  873. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +5 -3
  874. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs.map +1 -1
  875. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +5 -3
  876. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs.map +1 -1
  877. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +5 -3
  878. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs.map +1 -1
  879. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +4 -2
  880. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs.map +1 -1
  881. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +4 -2
  882. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs.map +1 -1
  883. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +5 -3
  884. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs.map +1 -1
  885. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +4 -2
  886. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs.map +1 -1
  887. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +18 -4
  888. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs.map +1 -1
  889. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +4 -2
  890. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs.map +1 -1
  891. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +5 -3
  892. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs.map +1 -1
  893. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +5 -3
  894. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
  895. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +5 -3
  896. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs.map +1 -1
  897. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +5 -3
  898. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs.map +1 -1
  899. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +5 -3
  900. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs.map +1 -1
  901. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +5 -3
  902. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs.map +1 -1
  903. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +7 -4
  904. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs.map +1 -1
  905. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +5 -3
  906. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs.map +1 -1
  907. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +7 -4
  908. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs.map +1 -1
  909. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +7 -4
  910. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs.map +1 -1
  911. package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.delete.mjs +4 -2
  912. package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.delete.mjs.map +1 -1
  913. package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.get.mjs +4 -2
  914. package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.get.mjs.map +1 -1
  915. package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.patch.mjs +4 -2
  916. package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.patch.mjs.map +1 -1
  917. package/.output/server/chunks/routes/api/workshop/eda/commonality.get.mjs +5 -3
  918. package/.output/server/chunks/routes/api/workshop/eda/commonality.get.mjs.map +1 -1
  919. package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.delete.mjs +4 -2
  920. package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.delete.mjs.map +1 -1
  921. package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.get.mjs +4 -2
  922. package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.get.mjs.map +1 -1
  923. package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.patch.mjs +4 -2
  924. package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.patch.mjs.map +1 -1
  925. package/.output/server/chunks/routes/api/workshop/eda/features/jobs.get.mjs +4 -2
  926. package/.output/server/chunks/routes/api/workshop/eda/features/jobs.get.mjs.map +1 -1
  927. package/.output/server/chunks/routes/api/workshop/eda/features/run.post.mjs +4 -2
  928. package/.output/server/chunks/routes/api/workshop/eda/features/run.post.mjs.map +1 -1
  929. package/.output/server/chunks/routes/api/workshop/eda/golden/_id_.delete.mjs +4 -2
  930. package/.output/server/chunks/routes/api/workshop/eda/golden/_id_.delete.mjs.map +1 -1
  931. package/.output/server/chunks/routes/api/workshop/eda/golden/deviation.get.mjs +4 -2
  932. package/.output/server/chunks/routes/api/workshop/eda/golden/deviation.get.mjs.map +1 -1
  933. package/.output/server/chunks/routes/api/workshop/eda/golden/single.get.mjs +4 -2
  934. package/.output/server/chunks/routes/api/workshop/eda/golden/single.get.mjs.map +1 -1
  935. package/.output/server/chunks/routes/api/workshop/eda/index.get.mjs +4 -2
  936. package/.output/server/chunks/routes/api/workshop/eda/index.get.mjs.map +1 -1
  937. package/.output/server/chunks/routes/api/workshop/eda/index.post.mjs +4 -2
  938. package/.output/server/chunks/routes/api/workshop/eda/index.post.mjs.map +1 -1
  939. package/.output/server/chunks/routes/api/workshop/eda/index2.get.mjs +4 -2
  940. package/.output/server/chunks/routes/api/workshop/eda/index2.get.mjs.map +1 -1
  941. package/.output/server/chunks/routes/api/workshop/eda/index2.post.mjs +4 -2
  942. package/.output/server/chunks/routes/api/workshop/eda/index2.post.mjs.map +1 -1
  943. package/.output/server/chunks/routes/api/workshop/eda/index3.get.mjs +4 -2
  944. package/.output/server/chunks/routes/api/workshop/eda/index3.get.mjs.map +1 -1
  945. package/.output/server/chunks/routes/api/workshop/eda/index3.post.mjs +4 -2
  946. package/.output/server/chunks/routes/api/workshop/eda/index3.post.mjs.map +1 -1
  947. package/.output/server/chunks/routes/api/workshop/eda/index4.get.mjs +4 -2
  948. package/.output/server/chunks/routes/api/workshop/eda/index4.get.mjs.map +1 -1
  949. package/.output/server/chunks/routes/api/workshop/eda/index4.post.mjs +4 -2
  950. package/.output/server/chunks/routes/api/workshop/eda/index4.post.mjs.map +1 -1
  951. package/.output/server/chunks/routes/api/workshop/eda/index5.get.mjs +4 -2
  952. package/.output/server/chunks/routes/api/workshop/eda/index5.get.mjs.map +1 -1
  953. package/.output/server/chunks/routes/api/workshop/eda/index5.post.mjs +4 -2
  954. package/.output/server/chunks/routes/api/workshop/eda/index5.post.mjs.map +1 -1
  955. package/.output/server/chunks/routes/api/workshop/eda/index6.get.mjs +4 -2
  956. package/.output/server/chunks/routes/api/workshop/eda/index6.get.mjs.map +1 -1
  957. package/.output/server/chunks/routes/api/workshop/eda/index6.post.mjs +4 -2
  958. package/.output/server/chunks/routes/api/workshop/eda/index6.post.mjs.map +1 -1
  959. package/.output/server/chunks/routes/api/workshop/eda/index7.get.mjs +4 -2
  960. package/.output/server/chunks/routes/api/workshop/eda/index7.get.mjs.map +1 -1
  961. package/.output/server/chunks/routes/api/workshop/eda/index7.post.mjs +4 -2
  962. package/.output/server/chunks/routes/api/workshop/eda/index7.post.mjs.map +1 -1
  963. package/.output/server/chunks/routes/api/workshop/eda/index8.get.mjs +4 -2
  964. package/.output/server/chunks/routes/api/workshop/eda/index8.get.mjs.map +1 -1
  965. package/.output/server/chunks/routes/api/workshop/eda/index8.post.mjs +4 -2
  966. package/.output/server/chunks/routes/api/workshop/eda/index8.post.mjs.map +1 -1
  967. package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.get.mjs +4 -2
  968. package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.get.mjs.map +1 -1
  969. package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.patch.mjs +4 -2
  970. package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.patch.mjs.map +1 -1
  971. package/.output/server/chunks/routes/api/workshop/eda/runs/_id/labels.patch.mjs +4 -2
  972. package/.output/server/chunks/routes/api/workshop/eda/runs/_id/labels.patch.mjs.map +1 -1
  973. package/.output/server/chunks/routes/api/workshop/eda/runs.get.mjs +4 -2
  974. package/.output/server/chunks/routes/api/workshop/eda/runs.get.mjs.map +1 -1
  975. package/.output/server/chunks/routes/api/workshop/eda/spc/_id/recompute.post.mjs +4 -2
  976. package/.output/server/chunks/routes/api/workshop/eda/spc/_id/recompute.post.mjs.map +1 -1
  977. package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.delete.mjs +4 -2
  978. package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.delete.mjs.map +1 -1
  979. package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.get.mjs +4 -2
  980. package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.get.mjs.map +1 -1
  981. package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.delete.mjs +4 -2
  982. package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.delete.mjs.map +1 -1
  983. package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.get.mjs +4 -2
  984. package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.get.mjs.map +1 -1
  985. package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.patch.mjs +4 -2
  986. package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.patch.mjs.map +1 -1
  987. package/.output/server/chunks/routes/api/workshop/eda/vm/predict.post.mjs +5 -3
  988. package/.output/server/chunks/routes/api/workshop/eda/vm/predict.post.mjs.map +1 -1
  989. package/.output/server/chunks/routes/api/workshop/exp/confirmations/_id/decide.post.mjs +5 -3
  990. package/.output/server/chunks/routes/api/workshop/exp/confirmations/_id/decide.post.mjs.map +1 -1
  991. package/.output/server/chunks/routes/api/workshop/exp/index.get.mjs +5 -3
  992. package/.output/server/chunks/routes/api/workshop/exp/index.get.mjs.map +1 -1
  993. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +5 -3
  994. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs.map +1 -1
  995. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +5 -3
  996. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs.map +1 -1
  997. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +5 -3
  998. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs.map +1 -1
  999. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +5 -3
  1000. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs.map +1 -1
  1001. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +5 -3
  1002. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs.map +1 -1
  1003. package/.output/server/chunks/routes/api/workshop/index.get.mjs +4 -2
  1004. package/.output/server/chunks/routes/api/workshop/index.get.mjs.map +1 -1
  1005. package/.output/server/chunks/routes/api/workshop/index.mjs +5 -3
  1006. package/.output/server/chunks/routes/api/workshop/index.mjs.map +1 -1
  1007. package/.output/server/chunks/routes/api/workshop/index.post.mjs +4 -2
  1008. package/.output/server/chunks/routes/api/workshop/index.post.mjs.map +1 -1
  1009. package/.output/server/chunks/routes/api/workshop/index.put.mjs +5 -3
  1010. package/.output/server/chunks/routes/api/workshop/index.put.mjs.map +1 -1
  1011. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +4 -2
  1012. package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
  1013. package/.output/server/chunks/routes/api/workshop/index10.post.mjs +4 -2
  1014. package/.output/server/chunks/routes/api/workshop/index10.post.mjs.map +1 -1
  1015. package/.output/server/chunks/routes/api/workshop/index11.get.mjs +4 -2
  1016. package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -1
  1017. package/.output/server/chunks/routes/api/workshop/index12.get.mjs +5 -3
  1018. package/.output/server/chunks/routes/api/workshop/index12.get.mjs.map +1 -1
  1019. package/.output/server/chunks/routes/api/workshop/index13.get.mjs +4 -2
  1020. package/.output/server/chunks/routes/api/workshop/index13.get.mjs.map +1 -1
  1021. package/.output/server/chunks/routes/api/workshop/index14.get.mjs +4 -2
  1022. package/.output/server/chunks/routes/api/workshop/index14.get.mjs.map +1 -1
  1023. package/.output/server/chunks/routes/api/workshop/index15.get.mjs +4 -2
  1024. package/.output/server/chunks/routes/api/workshop/index15.get.mjs.map +1 -1
  1025. package/.output/server/chunks/routes/api/workshop/index16.get.mjs +4 -2
  1026. package/.output/server/chunks/routes/api/workshop/index16.get.mjs.map +1 -1
  1027. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +4 -2
  1028. package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
  1029. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +25 -10
  1030. package/.output/server/chunks/routes/api/workshop/index2.post.mjs.map +1 -1
  1031. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +4 -2
  1032. package/.output/server/chunks/routes/api/workshop/index3.get.mjs.map +1 -1
  1033. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +4 -2
  1034. package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
  1035. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +4 -2
  1036. package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
  1037. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +232 -6
  1038. package/.output/server/chunks/routes/api/workshop/index4.post.mjs.map +1 -1
  1039. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +4 -2
  1040. package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
  1041. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +5 -3
  1042. package/.output/server/chunks/routes/api/workshop/index5.post.mjs.map +1 -1
  1043. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +5 -3
  1044. package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
  1045. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +5 -3
  1046. package/.output/server/chunks/routes/api/workshop/index6.post.mjs.map +1 -1
  1047. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +5 -3
  1048. package/.output/server/chunks/routes/api/workshop/index7.get.mjs.map +1 -1
  1049. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +7 -3
  1050. package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
  1051. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +5 -3
  1052. package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
  1053. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +4 -2
  1054. package/.output/server/chunks/routes/api/workshop/index8.post.mjs.map +1 -1
  1055. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +4 -2
  1056. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  1057. package/.output/server/chunks/routes/api/workshop/index9.post.mjs +4 -2
  1058. package/.output/server/chunks/routes/api/workshop/index9.post.mjs.map +1 -1
  1059. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +4 -2
  1060. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs.map +1 -1
  1061. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +4 -2
  1062. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs.map +1 -1
  1063. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +4 -2
  1064. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs.map +1 -1
  1065. package/.output/server/chunks/routes/api/workshop/mes/datasets.get.mjs +5 -3
  1066. package/.output/server/chunks/routes/api/workshop/mes/datasets.get.mjs.map +1 -1
  1067. package/.output/server/chunks/routes/api/workshop/mes/index.get.mjs +4 -2
  1068. package/.output/server/chunks/routes/api/workshop/mes/index.get.mjs.map +1 -1
  1069. package/.output/server/chunks/routes/api/workshop/mes/index.put.mjs +4 -2
  1070. package/.output/server/chunks/routes/api/workshop/mes/index.put.mjs.map +1 -1
  1071. package/.output/server/chunks/routes/api/workshop/mes/points.get.mjs +4 -2
  1072. package/.output/server/chunks/routes/api/workshop/mes/points.get.mjs.map +1 -1
  1073. package/.output/server/chunks/routes/api/workshop/mes/preview.post.mjs +4 -2
  1074. package/.output/server/chunks/routes/api/workshop/mes/preview.post.mjs.map +1 -1
  1075. package/.output/server/chunks/routes/api/workshop/mes/secrets/_ref_.delete.mjs +4 -2
  1076. package/.output/server/chunks/routes/api/workshop/mes/secrets/_ref_.delete.mjs.map +1 -1
  1077. package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs +4 -2
  1078. package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs.map +1 -1
  1079. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/autofix.mjs +5 -3
  1080. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/autofix.mjs.map +1 -1
  1081. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/compile.mjs +5 -3
  1082. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/compile.mjs.map +1 -1
  1083. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/evidence.mjs +5 -3
  1084. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/evidence.mjs.map +1 -1
  1085. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/publish.mjs +5 -3
  1086. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/publish.mjs.map +1 -1
  1087. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval-decision.mjs +5 -3
  1088. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval-decision.mjs.map +1 -1
  1089. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval.mjs +5 -3
  1090. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval.mjs.map +1 -1
  1091. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/transition.mjs +5 -3
  1092. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/transition.mjs.map +1 -1
  1093. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/subgraph.mjs +5 -3
  1094. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/subgraph.mjs.map +1 -1
  1095. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/validate.mjs +5 -3
  1096. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/validate.mjs.map +1 -1
  1097. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId_.mjs +5 -3
  1098. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId_.mjs.map +1 -1
  1099. package/.output/server/chunks/routes/api/workshop/ontology/export/_ontologyId_.mjs +5 -3
  1100. package/.output/server/chunks/routes/api/workshop/ontology/export/_ontologyId_.mjs.map +1 -1
  1101. package/.output/server/chunks/routes/api/workshop/ontology/index.mjs +5 -3
  1102. package/.output/server/chunks/routes/api/workshop/ontology/index.mjs.map +1 -1
  1103. package/.output/server/chunks/routes/api/workshop/ontology/scene.mjs +5 -3
  1104. package/.output/server/chunks/routes/api/workshop/ontology/scene.mjs.map +1 -1
  1105. package/.output/server/chunks/routes/api/workshop/ontology/traces/_ontologyId_.mjs +5 -3
  1106. package/.output/server/chunks/routes/api/workshop/ontology/traces/_ontologyId_.mjs.map +1 -1
  1107. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId/compare.mjs +5 -3
  1108. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId/compare.mjs.map +1 -1
  1109. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId_.mjs +5 -3
  1110. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId_.mjs.map +1 -1
  1111. package/.output/server/chunks/routes/api/workshop/optimization/bindings/_id_.delete.mjs +4 -2
  1112. package/.output/server/chunks/routes/api/workshop/optimization/bindings/_id_.delete.mjs.map +1 -1
  1113. package/.output/server/chunks/routes/api/workshop/optimization/capabilities.get.mjs +5 -3
  1114. package/.output/server/chunks/routes/api/workshop/optimization/capabilities.get.mjs.map +1 -1
  1115. package/.output/server/chunks/routes/api/workshop/optimization/index.get.mjs +5 -3
  1116. package/.output/server/chunks/routes/api/workshop/optimization/index.get.mjs.map +1 -1
  1117. package/.output/server/chunks/routes/api/workshop/optimization/index.mjs +5 -3
  1118. package/.output/server/chunks/routes/api/workshop/optimization/index.mjs.map +1 -1
  1119. package/.output/server/chunks/routes/api/workshop/optimization/index2.mjs +5 -3
  1120. package/.output/server/chunks/routes/api/workshop/optimization/index2.mjs.map +1 -1
  1121. package/.output/server/chunks/routes/api/workshop/optimization/profiles/_id/publish.post.mjs +5 -3
  1122. package/.output/server/chunks/routes/api/workshop/optimization/profiles/_id/publish.post.mjs.map +1 -1
  1123. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/crosscheck.post.mjs +5 -3
  1124. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/crosscheck.post.mjs.map +1 -1
  1125. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/dispatch.post.mjs +5 -3
  1126. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/dispatch.post.mjs.map +1 -1
  1127. package/.output/server/chunks/routes/api/workshop/optimization/solve.post.mjs +5 -3
  1128. package/.output/server/chunks/routes/api/workshop/optimization/solve.post.mjs.map +1 -1
  1129. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +5 -3
  1130. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs.map +1 -1
  1131. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +5 -3
  1132. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs.map +1 -1
  1133. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +4 -2
  1134. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs.map +1 -1
  1135. package/.output/server/chunks/routes/api/workshop/process-model/datasets.post.mjs +5 -3
  1136. package/.output/server/chunks/routes/api/workshop/process-model/datasets.post.mjs.map +1 -1
  1137. package/.output/server/chunks/routes/api/workshop/process-model/eligibility.mjs +5 -3
  1138. package/.output/server/chunks/routes/api/workshop/process-model/eligibility.mjs.map +1 -1
  1139. package/.output/server/chunks/routes/api/workshop/process-model/experiments.mjs +308 -21
  1140. package/.output/server/chunks/routes/api/workshop/process-model/experiments.mjs.map +1 -1
  1141. package/.output/server/chunks/routes/api/workshop/process-model/index.mjs +5 -3
  1142. package/.output/server/chunks/routes/api/workshop/process-model/index.mjs.map +1 -1
  1143. package/.output/server/chunks/routes/api/workshop/process-model/specs/_id/publish.post.mjs +5 -3
  1144. package/.output/server/chunks/routes/api/workshop/process-model/specs/_id/publish.post.mjs.map +1 -1
  1145. package/.output/server/chunks/routes/api/workshop/process-model/train.post.mjs +5 -3
  1146. package/.output/server/chunks/routes/api/workshop/process-model/train.post.mjs.map +1 -1
  1147. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +4 -2
  1148. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs.map +1 -1
  1149. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +5 -3
  1150. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs.map +1 -1
  1151. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +5 -3
  1152. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs.map +1 -1
  1153. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +4 -2
  1154. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs.map +1 -1
  1155. package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs +4 -2
  1156. package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs.map +1 -1
  1157. package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs +4 -2
  1158. package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs.map +1 -1
  1159. package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs +4 -2
  1160. package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs.map +1 -1
  1161. package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs +4 -2
  1162. package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs.map +1 -1
  1163. package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs +4 -2
  1164. package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs.map +1 -1
  1165. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +4 -2
  1166. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs.map +1 -1
  1167. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +4 -2
  1168. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs.map +1 -1
  1169. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +4 -2
  1170. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs.map +1 -1
  1171. package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs +4 -2
  1172. package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs.map +1 -1
  1173. package/.output/server/chunks/routes/api/workshop/tasks/_id/reopen.post.mjs +4 -2
  1174. package/.output/server/chunks/routes/api/workshop/tasks/_id/reopen.post.mjs.map +1 -1
  1175. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +4 -2
  1176. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs.map +1 -1
  1177. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +4 -2
  1178. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs.map +1 -1
  1179. package/.output/server/chunks/routes/api/workshop/tasks/_id/supersede.post.mjs +43 -0
  1180. package/.output/server/chunks/routes/api/workshop/tasks/_id/supersede.post.mjs.map +1 -0
  1181. package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs +4 -2
  1182. package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs.map +1 -1
  1183. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +4 -2
  1184. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs.map +1 -1
  1185. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +4 -2
  1186. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs.map +1 -1
  1187. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +5 -3
  1188. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs.map +1 -1
  1189. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +4 -2
  1190. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs.map +1 -1
  1191. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +4 -2
  1192. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs.map +1 -1
  1193. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +5 -3
  1194. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs.map +1 -1
  1195. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +5 -3
  1196. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs.map +1 -1
  1197. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +4 -2
  1198. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs.map +1 -1
  1199. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +4 -2
  1200. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs.map +1 -1
  1201. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +4 -2
  1202. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs.map +1 -1
  1203. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +4 -2
  1204. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs.map +1 -1
  1205. package/.output/server/chunks/routes/api/workshop/tools/_name_.get.mjs +4 -2
  1206. package/.output/server/chunks/routes/api/workshop/tools/_name_.get.mjs.map +1 -1
  1207. package/.output/server/chunks/routes/api/workshop/tools/sync.post.mjs +5 -3
  1208. package/.output/server/chunks/routes/api/workshop/tools/sync.post.mjs.map +1 -1
  1209. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +4 -2
  1210. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs.map +1 -1
  1211. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +4 -2
  1212. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs.map +1 -1
  1213. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +6 -4
  1214. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs.map +1 -1
  1215. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +4 -2
  1216. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs.map +1 -1
  1217. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +4 -2
  1218. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs.map +1 -1
  1219. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +4 -2
  1220. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs.map +1 -1
  1221. package/.output/server/chunks/routes/renderer.mjs +2 -2
  1222. package/.output/server/chunks/routes/renderer.mjs.map +1 -1
  1223. package/.output/server/chunks/virtual/entry.mjs +381 -377
  1224. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  1225. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  1226. package/.output/server/chunks/virtual/precomputed.mjs.map +1 -1
  1227. package/.output/server/index.mjs +5 -3
  1228. package/.output/server/index.mjs.map +1 -1
  1229. package/.output/server/node_modules/pg/esm/index.mjs +20 -0
  1230. package/.output/server/node_modules/pg/lib/client.js +828 -0
  1231. package/.output/server/node_modules/pg/lib/connection-parameters.js +184 -0
  1232. package/.output/server/node_modules/pg/lib/connection.js +243 -0
  1233. package/.output/server/node_modules/pg/lib/crypto/cert-signatures.js +122 -0
  1234. package/.output/server/node_modules/pg/lib/crypto/sasl.js +262 -0
  1235. package/.output/server/node_modules/pg/lib/crypto/utils.js +89 -0
  1236. package/.output/server/node_modules/pg/lib/defaults.js +94 -0
  1237. package/.output/server/node_modules/pg/lib/index.js +73 -0
  1238. package/.output/server/node_modules/pg/lib/native/client.js +420 -0
  1239. package/.output/server/node_modules/pg/lib/native/index.js +2 -0
  1240. package/.output/server/node_modules/pg/lib/native/query.js +165 -0
  1241. package/.output/server/node_modules/pg/lib/query.js +259 -0
  1242. package/.output/server/node_modules/pg/lib/result.js +109 -0
  1243. package/.output/server/node_modules/pg/lib/stream.js +83 -0
  1244. package/.output/server/node_modules/pg/lib/type-overrides.js +35 -0
  1245. package/.output/server/node_modules/pg/lib/utils.js +207 -0
  1246. package/.output/server/node_modules/pg/package.json +76 -0
  1247. package/.output/server/node_modules/pg-cloudflare/dist/empty.js +6 -0
  1248. package/.output/server/node_modules/pg-cloudflare/package.json +39 -0
  1249. package/.output/server/node_modules/pg-connection-string/index.js +237 -0
  1250. package/.output/server/node_modules/pg-connection-string/package.json +52 -0
  1251. package/.output/server/node_modules/pg-int8/index.js +100 -0
  1252. package/.output/server/node_modules/pg-int8/package.json +24 -0
  1253. package/.output/server/node_modules/pg-pool/index.js +517 -0
  1254. package/.output/server/node_modules/pg-pool/package.json +51 -0
  1255. package/.output/server/node_modules/pg-protocol/dist/buffer-reader.js +55 -0
  1256. package/.output/server/node_modules/pg-protocol/dist/buffer-writer.js +104 -0
  1257. package/.output/server/node_modules/pg-protocol/dist/index.js +15 -0
  1258. package/.output/server/node_modules/pg-protocol/dist/messages.js +160 -0
  1259. package/.output/server/node_modules/pg-protocol/dist/parser.js +325 -0
  1260. package/.output/server/node_modules/pg-protocol/dist/serializer.js +196 -0
  1261. package/.output/server/node_modules/pg-protocol/package.json +44 -0
  1262. package/.output/server/node_modules/pg-types/index.js +47 -0
  1263. package/.output/server/node_modules/pg-types/lib/arrayParser.js +11 -0
  1264. package/.output/server/node_modules/pg-types/lib/binaryParsers.js +257 -0
  1265. package/.output/server/node_modules/pg-types/lib/builtins.js +73 -0
  1266. package/.output/server/node_modules/pg-types/lib/textParsers.js +215 -0
  1267. package/.output/server/node_modules/pg-types/package.json +42 -0
  1268. package/.output/server/node_modules/pgpass/lib/helper.js +233 -0
  1269. package/.output/server/node_modules/pgpass/lib/index.js +23 -0
  1270. package/.output/server/node_modules/pgpass/package.json +41 -0
  1271. package/.output/server/node_modules/postgres-array/index.js +97 -0
  1272. package/.output/server/node_modules/postgres-array/package.json +35 -0
  1273. package/.output/server/node_modules/postgres-bytea/index.js +33 -0
  1274. package/.output/server/node_modules/postgres-bytea/package.json +34 -0
  1275. package/.output/server/node_modules/postgres-date/index.js +116 -0
  1276. package/.output/server/node_modules/postgres-date/package.json +33 -0
  1277. package/.output/server/node_modules/postgres-interval/index.js +126 -0
  1278. package/.output/server/node_modules/postgres-interval/package.json +35 -0
  1279. package/.output/server/node_modules/split2/index.js +141 -0
  1280. package/.output/server/node_modules/split2/package.json +39 -0
  1281. package/.output/server/node_modules/xtend/mutable.js +17 -0
  1282. package/.output/server/node_modules/xtend/package.json +55 -0
  1283. package/.output/server/package.json +15 -1
  1284. package/README-zh.md +255 -993
  1285. package/README.md +254 -1028
  1286. package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.json +1 -0
  1287. package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.mtg0vz68-49792-75b0709555.baseline/1459e6269990a5d229b9228c8b2f62ffaa7d350068380ae8b875fee0db45cca6.source +180 -0
  1288. package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.mtg0vz68-49792-75b0709555.baseline/c2991e909c70c5c12b90a407c7adcf63384c51668a2b334e6e047fa675c268fe.source +305 -0
  1289. package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.mtg0vz68-49792-75b0709555.baseline/e09129039d1e27e3fac24becc9bdafd2d1a7c8049bff24173df007be865f0165.source +264 -0
  1290. package/app/.mimosa/hook-status/sess_05189059-e42d-4188-8911-4f7baabe009b-28ef7c75ea.json +14 -0
  1291. package/app/components/AwLogo.vue +75 -75
  1292. package/app/components/aml/AmlDatasetFormModal.vue +279 -279
  1293. package/app/components/aml/AmlDatasetTable.vue +319 -319
  1294. package/app/components/aml/AmlExperimentsTable.vue +142 -142
  1295. package/app/components/aml/AmlInfraBanner.vue +23 -23
  1296. package/app/components/aml/AmlJobsTable.vue +248 -248
  1297. package/app/components/aml/AmlOverviewBar.vue +62 -62
  1298. package/app/components/aml/AmlPageHeader.vue +47 -47
  1299. package/app/components/aml/AmlPredictConsole.vue +201 -201
  1300. package/app/components/app-header/HitlBell.vue +423 -423
  1301. package/app/components/daq/DaqAddNodeModal.vue +209 -209
  1302. package/app/components/daq/DaqAlarmBar.vue +46 -46
  1303. package/app/components/daq/DaqControlCard.vue +159 -159
  1304. package/app/components/daq/DaqInfraBanner.vue +31 -31
  1305. package/app/components/daq/DaqLineBanner.vue +47 -47
  1306. package/app/components/daq/DaqNodePanel.vue +396 -396
  1307. package/app/components/daq/DaqOptPanel.vue +197 -197
  1308. package/app/components/daq/DaqTemplateModal.vue +246 -246
  1309. package/app/components/dashboard/DashboardGaugeBand.vue +78 -78
  1310. package/app/components/dashboard/DashboardHero.vue +209 -209
  1311. package/app/components/dashboard/DashboardLineStatePanel.vue +78 -78
  1312. package/app/components/dashboard/DashboardNodeStatePanel.vue +46 -46
  1313. package/app/components/dashboard/DashboardPipelinePanel.vue +46 -46
  1314. package/app/components/dashboard/DashboardTrendPanel.vue +83 -83
  1315. package/app/components/dashboard/DashboardWritePanel.vue +52 -52
  1316. package/app/components/dcw/DcwCreateLineModal.vue +105 -105
  1317. package/app/components/dcw/DcwDeleteLineModal.vue +73 -73
  1318. package/app/components/dcw/DcwDetailTemplateModal.vue +238 -238
  1319. package/app/components/dcw/DcwLedgerCard.vue +160 -160
  1320. package/app/components/dcw/DcwMesArtifacts.vue +140 -140
  1321. package/app/components/dcw/DcwProductCreateModal.vue +113 -113
  1322. package/app/components/dcw/DcwRecipeDispatchHistoryModal.vue +244 -244
  1323. package/app/components/dcw/DcwRecipeEditModal.vue +399 -399
  1324. package/app/components/dcw/DcwRecipeHistoryModal.vue +165 -165
  1325. package/app/components/dcw/DcwRunDataModal.vue +191 -191
  1326. package/app/components/dcw/DcwTemplateModal.vue +227 -227
  1327. package/app/components/dcw/DcwWriteHistoryCard.vue +96 -96
  1328. package/app/components/dcw/ExpConfirmCard.vue +103 -103
  1329. package/app/components/dcw/RecipeDispatchApprovalCard.vue +330 -330
  1330. package/app/components/logs/LogsPageHead.vue +122 -122
  1331. package/app/components/monitor/MonitorAgentTable.vue +143 -143
  1332. package/app/components/monitor/MonitorChannelTable.vue +80 -80
  1333. package/app/components/monitor/MonitorLoginGate.vue +24 -24
  1334. package/app/components/monitor/MonitorPageHead.vue +92 -92
  1335. package/app/components/monitor/MonitorProcessTable.vue +159 -159
  1336. package/app/components/ontology/OntologyGraph.vue +356 -356
  1337. package/app/components/operations/OperationsFilterCard.vue +164 -164
  1338. package/app/components/operations/OperationsPageHead.vue +47 -47
  1339. package/app/components/tokens/TokenCreateModal.vue +42 -42
  1340. package/app/components/tokens/TokenOnceModal.vue +164 -164
  1341. package/app/components/tokens/TokenRenameModal.vue +40 -40
  1342. package/app/components/tokens/TokensPageHead.vue +76 -76
  1343. package/app/components/workshop/A2aRpcDebugger.vue +237 -237
  1344. package/app/components/workshop/AgentInspectorDrawer.vue +424 -424
  1345. package/app/components/workshop/AgentLanesView.vue +278 -278
  1346. package/app/components/workshop/ArtifactCard.vue +120 -120
  1347. package/app/components/workshop/AssetLibrary.vue +452 -452
  1348. package/app/components/workshop/ChatMemberPanel.vue +556 -556
  1349. package/app/components/workshop/CommandPalette.vue +270 -270
  1350. package/app/components/workshop/Composer.vue +540 -540
  1351. package/app/components/workshop/DaqTemplateIcon.vue +33 -33
  1352. package/app/components/workshop/DeviceTwinPanel.vue +167 -167
  1353. package/app/components/workshop/FileSelectorModal.vue +188 -188
  1354. package/app/components/workshop/InspectorPanel.vue +301 -301
  1355. package/app/components/workshop/PluginSlot.vue +120 -120
  1356. package/app/components/workshop/TranscriptTimeline.vue +223 -223
  1357. package/app/components/workshop/agents/AgentTemplateEditModal.vue +139 -139
  1358. package/app/components/workshop/blocks/ClusterArtifact.vue +61 -61
  1359. package/app/components/workshop/blocks/ClusterError.vue +85 -85
  1360. package/app/components/workshop/blocks/ClusterLife.vue +87 -87
  1361. package/app/components/workshop/blocks/ClusterMember.vue +95 -95
  1362. package/app/components/workshop/blocks/ClusterMemory.vue +84 -84
  1363. package/app/components/workshop/blocks/ClusterOther.vue +67 -67
  1364. package/app/components/workshop/blocks/ClusterStatus.vue +149 -149
  1365. package/app/components/workshop/blocks/ClusterTool.vue +176 -176
  1366. package/app/components/workshop/blocks/EventBlockAvatar.vue +114 -114
  1367. package/app/components/workshop/blocks/EventBlockHead.vue +232 -232
  1368. package/app/components/workshop/composer/ComposerToolbar.vue +278 -278
  1369. package/app/components/workshop/composer/MentionMenu.vue +135 -135
  1370. package/app/components/workshop/composer/ReplyChip.vue +65 -65
  1371. package/app/components/workshop/composer/StatusChip.vue +171 -171
  1372. package/app/components/workshop/console/Dock.vue +71 -71
  1373. package/app/components/workshop/console/LeftPane.vue +84 -84
  1374. package/app/components/workshop/device-twin/DeviceTwinCard.vue +265 -265
  1375. package/app/components/workshop/device-twin/DeviceTwinDcwSection.vue +203 -203
  1376. package/app/components/workshop/lanes/AddMemberModal.vue +270 -270
  1377. package/app/components/workshop/lanes/EditMemberModal.vue +106 -106
  1378. package/app/components/workshop/lanes/LanesToolbar.vue +97 -97
  1379. package/app/components/workshop/session-list/MountChannelModal.vue +124 -124
  1380. package/app/components/workshop/session-list/SaveTemplateModal.vue +93 -93
  1381. package/app/components/workshop/task-board/Card.vue +172 -172
  1382. package/app/components/workshop/task-board/Column.vue +151 -151
  1383. package/app/components/workshop/task-board/List.vue +157 -157
  1384. package/app/components/workshop/task-board/StatusMenu.vue +88 -88
  1385. package/app/components/workshop/teams/TeamAddMemberModal.vue +53 -53
  1386. package/app/components/workshop/teams/TeamCreateModal.vue +94 -94
  1387. package/app/components/workshop/teams/TeamDeployModal.vue +40 -40
  1388. package/app/components/workshop/teams/TeamPluginModal.vue +119 -119
  1389. package/app/components/workshop/terminal/OmpTerminalPanel.vue +270 -270
  1390. package/app/components/workshop/terminal/TerminalHitlCard.vue +170 -170
  1391. package/app/components/workshop/town/TownScene.ts +466 -466
  1392. package/app/components/workshop/town/TownView.vue +561 -561
  1393. package/app/components/workshop/town/components/AutoModeConfirmModal.vue +94 -94
  1394. package/app/components/workshop/town/components/TownAgentBindings.vue +417 -417
  1395. package/app/components/workshop/town/components/TownAgentInspector.vue +554 -554
  1396. package/app/components/workshop/town/components/TownAlarmList.vue +147 -147
  1397. package/app/components/workshop/town/components/TownBoundaryPanel.vue +350 -350
  1398. package/app/components/workshop/town/components/TownCalloutLayer.vue +147 -147
  1399. package/app/components/workshop/town/components/TownChannelDock.vue +116 -116
  1400. package/app/components/workshop/town/components/TownControlDock.vue +405 -405
  1401. package/app/components/workshop/town/components/TownDaqNodeInspector.vue +345 -345
  1402. package/app/components/workshop/town/components/TownDaqTree.vue +366 -366
  1403. package/app/components/workshop/town/components/TownDcwBindSection.vue +473 -473
  1404. package/app/components/workshop/town/components/TownDcwNodeInspector.vue +185 -185
  1405. package/app/components/workshop/town/components/TownDcwTree.vue +280 -280
  1406. package/app/components/workshop/town/components/TownDeviceBindings.vue +394 -394
  1407. package/app/components/workshop/town/components/TownDeviceTransform.vue +248 -248
  1408. package/app/components/workshop/town/components/TownEventList.vue +120 -120
  1409. package/app/components/workshop/town/components/TownHealthBody.vue +100 -100
  1410. package/app/components/workshop/town/components/TownKpiStrip.vue +207 -207
  1411. package/app/components/workshop/town/components/TownLeftRail.vue +308 -308
  1412. package/app/components/workshop/town/components/TownLoadingMask.vue +61 -61
  1413. package/app/components/workshop/town/components/TownNavMap.vue +154 -154
  1414. package/app/components/workshop/town/components/TownRightRail.vue +543 -543
  1415. package/app/components/workshop/town/components/TownStage.vue +281 -281
  1416. package/app/components/workshop/town/components/TownStageTop.vue +238 -238
  1417. package/app/components/workshop/town/components/TownStatusBar.vue +108 -108
  1418. package/app/components/workshop/town/components/TownTopNav.vue +367 -367
  1419. package/app/components/workshop/town/components/TownTrendDock.vue +178 -178
  1420. package/app/components/workshop/town/scene/town-scene-agents.ts +254 -254
  1421. package/app/components/workshop/town/scene/town-scene-behavior.ts +194 -194
  1422. package/app/components/workshop/town/scene/town-scene-bubbles.ts +96 -96
  1423. package/app/components/workshop/town/scene/town-scene-core.ts +158 -158
  1424. package/app/components/workshop/town/scene/town-scene-models.ts +109 -109
  1425. package/app/components/workshop/town/scene/town-scene-visuals.ts +279 -279
  1426. package/app/components/workshop/town/scene/town-scene3d-agents.ts +308 -308
  1427. package/app/components/workshop/town/scene/town-scene3d-blocks.ts +297 -297
  1428. package/app/components/workshop/town/scene/town-scene3d-bubbles.ts +281 -281
  1429. package/app/components/workshop/town/scene/town-scene3d-camera.ts +282 -282
  1430. package/app/components/workshop/town/scene/town-scene3d-devices.ts +433 -433
  1431. package/app/components/workshop/town/scene/town-scene3d-editing.ts +490 -490
  1432. package/app/components/workshop/town/scene/town-scene3d-events.ts +173 -173
  1433. package/app/components/workshop/town/scene/town-scene3d-factory.ts +412 -412
  1434. package/app/components/workshop/town/scene/town-scene3d-hud.ts +110 -110
  1435. package/app/components/workshop/town/scene/town-scene3d-lifecycle.ts +144 -144
  1436. package/app/components/workshop/town/scene/town-scene3d-links.ts +141 -141
  1437. package/app/components/workshop/town/scene/town-scene3d-loop.ts +286 -286
  1438. package/app/components/workshop/town/scene/town-scene3d-models.ts +154 -154
  1439. package/app/components/workshop/town/scene/town-scene3d-nodes.ts +562 -562
  1440. package/app/components/workshop/town/scene/town-scene3d-ranges.ts +273 -273
  1441. package/app/components/workshop/town/scene/town-scene3d-renderer.ts +320 -320
  1442. package/app/components/workshop/town/scene/town-scene3d-selection.ts +257 -257
  1443. package/app/components/workshop/town/scene/town-scene3d-types.ts +264 -264
  1444. package/app/components/workshop/transcript/TranscriptBlockList.vue +68 -68
  1445. package/app/components/workshop/transcript/TranscriptEarlierPager.vue +81 -81
  1446. package/app/components/workshop/transcript/TranscriptFilterBar.vue +126 -126
  1447. package/app/components/workshop/workbench/CreateWorkspaceModal.vue +36 -36
  1448. package/app/components/workshop/workbench/WorkspaceEmpty.vue +56 -56
  1449. package/app/composables/useResponsive.ts +88 -88
  1450. package/app/composables/workshop/device-twin-types.ts +29 -29
  1451. package/app/composables/workshop/event-blocks/attention.ts +58 -58
  1452. package/app/composables/workshop/event-blocks/classify.ts +44 -44
  1453. package/app/composables/workshop/event-blocks/clusterer.ts +231 -231
  1454. package/app/composables/workshop/event-blocks/fold-stream.ts +45 -45
  1455. package/app/composables/workshop/event-blocks/markdown.ts +81 -81
  1456. package/app/composables/workshop/event-blocks/mentions.ts +49 -49
  1457. package/app/composables/workshop/event-blocks/text-utils.ts +100 -100
  1458. package/app/composables/workshop/event-blocks/types.ts +40 -40
  1459. package/app/composables/workshop/town/town-relay-props.ts +231 -231
  1460. package/app/composables/workshop/town/town-view-types.ts +145 -145
  1461. package/app/composables/workshop/town/useTownAgentBindings.ts +183 -183
  1462. package/app/composables/workshop/town/useTownAgentChat.ts +203 -203
  1463. package/app/composables/workshop/town/useTownAlarms.ts +36 -36
  1464. package/app/composables/workshop/town/useTownCallouts.ts +174 -174
  1465. package/app/composables/workshop/town/useTownChannels.ts +220 -220
  1466. package/app/composables/workshop/town/useTownHealth.ts +66 -66
  1467. package/app/composables/workshop/town/useTownHudTickers.ts +77 -77
  1468. package/app/composables/workshop/town/useTownLayout.ts +277 -277
  1469. package/app/composables/workshop/town/useTownNavMap.ts +301 -301
  1470. package/app/composables/workshop/town/useTownNodeBindings.ts +345 -345
  1471. package/app/composables/workshop/town/useTownPanelDrag.ts +91 -91
  1472. package/app/composables/workshop/town/useTownRailData.ts +421 -421
  1473. package/app/composables/workshop/town/useTownSceneControl.ts +92 -92
  1474. package/app/composables/workshop/town/useTownSceneInput.ts +275 -275
  1475. package/app/composables/workshop/town/useTownSceneRuntime.ts +390 -390
  1476. package/app/composables/workshop/town/useTownSheets.ts +41 -41
  1477. package/app/composables/workshop/town/useTownTrends.ts +93 -93
  1478. package/app/composables/workshop/useChannelList.ts +88 -88
  1479. package/app/composables/workshop/useChannelTerminals.ts +65 -65
  1480. package/app/composables/workshop/useComposerMentions.ts +130 -130
  1481. package/app/composables/workshop/useDcwStream.ts +377 -377
  1482. package/app/composables/workshop/useDeviceTwinDcwWrite.ts +77 -77
  1483. package/app/composables/workshop/useDeviceTwinPanel.ts +56 -56
  1484. package/app/composables/workshop/useEscClose.ts +44 -44
  1485. package/app/composables/workshop/useEventBlockView.ts +159 -159
  1486. package/app/composables/workshop/useEventBlocks.ts +33 -33
  1487. package/app/composables/workshop/useHitlAnswer.ts +184 -184
  1488. package/app/composables/workshop/useLaneWidths.ts +27 -27
  1489. package/app/composables/workshop/useOmpTerminalSession.ts +424 -424
  1490. package/app/composables/workshop/useOpsLog.ts +191 -191
  1491. package/app/composables/workshop/usePluginAdmin.ts +152 -152
  1492. package/app/composables/workshop/usePluginPanels.ts +72 -72
  1493. package/app/composables/workshop/useRuntimeConfigDraft.ts +118 -118
  1494. package/app/composables/workshop/useSettingsGroups.ts +243 -243
  1495. package/app/composables/workshop/useTaskBoardColumns.ts +47 -47
  1496. package/app/composables/workshop/useTerminalRenderer.ts +308 -308
  1497. package/app/composables/workshop/useTranscriptEnterStage.ts +48 -48
  1498. package/app/composables/workshop/useTranscriptHistory.ts +52 -52
  1499. package/app/composables/workshop/useTranscriptScroll.ts +113 -113
  1500. package/app/composables/workshop/useVisibleInterval.ts +42 -42
  1501. package/app/composables/workshop/useWorkshopWs.ts +265 -265
  1502. package/app/config/index.ts +1 -1
  1503. package/app/config/schema.ts +15 -1
  1504. package/app/middleware/locale-cookie.global.ts +22 -22
  1505. package/app/pages/aml/api.ts +6 -6
  1506. package/app/pages/aml/composables/useAmlDatasets.ts +38 -38
  1507. package/app/pages/aml/composables/useAmlEntities.ts +57 -57
  1508. package/app/pages/aml/composables/useAmlEnv.ts +191 -191
  1509. package/app/pages/aml/composables/useAmlExperiments.ts +45 -45
  1510. package/app/pages/aml/composables/useAmlFormat.ts +44 -44
  1511. package/app/pages/aml/composables/useAmlJobs.ts +131 -131
  1512. package/app/pages/aml/composables/useAmlModels.ts +56 -56
  1513. package/app/pages/aml/composables/useAmlNotes.ts +47 -47
  1514. package/app/pages/aml/composables/useAmlPredict.ts +93 -93
  1515. package/app/pages/aml/constants.ts +63 -63
  1516. package/app/pages/aml/index.vue +236 -236
  1517. package/app/pages/composables/useDashboardCharts.ts +192 -192
  1518. package/app/pages/composables/useDashboardData.ts +144 -144
  1519. package/app/pages/daq/composables/useDaqAddNode.ts +126 -126
  1520. package/app/pages/daq/composables/useDaqDetailBinding.ts +29 -29
  1521. package/app/pages/daq/composables/useDaqDetailFrames.ts +42 -42
  1522. package/app/pages/daq/composables/useDaqDetailNode.ts +53 -53
  1523. package/app/pages/daq/composables/useDaqDetailParams.ts +138 -138
  1524. package/app/pages/daq/composables/useDaqFilters.ts +187 -187
  1525. package/app/pages/daq/composables/useDaqNodeWindow.ts +86 -86
  1526. package/app/pages/daq/composables/useDaqOptimizations.ts +99 -99
  1527. package/app/pages/daq/composables/useDaqTemplates.ts +152 -152
  1528. package/app/pages/daq/index.vue +260 -260
  1529. package/app/pages/dcw/composables/useDcwCards.ts +27 -27
  1530. package/app/pages/dcw/composables/useDcwDetailScope.ts +145 -145
  1531. package/app/pages/dcw/composables/useDcwDetailTemplates.ts +94 -94
  1532. package/app/pages/dcw/composables/useDcwFilter.ts +29 -29
  1533. package/app/pages/dcw/composables/useDcwLedger.ts +34 -34
  1534. package/app/pages/dcw/composables/useDcwLineMutations.ts +115 -115
  1535. package/app/pages/dcw/composables/useDcwLineRun.ts +60 -60
  1536. package/app/pages/dcw/composables/useDcwProducts.ts +54 -54
  1537. package/app/pages/dcw/composables/useDcwQuery.ts +68 -68
  1538. package/app/pages/dcw/composables/useDcwQuickActions.ts +47 -47
  1539. package/app/pages/dcw/composables/useDcwRecipes.ts +256 -256
  1540. package/app/pages/dcw/composables/useDcwTemplates.ts +50 -50
  1541. package/app/pages/dcw/index.vue +195 -195
  1542. package/app/pages/dcw/types.ts +9 -9
  1543. package/app/pages/index.vue +126 -126
  1544. package/app/pages/logs/composables/useLogsFormat.ts +43 -43
  1545. package/app/pages/logs/composables/useLogsManual.ts +71 -71
  1546. package/app/pages/logs/composables/useLogsScope.ts +39 -39
  1547. package/app/pages/monitor/types.ts +61 -61
  1548. package/app/pages/operations.vue +61 -61
  1549. package/app/pages/permissions/index.vue +369 -369
  1550. package/app/pages/tokens/composables/useTokenClipboard.ts +33 -33
  1551. package/app/pages/tokens/composables/useTokenCreate.ts +93 -93
  1552. package/app/pages/tokens/composables/useTokenRename.ts +54 -54
  1553. package/app/pages/tokens/composables/useTokenReveal.ts +84 -84
  1554. package/app/pages/tokens/composables/useTokensList.ts +60 -60
  1555. package/app/pages/tokens.vue +111 -111
  1556. package/app/pages/tools/index.vue +98 -98
  1557. package/app/pages/workshop/agents.vue +130 -130
  1558. package/app/pages/workshop/composables/useAgentHarnessOptions.ts +59 -59
  1559. package/app/pages/workshop/composables/useAgentTemplateActions.ts +42 -42
  1560. package/app/pages/workshop/composables/useAgentTemplateDialogState.ts +24 -24
  1561. package/app/pages/workshop/composables/useAgentTemplateForm.ts +88 -88
  1562. package/app/pages/workshop/composables/useAgentTemplatesCatalog.ts +92 -92
  1563. package/app/pages/workshop/composables/useTeamActions.ts +44 -44
  1564. package/app/pages/workshop/composables/useTeamAddMemberDialog.ts +49 -49
  1565. package/app/pages/workshop/composables/useTeamCreateDialog.ts +67 -67
  1566. package/app/pages/workshop/composables/useTeamDeployDialog.ts +49 -49
  1567. package/app/pages/workshop/composables/useTeamDialogState.ts +46 -46
  1568. package/app/pages/workshop/composables/useTeamPluginDialog.ts +72 -72
  1569. package/app/pages/workshop/composables/useTeamsCatalog.ts +100 -100
  1570. package/app/pages/workshop/composables/useWorkbenchWorkspaces.ts +123 -123
  1571. package/app/pages/workshop/composables/useWorkspaceAuth.ts +31 -31
  1572. package/app/pages/workshop/composables/useWorkspaceChannels.ts +62 -62
  1573. package/app/pages/workshop/composables/useWorkspaceShell.ts +136 -136
  1574. package/app/pages/workshop/schedules.vue +553 -553
  1575. package/app/pages/workshop/w/[wsId].vue +221 -221
  1576. package/app/plugins/aw-plugins.client.ts +213 -213
  1577. package/app/plugins/esc-close.client.ts +31 -31
  1578. package/app/stores/workshop/hitl.ts +183 -183
  1579. package/app/stores/workshop/narrow-fetch.ts +23 -23
  1580. package/app/utils/api-error.ts +75 -75
  1581. package/app/utils/builtin-catalog.ts +104 -104
  1582. package/app/utils/chart-trend.ts +97 -97
  1583. package/app/utils/dcw-driver-badge.ts +16 -16
  1584. package/app/utils/dcw-recipe-form.ts +26 -26
  1585. package/cli/commands/tui.mjs +28 -28
  1586. package/cli/commands/update.mjs +124 -124
  1587. package/cli/core/child-lifecycle.mjs +136 -136
  1588. package/cli/core/meta.mjs +38 -38
  1589. package/cli/core/post-build.mjs +96 -96
  1590. package/config.yml +212 -193
  1591. package/docker-compose.yml +69 -63
  1592. package/docs/aml.md +112 -112
  1593. package/docs/cli.en.md +447 -447
  1594. package/docs/cli.md +412 -412
  1595. package/docs/mcp.en.md +27 -27
  1596. package/docs/multi-harness-architecture.md +248 -248
  1597. package/docs/plugins.en.md +641 -641
  1598. package/docs/plugins.md +630 -630
  1599. package/docs/sdk.en.md +964 -964
  1600. package/docs/sdk.md +900 -900
  1601. package/docs/tui.md +43 -43
  1602. package/i18n/dicts/_en.json +1551 -1551
  1603. package/i18n/dicts/_en2.json +300 -300
  1604. package/i18n/dicts/_en4.json +114 -114
  1605. package/i18n/dicts/agentLanesView.json +61 -61
  1606. package/i18n/dicts/appHeader.json +17 -17
  1607. package/i18n/dicts/channelSessionList.json +51 -51
  1608. package/i18n/dicts/chat.json +79 -79
  1609. package/i18n/dicts/clusterTool.json +4 -4
  1610. package/i18n/dicts/composer.json +38 -38
  1611. package/i18n/dicts/ctpl.json +37 -37
  1612. package/i18n/dicts/dcwDetail.json +219 -219
  1613. package/i18n/dicts/lineOps.json +14 -14
  1614. package/i18n/dicts/multiChannelView.json +13 -13
  1615. package/i18n/dicts/notifications.json +13 -13
  1616. package/i18n/dicts/taskInspectorDrawer.json +25 -25
  1617. package/i18n/dicts/teamPlugins.json +10 -10
  1618. package/i18n/dicts/townView.json +211 -211
  1619. package/i18n/locales/en.ts +3373 -3371
  1620. package/i18n/locales/zh-CN.ts +3372 -3370
  1621. package/mcp/aw-mcp-server.mjs +1 -1
  1622. package/mcp/discovery.mjs +227 -227
  1623. package/package.json +189 -189
  1624. package/public/favicon.svg +14 -14
  1625. package/public/robots.txt +3 -3
  1626. package/scripts/_audit/_live-mqtt-e2e-20261028.mjs +219 -219
  1627. package/scripts/_audit/audit-harness-adapters.md +664 -664
  1628. package/scripts/_audit/aw-mcp-live-e2e.mjs +293 -293
  1629. package/scripts/_audit/bump-version.mjs +51 -51
  1630. package/scripts/_audit/demo-shot-studio.mjs +37 -0
  1631. package/scripts/_audit/demo-shots.mjs +38 -0
  1632. package/scripts/_audit/detached-instance.mjs +112 -112
  1633. package/scripts/_audit/detached-start.mjs +103 -103
  1634. package/scripts/_audit/eda-ui-fix-acceptance.mjs +212 -212
  1635. package/scripts/_audit/gen-demo-report.py +69 -0
  1636. package/scripts/_audit/guard-upstream-liveness.mjs +104 -104
  1637. package/scripts/_audit/http-api-authz-audit.md +657 -657
  1638. package/scripts/_audit/kb-team-mock-e2e.mjs +146 -146
  1639. package/scripts/_audit/kb-team-omp-e2e.mjs +229 -229
  1640. package/scripts/_audit/kill-acceptance-strays.mjs +47 -0
  1641. package/scripts/_audit/mqtt-pub.mjs +13 -0
  1642. package/scripts/_audit/mqtt-topic-probe.mjs +15 -0
  1643. package/scripts/_audit/prompt-injection-probe.mts +76 -76
  1644. package/scripts/_audit/proto-b3-device-4021.mjs +90 -0
  1645. package/scripts/_audit/proto-doc-broker-20261031.mjs +11 -0
  1646. package/scripts/_audit/proto-doc-device-20261031.mjs +53 -0
  1647. package/scripts/_audit/proto-doc-device-4120.mjs +53 -0
  1648. package/scripts/_audit/proto-doc-mqtt-20261031.mjs +32 -0
  1649. package/scripts/_audit/run-full-acceptance-20261030.sh +82 -0
  1650. package/scripts/_audit/run.mjs +21 -21
  1651. package/scripts/_audit/runtime-audit.md +716 -716
  1652. package/scripts/_audit/skills-guided-e2e.mjs +316 -316
  1653. package/scripts/_audit/stability-soak.mjs +252 -252
  1654. package/scripts/_audit/stubs/nuxt-imports.mjs +67 -67
  1655. package/scripts/_audit/ts-register-hook.mjs +12 -12
  1656. package/scripts/_audit/ts-resolve-hook.mjs +96 -96
  1657. package/scripts/_aw0746-stage12.mjs +94 -94
  1658. package/scripts/_aw0746-stage34.mjs +136 -136
  1659. package/scripts/_aw0746-stage6b-train-sweep.mjs +145 -145
  1660. package/scripts/_aw0746-stage6c-jobsmoke.mjs +69 -69
  1661. package/scripts/_dbg-configroot-audit.mjs +86 -86
  1662. package/scripts/_dbg-daq-intervals-func.mjs +115 -115
  1663. package/scripts/_dbg-perms-e2e.mjs +142 -142
  1664. package/scripts/_dbg-protocol-matrix.mjs +462 -462
  1665. package/scripts/_dbg-render-regression.mjs +193 -193
  1666. package/scripts/_dbg-schedule-e2e.mjs +262 -262
  1667. package/scripts/_e2e-ui-functional.mjs +371 -371
  1668. package/scripts/_lib-aml-python-run.mjs +17 -17
  1669. package/scripts/_plc-sim-detached.cjs +22 -22
  1670. package/scripts/_provision-injection-line.mjs +39 -39
  1671. package/scripts/_run-matrix.ps1 +53 -53
  1672. package/scripts/_sweep-button-contrast.mjs +87 -87
  1673. package/scripts/acceptance-aml-hybrid-e2e.ts +396 -396
  1674. package/scripts/acceptance-aml-hybrid-live.mjs +93 -93
  1675. package/scripts/acceptance-aml-model-identity.ts +137 -137
  1676. package/scripts/acceptance-scientific-loop.ts +224 -0
  1677. package/scripts/agent-daq-isolation-e2e.mjs +91 -91
  1678. package/scripts/api-contract-smoke.mjs +126 -126
  1679. package/scripts/api-live-e2e.mjs +91 -32
  1680. package/scripts/ask-hitl-e2e.mjs +96 -96
  1681. package/scripts/aw-expose.mjs +159 -159
  1682. package/scripts/channel-interaction-smoke.mjs +80 -80
  1683. package/scripts/data-studio-ui-e2e.mjs +163 -163
  1684. package/scripts/demo-group-chat-all-real.ts +279 -279
  1685. package/scripts/dev-modbus-simulator.mjs +55 -55
  1686. package/scripts/docs-shots.mjs +36 -36
  1687. package/scripts/e2e-agentteam-chat.mjs +473 -473
  1688. package/scripts/e2e-agentteam-goal-closure.mjs +496 -0
  1689. package/scripts/e2e-agentteam-real-triage.mjs +421 -421
  1690. package/scripts/e2e-aml-decoupled.mjs +162 -162
  1691. package/scripts/e2e-analysis-ledger.mjs +202 -202
  1692. package/scripts/e2e-aw-tui-global.mjs +277 -277
  1693. package/scripts/e2e-binding-modes-real.mjs +442 -442
  1694. package/scripts/e2e-business-loop-real.mjs +391 -391
  1695. package/scripts/e2e-closedloop/cleanup.mjs +27 -27
  1696. package/scripts/e2e-closedloop/lib.mjs +109 -109
  1697. package/scripts/e2e-closedloop/main.mjs +59 -59
  1698. package/scripts/e2e-closedloop/scenarios-accounts.mjs +210 -210
  1699. package/scripts/e2e-closedloop/scenarios-authz.mjs +196 -196
  1700. package/scripts/e2e-closedloop/scenarios-daq-dcw.mjs +222 -222
  1701. package/scripts/e2e-closedloop/scenarios-plugins.mjs +169 -169
  1702. package/scripts/e2e-closedloop/state.mjs +10 -10
  1703. package/scripts/e2e-config-groups.mjs +238 -238
  1704. package/scripts/e2e-core-bridges-matrix.mjs +303 -303
  1705. package/scripts/e2e-crash-cycle.mjs +108 -108
  1706. package/scripts/e2e-dcw-halfopen-resilience.mjs +140 -0
  1707. package/scripts/e2e-error-handling.mjs +190 -190
  1708. package/scripts/e2e-full-closedloop.mjs +16 -16
  1709. package/scripts/e2e-golive-matrix.mjs +515 -515
  1710. package/scripts/e2e-hil-multi-user.mjs +307 -307
  1711. package/scripts/e2e-hil-restart.mjs +339 -339
  1712. package/scripts/e2e-idd-results-ui.mjs +182 -175
  1713. package/scripts/e2e-line-governance.mjs +352 -352
  1714. package/scripts/e2e-mes-mirror-real.mjs +427 -418
  1715. package/scripts/e2e-model-loop-live.mjs +90 -54
  1716. package/scripts/e2e-multiexpert-remediation-real.mjs +453 -453
  1717. package/scripts/e2e-node-binding-3mode-real.mjs +792 -792
  1718. package/scripts/e2e-node-binding-authz.mjs +372 -372
  1719. package/scripts/e2e-ontology.mjs +393 -393
  1720. package/scripts/e2e-paper-paired-route.mjs +791 -0
  1721. package/scripts/e2e-physical-effect-real.mjs +572 -570
  1722. package/scripts/e2e-plc-plugin-closedloop.mjs +549 -549
  1723. package/scripts/e2e-real-channel-mission.mjs +543 -0
  1724. package/scripts/e2e-security-b0.mjs +280 -0
  1725. package/scripts/e2e-security-b1.mjs +165 -0
  1726. package/scripts/e2e-security-b2b5.mjs +280 -0
  1727. package/scripts/full-stack-shots.mjs +145 -145
  1728. package/scripts/full-tool-injection-harness-e2e.mjs +214 -214
  1729. package/scripts/generate-identifiability-fixtures.ts +98 -0
  1730. package/scripts/hitl-reject-e2e.mjs +131 -131
  1731. package/scripts/line-log-smoke.mjs +260 -260
  1732. package/scripts/live-aml-mockomp.mjs +304 -304
  1733. package/scripts/live-aml-optloop-resume.mjs +322 -322
  1734. package/scripts/live-aml-optloop.mjs +588 -588
  1735. package/scripts/live-aml-stage9.mjs +169 -169
  1736. package/scripts/live-aml-two-goals.mjs +315 -315
  1737. package/scripts/live-demo-seed.mjs +157 -157
  1738. package/scripts/live-optloop-two-modes.mjs +857 -857
  1739. package/scripts/mes-agent-integration-e2e.mjs +361 -361
  1740. package/scripts/onboarding/preflight.mjs +231 -0
  1741. package/scripts/onboarding/provision-line.mjs +11 -1
  1742. package/scripts/onboarding/verify-mirror.mjs +145 -0
  1743. package/scripts/ops-plugins-e2e.mjs +85 -85
  1744. package/scripts/scenario-suite-setup.mjs +337 -337
  1745. package/scripts/scenario-suite-stability.mjs +144 -144
  1746. package/scripts/security-acceptance.mjs +218 -218
  1747. package/scripts/start.mjs +279 -250
  1748. package/scripts/team-coordination-e2e.mjs +96 -96
  1749. package/scripts/test-agentteam-workflow.ts +472 -472
  1750. package/scripts/test-aw-skills.mjs +102 -102
  1751. package/scripts/test-daq-frame-race.mjs +358 -358
  1752. package/scripts/test-data-root.mjs +208 -208
  1753. package/scripts/test-events-index.mjs +176 -176
  1754. package/scripts/test-group-chat-unit/lib.ts +186 -186
  1755. package/scripts/test-group-chat-unit/main.ts +45 -45
  1756. package/scripts/test-group-chat-unit.ts +35 -35
  1757. package/scripts/test-hitl-decision.ts +526 -526
  1758. package/scripts/test-hitl-registry.ts +112 -112
  1759. package/scripts/test-log-flooding.mjs +160 -160
  1760. package/scripts/test-lru.mjs +101 -101
  1761. package/scripts/test-plugin-hardening.mjs +90 -90
  1762. package/scripts/test-plugin-lifecycle.mjs +173 -173
  1763. package/scripts/test-rollback-index.mjs +137 -137
  1764. package/scripts/test-schedule-runtime.ts +309 -309
  1765. package/scripts/test-sdk-surface.mjs +158 -158
  1766. package/scripts/test-serial-bridge.mjs +418 -418
  1767. package/scripts/test-tui-commands.mjs +148 -148
  1768. package/scripts/test-tui-reducers.mjs +72 -72
  1769. package/scripts/three-system-e2e/lib.mjs +79 -79
  1770. package/scripts/three-system-e2e/main.mjs +40 -40
  1771. package/scripts/three-system-e2e/phases/phase-0-user-token.mjs +42 -42
  1772. package/scripts/three-system-e2e/phases/phase-0a2-line-autoselect.mjs +35 -35
  1773. package/scripts/three-system-e2e/phases/phase-0b-fixture-grants.mjs +39 -39
  1774. package/scripts/three-system-e2e/phases/phase-0c-plugin-outbound-auth.mjs +95 -95
  1775. package/scripts/three-system-e2e/phases/stage-1-health.mjs +47 -47
  1776. package/scripts/three-system-e2e/phases/stage-2-5-team-plugins.mjs +84 -84
  1777. package/scripts/three-system-e2e/phases/stage-2-teams-tools-hitl.mjs +184 -184
  1778. package/scripts/three-system-e2e/phases/stage-3-diag.mjs +73 -73
  1779. package/scripts/three-system-e2e/phases/stage-4-plugin-toggle.mjs +53 -53
  1780. package/scripts/three-system-e2e/state.mjs +87 -87
  1781. package/scripts/three-system-e2e.mjs +40 -40
  1782. package/scripts/tool-face-batch-identity-e2e.mjs +222 -222
  1783. package/scripts/tsconfig.json +14 -14
  1784. package/scripts/tui-smoke.mjs +100 -100
  1785. package/scripts/typecheck.mjs +75 -75
  1786. package/scripts/ui/md-lint.mjs +80 -80
  1787. package/scripts/ui/readme-assets.mjs +30 -30
  1788. package/scripts/ui/readme-shots.mjs +42 -42
  1789. package/scripts/ui/record-demo.mjs +557 -557
  1790. package/scripts/ui/record.mjs +225 -225
  1791. package/scripts/ui/seed-admin.mjs +68 -68
  1792. package/scripts/ui/seed-demo.mjs +83 -83
  1793. package/scripts/ui/seed-industrial-demo.mjs +171 -171
  1794. package/scripts/ui/shot-hero.mjs +25 -25
  1795. package/scripts/ui/shots.mjs +75 -75
  1796. package/scripts/ui/verify-nav.mjs +51 -51
  1797. package/scripts/ui/verify-responsive.mjs +285 -285
  1798. package/sdk/client.d.mts +110 -110
  1799. package/sdk/context.mjs +34 -1
  1800. package/sdk/examples/line-sentinel/index.mjs +105 -105
  1801. package/sdk/examples/ops-notifier/index.mjs +34 -34
  1802. package/sdk/examples/sample-insight/index.mjs +39 -39
  1803. package/server/.mimosa/hook-state/sess_869e5bfd-07f4-4b6e-a991-6221fcf6b7d2.json +1 -0
  1804. package/server/.mimosa/hook-state/sess_869e5bfd-07f4-4b6e-a991-6221fcf6b7d2.mvhn1irp-99488-e3fdc1cbfc.baseline/942d2679b87b96c612b4f2a425c3ccc5b6f3234f0cf589a8441602f866fbe277.source +41 -0
  1805. package/server/.mimosa/hook-state/sess_869e5bfd-07f4-4b6e-a991-6221fcf6b7d2.mvhn1irp-99488-e3fdc1cbfc.baseline/dd617a82339d2c61e49e28e416aabeb2fc100fb3cb1beca18d02dfb833214af6.source +51 -0
  1806. package/server/.mimosa/hook-status/sess_869e5bfd-07f4-4b6e-a991-6221fcf6b7d2-e67b6b91bf.json +14 -0
  1807. package/server/api/plugins/client/[name].get.ts +18 -18
  1808. package/server/api/plugins/i18n.get.ts +12 -12
  1809. package/server/api/plugins/manifest.get.ts +10 -10
  1810. package/server/api/system/backup/list.get.ts +32 -32
  1811. package/server/api/system/backup/run.post.ts +21 -21
  1812. package/server/api/system/config-groups/[id].delete.ts +21 -21
  1813. package/server/api/system/config-groups/[id].patch.ts +26 -26
  1814. package/server/api/system/config-groups/index.get.ts +21 -21
  1815. package/server/api/system/config-groups/index.post.ts +33 -33
  1816. package/server/api/system/timezone.get.ts +20 -20
  1817. package/server/api/users/login.post.ts +3 -2
  1818. package/server/api/users/register.post.ts +22 -21
  1819. package/server/api/users/tokens/[id]/token.get.ts +11 -11
  1820. package/server/api/workshop/[...path].ts +13 -13
  1821. package/server/api/workshop/a2a/[agentId]/card/index.get.ts +86 -75
  1822. package/server/api/workshop/agent-tools/approvals/index.get.ts +45 -45
  1823. package/server/api/workshop/agent-tools/bindings/[id].delete.ts +26 -26
  1824. package/server/api/workshop/agent-tools/bindings/grant.post.ts +45 -45
  1825. package/server/api/workshop/agent-tools/bindings/index.get.ts +41 -41
  1826. package/server/api/workshop/agent-tools/bindings/revoke.post.ts +42 -42
  1827. package/server/api/workshop/aml/datasets/[id]/preview.get.ts +68 -68
  1828. package/server/api/workshop/aml/datasets/[id].delete.ts +39 -39
  1829. package/server/api/workshop/aml/datasets/[id].get.ts +53 -53
  1830. package/server/api/workshop/aml/datasets/[id].patch.ts +30 -30
  1831. package/server/api/workshop/aml/datasets/index.get.ts +20 -20
  1832. package/server/api/workshop/aml/datasets/index.post.ts +27 -27
  1833. package/server/api/workshop/aml/entities/index.get.ts +13 -13
  1834. package/server/api/workshop/aml/entities/prune.post.ts +28 -28
  1835. package/server/api/workshop/aml/env/index.get.ts +13 -13
  1836. package/server/api/workshop/aml/env/recheck.post.ts +14 -14
  1837. package/server/api/workshop/aml/env/uv.post.ts +21 -21
  1838. package/server/api/workshop/aml/env/venv.post.ts +24 -24
  1839. package/server/api/workshop/aml/experiments/index.get.ts +35 -35
  1840. package/server/api/workshop/aml/index.get.ts +37 -37
  1841. package/server/api/workshop/aml/jobs/[id]/cancel.post.ts +21 -21
  1842. package/server/api/workshop/aml/jobs/[id]/logs.get.ts +23 -23
  1843. package/server/api/workshop/aml/jobs/[id]/retry.post.ts +20 -20
  1844. package/server/api/workshop/aml/jobs/[id].delete.ts +44 -44
  1845. package/server/api/workshop/aml/jobs/[id].get.ts +23 -23
  1846. package/server/api/workshop/aml/jobs/index.get.ts +26 -26
  1847. package/server/api/workshop/aml/models/[id]/predict.post.ts +24 -24
  1848. package/server/api/workshop/aml/models/[id]/promote.post.ts +30 -30
  1849. package/server/api/workshop/aml/models/index.get.ts +48 -48
  1850. package/server/api/workshop/aml/training-plans/[id]/train.post.ts +18 -18
  1851. package/server/api/workshop/aml/training-plans/[id].delete.ts +18 -18
  1852. package/server/api/workshop/aml/training-plans/[id].patch.ts +30 -30
  1853. package/server/api/workshop/aml/training-plans/index.get.ts +9 -9
  1854. package/server/api/workshop/aml/training-plans/index.post.ts +43 -43
  1855. package/server/api/workshop/analysis/index.post.ts +71 -54
  1856. package/server/api/workshop/approvals/[id]/decide.post.ts +30 -30
  1857. package/server/api/workshop/approvals/index.get.ts +22 -22
  1858. package/server/api/workshop/assets/devices/index.post.ts +55 -53
  1859. package/server/api/workshop/audit.get.ts +43 -43
  1860. package/server/api/workshop/channels/[id]/chat/messages/[messageId]/read.post.ts +22 -22
  1861. package/server/api/workshop/channels/[id]/chat/messages/index.get.ts +29 -29
  1862. package/server/api/workshop/channels/[id]/chat/messages/index.post.ts +51 -51
  1863. package/server/api/workshop/channels/[id]/chat/permissions.get.ts +35 -35
  1864. package/server/api/workshop/channels/[id]/index.patch.ts +64 -64
  1865. package/server/api/workshop/channels/[id]/members/[userId]/approve.post.ts +20 -20
  1866. package/server/api/workshop/channels/[id]/members/[userId].delete.ts +21 -21
  1867. package/server/api/workshop/channels/[id]/members/index.get.ts +23 -23
  1868. package/server/api/workshop/channels/[id]/members/leave.post.ts +20 -20
  1869. package/server/api/workshop/channels/[id]/tasks/index.post.ts +2 -0
  1870. package/server/api/workshop/channels/[id]/twin-profile.get.ts +45 -45
  1871. package/server/api/workshop/channels/[id]/twin-profile.patch.ts +91 -72
  1872. package/server/api/workshop/daq/[id]/ingest.post.ts +25 -1
  1873. package/server/api/workshop/daq/[id]/test.post.ts +1 -1
  1874. package/server/api/workshop/daq/index.post.ts +45 -1
  1875. package/server/api/workshop/daq/storage/retention.put.ts +66 -0
  1876. package/server/api/workshop/daq/storage/rollup.post.ts +28 -0
  1877. package/server/api/workshop/daq/storage.get.ts +17 -0
  1878. package/server/api/workshop/daq/templates/[key].delete.ts +2 -2
  1879. package/server/api/workshop/daq/templates/[key].patch.ts +19 -19
  1880. package/server/api/workshop/daq/templates/index.post.ts +18 -18
  1881. package/server/api/workshop/dcw/[id]/write.post.ts +31 -30
  1882. package/server/api/workshop/dcw/[id].delete.ts +41 -41
  1883. package/server/api/workshop/dcw/mes-test-read.post.ts +24 -24
  1884. package/server/api/workshop/dcw/params/[id]/write.post.ts +21 -21
  1885. package/server/api/workshop/dcw/params/[id].delete.ts +19 -19
  1886. package/server/api/workshop/dcw/params/[id].patch.ts +23 -23
  1887. package/server/api/workshop/dcw/params/index.get.ts +27 -27
  1888. package/server/api/workshop/dcw/params/index.post.ts +25 -25
  1889. package/server/api/workshop/dcw/recipes/[id].delete.ts +21 -2
  1890. package/server/api/workshop/dcw/templates/[key].delete.ts +14 -14
  1891. package/server/api/workshop/dcw/templates/[key].patch.ts +16 -16
  1892. package/server/api/workshop/dcw/templates/index.post.ts +15 -15
  1893. package/server/api/workshop/device-twins/[id]/control.post.ts +23 -21
  1894. package/server/api/workshop/device-twins/[id].delete.ts +27 -25
  1895. package/server/api/workshop/device-twins/[id].patch.ts +31 -29
  1896. package/server/api/workshop/eda/runs/[id]/labels.patch.ts +25 -25
  1897. package/server/api/workshop/eda/templates/[id].delete.ts +14 -14
  1898. package/server/api/workshop/eda/templates/[id].get.ts +15 -15
  1899. package/server/api/workshop/eda/templates/[id].patch.ts +20 -20
  1900. package/server/api/workshop/eda/templates/index.get.ts +11 -11
  1901. package/server/api/workshop/eda/templates/index.post.ts +20 -20
  1902. package/server/api/workshop/exp/confirmations/[id]/decide.post.ts +41 -41
  1903. package/server/api/workshop/exp/confirmations/index.get.ts +25 -25
  1904. package/server/api/workshop/harnesses/[id]/providers.get.ts +16 -16
  1905. package/server/api/workshop/hitl/respond.post.ts +94 -94
  1906. package/server/api/workshop/notifications/index.get.ts +60 -60
  1907. package/server/api/workshop/notifications/read.post.ts +31 -31
  1908. package/server/api/workshop/ontology/drafts/[draftId]/subgraph.ts +24 -24
  1909. package/server/api/workshop/ops-logs/index.post.ts +92 -87
  1910. package/server/api/workshop/plugins/[name]/disable.post.ts +21 -21
  1911. package/server/api/workshop/plugins/[name]/enable.post.ts +21 -21
  1912. package/server/api/workshop/plugins/[name]/index.get.ts +14 -14
  1913. package/server/api/workshop/process-model/experiments.ts +28 -2
  1914. package/server/api/workshop/schedules/[id]/run.post.ts +15 -15
  1915. package/server/api/workshop/schedules/[id]/runs.get.ts +15 -15
  1916. package/server/api/workshop/schedules/[id].delete.ts +14 -14
  1917. package/server/api/workshop/schedules/[id].get.ts +13 -13
  1918. package/server/api/workshop/schedules/[id].patch.ts +29 -29
  1919. package/server/api/workshop/schedules/index.get.ts +12 -12
  1920. package/server/api/workshop/schedules/index.post.ts +32 -32
  1921. package/server/api/workshop/tasks/[id]/reassign.post.ts +32 -32
  1922. package/server/api/workshop/tasks/[id]/supersede.post.ts +28 -0
  1923. package/server/api/workshop/tasks/[id]/update.post.ts +35 -35
  1924. package/server/api/workshop/teams/[id]/plugins/index.get.ts +36 -36
  1925. package/server/api/workshop/teams/[id]/plugins/index.put.ts +42 -42
  1926. package/server/api/workshop/ws/audience.ts +56 -56
  1927. package/server/api/workshop/ws/db-buffer.ts +68 -68
  1928. package/server/api/workshop/ws/event-mapping.ts +47 -47
  1929. package/server/api/workshop/ws/handlers.ts +132 -132
  1930. package/server/api/workshop/ws/hub.ts +134 -134
  1931. package/server/api/workshop/ws/index.ts +23 -23
  1932. package/server/api/workshop/ws/notification-uplink.ts +77 -77
  1933. package/server/api/workshop/ws/shared.ts +94 -94
  1934. package/server/api/workshop/ws/streams.ts +146 -146
  1935. package/server/middleware/00-security-headers.ts +45 -38
  1936. package/server/middleware/01-rate-guard.ts +129 -101
  1937. package/server/plugins/00-daq-credentials.ts +33 -0
  1938. package/server/plugins/01-instance-guard.ts +118 -82
  1939. package/server/plugins/aml-twin-worker.ts +32 -32
  1940. package/server/plugins/backup.ts +268 -257
  1941. package/server/plugins/daq.ts +40 -1
  1942. package/server/plugins/dev-stability-guard.ts +46 -46
  1943. package/server/plugins/error-ledger.ts +21 -21
  1944. package/server/plugins-builtin/diag-bridge/host/constants.mjs +25 -25
  1945. package/server/plugins-builtin/diag-bridge/host/exports.mjs +104 -104
  1946. package/server/plugins-builtin/diag-bridge/host/index.mjs +15 -15
  1947. package/server/plugins-builtin/diag-bridge/host/intents.mjs +62 -62
  1948. package/server/plugins-builtin/diag-bridge/host/plugin.mjs +759 -753
  1949. package/server/plugins-builtin/diag-bridge/host/snapshot.mjs +93 -93
  1950. package/server/plugins-builtin/diag-bridge/index.mjs +9 -9
  1951. package/server/plugins-builtin/rag-bridge/index.mjs +490 -484
  1952. package/server/plugins-builtin/serial-bridge/client.mjs +211 -211
  1953. package/server/plugins-builtin/serial-bridge/drivers.mjs +409 -409
  1954. package/server/plugins-builtin/serial-bridge/i18n.json +62 -62
  1955. package/server/plugins-builtin/serial-bridge/index.mjs +247 -247
  1956. package/server/plugins-builtin/serial-bridge/lib.mjs +208 -208
  1957. package/server/plugins-builtin/serial-bridge/rtu.mjs +168 -168
  1958. package/server/repositories/user.repository.ts +543 -507
  1959. package/server/schemas/user.schema.ts +74 -74
  1960. package/server/services/system-config/contracts.ts +29 -29
  1961. package/server/services/system-config/dispose.ts +19 -19
  1962. package/server/services/system-config/facade.ts +26 -26
  1963. package/server/services/system-config/groups.ts +108 -108
  1964. package/server/services/system-config/index.ts +21 -21
  1965. package/server/services/system-config/init.ts +26 -26
  1966. package/server/services/system-config/mutate.ts +110 -103
  1967. package/server/services/system-config/plugins.ts +104 -104
  1968. package/server/services/system-config/secrets.ts +50 -0
  1969. package/server/services/system-config/snapshot.ts +70 -59
  1970. package/server/services/system-config/state.ts +79 -79
  1971. package/server/services/system-config/types.ts +58 -58
  1972. package/server/services/user.service.ts +279 -258
  1973. package/server/services/workshop/.mimosa/hook-state/sess_fed429fb-c8b7-4a50-bbd6-45afc580893f.json +1 -0
  1974. package/server/services/workshop/.mimosa/hook-status/sess_fed429fb-c8b7-4a50-bbd6-45afc580893f-e6b75bbfe6.json +14 -0
  1975. package/server/services/workshop/agents/adapters/line-spawn.ts +148 -144
  1976. package/server/services/workshop/agents/adapters/omp-rpc-client/api.ts +111 -111
  1977. package/server/services/workshop/agents/adapters/omp-rpc-client/contracts.ts +22 -22
  1978. package/server/services/workshop/agents/adapters/omp-rpc-client/facade.ts +7 -7
  1979. package/server/services/workshop/agents/adapters/omp-rpc-client/helpers.ts +38 -38
  1980. package/server/services/workshop/agents/adapters/omp-rpc-client/index.ts +25 -25
  1981. package/server/services/workshop/agents/adapters/omp-rpc-client/start.ts +74 -70
  1982. package/server/services/workshop/agents/adapters/omp-rpc-client/state.ts +65 -65
  1983. package/server/services/workshop/agents/adapters/omp-rpc-client/stdout.ts +92 -92
  1984. package/server/services/workshop/agents/adapters/omp-rpc-client/usage.ts +47 -47
  1985. package/server/services/workshop/agents/agent-badge.ts +38 -38
  1986. package/server/services/workshop/agents/agent-dto.ts +54 -54
  1987. package/server/services/workshop/agents/agent-interface.ts +2 -0
  1988. package/server/services/workshop/agents/base-agent.ts +3 -3
  1989. package/server/services/workshop/agents/binding-authz.ts +66 -66
  1990. package/server/services/workshop/agents/binding-mode.ts +51 -51
  1991. package/server/services/workshop/agents/codex-agent/client.ts +170 -170
  1992. package/server/services/workshop/agents/codex-agent/core.ts +119 -119
  1993. package/server/services/workshop/agents/codex-agent/facade.ts +8 -8
  1994. package/server/services/workshop/agents/codex-agent/helpers.ts +13 -13
  1995. package/server/services/workshop/agents/codex-agent/hitl.ts +138 -138
  1996. package/server/services/workshop/agents/codex-agent/index.ts +14 -14
  1997. package/server/services/workshop/agents/codex-agent/turn.ts +367 -367
  1998. package/server/services/workshop/agents/codex-agent/types.ts +42 -42
  1999. package/server/services/workshop/agents/governance-harness-audit.ts +216 -0
  2000. package/server/services/workshop/agents/harness-process.ts +3 -3
  2001. package/server/services/workshop/agents/harness-spawn-policy.ts +114 -114
  2002. package/server/services/workshop/agents/harness-terminal/api.ts +197 -197
  2003. package/server/services/workshop/agents/harness-terminal/index.ts +17 -17
  2004. package/server/services/workshop/agents/harness-terminal/io.ts +120 -120
  2005. package/server/services/workshop/agents/harness-terminal/park.ts +55 -55
  2006. package/server/services/workshop/agents/harness-terminal/sanitize.ts +98 -98
  2007. package/server/services/workshop/agents/harness-terminal/session.ts +124 -124
  2008. package/server/services/workshop/agents/harness-terminal/shared.ts +74 -74
  2009. package/server/services/workshop/agents/hitl-capabilities.ts +312 -312
  2010. package/server/services/workshop/agents/hitl-decision/answers.ts +32 -32
  2011. package/server/services/workshop/agents/hitl-decision/decide.ts +268 -268
  2012. package/server/services/workshop/agents/hitl-decision/payload.ts +45 -45
  2013. package/server/services/workshop/agents/hitl-decision/shared.ts +108 -108
  2014. package/server/services/workshop/agents/hitl-decision/visibility.ts +94 -94
  2015. package/server/services/workshop/agents/host-tool-bridge/catalog.ts +3 -0
  2016. package/server/services/workshop/agents/host-tool-bridge/dispatch.ts +428 -410
  2017. package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +4 -1
  2018. package/server/services/workshop/agents/host-tool-bridge/tools/messaging.ts +51 -14
  2019. package/server/services/workshop/agents/host-tool-bridge/tools/progress.ts +126 -84
  2020. package/server/services/workshop/agents/host-tool-bridge/tools/tasks.ts +52 -14
  2021. package/server/services/workshop/agents/host-tool-bridge/tools/team-delegation.ts +129 -109
  2022. package/server/services/workshop/agents/host-tool-bridge/tools/team.ts +70 -70
  2023. package/server/services/workshop/agents/host-tool-bridge/types.ts +1 -1
  2024. package/server/services/workshop/agents/industrial/aml-activity.ts +131 -131
  2025. package/server/services/workshop/agents/industrial/aml-dataset-tools.ts +3 -0
  2026. package/server/services/workshop/agents/industrial/aml-job-tools.ts +6 -4
  2027. package/server/services/workshop/agents/industrial/audit-query.ts +66 -66
  2028. package/server/services/workshop/agents/industrial/bench-approval-only.ts +394 -0
  2029. package/server/services/workshop/agents/industrial/daq-tools.ts +79 -20
  2030. package/server/services/workshop/agents/industrial/dcw-tools.ts +10 -1
  2031. package/server/services/workshop/agents/industrial/exp-tools.ts +104 -104
  2032. package/server/services/workshop/agents/industrial/fallback-hints.ts +31 -0
  2033. package/server/services/workshop/agents/industrial/identifiability-tools.ts +247 -0
  2034. package/server/services/workshop/agents/industrial/index.ts +1 -0
  2035. package/server/services/workshop/agents/industrial/manual-approval.ts +5 -3
  2036. package/server/services/workshop/agents/industrial/ops-tools.ts +115 -29
  2037. package/server/services/workshop/agents/industrial/optimization-tools.ts +33 -19
  2038. package/server/services/workshop/agents/industrial/param-tools.ts +69 -69
  2039. package/server/services/workshop/agents/industrial/recipe-propose-tools.ts +4 -3
  2040. package/server/services/workshop/agents/mock-agent.ts +4 -0
  2041. package/server/services/workshop/agents/node-bindings.repo.ts +210 -210
  2042. package/server/services/workshop/agents/node-delegation.ts +204 -204
  2043. package/server/services/workshop/agents/omp-agent/agentteam-audit.ts +147 -0
  2044. package/server/services/workshop/agents/omp-agent/client.ts +1 -1
  2045. package/server/services/workshop/agents/omp-agent/core.ts +146 -146
  2046. package/server/services/workshop/agents/omp-agent/event-mapping.ts +21 -0
  2047. package/server/services/workshop/agents/omp-agent/facade.ts +8 -8
  2048. package/server/services/workshop/agents/omp-agent/helpers.ts +37 -37
  2049. package/server/services/workshop/agents/omp-agent/index.ts +16 -16
  2050. package/server/services/workshop/agents/omp-agent/tools-steer.ts +100 -6
  2051. package/server/services/workshop/agents/omp-agent/types.ts +45 -45
  2052. package/server/services/workshop/agents/opencode-agent/core.ts +77 -77
  2053. package/server/services/workshop/agents/opencode-agent/facade.ts +8 -8
  2054. package/server/services/workshop/agents/opencode-agent/helpers.ts +29 -29
  2055. package/server/services/workshop/agents/opencode-agent/hitl.ts +113 -113
  2056. package/server/services/workshop/agents/opencode-agent/index.ts +16 -16
  2057. package/server/services/workshop/agents/opencode-agent/lifecycle.ts +44 -44
  2058. package/server/services/workshop/agents/opencode-agent/server.ts +244 -244
  2059. package/server/services/workshop/agents/opencode-agent/turn.ts +278 -278
  2060. package/server/services/workshop/agents/opencode-agent/types.ts +54 -54
  2061. package/server/services/workshop/agents/plugin-governance.ts +22 -2
  2062. package/server/services/workshop/agents/tool-classes.ts +56 -44
  2063. package/server/services/workshop/aml/action-coverage.ts +253 -0
  2064. package/server/services/workshop/aml/causal-claim.ts +68 -0
  2065. package/server/services/workshop/aml/clean.ts +120 -120
  2066. package/server/services/workshop/aml/dataset-builder.ts +23 -0
  2067. package/server/services/workshop/aml/entity.ts +367 -367
  2068. package/server/services/workshop/aml/env-lease.ts +178 -148
  2069. package/server/services/workshop/aml/gates.ts +45 -1
  2070. package/server/services/workshop/aml/identifiability.ts +335 -0
  2071. package/server/services/workshop/aml/intervention-ledger.ts +281 -0
  2072. package/server/services/workshop/aml/job-orchestrator/broadcast.ts +37 -37
  2073. package/server/services/workshop/aml/job-orchestrator/control.ts +94 -94
  2074. package/server/services/workshop/aml/job-orchestrator/failure.ts +96 -96
  2075. package/server/services/workshop/aml/job-orchestrator/index.ts +22 -22
  2076. package/server/services/workshop/aml/job-orchestrator/process.ts +101 -101
  2077. package/server/services/workshop/aml/job-orchestrator/shared.ts +53 -53
  2078. package/server/services/workshop/aml/job-orchestrator/status.ts +20 -20
  2079. package/server/services/workshop/aml/job-orchestrator/tick.ts +37 -37
  2080. package/server/services/workshop/aml/model-registry.ts +16 -2
  2081. package/server/services/workshop/aml/ontology-learning.ts +143 -0
  2082. package/server/services/workshop/aml/python/__pycache__/aml_eval.cpython-312.pyc +0 -0
  2083. package/server/services/workshop/aml/python/__pycache__/amlkit.cpython-312.pyc +0 -0
  2084. package/server/services/workshop/aml/python/__pycache__/train-example.cpython-312.pyc +0 -0
  2085. package/server/services/workshop/aml/python/__pycache__/train-hybrid-example.cpython-312.pyc +0 -0
  2086. package/server/services/workshop/aml/python/train-example.py +92 -92
  2087. package/server/services/workshop/aml/runtime.ts +137 -137
  2088. package/server/services/workshop/aml/stats.ts +140 -140
  2089. package/server/services/workshop/aml/twin/calibration-worker.ts +150 -150
  2090. package/server/services/workshop/aml/twin/cross-check.ts +176 -0
  2091. package/server/services/workshop/aml/twin/model-backed-provider.ts +332 -332
  2092. package/server/services/workshop/aml/twin/physics-spec-draft.ts +185 -185
  2093. package/server/services/workshop/aml/twin/prompt-composer.ts +143 -143
  2094. package/server/services/workshop/aml/twin/training-plans.ts +260 -260
  2095. package/server/services/workshop/aml/twin/write-guard.ts +19 -19
  2096. package/server/services/workshop/assets/character-asset.repo.ts +1 -1
  2097. package/server/services/workshop/assets/device-twin.repo.ts +1 -1
  2098. package/server/services/workshop/bench-mode.ts +22 -0
  2099. package/server/services/workshop/daq/alarm-notify.ts +122 -102
  2100. package/server/services/workshop/daq/daq-controller/contracts.ts +42 -39
  2101. package/server/services/workshop/daq/daq-controller/crud.ts +220 -210
  2102. package/server/services/workshop/daq/daq-controller/driver-probe.ts +68 -67
  2103. package/server/services/workshop/daq/daq-controller/facade.ts +28 -28
  2104. package/server/services/workshop/daq/daq-controller/frames.ts +138 -137
  2105. package/server/services/workshop/daq/daq-controller/helpers.ts +52 -52
  2106. package/server/services/workshop/daq/daq-controller/index.ts +22 -22
  2107. package/server/services/workshop/daq/daq-controller/push.ts +22 -0
  2108. package/server/services/workshop/daq/daq-controller/sweep-alarms.ts +214 -186
  2109. package/server/services/workshop/daq/daq-controller/types.ts +5 -0
  2110. package/server/services/workshop/daq/daq-node.ts +7 -0
  2111. package/server/services/workshop/daq/daq-templates.ts +235 -225
  2112. package/server/services/workshop/daq/drivers/mock.ts +130 -130
  2113. package/server/services/workshop/daq/drivers/modbus-rtu.ts +67 -67
  2114. package/server/services/workshop/daq/drivers/modbus-tcp.ts +321 -310
  2115. package/server/services/workshop/daq/drivers/mqtt.ts +28 -0
  2116. package/server/services/workshop/daq/drivers/opcua.ts +227 -227
  2117. package/server/services/workshop/daq/drivers/s7-stub.ts +29 -29
  2118. package/server/services/workshop/daq/drivers/shared.ts +6 -0
  2119. package/server/services/workshop/daq/field-group.ts +266 -0
  2120. package/server/services/workshop/daq/host-bindings.ts +71 -71
  2121. package/server/services/workshop/daq/host-ports.ts +65 -65
  2122. package/server/services/workshop/daq/infra-credentials.ts +201 -0
  2123. package/server/services/workshop/daq/infra.ts +250 -229
  2124. package/server/services/workshop/daq/ingest-policy.ts +80 -66
  2125. package/server/services/workshop/daq/objectstore/index.ts +88 -88
  2126. package/server/services/workshop/daq/storage/index.ts +157 -4
  2127. package/server/services/workshop/daq/storage/retention.ts +142 -0
  2128. package/server/services/workshop/daq/storage/sqlite.adapter.ts +16 -3
  2129. package/server/services/workshop/daq/storage/timescale-rollup.ts +600 -0
  2130. package/server/services/workshop/daq/storage/timescale.adapter.ts +46 -13
  2131. package/server/services/workshop/daq/storage/tsdb-port.ts +120 -0
  2132. package/server/services/workshop/db/aml-team-seeds.ts +118 -118
  2133. package/server/services/workshop/db/backup-registry.ts +33 -33
  2134. package/server/services/workshop/db/channel-member.repo.ts +122 -122
  2135. package/server/services/workshop/db/channel.repo.ts +203 -203
  2136. package/server/services/workshop/db/chat-message.repo.ts +261 -233
  2137. package/server/services/workshop/db/database/index.ts +18 -18
  2138. package/server/services/workshop/db/database/json.ts +14 -14
  2139. package/server/services/workshop/db/database/open.ts +8 -0
  2140. package/server/services/workshop/db/database/rows.ts +6 -1
  2141. package/server/services/workshop/db/database/schema.ts +46 -2
  2142. package/server/services/workshop/db/database/seed-data.ts +60 -60
  2143. package/server/services/workshop/db/database/seed.ts +6 -6
  2144. package/server/services/workshop/db/hitl-request.repo.ts +221 -221
  2145. package/server/services/workshop/db/message.repo.ts +10 -3
  2146. package/server/services/workshop/db/notification.repo.ts +199 -199
  2147. package/server/services/workshop/db/readonly.ts +30 -30
  2148. package/server/services/workshop/db/scheduled-task.repo.ts +235 -235
  2149. package/server/services/workshop/db/schema.sql +7 -0
  2150. package/server/services/workshop/db/task.repo.ts +8 -3
  2151. package/server/services/workshop/db/transaction.ts +72 -72
  2152. package/server/services/workshop/dcw/dcw-controller/actuation.ts +7 -0
  2153. package/server/services/workshop/dcw/dcw-controller/contracts.ts +16 -16
  2154. package/server/services/workshop/dcw/dcw-controller/control.ts +78 -78
  2155. package/server/services/workshop/dcw/dcw-controller/crud.ts +5 -0
  2156. package/server/services/workshop/dcw/dcw-controller/facade.ts +19 -19
  2157. package/server/services/workshop/dcw/dcw-controller/helpers.ts +62 -61
  2158. package/server/services/workshop/dcw/dcw-controller/index.ts +22 -22
  2159. package/server/services/workshop/dcw/dcw-controller/params.ts +97 -97
  2160. package/server/services/workshop/dcw/dcw-controller/products.ts +103 -103
  2161. package/server/services/workshop/dcw/dcw-controller/recipes.ts +14 -8
  2162. package/server/services/workshop/dcw/dcw-controller/state.ts +88 -71
  2163. package/server/services/workshop/dcw/dcw-controller/write-audit.ts +22 -2
  2164. package/server/services/workshop/dcw/dcw-controller/write.ts +225 -224
  2165. package/server/services/workshop/dcw/dcw-templates.ts +136 -136
  2166. package/server/services/workshop/dcw/drivers/mqtt.ts +4 -3
  2167. package/server/services/workshop/dcw/mqtt-payload.ts +64 -0
  2168. package/server/services/workshop/dcw/param-conversion.ts +78 -78
  2169. package/server/services/workshop/dcw/param-map.repo.ts +349 -349
  2170. package/server/services/workshop/dcw/plugin-bridge.ts +45 -45
  2171. package/server/services/workshop/dcw/recipe-rollback-manager/contracts.ts +26 -26
  2172. package/server/services/workshop/dcw/recipe-rollback-manager/facade.ts +13 -13
  2173. package/server/services/workshop/dcw/recipe-rollback-manager/helpers.ts +30 -30
  2174. package/server/services/workshop/dcw/recipe-rollback-manager/index.ts +17 -17
  2175. package/server/services/workshop/dcw/recipe-rollback-manager/internal.ts +33 -33
  2176. package/server/services/workshop/dcw/recipe-rollback-manager/judge.ts +52 -52
  2177. package/server/services/workshop/dcw/recipe-rollback-manager/lock.ts +138 -137
  2178. package/server/services/workshop/dcw/recipe-rollback-manager/state.ts +21 -21
  2179. package/server/services/workshop/dcw/recipe-rollback-manager/types.ts +3 -3
  2180. package/server/services/workshop/dcw/recipe-rollback-manager/views.ts +214 -214
  2181. package/server/services/workshop/eda/data-export.ts +275 -274
  2182. package/server/services/workshop/eda/template-repo.ts +101 -101
  2183. package/server/services/workshop/exp/exp-collector.ts +275 -275
  2184. package/server/services/workshop/exp/exp-state.repo.ts +339 -339
  2185. package/server/services/workshop/json-store.mjs +143 -137
  2186. package/server/services/workshop/line-scope.ts +80 -80
  2187. package/server/services/workshop/mes/mes-controller.ts +1164 -1164
  2188. package/server/services/workshop/mes/mes-hook.ts +594 -567
  2189. package/server/services/workshop/net/ssrf.ts +83 -74
  2190. package/server/services/workshop/ontology/subgraph.core.ts +300 -300
  2191. package/server/services/workshop/ontology/subgraph.service.ts +113 -113
  2192. package/server/services/workshop/ops/error-ledger.ts +209 -209
  2193. package/server/services/workshop/optimization/profile-adopt.service.ts +28 -2
  2194. package/server/services/workshop/optimization/python/.mimosa/hook-state/session_187ec97f45d4bd02369bbe94da527cf1.json +1 -0
  2195. package/server/services/workshop/optimization/python/.mimosa/hook-state/session_187ec97f45d4bd02369bbe94da527cf1.mvjqkcs6-68688-fb7131a89c.baseline/190a6772a4e43801737b4ba6072eb9d53d3099b5d8a9e6f57bc5e8592a26a6c4.source +274 -0
  2196. package/server/services/workshop/optimization/python/.mimosa/hook-status/session_187ec97f45d4bd02369bbe94da527cf1-01ed7f04fa.json +14 -0
  2197. package/server/services/workshop/optimization/python/__pycache__/problems.cpython-312.pyc +0 -0
  2198. package/server/services/workshop/plugins/host/api.mjs +90 -90
  2199. package/server/services/workshop/plugins/host/config.mjs +135 -135
  2200. package/server/services/workshop/plugins/host/index.mjs +23 -23
  2201. package/server/services/workshop/plugins/host/init.mjs +128 -109
  2202. package/server/services/workshop/plugins/host/reload.mjs +8 -1
  2203. package/server/services/workshop/plugins/host/rollback.mjs +72 -72
  2204. package/server/services/workshop/plugins/host/state.mjs +54 -54
  2205. package/server/services/workshop/plugins/host/toggle.mjs +64 -64
  2206. package/server/services/workshop/plugins/host.mjs +9 -9
  2207. package/server/services/workshop/process-model/experiment-runner.ts +393 -0
  2208. package/server/services/workshop/process-model/experiment.ts +25 -10
  2209. package/server/services/workshop/runtime/agent-runtime/facade.ts +7 -7
  2210. package/server/services/workshop/runtime/agent-runtime/harness-failure.ts +58 -0
  2211. package/server/services/workshop/runtime/agent-runtime/helpers.ts +18 -18
  2212. package/server/services/workshop/runtime/agent-runtime/index.ts +19 -19
  2213. package/server/services/workshop/runtime/agent-runtime/lifecycle.ts +160 -137
  2214. package/server/services/workshop/runtime/agent-runtime/message.ts +37 -2
  2215. package/server/services/workshop/runtime/agent-runtime/state.ts +18 -3
  2216. package/server/services/workshop/runtime/agent-runtime/types.ts +2 -0
  2217. package/server/services/workshop/runtime/channel-runtime.ts +80 -1
  2218. package/server/services/workshop/runtime/chat-mention.ts +164 -164
  2219. package/server/services/workshop/runtime/chat-projection.ts +246 -246
  2220. package/server/services/workshop/runtime/embedding-provider.ts +100 -83
  2221. package/server/services/workshop/runtime/execution-mode.ts +8 -0
  2222. package/server/services/workshop/runtime/manager/admin-agents.ts +268 -268
  2223. package/server/services/workshop/runtime/manager/admin-channel.ts +19 -14
  2224. package/server/services/workshop/runtime/manager/bus.ts +182 -182
  2225. package/server/services/workshop/runtime/manager/channel-template-constants.ts +20 -20
  2226. package/server/services/workshop/runtime/manager/chat-reply.ts +181 -181
  2227. package/server/services/workshop/runtime/manager/chat.ts +446 -386
  2228. package/server/services/workshop/runtime/manager/contracts.ts +7 -0
  2229. package/server/services/workshop/runtime/manager/facade.ts +24 -24
  2230. package/server/services/workshop/runtime/manager/helpers.ts +122 -119
  2231. package/server/services/workshop/runtime/manager/index.ts +42 -42
  2232. package/server/services/workshop/runtime/manager/internal.ts +73 -73
  2233. package/server/services/workshop/runtime/manager/notifications.ts +108 -108
  2234. package/server/services/workshop/runtime/manager/runtime-observe.ts +1 -3
  2235. package/server/services/workshop/runtime/manager/runtime-wiring.ts +18 -6
  2236. package/server/services/workshop/runtime/manager/schedules.ts +7 -0
  2237. package/server/services/workshop/runtime/manager/state.ts +14 -0
  2238. package/server/services/workshop/runtime/manager/tasks.ts +34 -1
  2239. package/server/services/workshop/runtime/manager/teams.ts +148 -148
  2240. package/server/services/workshop/runtime/manager/workspace.ts +1 -0
  2241. package/server/services/workshop/runtime/memory/contracts.ts +18 -18
  2242. package/server/services/workshop/runtime/memory/facade.ts +10 -10
  2243. package/server/services/workshop/runtime/memory/helpers.ts +196 -196
  2244. package/server/services/workshop/runtime/memory/index.ts +27 -27
  2245. package/server/services/workshop/runtime/memory/score.ts +33 -33
  2246. package/server/services/workshop/runtime/memory/state.ts +40 -40
  2247. package/server/services/workshop/runtime/monitor.ts +3 -3
  2248. package/server/services/workshop/runtime/platform-notice.ts +113 -113
  2249. package/server/services/workshop/runtime/schedule-runtime.ts +347 -347
  2250. package/server/services/workshop/runtime/scheduler-loop/contracts.ts +29 -29
  2251. package/server/services/workshop/runtime/scheduler-loop/facade.ts +7 -7
  2252. package/server/services/workshop/runtime/scheduler-loop/helpers.ts +14 -14
  2253. package/server/services/workshop/runtime/scheduler-loop/index.ts +16 -16
  2254. package/server/services/workshop/runtime/scheduler-loop/rules.ts +17 -1
  2255. package/server/services/workshop/runtime/scheduler-loop/tick.ts +31 -3
  2256. package/server/services/workshop/runtime/task-engine/create.ts +15 -1
  2257. package/server/services/workshop/runtime/task-engine/facade.ts +7 -7
  2258. package/server/services/workshop/runtime/task-engine/helpers.ts +2 -0
  2259. package/server/services/workshop/runtime/task-engine/index.ts +15 -15
  2260. package/server/services/workshop/runtime/task-engine/lifecycle.ts +68 -9
  2261. package/server/services/workshop/runtime/task-engine/types.ts +3 -3
  2262. package/server/services/workshop/runtime/user-notification-hub.ts +192 -192
  2263. package/server/services/workshop/settings.ts +39 -2
  2264. package/server/services/workshop/types/a2a.ts +16 -1
  2265. package/server/services/workshop/types/task.ts +2 -0
  2266. package/server/types/pg.d.ts +49 -49
  2267. package/server/utils/approval-gate.ts +67 -67
  2268. package/server/utils/asset-auth.ts +15 -0
  2269. package/server/utils/mojibake-guard.ts +29 -29
  2270. package/server/utils/request-ip.ts +29 -0
  2271. package/server/utils/response.ts +3 -6
  2272. package/server/utils/stability-severity.ts +77 -77
  2273. package/shared/config/groups.mjs +241 -241
  2274. package/shared/config/schema.json +173 -152
  2275. package/shared/daq-protocol.ts +8 -0
  2276. package/shared/dcw-protocol/catalog.ts +1 -0
  2277. package/shared/dcw-protocol/closed-loop.ts +4 -0
  2278. package/shared/lru.mjs +97 -97
  2279. package/tui/README.md +74 -74
  2280. package/tui/aw-tui.mjs +445 -445
  2281. package/tui/commands/index.mjs +287 -287
  2282. package/tui/components/chat-log.mjs +42 -42
  2283. package/tui/components/monitor-pane.mjs +39 -39
  2284. package/tui/components/root.mjs +53 -53
  2285. package/tui/components/status-bar.mjs +33 -33
  2286. package/tui/lib/api.mjs +82 -82
  2287. package/tui/lib/pickers.mjs +121 -121
  2288. package/tui/lib/reducers.mjs +218 -218
  2289. package/tui/lib/state.mjs +86 -86
  2290. package/tui/lib/virtual-terminal.mjs +48 -48
  2291. package/tui/lib/ws.mjs +125 -125
  2292. package/tui/theme.mjs +38 -38
  2293. package/.output/public/_nuxt/9Kt-rxrm.js +0 -1
  2294. package/.output/public/_nuxt/ATAvN55g.js +0 -1
  2295. package/.output/public/_nuxt/B3GEA4IW.js +0 -1
  2296. package/.output/public/_nuxt/B9qIhT7k2.js +0 -1
  2297. package/.output/public/_nuxt/BBTI9r9T2.js +0 -1
  2298. package/.output/public/_nuxt/BE9oKpOt.js +0 -1
  2299. package/.output/public/_nuxt/BHOjkDAJ.js +0 -21
  2300. package/.output/public/_nuxt/BTaGYNZF2.js +0 -1
  2301. package/.output/public/_nuxt/BXUDD9fv.js +0 -1
  2302. package/.output/public/_nuxt/BXbZ_hei.js +0 -1
  2303. package/.output/public/_nuxt/BaGy_jAI2.js +0 -1
  2304. package/.output/public/_nuxt/BdfAuX81.js +0 -1
  2305. package/.output/public/_nuxt/BoXKUOiN2.js +0 -1
  2306. package/.output/public/_nuxt/Buj_DMJ-.js +0 -1
  2307. package/.output/public/_nuxt/Bv7dyPx4.js +0 -1
  2308. package/.output/public/_nuxt/BvjY-Xks.js +0 -1
  2309. package/.output/public/_nuxt/BxC9PAu-2.js +0 -1
  2310. package/.output/public/_nuxt/Bzfzp9-f.js +0 -1
  2311. package/.output/public/_nuxt/CT4bi_Y4.js +0 -1
  2312. package/.output/public/_nuxt/CTGJHZ8X2.js +0 -1
  2313. package/.output/public/_nuxt/CWcaJnFp.js +0 -1
  2314. package/.output/public/_nuxt/CeCSjB9O2.js +0 -1
  2315. package/.output/public/_nuxt/CnoJJb7B.js +0 -1
  2316. package/.output/public/_nuxt/Crf8_Ad02.js +0 -1
  2317. package/.output/public/_nuxt/CtMTOx_-2.js +0 -1
  2318. package/.output/public/_nuxt/Cv9OcYm3.js +0 -1
  2319. package/.output/public/_nuxt/CxIF09Zj2.js +0 -1
  2320. package/.output/public/_nuxt/CxR0TyUA.js +0 -1
  2321. package/.output/public/_nuxt/D9tNM-1a.js +0 -9
  2322. package/.output/public/_nuxt/DL8QM0x5.js +0 -1
  2323. package/.output/public/_nuxt/DO9Y3eoU.js +0 -20
  2324. package/.output/public/_nuxt/DQLBGo6O.js +0 -1
  2325. package/.output/public/_nuxt/DSqQKrMK2.js +0 -1
  2326. package/.output/public/_nuxt/DXc4yISs.js +0 -47
  2327. package/.output/public/_nuxt/DXmEuVFQ2.js +0 -1
  2328. package/.output/public/_nuxt/DeXAMdSa2.js +0 -1
  2329. package/.output/public/_nuxt/DjjOAXrj2.js +0 -1
  2330. package/.output/public/_nuxt/DkRozlDP2.js +0 -1
  2331. package/.output/public/_nuxt/DoprKJ5a2.js +0 -1
  2332. package/.output/public/_nuxt/DvI5fMX12.js +0 -1
  2333. package/.output/public/_nuxt/DzWyfYJ12.js +0 -2
  2334. package/.output/public/_nuxt/EXs4hr_w2.js +0 -2
  2335. package/.output/public/_nuxt/K5Xen0wZ2.js +0 -1
  2336. package/.output/public/_nuxt/LS9Wa05P.js +0 -1
  2337. package/.output/public/_nuxt/MmlCf-EZ.js +0 -1
  2338. package/.output/public/_nuxt/OmpTerminalPanel.DMWgGwDs.css +0 -1
  2339. package/.output/public/_nuxt/PluginSlot.BqBzLD4T.css +0 -1
  2340. package/.output/public/_nuxt/TownView.DQaU1HuK.css +0 -1
  2341. package/.output/public/_nuxt/TugRY_4O.js +0 -1
  2342. package/.output/public/_nuxt/UgCvr7b2.js +0 -1
  2343. package/.output/public/_nuxt/WCG1-KXf2.js +0 -16
  2344. package/.output/public/_nuxt/WybiLTow2.js +0 -8
  2345. package/.output/public/_nuxt/YWsTLN5m.js +0 -1
  2346. package/.output/public/_nuxt/Zn0BZpf0.js +0 -3
  2347. package/.output/public/_nuxt/ZzOyoXex2.js +0 -1
  2348. package/.output/public/_nuxt/_id_.Be5JaH-P.css +0 -1
  2349. package/.output/public/_nuxt/_wsId_.DSOfdfx2.css +0 -1
  2350. package/.output/public/_nuxt/agents.CRomddYR.css +0 -1
  2351. package/.output/public/_nuxt/aml.DgOMpDpv.css +0 -1
  2352. package/.output/public/_nuxt/builds/meta/02ba4bc7-f353-4183-a619-716921b5f0dc.json +0 -1
  2353. package/.output/public/_nuxt/default.CpAx70gC.css +0 -1
  2354. package/.output/public/_nuxt/eNEgl-ZF.js +0 -1
  2355. package/.output/public/_nuxt/fJv3DH8b.js +0 -1
  2356. package/.output/public/_nuxt/hyLdZsOd2.js +0 -1
  2357. package/.output/public/_nuxt/logs.6VGjPS34.css +0 -1
  2358. package/.output/public/_nuxt/monitor.OoNTwfMJ.css +0 -1
  2359. package/.output/public/_nuxt/o8sYG6xx2.js +0 -1
  2360. package/.output/public/_nuxt/ontology.D4P756Tc.css +0 -1
  2361. package/.output/public/_nuxt/operations.C48ggFa5.css +0 -1
  2362. package/.output/public/_nuxt/pages.Dpa28tJW.css +0 -1
  2363. package/.output/public/_nuxt/permissions.CrV-4t-6.css +0 -1
  2364. package/.output/public/_nuxt/px0VQ09m.js +0 -2
  2365. package/.output/public/_nuxt/schedules.DYWOjGHm.css +0 -1
  2366. package/.output/public/_nuxt/teams.DEJoJ4QV.css +0 -1
  2367. package/.output/public/_nuxt/tokens.DKZWCP5v.css +0 -1
  2368. package/.output/public/_nuxt/tools.DP-nsTli.css +0 -1
  2369. package/.output/public/_nuxt/workshop.PT1xhP8C.css +0 -1
  2370. package/.output/server/chunks/_/AuthGate-G74Wr5IV.mjs +0 -716
  2371. package/.output/server/chunks/_/AuthGate-G74Wr5IV.mjs.map +0 -1
  2372. package/.output/server/chunks/_/FormItemContext-DmuQqaeJ.mjs +0 -72
  2373. package/.output/server/chunks/_/FormItemContext-DmuQqaeJ.mjs.map +0 -1
  2374. package/.output/server/chunks/_/OmpTerminalPanel-CVn7GF98.mjs +0 -942
  2375. package/.output/server/chunks/_/OmpTerminalPanel-CVn7GF98.mjs.map +0 -1
  2376. package/.output/server/chunks/_/PluginSlot-CZlGlRoR.mjs +0 -141
  2377. package/.output/server/chunks/_/PluginSlot-CZlGlRoR.mjs.map +0 -1
  2378. package/.output/server/chunks/_/TownView-CaxNtCrZ.mjs +0 -6496
  2379. package/.output/server/chunks/_/TownView-CaxNtCrZ.mjs.map +0 -1
  2380. package/.output/server/chunks/_/_id_-CvCH8aqA.mjs +0 -2045
  2381. package/.output/server/chunks/_/_id_-CvCH8aqA.mjs.map +0 -1
  2382. package/.output/server/chunks/_/_id_-X_k47fyM.mjs +0 -392
  2383. package/.output/server/chunks/_/_id_-X_k47fyM.mjs.map +0 -1
  2384. package/.output/server/chunks/_/_wsId_-CIXvt220.mjs +0 -14589
  2385. package/.output/server/chunks/_/_wsId_-CIXvt220.mjs.map +0 -1
  2386. package/.output/server/chunks/_/agents-Bipi0xxl.mjs +0 -1078
  2387. package/.output/server/chunks/_/agents-Bipi0xxl.mjs.map +0 -1
  2388. package/.output/server/chunks/_/alert-CNGhs--Y.mjs +0 -263
  2389. package/.output/server/chunks/_/alert-CNGhs--Y.mjs.map +0 -1
  2390. package/.output/server/chunks/_/aml-gCTIxLoE.mjs +0 -814
  2391. package/.output/server/chunks/_/aml-gCTIxLoE.mjs.map +0 -1
  2392. package/.output/server/chunks/_/analysis-BrSFajFi.mjs +0 -533
  2393. package/.output/server/chunks/_/analysis-BrSFajFi.mjs.map +0 -1
  2394. package/.output/server/chunks/_/api--f4L9O86.mjs +0 -64
  2395. package/.output/server/chunks/_/api--f4L9O86.mjs.map +0 -1
  2396. package/.output/server/chunks/_/api-CRGCw6io.mjs +0 -53
  2397. package/.output/server/chunks/_/api-CRGCw6io.mjs.map +0 -1
  2398. package/.output/server/chunks/_/api-DKutH26K.mjs +0 -72
  2399. package/.output/server/chunks/_/api-DKutH26K.mjs.map +0 -1
  2400. package/.output/server/chunks/_/api-error-BrL8jXVC.mjs +0 -47
  2401. package/.output/server/chunks/_/api-error-BrL8jXVC.mjs.map +0 -1
  2402. package/.output/server/chunks/_/apiClient-DrCvj3Zb.mjs +0 -81
  2403. package/.output/server/chunks/_/apiClient-DrCvj3Zb.mjs.map +0 -1
  2404. package/.output/server/chunks/_/board-DB55AvRS.mjs +0 -189
  2405. package/.output/server/chunks/_/board-DB55AvRS.mjs.map +0 -1
  2406. package/.output/server/chunks/_/builtin-catalog-edpDcgfL.mjs.map +0 -1
  2407. package/.output/server/chunks/_/card-BECE6y_G.mjs +0 -953
  2408. package/.output/server/chunks/_/card-BECE6y_G.mjs.map +0 -1
  2409. package/.output/server/chunks/_/channel-templates-C0Njk-Ir.mjs +0 -942
  2410. package/.output/server/chunks/_/channel-templates-C0Njk-Ir.mjs.map +0 -1
  2411. package/.output/server/chunks/_/chart-pipeline-BpoWYMK_.mjs.map +0 -1
  2412. package/.output/server/chunks/_/chart-trend-BWeZh5Lv.mjs.map +0 -1
  2413. package/.output/server/chunks/_/checkbox-C6xY5uc6.mjs +0 -439
  2414. package/.output/server/chunks/_/checkbox-C6xY5uc6.mjs.map +0 -1
  2415. package/.output/server/chunks/_/client-only-DQ6Q0w4J.mjs +0 -43
  2416. package/.output/server/chunks/_/client-only-DQ6Q0w4J.mjs.map +0 -1
  2417. package/.output/server/chunks/_/constants-HPHJvjne.mjs +0 -142
  2418. package/.output/server/chunks/_/constants-HPHJvjne.mjs.map +0 -1
  2419. package/.output/server/chunks/_/core-CRlsQhzd.mjs +0 -294
  2420. package/.output/server/chunks/_/core-CRlsQhzd.mjs.map +0 -1
  2421. package/.output/server/chunks/_/daq-VLM0Ud2Y.mjs +0 -1266
  2422. package/.output/server/chunks/_/daq-VLM0Ud2Y.mjs.map +0 -1
  2423. package/.output/server/chunks/_/data-Bgx_w04W.mjs +0 -481
  2424. package/.output/server/chunks/_/data-Bgx_w04W.mjs.map +0 -1
  2425. package/.output/server/chunks/_/dcw-BstEJzQ4.mjs +0 -505
  2426. package/.output/server/chunks/_/dcw-BstEJzQ4.mjs.map +0 -1
  2427. package/.output/server/chunks/_/dcw-driver-badge-Df5wL_ZA.mjs.map +0 -1
  2428. package/.output/server/chunks/_/default-Dmo-rt5V.mjs +0 -2353
  2429. package/.output/server/chunks/_/default-Dmo-rt5V.mjs.map +0 -1
  2430. package/.output/server/chunks/_/descriptions-B3uhDesi.mjs +0 -406
  2431. package/.output/server/chunks/_/descriptions-B3uhDesi.mjs.map +0 -1
  2432. package/.output/server/chunks/_/drawer-DwXxapMg.mjs +0 -834
  2433. package/.output/server/chunks/_/drawer-DwXxapMg.mjs.map +0 -1
  2434. package/.output/server/chunks/_/dropdown-DLrGy-Fs.mjs +0 -14
  2435. package/.output/server/chunks/_/dropdown-DLrGy-Fs.mjs.map +0 -1
  2436. package/.output/server/chunks/_/dropdown-nsGv8Gqx.mjs +0 -540
  2437. package/.output/server/chunks/_/dropdown-nsGv8Gqx.mjs.map +0 -1
  2438. package/.output/server/chunks/_/es-DXSEkmAm.mjs +0 -43
  2439. package/.output/server/chunks/_/es-DXSEkmAm.mjs.map +0 -1
  2440. package/.output/server/chunks/_/firstNotUndefined-laiThpLD.mjs +0 -2448
  2441. package/.output/server/chunks/_/firstNotUndefined-laiThpLD.mjs.map +0 -1
  2442. package/.output/server/chunks/_/form-Cw2Ex9w5.mjs +0 -4712
  2443. package/.output/server/chunks/_/form-Cw2Ex9w5.mjs.map +0 -1
  2444. package/.output/server/chunks/_/hasIn-RYRGomyg.mjs +0 -553
  2445. package/.output/server/chunks/_/hasIn-RYRGomyg.mjs.map +0 -1
  2446. package/.output/server/chunks/_/hitl-CQowkJ6s.mjs +0 -132
  2447. package/.output/server/chunks/_/hitl-CQowkJ6s.mjs.map +0 -1
  2448. package/.output/server/chunks/_/input-CJgB-RL6.mjs +0 -2181
  2449. package/.output/server/chunks/_/input-CJgB-RL6.mjs.map +0 -1
  2450. package/.output/server/chunks/_/input-number-CQKL42p_.mjs +0 -1120
  2451. package/.output/server/chunks/_/input-number-CQKL42p_.mjs.map +0 -1
  2452. package/.output/server/chunks/_/interval-CfceaI3F.mjs +0 -9
  2453. package/.output/server/chunks/_/interval-CfceaI3F.mjs.map +0 -1
  2454. package/.output/server/chunks/_/isNumeric-DQiJ-b15.mjs +0 -7
  2455. package/.output/server/chunks/_/isNumeric-DQiJ-b15.mjs.map +0 -1
  2456. package/.output/server/chunks/_/logs-Dt4ejjjU.mjs +0 -492
  2457. package/.output/server/chunks/_/logs-Dt4ejjjU.mjs.map +0 -1
  2458. package/.output/server/chunks/_/menu-xO8ocVtL.mjs +0 -1952
  2459. package/.output/server/chunks/_/menu-xO8ocVtL.mjs.map +0 -1
  2460. package/.output/server/chunks/_/monitor-vqmGVVN5.mjs +0 -2253
  2461. package/.output/server/chunks/_/monitor-vqmGVVN5.mjs.map +0 -1
  2462. package/.output/server/chunks/_/narrow-fetch-CcG-BPxc.mjs.map +0 -1
  2463. package/.output/server/chunks/_/ontology-ih0HgPpL.mjs +0 -1406
  2464. package/.output/server/chunks/_/ontology-ih0HgPpL.mjs.map +0 -1
  2465. package/.output/server/chunks/_/operations-BHmdVOUk.mjs +0 -311
  2466. package/.output/server/chunks/_/operations-BHmdVOUk.mjs.map +0 -1
  2467. package/.output/server/chunks/_/optimizer-DyvIYE4A.mjs +0 -202
  2468. package/.output/server/chunks/_/optimizer-DyvIYE4A.mjs.map +0 -1
  2469. package/.output/server/chunks/_/pages-C2KTn0U1.mjs +0 -542
  2470. package/.output/server/chunks/_/pages-C2KTn0U1.mjs.map +0 -1
  2471. package/.output/server/chunks/_/pagination-BTzq7dD5.mjs +0 -1346
  2472. package/.output/server/chunks/_/pagination-BTzq7dD5.mjs.map +0 -1
  2473. package/.output/server/chunks/_/permissions-BbTI02WI.mjs +0 -637
  2474. package/.output/server/chunks/_/permissions-BbTI02WI.mjs.map +0 -1
  2475. package/.output/server/chunks/_/pipeline-BgNjQ4J3.mjs +0 -212
  2476. package/.output/server/chunks/_/pipeline-BgNjQ4J3.mjs.map +0 -1
  2477. package/.output/server/chunks/_/plugins-CplEv3mY.mjs +0 -272
  2478. package/.output/server/chunks/_/plugins-CplEv3mY.mjs.map +0 -1
  2479. package/.output/server/chunks/_/popconfirm-DuGF7ty-.mjs +0 -340
  2480. package/.output/server/chunks/_/popconfirm-DuGF7ty-.mjs.map +0 -1
  2481. package/.output/server/chunks/_/responsiveObserve-CzRpNXkr.mjs +0 -78
  2482. package/.output/server/chunks/_/responsiveObserve-CzRpNXkr.mjs.map +0 -1
  2483. package/.output/server/chunks/_/schedules-BN4t_4PG.mjs +0 -7172
  2484. package/.output/server/chunks/_/schedules-BN4t_4PG.mjs.map +0 -1
  2485. package/.output/server/chunks/_/segmented-29uEKZ3D.mjs +0 -341
  2486. package/.output/server/chunks/_/segmented-29uEKZ3D.mjs.map +0 -1
  2487. package/.output/server/chunks/_/select-CJb2XrQf.mjs +0 -3923
  2488. package/.output/server/chunks/_/select-CJb2XrQf.mjs.map +0 -1
  2489. package/.output/server/chunks/_/settings-BQaAoT4q.mjs +0 -1014
  2490. package/.output/server/chunks/_/settings-BQaAoT4q.mjs.map +0 -1
  2491. package/.output/server/chunks/_/space-BByD-mFE.mjs +0 -110
  2492. package/.output/server/chunks/_/space-BByD-mFE.mjs.map +0 -1
  2493. package/.output/server/chunks/_/spin-XhbgGeLP.mjs +0 -357
  2494. package/.output/server/chunks/_/spin-XhbgGeLP.mjs.map +0 -1
  2495. package/.output/server/chunks/_/studio-D5r5Rzaq.mjs +0 -336
  2496. package/.output/server/chunks/_/studio-D5r5Rzaq.mjs.map +0 -1
  2497. package/.output/server/chunks/_/switch-DWcwVFxW.mjs +0 -377
  2498. package/.output/server/chunks/_/switch-DWcwVFxW.mjs.map +0 -1
  2499. package/.output/server/chunks/_/table-Zhuo7Fq-.mjs +0 -7546
  2500. package/.output/server/chunks/_/table-Zhuo7Fq-.mjs.map +0 -1
  2501. package/.output/server/chunks/_/tabs-BCwBXjNt.mjs +0 -1924
  2502. package/.output/server/chunks/_/tabs-BCwBXjNt.mjs.map +0 -1
  2503. package/.output/server/chunks/_/tag-CRW-anwy.mjs +0 -1156
  2504. package/.output/server/chunks/_/tag-CRW-anwy.mjs.map +0 -1
  2505. package/.output/server/chunks/_/teams-BUtsNTet.mjs +0 -1203
  2506. package/.output/server/chunks/_/teams-BUtsNTet.mjs.map +0 -1
  2507. package/.output/server/chunks/_/tokens-o8lT3x-p.mjs +0 -1062
  2508. package/.output/server/chunks/_/tokens-o8lT3x-p.mjs.map +0 -1
  2509. package/.output/server/chunks/_/tools-DRb5HTtU.mjs +0 -487
  2510. package/.output/server/chunks/_/tools-DRb5HTtU.mjs.map +0 -1
  2511. package/.output/server/chunks/_/tooltip-GlMrUZzx.mjs +0 -920
  2512. package/.output/server/chunks/_/tooltip-GlMrUZzx.mjs.map +0 -1
  2513. package/.output/server/chunks/_/town-BPA3G6yX.mjs +0 -133
  2514. package/.output/server/chunks/_/town-BPA3G6yX.mjs.map +0 -1
  2515. package/.output/server/chunks/_/town-BV-hbwb5.mjs +0 -75
  2516. package/.output/server/chunks/_/town-BV-hbwb5.mjs.map +0 -1
  2517. package/.output/server/chunks/_/types-D6J7slEa.mjs +0 -5565
  2518. package/.output/server/chunks/_/types-D6J7slEa.mjs.map +0 -1
  2519. package/.output/server/chunks/_/types-DWqIeMRP.mjs +0 -76
  2520. package/.output/server/chunks/_/types-DWqIeMRP.mjs.map +0 -1
  2521. package/.output/server/chunks/_/useAgentHarnessOptions-dDHiEoK2.mjs +0 -124
  2522. package/.output/server/chunks/_/useAgentHarnessOptions-dDHiEoK2.mjs.map +0 -1
  2523. package/.output/server/chunks/_/useAgentTemplateActions-S3dtH5UW.mjs +0 -77
  2524. package/.output/server/chunks/_/useAgentTemplateActions-S3dtH5UW.mjs.map +0 -1
  2525. package/.output/server/chunks/_/useAgentTemplateDialogState-CZzpu5og.mjs +0 -67
  2526. package/.output/server/chunks/_/useAgentTemplateDialogState-CZzpu5og.mjs.map +0 -1
  2527. package/.output/server/chunks/_/useAgentTemplateForm-D8gneIvd.mjs +0 -117
  2528. package/.output/server/chunks/_/useAgentTemplateForm-D8gneIvd.mjs.map +0 -1
  2529. package/.output/server/chunks/_/useAgentTemplatesCatalog-DHUpubKM.mjs +0 -133
  2530. package/.output/server/chunks/_/useAgentTemplatesCatalog-DHUpubKM.mjs.map +0 -1
  2531. package/.output/server/chunks/_/useAmlDatasets-CDg3Qbpv.mjs +0 -92
  2532. package/.output/server/chunks/_/useAmlDatasets-CDg3Qbpv.mjs.map +0 -1
  2533. package/.output/server/chunks/_/useAmlEntities-Bcaput4Y.mjs +0 -86
  2534. package/.output/server/chunks/_/useAmlEntities-Bcaput4Y.mjs.map +0 -1
  2535. package/.output/server/chunks/_/useAmlEnv-Dga_Nq6z.mjs +0 -194
  2536. package/.output/server/chunks/_/useAmlEnv-Dga_Nq6z.mjs.map +0 -1
  2537. package/.output/server/chunks/_/useAmlExperiments-CFngqLM3.mjs +0 -89
  2538. package/.output/server/chunks/_/useAmlExperiments-CFngqLM3.mjs.map +0 -1
  2539. package/.output/server/chunks/_/useAmlFormat-C2sl3MGB.mjs +0 -82
  2540. package/.output/server/chunks/_/useAmlFormat-C2sl3MGB.mjs.map +0 -1
  2541. package/.output/server/chunks/_/useAmlJobs-C7onZkcR.mjs +0 -267
  2542. package/.output/server/chunks/_/useAmlJobs-C7onZkcR.mjs.map +0 -1
  2543. package/.output/server/chunks/_/useAmlModels-B2b3mx4d.mjs +0 -93
  2544. package/.output/server/chunks/_/useAmlModels-B2b3mx4d.mjs.map +0 -1
  2545. package/.output/server/chunks/_/useAmlNotes-6gZX7tbx.mjs +0 -86
  2546. package/.output/server/chunks/_/useAmlNotes-6gZX7tbx.mjs.map +0 -1
  2547. package/.output/server/chunks/_/useAmlPredict-DwOmM2ke.mjs +0 -130
  2548. package/.output/server/chunks/_/useAmlPredict-DwOmM2ke.mjs.map +0 -1
  2549. package/.output/server/chunks/_/useAnalysisFeed-CpPsKh_I.mjs +0 -129
  2550. package/.output/server/chunks/_/useAnalysisFeed-CpPsKh_I.mjs.map +0 -1
  2551. package/.output/server/chunks/_/useDaqAddNode-QtJja03_.mjs +0 -142
  2552. package/.output/server/chunks/_/useDaqAddNode-QtJja03_.mjs.map +0 -1
  2553. package/.output/server/chunks/_/useDaqDetailBinding-Dd5c4bep.mjs +0 -70
  2554. package/.output/server/chunks/_/useDaqDetailBinding-Dd5c4bep.mjs.map +0 -1
  2555. package/.output/server/chunks/_/useDaqDetailFrames-C2gvrOr6.mjs +0 -79
  2556. package/.output/server/chunks/_/useDaqDetailFrames-C2gvrOr6.mjs.map +0 -1
  2557. package/.output/server/chunks/_/useDaqDetailHistory-Bhht_iFw.mjs +0 -176
  2558. package/.output/server/chunks/_/useDaqDetailHistory-Bhht_iFw.mjs.map +0 -1
  2559. package/.output/server/chunks/_/useDaqDetailNode-BayXtr5W.mjs +0 -99
  2560. package/.output/server/chunks/_/useDaqDetailNode-BayXtr5W.mjs.map +0 -1
  2561. package/.output/server/chunks/_/useDaqDetailParams-D8d1l3_R.mjs +0 -159
  2562. package/.output/server/chunks/_/useDaqDetailParams-D8d1l3_R.mjs.map +0 -1
  2563. package/.output/server/chunks/_/useDaqFilters-TYucwywj.mjs +0 -222
  2564. package/.output/server/chunks/_/useDaqFilters-TYucwywj.mjs.map +0 -1
  2565. package/.output/server/chunks/_/useDaqNodeWindow-1DWj2H5G.mjs +0 -90
  2566. package/.output/server/chunks/_/useDaqNodeWindow-1DWj2H5G.mjs.map +0 -1
  2567. package/.output/server/chunks/_/useDaqOptimizations-o5hubsm8.mjs +0 -136
  2568. package/.output/server/chunks/_/useDaqOptimizations-o5hubsm8.mjs.map +0 -1
  2569. package/.output/server/chunks/_/useDaqStream-BCTOU87S.mjs +0 -395
  2570. package/.output/server/chunks/_/useDaqStream-BCTOU87S.mjs.map +0 -1
  2571. package/.output/server/chunks/_/useDaqTemplates-Fj64LHfn.mjs +0 -187
  2572. package/.output/server/chunks/_/useDaqTemplates-Fj64LHfn.mjs.map +0 -1
  2573. package/.output/server/chunks/_/useDashboardCharts-D45083s_.mjs +0 -354
  2574. package/.output/server/chunks/_/useDashboardCharts-D45083s_.mjs.map +0 -1
  2575. package/.output/server/chunks/_/useDashboardData-Cm_-daeI.mjs +0 -153
  2576. package/.output/server/chunks/_/useDashboardData-Cm_-daeI.mjs.map +0 -1
  2577. package/.output/server/chunks/_/useDcwAddNode-DaqIQSXN.mjs +0 -219
  2578. package/.output/server/chunks/_/useDcwAddNode-DaqIQSXN.mjs.map +0 -1
  2579. package/.output/server/chunks/_/useDcwCards-OhzgHbAI.mjs +0 -67
  2580. package/.output/server/chunks/_/useDcwCards-OhzgHbAI.mjs.map +0 -1
  2581. package/.output/server/chunks/_/useDcwDetailScope-CaWcaiBg.mjs +0 -184
  2582. package/.output/server/chunks/_/useDcwDetailScope-CaWcaiBg.mjs.map +0 -1
  2583. package/.output/server/chunks/_/useDcwDetailTemplates-CrOgqQMX.mjs +0 -148
  2584. package/.output/server/chunks/_/useDcwDetailTemplates-CrOgqQMX.mjs.map +0 -1
  2585. package/.output/server/chunks/_/useDcwFilter-RH511Ra2.mjs +0 -71
  2586. package/.output/server/chunks/_/useDcwFilter-RH511Ra2.mjs.map +0 -1
  2587. package/.output/server/chunks/_/useDcwLedger-Dg61GD1J.mjs +0 -79
  2588. package/.output/server/chunks/_/useDcwLedger-Dg61GD1J.mjs.map +0 -1
  2589. package/.output/server/chunks/_/useDcwLineMutations-CiurWUFF.mjs +0 -137
  2590. package/.output/server/chunks/_/useDcwLineMutations-CiurWUFF.mjs.map +0 -1
  2591. package/.output/server/chunks/_/useDcwLineRun-DTSemEZb.mjs +0 -104
  2592. package/.output/server/chunks/_/useDcwLineRun-DTSemEZb.mjs.map +0 -1
  2593. package/.output/server/chunks/_/useDcwParamApprovals-DpnD-yw0.mjs +0 -121
  2594. package/.output/server/chunks/_/useDcwParamApprovals-DpnD-yw0.mjs.map +0 -1
  2595. package/.output/server/chunks/_/useDcwProducts-CRAl59cn.mjs +0 -93
  2596. package/.output/server/chunks/_/useDcwProducts-CRAl59cn.mjs.map +0 -1
  2597. package/.output/server/chunks/_/useDcwQuery-Cyh_iGa9.mjs +0 -98
  2598. package/.output/server/chunks/_/useDcwQuery-Cyh_iGa9.mjs.map +0 -1
  2599. package/.output/server/chunks/_/useDcwQuickActions-BW5-5HFn.mjs +0 -88
  2600. package/.output/server/chunks/_/useDcwQuickActions-BW5-5HFn.mjs.map +0 -1
  2601. package/.output/server/chunks/_/useDcwRecipes-Ct9bWJwP.mjs +0 -258
  2602. package/.output/server/chunks/_/useDcwRecipes-Ct9bWJwP.mjs.map +0 -1
  2603. package/.output/server/chunks/_/useDcwStream-BerzMqxo.mjs +0 -455
  2604. package/.output/server/chunks/_/useDcwStream-BerzMqxo.mjs.map +0 -1
  2605. package/.output/server/chunks/_/useDcwTemplates-PMVeSLNP.mjs +0 -91
  2606. package/.output/server/chunks/_/useDcwTemplates-PMVeSLNP.mjs.map +0 -1
  2607. package/.output/server/chunks/_/useDcwWrites-CND_sZdb.mjs +0 -140
  2608. package/.output/server/chunks/_/useDcwWrites-CND_sZdb.mjs.map +0 -1
  2609. package/.output/server/chunks/_/useDeviceTwins-FB6rTm-6.mjs +0 -128
  2610. package/.output/server/chunks/_/useDeviceTwins-FB6rTm-6.mjs.map +0 -1
  2611. package/.output/server/chunks/_/useExpConfirmations-b0bE75Yq.mjs +0 -107
  2612. package/.output/server/chunks/_/useExpConfirmations-b0bE75Yq.mjs.map +0 -1
  2613. package/.output/server/chunks/_/useLocalTime-BJ_4vg1E.mjs +0 -55
  2614. package/.output/server/chunks/_/useLocalTime-BJ_4vg1E.mjs.map +0 -1
  2615. package/.output/server/chunks/_/useLogsFormat-B-o4MHy7.mjs +0 -77
  2616. package/.output/server/chunks/_/useLogsFormat-B-o4MHy7.mjs.map +0 -1
  2617. package/.output/server/chunks/_/useLogsManual-Cxka55hz.mjs +0 -89
  2618. package/.output/server/chunks/_/useLogsManual-Cxka55hz.mjs.map +0 -1
  2619. package/.output/server/chunks/_/useLogsQuery-DxMHc7M4.mjs +0 -150
  2620. package/.output/server/chunks/_/useLogsQuery-DxMHc7M4.mjs.map +0 -1
  2621. package/.output/server/chunks/_/useLogsScope-HuOiW-OR.mjs +0 -83
  2622. package/.output/server/chunks/_/useLogsScope-HuOiW-OR.mjs.map +0 -1
  2623. package/.output/server/chunks/_/useMonitorColumns-vVnt3r5Q.mjs +0 -217
  2624. package/.output/server/chunks/_/useMonitorColumns-vVnt3r5Q.mjs.map +0 -1
  2625. package/.output/server/chunks/_/useMonitorData-Bf3w2khj.mjs +0 -135
  2626. package/.output/server/chunks/_/useMonitorData-Bf3w2khj.mjs.map +0 -1
  2627. package/.output/server/chunks/_/useMonitorFormat-DsiVqWoa.mjs +0 -91
  2628. package/.output/server/chunks/_/useMonitorFormat-DsiVqWoa.mjs.map +0 -1
  2629. package/.output/server/chunks/_/useMonitorTerminal-Dj4QwRNW.mjs +0 -71
  2630. package/.output/server/chunks/_/useMonitorTerminal-Dj4QwRNW.mjs.map +0 -1
  2631. package/.output/server/chunks/_/useOperationsFeed-Bg35fcgt.mjs +0 -195
  2632. package/.output/server/chunks/_/useOperationsFeed-Bg35fcgt.mjs.map +0 -1
  2633. package/.output/server/chunks/_/useOpsLog-BEzBrMf4.mjs +0 -149
  2634. package/.output/server/chunks/_/useOpsLog-BEzBrMf4.mjs.map +0 -1
  2635. package/.output/server/chunks/_/useRecipeDispatchApprovals-CZfcMRYk.mjs +0 -156
  2636. package/.output/server/chunks/_/useRecipeDispatchApprovals-CZfcMRYk.mjs.map +0 -1
  2637. package/.output/server/chunks/_/useResponsive-BKDMGTHs.mjs.map +0 -1
  2638. package/.output/server/chunks/_/useTeamActions-CmiuiQiG.mjs +0 -79
  2639. package/.output/server/chunks/_/useTeamActions-CmiuiQiG.mjs.map +0 -1
  2640. package/.output/server/chunks/_/useTeamAddMemberDialog-CMpzf0jO.mjs +0 -84
  2641. package/.output/server/chunks/_/useTeamAddMemberDialog-CMpzf0jO.mjs.map +0 -1
  2642. package/.output/server/chunks/_/useTeamCreateDialog-BnvjXWso.mjs +0 -97
  2643. package/.output/server/chunks/_/useTeamCreateDialog-BnvjXWso.mjs.map +0 -1
  2644. package/.output/server/chunks/_/useTeamDeployDialog-C0FOUYep.mjs +0 -80
  2645. package/.output/server/chunks/_/useTeamDeployDialog-C0FOUYep.mjs.map +0 -1
  2646. package/.output/server/chunks/_/useTeamDialogState-CFRUQxAf.mjs +0 -82
  2647. package/.output/server/chunks/_/useTeamDialogState-CFRUQxAf.mjs.map +0 -1
  2648. package/.output/server/chunks/_/useTeamPluginDialog-Do-07a47.mjs +0 -103
  2649. package/.output/server/chunks/_/useTeamPluginDialog-Do-07a47.mjs.map +0 -1
  2650. package/.output/server/chunks/_/useTeamsCatalog-ClG_gBI8.mjs +0 -123
  2651. package/.output/server/chunks/_/useTeamsCatalog-ClG_gBI8.mjs.map +0 -1
  2652. package/.output/server/chunks/_/useTokenClipboard-CwQpoFeP.mjs +0 -72
  2653. package/.output/server/chunks/_/useTokenClipboard-CwQpoFeP.mjs.map +0 -1
  2654. package/.output/server/chunks/_/useTokenCreate-C4g5eKd3.mjs +0 -115
  2655. package/.output/server/chunks/_/useTokenCreate-C4g5eKd3.mjs.map +0 -1
  2656. package/.output/server/chunks/_/useTokenRename-ClWrxpNk.mjs +0 -87
  2657. package/.output/server/chunks/_/useTokenRename-ClWrxpNk.mjs.map +0 -1
  2658. package/.output/server/chunks/_/useTokenReveal-C8n1Vt9t.mjs +0 -118
  2659. package/.output/server/chunks/_/useTokenReveal-C8n1Vt9t.mjs.map +0 -1
  2660. package/.output/server/chunks/_/useTokensList-CgiH2W1C.mjs +0 -92
  2661. package/.output/server/chunks/_/useTokensList-CgiH2W1C.mjs.map +0 -1
  2662. package/.output/server/chunks/_/useTownBus-D9SoIsAN.mjs.map +0 -1
  2663. package/.output/server/chunks/_/useWorkbenchAuth-DSstfK5Z.mjs +0 -141
  2664. package/.output/server/chunks/_/useWorkbenchAuth-DSstfK5Z.mjs.map +0 -1
  2665. package/.output/server/chunks/_/useWorkbenchWorkspaces-l_0SUOzn.mjs +0 -138
  2666. package/.output/server/chunks/_/useWorkbenchWorkspaces-l_0SUOzn.mjs.map +0 -1
  2667. package/.output/server/chunks/_/useWorkshopApi-Bqe2FlsB.mjs +0 -127
  2668. package/.output/server/chunks/_/useWorkshopApi-Bqe2FlsB.mjs.map +0 -1
  2669. package/.output/server/chunks/_/useWorkshopWs-DP4MbZsb.mjs +0 -1659
  2670. package/.output/server/chunks/_/useWorkshopWs-DP4MbZsb.mjs.map +0 -1
  2671. package/.output/server/chunks/_/useWorkspaceAuth-CzDigJGl.mjs +0 -60
  2672. package/.output/server/chunks/_/useWorkspaceAuth-CzDigJGl.mjs.map +0 -1
  2673. package/.output/server/chunks/_/useWorkspaceChannels-BLtsS6-m.mjs +0 -92
  2674. package/.output/server/chunks/_/useWorkspaceChannels-BLtsS6-m.mjs.map +0 -1
  2675. package/.output/server/chunks/_/useWorkspacePanels-CTwREmq0.mjs +0 -78
  2676. package/.output/server/chunks/_/useWorkspacePanels-CTwREmq0.mjs.map +0 -1
  2677. package/.output/server/chunks/_/useWorkspaceShell-rQHWNNWJ.mjs +0 -168
  2678. package/.output/server/chunks/_/useWorkspaceShell-rQHWNNWJ.mjs.map +0 -1
  2679. package/.output/server/chunks/_/users-BM1ZzxPp.mjs +0 -569
  2680. package/.output/server/chunks/_/users-BM1ZzxPp.mjs.map +0 -1
  2681. package/.output/server/chunks/_/workshop-CUXCV3RH.mjs +0 -546
  2682. package/.output/server/chunks/_/workshop-CUXCV3RH.mjs.map +0 -1
  2683. package/.output/server/chunks/_/workspaces-CmW0cpOt.mjs.map +0 -1
  2684. /package/.output/public/_nuxt/{6P4ZAzxa.js → 6P4ZAzxa2.js} +0 -0
  2685. /package/.output/public/_nuxt/{9j2J4k4w2.js → 9j2J4k4w.js} +0 -0
  2686. /package/.output/public/_nuxt/{BvRk9kiK2.js → DgrK8UCQ.js} +0 -0
  2687. /package/.output/public/_nuxt/{dVw8IHY6.js → dVw8IHY62.js} +0 -0
  2688. /package/.output/public/_nuxt/{k9b520K-2.js → k9b520K-.js} +0 -0
  2689. /package/.output/server/chunks/{_ → build}/builtin-catalog-edpDcgfL.mjs +0 -0
  2690. /package/.output/server/chunks/{_ → build}/chart-pipeline-BpoWYMK_.mjs +0 -0
  2691. /package/.output/server/chunks/{_ → build}/chart-trend-BWeZh5Lv.mjs +0 -0
  2692. /package/.output/server/chunks/{_ → build}/dcw-driver-badge-Df5wL_ZA.mjs +0 -0
  2693. /package/.output/server/chunks/{_ → build}/narrow-fetch-CcG-BPxc.mjs +0 -0
  2694. /package/.output/server/chunks/{_ → build}/useResponsive-BKDMGTHs.mjs +0 -0
  2695. /package/.output/server/chunks/{_ → build}/useTownBus-D9SoIsAN.mjs +0 -0
  2696. /package/.output/server/chunks/{_ → build}/workspaces-CmW0cpOt.mjs +0 -0
@@ -1,716 +1,716 @@
1
- # Workshop runtime audit — read-only, verified against current source
2
-
3
- Scope read COMPLETELY: `server/services/workshop/runtime/{manager,agent-runtime,task-engine,scheduler-loop,channel-runtime,monitor,mailbox,execution-mode,memory,embedding-provider}.ts`.
4
-
5
- **Correction to the brief:** `manager.ts` is **3016 lines** (`<path>…/manager.ts</path>` reported "End of file - total 3016 lines"), not ~2836. All line numbers below are from the current file.
6
-
7
- Verdicts use exactly two buckets: **BOUNDED** (eviction code shown) or **UNBOUNDED** (*"no eviction found"*).
8
-
9
- ---
10
-
11
- ## A. Unbounded in-memory state (P0/P1 leak class)
12
-
13
- ### A1. `ownerNameCache` — UNBOUNDED (no eviction found)
14
-
15
- Decl `manager.ts:229-230`:
16
- ```ts
17
- /** 全局用户名解析(带 60s 缓存;owner 归属呈现用,解析失败返回 null) */
18
- const ownerNameCache = new Map<string, { name: string | null, at: number }>()
19
- ```
20
- Read `manager.ts:232-233`:
21
- ```ts
22
- const hit = ownerNameCache.get(userId)
23
- if (hit && Date.now() - hit.at < 60_000) return hit.name
24
- ```
25
- Write `manager.ts:241`:
26
- ```ts
27
- ownerNameCache.set(userId, { name, at: Date.now() })
28
- ```
29
- Delete/evict sites: **none** (grep of `ownerNameCache` in the whole repo returns only lines 230/232/241). The 60 s TTL is a *freshness* check, not eviction — an expired entry is only ever overwritten if the same `userId` is looked up again. One entry per distinct userId ever resolved, forever. This is exactly what the in-repo design note says, `shared/lru.mjs:7-8`:
30
- ```
31
- * · `dcw-controller.ts` opsWriteMemo / `manager.ts` reflectCounts / ownerNameCache:
32
- * 完全无淘汰,长跑单调增长(ownerNameCache 有 TTL 判定但过期项只被覆盖、从不删除);
33
- ```
34
- **Verdict: still UNBOUNDED.** (The `LruMap` that would fix it exists at `shared/lru.mjs:14` but its only production use in the repo is `daq-controller.ts:677`.)
35
-
36
- ### A2. `reflectCounts` — UNBOUNDED (no eviction found)
37
-
38
- Decl `manager.ts:326-327`:
39
- ```ts
40
- /** 反思游标:每 agent 上次聚合的当月任务数(月度幂等增量判定) */
41
- private readonly reflectCounts = new Map<string, number>()
42
- ```
43
- Read `manager.ts:475`: `const prev = this.reflectCounts.get(agentId) ?? 0`
44
- Write `manager.ts:489`: `this.reflectCounts.set(agentId, rows.length)`
45
- Delete/evict: **none** (whole-repo grep: only 327/475/489). Keyed by `agentId` from `memories.listMemoryAgentIds()` (`manager.ts:471`); memory rows are deleted by maintenance (`memory.ts:650`, `661`) but the cursor entry is never removed. **Verdict: still UNBOUNDED.**
46
-
47
- ### A3. `lastToolInvokeAt` — UNBOUNDED (no eviction found)
48
-
49
- Decl `manager.ts:328-329`:
50
- ```ts
51
- /** agent 最近一次工具 invoke 时刻(调度器停滞看门狗的活性源;工具调用即健康推进) */
52
- private readonly lastToolInvokeAt = new Map<string, number>()
53
- ```
54
- Read `manager.ts:704`: `toolActivityOf: (agentId: string) => this.lastToolInvokeAt.get(agentId) ?? null,`
55
- Write `manager.ts:2757` (inside `invokeHostTool`, reachable from REST + the stdio MCP bridge + every host-tool call):
56
- ```ts
57
- this.lastToolInvokeAt.set(input.agentId, Date.now())
58
- ```
59
- Delete/evict: **none** (whole-repo grep: 329/704/2757). One entry per agentId that ever invoked a tool, forever — including agents whose runtimes were unloaded and members deleted. **Verdict: still UNBOUNDED.** (This one was *not* in the previous audit's four-Map list; the previous list is `PLAN-ARCH-AUDIT.md:88`.)
60
-
61
- ### A4. Manager runtime indexes — BOUNDED
62
-
63
- Decl `manager.ts:316-320`:
64
- ```ts
65
- export class AgentChannelManager {
66
- private channels = new Map<string, ChannelRuntime>()
67
- /** 键 = runtimeKey(channelId, 实例 id);每个实例一个独立运行时 */
68
- private agentIndex = new Map<string, AgentRuntime>()
69
- private buses = new Map<string, ChannelBus>()
70
- ```
71
- Eviction:
72
- - `manager.ts:737-741` (`stopAndDetach`): `this.agentIndex.delete(key)` … `this.channels.delete(channelId)` / `this.buses.delete(channelId)`
73
- - `manager.ts:1250-1256` (`unloadChannelAgents`), `manager.ts:1282-1286` (`removeChannel`), `manager.ts:993-995` (`shutdown`: `clear()`)
74
- **Verdict: BOUNDED** (bounded by live channels/agents).
75
-
76
- ### A5. Idle-sweeper `idleSince` (manager) — UNBOUNDED (no eviction for runtimes removed by other paths)
77
-
78
- Decl `manager.ts:767`: `const idleSince = new Map<string, number>()`
79
- Write `manager.ts:781-782`:
80
- ```ts
81
- const since = idleSince.get(key) ?? now
82
- idleSince.set(key, since)
83
- ```
84
- Delete `manager.ts:784` (`idleSince.delete(key)` right before unloading), `manager.ts:791` (`else { idleSince.delete(key) }`).
85
- There is **no** sweep of keys whose runtime has already left `agentIndex` through another path — `unloadChannelAgents` (`manager.ts:1243-1258`), `removeAgentFromChannel`→`stopAndDetach` (`manager.ts:1600`, `723-742`), `terminateRuntimeProcess` (`955-972`) never touch this closure. Such keys are never deleted because the loop that would delete them (`for (const rt of [...this.agentIndex.values()])`, `manager.ts:770`) never sees those runtimes again. Growth is one entry per (channel, agent) ever wired and non-gracefully-removed during the process lifetime. **Verdict: UNBOUNDED (no eviction found)** — low rate, but unbounded.
86
-
87
- ### A6. ChannelBus listener sets — BOUNDED
88
-
89
- Decl `manager.ts:495-500` (`eventListeners`, `taskListeners`, `agentListeners`, `messageListeners`, `memoryListeners`, `memberListeners`), add/remove pairs `513-516`, `527-530`, `541-544`, `555-558`, `569-572`, `583-586`. Every `subscribe*` returns the real unsubscriber (`manager.ts:593-627`), and the whole bus object is dropped with the channel (`739-741`). `monitor.ts:185-191` calls all three unsubscribers on `stop()`. **Verdict: BOUNDED.** (Caveat: a WS consumer that never unsubscribes pins the bus — `ws.ts` was out of scope; ⚠UNVERIFIED there.)
90
-
91
- ### A7. SchedulerLoop task-keyed maps/sets — BOUNDED (pruned every tick)
92
-
93
- Decls `scheduler-loop.ts:75-94`:
94
- ```ts
95
- /** 已催办一次的 WORKING 任务(再次停滞 → cancel) */
96
- private readonly notified = new Set<string>()
97
- /** WORKING 任务最近一次 progress 与时间(停滞检测) */
98
- private readonly lastProgress = new Map<string, { progress: number, at: number }>()
99
- private readonly progressSeen = new Map<string, { progress: number, at: number }>()
100
- /** goal 父任务「全部子任务 COMPLETED」首见时刻(宽限后规则引擎兜底收口) */
101
- private readonly goalAllDoneAt = new Map<string, number>()
102
- /** 成员空闲起始时间(最久空闲 worker 排序) */
103
- private readonly idleSince = new Map<string, number>()
104
- ...
105
- private readonly loopCompletedTaskIds = new Set<string>()
106
- ```
107
- Eviction code, every tick, `scheduler-loop.ts:196-208`:
108
- ```ts
109
- const liveIds = new Set(snapshot.tasks.map(t => t.id))
110
- for (const map of [this.progressSeen, this.lastProgress, this.goalAllDoneAt]) {
111
- for (const key of map.keys()) {
112
- if (!liveIds.has(key)) map.delete(key)
113
- }
114
- }
115
- for (const key of this.notified) {
116
- if (!liveIds.has(key)) this.notified.delete(key)
117
- }
118
- for (const key of this.loopCompletedTaskIds) {
119
- if (!liveIds.has(key)) this.loopCompletedTaskIds.delete(key)
120
- }
121
- ```
122
- plus `idleSince` pruned against live members in `refreshIdle`, `scheduler-loop.ts:708-720`, and `loopCompletedTaskIds.clear()` in `stop()` (`157`). **Verdict: BOUNDED.**
123
- Note: the comment at `scheduler-loop.ts:195-196` (`progressSeen 全程只增不减`) is **stale/wrong** — `progressSeen` is in the prune list.
124
-
125
- ### A8. `AgentRuntime.runErrorRetries` — UNBOUNDED (no eviction for ids never re-processed)
126
-
127
- Decl `agent-runtime.ts:173-174`:
128
- ```ts
129
- /** 回合失败重投计数(每消息;进程内存,重启由 resetConsuming 重新给机会) */
130
- private runErrorRetries = new Map<string, number>()
131
- ```
132
- Write `agent-runtime.ts:700-703`:
133
- ```ts
134
- if (sawRunError && !taskDone && (this.runErrorRetries.get(msg.messageId) ?? 0) < 2
135
- && this.deps.mailbox.requeue(msg.messageId)) {
136
- const attempt = (this.runErrorRetries.get(msg.messageId) ?? 0) + 1
137
- this.runErrorRetries.set(msg.messageId, attempt)
138
- ```
139
- Delete `agent-runtime.ts:719`: `this.runErrorRetries.delete(msg.messageId)` — only in the `else` branch of the *same* `finally`, i.e. only when that messageId reaches this runtime's `finally` again. If the re-queued message is instead claimed by a different owner (`Mailbox.claim` from `injectSteer` `agent-runtime.ts:276`, or `ackMailbox` `manager.ts:2853`) or the runtime stops (`stop()` closes the mailbox `359`; `consumeLoop` then breaks at `512-514`), the entry is never deleted. Keyed by messageId ⇒ grows with every failed-then-otherwise-consumed message. **Verdict: UNBOUNDED (no eviction found)** — small per-entry (string+int) but monotonic.
140
-
141
- ### A9. `Mailbox.arrivalCbs` — BOUNDED
142
-
143
- Decl `mailbox.ts:45-46`:
144
- ```ts
145
- /** 到信回调注册(poll_messages 长轮询即时唤醒;注册方自带注销句柄) */
146
- private arrivalCbs = new Set<() => void>()
147
- ```
148
- Add `mailbox.ts:85` (`this.arrivalCbs.add(cb)`), delete `mailbox.ts:86-88` (`return () => { this.arrivalCbs.delete(cb) }`); the only caller releases in a `finally`, `agent-runtime.ts:333-338`:
149
- ```ts
150
- const off = this.deps.mailbox.onArrival(() => resolve(undefined))
151
- const timer = setTimeout(() => resolve(undefined), 250)
152
- await promise
153
- clearTimeout(timer)
154
- off()
155
- ```
156
- **Verdict: BOUNDED.**
157
-
158
- ### A10. `monitor.ts` `events[]` — append-only, no cap (NOT production-reachable today)
159
-
160
- Decl `monitor.ts:82-84`:
161
- ```ts
162
- const events: MonitorEvent[] = []
163
- const listeners = new Set<(e: MonitorEvent) => void>()
164
- ```
165
- Write `monitor.ts:90-92`:
166
- ```ts
167
- const push = (e: MonitorEventInput): void => {
168
- const full = { ...e, seq: (seq += 1), at: new Date().toISOString() } as MonitorEvent
169
- events.push(full)
170
- ```
171
- Delete/trim: **none** — the array is append-only for the monitor's lifetime; `stop()` (`185-192`) only unsubscribes sources and does not clear `events`. Unbounded per monitor instance. **Verdict: UNBOUNDED (no eviction found)** — but whole-repo grep shows `monitorChannel(` is called only from `scripts/` (demo/e2e harnesses), never from `server/` production code, so this is a test-harness leak today. `listeners` is BOUNDED (unsubscriber at `139-142`).
172
-
173
- ### A11. Arrays written at runtime in the other 9 files
174
-
175
- All remaining arrays/maps in the audited files are **per-call locals** that die with the call, or bounded-by-construction:
176
- - `task-engine.ts:146-148` `queued`/`completed` locals; `task-engine.ts:412` `const history = [...task.history, event.status.message]` is a copy, and history is capped: `task-engine.ts:77-78` `/** 任务执行历史上限(applyEvent 整列重写模型下的写放大有界化) */ const TASK_HISTORY_CAP = 200` enforced at `413` (`history.splice(0, history.length - TASK_HISTORY_CAP)`) and `manager.ts:2294` (`.slice(-200)`).
177
- - `memory.ts:182` `rrf`, `210` `distByRowid`, `227` `hits`, `281-282` `lines`/`touched`, `306` `selectedTokens` — all function-local. Instance state is only `private sessionSeq = 0` (`memory.ts:455`, a number).
178
- - `channel-runtime.ts:28` `private agents = new Map<string, AgentRuntimeLike>()` — BOUNDED: deleted at `149` (`removeAgent`) and `154-156` (`detachAgent`).
179
- - `scheduler-loop.ts:383` `childrenByParent` local; `channel-runtime.ts:71`, `manager.ts:1703/1853`, `execution-mode.ts:92`, `memory.ts:102-103/464/493` — locals.
180
- - `manager.ts:227` `const KNOWN_HARNESSES = new Set(knownHarnesses())` — module-level but write-once.
181
- - `manager.ts:844/845/897/910/2320/2420/2624/2845/2904/2917`, `scheduler-loop.ts:197/322/444/637/708` — function-local projections.
182
-
183
- ### A12. `metricStates` / `twinPushAt` (previous audit's other two) — moved to delete-on-lifecycle, still not LRU
184
-
185
- Both live outside the 10 audited files (`server/services/workshop/daq/daq-controller.ts`):
186
- - `daq-controller.ts:136` `private metricStates = new Map<string, 'ok' | 'warn' | 'alarm'>()`, write `433` `this.metricStates.set(key, level)`; **delete added** at `daq-controller.ts:1027-1030`:
187
- ```ts
188
- const prefix = `${id}::`
189
- for (const key of this.metricStates.keys()) {
190
- if (key.startsWith(prefix)) this.metricStates.delete(key)
191
- }
192
- ```
193
- (inside `remove(id)` — DAQ node deletion, `1020`). So it is bounded by *node deletions happening*; it is **not** LRU-bounded, and an installation that creates nodes/metrics but never deletes them grows monotonically.
194
- - `daq-controller.ts:718` `private twinPushAt = new Map<string, number>()`, write `723`; **delete added** at `daq-controller.ts:1101-1102` inside `unbindDevice`: `this.twinPushAt.delete(deviceId)`.
195
- - Contrast: `daq-controller.ts:677` `private siblingsCache = new LruMap<string, { at: number, list: DaqNode[] }>(500)` — the only real LRU in production.
196
- **Verdict for the two:** delete-on-entity-removal added ⇒ *not* "completely unbounded" as the old audit (`PLAN-ARCH-AUDIT.md:88`) stated, but still not LRU-bounded. `reflectCounts`/`ownerNameCache` (+ `lastToolInvokeAt`) remain **UNBOUNDED**.
197
-
198
- ---
199
-
200
- ## B. Full-table scans / N+1 / absurd limits
201
-
202
- ### B1. Absurd `limit` values (biggest first)
203
-
204
- | value | site | evidence |
205
- |---|---|---|
206
- | `1_000_000` | `manager.ts:1489` | `const row = this.deps.repos.memories.listByAgentChannel(channelId, TEAM_AGENT_ID, 1_000_000).find(r => r.id === memoryId)` — pulls the entire team-memory table into JS to find one id |
207
- | `1_000_000` | `memory.ts:669` | `expireAndEvict(repo.listByAgentWithRowid(agentId, 1_000_000).filter(r => r.kind.startsWith('episodic')))` |
208
- | `1_000_000` | `memory.ts:673` | `expireAndEvict(repo.listByAgentWithRowid(TEAM_AGENT_ID, 1_000_000).filter(r => r.kind === 'episodic-team-task'))` |
209
- | `10_000` | `manager.ts:1552` | `const row = this.deps.repos.memories.listByAgent(targetAgentId, 10_000).find(r => r.id === memoryId && ...)` |
210
- | `1000` ×3 | `server/api/workshop/aml/index.get.ts:16-18` | `datasets: rt.repo.dataset.list({ limit: 1000 }).length,` / `models: rt.repo.model.list({ limit: 1000 }).length,` / `productions: rt.repo.model.list({ stage: 'production', limit: 1000 }).length,` — three full-ish table pulls whose only use is `.length` |
211
- | `5000` | `db/retention.ts:19,40` | `const BATCH = 5000` / ``DELETE FROM ${t.table} WHERE rowid IN (SELECT rowid FROM ${t.table} WHERE ${t.column} < ? LIMIT ${BATCH})`` |
212
- | `5000` | `db/channel-event.repo.ts:98`, `daq/storage/sqlite.adapter.ts:94` | `'DELETE FROM channel_events WHERE rowid IN (SELECT rowid FROM channel_events WHERE at < ? LIMIT 5000)'` |
213
- | `Number.POSITIVE_INFINITY` | `execution-mode.ts:69`, `scheduler-loop.ts:777` | `config.maxIterations = maxMatch ? parseInt(maxMatch[1]!, 10) : Number.POSITIVE_INFINITY` / `const maxIterations = modeInfo.config.maxIterations ?? Number.POSITIVE_INFINITY` |
214
- | 500 / 1000 | `ops-logs/index.get.ts:27` (`Math.min(500, …)`), `channels/[id]/events.get.ts:18` (`.max(1000)`) | request-surface caps, fine |
215
- | 500 / 300000 | `dcw/recipe-rollback-manager.ts:190,522,621`; `agents/dsh-agent.ts:64,150` (`contextWindow ?? 1_000_000`) | large but bounded |
216
-
217
- The former `limit=1_000_000` in the reflection path is **fixed**; the fix is documented in the code itself, `manager.ts:472-474`:
218
- ```ts
219
- // 条件下推到 SQL:原先拉 limit=1_000_000 全量再 JS filter,代价随记忆总量无上限增长。
220
- // 这里按 (agent, kind, 当月) 精确取行 —— 返回量与实际增量同阶,且内存不随历史膨胀。
221
- const rows = memories.listByAgentKindMonth(agentId, 'episodic-task', month)
222
- ```
223
- (`listByAgentKindMonth` exists at `db/memory.repo.ts:210`.)
224
-
225
- ### B2. Repository/DB queries issued INSIDE a loop
226
-
227
- 1. `manager.ts:1708-1728` — per-orphan loop calls `pickReceiverWorker`, which issues one `queueViewOf` **per candidate member per task**:
228
- ```ts
229
- for (const task of orphans) {
230
- if (task.state === 'SUBMITTED' || task.state === 'ASSIGNED') {
231
- const receiver = this.pickReceiverWorker(channelId, agentId)
232
- ```
233
- `manager.ts:1750-1756`:
234
- ```ts
235
- for (const m of candidates) {
236
- const len = this.getTaskEngine().queueViewOf(channelId, m.id).queued.length
237
- ```
238
- `queueViewOf` is a real query — `task-engine.ts:145` `const rows = this.repos.tasks.listByChannelAssigneeMeta(channelId, agentId)`. The same loop also calls `transition` (`manager.ts:1723`, `1725`), and `transition` itself queries, `task-engine.ts:347-350`:
239
- ```ts
240
- if (state === 'WORKING' && current !== 'WORKING') {
241
- const clash = this.repos.tasks
242
- .listByChannelAssignee(row.channelId, row.assigneeId)
243
- .find(r => r.id !== taskId && r.state === 'WORKING')
244
- ```
245
- 2. `manager.ts:1854-1861` — per-team-member loop with a write+queries inside:
246
- ```ts
247
- for (const m of members) {
248
- const inst = await this.addAgentToChannel({
249
- channelId: input.channelId,
250
- agentId: m.templateId,
251
- role: m.role === 'lead' ? 'lead' : 'worker',
252
- })
253
- ```
254
- 3. `manager.ts:1880-1882` — one `agents.findById` per team member, and `teamDetailOf` is itself called per team row by `listTeams`/`listTeamsVisibleTo` (`1773`, `1786`):
255
- ```ts
256
- members: members.map((m) => {
257
- const tpl = this.deps.repos.agents.findById(m.templateId)
258
- ```
259
- 4. `manager.ts:2625-2643` — per-other-channel full task fetch + team-memory count:
260
- ```ts
261
- return this.otherSameOwnerChannels(channelId).map((c) => {
262
- const tasks = this.deps.repos.tasks.listByChannel(c.id)
263
- const leadRow = c.leadAgentId ? this.deps.repos.channelAgents.findById(c.leadAgentId) : undefined
264
- ...
265
- sharedMemories: this.deps.repos.memories.countTeamShared(c.id),
266
- ```
267
- 5. `manager.ts:817-830` — `monitorRuntime`: `listByChannel(...).length` per wired channel (`822`) and `findByChannelAgent` per wired agent (`830`).
268
- 6. `manager.ts:910-927` — `monitorRuntimeForUser`: `this.deps.repos.channels.list()` runs **twice** (`912`, `916`), `listByChannel(row.id).length` runs inside the second loop (`921`), and `!channels.some(c => c.channelId === row.id)` (`917`) is an O(N²) scan:
269
- ```ts
270
- for (const row of this.deps.repos.channels.list()) {
271
- if (visibleChannels.has(row.id) && !channels.some(c => c.channelId === row.id)) {
272
- channels.push({
273
- ...
274
- memberCount: this.deps.repos.channelAgents.listByChannel(row.id).length,
275
- ```
276
- 7. `manager.ts:2421-2427` — `queueOverview`: `queueViewOf` per member (the un-wired branch):
277
- ```ts
278
- return this.deps.repos.channelAgents.listByChannel(channelId)
279
- .filter(m => m.enabled === 1)
280
- .map((m) => {
281
- const runtime = wired.get(m.id)
282
- if (runtime) return runtime.getStatus()
283
- const view = this.getTaskEngine().queueViewOf(channelId, m.id)
284
- ```
285
- 8. `memory.ts:668-674` — maintenance loop, one 1M-row pull per agent:
286
- ```ts
287
- for (const agentId of repo.listMemoryAgentIds()) {
288
- expireAndEvict(repo.listByAgentWithRowid(agentId, 1_000_000)
289
- .filter(r => r.kind.startsWith('episodic')))
290
- }
291
- ```
292
- 9. `scheduler-loop.ts:227-235` — per-decision `execute()` issues a channel-member query inside the decision loop (`578`, `601`):
293
- ```ts
294
- const decisions = await this.decide(snapshot)
295
- for (const decision of decisions) {
296
- try {
297
- this.execute(decision)
298
- ```
299
- ```ts
300
- const target = this.channelRuntime.listChannelAgents().find(a => a.agentId === decision.assigneeId)
301
- ```
302
- and `ChannelRuntime.listChannelAgents` queries (`channel-runtime.ts:46`) `this.deps.channelAgents.listByChannel(this.channelId)`.
303
- 10. `manager.ts:425` + `433-438` — `refreshChronicle` runs a **full channel task list with artifacts/history JSON parsing** on every terminal task event (the hook is registered for every bus at `manager.ts:391`):
304
- ```ts
305
- const terminal = this.getTaskEngine().list(channelId)
306
- .filter(t => TERMINAL_TASK_STATES[t.state])
307
- .sort((a, b) => (a.updatedAt < b.updatedAt ? 1 : -1))
308
- .slice(0, 12)
309
- ```
310
- (`TaskEngine.list` = `task-engine.ts:438-440` `this.repos.tasks.listByChannel(channelId).map(rowToTask)` — `rowToTask` parses both JSON columns.)
311
-
312
- ### B3. Full table fetched, then filtered in JS where the repo could filter
313
-
314
- - `manager.ts:1489` and `manager.ts:1552` (quoted in B1) — `.find(r => r.id === memoryId)` after pulling 1M / 10k rows.
315
- - `manager.ts:2075-2077` (`submitChannelTask` hot path) — whole channel task list with JSON parsing to look for a duplicate title:
316
- ```ts
317
- const duplicate = this.getTaskEngine().list(input.channelId).find(t =>
318
- t.title === input.title
319
- && t.state !== 'COMPLETED' && t.state !== 'FAILED' && t.state !== 'CANCELED')
320
- ```
321
- - `manager.ts:2155-2161` (`dispatchTask`) — same, per child dispatch, duplicating the cheaper check that `TaskEngine.dispatch` already does via an indexed child query (`task-engine.ts:297-300` `listChildrenMeta(parent.channelId, parent.id)`):
322
- ```ts
323
- const siblings = this.getTaskEngine().list(channelId).filter(t => t.parentId === input.parentTaskId)
324
- ```
325
- - `task-engine.ts:453-455` (`complete`) — full channel scan + JS filter:
326
- ```ts
327
- const children = this.repos.tasks
328
- .listByChannel(task.channelId)
329
- .filter(t => t.parentId === task.id)
330
- ```
331
- - `manager.ts:2874-2880` (`listChannelMail`) — filter by participant in JS after a limited fetch:
332
- ```ts
333
- const mails = this.deps.repos.messages
334
- .listRecentByChannel(channelId, limit)
335
- .map(rowToChannelMail)
336
- if (opts.agentId) {
337
- return mails.filter(m => m.fromAgentId === opts.agentId || m.toAgentId === opts.agentId)
338
- ```
339
- - `manager.ts:2254` `const members = this.deps.repos.channelAgents.listByChannel(channelId).filter(m => m.enabled === 1)`
340
- - `manager.ts:1704-1707` `listByChannelAssignee(channelId, agentId).map(rowToTask).filter(t => !TERMINAL_TASK_STATES[t.state])`
341
- - `manager.ts:2836-2839` `pollMailbox` — **no** SQL limit, then JS slice:
342
- ```ts
343
- return this.deps.repos.messages
344
- .listPendingByChannelAgent(channelId, callerAgentId)
345
- .slice(0, limit)
346
- ```
347
- - `manager.ts:2846-2848` `ackMailbox` — same unlimited pull: `this.deps.repos.messages.listPendingByChannelAgent(channelId, callerAgentId).map(r => r.id)`
348
- - `channel-runtime.ts:46-49` `this.deps.channelAgents.listByChannel(this.channelId).filter(m => m.enabled === 1)`
349
- - `channel-runtime.ts:184-187` `subscriptionRepo.listByTarget(...).map(s => s.agentId).filter(id => this.ensureAgent(id) !== undefined)` (filter forces lazy wiring per id)
350
- - `scheduler-loop.ts:278-285` — O(N²) nested scan, executed from `shouldSupervise` every tick:
351
- ```ts
352
- return snapshot.tasks.some((t) => {
353
- if (t.state !== 'WAITING') return false
354
- const children = snapshot.tasks.filter(c => c.parentId === t.id)
355
- ```
356
- - `memory.ts:489-492` `updateBrief` — two limited pulls + JS filter, on every task completion (`memory.ts:424`):
357
- ```ts
358
- const own = this.repo.listByAgentChannel(this.opts.channelId, this.opts.agentId, 40)
359
- .filter(r => r.kind === 'episodic-task')
360
- const shared = this.repo.listByAgentChannel(this.opts.channelId, TEAM_AGENT_ID, 40)
361
- .filter(r => r.kind === 'semantic')
362
- ```
363
-
364
- ---
365
-
366
- ## C. Read-path writes
367
-
368
- ### C1. `GET /api/workshop/channels/:id` boots runtimes and mutates the DB → **WRITE**
369
-
370
- `server/api/workshop/channels/[id]/index.get.ts:14-17`:
371
- ```ts
372
- const channel = await manager.getChannel(channelId)
373
- // 兜底:详情请求时确保 lead 的调度循环已装配(如启动恢复遗漏)
374
- ensureLeadSchedulerLoop(manager, channelId)
375
- return channel
376
- ```
377
- `server/plugins/workshop.ts:68-74`:
378
- ```ts
379
- export function ensureLeadSchedulerLoop(
380
- manager: AgentChannelManager,
381
- channelId: string,
382
- options?: { tickMs?: number, stallMs?: number },
383
- ): void {
384
- manager.ensureChannelActive(channelId, options)
385
- }
386
- ```
387
- `manager.ts:694-720` then wires and **starts** the lead: `const lead = this.ensureAgentRuntime(channelId, channel.leadAgentId)` (`699`), `runtime.start()` (`675`), `loop.start()` (`719`). Consequences of a pure GET: (a) an `implFactory` + `AgentRuntime.consumeLoop()` is started, which immediately dequeues and **claims** rows — `mailbox.ts:102` `if (!this.messageRepo.claim(row.id)) continue` → `message.repo.ts:39-41`,`110-112` `UPDATE messages SET state = 'consuming' WHERE id = ? AND state = 'pending'`; (b) the turn ends with `this.deps.mailbox.markConsumed(msg.messageId)` (`agent-runtime.ts:720`) → `message.repo.ts:42-44` `UPDATE messages SET state = 'consumed', consumed_at = ?`; (c) `processMessage` may `transition` the task (`agent-runtime.ts:549` → `task-engine.ts:355` `UPDATE`); (d) harness processes can be spawned. **A GET is a mutation endpoint.**
388
-
389
- ### C2. `GET /api/system/monitor` sweeps process/terminal registries → in-memory mutation
390
-
391
- `server/api/system/monitor.get.ts:12` `return getWorkshopManager().monitorRuntimeForUser(user)`; `manager.ts:894-895` `const snap = this.monitorRuntime()`; `manager.ts:814-816`:
392
- ```ts
393
- monitorRuntime(): RuntimeMonitorSnapshot {
394
- sweepHarnessProcesses()
395
- sweepTerminalSessions()
396
- ```
397
- Both delete entries: `agents/harness-process.ts:92-98` `if (!e.alive && e.exitedAt !== null && now - e.exitedAt > retentionMs) { registry.delete(pid) }`; `agents/harness-terminal.ts:469-478` `sessions.delete(pid)`. In-memory only — no DB/disk write — but it is a read endpoint performing state repair (and it also mutates the response objects it returns: `manager.ts:863-870` assigns `ownerUserId` onto the views).
398
-
399
- ### C3. `GET /api/workshop/workspaces` deletes rows → **DB WRITE**
400
-
401
- `server/api/workshop/workspaces/index.get.ts:10` `return getWorkshopManager().listWorkspaces(user.id)`; `manager.ts:1119-1131`:
402
- ```ts
403
- listWorkspaces(userId: string): Array<WorkspaceRow & { channelIds: string[] }> {
404
- return this.deps.repos.users.listWorkspaces(userId).map(ws => ({
405
- ...ws,
406
- // 挂载引用自愈:channel 删除(removeChannel)不级联清理 workspace_channels,
407
- // 死引用会让前端订阅永不到达(左栏"幽灵频道"+ 右栏空数据假象)——
408
- // 读取时过滤并顺手删除挂载行,历史脏数据随读取收敛
409
- channelIds: this.deps.repos.users.listMountedChannels(ws.id).filter((id) => {
410
- if (this.deps.repos.channels.findById(id)) return true
411
- this.deps.repos.users.unmountChannel(ws.id, id)
412
- return false
413
- }),
414
- ```
415
- `db/user.repo.ts:93-95`:
416
- ```ts
417
- unmountChannel(workspaceId: string, channelId: string): void {
418
- deleteMount.run(workspaceId, channelId)
419
- },
420
- ```
421
- A `DELETE` executed inside a `.filter()` callback of a GET.
422
-
423
- ### C4. `GET /api/workshop/users/me` reaches the same write
424
-
425
- `server/api/workshop/users/me.get.ts:20` `workspaces: manager.listWorkspaces(user.id).length,` → C3 path.
426
-
427
- ### C5. Read-shaped methods that write (`touch` = `UPDATE`)
428
-
429
- - `memory.ts:342-343` inside `recall()`: `for (const id of touched) this.repo.touch(id)`
430
- - `memory.ts:360` inside `recallRows()`: `for (const s of scored) this.repo.touch(s.row.id)`
431
- - `manager.ts:2670-2671` inside `recallOtherTeamsMemory` (surfaced by the `search_other_teams_memory` tool bridge `manager.ts:2719` and by REST):
432
- ```ts
433
- // 触摸命中行(access_count/last_accessed_at):与 recallRows 同信号,强化后续召回排序
434
- for (const r of rows) this.deps.repos.memories.touch(r.id)
435
- ```
436
- `db/memory.repo.ts:78-80` `UPDATE agent_memories SET access_count = access_count + 1, last_accessed_at = ? WHERE id = ?`.
437
- So `manager.searchAgentMemories` (`1433-1447`), `listMemories`… and everything behind `recall*` are read paths that write. (`recall`'s `touch:false` escape hatch exists — `agent-runtime.ts:458` — and `supervise` uses it.)
438
-
439
- ### C6. GET paths verified **purely read-only**
440
-
441
- - `server/api/workshop/runtime.get.ts:10` `return getWorkshopManager().runtimeStatus()` → `manager.ts:803-808` returns two derived arrays. Read-only.
442
- - `server/api/workshop/agents/index.get.ts:11` (`listAgentsVisibleTo`), `agents/[id].get.ts:14-18` (`getAgent` + `requireTemplateReadable`). Read-only.
443
- - `server/api/workshop/channels.get.ts:10` (`listChannelsForUser`). Read-only.
444
- - `server/api/workshop/channels/[id]/agents/index.get.ts:24-26` (`listChannels()` + `listChannelAgents`) — read-only (note: full `listChannels()` scan to find one id).
445
- - `server/api/workshop/channels/[id]/queue.get.ts:23` → `manager.ts:2417-2441` `queueOverview`; `requireMember` + reads. Read-only.
446
- - `server/api/workshop/channels/[id]/messages/index.get.ts:41` `listRecentByChannel(channelId, query.limit ?? 50)` — read-only.
447
- - `server/api/workshop/mailbox.get.ts:13` → `manager.ts:2834-2839` `pollMailbox` — the repo call is a pure `SELECT` (`db/message.repo.ts:91-98`); no claim/consume (deliberate: the file comment at `mailbox.get.ts:3` says `不改状态,消费由 AgentRuntime 循环完成`). Read-only.
448
- - `server/api/workshop/mailbox/all.get.ts:15` → `listChannelMail` (read-only).
449
- - `server/api/workshop/channels/[id]/tasks/index.get.ts:23` → `TaskEngine.list` — read-only (no limit; parses artifacts/history JSON for every task).
450
- - `server/api/workshop/channels/[id]/events.get.ts:37-43` (`listRecent`/`listBefore`/`count`/`maxSeq`) — read-only.
451
- - `server/api/workshop/channels/[id]/terminals.get.ts:20` (`listTerminalSessions`) — read-only in-memory.
452
- - `server/api/workshop/hitl/pending.get.ts:23-27` (`listChannelsForUser` + `getHitlRegistry().snapshot()`) — read-only.
453
- - `channels/[id]/memories/index.get.ts:27` (`listTeamMemories`), `channels/[id]/agents/[agentId]/memories/index.get.ts:28` (`listMemories`) — read-only (no touch).
454
- - `teams/*.get.ts`, `channel-templates/*.get.ts`, `permissions/index.get.ts`, `ops-logs/index.get.ts`, `dcw/*.get.ts` (verified `recipe-rollback-manager.ts:627-649 ledger()` and `652-654 journal()` are pure reads), `aml/*.get.ts`, `assets/*`, `daq/*.get.ts`, `device-twins/index.get.ts`, `agent-tools/*.get.ts`, `harnesses*.get.ts`, `plugins/*.get.ts` — no write verb found by grep of all `*.get.ts` under `server/api` for `update|delete|remove|insert|save|flush|prune|purge|gc|truncate|reset|migrate|reindex|refresh`, `.touch(|.upsert(|.claim(|markConsumed|.create(|.close(|writeFile|appendFile`; the only hits were the ones in C1–C4 plus in-memory `push`/`set` on locals.
455
-
456
- **Summary:** the GET surface contains exactly **one** DB-mutating endpoint (`channels/[id]/index.get.ts` → runtimes + message/task rows), **one** in-memory state-repair endpoint (`system/monitor.get.ts` → sweeps), and **two** DB-deleting endpoints (`workspaces/index.get.ts`, `users/me.get.ts` → `unmountChannel`).
457
-
458
- ---
459
-
460
- ## D. `manager.ts` responsibility map (3016 lines) + extraction seams
461
-
462
- ### D1. Section inventory (exact ranges)
463
-
464
- | lines | responsibility |
465
- |---|---|
466
- | 1-54 | file docblock + imports (logger, fs, crypto, sqlite, 15 repos, mailbox/runtime factories, harness registry, plugins, memory, settings) |
467
- | 55 | `const log = createLogger('workshop.manager')` |
468
- | 57-79 | DI contracts: `AllRepos` (12 repos), `ManagerDeps` |
469
- | 81-104 | auth principal `ActingUser` + `AgentTemplateDetail` DTO |
470
- | 106-145 | DTOs `AgentTeamDetail`, `ChannelTemplateDetail` |
471
- | 147-206 | row→DTO mappers: `instanceToAgentInfo`, `rowToTask`, `rowToChannelMail`, `buildMessage` |
472
- | 208-224 | `parseChannelLlm`, `runtimeKey` |
473
- | 226-243 | `KNOWN_HARNESSES`, module-level `ownerNameCache` + `resolveOwnerName` |
474
- | 245-314 | monitor view DTOs (`RuntimeChannelView`, `RuntimeAgentView`, `RuntimeProcessView`, `RuntimeMonitorSnapshot`) |
475
- | 316-330 | class fields (runtime indexes, timers, embedder, `reflectCounts`, `lastToolInvokeAt`) |
476
- | 331-349 | ctor: memory-maintenance interval + idle reflection timer |
477
- | 351-373 | `getTaskEngine` (lazy singleton + onTaskChange wiring) |
478
- | 375-394 | `ensureChannelRuntime` (creates ChannelRuntime + bus + team-task hook) |
479
- | 396-458 | team-history sinking: `recordTeamTaskTerminal`, `refreshChronicle` |
480
- | 460-492 | sleep-time reflection: `reflectIdleMemories` |
481
- | 494-591 | `buildBus` (6 typed listener registries + dispatchers) |
482
- | 593-627 | public subscription façade (agent status / events / tasks / messages / memory / member) |
483
- | 629-639 | private `notifyTask` / `notifyMember` |
484
- | 641-691 | runtime wiring: `wireMember`, `ensureAgentRuntime`, `runtimeOf` |
485
- | 693-720 | `ensureChannelActive` (lead wire + SchedulerLoop + loop-resubmit callback) |
486
- | 722-801 | lifecycle: `stopAndDetach`, `unloadAgent`, `unloadIdleAgents`, `startIdleSweeper` |
487
- | 803-808 | `runtimeStatus` |
488
- | 810-946 | monitoring: `monitorRuntime`, `monitorRuntimeForUser` |
489
- | 948-996 | process control: `terminateRuntimeProcess`, `killHarnessProcessByPid`, `shutdown` |
490
- | 998-1044 | `buildWorkspace` (the 25-method agent capability surface) |
491
- | 1046-1115 | user/auth surface: `registerUser`, `getUserByToken`, `requireOwned`, `requireWritable`, `requireTemplateReadable`, `getChannelForUser`, `listChannelsForUser` |
492
- | 1117-1163 | Workspace CRUD + mount/unmount |
493
- | 1165-1291 | Channel lifecycle: `createChannel`, `getChannel`, `updateChannel`, `unloadChannelAgents`, `updateChannelWorkspace`, `ensureWorkspaceDir`, `channelWorkspace`, `listChannels`, `removeChannel` |
494
- | 1293-1365 | Agent-template CRUD + `templateDetailOf` |
495
- | 1367-1418 | Channel-instance CRUD: `addAgentToChannel`, `listChannelAgents` |
496
- | 1420-1447 | memory read surface: `listMemories`, `searchAgentMemories` |
497
- | 1449-1497 | team shared-memory domain: `listTeamMemories`, `addTeamMemory`, `deleteTeamMemory`, `runMemoryMaintenanceNow` |
498
- | 1499-1556 | per-agent memory curation: `addAgentMemory`, `deleteAgentMemory` |
499
- | 1558-1616 | instance detail/update/remove: `getChannelAgent`, `updateChannelAgent`, `removeAgentFromChannel` |
500
- | 1618-1758 | lead self-service team mgmt: `createTeamMember`, `updateTeamMember`, `removeTeamMember`, `pickReceiverWorker` |
501
- | 1760-1893 | AgentTeam CRUD + `deployTeamToChannel` + `teamDetailOf` |
502
- | 1895-2041 | ChannelTemplate CRUD + `instantiateChannelTemplate` + `assertHarness` + `channelTemplateDetailOf` |
503
- | 2043-2120 | `submitChannelTask` (HITL task ingress) |
504
- | 2122-2204 | `dispatchTask` |
505
- | 2206-2270 | `refuseTask` |
506
- | 2272-2300 | `reportTask` |
507
- | 2302-2335 | `completeTask` |
508
- | 2337-2353 | `cancelTask` |
509
- | 2355-2378 | `stopAgentRuntime` (HITL) |
510
- | 2380-2399 | `retryTask` |
511
- | 2401-2414 | `listTasks`, `getTask`, `myQueue` |
512
- | 2416-2441 | `queueOverview` |
513
- | 2443-2476 | `updateTask`, `reassignTask` |
514
- | 2478-2498 | `sendA2A` |
515
- | 2500-2531 | `sendImmediateMessage` |
516
- | 2533-2605 | `sendCrossChannelMessage` |
517
- | 2607-2644 | `listOtherTeamsOverview` |
518
- | 2646-2689 | `recallOtherTeamsMemory` + `otherSameOwnerChannels` |
519
- | 2691-2738 | `invokeAgentWorkspaceTool` (collaboration tool bridge) |
520
- | 2740-2789 | `invokeHostTool` (plugin/impl/fallback dispatch + `lastToolInvokeAt`) |
521
- | 2791-2823 | `resolveAgentByToken`, `hostToolDefsFor`, `respondHarnessHitl` |
522
- | 2825-2893 | mailbox/mail REST surface: `waitMailbox`, `pollMailbox`, `ackMailbox`, `listChannelMail`, `subscribe`, `findByToken` |
523
- | 2895-2936 | `restore()` (crash recovery / redelivery) |
524
- | 2938-2999 | internal helpers: `route`, `wakeAgent`, `resolveMemberRef`, `resolveChannelMember`, `requireMember`, `requireTaskInScope` |
525
- | 3000-3016 | factory `createAgentChannelManager` + module singleton `initWorkshopManager`/`getWorkshopManagerOrNull` |
526
-
527
- ### D2. Proposed extraction seams (file → line range)
528
-
529
- 1. **`runtime/manager-dto.ts`** ← 57-314. `AllRepos`, `ManagerDeps`, `ActingUser`, all 4 detail DTOs + 4 monitor DTOs. Zero behaviour; pure types. Also move the mappers 147-224 here (or to `manager-mappers.ts`).
530
- 2. **`runtime/manager-auth.ts`** ← 1046-1115. `registerUser`, `getUserByToken`, `requireOwned`, `requireWritable`, `requireTemplateReadable`, `getChannelForUser`, `listChannelsForUser`. Pure guards; export a small `AuthService` taking `{ users, channels }`.
531
- 3. **`runtime/user-name-cache.ts`** ← 226-243. `ownerNameCache` + `resolveOwnerName` — and this is where the LRU fix (`shared/lru.mjs`) lands. Extracting it makes the leak a one-file change.
532
- 4. **`runtime/channel-lifecycle.ts`** ← 375-394 + 693-801 + 1165-1291 + 948-996. Everything that creates/stops/wires/unloads runtimes and channels (`ensureChannelRuntime`, `wireMember`, `ensureAgentRuntime`, `runtimeOf`, `ensureChannelActive`, `stopAndDetach`, `unloadAgent`, `unloadIdleAgents`, `startIdleSweeper`, `createChannel`…`removeChannel`, `terminateRuntimeProcess`, `killHarnessProcessByPid`, `shutdown`). This is the cluster that owns the `channels`/`agentIndex`/`buses` maps (317-320) — the maps must move with it.
533
- 5. **`runtime/channel-bus.ts`** ← 494-639. `buildBus` + subscription façade + private notify helpers. Self-contained (6 Sets, 1 dependency on `ChannelRuntime`).
534
- 6. **`runtime/runtime-monitor.ts`** ← 245-314 DTO part is in (1); move 803-946 here: `runtimeStatus`, `monitorRuntime`, `monitorRuntimeForUser`, plus the harness/terminal sweep calls (815-816). This also isolates the read-path mutation found in C2.
535
- 7. **`runtime/workspace-service.ts`** ← 1117-1163 (`listWorkspaces`…`unmountChannelFromWorkspace`), which also isolates the C3/C4 read-path DELETE.
536
- 8. **`runtime/agent-templates.ts`** ← 1293-1365 + 1367-1418 (`createAgent`…`removeAgent`, `templateDetailOf`, `addAgentToChannel`, `listChannelAgents`).
537
- 9. **`runtime/team-templates.ts`** ← 1760-1893 (`createTeam`…`deployTeamToChannel`, `teamDetailOf`) — the N+1 in D/B2-3 lives here.
538
- 10. **`runtime/channel-templates.ts`** ← 1895-2041 (`listChannelTemplatesVisibleTo`…`channelTemplateDetailOf`, `assertHarness`).
539
- 11. **`runtime/task-service.ts`** ← 2043-2476 (`submitChannelTask`…`reassignTask`), i.e. the whole agent-facing task作业面 + HITL stop/retry.
540
- 12. **`runtime/messaging.ts`** ← 2478-2689 (`sendA2A`, `sendImmediateMessage`, `sendCrossChannelMessage`, `listOtherTeamsOverview`, `recallOtherTeamsMemory`, `otherSameOwnerChannels`) + 2825-2893 (`waitMailbox`…`findByToken`) + `route`/`wakeAgent` (2938-2948).
541
- 13. **`runtime/memory-curation.ts`** ← 1420-1556 (`listMemories`…`deleteAgentMemory`, `runMemoryMaintenanceNow`) + 396-492 (`recordTeamTaskTerminal`, `refreshChronicle`, `reflectIdleMemories`) — the latter carries the `reflectCounts` leak, so it moves with the map.
542
- 14. **`runtime/host-tool-dispatch.ts`** ← 2691-2823 (`invokeAgentWorkspaceTool`, `invokeHostTool`, `resolveAgentByToken`, `hostToolDefsFor`, `respondHarnessHitl`) + 2791-2797; carries `lastToolInvokeAt` (2757).
543
- 15. **`runtime/member-resolution.ts`** ← 2938-2999 (`resolveMemberRef`, `resolveChannelMember`, `requireMember`, `requireTaskInScope`).
544
- 16. **`runtime/restore.ts`** ← 2895-2936 (`restore`) — depends on most of the above, so extract last.
545
- 17. Left in `manager.ts`: 1-55, 316-373 (class shell, fields, ctor timers, `getTaskEngine`), 998-1044 (`buildWorkspace` façade delegating to the extracted services), 3000-3016 (factory/singleton). Target size ≈ 250-350 lines.
546
-
547
- Ordering constraint: extract (1)(3)(5)(15) first (leaf, no behaviour), then (4)(6)(7)(8)(9)(10)(11)(12)(13)(14) behind the manager façade, then (2)(16). Nothing outside `server/`/`scripts/` imports internals except `server/api/workshop/channels/[id]/tasks/index.get.ts:15` and `[id]/messages/index.get.ts:27` and `a2a/[agentId]/rpc/index.post.ts:207` which reach through `manager as unknown as {...}` casts — those casts must be replaced by the new services' public methods.
548
-
549
- ---
550
-
551
- ## E. Correctness
552
-
553
- ### E1. Ids/names captured once and used after a reload/rename
554
-
555
- **E1a — rename/reconfigure while busy leaves a stale runtime (confirmed).**
556
- `manager.ts:1579-1581`:
557
- ```ts
558
- const updated = this.deps.repos.channelAgents.update(instanceId, patch)
559
- if (!updated) throw new AppError(404, 'NOT_FOUND', `实例不存在: ${instanceId}`)
560
- await this.unloadAgent(updated.channelId, instanceId)
561
- ```
562
- `manager.ts:745-756` returns early unless the runtime is idle with an empty mailbox:
563
- ```ts
564
- async unloadAgent(channelId: string, agentId: string): Promise<void> {
565
- const runtime = this.runtimeOf(channelId, agentId)
566
- if (!runtime) return
567
- if (runtime.getState() !== 'idle') return
568
- if (this.deps.repos.messages.listPendingByChannelAgent(channelId, agentId).length > 0) return
569
- ```
570
- But `AgentRuntime` froze identity at construction — `agent-runtime.ts:196-200`:
571
- ```ts
572
- this.agentId = agent.id
573
- this.role = agent.role
574
- this.channelId = agent.channelId
575
- this.name = agent.name
576
- ```
577
- and `name` is what `getStatus()` reports (`agent-runtime.ts:220`) and what the scheduler counts (`channel-runtime.ts:48`). So a **busy** member renamed via `PATCH` keeps the old name in every status frame until it happens to go idle; a member disabled (`enabled: 0`) while busy keeps running and keeps consuming its mailbox — `AgentRuntime` has no `enabled` re-check anywhere in `consumeLoop`/`processMessage` (there is none at `agent-runtime.ts:511-523` or `525-725`), so a "disabled" worker can still complete tasks. `removeAgentFromChannel` is different: it uses the forced path (`manager.ts:1600` `await this.stopAndDetach(channelId, instanceId)`).
578
- Also `config` (harness/model/cwd/scenarioPrompt) is baked into the impl at wire time — `manager.ts:653-666` — so a config patch without a successful unload never reaches the running harness.
579
-
580
- **E1b — `LoopController` replays a frozen title/description (confirmed).**
581
- `execution-mode.ts:119-126`:
582
- ```ts
583
- constructor(
584
- private readonly channelId: string,
585
- private readonly taskTitle: string,
586
- private readonly taskDescription: string,
587
- private readonly intervalMs: number,
588
- private readonly maxIterations: number,
589
- private readonly onResubmit: (title: string, description: string) => void,
590
- ) {}
591
- ```
592
- constructed from the *current* task at `scheduler-loop.ts:779-786` and replayed verbatim at `execution-mode.ts:134` `this.onResubmit(this.taskTitle, this.taskDescription)`. After `updateTask` (task-engine.ts:164-193) renames the loop task, every subsequent iteration recreates the OLD title. Worse: `submitChannelTask`'s duplicate guard (`manager.ts:2075-2080`, `409 TASK_DUPLICATE`) can reject the replay, and the callback only logs — `manager.ts:710-717`:
593
- ```ts
594
- loop.setLoopResubmitCallback((title, description) => {
595
- this.submitChannelTask({ channelId, title, description }).catch((err) => {
596
- // 清理竞态:channel 已删除/lead 已卸载时的到期重放 → 静默(NOT_FOUND 为预期)
597
- const code = (err as { code?: string }).code
598
- if (code === 'NOT_FOUND' || code === 'NO_LEAD_AGENT') return
599
- log.error(`[AgentChannelManager:${channelId}] loop 重新提交失败:`, err)
600
- ```
601
- `TASK_DUPLICATE` is not in the silent list ⇒ error log only; and because `LoopController.onTaskCompleted()` already incremented `iterations` and armed the timer (`execution-mode.ts:129-136`), no further completion event can re-arm it — the loop dies silently with no UI signal.
602
-
603
- **E1c — lead reference:** `scheduler-loop.ts:100-109` captures `private readonly lead: AgentRuntime`; correctly torn down for the lead in `manager.ts:728-731` (`if (runtime.role === 'lead' && cr) { cr.scheduler?.stop(); cr.scheduler = null }`). OK.
604
-
605
- **E1d — `Mailbox` files rows under `message.contextId`, not under its own channel (latent).**
606
- `mailbox.ts:60-72`:
607
- ```ts
608
- enqueue(message: A2AMessage): void {
609
- if (this.closed) return
610
- this.messageRepo.create({
611
- // 保留发送方 messageId 作为落库 id:API 返回的 messageId 才能与历史/状态一致关联
612
- id: message.messageId,
613
- channelId: message.contextId,
614
- ```
615
- while dequeue can only ever see its own channel — `mailbox.ts:98` `const row = this.messageRepo.firstPendingByChannelAgent(this.channelId, this.agentId)`. Any caller that routes a message whose `contextId` ≠ the target channel silently writes an unreachable pending row (the channel guard `channel-runtime.ts:98-123` does not check `contextId`). All in-file call sites build the message with the routed channel (`manager.ts:2109`, `2190`, `2486`, `2525`, `2585`; `scheduler-loop.ts:653-662`), so this is latent, not observed. ⚠
616
-
617
- **E1e — mitigations that exist:** `resolveMemberRef` (`manager.ts:2956-2976`) resolves stale/renamed references by instance id → template id → case-insensitive name → unique substring, and on failure returns the whole roster in the error so the LLM can self-correct. `taskIdOf` (`agent-runtime.ts:785-787`) accepts `msg.taskId ?? metadata['x-aw-task-id']`. `channel-runtime.ts:164` re-resolves the target through `ensureAgent` on every route (so a deleted target fails loudly instead of silently).
618
-
619
- **E1f — fan-out shares one messageId as a PRIMARY KEY (latent).** `channel-runtime.ts:71-80`:
620
- ```ts
621
- const delivered: string[] = []
622
- for (const agentId of this.resolveRecipients(message)) {
623
- const agent = this.ensureAgent(agentId)
624
- if (!agent) continue
625
- agent.enqueue(message)
626
- ```
627
- with `mailbox.ts:64` `id: message.messageId` and `db/database.ts:63-64` `CREATE TABLE IF NOT EXISTS messages ( id TEXT PRIMARY KEY,`. `resolveRecipients` returns more than one id only in its broadcast/subscription branches — `channel-runtime.ts:180-187`:
628
- ```ts
629
- if (sender == null) {
630
- // 广播仅覆盖已装配的成员(不触发全量懒加载,避免广播唤醒整个 channel)
631
- return [...this.agents.keys()]
632
- }
633
- return this.deps.subscriptionRepo
634
- .listByTarget(this.channelId, sender as string)
635
- .map(s => s.agentId)
636
- ```
637
- Every `route()` caller in the repo sets `x-aw-target-agent` or `x-aw-task-kind` (grep of `route(`: `manager.ts:2111/2196/2266/2493/2526/2595`, `scheduler-loop.ts:663`, `channel-runtime.ts:65`), and the `broadcast_message` tool deliberately loops with a fresh message per recipient (`host-tool-bridge.ts:462-470`). **⚠UNVERIFIED reachability: no current caller reaches the multi-recipient branch**, so this is a latent UNIQUE-constraint failure, not an observed one.
638
-
639
- ### E2. Message ordering / races
640
-
641
- - **FIFO is real and deterministic:** `db/message.repo.ts:31-38` orders by `createdAt ASC, rowid ASC` with a `LIMIT 1` head query, and the atomic claim (`110-112`) is a single conditional UPDATE, so two consumers cannot both take the head (`mailbox.ts:100-103`).
642
- - **Gate race handled explicitly** — `mailbox.ts:95-104` takes the gate reference *before* the query, with a 15 s self-healing fallback (`105-109`).
643
- - **Scheduler tick vs. lead message arrival: serialized.** `scheduler-loop.ts:170` `await this.lead.withExecLock(() => this.tickRound())` and `agent-runtime.ts:517` `await this.withExecLock(() => this.processMessage(msg))` share the same promise-chain lock (`agent-runtime.ts:493-508`), so a scheduler round and a lead turn cannot interleave. Wake-ups during a round are coalesced, not lost (`scheduler-loop.ts:124-132`, `176-186`).
644
- - **Race 1 (ordering):** `injectSteer` claims a message that need not be the queue head and pushes it into the *running* turn — `agent-runtime.ts:276` `if (!this.deps.mailbox.claim(message.messageId)) return`, then `294` `this.impl.steer(...)`. A later-arriving immediate human message can therefore be seen before earlier pending peer messages. Narrowed deliberately to human urgent sends only (`268-274`).
645
- - **Race 2 (double delivery):** `peek`/`waitPending` never claim — `mailbox.ts:119-121` `return this.messageRepo.listPendingByChannelAgent(...).map(rowToMessage)`; `agent-runtime.ts:331` `const msgs = await this.deps.mailbox.peek(limit)`; the ack is deferred to the tool (`host-tool-bridge.ts:404-408`) or `manager.ts:2853`. In the window between peeking and acking, `Mailbox.dequeue` can claim the same row (`mailbox.ts:102`), so the agent processes it as a run *in addition to* having received it as a poll result. The later `ackMailbox` claim then fails (`manager.ts:2853` guards on `claim`) so it is not consumed twice at the DB level, but read/processed ordering is not guaranteed.
646
- - **Race 3 (TOCTOU on the snapshot):** `tickRound` collects the snapshot at `scheduler-loop.ts:193` and executes decisions at `228-235` against that stale view. Guards exist per decision kind — dispatch/reassign re-verify the target (`578-582`, `601-605`), complete is idempotent (`624-627`) — and residual `AppError`s are swallowed by the per-decision `catch` at `229-234` (`log.error(... 执行决策失败 ...)`).
647
- - **Race 4 (cancel vs. just-finished turn):** `scheduler-loop.ts:610-618` cancels then aborts the assignee (`if (assignee && assignee.getState() === 'busy') assignee.abortCurrent()`), which can abort a turn that just produced its deliverable; mitigated at the event level by the terminal-state guard `task-engine.ts:369-371` and at the task level by `agent-runtime.ts:625` (`after.state === 'WORKING'` re-check).
648
- - **Recovery ordering:** `restore()` resets `consuming → pending` first (`manager.ts:2902`), then computes parent ids from all tasks of active channels (`2917-2922`) before re-delivering leaf assigns (`2923-2928`) and waking pending targets (`2933-2935`). Consistent.
649
-
650
- ### E3. Timeout / retry logic
651
-
652
- - **No timeout in the runtime core for a task turn.** `agent-runtime.ts:580` consumes the stream with no deadline: `for await (const event of this.impl.run(request, ctx)) {`.
653
- - **Timeouts that do exist, all impl-level:**
654
- - omp turn idle watchdog default 600 s — `agents/omp-agent.ts:834-838`: `// 停滞看门狗:整轮无任何 omp 事件(挂死的 LLM 调用/子进程僵死)时中止回合` / `const idleTimeoutMs = this.config.promptTimeoutMs ?? 600_000`.
655
- - supervise turn timeout 150 s — `agents/omp-agent.ts:575-576`: `const timeoutMs = this.config.superviseTimeoutMs ?? 150_000`.
656
- - a2a RPC task wait 30 s — `a2a/[agentId]/rpc/index.post.ts:229-238` (`waitTerminal(..., timeoutMs = 30_000)`).
657
- - embeddings: 10 s request timeout, 3 failures → 10 min breaker — `embedding-provider.ts:16-18`.
658
- - `poll_messages` wait clamped to 180 s — `host-tool-bridge.ts:395` `const waitSec = Math.min(180, Math.max(0, Number(args.wait_seconds ?? 0) || 0))`.
659
- - **Retry ladder:** per-message re-queue ≤ 2 (`agent-runtime.ts:700-708`); task-level reassign while `retryCount < 3` (`scheduler-loop.ts:415-433`); `mailbox.dequeue` re-check every 15 s (`mailbox.ts:105-109`); `waitPending` re-check every 250 ms (`agent-runtime.ts:335`).
660
- - **Loop mode has no global iteration cap:** `scheduler-loop.ts:776-777`:
661
- ```ts
662
- const intervalMs = Math.min(86_400_000, Math.max(100, Math.floor(modeInfo.config.intervalMs ?? 60_000)))
663
- const maxIterations = modeInfo.config.maxIterations ?? Number.POSITIVE_INFINITY
664
- ```
665
- (`[max:N]` is only emitted when explicitly present, `execution-mode.ts:96-99`, clamped to ≤10 000.)
666
- - **Watchdog cannot reclaim a busy agent.** `scheduler-loop.ts:459-478` only sends one notification, with the rationale in `441-443`: `是否 cancel 由 lead(supervise)判断,规则引擎对 busy 不强制取消 —— 只留可见信号,不做破坏性动作。` If `lead.supervise === null` (`scheduler-loop.ts:260` `if (this.lead.supervise === null) return false`), nothing ever cancels a busy task: the WORKING task and its runtime persist indefinitely (an unbounded resource hold by design).
667
- - **Watchdog grace windows:** `stallMs` default `300000` (`scheduler-loop.ts:106`), goal close-out `goalGraceMs = 45_000` (`85`), close-out supervise cooldown 30 s (`266`), idle backoff cap `IDLE_TICK_CAP_MS = 8000` (`60`).
668
-
669
- ### E4. Error propagation to the UI — swallowed catches (verbatim)
670
-
671
- - `scheduler-loop.ts:644` `void this.lead.recordTaskMemory(completed).catch(() => {})` — terminal memory harvest failure is invisible.
672
- - `agent-runtime.ts:764-772` (`maybePostSettle`) ends with `.catch(() => {})` (`771`) — compaction failures never surface.
673
- - `manager.ts:1478`, `manager.ts:1521`, `manager.ts:1540` — three `.catch(() => {})` on `vectorizeMemory` / shared-memory saves; the memory may silently stay FTS-only.
674
- - `memory.ts:223` `catch { /* 向量不可用退化为 FTS */ }`; `memory.ts:612` `catch { /* 向量化失败留 FTS */ }`; `memory.ts:679` `catch { /* vec 未启用 */ }`.
675
- - `mailbox.ts:74-79`:
676
- ```ts
677
- for (const cb of this.arrivalCbs) {
678
- try {
679
- cb()
680
- }
681
- catch { /* 回调异常不阻断投递 */ }
682
- }
683
- ```
684
- - `manager.ts:213-219` (`parseChannelLlm`) and `manager.ts:235-240` (`resolveOwnerName`) are bare `catch { … return null }` — a corrupted `llm_json` silently degrades to "no channel default model", with no log at all.
685
- - **Fire-and-forget member management** — the lead's own team-management decisions never report failure back to the lead or the UI; `scheduler-loop.ts:668-698`:
686
- ```ts
687
- void ws.createTeamMember({ ... }).catch((err) => {
688
- log.error(`[SchedulerLoop:${this.lead.agentId}] spawn_agent 决策执行失败:`, err)
689
- })
690
- ```
691
- (same shape at `688-690` for `update_agent`, `695-697` for `remove_agent`). Contrast: errors on the `route()`/task paths *are* surfaced — e.g. `manager.ts:2494-2496` throws `502 DELIVERY_FAILED`, and turn failures emit a user-visible status event at `agent-runtime.ts:704-716` (`消息 … 回合失败,已重投信箱待重试(第 N 次)`).
692
- - `manager.ts:785-787` — idle-sweeper unload failures only `log.error` (no event, no UI).
693
-
694
- ### E5. Concurrent session limits — **none for agent runtime**
695
-
696
- There is no cap on the number of wired `AgentRuntime`s, hence none on concurrent agent turns or harness processes:
697
- - `manager.ts:666-676` (`wireMember`) creates and starts unconditionally:
698
- ```ts
699
- const runtime = new AgentRuntime(agent, this.deps.implFactory(agentWithCtx), { ... })
700
- cr.addAgent(runtime)
701
- this.agentIndex.set(runtimeKey(m.channelId, agent.id), runtime)
702
- runtime.start()
703
- ```
704
- - `manager.ts:679-687` (`ensureAgentRuntime`) wires on demand with no ceiling, and `createTeamMember` explicitly wires a new member at creation time (`manager.ts:1662` `this.ensureAgentRuntime(channelId, member.id)`).
705
- - The only reclamation is the idle sweeper (`manager.ts:764-801`) with defaults `intervalMs ?? 60_000`, `graceMs ?? 120_000` (`765-766`), driven by settings at `plugins/workshop.ts:163-165`; and it refuses to unload anything busy or with pending mail (`745-754`).
706
- - Per runtime, turns are serialized by `execLock` (`agent-runtime.ts:493-508`) and the single-consumer loop (`511-523`) — so the concurrency equals *the number of wired agents across all channels*, unbounded.
707
- - The only concurrency limiter in the whole server is for AML jobs, not agents: `settings.ts:228` `maxConcurrent: Number(get('job.maxConcurrent', 2)),`, enforced at `aml/job-orchestrator.ts:257` `if (st.running.size >= Math.max(1, s.job.maxConcurrent)) return`. Nothing analogous exists for `AgentChannelManager`.
708
-
709
- ---
710
-
711
- ## Verification gaps (explicit)
712
-
713
- - `⚠UNVERIFIED` — whether `implFactory` (`manager.ts:666`) spawns an OS process eagerly at wire time or only on the first `run`; the implementations are outside the audited file set.
714
- - `⚠UNVERIFIED` — whether any WebSocket consumer (`server/api/workshop/ws.ts`, out of scope) can leak bus listeners; the audit only established that `manager.subscribe*` returns genuine unsubscribers (`manager.ts:593-627`).
715
- - `⚠UNVERIFIED` — reachability of the multi-recipient `route()` branch that would collide on `messages.id PRIMARY KEY` (E1f). Structural only.
716
- - `⚠UNVERIFIED` — behaviour of `dcw`/`daq`/`aml` GET endpoints beyond the grep evidence quoted in C6; they were not read line-by-line.
1
+ # Workshop runtime audit — read-only, verified against current source
2
+
3
+ Scope read COMPLETELY: `server/services/workshop/runtime/{manager,agent-runtime,task-engine,scheduler-loop,channel-runtime,monitor,mailbox,execution-mode,memory,embedding-provider}.ts`.
4
+
5
+ **Correction to the brief:** `manager.ts` is **3016 lines** (`<path>…/manager.ts</path>` reported "End of file - total 3016 lines"), not ~2836. All line numbers below are from the current file.
6
+
7
+ Verdicts use exactly two buckets: **BOUNDED** (eviction code shown) or **UNBOUNDED** (*"no eviction found"*).
8
+
9
+ ---
10
+
11
+ ## A. Unbounded in-memory state (P0/P1 leak class)
12
+
13
+ ### A1. `ownerNameCache` — UNBOUNDED (no eviction found)
14
+
15
+ Decl `manager.ts:229-230`:
16
+ ```ts
17
+ /** 全局用户名解析(带 60s 缓存;owner 归属呈现用,解析失败返回 null) */
18
+ const ownerNameCache = new Map<string, { name: string | null, at: number }>()
19
+ ```
20
+ Read `manager.ts:232-233`:
21
+ ```ts
22
+ const hit = ownerNameCache.get(userId)
23
+ if (hit && Date.now() - hit.at < 60_000) return hit.name
24
+ ```
25
+ Write `manager.ts:241`:
26
+ ```ts
27
+ ownerNameCache.set(userId, { name, at: Date.now() })
28
+ ```
29
+ Delete/evict sites: **none** (grep of `ownerNameCache` in the whole repo returns only lines 230/232/241). The 60 s TTL is a *freshness* check, not eviction — an expired entry is only ever overwritten if the same `userId` is looked up again. One entry per distinct userId ever resolved, forever. This is exactly what the in-repo design note says, `shared/lru.mjs:7-8`:
30
+ ```
31
+ * · `dcw-controller.ts` opsWriteMemo / `manager.ts` reflectCounts / ownerNameCache:
32
+ * 完全无淘汰,长跑单调增长(ownerNameCache 有 TTL 判定但过期项只被覆盖、从不删除);
33
+ ```
34
+ **Verdict: still UNBOUNDED.** (The `LruMap` that would fix it exists at `shared/lru.mjs:14` but its only production use in the repo is `daq-controller.ts:677`.)
35
+
36
+ ### A2. `reflectCounts` — UNBOUNDED (no eviction found)
37
+
38
+ Decl `manager.ts:326-327`:
39
+ ```ts
40
+ /** 反思游标:每 agent 上次聚合的当月任务数(月度幂等增量判定) */
41
+ private readonly reflectCounts = new Map<string, number>()
42
+ ```
43
+ Read `manager.ts:475`: `const prev = this.reflectCounts.get(agentId) ?? 0`
44
+ Write `manager.ts:489`: `this.reflectCounts.set(agentId, rows.length)`
45
+ Delete/evict: **none** (whole-repo grep: only 327/475/489). Keyed by `agentId` from `memories.listMemoryAgentIds()` (`manager.ts:471`); memory rows are deleted by maintenance (`memory.ts:650`, `661`) but the cursor entry is never removed. **Verdict: still UNBOUNDED.**
46
+
47
+ ### A3. `lastToolInvokeAt` — UNBOUNDED (no eviction found)
48
+
49
+ Decl `manager.ts:328-329`:
50
+ ```ts
51
+ /** agent 最近一次工具 invoke 时刻(调度器停滞看门狗的活性源;工具调用即健康推进) */
52
+ private readonly lastToolInvokeAt = new Map<string, number>()
53
+ ```
54
+ Read `manager.ts:704`: `toolActivityOf: (agentId: string) => this.lastToolInvokeAt.get(agentId) ?? null,`
55
+ Write `manager.ts:2757` (inside `invokeHostTool`, reachable from REST + the stdio MCP bridge + every host-tool call):
56
+ ```ts
57
+ this.lastToolInvokeAt.set(input.agentId, Date.now())
58
+ ```
59
+ Delete/evict: **none** (whole-repo grep: 329/704/2757). One entry per agentId that ever invoked a tool, forever — including agents whose runtimes were unloaded and members deleted. **Verdict: still UNBOUNDED.** (This one was *not* in the previous audit's four-Map list; the previous list is `PLAN-ARCH-AUDIT.md:88`.)
60
+
61
+ ### A4. Manager runtime indexes — BOUNDED
62
+
63
+ Decl `manager.ts:316-320`:
64
+ ```ts
65
+ export class AgentChannelManager {
66
+ private channels = new Map<string, ChannelRuntime>()
67
+ /** 键 = runtimeKey(channelId, 实例 id);每个实例一个独立运行时 */
68
+ private agentIndex = new Map<string, AgentRuntime>()
69
+ private buses = new Map<string, ChannelBus>()
70
+ ```
71
+ Eviction:
72
+ - `manager.ts:737-741` (`stopAndDetach`): `this.agentIndex.delete(key)` … `this.channels.delete(channelId)` / `this.buses.delete(channelId)`
73
+ - `manager.ts:1250-1256` (`unloadChannelAgents`), `manager.ts:1282-1286` (`removeChannel`), `manager.ts:993-995` (`shutdown`: `clear()`)
74
+ **Verdict: BOUNDED** (bounded by live channels/agents).
75
+
76
+ ### A5. Idle-sweeper `idleSince` (manager) — UNBOUNDED (no eviction for runtimes removed by other paths)
77
+
78
+ Decl `manager.ts:767`: `const idleSince = new Map<string, number>()`
79
+ Write `manager.ts:781-782`:
80
+ ```ts
81
+ const since = idleSince.get(key) ?? now
82
+ idleSince.set(key, since)
83
+ ```
84
+ Delete `manager.ts:784` (`idleSince.delete(key)` right before unloading), `manager.ts:791` (`else { idleSince.delete(key) }`).
85
+ There is **no** sweep of keys whose runtime has already left `agentIndex` through another path — `unloadChannelAgents` (`manager.ts:1243-1258`), `removeAgentFromChannel`→`stopAndDetach` (`manager.ts:1600`, `723-742`), `terminateRuntimeProcess` (`955-972`) never touch this closure. Such keys are never deleted because the loop that would delete them (`for (const rt of [...this.agentIndex.values()])`, `manager.ts:770`) never sees those runtimes again. Growth is one entry per (channel, agent) ever wired and non-gracefully-removed during the process lifetime. **Verdict: UNBOUNDED (no eviction found)** — low rate, but unbounded.
86
+
87
+ ### A6. ChannelBus listener sets — BOUNDED
88
+
89
+ Decl `manager.ts:495-500` (`eventListeners`, `taskListeners`, `agentListeners`, `messageListeners`, `memoryListeners`, `memberListeners`), add/remove pairs `513-516`, `527-530`, `541-544`, `555-558`, `569-572`, `583-586`. Every `subscribe*` returns the real unsubscriber (`manager.ts:593-627`), and the whole bus object is dropped with the channel (`739-741`). `monitor.ts:185-191` calls all three unsubscribers on `stop()`. **Verdict: BOUNDED.** (Caveat: a WS consumer that never unsubscribes pins the bus — `ws.ts` was out of scope; ⚠UNVERIFIED there.)
90
+
91
+ ### A7. SchedulerLoop task-keyed maps/sets — BOUNDED (pruned every tick)
92
+
93
+ Decls `scheduler-loop.ts:75-94`:
94
+ ```ts
95
+ /** 已催办一次的 WORKING 任务(再次停滞 → cancel) */
96
+ private readonly notified = new Set<string>()
97
+ /** WORKING 任务最近一次 progress 与时间(停滞检测) */
98
+ private readonly lastProgress = new Map<string, { progress: number, at: number }>()
99
+ private readonly progressSeen = new Map<string, { progress: number, at: number }>()
100
+ /** goal 父任务「全部子任务 COMPLETED」首见时刻(宽限后规则引擎兜底收口) */
101
+ private readonly goalAllDoneAt = new Map<string, number>()
102
+ /** 成员空闲起始时间(最久空闲 worker 排序) */
103
+ private readonly idleSince = new Map<string, number>()
104
+ ...
105
+ private readonly loopCompletedTaskIds = new Set<string>()
106
+ ```
107
+ Eviction code, every tick, `scheduler-loop.ts:196-208`:
108
+ ```ts
109
+ const liveIds = new Set(snapshot.tasks.map(t => t.id))
110
+ for (const map of [this.progressSeen, this.lastProgress, this.goalAllDoneAt]) {
111
+ for (const key of map.keys()) {
112
+ if (!liveIds.has(key)) map.delete(key)
113
+ }
114
+ }
115
+ for (const key of this.notified) {
116
+ if (!liveIds.has(key)) this.notified.delete(key)
117
+ }
118
+ for (const key of this.loopCompletedTaskIds) {
119
+ if (!liveIds.has(key)) this.loopCompletedTaskIds.delete(key)
120
+ }
121
+ ```
122
+ plus `idleSince` pruned against live members in `refreshIdle`, `scheduler-loop.ts:708-720`, and `loopCompletedTaskIds.clear()` in `stop()` (`157`). **Verdict: BOUNDED.**
123
+ Note: the comment at `scheduler-loop.ts:195-196` (`progressSeen 全程只增不减`) is **stale/wrong** — `progressSeen` is in the prune list.
124
+
125
+ ### A8. `AgentRuntime.runErrorRetries` — UNBOUNDED (no eviction for ids never re-processed)
126
+
127
+ Decl `agent-runtime.ts:173-174`:
128
+ ```ts
129
+ /** 回合失败重投计数(每消息;进程内存,重启由 resetConsuming 重新给机会) */
130
+ private runErrorRetries = new Map<string, number>()
131
+ ```
132
+ Write `agent-runtime.ts:700-703`:
133
+ ```ts
134
+ if (sawRunError && !taskDone && (this.runErrorRetries.get(msg.messageId) ?? 0) < 2
135
+ && this.deps.mailbox.requeue(msg.messageId)) {
136
+ const attempt = (this.runErrorRetries.get(msg.messageId) ?? 0) + 1
137
+ this.runErrorRetries.set(msg.messageId, attempt)
138
+ ```
139
+ Delete `agent-runtime.ts:719`: `this.runErrorRetries.delete(msg.messageId)` — only in the `else` branch of the *same* `finally`, i.e. only when that messageId reaches this runtime's `finally` again. If the re-queued message is instead claimed by a different owner (`Mailbox.claim` from `injectSteer` `agent-runtime.ts:276`, or `ackMailbox` `manager.ts:2853`) or the runtime stops (`stop()` closes the mailbox `359`; `consumeLoop` then breaks at `512-514`), the entry is never deleted. Keyed by messageId ⇒ grows with every failed-then-otherwise-consumed message. **Verdict: UNBOUNDED (no eviction found)** — small per-entry (string+int) but monotonic.
140
+
141
+ ### A9. `Mailbox.arrivalCbs` — BOUNDED
142
+
143
+ Decl `mailbox.ts:45-46`:
144
+ ```ts
145
+ /** 到信回调注册(poll_messages 长轮询即时唤醒;注册方自带注销句柄) */
146
+ private arrivalCbs = new Set<() => void>()
147
+ ```
148
+ Add `mailbox.ts:85` (`this.arrivalCbs.add(cb)`), delete `mailbox.ts:86-88` (`return () => { this.arrivalCbs.delete(cb) }`); the only caller releases in a `finally`, `agent-runtime.ts:333-338`:
149
+ ```ts
150
+ const off = this.deps.mailbox.onArrival(() => resolve(undefined))
151
+ const timer = setTimeout(() => resolve(undefined), 250)
152
+ await promise
153
+ clearTimeout(timer)
154
+ off()
155
+ ```
156
+ **Verdict: BOUNDED.**
157
+
158
+ ### A10. `monitor.ts` `events[]` — append-only, no cap (NOT production-reachable today)
159
+
160
+ Decl `monitor.ts:82-84`:
161
+ ```ts
162
+ const events: MonitorEvent[] = []
163
+ const listeners = new Set<(e: MonitorEvent) => void>()
164
+ ```
165
+ Write `monitor.ts:90-92`:
166
+ ```ts
167
+ const push = (e: MonitorEventInput): void => {
168
+ const full = { ...e, seq: (seq += 1), at: new Date().toISOString() } as MonitorEvent
169
+ events.push(full)
170
+ ```
171
+ Delete/trim: **none** — the array is append-only for the monitor's lifetime; `stop()` (`185-192`) only unsubscribes sources and does not clear `events`. Unbounded per monitor instance. **Verdict: UNBOUNDED (no eviction found)** — but whole-repo grep shows `monitorChannel(` is called only from `scripts/` (demo/e2e harnesses), never from `server/` production code, so this is a test-harness leak today. `listeners` is BOUNDED (unsubscriber at `139-142`).
172
+
173
+ ### A11. Arrays written at runtime in the other 9 files
174
+
175
+ All remaining arrays/maps in the audited files are **per-call locals** that die with the call, or bounded-by-construction:
176
+ - `task-engine.ts:146-148` `queued`/`completed` locals; `task-engine.ts:412` `const history = [...task.history, event.status.message]` is a copy, and history is capped: `task-engine.ts:77-78` `/** 任务执行历史上限(applyEvent 整列重写模型下的写放大有界化) */ const TASK_HISTORY_CAP = 200` enforced at `413` (`history.splice(0, history.length - TASK_HISTORY_CAP)`) and `manager.ts:2294` (`.slice(-200)`).
177
+ - `memory.ts:182` `rrf`, `210` `distByRowid`, `227` `hits`, `281-282` `lines`/`touched`, `306` `selectedTokens` — all function-local. Instance state is only `private sessionSeq = 0` (`memory.ts:455`, a number).
178
+ - `channel-runtime.ts:28` `private agents = new Map<string, AgentRuntimeLike>()` — BOUNDED: deleted at `149` (`removeAgent`) and `154-156` (`detachAgent`).
179
+ - `scheduler-loop.ts:383` `childrenByParent` local; `channel-runtime.ts:71`, `manager.ts:1703/1853`, `execution-mode.ts:92`, `memory.ts:102-103/464/493` — locals.
180
+ - `manager.ts:227` `const KNOWN_HARNESSES = new Set(knownHarnesses())` — module-level but write-once.
181
+ - `manager.ts:844/845/897/910/2320/2420/2624/2845/2904/2917`, `scheduler-loop.ts:197/322/444/637/708` — function-local projections.
182
+
183
+ ### A12. `metricStates` / `twinPushAt` (previous audit's other two) — moved to delete-on-lifecycle, still not LRU
184
+
185
+ Both live outside the 10 audited files (`server/services/workshop/daq/daq-controller.ts`):
186
+ - `daq-controller.ts:136` `private metricStates = new Map<string, 'ok' | 'warn' | 'alarm'>()`, write `433` `this.metricStates.set(key, level)`; **delete added** at `daq-controller.ts:1027-1030`:
187
+ ```ts
188
+ const prefix = `${id}::`
189
+ for (const key of this.metricStates.keys()) {
190
+ if (key.startsWith(prefix)) this.metricStates.delete(key)
191
+ }
192
+ ```
193
+ (inside `remove(id)` — DAQ node deletion, `1020`). So it is bounded by *node deletions happening*; it is **not** LRU-bounded, and an installation that creates nodes/metrics but never deletes them grows monotonically.
194
+ - `daq-controller.ts:718` `private twinPushAt = new Map<string, number>()`, write `723`; **delete added** at `daq-controller.ts:1101-1102` inside `unbindDevice`: `this.twinPushAt.delete(deviceId)`.
195
+ - Contrast: `daq-controller.ts:677` `private siblingsCache = new LruMap<string, { at: number, list: DaqNode[] }>(500)` — the only real LRU in production.
196
+ **Verdict for the two:** delete-on-entity-removal added ⇒ *not* "completely unbounded" as the old audit (`PLAN-ARCH-AUDIT.md:88`) stated, but still not LRU-bounded. `reflectCounts`/`ownerNameCache` (+ `lastToolInvokeAt`) remain **UNBOUNDED**.
197
+
198
+ ---
199
+
200
+ ## B. Full-table scans / N+1 / absurd limits
201
+
202
+ ### B1. Absurd `limit` values (biggest first)
203
+
204
+ | value | site | evidence |
205
+ |---|---|---|
206
+ | `1_000_000` | `manager.ts:1489` | `const row = this.deps.repos.memories.listByAgentChannel(channelId, TEAM_AGENT_ID, 1_000_000).find(r => r.id === memoryId)` — pulls the entire team-memory table into JS to find one id |
207
+ | `1_000_000` | `memory.ts:669` | `expireAndEvict(repo.listByAgentWithRowid(agentId, 1_000_000).filter(r => r.kind.startsWith('episodic')))` |
208
+ | `1_000_000` | `memory.ts:673` | `expireAndEvict(repo.listByAgentWithRowid(TEAM_AGENT_ID, 1_000_000).filter(r => r.kind === 'episodic-team-task'))` |
209
+ | `10_000` | `manager.ts:1552` | `const row = this.deps.repos.memories.listByAgent(targetAgentId, 10_000).find(r => r.id === memoryId && ...)` |
210
+ | `1000` ×3 | `server/api/workshop/aml/index.get.ts:16-18` | `datasets: rt.repo.dataset.list({ limit: 1000 }).length,` / `models: rt.repo.model.list({ limit: 1000 }).length,` / `productions: rt.repo.model.list({ stage: 'production', limit: 1000 }).length,` — three full-ish table pulls whose only use is `.length` |
211
+ | `5000` | `db/retention.ts:19,40` | `const BATCH = 5000` / ``DELETE FROM ${t.table} WHERE rowid IN (SELECT rowid FROM ${t.table} WHERE ${t.column} < ? LIMIT ${BATCH})`` |
212
+ | `5000` | `db/channel-event.repo.ts:98`, `daq/storage/sqlite.adapter.ts:94` | `'DELETE FROM channel_events WHERE rowid IN (SELECT rowid FROM channel_events WHERE at < ? LIMIT 5000)'` |
213
+ | `Number.POSITIVE_INFINITY` | `execution-mode.ts:69`, `scheduler-loop.ts:777` | `config.maxIterations = maxMatch ? parseInt(maxMatch[1]!, 10) : Number.POSITIVE_INFINITY` / `const maxIterations = modeInfo.config.maxIterations ?? Number.POSITIVE_INFINITY` |
214
+ | 500 / 1000 | `ops-logs/index.get.ts:27` (`Math.min(500, …)`), `channels/[id]/events.get.ts:18` (`.max(1000)`) | request-surface caps, fine |
215
+ | 500 / 300000 | `dcw/recipe-rollback-manager.ts:190,522,621`; `agents/dsh-agent.ts:64,150` (`contextWindow ?? 1_000_000`) | large but bounded |
216
+
217
+ The former `limit=1_000_000` in the reflection path is **fixed**; the fix is documented in the code itself, `manager.ts:472-474`:
218
+ ```ts
219
+ // 条件下推到 SQL:原先拉 limit=1_000_000 全量再 JS filter,代价随记忆总量无上限增长。
220
+ // 这里按 (agent, kind, 当月) 精确取行 —— 返回量与实际增量同阶,且内存不随历史膨胀。
221
+ const rows = memories.listByAgentKindMonth(agentId, 'episodic-task', month)
222
+ ```
223
+ (`listByAgentKindMonth` exists at `db/memory.repo.ts:210`.)
224
+
225
+ ### B2. Repository/DB queries issued INSIDE a loop
226
+
227
+ 1. `manager.ts:1708-1728` — per-orphan loop calls `pickReceiverWorker`, which issues one `queueViewOf` **per candidate member per task**:
228
+ ```ts
229
+ for (const task of orphans) {
230
+ if (task.state === 'SUBMITTED' || task.state === 'ASSIGNED') {
231
+ const receiver = this.pickReceiverWorker(channelId, agentId)
232
+ ```
233
+ `manager.ts:1750-1756`:
234
+ ```ts
235
+ for (const m of candidates) {
236
+ const len = this.getTaskEngine().queueViewOf(channelId, m.id).queued.length
237
+ ```
238
+ `queueViewOf` is a real query — `task-engine.ts:145` `const rows = this.repos.tasks.listByChannelAssigneeMeta(channelId, agentId)`. The same loop also calls `transition` (`manager.ts:1723`, `1725`), and `transition` itself queries, `task-engine.ts:347-350`:
239
+ ```ts
240
+ if (state === 'WORKING' && current !== 'WORKING') {
241
+ const clash = this.repos.tasks
242
+ .listByChannelAssignee(row.channelId, row.assigneeId)
243
+ .find(r => r.id !== taskId && r.state === 'WORKING')
244
+ ```
245
+ 2. `manager.ts:1854-1861` — per-team-member loop with a write+queries inside:
246
+ ```ts
247
+ for (const m of members) {
248
+ const inst = await this.addAgentToChannel({
249
+ channelId: input.channelId,
250
+ agentId: m.templateId,
251
+ role: m.role === 'lead' ? 'lead' : 'worker',
252
+ })
253
+ ```
254
+ 3. `manager.ts:1880-1882` — one `agents.findById` per team member, and `teamDetailOf` is itself called per team row by `listTeams`/`listTeamsVisibleTo` (`1773`, `1786`):
255
+ ```ts
256
+ members: members.map((m) => {
257
+ const tpl = this.deps.repos.agents.findById(m.templateId)
258
+ ```
259
+ 4. `manager.ts:2625-2643` — per-other-channel full task fetch + team-memory count:
260
+ ```ts
261
+ return this.otherSameOwnerChannels(channelId).map((c) => {
262
+ const tasks = this.deps.repos.tasks.listByChannel(c.id)
263
+ const leadRow = c.leadAgentId ? this.deps.repos.channelAgents.findById(c.leadAgentId) : undefined
264
+ ...
265
+ sharedMemories: this.deps.repos.memories.countTeamShared(c.id),
266
+ ```
267
+ 5. `manager.ts:817-830` — `monitorRuntime`: `listByChannel(...).length` per wired channel (`822`) and `findByChannelAgent` per wired agent (`830`).
268
+ 6. `manager.ts:910-927` — `monitorRuntimeForUser`: `this.deps.repos.channels.list()` runs **twice** (`912`, `916`), `listByChannel(row.id).length` runs inside the second loop (`921`), and `!channels.some(c => c.channelId === row.id)` (`917`) is an O(N²) scan:
269
+ ```ts
270
+ for (const row of this.deps.repos.channels.list()) {
271
+ if (visibleChannels.has(row.id) && !channels.some(c => c.channelId === row.id)) {
272
+ channels.push({
273
+ ...
274
+ memberCount: this.deps.repos.channelAgents.listByChannel(row.id).length,
275
+ ```
276
+ 7. `manager.ts:2421-2427` — `queueOverview`: `queueViewOf` per member (the un-wired branch):
277
+ ```ts
278
+ return this.deps.repos.channelAgents.listByChannel(channelId)
279
+ .filter(m => m.enabled === 1)
280
+ .map((m) => {
281
+ const runtime = wired.get(m.id)
282
+ if (runtime) return runtime.getStatus()
283
+ const view = this.getTaskEngine().queueViewOf(channelId, m.id)
284
+ ```
285
+ 8. `memory.ts:668-674` — maintenance loop, one 1M-row pull per agent:
286
+ ```ts
287
+ for (const agentId of repo.listMemoryAgentIds()) {
288
+ expireAndEvict(repo.listByAgentWithRowid(agentId, 1_000_000)
289
+ .filter(r => r.kind.startsWith('episodic')))
290
+ }
291
+ ```
292
+ 9. `scheduler-loop.ts:227-235` — per-decision `execute()` issues a channel-member query inside the decision loop (`578`, `601`):
293
+ ```ts
294
+ const decisions = await this.decide(snapshot)
295
+ for (const decision of decisions) {
296
+ try {
297
+ this.execute(decision)
298
+ ```
299
+ ```ts
300
+ const target = this.channelRuntime.listChannelAgents().find(a => a.agentId === decision.assigneeId)
301
+ ```
302
+ and `ChannelRuntime.listChannelAgents` queries (`channel-runtime.ts:46`) `this.deps.channelAgents.listByChannel(this.channelId)`.
303
+ 10. `manager.ts:425` + `433-438` — `refreshChronicle` runs a **full channel task list with artifacts/history JSON parsing** on every terminal task event (the hook is registered for every bus at `manager.ts:391`):
304
+ ```ts
305
+ const terminal = this.getTaskEngine().list(channelId)
306
+ .filter(t => TERMINAL_TASK_STATES[t.state])
307
+ .sort((a, b) => (a.updatedAt < b.updatedAt ? 1 : -1))
308
+ .slice(0, 12)
309
+ ```
310
+ (`TaskEngine.list` = `task-engine.ts:438-440` `this.repos.tasks.listByChannel(channelId).map(rowToTask)` — `rowToTask` parses both JSON columns.)
311
+
312
+ ### B3. Full table fetched, then filtered in JS where the repo could filter
313
+
314
+ - `manager.ts:1489` and `manager.ts:1552` (quoted in B1) — `.find(r => r.id === memoryId)` after pulling 1M / 10k rows.
315
+ - `manager.ts:2075-2077` (`submitChannelTask` hot path) — whole channel task list with JSON parsing to look for a duplicate title:
316
+ ```ts
317
+ const duplicate = this.getTaskEngine().list(input.channelId).find(t =>
318
+ t.title === input.title
319
+ && t.state !== 'COMPLETED' && t.state !== 'FAILED' && t.state !== 'CANCELED')
320
+ ```
321
+ - `manager.ts:2155-2161` (`dispatchTask`) — same, per child dispatch, duplicating the cheaper check that `TaskEngine.dispatch` already does via an indexed child query (`task-engine.ts:297-300` `listChildrenMeta(parent.channelId, parent.id)`):
322
+ ```ts
323
+ const siblings = this.getTaskEngine().list(channelId).filter(t => t.parentId === input.parentTaskId)
324
+ ```
325
+ - `task-engine.ts:453-455` (`complete`) — full channel scan + JS filter:
326
+ ```ts
327
+ const children = this.repos.tasks
328
+ .listByChannel(task.channelId)
329
+ .filter(t => t.parentId === task.id)
330
+ ```
331
+ - `manager.ts:2874-2880` (`listChannelMail`) — filter by participant in JS after a limited fetch:
332
+ ```ts
333
+ const mails = this.deps.repos.messages
334
+ .listRecentByChannel(channelId, limit)
335
+ .map(rowToChannelMail)
336
+ if (opts.agentId) {
337
+ return mails.filter(m => m.fromAgentId === opts.agentId || m.toAgentId === opts.agentId)
338
+ ```
339
+ - `manager.ts:2254` `const members = this.deps.repos.channelAgents.listByChannel(channelId).filter(m => m.enabled === 1)`
340
+ - `manager.ts:1704-1707` `listByChannelAssignee(channelId, agentId).map(rowToTask).filter(t => !TERMINAL_TASK_STATES[t.state])`
341
+ - `manager.ts:2836-2839` `pollMailbox` — **no** SQL limit, then JS slice:
342
+ ```ts
343
+ return this.deps.repos.messages
344
+ .listPendingByChannelAgent(channelId, callerAgentId)
345
+ .slice(0, limit)
346
+ ```
347
+ - `manager.ts:2846-2848` `ackMailbox` — same unlimited pull: `this.deps.repos.messages.listPendingByChannelAgent(channelId, callerAgentId).map(r => r.id)`
348
+ - `channel-runtime.ts:46-49` `this.deps.channelAgents.listByChannel(this.channelId).filter(m => m.enabled === 1)`
349
+ - `channel-runtime.ts:184-187` `subscriptionRepo.listByTarget(...).map(s => s.agentId).filter(id => this.ensureAgent(id) !== undefined)` (filter forces lazy wiring per id)
350
+ - `scheduler-loop.ts:278-285` — O(N²) nested scan, executed from `shouldSupervise` every tick:
351
+ ```ts
352
+ return snapshot.tasks.some((t) => {
353
+ if (t.state !== 'WAITING') return false
354
+ const children = snapshot.tasks.filter(c => c.parentId === t.id)
355
+ ```
356
+ - `memory.ts:489-492` `updateBrief` — two limited pulls + JS filter, on every task completion (`memory.ts:424`):
357
+ ```ts
358
+ const own = this.repo.listByAgentChannel(this.opts.channelId, this.opts.agentId, 40)
359
+ .filter(r => r.kind === 'episodic-task')
360
+ const shared = this.repo.listByAgentChannel(this.opts.channelId, TEAM_AGENT_ID, 40)
361
+ .filter(r => r.kind === 'semantic')
362
+ ```
363
+
364
+ ---
365
+
366
+ ## C. Read-path writes
367
+
368
+ ### C1. `GET /api/workshop/channels/:id` boots runtimes and mutates the DB → **WRITE**
369
+
370
+ `server/api/workshop/channels/[id]/index.get.ts:14-17`:
371
+ ```ts
372
+ const channel = await manager.getChannel(channelId)
373
+ // 兜底:详情请求时确保 lead 的调度循环已装配(如启动恢复遗漏)
374
+ ensureLeadSchedulerLoop(manager, channelId)
375
+ return channel
376
+ ```
377
+ `server/plugins/workshop.ts:68-74`:
378
+ ```ts
379
+ export function ensureLeadSchedulerLoop(
380
+ manager: AgentChannelManager,
381
+ channelId: string,
382
+ options?: { tickMs?: number, stallMs?: number },
383
+ ): void {
384
+ manager.ensureChannelActive(channelId, options)
385
+ }
386
+ ```
387
+ `manager.ts:694-720` then wires and **starts** the lead: `const lead = this.ensureAgentRuntime(channelId, channel.leadAgentId)` (`699`), `runtime.start()` (`675`), `loop.start()` (`719`). Consequences of a pure GET: (a) an `implFactory` + `AgentRuntime.consumeLoop()` is started, which immediately dequeues and **claims** rows — `mailbox.ts:102` `if (!this.messageRepo.claim(row.id)) continue` → `message.repo.ts:39-41`,`110-112` `UPDATE messages SET state = 'consuming' WHERE id = ? AND state = 'pending'`; (b) the turn ends with `this.deps.mailbox.markConsumed(msg.messageId)` (`agent-runtime.ts:720`) → `message.repo.ts:42-44` `UPDATE messages SET state = 'consumed', consumed_at = ?`; (c) `processMessage` may `transition` the task (`agent-runtime.ts:549` → `task-engine.ts:355` `UPDATE`); (d) harness processes can be spawned. **A GET is a mutation endpoint.**
388
+
389
+ ### C2. `GET /api/system/monitor` sweeps process/terminal registries → in-memory mutation
390
+
391
+ `server/api/system/monitor.get.ts:12` `return getWorkshopManager().monitorRuntimeForUser(user)`; `manager.ts:894-895` `const snap = this.monitorRuntime()`; `manager.ts:814-816`:
392
+ ```ts
393
+ monitorRuntime(): RuntimeMonitorSnapshot {
394
+ sweepHarnessProcesses()
395
+ sweepTerminalSessions()
396
+ ```
397
+ Both delete entries: `agents/harness-process.ts:92-98` `if (!e.alive && e.exitedAt !== null && now - e.exitedAt > retentionMs) { registry.delete(pid) }`; `agents/harness-terminal.ts:469-478` `sessions.delete(pid)`. In-memory only — no DB/disk write — but it is a read endpoint performing state repair (and it also mutates the response objects it returns: `manager.ts:863-870` assigns `ownerUserId` onto the views).
398
+
399
+ ### C3. `GET /api/workshop/workspaces` deletes rows → **DB WRITE**
400
+
401
+ `server/api/workshop/workspaces/index.get.ts:10` `return getWorkshopManager().listWorkspaces(user.id)`; `manager.ts:1119-1131`:
402
+ ```ts
403
+ listWorkspaces(userId: string): Array<WorkspaceRow & { channelIds: string[] }> {
404
+ return this.deps.repos.users.listWorkspaces(userId).map(ws => ({
405
+ ...ws,
406
+ // 挂载引用自愈:channel 删除(removeChannel)不级联清理 workspace_channels,
407
+ // 死引用会让前端订阅永不到达(左栏"幽灵频道"+ 右栏空数据假象)——
408
+ // 读取时过滤并顺手删除挂载行,历史脏数据随读取收敛
409
+ channelIds: this.deps.repos.users.listMountedChannels(ws.id).filter((id) => {
410
+ if (this.deps.repos.channels.findById(id)) return true
411
+ this.deps.repos.users.unmountChannel(ws.id, id)
412
+ return false
413
+ }),
414
+ ```
415
+ `db/user.repo.ts:93-95`:
416
+ ```ts
417
+ unmountChannel(workspaceId: string, channelId: string): void {
418
+ deleteMount.run(workspaceId, channelId)
419
+ },
420
+ ```
421
+ A `DELETE` executed inside a `.filter()` callback of a GET.
422
+
423
+ ### C4. `GET /api/workshop/users/me` reaches the same write
424
+
425
+ `server/api/workshop/users/me.get.ts:20` `workspaces: manager.listWorkspaces(user.id).length,` → C3 path.
426
+
427
+ ### C5. Read-shaped methods that write (`touch` = `UPDATE`)
428
+
429
+ - `memory.ts:342-343` inside `recall()`: `for (const id of touched) this.repo.touch(id)`
430
+ - `memory.ts:360` inside `recallRows()`: `for (const s of scored) this.repo.touch(s.row.id)`
431
+ - `manager.ts:2670-2671` inside `recallOtherTeamsMemory` (surfaced by the `search_other_teams_memory` tool bridge `manager.ts:2719` and by REST):
432
+ ```ts
433
+ // 触摸命中行(access_count/last_accessed_at):与 recallRows 同信号,强化后续召回排序
434
+ for (const r of rows) this.deps.repos.memories.touch(r.id)
435
+ ```
436
+ `db/memory.repo.ts:78-80` `UPDATE agent_memories SET access_count = access_count + 1, last_accessed_at = ? WHERE id = ?`.
437
+ So `manager.searchAgentMemories` (`1433-1447`), `listMemories`… and everything behind `recall*` are read paths that write. (`recall`'s `touch:false` escape hatch exists — `agent-runtime.ts:458` — and `supervise` uses it.)
438
+
439
+ ### C6. GET paths verified **purely read-only**
440
+
441
+ - `server/api/workshop/runtime.get.ts:10` `return getWorkshopManager().runtimeStatus()` → `manager.ts:803-808` returns two derived arrays. Read-only.
442
+ - `server/api/workshop/agents/index.get.ts:11` (`listAgentsVisibleTo`), `agents/[id].get.ts:14-18` (`getAgent` + `requireTemplateReadable`). Read-only.
443
+ - `server/api/workshop/channels.get.ts:10` (`listChannelsForUser`). Read-only.
444
+ - `server/api/workshop/channels/[id]/agents/index.get.ts:24-26` (`listChannels()` + `listChannelAgents`) — read-only (note: full `listChannels()` scan to find one id).
445
+ - `server/api/workshop/channels/[id]/queue.get.ts:23` → `manager.ts:2417-2441` `queueOverview`; `requireMember` + reads. Read-only.
446
+ - `server/api/workshop/channels/[id]/messages/index.get.ts:41` `listRecentByChannel(channelId, query.limit ?? 50)` — read-only.
447
+ - `server/api/workshop/mailbox.get.ts:13` → `manager.ts:2834-2839` `pollMailbox` — the repo call is a pure `SELECT` (`db/message.repo.ts:91-98`); no claim/consume (deliberate: the file comment at `mailbox.get.ts:3` says `不改状态,消费由 AgentRuntime 循环完成`). Read-only.
448
+ - `server/api/workshop/mailbox/all.get.ts:15` → `listChannelMail` (read-only).
449
+ - `server/api/workshop/channels/[id]/tasks/index.get.ts:23` → `TaskEngine.list` — read-only (no limit; parses artifacts/history JSON for every task).
450
+ - `server/api/workshop/channels/[id]/events.get.ts:37-43` (`listRecent`/`listBefore`/`count`/`maxSeq`) — read-only.
451
+ - `server/api/workshop/channels/[id]/terminals.get.ts:20` (`listTerminalSessions`) — read-only in-memory.
452
+ - `server/api/workshop/hitl/pending.get.ts:23-27` (`listChannelsForUser` + `getHitlRegistry().snapshot()`) — read-only.
453
+ - `channels/[id]/memories/index.get.ts:27` (`listTeamMemories`), `channels/[id]/agents/[agentId]/memories/index.get.ts:28` (`listMemories`) — read-only (no touch).
454
+ - `teams/*.get.ts`, `channel-templates/*.get.ts`, `permissions/index.get.ts`, `ops-logs/index.get.ts`, `dcw/*.get.ts` (verified `recipe-rollback-manager.ts:627-649 ledger()` and `652-654 journal()` are pure reads), `aml/*.get.ts`, `assets/*`, `daq/*.get.ts`, `device-twins/index.get.ts`, `agent-tools/*.get.ts`, `harnesses*.get.ts`, `plugins/*.get.ts` — no write verb found by grep of all `*.get.ts` under `server/api` for `update|delete|remove|insert|save|flush|prune|purge|gc|truncate|reset|migrate|reindex|refresh`, `.touch(|.upsert(|.claim(|markConsumed|.create(|.close(|writeFile|appendFile`; the only hits were the ones in C1–C4 plus in-memory `push`/`set` on locals.
455
+
456
+ **Summary:** the GET surface contains exactly **one** DB-mutating endpoint (`channels/[id]/index.get.ts` → runtimes + message/task rows), **one** in-memory state-repair endpoint (`system/monitor.get.ts` → sweeps), and **two** DB-deleting endpoints (`workspaces/index.get.ts`, `users/me.get.ts` → `unmountChannel`).
457
+
458
+ ---
459
+
460
+ ## D. `manager.ts` responsibility map (3016 lines) + extraction seams
461
+
462
+ ### D1. Section inventory (exact ranges)
463
+
464
+ | lines | responsibility |
465
+ |---|---|
466
+ | 1-54 | file docblock + imports (logger, fs, crypto, sqlite, 15 repos, mailbox/runtime factories, harness registry, plugins, memory, settings) |
467
+ | 55 | `const log = createLogger('workshop.manager')` |
468
+ | 57-79 | DI contracts: `AllRepos` (12 repos), `ManagerDeps` |
469
+ | 81-104 | auth principal `ActingUser` + `AgentTemplateDetail` DTO |
470
+ | 106-145 | DTOs `AgentTeamDetail`, `ChannelTemplateDetail` |
471
+ | 147-206 | row→DTO mappers: `instanceToAgentInfo`, `rowToTask`, `rowToChannelMail`, `buildMessage` |
472
+ | 208-224 | `parseChannelLlm`, `runtimeKey` |
473
+ | 226-243 | `KNOWN_HARNESSES`, module-level `ownerNameCache` + `resolveOwnerName` |
474
+ | 245-314 | monitor view DTOs (`RuntimeChannelView`, `RuntimeAgentView`, `RuntimeProcessView`, `RuntimeMonitorSnapshot`) |
475
+ | 316-330 | class fields (runtime indexes, timers, embedder, `reflectCounts`, `lastToolInvokeAt`) |
476
+ | 331-349 | ctor: memory-maintenance interval + idle reflection timer |
477
+ | 351-373 | `getTaskEngine` (lazy singleton + onTaskChange wiring) |
478
+ | 375-394 | `ensureChannelRuntime` (creates ChannelRuntime + bus + team-task hook) |
479
+ | 396-458 | team-history sinking: `recordTeamTaskTerminal`, `refreshChronicle` |
480
+ | 460-492 | sleep-time reflection: `reflectIdleMemories` |
481
+ | 494-591 | `buildBus` (6 typed listener registries + dispatchers) |
482
+ | 593-627 | public subscription façade (agent status / events / tasks / messages / memory / member) |
483
+ | 629-639 | private `notifyTask` / `notifyMember` |
484
+ | 641-691 | runtime wiring: `wireMember`, `ensureAgentRuntime`, `runtimeOf` |
485
+ | 693-720 | `ensureChannelActive` (lead wire + SchedulerLoop + loop-resubmit callback) |
486
+ | 722-801 | lifecycle: `stopAndDetach`, `unloadAgent`, `unloadIdleAgents`, `startIdleSweeper` |
487
+ | 803-808 | `runtimeStatus` |
488
+ | 810-946 | monitoring: `monitorRuntime`, `monitorRuntimeForUser` |
489
+ | 948-996 | process control: `terminateRuntimeProcess`, `killHarnessProcessByPid`, `shutdown` |
490
+ | 998-1044 | `buildWorkspace` (the 25-method agent capability surface) |
491
+ | 1046-1115 | user/auth surface: `registerUser`, `getUserByToken`, `requireOwned`, `requireWritable`, `requireTemplateReadable`, `getChannelForUser`, `listChannelsForUser` |
492
+ | 1117-1163 | Workspace CRUD + mount/unmount |
493
+ | 1165-1291 | Channel lifecycle: `createChannel`, `getChannel`, `updateChannel`, `unloadChannelAgents`, `updateChannelWorkspace`, `ensureWorkspaceDir`, `channelWorkspace`, `listChannels`, `removeChannel` |
494
+ | 1293-1365 | Agent-template CRUD + `templateDetailOf` |
495
+ | 1367-1418 | Channel-instance CRUD: `addAgentToChannel`, `listChannelAgents` |
496
+ | 1420-1447 | memory read surface: `listMemories`, `searchAgentMemories` |
497
+ | 1449-1497 | team shared-memory domain: `listTeamMemories`, `addTeamMemory`, `deleteTeamMemory`, `runMemoryMaintenanceNow` |
498
+ | 1499-1556 | per-agent memory curation: `addAgentMemory`, `deleteAgentMemory` |
499
+ | 1558-1616 | instance detail/update/remove: `getChannelAgent`, `updateChannelAgent`, `removeAgentFromChannel` |
500
+ | 1618-1758 | lead self-service team mgmt: `createTeamMember`, `updateTeamMember`, `removeTeamMember`, `pickReceiverWorker` |
501
+ | 1760-1893 | AgentTeam CRUD + `deployTeamToChannel` + `teamDetailOf` |
502
+ | 1895-2041 | ChannelTemplate CRUD + `instantiateChannelTemplate` + `assertHarness` + `channelTemplateDetailOf` |
503
+ | 2043-2120 | `submitChannelTask` (HITL task ingress) |
504
+ | 2122-2204 | `dispatchTask` |
505
+ | 2206-2270 | `refuseTask` |
506
+ | 2272-2300 | `reportTask` |
507
+ | 2302-2335 | `completeTask` |
508
+ | 2337-2353 | `cancelTask` |
509
+ | 2355-2378 | `stopAgentRuntime` (HITL) |
510
+ | 2380-2399 | `retryTask` |
511
+ | 2401-2414 | `listTasks`, `getTask`, `myQueue` |
512
+ | 2416-2441 | `queueOverview` |
513
+ | 2443-2476 | `updateTask`, `reassignTask` |
514
+ | 2478-2498 | `sendA2A` |
515
+ | 2500-2531 | `sendImmediateMessage` |
516
+ | 2533-2605 | `sendCrossChannelMessage` |
517
+ | 2607-2644 | `listOtherTeamsOverview` |
518
+ | 2646-2689 | `recallOtherTeamsMemory` + `otherSameOwnerChannels` |
519
+ | 2691-2738 | `invokeAgentWorkspaceTool` (collaboration tool bridge) |
520
+ | 2740-2789 | `invokeHostTool` (plugin/impl/fallback dispatch + `lastToolInvokeAt`) |
521
+ | 2791-2823 | `resolveAgentByToken`, `hostToolDefsFor`, `respondHarnessHitl` |
522
+ | 2825-2893 | mailbox/mail REST surface: `waitMailbox`, `pollMailbox`, `ackMailbox`, `listChannelMail`, `subscribe`, `findByToken` |
523
+ | 2895-2936 | `restore()` (crash recovery / redelivery) |
524
+ | 2938-2999 | internal helpers: `route`, `wakeAgent`, `resolveMemberRef`, `resolveChannelMember`, `requireMember`, `requireTaskInScope` |
525
+ | 3000-3016 | factory `createAgentChannelManager` + module singleton `initWorkshopManager`/`getWorkshopManagerOrNull` |
526
+
527
+ ### D2. Proposed extraction seams (file → line range)
528
+
529
+ 1. **`runtime/manager-dto.ts`** ← 57-314. `AllRepos`, `ManagerDeps`, `ActingUser`, all 4 detail DTOs + 4 monitor DTOs. Zero behaviour; pure types. Also move the mappers 147-224 here (or to `manager-mappers.ts`).
530
+ 2. **`runtime/manager-auth.ts`** ← 1046-1115. `registerUser`, `getUserByToken`, `requireOwned`, `requireWritable`, `requireTemplateReadable`, `getChannelForUser`, `listChannelsForUser`. Pure guards; export a small `AuthService` taking `{ users, channels }`.
531
+ 3. **`runtime/user-name-cache.ts`** ← 226-243. `ownerNameCache` + `resolveOwnerName` — and this is where the LRU fix (`shared/lru.mjs`) lands. Extracting it makes the leak a one-file change.
532
+ 4. **`runtime/channel-lifecycle.ts`** ← 375-394 + 693-801 + 1165-1291 + 948-996. Everything that creates/stops/wires/unloads runtimes and channels (`ensureChannelRuntime`, `wireMember`, `ensureAgentRuntime`, `runtimeOf`, `ensureChannelActive`, `stopAndDetach`, `unloadAgent`, `unloadIdleAgents`, `startIdleSweeper`, `createChannel`…`removeChannel`, `terminateRuntimeProcess`, `killHarnessProcessByPid`, `shutdown`). This is the cluster that owns the `channels`/`agentIndex`/`buses` maps (317-320) — the maps must move with it.
533
+ 5. **`runtime/channel-bus.ts`** ← 494-639. `buildBus` + subscription façade + private notify helpers. Self-contained (6 Sets, 1 dependency on `ChannelRuntime`).
534
+ 6. **`runtime/runtime-monitor.ts`** ← 245-314 DTO part is in (1); move 803-946 here: `runtimeStatus`, `monitorRuntime`, `monitorRuntimeForUser`, plus the harness/terminal sweep calls (815-816). This also isolates the read-path mutation found in C2.
535
+ 7. **`runtime/workspace-service.ts`** ← 1117-1163 (`listWorkspaces`…`unmountChannelFromWorkspace`), which also isolates the C3/C4 read-path DELETE.
536
+ 8. **`runtime/agent-templates.ts`** ← 1293-1365 + 1367-1418 (`createAgent`…`removeAgent`, `templateDetailOf`, `addAgentToChannel`, `listChannelAgents`).
537
+ 9. **`runtime/team-templates.ts`** ← 1760-1893 (`createTeam`…`deployTeamToChannel`, `teamDetailOf`) — the N+1 in D/B2-3 lives here.
538
+ 10. **`runtime/channel-templates.ts`** ← 1895-2041 (`listChannelTemplatesVisibleTo`…`channelTemplateDetailOf`, `assertHarness`).
539
+ 11. **`runtime/task-service.ts`** ← 2043-2476 (`submitChannelTask`…`reassignTask`), i.e. the whole agent-facing task作业面 + HITL stop/retry.
540
+ 12. **`runtime/messaging.ts`** ← 2478-2689 (`sendA2A`, `sendImmediateMessage`, `sendCrossChannelMessage`, `listOtherTeamsOverview`, `recallOtherTeamsMemory`, `otherSameOwnerChannels`) + 2825-2893 (`waitMailbox`…`findByToken`) + `route`/`wakeAgent` (2938-2948).
541
+ 13. **`runtime/memory-curation.ts`** ← 1420-1556 (`listMemories`…`deleteAgentMemory`, `runMemoryMaintenanceNow`) + 396-492 (`recordTeamTaskTerminal`, `refreshChronicle`, `reflectIdleMemories`) — the latter carries the `reflectCounts` leak, so it moves with the map.
542
+ 14. **`runtime/host-tool-dispatch.ts`** ← 2691-2823 (`invokeAgentWorkspaceTool`, `invokeHostTool`, `resolveAgentByToken`, `hostToolDefsFor`, `respondHarnessHitl`) + 2791-2797; carries `lastToolInvokeAt` (2757).
543
+ 15. **`runtime/member-resolution.ts`** ← 2938-2999 (`resolveMemberRef`, `resolveChannelMember`, `requireMember`, `requireTaskInScope`).
544
+ 16. **`runtime/restore.ts`** ← 2895-2936 (`restore`) — depends on most of the above, so extract last.
545
+ 17. Left in `manager.ts`: 1-55, 316-373 (class shell, fields, ctor timers, `getTaskEngine`), 998-1044 (`buildWorkspace` façade delegating to the extracted services), 3000-3016 (factory/singleton). Target size ≈ 250-350 lines.
546
+
547
+ Ordering constraint: extract (1)(3)(5)(15) first (leaf, no behaviour), then (4)(6)(7)(8)(9)(10)(11)(12)(13)(14) behind the manager façade, then (2)(16). Nothing outside `server/`/`scripts/` imports internals except `server/api/workshop/channels/[id]/tasks/index.get.ts:15` and `[id]/messages/index.get.ts:27` and `a2a/[agentId]/rpc/index.post.ts:207` which reach through `manager as unknown as {...}` casts — those casts must be replaced by the new services' public methods.
548
+
549
+ ---
550
+
551
+ ## E. Correctness
552
+
553
+ ### E1. Ids/names captured once and used after a reload/rename
554
+
555
+ **E1a — rename/reconfigure while busy leaves a stale runtime (confirmed).**
556
+ `manager.ts:1579-1581`:
557
+ ```ts
558
+ const updated = this.deps.repos.channelAgents.update(instanceId, patch)
559
+ if (!updated) throw new AppError(404, 'NOT_FOUND', `实例不存在: ${instanceId}`)
560
+ await this.unloadAgent(updated.channelId, instanceId)
561
+ ```
562
+ `manager.ts:745-756` returns early unless the runtime is idle with an empty mailbox:
563
+ ```ts
564
+ async unloadAgent(channelId: string, agentId: string): Promise<void> {
565
+ const runtime = this.runtimeOf(channelId, agentId)
566
+ if (!runtime) return
567
+ if (runtime.getState() !== 'idle') return
568
+ if (this.deps.repos.messages.listPendingByChannelAgent(channelId, agentId).length > 0) return
569
+ ```
570
+ But `AgentRuntime` froze identity at construction — `agent-runtime.ts:196-200`:
571
+ ```ts
572
+ this.agentId = agent.id
573
+ this.role = agent.role
574
+ this.channelId = agent.channelId
575
+ this.name = agent.name
576
+ ```
577
+ and `name` is what `getStatus()` reports (`agent-runtime.ts:220`) and what the scheduler counts (`channel-runtime.ts:48`). So a **busy** member renamed via `PATCH` keeps the old name in every status frame until it happens to go idle; a member disabled (`enabled: 0`) while busy keeps running and keeps consuming its mailbox — `AgentRuntime` has no `enabled` re-check anywhere in `consumeLoop`/`processMessage` (there is none at `agent-runtime.ts:511-523` or `525-725`), so a "disabled" worker can still complete tasks. `removeAgentFromChannel` is different: it uses the forced path (`manager.ts:1600` `await this.stopAndDetach(channelId, instanceId)`).
578
+ Also `config` (harness/model/cwd/scenarioPrompt) is baked into the impl at wire time — `manager.ts:653-666` — so a config patch without a successful unload never reaches the running harness.
579
+
580
+ **E1b — `LoopController` replays a frozen title/description (confirmed).**
581
+ `execution-mode.ts:119-126`:
582
+ ```ts
583
+ constructor(
584
+ private readonly channelId: string,
585
+ private readonly taskTitle: string,
586
+ private readonly taskDescription: string,
587
+ private readonly intervalMs: number,
588
+ private readonly maxIterations: number,
589
+ private readonly onResubmit: (title: string, description: string) => void,
590
+ ) {}
591
+ ```
592
+ constructed from the *current* task at `scheduler-loop.ts:779-786` and replayed verbatim at `execution-mode.ts:134` `this.onResubmit(this.taskTitle, this.taskDescription)`. After `updateTask` (task-engine.ts:164-193) renames the loop task, every subsequent iteration recreates the OLD title. Worse: `submitChannelTask`'s duplicate guard (`manager.ts:2075-2080`, `409 TASK_DUPLICATE`) can reject the replay, and the callback only logs — `manager.ts:710-717`:
593
+ ```ts
594
+ loop.setLoopResubmitCallback((title, description) => {
595
+ this.submitChannelTask({ channelId, title, description }).catch((err) => {
596
+ // 清理竞态:channel 已删除/lead 已卸载时的到期重放 → 静默(NOT_FOUND 为预期)
597
+ const code = (err as { code?: string }).code
598
+ if (code === 'NOT_FOUND' || code === 'NO_LEAD_AGENT') return
599
+ log.error(`[AgentChannelManager:${channelId}] loop 重新提交失败:`, err)
600
+ ```
601
+ `TASK_DUPLICATE` is not in the silent list ⇒ error log only; and because `LoopController.onTaskCompleted()` already incremented `iterations` and armed the timer (`execution-mode.ts:129-136`), no further completion event can re-arm it — the loop dies silently with no UI signal.
602
+
603
+ **E1c — lead reference:** `scheduler-loop.ts:100-109` captures `private readonly lead: AgentRuntime`; correctly torn down for the lead in `manager.ts:728-731` (`if (runtime.role === 'lead' && cr) { cr.scheduler?.stop(); cr.scheduler = null }`). OK.
604
+
605
+ **E1d — `Mailbox` files rows under `message.contextId`, not under its own channel (latent).**
606
+ `mailbox.ts:60-72`:
607
+ ```ts
608
+ enqueue(message: A2AMessage): void {
609
+ if (this.closed) return
610
+ this.messageRepo.create({
611
+ // 保留发送方 messageId 作为落库 id:API 返回的 messageId 才能与历史/状态一致关联
612
+ id: message.messageId,
613
+ channelId: message.contextId,
614
+ ```
615
+ while dequeue can only ever see its own channel — `mailbox.ts:98` `const row = this.messageRepo.firstPendingByChannelAgent(this.channelId, this.agentId)`. Any caller that routes a message whose `contextId` ≠ the target channel silently writes an unreachable pending row (the channel guard `channel-runtime.ts:98-123` does not check `contextId`). All in-file call sites build the message with the routed channel (`manager.ts:2109`, `2190`, `2486`, `2525`, `2585`; `scheduler-loop.ts:653-662`), so this is latent, not observed. ⚠
616
+
617
+ **E1e — mitigations that exist:** `resolveMemberRef` (`manager.ts:2956-2976`) resolves stale/renamed references by instance id → template id → case-insensitive name → unique substring, and on failure returns the whole roster in the error so the LLM can self-correct. `taskIdOf` (`agent-runtime.ts:785-787`) accepts `msg.taskId ?? metadata['x-aw-task-id']`. `channel-runtime.ts:164` re-resolves the target through `ensureAgent` on every route (so a deleted target fails loudly instead of silently).
618
+
619
+ **E1f — fan-out shares one messageId as a PRIMARY KEY (latent).** `channel-runtime.ts:71-80`:
620
+ ```ts
621
+ const delivered: string[] = []
622
+ for (const agentId of this.resolveRecipients(message)) {
623
+ const agent = this.ensureAgent(agentId)
624
+ if (!agent) continue
625
+ agent.enqueue(message)
626
+ ```
627
+ with `mailbox.ts:64` `id: message.messageId` and `db/database.ts:63-64` `CREATE TABLE IF NOT EXISTS messages ( id TEXT PRIMARY KEY,`. `resolveRecipients` returns more than one id only in its broadcast/subscription branches — `channel-runtime.ts:180-187`:
628
+ ```ts
629
+ if (sender == null) {
630
+ // 广播仅覆盖已装配的成员(不触发全量懒加载,避免广播唤醒整个 channel)
631
+ return [...this.agents.keys()]
632
+ }
633
+ return this.deps.subscriptionRepo
634
+ .listByTarget(this.channelId, sender as string)
635
+ .map(s => s.agentId)
636
+ ```
637
+ Every `route()` caller in the repo sets `x-aw-target-agent` or `x-aw-task-kind` (grep of `route(`: `manager.ts:2111/2196/2266/2493/2526/2595`, `scheduler-loop.ts:663`, `channel-runtime.ts:65`), and the `broadcast_message` tool deliberately loops with a fresh message per recipient (`host-tool-bridge.ts:462-470`). **⚠UNVERIFIED reachability: no current caller reaches the multi-recipient branch**, so this is a latent UNIQUE-constraint failure, not an observed one.
638
+
639
+ ### E2. Message ordering / races
640
+
641
+ - **FIFO is real and deterministic:** `db/message.repo.ts:31-38` orders by `createdAt ASC, rowid ASC` with a `LIMIT 1` head query, and the atomic claim (`110-112`) is a single conditional UPDATE, so two consumers cannot both take the head (`mailbox.ts:100-103`).
642
+ - **Gate race handled explicitly** — `mailbox.ts:95-104` takes the gate reference *before* the query, with a 15 s self-healing fallback (`105-109`).
643
+ - **Scheduler tick vs. lead message arrival: serialized.** `scheduler-loop.ts:170` `await this.lead.withExecLock(() => this.tickRound())` and `agent-runtime.ts:517` `await this.withExecLock(() => this.processMessage(msg))` share the same promise-chain lock (`agent-runtime.ts:493-508`), so a scheduler round and a lead turn cannot interleave. Wake-ups during a round are coalesced, not lost (`scheduler-loop.ts:124-132`, `176-186`).
644
+ - **Race 1 (ordering):** `injectSteer` claims a message that need not be the queue head and pushes it into the *running* turn — `agent-runtime.ts:276` `if (!this.deps.mailbox.claim(message.messageId)) return`, then `294` `this.impl.steer(...)`. A later-arriving immediate human message can therefore be seen before earlier pending peer messages. Narrowed deliberately to human urgent sends only (`268-274`).
645
+ - **Race 2 (double delivery):** `peek`/`waitPending` never claim — `mailbox.ts:119-121` `return this.messageRepo.listPendingByChannelAgent(...).map(rowToMessage)`; `agent-runtime.ts:331` `const msgs = await this.deps.mailbox.peek(limit)`; the ack is deferred to the tool (`host-tool-bridge.ts:404-408`) or `manager.ts:2853`. In the window between peeking and acking, `Mailbox.dequeue` can claim the same row (`mailbox.ts:102`), so the agent processes it as a run *in addition to* having received it as a poll result. The later `ackMailbox` claim then fails (`manager.ts:2853` guards on `claim`) so it is not consumed twice at the DB level, but read/processed ordering is not guaranteed.
646
+ - **Race 3 (TOCTOU on the snapshot):** `tickRound` collects the snapshot at `scheduler-loop.ts:193` and executes decisions at `228-235` against that stale view. Guards exist per decision kind — dispatch/reassign re-verify the target (`578-582`, `601-605`), complete is idempotent (`624-627`) — and residual `AppError`s are swallowed by the per-decision `catch` at `229-234` (`log.error(... 执行决策失败 ...)`).
647
+ - **Race 4 (cancel vs. just-finished turn):** `scheduler-loop.ts:610-618` cancels then aborts the assignee (`if (assignee && assignee.getState() === 'busy') assignee.abortCurrent()`), which can abort a turn that just produced its deliverable; mitigated at the event level by the terminal-state guard `task-engine.ts:369-371` and at the task level by `agent-runtime.ts:625` (`after.state === 'WORKING'` re-check).
648
+ - **Recovery ordering:** `restore()` resets `consuming → pending` first (`manager.ts:2902`), then computes parent ids from all tasks of active channels (`2917-2922`) before re-delivering leaf assigns (`2923-2928`) and waking pending targets (`2933-2935`). Consistent.
649
+
650
+ ### E3. Timeout / retry logic
651
+
652
+ - **No timeout in the runtime core for a task turn.** `agent-runtime.ts:580` consumes the stream with no deadline: `for await (const event of this.impl.run(request, ctx)) {`.
653
+ - **Timeouts that do exist, all impl-level:**
654
+ - omp turn idle watchdog default 600 s — `agents/omp-agent.ts:834-838`: `// 停滞看门狗:整轮无任何 omp 事件(挂死的 LLM 调用/子进程僵死)时中止回合` / `const idleTimeoutMs = this.config.promptTimeoutMs ?? 600_000`.
655
+ - supervise turn timeout 150 s — `agents/omp-agent.ts:575-576`: `const timeoutMs = this.config.superviseTimeoutMs ?? 150_000`.
656
+ - a2a RPC task wait 30 s — `a2a/[agentId]/rpc/index.post.ts:229-238` (`waitTerminal(..., timeoutMs = 30_000)`).
657
+ - embeddings: 10 s request timeout, 3 failures → 10 min breaker — `embedding-provider.ts:16-18`.
658
+ - `poll_messages` wait clamped to 180 s — `host-tool-bridge.ts:395` `const waitSec = Math.min(180, Math.max(0, Number(args.wait_seconds ?? 0) || 0))`.
659
+ - **Retry ladder:** per-message re-queue ≤ 2 (`agent-runtime.ts:700-708`); task-level reassign while `retryCount < 3` (`scheduler-loop.ts:415-433`); `mailbox.dequeue` re-check every 15 s (`mailbox.ts:105-109`); `waitPending` re-check every 250 ms (`agent-runtime.ts:335`).
660
+ - **Loop mode has no global iteration cap:** `scheduler-loop.ts:776-777`:
661
+ ```ts
662
+ const intervalMs = Math.min(86_400_000, Math.max(100, Math.floor(modeInfo.config.intervalMs ?? 60_000)))
663
+ const maxIterations = modeInfo.config.maxIterations ?? Number.POSITIVE_INFINITY
664
+ ```
665
+ (`[max:N]` is only emitted when explicitly present, `execution-mode.ts:96-99`, clamped to ≤10 000.)
666
+ - **Watchdog cannot reclaim a busy agent.** `scheduler-loop.ts:459-478` only sends one notification, with the rationale in `441-443`: `是否 cancel 由 lead(supervise)判断,规则引擎对 busy 不强制取消 —— 只留可见信号,不做破坏性动作。` If `lead.supervise === null` (`scheduler-loop.ts:260` `if (this.lead.supervise === null) return false`), nothing ever cancels a busy task: the WORKING task and its runtime persist indefinitely (an unbounded resource hold by design).
667
+ - **Watchdog grace windows:** `stallMs` default `300000` (`scheduler-loop.ts:106`), goal close-out `goalGraceMs = 45_000` (`85`), close-out supervise cooldown 30 s (`266`), idle backoff cap `IDLE_TICK_CAP_MS = 8000` (`60`).
668
+
669
+ ### E4. Error propagation to the UI — swallowed catches (verbatim)
670
+
671
+ - `scheduler-loop.ts:644` `void this.lead.recordTaskMemory(completed).catch(() => {})` — terminal memory harvest failure is invisible.
672
+ - `agent-runtime.ts:764-772` (`maybePostSettle`) ends with `.catch(() => {})` (`771`) — compaction failures never surface.
673
+ - `manager.ts:1478`, `manager.ts:1521`, `manager.ts:1540` — three `.catch(() => {})` on `vectorizeMemory` / shared-memory saves; the memory may silently stay FTS-only.
674
+ - `memory.ts:223` `catch { /* 向量不可用退化为 FTS */ }`; `memory.ts:612` `catch { /* 向量化失败留 FTS */ }`; `memory.ts:679` `catch { /* vec 未启用 */ }`.
675
+ - `mailbox.ts:74-79`:
676
+ ```ts
677
+ for (const cb of this.arrivalCbs) {
678
+ try {
679
+ cb()
680
+ }
681
+ catch { /* 回调异常不阻断投递 */ }
682
+ }
683
+ ```
684
+ - `manager.ts:213-219` (`parseChannelLlm`) and `manager.ts:235-240` (`resolveOwnerName`) are bare `catch { … return null }` — a corrupted `llm_json` silently degrades to "no channel default model", with no log at all.
685
+ - **Fire-and-forget member management** — the lead's own team-management decisions never report failure back to the lead or the UI; `scheduler-loop.ts:668-698`:
686
+ ```ts
687
+ void ws.createTeamMember({ ... }).catch((err) => {
688
+ log.error(`[SchedulerLoop:${this.lead.agentId}] spawn_agent 决策执行失败:`, err)
689
+ })
690
+ ```
691
+ (same shape at `688-690` for `update_agent`, `695-697` for `remove_agent`). Contrast: errors on the `route()`/task paths *are* surfaced — e.g. `manager.ts:2494-2496` throws `502 DELIVERY_FAILED`, and turn failures emit a user-visible status event at `agent-runtime.ts:704-716` (`消息 … 回合失败,已重投信箱待重试(第 N 次)`).
692
+ - `manager.ts:785-787` — idle-sweeper unload failures only `log.error` (no event, no UI).
693
+
694
+ ### E5. Concurrent session limits — **none for agent runtime**
695
+
696
+ There is no cap on the number of wired `AgentRuntime`s, hence none on concurrent agent turns or harness processes:
697
+ - `manager.ts:666-676` (`wireMember`) creates and starts unconditionally:
698
+ ```ts
699
+ const runtime = new AgentRuntime(agent, this.deps.implFactory(agentWithCtx), { ... })
700
+ cr.addAgent(runtime)
701
+ this.agentIndex.set(runtimeKey(m.channelId, agent.id), runtime)
702
+ runtime.start()
703
+ ```
704
+ - `manager.ts:679-687` (`ensureAgentRuntime`) wires on demand with no ceiling, and `createTeamMember` explicitly wires a new member at creation time (`manager.ts:1662` `this.ensureAgentRuntime(channelId, member.id)`).
705
+ - The only reclamation is the idle sweeper (`manager.ts:764-801`) with defaults `intervalMs ?? 60_000`, `graceMs ?? 120_000` (`765-766`), driven by settings at `plugins/workshop.ts:163-165`; and it refuses to unload anything busy or with pending mail (`745-754`).
706
+ - Per runtime, turns are serialized by `execLock` (`agent-runtime.ts:493-508`) and the single-consumer loop (`511-523`) — so the concurrency equals *the number of wired agents across all channels*, unbounded.
707
+ - The only concurrency limiter in the whole server is for AML jobs, not agents: `settings.ts:228` `maxConcurrent: Number(get('job.maxConcurrent', 2)),`, enforced at `aml/job-orchestrator.ts:257` `if (st.running.size >= Math.max(1, s.job.maxConcurrent)) return`. Nothing analogous exists for `AgentChannelManager`.
708
+
709
+ ---
710
+
711
+ ## Verification gaps (explicit)
712
+
713
+ - `⚠UNVERIFIED` — whether `implFactory` (`manager.ts:666`) spawns an OS process eagerly at wire time or only on the first `run`; the implementations are outside the audited file set.
714
+ - `⚠UNVERIFIED` — whether any WebSocket consumer (`server/api/workshop/ws.ts`, out of scope) can leak bus listeners; the audit only established that `manager.subscribe*` returns genuine unsubscribers (`manager.ts:593-627`).
715
+ - `⚠UNVERIFIED` — reachability of the multi-recipient `route()` branch that would collide on `messages.id PRIMARY KEY` (E1f). Structural only.
716
+ - `⚠UNVERIFIED` — behaviour of `dcw`/`daq`/`aml` GET endpoints beyond the grep evidence quoted in C6; they were not read line-by-line.