agentworkshop 0.7.34 → 0.7.38

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 (985) 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/44b66249-54d0-4c8a-9057-9755a32329e2.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 +1657 -1162
  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-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.continue.json +1 -0
  345. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.json +1 -0
  346. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/054bb4bc4e4217a2ab0b0c6b663747214a9af464f5568ea60e784704e340bb0f.source +153 -0
  347. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/0554197c3d2bac203a1f5c48a5d52495d1336db1bd7aa4f4c19875810363e684.source +153 -0
  348. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/05c203d12a954fffba942e1d626e3f5fec05b18a5aef2bac003b7884a4b77406.source +431 -0
  349. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/145a6e6ba811af35aed31e0cc3211f53706a14980fa069ee9e3c1591139f96f0.source +180 -0
  350. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/1ae0fb281f97899c025e368ca73f41349b01fb5f85b19e08d7ebccff49095ed5.source +112 -0
  351. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/20ee9967aa0541c516db7575bdd4a1a745939bc7016bd10d7635903113edb8ec.source +227 -0
  352. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/233751843aeba9d4c5263f275b8102de00443c06f286918cbd23e0b6729e01aa.source +131 -0
  353. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/263c2e05b425e5c322e60c6475279f963bab3a873eb521b21df7fec935a46597.source +160 -0
  354. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/2ac5eaac28eaaee2178c4b32014df8e732f9dd432a285a872f5b7f31c1395fa4.source +157 -0
  355. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/33a0db0d2d95d2c11d0720090458e5fba1425376f5ceb5b422d1d3471be3226b.source +348 -0
  356. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/359e474ae83db35e4615d3728de6bf694b64d4dce9b536730a3b6518f9c0494a.source +296 -0
  357. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/37a4c3c31c4b70f6b719c53d1e9c4fcba603f31adfdd11bb6ef9f0d094923c56.source +285 -0
  358. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/461feca1c14a695eb8b0f17a6f95fe97eeceabc0510faaea4ba6d25bde147d8d.source +217 -0
  359. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/4cfadbda8591f29d5e1e230dc000e701b756e850441b3900fb596a4d2f6e98c2.source +301 -0
  360. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/50ca2810cf0b248c96948994c0c404531bbad6e553166b6816b3b03bfa0f75d2.source +151 -0
  361. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/52d9e8cb591a9ae86e238c3620a610cd386717bee222c0f37b25b2ac7e523dc4.source +135 -0
  362. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/6c87daafa4c006560a954636a97333f6123153c9d34d96203f7ee3a14e556357.source +156 -0
  363. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/77bc47854b577900621cacf1697f81fa2bc005af129d37614a97a3441c08f99f.source +72 -0
  364. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/7bbb789d3a527817118cf8399ed1861d6a962ade10878fd07223435d333a7089.source +469 -0
  365. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/86b7c1daafc8b60ba9982dde5bf1bcc74265709483c176e71f23ec6fc267451f.source +259 -0
  366. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/8df66d62bd41984d0970e8236882080c5085ac937d07a29779463d6a03b37c76.source +97 -0
  367. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/9962f2d1b3a85137bd40cc835725600b39f89ee02a27c06b2e0402e1eafde115.source +277 -0
  368. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/a1090ea066b792cb201739f4994e37bf7c12f52e805239a1eab87f18a537f266.source +171 -0
  369. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/a5241091650134d0919897e086a606a3846c8b2b54f8b4c84a8696c145ac3e9e.source +425 -0
  370. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/af19fa4c6e34d5540028be4b17600161283af3a2a2dfc61a3fdc0834436a0c14.source +99 -0
  371. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/b3713d78e2b2f93905ff6be8d58a8d0a2f42dea322eb67c987fda22ff6a084d5.source +325 -0
  372. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/b3849943c3aff102d1af815631fc843a2a52c17646a4b04696ece323e483bbec.source +332 -0
  373. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/bac735a3803a6650b7f1eb8f587e6dc5c68ea055000c3c99a11789438b78e837.source +43 -0
  374. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/d32c24d61eb8b33c73e5a8fc7e4dc7ef437aed238ee4371c2b00617e6104090a.source +154 -0
  375. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/d5170dc9a9879fda04fdf91d8a110d4efb6787ee38dda596d4da899883d36a72.source +531 -0
  376. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/dc59bcd7bb397be63ba2f2c3fec23f3782dcb17d2d75a9981eeced761f33eb32.source +439 -0
  377. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/eb5ff8cf66b92aec7bf6726781d8df74faa2b030c3aaac17d6b00c1fc04c9b32.source +323 -0
  378. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f10615a6fae18436e70d1201b2d44fdae3174a3aa7bb4db97dea1b3ed291d721.source +433 -0
  379. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f36d3e271668bc1260c2823542d22dbf1d0f7041ff16b1ac175bce2256e582ca.source +280 -0
  380. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f94449380af09f31ac352152007146a75cc80bae8d6411ffe57b2c56f933b0ff.source +117 -0
  381. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/fe4dfd81178fd6b648335f6405d9ede71319aebde796008e50db21f8adf44c99.source +160 -0
  382. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/ffb4e3aa548cfdadabaa44ab599f9b6a3ca6288176a2cc7a4b2fc2a12b5fb848.source +101 -0
  383. package/scripts/.mimosa/hook-status/sess_aeaecb58-8833-4b83-b93c-050467d21e03-d944d71bb3.json +14 -0
  384. package/scripts/_audit/aml-layout-diag.mjs +83 -0
  385. package/scripts/_audit/bump-version.mjs +51 -0
  386. package/scripts/_audit/channel-inspect.mjs +49 -0
  387. package/scripts/_audit/cleanup-apply.mjs +89 -0
  388. package/scripts/_audit/cleanup-plan.mjs +82 -0
  389. package/scripts/_audit/contrast-check.mjs +43 -0
  390. package/scripts/_audit/dcw-unrecorded-write.ts +1 -1
  391. package/scripts/_audit/design-shots.mjs +145 -0
  392. package/scripts/_audit/docs-font-probe.mjs +68 -0
  393. package/scripts/_audit/docs-probe.mjs +107 -0
  394. package/scripts/_audit/docs-shots.mjs +171 -0
  395. package/scripts/_audit/docs-v3-verify.mjs +255 -0
  396. package/scripts/_audit/docs-vue-lint.mjs +81 -0
  397. package/scripts/_audit/docs-vue-lint2.mjs +91 -0
  398. package/scripts/_audit/exp-cost-scaling.mjs +4 -1
  399. package/scripts/_audit/exp-envelope-and-png.mjs +2 -1
  400. package/scripts/_audit/exp-sweep-fairness.mjs +4 -2
  401. package/scripts/_audit/fix-settings-count.mjs +57 -0
  402. package/scripts/_audit/glass-verify.mjs +155 -0
  403. package/scripts/_audit/hydration-diff.mjs +104 -0
  404. package/scripts/_audit/hydration-head.mjs +36 -0
  405. package/scripts/_audit/hydration-probe.mjs +59 -0
  406. package/scripts/_audit/lead-matrix-test.mjs +172 -0
  407. package/scripts/_audit/plc-agent-task.mjs +74 -0
  408. package/scripts/_audit/plc-clean-scenario.mjs +434 -0
  409. package/scripts/_audit/plc-clean-shots.mjs +161 -0
  410. package/scripts/_audit/plc-fc10-probe.mjs +30 -0
  411. package/scripts/_audit/probe-binding.mjs +114 -103
  412. package/scripts/_audit/review-fix-verify.mjs +158 -0
  413. package/scripts/_audit/seed-demo.mjs +165 -0
  414. package/scripts/_audit/town-focus-shot.mjs +129 -0
  415. package/scripts/_audit/town-reposition.mjs +85 -0
  416. package/scripts/_audit/ts-resolve-hook.mjs +57 -22
  417. package/scripts/_audit/verify-cleanup.mjs +67 -0
  418. package/scripts/_audit/verify-release-pack.mjs +82 -0
  419. package/scripts/_audit/watchdog-recovery-test.mjs +127 -0
  420. package/scripts/_dbg-audit-all-pages.mjs +43 -43
  421. package/scripts/_dbg-configroot-audit.mjs +84 -84
  422. package/scripts/_dbg-daq-intervals-func.mjs +94 -94
  423. package/scripts/_dbg-daq-rowstyle-verify.mjs +112 -112
  424. package/scripts/_dbg-groups-ui-verify.mjs +122 -122
  425. package/scripts/_dbg-harness-e2e.mjs +92 -92
  426. package/scripts/_dbg-harness-ui-e2e.py +97 -97
  427. package/scripts/_dbg-hitl-timeout-e2e.mjs +93 -93
  428. package/scripts/_dbg-multiharness-live-e2e.mjs +254 -254
  429. package/scripts/_dbg-opslog-agent-e2e.mjs +194 -194
  430. package/scripts/_dbg-opt-team-e2e.mjs +133 -133
  431. package/scripts/_dbg-recipe-e2e.mjs +176 -176
  432. package/scripts/_dbg-recipe-stale-e2e.mjs +135 -135
  433. package/scripts/_dbg-render-perf.mjs +142 -142
  434. package/scripts/_dbg-render-regression.mjs +130 -130
  435. package/scripts/_dbg-town-smoke.mjs +54 -54
  436. package/scripts/aw-start-smoke.mjs +27 -8
  437. package/scripts/check-docs-sync.mjs +367 -0
  438. package/scripts/e2e-full-closedloop.mjs +36 -18
  439. package/scripts/production-closed-loop-e2e.mjs +300 -303
  440. package/scripts/test-cli-exit.mjs +129 -21
  441. package/scripts/test-daq-frame-race.mjs +144 -96
  442. package/scripts/test-events-index.mjs +176 -0
  443. package/scripts/test-lru.mjs +34 -11
  444. package/scripts/test-memory-month-query.mjs +11 -3
  445. package/scripts/test-plugin-hardening.mjs +39 -2
  446. package/scripts/test-plugin-lifecycle.mjs +173 -0
  447. package/scripts/test-rollback-index.mjs +76 -18
  448. package/scripts/test-sdk-surface.mjs +6 -3
  449. package/sdk/client.mjs +16 -7
  450. package/sdk/context.mjs +21 -9
  451. package/sdk/examples/line-sentinel/client.mjs +13 -6
  452. package/sdk/examples/line-sentinel/index.mjs +5 -2
  453. package/sdk/examples/ops-notifier/client.mjs +3 -1
  454. package/sdk/examples/sample-insight/client.mjs +4 -2
  455. package/sdk/index.d.mts +133 -16
  456. package/sdk/index.mjs +3 -2
  457. package/sdk/lifecycle.mjs +8 -3
  458. package/server/api/workshop/agent-tools/bindings/index.post.ts +22 -7
  459. package/server/api/workshop/aml/datasets/[id].delete.ts +39 -0
  460. package/server/api/workshop/aml/datasets/[id].get.ts +31 -9
  461. package/server/api/workshop/aml/datasets/[id].patch.ts +30 -0
  462. package/server/api/workshop/aml/entities/index.get.ts +13 -0
  463. package/server/api/workshop/aml/entities/prune.post.ts +28 -0
  464. package/server/api/workshop/aml/env/index.get.ts +13 -0
  465. package/server/api/workshop/aml/env/recheck.post.ts +14 -0
  466. package/server/api/workshop/aml/env/uv.post.ts +21 -0
  467. package/server/api/workshop/aml/env/venv.post.ts +24 -0
  468. package/server/api/workshop/aml/index.get.ts +14 -1
  469. package/server/api/workshop/aml/jobs/[id].delete.ts +44 -0
  470. package/server/api/workshop/aml/models/[id].delete.ts +35 -0
  471. package/server/api/workshop/aml/models/[id].patch.ts +30 -0
  472. package/server/plugins/dev-stability-guard.ts +40 -63
  473. package/server/services/workshop/agents/agent-interface.ts +3 -0
  474. package/server/services/workshop/agents/codex-agent.ts +4 -7
  475. package/server/services/workshop/agents/dsh-agent.ts +4 -7
  476. package/server/services/workshop/agents/opencode-agent.ts +5 -7
  477. package/server/services/workshop/aml/aml.repo.ts +18 -0
  478. package/server/services/workshop/aml/dataset-builder.ts +4 -0
  479. package/server/services/workshop/aml/entity.ts +365 -0
  480. package/server/services/workshop/aml/env-manager.ts +242 -0
  481. package/server/services/workshop/aml/job-orchestrator.ts +4 -15
  482. package/server/services/workshop/aml/model-registry.ts +6 -0
  483. package/server/services/workshop/aml/python-runtime.ts +396 -62
  484. package/server/services/workshop/aml/runtime.ts +95 -4
  485. package/server/services/workshop/daq/bus/mqtt.adapter.ts +3 -1
  486. package/server/services/workshop/daq/daq-controller.ts +95 -47
  487. package/server/services/workshop/daq/daq-node.repo.ts +0 -10
  488. package/server/services/workshop/daq/daq-runtime.ts +0 -5
  489. package/server/services/workshop/json-store.mjs +35 -2
  490. package/server/services/workshop/plugins/host.mjs +14 -5
  491. package/server/services/workshop/runtime/manager.ts +28 -1
  492. package/server/services/workshop/runtime/scheduler-loop.ts +10 -1
  493. package/server/services/workshop/settings.ts +2 -0
  494. package/server/utils/stability-severity.ts +66 -0
  495. package/shared/config/home.mjs +58 -0
  496. package/shared/config/schema.json +2 -1
  497. package/shared/lru.mjs +4 -1
  498. package/.output/public/_nuxt/-6OnbLFb.js +0 -1
  499. package/.output/public/_nuxt/-nb2uqVg.js +0 -1
  500. package/.output/public/_nuxt/4bHdIqEg.js +0 -18
  501. package/.output/public/_nuxt/6PZPfFcO.js +0 -17
  502. package/.output/public/_nuxt/BBBtwOpo.js +0 -9
  503. package/.output/public/_nuxt/BBwMH_hG.js +0 -7
  504. package/.output/public/_nuxt/BDUjyaF4.js +0 -42
  505. package/.output/public/_nuxt/BNXfwXpE.js +0 -1
  506. package/.output/public/_nuxt/BN_PdN3J.js +0 -24
  507. package/.output/public/_nuxt/BSSUlJnx2.js +0 -1
  508. package/.output/public/_nuxt/BWSE6hR6.js +0 -1
  509. package/.output/public/_nuxt/BZGNTgTQ2.js +0 -1
  510. package/.output/public/_nuxt/BZv4RFYN.js +0 -1
  511. package/.output/public/_nuxt/BcmbLh2z2.js +0 -1
  512. package/.output/public/_nuxt/BfGc7TJp.js +0 -1
  513. package/.output/public/_nuxt/BgTB6h_q.js +0 -2
  514. package/.output/public/_nuxt/BkLJA9J5.js +0 -1
  515. package/.output/public/_nuxt/Bp5luxkg2.js +0 -1
  516. package/.output/public/_nuxt/BuCHayqN.js +0 -1
  517. package/.output/public/_nuxt/BuvcLKh1.js +0 -19
  518. package/.output/public/_nuxt/C3tCneTM.js +0 -1
  519. package/.output/public/_nuxt/C77oC8yC2.js +0 -7
  520. package/.output/public/_nuxt/C9f8QMp12.js +0 -1
  521. package/.output/public/_nuxt/CKfhtOt7.js +0 -13
  522. package/.output/public/_nuxt/CQvmN-Mi.js +0 -1
  523. package/.output/public/_nuxt/CUDrOuW7.js +0 -1
  524. package/.output/public/_nuxt/CZcC-gpk.js +0 -1
  525. package/.output/public/_nuxt/CbzsPO5H.js +0 -1
  526. package/.output/public/_nuxt/CdSOrh2c.js +0 -1
  527. package/.output/public/_nuxt/Cgx818r-.js +0 -1
  528. package/.output/public/_nuxt/Cjm7VogC.js +0 -1
  529. package/.output/public/_nuxt/Cm5mDxzH.js +0 -1
  530. package/.output/public/_nuxt/CmHzfVc5.js +0 -3
  531. package/.output/public/_nuxt/Cn3J3NXR.js +0 -23
  532. package/.output/public/_nuxt/Cno6kYiO2.js +0 -1
  533. package/.output/public/_nuxt/Cp6z0RN7.js +0 -1
  534. package/.output/public/_nuxt/CwqIxJGj.js +0 -2
  535. package/.output/public/_nuxt/D-Ca4BGY.js +0 -70
  536. package/.output/public/_nuxt/D0fhp-Ga.js +0 -75
  537. package/.output/public/_nuxt/D1z7i2UP.js +0 -31
  538. package/.output/public/_nuxt/DIaTPH1M.js +0 -1
  539. package/.output/public/_nuxt/DTYBfjRY.js +0 -1
  540. package/.output/public/_nuxt/DXRZPxGs.js +0 -1
  541. package/.output/public/_nuxt/DZzGarBE2.js +0 -13
  542. package/.output/public/_nuxt/DaMCzQhv.js +0 -1
  543. package/.output/public/_nuxt/DoLasgPj2.js +0 -1
  544. package/.output/public/_nuxt/DpojD719.js +0 -1
  545. package/.output/public/_nuxt/DsVcWfyR.js +0 -1
  546. package/.output/public/_nuxt/DtBu71ev.js +0 -32
  547. package/.output/public/_nuxt/Dy-mxvXY2.js +0 -1
  548. package/.output/public/_nuxt/DzuC31-i.js +0 -2
  549. package/.output/public/_nuxt/FQri3dV3.js +0 -1
  550. package/.output/public/_nuxt/ORt9oDIy2.js +0 -1
  551. package/.output/public/_nuxt/TownView.CtskuMXS.css +0 -1
  552. package/.output/public/_nuxt/VLI2Zy4t.js +0 -5
  553. package/.output/public/_nuxt/_id_.MbzdFygI.css +0 -1
  554. package/.output/public/_nuxt/_id_.hRYo-EAB.css +0 -1
  555. package/.output/public/_nuxt/_wsId_.gXMEOYgX.css +0 -1
  556. package/.output/public/_nuxt/aml.WU_bh87J.css +0 -1
  557. package/.output/public/_nuxt/arUY5dyq2.js +0 -4
  558. package/.output/public/_nuxt/builds/meta/adc365b6-f636-4a2b-9527-79819c1e874b.json +0 -1
  559. package/.output/public/_nuxt/daq.Bb6l44-O.css +0 -1
  560. package/.output/public/_nuxt/dcw.rXH2fc2Z.css +0 -1
  561. package/.output/public/_nuxt/default.jNT73_hq.css +0 -1
  562. package/.output/public/_nuxt/ekuGmQ7R.js +0 -1
  563. package/.output/public/_nuxt/entry.jFrFAWuA.css +0 -1
  564. package/.output/public/_nuxt/logs.DMOM-iHe.css +0 -1
  565. package/.output/public/_nuxt/niDwBOZW.js +0 -3
  566. package/.output/public/_nuxt/pMoIO6rr.js +0 -14
  567. package/.output/public/_nuxt/pages.Cc8GX9T1.css +0 -1
  568. package/.output/public/_nuxt/plugins.wIPyfPn-.css +0 -1
  569. package/.output/public/_nuxt/rqZ-1SoP.js +0 -2
  570. package/.output/public/_nuxt/settings.BCm4NZIc.css +0 -1
  571. package/.output/public/_nuxt/town.C_DsNW0J.css +0 -1
  572. package/.output/public/_nuxt/users.DuAt_Zwf.css +0 -1
  573. package/.output/public/_nuxt/vJ4FPb-_.js +0 -1
  574. package/.output/public/_nuxt/workshop.BJg84pOK.css +0 -1
  575. package/.output/server/chunks/build/aml-uBNIppIf.mjs +0 -508
  576. package/.output/server/chunks/build/aml-uBNIppIf.mjs.map +0 -1
  577. package/.output/server/chunks/build/daq-BvihjQyW.mjs.map +0 -1
  578. package/.output/server/chunks/build/pages-C-6BRtv8.mjs.map +0 -1
  579. package/scripts/_audit/.tmp/audit-data/dcws.json +0 -28
  580. package/scripts/_audit/.tmp/dcw-writes.json +0 -15650
  581. package/scripts/_audit/.tmp/dcws.json +0 -9033
  582. package/scripts/_audit/.tmp/pollution-backup/dcw-rollback.polluted.json +0 -470006
  583. package/scripts/_audit/.tmp/pollution-backup/dcws.polluted.json +0 -9085
  584. package/scripts/_audit/.tmp/probe-cwd.txt +0 -1
  585. package/scripts/_audit/awhome/commands/README.md +0 -3
  586. package/scripts/_audit/awhome/commands/hello.mjs +0 -12
  587. package/scripts/_audit/diag-cwd.ts +0 -20
  588. package/scripts/_audit/diag-cwd2.ts +0 -19
  589. package/scripts/_audit/hello.mjs +0 -12
  590. package/scripts/_audit/ndjson-partial-line-repro.mjs +0 -77
  591. package/scripts/_audit/opencode-await-ternary-repro.mjs +0 -20
  592. package/scripts/_audit/part-frag.txt +0 -84
  593. package/scripts/_audit/part-head.txt +0 -45
  594. package/scripts/_audit/probe-child.mjs +0 -17
  595. package/scripts/_audit/probe-envelope.mjs +0 -49
  596. package/scripts/_audit/probe-packlist.mjs +0 -67
  597. package/scripts/_audit/probe-routes.mjs +0 -47
  598. package/scripts/_audit/probe-routes2.mjs +0 -38
  599. package/scripts/_audit/probe.ts +0 -9
  600. package/scripts/_audit/probe2.ts +0 -6
  601. package/scripts/_audit/probe3.ts +0 -3
  602. package/scripts/_audit/probe4.ts +0 -3
  603. package/scripts/_audit/proj/.AgentWorkShop/commands/echoargs.mjs +0 -13
  604. package/scripts/_audit/proj/config.yml +0 -1
  605. package/scripts/_audit/run.mjs +0 -30
  606. package/scripts/_audit/tsconfig.probe.json +0 -24
  607. package/scripts/_audit/typecheck-out.txt +0 -466
  608. package/scripts/_daq-realtime-probe.mjs +0 -68
  609. package/scripts/_daq-warn-probe.mjs +0 -50
  610. package/scripts/_dbg-acc-1-setup.mjs +0 -57
  611. package/scripts/_dbg-acc-2-diag.mjs +0 -14
  612. package/scripts/_dbg-acc-2-intervals.mjs +0 -81
  613. package/scripts/_dbg-acc-3-daq.mjs +0 -48
  614. package/scripts/_dbg-acc-4-team.mjs +0 -92
  615. package/scripts/_dbg-acc-5-visual.mjs +0 -63
  616. package/scripts/_dbg-acc-5b-ws-town.mjs +0 -18
  617. package/scripts/_dbg-acc-5c-town.mjs +0 -12
  618. package/scripts/_dbg-acc-6-i18n.mjs +0 -19
  619. package/scripts/_dbg-agent-tools-audit.mjs +0 -154
  620. package/scripts/_dbg-agent-workflow-audit.mjs +0 -177
  621. package/scripts/_dbg-agents-dropdown-shot.py +0 -33
  622. package/scripts/_dbg-anim-verify.mjs +0 -81
  623. package/scripts/_dbg-app-shot.mjs +0 -48
  624. package/scripts/_dbg-autoframe.mjs +0 -103
  625. package/scripts/_dbg-availability-probe.ts +0 -11
  626. package/scripts/_dbg-beacon-final.mjs +0 -181
  627. package/scripts/_dbg-bind-bidi-e2e.mjs +0 -239
  628. package/scripts/_dbg-callout-near.mjs +0 -108
  629. package/scripts/_dbg-catalog-smoke.ts +0 -20
  630. package/scripts/_dbg-cf-line-shot.mjs +0 -18
  631. package/scripts/_dbg-chan-focus.mjs +0 -49
  632. package/scripts/_dbg-channel-plugin-ui.mjs +0 -94
  633. package/scripts/_dbg-cleanup.mjs +0 -31
  634. package/scripts/_dbg-closedloop-ui-shot.mjs +0 -61
  635. package/scripts/_dbg-codex-handshake.ts +0 -30
  636. package/scripts/_dbg-codex-probe.mjs +0 -58
  637. package/scripts/_dbg-codex-sandbox.ts +0 -58
  638. package/scripts/_dbg-codex-turn.ts +0 -65
  639. package/scripts/_dbg-collab-scenario-e2e.mjs +0 -185
  640. package/scripts/_dbg-config-smoke.ts +0 -28
  641. package/scripts/_dbg-console-audit.mjs +0 -61
  642. package/scripts/_dbg-console-probe.mjs +0 -23
  643. package/scripts/_dbg-context-inject-audit.mjs +0 -231
  644. package/scripts/_dbg-cpu-profile.mjs +0 -53
  645. package/scripts/_dbg-crash-recovery.mjs +0 -143
  646. package/scripts/_dbg-crop-shot.mjs +0 -16
  647. package/scripts/_dbg-cross-channel-e2e.mjs +0 -157
  648. package/scripts/_dbg-cross-team-visibility-e2e.mjs +0 -129
  649. package/scripts/_dbg-crush-probe.sh +0 -21
  650. package/scripts/_dbg-crush-spawn-probe.ts +0 -22
  651. package/scripts/_dbg-daq-acc-probe.mjs +0 -24
  652. package/scripts/_dbg-daq-attrib.mjs +0 -34
  653. package/scripts/_dbg-daq-bind-audit.mjs +0 -119
  654. package/scripts/_dbg-daq-cadence.mjs +0 -104
  655. package/scripts/_dbg-daq-debug.mjs +0 -22
  656. package/scripts/_dbg-daq-diag.mjs +0 -33
  657. package/scripts/_dbg-daq-e2e.mjs +0 -171
  658. package/scripts/_dbg-daq-film.mjs +0 -136
  659. package/scripts/_dbg-daq-filter-e2e.mjs +0 -109
  660. package/scripts/_dbg-daq-filter-e2e2.mjs +0 -62
  661. package/scripts/_dbg-daq-final-regression.mjs +0 -78
  662. package/scripts/_dbg-daq-frame-alarm.mjs +0 -49
  663. package/scripts/_dbg-daq-frame-ui.mjs +0 -62
  664. package/scripts/_dbg-daq-frame-ws.mjs +0 -72
  665. package/scripts/_dbg-daq-full-check.mjs +0 -179
  666. package/scripts/_dbg-daq-line-note-verify.mjs +0 -61
  667. package/scripts/_dbg-daq-linebanner-audit.mjs +0 -107
  668. package/scripts/_dbg-daq-pages-shot.mjs +0 -37
  669. package/scripts/_dbg-daq-perf.mjs +0 -61
  670. package/scripts/_dbg-daq-probe.mjs +0 -27
  671. package/scripts/_dbg-daq-recipe-e2e.mjs +0 -30
  672. package/scripts/_dbg-daq-redesign-shot.mjs +0 -88
  673. package/scripts/_dbg-daq-rows-probe.mjs +0 -26
  674. package/scripts/_dbg-daq-rowstate-e2e.mjs +0 -152
  675. package/scripts/_dbg-daq-rowstate-shot.mjs +0 -45
  676. package/scripts/_dbg-daq-rowstate-shot2.mjs +0 -38
  677. package/scripts/_dbg-daq-tpl.mjs +0 -144
  678. package/scripts/_dbg-dash-console-check.mjs +0 -49
  679. package/scripts/_dbg-dash-deep-probe.mjs +0 -61
  680. package/scripts/_dbg-dash-hitpoint.mjs +0 -44
  681. package/scripts/_dbg-dash-live-shot.mjs +0 -36
  682. package/scripts/_dbg-dash-shot.mjs +0 -21
  683. package/scripts/_dbg-dashboard-shot.mjs +0 -35
  684. package/scripts/_dbg-dcw-audit.mjs +0 -126
  685. package/scripts/_dbg-dcw-card-e2e.mjs +0 -108
  686. package/scripts/_dbg-dcw-channel-ui.mjs +0 -144
  687. package/scripts/_dbg-dcw-examples.mjs +0 -81
  688. package/scripts/_dbg-dcw-light-shot.mjs +0 -19
  689. package/scripts/_dbg-dcw-line-audit.mjs +0 -107
  690. package/scripts/_dbg-dcw-pause-tpl-audit.mjs +0 -161
  691. package/scripts/_dbg-dcw-pause-ui.mjs +0 -175
  692. package/scripts/_dbg-dcw-read-toolface.ts +0 -13
  693. package/scripts/_dbg-dcw-read-ui.mjs +0 -74
  694. package/scripts/_dbg-dcw-scene.mjs +0 -72
  695. package/scripts/_dbg-dcw-shot2.mjs +0 -14
  696. package/scripts/_dbg-dcw-twin-e2e.mjs +0 -192
  697. package/scripts/_dbg-diag-mock-loop.mjs +0 -89
  698. package/scripts/_dbg-diag-watch.mjs +0 -95
  699. package/scripts/_dbg-docs-site-shot.mjs +0 -32
  700. package/scripts/_dbg-dsh-probe.mjs +0 -31
  701. package/scripts/_dbg-dt-interact.mjs +0 -193
  702. package/scripts/_dbg-error-probe.mjs +0 -54
  703. package/scripts/_dbg-filter-light-verify.mjs +0 -54
  704. package/scripts/_dbg-final-acceptance-2.mjs +0 -72
  705. package/scripts/_dbg-final-acceptance.mjs +0 -192
  706. package/scripts/_dbg-final-agent-e2e.mjs +0 -151
  707. package/scripts/_dbg-final-features.mjs +0 -155
  708. package/scripts/_dbg-final-fixups.mjs +0 -62
  709. package/scripts/_dbg-final-full-e2e.mjs +0 -218
  710. package/scripts/_dbg-final-line-e2e.mjs +0 -173
  711. package/scripts/_dbg-final-shots.mjs +0 -32
  712. package/scripts/_dbg-final-t6-hitl.mjs +0 -38
  713. package/scripts/_dbg-final-visual.mjs +0 -29
  714. package/scripts/_dbg-fix-unused-imports.py +0 -41
  715. package/scripts/_dbg-focus-range.mjs +0 -115
  716. package/scripts/_dbg-fresh-scene-e2e.mjs +0 -125
  717. package/scripts/_dbg-fullchain-e2e.mjs +0 -178
  718. package/scripts/_dbg-gate-debug.mjs +0 -37
  719. package/scripts/_dbg-gif-encode.mjs +0 -111
  720. package/scripts/_dbg-gizmo.mjs +0 -95
  721. package/scripts/_dbg-glass-probe.mjs +0 -57
  722. package/scripts/_dbg-glass-shot.mjs +0 -50
  723. package/scripts/_dbg-glass-sweep.mjs +0 -25
  724. package/scripts/_dbg-glb-probe.mjs +0 -43
  725. package/scripts/_dbg-goose-probe.mjs +0 -33
  726. package/scripts/_dbg-goose-probe.sh +0 -10
  727. package/scripts/_dbg-hardening-probe.mjs +0 -90
  728. package/scripts/_dbg-harness-cancel-repro.mjs +0 -81
  729. package/scripts/_dbg-harness-ui-dbg.py +0 -49
  730. package/scripts/_dbg-harness-ui-shot.py +0 -109
  731. package/scripts/_dbg-hero-btn-probe.mjs +0 -21
  732. package/scripts/_dbg-hidden-check.mjs +0 -21
  733. package/scripts/_dbg-hmi-audit.mjs +0 -164
  734. package/scripts/_dbg-home-repro.mjs +0 -24
  735. package/scripts/_dbg-home-stack.mjs +0 -13
  736. package/scripts/_dbg-host.mjs +0 -16
  737. package/scripts/_dbg-huashu-survey.mjs +0 -31
  738. package/scripts/_dbg-huashu-survey2.mjs +0 -35
  739. package/scripts/_dbg-huashu-verify.mjs +0 -25
  740. package/scripts/_dbg-huashu-verify2.mjs +0 -26
  741. package/scripts/_dbg-hydration-detail.mjs +0 -18
  742. package/scripts/_dbg-i18n-debug.mjs +0 -27
  743. package/scripts/_dbg-i18n-debug2.mjs +0 -26
  744. package/scripts/_dbg-i18n-final.mjs +0 -42
  745. package/scripts/_dbg-i18n-scan.mjs +0 -38
  746. package/scripts/_dbg-infra-lifecycle.mjs +0 -44
  747. package/scripts/_dbg-interval-config.mjs +0 -156
  748. package/scripts/_dbg-interval-scenario.mjs +0 -126
  749. package/scripts/_dbg-kicker-check.mjs +0 -11
  750. package/scripts/_dbg-line-aura-shots.mjs +0 -54
  751. package/scripts/_dbg-line-control-e2e.mjs +0 -120
  752. package/scripts/_dbg-line-gate-audit.mjs +0 -108
  753. package/scripts/_dbg-line-live-e2e.mjs +0 -144
  754. package/scripts/_dbg-line-repo-test.ts +0 -10
  755. package/scripts/_dbg-line-scenario-e2e.mjs +0 -256
  756. package/scripts/_dbg-line-spawn.ts +0 -31
  757. package/scripts/_dbg-live-engine-probe.mjs +0 -80
  758. package/scripts/_dbg-login-debug.py +0 -23
  759. package/scripts/_dbg-login-e2e.mjs +0 -26
  760. package/scripts/_dbg-logs-ui-e2e.py +0 -126
  761. package/scripts/_dbg-mcp-bridge-probe.mjs +0 -147
  762. package/scripts/_dbg-modbus-latency.mjs +0 -22
  763. package/scripts/_dbg-mqtt-chain-e2e.mjs +0 -90
  764. package/scripts/_dbg-mqtt-publisher.mjs +0 -17
  765. package/scripts/_dbg-nav-rpg.mjs +0 -84
  766. package/scripts/_dbg-nav-shot.mjs +0 -28
  767. package/scripts/_dbg-nav.mjs +0 -27
  768. package/scripts/_dbg-oneshot-impl-probe.ts +0 -67
  769. package/scripts/_dbg-opencode-sse.mjs +0 -101
  770. package/scripts/_dbg-opencode-start.ts +0 -57
  771. package/scripts/_dbg-opslog-e2e.mjs +0 -121
  772. package/scripts/_dbg-opslog-shots.mjs +0 -62
  773. package/scripts/_dbg-optimization-e2e.mjs +0 -94
  774. package/scripts/_dbg-orbit.mjs +0 -58
  775. package/scripts/_dbg-overview-probe.sh +0 -31
  776. package/scripts/_dbg-panesplitter-fix-check.mjs +0 -62
  777. package/scripts/_dbg-perms-visual.mjs +0 -36
  778. package/scripts/_dbg-pg-tcp-probe.cjs +0 -27
  779. package/scripts/_dbg-phase-e3-monitor.mjs +0 -25
  780. package/scripts/_dbg-pi-spawn-probe.ts +0 -33
  781. package/scripts/_dbg-plc-agent-loop.ts +0 -102
  782. package/scripts/_dbg-plc-e2e.mjs +0 -171
  783. package/scripts/_dbg-plugin-agent-read.ts +0 -56
  784. package/scripts/_dbg-plugin-config-ui.mjs +0 -111
  785. package/scripts/_dbg-plugin-matrix.mjs +0 -212
  786. package/scripts/_dbg-plugin-panels-ui.mjs +0 -54
  787. package/scripts/_dbg-plugin-sink-rest.mjs +0 -70
  788. package/scripts/_dbg-plugin-sink-ui.mjs +0 -81
  789. package/scripts/_dbg-plugin-tools-inject.ts +0 -80
  790. package/scripts/_dbg-plugin-ui-wizard.mjs +0 -125
  791. package/scripts/_dbg-plugin-verify-e2e.mjs +0 -123
  792. package/scripts/_dbg-plugins-e2e.mjs +0 -101
  793. package/scripts/_dbg-pop-clamp-verify.mjs +0 -77
  794. package/scripts/_dbg-preset-e2e.mjs +0 -116
  795. package/scripts/_dbg-preview-console.mjs +0 -28
  796. package/scripts/_dbg-preview-minrepro.mjs +0 -156
  797. package/scripts/_dbg-preview-pixels.mjs +0 -93
  798. package/scripts/_dbg-prompts-hotreload-test.ts +0 -76
  799. package/scripts/_dbg-prompts-resolve-test.ts +0 -39
  800. package/scripts/_dbg-quality-pages-e2e.mjs +0 -84
  801. package/scripts/_dbg-query-cancel.ts +0 -12
  802. package/scripts/_dbg-qwen-acp-probe.mjs +0 -30
  803. package/scripts/_dbg-qwen-capture.mjs +0 -21
  804. package/scripts/_dbg-rail-tree-e2e.mjs +0 -183
  805. package/scripts/_dbg-real-driver-e2e.mjs +0 -55
  806. package/scripts/_dbg-redesign-shots.mjs +0 -34
  807. package/scripts/_dbg-registry-smoke.ts +0 -14
  808. package/scripts/_dbg-release-smoke.mjs +0 -104
  809. package/scripts/_dbg-repo-setup-verify.mjs +0 -31
  810. package/scripts/_dbg-resolve-probe.ts +0 -6
  811. package/scripts/_dbg-restart-persist.mjs +0 -41
  812. package/scripts/_dbg-retention-test.ts +0 -25
  813. package/scripts/_dbg-rollback-mgr-audit.mjs +0 -169
  814. package/scripts/_dbg-rpg.mjs +0 -71
  815. package/scripts/_dbg-sc001-dispatch.mjs +0 -63
  816. package/scripts/_dbg-scenario-final-shot.mjs +0 -24
  817. package/scripts/_dbg-scenario-phase-e2.mjs +0 -75
  818. package/scripts/_dbg-scenario-phase-e3.mjs +0 -96
  819. package/scripts/_dbg-scenario-phase1.mjs +0 -90
  820. package/scripts/_dbg-scenario-phase2.mjs +0 -105
  821. package/scripts/_dbg-scenario-phase3-monitor.mjs +0 -48
  822. package/scripts/_dbg-scenario-phase3.mjs +0 -111
  823. package/scripts/_dbg-scene-polish-shot.mjs +0 -118
  824. package/scripts/_dbg-selring-probe.mjs +0 -47
  825. package/scripts/_dbg-settings-draft-probe.mjs +0 -39
  826. package/scripts/_dbg-settings-probe.mjs +0 -33
  827. package/scripts/_dbg-setup-e2e.mjs +0 -88
  828. package/scripts/_dbg-sideinfo.mjs +0 -101
  829. package/scripts/_dbg-sim-keeper.mjs +0 -100
  830. package/scripts/_dbg-splitter.mjs +0 -88
  831. package/scripts/_dbg-swatch-check.mjs +0 -10
  832. package/scripts/_dbg-task-cancel-probe.mjs +0 -66
  833. package/scripts/_dbg-team-drill.mjs +0 -173
  834. package/scripts/_dbg-town-alarm-e2e.mjs +0 -40
  835. package/scripts/_dbg-town-beauty-shots.mjs +0 -54
  836. package/scripts/_dbg-town-daq-shot.mjs +0 -26
  837. package/scripts/_dbg-town-full-e2e.mjs +0 -104
  838. package/scripts/_dbg-town-gate.mjs +0 -44
  839. package/scripts/_dbg-town-ins-probe.mjs +0 -37
  840. package/scripts/_dbg-town-perf.mjs +0 -50
  841. package/scripts/_dbg-town-polish-shots.mjs +0 -82
  842. package/scripts/_dbg-town-realtime.mjs +0 -42
  843. package/scripts/_dbg-town-shot.py +0 -25
  844. package/scripts/_dbg-town-shot3.mjs +0 -17
  845. package/scripts/_dbg-town-truth.mjs +0 -37
  846. package/scripts/_dbg-town-truth2.mjs +0 -27
  847. package/scripts/_dbg-transform-audit.mjs +0 -98
  848. package/scripts/_dbg-trend-expand-test.mjs +0 -38
  849. package/scripts/_dbg-twindaq-focus.mjs +0 -81
  850. package/scripts/_dbg-ui-polish-shot.mjs +0 -43
  851. package/scripts/_dbg-ui-polish-verify1.mjs +0 -92
  852. package/scripts/_dbg-ui-polish-verify2.mjs +0 -50
  853. package/scripts/_dbg-ui-polish-verify3.mjs +0 -51
  854. package/scripts/_dbg-ui-polish-verify4.mjs +0 -50
  855. package/scripts/_dbg-ui-shot.mjs +0 -26
  856. package/scripts/_dbg-ui-shots.mjs +0 -28
  857. package/scripts/_dbg-ui-survey.py +0 -52
  858. package/scripts/_dbg-unify-shot.mjs +0 -43
  859. package/scripts/_dbg-uplink-probe.mjs +0 -36
  860. package/scripts/_dbg-wizard-preview-shot.mjs +0 -58
  861. package/scripts/_dbg-wizard-ui-e2e.mjs +0 -93
  862. package/scripts/_dbg-ws-probe.mjs +0 -86
  863. package/scripts/_dbg-ws-shot2.mjs +0 -23
  864. package/scripts/_dbg-wsdot-sanity.mjs +0 -25
  865. package/scripts/_dev-stack.mjs +0 -46
  866. package/scripts/_http-driver-probe.mjs +0 -30
  867. package/scripts/_mqtt-driver-probe.mjs +0 -30
  868. package/scripts/_newdriver-rest-probe.mjs +0 -100
  869. package/scripts/_node-state-probe.mjs +0 -5
  870. package/scripts/_opcua-driver-probe.mjs +0 -31
  871. package/scripts/_rtu-debug.mjs +0 -41
  872. package/scripts/_rtu-direct.mjs +0 -6
  873. package/scripts/_rtu-driver-probe.mjs +0 -53
  874. package/scripts/_spike-pitui.mjs +0 -116
  875. package/scripts/_tmp-args-probe.mjs +0 -20
  876. package/scripts/_tmp-cyc-entry.mjs +0 -8
  877. package/scripts/_tmp-cyc-main.mjs +0 -5
  878. package/scripts/_tmp-cyc-mod.mjs +0 -2
  879. package/scripts/_tmp-cycle-a.mjs +0 -6
  880. package/scripts/_tmp-cycle-b.mjs +0 -2
  881. package/scripts/_tmp-cycle-probe.mjs +0 -4
  882. package/scripts/_tmp-entry-variant.mjs +0 -2
  883. package/scripts/_tmp-help-probe.mjs +0 -19
  884. package/scripts/_tmp-help-probe2.mjs +0 -2
  885. package/scripts/_tmp-trace-preload.mjs +0 -1
  886. package/scripts/_wizard-shots.mjs +0 -90
  887. package/scripts/acceptance-suite.py +0 -207
  888. package/scripts/aml-agent-bridge.ts +0 -230
  889. package/scripts/aml-industrial-loop.ts +0 -232
  890. package/scripts/build-film-devices.mjs +0 -227
  891. package/scripts/collab-live-test.py +0 -177
  892. package/scripts/debug-mcp-http.ts +0 -64
  893. package/scripts/demo-lead-worker.ts +0 -256
  894. package/scripts/demo-modes.ts +0 -415
  895. package/scripts/demo-omp-channel.ts +0 -135
  896. package/scripts/design-preflight.mjs +0 -223
  897. package/scripts/design-verify-templates.mjs +0 -110
  898. package/scripts/design-verify.mjs +0 -170
  899. package/scripts/dev-window.cmd +0 -6
  900. package/scripts/device-line-restore.mjs +0 -34
  901. package/scripts/diag-lead-status.ts +0 -101
  902. package/scripts/e2e-a2a-steer-live.mjs +0 -193
  903. package/scripts/e2e-dual-drive-comm.ts +0 -259
  904. package/scripts/e2e-full-scenario.ts +0 -321
  905. package/scripts/e2e-harness-consistency.ts +0 -204
  906. package/scripts/e2e-harness-provider-task.mjs +0 -126
  907. package/scripts/e2e-line-live.mjs +0 -144
  908. package/scripts/e2e-memory-persistence.ts +0 -320
  909. package/scripts/e2e-omp-modes.ts +0 -274
  910. package/scripts/e2e-omp-realtime.ts +0 -258
  911. package/scripts/e2e-plc-scenario.mjs +0 -292
  912. package/scripts/e2e-real-scenario.mjs +0 -466
  913. package/scripts/e2e-tab-close.mjs +0 -136
  914. package/scripts/e2e-token-ui.mjs +0 -149
  915. package/scripts/final-soup-run.py +0 -192
  916. package/scripts/final-soup-watch.py +0 -83
  917. package/scripts/i18n-codemod.mjs +0 -173
  918. package/scripts/i18n-fix-en.py +0 -28
  919. package/scripts/i18n-fix-en2.py +0 -31
  920. package/scripts/i18n-merge.mjs +0 -191
  921. package/scripts/migrate-local-time.mjs +0 -123
  922. package/scripts/omp-real-test.py +0 -328
  923. package/scripts/team-plugins-api-smoke.mjs +0 -149
  924. package/scripts/test-a2a-relay.mjs +0 -222
  925. package/scripts/test-aml-integration.ts +0 -159
  926. package/scripts/test-aml-job.ts +0 -174
  927. package/scripts/test-aml-unit.ts +0 -184
  928. package/scripts/test-api-client.ts +0 -108
  929. package/scripts/test-api-suite.mjs +0 -271
  930. package/scripts/test-block-consumption.mjs +0 -194
  931. package/scripts/test-cmd-render.mjs +0 -218
  932. package/scripts/test-collab-omp.mjs +0 -192
  933. package/scripts/test-config-precedence.ts +0 -124
  934. package/scripts/test-context-governor.ts +0 -176
  935. package/scripts/test-daq-frames.ts +0 -180
  936. package/scripts/test-daq-minio.ts +0 -77
  937. package/scripts/test-dedup-logic.ts +0 -132
  938. package/scripts/test-e2e-collaboration.ts +0 -262
  939. package/scripts/test-e2e-monitor.ts +0 -192
  940. package/scripts/test-event-history.ts +0 -112
  941. package/scripts/test-exec-modes.ts +0 -316
  942. package/scripts/test-fifo-realtime.mjs +0 -193
  943. package/scripts/test-final-e2e.mjs +0 -290
  944. package/scripts/test-goal-summary.ts +0 -202
  945. package/scripts/test-harness-liveness.ts +0 -109
  946. package/scripts/test-harness-terminal.ts +0 -164
  947. package/scripts/test-header-trail.mjs +0 -95
  948. package/scripts/test-hitl.ts +0 -360
  949. package/scripts/test-koda-restyle.mjs +0 -105
  950. package/scripts/test-lane-raw.ts +0 -67
  951. package/scripts/test-lanes-history-render.mjs +0 -138
  952. package/scripts/test-loop-omp.mjs +0 -154
  953. package/scripts/test-mdlite.ts +0 -53
  954. package/scripts/test-memory-brief-chronicle.ts +0 -180
  955. package/scripts/test-memory-rrf-mmr.ts +0 -114
  956. package/scripts/test-mock-collab.mjs +0 -226
  957. package/scripts/test-modern-render.mjs +0 -174
  958. package/scripts/test-omp-terminal.mjs +0 -187
  959. package/scripts/test-plugin-ext.ts +0 -173
  960. package/scripts/test-prompts-loader.ts +0 -56
  961. package/scripts/test-real-scenario.mjs +0 -290
  962. package/scripts/test-stream-render.ts +0 -37
  963. package/scripts/test-task-drawer.mjs +0 -204
  964. package/scripts/test-task-invariants.mjs +0 -169
  965. package/scripts/test-town-3d.mjs +0 -121
  966. package/scripts/test-town-layout.mjs +0 -200
  967. package/scripts/test-town-page.mjs +0 -136
  968. package/scripts/test-town-scene-math.ts +0 -169
  969. package/scripts/test-town-twin.mjs +0 -121
  970. package/scripts/test-town-upload.mjs +0 -89
  971. package/scripts/test-town-user-flow.mjs +0 -619
  972. package/scripts/test-town-world.mjs +0 -76
  973. package/scripts/test-town-wuwa.mjs +0 -198
  974. package/scripts/test-user-isolation.mjs +0 -193
  975. package/scripts/test-workshop-entries.ts +0 -370
  976. package/scripts/test-workspace-api.ts +0 -329
  977. package/scripts/test-ws-aep.mjs +0 -187
  978. package/scripts/test-ws-protocol.ts +0 -134
  979. package/scripts/town-demo-seed.mjs +0 -75
  980. package/scripts/town-scene-clear.mjs +0 -56
  981. package/scripts/verify-exec-modes-report.ts +0 -248
  982. package/scripts/verify-lead-mail.ts +0 -188
  983. package/scripts/verify-page-smoke.mjs +0 -87
  984. package/scripts/ws-test.mjs +0 -176
  985. package/scripts/ws-test.py +0 -4
@@ -1,136 +1,137 @@
1
- export default {
2
- common: {
3
- light: 'Light',
4
- dark: 'Dark',
5
- confirm: 'OK',
6
- cancel: 'Cancel',
7
- save: 'Save',
8
- search: 'Search',
9
- actions: 'Actions',
10
- edit: 'Edit',
11
- delete: 'Delete',
12
- status: 'Status',
13
- all: 'All',
14
- },
15
- menu: {
16
- system: 'AgentWorkShop',
17
- groups: {
18
- console: 'Console',
19
- ops: 'Operations',
20
- system: 'System',
21
- },
22
- dashboard: 'Dashboard',
23
- workshop: 'Agent Harness',
24
- town: 'AgentWorkShop',
25
- tokens: 'API Tokens',
26
- daq: 'DAQ Console',
27
- dcw: 'Line Ops',
28
- logs: 'Logs',
29
- users: 'Users',
30
- monitor: 'Runtime Monitor',
31
- plugins: 'Plugins',
32
- settings: 'Settings',
33
- permissions: 'Permissions',
34
- },
35
- header: {
36
- collapse: 'Collapse menu',
37
- expand: 'Expand menu',
38
- language: 'Language',
39
- theme: 'Theme',
40
- fullscreen: 'Fullscreen',
41
- notifications: 'Notifications',
42
- profile: 'Profile',
43
- guest: 'Guest',
44
- logout: 'Log out',
45
- trail: 'Route trail (click to return)',
46
- workspace: 'Workspace',
47
- },
48
- home: {
49
- kicker: 'DIGITAL TWIN · LINE OPS',
50
- heroTitle: 'The operations hub where lines run',
51
- heroAccent: 'in twin',
52
- heroSub: 'Write control and data acquisition resonate on one screen: recipe starts, setpoints, live conditions and limit alarms — the twin stays in step with real PLCs.',
53
- ctaTown: 'Open Digital Twin',
54
- ctaLine: 'Line Operations',
55
- live: 'LIVE',
56
- kpi: {
57
- lines: 'Running Lines',
58
- dcwNodes: 'Control Nodes',
59
- daqNodes: 'DAQ Channels',
60
- samples: 'Samples Stored',
61
- writeRate: 'Write Success',
62
- alarms: 'Active Alarms',
63
- },
64
- charts: {
65
- trend: 'Live Condition Trends',
66
- trendSub: 'Normalized per node range · last 3 min',
67
- lineState: 'Line States',
68
- pipeline: 'DAQ Pipeline Throughput',
69
- writeCtl: 'Write Success Rate',
70
- nodeState: 'Node State Mix',
71
- lines: 'Line Fleet',
72
- },
73
- trendY: 'Range %',
74
- trendWaiting: 'Waiting for live data…',
75
- runNow: 'Running',
76
- standBy: 'Standby',
77
- pipelineSeries: { produced: 'Produced', consumed: 'Consumed', stored: 'Stored' },
78
- stateDaq: 'DAQ Nodes',
79
- stateDcw: 'Control Nodes',
80
- states: { ok: 'OK', warn: 'Warn', alarm: 'Alarm', writing: 'Writing', idle: 'Idle', error: 'Error', offline: 'Offline' },
81
- batch: 'Batch',
82
- nodesUnit: 'Control nodes',
83
- daqUnit: 'DAQ channels',
84
- tagged: 'Tagged samples',
85
- noLine: 'No lines yet — create one in Line Operations',
86
- fleetAll: 'View all lines',
87
- fleetHint: 'Running first · top 8 shown',
88
- writesFailed: 'failed',
89
- harness: {
90
- title: 'Agent Harnesses',
91
- sub: 'CLI availability probe · ready to dispatch',
92
- missing: 'not installed',
93
- },
94
- fields: {
95
- name: 'App Name',
96
- version: 'Version',
97
- mode: 'Mode',
98
- devPort: 'Dev Port',
99
- prodPort: 'Prod Port',
100
- apiBase: 'API Base',
101
- primary: 'Primary Color',
102
- },
103
-
104
- },
105
- users: {
106
- krkb23h011: '{p0} role changed to {p1}',
107
- k1u7u12g012: '{p0} {p1}',
108
- knh5f2r013: 'Deleted {p0}',
109
- k3xhfg009: 'Enable',
110
- k3wsi1010: 'Disabled',
111
- k1jk2os9001: 'Delete this user? (Their resources are kept and ownership remains traceable)',
112
- k1flpho5002: 'Manage global users and roles (admins have the highest privileges: full monitoring, any template, user management).',
113
- kpdo6rc003: 'Admin privileges required',
114
- k1mue9bl004: 'User management is admin-only; contact an administrator to change roles.',
115
- k3xakp005: 'Delete',
116
- k1br33vc006: 'Load failed',
117
- k1enhqn3007: 'Update failed',
118
- k1bphrb3008: 'Delete failed',
119
- title: 'User Management',
120
- subtitle: 'Manage system users, roles and access permissions',
121
- add: 'Add User',
122
- search: 'Search name or email',
123
- deleteConfirm: 'Are you sure to delete this user?',
124
- name: 'Username',
125
- email: 'Email',
126
- role: 'Role',
127
- created: 'Created',
128
- roleAdmin: 'Admin',
129
- roleEditor: 'Editor',
130
- roleUser: 'User',
131
- active: 'Active',
132
- disabled: 'Disabled',
133
- },
1
+ export default {
2
+ common: {
3
+ light: 'Light',
4
+ dark: 'Dark',
5
+ confirm: 'OK',
6
+ cancel: 'Cancel',
7
+ save: 'Save',
8
+ search: 'Search',
9
+ actions: 'Actions',
10
+ edit: 'Edit',
11
+ delete: 'Delete',
12
+ status: 'Status',
13
+ all: 'All',
14
+ },
15
+ menu: {
16
+ system: 'AgentWorkShop',
17
+ groups: {
18
+ console: 'Console',
19
+ ops: 'Operations',
20
+ system: 'System',
21
+ },
22
+ dashboard: 'Dashboard',
23
+ workshop: 'Agent Harness',
24
+ town: 'AgentWorkShop',
25
+ tokens: 'API Tokens',
26
+ daq: 'DAQ Console',
27
+ dcw: 'Line Ops',
28
+ logs: 'Logs',
29
+ users: 'Users',
30
+ monitor: 'Runtime Monitor',
31
+ plugins: 'Plugins',
32
+ settings: 'Settings',
33
+ permissions: 'Permissions',
34
+ },
35
+ header: {
36
+ collapse: 'Collapse menu',
37
+ expand: 'Expand menu',
38
+ language: 'Language',
39
+ theme: 'Theme',
40
+ fullscreen: 'Fullscreen',
41
+ notifications: 'Notifications',
42
+ profile: 'Profile',
43
+ guest: 'Guest',
44
+ logout: 'Log out',
45
+ trail: 'Route trail (click to return)',
46
+ workspace: 'Workspace',
47
+ },
48
+ home: {
49
+ kicker: 'DIGITAL TWIN · LINE OPS',
50
+ heroTitle: 'The operations hub where lines run',
51
+ heroAccent: 'in twin',
52
+ heroSub: 'Write control and data acquisition resonate on one screen: recipe starts, setpoints, live conditions and limit alarms — the twin stays in step with real PLCs.',
53
+ ctaTown: 'Open Digital Twin',
54
+ ctaLine: 'Line Operations',
55
+ live: 'LIVE',
56
+ kpi: {
57
+ lines: 'Running Lines',
58
+ dcwNodes: 'Control Nodes',
59
+ daqNodes: 'DAQ Channels',
60
+ samples: 'Samples Stored',
61
+ writeRate: 'Write Success',
62
+ alarms: 'Active Alarms',
63
+ },
64
+ charts: {
65
+ trend: 'Live Condition Trends',
66
+ trendSub: 'Normalized per node range · last 3 min',
67
+ lineState: 'Line States',
68
+ pipeline: 'DAQ Pipeline Throughput',
69
+ writeCtl: 'Write Success Rate',
70
+ nodeState: 'Node State Mix',
71
+ lines: 'Line Fleet',
72
+ },
73
+ trendY: 'Range %',
74
+ trendWaiting: 'Waiting for live data…',
75
+ trendNeedRun: 'Sampling is gated on an active batch run. Start a line run under Line Operations to see live trends here.',
76
+ runNow: 'Running',
77
+ standBy: 'Standby',
78
+ pipelineSeries: { produced: 'Produced', consumed: 'Consumed', stored: 'Stored' },
79
+ stateDaq: 'DAQ Nodes',
80
+ stateDcw: 'Control Nodes',
81
+ states: { ok: 'OK', warn: 'Warn', alarm: 'Alarm', writing: 'Writing', idle: 'Idle', error: 'Error', offline: 'Offline' },
82
+ batch: 'Batch',
83
+ nodesUnit: 'Control nodes',
84
+ daqUnit: 'DAQ channels',
85
+ tagged: 'Tagged samples',
86
+ noLine: 'No lines yet — create one in Line Operations',
87
+ fleetAll: 'View all lines',
88
+ fleetHint: 'Running first · top 8 shown',
89
+ writesFailed: 'failed',
90
+ harness: {
91
+ title: 'Agent Harnesses',
92
+ sub: 'CLI availability probe · ready to dispatch',
93
+ missing: 'not installed',
94
+ },
95
+ fields: {
96
+ name: 'App Name',
97
+ version: 'Version',
98
+ mode: 'Mode',
99
+ devPort: 'Dev Port',
100
+ prodPort: 'Prod Port',
101
+ apiBase: 'API Base',
102
+ primary: 'Primary Color',
103
+ },
104
+
105
+ },
106
+ users: {
107
+ krkb23h011: '{p0} role changed to {p1}',
108
+ k1u7u12g012: '{p0} {p1}',
109
+ knh5f2r013: 'Deleted {p0}',
110
+ k3xhfg009: 'Enable',
111
+ k3wsi1010: 'Disabled',
112
+ k1jk2os9001: 'Delete this user? (Their resources are kept and ownership remains traceable)',
113
+ k1flpho5002: 'Manage global users and roles (admins have the highest privileges: full monitoring, any template, user management).',
114
+ kpdo6rc003: 'Admin privileges required',
115
+ k1mue9bl004: 'User management is admin-only; contact an administrator to change roles.',
116
+ k3xakp005: 'Delete',
117
+ k1br33vc006: 'Load failed',
118
+ k1enhqn3007: 'Update failed',
119
+ k1bphrb3008: 'Delete failed',
120
+ title: 'User Management',
121
+ subtitle: 'Manage system users, roles and access permissions',
122
+ add: 'Add User',
123
+ search: 'Search name or email',
124
+ deleteConfirm: 'Are you sure to delete this user?',
125
+ name: 'Username',
126
+ email: 'Email',
127
+ role: 'Role',
128
+ created: 'Created',
129
+ roleAdmin: 'Admin',
130
+ roleEditor: 'Editor',
131
+ roleUser: 'User',
132
+ active: 'Active',
133
+ disabled: 'Disabled',
134
+ },
134
135
  settings: {
135
136
  title: 'System Settings',
136
137
  subtitle: 'Configure app basics, theme appearance and notifications',
@@ -338,332 +339,332 @@ export default {
338
339
  srcUser: 'Custom',
339
340
  srcPlugin: 'Plugins',
340
341
  },
341
- },
342
- monitor: {
343
- k1dzryry003: 'My resources',
344
- k16zpmg9002: 'admin full view',
345
- k1dg9sr8001: 'Owner',
346
- title: 'Runtime Monitor',
347
- subtitle: 'Wired ChannelRunTimes / AgentRunTimes and harness processes ledger',
348
- refresh: 'Refresh',
349
- autoRefresh: 'Auto refresh',
350
- needLogin: 'Sign in required to inspect runtime resources',
351
- goLogin: 'Go to sign in',
352
- loadFailed: 'Failed to load monitor data',
353
- failed: 'Operation failed',
354
- channels: 'Channel Runtimes',
355
- agents: 'Agent Runtimes',
356
- aliveProcesses: 'Alive harness procs',
357
- orphan: 'orphan',
358
- server: 'Server process',
359
- updated: 'snapshot',
360
- channelRuntimes: 'ChannelRunTime',
361
- agentRuntimes: 'AgentRunTime',
362
- harnessProcesses: 'harness processes',
363
- chChannel: 'Channel',
364
- members: 'Members',
365
- wired: 'Wired',
366
- scheduler: 'Scheduler',
367
- scheduling: 'running',
368
- lead: 'Lead',
369
- name: 'Name',
370
- role: 'Role',
371
- harness: 'harness',
372
- state: 'State',
373
- stateIdle: 'Idle',
374
- stateBusy: 'Busy',
375
- stateStopped: 'Stopped',
376
- currentTask: 'Current task',
377
- queue: 'Queue',
378
- channel: 'Channel',
379
- actions: 'Actions',
380
- terminate: 'Terminate',
381
- terminated: 'terminated',
382
- terminateConfirm: 'Terminating this process will also stop and unload its AgentRuntime. Confirm terminate',
383
- terminatePidConfirm: 'Force-kill this process (PID); a bound runtime is stopped along with it. Confirm',
384
- binding: 'Binding',
385
- bound: 'bound',
386
- agent: 'Agent',
387
- command: 'Command',
388
- startedAt: 'Started',
389
- alive: 'Alive',
390
- exited: 'Exited',
391
- openTerminal: 'Terminal',
392
- openTerminalHint: 'Attach to this omp process native terminal (live TUI output + HITL control)',
393
- },
394
- terminal: {
395
- title: 'harness terminal',
396
- abort: 'Abort',
397
- clear: 'Clear',
398
- stateIdle: 'idle',
399
- stateRunning: 'turn running',
400
- stateStreaming: 'streaming',
401
- stateExited: 'process exited',
402
- connOpen: 'live',
403
- connConnecting: 'connecting',
404
- connRetrying: 'retrying',
405
- connClosed: 'offline',
406
- hint: 'Type in the terminal and press Enter to inject into the omp session (steer while streaming / follow-up when idle) / ↑↓ history / Ctrl+C abort',
407
- hitlTitle: 'HITL dialog · waiting for your answer',
408
- hitlCancel: 'Cancel dialog',
409
- hitlConfirm: 'Confirm',
410
- hitlDeny: 'Deny',
411
- hitlSubmit: 'Submit',
412
- },
413
- agents: {
414
- notInstalled: 'not installed',
415
- installLink: 'Open official site to install ↗',
416
- harnessInprocess: 'In-process engine · always available',
417
- k3pa5h4025: 'Templates',
418
- k3xhia001: 'Name',
419
- k3lrqn0002: 'Visibility',
420
- k3l98u7003: 'Creator',
421
- k3mr526004: 'Instances',
422
- k3xhfg005: 'Enable',
423
- k40aa6006: 'Actions',
424
- keetzvf007: 'Delete template? (Cloned instances are kept)',
425
- k5nsz7y008: 'Templates are user-isolated: private ones are visible only to you; public ones are readable and usable by everyone (only the owner can modify); built-in templates are public and immutable.',
426
- krpx6qa009: 'Back to Workspace',
427
- k1efixrj010: 'New Template',
428
- ka1gpdj011: 'Admin view: templates and creators of all users are visible',
429
- k45eb0012: 'Edit',
430
- k3xakp013: 'Delete',
431
- k1d036zs014: 'No instances yet',
432
- k17jfge3015: 'Private (visible only to you)',
433
- k1tt5zyo016: 'Public (readable and usable by everyone, only you can modify)',
434
- k3x23c017: 'Built-in',
435
- k3wv1t018: 'Public',
436
- k447jj019: 'Private',
437
- k3n9aij020: 'Updated',
438
- k3n5hak021: 'Created',
439
- k3n5sd7022: 'Deleted',
440
- kxa6cxx023: 'Published: readable and usable by everyone, only you can modify',
441
- k1xxabaf024: 'Switched to private',
442
- },
443
- ctpl: {
444
- kefkfnl030: 'Instantiated: {p0} ({p1} members); mount it from the workspace',
445
- k1f54iqd029: 'Template Hub',
446
- k117jag9001: 'Delete template? (Instantiated Channels are not affected)',
447
- knjomku002: 'Create Channel from template (members auto-assembled)',
448
- k1f55q76003: 'Template Name',
449
- k40gkk004: 'Description',
450
- k1ju32o7005: 'Select lead template (optional)',
451
- k5uq1js006: 'Worker member templates (cloned one by one on instantiation)',
452
- kqmdkc9007: 'Select member templates (optional)',
453
- k1q87yho008: 'Scenario prompt (injected into all members)',
454
- kk4u5cr009: 'Working directory (empty = default at instantiation)',
455
- k3lrqn0010: 'Visibility',
456
- k18gglgp011: 'A combined template of scenario + working directory + team; instantiate into a Channel with one click (members auto-assembled). Templates are user-isolated; public ones are available to everyone.',
457
- krpx6qa012: 'Back to Workspace',
458
- k1efixrj013: 'New Template',
459
- ka1gpdj014: 'Admin view: templates and creators of all users are visible',
460
- k3rx4ps015: 'Empty team',
461
- k3xakp016: 'Delete',
462
- k3mr1fo017: 'Instantiate',
463
- k19fglby018: 'Create the first Channel template',
464
- k17jfge3019: 'Private (visible only to you)',
465
- k191u0u5020: 'Public (instantiable by everyone, only you can modify)',
466
- k3x23c021: 'Built-in',
467
- k3wv1t022: 'Public',
468
- k447jj023: 'Private',
469
- k1i0ji0y024: 'Template name is required',
470
- kyppebc025: 'Template created; instantiate and mount it with one click from the session bar on the left of the workspace',
471
- kkziya3026: 'Published: instantiable by everyone',
472
- k1xxabaf027: 'Switched to private',
473
- k1oxfuqj028: 'Template deleted',
474
- },
475
- daq: {
476
- k1bge46t118: 'Create Node',
477
- k1b3dtga119: 'Save Template',
478
- k3v957u120: '{p0} running: {p1} · {p2}',
479
- k1x7jnru121: '{p0} standby: nodes on this line start acquiring after the run begins',
480
- k1hrrqa1122: 'Active recipe monitor window {p0} ~ {p1}{p2}',
481
- k11wnl1y123: 'Line running: {p0} · {p1}',
482
- k9vnp9h124: 'Global {p0}ms',
483
- kyuadl0125: 'Missing required parameter: {p0}',
484
- k2hbo3c126: '{p0} copy',
485
- k15lvw0o105: 'running — current product: ',
486
- k3zkt2106: 'Start Run',
487
- k12uge2o107: 'not running — nodes on this line pause acquisition',
488
- k69vag8108: '· tagged',
489
- k1cg78i8109: 'Open Line Management to Start',
490
- kzg9805110: 'Reconnect Infrastructure',
491
- knxpdpt111: 'Resume All Acquisition',
492
- k1fstglk112: 'Test Connection',
493
- k7pxjxo113: 'Create & Acquire (after test passes)',
494
- k3xakp114: 'Delete',
495
- k1efixrj115: 'New Template',
496
- k1b39281116: 'Save Changes',
497
- k3ozyqz117: 'Not Running',
498
- k3ktxbr085: 'Line “',
499
- k400lb086: 'Batch',
500
- k3xagp087: 'Published',
501
- k427eu088: 'Consumed',
502
- k3w8go089: 'Dropped',
503
- k3wusd090: 'Stored',
504
- k48oi091: '位',
505
- k4118o092: 'Samples',
506
- k1ukoy0v093: 'Go to Line Management',
507
- k1ld43ur094: 'Reconnecting…',
508
- kpui00095: 'Pause All Acquisition',
509
- k3vp67i096: 'Running',
510
- kr45rk9097: ' · Custom',
511
- kjbqphp098: '(stack not installed)',
512
- k1fsh720099: 'Testing…',
513
- k1bg4759100: 'Creating…',
514
- k1hhheu3101: 'Confirm delete',
515
- k1iiph0s102: 'Edit Template',
516
- k1b38d59103: 'Saving…',
517
- k1l3pt51104: 'Recipe Violation',
518
- k1e8lcoo001: 'Global default when a node has no per-node WS publish interval; 0 = publish every frame with the sampling cadence',
519
- k1yztsu4002: 'Published to queue by producer',
520
- ko09iha003: 'Consumed from queue by consumer',
521
- kj1jbmw004: 'Samples stored in the time-series DB',
522
- kgpxzy3005: 'Defaults to auto-incremented name per template',
523
- k5opd2t006: 'e.g. Oven Humidity',
524
- kk8o4tl007: 'Defaults to the name',
525
- kzn3l7l008: 'Defaults to auto-generated',
526
- khb8mru009: 'Run state of the node\'s line: idle/unassigned nodes do not sample',
527
- k3q23v3010: 'Line assignment (nodes without a line do not sample)',
528
- k1emg364011: 'DAQ Console',
529
- k1wmg2bz012: 'Full pipeline: acquisition → queue (MQTT) → time-series DB (Timescale) → WS real-time publish; node entities and parameters are authoritative on the server.',
530
- k19onw5w013: 'No line is running — data acquisition is recipe-driven: please ',
531
- k1b2tk5c014: 'Line Operations',
532
- k1u9wnlg015: 'start a line in Line Operations and mount nodes to it',
533
- k1ifahxj016: 'Default Interval',
534
- k1if98n0017: 'Default Publish',
535
- k1f5cv0s018: 'Template Manager',
536
- k1fn0ukb019: 'Add Node',
537
- k1b2o3b6020: 'Line Status',
538
- k3zgkk021: 'Standby',
539
- k1el12b1022: 'No lines yet',
540
- k8jxxe8023: 'Create one in Line Operations',
541
- k19rioqa024: 'Add DAQ Node',
542
- k1p5c1un025: 'Mock Simulator',
543
- k1cbcp3o026: 'Real Device',
544
- k1fsgerc027: 'Signal template (range/unit domain)',
545
- k1ce2k1y028: 'Node name (optional)',
546
- k13mfsfc029: 'Sampling interval ms (empty = follow global)',
547
- k1kt87rx030: 'Protocol',
548
- k3xdnn031: 'Cancel',
549
- k11mv96s032: 'Signal Template Manager',
550
- ktji4ky033: 'Custom Templates',
551
- k45eb0034: 'Edit',
552
- kztvzbo035: 'No custom templates yet — copy from the built-in ones below, or create directly in the form below.',
553
- k3xhia036: 'Name',
554
- k3x4ef037: 'Unit',
555
- k1l477m0038: 'Channel Semantics',
556
- k1ayxrqb039: 'Tag Code',
557
- k1l9jv5m040: 'Range Min',
558
- k1l9jv4p041: 'Range Max',
559
- k3mxmcx042: 'Decimals',
560
- k3xx56043: 'Icon',
561
- k1f4eknv044: 'Mock Base',
562
- kytd15s045: 'Center value of mock sampling; defaults to range midpoint',
563
- k1f4ifpo046: 'Mock Amplitude',
564
- ksp2aji047: 'Mock fluctuation amplitude; defaults to 4% of range',
565
- k48p40048: 'Reset',
566
- k1w8s84s049: 'Built-in Templates (read-only, copyable)',
567
- k3y694050: 'Copy',
568
- k3wj9n051: 'Line',
569
- k1bkl9uj052: 'All Lines',
570
- k3ootr6053: 'Unassigned',
571
- k1optt001: 'Agent optimization log',
572
- k1optf001: 'All lines',
573
- k1optf002: 'Refresh',
574
- k1optf004: 'All recipes',
575
- k1flttpl010: 'Template',
576
- k1flttpl011: 'All templates',
577
- k1fltdrv012: 'Driver',
578
- k1fltdrv013: 'All drivers',
579
- k1flttim014: 'Filter by last sample time',
580
- k1flttim015: 'Data Age',
581
- k1flttim016: 'Any age',
582
- k1timlv017: 'Last 5 min',
583
- k1timhr018: 'Last hour',
584
- k1timdy019: 'Last 24 h',
585
- k1timld020: 'Older than 24 h',
586
- k1timnv021: 'Never reported',
587
- k1fltsrc022: 'Search',
588
- k1fltsph023: 'Node name / ID…',
589
- k1opte001: 'No optimization records yet — registered automatically after agent dcw_control',
590
- k1opte002: 'No DAQ data in window (line not running or node unbound)',
591
- k1opta001: 'Series',
592
- k1opta002: 'Rollback',
593
- k1opto001: 'Open: awaiting agent dcw_judge',
594
- k1optw001: 'Aggregating window…',
595
- k1optw002: 'breach',
596
- k1optst001: 'Open',
597
- k1optst002: 'Judged · keep',
598
- k1optst003: 'Rolled back',
599
- k1optst004: 'Superseded',
600
- k1optst005: 'Superseded by manual',
601
- k1optst006: 'Closed on line stop',
602
- k1optst007: 'Failed',
603
- k1optst008: 'Judged · rollback not executed',
604
- k1trnd001: 'Trend',
605
- k1trnd002: 'Live trend: last 60 readings, dashed = limits',
606
- k1wrn001: 'above max',
607
- k1wrn002: 'below min',
608
- k1wrn003: 'recipe window',
609
- k1wrn004: 'safe range',
610
- k1i8rtqt054: 'Bound Device',
611
- k1bkw4m2055: 'All Devices',
612
- k3own4q056: 'Unbound',
613
- k2bindtip137: 'Bind device (same source as Digital Twin / node inspector, persisted server-side)',
614
- k1b2tkyv057: 'Line Run',
615
- k3x4t1058: 'All',
616
- k1nxm3p7059: 'Acquiring (running)',
617
- k1ulx34e060: 'Acquisition off (standby/unassigned)',
618
- k1iwdfef061: 'Node State',
619
- k41k5c062: 'OK',
620
- k49z8v063: 'Warn',
621
- k3xmid064: 'Alarm',
622
- k44c2n065: 'Offline',
623
- k1fygck2066: 'Clear Filters',
624
- k45uio067: 'Node',
625
- k42w8s068: 'State',
626
- k3mv305069: 'Live Value',
627
- k1l6g2ga070: 'Sampling',
628
- k3zi0nf071: 'WS Publish',
629
- k4a0la072: 'Driver',
630
- k40aa6073: 'Actions',
631
- k3o3jg2074: 'Console',
632
- kvhjyc3075: 'No DAQ nodes yet — drag from the left rail “DAQ Nodes” in the digital twin space (the server creates node entities).',
633
- k1w20qew076: 'No matching nodes — nothing matches the current filters; adjust or clear them.',
634
- k1bhhheq077: 'Go to Sign-in',
635
- k41mvv078: 'Every frame',
636
- k422b8079: 'Temperature',
637
- k3x6ff080: 'Pressure',
638
- k3z9xc081: 'Tension',
639
- k3subk4082: 'Encoder',
640
- k47atw083: 'Vision',
641
- kz7yhbj084: 'Electric/Gateway',
642
- k1prodrc128: 'Product / Recipe',
643
- k1staled129: 'Line is running but no fresh samples (> {p0}s) — node offline or driver fault',
644
- k1disabl130: 'Disabled',
645
- k1runtipc131: 'Run state of the line this node belongs to: sampling only while running',
646
- k1prdrtip132: 'Product & recipe of the active run on this line',
647
- k1tsdbtip133: 'Time-series backend: switch via DAQ_TSDB_URL (TimescaleDB compatible)',
648
- k1queuet134: 'Message queue: switch via DAQ_MQTT_URL (standard MQTT broker)',
649
- k1droptip135: 'Queue drops (produced-consumed)',
650
- k1eg1000a136: 'e.g. 1000',
651
- k1needtst137: 'Real-device scenario requires a passing connection test',
652
- k1plndrv138: 'Reserved protocol: awaiting real channel support',
653
- k1idlehin139: 'Line not running: this node starts sampling after the line starts',
654
- k1gateoff140: 'DAQ gateway is paused — all nodes stop sampling',
655
- k1alarm141: 'Unacked alarms',
656
- k1ack142: 'Ack',
657
- k1esc143: 'Escalated {p0} times (notification re-sent)',
658
- k1acked144: 'Alarm acknowledged',
659
- k1snap145: 'Pause all collection: stops sampling for every enabled node. Node-level enable/stop is independent — manually stopped nodes stay stopped; resume restores only enabled nodes',
660
- k1nodestop146: 'Stop collection',
661
- k1nodestart147: 'Start collection',
662
- k1evt001: 'No unacknowledged alarms',
663
- k1evt002: 'Live events',
664
- k1evt003: 'Log management',
665
- k1evt004: 'No events yet — waiting for activity…',
666
- },
342
+ },
343
+ monitor: {
344
+ k1dzryry003: 'My resources',
345
+ k16zpmg9002: 'admin full view',
346
+ k1dg9sr8001: 'Owner',
347
+ title: 'Runtime Monitor',
348
+ subtitle: 'Wired ChannelRunTimes / AgentRunTimes and harness processes ledger',
349
+ refresh: 'Refresh',
350
+ autoRefresh: 'Auto refresh',
351
+ needLogin: 'Sign in required to inspect runtime resources',
352
+ goLogin: 'Go to sign in',
353
+ loadFailed: 'Failed to load monitor data',
354
+ failed: 'Operation failed',
355
+ channels: 'Channel Runtimes',
356
+ agents: 'Agent Runtimes',
357
+ aliveProcesses: 'Alive harness procs',
358
+ orphan: 'orphan',
359
+ server: 'Server process',
360
+ updated: 'snapshot',
361
+ channelRuntimes: 'ChannelRunTime',
362
+ agentRuntimes: 'AgentRunTime',
363
+ harnessProcesses: 'harness processes',
364
+ chChannel: 'Channel',
365
+ members: 'Members',
366
+ wired: 'Wired',
367
+ scheduler: 'Scheduler',
368
+ scheduling: 'running',
369
+ lead: 'Lead',
370
+ name: 'Name',
371
+ role: 'Role',
372
+ harness: 'harness',
373
+ state: 'State',
374
+ stateIdle: 'Idle',
375
+ stateBusy: 'Busy',
376
+ stateStopped: 'Stopped',
377
+ currentTask: 'Current task',
378
+ queue: 'Queue',
379
+ channel: 'Channel',
380
+ actions: 'Actions',
381
+ terminate: 'Terminate',
382
+ terminated: 'terminated',
383
+ terminateConfirm: 'Terminating this process will also stop and unload its AgentRuntime. Confirm terminate',
384
+ terminatePidConfirm: 'Force-kill this process (PID); a bound runtime is stopped along with it. Confirm',
385
+ binding: 'Binding',
386
+ bound: 'bound',
387
+ agent: 'Agent',
388
+ command: 'Command',
389
+ startedAt: 'Started',
390
+ alive: 'Alive',
391
+ exited: 'Exited',
392
+ openTerminal: 'Terminal',
393
+ openTerminalHint: 'Attach to this omp process native terminal (live TUI output + HITL control)',
394
+ },
395
+ terminal: {
396
+ title: 'harness terminal',
397
+ abort: 'Abort',
398
+ clear: 'Clear',
399
+ stateIdle: 'idle',
400
+ stateRunning: 'turn running',
401
+ stateStreaming: 'streaming',
402
+ stateExited: 'process exited',
403
+ connOpen: 'live',
404
+ connConnecting: 'connecting',
405
+ connRetrying: 'retrying',
406
+ connClosed: 'offline',
407
+ hint: 'Type in the terminal and press Enter to inject into the omp session (steer while streaming / follow-up when idle) / ↑↓ history / Ctrl+C abort',
408
+ hitlTitle: 'HITL dialog · waiting for your answer',
409
+ hitlCancel: 'Cancel dialog',
410
+ hitlConfirm: 'Confirm',
411
+ hitlDeny: 'Deny',
412
+ hitlSubmit: 'Submit',
413
+ },
414
+ agents: {
415
+ notInstalled: 'not installed',
416
+ installLink: 'Open official site to install ↗',
417
+ harnessInprocess: 'In-process engine · always available',
418
+ k3pa5h4025: 'Templates',
419
+ k3xhia001: 'Name',
420
+ k3lrqn0002: 'Visibility',
421
+ k3l98u7003: 'Creator',
422
+ k3mr526004: 'Instances',
423
+ k3xhfg005: 'Enable',
424
+ k40aa6006: 'Actions',
425
+ keetzvf007: 'Delete template? (Cloned instances are kept)',
426
+ k5nsz7y008: 'Templates are user-isolated: private ones are visible only to you; public ones are readable and usable by everyone (only the owner can modify); built-in templates are public and immutable.',
427
+ krpx6qa009: 'Back to Workspace',
428
+ k1efixrj010: 'New Template',
429
+ ka1gpdj011: 'Admin view: templates and creators of all users are visible',
430
+ k45eb0012: 'Edit',
431
+ k3xakp013: 'Delete',
432
+ k1d036zs014: 'No instances yet',
433
+ k17jfge3015: 'Private (visible only to you)',
434
+ k1tt5zyo016: 'Public (readable and usable by everyone, only you can modify)',
435
+ k3x23c017: 'Built-in',
436
+ k3wv1t018: 'Public',
437
+ k447jj019: 'Private',
438
+ k3n9aij020: 'Updated',
439
+ k3n5hak021: 'Created',
440
+ k3n5sd7022: 'Deleted',
441
+ kxa6cxx023: 'Published: readable and usable by everyone, only you can modify',
442
+ k1xxabaf024: 'Switched to private',
443
+ },
444
+ ctpl: {
445
+ kefkfnl030: 'Instantiated: {p0} ({p1} members); mount it from the workspace',
446
+ k1f54iqd029: 'Template Hub',
447
+ k117jag9001: 'Delete template? (Instantiated Channels are not affected)',
448
+ knjomku002: 'Create Channel from template (members auto-assembled)',
449
+ k1f55q76003: 'Template Name',
450
+ k40gkk004: 'Description',
451
+ k1ju32o7005: 'Select lead template (optional)',
452
+ k5uq1js006: 'Worker member templates (cloned one by one on instantiation)',
453
+ kqmdkc9007: 'Select member templates (optional)',
454
+ k1q87yho008: 'Scenario prompt (injected into all members)',
455
+ kk4u5cr009: 'Working directory (empty = default at instantiation)',
456
+ k3lrqn0010: 'Visibility',
457
+ k18gglgp011: 'A combined template of scenario + working directory + team; instantiate into a Channel with one click (members auto-assembled). Templates are user-isolated; public ones are available to everyone.',
458
+ krpx6qa012: 'Back to Workspace',
459
+ k1efixrj013: 'New Template',
460
+ ka1gpdj014: 'Admin view: templates and creators of all users are visible',
461
+ k3rx4ps015: 'Empty team',
462
+ k3xakp016: 'Delete',
463
+ k3mr1fo017: 'Instantiate',
464
+ k19fglby018: 'Create the first Channel template',
465
+ k17jfge3019: 'Private (visible only to you)',
466
+ k191u0u5020: 'Public (instantiable by everyone, only you can modify)',
467
+ k3x23c021: 'Built-in',
468
+ k3wv1t022: 'Public',
469
+ k447jj023: 'Private',
470
+ k1i0ji0y024: 'Template name is required',
471
+ kyppebc025: 'Template created; instantiate and mount it with one click from the session bar on the left of the workspace',
472
+ kkziya3026: 'Published: instantiable by everyone',
473
+ k1xxabaf027: 'Switched to private',
474
+ k1oxfuqj028: 'Template deleted',
475
+ },
476
+ daq: {
477
+ k1bge46t118: 'Create Node',
478
+ k1b3dtga119: 'Save Template',
479
+ k3v957u120: '{p0} running: {p1} · {p2}',
480
+ k1x7jnru121: '{p0} standby: nodes on this line start acquiring after the run begins',
481
+ k1hrrqa1122: 'Active recipe monitor window {p0} ~ {p1}{p2}',
482
+ k11wnl1y123: 'Line running: {p0} · {p1}',
483
+ k9vnp9h124: 'Global {p0}ms',
484
+ kyuadl0125: 'Missing required parameter: {p0}',
485
+ k2hbo3c126: '{p0} copy',
486
+ k15lvw0o105: 'running — current product: ',
487
+ k3zkt2106: 'Start Run',
488
+ k12uge2o107: 'not running — nodes on this line pause acquisition',
489
+ k69vag8108: '· tagged',
490
+ k1cg78i8109: 'Open Line Management to Start',
491
+ kzg9805110: 'Reconnect Infrastructure',
492
+ knxpdpt111: 'Resume All Acquisition',
493
+ k1fstglk112: 'Test Connection',
494
+ k7pxjxo113: 'Create & Acquire (after test passes)',
495
+ k3xakp114: 'Delete',
496
+ k1efixrj115: 'New Template',
497
+ k1b39281116: 'Save Changes',
498
+ k3ozyqz117: 'Not Running',
499
+ k3ktxbr085: 'Line “',
500
+ k400lb086: 'Batch',
501
+ k3xagp087: 'Published',
502
+ k427eu088: 'Consumed',
503
+ k3w8go089: 'Dropped',
504
+ k3wusd090: 'Stored',
505
+ k48oi091: '位',
506
+ k4118o092: 'Samples',
507
+ k1ukoy0v093: 'Go to Line Management',
508
+ k1ld43ur094: 'Reconnecting…',
509
+ kpui00095: 'Pause All Acquisition',
510
+ k3vp67i096: 'Running',
511
+ kr45rk9097: ' · Custom',
512
+ kjbqphp098: '(stack not installed)',
513
+ k1fsh720099: 'Testing…',
514
+ k1bg4759100: 'Creating…',
515
+ k1hhheu3101: 'Confirm delete',
516
+ k1iiph0s102: 'Edit Template',
517
+ k1b38d59103: 'Saving…',
518
+ k1l3pt51104: 'Recipe Violation',
519
+ k1e8lcoo001: 'Global default when a node has no per-node WS publish interval; 0 = publish every frame with the sampling cadence',
520
+ k1yztsu4002: 'Published to queue by producer',
521
+ ko09iha003: 'Consumed from queue by consumer',
522
+ kj1jbmw004: 'Samples stored in the time-series DB',
523
+ kgpxzy3005: 'Defaults to auto-incremented name per template',
524
+ k5opd2t006: 'e.g. Oven Humidity',
525
+ kk8o4tl007: 'Defaults to the name',
526
+ kzn3l7l008: 'Defaults to auto-generated',
527
+ khb8mru009: 'Run state of the node\'s line: idle/unassigned nodes do not sample',
528
+ k3q23v3010: 'Line assignment (nodes without a line do not sample)',
529
+ k1emg364011: 'DAQ Console',
530
+ k1wmg2bz012: 'Full pipeline: acquisition → queue (MQTT) → time-series DB (Timescale) → WS real-time publish; node entities and parameters are authoritative on the server.',
531
+ k19onw5w013: 'No line is running — data acquisition is recipe-driven: please ',
532
+ k1b2tk5c014: 'Line Operations',
533
+ k1u9wnlg015: 'start a line in Line Operations and mount nodes to it',
534
+ k1ifahxj016: 'Default Interval',
535
+ k1if98n0017: 'Default Publish',
536
+ k1f5cv0s018: 'Template Manager',
537
+ k1fn0ukb019: 'Add Node',
538
+ k1b2o3b6020: 'Line Status',
539
+ k3zgkk021: 'Standby',
540
+ k1el12b1022: 'No lines yet',
541
+ k8jxxe8023: 'Create one in Line Operations',
542
+ k19rioqa024: 'Add DAQ Node',
543
+ k1p5c1un025: 'Mock Simulator',
544
+ k1cbcp3o026: 'Real Device',
545
+ k1fsgerc027: 'Signal template (range/unit domain)',
546
+ k1ce2k1y028: 'Node name (optional)',
547
+ k13mfsfc029: 'Sampling interval ms (empty = follow global)',
548
+ k1kt87rx030: 'Protocol',
549
+ k3xdnn031: 'Cancel',
550
+ k11mv96s032: 'Signal Template Manager',
551
+ ktji4ky033: 'Custom Templates',
552
+ k45eb0034: 'Edit',
553
+ kztvzbo035: 'No custom templates yet — copy from the built-in ones below, or create directly in the form below.',
554
+ k3xhia036: 'Name',
555
+ k3x4ef037: 'Unit',
556
+ k1l477m0038: 'Channel Semantics',
557
+ k1ayxrqb039: 'Tag Code',
558
+ k1l9jv5m040: 'Range Min',
559
+ k1l9jv4p041: 'Range Max',
560
+ k3mxmcx042: 'Decimals',
561
+ k3xx56043: 'Icon',
562
+ k1f4eknv044: 'Mock Base',
563
+ kytd15s045: 'Center value of mock sampling; defaults to range midpoint',
564
+ k1f4ifpo046: 'Mock Amplitude',
565
+ ksp2aji047: 'Mock fluctuation amplitude; defaults to 4% of range',
566
+ k48p40048: 'Reset',
567
+ k1w8s84s049: 'Built-in Templates (read-only, copyable)',
568
+ k3y694050: 'Copy',
569
+ k3wj9n051: 'Line',
570
+ k1bkl9uj052: 'All Lines',
571
+ k3ootr6053: 'Unassigned',
572
+ k1optt001: 'Agent optimization log',
573
+ k1optf001: 'All lines',
574
+ k1optf002: 'Refresh',
575
+ k1optf004: 'All recipes',
576
+ k1flttpl010: 'Template',
577
+ k1flttpl011: 'All templates',
578
+ k1fltdrv012: 'Driver',
579
+ k1fltdrv013: 'All drivers',
580
+ k1flttim014: 'Filter by last sample time',
581
+ k1flttim015: 'Data Age',
582
+ k1flttim016: 'Any age',
583
+ k1timlv017: 'Last 5 min',
584
+ k1timhr018: 'Last hour',
585
+ k1timdy019: 'Last 24 h',
586
+ k1timld020: 'Older than 24 h',
587
+ k1timnv021: 'Never reported',
588
+ k1fltsrc022: 'Search',
589
+ k1fltsph023: 'Node name / ID…',
590
+ k1opte001: 'No optimization records yet — registered automatically after agent dcw_control',
591
+ k1opte002: 'No DAQ data in window (line not running or node unbound)',
592
+ k1opta001: 'Series',
593
+ k1opta002: 'Rollback',
594
+ k1opto001: 'Open: awaiting agent dcw_judge',
595
+ k1optw001: 'Aggregating window…',
596
+ k1optw002: 'breach',
597
+ k1optst001: 'Open',
598
+ k1optst002: 'Judged · keep',
599
+ k1optst003: 'Rolled back',
600
+ k1optst004: 'Superseded',
601
+ k1optst005: 'Superseded by manual',
602
+ k1optst006: 'Closed on line stop',
603
+ k1optst007: 'Failed',
604
+ k1optst008: 'Judged · rollback not executed',
605
+ k1trnd001: 'Trend',
606
+ k1trnd002: 'Live trend: last 60 readings, dashed = limits',
607
+ k1wrn001: 'above max',
608
+ k1wrn002: 'below min',
609
+ k1wrn003: 'recipe window',
610
+ k1wrn004: 'safe range',
611
+ k1i8rtqt054: 'Bound Device',
612
+ k1bkw4m2055: 'All Devices',
613
+ k3own4q056: 'Unbound',
614
+ k2bindtip137: 'Bind device (same source as Digital Twin / node inspector, persisted server-side)',
615
+ k1b2tkyv057: 'Line Run',
616
+ k3x4t1058: 'All',
617
+ k1nxm3p7059: 'Acquiring (running)',
618
+ k1ulx34e060: 'Acquisition off (standby/unassigned)',
619
+ k1iwdfef061: 'Node State',
620
+ k41k5c062: 'OK',
621
+ k49z8v063: 'Warn',
622
+ k3xmid064: 'Alarm',
623
+ k44c2n065: 'Offline',
624
+ k1fygck2066: 'Clear Filters',
625
+ k45uio067: 'Node',
626
+ k42w8s068: 'State',
627
+ k3mv305069: 'Live Value',
628
+ k1l6g2ga070: 'Sampling',
629
+ k3zi0nf071: 'WS Publish',
630
+ k4a0la072: 'Driver',
631
+ k40aa6073: 'Actions',
632
+ k3o3jg2074: 'Console',
633
+ kvhjyc3075: 'No DAQ nodes yet — drag from the left rail “DAQ Nodes” in the digital twin space (the server creates node entities).',
634
+ k1w20qew076: 'No matching nodes — nothing matches the current filters; adjust or clear them.',
635
+ k1bhhheq077: 'Go to Sign-in',
636
+ k41mvv078: 'Every frame',
637
+ k422b8079: 'Temperature',
638
+ k3x6ff080: 'Pressure',
639
+ k3z9xc081: 'Tension',
640
+ k3subk4082: 'Encoder',
641
+ k47atw083: 'Vision',
642
+ kz7yhbj084: 'Electric/Gateway',
643
+ k1prodrc128: 'Product / Recipe',
644
+ k1staled129: 'Line is running but no fresh samples (> {p0}s) — node offline or driver fault',
645
+ k1disabl130: 'Disabled',
646
+ k1runtipc131: 'Run state of the line this node belongs to: sampling only while running',
647
+ k1prdrtip132: 'Product & recipe of the active run on this line',
648
+ k1tsdbtip133: 'Time-series backend: switch via DAQ_TSDB_URL (TimescaleDB compatible)',
649
+ k1queuet134: 'Message queue: switch via DAQ_MQTT_URL (standard MQTT broker)',
650
+ k1droptip135: 'Queue drops (produced-consumed)',
651
+ k1eg1000a136: 'e.g. 1000',
652
+ k1needtst137: 'Real-device scenario requires a passing connection test',
653
+ k1plndrv138: 'Reserved protocol: awaiting real channel support',
654
+ k1idlehin139: 'Line not running: this node starts sampling after the line starts',
655
+ k1gateoff140: 'DAQ gateway is paused — all nodes stop sampling',
656
+ k1alarm141: 'Unacked alarms',
657
+ k1ack142: 'Ack',
658
+ k1esc143: 'Escalated {p0} times (notification re-sent)',
659
+ k1acked144: 'Alarm acknowledged',
660
+ k1snap145: 'Pause all collection: stops sampling for every enabled node. Node-level enable/stop is independent — manually stopped nodes stay stopped; resume restores only enabled nodes',
661
+ k1nodestop146: 'Stop collection',
662
+ k1nodestart147: 'Start collection',
663
+ k1evt001: 'No unacknowledged alarms',
664
+ k1evt002: 'Live events',
665
+ k1evt003: 'Log management',
666
+ k1evt004: 'No events yet — waiting for activity…',
667
+ },
667
668
  daqDetail: {
668
669
  kfrm0001: 'Image frame gallery',
669
670
  kfrm0002: 'Profile frames',
@@ -725,1431 +726,1473 @@ export default {
725
726
  k1m1zwux030: 'Every frame (with sampling)',
726
727
  k3lha20031: 'Raw points',
727
728
  k1rfrshint001: 'Trend auto-pull interval (ms); empty or 0 = follow server default (daq.query.displayIntervalMs), min {p0}ms',
728
- },
729
- logs: {
730
- title: '运维日志',
731
- sub: '全操作统一记录:下发了什么控制、用户与 Agent 做了什么操作;按产线/产品/Recipe 隔离查询',
732
- live: '实时',
733
- liveHint: 'WS 实时接收操作事件(仅摘要渲染;完整详情查询于下表)',
734
- all: 'All',
735
- fLine: 'Line',
736
- fProduct: 'Product',
737
- fSource: '来源',
738
- fKind: '分类',
739
- fKeyword: '关键词',
740
- fKeywordPh: '搜索摘要/操作/操作者…',
741
- query: 'Query',
742
- reset: 'Reset',
743
- thTime: 'Time',
744
- thActor: '操作者',
745
- thSummary: '事件摘要',
746
- thScope: '归属(产线/产品/Recipe)',
747
- thDetail: 'Details',
748
- expand: 'Details',
749
- fold: 'Collapse',
750
- loading: 'Querying…',
751
- empty: '无匹配日志',
752
- mSummary: '记录内容',
753
- mSummaryPh: '如:更换 3 号烘箱加热丝,当前批次延长保温 10 分钟',
754
- mSubmit: '入册',
755
- mOk: '已入册',
756
- manual: 'Manual entry',
757
- noDetail: 'None',
758
- mDetail: 'Detail (optional)',
759
- mDetailPh: 'Context, handling notes, related ticket… (stored in the log detail)',
760
- src: {
761
- user: '用户',
762
- system: 'System',
763
- },
764
- kind: {
765
- write: 'Apply',
766
- manual: '人工',
767
- alarm: 'Alarm',
768
- line: 'Line',
769
- recipe: 'Recipe',
770
- rollback: '回退',
771
- daq: 'DAQ',
772
- system: 'System',
773
- },
774
- },
775
- dcw: {
776
- k1qidbpy061: 'Default {p0} (by creation order)',
777
- k1gp649b062: '{p0} ({p1} nodes / {p2} products / {p3} recipes will be unmounted)',
778
- k7xq2mfd063: 'Delete line "{p0}"?',
779
- k5tq8wc071: 'Edit line',
780
- k9m2vxa072: 'Also delete its nodes, products & recipes (irreversible)',
781
- k4r7nbd073: 'Line "{p0}" and its {p1} nodes · {p2} products · {p3} recipes will be permanently deleted',
782
- k3t616a058: 'Custom',
783
- k149r6y7059: '○ Standby',
784
- k1elczt9060: 'No recipes yet',
785
- k3ootr6049: 'Unassigned',
786
- k3wj9n050: 'Line',
787
- k11nndsp051: 'Control Template ·',
788
- k3zz0f052: 'Tagged',
789
- k19dlbli053: 'Color follows the theme',
790
- k3x23c054: 'Built-in',
791
- k1eox1el055: '● Running',
792
- k18moyq1056: 'Acquisition starts once a recipe is selected',
793
- kutxzsz057: 'Select recipe…',
794
- k1i5a9vw001: 'There are nodes/products not assigned to any line; adopt them from the corresponding line detail page',
795
- k1yfm3gv002: 'Delete line (nodes/products/recipes are unmounted)',
796
- k1dhaby4003: 'Pick a recipe to start',
797
- kru37i3004: 'e.g. Line 1 / Casting Line A',
798
- k1f2nwsp005: 'Line purpose notes',
799
- k1tooi3o006: 'e.g. Motor Current Setpoint',
800
- k698qz0007: 'e.g. Motor Current',
801
- k1qdnfzc008: 'e.g. Motor current setpoint: rising current means growing load… adjust in small steps and watch temperature rise',
802
- k1b2tk5c009: 'Line Operations',
803
- k5q0aqi010: 'Lines are the top-level isolation unit for nodes/products/recipes/data: every control node mounts to a line, and after a run starts each acquired sample carries the line identity;\n control templates only define parameter classes and process ranges — nodes are what actually write to PLCs.',
804
- k45uio011: 'Node',
805
- k3waz1012: 'Product',
806
- k48grv013: 'Recipe',
807
- k149b4vg014: '▶ Start Run',
808
- k148rclf015: '■ Stop',
809
- k1fwqw5g016: 'Line Management →',
810
- k1efe391017: 'New Line',
811
- k1sk85vs018: 'No lines yet: click “New Line” to create your first line, then adopt/add control nodes and create products and recipes in the line detail page.',
812
- filterSearchPh: 'Search line names…',
813
- filterEmpty: 'No lines match — adjust the filter or search',
814
- k1b2ioko019: 'Line Name',
815
- k24dxcd020: 'Description (optional)',
816
- k1x7nubr021: 'Halo color (glow color of this line\'s nodes in the digital twin scene)',
817
- k3xdnn022: 'Cancel',
818
- k3wzi2023: 'Create',
819
- k11oadmx024: 'Control Template Manager',
820
- k2hlav5025: 'A template = a parameter class (motor current/speed/line speed…) defining unit and safe process range; control nodes inherit the domain from their template and can override it.',
821
- k3xakp026: 'Delete',
822
- k169eb4s027: 'New Custom Template',
823
- k3xhia028: 'Name',
824
- k1bqk219029: 'Parameter Semantics',
825
- k1ayxrqb030: 'Tag Code',
826
- k3x4ef031: 'Unit',
827
- k1l9jv5m032: 'Range Min',
828
- k1l9jv4p033: 'Range Max',
829
- k3mxmcx034: 'Decimals',
830
- k3xx56035: 'Icon',
831
- k1b6qorg036: 'Process semantics (physical meaning / line impact / adjustment rules — injected into the context of agents bound to this template)',
832
- k3x62t037: 'Close',
833
- k1bg9nga038: 'Create Template',
834
- k188cswn039: 'Pick a recipe for this line first (the recipe must bind control-node parameters)',
835
- k422b8040: 'Temperature',
836
- k3x6ff041: 'Pressure',
837
- k3z9xc042: 'Tension',
838
- kjb3vhs043: 'Encoder/Speed',
839
- k47atw044: 'Vision',
840
- k48c07045: 'General',
841
- k6ugbw2046: 'Template name is required',
842
- k13awowo047: 'Process range (min/max) is required',
843
- k1bphrb3048: 'Delete failed',
844
- },
845
- dcwDetail: {
846
- staleDeleted: 'deleted',
847
- staleDisabled: 'disabled',
848
- staleUnbound: 'unbound',
849
- staleDropped: 'Removed {p0} stale param(s) (node deleted); re-add with a live node if needed',
850
- histBtn: 'History',
851
- histTitle: 'Recipe Version History',
852
- histLoading: 'Loading…',
853
- histEmpty: 'No version history yet (param edits are recorded automatically)',
854
- histCurrent: 'Current',
855
- histInit: 'Initial version',
856
- histAdded: 'added',
857
- histNoChange: 'No param changes',
858
- revertTo: 'Revert to',
859
- revertOk: 'Reverted; new version v{p0} created',
860
- revertReasonUi: 'UI revert to history version',
861
- srcUser: 'User',
862
- srcSystem: 'System',
863
- k9r7d4e016: 'Poll read (ms)',
864
- k9r7d4e017: 'Default 5000ms; 0 = manual read only',
865
- k9r7d4e018: 'PLC reading',
866
- k9r7d4e019: 'No reading yet (poll read off or driver lacks read support)',
867
- k9r7d4e020: 'Read current PLC value',
868
- k9r7d4e021: 'Read',
869
- k9r7d4e022: 'Manual',
870
- k9r7d4e023: 'Default 5s',
871
- k1lzfi4g180: '({p0} params)',
872
- k6vgks7181: 'Batch {p0}',
873
- k1alcbyu182: 'Node {p0} write OK: {p1}',
874
- kl1e9x9183: 'Node {p0} write failed: {p1}',
875
- k8x1un1184: 'Missing required driver parameter: {p0}',
876
- ky4e1tr185: 'Template “{p0}” created and pre-selected in the Add Control Node wizard',
877
- k17jteb9186: 'Line started: {p0} · {p1} (batch {p2})',
878
- kzl49pd187: 'Line stopped ({p0}); window data is kept for query',
879
- ks7szkt188: 'Recipe dispatch partially failed: {p0}',
880
- k3zkt2166: 'Start Run',
881
- k1g3lh2v167: 'Dispatch finished: ',
882
- k69vag8168: '· tagged',
883
- knxgni9169: 'Resume All Control',
884
- k1b2hxmx170: 'Line Stopped',
885
- k1bg9nga171: 'Create Template',
886
- k1fstglk172: 'Test Connection',
887
- k1bge46t173: 'Create Node',
888
- k3w6td174: 'Apply',
889
- kxwei5175: 'View Batch Data',
890
- k1efq0r9176: 'New Recipe',
891
- k1b3kwg0177: 'Save Recipe',
892
- k416ek178: 'Query',
893
- k1bg4kn6179: 'Create Product',
894
- k1l0iow1137: 'Operations',
895
- k3wtib138: 'Writes',
896
- k3yit7139: 'Failed',
897
- k3km252140: 'product)',
898
- k3x23c141: 'Built-in',
899
- k3t616a142: 'Custom',
900
- k1av3wgs143: 'Products /',
901
- k1l3hrvp144: 'Recipe batches',
902
- k11lq94k145: 'Batch Data ·',
903
- k134rw3b146: 'Recipe min (optional, ≥',
904
- khrv911147: 'Recipe max (optional, ≤',
905
- kw7ym9b148: 'Write history (last',
906
- k1bqci06149: 'params OK',
907
- k40bfz150: 'entries)',
908
- k1b2snna151: 'Line Detail',
909
- kzcbfki152: 'Line-scoped nodes/products/recipes/batches: a recipe is required to start a run, and every acquired sample within the window carries the line identity — true line-level data isolation; PLC low-level (scaling/write/readback) is encapsulated by the system.',
910
- kplrsg153: 'Pause All Control',
911
- k1snap154: 'Pause all control: stops writes for every enabled node. Node-level enable/stop is independent — manually stopped nodes stay stopped; resume restores only enabled nodes',
912
- k1pxrhx0154: 'Line running',
913
- k1hicmch155: '(no parameters, cannot start)',
914
- k1bg4759156: 'Creating…',
915
- kr45rk9157: ' · Custom',
916
- k1fsh720158: 'Testing…',
917
- k3o3ib3159: 'Controlled',
918
- k3zul4160: 'Manual',
919
- k1br0ij9161: 'Loading…',
920
- k3vpfg9162: 'In progress',
921
- k1iiwk0i163: 'Edit Recipe',
922
- k1b38d59164: 'Saving…',
923
- k1eyx09r165: 'Querying…',
924
- kd3ygmn001: 'Total Writes',
925
- kd3znl0002: 'Total Failed Writes',
926
- kc4ixly003: 'Create a custom control-node template: physical meaning / unit / safe process range',
927
- k1tooi3o004: 'e.g. Motor Current Setpoint',
928
- k698qz0005: 'e.g. Motor Current',
929
- kxz9174006: 'Safe Min',
930
- kxz9167007: 'Safe Max',
931
- k1qdnfzc008: 'e.g. Motor current setpoint: rising current means growing load… adjust in small steps and watch temperature rise',
932
- kgpxzy3009: 'Defaults to auto-incremented name per template',
933
- kb1srz0010: 'e.g. 5000 (hold-write heartbeat)',
934
- k12bnyt9011: 'e.g. Oven 2 temperature: tracks zone delta with Oven 1, step ≤1℃',
935
- k1bpfjgx012: 'Delete Product',
936
- k1l11api013: 'Alarms when DAQ goes out of bounds within the active batch',
937
- k12c11vm014: 'e.g. 0.8mm Optical Film',
938
- k1hxx8hy015: 'Product/process notes (optional)',
939
- k5vew9z016: 'within node global range',
940
- kzoh5pr017: 'hard write constraint while running',
941
- k19337yp018: 'The line does not exist or has been deleted.',
942
- kllwu1c019: '← Back to Line Overview',
943
- k1972dx9020: 'Add Control Template',
944
- k1976uns021: 'Add Control Node',
945
- kaebkky022: 'Unassigned Assets · Adopt into This Line',
946
- kyjp9fg023: '+ Adopt',
947
- k19pof14024: 'Pick a product and recipe to start; every acquired sample will be tagged with product/recipe/batch while running',
948
- k3waz1025: 'Product',
949
- kuisodh026: 'Select product…',
950
- k48grv027: 'Recipe',
951
- kutxzsz028: 'Select recipe…',
952
- kfb8vml029: '▶ Start Acquisition',
953
- k1xyhd2y030: '■ Stop Acquisition',
954
- k1x4vam0031: 'Add Control Node Template',
955
- ke1iyud032: 'A template = a parameter class (physical meaning / unit / safe range): control nodes inherit the domain from their template; templates never touch PLCs — nodes do the writing.',
956
- k169eb4s033: 'New Custom Template',
957
- k1f55q76034: 'Template Name',
958
- k1bqk219035: 'Parameter Semantics',
959
- k1ayxrqb036: 'Tag Code',
960
- k3x4ef037: 'Unit',
961
- k1l9jv5m038: 'Range Min',
962
- k1l9jv4p039: 'Range Max',
963
- k3mxmcx040: 'Decimals',
964
- k3xx56041: 'Icon',
965
- knjmyfr042: 'Process semantics (physical meaning / line impact / adjustment rules — injected into the context of agents bound to nodes of this template)',
966
- k3x62t043: 'Close',
967
- kyj8fen044: 'Real PLC Write',
968
- k1ejzwqp045: 'Control template (meaning / unit / safe range)',
969
- k1ce2k1y046: 'Node name (optional)',
970
- k1vyb8im047: 'Hold-write interval ms (empty = manual only)',
971
- kiune1f048: 'Write calibration encode (physical value → PLC setpoint)',
972
- kkzy0k049: 'None (write engineering value directly)',
973
- k1kt87rx050: 'Protocol',
974
- k1hgizn7051: 'Node process semantics (optional, overrides template — injected into the context of agents bound to this node)',
975
- k3xdnn052: 'Cancel',
976
- k1e2dtkt053: 'Control Node',
977
- k403cy054: 'Control',
978
- k42w8s055: 'State',
979
- k1deqh0d056: 'Current Setpoint',
980
- k1k79ec9057: 'Setpoint',
981
- k1dexou6058: 'Process Range',
982
- k1b1nnaa059: 'Hold Interval',
983
- k1i8rtqt060: 'Bound Device',
984
- k40aa6061: 'Actions',
985
- k3n93ed062: 'Paused',
986
- k3xakp063: 'Delete',
987
- k1wtecyw064: 'No control nodes yet — click “Add Control Node” (top right) to create one from a process template.',
988
- k1j8w3hd065: 'Products & Recipes',
989
- k1akm6dc066: '+ New Recipe',
990
- k1aka0ki067: '+ New Product',
991
- k6bl2q8068: 'A product can have multiple recipes; a recipe = a set of process parameters (control template + target engineering value). The recipe chosen at line start is written on start,\n and every acquired sample is tagged with product/recipe/batch.',
992
- k3x4t1069: 'All',
993
- knov3zg070: 'No products yet — click “New Product” to create one (recipes require a product; data is isolated per product).',
994
- k1497qvr071: '▶ Apply',
995
- k45eb0072: 'Edit',
996
- keko1xy073: 'No recipes yet — click “New Recipe” to define a product\'s process parameter set.',
997
- k1rjer8d074: 'Production Batches (data isolation windows)',
998
- k400lb075: 'Batch',
999
- k4497j076: 'Window',
1000
- k1bqhtmu077: 'Param Results',
1001
- k1dzwrdp078: 'Batch Data',
1002
- k1blr7y7079: 'Close Batch',
1003
- k1me41w8080: 'DAQ Channel Summary (within the batch window, product-isolated)',
1004
- k48hde081: 'Channel',
1005
- k45uio082: 'Node',
1006
- k40t11083: 'Latest',
1007
- k3xuaw084: 'Avg',
1008
- k4118o085: 'Samples',
1009
- kd457ry086: 'No DAQ samples in the window',
1010
- k12b7cxs087: 'Write History (within the batch window)',
1011
- k3xbjr088: 'Parameter',
1012
- k3ncbsh089: 'Engineering',
1013
- k3lh3mz090: 'Raw',
1014
- k454pg091: 'Result',
1015
- k40ieu092: 'At',
1016
- knzcp8i093: 'No write records in the window',
1017
- k1dw4fzf094: 'Product',
1018
- k1l3f8so095: 'Recipe Name',
1019
- k40gkk096: 'Description',
1020
- ka1kfgh097: 'Process parameters (bound to this line\'s control nodes: nodes are the real PLC writers, templates only classify)',
1021
- k3renp2098: 'Target',
1022
- k44idg099: 'Remove',
1023
- k1broh7h100: '+ Add Parameter',
1024
- k1h5gues101: 'DAQ monitor windows (while the batch is active, DAQ live values outside the window turn the row into an alarm)',
1025
- k1empnnb102: 'DAQ Node',
1026
- kqm08ap103: 'Monitor Min (optional)',
1027
- kpypf8g104: 'Monitor Max (optional)',
1028
- kv1de1p105: '+ Add Monitor Window',
1029
- k1us3jse106: 'Line Data Query (product · recipe · parameter · time · bucket)',
1030
- k1bkl1jx107: 'All Products',
1031
- k1bkx7cr108: 'All Recipes',
1032
- k1demcae109: 'Parameter',
1033
- k1bkx7ya110: 'All Channels',
1034
- k1bkul3k111: 'All Nodes',
1035
- kx2ojn0112: 'Last (min)',
1036
- kjvnvn4113: 'Bucket ms (0 = raw)',
1037
- k42kcu114: 'Points',
1038
- k49ujb115: 'First',
1039
- k40pvw116: 'Last',
1040
- k3xho3117: 'Span',
1041
- k1efduyf118: 'New Product',
1042
- k1avjrl6119: 'Product Name',
1043
- k1bhhheq120: 'Go to Sign-in',
1044
- k1ledgt001: 'Parameter ledger',
1045
- k1ledgs001: 'Pick a node…',
1046
- k1ledgv001: 'Current setpoint',
1047
- k1ledgv002: 'Recipe target',
1048
- k1ledgv003: 'Last good',
1049
- k1ledga001: 'Refresh',
1050
- k1ledga002: 'Step rollback',
1051
- k1ledgh001: 'Setpoint history (journal)',
1052
- k1ledgr001: 'Optimization records',
1053
- k3own4q121: 'Unbound',
1054
- k3zgkk122: 'Standby',
1055
- k3l3h80123: 'Writing',
1056
- k40reu124: 'Error',
1057
- k44c2n125: 'Offline',
1058
- k422b8126: 'Temperature',
1059
- k3x6ff127: 'Pressure',
1060
- k3z9xc128: 'Tension',
1061
- kjb3vhs129: 'Encoder/Speed',
1062
- k47atw130: 'Vision',
1063
- k48c07131: 'General',
1064
- k6ugbw2132: 'Template name is required',
1065
- kx3pg59133: 'Unit is required (e.g. ℃ / A)',
1066
- k13awowo134: 'Process range (min/max) is required',
1067
- k1b6qe0r135: 'A recipe is required before starting: pick a product and a recipe (the recipe must contain process parameters)',
1068
- kszv5sq136: 'No matching data in the window (check product/recipe/time range; only samples from running lines carry the line identity)',
1069
- },
1070
- teams: {
1071
- k6ljhyv029: 'Add Member · {p0}',
1072
- k1c0o6oe030: 'Deploy · {p0}',
1073
- kh90glh031: 'Deployed {p0} instances to the Channel',
1074
- k3svl8y028: 'Groups',
1075
- kxheuf1001: 'Public groups: deployable by everyone; only the owner can modify',
1076
- k1efmuyx002: 'New Group',
1077
- k3xhia003: 'Name',
1078
- k40gkk004: 'Description',
1079
- k3lrqn0005: 'Visibility',
1080
- k41ds5006: 'Template',
1081
- k479op007: 'Role',
1082
- k12gl4wn008: 'Groups are user-isolated; public groups are deployable by everyone (only the owner can modify); deploy a whole group to a Channel with one click (each member is cloned as an independent instance).',
1083
- krpx6qa009: 'Back to Workspace',
1084
- k1bpgi8h010: 'Admin view: groups and creators of all users are visible',
1085
- k1bpojhf011: 'Delete Group',
1086
- k48ja7012: 'Deploy',
1087
- krt2oib013: '+ Add Member Template',
1088
- k6cbbgf014: 'Create the first group',
1089
- k17jfge3015: 'Private (visible only to you)',
1090
- k1h2lq0o016: 'Public (deployable by everyone, only you can modify)',
1091
- keowzlv017: 'lead (at most one)',
1092
- k3x23c018: 'Built-in',
1093
- k3wv1t019: 'Public',
1094
- k447jj020: 'Private',
1095
- k1bvcdo2021: 'Name is required',
1096
- k3n5hak022: 'Created',
1097
- k1globhp023: 'Published: deployable by everyone, only you can modify',
1098
- k1xxabaf024: 'Switched to private',
1099
- k1kw4rtj025: 'Select Template',
1100
- k3n5hzw026: 'Added',
1101
- k1oxjrxx027: 'Group deleted',
1102
- k1plugon040: 'Plugin switches · {p0}',
1103
- k1plugon041: 'Plugins to enable for this team; propagated to the target Channel on deploy',
1104
- k1plugon042: 'Checked plugins take effect for members after the team deploys to a Channel; tools of unchecked plugins stay hidden from that team',
1105
- k1plugon043: 'Team plugin switches saved',
1106
- k1plugon044: 'Not explicitly configured — all enabled by default; toggling any switch applies per-row',
1107
- k1plugon045: 'Explicitly configured (per the switches below)',
1108
- k1plugon046: 'No registered plugins',
1109
- k1plugon047: 'Plugin switches…',
1110
- },
1111
- tokens: {
1112
- k1upppaw026: 'Each token can be revoked independently; plaintext is archived server-side and can be viewed/copied anytime',
1113
- k3p0p44027: 'Tags:',
1114
- kj3mklm028: '(unnamed)',
1115
- k1hlqknl001: 'Tags, e.g. CI / test scripts / backup',
1116
- k41416002: 'Tags',
1117
- k1k6z0r8003: 'Sign in first',
1118
- k1gjnree004: 'Tokens are private to a signed-in user; sign in to manage them.',
1119
- k1bhhheq005: 'Go to Sign-in',
1120
- khcxmsc006: 'Current session token is marked',
1121
- k1defr98007: 'Current session',
1122
- kyelqk1008: 'Hidden (legacy)',
1123
- k3vrpcs009: 'Rename',
1124
- k3xmrz010: 'Revoke',
1125
- k12149oy011: 'The token has been created and archived; you can view/copy it from the list anytime. Still, only reveal the plaintext in trusted environments.',
1126
- k1s5f5zd012: 'Saved, close',
1127
- k19jvk54013: 'Failed to load token list',
1128
- k169z26g014: 'Tags cannot be empty',
1129
- k3n9aij015: 'Updated',
1130
- k3n64kh016: 'Revoked',
1131
- kjtcn2h017: 'Copy failed; please select and copy manually',
1132
- kkpgzo8018: 'This token was created by a legacy version (hash only); plaintext is unavailable. Consider revoking and re-issuing',
1133
- k1gj9ls019: 'Failed to reveal plaintext',
1134
- kr5ovor020: 'This token was created by a legacy version (hash only); plaintext cannot be copied. Consider revoking and re-issuing',
1135
- kubtby5021: 'Failed to fetch plaintext',
1136
- kgkfcr0022: 'Copy failed; reveal the plaintext first and copy manually',
1137
- k1bg95gk023: 'Created',
1138
- k1euotul024: 'Last Used',
1139
- k40aa6025: 'Actions',
1140
- },
1141
- town: {
1142
- k3n4mae005: 'Workshop',
1143
- k1wm8wtr001: 'No Channels mounted yet',
1144
- k47e4s002: 'Please go to ',
1145
- k17rerba003: 'create/mount a channel, then come back to the AgentWorkShop twin space.',
1146
- k1uc5mup004: 'Connecting to the AgentWorkShop twin space (subscribing to the live event stream)…',
1147
- },
1148
- wsHome: {
1149
- k1mbatbh030: 'Registered: {p0}; sign-in token saved',
1150
- kwixbdl031: 'Signed in: {p0}',
1151
- newWs: 'New Workspace',
1152
- k3wcox029: 'Task',
1153
- k3n4m5c025: 'Workspace',
1154
- ke16e53026: '\'s resources (user-isolated; persisted server-side)',
1155
- k41ds5027: 'Template',
1156
- k1ggoa45028: 'Members / Busy',
1157
- k48h2c001: 'Email or username',
1158
- k3yvgs002: 'Password',
1159
- kwgbai9003: 'Username (unique)',
1160
- kizjkbo004: 'Email (unique)',
1161
- kh3cqfn005: 'Password (≥6 chars with letters and digits)',
1162
- k15qunld006: 'Paste user token',
1163
- ksmpk8l007: 'Workspace name, e.g. Payment Gateway Refactor',
1164
- kr0vzqu008: 'Open Workshop',
1165
- k43kol009: 'Sign In',
1166
- k17x74cj010: 'Each sign-in issues a session token that can be revoked individually on the Token page.',
1167
- k1so6a0v011: 'Register & Sign In',
1168
- k1r0a4u3012: 'You are signed in automatically after registration; you can issue more tokens yourself.',
1169
- k3pa5h4013: 'Templates',
1170
- k3svl8y014: 'Groups',
1171
- k484e7015: 'Sign Out',
1172
- k1bst7s9016: 'Syncing…',
1173
- k1ylgrbc017: 'No Channel mounted (mount from the left rail after entering)',
1174
- kr1uwwi018: 'Open Console',
1175
- k1vnhyks019: 'Username is required',
1176
- k8ieqzj020: 'Email is required',
1177
- ksx73ra021: 'Password must be at least 6 characters (letters and digits)',
1178
- k3ngm6p022: 'Signed out',
1179
- k1br33vc023: 'Load failed',
1180
- k3n5sd7024: 'Deleted',
1181
- },
1182
- wsView: {
1183
- kqwckjr001: 'Hotkeys 1-5 switch views',
1184
- k1tsy2e4002: 'Collapse/expand session bar',
1185
- k1tx0ppf003: 'Collapse/expand inspector',
1186
- k1cvg8sb004: 'Command palette (⌘K)',
1187
- k1fkfvra005: 'Drag to resize session bar',
1188
- kwqb0st006: 'Drag to resize inspector',
1189
- klzbtyp007: 'Mount or select one from the left',
1190
- k3zaj4008: 'Start',
1191
- k1us0cxy009: 'The session list supports creating Channels, instantiating from templates, and hot-editing scenario and working directory',
1192
- k3otu32010: 'Timeline',
1193
- k3ko7a8011: 'Tasks',
1194
- k3xbmo012: 'Screens',
1195
- k1cz0pbw013: 'Twin Space',
1196
- },
1197
- meta: {
1198
- agents: 'Agent Templates',
1199
- teams: 'Agent Team Groups',
1200
- ctpl: 'Channel Template Hub',
1201
- },
1202
- a2aRpcDebugger: {
1203
- k6hcbxi001: 'Drag to resize drawer',
1204
- k34cz76002: 'Target agent instance',
1205
- k1bqe2pj003: 'Parameter Template',
1206
- k405w8004: 'Run',
1207
- kq00d3v005: 'Debug: please echo this message',
1208
- k1kgwib8006: 'Debug message',
1209
- k1e1hi4u007: '▶ Stream ended',
1210
- k1vryfv008: 'Select target agent',
1211
- },
1212
- agentInspectorDrawer: {
1213
- k3ypnl022: 'Done',
1214
- k16t80ax023: 'Focus main timeline',
1215
- k6hcbxi001: 'Drag to resize drawer',
1216
- k1ofh789002: 'Remove this member? Its queued tasks will be re-dispatched to remaining members',
1217
- kwsotdg003: 'Inject a message into this agent…',
1218
- k1frr9es004: 'No events for this agent yet (generated after connection)',
1219
- k1axbijb005: 'Task Queue',
1220
- kas9m5q006: 'Members:',
1221
- k1hrtylo007: 'Remove Member',
1222
- k1jxt8vh008: 'Request ack',
1223
- k3xkc7009: 'Send',
1224
- k498bf010: 'Queue',
1225
- kk653nv011: 'Running: “',
1226
- k43rxk012: 'empty)',
1227
- k1bs9x43013: 'Unfocus',
1228
- kgjqkq9014: 'Re-enable (accept new tasks)',
1229
- kpkjhbz015: 'Disable (pause accepting new tasks)',
1230
- k3n5z7y016: 'Enabled',
1231
- k1dst50d017: 'Disabled (its queued tasks are reclaimed by the scheduler)',
1232
- kane5dq018: 'Member removed',
1233
- k1p055kl019: 'Focus cancelled',
1234
- ky2fhkf020: 'Main timeline focused on this agent',
1235
- k1y2jrsr021: 'Message injected',
1236
- },
1237
- agentLanesView: {
1238
- k1wn2vmt036: 'omp process PID {p0} · harness session state',
1239
- k1l029kf037: 'Interrupt member {p0}\'s runtime? Running tasks will be aborted; the member is kept',
1240
- kt3n27m038: 'Remove member {p0}? Its queued tasks will be reclaimed automatically',
1241
- k7xt1y6039: 'Drag to resize the {p0} lane',
1242
- k1qcmxyu040: '{p0} ({p1} members{p2})',
1243
- k19j5rho041: 'Edit member {p0}',
1244
- kg2slvf042: '(已有 lead,不能再添加 lead)',
1245
- kpr6a3f043: '(channel 已有 lead,编组内 lead 成员冲突;请先移除现有 lead 或选用无 lead 编组)',
1246
- k21xjz2044: 'Member {p0} updated (runtime reloads with the new prompt)',
1247
- k3jmrw1045: 'Update failed: {p0}',
1248
- k1g5ykr3046: 'Member {p0} added (waiting for the agent.member event to converge)',
1249
- k1j97j74047: 'Add member failed: {p0}',
1250
- kk3uwzo048: 'Cloned template member {p0} as {p1} (waiting for event convergence)',
1251
- k1rrfz5h049: '模板克隆失败{\'$\'}{\'{\'}text.includes(\'LEAD_EXISTS\') ? t(\'agentLanesView.kg2slvf042\') : ',
1252
- k1gslqf9050: 'Group {p0} deployed ({p1} members, waiting for event convergence)',
1253
- k6nzyd3051: '编组部署失败{\'$\'}{\'{\'}text.includes(\'LEAD_EXISTS\') ? t(\'agentLanesView.kpr6a3f043\') : ',
1254
- k1n3o03a052: 'Member {p0} removed',
1255
- k13dsp10053: 'Remove member failed: {p0}',
1256
- kcpbv47054: 'Interrupted the runtime of member {p0}',
1257
- k139ec5j055: 'Interrupt failed: {p0}',
1258
- k107s4am001: 'Scenario system prompt injected',
1259
- k1884q17002: 'Open this member\'s native omp terminal (live TUI + HITL controls: inject conversation / abort / answer asks)',
1260
- k1pgd3tf003: 'Edit member info / scenario prompt',
1261
- k17kcn55004: 'Add Team Member',
1262
- k3nufdm005: 'Member Name',
1263
- k479op006: 'Role',
1264
- kaogfp007: 'System prompt prefix (optional, defines member specialty)',
1265
- kbqn6w5008: 'e.g. You are a database migration expert focused on schema changes and backfills…',
1266
- kung925009: 'Select template…',
1267
- k1bl78fu010: 'Clone Role',
1268
- k1vhvbz7011: 'System prompt override (optional; empty = template preset)',
1269
- k7ft6ig012: 'Empty = use the template\'s config.systemPromptPrefix; fill in to override with this scenario prompt',
1270
- k29om9b013: 'Select an AgentTeam (batch-clone all members)',
1271
- kur1otz014: 'Select group…',
1272
- k10ti81i015: 'This content is used as a system-prompt prefix injected into the member\'s harness every turn (omp) or as a status message (mock). Empty = no scenario prompt',
1273
- k3y5ja016: 'Team',
1274
- k3ll6sa017: ' members',
1275
- k1fmutgo018: 'Add Member',
1276
- k1woev5v019: 'Syncing member snapshots…',
1277
- k122h4pc020: 'No members in this team yet',
1278
- k7cr2h8021: 'Click “Add Member” (top right) to create from scratch, or deploy from templates / groups in one click',
1279
- k3xycu022: 'Scenario',
1280
- k4588s023: 'Terminal',
1281
- k1b7cwvy024: 'Create from Scratch',
1282
- k1ndey1w025: 'Clone from Template',
1283
- k1l5qyux026: 'Deploy Group',
1284
- kqg6783027: 'mock (test script)',
1285
- k1weovo028: 'lead (at most one; rejected if a lead already exists)',
1286
- knybb6r029: 'Template library empty? Create reusable agent templates (omp/mock/claude + system prompt) on the Templates page first.',
1287
- k1qqnq5030: 'Each member template in a group is cloned as an independent instance; if the group has a lead and this channel already has one, deployment is rejected (409).',
1288
- k1rw1rd2031: 'After saving, the member runtime reloads; the next task/schedule uses the new prompt',
1289
- ky6jqt4032: 'Member name is required',
1290
- kfvflle033: 'user edits member info / scenario prompt',
1291
- k13xo8sz034: 'Select an agent template to clone',
1292
- k1tjd5ab035: 'Select an AgentTeam to deploy',
1293
- },
1294
- artifactCard: {
1295
- k3yu62003: 'Expand',
1296
- k3y694004: 'Copy',
1297
- k40p82001: 'Collapse',
1298
- k3n6o1m002: 'Copied',
1299
- },
1300
- assetLibrary: {
1301
- katn7lo015: 'Drag onto the twin scene to create a device instance · {p0}',
1302
- k8nv3or016: 'Uploaded → {p0}',
1303
- k1hhga4h014: 'Confirm Upload',
1304
- k7la4x5001: 'Device Model Library',
1305
- kulif5b002: 'Drag into the twin space to create an instance',
1306
- k5hg6jq003: 'Release to select a model',
1307
- k3xdnn004: 'Cancel',
1308
- k1ar7n8i005: 'Uploading…',
1309
- k1n32zs0006: 'Device · drag & drop',
1310
- k1kq2tmi007: 'Loading…',
1311
- k15527e1008: 'No device models yet; drop a .glb file to upload',
1312
- k1xz5wvk009: '3D preview not supported yet)',
1313
- k1iiort6010: 'Drop or pick a model file',
1314
- k498l011: 'Del',
1315
- kcjqcaw012: 'Drop or pick a device model file first (.glb/.gltf/.obj/.fbx)',
1316
- k8n918k013: 'Model file deleted',
1317
- },
1318
- channelSessionList: {
1319
- kjmldih035: 'Settings {p0}',
1320
- k1yurooi036: 'Move out {p0}',
1321
- kfe4pzq037: 'Working directory: {p0} (click to copy path)',
1322
- k1oes209038: '{p0}{p1} ({p2} members)',
1323
- k1pmemvt039: 'Channel Settings · {p0}',
1324
- kud74vg040: 'Copied: {p0}',
1325
- k1x2th9e041: 'Create failed: {p0}',
1326
- kai50qc042: 'Instantiated from template and mounted ({p0} members)',
1327
- k2hfym5043: '{p0} template',
1328
- k3wcox034: 'Task',
1329
- kne35ug001: 'Channel Settings (scenario / working dir / save as template)',
1330
- k1qjyl6l002: 'Create & Mount Channel',
1331
- k40gkk003: 'Description',
1332
- k1wj4f38004: 'Scenario prompt (injected to all)',
1333
- k1098zie005: 'The working-scenario spec shared by all agents of this channel, injected into every harness together with the system design handbook… e.g. all deliverables must include a Chinese summary; code changes need a plan first; end replies with a [DONE] marker',
1334
- kmgv4h5006: 'Working directory (team workspace mount point)',
1335
- k1i8q46x007: 'Scenario prompt (after editing, member runtimes are recycled and re-assembled with the new scenario)',
1336
- ku3ugac008: 'The working-scenario spec shared by all agents of this channel…',
1337
- k67dzev009: 'Working directory (agents\' cwd; omp subprocesses restart with the new directory after editing)',
1338
- k6kpql010: 'Save as Channel Template',
1339
- k1f55q76011: 'Template Name',
1340
- k3lrqn0012: 'Visibility',
1341
- kbdp56k013: 'Select team working directory',
1342
- kkv789s014: 'No Channel mounted yet (instantiate from a template below in one click)',
1343
- k1bst7s9015: 'Syncing…',
1344
- k18ppu31016: 'Template = scenario + working directory + team; instantiating assembles the members',
1345
- k1u3zsr5017: 'Injection order: scenario spec → member specialty → memory → system handbook → tasks; the settings dialog hot-updates (member runtimes recycle and re-assemble automatically)',
1346
- k3pz0ma018: 'Browse…',
1347
- kucq30k019: 'This directory is injected as the working cwd of every agent harness during tasks (omp subprocess working directory); created automatically if missing',
1348
- k1ful761020: 'A new Channel starts as an empty team with no agents; after entering, use “Add Member” to pick roles (lead/worker) and scenario prompts to assemble it',
1349
- k1x6kznr021: 'Capture the current scenario/working directory/team combination as a reusable template',
1350
- k1otvrfv022: 'Private (only you)',
1351
- k1cc399s023: 'Public (instantiable by everyone)',
1352
- kl9btf7024: 'Members keep template references when present, otherwise inline snapshots are saved; scenario and working directory are copied as-is',
1353
- k1ggoa45025: 'Members / Busy',
1354
- krij3gg026: 'Copy failed (browser clipboard not authorized)',
1355
- k1bg6shc027: 'Create failed',
1356
- kn89jvs028: 'Channel created (empty team; enter and assemble lead / workers via “Add Member”)',
1357
- k97xi7u029: 'Template mount failed',
1358
- k1hgfvdc030: 'Move-out failed',
1359
- kvsxlu6031: 'Updated; member runtimes will be recycled and re-assembled with the new settings',
1360
- k1i0ji0y032: 'Template name is required',
1361
- kjpguxw033: 'Captured as a Channel template (scenario/directory/team snapshot)',
1362
- k1plugon044: 'Plugin switches saved; tool lists of running agents in this Channel refresh immediately',
1363
- k1pluglbl045: 'Plugins (per-Channel switches; disabled tools are hidden from and rejected for this team\'s agents)',
1364
- k1plugsrc046: 'Not explicitly configured (all enabled by default); applies per-row after first toggle',
1365
- },
1366
- clusterArtifact: {
1367
- kyh87lw001: 'Deliverable body matches the reply above',
1368
- k49les002: 'Hide',
1369
- },
1370
- clusterError: {
1371
- k40p82001: 'Collapse',
1372
- },
1373
- clusterLife: {
1374
- k1xthifv001: 'Non-status event',
1375
- k498bf002: 'Queue',
1376
- k3pi5z1003: 'Sub-state',
1377
- },
1378
- clusterMember: {
1379
- k40p82001: 'Collapse',
1380
- },
1381
- clusterMemory: {
1382
- k40p82001: 'Collapse',
1383
- },
1384
- clusterOther: {
1385
- k40p82001: 'Collapse',
1386
- },
1387
- clusterRoute: {
1388
- k12448jn010: 'Human sender: {p0}',
1389
- khsfl59011: 'View {p0}',
1390
- k94hqp2012: 'Reply to message {p0}',
1391
- k13ewgum013: 'All {p0}',
1392
- kfbpe32001: 'The sender requests a reply: the receiver must ack with the execution result',
1393
- kyza1ya002: '(broadcast)',
1394
- k3wn89c003: 'Reply required',
1395
- k40p82004: 'Collapse',
1396
- k1ax44eo005: 'Task Dispatch',
1397
- k1bsct42006: 'Cancel Notice',
1398
- k1ax087h007: 'Subtask Completed',
1399
- k1cxjc4m008: 'Live Injection',
1400
- k1bka5dz009: 'Collaboration Message',
1401
- },
1402
- clusterStatus: {
1403
- k1fpy8te001: 'Thinking / intermediate output',
1404
- },
1405
- clusterStream: {
1406
- kpk9wff001: 'Content merged into a later reply block (not rendered twice)',
1407
- },
1408
- clusterTask: {
1409
- kfwdcd4008: 'Status code {p0}',
1410
- k3n8lhn001: 'Submitted',
1411
- k3n8mf0002: 'Assigned',
1412
- k3o5tz9003: 'Running',
1413
- k1hpsvap004: 'Awaiting merge',
1414
- k10w8u89005: 'Done · accepted',
1415
- k4u7566006: 'Failed · awaiting re-dispatch',
1416
- k3n5vg5007: 'Cancelled',
1417
- },
1418
- clusterTool: {
1419
- k40p82001: 'Collapse',
1420
- },
1421
- commandPalette: {
1422
- k1nz14ux013: 'Switch Channel: {p0}',
1423
- k1d8xtez014: 'Timeline filter: {p0}',
1424
- k1nn6i83001: 'Type a command… (navigate/views/Channel/filter/actions)',
1425
- ktup4q4002: 'No matching commands',
1426
- k1kvl0fa003: 'Select /',
1427
- k1e3ualj004: 'Run /',
1428
- k3x62t005: 'Close',
1429
- kmxxk3u006: 'Go: Workspace Overview',
1430
- k4s8e5q007: 'Go: Agent Templates',
1431
- k1ezz11x008: 'Go: Channel Template Hub',
1432
- k143z9bg009: 'View: Timeline',
1433
- k13ztmim010: 'View: Task Board',
1434
- k21cpnp011: 'View: Multi-channel',
1435
- k1tm54il012: 'Action: focus the task input',
1436
- },
1437
- composer: {
1438
- kl3604i033: 'Direct to {\'@\'}{p0}',
1439
- k1cxjc4m034: 'Live Injection',
1440
- k1d2idgj035: 'Task dispatched → {\'@\'}{p0} ({p1})',
1441
- k1wk4bf036: 'Message sent to {\'@\'}{p0} ({p1})',
1442
- k2z0fsx032: ' · direct',
1443
- k1b38y2b001: 'Unlimited',
1444
- k1jqqvhe002: 'HITL live injection: when the target is running, inject into its current turn directly (visible in the same turn)',
1445
- k195594v003: 'Request an ack from the recipient',
1446
- k1bxvc46004: 'Send to…',
1447
- k3wcox005: 'Task',
1448
- k17u6q77006: 'First line = title',
1449
- k41ykc007: 'Message',
1450
- k3x9n2008: 'Instant',
1451
- k40g8m009: 'Queued',
1452
- k3xv7u010: 'Ack',
1453
- k49kr1011: 'Interval',
1454
- k2z7yuw012: ' · default',
1455
- k1bosqfv013: 'Live inject',
1456
- kqdhdlq014: 'Task title is required',
1457
- k1l36qf9015: 'Max runs must be 1–10000; empty means unlimited',
1458
- k1bw65is016: 'Select a target agent ({\'@\'} mention available)',
1459
- k1ww0ftm017: 'Running · the task joins its mailbox queue',
1460
- k9eq10w018: 'Target busy: the new task is delivered to its mailbox and handled FIFO after the current turn',
1461
- kbhz1rp019: 'Stopped · the task is queued and runs after wake-up',
1462
- kophjf5020: 'Target runtime stopped: the task is safely queued and processed after re-enabling',
1463
- k4qgtiw021: 'Idle · the task starts a turn immediately',
1464
- kfmjwas022: 'Target idle: processing starts right after delivery',
1465
- kwg68t0023: 'Running · will be live-injected into the current turn (HITL)',
1466
- k7w1etd024: 'Running · handled after the current turn',
1467
- k9m6p7u025: 'Target busy: the instant message is injected into its running session (visible in the same turn)',
1468
- kj1ngpo026: 'Stopped · the message is queued and delivered after wake-up',
1469
- kmf7lcc027: 'Target runtime stopped: the message is safely queued and processed after re-enabling',
1470
- k1tet5df028: 'Idle · a turn starts immediately to handle it',
1471
- kn600in029: 'Target idle: processing starts right after delivery',
1472
- k2h5jwc030: 'Type a task (first line = title, {\'@\'} to target a member, defaults to lead)… ⌘/Ctrl+Enter to submit',
1473
- k15mwzt7031: 'Type a message/notice ({\'@\'} to target a member, defaults to lead)… ⌘/Ctrl+Enter to send',
1474
- },
1475
- deviceTwinPanel: {
1476
- k9r7d4e030: 'Current PLC reading (actual)',
1477
- kq2jssk008: 'Recipe Process Window',
1478
- k1iwj796009: 'Node Range',
1479
- kxddket010: '超出{p0} {p1}',
1480
- k1j04u8001: 'Write setpoint (out-of-range values are rejected)',
1481
- k7k6evr002: 'Device Console',
1482
- kkw7sn5003: 'Loading device registers…',
1483
- k13y2qmg004: 'Unregistered device',
1484
- kotf23l005: 'Drag a device model into the twin scene to create a digital twin entity',
1485
- k48grv006: 'Recipe',
1486
- k44653007: 'Acknowledge',
1487
- },
1488
- eventBlock: {
1489
- kc918hn001: 'A response or human acknowledgement is required',
1490
- kcugdph002: 'Content duplicated from delta stream merged into one block',
1491
- kknq700003: 'Quote into input',
1492
- k3wmcv4004: 'Needs attention',
1493
- k3vp67i005: 'Running',
1494
- k3xk4t006: 'Deduped',
1495
- },
1496
- fileSelectorModal: {
1497
- kvwnnvn001: '.. (up one level)',
1498
- k268o2o002: '(no subdirectories; use “Select This Directory” to take the current location)',
1499
- k1rt80dq003: 'Double-click a directory to take it directly; the chosen path becomes the team working directory (agents\' cwd) and is created automatically if missing.',
1500
- kz99pgv004: 'Failed to read directory',
1501
- },
1502
- inspectorPanel: {
1503
- k1tqitzl008: '成员同步中…',
1504
- kks0y5h009: '任务同步中…',
1505
- k12oip5c010: 'Success {p0}% / avg {p1}s / failed {p2}',
1506
- k498bf001: 'Queue',
1507
- k3ypnl002: 'Done',
1508
- k3mp44x003: 'Subtasks',
1509
- k3w9q9004: 'Deliverables',
1510
- k1el4cgf005: 'No members',
1511
- k1el0vqb006: 'No tasks',
1512
- k1el1plr007: 'No history',
1513
- },
1514
- laneBlocks: {
1515
- k1br5dtr004: 'Load earlier',
1516
- k1otw1r3001: 'Syncing history…',
1517
- k1el0s5k002: 'No events yet',
1518
- k1br0ij9003: 'Loading…',
1519
- },
1520
- liveAgentBar: {
1521
- kh66fan003: 'View execution details of {p0}',
1522
- k1a39d92004: '{p0} more members are busy',
1523
- k3o5tz9005: 'Running',
1524
- k68d2a2006: 'Queue ×{p0}',
1525
- kr4bxgp001: 'All members idle',
1526
- k1sf0ymy002: 'Running ·',
1527
- },
1528
- memoryPanel: {
1529
- k1du3379001: 'Member Identity',
1530
- k1bbee8p002: 'Write Memory',
1531
- k419s4003: 'Title',
1532
- k3wv1f004: 'Content',
1533
- k3l2hmp005: 'Shared',
1534
- k3rve9a006: 'Private',
1535
- k1k7okbe007: 'Memories',
1536
- k3x1jg008: 'Refresh',
1537
- k3wtib009: 'Writes',
1538
- kemjjvq010: 'shared (public scope, searchable by everyone)',
1539
- k43rxk011: 'empty)',
1540
- k3onh9w012: 'you)',
1541
- k3zul4013: 'Manual',
1542
- k186sctu014: 'Read failed (check member identity)',
1543
- k1eh0fbo015: 'Search requires a keyword and member identity',
1544
- k1dpj734016: 'Title/content/member identity are required',
1545
- k3n5bat017: 'Written',
1546
- k1bb5i1l018: 'Write failed',
1547
- },
1548
- mentionHoverCard: {
1549
- k1t89ag4001: 'Click a mention to open execution details',
1550
- k3o5eky002: 'Run:',
1551
- },
1552
- multiChannelView: {
1553
- k3wcox005: 'Task',
1554
- kvfx0mh006: 'Drag to resize the {p0} column',
1555
- kp9ap3k007: '消息 {p0}> {\'|\'} undefined)?.[0]?.text ?? \'\').slice(0, 30)}',
1556
- k1688yr4008: '交付 {p0} {\'|\'} undefined)?.name ?? \'\')}',
1557
- kfvue7n009: 'Memory {p0}',
1558
- khq39oe010: 'Member {p0} {p1}',
1559
- k16wopr9011: 'Error {p0}',
1560
- k1bfi9ms001: 'Mount multiple Channels on the left to observe them side by side here',
1561
- k1bst7s9002: 'Syncing…',
1562
- k4by6003: 'Busy',
1563
- k1el0s5k004: 'No events yet',
1564
- },
1565
- paneSplitter: {
1566
- kejk1i9001: 'Drag to resize panel',
1567
- },
1568
- statsPanel: {
1569
- k1i88c0b001: 'Buffered Events',
1570
- kfplawo002: 'Throughput (10s)',
1571
- kzcd51003: 'Event type mix (buffer window)',
1572
- k1pevwxl004: '(no events)',
1573
- },
1574
- taskBoardView: {
1575
- k8m7hm6020: 'Routing reason: {p0}',
1576
- k1f9c17l019: 'Syncing',
1577
- k43pyn001: 'Board',
1578
- k3x7l0002: 'List',
1579
- k3wcox003: 'Task',
1580
- k168w1ze004: 'Tasks · drag a card to “Failed/Cancelled” to cancel, or back to “Pending” to retry',
1581
- k4b1x005: 'Sub-',
1582
- k3vkhhj006: 'No',
1583
- k13pad50007: 'Drop here to run the action',
1584
- k3nf71d008: 'Pending',
1585
- k3o5tz9009: 'Running',
1586
- k1hpx9p1010: 'Awaiting Summary',
1587
- k3n77g3011: 'Completed',
1588
- k1veotws012: 'Failed/Cancelled',
1589
- k189y4q013: 'Task cancellation requested',
1590
- kv1l1j3014: 'Task re-dispatched',
1591
- k1e7zwuc015: 'Operation failed',
1592
- k1bs0t9b016: 'Cancel Task',
1593
- k1lclwk6017: 'Retry Dispatch',
1594
- k1dx9ysj018: 'Open Details',
1595
- },
1596
- taskInspectorDrawer: {
1597
- kkp77tf015: 'Deliverables ({p0})',
1598
- khnua62016: 'Subtasks ({p0})',
1599
- kxj74io017: 'Raw content ({p0} parts)',
1600
- k6hcbxi001: 'Drag to resize drawer',
1601
- kns2a6x002: 'Retry this task?',
1602
- k1a7jqb9003: 'Cancel this task?',
1603
- k40gkk004: 'Description',
1604
- k1lcgf2b005: 'Retry Task',
1605
- k1bs0t9b006: 'Cancel Task',
1606
- k1knph8c007: 'Routing reason',
1607
- kr3vr2x008: 'No events (occurred before connection)',
1608
- k1kmqn5u009: '(no subtasks)',
1609
- k3o48o4010: 'Assignee:',
1610
- k485ye011: 'Progress',
1611
- k401n2012: 'none)',
1612
- k1xj595a013: 'Cancellation requested',
1613
- ke7bh8u014: 'Re-dispatched for execution',
1614
- },
1615
- townView: {
1616
- k1k6wg8j185: 'Device Instance',
1617
- k44c2n186: 'Offline',
1618
- k1w6xehu187: '{p0} · {p1} · auto-binds near a device, range {p2} ~ {p3} {p4}',
1619
- k1icez46188: '{p0} · {p1} · setpoint range {p2} ~ {p3} {p4} · auto-binds near a device',
1620
- k2bindr0007: 'Bound to "{p0}" — click to re-bind to this device',
1621
- k2bindr0008: 'Click to bind to this device',
1622
- k2bindr0009: 'Not placed',
1623
- k2bindr0010: 'No bindable nodes — use + on a template row in the left rail, or create in DAQ Center',
1624
- k2tplxp0001: 'Click to expand/collapse "{p0}" nodes · {p1} · range {p2} ~ {p3} {p4}',
1625
- k2tplxp0002: 'New "{p0}" node (drag into scene after creation)',
1626
- k2tplxp0003: 'No nodes yet — use + on the template row, or add in DAQ Center',
1627
- k2tplxp0005: 'Placed · click to locate & select; drag to re-place',
1628
- k2tplxp0006: 'Drag onto the scene to place (auto-binds a device within ±95)',
1629
- k479op189: 'Role',
1630
- kb251ac190: 'Current recipe process window',
1631
- kcyn0191: '“{p0}” is already in the scene (one placement per channel)',
1632
- k1hmf2ut192: 'Channel layout failed to load; retrying ({p0})',
1633
- kgz2nej193: 'Re-skinned {p0} → {p1}',
1634
- k5e2460194: 'Placed a resident at the drop point → {p0}',
1635
- k113fir9195: '{p0} {p1} out of range ({p2})',
1636
- k1knv89d196: '{p0} {p1} entered the warn band ({p2})',
1637
- ksjancw197: '{p0} {p1} back to normal',
1638
- kbuyve5198: 'Beyond {p0} {p1} ~ {p2}',
1639
- k3n93ed175: 'Paused',
1640
- k3os7i3176: 'Not placed',
1641
- k1l147w1177: 'Run Mode',
1642
- k1empnnb178: 'DAQ Node',
1643
- k1iwj796179: 'Node Range',
1644
- kh1586b180: 'Enable this node',
1645
- k1bc6rqf181: 'Global range',
1646
- k121kfef182: 'Delete device instance',
1647
- k1f1xmci183: 'Draw Range',
1648
- k3lmtk3184: 'Syncing',
1649
- k1c9jyta001: 'Scene Mode',
1650
- k1fsi3ir002: 'Active Alarms',
1651
- k1demf38003: 'Current User',
1652
- khzlyf5004: 'Default sampling interval (nodes without their own interval follow this value)',
1653
- k18d6wnb005: 'Locate selected device',
1654
- k1io51dn006: 'Auto Orbit',
1655
- k1sgjlq8007: 'Callout Visibility',
1656
- k3wuf0008: 'Fullscreen',
1657
- k1k4j5i7009: 'Camera Presets',
1658
- k1ejxiwp010: 'Click to select this device',
1659
- k1d0rl5z011: 'Drag to move panel',
1660
- kz71l1f012: 'Distance within which the camera shows DAQ data cards for a device',
1661
- k1bsckft013: 'Deselect',
1662
- kpwutri014: 'Delete this DAQ node (server entity removed as well)',
1663
- k1k6vbaf015: 'Device Name',
1664
- k1k73omv016: 'Unbind',
1665
- k15t7izc017: 'Write setpoint (out-of-window values are rejected by the recipe interlock)',
1666
- k13enoy3018: 'Drag a box in the scene to set this character\'s movement range',
1667
- khqvwix019: 'Auto = tool calls execute directly; manual = every write needs approval here',
1668
- keztqrn020: 'Note (returned to the agent with the result)…',
1669
- k15avt7g021: 'Re-fetch this character\'s conversation history',
1670
- k1bkswpz022: 'Acknowledge All',
1671
- klfwiqg023: 'RPG nav map · crosshair = camera · drag to pan · click to focus · wheel syncs zoom',
1672
- k1lap9bs024: 'Reset View',
1673
- kav8a8k025: 'Zoom out (minimap synced)',
1674
- k1u7uce9026: 'Zoom in (minimap synced)',
1675
- k48dwh027: 'Run',
1676
- k45eb0028: 'Edit',
1677
- k1b3bk8t029: 'Save Layout',
1678
- k1k75lzy030: 'Device Assets',
1679
- k2gwyas031: 'DAQ Nodes',
1680
- k3xg3w032: 'Interval',
1681
- km7ayhi033: 'Control Nodes (DCW)',
1682
- k1c9n911034: 'Scene Manager',
1683
- k1b0z4vr035: 'Line Twin Overview',
1684
- kv72860036: '3D View · Standard',
1685
- k1k6xemt037: 'Devices',
1686
- k49lh038: '',
1687
- k1l1a9t2039: 'Running Devices',
1688
- k4dfq040: 'items',
1689
- k1emsai1041: 'DAQ Channels',
1690
- k4l1w042: '',
1691
- kbrxdq1043: 'Line Health',
1692
- k3rwxjc044: 'Empty Scene',
1693
- k1sa1eaj045: 'Drag entities from “Device Assets / DAQ Nodes” on the left to start building the digital twin space',
1694
- k1mehlxs046: 'Channel Manager',
1695
- k489ka047: 'Boundary',
1696
- k3zhy5048: 'Shape',
1697
- k414bc049: 'Ellipse',
1698
- k43u0g050: 'Rectangle',
1699
- k1fbz4s1051: 'Semi-axis X',
1700
- k1ighwgs052: 'Semi-axis Z',
1701
- k40qab053: 'Orientation',
1702
- kimxls2054: 'Pick 3D character models for channel members (live re-skin, persisted)',
1703
- k419rbs055: 'No members in this channel yet',
1704
- k1b3kp8f056: 'Save Boundary',
1705
- k1hs45qg057: 'Remove Channel',
1706
- k3x62t058: 'Close',
1707
- kvjdqfg059: 'Building the digital twin space…',
1708
- k1c9iq23060: 'Scene Controls',
1709
- k1gizopz061: 'Ambient Light',
1710
- k1bcpqto062: 'Structure Opacity',
1711
- k1bztha1063: 'Alarm Threshold',
1712
- ka4i1s9064: 'Callout Distance',
1713
- k1idc6pa065: 'Grid Snap',
1714
- k1i046wf066: 'Emergency Stop',
1715
- k1kfoef9067: 'Trend Analysis',
1716
- trendExpandAll: 'Show all {p0} channels',
1717
- trendCollapse: 'Collapse',
1718
- statesOffline: 'Offline',
1719
- fpsCapLabel: 'FPS Cap',
1720
- fpsCapTip: 'Render-rate cap only; live data consumption is not throttled (frames land in the buffer on arrival, each rendered frame shows the latest values)',
1721
- qualityLabel: 'Quality',
1722
- qualityTip: 'Auto = tier by measured fps; Normal/HD/Ultra = fixed render config (Ultra unlocks full WebGL quality)',
1723
- qualityAuto: 'Auto',
1724
- qualityNormal: 'Normal',
1725
- qualityHD: 'HD',
1726
- qualityUltra: 'Ultra',
1727
- secRender: 'Render',
1728
- secEnv: 'Environment',
1729
- secOps: 'Operate',
1730
- hitlAutoReject: 'to auto-reject (timeout default-deny)',
1731
- k1uht2uv068: 'Drag DAQ nodes from the left; live trends plot here',
1732
- k1deqh0d069: 'Current Setpoint',
1733
- k1i8rtqt070: 'Bound Device',
1734
- kjo6ekr071: 'Select a device instance…',
1735
- k3mv305072: 'Live Value',
1736
- k1faqmjb073: 'In range',
1737
- k1l6g2ga074: 'Sampling',
1738
- k1or92b075: 'ms (empty = follow global)',
1739
- k3x5tpx076: 'Warn Band',
1740
- k1hjj0jf077: 'Hard Range',
1741
- k48tki078: 'Acquire',
1742
- k3xakp079: 'Delete',
1743
- k1bpp30k080: 'Delete Node',
1744
- kzk5dfx081: 'Mode · Read-only',
1745
- k3xhia082: 'Name',
1746
- k41amp083: 'Model',
1747
- kgpuqhb084: 'No DAQ channels · drop a DAQ node near this device to auto-bind',
1748
- kvm0lin085: '+ Add DAQ Channel',
1749
- k48grv086: 'Recipe',
1750
- k10smf24087: 'No control channels · drop a control node near this device to auto-bind',
1751
- kvk1vh5088: '+ Add Control Channel',
1752
- k1hg3167089: 'Move G',
1753
- k1enlg7i090: 'Rotate R',
1754
- k1ibjg3j091: 'Scale S',
1755
- kt0i3y2092: 'Mode · Read-only (switch to “Edit” to transform/delete)',
1756
- k1fix3hb093: 'Activity Range',
1757
- k1p7nru2094: 'Industrial Node Bindings',
1758
- k1io1ylm095: 'Auto Execute',
1759
- k1duyr8q096: 'Manual Approval',
1760
- k40ifw097: 'Control',
1761
- k40rjw098: 'DAQ',
1762
- kurjldk099: 'Select nodes…',
1763
- k45kpj100: 'Auto',
1764
- k3zul4101: 'Manual',
1765
- k452a8102: 'Bind',
1766
- kslcozu103: '✓ Approve',
1767
- k14gu3rd104: '✕ Reject',
1768
- k41lwj105: 'Axis X',
1769
- k45bta106: 'Axis Z',
1770
- k1w45mzc107: 'Clear range (fall back to channel)',
1771
- k14s8urm108: 'Not set: members roam the channel boundary; click “Draw Range” to customize',
1772
- kkhlx5h109: 'Loading conversation history…',
1773
- k3o5tz9110: 'Running',
1774
- k1qkqld7111: 'No conversation · this member hasn\'t spoken yet',
1775
- k17dkhgd112: 'Device Run State',
1776
- k7h1nxo113: 'Device Health',
1777
- k3vp67i114: 'Running',
1778
- k3zcvb115: 'Standby',
1779
- k3xmid116: 'Alarm',
1780
- k1q247fn117: 'Key Device Monitor',
1781
- k1cxf749118: 'Live Alarms',
1782
- kjz544r119: 'No alarms; lines are running smoothly',
1783
- k1cxdtq2120: 'Live Events',
1784
- k2uk6ua121: 'Event bus standing by',
1785
- kjug2jq122: '3D View Navigation',
1786
- k1i4g246123: 'System',
1787
- k4a0jt124: 'Channels',
1788
- k3xdvm125: 'Members',
1789
- k47e16126: 'Devices',
1790
- klyi8yg127: 'Digital Twin Platform',
1791
- k1brss7t128: 'Members ·',
1792
- k3ztf1129: 'Members',
1793
- k1vtyk05130: 'DAQ bindings ·',
1794
- ktzir2t131: 'Control setpoints ·',
1795
- k1gk2jg7132: 'Pending approvals ·',
1796
- k1ghjbfc133: 'Sessions ·',
1797
- k768cnt134: 'History ·',
1798
- k1cwz73k135: 'Live ·',
1799
- k1gaaodq136: 'crosshair = camera · zoom ×',
1800
- k1h5gxpf137: 'Demo data is simulated signals',
1801
- k3vfpz5138: ' channels',
1802
- k1pub99m139: 'Line Manager',
1803
- k3w3j8f140: 'Acquiring',
1804
- k3n94g3141: 'Placed',
1805
- k3lkuz3142: 'Loading',
1806
- k1iipfcs143: 'Edit Mode',
1807
- k493s144: 'Off',
1808
- k4bs5145: 'On',
1809
- k1ekqxlt146: 'Control Node',
1810
- kq2jssk147: 'Recipe Process Window',
1811
- k3own4q148: 'Unbound',
1812
- k479eh149: 'Unbind',
1813
- k1wv0nyo150: 'Disable this node',
1814
- k1l3m0hx151: 'Recipe Window',
1815
- k1w10xa5152: 'Click again to confirm deletion',
1816
- k3slzhc153: 'Drawing',
1817
- k41k5c154: 'OK',
1818
- k3oo50k155: 'Unsaved',
1819
- k1b38d59156: 'Saving…',
1820
- k3n51yk157: 'Saved',
1821
- k1b3ayhc158: 'Save failed',
1822
- k7rvbts159: 'Drag a channel card onto the scene to place it (release to drop)',
1823
- k1v1icf6160: 'Not set · follows the channel boundary',
1824
- kpplr16161: 'Owning channel not found; cannot bind the model',
1825
- kt6xb5p162: 'Mode is read-only · switch to “Edit” to modify the scene',
1826
- k3n4l5f163: 'Working',
1827
- k3n58d1164: 'Stopped',
1828
- k3w9q9165: 'Deliverables',
1829
- k44xa7166: 'System',
1830
- k3zbgf167: 'Error',
1831
- k1ef3cls168: 'DAQ Channels',
1832
- k15tn2fh169: 'Select a device in the scene first',
1833
- k3ng94k170: 'Pending',
1834
- k3mi2n0171: 'Processing',
1835
- k3ncnxl172: 'Acknowledged',
1836
- kb157zk173: 'EMERGENCY STOP triggered — all lines halted',
1837
- k1s9qzr9174: 'Emergency stop released — lines resumed',
1838
- kwrbtn180: 'Write',
1839
- ksavetip181: 'Save all device layout',
1840
- krotip182: 'Read-only in run mode',
1841
- },
1842
- transcriptTimeline: {
1843
- k44c2n024: 'Offline',
1844
- kglov3b025: 'Data last updated: {p0}',
1845
- k3wwxl026: 'just now',
1846
- k2gyl6l027: '{p0}s ago',
1847
- k2hda35028: '{p0} 年 ',
1848
- kbs29zx029: '{p0}{p1}-{p2}',
1849
- k3y2p8020: 'Online',
1850
- kywgd38021: 'Load earlier events',
1851
- k126izdm022: 'Waiting for events…',
1852
- kuyjpmi023: 'Submit a task below; the agent execution renders here live',
1853
- kqu93z8001: 'Jump to latest',
1854
- k40t11002: 'Latest',
1855
- k1kbaden003: 'All history loaded (from the very first event)',
1856
- ktuo1zg004: 'No matching events',
1857
- k1atjpx1005: 'Events /',
1858
- kapxgq4006: 'No events under this filter; try other filters',
1859
- k4a9o007: 'blocks',
1860
- k3lmtk3008: 'Syncing',
1861
- k1br0ij9009: 'Loading…',
1862
- klnne6o010: 'Syncing timeline…',
1863
- k1iuqpxj011: 'Events will re-align automatically once the connection recovers',
1864
- k3x4t1012: 'All',
1865
- k3x5xi013: 'Critical',
1866
- k41ykc014: 'Message',
1867
- k3wcox015: 'Task',
1868
- k3y5ja016: 'Team',
1869
- k49d2l017: 'Error',
1870
- k3wcqg018: 'Today',
1871
- k40l1y019: 'Yesterday',
1872
- },
1873
- titles: {
1874
- dashboard: 'Dashboard · AgentWorkShop',
1875
- daq: 'DAQ Console · AgentWorkShop',
1876
- daqNode: 'DAQ Node Console · AgentWorkShop',
1877
- dcw: 'Line Operations · AgentWorkShop',
1878
- dcwLine: 'Line Detail · AgentWorkShop',
1879
- tokens: 'API Tokens · AgentWorkShop',
1880
- users: 'Users · AgentWorkShop',
1881
- workshop: 'Workshop · AgentWorkShop',
1882
- agents: 'Agent Templates · Workshop',
1883
- teams: 'Agent Team Groups · Workshop',
1884
- ctpl: 'Channel Template Hub · Workshop',
1885
- monitor: 'Runtime Monitor · AgentWorkShop',
1886
- settings: 'Settings · AgentWorkShop',
1887
- },
1888
- chips: {
1889
- chipAll: 'All {n}',
1890
- chipMine: 'Mine {n}',
1891
- chipPublic: 'Public {n}',
1892
- chipBuiltin: 'Built-in {n}',
1893
- chipOthers: 'Others\' private {n}',
1894
- mine: 'Mine',
1895
- public: 'Public',
1896
- builtin: 'Built-in',
1897
- issue: 'Issue Token',
1898
- issueTitle: 'Issue API Token',
1899
- },
1900
- appHeader: {
1901
- kzwjv99001: 'Close {p0}',
1902
- kwsdot0001: 'Live connection healthy',
1903
- kwsdot0002: 'Syncing in real time…',
1904
- kwsdot0003: 'Connecting…',
1905
- kwsdot0004: 'Connection lost',
1906
- hitlBadge: 'Needs human input',
1907
- hitlKindOmp: 'omp dialog',
1908
- hitlKindDcw: 'write approval',
1909
- hitlKindCodex: 'codex approval',
1910
- hitlKindOpencode: 'opencode permission',
1911
- hitlKindDsh: 'dsh permission',
1912
- hitlApprove: 'Approve',
1913
- hitlReject: 'Reject',
1914
- },
1915
- ompTerminalPanel: {
1916
- k14jk3nu001: ' {p0}· 对话框已撤销({p1}){p2}',
1917
- k68kkpc002: '{p0}── 已接入 omp 进程 PID {p1}(会话重放 {p2} 帧)──{p3}',
1918
- k59zj91003: '{p0}✗ 终端连接未就绪,命令未发送{p1}',
1919
- kvzhi95004: '{p0}✔ HITL 已应答:{p1}{p2}',
1920
- ke67kwf005: '{p0}── 切换目标 · {\'$\'}{\'{\'}props.pid ? ',
1921
- },
1922
- plugins: {
1923
- title: 'Plugins',
1924
- subtitle: 'Built-in samples & user extensions · toggles hot-reload instantly',
1925
- refresh: 'Refresh',
1926
- enabled: 'Enabled',
1927
- disabled: 'Disabled',
1928
- scopeProject: 'Built-in sample',
1929
- scopeUser: 'User extension',
1930
- scopeBuiltinHint: 'Built-in sample plugin: shipped with the project checkout (repo .AgentWorkShop/plugins), can be toggled',
1931
- scopeUserHint: 'User extension plugin: lives in ~/.AgentWorkShop/plugins, created and maintained by you',
1932
- loadFail: 'Failed to load plugin list',
1933
- hasClient: 'Client enhancer',
1934
- routes: 'API routes',
1935
- empty: 'No plugins yet — run aw plugin create my-plugin, or aw plugin enable to turn on examples',
1936
- failures: 'Load failures',
1937
- loadFailures: '{n} plugin(s) failed to load, see server startup log',
1938
- enableFail: 'Toggle failed',
1939
- detail: 'Plugin detail',
1940
- desc: 'Platform plugin list: enable/disable (admin, hot-reload) and connection health checks.',
1941
- needLogin: 'Sign in to view and manage plugins',
1942
- builtin: 'Built-in',
1943
- adminRequired: 'This action requires an administrator',
1944
- healthCheck: 'Check connection',
1945
- healthChecking: 'Checking…',
1946
- healthOk: 'OK',
1947
- healthBad: 'Error',
1948
- },
1949
- errors: {
1950
- http400: 'Invalid request, please check and retry',
1951
- http401: 'Session expired, please sign in again',
1952
- http403: 'Insufficient permission: this action requires an administrator',
1953
- http404: 'Target not found or already removed',
1954
- http409: 'Conflict: resource already exists or state does not allow it',
1955
- http5xx: 'Server error, please retry later',
1956
- network: 'Cannot reach the server, check network and service status',
1957
- fallback: 'Action failed, please retry later',
1958
- },
1959
- permissions: {
1960
- title: 'Permissions',
1961
- subtitle: 'User × line three-state grants: none / read-only (DAQ) / operate (DAQ+DCW); users default to none',
1962
- search: 'Search name or email',
1963
- loadFail: 'Failed to load permission data',
1964
- saveFail: 'Failed to save grants',
1965
- saved: 'Saved {n} grant change(s)',
1966
- colUser: 'User',
1967
- colEmail: 'Email',
1968
- colRole: 'Role',
1969
- colStatus: 'Status',
1970
- colChannels: 'Channels',
1971
- colGrants: 'Line grants',
1972
- colOps: 'Actions',
1973
- active: 'Active',
1974
- manage: 'Manage',
1975
- detail: 'Permission detail',
1976
- secProfile: 'Profile',
1977
- secChannels: 'Created channels',
1978
- noChannels: 'No channels created by this user',
1979
- secMatrix: 'Line grant matrix',
1980
- save: 'Save ({n})',
1981
- matrixHint: 'none = line data is withheld server-side (invisible in UI & digital twin); read-only = DAQ read; operate = full DAQ read + DCW write.',
1982
- none: 'None',
1983
- readonly: 'Read-only',
1984
- operate: 'Operate',
1985
- },
1986
- error: {
1987
- backHome: 'Back to Home',
1988
- lost: 'Page lost',
1989
- },
1990
- aml: {
1991
- k1amlx001: 'AML Auto-Modeling',
1992
- k1amlx002: 'Dataset snapshots → training jobs → gated experiments → model registry; job progress streams over WS, platform gates are authoritative.',
1993
- k1amlx003: 'Python runtime',
1994
- k1amlx004: 'Ready',
1995
- k1amlx005: 'Unavailable',
1996
- k1amlx006: 'Deps venv',
1997
- k1amlx007: 'Ready',
1998
- k1amlx008: 'Not ready',
1999
- k1amlx009: 'Queued',
2000
- k1amlx010: 'Running',
2001
- k1amlx011: 'Datasets',
2002
- k1amlx012: 'Models',
2003
- k1amlx013: 'Production models',
2004
- k1amlx014: 'training and prediction are disabled:',
2005
- k1amlx015: 'Failed to load platform status',
2006
- k1amlx016: 'Dataset snapshots',
2007
- k1amlx017: 'Refresh',
2008
- k1amlx018: 'New dataset',
2009
- k1amlx019: 'No datasets yet — build an aligned snapshot from line history to submit training.',
2010
- k1amlx020: 'Time',
2011
- k1amlx021: 'Product',
2012
- k1amlx022: 'Recipe',
2013
- k1amlx023: 'Rows',
2014
- k1amlx024: 'Runs',
2015
- k1amlx025: 'Creator',
2016
- k1amlx026: 'Note',
2017
- k1amlx027: 'Cleaning report (per node)',
2018
- k1amlx028: 'Lag estimates (control → target cross-correlation)',
2019
- k1amlx029: 'Run overview',
2020
- k1amlx030: 'Loading…',
2021
- k1amlx031: 'Failed to load details',
2022
- k1amlx032: 'No lag estimates (needs both control and target nodes)',
2023
- k1amlx033: 'Node',
2024
- k1amlx034: 'Role',
2025
- k1amlx035: 'Cleaned',
2026
- k1amlx036: 'Missing',
2027
- k1amlx037: 'Mean',
2028
- k1amlx038: 'σ',
2029
- k1amlx039: 'min~max',
2030
- k1amlx040: 'Control',
2031
- k1amlx041: 'Target',
2032
- k1amlx042: 'Lag (steps)',
2033
- k1amlx043: 'Peak corr',
2034
- k1amlx044: 'Runs used',
2035
- k1amlx045: 'Runs dropped',
2036
- k1amlx046: 'Windows train/val/test',
2037
- k1amlx047: 'No build report (legacy snapshot)',
2038
- k1amlx048: 'None',
2039
- k1amlx049: 'user',
2040
- k1amlx050: 'New dataset snapshot',
2041
- k1amlx051: 'Line ID',
2042
- k1amlx052: 'Product ID',
2043
- k1amlx053: 'Recipe ID',
2044
- k1amlx054: 'Node roles (at least one target)',
2045
- k1amlx055: 'Add row',
2046
- k1amlx056: 'Node ID',
2047
- k1amlx057: 'control (known future input)',
2048
- k1amlx058: 'feature (history-only feature)',
2049
- k1amlx059: 'target (prediction target)',
2050
- k1amlx060: 'Beat (ms)',
2051
- k1amlx061: 'History (steps)',
2052
- k1amlx062: 'Horizon (steps)',
2053
- k1amlx063: 'val ratio',
2054
- k1amlx064: 'test ratio',
2055
- k1amlx065: 'Seed',
2056
- k1amlx066: 'Purpose',
2057
- k1amlx067: 'mpc_surrogate (MPC surrogate)',
2058
- k1amlx068: 'quality_predict (quality prediction)',
2059
- k1amlx069: 'Why this snapshot / alignment notes (optional)',
2060
- k1amlx070: 'Building…',
2061
- k1amlx071: 'Cancel',
2062
- k1amlx072: 'Build snapshot',
2063
- k1amlx073: 'Dataset built: {p0} ({p1} rows)',
2064
- k1amlx074: 'Training jobs',
2065
- k1amlx075: 'No training jobs — submit one via Agent tools or API once a dataset exists.',
2066
- k1amlx076: 'Job',
2067
- k1amlx077: 'Status',
2068
- k1amlx078: 'Stage',
2069
- k1amlx079: 'Progress',
2070
- k1amlx080: 'Gates passed',
2071
- k1amlx081: 'Gates failed',
2072
- k1amlx082: 'Gates pending',
2073
- k1amlx083: 'Platform gates',
2074
- k1amlx084: 'Check',
2075
- k1amlx085: 'Value',
2076
- k1amlx086: 'Threshold',
2077
- k1amlx087: 'Pass',
2078
- k1amlx088: 'Fail',
2079
- k1amlx089: 'Run log (tail)',
2080
- k1amlx090: 'No logs yet',
2081
- k1amlx091: 'Live log polling (5s) for active jobs',
2082
- k1amlx092: 'Failure reason',
2083
- k1amlx093: 'Cancelling…',
2084
- k1amlx094: 'Confirm cancel',
2085
- k1amlx095: 'Retry',
2086
- k1amlx096: 'Confirm retry',
2087
- k1amlx097: 'Cancellation requested: {p0}',
2088
- k1amlx098: 'Requeued: {p0}',
2089
- k1amlx099: 'Metrics',
2090
- k1amlx100: 'Queued',
2091
- k1amlx101: 'Provisioning',
2092
- k1amlx102: 'Training',
2093
- k1amlx103: 'Evaluating',
2094
- k1amlx104: 'Done',
2095
- k1amlx105: 'Failed',
2096
- k1amlx106: 'Cancelled',
2097
- k1amlx107: 'Timeout',
2098
- k1amlx108: 'Interrupted',
2099
- k1amlx109: 'Experiment leaderboard',
2100
- k1amlx110: 'Pick a dataset to view lineage',
2101
- k1amlx111: '— Pick a dataset —',
2102
- k1amlx112: 'No experiments for this dataset — submit a training job to grow the lineage.',
2103
- k1amlx113: 'Experiment',
2104
- k1amlx114: 'Change note',
2105
- k1amlx115: 'Parent',
2106
- k1amlx116: 'G1 1-step',
2107
- k1amlx117: 'G2 rollout',
2108
- k1amlx118: 'Gates',
2109
- k1amlx119: 'Running',
2110
- k1amlx120: 'Best',
2111
- k1amlx121: 'Test 1-step NRMSE (lower is better)',
2112
- k1amlx122: 'Test rollout NRMSE (lower is better)',
2113
- k1amlx123: 'Model registry',
2114
- k1amlx124: 'Registry is empty — experiments passing gates register a candidate model automatically.',
2115
- k1amlx125: 'Model',
2116
- k1amlx126: 'Metrics (G1 1-step / G2 rollout NRMSE)',
2117
- k1amlx127: 'Actions',
2118
- k1amlx128: 'Promote to shadow',
2119
- k1amlx129: 'Promote to production',
2120
- k1amlx130: 'Retire',
2121
- k1amlx131: 'Confirm',
2122
- k1amlx132: 'Promoted: {p0} → {p1}',
2123
- k1amlx133: 'Prediction console (what-if)',
2124
- k1amlx134: '— Pick a production model —',
2125
- k1amlx135: 'No production model — promote one in the registry first.',
2126
- k1amlx136: 'IO spec',
2127
- k1amlx137: 'All nodes',
2128
- k1amlx138: 'Control nodes',
2129
- k1amlx139: 'Target nodes',
2130
- k1amlx140: 'History',
2131
- k1amlx141: 'Horizon',
2132
- k1amlx142: 'Beat',
2133
- k1amlx143: 'history input ([H][nAll] JSON; column order = allNodes)',
2134
- k1amlx144: '[[21.4,0.82,…], …] — H×nAll numeric matrix',
2135
- k1amlx145: 'Pull latest',
2136
- k1amlx146: 'In-line fetch is not wired: ask an Agent to query the latest H beats for this recipe and paste them as a JSON matrix.',
2137
- k1amlx147: 'Rollout steps (≤ horizon, empty = full)',
2138
- k1amlx148: 'Predict',
2139
- k1amlx149: 'Inferring…',
2140
- k1amlx150: 'Forecast result',
2141
- k1amlx151: 'Step',
2142
- k1amlx152: 't+ (s)',
2143
- k1amlx153: 'Failed to parse history JSON:',
2144
- k1amlx154: 'Forecast ready: {p0} steps × {p1} targets',
2145
- k1amlx155: 'Model assumptions',
2146
- k1amlx156: 'controls trajectory (optional, [≤H][nControl] JSON)',
2147
- k1amlx157: 'Action failed',
2148
- k1amlx158: 'Modeling',
2149
- k1amlx159: 'AML auto-modeling studio',
2150
- k1amlx160: 'AML Auto-Modeling · AgentWorkShop',
2151
- k1amlx161: 'Line, product and recipe IDs are all required',
2152
- },
729
+ },
730
+ logs: {
731
+ title: '运维日志',
732
+ sub: '全操作统一记录:下发了什么控制、用户与 Agent 做了什么操作;按产线/产品/Recipe 隔离查询',
733
+ live: '实时',
734
+ liveHint: 'WS 实时接收操作事件(仅摘要渲染;完整详情查询于下表)',
735
+ all: 'All',
736
+ fLine: 'Line',
737
+ fProduct: 'Product',
738
+ fSource: '来源',
739
+ fKind: '分类',
740
+ fKeyword: '关键词',
741
+ fKeywordPh: '搜索摘要/操作/操作者…',
742
+ query: 'Query',
743
+ reset: 'Reset',
744
+ thTime: 'Time',
745
+ thActor: '操作者',
746
+ thSummary: '事件摘要',
747
+ thScope: '归属(产线/产品/Recipe)',
748
+ thDetail: 'Details',
749
+ expand: 'Details',
750
+ fold: 'Collapse',
751
+ loading: 'Querying…',
752
+ empty: '无匹配日志',
753
+ mSummary: '记录内容',
754
+ mSummaryPh: '如:更换 3 号烘箱加热丝,当前批次延长保温 10 分钟',
755
+ mSubmit: '入册',
756
+ mOk: '已入册',
757
+ manual: 'Manual entry',
758
+ noDetail: 'None',
759
+ mDetail: 'Detail (optional)',
760
+ mDetailPh: 'Context, handling notes, related ticket… (stored in the log detail)',
761
+ src: {
762
+ user: '用户',
763
+ system: 'System',
764
+ },
765
+ kind: {
766
+ write: 'Apply',
767
+ manual: '人工',
768
+ alarm: 'Alarm',
769
+ line: 'Line',
770
+ recipe: 'Recipe',
771
+ rollback: '回退',
772
+ daq: 'DAQ',
773
+ system: 'System',
774
+ },
775
+ },
776
+ dcw: {
777
+ k1qidbpy061: 'Default {p0} (by creation order)',
778
+ k1gp649b062: '{p0} ({p1} nodes / {p2} products / {p3} recipes will be unmounted)',
779
+ k7xq2mfd063: 'Delete line "{p0}"?',
780
+ k5tq8wc071: 'Edit line',
781
+ k9m2vxa072: 'Also delete its nodes, products & recipes (irreversible)',
782
+ k4r7nbd073: 'Line "{p0}" and its {p1} nodes · {p2} products · {p3} recipes will be permanently deleted',
783
+ k3t616a058: 'Custom',
784
+ k149r6y7059: '○ Standby',
785
+ k1elczt9060: 'No recipes yet',
786
+ k3ootr6049: 'Unassigned',
787
+ k3wj9n050: 'Line',
788
+ k11nndsp051: 'Control Template ·',
789
+ k3zz0f052: 'Tagged',
790
+ k19dlbli053: 'Color follows the theme',
791
+ k3x23c054: 'Built-in',
792
+ k1eox1el055: '● Running',
793
+ k18moyq1056: 'Acquisition starts once a recipe is selected',
794
+ kutxzsz057: 'Select recipe…',
795
+ k1i5a9vw001: 'There are nodes/products not assigned to any line; adopt them from the corresponding line detail page',
796
+ k1yfm3gv002: 'Delete line (nodes/products/recipes are unmounted)',
797
+ k1dhaby4003: 'Pick a recipe to start',
798
+ kru37i3004: 'e.g. Line 1 / Casting Line A',
799
+ k1f2nwsp005: 'Line purpose notes',
800
+ k1tooi3o006: 'e.g. Motor Current Setpoint',
801
+ k698qz0007: 'e.g. Motor Current',
802
+ k1qdnfzc008: 'e.g. Motor current setpoint: rising current means growing load… adjust in small steps and watch temperature rise',
803
+ k1b2tk5c009: 'Line Operations',
804
+ k5q0aqi010: 'Lines are the top-level isolation unit for nodes/products/recipes/data: every control node mounts to a line, and after a run starts each acquired sample carries the line identity;\n control templates only define parameter classes and process ranges — nodes are what actually write to PLCs.',
805
+ k45uio011: 'Node',
806
+ k3waz1012: 'Product',
807
+ k48grv013: 'Recipe',
808
+ k149b4vg014: '▶ Start Run',
809
+ k148rclf015: '■ Stop',
810
+ k1fwqw5g016: 'Line Management →',
811
+ k1efe391017: 'New Line',
812
+ k1sk85vs018: 'No lines yet: click “New Line” to create your first line, then adopt/add control nodes and create products and recipes in the line detail page.',
813
+ filterSearchPh: 'Search line names…',
814
+ filterEmpty: 'No lines match — adjust the filter or search',
815
+ k1b2ioko019: 'Line Name',
816
+ k24dxcd020: 'Description (optional)',
817
+ k1x7nubr021: 'Halo color (glow color of this line\'s nodes in the digital twin scene)',
818
+ k3xdnn022: 'Cancel',
819
+ k3wzi2023: 'Create',
820
+ k11oadmx024: 'Control Template Manager',
821
+ k2hlav5025: 'A template = a parameter class (motor current/speed/line speed…) defining unit and safe process range; control nodes inherit the domain from their template and can override it.',
822
+ k3xakp026: 'Delete',
823
+ k169eb4s027: 'New Custom Template',
824
+ k3xhia028: 'Name',
825
+ k1bqk219029: 'Parameter Semantics',
826
+ k1ayxrqb030: 'Tag Code',
827
+ k3x4ef031: 'Unit',
828
+ k1l9jv5m032: 'Range Min',
829
+ k1l9jv4p033: 'Range Max',
830
+ k3mxmcx034: 'Decimals',
831
+ k3xx56035: 'Icon',
832
+ k1b6qorg036: 'Process semantics (physical meaning / line impact / adjustment rules — injected into the context of agents bound to this template)',
833
+ k3x62t037: 'Close',
834
+ k1bg9nga038: 'Create Template',
835
+ k188cswn039: 'Pick a recipe for this line first (the recipe must bind control-node parameters)',
836
+ k422b8040: 'Temperature',
837
+ k3x6ff041: 'Pressure',
838
+ k3z9xc042: 'Tension',
839
+ kjb3vhs043: 'Encoder/Speed',
840
+ k47atw044: 'Vision',
841
+ k48c07045: 'General',
842
+ k6ugbw2046: 'Template name is required',
843
+ k13awowo047: 'Process range (min/max) is required',
844
+ k1bphrb3048: 'Delete failed',
845
+ },
846
+ dcwDetail: {
847
+ staleDeleted: 'deleted',
848
+ staleDisabled: 'disabled',
849
+ staleUnbound: 'unbound',
850
+ staleDropped: 'Removed {p0} stale param(s) (node deleted); re-add with a live node if needed',
851
+ histBtn: 'History',
852
+ histTitle: 'Recipe Version History',
853
+ histLoading: 'Loading…',
854
+ histEmpty: 'No version history yet (param edits are recorded automatically)',
855
+ histCurrent: 'Current',
856
+ histInit: 'Initial version',
857
+ histAdded: 'added',
858
+ histNoChange: 'No param changes',
859
+ revertTo: 'Revert to',
860
+ revertOk: 'Reverted; new version v{p0} created',
861
+ revertReasonUi: 'UI revert to history version',
862
+ srcUser: 'User',
863
+ srcSystem: 'System',
864
+ k9r7d4e016: 'Poll read (ms)',
865
+ k9r7d4e017: 'Default 5000ms; 0 = manual read only',
866
+ k9r7d4e018: 'PLC reading',
867
+ k9r7d4e019: 'No reading yet (poll read off or driver lacks read support)',
868
+ k9r7d4e020: 'Read current PLC value',
869
+ k9r7d4e021: 'Read',
870
+ k9r7d4e022: 'Manual',
871
+ k9r7d4e023: 'Default 5s',
872
+ k1lzfi4g180: '({p0} params)',
873
+ k6vgks7181: 'Batch {p0}',
874
+ k1alcbyu182: 'Node {p0} write OK: {p1}',
875
+ kl1e9x9183: 'Node {p0} write failed: {p1}',
876
+ k8x1un1184: 'Missing required driver parameter: {p0}',
877
+ ky4e1tr185: 'Template “{p0}” created and pre-selected in the Add Control Node wizard',
878
+ k17jteb9186: 'Line started: {p0} · {p1} (batch {p2})',
879
+ kzl49pd187: 'Line stopped ({p0}); window data is kept for query',
880
+ ks7szkt188: 'Recipe dispatch partially failed: {p0}',
881
+ k3zkt2166: 'Start Run',
882
+ k1g3lh2v167: 'Dispatch finished: ',
883
+ k69vag8168: '· tagged',
884
+ knxgni9169: 'Resume All Control',
885
+ k1b2hxmx170: 'Line Stopped',
886
+ k1bg9nga171: 'Create Template',
887
+ k1fstglk172: 'Test Connection',
888
+ k1bge46t173: 'Create Node',
889
+ k3w6td174: 'Apply',
890
+ kxwei5175: 'View Batch Data',
891
+ k1efq0r9176: 'New Recipe',
892
+ k1b3kwg0177: 'Save Recipe',
893
+ k416ek178: 'Query',
894
+ k1bg4kn6179: 'Create Product',
895
+ k1l0iow1137: 'Operations',
896
+ k3wtib138: 'Writes',
897
+ k3yit7139: 'Failed',
898
+ k3km252140: 'product)',
899
+ k3x23c141: 'Built-in',
900
+ k3t616a142: 'Custom',
901
+ k1av3wgs143: 'Products /',
902
+ k1l3hrvp144: 'Recipe batches',
903
+ k11lq94k145: 'Batch Data ·',
904
+ k134rw3b146: 'Recipe min (optional, ≥',
905
+ khrv911147: 'Recipe max (optional, ≤',
906
+ kw7ym9b148: 'Write history (last',
907
+ k1bqci06149: 'params OK',
908
+ k40bfz150: 'entries)',
909
+ k1b2snna151: 'Line Detail',
910
+ kzcbfki152: 'Line-scoped nodes/products/recipes/batches: a recipe is required to start a run, and every acquired sample within the window carries the line identity — true line-level data isolation; PLC low-level (scaling/write/readback) is encapsulated by the system.',
911
+ kplrsg153: 'Pause All Control',
912
+ k1snap154: 'Pause all control: stops writes for every enabled node. Node-level enable/stop is independent — manually stopped nodes stay stopped; resume restores only enabled nodes',
913
+ k1pxrhx0154: 'Line running',
914
+ k1hicmch155: '(no parameters, cannot start)',
915
+ k1bg4759156: 'Creating…',
916
+ kr45rk9157: ' · Custom',
917
+ k1fsh720158: 'Testing…',
918
+ k3o3ib3159: 'Controlled',
919
+ k3zul4160: 'Manual',
920
+ k1br0ij9161: 'Loading…',
921
+ k3vpfg9162: 'In progress',
922
+ k1iiwk0i163: 'Edit Recipe',
923
+ k1b38d59164: 'Saving…',
924
+ k1eyx09r165: 'Querying…',
925
+ kd3ygmn001: 'Total Writes',
926
+ kd3znl0002: 'Total Failed Writes',
927
+ kc4ixly003: 'Create a custom control-node template: physical meaning / unit / safe process range',
928
+ k1tooi3o004: 'e.g. Motor Current Setpoint',
929
+ k698qz0005: 'e.g. Motor Current',
930
+ kxz9174006: 'Safe Min',
931
+ kxz9167007: 'Safe Max',
932
+ k1qdnfzc008: 'e.g. Motor current setpoint: rising current means growing load… adjust in small steps and watch temperature rise',
933
+ kgpxzy3009: 'Defaults to auto-incremented name per template',
934
+ kb1srz0010: 'e.g. 5000 (hold-write heartbeat)',
935
+ k12bnyt9011: 'e.g. Oven 2 temperature: tracks zone delta with Oven 1, step ≤1℃',
936
+ k1bpfjgx012: 'Delete Product',
937
+ k1l11api013: 'Alarms when DAQ goes out of bounds within the active batch',
938
+ k12c11vm014: 'e.g. 0.8mm Optical Film',
939
+ k1hxx8hy015: 'Product/process notes (optional)',
940
+ k5vew9z016: 'within node global range',
941
+ kzoh5pr017: 'hard write constraint while running',
942
+ k19337yp018: 'The line does not exist or has been deleted.',
943
+ kllwu1c019: '← Back to Line Overview',
944
+ k1972dx9020: 'Add Control Template',
945
+ k1976uns021: 'Add Control Node',
946
+ kaebkky022: 'Unassigned Assets · Adopt into This Line',
947
+ kyjp9fg023: '+ Adopt',
948
+ k19pof14024: 'Pick a product and recipe to start; every acquired sample will be tagged with product/recipe/batch while running',
949
+ k3waz1025: 'Product',
950
+ kuisodh026: 'Select product…',
951
+ k48grv027: 'Recipe',
952
+ kutxzsz028: 'Select recipe…',
953
+ kfb8vml029: '▶ Start Acquisition',
954
+ k1xyhd2y030: '■ Stop Acquisition',
955
+ k1x4vam0031: 'Add Control Node Template',
956
+ ke1iyud032: 'A template = a parameter class (physical meaning / unit / safe range): control nodes inherit the domain from their template; templates never touch PLCs — nodes do the writing.',
957
+ k169eb4s033: 'New Custom Template',
958
+ k1f55q76034: 'Template Name',
959
+ k1bqk219035: 'Parameter Semantics',
960
+ k1ayxrqb036: 'Tag Code',
961
+ k3x4ef037: 'Unit',
962
+ k1l9jv5m038: 'Range Min',
963
+ k1l9jv4p039: 'Range Max',
964
+ k3mxmcx040: 'Decimals',
965
+ k3xx56041: 'Icon',
966
+ knjmyfr042: 'Process semantics (physical meaning / line impact / adjustment rules — injected into the context of agents bound to nodes of this template)',
967
+ k3x62t043: 'Close',
968
+ kyj8fen044: 'Real PLC Write',
969
+ k1ejzwqp045: 'Control template (meaning / unit / safe range)',
970
+ k1ce2k1y046: 'Node name (optional)',
971
+ k1vyb8im047: 'Hold-write interval ms (empty = manual only)',
972
+ kiune1f048: 'Write calibration encode (physical value → PLC setpoint)',
973
+ kkzy0k049: 'None (write engineering value directly)',
974
+ k1kt87rx050: 'Protocol',
975
+ k1hgizn7051: 'Node process semantics (optional, overrides template — injected into the context of agents bound to this node)',
976
+ k3xdnn052: 'Cancel',
977
+ k1e2dtkt053: 'Control Node',
978
+ k403cy054: 'Control',
979
+ k42w8s055: 'State',
980
+ k1deqh0d056: 'Current Setpoint',
981
+ k1k79ec9057: 'Setpoint',
982
+ k1dexou6058: 'Process Range',
983
+ k1b1nnaa059: 'Hold Interval',
984
+ k1i8rtqt060: 'Bound Device',
985
+ k40aa6061: 'Actions',
986
+ k3n93ed062: 'Paused',
987
+ k3xakp063: 'Delete',
988
+ k1wtecyw064: 'No control nodes yet — click “Add Control Node” (top right) to create one from a process template.',
989
+ k1j8w3hd065: 'Products & Recipes',
990
+ k1akm6dc066: '+ New Recipe',
991
+ k1aka0ki067: '+ New Product',
992
+ k6bl2q8068: 'A product can have multiple recipes; a recipe = a set of process parameters (control template + target engineering value). The recipe chosen at line start is written on start,\n and every acquired sample is tagged with product/recipe/batch.',
993
+ k3x4t1069: 'All',
994
+ knov3zg070: 'No products yet — click “New Product” to create one (recipes require a product; data is isolated per product).',
995
+ k1497qvr071: '▶ Apply',
996
+ k45eb0072: 'Edit',
997
+ keko1xy073: 'No recipes yet — click “New Recipe” to define a product\'s process parameter set.',
998
+ k1rjer8d074: 'Production Batches (data isolation windows)',
999
+ k400lb075: 'Batch',
1000
+ k4497j076: 'Window',
1001
+ k1bqhtmu077: 'Param Results',
1002
+ k1dzwrdp078: 'Batch Data',
1003
+ k1blr7y7079: 'Close Batch',
1004
+ k1me41w8080: 'DAQ Channel Summary (within the batch window, product-isolated)',
1005
+ k48hde081: 'Channel',
1006
+ k45uio082: 'Node',
1007
+ k40t11083: 'Latest',
1008
+ k3xuaw084: 'Avg',
1009
+ k4118o085: 'Samples',
1010
+ kd457ry086: 'No DAQ samples in the window',
1011
+ k12b7cxs087: 'Write History (within the batch window)',
1012
+ k3xbjr088: 'Parameter',
1013
+ k3ncbsh089: 'Engineering',
1014
+ k3lh3mz090: 'Raw',
1015
+ k454pg091: 'Result',
1016
+ k40ieu092: 'At',
1017
+ knzcp8i093: 'No write records in the window',
1018
+ k1dw4fzf094: 'Product',
1019
+ k1l3f8so095: 'Recipe Name',
1020
+ k40gkk096: 'Description',
1021
+ ka1kfgh097: 'Process parameters (bound to this line\'s control nodes: nodes are the real PLC writers, templates only classify)',
1022
+ k3renp2098: 'Target',
1023
+ k44idg099: 'Remove',
1024
+ k1broh7h100: '+ Add Parameter',
1025
+ k1h5gues101: 'DAQ monitor windows (while the batch is active, DAQ live values outside the window turn the row into an alarm)',
1026
+ k1empnnb102: 'DAQ Node',
1027
+ kqm08ap103: 'Monitor Min (optional)',
1028
+ kpypf8g104: 'Monitor Max (optional)',
1029
+ kv1de1p105: '+ Add Monitor Window',
1030
+ k1us3jse106: 'Line Data Query (product · recipe · parameter · time · bucket)',
1031
+ k1bkl1jx107: 'All Products',
1032
+ k1bkx7cr108: 'All Recipes',
1033
+ k1demcae109: 'Parameter',
1034
+ k1bkx7ya110: 'All Channels',
1035
+ k1bkul3k111: 'All Nodes',
1036
+ kx2ojn0112: 'Last (min)',
1037
+ kjvnvn4113: 'Bucket ms (0 = raw)',
1038
+ k42kcu114: 'Points',
1039
+ k49ujb115: 'First',
1040
+ k40pvw116: 'Last',
1041
+ k3xho3117: 'Span',
1042
+ k1efduyf118: 'New Product',
1043
+ k1avjrl6119: 'Product Name',
1044
+ k1bhhheq120: 'Go to Sign-in',
1045
+ k1ledgt001: 'Parameter ledger',
1046
+ k1ledgs001: 'Pick a node…',
1047
+ k1ledgv001: 'Current setpoint',
1048
+ k1ledgv002: 'Recipe target',
1049
+ k1ledgv003: 'Last good',
1050
+ k1ledga001: 'Refresh',
1051
+ k1ledga002: 'Step rollback',
1052
+ k1ledgh001: 'Setpoint history (journal)',
1053
+ k1ledgr001: 'Optimization records',
1054
+ k3own4q121: 'Unbound',
1055
+ k3zgkk122: 'Standby',
1056
+ k3l3h80123: 'Writing',
1057
+ k40reu124: 'Error',
1058
+ k44c2n125: 'Offline',
1059
+ k422b8126: 'Temperature',
1060
+ k3x6ff127: 'Pressure',
1061
+ k3z9xc128: 'Tension',
1062
+ kjb3vhs129: 'Encoder/Speed',
1063
+ k47atw130: 'Vision',
1064
+ k48c07131: 'General',
1065
+ k6ugbw2132: 'Template name is required',
1066
+ kx3pg59133: 'Unit is required (e.g. ℃ / A)',
1067
+ k13awowo134: 'Process range (min/max) is required',
1068
+ k1b6qe0r135: 'A recipe is required before starting: pick a product and a recipe (the recipe must contain process parameters)',
1069
+ kszv5sq136: 'No matching data in the window (check product/recipe/time range; only samples from running lines carry the line identity)',
1070
+ },
1071
+ teams: {
1072
+ k6ljhyv029: 'Add Member · {p0}',
1073
+ k1c0o6oe030: 'Deploy · {p0}',
1074
+ kh90glh031: 'Deployed {p0} instances to the Channel',
1075
+ k3svl8y028: 'Groups',
1076
+ kxheuf1001: 'Public groups: deployable by everyone; only the owner can modify',
1077
+ k1efmuyx002: 'New Group',
1078
+ k3xhia003: 'Name',
1079
+ k40gkk004: 'Description',
1080
+ k3lrqn0005: 'Visibility',
1081
+ k41ds5006: 'Template',
1082
+ k479op007: 'Role',
1083
+ k12gl4wn008: 'Groups are user-isolated; public groups are deployable by everyone (only the owner can modify); deploy a whole group to a Channel with one click (each member is cloned as an independent instance).',
1084
+ krpx6qa009: 'Back to Workspace',
1085
+ k1bpgi8h010: 'Admin view: groups and creators of all users are visible',
1086
+ k1bpojhf011: 'Delete Group',
1087
+ k48ja7012: 'Deploy',
1088
+ krt2oib013: '+ Add Member Template',
1089
+ k6cbbgf014: 'Create the first group',
1090
+ k17jfge3015: 'Private (visible only to you)',
1091
+ k1h2lq0o016: 'Public (deployable by everyone, only you can modify)',
1092
+ keowzlv017: 'lead (at most one)',
1093
+ k3x23c018: 'Built-in',
1094
+ k3wv1t019: 'Public',
1095
+ k447jj020: 'Private',
1096
+ k1bvcdo2021: 'Name is required',
1097
+ k3n5hak022: 'Created',
1098
+ k1globhp023: 'Published: deployable by everyone, only you can modify',
1099
+ k1xxabaf024: 'Switched to private',
1100
+ k1kw4rtj025: 'Select Template',
1101
+ k3n5hzw026: 'Added',
1102
+ k1oxjrxx027: 'Group deleted',
1103
+ k1plugon040: 'Plugin switches · {p0}',
1104
+ k1plugon041: 'Plugins to enable for this team; propagated to the target Channel on deploy',
1105
+ k1plugon042: 'Checked plugins take effect for members after the team deploys to a Channel; tools of unchecked plugins stay hidden from that team',
1106
+ k1plugon043: 'Team plugin switches saved',
1107
+ k1plugon044: 'Not explicitly configured — all enabled by default; toggling any switch applies per-row',
1108
+ k1plugon045: 'Explicitly configured (per the switches below)',
1109
+ k1plugon046: 'No registered plugins',
1110
+ k1plugon047: 'Plugin switches…',
1111
+ },
1112
+ tokens: {
1113
+ k1upppaw026: 'Each token can be revoked independently; plaintext is archived server-side and can be viewed/copied anytime',
1114
+ k3p0p44027: 'Tags:',
1115
+ kj3mklm028: '(unnamed)',
1116
+ k1hlqknl001: 'Tags, e.g. CI / test scripts / backup',
1117
+ k41416002: 'Tags',
1118
+ k1k6z0r8003: 'Sign in first',
1119
+ k1gjnree004: 'Tokens are private to a signed-in user; sign in to manage them.',
1120
+ k1bhhheq005: 'Go to Sign-in',
1121
+ khcxmsc006: 'Current session token is marked',
1122
+ k1defr98007: 'Current session',
1123
+ kyelqk1008: 'Hidden (legacy)',
1124
+ k3vrpcs009: 'Rename',
1125
+ k3xmrz010: 'Revoke',
1126
+ k12149oy011: 'The token has been created and archived; you can view/copy it from the list anytime. Still, only reveal the plaintext in trusted environments.',
1127
+ k1s5f5zd012: 'Saved, close',
1128
+ k19jvk54013: 'Failed to load token list',
1129
+ k169z26g014: 'Tags cannot be empty',
1130
+ k3n9aij015: 'Updated',
1131
+ k3n64kh016: 'Revoked',
1132
+ kjtcn2h017: 'Copy failed; please select and copy manually',
1133
+ kkpgzo8018: 'This token was created by a legacy version (hash only); plaintext is unavailable. Consider revoking and re-issuing',
1134
+ k1gj9ls019: 'Failed to reveal plaintext',
1135
+ kr5ovor020: 'This token was created by a legacy version (hash only); plaintext cannot be copied. Consider revoking and re-issuing',
1136
+ kubtby5021: 'Failed to fetch plaintext',
1137
+ kgkfcr0022: 'Copy failed; reveal the plaintext first and copy manually',
1138
+ k1bg95gk023: 'Created',
1139
+ k1euotul024: 'Last Used',
1140
+ k40aa6025: 'Actions',
1141
+ },
1142
+ town: {
1143
+ k3n4mae005: 'Workshop',
1144
+ k1wm8wtr001: 'No Channels mounted yet',
1145
+ k47e4s002: 'Please go to ',
1146
+ k17rerba003: 'create/mount a channel, then come back to the AgentWorkShop twin space.',
1147
+ k1uc5mup004: 'Connecting to the AgentWorkShop twin space (subscribing to the live event stream)…',
1148
+ },
1149
+ wsHome: {
1150
+ k1mbatbh030: 'Registered: {p0}; sign-in token saved',
1151
+ kwixbdl031: 'Signed in: {p0}',
1152
+ newWs: 'New Workspace',
1153
+ k3wcox029: 'Task',
1154
+ k3n4m5c025: 'Workspace',
1155
+ ke16e53026: '\'s resources (user-isolated; persisted server-side)',
1156
+ k41ds5027: 'Template',
1157
+ k1ggoa45028: 'Members / Busy',
1158
+ k48h2c001: 'Email or username',
1159
+ k3yvgs002: 'Password',
1160
+ kwgbai9003: 'Username (unique)',
1161
+ kizjkbo004: 'Email (unique)',
1162
+ kh3cqfn005: 'Password (≥6 chars with letters and digits)',
1163
+ k15qunld006: 'Paste user token',
1164
+ ksmpk8l007: 'Workspace name, e.g. Payment Gateway Refactor',
1165
+ kr0vzqu008: 'Open Workshop',
1166
+ k43kol009: 'Sign In',
1167
+ k17x74cj010: 'Each sign-in issues a session token that can be revoked individually on the Token page.',
1168
+ k1so6a0v011: 'Register & Sign In',
1169
+ k1r0a4u3012: 'You are signed in automatically after registration; you can issue more tokens yourself.',
1170
+ k3pa5h4013: 'Templates',
1171
+ k3svl8y014: 'Groups',
1172
+ k484e7015: 'Sign Out',
1173
+ k1bst7s9016: 'Syncing…',
1174
+ k1ylgrbc017: 'No Channel mounted (mount from the left rail after entering)',
1175
+ kr1uwwi018: 'Open Console',
1176
+ k1vnhyks019: 'Username is required',
1177
+ k8ieqzj020: 'Email is required',
1178
+ ksx73ra021: 'Password must be at least 6 characters (letters and digits)',
1179
+ k3ngm6p022: 'Signed out',
1180
+ k1br33vc023: 'Load failed',
1181
+ k3n5sd7024: 'Deleted',
1182
+ },
1183
+ wsView: {
1184
+ kqwckjr001: 'Hotkeys 1-5 switch views',
1185
+ k1tsy2e4002: 'Collapse/expand session bar',
1186
+ k1tx0ppf003: 'Collapse/expand inspector',
1187
+ k1cvg8sb004: 'Command palette (⌘K)',
1188
+ k1fkfvra005: 'Drag to resize session bar',
1189
+ kwqb0st006: 'Drag to resize inspector',
1190
+ klzbtyp007: 'Mount or select one from the left',
1191
+ k3zaj4008: 'Start',
1192
+ k1us0cxy009: 'The session list supports creating Channels, instantiating from templates, and hot-editing scenario and working directory',
1193
+ k3otu32010: 'Timeline',
1194
+ k3ko7a8011: 'Tasks',
1195
+ k3xbmo012: 'Screens',
1196
+ k1cz0pbw013: 'Twin Space',
1197
+ },
1198
+ meta: {
1199
+ agents: 'Agent Templates',
1200
+ teams: 'Agent Team Groups',
1201
+ ctpl: 'Channel Template Hub',
1202
+ },
1203
+ a2aRpcDebugger: {
1204
+ k6hcbxi001: 'Drag to resize drawer',
1205
+ k34cz76002: 'Target agent instance',
1206
+ k1bqe2pj003: 'Parameter Template',
1207
+ k405w8004: 'Run',
1208
+ kq00d3v005: 'Debug: please echo this message',
1209
+ k1kgwib8006: 'Debug message',
1210
+ k1e1hi4u007: '▶ Stream ended',
1211
+ k1vryfv008: 'Select target agent',
1212
+ },
1213
+ agentInspectorDrawer: {
1214
+ k3ypnl022: 'Done',
1215
+ k16t80ax023: 'Focus main timeline',
1216
+ k6hcbxi001: 'Drag to resize drawer',
1217
+ k1ofh789002: 'Remove this member? Its queued tasks will be re-dispatched to remaining members',
1218
+ kwsotdg003: 'Inject a message into this agent…',
1219
+ k1frr9es004: 'No events for this agent yet (generated after connection)',
1220
+ k1axbijb005: 'Task Queue',
1221
+ kas9m5q006: 'Members:',
1222
+ k1hrtylo007: 'Remove Member',
1223
+ k1jxt8vh008: 'Request ack',
1224
+ k3xkc7009: 'Send',
1225
+ k498bf010: 'Queue',
1226
+ kk653nv011: 'Running: “',
1227
+ k43rxk012: 'empty)',
1228
+ k1bs9x43013: 'Unfocus',
1229
+ kgjqkq9014: 'Re-enable (accept new tasks)',
1230
+ kpkjhbz015: 'Disable (pause accepting new tasks)',
1231
+ k3n5z7y016: 'Enabled',
1232
+ k1dst50d017: 'Disabled (its queued tasks are reclaimed by the scheduler)',
1233
+ kane5dq018: 'Member removed',
1234
+ k1p055kl019: 'Focus cancelled',
1235
+ ky2fhkf020: 'Main timeline focused on this agent',
1236
+ k1y2jrsr021: 'Message injected',
1237
+ },
1238
+ agentLanesView: {
1239
+ k1wn2vmt036: 'omp process PID {p0} · harness session state',
1240
+ k1l029kf037: 'Interrupt member {p0}\'s runtime? Running tasks will be aborted; the member is kept',
1241
+ kt3n27m038: 'Remove member {p0}? Its queued tasks will be reclaimed automatically',
1242
+ k7xt1y6039: 'Drag to resize the {p0} lane',
1243
+ k1qcmxyu040: '{p0} ({p1} members{p2})',
1244
+ k19j5rho041: 'Edit member {p0}',
1245
+ kg2slvf042: '(已有 lead,不能再添加 lead)',
1246
+ kpr6a3f043: '(channel 已有 lead,编组内 lead 成员冲突;请先移除现有 lead 或选用无 lead 编组)',
1247
+ k21xjz2044: 'Member {p0} updated (runtime reloads with the new prompt)',
1248
+ k3jmrw1045: 'Update failed: {p0}',
1249
+ k1g5ykr3046: 'Member {p0} added (waiting for the agent.member event to converge)',
1250
+ k1j97j74047: 'Add member failed: {p0}',
1251
+ kk3uwzo048: 'Cloned template member {p0} as {p1} (waiting for event convergence)',
1252
+ k1rrfz5h049: '模板克隆失败{\'$\'}{\'{\'}text.includes(\'LEAD_EXISTS\') ? t(\'agentLanesView.kg2slvf042\') : ',
1253
+ k1gslqf9050: 'Group {p0} deployed ({p1} members, waiting for event convergence)',
1254
+ k6nzyd3051: '编组部署失败{\'$\'}{\'{\'}text.includes(\'LEAD_EXISTS\') ? t(\'agentLanesView.kpr6a3f043\') : ',
1255
+ k1n3o03a052: 'Member {p0} removed',
1256
+ k13dsp10053: 'Remove member failed: {p0}',
1257
+ kcpbv47054: 'Interrupted the runtime of member {p0}',
1258
+ k139ec5j055: 'Interrupt failed: {p0}',
1259
+ k107s4am001: 'Scenario system prompt injected',
1260
+ k1884q17002: 'Open this member\'s native omp terminal (live TUI + HITL controls: inject conversation / abort / answer asks)',
1261
+ k1pgd3tf003: 'Edit member info / scenario prompt',
1262
+ k17kcn55004: 'Add Team Member',
1263
+ k3nufdm005: 'Member Name',
1264
+ k479op006: 'Role',
1265
+ kaogfp007: 'System prompt prefix (optional, defines member specialty)',
1266
+ kbqn6w5008: 'e.g. You are a database migration expert focused on schema changes and backfills…',
1267
+ kung925009: 'Select template…',
1268
+ k1bl78fu010: 'Clone Role',
1269
+ k1vhvbz7011: 'System prompt override (optional; empty = template preset)',
1270
+ k7ft6ig012: 'Empty = use the template\'s config.systemPromptPrefix; fill in to override with this scenario prompt',
1271
+ k29om9b013: 'Select an AgentTeam (batch-clone all members)',
1272
+ kur1otz014: 'Select group…',
1273
+ k10ti81i015: 'This content is used as a system-prompt prefix injected into the member\'s harness every turn (omp) or as a status message (mock). Empty = no scenario prompt',
1274
+ k3y5ja016: 'Team',
1275
+ k3ll6sa017: ' members',
1276
+ k1fmutgo018: 'Add Member',
1277
+ k1woev5v019: 'Syncing member snapshots…',
1278
+ k122h4pc020: 'No members in this team yet',
1279
+ k7cr2h8021: 'Click “Add Member” (top right) to create from scratch, or deploy from templates / groups in one click',
1280
+ k3xycu022: 'Scenario',
1281
+ k4588s023: 'Terminal',
1282
+ k1b7cwvy024: 'Create from Scratch',
1283
+ k1ndey1w025: 'Clone from Template',
1284
+ k1l5qyux026: 'Deploy Group',
1285
+ kqg6783027: 'mock (test script)',
1286
+ k1weovo028: 'lead (at most one; rejected if a lead already exists)',
1287
+ knybb6r029: 'Template library empty? Create reusable agent templates (omp/mock/claude + system prompt) on the Templates page first.',
1288
+ k1qqnq5030: 'Each member template in a group is cloned as an independent instance; if the group has a lead and this channel already has one, deployment is rejected (409).',
1289
+ k1rw1rd2031: 'After saving, the member runtime reloads; the next task/schedule uses the new prompt',
1290
+ ky6jqt4032: 'Member name is required',
1291
+ kfvflle033: 'user edits member info / scenario prompt',
1292
+ k13xo8sz034: 'Select an agent template to clone',
1293
+ k1tjd5ab035: 'Select an AgentTeam to deploy',
1294
+ },
1295
+ artifactCard: {
1296
+ k3yu62003: 'Expand',
1297
+ k3y694004: 'Copy',
1298
+ k40p82001: 'Collapse',
1299
+ k3n6o1m002: 'Copied',
1300
+ },
1301
+ assetLibrary: {
1302
+ katn7lo015: 'Drag onto the twin scene to create a device instance · {p0}',
1303
+ k8nv3or016: 'Uploaded → {p0}',
1304
+ k1hhga4h014: 'Confirm Upload',
1305
+ k7la4x5001: 'Device Model Library',
1306
+ kulif5b002: 'Drag into the twin space to create an instance',
1307
+ k5hg6jq003: 'Release to select a model',
1308
+ k3xdnn004: 'Cancel',
1309
+ k1ar7n8i005: 'Uploading…',
1310
+ k1n32zs0006: 'Device · drag & drop',
1311
+ k1kq2tmi007: 'Loading…',
1312
+ k15527e1008: 'No device models yet; drop a .glb file to upload',
1313
+ k1xz5wvk009: '3D preview not supported yet)',
1314
+ k1iiort6010: 'Drop or pick a model file',
1315
+ k498l011: 'Del',
1316
+ kcjqcaw012: 'Drop or pick a device model file first (.glb/.gltf/.obj/.fbx)',
1317
+ k8n918k013: 'Model file deleted',
1318
+ },
1319
+ channelSessionList: {
1320
+ kjmldih035: 'Settings {p0}',
1321
+ k1yurooi036: 'Move out {p0}',
1322
+ kfe4pzq037: 'Working directory: {p0} (click to copy path)',
1323
+ k1oes209038: '{p0}{p1} ({p2} members)',
1324
+ k1pmemvt039: 'Channel Settings · {p0}',
1325
+ kud74vg040: 'Copied: {p0}',
1326
+ k1x2th9e041: 'Create failed: {p0}',
1327
+ kai50qc042: 'Instantiated from template and mounted ({p0} members)',
1328
+ k2hfym5043: '{p0} template',
1329
+ k3wcox034: 'Task',
1330
+ kne35ug001: 'Channel Settings (scenario / working dir / save as template)',
1331
+ k1qjyl6l002: 'Create & Mount Channel',
1332
+ k40gkk003: 'Description',
1333
+ k1wj4f38004: 'Scenario prompt (injected to all)',
1334
+ k1098zie005: 'The working-scenario spec shared by all agents of this channel, injected into every harness together with the system design handbook… e.g. all deliverables must include a Chinese summary; code changes need a plan first; end replies with a [DONE] marker',
1335
+ kmgv4h5006: 'Working directory (team workspace mount point)',
1336
+ k1i8q46x007: 'Scenario prompt (after editing, member runtimes are recycled and re-assembled with the new scenario)',
1337
+ ku3ugac008: 'The working-scenario spec shared by all agents of this channel…',
1338
+ k67dzev009: 'Working directory (agents\' cwd; omp subprocesses restart with the new directory after editing)',
1339
+ k6kpql010: 'Save as Channel Template',
1340
+ k1f55q76011: 'Template Name',
1341
+ k3lrqn0012: 'Visibility',
1342
+ kbdp56k013: 'Select team working directory',
1343
+ kkv789s014: 'No Channel mounted yet (instantiate from a template below in one click)',
1344
+ k1bst7s9015: 'Syncing…',
1345
+ k18ppu31016: 'Template = scenario + working directory + team; instantiating assembles the members',
1346
+ k1u3zsr5017: 'Injection order: scenario spec → member specialty → memory → system handbook → tasks; the settings dialog hot-updates (member runtimes recycle and re-assemble automatically)',
1347
+ k3pz0ma018: 'Browse…',
1348
+ kucq30k019: 'This directory is injected as the working cwd of every agent harness during tasks (omp subprocess working directory); created automatically if missing',
1349
+ k1ful761020: 'A new Channel starts as an empty team with no agents; after entering, use “Add Member” to pick roles (lead/worker) and scenario prompts to assemble it',
1350
+ k1x6kznr021: 'Capture the current scenario/working directory/team combination as a reusable template',
1351
+ k1otvrfv022: 'Private (only you)',
1352
+ k1cc399s023: 'Public (instantiable by everyone)',
1353
+ kl9btf7024: 'Members keep template references when present, otherwise inline snapshots are saved; scenario and working directory are copied as-is',
1354
+ k1ggoa45025: 'Members / Busy',
1355
+ krij3gg026: 'Copy failed (browser clipboard not authorized)',
1356
+ k1bg6shc027: 'Create failed',
1357
+ kn89jvs028: 'Channel created (empty team; enter and assemble lead / workers via “Add Member”)',
1358
+ k97xi7u029: 'Template mount failed',
1359
+ k1hgfvdc030: 'Move-out failed',
1360
+ kvsxlu6031: 'Updated; member runtimes will be recycled and re-assembled with the new settings',
1361
+ k1i0ji0y032: 'Template name is required',
1362
+ kjpguxw033: 'Captured as a Channel template (scenario/directory/team snapshot)',
1363
+ k1plugon044: 'Plugin switches saved; tool lists of running agents in this Channel refresh immediately',
1364
+ k1pluglbl045: 'Plugins (per-Channel switches; disabled tools are hidden from and rejected for this team\'s agents)',
1365
+ k1plugsrc046: 'Not explicitly configured (all enabled by default); applies per-row after first toggle',
1366
+ },
1367
+ clusterArtifact: {
1368
+ kyh87lw001: 'Deliverable body matches the reply above',
1369
+ k49les002: 'Hide',
1370
+ },
1371
+ clusterError: {
1372
+ k40p82001: 'Collapse',
1373
+ },
1374
+ clusterLife: {
1375
+ k1xthifv001: 'Non-status event',
1376
+ k498bf002: 'Queue',
1377
+ k3pi5z1003: 'Sub-state',
1378
+ },
1379
+ clusterMember: {
1380
+ k40p82001: 'Collapse',
1381
+ },
1382
+ clusterMemory: {
1383
+ k40p82001: 'Collapse',
1384
+ },
1385
+ clusterOther: {
1386
+ k40p82001: 'Collapse',
1387
+ },
1388
+ clusterRoute: {
1389
+ k12448jn010: 'Human sender: {p0}',
1390
+ khsfl59011: 'View {p0}',
1391
+ k94hqp2012: 'Reply to message {p0}',
1392
+ k13ewgum013: 'All {p0}',
1393
+ kfbpe32001: 'The sender requests a reply: the receiver must ack with the execution result',
1394
+ kyza1ya002: '(broadcast)',
1395
+ k3wn89c003: 'Reply required',
1396
+ k40p82004: 'Collapse',
1397
+ k1ax44eo005: 'Task Dispatch',
1398
+ k1bsct42006: 'Cancel Notice',
1399
+ k1ax087h007: 'Subtask Completed',
1400
+ k1cxjc4m008: 'Live Injection',
1401
+ k1bka5dz009: 'Collaboration Message',
1402
+ },
1403
+ clusterStatus: {
1404
+ k1fpy8te001: 'Thinking / intermediate output',
1405
+ },
1406
+ clusterStream: {
1407
+ kpk9wff001: 'Content merged into a later reply block (not rendered twice)',
1408
+ },
1409
+ clusterTask: {
1410
+ kfwdcd4008: 'Status code {p0}',
1411
+ k3n8lhn001: 'Submitted',
1412
+ k3n8mf0002: 'Assigned',
1413
+ k3o5tz9003: 'Running',
1414
+ k1hpsvap004: 'Awaiting merge',
1415
+ k10w8u89005: 'Done · accepted',
1416
+ k4u7566006: 'Failed · awaiting re-dispatch',
1417
+ k3n5vg5007: 'Cancelled',
1418
+ },
1419
+ clusterTool: {
1420
+ k40p82001: 'Collapse',
1421
+ },
1422
+ commandPalette: {
1423
+ k1nz14ux013: 'Switch Channel: {p0}',
1424
+ k1d8xtez014: 'Timeline filter: {p0}',
1425
+ k1nn6i83001: 'Type a command… (navigate/views/Channel/filter/actions)',
1426
+ ktup4q4002: 'No matching commands',
1427
+ k1kvl0fa003: 'Select /',
1428
+ k1e3ualj004: 'Run /',
1429
+ k3x62t005: 'Close',
1430
+ kmxxk3u006: 'Go: Workspace Overview',
1431
+ k4s8e5q007: 'Go: Agent Templates',
1432
+ k1ezz11x008: 'Go: Channel Template Hub',
1433
+ k143z9bg009: 'View: Timeline',
1434
+ k13ztmim010: 'View: Task Board',
1435
+ k21cpnp011: 'View: Multi-channel',
1436
+ k1tm54il012: 'Action: focus the task input',
1437
+ },
1438
+ composer: {
1439
+ kl3604i033: 'Direct to {\'@\'}{p0}',
1440
+ k1cxjc4m034: 'Live Injection',
1441
+ k1d2idgj035: 'Task dispatched → {\'@\'}{p0} ({p1})',
1442
+ k1wk4bf036: 'Message sent to {\'@\'}{p0} ({p1})',
1443
+ k2z0fsx032: ' · direct',
1444
+ k1b38y2b001: 'Unlimited',
1445
+ k1jqqvhe002: 'HITL live injection: when the target is running, inject into its current turn directly (visible in the same turn)',
1446
+ k195594v003: 'Request an ack from the recipient',
1447
+ k1bxvc46004: 'Send to…',
1448
+ k3wcox005: 'Task',
1449
+ k17u6q77006: 'First line = title',
1450
+ k41ykc007: 'Message',
1451
+ k3x9n2008: 'Instant',
1452
+ k40g8m009: 'Queued',
1453
+ k3xv7u010: 'Ack',
1454
+ k49kr1011: 'Interval',
1455
+ k2z7yuw012: ' · default',
1456
+ k1bosqfv013: 'Live inject',
1457
+ kqdhdlq014: 'Task title is required',
1458
+ k1l36qf9015: 'Max runs must be 1–10000; empty means unlimited',
1459
+ k1bw65is016: 'Select a target agent ({\'@\'} mention available)',
1460
+ k1ww0ftm017: 'Running · the task joins its mailbox queue',
1461
+ k9eq10w018: 'Target busy: the new task is delivered to its mailbox and handled FIFO after the current turn',
1462
+ kbhz1rp019: 'Stopped · the task is queued and runs after wake-up',
1463
+ kophjf5020: 'Target runtime stopped: the task is safely queued and processed after re-enabling',
1464
+ k4qgtiw021: 'Idle · the task starts a turn immediately',
1465
+ kfmjwas022: 'Target idle: processing starts right after delivery',
1466
+ kwg68t0023: 'Running · will be live-injected into the current turn (HITL)',
1467
+ k7w1etd024: 'Running · handled after the current turn',
1468
+ k9m6p7u025: 'Target busy: the instant message is injected into its running session (visible in the same turn)',
1469
+ kj1ngpo026: 'Stopped · the message is queued and delivered after wake-up',
1470
+ kmf7lcc027: 'Target runtime stopped: the message is safely queued and processed after re-enabling',
1471
+ k1tet5df028: 'Idle · a turn starts immediately to handle it',
1472
+ kn600in029: 'Target idle: processing starts right after delivery',
1473
+ k2h5jwc030: 'Type a task (first line = title, {\'@\'} to target a member, defaults to lead)… ⌘/Ctrl+Enter to submit',
1474
+ k15mwzt7031: 'Type a message/notice ({\'@\'} to target a member, defaults to lead)… ⌘/Ctrl+Enter to send',
1475
+ },
1476
+ deviceTwinPanel: {
1477
+ k9r7d4e030: 'Current PLC reading (actual)',
1478
+ kq2jssk008: 'Recipe Process Window',
1479
+ k1iwj796009: 'Node Range',
1480
+ kxddket010: '超出{p0} {p1}',
1481
+ k1j04u8001: 'Write setpoint (out-of-range values are rejected)',
1482
+ k7k6evr002: 'Device Console',
1483
+ kkw7sn5003: 'Loading device registers…',
1484
+ k13y2qmg004: 'Unregistered device',
1485
+ kotf23l005: 'Drag a device model into the twin scene to create a digital twin entity',
1486
+ k48grv006: 'Recipe',
1487
+ k44653007: 'Acknowledge',
1488
+ },
1489
+ eventBlock: {
1490
+ kc918hn001: 'A response or human acknowledgement is required',
1491
+ kcugdph002: 'Content duplicated from delta stream merged into one block',
1492
+ kknq700003: 'Quote into input',
1493
+ k3wmcv4004: 'Needs attention',
1494
+ k3vp67i005: 'Running',
1495
+ k3xk4t006: 'Deduped',
1496
+ },
1497
+ fileSelectorModal: {
1498
+ kvwnnvn001: '.. (up one level)',
1499
+ k268o2o002: '(no subdirectories; use “Select This Directory” to take the current location)',
1500
+ k1rt80dq003: 'Double-click a directory to take it directly; the chosen path becomes the team working directory (agents\' cwd) and is created automatically if missing.',
1501
+ kz99pgv004: 'Failed to read directory',
1502
+ },
1503
+ inspectorPanel: {
1504
+ k1tqitzl008: '成员同步中…',
1505
+ kks0y5h009: '任务同步中…',
1506
+ k12oip5c010: 'Success {p0}% / avg {p1}s / failed {p2}',
1507
+ k498bf001: 'Queue',
1508
+ k3ypnl002: 'Done',
1509
+ k3mp44x003: 'Subtasks',
1510
+ k3w9q9004: 'Deliverables',
1511
+ k1el4cgf005: 'No members',
1512
+ k1el0vqb006: 'No tasks',
1513
+ k1el1plr007: 'No history',
1514
+ },
1515
+ laneBlocks: {
1516
+ k1br5dtr004: 'Load earlier',
1517
+ k1otw1r3001: 'Syncing history…',
1518
+ k1el0s5k002: 'No events yet',
1519
+ k1br0ij9003: 'Loading…',
1520
+ },
1521
+ liveAgentBar: {
1522
+ kh66fan003: 'View execution details of {p0}',
1523
+ k1a39d92004: '{p0} more members are busy',
1524
+ k3o5tz9005: 'Running',
1525
+ k68d2a2006: 'Queue ×{p0}',
1526
+ kr4bxgp001: 'All members idle',
1527
+ k1sf0ymy002: 'Running ·',
1528
+ },
1529
+ memoryPanel: {
1530
+ k1du3379001: 'Member Identity',
1531
+ k1bbee8p002: 'Write Memory',
1532
+ k419s4003: 'Title',
1533
+ k3wv1f004: 'Content',
1534
+ k3l2hmp005: 'Shared',
1535
+ k3rve9a006: 'Private',
1536
+ k1k7okbe007: 'Memories',
1537
+ k3x1jg008: 'Refresh',
1538
+ k3wtib009: 'Writes',
1539
+ kemjjvq010: 'shared (public scope, searchable by everyone)',
1540
+ k43rxk011: 'empty)',
1541
+ k3onh9w012: 'you)',
1542
+ k3zul4013: 'Manual',
1543
+ k186sctu014: 'Read failed (check member identity)',
1544
+ k1eh0fbo015: 'Search requires a keyword and member identity',
1545
+ k1dpj734016: 'Title/content/member identity are required',
1546
+ k3n5bat017: 'Written',
1547
+ k1bb5i1l018: 'Write failed',
1548
+ },
1549
+ mentionHoverCard: {
1550
+ k1t89ag4001: 'Click a mention to open execution details',
1551
+ k3o5eky002: 'Run:',
1552
+ },
1553
+ multiChannelView: {
1554
+ k3wcox005: 'Task',
1555
+ kvfx0mh006: 'Drag to resize the {p0} column',
1556
+ kp9ap3k007: '消息 {p0}> {\'|\'} undefined)?.[0]?.text ?? \'\').slice(0, 30)}',
1557
+ k1688yr4008: '交付 {p0} {\'|\'} undefined)?.name ?? \'\')}',
1558
+ kfvue7n009: 'Memory {p0}',
1559
+ khq39oe010: 'Member {p0} {p1}',
1560
+ k16wopr9011: 'Error {p0}',
1561
+ k1bfi9ms001: 'Mount multiple Channels on the left to observe them side by side here',
1562
+ k1bst7s9002: 'Syncing…',
1563
+ k4by6003: 'Busy',
1564
+ k1el0s5k004: 'No events yet',
1565
+ },
1566
+ paneSplitter: {
1567
+ kejk1i9001: 'Drag to resize panel',
1568
+ },
1569
+ statsPanel: {
1570
+ k1i88c0b001: 'Buffered Events',
1571
+ kfplawo002: 'Throughput (10s)',
1572
+ kzcd51003: 'Event type mix (buffer window)',
1573
+ k1pevwxl004: '(no events)',
1574
+ },
1575
+ taskBoardView: {
1576
+ k8m7hm6020: 'Routing reason: {p0}',
1577
+ k1f9c17l019: 'Syncing',
1578
+ k43pyn001: 'Board',
1579
+ k3x7l0002: 'List',
1580
+ k3wcox003: 'Task',
1581
+ k168w1ze004: 'Tasks · drag a card to “Failed/Cancelled” to cancel, or back to “Pending” to retry',
1582
+ k4b1x005: 'Sub-',
1583
+ k3vkhhj006: 'No',
1584
+ k13pad50007: 'Drop here to run the action',
1585
+ k3nf71d008: 'Pending',
1586
+ k3o5tz9009: 'Running',
1587
+ k1hpx9p1010: 'Awaiting Summary',
1588
+ k3n77g3011: 'Completed',
1589
+ k1veotws012: 'Failed/Cancelled',
1590
+ k189y4q013: 'Task cancellation requested',
1591
+ kv1l1j3014: 'Task re-dispatched',
1592
+ k1e7zwuc015: 'Operation failed',
1593
+ k1bs0t9b016: 'Cancel Task',
1594
+ k1lclwk6017: 'Retry Dispatch',
1595
+ k1dx9ysj018: 'Open Details',
1596
+ },
1597
+ taskInspectorDrawer: {
1598
+ kkp77tf015: 'Deliverables ({p0})',
1599
+ khnua62016: 'Subtasks ({p0})',
1600
+ kxj74io017: 'Raw content ({p0} parts)',
1601
+ k6hcbxi001: 'Drag to resize drawer',
1602
+ kns2a6x002: 'Retry this task?',
1603
+ k1a7jqb9003: 'Cancel this task?',
1604
+ k40gkk004: 'Description',
1605
+ k1lcgf2b005: 'Retry Task',
1606
+ k1bs0t9b006: 'Cancel Task',
1607
+ k1knph8c007: 'Routing reason',
1608
+ kr3vr2x008: 'No events (occurred before connection)',
1609
+ k1kmqn5u009: '(no subtasks)',
1610
+ k3o48o4010: 'Assignee:',
1611
+ k485ye011: 'Progress',
1612
+ k401n2012: 'none)',
1613
+ k1xj595a013: 'Cancellation requested',
1614
+ ke7bh8u014: 'Re-dispatched for execution',
1615
+ },
1616
+ townView: {
1617
+ k1k6wg8j185: 'Device Instance',
1618
+ k44c2n186: 'Offline',
1619
+ k1w6xehu187: '{p0} · {p1} · auto-binds near a device, range {p2} ~ {p3} {p4}',
1620
+ k1icez46188: '{p0} · {p1} · setpoint range {p2} ~ {p3} {p4} · auto-binds near a device',
1621
+ k2bindr0007: 'Bound to "{p0}" — click to re-bind to this device',
1622
+ k2bindr0008: 'Click to bind to this device',
1623
+ k2bindr0009: 'Not placed',
1624
+ k2bindr0010: 'No bindable nodes — use + on a template row in the left rail, or create in DAQ Center',
1625
+ k2tplxp0001: 'Click to expand/collapse "{p0}" nodes · {p1} · range {p2} ~ {p3} {p4}',
1626
+ k2tplxp0002: 'New "{p0}" node (drag into scene after creation)',
1627
+ k2tplxp0003: 'No nodes yet — use + on the template row, or add in DAQ Center',
1628
+ k2tplxp0005: 'Placed · click to locate & select; drag to re-place',
1629
+ k2tplxp0006: 'Drag onto the scene to place (auto-binds a device within ±95)',
1630
+ k479op189: 'Role',
1631
+ kb251ac190: 'Current recipe process window',
1632
+ kcyn0191: '“{p0}” is already in the scene (one placement per channel)',
1633
+ k1hmf2ut192: 'Channel layout failed to load; retrying ({p0})',
1634
+ kgz2nej193: 'Re-skinned {p0} → {p1}',
1635
+ k5e2460194: 'Placed a resident at the drop point → {p0}',
1636
+ k113fir9195: '{p0} {p1} out of range ({p2})',
1637
+ k1knv89d196: '{p0} {p1} entered the warn band ({p2})',
1638
+ ksjancw197: '{p0} {p1} back to normal',
1639
+ kbuyve5198: 'Beyond {p0} {p1} ~ {p2}',
1640
+ k3n93ed175: 'Paused',
1641
+ k3os7i3176: 'Not placed',
1642
+ k1l147w1177: 'Run Mode',
1643
+ k1empnnb178: 'DAQ Node',
1644
+ k1iwj796179: 'Node Range',
1645
+ kh1586b180: 'Enable this node',
1646
+ k1bc6rqf181: 'Global range',
1647
+ k121kfef182: 'Delete device instance',
1648
+ k1f1xmci183: 'Draw Range',
1649
+ k3lmtk3184: 'Syncing',
1650
+ k1c9jyta001: 'Scene Mode',
1651
+ k1fsi3ir002: 'Active Alarms',
1652
+ k1demf38003: 'Current User',
1653
+ khzlyf5004: 'Default sampling interval (nodes without their own interval follow this value)',
1654
+ k18d6wnb005: 'Locate selected device',
1655
+ k1io51dn006: 'Auto Orbit',
1656
+ k1sgjlq8007: 'Callout Visibility',
1657
+ k3wuf0008: 'Fullscreen',
1658
+ k1k4j5i7009: 'Camera Presets',
1659
+ k1ejxiwp010: 'Click to select this device',
1660
+ k1d0rl5z011: 'Drag to move panel',
1661
+ kz71l1f012: 'Distance within which the camera shows DAQ data cards for a device',
1662
+ k1bsckft013: 'Deselect',
1663
+ kpwutri014: 'Delete this DAQ node (server entity removed as well)',
1664
+ k1k6vbaf015: 'Device Name',
1665
+ k1k73omv016: 'Unbind',
1666
+ k15t7izc017: 'Write setpoint (out-of-window values are rejected by the recipe interlock)',
1667
+ k13enoy3018: 'Drag a box in the scene to set this character\'s movement range',
1668
+ khqvwix019: 'Auto = tool calls execute directly; manual = every write needs approval here',
1669
+ keztqrn020: 'Note (returned to the agent with the result)…',
1670
+ k15avt7g021: 'Re-fetch this character\'s conversation history',
1671
+ k1bkswpz022: 'Acknowledge All',
1672
+ klfwiqg023: 'RPG nav map · crosshair = camera · drag to pan · click to focus · wheel syncs zoom',
1673
+ k1lap9bs024: 'Reset View',
1674
+ kav8a8k025: 'Zoom out (minimap synced)',
1675
+ k1u7uce9026: 'Zoom in (minimap synced)',
1676
+ k48dwh027: 'Run',
1677
+ k45eb0028: 'Edit',
1678
+ k1b3bk8t029: 'Save Layout',
1679
+ k1k75lzy030: 'Device Assets',
1680
+ k2gwyas031: 'DAQ Nodes',
1681
+ k3xg3w032: 'Interval',
1682
+ km7ayhi033: 'Control Nodes (DCW)',
1683
+ k1c9n911034: 'Scene Manager',
1684
+ k1b0z4vr035: 'Line Twin Overview',
1685
+ kv72860036: '3D View · Standard',
1686
+ k1k6xemt037: 'Devices',
1687
+ k49lh038: '',
1688
+ k1l1a9t2039: 'Running Devices',
1689
+ k4dfq040: 'items',
1690
+ k1emsai1041: 'DAQ Channels',
1691
+ k4l1w042: '',
1692
+ kbrxdq1043: 'Line Health',
1693
+ k3rwxjc044: 'Empty Scene',
1694
+ k1sa1eaj045: 'Drag entities from “Device Assets / DAQ Nodes” on the left to start building the digital twin space',
1695
+ k1mehlxs046: 'Channel Manager',
1696
+ k489ka047: 'Boundary',
1697
+ k3zhy5048: 'Shape',
1698
+ k414bc049: 'Ellipse',
1699
+ k43u0g050: 'Rectangle',
1700
+ k1fbz4s1051: 'Semi-axis X',
1701
+ k1ighwgs052: 'Semi-axis Z',
1702
+ k40qab053: 'Orientation',
1703
+ kimxls2054: 'Pick 3D character models for channel members (live re-skin, persisted)',
1704
+ k419rbs055: 'No members in this channel yet',
1705
+ k1b3kp8f056: 'Save Boundary',
1706
+ k1hs45qg057: 'Remove Channel',
1707
+ k3x62t058: 'Close',
1708
+ kvjdqfg059: 'Building the digital twin space…',
1709
+ k1c9iq23060: 'Scene Controls',
1710
+ k1gizopz061: 'Ambient Light',
1711
+ k1bcpqto062: 'Structure Opacity',
1712
+ k1bztha1063: 'Alarm Threshold',
1713
+ ka4i1s9064: 'Callout Distance',
1714
+ k1idc6pa065: 'Grid Snap',
1715
+ k1i046wf066: 'Emergency Stop',
1716
+ k1kfoef9067: 'Trend Analysis',
1717
+ trendExpandAll: 'Show all {p0} channels',
1718
+ trendCollapse: 'Collapse',
1719
+ statesOffline: 'Offline',
1720
+ fpsCapLabel: 'FPS Cap',
1721
+ fpsCapTip: 'Render-rate cap only; live data consumption is not throttled (frames land in the buffer on arrival, each rendered frame shows the latest values)',
1722
+ qualityLabel: 'Quality',
1723
+ qualityTip: 'Auto = tier by measured fps; Normal/HD/Ultra = fixed render config (Ultra unlocks full WebGL quality)',
1724
+ qualityAuto: 'Auto',
1725
+ qualityNormal: 'Normal',
1726
+ qualityHD: 'HD',
1727
+ qualityUltra: 'Ultra',
1728
+ secRender: 'Render',
1729
+ secEnv: 'Environment',
1730
+ secOps: 'Operate',
1731
+ hitlAutoReject: 'to auto-reject (timeout default-deny)',
1732
+ k1uht2uv068: 'Drag DAQ nodes from the left; live trends plot here',
1733
+ k1deqh0d069: 'Current Setpoint',
1734
+ k1i8rtqt070: 'Bound Device',
1735
+ kjo6ekr071: 'Select a device instance…',
1736
+ k3mv305072: 'Live Value',
1737
+ k1faqmjb073: 'In range',
1738
+ k1l6g2ga074: 'Sampling',
1739
+ k1or92b075: 'ms (empty = follow global)',
1740
+ k3x5tpx076: 'Warn Band',
1741
+ k1hjj0jf077: 'Hard Range',
1742
+ k48tki078: 'Acquire',
1743
+ k3xakp079: 'Delete',
1744
+ k1bpp30k080: 'Delete Node',
1745
+ kzk5dfx081: 'Mode · Read-only',
1746
+ k3xhia082: 'Name',
1747
+ k41amp083: 'Model',
1748
+ kgpuqhb084: 'No DAQ channels · drop a DAQ node near this device to auto-bind',
1749
+ kvm0lin085: '+ Add DAQ Channel',
1750
+ k48grv086: 'Recipe',
1751
+ k10smf24087: 'No control channels · drop a control node near this device to auto-bind',
1752
+ kvk1vh5088: '+ Add Control Channel',
1753
+ k1hg3167089: 'Move G',
1754
+ k1enlg7i090: 'Rotate R',
1755
+ k1ibjg3j091: 'Scale S',
1756
+ kt0i3y2092: 'Mode · Read-only (switch to “Edit” to transform/delete)',
1757
+ k1fix3hb093: 'Activity Range',
1758
+ k1p7nru2094: 'Industrial Node Bindings',
1759
+ k1io1ylm095: 'Auto Execute',
1760
+ k1duyr8q096: 'Manual Approval',
1761
+ k40ifw097: 'Control',
1762
+ k40rjw098: 'DAQ',
1763
+ kurjldk099: 'Select nodes…',
1764
+ k45kpj100: 'Auto',
1765
+ k3zul4101: 'Manual',
1766
+ k452a8102: 'Bind',
1767
+ kslcozu103: '✓ Approve',
1768
+ k14gu3rd104: '✕ Reject',
1769
+ k41lwj105: 'Axis X',
1770
+ k45bta106: 'Axis Z',
1771
+ k1w45mzc107: 'Clear range (fall back to channel)',
1772
+ k14s8urm108: 'Not set: members roam the channel boundary; click “Draw Range” to customize',
1773
+ kkhlx5h109: 'Loading conversation history…',
1774
+ k3o5tz9110: 'Running',
1775
+ k1qkqld7111: 'No conversation · this member hasn\'t spoken yet',
1776
+ k17dkhgd112: 'Device Run State',
1777
+ k7h1nxo113: 'Device Health',
1778
+ k3vp67i114: 'Running',
1779
+ k3zcvb115: 'Standby',
1780
+ k3xmid116: 'Alarm',
1781
+ k1q247fn117: 'Key Device Monitor',
1782
+ k1cxf749118: 'Live Alarms',
1783
+ kjz544r119: 'No alarms; lines are running smoothly',
1784
+ k1cxdtq2120: 'Live Events',
1785
+ k2uk6ua121: 'Event bus standing by',
1786
+ kjug2jq122: '3D View Navigation',
1787
+ k1i4g246123: 'System',
1788
+ k4a0jt124: 'Channels',
1789
+ k3xdvm125: 'Members',
1790
+ k47e16126: 'Devices',
1791
+ klyi8yg127: 'Digital Twin Platform',
1792
+ k1brss7t128: 'Members ·',
1793
+ k3ztf1129: 'Members',
1794
+ k1vtyk05130: 'DAQ bindings ·',
1795
+ ktzir2t131: 'Control setpoints ·',
1796
+ k1gk2jg7132: 'Pending approvals ·',
1797
+ k1ghjbfc133: 'Sessions ·',
1798
+ k768cnt134: 'History ·',
1799
+ k1cwz73k135: 'Live ·',
1800
+ k1gaaodq136: 'crosshair = camera · zoom ×',
1801
+ k1h5gxpf137: 'Demo data is simulated signals',
1802
+ k3vfpz5138: ' channels',
1803
+ k1pub99m139: 'Line Manager',
1804
+ k3w3j8f140: 'Acquiring',
1805
+ k3n94g3141: 'Placed',
1806
+ k3lkuz3142: 'Loading',
1807
+ k1iipfcs143: 'Edit Mode',
1808
+ k493s144: 'Off',
1809
+ k4bs5145: 'On',
1810
+ k1ekqxlt146: 'Control Node',
1811
+ kq2jssk147: 'Recipe Process Window',
1812
+ k3own4q148: 'Unbound',
1813
+ k479eh149: 'Unbind',
1814
+ k1wv0nyo150: 'Disable this node',
1815
+ k1l3m0hx151: 'Recipe Window',
1816
+ k1w10xa5152: 'Click again to confirm deletion',
1817
+ k3slzhc153: 'Drawing',
1818
+ k41k5c154: 'OK',
1819
+ k3oo50k155: 'Unsaved',
1820
+ k1b38d59156: 'Saving…',
1821
+ k3n51yk157: 'Saved',
1822
+ k1b3ayhc158: 'Save failed',
1823
+ k7rvbts159: 'Drag a channel card onto the scene to place it (release to drop)',
1824
+ k1v1icf6160: 'Not set · follows the channel boundary',
1825
+ kpplr16161: 'Owning channel not found; cannot bind the model',
1826
+ kt6xb5p162: 'Mode is read-only · switch to “Edit” to modify the scene',
1827
+ k3n4l5f163: 'Working',
1828
+ k3n58d1164: 'Stopped',
1829
+ k3w9q9165: 'Deliverables',
1830
+ k44xa7166: 'System',
1831
+ k3zbgf167: 'Error',
1832
+ k1ef3cls168: 'DAQ Channels',
1833
+ k15tn2fh169: 'Select a device in the scene first',
1834
+ k3ng94k170: 'Pending',
1835
+ k3mi2n0171: 'Processing',
1836
+ k3ncnxl172: 'Acknowledged',
1837
+ kb157zk173: 'EMERGENCY STOP triggered — all lines halted',
1838
+ k1s9qzr9174: 'Emergency stop released — lines resumed',
1839
+ kwrbtn180: 'Write',
1840
+ ksavetip181: 'Save all device layout',
1841
+ krotip182: 'Read-only in run mode',
1842
+ },
1843
+ transcriptTimeline: {
1844
+ k44c2n024: 'Offline',
1845
+ kglov3b025: 'Data last updated: {p0}',
1846
+ k3wwxl026: 'just now',
1847
+ k2gyl6l027: '{p0}s ago',
1848
+ k2hda35028: '{p0} 年 ',
1849
+ kbs29zx029: '{p0}{p1}-{p2}',
1850
+ k3y2p8020: 'Online',
1851
+ kywgd38021: 'Load earlier events',
1852
+ k126izdm022: 'Waiting for events…',
1853
+ kuyjpmi023: 'Submit a task below; the agent execution renders here live',
1854
+ kqu93z8001: 'Jump to latest',
1855
+ k40t11002: 'Latest',
1856
+ k1kbaden003: 'All history loaded (from the very first event)',
1857
+ ktuo1zg004: 'No matching events',
1858
+ k1atjpx1005: 'Events /',
1859
+ kapxgq4006: 'No events under this filter; try other filters',
1860
+ k4a9o007: 'blocks',
1861
+ k3lmtk3008: 'Syncing',
1862
+ k1br0ij9009: 'Loading…',
1863
+ klnne6o010: 'Syncing timeline…',
1864
+ k1iuqpxj011: 'Events will re-align automatically once the connection recovers',
1865
+ k3x4t1012: 'All',
1866
+ k3x5xi013: 'Critical',
1867
+ k41ykc014: 'Message',
1868
+ k3wcox015: 'Task',
1869
+ k3y5ja016: 'Team',
1870
+ k49d2l017: 'Error',
1871
+ k3wcqg018: 'Today',
1872
+ k40l1y019: 'Yesterday',
1873
+ },
1874
+ titles: {
1875
+ dashboard: 'Dashboard · AgentWorkShop',
1876
+ daq: 'DAQ Console · AgentWorkShop',
1877
+ daqNode: 'DAQ Node Console · AgentWorkShop',
1878
+ dcw: 'Line Operations · AgentWorkShop',
1879
+ dcwLine: 'Line Detail · AgentWorkShop',
1880
+ tokens: 'API Tokens · AgentWorkShop',
1881
+ users: 'Users · AgentWorkShop',
1882
+ workshop: 'Workshop · AgentWorkShop',
1883
+ agents: 'Agent Templates · Workshop',
1884
+ teams: 'Agent Team Groups · Workshop',
1885
+ ctpl: 'Channel Template Hub · Workshop',
1886
+ monitor: 'Runtime Monitor · AgentWorkShop',
1887
+ settings: 'Settings · AgentWorkShop',
1888
+ },
1889
+ chips: {
1890
+ chipAll: 'All {n}',
1891
+ chipMine: 'Mine {n}',
1892
+ chipPublic: 'Public {n}',
1893
+ chipBuiltin: 'Built-in {n}',
1894
+ chipOthers: 'Others\' private {n}',
1895
+ mine: 'Mine',
1896
+ public: 'Public',
1897
+ builtin: 'Built-in',
1898
+ issue: 'Issue Token',
1899
+ issueTitle: 'Issue API Token',
1900
+ },
1901
+ appHeader: {
1902
+ kzwjv99001: 'Close {p0}',
1903
+ kwsdot0001: 'Live connection healthy',
1904
+ kwsdot0002: 'Syncing in real time…',
1905
+ kwsdot0003: 'Connecting…',
1906
+ kwsdot0004: 'Connection lost',
1907
+ hitlBadge: 'Needs human input',
1908
+ hitlKindOmp: 'omp dialog',
1909
+ hitlKindDcw: 'write approval',
1910
+ hitlKindCodex: 'codex approval',
1911
+ hitlKindOpencode: 'opencode permission',
1912
+ hitlKindDsh: 'dsh permission',
1913
+ hitlApprove: 'Approve',
1914
+ hitlReject: 'Reject',
1915
+ },
1916
+ ompTerminalPanel: {
1917
+ k14jk3nu001: ' {p0}· 对话框已撤销({p1}){p2}',
1918
+ k68kkpc002: '{p0}── 已接入 omp 进程 PID {p1}(会话重放 {p2} 帧)──{p3}',
1919
+ k59zj91003: '{p0}✗ 终端连接未就绪,命令未发送{p1}',
1920
+ kvzhi95004: '{p0}✔ HITL 已应答:{p1}{p2}',
1921
+ ke67kwf005: '{p0}── 切换目标 · {\'$\'}{\'{\'}props.pid ? ',
1922
+ },
1923
+ plugins: {
1924
+ title: 'Plugins',
1925
+ subtitle: 'Built-in samples & user extensions · toggles hot-reload instantly',
1926
+ refresh: 'Refresh',
1927
+ enabled: 'Enabled',
1928
+ disabled: 'Disabled',
1929
+ scopeProject: 'Built-in sample',
1930
+ scopeUser: 'User extension',
1931
+ scopeBuiltinHint: 'Built-in sample plugin: shipped with the project checkout (repo .AgentWorkShop/plugins), can be toggled',
1932
+ scopeUserHint: 'User extension plugin: lives in ~/.AgentWorkShop/plugins, created and maintained by you',
1933
+ loadFail: 'Failed to load plugin list',
1934
+ hasClient: 'Client enhancer',
1935
+ routes: 'API routes',
1936
+ empty: 'No plugins yet — run aw plugin create my-plugin, or aw plugin enable to turn on examples',
1937
+ failures: 'Load failures',
1938
+ loadFailures: '{n} plugin(s) failed to load, see server startup log',
1939
+ enableFail: 'Toggle failed',
1940
+ detail: 'Plugin detail',
1941
+ desc: 'Platform plugin list: enable/disable (admin, hot-reload) and connection health checks.',
1942
+ needLogin: 'Sign in to view and manage plugins',
1943
+ builtin: 'Built-in',
1944
+ adminRequired: 'This action requires an administrator',
1945
+ healthCheck: 'Check connection',
1946
+ healthChecking: 'Checking…',
1947
+ healthOk: 'OK',
1948
+ healthBad: 'Error',
1949
+ },
1950
+ errors: {
1951
+ http400: 'Invalid request, please check and retry',
1952
+ http401: 'Session expired, please sign in again',
1953
+ http403: 'Insufficient permission: this action requires an administrator',
1954
+ http404: 'Target not found or already removed',
1955
+ http409: 'Conflict: resource already exists or state does not allow it',
1956
+ http5xx: 'Server error, please retry later',
1957
+ network: 'Cannot reach the server, check network and service status',
1958
+ fallback: 'Action failed, please retry later',
1959
+ },
1960
+ permissions: {
1961
+ title: 'Permissions',
1962
+ subtitle: 'User × line three-state grants: none / read-only (DAQ) / operate (DAQ+DCW); users default to none',
1963
+ search: 'Search name or email',
1964
+ loadFail: 'Failed to load permission data',
1965
+ saveFail: 'Failed to save grants',
1966
+ saved: 'Saved {n} grant change(s)',
1967
+ colUser: 'User',
1968
+ colEmail: 'Email',
1969
+ colRole: 'Role',
1970
+ colStatus: 'Status',
1971
+ colChannels: 'Channels',
1972
+ colGrants: 'Line grants',
1973
+ colOps: 'Actions',
1974
+ active: 'Active',
1975
+ manage: 'Manage',
1976
+ detail: 'Permission detail',
1977
+ secProfile: 'Profile',
1978
+ secChannels: 'Created channels',
1979
+ noChannels: 'No channels created by this user',
1980
+ secMatrix: 'Line grant matrix',
1981
+ save: 'Save ({n})',
1982
+ matrixHint: 'none = line data is withheld server-side (invisible in UI & digital twin); read-only = DAQ read; operate = full DAQ read + DCW write.',
1983
+ none: 'None',
1984
+ readonly: 'Read-only',
1985
+ operate: 'Operate',
1986
+ },
1987
+ error: {
1988
+ backHome: 'Back to Home',
1989
+ lost: 'Page lost',
1990
+ },
1991
+ aml: {
1992
+ k1amlx001: 'AML Auto-Modeling',
1993
+ k1amlx002: 'Dataset snapshots → training jobs → gated experiments → model registry; job progress streams over WS, platform gates are authoritative.',
1994
+ k1amlx003: 'Python runtime',
1995
+ k1amlx004: 'Ready',
1996
+ k1amlx005: 'Unavailable',
1997
+ k1amlx006: 'Deps venv',
1998
+ k1amlx007: 'Ready',
1999
+ k1amlx008: 'Not ready',
2000
+ k1amlx009: 'Queued',
2001
+ k1amlx010: 'Running',
2002
+ k1amlx011: 'Datasets',
2003
+ k1amlx012: 'Models',
2004
+ k1amlx013: 'Production models',
2005
+ k1amlx014: 'training and prediction are disabled:',
2006
+ k1amlx015: 'Failed to load platform status',
2007
+ k1amlx016: 'Dataset snapshots',
2008
+ k1amlx017: 'Refresh',
2009
+ k1amlx018: 'New dataset',
2010
+ k1amlx019: 'No datasets yet — build an aligned snapshot from line history to submit training.',
2011
+ k1amlx020: 'Time',
2012
+ k1amlx021: 'Product',
2013
+ k1amlx022: 'Recipe',
2014
+ k1amlx023: 'Rows',
2015
+ k1amlx024: 'Runs',
2016
+ k1amlx025: 'Creator',
2017
+ k1amlx026: 'Note',
2018
+ k1amlx027: 'Cleaning report (per node)',
2019
+ k1amlx028: 'Lag estimates (control → target cross-correlation)',
2020
+ k1amlx029: 'Run overview',
2021
+ k1amlx030: 'Loading…',
2022
+ k1amlx031: 'Failed to load details',
2023
+ k1amlx032: 'No lag estimates (needs both control and target nodes)',
2024
+ k1amlx033: 'Node',
2025
+ k1amlx034: 'Role',
2026
+ k1amlx035: 'Cleaned',
2027
+ k1amlx036: 'Missing',
2028
+ k1amlx037: 'Mean',
2029
+ k1amlx038: 'σ',
2030
+ k1amlx039: 'min~max',
2031
+ k1amlx040: 'Control',
2032
+ k1amlx041: 'Target',
2033
+ k1amlx042: 'Lag (steps)',
2034
+ k1amlx043: 'Peak corr',
2035
+ k1amlx044: 'Runs used',
2036
+ k1amlx045: 'Runs dropped',
2037
+ k1amlx046: 'Windows train/val/test',
2038
+ k1amlx047: 'No build report (legacy snapshot)',
2039
+ k1amlx048: 'None',
2040
+ k1amlx049: 'user',
2041
+ k1amlx050: 'New dataset snapshot',
2042
+ k1amlx051: 'Line ID',
2043
+ k1amlx052: 'Product ID',
2044
+ k1amlx053: 'Recipe ID',
2045
+ k1amlx054: 'Node roles (at least one target)',
2046
+ k1amlx055: 'Add row',
2047
+ k1amlx056: 'Node ID',
2048
+ k1amlx057: 'control (known future input)',
2049
+ k1amlx058: 'feature (history-only feature)',
2050
+ k1amlx059: 'target (prediction target)',
2051
+ k1amlx060: 'Beat (ms)',
2052
+ k1amlx061: 'History (steps)',
2053
+ k1amlx062: 'Horizon (steps)',
2054
+ k1amlx063: 'val ratio',
2055
+ k1amlx064: 'test ratio',
2056
+ k1amlx065: 'Seed',
2057
+ k1amlx066: 'Purpose',
2058
+ k1amlx067: 'mpc_surrogate (MPC surrogate)',
2059
+ k1amlx068: 'quality_predict (quality prediction)',
2060
+ k1amlx069: 'Why this snapshot / alignment notes (optional)',
2061
+ k1amlx070: 'Building…',
2062
+ k1amlx071: 'Cancel',
2063
+ k1amlx072: 'Build snapshot',
2064
+ k1amlx073: 'Dataset built: {p0} ({p1} rows)',
2065
+ k1amlx074: 'Training jobs',
2066
+ k1amlx075: 'No training jobs — submit one via Agent tools or API once a dataset exists.',
2067
+ k1amlx076: 'Job',
2068
+ k1amlx077: 'Status',
2069
+ k1amlx078: 'Stage',
2070
+ k1amlx079: 'Progress',
2071
+ k1amlx080: 'Gates passed',
2072
+ k1amlx081: 'Gates failed',
2073
+ k1amlx082: 'Gates pending',
2074
+ k1amlx083: 'Platform gates',
2075
+ k1amlx084: 'Check',
2076
+ k1amlx085: 'Value',
2077
+ k1amlx086: 'Threshold',
2078
+ k1amlx087: 'Pass',
2079
+ k1amlx088: 'Fail',
2080
+ k1amlx089: 'Run log (tail)',
2081
+ k1amlx090: 'No logs yet',
2082
+ k1amlx091: 'Live log polling (5s) for active jobs',
2083
+ k1amlx092: 'Failure reason',
2084
+ k1amlx093: 'Cancelling…',
2085
+ k1amlx094: 'Confirm cancel',
2086
+ k1amlx095: 'Retry',
2087
+ k1amlx096: 'Confirm retry',
2088
+ k1amlx097: 'Cancellation requested: {p0}',
2089
+ k1amlx098: 'Requeued: {p0}',
2090
+ k1amlx099: 'Metrics',
2091
+ k1amlx100: 'Queued',
2092
+ k1amlx101: 'Provisioning',
2093
+ k1amlx102: 'Training',
2094
+ k1amlx103: 'Evaluating',
2095
+ k1amlx104: 'Done',
2096
+ k1amlx105: 'Failed',
2097
+ k1amlx106: 'Cancelled',
2098
+ k1amlx107: 'Timeout',
2099
+ k1amlx108: 'Interrupted',
2100
+ k1amlx109: 'Experiment leaderboard',
2101
+ k1amlx110: 'Pick a dataset to view lineage',
2102
+ k1amlx111: '— Pick a dataset —',
2103
+ k1amlx112: 'No experiments for this dataset — submit a training job to grow the lineage.',
2104
+ k1amlx113: 'Experiment',
2105
+ k1amlx114: 'Change note',
2106
+ k1amlx115: 'Parent',
2107
+ k1amlx116: 'G1 1-step',
2108
+ k1amlx117: 'G2 rollout',
2109
+ k1amlx118: 'Gates',
2110
+ k1amlx119: 'Running',
2111
+ k1amlx120: 'Best',
2112
+ k1amlx121: 'Test 1-step NRMSE (lower is better)',
2113
+ k1amlx122: 'Test rollout NRMSE (lower is better)',
2114
+ k1amlx123: 'Model registry',
2115
+ k1amlx124: 'Registry is empty — experiments passing gates register a candidate model automatically.',
2116
+ k1amlx125: 'Model',
2117
+ k1amlx126: 'Metrics (G1 1-step / G2 rollout NRMSE)',
2118
+ k1amlx127: 'Actions',
2119
+ k1amlx128: 'Promote to shadow',
2120
+ k1amlx129: 'Promote to production',
2121
+ k1amlx130: 'Retire',
2122
+ k1amlx131: 'Confirm',
2123
+ k1amlx132: 'Promoted: {p0} → {p1}',
2124
+ k1amlx133: 'Prediction console (what-if)',
2125
+ k1amlx134: '— Pick a production model —',
2126
+ k1amlx135: 'No production model — promote one in the registry first.',
2127
+ k1amlx136: 'IO spec',
2128
+ k1amlx137: 'All nodes',
2129
+ k1amlx138: 'Control nodes',
2130
+ k1amlx139: 'Target nodes',
2131
+ k1amlx140: 'History',
2132
+ k1amlx141: 'Horizon',
2133
+ k1amlx142: 'Beat',
2134
+ k1amlx143: 'history input ([H][nAll] JSON; column order = allNodes)',
2135
+ k1amlx144: '[[21.4,0.82,…], …] — H×nAll numeric matrix',
2136
+ k1amlx145: 'Pull latest',
2137
+ k1amlx146: 'In-line fetch is not wired: ask an Agent to query the latest H beats for this recipe and paste them as a JSON matrix.',
2138
+ k1amlx147: 'Rollout steps (≤ horizon, empty = full)',
2139
+ k1amlx148: 'Predict',
2140
+ k1amlx149: 'Inferring…',
2141
+ k1amlx150: 'Forecast result',
2142
+ k1amlx151: 'Step',
2143
+ k1amlx152: 't+ (s)',
2144
+ k1amlx153: 'Failed to parse history JSON:',
2145
+ k1amlx154: 'Forecast ready: {p0} steps × {p1} targets',
2146
+ k1amlx155: 'Model assumptions',
2147
+ k1amlx156: 'controls trajectory (optional, [≤H][nControl] JSON)',
2148
+ k1amlx157: 'Action failed',
2149
+ k1amlx158: 'Modeling',
2150
+ k1amlx159: 'AML auto-modeling studio',
2151
+ k1amlx160: 'AML Auto-Modeling · AgentWorkShop',
2152
+ k1amlx161: 'Line, product and recipe IDs are all required',
2153
+ k1amlx162: 'Runtime environment',
2154
+ k1amlx163: 'uv package manager',
2155
+ k1amlx164: 'Installed',
2156
+ k1amlx165: 'Not installed',
2157
+ k1amlx166: 'Install uv',
2158
+ k1amlx167: 'Installing uv…',
2159
+ k1amlx168: 'Create training env',
2160
+ k1amlx169: 'Rebuild training env',
2161
+ k1amlx170: 'Creating…',
2162
+ k1amlx171: 'AML asset root',
2163
+ k1amlx172: 'uv install location',
2164
+ k1amlx173: 'Training env path',
2165
+ k1amlx174: 'Disk usage',
2166
+ k1amlx175: 'Re-check',
2167
+ k1amlx176: 'Installing uv downloads ~40MB into the project ./aml/tools: no PATH changes, no admin rights, and the whole ./aml folder can be deleted and rebuilt.',
2168
+ k1amlx177: 'uv not found: click the button above to install it (recommended), otherwise the platform falls back to python -m venv (slower).',
2169
+ k1amlx178: 'Job prerequisites not met',
2170
+ k1amlx179: 'Environment task running',
2171
+ k1amlx180: 'Install log',
2172
+ k1amlx181: 'Close',
2173
+ k1amlx182: 'Metadata & entities',
2174
+ k1amlx183: 'Consistent',
2175
+ k1amlx184: 'Drift detected',
2176
+ k1amlx185: 'Entity missing',
2177
+ k1amlx186: 'Orphan entity',
2178
+ k1amlx187: 'Contract missing',
2179
+ k1amlx188: 'Prune orphans',
2180
+ k1amlx189: 'Edit note',
2181
+ k1amlx190: 'Delete',
2182
+ k1amlx191: 'Save',
2183
+ k1amlx192: 'Note updated',
2184
+ k1amlx193: 'Deleted',
2185
+ k1amlx194: 'uv installed',
2186
+ k1amlx195: 'uv install failed',
2187
+ k1amlx196: 'Training environment ready',
2188
+ k1amlx197: 'Failed to create training environment',
2189
+ k1amlx198: 'Deleting a dataset also removes its entity folder under ./aml/datasets; datasets referenced by experiments or models cannot be deleted.',
2190
+ k1amlx199: 'Deleting a model also removes its ONNX artifact under ./aml/models; production-stage models must be retired first.',
2191
+ k1amlx200: 'Deleting a job cascades to its experiments and its workspace under ./aml/jobs; jobs that produced models cannot be deleted.',
2192
+ k1amlx201: 'AML asset root: all datasets, training jobs, model artifacts and the uv virtualenv live here.',
2193
+ k1amlx202: 'Cancel',
2194
+ k1amlx203: 'Operation failed',
2195
+ },
2153
2196
  teamPlugins: {
2154
2197
  k1plugon040: 'Plugin switches · {p0}',
2155
2198
  k1plugon041: 'Enable plugins',
@@ -2160,4 +2203,4 @@ export default {
2160
2203
  k1plugon046: 'All plugins are disabled',
2161
2204
  k1plugon047: 'Plugin switches…',
2162
2205
  },
2163
- }
2206
+ }