agentworkshop 0.8.8 → 0.9.0

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 (589) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +68 -0
  2. package/.output/.AgentWorkShop/prompts/host-tools.json +68 -0
  3. package/.output/.AgentWorkShop/schema.json +2 -0
  4. package/.output/nitro.json +1 -1
  5. package/.output/public/_nuxt/{Cdi9qfTr.js → CDO7Zey1.js} +2 -2
  6. package/.output/public/_nuxt/builds/latest.json +1 -1
  7. package/.output/public/_nuxt/builds/meta/f507c33b-4ecc-4e32-af88-2e3736b443e9.json +1 -0
  8. package/.output/server/chunks/_/access.mjs +1 -1
  9. package/.output/server/chunks/_/data-export.mjs +5 -5
  10. package/.output/server/chunks/_/data-query.mjs +2 -2
  11. package/.output/server/chunks/_/eda-run.repo.mjs +3 -3
  12. package/.output/server/chunks/_/features.mjs +5 -5
  13. package/.output/server/chunks/_/golden.mjs +2 -2
  14. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  15. package/.output/server/chunks/_/index.mjs +2 -2
  16. package/.output/server/chunks/_/mes-secrets.repo.mjs +1 -1
  17. package/.output/server/chunks/_/nitro.mjs +2556 -1314
  18. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  19. package/.output/server/chunks/_/spc.mjs +2 -2
  20. package/.output/server/chunks/build/_id_-CsCtnbwe.mjs +1 -1
  21. package/.output/server/chunks/build/_id_-P1W47Gqq.mjs +1 -1
  22. package/.output/server/chunks/build/_wsId_-DpOErFj6.mjs +1 -1
  23. package/.output/server/chunks/build/agents-D7CdEUTv.mjs +1 -1
  24. package/.output/server/chunks/build/aml-DRAFRcGU.mjs +1 -1
  25. package/.output/server/chunks/build/analysis-J9axLuRt.mjs +1 -1
  26. package/.output/server/chunks/build/api-B4Om0mEc.mjs +1 -1
  27. package/.output/server/chunks/build/api-BEW_ebY_.mjs +1 -1
  28. package/.output/server/chunks/build/api-BsAgXWxi.mjs +1 -1
  29. package/.output/server/chunks/build/board-CJUc032b.mjs +1 -1
  30. package/.output/server/chunks/build/channel-templates-ggsBacZF.mjs +1 -1
  31. package/.output/server/chunks/build/constants-HPHJvjne.mjs +1 -1
  32. package/.output/server/chunks/build/daq-B_dRMDw4.mjs +1 -1
  33. package/.output/server/chunks/build/data-D8uX1dnm.mjs +1 -1
  34. package/.output/server/chunks/build/dcw-D_HD_H_2.mjs +1 -1
  35. package/.output/server/chunks/build/default-CNWS6NUw.mjs +1 -1
  36. package/.output/server/chunks/build/es-Bxu10NJ2.mjs +1 -1
  37. package/.output/server/chunks/build/logs-BnYSMRXM.mjs +1 -1
  38. package/.output/server/chunks/build/monitor-Cq6hRFeQ.mjs +1 -1
  39. package/.output/server/chunks/build/ontology-ohICfVVb.mjs +1 -1
  40. package/.output/server/chunks/build/operations-4zOVhW7o.mjs +1 -1
  41. package/.output/server/chunks/build/optimizer-BlWTsM-W.mjs +1 -1
  42. package/.output/server/chunks/build/pages-DEv4ProW.mjs +1 -1
  43. package/.output/server/chunks/build/permissions-DgXQZSyx.mjs +1 -1
  44. package/.output/server/chunks/build/pipeline-CkavMBhk.mjs +1 -1
  45. package/.output/server/chunks/build/plugins-LRjaSEZy.mjs +1 -1
  46. package/.output/server/chunks/build/schedules-Hz2DJUE2.mjs +1 -1
  47. package/.output/server/chunks/build/settings-DXLJPq7d.mjs +1 -1
  48. package/.output/server/chunks/build/studio-hSqH9TYS.mjs +1 -1
  49. package/.output/server/chunks/build/teams-BbwYJyzv.mjs +1 -1
  50. package/.output/server/chunks/build/tokens-GYaGJ35Z.mjs +1 -1
  51. package/.output/server/chunks/build/tools-CnYi9cou.mjs +1 -1
  52. package/.output/server/chunks/build/town-BV-hbwb5.mjs +1 -1
  53. package/.output/server/chunks/build/town-CcoQKjMj.mjs +1 -1
  54. package/.output/server/chunks/build/types-D6J7slEa.mjs +1 -1
  55. package/.output/server/chunks/build/types-DWqIeMRP.mjs +1 -1
  56. package/.output/server/chunks/build/useAgentHarnessOptions-Dq0l0Z6d.mjs +1 -1
  57. package/.output/server/chunks/build/useAgentTemplateActions-BFOHb5-L.mjs +1 -1
  58. package/.output/server/chunks/build/useAgentTemplateDialogState-CZzpu5og.mjs +1 -1
  59. package/.output/server/chunks/build/useAgentTemplateForm-CuJPOPcK.mjs +1 -1
  60. package/.output/server/chunks/build/useAgentTemplatesCatalog-B2bIhZLA.mjs +1 -1
  61. package/.output/server/chunks/build/useAmlDatasets-DeoE1idn.mjs +1 -1
  62. package/.output/server/chunks/build/useAmlEntities-BJhvdqHJ.mjs +1 -1
  63. package/.output/server/chunks/build/useAmlEnv-CDIZ6xTe.mjs +1 -1
  64. package/.output/server/chunks/build/useAmlExperiments-Dloi834i.mjs +1 -1
  65. package/.output/server/chunks/build/useAmlFormat-C2sl3MGB.mjs +1 -1
  66. package/.output/server/chunks/build/useAmlJobs-BF9LpwXz.mjs +1 -1
  67. package/.output/server/chunks/build/useAmlModels-_bweOr3R.mjs +1 -1
  68. package/.output/server/chunks/build/useAmlNotes-DQj980iX.mjs +1 -1
  69. package/.output/server/chunks/build/useAmlPredict-DHNgDSJn.mjs +1 -1
  70. package/.output/server/chunks/build/useAnalysisFeed-BrEGV_9x.mjs +1 -1
  71. package/.output/server/chunks/build/useDaqAddNode-D_Rkju0f.mjs +1 -1
  72. package/.output/server/chunks/build/useDaqDetailBinding-DCWaLKXT.mjs +1 -1
  73. package/.output/server/chunks/build/useDaqDetailFrames-BOIcOJRB.mjs +1 -1
  74. package/.output/server/chunks/build/useDaqDetailHistory-D6WulPVs.mjs +1 -1
  75. package/.output/server/chunks/build/useDaqDetailNode-BGMRUIXN.mjs +1 -1
  76. package/.output/server/chunks/build/useDaqDetailParams-Cm9a9r5G.mjs +1 -1
  77. package/.output/server/chunks/build/useDaqFilters-zAAVlzJQ.mjs +1 -1
  78. package/.output/server/chunks/build/useDaqNodeWindow-1DWj2H5G.mjs +1 -1
  79. package/.output/server/chunks/build/useDaqOptimizations-BE_9Z2s_.mjs +1 -1
  80. package/.output/server/chunks/build/useDaqTemplates-CK37sMfi.mjs +1 -1
  81. package/.output/server/chunks/build/useDashboardCharts-D45083s_.mjs +1 -1
  82. package/.output/server/chunks/build/useDashboardData-Cw8lrPo5.mjs +1 -1
  83. package/.output/server/chunks/build/useDcwAddNode-KnocMk1m.mjs +1 -1
  84. package/.output/server/chunks/build/useDcwCards-C53IiOcg.mjs +1 -1
  85. package/.output/server/chunks/build/useDcwDetailScope-D6qXrfZu.mjs +1 -1
  86. package/.output/server/chunks/build/useDcwDetailTemplates-DPOXu1o_.mjs +1 -1
  87. package/.output/server/chunks/build/useDcwFilter-DNQ6Ivwd.mjs +1 -1
  88. package/.output/server/chunks/build/useDcwLedger-BhbUBCbi.mjs +1 -1
  89. package/.output/server/chunks/build/useDcwLineMutations-KA7VnggO.mjs +1 -1
  90. package/.output/server/chunks/build/useDcwLineRun-3zx_UCxi.mjs +1 -1
  91. package/.output/server/chunks/build/useDcwParamApprovals-DzyY6Tmi.mjs +1 -1
  92. package/.output/server/chunks/build/useDcwProducts-B05ymt3k.mjs +1 -1
  93. package/.output/server/chunks/build/useDcwQuery-vWpgpSmJ.mjs +1 -1
  94. package/.output/server/chunks/build/useDcwQuickActions-DUkLy34S.mjs +1 -1
  95. package/.output/server/chunks/build/useDcwRecipes-BAb4Yg3d.mjs +1 -1
  96. package/.output/server/chunks/build/useDcwTemplates-D2aoejps.mjs +1 -1
  97. package/.output/server/chunks/build/useDcwWrites-7w8txksD.mjs +1 -1
  98. package/.output/server/chunks/build/useExpConfirmations-BM626N4p.mjs +1 -1
  99. package/.output/server/chunks/build/useLogsFormat-B-o4MHy7.mjs +1 -1
  100. package/.output/server/chunks/build/useLogsManual-D0dvgCsP.mjs +1 -1
  101. package/.output/server/chunks/build/useLogsQuery-D7hrJ3yn.mjs +1 -1
  102. package/.output/server/chunks/build/useLogsScope-DEUyq-My.mjs +1 -1
  103. package/.output/server/chunks/build/useMonitorColumns-vVnt3r5Q.mjs +1 -1
  104. package/.output/server/chunks/build/useMonitorData-DIkiLr_h.mjs +1 -1
  105. package/.output/server/chunks/build/useMonitorFormat-CyURtH8N.mjs +1 -1
  106. package/.output/server/chunks/build/useMonitorTerminal-Dj4QwRNW.mjs +1 -1
  107. package/.output/server/chunks/build/useOperationsFeed-Ci4mZAn_.mjs +1 -1
  108. package/.output/server/chunks/build/useRecipeDispatchApprovals-BYtiqfeb.mjs +1 -1
  109. package/.output/server/chunks/build/useTeamActions-BDjU06LP.mjs +1 -1
  110. package/.output/server/chunks/build/useTeamAddMemberDialog-J3oFn3FI.mjs +1 -1
  111. package/.output/server/chunks/build/useTeamCreateDialog-fbn4ixYu.mjs +1 -1
  112. package/.output/server/chunks/build/useTeamDeployDialog-BNezMD2k.mjs +1 -1
  113. package/.output/server/chunks/build/useTeamDialogState-CFRUQxAf.mjs +1 -1
  114. package/.output/server/chunks/build/useTeamPluginDialog-BZznrOVe.mjs +1 -1
  115. package/.output/server/chunks/build/useTeamsCatalog-DuZFP3oG.mjs +1 -1
  116. package/.output/server/chunks/build/useTokenClipboard-CwQpoFeP.mjs +1 -1
  117. package/.output/server/chunks/build/useTokenCreate-Ctl0YGhL.mjs +1 -1
  118. package/.output/server/chunks/build/useTokenRename-Cm3ypSfN.mjs +1 -1
  119. package/.output/server/chunks/build/useTokenReveal-CeoWL5Mt.mjs +1 -1
  120. package/.output/server/chunks/build/useTokensList-CNIzON3u.mjs +1 -1
  121. package/.output/server/chunks/build/useWorkbenchAuth-CY-bVFMu.mjs +1 -1
  122. package/.output/server/chunks/build/useWorkbenchWorkspaces-DhZQFss9.mjs +1 -1
  123. package/.output/server/chunks/build/useWorkspaceAuth-Dlvj9csD.mjs +1 -1
  124. package/.output/server/chunks/build/useWorkspaceChannels-CPFepxTN.mjs +1 -1
  125. package/.output/server/chunks/build/useWorkspacePanels-CTwREmq0.mjs +1 -1
  126. package/.output/server/chunks/build/useWorkspaceShell-BCypjjjE.mjs +1 -1
  127. package/.output/server/chunks/build/users-DjiVC_tS.mjs +1 -1
  128. package/.output/server/chunks/build/workshop-1gKeDASV.mjs +1 -1
  129. package/.output/server/chunks/routes/api/health.get.mjs +1 -1
  130. package/.output/server/chunks/routes/api/index.get.mjs +1 -1
  131. package/.output/server/chunks/routes/api/index.post.mjs +1 -1
  132. package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -1
  133. package/.output/server/chunks/routes/api/metrics.mjs +1 -1
  134. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +1 -1
  135. package/.output/server/chunks/routes/api/plugins/client/_name_.get.mjs +1 -1
  136. package/.output/server/chunks/routes/api/plugins/i18n.get.mjs +1 -1
  137. package/.output/server/chunks/routes/api/plugins/manifest.get.mjs +1 -1
  138. package/.output/server/chunks/routes/api/system/backup/list.get.mjs +1 -1
  139. package/.output/server/chunks/routes/api/system/backup/run.post.mjs +3 -3
  140. package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +1 -1
  141. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs +1 -1
  142. package/.output/server/chunks/routes/api/system/config.get.mjs +1 -1
  143. package/.output/server/chunks/routes/api/system/index.get.mjs +1 -1
  144. package/.output/server/chunks/routes/api/system/index.patch.mjs +1 -1
  145. package/.output/server/chunks/routes/api/system/index.post.mjs +1 -1
  146. package/.output/server/chunks/routes/api/system/index2.get.mjs +1 -1
  147. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +1 -1
  148. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +1 -1
  149. package/.output/server/chunks/routes/api/system/monitor.get.mjs +1 -1
  150. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +1 -1
  151. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +1 -1
  152. package/.output/server/chunks/routes/api/system/timezone.get.mjs +1 -1
  153. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +1 -1
  154. package/.output/server/chunks/routes/api/users/_id_.get.mjs +1 -1
  155. package/.output/server/chunks/routes/api/users/_id_.put.mjs +1 -1
  156. package/.output/server/chunks/routes/api/users/change-password.post.mjs +1 -1
  157. package/.output/server/chunks/routes/api/users/index.get.mjs +1 -1
  158. package/.output/server/chunks/routes/api/users/index.post.mjs +1 -1
  159. package/.output/server/chunks/routes/api/users/login.post.mjs +1 -1
  160. package/.output/server/chunks/routes/api/users/logout.post.mjs +1 -1
  161. package/.output/server/chunks/routes/api/users/me.get.mjs +1 -1
  162. package/.output/server/chunks/routes/api/users/register.post.mjs +1 -1
  163. package/.output/server/chunks/routes/api/users/setup-status.get.mjs +1 -1
  164. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +1 -1
  165. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +1 -1
  166. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +1 -1
  167. package/.output/server/chunks/routes/api/workshop/_...path_.mjs +1 -1
  168. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +1 -1
  169. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +1 -1
  170. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +1 -1
  171. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +1 -1
  172. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +1 -1
  173. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +1 -1
  174. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs +1 -1
  175. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs +1 -1
  176. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +1 -1
  177. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +2 -2
  178. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +1 -1
  179. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +1 -1
  180. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +1 -1
  181. package/.output/server/chunks/routes/api/workshop/agents/_id_.delete.mjs +1 -1
  182. package/.output/server/chunks/routes/api/workshop/agents/_id_.get.mjs +1 -1
  183. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +1 -1
  184. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +1 -1
  185. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +1 -1
  186. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +1 -1
  187. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +1 -1
  188. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +1 -1
  189. package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +1 -1
  190. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +1 -1
  191. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +1 -1
  192. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +1 -1
  193. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +1 -1
  194. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +1 -1
  195. package/.output/server/chunks/routes/api/workshop/aml/index2.get.mjs +1 -1
  196. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +1 -1
  197. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +1 -1
  198. package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs +1 -1
  199. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +1 -1
  200. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +1 -1
  201. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +1 -1
  202. package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs +1 -1
  203. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +1 -1
  204. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +1 -1
  205. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +1 -1
  206. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +1 -1
  207. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +1 -1
  208. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +1 -1
  209. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +1 -1
  210. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +1 -1
  211. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +1 -1
  212. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs +1 -1
  213. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs +1 -1
  214. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs +1 -1
  215. package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs +1 -1
  216. package/.output/server/chunks/routes/api/workshop/analysis/_id_.delete.mjs +1 -1
  217. package/.output/server/chunks/routes/api/workshop/analysis/_id_.get.mjs +1 -1
  218. package/.output/server/chunks/routes/api/workshop/analysis/_id_.patch.mjs +1 -1
  219. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +1 -1
  220. package/.output/server/chunks/routes/api/workshop/assets/character/_id_.delete.mjs +1 -1
  221. package/.output/server/chunks/routes/api/workshop/assets/devices/_id_.delete.mjs +1 -1
  222. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +1 -1
  223. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +1 -1
  224. package/.output/server/chunks/routes/api/workshop/assets/index2.get.mjs +1 -1
  225. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +1 -1
  226. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +1 -1
  227. package/.output/server/chunks/routes/api/workshop/caller.mjs +1 -1
  228. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +2 -2
  229. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.delete.mjs +1 -1
  230. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.get.mjs +1 -1
  231. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +1 -1
  232. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +1 -1
  233. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +1 -1
  234. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.get.mjs +1 -1
  235. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +1 -1
  236. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/_memoryId_.delete.mjs +1 -1
  237. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +1 -1
  238. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/model.patch.mjs +1 -1
  239. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/position.patch.mjs +1 -1
  240. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/range.patch.mjs +1 -1
  241. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/rotate-token.post.mjs +1 -1
  242. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/stop.post.mjs +1 -1
  243. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.delete.mjs +1 -1
  244. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +1 -1
  245. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs +1 -1
  246. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs +1 -1
  247. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/messages/_messageId/read.post.mjs +1 -1
  248. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/permissions.get.mjs +1 -1
  249. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +1 -1
  250. package/.output/server/chunks/routes/api/workshop/channels/_id/execution-mode.patch.mjs +1 -1
  251. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +1 -1
  252. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +1 -1
  253. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +1 -1
  254. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.get.mjs +1 -1
  255. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +1 -1
  256. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.put.mjs +1 -1
  257. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.get.mjs +1 -1
  258. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -1
  259. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +1 -1
  260. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -1
  261. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +1 -1
  262. package/.output/server/chunks/routes/api/workshop/channels/_id/index6.get.mjs +1 -1
  263. package/.output/server/chunks/routes/api/workshop/channels/_id/index7.get.mjs +1 -1
  264. package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs +1 -1
  265. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId/approve.post.mjs +1 -1
  266. package/.output/server/chunks/routes/api/workshop/channels/_id/members/_userId_.delete.mjs +1 -1
  267. package/.output/server/chunks/routes/api/workshop/channels/_id/members/join.post.mjs +1 -1
  268. package/.output/server/chunks/routes/api/workshop/channels/_id/members/leave.post.mjs +1 -1
  269. package/.output/server/chunks/routes/api/workshop/channels/_id/memories/_memoryId_.delete.mjs +1 -1
  270. package/.output/server/chunks/routes/api/workshop/channels/_id/queue.get.mjs +1 -1
  271. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -1
  272. package/.output/server/chunks/routes/api/workshop/channels/_id/tools/reset.post.mjs +1 -1
  273. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs +1 -1
  274. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs +1 -1
  275. package/.output/server/chunks/routes/api/workshop/channels/_id_.delete.mjs +1 -1
  276. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +1 -1
  277. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +1 -1
  278. package/.output/server/chunks/routes/api/workshop/channels.get.mjs +1 -1
  279. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +7 -7
  280. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -1
  281. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +1 -1
  282. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +1 -1
  283. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +1 -1
  284. package/.output/server/chunks/routes/api/workshop/daq/_id/ingest.post.mjs +2 -2
  285. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -1
  286. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +1 -1
  287. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +1 -1
  288. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +1 -1
  289. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +1 -1
  290. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +1 -1
  291. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +1 -1
  292. package/.output/server/chunks/routes/api/workshop/daq/export/_id_.get.mjs +1 -1
  293. package/.output/server/chunks/routes/api/workshop/daq/export-file.get.mjs +1 -1
  294. package/.output/server/chunks/routes/api/workshop/daq/index.get.mjs +1 -1
  295. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +1 -1
  296. package/.output/server/chunks/routes/api/workshop/daq/index2.post.mjs +1 -1
  297. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -1
  298. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
  299. package/.output/server/chunks/routes/api/workshop/daq/query.get.mjs +1 -1
  300. package/.output/server/chunks/routes/api/workshop/daq/storage/retention.put.mjs +1 -1
  301. package/.output/server/chunks/routes/api/workshop/daq/storage/rollup.post.mjs +1 -1
  302. package/.output/server/chunks/routes/api/workshop/daq/storage.get.mjs +1 -1
  303. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
  304. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
  305. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
  306. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
  307. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +1 -1
  308. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -1
  309. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
  310. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
  311. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
  312. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
  313. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
  314. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
  315. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -1
  316. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
  317. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
  318. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
  319. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -1
  320. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -1
  321. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +1 -1
  322. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
  323. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -1
  324. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +1 -1
  325. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +1 -1
  326. package/.output/server/chunks/routes/api/workshop/dcw/index7.get.mjs +1 -1
  327. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
  328. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -1
  329. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
  330. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
  331. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
  332. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +1 -1
  333. package/.output/server/chunks/routes/api/workshop/dcw/mes-artifacts/file.get.mjs +1 -1
  334. package/.output/server/chunks/routes/api/workshop/dcw/mes-hook-test.post.mjs +1 -1
  335. package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs +1 -1
  336. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
  337. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
  338. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -1
  339. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -1
  340. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +1 -1
  341. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +1 -1
  342. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +1 -1
  343. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +1 -1
  344. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
  345. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
  346. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
  347. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
  348. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +1 -1
  349. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
  350. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +1 -1
  351. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +2 -2
  352. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +1 -1
  353. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
  354. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
  355. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
  356. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  357. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  358. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
  359. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +1 -1
  360. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +1 -1
  361. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
  362. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +1 -1
  363. package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.delete.mjs +1 -1
  364. package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.get.mjs +1 -1
  365. package/.output/server/chunks/routes/api/workshop/eda/charts/_id_.patch.mjs +1 -1
  366. package/.output/server/chunks/routes/api/workshop/eda/commonality.get.mjs +1 -1
  367. package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.delete.mjs +1 -1
  368. package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.get.mjs +1 -1
  369. package/.output/server/chunks/routes/api/workshop/eda/dashboards/_id_.patch.mjs +1 -1
  370. package/.output/server/chunks/routes/api/workshop/eda/features/jobs.get.mjs +1 -1
  371. package/.output/server/chunks/routes/api/workshop/eda/features/run.post.mjs +1 -1
  372. package/.output/server/chunks/routes/api/workshop/eda/golden/_id_.delete.mjs +1 -1
  373. package/.output/server/chunks/routes/api/workshop/eda/golden/deviation.get.mjs +1 -1
  374. package/.output/server/chunks/routes/api/workshop/eda/golden/single.get.mjs +1 -1
  375. package/.output/server/chunks/routes/api/workshop/eda/index.get.mjs +1 -1
  376. package/.output/server/chunks/routes/api/workshop/eda/index.post.mjs +1 -1
  377. package/.output/server/chunks/routes/api/workshop/eda/index2.get.mjs +1 -1
  378. package/.output/server/chunks/routes/api/workshop/eda/index2.post.mjs +1 -1
  379. package/.output/server/chunks/routes/api/workshop/eda/index3.get.mjs +1 -1
  380. package/.output/server/chunks/routes/api/workshop/eda/index3.post.mjs +1 -1
  381. package/.output/server/chunks/routes/api/workshop/eda/index4.get.mjs +1 -1
  382. package/.output/server/chunks/routes/api/workshop/eda/index4.post.mjs +1 -1
  383. package/.output/server/chunks/routes/api/workshop/eda/index5.get.mjs +1 -1
  384. package/.output/server/chunks/routes/api/workshop/eda/index5.post.mjs +1 -1
  385. package/.output/server/chunks/routes/api/workshop/eda/index6.get.mjs +1 -1
  386. package/.output/server/chunks/routes/api/workshop/eda/index6.post.mjs +1 -1
  387. package/.output/server/chunks/routes/api/workshop/eda/index7.get.mjs +1 -1
  388. package/.output/server/chunks/routes/api/workshop/eda/index7.post.mjs +1 -1
  389. package/.output/server/chunks/routes/api/workshop/eda/index8.get.mjs +1 -1
  390. package/.output/server/chunks/routes/api/workshop/eda/index8.post.mjs +1 -1
  391. package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.get.mjs +1 -1
  392. package/.output/server/chunks/routes/api/workshop/eda/ocap/_id_.patch.mjs +1 -1
  393. package/.output/server/chunks/routes/api/workshop/eda/runs/_id/labels.patch.mjs +1 -1
  394. package/.output/server/chunks/routes/api/workshop/eda/runs.get.mjs +1 -1
  395. package/.output/server/chunks/routes/api/workshop/eda/spc/_id/recompute.post.mjs +1 -1
  396. package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.delete.mjs +1 -1
  397. package/.output/server/chunks/routes/api/workshop/eda/spc/_id_.get.mjs +1 -1
  398. package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.delete.mjs +1 -1
  399. package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.get.mjs +1 -1
  400. package/.output/server/chunks/routes/api/workshop/eda/templates/_id_.patch.mjs +1 -1
  401. package/.output/server/chunks/routes/api/workshop/eda/vm/predict.post.mjs +1 -1
  402. package/.output/server/chunks/routes/api/workshop/exp/confirmations/_id/decide.post.mjs +1 -1
  403. package/.output/server/chunks/routes/api/workshop/exp/index.get.mjs +1 -1
  404. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +1 -1
  405. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  406. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  407. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  408. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  409. package/.output/server/chunks/routes/api/workshop/index.get.mjs +1 -1
  410. package/.output/server/chunks/routes/api/workshop/index.mjs +1 -1
  411. package/.output/server/chunks/routes/api/workshop/index.post.mjs +1 -1
  412. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  413. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +1 -1
  414. package/.output/server/chunks/routes/api/workshop/index10.post.mjs +1 -1
  415. package/.output/server/chunks/routes/api/workshop/index11.get.mjs +1 -1
  416. package/.output/server/chunks/routes/api/workshop/index12.get.mjs +1 -1
  417. package/.output/server/chunks/routes/api/workshop/index13.get.mjs +1 -1
  418. package/.output/server/chunks/routes/api/workshop/index14.get.mjs +1 -1
  419. package/.output/server/chunks/routes/api/workshop/index15.get.mjs +1 -1
  420. package/.output/server/chunks/routes/api/workshop/index16.get.mjs +1 -1
  421. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +1 -1
  422. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -1
  423. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +1 -1
  424. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
  425. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +1 -1
  426. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
  427. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -1
  428. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -1
  429. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
  430. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
  431. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -1
  432. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +1 -1
  433. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +1 -1
  434. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +1 -1
  435. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +1 -1
  436. package/.output/server/chunks/routes/api/workshop/index9.post.mjs +1 -1
  437. package/.output/server/chunks/routes/api/workshop/mailbox/all.get.mjs +1 -1
  438. package/.output/server/chunks/routes/api/workshop/mailbox.get.mjs +1 -1
  439. package/.output/server/chunks/routes/api/workshop/memories/maintenance.post.mjs +1 -1
  440. package/.output/server/chunks/routes/api/workshop/mes/datasets.get.mjs +1 -1
  441. package/.output/server/chunks/routes/api/workshop/mes/index.get.mjs +1 -1
  442. package/.output/server/chunks/routes/api/workshop/mes/index.put.mjs +1 -1
  443. package/.output/server/chunks/routes/api/workshop/mes/points.get.mjs +1 -1
  444. package/.output/server/chunks/routes/api/workshop/mes/preview.post.mjs +1 -1
  445. package/.output/server/chunks/routes/api/workshop/mes/secrets/_ref_.delete.mjs +1 -1
  446. package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs +1 -1
  447. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/autofix.mjs +1 -1
  448. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/compile.mjs +1 -1
  449. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/evidence.mjs +1 -1
  450. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/publish.mjs +1 -1
  451. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval-decision.mjs +1 -1
  452. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval.mjs +1 -1
  453. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/transition.mjs +1 -1
  454. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/subgraph.mjs +1 -1
  455. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/validate.mjs +1 -1
  456. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId_.mjs +1 -1
  457. package/.output/server/chunks/routes/api/workshop/ontology/export/_ontologyId_.mjs +1 -1
  458. package/.output/server/chunks/routes/api/workshop/ontology/index.mjs +1 -1
  459. package/.output/server/chunks/routes/api/workshop/ontology/scene.mjs +1 -1
  460. package/.output/server/chunks/routes/api/workshop/ontology/traces/_ontologyId_.mjs +1 -1
  461. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId/compare.mjs +1 -1
  462. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId_.mjs +1 -1
  463. package/.output/server/chunks/routes/api/workshop/optimization/bindings/_id_.delete.mjs +1 -1
  464. package/.output/server/chunks/routes/api/workshop/optimization/capabilities.get.mjs +1 -1
  465. package/.output/server/chunks/routes/api/workshop/optimization/index.get.mjs +1 -1
  466. package/.output/server/chunks/routes/api/workshop/optimization/index.mjs +1 -1
  467. package/.output/server/chunks/routes/api/workshop/optimization/index2.mjs +1 -1
  468. package/.output/server/chunks/routes/api/workshop/optimization/profiles/_id/publish.post.mjs +1 -1
  469. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/crosscheck.post.mjs +1 -1
  470. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/dispatch.post.mjs +1 -1
  471. package/.output/server/chunks/routes/api/workshop/optimization/solve.post.mjs +1 -1
  472. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  473. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  474. package/.output/server/chunks/routes/api/workshop/plugins/index.get.mjs +1 -1
  475. package/.output/server/chunks/routes/api/workshop/process-model/datasets.post.mjs +1 -1
  476. package/.output/server/chunks/routes/api/workshop/process-model/eligibility.mjs +1 -1
  477. package/.output/server/chunks/routes/api/workshop/process-model/experiments.mjs +305 -20
  478. package/.output/server/chunks/routes/api/workshop/process-model/experiments.mjs.map +1 -1
  479. package/.output/server/chunks/routes/api/workshop/process-model/index.mjs +1 -1
  480. package/.output/server/chunks/routes/api/workshop/process-model/specs/_id/publish.post.mjs +1 -1
  481. package/.output/server/chunks/routes/api/workshop/process-model/train.post.mjs +1 -1
  482. package/.output/server/chunks/routes/api/workshop/runtime.get.mjs +1 -1
  483. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  484. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  485. package/.output/server/chunks/routes/api/workshop/scene/layouts.get.mjs +1 -1
  486. package/.output/server/chunks/routes/api/workshop/schedules/_id/run.post.mjs +1 -1
  487. package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs +1 -1
  488. package/.output/server/chunks/routes/api/workshop/schedules/_id_.delete.mjs +1 -1
  489. package/.output/server/chunks/routes/api/workshop/schedules/_id_.get.mjs +1 -1
  490. package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs +1 -1
  491. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +1 -1
  492. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +1 -1
  493. package/.output/server/chunks/routes/api/workshop/tasks/_id/index.post.mjs +1 -1
  494. package/.output/server/chunks/routes/api/workshop/tasks/_id/reassign.post.mjs +1 -1
  495. package/.output/server/chunks/routes/api/workshop/tasks/_id/reopen.post.mjs +1 -1
  496. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +1 -1
  497. package/.output/server/chunks/routes/api/workshop/tasks/_id/retry.post.mjs +1 -1
  498. package/.output/server/chunks/routes/api/workshop/tasks/_id/supersede.post.mjs +1 -1
  499. package/.output/server/chunks/routes/api/workshop/tasks/_id/update.post.mjs +1 -1
  500. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +1 -1
  501. package/.output/server/chunks/routes/api/workshop/tasks.get.mjs +1 -1
  502. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +1 -1
  503. package/.output/server/chunks/routes/api/workshop/teams/_id/index.get.mjs +1 -1
  504. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +1 -1
  505. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +1 -1
  506. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +1 -1
  507. package/.output/server/chunks/routes/api/workshop/teams/_id/members/_agentId_.delete.mjs +1 -1
  508. package/.output/server/chunks/routes/api/workshop/teams/_id_.delete.mjs +1 -1
  509. package/.output/server/chunks/routes/api/workshop/teams/_id_.get.mjs +1 -1
  510. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +1 -1
  511. package/.output/server/chunks/routes/api/workshop/tools/_name_.get.mjs +1 -1
  512. package/.output/server/chunks/routes/api/workshop/tools/sync.post.mjs +1 -1
  513. package/.output/server/chunks/routes/api/workshop/users/me.get.mjs +1 -1
  514. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +1 -1
  515. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +2 -2
  516. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.delete.mjs +1 -1
  517. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channels/_channelId_.post.mjs +1 -1
  518. package/.output/server/chunks/routes/api/workshop/workspaces/index.delete.mjs +1 -1
  519. package/.output/server/chunks/routes/renderer.mjs +2 -2
  520. package/.output/server/chunks/virtual/entry.mjs +5 -1
  521. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  522. package/.output/server/index.mjs +1 -1
  523. package/.output/server/package.json +1 -1
  524. package/README-zh.md +3 -3
  525. package/README.md +3 -3
  526. package/config.yml +1 -1
  527. package/docs/aml.md +112 -112
  528. package/docs/cli.en.md +4 -4
  529. package/docs/cli.md +3 -3
  530. package/docs/plugins.en.md +1 -1
  531. package/docs/plugins.md +1 -1
  532. package/docs/sdk.en.md +1 -1
  533. package/docs/sdk.md +1 -1
  534. package/i18n/locales/en.ts +2 -0
  535. package/i18n/locales/zh-CN.ts +2 -0
  536. package/package.json +1 -1
  537. package/scripts/_audit/demo-shot-studio.mjs +37 -0
  538. package/scripts/_audit/demo-shots.mjs +38 -0
  539. package/scripts/_audit/gen-demo-report.py +69 -0
  540. package/scripts/_audit/mqtt-pub.mjs +13 -0
  541. package/scripts/_audit/mqtt-topic-probe.mjs +15 -0
  542. package/scripts/_audit/proto-b3-device-4021.mjs +90 -0
  543. package/scripts/_audit/proto-doc-device-4120.mjs +53 -0
  544. package/scripts/acceptance-scientific-loop.ts +224 -0
  545. package/scripts/generate-identifiability-fixtures.ts +98 -0
  546. package/server/api/workshop/process-model/experiments.ts +28 -2
  547. package/server/plugins-builtin/diag-bridge/host/plugin.mjs +759 -753
  548. package/server/plugins-builtin/rag-bridge/index.mjs +490 -484
  549. package/server/repositories/user.repository.ts +24 -1
  550. package/server/services/user.service.ts +8 -6
  551. package/server/services/workshop/agents/host-tool-bridge/catalog.ts +2 -0
  552. package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +4 -1
  553. package/server/services/workshop/agents/host-tool-bridge/tools/messaging.ts +5 -1
  554. package/server/services/workshop/agents/industrial/aml-dataset-tools.ts +3 -0
  555. package/server/services/workshop/agents/industrial/bench-approval-only.ts +335 -58
  556. package/server/services/workshop/agents/industrial/dcw-tools.ts +7 -1
  557. package/server/services/workshop/agents/industrial/identifiability-tools.ts +247 -0
  558. package/server/services/workshop/agents/industrial/index.ts +1 -0
  559. package/server/services/workshop/agents/industrial/manual-approval.ts +3 -1
  560. package/server/services/workshop/agents/industrial/ops-tools.ts +58 -15
  561. package/server/services/workshop/agents/industrial/optimization-tools.ts +33 -19
  562. package/server/services/workshop/agents/plugin-governance.ts +22 -2
  563. package/server/services/workshop/aml/action-coverage.ts +253 -0
  564. package/server/services/workshop/aml/causal-claim.ts +68 -0
  565. package/server/services/workshop/aml/dataset-builder.ts +19 -0
  566. package/server/services/workshop/aml/gates.ts +45 -1
  567. package/server/services/workshop/aml/identifiability.ts +335 -0
  568. package/server/services/workshop/aml/intervention-ledger.ts +281 -0
  569. package/server/services/workshop/aml/ontology-learning.ts +143 -0
  570. package/server/services/workshop/aml/twin/cross-check.ts +176 -0
  571. package/server/services/workshop/daq/daq-controller/contracts.ts +3 -0
  572. package/server/services/workshop/daq/daq-controller/crud.ts +12 -2
  573. package/server/services/workshop/daq/daq-controller/push.ts +22 -0
  574. package/server/services/workshop/daq/drivers/mqtt.ts +28 -0
  575. package/server/services/workshop/daq/drivers/shared.ts +6 -0
  576. package/server/services/workshop/db/database/open.ts +2 -0
  577. package/server/services/workshop/db/database/rows.ts +4 -1
  578. package/server/services/workshop/db/database/schema.ts +38 -2
  579. package/server/services/workshop/db/message.repo.ts +10 -3
  580. package/server/services/workshop/dcw/dcw-controller/write-audit.ts +21 -1
  581. package/server/services/workshop/process-model/experiment-runner.ts +393 -0
  582. package/server/services/workshop/process-model/experiment.ts +25 -10
  583. package/server/services/workshop/runtime/agent-runtime/lifecycle.ts +34 -11
  584. package/server/services/workshop/runtime/agent-runtime/state.ts +6 -1
  585. package/server/services/workshop/settings.ts +4 -1
  586. package/server/services/workshop/types/a2a.ts +16 -1
  587. package/shared/config/schema.json +2 -0
  588. package/shared/dcw-protocol/closed-loop.ts +2 -0
  589. package/.output/public/_nuxt/builds/meta/1231252d-2864-43c0-83b2-4e70d3b86dea.json +0 -1
@@ -1,10 +1,10 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./B_Obcbiu.js","./DK3Fl9T5.js","./CavpkQb0.js","./R5Pz7BqB.js","./BqFaZ4kS.js","./C6lssmvl.js","./BkSViqQd.js","./Cn6EojFe.js","./B6C4WofF.js","./JegDslce.js","./HclGiUj8.js","./D1MkndMZ.js","./DXgw1dVL.js","./ri9UF8rk.js","./CznnUTZx.js","./CUCFFL9m.js","./eePbiWEh.js","./CElzwyXQ.js","./CDYLasP8.js","./rxhDcyfF.js","./DjGYvFyA.js","./B6Olw0Op.js","./D7TZLu4F.js","./2v5GdspM.js","./CnYazk8d.js","./36oeS8_R.js","./DOT-XQyi.js","./XqXoaoDs.js","./SvjzWbn8.js","./B6UwtJ1a.js","./CLFmtXU7.js","./BtZKe9ZV2.js","./9j2J4k4w.js","./B37d6f-P2.js","./CZgxZE_w2.js","./MJD65-MH2.js","./R1g64DNi2.js","./CfE35xQa2.js","./D9saExk92.js","./BclHgAY62.js","./BtumQhZK.js","./D83nVQPl.js","./11Nifltq2.js","./DNlwacP72.js","./BEbg8OxK2.js","./Du9v6qGB2.js","./D-80EfyA2.js","./Df35i2Tg2.js","./DPIImHuY2.js","./DzPypczG.js","./DW6X-3XT.js","./DvfiRGS-.js","./B8vwpJxO.js","./CwHhmA3N.js","./CBpkE3Aa.js","./DDLi49qE.js","./CuHnwZbm.js","./CoAJnzi9.js","./IXR1BWP5.js","./BoyuIoSm.js","./Cv-Mv7_h2.js","./Ch1P2mIf.js","./C0I4h6do.js","./C-wrWG5m.js","./CHpYSwnV.js","./FQK98hkN2.js","./WZrTmJqL.js","./BFUO7wT0.js","./C14pM5G4.js","./CnrGVJIr.js","./DudoisLM.js","./CYLe9LKr.js","./BmBlIIJo2.js","./CtcBhkci.js","./Cgym6fLd2.js","./DYQBIsiV2.js","./Aoz9xMB92.js","./Zkbt8Uk5.js","./Ud9o8ItR2.js","./BBhLVYdM2.js","./Br_q4qi72.js","./6P4ZAzxa2.js","./DH_oqyfL.js","./fIV9zbnA.js","./DmReUFK1.js","./BY2u4LPg.js","./TOWR4WpO.js","./BSxcHoiy.js","./m6G-kfdj.js","./cKj4vSo5.js","./CZsFf7ck.js","./DoL9u6wu.js","./NfvZ5Lzv.js","./DiloA8vK.js","./Du7gS8RU.js","./BRci9D_l.js","./BfgTar9L.js","./DC-2eKo62.js","./BwQJEuBn.js","./Bko5adbu.js","./Bmvt9ydE.js","./BYzim_Bn.js","./CC-GEjfN.js","./CQuo31jF.js","./D7tEwf-o.js","./CCcMgxV9.js","./hZG5MLjK.js","./KzK37yIr.js","./POTcePF_.js","./D9lL3fJM2.js","./GQrEW8nk2.js","./D__vJGHF2.js","./gh-WMxV_2.js","./CHk9XxNi.js","./BklGqEto2.js","./vkQoYNQR2.js","./-FhgRqJl2.js","./CzlZrfq82.js","./lO5tpDZ52.js","./eymRov9Y2.js","./BwWs9EdO2.js","./rF7mggl72.js","./C4e6_nom2.js","./vp3LtnTz2.js","./YLYSczSq2.js","./BBB_j2LU2.js","./CFQRFctQ2.js","./8M7wFbEN2.js","./BDNMzG2s.js","./Cjo1t2IF.js","./CNs_Ozdc.js","./rDvMijKA.js","./OmpTerminalPanel.ComMDrA8.css","./DvGgUSuN2.js","./BBrRELH3.js","./BrRX-l9B.js","./dVw8IHY62.js","./TownView.B_8ctigh.css","./_wsId_.CQMH8t8j.css","./ilJHF1nA2.js","./C5x3IQz42.js","./CPvFGbr8.js","./DPPC9Teq.js","./DKOvbitt.js","./DWy0AjON.js","./k9b520K-.js","./Co8Dcx132.js","./AQuNRC4D.js","./DPvZxAt02.js","./C0Db9tR_2.js","./board.BxLE52BL.css","./yS3bF3G32.js","./pipeline.D7et0DoJ.css","./CjdxNYpU2.js","./u3h4pGpm.js","./BKidykmV2.js","./DZsKIzKD2.js","./kZl6yT-12.js","./DGGBrc0q2.js","./agents.D-JPovTZ.css","./tDEwr422.js","./channel-templates.DgiL0L16.css","./BwOko01T.js","./DaizNGUm2.js","./schedules.BXNJ9q_I.css","./DZqVVvR0.js","./teams.CLQaXno5.css","./DZc-zU-H2.js","./_id_.DSbZhSO1.css","./CEOSV8kw.js","./_id_.BQRWK7J2.css","./BaYDgyaR.js","./CfIbFnJz.js","./aml.PalMp-5n.css","./gfKPQ5o72.js","./analysis.CqR_dfoW.css","./Lq_0yoit2.js","./daq.BUeQwO2J.css","./-gwj-zlk2.js","./data.jRO2K9JI.css","./BkZomIrQ.js","./dcw.n8O0ptzV.css","./CjhzuymI.js","./logs.DlG85QRw.css","./BfvuWqSa.js","./BK4wbfGS.js","./jDuiDtGb.js","./CRCrWy-6.js","./BxHBIVAg.js","./monitor.D3yEqqrv.css","./D8AvmPUH.js","./ontology.CkuUThtY.css","./C0wjQa6_.js","./DRskyE7l.js","./operations.-l6u44Ar.css","./BPUQZ9Lq2.js","./optimizer.CLA8I1sy.css","./26OL4Ao82.js","./permissions.DxuOOIqQ.css","./BVg2R2VB2.js","./CmuGMxDP.js","./N-CCmCsX.js","./PluginSlot.CGH0vb95.css","./plugins.D3bf5Gg3.css","./CBkXv24C2.js","./DNxudyND.js","./settings.CXju_jh-.css","./CNRjkgAZ2.js","./studio.ClA5gX4K.css","./DuUc4bbY2.js","./ByTnUqFw2.js","./Dt8TL8_X2.js","./DkJVtqfc2.js","./DW4ZgInh2.js","./DwgVlehj2.js","./tokens.BDSUWF-L.css","./byZYInPk2.js","./tools.BwXFAb-X.css","./C7BcCB7C2.js","./town.BBXZmeoP.css","./DhLlTxQh2.js","./users.DBxcKnfg.css","./dHwWyr6b.js","./CMJi6yYS.js","./AuthGate.72Jdc4d6.css","./workshop.BBiFhXuM.css","./D1Ljnzu-.js","./pages.Cdpm_B-G.css","./BkEokGX5.js","./D_FZ3KZI2.js","./default.BEXGWZFQ.css","./B8HFUsMH.js","./town.DFotRPod.css"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./DK3Fl9T5.js";import{a as t,i as n,l as r,n as i,o as a,r as o,s,t as c}from"./BqFaZ4kS.js";import{C as l,N as u,S as d,a as f,b as p,g as m,l as h,mt as g,u as _,v}from"./CavpkQb0.js";import{A as y,D as b,H as x,J as S,L as C,O as w,P as T,S as E,T as D,V as O,a as ee,b as k,d as A,f as j,h as te,i as ne,j as re,m as ie,nt as ae,o as M,p as N,rt as oe,tt as P,x as se,y as ce}from"./C6lssmvl.js";import{i as le,r as ue}from"./ri9UF8rk.js";import{i as de,l as fe,r as pe,t as me,u as he}from"./BkSViqQd.js";import{t as ge}from"./rxhDcyfF.js";import{_ as _e,a as ve,c as ye,d as be,g as xe,i as Se,l as Ce,m as F,n as we,o as Te,p as Ee,r as De,s as Oe,t as ke,v as Ae,y as je}from"./CDYLasP8.js";import{_ as Me,a as Ne,c as Pe,g as Fe,h as Ie,i as Le,l as Re,m as ze,o as Be,p as Ve,r as He,u as Ue}from"./DjGYvFyA.js";import{a as We,c as Ge,n as Ke,o as qe,r as Je,s as Ye,t as I}from"./BoyuIoSm.js";import{a as Xe,c as Ze,d as Qe,f as $e,i as et,l as tt,n as nt,o as rt,r as it,s as at,u as ot}from"./Bko5adbu.js";import{n as st,t as ct}from"./XqXoaoDs.js";import{a as lt,c as ut,i as dt,l as ft,n as pt,o as mt,r as ht,s as gt,t as _t,u as vt}from"./CPvFGbr8.js";import{b as yt,i as bt}from"./D83nVQPl.js";import{a as xt,i as St,n as Ct,t as wt}from"./BtumQhZK.js";import{n as Tt,t as Et}from"./BYzim_Bn.js";import{i as Dt,o as Ot,s as L}from"./DPPC9Teq.js";import{t as R}from"./HclGiUj8.js";import{a as kt,c as z,i as At,l as jt,n as Mt,o as Nt,r as Pt,s as Ft,t as It}from"./D1MkndMZ.js";import{t as Lt}from"./CElzwyXQ.js";import{t as Rt}from"./N-CCmCsX.js";import{t as zt}from"./36oeS8_R.js";import{R as Bt,jt as Vt}from"./CznnUTZx.js";import{i as Ht,r as Ut}from"./DXgw1dVL.js";import{t as Wt}from"./kZl6yT-12.js";import{n as Gt,t as Kt}from"./D_FZ3KZI2.js";import{t as qt}from"./Cv-Mv7_h2.js";import{t as Jt}from"./DNxudyND.js";import{t as Yt}from"./DKOvbitt.js";import{t as Xt}from"./BDNMzG2s.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),`global`in globalThis||(globalThis.global=globalThis);function Zt(e,t){return t&&typeof e==`function`&&(e.key=t),e}var Qt=/\\/g,$t=/</g,en=/"/g,tn=/%\w+(?:\.\w+)?/g,nn=`%separator`;function rn(e,t,n=!1){let r;if(t===`s`||t===`pageTitle`)r=e.pageTitle;else if(t.includes(`.`)){let n=t.indexOf(`.`);r=e[t.substring(0,n)]?.[t.substring(n+1)]}else r=e[t];if(r!==void 0)return n?(r||``).replace(Qt,`\\\\`).replace($t,`\\u003C`).replace(en,`\\"`):r||``}function an(e,t,n,r=!1){if(typeof e!=`string`||!e.includes(`%`))return e;let i=e;try{i=decodeURI(e)}catch{}let a=i.match(tn);if(!a)return e;let o=e.includes(nn);return e=e.replace(tn,e=>{if(e===nn||!a.includes(e))return e;let n=rn(t,e.slice(1),r);return n===void 0?e:n}).trim(),o&&(e=e.split(nn).map(e=>e.trim()).filter(e=>e!==``).join(n?` ${n} `:` `)),e}var on=(e,t)=>e._w===t._w?e._p-t._p:e._w-t._w,sn=e=>e.includes(`:key`)?e:e.split(`:`).join(`:key:`),cn=Zt({key:`aliasSorting`,hooks:{"tags:resolve":e=>{let t=!1;for(let n of e.tags){let r=n.tagPriority;if(!r)continue;let i=String(r);if(i.startsWith(`before:`)){let r=sn(i.slice(7)),a=e.tagMap.get(r);a&&(typeof a.tagPriority==`number`&&(n.tagPriority=a.tagPriority),n._p=a._p-1,t=!0)}else if(i.startsWith(`after:`)){let r=sn(i.slice(6)),a=e.tagMap.get(r);a&&(typeof a.tagPriority==`number`&&(n.tagPriority=a.tagPriority),n._p=a._p+1,t=!0)}}t&&(e.tags=e.tags.sort(on))}}}),ln=Zt({key:`deprecations`,hooks:{"entries:normalize":({tags:e})=>{for(let t of e)t.props.children&&(t.innerHTML=t.props.children,delete t.props.children),t.props.hid&&(t.key=t.props.hid,delete t.props.hid),t.props.vmid&&(t.key=t.props.vmid,delete t.props.vmid),`body`in t.props&&(t.props.body&&(t.tagPosition=`bodyClose`),delete t.props.body),t.props.renderPriority!=null&&(t.tagPriority=t.props.renderPriority,delete t.props.renderPriority)}}});function un(e){return typeof e?.then==`function`}function dn(e){if(typeof e==`function`)return e;if(un(e))return Promise.resolve(e).then(dn);if(Array.isArray(e)){let t=e.map(dn);return t.some(un)?Promise.all(t):e}if(e?.constructor===Object){let t=Object.keys(e),n=t.map(t=>dn(e[t]));if(n.some(un))return Promise.all(n).then(e=>Object.fromEntries(t.map((t,n)=>[t,e[n]])))}return e}var fn=Zt(e=>{let t=new WeakMap;return{key:`promises`,hooks:{"entries:resolve":n=>{for(let r=n.entries.length-1;r>=0;r--){let i=n.entries[r],a=i.input;if(t.get(i)===a){n.entries.splice(r,1);continue}let o=dn(a);if(!un(o)){t.delete(i);continue}t.set(i,a),n.entries.splice(r,1),Promise.resolve(o).then(n=>{t.get(i)===a&&(t.delete(i),i.input=n,delete i._tags,e.invalidate?.())},()=>{t.get(i)===a&&t.delete(i)})}}}}},`promises`),pn={meta:`content`,link:`href`,htmlAttrs:`lang`},mn=[`innerHTML`,`textContent`],hn=Zt(e=>({key:`template-params`,hooks:{"tags:resolve":({tagMap:t,tags:n})=>{let r=t.get(`templateParams`)?.props||{},i=r.separator||`|`;delete r.separator,r.pageTitle=an(r.pageTitle||e._title||``,r,i);for(let e of n){if(e.processTemplateParams===!1)continue;let t=pn[e.tag];if(t&&typeof e.props[t]==`string`)e.props[t]=an(e.props[t],r,i);else if(e.processTemplateParams||e.tag===`titleTemplate`||e.tag===`title`)for(let t of mn)typeof e[t]==`string`&&(e[t]=an(e[t],r,i,e.tag===`script`&&typeof e.props.type==`string`&&e.props.type.endsWith(`json`)))}e._templateParams=r,e._separator=i},"tags:afterResolve":({tagMap:t})=>{let n=t.get(`title`);n?.textContent&&n.processTemplateParams!==!1&&(n.textContent=an(n.textContent,e._templateParams,e._separator))}}}),`template-params`);function gn(e,t){if(typeof t==`function`&&t.key&&e.plugins.has(t.key))return;let n=typeof t==`function`?t(e):t,r=n.key||String(e.plugins.size+1);if(!e.plugins.get(r)){e.plugins.set(r,n);for(let t in n.hooks||{})e.hooks?.hook(t,n.hooks[t])}}function _n(e,t={}){let n=!t.document,r=new Map,i={_entryCount:1,_h:0,plugins:new Map,resolvedOptions:t,ssr:n,entries:r,hooks:void 0,render:()=>e(i),use:e=>gn(i,e),push(e,t){let a=t?._index??i._entryCount++,o=t?{...t}:{};delete o.head,delete o.onRendered,delete o._index;let s={_i:a,input:e,options:o};return r.set(a,s),{_i:a,dispose(){r.delete(a)},patch(e){n?(s.input=e,delete s._tags):s._pending=e,r.has(a)||r.set(a,s)}}}};return t.init?.forEach(e=>e&&i.push(e)),i}var vn=n(()=>{dt(`skipHydrate`,e=>!qe(e)&&1),lt(`skipHydrate`,e=>void 0)});function yn(e){try{return JSON.parse(e)}catch{return e}}var bn=[[`NuxtError`,e=>Se(e)],[`EmptyShallowRef`,e=>d(e===`_`?void 0:e===`0n`?BigInt(0):yn(e))],[`EmptyRef`,e=>v(e===`_`?void 0:e===`0n`?BigInt(0):yn(e))],[`ShallowRef`,e=>d(e)],[`ShallowReactive`,e=>p(e)],[`Ref`,e=>v(e)],[`Reactive`,e=>m(e)]],xn=o({name:`nuxt:revive-payload:client`,order:-30,async setup(e){let t,n;for(let[e,t]of bn)lt(e,t);Object.assign(e.payload,([t,n]=s(()=>e.runWithContext(mt)),t=await t,n(),t)),delete window.__NUXT__}},1);function Sn(e,t){t.push(me),e.vueApp.use(t);let n=!0,r=()=>{n=!1,t.render()};t.hooks?.hook(`dom:beforeRender`,e=>{e.shouldRender=!n}),e.hooks.hook(`page:start`,()=>{n=!0}),e.hooks.hook(`page:finish`,()=>{e.isHydrating||r()}),e.hooks.hook(`app:error`,r),e.hooks.hook(`app:suspense:resolve`,r);let i=t.push.bind(t);t.push=((t,n)=>{let r=i(t,n),a=r.dispose.bind(r);return r.dispose=()=>{let t=e[`~transitionPromise`];t?t.finally(a):a()},r})}function Cn(e,t,n){let r=e.push,i=e;return i.ssr=!1,i.hooks=t,i.dirty=!!i.dirty,i.use=e=>gn(i,e),i.render=()=>n(i),i.invalidate=()=>{for(let e of i.entries.values())delete e._tags;i.dirty=!0,t.callHook(`entries:updated`,i)},i.push=(n,a)=>{let o=a?.onRendered?t.hook(`dom:rendered`,a.onRendered):void 0,s=r(n,a),c=e.entries.get(s._i);return c&&(c._o=n),i.dirty=!0,t.callHook(`entries:updated`,i),{_i:s._i,patch(e){s.patch(e),i.dirty=!0,t.callHook(`entries:updated`,i)},dispose(){o?.(),e.entries.has(s._i)&&(s.dispose(),i.invalidate())}}},t.hook(`entries:updated`,()=>{i.render()}),i}var wn=/\s+/;function Tn(e={}){return t=>kn(t,e)}function En(e){for(let t of e.entries.values())if(t._pending!==void 0)return!0;return!1}function Dn(e){for(let t in e._s)e._s[t]();for(let t in e._p)e._p[t]();e._s={},e._p={},e._e.clear(),e._l.clear()}function On(e,t){let n={_d:t,_t:t.title,_e:new Map([[`htmlAttrs`,t.documentElement],[`bodyAttrs`,t.body]]),_p:{},_s:{},_l:new Map};for(let e of[...t.body.children,...t.head.children]){let t=e.tagName.toLowerCase();if(!Qe.has(t))continue;let r={innerHTML:e.innerHTML};for(let t of e.getAttributeNames())r[t]=e.getAttribute(t);let i=at({tag:t,props:{}},r);i.key=e.getAttribute(`data-hid`)||void 0;let a=et(i)||Xe(i),o=a,s=1;for(;n._e.has(o);)o=`${a}:${s++}`;n._e.set(o,e)}for(let t of e.entries.values())if(t._o!==void 0){let e=t._o;for(let t of[`bodyAttrs`,`htmlAttrs`]){let r=e[t]?.class;if(typeof r==`string`){let e=n._e.get(t);for(let i of r.split(wn))i&&(n._p[`${t}:attr:class:${i}`]=()=>e.classList.remove(i))}}}return n}function kn(e,t={}){let n=t.document||e.resolvedOptions.document,r=e._dom,i=!!r&&r._d!==n;if(!n||r&&!i&&!e.dirty&&!En(e)||e._du)return!1;let a=n.defaultView;e._du=!0;let o=!1;try{let r=function(e,t,n,r){let i=`${e}:${t}`;d._s[i]=!r&&d._p[i]||n,delete d._p[i]},i=function(e){let t=d._p[e];return delete d._p[e],t},s=function(e,t,n,i,a,o){let s=`event:${t}`,c=`${e}:${s}`,l=d._l.get(c);if(l&&l[0]===o&&l[1]===n&&l[2]===i){r(e,s,l[4]);return}l?.[4]();let u=`data-${t}`,f=(e=>i.call(a,e)),p=()=>{o.removeEventListener(n,f),a.getAttribute(u)===``&&a.removeAttribute(u),d._l.get(c)?.[3]===f&&d._l.delete(c)};o.addEventListener(n,f),d._l.set(c,[o,n,i,f,p]),a.setAttribute(u,``),r(e,s,p,!0)},c=function({id:e,$el:t,tag:n}){let o=n.tag.endsWith(`Attrs`);if(d._e.set(e,t),!o){let a=n.textContent;a!=null&&a!==``&&(a!==t.textContent&&(t.textContent=a),r(e,`text`,()=>{t.textContent===a&&(t.textContent=``)},!0));let o=n.innerHTML;o!=null&&o!==``&&(o!==t.innerHTML&&(t.innerHTML=o),r(e,`html`,()=>{t.innerHTML===o&&(t.innerHTML=``)},!0));let s=`${e}:el`;d._s[s]=i(s)||(()=>{t?.remove(),d._e.delete(e)})}for(let r in n.props){let o=n.props[r];if(r[0]===`o`&&r[1]===`n`&&typeof o==`function`){let i=r.slice(2);t?.dataset?.[`${r}fired`]&&o.call(t,new((a?.Event)||Event)(i)),s(e,r,i,o,t,n.tag===`bodyAttrs`&&a?a:t);continue}let c=`${e}:attr:${r}`;if(r===`class`&&o)for(let e of o){let n=`${c}:${e}`;d._s[n]=i(n)||(()=>t.classList.remove(e)),t.classList.contains(e)||t.classList.add(e)}else if(r===`style`&&o)for(let[e,n]of o){let r=`${c}:${e}`;d._s[r]=i(r)||(()=>t.style.removeProperty(e)),t.style.setProperty(e,n)}else o!==!1&&o!==null&&(t.getAttribute(r)!==o&&t.setAttribute(r,o===!0?``:String(o)),d._s[c]=i(c)||(()=>t.removeAttribute(r)))}},l={shouldRender:!0,tags:[]};if(tt(e,`dom:beforeRender`,l),!l.shouldRender)return!1;let u=e._dom;u?._d!==n&&(u&&Dn(u),u=void 0),u?u._p=u._s:u=On(e,n),u._s={};let d=u,f=[],p={};e.dirty=!1;let m=Ze(e,t.tagWeight?{tagWeight:t.tagWeight}:void 0),h=[],g={};for(let e of m){let t=g[e._d]||0,i=(t?`${e._d}:${t}`:e._d)||e._h,a={tag:e,id:i,shouldRender:!0};if(e.tag===`meta`&&e._d&&rt(e._d)&&(g[e._d]=t+1),h.push(a),e.tag===`title`){n.title=e.textContent,r(`title`,``,()=>n.title=d._t);continue}a.$el=d._e.get(i),a.$el?c(a):Qe.has(e.tag)&&f.push(a)}for(let e of f)e.$el=n.createElement(e.tag.tag),c(e),(p[e.tag.tagPosition||`head`]??=n.createDocumentFragment()).appendChild(e.$el);p.head&&n.head.appendChild(p.head),p.bodyOpen&&n.body.insertBefore(p.bodyOpen,n.body.firstChild),p.bodyClose&&n.body.appendChild(p.bodyClose);for(let e in d._p)d._p[e]();e._dom=d,o=!0,tt(e,`dom:rendered`,{renders:h})}catch(t){throw e.dirty=!0,t}finally{e._du=!1}return o&&(e.dirty||En(e))&&kn(e,t),o}var An=e=>typeof e.tagPriority==`number`?e.tagPriority:100+($e[e.tagPriority]||0);function jn(e={}){e.document=e.document||(typeof window<`u`?document:void 0);let t=e.render||Tn({document:e.document}),n=Cn(_n(t,{document:e.document,propResolvers:e.propResolvers,_tagWeight:An,init:[]}),ot(e.hooks),t);return e.plugins?.forEach(e=>n.use(e)),e.init?.forEach(e=>e&&n.push(e)),n}function Mn(e={}){let t=Tn(),n,r=0;return n=jn({render:()=>{let e=++r;setTimeout(()=>{e===r&&t(n)},0)},...e}),n.install=it(n),n}var Nn={disableDefaults:!0,plugins:[ln,fn,hn,cn]},Pn=o({name:`nuxt:head`,enforce:`pre`,setup(e){Sn(e,Mn(Nn))}}),Fn=/(:\w+)\([^)]+\)/g,In=/(:\w+)[?+*]/g,Ln=/:\w+/g,Rn=(e,t)=>t.path.replace(Fn,`$1`).replace(In,`$1`).replace(Ln,t=>e.params[t.slice(1)]?.toString()||``),zn=(e,t)=>{let n=e.route.matched.find(t=>t.components?.default===e.Component.type),r=t??n?.meta.key??(n&&Rn(e.route,n));return typeof r==`function`?r(e.route):r},Bn=(e,t)=>({default:()=>e?D(ee,e===!0?{}:e,t):t});function Vn(e){return Array.isArray(e)?e:[e]}var Hn=[Ce(async e=>{let t,n;if(!e.meta?.validate)return;let r=([t,n]=s(()=>Promise.resolve(e.meta.validate(e))),t=await t,n(),t);if(r!==!0)return Se({fatal:!0,status:r&&(r.status||r.statusCode)||404,statusText:r&&(r.statusText||r.statusMessage)||`Page Not Found: ${e.fullPath}`,data:{path:e.fullPath}})},1),Ce(async()=>{let e,n,r=I(`aw.locale`).value;if(r!==`en`&&r!==`zh-CN`)return;let i=t().$i18n;i&&r!==i.locale.value&&([e,n]=s(()=>i.setLocale(r)),e=await e,n())},1),Ce(e=>{let t=vt({path:e.path});if(t.redirect){let n=t.redirect.includes(`#`)?t.redirect:t.redirect+e.hash;return He(n,{acceptRelative:!0})?(window.location.href=n,!1):n}})],Un={},Wn=[{name:`aml-composables-useAmlDatasets`,path:`/aml/composables/useAmlDatasets`,component:()=>R(()=>import(`./B_Obcbiu.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url)},{name:`aml-composables-useAmlEntities`,path:`/aml/composables/useAmlEntities`,component:()=>R(()=>import(`./JegDslce.js`).then(e=>e.n),__vite__mapDeps([9,1,10,11,2,5,12,13,14,15,3,4,6,7,8]),import.meta.url)},{name:`aml-composables-useAmlEnv`,path:`/aml/composables/useAmlEnv`,component:()=>R(()=>import(`./eePbiWEh.js`).then(e=>e.n),__vite__mapDeps([16,1,2,5,11,17,18,4,6,19,20,12,13,14,15,3,7,8,21]),import.meta.url)},{name:`aml-composables-useAmlExperiments`,path:`/aml/composables/useAmlExperiments`,component:()=>R(()=>import(`./D7TZLu4F.js`).then(e=>e.n),__vite__mapDeps([22,1,2,5,3,4,6,7,8]),import.meta.url)},{name:`aml-composables-useAmlFormat`,path:`/aml/composables/useAmlFormat`,component:()=>R(()=>import(`./2v5GdspM.js`).then(e=>e.n),__vite__mapDeps([23,1,11,2,5,21]),import.meta.url)},{name:`aml-composables-useAmlJobs`,path:`/aml/composables/useAmlJobs`,component:()=>R(()=>import(`./CnYazk8d.js`).then(e=>e.n),__vite__mapDeps([24,1,2,5,11,25,12,13,14,15,3,4,6,26,27,19,7,8,23,21]),import.meta.url)},{name:`aml-composables-useAmlModels`,path:`/aml/composables/useAmlModels`,component:()=>R(()=>import(`./SvjzWbn8.js`).then(e=>e.n),__vite__mapDeps([28,1,2,11,5,12,13,14,15,3,4,6,7,8]),import.meta.url)},{name:`aml-composables-useAmlNotes`,path:`/aml/composables/useAmlNotes`,component:()=>R(()=>import(`./B6UwtJ1a.js`).then(e=>e.n),__vite__mapDeps([29,1,2,11,5,12,13,14,15,3,4,6,7,8]),import.meta.url)},{name:`aml-composables-useAmlPredict`,path:`/aml/composables/useAmlPredict`,component:()=>R(()=>import(`./CLFmtXU7.js`).then(e=>e.n),__vite__mapDeps([30,1,2,5,11,12,13,14,15,3,4,6,7,8]),import.meta.url)},{name:`analysis-composables-useAnalysisFeed`,path:`/analysis/composables/useAnalysisFeed`,component:()=>R(()=>import(`./BtZKe9ZV2.js`).then(e=>e.n),__vite__mapDeps([31,1,2,5,25,8,3,4,6,32]),import.meta.url)},{name:`daq-composables-useDaqAddNode`,path:`/daq/composables/useDaqAddNode`,component:()=>R(()=>import(`./B37d6f-P2.js`).then(e=>e.n),__vite__mapDeps([33,1,2,5,3,4,6,34,25,8]),import.meta.url)},{name:`daq-composables-useDaqDetailBinding`,path:`/daq/composables/useDaqDetailBinding`,component:()=>R(()=>import(`./MJD65-MH2.js`).then(e=>e.n),__vite__mapDeps([35,1,2,5,34,25,3,4,6,8,36]),import.meta.url)},{name:`daq-composables-useDaqDetailFrames`,path:`/daq/composables/useDaqDetailFrames`,component:()=>R(()=>import(`./CfE35xQa2.js`).then(e=>e.i),__vite__mapDeps([37,1,5,2,34,25,3,4,6,8]),import.meta.url)},{name:`daq-composables-useDaqDetailHistory`,path:`/daq/composables/useDaqDetailHistory`,component:()=>R(()=>import(`./D9saExk92.js`).then(e=>e.n),__vite__mapDeps([38,1,2,5,11,17,18,4,6,19,20,34,25,3,8]),import.meta.url)},{name:`daq-composables-useDaqDetailNode`,path:`/daq/composables/useDaqDetailNode`,component:()=>R(()=>import(`./BclHgAY62.js`).then(e=>e.n),__vite__mapDeps([39,1,5,2,40,41,11,34,25,3,4,6,8,42,36]),import.meta.url)},{name:`daq-composables-useDaqDetailParams`,path:`/daq/composables/useDaqDetailParams`,component:()=>R(()=>import(`./DNlwacP72.js`).then(e=>e.n),__vite__mapDeps([43,1,2,5,3,4,6,34,25,8]),import.meta.url)},{name:`daq-composables-useDaqFilters`,path:`/daq/composables/useDaqFilters`,component:()=>R(()=>import(`./BEbg8OxK2.js`).then(e=>e.i),__vite__mapDeps([44,1,2,5,11,34,25,3,4,6,8,42,36,45]),import.meta.url)},{name:`daq-composables-useDaqNodeWindow`,path:`/daq/composables/useDaqNodeWindow`,component:()=>R(()=>import(`./D-80EfyA2.js`).then(e=>e.n),__vite__mapDeps([46,1,2,5]),import.meta.url)},{name:`daq-composables-useDaqOptimizations`,path:`/daq/composables/useDaqOptimizations`,component:()=>R(()=>import(`./Df35i2Tg2.js`).then(e=>e.n),__vite__mapDeps([47,1,2,5,42,25,3,4,6,8]),import.meta.url)},{name:`daq-composables-useDaqTemplates`,path:`/daq/composables/useDaqTemplates`,component:()=>R(()=>import(`./DPIImHuY2.js`).then(e=>e.r),__vite__mapDeps([48,1,2,5,3,4,6,34,25,8,45]),import.meta.url)},{name:`dcw-composables-useDcwAddNode`,path:`/dcw/composables/useDcwAddNode`,component:()=>R(()=>import(`./DzPypczG.js`).then(e=>e.n),__vite__mapDeps([49,1,2,5,11,3,4,6,8,42,25]),import.meta.url)},{name:`dcw-composables-useDcwCards`,path:`/dcw/composables/useDcwCards`,component:()=>R(()=>import(`./DW6X-3XT.js`).then(e=>e.n),__vite__mapDeps([50,1,5,2,42,25,3,4,6,8]),import.meta.url)},{name:`dcw-composables-useDcwDetailScope`,path:`/dcw/composables/useDcwDetailScope`,component:()=>R(()=>import(`./DvfiRGS-.js`).then(e=>e.n),__vite__mapDeps([51,1,5,2,40,41,11,34,25,3,4,6,8,42,36]),import.meta.url)},{name:`dcw-composables-useDcwDetailTemplates`,path:`/dcw/composables/useDcwDetailTemplates`,component:()=>R(()=>import(`./B8vwpJxO.js`).then(e=>e.n),__vite__mapDeps([52,1,2,5,11,3,4,6,42,25,8,45]),import.meta.url)},{name:`dcw-composables-useDcwFilter`,path:`/dcw/composables/useDcwFilter`,component:()=>R(()=>import(`./CwHhmA3N.js`).then(e=>e.n),__vite__mapDeps([53,1,2,5,42,25,3,4,6,8]),import.meta.url)},{name:`dcw-composables-useDcwLedger`,path:`/dcw/composables/useDcwLedger`,component:()=>R(()=>import(`./CBpkE3Aa.js`).then(e=>e.n),__vite__mapDeps([54,1,2,42,25,3,4,5,6,8]),import.meta.url)},{name:`dcw-composables-useDcwLineMutations`,path:`/dcw/composables/useDcwLineMutations`,component:()=>R(()=>import(`./DDLi49qE.js`).then(e=>e.n),__vite__mapDeps([55,1,2,3,4,5,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwLineRun`,path:`/dcw/composables/useDcwLineRun`,component:()=>R(()=>import(`./CuHnwZbm.js`).then(e=>e.n),__vite__mapDeps([56,1,2,5,11,3,4,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwParamApprovals`,path:`/dcw/composables/useDcwParamApprovals`,component:()=>R(()=>import(`./CoAJnzi9.js`).then(e=>e.n),__vite__mapDeps([57,1,2,5,17,18,4,6,19,20,8,3,58,59,60,61,42,25]),import.meta.url)},{name:`dcw-composables-useDcwProducts`,path:`/dcw/composables/useDcwProducts`,component:()=>R(()=>import(`./C0I4h6do.js`).then(e=>e.n),__vite__mapDeps([62,1,2,5,3,4,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwQuery`,path:`/dcw/composables/useDcwQuery`,component:()=>R(()=>import(`./C-wrWG5m.js`).then(e=>e.n),__vite__mapDeps([63,1,2,5,11,3,4,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwQuickActions`,path:`/dcw/composables/useDcwQuickActions`,component:()=>R(()=>import(`./CHpYSwnV.js`).then(e=>e.n),__vite__mapDeps([64,1,2,3,4,5,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwRecipes`,path:`/dcw/composables/useDcwRecipes`,component:()=>R(()=>import(`./FQK98hkN2.js`).then(e=>e.n),__vite__mapDeps([65,1,2,11,5,3,4,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwTemplates`,path:`/dcw/composables/useDcwTemplates`,component:()=>R(()=>import(`./WZrTmJqL.js`).then(e=>e.n),__vite__mapDeps([66,1,2,5,11,3,4,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwWrites`,path:`/dcw/composables/useDcwWrites`,component:()=>R(()=>import(`./BFUO7wT0.js`).then(e=>e.n),__vite__mapDeps([67,1,2,11,5,3,4,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useExpConfirmations`,path:`/dcw/composables/useExpConfirmations`,component:()=>R(()=>import(`./C14pM5G4.js`).then(e=>e.n),__vite__mapDeps([68,1,2,5,11,17,18,4,6,19,20,3,8]),import.meta.url)},{name:`dcw-composables-useRecipeDispatchApprovals`,path:`/dcw/composables/useRecipeDispatchApprovals`,component:()=>R(()=>import(`./CnrGVJIr.js`).then(e=>e.n),__vite__mapDeps([69,1,2,5,11,17,18,4,6,19,20,3,8]),import.meta.url)},{name:`logs-composables-useLogsFormat`,path:`/logs/composables/useLogsFormat`,component:()=>R(()=>import(`./DudoisLM.js`).then(e=>e.n),__vite__mapDeps([70,1,11,2,5]),import.meta.url)},{name:`logs-composables-useLogsManual`,path:`/logs/composables/useLogsManual`,component:()=>R(()=>import(`./CYLe9LKr.js`).then(e=>e.n),__vite__mapDeps([71,1,2,11,5,12,13,14,15,3,4,6,72,25,8]),import.meta.url)},{name:`logs-composables-useLogsQuery`,path:`/logs/composables/useLogsQuery`,component:()=>R(()=>import(`./CtcBhkci.js`).then(e=>e.i),__vite__mapDeps([73,1,2,5,11,12,13,14,15,72,25,3,4,6,8]),import.meta.url)},{name:`logs-composables-useLogsScope`,path:`/logs/composables/useLogsScope`,component:()=>R(()=>import(`./Cgym6fLd2.js`).then(e=>e.n),__vite__mapDeps([74,1,42,2,25,3,4,5,6,8]),import.meta.url)},{name:`workshop-composables-useAgentHarnessOptions`,path:`/workshop/composables/useAgentHarnessOptions`,component:()=>R(()=>import(`./DYQBIsiV2.js`).then(e=>e.n),__vite__mapDeps([75,1,2,5,11,76,77,4,6]),import.meta.url)},{name:`workshop-composables-useAgentTemplateActions`,path:`/workshop/composables/useAgentTemplateActions`,component:()=>R(()=>import(`./Ud9o8ItR2.js`).then(e=>e.n),__vite__mapDeps([78,1,11,2,5,12,13,14,15,3,4,6,76,77]),import.meta.url)},{name:`workshop-composables-useAgentTemplateDialogState`,path:`/workshop/composables/useAgentTemplateDialogState`,component:()=>R(()=>import(`./BBhLVYdM2.js`).then(e=>e.n),__vite__mapDeps([79,1,2]),import.meta.url)},{name:`workshop-composables-useAgentTemplateForm`,path:`/workshop/composables/useAgentTemplateForm`,component:()=>R(()=>import(`./Br_q4qi72.js`).then(e=>e.n),__vite__mapDeps([80,1,2,5,11,12,13,14,15,3,4,6,76,77]),import.meta.url)},{name:`workshop-composables-useAgentTemplatesCatalog`,path:`/workshop/composables/useAgentTemplatesCatalog`,component:()=>R(()=>import(`./6P4ZAzxa2.js`).then(e=>e.n),__vite__mapDeps([81,1,2,5,11,60,59,19,20,76,77,4,6,45]),import.meta.url)},{name:`workshop-composables-useTeamActions`,path:`/workshop/composables/useTeamActions`,component:()=>R(()=>import(`./DH_oqyfL.js`).then(e=>e.n),__vite__mapDeps([82,1,11,2,5,12,13,14,15,3,4,6,76,77]),import.meta.url)},{name:`workshop-composables-useTeamAddMemberDialog`,path:`/workshop/composables/useTeamAddMemberDialog`,component:()=>R(()=>import(`./fIV9zbnA.js`).then(e=>e.n),__vite__mapDeps([83,1,2,5,11,12,13,14,15,3,4,6,76,77]),import.meta.url)},{name:`workshop-composables-useTeamCreateDialog`,path:`/workshop/composables/useTeamCreateDialog`,component:()=>R(()=>import(`./DmReUFK1.js`).then(e=>e.n),__vite__mapDeps([84,1,2,5,11,12,13,14,15,76,77,4,6]),import.meta.url)},{name:`workshop-composables-useTeamDeployDialog`,path:`/workshop/composables/useTeamDeployDialog`,component:()=>R(()=>import(`./BY2u4LPg.js`).then(e=>e.n),__vite__mapDeps([85,1,2,5,11,12,13,14,15,3,4,6,76,77]),import.meta.url)},{name:`workshop-composables-useTeamDialogState`,path:`/workshop/composables/useTeamDialogState`,component:()=>R(()=>import(`./TOWR4WpO.js`).then(e=>e.n),__vite__mapDeps([86,1,2]),import.meta.url)},{name:`workshop-composables-useTeamPluginDialog`,path:`/workshop/composables/useTeamPluginDialog`,component:()=>R(()=>import(`./BSxcHoiy.js`).then(e=>e.n),__vite__mapDeps([87,1,2,5,11,12,13,14,15,3,4,6,76,77]),import.meta.url)},{name:`workshop-composables-useTeamsCatalog`,path:`/workshop/composables/useTeamsCatalog`,component:()=>R(()=>import(`./m6G-kfdj.js`).then(e=>e.n),__vite__mapDeps([88,1,2,5,11,60,59,19,20,76,77,4,6]),import.meta.url)},{name:`workshop-composables-useWorkbenchAuth`,path:`/workshop/composables/useWorkbenchAuth`,component:()=>R(()=>import(`./cKj4vSo5.js`).then(e=>e.n),__vite__mapDeps([89,1,2,5,11,12,13,14,15,60,59,19,20,3,4,6,61]),import.meta.url)},{name:`workshop-composables-useWorkbenchWorkspaces`,path:`/workshop/composables/useWorkbenchWorkspaces`,component:()=>R(()=>import(`./CZsFf7ck.js`).then(e=>e.n),__vite__mapDeps([90,1,2,5,18,4,6,19,20,11,12,13,14,15,60,59,3,91,17,25,26,27,61,58,92]),import.meta.url)},{name:`workshop-composables-useWorkspaceAuth`,path:`/workshop/composables/useWorkspaceAuth`,component:()=>R(()=>import(`./DiloA8vK.js`).then(e=>e.n),__vite__mapDeps([93,1,2,5,18,4,6,19,20,60,59,92]),import.meta.url)},{name:`workshop-composables-useWorkspaceChannels`,path:`/workshop/composables/useWorkspaceChannels`,component:()=>R(()=>import(`./Du7gS8RU.js`).then(e=>e.n),__vite__mapDeps([94,1,5,2,18,4,6,19,20,91,59,17,25,60,3,26,27,61,58,92]),import.meta.url)},{name:`workshop-composables-useWorkspacePanels`,path:`/workshop/composables/useWorkspacePanels`,component:()=>R(()=>import(`./BRci9D_l.js`).then(e=>e.n),__vite__mapDeps([95,1,2,5,92,59,19,20,60]),import.meta.url)},{name:`workshop-composables-useWorkspaceShell`,path:`/workshop/composables/useWorkspaceShell`,component:()=>R(()=>import(`./BfgTar9L.js`).then(e=>e.n),__vite__mapDeps([96,1,2,5,40,41,11,97]),import.meta.url)},{name:`workshop-w-wsId`,path:`/workshop/w/:wsId()`,meta:{layout:`default`},component:()=>R(()=>import(`./BwQJEuBn.js`),__vite__mapDeps([98,4,2,5,6,13,18,19,20,99,11,100,101,41,17,14,15,102,103,12,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,60,59,128,129,3,26,27,91,25,61,58,92,130,76,77,131,10,132,133,134,135,34,8,42,36,45,136,97,137,93,1,94,95,96,40,138]),import.meta.url)},{name:`aml-api`,path:`/aml/api`,component:()=>R(()=>import(`./Cn6EojFe.js`).then(e=>e.n),__vite__mapDeps([7,1,8,3,4,2,5,6]),import.meta.url)},{name:`aml-constants`,path:`/aml/constants`,component:()=>R(()=>import(`./B6Olw0Op.js`).then(e=>e.s),__vite__mapDeps([21,1]),import.meta.url)},{name:`aml-types`,path:`/aml/types`,component:()=>R(()=>import(`./BvRk9kiK.js`),[],import.meta.url)},{name:`analysis-types`,path:`/analysis/types`,component:()=>R(()=>import(`./9j2J4k4w.js`).then(e=>e.r),__vite__mapDeps([32,1]),import.meta.url)},{name:`composables-useDashboardCharts`,path:`/composables/useDashboardCharts`,component:()=>R(()=>import(`./ilJHF1nA2.js`).then(e=>e.n),__vite__mapDeps([139,1,5,2,11]),import.meta.url)},{name:`composables-useDashboardData`,path:`/composables/useDashboardData`,component:()=>R(()=>import(`./C5x3IQz42.js`).then(e=>e.n),__vite__mapDeps([140,1,2,5,141,4,6,19,18,20,59,27,142,41,101,13,10,100,143,34,25,3,8,42,76,77]),import.meta.url)},{name:`dcw-types`,path:`/dcw/types`,component:()=>R(()=>import(`./C50LmoI1.js`),[],import.meta.url)},{name:`ontology-api`,path:`/ontology/api`,component:()=>R(()=>import(`./DWy0AjON.js`).then(e=>e.t),__vite__mapDeps([144,1,8,3,4,2,5,6]),import.meta.url)},{name:`ontology-types`,path:`/ontology/types`,component:()=>R(()=>import(`./DgrK8UCQ.js`),[],import.meta.url)},{name:`optimizer-api`,path:`/optimizer/api`,component:()=>R(()=>import(`./k9b520K-.js`).then(e=>e.t),__vite__mapDeps([145,1,8,3,4,2,5,6]),import.meta.url)},{name:`studio-board`,path:`/studio/board`,component:()=>R(()=>import(`./Co8Dcx132.js`),__vite__mapDeps([146,2,5,13,142,4,6,19,18,20,41,101,11,100,128,147,1,3,8,148,149,150]),import.meta.url)},{name:`studio-pipeline`,path:`/studio/pipeline`,component:()=>R(()=>import(`./yS3bF3G32.js`),__vite__mapDeps([151,2,5,13,142,4,6,19,18,20,41,101,10,11,100,128,3,8,149,152]),import.meta.url)},{name:`workshop-agents`,path:`/workshop/agents`,meta:{layout:`default`},component:()=>R(()=>import(`./CjdxNYpU2.js`),__vite__mapDeps([153,2,5,18,4,6,19,20,99,11,100,101,13,41,154,14,103,15,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,104,108,112,117,126,127,128,130,80,1,3,76,77,75,78,79,81,60,59,45,159]),import.meta.url)},{name:`workshop-channel-templates`,path:`/workshop/channel-templates`,meta:{layout:`default`},component:()=>R(()=>import(`./tDEwr422.js`),__vite__mapDeps([160,2,5,18,4,6,19,20,99,11,100,101,13,41,104,14,103,15,102,12,105,106,107,108,109,110,111,112,113,117,125,126,127,60,59,128,3,130,76,77,45,161]),import.meta.url)},{name:`workshop-schedules`,path:`/workshop/schedules`,meta:{layout:`default`},component:()=>R(()=>import(`./BwOko01T.js`),__vite__mapDeps([162,2,5,99,4,6,11,17,18,19,20,14,103,13,15,107,102,12,154,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,104,108,112,117,163,115,123,118,124,126,128,3,130,76,77,164]),import.meta.url)},{name:`workshop-teams`,path:`/workshop/teams`,meta:{layout:`default`},component:()=>R(()=>import(`./DZqVVvR0.js`),__vite__mapDeps([165,2,5,18,4,6,19,20,99,11,100,101,13,41,104,14,103,15,102,12,105,106,107,108,109,110,111,112,113,114,121,158,119,120,125,126,127,128,130,45,82,1,3,76,77,83,84,85,86,87,88,60,59,166]),import.meta.url)},{name:`daq-id`,path:`/daq/:id()`,meta:{layout:`default`},component:()=>R(()=>import(`./DZc-zU-H2.js`),__vite__mapDeps([167,2,5,13,142,4,6,19,18,20,41,101,11,128,26,27,130,37,1,34,25,3,8,35,36,38,17,39,40,42,43,168]),import.meta.url)},{name:`dcw-id`,path:`/dcw/:id()`,component:()=>R(()=>import(`./CEOSV8kw.js`),__vite__mapDeps([169,2,5,13,142,4,6,19,18,20,41,101,11,125,14,128,8,3,26,27,61,45,136,65,1,42,25,49,51,40,34,36,52,54,56,57,17,58,59,60,62,63,67,68,69,170]),import.meta.url)},{name:`aml`,path:`/aml`,meta:{layout:`default`},component:()=>R(()=>import(`./BaYDgyaR.js`),__vite__mapDeps([171,2,5,13,99,4,6,11,17,18,19,20,12,14,15,128,3,91,59,25,60,26,27,61,58,7,1,8,0,9,10,21,16,22,23,24,28,29,30,130,172,173]),import.meta.url)},{name:`analysis`,path:`/analysis`,component:()=>R(()=>import(`./gfKPQ5o72.js`),__vite__mapDeps([174,2,5,13,11,12,14,15,117,103,102,60,59,19,20,128,3,4,6,8,26,27,91,17,18,25,61,58,32,1,31,74,42,175]),import.meta.url)},{name:`daq`,path:`/daq`,meta:{layout:`default`},component:()=>R(()=>import(`./Lq_0yoit2.js`),__vite__mapDeps([176,2,5,13,99,4,6,142,19,18,20,41,101,11,12,14,15,125,128,3,91,59,17,25,60,26,27,61,58,130,172,34,8,42,36,33,1,44,45,46,47,48,72,177]),import.meta.url)},{name:`data`,path:`/data`,component:()=>R(()=>import(`./-gwj-zlk2.js`),__vite__mapDeps([178,2,5,13,11,100,101,18,4,6,19,20,41,17,128,147,1,3,8,179]),import.meta.url)},{name:`dcw`,path:`/dcw`,component:()=>R(()=>import(`./BkZomIrQ.js`),__vite__mapDeps([180,2,5,13,142,4,6,19,18,20,41,101,11,128,42,25,3,8,45,68,1,17,50,53,55,64,66,181]),import.meta.url)},{name:`logs`,path:`/logs`,component:()=>R(()=>import(`./CjhzuymI.js`),__vite__mapDeps([182,2,5,13,155,14,103,15,107,113,105,111,120,156,157,128,91,59,19,20,17,18,4,6,25,60,3,26,27,61,58,42,8,74,1,72,70,11,71,12,73,183]),import.meta.url)},{name:`monitor`,path:`/monitor`,meta:{layout:`default`},component:()=>R(()=>import(`./BfvuWqSa.js`),__vite__mapDeps([184,2,5,18,4,6,19,20,11,14,15,13,154,103,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,117,163,115,108,112,126,60,59,128,130,185,1,186,26,27,131,10,123,118,132,187,17,61,188,189]),import.meta.url),children:[{name:`monitor-composables-useMonitorColumns`,path:`composables/useMonitorColumns`,component:()=>R(()=>import(`./BK4wbfGS.js`).then(e=>e.r),__vite__mapDeps([185,1,5,2,11,60,59,19,20]),import.meta.url)},{name:`monitor-composables-useMonitorData`,path:`composables/useMonitorData`,component:()=>R(()=>import(`./CRCrWy-6.js`).then(e=>e.n),__vite__mapDeps([187,1,2,5,11,17,18,4,6,19,20,12,13,14,15,60,59,26,27,61]),import.meta.url)},{name:`monitor-composables-useMonitorFormat`,path:`composables/useMonitorFormat`,component:()=>R(()=>import(`./jDuiDtGb.js`).then(e=>e.r),__vite__mapDeps([186,1,11,2,5,26,27,4,6,19]),import.meta.url)},{name:`monitor-composables-useMonitorTerminal`,path:`composables/useMonitorTerminal`,component:()=>R(()=>import(`./BxHBIVAg.js`).then(e=>e.n),__vite__mapDeps([188,1,2]),import.meta.url)},{name:`monitor-types`,path:`types`,component:()=>R(()=>import(`./DybRo6-H.js`),[],import.meta.url)}]},{name:`ontology`,path:`/ontology`,component:()=>R(()=>import(`./D8AvmPUH.js`),__vite__mapDeps([190,2,5,13,11,154,14,103,15,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,123,118,127,60,59,19,20,128,3,4,6,144,1,8,191]),import.meta.url)},{name:`operations`,path:`/operations`,component:()=>R(()=>import(`./C0wjQa6_.js`),__vite__mapDeps([192,2,5,13,155,14,103,15,107,113,105,111,120,156,157,128,26,27,4,6,19,91,59,20,17,18,25,60,3,61,58,74,1,42,8,72,193,194]),import.meta.url),children:[{name:`operations-composables-useOperationsFeed`,path:`composables/useOperationsFeed`,component:()=>R(()=>import(`./DRskyE7l.js`).then(e=>e.o),__vite__mapDeps([193,1,2,5,72,25,3,4,6,8]),import.meta.url)}]},{name:`optimizer`,path:`/optimizer`,meta:{layout:`default`},component:()=>R(()=>import(`./BPUQZ9Lq2.js`),__vite__mapDeps([195,2,5,13,99,4,6,11,128,130,145,1,8,3,196]),import.meta.url)},{name:`permissions`,path:`/permissions`,component:()=>R(()=>import(`./26OL4Ao82.js`),__vite__mapDeps([197,2,5,13,18,4,6,19,20,11,154,14,103,15,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,163,115,108,123,118,60,59,128,3,61,198]),import.meta.url)},{name:`plugins`,path:`/plugins`,component:()=>R(()=>import(`./BVg2R2VB2.js`),__vite__mapDeps([199,2,5,13,11,12,14,15,116,123,118,126,105,60,59,19,20,128,3,4,6,61,45,200,201,202,203]),import.meta.url)},{name:`settings`,path:`/settings`,component:()=>R(()=>import(`./CBkXv24C2.js`),__vite__mapDeps([204,4,2,5,6,13,59,19,20,141,18,27,142,41,101,10,100,11,12,14,15,113,103,107,105,106,116,163,115,108,114,102,121,110,122,111,124,125,126,60,205,77,143,128,3,8,76,200,201,202,206]),import.meta.url)},{name:`studio`,path:`/studio`,component:()=>R(()=>import(`./CNRjkgAZ2.js`),__vite__mapDeps([207,2,5,13,18,4,6,19,20,142,41,101,11,100,128,147,1,3,8,148,149,208]),import.meta.url)},{name:`tokens`,path:`/tokens`,meta:{layout:`default`},component:()=>R(()=>import(`./DuUc4bbY2.js`),__vite__mapDeps([209,2,5,13,18,4,6,19,20,99,11,154,14,103,15,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,117,163,115,108,112,60,59,128,130,210,1,3,211,212,213,214,215]),import.meta.url),children:[{name:`tokens-composables-useTokenClipboard`,path:`composables/useTokenClipboard`,component:()=>R(()=>import(`./DkJVtqfc2.js`).then(e=>e.n),__vite__mapDeps([212,1]),import.meta.url)},{name:`tokens-composables-useTokenCreate`,path:`composables/useTokenCreate`,component:()=>R(()=>import(`./Dt8TL8_X2.js`).then(e=>e.n),__vite__mapDeps([211,1,2,5,11,12,13,14,15,60,59,19,20,3,4,6,212]),import.meta.url)},{name:`tokens-composables-useTokenRename`,path:`composables/useTokenRename`,component:()=>R(()=>import(`./DW4ZgInh2.js`).then(e=>e.n),__vite__mapDeps([213,1,2,11,5,12,13,14,15,60,59,19,20,3,4,6]),import.meta.url)},{name:`tokens-composables-useTokenReveal`,path:`composables/useTokenReveal`,component:()=>R(()=>import(`./DwgVlehj2.js`).then(e=>e.r),__vite__mapDeps([214,1,2,11,5,12,13,14,15,60,59,19,20,212]),import.meta.url)},{name:`tokens-composables-useTokensList`,path:`composables/useTokensList`,component:()=>R(()=>import(`./ByTnUqFw2.js`).then(e=>e.n),__vite__mapDeps([210,1,2,5,11,12,13,14,15,60,59,19,20,3,4,6]),import.meta.url)}]},{name:`tools`,path:`/tools`,component:()=>R(()=>import(`./byZYInPk2.js`),__vite__mapDeps([216,2,5,11,154,13,14,103,15,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,123,118,128,3,4,6,76,77,217]),import.meta.url)},{name:`town`,path:`/town`,meta:{layout:`town`,title:`Digital Twin`},component:()=>R(()=>import(`./C7BcCB7C2.js`),__vite__mapDeps([218,2,5,18,4,6,19,20,59,60,128,91,17,25,3,26,27,61,58,92,130,133,13,10,11,77,134,135,129,34,8,42,36,45,136,97,137,219]),import.meta.url)},{name:`users`,path:`/users`,component:()=>R(()=>import(`./DhLlTxQh2.js`),__vite__mapDeps([220,2,5,99,4,6,11,154,13,14,103,15,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,117,163,115,108,112,60,59,19,20,128,61,221]),import.meta.url)},{name:`workshop`,path:`/workshop`,meta:{layout:`default`},component:()=>R(()=>import(`./dHwWyr6b.js`),__vite__mapDeps([222,2,5,13,18,4,6,19,20,99,11,100,101,41,12,14,15,106,107,103,105,112,125,60,59,128,3,223,115,108,114,102,163,224,130,89,1,61,90,91,17,25,26,27,58,92,225]),import.meta.url)},{name:`index`,path:`/`,component:()=>R(()=>import(`./D1Ljnzu-.js`),__vite__mapDeps([226,2,5,18,4,6,19,20,99,142,41,101,13,11,100,128,147,1,172,17,139,140,141,59,27,10,143,34,25,3,8,42,76,77,200,201,202,227]),import.meta.url)}];function Gn(e,t,n){let{pathname:r,search:i,hash:a}=t,o=e.indexOf(`#`);if(o>-1){let t=a.includes(e.slice(o))?e.slice(o).length:1,n=a.slice(t);return n[0]!==`/`&&(n=`/`+n),Ie(n,``)}let s=Ie(r,e),c=!n||Ne(s,n)?s:n;return c+(c.includes(`?`)?``:i)+a}var Kn=o({name:`nuxt:router`,enforce:`pre`,async setup(e){let t,n,r=a().app.baseURL,i=L.history?.(r)??St(r),o=L.routes?([t,n]=s(()=>L.routes(Wn)),t=await t,n(),t??Wn):Wn,c,l=Ct({...L,scrollBehavior:(e,t,n)=>{if(t===bt){c=n;return}if(L.scrollBehavior){if(l.options.scrollBehavior=L.scrollBehavior,`scrollRestoration`in window.history){let e=l.beforeEach(()=>{e(),window.history.scrollRestoration=`manual`})}return L.scrollBehavior(e,bt,c||n)}},history:i,routes:o});`scrollRestoration`in window.history&&(window.history.scrollRestoration=`auto`),e.vueApp.use(l);let u=d(l.currentRoute.value);l.afterEach((e,t)=>{u.value=t}),Object.defineProperty(e.vueApp.config.globalProperties,"previousRoute",{get:()=>u.value});let f=Gn(r,window.location,e.payload.path),g=d(l.currentRoute.value),_=()=>{g.value=l.currentRoute.value};l.afterEach((e,t)=>{let n=e.matched.at(-1)?.components?.default,r=t.matched.at(-1)?.components?.default;if(n===r){zn({route:e,Component:{type:n}})===zn({route:t,Component:{type:r}})&&_();return}e.matched.length<t.matched.length&&e.matched.every((e,n)=>e.components?.default===t.matched[n]?.components?.default)&&_()});let v={sync:_};for(let e in g.value)Object.defineProperty(v,e,{get:()=>g.value[e],enumerable:!0});e._route=p(v),e._middleware||={global:[],named:{}};let y=Oe();l.afterEach(async(t,n,r)=>{delete e._processingMiddleware,!e.isHydrating&&y.value&&await e.runWithContext(De),r&&await e.callHook(`page:loading:end`)});try{[t,n]=s(()=>l.isReady()),await t,n()}catch(r){[t,n]=s(()=>we(e,r)),await t,n()}let b=f===l.currentRoute.value.fullPath?l.currentRoute.value:l.resolve(f),x=l.currentRoute.value.fullPath,S=e.isHydrating&&e.payload.prerenderedAt&&e.payload.path&&f!==e.payload.path&&Ne(l.currentRoute.value.path,e.payload.path);_();function C(t){!e.isHydrating&&t.fullPath!==Gn(r,window.location)&&i.push(t.fullPath)}let w=e.payload.state._layout;return l.beforeEach(async(t,n)=>{await e.callHook(`page:loading:start`),t.meta=m(t.meta),e.isHydrating&&w&&!h(t.meta.layout)&&(t.meta.layout=w),e._processingMiddleware=!0;{let r=new Set([...Hn,...e._middleware.global]);for(let e of t.matched){let t=e.meta.middleware;if(t)for(let e of Vn(t))r.add(e)}let i=vt({path:t.path});if(i.appMiddleware)for(let e in i.appMiddleware)i.appMiddleware[e]?r.add(e):r.delete(e);for(let i of r){let r=typeof i==`string`?e._middleware.named[i]||await Un[i]?.().then(e=>e.default||e):i;if(!r)throw xe.NUXT_E2004({entry:String(i),validMiddleware:void 0});try{let i=await e.runWithContext(()=>r(t,n));if(!e.payload.serverRendered&&e.isHydrating&&(i===!1||i instanceof Error)){let t=i||Se({status:404,statusText:`Page Not Found: ${f}`});return await e.runWithContext(()=>Te(t)),!1}if(i===!0)continue;if(i===!1)return i;if(i)return ve(i)&&i.fatal&&(await e.runWithContext(()=>Te(i)),C(t)),i}catch(n){let r=Se(n);return r.fatal&&(await e.runWithContext(()=>Te(r)),C(t)),r}}}}),l.onError(async()=>{delete e._processingMiddleware,await e.callHook(`page:loading:end`)}),l.afterEach(t=>{if(t.matched.length===0&&!y.value)return e.runWithContext(()=>Te(Se({status:404,fatal:!1,statusText:`Page not found: ${t.fullPath}`,data:{path:t.fullPath}})))}),e.hooks.hookOnce(`app:created`,async()=>{try{if(`name`in b&&(b.name=void 0),l.currentRoute.value.fullPath===x){if(S){let t=l.resolve(e.payload.path);`name`in t&&(t.name=void 0),await l.replace({...t,force:!0});let n=()=>{e[`~restoreDeferredRoute`]&&(e[`~restoreDeferredRoute`]=void 0,l.currentRoute.value=l.resolve(f),_(),l.replace({...b,force:!0}).catch(()=>{}))};e[`~restoreDeferredRoute`]=n,e.hooks.hookOnce(`app:suspense:resolve`,n)}else await l.replace({...b,force:!0})}l.options.scrollBehavior=L.scrollBehavior}catch(t){await we(e,t)}}),{provide:{router:l}}}},1),qn=o({name:`nuxt:payload`,setup(e){let t=new Set;F().beforeResolve(async(n,r)=>{let i=gt(n.path),a=i?Fe(n.fullPath):n.path;if(a===(i?Fe(r.fullPath):r.path))return;let o=await ut(a);if(o){for(let n of t)delete e.static.data[n];for(let n in o.data)n in e.static.data||t.add(n),e.static.data[n]=o.data[n]}}),Ot(()=>{e.hooks.hook(`link:prefetch`,async e=>{let{hostname:t,pathname:n}=new URL(e,window.location.href);t===window.location.hostname&&await ut(e).catch(()=>{st.NUXT_E7003({url:e})})}),navigator.connection?.effectiveType!==`slow-2g`&&setTimeout(ft,1e3)})}}),Jn=o(()=>{let e=F();Ot(()=>{e.beforeResolve(async()=>{await new Promise(e=>{setTimeout(e,100),requestAnimationFrame(()=>{setTimeout(e,0)})})})})}),Yn=o(e=>{let t;async function n(){let r;try{r=await ft()}catch(e){let t=e;if(!(`status`in t&&(t.status===404||t.status===403)))throw t}t&&clearTimeout(t),t=setTimeout(n,fe);try{let n=await Ye(Ge(`builds/latest.json`)+`?${Date.now()}`);n.id!==r?.id&&(e.hooks.callHook(`app:manifest:update`,n),t&&clearTimeout(t))}catch{}}Ot(()=>{t=setTimeout(n,fe)})});function Xn(e={}){let n=e.path||window.location.pathname,r=new URL(n,window.location.href);if(r.host!==window.location.host)throw xe.NUXT_E2010({path:n});if(r.protocol&&Be(r.protocol))throw xe.NUXT_E2002({toPath:n,protocol:r.protocol});let i={};try{i=JSON.parse(sessionStorage.getItem(`nuxt:reload`)||`{}`)}catch{}if(e.force||i?.path!==n||i?.expires<Date.now()){try{sessionStorage.setItem(`nuxt:reload`,JSON.stringify({path:n,expires:Date.now()+(e.ttl??1e4)}))}catch{}if(e.persistState)try{sessionStorage.setItem(`nuxt:reload:state`,JSON.stringify({state:t().payload.state}))}catch{}window.location.pathname===n?window.location.reload():window.location.href=n}}var Zn=o({name:`nuxt:chunk-reload-crawler`,setup(e){let t=!0;e.hooks.hookOnce(`app:suspense:resolve`,()=>{t=!1}),e.hook(`app:chunkError`,()=>{t&&ge(navigator.userAgent)&&Xn()})}}),Qn=o({name:`nuxt:chunk-reload`,setup(e){let t=F(),n=a(),r=new Set;t.beforeEach(()=>{r.clear()}),e.hook(`app:chunkError`,({error:e})=>{r.add(e)});function i(e){Xn({path:Pe(n.app.baseURL,e.fullPath),persistState:!0})}e.hook(`app:manifest:update`,()=>{t.beforeResolve(i)}),t.onError((e,t)=>{r.has(e)&&i(t)})}}),$n=o({name:`nuxt:island-link-navigation`,setup(e){}}),er={common:{stop:`停止`,add:`添加`,remove:`移除`,create:`创建`,revoke:`吊销`,close:`关闭`,light:`亮色`,dark:`暗色`,confirm:`确定`,cancel:`取消`,save:`保存`,search:`搜索`,actions:`操作`,edit:`编辑`,delete:`删除`,status:`状态`,all:`全部`,copy:`复制`,copied:`已复制`},menu:{system:`AgentWorkShop`,groups:{console:`控制台`,ops:`运维`,system:`系统`},ontology:`本体模型`,dashboard:`仪表盘`,workshop:`Agent 工作台`,town:`数字孪生`,tokens:`API Token`,daq:`数采中心`,dcw:`产线运营`,dataManagement:`数据管理`,studio:`EDA 工坊`,aml:`建模`,optimizer:`优化器`,logs:`产线日志`,operations:`产线操作`,analysis:`数据分析`,users:`用户管理`,monitor:`运行时监控`,plugins:`插件管理`,tools:`工具管理`,settings:`系统设置`,permissions:`权限管理`},header:{collapse:`折叠菜单`,expand:`展开菜单`,openNav:`打开导航`,closeNav:`关闭导航`,language:`语言`,theme:`主题`,fullscreen:`全屏`,notifications:`通知`,profile:`个人中心`,guest:`访客`,login:`登录`,guestBanner:`以访客身份浏览:登录后可查看与操作您的产线`,logout:`退出登录`,trail:`航迹导航(点击返回对应页面)`,workspace:`工作台`,nodeDetail:`数采节点`,lineDetail:`产线作业`},home:{kicker:`DIGITAL TWIN · 产线运营`,heroTitle:`虚实映射的产线`,heroAccent:`运营中枢`,heroSub:`智控下发与数采回流同屏共振:配方开跑、参数设定、实时工况、越限告警一屏尽览,孪生界面与真实 PLC 同拍运行。`,ctaTown:`进入数字孪生`,ctaLine:`产线运营管理`,live:`LIVE`,kpi:{lines:`运行产线`,dcwNodes:`控制节点`,daqNodes:`数采通道`,samples:`累计采集样本`,writeRate:`写命令成功率`,alarms:`活跃告警`},charts:{trend:`实时工况趋势`,trendSub:`按节点量程归一化 · 近 3 分钟`,lineState:`产线运行状态`,pipeline:`数采管线吞吐`,writeCtl:`写控制成功率`,nodeState:`节点状态分布`,lines:`产线清单`},trendY:`量程占比 %`,trendWaiting:`正在等待实时数据流…`,trendNeedRun:`数采由活动批次门控:产线未开跑时不采样。在「产线运营」开跑后,此处显示实时趋势。`,runNow:`运行中`,standBy:`待机`,pipelineSeries:{produced:`已发布`,consumed:`已消费`,stored:`已入库`},stateDaq:`数采节点`,stateDcw:`控制节点`,states:{ok:`正常`,warn:`预警`,alarm:`告警`,writing:`写入中`,idle:`待机`,error:`故障`,offline:`离线`},batch:`运行批次`,nodesUnit:`控制节点`,daqUnit:`数采通道`,tagged:`已打标样本`,noLine:`暂无产线 —— 前往「产线运营」创建`,fleetAll:`查看全部产线`,fleetHint:`运行中优先 · 最多展示 8 条`,writesFailed:`失败`,harness:{title:`执行引擎`,sub:`Harness CLI 环境探测 · 就绪即可派工`,missing:`未安装`},fields:{name:`应用名称`,version:`版本`,mode:`运行模式`,devPort:`开发端口`,prodPort:`生产端口`,apiBase:`API 基址`,primary:`主题色`}},users:{krkb23h011:`{p0} 角色已调整为 {p1}`,k1u7u12g012:`{p0} 已{p1}`,knh5f2r013:`已删除 {p0}`,k3xhfg009:`启用`,k3wsi1010:`停用`,k1jk2os9001:`删除该用户?(其名下资源保留,归属仍可追溯)`,k1flpho5002:`管理全局用户与角色(admin 拥有最高权限:全量监控、任意模板、用户管理)。`,kpdo6rc003:`需要管理员权限`,k1mue9bl004:`用户管理仅对 admin 角色开放;请联系管理员调整角色。`,k3xakp005:`删除`,k1br33vc006:`加载失败`,k1enhqn3007:`更新失败`,k1bphrb3008:`删除失败`,title:`用户管理`,subtitle:`管理系统用户、角色与访问权限`,add:`新增用户`,search:`搜索用户名或邮箱`,deleteConfirm:`确定要删除该用户吗?`,name:`用户名`,email:`邮箱`,role:`角色`,created:`创建时间`,roleAdmin:`管理员`,roleEditor:`编辑`,roleUser:`普通用户`,active:`正常`,disabled:`已禁用`},settings:{title:`系统设置`,subtitle:`配置应用基本信息、主题外观与通知偏好`,basic:`基本设置`,basicDesc:`应用的名称、描述等基础信息`,theme:`主题设置`,themeDesc:`自定义主色调与显示模式`,notification:`通知设置`,notificationDesc:`管理系统消息通知的推送方式`,appName:`应用名称`,appDesc:`应用描述`,primaryColor:`主题色`,themeMode:`显示模式`,appearanceDesc:`主题色、深浅模式与语言偏好,实时生效并自动持久化(localStorage)。`,accentDesc:`默认品牌绿,与 Digital Twin 控制室同源;可选低饱和预设,悬停预览即时生效。`,accentInk:`品牌`,accentStone:`琥珀`,accentMoss:`苔绿`,accentSlate:`靛蓝`,accentPlum:`紫檀`,accentClay:`陶赭`,accentApplied:`主题色已应用`,accentReset:`已恢复默认主题色(跟随 config.yml)`,accentResetAction:`恢复默认`,darkDesc:`深海军蓝控制室暗阶,与数字孪生空间同一视觉语言;亮色模式保留编辑风格。`,languageDesc:`界面语言(zh-CN / en),选择即生效。`,systemTab:`系统`,systemDesc:`只读运行参数(同源 config.yml,经 nuxt.config runtimeConfig 注入)。`,identity:`当前身份`,identityGuest:`当前未登录(工作台数据需登录后查看)`,emailNotify:`邮件通知`,emailNotifyDesc:`重要事件通过邮件推送给管理员`,smsNotify:`短信通知`,smsNotifyDesc:`紧急告警通过短信即时送达`,pushNotify:`站内推送`,pushNotifyDesc:`浏览器内实时消息提醒`,saveSuccess:`设置已保存`,runtimeTab:`运行配置`,runtime:{groupMemory:`记忆系统`,groupOmp:`Agent Harness`,groupDcw:`数控写控`,groupWorkshop:`车间运行`,groupBackup:`数据备份`,groupRetention:`数据保留`,groupOptimizer:`优化器求解器`,groupLog:`日志`,title:`运行配置`,desc:`服务端持久化的运行参数:live 键保存即热重载生效(无需刷新),restart 键下次启动生效。与 CLI(aw config)同源同通道。`,live:`实时`,restart:`重启`,save:`保存设置`,resetAll:`恢复全部默认`,resetKey:`恢复默认值`,savedLive:`已保存,live 键已热重载生效`,restartNotice:`已保存。以下键需重启对应模式后生效:{keys}`,keyReset:`已恢复默认:{key}`,resetAllDone:`全部运行时覆盖已清空(回落 config.yml)`,groupServer:`服务`,groupApp:`应用`,groupTheme:`主题`,groupI18n:`国际化`,groupSecurity:`安全`,groupDaq:`数采`,groupApi:`API`,groupHarness:`Harness 接入`,groupPlugins:`插件`,memory:{primerTokens:`记忆引子预算`,injectTotal:`记忆注入硬顶`,maintenanceMs:`记忆维护周期(ms)`,expireDays:`情景记忆过期(天)`,expireSessionDays:`会话记忆过期(天)`,cap:`记忆条目上限`,reflectTrigger:`反思触发阈值`,embedBaseUrl:`Embedding 端点`,embedModel:`Embedding 模型`,embedApiKey:`Embedding 密钥`},omp:{compactEnabled:`上下文自动压缩`,compactThreshold:`压缩阈值`,compactMinIntervalMs:`压缩最小间隔(ms)`,compactWaitMs:`压缩等待超时(ms)`},dcw:{rollbackCooldownMs:`回退冷却(ms)`,rollbackMinWindowMs:`回退最小观察窗(ms)`,rollbackBaselineMs:`基线稳定窗(ms)`,rollbackStaleMs:`open 记录过期(ms)`},workshop:{idleSweepMs:`空产线扫描(ms)`,idleGraceMs:`空闲宽限(ms)`},backup:{disabled:`禁用自动备份`,intervalHours:`备份间隔(h)`,keep:`备份保留份数`},retention:{disabled:`禁用数据保留策略`,eventsDays:`事件保留(天)`,messagesDays:`消息保留(天)`,auditDays:`审计日志保留(天)`,approvalDays:`审批历史保留(天)`,analysisDays:`分析报告保留(天)`,optimizerDays:`优化运行保留(天)`,processModelDays:`过程模型台账保留(天)`},optimizer:{poolSize:`Solver 进程池上限`,requestTimeoutMs:`Solver 请求超时(ms)`,threads:`Solver 线程预算`,crosscheckTol:`互校一致性容差`},log:{level:`日志级别`},daq:{mqttQos:`MQTT QoS`,mqttUsername:`MQTT 用户名`,mqttPassword:`MQTT 密码`,mqttCaFile:`MQTT CA 证书`,mqttRejectUnauthorized:`MQTT 校验证书`,samplingDefaultIntervalMs:`节点采样默认间隔(ms)`,samplingMinIntervalMs:`节点采样下限(ms)`,queryDefaultBucketMs:`时序查询默认间隔(ms)`,queryMinBucketMs:`时序查询下限(ms)`,tsRetentionH:`标量时序保留(h)`,frameRetentionH:`帧元数据保留(h)`,alarmWebhookUrl:`告警 Webhook`,alarmEscalateMinutes:`告警升级时限(min)`,startInfrastructure:`数采基础设施拉起策略`,mqttHost:`MQTT Broker 地址`,mqttPort:`MQTT Broker 端口`,tsHost:`时序库地址`,tsPort:`时序库端口`,publishDefaultIntervalMs:`WS 下发默认间隔(ms)`,publishMinIntervalMs:`WS 下发下限(ms)`,queryDisplayIntervalMs:`趋势图刷新间隔(ms)`,queryMinDisplayIntervalMs:`趋势图刷新下限(ms)`,export:{pagesPerNode:`导出单节点分页上限`,windowMaxH:`导出时间窗上限(h)`}},aml:{pythonBin:`Python 解释器`,uvBin:`uv 可执行`,indexUrl:`pip 镜像源`,jobTimeoutMs:`作业墙钟超时(ms)`,jobMaxConcurrent:`最大并发作业`,jobDiskQuotaMb:`AML 磁盘配额(MB)`,jobStallMs:`作业停摆判定(ms)`,datasetMaxRows:`数据集行数上限`,datasetRetentionDays:`无引用数据集保留(天)`,allowCrossRecipe:`允许跨 Recipe 合并`,retiredKeepDays:`退役模型工件保留(天)`,gateNrmse:`门禁:单步 NRMSE`,gateRolloutNrmse:`门禁:多步滚动 NRMSE`,gateValTestGap:`门禁:泛化差`,gateMinRows:`门禁:最少样本行`,gateMinRuns:`门禁:最少批次数`,uqFreshDays:`UQ 证据保鲜天数`},security:{hitlTimeoutMs:`HITL 审批超时(ms)`,hitlTimeoutMode:`HITL 超时语义`,approvalGate:`高危操作双人复核`,allowRegistration:`开放自助注册`,hstsEnabled:`下发 HSTS 头`,recipeDispatchApproval:`配方下发人工审批`,recipeDispatchApprovalDesc:`开启后 recipe_trial/recipe_apply 下发前挂起等待人工裁决:批准=执行;拒绝可附指导,Agent 按指导修订后重新提交`,recipeDispatchTimeoutMs:`配方方案审批超时(ms)`},server:{host:`监听地址`,devPort:`开发端口`,prodPort:`生产端口`},app:{title:`应用标题`,description:`应用描述`},api:{baseURL:`API 基址`,timeout:`API 超时(ms)`,pageSize:`默认分页大小`,maxPageSize:`分页大小上限`},theme:{primaryColor:`主题色`,mode:`显示模式`},i18n:{defaultLocale:`默认语言`},time:{timeZone:`系统时区(日志/聊天/审计/调度)`}},groups:{toggleAll:`展开/收起全部分组`,expandAll:`全部展开`,collapseAll:`全部收起`,count:`共 {p0} 个分组`,newGroup:`新建分组`,namePlaceholder:`分组名称(如「现场网络」)`,descPlaceholder:`分组说明(可选)`,defaultCollapsed:`默认折叠`,create:`创建`,cancel:`取消`,ok:`确定`,rename:`重命名`,moveUp:`上移`,moveDown:`下移`,delete:`删除分组`,created:`分组已创建`,renamed:`分组已重命名`,deleted:`分组已删除`,createFail:`创建分组失败`,updateFail:`更新分组失败`,deleteFail:`删除分组失败`,deleteHasFields:`分组「{p0}」还有 {p1} 个字段,请先移走再删除`,fields:`{p0} 项`,emptyHint:`该分组暂无字段 —— 可用 API 或插件向此分组登记配置项`,srcBuiltin:`内置`,srcUser:`自建`,srcPlugin:`插件`}},monitor:{k1dzryry003:`我的资源`,k16zpmg9002:`admin 全量视图`,k1dg9sr8001:`归属用户`,title:`运行时监控`,subtitle:`已装配的 ChannelRuntime / AgentRuntime 与 harness 进程台账`,refresh:`刷新`,autoRefresh:`自动刷新`,needLogin:`需要登录后才能查看运行时资源`,goLogin:`前往登录`,loadFailed:`加载监控数据失败`,failed:`操作失败`,channels:`Channel 运行时`,agents:`Agent 运行时`,aliveProcesses:`活跃 harness 进程`,orphan:`孤儿`,server:`服务进程`,updated:`快照`,channelRuntimes:`ChannelRunTime`,agentRuntimes:`AgentRunTime`,harnessProcesses:`harness 进程`,chChannel:`Channel`,members:`成员数`,wired:`已装配`,scheduler:`调度循环`,scheduling:`运行中`,lead:`Lead`,name:`名称`,role:`角色`,harness:`harness`,state:`状态`,stateIdle:`空闲`,stateBusy:`执行中`,stateStopped:`已停止`,currentTask:`当前任务`,queue:`队列`,channel:`Channel`,actions:`操作`,terminate:`终止`,terminated:`已终止`,terminateConfirm:`终止该进程后,对应 AgentRuntime 将随之停止并卸载。确认终止`,terminatePidConfirm:`强杀该进程(PID),若已绑定 runtime 会一同停止。确认终止`,binding:`归属`,bound:`已绑定`,agent:`Agent`,command:`命令`,startedAt:`启动时间`,alive:`存活`,exited:`已退出`,openTerminal:`终端`,openTerminalHint:`接入该 omp 进程的原生终端(实时 TUI 输出 + HITL 人工控制)`},terminal:{title:`harness 原生终端`,abort:`中止回合`,clear:`清屏`,stateIdle:`空闲`,stateRunning:`回合执行中`,stateStreaming:`流式输出中`,stateExited:`进程已退出`,connOpen:`已连接`,connConnecting:`连接中`,connRetrying:`重连中`,connClosed:`未连接`,hint:`终端内直接输入并回车注入 omp 会话(流式中=steer 同轮注入 / 空闲=follow_up 新回合)/ ↑↓ 历史 / Ctrl+C 中止`,hitlTitle:`HITL 对话框 · 等待你的回答`,hitlCancel:`取消对话框`,hitlConfirm:`确认`,hitlDeny:`拒绝`,hitlSubmit:`提交`},agents:{hMock:`mock(测试)`,hOmp:`omp(真实 LLM)`,badConfigJson:`config 不是合法 JSON`,toPrivate:`点击转为私有`,toPublic:`点击公开(全员可读可用)`,builtinNoEdit:`内置模板不可修改`,ownerOnlyEdit:`仅属主可修改`,builtinNoDelete:`内置模板不可删除`,readOnly:`只读`,editTpl:`编辑模板`,newTpl:`新建模板`,configLabel:`config(JSON;mock 可配 delayMs)`,notInstalled:`未安装`,installLink:`前往官网安装 ↗`,harnessInprocess:`进程内引擎 · 恒可用`,k3pa5h4025:`模板库`,k3xhia001:`名称`,k3lrqn0002:`可见性`,k3l98u7003:`创建者`,k3mr526004:`实例数`,k3xhfg005:`启用`,k40aa6006:`操作`,keetzvf007:`删除模板?(已克隆实例保留)`,k5nsz7y008:`模板按用户隔离:私有仅本人可见;公开后全员可读可用(仅属主可修改);内置模板公开且不可变更。`,krpx6qa009:`返回工作区`,k1efixrj010:`新建模板`,ka1gpdj011:`admin 视图:可见全部用户的模板与创建者`,k45eb0012:`编辑`,k3xakp013:`删除`,k1d036zs014:`尚无实例`,k17jfge3015:`私有(仅本人可见)`,k1tt5zyo016:`公开(全员可读可用,仅本人可修改)`,k3x23c017:`内置`,k3wv1t018:`公开`,k447jj019:`私有`,k3n9aij020:`已更新`,k3n5hak021:`已创建`,k3n5sd7022:`已删除`,kxa6cxx023:`已公开:全员可读可用,仅你可修改`,k1xxabaf024:`已转为私有`},ctpl:{visPublic:`公开`,visPrivate:`私有`,newTplTitle:`新建 Channel 模板`,leadTplLabel:`Lead 模板(实例化时克隆为 channel lead)`,kefkfnl030:`已实例化:{p0}(成员 {p1} 个),到工作区挂载使用`,kbInstTitle:`实例化 {p0}`,kbOption:`知识库集成(rag-bridge)`,kbHint:`开启后本频道加载知识库插件:优化前先检索场景数据分析与物理机理,收口后由 lead 把经验沉淀入知识库;lead 还可用 team_grant_nodes 把自己绑定的节点授权给 worker。`,kbOn:`开启`,kbOff:`关闭`,k1f54iqd029:`模板中心`,k117jag9001:`删除模板?(已实例化的 Channel 不受影响)`,knjomku002:`按模板新建 Channel(成员自动装配)`,k1f55q76003:`模板名称`,k40gkk004:`描述`,k1ju32o7005:`选择 lead 模板(可空)`,k5uq1js006:`Worker 成员模板(实例化时逐个克隆)`,kqmdkc9007:`选择成员模板(可空)`,k1q87yho008:`作业场景 Prompt(注入全部成员)`,kk4u5cr009:`工作目录(留空 = 实例化时默认)`,k3lrqn0010:`可见性`,k18gglgp011:`场景 + 工作目录 + 团队的组合模板;一键实例化为 Channel(成员自动装配)。模板按用户隔离,公开后全员可用。`,krpx6qa012:`返回工作区`,k1efixrj013:`新建模板`,ka1gpdj014:`admin 视图:可见全部用户的模板与创建者`,k3rx4ps015:`空团队`,k3xakp016:`删除`,k3mr1fo017:`实例化`,k19fglby018:`新建第一个 Channel 模板`,k17jfge3019:`私有(仅本人可见)`,k191u0u5020:`公开(全员可实例化,仅本人可修改)`,k3x23c021:`内置`,k3wv1t022:`公开`,k447jj023:`私有`,k1i0ji0y024:`模板名必填`,kyppebc025:`模板已创建;可在工作区左侧会话栏一键实例化挂载`,kkziya3026:`已公开:全员可实例化`,k1xxabaf027:`已转为私有`,k1oxfuqj028:`已删除模板`},daq:{unitPh:`如 %RH`,k1bge46t118:`创建节点`,k1b3dtga119:`保存模板`,k3v957u120:`{p0} 运行中:{p1} · {p2}`,k1x7jnru121:`{p0} 待机:开跑后本产线节点开始采集`,k1hrrqa1122:`活动配方监控窗口 {p0} ~ {p1}{p2}`,k11wnl1y123:`产线运行中:{p0} · {p1}`,k9vnp9h124:`全局 {p0}ms`,kyuadl0125:`缺少必填参数:{p0}`,k2hbo3c126:`{p0} 副本`,k15lvw0o105:`运行中 —— 当前产品:`,k3zkt2106:`开跑`,k12uge2o107:`未开跑 —— 本产线节点暂停采集`,k69vag8108:`· 已打标`,k1cg78i8109:`前往产线管理开跑`,kzg9805110:`重连基础设施`,knxpdpt111:`恢复全部采集`,k1fstglk112:`测试连接`,k7pxjxo113:`测试通过后创建并采集`,k3xakp114:`删除`,k1efixrj115:`新建模板`,k1b39281116:`保存修改`,k3ozyqz117:`未运行`,k3ktxbr085:`产线「`,k400lb086:`批次`,k3xagp087:`发布`,k427eu088:`消费`,k3w8go089:`丢失`,k3wusd090:`入库`,k48oi091:`位`,k4118o092:`样本`,k1ukoy0v093:`前往产线管理`,k1ld43ur094:`重连中…`,kpui00095:`暂停全部采集`,k3vp67i096:`运行中`,kr45rk9097:` · 自定义`,kjbqphp098:`(栈未装)`,k1fsh720099:`测试中…`,k1bg4759100:`创建中…`,k1hhheu3101:`确认删除`,k1iiph0s102:`编辑模板`,k1b38d59103:`保存中…`,k1l3pt51104:`配方越限`,k1e8lcoo001:`节点未单独设置 WS 下发间隔时的全局缺省;0 = 随采样节拍每帧下发`,k1yztsu4002:`生产者已发布到队列`,ko09iha003:`消费者已从队列取得`,kj1jbmw004:`时序库累计入库样本`,kgpxzy3005:`缺省按模板自增命名`,k5opd2t006:`如 烘箱湿度`,kk8o4tl007:`缺省同名称`,kzn3l7l008:`缺省自动生成`,khb8mru009:`节点所属产线的开跑状态:未开跑/未分配的节点不采集`,k3q23v3010:`节点产线归属(未挂载产线的节点不采集)`,k1emg364011:`数采中心`,k1wmg2bz012:`采集 → 队列(MQTT)→ 时序库(Timescale)→ WS 实时下发全链路;节点实体与参数以服务端为准。`,k19onw5w013:`产线未开跑 —— 数采由产线配方驱动:请在`,k1b2tk5c014:`产线运营`,k1u9wnlg015:`开跑产线,并将节点挂载到产线`,k1ifahxj016:`缺省周期`,k1if98n0017:`缺省下发`,k1f5cv0s018:`模板管理`,k1fn0ukb019:`添加节点`,k1b2o3b6020:`产线状态`,k3zgkk021:`待机`,k1el12b1022:`暂无产线`,k8jxxe8023:`去产线运营创建`,k19rioqa024:`添加数采节点`,k1p5c1un025:`Mock 模拟源`,k1cbcp3o026:`真实设备采集`,k1fsgerc027:`信号模板(量程/单位域)`,k1ce2k1y028:`节点名称(可选)`,k13mfsfc029:`采样周期 ms(空=跟随全局)`,k1kt87rx030:`通信协议`,k3xdnn031:`取消`,k11mv96s032:`信号模板管理`,ktji4ky033:`自定义模板`,k45eb0034:`编辑`,kztvzbo035:`暂无自定义模板 —— 从下方内置模板复制,或直接在下方表单新建。`,k3xhia036:`名称`,k3x4ef037:`单位`,k1l477m0038:`通道语义`,k1ayxrqb039:`位号代号`,k1l9jv5m040:`量程下限`,k1l9jv4p041:`量程上限`,k3mxmcx042:`小数位`,k3xx56043:`图标`,k1f4eknv044:`模拟基值`,kytd15s045:`Mock 采样中心值,缺省量程中点`,k1f4ifpo046:`模拟波幅`,ksp2aji047:`Mock 波动幅度,缺省量程 4%`,k48p40048:`重置`,k1w8s84s049:`内置模板(只读,可复制)`,k3y694050:`复制`,k3wj9n051:`产线`,k1bkl9uj052:`全部产线`,k3ootr6053:`未分配`,k1optt001:`Agent 优化记录`,k1optf001:`全部产线`,k1optf002:`刷新`,k1optf004:`全部 Recipe`,k1flttpl010:`模板`,k1flttpl011:`全部模板`,k1fltdrv012:`驱动`,k1fltdrv013:`全部驱动`,k1flttim014:`按最后采样时间过滤`,k1flttim015:`数据时间`,k1flttim016:`全部时间`,k1timlv017:`5 分钟内`,k1timhr018:`1 小时内`,k1timdy019:`24 小时内`,k1timld020:`24 小时前`,k1timnv021:`从未上报`,k1fltsrc022:`搜索`,k1fltsph023:`节点名称 / ID…`,k1opte001:`暂无优化记录 —— Agent 经 dcw_control 调控后自动在册`,k1opte002:`窗口内无数采数据(产线未运行或节点未绑定)`,k1opta001:`序列`,k1opta002:`回退`,k1opto001:`进行中:待 Agent dcw_judge 判定`,k1optw001:`窗口聚合计算中…`,k1optw002:`越限`,k1optst001:`进行中`,k1optst002:`已判定·保留`,k1optst003:`已回退`,k1optst004:`被新设定替代`,k1optst005:`被手动写替代`,k1optst006:`停线封窗`,k1optst007:`异常`,k1optst008:`已判定·回退未执行`,k1trnd001:`趋势`,k1trnd002:`实时趋势:最近 60 个读数,虚线为上下限`,k1wrn001:`高于上限`,k1wrn002:`低于下限`,k1wrn003:`配方窗`,k1wrn004:`安全量程`,k1i8rtqt054:`绑定设备`,k1bkw4m2055:`全部设备`,k3own4q056:`未绑定`,k2bindtip137:`绑定设备(与数字孪生/节点检查器同源,server 落库)`,k1b2tkyv057:`产线运行`,k3x4t1058:`全部`,k1nxm3p7059:`采集开启(运行中)`,k1ulx34e060:`采集关闭(待机/未分配)`,k1iwdfef061:`节点状态`,k41k5c062:`正常`,k49z8v063:`预警`,k3xmid064:`告警`,k44c2n065:`离线`,k1fygck2066:`清除筛选`,k45uio067:`节点`,k42w8s068:`状态`,k3mv305069:`实时值`,k1l6g2ga070:`采样周期`,k3zi0nf071:`WS 下发`,k4a0la072:`驱动`,k40aa6073:`操作`,k3o3jg2074:`控制台`,kvhjyc3075:`暂无数采节点 —— 在数字孪生空间从左轨「数采节点 · DAQ」拖入即可(server 建立节点实体)。`,k1w20qew076:`无匹配节点 —— 当前筛选条件下没有节点,请调整或清除筛选。`,k1bhhheq077:`前往登录`,k41mvv078:`每帧`,k422b8079:`温度`,k3x6ff080:`压力`,k3z9xc081:`张力`,k3subk4082:`编码器`,k47atw083:`视觉`,kz7yhbj084:`电参/网关`,k1prodrc128:`产品 / Recipe`,k1staled129:`产线运行中但无新数据(>{p0}s 未采样)—— 节点离线或驱动故障`,k1disabl130:`停用`,k1runtipc131:`节点所属产线的开跑状态:运行中才采集`,k1prdrtip132:`本产线当前运行批次的产品与配方`,k1tsdbtip133:`时序存储后端:DAQ_TSDB_URL 可切换 TimescaleDB`,k1queuet134:`消息队列:DAQ_MQTT_URL 可切换标准 MQTT broker`,k1droptip135:`队列丢失(produced-consumed)`,k1eg1000a136:`如 1000`,k1needtst137:`真实场景需先通过测试连接`,k1plndrv138:`预留协议:待真实通道接入`,k1idlehin139:`产线未运行:开跑后本节点开始采集`,k1gateoff140:`数采网关已暂停 —— 全部节点停止采集`,k1alarm141:`未确认报警`,k1ack142:`确认`,k1esc143:`已升级 {p0} 次重发通知`,k1acked144:`报警已确认`,k1snap145:`暂停全部采集:停止所有启用节点的采样。节点级启停独立:手动停用的节点保持停用,恢复后仅启用节点恢复采集`,k1nodestop146:`停止采集`,k1nodestart147:`启动采集`,k1evt001:`暂无未确认告警`,k1evt002:`实时事件`,k1evt003:`日志管理`,k1evt004:`暂无事件,等待操作…`},daqDetail:{bucket1s:`1s 桶`,bucket5s:`5s 桶`,bucket15s:`15s 桶(默认)`,bucket30s:`30s 桶`,bucket60s:`1min 桶`,calDecoderTip:`采集标定 decoder:物理值 = scale × PLC采集值 + offset`,calScaleTip:`decode 斜率(≠0)`,calOffsetTip:`decode 截距`,kfrm0001:`图像帧画廊`,kfrm0002:`多点轮廓帧`,kfrm0003:`暂无帧(产线运行中才有数据)`,kfrm0004:`点数`,kfrm0005:`指标`,kfrm0006:`点击查看原图`,k9vnp9h053:`全局 {p0}ms`,k3n5aaj045:`已停用`,k1cgi8fy046:`节点独立周期`,k3oktae047:`无标定`,k1cggz5f048:`节点独立下发`,k3n42dj049:`定间隔`,ksn9cgo050:`下发参数到采集器`,k1fstglk051:`测试连接`,k452a8052:`绑定`,k1fx2vik032:`实时值 ·`,k1p9gioa033:`驱动连接参数 ·`,k1i535i5034:`时序库历史(`,kz8zr9v035:`(预留)`,k3own4q036:`未绑定`,k3w3j8f037:`采集中`,k1k2ueyq038:`跟随全局周期`,k1eru4r1039:`标定生效`,k1k2t5o7040:`跟随全局下发`,k41mvv041:`每帧`,k1as0g50042:`下发中…`,k1fsh720043:`测试中…`,k479eh044:`解绑`,k1emg364001:`数采中心`,k1bhhheq002:`前往登录`,k4a0la003:`驱动`,k3xg3w004:`周期`,k3w6td005:`下发`,k3x5tpx006:`预警带`,k1hjj0jf007:`硬限量程`,k1i8rtqt008:`绑定设备`,kd9d69j009:`采集参数(server 单点控制)`,k1iw7tbf010:`节点启停`,k12k23od011:`所属产线(未挂载不采集)`,k3ootr6012:`未分配`,k1l6smxo013:`采样驱动`,k3x4ef014:`单位`,k3mxmcx015:`小数位`,k1l9jv5m016:`量程下限`,k1md63hm017:`预警下限`,k1md63gp018:`预警上限`,k1l9jv4p019:`量程上限`,k1ie6qju020:`设备绑定(端到端集成)`,kjobzu3021:`选择设备孪生…`,k3x1jg022:`刷新`,k40vsf023:`时间`,k48v5024:`值`,k4bza025:`态`,k41k5c026:`正常`,k49z8v027:`预警`,k3xmid028:`告警`,k44c2n029:`离线`,k1m1zwux030:`每帧(随采样)`,k3lha20031:`原始点`,k1rfrshint001:`趋势图自动拉取间隔(ms);留空或 0 = 跟随服务端默认(daq.query.displayIntervalMs),最小 {p0}ms`},logs:{title:`产线日志`,sub:`仅记录与产线相关的操作:下发/配方/回退/产线/数采/告警/人工记录;登录与系统管理事件不入册。按产线、Recipe 与时间检索`,live:`实时`,liveHint:`WS 实时接收产线操作事件(仅摘要渲染;完整详情查询于下表)`,all:`全部`,fLine:`产线`,fProduct:`产品`,fSource:`来源`,fKind:`分类`,fFrom:`开始时间`,fTo:`结束时间`,fKeyword:`关键词`,fKeywordPh:`搜索摘要/操作/操作者…`,invalidTime:`时间格式无效:请重新选择开始/结束时间`,invalidRange:`时间区间无效:开始时间不能晚于结束时间`,mLineRequired:`请先选择产线:产线日志只接收带产线归属的记录`,query:`查询`,reset:`重置`,thTime:`时间`,thActor:`操作者`,thSummary:`事件摘要`,thScope:`归属(产线/产品/Recipe)`,thDetail:`详情`,expand:`详情`,fold:`收起`,loading:`查询中…`,empty:`无匹配日志`,mSummary:`记录内容`,mSummaryPh:`如:更换 3 号烘箱加热丝,当前批次延长保温 10 分钟`,mDetail:`详情(可选)`,mDetailPh:`补充说明、处置过程、关联单号等(将存入日志详情)`,mLevel:`严重级`,quickErrHint:`只看 error 级(系统故障/写入失败);数字为实时轨条数,再点一次取消`,quickWarnHint:`只看 warn 级(告警/未证实);数字为实时轨条数,再点一次取消`,export:`导出 CSV`,exportHint:`把当前查询快照导出为 CSV(事故报告/工单附件)`,copyDetail:`复制详情`,copied:`已复制`,mSubmit:`入册`,mOk:`已入册`,manual:`人工记录`,noDetail:`无`,totalCount:`共 {n} 条`,src:{user:`用户`,system:`系统`},kind:{write:`下发`,manual:`人工`,alarm:`告警`,line:`产线`,recipe:`配方`,rollback:`回退`,daq:`数采`,system:`系统`}},operations:{title:`产线操作`,sub:`全部产线操作的统一实时流水:写控下发、配方批次、数采告警、建模回退与 Agent 动作,一屏可见`,live:`实时`,liveHint:`WS 实时接收产线操作事件,新事件自动插入流水顶部`,all:`全部`,fLine:`产线`,fSource:`来源`,fKind:`分类`,fKeyword:`关键词`,fKeywordPh:`搜索节点/动作/摘要…`,query:`查询`,reset:`重置`,loading:`加载中…`,empty:`暂无操作记录 —— 调整筛选或等待新的产线事件`,noDetail:`无结构化详情`,totalCount:`共 {n} 条`,actorAgent:`Agent`,actorUser:`用户`,actorSystem:`系统`,cat:{write:`写控`,daq:`数采`,aml:`建模`,recipe:`配方`,rollback:`回退`,alarm:`告警`,line:`产线`,manual:`人工`,system:`系统`}},analysis:{title:`数据分析`,sub:`Agent Channel 分析产出的持久留痕台账:关键结论、配方联动、时间窗与完整正文,随时可查`,live:`实时`,liveHint:`WS 实时接收分析留痕事件(analysis_save),新报告自动刷新`,all:`全部`,fLine:`产线`,fCat:`类别`,fWindow:`分析时间`,fKeyword:`关键词`,fKeywordPh:`搜索标题/关键结论…`,query:`查询`,reset:`重置`,loading:`加载中…`,empty:`暂无分析报告 —— Agent 在频道内调用 analysis_save 留痕后在此可见`,noDetail:`无附加产出`,expand:`详情`,fold:`收起`,count:`{p0} 条报告`,ledgerHint:`留痕台账 · append-only(Agent 面不可改删)`,remove:`删除`,removeConfirm:`删除分析报告「{p0}」?删除后不可恢复`,cancel:`取消`,editTitle:`修订分析报告`,save:`保存修订`,kRecipe:`配方 id`,kVersion:`配方版本`,kWindowFrom:`数据窗起点`,kWindowTo:`数据窗终点`,conclusionsHint:`每行一条`,kRevised:`修订记录`,thTime:`分析时间`,thLine:`产线`,thTitle:`标题`,thRecipe:`配方`,thSummary:`关键结论`,thSource:`来源`,thDetail:`详情`,kId:`报告 id`,kWindow:`数据窗`,kSources:`证据来源`,kConclusions:`结论明细`,kReport:`完整正文`,kMetrics:`支撑指标`,kContext:`产线上下文快照`,cat:{quality:`质量`,oee:`OEE`,alarm:`告警`,trend:`趋势`,optimization:`寻优`,general:`综合`},win:{h1:`1 小时内`,h24:`24 小时内`,d7:`7 天内`,d30:`30 天内`,all:`全部时间`}},dcw:{codePh:`如 MOTOR · I`,unitPh:`如 A`,k1qidbpy061:`缺省 {p0}(按创建序)`,k1gp649b062:`{p0}(节点 {p1}/产品 {p2}/配方 {p3} 将解除挂载)`,k7xq2mfd063:`删除产线「{p0}」?`,k5tq8wc071:`编辑产线`,k9m2vxa072:`连同旗下节点/产品/配方一起删除(不可恢复)`,k4r7nbd073:`产线「{p0}」及其 {p1} 节点 · {p2} 产品 · {p3} 配方将一并删除,不可恢复`,k3t616a058:`自定义`,k149r6y7059:`○ 待机`,k1elczt9060:`暂无配方`,k3ootr6049:`未分配`,k3wj9n050:`产线`,k11nndsp051:`控制模板 ·`,k3zz0f052:`打标`,k19dlbli053:`跟随主题自动配色`,k3x23c054:`内置`,k1eox1el055:`● 运行中`,k18moyq1056:`选择配方后即可开跑数据采集`,kutxzsz057:`选择配方…`,k1i5a9vw001:`存在未挂载产线的节点/产品,可在对应产线详情页收编`,k1yfm3gv002:`删除产线(旗下节点/产品/配方解除挂载)`,k1dhaby4003:`选择配方后开跑`,kru37i3004:`如 1号产线 / 流延线 A`,k1f2nwsp005:`产线用途说明`,k1tooi3o006:`如 电机电流设定`,k698qz0007:`如 电机电流`,k1qdnfzc008:`如:电机电流设定:电流升高表示负载增大…调整需小幅步进并观察温升`,k1b2tk5c009:`产线运营`,k5q0aqi010:`产线是节点/产品/配方/数据的顶层隔离单元:每个控制节点挂载到产线,开跑后本产线数采逐样本携带产线标识;
2
+ import{t as e}from"./DK3Fl9T5.js";import{a as t,i as n,l as r,n as i,o as a,r as o,s,t as c}from"./BqFaZ4kS.js";import{C as l,N as u,S as d,a as f,b as p,g as m,l as h,mt as g,u as _,v}from"./CavpkQb0.js";import{A as y,D as b,H as x,J as S,L as C,O as w,P as T,S as E,T as D,V as O,a as ee,b as k,d as A,f as j,h as te,i as ne,j as re,m as ie,nt as ae,o as M,p as N,rt as oe,tt as P,x as se,y as ce}from"./C6lssmvl.js";import{i as le,r as ue}from"./ri9UF8rk.js";import{i as de,l as fe,r as pe,t as me,u as he}from"./BkSViqQd.js";import{t as ge}from"./rxhDcyfF.js";import{_ as _e,a as ve,c as ye,d as be,g as xe,i as Se,l as Ce,m as F,n as we,o as Te,p as Ee,r as De,s as Oe,t as ke,v as Ae,y as je}from"./CDYLasP8.js";import{_ as Me,a as Ne,c as Pe,g as Fe,h as Ie,i as Le,l as Re,m as ze,o as Be,p as Ve,r as He,u as Ue}from"./DjGYvFyA.js";import{a as We,c as Ge,n as Ke,o as qe,r as Je,s as Ye,t as I}from"./BoyuIoSm.js";import{a as Xe,c as Ze,d as Qe,f as $e,i as et,l as tt,n as nt,o as rt,r as it,s as at,u as ot}from"./Bko5adbu.js";import{n as st,t as ct}from"./XqXoaoDs.js";import{a as lt,c as ut,i as dt,l as ft,n as pt,o as mt,r as ht,s as gt,t as _t,u as vt}from"./CPvFGbr8.js";import{b as yt,i as bt}from"./D83nVQPl.js";import{a as xt,i as St,n as Ct,t as wt}from"./BtumQhZK.js";import{n as Tt,t as Et}from"./BYzim_Bn.js";import{i as Dt,o as Ot,s as L}from"./DPPC9Teq.js";import{t as R}from"./HclGiUj8.js";import{a as kt,c as z,i as At,l as jt,n as Mt,o as Nt,r as Pt,s as Ft,t as It}from"./D1MkndMZ.js";import{t as Lt}from"./CElzwyXQ.js";import{t as Rt}from"./N-CCmCsX.js";import{t as zt}from"./36oeS8_R.js";import{R as Bt,jt as Vt}from"./CznnUTZx.js";import{i as Ht,r as Ut}from"./DXgw1dVL.js";import{t as Wt}from"./kZl6yT-12.js";import{n as Gt,t as Kt}from"./D_FZ3KZI2.js";import{t as qt}from"./Cv-Mv7_h2.js";import{t as Jt}from"./DNxudyND.js";import{t as Yt}from"./DKOvbitt.js";import{t as Xt}from"./BDNMzG2s.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),`global`in globalThis||(globalThis.global=globalThis);function Zt(e,t){return t&&typeof e==`function`&&(e.key=t),e}var Qt=/\\/g,$t=/</g,en=/"/g,tn=/%\w+(?:\.\w+)?/g,nn=`%separator`;function rn(e,t,n=!1){let r;if(t===`s`||t===`pageTitle`)r=e.pageTitle;else if(t.includes(`.`)){let n=t.indexOf(`.`);r=e[t.substring(0,n)]?.[t.substring(n+1)]}else r=e[t];if(r!==void 0)return n?(r||``).replace(Qt,`\\\\`).replace($t,`\\u003C`).replace(en,`\\"`):r||``}function an(e,t,n,r=!1){if(typeof e!=`string`||!e.includes(`%`))return e;let i=e;try{i=decodeURI(e)}catch{}let a=i.match(tn);if(!a)return e;let o=e.includes(nn);return e=e.replace(tn,e=>{if(e===nn||!a.includes(e))return e;let n=rn(t,e.slice(1),r);return n===void 0?e:n}).trim(),o&&(e=e.split(nn).map(e=>e.trim()).filter(e=>e!==``).join(n?` ${n} `:` `)),e}var on=(e,t)=>e._w===t._w?e._p-t._p:e._w-t._w,sn=e=>e.includes(`:key`)?e:e.split(`:`).join(`:key:`),cn=Zt({key:`aliasSorting`,hooks:{"tags:resolve":e=>{let t=!1;for(let n of e.tags){let r=n.tagPriority;if(!r)continue;let i=String(r);if(i.startsWith(`before:`)){let r=sn(i.slice(7)),a=e.tagMap.get(r);a&&(typeof a.tagPriority==`number`&&(n.tagPriority=a.tagPriority),n._p=a._p-1,t=!0)}else if(i.startsWith(`after:`)){let r=sn(i.slice(6)),a=e.tagMap.get(r);a&&(typeof a.tagPriority==`number`&&(n.tagPriority=a.tagPriority),n._p=a._p+1,t=!0)}}t&&(e.tags=e.tags.sort(on))}}}),ln=Zt({key:`deprecations`,hooks:{"entries:normalize":({tags:e})=>{for(let t of e)t.props.children&&(t.innerHTML=t.props.children,delete t.props.children),t.props.hid&&(t.key=t.props.hid,delete t.props.hid),t.props.vmid&&(t.key=t.props.vmid,delete t.props.vmid),`body`in t.props&&(t.props.body&&(t.tagPosition=`bodyClose`),delete t.props.body),t.props.renderPriority!=null&&(t.tagPriority=t.props.renderPriority,delete t.props.renderPriority)}}});function un(e){return typeof e?.then==`function`}function dn(e){if(typeof e==`function`)return e;if(un(e))return Promise.resolve(e).then(dn);if(Array.isArray(e)){let t=e.map(dn);return t.some(un)?Promise.all(t):e}if(e?.constructor===Object){let t=Object.keys(e),n=t.map(t=>dn(e[t]));if(n.some(un))return Promise.all(n).then(e=>Object.fromEntries(t.map((t,n)=>[t,e[n]])))}return e}var fn=Zt(e=>{let t=new WeakMap;return{key:`promises`,hooks:{"entries:resolve":n=>{for(let r=n.entries.length-1;r>=0;r--){let i=n.entries[r],a=i.input;if(t.get(i)===a){n.entries.splice(r,1);continue}let o=dn(a);if(!un(o)){t.delete(i);continue}t.set(i,a),n.entries.splice(r,1),Promise.resolve(o).then(n=>{t.get(i)===a&&(t.delete(i),i.input=n,delete i._tags,e.invalidate?.())},()=>{t.get(i)===a&&t.delete(i)})}}}}},`promises`),pn={meta:`content`,link:`href`,htmlAttrs:`lang`},mn=[`innerHTML`,`textContent`],hn=Zt(e=>({key:`template-params`,hooks:{"tags:resolve":({tagMap:t,tags:n})=>{let r=t.get(`templateParams`)?.props||{},i=r.separator||`|`;delete r.separator,r.pageTitle=an(r.pageTitle||e._title||``,r,i);for(let e of n){if(e.processTemplateParams===!1)continue;let t=pn[e.tag];if(t&&typeof e.props[t]==`string`)e.props[t]=an(e.props[t],r,i);else if(e.processTemplateParams||e.tag===`titleTemplate`||e.tag===`title`)for(let t of mn)typeof e[t]==`string`&&(e[t]=an(e[t],r,i,e.tag===`script`&&typeof e.props.type==`string`&&e.props.type.endsWith(`json`)))}e._templateParams=r,e._separator=i},"tags:afterResolve":({tagMap:t})=>{let n=t.get(`title`);n?.textContent&&n.processTemplateParams!==!1&&(n.textContent=an(n.textContent,e._templateParams,e._separator))}}}),`template-params`);function gn(e,t){if(typeof t==`function`&&t.key&&e.plugins.has(t.key))return;let n=typeof t==`function`?t(e):t,r=n.key||String(e.plugins.size+1);if(!e.plugins.get(r)){e.plugins.set(r,n);for(let t in n.hooks||{})e.hooks?.hook(t,n.hooks[t])}}function _n(e,t={}){let n=!t.document,r=new Map,i={_entryCount:1,_h:0,plugins:new Map,resolvedOptions:t,ssr:n,entries:r,hooks:void 0,render:()=>e(i),use:e=>gn(i,e),push(e,t){let a=t?._index??i._entryCount++,o=t?{...t}:{};delete o.head,delete o.onRendered,delete o._index;let s={_i:a,input:e,options:o};return r.set(a,s),{_i:a,dispose(){r.delete(a)},patch(e){n?(s.input=e,delete s._tags):s._pending=e,r.has(a)||r.set(a,s)}}}};return t.init?.forEach(e=>e&&i.push(e)),i}var vn=n(()=>{dt(`skipHydrate`,e=>!qe(e)&&1),lt(`skipHydrate`,e=>void 0)});function yn(e){try{return JSON.parse(e)}catch{return e}}var bn=[[`NuxtError`,e=>Se(e)],[`EmptyShallowRef`,e=>d(e===`_`?void 0:e===`0n`?BigInt(0):yn(e))],[`EmptyRef`,e=>v(e===`_`?void 0:e===`0n`?BigInt(0):yn(e))],[`ShallowRef`,e=>d(e)],[`ShallowReactive`,e=>p(e)],[`Ref`,e=>v(e)],[`Reactive`,e=>m(e)]],xn=o({name:`nuxt:revive-payload:client`,order:-30,async setup(e){let t,n;for(let[e,t]of bn)lt(e,t);Object.assign(e.payload,([t,n]=s(()=>e.runWithContext(mt)),t=await t,n(),t)),delete window.__NUXT__}},1);function Sn(e,t){t.push(me),e.vueApp.use(t);let n=!0,r=()=>{n=!1,t.render()};t.hooks?.hook(`dom:beforeRender`,e=>{e.shouldRender=!n}),e.hooks.hook(`page:start`,()=>{n=!0}),e.hooks.hook(`page:finish`,()=>{e.isHydrating||r()}),e.hooks.hook(`app:error`,r),e.hooks.hook(`app:suspense:resolve`,r);let i=t.push.bind(t);t.push=((t,n)=>{let r=i(t,n),a=r.dispose.bind(r);return r.dispose=()=>{let t=e[`~transitionPromise`];t?t.finally(a):a()},r})}function Cn(e,t,n){let r=e.push,i=e;return i.ssr=!1,i.hooks=t,i.dirty=!!i.dirty,i.use=e=>gn(i,e),i.render=()=>n(i),i.invalidate=()=>{for(let e of i.entries.values())delete e._tags;i.dirty=!0,t.callHook(`entries:updated`,i)},i.push=(n,a)=>{let o=a?.onRendered?t.hook(`dom:rendered`,a.onRendered):void 0,s=r(n,a),c=e.entries.get(s._i);return c&&(c._o=n),i.dirty=!0,t.callHook(`entries:updated`,i),{_i:s._i,patch(e){s.patch(e),i.dirty=!0,t.callHook(`entries:updated`,i)},dispose(){o?.(),e.entries.has(s._i)&&(s.dispose(),i.invalidate())}}},t.hook(`entries:updated`,()=>{i.render()}),i}var wn=/\s+/;function Tn(e={}){return t=>kn(t,e)}function En(e){for(let t of e.entries.values())if(t._pending!==void 0)return!0;return!1}function Dn(e){for(let t in e._s)e._s[t]();for(let t in e._p)e._p[t]();e._s={},e._p={},e._e.clear(),e._l.clear()}function On(e,t){let n={_d:t,_t:t.title,_e:new Map([[`htmlAttrs`,t.documentElement],[`bodyAttrs`,t.body]]),_p:{},_s:{},_l:new Map};for(let e of[...t.body.children,...t.head.children]){let t=e.tagName.toLowerCase();if(!Qe.has(t))continue;let r={innerHTML:e.innerHTML};for(let t of e.getAttributeNames())r[t]=e.getAttribute(t);let i=at({tag:t,props:{}},r);i.key=e.getAttribute(`data-hid`)||void 0;let a=et(i)||Xe(i),o=a,s=1;for(;n._e.has(o);)o=`${a}:${s++}`;n._e.set(o,e)}for(let t of e.entries.values())if(t._o!==void 0){let e=t._o;for(let t of[`bodyAttrs`,`htmlAttrs`]){let r=e[t]?.class;if(typeof r==`string`){let e=n._e.get(t);for(let i of r.split(wn))i&&(n._p[`${t}:attr:class:${i}`]=()=>e.classList.remove(i))}}}return n}function kn(e,t={}){let n=t.document||e.resolvedOptions.document,r=e._dom,i=!!r&&r._d!==n;if(!n||r&&!i&&!e.dirty&&!En(e)||e._du)return!1;let a=n.defaultView;e._du=!0;let o=!1;try{let r=function(e,t,n,r){let i=`${e}:${t}`;d._s[i]=!r&&d._p[i]||n,delete d._p[i]},i=function(e){let t=d._p[e];return delete d._p[e],t},s=function(e,t,n,i,a,o){let s=`event:${t}`,c=`${e}:${s}`,l=d._l.get(c);if(l&&l[0]===o&&l[1]===n&&l[2]===i){r(e,s,l[4]);return}l?.[4]();let u=`data-${t}`,f=(e=>i.call(a,e)),p=()=>{o.removeEventListener(n,f),a.getAttribute(u)===``&&a.removeAttribute(u),d._l.get(c)?.[3]===f&&d._l.delete(c)};o.addEventListener(n,f),d._l.set(c,[o,n,i,f,p]),a.setAttribute(u,``),r(e,s,p,!0)},c=function({id:e,$el:t,tag:n}){let o=n.tag.endsWith(`Attrs`);if(d._e.set(e,t),!o){let a=n.textContent;a!=null&&a!==``&&(a!==t.textContent&&(t.textContent=a),r(e,`text`,()=>{t.textContent===a&&(t.textContent=``)},!0));let o=n.innerHTML;o!=null&&o!==``&&(o!==t.innerHTML&&(t.innerHTML=o),r(e,`html`,()=>{t.innerHTML===o&&(t.innerHTML=``)},!0));let s=`${e}:el`;d._s[s]=i(s)||(()=>{t?.remove(),d._e.delete(e)})}for(let r in n.props){let o=n.props[r];if(r[0]===`o`&&r[1]===`n`&&typeof o==`function`){let i=r.slice(2);t?.dataset?.[`${r}fired`]&&o.call(t,new((a?.Event)||Event)(i)),s(e,r,i,o,t,n.tag===`bodyAttrs`&&a?a:t);continue}let c=`${e}:attr:${r}`;if(r===`class`&&o)for(let e of o){let n=`${c}:${e}`;d._s[n]=i(n)||(()=>t.classList.remove(e)),t.classList.contains(e)||t.classList.add(e)}else if(r===`style`&&o)for(let[e,n]of o){let r=`${c}:${e}`;d._s[r]=i(r)||(()=>t.style.removeProperty(e)),t.style.setProperty(e,n)}else o!==!1&&o!==null&&(t.getAttribute(r)!==o&&t.setAttribute(r,o===!0?``:String(o)),d._s[c]=i(c)||(()=>t.removeAttribute(r)))}},l={shouldRender:!0,tags:[]};if(tt(e,`dom:beforeRender`,l),!l.shouldRender)return!1;let u=e._dom;u?._d!==n&&(u&&Dn(u),u=void 0),u?u._p=u._s:u=On(e,n),u._s={};let d=u,f=[],p={};e.dirty=!1;let m=Ze(e,t.tagWeight?{tagWeight:t.tagWeight}:void 0),h=[],g={};for(let e of m){let t=g[e._d]||0,i=(t?`${e._d}:${t}`:e._d)||e._h,a={tag:e,id:i,shouldRender:!0};if(e.tag===`meta`&&e._d&&rt(e._d)&&(g[e._d]=t+1),h.push(a),e.tag===`title`){n.title=e.textContent,r(`title`,``,()=>n.title=d._t);continue}a.$el=d._e.get(i),a.$el?c(a):Qe.has(e.tag)&&f.push(a)}for(let e of f)e.$el=n.createElement(e.tag.tag),c(e),(p[e.tag.tagPosition||`head`]??=n.createDocumentFragment()).appendChild(e.$el);p.head&&n.head.appendChild(p.head),p.bodyOpen&&n.body.insertBefore(p.bodyOpen,n.body.firstChild),p.bodyClose&&n.body.appendChild(p.bodyClose);for(let e in d._p)d._p[e]();e._dom=d,o=!0,tt(e,`dom:rendered`,{renders:h})}catch(t){throw e.dirty=!0,t}finally{e._du=!1}return o&&(e.dirty||En(e))&&kn(e,t),o}var An=e=>typeof e.tagPriority==`number`?e.tagPriority:100+($e[e.tagPriority]||0);function jn(e={}){e.document=e.document||(typeof window<`u`?document:void 0);let t=e.render||Tn({document:e.document}),n=Cn(_n(t,{document:e.document,propResolvers:e.propResolvers,_tagWeight:An,init:[]}),ot(e.hooks),t);return e.plugins?.forEach(e=>n.use(e)),e.init?.forEach(e=>e&&n.push(e)),n}function Mn(e={}){let t=Tn(),n,r=0;return n=jn({render:()=>{let e=++r;setTimeout(()=>{e===r&&t(n)},0)},...e}),n.install=it(n),n}var Nn={disableDefaults:!0,plugins:[ln,fn,hn,cn]},Pn=o({name:`nuxt:head`,enforce:`pre`,setup(e){Sn(e,Mn(Nn))}}),Fn=/(:\w+)\([^)]+\)/g,In=/(:\w+)[?+*]/g,Ln=/:\w+/g,Rn=(e,t)=>t.path.replace(Fn,`$1`).replace(In,`$1`).replace(Ln,t=>e.params[t.slice(1)]?.toString()||``),zn=(e,t)=>{let n=e.route.matched.find(t=>t.components?.default===e.Component.type),r=t??n?.meta.key??(n&&Rn(e.route,n));return typeof r==`function`?r(e.route):r},Bn=(e,t)=>({default:()=>e?D(ee,e===!0?{}:e,t):t});function Vn(e){return Array.isArray(e)?e:[e]}var Hn=[Ce(async e=>{let t,n;if(!e.meta?.validate)return;let r=([t,n]=s(()=>Promise.resolve(e.meta.validate(e))),t=await t,n(),t);if(r!==!0)return Se({fatal:!0,status:r&&(r.status||r.statusCode)||404,statusText:r&&(r.statusText||r.statusMessage)||`Page Not Found: ${e.fullPath}`,data:{path:e.fullPath}})},1),Ce(async()=>{let e,n,r=I(`aw.locale`).value;if(r!==`en`&&r!==`zh-CN`)return;let i=t().$i18n;i&&r!==i.locale.value&&([e,n]=s(()=>i.setLocale(r)),e=await e,n())},1),Ce(e=>{let t=vt({path:e.path});if(t.redirect){let n=t.redirect.includes(`#`)?t.redirect:t.redirect+e.hash;return He(n,{acceptRelative:!0})?(window.location.href=n,!1):n}})],Un={},Wn=[{name:`aml-composables-useAmlDatasets`,path:`/aml/composables/useAmlDatasets`,component:()=>R(()=>import(`./B_Obcbiu.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url)},{name:`aml-composables-useAmlEntities`,path:`/aml/composables/useAmlEntities`,component:()=>R(()=>import(`./JegDslce.js`).then(e=>e.n),__vite__mapDeps([9,1,10,11,2,5,12,13,14,15,3,4,6,7,8]),import.meta.url)},{name:`aml-composables-useAmlEnv`,path:`/aml/composables/useAmlEnv`,component:()=>R(()=>import(`./eePbiWEh.js`).then(e=>e.n),__vite__mapDeps([16,1,2,5,11,17,18,4,6,19,20,12,13,14,15,3,7,8,21]),import.meta.url)},{name:`aml-composables-useAmlExperiments`,path:`/aml/composables/useAmlExperiments`,component:()=>R(()=>import(`./D7TZLu4F.js`).then(e=>e.n),__vite__mapDeps([22,1,2,5,3,4,6,7,8]),import.meta.url)},{name:`aml-composables-useAmlFormat`,path:`/aml/composables/useAmlFormat`,component:()=>R(()=>import(`./2v5GdspM.js`).then(e=>e.n),__vite__mapDeps([23,1,11,2,5,21]),import.meta.url)},{name:`aml-composables-useAmlJobs`,path:`/aml/composables/useAmlJobs`,component:()=>R(()=>import(`./CnYazk8d.js`).then(e=>e.n),__vite__mapDeps([24,1,2,5,11,25,12,13,14,15,3,4,6,26,27,19,7,8,23,21]),import.meta.url)},{name:`aml-composables-useAmlModels`,path:`/aml/composables/useAmlModels`,component:()=>R(()=>import(`./SvjzWbn8.js`).then(e=>e.n),__vite__mapDeps([28,1,2,11,5,12,13,14,15,3,4,6,7,8]),import.meta.url)},{name:`aml-composables-useAmlNotes`,path:`/aml/composables/useAmlNotes`,component:()=>R(()=>import(`./B6UwtJ1a.js`).then(e=>e.n),__vite__mapDeps([29,1,2,11,5,12,13,14,15,3,4,6,7,8]),import.meta.url)},{name:`aml-composables-useAmlPredict`,path:`/aml/composables/useAmlPredict`,component:()=>R(()=>import(`./CLFmtXU7.js`).then(e=>e.n),__vite__mapDeps([30,1,2,5,11,12,13,14,15,3,4,6,7,8]),import.meta.url)},{name:`analysis-composables-useAnalysisFeed`,path:`/analysis/composables/useAnalysisFeed`,component:()=>R(()=>import(`./BtZKe9ZV2.js`).then(e=>e.n),__vite__mapDeps([31,1,2,5,25,8,3,4,6,32]),import.meta.url)},{name:`daq-composables-useDaqAddNode`,path:`/daq/composables/useDaqAddNode`,component:()=>R(()=>import(`./B37d6f-P2.js`).then(e=>e.n),__vite__mapDeps([33,1,2,5,3,4,6,34,25,8]),import.meta.url)},{name:`daq-composables-useDaqDetailBinding`,path:`/daq/composables/useDaqDetailBinding`,component:()=>R(()=>import(`./MJD65-MH2.js`).then(e=>e.n),__vite__mapDeps([35,1,2,5,34,25,3,4,6,8,36]),import.meta.url)},{name:`daq-composables-useDaqDetailFrames`,path:`/daq/composables/useDaqDetailFrames`,component:()=>R(()=>import(`./CfE35xQa2.js`).then(e=>e.i),__vite__mapDeps([37,1,5,2,34,25,3,4,6,8]),import.meta.url)},{name:`daq-composables-useDaqDetailHistory`,path:`/daq/composables/useDaqDetailHistory`,component:()=>R(()=>import(`./D9saExk92.js`).then(e=>e.n),__vite__mapDeps([38,1,2,5,11,17,18,4,6,19,20,34,25,3,8]),import.meta.url)},{name:`daq-composables-useDaqDetailNode`,path:`/daq/composables/useDaqDetailNode`,component:()=>R(()=>import(`./BclHgAY62.js`).then(e=>e.n),__vite__mapDeps([39,1,5,2,40,41,11,34,25,3,4,6,8,42,36]),import.meta.url)},{name:`daq-composables-useDaqDetailParams`,path:`/daq/composables/useDaqDetailParams`,component:()=>R(()=>import(`./DNlwacP72.js`).then(e=>e.n),__vite__mapDeps([43,1,2,5,3,4,6,34,25,8]),import.meta.url)},{name:`daq-composables-useDaqFilters`,path:`/daq/composables/useDaqFilters`,component:()=>R(()=>import(`./BEbg8OxK2.js`).then(e=>e.i),__vite__mapDeps([44,1,2,5,11,34,25,3,4,6,8,42,36,45]),import.meta.url)},{name:`daq-composables-useDaqNodeWindow`,path:`/daq/composables/useDaqNodeWindow`,component:()=>R(()=>import(`./D-80EfyA2.js`).then(e=>e.n),__vite__mapDeps([46,1,2,5]),import.meta.url)},{name:`daq-composables-useDaqOptimizations`,path:`/daq/composables/useDaqOptimizations`,component:()=>R(()=>import(`./Df35i2Tg2.js`).then(e=>e.n),__vite__mapDeps([47,1,2,5,42,25,3,4,6,8]),import.meta.url)},{name:`daq-composables-useDaqTemplates`,path:`/daq/composables/useDaqTemplates`,component:()=>R(()=>import(`./DPIImHuY2.js`).then(e=>e.r),__vite__mapDeps([48,1,2,5,3,4,6,34,25,8,45]),import.meta.url)},{name:`dcw-composables-useDcwAddNode`,path:`/dcw/composables/useDcwAddNode`,component:()=>R(()=>import(`./DzPypczG.js`).then(e=>e.n),__vite__mapDeps([49,1,2,5,11,3,4,6,8,42,25]),import.meta.url)},{name:`dcw-composables-useDcwCards`,path:`/dcw/composables/useDcwCards`,component:()=>R(()=>import(`./DW6X-3XT.js`).then(e=>e.n),__vite__mapDeps([50,1,5,2,42,25,3,4,6,8]),import.meta.url)},{name:`dcw-composables-useDcwDetailScope`,path:`/dcw/composables/useDcwDetailScope`,component:()=>R(()=>import(`./DvfiRGS-.js`).then(e=>e.n),__vite__mapDeps([51,1,5,2,40,41,11,34,25,3,4,6,8,42,36]),import.meta.url)},{name:`dcw-composables-useDcwDetailTemplates`,path:`/dcw/composables/useDcwDetailTemplates`,component:()=>R(()=>import(`./B8vwpJxO.js`).then(e=>e.n),__vite__mapDeps([52,1,2,5,11,3,4,6,42,25,8,45]),import.meta.url)},{name:`dcw-composables-useDcwFilter`,path:`/dcw/composables/useDcwFilter`,component:()=>R(()=>import(`./CwHhmA3N.js`).then(e=>e.n),__vite__mapDeps([53,1,2,5,42,25,3,4,6,8]),import.meta.url)},{name:`dcw-composables-useDcwLedger`,path:`/dcw/composables/useDcwLedger`,component:()=>R(()=>import(`./CBpkE3Aa.js`).then(e=>e.n),__vite__mapDeps([54,1,2,42,25,3,4,5,6,8]),import.meta.url)},{name:`dcw-composables-useDcwLineMutations`,path:`/dcw/composables/useDcwLineMutations`,component:()=>R(()=>import(`./DDLi49qE.js`).then(e=>e.n),__vite__mapDeps([55,1,2,3,4,5,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwLineRun`,path:`/dcw/composables/useDcwLineRun`,component:()=>R(()=>import(`./CuHnwZbm.js`).then(e=>e.n),__vite__mapDeps([56,1,2,5,11,3,4,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwParamApprovals`,path:`/dcw/composables/useDcwParamApprovals`,component:()=>R(()=>import(`./CoAJnzi9.js`).then(e=>e.n),__vite__mapDeps([57,1,2,5,17,18,4,6,19,20,8,3,58,59,60,61,42,25]),import.meta.url)},{name:`dcw-composables-useDcwProducts`,path:`/dcw/composables/useDcwProducts`,component:()=>R(()=>import(`./C0I4h6do.js`).then(e=>e.n),__vite__mapDeps([62,1,2,5,3,4,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwQuery`,path:`/dcw/composables/useDcwQuery`,component:()=>R(()=>import(`./C-wrWG5m.js`).then(e=>e.n),__vite__mapDeps([63,1,2,5,11,3,4,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwQuickActions`,path:`/dcw/composables/useDcwQuickActions`,component:()=>R(()=>import(`./CHpYSwnV.js`).then(e=>e.n),__vite__mapDeps([64,1,2,3,4,5,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwRecipes`,path:`/dcw/composables/useDcwRecipes`,component:()=>R(()=>import(`./FQK98hkN2.js`).then(e=>e.n),__vite__mapDeps([65,1,2,11,5,3,4,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwTemplates`,path:`/dcw/composables/useDcwTemplates`,component:()=>R(()=>import(`./WZrTmJqL.js`).then(e=>e.n),__vite__mapDeps([66,1,2,5,11,3,4,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useDcwWrites`,path:`/dcw/composables/useDcwWrites`,component:()=>R(()=>import(`./BFUO7wT0.js`).then(e=>e.n),__vite__mapDeps([67,1,2,11,5,3,4,6,42,25,8]),import.meta.url)},{name:`dcw-composables-useExpConfirmations`,path:`/dcw/composables/useExpConfirmations`,component:()=>R(()=>import(`./C14pM5G4.js`).then(e=>e.n),__vite__mapDeps([68,1,2,5,11,17,18,4,6,19,20,3,8]),import.meta.url)},{name:`dcw-composables-useRecipeDispatchApprovals`,path:`/dcw/composables/useRecipeDispatchApprovals`,component:()=>R(()=>import(`./CnrGVJIr.js`).then(e=>e.n),__vite__mapDeps([69,1,2,5,11,17,18,4,6,19,20,3,8]),import.meta.url)},{name:`logs-composables-useLogsFormat`,path:`/logs/composables/useLogsFormat`,component:()=>R(()=>import(`./DudoisLM.js`).then(e=>e.n),__vite__mapDeps([70,1,11,2,5]),import.meta.url)},{name:`logs-composables-useLogsManual`,path:`/logs/composables/useLogsManual`,component:()=>R(()=>import(`./CYLe9LKr.js`).then(e=>e.n),__vite__mapDeps([71,1,2,11,5,12,13,14,15,3,4,6,72,25,8]),import.meta.url)},{name:`logs-composables-useLogsQuery`,path:`/logs/composables/useLogsQuery`,component:()=>R(()=>import(`./CtcBhkci.js`).then(e=>e.i),__vite__mapDeps([73,1,2,5,11,12,13,14,15,72,25,3,4,6,8]),import.meta.url)},{name:`logs-composables-useLogsScope`,path:`/logs/composables/useLogsScope`,component:()=>R(()=>import(`./Cgym6fLd2.js`).then(e=>e.n),__vite__mapDeps([74,1,42,2,25,3,4,5,6,8]),import.meta.url)},{name:`workshop-composables-useAgentHarnessOptions`,path:`/workshop/composables/useAgentHarnessOptions`,component:()=>R(()=>import(`./DYQBIsiV2.js`).then(e=>e.n),__vite__mapDeps([75,1,2,5,11,76,77,4,6]),import.meta.url)},{name:`workshop-composables-useAgentTemplateActions`,path:`/workshop/composables/useAgentTemplateActions`,component:()=>R(()=>import(`./Ud9o8ItR2.js`).then(e=>e.n),__vite__mapDeps([78,1,11,2,5,12,13,14,15,3,4,6,76,77]),import.meta.url)},{name:`workshop-composables-useAgentTemplateDialogState`,path:`/workshop/composables/useAgentTemplateDialogState`,component:()=>R(()=>import(`./BBhLVYdM2.js`).then(e=>e.n),__vite__mapDeps([79,1,2]),import.meta.url)},{name:`workshop-composables-useAgentTemplateForm`,path:`/workshop/composables/useAgentTemplateForm`,component:()=>R(()=>import(`./Br_q4qi72.js`).then(e=>e.n),__vite__mapDeps([80,1,2,5,11,12,13,14,15,3,4,6,76,77]),import.meta.url)},{name:`workshop-composables-useAgentTemplatesCatalog`,path:`/workshop/composables/useAgentTemplatesCatalog`,component:()=>R(()=>import(`./6P4ZAzxa2.js`).then(e=>e.n),__vite__mapDeps([81,1,2,5,11,60,59,19,20,76,77,4,6,45]),import.meta.url)},{name:`workshop-composables-useTeamActions`,path:`/workshop/composables/useTeamActions`,component:()=>R(()=>import(`./DH_oqyfL.js`).then(e=>e.n),__vite__mapDeps([82,1,11,2,5,12,13,14,15,3,4,6,76,77]),import.meta.url)},{name:`workshop-composables-useTeamAddMemberDialog`,path:`/workshop/composables/useTeamAddMemberDialog`,component:()=>R(()=>import(`./fIV9zbnA.js`).then(e=>e.n),__vite__mapDeps([83,1,2,5,11,12,13,14,15,3,4,6,76,77]),import.meta.url)},{name:`workshop-composables-useTeamCreateDialog`,path:`/workshop/composables/useTeamCreateDialog`,component:()=>R(()=>import(`./DmReUFK1.js`).then(e=>e.n),__vite__mapDeps([84,1,2,5,11,12,13,14,15,76,77,4,6]),import.meta.url)},{name:`workshop-composables-useTeamDeployDialog`,path:`/workshop/composables/useTeamDeployDialog`,component:()=>R(()=>import(`./BY2u4LPg.js`).then(e=>e.n),__vite__mapDeps([85,1,2,5,11,12,13,14,15,3,4,6,76,77]),import.meta.url)},{name:`workshop-composables-useTeamDialogState`,path:`/workshop/composables/useTeamDialogState`,component:()=>R(()=>import(`./TOWR4WpO.js`).then(e=>e.n),__vite__mapDeps([86,1,2]),import.meta.url)},{name:`workshop-composables-useTeamPluginDialog`,path:`/workshop/composables/useTeamPluginDialog`,component:()=>R(()=>import(`./BSxcHoiy.js`).then(e=>e.n),__vite__mapDeps([87,1,2,5,11,12,13,14,15,3,4,6,76,77]),import.meta.url)},{name:`workshop-composables-useTeamsCatalog`,path:`/workshop/composables/useTeamsCatalog`,component:()=>R(()=>import(`./m6G-kfdj.js`).then(e=>e.n),__vite__mapDeps([88,1,2,5,11,60,59,19,20,76,77,4,6]),import.meta.url)},{name:`workshop-composables-useWorkbenchAuth`,path:`/workshop/composables/useWorkbenchAuth`,component:()=>R(()=>import(`./cKj4vSo5.js`).then(e=>e.n),__vite__mapDeps([89,1,2,5,11,12,13,14,15,60,59,19,20,3,4,6,61]),import.meta.url)},{name:`workshop-composables-useWorkbenchWorkspaces`,path:`/workshop/composables/useWorkbenchWorkspaces`,component:()=>R(()=>import(`./CZsFf7ck.js`).then(e=>e.n),__vite__mapDeps([90,1,2,5,18,4,6,19,20,11,12,13,14,15,60,59,3,91,17,25,26,27,61,58,92]),import.meta.url)},{name:`workshop-composables-useWorkspaceAuth`,path:`/workshop/composables/useWorkspaceAuth`,component:()=>R(()=>import(`./DiloA8vK.js`).then(e=>e.n),__vite__mapDeps([93,1,2,5,18,4,6,19,20,60,59,92]),import.meta.url)},{name:`workshop-composables-useWorkspaceChannels`,path:`/workshop/composables/useWorkspaceChannels`,component:()=>R(()=>import(`./Du7gS8RU.js`).then(e=>e.n),__vite__mapDeps([94,1,5,2,18,4,6,19,20,91,59,17,25,60,3,26,27,61,58,92]),import.meta.url)},{name:`workshop-composables-useWorkspacePanels`,path:`/workshop/composables/useWorkspacePanels`,component:()=>R(()=>import(`./BRci9D_l.js`).then(e=>e.n),__vite__mapDeps([95,1,2,5,92,59,19,20,60]),import.meta.url)},{name:`workshop-composables-useWorkspaceShell`,path:`/workshop/composables/useWorkspaceShell`,component:()=>R(()=>import(`./BfgTar9L.js`).then(e=>e.n),__vite__mapDeps([96,1,2,5,40,41,11,97]),import.meta.url)},{name:`workshop-w-wsId`,path:`/workshop/w/:wsId()`,meta:{layout:`default`},component:()=>R(()=>import(`./BwQJEuBn.js`),__vite__mapDeps([98,4,2,5,6,13,18,19,20,99,11,100,101,41,17,14,15,102,103,12,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,60,59,128,129,3,26,27,91,25,61,58,92,130,76,77,131,10,132,133,134,135,34,8,42,36,45,136,97,137,93,1,94,95,96,40,138]),import.meta.url)},{name:`aml-api`,path:`/aml/api`,component:()=>R(()=>import(`./Cn6EojFe.js`).then(e=>e.n),__vite__mapDeps([7,1,8,3,4,2,5,6]),import.meta.url)},{name:`aml-constants`,path:`/aml/constants`,component:()=>R(()=>import(`./B6Olw0Op.js`).then(e=>e.s),__vite__mapDeps([21,1]),import.meta.url)},{name:`aml-types`,path:`/aml/types`,component:()=>R(()=>import(`./BvRk9kiK.js`),[],import.meta.url)},{name:`analysis-types`,path:`/analysis/types`,component:()=>R(()=>import(`./9j2J4k4w.js`).then(e=>e.r),__vite__mapDeps([32,1]),import.meta.url)},{name:`composables-useDashboardCharts`,path:`/composables/useDashboardCharts`,component:()=>R(()=>import(`./ilJHF1nA2.js`).then(e=>e.n),__vite__mapDeps([139,1,5,2,11]),import.meta.url)},{name:`composables-useDashboardData`,path:`/composables/useDashboardData`,component:()=>R(()=>import(`./C5x3IQz42.js`).then(e=>e.n),__vite__mapDeps([140,1,2,5,141,4,6,19,18,20,59,27,142,41,101,13,10,100,143,34,25,3,8,42,76,77]),import.meta.url)},{name:`dcw-types`,path:`/dcw/types`,component:()=>R(()=>import(`./C50LmoI1.js`),[],import.meta.url)},{name:`ontology-api`,path:`/ontology/api`,component:()=>R(()=>import(`./DWy0AjON.js`).then(e=>e.t),__vite__mapDeps([144,1,8,3,4,2,5,6]),import.meta.url)},{name:`ontology-types`,path:`/ontology/types`,component:()=>R(()=>import(`./DgrK8UCQ.js`),[],import.meta.url)},{name:`optimizer-api`,path:`/optimizer/api`,component:()=>R(()=>import(`./k9b520K-.js`).then(e=>e.t),__vite__mapDeps([145,1,8,3,4,2,5,6]),import.meta.url)},{name:`studio-board`,path:`/studio/board`,component:()=>R(()=>import(`./Co8Dcx132.js`),__vite__mapDeps([146,2,5,13,142,4,6,19,18,20,41,101,11,100,128,147,1,3,8,148,149,150]),import.meta.url)},{name:`studio-pipeline`,path:`/studio/pipeline`,component:()=>R(()=>import(`./yS3bF3G32.js`),__vite__mapDeps([151,2,5,13,142,4,6,19,18,20,41,101,10,11,100,128,3,8,149,152]),import.meta.url)},{name:`workshop-agents`,path:`/workshop/agents`,meta:{layout:`default`},component:()=>R(()=>import(`./CjdxNYpU2.js`),__vite__mapDeps([153,2,5,18,4,6,19,20,99,11,100,101,13,41,154,14,103,15,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,104,108,112,117,126,127,128,130,80,1,3,76,77,75,78,79,81,60,59,45,159]),import.meta.url)},{name:`workshop-channel-templates`,path:`/workshop/channel-templates`,meta:{layout:`default`},component:()=>R(()=>import(`./tDEwr422.js`),__vite__mapDeps([160,2,5,18,4,6,19,20,99,11,100,101,13,41,104,14,103,15,102,12,105,106,107,108,109,110,111,112,113,117,125,126,127,60,59,128,3,130,76,77,45,161]),import.meta.url)},{name:`workshop-schedules`,path:`/workshop/schedules`,meta:{layout:`default`},component:()=>R(()=>import(`./BwOko01T.js`),__vite__mapDeps([162,2,5,99,4,6,11,17,18,19,20,14,103,13,15,107,102,12,154,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,104,108,112,117,163,115,123,118,124,126,128,3,130,76,77,164]),import.meta.url)},{name:`workshop-teams`,path:`/workshop/teams`,meta:{layout:`default`},component:()=>R(()=>import(`./DZqVVvR0.js`),__vite__mapDeps([165,2,5,18,4,6,19,20,99,11,100,101,13,41,104,14,103,15,102,12,105,106,107,108,109,110,111,112,113,114,121,158,119,120,125,126,127,128,130,45,82,1,3,76,77,83,84,85,86,87,88,60,59,166]),import.meta.url)},{name:`daq-id`,path:`/daq/:id()`,meta:{layout:`default`},component:()=>R(()=>import(`./DZc-zU-H2.js`),__vite__mapDeps([167,2,5,13,142,4,6,19,18,20,41,101,11,128,26,27,130,37,1,34,25,3,8,35,36,38,17,39,40,42,43,168]),import.meta.url)},{name:`dcw-id`,path:`/dcw/:id()`,component:()=>R(()=>import(`./CEOSV8kw.js`),__vite__mapDeps([169,2,5,13,142,4,6,19,18,20,41,101,11,125,14,128,8,3,26,27,61,45,136,65,1,42,25,49,51,40,34,36,52,54,56,57,17,58,59,60,62,63,67,68,69,170]),import.meta.url)},{name:`aml`,path:`/aml`,meta:{layout:`default`},component:()=>R(()=>import(`./BaYDgyaR.js`),__vite__mapDeps([171,2,5,13,99,4,6,11,17,18,19,20,12,14,15,128,3,91,59,25,60,26,27,61,58,7,1,8,0,9,10,21,16,22,23,24,28,29,30,130,172,173]),import.meta.url)},{name:`analysis`,path:`/analysis`,component:()=>R(()=>import(`./gfKPQ5o72.js`),__vite__mapDeps([174,2,5,13,11,12,14,15,117,103,102,60,59,19,20,128,3,4,6,8,26,27,91,17,18,25,61,58,32,1,31,74,42,175]),import.meta.url)},{name:`daq`,path:`/daq`,meta:{layout:`default`},component:()=>R(()=>import(`./Lq_0yoit2.js`),__vite__mapDeps([176,2,5,13,99,4,6,142,19,18,20,41,101,11,12,14,15,125,128,3,91,59,17,25,60,26,27,61,58,130,172,34,8,42,36,33,1,44,45,46,47,48,72,177]),import.meta.url)},{name:`data`,path:`/data`,component:()=>R(()=>import(`./-gwj-zlk2.js`),__vite__mapDeps([178,2,5,13,11,100,101,18,4,6,19,20,41,17,128,147,1,3,8,179]),import.meta.url)},{name:`dcw`,path:`/dcw`,component:()=>R(()=>import(`./BkZomIrQ.js`),__vite__mapDeps([180,2,5,13,142,4,6,19,18,20,41,101,11,128,42,25,3,8,45,68,1,17,50,53,55,64,66,181]),import.meta.url)},{name:`logs`,path:`/logs`,component:()=>R(()=>import(`./CjhzuymI.js`),__vite__mapDeps([182,2,5,13,155,14,103,15,107,113,105,111,120,156,157,128,91,59,19,20,17,18,4,6,25,60,3,26,27,61,58,42,8,74,1,72,70,11,71,12,73,183]),import.meta.url)},{name:`monitor`,path:`/monitor`,meta:{layout:`default`},component:()=>R(()=>import(`./BfvuWqSa.js`),__vite__mapDeps([184,2,5,18,4,6,19,20,11,14,15,13,154,103,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,117,163,115,108,112,126,60,59,128,130,185,1,186,26,27,131,10,123,118,132,187,17,61,188,189]),import.meta.url),children:[{name:`monitor-composables-useMonitorColumns`,path:`composables/useMonitorColumns`,component:()=>R(()=>import(`./BK4wbfGS.js`).then(e=>e.r),__vite__mapDeps([185,1,5,2,11,60,59,19,20]),import.meta.url)},{name:`monitor-composables-useMonitorData`,path:`composables/useMonitorData`,component:()=>R(()=>import(`./CRCrWy-6.js`).then(e=>e.n),__vite__mapDeps([187,1,2,5,11,17,18,4,6,19,20,12,13,14,15,60,59,26,27,61]),import.meta.url)},{name:`monitor-composables-useMonitorFormat`,path:`composables/useMonitorFormat`,component:()=>R(()=>import(`./jDuiDtGb.js`).then(e=>e.r),__vite__mapDeps([186,1,11,2,5,26,27,4,6,19]),import.meta.url)},{name:`monitor-composables-useMonitorTerminal`,path:`composables/useMonitorTerminal`,component:()=>R(()=>import(`./BxHBIVAg.js`).then(e=>e.n),__vite__mapDeps([188,1,2]),import.meta.url)},{name:`monitor-types`,path:`types`,component:()=>R(()=>import(`./DybRo6-H.js`),[],import.meta.url)}]},{name:`ontology`,path:`/ontology`,component:()=>R(()=>import(`./D8AvmPUH.js`),__vite__mapDeps([190,2,5,13,11,154,14,103,15,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,123,118,127,60,59,19,20,128,3,4,6,144,1,8,191]),import.meta.url)},{name:`operations`,path:`/operations`,component:()=>R(()=>import(`./C0wjQa6_.js`),__vite__mapDeps([192,2,5,13,155,14,103,15,107,113,105,111,120,156,157,128,26,27,4,6,19,91,59,20,17,18,25,60,3,61,58,74,1,42,8,72,193,194]),import.meta.url),children:[{name:`operations-composables-useOperationsFeed`,path:`composables/useOperationsFeed`,component:()=>R(()=>import(`./DRskyE7l.js`).then(e=>e.o),__vite__mapDeps([193,1,2,5,72,25,3,4,6,8]),import.meta.url)}]},{name:`optimizer`,path:`/optimizer`,meta:{layout:`default`},component:()=>R(()=>import(`./BPUQZ9Lq2.js`),__vite__mapDeps([195,2,5,13,99,4,6,11,128,130,145,1,8,3,196]),import.meta.url)},{name:`permissions`,path:`/permissions`,component:()=>R(()=>import(`./26OL4Ao82.js`),__vite__mapDeps([197,2,5,13,18,4,6,19,20,11,154,14,103,15,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,163,115,108,123,118,60,59,128,3,61,198]),import.meta.url)},{name:`plugins`,path:`/plugins`,component:()=>R(()=>import(`./BVg2R2VB2.js`),__vite__mapDeps([199,2,5,13,11,12,14,15,116,123,118,126,105,60,59,19,20,128,3,4,6,61,45,200,201,202,203]),import.meta.url)},{name:`settings`,path:`/settings`,component:()=>R(()=>import(`./CBkXv24C2.js`),__vite__mapDeps([204,4,2,5,6,13,59,19,20,141,18,27,142,41,101,10,100,11,12,14,15,113,103,107,105,106,116,163,115,108,114,102,121,110,122,111,124,125,126,60,205,77,143,128,3,8,76,200,201,202,206]),import.meta.url)},{name:`studio`,path:`/studio`,component:()=>R(()=>import(`./CNRjkgAZ2.js`),__vite__mapDeps([207,2,5,13,18,4,6,19,20,142,41,101,11,100,128,147,1,3,8,148,149,208]),import.meta.url)},{name:`tokens`,path:`/tokens`,meta:{layout:`default`},component:()=>R(()=>import(`./DuUc4bbY2.js`),__vite__mapDeps([209,2,5,13,18,4,6,19,20,99,11,154,14,103,15,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,117,163,115,108,112,60,59,128,130,210,1,3,211,212,213,214,215]),import.meta.url),children:[{name:`tokens-composables-useTokenClipboard`,path:`composables/useTokenClipboard`,component:()=>R(()=>import(`./DkJVtqfc2.js`).then(e=>e.n),__vite__mapDeps([212,1]),import.meta.url)},{name:`tokens-composables-useTokenCreate`,path:`composables/useTokenCreate`,component:()=>R(()=>import(`./Dt8TL8_X2.js`).then(e=>e.n),__vite__mapDeps([211,1,2,5,11,12,13,14,15,60,59,19,20,3,4,6,212]),import.meta.url)},{name:`tokens-composables-useTokenRename`,path:`composables/useTokenRename`,component:()=>R(()=>import(`./DW4ZgInh2.js`).then(e=>e.n),__vite__mapDeps([213,1,2,11,5,12,13,14,15,60,59,19,20,3,4,6]),import.meta.url)},{name:`tokens-composables-useTokenReveal`,path:`composables/useTokenReveal`,component:()=>R(()=>import(`./DwgVlehj2.js`).then(e=>e.r),__vite__mapDeps([214,1,2,11,5,12,13,14,15,60,59,19,20,212]),import.meta.url)},{name:`tokens-composables-useTokensList`,path:`composables/useTokensList`,component:()=>R(()=>import(`./ByTnUqFw2.js`).then(e=>e.n),__vite__mapDeps([210,1,2,5,11,12,13,14,15,60,59,19,20,3,4,6]),import.meta.url)}]},{name:`tools`,path:`/tools`,component:()=>R(()=>import(`./byZYInPk2.js`),__vite__mapDeps([216,2,5,11,154,13,14,103,15,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,123,118,128,3,4,6,76,77,217]),import.meta.url)},{name:`town`,path:`/town`,meta:{layout:`town`,title:`Digital Twin`},component:()=>R(()=>import(`./C7BcCB7C2.js`),__vite__mapDeps([218,2,5,18,4,6,19,20,59,60,128,91,17,25,3,26,27,61,58,92,130,133,13,10,11,77,134,135,129,34,8,42,36,45,136,97,137,219]),import.meta.url)},{name:`users`,path:`/users`,component:()=>R(()=>import(`./DhLlTxQh2.js`),__vite__mapDeps([220,2,5,99,4,6,11,154,13,14,103,15,107,102,12,113,105,106,109,110,114,155,111,120,156,157,121,158,119,125,117,163,115,108,112,60,59,19,20,128,61,221]),import.meta.url)},{name:`workshop`,path:`/workshop`,meta:{layout:`default`},component:()=>R(()=>import(`./dHwWyr6b.js`),__vite__mapDeps([222,2,5,13,18,4,6,19,20,99,11,100,101,41,12,14,15,106,107,103,105,112,125,60,59,128,3,223,115,108,114,102,163,224,130,89,1,61,90,91,17,25,26,27,58,92,225]),import.meta.url)},{name:`index`,path:`/`,component:()=>R(()=>import(`./D1Ljnzu-.js`),__vite__mapDeps([226,2,5,18,4,6,19,20,99,142,41,101,13,11,100,128,147,1,172,17,139,140,141,59,27,10,143,34,25,3,8,42,76,77,200,201,202,227]),import.meta.url)}];function Gn(e,t,n){let{pathname:r,search:i,hash:a}=t,o=e.indexOf(`#`);if(o>-1){let t=a.includes(e.slice(o))?e.slice(o).length:1,n=a.slice(t);return n[0]!==`/`&&(n=`/`+n),Ie(n,``)}let s=Ie(r,e),c=!n||Ne(s,n)?s:n;return c+(c.includes(`?`)?``:i)+a}var Kn=o({name:`nuxt:router`,enforce:`pre`,async setup(e){let t,n,r=a().app.baseURL,i=L.history?.(r)??St(r),o=L.routes?([t,n]=s(()=>L.routes(Wn)),t=await t,n(),t??Wn):Wn,c,l=Ct({...L,scrollBehavior:(e,t,n)=>{if(t===bt){c=n;return}if(L.scrollBehavior){if(l.options.scrollBehavior=L.scrollBehavior,`scrollRestoration`in window.history){let e=l.beforeEach(()=>{e(),window.history.scrollRestoration=`manual`})}return L.scrollBehavior(e,bt,c||n)}},history:i,routes:o});`scrollRestoration`in window.history&&(window.history.scrollRestoration=`auto`),e.vueApp.use(l);let u=d(l.currentRoute.value);l.afterEach((e,t)=>{u.value=t}),Object.defineProperty(e.vueApp.config.globalProperties,"previousRoute",{get:()=>u.value});let f=Gn(r,window.location,e.payload.path),g=d(l.currentRoute.value),_=()=>{g.value=l.currentRoute.value};l.afterEach((e,t)=>{let n=e.matched.at(-1)?.components?.default,r=t.matched.at(-1)?.components?.default;if(n===r){zn({route:e,Component:{type:n}})===zn({route:t,Component:{type:r}})&&_();return}e.matched.length<t.matched.length&&e.matched.every((e,n)=>e.components?.default===t.matched[n]?.components?.default)&&_()});let v={sync:_};for(let e in g.value)Object.defineProperty(v,e,{get:()=>g.value[e],enumerable:!0});e._route=p(v),e._middleware||={global:[],named:{}};let y=Oe();l.afterEach(async(t,n,r)=>{delete e._processingMiddleware,!e.isHydrating&&y.value&&await e.runWithContext(De),r&&await e.callHook(`page:loading:end`)});try{[t,n]=s(()=>l.isReady()),await t,n()}catch(r){[t,n]=s(()=>we(e,r)),await t,n()}let b=f===l.currentRoute.value.fullPath?l.currentRoute.value:l.resolve(f),x=l.currentRoute.value.fullPath,S=e.isHydrating&&e.payload.prerenderedAt&&e.payload.path&&f!==e.payload.path&&Ne(l.currentRoute.value.path,e.payload.path);_();function C(t){!e.isHydrating&&t.fullPath!==Gn(r,window.location)&&i.push(t.fullPath)}let w=e.payload.state._layout;return l.beforeEach(async(t,n)=>{await e.callHook(`page:loading:start`),t.meta=m(t.meta),e.isHydrating&&w&&!h(t.meta.layout)&&(t.meta.layout=w),e._processingMiddleware=!0;{let r=new Set([...Hn,...e._middleware.global]);for(let e of t.matched){let t=e.meta.middleware;if(t)for(let e of Vn(t))r.add(e)}let i=vt({path:t.path});if(i.appMiddleware)for(let e in i.appMiddleware)i.appMiddleware[e]?r.add(e):r.delete(e);for(let i of r){let r=typeof i==`string`?e._middleware.named[i]||await Un[i]?.().then(e=>e.default||e):i;if(!r)throw xe.NUXT_E2004({entry:String(i),validMiddleware:void 0});try{let i=await e.runWithContext(()=>r(t,n));if(!e.payload.serverRendered&&e.isHydrating&&(i===!1||i instanceof Error)){let t=i||Se({status:404,statusText:`Page Not Found: ${f}`});return await e.runWithContext(()=>Te(t)),!1}if(i===!0)continue;if(i===!1)return i;if(i)return ve(i)&&i.fatal&&(await e.runWithContext(()=>Te(i)),C(t)),i}catch(n){let r=Se(n);return r.fatal&&(await e.runWithContext(()=>Te(r)),C(t)),r}}}}),l.onError(async()=>{delete e._processingMiddleware,await e.callHook(`page:loading:end`)}),l.afterEach(t=>{if(t.matched.length===0&&!y.value)return e.runWithContext(()=>Te(Se({status:404,fatal:!1,statusText:`Page not found: ${t.fullPath}`,data:{path:t.fullPath}})))}),e.hooks.hookOnce(`app:created`,async()=>{try{if(`name`in b&&(b.name=void 0),l.currentRoute.value.fullPath===x){if(S){let t=l.resolve(e.payload.path);`name`in t&&(t.name=void 0),await l.replace({...t,force:!0});let n=()=>{e[`~restoreDeferredRoute`]&&(e[`~restoreDeferredRoute`]=void 0,l.currentRoute.value=l.resolve(f),_(),l.replace({...b,force:!0}).catch(()=>{}))};e[`~restoreDeferredRoute`]=n,e.hooks.hookOnce(`app:suspense:resolve`,n)}else await l.replace({...b,force:!0})}l.options.scrollBehavior=L.scrollBehavior}catch(t){await we(e,t)}}),{provide:{router:l}}}},1),qn=o({name:`nuxt:payload`,setup(e){let t=new Set;F().beforeResolve(async(n,r)=>{let i=gt(n.path),a=i?Fe(n.fullPath):n.path;if(a===(i?Fe(r.fullPath):r.path))return;let o=await ut(a);if(o){for(let n of t)delete e.static.data[n];for(let n in o.data)n in e.static.data||t.add(n),e.static.data[n]=o.data[n]}}),Ot(()=>{e.hooks.hook(`link:prefetch`,async e=>{let{hostname:t,pathname:n}=new URL(e,window.location.href);t===window.location.hostname&&await ut(e).catch(()=>{st.NUXT_E7003({url:e})})}),navigator.connection?.effectiveType!==`slow-2g`&&setTimeout(ft,1e3)})}}),Jn=o(()=>{let e=F();Ot(()=>{e.beforeResolve(async()=>{await new Promise(e=>{setTimeout(e,100),requestAnimationFrame(()=>{setTimeout(e,0)})})})})}),Yn=o(e=>{let t;async function n(){let r;try{r=await ft()}catch(e){let t=e;if(!(`status`in t&&(t.status===404||t.status===403)))throw t}t&&clearTimeout(t),t=setTimeout(n,fe);try{let n=await Ye(Ge(`builds/latest.json`)+`?${Date.now()}`);n.id!==r?.id&&(e.hooks.callHook(`app:manifest:update`,n),t&&clearTimeout(t))}catch{}}Ot(()=>{t=setTimeout(n,fe)})});function Xn(e={}){let n=e.path||window.location.pathname,r=new URL(n,window.location.href);if(r.host!==window.location.host)throw xe.NUXT_E2010({path:n});if(r.protocol&&Be(r.protocol))throw xe.NUXT_E2002({toPath:n,protocol:r.protocol});let i={};try{i=JSON.parse(sessionStorage.getItem(`nuxt:reload`)||`{}`)}catch{}if(e.force||i?.path!==n||i?.expires<Date.now()){try{sessionStorage.setItem(`nuxt:reload`,JSON.stringify({path:n,expires:Date.now()+(e.ttl??1e4)}))}catch{}if(e.persistState)try{sessionStorage.setItem(`nuxt:reload:state`,JSON.stringify({state:t().payload.state}))}catch{}window.location.pathname===n?window.location.reload():window.location.href=n}}var Zn=o({name:`nuxt:chunk-reload-crawler`,setup(e){let t=!0;e.hooks.hookOnce(`app:suspense:resolve`,()=>{t=!1}),e.hook(`app:chunkError`,()=>{t&&ge(navigator.userAgent)&&Xn()})}}),Qn=o({name:`nuxt:chunk-reload`,setup(e){let t=F(),n=a(),r=new Set;t.beforeEach(()=>{r.clear()}),e.hook(`app:chunkError`,({error:e})=>{r.add(e)});function i(e){Xn({path:Pe(n.app.baseURL,e.fullPath),persistState:!0})}e.hook(`app:manifest:update`,()=>{t.beforeResolve(i)}),t.onError((e,t)=>{r.has(e)&&i(t)})}}),$n=o({name:`nuxt:island-link-navigation`,setup(e){}}),er={common:{stop:`停止`,add:`添加`,remove:`移除`,create:`创建`,revoke:`吊销`,close:`关闭`,light:`亮色`,dark:`暗色`,confirm:`确定`,cancel:`取消`,save:`保存`,search:`搜索`,actions:`操作`,edit:`编辑`,delete:`删除`,status:`状态`,all:`全部`,copy:`复制`,copied:`已复制`},menu:{system:`AgentWorkShop`,groups:{console:`控制台`,ops:`运维`,system:`系统`},ontology:`本体模型`,dashboard:`仪表盘`,workshop:`Agent 工作台`,town:`数字孪生`,tokens:`API Token`,daq:`数采中心`,dcw:`产线运营`,dataManagement:`数据管理`,studio:`EDA 工坊`,aml:`建模`,optimizer:`优化器`,logs:`产线日志`,operations:`产线操作`,analysis:`数据分析`,users:`用户管理`,monitor:`运行时监控`,plugins:`插件管理`,tools:`工具管理`,settings:`系统设置`,permissions:`权限管理`},header:{collapse:`折叠菜单`,expand:`展开菜单`,openNav:`打开导航`,closeNav:`关闭导航`,language:`语言`,theme:`主题`,fullscreen:`全屏`,notifications:`通知`,profile:`个人中心`,guest:`访客`,login:`登录`,guestBanner:`以访客身份浏览:登录后可查看与操作您的产线`,logout:`退出登录`,trail:`航迹导航(点击返回对应页面)`,workspace:`工作台`,nodeDetail:`数采节点`,lineDetail:`产线作业`},home:{kicker:`DIGITAL TWIN · 产线运营`,heroTitle:`虚实映射的产线`,heroAccent:`运营中枢`,heroSub:`智控下发与数采回流同屏共振:配方开跑、参数设定、实时工况、越限告警一屏尽览,孪生界面与真实 PLC 同拍运行。`,ctaTown:`进入数字孪生`,ctaLine:`产线运营管理`,live:`LIVE`,kpi:{lines:`运行产线`,dcwNodes:`控制节点`,daqNodes:`数采通道`,samples:`累计采集样本`,writeRate:`写命令成功率`,alarms:`活跃告警`},charts:{trend:`实时工况趋势`,trendSub:`按节点量程归一化 · 近 3 分钟`,lineState:`产线运行状态`,pipeline:`数采管线吞吐`,writeCtl:`写控制成功率`,nodeState:`节点状态分布`,lines:`产线清单`},trendY:`量程占比 %`,trendWaiting:`正在等待实时数据流…`,trendNeedRun:`数采由活动批次门控:产线未开跑时不采样。在「产线运营」开跑后,此处显示实时趋势。`,runNow:`运行中`,standBy:`待机`,pipelineSeries:{produced:`已发布`,consumed:`已消费`,stored:`已入库`},stateDaq:`数采节点`,stateDcw:`控制节点`,states:{ok:`正常`,warn:`预警`,alarm:`告警`,writing:`写入中`,idle:`待机`,error:`故障`,offline:`离线`},batch:`运行批次`,nodesUnit:`控制节点`,daqUnit:`数采通道`,tagged:`已打标样本`,noLine:`暂无产线 —— 前往「产线运营」创建`,fleetAll:`查看全部产线`,fleetHint:`运行中优先 · 最多展示 8 条`,writesFailed:`失败`,harness:{title:`执行引擎`,sub:`Harness CLI 环境探测 · 就绪即可派工`,missing:`未安装`},fields:{name:`应用名称`,version:`版本`,mode:`运行模式`,devPort:`开发端口`,prodPort:`生产端口`,apiBase:`API 基址`,primary:`主题色`}},users:{krkb23h011:`{p0} 角色已调整为 {p1}`,k1u7u12g012:`{p0} 已{p1}`,knh5f2r013:`已删除 {p0}`,k3xhfg009:`启用`,k3wsi1010:`停用`,k1jk2os9001:`删除该用户?(其名下资源保留,归属仍可追溯)`,k1flpho5002:`管理全局用户与角色(admin 拥有最高权限:全量监控、任意模板、用户管理)。`,kpdo6rc003:`需要管理员权限`,k1mue9bl004:`用户管理仅对 admin 角色开放;请联系管理员调整角色。`,k3xakp005:`删除`,k1br33vc006:`加载失败`,k1enhqn3007:`更新失败`,k1bphrb3008:`删除失败`,title:`用户管理`,subtitle:`管理系统用户、角色与访问权限`,add:`新增用户`,search:`搜索用户名或邮箱`,deleteConfirm:`确定要删除该用户吗?`,name:`用户名`,email:`邮箱`,role:`角色`,created:`创建时间`,roleAdmin:`管理员`,roleEditor:`编辑`,roleUser:`普通用户`,active:`正常`,disabled:`已禁用`},settings:{title:`系统设置`,subtitle:`配置应用基本信息、主题外观与通知偏好`,basic:`基本设置`,basicDesc:`应用的名称、描述等基础信息`,theme:`主题设置`,themeDesc:`自定义主色调与显示模式`,notification:`通知设置`,notificationDesc:`管理系统消息通知的推送方式`,appName:`应用名称`,appDesc:`应用描述`,primaryColor:`主题色`,themeMode:`显示模式`,appearanceDesc:`主题色、深浅模式与语言偏好,实时生效并自动持久化(localStorage)。`,accentDesc:`默认品牌绿,与 Digital Twin 控制室同源;可选低饱和预设,悬停预览即时生效。`,accentInk:`品牌`,accentStone:`琥珀`,accentMoss:`苔绿`,accentSlate:`靛蓝`,accentPlum:`紫檀`,accentClay:`陶赭`,accentApplied:`主题色已应用`,accentReset:`已恢复默认主题色(跟随 config.yml)`,accentResetAction:`恢复默认`,darkDesc:`深海军蓝控制室暗阶,与数字孪生空间同一视觉语言;亮色模式保留编辑风格。`,languageDesc:`界面语言(zh-CN / en),选择即生效。`,systemTab:`系统`,systemDesc:`只读运行参数(同源 config.yml,经 nuxt.config runtimeConfig 注入)。`,identity:`当前身份`,identityGuest:`当前未登录(工作台数据需登录后查看)`,emailNotify:`邮件通知`,emailNotifyDesc:`重要事件通过邮件推送给管理员`,smsNotify:`短信通知`,smsNotifyDesc:`紧急告警通过短信即时送达`,pushNotify:`站内推送`,pushNotifyDesc:`浏览器内实时消息提醒`,saveSuccess:`设置已保存`,runtimeTab:`运行配置`,runtime:{groupMemory:`记忆系统`,groupOmp:`Agent Harness`,groupDcw:`数控写控`,groupWorkshop:`车间运行`,groupBackup:`数据备份`,groupRetention:`数据保留`,groupOptimizer:`优化器求解器`,groupLog:`日志`,title:`运行配置`,desc:`服务端持久化的运行参数:live 键保存即热重载生效(无需刷新),restart 键下次启动生效。与 CLI(aw config)同源同通道。`,live:`实时`,restart:`重启`,save:`保存设置`,resetAll:`恢复全部默认`,resetKey:`恢复默认值`,savedLive:`已保存,live 键已热重载生效`,restartNotice:`已保存。以下键需重启对应模式后生效:{keys}`,keyReset:`已恢复默认:{key}`,resetAllDone:`全部运行时覆盖已清空(回落 config.yml)`,groupServer:`服务`,groupApp:`应用`,groupTheme:`主题`,groupI18n:`国际化`,groupSecurity:`安全`,groupDaq:`数采`,groupApi:`API`,groupHarness:`Harness 接入`,groupPlugins:`插件`,memory:{primerTokens:`记忆引子预算`,injectTotal:`记忆注入硬顶`,maintenanceMs:`记忆维护周期(ms)`,expireDays:`情景记忆过期(天)`,expireSessionDays:`会话记忆过期(天)`,cap:`记忆条目上限`,reflectTrigger:`反思触发阈值`,embedBaseUrl:`Embedding 端点`,embedModel:`Embedding 模型`,embedApiKey:`Embedding 密钥`},omp:{compactEnabled:`上下文自动压缩`,compactThreshold:`压缩阈值`,compactMinIntervalMs:`压缩最小间隔(ms)`,compactWaitMs:`压缩等待超时(ms)`},dcw:{rollbackCooldownMs:`回退冷却(ms)`,rollbackMinWindowMs:`回退最小观察窗(ms)`,rollbackBaselineMs:`基线稳定窗(ms)`,rollbackStaleMs:`open 记录过期(ms)`},workshop:{idleSweepMs:`空产线扫描(ms)`,idleGraceMs:`空闲宽限(ms)`},backup:{disabled:`禁用自动备份`,intervalHours:`备份间隔(h)`,keep:`备份保留份数`},retention:{disabled:`禁用数据保留策略`,eventsDays:`事件保留(天)`,messagesDays:`消息保留(天)`,auditDays:`审计日志保留(天)`,approvalDays:`审批历史保留(天)`,analysisDays:`分析报告保留(天)`,optimizerDays:`优化运行保留(天)`,processModelDays:`过程模型台账保留(天)`},optimizer:{poolSize:`Solver 进程池上限`,requestTimeoutMs:`Solver 请求超时(ms)`,threads:`Solver 线程预算`,crosscheckTol:`互校一致性容差`},log:{level:`日志级别`},daq:{mqttQos:`MQTT QoS`,mqttUsername:`MQTT 用户名`,mqttPassword:`MQTT 密码`,mqttCaFile:`MQTT CA 证书`,mqttRejectUnauthorized:`MQTT 校验证书`,samplingDefaultIntervalMs:`节点采样默认间隔(ms)`,samplingMinIntervalMs:`节点采样下限(ms)`,queryDefaultBucketMs:`时序查询默认间隔(ms)`,queryMinBucketMs:`时序查询下限(ms)`,tsRetentionH:`标量时序保留(h)`,frameRetentionH:`帧元数据保留(h)`,alarmWebhookUrl:`告警 Webhook`,alarmEscalateMinutes:`告警升级时限(min)`,startInfrastructure:`数采基础设施拉起策略`,mqttHost:`MQTT Broker 地址`,mqttPort:`MQTT Broker 端口`,tsHost:`时序库地址`,tsPort:`时序库端口`,publishDefaultIntervalMs:`WS 下发默认间隔(ms)`,publishMinIntervalMs:`WS 下发下限(ms)`,queryDisplayIntervalMs:`趋势图刷新间隔(ms)`,queryMinDisplayIntervalMs:`趋势图刷新下限(ms)`,export:{pagesPerNode:`导出单节点分页上限`,windowMaxH:`导出时间窗上限(h)`}},aml:{pythonBin:`Python 解释器`,uvBin:`uv 可执行`,indexUrl:`pip 镜像源`,jobTimeoutMs:`作业墙钟超时(ms)`,jobMaxConcurrent:`最大并发作业`,jobDiskQuotaMb:`AML 磁盘配额(MB)`,jobStallMs:`作业停摆判定(ms)`,datasetMaxRows:`数据集行数上限`,datasetRetentionDays:`无引用数据集保留(天)`,allowCrossRecipe:`允许跨 Recipe 合并`,retiredKeepDays:`退役模型工件保留(天)`,gateNrmse:`门禁:单步 NRMSE`,gateRolloutNrmse:`门禁:多步滚动 NRMSE`,gateValTestGap:`门禁:泛化差`,gateMinRows:`门禁:最少样本行`,gateMinRuns:`门禁:最少批次数`,gateMinControlLevels:`门禁 G6:控制量最少水平数`,gateMaxCollinearity:`门禁 G6:控制量与时间最大共线`,uqFreshDays:`UQ 证据保鲜天数`},security:{hitlTimeoutMs:`HITL 审批超时(ms)`,hitlTimeoutMode:`HITL 超时语义`,approvalGate:`高危操作双人复核`,allowRegistration:`开放自助注册`,hstsEnabled:`下发 HSTS 头`,recipeDispatchApproval:`配方下发人工审批`,recipeDispatchApprovalDesc:`开启后 recipe_trial/recipe_apply 下发前挂起等待人工裁决:批准=执行;拒绝可附指导,Agent 按指导修订后重新提交`,recipeDispatchTimeoutMs:`配方方案审批超时(ms)`},server:{host:`监听地址`,devPort:`开发端口`,prodPort:`生产端口`},app:{title:`应用标题`,description:`应用描述`},api:{baseURL:`API 基址`,timeout:`API 超时(ms)`,pageSize:`默认分页大小`,maxPageSize:`分页大小上限`},theme:{primaryColor:`主题色`,mode:`显示模式`},i18n:{defaultLocale:`默认语言`},time:{timeZone:`系统时区(日志/聊天/审计/调度)`}},groups:{toggleAll:`展开/收起全部分组`,expandAll:`全部展开`,collapseAll:`全部收起`,count:`共 {p0} 个分组`,newGroup:`新建分组`,namePlaceholder:`分组名称(如「现场网络」)`,descPlaceholder:`分组说明(可选)`,defaultCollapsed:`默认折叠`,create:`创建`,cancel:`取消`,ok:`确定`,rename:`重命名`,moveUp:`上移`,moveDown:`下移`,delete:`删除分组`,created:`分组已创建`,renamed:`分组已重命名`,deleted:`分组已删除`,createFail:`创建分组失败`,updateFail:`更新分组失败`,deleteFail:`删除分组失败`,deleteHasFields:`分组「{p0}」还有 {p1} 个字段,请先移走再删除`,fields:`{p0} 项`,emptyHint:`该分组暂无字段 —— 可用 API 或插件向此分组登记配置项`,srcBuiltin:`内置`,srcUser:`自建`,srcPlugin:`插件`}},monitor:{k1dzryry003:`我的资源`,k16zpmg9002:`admin 全量视图`,k1dg9sr8001:`归属用户`,title:`运行时监控`,subtitle:`已装配的 ChannelRuntime / AgentRuntime 与 harness 进程台账`,refresh:`刷新`,autoRefresh:`自动刷新`,needLogin:`需要登录后才能查看运行时资源`,goLogin:`前往登录`,loadFailed:`加载监控数据失败`,failed:`操作失败`,channels:`Channel 运行时`,agents:`Agent 运行时`,aliveProcesses:`活跃 harness 进程`,orphan:`孤儿`,server:`服务进程`,updated:`快照`,channelRuntimes:`ChannelRunTime`,agentRuntimes:`AgentRunTime`,harnessProcesses:`harness 进程`,chChannel:`Channel`,members:`成员数`,wired:`已装配`,scheduler:`调度循环`,scheduling:`运行中`,lead:`Lead`,name:`名称`,role:`角色`,harness:`harness`,state:`状态`,stateIdle:`空闲`,stateBusy:`执行中`,stateStopped:`已停止`,currentTask:`当前任务`,queue:`队列`,channel:`Channel`,actions:`操作`,terminate:`终止`,terminated:`已终止`,terminateConfirm:`终止该进程后,对应 AgentRuntime 将随之停止并卸载。确认终止`,terminatePidConfirm:`强杀该进程(PID),若已绑定 runtime 会一同停止。确认终止`,binding:`归属`,bound:`已绑定`,agent:`Agent`,command:`命令`,startedAt:`启动时间`,alive:`存活`,exited:`已退出`,openTerminal:`终端`,openTerminalHint:`接入该 omp 进程的原生终端(实时 TUI 输出 + HITL 人工控制)`},terminal:{title:`harness 原生终端`,abort:`中止回合`,clear:`清屏`,stateIdle:`空闲`,stateRunning:`回合执行中`,stateStreaming:`流式输出中`,stateExited:`进程已退出`,connOpen:`已连接`,connConnecting:`连接中`,connRetrying:`重连中`,connClosed:`未连接`,hint:`终端内直接输入并回车注入 omp 会话(流式中=steer 同轮注入 / 空闲=follow_up 新回合)/ ↑↓ 历史 / Ctrl+C 中止`,hitlTitle:`HITL 对话框 · 等待你的回答`,hitlCancel:`取消对话框`,hitlConfirm:`确认`,hitlDeny:`拒绝`,hitlSubmit:`提交`},agents:{hMock:`mock(测试)`,hOmp:`omp(真实 LLM)`,badConfigJson:`config 不是合法 JSON`,toPrivate:`点击转为私有`,toPublic:`点击公开(全员可读可用)`,builtinNoEdit:`内置模板不可修改`,ownerOnlyEdit:`仅属主可修改`,builtinNoDelete:`内置模板不可删除`,readOnly:`只读`,editTpl:`编辑模板`,newTpl:`新建模板`,configLabel:`config(JSON;mock 可配 delayMs)`,notInstalled:`未安装`,installLink:`前往官网安装 ↗`,harnessInprocess:`进程内引擎 · 恒可用`,k3pa5h4025:`模板库`,k3xhia001:`名称`,k3lrqn0002:`可见性`,k3l98u7003:`创建者`,k3mr526004:`实例数`,k3xhfg005:`启用`,k40aa6006:`操作`,keetzvf007:`删除模板?(已克隆实例保留)`,k5nsz7y008:`模板按用户隔离:私有仅本人可见;公开后全员可读可用(仅属主可修改);内置模板公开且不可变更。`,krpx6qa009:`返回工作区`,k1efixrj010:`新建模板`,ka1gpdj011:`admin 视图:可见全部用户的模板与创建者`,k45eb0012:`编辑`,k3xakp013:`删除`,k1d036zs014:`尚无实例`,k17jfge3015:`私有(仅本人可见)`,k1tt5zyo016:`公开(全员可读可用,仅本人可修改)`,k3x23c017:`内置`,k3wv1t018:`公开`,k447jj019:`私有`,k3n9aij020:`已更新`,k3n5hak021:`已创建`,k3n5sd7022:`已删除`,kxa6cxx023:`已公开:全员可读可用,仅你可修改`,k1xxabaf024:`已转为私有`},ctpl:{visPublic:`公开`,visPrivate:`私有`,newTplTitle:`新建 Channel 模板`,leadTplLabel:`Lead 模板(实例化时克隆为 channel lead)`,kefkfnl030:`已实例化:{p0}(成员 {p1} 个),到工作区挂载使用`,kbInstTitle:`实例化 {p0}`,kbOption:`知识库集成(rag-bridge)`,kbHint:`开启后本频道加载知识库插件:优化前先检索场景数据分析与物理机理,收口后由 lead 把经验沉淀入知识库;lead 还可用 team_grant_nodes 把自己绑定的节点授权给 worker。`,kbOn:`开启`,kbOff:`关闭`,k1f54iqd029:`模板中心`,k117jag9001:`删除模板?(已实例化的 Channel 不受影响)`,knjomku002:`按模板新建 Channel(成员自动装配)`,k1f55q76003:`模板名称`,k40gkk004:`描述`,k1ju32o7005:`选择 lead 模板(可空)`,k5uq1js006:`Worker 成员模板(实例化时逐个克隆)`,kqmdkc9007:`选择成员模板(可空)`,k1q87yho008:`作业场景 Prompt(注入全部成员)`,kk4u5cr009:`工作目录(留空 = 实例化时默认)`,k3lrqn0010:`可见性`,k18gglgp011:`场景 + 工作目录 + 团队的组合模板;一键实例化为 Channel(成员自动装配)。模板按用户隔离,公开后全员可用。`,krpx6qa012:`返回工作区`,k1efixrj013:`新建模板`,ka1gpdj014:`admin 视图:可见全部用户的模板与创建者`,k3rx4ps015:`空团队`,k3xakp016:`删除`,k3mr1fo017:`实例化`,k19fglby018:`新建第一个 Channel 模板`,k17jfge3019:`私有(仅本人可见)`,k191u0u5020:`公开(全员可实例化,仅本人可修改)`,k3x23c021:`内置`,k3wv1t022:`公开`,k447jj023:`私有`,k1i0ji0y024:`模板名必填`,kyppebc025:`模板已创建;可在工作区左侧会话栏一键实例化挂载`,kkziya3026:`已公开:全员可实例化`,k1xxabaf027:`已转为私有`,k1oxfuqj028:`已删除模板`},daq:{unitPh:`如 %RH`,k1bge46t118:`创建节点`,k1b3dtga119:`保存模板`,k3v957u120:`{p0} 运行中:{p1} · {p2}`,k1x7jnru121:`{p0} 待机:开跑后本产线节点开始采集`,k1hrrqa1122:`活动配方监控窗口 {p0} ~ {p1}{p2}`,k11wnl1y123:`产线运行中:{p0} · {p1}`,k9vnp9h124:`全局 {p0}ms`,kyuadl0125:`缺少必填参数:{p0}`,k2hbo3c126:`{p0} 副本`,k15lvw0o105:`运行中 —— 当前产品:`,k3zkt2106:`开跑`,k12uge2o107:`未开跑 —— 本产线节点暂停采集`,k69vag8108:`· 已打标`,k1cg78i8109:`前往产线管理开跑`,kzg9805110:`重连基础设施`,knxpdpt111:`恢复全部采集`,k1fstglk112:`测试连接`,k7pxjxo113:`测试通过后创建并采集`,k3xakp114:`删除`,k1efixrj115:`新建模板`,k1b39281116:`保存修改`,k3ozyqz117:`未运行`,k3ktxbr085:`产线「`,k400lb086:`批次`,k3xagp087:`发布`,k427eu088:`消费`,k3w8go089:`丢失`,k3wusd090:`入库`,k48oi091:`位`,k4118o092:`样本`,k1ukoy0v093:`前往产线管理`,k1ld43ur094:`重连中…`,kpui00095:`暂停全部采集`,k3vp67i096:`运行中`,kr45rk9097:` · 自定义`,kjbqphp098:`(栈未装)`,k1fsh720099:`测试中…`,k1bg4759100:`创建中…`,k1hhheu3101:`确认删除`,k1iiph0s102:`编辑模板`,k1b38d59103:`保存中…`,k1l3pt51104:`配方越限`,k1e8lcoo001:`节点未单独设置 WS 下发间隔时的全局缺省;0 = 随采样节拍每帧下发`,k1yztsu4002:`生产者已发布到队列`,ko09iha003:`消费者已从队列取得`,kj1jbmw004:`时序库累计入库样本`,kgpxzy3005:`缺省按模板自增命名`,k5opd2t006:`如 烘箱湿度`,kk8o4tl007:`缺省同名称`,kzn3l7l008:`缺省自动生成`,khb8mru009:`节点所属产线的开跑状态:未开跑/未分配的节点不采集`,k3q23v3010:`节点产线归属(未挂载产线的节点不采集)`,k1emg364011:`数采中心`,k1wmg2bz012:`采集 → 队列(MQTT)→ 时序库(Timescale)→ WS 实时下发全链路;节点实体与参数以服务端为准。`,k19onw5w013:`产线未开跑 —— 数采由产线配方驱动:请在`,k1b2tk5c014:`产线运营`,k1u9wnlg015:`开跑产线,并将节点挂载到产线`,k1ifahxj016:`缺省周期`,k1if98n0017:`缺省下发`,k1f5cv0s018:`模板管理`,k1fn0ukb019:`添加节点`,k1b2o3b6020:`产线状态`,k3zgkk021:`待机`,k1el12b1022:`暂无产线`,k8jxxe8023:`去产线运营创建`,k19rioqa024:`添加数采节点`,k1p5c1un025:`Mock 模拟源`,k1cbcp3o026:`真实设备采集`,k1fsgerc027:`信号模板(量程/单位域)`,k1ce2k1y028:`节点名称(可选)`,k13mfsfc029:`采样周期 ms(空=跟随全局)`,k1kt87rx030:`通信协议`,k3xdnn031:`取消`,k11mv96s032:`信号模板管理`,ktji4ky033:`自定义模板`,k45eb0034:`编辑`,kztvzbo035:`暂无自定义模板 —— 从下方内置模板复制,或直接在下方表单新建。`,k3xhia036:`名称`,k3x4ef037:`单位`,k1l477m0038:`通道语义`,k1ayxrqb039:`位号代号`,k1l9jv5m040:`量程下限`,k1l9jv4p041:`量程上限`,k3mxmcx042:`小数位`,k3xx56043:`图标`,k1f4eknv044:`模拟基值`,kytd15s045:`Mock 采样中心值,缺省量程中点`,k1f4ifpo046:`模拟波幅`,ksp2aji047:`Mock 波动幅度,缺省量程 4%`,k48p40048:`重置`,k1w8s84s049:`内置模板(只读,可复制)`,k3y694050:`复制`,k3wj9n051:`产线`,k1bkl9uj052:`全部产线`,k3ootr6053:`未分配`,k1optt001:`Agent 优化记录`,k1optf001:`全部产线`,k1optf002:`刷新`,k1optf004:`全部 Recipe`,k1flttpl010:`模板`,k1flttpl011:`全部模板`,k1fltdrv012:`驱动`,k1fltdrv013:`全部驱动`,k1flttim014:`按最后采样时间过滤`,k1flttim015:`数据时间`,k1flttim016:`全部时间`,k1timlv017:`5 分钟内`,k1timhr018:`1 小时内`,k1timdy019:`24 小时内`,k1timld020:`24 小时前`,k1timnv021:`从未上报`,k1fltsrc022:`搜索`,k1fltsph023:`节点名称 / ID…`,k1opte001:`暂无优化记录 —— Agent 经 dcw_control 调控后自动在册`,k1opte002:`窗口内无数采数据(产线未运行或节点未绑定)`,k1opta001:`序列`,k1opta002:`回退`,k1opto001:`进行中:待 Agent dcw_judge 判定`,k1optw001:`窗口聚合计算中…`,k1optw002:`越限`,k1optst001:`进行中`,k1optst002:`已判定·保留`,k1optst003:`已回退`,k1optst004:`被新设定替代`,k1optst005:`被手动写替代`,k1optst006:`停线封窗`,k1optst007:`异常`,k1optst008:`已判定·回退未执行`,k1trnd001:`趋势`,k1trnd002:`实时趋势:最近 60 个读数,虚线为上下限`,k1wrn001:`高于上限`,k1wrn002:`低于下限`,k1wrn003:`配方窗`,k1wrn004:`安全量程`,k1i8rtqt054:`绑定设备`,k1bkw4m2055:`全部设备`,k3own4q056:`未绑定`,k2bindtip137:`绑定设备(与数字孪生/节点检查器同源,server 落库)`,k1b2tkyv057:`产线运行`,k3x4t1058:`全部`,k1nxm3p7059:`采集开启(运行中)`,k1ulx34e060:`采集关闭(待机/未分配)`,k1iwdfef061:`节点状态`,k41k5c062:`正常`,k49z8v063:`预警`,k3xmid064:`告警`,k44c2n065:`离线`,k1fygck2066:`清除筛选`,k45uio067:`节点`,k42w8s068:`状态`,k3mv305069:`实时值`,k1l6g2ga070:`采样周期`,k3zi0nf071:`WS 下发`,k4a0la072:`驱动`,k40aa6073:`操作`,k3o3jg2074:`控制台`,kvhjyc3075:`暂无数采节点 —— 在数字孪生空间从左轨「数采节点 · DAQ」拖入即可(server 建立节点实体)。`,k1w20qew076:`无匹配节点 —— 当前筛选条件下没有节点,请调整或清除筛选。`,k1bhhheq077:`前往登录`,k41mvv078:`每帧`,k422b8079:`温度`,k3x6ff080:`压力`,k3z9xc081:`张力`,k3subk4082:`编码器`,k47atw083:`视觉`,kz7yhbj084:`电参/网关`,k1prodrc128:`产品 / Recipe`,k1staled129:`产线运行中但无新数据(>{p0}s 未采样)—— 节点离线或驱动故障`,k1disabl130:`停用`,k1runtipc131:`节点所属产线的开跑状态:运行中才采集`,k1prdrtip132:`本产线当前运行批次的产品与配方`,k1tsdbtip133:`时序存储后端:DAQ_TSDB_URL 可切换 TimescaleDB`,k1queuet134:`消息队列:DAQ_MQTT_URL 可切换标准 MQTT broker`,k1droptip135:`队列丢失(produced-consumed)`,k1eg1000a136:`如 1000`,k1needtst137:`真实场景需先通过测试连接`,k1plndrv138:`预留协议:待真实通道接入`,k1idlehin139:`产线未运行:开跑后本节点开始采集`,k1gateoff140:`数采网关已暂停 —— 全部节点停止采集`,k1alarm141:`未确认报警`,k1ack142:`确认`,k1esc143:`已升级 {p0} 次重发通知`,k1acked144:`报警已确认`,k1snap145:`暂停全部采集:停止所有启用节点的采样。节点级启停独立:手动停用的节点保持停用,恢复后仅启用节点恢复采集`,k1nodestop146:`停止采集`,k1nodestart147:`启动采集`,k1evt001:`暂无未确认告警`,k1evt002:`实时事件`,k1evt003:`日志管理`,k1evt004:`暂无事件,等待操作…`},daqDetail:{bucket1s:`1s 桶`,bucket5s:`5s 桶`,bucket15s:`15s 桶(默认)`,bucket30s:`30s 桶`,bucket60s:`1min 桶`,calDecoderTip:`采集标定 decoder:物理值 = scale × PLC采集值 + offset`,calScaleTip:`decode 斜率(≠0)`,calOffsetTip:`decode 截距`,kfrm0001:`图像帧画廊`,kfrm0002:`多点轮廓帧`,kfrm0003:`暂无帧(产线运行中才有数据)`,kfrm0004:`点数`,kfrm0005:`指标`,kfrm0006:`点击查看原图`,k9vnp9h053:`全局 {p0}ms`,k3n5aaj045:`已停用`,k1cgi8fy046:`节点独立周期`,k3oktae047:`无标定`,k1cggz5f048:`节点独立下发`,k3n42dj049:`定间隔`,ksn9cgo050:`下发参数到采集器`,k1fstglk051:`测试连接`,k452a8052:`绑定`,k1fx2vik032:`实时值 ·`,k1p9gioa033:`驱动连接参数 ·`,k1i535i5034:`时序库历史(`,kz8zr9v035:`(预留)`,k3own4q036:`未绑定`,k3w3j8f037:`采集中`,k1k2ueyq038:`跟随全局周期`,k1eru4r1039:`标定生效`,k1k2t5o7040:`跟随全局下发`,k41mvv041:`每帧`,k1as0g50042:`下发中…`,k1fsh720043:`测试中…`,k479eh044:`解绑`,k1emg364001:`数采中心`,k1bhhheq002:`前往登录`,k4a0la003:`驱动`,k3xg3w004:`周期`,k3w6td005:`下发`,k3x5tpx006:`预警带`,k1hjj0jf007:`硬限量程`,k1i8rtqt008:`绑定设备`,kd9d69j009:`采集参数(server 单点控制)`,k1iw7tbf010:`节点启停`,k12k23od011:`所属产线(未挂载不采集)`,k3ootr6012:`未分配`,k1l6smxo013:`采样驱动`,k3x4ef014:`单位`,k3mxmcx015:`小数位`,k1l9jv5m016:`量程下限`,k1md63hm017:`预警下限`,k1md63gp018:`预警上限`,k1l9jv4p019:`量程上限`,k1ie6qju020:`设备绑定(端到端集成)`,kjobzu3021:`选择设备孪生…`,k3x1jg022:`刷新`,k40vsf023:`时间`,k48v5024:`值`,k4bza025:`态`,k41k5c026:`正常`,k49z8v027:`预警`,k3xmid028:`告警`,k44c2n029:`离线`,k1m1zwux030:`每帧(随采样)`,k3lha20031:`原始点`,k1rfrshint001:`趋势图自动拉取间隔(ms);留空或 0 = 跟随服务端默认(daq.query.displayIntervalMs),最小 {p0}ms`},logs:{title:`产线日志`,sub:`仅记录与产线相关的操作:下发/配方/回退/产线/数采/告警/人工记录;登录与系统管理事件不入册。按产线、Recipe 与时间检索`,live:`实时`,liveHint:`WS 实时接收产线操作事件(仅摘要渲染;完整详情查询于下表)`,all:`全部`,fLine:`产线`,fProduct:`产品`,fSource:`来源`,fKind:`分类`,fFrom:`开始时间`,fTo:`结束时间`,fKeyword:`关键词`,fKeywordPh:`搜索摘要/操作/操作者…`,invalidTime:`时间格式无效:请重新选择开始/结束时间`,invalidRange:`时间区间无效:开始时间不能晚于结束时间`,mLineRequired:`请先选择产线:产线日志只接收带产线归属的记录`,query:`查询`,reset:`重置`,thTime:`时间`,thActor:`操作者`,thSummary:`事件摘要`,thScope:`归属(产线/产品/Recipe)`,thDetail:`详情`,expand:`详情`,fold:`收起`,loading:`查询中…`,empty:`无匹配日志`,mSummary:`记录内容`,mSummaryPh:`如:更换 3 号烘箱加热丝,当前批次延长保温 10 分钟`,mDetail:`详情(可选)`,mDetailPh:`补充说明、处置过程、关联单号等(将存入日志详情)`,mLevel:`严重级`,quickErrHint:`只看 error 级(系统故障/写入失败);数字为实时轨条数,再点一次取消`,quickWarnHint:`只看 warn 级(告警/未证实);数字为实时轨条数,再点一次取消`,export:`导出 CSV`,exportHint:`把当前查询快照导出为 CSV(事故报告/工单附件)`,copyDetail:`复制详情`,copied:`已复制`,mSubmit:`入册`,mOk:`已入册`,manual:`人工记录`,noDetail:`无`,totalCount:`共 {n} 条`,src:{user:`用户`,system:`系统`},kind:{write:`下发`,manual:`人工`,alarm:`告警`,line:`产线`,recipe:`配方`,rollback:`回退`,daq:`数采`,system:`系统`}},operations:{title:`产线操作`,sub:`全部产线操作的统一实时流水:写控下发、配方批次、数采告警、建模回退与 Agent 动作,一屏可见`,live:`实时`,liveHint:`WS 实时接收产线操作事件,新事件自动插入流水顶部`,all:`全部`,fLine:`产线`,fSource:`来源`,fKind:`分类`,fKeyword:`关键词`,fKeywordPh:`搜索节点/动作/摘要…`,query:`查询`,reset:`重置`,loading:`加载中…`,empty:`暂无操作记录 —— 调整筛选或等待新的产线事件`,noDetail:`无结构化详情`,totalCount:`共 {n} 条`,actorAgent:`Agent`,actorUser:`用户`,actorSystem:`系统`,cat:{write:`写控`,daq:`数采`,aml:`建模`,recipe:`配方`,rollback:`回退`,alarm:`告警`,line:`产线`,manual:`人工`,system:`系统`}},analysis:{title:`数据分析`,sub:`Agent Channel 分析产出的持久留痕台账:关键结论、配方联动、时间窗与完整正文,随时可查`,live:`实时`,liveHint:`WS 实时接收分析留痕事件(analysis_save),新报告自动刷新`,all:`全部`,fLine:`产线`,fCat:`类别`,fWindow:`分析时间`,fKeyword:`关键词`,fKeywordPh:`搜索标题/关键结论…`,query:`查询`,reset:`重置`,loading:`加载中…`,empty:`暂无分析报告 —— Agent 在频道内调用 analysis_save 留痕后在此可见`,noDetail:`无附加产出`,expand:`详情`,fold:`收起`,count:`{p0} 条报告`,ledgerHint:`留痕台账 · append-only(Agent 面不可改删)`,remove:`删除`,removeConfirm:`删除分析报告「{p0}」?删除后不可恢复`,cancel:`取消`,editTitle:`修订分析报告`,save:`保存修订`,kRecipe:`配方 id`,kVersion:`配方版本`,kWindowFrom:`数据窗起点`,kWindowTo:`数据窗终点`,conclusionsHint:`每行一条`,kRevised:`修订记录`,thTime:`分析时间`,thLine:`产线`,thTitle:`标题`,thRecipe:`配方`,thSummary:`关键结论`,thSource:`来源`,thDetail:`详情`,kId:`报告 id`,kWindow:`数据窗`,kSources:`证据来源`,kConclusions:`结论明细`,kReport:`完整正文`,kMetrics:`支撑指标`,kContext:`产线上下文快照`,cat:{quality:`质量`,oee:`OEE`,alarm:`告警`,trend:`趋势`,optimization:`寻优`,general:`综合`},win:{h1:`1 小时内`,h24:`24 小时内`,d7:`7 天内`,d30:`30 天内`,all:`全部时间`}},dcw:{codePh:`如 MOTOR · I`,unitPh:`如 A`,k1qidbpy061:`缺省 {p0}(按创建序)`,k1gp649b062:`{p0}(节点 {p1}/产品 {p2}/配方 {p3} 将解除挂载)`,k7xq2mfd063:`删除产线「{p0}」?`,k5tq8wc071:`编辑产线`,k9m2vxa072:`连同旗下节点/产品/配方一起删除(不可恢复)`,k4r7nbd073:`产线「{p0}」及其 {p1} 节点 · {p2} 产品 · {p3} 配方将一并删除,不可恢复`,k3t616a058:`自定义`,k149r6y7059:`○ 待机`,k1elczt9060:`暂无配方`,k3ootr6049:`未分配`,k3wj9n050:`产线`,k11nndsp051:`控制模板 ·`,k3zz0f052:`打标`,k19dlbli053:`跟随主题自动配色`,k3x23c054:`内置`,k1eox1el055:`● 运行中`,k18moyq1056:`选择配方后即可开跑数据采集`,kutxzsz057:`选择配方…`,k1i5a9vw001:`存在未挂载产线的节点/产品,可在对应产线详情页收编`,k1yfm3gv002:`删除产线(旗下节点/产品/配方解除挂载)`,k1dhaby4003:`选择配方后开跑`,kru37i3004:`如 1号产线 / 流延线 A`,k1f2nwsp005:`产线用途说明`,k1tooi3o006:`如 电机电流设定`,k698qz0007:`如 电机电流`,k1qdnfzc008:`如:电机电流设定:电流升高表示负载增大…调整需小幅步进并观察温升`,k1b2tk5c009:`产线运营`,k5q0aqi010:`产线是节点/产品/配方/数据的顶层隔离单元:每个控制节点挂载到产线,开跑后本产线数采逐样本携带产线标识;
3
3
  控制模板只定义参数分类与工艺量程,真正下发 PLC 的是节点。`,k45uio011:`节点`,k3waz1012:`产品`,k48grv013:`配方`,k149b4vg014:`▶ 开跑`,k148rclf015:`■ 停止`,k1fwqw5g016:`产线管理 →`,k1efe391017:`新建产线`,k1sk85vs018:`还没有产线:点击「新建产线」创建第一条产线,然后在产线详情里收编/添加控制节点、建产品与配方。`,filterSearchPh:`搜索产线名称…`,filterEmpty:`没有匹配的产线 —— 调整筛选或搜索条件`,k1b2ioko019:`产线名称`,k24dxcd020:`描述(可选)`,k1x7nubr021:`光晕色(数字孪生场景中本产线节点的光环色)`,k3xdnn022:`取消`,k3wzi2023:`创建`,k11oadmx024:`控制模板管理`,k2hlav5025:`模板 = 参数分类(电机电流/转速/线速度…),定义单位与工艺安全量程;创建控制节点时选模板继承域,节点可再自定义覆盖。`,k3xakp026:`删除`,k169eb4s027:`新建自定义模板`,k3xhia028:`名称`,k1bqk219029:`参数语义`,k1ayxrqb030:`位号代号`,k3x4ef031:`单位`,k1l9jv5m032:`量程下限`,k1l9jv4p033:`量程上限`,k3mxmcx034:`小数位`,k3xx56035:`图标`,k1b6qorg036:`工艺语义(物理意义/对产线的影响/调整守则 —— 注入绑定此模板的 Agent 上下文)`,k3x62t037:`关闭`,k1bg9nga038:`创建模板`,k188cswn039:`请先选择该产线的配方(配方需绑定控制节点参数)`,k422b8040:`温度`,k3x6ff041:`压力`,k3z9xc042:`张力`,kjb3vhs043:`编码/速度`,k47atw044:`视觉`,k48c07045:`通用`,k6ugbw2046:`模板名称必填`,k13awowo047:`工艺量程(min/max)必填`,k1bphrb3048:`删除失败`,k1b2ioko019:`产线名称`},dcwDetail:{stAck:`已 ACK`,startNeedRecipe:`开跑前必须先设定配方`,startTip:`下发配方参数并开始打标数据采集`,codePh:`如 MOTOR · I`,unitPh:`如 A`,mockPlc:`Mock 模拟 PLC`,linearCalOpt:`线性标定:PLC值 = (物理值 - offset) / scale`,calScaleTip:`decoder 斜率(≠0):物理值 = scale × PLC值 + offset;下发时自动取逆`,calOffsetTip:`decoder 截距`,pauseCtrlTip:`暂停该节点控制:下发将被拒绝`,enableCtrlTip:`开启该节点控制:恢复可下发`,pausedTip:`当前节点暂停:开启控制后方可设定`,writeTip:`下发设定值`,noDaqTip:`本产线暂无数采节点`,manualTag:`手动`,staleDeleted:`已删除`,staleDisabled:`已停用`,staleUnbound:`已取消绑定`,staleDropped:`已自动移除 {p0} 条失效参数(节点已删除);如需恢复请重新添加有效节点`,histBtn:`版本历史`,dispatchHistBtn:`下发历史`,dispatchHistTitle:`配方下发历史`,dispatchHistSub:`仅显示该配方的产线域记录(创建/更新/试验/下发/ACK/回退/开跑);与 Agent 的 recipe_log 同源。`,dispatchHistEmpty:`暂无下发/变更记录。`,dispatchHistTime:`时间`,dispatchHistAction:`动作`,dispatchHistSource:`来源/操作者`,dispatchHistSummary:`说明`,closeBtn:`关闭`,histTitle:`配方版本历史`,histLoading:`加载中…`,histEmpty:`暂无版本历史(配方参数修改后自动入史)`,histCurrent:`当前`,histInit:`初始版本`,histAdded:`新增`,histNoChange:`参数未变`,revertTo:`回退到此版`,revertOk:`已回退并生成新版本 v{p0}`,revertReasonUi:`界面回退到历史版本`,srcUser:`用户`,srcSystem:`系统`,k9r7d4e016:`周期读(ms)`,k9r7d4e017:`缺省 5000ms;0 = 仅手动读取`,writeLockLabel:`写入保持(s)`,writeLockHint:`缺省 30s;0 = 不锁;写成功后锁定防震荡`,k9r7d4e018:`PLC 读数`,k9r7d4e019:`暂无读数(周期读未开启或驱动不支持读取)`,k9r7d4e020:`读取 PLC 当前值`,k9r7d4e021:`读取`,k9r7d4e022:`手动`,k9r7d4e023:`默认 5s`,k1lzfi4g180:`({p0} 参数)`,k6vgks7181:`批次 {p0}`,k1alcbyu182:`节点 {p0} 下发成功:{p1}`,kl1e9x9183:`节点 {p0} 下发失败:{p1}`,k8x1un1184:`缺少必填驱动参数:{p0}`,ky4e1tr185:`模板「{p0}」已创建,已在「添加控制节点」向导中选中`,k17jteb9186:`产线已开跑:{p0} · {p1}(批次 {p2})`,kzl49pd187:`产线已停止({p0});窗口数据保留可查`,ks7szkt188:`配方下发部分失败:{p0}`,k3zkt2166:`开跑`,k1g3lh2v167:`下发完成:`,k69vag8168:`· 已打标`,knxgni9169:`恢复全部控制`,k1b2hxmx170:`产线停止`,k1bg9nga171:`创建模板`,k1fstglk172:`测试连接`,k1bge46t173:`创建节点`,k3w6td174:`下发`,kxwei5175:`查看批次数据`,k1efq0r9176:`新建配方`,k1b3kwg0177:`保存配方`,k416ek178:`查询`,k1bg4kn6179:`创建产品`,k1l0iow1137:`运营管理`,k3wtib138:`写入`,k3yit7139:`失败`,k3km252140:`产品)`,k3x23c141:`内置`,k3t616a142:`自定义`,k1av3wgs143:`产品 /`,k1l3hrvp144:`配方批次`,k11lq94k145:`批次数据 ·`,k134rw3b146:`配方下限(可选,≥`,khrv911147:`配方上限(可选,≤`,kw7ym9b148:`写历史(最近`,k1bqci06149:`参数成功`,k40bfz150:`条)`,k1b2snna151:`产线详情`,kzcbfki152:`本产线专属的节点/产品/配方/批次管理:开跑必设配方,窗口内数采逐样本携带产线标识,实现真实的产线级数据隔离;PLC 底层(换算/写/回读)由系统封装。`,kplrsg153:`暂停全部控制`,k1snap154:`暂停全部控制:停止所有启用节点的下发。节点级启停独立:手动停用的节点保持停用,恢复后仅启用节点恢复控制`,k1pxrhx0154:`产线运行中`,k1hicmch155:`(无参数,不可开跑)`,k1bg4759156:`创建中…`,kr45rk9157:` · 自定义`,k1fsh720158:`测试中…`,k3o3ib3159:`控制中`,k3zul4160:`手动`,k1br0ij9161:`加载中…`,k3vpfg9162:`进行中`,k1iiwk0i163:`编辑配方`,k1b38d59164:`保存中…`,k1eyx09r165:`查询中…`,kd3ygmn001:`累计写命令`,kd3znl0002:`累计写失败`,kc4ixly003:`自定义创建控制节点模板:物理含义/单位/工艺安全量程`,k1tooi3o004:`如 电机电流设定`,k698qz0005:`如 电机电流`,kxz9174006:`工艺安全下限`,kxz9167007:`工艺安全上限`,k1qdnfzc008:`如:电机电流设定:电流升高表示负载增大…调整需小幅步进并观察温升`,kgpxzy3009:`缺省按模板自增命名`,kb1srz0010:`如 5000(心跳重下发)`,k12bnyt9011:`如:2 号烘箱温度:与 1 号联动控制分区温差,调整步进 ≤1℃`,k1bpfjgx012:`删除产品`,k1l11api013:`活动批次内数采越限即报警`,k12c11vm014:`如 0.8mm 光学膜`,k1hxx8hy015:`产品/工艺说明(可选)`,k5vew9z016:`节点全局量程内`,kzoh5pr017:`运行期写入硬约束`,k19337yp018:`产线不存在或已被删除。`,kllwu1c019:`← 返回产线总览`,k1972dx9020:`添加控制模板`,k1976uns021:`添加控制节点`,kaebkky022:`未分配资产 · 收编到本产线`,kyjp9fg023:`+ 收编`,k19pof14024:`选择产品与配方后开跑;运行中的每条数采数据将携带产品/配方/批次标识`,k3waz1025:`产品`,kuisodh026:`选择产品…`,k48grv027:`配方`,kutxzsz028:`选择配方…`,kfb8vml029:`▶ 开始数采`,k1xyhd2y030:`■ 停止数采`,k1x4vam0031:`添加控制节点模板`,ke1iyud032:`模板 = 参数分类(物理含义/单位/工艺安全量程):创建控制节点时选模板继承域;模板下发不涉及 PLC,真正执行的是节点。`,k169eb4s033:`新建自定义模板`,k1f55q76034:`模板名称`,k1bqk219035:`参数语义`,k1ayxrqb036:`位号代号`,k3x4ef037:`单位`,k1l9jv5m038:`量程下限`,k1l9jv4p039:`量程上限`,k3mxmcx040:`小数位`,k3xx56041:`图标`,knjmyfr042:`工艺语义(物理意义/对产线的影响/调整守则 —— 注入绑定此模板节点的 Agent 上下文)`,k3x62t043:`关闭`,kyj8fen044:`真实 PLC 写入`,k1ejzwqp045:`控制模板(物理含义/单位/安全量程)`,k1ce2k1y046:`节点名称(可选)`,k1vyb8im047:`保写周期 ms(空=仅手动下发)`,kiune1f048:`写入标定 encode(物理值 → PLC 设定值)`,kkzy0k049:`无(直接写工程值)`,k1kt87rx050:`通信协议`,k1hgizn7051:`节点工艺语义(可选,覆盖模板描述 —— 注入绑定此节点的 Agent 上下文)`,k3xdnn052:`取消`,k1e2dtkt053:`控制节点`,k403cy054:`控制`,k42w8s055:`状态`,k1deqh0d056:`当前设定`,k1k79ec9057:`设定下发`,k1dexou6058:`工艺量程`,k1b1nnaa059:`保写周期`,k1i8rtqt060:`绑定设备`,k40aa6061:`操作`,k3n93ed062:`已暂停`,k3xakp063:`删除`,k1wtecyw064:`暂无控制节点 —— 点击右上「添加控制节点」从工艺模板创建。`,k1j8w3hd065:`产品与配方`,k1akm6dc066:`+ 新建配方`,k1aka0ki067:`+ 新建产品`,k6bl2q8068:`一个产品可有多个配方;配方 = 工艺参数集(控制模板 + 目标工程值)。产线开跑时选定配方,其参数随开跑下发,
4
4
  数采数据逐样本携带产品/配方/批次标识。`,k3x4t1069:`全部`,knov3zg070:`暂无产品 —— 点击「新建产品」创建(配方必挂产品;数据按产品隔离)。`,k1497qvr071:`▶ 下发`,k45eb0072:`编辑`,keko1xy073:`暂无配方 —— 点击「新建配方」定义产品工艺参数集。`,k1rjer8d074:`生产批次(数据隔离窗口)`,k400lb075:`批次`,k4497j076:`窗口`,k1bqhtmu077:`参数结果`,k1dzwrdp078:`批次数据`,k1blr7y7079:`关闭批次`,k1me41w8080:`数采通道汇总(批次窗口内,产品隔离)`,k48hde081:`通道`,k45uio082:`节点`,k40t11083:`最新`,k3xuaw084:`均值`,k4118o085:`样本`,kd457ry086:`窗口内无数采样本`,k12b7cxs087:`写历史(批次窗口内)`,k3xbjr088:`参数`,k3ncbsh089:`工程值`,k3lh3mz090:`原始值`,k454pg091:`结果`,k40ieu092:`时刻`,knzcp8i093:`窗口内无写记录`,k1dw4fzf094:`所属产品`,k1l3f8so095:`配方名称`,k40gkk096:`描述`,ka1kfgh097:`工艺参数(绑定本产线控制节点:节点才是真实下发 PLC 的执行体,模板仅分类)`,k3renp2098:`目标值`,k44idg099:`移除`,k1broh7h100:`+ 添加参数`,k1h5gues101:`数采监控窗口(活动批次内,数采节点实时值越出窗口即报警标红)`,k1empnnb102:`数采节点`,kqm08ap103:`监控下限(可选)`,kpypf8g104:`监控上限(可选)`,kv1de1p105:`+ 添加监控窗口`,k1us3jse106:`产线数据查询(产品 · 配方 · 工艺参数 · 时间 · 间隔)`,k1bkl1jx107:`全部产品`,k1bkx7cr108:`全部配方`,k1demcae109:`工艺参数`,k1bkx7ya110:`全部通道`,k1bkul3k111:`全部节点`,kx2ojn0112:`最近(分钟)`,kjvnvn4113:`聚合间隔 ms(0=原始点)`,k42kcu114:`点数`,k49ujb115:`首值`,k40pvw116:`末值`,k3xho3117:`区间`,k1efduyf118:`新建产品`,k1avjrl6119:`产品名称`,k1bhhheq120:`前往登录`,k1ledgt001:`参数台账`,k1ledgs001:`选择节点…`,k1ledgv001:`当前设定`,k1ledgv002:`配方目标`,k1ledgv003:`上次良好`,k1ledga001:`刷新`,k1ledga002:`单步回退`,k1ledgh001:`设定历史(账本)`,k1ledgr001:`优化记录`,k3own4q121:`未绑定`,k3zgkk122:`待机`,k3l3h80123:`写入中`,k40reu124:`故障`,k44c2n125:`离线`,k422b8126:`温度`,k3x6ff127:`压力`,k3z9xc128:`张力`,kjb3vhs129:`编码/速度`,k47atw130:`视觉`,k48c07131:`通用`,k6ugbw2132:`模板名称必填`,kx3pg59133:`单位必填(如 ℃ / A)`,k13awowo134:`工艺量程(min/max)必填`,k1b6qe0r135:`开跑前必须先设定配方:请选择产品与配方(配方需含工艺参数)`,kszv5sq136:`窗口内无匹配数据(检查产品/配方/时间范围;仅产线运行中的样本带产线标识)`,stepLimitLabel:`探索阶段单步上限`,stepLimitUnit:`工程量`,stepLimitPlaceholder:`留空:按节点量程 2% 默认值`,stepLimitHint:`Agent 每次写入的最大变化量;无有限值时探索写入会被拒绝。`,thStepLimit:`探索步长`,stepInputTitle:`在线控制单步最大变化量;留空将关闭探索写入`,stepCurrent:`当前 Δ≤{p0}`,stepUnset:`未配置`,recipeStepLimitLabel:`Recipe 单步上限 Δ≤`,recipeStepLimitPlaceholder:`跟随节点默认`,drvBadgeMes:`MES 边缘层`,drvBadgeNoConv:`无协议转换`,mesTestBtn:`试读`,mesTesting:`试读中…`,mesNotReady:`服务端未就绪`,mesHookTestBtn:`钩子试运行`,mesHookTesting:`钩子试运行中…`,mesHookNotReady:`钩子端点未就绪`,mesArtifactsBtn:`产物`,mesArtifactsTitle:`MES 产物`,mesArtifactsRefresh:`刷新`,mesArtifactsEmpty:`暂无产物(取数后 dataHook/图像落盘生成)`,mesArtifactsOpen:`打开`,mesArtifactsBinary:`非图像文件,点下方按钮打开`,recipeGateTitle:`配方操作审批(参数写入/下发/试验/回退)`,recipeGateCommentPh:`裁决意见(拒绝时逐字回流 Agent)`,recipeGateApprove:`批准`,recipeGateReject:`拒绝`,accessTitle:`二级操作权限(Agent 配方操作)`,accessRequire:`需要认证`,accessHint:`(开启后仅勾选的 Agent 可操作;默认绑定即可操作)`,accessLoading:`正在加载频道成员…`,accessNoAgents:`未找到频道成员`,accessEmptyWarn:`警告:开启认证但未勾选任何 Agent = 无人可操作(fail-closed)`,apTitle:`下发参数审批`,apRule:`同意=立即执行;拒绝=Agent 按原值继续;超时=默认不同意`,apInitiator:`发起`,apTimeout:`后超时默认不同意`,apApprove:`同意`,apReject:`拒绝`,apCommentPh:`反馈意见(可选:同意=批复附言随回执;拒绝=逐字回流给 Agent)`},expConfirm:{title:`本地调整确认`,rule:`确认=认可为产线侧本地调整,进入经验总结;忽略=不总结`,confirm:`确认`,ignore:`忽略`,badgeTip:`有 {p0} 条本地调整待确认`,decideFail:`操作失败,请重试`},autoMode:{confirmTitle:`切换为自动控制`,affected:`影响节点:{p0}`,exempt:`切到 auto 后:该节点 Agent 参数微调不再逐次挂审批(仍受量程、步长、60 秒节流限制)`,guard:`整包 recipe 下发(trial/apply/方案审批)在任何模式下都必经人工审批,auto 不豁免`,revert:`随时可在同一开关切回 manual,立即恢复逐次审批`,dual:`注意:若 AML 优化循环也在控制该产线,请避免双写者冲突`,confirmBtn:`我已知晓风险,切到 auto`,cancelBtn:`取消`,switchFail:`切换失败,请重试`},recipePropose:{title:`配方整包方案审批`,rule:`选择一套方案批准后整包原子下发;拒绝=Agent 按原值继续;超时=默认不同意`,packagesLabel:`{p0} 套候选方案 · 共 {p1} 项参数调整`,tab:`方案 {p0}`,paramCol:`参数`,changeCol:`调整`,preflightCol:`预检`,basisCol:`依据(Agent 给出)`,expRefCol:`经验引用`,preflightOk:`通过`,preflightFail:`已剔除`,lowConfidence:`证据不足,建议仅观察(仍可自行批准)`,amlActive:`检测到 AML 优化循环活动,建议暂缓下发`,approveBtn:`批准此方案`,rejectBtn:`拒绝`,commentPh:`反馈意见(可选:同意=批复附言随回执;拒绝=逐字回流给 Agent)`,needChoice:`请先选择要批准的方案`,decideFail:`操作失败,请重试`},teams:{selectChannel:`选择目标 Channel`,toPrivate:`点击转为私有`,toPublic:`点击公开(全员可部署)`,deployToChannel:`部署到 Channel…`,joinOk:`加入`,deployOk:`部署`,targetChannelLabel:`目标 Channel(须无 lead 冲突)`,k6ljhyv029:`添加成员 · {p0}`,k1c0o6oe030:`部署 · {p0}`,kh90glh031:`已部署 {p0} 个实例到 Channel`,k3svl8y028:`编组库`,kxheuf1001:`公开编组:全员可部署;仅属主可修改`,k1efmuyx002:`新建编组`,k3xhia003:`名称`,k40gkk004:`描述`,k3lrqn0005:`可见性`,k41ds5006:`模板`,k479op007:`角色`,k12gl4wn008:`编组按用户隔离;公开编组全员可部署(仅属主可修改);一键整体部署到 Channel(每个成员克隆为独立实例)。`,krpx6qa009:`返回工作区`,k1bpgi8h010:`admin 视图:可见全部用户的编组与创建者`,k1bpojhf011:`删除编组`,k48ja7012:`部署`,krt2oib013:`+ 添加成员模板`,k6cbbgf014:`新建第一个编组`,k17jfge3015:`私有(仅本人可见)`,k1h2lq0o016:`公开(全员可部署,仅本人可修改)`,keowzlv017:`lead(至多一个)`,k3x23c018:`内置`,k3wv1t019:`公开`,k447jj020:`私有`,k1bvcdo2021:`名称必填`,k3n5hak022:`已创建`,k1globhp023:`已公开:全员可部署,仅你可修改`,k1xxabaf024:`已转为私有`,k1kw4rtj025:`选择模板`,k3n5hzw026:`已加入`,k1oxjrxx027:`已删除编组`,k1plugon040:`插件开关 · {p0}`,k1plugon041:`插件(该编组启用哪些;部署时传导到目标 Channel)`,k1plugon042:`勾选的插件在编组部署到 Channel 后对其成员生效;未勾选的插件工具对该团队隐藏`,k1plugon043:`团队插件开关已保存`,k1plugon044:`未显式配置 —— 当前默认全启用;切换任一开关后按行生效`,k1plugon045:`已显式配置(按下方开关生效)`,k1plugon046:`暂无已注册插件`,k1plugon047:`插件开关…`},tokens:{maskBackTip:`已显示明文,点击眼睛遮回`,maskPreview:`掩码预览`,maskBack:`遮回`,revealPlain:`查看明文`,copied:`已复制`,copyPlain:`复制明文`,revokeCurrentWarn:`吊销当前会话 token 将退出登录`,revokeWarn:`吊销后立即失效`,createdTitle:`Token 已创建`,hidePlain:`隐藏明文`,showPlain:`显示明文`,copy:`复制`,usage:`用法:Authorization: Bearer <token>`,renameTitle:`重命名 Token`,k1upppaw026:`每个 token 可独立吊销;明文存档于服务端,可随时查看复制`,k3p0p44027:`标签:`,kj3mklm028:`(未命名)`,k1hlqknl001:`标签,如:CI / 测试脚本 / 备用`,k41416002:`标签`,k1k6z0r8003:`请先登录`,k1gjnree004:`Token 属于登录用户的私有资源,需登录后管理。`,k1bhhheq005:`前往登录`,khcxmsc006:`当前会话 Token 已标识`,k1defr98007:`当前会话`,kyelqk1008:`旧版不可见`,k3vrpcs009:`重命名`,k3xmrz010:`吊销`,k12149oy011:`Token 已创建并存档,之后可随时在列表中查看/复制;仍建议仅在可信环境展示明文。`,k1s5f5zd012:`我已保存,关闭`,k19jvk54013:`加载 token 列表失败`,k169z26g014:`标签不能为空`,k3n9aij015:`已更新`,k3n64kh016:`已吊销`,kjtcn2h017:`复制失败,请手动选择复制`,kkpgzo8018:`该 token 创建于旧版本(仅存哈希),无法查看明文;建议吊销后重新签发`,k1gj9ls019:`查看明文失败`,kr5ovor020:`该 token 创建于旧版本(仅存哈希),无法复制明文;建议吊销后重新签发`,kubtby5021:`获取明文失败`,kgkfcr0022:`复制失败,请先显示明文后手动选择复制`,k1bg95gk023:`创建时间`,k1euotul024:`最近使用`,k40aa6025:`操作`},town:{k3n4mae005:`工作台`,k1wm8wtr001:`还没有挂载任何 Channel`,k47e4s002:`请到`,k17rerba003:`创建/挂载频道后,再回到 AgentWorkShop 孪生空间。`,k1uc5mup004:`正在接入 AgentWorkShop 孪生空间(订阅实时事件流)…`},wsHome:{mcTitle:`请设置新密码`,mcSub:`账号 {p0} 的密码由管理员下发,首登必须改为你的专属密码后才能进入工作台。`,mcCurrent:`当前密码(管理员下发的临时口令)`,mcNew:`新密码`,mcConfirm:`再输入一次新密码`,mcPolicyHint:`≥6 位,须包含字母和数字;改密后此提示不再出现。`,mcCta:`设置新密码并进入`,mcFillBoth:`请填写当前密码与新密码`,mcMismatch:`两次输入的新密码不一致`,mcPolicy:`密码至少 6 位,且需包含字母和数字`,mcSameAsOld:`新密码不能与当前密码相同`,mcDone:`密码已更新,欢迎使用 AgentWorkShop`,adminCreated:`管理员账号创建成功:{p0} 已进入系统`,nameRequired:`Workspace 名称必填`,setupTitle:`创建管理员账号`,setupSub:`系统尚无任何用户:首个注册的账号将成为管理员,创建后自动进入系统。`,normalSub:`全局用户系统统管身份;每个用户可管理多个 API Token,管理 API 需用户 token(Authorization: Bearer)。`,tabLogin:`账号登录`,tabRegAdmin:`注册管理员`,tabRegUser:`注册新用户`,setupCta:`创建管理员并进入`,tabToken:`Token 登录`,delWs:`删除 Workspace`,emptyTitle:`从一条产线、一个 Agent 开始`,emptySub:`Workspace 是频道与任务的容器 —— 建立第一个工作区后,你的 Agent 团队即可上线作业。`,emptyCta:`新建第一个 Workspace`,createEnterOk:`创建并进入`,k1mbatbh030:`注册成功:{p0};登录 token 已保存`,kwixbdl031:`已登录:{p0}`,newWs:`新建 Workspace`,newWsHint:`从模板或空白创建工作区`,k3wcox029:`任务`,k3n4m5c025:`工作区`,ke16e53026:`的资源(用户级隔离;服务端持久化)`,k41ds5027:`模板`,k1ggoa45028:`成员 / 忙`,k48h2c001:`邮箱 / 用户名`,k3yvgs002:`密码`,kwgbai9003:`用户名(唯一)`,kizjkbo004:`邮箱(唯一)`,kh3cqfn005:`密码(≥6 位,含字母和数字)`,k15qunld006:`粘贴用户 token`,ksmpk8l007:`Workspace 名称,如:支付网关重构`,kr0vzqu008:`进入工作台`,k43kol009:`登录`,k17x74cj010:`每次登录签发一个会话 token,可在 Token 管理页单独吊销。`,k1so6a0v011:`注册并登录`,k1r0a4u3012:`注册成功后自动登录;可再自行签发多个 token。`,k3pa5h4013:`模板库`,k3svl8y014:`编组库`,k484e7015:`退出`,k1bst7s9016:`同步中…`,k1ylgrbc017:`未挂载 Channel(进入后从左栏挂载)`,kr1uwwi018:`进入控制台`,k1vnhyks019:`请填写用户名`,k8ieqzj020:`请填写邮箱`,ksx73ra021:`密码至少 6 位 (需含字母和数字)`,k3ngm6p022:`已退出`,k1br33vc023:`加载失败`,k3n5sd7024:`已删除`},wsView:{inspector:`检查器`,unknownWs:`未知 Workspace`,channelListTitle:`频道会话列表`,a2aTitle:`A2A RPC/SSE 调试器`,loadingWs:`正在加载 Workspace…`,kqwckjr001:`快捷键 1-5 直切视图`,k1tsy2e4002:`收起/展开 会话栏`,k1tx0ppf003:`收起/展开 检查器`,k1cvg8sb004:`命令面板(⌘K)`,k1fkfvra005:`拖拽调节会话栏宽度`,kwqb0st006:`拖拽调节检查器宽度`,klzbtyp007:`从左侧挂载或选择一个`,k3zaj4008:`开始`,k1us0cxy009:`会话列表支持新建 Channel、从模板实例化,以及热修改场景与工作目录`,k3otu32010:`时间线`,k3ko7a8011:`任务板`,k3xbmo012:`同屏`,k1cz0pbw013:`孪生空间`},meta:{agents:`Agent 模板库`,teams:`AgentTeam 编组库`,ctpl:`Channel 模板中心`},a2aRpcDebugger:{methodSse:`tasks/sendSubscribe(SSE 流)`,methodToken:`message/send(需 token)`,badParams:`params 不是合法 JSON`,title:`A2A RPC / SSE 调试器`,tokenPh:`Bearer token(message/send 需要;留空匿名)`,outputEmpty:`(输出;sendSubscribe 将逐条渲染 SSE 事件)`,k6hcbxi001:`拖拽调节抽屉宽度`,k34cz76002:`目标 agent 实例`,k1bqe2pj003:`参数模板`,k405w8004:`执行`,kq00d3v005:`调试:请回显这条消息`,k1kgwib8006:`调试消息`,k1e1hi4u007:`▶ 流结束`,k1vryfv008:`选择目标 agent`},agentInspectorDrawer:{tabStream:`独立输出流`,tabMemory:`记忆`,grpWorking:`执行中`,grpQueued:`待执行`,grpDone:`已完成`,swOn:`启用`,swOff:`停用`,okRemove:`移除`,prioImmediate:`即时`,prioQueued:`排队`,k3ypnl022:`完成`,k16t80ax023:`聚焦主时间线`,k6hcbxi001:`拖拽调节抽屉宽度`,k1ofh789002:`移除该成员?其排队任务将自动重派给剩余成员`,kwsotdg003:`向该 agent 注入消息…`,k1frr9es004:`该 agent 暂无事件(连接后产生)`,k1axbijb005:`任务队列`,kas9m5q006:`成员管理:`,k1hrtylo007:`移除成员`,k1jxt8vh008:`要求回执`,k3xkc7009:`发送`,k498bf010:`队列`,kk653nv011:`执行中:「`,k43rxk012:`空)`,k1bs9x43013:`取消聚焦`,kgjqkq9014:`重新启用(接收新任务)`,kpkjhbz015:`停用(暂停接收新任务)`,k3n5z7y016:`已启用`,k1dst50d017:`已停用(其排队任务由调度回收)`,kane5dq018:`成员已移除`,k1p055kl019:`已取消聚焦`,ky2fhkf020:`主时间线已聚焦该 agent`,k1y2jrsr021:`消息已注入`},agentLanesView:{cloneFail:`模板克隆失败{p0}`,leadExistsShort:`(已有 lead,不能再添加 lead)`,deployFail:`编组部署失败{p0}`,leadExistsChannel:`(channel 已有 lead,编组内 lead 成员冲突;请先移除现有 lead 或选用无 lead 编组)`,hitlStopTitle:`HITL 停止该 Agent 运行时`,namePh:`如 db-migrator / test-writer`,ompFull:`omp(完整 LLM agent)`,tplCloneLabel:`选择 Agent 模板(克隆 name/harness/config 为独立实例)`,tplDisabled:` · 已停用`,withLead:`,含 lead`,roleHarnessLabel:`角色 / harness`,syspromptLabel:`场景系统提示词(systemPromptPrefix)`,k1wn2vmt036:`omp 进程 PID {p0} · harness 会话状态`,k1l029kf037:`中断成员 {p0} 的运行时?执行中任务将中止,成员保留`,kt3n27m038:`移除成员 {p0}?其排队任务将自动回收`,k7xt1y6039:`拖拽调节 {p0} 泳道宽度`,k1qcmxyu040:`{p0}({p1} 名成员{p2})`,k19j5rho041:`编辑成员 {p0}`,k21xjz2044:`成员 {p0} 已更新(运行时将按新提示词重载)`,k3jmrw1045:`更新失败: {p0}`,k1g5ykr3046:`成员 {p0} 已添加(等待 agent.member 事件回流对齐)`,k1j97j74047:`添加成员失败: {p0}`,kk3uwzo048:`已克隆模板添加 {p0} 成员 {p1}(等待事件回流对齐)`,k1gslqf9050:`编组 {p0} 已部署({p1} 名成员,等待事件回流对齐)`,k1n3o03a052:`成员 {p0} 已移除`,k13dsp10053:`移除成员失败: {p0}`,kcpbv47054:`已中断成员 {p0} 的运行时`,k139ec5j055:`中断失败: {p0}`,k107s4am001:`已注入场景系统提示词`,k1884q17002:`打开该成员的 omp 原生终端(实时 TUI + HITL 控制:注入对话 / 中止 / 应答 ask)`,k1pgd3tf003:`编辑成员信息 / 场景提示词`,k17kcn55004:`添加团队成员`,k3nufdm005:`成员名`,k479op006:`角色`,kaogfp007:`系统提示词前缀(可选,定义成员专长)`,kbqn6w5008:`如:你是数据库迁移专家,专注 schema 变更与数据回填…`,kung925009:`选择模板…`,k1bl78fu010:`克隆角色`,k1vhvbz7011:`系统提示词覆盖(可选,留空沿用模板预设)`,k7ft6ig012:`留空 = 使用模板自带 config.systemPromptPrefix;填写则覆盖为该场景提示词`,k29om9b013:`选择 AgentTeam(批量克隆全部成员)`,kur1otz014:`选择编组…`,k10ti81i015:`该内容作为系统提示词前缀,注入该成员 harness 每轮 prompt(omp)或状态消息(mock)。留空 = 无场景提示`,k3y5ja016:`团队`,k3ll6sa017:`名成员`,k1fmutgo018:`添加成员`,k1woev5v019:`成员快照同步中…`,k122h4pc020:`团队暂无成员`,k7cr2h8021:`点击右上「添加成员」从零创建,或从模板 / 编组一键部署`,k3xycu022:`场景`,k4588s023:`终端`,k1b7cwvy024:`从零创建`,k1ndey1w025:`从模板克隆`,k1l5qyux026:`部署编组`,kqg6783027:`mock(测试剧本)`,k1weovo028:`lead(至多一个,已有 lead 会被拒绝)`,knybb6r029:`模板库为空?到「模板库」页面先创建可复用的 Agent 模板(omp/mock/claude + 系统提示词)。`,k1qqnq5030:`编组内每名成员模板都会克隆为独立实例;若编组含 lead 而本 channel 已有 lead,部署将被拒绝(409)。`,k1rw1rd2031:`保存后成员运行时重载,下次任务/调度使用新提示词`,ky6jqt4032:`成员名不能为空`,kfvflle033:`user 编辑成员信息/场景提示词`,k13xo8sz034:`请选择要克隆的 Agent 模板`,k1tjd5ab035:`请选择要部署的 AgentTeam`,supervisionWatchdogTitle:`监督观察阈值已触发({p0});这是观察信号,不是取消`,supervisionRunningTitle:`监督回合进行中(attempt={p0},tick={p1})`,supervisionDecisionText:`决策 {p0}`,supervisionDecisionTitle:`Lead 最后决策:{p0}({p1})`},artifactCard:{empty:`(空)`,k3yu62003:`展开`,k3y694004:`复制`,k40p82001:`收起`,k3n6o1m002:`已复制`},assetLibrary:{badModelFile:`仅支持 .glb/.gltf/.obj/.fbx 模型文件`,katn7lo015:`拖到孪生场景即生成设备实例 · {p0}`,k8nv3or016:`已上传 → {p0}`,k1hhga4h014:`确认上传`,k7la4x5001:`设备模型库`,kulif5b002:`拖入孪生空间生成实例`,k5hg6jq003:`松开以选择模型`,k3xdnn004:`取消`,k1ar7n8i005:`上传中…`,k1n32zs0006:`设备 · 拖拽放置`,k1kq2tmi007:`载入中…`,k15527e1008:`暂无设备模型,拖入 .glb 文件上传`,k1xz5wvk009:`暂不支持 3D 预览)`,k1iiort6010:`拖放或选择模型文件`,k498l011:`删`,kcjqcaw012:`请先拖入或选择设备模型文件(.glb/.gltf/.obj/.fbx)`,k8n918k013:`已删除模型文件`},ontology:{kicker:`工业语义资产`,title:`本体模型`,subtitle:`构建与治理面向控制的本体:实体、关系、约束规则与语义绑定;经编译器生成可追溯的问题界、步限与运行时守卫,发布为不可变版本。`,refresh:`刷新`,newDraft:`新建草稿`,pickDraft:`选择草稿`,validate:`校验`,compile:`编译预览`,publish:`发布版本`,publishHint:`发布仅管理员;未获批规则不得进入控制约束`,loadFail:`加载本体清单失败`,loadDraftFail:`加载草稿失败`,loadVersionsFail:`加载版本失败`,draftCreated:`已创建草稿 {id}`,draftCreateFail:`创建草稿失败`,validateOk:`校验通过`,validateFail:`校验未通过`,autofix:`自动修复`,autofixDone:`自动修复 {n} 项(已落库,rev 已前进)`,autofixNothing:`没有可安全自动修复的问题`,autofixPartial:`已修复可自动处理项;证据缺失/平台绑定漂移仍需人工或 Agent 补充`,autofixFail:`自动修复失败`,autofixLog:`本次自动修复 {n} 项`,compileOk:`编译完成:{status}`,compileFail:`编译失败`,publishOk:`已发布 v{version}`,publishFail:`发布失败`,ruleTransitionOk:`规则 {rule} → {to}`,ruleTransitionFail:`规则状态迁移失败`,approvalRequested:`已生成审批单 {id}(需第二人裁决)`,approvalDecided:`已裁决通过`,approvalFail:`批准流程失败`,compareFail:`版本比较失败`,retireOk:`已退役 v{version}`,retireFail:`退役失败`,compileEmpty:`先在工具栏点「编译预览」`,global:`全局本体`,empty:{ontologies:` 本体清单为空:先新建草稿并发布首个版本。`,issues:` 当前草稿没有校验问题。`},noEvidence:`无证据`,from:`起始版本`,to:`目标版本`,compare:`比较`,tab:{overview:`总览`,graph:`实体与关系`,rules:`约束规则`,bindings:`语义绑定`,versions:`版本与发布`,compile:`编译预览`},section:{ontologies:`本体清单`,issues:`校验问题`,entities:`实体`,relations:`关系`,bindingFailures:`绑定校验失败`,artifacts:`四类编译产物`,ruleTrace:`规则溯源`},stat:{ontologies:`本体`,drafts:`草稿`,entities:`实体`,rules:`规则`,bindings:`绑定`},col:{kind:`类型`,name:`名称`,role:`角色`,unit:`单位`,predicate:`关系`,evidenceTier:`证据档`,ruleKind:`规则类型`,level:`约束级别`,status:`状态`,evidence:`证据`,action:`操作`,entity:`实体`,target:`目标通道`,direction:`方向`,unitPair:`单位(声明→目标)`,version:`版本`,line:`产线`,parent:`父版本`,createdAt:`创建时间`,decision:`决策`,code:`决策码`,message:`说明`},action:{review:`提交审查`,validate:`登记为已验证`,approve:`申请批准`,retire:`退役`},prompt:{ontologyId:`本体 id(形如 ont-pva-line01)`,lineId:`授权锚定产线 id(可留空)`,approvalId:`审批单 id(留空=仅生成不裁决)`},diff:{entities:`实体`,relations:`关系`,rules:`规则`,bindings:`绑定`,rulesChanged:`变更的规则`},graph:{viewGraph:`图`,viewTable:`表`,baseline:`基线`,hint:`点击节点查看详情与邻接;虚线=候选影响,实线=已观测/已验证`,searchEntity:`搜索实体 key 或名称`,largeGraph:`实体较多({n} 个),已切换为聚焦模式:先搜索一个实体再看邻接`,neighbors:`邻接(关联边与节点)`,direct:`直接关联`,indirect:`间接关联(2 跳)`,loading:`正在加载邻接…`,truncated:`邻居超过显示上限,已截断(可缩小跳数或类型过滤)`,noNeighbors:`该实体没有关联边`,loadNeighborsFail:`加载邻接失败`,aria:`本体节点关系图`,lane:{mv:`操纵量 MV`,cv:`被控/质量量 CV`,structural:`状态与结构`},tier:{candidate:`候选影响`,observed:`已观测相关`,validated:`已验证控制`}},drawer:{bindings:`语义绑定`,noBindings:`该实体未绑定平台节点`}},toolsPage:{title:`工具管理`,subtitle:`内置工具与插件注册工具的统一目录:来源、角色、可用性、参数 Schema,以及被哪些 Channel 停用。`,refresh:`刷新`,sync:`重新同步`,total:`工具总数`,builtin:`内置`,plugin:`插件`,available:`当前可用`,disabledByChannels:`Channel 停用项`,lastSync:`最后同步`,search:`搜索工具名 / 说明 / 插件`,sourceAll:`全部来源`,sourceBuiltin:`内置`,sourcePlugin:`插件`,availableOnly:`仅显示可用`,name:`工具`,source:`来源`,pluginCol:`插件`,roles:`角色`,availableCol:`可用`,yes:`是`,no:`否`,channels:`停用 Channel`,firstSeen:`首次发现`,updated:`定义更新`,parameters:`参数 Schema`,disabledChannels:`停用该工具的 Channel`,noDisabledChannels:`没有 Channel 停用该工具(或均使用默认全启用)。`,loadFail:`工具目录加载失败`,syncDone:`同步完成:共 {total} 个,插件 {plugin} 个,新增不可用 {unavailable} 个`,syncFail:`工具目录同步失败`,pluginAll:`全部插件`},channelTools:{sectionTitle:`工具(本 Channel 独立选择)`,description:`硬规则排除的工具不能通过 Channel 开关打开;保存后按行生效,在跑 Agent 会刷新工具清单。`,refresh:`刷新`,modeAll:`全部可用工具(默认)`,modeSelected:`仅启用勾选的工具`,modeAllHint:`新安装的工具默认启用;取消勾选即停用。`,modeSelectedHint:`只有勾选的工具会注入 Agent;新工具默认不启用。`,stats:`共 {total} 个 · 生效 lead {lead} / worker {worker} · 本 Channel 停用 {disabled}`,searchPlaceholder:`搜索工具名 / 说明 / 插件`,sourceAll:`全部来源`,sourceBuiltin:`内置`,sourcePlugin:`插件`,filterAll:`全部状态`,filterEffective:`已生效`,filterDisabled:`本 Channel 停用`,filterBlocked:`硬规则阻止`,selectAll:`全选`,selectNone:`全不选`,dirty:`有未保存的工具选择`,coreWarning:`核心协作工具被停用,任务进度/完成回执可能无法回收。`,leadOnly:`仅 lead`,unavailable:`未注册`,noTools:`没有匹配的工具`,undo:`撤销`,resetConfirm:`清除本 Channel 的工具策略,恢复默认全部合格工具启用?`,reset:`恢复默认`,save:`保存工具选择`,saved:`工具选择已保存;在跑 Agent 将刷新工具清单`,resetDone:`已恢复默认(全部合格工具启用)`,resetFail:`工具策略重置失败`,saveFail:`工具选择保存失败`,loadFail:`工具列表加载失败`,reasonRole:`角色不允许`,reasonProfile:`Channel 档位不开放`,reasonWrite:`写守卫阻止`,reasonPlugin:`插件未启用`,reasonChannelPlugin:`本 Channel 关闭了插件`},channelSessionList:{schedTagTip:`已绑定 {p0} 个启用的定时任务`,nameRequired:`Channel 名称必填`,defaultSuffix:`(默认)`,tplCenterTitle:`Channel 模板中心`,newChannelTitle:`新建 Channel`,unmountTitle:`移出 workspace`,mountFromTpl:`从 Channel 模板挂载`,pfxBuiltin:`内置 · `,pfxPublic:`公开 · `,nameLabel:`Channel 名称`,wsPh1:`留空 = data/workspaces/<channelId>`,llmDefaultLabel:`默认模型(可选;留空用各 Harness 默认)`,catalogLoading:`目录加载中…`,effortPh:`effort(可选)`,variantPh:`variant(可选)`,builtinTag:`内置`,saveTplOk:`保存模板`,kjmldih035:`设置 {p0}`,k1yurooi036:`移出 {p0}`,kfe4pzq037:`工作目录:{p0}(点击复制路径)`,k1oes209038:`{p0}{p1}({p2} 成员)`,k1pmemvt039:`Channel 设置 · {p0}`,kud74vg040:`已复制:{p0}`,k1x2th9e041:`创建失败:{p0}`,kai50qc042:`已从模板实例化并挂载(成员 {p0} 个)`,k2hfym5043:`{p0} 模板`,k3wcox034:`任务`,kne35ug001:`Channel 设置(场景/工作目录/存为模板)`,k1qjyl6l002:`新建 Channel 并挂载`,k40gkk003:`描述`,k1wj4f38004:`作业场景 Prompt(全员注入)`,k1098zie005:`该 channel 全部 Agent 共享的作业场景规范,与系统设计手册组合注入每个 harness……例如:所有产出必须附中文摘要;代码修改需先列计划再动手;回复末尾附 [DONE] 标记`,kmgv4h5006:`工作目录(团队作业挂载点)`,k1i8q46x007:`作业场景 Prompt(修改后成员运行时自动回收,按新场景重装配)`,bindLineLabel:`绑定产线(只读授权)`,bindLinePlaceholder:`选择要绑定的产线(可清除=解绑)`,bindLineHint:`绑定后频道成员无需节点绑定即可读取该产线的运维日志、配方历史与实时状态;参数下发等写操作仍需节点授权。`,execModeLabel:`执行模式(产线作业三档)`,execModeObserve:`观察(只读分析)`,execModeObserveHint:`Agent 只能数采/台账/分析,控制/配方/启停线工具全部摘除 —— 安全只读,可放心使用`,execModeManual:`手动(逐动作批准)`,execModeManualHint:`所有下发挂起等人工确认,Agent 必须附带依据;适合联调与高风险工况`,execModeAuto:`自动(限界自动)`,execModeAutoHint:`免逐动作批准,但四层限界/单步/运行门照常生效,且自动下发必须附带依据(hypothesis)`,execModeLineGate:`产线总闸`,execModeBindings:`绑定面`,execModeSuppressed:`已被产线手动模式压制:产线总闸为 manual 时,自动档的下发仍会逐动作审批`,execModeEscalateHint:`该切换将放开审批/写能力,需二次确认`,execModeConfirmBtn:`仍要切换`,execModeSaved:`执行模式已切换`,ku3ugac008:`该 channel 全部 Agent 共享的作业场景规范……`,k67dzev009:`工作目录(Agent 作业 cwd;修改后 omp 子进程按新目录重启)`,k6kpql010:`保存为 Channel 模板`,k1f55q76011:`模板名称`,k3lrqn0012:`可见性`,kbdp56k013:`选择团队工作目录`,kkv789s014:`尚未挂载 Channel(可从下方模板一键实例化)`,k1bst7s9015:`同步中…`,k18ppu31016:`模板 = 场景 + 工作目录 + 团队;实例化即装配成员`,k1u3zsr5017:`注入顺序:场景规范 → 成员专长 → 记忆 → 系统手册 → 任务;设置弹窗可热更新(成员运行时自动回收重装配)`,k3pz0ma018:`浏览…`,kucq30k019:`执行任务时该目录注入各 Agent harness 的作业 cwd(omp 子进程工作目录);不存在自动创建`,k1ful761020:`Channel 创建后为空团队,无任何 Agent;进入后通过「添加成员」选择角色(lead/worker)与场景提示词完成装配`,k1x6kznr021:`捕获当前场景/工作目录/团队组合为可复用模板`,k1otvrfv022:`私有(仅本人)`,k1cc399s023:`公开(全员可实例化)`,kl9btf7024:`成员有模板引用则保留引用,否则保存内联快照;场景与工作目录照搬`,k1ggoa45025:`成员 / 忙`,krij3gg026:`复制失败(浏览器未授权剪贴板)`,k1bg6shc027:`创建失败`,kn89jvs028:`Channel 已创建(空团队;进入后通过「添加成员」装配 lead / worker)`,k97xi7u029:`模板挂载失败`,k1hgfvdc030:`移出失败`,kvsxlu6031:`已更新;成员运行时将按新设置回收重装配`,k1i0ji0y032:`模板名必填`,kjpguxw033:`已捕获为 Channel 模板(场景/目录/团队快照)`,k1plugon044:`插件开关已保存;该 Channel 在跑 Agent 的工具清单即时刷新`,k1pluglbl045:`插件(本 Channel 独立开关;关闭后其工具对本团队 Agent 隐藏并拒绝调用)`,k1plugsrc046:`未显式配置(默认全启用);首次切换后按行生效`},clusterArtifact:{view:`查看`,kyh87lw001:`交付物正文与上方回复一致`,k49les002:`隐藏`},chat:{title:`群聊`,messageCount:`{p0} 条`,refreshTitle:`刷新成员与设置`,refresh:`刷新`,join:`加入群聊`,notMemberHint:`未加入群聊 —— 需 owner 邀请或 Channel 未公开`,privateHint:`该 Channel 未公开或未开启群聊 —— 需 owner 邀请`,pendingHint:`加入申请待 owner 批准`,leave:`退出群聊`,leaveConfirm:`退出群聊后将立即失去读、发言、审批与通知补拉权限,确认退出?`,ownerHint:`你是 owner(不可退出,可转移 owner 或删除 Channel)`,approve:`批准`,removeConfirm:`移除该成员后其立即失去群聊与审批权限,确认?`,rosterHidden:`名册不可见(非成员)`,settingsTitle:`群聊设置`,visibilityLabel:`可见性`,visibilityPrivate:`私有(仅成员可见)`,visibilityPublic:`公开(登录用户可发现)`,joinPolicyLabel:`加入策略`,joinPolicyOwnerApprove:`需 owner 批准`,joinPolicyOpen:`开放加入`,approvalPolicyLabel:`审批策略`,approvalOwnerOnly:`仅 owner 可决策`,approvalAnyMember:`任一成员可决策`,chatEnabledLabel:`开启群聊`,saveSettings:`保存设置`,statusActive:`在群`,statusPending:`待批准`,statusLeft:`已退出`,statusRemoved:`已移除`,joinedPending:`已提交加入申请,等待 owner 批准`,joinedOk:`已加入群聊`,errChatDisabled:`该 Channel 未开启群聊`,errChannelPrivate:`该 Channel 未公开,需 owner 邀请`,leftOk:`已退出群聊`,errOwnerCannotLeave:`owner 不能退出群聊,请先转移 owner`,approvedOk:`已批准加入`,removedOk:`已移除成员`,settingsSaved:`群聊设置已保存`,settingsConflict:`Channel 设置已被他人修改,请刷新后重试`,avatarHuman:`人`,earlierMessage:`更早的消息`,backToLatest:`回到最新`,latest:`最新`,loading:`加载中…`,loadEarlier:`加载更早的消息`,emptyTitle:`还没有群聊消息`,emptyHint:`直接发言只进群聊(0 次 Agent 执行);输入 {'@'} 提及 Agent 才会触发执行,{'@'} 成员只发定向通知。`,roleUser:`用户`,roleSystem:`系统`,replyTitle:`引用这条消息回复`,reply:`回复`,mentionAgentTitle:`点击查看该 Agent`,mentionMemberTitle:`被 {'@'} 的成员(不触发 Agent)`,answeredFrom:`回答自 {p0}`,askedBy:`· 提问者 {p0}`,deliveryPending:`待投递`,deliveryDelivered:`已入信箱`,deliveryConsumed:`已被消费`,deliveryFailed:`投递失败`,deliveryCancelled:`已取消`,toolbarChatTitle:`群聊:仅显式 {'@'}Agent 才触发执行`,reachAgentsTitle:`仅显式 {'@'}Agent 触发执行`,reachAgentsText:`{'@'}{p0} · 将触发 {p1} 次 Agent 执行`,reachNoAgentTitle:`未 {'@'}Agent:消息只进群聊,不触发任何 Agent`,reachNoAgentText:`仅群聊 · 0 次 Agent 执行`,notifyMembersSuffix:` 将收到定向通知`,mentionHint:`输入 {'@'} 提及成员 · Enter 发送`,cancelReply:`取消回复`,unresolvedMentions:`未识别的 {'@'}: {p0}(不在本群成员内,未投递)`,sentToChat:`已发到群聊 · {p0} 个 Agent 已收到投递`,sentToChatNoAgent:`已发到群聊(未 {'@'}Agent,无 Agent 执行)`,composerChatDisabled:`该 Channel 未开启群聊 —— 请 owner 在右侧成员面板开启后重试`,composerNotMember:`你还不是该 Channel 的群成员 —— 请在右侧成员面板加入群聊`,composerPlaceholder:`发送到群聊… {'@'} 提及 Agent(触发执行)或成员(仅通知)`,blockChatDisabled:`该 Channel 未开启群聊(owner 可在右侧成员面板开启)`,blockNotMember:`你还不是群成员 —— 请在右侧成员面板加入群聊后发言`},notifications:{bellTitle:`我的通知({'@'} 提及 / Agent 回复 / 审批)`,title:`我的通知`,unreadCount:`{p0} 未读`,markAllRead:`全部已读`,markReadFailed:`标记已读失败`,empty:`暂无通知 —— 被 {'@'} 、收到 Agent 回复或审批请求时会出现在这里`,typeMention:`{'@'} 提及`,typeAgentReply:`Agent 回复`,typeHitlRequest:`待审批`,typeHitlResolved:`审批结果`,typeMember:`成员变更`},lineOps:{panelAria:`产线作业面板`,title:`产线作业`,statDcw:`写控`,statDaq:`采集`,statAml:`训练`,statSafe:`拦截`,filterAria:`作业筛选`,filterDaq:`取数`,filterTwin:`孪生`,filterSafety:`安全`,empty:`等待产线作业事件`,systemName:`系统`},clusterError:{showAll:`全部 {p0} 条`,k40p82001:`收起`},clusterLife:{done:`完成`,k1xthifv001:`非状态事件`,k498bf002:`队列`,k3pi5z1003:`次状态`},clusterMember:{showAll:`全部 {p0} 条`,byUser:`用户`,vAdded:`新增成员 {p0}`,vUpdated:`更新成员 {p0}`,vDisabled:`禁用成员 {p0}`,vRemoved:`移除成员 {p0}`,reason:`,理由:{p0}`,k40p82001:`收起`},clusterMemory:{showAll:`全部 {p0} 条`,k40p82001:`收起`},clusterOther:{showAll:`全部 {p0} 条`,k40p82001:`收起`},clusterRoute:{k12448jn010:`人类发送者:{p0}`,khsfl59011:`查看 {p0}`,k94hqp2012:`回复关联消息 {p0}`,k13ewgum013:`全部 {p0} 条`,kfbpe32001:`发送方要求回复:接收方须回执执行结果`,kyza1ya002:`(广播)`,k3wn89c003:`需回复`,k40p82004:`收起`,k1ax44eo005:`任务派发`,k1bsct42006:`取消通知`,k1ax087h007:`子任务完成`,k1cxjc4m008:`实时注入`,k1bka5dz009:`协作消息`},clusterStatus:{empty:`(空)`,k1fpy8te001:`思考 / 中间输出`},clusterStream:{kpk9wff001:`内容并入了后续回复块(不再重复渲染)`},clusterTask:{kfwdcd4008:`状态代码 {p0}`,k3n8lhn001:`已提交`,k3n8mf0002:`已指派`,k3o5tz9003:`执行中`,k1hpsvap004:`等待合并`,k10w8u89005:`完成·经验收`,k4u7566006:`失败·待改派`,k3n5vg5007:`已取消`},clusterTool:{expandAll:`展开全部 {p0} 个调用`,k40p82001:`收起`,kindIndustrial:`工业`},commandPalette:{gotoTeams:`前往:AgentTeam 编组库`,gotoSchedules:`前往:定时任务中心`,viewLanes:`视图:Agent lanes`,actA2a:`动作:A2A RPC/SSE 调试器`,k1nz14ux013:`切换 Channel:{p0}`,k1d8xtez014:`时间线过滤:{p0}`,k1nn6i83001:`输入命令…(导航/视图/Channel/过滤/动作)`,ktup4q4002:`无匹配命令`,k1kvl0fa003:`选择 /`,k1e3ualj004:`执行 /`,k3x62t005:`关闭`,kmxxk3u006:`前往:工作区总览`,k4s8e5q007:`前往:Agent 模板库`,k1ezz11x008:`前往:Channel 模板中心`,k143z9bg009:`视图:时间线`,k13ztmim010:`视图:任务板`,k21cpnp011:`视图:多通道同屏`,k1tm54il012:`动作:聚焦任务输入框`},composer:{loopIntervalRange:`loop 间隔需设置为 1 到 86400 秒`,defaultLeadTitle:`未 {'@'} 指定:任务自动路由 lead 调度;{'@'} 某成员可直发`,chipHint:`输入 {'@'} 提及成员 · ⌘/Ctrl+Enter 发送`,seconds:`秒`,sendTitle:`发送(⌘/Ctrl+Enter)`,kl3604i033:`直发 {'@'}{p0}`,k1cxjc4m034:`实时注入`,k1d2idgj035:`任务已下发 → {'@'}{p0}({p1})`,k1wk4bf036:`消息已发送给 {'@'}{p0}({p1})`,k2z0fsx032:` · 直发`,k1b38y2b001:`不限次数`,k1jqqvhe002:`HITL 实时注入:目标运行中时直接注入其当前回合(同轮可见)`,k195594v003:`要求对方回执`,k1bxvc46004:`发送给…`,k3wcox005:`任务`,k17u6q77006:`首行 = 标题`,k41ykc007:`消息`,k3x9n2008:`即时`,k40g8m009:`排队`,k3xv7u010:`回执`,k49kr1011:`间隔`,k2z7yuw012:` · 默认`,k1bosqfv013:`即时注入`,kqdhdlq014:`任务标题不能为空`,k1l36qf9015:`最大次数需设置为 1 到 10000 次,留空表示不限次数`,k1bw65is016:`请选择目标 Agent(可用 {'@'} 提及)`,k1ww0ftm017:`运行中 · 任务进入其信箱排队`,k9eq10w018:`目标正在执行:新任务投递到信箱,当前回合结束后按 FIFO 处理`,kbhz1rp019:`已停止 · 任务将入队,唤醒后执行`,kophjf5020:`目标运行时已停止:任务安全入队,重新启用后自动处理`,k4qgtiw021:`空闲 · 任务将立即起回合执行`,kfmjwas022:`目标空闲:任务投递后立即开始处理`,kwg68t0023:`运行中 · 将实时注入当前回合(HITL)`,k7w1etd024:`运行中 · 本回合结束后处理`,k9m6p7u025:`目标正在执行任务:即时消息会注入其运行中的会话(同轮可见)`,kj1ngpo026:`已停止 · 消息将入队,唤醒后送达`,kmf7lcc027:`目标运行时已停止:消息安全入队,重新启用后自动处理`,k1tet5df028:`空闲 · 将立即起回合处理`,kn600in029:`目标空闲:消息投递后立即开始处理`,k2h5jwc030:`输入任务下发(首行标题,{'@'} 成员直发,缺省 lead)… ⌘/Ctrl+Enter 提交`,k15mwzt7031:`输入消息/通知({'@'} 成员指定目标,缺省 lead)… ⌘/Ctrl+Enter 发送`},deviceTwinPanel:{armDelete:`再次点击确认删除该设备实例`,delDevice:`删除该设备实例`,winRecipe:`当前运行配方工艺窗口`,winRange:`节点全局量程`,k9r7d4e030:`PLC 当前读数(实际值)`,kq2jssk008:`配方工艺窗口`,k1iwj796009:`节点量程`,kxddket010:`超出{p0} {p1}`,k1j04u8001:`下发设定值(越限将被拒绝)`,k7k6evr002:`设备控制台`,kkw7sn5003:`正在装载设备寄存器…`,k13y2qmg004:`未注册设备`,kotf23l005:`将设备模型拖入孪生场景即可创建数字孪生实体`,k48grv006:`配方`,k44653007:`确认`},eventBlock:{stBusy:`运行中`,stStopped:`已停止`,stIdle:`空闲`,copied:`已复制`,copyAll:`复制全文`,kc918hn001:`需要回应或人工知悉`,kcugdph002:`与 delta 增量重复的内容已合并为一段`,kknq700003:`引用到输入框`,k3wmcv4004:`需关注`,k3vp67i005:`运行中`,k3xk4t006:`去重`},fileSelectorModal:{title:`选择工作目录`,pickHere:`选择此目录`,pathPh:`输入绝对路径跳转(如 D:\\\\projects\\\\my-app)`,go:`跳转`,kvwnnvn001:`..(上一级)`,k268o2o002:`(无子目录;可直接「选择此目录」使用当前位置)`,k1rt80dq003:`双击目录 = 直接选用;选定路径将作为团队工作目录(Agent 作业 cwd),不存在时会自动创建。`,kz99pgv004:`目录读取失败`},inspectorPanel:{tabMembers:`成员`,tabTasks:`任务`,tabMemory:`记忆`,tabStats:`统计`,k1tqitzl008:`成员同步中…`,kks0y5h009:`任务同步中…`,k12oip5c010:`成功率 {p0}% / 均耗 {p1}s / 失败 {p2}`,k498bf001:`队列`,k3ypnl002:`完成`,k3mp44x003:`子任务`,k3w9q9004:`交付`,k1el4cgf005:`暂无成员`,k1el0vqb006:`暂无任务`,k1el1plr007:`暂无历史`},laneBlocks:{k1br5dtr004:`加载更早`,k1otw1r3001:`正在同步历史…`,k1el0s5k002:`暂无事件`,k1br0ij9003:`加载中…`},liveAgentBar:{kh66fan003:`查看 {p0} 的执行详情`,k1a39d92004:`{p0} 位成员同样在忙`,k3o5tz9005:`执行中`,k68d2a2006:`队列 ×{p0}`,kr4bxgp001:`全部成员空闲`,k1sf0ymy002:`正在执行 ·`},memoryPanel:{tokenAuto:`成员 token 已自动装配`,tokenManual:`自动装配失败,可手动填入成员 token`,tokenPh:`Bearer token(成员身份,兜底手填)`,searchPh:`混合检索记忆(FTS+向量,与 agent search_memory 同源)…`,writeOk:`写入`,dedupLabel:`dedupKey(可选,幂等)`,k1du3379001:`成员身份`,k1bbee8p002:`写入记忆`,k419s4003:`标题`,k3wv1f004:`内容`,k3l2hmp005:`公共域`,k3rve9a006:`私有域`,k1k7okbe007:`记忆列表`,k3x1jg008:`刷新`,k3wtib009:`写入`,kemjjvq010:`shared(公共域,全员可检索)`,k43rxk011:`空)`,k3onh9w012:`本人)`,k3zul4013:`手动`,k186sctu014:`读取失败(检查成员身份)`,k1eh0fbo015:`检索需要关键词与成员身份`,k1dpj734016:`标题/内容/成员身份必填`,k3n5bat017:`已写入`,k1bb5i1l018:`写入失败`},mentionHoverCard:{k1t89ag4001:`点击提及打开执行详情`,k3o5eky002:`执行:`},multiChannelView:{a2aMessage:`文本 {p0}`,a2aArtifact:`交付 {p0}`,k3wcox005:`任务`,kvfx0mh006:`拖拽调节 {p0} 列宽`,kfvue7n009:`记忆 {p0}`,khq39oe010:`成员 {p0} {p1}`,k16wopr9011:`错误 {p0}`,k1bfi9ms001:`左侧挂载多个 Channel 后在此同屏观察`,k1bst7s9002:`同步中…`,k4by6003:`忙`,k1el0s5k004:`暂无事件`},paneSplitter:{kejk1i9001:`拖拽调节面板宽度`},statsPanel:{k1i88c0b001:`缓冲事件`,kfplawo002:`近 10s 吞吐`,kzcd51003:`事件类型分布(缓冲窗口)`,k1pevwxl004:`(暂无事件)`},taskBoardView:{emptySubNew:`在下方 Composer 提交首个任务(首行标题,支持 goal / loop / pipeline 模式)`,emptySubSync:`任务快照对齐后自动呈现`,k8m7hm6020:`路由理由:{p0}`,k1f9c17l019:`正在同步`,k43pyn001:`看板`,k3x7l0002:`列表`,k3wcox003:`任务`,k168w1ze004:`任务 · 拖拽卡片到「异常/取消」取消,失败任务拖回「待启动」重试`,k4b1x005:`子`,k3vkhhj006:`还没有`,k13pad50007:`拖入此处执行该动作`,k3nf71d008:`待启动`,k3o5tz9009:`执行中`,k1hpx9p1010:`等待汇总`,k3n77g3011:`已完成`,k1veotws012:`异常/取消`,k189y4q013:`已请求取消任务`,kv1l1j3014:`任务已重新派发`,k1e7zwuc015:`操作失败`,k1bs0t9b016:`取消任务`,k1lclwk6017:`重试派发`,k1dx9ysj018:`打开详情`},taskInspectorDrawer:{fallbackTitle:`任务详情`,failReason:`失败原因`,tabTimeline:`状态时间线`,kkp77tf015:`交付物({p0})`,khnua62016:`子任务({p0})`,kxj74io017:`原始内容({p0} parts)`,k6hcbxi001:`拖拽调节抽屉宽度`,kns2a6x002:`确认重试该任务?`,k1a7jqb9003:`确认取消该任务?`,k40gkk004:`描述`,k1lcgf2b005:`重试任务`,k1bs0t9b006:`取消任务`,k1knph8c007:`路由理由`,kr3vr2x008:`暂无事件(连接前发生)`,k1kmqn5u009:`(无子任务)`,k3o48o4010:`指派:`,k485ye011:`进度`,k401n2012:`无)`,k1xj595a013:`已请求取消`,ke7bh8u014:`已重新投递执行`,timedOut:`已超时`,remainingMinutes:`剩余约 {p0} 分钟`,deadlineAt:`截止 {p0}`,cancelWithChildren:`这会同时停止 {p0} 个活动后代任务,已完成结果会保留。确定继续?`,cancelConfirm:`确定取消这个任务吗?`,childrenStats:`后代 {p0} · 活动 {p1} · 已取消 {p2}`},townView:{saveLayoutTip:`把全部设备的位置/朝向/缩放写入数据库`,readonlyTip:`运行模式只读`,daqPauseTip:`暂停全部采集:停止所有启用节点的采样(节点级启停独立)`,daqResumeTip:`恢复全部采集:仅启用节点恢复采集(手动停用的保持停用)`,chPlaced:`已在场景中,点击定位`,chDragHint:`拖拽到场景放置`,viewTop:`俯视 · TOP`,viewFront:`前视 · FRONT`,viewSide:`侧视 · SIDE`,deviceName:`设备名称`,transformBlender:`变换 · BLENDER`,unboundTip:`未绑定工业节点 —— 绑定后 Agent 可用 dcw_control / daq_query 工具`,k1k6wg8j185:`设备实例`,k44c2n186:`离线`,k1w6xehu187:`{p0} · {p1} · 拖到设备旁自动绑定,量程 {p2} ~ {p3} {p4}`,k1icez46188:`{p0} · {p1} · 设定值域 {p2} ~ {p3} {p4} · 拖到设备旁自动绑定`,k2bindr0007:`当前绑定「{p0}」,点击改绑到本设备`,k2bindr0008:`点击绑定到本设备`,k2bindr0009:`未落位`,k2bindr0010:`暂无可绑定的节点 — 在左侧模板行 + 新建,或到「数采中心」添加`,k2tplxp0001:`点击展开/收起「{p0}」节点 · {p1} · 量程 {p2} ~ {p3} {p4}`,k2tplxp0002:`新建「{p0}」节点(创建后拖入场景)`,k2tplxp0003:`暂无节点 — 点模板行 + 新建,或到「数采中心」添加`,k2tplxp0005:`已在场景 · 点击定位选中;拖拽可重新落位`,k2tplxp0006:`拖拽到场景放置(±95 内设备自动绑定)`,k479op189:`角色`,kb251ac190:`当前配方工艺窗口`,kcyn0191:`「{p0}」已在场景中(相同频道只能放置一个)`,k1hmf2ut192:`频道布局加载失败,自动重试中({p0})`,kgz2nej193:`已为 {p0} 换装 → {p1}`,k5e2460194:`已在落点放入居民 → {p0}`,k113fir9195:`{p0} {p1}越限量程({p2})`,k1knv89d196:`{p0} {p1}进入预警带({p2})`,ksjancw197:`{p0} {p1}恢复正常`,kbuyve5198:`超出{p0} {p1} ~ {p2}`,k3n93ed175:`已暂停`,k3os7i3176:`未放置`,k1l147w1177:`运行模式`,k1empnnb178:`数采节点`,k1iwj796179:`节点量程`,kh1586b180:`启用本节点`,k1bc6rqf181:`全局量程`,k121kfef182:`删除设备实例`,k1f1xmci183:`框选绘制`,k3lmtk3184:`同步中`,k1c9jyta001:`场景模式`,k1fsi3ir002:`活跃告警`,k1demf38003:`当前用户`,khzlyf5004:`缺省采样周期(未单独设置周期的节点跟随此值)`,k18d6wnb005:`定位选中设备`,k1io51dn006:`自动环绕`,k1sgjlq8007:`数据标注显隐`,k3wuf0008:`全屏`,k1k4j5i7009:`视角预设`,k1ejxiwp010:`点击选中该设备`,k1d0rl5z011:`拖动移动面板`,kz71l1f012:`相机靠近设备多少距离内显示数采数据卡`,k1bsckft013:`取消选中`,kpwutri014:`删除该数采节点(server 实体一并移除)`,k1k6vbaf015:`设备名称`,k1k73omv016:`解除绑定`,k15t7izc017:`下发 write(工程设定值;越窗将被配方联锁拒绝)`,k13enoy3018:`在场景中拖动框选,确定该角色的移动范围`,khqvwix019:`自动 = 工具调用直接执行;手动 = 每次下发需在此批准`,keztqrn020:`备注(随结果返回给 Agent)…`,k15avt7g021:`重新拉取该角色的历史对话`,k1bkswpz022:`全部确认`,klfwiqg023:`RPG 导航图 · 准星=镜头 · 拖动平移 · 点击聚焦 · 滚轮同步视角缩放`,k1lap9bs024:`重置视角`,kav8a8k025:`缩小视角(小地图同步)`,k1u7uce9026:`放大视角(小地图同步)`,k48dwh027:`运行`,k45eb0028:`编辑`,k1b3bk8t029:`保存布局`,k1k75lzy030:`设备资源`,k2gwyas031:`数采节点 · DAQ`,k3xg3w032:`周期`,km7ayhi033:`智控节点 · DCW`,k1c9n911034:`场景管理`,k1b0z4vr035:`产线孪生总览`,kv72860036:`3D 视角 · 标准`,k1k6xemt037:`设备总数`,k49lh038:`台`,k1l1a9t2039:`运行设备`,k4dfq040:`条`,k1emsai1041:`数采通道`,k4l1w042:`路`,kbrxdq1043:`线体健康度`,k3rwxjc044:`空场景`,k1sa1eaj045:`从左侧「设备资源 / 数采节点」拖入实体,开始搭建数字孪生空间`,k1mehlxs046:`频道管理`,k489ka047:`边界`,k3zhy5048:`形状`,k414bc049:`椭圆`,k43u0g050:`矩形`,k1fbz4s1051:`横轴半径`,k1ighwgs052:`纵轴半径`,k40qab053:`朝向`,kimxls2054:`为频道成员选择 3D 角色模型(实时换装并持久化)`,k419rbs055:`该频道暂无成员`,k1b3kp8f056:`保存边界`,k1hs45qg057:`移除频道`,k3x62t058:`关闭`,kvjdqfg059:`正在铺设数字孪生空间…`,k1c9iq23060:`场景控制`,k1gizopz061:`环境光照`,k1bcpqto062:`构造透明度`,k1bztha1063:`告警阈值`,ka4i1s9064:`数采可视距离`,k1idc6pa065:`网格吸附`,k1i046wf066:`紧急停止`,k1kfoef9067:`趋势分析`,trendExpandAll:`展开全部 {p0} 路通道`,trendCollapse:`收起`,statesOffline:`离线`,fpsCapLabel:`帧率上限`,fpsCapTip:`场景渲染节拍上限;数据实时消费不受此限制(帧到达即入缓冲,渲染每帧取最新值上屏)`,qualityLabel:`画质`,qualityTip:`自动 = 按实测帧率升降档;普通/高清/超清 = 手动固定渲染配置(超清发挥 WebGL 最佳性能)`,qualityAuto:`自动`,qualityNormal:`普通`,qualityHD:`高清`,qualityUltra:`超清`,secRender:`渲染`,secEnv:`环境`,secOps:`操作`,hitlAutoReject:`后自动拒绝(超时默认拒绝)`,k1uht2uv068:`从左侧拖入数采节点,实时趋势将在此绘制`,k1deqh0d069:`当前设定`,k1i8rtqt070:`绑定设备`,kjo6ekr071:`选择设备实例…`,k3mv305072:`实时值`,k1faqmjb073:`正常范围`,k1l6g2ga074:`采样周期`,k1or92b075:`ms(空=跟随全局)`,k3x5tpx076:`预警带`,k1hjj0jf077:`硬限量程`,k48tki078:`采集`,k3xakp079:`删除`,k1bpp30k080:`删除节点`,kzk5dfx081:`运行模式 · 只读`,k3xhia082:`名称`,k41amp083:`模型`,kgpuqhb084:`暂无数据通道 · 拖入数采节点靠近此设备即可自动绑定`,kvm0lin085:`+ 添加数采通道`,k48grv086:`配方`,k10smf24087:`暂无智控通道 · 拖入智控节点靠近此设备即可自动绑定`,kvk1vh5088:`+ 添加智控通道`,k1hg3167089:`移动 G`,k1enlg7i090:`旋转 R`,k1ibjg3j091:`缩放 S`,kt0i3y2092:`运行模式 · 只读(切换「编辑」可调整变换/删除)`,k1fix3hb093:`活动范围`,k1p7nru2094:`工业节点绑定`,k1io1ylm095:`自动执行`,k1duyr8q096:`手动确认`,k40ifw097:`数控`,k40rjw098:`数采`,klinercp820:`产线配方`,klinercp821:`选择产线…`,kurjldk099:`选择节点…`,k45kpj100:`自动`,k3zul4101:`手动`,k452a8102:`绑定`,kslcozu103:`✓ 批准执行`,k14gu3rd104:`✕ 拒绝`,k41lwj105:`横轴`,k45bta106:`纵轴`,k1w45mzc107:`清除范围(回退频道)`,k14s8urm108:`未设置:沿用频道边界活动;点「框选绘制」定制`,kkhlx5h109:`正在读取历史对话…`,k3o5tz9110:`执行中`,k1qkqld7111:`暂无对话 · 该员工尚未发言`,k17dkhgd112:`设备运行状态`,k7h1nxo113:`设备健康度`,k3vp67i114:`运行中`,k3zcvb115:`待命`,k3xmid116:`告警`,k1q247fn117:`关键设备监控`,k1cxf749118:`实时告警`,kjz544r119:`暂无告警,产线运行平稳`,k1cxdtq2120:`实时事件`,k2uk6ua121:`事件总线待命`,kjug2jq122:`3D 视图导航`,k1i4g246123:`系统状态`,k4a0jt124:`频道`,k3xdvm125:`员工`,k47e16126:`设备`,klyi8yg127:`数字孪生平台`,k1brss7t128:`员工 ·`,k3ztf1129:`成员`,k1vtyk05130:`数据绑定 ·`,ktzir2t131:`智控设定 ·`,k1gk2jg7132:`待审批下发 ·`,k1ghjbfc133:`会话记录 ·`,k768cnt134:`历史记录 ·`,k1cwz73k135:`实时 ·`,k1gaaodq136:`准星=镜头 · 同步视角 ×`,k1h5gxpf137:`演示数据为模拟信号`,k3vfpz5138:`路通道`,k1pub99m139:`产线管理员`,k3w3j8f140:`采集中`,k3n94g3141:`已放置`,k3lkuz3142:`加载中`,k1iipfcs143:`编辑模式`,k493s144:`关`,k4bs5145:`开`,k1ekqxlt146:`智控节点`,kq2jssk147:`配方工艺窗口`,k3own4q148:`未绑定`,k479eh149:`解绑`,k1wv0nyo150:`停用本节点`,k1l3m0hx151:`配方窗口`,k1w10xa5152:`再次点击确认删除`,k3slzhc153:`绘制中`,k41k5c154:`正常`,k3oo50k155:`未保存`,k1b38d59156:`保存中…`,k3n51yk157:`已保存`,k1b3ayhc158:`保存失败`,k7rvbts159:`请把频道卡片拖拽到场景中放置(松开即安放)`,k1v1icf6160:`未设置 · 沿用频道边界`,kpplr16161:`找不到所属频道,无法绑定模型`,kt6xb5p162:`运行模式为只读 · 切换「编辑」后可修改场景`,k3n4l5f163:`工作中`,k3n58d1164:`已停止`,k3w9q9165:`交付`,k44xa7166:`系统`,k3zbgf167:`异常`,k1ef3cls168:`数据通道`,k15tn2fh169:`请先在场景中选中一台设备`,k3ng94k170:`待处理`,k3mi2n0171:`处理中`,k3ncnxl172:`已确认`,kb157zk173:`紧急停止(E-STOP)已触发,产线全线停机`,k1s9qzr9174:`紧急停止已解除,产线恢复运行`,kwrbtn180:`下发 write`,ksavetip181:`保存全部设备布局`,krotip182:`运行模式只读`},transcriptTimeline:{syncLag:`连接中断,重连后将自动对齐缺失事件`,none:`无`,k44c2n024:`离线`,kglov3b025:`最后数据更新:{p0}`,k3wwxl026:`刚刚`,k2gyl6l027:`{p0}s 前`,k2hda35028:`{p0} 年 `,kbs29zx029:`{p0}{p1} 月 {p2} 日`,k3y2p8020:`在线`,kywgd38021:`加载更早的事件`,k126izdm022:`等待事件流入`,kuyjpmi023:`在下方提交任务后,Agent 执行过程将在此实时渲染`,kqu93z8001:`跳转到最新`,k40t11002:`最新`,k1kbaden003:`已加载全部历史(最早 1 条起)`,ktuo1zg004:`无匹配事件`,k1atjpx1005:`事件 /`,kapxgq4006:`过滤下没有事件,可切换过滤条件`,k4a9o007:`块`,k3lmtk3008:`同步中`,k1br0ij9009:`加载中…`,klnne6o010:`正在同步时间线…`,k1iuqpxj011:`连接恢复后事件将自动对齐`,k3x4t1012:`全部`,k3x5xi013:`关键`,k41ykc014:`消息`,k3wcox015:`任务`,k3y5ja016:`团队`,k49d2l017:`错误`,k3wcqg018:`今天`,k40l1y019:`昨天`},titles:{dashboard:`仪表盘 · AgentWorkShop`,daq:`数采中心 · AgentWorkShop`,daqNode:`数采节点控制台 · AgentWorkShop`,dcw:`产线运营 · AgentWorkShop`,dcwLine:`产线详情 · AgentWorkShop`,tokens:`API Token · AgentWorkShop`,users:`用户管理 · AgentWorkShop`,workshop:`Workshop · Agent Harness`,agents:`Agent 模板库 · Workshop`,teams:`AgentTeam 编组库 · Workshop`,ctpl:`Channel 模板中心 · Workshop`,monitor:`运行时监控 · AgentWorkShop`,settings:`系统设置 · AgentWorkShop`,schedules:`定时任务`},sched:{title:`定时任务`,sub:`绑定 Channel 的周期任务:到点自动向 Channel 下发任务;Channel 忙时等其收口后执行。`,newBtn:`新建计划`,empty:`暂无定时任务 — 新建一个计划,让团队按节奏自动运转`,colState:`状态`,colPlan:`计划`,colName:`名称`,colChannel:`频道`,colLastRun:`最近运行`,stateIdle:`待命`,stateRunning:`执行中`,stateWaiting:`等 Channel 收口`,stateDisabled:`已停用`,stateFailed:`失败`,stateTripped:`已熔断`,modeInterval:`每 {p0}`,modeDaily:`每天 {p0}`,minutes:`{p0} 分钟`,hours:`{p0} 小时`,modeIntervalRadio:`固定间隔`,modeDailyRadio:`每日定点`,nextRun:`下次:`,statLine:`共 {p0} 次 / 失败 {p1}`,fuseLine:`熔断 {p0}/{p1}`,runNowTitle:`立即执行`,historyTitle:`运行历史`,deleteConfirm:`删除该定时任务?运行历史将一并删除`,editTitle:`编辑定时任务`,createTitle:`新建定时任务`,fName:`计划名称`,fNamePh:`如:产线晨检`,fChannel:`绑定 Channel`,fChannelPh:`选择到点后接任务的 Channel`,fTitle:`任务标题(到点下发的任务名)`,fTitlePh:`如:汇总昨日产线数据并生成晨报`,fDesc:`任务描述`,fDescPh:`下发给 Channel 的任务说明(可留空)`,fMode:`触发模式`,fInterval:`执行间隔`,fIntervalUnit:`分钟(最小 1 分钟)`,fDailyTime:`每日执行时刻`,fDailyHint:`本地时区 HH:MM`,fFuse:`连续失败熔断阈值`,fFuseHint:`0 = 不自动停用;达到阈值自动停用,重新启用即重置`,fSubmitHint:`到点即向 Channel 提交该任务;Channel 有未收口任务时自动等待,收口后立即执行。`,nameRequired:`请填写计划名称`,channelRequired:`请选择绑定的 Channel`,titleRequired:`请填写任务标题`,badDailyTime:`每日执行时刻须为合法 HH:MM`,saved:`定时任务已更新`,created:`定时任务已创建`,enabledMsg:`已启用(重新计时)`,disabledMsg:`已停用`,deleted:`定时任务已删除`,runAccepted:`已触发,任务 {p0} 已提交到 Channel`,channelHasSched:`(已绑定时任务)`,enableToggle:`启用/停用`,historyEmpty:`暂无运行记录`,runDone:`完成`,runFail:`失败`,runOngoing:`执行中`,triggerManual:`手动`,triggerTimer:`定时`,runTask:`Channel 任务:`},chips:{chipAll:`全部 {n}`,chipMine:`我的 {n}`,chipPublic:`公开 {n}`,chipBuiltin:`内置 {n}`,chipOthers:`他人私有 {n}`,mine:`我的`,public:`公开`,builtin:`内置`,issue:`签发 Token`,issueTitle:`签发 API Token`},appHeader:{kzwjv99001:`关闭 {p0}`,kwsdot0001:`实时连接正常`,kwsdot0002:`实时同步中…`,kwsdot0003:`连接中…`,kwsdot0004:`连接已断开`,hitlBadge:`待人工处理`,hitlKindOmp:`omp 对话框`,hitlKindDcw:`下发审批`,hitlKindCodex:`codex 审批`,hitlKindOpencode:`opencode 权限`,hitlKindDsh:`dsh 权限`,hitlApprove:`批准`,hitlReject:`拒绝`,hitlReqQuestion:`提问`,hitlReqApproval:`审批`,hitlPolicy:`策略:{p0}`,hitlEngineNote:`该类型待办需在对应引擎界面处理`,hitlPermsLoading:`读取审批权限…`,hitlNoPerm:`无审批权限`,hitlAnswerPlaceholder:`输入答案`,hitlSupplementPlaceholder:`补充说明(可选)`,hitlSubmitAnswer:`提交答案`,hitlCancelRequest:`取消请求`},ompTerminalPanel:{switchTarget:`── 切换目标 · {p0} ──`,k14jk3nu001:` {p0}· 对话框已撤销({p1}){p2}`,k68kkpc002:`{p0}── 已接入 omp 进程 PID {p1}(会话重放 {p2} 帧)──{p3}`,k59zj91003:`{p0}✗ 终端连接未就绪,命令未发送{p1}`,kvzhi95004:`{p0}✔ HITL 已应答:{p1}{p2}`},plugins:{title:`插件管理`,subtitle:`内置示例与用户级扩展插件 · 启停即时热重载`,refresh:`刷新`,enabled:`已启用`,disabled:`已停用`,scopeProject:`内置示例`,scopeUser:`用户级扩展`,scopeBuiltinHint:`内置示例插件:随项目检出提供(仓库 .AgentWorkShop/plugins),可启停`,scopeUserHint:`用户级扩展插件:位于 ~/.AgentWorkShop/plugins,由使用者自行创建维护`,loadFail:`插件列表加载失败`,hasClient:`浏览器增强`,routes:`API 路由`,empty:`暂无插件 —— 执行 aw plugin create my-plugin 创建,或 aw plugin enable 开启内置示例`,failures:`装载失败`,loadFailures:`{n} 个插件装载失败,详情见服务启动日志`,enableFail:`启停操作失败`,detail:`插件详情`,desc:`平台插件清单:启停(admin,热重载生效)与连接健康检测。`,needLogin:`登录后可查看与管理插件`,builtin:`内置`,adminRequired:`该操作需要管理员权限`,healthCheck:`检测连接`,healthChecking:`检测中…`,healthOk:`正常`,healthBad:`异常`},errors:{http400:`请求参数有误,请检查后重试`,http401:`登录已过期,请重新登录`,http403:`权限不足:该操作需要管理员权限`,http404:`目标不存在或已被删除`,http409:`操作冲突:资源已存在或状态不允许`,http5xx:`服务器内部错误,请稍后重试`,network:`无法连接服务器,请检查网络与服务状态`,fallback:`操作失败,请稍后重试`},permissions:{title:`权限管理`,subtitle:`用户 × 产线三态授权:无权 / 仅查看(数采只读) / 可操控(数采+数控全量);普通用户默认无权`,search:`搜索用户名或邮箱`,loadFail:`权限数据加载失败`,saveFail:`保存授权失败`,saved:`已保存 {n} 项授权变更`,colUser:`用户`,colEmail:`邮箱`,colRole:`角色`,colStatus:`状态`,colChannels:`Channel 数`,colGrants:`产线授权`,colOps:`操作`,active:`正常`,manage:`授权管理`,detail:`权限详情`,secProfile:`基本信息`,secChannels:`创建的 Channel`,noChannels:`该用户尚未创建 Channel`,secMatrix:`产线授权矩阵`,save:`保存变更({n})`,matrixHint:`无权=后端不返回该产线数据(前端/数字孪生不可见);仅查看=数采节点只读;可操控=数采读取+数控写控全量。`,none:`无权`,readonly:`仅查看`,operate:`可操控`},error:{backHome:`返回首页`,lost:`页面走失了`},optimizer:{kicker:`优化器管理`,subtitle:`场景/变量/工况 → 数据集 → 训练 → Profile → 绑定 → 数值求解 → 不可变建议`,recommendationOnly:`仅建议 · 零设备写`,tab:{spec:`模型规格`,eligibility:`资格报告`,profile:`Profile / Solver`,binding:`Agent 绑定`,runs:`运行 / 建议`},fields:{line:`产线`,product:`产品`,recipe:`配方`,recipeVersion:`配方版本`,beat:`采样节拍(ms)`,history:`历史步数`,horizon:`预测时域`,trainer:`训练器`,arOrder:`AR 阶数`,inputOrder:`输入阶数`,order:`响应面阶数`,runIds:`限定批次(逗号分隔)`,varId:`变量 id`,nodeId:`节点 id`,role:`角色`,unit:`单位`,scale:`换算 scale`,offset:`换算 offset`,delayMs:`延迟(ms)`,min:`下限`,max:`上限`,maxStep:`单步限幅`,model:`模型 id`,name:`配置名称`,description:`配置描述`,template:`问题模板`,solver:`求解器`,agentInstance:`Agent 实例 id`},spec:{title:`过程模型规格`,variables:`变量映射(单位/延迟必须显式)`,addVariable:`添加变量`,needVariables:`至少添加 1 个 MV 与 1 个 CV`,save:`登记规格`,buildDataset:`构建数据集(v2)`,train:`提交训练`,modelUnitsHint:`变量 min/max、单步限幅与有效域使用模型单位(modelUnit;未填则同 unit)。`},currentDataset:`当前数据集`,remove:`删除`,optional:`可选`,publish:`发布`,nodeRequired:`节点 id 必填`,specSaved:`规格已登记:{id}`,datasetBuilt:`数据集已构建:{id}({rows} 窗)`,datasetRequired:`先构建数据集`,jobSubmitted:`训练作业已提交:{id}`,profileSaved:`Profile 已登记(草稿)`,profilePublished:`Profile 已发布`,bindingCreated:`绑定已创建`,bindingRevoked:`绑定已撤销`,solveDone:`求解完成`,eligibilityDone:`资格评估完成`,eligibility:{title:`优化资格(A2)`,evaluate:`评估资格`,yes:`具备优化资格`,no:`不具备优化资格`,empty:`尚未评估。先构建数据集,再评估资格。`},profile:{title:`Profile 与求解器`,config:`问题配置(JSON:权重/目标/约束)`,configHint:`JSON 顶层键必须与问题模板同名(linear_mpc_quadratic / steady_response)。`,save:`登记 Profile(draft)`},binding:{title:`Agent 绑定`,create:`创建绑定`,revoke:`撤销`,identityHint:`必须使用 channel_agents.id(实例 id);传模板 id 会被拒绝。多绑定求解需显式 binding_id。`},runs:{title:`优化运行与建议`,solve:`求解一次`,recommendation:`建议`,zeroWrite:`本流程零设备写入;建议不构成执行授权,审批/下发仍走既有 DCW 治理链。`}},aml:{blockerVenv:`训练环境(./aml/.venv)尚未创建:请在「运行环境」面板点击「创建训练环境」`,blockerPython:`Python 解释器不可用`,rootSourceEnv:`环境变量 AW_AML_DIR 指定`,rootSourceRepo:`项目检出根(./aml)`,rootSourceHome:`用户配置根(~/.AgentWorkShop/aml)`,rootSourceCwd:`当前工作目录(./aml)`,k1amlx001:`AML 自动建模`,k1amlx002:`数据集快照 → 训练作业 → 实验门禁 → 模型注册全链路;作业进度经 WS 实时帧推送,平台门禁判定为准。`,k1amlx003:`Python 运行时`,k1amlx004:`就绪`,k1amlx005:`不可用`,k1amlx006:`依赖环境`,k1amlx007:`已备好`,k1amlx008:`未就绪`,k1amlx009:`排队`,k1amlx010:`运行`,k1amlx011:`数据集`,k1amlx012:`模型`,k1amlx013:`生产模型`,k1amlx014:`训练/预测均不可执行:`,k1amlx015:`平台状态加载失败`,k1amlx016:`数据集快照`,k1amlx017:`刷新`,k1amlx018:`新建数据集`,k1amlx019:`暂无数据集 —— 从产线历史批次构建对齐快照后即可提交训练。`,k1amlx020:`时间`,k1amlx021:`产品`,k1amlx022:`配方`,k1amlx023:`行数`,k1amlx024:`批次`,k1amlx025:`创建者`,k1amlx026:`备注`,k1amlx027:`清洗报告(逐节点)`,k1amlx028:`滞后估计(控制 → 目标互相关)`,k1amlx029:`Run 概览`,k1amlx030:`加载中…`,k1amlx031:`详情加载失败`,k1amlx032:`无滞后估计(需同时存在 control 与 target 节点)`,k1amlx033:`节点`,k1amlx034:`角色`,k1amlx035:`剔除率`,k1amlx036:`缺失率`,k1amlx037:`均值`,k1amlx038:`σ`,k1amlx039:`min~max`,k1amlx040:`控制`,k1amlx041:`目标`,k1amlx042:`滞后(拍)`,k1amlx043:`峰值相关`,k1amlx044:`使用批次`,k1amlx045:`丢弃批次`,k1amlx046:`窗口 train/val/test`,k1amlx047:`无构建报告(旧快照)`,k1amlx048:`无`,k1amlx049:`用户`,k1amlx050:`新建数据集快照`,k1amlx051:`产线 ID`,k1amlx052:`产品 ID`,k1amlx053:`配方 ID`,k1amlx054:`节点角色表(至少 1 个 target)`,k1amlx055:`加一行`,k1amlx056:`节点 ID`,k1amlx057:`control(可控输入)`,k1amlx058:`feature(历史特征)`,k1amlx059:`target(预测目标)`,k1amlx060:`对齐节拍 ms`,k1amlx061:`历史窗(拍)`,k1amlx062:`预测窗(拍)`,k1amlx063:`val 比例`,k1amlx064:`test 比例`,k1amlx065:`随机种子`,k1amlx066:`用途`,k1amlx067:`mpc_surrogate(MPC 代理)`,k1amlx068:`quality_predict(质量预测)`,k1amlx069:`构建目的/口径说明(可选)`,k1amlx070:`构建中…`,k1amlx071:`取消`,k1amlx072:`构建快照`,k1amlx073:`数据集已构建:{p0}(行 {p1})`,k1amlx074:`训练作业`,k1amlx075:`暂无训练作业 —— 选定数据集后经 Agent 工具或 API 提交。`,k1amlx076:`作业`,k1amlx077:`状态`,k1amlx078:`阶段`,k1amlx079:`进度`,k1amlx080:`门禁通过`,k1amlx081:`门禁未过`,k1amlx082:`门禁待判`,k1amlx083:`平台门禁`,k1amlx084:`门禁项`,k1amlx085:`实测`,k1amlx086:`阈值`,k1amlx087:`通过`,k1amlx088:`未过`,k1amlx089:`运行日志(尾随)`,k1amlx090:`暂无日志`,k1amlx091:`活跃作业日志 5s 轮询中`,k1amlx092:`失败原因`,k1amlx093:`取消中…`,k1amlx094:`确认取消`,k1amlx095:`重试`,k1amlx096:`确认重试`,k1amlx097:`已请求取消:{p0}`,k1amlx098:`已重新排队:{p0}`,k1amlx099:`指标`,k1amlx100:`排队中`,k1amlx101:`备环境`,k1amlx102:`训练`,k1amlx103:`评估`,k1amlx104:`完成`,k1amlx105:`失败`,k1amlx106:`已取消`,k1amlx107:`超时`,k1amlx108:`已中断`,k1amlx109:`实验排行榜`,k1amlx110:`选择数据集查看谱系`,k1amlx111:`— 选择数据集 —`,k1amlx112:`该数据集暂无实验 —— 提交训练作业后此处呈现谱系与门禁。`,k1amlx113:`实验`,k1amlx114:`变更说明`,k1amlx115:`父实验`,k1amlx116:`G1 单步`,k1amlx117:`G2 滚动`,k1amlx118:`门禁态`,k1amlx119:`运行中`,k1amlx120:`最优`,k1amlx121:`测试集单步 NRMSE(越小越好)`,k1amlx122:`测试集滚动 NRMSE(越小越好)`,k1amlx123:`模型注册表`,k1amlx124:`注册表为空 —— 门禁通过的实验会自动登记 candidate 模型。`,k1amlx125:`模型`,k1amlx126:`指标(G1 单步 / G2 滚动 NRMSE)`,k1amlx127:`操作`,k1amlx128:`晋升 shadow`,k1amlx129:`晋升 production`,k1amlx130:`退役`,k1amlx131:`确认执行`,k1amlx132:`已晋升:{p0} → {p1}`,k1amlx133:`预测控制台(what-if)`,k1amlx134:`— 选择 production 模型 —`,k1amlx135:`暂无 production 模型 —— 先在注册表晋升,再回此做预测。`,k1amlx136:`IO 规格`,k1amlx137:`全部节点`,k1amlx138:`控制节点`,k1amlx139:`目标节点`,k1amlx140:`历史窗`,k1amlx141:`预测窗`,k1amlx142:`节拍`,k1amlx143:`history 输入([H][nAll] JSON;列序 = allNodes)`,k1amlx144:`[[21.4,0.82,…], …] — H×nAll 数值矩阵`,k1amlx145:`拉取最新`,k1amlx146:`页面暂不内联拉数:让 Agent 用数采查询工具取该配方最近 H 拍,粘贴为 JSON 矩阵。`,k1amlx147:`滚动步数(≤预测窗,空 = 全额)`,k1amlx148:`预测`,k1amlx149:`推理中…`,k1amlx150:`预测结果 forecast`,k1amlx151:`步`,k1amlx152:`t+(s)`,k1amlx153:`history JSON 解析失败:`,k1amlx154:`预测完成:{p0} 步 × {p1} 目标`,k1amlx155:`模型口径`,k1amlx156:`controls 轨迹(可选,[≤H][nControl] JSON)`,k1amlx157:`操作失败`,k1amlx158:`建模`,k1amlx159:`AML 自动建模平台`,k1amlx160:`AML 自动建模 · AgentWorkShop`,k1amlx161:`请补全:产线 / 产品 / 配方 ID 均为必填`,k1amlx162:`运行环境`,k1amlx163:`uv 包管理器`,k1amlx164:`已安装`,k1amlx165:`未安装`,k1amlx166:`一键安装 uv`,k1amlx167:`安装 uv 中…`,k1amlx168:`创建训练环境`,k1amlx169:`重建训练环境`,k1amlx170:`创建中…`,k1amlx171:`AML 资产根`,k1amlx172:`uv 安装位置`,k1amlx173:`训练环境路径`,k1amlx174:`磁盘占用`,k1amlx175:`重新检测`,k1amlx176:`安装 uv 需要联网下载约 40MB 到项目 ./aml/tools:不改系统 PATH、不需要管理员,整份 ./aml 可删除重建。`,k1amlx177:`未检测到 uv:可点击上方按钮一键安装(推荐),否则将回退 python -m venv 供给(较慢)。`,k1amlx178:`作业前置条件未满足`,k1amlx179:`环境任务执行中`,k1amlx180:`安装日志`,k1amlx181:`关闭`,k1amlx182:`元数据与实体`,k1amlx183:`一致`,k1amlx184:`存在差异`,k1amlx185:`实体缺失`,k1amlx186:`孤儿实体`,k1amlx187:`契约缺失`,k1amlx188:`清理孤儿实体`,k1amlx189:`编辑备注`,k1amlx190:`删除`,k1amlx191:`保存`,k1amlx192:`备注已更新`,k1amlx193:`已删除`,k1amlx194:`uv 安装完成`,k1amlx195:`uv 安装失败`,k1amlx196:`训练环境已就绪`,k1amlx197:`训练环境创建失败`,k1amlx198:`删除数据集会同时移除 ./aml/datasets 下的实体目录;被实验或模型引用的数据集会被拒绝删除。`,k1amlx199:`删除模型会同时移除 ./aml/models 下的 ONNX 工件;production 阶段模型须先退役。`,k1amlx200:`删除作业会级联清理其实验记录与 ./aml/jobs 下的工作区;已产出模型的作业不可删除。`,k1amlx201:`AML 资产根:所有数据集、训练作业、模型工件与 uv 虚拟环境都存放在此处。`,k1amlx202:`取消`,k1amlx203:`操作失败`,k1amlx204:`模型标识`,k1amlx205:`模型说明`},teamPlugins:{k1plugon040:`插件开关 · {p0}`,k1plugon041:`启用插件`,k1plugon042:`未选中的插件其工具不会注入该团队 Agent,避免上下文污染`,k1plugon043:`已保存`,k1plugon044:`默认全启用(尚未单独配置)`,k1plugon045:`已单独配置`,k1plugon046:`插件已全部停用`,k1plugon047:`插件开关…`,descLineSentinel:`产线哨兵:数采越限告警 + 心跳 + 产线生命周期跟踪`,descOpsNotifier:`写控与产线事件回声:滚动记录最近事件 + 查询 API + 客户端通知`,descSampleInsight:`SDK 示例:数采采样计数 + 统计 API + 客户端徽标`,descDiagBridge:`深度诊断桥接:导出 DAQ 时序快照 CSV,发起 industrial-deep-diagnostic 深度诊断并跟踪状态,完成后报告自动入知识库。`,descRagBridge:`rag-knowledge 知识库桥接:工业知识检索/经验沉淀/文档入库三工具`,descSerialBridge:`串口通信协议桥:Modbus RTU(RS-485/232)与 ASCII 行协议读驱动、带回读校验的写驱动、串口枚举/探针 API 与前端面板。`},tplCatalog:{"temp-tc":`温度传感器`,"pressure-tx":`压力变送器`,"tension-cell":`张力传感器`,"line-encoder":`速度编码器`,"vision-cam":`视觉检测相机`,"power-meter":`电参采集器`,"thickness-scan":`测厚扫描仪`,"ccd-image":`CCD 视觉相机`,"temp-sp":`温度设定器`,"speed-sp":`速度设定器`,"tension-sp":`张力设定器`,"pressure-sp":`压力设定器`},builtinSeeds:{tplDefaultLead:`开发主管`,tplDefaultBackend:`后端工程师`,tplDefaultFrontend:`前端工程师`,tplDefaultQa:`测试工程师`,tplDefaultDocs:`文档撰写`,tplScenarioPaymentLead:`支付网关交付主管(场景:高并发支付)`,tplAmlLead:`AML 首席数据科学家`,tplAmlData:`AML 数据工程师`,tplAmlTrainer:`AML 训练工程师`,tplAmlEval:`AML 评测工程师`,teamDefaultFullstack:`全栈交付组`,teamDefaultDocs:`文档维护组`,teamAmlShadow:`AML 影子建模团队`,chtplDefaultFullstack:`全栈交付通道`,chtplDefaultFullstackDesc:`内置模板:主管带队 + 后端/前端/测试,适合常规交付任务`,chtplDefaultFullstackScenario:`团队按主管调度协作交付;每个子任务完成后由主管复核,产出统一沉淀为 artifact。`,chtplDefaultReview:`文档评审通道`,chtplDefaultReviewDesc:`内置模板:文档撰写 + 测试复核,适合文档、报告与评审场景`,chtplDefaultReviewScenario:`以文档产出与质量复核为主线;撰写完成后由复核角色检查并反馈修改意见。`,chtplPresetOpticalFilm:`光学薄膜涂布产线优化组`,chtplPresetOpticalFilmDesc:`工业场景预设:涂布产线数字孪生优化 —— 生产主管 + 工艺工程师 + 数据分析师,面向烘箱温控与涂层质量闭环`,chtplPresetOpticalFilmScenario:`光学薄膜涂布产线:烘箱多段温控与涂层质量闭环;数据先行、窗口内小步幅、单变量调整、复测闭环。`,chtplPresetExtrusion:`薄膜挤出流延产线优化组`,chtplPresetExtrusionDesc:`工业场景预设:挤出流延产线数字孪生优化 —— 生产主管 + 工艺工程师 + 数据分析师,面向熔体压力/温度耦合控制`,chtplPresetExtrusionScenario:`薄膜挤出流延产线:熔体压力/温度强耦合下的膜厚质量控制;数据先行、窗口内小步幅、单变量调整、复测闭环。`,mKnight:`灰羽骑士`,mMage:`紫晶法师`,mBot:`青枢机械`,mHero3d:`标准员工模型`,mHero3dHint:`默认员工 3D 模型`,mYangyang:`杨杨(走路)`,mYangyangHint:`自定义角色:骨骼走路动画(剪辑 WALK;文件较大,建议少量绑定)`,mDevice3d:`工业泵设备`,mDevice3dHint:`数字孪生实体模型(拖入场景生成设备)`,mDeviceFallbackHint:`设备实体(拖入场景生成数字孪生)`,mScannedCharacterHint:`角色 3D 模型(在频道成员管理中设置)`},data:{page:{title:`数据管理`,sub:`产线维度的镜像数据 / MES 接口 / 导出与批次台账`},tab:{mirror:`镜像数据`,mes:`MES 接口`,ledger:`台账`},line:{label:`产线`,any:`(全部产线)`},mirror:{window:`时间窗`,last15:`近 15 分钟`,last60:`近 1 小时`,last240:`近 4 小时`,custom:`自定义`,agg:`聚合`,aggAvg:`均值`,aggMin:`最小`,aggMax:`最大`,band:`min/max 包络`,query:`查询`,querying:`查询中…`,export:`导出`,nodes:`节点`,noNodes:`暂无可读数采节点`,runScope:`默认限定活动批次 {run}`,truncated:`{n} 个节点触达每节点 2000 点上限,已截断(请缩小窗口或加大桶宽)`,preview:`数据预览(最新在前)`,previewNote:`显示最新 {n} 行(该窗共 {total} 点);完整数据请导出`,time:`时间`,empty:`选择产线与节点后点击查询`,exportTitle:`导出 {n} 个节点`,exportTitleLabel:`标题`,exportNoteLabel:`备注`,exportMerge:`生成多节点对齐宽表 merged.csv`,cancel:`取消`,exportOk:`开始导出`,exporting:`导出中…`,exportDone:`导出完成,共 {rows} 行:`,manifest:`manifest.json`,exportRunning:`任务执行中(并发=1 队列),请稍候…`,derivedBtn:`另存派生数据集(滑动均值)`,deriving:`派生中…`,derivedDone:`派生完成:{rows} 行,任务 {id}(台账页可下载 data.csv)`},mes:{points:`MES 点位目录`,filter:`搜索点位…`,empty:`你的可读产线上没有 mes-rest 点位`,pickPoint:`从目录中选择一个点位开始调试`,console:`取数调试:{name}`,from:`起`,to:`止`,rows:`行数上限`,preview:`预览`,previewing:`取数中…`,guards:`护栏:窗口 ≤7 天、行数 ≤5000、每分钟 30 次;回显已脱敏(凭据以 *** 显示)`,reqEcho:`请求模板(已脱敏)`,stats:`统计与采样(≤3 行,原文不进页面)`,rowsGot:`取回 {n} 行`,truncated:`已按行数上限截断`,dict:`字段字典`,dictEmpty:`暂无字段字典(首次取数后由 MES 响应学习,或在点位配置静态字典)`,hasHistory:`可取历史`,noHistory:`未配置历史映射`},ledger:{jobs:`导出任务`,refresh:`刷新`,status:`状态`,nodes:`节点数`,window:`窗口`,rows:`行数`,created:`创建时间`,download:`下载`,missing:`产物已过保留期`,st:{running:`执行中`,ready:`完成`,failed:`失败`},runs:`批次台账`,outcome:`判定`,any:`(全部)`,recipe:`配方`,samples:`样本数`,started:`开始`,ended:`结束`,empty:`暂无导出任务`,runsEmpty:`暂无批次记录(开跑产线后自动落账)`}},studio:{sources:`数据源`,dblClickAdd:`双击加入 Y 轴`,pickLine:`选择产线载入节点`,myCharts:`我的图表`,noCharts:`还没有保存的图表`,runFilter:`批次`,noRun:`(时间窗)`,canvasEmpty:`加入测点后点击查询`,yWell:`Y 轴井(可分左右轴)`,yEmpty:`双击左侧测点加入`,yMax:`Y 轴序列最多 8 个`,toggleAxis:`切换左/右轴`,refWell:`参考线井`,refEmpty:`无数值参考线`,refValue:`参考值`,refFromTemplate:`从量程上限导入`,maxRef:`量程上限`,golden:`Golden 参考轨迹(相位 0-100%)`,goldenHint:`先选一个已关账的 good 批次,生成该节点的 golden 画像;叠加显示均值±σ 带。`,goldenMake:`生成本批 golden`,goldenShow:`叠加`,goldenHide:`隐藏`,goldenScore:`偏差分`,goldenMade:`golden 已生成/更新({node})`,deviationScore:`批次 vs golden 平均 |z| 偏差分:{score}(越小越贴近参考轨迹)`,noRecipe:`找不到该批次的配方,无法定位 golden。`,saveSection:`保存`,chartTitle:`图表标题`,visPrivate:`私有(仅自己)`,visLine:`产线可见`,save:`保存图表`,update:`更新版本`,savedV:`已保存 v{v}`,viz:{trend:`趋势线`,bar:`柱状`,scatter:`散点`,kpi:`KPI 大数字`,table:`数据表`,histogram:`直方图`},pipelineSnapshot:`管道快照 · 只读`,boardLink:`看板`,agentPrompt:`Agent 分析提示词`,promptTitle:`Agent 深度分析提示词(复制到 Channel 即可发起)`,copy:`复制`,copied:`已复制到剪贴板`,pipeline:{title:`EDA 分析管道`,sub:`拉取数据 → 自定义后处理 → 图表配置(可存模板) → 绘图/导出/在线查看`,backToStudio:`返回工坊`,s1:`拉取数据`,pickLine:`选择产线…`,w15:`近 15 分钟`,w60:`近 1 小时`,w240:`近 4 小时`,fetch:`拉取数据`,importPlaceholder:`粘贴 CSV/TSV(首行表头):
5
5
  批次,克重
6
6
  B1,32.5
7
- B2,32.7`,importBtn:`导入数据表`,fetching:`拉取中…`,s2:`数据表与后处理(可写代码聚合/筛选)`,noRows:`尚未拉取数据。选择产线与测点后点「拉取数据」。`,rowsInfo:`共 {n} 行,预览前 {show} 行:`,codePlaceholder:`定义 transform(rows) 函数,做过滤/聚合/派生列,返回新行数组(在浏览器本地执行)。`,applyTransform:`应用后处理`,resetTransform:`还原原始数据`,transformedTo:`后处理完成:{n} 行。`,s3:`图表配置`,chartType:`图型`,valueField:`值字段`,groupBy:`分组`,agg:`聚合`,refLine:`参考线`,chartTitle:`图表标题`,s4:`配置模板(持久化,换数据一键复绘)`,templateName:`模板名…`,templateSave:`保存为模板`,templateSaved:`模板已保存。`,templateApplied:`已应用模板「{name}」。`,s5:`绘图与输出`,draw:`开始绘图`,openViewer:`在线查看`,download:`下载 PNG`,saveChart:`保存为图表`,saveResult:`保存为分析结果`,savedChart:`图表已保存(工坊/看板可见)。`,savedResult:`分析结果已保存(台账可见)。`,resultTitle:`EDA 管道分析结果`,resultSummary:`基于 {n} 行 × {cols} 个数值列的管道分析。`,resultReport:`图型 {type},数据 {rows} 行;详见 metrics 与 context。`,viewerHint:`滚轮缩放 / 工具箱右上角可存图`}},board:{title:`EDA 看板`,backToStudio:`← 返回工坊`,pick:`选择看板…`,windowOverride:`全局时间覆盖`,keepChart:`(沿用各图表窗口)`,create:`新建看板(勾选我的图表,自动流式布局)`,boardTitle:`看板标题`,createBtn:`创建看板({n} 张图)`,inaccessible:`(不可见图表)`,noReadChart:`该图表不在你的可见范围内(B4)`,saveLayout:`保存布局`,created:`看板已创建`,layoutSaved:`布局已保存`}},tr={common:{stop:`Stop`,add:`Add`,remove:`Remove`,create:`Create`,revoke:`Revoke`,close:`Close`,light:`Light`,dark:`Dark`,confirm:`OK`,cancel:`Cancel`,save:`Save`,search:`Search`,actions:`Actions`,edit:`Edit`,delete:`Delete`,status:`Status`,all:`All`,copy:`Copy`,copied:`Copied`},menu:{system:`AgentWorkShop`,groups:{console:`Console`,ops:`Operations`,system:`System`},ontology:`Ontology Model`,dashboard:`Dashboard`,workshop:`Agent Harness`,town:`Digital Twin`,tokens:`API Tokens`,daq:`DAQ Console`,dcw:`Line Ops`,dataManagement:`Data Studio`,studio:`EDA Studio`,aml:`Modeling`,optimizer:`Optimizer`,logs:`Line Log`,operations:`Line Operations`,analysis:`Data Analysis`,users:`Users`,monitor:`Runtime Monitor`,plugins:`Plugins`,tools:`Tools`,settings:`Settings`,permissions:`Permissions`},header:{collapse:`Collapse menu`,expand:`Expand menu`,openNav:`Open navigation`,closeNav:`Close navigation`,language:`Language`,theme:`Theme`,fullscreen:`Fullscreen`,notifications:`Notifications`,profile:`Profile`,guest:`Guest`,login:`Sign in`,guestBanner:`Browsing as guest — sign in to view and operate your production lines`,logout:`Log out`,trail:`Route trail (click to return)`,workspace:`Workspace`,nodeDetail:`DAQ node`,lineDetail:`Line console`},home:{kicker:`DIGITAL TWIN · LINE OPS`,heroTitle:`The operations hub where lines run`,heroAccent:`in twin`,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.`,ctaTown:`Open Digital Twin`,ctaLine:`Line Operations`,live:`LIVE`,kpi:{lines:`Running Lines`,dcwNodes:`Control Nodes`,daqNodes:`DAQ Channels`,samples:`Samples Stored`,writeRate:`Write Success`,alarms:`Active Alarms`},charts:{trend:`Live Condition Trends`,trendSub:`Normalized per node range · last 3 min`,lineState:`Line States`,pipeline:`DAQ Pipeline Throughput`,writeCtl:`Write Success Rate`,nodeState:`Node State Mix`,lines:`Line Fleet`},trendY:`Range %`,trendWaiting:`Waiting for live data…`,trendNeedRun:`Sampling is gated on an active batch run. Start a line run under Line Operations to see live trends here.`,runNow:`Running`,standBy:`Standby`,pipelineSeries:{produced:`Produced`,consumed:`Consumed`,stored:`Stored`},stateDaq:`DAQ Nodes`,stateDcw:`Control Nodes`,states:{ok:`OK`,warn:`Warn`,alarm:`Alarm`,writing:`Writing`,idle:`Idle`,error:`Error`,offline:`Offline`},batch:`Batch`,nodesUnit:`Control nodes`,daqUnit:`DAQ channels`,tagged:`Tagged samples`,noLine:`No lines yet — create one in Line Operations`,fleetAll:`View all lines`,fleetHint:`Running first · top 8 shown`,writesFailed:`failed`,harness:{title:`Agent Harnesses`,sub:`CLI availability probe · ready to dispatch`,missing:`not installed`},fields:{name:`App Name`,version:`Version`,mode:`Mode`,devPort:`Dev Port`,prodPort:`Prod Port`,apiBase:`API Base`,primary:`Primary Color`}},users:{krkb23h011:`{p0} role changed to {p1}`,k1u7u12g012:`{p0} {p1}`,knh5f2r013:`Deleted {p0}`,k3xhfg009:`Enable`,k3wsi1010:`Disabled`,k1jk2os9001:`Delete this user? (Their resources are kept and ownership remains traceable)`,k1flpho5002:`Manage global users and roles (admins have the highest privileges: full monitoring, any template, user management).`,kpdo6rc003:`Admin privileges required`,k1mue9bl004:`User management is admin-only; contact an administrator to change roles.`,k3xakp005:`Delete`,k1br33vc006:`Load failed`,k1enhqn3007:`Update failed`,k1bphrb3008:`Delete failed`,title:`User Management`,subtitle:`Manage system users, roles and access permissions`,add:`Add User`,search:`Search name or email`,deleteConfirm:`Are you sure to delete this user?`,name:`Username`,email:`Email`,role:`Role`,created:`Created`,roleAdmin:`Admin`,roleEditor:`Editor`,roleUser:`User`,active:`Active`,disabled:`Disabled`},settings:{title:`System Settings`,subtitle:`Configure app basics, theme appearance and notifications`,basic:`General`,basicDesc:`Application name, description and other basics`,theme:`Appearance`,themeDesc:`Customize primary color and display mode`,notification:`Notifications`,notificationDesc:`Manage how system messages are delivered`,appName:`App Name`,appDesc:`Description`,primaryColor:`Primary Color`,themeMode:`Display Mode`,appearanceDesc:`Accent color, dark mode and language, applied live and persisted automatically (localStorage).`,accentDesc:`Warm-editorial defaults to the ink pill; pick a muted preset to preview instantly.`,accentInk:`Ink`,accentStone:`Amber`,accentMoss:`Moss`,accentSlate:`Slate`,accentPlum:`Plum`,accentClay:`Clay`,accentApplied:`Accent applied`,accentReset:`Reset to default ink (follows config.yml)`,accentResetAction:`Reset to default ink`,darkDesc:`Deep-navy control-room dark ramp; light mode keeps the editorial paper look.`,languageDesc:`Interface language (zh-CN / en); applies immediately.`,systemTab:`System`,systemDesc:`Read-only runtime parameters (sourced from config.yml via nuxt.config runtimeConfig).`,identity:`Signed in as`,identityGuest:`Not signed in (workshop data requires sign-in)`,emailNotify:`Email Notifications`,emailNotifyDesc:`Push important events to administrators via email`,smsNotify:`SMS Notifications`,smsNotifyDesc:`Deliver urgent alerts instantly via SMS`,pushNotify:`In-App Push`,pushNotifyDesc:`Real-time message alerts in the browser`,saveSuccess:`Settings saved`,runtimeTab:`Runtime config`,runtime:{groupMemory:`Memory`,groupOmp:`Agent Harness`,groupDcw:`Write Control`,groupWorkshop:`Workshop`,groupBackup:`Backup`,groupRetention:`Retention`,groupOptimizer:`Optimizer solver`,groupLog:`Logs`,title:`Runtime config`,desc:"Server-backed runtime parameters: live keys apply instantly over SSE (no reload); restart keys take effect on the next launch of the matching mode. Same channel as the `aw config` CLI.",live:`live`,restart:`restart`,save:`Save settings`,resetAll:`Reset all to defaults`,resetKey:`Reset to default`,savedLive:`Saved — live keys hot-reloaded`,restartNotice:`Saved. These keys take effect after restarting the matching mode: {keys}`,keyReset:`Reset to default: {key}`,resetAllDone:`All runtime overrides cleared (falling back to config.yml)`,groupServer:`Server`,groupApp:`App`,groupTheme:`Theme`,groupI18n:`i18n`,groupSecurity:`Security`,groupDaq:`DAQ`,groupApi:`API`,groupHarness:`Harness Adapters`,groupPlugins:`Plugins`,memory:{primerTokens:`Memory primer budget`,injectTotal:`Memory inject cap`,maintenanceMs:`Memory maintenance (ms)`,expireDays:`Episodic expiry (days)`,expireSessionDays:`Session expiry (days)`,cap:`Memory entry cap`,reflectTrigger:`Reflection trigger`,embedBaseUrl:`Embedding endpoint`,embedModel:`Embedding model`,embedApiKey:`Embedding key`},omp:{compactEnabled:`Auto compaction`,compactThreshold:`Compaction threshold`,compactMinIntervalMs:`Min compaction interval (ms)`,compactWaitMs:`Compaction wait timeout (ms)`},dcw:{rollbackCooldownMs:`Rollback cooldown (ms)`,rollbackMinWindowMs:`Min observe window (ms)`,rollbackBaselineMs:`Baseline window (ms)`,rollbackStaleMs:`Open record staleness (ms)`},workshop:{idleSweepMs:`Idle sweep (ms)`,idleGraceMs:`Idle grace (ms)`},backup:{disabled:`Disable auto backup`,intervalHours:`Backup interval (h)`,keep:`Backups to keep`},retention:{disabled:`Disable retention sweep`,eventsDays:`Events retention (days)`,messagesDays:`Messages retention (days)`,auditDays:`Audit retention (days)`,approvalDays:`Approval history retention (days)`,analysisDays:`Analysis report retention (days)`,optimizerDays:`Optimizer run retention (days)`,processModelDays:`Process model ledger retention (days)`},optimizer:{poolSize:`Solver process pool size`,requestTimeoutMs:`Solver request timeout (ms)`,threads:`Solver thread budget`,crosscheckTol:`Crosscheck tolerance`},log:{level:`Log level`},daq:{mqttQos:`MQTT QoS`,mqttUsername:`MQTT username`,mqttPassword:`MQTT password`,mqttCaFile:`MQTT CA certificate`,mqttRejectUnauthorized:`MQTT verify certificate`,samplingDefaultIntervalMs:`Default sampling interval (ms)`,samplingMinIntervalMs:`Sampling floor (ms)`,queryDefaultBucketMs:`Default TS query bucket (ms)`,queryMinBucketMs:`TS query floor (ms)`,tsRetentionH:`Scalar TS retention (h)`,frameRetentionH:`Frame retention (h)`,alarmWebhookUrl:`Alarm webhook`,alarmEscalateMinutes:`Alarm escalate (min)`,startInfrastructure:`DAQ infra policy`,mqttHost:`MQTT broker host`,mqttPort:`MQTT broker port`,tsHost:`Timescale host`,tsPort:`Timescale port`,publishDefaultIntervalMs:`Default WS push interval (ms)`,publishMinIntervalMs:`WS push floor (ms)`,queryDisplayIntervalMs:`Trend refresh interval (ms)`,queryMinDisplayIntervalMs:`Trend refresh floor (ms)`,export:{pagesPerNode:`Export max pages per node`,windowMaxH:`Export max window (h)`}},aml:{pythonBin:`Python interpreter`,uvBin:`uv executable`,indexUrl:`pip index mirror`,jobTimeoutMs:`Job wall-clock timeout (ms)`,jobMaxConcurrent:`Max concurrent jobs`,jobDiskQuotaMb:`AML disk quota (MB)`,jobStallMs:`Job stall threshold (ms)`,datasetMaxRows:`Dataset row limit`,datasetRetentionDays:`Unreferenced dataset retention (days)`,allowCrossRecipe:`Allow cross-recipe merge`,retiredKeepDays:`Retired model artifact retention (days)`,gateNrmse:`Gate: one-step NRMSE`,gateRolloutNrmse:`Gate: rollout NRMSE`,gateValTestGap:`Gate: val/test gap`,gateMinRows:`Gate: min sample rows`,gateMinRuns:`Gate: min batch runs`,uqFreshDays:`UQ evidence freshness (days)`},security:{hitlTimeoutMs:`HITL approval timeout (ms)`,hitlTimeoutMode:`HITL timeout semantics`,approvalGate:`Dual approval for high-risk ops`,allowRegistration:`Open self-service registration`,hstsEnabled:`Send HSTS header`,recipeDispatchApproval:`Human approval for recipe dispatch`,recipeDispatchApprovalDesc:`When on, recipe_trial/recipe_apply suspend for a human decision before dispatch: approve = execute; deny (with guidance) = agent revises candidates and re-submits`,recipeDispatchTimeoutMs:`Recipe proposal approval timeout (ms)`},server:{host:`Listen address`,devPort:`Dev port`,prodPort:`Prod port`},app:{title:`App title`,description:`App description`},api:{baseURL:`API base URL`,timeout:`API timeout (ms)`,pageSize:`Default page size`,maxPageSize:`Max page size`},theme:{primaryColor:`Primary color`,mode:`Theme mode`},i18n:{defaultLocale:`Default locale`},time:{timeZone:`System time zone (logs/chat/audit/schedules)`}},groups:{toggleAll:`Expand/collapse all groups`,expandAll:`Expand all`,collapseAll:`Collapse all`,count:`{p0} groups`,newGroup:`New group`,namePlaceholder:`Group name (e.g. Field network)`,descPlaceholder:`Group description (optional)`,defaultCollapsed:`Collapsed by default`,create:`Create`,cancel:`Cancel`,ok:`OK`,rename:`Rename`,moveUp:`Move up`,moveDown:`Move down`,delete:`Delete group`,created:`Group created`,renamed:`Group renamed`,deleted:`Group deleted`,createFail:`Failed to create group`,updateFail:`Failed to update group`,deleteFail:`Failed to delete group`,deleteHasFields:`Group "{p0}" still has {p1} field(s); move them out first`,fields:`{p0}`,emptyHint:`No fields in this group yet — register settings via the API or a plugin`,srcBuiltin:`Built-in`,srcUser:`Custom`,srcPlugin:`Plugins`}},monitor:{k1dzryry003:`My resources`,k16zpmg9002:`admin full view`,k1dg9sr8001:`Owner`,title:`Runtime Monitor`,subtitle:`Wired ChannelRunTimes / AgentRunTimes and harness processes ledger`,refresh:`Refresh`,autoRefresh:`Auto refresh`,needLogin:`Sign in required to inspect runtime resources`,goLogin:`Go to sign in`,loadFailed:`Failed to load monitor data`,failed:`Operation failed`,channels:`Channel Runtimes`,agents:`Agent Runtimes`,aliveProcesses:`Alive harness procs`,orphan:`orphan`,server:`Server process`,updated:`snapshot`,channelRuntimes:`ChannelRunTime`,agentRuntimes:`AgentRunTime`,harnessProcesses:`harness processes`,chChannel:`Channel`,members:`Members`,wired:`Wired`,scheduler:`Scheduler`,scheduling:`running`,lead:`Lead`,name:`Name`,role:`Role`,harness:`harness`,state:`State`,stateIdle:`Idle`,stateBusy:`Busy`,stateStopped:`Stopped`,currentTask:`Current task`,queue:`Queue`,channel:`Channel`,actions:`Actions`,terminate:`Terminate`,terminated:`terminated`,terminateConfirm:`Terminating this process will also stop and unload its AgentRuntime. Confirm terminate`,terminatePidConfirm:`Force-kill this process (PID); a bound runtime is stopped along with it. Confirm`,binding:`Binding`,bound:`bound`,agent:`Agent`,command:`Command`,startedAt:`Started`,alive:`Alive`,exited:`Exited`,openTerminal:`Terminal`,openTerminalHint:`Attach to this omp process native terminal (live TUI output + HITL control)`},terminal:{title:`harness terminal`,abort:`Abort`,clear:`Clear`,stateIdle:`idle`,stateRunning:`turn running`,stateStreaming:`streaming`,stateExited:`process exited`,connOpen:`live`,connConnecting:`connecting`,connRetrying:`retrying`,connClosed:`offline`,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`,hitlTitle:`HITL dialog · waiting for your answer`,hitlCancel:`Cancel dialog`,hitlConfirm:`Confirm`,hitlDeny:`Deny`,hitlSubmit:`Submit`},agents:{hMock:`mock (testing)`,hOmp:`omp (real LLM)`,badConfigJson:`config is not valid JSON`,toPrivate:`Click to make private`,toPublic:`Click to make public (readable and usable by everyone)`,builtinNoEdit:`Built-in templates cannot be modified`,ownerOnlyEdit:`Only the owner can modify`,builtinNoDelete:`Built-in templates cannot be deleted`,readOnly:`Read-only`,editTpl:`Edit template`,newTpl:`New template`,configLabel:`config (JSON; mock supports delayMs)`,notInstalled:`not installed`,installLink:`Open official site to install ↗`,harnessInprocess:`In-process engine · always available`,k3pa5h4025:`Templates`,k3xhia001:`Name`,k3lrqn0002:`Visibility`,k3l98u7003:`Creator`,k3mr526004:`Instances`,k3xhfg005:`Enable`,k40aa6006:`Actions`,keetzvf007:`Delete template? (Cloned instances are kept)`,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.`,krpx6qa009:`Back to Workspace`,k1efixrj010:`New Template`,ka1gpdj011:`Admin view: templates and creators of all users are visible`,k45eb0012:`Edit`,k3xakp013:`Delete`,k1d036zs014:`No instances yet`,k17jfge3015:`Private (visible only to you)`,k1tt5zyo016:`Public (readable and usable by everyone, only you can modify)`,k3x23c017:`Built-in`,k3wv1t018:`Public`,k447jj019:`Private`,k3n9aij020:`Updated`,k3n5hak021:`Created`,k3n5sd7022:`Deleted`,kxa6cxx023:`Published: readable and usable by everyone, only you can modify`,k1xxabaf024:`Switched to private`},ctpl:{visPublic:`Public`,visPrivate:`Private`,newTplTitle:`New channel template`,leadTplLabel:`Lead template (cloned as the channel lead when instantiated)`,kefkfnl030:`Instantiated: {p0} ({p1} members); mount it from the workspace`,kbInstTitle:`Instantiate {p0}`,kbOption:`Knowledge base integration (rag-bridge)`,kbHint:`When on, this channel loads the KB plugin: search scene data-analysis & physics knowledge before optimizing, and the lead sinks experience back after the loop closes; the lead can also grant its own bound nodes to workers via team_grant_nodes.`,kbOn:`On`,kbOff:`Off`,k1f54iqd029:`Template Hub`,k117jag9001:`Delete template? (Instantiated Channels are not affected)`,knjomku002:`Create Channel from template (members auto-assembled)`,k1f55q76003:`Template Name`,k40gkk004:`Description`,k1ju32o7005:`Select lead template (optional)`,k5uq1js006:`Worker member templates (cloned one by one on instantiation)`,kqmdkc9007:`Select member templates (optional)`,k1q87yho008:`Scenario prompt (injected into all members)`,kk4u5cr009:`Working directory (empty = default at instantiation)`,k3lrqn0010:`Visibility`,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.`,krpx6qa012:`Back to Workspace`,k1efixrj013:`New Template`,ka1gpdj014:`Admin view: templates and creators of all users are visible`,k3rx4ps015:`Empty team`,k3xakp016:`Delete`,k3mr1fo017:`Instantiate`,k19fglby018:`Create the first Channel template`,k17jfge3019:`Private (visible only to you)`,k191u0u5020:`Public (instantiable by everyone, only you can modify)`,k3x23c021:`Built-in`,k3wv1t022:`Public`,k447jj023:`Private`,k1i0ji0y024:`Template name is required`,kyppebc025:`Template created; instantiate and mount it with one click from the session bar on the left of the workspace`,kkziya3026:`Published: instantiable by everyone`,k1xxabaf027:`Switched to private`,k1oxfuqj028:`Template deleted`},daq:{unitPh:`e.g. %RH`,k1bge46t118:`Create Node`,k1b3dtga119:`Save Template`,k3v957u120:`{p0} running: {p1} · {p2}`,k1x7jnru121:`{p0} standby: nodes on this line start acquiring after the run begins`,k1hrrqa1122:`Active recipe monitor window {p0} ~ {p1}{p2}`,k11wnl1y123:`Line running: {p0} · {p1}`,k9vnp9h124:`Global {p0}ms`,kyuadl0125:`Missing required parameter: {p0}`,k2hbo3c126:`{p0} copy`,k15lvw0o105:`running — current product: `,k3zkt2106:`Start Run`,k12uge2o107:`not running — nodes on this line pause acquisition`,k69vag8108:`· tagged`,k1cg78i8109:`Open Line Management to Start`,kzg9805110:`Reconnect Infrastructure`,knxpdpt111:`Resume All Acquisition`,k1fstglk112:`Test Connection`,k7pxjxo113:`Create & Acquire (after test passes)`,k3xakp114:`Delete`,k1efixrj115:`New Template`,k1b39281116:`Save Changes`,k3ozyqz117:`Not Running`,k3ktxbr085:`Line “`,k400lb086:`Batch`,k3xagp087:`Published`,k427eu088:`Consumed`,k3w8go089:`Dropped`,k3wusd090:`Stored`,k48oi091:`decimal places`,k4118o092:`Samples`,k1ukoy0v093:`Go to Line Management`,k1ld43ur094:`Reconnecting…`,kpui00095:`Pause All Acquisition`,k3vp67i096:`Running`,kr45rk9097:` · Custom`,kjbqphp098:`(stack not installed)`,k1fsh720099:`Testing…`,k1bg4759100:`Creating…`,k1hhheu3101:`Confirm delete`,k1iiph0s102:`Edit Template`,k1b38d59103:`Saving…`,k1l3pt51104:`Recipe Violation`,k1e8lcoo001:`Global default when a node has no per-node WS publish interval; 0 = publish every frame with the sampling cadence`,k1yztsu4002:`Published to queue by producer`,ko09iha003:`Consumed from queue by consumer`,kj1jbmw004:`Samples stored in the time-series DB`,kgpxzy3005:`Defaults to auto-incremented name per template`,k5opd2t006:`e.g. Oven Humidity`,kk8o4tl007:`Defaults to the name`,kzn3l7l008:`Defaults to auto-generated`,khb8mru009:`Run state of the node's line: idle/unassigned nodes do not sample`,k3q23v3010:`Line assignment (nodes without a line do not sample)`,k1emg364011:`DAQ Console`,k1wmg2bz012:`Full pipeline: acquisition → queue (MQTT) → time-series DB (Timescale) → WS real-time publish; node entities and parameters are authoritative on the server.`,k19onw5w013:`No line is running — data acquisition is recipe-driven: please `,k1b2tk5c014:`Line Operations`,k1u9wnlg015:`start a line in Line Operations and mount nodes to it`,k1ifahxj016:`Default Interval`,k1if98n0017:`Default Publish`,k1f5cv0s018:`Template Manager`,k1fn0ukb019:`Add Node`,k1b2o3b6020:`Line Status`,k3zgkk021:`Standby`,k1el12b1022:`No lines yet`,k8jxxe8023:`Create one in Line Operations`,k19rioqa024:`Add DAQ Node`,k1p5c1un025:`Mock Simulator`,k1cbcp3o026:`Real Device`,k1fsgerc027:`Signal template (range/unit domain)`,k1ce2k1y028:`Node name (optional)`,k13mfsfc029:`Sampling interval ms (empty = follow global)`,k1kt87rx030:`Protocol`,k3xdnn031:`Cancel`,k11mv96s032:`Signal Template Manager`,ktji4ky033:`Custom Templates`,k45eb0034:`Edit`,kztvzbo035:`No custom templates yet — copy from the built-in ones below, or create directly in the form below.`,k3xhia036:`Name`,k3x4ef037:`Unit`,k1l477m0038:`Channel Semantics`,k1ayxrqb039:`Tag Code`,k1l9jv5m040:`Range Min`,k1l9jv4p041:`Range Max`,k3mxmcx042:`Decimals`,k3xx56043:`Icon`,k1f4eknv044:`Mock Base`,kytd15s045:`Center value of mock sampling; defaults to range midpoint`,k1f4ifpo046:`Mock Amplitude`,ksp2aji047:`Mock fluctuation amplitude; defaults to 4% of range`,k48p40048:`Reset`,k1w8s84s049:`Built-in Templates (read-only, copyable)`,k3y694050:`Copy`,k3wj9n051:`Line`,k1bkl9uj052:`All Lines`,k3ootr6053:`Unassigned`,k1optt001:`Agent optimization log`,k1optf001:`All lines`,k1optf002:`Refresh`,k1optf004:`All recipes`,k1flttpl010:`Template`,k1flttpl011:`All templates`,k1fltdrv012:`Driver`,k1fltdrv013:`All drivers`,k1flttim014:`Filter by last sample time`,k1flttim015:`Data Age`,k1flttim016:`Any age`,k1timlv017:`Last 5 min`,k1timhr018:`Last hour`,k1timdy019:`Last 24 h`,k1timld020:`Older than 24 h`,k1timnv021:`Never reported`,k1fltsrc022:`Search`,k1fltsph023:`Node name / ID…`,k1opte001:`No optimization records yet — registered automatically after agent dcw_control`,k1opte002:`No DAQ data in window (line not running or node unbound)`,k1opta001:`Series`,k1opta002:`Rollback`,k1opto001:`Open: awaiting agent dcw_judge`,k1optw001:`Aggregating window…`,k1optw002:`breach`,k1optst001:`Open`,k1optst002:`Judged · keep`,k1optst003:`Rolled back`,k1optst004:`Superseded`,k1optst005:`Superseded by manual`,k1optst006:`Closed on line stop`,k1optst007:`Failed`,k1optst008:`Judged · rollback not executed`,k1trnd001:`Trend`,k1trnd002:`Live trend: last 60 readings, dashed = limits`,k1wrn001:`above max`,k1wrn002:`below min`,k1wrn003:`recipe window`,k1wrn004:`safe range`,k1i8rtqt054:`Bound Device`,k1bkw4m2055:`All Devices`,k3own4q056:`Unbound`,k2bindtip137:`Bind device (same source as Digital Twin / node inspector, persisted server-side)`,k1b2tkyv057:`Line Run`,k3x4t1058:`All`,k1nxm3p7059:`Acquiring (running)`,k1ulx34e060:`Acquisition off (standby/unassigned)`,k1iwdfef061:`Node State`,k41k5c062:`OK`,k49z8v063:`Warn`,k3xmid064:`Alarm`,k44c2n065:`Offline`,k1fygck2066:`Clear Filters`,k45uio067:`Node`,k42w8s068:`State`,k3mv305069:`Live Value`,k1l6g2ga070:`Sampling`,k3zi0nf071:`WS Publish`,k4a0la072:`Driver`,k40aa6073:`Actions`,k3o3jg2074:`Console`,kvhjyc3075:`No DAQ nodes yet — drag from the left rail “DAQ Nodes” in the digital twin space (the server creates node entities).`,k1w20qew076:`No matching nodes — nothing matches the current filters; adjust or clear them.`,k1bhhheq077:`Go to Sign-in`,k41mvv078:`Every frame`,k422b8079:`Temperature`,k3x6ff080:`Pressure`,k3z9xc081:`Tension`,k3subk4082:`Encoder`,k47atw083:`Vision`,kz7yhbj084:`Electric/Gateway`,k1prodrc128:`Product / Recipe`,k1staled129:`Line is running but no fresh samples (> {p0}s) — node offline or driver fault`,k1disabl130:`Disabled`,k1runtipc131:`Run state of the line this node belongs to: sampling only while running`,k1prdrtip132:`Product & recipe of the active run on this line`,k1tsdbtip133:`Time-series backend: switch via DAQ_TSDB_URL (TimescaleDB compatible)`,k1queuet134:`Message queue: switch via DAQ_MQTT_URL (standard MQTT broker)`,k1droptip135:`Queue drops (produced-consumed)`,k1eg1000a136:`e.g. 1000`,k1needtst137:`Real-device scenario requires a passing connection test`,k1plndrv138:`Reserved protocol: awaiting real channel support`,k1idlehin139:`Line not running: this node starts sampling after the line starts`,k1gateoff140:`DAQ gateway is paused — all nodes stop sampling`,k1alarm141:`Unacked alarms`,k1ack142:`Ack`,k1esc143:`Escalated {p0} times (notification re-sent)`,k1acked144:`Alarm acknowledged`,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`,k1nodestop146:`Stop collection`,k1nodestart147:`Start collection`,k1evt001:`No unacknowledged alarms`,k1evt002:`Live events`,k1evt003:`Log management`,k1evt004:`No events yet — waiting for activity…`},daqDetail:{bucket1s:`1s bucket`,bucket5s:`5s bucket`,bucket15s:`15s bucket (default)`,bucket30s:`30s bucket`,bucket60s:`1min bucket`,calDecoderTip:`Collection calibration decoder: physical = scale × PLC raw + offset`,calScaleTip:`decode slope (≠0)`,calOffsetTip:`decode intercept`,kfrm0001:`Image frame gallery`,kfrm0002:`Profile frames`,kfrm0003:`No frames yet (data flows only while the line is running)`,kfrm0004:`Points`,kfrm0005:`Metrics`,kfrm0006:`Click to view full image`,k9vnp9h053:`Global {p0}ms`,k3n5aaj045:`Disabled`,k1cgi8fy046:`Per-node Interval`,k3oktae047:`No Calibration`,k1cggz5f048:`Per-node Publish`,k3n42dj049:`Fixed interval`,ksn9cgo050:`Write parameters to the sampler`,k1fstglk051:`Test Connection`,k452a8052:`Bind`,k1fx2vik032:`Live Value ·`,k1p9gioa033:`Driver Connection ·`,k1i535i5034:`TSDB history (`,kz8zr9v035:`(reserved)`,k3own4q036:`Unbound`,k3w3j8f037:`Acquiring`,k1k2ueyq038:`Follow global interval`,k1eru4r1039:`Calibration on`,k1k2t5o7040:`Follow global publish`,k41mvv041:`Every frame`,k1as0g50042:`Writing…`,k1fsh720043:`Testing…`,k479eh044:`Unbind`,k1emg364001:`DAQ Console`,k1bhhheq002:`Go to Sign-in`,k4a0la003:`Driver`,k3xg3w004:`Interval`,k3w6td005:`Apply`,k3x5tpx006:`Warn Band`,k1hjj0jf007:`Hard Range`,k1i8rtqt008:`Bound Device`,kd9d69j009:`Acquisition Params (server-controlled)`,k1iw7tbf010:`Node Enable`,k12k23od011:`Line (no sampling without a line)`,k3ootr6012:`Unassigned`,k1l6smxo013:`Sampling Driver`,k3x4ef014:`Unit`,k3mxmcx015:`Decimals`,k1l9jv5m016:`Range Min`,k1md63hm017:`Warn Low`,k1md63gp018:`Warn High`,k1l9jv4p019:`Range Max`,k1ie6qju020:`Device Binding (end-to-end)`,kjobzu3021:`Select a device twin…`,k3x1jg022:`Refresh`,k40vsf023:`Time`,k48v5024:`Value`,k4bza025:`State`,k41k5c026:`OK`,k49z8v027:`Warn`,k3xmid028:`Alarm`,k44c2n029:`Offline`,k1m1zwux030:`Every frame (with sampling)`,k3lha20031:`Raw points`,k1rfrshint001:`Trend auto-pull interval (ms); empty or 0 = follow server default (daq.query.displayIntervalMs), min {p0}ms`},logs:{title:`Line Log`,sub:`Line-scoped operations only: writes, recipes, rollbacks, line/DAQ/alarm events and manual entries; sign-ins and system administration are excluded. Query by line, recipe and time`,live:`Live`,liveHint:`Receives line operation events over WS (summary rendering only; full details in the table below)`,all:`All`,fLine:`Line`,fProduct:`Product`,fSource:`Source`,fKind:`Category`,fFrom:`From`,fTo:`To`,fKeyword:`Keyword`,fKeywordPh:`Search summary/action/actor…`,invalidTime:`Invalid time value: please re-select the From/To time`,invalidRange:`Invalid time range: From must not be later than To`,mLineRequired:`Select a production line first: the line log only accepts line-scoped records`,query:`Query`,reset:`Reset`,thTime:`Time`,thActor:`Actor`,thSummary:`Event summary`,thScope:`Scope (line/product/recipe)`,thDetail:`Details`,expand:`Details`,fold:`Collapse`,loading:`Querying…`,empty:`No matching log entries`,mSummary:`Entry content`,mSummaryPh:`e.g. replaced the heater of oven No.3 and extended holding by 10 min for the current batch`,mSubmit:`Record`,mOk:`Recorded`,manual:`Manual entry`,noDetail:`None`,totalCount:`{n} records`,mDetail:`Detail (optional)`,mDetailPh:`Context, handling notes, related ticket… (stored in the log detail)`,mLevel:`Severity`,quickErrHint:`Show error-level events only (system faults / failed writes); count = live track; click again to clear`,quickWarnHint:`Show warn-level events only (alarms / unverified); count = live track; click again to clear`,export:`Export CSV`,exportHint:`Export the current query snapshot as CSV (incident report / ticket attachment)`,copyDetail:`Copy details`,copied:`Copied`,src:{user:`User`,system:`System`},kind:{write:`Apply`,manual:`Manual`,alarm:`Alarm`,line:`Line`,recipe:`Recipe`,rollback:`Rollback`,daq:`DAQ`,system:`System`}},operations:{title:`Line Operations`,sub:`One live stream for every production-line action: DCW writes, recipe batches, DAQ alarms, modeling, rollbacks and agent activity`,live:`LIVE`,liveHint:`Line operations arrive over WS and are prepended to the stream in real time`,all:`All`,fLine:`Line`,fSource:`Source`,fKind:`Category`,fKeyword:`Keyword`,fKeywordPh:`Search node / action / summary…`,query:`Query`,reset:`Reset`,loading:`Loading…`,empty:`No operations yet — adjust filters or wait for new line events`,noDetail:`No structured detail`,totalCount:`{n} records`,actorAgent:`Agent`,actorUser:`User`,actorSystem:`System`,cat:{write:`Write`,daq:`DAQ`,aml:`Modeling`,recipe:`Recipe`,rollback:`Rollback`,alarm:`Alarm`,line:`Line`,manual:`Manual`,system:`System`}},analysis:{title:`Data Analysis`,sub:`Durable ledger of Agent Channel analysis outputs: key conclusions, recipe linkage, time windows and full reports, queryable anytime`,live:`LIVE`,liveHint:`Analysis ledger events (analysis_save) arrive over WS and refresh the table automatically`,all:`All`,fLine:`Line`,fCat:`Category`,fWindow:`Analyzed at`,fKeyword:`Keyword`,fKeywordPh:`Search title / key conclusion…`,query:`Query`,reset:`Reset`,loading:`Loading…`,empty:`No analysis reports yet — agents save them via the analysis_save tool inside channels`,noDetail:`No extra output`,expand:`Detail`,fold:`Fold`,count:`{p0} reports`,ledgerHint:`Ledger · append-only (agents cannot modify or delete)`,remove:`Delete`,removeConfirm:`Delete analysis report "{p0}"? This cannot be undone`,cancel:`Cancel`,editTitle:`Revise analysis report`,save:`Save revision`,kRecipe:`Recipe ID`,kVersion:`Recipe version`,kWindowFrom:`Data window from`,kWindowTo:`Data window to`,conclusionsHint:`one per line`,kRevised:`Revised`,thTime:`Analyzed At`,thLine:`Line`,thTitle:`Title`,thRecipe:`Recipe`,thSummary:`Key Conclusion`,thSource:`Source`,thDetail:`Detail`,kId:`Report ID`,kWindow:`Data Window`,kSources:`Evidence Sources`,kConclusions:`Conclusions`,kReport:`Full Report`,kMetrics:`Metrics`,kContext:`Line Context Snapshot`,cat:{quality:`Quality`,oee:`OEE`,alarm:`Alarm`,trend:`Trend`,optimization:`Optimization`,general:`General`},win:{h1:`Last hour`,h24:`Last 24 hours`,d7:`Last 7 days`,d30:`Last 30 days`,all:`All time`}},dcw:{codePh:`e.g. MOTOR · I`,unitPh:`e.g. A`,k1qidbpy061:`Default {p0} (by creation order)`,k1gp649b062:`{p0} ({p1} nodes / {p2} products / {p3} recipes will be unmounted)`,k7xq2mfd063:`Delete line "{p0}"?`,k5tq8wc071:`Edit line`,k9m2vxa072:`Also delete its nodes, products & recipes (irreversible)`,k4r7nbd073:`Line "{p0}" and its {p1} nodes · {p2} products · {p3} recipes will be permanently deleted`,k3t616a058:`Custom`,k149r6y7059:`○ Standby`,k1elczt9060:`No recipes yet`,k3ootr6049:`Unassigned`,k3wj9n050:`Line`,k11nndsp051:`Control Template ·`,k3zz0f052:`Tagged`,k19dlbli053:`Color follows the theme`,k3x23c054:`Built-in`,k1eox1el055:`● Running`,k18moyq1056:`Acquisition starts once a recipe is selected`,kutxzsz057:`Select recipe…`,k1i5a9vw001:`There are nodes/products not assigned to any line; adopt them from the corresponding line detail page`,k1yfm3gv002:`Delete line (nodes/products/recipes are unmounted)`,k1dhaby4003:`Pick a recipe to start`,kru37i3004:`e.g. Line 1 / Casting Line A`,k1f2nwsp005:`Line purpose notes`,k1tooi3o006:`e.g. Motor Current Setpoint`,k698qz0007:`e.g. Motor Current`,k1qdnfzc008:`e.g. Motor current setpoint: rising current means growing load… adjust in small steps and watch temperature rise`,k1b2tk5c009:`Line Operations`,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;
7
+ B2,32.7`,importBtn:`导入数据表`,fetching:`拉取中…`,s2:`数据表与后处理(可写代码聚合/筛选)`,noRows:`尚未拉取数据。选择产线与测点后点「拉取数据」。`,rowsInfo:`共 {n} 行,预览前 {show} 行:`,codePlaceholder:`定义 transform(rows) 函数,做过滤/聚合/派生列,返回新行数组(在浏览器本地执行)。`,applyTransform:`应用后处理`,resetTransform:`还原原始数据`,transformedTo:`后处理完成:{n} 行。`,s3:`图表配置`,chartType:`图型`,valueField:`值字段`,groupBy:`分组`,agg:`聚合`,refLine:`参考线`,chartTitle:`图表标题`,s4:`配置模板(持久化,换数据一键复绘)`,templateName:`模板名…`,templateSave:`保存为模板`,templateSaved:`模板已保存。`,templateApplied:`已应用模板「{name}」。`,s5:`绘图与输出`,draw:`开始绘图`,openViewer:`在线查看`,download:`下载 PNG`,saveChart:`保存为图表`,saveResult:`保存为分析结果`,savedChart:`图表已保存(工坊/看板可见)。`,savedResult:`分析结果已保存(台账可见)。`,resultTitle:`EDA 管道分析结果`,resultSummary:`基于 {n} 行 × {cols} 个数值列的管道分析。`,resultReport:`图型 {type},数据 {rows} 行;详见 metrics 与 context。`,viewerHint:`滚轮缩放 / 工具箱右上角可存图`}},board:{title:`EDA 看板`,backToStudio:`← 返回工坊`,pick:`选择看板…`,windowOverride:`全局时间覆盖`,keepChart:`(沿用各图表窗口)`,create:`新建看板(勾选我的图表,自动流式布局)`,boardTitle:`看板标题`,createBtn:`创建看板({n} 张图)`,inaccessible:`(不可见图表)`,noReadChart:`该图表不在你的可见范围内(B4)`,saveLayout:`保存布局`,created:`看板已创建`,layoutSaved:`布局已保存`}},tr={common:{stop:`Stop`,add:`Add`,remove:`Remove`,create:`Create`,revoke:`Revoke`,close:`Close`,light:`Light`,dark:`Dark`,confirm:`OK`,cancel:`Cancel`,save:`Save`,search:`Search`,actions:`Actions`,edit:`Edit`,delete:`Delete`,status:`Status`,all:`All`,copy:`Copy`,copied:`Copied`},menu:{system:`AgentWorkShop`,groups:{console:`Console`,ops:`Operations`,system:`System`},ontology:`Ontology Model`,dashboard:`Dashboard`,workshop:`Agent Harness`,town:`Digital Twin`,tokens:`API Tokens`,daq:`DAQ Console`,dcw:`Line Ops`,dataManagement:`Data Studio`,studio:`EDA Studio`,aml:`Modeling`,optimizer:`Optimizer`,logs:`Line Log`,operations:`Line Operations`,analysis:`Data Analysis`,users:`Users`,monitor:`Runtime Monitor`,plugins:`Plugins`,tools:`Tools`,settings:`Settings`,permissions:`Permissions`},header:{collapse:`Collapse menu`,expand:`Expand menu`,openNav:`Open navigation`,closeNav:`Close navigation`,language:`Language`,theme:`Theme`,fullscreen:`Fullscreen`,notifications:`Notifications`,profile:`Profile`,guest:`Guest`,login:`Sign in`,guestBanner:`Browsing as guest — sign in to view and operate your production lines`,logout:`Log out`,trail:`Route trail (click to return)`,workspace:`Workspace`,nodeDetail:`DAQ node`,lineDetail:`Line console`},home:{kicker:`DIGITAL TWIN · LINE OPS`,heroTitle:`The operations hub where lines run`,heroAccent:`in twin`,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.`,ctaTown:`Open Digital Twin`,ctaLine:`Line Operations`,live:`LIVE`,kpi:{lines:`Running Lines`,dcwNodes:`Control Nodes`,daqNodes:`DAQ Channels`,samples:`Samples Stored`,writeRate:`Write Success`,alarms:`Active Alarms`},charts:{trend:`Live Condition Trends`,trendSub:`Normalized per node range · last 3 min`,lineState:`Line States`,pipeline:`DAQ Pipeline Throughput`,writeCtl:`Write Success Rate`,nodeState:`Node State Mix`,lines:`Line Fleet`},trendY:`Range %`,trendWaiting:`Waiting for live data…`,trendNeedRun:`Sampling is gated on an active batch run. Start a line run under Line Operations to see live trends here.`,runNow:`Running`,standBy:`Standby`,pipelineSeries:{produced:`Produced`,consumed:`Consumed`,stored:`Stored`},stateDaq:`DAQ Nodes`,stateDcw:`Control Nodes`,states:{ok:`OK`,warn:`Warn`,alarm:`Alarm`,writing:`Writing`,idle:`Idle`,error:`Error`,offline:`Offline`},batch:`Batch`,nodesUnit:`Control nodes`,daqUnit:`DAQ channels`,tagged:`Tagged samples`,noLine:`No lines yet — create one in Line Operations`,fleetAll:`View all lines`,fleetHint:`Running first · top 8 shown`,writesFailed:`failed`,harness:{title:`Agent Harnesses`,sub:`CLI availability probe · ready to dispatch`,missing:`not installed`},fields:{name:`App Name`,version:`Version`,mode:`Mode`,devPort:`Dev Port`,prodPort:`Prod Port`,apiBase:`API Base`,primary:`Primary Color`}},users:{krkb23h011:`{p0} role changed to {p1}`,k1u7u12g012:`{p0} {p1}`,knh5f2r013:`Deleted {p0}`,k3xhfg009:`Enable`,k3wsi1010:`Disabled`,k1jk2os9001:`Delete this user? (Their resources are kept and ownership remains traceable)`,k1flpho5002:`Manage global users and roles (admins have the highest privileges: full monitoring, any template, user management).`,kpdo6rc003:`Admin privileges required`,k1mue9bl004:`User management is admin-only; contact an administrator to change roles.`,k3xakp005:`Delete`,k1br33vc006:`Load failed`,k1enhqn3007:`Update failed`,k1bphrb3008:`Delete failed`,title:`User Management`,subtitle:`Manage system users, roles and access permissions`,add:`Add User`,search:`Search name or email`,deleteConfirm:`Are you sure to delete this user?`,name:`Username`,email:`Email`,role:`Role`,created:`Created`,roleAdmin:`Admin`,roleEditor:`Editor`,roleUser:`User`,active:`Active`,disabled:`Disabled`},settings:{title:`System Settings`,subtitle:`Configure app basics, theme appearance and notifications`,basic:`General`,basicDesc:`Application name, description and other basics`,theme:`Appearance`,themeDesc:`Customize primary color and display mode`,notification:`Notifications`,notificationDesc:`Manage how system messages are delivered`,appName:`App Name`,appDesc:`Description`,primaryColor:`Primary Color`,themeMode:`Display Mode`,appearanceDesc:`Accent color, dark mode and language, applied live and persisted automatically (localStorage).`,accentDesc:`Warm-editorial defaults to the ink pill; pick a muted preset to preview instantly.`,accentInk:`Ink`,accentStone:`Amber`,accentMoss:`Moss`,accentSlate:`Slate`,accentPlum:`Plum`,accentClay:`Clay`,accentApplied:`Accent applied`,accentReset:`Reset to default ink (follows config.yml)`,accentResetAction:`Reset to default ink`,darkDesc:`Deep-navy control-room dark ramp; light mode keeps the editorial paper look.`,languageDesc:`Interface language (zh-CN / en); applies immediately.`,systemTab:`System`,systemDesc:`Read-only runtime parameters (sourced from config.yml via nuxt.config runtimeConfig).`,identity:`Signed in as`,identityGuest:`Not signed in (workshop data requires sign-in)`,emailNotify:`Email Notifications`,emailNotifyDesc:`Push important events to administrators via email`,smsNotify:`SMS Notifications`,smsNotifyDesc:`Deliver urgent alerts instantly via SMS`,pushNotify:`In-App Push`,pushNotifyDesc:`Real-time message alerts in the browser`,saveSuccess:`Settings saved`,runtimeTab:`Runtime config`,runtime:{groupMemory:`Memory`,groupOmp:`Agent Harness`,groupDcw:`Write Control`,groupWorkshop:`Workshop`,groupBackup:`Backup`,groupRetention:`Retention`,groupOptimizer:`Optimizer solver`,groupLog:`Logs`,title:`Runtime config`,desc:"Server-backed runtime parameters: live keys apply instantly over SSE (no reload); restart keys take effect on the next launch of the matching mode. Same channel as the `aw config` CLI.",live:`live`,restart:`restart`,save:`Save settings`,resetAll:`Reset all to defaults`,resetKey:`Reset to default`,savedLive:`Saved — live keys hot-reloaded`,restartNotice:`Saved. These keys take effect after restarting the matching mode: {keys}`,keyReset:`Reset to default: {key}`,resetAllDone:`All runtime overrides cleared (falling back to config.yml)`,groupServer:`Server`,groupApp:`App`,groupTheme:`Theme`,groupI18n:`i18n`,groupSecurity:`Security`,groupDaq:`DAQ`,groupApi:`API`,groupHarness:`Harness Adapters`,groupPlugins:`Plugins`,memory:{primerTokens:`Memory primer budget`,injectTotal:`Memory inject cap`,maintenanceMs:`Memory maintenance (ms)`,expireDays:`Episodic expiry (days)`,expireSessionDays:`Session expiry (days)`,cap:`Memory entry cap`,reflectTrigger:`Reflection trigger`,embedBaseUrl:`Embedding endpoint`,embedModel:`Embedding model`,embedApiKey:`Embedding key`},omp:{compactEnabled:`Auto compaction`,compactThreshold:`Compaction threshold`,compactMinIntervalMs:`Min compaction interval (ms)`,compactWaitMs:`Compaction wait timeout (ms)`},dcw:{rollbackCooldownMs:`Rollback cooldown (ms)`,rollbackMinWindowMs:`Min observe window (ms)`,rollbackBaselineMs:`Baseline window (ms)`,rollbackStaleMs:`Open record staleness (ms)`},workshop:{idleSweepMs:`Idle sweep (ms)`,idleGraceMs:`Idle grace (ms)`},backup:{disabled:`Disable auto backup`,intervalHours:`Backup interval (h)`,keep:`Backups to keep`},retention:{disabled:`Disable retention sweep`,eventsDays:`Events retention (days)`,messagesDays:`Messages retention (days)`,auditDays:`Audit retention (days)`,approvalDays:`Approval history retention (days)`,analysisDays:`Analysis report retention (days)`,optimizerDays:`Optimizer run retention (days)`,processModelDays:`Process model ledger retention (days)`},optimizer:{poolSize:`Solver process pool size`,requestTimeoutMs:`Solver request timeout (ms)`,threads:`Solver thread budget`,crosscheckTol:`Crosscheck tolerance`},log:{level:`Log level`},daq:{mqttQos:`MQTT QoS`,mqttUsername:`MQTT username`,mqttPassword:`MQTT password`,mqttCaFile:`MQTT CA certificate`,mqttRejectUnauthorized:`MQTT verify certificate`,samplingDefaultIntervalMs:`Default sampling interval (ms)`,samplingMinIntervalMs:`Sampling floor (ms)`,queryDefaultBucketMs:`Default TS query bucket (ms)`,queryMinBucketMs:`TS query floor (ms)`,tsRetentionH:`Scalar TS retention (h)`,frameRetentionH:`Frame retention (h)`,alarmWebhookUrl:`Alarm webhook`,alarmEscalateMinutes:`Alarm escalate (min)`,startInfrastructure:`DAQ infra policy`,mqttHost:`MQTT broker host`,mqttPort:`MQTT broker port`,tsHost:`Timescale host`,tsPort:`Timescale port`,publishDefaultIntervalMs:`Default WS push interval (ms)`,publishMinIntervalMs:`WS push floor (ms)`,queryDisplayIntervalMs:`Trend refresh interval (ms)`,queryMinDisplayIntervalMs:`Trend refresh floor (ms)`,export:{pagesPerNode:`Export max pages per node`,windowMaxH:`Export max window (h)`}},aml:{pythonBin:`Python interpreter`,uvBin:`uv executable`,indexUrl:`pip index mirror`,jobTimeoutMs:`Job wall-clock timeout (ms)`,jobMaxConcurrent:`Max concurrent jobs`,jobDiskQuotaMb:`AML disk quota (MB)`,jobStallMs:`Job stall threshold (ms)`,datasetMaxRows:`Dataset row limit`,datasetRetentionDays:`Unreferenced dataset retention (days)`,allowCrossRecipe:`Allow cross-recipe merge`,retiredKeepDays:`Retired model artifact retention (days)`,gateNrmse:`Gate: one-step NRMSE`,gateRolloutNrmse:`Gate: rollout NRMSE`,gateValTestGap:`Gate: val/test gap`,gateMinRows:`Gate: min sample rows`,gateMinRuns:`Gate: min batch runs`,gateMinControlLevels:`Gate G6: min control levels`,gateMaxCollinearity:`Gate G6: max control/time collinearity`,uqFreshDays:`UQ evidence freshness (days)`},security:{hitlTimeoutMs:`HITL approval timeout (ms)`,hitlTimeoutMode:`HITL timeout semantics`,approvalGate:`Dual approval for high-risk ops`,allowRegistration:`Open self-service registration`,hstsEnabled:`Send HSTS header`,recipeDispatchApproval:`Human approval for recipe dispatch`,recipeDispatchApprovalDesc:`When on, recipe_trial/recipe_apply suspend for a human decision before dispatch: approve = execute; deny (with guidance) = agent revises candidates and re-submits`,recipeDispatchTimeoutMs:`Recipe proposal approval timeout (ms)`},server:{host:`Listen address`,devPort:`Dev port`,prodPort:`Prod port`},app:{title:`App title`,description:`App description`},api:{baseURL:`API base URL`,timeout:`API timeout (ms)`,pageSize:`Default page size`,maxPageSize:`Max page size`},theme:{primaryColor:`Primary color`,mode:`Theme mode`},i18n:{defaultLocale:`Default locale`},time:{timeZone:`System time zone (logs/chat/audit/schedules)`}},groups:{toggleAll:`Expand/collapse all groups`,expandAll:`Expand all`,collapseAll:`Collapse all`,count:`{p0} groups`,newGroup:`New group`,namePlaceholder:`Group name (e.g. Field network)`,descPlaceholder:`Group description (optional)`,defaultCollapsed:`Collapsed by default`,create:`Create`,cancel:`Cancel`,ok:`OK`,rename:`Rename`,moveUp:`Move up`,moveDown:`Move down`,delete:`Delete group`,created:`Group created`,renamed:`Group renamed`,deleted:`Group deleted`,createFail:`Failed to create group`,updateFail:`Failed to update group`,deleteFail:`Failed to delete group`,deleteHasFields:`Group "{p0}" still has {p1} field(s); move them out first`,fields:`{p0}`,emptyHint:`No fields in this group yet — register settings via the API or a plugin`,srcBuiltin:`Built-in`,srcUser:`Custom`,srcPlugin:`Plugins`}},monitor:{k1dzryry003:`My resources`,k16zpmg9002:`admin full view`,k1dg9sr8001:`Owner`,title:`Runtime Monitor`,subtitle:`Wired ChannelRunTimes / AgentRunTimes and harness processes ledger`,refresh:`Refresh`,autoRefresh:`Auto refresh`,needLogin:`Sign in required to inspect runtime resources`,goLogin:`Go to sign in`,loadFailed:`Failed to load monitor data`,failed:`Operation failed`,channels:`Channel Runtimes`,agents:`Agent Runtimes`,aliveProcesses:`Alive harness procs`,orphan:`orphan`,server:`Server process`,updated:`snapshot`,channelRuntimes:`ChannelRunTime`,agentRuntimes:`AgentRunTime`,harnessProcesses:`harness processes`,chChannel:`Channel`,members:`Members`,wired:`Wired`,scheduler:`Scheduler`,scheduling:`running`,lead:`Lead`,name:`Name`,role:`Role`,harness:`harness`,state:`State`,stateIdle:`Idle`,stateBusy:`Busy`,stateStopped:`Stopped`,currentTask:`Current task`,queue:`Queue`,channel:`Channel`,actions:`Actions`,terminate:`Terminate`,terminated:`terminated`,terminateConfirm:`Terminating this process will also stop and unload its AgentRuntime. Confirm terminate`,terminatePidConfirm:`Force-kill this process (PID); a bound runtime is stopped along with it. Confirm`,binding:`Binding`,bound:`bound`,agent:`Agent`,command:`Command`,startedAt:`Started`,alive:`Alive`,exited:`Exited`,openTerminal:`Terminal`,openTerminalHint:`Attach to this omp process native terminal (live TUI output + HITL control)`},terminal:{title:`harness terminal`,abort:`Abort`,clear:`Clear`,stateIdle:`idle`,stateRunning:`turn running`,stateStreaming:`streaming`,stateExited:`process exited`,connOpen:`live`,connConnecting:`connecting`,connRetrying:`retrying`,connClosed:`offline`,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`,hitlTitle:`HITL dialog · waiting for your answer`,hitlCancel:`Cancel dialog`,hitlConfirm:`Confirm`,hitlDeny:`Deny`,hitlSubmit:`Submit`},agents:{hMock:`mock (testing)`,hOmp:`omp (real LLM)`,badConfigJson:`config is not valid JSON`,toPrivate:`Click to make private`,toPublic:`Click to make public (readable and usable by everyone)`,builtinNoEdit:`Built-in templates cannot be modified`,ownerOnlyEdit:`Only the owner can modify`,builtinNoDelete:`Built-in templates cannot be deleted`,readOnly:`Read-only`,editTpl:`Edit template`,newTpl:`New template`,configLabel:`config (JSON; mock supports delayMs)`,notInstalled:`not installed`,installLink:`Open official site to install ↗`,harnessInprocess:`In-process engine · always available`,k3pa5h4025:`Templates`,k3xhia001:`Name`,k3lrqn0002:`Visibility`,k3l98u7003:`Creator`,k3mr526004:`Instances`,k3xhfg005:`Enable`,k40aa6006:`Actions`,keetzvf007:`Delete template? (Cloned instances are kept)`,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.`,krpx6qa009:`Back to Workspace`,k1efixrj010:`New Template`,ka1gpdj011:`Admin view: templates and creators of all users are visible`,k45eb0012:`Edit`,k3xakp013:`Delete`,k1d036zs014:`No instances yet`,k17jfge3015:`Private (visible only to you)`,k1tt5zyo016:`Public (readable and usable by everyone, only you can modify)`,k3x23c017:`Built-in`,k3wv1t018:`Public`,k447jj019:`Private`,k3n9aij020:`Updated`,k3n5hak021:`Created`,k3n5sd7022:`Deleted`,kxa6cxx023:`Published: readable and usable by everyone, only you can modify`,k1xxabaf024:`Switched to private`},ctpl:{visPublic:`Public`,visPrivate:`Private`,newTplTitle:`New channel template`,leadTplLabel:`Lead template (cloned as the channel lead when instantiated)`,kefkfnl030:`Instantiated: {p0} ({p1} members); mount it from the workspace`,kbInstTitle:`Instantiate {p0}`,kbOption:`Knowledge base integration (rag-bridge)`,kbHint:`When on, this channel loads the KB plugin: search scene data-analysis & physics knowledge before optimizing, and the lead sinks experience back after the loop closes; the lead can also grant its own bound nodes to workers via team_grant_nodes.`,kbOn:`On`,kbOff:`Off`,k1f54iqd029:`Template Hub`,k117jag9001:`Delete template? (Instantiated Channels are not affected)`,knjomku002:`Create Channel from template (members auto-assembled)`,k1f55q76003:`Template Name`,k40gkk004:`Description`,k1ju32o7005:`Select lead template (optional)`,k5uq1js006:`Worker member templates (cloned one by one on instantiation)`,kqmdkc9007:`Select member templates (optional)`,k1q87yho008:`Scenario prompt (injected into all members)`,kk4u5cr009:`Working directory (empty = default at instantiation)`,k3lrqn0010:`Visibility`,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.`,krpx6qa012:`Back to Workspace`,k1efixrj013:`New Template`,ka1gpdj014:`Admin view: templates and creators of all users are visible`,k3rx4ps015:`Empty team`,k3xakp016:`Delete`,k3mr1fo017:`Instantiate`,k19fglby018:`Create the first Channel template`,k17jfge3019:`Private (visible only to you)`,k191u0u5020:`Public (instantiable by everyone, only you can modify)`,k3x23c021:`Built-in`,k3wv1t022:`Public`,k447jj023:`Private`,k1i0ji0y024:`Template name is required`,kyppebc025:`Template created; instantiate and mount it with one click from the session bar on the left of the workspace`,kkziya3026:`Published: instantiable by everyone`,k1xxabaf027:`Switched to private`,k1oxfuqj028:`Template deleted`},daq:{unitPh:`e.g. %RH`,k1bge46t118:`Create Node`,k1b3dtga119:`Save Template`,k3v957u120:`{p0} running: {p1} · {p2}`,k1x7jnru121:`{p0} standby: nodes on this line start acquiring after the run begins`,k1hrrqa1122:`Active recipe monitor window {p0} ~ {p1}{p2}`,k11wnl1y123:`Line running: {p0} · {p1}`,k9vnp9h124:`Global {p0}ms`,kyuadl0125:`Missing required parameter: {p0}`,k2hbo3c126:`{p0} copy`,k15lvw0o105:`running — current product: `,k3zkt2106:`Start Run`,k12uge2o107:`not running — nodes on this line pause acquisition`,k69vag8108:`· tagged`,k1cg78i8109:`Open Line Management to Start`,kzg9805110:`Reconnect Infrastructure`,knxpdpt111:`Resume All Acquisition`,k1fstglk112:`Test Connection`,k7pxjxo113:`Create & Acquire (after test passes)`,k3xakp114:`Delete`,k1efixrj115:`New Template`,k1b39281116:`Save Changes`,k3ozyqz117:`Not Running`,k3ktxbr085:`Line “`,k400lb086:`Batch`,k3xagp087:`Published`,k427eu088:`Consumed`,k3w8go089:`Dropped`,k3wusd090:`Stored`,k48oi091:`decimal places`,k4118o092:`Samples`,k1ukoy0v093:`Go to Line Management`,k1ld43ur094:`Reconnecting…`,kpui00095:`Pause All Acquisition`,k3vp67i096:`Running`,kr45rk9097:` · Custom`,kjbqphp098:`(stack not installed)`,k1fsh720099:`Testing…`,k1bg4759100:`Creating…`,k1hhheu3101:`Confirm delete`,k1iiph0s102:`Edit Template`,k1b38d59103:`Saving…`,k1l3pt51104:`Recipe Violation`,k1e8lcoo001:`Global default when a node has no per-node WS publish interval; 0 = publish every frame with the sampling cadence`,k1yztsu4002:`Published to queue by producer`,ko09iha003:`Consumed from queue by consumer`,kj1jbmw004:`Samples stored in the time-series DB`,kgpxzy3005:`Defaults to auto-incremented name per template`,k5opd2t006:`e.g. Oven Humidity`,kk8o4tl007:`Defaults to the name`,kzn3l7l008:`Defaults to auto-generated`,khb8mru009:`Run state of the node's line: idle/unassigned nodes do not sample`,k3q23v3010:`Line assignment (nodes without a line do not sample)`,k1emg364011:`DAQ Console`,k1wmg2bz012:`Full pipeline: acquisition → queue (MQTT) → time-series DB (Timescale) → WS real-time publish; node entities and parameters are authoritative on the server.`,k19onw5w013:`No line is running — data acquisition is recipe-driven: please `,k1b2tk5c014:`Line Operations`,k1u9wnlg015:`start a line in Line Operations and mount nodes to it`,k1ifahxj016:`Default Interval`,k1if98n0017:`Default Publish`,k1f5cv0s018:`Template Manager`,k1fn0ukb019:`Add Node`,k1b2o3b6020:`Line Status`,k3zgkk021:`Standby`,k1el12b1022:`No lines yet`,k8jxxe8023:`Create one in Line Operations`,k19rioqa024:`Add DAQ Node`,k1p5c1un025:`Mock Simulator`,k1cbcp3o026:`Real Device`,k1fsgerc027:`Signal template (range/unit domain)`,k1ce2k1y028:`Node name (optional)`,k13mfsfc029:`Sampling interval ms (empty = follow global)`,k1kt87rx030:`Protocol`,k3xdnn031:`Cancel`,k11mv96s032:`Signal Template Manager`,ktji4ky033:`Custom Templates`,k45eb0034:`Edit`,kztvzbo035:`No custom templates yet — copy from the built-in ones below, or create directly in the form below.`,k3xhia036:`Name`,k3x4ef037:`Unit`,k1l477m0038:`Channel Semantics`,k1ayxrqb039:`Tag Code`,k1l9jv5m040:`Range Min`,k1l9jv4p041:`Range Max`,k3mxmcx042:`Decimals`,k3xx56043:`Icon`,k1f4eknv044:`Mock Base`,kytd15s045:`Center value of mock sampling; defaults to range midpoint`,k1f4ifpo046:`Mock Amplitude`,ksp2aji047:`Mock fluctuation amplitude; defaults to 4% of range`,k48p40048:`Reset`,k1w8s84s049:`Built-in Templates (read-only, copyable)`,k3y694050:`Copy`,k3wj9n051:`Line`,k1bkl9uj052:`All Lines`,k3ootr6053:`Unassigned`,k1optt001:`Agent optimization log`,k1optf001:`All lines`,k1optf002:`Refresh`,k1optf004:`All recipes`,k1flttpl010:`Template`,k1flttpl011:`All templates`,k1fltdrv012:`Driver`,k1fltdrv013:`All drivers`,k1flttim014:`Filter by last sample time`,k1flttim015:`Data Age`,k1flttim016:`Any age`,k1timlv017:`Last 5 min`,k1timhr018:`Last hour`,k1timdy019:`Last 24 h`,k1timld020:`Older than 24 h`,k1timnv021:`Never reported`,k1fltsrc022:`Search`,k1fltsph023:`Node name / ID…`,k1opte001:`No optimization records yet — registered automatically after agent dcw_control`,k1opte002:`No DAQ data in window (line not running or node unbound)`,k1opta001:`Series`,k1opta002:`Rollback`,k1opto001:`Open: awaiting agent dcw_judge`,k1optw001:`Aggregating window…`,k1optw002:`breach`,k1optst001:`Open`,k1optst002:`Judged · keep`,k1optst003:`Rolled back`,k1optst004:`Superseded`,k1optst005:`Superseded by manual`,k1optst006:`Closed on line stop`,k1optst007:`Failed`,k1optst008:`Judged · rollback not executed`,k1trnd001:`Trend`,k1trnd002:`Live trend: last 60 readings, dashed = limits`,k1wrn001:`above max`,k1wrn002:`below min`,k1wrn003:`recipe window`,k1wrn004:`safe range`,k1i8rtqt054:`Bound Device`,k1bkw4m2055:`All Devices`,k3own4q056:`Unbound`,k2bindtip137:`Bind device (same source as Digital Twin / node inspector, persisted server-side)`,k1b2tkyv057:`Line Run`,k3x4t1058:`All`,k1nxm3p7059:`Acquiring (running)`,k1ulx34e060:`Acquisition off (standby/unassigned)`,k1iwdfef061:`Node State`,k41k5c062:`OK`,k49z8v063:`Warn`,k3xmid064:`Alarm`,k44c2n065:`Offline`,k1fygck2066:`Clear Filters`,k45uio067:`Node`,k42w8s068:`State`,k3mv305069:`Live Value`,k1l6g2ga070:`Sampling`,k3zi0nf071:`WS Publish`,k4a0la072:`Driver`,k40aa6073:`Actions`,k3o3jg2074:`Console`,kvhjyc3075:`No DAQ nodes yet — drag from the left rail “DAQ Nodes” in the digital twin space (the server creates node entities).`,k1w20qew076:`No matching nodes — nothing matches the current filters; adjust or clear them.`,k1bhhheq077:`Go to Sign-in`,k41mvv078:`Every frame`,k422b8079:`Temperature`,k3x6ff080:`Pressure`,k3z9xc081:`Tension`,k3subk4082:`Encoder`,k47atw083:`Vision`,kz7yhbj084:`Electric/Gateway`,k1prodrc128:`Product / Recipe`,k1staled129:`Line is running but no fresh samples (> {p0}s) — node offline or driver fault`,k1disabl130:`Disabled`,k1runtipc131:`Run state of the line this node belongs to: sampling only while running`,k1prdrtip132:`Product & recipe of the active run on this line`,k1tsdbtip133:`Time-series backend: switch via DAQ_TSDB_URL (TimescaleDB compatible)`,k1queuet134:`Message queue: switch via DAQ_MQTT_URL (standard MQTT broker)`,k1droptip135:`Queue drops (produced-consumed)`,k1eg1000a136:`e.g. 1000`,k1needtst137:`Real-device scenario requires a passing connection test`,k1plndrv138:`Reserved protocol: awaiting real channel support`,k1idlehin139:`Line not running: this node starts sampling after the line starts`,k1gateoff140:`DAQ gateway is paused — all nodes stop sampling`,k1alarm141:`Unacked alarms`,k1ack142:`Ack`,k1esc143:`Escalated {p0} times (notification re-sent)`,k1acked144:`Alarm acknowledged`,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`,k1nodestop146:`Stop collection`,k1nodestart147:`Start collection`,k1evt001:`No unacknowledged alarms`,k1evt002:`Live events`,k1evt003:`Log management`,k1evt004:`No events yet — waiting for activity…`},daqDetail:{bucket1s:`1s bucket`,bucket5s:`5s bucket`,bucket15s:`15s bucket (default)`,bucket30s:`30s bucket`,bucket60s:`1min bucket`,calDecoderTip:`Collection calibration decoder: physical = scale × PLC raw + offset`,calScaleTip:`decode slope (≠0)`,calOffsetTip:`decode intercept`,kfrm0001:`Image frame gallery`,kfrm0002:`Profile frames`,kfrm0003:`No frames yet (data flows only while the line is running)`,kfrm0004:`Points`,kfrm0005:`Metrics`,kfrm0006:`Click to view full image`,k9vnp9h053:`Global {p0}ms`,k3n5aaj045:`Disabled`,k1cgi8fy046:`Per-node Interval`,k3oktae047:`No Calibration`,k1cggz5f048:`Per-node Publish`,k3n42dj049:`Fixed interval`,ksn9cgo050:`Write parameters to the sampler`,k1fstglk051:`Test Connection`,k452a8052:`Bind`,k1fx2vik032:`Live Value ·`,k1p9gioa033:`Driver Connection ·`,k1i535i5034:`TSDB history (`,kz8zr9v035:`(reserved)`,k3own4q036:`Unbound`,k3w3j8f037:`Acquiring`,k1k2ueyq038:`Follow global interval`,k1eru4r1039:`Calibration on`,k1k2t5o7040:`Follow global publish`,k41mvv041:`Every frame`,k1as0g50042:`Writing…`,k1fsh720043:`Testing…`,k479eh044:`Unbind`,k1emg364001:`DAQ Console`,k1bhhheq002:`Go to Sign-in`,k4a0la003:`Driver`,k3xg3w004:`Interval`,k3w6td005:`Apply`,k3x5tpx006:`Warn Band`,k1hjj0jf007:`Hard Range`,k1i8rtqt008:`Bound Device`,kd9d69j009:`Acquisition Params (server-controlled)`,k1iw7tbf010:`Node Enable`,k12k23od011:`Line (no sampling without a line)`,k3ootr6012:`Unassigned`,k1l6smxo013:`Sampling Driver`,k3x4ef014:`Unit`,k3mxmcx015:`Decimals`,k1l9jv5m016:`Range Min`,k1md63hm017:`Warn Low`,k1md63gp018:`Warn High`,k1l9jv4p019:`Range Max`,k1ie6qju020:`Device Binding (end-to-end)`,kjobzu3021:`Select a device twin…`,k3x1jg022:`Refresh`,k40vsf023:`Time`,k48v5024:`Value`,k4bza025:`State`,k41k5c026:`OK`,k49z8v027:`Warn`,k3xmid028:`Alarm`,k44c2n029:`Offline`,k1m1zwux030:`Every frame (with sampling)`,k3lha20031:`Raw points`,k1rfrshint001:`Trend auto-pull interval (ms); empty or 0 = follow server default (daq.query.displayIntervalMs), min {p0}ms`},logs:{title:`Line Log`,sub:`Line-scoped operations only: writes, recipes, rollbacks, line/DAQ/alarm events and manual entries; sign-ins and system administration are excluded. Query by line, recipe and time`,live:`Live`,liveHint:`Receives line operation events over WS (summary rendering only; full details in the table below)`,all:`All`,fLine:`Line`,fProduct:`Product`,fSource:`Source`,fKind:`Category`,fFrom:`From`,fTo:`To`,fKeyword:`Keyword`,fKeywordPh:`Search summary/action/actor…`,invalidTime:`Invalid time value: please re-select the From/To time`,invalidRange:`Invalid time range: From must not be later than To`,mLineRequired:`Select a production line first: the line log only accepts line-scoped records`,query:`Query`,reset:`Reset`,thTime:`Time`,thActor:`Actor`,thSummary:`Event summary`,thScope:`Scope (line/product/recipe)`,thDetail:`Details`,expand:`Details`,fold:`Collapse`,loading:`Querying…`,empty:`No matching log entries`,mSummary:`Entry content`,mSummaryPh:`e.g. replaced the heater of oven No.3 and extended holding by 10 min for the current batch`,mSubmit:`Record`,mOk:`Recorded`,manual:`Manual entry`,noDetail:`None`,totalCount:`{n} records`,mDetail:`Detail (optional)`,mDetailPh:`Context, handling notes, related ticket… (stored in the log detail)`,mLevel:`Severity`,quickErrHint:`Show error-level events only (system faults / failed writes); count = live track; click again to clear`,quickWarnHint:`Show warn-level events only (alarms / unverified); count = live track; click again to clear`,export:`Export CSV`,exportHint:`Export the current query snapshot as CSV (incident report / ticket attachment)`,copyDetail:`Copy details`,copied:`Copied`,src:{user:`User`,system:`System`},kind:{write:`Apply`,manual:`Manual`,alarm:`Alarm`,line:`Line`,recipe:`Recipe`,rollback:`Rollback`,daq:`DAQ`,system:`System`}},operations:{title:`Line Operations`,sub:`One live stream for every production-line action: DCW writes, recipe batches, DAQ alarms, modeling, rollbacks and agent activity`,live:`LIVE`,liveHint:`Line operations arrive over WS and are prepended to the stream in real time`,all:`All`,fLine:`Line`,fSource:`Source`,fKind:`Category`,fKeyword:`Keyword`,fKeywordPh:`Search node / action / summary…`,query:`Query`,reset:`Reset`,loading:`Loading…`,empty:`No operations yet — adjust filters or wait for new line events`,noDetail:`No structured detail`,totalCount:`{n} records`,actorAgent:`Agent`,actorUser:`User`,actorSystem:`System`,cat:{write:`Write`,daq:`DAQ`,aml:`Modeling`,recipe:`Recipe`,rollback:`Rollback`,alarm:`Alarm`,line:`Line`,manual:`Manual`,system:`System`}},analysis:{title:`Data Analysis`,sub:`Durable ledger of Agent Channel analysis outputs: key conclusions, recipe linkage, time windows and full reports, queryable anytime`,live:`LIVE`,liveHint:`Analysis ledger events (analysis_save) arrive over WS and refresh the table automatically`,all:`All`,fLine:`Line`,fCat:`Category`,fWindow:`Analyzed at`,fKeyword:`Keyword`,fKeywordPh:`Search title / key conclusion…`,query:`Query`,reset:`Reset`,loading:`Loading…`,empty:`No analysis reports yet — agents save them via the analysis_save tool inside channels`,noDetail:`No extra output`,expand:`Detail`,fold:`Fold`,count:`{p0} reports`,ledgerHint:`Ledger · append-only (agents cannot modify or delete)`,remove:`Delete`,removeConfirm:`Delete analysis report "{p0}"? This cannot be undone`,cancel:`Cancel`,editTitle:`Revise analysis report`,save:`Save revision`,kRecipe:`Recipe ID`,kVersion:`Recipe version`,kWindowFrom:`Data window from`,kWindowTo:`Data window to`,conclusionsHint:`one per line`,kRevised:`Revised`,thTime:`Analyzed At`,thLine:`Line`,thTitle:`Title`,thRecipe:`Recipe`,thSummary:`Key Conclusion`,thSource:`Source`,thDetail:`Detail`,kId:`Report ID`,kWindow:`Data Window`,kSources:`Evidence Sources`,kConclusions:`Conclusions`,kReport:`Full Report`,kMetrics:`Metrics`,kContext:`Line Context Snapshot`,cat:{quality:`Quality`,oee:`OEE`,alarm:`Alarm`,trend:`Trend`,optimization:`Optimization`,general:`General`},win:{h1:`Last hour`,h24:`Last 24 hours`,d7:`Last 7 days`,d30:`Last 30 days`,all:`All time`}},dcw:{codePh:`e.g. MOTOR · I`,unitPh:`e.g. A`,k1qidbpy061:`Default {p0} (by creation order)`,k1gp649b062:`{p0} ({p1} nodes / {p2} products / {p3} recipes will be unmounted)`,k7xq2mfd063:`Delete line "{p0}"?`,k5tq8wc071:`Edit line`,k9m2vxa072:`Also delete its nodes, products & recipes (irreversible)`,k4r7nbd073:`Line "{p0}" and its {p1} nodes · {p2} products · {p3} recipes will be permanently deleted`,k3t616a058:`Custom`,k149r6y7059:`○ Standby`,k1elczt9060:`No recipes yet`,k3ootr6049:`Unassigned`,k3wj9n050:`Line`,k11nndsp051:`Control Template ·`,k3zz0f052:`Tagged`,k19dlbli053:`Color follows the theme`,k3x23c054:`Built-in`,k1eox1el055:`● Running`,k18moyq1056:`Acquisition starts once a recipe is selected`,kutxzsz057:`Select recipe…`,k1i5a9vw001:`There are nodes/products not assigned to any line; adopt them from the corresponding line detail page`,k1yfm3gv002:`Delete line (nodes/products/recipes are unmounted)`,k1dhaby4003:`Pick a recipe to start`,kru37i3004:`e.g. Line 1 / Casting Line A`,k1f2nwsp005:`Line purpose notes`,k1tooi3o006:`e.g. Motor Current Setpoint`,k698qz0007:`e.g. Motor Current`,k1qdnfzc008:`e.g. Motor current setpoint: rising current means growing load… adjust in small steps and watch temperature rise`,k1b2tk5c009:`Line Operations`,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;
8
8
  control templates only define parameter classes and process ranges — nodes are what actually write to PLCs.`,k45uio011:`Node`,k3waz1012:`Product`,k48grv013:`Recipe`,k149b4vg014:`▶ Start Run`,k148rclf015:`■ Stop`,k1fwqw5g016:`Line Management →`,k1efe391017:`New Line`,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.`,filterSearchPh:`Search line names…`,filterEmpty:`No lines match — adjust the filter or search`,k1b2ioko019:`Line Name`,k24dxcd020:`Description (optional)`,k1x7nubr021:`Halo color (glow color of this line's nodes in the digital twin scene)`,k3xdnn022:`Cancel`,k3wzi2023:`Create`,k11oadmx024:`Control Template Manager`,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.`,k3xakp026:`Delete`,k169eb4s027:`New Custom Template`,k3xhia028:`Name`,k1bqk219029:`Parameter Semantics`,k1ayxrqb030:`Tag Code`,k3x4ef031:`Unit`,k1l9jv5m032:`Range Min`,k1l9jv4p033:`Range Max`,k3mxmcx034:`Decimals`,k3xx56035:`Icon`,k1b6qorg036:`Process semantics (physical meaning / line impact / adjustment rules — injected into the context of agents bound to this template)`,k3x62t037:`Close`,k1bg9nga038:`Create Template`,k188cswn039:`Pick a recipe for this line first (the recipe must bind control-node parameters)`,k422b8040:`Temperature`,k3x6ff041:`Pressure`,k3z9xc042:`Tension`,kjb3vhs043:`Encoder/Speed`,k47atw044:`Vision`,k48c07045:`General`,k6ugbw2046:`Template name is required`,k13awowo047:`Process range (min/max) is required`,k1bphrb3048:`Delete failed`},dcwDetail:{stAck:`ACKed`,startNeedRecipe:`A recipe must be set before starting`,startTip:`Push recipe parameters and start tagged data collection`,codePh:`e.g. MOTOR · I`,unitPh:`e.g. A`,mockPlc:`Mock PLC simulator`,linearCalOpt:`Linear calibration: PLC = (physical − offset) / scale`,calScaleTip:`decoder slope (≠0): physical = scale × PLC + offset; inverted automatically on write`,calOffsetTip:`decoder intercept`,pauseCtrlTip:`Pause control on this node: writes will be rejected`,enableCtrlTip:`Enable control on this node: writes allowed again`,pausedTip:`Node paused: enable control before setting`,writeTip:`Write setpoint`,noDaqTip:`No DAQ nodes on this line`,manualTag:`Manual`,staleDeleted:`deleted`,staleDisabled:`disabled`,staleUnbound:`unbound`,staleDropped:`Removed {p0} stale param(s) (node deleted); re-add with a live node if needed`,histBtn:`History`,dispatchHistBtn:`Dispatch history`,dispatchHistTitle:`Recipe dispatch history`,dispatchHistSub:`Line-domain records for this recipe only (create/update/trial/dispatch/ACK/rollback/line start); same source as the Agent recipe_log tool.`,dispatchHistEmpty:`No dispatch/change records yet.`,dispatchHistTime:`Time`,dispatchHistAction:`Action`,dispatchHistSource:`Source / actor`,dispatchHistSummary:`Summary`,closeBtn:`Close`,histTitle:`Recipe Version History`,histLoading:`Loading…`,histEmpty:`No version history yet (param edits are recorded automatically)`,histCurrent:`Current`,histInit:`Initial version`,histAdded:`added`,histNoChange:`No param changes`,revertTo:`Revert to`,revertOk:`Reverted; new version v{p0} created`,revertReasonUi:`UI revert to history version`,srcUser:`User`,srcSystem:`System`,k9r7d4e016:`Poll read (ms)`,k9r7d4e017:`Default 5000ms; 0 = manual read only`,writeLockLabel:`Write hold (s)`,writeLockHint:`Default 30s; 0 = unlocked; locks after each write to prevent oscillation`,k9r7d4e018:`PLC reading`,k9r7d4e019:`No reading yet (poll read off or driver lacks read support)`,k9r7d4e020:`Read current PLC value`,k9r7d4e021:`Read`,k9r7d4e022:`Manual`,k9r7d4e023:`Default 5s`,k1lzfi4g180:`({p0} params)`,k6vgks7181:`Batch {p0}`,k1alcbyu182:`Node {p0} write OK: {p1}`,kl1e9x9183:`Node {p0} write failed: {p1}`,k8x1un1184:`Missing required driver parameter: {p0}`,ky4e1tr185:`Template “{p0}” created and pre-selected in the Add Control Node wizard`,k17jteb9186:`Line started: {p0} · {p1} (batch {p2})`,kzl49pd187:`Line stopped ({p0}); window data is kept for query`,ks7szkt188:`Recipe dispatch partially failed: {p0}`,k3zkt2166:`Start Run`,k1g3lh2v167:`Dispatch finished: `,k69vag8168:`· tagged`,knxgni9169:`Resume All Control`,k1b2hxmx170:`Line Stopped`,k1bg9nga171:`Create Template`,k1fstglk172:`Test Connection`,k1bge46t173:`Create Node`,k3w6td174:`Apply`,kxwei5175:`View Batch Data`,k1efq0r9176:`New Recipe`,k1b3kwg0177:`Save Recipe`,k416ek178:`Query`,k1bg4kn6179:`Create Product`,k1l0iow1137:`Operations`,k3wtib138:`Writes`,k3yit7139:`Failed`,k3km252140:`product)`,k3x23c141:`Built-in`,k3t616a142:`Custom`,k1av3wgs143:`Products /`,k1l3hrvp144:`Recipe batches`,k11lq94k145:`Batch Data ·`,k134rw3b146:`Recipe min (optional, ≥`,khrv911147:`Recipe max (optional, ≤`,kw7ym9b148:`Write history (last`,k1bqci06149:`params OK`,k40bfz150:`entries)`,k1b2snna151:`Line Detail`,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.`,kplrsg153:`Pause All Control`,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`,k1pxrhx0154:`Line running`,k1hicmch155:`(no parameters, cannot start)`,k1bg4759156:`Creating…`,kr45rk9157:` · Custom`,k1fsh720158:`Testing…`,k3o3ib3159:`Controlled`,k3zul4160:`Manual`,k1br0ij9161:`Loading…`,k3vpfg9162:`In progress`,k1iiwk0i163:`Edit Recipe`,k1b38d59164:`Saving…`,k1eyx09r165:`Querying…`,kd3ygmn001:`Total Writes`,kd3znl0002:`Total Failed Writes`,kc4ixly003:`Create a custom control-node template: physical meaning / unit / safe process range`,k1tooi3o004:`e.g. Motor Current Setpoint`,k698qz0005:`e.g. Motor Current`,kxz9174006:`Safe Min`,kxz9167007:`Safe Max`,k1qdnfzc008:`e.g. Motor current setpoint: rising current means growing load… adjust in small steps and watch temperature rise`,kgpxzy3009:`Defaults to auto-incremented name per template`,kb1srz0010:`e.g. 5000 (hold-write heartbeat)`,k12bnyt9011:`e.g. Oven 2 temperature: tracks zone delta with Oven 1, step ≤1℃`,k1bpfjgx012:`Delete Product`,k1l11api013:`Alarms when DAQ goes out of bounds within the active batch`,k12c11vm014:`e.g. 0.8mm Optical Film`,k1hxx8hy015:`Product/process notes (optional)`,k5vew9z016:`within node global range`,kzoh5pr017:`hard write constraint while running`,k19337yp018:`The line does not exist or has been deleted.`,kllwu1c019:`← Back to Line Overview`,k1972dx9020:`Add Control Template`,k1976uns021:`Add Control Node`,kaebkky022:`Unassigned Assets · Adopt into This Line`,kyjp9fg023:`+ Adopt`,k19pof14024:`Pick a product and recipe to start; every acquired sample will be tagged with product/recipe/batch while running`,k3waz1025:`Product`,kuisodh026:`Select product…`,k48grv027:`Recipe`,kutxzsz028:`Select recipe…`,kfb8vml029:`▶ Start Acquisition`,k1xyhd2y030:`■ Stop Acquisition`,k1x4vam0031:`Add Control Node Template`,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.`,k169eb4s033:`New Custom Template`,k1f55q76034:`Template Name`,k1bqk219035:`Parameter Semantics`,k1ayxrqb036:`Tag Code`,k3x4ef037:`Unit`,k1l9jv5m038:`Range Min`,k1l9jv4p039:`Range Max`,k3mxmcx040:`Decimals`,k3xx56041:`Icon`,knjmyfr042:`Process semantics (physical meaning / line impact / adjustment rules — injected into the context of agents bound to nodes of this template)`,k3x62t043:`Close`,kyj8fen044:`Real PLC Write`,k1ejzwqp045:`Control template (meaning / unit / safe range)`,k1ce2k1y046:`Node name (optional)`,k1vyb8im047:`Hold-write interval ms (empty = manual only)`,kiune1f048:`Write calibration encode (physical value → PLC setpoint)`,kkzy0k049:`None (write engineering value directly)`,k1kt87rx050:`Protocol`,k1hgizn7051:`Node process semantics (optional, overrides template — injected into the context of agents bound to this node)`,k3xdnn052:`Cancel`,k1e2dtkt053:`Control Node`,k403cy054:`Control`,k42w8s055:`State`,k1deqh0d056:`Current Setpoint`,k1k79ec9057:`Setpoint`,k1dexou6058:`Process Range`,k1b1nnaa059:`Hold Interval`,k1i8rtqt060:`Bound Device`,k40aa6061:`Actions`,k3n93ed062:`Paused`,k3xakp063:`Delete`,k1wtecyw064:`No control nodes yet — click “Add Control Node” (top right) to create one from a process template.`,k1j8w3hd065:`Products & Recipes`,k1akm6dc066:`+ New Recipe`,k1aka0ki067:`+ New Product`,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,
9
9
  and every acquired sample is tagged with product/recipe/batch.`,k3x4t1069:`All`,knov3zg070:`No products yet — click “New Product” to create one (recipes require a product; data is isolated per product).`,k1497qvr071:`▶ Apply`,k45eb0072:`Edit`,keko1xy073:`No recipes yet — click “New Recipe” to define a product's process parameter set.`,k1rjer8d074:`Production Batches (data isolation windows)`,k400lb075:`Batch`,k4497j076:`Window`,k1bqhtmu077:`Param Results`,k1dzwrdp078:`Batch Data`,k1blr7y7079:`Close Batch`,k1me41w8080:`DAQ Channel Summary (within the batch window, product-isolated)`,k48hde081:`Channel`,k45uio082:`Node`,k40t11083:`Latest`,k3xuaw084:`Avg`,k4118o085:`Samples`,kd457ry086:`No DAQ samples in the window`,k12b7cxs087:`Write History (within the batch window)`,k3xbjr088:`Parameter`,k3ncbsh089:`Engineering`,k3lh3mz090:`Raw`,k454pg091:`Result`,k40ieu092:`At`,knzcp8i093:`No write records in the window`,k1dw4fzf094:`Product`,k1l3f8so095:`Recipe Name`,k40gkk096:`Description`,ka1kfgh097:`Process parameters (bound to this line's control nodes: nodes are the real PLC writers, templates only classify)`,k3renp2098:`Target`,k44idg099:`Remove`,k1broh7h100:`+ Add Parameter`,k1h5gues101:`DAQ monitor windows (while the batch is active, DAQ live values outside the window turn the row into an alarm)`,k1empnnb102:`DAQ Node`,kqm08ap103:`Monitor Min (optional)`,kpypf8g104:`Monitor Max (optional)`,kv1de1p105:`+ Add Monitor Window`,k1us3jse106:`Line Data Query (product · recipe · parameter · time · bucket)`,k1bkl1jx107:`All Products`,k1bkx7cr108:`All Recipes`,k1demcae109:`Parameter`,k1bkx7ya110:`All Channels`,k1bkul3k111:`All Nodes`,kx2ojn0112:`Last (min)`,kjvnvn4113:`Bucket ms (0 = raw)`,k42kcu114:`Points`,k49ujb115:`First`,k40pvw116:`Last`,k3xho3117:`Span`,k1efduyf118:`New Product`,k1avjrl6119:`Product Name`,k1bhhheq120:`Go to Sign-in`,k1ledgt001:`Parameter ledger`,k1ledgs001:`Pick a node…`,k1ledgv001:`Current setpoint`,k1ledgv002:`Recipe target`,k1ledgv003:`Last good`,k1ledga001:`Refresh`,k1ledga002:`Step rollback`,k1ledgh001:`Setpoint history (journal)`,k1ledgr001:`Optimization records`,k3own4q121:`Unbound`,k3zgkk122:`Standby`,k3l3h80123:`Writing`,k40reu124:`Error`,k44c2n125:`Offline`,k422b8126:`Temperature`,k3x6ff127:`Pressure`,k3z9xc128:`Tension`,kjb3vhs129:`Encoder/Speed`,k47atw130:`Vision`,k48c07131:`General`,k6ugbw2132:`Template name is required`,kx3pg59133:`Unit is required (e.g. ℃ / A)`,k13awowo134:`Process range (min/max) is required`,k1b6qe0r135:`A recipe is required before starting: pick a product and a recipe (the recipe must contain process parameters)`,kszv5sq136:`No matching data in the window (check product/recipe/time range; only samples from running lines carry the line identity)`,stepLimitLabel:`Exploration per-step limit`,stepLimitUnit:`engineering units`,stepLimitPlaceholder:`Leave empty for the node default (2% of range)`,stepLimitHint:`Maximum change per agent write; exploration writes are rejected when no finite value is set.`,thStepLimit:`Step limit`,stepInputTitle:`Live control of the per-step max change; leave empty to disable exploration writes`,stepCurrent:`Current Δ≤{p0}`,stepUnset:`unset`,recipeStepLimitLabel:`Recipe per-step limit Δ≤`,recipeStepLimitPlaceholder:`Follow node default`,drvBadgeMes:`MES edge`,drvBadgeNoConv:`No protocol conversion`,mesTestBtn:`Test read`,mesTesting:`Reading…`,mesNotReady:`Server endpoint not ready yet`,mesHookTestBtn:`Test hook`,mesHookTesting:`Hook testing…`,mesHookNotReady:`Hook endpoint not ready`,mesArtifactsBtn:`Artifacts`,mesArtifactsTitle:`MES artifacts`,mesArtifactsRefresh:`Refresh`,mesArtifactsEmpty:`No artifacts yet (generated by dataHook/image sinks after fetch)`,mesArtifactsOpen:`Open`,mesArtifactsBinary:`Non-image file, open via button below`,recipeGateTitle:`Recipe action approvals (write/dispatch/trial/rollback)`,recipeGateCommentPh:`Decision comment (refusal text flows back to agent)`,recipeGateApprove:`Approve`,recipeGateReject:`Reject`,accessTitle:`Second-level operation auth (agent recipe ops)`,accessRequire:`Require auth`,accessHint:` (only selected agents may operate; default = any bound agent)`,accessLoading:`Loading channel members…`,accessNoAgents:`No channel members found`,accessEmptyWarn:`Warning: auth enabled with no agents selected = nobody can operate (fail-closed)`,apTitle:`Setpoint write approvals`,apRule:`Approve = apply now; Reject = agent keeps the current value; Timeout = not approved`,apInitiator:`by`,apTimeout:`to timeout (defaults to reject)`,apApprove:`Approve`,apReject:`Reject`,apCommentPh:`Feedback (optional: approve = note appended to the receipt; reject = returned verbatim to the agent)`},expConfirm:{title:`Local adjustment confirmations`,rule:`Confirm = accept as a line-side local trim and feed it into experience mining; Ignore = skip`,confirm:`Confirm`,ignore:`Ignore`,badgeTip:`{p0} local adjustment(s) awaiting confirmation`,decideFail:`Action failed, please retry`},autoMode:{confirmTitle:`Switch to automatic control`,affected:`Affected nodes: {p0}`,exempt:`In auto mode, agent setpoint trims on this node no longer require per-write approval (range, step-size and 60s rate limits still apply)`,guard:`Whole-recipe dispatch (trial/apply/proposals) always requires human approval in every mode — auto never exempts it`,revert:`Switch back to manual on the same toggle at any time to restore per-write approval instantly`,dual:`Caution: if an AML optimization loop is also driving this line, avoid dual-writer conflicts`,confirmBtn:`I understand the risk — switch to auto`,cancelBtn:`Cancel`,switchFail:`Switch failed, please retry`},recipePropose:{title:`Whole-recipe proposal approval`,rule:`Approving one package dispatches it atomically; reject = agent keeps current values; timeout = not approved`,packagesLabel:`{p0} candidate package(s) · {p1} parameter change(s)`,tab:`Package {p0}`,paramCol:`Parameter`,changeCol:`Change`,preflightCol:`Preflight`,basisCol:`Rationale (from agent)`,expRefCol:`Experience ref`,preflightOk:`Pass`,preflightFail:`Dropped`,lowConfidence:`Insufficient evidence — observe only recommended (approval still possible)`,amlActive:`AML optimization loop activity detected — consider deferring dispatch`,approveBtn:`Approve this package`,rejectBtn:`Reject`,commentPh:`Feedback (optional: approve = note appended to the receipt; reject = returned verbatim to the agent)`,needChoice:`Select a package to approve first`,decideFail:`Action failed, please retry`},teams:{selectChannel:`Select a target channel`,toPrivate:`Click to make private`,toPublic:`Click to make public (deployable by everyone)`,deployToChannel:`Deploy to channel…`,joinOk:`Join`,deployOk:`Deploy`,targetChannelLabel:`Target channel (must have no lead conflict)`,k6ljhyv029:`Add Member · {p0}`,k1c0o6oe030:`Deploy · {p0}`,kh90glh031:`Deployed {p0} instances to the Channel`,k3svl8y028:`Groups`,kxheuf1001:`Public groups: deployable by everyone; only the owner can modify`,k1efmuyx002:`New Group`,k3xhia003:`Name`,k40gkk004:`Description`,k3lrqn0005:`Visibility`,k41ds5006:`Template`,k479op007:`Role`,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).`,krpx6qa009:`Back to Workspace`,k1bpgi8h010:`Admin view: groups and creators of all users are visible`,k1bpojhf011:`Delete Group`,k48ja7012:`Deploy`,krt2oib013:`+ Add Member Template`,k6cbbgf014:`Create the first group`,k17jfge3015:`Private (visible only to you)`,k1h2lq0o016:`Public (deployable by everyone, only you can modify)`,keowzlv017:`lead (at most one)`,k3x23c018:`Built-in`,k3wv1t019:`Public`,k447jj020:`Private`,k1bvcdo2021:`Name is required`,k3n5hak022:`Created`,k1globhp023:`Published: deployable by everyone, only you can modify`,k1xxabaf024:`Switched to private`,k1kw4rtj025:`Select Template`,k3n5hzw026:`Added`,k1oxjrxx027:`Group deleted`,k1plugon040:`Plugin switches · {p0}`,k1plugon041:`Plugins to enable for this team; propagated to the target Channel on deploy`,k1plugon042:`Checked plugins take effect for members after the team deploys to a Channel; tools of unchecked plugins stay hidden from that team`,k1plugon043:`Team plugin switches saved`,k1plugon044:`Not explicitly configured — all enabled by default; toggling any switch applies per-row`,k1plugon045:`Explicitly configured (per the switches below)`,k1plugon046:`No registered plugins`,k1plugon047:`Plugin switches…`},tokens:{maskBackTip:`Plain text shown; click the eye to mask again`,maskPreview:`Masked preview`,maskBack:`Mask again`,revealPlain:`Reveal plain text`,copied:`Copied`,copyPlain:`Copy plain text`,revokeCurrentWarn:`Revoking the current session token will log you out`,revokeWarn:`Revocation takes effect immediately`,createdTitle:`Token created`,hidePlain:`Hide plain text`,showPlain:`Show plain text`,copy:`Copy`,usage:`Usage: Authorization: Bearer <token>`,renameTitle:`Rename token`,k1upppaw026:`Each token can be revoked independently; plaintext is archived server-side and can be viewed/copied anytime`,k3p0p44027:`Tags:`,kj3mklm028:`(unnamed)`,k1hlqknl001:`Tags, e.g. CI / test scripts / backup`,k41416002:`Tags`,k1k6z0r8003:`Sign in first`,k1gjnree004:`Tokens are private to a signed-in user; sign in to manage them.`,k1bhhheq005:`Go to Sign-in`,khcxmsc006:`Current session token is marked`,k1defr98007:`Current session`,kyelqk1008:`Hidden (legacy)`,k3vrpcs009:`Rename`,k3xmrz010:`Revoke`,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.`,k1s5f5zd012:`Saved, close`,k19jvk54013:`Failed to load token list`,k169z26g014:`Tags cannot be empty`,k3n9aij015:`Updated`,k3n64kh016:`Revoked`,kjtcn2h017:`Copy failed; please select and copy manually`,kkpgzo8018:`This token was created by a legacy version (hash only); plaintext is unavailable. Consider revoking and re-issuing`,k1gj9ls019:`Failed to reveal plaintext`,kr5ovor020:`This token was created by a legacy version (hash only); plaintext cannot be copied. Consider revoking and re-issuing`,kubtby5021:`Failed to fetch plaintext`,kgkfcr0022:`Copy failed; reveal the plaintext first and copy manually`,k1bg95gk023:`Created`,k1euotul024:`Last Used`,k40aa6025:`Actions`},town:{k3n4mae005:`Workshop`,k1wm8wtr001:`No Channels mounted yet`,k47e4s002:`Please go to `,k17rerba003:`create/mount a channel, then come back to the AgentWorkShop twin space.`,k1uc5mup004:`Connecting to the AgentWorkShop twin space (subscribing to the live event stream)…`},wsHome:{mcTitle:`Set a new password`,mcSub:`The password for {p0} was issued by an administrator; set your own before entering the workbench.`,mcCurrent:`Current password (temporary password from admin)`,mcNew:`New password`,mcConfirm:`Repeat new password`,mcPolicyHint:`At least 6 chars with letters and digits; this prompt disappears after the change.`,mcCta:`Set password and continue`,mcFillBoth:`Enter current and new password`,mcMismatch:`New passwords do not match`,mcPolicy:`At least 6 chars, must contain letters and digits`,mcSameAsOld:`New password must differ from the current one`,mcDone:`Password updated; welcome to AgentWorkShop`,adminCreated:`Admin account created: {p0} is now signed in`,nameRequired:`Workspace name is required`,setupTitle:`Create admin account`,setupSub:`The system has no users yet: the first registered account becomes the admin and enters the system automatically.`,normalSub:`A global user system manages identity; each user can hold multiple API tokens. Managing the API requires a user token (Authorization: Bearer).`,tabLogin:`Account sign-in`,tabRegAdmin:`Register admin`,tabRegUser:`Register new user`,setupCta:`Create admin & enter`,tabToken:`Token sign-in`,delWs:`Delete workspace`,emptyTitle:`Start with one line, one agent`,emptySub:`A workspace holds channels and tasks — create your first one and your agent team goes live.`,emptyCta:`Create your first workspace`,createEnterOk:`Create & enter`,k1mbatbh030:`Registered: {p0}; sign-in token saved`,kwixbdl031:`Signed in: {p0}`,newWs:`New Workspace`,newWsHint:`Start from a template or a blank workspace`,k3wcox029:`Task`,k3n4m5c025:`Workspace`,ke16e53026:`'s resources (user-isolated; persisted server-side)`,k41ds5027:`Template`,k1ggoa45028:`Members / Busy`,k48h2c001:`Email or username`,k3yvgs002:`Password`,kwgbai9003:`Username (unique)`,kizjkbo004:`Email (unique)`,kh3cqfn005:`Password (≥6 chars with letters and digits)`,k15qunld006:`Paste user token`,ksmpk8l007:`Workspace name, e.g. Payment Gateway Refactor`,kr0vzqu008:`Open Workshop`,k43kol009:`Sign In`,k17x74cj010:`Each sign-in issues a session token that can be revoked individually on the Token page.`,k1so6a0v011:`Register & Sign In`,k1r0a4u3012:`You are signed in automatically after registration; you can issue more tokens yourself.`,k3pa5h4013:`Templates`,k3svl8y014:`Groups`,k484e7015:`Sign Out`,k1bst7s9016:`Syncing…`,k1ylgrbc017:`No Channel mounted (mount from the left rail after entering)`,kr1uwwi018:`Open Console`,k1vnhyks019:`Username is required`,k8ieqzj020:`Email is required`,ksx73ra021:`Password must be at least 6 characters (letters and digits)`,k3ngm6p022:`Signed out`,k1br33vc023:`Load failed`,k3n5sd7024:`Deleted`},wsView:{inspector:`Inspector`,unknownWs:`Unknown workspace`,channelListTitle:`Channel session list`,a2aTitle:`A2A RPC/SSE debugger`,loadingWs:`Loading workspace…`,kqwckjr001:`Hotkeys 1-5 switch views`,k1tsy2e4002:`Collapse/expand session bar`,k1tx0ppf003:`Collapse/expand inspector`,k1cvg8sb004:`Command palette (⌘K)`,k1fkfvra005:`Drag to resize session bar`,kwqb0st006:`Drag to resize inspector`,klzbtyp007:`Mount or select one from the left`,k3zaj4008:`Start`,k1us0cxy009:`The session list supports creating Channels, instantiating from templates, and hot-editing scenario and working directory`,k3otu32010:`Timeline`,k3ko7a8011:`Tasks`,k3xbmo012:`Screens`,k1cz0pbw013:`Twin Space`},meta:{agents:`Agent Templates`,teams:`Agent Team Groups`,ctpl:`Channel Template Hub`},a2aRpcDebugger:{methodSse:`tasks/sendSubscribe (SSE stream)`,methodToken:`message/send (token required)`,badParams:`params is not valid JSON`,title:`A2A RPC / SSE Debugger`,tokenPh:`Bearer token (required for message/send; leave empty for anonymous)`,outputEmpty:`(Output; sendSubscribe renders SSE events as they arrive)`,k6hcbxi001:`Drag to resize drawer`,k34cz76002:`Target agent instance`,k1bqe2pj003:`Parameter Template`,k405w8004:`Run`,kq00d3v005:`Debug: please echo this message`,k1kgwib8006:`Debug message`,k1e1hi4u007:`▶ Stream ended`,k1vryfv008:`Select target agent`},agentInspectorDrawer:{tabStream:`Independent stream`,tabMemory:`Memory`,grpWorking:`Running`,grpQueued:`Queued`,grpDone:`Done`,swOn:`On`,swOff:`Off`,okRemove:`Remove`,prioImmediate:`Immediate`,prioQueued:`Queued`,k3ypnl022:`Done`,k16t80ax023:`Focus main timeline`,k6hcbxi001:`Drag to resize drawer`,k1ofh789002:`Remove this member? Its queued tasks will be re-dispatched to remaining members`,kwsotdg003:`Inject a message into this agent…`,k1frr9es004:`No events for this agent yet (generated after connection)`,k1axbijb005:`Task Queue`,kas9m5q006:`Members:`,k1hrtylo007:`Remove Member`,k1jxt8vh008:`Request ack`,k3xkc7009:`Send`,k498bf010:`Queue`,kk653nv011:`Running: “`,k43rxk012:`empty)`,k1bs9x43013:`Unfocus`,kgjqkq9014:`Re-enable (accept new tasks)`,kpkjhbz015:`Disable (pause accepting new tasks)`,k3n5z7y016:`Enabled`,k1dst50d017:`Disabled (its queued tasks are reclaimed by the scheduler)`,kane5dq018:`Member removed`,k1p055kl019:`Focus cancelled`,ky2fhkf020:`Main timeline focused on this agent`,k1y2jrsr021:`Message injected`},agentLanesView:{cloneFail:`Template clone failed{p0}`,leadExistsShort:` (a lead already exists; cannot add another lead)`,deployFail:`Team deploy failed{p0}`,leadExistsChannel:` (channel already has a lead; team lead members conflict — remove the existing lead or pick a team without one)`,hitlStopTitle:`HITL-stop this agent runtime`,namePh:`e.g. db-migrator / test-writer`,ompFull:`omp (full LLM agent)`,tplCloneLabel:`Select an agent template (clones name/harness/config as an independent instance)`,tplDisabled:` · disabled`,withLead:`, with lead`,roleHarnessLabel:`Role / harness`,syspromptLabel:`Scene system prompt (systemPromptPrefix)`,k1wn2vmt036:`omp process PID {p0} · harness session state`,k1l029kf037:`Interrupt member {p0}'s runtime? Running tasks will be aborted; the member is kept`,kt3n27m038:`Remove member {p0}? Its queued tasks will be reclaimed automatically`,k7xt1y6039:`Drag to resize the {p0} lane`,k1qcmxyu040:`{p0} ({p1} members{p2})`,k19j5rho041:`Edit member {p0}`,k21xjz2044:`Member {p0} updated (runtime reloads with the new prompt)`,k3jmrw1045:`Update failed: {p0}`,k1g5ykr3046:`Member {p0} added (waiting for the agent.member event to converge)`,k1j97j74047:`Add member failed: {p0}`,kk3uwzo048:`Cloned template member {p0} as {p1} (waiting for event convergence)`,k1gslqf9050:`Group {p0} deployed ({p1} members, waiting for event convergence)`,k1n3o03a052:`Member {p0} removed`,k13dsp10053:`Remove member failed: {p0}`,kcpbv47054:`Interrupted the runtime of member {p0}`,k139ec5j055:`Interrupt failed: {p0}`,k107s4am001:`Scenario system prompt injected`,k1884q17002:`Open this member's native omp terminal (live TUI + HITL controls: inject conversation / abort / answer asks)`,k1pgd3tf003:`Edit member info / scenario prompt`,k17kcn55004:`Add Team Member`,k3nufdm005:`Member Name`,k479op006:`Role`,kaogfp007:`System prompt prefix (optional, defines member specialty)`,kbqn6w5008:`e.g. You are a database migration expert focused on schema changes and backfills…`,kung925009:`Select template…`,k1bl78fu010:`Clone Role`,k1vhvbz7011:`System prompt override (optional; empty = template preset)`,k7ft6ig012:`Empty = use the template's config.systemPromptPrefix; fill in to override with this scenario prompt`,k29om9b013:`Select an AgentTeam (batch-clone all members)`,kur1otz014:`Select group…`,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`,k3y5ja016:`Team`,k3ll6sa017:` members`,k1fmutgo018:`Add Member`,k1woev5v019:`Syncing member snapshots…`,k122h4pc020:`No members in this team yet`,k7cr2h8021:`Click “Add Member” (top right) to create from scratch, or deploy from templates / groups in one click`,k3xycu022:`Scenario`,k4588s023:`Terminal`,k1b7cwvy024:`Create from Scratch`,k1ndey1w025:`Clone from Template`,k1l5qyux026:`Deploy Group`,kqg6783027:`mock (test script)`,k1weovo028:`lead (at most one; rejected if a lead already exists)`,knybb6r029:`Template library empty? Create reusable agent templates (omp/mock/claude + system prompt) on the Templates page first.`,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).`,k1rw1rd2031:`After saving, the member runtime reloads; the next task/schedule uses the new prompt`,ky6jqt4032:`Member name is required`,kfvflle033:`user edits member info / scenario prompt`,k13xo8sz034:`Select an agent template to clone`,k1tjd5ab035:`Select an AgentTeam to deploy`,supervisionWatchdogTitle:`Watchdog observation threshold triggered ({p0}); this is an observation signal, not a cancel`,supervisionRunningTitle:`Supervision round in progress (attempt={p0}, tick={p1})`,supervisionDecisionText:`Decision {p0}`,supervisionDecisionTitle:`Last lead decision: {p0} ({p1})`},artifactCard:{empty:`(empty)`,k3yu62003:`Expand`,k3y694004:`Copy`,k40p82001:`Collapse`,k3n6o1m002:`Copied`},assetLibrary:{badModelFile:`Only .glb/.gltf/.obj/.fbx model files are supported`,katn7lo015:`Drag onto the twin scene to create a device instance · {p0}`,k8nv3or016:`Uploaded → {p0}`,k1hhga4h014:`Confirm Upload`,k7la4x5001:`Device Model Library`,kulif5b002:`Drag into the twin space to create an instance`,k5hg6jq003:`Release to select a model`,k3xdnn004:`Cancel`,k1ar7n8i005:`Uploading…`,k1n32zs0006:`Device · drag & drop`,k1kq2tmi007:`Loading…`,k15527e1008:`No device models yet; drop a .glb file to upload`,k1xz5wvk009:`3D preview not supported yet)`,k1iiort6010:`Drop or pick a model file`,k498l011:`Del`,kcjqcaw012:`Drop or pick a device model file first (.glb/.gltf/.obj/.fbx)`,k8n918k013:`Model file deleted`},ontology:{kicker:`Industrial Semantic Assets`,title:`Ontology Model`,subtitle:`Build and govern a control-oriented ontology: entities, relations, constraint rules and semantic bindings; the compiler emits traceable bounds, rate limits and runtime guards, published as immutable versions.`,refresh:`Refresh`,newDraft:`New draft`,pickDraft:`Select draft`,validate:`Validate`,compile:`Compile preview`,publish:`Publish version`,publishHint:`Publish is admin-only; unapproved rules cannot enter control constraints`,loadFail:`Failed to load ontology list`,loadDraftFail:`Failed to load draft`,loadVersionsFail:`Failed to load versions`,draftCreated:`Draft {id} created`,draftCreateFail:`Failed to create draft`,validateOk:`Validation passed`,validateFail:`Validation failed`,autofix:`Auto-fix`,autofixDone:`Auto-fixed {n} item(s) (persisted, revision advanced)`,autofixNothing:`No safely auto-fixable issues`,autofixPartial:`Auto-fixable items are done; missing evidence / platform binding drift still needs a human or the agent`,autofixFail:`Auto-fix failed`,autofixLog:`Auto-fixed {n} item(s) this round`,compileOk:`Compiled: {status}`,compileFail:`Compile failed`,publishOk:`Published v{version}`,publishFail:`Publish failed`,ruleTransitionOk:`Rule {rule} → {to}`,ruleTransitionFail:`Rule transition failed`,approvalRequested:`Approval {id} created (needs a second person)`,approvalDecided:`Approval granted`,approvalFail:`Approval flow failed`,compareFail:`Version compare failed`,retireOk:`Retired v{version}`,retireFail:`Retire failed`,compileEmpty:`Click “Compile preview” in the toolbar first`,global:`Global ontology`,empty:{ontologies:` No ontologies yet: create a draft and publish the first version.`,issues:` No validation issues in the current draft.`},noEvidence:`no evidence`,from:`From version`,to:`To version`,compare:`Compare`,tab:{overview:`Overview`,graph:`Entities & relations`,rules:`Constraint rules`,bindings:`Semantic bindings`,versions:`Versions & release`,compile:`Compile preview`},section:{ontologies:`Ontologies`,issues:`Validation issues`,entities:`Entities`,relations:`Relations`,bindingFailures:`Binding failures`,artifacts:`Compiled artifacts`,ruleTrace:`Rule trace`},stat:{ontologies:`Ontologies`,drafts:`Drafts`,entities:`Entities`,rules:`Rules`,bindings:`Bindings`},col:{kind:`Kind`,name:`Name`,role:`Role`,unit:`Unit`,predicate:`Predicate`,evidenceTier:`Evidence tier`,ruleKind:`Rule kind`,level:`Level`,status:`Status`,evidence:`Evidence`,action:`Action`,entity:`Entity`,target:`Target channel`,direction:`Direction`,unitPair:`Units (declared→target)`,version:`Version`,line:`Line`,parent:`Parent`,createdAt:`Created at`,decision:`Decision`,code:`Decision code`,message:`Message`},action:{review:`Submit review`,validate:`Mark validated`,approve:`Request approval`,retire:`Retire`},prompt:{ontologyId:`Ontology id (e.g. ont-pva-line01)`,lineId:`Anchor line id (optional)`,approvalId:`Approval id (empty = request only)`},diff:{entities:`Entities`,relations:`Relations`,rules:`Rules`,bindings:`Bindings`,rulesChanged:`Changed rules`},graph:{viewGraph:`Graph`,viewTable:`Table`,baseline:`baseline`,hint:`Click a node for details and neighbours; dashed = candidate influence, solid = observed / validated`,searchEntity:`Search entity key or name`,largeGraph:`{n} entities — focus mode: search one entity to inspect its neighbourhood`,neighbors:`Neighbourhood (edges and nodes)`,direct:`Direct`,indirect:`Indirect (2 hops)`,loading:`Loading neighbourhood…`,truncated:`Neighbours exceeded the display limit and were truncated (reduce hops or filter kinds)`,noNeighbors:`This entity has no relations`,loadNeighborsFail:`Failed to load neighbourhood`,aria:`Ontology node-relation graph`,lane:{mv:`Manipulated MV`,cv:`Controlled/quality CV`,structural:`State & structure`},tier:{candidate:`Candidate influence`,observed:`Observed correlation`,validated:`Validated control`}},drawer:{bindings:`Semantic bindings`,noBindings:`This entity has no platform binding`}},toolsPage:{title:`Tools`,subtitle:`A unified catalog of built-in and plugin-registered tools: source, roles, availability, parameter schema, and which Channels disabled them.`,refresh:`Refresh`,sync:`Re-sync`,total:`Total`,builtin:`Built-in`,plugin:`Plugin`,available:`Available`,disabledByChannels:`Channel disablements`,lastSync:`Last sync`,search:`Search tool name / description / plugin`,sourceAll:`All sources`,sourceBuiltin:`Built-in`,sourcePlugin:`Plugin`,availableOnly:`Available only`,name:`Tool`,source:`Source`,pluginCol:`Plugin`,roles:`Roles`,availableCol:`Available`,yes:`Yes`,no:`No`,channels:`Disabled in`,firstSeen:`First seen`,updated:`Definition updated`,parameters:`Parameter schema`,disabledChannels:`Channels disabling this tool`,noDisabledChannels:`No Channel disables this tool (or all use the default all-enabled policy).`,loadFail:`Failed to load tool catalog`,syncDone:`Sync complete: {total} total, {plugin} plugin tools, {unavailable} newly unavailable`,syncFail:`Failed to sync tool catalog`,pluginAll:`All plugins`},channelTools:{sectionTitle:`Tools (per-Channel selection)`,description:`Tools excluded by hard rules cannot be enabled here. Saved choices apply row by row and running agents refresh their tool list.`,refresh:`Refresh`,modeAll:`All eligible tools (default)`,modeSelected:`Only checked tools`,modeAllHint:`Newly installed tools are enabled by default; uncheck to disable.`,modeSelectedHint:`Only checked tools are injected; new tools stay disabled until selected.`,stats:`{total} total · effective lead {lead} / worker {worker} · disabled {disabled}`,searchPlaceholder:`Search tool name / description / plugin`,sourceAll:`All sources`,sourceBuiltin:`Built-in`,sourcePlugin:`Plugin`,filterAll:`All states`,filterEffective:`Effective`,filterDisabled:`Disabled here`,filterBlocked:`Blocked by hard rule`,selectAll:`Select all`,selectNone:`Select none`,dirty:`Unsaved tool selection`,coreWarning:`Core collaboration tools are disabled; task progress/completion receipts may not be collected.`,leadOnly:`lead only`,unavailable:`Not registered`,noTools:`No matching tools`,undo:`Undo`,resetConfirm:`Clear this Channel tool policy and restore all eligible tools?`,reset:`Reset to default`,save:`Save tool selection`,saved:`Tool selection saved; running agents will refresh their tool list`,resetDone:`Restored default (all eligible tools enabled)`,resetFail:`Failed to reset tool policy`,saveFail:`Failed to save tool selection`,loadFail:`Failed to load tools`,reasonRole:`Role not allowed`,reasonProfile:`Channel profile not open`,reasonWrite:`Write guard`,reasonPlugin:`Plugin disabled`,reasonChannelPlugin:`Plugin disabled for this Channel`},channelSessionList:{schedTagTip:`Bound to {p0} enabled schedule(s)`,nameRequired:`Channel name is required`,defaultSuffix:` (default)`,tplCenterTitle:`Channel template center`,newChannelTitle:`New channel`,unmountTitle:`Remove from workspace`,mountFromTpl:`Mount from channel template`,pfxBuiltin:`Built-in · `,pfxPublic:`Public · `,nameLabel:`Channel name`,wsPh1:`Empty = data/workspaces/<channelId>`,llmDefaultLabel:`Default model (optional; falls back to each harness default)`,catalogLoading:`Loading catalog…`,effortPh:`effort (optional)`,variantPh:`variant (optional)`,builtinTag:`Built-in`,saveTplOk:`Save as template`,kjmldih035:`Settings {p0}`,k1yurooi036:`Move out {p0}`,kfe4pzq037:`Working directory: {p0} (click to copy path)`,k1oes209038:`{p0}{p1} ({p2} members)`,k1pmemvt039:`Channel Settings · {p0}`,kud74vg040:`Copied: {p0}`,k1x2th9e041:`Create failed: {p0}`,kai50qc042:`Instantiated from template and mounted ({p0} members)`,k2hfym5043:`{p0} template`,k3wcox034:`Task`,kne35ug001:`Channel Settings (scenario / working dir / save as template)`,k1qjyl6l002:`Create & Mount Channel`,k40gkk003:`Description`,k1wj4f38004:`Scenario prompt (injected to all)`,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`,kmgv4h5006:`Working directory (team workspace mount point)`,k1i8q46x007:`Scenario prompt (after editing, member runtimes are recycled and re-assembled with the new scenario)`,bindLineLabel:`Bind line (read-only grant)`,bindLinePlaceholder:`Pick a line to bind (clear to unbind)`,bindLineHint:`Bound members can read the line ops logs, recipe history and live status without node bindings; writes still require node authorization.`,execModeLabel:`Execution mode (three tiers for line work)`,execModeObserve:`Observe (read-only analysis)`,execModeObserveHint:`Agents can only collect data, query ledgers and analyze; control/recipe/line start-stop tools are all removed — safe read-only`,execModeManual:`Manual (per-action approval)`,execModeManualHint:`Every dispatch waits for human confirmation and the agent must state its rationale; best for commissioning and high-risk conditions`,execModeAuto:`Auto (bounded automatic)`,execModeAutoHint:`No per-action approval, but four-layer limits / step caps / run gate still apply, and automatic dispatches must carry a rationale (hypothesis)`,execModeLineGate:`Line master switch`,execModeBindings:`Bindings`,execModeSuppressed:`Suppressed by the line master switch: while the line is manual, auto-tier dispatches still wait for per-action approval`,execModeEscalateHint:`This switch loosens approval/write capability and needs confirmation`,execModeConfirmBtn:`Switch anyway`,execModeSaved:`Execution mode switched`,ku3ugac008:`The working-scenario spec shared by all agents of this channel…`,k67dzev009:`Working directory (agents' cwd; omp subprocesses restart with the new directory after editing)`,k6kpql010:`Save as Channel Template`,k1f55q76011:`Template Name`,k3lrqn0012:`Visibility`,kbdp56k013:`Select team working directory`,kkv789s014:`No Channel mounted yet (instantiate from a template below in one click)`,k1bst7s9015:`Syncing…`,k18ppu31016:`Template = scenario + working directory + team; instantiating assembles the members`,k1u3zsr5017:`Injection order: scenario spec → member specialty → memory → system handbook → tasks; the settings dialog hot-updates (member runtimes recycle and re-assemble automatically)`,k3pz0ma018:`Browse…`,kucq30k019:`This directory is injected as the working cwd of every agent harness during tasks (omp subprocess working directory); created automatically if missing`,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`,k1x6kznr021:`Capture the current scenario/working directory/team combination as a reusable template`,k1otvrfv022:`Private (only you)`,k1cc399s023:`Public (instantiable by everyone)`,kl9btf7024:`Members keep template references when present, otherwise inline snapshots are saved; scenario and working directory are copied as-is`,k1ggoa45025:`Members / Busy`,krij3gg026:`Copy failed (browser clipboard not authorized)`,k1bg6shc027:`Create failed`,kn89jvs028:`Channel created (empty team; enter and assemble lead / workers via “Add Member”)`,k97xi7u029:`Template mount failed`,k1hgfvdc030:`Move-out failed`,kvsxlu6031:`Updated; member runtimes will be recycled and re-assembled with the new settings`,k1i0ji0y032:`Template name is required`,kjpguxw033:`Captured as a Channel template (scenario/directory/team snapshot)`,k1plugon044:`Plugin switches saved; tool lists of running agents in this Channel refresh immediately`,k1pluglbl045:`Plugins (per-Channel switches; disabled tools are hidden from and rejected for this team's agents)`,k1plugsrc046:`Not explicitly configured (all enabled by default); applies per-row after first toggle`},clusterArtifact:{view:`View`,kyh87lw001:`Deliverable body matches the reply above`,k49les002:`Hide`},chat:{title:`Group chat`,messageCount:`{p0} msgs`,refreshTitle:`Refresh members and settings`,refresh:`Refresh`,join:`Join channel`,notMemberHint:`Not a member — owner invitation required or the channel is private`,privateHint:`This channel is private or group chat is disabled — owner invitation required`,pendingHint:`Join request pending owner approval`,leave:`Leave channel`,leaveConfirm:`Leaving immediately revokes read, post, approval and notification catch-up access. Leave?`,ownerHint:`You are the owner (cannot leave; transfer ownership or delete the channel instead)`,approve:`Approve`,removeConfirm:`Removing this member immediately revokes their chat and approval access. Remove?`,rosterHidden:`Roster not visible (non-member)`,settingsTitle:`Chat settings`,visibilityLabel:`Visibility`,visibilityPrivate:`Private (members only)`,visibilityPublic:`Public (discoverable by signed-in users)`,joinPolicyLabel:`Join policy`,joinPolicyOwnerApprove:`Owner approval required`,joinPolicyOpen:`Open to join`,approvalPolicyLabel:`Approval policy`,approvalOwnerOnly:`Only the owner decides`,approvalAnyMember:`Any member decides`,chatEnabledLabel:`Enable group chat`,saveSettings:`Save settings`,statusActive:`Active`,statusPending:`Pending`,statusLeft:`Left`,statusRemoved:`Removed`,joinedPending:`Join request submitted — waiting for owner approval`,joinedOk:`Joined the channel`,errChatDisabled:`Group chat is disabled for this channel`,errChannelPrivate:`This channel is private — an owner invitation is required`,leftOk:`You have left the channel`,errOwnerCannotLeave:`The owner cannot leave — transfer ownership first`,approvedOk:`Join request approved`,removedOk:`Member removed`,settingsSaved:`Chat settings saved`,settingsConflict:`Channel settings were changed by someone else — refresh and retry`,avatarHuman:`U`,earlierMessage:`Earlier message`,backToLatest:`Back to latest`,latest:`Latest`,loading:`Loading…`,loadEarlier:`Load earlier messages`,emptyTitle:`No group chat messages yet`,emptyHint:`Plain messages only go to the group (0 agent runs); {'@'} mention an agent to trigger a run, or {'@'} a member for a direct notification.`,roleUser:`User`,roleSystem:`System`,replyTitle:`Reply quoting this message`,reply:`Reply`,mentionAgentTitle:`Click to open this agent`,mentionMemberTitle:`Mentioned member (does not trigger an agent)`,answeredFrom:`Answering {p0}`,askedBy:`· asked by {p0}`,deliveryPending:`Pending`,deliveryDelivered:`Delivered`,deliveryConsumed:`Consumed`,deliveryFailed:`Delivery failed`,deliveryCancelled:`Cancelled`,toolbarChatTitle:`Group chat: only explicit {'@'}agent mentions trigger a run`,reachAgentsTitle:`Only explicit {'@'}agent mentions trigger a run`,reachAgentsText:`{'@'}{p0} · will trigger {p1} agent run(s)`,reachNoAgentTitle:`No {'@'}agent: the message only goes to the group, no agent runs`,reachNoAgentText:`Group only · 0 agent runs`,notifyMembersSuffix:` will receive a direct notification`,mentionHint:`Type {'@'} to mention members · Enter to send`,cancelReply:`Cancel reply`,unresolvedMentions:`Unrecognized {'@'}: {p0} (not in this channel, not delivered)`,sentToChat:`Sent to the group · {p0} agent(s) received it`,sentToChatNoAgent:`Sent to the group (no {'@'}agent, no agent run)`,composerChatDisabled:`Group chat is disabled for this channel — ask the owner to enable it in the members panel and retry`,composerNotMember:`You are not a member of this channel yet — join via the members panel`,composerPlaceholder:`Send to group chat… {'@'} mention an agent (triggers a run) or a member (notification only)`,blockChatDisabled:`Group chat is disabled for this channel (the owner can enable it in the members panel)`,blockNotMember:`You are not a member yet — join via the members panel to post`},notifications:{bellTitle:`My notifications (mentions / agent replies / approvals)`,title:`My notifications`,unreadCount:`{p0} unread`,markAllRead:`Mark all read`,markReadFailed:`Failed to mark as read`,empty:`No notifications yet — mentions, agent replies and approval requests will show up here`,typeMention:`Mention`,typeAgentReply:`Agent reply`,typeHitlRequest:`Approval needed`,typeHitlResolved:`Approval result`,typeMember:`Membership change`},lineOps:{panelAria:`Line operations panel`,title:`Line Operations`,statDcw:`Write control`,statDaq:`Acquisition`,statAml:`Training`,statSafe:`Blocked`,filterAria:`Operations filter`,filterDaq:`Fetch`,filterTwin:`Twin`,filterSafety:`Safety`,empty:`Waiting for line operations events`,systemName:`System`},clusterError:{showAll:`All {p0}`,k40p82001:`Collapse`},clusterLife:{done:`Done`,k1xthifv001:`Non-status event`,k498bf002:`Queue`,k3pi5z1003:`Sub-state`},clusterMember:{showAll:`All {p0}`,byUser:`User`,vAdded:`Added member {p0}`,vUpdated:`Updated member {p0}`,vDisabled:`Disabled member {p0}`,vRemoved:`Removed member {p0}`,reason:`, reason: {p0}`,k40p82001:`Collapse`},clusterMemory:{showAll:`All {p0}`,k40p82001:`Collapse`},clusterOther:{showAll:`All {p0}`,k40p82001:`Collapse`},clusterRoute:{k12448jn010:`Human sender: {p0}`,khsfl59011:`View {p0}`,k94hqp2012:`Reply to message {p0}`,k13ewgum013:`All {p0}`,kfbpe32001:`The sender requests a reply: the receiver must ack with the execution result`,kyza1ya002:`(broadcast)`,k3wn89c003:`Reply required`,k40p82004:`Collapse`,k1ax44eo005:`Task Dispatch`,k1bsct42006:`Cancel Notice`,k1ax087h007:`Subtask Completed`,k1cxjc4m008:`Live Injection`,k1bka5dz009:`Collaboration Message`},clusterStatus:{empty:`(empty)`,k1fpy8te001:`Thinking / intermediate output`},clusterStream:{kpk9wff001:`Content merged into a later reply block (not rendered twice)`},clusterTask:{kfwdcd4008:`Status code {p0}`,k3n8lhn001:`Submitted`,k3n8mf0002:`Assigned`,k3o5tz9003:`Running`,k1hpsvap004:`Awaiting merge`,k10w8u89005:`Done · accepted`,k4u7566006:`Failed · awaiting re-dispatch`,k3n5vg5007:`Cancelled`},clusterTool:{expandAll:`Expand all {p0} calls`,k40p82001:`Collapse`,kindIndustrial:`Industrial`},commandPalette:{gotoTeams:`Go to: AgentTeam groups`,gotoSchedules:`Go to: Scheduled Task Hub`,viewLanes:`View: Agent lanes`,actA2a:`Action: A2A RPC/SSE debugger`,k1nz14ux013:`Switch Channel: {p0}`,k1d8xtez014:`Timeline filter: {p0}`,k1nn6i83001:`Type a command… (navigate/views/Channel/filter/actions)`,ktup4q4002:`No matching commands`,k1kvl0fa003:`Select /`,k1e3ualj004:`Run /`,k3x62t005:`Close`,kmxxk3u006:`Go: Workspace Overview`,k4s8e5q007:`Go: Agent Templates`,k1ezz11x008:`Go: Channel Template Hub`,k143z9bg009:`View: Timeline`,k13ztmim010:`View: Task Board`,k21cpnp011:`View: Multi-channel`,k1tm54il012:`Action: focus the task input`},composer:{loopIntervalRange:`Loop interval must be between 1 and 86400 seconds`,defaultLeadTitle:`No {'@'} target: tasks route through lead scheduling; {'@'} a member to send directly`,chipHint:`Type {'@'} to mention members · ⌘/Ctrl+Enter to send`,seconds:`s`,sendTitle:`Send (⌘/Ctrl+Enter)`,kl3604i033:`Direct to {'@'}{p0}`,k1cxjc4m034:`Live Injection`,k1d2idgj035:`Task dispatched → {'@'}{p0} ({p1})`,k1wk4bf036:`Message sent to {'@'}{p0} ({p1})`,k2z0fsx032:` · direct`,k1b38y2b001:`Unlimited`,k1jqqvhe002:`HITL live injection: when the target is running, inject into its current turn directly (visible in the same turn)`,k195594v003:`Request an ack from the recipient`,k1bxvc46004:`Send to…`,k3wcox005:`Task`,k17u6q77006:`First line = title`,k41ykc007:`Message`,k3x9n2008:`Instant`,k40g8m009:`Queued`,k3xv7u010:`Ack`,k49kr1011:`Interval`,k2z7yuw012:` · default`,k1bosqfv013:`Live inject`,kqdhdlq014:`Task title is required`,k1l36qf9015:`Max runs must be 1–10000; empty means unlimited`,k1bw65is016:`Select a target agent ({'@'} mention available)`,k1ww0ftm017:`Running · the task joins its mailbox queue`,k9eq10w018:`Target busy: the new task is delivered to its mailbox and handled FIFO after the current turn`,kbhz1rp019:`Stopped · the task is queued and runs after wake-up`,kophjf5020:`Target runtime stopped: the task is safely queued and processed after re-enabling`,k4qgtiw021:`Idle · the task starts a turn immediately`,kfmjwas022:`Target idle: processing starts right after delivery`,kwg68t0023:`Running · will be live-injected into the current turn (HITL)`,k7w1etd024:`Running · handled after the current turn`,k9m6p7u025:`Target busy: the instant message is injected into its running session (visible in the same turn)`,kj1ngpo026:`Stopped · the message is queued and delivered after wake-up`,kmf7lcc027:`Target runtime stopped: the message is safely queued and processed after re-enabling`,k1tet5df028:`Idle · a turn starts immediately to handle it`,kn600in029:`Target idle: processing starts right after delivery`,k2h5jwc030:`Type a task (first line = title, {'@'} to target a member, defaults to lead)… ⌘/Ctrl+Enter to submit`,k15mwzt7031:`Type a message/notice ({'@'} to target a member, defaults to lead)… ⌘/Ctrl+Enter to send`},deviceTwinPanel:{armDelete:`Click again to confirm deleting this device instance`,delDevice:`Delete this device instance`,winRecipe:`Process window of the running recipe`,winRange:`Node global range`,k9r7d4e030:`Current PLC reading (actual)`,kq2jssk008:`Recipe Process Window`,k1iwj796009:`Node Range`,kxddket010:`Exceeds {p0}: {p1}`,k1j04u8001:`Write setpoint (out-of-range values are rejected)`,k7k6evr002:`Device Console`,kkw7sn5003:`Loading device registers…`,k13y2qmg004:`Unregistered device`,kotf23l005:`Drag a device model into the twin scene to create a digital twin entity`,k48grv006:`Recipe`,k44653007:`Acknowledge`},eventBlock:{stBusy:`Running`,stStopped:`Stopped`,stIdle:`Idle`,copied:`Copied`,copyAll:`Copy full text`,kc918hn001:`A response or human acknowledgement is required`,kcugdph002:`Content duplicated from delta stream merged into one block`,kknq700003:`Quote into input`,k3wmcv4004:`Needs attention`,k3vp67i005:`Running`,k3xk4t006:`Deduped`},fileSelectorModal:{title:`Select working directory`,pickHere:`Select this directory`,pathPh:`Enter an absolute path to jump to (e.g. D:\\\\projects\\\\my-app)`,go:`Go`,kvwnnvn001:`.. (up one level)`,k268o2o002:`(no subdirectories; use “Select This Directory” to take the current location)`,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.`,kz99pgv004:`Failed to read directory`},inspectorPanel:{tabMembers:`Members`,tabTasks:`Tasks`,tabMemory:`Memory`,tabStats:`Stats`,k1tqitzl008:`Syncing members…`,kks0y5h009:`Syncing tasks…`,k12oip5c010:`Success {p0}% / avg {p1}s / failed {p2}`,k498bf001:`Queue`,k3ypnl002:`Done`,k3mp44x003:`Subtasks`,k3w9q9004:`Deliverables`,k1el4cgf005:`No members`,k1el0vqb006:`No tasks`,k1el1plr007:`No history`},laneBlocks:{k1br5dtr004:`Load earlier`,k1otw1r3001:`Syncing history…`,k1el0s5k002:`No events yet`,k1br0ij9003:`Loading…`},liveAgentBar:{kh66fan003:`View execution details of {p0}`,k1a39d92004:`{p0} more members are busy`,k3o5tz9005:`Running`,k68d2a2006:`Queue ×{p0}`,kr4bxgp001:`All members idle`,k1sf0ymy002:`Running ·`},memoryPanel:{tokenAuto:`Member token injected automatically`,tokenManual:`Auto-inject failed; enter the member token manually`,tokenPh:`Bearer token (member identity, manual fallback)`,searchPh:`Hybrid memory search (FTS + vector, same source as agent search_memory)…`,writeOk:`Write`,dedupLabel:`dedupKey (optional, idempotent)`,k1du3379001:`Member Identity`,k1bbee8p002:`Write Memory`,k419s4003:`Title`,k3wv1f004:`Content`,k3l2hmp005:`Shared`,k3rve9a006:`Private`,k1k7okbe007:`Memories`,k3x1jg008:`Refresh`,k3wtib009:`Writes`,kemjjvq010:`shared (public scope, searchable by everyone)`,k43rxk011:`empty)`,k3onh9w012:`you)`,k3zul4013:`Manual`,k186sctu014:`Read failed (check member identity)`,k1eh0fbo015:`Search requires a keyword and member identity`,k1dpj734016:`Title/content/member identity are required`,k3n5bat017:`Written`,k1bb5i1l018:`Write failed`},mentionHoverCard:{k1t89ag4001:`Click a mention to open execution details`,k3o5eky002:`Run:`},multiChannelView:{a2aMessage:`Text {p0}`,a2aArtifact:`Artifact {p0}`,k3wcox005:`Task`,kvfx0mh006:`Drag to resize the {p0} column`,kfvue7n009:`Memory {p0}`,khq39oe010:`Member {p0} {p1}`,k16wopr9011:`Error {p0}`,k1bfi9ms001:`Mount multiple Channels on the left to observe them side by side here`,k1bst7s9002:`Syncing…`,k4by6003:`Busy`,k1el0s5k004:`No events yet`},paneSplitter:{kejk1i9001:`Drag to resize panel`},statsPanel:{k1i88c0b001:`Buffered Events`,kfplawo002:`Throughput (10s)`,kzcd51003:`Event type mix (buffer window)`,k1pevwxl004:`(no events)`},taskBoardView:{emptySubNew:`Submit the first task in the Composer below (title on the first line; goal / loop / pipeline modes supported)`,emptySubSync:`Appears automatically once the task snapshot syncs`,k8m7hm6020:`Routing reason: {p0}`,k1f9c17l019:`Syncing`,k43pyn001:`Board`,k3x7l0002:`List`,k3wcox003:`Task`,k168w1ze004:`Tasks · drag a card to “Failed/Cancelled” to cancel, or back to “Pending” to retry`,k4b1x005:`Sub-`,k3vkhhj006:`No`,k13pad50007:`Drop here to run the action`,k3nf71d008:`Pending`,k3o5tz9009:`Running`,k1hpx9p1010:`Awaiting Summary`,k3n77g3011:`Completed`,k1veotws012:`Failed/Cancelled`,k189y4q013:`Task cancellation requested`,kv1l1j3014:`Task re-dispatched`,k1e7zwuc015:`Operation failed`,k1bs0t9b016:`Cancel Task`,k1lclwk6017:`Retry Dispatch`,k1dx9ysj018:`Open Details`},taskInspectorDrawer:{fallbackTitle:`Task details`,failReason:`Failure reason`,tabTimeline:`Status timeline`,kkp77tf015:`Deliverables ({p0})`,khnua62016:`Subtasks ({p0})`,kxj74io017:`Raw content ({p0} parts)`,k6hcbxi001:`Drag to resize drawer`,kns2a6x002:`Retry this task?`,k1a7jqb9003:`Cancel this task?`,k40gkk004:`Description`,k1lcgf2b005:`Retry Task`,k1bs0t9b006:`Cancel Task`,k1knph8c007:`Routing reason`,kr3vr2x008:`No events (occurred before connection)`,k1kmqn5u009:`(no subtasks)`,k3o48o4010:`Assignee:`,k485ye011:`Progress`,k401n2012:`none)`,k1xj595a013:`Cancellation requested`,ke7bh8u014:`Re-dispatched for execution`,timedOut:`Timed out`,remainingMinutes:`About {p0} min left`,deadlineAt:`Due {p0}`,cancelWithChildren:`This also stops {p0} active descendant tasks; completed results are kept. Continue?`,cancelConfirm:`Cancel this task?`,childrenStats:`Descendants {p0} · active {p1} · cancelled {p2}`},townView:{saveLayoutTip:`Write all devices' position/rotation/scale to the database`,readonlyTip:`Read-only in run mode`,daqPauseTip:`Pause all collection: stops sampling on all enabled nodes (per-node toggles stay independent)`,daqResumeTip:`Resume all collection: enabled nodes resume sampling (manually stopped nodes stay stopped)`,chPlaced:`Already placed; click to focus`,chDragHint:`Drag onto the scene to place`,viewTop:`Top · TOP`,viewFront:`Front · FRONT`,viewSide:`Side · SIDE`,deviceName:`Device name`,transformBlender:`Transform · BLENDER`,unboundTip:`No industrial node bound — after binding, agents can use the dcw_control / daq_query tools`,k1k6wg8j185:`Device Instance`,k44c2n186:`Offline`,k1w6xehu187:`{p0} · {p1} · auto-binds near a device, range {p2} ~ {p3} {p4}`,k1icez46188:`{p0} · {p1} · setpoint range {p2} ~ {p3} {p4} · auto-binds near a device`,k2bindr0007:`Bound to "{p0}" — click to re-bind to this device`,k2bindr0008:`Click to bind to this device`,k2bindr0009:`Not placed`,k2bindr0010:`No bindable nodes — use + on a template row in the left rail, or create in DAQ Center`,k2tplxp0001:`Click to expand/collapse "{p0}" nodes · {p1} · range {p2} ~ {p3} {p4}`,k2tplxp0002:`New "{p0}" node (drag into scene after creation)`,k2tplxp0003:`No nodes yet — use + on the template row, or add in DAQ Center`,k2tplxp0005:`Placed · click to locate & select; drag to re-place`,k2tplxp0006:`Drag onto the scene to place (auto-binds a device within ±95)`,k479op189:`Role`,kb251ac190:`Current recipe process window`,kcyn0191:`“{p0}” is already in the scene (one placement per channel)`,k1hmf2ut192:`Channel layout failed to load; retrying ({p0})`,kgz2nej193:`Re-skinned {p0} → {p1}`,k5e2460194:`Placed a resident at the drop point → {p0}`,k113fir9195:`{p0} {p1} out of range ({p2})`,k1knv89d196:`{p0} {p1} entered the warn band ({p2})`,ksjancw197:`{p0} {p1} back to normal`,kbuyve5198:`Beyond {p0} {p1} ~ {p2}`,k3n93ed175:`Paused`,k3os7i3176:`Not placed`,k1l147w1177:`Run Mode`,k1empnnb178:`DAQ Node`,k1iwj796179:`Node Range`,kh1586b180:`Enable this node`,k1bc6rqf181:`Global range`,k121kfef182:`Delete device instance`,k1f1xmci183:`Draw Range`,k3lmtk3184:`Syncing`,k1c9jyta001:`Scene Mode`,k1fsi3ir002:`Active Alarms`,k1demf38003:`Current User`,khzlyf5004:`Default sampling interval (nodes without their own interval follow this value)`,k18d6wnb005:`Locate selected device`,k1io51dn006:`Auto Orbit`,k1sgjlq8007:`Callout Visibility`,k3wuf0008:`Fullscreen`,k1k4j5i7009:`Camera Presets`,k1ejxiwp010:`Click to select this device`,k1d0rl5z011:`Drag to move panel`,kz71l1f012:`Distance within which the camera shows DAQ data cards for a device`,k1bsckft013:`Deselect`,kpwutri014:`Delete this DAQ node (server entity removed as well)`,k1k6vbaf015:`Device Name`,k1k73omv016:`Unbind`,k15t7izc017:`Write setpoint (out-of-window values are rejected by the recipe interlock)`,k13enoy3018:`Drag a box in the scene to set this character's movement range`,khqvwix019:`Auto = tool calls execute directly; manual = every write needs approval here`,keztqrn020:`Note (returned to the agent with the result)…`,k15avt7g021:`Re-fetch this character's conversation history`,k1bkswpz022:`Acknowledge All`,klfwiqg023:`RPG nav map · crosshair = camera · drag to pan · click to focus · wheel syncs zoom`,k1lap9bs024:`Reset View`,kav8a8k025:`Zoom out (minimap synced)`,k1u7uce9026:`Zoom in (minimap synced)`,k48dwh027:`Run`,k45eb0028:`Edit`,k1b3bk8t029:`Save Layout`,k1k75lzy030:`Device Assets`,k2gwyas031:`DAQ Nodes`,k3xg3w032:`Interval`,km7ayhi033:`Control Nodes (DCW)`,k1c9n911034:`Scene Manager`,k1b0z4vr035:`Line Twin Overview`,kv72860036:`3D View · Standard`,k1k6xemt037:`Devices`,k49lh038:``,k1l1a9t2039:`Running Devices`,k4dfq040:`items`,k1emsai1041:`DAQ Channels`,k4l1w042:``,kbrxdq1043:`Line Health`,k3rwxjc044:`Empty Scene`,k1sa1eaj045:`Drag entities from “Device Assets / DAQ Nodes” on the left to start building the digital twin space`,k1mehlxs046:`Channel Manager`,k489ka047:`Boundary`,k3zhy5048:`Shape`,k414bc049:`Ellipse`,k43u0g050:`Rectangle`,k1fbz4s1051:`Semi-axis X`,k1ighwgs052:`Semi-axis Z`,k40qab053:`Orientation`,kimxls2054:`Pick 3D character models for channel members (live re-skin, persisted)`,k419rbs055:`No members in this channel yet`,k1b3kp8f056:`Save Boundary`,k1hs45qg057:`Remove Channel`,k3x62t058:`Close`,kvjdqfg059:`Building the digital twin space…`,k1c9iq23060:`Scene Controls`,k1gizopz061:`Ambient Light`,k1bcpqto062:`Structure Opacity`,k1bztha1063:`Alarm Threshold`,ka4i1s9064:`Callout Distance`,k1idc6pa065:`Grid Snap`,k1i046wf066:`Emergency Stop`,k1kfoef9067:`Trend Analysis`,trendExpandAll:`Show all {p0} channels`,trendCollapse:`Collapse`,statesOffline:`Offline`,fpsCapLabel:`FPS Cap`,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)`,qualityLabel:`Quality`,qualityTip:`Auto = tier by measured fps; Normal/HD/Ultra = fixed render config (Ultra unlocks full WebGL quality)`,qualityAuto:`Auto`,qualityNormal:`Normal`,qualityHD:`HD`,qualityUltra:`Ultra`,secRender:`Render`,secEnv:`Environment`,secOps:`Operate`,hitlAutoReject:`to auto-reject (timeout default-deny)`,k1uht2uv068:`Drag DAQ nodes from the left; live trends plot here`,k1deqh0d069:`Current Setpoint`,k1i8rtqt070:`Bound Device`,kjo6ekr071:`Select a device instance…`,k3mv305072:`Live Value`,k1faqmjb073:`In range`,k1l6g2ga074:`Sampling`,k1or92b075:`ms (empty = follow global)`,k3x5tpx076:`Warn Band`,k1hjj0jf077:`Hard Range`,k48tki078:`Acquire`,k3xakp079:`Delete`,k1bpp30k080:`Delete Node`,kzk5dfx081:`Mode · Read-only`,k3xhia082:`Name`,k41amp083:`Model`,kgpuqhb084:`No DAQ channels · drop a DAQ node near this device to auto-bind`,kvm0lin085:`+ Add DAQ Channel`,k48grv086:`Recipe`,k10smf24087:`No control channels · drop a control node near this device to auto-bind`,kvk1vh5088:`+ Add Control Channel`,k1hg3167089:`Move G`,k1enlg7i090:`Rotate R`,k1ibjg3j091:`Scale S`,kt0i3y2092:`Mode · Read-only (switch to “Edit” to transform/delete)`,k1fix3hb093:`Activity Range`,k1p7nru2094:`Industrial Node Bindings`,k1io1ylm095:`Auto Execute`,k1duyr8q096:`Manual Approval`,k40ifw097:`Control`,k40rjw098:`DAQ`,klinercp820:`Line Recipes`,klinercp821:`Select a line…`,kurjldk099:`Select nodes…`,k45kpj100:`Auto`,k3zul4101:`Manual`,k452a8102:`Bind`,kslcozu103:`✓ Approve`,k14gu3rd104:`✕ Reject`,k41lwj105:`Axis X`,k45bta106:`Axis Z`,k1w45mzc107:`Clear range (fall back to channel)`,k14s8urm108:`Not set: members roam the channel boundary; click “Draw Range” to customize`,kkhlx5h109:`Loading conversation history…`,k3o5tz9110:`Running`,k1qkqld7111:`No conversation · this member hasn't spoken yet`,k17dkhgd112:`Device Run State`,k7h1nxo113:`Device Health`,k3vp67i114:`Running`,k3zcvb115:`Standby`,k3xmid116:`Alarm`,k1q247fn117:`Key Device Monitor`,k1cxf749118:`Live Alarms`,kjz544r119:`No alarms; lines are running smoothly`,k1cxdtq2120:`Live Events`,k2uk6ua121:`Event bus standing by`,kjug2jq122:`3D View Navigation`,k1i4g246123:`System`,k4a0jt124:`Channels`,k3xdvm125:`Members`,k47e16126:`Devices`,klyi8yg127:`Digital Twin Platform`,k1brss7t128:`Members ·`,k3ztf1129:`Members`,k1vtyk05130:`DAQ bindings ·`,ktzir2t131:`Control setpoints ·`,k1gk2jg7132:`Pending approvals ·`,k1ghjbfc133:`Sessions ·`,k768cnt134:`History ·`,k1cwz73k135:`Live ·`,k1gaaodq136:`crosshair = camera · zoom ×`,k1h5gxpf137:`Demo data is simulated signals`,k3vfpz5138:` channels`,k1pub99m139:`Line Manager`,k3w3j8f140:`Acquiring`,k3n94g3141:`Placed`,k3lkuz3142:`Loading`,k1iipfcs143:`Edit Mode`,k493s144:`Off`,k4bs5145:`On`,k1ekqxlt146:`Control Node`,kq2jssk147:`Recipe Process Window`,k3own4q148:`Unbound`,k479eh149:`Unbind`,k1wv0nyo150:`Disable this node`,k1l3m0hx151:`Recipe Window`,k1w10xa5152:`Click again to confirm deletion`,k3slzhc153:`Drawing`,k41k5c154:`OK`,k3oo50k155:`Unsaved`,k1b38d59156:`Saving…`,k3n51yk157:`Saved`,k1b3ayhc158:`Save failed`,k7rvbts159:`Drag a channel card onto the scene to place it (release to drop)`,k1v1icf6160:`Not set · follows the channel boundary`,kpplr16161:`Owning channel not found; cannot bind the model`,kt6xb5p162:`Mode is read-only · switch to “Edit” to modify the scene`,k3n4l5f163:`Working`,k3n58d1164:`Stopped`,k3w9q9165:`Deliverables`,k44xa7166:`System`,k3zbgf167:`Error`,k1ef3cls168:`DAQ Channels`,k15tn2fh169:`Select a device in the scene first`,k3ng94k170:`Pending`,k3mi2n0171:`Processing`,k3ncnxl172:`Acknowledged`,kb157zk173:`EMERGENCY STOP triggered — all lines halted`,k1s9qzr9174:`Emergency stop released — lines resumed`,kwrbtn180:`Write`,ksavetip181:`Save all device layout`,krotip182:`Read-only in run mode`},transcriptTimeline:{syncLag:`Connection lost; missed events will realign after reconnect`,none:`n/a`,k44c2n024:`Offline`,kglov3b025:`Data last updated: {p0}`,k3wwxl026:`just now`,k2gyl6l027:`{p0}s ago`,k2hda35028:`{p0}/`,kbs29zx029:`{p0}{p1}-{p2}`,k3y2p8020:`Online`,kywgd38021:`Load earlier events`,k126izdm022:`Waiting for events…`,kuyjpmi023:`Submit a task below; the agent execution renders here live`,kqu93z8001:`Jump to latest`,k40t11002:`Latest`,k1kbaden003:`All history loaded (from the very first event)`,ktuo1zg004:`No matching events`,k1atjpx1005:`Events /`,kapxgq4006:`No events under this filter; try other filters`,k4a9o007:`blocks`,k3lmtk3008:`Syncing`,k1br0ij9009:`Loading…`,klnne6o010:`Syncing timeline…`,k1iuqpxj011:`Events will re-align automatically once the connection recovers`,k3x4t1012:`All`,k3x5xi013:`Critical`,k41ykc014:`Message`,k3wcox015:`Task`,k3y5ja016:`Team`,k49d2l017:`Error`,k3wcqg018:`Today`,k40l1y019:`Yesterday`},titles:{dashboard:`Dashboard · AgentWorkShop`,daq:`DAQ Console · AgentWorkShop`,daqNode:`DAQ Node Console · AgentWorkShop`,dcw:`Line Operations · AgentWorkShop`,dcwLine:`Line Detail · AgentWorkShop`,tokens:`API Tokens · AgentWorkShop`,users:`Users · AgentWorkShop`,workshop:`Workshop · AgentWorkShop`,agents:`Agent Templates · Workshop`,teams:`Agent Team Groups · Workshop`,ctpl:`Channel Template Hub · Workshop`,monitor:`Runtime Monitor · AgentWorkShop`,settings:`Settings · AgentWorkShop`,schedules:`Scheduled Tasks`},sched:{title:`Scheduled Tasks`,sub:`Channel-bound recurring tasks: dispatch a task to the channel on schedule; waits while the channel is busy, then fires immediately.`,newBtn:`New Schedule`,empty:`No schedules yet — create one and let the team run on rhythm`,colState:`State`,colPlan:`Plan`,colName:`Name`,colChannel:`Channel`,colLastRun:`Last run`,stateIdle:`Idle`,stateRunning:`Running`,stateWaiting:`Waiting channel`,stateDisabled:`Disabled`,stateFailed:`Failed`,stateTripped:`Tripped`,modeInterval:`Every {p0}`,modeDaily:`Daily at {p0}`,minutes:`{p0} min`,hours:`{p0} h`,modeIntervalRadio:`Fixed interval`,modeDailyRadio:`Daily at`,nextRun:`Next:`,statLine:`{p0} runs / {p1} failed`,fuseLine:`fuse {p0}/{p1}`,runNowTitle:`Run now`,historyTitle:`Run history`,deleteConfirm:`Delete this schedule? Run history will be removed too`,editTitle:`Edit Schedule`,createTitle:`New Schedule`,fName:`Name`,fNamePh:`e.g. Morning line check`,fChannel:`Bound channel`,fChannelPh:`Channel that receives the task`,fTitle:`Task title (dispatched on trigger)`,fTitlePh:`e.g. Summarize yesterday line data`,fDesc:`Task description`,fDescPh:`Instructions sent to the channel (optional)`,fMode:`Trigger mode`,fInterval:`Interval`,fIntervalUnit:`min (min 1)`,fDailyTime:`Daily time`,fDailyHint:`Local timezone HH:MM`,fFuse:`Consecutive-failure trip limit`,fFuseHint:`0 = never auto-disable; re-enable resets the counter`,fSubmitHint:`On trigger the task is submitted to the channel; if the channel is busy it waits and fires as soon as everything settles.`,nameRequired:`Name is required`,channelRequired:`Pick a channel`,titleRequired:`Task title is required`,badDailyTime:`Daily time must be a valid HH:MM`,saved:`Schedule updated`,created:`Schedule created`,enabledMsg:`Enabled (timer reset)`,disabledMsg:`Disabled`,deleted:`Schedule deleted`,runAccepted:`Triggered — task {p0} submitted to the channel`,channelHasSched:`(scheduled)`,enableToggle:`Enable/disable`,historyEmpty:`No runs yet`,runDone:`Completed`,runFail:`Failed`,runOngoing:`Running`,triggerManual:`Manual`,triggerTimer:`Timer`,runTask:`Channel task:`},chips:{chipAll:`All {n}`,chipMine:`Mine {n}`,chipPublic:`Public {n}`,chipBuiltin:`Built-in {n}`,chipOthers:`Others' private {n}`,mine:`Mine`,public:`Public`,builtin:`Built-in`,issue:`Issue Token`,issueTitle:`Issue API Token`},appHeader:{kzwjv99001:`Close {p0}`,kwsdot0001:`Live connection healthy`,kwsdot0002:`Syncing in real time…`,kwsdot0003:`Connecting…`,kwsdot0004:`Connection lost`,hitlBadge:`Needs human input`,hitlKindOmp:`omp dialog`,hitlKindDcw:`write approval`,hitlKindCodex:`codex approval`,hitlKindOpencode:`opencode permission`,hitlKindDsh:`dsh permission`,hitlApprove:`Approve`,hitlReject:`Reject`,hitlReqQuestion:`Question`,hitlReqApproval:`Approval`,hitlPolicy:`Policy: {p0}`,hitlEngineNote:`This item must be handled in its engine UI`,hitlPermsLoading:`Loading approval permissions…`,hitlNoPerm:`No approval permission`,hitlAnswerPlaceholder:`Type your answer`,hitlSupplementPlaceholder:`Additional notes (optional)`,hitlSubmitAnswer:`Submit answer`,hitlCancelRequest:`Cancel request`},ompTerminalPanel:{switchTarget:`── Switch target · {p0} ──`,k14jk3nu001:` {p0}· dialog cancelled ({p1}){p2}`,k68kkpc002:`{p0}── attached to omp process PID {p1} (session replay {p2} frames)──{p3}`,k59zj91003:`{p0}✗ terminal not ready; command not sent{p1}`,kvzhi95004:`{p0}✔ HITL answered: {p1}{p2}`},plugins:{title:`Plugins`,subtitle:`Built-in samples & user extensions · toggles hot-reload instantly`,refresh:`Refresh`,enabled:`Enabled`,disabled:`Disabled`,scopeProject:`Built-in sample`,scopeUser:`User extension`,scopeBuiltinHint:`Built-in sample plugin: shipped with the project checkout (repo .AgentWorkShop/plugins), can be toggled`,scopeUserHint:`User extension plugin: lives in ~/.AgentWorkShop/plugins, created and maintained by you`,loadFail:`Failed to load plugin list`,hasClient:`Client enhancer`,routes:`API routes`,empty:`No plugins yet — run aw plugin create my-plugin, or aw plugin enable to turn on examples`,failures:`Load failures`,loadFailures:`{n} plugin(s) failed to load, see server startup log`,enableFail:`Toggle failed`,detail:`Plugin detail`,desc:`Platform plugin list: enable/disable (admin, hot-reload) and connection health checks.`,needLogin:`Sign in to view and manage plugins`,builtin:`Built-in`,adminRequired:`This action requires an administrator`,healthCheck:`Check connection`,healthChecking:`Checking…`,healthOk:`OK`,healthBad:`Error`},errors:{http400:`Invalid request, please check and retry`,http401:`Session expired, please sign in again`,http403:`Insufficient permission: this action requires an administrator`,http404:`Target not found or already removed`,http409:`Conflict: resource already exists or state does not allow it`,http5xx:`Server error, please retry later`,network:`Cannot reach the server, check network and service status`,fallback:`Action failed, please retry later`},permissions:{title:`Permissions`,subtitle:`User × line three-state grants: none / read-only (DAQ) / operate (DAQ+DCW); users default to none`,search:`Search name or email`,loadFail:`Failed to load permission data`,saveFail:`Failed to save grants`,saved:`Saved {n} grant change(s)`,colUser:`User`,colEmail:`Email`,colRole:`Role`,colStatus:`Status`,colChannels:`Channels`,colGrants:`Line grants`,colOps:`Actions`,active:`Active`,manage:`Manage`,detail:`Permission detail`,secProfile:`Profile`,secChannels:`Created channels`,noChannels:`No channels created by this user`,secMatrix:`Line grant matrix`,save:`Save ({n})`,matrixHint:`none = line data is withheld server-side (invisible in UI & digital twin); read-only = DAQ read; operate = full DAQ read + DCW write.`,none:`None`,readonly:`Read-only`,operate:`Operate`},error:{backHome:`Back to Home`,lost:`Page lost`},optimizer:{kicker:`Optimizer Manager`,subtitle:`Scenario/variables/conditions → dataset → training → profile → binding → numerical solve → immutable recommendation`,recommendationOnly:`Recommendation only · zero device writes`,tab:{spec:`Model Spec`,eligibility:`Eligibility`,profile:`Profile / Solver`,binding:`Agent Bindings`,runs:`Runs / Recommendations`},fields:{line:`Line`,product:`Product`,recipe:`Recipe`,recipeVersion:`Recipe version`,beat:`Sample interval (ms)`,history:`History steps`,horizon:`Horizon`,trainer:`Trainer`,arOrder:`AR order`,inputOrder:`Input order`,order:`Response-surface order`,runIds:`Run filter (comma separated)`,varId:`Variable id`,nodeId:`Node id`,role:`Role`,unit:`Unit`,scale:`Scale`,offset:`Offset`,delayMs:`Delay (ms)`,min:`Min`,max:`Max`,maxStep:`Max step`,model:`Model id`,name:`Profile name`,description:`Profile description`,template:`Problem template`,solver:`Solver`,agentInstance:`Agent instance id`},spec:{title:`Process model spec`,variables:`Variable mapping (explicit units/delays)`,addVariable:`Add variable`,needVariables:`Add at least 1 MV and 1 CV`,save:`Register spec`,buildDataset:`Build dataset (v2)`,train:`Submit training`,modelUnitsHint:`Variable min/max, max step and effective domain use model units (modelUnit; same as unit when omitted).`},currentDataset:`Current dataset`,remove:`Remove`,optional:`optional`,publish:`Publish`,nodeRequired:`Node id is required`,specSaved:`Spec registered: {id}`,datasetBuilt:`Dataset built: {id} ({rows} windows)`,datasetRequired:`Build a dataset first`,jobSubmitted:`Training job submitted: {id}`,profileSaved:`Profile registered (draft)`,profilePublished:`Profile published`,bindingCreated:`Binding created`,bindingRevoked:`Binding revoked`,solveDone:`Solve finished`,eligibilityDone:`Eligibility evaluated`,eligibility:{title:`Optimization eligibility (A2)`,evaluate:`Evaluate eligibility`,yes:`Optimization eligible`,no:`Not optimization eligible`,empty:`Not evaluated yet. Build a dataset, then evaluate eligibility.`},profile:{title:`Profiles and solvers`,config:`Problem config (JSON: weights/targets/constraints)`,configHint:`Top-level JSON key must match the problem template (linear_mpc_quadratic / steady_response).`,save:`Register profile (draft)`},binding:{title:`Agent bindings`,create:`Create binding`,revoke:`Revoke`,identityHint:`Use channel_agents.id (instance id); template ids are rejected. Multiple bindings require an explicit binding_id when solving.`},runs:{title:`Optimization runs and recommendations`,solve:`Solve once`,recommendation:`Recommendation`,zeroWrite:`Zero device writes. A recommendation is not an execution authorization; approvals and writes still go through the DCW governance chain.`}},aml:{blockerVenv:`Training environment (./aml/.venv) not created yet: click "Create training environment" in the Runtime Environment panel`,blockerPython:`Python interpreter unavailable`,rootSourceEnv:`Set via the AW_AML_DIR environment variable`,rootSourceRepo:`Project checkout root (./aml)`,rootSourceHome:`User config root (~/.AgentWorkShop/aml)`,rootSourceCwd:`Current working directory (./aml)`,k1amlx001:`AML Auto-Modeling`,k1amlx002:`Dataset snapshots → training jobs → gated experiments → model registry; job progress streams over WS, platform gates are authoritative.`,k1amlx003:`Python runtime`,k1amlx004:`Ready`,k1amlx005:`Unavailable`,k1amlx006:`Deps venv`,k1amlx007:`Ready`,k1amlx008:`Not ready`,k1amlx009:`Queued`,k1amlx010:`Running`,k1amlx011:`Datasets`,k1amlx012:`Models`,k1amlx013:`Production models`,k1amlx014:`training and prediction are disabled:`,k1amlx015:`Failed to load platform status`,k1amlx016:`Dataset snapshots`,k1amlx017:`Refresh`,k1amlx018:`New dataset`,k1amlx019:`No datasets yet — build an aligned snapshot from line history to submit training.`,k1amlx020:`Time`,k1amlx021:`Product`,k1amlx022:`Recipe`,k1amlx023:`Rows`,k1amlx024:`Runs`,k1amlx025:`Creator`,k1amlx026:`Note`,k1amlx027:`Cleaning report (per node)`,k1amlx028:`Lag estimates (control → target cross-correlation)`,k1amlx029:`Run overview`,k1amlx030:`Loading…`,k1amlx031:`Failed to load details`,k1amlx032:`No lag estimates (needs both control and target nodes)`,k1amlx033:`Node`,k1amlx034:`Role`,k1amlx035:`Cleaned`,k1amlx036:`Missing`,k1amlx037:`Mean`,k1amlx038:`σ`,k1amlx039:`min~max`,k1amlx040:`Control`,k1amlx041:`Target`,k1amlx042:`Lag (steps)`,k1amlx043:`Peak corr`,k1amlx044:`Runs used`,k1amlx045:`Runs dropped`,k1amlx046:`Windows train/val/test`,k1amlx047:`No build report (legacy snapshot)`,k1amlx048:`None`,k1amlx049:`user`,k1amlx050:`New dataset snapshot`,k1amlx051:`Line ID`,k1amlx052:`Product ID`,k1amlx053:`Recipe ID`,k1amlx054:`Node roles (at least one target)`,k1amlx055:`Add row`,k1amlx056:`Node ID`,k1amlx057:`control (known future input)`,k1amlx058:`feature (history-only feature)`,k1amlx059:`target (prediction target)`,k1amlx060:`Beat (ms)`,k1amlx061:`History (steps)`,k1amlx062:`Horizon (steps)`,k1amlx063:`val ratio`,k1amlx064:`test ratio`,k1amlx065:`Seed`,k1amlx066:`Purpose`,k1amlx067:`mpc_surrogate (MPC surrogate)`,k1amlx068:`quality_predict (quality prediction)`,k1amlx069:`Why this snapshot / alignment notes (optional)`,k1amlx070:`Building…`,k1amlx071:`Cancel`,k1amlx072:`Build snapshot`,k1amlx073:`Dataset built: {p0} ({p1} rows)`,k1amlx074:`Training jobs`,k1amlx075:`No training jobs — submit one via Agent tools or API once a dataset exists.`,k1amlx076:`Job`,k1amlx077:`Status`,k1amlx078:`Stage`,k1amlx079:`Progress`,k1amlx080:`Gates passed`,k1amlx081:`Gates failed`,k1amlx082:`Gates pending`,k1amlx083:`Platform gates`,k1amlx084:`Check`,k1amlx085:`Value`,k1amlx086:`Threshold`,k1amlx087:`Pass`,k1amlx088:`Fail`,k1amlx089:`Run log (tail)`,k1amlx090:`No logs yet`,k1amlx091:`Live log polling (5s) for active jobs`,k1amlx092:`Failure reason`,k1amlx093:`Cancelling…`,k1amlx094:`Confirm cancel`,k1amlx095:`Retry`,k1amlx096:`Confirm retry`,k1amlx097:`Cancellation requested: {p0}`,k1amlx098:`Requeued: {p0}`,k1amlx099:`Metrics`,k1amlx100:`Queued`,k1amlx101:`Provisioning`,k1amlx102:`Training`,k1amlx103:`Evaluating`,k1amlx104:`Done`,k1amlx105:`Failed`,k1amlx106:`Cancelled`,k1amlx107:`Timeout`,k1amlx108:`Interrupted`,k1amlx109:`Experiment leaderboard`,k1amlx110:`Pick a dataset to view lineage`,k1amlx111:`— Pick a dataset —`,k1amlx112:`No experiments for this dataset — submit a training job to grow the lineage.`,k1amlx113:`Experiment`,k1amlx114:`Change note`,k1amlx115:`Parent`,k1amlx116:`G1 1-step`,k1amlx117:`G2 rollout`,k1amlx118:`Gates`,k1amlx119:`Running`,k1amlx120:`Best`,k1amlx121:`Test 1-step NRMSE (lower is better)`,k1amlx122:`Test rollout NRMSE (lower is better)`,k1amlx123:`Model registry`,k1amlx124:`Registry is empty — experiments passing gates register a candidate model automatically.`,k1amlx125:`Model`,k1amlx126:`Metrics (G1 1-step / G2 rollout NRMSE)`,k1amlx127:`Actions`,k1amlx128:`Promote to shadow`,k1amlx129:`Promote to production`,k1amlx130:`Retire`,k1amlx131:`Confirm`,k1amlx132:`Promoted: {p0} → {p1}`,k1amlx133:`Prediction console (what-if)`,k1amlx134:`— Pick a production model —`,k1amlx135:`No production model — promote one in the registry first.`,k1amlx136:`IO spec`,k1amlx137:`All nodes`,k1amlx138:`Control nodes`,k1amlx139:`Target nodes`,k1amlx140:`History`,k1amlx141:`Horizon`,k1amlx142:`Beat`,k1amlx143:`history input ([H][nAll] JSON; column order = allNodes)`,k1amlx144:`[[21.4,0.82,…], …] — H×nAll numeric matrix`,k1amlx145:`Pull latest`,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.`,k1amlx147:`Rollout steps (≤ horizon, empty = full)`,k1amlx148:`Predict`,k1amlx149:`Inferring…`,k1amlx150:`Forecast result`,k1amlx151:`Step`,k1amlx152:`t+ (s)`,k1amlx153:`Failed to parse history JSON:`,k1amlx154:`Forecast ready: {p0} steps × {p1} targets`,k1amlx155:`Model assumptions`,k1amlx156:`controls trajectory (optional, [≤H][nControl] JSON)`,k1amlx157:`Action failed`,k1amlx158:`Modeling`,k1amlx159:`AML auto-modeling studio`,k1amlx160:`AML Auto-Modeling · AgentWorkShop`,k1amlx161:`Line, product and recipe IDs are all required`,k1amlx162:`Runtime environment`,k1amlx163:`uv package manager`,k1amlx164:`Installed`,k1amlx165:`Not installed`,k1amlx166:`Install uv`,k1amlx167:`Installing uv…`,k1amlx168:`Create training env`,k1amlx169:`Rebuild training env`,k1amlx170:`Creating…`,k1amlx171:`AML asset root`,k1amlx172:`uv install location`,k1amlx173:`Training env path`,k1amlx174:`Disk usage`,k1amlx175:`Re-check`,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.`,k1amlx177:`uv not found: click the button above to install it (recommended), otherwise the platform falls back to python -m venv (slower).`,k1amlx178:`Job prerequisites not met`,k1amlx179:`Environment task running`,k1amlx180:`Install log`,k1amlx181:`Close`,k1amlx182:`Metadata & entities`,k1amlx183:`Consistent`,k1amlx184:`Drift detected`,k1amlx185:`Entity missing`,k1amlx186:`Orphan entity`,k1amlx187:`Contract missing`,k1amlx188:`Prune orphans`,k1amlx189:`Edit note`,k1amlx190:`Delete`,k1amlx191:`Save`,k1amlx192:`Note updated`,k1amlx193:`Deleted`,k1amlx194:`uv installed`,k1amlx195:`uv install failed`,k1amlx196:`Training environment ready`,k1amlx197:`Failed to create training environment`,k1amlx198:`Deleting a dataset also removes its entity folder under ./aml/datasets; datasets referenced by experiments or models cannot be deleted.`,k1amlx199:`Deleting a model also removes its ONNX artifact under ./aml/models; production-stage models must be retired first.`,k1amlx200:`Deleting a job cascades to its experiments and its workspace under ./aml/jobs; jobs that produced models cannot be deleted.`,k1amlx201:`AML asset root: all datasets, training jobs, model artifacts and the uv virtualenv live here.`,k1amlx202:`Cancel`,k1amlx203:`Operation failed`,k1amlx204:`Model identity`,k1amlx205:`Model description`},teamPlugins:{k1plugon040:`Plugin switches · {p0}`,k1plugon041:`Enable plugins`,k1plugon042:`Tools of unchecked plugins are not injected into this team's agents, avoiding context pollution`,k1plugon043:`Saved`,k1plugon044:`All enabled by default (not yet configured)`,k1plugon045:`Explicitly configured`,k1plugon046:`All plugins are disabled`,k1plugon047:`Plugin switches…`,descLineSentinel:`Line Sentinel: DAQ limit alarms + heartbeat + line lifecycle tracking`,descOpsNotifier:`Ops Notifier: write-control & line event echo — rolling recent events + query API + client notifications`,descSampleInsight:`SDK sample: DAQ sample counting + stats API + client badge`,descDiagBridge:`Deep diagnosis bridge: export DAQ timeseries snapshots as CSV, launch an industrial-deep-diagnostic run and track its status; the report lands in the knowledge base when done.`,descRagBridge:`rag-knowledge bridge: three tools for industrial knowledge search / experience capture / document ingestion`,descSerialBridge:`Serial protocol bridge: Modbus RTU (RS-485/232) and ASCII line protocol read drivers, write drivers with read-back verification, serial enumeration/probe APIs and a frontend panel.`},tplCatalog:{"temp-tc":`Temperature Sensor`,"pressure-tx":`Pressure Transmitter`,"tension-cell":`Tension Sensor`,"line-encoder":`Speed Encoder`,"vision-cam":`Vision Inspection Camera`,"power-meter":`Power Meter`,"thickness-scan":`Thickness Scanner`,"ccd-image":`CCD Vision Camera`,"temp-sp":`Temperature Setpoint`,"speed-sp":`Speed Setpoint`,"tension-sp":`Tension Setpoint`,"pressure-sp":`Pressure Setpoint`},builtinSeeds:{tplDefaultLead:`Lead Developer`,tplDefaultBackend:`Backend Engineer`,tplDefaultFrontend:`Frontend Engineer`,tplDefaultQa:`QA Engineer`,tplDefaultDocs:`Documentation Writer`,tplScenarioPaymentLead:`Payment Gateway Delivery Lead (scenario: high-concurrency payments)`,tplAmlLead:`AML Principal Data Scientist`,tplAmlData:`AML Data Engineer`,tplAmlTrainer:`AML Training Engineer`,tplAmlEval:`AML Evaluation Engineer`,teamDefaultFullstack:`Full-stack Delivery Team`,teamDefaultDocs:`Docs Maintenance Team`,teamAmlShadow:`AML Shadow Modeling Team`,chtplDefaultFullstack:`Full-stack Delivery Channel`,chtplDefaultFullstackDesc:`Built-in: lead + backend/frontend/QA, ready for routine delivery work`,chtplDefaultFullstackScenario:`The team delivers under lead scheduling; the lead reviews each finished subtask and outcomes are consolidated as artifacts.`,chtplDefaultReview:`Docs Review Channel`,chtplDefaultReviewDesc:`Built-in: documentation writer + QA review, for documents, reports and review flows`,chtplDefaultReviewScenario:`Focused on document output and quality review: after drafting, the reviewer checks and gives revision feedback.`,chtplPresetOpticalFilm:`Optical Film Coating Line Optimization Team`,chtplPresetOpticalFilmDesc:`Industrial preset: coating line digital-twin optimization — production lead + process engineer + data analyst, for oven temperature control and coating-quality closed loops`,chtplPresetOpticalFilmScenario:`Optical film coating line: multi-zone oven temperature control and coating-quality closed loop; data first, small steps within the window, single-variable changes, re-check after each adjustment.`,chtplPresetExtrusion:`Film Extrusion Casting Line Optimization Team`,chtplPresetExtrusionDesc:`Industrial preset: extrusion casting line digital-twin optimization — production lead + process engineer + data analyst, for coupled melt pressure/temperature control`,chtplPresetExtrusionScenario:`Film extrusion casting line: film-thickness quality control under strongly coupled melt pressure/temperature; data first, small steps within the window, single-variable changes, re-check after each adjustment.`,mKnight:`Grey-feather Knight`,mMage:`Amethyst Mage`,mBot:`Cyan-Hub Mech`,mHero3d:`Standard Worker Model`,mHero3dHint:`Default worker 3D model`,mYangyang:`Yangyang (walking)`,mYangyangHint:`Custom character: skeletal walk animation (clip WALK; large file — bind sparingly)`,mDevice3d:`Industrial Pump Device`,mDevice3dHint:`Digital-twin entity model (drag into the scene to create a device)`,mDeviceFallbackHint:`Device entity (drag into the scene to create a digital twin)`,mScannedCharacterHint:`Character 3D model (set in channel member management)`},data:{page:{title:`Data Studio`,sub:`Line-scoped mirror data / MES APIs / export and run ledgers`},tab:{mirror:`Mirror Data`,mes:`MES APIs`,ledger:`Ledgers`},line:{label:`Line`,any:`(All lines)`},mirror:{window:`Window`,last15:`Last 15 min`,last60:`Last 1 h`,last240:`Last 4 h`,custom:`Custom`,agg:`Agg`,aggAvg:`Avg`,aggMin:`Min`,aggMax:`Max`,band:`min/max band`,query:`Query`,querying:`Querying…`,export:`Export`,nodes:`Nodes`,noNodes:`No readable DAQ nodes`,runScope:`Scoped to active run {run}`,truncated:`{n} node(s) hit the 2000-point per-node cap (narrow the window or raise bucket)`,preview:`Preview (newest first)`,previewNote:`Showing latest {n} rows ({total} points in window); export for full data`,time:`Time`,empty:`Pick a line and nodes, then query`,exportTitle:`Export {n} nodes`,exportTitleLabel:`Title`,exportNoteLabel:`Note`,exportMerge:`Also build aligned wide table merged.csv`,cancel:`Cancel`,exportOk:`Start export`,exporting:`Exporting…`,exportDone:`Export done, {rows} rows:`,manifest:`manifest.json`,exportRunning:`Job queued (concurrency=1), please wait…`,derivedBtn:`Save as derived dataset (moving avg)`,deriving:`Deriving…`,derivedDone:`Derived: {rows} rows, job {id} (download data.csv in ledger)`},mes:{points:`MES point catalog`,filter:`Search points…`,empty:`No mes-rest points on your readable lines`,pickPoint:`Pick a point above to start`,console:`Fetch console: {name}`,from:`From`,to:`To`,rows:`Max rows`,preview:`Preview`,previewing:`Fetching…`,guards:`Guards: window ≤7d, rows ≤5000, 30 req/min; echo is redacted (credentials shown as ***)`,reqEcho:`Request template (redacted)`,stats:`Stats and sample (≤3 rows; raw rows never enter the page)`,rowsGot:`{n} rows fetched`,truncated:`Truncated at the row cap`,dict:`Field dictionary`,dictEmpty:`No dictionary yet (learned from the first MES response, or declared on the point)`,hasHistory:`History OK`,noHistory:`No history map`},ledger:{jobs:`Export jobs`,refresh:`Refresh`,status:`Status`,nodes:`Nodes`,window:`Window`,rows:`Rows`,created:`Created`,download:`Download`,missing:`Artifacts expired`,st:{running:`Running`,ready:`Ready`,failed:`Failed`},runs:`Run ledger`,outcome:`Outcome`,any:`(All)`,recipe:`Recipe`,samples:`Samples`,started:`Started`,ended:`Ended`,empty:`No export jobs yet`,runsEmpty:`No runs yet (start a line to record one)`}},studio:{sources:`Data sources`,dblClickAdd:`Double-click to add to Y axis`,pickLine:`Pick a line to load nodes`,myCharts:`My charts`,noCharts:`No saved charts yet`,runFilter:`Run`,noRun:`(Time window)`,canvasEmpty:`Add tags then query`,yWell:`Y well (L/R axes)`,yEmpty:`Double-click a tag to add`,yMax:`At most 8 Y series`,toggleAxis:`Toggle L/R axis`,refWell:`Reference lines`,refEmpty:`No reference lines`,refValue:`Ref value`,refFromTemplate:`Import from range max`,maxRef:`Range max`,golden:`Golden reference (phase 0-100%)`,goldenHint:`Pick a closed good run to build the golden profile; overlay shows mean±σ band.`,goldenMake:`Build from this run`,goldenShow:`Overlay`,goldenHide:`Hide`,goldenScore:`Deviation`,goldenMade:`golden built/updated ({node})`,deviationScore:`Run vs golden mean |z| score: {score} (lower = closer)`,noRecipe:`Recipe of this run not found; cannot locate golden.`,saveSection:`Save`,chartTitle:`Chart title`,visPrivate:`Private (me only)`,visLine:`Line-visible`,save:`Save chart`,update:`Update version`,savedV:`Saved v{v}`,viz:{trend:`Trend`,bar:`Bars`,scatter:`Scatter`,kpi:`KPI`,table:`Table`,histogram:`Histogram`},pipelineSnapshot:`Pipeline snapshot · read-only`,boardLink:`Board`,agentPrompt:`Agent prompt`,promptTitle:`Agent deep-analysis prompt (paste into a Channel)`,copy:`Copy`,copied:`Copied to clipboard`,pipeline:{title:`EDA Analysis Pipeline`,sub:`Fetch data → custom post-processing → chart config (save as template) → draw / export / online viewer`,backToStudio:`Back to Studio`,s1:`Fetch data`,pickLine:`Pick a line…`,w15:`Last 15 min`,w60:`Last 1 h`,w240:`Last 4 h`,fetch:`Fetch data`,importPlaceholder:`Paste CSV/TSV (header row):
10
10
  batch,weight