agentworkshop 0.7.33 → 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 (945) 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 +1568 -1043
  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 -191
  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 -300
  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/base-agent.ts +9 -0
  435. package/server/services/workshop/agents/codex-agent.ts +743 -729
  436. package/server/services/workshop/agents/dsh-agent.ts +4 -7
  437. package/server/services/workshop/agents/opencode-agent.ts +5 -7
  438. package/server/services/workshop/aml/aml.repo.ts +18 -0
  439. package/server/services/workshop/aml/dataset-builder.ts +4 -0
  440. package/server/services/workshop/aml/entity.ts +365 -0
  441. package/server/services/workshop/aml/env-manager.ts +242 -0
  442. package/server/services/workshop/aml/job-orchestrator.ts +4 -15
  443. package/server/services/workshop/aml/model-registry.ts +6 -0
  444. package/server/services/workshop/aml/python-runtime.ts +396 -62
  445. package/server/services/workshop/aml/runtime.ts +95 -4
  446. package/server/services/workshop/daq/bus/mqtt.adapter.ts +3 -1
  447. package/server/services/workshop/daq/daq-controller.ts +95 -47
  448. package/server/services/workshop/daq/daq-node.repo.ts +0 -10
  449. package/server/services/workshop/daq/daq-runtime.ts +0 -5
  450. package/server/services/workshop/json-store.mjs +35 -2
  451. package/server/services/workshop/plugins/host.mjs +18 -12
  452. package/server/services/workshop/runtime/agent-runtime.ts +32 -3
  453. package/server/services/workshop/runtime/manager.ts +28 -1
  454. package/server/services/workshop/runtime/scheduler-loop.ts +10 -1
  455. package/server/services/workshop/settings.ts +2 -0
  456. package/shared/config/home.mjs +58 -0
  457. package/shared/config/schema.json +2 -1
  458. package/shared/lru.mjs +4 -1
  459. package/.output/public/_nuxt/-6OnbLFb.js +0 -1
  460. package/.output/public/_nuxt/-nb2uqVg.js +0 -1
  461. package/.output/public/_nuxt/4bHdIqEg.js +0 -18
  462. package/.output/public/_nuxt/6PZPfFcO.js +0 -17
  463. package/.output/public/_nuxt/BBBtwOpo.js +0 -9
  464. package/.output/public/_nuxt/BBwMH_hG.js +0 -7
  465. package/.output/public/_nuxt/BDUjyaF4.js +0 -42
  466. package/.output/public/_nuxt/BNXfwXpE.js +0 -1
  467. package/.output/public/_nuxt/BN_PdN3J.js +0 -24
  468. package/.output/public/_nuxt/BSSUlJnx2.js +0 -1
  469. package/.output/public/_nuxt/BWSE6hR6.js +0 -1
  470. package/.output/public/_nuxt/BZGNTgTQ2.js +0 -1
  471. package/.output/public/_nuxt/BZv4RFYN.js +0 -1
  472. package/.output/public/_nuxt/BcmbLh2z2.js +0 -1
  473. package/.output/public/_nuxt/BfGc7TJp.js +0 -1
  474. package/.output/public/_nuxt/BgTB6h_q.js +0 -2
  475. package/.output/public/_nuxt/BkLJA9J5.js +0 -1
  476. package/.output/public/_nuxt/Bp5luxkg2.js +0 -1
  477. package/.output/public/_nuxt/BuCHayqN.js +0 -1
  478. package/.output/public/_nuxt/BuvcLKh1.js +0 -19
  479. package/.output/public/_nuxt/C3tCneTM.js +0 -1
  480. package/.output/public/_nuxt/C77oC8yC2.js +0 -7
  481. package/.output/public/_nuxt/C9f8QMp12.js +0 -1
  482. package/.output/public/_nuxt/CKfhtOt7.js +0 -13
  483. package/.output/public/_nuxt/CQvmN-Mi.js +0 -1
  484. package/.output/public/_nuxt/CUDrOuW7.js +0 -1
  485. package/.output/public/_nuxt/CZcC-gpk.js +0 -1
  486. package/.output/public/_nuxt/CbzsPO5H.js +0 -1
  487. package/.output/public/_nuxt/CdSOrh2c.js +0 -1
  488. package/.output/public/_nuxt/Cgx818r-.js +0 -1
  489. package/.output/public/_nuxt/Cjm7VogC.js +0 -1
  490. package/.output/public/_nuxt/Cm5mDxzH.js +0 -1
  491. package/.output/public/_nuxt/CmHzfVc5.js +0 -3
  492. package/.output/public/_nuxt/Cn3J3NXR.js +0 -23
  493. package/.output/public/_nuxt/Cno6kYiO2.js +0 -1
  494. package/.output/public/_nuxt/Cp6z0RN7.js +0 -1
  495. package/.output/public/_nuxt/CwqIxJGj.js +0 -2
  496. package/.output/public/_nuxt/D-Ca4BGY.js +0 -70
  497. package/.output/public/_nuxt/D0fhp-Ga.js +0 -75
  498. package/.output/public/_nuxt/D1z7i2UP.js +0 -31
  499. package/.output/public/_nuxt/DIaTPH1M.js +0 -1
  500. package/.output/public/_nuxt/DTYBfjRY.js +0 -1
  501. package/.output/public/_nuxt/DXRZPxGs.js +0 -1
  502. package/.output/public/_nuxt/DZzGarBE2.js +0 -13
  503. package/.output/public/_nuxt/DaMCzQhv.js +0 -1
  504. package/.output/public/_nuxt/DoLasgPj2.js +0 -1
  505. package/.output/public/_nuxt/DpojD719.js +0 -1
  506. package/.output/public/_nuxt/DsVcWfyR.js +0 -1
  507. package/.output/public/_nuxt/DtBu71ev.js +0 -32
  508. package/.output/public/_nuxt/Dy-mxvXY2.js +0 -1
  509. package/.output/public/_nuxt/DzuC31-i.js +0 -2
  510. package/.output/public/_nuxt/FQri3dV3.js +0 -1
  511. package/.output/public/_nuxt/ORt9oDIy2.js +0 -1
  512. package/.output/public/_nuxt/TownView.CtskuMXS.css +0 -1
  513. package/.output/public/_nuxt/VLI2Zy4t.js +0 -5
  514. package/.output/public/_nuxt/_id_.MbzdFygI.css +0 -1
  515. package/.output/public/_nuxt/_id_.hRYo-EAB.css +0 -1
  516. package/.output/public/_nuxt/_wsId_.gXMEOYgX.css +0 -1
  517. package/.output/public/_nuxt/aml.WU_bh87J.css +0 -1
  518. package/.output/public/_nuxt/arUY5dyq2.js +0 -4
  519. package/.output/public/_nuxt/builds/meta/291ef3e6-fa6a-4dee-8f46-05da1aeab815.json +0 -1
  520. package/.output/public/_nuxt/daq.Bb6l44-O.css +0 -1
  521. package/.output/public/_nuxt/dcw.rXH2fc2Z.css +0 -1
  522. package/.output/public/_nuxt/default.jNT73_hq.css +0 -1
  523. package/.output/public/_nuxt/ekuGmQ7R.js +0 -1
  524. package/.output/public/_nuxt/entry.jFrFAWuA.css +0 -1
  525. package/.output/public/_nuxt/logs.DMOM-iHe.css +0 -1
  526. package/.output/public/_nuxt/niDwBOZW.js +0 -3
  527. package/.output/public/_nuxt/pMoIO6rr.js +0 -14
  528. package/.output/public/_nuxt/pages.Cc8GX9T1.css +0 -1
  529. package/.output/public/_nuxt/plugins.wIPyfPn-.css +0 -1
  530. package/.output/public/_nuxt/rqZ-1SoP.js +0 -2
  531. package/.output/public/_nuxt/settings.BCm4NZIc.css +0 -1
  532. package/.output/public/_nuxt/town.C_DsNW0J.css +0 -1
  533. package/.output/public/_nuxt/users.DuAt_Zwf.css +0 -1
  534. package/.output/public/_nuxt/vJ4FPb-_.js +0 -1
  535. package/.output/public/_nuxt/workshop.BJg84pOK.css +0 -1
  536. package/.output/server/chunks/build/aml-uBNIppIf.mjs +0 -508
  537. package/.output/server/chunks/build/aml-uBNIppIf.mjs.map +0 -1
  538. package/.output/server/chunks/build/daq-BvihjQyW.mjs.map +0 -1
  539. package/.output/server/chunks/build/pages-C-6BRtv8.mjs.map +0 -1
  540. package/scripts/_audit/.tmp/audit-data/dcws.json +0 -28
  541. package/scripts/_audit/.tmp/dcw-writes.json +0 -15650
  542. package/scripts/_audit/.tmp/dcws.json +0 -9033
  543. package/scripts/_audit/.tmp/pollution-backup/dcw-rollback.polluted.json +0 -470006
  544. package/scripts/_audit/.tmp/pollution-backup/dcws.polluted.json +0 -9085
  545. package/scripts/_audit/.tmp/probe-cwd.txt +0 -1
  546. package/scripts/_audit/awhome/commands/README.md +0 -3
  547. package/scripts/_audit/awhome/commands/hello.mjs +0 -12
  548. package/scripts/_audit/diag-cwd.ts +0 -20
  549. package/scripts/_audit/diag-cwd2.ts +0 -19
  550. package/scripts/_audit/hello.mjs +0 -12
  551. package/scripts/_audit/ndjson-partial-line-repro.mjs +0 -77
  552. package/scripts/_audit/opencode-await-ternary-repro.mjs +0 -20
  553. package/scripts/_audit/part-frag.txt +0 -84
  554. package/scripts/_audit/part-head.txt +0 -45
  555. package/scripts/_audit/probe-child.mjs +0 -17
  556. package/scripts/_audit/probe-envelope.mjs +0 -49
  557. package/scripts/_audit/probe-packlist.mjs +0 -67
  558. package/scripts/_audit/probe-routes.mjs +0 -47
  559. package/scripts/_audit/probe-routes2.mjs +0 -38
  560. package/scripts/_audit/probe.ts +0 -9
  561. package/scripts/_audit/probe2.ts +0 -6
  562. package/scripts/_audit/probe3.ts +0 -3
  563. package/scripts/_audit/probe4.ts +0 -3
  564. package/scripts/_audit/proj/.AgentWorkShop/commands/echoargs.mjs +0 -13
  565. package/scripts/_audit/proj/config.yml +0 -1
  566. package/scripts/_audit/run.mjs +0 -30
  567. package/scripts/_audit/tsconfig.probe.json +0 -24
  568. package/scripts/_audit/typecheck-out.txt +0 -466
  569. package/scripts/_daq-realtime-probe.mjs +0 -68
  570. package/scripts/_daq-warn-probe.mjs +0 -50
  571. package/scripts/_dbg-acc-1-setup.mjs +0 -57
  572. package/scripts/_dbg-acc-2-diag.mjs +0 -14
  573. package/scripts/_dbg-acc-2-intervals.mjs +0 -81
  574. package/scripts/_dbg-acc-3-daq.mjs +0 -48
  575. package/scripts/_dbg-acc-4-team.mjs +0 -92
  576. package/scripts/_dbg-acc-5-visual.mjs +0 -63
  577. package/scripts/_dbg-acc-5b-ws-town.mjs +0 -18
  578. package/scripts/_dbg-acc-5c-town.mjs +0 -12
  579. package/scripts/_dbg-acc-6-i18n.mjs +0 -19
  580. package/scripts/_dbg-agent-tools-audit.mjs +0 -154
  581. package/scripts/_dbg-agent-workflow-audit.mjs +0 -177
  582. package/scripts/_dbg-agents-dropdown-shot.py +0 -33
  583. package/scripts/_dbg-anim-verify.mjs +0 -81
  584. package/scripts/_dbg-app-shot.mjs +0 -48
  585. package/scripts/_dbg-autoframe.mjs +0 -103
  586. package/scripts/_dbg-availability-probe.ts +0 -11
  587. package/scripts/_dbg-beacon-final.mjs +0 -181
  588. package/scripts/_dbg-bind-bidi-e2e.mjs +0 -239
  589. package/scripts/_dbg-callout-near.mjs +0 -108
  590. package/scripts/_dbg-catalog-smoke.ts +0 -20
  591. package/scripts/_dbg-cf-line-shot.mjs +0 -18
  592. package/scripts/_dbg-chan-focus.mjs +0 -49
  593. package/scripts/_dbg-channel-plugin-ui.mjs +0 -94
  594. package/scripts/_dbg-cleanup.mjs +0 -31
  595. package/scripts/_dbg-closedloop-ui-shot.mjs +0 -61
  596. package/scripts/_dbg-codex-handshake.ts +0 -30
  597. package/scripts/_dbg-codex-probe.mjs +0 -58
  598. package/scripts/_dbg-codex-sandbox.ts +0 -58
  599. package/scripts/_dbg-codex-turn.ts +0 -65
  600. package/scripts/_dbg-collab-scenario-e2e.mjs +0 -185
  601. package/scripts/_dbg-config-smoke.ts +0 -28
  602. package/scripts/_dbg-console-audit.mjs +0 -61
  603. package/scripts/_dbg-console-probe.mjs +0 -23
  604. package/scripts/_dbg-context-inject-audit.mjs +0 -231
  605. package/scripts/_dbg-cpu-profile.mjs +0 -53
  606. package/scripts/_dbg-crash-recovery.mjs +0 -143
  607. package/scripts/_dbg-crop-shot.mjs +0 -16
  608. package/scripts/_dbg-cross-channel-e2e.mjs +0 -157
  609. package/scripts/_dbg-cross-team-visibility-e2e.mjs +0 -129
  610. package/scripts/_dbg-crush-probe.sh +0 -21
  611. package/scripts/_dbg-crush-spawn-probe.ts +0 -22
  612. package/scripts/_dbg-daq-acc-probe.mjs +0 -24
  613. package/scripts/_dbg-daq-attrib.mjs +0 -34
  614. package/scripts/_dbg-daq-bind-audit.mjs +0 -119
  615. package/scripts/_dbg-daq-cadence.mjs +0 -104
  616. package/scripts/_dbg-daq-debug.mjs +0 -22
  617. package/scripts/_dbg-daq-diag.mjs +0 -33
  618. package/scripts/_dbg-daq-e2e.mjs +0 -171
  619. package/scripts/_dbg-daq-film.mjs +0 -136
  620. package/scripts/_dbg-daq-filter-e2e.mjs +0 -109
  621. package/scripts/_dbg-daq-filter-e2e2.mjs +0 -62
  622. package/scripts/_dbg-daq-final-regression.mjs +0 -78
  623. package/scripts/_dbg-daq-frame-alarm.mjs +0 -49
  624. package/scripts/_dbg-daq-frame-ui.mjs +0 -62
  625. package/scripts/_dbg-daq-frame-ws.mjs +0 -72
  626. package/scripts/_dbg-daq-full-check.mjs +0 -179
  627. package/scripts/_dbg-daq-line-note-verify.mjs +0 -61
  628. package/scripts/_dbg-daq-linebanner-audit.mjs +0 -107
  629. package/scripts/_dbg-daq-pages-shot.mjs +0 -37
  630. package/scripts/_dbg-daq-perf.mjs +0 -61
  631. package/scripts/_dbg-daq-probe.mjs +0 -27
  632. package/scripts/_dbg-daq-recipe-e2e.mjs +0 -30
  633. package/scripts/_dbg-daq-redesign-shot.mjs +0 -88
  634. package/scripts/_dbg-daq-rows-probe.mjs +0 -26
  635. package/scripts/_dbg-daq-rowstate-e2e.mjs +0 -152
  636. package/scripts/_dbg-daq-rowstate-shot.mjs +0 -45
  637. package/scripts/_dbg-daq-rowstate-shot2.mjs +0 -38
  638. package/scripts/_dbg-daq-tpl.mjs +0 -144
  639. package/scripts/_dbg-dash-console-check.mjs +0 -49
  640. package/scripts/_dbg-dash-deep-probe.mjs +0 -61
  641. package/scripts/_dbg-dash-hitpoint.mjs +0 -44
  642. package/scripts/_dbg-dash-live-shot.mjs +0 -36
  643. package/scripts/_dbg-dash-shot.mjs +0 -21
  644. package/scripts/_dbg-dashboard-shot.mjs +0 -35
  645. package/scripts/_dbg-dcw-audit.mjs +0 -126
  646. package/scripts/_dbg-dcw-card-e2e.mjs +0 -108
  647. package/scripts/_dbg-dcw-channel-ui.mjs +0 -144
  648. package/scripts/_dbg-dcw-examples.mjs +0 -81
  649. package/scripts/_dbg-dcw-light-shot.mjs +0 -19
  650. package/scripts/_dbg-dcw-line-audit.mjs +0 -107
  651. package/scripts/_dbg-dcw-pause-tpl-audit.mjs +0 -161
  652. package/scripts/_dbg-dcw-pause-ui.mjs +0 -175
  653. package/scripts/_dbg-dcw-read-toolface.ts +0 -13
  654. package/scripts/_dbg-dcw-read-ui.mjs +0 -74
  655. package/scripts/_dbg-dcw-scene.mjs +0 -72
  656. package/scripts/_dbg-dcw-shot2.mjs +0 -14
  657. package/scripts/_dbg-dcw-twin-e2e.mjs +0 -192
  658. package/scripts/_dbg-diag-mock-loop.mjs +0 -89
  659. package/scripts/_dbg-diag-watch.mjs +0 -95
  660. package/scripts/_dbg-docs-site-shot.mjs +0 -32
  661. package/scripts/_dbg-dsh-probe.mjs +0 -31
  662. package/scripts/_dbg-dt-interact.mjs +0 -193
  663. package/scripts/_dbg-error-probe.mjs +0 -54
  664. package/scripts/_dbg-filter-light-verify.mjs +0 -54
  665. package/scripts/_dbg-final-acceptance-2.mjs +0 -72
  666. package/scripts/_dbg-final-acceptance.mjs +0 -192
  667. package/scripts/_dbg-final-agent-e2e.mjs +0 -151
  668. package/scripts/_dbg-final-features.mjs +0 -155
  669. package/scripts/_dbg-final-fixups.mjs +0 -62
  670. package/scripts/_dbg-final-full-e2e.mjs +0 -218
  671. package/scripts/_dbg-final-line-e2e.mjs +0 -173
  672. package/scripts/_dbg-final-shots.mjs +0 -32
  673. package/scripts/_dbg-final-t6-hitl.mjs +0 -38
  674. package/scripts/_dbg-final-visual.mjs +0 -29
  675. package/scripts/_dbg-fix-unused-imports.py +0 -41
  676. package/scripts/_dbg-focus-range.mjs +0 -115
  677. package/scripts/_dbg-fresh-scene-e2e.mjs +0 -125
  678. package/scripts/_dbg-fullchain-e2e.mjs +0 -178
  679. package/scripts/_dbg-gate-debug.mjs +0 -37
  680. package/scripts/_dbg-gif-encode.mjs +0 -111
  681. package/scripts/_dbg-gizmo.mjs +0 -95
  682. package/scripts/_dbg-glass-probe.mjs +0 -57
  683. package/scripts/_dbg-glass-shot.mjs +0 -50
  684. package/scripts/_dbg-glass-sweep.mjs +0 -25
  685. package/scripts/_dbg-glb-probe.mjs +0 -43
  686. package/scripts/_dbg-goose-probe.mjs +0 -33
  687. package/scripts/_dbg-goose-probe.sh +0 -10
  688. package/scripts/_dbg-hardening-probe.mjs +0 -90
  689. package/scripts/_dbg-harness-ui-dbg.py +0 -49
  690. package/scripts/_dbg-harness-ui-shot.py +0 -109
  691. package/scripts/_dbg-hero-btn-probe.mjs +0 -21
  692. package/scripts/_dbg-hidden-check.mjs +0 -21
  693. package/scripts/_dbg-hmi-audit.mjs +0 -164
  694. package/scripts/_dbg-home-repro.mjs +0 -24
  695. package/scripts/_dbg-home-stack.mjs +0 -13
  696. package/scripts/_dbg-host.mjs +0 -16
  697. package/scripts/_dbg-huashu-survey.mjs +0 -31
  698. package/scripts/_dbg-huashu-survey2.mjs +0 -35
  699. package/scripts/_dbg-huashu-verify.mjs +0 -25
  700. package/scripts/_dbg-huashu-verify2.mjs +0 -26
  701. package/scripts/_dbg-hydration-detail.mjs +0 -18
  702. package/scripts/_dbg-i18n-debug.mjs +0 -27
  703. package/scripts/_dbg-i18n-debug2.mjs +0 -26
  704. package/scripts/_dbg-i18n-final.mjs +0 -42
  705. package/scripts/_dbg-i18n-scan.mjs +0 -38
  706. package/scripts/_dbg-infra-lifecycle.mjs +0 -44
  707. package/scripts/_dbg-interval-config.mjs +0 -156
  708. package/scripts/_dbg-interval-scenario.mjs +0 -126
  709. package/scripts/_dbg-kicker-check.mjs +0 -11
  710. package/scripts/_dbg-line-aura-shots.mjs +0 -54
  711. package/scripts/_dbg-line-control-e2e.mjs +0 -120
  712. package/scripts/_dbg-line-gate-audit.mjs +0 -108
  713. package/scripts/_dbg-line-live-e2e.mjs +0 -144
  714. package/scripts/_dbg-line-repo-test.ts +0 -10
  715. package/scripts/_dbg-line-scenario-e2e.mjs +0 -256
  716. package/scripts/_dbg-line-spawn.ts +0 -31
  717. package/scripts/_dbg-live-engine-probe.mjs +0 -80
  718. package/scripts/_dbg-login-debug.py +0 -23
  719. package/scripts/_dbg-login-e2e.mjs +0 -26
  720. package/scripts/_dbg-logs-ui-e2e.py +0 -126
  721. package/scripts/_dbg-mcp-bridge-probe.mjs +0 -147
  722. package/scripts/_dbg-modbus-latency.mjs +0 -22
  723. package/scripts/_dbg-mqtt-chain-e2e.mjs +0 -90
  724. package/scripts/_dbg-mqtt-publisher.mjs +0 -17
  725. package/scripts/_dbg-nav-rpg.mjs +0 -84
  726. package/scripts/_dbg-nav-shot.mjs +0 -28
  727. package/scripts/_dbg-nav.mjs +0 -27
  728. package/scripts/_dbg-oneshot-impl-probe.ts +0 -67
  729. package/scripts/_dbg-opencode-sse.mjs +0 -101
  730. package/scripts/_dbg-opencode-start.ts +0 -57
  731. package/scripts/_dbg-opslog-e2e.mjs +0 -121
  732. package/scripts/_dbg-opslog-shots.mjs +0 -62
  733. package/scripts/_dbg-optimization-e2e.mjs +0 -94
  734. package/scripts/_dbg-orbit.mjs +0 -58
  735. package/scripts/_dbg-overview-probe.sh +0 -31
  736. package/scripts/_dbg-panesplitter-fix-check.mjs +0 -62
  737. package/scripts/_dbg-perms-visual.mjs +0 -36
  738. package/scripts/_dbg-pg-tcp-probe.cjs +0 -27
  739. package/scripts/_dbg-phase-e3-monitor.mjs +0 -25
  740. package/scripts/_dbg-pi-spawn-probe.ts +0 -33
  741. package/scripts/_dbg-plc-agent-loop.ts +0 -102
  742. package/scripts/_dbg-plc-e2e.mjs +0 -171
  743. package/scripts/_dbg-plugin-agent-read.ts +0 -56
  744. package/scripts/_dbg-plugin-config-ui.mjs +0 -111
  745. package/scripts/_dbg-plugin-matrix.mjs +0 -212
  746. package/scripts/_dbg-plugin-panels-ui.mjs +0 -54
  747. package/scripts/_dbg-plugin-sink-rest.mjs +0 -70
  748. package/scripts/_dbg-plugin-sink-ui.mjs +0 -81
  749. package/scripts/_dbg-plugin-tools-inject.ts +0 -80
  750. package/scripts/_dbg-plugin-ui-wizard.mjs +0 -125
  751. package/scripts/_dbg-plugin-verify-e2e.mjs +0 -123
  752. package/scripts/_dbg-plugins-e2e.mjs +0 -101
  753. package/scripts/_dbg-pop-clamp-verify.mjs +0 -77
  754. package/scripts/_dbg-preset-e2e.mjs +0 -116
  755. package/scripts/_dbg-preview-console.mjs +0 -28
  756. package/scripts/_dbg-preview-minrepro.mjs +0 -156
  757. package/scripts/_dbg-preview-pixels.mjs +0 -93
  758. package/scripts/_dbg-prompts-hotreload-test.ts +0 -76
  759. package/scripts/_dbg-prompts-resolve-test.ts +0 -39
  760. package/scripts/_dbg-quality-pages-e2e.mjs +0 -84
  761. package/scripts/_dbg-query-cancel.ts +0 -12
  762. package/scripts/_dbg-qwen-acp-probe.mjs +0 -30
  763. package/scripts/_dbg-qwen-capture.mjs +0 -21
  764. package/scripts/_dbg-rail-tree-e2e.mjs +0 -183
  765. package/scripts/_dbg-real-driver-e2e.mjs +0 -55
  766. package/scripts/_dbg-redesign-shots.mjs +0 -34
  767. package/scripts/_dbg-registry-smoke.ts +0 -14
  768. package/scripts/_dbg-release-smoke.mjs +0 -104
  769. package/scripts/_dbg-repo-setup-verify.mjs +0 -31
  770. package/scripts/_dbg-resolve-probe.ts +0 -6
  771. package/scripts/_dbg-restart-persist.mjs +0 -41
  772. package/scripts/_dbg-retention-test.ts +0 -25
  773. package/scripts/_dbg-rollback-mgr-audit.mjs +0 -169
  774. package/scripts/_dbg-rpg.mjs +0 -71
  775. package/scripts/_dbg-sc001-dispatch.mjs +0 -63
  776. package/scripts/_dbg-scenario-final-shot.mjs +0 -24
  777. package/scripts/_dbg-scenario-phase-e2.mjs +0 -75
  778. package/scripts/_dbg-scenario-phase-e3.mjs +0 -96
  779. package/scripts/_dbg-scenario-phase1.mjs +0 -90
  780. package/scripts/_dbg-scenario-phase2.mjs +0 -105
  781. package/scripts/_dbg-scenario-phase3-monitor.mjs +0 -48
  782. package/scripts/_dbg-scenario-phase3.mjs +0 -111
  783. package/scripts/_dbg-scene-polish-shot.mjs +0 -118
  784. package/scripts/_dbg-selring-probe.mjs +0 -47
  785. package/scripts/_dbg-settings-draft-probe.mjs +0 -39
  786. package/scripts/_dbg-settings-probe.mjs +0 -33
  787. package/scripts/_dbg-setup-e2e.mjs +0 -88
  788. package/scripts/_dbg-sideinfo.mjs +0 -101
  789. package/scripts/_dbg-sim-keeper.mjs +0 -100
  790. package/scripts/_dbg-splitter.mjs +0 -88
  791. package/scripts/_dbg-swatch-check.mjs +0 -10
  792. package/scripts/_dbg-task-cancel-probe.mjs +0 -66
  793. package/scripts/_dbg-team-drill.mjs +0 -173
  794. package/scripts/_dbg-town-alarm-e2e.mjs +0 -40
  795. package/scripts/_dbg-town-beauty-shots.mjs +0 -54
  796. package/scripts/_dbg-town-daq-shot.mjs +0 -26
  797. package/scripts/_dbg-town-full-e2e.mjs +0 -104
  798. package/scripts/_dbg-town-gate.mjs +0 -44
  799. package/scripts/_dbg-town-ins-probe.mjs +0 -37
  800. package/scripts/_dbg-town-perf.mjs +0 -50
  801. package/scripts/_dbg-town-polish-shots.mjs +0 -82
  802. package/scripts/_dbg-town-realtime.mjs +0 -42
  803. package/scripts/_dbg-town-shot.py +0 -25
  804. package/scripts/_dbg-town-shot3.mjs +0 -17
  805. package/scripts/_dbg-town-truth.mjs +0 -37
  806. package/scripts/_dbg-town-truth2.mjs +0 -27
  807. package/scripts/_dbg-transform-audit.mjs +0 -98
  808. package/scripts/_dbg-trend-expand-test.mjs +0 -38
  809. package/scripts/_dbg-twindaq-focus.mjs +0 -81
  810. package/scripts/_dbg-ui-polish-shot.mjs +0 -43
  811. package/scripts/_dbg-ui-polish-verify1.mjs +0 -92
  812. package/scripts/_dbg-ui-polish-verify2.mjs +0 -50
  813. package/scripts/_dbg-ui-polish-verify3.mjs +0 -51
  814. package/scripts/_dbg-ui-polish-verify4.mjs +0 -50
  815. package/scripts/_dbg-ui-shot.mjs +0 -26
  816. package/scripts/_dbg-ui-shots.mjs +0 -28
  817. package/scripts/_dbg-ui-survey.py +0 -52
  818. package/scripts/_dbg-unify-shot.mjs +0 -43
  819. package/scripts/_dbg-uplink-probe.mjs +0 -36
  820. package/scripts/_dbg-wizard-preview-shot.mjs +0 -58
  821. package/scripts/_dbg-wizard-ui-e2e.mjs +0 -93
  822. package/scripts/_dbg-ws-probe.mjs +0 -86
  823. package/scripts/_dbg-ws-shot2.mjs +0 -23
  824. package/scripts/_dbg-wsdot-sanity.mjs +0 -25
  825. package/scripts/_dev-stack.mjs +0 -46
  826. package/scripts/_http-driver-probe.mjs +0 -30
  827. package/scripts/_mqtt-driver-probe.mjs +0 -30
  828. package/scripts/_newdriver-rest-probe.mjs +0 -100
  829. package/scripts/_node-state-probe.mjs +0 -5
  830. package/scripts/_opcua-driver-probe.mjs +0 -31
  831. package/scripts/_rtu-debug.mjs +0 -41
  832. package/scripts/_rtu-direct.mjs +0 -6
  833. package/scripts/_rtu-driver-probe.mjs +0 -53
  834. package/scripts/_spike-pitui.mjs +0 -116
  835. package/scripts/_tmp-args-probe.mjs +0 -20
  836. package/scripts/_tmp-cyc-entry.mjs +0 -8
  837. package/scripts/_tmp-cyc-main.mjs +0 -5
  838. package/scripts/_tmp-cyc-mod.mjs +0 -2
  839. package/scripts/_tmp-cycle-a.mjs +0 -6
  840. package/scripts/_tmp-cycle-b.mjs +0 -2
  841. package/scripts/_tmp-cycle-probe.mjs +0 -4
  842. package/scripts/_tmp-entry-variant.mjs +0 -2
  843. package/scripts/_tmp-help-probe.mjs +0 -19
  844. package/scripts/_tmp-help-probe2.mjs +0 -2
  845. package/scripts/_tmp-trace-preload.mjs +0 -1
  846. package/scripts/_wizard-shots.mjs +0 -90
  847. package/scripts/acceptance-suite.py +0 -207
  848. package/scripts/aml-agent-bridge.ts +0 -230
  849. package/scripts/aml-industrial-loop.ts +0 -232
  850. package/scripts/build-film-devices.mjs +0 -227
  851. package/scripts/collab-live-test.py +0 -177
  852. package/scripts/debug-mcp-http.ts +0 -64
  853. package/scripts/demo-lead-worker.ts +0 -256
  854. package/scripts/demo-modes.ts +0 -415
  855. package/scripts/demo-omp-channel.ts +0 -135
  856. package/scripts/design-preflight.mjs +0 -223
  857. package/scripts/design-verify-templates.mjs +0 -110
  858. package/scripts/design-verify.mjs +0 -170
  859. package/scripts/dev-window.cmd +0 -6
  860. package/scripts/device-line-restore.mjs +0 -34
  861. package/scripts/diag-lead-status.ts +0 -101
  862. package/scripts/e2e-a2a-steer-live.mjs +0 -193
  863. package/scripts/e2e-dual-drive-comm.ts +0 -259
  864. package/scripts/e2e-full-scenario.ts +0 -321
  865. package/scripts/e2e-harness-consistency.ts +0 -204
  866. package/scripts/e2e-harness-provider-task.mjs +0 -126
  867. package/scripts/e2e-line-live.mjs +0 -144
  868. package/scripts/e2e-memory-persistence.ts +0 -320
  869. package/scripts/e2e-omp-modes.ts +0 -274
  870. package/scripts/e2e-omp-realtime.ts +0 -258
  871. package/scripts/e2e-plc-scenario.mjs +0 -292
  872. package/scripts/e2e-real-scenario.mjs +0 -466
  873. package/scripts/e2e-tab-close.mjs +0 -136
  874. package/scripts/e2e-token-ui.mjs +0 -149
  875. package/scripts/final-soup-run.py +0 -192
  876. package/scripts/final-soup-watch.py +0 -83
  877. package/scripts/i18n-codemod.mjs +0 -173
  878. package/scripts/i18n-fix-en.py +0 -28
  879. package/scripts/i18n-fix-en2.py +0 -31
  880. package/scripts/i18n-merge.mjs +0 -191
  881. package/scripts/migrate-local-time.mjs +0 -123
  882. package/scripts/omp-real-test.py +0 -328
  883. package/scripts/team-plugins-api-smoke.mjs +0 -149
  884. package/scripts/test-a2a-relay.mjs +0 -222
  885. package/scripts/test-aml-integration.ts +0 -159
  886. package/scripts/test-aml-job.ts +0 -174
  887. package/scripts/test-aml-unit.ts +0 -184
  888. package/scripts/test-api-client.ts +0 -108
  889. package/scripts/test-api-suite.mjs +0 -271
  890. package/scripts/test-block-consumption.mjs +0 -194
  891. package/scripts/test-cmd-render.mjs +0 -218
  892. package/scripts/test-collab-omp.mjs +0 -192
  893. package/scripts/test-config-precedence.ts +0 -124
  894. package/scripts/test-context-governor.ts +0 -176
  895. package/scripts/test-daq-frames.ts +0 -180
  896. package/scripts/test-daq-minio.ts +0 -77
  897. package/scripts/test-dedup-logic.ts +0 -132
  898. package/scripts/test-e2e-collaboration.ts +0 -262
  899. package/scripts/test-e2e-monitor.ts +0 -192
  900. package/scripts/test-event-history.ts +0 -112
  901. package/scripts/test-exec-modes.ts +0 -316
  902. package/scripts/test-fifo-realtime.mjs +0 -193
  903. package/scripts/test-final-e2e.mjs +0 -290
  904. package/scripts/test-goal-summary.ts +0 -202
  905. package/scripts/test-harness-liveness.ts +0 -109
  906. package/scripts/test-harness-terminal.ts +0 -164
  907. package/scripts/test-header-trail.mjs +0 -95
  908. package/scripts/test-hitl.ts +0 -360
  909. package/scripts/test-koda-restyle.mjs +0 -105
  910. package/scripts/test-lane-raw.ts +0 -67
  911. package/scripts/test-lanes-history-render.mjs +0 -138
  912. package/scripts/test-loop-omp.mjs +0 -154
  913. package/scripts/test-mdlite.ts +0 -53
  914. package/scripts/test-memory-brief-chronicle.ts +0 -180
  915. package/scripts/test-memory-rrf-mmr.ts +0 -114
  916. package/scripts/test-mock-collab.mjs +0 -226
  917. package/scripts/test-modern-render.mjs +0 -174
  918. package/scripts/test-omp-terminal.mjs +0 -187
  919. package/scripts/test-plugin-ext.ts +0 -173
  920. package/scripts/test-prompts-loader.ts +0 -56
  921. package/scripts/test-real-scenario.mjs +0 -290
  922. package/scripts/test-stream-render.ts +0 -37
  923. package/scripts/test-task-drawer.mjs +0 -204
  924. package/scripts/test-task-invariants.mjs +0 -169
  925. package/scripts/test-town-3d.mjs +0 -121
  926. package/scripts/test-town-layout.mjs +0 -200
  927. package/scripts/test-town-page.mjs +0 -136
  928. package/scripts/test-town-scene-math.ts +0 -169
  929. package/scripts/test-town-twin.mjs +0 -121
  930. package/scripts/test-town-upload.mjs +0 -89
  931. package/scripts/test-town-user-flow.mjs +0 -619
  932. package/scripts/test-town-world.mjs +0 -76
  933. package/scripts/test-town-wuwa.mjs +0 -198
  934. package/scripts/test-user-isolation.mjs +0 -193
  935. package/scripts/test-workshop-entries.ts +0 -370
  936. package/scripts/test-workspace-api.ts +0 -329
  937. package/scripts/test-ws-aep.mjs +0 -187
  938. package/scripts/test-ws-protocol.ts +0 -134
  939. package/scripts/town-demo-seed.mjs +0 -75
  940. package/scripts/town-scene-clear.mjs +0 -56
  941. package/scripts/verify-exec-modes-report.ts +0 -248
  942. package/scripts/verify-lead-mail.ts +0 -188
  943. package/scripts/verify-page-smoke.mjs +0 -87
  944. package/scripts/ws-test.mjs +0 -176
  945. package/scripts/ws-test.py +0 -4
@@ -18,8 +18,8 @@ const HISTORY_EXCLUDE_TYPES = ['agent.delta']
18
18
 
19
19
  export type EventFilter = 'all' | 'messages' | 'tasks' | 'team' | 'errors' | 'key'
20
20
 
21
- /** 过滤器 → 允许的事件类型集合(key = 档位过滤:只看注意级+终局级,open-tag deliveryTier) */
22
- const FILTER_TYPES: Record<EventFilter, string[] | null> = {
21
+ /** 过滤器 → 允许的事件类型集合(key = 档位过滤:只看注意级+终局级,open-tag deliveryTier)。导出供回归测试复用。 */
22
+ export const FILTER_TYPES: Record<EventFilter, string[] | null> = {
23
23
  all: null,
24
24
  messages: ['agent.message', 'agent.delta', 'agent.status.message', 'a2a.message'],
25
25
  tasks: ['task.status', 'task.progress', 'a2a.artifact'],
@@ -28,36 +28,98 @@ const FILTER_TYPES: Record<EventFilter, string[] | null> = {
28
28
  key: null,
29
29
  }
30
30
 
31
- /** 时间线过滤纯函数(记忆化缓存的真实计算体) */
31
+ /**
32
+ * 单帧是否命中时间线过滤 —— **唯一事实源**。
33
+ * 全量重算(computeTimeline)与增量追加(timeline getter)必须共用本函数,
34
+ * 否则两条路径的语义会悄悄分叉(表现为"刷新后少了/多了几条")。
35
+ *
36
+ * 导出供回归测试使用:测试要验证的是「增量维护 ⊆ 与全量重算等价」,
37
+ * 参照实现必须调用同一个谓词,否则测的是参照写得对不对,而不是实现是否等价。
38
+ *
39
+ * 注意 `filter === 'key'` 是**提前返回**:该档位只看注意级/终局级,
40
+ * 刻意不受 focus 影响(聚焦是"看某人的流",key 是"只看需要我介入的",两者正交)。
41
+ */
42
+ export function matchesTimeline(
43
+ e: AepEnvelope,
44
+ filter: EventFilter,
45
+ allow: string[] | null,
46
+ focus: string | null,
47
+ ): boolean {
48
+ if (e.type === 'channel.snapshot') return false
49
+ // key 过滤:只看注意级 + 终局级(open-tag deliveryTier —— agent 噪声让路)
50
+ if (filter === 'key') {
51
+ const t = envelopeTier(e)
52
+ return t === 'attention' || t === 'terminal'
53
+ }
54
+ if (allow && !allow.includes(e.type)) return false
55
+ if (focus && e.type !== 'task.status' && e.type !== 'task.progress') {
56
+ if (e.agentId === focus) return true
57
+ // 消息归属发送方,但发给聚焦 Agent 的消息(a2a.message target)仍属其流
58
+ if (e.type === 'a2a.message') {
59
+ const target = (e.payload as { metadata?: { 'x-aw-target-agent'?: string } }).metadata?.['x-aw-target-agent']
60
+ return target === focus
61
+ }
62
+ return false
63
+ }
64
+ return true
65
+ }
66
+
67
+ /** 时间线过滤纯函数(全量重算路径;增量路径见 matchesTimeline) */
32
68
  function computeTimeline(
33
69
  items: AepEnvelope[],
34
70
  filter: EventFilter,
35
71
  allow: string[] | null,
36
72
  focus: string | null,
37
73
  ): AepEnvelope[] {
38
- return items.filter((e) => {
39
- if (e.type === 'channel.snapshot') return false
40
- // key 过滤:只看注意级 + 终局级(open-tag deliveryTier —— agent 噪声让路)
41
- if (filter === 'key') {
42
- const t = envelopeTier(e)
43
- return t === 'attention' || t === 'terminal'
44
- }
45
- if (allow && !allow.includes(e.type)) return false
46
- if (focus && e.type !== 'task.status' && e.type !== 'task.progress') {
47
- if (e.agentId === focus) return true
48
- // 消息归属发送方,但发给聚焦 Agent 的消息(a2a.message target)仍属其流
49
- if (e.type === 'a2a.message') {
50
- const target = (e.payload as { metadata?: { 'x-aw-target-agent'?: string } }).metadata?.['x-aw-target-agent']
51
- return target === focus
52
- }
53
- return false
54
- }
55
- return true
56
- })
74
+ return items.filter(e => matchesTimeline(e, filter, allow, focus))
57
75
  }
58
76
 
59
- /** per-channel 时间线记忆化(key 含 lastSeq/条数/过滤态;原 getter 每访问全量过滤 5000 帧) */
60
- const timelineCache = new Map<string, { key: string, result: AepEnvelope[] }>()
77
+ interface ChannelRing {
78
+ lastSeq: number
79
+ items: AepEnvelope[]
80
+ /**
81
+ * 已消费过的全部 seq(含被 delta 合并吃掉的中间 seq)——loadHistory 的
82
+ * 去重依据:按 item.seq 精确匹配会漏掉合并帧,导致同段 delta 重复插入。
83
+ */
84
+ consumed: Set<number>
85
+ }
86
+
87
+ /** 稳定空数组:让"无数据"返回同一引用,避免下游 computed 每帧产出新数组触发重渲染 */
88
+ const EMPTY_ITEMS: AepEnvelope[] = Object.freeze([]) as unknown as AepEnvelope[]
89
+
90
+ /**
91
+ * 时间线增量缓存。
92
+ *
93
+ * 为什么不再用「key 含 lastSeq 的全量记忆化」:lastSeq 每帧递增 → 每帧必然 miss →
94
+ * 每帧对整条 ring(≤5000)全量过滤一次。改为增量:filter/focus 未变时只并入**新增尾巴**,
95
+ * 已淘汰的头部条目从结果前部摘除。
96
+ *
97
+ * ⚠️ 游标必须用 **seq** 而不是数组下标。ring 满之后是「push 一条 + 头部淘汰一条」,
98
+ * `items.length` 恒等于 RING_CAP 不变,而所有元素整体左移一位 ——
99
+ * 用下标做游标的实现会认为"没有新元素",**静默漏掉每一个新帧**
100
+ * (本仓库的等价性测试正是先在 messages+a1 上抓到这个 off-by-one 才改成 seq 的)。
101
+ */
102
+ interface TimelineMemo {
103
+ filter: EventFilter
104
+ focus: string | null
105
+ /** 已并入结果的最大 seq;ring 被重建(快照)时回退为 -1 */
106
+ lastSeq: number
107
+ result: AepEnvelope[]
108
+ }
109
+
110
+ const timelineCache = new Map<string, TimelineMemo>()
111
+
112
+ /** 在按 seq 升序的数组里找第一个 seq > 目标值 的下标(二分,O(log n)) */
113
+ function firstIndexAfterSeq(items: AepEnvelope[], seq: number): number {
114
+ let lo = 0
115
+ let hi = items.length
116
+ while (lo < hi) {
117
+ const mid = (lo + hi) >>> 1
118
+ if ((items[mid]?.seq ?? 0) > seq) hi = mid
119
+ else lo = mid + 1
120
+ }
121
+ return lo
122
+ }
61
123
 
62
124
  interface ChannelRing {
63
125
  lastSeq: number
@@ -67,9 +129,45 @@ interface ChannelRing {
67
129
  * 去重依据:按 item.seq 精确匹配会漏掉合并帧,导致同段 delta 重复插入。
68
130
  */
69
131
  consumed: Set<number>
132
+ /**
133
+ * agentId → 该 agent 的事件子序列(与 items 同生命周期,增量维护)。
134
+ *
135
+ * 为什么需要:lane 视图对**每个成员**各跑一遍 `items.filter(e => e.agentId === id)`,
136
+ * 即每帧 O(L×R) 次谓词调用并分配 L 个新数组(L=成员数、R=ring 长度≤5000)。
137
+ * 取 L=8、R=2000、30 帧/s ≈ 4.8×10⁵ 次谓词/秒,且随会话时长线性劣化(越看越卡)。
138
+ * 有了索引,lane 每帧只读一个已备好的数组 → O(1)。
139
+ * 桶内元素与 items 中**同一个对象引用**(delta 合并是原地改 payload,索引自动可见)。
140
+ */
141
+ byAgent: Map<string, AepEnvelope[]>
142
+ }
143
+
144
+ const EMPTY_RING = (): ChannelRing => ({ lastSeq: 0, items: [], consumed: new Set(), byAgent: new Map() })
145
+
146
+ /** 尾部追加建档(与 items.push 配对) */
147
+ function indexAppend(ring: ChannelRing, e: AepEnvelope): void {
148
+ const key = e.agentId
149
+ if (!key) return
150
+ const bucket = ring.byAgent.get(key)
151
+ if (bucket) bucket.push(e)
152
+ else ring.byAgent.set(key, [e])
153
+ }
154
+
155
+ /** 头部淘汰出档(与 items.splice(0, n) 配对);按引用查找,防同 seq 重放误删 */
156
+ function indexEvict(ring: ChannelRing, dropped: AepEnvelope[]): void {
157
+ for (const e of dropped) {
158
+ const bucket = ring.byAgent.get(e.agentId ?? '')
159
+ if (!bucket) continue
160
+ const idx = bucket.indexOf(e)
161
+ if (idx >= 0) bucket.splice(idx, 1)
162
+ if (bucket.length === 0) ring.byAgent.delete(e.agentId ?? '')
163
+ }
70
164
  }
71
165
 
72
- const EMPTY_RING = (): ChannelRing => ({ lastSeq: 0, items: [], consumed: new Set() })
166
+ /** 全量重建索引(排序/批量合并后调用;这类路径每次频道/成员只走一次,成本可接受) */
167
+ function reindex(ring: ChannelRing): void {
168
+ ring.byAgent.clear()
169
+ for (const e of ring.items) indexAppend(ring, e)
170
+ }
73
171
 
74
172
  /** 历史接口响应壳(全局/lane 同构) */
75
173
  interface EventsHistoryRes {
@@ -92,7 +190,10 @@ function mergeHistory(ring: ChannelRing, items: AepEnvelope[], ceiling: number):
92
190
  }
93
191
  if (added > 0) {
94
192
  ring.items.sort((a, b) => a.seq - b.seq)
95
- if (ring.items.length > RING_CAP) ring.items.splice(0, ring.items.length - RING_CAP)
193
+ const overflow = ring.items.length - RING_CAP
194
+ if (overflow > 0) ring.items.splice(0, overflow)
195
+ // 排序打乱了插入序 → 索引必须整体重建(批量历史路径,非热路径)
196
+ reindex(ring)
96
197
  }
97
198
  return added
98
199
  }
@@ -111,19 +212,64 @@ export const useEventsStore = defineStore('workshop.events', {
111
212
  return (channelId: string): ChannelRing =>
112
213
  state.rings[channelId] ?? EMPTY_RING()
113
214
  },
114
- /** 应用过滤 + agent 聚焦后的时间线(虚拟滚动/自动吸底消费;per-channel 记忆化) */
215
+ /** 应用过滤 + agent 聚焦后的时间线(虚拟滚动/自动吸底消费;per-channel 增量缓存) */
115
216
  timeline(state) {
116
217
  return (channelId: string): AepEnvelope[] => {
117
218
  const ring = state.rings[channelId]
118
- if (!ring) return []
219
+ if (!ring) return EMPTY_ITEMS
119
220
  const filter = state.filters[channelId] ?? 'all'
120
221
  const focus = state.focusAgents[channelId] ?? null
121
- const memoKey = `${filter}:${focus ?? ''}:${ring.lastSeq}:${ring.items.length}`
122
- const hit = timelineCache.get(channelId)
123
- if (hit && hit.key === memoKey) return hit.result
124
- const result = computeTimeline(ring.items, filter, FILTER_TYPES[filter], focus)
125
- timelineCache.set(channelId, { key: memoKey, result })
126
- return result
222
+ const items = ring.items
223
+ const allow = FILTER_TYPES[filter]
224
+ const maxSeq = items.length > 0 ? (items[items.length - 1]?.seq ?? 0) : -1
225
+ const prev = timelineCache.get(channelId)
226
+
227
+ // 需要全量重算的三种情况:
228
+ // ① 首次 / 过滤态变化 —— 增量无从谈起
229
+ // ② ring 被重建(channel.snapshot):maxSeq 反而变小(甚至为空)
230
+ // ③ 缓存里的游标超过当前最大 seq(同上,防御性)
231
+ const needRebuild = !prev
232
+ || prev.filter !== filter
233
+ || prev.focus !== focus
234
+ || (items.length === 0 && prev.result.length > 0)
235
+ || prev.lastSeq > maxSeq
236
+ if (needRebuild) {
237
+ const result = computeTimeline(items, filter, allow, focus)
238
+ timelineCache.set(channelId, { filter, focus, lastSeq: maxSeq, result })
239
+ return result
240
+ }
241
+
242
+ // 摘除已淘汰的头部条目(结果与 items 同按 seq 升序 → 只可能从前往后连续失效)
243
+ const headSeq = items[0]?.seq ?? 0
244
+ const res = prev.result
245
+ if (res.length > 0 && (res[0]?.seq ?? 0) < headSeq) {
246
+ let drop = 0
247
+ while (drop < res.length && (res[drop]?.seq ?? 0) < headSeq) drop++
248
+ res.splice(0, drop)
249
+ }
250
+
251
+ // 并入新增尾巴:按 seq 定位起点(不能用下标 —— 见 TimelineMemo 的说明)
252
+ if (maxSeq > prev.lastSeq) {
253
+ const from = firstIndexAfterSeq(items, prev.lastSeq)
254
+ for (let i = from; i < items.length; i++) {
255
+ const e = items[i]!
256
+ if (matchesTimeline(e, filter, allow, focus)) res.push(e)
257
+ }
258
+ prev.lastSeq = maxSeq
259
+ }
260
+ return res
261
+ }
262
+ },
263
+ /**
264
+ * 某 agent 的事件子序列(增量索引,O(1) 取用)。
265
+ * lane 视图用它替代 `items.filter(e => e.agentId === id)` —— 后者每帧对每个成员
266
+ * 各扫一遍整条 ring(见 ChannelRing.byAgent 的说明)。
267
+ * 无数据时返回**同一个冻结空数组**,避免下游 computed 每帧产出新引用而触发重渲染。
268
+ */
269
+ agentEvents(state) {
270
+ return (channelId: string, agentId: string): AepEnvelope[] => {
271
+ if (!agentId) return EMPTY_ITEMS
272
+ return state.rings[channelId]?.byAgent.get(agentId) ?? EMPTY_ITEMS
127
273
  }
128
274
  },
129
275
  lastSeq(state) {
@@ -137,7 +283,7 @@ export const useEventsStore = defineStore('workshop.events', {
137
283
  const ring = this.rings[e.channelId] ?? EMPTY_RING()
138
284
  if (e.type === 'channel.snapshot') {
139
285
  // 全量对齐:清空 ring,游标对齐快照 seq
140
- this.rings[e.channelId] = { lastSeq: e.seq, items: [], consumed: new Set([e.seq]) }
286
+ this.rings[e.channelId] = { lastSeq: e.seq, items: [], consumed: new Set([e.seq]), byAgent: new Map() }
141
287
  return
142
288
  }
143
289
  if (typeof e.seq === 'number' && e.seq > ring.lastSeq) {
@@ -158,7 +304,11 @@ export const useEventsStore = defineStore('workshop.events', {
158
304
  }
159
305
  }
160
306
  ring.items.push(e)
161
- if (ring.items.length > RING_CAP) ring.items.splice(0, ring.items.length - RING_CAP)
307
+ indexAppend(ring, e)
308
+ if (ring.items.length > RING_CAP) {
309
+ // 淘汰与索引清理必须同拍,否则索引会持有已出窗条目(查询命中"已看不见"的事件)
310
+ indexEvict(ring, ring.items.splice(0, ring.items.length - RING_CAP))
311
+ }
162
312
  ring.lastSeq = e.seq
163
313
  // 防泄漏:超限后从现存 items 重建(合并掉的旧 seq 允许短暂失忆——远早于 ring 窗口)
164
314
  if (ring.consumed.size > 20_000) ring.consumed = new Set(ring.items.map(i => i.seq))
package/bin/aw.mjs CHANGED
@@ -3,11 +3,16 @@
3
3
  // AgentWorkShop CLI — npm bin 入口
4
4
  // `npm i -g agentworkshop` 后,终端里 `aw` / `agentworkshop` 即指向本文件。
5
5
  // ============================================================
6
+ // 必须 process.exit(code) 而不是 process.exitCode = await main():
7
+ // stdout/stderr 是管道(重定向 / CI / 父进程 spawn 捕获)时,句柄会保活事件循环,
8
+ // Node 在顶层 await 下会以 **退出码 13**(ERR_UNSETTLED_TOP_LEVEL_AWAIT)收场,
9
+ // 把 `aw --help` 这类纯诊断指令的成功退出写成 13 且输出为空。
10
+ // process.exit 会同步 flush 已排队的 stdio 写入(writev 直写 fd)。
6
11
  try {
7
12
  const { main } = await import('../cli/aw.mjs')
8
- process.exitCode = await main()
13
+ process.exit(await main())
9
14
  }
10
15
  catch (err) {
11
16
  console.error('[aw] 启动失败:', err)
12
- process.exitCode = 1
17
+ process.exit(1)
13
18
  }
package/cli/aw.mjs CHANGED
@@ -9,16 +9,17 @@
9
9
  // 4. 组装运行上下文 ctx(含有效配置 API)并执行指令
10
10
  // 5. 统一错误处理与退出码(0 成功 / 1 错误 / 2 用法错误)
11
11
  // ============================================================
12
- import { existsSync, readFileSync } from 'node:fs'
12
+ import { existsSync } from 'node:fs'
13
13
  import { join, resolve, dirname } from 'node:path'
14
- import { homedir } from 'node:os'
15
14
  import { fileURLToPath } from 'node:url'
16
15
  import { CommandRegistry, commandDirs } from './core/registry.mjs'
17
16
  import { createContext, EXIT } from './core/context.mjs'
18
- import { parseArgs, stripGlobals } from './core/args.mjs'
17
+ import { parseArgs, stripGlobals, extractCommandName, globalNames, globalValueNames } from './core/args.mjs'
19
18
  import { renderHelp, renderCommandHelp } from './core/help.mjs'
20
19
  import { logger, color } from './core/logger.mjs'
21
20
  import { CliError, isUsageError } from './core/errors.mjs'
21
+ import { packageRoot, packageVersion } from './core/meta.mjs'
22
+ import { awHome } from '../shared/config/home.mjs'
22
23
  import { installLocalIso } from '../shared/local-time.mjs'
23
24
 
24
25
  // 全 CLI 时间输出统一本地时区(先于任何命令逻辑)
@@ -26,22 +27,11 @@ installLocalIso()
26
27
 
27
28
  export { CliError }
28
29
 
29
- /** 本包版本(cli/aw.mjs → ../package.json) */
30
- export function packageVersion() {
31
- try {
32
- return JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version ?? '0.0.0'
33
- }
34
- catch {
35
- return '0.0.0'
36
- }
37
- }
38
-
39
- /** 本包根目录(全局安装副本同样成立;必须走 fileURLToPath,Windows 下
40
- * URL pathname 是 '/D:/...' 形态,直接 path.resolve 会得到 'D:\D:\...' 垃圾路径,
41
- * 导致内建指令目录扫描全部静默失败 —— 指令注册失效的根因) */
42
- export function packageRoot() {
43
- return resolve(dirname(fileURLToPath(import.meta.url)), '..')
44
- }
30
+ /** 本包版本/包根:实现下沉到叶子模块 cli/core/meta.mjs。
31
+ * 命令模块要复用它们,若继续定义在本文件会让 cli/commands/* → ../aw.mjs 形成
32
+ * 循环依赖,并在 **cli/aw.mjs 自任入口**时死锁(顶层 await main() 等 scanDirs,
33
+ * scanDirs 等命令模块,命令模块等 aw.mjs 求值完成)→ 退出码 13 且无输出。 */
34
+ export { packageRoot, packageVersion } from './core/meta.mjs'
45
35
 
46
36
  /** 向上查找文件(与 shared/config/engine.mjs 的 findUp 等价,避免顶层依赖引擎) */
47
37
  function findUp(startDir, filename) {
@@ -55,19 +45,10 @@ function findUp(startDir, filename) {
55
45
  }
56
46
  }
57
47
 
58
- /** 从命令行提取指令名(首个非选项 token) */
48
+ /** 从命令行提取指令名(首个位置 token;跳过全局选项及其取值)
49
+ * 实现在 args.mjs —— 与 stripGlobals 共用同一张取值边界表,避免两处各自猜。 */
59
50
  function extractCommand(argv) {
60
- let afterDash = false
61
- for (const tok of argv) {
62
- if (afterDash) return tok
63
- if (tok === '--') {
64
- afterDash = true
65
- continue
66
- }
67
- if (tok.startsWith('-')) continue
68
- return tok
69
- }
70
- return null
51
+ return extractCommandName(argv)
71
52
  }
72
53
 
73
54
  function toBool(v, fallback = false) {
@@ -97,7 +78,9 @@ export async function main(argv = process.argv.slice(2), { cwd = process.cwd() }
97
78
  return p ? dirname(p) : null
98
79
  })()
99
80
 
100
- const homeDir = homedir()
81
+ // 用户级指令目录必须与 `aw register --global` / createContext 用同一个 AW Home 解析
82
+ // (awHome 认 $AW_HOME);用 OS 家目录会在 AW_HOME 生效时扫到错误的目录。
83
+ const homeDir = awHome(process.env)
101
84
  const pkgRoot = packageRoot()
102
85
 
103
86
  // 指令注册:内建(本包 cli/commands) → 用户级 → 项目级(同名单后者覆盖)
@@ -157,9 +140,11 @@ export async function main(argv = process.argv.slice(2), { cwd = process.cwd() }
157
140
  // 按字面量剔除,会把出现在「值」位置的同名 token 一并删掉:
158
141
  // aw foo --name --json → --json 是 --name 的值,却被删 → --name 变布尔 true(值丢失)
159
142
  // aw foo --title=b --json → 同理
160
- // 传入 predicate 后由 parseArgs 在消费该 flag 时决定 skip 范围。
143
+ // 取值边界由 GLOBAL_OPTS 声明(--root 带值,--json/--debug 为布尔):
144
+ // aw build --json x → x 是位置参数,不得被 --json 吞掉
145
+ // aw --root /p build → --root 连 /p 一起剥离
161
146
  const idx = argv.indexOf(commandName)
162
- const cmdArgv = stripGlobals(argv.slice(idx >= 0 ? idx + 1 : 0), ['--json', '--debug'])
147
+ const cmdArgv = stripGlobals(argv.slice(idx >= 0 ? idx + 1 : 0), globalNames(), { valueNames: globalValueNames() })
163
148
  const local = parseArgs(cmdArgv, { shortMap: { h: 'help', ...(cmd.meta.short ?? {}) } })
164
149
 
165
150
  if (local.flags.help) {
@@ -4,6 +4,7 @@
4
4
  import { color } from '../core/logger.mjs'
5
5
  import { localBypassEnv } from '../core/context.mjs'
6
6
  import { runChild } from '../core/child-lifecycle.mjs'
7
+ import { postBuildArtifacts } from '../core/post-build.mjs'
7
8
 
8
9
  export const meta = {
9
10
  name: 'build',
@@ -24,10 +25,26 @@ export async function run(argv, ctx) {
24
25
  console.log(`${color.cyan('›')} 构建生产产物 .output/ ...`)
25
26
  // 统一生命周期:转发 SIGINT/SIGTERM(子进程不再变孤儿) + 等待退出 + 超时强杀
26
27
  // + 退出码传播(被信号杀死 → 128+N,不再 code ?? 0 误报成功)
27
- return await runChild(process.execPath, [nuxtBin, 'build'], {
28
+ const code = await runChild(process.execPath, [nuxtBin, 'build'], {
28
29
  cwd: root,
29
30
  stdio: 'inherit',
30
31
  env: localBypassEnv(),
31
32
  onSpawnError: err => console.log(`${color.red('✖')} 构建失败: ${err.message}`),
32
33
  })
34
+ if (code !== 0) return code
35
+
36
+ // 构建产物后处理:import-meta 补丁 + 外置资产分发。
37
+ // 不能只靠 nuxt.config 的 compiled 钩子 —— 它与 chunk 落盘有竞态,静默失效会让
38
+ // 产物启动即抛 ERR_INVALID_FILE_URL_PATH。这里在构建**返回后**重做并校验。
39
+ try {
40
+ const r = postBuildArtifacts(root)
41
+ if (r.patched.length > 0) console.log(`${color.cyan('›')} import-meta 补丁:${r.patched.join(', ')}`)
42
+ if (r.assets.length > 0) console.log(`${color.cyan('›')} 外置资产随产物分发:${r.assets.join(', ')}`)
43
+ if (r.missing.length > 0) console.log(`${color.yellow('!')} 未生成(跳过):${r.missing.join(', ')}`)
44
+ }
45
+ catch (err) {
46
+ console.log(`${color.red('✖')} ${err?.message ?? err}`)
47
+ return 1
48
+ }
49
+ return 0
33
50
  }
@@ -20,6 +20,8 @@ export const meta = {
20
20
  group: '配置',
21
21
  summary: '读取 / 写入 / 校验运行配置',
22
22
  usage: 'aw config [list|get|set|unset|reset|validate] [key] [value] [--json]',
23
+ // reset 的确认短选项:未登记时 `-y` 会被静默丢弃,reset 变成无确认的破坏性操作
24
+ short: { y: 'yes' },
23
25
  description: [
24
26
  '以 config.yml 为默认、runtime-settings.json 为运行时覆盖、环境变量为最高优先级。',
25
27
  '双模式:项目检出内写 <项目>/data/runtime-settings.json;全局安装(任意目录)写 ~/.AgentWorkShop/runtime-settings.json。',
@@ -1,27 +1,39 @@
1
1
  // ============================================================
2
- // 指令:plugin — 插件管理(list / create 脚手架)
2
+ // 指令:plugin — 插件管理(list / create / enable / disable)
3
3
  // ------------------------------------------------------------
4
- // 插件目录(与配置根一致):
5
- // project: <repo>/.AgentWorkShop/plugins/<name>/
6
- // user: ~/.AgentWorkShop/plugins/<name>/
4
+ // 插件目录(三作用域,与宿主 host.mjs discoverPluginDirs 一致):
5
+ // builtin: <packageRoot>/server/plugins-builtin/<name>/ ← 随包发布,永远存在
6
+ // project: <repo>/.AgentWorkShop/plugins/<name>/ ← aw plugin create 默认落点
7
+ // user: ~/.AgentWorkShop/plugins/<name>/ ← aw plugin create --global
8
+ // ⚠️ 同名优先级 builtin > project > user(宿主先扫先占),与 scopes() 的返回顺序一致。
7
9
  // 插件契约:入口 index.mjs 导出 { name, version?, description?,
8
10
  // setup(ctx)?, client?: './client.mjs', routes?: [...] } —— 零导入依赖。
9
11
  // ============================================================
10
12
  import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs'
11
- import { join } from 'node:path'
13
+ import { dirname, join, resolve } from 'node:path'
14
+ import { fileURLToPath } from 'node:url'
12
15
  import { color } from '../core/logger.mjs'
13
16
  import { CliError } from '../core/errors.mjs'
14
17
 
18
+ /** 本文件位于 <packageRoot>/cli/commands/,故包根 = 上两级 */
19
+ const PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..', '..')
20
+
15
21
  export const meta = {
16
22
  name: 'plugin',
17
23
  aliases: ['plugins', 'plug'],
18
24
  group: '扩展',
19
25
  summary: '插件管理:查看/启停(热重载)/脚手架',
20
- usage: 'aw plugin <list|create|enable|disable> [name] [--project|--global] [--force]',
26
+ usage: 'aw plugin <list|create|enable|disable> [name] [--global|-g] [--project] [--force|-f]',
27
+ // 短选项必须在这里登记:cli/aw.mjs 只把 meta.short 声明过的短名映射成长名,
28
+ // 未登记的 `-g` 会被 args.mjs 丢进 unknown 且**不报错** —— 插件会静默落到 project 级。
29
+ short: { g: 'global', f: 'force' },
21
30
  description: [
22
- '插件 = 配置根 plugins/<name>/ 下的 node 项目:入口 index.mjs 导出',
23
- '{ name, setup(ctx) } 即自动装载(服务端钩子/API 路由),client.mjs 可选(浏览器增强)。',
24
- '服务端钩子:daq:sample / dcw:write / line:start|stop / event:*(scene 全事件)/ server:close。',
31
+ '插件 = plugins/<name>/ 下的自包含目录:入口 index.mjs 导出 { name, setup(ctx) }',
32
+ '即自动装载(服务端钩子/API 路由/Agent 工具/数采扩展),client.mjs 可选(浏览器增强)。',
33
+ '作用域:builtin(随包) > project(仓库 .AgentWorkShop/plugins) > user(~/.AgentWorkShop/plugins)。',
34
+ 'create 默认落 project 级,--global/-g 落 user 级。',
35
+ '服务端钩子:daq:sample / daq:frame / dcw:write / line:start|stop / config:changed /',
36
+ 'plugins:reloaded / event:*(scene 全事件) / server:close —— 通配写法是 \'*\'(裸星号)。',
25
37
  ],
26
38
  needsProject: false,
27
39
  }
@@ -70,7 +82,11 @@ export default {
70
82
  `
71
83
 
72
84
  const CLIENT_TEMPLATE = name => `// ${name} — 客户端增强(可选;自包含 ESM,无裸导入)
73
- // ctx: on(type,fn) 事件订阅 / el() DOM 助手 / root() 私有挂载点 / log
85
+ // ctx: on(type,fn) scene 事件订阅 / el() DOM 助手 / root() 私有挂载点 / log
86
+ // ⚠️ ctx.on 只装 **scene 事件**(type 传事件名本身,如 'daq.reading' / 'daq.alarm';
87
+ // 收全部用字面量 'event:*')。服务端钩子(daq:sample / dcw:write / line:start…)
88
+ // 不会过桥到浏览器;浏览器侧生命周期钩子(client:init / page:change / i18n:changed)
89
+ // 要走 ctx.hooks.on(...)。
74
90
  export function setup(ctx) {
75
91
  const badge = ctx.el('div', {
76
92
  style: 'padding:6px 10px;border:1px solid #2de0a0;border-radius:8px;color:#2de0a0;background:rgba(0,0,0,.55)',
@@ -78,7 +94,7 @@ export function setup(ctx) {
78
94
  ctx.root().append(badge)
79
95
 
80
96
  let n = 0
81
- ctx.on('daq:sample', () => {
97
+ ctx.on('daq.reading', () => {
82
98
  n++
83
99
  badge.textContent = \`\${ctx.name} · \${n} 样本\`
84
100
  })
@@ -89,11 +105,17 @@ export function setup(ctx) {
89
105
 
90
106
  const PLUGIN_README = name => `# ${name}
91
107
 
92
- AgentWorkShop 插件。重启 \`aw start\` / \`aw dev\` 自动装载。
108
+ AgentWorkShop 插件。
93
109
 
94
110
  - \`index.mjs\` — 服务端入口(setup(ctx))
95
111
  - \`client.mjs\` — 浏览器增强(可选)
96
112
  - API:GET /api/plugins/${name}/stats
113
+
114
+ 装载无需重启:运行中的服务监听 <home>/plugins-state.json(fs.watch + 10s 轮询兜底),
115
+ 启用/停用会在 ~1s 内热重载。**改插件源码不会自动触发重载** —— 重载时宿主会用带
116
+ 时间戳的 dynamic import 破缓存重新加载模块,所以改完代码触碰一下 plugins-state.json
117
+ (或 Web 端切一次开关)即生效,不必重启进程。
118
+ 完整契约见 docs/plugins.md。
97
119
  `
98
120
 
99
121
  export async function run(argv, ctx) {
@@ -157,15 +179,18 @@ function findPluginDir(ctx, name) {
157
179
  }
158
180
 
159
181
  function scopes(ctx) {
182
+ // 顺序 = 宿主 host.mjs 的发现顺序(builtin → project → user);
183
+ // findPluginDir 取首个命中,故顺序必须与宿主同名优先级一致,否则启停会打到另一个同名插件上。
160
184
  return [
161
- { scope: 'project', dir: ctx.root ? join(ctx.root, '.AgentWorkShop', 'plugins') : null, label: '内置示例' },
162
- { scope: 'user', dir: ctx.commandsDir?.global ? join(ctx.home, 'plugins') : join(ctx.home, 'plugins'), label: '用户级扩展' },
185
+ { scope: 'builtin', dir: join(PACKAGE_ROOT, 'server', 'plugins-builtin'), label: '内置插件(随包发布)' },
186
+ { scope: 'project', dir: ctx.root ? join(ctx.root, '.AgentWorkShop', 'plugins') : null, label: '项目级(仓库 .AgentWorkShop/plugins)' },
187
+ { scope: 'user', dir: join(ctx.home, 'plugins'), label: '用户级(~/.AgentWorkShop/plugins)' },
163
188
  ]
164
189
  }
165
190
 
166
191
  function list(ctx) {
167
192
  console.log('')
168
- console.log(`${color.bold('AgentWorkShop 插件')} ${color.dim('— 配置根 plugins/ 目录,自动装载;aw plugin enable/disable 启停')}`)
193
+ console.log(`${color.bold('AgentWorkShop 插件')} ${color.dim('— 三作用域自动装载;aw plugin enable/disable 启停(热重载)')}`)
169
194
  let total = 0
170
195
  const disabled = readState(ctx)
171
196
  for (const { dir, label } of scopes(ctx)) {
@@ -196,8 +221,9 @@ function list(ctx) {
196
221
 
197
222
  function create(ctx, name, flags) {
198
223
  if (!name || !/^[a-z][a-z0-9-]{1,31}$/.test(name)) {
199
- throw new CliError('USAGE', '用法: aw plugin create <name> [--project|--global](name: 小写字母开头,2-32 位 a-z0-9-)')
224
+ throw new CliError('USAGE', '用法: aw plugin create <name> [--global|-g] [--project] [--force|-f](name: 小写字母开头,2-32 位 a-z0-9-)')
200
225
  }
226
+ // 默认落 project 级;--global/-g 落 user 级。--project 是显式写法(与默认等价,保留以符合直觉)。
201
227
  const global = Boolean(flags.global ?? flags.g)
202
228
  const force = Boolean(flags.force ?? flags.f)
203
229
  const target = global
@@ -213,7 +239,8 @@ function create(ctx, name, flags) {
213
239
  writeFileSync(join(target, 'README.md'), PLUGIN_README(name), 'utf8')
214
240
 
215
241
  console.log(`${color.green('✔')} 插件已创建: ${color.bold(name)} → ${target}`)
216
- console.log(` › 重启服务自动装载;API 示例: ${color.cyan(`GET /api/plugins/${name}/stats`)}`)
217
- console.log(` › 查看列表: ${color.cyan('aw plugin list')}`)
242
+ console.log(` › 作用域: ${global ? 'user(用户级,~/.AgentWorkShop/plugins)' : 'project(项目级,<repo>/.AgentWorkShop/plugins)'}`)
243
+ console.log(` › 装载: 运行中的服务在 plugins-state.json 变化后 ~1s 内热重载;改代码后触碰该文件即生效(无需重启进程)`)
244
+ console.log(` › 查看列表: ${color.cyan('aw plugin list')} API 示例: ${color.cyan(`GET /api/plugins/${name}/stats`)}`)
218
245
  return 0
219
246
  }
@@ -13,14 +13,18 @@
13
13
  import { copyFileSync, existsSync, mkdirSync, readdirSync, statSync, writeFileSync } from 'node:fs'
14
14
  import { join, basename, resolve } from 'node:path'
15
15
  import { color } from '../core/logger.mjs'
16
- import { CliError } from '../aw.mjs'
16
+ // 从叶子模块取 CliError(而非 '../aw.mjs'):命令模块反向依赖入口会形成循环依赖,
17
+ // 在 cli/aw.mjs 自任入口时死锁(详见 cli/core/meta.mjs 文件头说明)
18
+ import { CliError } from '../core/errors.mjs'
17
19
 
18
20
  export const meta = {
19
21
  name: 'register',
20
22
  aliases: ['reg', 'install-cmd'],
21
23
  group: '指令',
22
24
  summary: '注册一条新指令(项目级或用户级)',
23
- usage: 'aw register <path|url|npm:pkg> [--name <n>] [--global|-g] [--force]',
25
+ usage: 'aw register <path|url|npm:pkg> [--name <n>] [--global|-g] [--force|-f]',
26
+ // 短选项需显式登记(cli/aw.mjs 只认 meta.short);否则 `-g` 被静默丢弃 → 注册到错误的层级
27
+ short: { g: 'global', f: 'force' },
24
28
  description: [
25
29
  '指令文件只需导出 { meta, run }:',
26
30
  ' export const meta = { name, summary, usage, group, aliases?, needsProject? }',
@@ -5,6 +5,7 @@ import { existsSync } from 'node:fs'
5
5
  import { join } from 'node:path'
6
6
  import { color } from '../core/logger.mjs'
7
7
  import { findRunningServer } from '../core/context.mjs'
8
+ import { packageVersion } from '../core/meta.mjs'
8
9
 
9
10
  export const meta = {
10
11
  name: 'status',
@@ -38,7 +39,7 @@ export async function run(argv, ctx) {
38
39
  mode: ctx.mode,
39
40
  root: ctx.root,
40
41
  home: ctx.home,
41
- package: { version: (await import('../aw.mjs')).packageVersion() },
42
+ package: { version: packageVersion() },
42
43
  config: { path: ctx.configPath, effective, sources, runtimeOverrides },
43
44
  server: server ? { running: true, port: server.port } : { running: false },
44
45
  build: { outputExists: ctx.root ? existsSync(join(ctx.root, '.output', 'server', 'index.mjs')) : existsSync(join(ctx.packageRoot, '.output', 'server', 'index.mjs')) },
@@ -12,7 +12,7 @@ import { existsSync, readFileSync } from 'node:fs'
12
12
  import { join } from 'node:path'
13
13
  import { color } from '../core/logger.mjs'
14
14
  import { CliError } from '../core/errors.mjs'
15
- import { packageVersion } from '../aw.mjs'
15
+ import { packageVersion } from '../core/meta.mjs'
16
16
 
17
17
  export const meta = {
18
18
  name: 'update',
@@ -2,7 +2,7 @@
2
2
  // 指令:version — 版本信息
3
3
  // ============================================================
4
4
  import { color } from '../core/logger.mjs'
5
- import { packageVersion } from '../aw.mjs'
5
+ import { packageVersion } from '../core/meta.mjs'
6
6
 
7
7
  export const meta = {
8
8
  name: 'version',