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
@@ -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
- }