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
@@ -0,0 +1,174 @@
1
+ # AgentWorkShop 全功能测试流程 Plan
2
+
3
+ > 版本无关的常备测试手册(撰写时基线 v0.7.36)。用途:后续直接指令 agent
4
+ > 「按 docs/full-test-plan.md 执行 Phase 0–N」即可完成全功能测试。
5
+ > 断言数为历史全绿基线(2026-09 上旬各轮验收),以脚本实际输出为准;括号内数字仅用于识别明显回退。
6
+ > 最后核对:2026-09-12(脚本清单逐一经 `scripts/` 实存核对)。
7
+
8
+ ---
9
+
10
+ ## 0. 总则
11
+
12
+ **通过标准**:本 plan 内列出的脚本全部全绿(0 failed)+ 服务日志无新增未解释 error + 关键页面目视无破版。任何红项:先定位修复,再复跑该阶段全量确认。
13
+
14
+ **执行纪律(每轮必守)**:
15
+ - 本机 7890 代理会拦截 localhost:所有对 127.0.0.1 的 curl/node 调用带 `NO_PROXY='127.0.0.1,localhost'`(或 `NO_PROXY='*'`)。
16
+ - 探针避开 3000/3001 冲突:dev=3000、生产 `aw start`=3001、隔离实例=3021。
17
+ - `.ts` 脚本必须 `npx tsx --tsconfig .nuxt/tsconfig.server.json`(先 build 过一次)。
18
+ - 测试账号(勿改动):admin@awshop.local / admin123(生产零种子 admin);perf-runner@awshop.io(admin);read-verify@awshop.io(plain)。老脚本默认 `E2E_USER ?? 'zhangwei@awshop.io'`,对生产须显式传 env。
19
+ - 凭据纪律:脚本从 env / `/api/system/settings` 运行时读取,不写可用凭据字面量。
20
+ - Bash 写源码/配置会被 Mimosa hook 拒绝 → 用 Write/Edit 工具;git add 源码路径同样被拒。
21
+ - commitlint:subject 首字符不得大写(中文开头最稳),body 每行 ≤100 字符。本仓库有并行会话共享 git index:commit 必须 pathspec 限定,提交后 `git log` 核对没被卷走。
22
+ - 共享实例有累积脏数据(数百产线/未结批次):判断「数采没采」前先确认产线批次门控(见 §8 排障表)。
23
+
24
+ **报告产物**:`docs/test-report-<版本>.md`,逐阶段列脚本 → 断言数 → 结果 → 失败详情与处置。
25
+
26
+ **两档执行模式**:
27
+ | 档位 | 范围 | 约耗时 |
28
+ |---|---|---|
29
+ | 冒烟(quick) | P0 + P1 + P2核心(api-live/perms/config-groups) + P3(protocol-matrix) + P4(agent-team) + P6(aw-start-smoke) + P7 抽查 | ~40 min |
30
+ | 全量(full) | P0–P7 全部 | ~2.5–3.5 h(4 引擎真实 LLM 占 ~40 min) |
31
+
32
+ ---
33
+
34
+ ## Phase 0 环境准备(全部后续阶段的前置)
35
+
36
+ | # | 动作 | 命令/检查点 |
37
+ |---|---|---|
38
+ | 0.1 | 生产实例 :3001 | `cd D:/codes/ABO/AgentWorkShop && NO_PROXY='127.0.0.1,localhost' node bin/aw.mjs start`(后台);健康门 `curl --noproxy '*' -s http://127.0.0.1:3001/api/health` 返回 ok |
39
+ | 0.2 | dev 实例 :3000(仅 P4 部分/TUI 需要时再起) | `npm run dev`;健康门同上换 3000 |
40
+ | 0.3 | 协议模拟器五件套 | `node scripts/dev-protocol-simulators.mjs`(MQTT:1883 / HTTP:1889 / ModbusTCP:1502 / ModbusRTU:15030 / OPC UA:4840)+ `node scripts/dev-plc-simulator.mjs`(PLC 涂布线 :15040,PV 40001 / 可写 SP 40021) |
41
+ | 0.4 | PLC 节点模拟器(独立项目,挤出流延) | PLC 项目目录启动(API :4010 + Modbus TCP :16040,40001=熔体温度/40021=加热区1SP,float32 big-endian);`curl --noproxy '*' http://127.0.0.1:4010/health` |
42
+ | 0.5 | rag-knowledge | KB 后端 :8770(e2e-plc-plugin-closedloop 缺省 8771,见各脚本 KB_BASE);健康门含 `vector.ready=true`、`embedding_available=true`;挂死(/health 30s+ 超时)→ 在 rag 项目根 `node command/ragctl.js restart backend`;检索 0 命中且 hnsw 报 "Nothing found on disk" → reindex(force 重建) |
43
+ | 0.6 | 工业深度诊断 | API :3210 + RAG 引擎 :8764(降级容忍但须存活);`curl http://127.0.0.1:8764/health` → status healthy |
44
+ | 0.7 | admin token | 浏览器或 REST 登录 admin@awshop.local 取 token → `export AW_E2E_TOKEN=<token>`(多数 3001 脚本依赖) |
45
+ | 0.8 | 快速健康门 | `node bin/aw.mjs doctor` / `node bin/aw.mjs status`;插件清单 `node bin/aw.mjs plugin list`(rag-bridge、diag-bridge 为 enabled) |
46
+
47
+ ⚠️ 0.3–0.6 任一不可用:对应依赖它的 Phase 3/5 项标记 SKIP 并在报告注明原因,不得静默当绿。
48
+
49
+ ---
50
+
51
+ ## Phase 1 服务层静态回归(无需任何服务在跑)
52
+
53
+ | 脚本 | 覆盖 | 基线 |
54
+ |---|---|---|
55
+ | `node scripts/test-data-root.mjs` | 单一数据根 `.AgentWorkShop/data` +「最新者胜」迁移 | 52 |
56
+ | `node scripts/test-rollback-index.mjs` | DCW 回滚账本索引化:结果一致 + 热路径更快 | 19 |
57
+ | `node scripts/_dbg-configroot-audit.mjs` | 配置根解析:`./.AgentWorkShop` 优先 / `~` 兜底,start/dev-guard/直跑 .output 三路一致 | 18 |
58
+ | `npm run test:plugin-lifecycle` | 插件生命周期 | 全绿 |
59
+ | `npm run test:sdk-surface` | SDK 面 | 全绿 |
60
+
61
+ ---
62
+
63
+ ## Phase 2 生产实例 API/UI 回归(对 :3001)
64
+
65
+ 前置:0.1 + 0.7。
66
+
67
+ | 脚本 | 覆盖 | 基线 |
68
+ |---|---|---|
69
+ | `AW_E2E_TOKEN=… NO_PROXY='127.0.0.1,localhost' node scripts/api-live-e2e.mjs` | 持久化恢复/模板/频道/任务三模式/agent-tools | 64 |
70
+ | `NO_PROXY='127.0.0.1,localhost' node scripts/_dbg-perms-e2e.mjs http://127.0.0.1:3001 admin123` | 产线权限矩阵(默认无权→readonly/operate 授权逐项) | 20 |
71
+ | `NO_PROXY='127.0.0.1,localhost' node scripts/_dbg-audit-neg-e2e.mjs` | 越权负向(start/stop/samples/WS 无鉴权) | 9 |
72
+ | `NO_PROXY='127.0.0.1,localhost' node scripts/_dbg-render-regression.mjs http://127.0.0.1:3001 admin@awshop.local admin123` | 关键页渲染回归 | 29 |
73
+ | `AW_E2E_TOKEN=… NO_PROXY='127.0.0.1,localhost' node scripts/e2e-config-groups.mjs` | 配置分组系统 + 两桥接插件正确/错误 token·URL 实测 | 58 |
74
+ | `E2E_USER=admin@awshop.local E2E_PASS=admin123 NO_PROXY='127.0.0.1,localhost' node scripts/_dbg-groups-ui-verify.mjs` | 设置页分组 UI(浏览器实测) | 16 |
75
+ | `node scripts/_dbg-daq-rowstyle-verify.mjs` | 数采行样式 + 设置页三节拍 | 10+6 |
76
+ | `node scripts/_dbg-daq-intervals-func.mjs` | 三节拍(采集/WS下发/趋势刷新)独立热生效 + 下限钳制 + 详情页按节拍实测重拉 | 13 |
77
+ | `node scripts/_dbg-town-smoke.mjs` | 数字孪生画布/场景钩子/帧推进 | 5 |
78
+
79
+ ---
80
+
81
+ ## Phase 3 协议与数采/数控全栈(真实模拟工况,对 :3001)
82
+
83
+ 前置:0.1 + 0.3 + 0.4 + 0.5 + 0.6 + 0.7。
84
+
85
+ | 脚本 | 覆盖 | 基线 |
86
+ |---|---|---|
87
+ | `NO_PROXY='*' node scripts/_dbg-protocol-matrix.mjs` | 5 协议 DAQ 读取 + 4 路 DCW 读/写闭环(modbus-tcp SP→PV 真收敛) | 全绿 |
88
+ | `NO_PROXY='127.0.0.1,localhost' node scripts/_dbg-live-line-e2e.mjs http://127.0.0.1:3001` | S1 夹具→S2 协议连通→S3 数采落库→S4 五路数控→S5 Agent 闭环(CLOSEDLOOP-OK)→S6 HITL 真实写入 | 37 |
89
+ | `AW_E2E_TOKEN=… NO_PROXY='127.0.0.1,localhost' node scripts/e2e-plc-plugin-closedloop.mjs` | A 插件健康 / B 产线供给 / C 数采交叉核对 / D 真实诊断 / E 知识闭环 / F 参数逐键热生效 / G Channel 级开关 | 71 |
90
+ | `AW_E2E_TOKEN=… NO_PROXY='127.0.0.1,localhost' node scripts/production-closed-loop-e2e.mjs` | 生产闭环增强:事件自动诊断(source=auto)→kb_search→dcw_control(HITL)→回写 | 23 |
91
+ | `AW_E2E_TOKEN=… NO_PROXY='127.0.0.1,localhost' node scripts/three-system-e2e.mjs`(可选 `--full` 走 omp 真实诊断) | AW × 深度诊断 × rag-knowledge 三系统;插件启停热重载 | 52 |
92
+
93
+ ---
94
+
95
+ ## Phase 4 Agent / Harness 多引擎(真实 LLM,最耗时)
96
+
97
+ 前置:0.1 + 0.7;zhipu 配额 429 时当日 12:45 重置后重跑。
98
+
99
+ | 脚本 | 覆盖 | 基线 |
100
+ |---|---|---|
101
+ | `NO_PROXY='127.0.0.1,localhost' node scripts/e2e-agent-team.mjs --base http://127.0.0.1:3001` | 团队 CRUD/批量部署/lead 分发/worker 真实执行/409 冲突 | 25 |
102
+ | `KEEP=1 node scripts/_dbg-opslog-agent-e2e.mjs`(自起隔离实例 :3021;占用则先清理) | Agent 归属(actor=Channel/成员) + ops_log/recipe_log 工具注入 + **四引擎真实 LLM**(omp/codex/dsh/opencode 全 COMPLETED) | 39;耗时 ~11 min |
103
+ | `NO_PROXY='127.0.0.1,localhost' node scripts/_dbg-multiharness-live-e2e.mjs` | 四引擎并行真实 Modbus:OMP-CLOSEDLOOP-OK / CODEX-WRITE-OK / DSH-DAQ-OK / OC-RECIPE-OK + PLC 回读断言 | 四标记全出现 |
104
+ | `NO_PROXY='127.0.0.1,localhost' node scripts/e2e-hitl-live.mjs` | HITL 实时审批链 | 全绿 |
105
+
106
+ **验收要点**:所有任务终态必须 COMPLETED。出现 CANCELED/FAILED 即回归(历史根因:codex 无 host 工具面+600s 停滞误杀;dsh 无 MCP client 靠交付兜底收口——已修,勿再引入)。交付物必须含各场景 OK 标记。`KEEP=1` 保留现场便于查证,查完清理。
107
+
108
+ ---
109
+
110
+ ## Phase 5 子系统专项
111
+
112
+ | 脚本 | 前置 | 覆盖 | 基线 |
113
+ |---|---|---|---|
114
+ | `npx tsx --tsconfig .nuxt/tsconfig.server.json scripts/e2e-aml.ts`(真实链路加 `--real`,首次数分钟) | 0.1 + 0.7 | AML:数据集→隔离拒绝→训练→门禁→排行榜→晋升/预测守卫→审计 | 全绿 |
115
+ | `AW_E2E_TOKEN=… node scripts/aml-ui-smoke.mjs` | 0.1 | AML UI 冒烟 | 全绿 |
116
+ | `NO_PROXY='127.0.0.1,localhost' node scripts/_dbg-recipe-e2e.mjs`(自起隔离实例 :3021) | 0.1 | Recipe 版本流/归因/Agent 更新与回滚/line_context | 24 |
117
+ | `SIM_BASE=http://127.0.0.1:4010 NO_PROXY='127.0.0.1,localhost' node scripts/experiment-castfilm-closedloop.mjs` | 0.4 | 挤出流延孪生闭环优化实验 | 收敛达标(J≈96%) |
118
+ | rag 专项(手工三项) | 0.5 | ① `/health` vector.ready=true;② kb_search 用语料词法重叠词命中>0(无重叠 0 命中是设计);③ kb_store 后可检索回 | 三项过 |
119
+
120
+ ---
121
+
122
+ ## Phase 6 TUI / CLI / 打包链路
123
+
124
+ | # | 动作 | 命令/基线 |
125
+ |---|---|---|
126
+ | 6.1 | TUI 无头 e2e(dev :3000) | `node scripts/tui-smoke.mjs --base http://127.0.0.1:3000`(生产时 `AW_TUI_EMAIL=admin@awshop.local AW_TUI_PASSWORD=admin123`) |
127
+ | 6.2 | 全局 `aw tui` 真实路径 | 全局包已装时:`node scripts/e2e-aw-tui-global.mjs --base http://127.0.0.1:3001` |
128
+ | 6.3 | CLI 面 | `aw doctor` / `aw status` / `aw config get <key>` 输出与文档一致;`aw plugin disable rag-bridge` → 1s 内路由+工具消失 → `enable` 恢复(热生效实测) |
129
+ | 6.4 | aw start 打包冒烟 | `AW_E2E_TOKEN=… NO_PROXY='127.0.0.1,localhost' node scripts/aw-start-smoke.mjs`(前置 0.1 + dev-plc-simulator :15040)基线 26 |
130
+
131
+ ---
132
+
133
+ ## Phase 7 浏览器目视验收(Puppeteer 截图逐页过目)
134
+
135
+ 覆盖页:登录/仪表盘/产线管理/数采列表+详情(趋势图在动)/数控/数字孪生(帧推进+无黑屏)/设置(分组渲染+折叠+来源徽标)/插件/运维日志 /logs/AML/AgentTeam。
136
+ 工具:`scripts/ui-screenshot.mjs`、`scripts/_dbg-audit-all-pages.mjs`(全页 console error 扫描=0)。截图存 `.e2e-shots/` 逐张目视;破版/白屏/控制台报错即红项。
137
+
138
+ ---
139
+
140
+ ## Phase 8 发布链路(仅当次有版本变更时执行)
141
+
142
+ 1. `npm run build` 通过;2. commit(pathspec 限定)+ push(`git -c http.proxy= push`);3. `npm publish --no-proxy --https-proxy=null --proxy=null`(本地 7890 会拦 PUT;CDN 传播 5–7 min,期间安装 404 属正常);4. `npm i -g agentworkshop@latest --no-proxy`;5. 全局 `aw start`(home 模式)健康门 + 抽样回归(P2 的 api-live + P3 的 protocol-matrix);6. 复核 npm 页面版本与 tarball 内容(`files` 白名单)。
143
+
144
+ ---
145
+
146
+ ## §8 排障速查(历史实锤,先查这里再动手)
147
+
148
+ | 症状 | 真相与处置 |
149
+ |---|---|
150
+ | 产线报「运行中」但数采不采、start 返回 CONFLICT | 重启后旧批次 LineRun 丢失不自动恢复采样(设计现状)→ 该产线 **stop→start** |
151
+ | produced 恒 0 | 数采受批次门控:无活动批次不采样是设计,非故障 |
152
+ | 部分节点 value=null 且 lastError 为空(静默不采) | 曾是网关 sweep 额度饿死(已修 isDue+游标+并发64);复现先看节点在表的位置与并发额度 |
153
+ | rag /health 超时 30s+,连带闭环 Stage E 全线超时 | rag 后端挂死 → rag 项目根 `node command/ragctl.js restart backend`;恢复后 ~170ms |
154
+ | kb_search 0 命中但系统正常 | 两阶段检索 stage1=BM25 词法;查询与语料无词法重叠时**有意** 0 结果;换语料词重试 |
155
+ | hnsw "Nothing found on disk" | 进程被杀时 embeddings_queue 未落盘(数据丢失)→ reindex force 重建;健康面应显示 vector.ready=false 预警 |
156
+ | LLM 任务 FAILED with 429 | zhipu 配额限流,当日 12:45 重置后重跑;勿改代码 |
157
+ | codex/dsh 终态 CANCELED 但交付物完整 | 已根修(codex 无条件 CODEX_HOME 种子+停滞 1800s;dsh 交付兜底收口)。复现即回归,查是否有新提交动过 agents/runtime |
158
+ | 工具调用报「未知工具」集中在插件重载窗口 | 插件热重载空窗(已修:注销延后);复现即回归 |
159
+ | agent-tools/invoke 404 或参数不识别 | body 键是 **args**(非 arguments);agentId 用 channel 成员**实例 id**(非模板 id) |
160
+ | `aw-start-smoke` 报「Agent dcw_control 下发 178」FAIL、文本是「工具桥不支持该协作工具: dcw_control」 | 该成员用的是**无自有工具面的 harness**(mock 等),REST 直调只会落到协作工具族,够不到工业工具族。`invokeHostTool` 的回退链是 `impl.dispatchHostTool` → `invokeAgentWorkspaceTool`,缺 `host-tool-bridge.dispatchHostTool` 这一跳(见 `manager.ts:2810` 附近)。真实引擎成员自带工具面,不受影响;要补需给回退链加 workspace 上下文,并统一 manual 模式的 HITL 语义 —— 未修,勿当回归 |
161
+ | api-live 持久化段被清 | 脚本预清理吞 `api-e2e-*` 前缀频道;夹具勿用该前缀 |
162
+ | 双绑定 15030 竞态 / 3002 全局包陷阱 / mini-slave 须回显事务 id | 协议模拟器纪律,见协议驱动记忆 |
163
+ | npm publish/install 被 7890 拦 | `--no-proxy --https-proxy=null --proxy=null`;git push 用 `-c http.proxy=` |
164
+ | dev 起服务 500 找不到 `D:\shared\*.mjs` | nitro 相对导入打包坑:须 `@/` 别名(勿用裸相对路径) |
165
+ | tsx 报类型/import 错 | 必须带 `--tsconfig .nuxt/tsconfig.server.json` |
166
+
167
+ ---
168
+
169
+ ## 执行指令模板(给 agent 下达时用)
170
+
171
+ - 全量:「按 docs/full-test-plan.md 执行 Phase 0–7 全量测试,产出 docs/test-report-<版本>.md」
172
+ - 冒烟:「按 docs/full-test-plan.md 执行冒烟档(§0 两档执行模式)」
173
+ - 单阶段:「按 docs/full-test-plan.md 只跑 Phase 4」
174
+ - 失败处置约定:阻断性失败(服务起不来/P0 环境缺)→ 停下修复后再继续;单脚本红 → 先按 §8 排障表定位,能修则修复并复跑该脚本+相邻脚本;不能修 → 报告标注 FAIL+根因假设,继续后续阶段。
@@ -0,0 +1,248 @@
1
+ # 多 Harness 适配架构指南(可移植版)
2
+
3
+ > 生成日期:2026-09-10 · 基准版本:AgentWorkShop 0.7.27(14 引擎全绿)
4
+ > 用途:供其他项目参照本文档实现「多 Agent Harness(执行引擎)适配」。只讲**架构思想**与**每个引擎的库依赖/集成方式**,不绑定本仓库业务。
5
+
6
+ ---
7
+
8
+ ## 0. 问题域与总原则
9
+
10
+ **问题域**:平台要把 N 个异构 AI Agent 执行引擎(CLI 工具 / SDK)当作可互换的「Agent 大脑」:同一套上层编排(任务分发、消息、调度、审批、记忆)驱动任意引擎,新增引擎时上层与前端零改动。
11
+
12
+ **七条核心原则**(全部是本系统实战沉淀,移植时建议原样保留):
13
+
14
+ 1. **单一契约**:所有引擎实现同一个接口 `AgentInterface`(run/supervise/steer/HITL/进程治理等)。上层(runtime/scheduler/API/前端)只依赖契约,永远不出现 `if (harness === 'codex')`。
15
+ 2. **单一事实源注册表**:一个 `HARNESS_REGISTRY` 常量表声明每个引擎的 id/label/描述/主页/**能力面**/工厂函数/**可用性探测声明**。前端下拉、可用性面板、执行前校验、模型目录全部从此派生,禁止第七处硬编码白名单。新增引擎 = 注册表加一项 + 实现一个类。
16
+ 3. **两种进程模型,两个基座**:
17
+ - **常驻会话型**(omp/codex/dsh/opencode/qwen/hermes/claude):每 Agent 一个长活子进程(或进程内 SDK 会话),lazy 启动、跨消息复用、dispose 时销毁;
18
+ - **一次性回合型**(gemini/copilot/cursor/crush/goose/pi):每回合 spawn 一个子进程,进程退出即回合结束,会话延续靠引擎自身的 session id + resume 参数。
19
+ 两个模型各有共享基类(`BaseAgentImpl` → 协议无关平台语义;`OneShotCliAgentImpl` → 一次性 CLI 家族),引擎差异全部收敛为子类/引擎 spec 的一张「映射表」。
20
+ 4. **能力如实声明,降级策略显式化**:注册表 `capabilities` 六元组(steer 同轮注入 / supervise lead 调度 / hitl 程序化审批 / terminal 终端镜像 / contextStats 上下文统计 / compact 主动压缩)必须反映引擎真实能力,**不虚报**。引擎不支持的,必须有明确的降级语义(如 steer 恒 `'deferred'` 走信箱;无 HITL 的走预授权白名单),不允许静默缺失。
21
+ 5. **工具注入统一化 + 环境变量携带身份**:平台侧的全部协作工具(任务/消息/记忆)与业务工具,通过统一的 host-tool 分发桥暴露给引擎。CLI 引擎的注入主路径是 **stdio MCP server 桥**:桥脚本被引擎当作本地 MCP server 拉起,工具调用经 HTTP 回程落到平台 API(agent token 鉴权)。关键设计:`AW_BASE_URL / AW_AGENT_ID / AW_AGENT_TOKEN` 注入**引擎进程的环境变量**,引擎拉起的 MCP 子进程自动继承 → **配置文件可全局共享,无需每 Agent 一份 HOME**。
22
+ 6. **错误即事件 / steer 诚实语义**:spawn 失败、非 0 退出、超时、协议错误都必须产出 `{kind:'error'}` 事件(错误码形如 `CODEX_EXIT_1` + stderr 尾部),绝不静默吞掉。`steer()` 只有真的注入了流式会话才返回 `'steer'`,否则返回 `'deferred'`(消息保持 pending,下一回合携带),保证消息不丢。
23
+ 7. **探测与拉起同源**:「引擎是否可用」的 PATH 探测和「真实 spawn」走同一个命令解析函数;执行前在所有入口(模板增改/克隆/实例换引擎/任务直发/lead 派发等,本系统共七处)统一强校验,未知引擎 400、未安装 409,任务不进「起跑后失败」路径。
24
+
25
+ ---
26
+
27
+ ## 1. 分层架构与模块地图
28
+
29
+ ```
30
+ 上层(harness 无关)
31
+ runtime(每 Agent 生命周期) · scheduler(lead 调度循环) · HITL API · 前端下拉/徽标
32
+ │ 只依赖
33
+ AgentInterface(统一契约)
34
+ │ 由
35
+ HARNESS_REGISTRY(单一事实源:capabilities/probe/create)
36
+ │ 装配
37
+ ┌──────────────────────────────┴───────────────────────────────┐
38
+ │ BaseAgentImpl(平台语义基类) │
39
+ │ · run() 消息分流:metadata['x-aw-task-kind']='assign'→workerTurn│
40
+ │ 否则有来源→peerTurn │
41
+ │ · supervise() 模板方法:快照→prompt→collectTurnEvents→JSON 解析 │
42
+ │ · contextPrefix(场景×身份×手册×名册)/ dispatchHostTool 直调面 │
43
+ └──────────────┬───────────────────────────────┬───────────────┘
44
+ │ │
45
+ 常驻会话型子类 OneShotCliAgentImpl(一次性 CLI 基座)
46
+ omp(RPC) codex(JSON-RPC) 引擎差异=一份 OneShotEngineSpec:
47
+ dsh/hermes(ACP) opencode(HTTP/SSE) resolveCommand/buildArgs/promptDelivery
48
+ qwen(旧版ACP) claude(SDK进程内) /engineEnv/mapLine/prepare/plainTextStdout…
49
+
50
+ ── 共享基础设施(全部引擎复用)──
51
+ line-spawn 受控子进程拉起:拒绝 shell 元字符;Windows .cmd shim 走
52
+ 字面量 'cmd.exe /d /s /c' 包装+逐参数校验;PATH+PATHEXT 解析
53
+ stdio-jsonrpc NDJSON JSON-RPC 2.0 客户端(响应/通知/服务端请求三分)
54
+ harness-process 子进程登记/强杀(win32 taskkill /T /F)/OS 存活校准
55
+ harness-env MCP 桥环境计算:AW_BASE_URL/AW_AGENT_ID/AW_AGENT_TOKEN
56
+ aw-mcp-bridge.mjs 零依赖 stdio MCP server → HTTP 回程(agent token 鉴权)
57
+ host-tool-bridge 全引擎唯一工具分发入口(协作工具族按角色过滤+插件工具)
58
+ prompt-builder 共享 prompt 组装(worker/peer/supervise/系统手册/JSON 提取)
59
+ hitl-registry HITL 中枢(globalThis 单例;kind 枚举=各引擎审批请求类型)
60
+ harness-availability 可用性探测(与拉起同源;30s 缓存;assertHarnessUsable)
61
+ harness-models 各引擎 provider/model 目录发现(5min 缓存)
62
+ ```
63
+
64
+ **host tools 工具面**(MCP 桥暴露给引擎的内容):AgentWorkspace 协作方法族(任务分发/上报/完成、信箱收发、记忆检索/沉淀、名册/队列观察、成员管理等 ~25 个)+ 业务/工业工具族 + 插件注册工具,按角色(lead/worker)过滤。引擎用原生工具调用方式消费,**平台不做任何文本解析**。
65
+
66
+ **HITL 链路**(引擎审批请求 → 人 → 回答):引擎侧审批请求(如 codex `requestApproval`、dsh/hermes `session/request_permission`、claude `canUseTool`、qwen `requestToolCallConfirmation`)→ 登记 hitl-registry(kind 枚举:`codex-approval / opencode-permission / dsh-permission / claude-permission / qwen-permission / hermes-permission / omp-dialog / dcw-approval`)→ 前端铃标 → 人经 API 应答 → respondHitl 传导回引擎 → 回合继续。**超时/取消一律 fail-closed(拒绝)**。
67
+
68
+ ---
69
+
70
+ ## 2. 十四个引擎一览
71
+
72
+ | id | 引擎 | 官方文档 | 集成面 | 进程模型 | 库依赖 |
73
+ |---|---|---|---|---|---|
74
+ | mock | 进程内模拟引擎 | —(内部) | 剧本驱动,无 LLM,联调/CI 用 | 进程内 | 无 |
75
+ | omp | oh-my-pi | https://github.com/acidsugarx/oh-my-pi | `omp --mode rpc` 自定义 RPC 协议 | 常驻子进程 | 全局 CLI `omp` |
76
+ | opencode | OpenCode | https://opencode.ai (server:https://opencode.ai/docs/server ) | `opencode serve --port` + HTTP API + 全局 SSE `/event` | 常驻子进程 | 全局 CLI `opencode` |
77
+ | codex | OpenAI Codex CLI | https://github.com/openai/codex (app-server 协议:`codex-rs/app-server/README.md`) | `codex app-server` NDJSON JSON-RPC v2(thread/start + turn/start) | 常驻子进程 | 全局 CLI `codex` |
78
+ | dsh | DeepSeek Harness | https://github.com/deepseek-ai/DeepSeek-Harness (ACP:`packages/acp/acp/README.md`) | `dsh --profile acp` 标准 ACP v1(session/new + session/prompt 单飞) | 常驻子进程 | 全局 CLI `dsh` |
79
+ | claude | Claude Agent SDK | https://code.claude.com/docs/en/agent-sdk/typescript | 进程内 SDK:`query()` + AsyncIterable 流式输入 | **进程内 SDK**(SDK 自管 claude 二进制) | **npm:`@anthropic-ai/claude-agent-sdk`**(动态 import,缺失时报 HARNESS_NOT_CONFIGURED 而非崩溃) |
80
+ | gemini | Gemini CLI | https://github.com/google-gemini/gemini-cli (headless:`docs/cli/headless.md`) | `gemini -p --output-format stream-json`(JSONL 帧 init/message/tool_use/result) | 一次性回合 | 全局 CLI `gemini` |
81
+ | copilot | GitHub Copilot CLI | https://docs.github.com/en/copilot/how-tos/copilot-cli (编程式:`automate-copilot-cli/run-cli-programmatically`) | `copilot -p --output-format json`(JSONL) | 一次性回合 | 全局 CLI `copilot` |
82
+ | cursor | Cursor CLI | https://cursor.com/docs/cli/headless | `cursor-agent -p --output-format stream-json --stream-partial-output`(帧与 Claude Code 同构) | 一次性回合 | 原生 CLI `cursor-agent` |
83
+ | crush | Charm Crush | https://github.com/charmbracelet/crush | `crush run -q`(v0.92 起无 JSON 格式 → 纯文本 stdout 一次性) | 一次性回合 | CLI `crush`(npm shim 可能损坏,可指包内 bin 直启) |
84
+ | goose | Block Goose | https://blockgoose.io (源码:https://github.com/aaif-goose/goose ,headless 教程在仓库 docs) | `goose run -t --output-format stream-json --name aw-<agentId> [--resume]` | 一次性回合 | 原生 CLI `goose` |
85
+ | qwen | Qwen Code | https://github.com/QwenLM/qwen-code (docs:https://qwenlm-qwen-code.mintlify.app/cli/overview ) | `qwen --experimental-acp`(**旧版 Zed ACP**:camelCase 方法、无 sessionId、单隐式会话) | 常驻子进程 | 全局 CLI `qwen` |
86
+ | pi | pi coding agent | https://github.com/badlogic/pi-mono | `pi -p --mode json`(JSONL:session/message_end/message_update/turn_end);prompt 经 **@临时文件** 投递(绕 Windows ~8K 命令行上限) | 一次性回合 | CLI `pi`(@mariozechner/pi-coding-agent) |
87
+ | hermes | Hermes Agent | https://github.com/NousResearch/hermes-agent | `hermes acp` 标准 ACP v1(与 dsh 同型,方法名集中一处便于版本漂移修改) | 常驻子进程 | CLI `hermes` |
88
+
89
+ 通用协议参考:**MCP** https://modelcontextprotocol.io · **ACP(Agent Client Protocol)** https://agentclientprotocol.com
90
+
91
+ > 选型口径(可复用):候选引擎必须满足「无头模式 + 结构化输出(JSON 事件流)+ MCP 客户端」三要素;能力覆盖密度(七能力面占几项)≥ 5/7 才值得接入。无结构化输出的引擎(如 Amazon Q CLI)宁可进观察名单也不做纯文本抓取——违背「错误即事件/usage 透出」底线。
92
+
93
+ ---
94
+
95
+ ## 3. 每引擎集成卡片(鉴权 · 工具注入 · 审批 · steer)
96
+
97
+ ### omp(默认推荐引擎)
98
+ - 协议:omp 自有 RPC(`--mode rpc`),每 Agent 一个子进程 lazy 启动;事件 `AgentSessionEvent → AgentEvent` 映射。
99
+ - 工具:平台工具经 `set_host_tools` **进程内直调**(不回程),是最早的直连模型。
100
+ - 审批:extension_ui 对话框 → HITL;steer:✅ 原生同轮注入;上下文:被动跟踪 + 平台 70% 阈值主动压缩(引擎原生 auto-compaction 摘要经 harvest 桥落库)。
101
+ - 鉴权:`omp models` 提供 provider 分组目录;自定义网关可用。
102
+
103
+ ### codex
104
+ - 协议:`codex app-server`(stdio NDJSON JSON-RPC v2)。`thread/start` 建会话、`turn/start` 驱动回合、`turn/steer` 同轮注入、`thread/compact/start` 主动压缩、`model/list` 拉模型目录。
105
+ - 工具:impl 装配 `config.toml` 的 `[mcp_servers.aw]` 指向 stdio 桥。
106
+ - 审批:`item/commandExecution|fileChange` 的 `requestApproval`(服务端→客户端请求)→ HITL(decision: accept/decline/cancel);审批策略 `approvalPolicy: untrusted|on-request|never`,默认 on-request。
107
+ - 鉴权/provider:config.toml 网关配置;`CODEX_HOME` 环境变量可隔离配置目录。
108
+
109
+ ### dsh
110
+ - 协议:标准 ACP v1(JSON-RPC over stdio):`initialize / session/new / session/prompt / session/cancel`;`session/prompt` 单飞(响应在回合终点返回 stopReason)。方法名集中在一个常量表,pre-1.0 协议漂移时只改一处。
111
+ - 工具:`session/new` 的 `mcpServers` 参数挂 stdio 桥(引擎给工具加 `mcp__aw__` 前缀)。
112
+ - 审批:`session/request_permission` → HITL(allow/reject/cancel,fail-closed);steer:❌ 恒 deferred。
113
+ - 鉴权/provider:`DEEPSEEK_BASE_URL` 等网关 env;模型目录=内置官方表 + 用户 settings.yaml 自定义网关轻解析。
114
+
115
+ ### opencode
116
+ - 协议:`opencode serve --port <空闲>` 子进程 + 官方 HTTP API(`prompt_async / abort / permissions / summarize`)+ 全局 SSE `/event`。port 用本地 net 探测空闲。
117
+ - 工具:运行时 `POST /mcp` 注册 stdio 桥。
118
+ - 审批:`permission.asked / question.asked` 事件 → HITL(once|always|reject);steer:✅ 回合运行中再投 prompt(引擎 queue admission),内容不丢。
119
+ - 上下文:`message.tokens` 被动跟踪,越阈值 `POST /session/{id}/summarize`;provider 目录走 `opencode models`(models.dev 生态,任意 OpenAI 兼容网关)。
120
+
121
+ ### claude(SDK 特例)
122
+ - 集成:npm 依赖 `@anthropic-ai/claude-agent-sdk`,**动态 import**(依赖缺失→回合报 HARNESS_NOT_CONFIGURED,注册表仍可列出)。每 Agent 一个常驻 SDK 会话,`query({ prompt: AsyncIterable, options })` 流式输入。
123
+ - steer:✅ 向流式生成器再 `yield` 一条 user 消息(七引擎中与 omp 并列的原生 steer)。
124
+ - 审批:`canUseTool(tool, input) => PermissionResult` → HITL(allow→`{behavior:'allow',updatedInput}`;deny→`{behavior:'deny',message}`);AW 桥工具经 `allowedTools: ['mcp__aw']` 预授权不走审批。
125
+ - 工具:`mcpServers.aw` = stdio 桥(工具清单动态 tools/list,插件热更自动传导);SDK 也支持进程内 SDK MCP server(`createSdkMcpServer`,零回程直调)作替代通道。
126
+ - 上下文:SDK 原生 auto-compact(观测 `compact_boundary`);usage 从 result(`total_cost_usd/usage/num_turns`)透出。
127
+ - 鉴权/provider:`config.apiKey → ANTHROPIC_AUTH_TOKEN`、`config.providerBaseUrl → ANTHROPIC_BASE_URL`(任意 Anthropic 兼容网关实测可用)。
128
+
129
+ ### gemini
130
+ - 进程:每回合 `gemini -p --output-format stream-json`;init 帧捕获 session_id → 下回合 `--resume <sid>`。
131
+ - 工具:**merge-only** 写 `<workspace>/.gemini/settings.json` 的 `mcpServers.aw`(trust=true,不动用户已有配置)+ `--allowed-mcp-server-names aw` 白名单;native 工具保持 `--approval-mode default`(无头下需确认的操作被引擎拒绝,fail-safe)。
132
+ - 坑:headless 需 `GEMINI_CLI_TRUST_WORKSPACE=true`;鉴权锁定 Google 面(GEMINI_API_KEY/OAuth),**无自定义网关 provider 面**。
133
+
134
+ ### copilot
135
+ - 进程:每回合 `copilot -p --output-format json`(prompt 经 stdin 管道)。
136
+ - 配置隔离:官方 `COPILOT_HOME` 指向 `.AgentWorkShop/harness-config/copilot/<agentId>/`(内种子 mcp-config.json 挂桥)——**唯一用官方 per-agent 目录隔离的引擎**。
137
+ - 授权:`--allow-tool aw` 白名单制(仅授权 AW 桥),native shell/write 默认不授权;`--no-ask-user` 默认开。
138
+ - 鉴权:token 链 `COPILOT_GITHUB_TOKEN > GH_TOKEN > GITHUB_TOKEN`(服务端可直接用 PAT);GitHub 账号锁定,无自定义网关。
139
+
140
+ ### cursor
141
+ - 进程:每回合 `cursor-agent -p --output-format stream-json --stream-partial-output`;帧与 Claude Code 同构(system/init、assistant、tool_call、result)。
142
+ - 安全档:**默认不带 `--force`** → 文件变更只提案不落地(与平台写控制哲学一致);per-agent 显式配置才放开。
143
+ - 工具:`--mcp-config` 指向共享 aw-mcp.json(无 agent 段:身份走 env 继承)。已知边界:print 模式 MCP 偶发不触发(版本相关)。鉴权 `CURSOR_API_KEY`,账号锁定。
144
+
145
+ ### crush
146
+ - 进程:每回合 `crush run`;**v0.92 移除了 `--format json`**(相对文档回归)→ 走基座 `plainTextStdout` 模式(stdout 纯文本按增量聚合)。
147
+ - 配置:`./.crushrc`(bash 方言)。文件缺失时整份生成(`mcp add aw` 桥 + `provider add zhipu --type openai-compat` + `model add`),**api_key 引用 `${AW_CRUSH_API_KEY}` 环境变量,凭据不落盘**;已有用户配置则不动。
148
+ - 鉴权:config.apiKey → 进程 env `AW_CRUSH_API_KEY`。run 模式无程序化审批。
149
+
150
+ ### goose
151
+ - 进程:每回合 `goose run --output-format stream-json -t <prompt> --name aw-<agentId> [--resume]`(prompt 必须 `-t`,位置参数被拒 exit 2)。
152
+ - 无头姿势 env:`GOOSE_MODE=auto`、`GOOSE_CONTEXT_STRATEGY=summarize`(引擎原生上下文自动摘要)、`GOOSE_MAX_TURNS`、`GOOSE_DISABLE_SESSION_NAMING=true`。
153
+ - 工具:aw 桥经 `--with-extension "<node> <bridge>"` 临时挂载(身份 env 随进程继承)。
154
+ - 鉴权/provider:`OPENAI_API_KEY` + `GOOSE_PROVIDER` + `OPENAI_HOST`(带 scheme)/`OPENAI_BASE_PATH` 拼接(OpenAI 兼容网关实测可用)。
155
+
156
+ ### qwen
157
+ - 协议:`qwen --experimental-acp`——内嵌**最老版 Zed ACP**(camelCase 方法名、无 sessionId、单隐式会话):`initialize / sendUserMessage{content[]} / cancelSendMessage`;`streamAssistantMessageChunk` 增量、`requestToolCallConfirmation` → HITL(`qwen-permission`)。`sendUserMessage` 的 JSON-RPC 响应在回合终点返回(与 dsh 单飞同型)。
158
+ - 工具:`~/.qwen/settings.json` merge-only 写 `mcpServers.aw`(trust=true)。
159
+ - 鉴权/provider:`selectedAuthType=openai` + `OPENAI_API_KEY / OPENAI_BASE_URL` 网关;**模型经 `OPENAI_MODEL` env**(acp 路径 `-m` 不生效)。教训:同族引擎(gemini fork)也要逐项探针,不能假设协议一致。
160
+
161
+ ### pi
162
+ - 进程:每回合 `pi -p --mode json`;**promptDelivery='argFile'**——prompt 写临时文件后以 `@<path>` 位置参数投递,规避 Windows cmd ~8K 命令行上限。
163
+ - 工具:pi 无内建 MCP → 零依赖扩展 `pi-aw-tools.mjs` 经 `-e` 加载;工具清单由回合前置钩子从 hostToolsForRole 写临时文件(`AW_PI_TOOLS_FILE` env 指路);工具 execute 走平台 HTTP 回程(身份 env 由 pi 进程继承到扩展)。**MCP 之外的第三种工具注入形态:引擎原生扩展机制。**
164
+ - 鉴权/provider:`--provider/--model` + `~/.pi/agent/models.json` 自定义 provider(anthropic-messages 网关实测可用);`config.apiKey → --api-key` 透传。
165
+
166
+ ### hermes
167
+ - 协议:`hermes acp` 标准 ACP v1,与 dsh 同型实现(session/new + session/prompt 单飞)。
168
+ - 审批:`session/request_permission` → HITL(`hermes-permission`,fail-closed)。
169
+ - 工具:hermes 自身 MCP 体系(`hermes mcp add aw ...` 用户级配置一次)。
170
+ - 鉴权/provider:模型面来自 hermes 自身 config.yaml(`hermes model` 交互配置);`config.apiKey → GLM_API_KEY` env(zai provider 接 GLM)、`config.provider/model → HERMES_PROVIDER/HERMES_MODEL` env。
171
+
172
+ ### mock
173
+ - 进程内剧本引擎:无 LLM、恒可用(`probe: {inprocess:true}`)、steer=true 其余能力按需。用途:联调/CI/e2e 在无任何外部 CLI 与凭据的机器上全链路跑通平台语义。**移植时强烈建议先做 mock 再接真引擎。**
174
+
175
+ ---
176
+
177
+ ## 4. 能力矩阵(注册表 capabilities 实际声明值)
178
+
179
+ | 引擎 | steer 同轮 | supervise 调度 | hitl 审批 | terminal | contextStats | compact |
180
+ |---|---|---|---|---|---|---|
181
+ | mock | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
182
+ | omp | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
183
+ | opencode | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ |
184
+ | codex | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ |
185
+ | dsh | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ |
186
+ | claude | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ |
187
+ | gemini | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ |
188
+ | copilot | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
189
+ | cursor | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
190
+ | crush | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ |
191
+ | goose | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ |
192
+ | qwen | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
193
+ | pi | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ |
194
+ | hermes | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ |
195
+
196
+ - `supervise`(lead 调度回合)是平台侧 prompt 驱动的,所有引擎都能做——所以全 ✅;它不属于引擎原生能力。
197
+ - **无 HITL 引擎的安全姿态**(重要设计):AW 桥工具是平台可信面、显式白名单放行;引擎 native 写/执行工具保持各引擎**最保守档**(gemini `--approval-mode default`、copilot 仅 `--allow-tool aw`、cursor 默认无 `--force`、goose headless fail-safe)。高危操作在这些引擎上**默认不发生**,而不是静默放行。
198
+
199
+ ---
200
+
201
+ ## 5. 新增一个引擎的接入清单(Step-by-step)
202
+
203
+ 1. **调研探针先行**:写一次性探针脚本(spawn → 首个结构化事件 → 退出码语义),确认:无头参数、JSONL 帧形、会话延续标志、MCP 配置定位、鉴权 env 面、provider 网关面、审批事件存在性。**产出差异表后再写 impl**(勿信文档,文档会回归——crush 删 JSON 格式是实例)。
204
+ 2. **注册表条目**:`HARNESS_REGISTRY` 加一项——id/label/description/homepage/**capabilities(如实初稿,探针后修正)**/`create`(工厂:new Impl({...config, agentId, name, role, channelId, token}))/**probe**(进程内引擎 `{inprocess:true}`;进程型 `{command: c => 覆盖链}`,与真实 spawn 同源)。
205
+ 3. **选择基座**:常驻会话型 → 继承 `BaseAgentImpl`,实现 `workerTurn/peerTurn/collectTurnEvents`(+ steer/getContextStats/respondHitl 按能力覆盖);一次性 CLI 型 → 在 `OneShotCliAgentImpl` 上写一份 `OneShotEngineSpec`(resolveCommand/buildArgs/promptDelivery/engineEnv/mapLine/prepare/…),通常 80~250 行。
206
+ ⚠️ 基类构造参数必须显式 `super(config, spec)` 透传(空子类隐式构造器会丢 spec → 静默失败)。
207
+ 4. **工具注入**:优先 stdio MCP 桥(merge-only 写引擎配置 or `--mcp-config` 旗标 or 运行时注册 API);引擎无 MCP → 仿 pi 用引擎原生扩展机制;SDK 型 → SDK MCP server。**身份 env(AW_AGENT_ID/AW_AGENT_TOKEN/AW_BASE_URL)必须注入引擎进程**,让桥子进程继承。
208
+ 5. **审批接入**(若有):引擎审批请求 → hitl-registry 注册(新增 kind 进枚举)→ 实现 `respondHitl`(outcome 映射回引擎协议;超时/取消 fail-closed)。
209
+ 6. **平台面派生项**:运行时设置加 `harness.<id>_command`(命令覆盖链最后一环);模型目录(静态表 or 引擎子进程发现);i18n 词条(引擎名/未安装态,双语);文档页(安装/鉴权/能力矩阵/已知限制四节)。
210
+ 7. **测试验收**:
211
+ - 单测:假 CLI(node -e 输出预制 JSONL)断言事件映射/退出码→错误事件/abort 杀树/会话 id 捕获/resume 参数/HITL 超时 deny;
212
+ - 引擎 e2e 双场景:A=工具闭环(引擎经桥调 report_progress→complete_task→落库);B=HITL(注册→铃标→respond→回合继续至 done);真实子进程+真实 LLM,**凭据缺失自动 SKIP(有因跳过≠失败)**;
213
+ - 可用性三态断言(未知 400 / 未装 409 / 装了 resolvedPath);
214
+ - 前端:下拉出现新引擎、未安装灰化、设置页命令项探测联动;
215
+ - 回归门:既有引擎 e2e + runtime/liveness 单测全绿。
216
+
217
+ ---
218
+
219
+ ## 6. 工程纪律与已知坑(移植时省命)
220
+
221
+ - **Windows**:npm 全局 CLI 是 `.cmd` shim,CreateProcess 不能直启 → 固定 `cmd.exe /d /s /c` 包装 + 逐参数严格校验(拒绝引号/控制字符),参数面保持结构化。包装器必须是字面量,绝不由环境变量决定。npm shim 本身可能损坏(crush 实例)→ 命令设置可指向包内真实 bin。
222
+ - **命令行长度**:Windows cmd ~8K 上限 → 长 prompt 用 stdin 投递(默认)或 argFile(`@file`,pi 模式)。
223
+ - **stdin EOF**:`promptDelivery=arg` 时基座仍须关闭 stdin,否则等 stdin 的引擎挂起(crush 实例)。
224
+ - **同族≠同协议**:gemini/qwen 同 fork 但事件协议完全不同(stream-json vs 旧版 zed ACP);每个引擎独立探针。
225
+ - **配置文件写入一律 merge-only**:只增不改,用户已有配置解析失败时**保留原文件不动**并告警;凭据永远走 env 引用不落盘。
226
+ - **多 Agent 并发**:环境变量携带身份使引擎配置可全局共享;per-agent 会话隔离各用引擎机制(goose `--name`、copilot `COPILOT_HOME`、codex `CODEX_HOME`、dsh/omp 进程独占);同一 Agent 同时只允许一个回合(回合互斥位)。
227
+ - **进程治理**:所有子进程登记注册表;abort = 杀进程树(win32 `taskkill /T /F`);OS 存活周期校准(休眠/强杀后 exit 事件可能不达父进程)。
228
+ - **schema 漂移防护**:解析器对未知事件/未知 type **忽略并计数上报**(不崩);错误消息附 stderr 尾部;引擎版本 pin 建议。
229
+ - **不许静默**:能力缺失有显式降级语义;执行前强校验给「人话」报错;错误即事件。
230
+
231
+ ---
232
+
233
+ ## 7. 本仓库对应文件索引(供交叉查阅)
234
+
235
+ | 职责 | 文件 |
236
+ |---|---|
237
+ | 注册表 + capabilities | `server/services/workshop/agents/registry.ts` |
238
+ | 统一契约 | `server/services/workshop/agents/agent-interface.ts` |
239
+ | 平台语义基类 | `server/services/workshop/agents/base-agent.ts` |
240
+ | 一次性 CLI 基座 | `server/services/workshop/agents/adapters/one-shot-cli-agent.ts` |
241
+ | 受控 spawn | `server/services/workshop/agents/adapters/line-spawn.ts` |
242
+ | JSON-RPC 基座 | `server/services/workshop/agents/adapters/stdio-jsonrpc.ts` |
243
+ | 各引擎 impl | 同目录 `{omp,codex,dsh,opencode,claude,gemini,qwen,copilot,cursor,crush,goose,pi,hermes,mock}-agent.ts` |
244
+ | MCP 回程桥 | `server/harness/aw-mcp-bridge.mjs`(零依赖)· pi 扩展 `server/harness/pi-aw-tools.mjs` |
245
+ | 工具分发/权限/审批 | `host-tool-bridge.ts` · `tool-approvals.ts` · `hitl-registry.ts` |
246
+ | 环境注入/进程治理/探测/模型目录 | `harness-env.ts` · `harness-process.ts` · `harness-availability.ts` · `harness-models.ts` |
247
+ | prompt 组装 | `prompt-builder.ts` |
248
+ | e2e | `scripts/e2e-multi-harness.ts [engine]`(双场景,401 自动 SKIP) |