agentworkshop 0.7.34 → 0.7.37

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 (944) hide show
  1. package/.output/.AgentWorkShop/aml-python/aml_eval.py +171 -0
  2. package/.output/.AgentWorkShop/aml-python/amlkit.py +120 -0
  3. package/.output/.AgentWorkShop/aml-python/requirements.txt +7 -0
  4. package/.output/.AgentWorkShop/aml-python/train-example.py +92 -0
  5. package/.output/.AgentWorkShop/schema.json +2 -1
  6. package/.output/nitro.json +1 -1
  7. package/.output/public/_nuxt/{DLljr7g0.js → 45zuyAso.js} +1 -1
  8. package/.output/public/_nuxt/4sIEbgcl.js +42 -0
  9. package/.output/public/_nuxt/8NMOXZOV.js +1 -0
  10. package/.output/public/_nuxt/BCGafdXT.js +2 -0
  11. package/.output/public/_nuxt/BDNMzG2s2.js +1 -0
  12. package/.output/public/_nuxt/{C-mDhyEd.js → BDmh31hl.js} +1 -1
  13. package/.output/public/_nuxt/BFkgkW8u.js +4 -0
  14. package/.output/public/_nuxt/BG8sCcwx.js +14 -0
  15. package/.output/public/_nuxt/{D8CqF0yy.js → BHA40aHa.js} +1 -1
  16. package/.output/public/_nuxt/BJHKLJJU.js +1 -0
  17. package/.output/public/_nuxt/{DoTdlVVe2.js → BN6iuJEg2.js} +1 -1
  18. package/.output/public/_nuxt/BNT8gYU92.js +4 -0
  19. package/.output/public/_nuxt/BU83-NnX.js +106 -0
  20. package/.output/public/_nuxt/BYhEUx8t.js +17 -0
  21. package/.output/public/_nuxt/BzHEilTt.js +1 -0
  22. package/.output/public/_nuxt/{Ct-WOVr4.js → C3J6FYKa.js} +1 -1
  23. package/.output/public/_nuxt/C3gwHTz0.js +1 -0
  24. package/.output/public/_nuxt/C4DWUZ6d2.js +1 -0
  25. package/.output/public/_nuxt/C5gUkRwn.js +1 -0
  26. package/.output/public/_nuxt/CClOy-Hz2.js +1 -0
  27. package/.output/public/_nuxt/{CUXCQXjG.js → CM12FuB42.js} +1 -1
  28. package/.output/public/_nuxt/{BSCpFtzG.js → CSkxz2NX.js} +1 -1
  29. package/.output/public/_nuxt/CWoJjWmZ.js +1 -0
  30. package/.output/public/_nuxt/CY9LbPCI.js +1 -0
  31. package/.output/public/_nuxt/CYWVXZTS.js +7 -0
  32. package/.output/public/_nuxt/CZiw7sEV.js +1 -0
  33. package/.output/public/_nuxt/C_OLzD09.js +1 -0
  34. package/.output/public/_nuxt/C__m4EhR.js +1 -0
  35. package/.output/public/_nuxt/Cbq-mryP.js +1 -0
  36. package/.output/public/_nuxt/{C4OAdbVK2.js → Cc_9VzD42.js} +1 -1
  37. package/.output/public/_nuxt/{BASN8nZ0.js → CdPzkOMV.js} +1 -1
  38. package/.output/public/_nuxt/Cec0Ua3F.js +1 -0
  39. package/.output/public/_nuxt/{DYKVPzN-.js → CoNpEq5X.js} +1 -1
  40. package/.output/public/_nuxt/CojCTLKD.js +1 -0
  41. package/.output/public/_nuxt/{B7wL3pDk.js → Crod5z2f.js} +1 -1
  42. package/.output/public/_nuxt/CzlMDL5H.js +13 -0
  43. package/.output/public/_nuxt/{G0qIw7Gq2.js → D0ZBQrN_2.js} +1 -1
  44. package/.output/public/_nuxt/{Lp7Ll94I.js → D1YDxZpZ.js} +1 -1
  45. package/.output/public/_nuxt/{Bc0AmjfT.js → D20Yamr4.js} +1 -1
  46. package/.output/public/_nuxt/D6uzXueg.js +2 -0
  47. package/.output/public/_nuxt/D9Oidm5I.js +1 -0
  48. package/.output/public/_nuxt/DAe0h2MB.js +1 -0
  49. package/.output/public/_nuxt/DBHNsT1Y.js +23 -0
  50. package/.output/public/_nuxt/DDShH71m.js +1 -0
  51. package/.output/public/_nuxt/DDgJcSET.js +19 -0
  52. package/.output/public/_nuxt/DHFrCUxA2.js +13 -0
  53. package/.output/public/_nuxt/{BcrN7QEl2.js → DIaZ2PTo2.js} +1 -1
  54. package/.output/public/_nuxt/DPnwL14Y.js +1 -0
  55. package/.output/public/_nuxt/DR12_WCA.js +3 -0
  56. package/.output/public/_nuxt/{B9nXmjSB.js → DUrecWPx.js} +4 -4
  57. package/.output/public/_nuxt/DVsjtsvZ2.js +1 -0
  58. package/.output/public/_nuxt/DYr1VMiQ.js +6 -0
  59. package/.output/public/_nuxt/DZtm4l-P2.js +1 -0
  60. package/.output/public/_nuxt/DdD9mCHM.js +1 -0
  61. package/.output/public/_nuxt/DeJykBFf.js +9 -0
  62. package/.output/public/_nuxt/{DoMxCWN52.js → DeyBFhKH2.js} +1 -1
  63. package/.output/public/_nuxt/DkGQ7lnb2.js +1 -0
  64. package/.output/public/_nuxt/DmqknNvV.js +18 -0
  65. package/.output/public/_nuxt/DnUuIR83.js +1 -0
  66. package/.output/public/_nuxt/DrYV5i68.js +1 -0
  67. package/.output/public/_nuxt/{B5S_UyaC.js → DtYHUi5Z.js} +1 -1
  68. package/.output/public/_nuxt/Dz_Q3Lpw2.js +1 -0
  69. package/.output/public/_nuxt/DzbFpZRk.js +3 -0
  70. package/.output/public/_nuxt/HBLJ-wei.js +1 -0
  71. package/.output/public/_nuxt/JCoYF4IJ.js +31 -0
  72. package/.output/public/_nuxt/JTLM-kqr2.js +1 -0
  73. package/.output/public/_nuxt/{BeIfu4N3.js → KZQX7xoM.js} +2 -2
  74. package/.output/public/_nuxt/S_fVQwJK.js +1 -0
  75. package/.output/public/_nuxt/TownView.0oLiQgTC.css +1 -0
  76. package/.output/public/_nuxt/YnQxK3eG.js +1 -0
  77. package/.output/public/_nuxt/_id_.D-SYuyZb.css +1 -0
  78. package/.output/public/_nuxt/_id_.hma_BU6T.css +1 -0
  79. package/.output/public/_nuxt/_wsId_.B12v3PhY.css +1 -0
  80. package/.output/public/_nuxt/aLLjF2K-2.js +1 -0
  81. package/.output/public/_nuxt/aWWIh8YL.js +24 -0
  82. package/.output/public/_nuxt/ahgEJu2R.js +1 -0
  83. package/.output/public/_nuxt/aml.COEKNNqK.css +1 -0
  84. package/.output/public/_nuxt/builds/latest.json +1 -1
  85. package/.output/public/_nuxt/builds/meta/a66fdef7-dcfd-453b-b1f6-543c7dfd98d5.json +1 -0
  86. package/.output/public/_nuxt/daq.B3265ZDn.css +1 -0
  87. package/.output/public/_nuxt/dcw.DLYZqEhT.css +1 -0
  88. package/.output/public/_nuxt/default.DE_vT238.css +1 -0
  89. package/.output/public/_nuxt/entry.BB-Eeh-J.css +1 -0
  90. package/.output/public/_nuxt/jZsY8yYz.js +1 -0
  91. package/.output/public/_nuxt/logs.CqFyMrJw.css +1 -0
  92. package/.output/public/_nuxt/pages.ooEzrMm9.css +1 -0
  93. package/.output/public/_nuxt/pdk8jLGT.js +1 -0
  94. package/.output/public/_nuxt/plugins.5e5chZ67.css +1 -0
  95. package/.output/public/_nuxt/pz2JDAM7.js +2 -0
  96. package/.output/public/_nuxt/settings.Dm3M0RLy.css +1 -0
  97. package/.output/public/_nuxt/town.DKIAhKnx.css +1 -0
  98. package/.output/public/_nuxt/users.CXnP2E08.css +1 -0
  99. package/.output/public/_nuxt/vRTjoWqd.js +1 -0
  100. package/.output/public/_nuxt/workshop.Jk5HxWPE.css +1 -0
  101. package/.output/public/_nuxt/zIGh7R49.js +75 -0
  102. package/.output/public/_nuxt/zq5t1vyX.js +1 -0
  103. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  104. package/.output/server/chunks/_/entity.mjs +174 -0
  105. package/.output/server/chunks/_/entity.mjs.map +1 -0
  106. package/.output/server/chunks/_/env-manager.mjs +162 -0
  107. package/.output/server/chunks/_/env-manager.mjs.map +1 -0
  108. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  109. package/.output/server/chunks/_/nitro.mjs +1523 -1027
  110. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  111. package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
  112. package/.output/server/chunks/build/{TownView-BdHnAilw.mjs → TownView-jVazYOjN.mjs} +141 -141
  113. package/.output/server/chunks/build/{TownView-BdHnAilw.mjs.map → TownView-jVazYOjN.mjs.map} +1 -1
  114. package/.output/server/chunks/build/{_id_-Cb845FHR.mjs → _id_-CfVosNg3.mjs} +136 -136
  115. package/.output/server/chunks/build/{_id_-Cb845FHR.mjs.map → _id_-CfVosNg3.mjs.map} +1 -1
  116. package/.output/server/chunks/build/{_id_-fadFPl2i.mjs → _id_-Hwr4rZpr.mjs} +32 -32
  117. package/.output/server/chunks/build/{_id_-fadFPl2i.mjs.map → _id_-Hwr4rZpr.mjs.map} +1 -1
  118. package/.output/server/chunks/build/{_wsId_-CTZswnm5.mjs → _wsId_-BVg3bB77.mjs} +175 -165
  119. package/.output/server/chunks/build/{_wsId_-CTZswnm5.mjs.map → _wsId_-BVg3bB77.mjs.map} +1 -1
  120. package/.output/server/chunks/build/aml-BCSJCdX7.mjs +588 -0
  121. package/.output/server/chunks/build/aml-BCSJCdX7.mjs.map +1 -0
  122. package/.output/server/chunks/build/{daq-BvihjQyW.mjs → daq-C03Uu5UE.mjs} +108 -106
  123. package/.output/server/chunks/build/daq-C03Uu5UE.mjs.map +1 -0
  124. package/.output/server/chunks/build/{dcw-Ks2vJ4PF.mjs → dcw-6vEYVeje.mjs} +44 -44
  125. package/.output/server/chunks/build/{dcw-Ks2vJ4PF.mjs.map → dcw-6vEYVeje.mjs.map} +1 -1
  126. package/.output/server/chunks/build/{default-GgHt4O2R.mjs → default-hseyOqBT.mjs} +30 -27
  127. package/.output/server/chunks/build/{default-GgHt4O2R.mjs.map → default-hseyOqBT.mjs.map} +1 -1
  128. package/.output/server/chunks/build/{logs-CYBhkQwh.mjs → logs-B-xhuqln.mjs} +35 -35
  129. package/.output/server/chunks/build/{logs-CYBhkQwh.mjs.map → logs-B-xhuqln.mjs.map} +1 -1
  130. package/.output/server/chunks/build/{pages-C-6BRtv8.mjs → pages-BO7yZsXA.mjs} +18 -27
  131. package/.output/server/chunks/build/pages-BO7yZsXA.mjs.map +1 -0
  132. package/.output/server/chunks/build/{plugins-dZRegC7m.mjs → plugins-CUWmMdyt.mjs} +17 -17
  133. package/.output/server/chunks/build/{plugins-dZRegC7m.mjs.map → plugins-CUWmMdyt.mjs.map} +1 -1
  134. package/.output/server/chunks/build/{settings-CgDLkP3s.mjs → settings-DoQ2Oq3P.mjs} +43 -43
  135. package/.output/server/chunks/build/{settings-CgDLkP3s.mjs.map → settings-DoQ2Oq3P.mjs.map} +1 -1
  136. package/.output/server/chunks/build/{town-DJ-V5G9U.mjs → town-BOl6hs9B.mjs} +7 -7
  137. package/.output/server/chunks/build/{town-DJ-V5G9U.mjs.map → town-BOl6hs9B.mjs.map} +1 -1
  138. package/.output/server/chunks/build/useDaqStream-CIBaiGAl.mjs +1 -1
  139. package/.output/server/chunks/build/useDcwStream-CBbiYnWe.mjs +1 -1
  140. package/.output/server/chunks/build/{useWorkshopWs-CprkZEdq.mjs → useWorkshopWs-C_I7q9As.mjs} +110 -32
  141. package/.output/server/chunks/build/{useWorkshopWs-CprkZEdq.mjs.map → useWorkshopWs-C_I7q9As.mjs.map} +1 -1
  142. package/.output/server/chunks/build/{users-4nzxTjFT.mjs → users-fohSmF-J.mjs} +6 -6
  143. package/.output/server/chunks/build/{users-4nzxTjFT.mjs.map → users-fohSmF-J.mjs.map} +1 -1
  144. package/.output/server/chunks/build/{workshop-81xhz368.mjs → workshop-DX5-ldc4.mjs} +15 -15
  145. package/.output/server/chunks/build/{workshop-81xhz368.mjs.map → workshop-DX5-ldc4.mjs.map} +1 -1
  146. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +21 -8
  147. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
  148. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +1 -1
  149. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +58 -0
  150. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs.map +1 -0
  151. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +27 -6
  152. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs.map +1 -1
  153. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +49 -0
  154. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs.map +1 -0
  155. package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +45 -0
  156. package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs.map +1 -0
  157. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +30 -0
  158. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs.map +1 -0
  159. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +40 -0
  160. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs.map +1 -0
  161. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +42 -0
  162. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs.map +1 -0
  163. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +1 -1
  164. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +1 -1
  165. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +4 -22
  166. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs.map +1 -1
  167. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +1 -1
  168. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +4 -16
  169. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs.map +1 -1
  170. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +19 -34
  171. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs.map +1 -1
  172. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +41 -0
  173. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs.map +1 -0
  174. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +62 -0
  175. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs.map +1 -0
  176. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +1 -1
  177. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +1 -1
  178. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +1 -1
  179. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +63 -0
  180. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs.map +1 -0
  181. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +1 -1
  182. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +1 -1
  183. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +54 -0
  184. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs.map +1 -0
  185. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +46 -0
  186. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs.map +1 -0
  187. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +1 -1
  188. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +1 -1
  189. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +2 -2
  190. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +1 -1
  191. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +1 -1
  192. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +1 -1
  193. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +1 -1
  194. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -1
  195. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +1 -1
  196. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +4 -4
  197. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -1
  198. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +1 -1
  199. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -1
  200. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +1 -1
  201. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +1 -1
  202. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +1 -1
  203. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +1 -1
  204. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +1 -1
  205. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -1
  206. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
  207. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
  208. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
  209. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
  210. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
  211. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +1 -1
  212. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -1
  213. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
  214. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
  215. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
  216. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
  217. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
  218. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
  219. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -1
  220. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
  221. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
  222. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
  223. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -1
  224. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -1
  225. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +1 -1
  226. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
  227. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -1
  228. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
  229. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -1
  230. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
  231. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
  232. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
  233. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
  234. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
  235. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -1
  236. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -1
  237. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
  238. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
  239. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
  240. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
  241. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
  242. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +1 -1
  243. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
  244. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
  245. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
  246. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  247. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  248. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
  249. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
  250. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +1 -1
  251. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  252. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  253. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  254. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  255. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  256. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +12 -1
  257. package/.output/server/chunks/routes/api/workshop/index2.get.mjs.map +1 -1
  258. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
  259. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
  260. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -1
  261. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -1
  262. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
  263. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
  264. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  265. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  266. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  267. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  268. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +1 -1
  269. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +1 -1
  270. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +1 -1
  271. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +2 -2
  272. package/.output/server/chunks/routes/renderer.mjs +2 -2
  273. package/.output/server/chunks/virtual/entry.mjs +103 -17
  274. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  275. package/.output/server/package.json +1 -1
  276. package/README-zh.md +578 -507
  277. package/README.md +125 -51
  278. package/app/assets/css/main.css +329 -22
  279. package/app/components/AppHeader.vue +5 -4
  280. package/app/components/AppSidebar.vue +5 -4
  281. package/app/components/AwChart.vue +17 -0
  282. package/app/components/workshop/AgentLanesView.vue +2 -2
  283. package/app/components/workshop/ChannelSessionList.vue +3 -3
  284. package/app/components/workshop/CommandPalette.vue +1 -2
  285. package/app/components/workshop/Composer.vue +4 -4
  286. package/app/components/workshop/DaqNodeRow.vue +20 -1
  287. package/app/components/workshop/EventBlock.vue +3 -3
  288. package/app/components/workshop/MentionHoverCard.vue +1 -1
  289. package/app/components/workshop/MultiChannelView.vue +1 -1
  290. package/app/components/workshop/TaskBoardView.vue +5 -5
  291. package/app/components/workshop/TranscriptTimeline.vue +3 -3
  292. package/app/components/workshop/blocks/ClusterRoute.vue +3 -3
  293. package/app/components/workshop/blocks/ClusterStream.vue +1 -1
  294. package/app/components/workshop/blocks/ClusterTool.vue +1 -1
  295. package/app/components/workshop/lanes/LaneBlocks.vue +5 -2
  296. package/app/components/workshop/town/TownView.vue +0 -7
  297. package/app/composables/workshop/useClusteredBlocks.ts +22 -3
  298. package/app/composables/workshop/useEscClose.ts +44 -0
  299. package/app/config/index.ts +2 -1
  300. package/app/layouts/default.vue +25 -8
  301. package/app/pages/aml/index.vue +626 -4
  302. package/app/pages/daq/[id].vue +1 -1
  303. package/app/pages/daq/index.vue +10 -12
  304. package/app/pages/dcw/[id].vue +2 -2
  305. package/app/pages/dcw/index.vue +7 -11
  306. package/app/pages/index.vue +24 -6
  307. package/app/pages/logs/index.vue +2 -6
  308. package/app/pages/plugins/index.vue +1 -1
  309. package/app/pages/settings.vue +2 -2
  310. package/app/pages/town.vue +0 -2
  311. package/app/pages/users.vue +1 -1
  312. package/app/pages/workshop/index.vue +2 -2
  313. package/app/plugins/esc-close.client.ts +31 -0
  314. package/app/stores/workshop/events.ts +186 -36
  315. package/bin/aw.mjs +7 -2
  316. package/cli/aw.mjs +19 -34
  317. package/cli/commands/build.mjs +18 -1
  318. package/cli/commands/config.mjs +2 -0
  319. package/cli/commands/plugin.mjs +45 -18
  320. package/cli/commands/register.mjs +6 -2
  321. package/cli/commands/status.mjs +2 -1
  322. package/cli/commands/update.mjs +1 -1
  323. package/cli/commands/version.mjs +1 -1
  324. package/cli/core/args.mjs +76 -4
  325. package/cli/core/help.mjs +3 -1
  326. package/cli/core/meta.mjs +38 -0
  327. package/cli/core/post-build.mjs +96 -0
  328. package/cli/core/registry.mjs +6 -3
  329. package/config.yml +28 -26
  330. package/docs/aml.md +99 -0
  331. package/docs/cli.en.md +445 -0
  332. package/docs/cli.md +410 -220
  333. package/docs/full-test-plan.md +174 -0
  334. package/docs/multi-harness-architecture.md +248 -0
  335. package/docs/plugins.en.md +534 -0
  336. package/docs/plugins.md +531 -179
  337. package/docs/sdk.en.md +922 -0
  338. package/docs/sdk.md +725 -129
  339. package/i18n/dicts/aml.json +43 -1
  340. package/i18n/locales/en.ts +1928 -1885
  341. package/i18n/locales/zh-CN.ts +1928 -1885
  342. package/nuxt.config.ts +27 -2
  343. package/package.json +164 -153
  344. package/scripts/.mimosa/hook-status/sess_aeaecb58-8833-4b83-b93c-050467d21e03-d944d71bb3.json +14 -0
  345. package/scripts/_audit/aml-layout-diag.mjs +83 -0
  346. package/scripts/_audit/bump-version.mjs +51 -0
  347. package/scripts/_audit/channel-inspect.mjs +49 -0
  348. package/scripts/_audit/cleanup-apply.mjs +89 -0
  349. package/scripts/_audit/cleanup-plan.mjs +82 -0
  350. package/scripts/_audit/contrast-check.mjs +43 -0
  351. package/scripts/_audit/dcw-unrecorded-write.ts +1 -1
  352. package/scripts/_audit/design-shots.mjs +145 -0
  353. package/scripts/_audit/docs-font-probe.mjs +68 -0
  354. package/scripts/_audit/docs-probe.mjs +107 -0
  355. package/scripts/_audit/docs-shots.mjs +171 -0
  356. package/scripts/_audit/docs-v3-verify.mjs +255 -0
  357. package/scripts/_audit/docs-vue-lint.mjs +81 -0
  358. package/scripts/_audit/docs-vue-lint2.mjs +91 -0
  359. package/scripts/_audit/exp-cost-scaling.mjs +4 -1
  360. package/scripts/_audit/exp-envelope-and-png.mjs +2 -1
  361. package/scripts/_audit/exp-sweep-fairness.mjs +4 -2
  362. package/scripts/_audit/fix-settings-count.mjs +57 -0
  363. package/scripts/_audit/glass-verify.mjs +155 -0
  364. package/scripts/_audit/hydration-diff.mjs +104 -0
  365. package/scripts/_audit/hydration-head.mjs +36 -0
  366. package/scripts/_audit/hydration-probe.mjs +59 -0
  367. package/scripts/_audit/lead-matrix-test.mjs +172 -0
  368. package/scripts/_audit/plc-agent-task.mjs +74 -0
  369. package/scripts/_audit/plc-clean-scenario.mjs +434 -0
  370. package/scripts/_audit/plc-clean-shots.mjs +161 -0
  371. package/scripts/_audit/plc-fc10-probe.mjs +30 -0
  372. package/scripts/_audit/probe-binding.mjs +114 -103
  373. package/scripts/_audit/review-fix-verify.mjs +158 -0
  374. package/scripts/_audit/seed-demo.mjs +165 -0
  375. package/scripts/_audit/town-focus-shot.mjs +129 -0
  376. package/scripts/_audit/town-reposition.mjs +85 -0
  377. package/scripts/_audit/ts-resolve-hook.mjs +57 -22
  378. package/scripts/_audit/verify-cleanup.mjs +67 -0
  379. package/scripts/_audit/verify-release-pack.mjs +82 -0
  380. package/scripts/_audit/watchdog-recovery-test.mjs +127 -0
  381. package/scripts/_dbg-audit-all-pages.mjs +43 -43
  382. package/scripts/_dbg-configroot-audit.mjs +84 -84
  383. package/scripts/_dbg-daq-intervals-func.mjs +94 -94
  384. package/scripts/_dbg-daq-rowstyle-verify.mjs +112 -112
  385. package/scripts/_dbg-groups-ui-verify.mjs +122 -122
  386. package/scripts/_dbg-harness-e2e.mjs +92 -92
  387. package/scripts/_dbg-harness-ui-e2e.py +97 -97
  388. package/scripts/_dbg-hitl-timeout-e2e.mjs +93 -93
  389. package/scripts/_dbg-multiharness-live-e2e.mjs +254 -254
  390. package/scripts/_dbg-opslog-agent-e2e.mjs +194 -194
  391. package/scripts/_dbg-opt-team-e2e.mjs +133 -133
  392. package/scripts/_dbg-recipe-e2e.mjs +176 -176
  393. package/scripts/_dbg-recipe-stale-e2e.mjs +135 -135
  394. package/scripts/_dbg-render-perf.mjs +142 -142
  395. package/scripts/_dbg-render-regression.mjs +130 -130
  396. package/scripts/_dbg-town-smoke.mjs +54 -54
  397. package/scripts/aw-start-smoke.mjs +27 -8
  398. package/scripts/check-docs-sync.mjs +367 -0
  399. package/scripts/e2e-full-closedloop.mjs +36 -18
  400. package/scripts/production-closed-loop-e2e.mjs +300 -303
  401. package/scripts/test-cli-exit.mjs +129 -21
  402. package/scripts/test-daq-frame-race.mjs +144 -96
  403. package/scripts/test-events-index.mjs +176 -0
  404. package/scripts/test-lru.mjs +34 -11
  405. package/scripts/test-memory-month-query.mjs +11 -3
  406. package/scripts/test-plugin-hardening.mjs +7 -2
  407. package/scripts/test-plugin-lifecycle.mjs +173 -0
  408. package/scripts/test-rollback-index.mjs +76 -18
  409. package/scripts/test-sdk-surface.mjs +6 -3
  410. package/sdk/client.mjs +16 -7
  411. package/sdk/context.mjs +21 -9
  412. package/sdk/examples/line-sentinel/client.mjs +13 -6
  413. package/sdk/examples/line-sentinel/index.mjs +5 -2
  414. package/sdk/examples/ops-notifier/client.mjs +3 -1
  415. package/sdk/examples/sample-insight/client.mjs +4 -2
  416. package/sdk/index.d.mts +133 -16
  417. package/sdk/index.mjs +3 -2
  418. package/sdk/lifecycle.mjs +8 -3
  419. package/server/api/workshop/agent-tools/bindings/index.post.ts +22 -7
  420. package/server/api/workshop/aml/datasets/[id].delete.ts +39 -0
  421. package/server/api/workshop/aml/datasets/[id].get.ts +31 -9
  422. package/server/api/workshop/aml/datasets/[id].patch.ts +30 -0
  423. package/server/api/workshop/aml/entities/index.get.ts +13 -0
  424. package/server/api/workshop/aml/entities/prune.post.ts +28 -0
  425. package/server/api/workshop/aml/env/index.get.ts +13 -0
  426. package/server/api/workshop/aml/env/recheck.post.ts +14 -0
  427. package/server/api/workshop/aml/env/uv.post.ts +21 -0
  428. package/server/api/workshop/aml/env/venv.post.ts +24 -0
  429. package/server/api/workshop/aml/index.get.ts +14 -1
  430. package/server/api/workshop/aml/jobs/[id].delete.ts +44 -0
  431. package/server/api/workshop/aml/models/[id].delete.ts +35 -0
  432. package/server/api/workshop/aml/models/[id].patch.ts +30 -0
  433. package/server/services/workshop/agents/agent-interface.ts +3 -0
  434. package/server/services/workshop/agents/codex-agent.ts +4 -7
  435. package/server/services/workshop/agents/dsh-agent.ts +4 -7
  436. package/server/services/workshop/agents/opencode-agent.ts +5 -7
  437. package/server/services/workshop/aml/aml.repo.ts +18 -0
  438. package/server/services/workshop/aml/dataset-builder.ts +4 -0
  439. package/server/services/workshop/aml/entity.ts +365 -0
  440. package/server/services/workshop/aml/env-manager.ts +242 -0
  441. package/server/services/workshop/aml/job-orchestrator.ts +4 -15
  442. package/server/services/workshop/aml/model-registry.ts +6 -0
  443. package/server/services/workshop/aml/python-runtime.ts +396 -62
  444. package/server/services/workshop/aml/runtime.ts +95 -4
  445. package/server/services/workshop/daq/bus/mqtt.adapter.ts +3 -1
  446. package/server/services/workshop/daq/daq-controller.ts +95 -47
  447. package/server/services/workshop/daq/daq-node.repo.ts +0 -10
  448. package/server/services/workshop/daq/daq-runtime.ts +0 -5
  449. package/server/services/workshop/json-store.mjs +35 -2
  450. package/server/services/workshop/plugins/host.mjs +14 -5
  451. package/server/services/workshop/runtime/manager.ts +28 -1
  452. package/server/services/workshop/runtime/scheduler-loop.ts +10 -1
  453. package/server/services/workshop/settings.ts +2 -0
  454. package/shared/config/home.mjs +58 -0
  455. package/shared/config/schema.json +2 -1
  456. package/shared/lru.mjs +4 -1
  457. package/.output/public/_nuxt/-6OnbLFb.js +0 -1
  458. package/.output/public/_nuxt/-nb2uqVg.js +0 -1
  459. package/.output/public/_nuxt/4bHdIqEg.js +0 -18
  460. package/.output/public/_nuxt/6PZPfFcO.js +0 -17
  461. package/.output/public/_nuxt/BBBtwOpo.js +0 -9
  462. package/.output/public/_nuxt/BBwMH_hG.js +0 -7
  463. package/.output/public/_nuxt/BDUjyaF4.js +0 -42
  464. package/.output/public/_nuxt/BNXfwXpE.js +0 -1
  465. package/.output/public/_nuxt/BN_PdN3J.js +0 -24
  466. package/.output/public/_nuxt/BSSUlJnx2.js +0 -1
  467. package/.output/public/_nuxt/BWSE6hR6.js +0 -1
  468. package/.output/public/_nuxt/BZGNTgTQ2.js +0 -1
  469. package/.output/public/_nuxt/BZv4RFYN.js +0 -1
  470. package/.output/public/_nuxt/BcmbLh2z2.js +0 -1
  471. package/.output/public/_nuxt/BfGc7TJp.js +0 -1
  472. package/.output/public/_nuxt/BgTB6h_q.js +0 -2
  473. package/.output/public/_nuxt/BkLJA9J5.js +0 -1
  474. package/.output/public/_nuxt/Bp5luxkg2.js +0 -1
  475. package/.output/public/_nuxt/BuCHayqN.js +0 -1
  476. package/.output/public/_nuxt/BuvcLKh1.js +0 -19
  477. package/.output/public/_nuxt/C3tCneTM.js +0 -1
  478. package/.output/public/_nuxt/C77oC8yC2.js +0 -7
  479. package/.output/public/_nuxt/C9f8QMp12.js +0 -1
  480. package/.output/public/_nuxt/CKfhtOt7.js +0 -13
  481. package/.output/public/_nuxt/CQvmN-Mi.js +0 -1
  482. package/.output/public/_nuxt/CUDrOuW7.js +0 -1
  483. package/.output/public/_nuxt/CZcC-gpk.js +0 -1
  484. package/.output/public/_nuxt/CbzsPO5H.js +0 -1
  485. package/.output/public/_nuxt/CdSOrh2c.js +0 -1
  486. package/.output/public/_nuxt/Cgx818r-.js +0 -1
  487. package/.output/public/_nuxt/Cjm7VogC.js +0 -1
  488. package/.output/public/_nuxt/Cm5mDxzH.js +0 -1
  489. package/.output/public/_nuxt/CmHzfVc5.js +0 -3
  490. package/.output/public/_nuxt/Cn3J3NXR.js +0 -23
  491. package/.output/public/_nuxt/Cno6kYiO2.js +0 -1
  492. package/.output/public/_nuxt/Cp6z0RN7.js +0 -1
  493. package/.output/public/_nuxt/CwqIxJGj.js +0 -2
  494. package/.output/public/_nuxt/D-Ca4BGY.js +0 -70
  495. package/.output/public/_nuxt/D0fhp-Ga.js +0 -75
  496. package/.output/public/_nuxt/D1z7i2UP.js +0 -31
  497. package/.output/public/_nuxt/DIaTPH1M.js +0 -1
  498. package/.output/public/_nuxt/DTYBfjRY.js +0 -1
  499. package/.output/public/_nuxt/DXRZPxGs.js +0 -1
  500. package/.output/public/_nuxt/DZzGarBE2.js +0 -13
  501. package/.output/public/_nuxt/DaMCzQhv.js +0 -1
  502. package/.output/public/_nuxt/DoLasgPj2.js +0 -1
  503. package/.output/public/_nuxt/DpojD719.js +0 -1
  504. package/.output/public/_nuxt/DsVcWfyR.js +0 -1
  505. package/.output/public/_nuxt/DtBu71ev.js +0 -32
  506. package/.output/public/_nuxt/Dy-mxvXY2.js +0 -1
  507. package/.output/public/_nuxt/DzuC31-i.js +0 -2
  508. package/.output/public/_nuxt/FQri3dV3.js +0 -1
  509. package/.output/public/_nuxt/ORt9oDIy2.js +0 -1
  510. package/.output/public/_nuxt/TownView.CtskuMXS.css +0 -1
  511. package/.output/public/_nuxt/VLI2Zy4t.js +0 -5
  512. package/.output/public/_nuxt/_id_.MbzdFygI.css +0 -1
  513. package/.output/public/_nuxt/_id_.hRYo-EAB.css +0 -1
  514. package/.output/public/_nuxt/_wsId_.gXMEOYgX.css +0 -1
  515. package/.output/public/_nuxt/aml.WU_bh87J.css +0 -1
  516. package/.output/public/_nuxt/arUY5dyq2.js +0 -4
  517. package/.output/public/_nuxt/builds/meta/adc365b6-f636-4a2b-9527-79819c1e874b.json +0 -1
  518. package/.output/public/_nuxt/daq.Bb6l44-O.css +0 -1
  519. package/.output/public/_nuxt/dcw.rXH2fc2Z.css +0 -1
  520. package/.output/public/_nuxt/default.jNT73_hq.css +0 -1
  521. package/.output/public/_nuxt/ekuGmQ7R.js +0 -1
  522. package/.output/public/_nuxt/entry.jFrFAWuA.css +0 -1
  523. package/.output/public/_nuxt/logs.DMOM-iHe.css +0 -1
  524. package/.output/public/_nuxt/niDwBOZW.js +0 -3
  525. package/.output/public/_nuxt/pMoIO6rr.js +0 -14
  526. package/.output/public/_nuxt/pages.Cc8GX9T1.css +0 -1
  527. package/.output/public/_nuxt/plugins.wIPyfPn-.css +0 -1
  528. package/.output/public/_nuxt/rqZ-1SoP.js +0 -2
  529. package/.output/public/_nuxt/settings.BCm4NZIc.css +0 -1
  530. package/.output/public/_nuxt/town.C_DsNW0J.css +0 -1
  531. package/.output/public/_nuxt/users.DuAt_Zwf.css +0 -1
  532. package/.output/public/_nuxt/vJ4FPb-_.js +0 -1
  533. package/.output/public/_nuxt/workshop.BJg84pOK.css +0 -1
  534. package/.output/server/chunks/build/aml-uBNIppIf.mjs +0 -508
  535. package/.output/server/chunks/build/aml-uBNIppIf.mjs.map +0 -1
  536. package/.output/server/chunks/build/daq-BvihjQyW.mjs.map +0 -1
  537. package/.output/server/chunks/build/pages-C-6BRtv8.mjs.map +0 -1
  538. package/scripts/_audit/.tmp/audit-data/dcws.json +0 -28
  539. package/scripts/_audit/.tmp/dcw-writes.json +0 -15650
  540. package/scripts/_audit/.tmp/dcws.json +0 -9033
  541. package/scripts/_audit/.tmp/pollution-backup/dcw-rollback.polluted.json +0 -470006
  542. package/scripts/_audit/.tmp/pollution-backup/dcws.polluted.json +0 -9085
  543. package/scripts/_audit/.tmp/probe-cwd.txt +0 -1
  544. package/scripts/_audit/awhome/commands/README.md +0 -3
  545. package/scripts/_audit/awhome/commands/hello.mjs +0 -12
  546. package/scripts/_audit/diag-cwd.ts +0 -20
  547. package/scripts/_audit/diag-cwd2.ts +0 -19
  548. package/scripts/_audit/hello.mjs +0 -12
  549. package/scripts/_audit/ndjson-partial-line-repro.mjs +0 -77
  550. package/scripts/_audit/opencode-await-ternary-repro.mjs +0 -20
  551. package/scripts/_audit/part-frag.txt +0 -84
  552. package/scripts/_audit/part-head.txt +0 -45
  553. package/scripts/_audit/probe-child.mjs +0 -17
  554. package/scripts/_audit/probe-envelope.mjs +0 -49
  555. package/scripts/_audit/probe-packlist.mjs +0 -67
  556. package/scripts/_audit/probe-routes.mjs +0 -47
  557. package/scripts/_audit/probe-routes2.mjs +0 -38
  558. package/scripts/_audit/probe.ts +0 -9
  559. package/scripts/_audit/probe2.ts +0 -6
  560. package/scripts/_audit/probe3.ts +0 -3
  561. package/scripts/_audit/probe4.ts +0 -3
  562. package/scripts/_audit/proj/.AgentWorkShop/commands/echoargs.mjs +0 -13
  563. package/scripts/_audit/proj/config.yml +0 -1
  564. package/scripts/_audit/run.mjs +0 -30
  565. package/scripts/_audit/tsconfig.probe.json +0 -24
  566. package/scripts/_audit/typecheck-out.txt +0 -466
  567. package/scripts/_daq-realtime-probe.mjs +0 -68
  568. package/scripts/_daq-warn-probe.mjs +0 -50
  569. package/scripts/_dbg-acc-1-setup.mjs +0 -57
  570. package/scripts/_dbg-acc-2-diag.mjs +0 -14
  571. package/scripts/_dbg-acc-2-intervals.mjs +0 -81
  572. package/scripts/_dbg-acc-3-daq.mjs +0 -48
  573. package/scripts/_dbg-acc-4-team.mjs +0 -92
  574. package/scripts/_dbg-acc-5-visual.mjs +0 -63
  575. package/scripts/_dbg-acc-5b-ws-town.mjs +0 -18
  576. package/scripts/_dbg-acc-5c-town.mjs +0 -12
  577. package/scripts/_dbg-acc-6-i18n.mjs +0 -19
  578. package/scripts/_dbg-agent-tools-audit.mjs +0 -154
  579. package/scripts/_dbg-agent-workflow-audit.mjs +0 -177
  580. package/scripts/_dbg-agents-dropdown-shot.py +0 -33
  581. package/scripts/_dbg-anim-verify.mjs +0 -81
  582. package/scripts/_dbg-app-shot.mjs +0 -48
  583. package/scripts/_dbg-autoframe.mjs +0 -103
  584. package/scripts/_dbg-availability-probe.ts +0 -11
  585. package/scripts/_dbg-beacon-final.mjs +0 -181
  586. package/scripts/_dbg-bind-bidi-e2e.mjs +0 -239
  587. package/scripts/_dbg-callout-near.mjs +0 -108
  588. package/scripts/_dbg-catalog-smoke.ts +0 -20
  589. package/scripts/_dbg-cf-line-shot.mjs +0 -18
  590. package/scripts/_dbg-chan-focus.mjs +0 -49
  591. package/scripts/_dbg-channel-plugin-ui.mjs +0 -94
  592. package/scripts/_dbg-cleanup.mjs +0 -31
  593. package/scripts/_dbg-closedloop-ui-shot.mjs +0 -61
  594. package/scripts/_dbg-codex-handshake.ts +0 -30
  595. package/scripts/_dbg-codex-probe.mjs +0 -58
  596. package/scripts/_dbg-codex-sandbox.ts +0 -58
  597. package/scripts/_dbg-codex-turn.ts +0 -65
  598. package/scripts/_dbg-collab-scenario-e2e.mjs +0 -185
  599. package/scripts/_dbg-config-smoke.ts +0 -28
  600. package/scripts/_dbg-console-audit.mjs +0 -61
  601. package/scripts/_dbg-console-probe.mjs +0 -23
  602. package/scripts/_dbg-context-inject-audit.mjs +0 -231
  603. package/scripts/_dbg-cpu-profile.mjs +0 -53
  604. package/scripts/_dbg-crash-recovery.mjs +0 -143
  605. package/scripts/_dbg-crop-shot.mjs +0 -16
  606. package/scripts/_dbg-cross-channel-e2e.mjs +0 -157
  607. package/scripts/_dbg-cross-team-visibility-e2e.mjs +0 -129
  608. package/scripts/_dbg-crush-probe.sh +0 -21
  609. package/scripts/_dbg-crush-spawn-probe.ts +0 -22
  610. package/scripts/_dbg-daq-acc-probe.mjs +0 -24
  611. package/scripts/_dbg-daq-attrib.mjs +0 -34
  612. package/scripts/_dbg-daq-bind-audit.mjs +0 -119
  613. package/scripts/_dbg-daq-cadence.mjs +0 -104
  614. package/scripts/_dbg-daq-debug.mjs +0 -22
  615. package/scripts/_dbg-daq-diag.mjs +0 -33
  616. package/scripts/_dbg-daq-e2e.mjs +0 -171
  617. package/scripts/_dbg-daq-film.mjs +0 -136
  618. package/scripts/_dbg-daq-filter-e2e.mjs +0 -109
  619. package/scripts/_dbg-daq-filter-e2e2.mjs +0 -62
  620. package/scripts/_dbg-daq-final-regression.mjs +0 -78
  621. package/scripts/_dbg-daq-frame-alarm.mjs +0 -49
  622. package/scripts/_dbg-daq-frame-ui.mjs +0 -62
  623. package/scripts/_dbg-daq-frame-ws.mjs +0 -72
  624. package/scripts/_dbg-daq-full-check.mjs +0 -179
  625. package/scripts/_dbg-daq-line-note-verify.mjs +0 -61
  626. package/scripts/_dbg-daq-linebanner-audit.mjs +0 -107
  627. package/scripts/_dbg-daq-pages-shot.mjs +0 -37
  628. package/scripts/_dbg-daq-perf.mjs +0 -61
  629. package/scripts/_dbg-daq-probe.mjs +0 -27
  630. package/scripts/_dbg-daq-recipe-e2e.mjs +0 -30
  631. package/scripts/_dbg-daq-redesign-shot.mjs +0 -88
  632. package/scripts/_dbg-daq-rows-probe.mjs +0 -26
  633. package/scripts/_dbg-daq-rowstate-e2e.mjs +0 -152
  634. package/scripts/_dbg-daq-rowstate-shot.mjs +0 -45
  635. package/scripts/_dbg-daq-rowstate-shot2.mjs +0 -38
  636. package/scripts/_dbg-daq-tpl.mjs +0 -144
  637. package/scripts/_dbg-dash-console-check.mjs +0 -49
  638. package/scripts/_dbg-dash-deep-probe.mjs +0 -61
  639. package/scripts/_dbg-dash-hitpoint.mjs +0 -44
  640. package/scripts/_dbg-dash-live-shot.mjs +0 -36
  641. package/scripts/_dbg-dash-shot.mjs +0 -21
  642. package/scripts/_dbg-dashboard-shot.mjs +0 -35
  643. package/scripts/_dbg-dcw-audit.mjs +0 -126
  644. package/scripts/_dbg-dcw-card-e2e.mjs +0 -108
  645. package/scripts/_dbg-dcw-channel-ui.mjs +0 -144
  646. package/scripts/_dbg-dcw-examples.mjs +0 -81
  647. package/scripts/_dbg-dcw-light-shot.mjs +0 -19
  648. package/scripts/_dbg-dcw-line-audit.mjs +0 -107
  649. package/scripts/_dbg-dcw-pause-tpl-audit.mjs +0 -161
  650. package/scripts/_dbg-dcw-pause-ui.mjs +0 -175
  651. package/scripts/_dbg-dcw-read-toolface.ts +0 -13
  652. package/scripts/_dbg-dcw-read-ui.mjs +0 -74
  653. package/scripts/_dbg-dcw-scene.mjs +0 -72
  654. package/scripts/_dbg-dcw-shot2.mjs +0 -14
  655. package/scripts/_dbg-dcw-twin-e2e.mjs +0 -192
  656. package/scripts/_dbg-diag-mock-loop.mjs +0 -89
  657. package/scripts/_dbg-diag-watch.mjs +0 -95
  658. package/scripts/_dbg-docs-site-shot.mjs +0 -32
  659. package/scripts/_dbg-dsh-probe.mjs +0 -31
  660. package/scripts/_dbg-dt-interact.mjs +0 -193
  661. package/scripts/_dbg-error-probe.mjs +0 -54
  662. package/scripts/_dbg-filter-light-verify.mjs +0 -54
  663. package/scripts/_dbg-final-acceptance-2.mjs +0 -72
  664. package/scripts/_dbg-final-acceptance.mjs +0 -192
  665. package/scripts/_dbg-final-agent-e2e.mjs +0 -151
  666. package/scripts/_dbg-final-features.mjs +0 -155
  667. package/scripts/_dbg-final-fixups.mjs +0 -62
  668. package/scripts/_dbg-final-full-e2e.mjs +0 -218
  669. package/scripts/_dbg-final-line-e2e.mjs +0 -173
  670. package/scripts/_dbg-final-shots.mjs +0 -32
  671. package/scripts/_dbg-final-t6-hitl.mjs +0 -38
  672. package/scripts/_dbg-final-visual.mjs +0 -29
  673. package/scripts/_dbg-fix-unused-imports.py +0 -41
  674. package/scripts/_dbg-focus-range.mjs +0 -115
  675. package/scripts/_dbg-fresh-scene-e2e.mjs +0 -125
  676. package/scripts/_dbg-fullchain-e2e.mjs +0 -178
  677. package/scripts/_dbg-gate-debug.mjs +0 -37
  678. package/scripts/_dbg-gif-encode.mjs +0 -111
  679. package/scripts/_dbg-gizmo.mjs +0 -95
  680. package/scripts/_dbg-glass-probe.mjs +0 -57
  681. package/scripts/_dbg-glass-shot.mjs +0 -50
  682. package/scripts/_dbg-glass-sweep.mjs +0 -25
  683. package/scripts/_dbg-glb-probe.mjs +0 -43
  684. package/scripts/_dbg-goose-probe.mjs +0 -33
  685. package/scripts/_dbg-goose-probe.sh +0 -10
  686. package/scripts/_dbg-hardening-probe.mjs +0 -90
  687. package/scripts/_dbg-harness-cancel-repro.mjs +0 -81
  688. package/scripts/_dbg-harness-ui-dbg.py +0 -49
  689. package/scripts/_dbg-harness-ui-shot.py +0 -109
  690. package/scripts/_dbg-hero-btn-probe.mjs +0 -21
  691. package/scripts/_dbg-hidden-check.mjs +0 -21
  692. package/scripts/_dbg-hmi-audit.mjs +0 -164
  693. package/scripts/_dbg-home-repro.mjs +0 -24
  694. package/scripts/_dbg-home-stack.mjs +0 -13
  695. package/scripts/_dbg-host.mjs +0 -16
  696. package/scripts/_dbg-huashu-survey.mjs +0 -31
  697. package/scripts/_dbg-huashu-survey2.mjs +0 -35
  698. package/scripts/_dbg-huashu-verify.mjs +0 -25
  699. package/scripts/_dbg-huashu-verify2.mjs +0 -26
  700. package/scripts/_dbg-hydration-detail.mjs +0 -18
  701. package/scripts/_dbg-i18n-debug.mjs +0 -27
  702. package/scripts/_dbg-i18n-debug2.mjs +0 -26
  703. package/scripts/_dbg-i18n-final.mjs +0 -42
  704. package/scripts/_dbg-i18n-scan.mjs +0 -38
  705. package/scripts/_dbg-infra-lifecycle.mjs +0 -44
  706. package/scripts/_dbg-interval-config.mjs +0 -156
  707. package/scripts/_dbg-interval-scenario.mjs +0 -126
  708. package/scripts/_dbg-kicker-check.mjs +0 -11
  709. package/scripts/_dbg-line-aura-shots.mjs +0 -54
  710. package/scripts/_dbg-line-control-e2e.mjs +0 -120
  711. package/scripts/_dbg-line-gate-audit.mjs +0 -108
  712. package/scripts/_dbg-line-live-e2e.mjs +0 -144
  713. package/scripts/_dbg-line-repo-test.ts +0 -10
  714. package/scripts/_dbg-line-scenario-e2e.mjs +0 -256
  715. package/scripts/_dbg-line-spawn.ts +0 -31
  716. package/scripts/_dbg-live-engine-probe.mjs +0 -80
  717. package/scripts/_dbg-login-debug.py +0 -23
  718. package/scripts/_dbg-login-e2e.mjs +0 -26
  719. package/scripts/_dbg-logs-ui-e2e.py +0 -126
  720. package/scripts/_dbg-mcp-bridge-probe.mjs +0 -147
  721. package/scripts/_dbg-modbus-latency.mjs +0 -22
  722. package/scripts/_dbg-mqtt-chain-e2e.mjs +0 -90
  723. package/scripts/_dbg-mqtt-publisher.mjs +0 -17
  724. package/scripts/_dbg-nav-rpg.mjs +0 -84
  725. package/scripts/_dbg-nav-shot.mjs +0 -28
  726. package/scripts/_dbg-nav.mjs +0 -27
  727. package/scripts/_dbg-oneshot-impl-probe.ts +0 -67
  728. package/scripts/_dbg-opencode-sse.mjs +0 -101
  729. package/scripts/_dbg-opencode-start.ts +0 -57
  730. package/scripts/_dbg-opslog-e2e.mjs +0 -121
  731. package/scripts/_dbg-opslog-shots.mjs +0 -62
  732. package/scripts/_dbg-optimization-e2e.mjs +0 -94
  733. package/scripts/_dbg-orbit.mjs +0 -58
  734. package/scripts/_dbg-overview-probe.sh +0 -31
  735. package/scripts/_dbg-panesplitter-fix-check.mjs +0 -62
  736. package/scripts/_dbg-perms-visual.mjs +0 -36
  737. package/scripts/_dbg-pg-tcp-probe.cjs +0 -27
  738. package/scripts/_dbg-phase-e3-monitor.mjs +0 -25
  739. package/scripts/_dbg-pi-spawn-probe.ts +0 -33
  740. package/scripts/_dbg-plc-agent-loop.ts +0 -102
  741. package/scripts/_dbg-plc-e2e.mjs +0 -171
  742. package/scripts/_dbg-plugin-agent-read.ts +0 -56
  743. package/scripts/_dbg-plugin-config-ui.mjs +0 -111
  744. package/scripts/_dbg-plugin-matrix.mjs +0 -212
  745. package/scripts/_dbg-plugin-panels-ui.mjs +0 -54
  746. package/scripts/_dbg-plugin-sink-rest.mjs +0 -70
  747. package/scripts/_dbg-plugin-sink-ui.mjs +0 -81
  748. package/scripts/_dbg-plugin-tools-inject.ts +0 -80
  749. package/scripts/_dbg-plugin-ui-wizard.mjs +0 -125
  750. package/scripts/_dbg-plugin-verify-e2e.mjs +0 -123
  751. package/scripts/_dbg-plugins-e2e.mjs +0 -101
  752. package/scripts/_dbg-pop-clamp-verify.mjs +0 -77
  753. package/scripts/_dbg-preset-e2e.mjs +0 -116
  754. package/scripts/_dbg-preview-console.mjs +0 -28
  755. package/scripts/_dbg-preview-minrepro.mjs +0 -156
  756. package/scripts/_dbg-preview-pixels.mjs +0 -93
  757. package/scripts/_dbg-prompts-hotreload-test.ts +0 -76
  758. package/scripts/_dbg-prompts-resolve-test.ts +0 -39
  759. package/scripts/_dbg-quality-pages-e2e.mjs +0 -84
  760. package/scripts/_dbg-query-cancel.ts +0 -12
  761. package/scripts/_dbg-qwen-acp-probe.mjs +0 -30
  762. package/scripts/_dbg-qwen-capture.mjs +0 -21
  763. package/scripts/_dbg-rail-tree-e2e.mjs +0 -183
  764. package/scripts/_dbg-real-driver-e2e.mjs +0 -55
  765. package/scripts/_dbg-redesign-shots.mjs +0 -34
  766. package/scripts/_dbg-registry-smoke.ts +0 -14
  767. package/scripts/_dbg-release-smoke.mjs +0 -104
  768. package/scripts/_dbg-repo-setup-verify.mjs +0 -31
  769. package/scripts/_dbg-resolve-probe.ts +0 -6
  770. package/scripts/_dbg-restart-persist.mjs +0 -41
  771. package/scripts/_dbg-retention-test.ts +0 -25
  772. package/scripts/_dbg-rollback-mgr-audit.mjs +0 -169
  773. package/scripts/_dbg-rpg.mjs +0 -71
  774. package/scripts/_dbg-sc001-dispatch.mjs +0 -63
  775. package/scripts/_dbg-scenario-final-shot.mjs +0 -24
  776. package/scripts/_dbg-scenario-phase-e2.mjs +0 -75
  777. package/scripts/_dbg-scenario-phase-e3.mjs +0 -96
  778. package/scripts/_dbg-scenario-phase1.mjs +0 -90
  779. package/scripts/_dbg-scenario-phase2.mjs +0 -105
  780. package/scripts/_dbg-scenario-phase3-monitor.mjs +0 -48
  781. package/scripts/_dbg-scenario-phase3.mjs +0 -111
  782. package/scripts/_dbg-scene-polish-shot.mjs +0 -118
  783. package/scripts/_dbg-selring-probe.mjs +0 -47
  784. package/scripts/_dbg-settings-draft-probe.mjs +0 -39
  785. package/scripts/_dbg-settings-probe.mjs +0 -33
  786. package/scripts/_dbg-setup-e2e.mjs +0 -88
  787. package/scripts/_dbg-sideinfo.mjs +0 -101
  788. package/scripts/_dbg-sim-keeper.mjs +0 -100
  789. package/scripts/_dbg-splitter.mjs +0 -88
  790. package/scripts/_dbg-swatch-check.mjs +0 -10
  791. package/scripts/_dbg-task-cancel-probe.mjs +0 -66
  792. package/scripts/_dbg-team-drill.mjs +0 -173
  793. package/scripts/_dbg-town-alarm-e2e.mjs +0 -40
  794. package/scripts/_dbg-town-beauty-shots.mjs +0 -54
  795. package/scripts/_dbg-town-daq-shot.mjs +0 -26
  796. package/scripts/_dbg-town-full-e2e.mjs +0 -104
  797. package/scripts/_dbg-town-gate.mjs +0 -44
  798. package/scripts/_dbg-town-ins-probe.mjs +0 -37
  799. package/scripts/_dbg-town-perf.mjs +0 -50
  800. package/scripts/_dbg-town-polish-shots.mjs +0 -82
  801. package/scripts/_dbg-town-realtime.mjs +0 -42
  802. package/scripts/_dbg-town-shot.py +0 -25
  803. package/scripts/_dbg-town-shot3.mjs +0 -17
  804. package/scripts/_dbg-town-truth.mjs +0 -37
  805. package/scripts/_dbg-town-truth2.mjs +0 -27
  806. package/scripts/_dbg-transform-audit.mjs +0 -98
  807. package/scripts/_dbg-trend-expand-test.mjs +0 -38
  808. package/scripts/_dbg-twindaq-focus.mjs +0 -81
  809. package/scripts/_dbg-ui-polish-shot.mjs +0 -43
  810. package/scripts/_dbg-ui-polish-verify1.mjs +0 -92
  811. package/scripts/_dbg-ui-polish-verify2.mjs +0 -50
  812. package/scripts/_dbg-ui-polish-verify3.mjs +0 -51
  813. package/scripts/_dbg-ui-polish-verify4.mjs +0 -50
  814. package/scripts/_dbg-ui-shot.mjs +0 -26
  815. package/scripts/_dbg-ui-shots.mjs +0 -28
  816. package/scripts/_dbg-ui-survey.py +0 -52
  817. package/scripts/_dbg-unify-shot.mjs +0 -43
  818. package/scripts/_dbg-uplink-probe.mjs +0 -36
  819. package/scripts/_dbg-wizard-preview-shot.mjs +0 -58
  820. package/scripts/_dbg-wizard-ui-e2e.mjs +0 -93
  821. package/scripts/_dbg-ws-probe.mjs +0 -86
  822. package/scripts/_dbg-ws-shot2.mjs +0 -23
  823. package/scripts/_dbg-wsdot-sanity.mjs +0 -25
  824. package/scripts/_dev-stack.mjs +0 -46
  825. package/scripts/_http-driver-probe.mjs +0 -30
  826. package/scripts/_mqtt-driver-probe.mjs +0 -30
  827. package/scripts/_newdriver-rest-probe.mjs +0 -100
  828. package/scripts/_node-state-probe.mjs +0 -5
  829. package/scripts/_opcua-driver-probe.mjs +0 -31
  830. package/scripts/_rtu-debug.mjs +0 -41
  831. package/scripts/_rtu-direct.mjs +0 -6
  832. package/scripts/_rtu-driver-probe.mjs +0 -53
  833. package/scripts/_spike-pitui.mjs +0 -116
  834. package/scripts/_tmp-args-probe.mjs +0 -20
  835. package/scripts/_tmp-cyc-entry.mjs +0 -8
  836. package/scripts/_tmp-cyc-main.mjs +0 -5
  837. package/scripts/_tmp-cyc-mod.mjs +0 -2
  838. package/scripts/_tmp-cycle-a.mjs +0 -6
  839. package/scripts/_tmp-cycle-b.mjs +0 -2
  840. package/scripts/_tmp-cycle-probe.mjs +0 -4
  841. package/scripts/_tmp-entry-variant.mjs +0 -2
  842. package/scripts/_tmp-help-probe.mjs +0 -19
  843. package/scripts/_tmp-help-probe2.mjs +0 -2
  844. package/scripts/_tmp-trace-preload.mjs +0 -1
  845. package/scripts/_wizard-shots.mjs +0 -90
  846. package/scripts/acceptance-suite.py +0 -207
  847. package/scripts/aml-agent-bridge.ts +0 -230
  848. package/scripts/aml-industrial-loop.ts +0 -232
  849. package/scripts/build-film-devices.mjs +0 -227
  850. package/scripts/collab-live-test.py +0 -177
  851. package/scripts/debug-mcp-http.ts +0 -64
  852. package/scripts/demo-lead-worker.ts +0 -256
  853. package/scripts/demo-modes.ts +0 -415
  854. package/scripts/demo-omp-channel.ts +0 -135
  855. package/scripts/design-preflight.mjs +0 -223
  856. package/scripts/design-verify-templates.mjs +0 -110
  857. package/scripts/design-verify.mjs +0 -170
  858. package/scripts/dev-window.cmd +0 -6
  859. package/scripts/device-line-restore.mjs +0 -34
  860. package/scripts/diag-lead-status.ts +0 -101
  861. package/scripts/e2e-a2a-steer-live.mjs +0 -193
  862. package/scripts/e2e-dual-drive-comm.ts +0 -259
  863. package/scripts/e2e-full-scenario.ts +0 -321
  864. package/scripts/e2e-harness-consistency.ts +0 -204
  865. package/scripts/e2e-harness-provider-task.mjs +0 -126
  866. package/scripts/e2e-line-live.mjs +0 -144
  867. package/scripts/e2e-memory-persistence.ts +0 -320
  868. package/scripts/e2e-omp-modes.ts +0 -274
  869. package/scripts/e2e-omp-realtime.ts +0 -258
  870. package/scripts/e2e-plc-scenario.mjs +0 -292
  871. package/scripts/e2e-real-scenario.mjs +0 -466
  872. package/scripts/e2e-tab-close.mjs +0 -136
  873. package/scripts/e2e-token-ui.mjs +0 -149
  874. package/scripts/final-soup-run.py +0 -192
  875. package/scripts/final-soup-watch.py +0 -83
  876. package/scripts/i18n-codemod.mjs +0 -173
  877. package/scripts/i18n-fix-en.py +0 -28
  878. package/scripts/i18n-fix-en2.py +0 -31
  879. package/scripts/i18n-merge.mjs +0 -191
  880. package/scripts/migrate-local-time.mjs +0 -123
  881. package/scripts/omp-real-test.py +0 -328
  882. package/scripts/team-plugins-api-smoke.mjs +0 -149
  883. package/scripts/test-a2a-relay.mjs +0 -222
  884. package/scripts/test-aml-integration.ts +0 -159
  885. package/scripts/test-aml-job.ts +0 -174
  886. package/scripts/test-aml-unit.ts +0 -184
  887. package/scripts/test-api-client.ts +0 -108
  888. package/scripts/test-api-suite.mjs +0 -271
  889. package/scripts/test-block-consumption.mjs +0 -194
  890. package/scripts/test-cmd-render.mjs +0 -218
  891. package/scripts/test-collab-omp.mjs +0 -192
  892. package/scripts/test-config-precedence.ts +0 -124
  893. package/scripts/test-context-governor.ts +0 -176
  894. package/scripts/test-daq-frames.ts +0 -180
  895. package/scripts/test-daq-minio.ts +0 -77
  896. package/scripts/test-dedup-logic.ts +0 -132
  897. package/scripts/test-e2e-collaboration.ts +0 -262
  898. package/scripts/test-e2e-monitor.ts +0 -192
  899. package/scripts/test-event-history.ts +0 -112
  900. package/scripts/test-exec-modes.ts +0 -316
  901. package/scripts/test-fifo-realtime.mjs +0 -193
  902. package/scripts/test-final-e2e.mjs +0 -290
  903. package/scripts/test-goal-summary.ts +0 -202
  904. package/scripts/test-harness-liveness.ts +0 -109
  905. package/scripts/test-harness-terminal.ts +0 -164
  906. package/scripts/test-header-trail.mjs +0 -95
  907. package/scripts/test-hitl.ts +0 -360
  908. package/scripts/test-koda-restyle.mjs +0 -105
  909. package/scripts/test-lane-raw.ts +0 -67
  910. package/scripts/test-lanes-history-render.mjs +0 -138
  911. package/scripts/test-loop-omp.mjs +0 -154
  912. package/scripts/test-mdlite.ts +0 -53
  913. package/scripts/test-memory-brief-chronicle.ts +0 -180
  914. package/scripts/test-memory-rrf-mmr.ts +0 -114
  915. package/scripts/test-mock-collab.mjs +0 -226
  916. package/scripts/test-modern-render.mjs +0 -174
  917. package/scripts/test-omp-terminal.mjs +0 -187
  918. package/scripts/test-plugin-ext.ts +0 -173
  919. package/scripts/test-prompts-loader.ts +0 -56
  920. package/scripts/test-real-scenario.mjs +0 -290
  921. package/scripts/test-stream-render.ts +0 -37
  922. package/scripts/test-task-drawer.mjs +0 -204
  923. package/scripts/test-task-invariants.mjs +0 -169
  924. package/scripts/test-town-3d.mjs +0 -121
  925. package/scripts/test-town-layout.mjs +0 -200
  926. package/scripts/test-town-page.mjs +0 -136
  927. package/scripts/test-town-scene-math.ts +0 -169
  928. package/scripts/test-town-twin.mjs +0 -121
  929. package/scripts/test-town-upload.mjs +0 -89
  930. package/scripts/test-town-user-flow.mjs +0 -619
  931. package/scripts/test-town-world.mjs +0 -76
  932. package/scripts/test-town-wuwa.mjs +0 -198
  933. package/scripts/test-user-isolation.mjs +0 -193
  934. package/scripts/test-workshop-entries.ts +0 -370
  935. package/scripts/test-workspace-api.ts +0 -329
  936. package/scripts/test-ws-aep.mjs +0 -187
  937. package/scripts/test-ws-protocol.ts +0 -134
  938. package/scripts/town-demo-seed.mjs +0 -75
  939. package/scripts/town-scene-clear.mjs +0 -56
  940. package/scripts/verify-exec-modes-report.ts +0 -248
  941. package/scripts/verify-lead-mail.ts +0 -188
  942. package/scripts/verify-page-smoke.mjs +0 -87
  943. package/scripts/ws-test.mjs +0 -176
  944. package/scripts/ws-test.py +0 -4
package/README-zh.md CHANGED
@@ -1,507 +1,578 @@
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>
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/)** · **[版本发布 →](https://github.com/kingdol666/AgentWorkShop/releases)** · **[更新日志 →](./changelog.md)**
17
+
18
+ *当前版本:**v0.7.37** · 14 个执行引擎 · 5 种现场协议 · 99 个运行时设置项 · 双语文档(简体中文 / English)*
19
+
20
+ *一个配置驱动的平台:**AI Agent 团队**与**工业数字孪生**共享同一运行时——Agent 查询真实遥测、经人工审批的写控回路下发监督设定值,每个事件实时推送到 3D 孪生。*
21
+
22
+ </div>
23
+
24
+ > **定位声明:监督层。** AgentWorkShop 是面向产线管理、数字孪生、数采与 Agent 编排的**监督层**(SCADA 同位)平台,运行在**秒级软实时**档位。它**不是**硬实时控制器:任何时序关键回路(**< 10 ms**、联锁、安全、伺服)**必须在 PLC 内实现**。本平台下发的设定值均为建议性——产线侧逻辑可否决。
25
+
26
+ ---
27
+
28
+ ## 目录
29
+
30
+ | | | |
31
+ |---|---|---|
32
+ | [这是什么?](#这是什么) | [特性总览](#特性总览) | [界面一览](#界面一览) |
33
+ | [设计架构](#设计架构) | [快速开始](#快速开始) | [配置与 CLI](#配置与-cli--真正的配置驱动) |
34
+ | [工业栈详解](#工业栈详解) | [使用说明](#使用说明) | [端到端验证](#端到端验证) |
35
+ | [项目结构](#项目结构) | [技术栈](#技术栈) | [开发指南](#开发指南) |
36
+ | [路线图](#路线图) | [许可证](#许可证) | |
37
+
38
+ ## 文档
39
+
40
+ 文档双语——[VitePress 文档站](https://kingdol666.github.io/AgentWorkShop/)的每个板块都提供语言切换(简体中文 / English)。深度文档同样随仓库发布,CLI 还会把它们一并复制进发布包:
41
+
42
+ | 主题 | 在线 | 仓库内 | 覆盖内容 |
43
+ |---|---|---|---|
44
+ | **快速上手** | [指南](https://kingdol666.github.io/AgentWorkShop/guide/getting-started) | `docs/site/guide/` | 安装 → 首次运行 → 第一次「Agent × 产线」会话、配置、数采协议、数控读写、HITL、配方版本化、多 Harness 团队、产线级权限、AML |
45
+ | **插件开发** | [插件指南](https://kingdol666.github.io/AgentWorkShop/plugins/) | [`docs/plugins.md`](./docs/plugins.md) | 完整扩展契约:三种作用域、`index.mjs` 清单、`ctx` 服务端/浏览器能力面、`settings`/`groups` 声明、生命周期事件、i18n、面板、团队级开关、一个真实示例 |
46
+ | **SDK** | [SDK 指南](https://kingdol666.github.io/AgentWorkShop/sdk/) | [`docs/sdk.md`](./docs/sdk.md) | `agentworkshop/sdk` 既是编程客户端(带信封处理的平台 REST 客户端),也是插件扩展基座;TypeScript 类型;浏览器侧 SDK |
47
+ | **CLI** | [CLI 手册](https://kingdol666.github.io/AgentWorkShop/cli/) | [`docs/cli.md`](./docs/cli.md) | 全部 14 条 `aw` 指令、全局参数、退出码、双模式路径模型、指令注册系统、维护者发布指南 |
48
+ | **AML** | [AML 指南](https://kingdol666.github.io/AgentWorkShop/guide/aml) | [`docs/aml.md`](./docs/aml.md) | 自动建模实验室:数据集构建、作业编排、模型注册表、晋级门禁、Agent 工具 |
49
+ | **TUI** | — | [`docs/tui.md`](./docs/tui.md) · [`tui/README.md`](./tui/README.md) | 终端工作台:频道、Agent、任务、实时监控、HITL 作答 |
50
+ | **多 Harness 架构** | — | [`docs/multi-harness-architecture.md`](./docs/multi-harness-architecture.md) | 引擎分类、归一化会话契约、provider/model 目录、失效模式 |
51
+
52
+ ---
53
+
54
+ ## 这是什么?
55
+
56
+ AgentWorkShop 起家于**多智能体软件工作坊**——Channel 内的编码 Agent 团队,配备 lead 调度器、7 状态任务机、持久记忆,以及四个互操作入口(WebSocket / MCP / A2A / REST)。
57
+
58
+ 随后它长出了**工业半边**:完整的数采与写控栈(Modbus TCP / OPC UA)、带配方与批次运行的产线、3D 数字孪生小镇、一个**自动建模实验室**(数据集 → 训练作业 → 排行榜 → 门禁晋级)——以及让它独一无二的桥:**Agent 可被授予带绑定、带权限作用域的真实工业节点访问权**,带着物理语义查询其实时遥测,并经「联锁 → 人工审批 → 回读校验」管线驱动写操作。
59
+
60
+ 它同时**天生可扩展**:一个自包含插件可以同时增强服务端(钩子、路由、Agent 工具、数采驱动、配置分组)与浏览器(面板、i18n),而同样的能力面也通过 SDK 开放给普通程序——见 [`docs/plugins.md`](./docs/plugins.md) 与 [`docs/sdk.md`](./docs/sdk.md)。
61
+
62
+ 最终效果:提交一个目标,比如「分析熔体温度趋势并优化设定值」——Agent 团队读取真实传感器历史、计算统计量、提议新设定值、在 HITL 面板等您批准、写入 PLC、校验回读、带着数值汇报。**端到端,自动化 E2E 已验证。**
63
+
64
+ <div align="center">
65
+ <img src="https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/town-demo.gif" alt="3D 数字孪生 — 实时产线" width="86%" />
66
+ <br><sub><b>实时 3D 孪生。</b>产线设备、设备健康、数采通道与趋势分析——全部由实时遥测驱动。</sub>
67
+ </div>
68
+
69
+ ---
70
+
71
+ ## 特性总览
72
+
73
+ #### Agent 团队运行时
74
+
75
+ | 能力 | 为何重要 |
76
+ |---|---|
77
+ | **Lead 编排** | 每个 Channel 一名 lead:分解目标、派发空闲 worker、失败重派、判定目标满足度。LLM 决策 + 确定性规则引擎兜底——系统永不停滞。 |
78
+ | **三种执行模式** | `goal`(满意度判定)· `loop`(定间隔重放)· `pipeline`(顺序阶段)。7 状态任务机带进度、产物与完整历史。 |
79
+ | **Harness 无关** | 一个 `AgentInterface`,**14 个引擎**分三类传输形态:**进程内**——`mock`(无 LLM)、`claude`(Claude Agent SDK,常驻会话,同轮 steer);**经协议常驻会话**——`omp`(RPC 子进程)、`codex`(app-server JSON-RPC)、`dsh` / `qwen` / `hermes`(ACP)、`opencode`(serve + HTTP/SSE);**带结构化事件流的无头 CLI**——`gemini`(stream-json)、`copilot`(JSONL)、`cursor`(stream-json)、`crush`(非交互运行)、`goose`(stream-json)、`pi`(`-p --mode json`)。平台永远不知道跑的是哪个。 |
80
+ | **Channel 级 LLM 选择** | 每个 Channel 从 Harness 实时目录中选 **harness → provider → model(+effort)**(如 omp 的 `zhipu-coding-plan/glm-5.3-flash`)。成员未显式覆盖即继承——一个团队混用多种 harness 是一等公民设定,不是绕行。 |
81
+ | **Harness 可用性检查** | `GET /api/workshop/harnesses` 逐引擎探测 PATH 上的 CLI。前端禁用未安装项,且每个入口在执行前都做强校验。 |
82
+ | **停滞安全的监督** | 任务回收区分「卡死」与「慢」:看门狗把 Agent 工具调用当作活性信号,健康的长工业作业不会被误回收,真停滞仍会呈报 lead。 |
83
+ | **持久记忆** | 私有 + Channel 共享双域;FTS5 CJK 切分,可选向量混合检索,token 预算注入;团队编年史与空闲反思持续沉淀。 |
84
+ | **四个入口** | 一个 manager 坐在每扇门后:**WS**(AEP v1 事件流,seq 续传)、**MCP**(约 25 个进程内工具)、**A2A**(JSON-RPC 2.0 + AgentCard)、**REST**。 |
85
+
86
+ #### 工业栈
87
+
88
+ | 能力 | 为何重要 |
89
+ |---|---|
90
+ | **五协议现场总线** | Modbus TCP、Modbus RTU-over-TCP(串口网关)、OPC UA、MQTT、HTTP/REST——数采**与**写控双驱动带连接池、分类错误文案与逐驱动连接测试;`mock` 覆盖演示/CI;插件可注册新协议。 |
91
+ | **Agent 团队 × 工业作用域** | 把 Agent 绑定到数采/数控节点。Agent 看到的是语义卡(物理含义、单位、安全量程、配方窗口)——而不是裸寄存器。 |
92
+ | **人工审批的写控** | 数控下发经过「**安全量程 ∩ 活动配方窗口**」联锁 → 可选 **HITL 审批** → PLC 写入 → **回读校验** → 带签名的写历史。 |
93
+ | **数控读写通道** | 每个控制节点都能沿它写入时所用的同一套标定**读回 PLC 当前值**:周期读 + 按需读 + Agent 读取,SET 与 ACT 并排呈现——读是被动观测,永不被写联锁阻断。 |
94
+ | **Recipe 版本化治理** | 参数修改按版本入史(归因 用户/Agent/系统 + 操作者 + 原因)。可非破坏地回退到任意修订版或最近一次良好批次。失效节点参数跳过并明确标识。 |
95
+ | **产线运营** | 产线 → 产品 → 配方 → 批次。配方窗口门控采集并联锁写入;每条样本打标 `product/recipe/run`,实现按批次隔离。 |
96
+ | **多形态数采帧管线** | 多点轮廓(测厚仪/扫描仪)与 CCD 图像帧流经模板 sink 管线:向量与元数据入 Timescale(`daq_frames`),像素入对象存储(MinIO,不可达自动降级本地磁盘);派生指标阈值越限走既有告警链路。 |
97
+ | **Agent 自查工具** | `line_context`、`ops_log`、`recipe_log`、`recipe_versions`、`dcw_journal`——Agent 清楚自己操控的产线/产品/配方,谁做过什么,每个值怎么变。 |
98
+
99
+ #### 治理、配置与扩展
100
+
101
+ | 能力 | 为何重要 |
102
+ |---|---|
103
+ | **产线级权限** | 工业数据按**产线**三态门控(无权/仅查看/可操控),强制点在数据面——普通用户未授权前看不到任何产线数据。 |
104
+ | **全操作审计日志** | 用户 / Agent / 系统 的每个动作都落进同一份可检索日志;操作者归属「Channel名/成员名」,与用户和系统天然区分。经 WS 实时推送。 |
105
+ | **团队级插件开关** | 每个团队(Channel)持有**独立插件开关组**(`channel_plugins`):被关闭插件的工具不注入该团队 Agent。插件本体经 `aw plugin` 与 `/plugins` 页热管理。 |
106
+ | **插件扩展 API** | `plugins/<name>/` 下的一个自包含目录**同时增强两半**:`index.mjs`(服务端:钩子、路由、Agent 工具、数采驱动/处理器/模板、配置分组、KV、定时器)与 `client.mjs`(浏览器:注入具名插槽的面板、i18n、设置 UI)。三种作用域——`builtin`(随包发布)> `project`(检出)> `user`(`~/.AgentWorkShop`)——启停**与代码修改**均有约 1 秒热重载。完整契约见 [`docs/plugins.md`](./docs/plugins.md)。 |
107
+ | **AML —— 自动建模实验室** | 数据集构建 → 训练作业 → 排行榜 → 晋级门禁 → 模型引用,全部可在 `/aml` 页驱动,也可由 Agent 通过 10 个 `aml_*` 工具驱动。Python 运行时由 `uv` 引导至 `./aml` 资产根;产物与元数据都留在配置根下。 |
108
+ | **全量配置驱动运行时** | 全部运行旋钮(记忆预算、上下文压缩、回退护栏、保留策略、备份、日志级别…)在设置描述符注册表声明一次,优先级 **config.yml < runtime-settings < env**——**99 个设置项、16 组**,代码零硬编码默认。 |
109
+ | **可配置节拍** | 采样与查询的默认值/下限全部是 **live 设置**(`daq.sampling.*`、`daq.query.*`):热重载、create/patch 时钳制,Agent 工具描述实时携带当前值。 |
110
+
111
+ #### 数字孪生
112
+
113
+ | 能力 | 为何重要 |
114
+ |---|---|
115
+ | **3D 数字孪生** | Three.js 小镇:放置产线设备与 Channel 领地,实时查看设备健康、告警与数值——由同一事件总线驱动。自适应画质阶梯(DPR / 阴影 / Bloom 分档 + 墙钟 FPS 预算)自动匹配机器,`window.__townStats` 暴露真实渲染指标供性能探针使用。 |
116
+
117
+ ---
118
+
119
+ ## 界面一览
120
+
121
+ <div align="center">
122
+
123
+ | Agent 工作台 | 产线运营 |
124
+ |:---:|:---:|
125
+ | ![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) |
126
+
127
+ | 数采中心 | 数字孪生小镇 |
128
+ |:---:|:---:|
129
+ | ![数采中心](https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/daq.png) | ![数字孪生小镇](https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/town.png) |
130
+
131
+ | 仪表盘 | 实时监控与 HITL |
132
+ |:---:|:---:|
133
+ | ![仪表盘](https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/dashboard.png) | ![监控与 HITL](https://raw.githubusercontent.com/kingdol666/AgentWorkShop/main/docs/readme-assets/monitor.png) |
134
+
135
+ </div>
136
+
137
+ ---
138
+
139
+ ## 设计架构
140
+
141
+ ```mermaid
142
+ flowchart TB
143
+ subgraph FE["前端 — Nuxt 4 / Vue 3"]
144
+ UI["工作台 UI · 3D 孪生 · 大屏"]
145
+ WS["AEP 客户端 — seq 续传"]
146
+ end
147
+ subgraph SRV["服务端 — Nitro / h3"]
148
+ REST["REST /api/workshop/**"]
149
+ HUB["WS Hub — AEP v1"]
150
+ A2A["A2A JSON-RPC"]
151
+ MCP["MCP Server"]
152
+ subgraph RT["运行时"]
153
+ MGR["AgentChannelManager"]
154
+ SCH["SchedulerLoop — lead 监督"]
155
+ TE["TaskEngine — 7 态状态机"]
156
+ AR["AgentRuntime × N"]
157
+ MEM["AgentMemory — FTS5 + 向量"]
158
+ BUS["ChannelBus — per-channel seq + 环形缓冲"]
159
+ end
160
+ subgraph IND["工业"]
161
+ DAQ["数采网关 — 逐节点边缘运行时"]
162
+ DCW["数控网关 — 写控"]
163
+ BR["队列 — inproc / MQTT"]
164
+ TSDB["时序库 — SQLite / Timescale"]
165
+ end
166
+ subgraph HB["Harness 适配器 — 14 个引擎"]
167
+ MOCK["mock · claude — 进程内"]
168
+ OMP["omp — RPC 子进程"]
169
+ CDX["codex — app-server"]
170
+ DSH["dsh · qwen · hermes — ACP"]
171
+ OC["opencode — serve"]
172
+ FAM["gemini · copilot · cursor · crush · goose · pi — 无头 CLI"]
173
+ end
174
+ DB[("SQLite — channels · agents · tasks
175
+ messages · memories (FTS5) · events")]
176
+ end
177
+ UI <--> WS
178
+ WS --> BUS
179
+ REST & A2A & MCP --> MGR
180
+ MGR --> SCH & TE & AR
181
+ AR --> MEM
182
+ AR --> MOCK & OMP & CDX & DSH & OC & FAM
183
+ MGR & TE & MEM & BUS --> DB
184
+ DAQ <--> BR --> TSDB
185
+ DCW --> BR
186
+ DAQ & DCW --> BUS
187
+ ```
188
+
189
+ **Agent × 机器之桥**(值得读源码的部分):
190
+
191
+ ```
192
+ agent ──绑定──▶ 节点 (daq: auto / dcw: manual)
193
+ │ │
194
+ │ my_industrial_nodes ◀── 语义卡:物理含义 · 单位 · 安全量程 · 配方窗口
195
+ │ daq_query ◀── 时序库历史,统计 + 物理语义
196
+ │ dcw_control ──▶ 联锁(安全量程 ∩ 配方窗口)
197
+ │ ──▶ HITL 审批(manual 模式,180s 超时)
198
+ │ ──▶ PLC 写入 → 回读校验 → ACK + 写历史
199
+ ◀── Agent 可引用数值的结果文本
200
+ ```
201
+
202
+ ---
203
+
204
+ ## 快速开始
205
+
206
+ ### 前置条件
207
+
208
+ ```bash
209
+ node -v # ≥ 23.4.0(需要内置 node:sqlite)
210
+ ```
211
+
212
+ > 真实 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`)。
213
+
214
+ ### 方式 A —— 从 npm 安装(推荐)
215
+
216
+ ```bash
217
+ npm install -g agentworkshop # → `aw` / `agentworkshop` 进入 PATH
218
+ aw start # → http://localhost:3001
219
+ ```
220
+
221
+ 发布出的包内含**预构建的生产产物**(`.output/`),所以 npm 安装后可直接启动——无需构建步骤,也无需构建工具。首次启动时一切初始化进配置根 **`~/.AgentWorkShop`**:默认 `config.yml`、自动生成含随机会话密钥的 `.env`、`runtime-settings.json`、docker-compose 种子、`prompts/`、`commands/`、`plugins/`(由 SDK 示例播种,**默认关闭**)与空的 `data/` 目录。全部运行数据(SQLite、JSON 仓库、备份、日志)也都落在配置根——配置与数据跟着安装走,与当前工作目录无关。
222
+
223
+ 不想全局安装、只想跑一次?
224
+
225
+ ```bash
226
+ npx agentworkshop start # 无需全局 npm 安装
227
+ ```
228
+
229
+ > `npx` 同样会创建 `~/.AgentWorkShop`——不装全局并不等于在磁盘上不留任何痕迹。
230
+
231
+ ### 方式 B —— 源码运行
232
+
233
+ ```bash
234
+ git clone https://github.com/kingdol666/AgentWorkShop.git && cd AgentWorkShop
235
+ pnpm install
236
+ pnpm dev # → http://localhost:3000(端口取自 config.yml)
237
+ ```
238
+
239
+ 源码生产部署:
240
+
241
+ ```bash
242
+ pnpm build # nuxt build → .output/
243
+ pnpm start # 端口取自 config.yml → server.prod.port
244
+ ```
245
+
246
+ > 在源码检出内,配置根是项目里的 **`.AgentWorkShop/`** 文件夹(运行时覆盖、数据、项目级指令),而 `config.yml` / `.env` 留在检出根,作为版本化的工厂默认值。
247
+
248
+ ### 版本更新
249
+
250
+ ```bash
251
+ aw update # 检查 + 就地更新全局安装
252
+ aw update --check # 只报告,不安装
253
+ npm install -g agentworkshop@latest # 手动等效
254
+ ```
255
+
256
+ 版本遵循 semver。每次 `aw start` 都会校验配置根,并把 `home` 之前的旧版 `data/` 布局迁移进来(最新文件胜出),因此数据可以跨版本存活。SQLite schema 迁移在服务端启动时执行。当前版本:**v0.7.37**——见[版本发布](https://github.com/kingdol666/AgentWorkShop/releases)。
257
+
258
+ ### 第一次「Agent × 产线」会话(约 2 分钟)
259
+
260
+ 1. **登录** —— 侧边栏注册(或 `POST /api/users/register`)。
261
+ 2. **搭产线** —— 「产线运营」→ 建产线,加数采节点(如 `daq-temp-tc`)与数控节点(如 `dcw-temp-sp`),建产品 + 配方,点**开跑**。实时值开始流动。
262
+ 3. **建团队** —— 「Agent 工作台」→ 选 lead + workers,**deploy** 部署进 Channel。
263
+ 4. **绑定节点** —— 打开 Agent 详情面板 → 绑定数采节点(*auto*)与数控节点(*manual* = 需您的批准)。
264
+ 5. **提交目标** —— 「分析最近 5 分钟熔体温度;若与 182 °C 偏差超过 1 °C,修正设定值(等我的批准)。」
265
+ 6. **审批** —— Agent 读取真实历史、计算均值、发起写请求 → 在 HITL 面板批准 → 看设定值变化,goal 收口并给出数值报告。
266
+
267
+ ---
268
+
269
+ ## 配置与 CLI —— 真正的配置驱动
270
+
271
+ 一个运行时,一个事实来源。**`config.yml`** 声明默认值;配置根内的 **`runtime-settings.json`** 承载运行时覆盖;环境变量与 CLI 参数在最上层。每个可编辑键在 `shared/config/schema.json` 中声明一次(类型、范围、枚举、实时/重启生效),**前端设置页与 CLI 消费同一份描述符**。
272
+
273
+ ```
274
+ config.yml(默认值) < .AgentWorkShop/runtime-settings.json(运行时) < 环境变量 / CLI 参数
275
+ ```
276
+
277
+ 配置根:全局安装(`npm i -g`)时为 **`~/.AgentWorkShop`**——无论在哪个目录运行 `aw`;源码检出时为项目内的 **`<repo>/.AgentWorkShop`**(`config.yml` / `.env` 留在检出根,作为版本化的工厂默认值)。`AW_HOME` 可重定向;`AW_MODE=home` 强制全局形态。
278
+
279
+ ### 设置持久化与热重载
280
+
281
+ - **系统设置 → 运行配置**标签页按描述符渲染每个可编辑键——改服务端口、主题、API 超时、语言环境或审批闸门,点保存即可。
282
+ - `live` 键立即生效(主题、标题、超时、审批闸门、数采采样节拍、时序查询桶宽……),经服务端事件流推送,**无需刷新、无需重启**。
283
+ - `restart` 键(端口、主机)落盘持久化,在下一次以对应模式启动时生效(`aw dev` / `aw start`)。
284
+ - 所有写入方共用一条通道:**设置页、CLI、服务端文件监听**最终都收敛到同一个设置文件——任何一端改,处处生效。
285
+
286
+ 示例——在线调节数采与查询节拍:
287
+
288
+ ```bash
289
+ aw config set daq.sampling.defaultIntervalMs 2000 # 新节点每 2s 采样
290
+ aw config set daq.sampling.minIntervalMs 500 # 节点级下限(create/patch 钳制)
291
+ aw config set daq.query.defaultBucketMs 3000 # 时序查询缺省 3s 桶
292
+ aw config set daq.query.minBucketMs 500 # 查询下限(samples/产线查询/Agent 工具共用)
293
+ ```
294
+
295
+ 注入 Agent 的工具描述会在每次装配时以当前配置值重新渲染——LLM 永远看到对自己 `daq_query` 调用真正生效的下限与缺省值。
296
+
297
+ ### `aw` CLI
298
+
299
+ | 指令 | 作用 |
300
+ |---|---|
301
+ | `aw start · aw dev · aw build` | 生产服务 / 开发服务器 / 构建——端口取自有效配置;首次 `start` 构建一次 |
302
+ | `aw stop` | 依单实例锁终止运行中的 aw 服务实例 |
303
+ | `aw config list · get · set · unset · reset` | 读写运行时设置(schema 校验 + 原子写盘) |
304
+ | `aw plugin list · create · enable · disable` | 跨三种作用域管理插件:查看、脚手架(默认 project 作用域;`--global` 为 user 作用域)、启停(写状态文件,运行中的服务约 1 秒热重载) |
305
+ | `aw home` | 查看/初始化配置根 `.AgentWorkShop` |
306
+ | `aw init <dir>` | 脚手架一个可运行的新项目(含完整配置系统与 CLI) |
307
+ | `aw register <路径\|URL\|npm:包名>` | 注册一条新指令——项目级或 `--global` 用户级 |
308
+ | `aw update` | 对比 npm 远程最新版本,有新版就就地更新全局安装 |
309
+ | `aw doctor` | 环境 + 项目健康检查(node、配置、端口、密钥) |
310
+ | `aw status` | 运行态总览:模式、配置来源、运行中服务、指令表 |
311
+ | `aw tui` | 终端工作台:频道/成员管理、任务下发、实时监控面板、HITL 作答(见 [`docs/tui.md`](./docs/tui.md) · [`tui/README.md`](./tui/README.md)) |
312
+ | `aw version` | 打印 CLI/包版本(别名 `v`) |
313
+
314
+ 全局参数:`--help/-h` · `--version/-v` · `--json`(机器可读) · `--root <dir>` · `--debug`。
315
+
316
+ 退出码:**0** 成功 · **1** 运行时错误 · **2** 用法错误。带 `--json` 时,失败会以信封返回 `{ ok: false, error: 'unknown-command' \| 'no-project' \| 'usage' \| 'internal' \| <code> }`,自动化无需解析 stderr 即可分支。
317
+
318
+ ### 指令注册
319
+
320
+ 指令就是导出 `{ meta, run }` 的普通模块。把它放进扫描目录,下次调用即生效——无需任何登记清单,约定优于配置:
321
+
322
+ | 作用域(同名高者优先) | 目录 |
323
+ |---|---|
324
+ | 项目级 | `<检出>/.AgentWorkShop/commands/` |
325
+ | 用户级 | `~/.AgentWorkShop/commands/` |
326
+ | 内建 | 随 CLI 发布(`cli/commands/`) |
327
+
328
+ `aw register <file|url|npm:pkg>` 把指令复制进对应作用域(`--global` 进用户级);`aw help` 列出全部已注册指令。
329
+
330
+ ```js
331
+ // ~/.AgentWorkShop/commands/hello.mjs
332
+ export const meta = { name: 'hello', group: '自定义', summary: '问好', usage: 'aw hello [--name <n>]' }
333
+ export async function run(argv, ctx) {
334
+ console.log(`你好 ${argv.flags.name ?? 'AW'} —— 模式: ${ctx.mode}`)
335
+ }
336
+ ```
337
+
338
+ ---
339
+
340
+ ## 工业栈详解
341
+
342
+ ### 数据采集(DAQ)
343
+
344
+ - **五协议驱动**:Modbus TCP、Modbus RTU-over-TCP(串口网关)、OPC UA、MQTT、HTTP/REST——连接池、分类错误文案、逐驱动连接测试;驱动注册表接受插件注册新协议。
345
+ - **逐节点边缘运行时**:独立采样节拍、下发节拍、节点级在飞互斥——一个慢驱动绝不拖累邻居。采样与查询的默认值/下限由 `daq.sampling.*`、`daq.query.*` live 设置驱动。
346
+ - **管线**:驱动 → 队列(进程内 / MQTT,断连离线缓冲)→ 消费泵乱序防御 → 三路分发:WS 实时直推(节拍门控)、TSDB 批量落库、设备孪生回写。
347
+ - **鲁棒性**:TSDB 单 in-flight 写 + 有界重试,缓冲背压带丢弃计数,真实丢失指标随 `daq.controller` 帧暴露。
348
+ - **告警**:配方级监控窗口,**2% 滞回 + 3 拍去抖**;alarm/offline 切换即时生效(安全优先)。
349
+
350
+ ### 写控制(DCW)
351
+
352
+ - 工程量写入:`linear` 标定(scale/offset)PLC↔物理,**回读校验**(死区容差),ACK 状态 + 写历史。
353
+ - **联锁**:产线运行时,活动配方的参数窗口对该节点**替代**全局安全量程。
354
+ - **HITL**:`manual` 绑定挂起写入等用户批准(同 Agent+节点去重;批准时二次校验——权限在您点击批准那一刻重查)。
355
+
356
+ ### 配方与批次
357
+
358
+ `产线 → 产品 → 配方 → 批次`。开跑逐节点应用配方参数(每次写都校验),逐线门控采集,每条样本打标 `line/product/recipe/run`——产品级数据隔离 + 五维查询(产线 × 产品 × 配方 × 时间 × 节点)。
359
+
360
+ ### AML —— 自动建模实验室
361
+
362
+ 这是闭环里的建模半边:`/aml` 用已打标的遥测构建**数据集**,把**训练作业**提交到 `uv` 托管的 Python 运行时,在**排行榜**上给各次运行排名,并且只有跨过配置的**门禁**(NRMSE、rollout NRMSE、验证/测试差距、最小行数与运行次数)才允许晋级。晋级后的模型按 id 引用,因此 MPC 或影子孪生控制器消费的是有版本号的产物,而不是含糊的「最新」。
363
+
364
+ - Agent 通过 10 个工具做同样的事(`aml_dataset_build`、`aml_job_submit`、`aml_job_status`、`aml_leaderboard`、`aml_model_promote`……)——提交一个目标,让团队去训练并汇报。
365
+ - Python 运行时由 `uv` 自行引导进配置根内的 `./aml` 资产根;数据集/产物/元数据路径、磁盘配额、作业超时、并发与保留策略全部是**设置项**(`aml` 组共 16 项),而不是常量。
366
+ - 治理默认保守:跨配方数据集除非显式允许否则拒绝,每个作业都有归属。
367
+
368
+ ---
369
+
370
+ ## 使用说明
371
+
372
+ ### 认证
373
+
374
+ 邮箱 + 密码登录签发 **bearer token**(每用户多 token,可单独吊销)。
375
+
376
+ ```bash
377
+ # 注册
378
+ curl -X POST http://localhost:3000/api/users/register \
379
+ -H 'content-type: application/json' \
380
+ -d '{"email":"you@example.com","password":"secret","name":"you"}'
381
+
382
+ # 所有 workshop 调用
383
+ curl http://localhost:3000/api/workshop/channels \
384
+ -H 'authorization: Bearer <token>'
385
+ ```
386
+
387
+ ### 产线级权限
388
+
389
+ 工业数据按**产线**三态管控,由管理员在内置「权限管理」页(`/permissions`,仅 admin 侧栏可见)维护:
390
+
391
+ | 状态 | 数采节点 | 数控(写控)节点 | 可见性 |
392
+ |---|---|---|---|
393
+ | **无权**(普通用户默认) | 隐藏 | 隐藏 | 后端不返回该产线数据——产线运营/数采中心/数字孪生均不可见 |
394
+ | **仅查看** | 只读 | ✕ | 产线可见、实时值可看,但不可写/不可下发/不可绑定设备 |
395
+ | **可操控** | 读取 | 读取+写入 | 全量能力:设定值下发、参数下发、设备绑定 |
396
+
397
+ - `admin` / `editor` 为运营角色,不受授权约束(全量全权)。
398
+ - 普通用户**默认无权**——未授权前看不到任何产线数据。
399
+ - 强制点在数据面:列表接口按授权过滤,写控/下发接口返回人话 403,Agent↔节点绑定校验产线授权(数采需仅查看+,写控需可操控)。
400
+ - 插件经 `ctx.permissions`(`lineMode` / `visibleLineIds` / `listGrants` / `setGrants`)获得同一能力面,并有 `permissions:changed` 生命周期钩子;SDK REST 客户端提供 `client.permissions.overview()` / `client.permissions.set(...)`。
401
+
402
+ ### 执行模式
403
+
404
+ 在任务描述中使用模式前缀(或在 composer UI 中选择):
405
+
406
+ | 模式 | 语义 | 配置 |
407
+ |---|---|---|
408
+ | `goal` | lead 分解 → worker 交付 → **lead 判定满意度**;不满足继续补发;满足收口父任务。 | `goalCriteria` |
409
+ | `loop` | 固定间隔循环重放同一任务。 | `intervalMs`(默认 60000)、`maxIterations`(默认 ∞) |
410
+ | `pipeline` | 有序阶段;阶段 N+1 消费阶段 N 产出。 | `stages: [{name, description, assigneeId?}]` |
411
+
412
+ ### 四个入口
413
+
414
+ | 入口 | 端点 | 面向 |
415
+ |---|---|---|
416
+ | **WS** | `/api/workshop/ws?channelId=…` | 仪表盘 / UI——AEP v1 信封,per-channel 单调 `seq`,5000 事件环形缓冲,`lastSeq` 续传,快照兜底。 |
417
+ | **MCP** | 进程内服务,约 25 个工具 | Agent(omp host tools)——管理面 + 作业面工具,Channel 作用域。 |
418
+ | **A2A** | `POST /api/workshop/a2a/:agentId/rpc` | 外部 Agent——JSON-RPC 2.0,`AgentCard` 在 `/card`,`tasks/sendSubscribe` SSE。 |
419
+ | **REST** | `/api/workshop/**` | 人 / 脚本——完整管理面。 |
420
+
421
+ ### 任务状态机
422
+
423
+ ```
424
+ SUBMITTED ─▶ ASSIGNED ─▶ WORKING ─▶ WAITING ─▶ COMPLETED
425
+ │ │ │ │
426
+ └────────────┴───────────┴──▶ CANCELED / FAILED ─▶(重试 ≤ 3 或取消)
427
+ ```
428
+
429
+ ---
430
+
431
+ ## 端到端验证
432
+
433
+ 上面每一条论断,背后都有一个可复跑的套件。闭环套件在**生产实例上、跑真实模拟产线协议**(Modbus TCP/RTU、OPC UA、MQTT、HTTP + MQTT/Timescale 管线),配真实 LLM Agent,断言落在数据库、事件流与 HTTP API 上——而不是 mock。
434
+
435
+ | 套件 | 最新结果 | 覆盖 | 复现 |
436
+ |---|---|---|---|
437
+ | `e2e-full-closedloop.mjs` | **124 PASS / 0 FAIL**(2026-09-12,v0.7.36) | 注册 → 登录 → 产线/产品/配方 → 数采采样 → Agent 绑定节点 → `daq_query` → `dcw_control` → HITL 审批 → PLC 写入 → 回读 → 配方回退 → 级联删除 → 数据根隔离 | `node scripts/e2e-full-closedloop.mjs http://127.0.0.1:3111` |
438
+ | `e2e-aml.ts --real` | 0 失败(2026-09-11) | AML 数据集 → 作业提交 → 状态/日志 → 排行榜 → 晋级门禁,跑在真实 Python 运行时上 | `node node_modules/tsx/dist/cli.mjs --tsconfig .nuxt/tsconfig.server.json scripts/e2e-aml.ts --real` |
439
+ | 五协议真实产线 | 37/37 | 逐协议连通、数采入 Timescale、逐协议数控下发 + 回读、Agent 闭环、HITL 经真实 OPC UA 写入、配方 + 参数账本回退 | `node scripts/_dbg-live-line-e2e.mjs` |
440
+ | 生产 API 全链路 | 64/64 | 跨重启持久化、模板 CRUD、任务 assign/complete/cancel/loop/pipeline、A2A + mailbox、WS 广播、MCP 端点、级联删除 | `AW_E2E_TOKEN=<token> node scripts/api-live-e2e.mjs` |
441
+ | 产线权限 / 审计负向 | 20/20 + 9/9 | 三态产线授权 + 人话 403、授权撤销收敛、无 token WS 零遥测 | `scripts/e2e-auth-matrix.mjs` |
442
+ | 渲染回归 | 29/29 | 227 行数采表完整性、WS 驱动行更新、筛选、详情页、3D 小镇 + 模型库、7 页 smoke、零 pageerror | `node scripts/_dbg-render-regression.mjs <base> <email> <pass>` |
443
+ | 多 Harness 并行 | 21 | omp 闭环 · codex 真实寄存器写入 · dsh 真实数采 · opencode 配方写入+回退——四引擎在一条开跑产线上 | `node scripts/e2e-multiharness-team.mjs` |
444
+ | 离线单元/属性套件 | 全绿 | AEP 事件索引(`test-events-index`)、LRU、数据根拆分(`test-data-root`)、日志洪泛、回退索引、插件加固、记忆按月查询、CLI 退出码(`test-cli-exit`)、SDK 能力面(`test-sdk-surface`) | `node scripts/test-<name>.mjs` |
445
+
446
+ 五协议与生产 API 两行是历史上的 **v0.7.20** 验收基线——*156 断言、0 失败*,完整报告见 [`docs/audit/e2e-2026-09-07.md`](./docs/audit/e2e-2026-09-07.md)。闭环与 AML 两行是当前 HEAD 的跑批结果。性能探针:`scripts/_dbg-render-perf.mjs`。
447
+
448
+ ---
449
+
450
+ ## 项目结构
451
+
452
+ ```
453
+ AgentWorkShop/
454
+ ├── bin/ · cli/ # aw CLI——指令注册表 · 内置指令 · 配置引擎接线
455
+ ├── app/ # Nuxt 4 前端(srcDir)
456
+ │ ├── pages/ # / · /workshop · /workshop/agents · /workshop/teams
457
+ │ │ # /workshop/channel-templates · /workshop/w/:id
458
+ │ │ # /town · /daq · /daq/:id · /dcw · /dcw/:id
459
+ │ │ # /aml · /monitor · /logs · /permissions
460
+ │ │ # /plugins · /users · /tokens · /settings
461
+ │ ├── components/workshop/ # 时间线 · 泳道 · 任务板 · 记忆面板 · 3D 小镇
462
+ │ └── stores/composables/ # Pinia + AEP 客户端
463
+ ├── server/
464
+ │ ├── api/ # REST + WS + A2A + MCP 路由
465
+ │ ├── services/workshop/
466
+ │ │ ├── runtime/ # manager · scheduler-loop · task-engine · memory · mailbox
467
+ │ │ ├── agents/ # AgentInterface:14 个引擎(+ 工业工具)
468
+ │ │ ├── daq/ dcw/ aml/ # 边缘运行时 · 驱动 · 队列 · 存储 · 建模实验室
469
+ │ │ └── db/ # node:sqlite 仓储层
470
+ │ ├── mcp/ # MCP 服务(25 个工具)
471
+ │ ├── plugins-builtin/ # 随包发布的插件(diag-bridge · rag-bridge)
472
+ │ └── plugins/ # 运行时装配(单例)
473
+ ├── sdk/ # agentworkshop/sdk——插件上下文、钩子总线、REST 客户端、浏览器 SDK
474
+ ├── tui/ # 终端工作台(aw tui)
475
+ ├── shared/
476
+ │ └── config/ # schema.json(98 个设置描述符)+ 引擎(合并/校验/持久化)+ 路径解析器
477
+ ├── config.yml # 工厂默认值(构建/启动时读取;版本号来自 package.json)
478
+ ├── .AgentWorkShop/ # 检出内的配置根——prompts(版本化)+ 运行时覆盖 · 数据 · 日志 · 指令(git 忽略)
479
+ ├── data/ # 迁移前的旧版位置(自动迁移进配置根)
480
+ └── scripts/ # 启动器 · home 引导 · E2E · 验证套件
481
+ ```
482
+
483
+ ## 技术栈
484
+
485
+ | 层 | 技术 |
486
+ |---|---|
487
+ | 框架 | [Nuxt 4](https://nuxt.com) + Nitro(WebSocket) |
488
+ | UI | Vue 3.5 · Pinia · Ant Design Vue · UnoCSS · Three.js · ECharts |
489
+ | 语言 | TypeScript 5.7 全栈;`shared/` 前后端共用 |
490
+ | CLI | Node ESM CLI,可插拔指令注册表(`bin/aw.mjs`) |
491
+ | 持久化 | `node:sqlite`(零原生依赖)+ FTS5 + 可选 `sqlite-vec`;时序用 TimescaleDB |
492
+ | 校验 | `zod` —— 每个消息边界 |
493
+ | 互操作 | `@modelcontextprotocol/sdk` · A2A(JSON-RPC 2.0)· AEP v1(自研 WS 协议) |
494
+ | 现场总线 | `modbus-serial` · `node-opcua` · `mqtt` |
495
+
496
+ ## 开发指南
497
+
498
+ ```bash
499
+ pnpm dev # 开发服务(端口取自有效配置)
500
+ pnpm cli … # 仓库内使用 CLI:pnpm cli config list
501
+ pnpm tui # 终端工作台(连运行中的实例)
502
+ pnpm build && pnpm start
503
+ pnpm typecheck
504
+ pnpm lint
505
+ pnpm test:api-live # 针对运行中服务的 API 套件
506
+ node scripts/e2e-full-closedloop.mjs # 全链路闭环(需服务端运行中)
507
+ node scripts/test-sdk-surface.mjs # SDK 导出面守卫
508
+ ```
509
+
510
+ 文档站位于 `docs/site/`(VitePress),由 [`.github/workflows/deploy-docs.yml`](./.github/workflows/deploy-docs.yml) 部署到 GitHub Pages:
511
+
512
+ ```bash
513
+ cd docs/site && npx vitepress dev # 本地预览
514
+ cd docs/site && npx vitepress build # 生产构建 → .vitepress/dist
515
+ ```
516
+
517
+ 该工作流在构建前把 `docs/{cli,plugins,sdk}.md`(及其 `.en.md` 双语对照)同步进文档站,因此这些文件是单页指南的唯一事实来源。
518
+
519
+ ## 路线图
520
+
521
+ | 能力 | 状态 |
522
+ |---|---|
523
+ | Channel 运行时、lead 编排、7 态任务引擎 | 已交付 |
524
+ | 四入口:WS(AEP v1)· MCP · A2A · REST | 已交付 |
525
+ | 持久记忆(FTS5 + 可选向量混合) | 已交付 |
526
+ | 工业栈:数采 · 数控写控 · 产线/配方/批次 | 已交付 |
527
+ | Agent ↔ 节点绑定 + HITL 审批 + 联锁 | 已交付 |
528
+ | 3D 数字孪生小镇 · 产线运营 UI · 仪表盘 | 已交付 |
529
+ | 全功能 live E2E(Agent 读写真实产线,23 项检查) | 已交付 |
530
+ | 运行时配置系统:设置持久化 · 热重载 · 设置页 UI | 已交付 |
531
+ | `aw` CLI:config · run · init · register · doctor | 已交付 |
532
+ | 多 Harness 注册表:omp · codex · dsh · opencode 子进程引擎 | 已交付 |
533
+ | 五种现场协议:Modbus RTU-over-TCP · MQTT · HTTP(数采 + 数控双向) | 已交付 |
534
+ | Harness 可用性探测 + 执行前引擎强校验(UI 禁选 + 409) | 已交付 |
535
+ | Recipe 归因版本化 + 非破坏回退(界面 + Agent 工具) | 已交付 |
536
+ | Agent 自查工具:line_context / ops_log / recipe_log / recipe_versions / dcw_journal | 已交付 |
537
+ | 多 Harness 并行真实产线 live E2E(四引擎、一条产线) | 已交付 |
538
+ | HITL 审批流经真实 OPC UA 写入验证 | 已交付 |
539
+ | 双语文档(简体中文 / English,VitePress 语言切换) | 已交付 |
540
+ | Channel 级 LLM provider/model 选择(取自实时 Harness 目录) | 已交付 |
541
+ | 可配置数采/时序节拍(采样与查询的默认值 + 下限,live 热重载) | 已交付 |
542
+ | 团队级插件开关(建队勾选 + 团队弹层,按 Channel 过滤工具注入) | 已交付 |
543
+ | 插件热管理:`/plugins` 管理页 + `aw plugin list/enable/disable` | 已交付 |
544
+ | 渲染性能专项(v0.7.27):数采主线程阻塞 −90%、孪生 −69%,自适应画质回升最高档;`window.__townStats` 仪表化 | 已交付 |
545
+ | 插件系统 v2:浏览器面板注入、插件级 settings/groups、插件 i18n、宿主运行时服务(`ctx.services`/`ctx.daq`/`ctx.omp`) | 已交付 |
546
+ | Instrument Glass 材质层(v0.7.36):三级半透明材质、通透感、高光边缘、弹簧动效、逐页路由转场 | 已交付 |
547
+ | 实时管线优化:数采帧索引 O(n²)→O(n)、逐 Agent 增量事件索引、图表原地更新、按大小感知的 JSON 持久化 | 已交付 |
548
+ | AML 自动建模实验室:数据集构建 · 作业编排(uv 托管 Python)· 排行榜 · 晋级门禁 · 10 个 Agent 工具 | 已交付 |
549
+ | Claude Agent SDK 适配器——常驻会话、同轮 steer 与 `canUseTool` HITL | 已交付 |
550
+ | 生产硬化:TLS、MQTT 鉴权、OPC UA 签名+加密缺省、结构化审计日志 | 规划中 |
551
+ | 边缘部署形态:独立 edge-agent + 中心 broker | 规划中 |
552
+ | 报警外送(邮件/webhook)+ 确认工作流 | 规划中 |
553
+ | CI 流水线(typecheck + lint + e2e)——文档部署已跑在 GitHub Actions 上 | 规划中 |
554
+ | License:PolyForm Noncommercial 1.0.0(源码可得 · 禁止商用) | 已交付 |
555
+
556
+ ## 许可证
557
+
558
+ AgentWorkShop 是独立项目,**不是 Anthropic 或任何 LLM 厂商的官方产品**。它通过公开接口与 Agent harness(如 `omp`)集成。
559
+
560
+ **AgentWorkShop 为源码可得(source-available)软件,依据 [PolyForm Noncommercial 1.0.0](./LICENSE) 发布。**
561
+
562
+ - **允许** —— 个人学习、科研、兴趣项目、教学,以及非商业组织(公益、教育、公共研究、政府机构)的使用。
563
+ - **未经版权人事先书面许可不得商用** —— 任何**商业用途**:销售、付费服务、集成进商业产品、服务于经营活动的生产使用均未获授权。商用授权可向版权人申请。
564
+ - **再分发时** 必须随附本协议条款与 `Required Notice` 版权声明行。
565
+
566
+ 商用授权联系:[GitHub @kingdol666](https://github.com/kingdol666) · kingdol6080@gmail.com
567
+
568
+ <div align="center">
569
+
570
+ <a href="https://star-history.com/#kingdol666/AgentWorkShop&Date">
571
+ <picture>
572
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=kingdol666/AgentWorkShop&type=Date&theme=dark" />
573
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=kingdol666/AgentWorkShop&type=Date" />
574
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=kingdol666/AgentWorkShop&type=Date" width="80%" />
575
+ </picture>
576
+ </a>
577
+
578
+ </div>