agentworkshop 0.7.27 → 0.7.33

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 (1030) hide show
  1. package/.AgentWorkShop/prompts/aml-mission-default.md +20 -0
  2. package/.AgentWorkShop/prompts/aml-playbook.md +49 -0
  3. package/.AgentWorkShop/prompts/host-tools.json +314 -0
  4. package/.output/.AgentWorkShop/prompts/aml-mission-default.md +20 -0
  5. package/.output/.AgentWorkShop/prompts/aml-playbook.md +49 -0
  6. package/.output/.AgentWorkShop/prompts/host-tools.json +314 -0
  7. package/.output/.AgentWorkShop/schema.json +120 -0
  8. package/.output/nitro.json +1 -1
  9. package/.output/public/_nuxt/{BTLEvDxM.js → 4bHdIqEg.js} +8 -8
  10. package/.output/public/_nuxt/B9nXmjSB.js +19 -0
  11. package/.output/public/_nuxt/BASN8nZ0.js +1 -0
  12. package/.output/public/_nuxt/{DNQF_TXX.js → BBBtwOpo.js} +1 -1
  13. package/.output/public/_nuxt/{DoAlYsiF.js → BBwMH_hG.js} +1 -1
  14. package/.output/public/_nuxt/BWSE6hR6.js +1 -0
  15. package/.output/public/_nuxt/BZv4RFYN.js +1 -0
  16. package/.output/public/_nuxt/{BgCrZKv_2.js → Bc0AmjfT.js} +1 -1
  17. package/.output/public/_nuxt/BcmbLh2z2.js +1 -0
  18. package/.output/public/_nuxt/BgTB6h_q.js +2 -0
  19. package/.output/public/_nuxt/BkLJA9J5.js +1 -0
  20. package/.output/public/_nuxt/{XY2z78rj.js → BuCHayqN.js} +1 -1
  21. package/.output/public/_nuxt/{0jKrzLuM.js → BuvcLKh1.js} +1 -1
  22. package/.output/public/_nuxt/C-mDhyEd.js +1 -0
  23. package/.output/public/_nuxt/{DosOJEmZ2.js → C77oC8yC2.js} +1 -1
  24. package/.output/public/_nuxt/CQvmN-Mi.js +1 -0
  25. package/.output/public/_nuxt/CUDrOuW7.js +1 -0
  26. package/.output/public/_nuxt/{DjU9Dx5Y.js → CZcC-gpk.js} +1 -1
  27. package/.output/public/_nuxt/{Cz9gD2Yo.js → CbzsPO5H.js} +1 -1
  28. package/.output/public/_nuxt/CdSOrh2c.js +1 -0
  29. package/.output/public/_nuxt/Cgx818r-.js +1 -0
  30. package/.output/public/_nuxt/Cjm7VogC.js +1 -0
  31. package/.output/public/_nuxt/Cm5mDxzH.js +1 -0
  32. package/.output/public/_nuxt/Cp6z0RN7.js +1 -0
  33. package/.output/public/_nuxt/Ct-WOVr4.js +1 -0
  34. package/.output/public/_nuxt/CwqIxJGj.js +2 -0
  35. package/.output/public/_nuxt/{BGhOrgle.js → D0fhp-Ga.js} +2 -2
  36. package/.output/public/_nuxt/DIaTPH1M.js +1 -0
  37. package/.output/public/_nuxt/DLljr7g0.js +1 -0
  38. package/.output/public/_nuxt/DTYBfjRY.js +1 -0
  39. package/.output/public/_nuxt/DYKVPzN-.js +1 -0
  40. package/.output/public/_nuxt/DZzGarBE2.js +13 -0
  41. package/.output/public/_nuxt/DaMCzQhv.js +1 -0
  42. package/.output/public/_nuxt/DoMxCWN52.js +4 -0
  43. package/.output/public/_nuxt/{CucID8qg2.js → DoTdlVVe2.js} +1 -1
  44. package/.output/public/_nuxt/DsVcWfyR.js +1 -0
  45. package/.output/public/_nuxt/{BCJFMBQ6.js → DzuC31-i.js} +2 -2
  46. package/.output/public/_nuxt/FQri3dV3.js +1 -0
  47. package/.output/public/_nuxt/Lp7Ll94I.js +1 -0
  48. package/.output/public/_nuxt/PluginSlot.DmjNbrcX.css +1 -0
  49. package/.output/public/_nuxt/_id_.hRYo-EAB.css +1 -0
  50. package/.output/public/_nuxt/_wsId_.gXMEOYgX.css +1 -0
  51. package/.output/public/_nuxt/agents.BV70ioCv.css +1 -0
  52. package/.output/public/_nuxt/aml.WU_bh87J.css +1 -0
  53. package/.output/public/_nuxt/builds/latest.json +1 -1
  54. package/.output/public/_nuxt/builds/meta/291ef3e6-fa6a-4dee-8f46-05da1aeab815.json +1 -0
  55. package/.output/public/_nuxt/daq.Bb6l44-O.css +1 -0
  56. package/.output/public/_nuxt/default.jNT73_hq.css +1 -0
  57. package/.output/public/_nuxt/ekuGmQ7R.js +1 -0
  58. package/.output/public/_nuxt/entry.jFrFAWuA.css +1 -0
  59. package/.output/public/_nuxt/pMoIO6rr.js +14 -0
  60. package/.output/public/_nuxt/pages.Cc8GX9T1.css +1 -0
  61. package/.output/public/_nuxt/plugins.wIPyfPn-.css +1 -0
  62. package/.output/public/_nuxt/settings.BCm4NZIc.css +1 -0
  63. package/.output/public/_nuxt/teams.BC75EGnR.css +1 -0
  64. package/.output/server/chunks/_/binding-authz.mjs +23 -0
  65. package/.output/server/chunks/_/binding-authz.mjs.map +1 -0
  66. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  67. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  68. package/.output/server/chunks/_/nitro.mjs +13557 -6855
  69. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  70. package/.output/server/chunks/_/scene-layout.repo.mjs +3 -3
  71. package/.output/server/chunks/_/scene-layout.repo.mjs.map +1 -1
  72. package/.output/server/chunks/build/Checkbox-eax2M3o-.mjs +207 -0
  73. package/.output/server/chunks/build/Checkbox-eax2M3o-.mjs.map +1 -0
  74. package/.output/server/chunks/build/{OmpTerminalPanel-Cw_Vw9oO.mjs → OmpTerminalPanel-Cu_s4i0A.mjs} +2 -2
  75. package/.output/server/chunks/build/{OmpTerminalPanel-Cw_Vw9oO.mjs.map → OmpTerminalPanel-Cu_s4i0A.mjs.map} +1 -1
  76. package/.output/server/chunks/build/{alert-qJnjyRcP.mjs → PluginSlot-CcR4Ys3T.mjs} +140 -4
  77. package/.output/server/chunks/build/PluginSlot-CcR4Ys3T.mjs.map +1 -0
  78. package/.output/server/chunks/build/{TownView-ftIylqiD.mjs → TownView-BdHnAilw.mjs} +5 -5
  79. package/.output/server/chunks/build/{TownView-ftIylqiD.mjs.map → TownView-BdHnAilw.mjs.map} +1 -1
  80. package/.output/server/chunks/build/{_id_-CahfkmEt.mjs → _id_-Cb845FHR.mjs} +7 -5
  81. package/.output/server/chunks/build/_id_-Cb845FHR.mjs.map +1 -0
  82. package/.output/server/chunks/build/{_id_-3Axz2-gV.mjs → _id_-fadFPl2i.mjs} +50 -35
  83. package/.output/server/chunks/build/_id_-fadFPl2i.mjs.map +1 -0
  84. package/.output/server/chunks/build/{_wsId_-BymlQhzS.mjs → _wsId_-CTZswnm5.mjs} +181 -22
  85. package/.output/server/chunks/build/{_wsId_-BymlQhzS.mjs.map → _wsId_-CTZswnm5.mjs.map} +1 -1
  86. package/.output/server/chunks/build/{agents-DuMiSWKp.mjs → agents-Bvin73QY.mjs} +82 -32
  87. package/.output/server/chunks/build/agents-Bvin73QY.mjs.map +1 -0
  88. package/.output/server/chunks/build/aml-uBNIppIf.mjs +508 -0
  89. package/.output/server/chunks/build/aml-uBNIppIf.mjs.map +1 -0
  90. package/.output/server/chunks/build/apiClient-BwnfOQU8.mjs +81 -0
  91. package/.output/server/chunks/build/apiClient-BwnfOQU8.mjs.map +1 -0
  92. package/.output/server/chunks/build/{channel-templates-BStqJ-of.mjs → channel-templates-BTq8570n.mjs} +6 -5
  93. package/.output/server/chunks/build/channel-templates-BTq8570n.mjs.map +1 -0
  94. package/.output/server/chunks/build/{checkbox-C1gABOca.mjs → checkbox-8fB-wI-T.mjs} +2 -2
  95. package/.output/server/chunks/build/{checkbox-C1gABOca.mjs.map → checkbox-8fB-wI-T.mjs.map} +1 -1
  96. package/.output/server/chunks/build/{daq-ChYCABz1.mjs → daq-BvihjQyW.mjs} +111 -109
  97. package/.output/server/chunks/build/daq-BvihjQyW.mjs.map +1 -0
  98. package/.output/server/chunks/build/{dcw-CcQNGggh.mjs → dcw-Ks2vJ4PF.mjs} +5 -3
  99. package/.output/server/chunks/build/dcw-Ks2vJ4PF.mjs.map +1 -0
  100. package/.output/server/chunks/build/{default-95-zOTPt.mjs → default-GgHt4O2R.mjs} +164 -101
  101. package/.output/server/chunks/build/{default-95-zOTPt.mjs.map → default-GgHt4O2R.mjs.map} +1 -1
  102. package/.output/server/chunks/build/{input-number-Bd55elNN.mjs → input-number-DzpyYB99.mjs} +2 -2
  103. package/.output/server/chunks/build/{input-number-Bd55elNN.mjs.map → input-number-DzpyYB99.mjs.map} +1 -1
  104. package/.output/server/chunks/build/{logs-D-2UyGtE.mjs → logs-CYBhkQwh.mjs} +5 -3
  105. package/.output/server/chunks/build/logs-CYBhkQwh.mjs.map +1 -0
  106. package/.output/server/chunks/build/{monitor-mfG5jBtz.mjs → monitor-CyfDt4nR.mjs} +7 -6
  107. package/.output/server/chunks/build/{monitor-mfG5jBtz.mjs.map → monitor-CyfDt4nR.mjs.map} +1 -1
  108. package/.output/server/chunks/build/{pages-Dfosfchr.mjs → pages-C-6BRtv8.mjs} +57 -47
  109. package/.output/server/chunks/build/pages-C-6BRtv8.mjs.map +1 -0
  110. package/.output/server/chunks/build/{permissions-B-hhZuzm.mjs → permissions-B52oOmaO.mjs} +6 -5
  111. package/.output/server/chunks/build/permissions-B52oOmaO.mjs.map +1 -0
  112. package/.output/server/chunks/build/{plugins-DZR0T4Mh.mjs → plugins-dZRegC7m.mjs} +22 -18
  113. package/.output/server/chunks/build/plugins-dZRegC7m.mjs.map +1 -0
  114. package/.output/server/chunks/build/{segmented-LPPREMtZ.mjs → segmented-3TrWo0lS.mjs} +3 -3
  115. package/.output/server/chunks/build/{segmented-LPPREMtZ.mjs.map → segmented-3TrWo0lS.mjs.map} +1 -1
  116. package/.output/server/chunks/build/{settings-BajN9TQW.mjs → settings-CgDLkP3s.mjs} +437 -62
  117. package/.output/server/chunks/build/settings-CgDLkP3s.mjs.map +1 -0
  118. package/.output/server/chunks/build/{table-Bf1r2JjE.mjs → table-BjSWwmic.mjs} +4 -4
  119. package/.output/server/chunks/build/{table-Bf1r2JjE.mjs.map → table-BjSWwmic.mjs.map} +1 -1
  120. package/.output/server/chunks/build/{tag-NO9jEqKy.mjs → tag-DNE9vXc0.mjs} +3 -131
  121. package/.output/server/chunks/build/tag-DNE9vXc0.mjs.map +1 -0
  122. package/.output/server/chunks/build/{teams-t2SkRlJP.mjs → teams-2kz3CusY.mjs} +31 -30
  123. package/.output/server/chunks/build/teams-2kz3CusY.mjs.map +1 -0
  124. package/.output/server/chunks/build/{tokens-DiCojbN8.mjs → tokens-BbWLqtVz.mjs} +6 -5
  125. package/.output/server/chunks/build/tokens-BbWLqtVz.mjs.map +1 -0
  126. package/.output/server/chunks/build/town-BUqRobze.mjs +1 -0
  127. package/.output/server/chunks/build/town-BUqRobze.mjs.map +1 -1
  128. package/.output/server/chunks/build/{town-C7QM8DYK.mjs → town-DJ-V5G9U.mjs} +7 -5
  129. package/.output/server/chunks/build/town-DJ-V5G9U.mjs.map +1 -0
  130. package/.output/server/chunks/build/{useDaqStream-BeA2X8KR.mjs → useDaqStream-CIBaiGAl.mjs} +4 -3
  131. package/.output/server/chunks/build/useDaqStream-CIBaiGAl.mjs.map +1 -0
  132. package/.output/server/chunks/build/{useDcwStream-BJW_MitY.mjs → useDcwStream-CBbiYnWe.mjs} +4 -80
  133. package/.output/server/chunks/build/useDcwStream-CBbiYnWe.mjs.map +1 -0
  134. package/.output/server/chunks/build/{useDeviceTwins-Dwz_EY_i.mjs → useDeviceTwins-Yko6nNPF.mjs} +2 -2
  135. package/.output/server/chunks/build/{useDeviceTwins-Dwz_EY_i.mjs.map → useDeviceTwins-Yko6nNPF.mjs.map} +1 -1
  136. package/.output/server/chunks/build/{useOpsLog-Dm8QEb1I.mjs → useOpsLog-CO_VWh7t.mjs} +2 -2
  137. package/.output/server/chunks/build/{useOpsLog-Dm8QEb1I.mjs.map → useOpsLog-CO_VWh7t.mjs.map} +1 -1
  138. package/.output/server/chunks/build/{useWorkshopApi-B-L3MmIX.mjs → useWorkshopApi-NyjL0L3j.mjs} +4 -2
  139. package/.output/server/chunks/build/{useWorkshopApi-B-L3MmIX.mjs.map → useWorkshopApi-NyjL0L3j.mjs.map} +1 -1
  140. package/.output/server/chunks/build/{users-B9SAdEtH.mjs → users-4nzxTjFT.mjs} +6 -5
  141. package/.output/server/chunks/build/users-4nzxTjFT.mjs.map +1 -0
  142. package/.output/server/chunks/build/workshop-81xhz368.mjs +1 -0
  143. package/.output/server/chunks/build/workshop-81xhz368.mjs.map +1 -1
  144. package/.output/server/chunks/routes/api/health.get.mjs +1 -0
  145. package/.output/server/chunks/routes/api/health.get.mjs.map +1 -1
  146. package/.output/server/chunks/routes/api/index.get.mjs +1 -1
  147. package/.output/server/chunks/routes/api/index.post.mjs +1 -1
  148. package/.output/server/chunks/routes/api/metrics.mjs +1 -0
  149. package/.output/server/chunks/routes/api/metrics.mjs.map +1 -1
  150. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +1 -0
  151. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
  152. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +1 -0
  153. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs.map +1 -1
  154. package/.output/server/chunks/routes/api/plugins/i18n.get.mjs +26 -0
  155. package/.output/server/chunks/routes/api/plugins/i18n.get.mjs.map +1 -0
  156. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +2 -1
  157. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs.map +1 -1
  158. package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +32 -0
  159. package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs.map +1 -0
  160. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs +36 -0
  161. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs.map +1 -0
  162. package/.output/server/chunks/routes/api/system/config.get.mjs +1 -0
  163. package/.output/server/chunks/routes/api/system/config.get.mjs.map +1 -1
  164. package/.output/server/chunks/routes/api/system/index.get.mjs +7 -2
  165. package/.output/server/chunks/routes/api/system/index.get.mjs.map +1 -1
  166. package/.output/server/chunks/routes/api/system/index.patch.mjs +2 -1
  167. package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
  168. package/.output/server/chunks/routes/api/system/index.post.mjs +36 -0
  169. package/.output/server/chunks/routes/api/system/index.post.mjs.map +1 -0
  170. package/.output/server/chunks/routes/api/system/index2.get.mjs +28 -0
  171. package/.output/server/chunks/routes/api/system/index2.get.mjs.map +1 -0
  172. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +2 -1
  173. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs.map +1 -1
  174. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +2 -1
  175. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs.map +1 -1
  176. package/.output/server/chunks/routes/api/system/monitor.get.mjs +1 -0
  177. package/.output/server/chunks/routes/api/system/monitor.get.mjs.map +1 -1
  178. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +8 -5
  179. package/.output/server/chunks/routes/api/system/settings/events.get.mjs.map +1 -1
  180. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +2 -1
  181. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs.map +1 -1
  182. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +2 -1
  183. package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
  184. package/.output/server/chunks/routes/api/users/_id_.get.mjs +2 -1
  185. package/.output/server/chunks/routes/api/users/_id_.get.mjs.map +1 -1
  186. package/.output/server/chunks/routes/api/users/_id_.put.mjs +1 -1
  187. package/.output/server/chunks/routes/api/users/index.get.mjs +2 -1
  188. package/.output/server/chunks/routes/api/users/index.get.mjs.map +1 -1
  189. package/.output/server/chunks/routes/api/users/index.post.mjs +1 -1
  190. package/.output/server/chunks/routes/api/users/login.post.mjs +1 -1
  191. package/.output/server/chunks/routes/api/users/logout.post.mjs +2 -1
  192. package/.output/server/chunks/routes/api/users/logout.post.mjs.map +1 -1
  193. package/.output/server/chunks/routes/api/users/me.get.mjs +2 -1
  194. package/.output/server/chunks/routes/api/users/me.get.mjs.map +1 -1
  195. package/.output/server/chunks/routes/api/users/register.post.mjs +1 -1
  196. package/.output/server/chunks/routes/api/users/setup-status.get.mjs +2 -1
  197. package/.output/server/chunks/routes/api/users/setup-status.get.mjs.map +1 -1
  198. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +2 -1
  199. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs.map +1 -1
  200. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +2 -1
  201. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs.map +1 -1
  202. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +1 -1
  203. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +2 -1
  204. package/.output/server/chunks/routes/api/workshop/_...path_.mjs.map +1 -1
  205. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +2 -1
  206. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs.map +1 -1
  207. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +1 -1
  208. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +1 -1
  209. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +2 -1
  210. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs.map +1 -1
  211. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +5 -2
  212. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs.map +1 -1
  213. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +9 -3
  214. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs.map +1 -1
  215. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +2 -1
  216. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs.map +1 -1
  217. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +2 -1
  218. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
  219. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +23 -3
  220. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs.map +1 -1
  221. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +21 -3
  222. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs.map +1 -1
  223. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +2 -1
  224. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs.map +1 -1
  225. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +2 -1
  226. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs.map +1 -1
  227. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +2 -1
  228. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs.map +1 -1
  229. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +1 -1
  230. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +1 -1
  231. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +75 -0
  232. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs.map +1 -0
  233. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +35 -0
  234. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs.map +1 -0
  235. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +35 -0
  236. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs.map +1 -0
  237. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +46 -0
  238. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs.map +1 -0
  239. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +47 -0
  240. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs.map +1 -0
  241. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +48 -0
  242. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs.map +1 -0
  243. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +41 -0
  244. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs.map +1 -0
  245. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +62 -0
  246. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs.map +1 -0
  247. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +35 -0
  248. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs.map +1 -0
  249. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +36 -0
  250. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs.map +1 -0
  251. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +34 -0
  252. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs.map +1 -0
  253. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +38 -0
  254. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs.map +1 -0
  255. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +37 -0
  256. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs.map +1 -0
  257. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +42 -0
  258. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs.map +1 -0
  259. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +2 -1
  260. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs.map +1 -1
  261. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +2 -1
  262. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs.map +1 -1
  263. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +2 -1
  264. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs.map +1 -1
  265. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +2 -1
  266. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs.map +1 -1
  267. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +2 -1
  268. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs.map +1 -1
  269. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +1 -0
  270. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs.map +1 -1
  271. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +2 -1
  272. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs.map +1 -1
  273. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +2 -1
  274. package/.output/server/chunks/routes/api/workshop/audit.get.mjs.map +1 -1
  275. package/.output/server/chunks/routes/api/workshop/caller.mjs +2 -1
  276. package/.output/server/chunks/routes/api/workshop/caller.mjs.map +1 -1
  277. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +2 -2
  278. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +2 -1
  279. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs.map +1 -1
  280. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +2 -1
  281. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs.map +1 -1
  282. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +1 -1
  283. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +1 -1
  284. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +2 -1
  285. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs.map +1 -1
  286. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +2 -1
  287. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs.map +1 -1
  288. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +1 -1
  289. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +2 -1
  290. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs.map +1 -1
  291. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +1 -1
  292. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +2 -1
  293. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs.map +1 -1
  294. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +2 -1
  295. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs.map +1 -1
  296. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +2 -1
  297. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs.map +1 -1
  298. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +2 -1
  299. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs.map +1 -1
  300. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +2 -1
  301. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs.map +1 -1
  302. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +2 -1
  303. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs.map +1 -1
  304. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +1 -1
  305. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +2 -1
  306. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs.map +1 -1
  307. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +1 -1
  308. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +2 -1
  309. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs.map +1 -1
  310. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +2 -1
  311. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs.map +1 -1
  312. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +1 -1
  313. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +1 -1
  314. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -1
  315. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +2 -1
  316. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs.map +1 -1
  317. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -1
  318. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +1 -0
  319. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs.map +1 -1
  320. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +2 -1
  321. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs.map +1 -1
  322. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +2 -1
  323. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs.map +1 -1
  324. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +2 -1
  325. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs.map +1 -1
  326. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +1 -0
  327. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs.map +1 -1
  328. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +2 -1
  329. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs.map +1 -1
  330. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +1 -1
  331. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +1 -0
  332. package/.output/server/chunks/routes/api/workshop/channels.get.mjs.map +1 -1
  333. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +4 -4
  334. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +2 -1
  335. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
  336. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +2 -1
  337. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs.map +1 -1
  338. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +2 -1
  339. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs.map +1 -1
  340. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +2 -1
  341. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs.map +1 -1
  342. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +2 -1
  343. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs.map +1 -1
  344. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +2 -1
  345. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs.map +1 -1
  346. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +3 -1
  347. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs.map +1 -1
  348. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +2 -1
  349. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
  350. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +2 -1
  351. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs.map +1 -1
  352. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +2 -1
  353. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs.map +1 -1
  354. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +2 -1
  355. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs.map +1 -1
  356. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +2 -1
  357. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -1
  358. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +2 -1
  359. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs.map +1 -1
  360. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +2 -1
  361. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs.map +1 -1
  362. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +2 -1
  363. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs.map +1 -1
  364. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +2 -1
  365. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs.map +1 -1
  366. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +2 -1
  367. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs.map +1 -1
  368. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +2 -1
  369. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
  370. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +2 -1
  371. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs.map +1 -1
  372. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +2 -1
  373. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs.map +1 -1
  374. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +2 -1
  375. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs.map +1 -1
  376. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +2 -1
  377. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs.map +1 -1
  378. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +2 -1
  379. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
  380. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -1
  381. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs.map +1 -1
  382. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +7 -2
  383. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs.map +1 -1
  384. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +2 -1
  385. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs.map +1 -1
  386. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +2 -1
  387. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs.map +1 -1
  388. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +2 -1
  389. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs.map +1 -1
  390. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +2 -1
  391. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs.map +1 -1
  392. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +2 -1
  393. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
  394. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +2 -1
  395. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs.map +1 -1
  396. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +2 -1
  397. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs.map +1 -1
  398. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +2 -1
  399. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs.map +1 -1
  400. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +2 -1
  401. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs.map +1 -1
  402. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +2 -1
  403. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
  404. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +2 -1
  405. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs.map +1 -1
  406. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +2 -1
  407. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
  408. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +2 -1
  409. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs.map +1 -1
  410. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +2 -1
  411. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs.map +1 -1
  412. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +2 -1
  413. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs.map +1 -1
  414. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +2 -1
  415. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
  416. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +2 -1
  417. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs.map +1 -1
  418. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +2 -1
  419. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs.map +1 -1
  420. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +2 -1
  421. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs.map +1 -1
  422. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +2 -1
  423. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs.map +1 -1
  424. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +2 -1
  425. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs.map +1 -1
  426. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +2 -1
  427. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs.map +1 -1
  428. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +2 -1
  429. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs.map +1 -1
  430. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +2 -1
  431. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs.map +1 -1
  432. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +2 -1
  433. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs.map +1 -1
  434. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +2 -1
  435. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs.map +1 -1
  436. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +2 -1
  437. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs.map +1 -1
  438. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -1
  439. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs.map +1 -1
  440. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +2 -1
  441. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs.map +1 -1
  442. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +2 -1
  443. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs.map +1 -1
  444. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +2 -1
  445. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs.map +1 -1
  446. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +2 -1
  447. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs.map +1 -1
  448. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +2 -1
  449. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs.map +1 -1
  450. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +2 -1
  451. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs.map +1 -1
  452. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +2 -1
  453. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs.map +1 -1
  454. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +2 -1
  455. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs.map +1 -1
  456. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +2 -1
  457. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs.map +1 -1
  458. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +2 -1
  459. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs.map +1 -1
  460. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +2 -1
  461. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs.map +1 -1
  462. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +2 -1
  463. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs.map +1 -1
  464. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +32 -1
  465. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs.map +1 -1
  466. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +2 -1
  467. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs.map +1 -1
  468. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +2 -1
  469. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs.map +1 -1
  470. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +3 -2
  471. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs.map +1 -1
  472. package/.output/server/chunks/routes/api/workshop/index.get.mjs +1 -0
  473. package/.output/server/chunks/routes/api/workshop/index.get.mjs.map +1 -1
  474. package/.output/server/chunks/routes/api/workshop/index.post.mjs +1 -1
  475. package/.output/server/chunks/routes/api/workshop/index.put.mjs +2 -1
  476. package/.output/server/chunks/routes/api/workshop/index.put.mjs.map +1 -1
  477. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +12 -6
  478. package/.output/server/chunks/routes/api/workshop/index10.get.mjs.map +1 -1
  479. package/.output/server/chunks/routes/api/workshop/index11.get.mjs +4 -2
  480. package/.output/server/chunks/routes/api/workshop/index11.get.mjs.map +1 -1
  481. package/.output/server/chunks/routes/api/workshop/index12.get.mjs +28 -0
  482. package/.output/server/chunks/routes/api/workshop/index12.get.mjs.map +1 -0
  483. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +17 -11
  484. package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
  485. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -1
  486. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +11 -4
  487. package/.output/server/chunks/routes/api/workshop/index3.get.mjs.map +1 -1
  488. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +2 -1
  489. package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
  490. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +5 -27
  491. package/.output/server/chunks/routes/api/workshop/index4.get.mjs.map +1 -1
  492. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +2 -1
  493. package/.output/server/chunks/routes/api/workshop/index4.post.mjs.map +1 -1
  494. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +24 -18
  495. package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
  496. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +2 -1
  497. package/.output/server/chunks/routes/api/workshop/index5.post.mjs.map +1 -1
  498. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +23 -5
  499. package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
  500. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +2 -1
  501. package/.output/server/chunks/routes/api/workshop/index6.post.mjs.map +1 -1
  502. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +4 -17
  503. package/.output/server/chunks/routes/api/workshop/index7.get.mjs.map +1 -1
  504. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +8 -3
  505. package/.output/server/chunks/routes/api/workshop/index7.post.mjs.map +1 -1
  506. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +20 -21
  507. package/.output/server/chunks/routes/api/workshop/index8.get.mjs.map +1 -1
  508. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +1 -1
  509. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +24 -11
  510. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  511. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +1 -0
  512. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs.map +1 -1
  513. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +1 -0
  514. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs.map +1 -1
  515. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +2 -1
  516. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs.map +1 -1
  517. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +2 -1
  518. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs.map +1 -1
  519. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +2 -1
  520. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs.map +1 -1
  521. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +2 -1
  522. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs.map +1 -1
  523. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +1 -0
  524. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs.map +1 -1
  525. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +2 -1
  526. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs.map +1 -1
  527. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +2 -1
  528. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs.map +1 -1
  529. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +1 -0
  530. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs.map +1 -1
  531. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +1 -1
  532. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +1 -1
  533. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +2 -1
  534. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs.map +1 -1
  535. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +1 -1
  536. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +2 -1
  537. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs.map +1 -1
  538. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +2 -1
  539. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs.map +1 -1
  540. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +1 -0
  541. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs.map +1 -1
  542. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +1 -1
  543. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +2 -1
  544. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs.map +1 -1
  545. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +1 -1
  546. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +44 -0
  547. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs.map +1 -0
  548. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +47 -0
  549. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs.map +1 -0
  550. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +2 -1
  551. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs.map +1 -1
  552. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +2 -1
  553. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs.map +1 -1
  554. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +2 -1
  555. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs.map +1 -1
  556. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +1 -1
  557. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +2 -0
  558. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs.map +1 -1
  559. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +1 -1
  560. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +2 -2
  561. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +1 -0
  562. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs.map +1 -1
  563. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +1 -0
  564. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs.map +1 -1
  565. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +1 -0
  566. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs.map +1 -1
  567. package/.output/server/chunks/routes/renderer.mjs +2 -2
  568. package/.output/server/chunks/virtual/entry.mjs +601 -36
  569. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  570. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  571. package/.output/server/index.mjs +1 -0
  572. package/.output/server/node_modules/@anthropic-ai/claude-agent-sdk/package.json +84 -0
  573. package/.output/server/node_modules/@anthropic-ai/claude-agent-sdk/sdk.mjs +225 -0
  574. package/.output/server/package.json +2 -1
  575. package/README-zh.md +507 -478
  576. package/README.md +517 -486
  577. package/app/app.vue +17 -2
  578. package/app/assets/css/main.css +421 -30
  579. package/app/components/AppHeader.vue +17 -0
  580. package/app/components/AppSidebar.vue +162 -63
  581. package/app/components/AwChart.vue +57 -54
  582. package/app/components/workshop/ChannelSessionList.vue +802 -703
  583. package/app/components/workshop/DaqNodeRow.vue +156 -0
  584. package/app/components/workshop/PluginSlot.vue +120 -0
  585. package/app/composables/workshop/useAmlStream.ts +136 -0
  586. package/app/composables/workshop/useDaqStream.ts +8 -1
  587. package/app/composables/workshop/usePluginPanels.ts +72 -0
  588. package/app/composables/workshop/useWorkshopApi.ts +7 -0
  589. package/app/pages/aml/index.vue +1949 -0
  590. package/app/pages/daq/[id].vue +60 -2
  591. package/app/pages/daq/index.vue +7 -148
  592. package/app/pages/index.vue +235 -213
  593. package/app/pages/plugins/index.vue +280 -274
  594. package/app/pages/settings.vue +555 -78
  595. package/app/pages/workshop/agents.vue +23 -1
  596. package/app/pages/workshop/teams.vue +2 -2
  597. package/app/plugins/aw-plugins.client.ts +95 -6
  598. package/app/plugins/runtime-config.client.ts +4 -14
  599. package/app/plugins/theme.client.ts +13 -3
  600. package/app/stores/app.ts +9 -2
  601. package/app/stores/runtime-config.ts +113 -7
  602. package/cli/aw.mjs +16 -3
  603. package/cli/commands/build.mjs +8 -8
  604. package/cli/commands/dev.mjs +5 -13
  605. package/cli/commands/init.mjs +1 -1
  606. package/cli/commands/start.mjs +10 -17
  607. package/cli/core/args.mjs +85 -4
  608. package/cli/core/child-lifecycle.mjs +136 -0
  609. package/config.yml +24 -0
  610. package/docs/plugins.md +128 -220
  611. package/docs/sdk.md +1 -1
  612. package/i18n/dicts/_en.json +43 -2
  613. package/i18n/dicts/aml.json +163 -0
  614. package/i18n/dicts/channelSessionList.json +4 -1
  615. package/i18n/dicts/daqDetail.json +1 -0
  616. package/i18n/dicts/settings.json +33 -1
  617. package/i18n/dicts/teams.json +9 -1
  618. package/i18n/locales/en.ts +364 -132
  619. package/i18n/locales/zh-CN.ts +433 -201
  620. package/nuxt.config.ts +18 -3
  621. package/package.json +153 -149
  622. package/scripts/_audit/.tmp/audit-data/dcws.json +28 -0
  623. package/scripts/_audit/.tmp/dcw-writes.json +15650 -0
  624. package/scripts/_audit/.tmp/dcws.json +9033 -0
  625. package/scripts/_audit/.tmp/pollution-backup/dcw-rollback.polluted.json +470006 -0
  626. package/scripts/_audit/.tmp/pollution-backup/dcws.polluted.json +9085 -0
  627. package/scripts/_audit/.tmp/probe-cwd.txt +1 -0
  628. package/scripts/_audit/audit-harness-adapters.md +664 -0
  629. package/scripts/_audit/awhome/commands/README.md +3 -0
  630. package/scripts/_audit/awhome/commands/hello.mjs +12 -0
  631. package/scripts/_audit/dcw-controller-e2e.ts +99 -0
  632. package/scripts/_audit/dcw-flush-cost.ts +43 -0
  633. package/scripts/_audit/dcw-rollback-ledger.ts +153 -0
  634. package/scripts/_audit/dcw-unrecorded-write.ts +171 -0
  635. package/scripts/_audit/dcw-write-mutex.ts +157 -0
  636. package/scripts/_audit/diag-cwd.ts +20 -0
  637. package/scripts/_audit/diag-cwd2.ts +19 -0
  638. package/scripts/_audit/exp-cost-scaling.mjs +54 -0
  639. package/scripts/_audit/exp-envelope-and-png.mjs +77 -0
  640. package/scripts/_audit/exp-png-decode.mjs +67 -0
  641. package/scripts/_audit/exp-retention-plan.mjs +61 -0
  642. package/scripts/_audit/exp-retention-rescan.mjs +42 -0
  643. package/scripts/_audit/exp-sweep-fairness.mjs +48 -0
  644. package/scripts/_audit/hello.mjs +12 -0
  645. package/scripts/_audit/http-api-authz-audit.md +657 -0
  646. package/scripts/_audit/ndjson-partial-line-repro.mjs +77 -0
  647. package/scripts/_audit/opencode-await-ternary-repro.mjs +20 -0
  648. package/scripts/_audit/part-frag.txt +84 -0
  649. package/scripts/_audit/part-head.txt +45 -0
  650. package/scripts/_audit/probe-binding.mjs +103 -0
  651. package/scripts/_audit/probe-child.mjs +17 -0
  652. package/scripts/_audit/probe-envelope.mjs +49 -0
  653. package/scripts/_audit/probe-packlist.mjs +67 -0
  654. package/scripts/_audit/probe-routes.mjs +47 -0
  655. package/scripts/_audit/probe-routes2.mjs +38 -0
  656. package/scripts/_audit/probe.ts +9 -0
  657. package/scripts/_audit/probe2.ts +6 -0
  658. package/scripts/_audit/probe3.ts +3 -0
  659. package/scripts/_audit/probe4.ts +3 -0
  660. package/scripts/_audit/proj/.AgentWorkShop/commands/echoargs.mjs +13 -0
  661. package/scripts/_audit/proj/config.yml +1 -0
  662. package/scripts/_audit/run.mjs +30 -0
  663. package/scripts/_audit/runtime-audit.md +716 -0
  664. package/scripts/_audit/ts-resolve-hook.mjs +41 -0
  665. package/scripts/_audit/tsconfig.probe.json +24 -0
  666. package/scripts/_audit/typecheck-out.txt +466 -0
  667. package/scripts/_audit/verify-data-integrity.mjs +112 -0
  668. package/scripts/_dbg-agents-dropdown-shot.py +33 -0
  669. package/scripts/_dbg-anim-verify.mjs +1 -1
  670. package/scripts/_dbg-audit-all-pages.mjs +1 -1
  671. package/scripts/_dbg-availability-probe.ts +11 -0
  672. package/scripts/_dbg-bind-bidi-e2e.mjs +1 -1
  673. package/scripts/_dbg-cf-line-shot.mjs +18 -0
  674. package/scripts/_dbg-channel-plugin-ui.mjs +94 -0
  675. package/scripts/_dbg-configroot-audit.mjs +84 -0
  676. package/scripts/_dbg-crash-recovery.mjs +1 -1
  677. package/scripts/_dbg-crush-probe.sh +21 -0
  678. package/scripts/_dbg-crush-spawn-probe.ts +22 -0
  679. package/scripts/_dbg-daq-acc-probe.mjs +1 -1
  680. package/scripts/_dbg-daq-attrib.mjs +1 -1
  681. package/scripts/_dbg-daq-debug.mjs +1 -1
  682. package/scripts/_dbg-daq-diag.mjs +1 -1
  683. package/scripts/_dbg-daq-e2e.mjs +1 -1
  684. package/scripts/_dbg-daq-filter-e2e.mjs +1 -1
  685. package/scripts/_dbg-daq-filter-e2e2.mjs +1 -1
  686. package/scripts/_dbg-daq-final-regression.mjs +1 -1
  687. package/scripts/_dbg-daq-frame-alarm.mjs +1 -1
  688. package/scripts/_dbg-daq-frame-ui.mjs +1 -1
  689. package/scripts/_dbg-daq-frame-ws.mjs +1 -1
  690. package/scripts/_dbg-daq-frames-e2e.mjs +1 -1
  691. package/scripts/_dbg-daq-full-check.mjs +1 -1
  692. package/scripts/_dbg-daq-intervals-func.mjs +94 -0
  693. package/scripts/_dbg-daq-pages-shot.mjs +1 -1
  694. package/scripts/_dbg-daq-perf.mjs +1 -1
  695. package/scripts/_dbg-daq-probe.mjs +1 -1
  696. package/scripts/_dbg-daq-recipe-e2e.mjs +1 -1
  697. package/scripts/_dbg-daq-rows-probe.mjs +1 -1
  698. package/scripts/_dbg-daq-rowstate-e2e.mjs +1 -1
  699. package/scripts/_dbg-daq-rowstate-shot.mjs +1 -1
  700. package/scripts/_dbg-daq-rowstate-shot2.mjs +1 -1
  701. package/scripts/_dbg-daq-rowstyle-verify.mjs +112 -0
  702. package/scripts/_dbg-dash-console-check.mjs +1 -1
  703. package/scripts/_dbg-dash-deep-probe.mjs +1 -1
  704. package/scripts/_dbg-dash-hitpoint.mjs +1 -1
  705. package/scripts/_dbg-dcw-read-rest.mjs +1 -1
  706. package/scripts/_dbg-dcw-read-ui.mjs +1 -1
  707. package/scripts/_dbg-dcw-shot2.mjs +1 -1
  708. package/scripts/_dbg-diag-mock-loop.mjs +89 -0
  709. package/scripts/_dbg-diag-watch.mjs +95 -0
  710. package/scripts/_dbg-error-probe.mjs +2 -2
  711. package/scripts/_dbg-filter-light-verify.mjs +1 -1
  712. package/scripts/_dbg-final-acceptance-2.mjs +1 -1
  713. package/scripts/_dbg-final-acceptance.mjs +1 -1
  714. package/scripts/_dbg-final-full-e2e.mjs +1 -1
  715. package/scripts/_dbg-final-shots.mjs +32 -0
  716. package/scripts/_dbg-final-t6-hitl.mjs +1 -1
  717. package/scripts/_dbg-fix-unused-imports.py +41 -0
  718. package/scripts/_dbg-fresh-scene-e2e.mjs +1 -1
  719. package/scripts/_dbg-goose-probe.mjs +33 -0
  720. package/scripts/_dbg-goose-probe.sh +10 -0
  721. package/scripts/_dbg-groups-ui-verify.mjs +122 -0
  722. package/scripts/_dbg-harness-ui-shot.py +109 -0
  723. package/scripts/_dbg-hidden-check.mjs +1 -1
  724. package/scripts/_dbg-home-repro.mjs +1 -1
  725. package/scripts/_dbg-home-stack.mjs +1 -1
  726. package/scripts/_dbg-hydration-detail.mjs +1 -1
  727. package/scripts/_dbg-infra-lifecycle.mjs +1 -1
  728. package/scripts/_dbg-line-live-e2e.mjs +1 -1
  729. package/scripts/_dbg-line-repo-test.ts +10 -0
  730. package/scripts/_dbg-login-debug.py +23 -0
  731. package/scripts/_dbg-modbus-latency.mjs +22 -0
  732. package/scripts/_dbg-mqtt-chain-e2e.mjs +1 -1
  733. package/scripts/_dbg-oneshot-impl-probe.ts +67 -0
  734. package/scripts/_dbg-opt-team-e2e.mjs +1 -1
  735. package/scripts/_dbg-panesplitter-fix-check.mjs +1 -1
  736. package/scripts/_dbg-phase-e3-monitor.mjs +1 -1
  737. package/scripts/_dbg-pi-spawn-probe.ts +33 -0
  738. package/scripts/_dbg-plc-e2e.mjs +1 -1
  739. package/scripts/_dbg-plugin-config-ui.mjs +111 -0
  740. package/scripts/_dbg-plugin-panels-ui.mjs +54 -0
  741. package/scripts/_dbg-plugin-sink-rest.mjs +1 -1
  742. package/scripts/_dbg-plugin-sink-ui.mjs +1 -1
  743. package/scripts/_dbg-plugin-ui-wizard.mjs +1 -1
  744. package/scripts/_dbg-plugin-verify-e2e.mjs +1 -1
  745. package/scripts/_dbg-pop-clamp-verify.mjs +1 -1
  746. package/scripts/_dbg-preview-console.mjs +1 -1
  747. package/scripts/_dbg-preview-minrepro.mjs +1 -1
  748. package/scripts/_dbg-preview-pixels.mjs +1 -1
  749. package/scripts/_dbg-quality-pages-e2e.mjs +1 -1
  750. package/scripts/_dbg-qwen-acp-probe.mjs +30 -0
  751. package/scripts/_dbg-qwen-capture.mjs +21 -0
  752. package/scripts/_dbg-rail-tree-e2e.mjs +1 -1
  753. package/scripts/_dbg-real-driver-e2e.mjs +1 -1
  754. package/scripts/_dbg-real-scenario-timeline.log +55 -123
  755. package/scripts/_dbg-redesign-shots.mjs +1 -1
  756. package/scripts/_dbg-release-smoke.mjs +1 -1
  757. package/scripts/_dbg-resolve-probe.ts +6 -0
  758. package/scripts/_dbg-restart-persist.mjs +1 -1
  759. package/scripts/_dbg-sc001-dispatch.mjs +1 -1
  760. package/scripts/_dbg-scenario-final-shot.mjs +1 -1
  761. package/scripts/_dbg-scenario-phase-e2.mjs +1 -1
  762. package/scripts/_dbg-scenario-phase-e3.mjs +1 -1
  763. package/scripts/_dbg-scenario-phase1.mjs +1 -1
  764. package/scripts/_dbg-scenario-phase2.mjs +1 -1
  765. package/scripts/_dbg-scenario-phase3-monitor.mjs +1 -1
  766. package/scripts/_dbg-scenario-phase3.mjs +1 -1
  767. package/scripts/_dbg-settings-draft-probe.mjs +39 -0
  768. package/scripts/_dbg-settings-probe.mjs +33 -0
  769. package/scripts/_dbg-task-cancel-probe.mjs +66 -0
  770. package/scripts/_dbg-town-alarm-e2e.mjs +1 -1
  771. package/scripts/_dbg-town-daq-shot.mjs +1 -1
  772. package/scripts/_dbg-town-full-e2e.mjs +1 -1
  773. package/scripts/_dbg-town-gate.mjs +1 -1
  774. package/scripts/_dbg-town-ins-probe.mjs +1 -1
  775. package/scripts/_dbg-town-perf.mjs +1 -1
  776. package/scripts/_dbg-town-realtime.mjs +1 -1
  777. package/scripts/_dbg-town-shot.py +25 -0
  778. package/scripts/_dbg-town-shot3.mjs +1 -1
  779. package/scripts/_dbg-town-smoke.mjs +54 -0
  780. package/scripts/_dbg-town-truth.mjs +1 -1
  781. package/scripts/_dbg-town-truth2.mjs +1 -1
  782. package/scripts/_dbg-trend-expand-test.mjs +1 -1
  783. package/scripts/_dbg-twindaq-focus.mjs +1 -1
  784. package/scripts/_dbg-ui-polish-shot.mjs +1 -1
  785. package/scripts/_dbg-ui-polish-verify1.mjs +1 -1
  786. package/scripts/_dbg-ui-polish-verify2.mjs +1 -1
  787. package/scripts/_dbg-ui-polish-verify3.mjs +1 -1
  788. package/scripts/_dbg-ui-polish-verify4.mjs +1 -1
  789. package/scripts/_dbg-unify-shot.mjs +1 -1
  790. package/scripts/_dbg-uplink-probe.mjs +1 -1
  791. package/scripts/_dbg-wizard-preview-shot.mjs +1 -1
  792. package/scripts/_dbg-wizard-ui-e2e.mjs +1 -1
  793. package/scripts/_dbg-ws-probe.mjs +1 -1
  794. package/scripts/_dbg-wsdot-sanity.mjs +1 -1
  795. package/scripts/_node-state-probe.mjs +1 -1
  796. package/scripts/_tmp-args-probe.mjs +20 -0
  797. package/scripts/_tmp-cyc-entry.mjs +8 -0
  798. package/scripts/_tmp-cyc-main.mjs +5 -0
  799. package/scripts/_tmp-cyc-mod.mjs +2 -0
  800. package/scripts/_tmp-cycle-a.mjs +6 -0
  801. package/scripts/_tmp-cycle-b.mjs +2 -0
  802. package/scripts/_tmp-cycle-probe.mjs +4 -0
  803. package/scripts/_tmp-entry-variant.mjs +2 -0
  804. package/scripts/_tmp-help-probe.mjs +19 -0
  805. package/scripts/_tmp-help-probe2.mjs +2 -0
  806. package/scripts/_tmp-trace-preload.mjs +1 -0
  807. package/scripts/aml-agent-bridge.ts +230 -0
  808. package/scripts/aml-industrial-loop.ts +232 -0
  809. package/scripts/aml-ui-smoke.mjs +67 -0
  810. package/scripts/aw-start-smoke.mjs +194 -0
  811. package/scripts/design-verify-templates.mjs +1 -1
  812. package/scripts/device-line-restore.mjs +1 -1
  813. package/scripts/e2e-aml.ts +259 -0
  814. package/scripts/e2e-config-groups.mjs +238 -0
  815. package/scripts/e2e-full-closedloop.mjs +911 -0
  816. package/scripts/e2e-full-scenario.ts +321 -0
  817. package/scripts/e2e-harness-consistency.ts +204 -0
  818. package/scripts/e2e-multi-harness.ts +233 -76
  819. package/scripts/e2e-plc-plugin-closedloop.mjs +518 -0
  820. package/scripts/e2e-real-scenario.mjs +466 -452
  821. package/scripts/e2e-template-isolation.mjs +2 -2
  822. package/scripts/experiment-castfilm-closedloop.mjs +423 -0
  823. package/scripts/experiment-castfilm-finish.mjs +194 -0
  824. package/scripts/experiment-castfilm-ui-shot.mjs +52 -0
  825. package/scripts/experiment-castfilm-viz.mjs +172 -0
  826. package/scripts/production-closed-loop-e2e.mjs +74 -28
  827. package/scripts/test-aml-integration.ts +159 -0
  828. package/scripts/test-aml-job.ts +174 -0
  829. package/scripts/test-aml-unit.ts +184 -0
  830. package/scripts/test-cli-exit.mjs +235 -0
  831. package/scripts/test-daq-frame-race.mjs +310 -0
  832. package/scripts/test-data-root.mjs +208 -0
  833. package/scripts/test-log-flooding.mjs +160 -0
  834. package/scripts/test-lru.mjs +78 -0
  835. package/scripts/test-memory-month-query.mjs +62 -0
  836. package/scripts/test-plugin-hardening.mjs +45 -0
  837. package/scripts/test-rollback-index.mjs +79 -0
  838. package/scripts/test-sdk-surface.mjs +155 -0
  839. package/scripts/three-system-e2e.mjs +662 -448
  840. package/scripts/town-scene-clear.mjs +1 -1
  841. package/sdk/client.d.mts +110 -0
  842. package/sdk/client.mjs +144 -124
  843. package/sdk/context.mjs +161 -1
  844. package/sdk/index.d.mts +37 -5
  845. package/sdk/index.mjs +44 -41
  846. package/sdk/lifecycle.mjs +4 -1
  847. package/server/api/plugins/i18n.get.ts +12 -0
  848. package/server/api/system/config-groups/[id].delete.ts +21 -0
  849. package/server/api/system/config-groups/[id].patch.ts +26 -0
  850. package/server/api/system/config-groups/index.get.ts +21 -0
  851. package/server/api/system/config-groups/index.post.ts +33 -0
  852. package/server/api/system/settings/events.get.ts +8 -4
  853. package/server/api/workshop/agent-tools/bindings/[id].delete.ts +6 -1
  854. package/server/api/workshop/agent-tools/bindings/[id].patch.ts +12 -3
  855. package/server/api/workshop/agent-tools/bindings/index.get.ts +29 -2
  856. package/server/api/workshop/agent-tools/invoke.post.ts +30 -5
  857. package/server/api/workshop/aml/datasets/[id]/preview.get.ts +68 -0
  858. package/server/api/workshop/aml/datasets/[id].get.ts +24 -0
  859. package/server/api/workshop/aml/datasets/index.get.ts +20 -0
  860. package/server/api/workshop/aml/datasets/index.post.ts +27 -0
  861. package/server/api/workshop/aml/experiments/index.get.ts +35 -0
  862. package/server/api/workshop/aml/index.get.ts +24 -0
  863. package/server/api/workshop/aml/jobs/[id]/cancel.post.ts +21 -0
  864. package/server/api/workshop/aml/jobs/[id]/logs.get.ts +23 -0
  865. package/server/api/workshop/aml/jobs/[id]/retry.post.ts +20 -0
  866. package/server/api/workshop/aml/jobs/[id].get.ts +23 -0
  867. package/server/api/workshop/aml/jobs/index.get.ts +26 -0
  868. package/server/api/workshop/aml/jobs/index.post.ts +44 -0
  869. package/server/api/workshop/aml/models/[id]/predict.post.ts +24 -0
  870. package/server/api/workshop/aml/models/[id]/promote.post.ts +30 -0
  871. package/server/api/workshop/aml/models/index.get.ts +48 -0
  872. package/server/api/workshop/daq/[id].delete.ts +6 -0
  873. package/server/api/workshop/dcw/[id].patch.ts +14 -2
  874. package/server/api/workshop/hitl/respond.post.ts +3 -1
  875. package/server/api/workshop/teams/[id]/plugins/index.get.ts +36 -0
  876. package/server/api/workshop/teams/[id]/plugins/index.put.ts +42 -0
  877. package/server/api/workshop/teams/index.post.ts +13 -0
  878. package/server/api/workshop/users/me.get.ts +5 -0
  879. package/server/api/workshop/ws.ts +14 -2
  880. package/server/data/daqs.json +1648 -123
  881. package/server/data/dcw-lines.json +301 -0
  882. package/server/data/dcw-products.json +140 -0
  883. package/server/data/dcw-recipes.json +890 -0
  884. package/server/data/dcw-rollback.json +11591 -5740
  885. package/server/data/dcw-runs.json +3745 -3559
  886. package/server/data/dcw-templates.json +120 -0
  887. package/server/data/dcw-writes.json +1800 -0
  888. package/server/data/dcws.json +1576 -287
  889. package/server/data/line-runs.json +137 -27
  890. package/server/harness/pi-aw-tools.mjs +51 -0
  891. package/server/plugins/dev-stability-guard.ts +63 -63
  892. package/server/plugins/system-config.ts +10 -11
  893. package/server/plugins/workshop.ts +10 -0
  894. package/server/plugins-builtin/diag-bridge/client.mjs +84 -0
  895. package/server/plugins-builtin/diag-bridge/i18n.json +72 -0
  896. package/server/plugins-builtin/diag-bridge/index.mjs +127 -22
  897. package/server/plugins-builtin/rag-bridge/client.mjs +108 -0
  898. package/server/plugins-builtin/rag-bridge/i18n.json +60 -0
  899. package/server/plugins-builtin/rag-bridge/index.mjs +67 -20
  900. package/server/services/system-config.ts +610 -396
  901. package/server/services/workshop/agents/adapters/line-spawn.ts +15 -6
  902. package/server/services/workshop/agents/adapters/one-shot-cli-agent.ts +530 -0
  903. package/server/services/workshop/agents/base-agent.ts +210 -0
  904. package/server/services/workshop/agents/binding-authz.ts +57 -0
  905. package/server/services/workshop/agents/claude-agent.ts +546 -30
  906. package/server/services/workshop/agents/codex-agent.ts +729 -822
  907. package/server/services/workshop/agents/copilot-agent.ts +136 -0
  908. package/server/services/workshop/agents/crush-agent.ts +107 -0
  909. package/server/services/workshop/agents/cursor-agent.ts +102 -0
  910. package/server/services/workshop/agents/dsh-agent.ts +578 -670
  911. package/server/services/workshop/agents/gemini-agent.ts +121 -0
  912. package/server/services/workshop/agents/goose-agent.ts +98 -0
  913. package/server/services/workshop/agents/harness-models.ts +305 -270
  914. package/server/services/workshop/agents/hermes-agent.ts +528 -0
  915. package/server/services/workshop/agents/host-tool-bridge.ts +53 -2
  916. package/server/services/workshop/agents/industrial-tools.ts +659 -7
  917. package/server/services/workshop/agents/omp-agent.ts +74 -59
  918. package/server/services/workshop/agents/opencode-agent.ts +936 -987
  919. package/server/services/workshop/agents/pi-agent.ts +108 -0
  920. package/server/services/workshop/agents/qwen-agent.ts +540 -0
  921. package/server/services/workshop/agents/registry.ts +117 -5
  922. package/server/services/workshop/agents/tool-approvals.ts +3 -3
  923. package/server/services/workshop/aml/aml.repo.ts +368 -0
  924. package/server/services/workshop/aml/clean.ts +120 -0
  925. package/server/services/workshop/aml/dataset-builder.ts +491 -0
  926. package/server/services/workshop/aml/gates.ts +121 -0
  927. package/server/services/workshop/aml/job-orchestrator.ts +650 -0
  928. package/server/services/workshop/aml/model-registry.ts +169 -0
  929. package/server/services/workshop/aml/predictor.ts +262 -0
  930. package/server/services/workshop/aml/python/aml_eval.py +171 -0
  931. package/server/services/workshop/aml/python/amlkit.py +120 -0
  932. package/server/services/workshop/aml/python/requirements.txt +7 -0
  933. package/server/services/workshop/aml/python/train-example.py +92 -0
  934. package/server/services/workshop/aml/python-runtime.ts +217 -0
  935. package/server/services/workshop/aml/retention.ts +98 -0
  936. package/server/services/workshop/aml/runtime.ts +45 -0
  937. package/server/services/workshop/aml/spec.ts +63 -0
  938. package/server/services/workshop/aml/stats.ts +140 -0
  939. package/server/services/workshop/daq/bus/mqtt.adapter.ts +8 -1
  940. package/server/services/workshop/daq/daq-controller.ts +147 -19
  941. package/server/services/workshop/daq/daq-node.repo.ts +13 -11
  942. package/server/services/workshop/daq/daq-runtime.ts +11 -0
  943. package/server/services/workshop/daq/drivers.ts +89 -8
  944. package/server/services/workshop/db/aml-team-seeds.ts +118 -0
  945. package/server/services/workshop/db/channel-plugins.repo.ts +27 -1
  946. package/server/services/workshop/db/database.ts +89 -1
  947. package/server/services/workshop/db/memory.repo.ts +31 -0
  948. package/server/services/workshop/db/user.repo.ts +9 -0
  949. package/server/services/workshop/dcw/dcw-controller.ts +33 -7
  950. package/server/services/workshop/dcw/dcw-line.repo.ts +5 -3
  951. package/server/services/workshop/dcw/dcw-node.repo.ts +4 -4
  952. package/server/services/workshop/dcw/dcw-product.repo.ts +8 -8
  953. package/server/services/workshop/dcw/dcw-recipe.repo.ts +6 -7
  954. package/server/services/workshop/dcw/dcw-runtime.ts +16 -2
  955. package/server/services/workshop/dcw/dcw-templates.ts +4 -4
  956. package/server/services/workshop/dcw/line-run.ts +5 -5
  957. package/server/services/workshop/dcw/recipe-rollback-manager.ts +3 -1
  958. package/server/services/workshop/dcw/recipe-rollback.repo.ts +155 -52
  959. package/server/services/workshop/logger.ts +145 -3
  960. package/server/services/workshop/plugins/host.mjs +857 -566
  961. package/server/services/workshop/prompts/loader.ts +32 -6
  962. package/server/services/workshop/runtime/manager.ts +53 -13
  963. package/server/services/workshop/runtime/scheduler-loop.ts +18 -1
  964. package/server/services/workshop/scene/scene-layout.repo.ts +5 -5
  965. package/server/services/workshop/settings.ts +64 -0
  966. package/shared/config/engine.mjs +5 -0
  967. package/shared/config/groups.mjs +220 -0
  968. package/shared/config/home.mjs +11 -2
  969. package/shared/config/schema.json +31 -6
  970. package/shared/daq-protocol.ts +6 -0
  971. package/shared/lru.mjs +94 -0
  972. package/shared/workshop-protocol.ts +2 -2
  973. package/.output/public/_nuxt/2jaJHWIJ.js +0 -1
  974. package/.output/public/_nuxt/B8kt898d.js +0 -1
  975. package/.output/public/_nuxt/BFGpEo8S.js +0 -1
  976. package/.output/public/_nuxt/BG4zduPf.js +0 -14
  977. package/.output/public/_nuxt/BHcpzI2n.js +0 -19
  978. package/.output/public/_nuxt/BWyR3awA.js +0 -1
  979. package/.output/public/_nuxt/Bc89zKq2.js +0 -1
  980. package/.output/public/_nuxt/BetmGSO4.js +0 -1
  981. package/.output/public/_nuxt/BowTbasd.js +0 -1
  982. package/.output/public/_nuxt/BvtknqSC2.js +0 -1
  983. package/.output/public/_nuxt/BytVi9VX2.js +0 -4
  984. package/.output/public/_nuxt/CJviSvm-.js +0 -1
  985. package/.output/public/_nuxt/CTfqWGdy.js +0 -1
  986. package/.output/public/_nuxt/Cb3SnTM8.js +0 -1
  987. package/.output/public/_nuxt/Chc5pfAA.js +0 -1
  988. package/.output/public/_nuxt/CobSUzQv.js +0 -2
  989. package/.output/public/_nuxt/D95h62Jn.js +0 -1
  990. package/.output/public/_nuxt/DGAOugLt.js +0 -1
  991. package/.output/public/_nuxt/DHbTyoAV.js +0 -1
  992. package/.output/public/_nuxt/DfLUN8kY.js +0 -1
  993. package/.output/public/_nuxt/DnziMlcX.js +0 -1
  994. package/.output/public/_nuxt/DvgKXPgu2.js +0 -13
  995. package/.output/public/_nuxt/Q_SJDSgx.js +0 -1
  996. package/.output/public/_nuxt/_id_.DdbYeLqn.css +0 -1
  997. package/.output/public/_nuxt/_wsId_.BqWBlY7X.css +0 -1
  998. package/.output/public/_nuxt/agents.CB9Ck7VQ.css +0 -1
  999. package/.output/public/_nuxt/bFnZa2yd.js +0 -1
  1000. package/.output/public/_nuxt/builds/meta/f7a8e33d-5422-45ac-895d-27168f97e3ad.json +0 -1
  1001. package/.output/public/_nuxt/daq.DGV9QS8d.css +0 -1
  1002. package/.output/public/_nuxt/default.BbgdTDCk.css +0 -1
  1003. package/.output/public/_nuxt/entry.BN02X8iR.css +0 -1
  1004. package/.output/public/_nuxt/pages.CG8UJ2TK.css +0 -1
  1005. package/.output/public/_nuxt/plugins.DpCuwaJt.css +0 -1
  1006. package/.output/public/_nuxt/rkVgzg62.js +0 -1
  1007. package/.output/public/_nuxt/settings.W6qrYAui.css +0 -1
  1008. package/.output/public/_nuxt/teams.BBXVkyKq.css +0 -1
  1009. package/.output/server/chunks/build/_id_-3Axz2-gV.mjs.map +0 -1
  1010. package/.output/server/chunks/build/_id_-CahfkmEt.mjs.map +0 -1
  1011. package/.output/server/chunks/build/agents-DuMiSWKp.mjs.map +0 -1
  1012. package/.output/server/chunks/build/alert-qJnjyRcP.mjs.map +0 -1
  1013. package/.output/server/chunks/build/channel-templates-BStqJ-of.mjs.map +0 -1
  1014. package/.output/server/chunks/build/daq-ChYCABz1.mjs.map +0 -1
  1015. package/.output/server/chunks/build/dcw-CcQNGggh.mjs.map +0 -1
  1016. package/.output/server/chunks/build/logs-D-2UyGtE.mjs.map +0 -1
  1017. package/.output/server/chunks/build/pages-Dfosfchr.mjs.map +0 -1
  1018. package/.output/server/chunks/build/permissions-B-hhZuzm.mjs.map +0 -1
  1019. package/.output/server/chunks/build/plugins-DZR0T4Mh.mjs.map +0 -1
  1020. package/.output/server/chunks/build/responsiveObserve-CS0UB6wQ.mjs +0 -78
  1021. package/.output/server/chunks/build/responsiveObserve-CS0UB6wQ.mjs.map +0 -1
  1022. package/.output/server/chunks/build/settings-BajN9TQW.mjs.map +0 -1
  1023. package/.output/server/chunks/build/tag-NO9jEqKy.mjs.map +0 -1
  1024. package/.output/server/chunks/build/teams-t2SkRlJP.mjs.map +0 -1
  1025. package/.output/server/chunks/build/tokens-DiCojbN8.mjs.map +0 -1
  1026. package/.output/server/chunks/build/town-C7QM8DYK.mjs.map +0 -1
  1027. package/.output/server/chunks/build/useDaqStream-BeA2X8KR.mjs.map +0 -1
  1028. package/.output/server/chunks/build/useDcwStream-BJW_MitY.mjs.map +0 -1
  1029. package/.output/server/chunks/build/users-B9SAdEtH.mjs.map +0 -1
  1030. /package/.output/public/_nuxt/{ORt9oDIy.js → ORt9oDIy2.js} +0 -0
package/README-zh.md CHANGED
@@ -1,478 +1,507 @@
1
- <div align="center">
2
-
3
- <img src="https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/hero.png" alt="AgentWorkShop — 让 Agent 运行产线" width="100%" />
4
-
5
- # AgentWorkShop
6
-
7
- **AI Agent 团队与产线在此交汇。**
8
-
9
- [![Nuxt 4](https://img.shields.io/badge/Nuxt-4-00DC82?logo=nuxt&logoColor=white)](https://nuxt.com)
10
- [![Vue 3.5](https://img.shields.io/badge/Vue-3.5-42B883?logo=vuedotjs&logoColor=white)](https://vuejs.org)
11
- [![TypeScript 5.7](https://img.shields.io/badge/TypeScript-5.7-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org)
12
- [![Node ≥ 23.4](https://img.shields.io/badge/Node.js-%E2%89%A5%2023.4-3C873A?logo=nodedotjs&logoColor=white)](https://nodejs.org)
13
- [![SQLite node:sqlite](https://img.shields.io/badge/SQLite-node:sqlite-003B57?logo=sqlite&logoColor=white)](https://nodejs.org/api/sqlite.html)
14
- [![License: PolyForm Noncommercial](https://img.shields.io/badge/License-PolyForm_NC_1.0-8A2BE2?logo=openaccess&logoColor=white)](./LICENSE)
15
-
16
- **[English →](./README.md)** · **[在线文档 →](https://kingdol666.github.io/AgentWorkShop/)**
17
-
18
- > 📖 文档双语 —— [VitePress 文档站](https://kingdol666.github.io/AgentWorkShop/)内置语言切换(简体中文 / English),指南、SDK 与插件参考全覆盖。
19
-
20
- *一个配置驱动的平台:**AI Agent 团队**与**工业数字孪生**共享同一运行时——Agent 查询真实遥测、经人工审批的写控回路下发监督设定值,每个事件实时推送到 3D 孪生。*
21
-
22
- </div>
23
-
24
- > ⚠️ **定位声明:监督层。** AgentWorkShop 是面向产线管理、数字孪生、数采与 Agent 编排的**监督层**(SCADA 同位)平台,运行在**秒级软实时**档位。它**不是**硬实时控制器:任何时序关键回路(**< 10 ms**、联锁、安全、伺服)**必须在 PLC 内实现**;本平台下发的值均为建议性设定值,产线侧逻辑可否决。
25
-
26
- ---
27
-
28
- ## 这是什么?
29
-
30
- AgentWorkShop 起家于**多智能体软件工作坊**——Channel 内的编码 Agent 团队,配备 lead 调度器、7 状态任务机、持久记忆,以及四个互操作入口(WebSocket / MCP / A2A / REST)。
31
-
32
- 随后它长出了**工业半边**:完整的数采与写控栈(Modbus TCP / OPC UA)、带配方与批次运行的产线、3D 数字孪生小镇——以及让它独一无二的桥:**Agent 可以被授权绑定真实工业节点**,带着物理语义查询实时遥测,经由「联锁 → 人工审批 → 回读校验」管线驱动写操作。
33
-
34
- 最终效果:提交一个目标,比如「分析熔体温度趋势并优化设定值」——Agent 团队读取真实传感器历史、计算统计量、提议新设定值、在 HITL 面板等您批准、写入 PLC、校验回读、带着数值汇报。**端到端,自动化 E2E 已验证。**
35
-
36
- <div align="center">
37
- <img src="https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/town-demo.gif" alt="3D 数字孪生 — 实时产线" width="86%" />
38
- <br><sub><b>实时 3D 孪生。</b>产线设备、设备健康、数采通道与趋势分析——全部由实时遥测驱动。</sub>
39
- </div>
40
-
41
- ---
42
-
43
- ## 特性总览
44
-
45
- | 能力 | 为何重要 |
46
- |---|---|
47
- | **Agent 团队 × 工业作用域** | 把 Agent 绑定到数采/数控节点。Agent 看到的是语义卡(物理含义、单位、安全量程、配方窗口)——而不是裸寄存器。 |
48
- | **人工审批的写控** | 数控下发经过「**安全量程 ∩ 活动配方窗口**」联锁 → 可选 **HITL 审批** → PLC 写入 → **回读校验** → 写历史记账。 |
49
- | **数控读写一体(v0.7)** | 每个控制节点都能沿写链路同一套标定**读回 PLC 当前值**:周期读 + 手动读取 + Agent `dcw_read` 工具,SET 与 ACT 在数控页、孪生面板(绿色 ACT 行)并排呈现 —— 读是被动观测,不受写联锁限制。 |
50
- | **全量配置驱动运行时(v0.7)** | 全部运行旋钮(记忆预算、上下文压缩、回退护栏、保留策略、备份、日志级别…)在设置描述符注册表声明一次,优先级 **config.yml < runtime-settings < env** —— 历史 env 名作别名兼容,代码零硬编码默认。项目级 `.AgentWorkShop` 优先,`~/.AgentWorkShop` 用户级兜底(安装即种子初始化)。 |
51
- | **五协议现场总线** | Modbus TCP、Modbus RTU-over-TCP(串口网关)、OPC UA、MQTT、HTTP/REST —— 数采与写控双驱动带连接池、分类错误文案与逐驱动连接测试;`mock` 覆盖演示/CI;驱动注册表接受插件注册新协议。 |
52
- | **Channel 级 LLM 选择** | 每个 Channel 从 Harness 实时目录中选 **harness → provider → model(+effort)**(如 omp 的 `zhipu-coding-plan/glm-5.3-flash`、dsh 的 `ustc/glm-5.3-flash`)。成员未显式覆盖即继承 —— 一个团队混用多种 harness 是一等公民设定,不是绕行。 |
53
- | **Harness 可用性检查** | `GET /api/workshop/harnesses` 逐引擎探测 PATH 上的 CLI(`available`/`command`/`resolvedPath`);前端禁用未安装项,执行前七处入口强校验 —— 不会再把 Agent 派给一个不存在的引擎。 |
54
- | **HITL + 调控闭环(真实协议验证)** | Agent 下发挂起待人工批准,批准后经 Modbus/OPC UA 真写并回读校验;闭环(下发→采样→判定→keep/回退)在真实模拟器上四引擎并行 E2E 验证。 |
55
- | **Recipe 版本化治理** | 参数修改按版本入史(归因 用户/Agent/系统 + 操作者 + 原因),一键回退任意版本或已知良好批次(非破坏);Agent 经工具保存最佳参数与回退,失效节点参数跳过并明确标识。 |
56
- | **Agent 自查工具** | `line_context` / `ops_log` / `recipe_log` / `recipe_versions` / `dcw_journal` —— Agent 清楚自己操控的产线/产品/配方,谁做过什么、每个值怎么变。运维日志操作者归属「Channel名/成员名」,与用户和系统天然区分。 |
57
- | **可配置节拍(v0.7.7)** | 采样默认间隔与下限、时序查询默认桶宽与下限全部是 **live 设置**(`daq.sampling.*`、`daq.query.*`):config.yml、设置页或 `aw config set` 三路同源 —— 热重载、create/patch 钳制,注入 Agent 的工具描述实时携带当前值。 |
58
- | **多形态数采帧管线(v0.6)** | 测厚仪/扫描仪的多点轮廓与 CCD 图像经模板 sink 处理器加工后入库:向量与元数据入 Timescale(`daq_frames`),像素入对象存储(MinIO,不可达自动降级本地磁盘);派生指标越限走既有告警链路。 |
59
- | **插件扩展 API(v0.6)** | `ctx.daq.registerDriver / registerProcessor / registerTemplate` 自定义采集与下沉算法(放入 `plugins/` 即生效);`ctx.omp.registerTool` 自定义 agent 工具,注册表变更运行时热注入全部在跑会话。 |
60
- | **产线运营** | 产线 → 产品 → 配方 → 批次。配方窗口门控采集并联锁写入;每条样本打标 `product/recipe/run`,实现产品级数据隔离。 |
61
- | **Lead 编排** | 每个 Channel 一名 lead:分解目标、派发空闲 worker、失败重派、判定目标满足度。LLM 决策 + 确定性规则引擎兜底——系统永不停滞。 |
62
- | **三种执行模式** | `goal`(满意度判定)· `loop`(定间隔重放)· `pipeline`(顺序阶段)。7 状态任务机带进度、产物与完整历史。 |
63
- | **四个入口** | 一个 manager 坐在每扇门后:**WS**(AEP v1 事件流,seq 续传)、**MCP**(进程内工具)、**A2A**(JSON-RPC 2.0 + AgentCard)、**REST**。 |
64
- | **持久记忆** | 私有 + Channel 共享双域;FTS5 CJK 切分,可选向量混合检索,token 预算注入;会话压缩摘要自动入库、团队编年史与空闲反思持续沉淀(v0.6)。 |
65
- | **Harness 无关** | 一个 `AgentInterface`:`mock`(进程内)、`omp`(真实 Agent 子进程经 RPC)、`claude`(SDK 适配器)。平台永远不知道跑的是哪个。 |
66
- | **3D 数字孪生** | Three.js 小镇:放置产线设备与 Channel 领地,实时查看设备健康、告警与数值——由同一事件总线驱动。 |
67
-
68
- ---
69
-
70
- ## 界面一览
71
-
72
- <div align="center">
73
-
74
- | Agent 工作台 | 产线运营 |
75
- |:---:|:---:|
76
- | ![Agent 工作台](https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/workshop.png) | ![产线运营](https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/dcw.png) |
77
-
78
- | 数采中心 | 数字孪生小镇 |
79
- |:---:|:---:|
80
- | ![数采中心](https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/daq.png) | ![数字孪生小镇](https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/town.png) |
81
-
82
- </div>
83
-
84
- ---
85
-
86
- ## 设计架构
87
-
88
- ```mermaid
89
- flowchart TB
90
- subgraph FE["前端 — Nuxt 4 / Vue 3"]
91
- UI["工作台 UI · 3D 孪生 · 大屏"]
92
- WS["AEP 客户端 — seq 续传"]
93
- end
94
- subgraph SRV["服务端 — Nitro / h3"]
95
- REST["REST /api/workshop/**"]
96
- HUB["WS Hub — AEP v1"]
97
- A2A["A2A JSON-RPC"]
98
- MCP["MCP Server"]
99
- subgraph RT["运行时"]
100
- MGR["AgentChannelManager"]
101
- SCH["SchedulerLoop — lead 监督"]
102
- TE["TaskEngine — 7 态状态机"]
103
- AR["AgentRuntime × N"]
104
- MEM["AgentMemory — FTS5 + 向量"]
105
- BUS["ChannelBus — per-channel seq + 环形缓冲"]
106
- end
107
- subgraph IND["工业"]
108
- DAQ["数采网关 — 逐节点边缘运行时"]
109
- DCW["数控网关 — 写控"]
110
- BR["队列 — inproc / MQTT"]
111
- TSDB["时序库 — SQLite / Timescale"]
112
- end
113
- subgraph HB["Harness 适配器"]
114
- MOCK["mock"]
115
- OMP["omp — RPC 子进程"]
116
- CDX["codex — app-server"]
117
- DSH["dsh — ACP"]
118
- OC["opencode — serve"]
119
- CLD["claude — SDK"]
120
- end
121
- DB[("SQLite — channels · agents · tasks
122
- messages · memories (FTS5) · events")]
123
- end
124
- UI <--> WS
125
- WS --> BUS
126
- REST & A2A & MCP --> MGR
127
- MGR --> SCH & TE & AR
128
- AR --> MEM
129
- AR --> MOCK & OMP & CDX & DSH & OC & CLD
130
- MGR & TE & MEM & BUS --> DB
131
- DAQ <--> BR --> TSDB
132
- DCW --> BR
133
- DAQ & DCW --> BUS
134
- ```
135
-
136
- **Agent × 机器之桥**(值得读源码的部分):
137
-
138
- ```
139
- agent ──绑定──▶ 节点 (daq: auto / dcw: manual)
140
- │ │
141
- │ my_industrial_nodes ◀── 语义卡:物理含义 · 单位 · 安全量程 · 配方窗口
142
- │ daq_query ◀── 时序库历史,统计 + 物理语义
143
- │ dcw_control ──▶ 联锁(安全量程 ∩ 配方窗口)
144
- │ ──▶ HITL 审批(manual 模式,180s 超时)
145
- │ ──▶ PLC 写入 → 回读校验 → ACK + 写历史
146
- ◀── Agent 可引用数值的结果文本
147
- ```
148
-
149
- ---
150
-
151
- ## 快速开始
152
-
153
- ### 前置条件
154
-
155
- ```bash
156
- node -v # ≥ 23.4.0(需要内置 node:sqlite)
157
- ```
158
-
159
- > 真实 Agent harness 需要对应 CLI 在 PATH 中 —— `omp`、`codex`、`opencode`、`dsh`(任选子集;同一 Channel 可混用多种 harness)。`mock` harness 开箱即用,适合演示与 CI。可选数采基础设施(MQTT broker + TimescaleDB)在 Docker 可达时自动拉起(`docker compose up -d`)。
160
-
161
- ### 方式 A —— 从 npm 安装(推荐)
162
-
163
- ```bash
164
- npm install -g agentworkshop # → `aw` / `agentworkshop` 进入 PATH
165
- aw start # 首次运行构建一次(约 2-3 分钟)→ http://localhost:3001
166
- ```
167
-
168
- 至此即可——无需检出代码、无需构建工具。首次启动时一切初始化进配置根 **`~/.AgentWorkShop`**:默认 `config.yml`、自动生成含随机会话密钥的 `.env`、`runtime-settings.json`、docker-compose 种子与空的 `data/` 目录。全部运行数据(SQLite、JSON 仓库、备份、日志)也都落在配置根——配置与数据跟着安装走,与当前工作目录无关。
169
-
170
- 不想安装、只想跑一次?
171
-
172
- ```bash
173
- npx agentworkshop start # 拉取即运行,全局零残留
174
- ```
175
-
176
- ### 方式 B —— 源码运行
177
-
178
- ```bash
179
- git clone https://github.com/kingdol666/AgentWorkShop.git && cd AgentWorkShop
180
- pnpm install
181
- pnpm dev # → http://localhost:3000(端口取自 config.yml)
182
- ```
183
-
184
- 源码生产部署:
185
-
186
- ```bash
187
- pnpm build # nuxt build → .output/
188
- pnpm start # 端口取自 config.yml → server.prod.port
189
- ```
190
-
191
- > 在源码检出内,配置根是项目里的 **`.AgentWorkShop/`** 文件夹(运行时覆盖、数据、项目级指令),而 `config.yml` / `.env` 留在检出根,作为版本化的工厂默认值。
192
-
193
- ### 版本更新
194
-
195
- ```bash
196
- aw update # 检查 + 就地更新全局安装
197
- aw update --check # 只报告,不安装
198
- npm install -g agentworkshop@latest # 手动等效
199
- ```
200
-
201
- 版本遵循 semver。每次 `aw start` 会校验配置根,并在新版变更目录结构时就地迁移——**升级永不丢数据**。
202
-
203
- ### 第一次「Agent × 产线」会话(约 2 分钟)
204
-
205
- 1. **登录** —— 侧边栏注册(或 `POST /api/users/register`)。
206
- 2. **搭产线** —— 「产线运营」→ 建产线,加数采节点(如 `daq-temp-tc`)与数控节点(如 `dcw-temp-sp`),建产品 + 配方,点**开跑**。实时值开始流动。
207
- 3. **建团队** —— 「Agent 工作台」→ 选 lead + workers,**deploy** 部署进 Channel。
208
- 4. **绑定节点** —— 打开 Agent 详情面板 → 绑定数采节点(*auto*)与数控节点(*manual* = 需您的批准)。
209
- 5. **提交目标** —— 「分析最近 5 分钟熔体温度;若与 182℃ 偏差超过 1℃,修正设定值(等我的批准)。」
210
- 6. **审批** —— Agent 读取真实历史、计算均值、发起写请求 → 在 HITL 面板批准 → 看设定值变化,goal 收口并给出数值报告。
211
-
212
- ---
213
-
214
- ## 配置与 CLI —— 真正的配置驱动
215
-
216
- 一个运行时,一个事实来源。**`config.yml`** 声明默认值;配置根内的 **`runtime-settings.json`** 承载运行时覆盖;环境变量与 CLI 参数在最上层。每个可编辑键在 `shared/config/schema.json` 中声明一次(类型、范围、枚举、实时/重启生效),**前端设置页与 CLI 消费同一份描述符**。
217
-
218
- ```
219
- config.yml(默认值) < .AgentWorkShop/runtime-settings.json(运行时) < 环境变量 / CLI 参数
220
- ```
221
-
222
- 配置根:全局安装(`npm i -g`)时为 **`~/.AgentWorkShop`**——无论在哪个目录运行 `aw`;源码检出时为项目内的 **`<repo>/.AgentWorkShop`**(`config.yml` / `.env` 留在检出根,作为版本化的工厂默认值)。`AW_HOME` 可重定向;`AW_MODE=home` 强制全局形态。
223
-
224
- ### 设置持久化与热重载
225
-
226
- - **系统设置 → 运行配置**标签页按描述符渲染每个可编辑键——改服务端口、主题、API 超时、语言或高危复核闸门,点保存即可。
227
- - `live` 键立即生效(主题、标题、超时、审批闸门、数采采样节拍、时序查询桶宽……),经服务端事件流推送,**无需刷新、无需重启**。
228
- - `restart` 键(端口、主机)落盘持久化,在下一次以对应模式启动时生效(`aw dev` / `aw start`)。
229
- - 所有写入方共用一条通道:**设置页、CLI、服务端文件监听**最终都收敛到同一个设置文件——任何一端改,处处生效。
230
-
231
- 示例——在线调节数采与查询节拍:
232
-
233
- ```bash
234
- aw config set daq.sampling.defaultIntervalMs 2000 # 新节点每 2s 采样
235
- aw config set daq.sampling.minIntervalMs 500 # 节点级下限(create/patch 钳制)
236
- aw config set daq.query.defaultBucketMs 3000 # 时序查询缺省 3s 桶
237
- aw config set daq.query.minBucketMs 500 # 查询下限(samples/产线查询/Agent 工具共用)
238
- ```
239
-
240
- 注入 Agent 的工具描述会在每次装配时以当前配置值重新渲染——LLM 永远看到对自己 `daq_query` 调用真正生效的下限与缺省值。
241
-
242
- ### `aw` CLI
243
-
244
- | 指令 | 作用 |
245
- |---|---|
246
- | `aw start · aw dev · aw build` | 生产服务 / 开发服务器 / 构建——端口取自有效配置;首次 `start` 自动构建一次 |
247
- | `aw config list · get · set · unset · reset` | 读写运行时设置(schema 校验 + 原子写盘) |
248
- | `aw home` | 查看/初始化配置根 `.AgentWorkShop` |
249
- | `aw init <dir>` | 脚手架一个可运行的新项目(含完整配置系统与 CLI) |
250
- | `aw register <路径\|URL\|npm:包名>` | 注册一条新指令——项目级或 `--global` 用户级 |
251
- | `aw update` | 对比 npm 远程最新版本,有新版就就地更新全局安装 |
252
- | `aw doctor` | 环境 + 项目健康检查(node、配置、端口、密钥) |
253
- | `aw status` | 运行态总览:模式、配置来源、运行中服务、指令表 |
254
-
255
- 全局参数:`--help/-h` · `--version/-v` · `--json`(机器可读) · `--root <dir>` · `--debug`。
256
-
257
- ### 指令注册
258
-
259
- 指令就是导出 `{ meta, run }` 的普通模块。把它放进扫描目录,下次调用即生效——无需任何登记清单,约定优于配置:
260
-
261
- | 作用域(同名高者优先) | 目录 |
262
- |---|---|
263
- | 项目级 | `<检出>/.AgentWorkShop/commands/` |
264
- | 用户级 | `~/.AgentWorkShop/commands/` |
265
- | 内建 | 随 CLI 发布(`cli/commands/`) |
266
-
267
- `aw register <file|url|npm:pkg>` 把指令复制进对应作用域(`--global` 进用户级);`aw help` 列出全部已注册指令。
268
-
269
- ```js
270
- // ~/.AgentWorkShop/commands/hello.mjs
271
- export const meta = { name: 'hello', group: '自定义', summary: '问好', usage: 'aw hello [--name <n>]' }
272
- export async function run(argv, ctx) {
273
- console.log(`你好 ${argv.flags.name ?? 'AW'} —— 模式: ${ctx.mode}`)
274
- }
275
- ```
276
-
277
- ---
278
-
279
- ## 工业栈详解
280
-
281
- ### 数据采集(DAQ)
282
-
283
- - **五协议驱动**:Modbus TCP、Modbus RTU-over-TCP(串口网关)、OPC UA、MQTT、HTTP/REST——连接池、分类错误文案、逐驱动连接测试;驱动注册表接受插件注册新协议。
284
- - **逐节点边缘运行时**:独立采样节拍、下发节拍、节点级在飞互斥——一个慢驱动绝不拖累邻居。采样与查询的默认值/下限由 `daq.sampling.*`、`daq.query.*` live 配置驱动。
285
- - **管线**:驱动 → 队列(进程内 / MQTT,断连离线缓冲)→ 消费泵乱序防御 → 三路分发:WS 实时直推(节拍门控)、TSDB 批量落库、设备孪生回写。
286
- - **鲁棒性**:TSDB 单 in-flight 写 + 有界重试,缓冲背压带丢弃计数,真实丢失指标随 `daq.controller` 帧暴露。
287
- - **报警**:配方级监控窗口,**2% 滞回 + 3 拍去抖**;alarm/offline 切换即时生效(安全优先)。
288
-
289
- ### 写控制(DCW)
290
-
291
- - 工程量写入:`linear` 标定(scale/offset)PLC↔物理,**回读校验**(死区容差),ACK 状态 + 写历史。
292
- - **联锁**:产线运行时,活动配方的参数窗口对该节点**替代**全局安全量程。
293
- - **HITL**:`manual` 绑定挂起写入等用户批准(同 Agent+节点去重;批准时二次校验——权限在您点击批准那一刻重查)。
294
-
295
- ### 配方与批次
296
-
297
- `产线 → 产品 → 配方 → 批次`。开跑逐节点应用配方参数(每次写都校验),逐线门控采集,每条样本打标 `line/product/recipe/run`——产品级数据隔离 + 五维查询(产线 × 产品 × 配方 × 时间 × 节点)。
298
-
299
- ---
300
-
301
- ## 使用说明
302
-
303
- ### 认证
304
-
305
- 邮箱 + 密码登录签发 **bearer token**(每用户多 token,可单独吊销)。
306
-
307
- ```bash
308
- # 注册
309
- curl -X POST http://localhost:3000/api/users/register \
310
- -H 'content-type: application/json' \
311
- -d '{"email":"you@example.com","password":"secret","name":"you"}'
312
-
313
- # 所有 workshop 调用
314
- curl http://localhost:3000/api/workshop/channels \
315
- -H 'authorization: Bearer <token>'
316
- ```
317
-
318
- ### 产线级权限
319
-
320
- 工业数据按**产线**三态管控,由管理员在内置「权限管理」页(`/permissions`,仅 admin 侧栏可见)维护:
321
-
322
- | 状态 | 数采节点 | 数控(写控)节点 | 可见性 |
323
- |---|---|---|---|
324
- | **无权**(普通用户默认) | 隐藏 | 隐藏 | 后端不返回该产线数据——产线运营/数采中心/数字孪生均不可见 |
325
- | **仅查看** | 只读 | ✕ | 产线可见、实时值可看,但不可写/不可下发/不可绑定设备 |
326
- | **可操控** | 读取 | 读取+写入 | 全量能力:设定值下发、参数下发、设备绑定 |
327
-
328
- - `admin` / `editor` 为运营角色,不受授权约束(全量全权)。
329
- - 普通用户**默认无权**——未授权前看不到任何产线数据。
330
- - 强制点在数据面:列表接口按授权过滤,写控/下发接口返回人话 403,Agent↔节点绑定校验产线授权(数采需仅查看+,写控需可操控)。
331
- - 插件经 `ctx.permissions`(`lineMode` / `visibleLineIds` / `listGrants` / `setGrants`)获得同一能力面,并有 `permissions:changed` 生命周期钩子;SDK REST 客户端提供 `client.permissions.overview()` / `client.permissions.set(...)`。
332
-
333
- ### 执行模式
334
-
335
- 在任务描述中使用模式前缀(或在 composer UI 中选择):
336
-
337
- | 模式 | 语义 | 配置 |
338
- |---|---|---|
339
- | `goal` | lead 分解 → worker 交付 → **lead 判定满意度**;不满足继续补发;满足收口父任务。 | `goalCriteria` |
340
- | `loop` | 固定间隔循环重放同一任务。 | `intervalMs`(默认 60000)、`maxIterations`(默认 ∞) |
341
- | `pipeline` | 有序阶段;阶段 N+1 消费阶段 N 产出。 | `stages: [{name, description, assigneeId?}]` |
342
-
343
- ### 四个入口
344
-
345
- | 入口 | 端点 | 面向 |
346
- |---|---|---|
347
- | **WS** | `/api/workshop/ws?channelId=…` | 仪表盘 / UI——AEP v1 信封,per-channel 单调 `seq`,5000 事件环形缓冲,`lastSeq` 续传,快照兜底。 |
348
- | **MCP** | 进程内服务,约 20 个工具 | Agent(omp host tools)——管理面 + 作业面工具,Channel 作用域。 |
349
- | **A2A** | `POST /api/workshop/a2a/:agentId/rpc` | 外部 Agent——JSON-RPC 2.0,`AgentCard` 在 `/card`,`tasks/sendSubscribe` SSE。 |
350
- | **REST** | `/api/workshop/**` | 人 / 脚本——完整管理面。 |
351
-
352
- ### 任务状态机
353
-
354
- ```
355
- SUBMITTED ─▶ ASSIGNED ─▶ WORKING ─▶ WAITING ─▶ COMPLETED
356
- │ │ │ │
357
- └────────────┴───────────┴──▶ CANCELED / FAILED ─▶(重试 ≤ 3 或取消)
358
- ```
359
-
360
- ---
361
-
362
- ## 端到端验证
363
-
364
- 仓库自带 live E2E 套件,在生产实例上对**模拟真实产线协议**(Modbus TCP/RTU、OPC UA、MQTT、HTTP + MQTT/Timescale 管线)做全链路验收。最新一轮:**156 断言,0 失败**([完整报告](./docs/audit/e2e-2026-09-07.md)):
365
-
366
- | 套件 | 断言 | 覆盖 |
367
- |---|---|---|
368
- | 五协议真实产线 | 37 ✅ | 协议连通、五协议数采入 Timescale、逐协议数控下发回读、Agent 闭环、HITL 批准后 OPC UA 真写、Recipe 保存/回退、参数账本回退 |
369
- | 多 Harness 并行 | 21 ✅ | omp 闭环 · codex 真实寄存器写入 · dsh 真实数采 · opencode Recipe 写入+回退,四引擎在开跑产线上全部 COMPLETED |
370
- | 权限 / 审计负向 / Harness 可用性 / 失效节点 / Recipe 版本 | 98 ✅ | 产线三态授权、WS 鉴权、引擎探测、三态失效参数、归因版本史 |
371
-
372
- 复现:`node scripts/_dbg-live-line-e2e.mjs` · `node scripts/_dbg-multiharness-live-e2e.mjs`(对运行中的服务端)。
373
-
374
- ---
375
-
376
- ## 项目结构
377
-
378
- ```
379
- AgentWorkShop/
380
- ├── bin/ · cli/ # aw CLI——指令注册表 · 内置指令 · 配置引擎接线
381
- ├── app/ # Nuxt 4 前端(srcDir)
382
- │ ├── pages/ # / · /workshop · /town · /daq · /dcw · /monitor · /users · /tokens
383
- │ ├── components/workshop/ # 时间线 · 泳道 · 任务板 · 记忆面板 · 3D 小镇
384
- │ └── stores/composables/ # Pinia + AEP 客户端
385
- ├── server/
386
- │ ├── api/ # REST + WS + A2A + MCP 路由
387
- │ ├── services/workshop/
388
- │ │ ├── runtime/ # manager · scheduler-loop · task-engine · memory · mailbox
389
- │ │ ├── agents/ # AgentInterface: mock · omp · codex · dsh · opencode · claude(+ 工业工具)
390
- │ │ ├── daq/ dcw/ # 边缘运行时 · 驱动 · 队列 · 存储
391
- │ │ └── db/ # node:sqlite 仓储层
392
- │ ├── mcp/ # MCP 服务(工具)
393
- │ └── plugins/ # 运行时装配(单例)
394
- ├── shared/
395
- │ └── config/ # schema.json(设置描述符)+ 引擎(合并/校验/持久化)+ 模式/路径解析器
396
- ├── config.yml # ⚙ 单一事实来源(工厂默认值)
397
- ├── .AgentWorkShop/ # 配置根 —— prompts(版本化)+ 运行时覆盖 · 数据 · 日志 · 指令(git 忽略)
398
- ├── data/ # 旧版位置(自动迁移进配置根)
399
- └── scripts/ # 启动器 · home 引导 · E2E · 验证套件
400
- ```
401
-
402
- ## 技术栈
403
-
404
- | 层 | 技术 |
405
- |---|---|
406
- | 框架 | [Nuxt 4](https://nuxt.com) + Nitro(WebSocket) |
407
- | UI | Vue 3.5 · Pinia · Ant Design Vue · UnoCSS · Three.js · ECharts |
408
- | 语言 | TypeScript 5.7 全栈;`shared/` 前后端共用 |
409
- | CLI | Node ESM CLI,可插拔指令注册表(`bin/aw.mjs`) |
410
- | 持久化 | `node:sqlite`(零原生依赖)+ FTS5 + 可选 `sqlite-vec`;时序用 TimescaleDB |
411
- | 校验 | `zod` —— 每个消息边界 |
412
- | 互操作 | `@modelcontextprotocol/sdk` · A2A(JSON-RPC 2.0)· AEP v1(自研 WS 协议) |
413
- | 现场总线 | `modbus-serial` · `node-opcua` · `mqtt` |
414
-
415
- ## 开发指南
416
-
417
- ```bash
418
- pnpm dev # 开发服务(端口取自有效配置)
419
- pnpm aw … # 仓库内也能用 CLI:pnpm aw config list
420
- pnpm build && pnpm start
421
- pnpm typecheck
422
- pnpm lint
423
- node scripts/_dbg-full-feature-e2e.mjs # 全功能 live E2E(需服务端运行中)
424
- ```
425
-
426
- ## 路线图
427
-
428
- | 能力 | 状态 |
429
- |---|---|
430
- | Channel 运行时、lead 编排、7 态任务引擎 | 已交付 |
431
- | 四入口:WS(AEP v1)· MCP · A2A · REST | 已交付 |
432
- | 持久记忆(FTS5 + 可选向量混合) | 已交付 |
433
- | 工业栈:数采 · 数控写控 · 产线/配方/批次 | 已交付 |
434
- | Agent ↔ 节点绑定 + HITL 审批 + 联锁 | 已交付 |
435
- | 3D 数字孪生小镇 · 产线运营 UI · 大屏 | 已交付 |
436
- | 全功能 live E2E(Agent 读写真实产线,23 项检查) | 已交付 |
437
- | 运行时配置系统:设置持久化 · 热重载 · 设置页 UI | 已交付 |
438
- | `aw` CLI:config · run · init · register · doctor | 已交付 |
439
- | 多 Harness 注册表:omp · codex · dsh · opencode 子进程引擎 | 已交付 |
440
- | 五种现场协议:Modbus RTU-over-TCP · MQTT · HTTP(数采+数控双向) | 已交付 |
441
- | Harness 可用性探测 + 执行前引擎强校验(UI 禁选 + 409) | 已交付 |
442
- | Recipe 归因版本史 + 非破坏回退(界面 + Agent 工具) | 已交付 |
443
- | Agent 自查工具:line_context / ops_log / recipe_log / recipe_versions / dcw_journal | 已交付 |
444
- | 多 Harness 并行真实产线 E2E(四引擎一条产线) | 已交付 |
445
- | HITL 审批流经真实 OPC UA 写入验证 | 已交付 |
446
- | 双语文档(简体中文 / English,VitePress 语言切换) | 已交付 |
447
- | Channel 级 LLM provider/model 选择(实时 Harness 目录) | 已交付 |
448
- | 可配置数采/时序节拍(采样与查询的默认值+下限,live 热重载) | 已交付 |
449
- | Claude Agent SDK 适配器——与 `mock`/`omp` 完全对齐 | 进行中 |
450
- | 生产硬化:TLS、MQTT 鉴权、OPC UA 签名+加密缺省、结构化审计日志 | 规划中 |
451
- | 边缘部署形态:独立 edge-agent + 中心 broker | 规划中 |
452
- | 报警外送(邮件/webhook)+ 确认工作流 | 规划中 |
453
- | CI 流水线(typecheck + lint + e2e) | 规划中 |
454
- | License:PolyForm Noncommercial 1.0.0(源码可得 · 禁止商用) | 已交付 |
455
-
456
- ## 许可证
457
-
458
- AgentWorkShop 是独立项目,**不是 Anthropic 或任何 LLM 厂商的官方产品**。它通过公开接口与 Agent harness(如 `omp`)集成。
459
-
460
- **AgentWorkShop 为源码可得(source-available)软件,依据 [PolyForm Noncommercial 1.0.0](./LICENSE) 发布。**
461
-
462
- - ✅ **允许** —— 个人学习、科研、兴趣项目、教学,以及非商业组织(公益、教育、公共研究、政府机构)的使用。
463
- - ❌ **未经版权人事先书面许可不得商用** —— 任何**商业用途**:销售、付费服务、集成进商业产品、服务于经营活动的生产使用均未获授权。商用授权请另行洽谈。
464
- - 📌 再分发时必须随附本协议条款与 `Required Notice` 版权声明行。
465
-
466
- 商用授权联系:[GitHub @kingdol666](https://github.com/kingdol666) · kingdol6080@gmail.com
467
-
468
- <div align="center">
469
-
470
- <a href="https://star-history.com/#kingdol666/AgentWorkShop&Date">
471
- <picture>
472
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=kingdol666/AgentWorkShop&type=Date&theme=dark" />
473
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=kingdol666/AgentWorkShop&type=Date" />
474
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=kingdol666/AgentWorkShop&type=Date" width="80%" />
475
- </picture>
476
- </a>
477
-
478
- </div>
1
+ <div align="center">
2
+
3
+ <img src="https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/hero.png" alt="AgentWorkShop — 让 Agent 运行产线" width="100%" />
4
+
5
+ # AgentWorkShop
6
+
7
+ **AI Agent 团队与产线在此交汇。**
8
+
9
+ [![Nuxt 4](https://img.shields.io/badge/Nuxt-4-00DC82?logo=nuxt&logoColor=white)](https://nuxt.com)
10
+ [![Vue 3.5](https://img.shields.io/badge/Vue-3.5-42B883?logo=vuedotjs&logoColor=white)](https://vuejs.org)
11
+ [![TypeScript 5.7](https://img.shields.io/badge/TypeScript-5.7-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org)
12
+ [![Node ≥ 23.4](https://img.shields.io/badge/Node.js-%E2%89%A5%2023.4-3C873A?logo=nodedotjs&logoColor=white)](https://nodejs.org)
13
+ [![SQLite node:sqlite](https://img.shields.io/badge/SQLite-node:sqlite-003B57?logo=sqlite&logoColor=white)](https://nodejs.org/api/sqlite.html)
14
+ [![License: PolyForm Noncommercial](https://img.shields.io/badge/License-PolyForm_NC_1.0-8A2BE2?logo=openaccess&logoColor=white)](./LICENSE)
15
+
16
+ **[English →](./README.md)** · **[在线文档 →](https://kingdol666.github.io/AgentWorkShop/)**
17
+
18
+ > 📖 文档双语 —— [VitePress 文档站](https://kingdol666.github.io/AgentWorkShop/)内置语言切换(简体中文 / English),指南、SDK 与插件参考全覆盖。
19
+
20
+ *一个配置驱动的平台:**AI Agent 团队**与**工业数字孪生**共享同一运行时——Agent 查询真实遥测、经人工审批的写控回路下发监督设定值,每个事件实时推送到 3D 孪生。*
21
+
22
+ </div>
23
+
24
+ > ⚠️ **定位声明:监督层。** AgentWorkShop 是面向产线管理、数字孪生、数采与 Agent 编排的**监督层**(SCADA 同位)平台,运行在**秒级软实时**档位。它**不是**硬实时控制器:任何时序关键回路(**< 10 ms**、联锁、安全、伺服)**必须在 PLC 内实现**;本平台下发的值均为建议性设定值,产线侧逻辑可否决。
25
+
26
+ ---
27
+
28
+ ## 这是什么?
29
+
30
+ AgentWorkShop 起家于**多智能体软件工作坊**——Channel 内的编码 Agent 团队,配备 lead 调度器、7 状态任务机、持久记忆,以及四个互操作入口(WebSocket / MCP / A2A / REST)。
31
+
32
+ 随后它长出了**工业半边**:完整的数采与写控栈(Modbus TCP / OPC UA)、带配方与批次运行的产线、3D 数字孪生小镇——以及让它独一无二的桥:**Agent 可以被授权绑定真实工业节点**,带着物理语义查询实时遥测,经由「联锁 → 人工审批 → 回读校验」管线驱动写操作。
33
+
34
+ 最终效果:提交一个目标,比如「分析熔体温度趋势并优化设定值」——Agent 团队读取真实传感器历史、计算统计量、提议新设定值、在 HITL 面板等您批准、写入 PLC、校验回读、带着数值汇报。**端到端,自动化 E2E 已验证。**
35
+
36
+ <div align="center">
37
+ <img src="https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/town-demo.gif" alt="3D 数字孪生 — 实时产线" width="86%" />
38
+ <br><sub><b>实时 3D 孪生。</b>产线设备、设备健康、数采通道与趋势分析——全部由实时遥测驱动。</sub>
39
+ </div>
40
+
41
+ ---
42
+
43
+ ## 特性总览
44
+
45
+ #### Agent 团队运行时
46
+
47
+ | 能力 | 为何重要 |
48
+ |---|---|
49
+ | **Lead 编排** | 每个 Channel 一名 lead:分解目标、派发空闲 worker、失败重派、判定目标满足度。LLM 决策 + 确定性规则引擎兜底——系统永不停滞。 |
50
+ | **三种执行模式** | `goal`(满意度判定)· `loop`(定间隔重放)· `pipeline`(顺序阶段)。7 状态任务机带进度、产物与完整历史。 |
51
+ | **Harness 无关** | 一个 `AgentInterface`:14 个引擎——`mock`(进程内)、`omp` / `codex` / `dsh` / `opencode` / `claude`(常驻会话,RPC/JSON-RPC/ACP/SDK)、`gemini` / `qwen` / `copilot` / `cursor` / `crush` / `goose` / `pi` / `hermes`(无头 CLI 家族,结构化事件流)。平台永远不知道跑的是哪个。 |
52
+ | **Channel 级 LLM 选择** | 每个 Channel 从 Harness 实时目录中选 **harness → provider → model(+effort)**(如 omp 的 `zhipu-coding-plan/glm-5.3-flash`)。成员未显式覆盖即继承——一个团队混用多种 harness 是一等公民设定,不是绕行。 |
53
+ | **Harness 可用性检查** | `GET /api/workshop/harnesses` 逐引擎探测 PATH 上的 CLI;前端禁用未安装项,执行前逐入口强校验——不会再把 Agent 派给一个不存在的引擎。 |
54
+ | **停滞安全的监督** | 任务回收区分「卡死」与「慢」:看门狗把 Agent 工具调用当作活性信号,健康的长工业作业不会被误回收,真停滞仍会呈报 lead。 |
55
+ | **持久记忆** | 私有 + Channel 共享双域;FTS5 CJK 切分,可选向量混合检索,token 预算注入;团队编年史与空闲反思持续沉淀。 |
56
+ | **四个入口** | 一个 manager 坐在每扇门后:**WS**(AEP v1 事件流,seq 续传)、**MCP**(约 25 个进程内工具)、**A2A**(JSON-RPC 2.0 + AgentCard)、**REST**。 |
57
+
58
+ #### 工业栈
59
+
60
+ | 能力 | 为何重要 |
61
+ |---|---|
62
+ | **五协议现场总线** | Modbus TCP、Modbus RTU-over-TCP(串口网关)、OPC UA、MQTT、HTTP/REST——数采**与**写控双驱动带连接池、分类错误文案与逐驱动连接测试;`mock` 覆盖演示/CI;插件可注册新协议。 |
63
+ | **Agent 团队 × 工业作用域** | 把 Agent 绑定到数采/数控节点。Agent 看到的是语义卡(物理含义、单位、安全量程、配方窗口)——而不是裸寄存器。 |
64
+ | **人工审批的写控** | 数控下发经过「**安全量程 ∩ 活动配方窗口**」联锁 → 可选 **HITL 审批** → PLC 写入 → **回读校验** → 写历史记账。 |
65
+ | **数控读写一体** | 每个控制节点都能沿写链路同一套标定**读回 PLC 当前值**:周期读 + 手动读取 + Agent `dcw_read` 工具,SET 与 ACT 在数控页、孪生面板并排呈现——读是被动观测,不受写联锁限制。 |
66
+ | **Recipe 版本化治理** | 参数修改按版本入史(归因 用户/Agent/系统 + 操作者 + 原因),一键回退任意版本或已知良好批次(非破坏);失效节点参数跳过并明确标识。 |
67
+ | **产线运营** | 产线 → 产品 → 配方 → 批次。配方窗口门控采集并联锁写入;每条样本打标 `product/recipe/run`,实现产品级数据隔离。 |
68
+ | **多形态数采帧管线** | 测厚仪/扫描仪的多点轮廓与 CCD 图像经模板 sink 处理器加工后入库:向量与元数据入 Timescale(`daq_frames`),像素入对象存储(MinIO,不可达自动降级本地磁盘);派生指标越限走既有告警链路。 |
69
+ | **Agent 自查工具** | `line_context` / `ops_log` / `recipe_log` / `recipe_versions` / `dcw_journal`——Agent 清楚自己操控的产线/产品/配方,谁做过什么、每个值怎么变。 |
70
+
71
+ #### 治理、配置与扩展
72
+
73
+ | 能力 | 为何重要 |
74
+ |---|---|
75
+ | **产线级权限** | 工业数据按**产线**三态门控(无权/仅查看/可操控),强制点在数据面——普通用户未授权前看不到任何产线数据。 |
76
+ | **全操作运维日志** | 用户 / Agent / 系统三源动作落同一份可检索日志;操作者归属「Channel名/成员名」,与用户和系统天然区分;WS 实时推送。 |
77
+ | **团队级插件开关** | 每个团队(Channel)持有**独立插件开关组**(`channel_plugins`):被关闭插件的工具不注入该团队 Agent。插件本体经 `aw plugin` 与 `/plugins` 页热管理。 |
78
+ | **插件扩展 API** | `ctx.daq.registerDriver / registerProcessor / registerTemplate` 自定义采集与下沉算法;`ctx.omp.registerTool` 自定义 agent 工具,运行时热注入全部在跑会话。 |
79
+ | **全量配置驱动运行时** | 全部运行旋钮(记忆预算、上下文压缩、回退护栏、保留策略、备份、日志级别…)在设置描述符注册表声明一次,优先级 **config.yml < runtime-settings < env**——73 个设置项、16 组,代码零硬编码默认。 |
80
+ | **可配置节拍** | 采样与查询的默认值/下限全部是 **live 设置**(`daq.sampling.*`、`daq.query.*`):热重载、create/patch 钳制,注入 Agent 的工具描述实时携带当前值。 |
81
+
82
+ #### 数字孪生
83
+
84
+ | 能力 | 为何重要 |
85
+ |---|---|
86
+ | **3D 数字孪生** | Three.js 小镇:放置产线设备与 Channel 领地,实时查看设备健康、告警与数值——由同一事件总线驱动。自适应画质阶梯(DPR/阴影/Bloom 分档 + 墙钟 FPS 预算)自动匹配机器,`window.__townStats` 暴露真实渲染指标供性能探针使用。 |
87
+
88
+ ---
89
+
90
+ ## 界面一览
91
+
92
+ <div align="center">
93
+
94
+ | Agent 工作台 | 产线运营 |
95
+ |:---:|:---:|
96
+ | ![Agent 工作台](https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/workshop.png) | ![产线运营](https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/dcw.png) |
97
+
98
+ | 数采中心 | 数字孪生小镇 |
99
+ |:---:|:---:|
100
+ | ![数采中心](https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/daq.png) | ![数字孪生小镇](https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/town.png) |
101
+
102
+ </div>
103
+
104
+ ---
105
+
106
+ ## 设计架构
107
+
108
+ ```mermaid
109
+ flowchart TB
110
+ subgraph FE["前端 — Nuxt 4 / Vue 3"]
111
+ UI["工作台 UI · 3D 孪生 · 大屏"]
112
+ WS["AEP 客户端 — seq 续传"]
113
+ end
114
+ subgraph SRV["服务端 — Nitro / h3"]
115
+ REST["REST /api/workshop/**"]
116
+ HUB["WS Hub — AEP v1"]
117
+ A2A["A2A JSON-RPC"]
118
+ MCP["MCP Server"]
119
+ subgraph RT["运行时"]
120
+ MGR["AgentChannelManager"]
121
+ SCH["SchedulerLoop — lead 监督"]
122
+ TE["TaskEngine — 7 态状态机"]
123
+ AR["AgentRuntime × N"]
124
+ MEM["AgentMemory — FTS5 + 向量"]
125
+ BUS["ChannelBus — per-channel seq + 环形缓冲"]
126
+ end
127
+ subgraph IND["工业"]
128
+ DAQ["数采网关 — 逐节点边缘运行时"]
129
+ DCW["数控网关 — 写控"]
130
+ BR["队列 — inproc / MQTT"]
131
+ TSDB["时序库 — SQLite / Timescale"]
132
+ end
133
+ subgraph HB["Harness 适配器"]
134
+ MOCK["mock"]
135
+ OMP["omp — RPC 子进程"]
136
+ CDX["codex — app-server"]
137
+ DSH["dsh — ACP"]
138
+ OC["opencode — serve"]
139
+ FAM["gemini / qwen / copilot / cursor / crush / goose / pi / hermes — 无头 CLI 家族"]
140
+ CLD["claude — SDK"]
141
+ end
142
+ DB[("SQLite — channels · agents · tasks
143
+ messages · memories (FTS5) · events")]
144
+ end
145
+ UI <--> WS
146
+ WS --> BUS
147
+ REST & A2A & MCP --> MGR
148
+ MGR --> SCH & TE & AR
149
+ AR --> MEM
150
+ AR --> MOCK & OMP & CDX & DSH & OC & CLD & FAM
151
+ MGR & TE & MEM & BUS --> DB
152
+ DAQ <--> BR --> TSDB
153
+ DCW --> BR
154
+ DAQ & DCW --> BUS
155
+ ```
156
+
157
+ **Agent × 机器之桥**(值得读源码的部分):
158
+
159
+ ```
160
+ agent ──绑定──▶ 节点 (daq: auto / dcw: manual)
161
+ │ │
162
+ │ my_industrial_nodes ◀── 语义卡:物理含义 · 单位 · 安全量程 · 配方窗口
163
+ │ daq_query ◀── 时序库历史,统计 + 物理语义
164
+ │ dcw_control ──▶ 联锁(安全量程 ∩ 配方窗口)
165
+ │ ──▶ HITL 审批(manual 模式,180s 超时)
166
+ │ ──▶ PLC 写入 → 回读校验 → ACK + 写历史
167
+ ◀── Agent 可引用数值的结果文本
168
+ ```
169
+
170
+ ---
171
+
172
+ ## 快速开始
173
+
174
+ ### 前置条件
175
+
176
+ ```bash
177
+ node -v # ≥ 23.4.0(需要内置 node:sqlite)
178
+ ```
179
+
180
+ > 真实 Agent harness 需要对应 CLI 在 PATH 中 —— `omp`、`codex`、`dsh`、`opencode`、`gemini`、`qwen`、`copilot`、`cursor`、`crush`、`goose`、`pi`、`hermes`(任选子集;同一 Channel 可混用)。`mock` 与 `claude`(SDK)无需 PATH 上的 CLI。仪表盘「执行引擎」面板以绿/灰状态点展示每个引擎的就绪度,未安装引擎可点击跳转官网安装。可选数采基础设施(MQTT broker + TimescaleDB)在 Docker 可达时自动拉起(`docker compose up -d`)。
181
+
182
+ ### 方式 A —— 从 npm 安装(推荐)
183
+
184
+ ```bash
185
+ npm install -g agentworkshop # → `aw` / `agentworkshop` 进入 PATH
186
+ aw start # 首次运行构建一次(约 2-3 分钟)→ http://localhost:3001
187
+ ```
188
+
189
+ 至此即可——无需检出代码、无需构建工具。首次启动时一切初始化进配置根 **`~/.AgentWorkShop`**:默认 `config.yml`、自动生成含随机会话密钥的 `.env`、`runtime-settings.json`、docker-compose 种子与空的 `data/` 目录。全部运行数据(SQLite、JSON 仓库、备份、日志)也都落在配置根——配置与数据跟着安装走,与当前工作目录无关。
190
+
191
+ 不想安装、只想跑一次?
192
+
193
+ ```bash
194
+ npx agentworkshop start # 拉取即运行,全局零残留
195
+ ```
196
+
197
+ ### 方式 B —— 源码运行
198
+
199
+ ```bash
200
+ git clone https://github.com/kingdol666/AgentWorkShop.git && cd AgentWorkShop
201
+ pnpm install
202
+ pnpm dev # → http://localhost:3000(端口取自 config.yml)
203
+ ```
204
+
205
+ 源码生产部署:
206
+
207
+ ```bash
208
+ pnpm build # nuxt build → .output/
209
+ pnpm start # 端口取自 config.yml → server.prod.port
210
+ ```
211
+
212
+ > 在源码检出内,配置根是项目里的 **`.AgentWorkShop/`** 文件夹(运行时覆盖、数据、项目级指令),而 `config.yml` / `.env` 留在检出根,作为版本化的工厂默认值。
213
+
214
+ ### 版本更新
215
+
216
+ ```bash
217
+ aw update # 检查 + 就地更新全局安装
218
+ aw update --check # 只报告,不安装
219
+ npm install -g agentworkshop@latest # 手动等效
220
+ ```
221
+
222
+ 版本遵循 semver。每次 `aw start` 会校验配置根,并在新版变更目录结构时就地迁移——**升级永不丢数据**。
223
+
224
+ ### 第一次「Agent × 产线」会话(约 2 分钟)
225
+
226
+ 1. **登录** —— 侧边栏注册(或 `POST /api/users/register`)。
227
+ 2. **搭产线** —— 「产线运营」→ 建产线,加数采节点(如 `daq-temp-tc`)与数控节点(如 `dcw-temp-sp`),建产品 + 配方,点**开跑**。实时值开始流动。
228
+ 3. **建团队** —— 「Agent 工作台」→ 选 lead + workers,**deploy** 部署进 Channel。
229
+ 4. **绑定节点** —— 打开 Agent 详情面板 → 绑定数采节点(*auto*)与数控节点(*manual* = 需您的批准)。
230
+ 5. **提交目标** —— 「分析最近 5 分钟熔体温度;若与 182℃ 偏差超过 1℃,修正设定值(等我的批准)。」
231
+ 6. **审批** —— Agent 读取真实历史、计算均值、发起写请求 → 在 HITL 面板批准 → 看设定值变化,goal 收口并给出数值报告。
232
+
233
+ ---
234
+
235
+ ## 配置与 CLI —— 真正的配置驱动
236
+
237
+ 一个运行时,一个事实来源。**`config.yml`** 声明默认值;配置根内的 **`runtime-settings.json`** 承载运行时覆盖;环境变量与 CLI 参数在最上层。每个可编辑键在 `shared/config/schema.json` 中声明一次(类型、范围、枚举、实时/重启生效),**前端设置页与 CLI 消费同一份描述符**。
238
+
239
+ ```
240
+ config.yml(默认值) < .AgentWorkShop/runtime-settings.json(运行时) < 环境变量 / CLI 参数
241
+ ```
242
+
243
+ 配置根:全局安装(`npm i -g`)时为 **`~/.AgentWorkShop`**——无论在哪个目录运行 `aw`;源码检出时为项目内的 **`<repo>/.AgentWorkShop`**(`config.yml` / `.env` 留在检出根,作为版本化的工厂默认值)。`AW_HOME` 可重定向;`AW_MODE=home` 强制全局形态。
244
+
245
+ ### 设置持久化与热重载
246
+
247
+ - **系统设置 → 运行配置**标签页按描述符渲染每个可编辑键——改服务端口、主题、API 超时、语言或高危复核闸门,点保存即可。
248
+ - `live` 键立即生效(主题、标题、超时、审批闸门、数采采样节拍、时序查询桶宽……),经服务端事件流推送,**无需刷新、无需重启**。
249
+ - `restart` 键(端口、主机)落盘持久化,在下一次以对应模式启动时生效(`aw dev` / `aw start`)。
250
+ - 所有写入方共用一条通道:**设置页、CLI、服务端文件监听**最终都收敛到同一个设置文件——任何一端改,处处生效。
251
+
252
+ 示例——在线调节数采与查询节拍:
253
+
254
+ ```bash
255
+ aw config set daq.sampling.defaultIntervalMs 2000 # 新节点每 2s 采样
256
+ aw config set daq.sampling.minIntervalMs 500 # 节点级下限(create/patch 钳制)
257
+ aw config set daq.query.defaultBucketMs 3000 # 时序查询缺省 3s 桶
258
+ aw config set daq.query.minBucketMs 500 # 查询下限(samples/产线查询/Agent 工具共用)
259
+ ```
260
+
261
+ 注入 Agent 的工具描述会在每次装配时以当前配置值重新渲染——LLM 永远看到对自己 `daq_query` 调用真正生效的下限与缺省值。
262
+
263
+ ### `aw` CLI
264
+
265
+ | 指令 | 作用 |
266
+ |---|---|
267
+ | `aw start · aw dev · aw build` | 生产服务 / 开发服务器 / 构建——端口取自有效配置;首次 `start` 自动构建一次 |
268
+ | `aw stop` | 依单实例锁终止运行中的 aw 服务实例 |
269
+ | `aw config list · get · set · unset · reset` | 读写运行时设置(schema 校验 + 原子写盘) |
270
+ | `aw plugin list · create · enable · disable` | 插件管理:双作用域查看/脚手架/启停(写状态文件,运行中服务自感知热生效) |
271
+ | `aw home` | 查看/初始化配置根 `.AgentWorkShop` |
272
+ | `aw init <dir>` | 脚手架一个可运行的新项目(含完整配置系统与 CLI) |
273
+ | `aw register <路径\|URL\|npm:包名>` | 注册一条新指令——项目级或 `--global` 用户级 |
274
+ | `aw update` | 对比 npm 远程最新版本,有新版就就地更新全局安装 |
275
+ | `aw doctor` | 环境 + 项目健康检查(node、配置、端口、密钥) |
276
+ | `aw status` | 运行态总览:模式、配置来源、运行中服务、指令表 |
277
+ | `aw tui` | 终端工作台:频道/成员管理、任务下发、实时监控、HITL 作答(见 `tui/README.md`) |
278
+
279
+ 全局参数:`--help/-h` · `--version/-v` · `--json`(机器可读) · `--root <dir>` · `--debug`。
280
+
281
+ ### 指令注册
282
+
283
+ 指令就是导出 `{ meta, run }` 的普通模块。把它放进扫描目录,下次调用即生效——无需任何登记清单,约定优于配置:
284
+
285
+ | 作用域(同名高者优先) | 目录 |
286
+ |---|---|
287
+ | 项目级 | `<检出>/.AgentWorkShop/commands/` |
288
+ | 用户级 | `~/.AgentWorkShop/commands/` |
289
+ | 内建 | 随 CLI 发布(`cli/commands/`) |
290
+
291
+ `aw register <file|url|npm:pkg>` 把指令复制进对应作用域(`--global` 进用户级);`aw help` 列出全部已注册指令。
292
+
293
+ ```js
294
+ // ~/.AgentWorkShop/commands/hello.mjs
295
+ export const meta = { name: 'hello', group: '自定义', summary: '问好', usage: 'aw hello [--name <n>]' }
296
+ export async function run(argv, ctx) {
297
+ console.log(`你好 ${argv.flags.name ?? 'AW'} —— 模式: ${ctx.mode}`)
298
+ }
299
+ ```
300
+
301
+ ---
302
+
303
+ ## 工业栈详解
304
+
305
+ ### 数据采集(DAQ)
306
+
307
+ - **五协议驱动**:Modbus TCP、Modbus RTU-over-TCP(串口网关)、OPC UA、MQTT、HTTP/REST——连接池、分类错误文案、逐驱动连接测试;驱动注册表接受插件注册新协议。
308
+ - **逐节点边缘运行时**:独立采样节拍、下发节拍、节点级在飞互斥——一个慢驱动绝不拖累邻居。采样与查询的默认值/下限由 `daq.sampling.*`、`daq.query.*` live 配置驱动。
309
+ - **管线**:驱动 → 队列(进程内 / MQTT,断连离线缓冲)→ 消费泵乱序防御 → 三路分发:WS 实时直推(节拍门控)、TSDB 批量落库、设备孪生回写。
310
+ - **鲁棒性**:TSDB 单 in-flight 写 + 有界重试,缓冲背压带丢弃计数,真实丢失指标随 `daq.controller` 帧暴露。
311
+ - **报警**:配方级监控窗口,**2% 滞回 + 3 拍去抖**;alarm/offline 切换即时生效(安全优先)。
312
+
313
+ ### 写控制(DCW)
314
+
315
+ - 工程量写入:`linear` 标定(scale/offset)PLC↔物理,**回读校验**(死区容差),ACK 状态 + 写历史。
316
+ - **联锁**:产线运行时,活动配方的参数窗口对该节点**替代**全局安全量程。
317
+ - **HITL**:`manual` 绑定挂起写入等用户批准(同 Agent+节点去重;批准时二次校验——权限在您点击批准那一刻重查)。
318
+
319
+ ### 配方与批次
320
+
321
+ `产线 → 产品 → 配方 → 批次`。开跑逐节点应用配方参数(每次写都校验),逐线门控采集,每条样本打标 `line/product/recipe/run`——产品级数据隔离 + 五维查询(产线 × 产品 × 配方 × 时间 × 节点)。
322
+
323
+ ---
324
+
325
+ ## 使用说明
326
+
327
+ ### 认证
328
+
329
+ 邮箱 + 密码登录签发 **bearer token**(每用户多 token,可单独吊销)。
330
+
331
+ ```bash
332
+ # 注册
333
+ curl -X POST http://localhost:3000/api/users/register \
334
+ -H 'content-type: application/json' \
335
+ -d '{"email":"you@example.com","password":"secret","name":"you"}'
336
+
337
+ # 所有 workshop 调用
338
+ curl http://localhost:3000/api/workshop/channels \
339
+ -H 'authorization: Bearer <token>'
340
+ ```
341
+
342
+ ### 产线级权限
343
+
344
+ 工业数据按**产线**三态管控,由管理员在内置「权限管理」页(`/permissions`,仅 admin 侧栏可见)维护:
345
+
346
+ | 状态 | 数采节点 | 数控(写控)节点 | 可见性 |
347
+ |---|---|---|---|
348
+ | **无权**(普通用户默认) | 隐藏 | 隐藏 | 后端不返回该产线数据——产线运营/数采中心/数字孪生均不可见 |
349
+ | **仅查看** | 只读 | ✕ | 产线可见、实时值可看,但不可写/不可下发/不可绑定设备 |
350
+ | **可操控** | 读取 | 读取+写入 | 全量能力:设定值下发、参数下发、设备绑定 |
351
+
352
+ - `admin` / `editor` 为运营角色,不受授权约束(全量全权)。
353
+ - 普通用户**默认无权**——未授权前看不到任何产线数据。
354
+ - 强制点在数据面:列表接口按授权过滤,写控/下发接口返回人话 403,Agent↔节点绑定校验产线授权(数采需仅查看+,写控需可操控)。
355
+ - 插件经 `ctx.permissions`(`lineMode` / `visibleLineIds` / `listGrants` / `setGrants`)获得同一能力面,并有 `permissions:changed` 生命周期钩子;SDK REST 客户端提供 `client.permissions.overview()` / `client.permissions.set(...)`。
356
+
357
+ ### 执行模式
358
+
359
+ 在任务描述中使用模式前缀(或在 composer UI 中选择):
360
+
361
+ | 模式 | 语义 | 配置 |
362
+ |---|---|---|
363
+ | `goal` | lead 分解 → worker 交付 → **lead 判定满意度**;不满足继续补发;满足收口父任务。 | `goalCriteria` |
364
+ | `loop` | 固定间隔循环重放同一任务。 | `intervalMs`(默认 60000)、`maxIterations`(默认 ∞) |
365
+ | `pipeline` | 有序阶段;阶段 N+1 消费阶段 N 产出。 | `stages: [{name, description, assigneeId?}]` |
366
+
367
+ ### 四个入口
368
+
369
+ | 入口 | 端点 | 面向 |
370
+ |---|---|---|
371
+ | **WS** | `/api/workshop/ws?channelId=…` | 仪表盘 / UI——AEP v1 信封,per-channel 单调 `seq`,5000 事件环形缓冲,`lastSeq` 续传,快照兜底。 |
372
+ | **MCP** | 进程内服务,约 25 个工具 | Agent(omp host tools)——管理面 + 作业面工具,Channel 作用域。 |
373
+ | **A2A** | `POST /api/workshop/a2a/:agentId/rpc` | 外部 Agent——JSON-RPC 2.0,`AgentCard` 在 `/card`,`tasks/sendSubscribe` SSE。 |
374
+ | **REST** | `/api/workshop/**` | 人 / 脚本——完整管理面。 |
375
+
376
+ ### 任务状态机
377
+
378
+ ```
379
+ SUBMITTED ─▶ ASSIGNED ─▶ WORKING ─▶ WAITING ─▶ COMPLETED
380
+ │ │ │ │
381
+ └────────────┴───────────┴──▶ CANCELED / FAILED ─▶(重试 ≤ 3 或取消)
382
+ ```
383
+
384
+ ---
385
+
386
+ ## 端到端验证
387
+
388
+ 仓库自带 live E2E 套件,在生产实例上对**模拟真实产线协议**(Modbus TCP/RTU、OPC UA、MQTT、HTTP + MQTT/Timescale 管线)做全链路验收。完整验收基线:**156 断言,0 失败**([完整报告](./docs/audit/e2e-2026-09-07.md));2026-09-09 经 `aw start` 启动的生产实例复跑:
389
+
390
+ | 套件 | 断言 | 覆盖 |
391
+ |---|---|---|
392
+ | 五协议真实产线 | **37/37** ✅ | 协议连通、五协议数采入 Timescale、逐协议数控下发回读、Agent 闭环(真实 LLM)、HITL 批准后 OPC UA 真写、Recipe 保存/回退、参数账本回退 |
393
+ | 生产 API 全链路(api-live-e2e) | **64/64** ✅ | 跨重启持久化、模板 CRUD、任务 assign/complete/cancel/loop/pipeline、A2A+mailbox、WS 广播、MCP 端点、级联删除 |
394
+ | 产线权限 / 审计负向 | **20/20 + 9/9** ✅ | 三态授权 + 人话 403、授权撤销收敛、无 token WS 零遥测 |
395
+ | 渲染功能回归(_dbg-render-regression) | **29/29** ✅ | 227 行表格完整性、WS 驱动行更新、筛选、详情页、3D 小镇 + 模型库、7 页 smoke、零 pageerror |
396
+ | 多 Harness 并行 | 21 ✅ | omp 闭环 · codex 真实寄存器写入 · dsh 真实数采 · opencode Recipe 写入+回退,四引擎在开跑产线上全部 COMPLETED([报告](./docs/audit/e2e-2026-09-07.md)) |
397
+
398
+ 复现(凭据走环境变量 `E2E_USER`/`E2E_PASS`,老套件走 argv):`node scripts/_dbg-live-line-e2e.mjs` · `AW_E2E_TOKEN=<token> node scripts/api-live-e2e.mjs` · `node scripts/_dbg-render-regression.mjs <base> <email> <pass>` · 性能:`scripts/_dbg-render-perf.mjs`。
399
+
400
+ ---
401
+
402
+ ## 项目结构
403
+
404
+ ```
405
+ AgentWorkShop/
406
+ ├── bin/ · cli/ # aw CLI——指令注册表 · 内置指令 · 配置引擎接线
407
+ ├── app/ # Nuxt 4 前端(srcDir)
408
+ │ ├── pages/ # / · /workshop · /town · /daq · /dcw · /monitor · /users · /tokens
409
+ │ ├── components/workshop/ # 时间线 · 泳道 · 任务板 · 记忆面板 · 3D 小镇
410
+ │ └── stores/composables/ # Pinia + AEP 客户端
411
+ ├── server/
412
+ │ ├── api/ # REST + WS + A2A + MCP 路由
413
+ │ ├── services/workshop/
414
+ │ │ ├── runtime/ # manager · scheduler-loop · task-engine · memory · mailbox
415
+ │ │ ├── agents/ # AgentInterface: mock · omp · codex · dsh · opencode · claude(+ 工业工具)
416
+ │ │ ├── daq/ dcw/ # 边缘运行时 · 驱动 · 队列 · 存储
417
+ │ │ └── db/ # node:sqlite 仓储层
418
+ │ ├── mcp/ # MCP 服务(工具)
419
+ │ └── plugins/ # 运行时装配(单例)
420
+ ├── shared/
421
+ │ └── config/ # schema.json(设置描述符)+ 引擎(合并/校验/持久化)+ 模式/路径解析器
422
+ ├── config.yml # ⚙ 单一事实来源(工厂默认值)
423
+ ├── .AgentWorkShop/ # 配置根 —— prompts(版本化)+ 运行时覆盖 · 数据 · 日志 · 指令(git 忽略)
424
+ ├── data/ # 旧版位置(自动迁移进配置根)
425
+ └── scripts/ # 启动器 · home 引导 · E2E · 验证套件
426
+ ```
427
+
428
+ ## 技术栈
429
+
430
+ | 层 | 技术 |
431
+ |---|---|
432
+ | 框架 | [Nuxt 4](https://nuxt.com) + Nitro(WebSocket) |
433
+ | UI | Vue 3.5 · Pinia · Ant Design Vue · UnoCSS · Three.js · ECharts |
434
+ | 语言 | TypeScript 5.7 全栈;`shared/` 前后端共用 |
435
+ | CLI | Node ESM CLI,可插拔指令注册表(`bin/aw.mjs`) |
436
+ | 持久化 | `node:sqlite`(零原生依赖)+ FTS5 + 可选 `sqlite-vec`;时序用 TimescaleDB |
437
+ | 校验 | `zod` —— 每个消息边界 |
438
+ | 互操作 | `@modelcontextprotocol/sdk` · A2A(JSON-RPC 2.0)· AEP v1(自研 WS 协议) |
439
+ | 现场总线 | `modbus-serial` · `node-opcua` · `mqtt` |
440
+
441
+ ## 开发指南
442
+
443
+ ```bash
444
+ pnpm dev # 开发服务(端口取自有效配置)
445
+ pnpm aw … # 仓库内也能用 CLI:pnpm aw config list
446
+ pnpm build && pnpm start
447
+ pnpm typecheck
448
+ pnpm lint
449
+ node scripts/_dbg-full-feature-e2e.mjs # 全功能 live E2E(需服务端运行中)
450
+ ```
451
+
452
+ ## 路线图
453
+
454
+ | 能力 | 状态 |
455
+ |---|---|
456
+ | Channel 运行时、lead 编排、7 态任务引擎 | 已交付 |
457
+ | 四入口:WS(AEP v1)· MCP · A2A · REST | 已交付 |
458
+ | 持久记忆(FTS5 + 可选向量混合) | 已交付 |
459
+ | 工业栈:数采 · 数控写控 · 产线/配方/批次 | 已交付 |
460
+ | Agent ↔ 节点绑定 + HITL 审批 + 联锁 | 已交付 |
461
+ | 3D 数字孪生小镇 · 产线运营 UI · 大屏 | 已交付 |
462
+ | 全功能 live E2E(Agent 读写真实产线,23 项检查) | 已交付 |
463
+ | 运行时配置系统:设置持久化 · 热重载 · 设置页 UI | 已交付 |
464
+ | `aw` CLI:config · run · init · register · doctor | 已交付 |
465
+ | 多 Harness 注册表:omp · codex · dsh · opencode 子进程引擎 | 已交付 |
466
+ | 五种现场协议:Modbus RTU-over-TCP · MQTT · HTTP(数采+数控双向) | 已交付 |
467
+ | Harness 可用性探测 + 执行前引擎强校验(UI 禁选 + 409) | 已交付 |
468
+ | Recipe 归因版本史 + 非破坏回退(界面 + Agent 工具) | 已交付 |
469
+ | Agent 自查工具:line_context / ops_log / recipe_log / recipe_versions / dcw_journal | 已交付 |
470
+ | 多 Harness 并行真实产线 E2E(四引擎一条产线) | 已交付 |
471
+ | HITL 审批流经真实 OPC UA 写入验证 | 已交付 |
472
+ | 双语文档(简体中文 / English,VitePress 语言切换) | 已交付 |
473
+ | Channel 级 LLM provider/model 选择(实时 Harness 目录) | 已交付 |
474
+ | 可配置数采/时序节拍(采样与查询的默认值+下限,live 热重载) | 已交付 |
475
+ | 团队级插件开关(建队勾选 + 团队弹层,按 Channel 过滤工具注入) | 已交付 |
476
+ | 插件热管理:/plugins 管理页 + aw plugin list/enable/disable | 已交付 |
477
+ | 渲染性能专项(v0.7.27):数采主线程阻塞 −90%、孪生 −69%,自适应画质回升最高档;`window.__townStats` 仪表化 | 已交付 |
478
+ | Claude Agent SDK 适配器——与 `mock`/`omp` 完全对齐 | 进行中 |
479
+ | 生产硬化:TLS、MQTT 鉴权、OPC UA 签名+加密缺省、结构化审计日志 | 规划中 |
480
+ | 边缘部署形态:独立 edge-agent + 中心 broker | 规划中 |
481
+ | 报警外送(邮件/webhook)+ 确认工作流 | 规划中 |
482
+ | CI 流水线(typecheck + lint + e2e) | 规划中 |
483
+ | License:PolyForm Noncommercial 1.0.0(源码可得 · 禁止商用) | 已交付 |
484
+
485
+ ## 许可证
486
+
487
+ AgentWorkShop 是独立项目,**不是 Anthropic 或任何 LLM 厂商的官方产品**。它通过公开接口与 Agent harness(如 `omp`)集成。
488
+
489
+ **AgentWorkShop 为源码可得(source-available)软件,依据 [PolyForm Noncommercial 1.0.0](./LICENSE) 发布。**
490
+
491
+ - ✅ **允许** —— 个人学习、科研、兴趣项目、教学,以及非商业组织(公益、教育、公共研究、政府机构)的使用。
492
+ - ❌ **未经版权人事先书面许可不得商用** —— 任何**商业用途**:销售、付费服务、集成进商业产品、服务于经营活动的生产使用均未获授权。商用授权请另行洽谈。
493
+ - 📌 再分发时必须随附本协议条款与 `Required Notice` 版权声明行。
494
+
495
+ 商用授权联系:[GitHub @kingdol666](https://github.com/kingdol666) · kingdol6080@gmail.com
496
+
497
+ <div align="center">
498
+
499
+ <a href="https://star-history.com/#kingdol666/AgentWorkShop&Date">
500
+ <picture>
501
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=kingdol666/AgentWorkShop&type=Date&theme=dark" />
502
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=kingdol666/AgentWorkShop&type=Date" />
503
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=kingdol666/AgentWorkShop&type=Date" width="80%" />
504
+ </picture>
505
+ </a>
506
+
507
+ </div>