agentworkshop 0.8.7 → 0.8.8

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 (2663) hide show
  1. package/.AgentWorkShop/prompts/host-tools.en.json +302 -302
  2. package/.AgentWorkShop/prompts/host-tools.json +4109 -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 +4109 -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 +171 -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/CEOSV8kw.js +1 -0
  40. package/.output/public/_nuxt/CHpYSwnV.js +1 -0
  41. package/.output/public/_nuxt/CZgxZE_w2.js +1 -0
  42. package/.output/public/_nuxt/Cdi9qfTr.js +20 -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/1231252d-2864-43c0-83b2-4e70d3b86dea.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 +4 -2
  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 +5 -3
  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 +8 -6
  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 +4 -2
  114. package/.output/server/chunks/_/host-bindings.mjs.map +1 -1
  115. package/.output/server/chunks/_/index.mjs +4 -2
  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 +4 -2
  120. package/.output/server/chunks/_/mes-secrets.repo.mjs.map +1 -1
  121. package/.output/server/chunks/_/nitro.mjs +6569 -4139
  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 +4 -2
  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 +3 -1
  444. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  445. package/.output/server/chunks/routes/api/index.get.mjs +3 -1
  446. package/.output/server/chunks/routes/api/index.get.mjs.map +1 -1
  447. package/.output/server/chunks/routes/api/index.post.mjs +3 -1
  448. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  449. package/.output/server/chunks/routes/api/mcp/workshop.mjs +4 -2
  450. package/.output/server/chunks/routes/api/mcp/workshop.mjs.map +1 -1
  451. package/.output/server/chunks/routes/api/metrics.mjs +3 -1
  452. package/.output/server/chunks/routes/api/metrics.mjs.map +1 -1
  453. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +5 -3
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +5 -4
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +12 -2
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +6 -3
  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 +3 -1
  638. package/.output/server/chunks/routes/api/workshop/audit.get.mjs.map +1 -1
  639. package/.output/server/chunks/routes/api/workshop/caller.mjs +3 -1
  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 +5 -3
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +4 -2
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +6 -2
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +21 -4
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +10 -8
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +15 -3
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +6 -4
  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 +4 -2
  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 +4 -2
  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 +3 -1
  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 +6 -4
  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 +6 -4
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +5 -3
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +3 -1
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +17 -3
  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 +3 -1
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +6 -3
  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 +4 -2
  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 +6 -3
  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 +6 -3
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +3 -1
  1004. package/.output/server/chunks/routes/api/workshop/index.get.mjs.map +1 -1
  1005. package/.output/server/chunks/routes/api/workshop/index.mjs +4 -2
  1006. package/.output/server/chunks/routes/api/workshop/index.mjs.map +1 -1
  1007. package/.output/server/chunks/routes/api/workshop/index.post.mjs +3 -1
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +24 -9
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +231 -5
  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 +3 -1
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +6 -2
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +3 -1
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +3 -1
  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 +4 -2
  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 +4 -2
  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 +3 -1
  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 +4 -2
  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 +4 -2
  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 +4 -2
  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 +3 -1
  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 +4 -2
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +4 -2
  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 +3 -1
  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 +3 -1
  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 +5 -3
  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 +3 -1
  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 +3 -1
  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 +3 -1
  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 +377 -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 +4 -2
  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/cli.en.md +447 -447
  1593. package/docs/cli.md +412 -412
  1594. package/docs/mcp.en.md +27 -27
  1595. package/docs/multi-harness-architecture.md +248 -248
  1596. package/docs/plugins.en.md +641 -641
  1597. package/docs/plugins.md +630 -630
  1598. package/docs/sdk.en.md +964 -964
  1599. package/docs/sdk.md +900 -900
  1600. package/docs/tui.md +43 -43
  1601. package/i18n/dicts/_en.json +1551 -1551
  1602. package/i18n/dicts/_en2.json +300 -300
  1603. package/i18n/dicts/_en4.json +114 -114
  1604. package/i18n/dicts/agentLanesView.json +61 -61
  1605. package/i18n/dicts/appHeader.json +17 -17
  1606. package/i18n/dicts/channelSessionList.json +51 -51
  1607. package/i18n/dicts/chat.json +79 -79
  1608. package/i18n/dicts/clusterTool.json +4 -4
  1609. package/i18n/dicts/composer.json +38 -38
  1610. package/i18n/dicts/ctpl.json +37 -37
  1611. package/i18n/dicts/dcwDetail.json +219 -219
  1612. package/i18n/dicts/lineOps.json +14 -14
  1613. package/i18n/dicts/multiChannelView.json +13 -13
  1614. package/i18n/dicts/notifications.json +13 -13
  1615. package/i18n/dicts/taskInspectorDrawer.json +25 -25
  1616. package/i18n/dicts/teamPlugins.json +10 -10
  1617. package/i18n/dicts/townView.json +211 -211
  1618. package/i18n/locales/en.ts +3371 -3371
  1619. package/i18n/locales/zh-CN.ts +3370 -3370
  1620. package/mcp/aw-mcp-server.mjs +1 -1
  1621. package/mcp/discovery.mjs +227 -227
  1622. package/package.json +189 -189
  1623. package/public/favicon.svg +14 -14
  1624. package/public/robots.txt +3 -3
  1625. package/scripts/_audit/_live-mqtt-e2e-20261028.mjs +219 -219
  1626. package/scripts/_audit/audit-harness-adapters.md +664 -664
  1627. package/scripts/_audit/aw-mcp-live-e2e.mjs +293 -293
  1628. package/scripts/_audit/bump-version.mjs +51 -51
  1629. package/scripts/_audit/detached-instance.mjs +112 -112
  1630. package/scripts/_audit/detached-start.mjs +103 -103
  1631. package/scripts/_audit/eda-ui-fix-acceptance.mjs +212 -212
  1632. package/scripts/_audit/guard-upstream-liveness.mjs +104 -104
  1633. package/scripts/_audit/http-api-authz-audit.md +657 -657
  1634. package/scripts/_audit/kb-team-mock-e2e.mjs +146 -146
  1635. package/scripts/_audit/kb-team-omp-e2e.mjs +229 -229
  1636. package/scripts/_audit/kill-acceptance-strays.mjs +47 -0
  1637. package/scripts/_audit/prompt-injection-probe.mts +76 -76
  1638. package/scripts/_audit/proto-doc-broker-20261031.mjs +11 -0
  1639. package/scripts/_audit/proto-doc-device-20261031.mjs +53 -0
  1640. package/scripts/_audit/proto-doc-mqtt-20261031.mjs +32 -0
  1641. package/scripts/_audit/run-full-acceptance-20261030.sh +82 -0
  1642. package/scripts/_audit/run.mjs +21 -21
  1643. package/scripts/_audit/runtime-audit.md +716 -716
  1644. package/scripts/_audit/skills-guided-e2e.mjs +316 -316
  1645. package/scripts/_audit/stability-soak.mjs +252 -252
  1646. package/scripts/_audit/stubs/nuxt-imports.mjs +67 -67
  1647. package/scripts/_audit/ts-register-hook.mjs +12 -12
  1648. package/scripts/_audit/ts-resolve-hook.mjs +96 -96
  1649. package/scripts/_aw0746-stage12.mjs +94 -94
  1650. package/scripts/_aw0746-stage34.mjs +136 -136
  1651. package/scripts/_aw0746-stage6b-train-sweep.mjs +145 -145
  1652. package/scripts/_aw0746-stage6c-jobsmoke.mjs +69 -69
  1653. package/scripts/_dbg-configroot-audit.mjs +86 -86
  1654. package/scripts/_dbg-daq-intervals-func.mjs +115 -115
  1655. package/scripts/_dbg-perms-e2e.mjs +142 -142
  1656. package/scripts/_dbg-protocol-matrix.mjs +462 -462
  1657. package/scripts/_dbg-render-regression.mjs +193 -193
  1658. package/scripts/_dbg-schedule-e2e.mjs +262 -262
  1659. package/scripts/_e2e-ui-functional.mjs +371 -371
  1660. package/scripts/_lib-aml-python-run.mjs +17 -17
  1661. package/scripts/_plc-sim-detached.cjs +22 -22
  1662. package/scripts/_provision-injection-line.mjs +39 -39
  1663. package/scripts/_run-matrix.ps1 +53 -53
  1664. package/scripts/_sweep-button-contrast.mjs +87 -87
  1665. package/scripts/acceptance-aml-hybrid-e2e.ts +396 -396
  1666. package/scripts/acceptance-aml-hybrid-live.mjs +93 -93
  1667. package/scripts/acceptance-aml-model-identity.ts +137 -137
  1668. package/scripts/agent-daq-isolation-e2e.mjs +91 -91
  1669. package/scripts/api-contract-smoke.mjs +126 -126
  1670. package/scripts/api-live-e2e.mjs +91 -32
  1671. package/scripts/ask-hitl-e2e.mjs +96 -96
  1672. package/scripts/aw-expose.mjs +159 -159
  1673. package/scripts/channel-interaction-smoke.mjs +80 -80
  1674. package/scripts/data-studio-ui-e2e.mjs +163 -163
  1675. package/scripts/demo-group-chat-all-real.ts +279 -279
  1676. package/scripts/dev-modbus-simulator.mjs +55 -55
  1677. package/scripts/docs-shots.mjs +36 -36
  1678. package/scripts/e2e-agentteam-chat.mjs +473 -473
  1679. package/scripts/e2e-agentteam-goal-closure.mjs +496 -0
  1680. package/scripts/e2e-agentteam-real-triage.mjs +421 -421
  1681. package/scripts/e2e-aml-decoupled.mjs +162 -162
  1682. package/scripts/e2e-analysis-ledger.mjs +202 -202
  1683. package/scripts/e2e-aw-tui-global.mjs +277 -277
  1684. package/scripts/e2e-binding-modes-real.mjs +442 -442
  1685. package/scripts/e2e-business-loop-real.mjs +391 -391
  1686. package/scripts/e2e-closedloop/cleanup.mjs +27 -27
  1687. package/scripts/e2e-closedloop/lib.mjs +109 -109
  1688. package/scripts/e2e-closedloop/main.mjs +59 -59
  1689. package/scripts/e2e-closedloop/scenarios-accounts.mjs +210 -210
  1690. package/scripts/e2e-closedloop/scenarios-authz.mjs +196 -196
  1691. package/scripts/e2e-closedloop/scenarios-daq-dcw.mjs +222 -222
  1692. package/scripts/e2e-closedloop/scenarios-plugins.mjs +169 -169
  1693. package/scripts/e2e-closedloop/state.mjs +10 -10
  1694. package/scripts/e2e-config-groups.mjs +238 -238
  1695. package/scripts/e2e-core-bridges-matrix.mjs +303 -303
  1696. package/scripts/e2e-crash-cycle.mjs +108 -108
  1697. package/scripts/e2e-dcw-halfopen-resilience.mjs +140 -0
  1698. package/scripts/e2e-error-handling.mjs +190 -190
  1699. package/scripts/e2e-full-closedloop.mjs +16 -16
  1700. package/scripts/e2e-golive-matrix.mjs +515 -515
  1701. package/scripts/e2e-hil-multi-user.mjs +307 -307
  1702. package/scripts/e2e-hil-restart.mjs +339 -339
  1703. package/scripts/e2e-idd-results-ui.mjs +182 -175
  1704. package/scripts/e2e-line-governance.mjs +352 -352
  1705. package/scripts/e2e-mes-mirror-real.mjs +427 -418
  1706. package/scripts/e2e-model-loop-live.mjs +90 -54
  1707. package/scripts/e2e-multiexpert-remediation-real.mjs +453 -453
  1708. package/scripts/e2e-node-binding-3mode-real.mjs +792 -792
  1709. package/scripts/e2e-node-binding-authz.mjs +372 -372
  1710. package/scripts/e2e-ontology.mjs +393 -393
  1711. package/scripts/e2e-paper-paired-route.mjs +791 -0
  1712. package/scripts/e2e-physical-effect-real.mjs +572 -570
  1713. package/scripts/e2e-plc-plugin-closedloop.mjs +549 -549
  1714. package/scripts/e2e-real-channel-mission.mjs +543 -0
  1715. package/scripts/e2e-security-b0.mjs +280 -0
  1716. package/scripts/e2e-security-b1.mjs +165 -0
  1717. package/scripts/e2e-security-b2b5.mjs +280 -0
  1718. package/scripts/full-stack-shots.mjs +145 -145
  1719. package/scripts/full-tool-injection-harness-e2e.mjs +214 -214
  1720. package/scripts/hitl-reject-e2e.mjs +131 -131
  1721. package/scripts/line-log-smoke.mjs +260 -260
  1722. package/scripts/live-aml-mockomp.mjs +304 -304
  1723. package/scripts/live-aml-optloop-resume.mjs +322 -322
  1724. package/scripts/live-aml-optloop.mjs +588 -588
  1725. package/scripts/live-aml-stage9.mjs +169 -169
  1726. package/scripts/live-aml-two-goals.mjs +315 -315
  1727. package/scripts/live-demo-seed.mjs +157 -157
  1728. package/scripts/live-optloop-two-modes.mjs +857 -857
  1729. package/scripts/mes-agent-integration-e2e.mjs +361 -361
  1730. package/scripts/onboarding/preflight.mjs +231 -0
  1731. package/scripts/onboarding/provision-line.mjs +11 -1
  1732. package/scripts/onboarding/verify-mirror.mjs +145 -0
  1733. package/scripts/ops-plugins-e2e.mjs +85 -85
  1734. package/scripts/scenario-suite-setup.mjs +337 -337
  1735. package/scripts/scenario-suite-stability.mjs +144 -144
  1736. package/scripts/security-acceptance.mjs +218 -218
  1737. package/scripts/start.mjs +279 -250
  1738. package/scripts/team-coordination-e2e.mjs +96 -96
  1739. package/scripts/test-agentteam-workflow.ts +472 -472
  1740. package/scripts/test-aw-skills.mjs +102 -102
  1741. package/scripts/test-daq-frame-race.mjs +358 -358
  1742. package/scripts/test-data-root.mjs +208 -208
  1743. package/scripts/test-events-index.mjs +176 -176
  1744. package/scripts/test-group-chat-unit/lib.ts +186 -186
  1745. package/scripts/test-group-chat-unit/main.ts +45 -45
  1746. package/scripts/test-group-chat-unit.ts +35 -35
  1747. package/scripts/test-hitl-decision.ts +526 -526
  1748. package/scripts/test-hitl-registry.ts +112 -112
  1749. package/scripts/test-log-flooding.mjs +160 -160
  1750. package/scripts/test-lru.mjs +101 -101
  1751. package/scripts/test-plugin-hardening.mjs +90 -90
  1752. package/scripts/test-plugin-lifecycle.mjs +173 -173
  1753. package/scripts/test-rollback-index.mjs +137 -137
  1754. package/scripts/test-schedule-runtime.ts +309 -309
  1755. package/scripts/test-sdk-surface.mjs +158 -158
  1756. package/scripts/test-serial-bridge.mjs +418 -418
  1757. package/scripts/test-tui-commands.mjs +148 -148
  1758. package/scripts/test-tui-reducers.mjs +72 -72
  1759. package/scripts/three-system-e2e/lib.mjs +79 -79
  1760. package/scripts/three-system-e2e/main.mjs +40 -40
  1761. package/scripts/three-system-e2e/phases/phase-0-user-token.mjs +42 -42
  1762. package/scripts/three-system-e2e/phases/phase-0a2-line-autoselect.mjs +35 -35
  1763. package/scripts/three-system-e2e/phases/phase-0b-fixture-grants.mjs +39 -39
  1764. package/scripts/three-system-e2e/phases/phase-0c-plugin-outbound-auth.mjs +95 -95
  1765. package/scripts/three-system-e2e/phases/stage-1-health.mjs +47 -47
  1766. package/scripts/three-system-e2e/phases/stage-2-5-team-plugins.mjs +84 -84
  1767. package/scripts/three-system-e2e/phases/stage-2-teams-tools-hitl.mjs +184 -184
  1768. package/scripts/three-system-e2e/phases/stage-3-diag.mjs +73 -73
  1769. package/scripts/three-system-e2e/phases/stage-4-plugin-toggle.mjs +53 -53
  1770. package/scripts/three-system-e2e/state.mjs +87 -87
  1771. package/scripts/three-system-e2e.mjs +40 -40
  1772. package/scripts/tool-face-batch-identity-e2e.mjs +222 -222
  1773. package/scripts/tsconfig.json +14 -14
  1774. package/scripts/tui-smoke.mjs +100 -100
  1775. package/scripts/typecheck.mjs +75 -75
  1776. package/scripts/ui/md-lint.mjs +80 -80
  1777. package/scripts/ui/readme-assets.mjs +30 -30
  1778. package/scripts/ui/readme-shots.mjs +42 -42
  1779. package/scripts/ui/record-demo.mjs +557 -557
  1780. package/scripts/ui/record.mjs +225 -225
  1781. package/scripts/ui/seed-admin.mjs +68 -68
  1782. package/scripts/ui/seed-demo.mjs +83 -83
  1783. package/scripts/ui/seed-industrial-demo.mjs +171 -171
  1784. package/scripts/ui/shot-hero.mjs +25 -25
  1785. package/scripts/ui/shots.mjs +75 -75
  1786. package/scripts/ui/verify-nav.mjs +51 -51
  1787. package/scripts/ui/verify-responsive.mjs +285 -285
  1788. package/sdk/client.d.mts +110 -110
  1789. package/sdk/context.mjs +34 -1
  1790. package/sdk/examples/line-sentinel/index.mjs +105 -105
  1791. package/sdk/examples/ops-notifier/index.mjs +34 -34
  1792. package/sdk/examples/sample-insight/index.mjs +39 -39
  1793. package/server/.mimosa/hook-state/sess_869e5bfd-07f4-4b6e-a991-6221fcf6b7d2.json +1 -0
  1794. package/server/.mimosa/hook-state/sess_869e5bfd-07f4-4b6e-a991-6221fcf6b7d2.mvhn1irp-99488-e3fdc1cbfc.baseline/942d2679b87b96c612b4f2a425c3ccc5b6f3234f0cf589a8441602f866fbe277.source +41 -0
  1795. package/server/.mimosa/hook-state/sess_869e5bfd-07f4-4b6e-a991-6221fcf6b7d2.mvhn1irp-99488-e3fdc1cbfc.baseline/dd617a82339d2c61e49e28e416aabeb2fc100fb3cb1beca18d02dfb833214af6.source +51 -0
  1796. package/server/.mimosa/hook-status/sess_869e5bfd-07f4-4b6e-a991-6221fcf6b7d2-e67b6b91bf.json +14 -0
  1797. package/server/api/plugins/client/[name].get.ts +18 -18
  1798. package/server/api/plugins/i18n.get.ts +12 -12
  1799. package/server/api/plugins/manifest.get.ts +10 -10
  1800. package/server/api/system/backup/list.get.ts +32 -32
  1801. package/server/api/system/backup/run.post.ts +21 -21
  1802. package/server/api/system/config-groups/[id].delete.ts +21 -21
  1803. package/server/api/system/config-groups/[id].patch.ts +26 -26
  1804. package/server/api/system/config-groups/index.get.ts +21 -21
  1805. package/server/api/system/config-groups/index.post.ts +33 -33
  1806. package/server/api/system/timezone.get.ts +20 -20
  1807. package/server/api/users/login.post.ts +3 -2
  1808. package/server/api/users/register.post.ts +22 -21
  1809. package/server/api/users/tokens/[id]/token.get.ts +11 -11
  1810. package/server/api/workshop/[...path].ts +13 -13
  1811. package/server/api/workshop/a2a/[agentId]/card/index.get.ts +86 -75
  1812. package/server/api/workshop/agent-tools/approvals/index.get.ts +45 -45
  1813. package/server/api/workshop/agent-tools/bindings/[id].delete.ts +26 -26
  1814. package/server/api/workshop/agent-tools/bindings/grant.post.ts +45 -45
  1815. package/server/api/workshop/agent-tools/bindings/index.get.ts +41 -41
  1816. package/server/api/workshop/agent-tools/bindings/revoke.post.ts +42 -42
  1817. package/server/api/workshop/aml/datasets/[id]/preview.get.ts +68 -68
  1818. package/server/api/workshop/aml/datasets/[id].delete.ts +39 -39
  1819. package/server/api/workshop/aml/datasets/[id].get.ts +53 -53
  1820. package/server/api/workshop/aml/datasets/[id].patch.ts +30 -30
  1821. package/server/api/workshop/aml/datasets/index.get.ts +20 -20
  1822. package/server/api/workshop/aml/datasets/index.post.ts +27 -27
  1823. package/server/api/workshop/aml/entities/index.get.ts +13 -13
  1824. package/server/api/workshop/aml/entities/prune.post.ts +28 -28
  1825. package/server/api/workshop/aml/env/index.get.ts +13 -13
  1826. package/server/api/workshop/aml/env/recheck.post.ts +14 -14
  1827. package/server/api/workshop/aml/env/uv.post.ts +21 -21
  1828. package/server/api/workshop/aml/env/venv.post.ts +24 -24
  1829. package/server/api/workshop/aml/experiments/index.get.ts +35 -35
  1830. package/server/api/workshop/aml/index.get.ts +37 -37
  1831. package/server/api/workshop/aml/jobs/[id]/cancel.post.ts +21 -21
  1832. package/server/api/workshop/aml/jobs/[id]/logs.get.ts +23 -23
  1833. package/server/api/workshop/aml/jobs/[id]/retry.post.ts +20 -20
  1834. package/server/api/workshop/aml/jobs/[id].delete.ts +44 -44
  1835. package/server/api/workshop/aml/jobs/[id].get.ts +23 -23
  1836. package/server/api/workshop/aml/jobs/index.get.ts +26 -26
  1837. package/server/api/workshop/aml/models/[id]/predict.post.ts +24 -24
  1838. package/server/api/workshop/aml/models/[id]/promote.post.ts +30 -30
  1839. package/server/api/workshop/aml/models/index.get.ts +48 -48
  1840. package/server/api/workshop/aml/training-plans/[id]/train.post.ts +18 -18
  1841. package/server/api/workshop/aml/training-plans/[id].delete.ts +18 -18
  1842. package/server/api/workshop/aml/training-plans/[id].patch.ts +30 -30
  1843. package/server/api/workshop/aml/training-plans/index.get.ts +9 -9
  1844. package/server/api/workshop/aml/training-plans/index.post.ts +43 -43
  1845. package/server/api/workshop/analysis/index.post.ts +71 -54
  1846. package/server/api/workshop/approvals/[id]/decide.post.ts +30 -30
  1847. package/server/api/workshop/approvals/index.get.ts +22 -22
  1848. package/server/api/workshop/assets/devices/index.post.ts +55 -53
  1849. package/server/api/workshop/audit.get.ts +43 -43
  1850. package/server/api/workshop/channels/[id]/chat/messages/[messageId]/read.post.ts +22 -22
  1851. package/server/api/workshop/channels/[id]/chat/messages/index.get.ts +29 -29
  1852. package/server/api/workshop/channels/[id]/chat/messages/index.post.ts +51 -51
  1853. package/server/api/workshop/channels/[id]/chat/permissions.get.ts +35 -35
  1854. package/server/api/workshop/channels/[id]/index.patch.ts +64 -64
  1855. package/server/api/workshop/channels/[id]/members/[userId]/approve.post.ts +20 -20
  1856. package/server/api/workshop/channels/[id]/members/[userId].delete.ts +21 -21
  1857. package/server/api/workshop/channels/[id]/members/index.get.ts +23 -23
  1858. package/server/api/workshop/channels/[id]/members/leave.post.ts +20 -20
  1859. package/server/api/workshop/channels/[id]/tasks/index.post.ts +2 -0
  1860. package/server/api/workshop/channels/[id]/twin-profile.get.ts +45 -45
  1861. package/server/api/workshop/channels/[id]/twin-profile.patch.ts +91 -72
  1862. package/server/api/workshop/daq/[id]/ingest.post.ts +25 -1
  1863. package/server/api/workshop/daq/[id]/test.post.ts +1 -1
  1864. package/server/api/workshop/daq/index.post.ts +45 -1
  1865. package/server/api/workshop/daq/storage/retention.put.ts +66 -0
  1866. package/server/api/workshop/daq/storage/rollup.post.ts +28 -0
  1867. package/server/api/workshop/daq/storage.get.ts +17 -0
  1868. package/server/api/workshop/daq/templates/[key].delete.ts +2 -2
  1869. package/server/api/workshop/daq/templates/[key].patch.ts +19 -19
  1870. package/server/api/workshop/daq/templates/index.post.ts +18 -18
  1871. package/server/api/workshop/dcw/[id]/write.post.ts +31 -30
  1872. package/server/api/workshop/dcw/[id].delete.ts +41 -41
  1873. package/server/api/workshop/dcw/mes-test-read.post.ts +24 -24
  1874. package/server/api/workshop/dcw/params/[id]/write.post.ts +21 -21
  1875. package/server/api/workshop/dcw/params/[id].delete.ts +19 -19
  1876. package/server/api/workshop/dcw/params/[id].patch.ts +23 -23
  1877. package/server/api/workshop/dcw/params/index.get.ts +27 -27
  1878. package/server/api/workshop/dcw/params/index.post.ts +25 -25
  1879. package/server/api/workshop/dcw/recipes/[id].delete.ts +21 -2
  1880. package/server/api/workshop/dcw/templates/[key].delete.ts +14 -14
  1881. package/server/api/workshop/dcw/templates/[key].patch.ts +16 -16
  1882. package/server/api/workshop/dcw/templates/index.post.ts +15 -15
  1883. package/server/api/workshop/device-twins/[id]/control.post.ts +23 -21
  1884. package/server/api/workshop/device-twins/[id].delete.ts +27 -25
  1885. package/server/api/workshop/device-twins/[id].patch.ts +31 -29
  1886. package/server/api/workshop/eda/runs/[id]/labels.patch.ts +25 -25
  1887. package/server/api/workshop/eda/templates/[id].delete.ts +14 -14
  1888. package/server/api/workshop/eda/templates/[id].get.ts +15 -15
  1889. package/server/api/workshop/eda/templates/[id].patch.ts +20 -20
  1890. package/server/api/workshop/eda/templates/index.get.ts +11 -11
  1891. package/server/api/workshop/eda/templates/index.post.ts +20 -20
  1892. package/server/api/workshop/exp/confirmations/[id]/decide.post.ts +41 -41
  1893. package/server/api/workshop/exp/confirmations/index.get.ts +25 -25
  1894. package/server/api/workshop/harnesses/[id]/providers.get.ts +16 -16
  1895. package/server/api/workshop/hitl/respond.post.ts +94 -94
  1896. package/server/api/workshop/notifications/index.get.ts +60 -60
  1897. package/server/api/workshop/notifications/read.post.ts +31 -31
  1898. package/server/api/workshop/ontology/drafts/[draftId]/subgraph.ts +24 -24
  1899. package/server/api/workshop/ops-logs/index.post.ts +92 -87
  1900. package/server/api/workshop/plugins/[name]/disable.post.ts +21 -21
  1901. package/server/api/workshop/plugins/[name]/enable.post.ts +21 -21
  1902. package/server/api/workshop/plugins/[name]/index.get.ts +14 -14
  1903. package/server/api/workshop/schedules/[id]/run.post.ts +15 -15
  1904. package/server/api/workshop/schedules/[id]/runs.get.ts +15 -15
  1905. package/server/api/workshop/schedules/[id].delete.ts +14 -14
  1906. package/server/api/workshop/schedules/[id].get.ts +13 -13
  1907. package/server/api/workshop/schedules/[id].patch.ts +29 -29
  1908. package/server/api/workshop/schedules/index.get.ts +12 -12
  1909. package/server/api/workshop/schedules/index.post.ts +32 -32
  1910. package/server/api/workshop/tasks/[id]/reassign.post.ts +32 -32
  1911. package/server/api/workshop/tasks/[id]/supersede.post.ts +28 -0
  1912. package/server/api/workshop/tasks/[id]/update.post.ts +35 -35
  1913. package/server/api/workshop/teams/[id]/plugins/index.get.ts +36 -36
  1914. package/server/api/workshop/teams/[id]/plugins/index.put.ts +42 -42
  1915. package/server/api/workshop/ws/audience.ts +56 -56
  1916. package/server/api/workshop/ws/db-buffer.ts +68 -68
  1917. package/server/api/workshop/ws/event-mapping.ts +47 -47
  1918. package/server/api/workshop/ws/handlers.ts +132 -132
  1919. package/server/api/workshop/ws/hub.ts +134 -134
  1920. package/server/api/workshop/ws/index.ts +23 -23
  1921. package/server/api/workshop/ws/notification-uplink.ts +77 -77
  1922. package/server/api/workshop/ws/shared.ts +94 -94
  1923. package/server/api/workshop/ws/streams.ts +146 -146
  1924. package/server/middleware/00-security-headers.ts +45 -38
  1925. package/server/middleware/01-rate-guard.ts +129 -101
  1926. package/server/plugins/00-daq-credentials.ts +33 -0
  1927. package/server/plugins/01-instance-guard.ts +118 -82
  1928. package/server/plugins/aml-twin-worker.ts +32 -32
  1929. package/server/plugins/backup.ts +268 -257
  1930. package/server/plugins/daq.ts +40 -1
  1931. package/server/plugins/dev-stability-guard.ts +46 -46
  1932. package/server/plugins/error-ledger.ts +21 -21
  1933. package/server/plugins-builtin/diag-bridge/host/constants.mjs +25 -25
  1934. package/server/plugins-builtin/diag-bridge/host/exports.mjs +104 -104
  1935. package/server/plugins-builtin/diag-bridge/host/index.mjs +15 -15
  1936. package/server/plugins-builtin/diag-bridge/host/intents.mjs +62 -62
  1937. package/server/plugins-builtin/diag-bridge/host/snapshot.mjs +93 -93
  1938. package/server/plugins-builtin/diag-bridge/index.mjs +9 -9
  1939. package/server/plugins-builtin/serial-bridge/client.mjs +211 -211
  1940. package/server/plugins-builtin/serial-bridge/drivers.mjs +409 -409
  1941. package/server/plugins-builtin/serial-bridge/i18n.json +62 -62
  1942. package/server/plugins-builtin/serial-bridge/index.mjs +247 -247
  1943. package/server/plugins-builtin/serial-bridge/lib.mjs +208 -208
  1944. package/server/plugins-builtin/serial-bridge/rtu.mjs +168 -168
  1945. package/server/repositories/user.repository.ts +520 -507
  1946. package/server/schemas/user.schema.ts +74 -74
  1947. package/server/services/system-config/contracts.ts +29 -29
  1948. package/server/services/system-config/dispose.ts +19 -19
  1949. package/server/services/system-config/facade.ts +26 -26
  1950. package/server/services/system-config/groups.ts +108 -108
  1951. package/server/services/system-config/index.ts +21 -21
  1952. package/server/services/system-config/init.ts +26 -26
  1953. package/server/services/system-config/mutate.ts +110 -103
  1954. package/server/services/system-config/plugins.ts +104 -104
  1955. package/server/services/system-config/secrets.ts +50 -0
  1956. package/server/services/system-config/snapshot.ts +70 -59
  1957. package/server/services/system-config/state.ts +79 -79
  1958. package/server/services/system-config/types.ts +58 -58
  1959. package/server/services/user.service.ts +277 -258
  1960. package/server/services/workshop/.mimosa/hook-state/sess_fed429fb-c8b7-4a50-bbd6-45afc580893f.json +1 -0
  1961. package/server/services/workshop/.mimosa/hook-status/sess_fed429fb-c8b7-4a50-bbd6-45afc580893f-e6b75bbfe6.json +14 -0
  1962. package/server/services/workshop/agents/adapters/line-spawn.ts +148 -144
  1963. package/server/services/workshop/agents/adapters/omp-rpc-client/api.ts +111 -111
  1964. package/server/services/workshop/agents/adapters/omp-rpc-client/contracts.ts +22 -22
  1965. package/server/services/workshop/agents/adapters/omp-rpc-client/facade.ts +7 -7
  1966. package/server/services/workshop/agents/adapters/omp-rpc-client/helpers.ts +38 -38
  1967. package/server/services/workshop/agents/adapters/omp-rpc-client/index.ts +25 -25
  1968. package/server/services/workshop/agents/adapters/omp-rpc-client/start.ts +74 -70
  1969. package/server/services/workshop/agents/adapters/omp-rpc-client/state.ts +65 -65
  1970. package/server/services/workshop/agents/adapters/omp-rpc-client/stdout.ts +92 -92
  1971. package/server/services/workshop/agents/adapters/omp-rpc-client/usage.ts +47 -47
  1972. package/server/services/workshop/agents/agent-badge.ts +38 -38
  1973. package/server/services/workshop/agents/agent-dto.ts +54 -54
  1974. package/server/services/workshop/agents/agent-interface.ts +2 -0
  1975. package/server/services/workshop/agents/base-agent.ts +3 -3
  1976. package/server/services/workshop/agents/binding-authz.ts +66 -66
  1977. package/server/services/workshop/agents/binding-mode.ts +51 -51
  1978. package/server/services/workshop/agents/codex-agent/client.ts +170 -170
  1979. package/server/services/workshop/agents/codex-agent/core.ts +119 -119
  1980. package/server/services/workshop/agents/codex-agent/facade.ts +8 -8
  1981. package/server/services/workshop/agents/codex-agent/helpers.ts +13 -13
  1982. package/server/services/workshop/agents/codex-agent/hitl.ts +138 -138
  1983. package/server/services/workshop/agents/codex-agent/index.ts +14 -14
  1984. package/server/services/workshop/agents/codex-agent/turn.ts +367 -367
  1985. package/server/services/workshop/agents/codex-agent/types.ts +42 -42
  1986. package/server/services/workshop/agents/governance-harness-audit.ts +216 -0
  1987. package/server/services/workshop/agents/harness-process.ts +3 -3
  1988. package/server/services/workshop/agents/harness-spawn-policy.ts +114 -114
  1989. package/server/services/workshop/agents/harness-terminal/api.ts +197 -197
  1990. package/server/services/workshop/agents/harness-terminal/index.ts +17 -17
  1991. package/server/services/workshop/agents/harness-terminal/io.ts +120 -120
  1992. package/server/services/workshop/agents/harness-terminal/park.ts +55 -55
  1993. package/server/services/workshop/agents/harness-terminal/sanitize.ts +98 -98
  1994. package/server/services/workshop/agents/harness-terminal/session.ts +124 -124
  1995. package/server/services/workshop/agents/harness-terminal/shared.ts +74 -74
  1996. package/server/services/workshop/agents/hitl-capabilities.ts +312 -312
  1997. package/server/services/workshop/agents/hitl-decision/answers.ts +32 -32
  1998. package/server/services/workshop/agents/hitl-decision/decide.ts +268 -268
  1999. package/server/services/workshop/agents/hitl-decision/payload.ts +45 -45
  2000. package/server/services/workshop/agents/hitl-decision/shared.ts +108 -108
  2001. package/server/services/workshop/agents/hitl-decision/visibility.ts +94 -94
  2002. package/server/services/workshop/agents/host-tool-bridge/catalog.ts +1 -0
  2003. package/server/services/workshop/agents/host-tool-bridge/dispatch.ts +428 -410
  2004. package/server/services/workshop/agents/host-tool-bridge/tools/messaging.ts +46 -13
  2005. package/server/services/workshop/agents/host-tool-bridge/tools/progress.ts +126 -84
  2006. package/server/services/workshop/agents/host-tool-bridge/tools/tasks.ts +52 -14
  2007. package/server/services/workshop/agents/host-tool-bridge/tools/team-delegation.ts +129 -109
  2008. package/server/services/workshop/agents/host-tool-bridge/tools/team.ts +70 -70
  2009. package/server/services/workshop/agents/host-tool-bridge/types.ts +1 -1
  2010. package/server/services/workshop/agents/industrial/aml-activity.ts +131 -131
  2011. package/server/services/workshop/agents/industrial/aml-job-tools.ts +6 -4
  2012. package/server/services/workshop/agents/industrial/audit-query.ts +66 -66
  2013. package/server/services/workshop/agents/industrial/bench-approval-only.ts +117 -0
  2014. package/server/services/workshop/agents/industrial/daq-tools.ts +79 -20
  2015. package/server/services/workshop/agents/industrial/dcw-tools.ts +3 -0
  2016. package/server/services/workshop/agents/industrial/exp-tools.ts +104 -104
  2017. package/server/services/workshop/agents/industrial/fallback-hints.ts +31 -0
  2018. package/server/services/workshop/agents/industrial/manual-approval.ts +2 -2
  2019. package/server/services/workshop/agents/industrial/ops-tools.ts +64 -21
  2020. package/server/services/workshop/agents/industrial/param-tools.ts +69 -69
  2021. package/server/services/workshop/agents/industrial/recipe-propose-tools.ts +4 -3
  2022. package/server/services/workshop/agents/mock-agent.ts +4 -0
  2023. package/server/services/workshop/agents/node-bindings.repo.ts +210 -210
  2024. package/server/services/workshop/agents/node-delegation.ts +204 -204
  2025. package/server/services/workshop/agents/omp-agent/agentteam-audit.ts +147 -0
  2026. package/server/services/workshop/agents/omp-agent/client.ts +1 -1
  2027. package/server/services/workshop/agents/omp-agent/core.ts +146 -146
  2028. package/server/services/workshop/agents/omp-agent/event-mapping.ts +21 -0
  2029. package/server/services/workshop/agents/omp-agent/facade.ts +8 -8
  2030. package/server/services/workshop/agents/omp-agent/helpers.ts +37 -37
  2031. package/server/services/workshop/agents/omp-agent/index.ts +16 -16
  2032. package/server/services/workshop/agents/omp-agent/tools-steer.ts +100 -6
  2033. package/server/services/workshop/agents/omp-agent/types.ts +45 -45
  2034. package/server/services/workshop/agents/opencode-agent/core.ts +77 -77
  2035. package/server/services/workshop/agents/opencode-agent/facade.ts +8 -8
  2036. package/server/services/workshop/agents/opencode-agent/helpers.ts +29 -29
  2037. package/server/services/workshop/agents/opencode-agent/hitl.ts +113 -113
  2038. package/server/services/workshop/agents/opencode-agent/index.ts +16 -16
  2039. package/server/services/workshop/agents/opencode-agent/lifecycle.ts +44 -44
  2040. package/server/services/workshop/agents/opencode-agent/server.ts +244 -244
  2041. package/server/services/workshop/agents/opencode-agent/turn.ts +278 -278
  2042. package/server/services/workshop/agents/opencode-agent/types.ts +54 -54
  2043. package/server/services/workshop/agents/tool-classes.ts +56 -44
  2044. package/server/services/workshop/aml/clean.ts +120 -120
  2045. package/server/services/workshop/aml/dataset-builder.ts +4 -0
  2046. package/server/services/workshop/aml/entity.ts +367 -367
  2047. package/server/services/workshop/aml/env-lease.ts +178 -148
  2048. package/server/services/workshop/aml/job-orchestrator/broadcast.ts +37 -37
  2049. package/server/services/workshop/aml/job-orchestrator/control.ts +94 -94
  2050. package/server/services/workshop/aml/job-orchestrator/failure.ts +96 -96
  2051. package/server/services/workshop/aml/job-orchestrator/index.ts +22 -22
  2052. package/server/services/workshop/aml/job-orchestrator/process.ts +101 -101
  2053. package/server/services/workshop/aml/job-orchestrator/shared.ts +53 -53
  2054. package/server/services/workshop/aml/job-orchestrator/status.ts +20 -20
  2055. package/server/services/workshop/aml/job-orchestrator/tick.ts +37 -37
  2056. package/server/services/workshop/aml/model-registry.ts +16 -2
  2057. package/server/services/workshop/aml/python/__pycache__/aml_eval.cpython-312.pyc +0 -0
  2058. package/server/services/workshop/aml/python/__pycache__/amlkit.cpython-312.pyc +0 -0
  2059. package/server/services/workshop/aml/python/__pycache__/train-example.cpython-312.pyc +0 -0
  2060. package/server/services/workshop/aml/python/__pycache__/train-hybrid-example.cpython-312.pyc +0 -0
  2061. package/server/services/workshop/aml/python/train-example.py +92 -92
  2062. package/server/services/workshop/aml/runtime.ts +137 -137
  2063. package/server/services/workshop/aml/stats.ts +140 -140
  2064. package/server/services/workshop/aml/twin/calibration-worker.ts +150 -150
  2065. package/server/services/workshop/aml/twin/model-backed-provider.ts +332 -332
  2066. package/server/services/workshop/aml/twin/physics-spec-draft.ts +185 -185
  2067. package/server/services/workshop/aml/twin/prompt-composer.ts +143 -143
  2068. package/server/services/workshop/aml/twin/training-plans.ts +260 -260
  2069. package/server/services/workshop/aml/twin/write-guard.ts +19 -19
  2070. package/server/services/workshop/assets/character-asset.repo.ts +1 -1
  2071. package/server/services/workshop/assets/device-twin.repo.ts +1 -1
  2072. package/server/services/workshop/bench-mode.ts +22 -0
  2073. package/server/services/workshop/daq/alarm-notify.ts +122 -102
  2074. package/server/services/workshop/daq/daq-controller/contracts.ts +39 -39
  2075. package/server/services/workshop/daq/daq-controller/crud.ts +210 -210
  2076. package/server/services/workshop/daq/daq-controller/driver-probe.ts +68 -67
  2077. package/server/services/workshop/daq/daq-controller/facade.ts +28 -28
  2078. package/server/services/workshop/daq/daq-controller/frames.ts +138 -137
  2079. package/server/services/workshop/daq/daq-controller/helpers.ts +52 -52
  2080. package/server/services/workshop/daq/daq-controller/index.ts +22 -22
  2081. package/server/services/workshop/daq/daq-controller/sweep-alarms.ts +214 -186
  2082. package/server/services/workshop/daq/daq-controller/types.ts +5 -0
  2083. package/server/services/workshop/daq/daq-node.ts +7 -0
  2084. package/server/services/workshop/daq/daq-templates.ts +235 -225
  2085. package/server/services/workshop/daq/drivers/mock.ts +130 -130
  2086. package/server/services/workshop/daq/drivers/modbus-rtu.ts +67 -67
  2087. package/server/services/workshop/daq/drivers/modbus-tcp.ts +321 -310
  2088. package/server/services/workshop/daq/drivers/opcua.ts +227 -227
  2089. package/server/services/workshop/daq/drivers/s7-stub.ts +29 -29
  2090. package/server/services/workshop/daq/field-group.ts +266 -0
  2091. package/server/services/workshop/daq/host-bindings.ts +71 -71
  2092. package/server/services/workshop/daq/host-ports.ts +65 -65
  2093. package/server/services/workshop/daq/infra-credentials.ts +201 -0
  2094. package/server/services/workshop/daq/infra.ts +250 -229
  2095. package/server/services/workshop/daq/ingest-policy.ts +80 -66
  2096. package/server/services/workshop/daq/objectstore/index.ts +88 -88
  2097. package/server/services/workshop/daq/storage/index.ts +157 -4
  2098. package/server/services/workshop/daq/storage/retention.ts +142 -0
  2099. package/server/services/workshop/daq/storage/sqlite.adapter.ts +16 -3
  2100. package/server/services/workshop/daq/storage/timescale-rollup.ts +600 -0
  2101. package/server/services/workshop/daq/storage/timescale.adapter.ts +46 -13
  2102. package/server/services/workshop/daq/storage/tsdb-port.ts +120 -0
  2103. package/server/services/workshop/db/aml-team-seeds.ts +118 -118
  2104. package/server/services/workshop/db/backup-registry.ts +33 -33
  2105. package/server/services/workshop/db/channel-member.repo.ts +122 -122
  2106. package/server/services/workshop/db/channel.repo.ts +203 -203
  2107. package/server/services/workshop/db/chat-message.repo.ts +261 -233
  2108. package/server/services/workshop/db/database/index.ts +18 -18
  2109. package/server/services/workshop/db/database/json.ts +14 -14
  2110. package/server/services/workshop/db/database/open.ts +6 -0
  2111. package/server/services/workshop/db/database/rows.ts +2 -0
  2112. package/server/services/workshop/db/database/schema.ts +8 -0
  2113. package/server/services/workshop/db/database/seed-data.ts +60 -60
  2114. package/server/services/workshop/db/database/seed.ts +6 -6
  2115. package/server/services/workshop/db/hitl-request.repo.ts +221 -221
  2116. package/server/services/workshop/db/notification.repo.ts +199 -199
  2117. package/server/services/workshop/db/readonly.ts +30 -30
  2118. package/server/services/workshop/db/scheduled-task.repo.ts +235 -235
  2119. package/server/services/workshop/db/schema.sql +7 -0
  2120. package/server/services/workshop/db/task.repo.ts +8 -3
  2121. package/server/services/workshop/db/transaction.ts +72 -72
  2122. package/server/services/workshop/dcw/dcw-controller/actuation.ts +7 -0
  2123. package/server/services/workshop/dcw/dcw-controller/contracts.ts +16 -16
  2124. package/server/services/workshop/dcw/dcw-controller/control.ts +78 -78
  2125. package/server/services/workshop/dcw/dcw-controller/crud.ts +5 -0
  2126. package/server/services/workshop/dcw/dcw-controller/facade.ts +19 -19
  2127. package/server/services/workshop/dcw/dcw-controller/helpers.ts +62 -61
  2128. package/server/services/workshop/dcw/dcw-controller/index.ts +22 -22
  2129. package/server/services/workshop/dcw/dcw-controller/params.ts +97 -97
  2130. package/server/services/workshop/dcw/dcw-controller/products.ts +103 -103
  2131. package/server/services/workshop/dcw/dcw-controller/recipes.ts +14 -8
  2132. package/server/services/workshop/dcw/dcw-controller/state.ts +88 -71
  2133. package/server/services/workshop/dcw/dcw-controller/write-audit.ts +1 -1
  2134. package/server/services/workshop/dcw/dcw-controller/write.ts +225 -224
  2135. package/server/services/workshop/dcw/dcw-templates.ts +136 -136
  2136. package/server/services/workshop/dcw/drivers/mqtt.ts +4 -3
  2137. package/server/services/workshop/dcw/mqtt-payload.ts +64 -0
  2138. package/server/services/workshop/dcw/param-conversion.ts +78 -78
  2139. package/server/services/workshop/dcw/param-map.repo.ts +349 -349
  2140. package/server/services/workshop/dcw/plugin-bridge.ts +45 -45
  2141. package/server/services/workshop/dcw/recipe-rollback-manager/contracts.ts +26 -26
  2142. package/server/services/workshop/dcw/recipe-rollback-manager/facade.ts +13 -13
  2143. package/server/services/workshop/dcw/recipe-rollback-manager/helpers.ts +30 -30
  2144. package/server/services/workshop/dcw/recipe-rollback-manager/index.ts +17 -17
  2145. package/server/services/workshop/dcw/recipe-rollback-manager/internal.ts +33 -33
  2146. package/server/services/workshop/dcw/recipe-rollback-manager/judge.ts +52 -52
  2147. package/server/services/workshop/dcw/recipe-rollback-manager/lock.ts +138 -137
  2148. package/server/services/workshop/dcw/recipe-rollback-manager/state.ts +21 -21
  2149. package/server/services/workshop/dcw/recipe-rollback-manager/types.ts +3 -3
  2150. package/server/services/workshop/dcw/recipe-rollback-manager/views.ts +214 -214
  2151. package/server/services/workshop/eda/data-export.ts +275 -274
  2152. package/server/services/workshop/eda/template-repo.ts +101 -101
  2153. package/server/services/workshop/exp/exp-collector.ts +275 -275
  2154. package/server/services/workshop/exp/exp-state.repo.ts +339 -339
  2155. package/server/services/workshop/json-store.mjs +143 -137
  2156. package/server/services/workshop/line-scope.ts +80 -80
  2157. package/server/services/workshop/mes/mes-controller.ts +1164 -1164
  2158. package/server/services/workshop/mes/mes-hook.ts +594 -567
  2159. package/server/services/workshop/net/ssrf.ts +83 -74
  2160. package/server/services/workshop/ontology/subgraph.core.ts +300 -300
  2161. package/server/services/workshop/ontology/subgraph.service.ts +113 -113
  2162. package/server/services/workshop/ops/error-ledger.ts +209 -209
  2163. package/server/services/workshop/optimization/profile-adopt.service.ts +28 -2
  2164. package/server/services/workshop/optimization/python/.mimosa/hook-state/session_187ec97f45d4bd02369bbe94da527cf1.json +1 -0
  2165. package/server/services/workshop/optimization/python/.mimosa/hook-state/session_187ec97f45d4bd02369bbe94da527cf1.mvjqkcs6-68688-fb7131a89c.baseline/190a6772a4e43801737b4ba6072eb9d53d3099b5d8a9e6f57bc5e8592a26a6c4.source +274 -0
  2166. package/server/services/workshop/optimization/python/.mimosa/hook-status/session_187ec97f45d4bd02369bbe94da527cf1-01ed7f04fa.json +14 -0
  2167. package/server/services/workshop/optimization/python/__pycache__/problems.cpython-312.pyc +0 -0
  2168. package/server/services/workshop/plugins/host/api.mjs +90 -90
  2169. package/server/services/workshop/plugins/host/config.mjs +135 -135
  2170. package/server/services/workshop/plugins/host/index.mjs +23 -23
  2171. package/server/services/workshop/plugins/host/init.mjs +128 -109
  2172. package/server/services/workshop/plugins/host/reload.mjs +8 -1
  2173. package/server/services/workshop/plugins/host/rollback.mjs +72 -72
  2174. package/server/services/workshop/plugins/host/state.mjs +54 -54
  2175. package/server/services/workshop/plugins/host/toggle.mjs +64 -64
  2176. package/server/services/workshop/plugins/host.mjs +9 -9
  2177. package/server/services/workshop/runtime/agent-runtime/facade.ts +7 -7
  2178. package/server/services/workshop/runtime/agent-runtime/harness-failure.ts +58 -0
  2179. package/server/services/workshop/runtime/agent-runtime/helpers.ts +18 -18
  2180. package/server/services/workshop/runtime/agent-runtime/index.ts +19 -19
  2181. package/server/services/workshop/runtime/agent-runtime/lifecycle.ts +137 -137
  2182. package/server/services/workshop/runtime/agent-runtime/message.ts +37 -2
  2183. package/server/services/workshop/runtime/agent-runtime/state.ts +12 -2
  2184. package/server/services/workshop/runtime/agent-runtime/types.ts +2 -0
  2185. package/server/services/workshop/runtime/channel-runtime.ts +80 -1
  2186. package/server/services/workshop/runtime/chat-mention.ts +164 -164
  2187. package/server/services/workshop/runtime/chat-projection.ts +246 -246
  2188. package/server/services/workshop/runtime/embedding-provider.ts +100 -83
  2189. package/server/services/workshop/runtime/execution-mode.ts +8 -0
  2190. package/server/services/workshop/runtime/manager/admin-agents.ts +268 -268
  2191. package/server/services/workshop/runtime/manager/admin-channel.ts +19 -14
  2192. package/server/services/workshop/runtime/manager/bus.ts +182 -182
  2193. package/server/services/workshop/runtime/manager/channel-template-constants.ts +20 -20
  2194. package/server/services/workshop/runtime/manager/chat-reply.ts +181 -181
  2195. package/server/services/workshop/runtime/manager/chat.ts +446 -386
  2196. package/server/services/workshop/runtime/manager/contracts.ts +7 -0
  2197. package/server/services/workshop/runtime/manager/facade.ts +24 -24
  2198. package/server/services/workshop/runtime/manager/helpers.ts +122 -119
  2199. package/server/services/workshop/runtime/manager/index.ts +42 -42
  2200. package/server/services/workshop/runtime/manager/internal.ts +73 -73
  2201. package/server/services/workshop/runtime/manager/notifications.ts +108 -108
  2202. package/server/services/workshop/runtime/manager/runtime-observe.ts +1 -3
  2203. package/server/services/workshop/runtime/manager/runtime-wiring.ts +18 -6
  2204. package/server/services/workshop/runtime/manager/schedules.ts +7 -0
  2205. package/server/services/workshop/runtime/manager/state.ts +14 -0
  2206. package/server/services/workshop/runtime/manager/tasks.ts +34 -1
  2207. package/server/services/workshop/runtime/manager/teams.ts +148 -148
  2208. package/server/services/workshop/runtime/manager/workspace.ts +1 -0
  2209. package/server/services/workshop/runtime/memory/contracts.ts +18 -18
  2210. package/server/services/workshop/runtime/memory/facade.ts +10 -10
  2211. package/server/services/workshop/runtime/memory/helpers.ts +196 -196
  2212. package/server/services/workshop/runtime/memory/index.ts +27 -27
  2213. package/server/services/workshop/runtime/memory/score.ts +33 -33
  2214. package/server/services/workshop/runtime/memory/state.ts +40 -40
  2215. package/server/services/workshop/runtime/monitor.ts +3 -3
  2216. package/server/services/workshop/runtime/platform-notice.ts +113 -113
  2217. package/server/services/workshop/runtime/schedule-runtime.ts +347 -347
  2218. package/server/services/workshop/runtime/scheduler-loop/contracts.ts +29 -29
  2219. package/server/services/workshop/runtime/scheduler-loop/facade.ts +7 -7
  2220. package/server/services/workshop/runtime/scheduler-loop/helpers.ts +14 -14
  2221. package/server/services/workshop/runtime/scheduler-loop/index.ts +16 -16
  2222. package/server/services/workshop/runtime/scheduler-loop/rules.ts +17 -1
  2223. package/server/services/workshop/runtime/scheduler-loop/tick.ts +31 -3
  2224. package/server/services/workshop/runtime/task-engine/create.ts +15 -1
  2225. package/server/services/workshop/runtime/task-engine/facade.ts +7 -7
  2226. package/server/services/workshop/runtime/task-engine/helpers.ts +2 -0
  2227. package/server/services/workshop/runtime/task-engine/index.ts +15 -15
  2228. package/server/services/workshop/runtime/task-engine/lifecycle.ts +68 -9
  2229. package/server/services/workshop/runtime/task-engine/types.ts +3 -3
  2230. package/server/services/workshop/runtime/user-notification-hub.ts +192 -192
  2231. package/server/services/workshop/settings.ts +35 -1
  2232. package/server/services/workshop/types/task.ts +2 -0
  2233. package/server/types/pg.d.ts +49 -49
  2234. package/server/utils/approval-gate.ts +67 -67
  2235. package/server/utils/asset-auth.ts +15 -0
  2236. package/server/utils/mojibake-guard.ts +29 -29
  2237. package/server/utils/request-ip.ts +29 -0
  2238. package/server/utils/response.ts +3 -6
  2239. package/server/utils/stability-severity.ts +77 -77
  2240. package/shared/config/groups.mjs +241 -241
  2241. package/shared/config/schema.json +171 -152
  2242. package/shared/daq-protocol.ts +8 -0
  2243. package/shared/dcw-protocol/catalog.ts +1 -0
  2244. package/shared/dcw-protocol/closed-loop.ts +2 -0
  2245. package/shared/lru.mjs +97 -97
  2246. package/tui/README.md +74 -74
  2247. package/tui/aw-tui.mjs +445 -445
  2248. package/tui/commands/index.mjs +287 -287
  2249. package/tui/components/chat-log.mjs +42 -42
  2250. package/tui/components/monitor-pane.mjs +39 -39
  2251. package/tui/components/root.mjs +53 -53
  2252. package/tui/components/status-bar.mjs +33 -33
  2253. package/tui/lib/api.mjs +82 -82
  2254. package/tui/lib/pickers.mjs +121 -121
  2255. package/tui/lib/reducers.mjs +218 -218
  2256. package/tui/lib/state.mjs +86 -86
  2257. package/tui/lib/virtual-terminal.mjs +48 -48
  2258. package/tui/lib/ws.mjs +125 -125
  2259. package/tui/theme.mjs +38 -38
  2260. package/.output/public/_nuxt/9Kt-rxrm.js +0 -1
  2261. package/.output/public/_nuxt/ATAvN55g.js +0 -1
  2262. package/.output/public/_nuxt/B3GEA4IW.js +0 -1
  2263. package/.output/public/_nuxt/B9qIhT7k2.js +0 -1
  2264. package/.output/public/_nuxt/BBTI9r9T2.js +0 -1
  2265. package/.output/public/_nuxt/BE9oKpOt.js +0 -1
  2266. package/.output/public/_nuxt/BHOjkDAJ.js +0 -21
  2267. package/.output/public/_nuxt/BTaGYNZF2.js +0 -1
  2268. package/.output/public/_nuxt/BXUDD9fv.js +0 -1
  2269. package/.output/public/_nuxt/BXbZ_hei.js +0 -1
  2270. package/.output/public/_nuxt/BaGy_jAI2.js +0 -1
  2271. package/.output/public/_nuxt/BdfAuX81.js +0 -1
  2272. package/.output/public/_nuxt/BoXKUOiN2.js +0 -1
  2273. package/.output/public/_nuxt/Buj_DMJ-.js +0 -1
  2274. package/.output/public/_nuxt/Bv7dyPx4.js +0 -1
  2275. package/.output/public/_nuxt/BvjY-Xks.js +0 -1
  2276. package/.output/public/_nuxt/BxC9PAu-2.js +0 -1
  2277. package/.output/public/_nuxt/Bzfzp9-f.js +0 -1
  2278. package/.output/public/_nuxt/CT4bi_Y4.js +0 -1
  2279. package/.output/public/_nuxt/CTGJHZ8X2.js +0 -1
  2280. package/.output/public/_nuxt/CWcaJnFp.js +0 -1
  2281. package/.output/public/_nuxt/CeCSjB9O2.js +0 -1
  2282. package/.output/public/_nuxt/CnoJJb7B.js +0 -1
  2283. package/.output/public/_nuxt/Crf8_Ad02.js +0 -1
  2284. package/.output/public/_nuxt/CtMTOx_-2.js +0 -1
  2285. package/.output/public/_nuxt/Cv9OcYm3.js +0 -1
  2286. package/.output/public/_nuxt/CxIF09Zj2.js +0 -1
  2287. package/.output/public/_nuxt/CxR0TyUA.js +0 -1
  2288. package/.output/public/_nuxt/D9tNM-1a.js +0 -9
  2289. package/.output/public/_nuxt/DL8QM0x5.js +0 -1
  2290. package/.output/public/_nuxt/DO9Y3eoU.js +0 -20
  2291. package/.output/public/_nuxt/DQLBGo6O.js +0 -1
  2292. package/.output/public/_nuxt/DSqQKrMK2.js +0 -1
  2293. package/.output/public/_nuxt/DXc4yISs.js +0 -47
  2294. package/.output/public/_nuxt/DXmEuVFQ2.js +0 -1
  2295. package/.output/public/_nuxt/DeXAMdSa2.js +0 -1
  2296. package/.output/public/_nuxt/DjjOAXrj2.js +0 -1
  2297. package/.output/public/_nuxt/DkRozlDP2.js +0 -1
  2298. package/.output/public/_nuxt/DoprKJ5a2.js +0 -1
  2299. package/.output/public/_nuxt/DvI5fMX12.js +0 -1
  2300. package/.output/public/_nuxt/DzWyfYJ12.js +0 -2
  2301. package/.output/public/_nuxt/EXs4hr_w2.js +0 -2
  2302. package/.output/public/_nuxt/K5Xen0wZ2.js +0 -1
  2303. package/.output/public/_nuxt/LS9Wa05P.js +0 -1
  2304. package/.output/public/_nuxt/MmlCf-EZ.js +0 -1
  2305. package/.output/public/_nuxt/OmpTerminalPanel.DMWgGwDs.css +0 -1
  2306. package/.output/public/_nuxt/PluginSlot.BqBzLD4T.css +0 -1
  2307. package/.output/public/_nuxt/TownView.DQaU1HuK.css +0 -1
  2308. package/.output/public/_nuxt/TugRY_4O.js +0 -1
  2309. package/.output/public/_nuxt/UgCvr7b2.js +0 -1
  2310. package/.output/public/_nuxt/WCG1-KXf2.js +0 -16
  2311. package/.output/public/_nuxt/WybiLTow2.js +0 -8
  2312. package/.output/public/_nuxt/YWsTLN5m.js +0 -1
  2313. package/.output/public/_nuxt/Zn0BZpf0.js +0 -3
  2314. package/.output/public/_nuxt/ZzOyoXex2.js +0 -1
  2315. package/.output/public/_nuxt/_id_.Be5JaH-P.css +0 -1
  2316. package/.output/public/_nuxt/_wsId_.DSOfdfx2.css +0 -1
  2317. package/.output/public/_nuxt/agents.CRomddYR.css +0 -1
  2318. package/.output/public/_nuxt/aml.DgOMpDpv.css +0 -1
  2319. package/.output/public/_nuxt/builds/meta/02ba4bc7-f353-4183-a619-716921b5f0dc.json +0 -1
  2320. package/.output/public/_nuxt/default.CpAx70gC.css +0 -1
  2321. package/.output/public/_nuxt/eNEgl-ZF.js +0 -1
  2322. package/.output/public/_nuxt/fJv3DH8b.js +0 -1
  2323. package/.output/public/_nuxt/hyLdZsOd2.js +0 -1
  2324. package/.output/public/_nuxt/logs.6VGjPS34.css +0 -1
  2325. package/.output/public/_nuxt/monitor.OoNTwfMJ.css +0 -1
  2326. package/.output/public/_nuxt/o8sYG6xx2.js +0 -1
  2327. package/.output/public/_nuxt/ontology.D4P756Tc.css +0 -1
  2328. package/.output/public/_nuxt/operations.C48ggFa5.css +0 -1
  2329. package/.output/public/_nuxt/pages.Dpa28tJW.css +0 -1
  2330. package/.output/public/_nuxt/permissions.CrV-4t-6.css +0 -1
  2331. package/.output/public/_nuxt/px0VQ09m.js +0 -2
  2332. package/.output/public/_nuxt/schedules.DYWOjGHm.css +0 -1
  2333. package/.output/public/_nuxt/teams.DEJoJ4QV.css +0 -1
  2334. package/.output/public/_nuxt/tokens.DKZWCP5v.css +0 -1
  2335. package/.output/public/_nuxt/tools.DP-nsTli.css +0 -1
  2336. package/.output/public/_nuxt/workshop.PT1xhP8C.css +0 -1
  2337. package/.output/server/chunks/_/AuthGate-G74Wr5IV.mjs +0 -716
  2338. package/.output/server/chunks/_/AuthGate-G74Wr5IV.mjs.map +0 -1
  2339. package/.output/server/chunks/_/FormItemContext-DmuQqaeJ.mjs +0 -72
  2340. package/.output/server/chunks/_/FormItemContext-DmuQqaeJ.mjs.map +0 -1
  2341. package/.output/server/chunks/_/OmpTerminalPanel-CVn7GF98.mjs +0 -942
  2342. package/.output/server/chunks/_/OmpTerminalPanel-CVn7GF98.mjs.map +0 -1
  2343. package/.output/server/chunks/_/PluginSlot-CZlGlRoR.mjs +0 -141
  2344. package/.output/server/chunks/_/PluginSlot-CZlGlRoR.mjs.map +0 -1
  2345. package/.output/server/chunks/_/TownView-CaxNtCrZ.mjs +0 -6496
  2346. package/.output/server/chunks/_/TownView-CaxNtCrZ.mjs.map +0 -1
  2347. package/.output/server/chunks/_/_id_-CvCH8aqA.mjs +0 -2045
  2348. package/.output/server/chunks/_/_id_-CvCH8aqA.mjs.map +0 -1
  2349. package/.output/server/chunks/_/_id_-X_k47fyM.mjs +0 -392
  2350. package/.output/server/chunks/_/_id_-X_k47fyM.mjs.map +0 -1
  2351. package/.output/server/chunks/_/_wsId_-CIXvt220.mjs +0 -14589
  2352. package/.output/server/chunks/_/_wsId_-CIXvt220.mjs.map +0 -1
  2353. package/.output/server/chunks/_/agents-Bipi0xxl.mjs +0 -1078
  2354. package/.output/server/chunks/_/agents-Bipi0xxl.mjs.map +0 -1
  2355. package/.output/server/chunks/_/alert-CNGhs--Y.mjs +0 -263
  2356. package/.output/server/chunks/_/alert-CNGhs--Y.mjs.map +0 -1
  2357. package/.output/server/chunks/_/aml-gCTIxLoE.mjs +0 -814
  2358. package/.output/server/chunks/_/aml-gCTIxLoE.mjs.map +0 -1
  2359. package/.output/server/chunks/_/analysis-BrSFajFi.mjs +0 -533
  2360. package/.output/server/chunks/_/analysis-BrSFajFi.mjs.map +0 -1
  2361. package/.output/server/chunks/_/api--f4L9O86.mjs +0 -64
  2362. package/.output/server/chunks/_/api--f4L9O86.mjs.map +0 -1
  2363. package/.output/server/chunks/_/api-CRGCw6io.mjs +0 -53
  2364. package/.output/server/chunks/_/api-CRGCw6io.mjs.map +0 -1
  2365. package/.output/server/chunks/_/api-DKutH26K.mjs +0 -72
  2366. package/.output/server/chunks/_/api-DKutH26K.mjs.map +0 -1
  2367. package/.output/server/chunks/_/api-error-BrL8jXVC.mjs +0 -47
  2368. package/.output/server/chunks/_/api-error-BrL8jXVC.mjs.map +0 -1
  2369. package/.output/server/chunks/_/apiClient-DrCvj3Zb.mjs +0 -81
  2370. package/.output/server/chunks/_/apiClient-DrCvj3Zb.mjs.map +0 -1
  2371. package/.output/server/chunks/_/board-DB55AvRS.mjs +0 -189
  2372. package/.output/server/chunks/_/board-DB55AvRS.mjs.map +0 -1
  2373. package/.output/server/chunks/_/builtin-catalog-edpDcgfL.mjs.map +0 -1
  2374. package/.output/server/chunks/_/card-BECE6y_G.mjs +0 -953
  2375. package/.output/server/chunks/_/card-BECE6y_G.mjs.map +0 -1
  2376. package/.output/server/chunks/_/channel-templates-C0Njk-Ir.mjs +0 -942
  2377. package/.output/server/chunks/_/channel-templates-C0Njk-Ir.mjs.map +0 -1
  2378. package/.output/server/chunks/_/chart-pipeline-BpoWYMK_.mjs.map +0 -1
  2379. package/.output/server/chunks/_/chart-trend-BWeZh5Lv.mjs.map +0 -1
  2380. package/.output/server/chunks/_/checkbox-C6xY5uc6.mjs +0 -439
  2381. package/.output/server/chunks/_/checkbox-C6xY5uc6.mjs.map +0 -1
  2382. package/.output/server/chunks/_/client-only-DQ6Q0w4J.mjs +0 -43
  2383. package/.output/server/chunks/_/client-only-DQ6Q0w4J.mjs.map +0 -1
  2384. package/.output/server/chunks/_/constants-HPHJvjne.mjs +0 -142
  2385. package/.output/server/chunks/_/constants-HPHJvjne.mjs.map +0 -1
  2386. package/.output/server/chunks/_/core-CRlsQhzd.mjs +0 -294
  2387. package/.output/server/chunks/_/core-CRlsQhzd.mjs.map +0 -1
  2388. package/.output/server/chunks/_/daq-VLM0Ud2Y.mjs +0 -1266
  2389. package/.output/server/chunks/_/daq-VLM0Ud2Y.mjs.map +0 -1
  2390. package/.output/server/chunks/_/data-Bgx_w04W.mjs +0 -481
  2391. package/.output/server/chunks/_/data-Bgx_w04W.mjs.map +0 -1
  2392. package/.output/server/chunks/_/dcw-BstEJzQ4.mjs +0 -505
  2393. package/.output/server/chunks/_/dcw-BstEJzQ4.mjs.map +0 -1
  2394. package/.output/server/chunks/_/dcw-driver-badge-Df5wL_ZA.mjs.map +0 -1
  2395. package/.output/server/chunks/_/default-Dmo-rt5V.mjs +0 -2353
  2396. package/.output/server/chunks/_/default-Dmo-rt5V.mjs.map +0 -1
  2397. package/.output/server/chunks/_/descriptions-B3uhDesi.mjs +0 -406
  2398. package/.output/server/chunks/_/descriptions-B3uhDesi.mjs.map +0 -1
  2399. package/.output/server/chunks/_/drawer-DwXxapMg.mjs +0 -834
  2400. package/.output/server/chunks/_/drawer-DwXxapMg.mjs.map +0 -1
  2401. package/.output/server/chunks/_/dropdown-DLrGy-Fs.mjs +0 -14
  2402. package/.output/server/chunks/_/dropdown-DLrGy-Fs.mjs.map +0 -1
  2403. package/.output/server/chunks/_/dropdown-nsGv8Gqx.mjs +0 -540
  2404. package/.output/server/chunks/_/dropdown-nsGv8Gqx.mjs.map +0 -1
  2405. package/.output/server/chunks/_/es-DXSEkmAm.mjs +0 -43
  2406. package/.output/server/chunks/_/es-DXSEkmAm.mjs.map +0 -1
  2407. package/.output/server/chunks/_/firstNotUndefined-laiThpLD.mjs +0 -2448
  2408. package/.output/server/chunks/_/firstNotUndefined-laiThpLD.mjs.map +0 -1
  2409. package/.output/server/chunks/_/form-Cw2Ex9w5.mjs +0 -4712
  2410. package/.output/server/chunks/_/form-Cw2Ex9w5.mjs.map +0 -1
  2411. package/.output/server/chunks/_/hasIn-RYRGomyg.mjs +0 -553
  2412. package/.output/server/chunks/_/hasIn-RYRGomyg.mjs.map +0 -1
  2413. package/.output/server/chunks/_/hitl-CQowkJ6s.mjs +0 -132
  2414. package/.output/server/chunks/_/hitl-CQowkJ6s.mjs.map +0 -1
  2415. package/.output/server/chunks/_/input-CJgB-RL6.mjs +0 -2181
  2416. package/.output/server/chunks/_/input-CJgB-RL6.mjs.map +0 -1
  2417. package/.output/server/chunks/_/input-number-CQKL42p_.mjs +0 -1120
  2418. package/.output/server/chunks/_/input-number-CQKL42p_.mjs.map +0 -1
  2419. package/.output/server/chunks/_/interval-CfceaI3F.mjs +0 -9
  2420. package/.output/server/chunks/_/interval-CfceaI3F.mjs.map +0 -1
  2421. package/.output/server/chunks/_/isNumeric-DQiJ-b15.mjs +0 -7
  2422. package/.output/server/chunks/_/isNumeric-DQiJ-b15.mjs.map +0 -1
  2423. package/.output/server/chunks/_/logs-Dt4ejjjU.mjs +0 -492
  2424. package/.output/server/chunks/_/logs-Dt4ejjjU.mjs.map +0 -1
  2425. package/.output/server/chunks/_/menu-xO8ocVtL.mjs +0 -1952
  2426. package/.output/server/chunks/_/menu-xO8ocVtL.mjs.map +0 -1
  2427. package/.output/server/chunks/_/monitor-vqmGVVN5.mjs +0 -2253
  2428. package/.output/server/chunks/_/monitor-vqmGVVN5.mjs.map +0 -1
  2429. package/.output/server/chunks/_/narrow-fetch-CcG-BPxc.mjs.map +0 -1
  2430. package/.output/server/chunks/_/ontology-ih0HgPpL.mjs +0 -1406
  2431. package/.output/server/chunks/_/ontology-ih0HgPpL.mjs.map +0 -1
  2432. package/.output/server/chunks/_/operations-BHmdVOUk.mjs +0 -311
  2433. package/.output/server/chunks/_/operations-BHmdVOUk.mjs.map +0 -1
  2434. package/.output/server/chunks/_/optimizer-DyvIYE4A.mjs +0 -202
  2435. package/.output/server/chunks/_/optimizer-DyvIYE4A.mjs.map +0 -1
  2436. package/.output/server/chunks/_/pages-C2KTn0U1.mjs +0 -542
  2437. package/.output/server/chunks/_/pages-C2KTn0U1.mjs.map +0 -1
  2438. package/.output/server/chunks/_/pagination-BTzq7dD5.mjs +0 -1346
  2439. package/.output/server/chunks/_/pagination-BTzq7dD5.mjs.map +0 -1
  2440. package/.output/server/chunks/_/permissions-BbTI02WI.mjs +0 -637
  2441. package/.output/server/chunks/_/permissions-BbTI02WI.mjs.map +0 -1
  2442. package/.output/server/chunks/_/pipeline-BgNjQ4J3.mjs +0 -212
  2443. package/.output/server/chunks/_/pipeline-BgNjQ4J3.mjs.map +0 -1
  2444. package/.output/server/chunks/_/plugins-CplEv3mY.mjs +0 -272
  2445. package/.output/server/chunks/_/plugins-CplEv3mY.mjs.map +0 -1
  2446. package/.output/server/chunks/_/popconfirm-DuGF7ty-.mjs +0 -340
  2447. package/.output/server/chunks/_/popconfirm-DuGF7ty-.mjs.map +0 -1
  2448. package/.output/server/chunks/_/responsiveObserve-CzRpNXkr.mjs +0 -78
  2449. package/.output/server/chunks/_/responsiveObserve-CzRpNXkr.mjs.map +0 -1
  2450. package/.output/server/chunks/_/schedules-BN4t_4PG.mjs +0 -7172
  2451. package/.output/server/chunks/_/schedules-BN4t_4PG.mjs.map +0 -1
  2452. package/.output/server/chunks/_/segmented-29uEKZ3D.mjs +0 -341
  2453. package/.output/server/chunks/_/segmented-29uEKZ3D.mjs.map +0 -1
  2454. package/.output/server/chunks/_/select-CJb2XrQf.mjs +0 -3923
  2455. package/.output/server/chunks/_/select-CJb2XrQf.mjs.map +0 -1
  2456. package/.output/server/chunks/_/settings-BQaAoT4q.mjs +0 -1014
  2457. package/.output/server/chunks/_/settings-BQaAoT4q.mjs.map +0 -1
  2458. package/.output/server/chunks/_/space-BByD-mFE.mjs +0 -110
  2459. package/.output/server/chunks/_/space-BByD-mFE.mjs.map +0 -1
  2460. package/.output/server/chunks/_/spin-XhbgGeLP.mjs +0 -357
  2461. package/.output/server/chunks/_/spin-XhbgGeLP.mjs.map +0 -1
  2462. package/.output/server/chunks/_/studio-D5r5Rzaq.mjs +0 -336
  2463. package/.output/server/chunks/_/studio-D5r5Rzaq.mjs.map +0 -1
  2464. package/.output/server/chunks/_/switch-DWcwVFxW.mjs +0 -377
  2465. package/.output/server/chunks/_/switch-DWcwVFxW.mjs.map +0 -1
  2466. package/.output/server/chunks/_/table-Zhuo7Fq-.mjs +0 -7546
  2467. package/.output/server/chunks/_/table-Zhuo7Fq-.mjs.map +0 -1
  2468. package/.output/server/chunks/_/tabs-BCwBXjNt.mjs +0 -1924
  2469. package/.output/server/chunks/_/tabs-BCwBXjNt.mjs.map +0 -1
  2470. package/.output/server/chunks/_/tag-CRW-anwy.mjs +0 -1156
  2471. package/.output/server/chunks/_/tag-CRW-anwy.mjs.map +0 -1
  2472. package/.output/server/chunks/_/teams-BUtsNTet.mjs +0 -1203
  2473. package/.output/server/chunks/_/teams-BUtsNTet.mjs.map +0 -1
  2474. package/.output/server/chunks/_/tokens-o8lT3x-p.mjs +0 -1062
  2475. package/.output/server/chunks/_/tokens-o8lT3x-p.mjs.map +0 -1
  2476. package/.output/server/chunks/_/tools-DRb5HTtU.mjs +0 -487
  2477. package/.output/server/chunks/_/tools-DRb5HTtU.mjs.map +0 -1
  2478. package/.output/server/chunks/_/tooltip-GlMrUZzx.mjs +0 -920
  2479. package/.output/server/chunks/_/tooltip-GlMrUZzx.mjs.map +0 -1
  2480. package/.output/server/chunks/_/town-BPA3G6yX.mjs +0 -133
  2481. package/.output/server/chunks/_/town-BPA3G6yX.mjs.map +0 -1
  2482. package/.output/server/chunks/_/town-BV-hbwb5.mjs +0 -75
  2483. package/.output/server/chunks/_/town-BV-hbwb5.mjs.map +0 -1
  2484. package/.output/server/chunks/_/types-D6J7slEa.mjs +0 -5565
  2485. package/.output/server/chunks/_/types-D6J7slEa.mjs.map +0 -1
  2486. package/.output/server/chunks/_/types-DWqIeMRP.mjs +0 -76
  2487. package/.output/server/chunks/_/types-DWqIeMRP.mjs.map +0 -1
  2488. package/.output/server/chunks/_/useAgentHarnessOptions-dDHiEoK2.mjs +0 -124
  2489. package/.output/server/chunks/_/useAgentHarnessOptions-dDHiEoK2.mjs.map +0 -1
  2490. package/.output/server/chunks/_/useAgentTemplateActions-S3dtH5UW.mjs +0 -77
  2491. package/.output/server/chunks/_/useAgentTemplateActions-S3dtH5UW.mjs.map +0 -1
  2492. package/.output/server/chunks/_/useAgentTemplateDialogState-CZzpu5og.mjs +0 -67
  2493. package/.output/server/chunks/_/useAgentTemplateDialogState-CZzpu5og.mjs.map +0 -1
  2494. package/.output/server/chunks/_/useAgentTemplateForm-D8gneIvd.mjs +0 -117
  2495. package/.output/server/chunks/_/useAgentTemplateForm-D8gneIvd.mjs.map +0 -1
  2496. package/.output/server/chunks/_/useAgentTemplatesCatalog-DHUpubKM.mjs +0 -133
  2497. package/.output/server/chunks/_/useAgentTemplatesCatalog-DHUpubKM.mjs.map +0 -1
  2498. package/.output/server/chunks/_/useAmlDatasets-CDg3Qbpv.mjs +0 -92
  2499. package/.output/server/chunks/_/useAmlDatasets-CDg3Qbpv.mjs.map +0 -1
  2500. package/.output/server/chunks/_/useAmlEntities-Bcaput4Y.mjs +0 -86
  2501. package/.output/server/chunks/_/useAmlEntities-Bcaput4Y.mjs.map +0 -1
  2502. package/.output/server/chunks/_/useAmlEnv-Dga_Nq6z.mjs +0 -194
  2503. package/.output/server/chunks/_/useAmlEnv-Dga_Nq6z.mjs.map +0 -1
  2504. package/.output/server/chunks/_/useAmlExperiments-CFngqLM3.mjs +0 -89
  2505. package/.output/server/chunks/_/useAmlExperiments-CFngqLM3.mjs.map +0 -1
  2506. package/.output/server/chunks/_/useAmlFormat-C2sl3MGB.mjs +0 -82
  2507. package/.output/server/chunks/_/useAmlFormat-C2sl3MGB.mjs.map +0 -1
  2508. package/.output/server/chunks/_/useAmlJobs-C7onZkcR.mjs +0 -267
  2509. package/.output/server/chunks/_/useAmlJobs-C7onZkcR.mjs.map +0 -1
  2510. package/.output/server/chunks/_/useAmlModels-B2b3mx4d.mjs +0 -93
  2511. package/.output/server/chunks/_/useAmlModels-B2b3mx4d.mjs.map +0 -1
  2512. package/.output/server/chunks/_/useAmlNotes-6gZX7tbx.mjs +0 -86
  2513. package/.output/server/chunks/_/useAmlNotes-6gZX7tbx.mjs.map +0 -1
  2514. package/.output/server/chunks/_/useAmlPredict-DwOmM2ke.mjs +0 -130
  2515. package/.output/server/chunks/_/useAmlPredict-DwOmM2ke.mjs.map +0 -1
  2516. package/.output/server/chunks/_/useAnalysisFeed-CpPsKh_I.mjs +0 -129
  2517. package/.output/server/chunks/_/useAnalysisFeed-CpPsKh_I.mjs.map +0 -1
  2518. package/.output/server/chunks/_/useDaqAddNode-QtJja03_.mjs +0 -142
  2519. package/.output/server/chunks/_/useDaqAddNode-QtJja03_.mjs.map +0 -1
  2520. package/.output/server/chunks/_/useDaqDetailBinding-Dd5c4bep.mjs +0 -70
  2521. package/.output/server/chunks/_/useDaqDetailBinding-Dd5c4bep.mjs.map +0 -1
  2522. package/.output/server/chunks/_/useDaqDetailFrames-C2gvrOr6.mjs +0 -79
  2523. package/.output/server/chunks/_/useDaqDetailFrames-C2gvrOr6.mjs.map +0 -1
  2524. package/.output/server/chunks/_/useDaqDetailHistory-Bhht_iFw.mjs +0 -176
  2525. package/.output/server/chunks/_/useDaqDetailHistory-Bhht_iFw.mjs.map +0 -1
  2526. package/.output/server/chunks/_/useDaqDetailNode-BayXtr5W.mjs +0 -99
  2527. package/.output/server/chunks/_/useDaqDetailNode-BayXtr5W.mjs.map +0 -1
  2528. package/.output/server/chunks/_/useDaqDetailParams-D8d1l3_R.mjs +0 -159
  2529. package/.output/server/chunks/_/useDaqDetailParams-D8d1l3_R.mjs.map +0 -1
  2530. package/.output/server/chunks/_/useDaqFilters-TYucwywj.mjs +0 -222
  2531. package/.output/server/chunks/_/useDaqFilters-TYucwywj.mjs.map +0 -1
  2532. package/.output/server/chunks/_/useDaqNodeWindow-1DWj2H5G.mjs +0 -90
  2533. package/.output/server/chunks/_/useDaqNodeWindow-1DWj2H5G.mjs.map +0 -1
  2534. package/.output/server/chunks/_/useDaqOptimizations-o5hubsm8.mjs +0 -136
  2535. package/.output/server/chunks/_/useDaqOptimizations-o5hubsm8.mjs.map +0 -1
  2536. package/.output/server/chunks/_/useDaqStream-BCTOU87S.mjs +0 -395
  2537. package/.output/server/chunks/_/useDaqStream-BCTOU87S.mjs.map +0 -1
  2538. package/.output/server/chunks/_/useDaqTemplates-Fj64LHfn.mjs +0 -187
  2539. package/.output/server/chunks/_/useDaqTemplates-Fj64LHfn.mjs.map +0 -1
  2540. package/.output/server/chunks/_/useDashboardCharts-D45083s_.mjs +0 -354
  2541. package/.output/server/chunks/_/useDashboardCharts-D45083s_.mjs.map +0 -1
  2542. package/.output/server/chunks/_/useDashboardData-Cm_-daeI.mjs +0 -153
  2543. package/.output/server/chunks/_/useDashboardData-Cm_-daeI.mjs.map +0 -1
  2544. package/.output/server/chunks/_/useDcwAddNode-DaqIQSXN.mjs +0 -219
  2545. package/.output/server/chunks/_/useDcwAddNode-DaqIQSXN.mjs.map +0 -1
  2546. package/.output/server/chunks/_/useDcwCards-OhzgHbAI.mjs +0 -67
  2547. package/.output/server/chunks/_/useDcwCards-OhzgHbAI.mjs.map +0 -1
  2548. package/.output/server/chunks/_/useDcwDetailScope-CaWcaiBg.mjs +0 -184
  2549. package/.output/server/chunks/_/useDcwDetailScope-CaWcaiBg.mjs.map +0 -1
  2550. package/.output/server/chunks/_/useDcwDetailTemplates-CrOgqQMX.mjs +0 -148
  2551. package/.output/server/chunks/_/useDcwDetailTemplates-CrOgqQMX.mjs.map +0 -1
  2552. package/.output/server/chunks/_/useDcwFilter-RH511Ra2.mjs +0 -71
  2553. package/.output/server/chunks/_/useDcwFilter-RH511Ra2.mjs.map +0 -1
  2554. package/.output/server/chunks/_/useDcwLedger-Dg61GD1J.mjs +0 -79
  2555. package/.output/server/chunks/_/useDcwLedger-Dg61GD1J.mjs.map +0 -1
  2556. package/.output/server/chunks/_/useDcwLineMutations-CiurWUFF.mjs +0 -137
  2557. package/.output/server/chunks/_/useDcwLineMutations-CiurWUFF.mjs.map +0 -1
  2558. package/.output/server/chunks/_/useDcwLineRun-DTSemEZb.mjs +0 -104
  2559. package/.output/server/chunks/_/useDcwLineRun-DTSemEZb.mjs.map +0 -1
  2560. package/.output/server/chunks/_/useDcwParamApprovals-DpnD-yw0.mjs +0 -121
  2561. package/.output/server/chunks/_/useDcwParamApprovals-DpnD-yw0.mjs.map +0 -1
  2562. package/.output/server/chunks/_/useDcwProducts-CRAl59cn.mjs +0 -93
  2563. package/.output/server/chunks/_/useDcwProducts-CRAl59cn.mjs.map +0 -1
  2564. package/.output/server/chunks/_/useDcwQuery-Cyh_iGa9.mjs +0 -98
  2565. package/.output/server/chunks/_/useDcwQuery-Cyh_iGa9.mjs.map +0 -1
  2566. package/.output/server/chunks/_/useDcwQuickActions-BW5-5HFn.mjs +0 -88
  2567. package/.output/server/chunks/_/useDcwQuickActions-BW5-5HFn.mjs.map +0 -1
  2568. package/.output/server/chunks/_/useDcwRecipes-Ct9bWJwP.mjs +0 -258
  2569. package/.output/server/chunks/_/useDcwRecipes-Ct9bWJwP.mjs.map +0 -1
  2570. package/.output/server/chunks/_/useDcwStream-BerzMqxo.mjs +0 -455
  2571. package/.output/server/chunks/_/useDcwStream-BerzMqxo.mjs.map +0 -1
  2572. package/.output/server/chunks/_/useDcwTemplates-PMVeSLNP.mjs +0 -91
  2573. package/.output/server/chunks/_/useDcwTemplates-PMVeSLNP.mjs.map +0 -1
  2574. package/.output/server/chunks/_/useDcwWrites-CND_sZdb.mjs +0 -140
  2575. package/.output/server/chunks/_/useDcwWrites-CND_sZdb.mjs.map +0 -1
  2576. package/.output/server/chunks/_/useDeviceTwins-FB6rTm-6.mjs +0 -128
  2577. package/.output/server/chunks/_/useDeviceTwins-FB6rTm-6.mjs.map +0 -1
  2578. package/.output/server/chunks/_/useExpConfirmations-b0bE75Yq.mjs +0 -107
  2579. package/.output/server/chunks/_/useExpConfirmations-b0bE75Yq.mjs.map +0 -1
  2580. package/.output/server/chunks/_/useLocalTime-BJ_4vg1E.mjs +0 -55
  2581. package/.output/server/chunks/_/useLocalTime-BJ_4vg1E.mjs.map +0 -1
  2582. package/.output/server/chunks/_/useLogsFormat-B-o4MHy7.mjs +0 -77
  2583. package/.output/server/chunks/_/useLogsFormat-B-o4MHy7.mjs.map +0 -1
  2584. package/.output/server/chunks/_/useLogsManual-Cxka55hz.mjs +0 -89
  2585. package/.output/server/chunks/_/useLogsManual-Cxka55hz.mjs.map +0 -1
  2586. package/.output/server/chunks/_/useLogsQuery-DxMHc7M4.mjs +0 -150
  2587. package/.output/server/chunks/_/useLogsQuery-DxMHc7M4.mjs.map +0 -1
  2588. package/.output/server/chunks/_/useLogsScope-HuOiW-OR.mjs +0 -83
  2589. package/.output/server/chunks/_/useLogsScope-HuOiW-OR.mjs.map +0 -1
  2590. package/.output/server/chunks/_/useMonitorColumns-vVnt3r5Q.mjs +0 -217
  2591. package/.output/server/chunks/_/useMonitorColumns-vVnt3r5Q.mjs.map +0 -1
  2592. package/.output/server/chunks/_/useMonitorData-Bf3w2khj.mjs +0 -135
  2593. package/.output/server/chunks/_/useMonitorData-Bf3w2khj.mjs.map +0 -1
  2594. package/.output/server/chunks/_/useMonitorFormat-DsiVqWoa.mjs +0 -91
  2595. package/.output/server/chunks/_/useMonitorFormat-DsiVqWoa.mjs.map +0 -1
  2596. package/.output/server/chunks/_/useMonitorTerminal-Dj4QwRNW.mjs +0 -71
  2597. package/.output/server/chunks/_/useMonitorTerminal-Dj4QwRNW.mjs.map +0 -1
  2598. package/.output/server/chunks/_/useOperationsFeed-Bg35fcgt.mjs +0 -195
  2599. package/.output/server/chunks/_/useOperationsFeed-Bg35fcgt.mjs.map +0 -1
  2600. package/.output/server/chunks/_/useOpsLog-BEzBrMf4.mjs +0 -149
  2601. package/.output/server/chunks/_/useOpsLog-BEzBrMf4.mjs.map +0 -1
  2602. package/.output/server/chunks/_/useRecipeDispatchApprovals-CZfcMRYk.mjs +0 -156
  2603. package/.output/server/chunks/_/useRecipeDispatchApprovals-CZfcMRYk.mjs.map +0 -1
  2604. package/.output/server/chunks/_/useResponsive-BKDMGTHs.mjs.map +0 -1
  2605. package/.output/server/chunks/_/useTeamActions-CmiuiQiG.mjs +0 -79
  2606. package/.output/server/chunks/_/useTeamActions-CmiuiQiG.mjs.map +0 -1
  2607. package/.output/server/chunks/_/useTeamAddMemberDialog-CMpzf0jO.mjs +0 -84
  2608. package/.output/server/chunks/_/useTeamAddMemberDialog-CMpzf0jO.mjs.map +0 -1
  2609. package/.output/server/chunks/_/useTeamCreateDialog-BnvjXWso.mjs +0 -97
  2610. package/.output/server/chunks/_/useTeamCreateDialog-BnvjXWso.mjs.map +0 -1
  2611. package/.output/server/chunks/_/useTeamDeployDialog-C0FOUYep.mjs +0 -80
  2612. package/.output/server/chunks/_/useTeamDeployDialog-C0FOUYep.mjs.map +0 -1
  2613. package/.output/server/chunks/_/useTeamDialogState-CFRUQxAf.mjs +0 -82
  2614. package/.output/server/chunks/_/useTeamDialogState-CFRUQxAf.mjs.map +0 -1
  2615. package/.output/server/chunks/_/useTeamPluginDialog-Do-07a47.mjs +0 -103
  2616. package/.output/server/chunks/_/useTeamPluginDialog-Do-07a47.mjs.map +0 -1
  2617. package/.output/server/chunks/_/useTeamsCatalog-ClG_gBI8.mjs +0 -123
  2618. package/.output/server/chunks/_/useTeamsCatalog-ClG_gBI8.mjs.map +0 -1
  2619. package/.output/server/chunks/_/useTokenClipboard-CwQpoFeP.mjs +0 -72
  2620. package/.output/server/chunks/_/useTokenClipboard-CwQpoFeP.mjs.map +0 -1
  2621. package/.output/server/chunks/_/useTokenCreate-C4g5eKd3.mjs +0 -115
  2622. package/.output/server/chunks/_/useTokenCreate-C4g5eKd3.mjs.map +0 -1
  2623. package/.output/server/chunks/_/useTokenRename-ClWrxpNk.mjs +0 -87
  2624. package/.output/server/chunks/_/useTokenRename-ClWrxpNk.mjs.map +0 -1
  2625. package/.output/server/chunks/_/useTokenReveal-C8n1Vt9t.mjs +0 -118
  2626. package/.output/server/chunks/_/useTokenReveal-C8n1Vt9t.mjs.map +0 -1
  2627. package/.output/server/chunks/_/useTokensList-CgiH2W1C.mjs +0 -92
  2628. package/.output/server/chunks/_/useTokensList-CgiH2W1C.mjs.map +0 -1
  2629. package/.output/server/chunks/_/useTownBus-D9SoIsAN.mjs.map +0 -1
  2630. package/.output/server/chunks/_/useWorkbenchAuth-DSstfK5Z.mjs +0 -141
  2631. package/.output/server/chunks/_/useWorkbenchAuth-DSstfK5Z.mjs.map +0 -1
  2632. package/.output/server/chunks/_/useWorkbenchWorkspaces-l_0SUOzn.mjs +0 -138
  2633. package/.output/server/chunks/_/useWorkbenchWorkspaces-l_0SUOzn.mjs.map +0 -1
  2634. package/.output/server/chunks/_/useWorkshopApi-Bqe2FlsB.mjs +0 -127
  2635. package/.output/server/chunks/_/useWorkshopApi-Bqe2FlsB.mjs.map +0 -1
  2636. package/.output/server/chunks/_/useWorkshopWs-DP4MbZsb.mjs +0 -1659
  2637. package/.output/server/chunks/_/useWorkshopWs-DP4MbZsb.mjs.map +0 -1
  2638. package/.output/server/chunks/_/useWorkspaceAuth-CzDigJGl.mjs +0 -60
  2639. package/.output/server/chunks/_/useWorkspaceAuth-CzDigJGl.mjs.map +0 -1
  2640. package/.output/server/chunks/_/useWorkspaceChannels-BLtsS6-m.mjs +0 -92
  2641. package/.output/server/chunks/_/useWorkspaceChannels-BLtsS6-m.mjs.map +0 -1
  2642. package/.output/server/chunks/_/useWorkspacePanels-CTwREmq0.mjs +0 -78
  2643. package/.output/server/chunks/_/useWorkspacePanels-CTwREmq0.mjs.map +0 -1
  2644. package/.output/server/chunks/_/useWorkspaceShell-rQHWNNWJ.mjs +0 -168
  2645. package/.output/server/chunks/_/useWorkspaceShell-rQHWNNWJ.mjs.map +0 -1
  2646. package/.output/server/chunks/_/users-BM1ZzxPp.mjs +0 -569
  2647. package/.output/server/chunks/_/users-BM1ZzxPp.mjs.map +0 -1
  2648. package/.output/server/chunks/_/workshop-CUXCV3RH.mjs +0 -546
  2649. package/.output/server/chunks/_/workshop-CUXCV3RH.mjs.map +0 -1
  2650. package/.output/server/chunks/_/workspaces-CmW0cpOt.mjs.map +0 -1
  2651. /package/.output/public/_nuxt/{6P4ZAzxa.js → 6P4ZAzxa2.js} +0 -0
  2652. /package/.output/public/_nuxt/{9j2J4k4w2.js → 9j2J4k4w.js} +0 -0
  2653. /package/.output/public/_nuxt/{BvRk9kiK2.js → DgrK8UCQ.js} +0 -0
  2654. /package/.output/public/_nuxt/{dVw8IHY6.js → dVw8IHY62.js} +0 -0
  2655. /package/.output/public/_nuxt/{k9b520K-2.js → k9b520K-.js} +0 -0
  2656. /package/.output/server/chunks/{_ → build}/builtin-catalog-edpDcgfL.mjs +0 -0
  2657. /package/.output/server/chunks/{_ → build}/chart-pipeline-BpoWYMK_.mjs +0 -0
  2658. /package/.output/server/chunks/{_ → build}/chart-trend-BWeZh5Lv.mjs +0 -0
  2659. /package/.output/server/chunks/{_ → build}/dcw-driver-badge-Df5wL_ZA.mjs +0 -0
  2660. /package/.output/server/chunks/{_ → build}/narrow-fetch-CcG-BPxc.mjs +0 -0
  2661. /package/.output/server/chunks/{_ → build}/useResponsive-BKDMGTHs.mjs +0 -0
  2662. /package/.output/server/chunks/{_ → build}/useTownBus-D9SoIsAN.mjs +0 -0
  2663. /package/.output/server/chunks/{_ → build}/workspaces-CmW0cpOt.mjs +0 -0
@@ -1,641 +1,641 @@
1
- # AgentWorkShop plugin development guide (full)
2
-
3
- > A plugin is a self-contained folder: an `index.mjs` entry (required), an optional
4
- > `client.mjs` (browser enhancement) and an optional `i18n.json` (message bundles).
5
- > One folder enhances both the **server** (routes / tools / DAQ / events) and the
6
- > **browser** (panel components / i18n / settings UI). Drop it in and it loads;
7
- > toggle it and the host hot-reloads. This page is the single authoritative reference;
8
- > the paged docs under `docs/site/plugins/` share the same source of truth.
9
- >
10
- > Applies to: plugin system v2 has been available since **v0.7.29** (frontend component
11
- > injection / plugin settings / plugin i18n / runtime services surface); this document
12
- > describes **v0.8.7**. `ctx.sdkVersion` is currently `0.3.0`.
13
-
14
- ## 1. Folder layout & quick start
15
-
16
- ```bash
17
- aw plugin create my-plugin # scaffolds into <repo>/.AgentWorkShop/plugins/my-plugin (project scope, default)
18
- aw plugin create my-plugin --global # or user scope ~/.AgentWorkShop/plugins/my-plugin (same as -g)
19
- aw plugin list # list all three scopes with enable state
20
- aw plugin disable my-plugin # disable (writes the state file; the server self-applies)
21
- aw plugin enable my-plugin # re-enable
22
- ```
23
-
24
- `aw plugin create` defaults to the **project** scope; `--global` / `-g` writes to the **user** scope; `--project` is the explicit spelling (equal to the default, kept for intuition); `--force` / `-f` overwrites an existing folder. Names are validated against `^[a-z][a-z0-9-]{1,31}$` (lowercase letter first, 2–32 chars). The command writes three files:
25
-
26
- ```
27
- <repo>/.AgentWorkShop/plugins/my-plugin/
28
- ├── index.mjs # server entry (required): export default { name, setup(ctx), … }
29
- ├── client.mjs # browser enhancement (optional, and must be declared as client:'./client.mjs')
30
- └── README.md
31
- ```
32
-
33
- The plugin folder may also contain `i18n.json` (message bundles, see §5). **Plugin KV does not live here** — it lives at `<configRoot>/data/plugins/<plugin>/kv.json` (see §6).
34
-
35
- ### Three scopes and precedence
36
-
37
- The host scans `builtin` → `project` → `user` and keeps the **first** match per name:
38
-
39
- | Scope | Entry path | Notes |
40
- |---|---|---|
41
- | `builtin` | `<packageRoot>/server/plugins-builtin/<name>/index.mjs` | shipped with the package, always present; the current release ships `diag-bridge`, `rag-bridge`, `serial-bridge` and `twin-injection-default` |
42
- | `project` | `<repo>/.AgentWorkShop/plugins/<name>/index.mjs` | travels with the checkout, can be versioned in git |
43
- | `user` | `$AW_HOME/plugins/<name>/index.mjs` (default `~/.AgentWorkShop/plugins`) | user-level, shared across projects |
44
-
45
- Precedence is **builtin > project > user** (the host scans first-wins and de-duplicates through a `seen` set). Mind the direction: the CLI command registry (`cli/core/registry.mjs`) is **last-wins**, i.e. project > user > builtin — the two are opposite and must not be inferred from each other. `aw plugin list` and `aw plugin enable|disable` use this same order, so a toggle always hits the plugin you see.
46
-
47
- ### Enable/disable state file
48
-
49
- Enable state lives in **`<home>/plugins-state.json`**, where `home = $AW_HOME || ~/.AgentWorkShop`. In a source checkout this is **not** the config root:
50
-
51
- - `configRoot = <repo>/.AgentWorkShop` — data and plugin KV live here;
52
- - `home = ~/.AgentWorkShop` — the enable state lives here.
53
-
54
- For a global (home-mode) install the two coincide, which is why older text calling it "the config root" looked harmless — but in a checkout it points at the wrong path. File shape:
55
-
56
- ```json
57
- { "version": 1, "updatedAt": "2026-09-03T00:00:00.000Z", "disabled": ["my-plugin"] }
58
- ```
59
-
60
- `aw plugin enable|disable`, the web plugin page and the host all read and write the same file.
61
-
62
- ## 2. Plugin contract (`index.mjs`)
63
-
64
- `index.mjs` exports a **plain object** (zero import dependencies — the host injects `ctx`):
65
-
66
- ```js
67
- export default {
68
- name: 'my-plugin', // required, globally unique (missing / non-string fails the load)
69
- version: '1.1.0', // optional, shown in the manifest
70
- description: '…', // optional
71
- auth: 'user', // optional: none (default) | user | admin | agent-or-user
72
- client: './client.mjs', // optional: browser entry (must be a relative path string)
73
- settings: [ /* optional: setting declarations, see §4 */ ],
74
- configGroups: [ /* optional: config group declarations, see §4 */ ],
75
- routes: [ // optional: declarative routes (registered after setup returns)
76
- { method: 'GET', path: '/health', handler: () => ({ ok: true }) },
77
- ],
78
- async setup(ctx) { /* server lifecycle, see §3 */ },
79
- }
80
- ```
81
-
82
- The host shape-checks the module at load time (`validatePluginModule`): `name` must be a non-empty string; `setup`, if present, must be a function; `client`, if present, must be a string; `settings`, if present, must be an array. Any violation fails the load, is recorded in `failures` and logged — **error isolation never takes down the main service**.
83
-
84
- Registration order matters: **`await setup(ctx)` runs first, then `routes[]` are registered**. That way a throwing `setup` cannot leave a ghost route behind (a route that is live while the host has no record of the plugin).
85
-
86
- ## 3. Enable, disable and hot reload
87
-
88
- | Phase | Server | Browser |
89
- |---|---|---|
90
- | Load | nitro plugin `server/plugins/aw-plugins.ts` → three-scope scan → dynamic import (`?t=` busts the cache) → shape check → `setup(ctx)` → register `routes[]` | loader (`app/plugins/aw-plugins.client.ts`) fetches `GET /api/plugins/manifest` → fetches `GET /api/plugins/i18n` → dynamic-imports `/api/plugins/client/<name>` → `setup(ctx)` |
91
- | Inject | routes / tools / drivers / templates / processors take effect immediately; setting descriptors merge into `SystemConfigService` | panels inject into page slots through `ctx.ui.registerPanel`; `client:init` is emitted |
92
- | Run | `daq:sample` / `daq:frame` / `dcw:write` / `line:start\\|stop` / `config:changed` / `event:<type>` / `*` | `event:<type>` (same source as WS) / `page:change` / `i18n:changed` |
93
- | Reload | state-file change → full dispose (each `await`ed) → unbind hooks → drop routes → reload → emit `plugins:reloaded` | WS `plugins.reloaded` syncs instantly, plus a 15 s polling fallback → disabled plugins get `ctx.dispose()` |
94
- | Shutdown | per-plugin dispose queue (including a synchronous KV flush) → emit `server:close` | the page's `pagehide` triggers `ctx.dispose()` |
95
-
96
- Facts about hot reload:
97
-
98
- - **The trigger is the state file**: the host `fs.watch`es the directory holding `plugins-state.json`, with a **10 s mtime poll** as a fallback (Windows can drop events for atomic `rename` writes). `aw plugin enable|disable`, the web toggle, or simply touching the file all trigger a full reload **within about 1 s**.
99
- - **Code edits need no process restart**: the reload imports `entry + '?t=' + Date.now()`, which defeats the ESM module cache, so plugin code changes take effect on the next reload. The host has **no separate plugin-directory watcher** — after editing code, touch `plugins-state.json` (or toggle enable/disable once) to make it take effect immediately.
100
- - **Core code still needs a restart**: changes under `server/` and `shared/` are outside plugin hot reload.
101
- - **Race protection**: if the state file changes again while a reload is in flight (a disable→enable burst), the debounced callback hits the in-flight guard; when the load finishes the host compares the disabled-set snapshot and re-runs once if it drifted, so toggle events are never lost.
102
- - **Browser side**: a newly enabled plugin injects within 15 s at the latest (instantly when the WS channel is up); a disabled plugin is unloaded immediately together with all of its panels.
103
-
104
- ## 4. Plugin settings and config groups
105
-
106
- ### Declarative fields (manifest `settings[]`)
107
-
108
- ```js
109
- settings: [
110
- { key: 'base_url', type: 'string', default: 'http://127.0.0.1:8770',
111
- labelKey: 'plugin.my-plugin.settings.base_url', // i18n key (see §5)
112
- label: 'Service URL (fallback label)', description: 'applies live on save' },
113
- { key: 'max_turns', type: 'number', default: 0, min: 0, max: 2000, label: 'Max turns' },
114
- { key: 'auto_enabled', type: 'boolean', default: false, label: 'Automatic mode' },
115
- { key: 'mode', type: 'select', default: 'a', options: ['a', 'b'], label: 'Mode' },
116
- ],
117
- ```
118
-
119
- Hard constraints enforced by the validator (`validatePluginSettings`) — failing any one of them **skips that entry with a warning** while the rest still load:
120
-
121
- | Constraint | Rule |
122
- |---|---|
123
- | `key` | required and must match `/^[A-Za-z0-9_-]+$/` (letters, digits, `-`, `_` only) |
124
- | `type` | must be one of `'string' \| 'number' \| 'boolean' \| 'select'` |
125
- | `default` | **mandatory** — an entry without a default is skipped outright |
126
- | `select` | must supply an `options` array and `default` must be in it (compared as strings) |
127
- | `min` / `max` | honoured for `number` only (they are still written into the descriptor, but mean nothing for other types) |
128
- | `label` | falls back to `key`; `labelKey` wins when present (resolved through i18n) |
129
- | `description` | defaults to an empty string |
130
-
131
- Normalised descriptors always carry `applies: 'live'` (applies on save), and the key is force-namespaced to **`plugins.<plugin>.<key>`** — the same addressing space as global schema keys.
132
-
133
- ### Config groups (manifest `configGroups[]` + `settings[].group`)
134
-
135
- ```js
136
- configGroups: [
137
- { id: 'default', label: 'Connection', description: 'Backend URL and auth', order: 400 },
138
- { id: 'advanced', label: 'Advanced', collapsed: true },
139
- ],
140
- settings: [
141
- { key: 'base_url', type: 'string', default: 'http://127.0.0.1:8770', group: 'default', label: 'Service URL' },
142
- { key: 'timeout_ms', type: 'number', default: 8000, group: 'advanced', label: 'Timeout (ms)' },
143
- ],
144
- ```
145
-
146
- - Group ids are folded into the plugin's own namespace: `default` (or the plugin name) maps to `plugin-<plugin>`, any other declared id `x` maps to `plugin-<plugin>-x`. Two plugins may both declare `network` without overwriting each other.
147
- - `settings[].group` references the **declared id** (`default` / `advanced`), not the prefixed id.
148
- - Fields **without a `group`** land in the plugin's default group whose id is `plugin-<plugin>`; if the plugin never declared a title for that default id, the settings page shows the id itself (i.e. `plugin-<plugin>`). To get a readable title, declare `{ id: 'default', label: '…' }` as above — both shipped built-ins do exactly that.
149
- - Groups are removed automatically when the plugin is unloaded or disabled; no empty sections are left behind.
150
- - There is **no literal config group called "Plugins"**: what you see in Settings → Runtime is the plugin management list (enable switches + health check), a separate piece of UI from the plugin's own config groups.
151
-
152
- > `configGroups` is the field name the host actually reads (`host.mjs` reads `def.configGroups`). The type declaration file `sdk/index.d.mts` spells it `groups?`, which does not match the runtime — this guide and the code win.
153
-
154
- ### Runtime registration (extend conditionally inside `setup`)
155
-
156
- ```js
157
- async setup(ctx) {
158
- // Add a group and get back its real (namespaced) id
159
- const group = ctx.config.defineGroup({ id: 'rules', label: 'Automatic rules', collapsed: true })
160
- // Add a field (equivalent to manifest settings[], but registrable conditionally)
161
- ctx.config.defineField({
162
- key: 'auto_rules', type: 'string', default: '', group: 'rules', label: 'JSON rules',
163
- })
164
- ctx.logger.info(ctx.config.groups().map(g => g.id).join(','))
165
- ctx.logger.info(ctx.config.fields().map(f => f.key).join(','))
166
- // Removal (removeGroup takes the namespaced id returned by defineGroup; removeField takes the short key)
167
- if (group) ctx.config.removeGroup(group.id)
168
- ctx.config.removeField('auto_rules')
169
- }
170
- ```
171
-
172
- `defineGroup` / `defineField` enforce exactly the same validation as the declarative form (an invalid call returns `null` and logs a warning); `removeGroup` / `removeField` return a boolean telling whether anything was actually removed. These groups and fields are removed with the plugin, and re-registering never loses values that were already saved.
173
-
174
- ### Reading and persistence
175
-
176
- - Read with `ctx.config.get('plugins.my-plugin.base_url')` (every call reads the merged effective value, so a save applies live); `ctx.config.all()` returns a full snapshot.
177
- - Subscribe with `ctx.config.onChange(fn)`, which is sugar for `ctx.hooks.on('config:changed', fn)`.
178
- - Runtime overrides persist in `<configRoot>/runtime-settings.json`; `PATCH /api/system/settings` validates against the same descriptors and the settings page renders from them.
179
- - Migration: the `plugins.kb.*` / `plugins.diag.*` keys hard-coded in `shared/config/schema.json` before 0.7.28 were replaced by plugin declarations; on startup the server moves old overrides to the new keys in one pass (keeping the old key until the new one is registered, so data is never dropped).
180
-
181
- ## 5. Plugin i18n (`i18n.json`)
182
-
183
- ```json
184
- {
185
- "zh-CN": { "settings": { "base_url": "服务地址" }, "panel": { "title": "我的面板" } },
186
- "en": { "settings": { "base_url": "Service URL" }, "panel": { "title": "My panel" } }
187
- }
188
- ```
189
-
190
- - The host parses `i18n.json` at the plugin folder root during load (a broken file is ignored without blocking the load).
191
- - `GET /api/plugins/i18n` assembles the bundles of all **enabled** plugins (unauthenticated; UI copy only, **never secrets**) and returns `{ i18n: { "<plugin>": { "<locale>": { … } } }, locales: ["zh-CN", "en"] }`.
192
- - After fetching, the browser loader merges the messages into the vue-i18n namespace `plugin.<plugin>` — host components (settings `labelKey`, panel `titleKey`) resolve them directly — and `ctx.t(key)` resolves against the plugin's own message tree (`ctx.t('panel.title')` → `plugin.my-plugin.panel.title`, falling back to the key when missing).
193
- - On a locale switch the loader emits the `i18n:changed` hook; plugins receive it with `ctx.hooks.on('i18n:changed', fn)` (note: it is **not** on the `ctx.on` delivery surface).
194
- - The manifest exposes `hasI18n` / `settingsCount` / `hasClient` for the frontend.
195
-
196
- ## 6. Server `ctx` reference
197
-
198
- | Surface | Members | Notes |
199
- |---|---|---|
200
- | Identity | `ctx.name` / `ctx.scope` / `ctx.dir` / `ctx.sdkVersion` | `scope ∈ 'builtin' \| 'project' \| 'user'`; `dir` is the absolute plugin folder |
201
- | Hooks | `ctx.hooks.on / once / off / emit` | per-plugin facade; auto-unbound on hot reload, no manual `off` needed |
202
- | Logging | `ctx.logger.debug / info / warn / error` | prefixed with `[aw-plugins] [<plugin>]` |
203
- | Config | `ctx.config.get / all / onChange / defineGroup / defineField / removeGroup / removeField / groups / fields` | effective config (read-only) + change subscription + runtime group/field registration (see §4) |
204
- | Storage | `ctx.kv.get / set / all / bump` | plugin-private KV; **no `reset()`**; in-memory state is authoritative with a 200 ms debounced atomic flush |
205
- | Timers | `ctx.timer.setInterval / setTimeout` | auto-registered for disposal on shutdown and hot reload |
206
- | Cleanup | `ctx.onDispose(fn)` / `ctx.subscriptions.add(d)` | shares one host-owned dispose queue with `ctx.timer` |
207
- | Routes | `ctx.route(method, path, handler)` | mounted at `/api/plugins/<plugin><path>` (exact match); **returns a boolean** |
208
- | Platform | `ctx.api` | platform REST client (loopback origin; unwraps the envelope; call `ctx.api.setToken(token)` for authenticated endpoints) |
209
- | Network | `ctx.http.get(url, opt)` / `ctx.http.post(url, body, opt)` | outbound fetch; the guard is **protocol-only** (http/https), it does not restrict hosts; 8 s default timeout; `headers` pass through |
210
- | Events | `ctx.events.on(type, fn)` / `ctx.events.off(type, fn)` | scene-event sugar: subscribes to `event:<type>` internally (see §7) |
211
- | Paths | `ctx.paths.home / configRoot / dataDir`; `ctx.dataDir` | `ctx.dataDir` is this plugin's KV folder, `<configRoot>/data/plugins/<plugin>` |
212
- | DAQ | `ctx.daq.registerDriver / registerProcessor / registerTemplate / onFrame / onSample / query / nodes` | driver, sink-processor and node-template registration + time-series queries + node metadata snapshot |
213
- | Write control | `ctx.dcw.registerWriteDriver(driver)` | write-driver injection (symmetric to DAQ read drivers): contract `{ kind, available(), write(input), test(cfg), read?(input), meta? }`; disabled plugins lose their drivers on hot reload |
214
- | Tools | `ctx.omp.registerTool({ name, label?, description, parameters, roles?, handler })` | agent tool injection; `roles` accepts `'lead'` and `'worker'` only (see §10) |
215
- | Services | `ctx.services.names()` / `.get(name)` / `.provide(name, getter)` | runtime object surface: `get('daq' \| 'lines' \| 'channels' \| 'plugins')`; `provide` auto-prefixes `<plugin>.` |
216
- | Twin | `ctx.twin.registerPhysicsProvider / registerScenePack / registerObjectiveProfile / registerTrainingAdapter / registerSolverAdapter`; `listProviders / getProviderHealth / resolveProvider / validateProvider / retireProvider / isRegistryAvailable` | hybrid-twin **Provider Registry** bridge: register hot-swappable industrial physics cores / scene packs / solvers (next section) |
217
- | Permissions | `ctx.permissions.lineMode / visibleLineIds / listGrants / setGrants` | line-grant queries and management |
218
-
219
- ### Hybrid-twin provider plugins (`ctx.twin`)
220
-
221
- `ctx.twin` is the plugin surface of the **hybrid-twin Provider Registry**: register an industrial scene's
222
- physics core, scene pack and solvers. `twin_scene_read` / `twin_snapshot_create` / `twin_trial_run` /
223
- `mpc_optimize` resolve the provider through `SceneContract.physicsProfileId` (falling back to the bundled
224
- `twin-injection-default`), so **swapping scenes needs no tool or channel change**.
225
-
226
- | Registration surface | Payload | Notes |
227
- |---|---|---|
228
- | `registerPhysicsProvider(provider)` | `PhysicsProviderManifest` + `initialize` / `step` / `simulate` / `evaluateConstraints`, optional `validateScene` / `calibrate` / `designSafeExperiment` / `estimateUncertainty` / `exportArtifacts` / `health` | the physics core (grey-box / white-box / ROM); `apiVersion` must be `twin-provider.v1` |
229
- | `registerScenePack(pack)` | `{ sceneKind, sceneSchemaVersion, compile?, discover?, constraints?, objectives?, datasetSchema?, metadata? }` | scene pack: compiles field nodes + recipe into a `SceneContract` |
230
- | `registerObjectiveProfile(profile)` | objectives and weights | the MPC objective surface |
231
- | `registerTrainingAdapter(adapter)` / `registerSolverAdapter(adapter)` | training / solver adapters | external solvers (ONNX / ROM / third-party) |
232
- | `listProviders(filter?)` · `getProviderHealth(id, version?)` · `resolveProvider(id, version?)` · `validateProvider(id, version?)` · `retireProvider(id, version?)` · `isRegistryAvailable()` | — | query, health, resolve, validate and retire |
233
-
234
- **Manifest essentials**: `providerId` / `version` / `apiVersion` / `sceneKinds[]` / `backend`
235
- (`typescript` | `pytorch` | `python` | `onnx` | `rom` | `external-solver`) / the four variable tables
236
- (`stateVariables` / `controlVariables` / `disturbanceVariables` / `observationVariables?`) /
237
- `parameterPriors` / `capabilities` (`onlineStep` / `rollout` / `calibration` / `uncertainty` / `externalSolver` / `mpc`) /
238
- `artifactContract`.
239
-
240
- **Generational hot swap**: the lifecycle is `DISCOVERED → VALIDATED → REGISTERED → READY → DRAINING → RETIRED`
241
- (`FAILED` on rejection). A hot reload stages the new **generation** and drains the old one: trials and MPC hold a
242
- lease on the old generation, so **in-flight work is never invalidated**, and `retireProvider` only unloads after
243
- references reach zero.
244
-
245
- **Minimal example** (the bundled injection provider uses this very contract, see
246
- `server/plugins-builtin/twin-injection-default/index.mjs`):
247
-
248
- ```js
249
- export default {
250
- name: 'my-injection-provider',
251
- version: '1.0.0',
252
- auth: 'none',
253
- async setup(ctx) {
254
- const core = await ctx.services.get('twinCore')
255
- const provider = core.createInjectionProvider() // swap in your own physics core
256
- ctx.twin.registerPhysicsProvider(provider)
257
- ctx.twin.registerScenePack({
258
- sceneKind: 'injection',
259
- sceneSchemaVersion: '1.0.0',
260
- compile: () => core.defaultInjectionScene('my-injection-provider'),
261
- })
262
- ctx.logger.info(`registered ${provider.manifest.physicsModelId}@${provider.manifest.version}`)
263
- },
264
- }
265
- ```
266
-
267
- **Where it lives**: the same plugin scopes as any other plugin (see §1) —
268
- `~/.AgentWorkShop/plugins/<plugin>/` (user), `<repo>/.AgentWorkShop/plugins/<plugin>/` (project),
269
- `server/plugins-builtin/<plugin>/` (shipped with the package). Disabling or hot-reloading a plugin
270
- re-stages or drains its generation **without a server restart**.
271
-
272
- ### Communication-protocol plugins (custom interface connections)
273
-
274
- `ctx.daq.registerDriver` / `ctx.dcw.registerWriteDriver` are the **protocol plug-in points**: serial
275
- links, other PLC protocols and private buses all inject here — the main pipelines (sampling loop /
276
- write gateway / frontend forms) need zero changes.
277
-
278
- ```js
279
- ctx.daq.registerDriver({
280
- kind: 'serial', // custom protocol kind (overriding a builtin logs a warning)
281
- async available() { return true }, // protocol-stack probe (missing package → UI shows "not installed")
282
- async sample({ driverConfig }) { return 25.3 }, // reading (scalar or v2 frame envelope)
283
- async test(driverConfig) { return { ok: true, message: 'connected', sampleValue: 25.3 } },
284
- meta: { // self-description (frontend "add node" dropdown + dynamic form)
285
- label: 'Serial (RS-232/485)',
286
- status: 'real',
287
- configFields: [{ key: 'path', label: 'Port path', type: 'string', required: true, placeholder: 'COM3' }],
288
- },
289
- })
290
- ```
291
-
292
- Key points:
293
- - The driver catalog is served via the `drivers` field of `GET /api/workshop/daq` (read) and
294
- `GET /api/workshop/dcw` (write); the DAQ/DCW pages render plugin protocols and their forms from it
295
- (with a ⌁ badge). Drivers registered without `meta` only appear in availability;
296
- - Hot reload clears all plugin drivers first, then re-loads: **disabled/unloaded protocol drivers
297
- take effect immediately upon removal** and never linger until restart;
298
- - Builtin example: `server/plugins-builtin/serial-bridge` (serial Modbus RTU + ASCII line protocol,
299
- with read/write drivers, `health`/`ports`/`probe` APIs, a frontend panel and the `serial_ports`
300
- agent tool) — use it as the template for new protocol plugins.
301
-
302
- ### Where KV lives
303
-
304
- `<configRoot>/data/plugins/<plugin>/kv.json` — **not** inside the plugin folder. Writes are authoritative in memory and flushed atomically (`tmp` + `rename`) after a 200 ms debounce; on shutdown and hot reload the pending debounce is cancelled and the state is flushed synchronously. `ctx.kv` has exactly four methods: `get / set / all / bump`.
305
-
306
- ```js
307
- ctx.kv.set('threshold', 180) // write (flushed after 200 ms)
308
- ctx.kv.get('threshold') // read (undefined if never written)
309
- ctx.kv.bump('alarms') // +1, returns the new value; bump('alarms', -1) decrements
310
- ctx.kv.all() // shallow copy of the whole store
311
- ```
312
-
313
- ## 7. Event reference (server)
314
-
315
- Events are dispatched through a HookBus: **listeners run serially, awaited, in registration order**, and every listener receives the **same unmodified payload object** — it is not a waterfall (only the last non-`undefined` return value is kept, and the host ignores it), and v1 has no veto or interception. A throwing listener is isolated and counted: a success resets the counter, and **8 consecutive failures remove the listener** (circuit breaker).
316
-
317
- ### Lifecycle and platform events
318
-
319
- | Event | When | Payload |
320
- |---|---|---|
321
- | `plugin:host:init` | after every plugin finished `setup` (once) | `{ plugins: string[], failures: number }` |
322
- | `plugins:reloaded` | at the end of a hot reload | `{ plugins: <manifest> }` |
323
- | `config:changed` | `runtime-settings.json` / settings page changed | `{ type, changed: string[], effective, sources }` — **there is no `at` field** |
324
- | `server:close` | on nitro close, after every per-plugin dispose ran | `{ at }` |
325
-
326
- ### Domain events
327
-
328
- | Event | When | Payload |
329
- |---|---|---|
330
- | `daq:sample` | the **publish-level** outlet after pipeline aggregation (same point and cadence as WS `daq.reading`, gated by `publishIntervalMs`) | `{ nodeId, templateRef, value, state, at, lineId }` |
331
- | `daq:frame` | after a multi-shape frame (vector/image) is recorded (metadata, metrics and preview only — no blobs) | `{ nodeId, templateRef, kind, at, lineId, preview?, metrics, thumbUrl?, state }` |
332
- | `dcw:write` | after a write-control ACK is booked (with 10 s same-value de-duplication) | `{ nodeId, name, eng, prevValue, ok, source, lineId, at }`; `source ∈ manual \| recipe \| agent \| rollback` |
333
- | `line:start` | batch window opens | `{ lineId, runId, recipeId, productName }` |
334
- | `line:stop` | batch window closes | `{ lineId, runId }` |
335
- | `event:<scene-type>` | any `broadcastSceneEvent(type, payload)`, exactly the same source as the browser WS feed | the event's own payload |
336
-
337
- ### Wildcards and scene events
338
-
339
- The server wildcard spelling is the **bare star `'*'`**, and the callback receives a `{ type, payload }` wrapper:
340
-
341
- ```js
342
- ctx.hooks.on('*', ({ type, payload }) => {
343
- ctx.logger.debug('event audit', type)
344
- void payload
345
- })
346
- ```
347
-
348
- `ctx.hooks.on('event:*', fn)` is **wrong** — it never fires. To subscribe to scene events by type, use `ctx.events`, which adds the `event:` prefix for you:
349
-
350
- ```js
351
- ctx.events.on('daq.node.changed', (p) => ctx.logger.debug('node changed', p?.op))
352
- ctx.events.on('daq.alarm.changed', (p) => ctx.logger.info('alarm state', p?.nodeId, p?.recovered))
353
- ```
354
-
355
- Common scene events: `daq.reading`, `daq.frame`, `daq.alarm`, `daq.alarm.changed`, `daq.node.changed`, `daq.controller`, `daq.template.changed`, `dcw.node.changed`, `device.created|updated|deleted`, `ops.log`, `permissions.changed`, `plugins.reloaded`, `aml.job|dataset|model`.
356
-
357
- ### Permission changes
358
-
359
- Permission changes reach the plugin bus as the scene event `permissions.changed` (its raw bus name is `event:permissions.changed`). `ctx.hooks.on('permissions:changed', …)` **never fires**; the correct form is:
360
-
361
- ```js
362
- ctx.events.on('permissions.changed', (p) => ctx.logger.info('grants changed', p?.userId))
363
- ```
364
-
365
- ### Config changes
366
-
367
- ```js
368
- ctx.hooks.on('config:changed', (p) => {
369
- ctx.logger.info('config changed', p.changed)
370
- ctx.logger.info('current theme colour', ctx.config.get('theme.primaryColor'))
371
- })
372
- // sugar: ctx.config.onChange(fn)
373
- ```
374
-
375
- ## 8. Browser `client.mjs` (`ctx` reference)
376
-
377
- The client entry must be **declared in the manifest** as `client: './client.mjs'` — merely having the file is not enough. The loader fetches the script from `/api/plugins/client/<plugin>` and calls `setup(ctx)` on the imported module.
378
-
379
- ```js
380
- export function setup(ctx) {
381
- let samples = 0
382
- const counter = ctx.el('strong', {}, ['0'])
383
-
384
- // scene event: pass the event name itself; the literal 'event:*' subscribes to all scene events
385
- ctx.on('daq.reading', () => { samples += 1; counter.textContent = String(samples) })
386
-
387
- // lifecycle hooks only come through ctx.hooks.on (they are not on the ctx.on surface)
388
- ctx.hooks.on('i18n:changed', ({ locale }) => ctx.log.info('locale switched:', locale))
389
-
390
- ctx.ui.registerPanel({
391
- slot: 'plugins.page', // slot name (see below)
392
- name: 'my-panel', // unique within the plugin
393
- titleKey: 'panel.title', // resolves plugin.my-plugin.panel.title (or use a static title)
394
- order: 10,
395
- mount(el) { // el = panel container (the slot renders the title)
396
- const box = ctx.el('div', {}, ['samples:', counter])
397
- el.append(box)
398
- const timer = setInterval(() => { counter.textContent = String(samples) }, 5000)
399
- return () => { clearInterval(timer); box.remove() } // cleanup: called when the panel unmounts
400
- },
401
- })
402
-
403
- ctx.log.info('client injected')
404
- }
405
- ```
406
-
407
- | Member | Notes |
408
- |---|---|
409
- | `ctx.name` / `ctx.sdkVersion` | plugin name / client SDK version |
410
- | `ctx.hooks` | a real HookBus: `client:init` / `page:change` / `i18n:changed` / `client:destroy` |
411
- | `ctx.on(type, fn)` | scene-event subscription (pass the event name; internally `event:<type>`); only the literal `'event:*'` is a wildcard; returns an unsubscribe function |
412
- | `ctx.fetch(path, opt)` | same-origin platform API helper (adds the cookie token, unwraps the `{code,data}` envelope, throws on non-2xx) |
413
- | `ctx.el(tag, attrs, children)` | DOM helper; `style` goes through `cssText`, `class` through `className`, `onXxx` through `addEventListener` |
414
- | `ctx.mount(target, node)` / `ctx.root()` | mount to a selector/element (falling back to `ctx.root()`) / the plugin's private mount point `#aw-plugin-<name>` |
415
- | `ctx.ui.registerPanel(entry)` / `ctx.ui.slots` | register a panel into a named slot, returns an unregister function; `slots` lists the known slot names |
416
- | `ctx.t(key, params?)` | plugin-namespaced translation (`plugin.<name>.<key>`) |
417
- | `ctx.locale` | current UI locale |
418
- | `ctx.log.info / warn / error` | console with an `[aw-plugin:<name>]` prefix |
419
- | `ctx.dispose()` | unload: emits `client:destroy` → collects subscriptions → removes `root()` (idempotent) |
420
-
421
- ### Wildcards and dead subscriptions (the common traps)
422
-
423
- | Spelling | Result |
424
- |---|---|
425
- | `ctx.on('daq.reading', fn)` | correct: subscribes to the scene event `daq.reading` |
426
- | `ctx.on('event:*', fn)` | correct: the only wildcard spelling, receives all scene events |
427
- | `ctx.on('*', fn)` | **dead subscription**: never fires |
428
- | `ctx.on('event:line.start', fn)` | **dead subscription**: it only subscribes to a scene event literally named `event:line.start`, which does not exist |
429
- | `ctx.on('daq:sample', fn)` | **dead subscription**: server hooks never cross to the browser |
430
- | `ctx.hooks.on('page:change', fn)` | correct: lifecycle hooks go through `ctx.hooks` |
431
- | `ctx.on('client:init', fn)` | **dead subscription**: lifecycle hooks are not on the `ctx.on` surface |
432
-
433
- Server hooks (`daq:sample`, `daq:frame`, `dcw:write`, `line:start|stop`) **never reach the browser**; the browser only receives scene events (through the TownBus/WS bridge). Conversely, `page:change` / `i18n:changed` exist on the browser side only.
434
-
435
- ### Panels and page slots
436
-
437
- A host page embeds `<workshop-plugin-slot slot-name="…" />` wherever it should accept injection; `ctx.ui.slots` currently holds:
438
-
439
- | Slot | Location |
440
- |---|---|
441
- | `plugins.page` | the plugin management page (the default drop point) |
442
- | `settings.plugins` | Settings → Runtime, below the plugin management area |
443
- | `dashboard.widgets` | the tail of the dashboard page |
444
-
445
- `registerPanel` returns an `unregisterPanel` function; a panel's `mount(el)` may return a cleanup function (called when the panel unmounts) and may throw — a single panel's failure is isolated by the slot and never affects the other panels or the page.
446
-
447
- ### Unload semantics
448
-
449
- - `ctx.dispose()` is triggered by the **`pagehide`** event (navigating away / entering bfcache; switching tabs does **not** trigger it). It emits `client:destroy`, collects the plugin's own subscriptions and removes `root()`.
450
- - `ctx.dispose()` does **not** unregister panels by itself — panel cleanup happens in the loader, which calls `unregisterPlugin(name)` on disable / hot reload.
451
- - Two hot channels back this up: the WS `plugins.reloaded` event (instant) plus a 15 s polling diff.
452
-
453
- ## 9. Routes and authentication
454
-
455
- `ctx.route(method, path, handler)` registers immediately and returns a **boolean**; `routes[]` in the manifest is registered only after `setup` returns. Both end up in the same route table:
456
-
457
- ```
458
- GET /api/plugins/<plugin>/health ← ctx.route('GET', '/health', handler)
459
- ← routes: [{ method: 'GET', path: '/health', handler }]
460
- ```
461
-
462
- - Matching is **exact**: paths are normalised with a leading `/`, and there are no wildcard segments or sub-route matching.
463
- - The handler receives the h3 `event`; the JSON body has already been pre-read by the platform forwarding layer and attached as **`event.awBody`** (plugins do not import h3).
464
- - The handler's return value is serialised to JSON by nitro; a throw becomes a 500 envelope (with plugin-attributed logging) and never leaks a raw stack.
465
- - **Authentication is enforced declaratively** by the `auth` field, checked **before** your handler, for `routes[]` and `ctx.route()` alike:
466
-
467
- | `auth` | Behaviour |
468
- |---|---|
469
- | `'none'` (default) | no check, the handler runs directly |
470
- | `'user'` | requires a valid user token, otherwise 401 |
471
- | `'admin'` | requires an administrator, otherwise 401 |
472
- | `'agent-or-user'` | accepts an agent identity or a user token |
473
-
474
- **Do not put authentication inside the handler**: `resolveUser(event)` is not importable from a plugin and is not on `ctx`. Declare `auth` instead.
475
-
476
- ```js
477
- ctx.route('GET', '/report', () => ({ plugin: ctx.name, at: new Date().toISOString() }))
478
-
479
- ctx.route('POST', '/threshold', (event) => {
480
- const v = Number(event.awBody?.threshold) // the host pre-read the JSON body
481
- if (!Number.isFinite(v)) return { ok: false, error: 'threshold must be a number' }
482
- ctx.kv.set('threshold', v)
483
- return { ok: true, threshold: v }
484
- })
485
- ```
486
-
487
- ## 10. Tools and team switches
488
-
489
- Tools registered with `ctx.omp.registerTool(def)` appear on every harness tool surface (omp receives them over RPC `set_host_tools`, other engines through the MCP bridge `tools/list`, pi through a tool file, mock through a direct REST invoke). A registry change is **re-pushed** to running sessions — no restart, no sub-process respawn.
490
-
491
- ```js
492
- ctx.omp.registerTool({
493
- name: 'sensor_log',
494
- label: 'Sensor calibration',
495
- description: 'Read or record sensor calibration conclusions',
496
- parameters: { type: 'object', properties: { sensor: { type: 'string' } }, required: ['sensor'] },
497
- roles: ['lead', 'worker'], // only these two literals; omitted = both roles
498
- handler: async (args, agent) => ({ text: `${agent.role}@${agent.channelId}: ${args.sensor}` }),
499
- })
500
- ```
501
-
502
- Never open a `url` / `host` injection hole in the parameter schema — plugin tool arguments come straight from the model, so any "let the model pick the target address" field becomes an SSRF surface.
503
-
504
- ### Team / channel scoped switches
505
-
506
- Beyond the global switch, every team (channel) keeps its own plugin switch set backed by the `channel_plugins` table:
507
-
508
- - **Picked at team creation**: `POST /api/workshop/teams` accepts `plugins: [{ name, enabled }]`, stored under the team id and propagated to the channel on deploy;
509
- - **Toggled at any time**: `GET|PUT /api/workshop/channels/:id/plugins` and `GET|PUT /api/workshop/teams/:id/plugins` (body `{ plugins: [{ name, enabled }] }`, full-replacement semantics, unknown or disabled plugin names are ignored);
510
- - **Semantics**: no explicit rows = unconfigured → every enabled plugin is visible to that team (backward compatible); once rows exist they filter — **a disabled plugin's tools are not injected into that team's agents and dispatch rejects them at the source**;
511
- - **UI**: the workshop teams page (creation checkboxes + team dialog).
512
-
513
- ### Tool registry and per-channel tool selection (2026-10-20)
514
-
515
- Plugin tools no longer live only in a process-local registry: startup, registration and unload project them into `tool_registry` (SQLite) with source, plugin name, scope, label, description, parameter schema, roles, definition hash and availability. Execution code stays in the plugin process; the database is only the catalog and governance source of truth.
516
-
517
- - **Global visibility**: admins open `/tools` (or `GET /api/workshop/tools`) to see built-in and plugin tools, parameter schemas and which channels disabled them; `POST /api/workshop/tools/sync` re-syncs manually.
518
- - **Per-channel selection**: `GET|PUT /api/workshop/channels/:id/tools`, `POST .../tools/reset`;
519
- - `mode='all'` (default): every eligible tool is enabled; only unchecked tools are stored (deny-list);
520
- - `mode='selected'`: only checked tools are enabled (allow-list); new tools stay disabled until selected;
521
- - hard rules (role / channel profile / write guard / plugin master switch) win; a channel cannot open a tool excluded by a hard rule, and explicitly selecting one in `selected` mode returns `409 TOOL_NOT_ELIGIBLE`.
522
- - **Same injection source**: omp `set_host_tools`, pi `AW_PI_TOOLS_FILE` and the MCP `tools/list` used by other harnesses all go through `hostToolsForRole`; the execution layer re-checks in `dispatchHostTool` / `invokeHostTool`, so a disabled tool cannot be called even if an engine cached an old list.
523
- - **UI**: the Channel settings dialog has a Tools section with search, source/state filters, select all/none/reset, and reason badges for hard-rule blocks.
524
-
525
- ### Install a local plugin
526
-
527
- ```bash
528
- aw plugin install <source-dir> [--global|-g] [--name <name>] [--force|-f] [--no-enable]
529
- ```
530
-
531
- Installation only accepts a **local directory** containing `index.mjs`: symlinks and out-of-scope paths are rejected and the target must be a project/user scope; `--force` backs up the old directory first. Installation rewrites `plugins-state.json` to trigger hot reload, and the plugin's tools automatically enter the tool catalog and MCP tool surface. No remote URL or marketplace download.
532
-
533
- ## 11. Complete example
534
-
535
- ```js
536
- // index.mjs — server entry (zero import dependencies; the host injects ctx)
537
- export default {
538
- name: 'my-plugin',
539
- version: '1.0.0',
540
- description: 'Example: over-threshold counting + own API + config groups + agent tool',
541
- auth: 'user',
542
- client: './client.mjs',
543
- configGroups: [
544
- { id: 'default', label: 'My plugin', description: 'Basic configuration', order: 500 },
545
- { id: 'advanced', label: 'Advanced', collapsed: true },
546
- ],
547
- settings: [
548
- { key: 'threshold', type: 'number', default: 180, min: 0, max: 5000, group: 'default',
549
- label: 'Alarm threshold', description: 'applies live on save' },
550
- { key: 'endpoint', type: 'string', default: 'http://127.0.0.1:8080', group: 'advanced',
551
- label: 'External service URL' },
552
- ],
553
- routes: [
554
- { method: 'GET', path: '/health', handler: () => ({ ok: true }) },
555
- ],
556
-
557
- async setup(ctx) {
558
- ctx.logger.info(`loaded (scope=${ctx.scope}, sdk=${ctx.sdkVersion})`)
559
-
560
- const threshold = () => Number(ctx.config.get('plugins.my-plugin.threshold')) || 180
561
-
562
- // 1) publish-level DAQ samples: count over-threshold hits in plugin-private KV
563
- ctx.hooks.on('daq:sample', (s) => {
564
- if (typeof s?.value === 'number' && s.value > threshold())
565
- ctx.kv.bump(`alarm:${s.nodeId}`)
566
- })
567
-
568
- // 2) scene events (ctx.events adds the event: prefix for you)
569
- ctx.events.on('daq.alarm', (a) => ctx.logger.warn('alarm', a?.nodeId))
570
- ctx.events.on('permissions.changed', (p) => ctx.logger.info('grants changed', p?.userId))
571
-
572
- // 3) full event audit: the server wildcard is the bare '*', callback gets { type, payload }
573
- ctx.hooks.on('*', ({ type }) => ctx.logger.debug('event', type))
574
-
575
- // 4) routes[] are registered after setup; ctx.route registers now (returns a boolean)
576
- ctx.route('POST', '/threshold', (event) => {
577
- const v = Number(event.awBody?.threshold)
578
- if (!Number.isFinite(v)) return { ok: false, error: 'threshold must be a number' }
579
- ctx.kv.set('threshold', v)
580
- return { ok: true, threshold: v }
581
- })
582
-
583
- // 5) timers + cleanup: one host-owned dispose queue, run on shutdown and hot reload
584
- ctx.timer.setInterval(() => ctx.kv.set('heartbeat', new Date().toISOString()), 5000)
585
- ctx.onDispose(() => ctx.logger.info('plugin cleaned up'))
586
-
587
- // 6) agent tool (roles accepts 'lead' | 'worker' only)
588
- ctx.omp.registerTool({
589
- name: 'my_alarm_report',
590
- description: 'Read the over-threshold alarm counter recorded by this plugin',
591
- parameters: { type: 'object', properties: { nodeId: { type: 'string' } }, required: ['nodeId'] },
592
- roles: ['lead', 'worker'],
593
- handler: async (args, agent) => ({
594
- text: `${args.nodeId} alarmed ${ctx.kv.get(`alarm:${args.nodeId}`) ?? 0} times (by ${agent.role})`,
595
- }),
596
- })
597
- },
598
- }
599
- ```
600
-
601
- `client.mjs` is in §8 and `i18n.json` in §5. Which scope to install into and how to toggle are in §1.
602
-
603
- ## 12. Troubleshooting
604
-
605
- | Symptom | Cause / fix |
606
- |---|---|
607
- | Plugin code edits have no effect | the host has no plugin-directory watcher: touch `<home>/plugins-state.json`, or toggle `aw plugin enable/disable` once, to trigger a reload (the reload imports with `?t=` to defeat the cache); core `server/` and `shared/` changes still need a process restart |
608
- | Recreated a same-named plugin but routes 404 | a name previously disabled keeps its flag in `<home>/plugins-state.json`; recreating the directory does not reload it — run `aw plugin enable <name>` explicitly after recreating (verified in practice) |
609
- | Load failures are invisible | `aw plugin list` does **not** show them. Use `GET /api/workshop/plugins` (returns `{ plugins, failures, initedAt }`, **no `{code,data}` envelope**) or read `[aw-plugins] 装载失败 …` in the startup log |
610
- | Plugin route 404 | matching is exact; check the method and the leading `/` of the path, and whether the plugin is enabled (a disabled plugin's routes are dropped from the table) |
611
- | Plugin route 401 | the entry declared `auth: 'user' \| 'admin' \| 'agent-or-user'` and the request carried no valid credential; use `auth: 'none'` only for open endpoints |
612
- | Client panel never appears | check the browser console for `[aw-plugins]` warnings; confirm the manifest says `hasClient: true` (i.e. the manifest declares `client:'./client.mjs'`) and the plugin is `enabled !== false` |
613
- | A client subscription never fires | check you did not fall into the §8 traps (`ctx.on('*')`, `ctx.on('event:line.start')`, `ctx.on('daq:sample')`, or handing a lifecycle hook to `ctx.on`) |
614
- | A setting does not render | a declaration without `default` is skipped with a warning; a `select`'s `default` must be inside `options`; `key` allows letters, digits, `-` and `_` only |
615
- | A changed setting has no effect | read it as `ctx.config.get('plugins.<plugin>.<key>')` (the short key reads nothing) |
616
- | The `permissions:changed` hook never fires | that name does not exist; use `ctx.events.on('permissions.changed', fn)` |
617
- | KV data "disappeared" | KV is at `<configRoot>/data/plugins/<plugin>/kv.json`, not in the plugin folder; writes flush after a 200 ms debounce, so a hard kill has a tiny loss window |
618
- | `ctx.api` returns 401 | authenticated endpoints need `ctx.api.setToken(token)`; unauthenticated ones (manifest / ping) do not |
619
-
620
- **Trust model**: a plugin is arbitrary node code, on par with aw commands — only install and enable plugins you trust.
621
-
622
- ### Known boundaries (intentional, not defects)
623
-
624
- - **Hooks are observational**: v1 has no veto / interception / rewriting — write-control interlock integrity comes first.
625
- - **The `ctx.http` guard is protocol-only** (http/https) and does **not** restrict hosts; do your own allow-listing inside the plugin (the built-in `diag-bridge` / `rag-bridge` do exactly that).
626
- - **`ctx.t(key, params)` currently ignores `params`** (no interpolation); build strings yourself inside the plugin.
627
- - **`ctx.kv` has no `reset()`** — only `get / set / all / bump`.
628
- - **Server and browser subscription surfaces do not overlap**: server hooks never cross the bridge, and browser events never reach the server.
629
- - **A newly enabled browser plugin injects within 15 s** (instantly when the WS channel is up).
630
- - **`server:close` / `onDispose` depend on graceful shutdown signals**; a forced kill on Windows does not trigger them.
631
- - **`aw plugin list` only scans directories** — it reflects neither load failures nor runtime health.
632
- - **Protocol plugins share the host process with their native stacks**: serial-bridge's RTU framing is a self-contained implementation (single serialport native stack; modbus-serial is deliberately NOT used — its wrapper reproducibly crashed under dev mode). Known boundary: **inside the `aw dev` process, a serial transaction that ends in write → timeout → close can trigger a native V8 crash in `bindings-cpp`** (HandleScope fatal — not catchable in JS, regardless of which port is used); **production mode (`aw start`) is unaffected — the exact same sequence was verified live to return an honest timeout with the server healthy**, and open-only probes are also fine under dev. Connect real hardware during development with this in mind; for hardened deployments, run the serial gateway in its own process (see the plc-node-simulator child-process pattern).
633
-
634
- ## 13. Pre-release checklist
635
-
636
- 1. `aw plugin list` shows the plugin in all applicable scopes; a client plugin shows `+client`; toggling enable/disable makes routes, tools and panels appear and disappear together (a rapid toggle burst must not lose events).
637
- 2. `GET /api/workshop/plugins` reports an empty `failures`; `GET /api/plugins/manifest` reports `settingsCount` / `hasClient` / `hasI18n` matching the declaration.
638
- 3. The settings page shows the plugin's config group (fields without a declared group land in the `plugin-<plugin>` group); after a save, `ctx.config.get('plugins.<plugin>.<key>')` returns the new value immediately.
639
- 4. Locale switching updates panel titles and copy; the `i18n:changed` cleanup leaves no leaks.
640
- 5. The tool is visible through `GET /api/workshop/agent-tools/list`; its parameters expose no `url` / `host` injection hole; after the team switch is turned off the tool disappears and dispatch is rejected.
641
- 6. Trigger one hot reload (toggle enable/disable) and confirm `plugins:reloaded` reaches the plugin with no KV or timer leak.
1
+ # AgentWorkShop plugin development guide (full)
2
+
3
+ > A plugin is a self-contained folder: an `index.mjs` entry (required), an optional
4
+ > `client.mjs` (browser enhancement) and an optional `i18n.json` (message bundles).
5
+ > One folder enhances both the **server** (routes / tools / DAQ / events) and the
6
+ > **browser** (panel components / i18n / settings UI). Drop it in and it loads;
7
+ > toggle it and the host hot-reloads. This page is the single authoritative reference;
8
+ > the paged docs under `docs/site/plugins/` share the same source of truth.
9
+ >
10
+ > Applies to: plugin system v2 has been available since **v0.7.29** (frontend component
11
+ > injection / plugin settings / plugin i18n / runtime services surface); this document
12
+ > describes **v0.8.8**. `ctx.sdkVersion` is currently `0.3.0`.
13
+
14
+ ## 1. Folder layout & quick start
15
+
16
+ ```bash
17
+ aw plugin create my-plugin # scaffolds into <repo>/.AgentWorkShop/plugins/my-plugin (project scope, default)
18
+ aw plugin create my-plugin --global # or user scope ~/.AgentWorkShop/plugins/my-plugin (same as -g)
19
+ aw plugin list # list all three scopes with enable state
20
+ aw plugin disable my-plugin # disable (writes the state file; the server self-applies)
21
+ aw plugin enable my-plugin # re-enable
22
+ ```
23
+
24
+ `aw plugin create` defaults to the **project** scope; `--global` / `-g` writes to the **user** scope; `--project` is the explicit spelling (equal to the default, kept for intuition); `--force` / `-f` overwrites an existing folder. Names are validated against `^[a-z][a-z0-9-]{1,31}$` (lowercase letter first, 2–32 chars). The command writes three files:
25
+
26
+ ```
27
+ <repo>/.AgentWorkShop/plugins/my-plugin/
28
+ ├── index.mjs # server entry (required): export default { name, setup(ctx), … }
29
+ ├── client.mjs # browser enhancement (optional, and must be declared as client:'./client.mjs')
30
+ └── README.md
31
+ ```
32
+
33
+ The plugin folder may also contain `i18n.json` (message bundles, see §5). **Plugin KV does not live here** — it lives at `<configRoot>/data/plugins/<plugin>/kv.json` (see §6).
34
+
35
+ ### Three scopes and precedence
36
+
37
+ The host scans `builtin` → `project` → `user` and keeps the **first** match per name:
38
+
39
+ | Scope | Entry path | Notes |
40
+ |---|---|---|
41
+ | `builtin` | `<packageRoot>/server/plugins-builtin/<name>/index.mjs` | shipped with the package, always present; the current release ships `diag-bridge`, `rag-bridge`, `serial-bridge` and `twin-injection-default` |
42
+ | `project` | `<repo>/.AgentWorkShop/plugins/<name>/index.mjs` | travels with the checkout, can be versioned in git |
43
+ | `user` | `$AW_HOME/plugins/<name>/index.mjs` (default `~/.AgentWorkShop/plugins`) | user-level, shared across projects |
44
+
45
+ Precedence is **builtin > project > user** (the host scans first-wins and de-duplicates through a `seen` set). Mind the direction: the CLI command registry (`cli/core/registry.mjs`) is **last-wins**, i.e. project > user > builtin — the two are opposite and must not be inferred from each other. `aw plugin list` and `aw plugin enable|disable` use this same order, so a toggle always hits the plugin you see.
46
+
47
+ ### Enable/disable state file
48
+
49
+ Enable state lives in **`<home>/plugins-state.json`**, where `home = $AW_HOME || ~/.AgentWorkShop`. In a source checkout this is **not** the config root:
50
+
51
+ - `configRoot = <repo>/.AgentWorkShop` — data and plugin KV live here;
52
+ - `home = ~/.AgentWorkShop` — the enable state lives here.
53
+
54
+ For a global (home-mode) install the two coincide, which is why older text calling it "the config root" looked harmless — but in a checkout it points at the wrong path. File shape:
55
+
56
+ ```json
57
+ { "version": 1, "updatedAt": "2026-09-03T00:00:00.000Z", "disabled": ["my-plugin"] }
58
+ ```
59
+
60
+ `aw plugin enable|disable`, the web plugin page and the host all read and write the same file.
61
+
62
+ ## 2. Plugin contract (`index.mjs`)
63
+
64
+ `index.mjs` exports a **plain object** (zero import dependencies — the host injects `ctx`):
65
+
66
+ ```js
67
+ export default {
68
+ name: 'my-plugin', // required, globally unique (missing / non-string fails the load)
69
+ version: '1.1.0', // optional, shown in the manifest
70
+ description: '…', // optional
71
+ auth: 'user', // optional: none (default) | user | admin | agent-or-user
72
+ client: './client.mjs', // optional: browser entry (must be a relative path string)
73
+ settings: [ /* optional: setting declarations, see §4 */ ],
74
+ configGroups: [ /* optional: config group declarations, see §4 */ ],
75
+ routes: [ // optional: declarative routes (registered after setup returns)
76
+ { method: 'GET', path: '/health', handler: () => ({ ok: true }) },
77
+ ],
78
+ async setup(ctx) { /* server lifecycle, see §3 */ },
79
+ }
80
+ ```
81
+
82
+ The host shape-checks the module at load time (`validatePluginModule`): `name` must be a non-empty string; `setup`, if present, must be a function; `client`, if present, must be a string; `settings`, if present, must be an array. Any violation fails the load, is recorded in `failures` and logged — **error isolation never takes down the main service**.
83
+
84
+ Registration order matters: **`await setup(ctx)` runs first, then `routes[]` are registered**. That way a throwing `setup` cannot leave a ghost route behind (a route that is live while the host has no record of the plugin).
85
+
86
+ ## 3. Enable, disable and hot reload
87
+
88
+ | Phase | Server | Browser |
89
+ |---|---|---|
90
+ | Load | nitro plugin `server/plugins/aw-plugins.ts` → three-scope scan → dynamic import (`?t=` busts the cache) → shape check → `setup(ctx)` → register `routes[]` | loader (`app/plugins/aw-plugins.client.ts`) fetches `GET /api/plugins/manifest` → fetches `GET /api/plugins/i18n` → dynamic-imports `/api/plugins/client/<name>` → `setup(ctx)` |
91
+ | Inject | routes / tools / drivers / templates / processors take effect immediately; setting descriptors merge into `SystemConfigService` | panels inject into page slots through `ctx.ui.registerPanel`; `client:init` is emitted |
92
+ | Run | `daq:sample` / `daq:frame` / `dcw:write` / `line:start\\|stop` / `config:changed` / `event:<type>` / `*` | `event:<type>` (same source as WS) / `page:change` / `i18n:changed` |
93
+ | Reload | state-file change → full dispose (each `await`ed) → unbind hooks → drop routes → reload → emit `plugins:reloaded` | WS `plugins.reloaded` syncs instantly, plus a 15 s polling fallback → disabled plugins get `ctx.dispose()` |
94
+ | Shutdown | per-plugin dispose queue (including a synchronous KV flush) → emit `server:close` | the page's `pagehide` triggers `ctx.dispose()` |
95
+
96
+ Facts about hot reload:
97
+
98
+ - **The trigger is the state file**: the host `fs.watch`es the directory holding `plugins-state.json`, with a **10 s mtime poll** as a fallback (Windows can drop events for atomic `rename` writes). `aw plugin enable|disable`, the web toggle, or simply touching the file all trigger a full reload **within about 1 s**.
99
+ - **Code edits need no process restart**: the reload imports `entry + '?t=' + Date.now()`, which defeats the ESM module cache, so plugin code changes take effect on the next reload. The host has **no separate plugin-directory watcher** — after editing code, touch `plugins-state.json` (or toggle enable/disable once) to make it take effect immediately.
100
+ - **Core code still needs a restart**: changes under `server/` and `shared/` are outside plugin hot reload.
101
+ - **Race protection**: if the state file changes again while a reload is in flight (a disable→enable burst), the debounced callback hits the in-flight guard; when the load finishes the host compares the disabled-set snapshot and re-runs once if it drifted, so toggle events are never lost.
102
+ - **Browser side**: a newly enabled plugin injects within 15 s at the latest (instantly when the WS channel is up); a disabled plugin is unloaded immediately together with all of its panels.
103
+
104
+ ## 4. Plugin settings and config groups
105
+
106
+ ### Declarative fields (manifest `settings[]`)
107
+
108
+ ```js
109
+ settings: [
110
+ { key: 'base_url', type: 'string', default: 'http://127.0.0.1:8770',
111
+ labelKey: 'plugin.my-plugin.settings.base_url', // i18n key (see §5)
112
+ label: 'Service URL (fallback label)', description: 'applies live on save' },
113
+ { key: 'max_turns', type: 'number', default: 0, min: 0, max: 2000, label: 'Max turns' },
114
+ { key: 'auto_enabled', type: 'boolean', default: false, label: 'Automatic mode' },
115
+ { key: 'mode', type: 'select', default: 'a', options: ['a', 'b'], label: 'Mode' },
116
+ ],
117
+ ```
118
+
119
+ Hard constraints enforced by the validator (`validatePluginSettings`) — failing any one of them **skips that entry with a warning** while the rest still load:
120
+
121
+ | Constraint | Rule |
122
+ |---|---|
123
+ | `key` | required and must match `/^[A-Za-z0-9_-]+$/` (letters, digits, `-`, `_` only) |
124
+ | `type` | must be one of `'string' \| 'number' \| 'boolean' \| 'select'` |
125
+ | `default` | **mandatory** — an entry without a default is skipped outright |
126
+ | `select` | must supply an `options` array and `default` must be in it (compared as strings) |
127
+ | `min` / `max` | honoured for `number` only (they are still written into the descriptor, but mean nothing for other types) |
128
+ | `label` | falls back to `key`; `labelKey` wins when present (resolved through i18n) |
129
+ | `description` | defaults to an empty string |
130
+
131
+ Normalised descriptors always carry `applies: 'live'` (applies on save), and the key is force-namespaced to **`plugins.<plugin>.<key>`** — the same addressing space as global schema keys.
132
+
133
+ ### Config groups (manifest `configGroups[]` + `settings[].group`)
134
+
135
+ ```js
136
+ configGroups: [
137
+ { id: 'default', label: 'Connection', description: 'Backend URL and auth', order: 400 },
138
+ { id: 'advanced', label: 'Advanced', collapsed: true },
139
+ ],
140
+ settings: [
141
+ { key: 'base_url', type: 'string', default: 'http://127.0.0.1:8770', group: 'default', label: 'Service URL' },
142
+ { key: 'timeout_ms', type: 'number', default: 8000, group: 'advanced', label: 'Timeout (ms)' },
143
+ ],
144
+ ```
145
+
146
+ - Group ids are folded into the plugin's own namespace: `default` (or the plugin name) maps to `plugin-<plugin>`, any other declared id `x` maps to `plugin-<plugin>-x`. Two plugins may both declare `network` without overwriting each other.
147
+ - `settings[].group` references the **declared id** (`default` / `advanced`), not the prefixed id.
148
+ - Fields **without a `group`** land in the plugin's default group whose id is `plugin-<plugin>`; if the plugin never declared a title for that default id, the settings page shows the id itself (i.e. `plugin-<plugin>`). To get a readable title, declare `{ id: 'default', label: '…' }` as above — both shipped built-ins do exactly that.
149
+ - Groups are removed automatically when the plugin is unloaded or disabled; no empty sections are left behind.
150
+ - There is **no literal config group called "Plugins"**: what you see in Settings → Runtime is the plugin management list (enable switches + health check), a separate piece of UI from the plugin's own config groups.
151
+
152
+ > `configGroups` is the field name the host actually reads (`host.mjs` reads `def.configGroups`). The type declaration file `sdk/index.d.mts` spells it `groups?`, which does not match the runtime — this guide and the code win.
153
+
154
+ ### Runtime registration (extend conditionally inside `setup`)
155
+
156
+ ```js
157
+ async setup(ctx) {
158
+ // Add a group and get back its real (namespaced) id
159
+ const group = ctx.config.defineGroup({ id: 'rules', label: 'Automatic rules', collapsed: true })
160
+ // Add a field (equivalent to manifest settings[], but registrable conditionally)
161
+ ctx.config.defineField({
162
+ key: 'auto_rules', type: 'string', default: '', group: 'rules', label: 'JSON rules',
163
+ })
164
+ ctx.logger.info(ctx.config.groups().map(g => g.id).join(','))
165
+ ctx.logger.info(ctx.config.fields().map(f => f.key).join(','))
166
+ // Removal (removeGroup takes the namespaced id returned by defineGroup; removeField takes the short key)
167
+ if (group) ctx.config.removeGroup(group.id)
168
+ ctx.config.removeField('auto_rules')
169
+ }
170
+ ```
171
+
172
+ `defineGroup` / `defineField` enforce exactly the same validation as the declarative form (an invalid call returns `null` and logs a warning); `removeGroup` / `removeField` return a boolean telling whether anything was actually removed. These groups and fields are removed with the plugin, and re-registering never loses values that were already saved.
173
+
174
+ ### Reading and persistence
175
+
176
+ - Read with `ctx.config.get('plugins.my-plugin.base_url')` (every call reads the merged effective value, so a save applies live); `ctx.config.all()` returns a full snapshot.
177
+ - Subscribe with `ctx.config.onChange(fn)`, which is sugar for `ctx.hooks.on('config:changed', fn)`.
178
+ - Runtime overrides persist in `<configRoot>/runtime-settings.json`; `PATCH /api/system/settings` validates against the same descriptors and the settings page renders from them.
179
+ - Migration: the `plugins.kb.*` / `plugins.diag.*` keys hard-coded in `shared/config/schema.json` before 0.7.28 were replaced by plugin declarations; on startup the server moves old overrides to the new keys in one pass (keeping the old key until the new one is registered, so data is never dropped).
180
+
181
+ ## 5. Plugin i18n (`i18n.json`)
182
+
183
+ ```json
184
+ {
185
+ "zh-CN": { "settings": { "base_url": "服务地址" }, "panel": { "title": "我的面板" } },
186
+ "en": { "settings": { "base_url": "Service URL" }, "panel": { "title": "My panel" } }
187
+ }
188
+ ```
189
+
190
+ - The host parses `i18n.json` at the plugin folder root during load (a broken file is ignored without blocking the load).
191
+ - `GET /api/plugins/i18n` assembles the bundles of all **enabled** plugins (unauthenticated; UI copy only, **never secrets**) and returns `{ i18n: { "<plugin>": { "<locale>": { … } } }, locales: ["zh-CN", "en"] }`.
192
+ - After fetching, the browser loader merges the messages into the vue-i18n namespace `plugin.<plugin>` — host components (settings `labelKey`, panel `titleKey`) resolve them directly — and `ctx.t(key)` resolves against the plugin's own message tree (`ctx.t('panel.title')` → `plugin.my-plugin.panel.title`, falling back to the key when missing).
193
+ - On a locale switch the loader emits the `i18n:changed` hook; plugins receive it with `ctx.hooks.on('i18n:changed', fn)` (note: it is **not** on the `ctx.on` delivery surface).
194
+ - The manifest exposes `hasI18n` / `settingsCount` / `hasClient` for the frontend.
195
+
196
+ ## 6. Server `ctx` reference
197
+
198
+ | Surface | Members | Notes |
199
+ |---|---|---|
200
+ | Identity | `ctx.name` / `ctx.scope` / `ctx.dir` / `ctx.sdkVersion` | `scope ∈ 'builtin' \| 'project' \| 'user'`; `dir` is the absolute plugin folder |
201
+ | Hooks | `ctx.hooks.on / once / off / emit` | per-plugin facade; auto-unbound on hot reload, no manual `off` needed |
202
+ | Logging | `ctx.logger.debug / info / warn / error` | prefixed with `[aw-plugins] [<plugin>]` |
203
+ | Config | `ctx.config.get / all / onChange / defineGroup / defineField / removeGroup / removeField / groups / fields` | effective config (read-only) + change subscription + runtime group/field registration (see §4) |
204
+ | Storage | `ctx.kv.get / set / all / bump` | plugin-private KV; **no `reset()`**; in-memory state is authoritative with a 200 ms debounced atomic flush |
205
+ | Timers | `ctx.timer.setInterval / setTimeout` | auto-registered for disposal on shutdown and hot reload |
206
+ | Cleanup | `ctx.onDispose(fn)` / `ctx.subscriptions.add(d)` | shares one host-owned dispose queue with `ctx.timer` |
207
+ | Routes | `ctx.route(method, path, handler)` | mounted at `/api/plugins/<plugin><path>` (exact match); **returns a boolean** |
208
+ | Platform | `ctx.api` | platform REST client (loopback origin; unwraps the envelope; call `ctx.api.setToken(token)` for authenticated endpoints) |
209
+ | Network | `ctx.http.get(url, opt)` / `ctx.http.post(url, body, opt)` | outbound fetch; the guard is **protocol-only** (http/https), it does not restrict hosts; 8 s default timeout; `headers` pass through |
210
+ | Events | `ctx.events.on(type, fn)` / `ctx.events.off(type, fn)` | scene-event sugar: subscribes to `event:<type>` internally (see §7) |
211
+ | Paths | `ctx.paths.home / configRoot / dataDir`; `ctx.dataDir` | `ctx.dataDir` is this plugin's KV folder, `<configRoot>/data/plugins/<plugin>` |
212
+ | DAQ | `ctx.daq.registerDriver / registerProcessor / registerTemplate / onFrame / onSample / query / nodes` | driver, sink-processor and node-template registration + time-series queries + node metadata snapshot |
213
+ | Write control | `ctx.dcw.registerWriteDriver(driver)` | write-driver injection (symmetric to DAQ read drivers): contract `{ kind, available(), write(input), test(cfg), read?(input), meta? }`; disabled plugins lose their drivers on hot reload |
214
+ | Tools | `ctx.omp.registerTool({ name, label?, description, parameters, roles?, handler })` | agent tool injection; `roles` accepts `'lead'` and `'worker'` only (see §10) |
215
+ | Services | `ctx.services.names()` / `.get(name)` / `.provide(name, getter)` | runtime object surface: `get('daq' \| 'lines' \| 'channels' \| 'plugins')`; `provide` auto-prefixes `<plugin>.` |
216
+ | Twin | `ctx.twin.registerPhysicsProvider / registerScenePack / registerObjectiveProfile / registerTrainingAdapter / registerSolverAdapter`; `listProviders / getProviderHealth / resolveProvider / validateProvider / retireProvider / isRegistryAvailable` | hybrid-twin **Provider Registry** bridge: register hot-swappable industrial physics cores / scene packs / solvers (next section) |
217
+ | Permissions | `ctx.permissions.lineMode / visibleLineIds / listGrants / setGrants` | line-grant queries and management |
218
+
219
+ ### Hybrid-twin provider plugins (`ctx.twin`)
220
+
221
+ `ctx.twin` is the plugin surface of the **hybrid-twin Provider Registry**: register an industrial scene's
222
+ physics core, scene pack and solvers. `twin_scene_read` / `twin_snapshot_create` / `twin_trial_run` /
223
+ `mpc_optimize` resolve the provider through `SceneContract.physicsProfileId` (falling back to the bundled
224
+ `twin-injection-default`), so **swapping scenes needs no tool or channel change**.
225
+
226
+ | Registration surface | Payload | Notes |
227
+ |---|---|---|
228
+ | `registerPhysicsProvider(provider)` | `PhysicsProviderManifest` + `initialize` / `step` / `simulate` / `evaluateConstraints`, optional `validateScene` / `calibrate` / `designSafeExperiment` / `estimateUncertainty` / `exportArtifacts` / `health` | the physics core (grey-box / white-box / ROM); `apiVersion` must be `twin-provider.v1` |
229
+ | `registerScenePack(pack)` | `{ sceneKind, sceneSchemaVersion, compile?, discover?, constraints?, objectives?, datasetSchema?, metadata? }` | scene pack: compiles field nodes + recipe into a `SceneContract` |
230
+ | `registerObjectiveProfile(profile)` | objectives and weights | the MPC objective surface |
231
+ | `registerTrainingAdapter(adapter)` / `registerSolverAdapter(adapter)` | training / solver adapters | external solvers (ONNX / ROM / third-party) |
232
+ | `listProviders(filter?)` · `getProviderHealth(id, version?)` · `resolveProvider(id, version?)` · `validateProvider(id, version?)` · `retireProvider(id, version?)` · `isRegistryAvailable()` | — | query, health, resolve, validate and retire |
233
+
234
+ **Manifest essentials**: `providerId` / `version` / `apiVersion` / `sceneKinds[]` / `backend`
235
+ (`typescript` | `pytorch` | `python` | `onnx` | `rom` | `external-solver`) / the four variable tables
236
+ (`stateVariables` / `controlVariables` / `disturbanceVariables` / `observationVariables?`) /
237
+ `parameterPriors` / `capabilities` (`onlineStep` / `rollout` / `calibration` / `uncertainty` / `externalSolver` / `mpc`) /
238
+ `artifactContract`.
239
+
240
+ **Generational hot swap**: the lifecycle is `DISCOVERED → VALIDATED → REGISTERED → READY → DRAINING → RETIRED`
241
+ (`FAILED` on rejection). A hot reload stages the new **generation** and drains the old one: trials and MPC hold a
242
+ lease on the old generation, so **in-flight work is never invalidated**, and `retireProvider` only unloads after
243
+ references reach zero.
244
+
245
+ **Minimal example** (the bundled injection provider uses this very contract, see
246
+ `server/plugins-builtin/twin-injection-default/index.mjs`):
247
+
248
+ ```js
249
+ export default {
250
+ name: 'my-injection-provider',
251
+ version: '1.0.0',
252
+ auth: 'none',
253
+ async setup(ctx) {
254
+ const core = await ctx.services.get('twinCore')
255
+ const provider = core.createInjectionProvider() // swap in your own physics core
256
+ ctx.twin.registerPhysicsProvider(provider)
257
+ ctx.twin.registerScenePack({
258
+ sceneKind: 'injection',
259
+ sceneSchemaVersion: '1.0.0',
260
+ compile: () => core.defaultInjectionScene('my-injection-provider'),
261
+ })
262
+ ctx.logger.info(`registered ${provider.manifest.physicsModelId}@${provider.manifest.version}`)
263
+ },
264
+ }
265
+ ```
266
+
267
+ **Where it lives**: the same plugin scopes as any other plugin (see §1) —
268
+ `~/.AgentWorkShop/plugins/<plugin>/` (user), `<repo>/.AgentWorkShop/plugins/<plugin>/` (project),
269
+ `server/plugins-builtin/<plugin>/` (shipped with the package). Disabling or hot-reloading a plugin
270
+ re-stages or drains its generation **without a server restart**.
271
+
272
+ ### Communication-protocol plugins (custom interface connections)
273
+
274
+ `ctx.daq.registerDriver` / `ctx.dcw.registerWriteDriver` are the **protocol plug-in points**: serial
275
+ links, other PLC protocols and private buses all inject here — the main pipelines (sampling loop /
276
+ write gateway / frontend forms) need zero changes.
277
+
278
+ ```js
279
+ ctx.daq.registerDriver({
280
+ kind: 'serial', // custom protocol kind (overriding a builtin logs a warning)
281
+ async available() { return true }, // protocol-stack probe (missing package → UI shows "not installed")
282
+ async sample({ driverConfig }) { return 25.3 }, // reading (scalar or v2 frame envelope)
283
+ async test(driverConfig) { return { ok: true, message: 'connected', sampleValue: 25.3 } },
284
+ meta: { // self-description (frontend "add node" dropdown + dynamic form)
285
+ label: 'Serial (RS-232/485)',
286
+ status: 'real',
287
+ configFields: [{ key: 'path', label: 'Port path', type: 'string', required: true, placeholder: 'COM3' }],
288
+ },
289
+ })
290
+ ```
291
+
292
+ Key points:
293
+ - The driver catalog is served via the `drivers` field of `GET /api/workshop/daq` (read) and
294
+ `GET /api/workshop/dcw` (write); the DAQ/DCW pages render plugin protocols and their forms from it
295
+ (with a ⌁ badge). Drivers registered without `meta` only appear in availability;
296
+ - Hot reload clears all plugin drivers first, then re-loads: **disabled/unloaded protocol drivers
297
+ take effect immediately upon removal** and never linger until restart;
298
+ - Builtin example: `server/plugins-builtin/serial-bridge` (serial Modbus RTU + ASCII line protocol,
299
+ with read/write drivers, `health`/`ports`/`probe` APIs, a frontend panel and the `serial_ports`
300
+ agent tool) — use it as the template for new protocol plugins.
301
+
302
+ ### Where KV lives
303
+
304
+ `<configRoot>/data/plugins/<plugin>/kv.json` — **not** inside the plugin folder. Writes are authoritative in memory and flushed atomically (`tmp` + `rename`) after a 200 ms debounce; on shutdown and hot reload the pending debounce is cancelled and the state is flushed synchronously. `ctx.kv` has exactly four methods: `get / set / all / bump`.
305
+
306
+ ```js
307
+ ctx.kv.set('threshold', 180) // write (flushed after 200 ms)
308
+ ctx.kv.get('threshold') // read (undefined if never written)
309
+ ctx.kv.bump('alarms') // +1, returns the new value; bump('alarms', -1) decrements
310
+ ctx.kv.all() // shallow copy of the whole store
311
+ ```
312
+
313
+ ## 7. Event reference (server)
314
+
315
+ Events are dispatched through a HookBus: **listeners run serially, awaited, in registration order**, and every listener receives the **same unmodified payload object** — it is not a waterfall (only the last non-`undefined` return value is kept, and the host ignores it), and v1 has no veto or interception. A throwing listener is isolated and counted: a success resets the counter, and **8 consecutive failures remove the listener** (circuit breaker).
316
+
317
+ ### Lifecycle and platform events
318
+
319
+ | Event | When | Payload |
320
+ |---|---|---|
321
+ | `plugin:host:init` | after every plugin finished `setup` (once) | `{ plugins: string[], failures: number }` |
322
+ | `plugins:reloaded` | at the end of a hot reload | `{ plugins: <manifest> }` |
323
+ | `config:changed` | `runtime-settings.json` / settings page changed | `{ type, changed: string[], effective, sources }` — **there is no `at` field** |
324
+ | `server:close` | on nitro close, after every per-plugin dispose ran | `{ at }` |
325
+
326
+ ### Domain events
327
+
328
+ | Event | When | Payload |
329
+ |---|---|---|
330
+ | `daq:sample` | the **publish-level** outlet after pipeline aggregation (same point and cadence as WS `daq.reading`, gated by `publishIntervalMs`) | `{ nodeId, templateRef, value, state, at, lineId }` |
331
+ | `daq:frame` | after a multi-shape frame (vector/image) is recorded (metadata, metrics and preview only — no blobs) | `{ nodeId, templateRef, kind, at, lineId, preview?, metrics, thumbUrl?, state }` |
332
+ | `dcw:write` | after a write-control ACK is booked (with 10 s same-value de-duplication) | `{ nodeId, name, eng, prevValue, ok, source, lineId, at }`; `source ∈ manual \| recipe \| agent \| rollback` |
333
+ | `line:start` | batch window opens | `{ lineId, runId, recipeId, productName }` |
334
+ | `line:stop` | batch window closes | `{ lineId, runId }` |
335
+ | `event:<scene-type>` | any `broadcastSceneEvent(type, payload)`, exactly the same source as the browser WS feed | the event's own payload |
336
+
337
+ ### Wildcards and scene events
338
+
339
+ The server wildcard spelling is the **bare star `'*'`**, and the callback receives a `{ type, payload }` wrapper:
340
+
341
+ ```js
342
+ ctx.hooks.on('*', ({ type, payload }) => {
343
+ ctx.logger.debug('event audit', type)
344
+ void payload
345
+ })
346
+ ```
347
+
348
+ `ctx.hooks.on('event:*', fn)` is **wrong** — it never fires. To subscribe to scene events by type, use `ctx.events`, which adds the `event:` prefix for you:
349
+
350
+ ```js
351
+ ctx.events.on('daq.node.changed', (p) => ctx.logger.debug('node changed', p?.op))
352
+ ctx.events.on('daq.alarm.changed', (p) => ctx.logger.info('alarm state', p?.nodeId, p?.recovered))
353
+ ```
354
+
355
+ Common scene events: `daq.reading`, `daq.frame`, `daq.alarm`, `daq.alarm.changed`, `daq.node.changed`, `daq.controller`, `daq.template.changed`, `dcw.node.changed`, `device.created|updated|deleted`, `ops.log`, `permissions.changed`, `plugins.reloaded`, `aml.job|dataset|model`.
356
+
357
+ ### Permission changes
358
+
359
+ Permission changes reach the plugin bus as the scene event `permissions.changed` (its raw bus name is `event:permissions.changed`). `ctx.hooks.on('permissions:changed', …)` **never fires**; the correct form is:
360
+
361
+ ```js
362
+ ctx.events.on('permissions.changed', (p) => ctx.logger.info('grants changed', p?.userId))
363
+ ```
364
+
365
+ ### Config changes
366
+
367
+ ```js
368
+ ctx.hooks.on('config:changed', (p) => {
369
+ ctx.logger.info('config changed', p.changed)
370
+ ctx.logger.info('current theme colour', ctx.config.get('theme.primaryColor'))
371
+ })
372
+ // sugar: ctx.config.onChange(fn)
373
+ ```
374
+
375
+ ## 8. Browser `client.mjs` (`ctx` reference)
376
+
377
+ The client entry must be **declared in the manifest** as `client: './client.mjs'` — merely having the file is not enough. The loader fetches the script from `/api/plugins/client/<plugin>` and calls `setup(ctx)` on the imported module.
378
+
379
+ ```js
380
+ export function setup(ctx) {
381
+ let samples = 0
382
+ const counter = ctx.el('strong', {}, ['0'])
383
+
384
+ // scene event: pass the event name itself; the literal 'event:*' subscribes to all scene events
385
+ ctx.on('daq.reading', () => { samples += 1; counter.textContent = String(samples) })
386
+
387
+ // lifecycle hooks only come through ctx.hooks.on (they are not on the ctx.on surface)
388
+ ctx.hooks.on('i18n:changed', ({ locale }) => ctx.log.info('locale switched:', locale))
389
+
390
+ ctx.ui.registerPanel({
391
+ slot: 'plugins.page', // slot name (see below)
392
+ name: 'my-panel', // unique within the plugin
393
+ titleKey: 'panel.title', // resolves plugin.my-plugin.panel.title (or use a static title)
394
+ order: 10,
395
+ mount(el) { // el = panel container (the slot renders the title)
396
+ const box = ctx.el('div', {}, ['samples:', counter])
397
+ el.append(box)
398
+ const timer = setInterval(() => { counter.textContent = String(samples) }, 5000)
399
+ return () => { clearInterval(timer); box.remove() } // cleanup: called when the panel unmounts
400
+ },
401
+ })
402
+
403
+ ctx.log.info('client injected')
404
+ }
405
+ ```
406
+
407
+ | Member | Notes |
408
+ |---|---|
409
+ | `ctx.name` / `ctx.sdkVersion` | plugin name / client SDK version |
410
+ | `ctx.hooks` | a real HookBus: `client:init` / `page:change` / `i18n:changed` / `client:destroy` |
411
+ | `ctx.on(type, fn)` | scene-event subscription (pass the event name; internally `event:<type>`); only the literal `'event:*'` is a wildcard; returns an unsubscribe function |
412
+ | `ctx.fetch(path, opt)` | same-origin platform API helper (adds the cookie token, unwraps the `{code,data}` envelope, throws on non-2xx) |
413
+ | `ctx.el(tag, attrs, children)` | DOM helper; `style` goes through `cssText`, `class` through `className`, `onXxx` through `addEventListener` |
414
+ | `ctx.mount(target, node)` / `ctx.root()` | mount to a selector/element (falling back to `ctx.root()`) / the plugin's private mount point `#aw-plugin-<name>` |
415
+ | `ctx.ui.registerPanel(entry)` / `ctx.ui.slots` | register a panel into a named slot, returns an unregister function; `slots` lists the known slot names |
416
+ | `ctx.t(key, params?)` | plugin-namespaced translation (`plugin.<name>.<key>`) |
417
+ | `ctx.locale` | current UI locale |
418
+ | `ctx.log.info / warn / error` | console with an `[aw-plugin:<name>]` prefix |
419
+ | `ctx.dispose()` | unload: emits `client:destroy` → collects subscriptions → removes `root()` (idempotent) |
420
+
421
+ ### Wildcards and dead subscriptions (the common traps)
422
+
423
+ | Spelling | Result |
424
+ |---|---|
425
+ | `ctx.on('daq.reading', fn)` | correct: subscribes to the scene event `daq.reading` |
426
+ | `ctx.on('event:*', fn)` | correct: the only wildcard spelling, receives all scene events |
427
+ | `ctx.on('*', fn)` | **dead subscription**: never fires |
428
+ | `ctx.on('event:line.start', fn)` | **dead subscription**: it only subscribes to a scene event literally named `event:line.start`, which does not exist |
429
+ | `ctx.on('daq:sample', fn)` | **dead subscription**: server hooks never cross to the browser |
430
+ | `ctx.hooks.on('page:change', fn)` | correct: lifecycle hooks go through `ctx.hooks` |
431
+ | `ctx.on('client:init', fn)` | **dead subscription**: lifecycle hooks are not on the `ctx.on` surface |
432
+
433
+ Server hooks (`daq:sample`, `daq:frame`, `dcw:write`, `line:start|stop`) **never reach the browser**; the browser only receives scene events (through the TownBus/WS bridge). Conversely, `page:change` / `i18n:changed` exist on the browser side only.
434
+
435
+ ### Panels and page slots
436
+
437
+ A host page embeds `<workshop-plugin-slot slot-name="…" />` wherever it should accept injection; `ctx.ui.slots` currently holds:
438
+
439
+ | Slot | Location |
440
+ |---|---|
441
+ | `plugins.page` | the plugin management page (the default drop point) |
442
+ | `settings.plugins` | Settings → Runtime, below the plugin management area |
443
+ | `dashboard.widgets` | the tail of the dashboard page |
444
+
445
+ `registerPanel` returns an `unregisterPanel` function; a panel's `mount(el)` may return a cleanup function (called when the panel unmounts) and may throw — a single panel's failure is isolated by the slot and never affects the other panels or the page.
446
+
447
+ ### Unload semantics
448
+
449
+ - `ctx.dispose()` is triggered by the **`pagehide`** event (navigating away / entering bfcache; switching tabs does **not** trigger it). It emits `client:destroy`, collects the plugin's own subscriptions and removes `root()`.
450
+ - `ctx.dispose()` does **not** unregister panels by itself — panel cleanup happens in the loader, which calls `unregisterPlugin(name)` on disable / hot reload.
451
+ - Two hot channels back this up: the WS `plugins.reloaded` event (instant) plus a 15 s polling diff.
452
+
453
+ ## 9. Routes and authentication
454
+
455
+ `ctx.route(method, path, handler)` registers immediately and returns a **boolean**; `routes[]` in the manifest is registered only after `setup` returns. Both end up in the same route table:
456
+
457
+ ```
458
+ GET /api/plugins/<plugin>/health ← ctx.route('GET', '/health', handler)
459
+ ← routes: [{ method: 'GET', path: '/health', handler }]
460
+ ```
461
+
462
+ - Matching is **exact**: paths are normalised with a leading `/`, and there are no wildcard segments or sub-route matching.
463
+ - The handler receives the h3 `event`; the JSON body has already been pre-read by the platform forwarding layer and attached as **`event.awBody`** (plugins do not import h3).
464
+ - The handler's return value is serialised to JSON by nitro; a throw becomes a 500 envelope (with plugin-attributed logging) and never leaks a raw stack.
465
+ - **Authentication is enforced declaratively** by the `auth` field, checked **before** your handler, for `routes[]` and `ctx.route()` alike:
466
+
467
+ | `auth` | Behaviour |
468
+ |---|---|
469
+ | `'none'` (default) | no check, the handler runs directly |
470
+ | `'user'` | requires a valid user token, otherwise 401 |
471
+ | `'admin'` | requires an administrator, otherwise 401 |
472
+ | `'agent-or-user'` | accepts an agent identity or a user token |
473
+
474
+ **Do not put authentication inside the handler**: `resolveUser(event)` is not importable from a plugin and is not on `ctx`. Declare `auth` instead.
475
+
476
+ ```js
477
+ ctx.route('GET', '/report', () => ({ plugin: ctx.name, at: new Date().toISOString() }))
478
+
479
+ ctx.route('POST', '/threshold', (event) => {
480
+ const v = Number(event.awBody?.threshold) // the host pre-read the JSON body
481
+ if (!Number.isFinite(v)) return { ok: false, error: 'threshold must be a number' }
482
+ ctx.kv.set('threshold', v)
483
+ return { ok: true, threshold: v }
484
+ })
485
+ ```
486
+
487
+ ## 10. Tools and team switches
488
+
489
+ Tools registered with `ctx.omp.registerTool(def)` appear on every harness tool surface (omp receives them over RPC `set_host_tools`, other engines through the MCP bridge `tools/list`, pi through a tool file, mock through a direct REST invoke). A registry change is **re-pushed** to running sessions — no restart, no sub-process respawn.
490
+
491
+ ```js
492
+ ctx.omp.registerTool({
493
+ name: 'sensor_log',
494
+ label: 'Sensor calibration',
495
+ description: 'Read or record sensor calibration conclusions',
496
+ parameters: { type: 'object', properties: { sensor: { type: 'string' } }, required: ['sensor'] },
497
+ roles: ['lead', 'worker'], // only these two literals; omitted = both roles
498
+ handler: async (args, agent) => ({ text: `${agent.role}@${agent.channelId}: ${args.sensor}` }),
499
+ })
500
+ ```
501
+
502
+ Never open a `url` / `host` injection hole in the parameter schema — plugin tool arguments come straight from the model, so any "let the model pick the target address" field becomes an SSRF surface.
503
+
504
+ ### Team / channel scoped switches
505
+
506
+ Beyond the global switch, every team (channel) keeps its own plugin switch set backed by the `channel_plugins` table:
507
+
508
+ - **Picked at team creation**: `POST /api/workshop/teams` accepts `plugins: [{ name, enabled }]`, stored under the team id and propagated to the channel on deploy;
509
+ - **Toggled at any time**: `GET|PUT /api/workshop/channels/:id/plugins` and `GET|PUT /api/workshop/teams/:id/plugins` (body `{ plugins: [{ name, enabled }] }`, full-replacement semantics, unknown or disabled plugin names are ignored);
510
+ - **Semantics**: no explicit rows = unconfigured → every enabled plugin is visible to that team (backward compatible); once rows exist they filter — **a disabled plugin's tools are not injected into that team's agents and dispatch rejects them at the source**;
511
+ - **UI**: the workshop teams page (creation checkboxes + team dialog).
512
+
513
+ ### Tool registry and per-channel tool selection (2026-10-20)
514
+
515
+ Plugin tools no longer live only in a process-local registry: startup, registration and unload project them into `tool_registry` (SQLite) with source, plugin name, scope, label, description, parameter schema, roles, definition hash and availability. Execution code stays in the plugin process; the database is only the catalog and governance source of truth.
516
+
517
+ - **Global visibility**: admins open `/tools` (or `GET /api/workshop/tools`) to see built-in and plugin tools, parameter schemas and which channels disabled them; `POST /api/workshop/tools/sync` re-syncs manually.
518
+ - **Per-channel selection**: `GET|PUT /api/workshop/channels/:id/tools`, `POST .../tools/reset`;
519
+ - `mode='all'` (default): every eligible tool is enabled; only unchecked tools are stored (deny-list);
520
+ - `mode='selected'`: only checked tools are enabled (allow-list); new tools stay disabled until selected;
521
+ - hard rules (role / channel profile / write guard / plugin master switch) win; a channel cannot open a tool excluded by a hard rule, and explicitly selecting one in `selected` mode returns `409 TOOL_NOT_ELIGIBLE`.
522
+ - **Same injection source**: omp `set_host_tools`, pi `AW_PI_TOOLS_FILE` and the MCP `tools/list` used by other harnesses all go through `hostToolsForRole`; the execution layer re-checks in `dispatchHostTool` / `invokeHostTool`, so a disabled tool cannot be called even if an engine cached an old list.
523
+ - **UI**: the Channel settings dialog has a Tools section with search, source/state filters, select all/none/reset, and reason badges for hard-rule blocks.
524
+
525
+ ### Install a local plugin
526
+
527
+ ```bash
528
+ aw plugin install <source-dir> [--global|-g] [--name <name>] [--force|-f] [--no-enable]
529
+ ```
530
+
531
+ Installation only accepts a **local directory** containing `index.mjs`: symlinks and out-of-scope paths are rejected and the target must be a project/user scope; `--force` backs up the old directory first. Installation rewrites `plugins-state.json` to trigger hot reload, and the plugin's tools automatically enter the tool catalog and MCP tool surface. No remote URL or marketplace download.
532
+
533
+ ## 11. Complete example
534
+
535
+ ```js
536
+ // index.mjs — server entry (zero import dependencies; the host injects ctx)
537
+ export default {
538
+ name: 'my-plugin',
539
+ version: '1.0.0',
540
+ description: 'Example: over-threshold counting + own API + config groups + agent tool',
541
+ auth: 'user',
542
+ client: './client.mjs',
543
+ configGroups: [
544
+ { id: 'default', label: 'My plugin', description: 'Basic configuration', order: 500 },
545
+ { id: 'advanced', label: 'Advanced', collapsed: true },
546
+ ],
547
+ settings: [
548
+ { key: 'threshold', type: 'number', default: 180, min: 0, max: 5000, group: 'default',
549
+ label: 'Alarm threshold', description: 'applies live on save' },
550
+ { key: 'endpoint', type: 'string', default: 'http://127.0.0.1:8080', group: 'advanced',
551
+ label: 'External service URL' },
552
+ ],
553
+ routes: [
554
+ { method: 'GET', path: '/health', handler: () => ({ ok: true }) },
555
+ ],
556
+
557
+ async setup(ctx) {
558
+ ctx.logger.info(`loaded (scope=${ctx.scope}, sdk=${ctx.sdkVersion})`)
559
+
560
+ const threshold = () => Number(ctx.config.get('plugins.my-plugin.threshold')) || 180
561
+
562
+ // 1) publish-level DAQ samples: count over-threshold hits in plugin-private KV
563
+ ctx.hooks.on('daq:sample', (s) => {
564
+ if (typeof s?.value === 'number' && s.value > threshold())
565
+ ctx.kv.bump(`alarm:${s.nodeId}`)
566
+ })
567
+
568
+ // 2) scene events (ctx.events adds the event: prefix for you)
569
+ ctx.events.on('daq.alarm', (a) => ctx.logger.warn('alarm', a?.nodeId))
570
+ ctx.events.on('permissions.changed', (p) => ctx.logger.info('grants changed', p?.userId))
571
+
572
+ // 3) full event audit: the server wildcard is the bare '*', callback gets { type, payload }
573
+ ctx.hooks.on('*', ({ type }) => ctx.logger.debug('event', type))
574
+
575
+ // 4) routes[] are registered after setup; ctx.route registers now (returns a boolean)
576
+ ctx.route('POST', '/threshold', (event) => {
577
+ const v = Number(event.awBody?.threshold)
578
+ if (!Number.isFinite(v)) return { ok: false, error: 'threshold must be a number' }
579
+ ctx.kv.set('threshold', v)
580
+ return { ok: true, threshold: v }
581
+ })
582
+
583
+ // 5) timers + cleanup: one host-owned dispose queue, run on shutdown and hot reload
584
+ ctx.timer.setInterval(() => ctx.kv.set('heartbeat', new Date().toISOString()), 5000)
585
+ ctx.onDispose(() => ctx.logger.info('plugin cleaned up'))
586
+
587
+ // 6) agent tool (roles accepts 'lead' | 'worker' only)
588
+ ctx.omp.registerTool({
589
+ name: 'my_alarm_report',
590
+ description: 'Read the over-threshold alarm counter recorded by this plugin',
591
+ parameters: { type: 'object', properties: { nodeId: { type: 'string' } }, required: ['nodeId'] },
592
+ roles: ['lead', 'worker'],
593
+ handler: async (args, agent) => ({
594
+ text: `${args.nodeId} alarmed ${ctx.kv.get(`alarm:${args.nodeId}`) ?? 0} times (by ${agent.role})`,
595
+ }),
596
+ })
597
+ },
598
+ }
599
+ ```
600
+
601
+ `client.mjs` is in §8 and `i18n.json` in §5. Which scope to install into and how to toggle are in §1.
602
+
603
+ ## 12. Troubleshooting
604
+
605
+ | Symptom | Cause / fix |
606
+ |---|---|
607
+ | Plugin code edits have no effect | the host has no plugin-directory watcher: touch `<home>/plugins-state.json`, or toggle `aw plugin enable/disable` once, to trigger a reload (the reload imports with `?t=` to defeat the cache); core `server/` and `shared/` changes still need a process restart |
608
+ | Recreated a same-named plugin but routes 404 | a name previously disabled keeps its flag in `<home>/plugins-state.json`; recreating the directory does not reload it — run `aw plugin enable <name>` explicitly after recreating (verified in practice) |
609
+ | Load failures are invisible | `aw plugin list` does **not** show them. Use `GET /api/workshop/plugins` (returns `{ plugins, failures, initedAt }`, **no `{code,data}` envelope**) or read `[aw-plugins] 装载失败 …` in the startup log |
610
+ | Plugin route 404 | matching is exact; check the method and the leading `/` of the path, and whether the plugin is enabled (a disabled plugin's routes are dropped from the table) |
611
+ | Plugin route 401 | the entry declared `auth: 'user' \| 'admin' \| 'agent-or-user'` and the request carried no valid credential; use `auth: 'none'` only for open endpoints |
612
+ | Client panel never appears | check the browser console for `[aw-plugins]` warnings; confirm the manifest says `hasClient: true` (i.e. the manifest declares `client:'./client.mjs'`) and the plugin is `enabled !== false` |
613
+ | A client subscription never fires | check you did not fall into the §8 traps (`ctx.on('*')`, `ctx.on('event:line.start')`, `ctx.on('daq:sample')`, or handing a lifecycle hook to `ctx.on`) |
614
+ | A setting does not render | a declaration without `default` is skipped with a warning; a `select`'s `default` must be inside `options`; `key` allows letters, digits, `-` and `_` only |
615
+ | A changed setting has no effect | read it as `ctx.config.get('plugins.<plugin>.<key>')` (the short key reads nothing) |
616
+ | The `permissions:changed` hook never fires | that name does not exist; use `ctx.events.on('permissions.changed', fn)` |
617
+ | KV data "disappeared" | KV is at `<configRoot>/data/plugins/<plugin>/kv.json`, not in the plugin folder; writes flush after a 200 ms debounce, so a hard kill has a tiny loss window |
618
+ | `ctx.api` returns 401 | authenticated endpoints need `ctx.api.setToken(token)`; unauthenticated ones (manifest / ping) do not |
619
+
620
+ **Trust model**: a plugin is arbitrary node code, on par with aw commands — only install and enable plugins you trust.
621
+
622
+ ### Known boundaries (intentional, not defects)
623
+
624
+ - **Hooks are observational**: v1 has no veto / interception / rewriting — write-control interlock integrity comes first.
625
+ - **The `ctx.http` guard is protocol-only** (http/https) and does **not** restrict hosts; do your own allow-listing inside the plugin (the built-in `diag-bridge` / `rag-bridge` do exactly that).
626
+ - **`ctx.t(key, params)` currently ignores `params`** (no interpolation); build strings yourself inside the plugin.
627
+ - **`ctx.kv` has no `reset()`** — only `get / set / all / bump`.
628
+ - **Server and browser subscription surfaces do not overlap**: server hooks never cross the bridge, and browser events never reach the server.
629
+ - **A newly enabled browser plugin injects within 15 s** (instantly when the WS channel is up).
630
+ - **`server:close` / `onDispose` depend on graceful shutdown signals**; a forced kill on Windows does not trigger them.
631
+ - **`aw plugin list` only scans directories** — it reflects neither load failures nor runtime health.
632
+ - **Protocol plugins share the host process with their native stacks**: serial-bridge's RTU framing is a self-contained implementation (single serialport native stack; modbus-serial is deliberately NOT used — its wrapper reproducibly crashed under dev mode). Known boundary: **inside the `aw dev` process, a serial transaction that ends in write → timeout → close can trigger a native V8 crash in `bindings-cpp`** (HandleScope fatal — not catchable in JS, regardless of which port is used); **production mode (`aw start`) is unaffected — the exact same sequence was verified live to return an honest timeout with the server healthy**, and open-only probes are also fine under dev. Connect real hardware during development with this in mind; for hardened deployments, run the serial gateway in its own process (see the plc-node-simulator child-process pattern).
633
+
634
+ ## 13. Pre-release checklist
635
+
636
+ 1. `aw plugin list` shows the plugin in all applicable scopes; a client plugin shows `+client`; toggling enable/disable makes routes, tools and panels appear and disappear together (a rapid toggle burst must not lose events).
637
+ 2. `GET /api/workshop/plugins` reports an empty `failures`; `GET /api/plugins/manifest` reports `settingsCount` / `hasClient` / `hasI18n` matching the declaration.
638
+ 3. The settings page shows the plugin's config group (fields without a declared group land in the `plugin-<plugin>` group); after a save, `ctx.config.get('plugins.<plugin>.<key>')` returns the new value immediately.
639
+ 4. Locale switching updates panel titles and copy; the `i18n:changed` cleanup leaves no leaks.
640
+ 5. The tool is visible through `GET /api/workshop/agent-tools/list`; its parameters expose no `url` / `host` injection hole; after the team switch is turned off the tool disappears and dispatch is rejected.
641
+ 6. Trigger one hot reload (toggle enable/disable) and confirm `plugins:reloaded` reaches the plugin with no KV or timer leak.