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
@@ -1 +0,0 @@
1
- x
@@ -1,3 +0,0 @@
1
- # 自定义指令目录
2
-
3
- 导出 { meta, run } 的 .mjs 文件放入本目录即自动注册。
@@ -1,12 +0,0 @@
1
- // scratch audit command (registration target experiment)
2
- export const meta = {
3
- name: 'hello-audit',
4
- group: 'audit',
5
- summary: 'hello from audit scratch',
6
- needsProject: false,
7
- }
8
-
9
- export async function run() {
10
- console.log('hello-audit ok')
11
- return 0
12
- }
@@ -1,20 +0,0 @@
1
- import { existsSync, mkdirSync, readdirSync, rmSync } from 'node:fs'
2
-
3
- const target = new URL('./.tmp/server/', import.meta.url)
4
- console.log('[diag] entry file url =', import.meta.url)
5
- console.log('[diag] rm target =', target.href)
6
- console.log('[diag] before rm exists =', existsSync(target))
7
- rmSync(target, { recursive: true, force: true })
8
- console.log('[diag] after rm exists =', existsSync(target))
9
- mkdirSync(new URL('./.tmp/server/data/', import.meta.url), { recursive: true })
10
-
11
- const chdirTo = new URL('./.tmp/', import.meta.url).pathname.replace(/^\//, '')
12
- console.log('[diag] chdir target =', chdirTo)
13
- process.chdir(chdirTo)
14
- console.log('[diag] cwd =', process.cwd())
15
- console.log('[diag] cwd contents =', readdirSync(process.cwd()))
16
-
17
- const mod = await import('../../server/services/workshop/dcw/recipe-rollback.repo')
18
- const repo = new mod.RecipeRollBackRepo()
19
- console.log('[diag] ledger stats =', JSON.stringify(repo.stats()))
20
- console.log('[diag] data dir contents =', readdirSync(new URL('./.tmp/server/data/', import.meta.url)))
@@ -1,19 +0,0 @@
1
- import { existsSync, readdirSync, statSync } from 'node:fs'
2
- import path from 'node:path'
3
-
4
- process.chdir(new URL('./.tmp/', import.meta.url).pathname.replace(/^\//, ''))
5
- console.log('[diag2] cwd =', process.cwd())
6
- console.log('[diag2] dir listing =', readdirSync(path.join(process.cwd(), 'server', 'data')))
7
- const guess = path.join(process.cwd(), 'server', 'data', 'dcw-rollback.json')
8
- console.log('[diag2] guessed ROLLBACK_PATH exists =', existsSync(guess))
9
-
10
- const mod = await import('../../server/services/workshop/dcw/recipe-rollback.repo')
11
- const repo = new mod.RecipeRollBackRepo()
12
- const first = repo.listAnchors({ limit: 2 })
13
- const last = repo.listAnchors({ limit: 2 })
14
- console.log('[diag2] stats =', JSON.stringify(repo.stats()))
15
- console.log('[diag2] first anchors =', JSON.stringify(first.map(a => ({ id: a.id, at: a.at, node: a.nodeId }))))
16
- console.log('[diag2] exists after import =', existsSync(guess), existsSync(guess) ? statSync(guess).size : 0)
17
- console.log('[diag2] dir listing after import =', readdirSync(path.join(process.cwd(), 'server', 'data')))
18
- const repo2 = new mod.RecipeRollBackRepo()
19
- console.log('[diag2] second instance stats =', JSON.stringify(repo2.stats()))
@@ -1,12 +0,0 @@
1
- // scratch audit command (registration target experiment)
2
- export const meta = {
3
- name: 'hello-audit',
4
- group: 'audit',
5
- summary: 'hello from audit scratch',
6
- needsProject: false,
7
- }
8
-
9
- export async function run() {
10
- console.log('hello-audit ok')
11
- return 0
12
- }
@@ -1,77 +0,0 @@
1
- /**
2
- * Audit repro (read-only w.r.t. product source).
3
- *
4
- * Sandbox blocks `spawn()` with piped stdio (EPERM on named pipes), so this drives the
5
- * accumulation loop with a synthetic EventEmitter instead of a real child: it delivers
6
- * the SAME chunk sequence the OS pipe delivers when one logical NDJSON line exceeds the
7
- * pipe read size (64 KiB) — i.e. a JSON object split across two `data` events.
8
- *
9
- * Logic under test is copied verbatim from
10
- * server/services/workshop/agents/adapters/one-shot-cli-agent.ts:404-428
11
- * and the correct reference from
12
- * server/services/workshop/agents/adapters/stdio-jsonrpc.ts:234-252
13
- */
14
- import { EventEmitter } from 'node:events'
15
-
16
- const tryParse = (line) => { try { return JSON.parse(line) } catch { return null } }
17
-
18
- /** 2 chunks of one NDJSON stream; chunk #1 ends mid-JSON-object. */
19
- const CHUNKS = [
20
- '{"type":"message","role":"assistant","content":"hello wor',
21
- 'ld"}\n{"type":"result","usage":{"input_tokens":42}}\n',
22
- ]
23
-
24
- function feed(onData) {
25
- const s = new EventEmitter()
26
- s.setEncoding = () => {}
27
- const p = new Promise((r) => s.on('end', r))
28
- onData(s)
29
- queueMicrotask(() => {
30
- for (const c of CHUNKS) s.emit('data', c)
31
- s.emit('end')
32
- })
33
- return p
34
- }
35
-
36
- // ---- A. verbatim copy of one-shot-cli-agent.ts:404-428 (plainTextStdout !== true) ----
37
- const aFrames = []
38
- const aDeltas = []
39
- const aDrops = []
40
- await feed((s) => {
41
- s.on('data', (chunk) => {
42
- for (const rawLine of chunk.split(/\r?\n/)) {
43
- const line = rawLine.trim()
44
- if (!line) continue
45
- const json = tryParse(line)
46
- if (json === null) {
47
- aDrops.push(line)
48
- continue
49
- }
50
- aFrames.push(json.type)
51
- if (json.type === 'message') aDeltas.push(json.content)
52
- }
53
- })
54
- })
55
-
56
- // ---- B. verbatim copy of stdio-jsonrpc.ts:234-252 (buffered) ----
57
- const bFrames = []
58
- let buf = ''
59
- await feed((s) => {
60
- s.on('data', (data) => {
61
- buf += data
62
- const lines = buf.split('\n')
63
- buf = lines.pop() ?? ''
64
- for (const line of lines) {
65
- const trimmed = line.trim()
66
- if (!trimmed) continue
67
- const json = tryParse(trimmed)
68
- if (json === null) continue
69
- bFrames.push(json.type)
70
- }
71
- })
72
- })
73
-
74
- console.log('A one-shot-cli-agent.ts loop : frames=%d %j drops=%d %j assistantText=%j',
75
- aFrames.length, aFrames, aDrops.length, aDrops, aDeltas.join(''))
76
- console.log('B stdio-jsonrpc.ts loop : frames=%d %j', bFrames.length, bFrames)
77
- console.log('VERDICT: one-shot loses %d/%d frames and the entire assistant message.', 2 - aFrames.length, 2)
@@ -1,20 +0,0 @@
1
- /**
2
- * Audit repro: `await` binds tighter than `?:`, so the expression at
3
- * server/services/workshop/agents/opencode-agent.ts:805-808 yields a Promise, never the
4
- * resolved session object.
5
- */
6
- const DEFAULT_PERMISSION = [{ permission: 'edit' }]
7
-
8
- const api = async (path, body) => ({ id: 'ses_real', echo: body })
9
- const createWith = (extra) => api('/session', { ...extra })
10
-
11
- const created = await (DEFAULT_PERMISSION) // <- `await` applies ONLY to the condition
12
- ? createWith({ permission: DEFAULT_PERMISSION }).catch(() => createWith(undefined))
13
- : createWith(undefined)
14
-
15
- console.log('typeof created =', typeof created)
16
- console.log('created instanceof Promise=', created instanceof Promise)
17
- console.log('created?.id =', created?.id)
18
- const sessionId = String(created?.id ?? '')
19
- console.log('this.sessionId =', JSON.stringify(sessionId))
20
- console.log('if (!this.sessionId) =', !sessionId, '-> enters 3x retry loop, then throws')
@@ -1,84 +0,0 @@
1
- - **Evidence**: the PATCH authenticates and then mutates by **row id** with no ownership, line, or role check 鈥?no `lineMode`, no verification that the binding belongs to a channel the caller can see:
2
-
3
- ```ts
4
- // bindings/[id].patch.ts:9-14
5
- export default defineApiHandler(async (event) => {
6
- resolveUser(event)
7
- const id = getRouterParam(event, 'id')!
8
- const body = await readBody<{ mode?: 'auto' | 'manual' }>(event) ?? {}
9
- return { binding: getAgentNodeBindingRepo().setMode(id, body.mode ?? 'auto') }
10
- })
11
- ```
12
-
13
- The DELETE is the same, and it additionally force-denies the target agent's in-flight approval:
14
-
15
- ```ts
16
- // bindings/[id].delete.ts:10-20
17
- export default defineApiHandler(async (event) => {
18
- resolveUser(event)
19
- const id = getRouterParam(event, 'id')!
20
- const repo = getAgentNodeBindingRepo()
21
- const all = repo.all()
22
- const binding = all.find(b => b.id === id)
23
- if (!binding) throw createError({ statusCode: 404, statusMessage: 'binding not found' })
24
- if (!repo.unbind(id)) throw createError({ statusCode: 404, statusMessage: 'binding not found' })
25
- // 瑙g粦鍗冲け鏁?璇?Agent 瀵硅鑺傜偣鐨勬寕璧峰鎵规寜鎷掔粷鏀舵暃(tool result 娉ㄦ槑鍘熷洜)
26
- getToolApprovals().cancelPendingFor(binding.agentId, binding.nodeId)
27
- return { ok: true }
28
- })
29
- ```
30
-
31
- Note the contrast with the **create** path, which *does* check the line:
32
- `bindings/index.post.ts:28-32` `const mode = lineMode(user, lineId); if (mode === 'none' || (needOperate && mode !== 'operate')) throw new AppError(403, 'LINE_FORBIDDEN', 鈥?`.
33
-
34
- - **Impact**: the entire manual-approval safety model is one unauthenticated-by-ownership PATCH away from being disabled.
35
- Any authenticated user who learns a binding id 鈥?and ids are enumerable for free, see the next finding 鈥?can flip a
36
- `dcw` binding from `manual` to `auto`, permanently removing human approval for that agent/node pair (the tool then takes
37
- the `binding.mode === 'manual'` branch at `industrial-tools.ts:128` as false and writes immediately at `:157`). The
38
- DELETE variant is worse in effect: it unbinds a *victim's* agent and cancels that agent's **pending approvals**
39
- (`cancelPendingFor` 鈫?`tool-approvals.ts:112-127` resolves them as `denied` with `'缁戝畾宸茶В闄?瀹℃壒澶辨晥'`), so an
40
- attacker can silently veto a write an operator was about to authorise, and the audit trail blames a binding change.
41
-
42
- - **Fix**: in both handlers resolve the binding first, derive its node, and enforce `requireLineMode(user, nodeLine, 'operate')`
43
- (same predicate as `bindings/index.post.ts:28-32`); additionally assert the caller owns or can read the agent's channel.
44
- Minimal version for PATCH: `const b = repo.all().find(x => x.id === id); requireLineMode(user, nodeLineOf(b), 'operate')`.
45
-
46
- - **Verification**: as a `role:'user'` with `readonly` (or no) grant on the target line,
47
- `PATCH /api/workshop/agent-tools/bindings/<id> {"mode":"auto"}` 鈫?expect 403; today it returns 200 and
48
- `GET 鈥?bindings?agentId=<victim>` shows `mode: "auto"`. Static:
49
- `rg -n "lineMode|requireLineMode|requireRole" server/api/workshop/agent-tools/bindings/\[id\].patch.ts` 鈫?0 hits today.
50
-
51
- ---
52
-
53
- ### [P0] `GET /api/workshop/agent-tools/bindings` enumerates every agent's node grants to any user
54
-
55
- - **Where**: `server/api/workshop/agent-tools/bindings/index.get.ts:9-13`
56
-
57
- - **Evidence**:
58
-
59
- ```ts
60
- // bindings/index.get.ts:12-13
61
- const agentId = typeof q.agentId === 'string' ? q.agentId : ''
62
- return { bindings: agentId ? getAgentNodeBindingRepo().byAgent(agentId) : getAgentNodeBindingRepo().all() }
63
- ```
64
-
65
- `.all()` returns the entire global binding table 鈥?`agentId`, `nodeId`, `kind`, `mode`, `id`
66
- (`node-bindings.repo.ts:22-29,48-50`) 鈥?for every agent in every channel, to **any** authenticated user with no line or
67
- ownership filter. Omitting `agentId` is the leak; supplying one is a targeted lookup.
68
-
69
- - **Impact**: this is the enumeration primitive that makes the previous two findings trivially exploitable 鈥?it hands the
70
- attacker the exact binding `id` (needed by the `[id].patch`/`[id].delete` endpoints) plus which agents control which
71
- physical nodes. It also discloses the full plant's agent鈫攁ctuator map, which is sensitive operational topology: an
72
- attacker learns which `nodeId` values are `kind:'dcw'` (writable) and which are `manual` (approval-gated) versus `auto`.
73
-
74
- - **Fix**: require `agentId`, and filter the result through `filterByLine(user, 鈥?` on the node's line (or the agent's
75
- channel ownership); only `admin`/`editor` may call it without a filter 鈥?mirroring `agents/index.get.ts:11`'s
76
- `listAgentsVisibleTo(user)` pattern.
77
-
78
- - **Verification**: as a `role:'user'` with no grants, `GET /api/workshop/agent-tools/bindings` (no query) 鈫?today returns
79
- every binding; after the fix expect 400 or an empty/filtered list.
80
- Static: `rg -n "filterByLine|lineMode|visibleLineIds" server/api/workshop/agent-tools/bindings/index.get.ts` 鈫?0 hits.
81
-
82
- ---
83
-
84
- ### [P1] Industrial GET handlers return cross-line data (no `filterByLine`)
@@ -1,45 +0,0 @@
1
- # Audit 鈥?Agent runtime integration + node-binding access control
2
-
3
- Scope: `server/services/workshop/agents/**`, `server/services/workshop/runtime/**`, `server/services/workshop/permissions.ts`,
4
- `server/api/workshop/agents/**`, `server/api/workshop/agent-tools/**`, `server/api/workshop/runtime.get.ts`, related repos.
5
- Read-only audit. Working tree unmodified. Scratch: `scripts/_audit/`.
6
-
7
- Legend: **P0** = authz hole / unsafe mutation / leak 路 **P1** = correctness/perf 路 **P2** = duplication/hygiene.
8
- `鈿燯NVERIFIED` marks a claim not personally confirmed against source.
9
-
10
- ---
11
-
12
- ## Executive summary
13
-
14
- | # | Severity | Finding | Anchor |
15
- |---|---|---|---|
16
- | 1 | **P0** | `dcw_rollback(node_id=鈥?` writes a DCW node with **no binding check** and **no HITL approval** | `industrial-tools.ts:401-420`, `recipe-rollback-manager.ts:253-279` |
17
- | 2 | **P0** | Manual-mode binding promise ("姣忔鎵ц闇€鐢ㄦ埛鎵瑰噯") is bypassed by the rollback path | `dcw-controller.ts:503-517`, `recipe-rollback-manager.ts:403-410` |
18
- | 3 | **P0** | Any authenticated dashboard user can invoke **any tool as any `agentId`** on the tool bridge (incl. arbitrary Python via `aml_job_submit`) | `agent-tools/invoke.post.ts:16-26`, `manager.ts:2746-2752`, `industrial-tools.ts:1150-1170` |
19
- | 4 | **P0** | `dcw_judge`/`dcw_rollback` accept takeover of **stale records on unbound nodes** (write path) | `industrial-tools.ts:381-383,413-416` |
20
- | 5 | **P0** | `PATCH`/`DELETE /agent-tools/bindings/:id` let any user flip any binding to `auto` (= strip HITL) or cancel another agent's pending approvals | `bindings/[id].patch.ts:9-14`, `bindings/[id].delete.ts:10-20` |
21
- | 6 | **P0** | `GET /agent-tools/bindings` (no query) returns the whole global agent鈫攏ode grant table to any user 鈥?the enumeration primitive for #5 | `bindings/index.get.ts:12-13` |
22
- | 7 | P1 | Industrial GET handlers return cross-line recipes/runs/alarms/ledgers (no `filterByLine`) | `dcw/recipes/index.get.ts:8-11`, `daq/alarms.get.ts:10-15` |
23
- | 8 | P1 | `GET /api/workshop/channels/:id` boots runtimes and mutates the messages table | `channels/[id]/index.get.ts:16`, `manager.ts:694-720` |
24
- | 9 | P1 | `GET /api/workshop/workspaces` DELETEs rows from inside a `.filter()` callback | `manager.ts:1125-1129` |
25
- | 10 | P1 | `GET /api/workshop/daq` inserts node rows and starts the 250 ms acquisition timer | `daq/index.get.ts:20-22`, `daq-controller.ts:1146-1163` |
26
- | 11 | P1 | Scheduler tick scans the channel's entire task history, every tick | `task-engine.ts:137-139`, `task.repo.ts:80` |
27
- | 12 | P1 | NDJSON partial-line handling missing in the shared base used by 13 harnesses | `one-shot-cli-agent.ts:406-428` |
28
- | 13 | P1 | `runMemoryMaintenance` still does `limit=1_000_000` + JS-filter per agent | `runtime/memory.ts:668-674` |
29
- | 14 | P1 | `reflectCounts` / `lastToolInvokeAt` / `ownerNameCache` / `nameCache` / `probeCache` / `runErrorRetries` / `idleSince` are unbounded | 搂3 |
30
- | 15 | P1 | `limit: 1_000_000` / `10_000` to fetch one memory row by id | `manager.ts:1489`, `:1552` |
31
- | 16 | P1 | `pickReceiverWorker` does one task query per candidate (N+1) | `manager.ts:1744-1757` |
32
- | 17 | P1 | Renaming/disabling a *busy* member silently has no effect (disabled workers keep working) | `manager.ts:1571-1581`, `:745-749` |
33
- | 18 | P1 | No cap on concurrent agent child processes / sessions | 搂7 |
34
- | 19 | P2 | 12+ adapters duplicate spawn/env/parse/kill/queue logic instead of declaring a spec | 搂8 |
35
- | 20 | P2 | `manager.ts` (3016 lines) mixes 16 unrelated subsystems | 搂9 |
36
- | 21 | P2 | `harness-models.opencodeCatalog` leaks temp dirs containing copied provider credentials | `harness-models.ts:133,143` |
37
-
38
- **Q1 answer (short):** the binding **is** enforced on `dcw_control` / `dcw_read` / `daq_query` / `daq_frames` / `dcw_journal` /
39
- `ops_log` / `recipe_log` / `aml_*`. It is **NOT** enforced on `dcw_rollback` and is only *partially* enforced on
40
- `dcw_judge`. Unbound agents therefore **do not** get a default-allow on `dcw_control` (good), but they **do** get one on
41
- the rollback write path (P0). There is no "no bindings 鈬?allow all" fallback anywhere.
42
-
43
- ---
44
-
45
- ### [P0] `dcw_rollback` writes any DCW node without any node-binding check
@@ -1,17 +0,0 @@
1
- // audit probe: child-lifecycle signal semantics
2
- import { runChild, signalExitCode, SHUTDOWN_GRACE_MS } from '../../cli/core/child-lifecycle.mjs'
3
-
4
- console.log('signalExitCode(SIGINT) =', signalExitCode('SIGINT'))
5
- console.log('signalExitCode(SIGTERM) =', signalExitCode('SIGTERM'))
6
- console.log('signalExitCode(SIGKILL) =', signalExitCode('SIGKILL'))
7
- console.log('signalExitCode(SIGWEIRD) =', signalExitCode('SIGWEIRD'))
8
- console.log('SHUTDOWN_GRACE_MS =', SHUTDOWN_GRACE_MS)
9
-
10
- const normal = await runChild(process.execPath, ['-e', 'process.exit(7)'], { stdio: 'inherit' })
11
- console.log('normal child exit 7 ->', normal)
12
-
13
- const selfKill = await runChild(process.execPath, ['-e', 'process.kill(process.pid, "SIGTERM")'], { stdio: 'inherit' })
14
- console.log('self-SIGTERM child ->', selfKill, '(POSIX convention would be 143)')
15
-
16
- const missing = await runChild(process.execPath, ['-e', ''], { stdio: 'inherit' })
17
- console.log('clean child ->', missing)
@@ -1,49 +0,0 @@
1
- // audit probe: SDK envelope handling — api.mjs vs client.mjs ctx.fetch (fixed document stub)
2
- import { createServer } from 'node:http'
3
- import { createPlatformClient } from '../../sdk/api.mjs'
4
-
5
- const srv = createServer((req, res) => {
6
- res.setHeader('content-type', 'application/json')
7
- if (req.url.startsWith('/api/biz-error')) {
8
- res.end(JSON.stringify({ code: 'LINE_FORBIDDEN', message: '无该产线权限', data: null }))
9
- return
10
- }
11
- if (req.url.startsWith('/api/http-500')) {
12
- res.statusCode = 500
13
- res.end(JSON.stringify({ code: 'INTERNAL_ERROR', message: '服务器内部错误', data: null }))
14
- return
15
- }
16
- res.end(JSON.stringify({ code: 0, message: 'ok', data: { hello: 'world' } }))
17
- })
18
- await new Promise(r => srv.listen(0, '127.0.0.1', r))
19
- const base = `http://127.0.0.1:${srv.address().port}`
20
-
21
- globalThis.document = {
22
- cookie: '',
23
- addEventListener() {},
24
- removeEventListener() {},
25
- createElement: () => ({ style: {}, setAttribute() {}, append() {}, addEventListener() {} }),
26
- getElementById: () => null,
27
- body: { append() {} },
28
- visibilityState: 'visible',
29
- }
30
- const { createClientContext } = await import('../../sdk/client.mjs')
31
- const cctx = createClientContext({ name: 'probe', baseUrl: base })
32
- console.log('ctx.fetch(/api/ok) ->', JSON.stringify(await cctx.fetch('/api/ok')))
33
- try {
34
- const r = await cctx.fetch('/api/biz-error')
35
- console.log(`ctx.fetch(/api/biz-error) -> NO THROW, returned ${JSON.stringify(r)} <-- business error swallowed`)
36
- }
37
- catch (err) {
38
- console.log(`ctx.fetch(/api/biz-error) -> threw: status=${err.status} code=${err.code} message=${err.message}`)
39
- }
40
- try {
41
- await cctx.fetch('/api/http-500')
42
- console.log('ctx.fetch(/api/http-500) -> NO THROW (bug)')
43
- }
44
- catch (err) {
45
- console.log(`ctx.fetch(/api/http-500) -> threw: status=${err.status} code=${err.code} hasBody=${'body' in err}`)
46
- }
47
- srv.closeAllConnections?.()
48
- await new Promise(r => srv.close(r))
49
- process.exit(0)
@@ -1,67 +0,0 @@
1
- // audit probe: packlist-equivalent check of package.json "files" vs "exports" + transitive relative imports
2
- import { readFileSync, existsSync, statSync } from 'node:fs'
3
- import { dirname, join, resolve, relative } from 'node:path'
4
-
5
- const ROOT = resolve(process.cwd())
6
- const pkg = JSON.parse(readFileSync(join(ROOT, 'package.json'), 'utf8'))
7
- const files = pkg.files ?? []
8
-
9
- const under = (rel, entry) => {
10
- const e = entry.replace(/^\.\//, '').replace(/\/$/, '')
11
- if (rel === e) return true
12
- if (rel.startsWith(`${e}/`)) return true
13
- return false
14
- }
15
- const covered = rel => files.some(f => under(rel, f))
16
- const cov = rel => covered(rel) ? 'COVERED' : '*** NOT-COVERED ***'
17
-
18
- console.log('== exports targets vs "files" whitelist ==')
19
- const targets = []
20
- for (const [key, val] of Object.entries(pkg.exports ?? {})) {
21
- for (const [cond, p] of Object.entries(val)) {
22
- if (typeof p !== 'string' || !p.startsWith('./')) continue
23
- targets.push(p.slice(2))
24
- console.log(` ${codepoint(p)} ${key} (${cond}) -> ${p.slice(2)}: ${cov(p.slice(2))}`)
25
- }
26
- }
27
- for (const [name, p] of Object.entries(pkg.bin ?? {})) {
28
- console.log(` bin ${name} -> ${p}: ${cov(p)}`)
29
- }
30
-
31
- // always included by npm regardless of "files"
32
- const always = ['package.json', 'README.md', 'README-zh.md', 'LICENSE', '.npmrc', '.gitignore']
33
- console.log('\n== named dependencies (.npmrc/.gitignore are NEVER shipped) ==')
34
- for (const f of always) console.log(` ${f}: ${existsSync(join(ROOT, f)) ? (covered(f) ? 'in files' : 'not in files (npm default rules apply)') : 'absent'}`)
35
-
36
- // transitive relative-import scan from entry points
37
- const entries = [...new Set([...targets, ...Object.values(pkg.bin ?? {})])]
38
- const seen = new Set()
39
- const missing = []
40
- const specRe = /(?:from\s*|import\s*\(\s*|import\s+)['"]([^'"]+)['"]/g
41
-
42
- function scan(rel) {
43
- if (seen.has(rel)) return
44
- seen.add(rel)
45
- const abs = join(ROOT, rel)
46
- if (!existsSync(abs) || !statSync(abs).isFile()) { missing.push(`${rel} (does not exist)`); return }
47
- if (!covered(rel)) missing.push(`${rel} (not covered by "files")`)
48
- if (!/\.(mjs|js|cjs|d\.mts|mts)$/.test(rel)) return
49
- const src = readFileSync(abs, 'utf8')
50
- for (const m of src.matchAll(specRe)) {
51
- const spec = m[1]
52
- if (spec.startsWith('node:') || spec.startsWith('@/') || !spec.startsWith('.')) continue
53
- const target = resolve(dirname(abs), spec)
54
- const relTarget = relative(ROOT, target).replace(/\\/g, '/')
55
- scan(relTarget)
56
- }
57
- }
58
-
59
- for (const e of entries) scan(e.replace(/^\.\//, ''))
60
- console.log(`\n== transitive relative-import graph: ${seen.size} files reached from ${entries.length} entry points ==`)
61
- if (missing.length) {
62
- console.log('PROBLEMS:')
63
- for (const m of [...new Set(missing)]) console.log(' ' + m)
64
- }
65
- else { console.log(' every reached file exists and is covered by "files"') }
66
-
67
- function codepoint(s) { return s.padEnd(22) }
@@ -1,47 +0,0 @@
1
- // audit probe: compare SDK createPlatformClient paths against the live server (route existence only)
2
- // A route that exists but requires auth answers 401/UNAUTHORIZED; a missing route answers 404/NOT_FOUND.
3
- const BASE = process.env.AW_PROBE_BASE ?? 'http://127.0.0.1:3001'
4
-
5
- const probes = [
6
- ['users.list', 'GET', '/api/users'],
7
- ['users.get', 'GET', '/api/users/__nonexistent__'],
8
- ['users.update(PATCH)', 'PATCH', '/api/users/__nonexistent__'],
9
- ['users.update(PUT)', 'PUT', '/api/users/__nonexistent__'],
10
- ['users.me', 'GET', '/api/users/me'],
11
- ['lines.list', 'GET', '/api/workshop/dcw/lines'],
12
- ['lines.get', 'GET', '/api/workshop/dcw/lines/__nonexistent__'],
13
- ['products.list', 'GET', '/api/workshop/dcw/products'],
14
- ['products.get', 'GET', '/api/workshop/dcw/products/__nonexistent__'],
15
- ['recipes.list', 'GET', '/api/workshop/dcw/recipes'],
16
- ['dcwNodes.list', 'GET', '/api/workshop/dcw'],
17
- ['dcwNodes.get', 'GET', '/api/workshop/dcw/__nonexistent__'],
18
- ['daqNodes.list', 'GET', '/api/workshop/daq'],
19
- ['daqNodes.get', 'GET', '/api/workshop/daq/__nonexistent__'],
20
- ['daqNodes.alarms', 'GET', '/api/workshop/daq/alarms'],
21
- ['twins.list', 'GET', '/api/workshop/device-twins'],
22
- ['twins.get', 'GET', '/api/workshop/device-twins/__nonexistent__'],
23
- ['teams.list', 'GET', '/api/workshop/teams'],
24
- ['teams.get', 'GET', '/api/workshop/teams/__nonexistent__'],
25
- ['agents.list', 'GET', '/api/workshop/agents'],
26
- ['channels.list', 'GET', '/api/workshop/channels'],
27
- ['permissions.overview', 'GET', '/api/workshop/permissions'],
28
- ['plugins.manifest', 'GET', '/api/plugins/manifest'],
29
- ['ping(=manifest)', 'GET', '/api/plugins/manifest'],
30
- ['templates.daq', 'GET', '/api/workshop/daq'],
31
- ['templates.dcw', 'GET', '/api/workshop/dcw'],
32
- ]
33
-
34
- for (const [name, method, path] of probes) {
35
- let line
36
- try {
37
- const res = await fetch(`${BASE}${path}`, { method, headers: { accept: 'application/json' } })
38
- const body = await res.json().catch(() => null)
39
- const code = body && typeof body === 'object' ? (body.code ?? '(none)') : '(non-json)'
40
- const hasTemplates = body && typeof body === 'object' && body.data && typeof body.data === 'object' && 'templates' in body.data
41
- line = `${name.padEnd(22)} ${String(method).padEnd(5)} ${path.padEnd(46)} http=${res.status} code=${String(code).slice(0, 24)} templates=${hasTemplates}`
42
- }
43
- catch (err) {
44
- line = `${name.padEnd(22)} ${String(method).padEnd(5)} ${path.padEnd(46)} FETCH-FAIL ${err.message}`
45
- }
46
- console.log(line)
47
- }
@@ -1,38 +0,0 @@
1
- // audit probe v2: distinguish "route missing" (h3 bare 404) from "route exists" (envelope JSON)
2
- const BASE = process.env.AW_PROBE_BASE ?? 'http://127.0.0.1:3001'
3
- const probes = [
4
- ['users.list ', 'GET', '/api/users'],
5
- ['users.get ', 'GET', '/api/users/__none__'],
6
- ['users.update PATCH(sdk) ', 'PATCH', '/api/users/__none__'],
7
- ['users.update PUT(server) ', 'PUT', '/api/users/__none__'],
8
- ['lines.list ', 'GET', '/api/workshop/dcw/lines'],
9
- ['lines.get ', 'GET', '/api/workshop/dcw/lines/__none__'],
10
- ['lines.update PATCH ', 'PATCH', '/api/workshop/dcw/lines/__none__'],
11
- ['products.list ', 'GET', '/api/workshop/dcw/products'],
12
- ['products.get ', 'GET', '/api/workshop/dcw/products/__none__'],
13
- ['products.update PATCH ', 'PATCH', '/api/workshop/dcw/products/__none__'],
14
- ['recipes.list ', 'GET', '/api/workshop/dcw/recipes'],
15
- ['recipes.get ', 'GET', '/api/workshop/dcw/recipes/__none__'],
16
- ['recipes.update PATCH ', 'PATCH', '/api/workshop/dcw/recipes/__none__'],
17
- ['dcwNodes.get ', 'GET', '/api/workshop/dcw/__none__'],
18
- ['daqNodes.get ', 'GET', '/api/workshop/daq/__none__'],
19
- ['twins.get ', 'GET', '/api/workshop/device-twins/__none__'],
20
- ['teams.get ', 'GET', '/api/workshop/teams/__none__'],
21
- ['agents.get ', 'GET', '/api/workshop/agents/__none__'],
22
- ['channels.list ', 'GET', '/api/workshop/channels'],
23
- ['unknown /api/workshop/nope ', 'GET', '/api/workshop/nope'],
24
- ['unknown /api/workshop/dcw/products (GET, route missing)', 'GET', '/api/workshop/dcw/products'],
25
- ]
26
-
27
- for (const [name, method, path] of probes) {
28
- try {
29
- const res = await fetch(`${BASE}${path}`, { method, headers: { accept: 'application/json' } })
30
- const text = await res.text()
31
- const kind = text === '' ? 'EMPTY-BODY(h3 bare 404/405)'
32
- : (text.trimStart().startsWith('{') ? `JSON ${text.slice(0, 72).replace(/\s+/g, ' ')}` : `RAW ${text.slice(0, 40).replace(/\s+/g, ' ')}`)
33
- console.log(`${name} ${String(method).padEnd(5)} http=${String(res.status).padEnd(3)} ct=${String(res.headers.get('content-type')).padEnd(16)} ${kind}`)
34
- }
35
- catch (err) {
36
- console.log(`${name} FETCH-FAIL ${err.message}`)
37
- }
38
- }
@@ -1,9 +0,0 @@
1
- // audit probe: does the SDK type surface resolve the way docs promise?
2
- import { createClientContext, type ClientContext } from '@/sdk/client.mjs'
3
- import type { PluginContext, PluginDef, PlatformClient } from '@/sdk/index.mjs'
4
-
5
- export const a: ClientContext | null = null
6
- export const b: PluginContext | null = null
7
- export const c: PluginDef | null = null
8
- export const d: PlatformClient | null = null
9
- export const e = createClientContext
@@ -1,6 +0,0 @@
1
- // audit probe 2: relative specifier (no alias), mirrors nuxt app compilerOptions
2
- import type { ClientContext } from '../../sdk/client.mjs'
3
- import type { PluginContext } from '../../sdk/index.mjs'
4
-
5
- export const a2: ClientContext | null = null
6
- export const b2: PluginContext | null = null
@@ -1,3 +0,0 @@
1
- // audit probe 3: phantom named export `el` (declared in client.d.mts, absent at runtime)
2
- import { el } from '../../sdk/client.mjs'
3
- export const f = el
@@ -1,3 +0,0 @@
1
- // audit probe 4: runtime exports missing from index.d.mts
2
- import { isPathInside, validatePluginSettings } from '../../sdk/index.mjs'
3
- export const g = [isPathInside, validatePluginSettings]
@@ -1,13 +0,0 @@
1
- // scratch audit command: echoes the argv the CLI dispatcher produced
2
- export const meta = {
3
- name: 'echoargs',
4
- group: 'audit',
5
- summary: 'echo parsed argv (audit scratch)',
6
- usage: 'aw echoargs [--any]',
7
- needsProject: false,
8
- }
9
-
10
- export async function run(argv, ctx) {
11
- console.log(JSON.stringify({ argv, mode: ctx.mode, root: ctx.root, cwd: ctx.cwd }))
12
- return 0
13
- }
@@ -1 +0,0 @@
1
- # scratch audit project (read-only audit harness; safe to delete)
@@ -1,30 +0,0 @@
1
- /**
2
- * 审计实验运行器(只读审计专用):
3
- * 1) **强制隔离运行数据目录**(AW_DATA_DIR/AW_MODE/AW_HOME → scripts/_audit/.tmp):
4
- * 仓库已改为 ensureDataDir()(配置根 <repo>/.AgentWorkShop/data),单纯 chdir 不再隔离,
5
- * 实验若不做这一步会把合成数据写进线上数据根(本轮审计已发生并已修复)。
6
- * 2) 注册扩展名省略解析钩子(仓库源码风格 './dcw-node' 与 '@/' 别名);
7
- * 3) 加载目标 TS 入口。
8
- * 用法:node scripts/_audit/run.mjs scripts/_audit/<entry>.ts
9
- */
10
- import { mkdirSync } from 'node:fs'
11
- import { register } from 'node:module'
12
- import { fileURLToPath, pathToFileURL } from 'node:url'
13
-
14
- const TMP = new URL('./.tmp/', import.meta.url)
15
- const TMP_DIR = fileURLToPath(TMP)
16
- mkdirSync(TMP_DIR, { recursive: true })
17
-
18
- process.env.AW_DATA_DIR = fileURLToPath(new URL('./.tmp/audit-data/', import.meta.url))
19
- process.env.AW_MODE = 'home'
20
- process.env.AW_HOME = fileURLToPath(new URL('./.tmp/awhome/', import.meta.url))
21
- mkdirSync(process.env.AW_DATA_DIR, { recursive: true })
22
- mkdirSync(process.env.AW_HOME, { recursive: true })
23
-
24
- register('./ts-resolve-hook.mjs', import.meta.url)
25
- const entry = process.argv[2]
26
- if (!entry) {
27
- console.error('usage: node scripts/_audit/run.mjs <entry.ts>')
28
- process.exit(2)
29
- }
30
- await import(pathToFileURL(entry).href)
@@ -1,24 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ESNext",
4
- "module": "preserve",
5
- "moduleResolution": "Bundler",
6
- "allowJs": true,
7
- "strict": true,
8
- "noEmit": true,
9
- "skipLibCheck": true,
10
- "verbatimModuleSyntax": true,
11
- "paths": {
12
- "@/*": [
13
- "../../*"
14
- ]
15
- },
16
- "types": []
17
- },
18
- "include": [
19
- "probe.ts",
20
- "probe2.ts",
21
- "probe3.ts",
22
- "probe4.ts"
23
- ]
24
- }