agentworkshop 0.2.1

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 (895) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +631 -0
  2. package/.AgentWorkShop/prompts/lead-supervise.md +42 -0
  3. package/.AgentWorkShop/prompts/mode-goal.md +26 -0
  4. package/.AgentWorkShop/prompts/mode-loop.md +10 -0
  5. package/.AgentWorkShop/prompts/mode-pipeline.md +16 -0
  6. package/.AgentWorkShop/prompts/peer-lead-roster.md +3 -0
  7. package/.AgentWorkShop/prompts/peer-message.md +14 -0
  8. package/.AgentWorkShop/prompts/peer-reply-optional.md +2 -0
  9. package/.AgentWorkShop/prompts/peer-reply-required.md +8 -0
  10. package/.AgentWorkShop/prompts/scenario-default.md +11 -0
  11. package/.AgentWorkShop/prompts/system-manual.md +18 -0
  12. package/.AgentWorkShop/prompts/team-roster.md +9 -0
  13. package/.AgentWorkShop/prompts/worker-workflow.md +19 -0
  14. package/.env.example +34 -0
  15. package/README-zh.md +424 -0
  16. package/README.md +424 -0
  17. package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.json +1 -0
  18. package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.mtg0vz68-49792-75b0709555.baseline/1459e6269990a5d229b9228c8b2f62ffaa7d350068380ae8b875fee0db45cca6.source +180 -0
  19. package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.mtg0vz68-49792-75b0709555.baseline/c2991e909c70c5c12b90a407c7adcf63384c51668a2b334e6e047fa675c268fe.source +305 -0
  20. package/app/.mimosa/hook-state/sess_05189059-e42d-4188-8911-4f7baabe009b.mtg0vz68-49792-75b0709555.baseline/e09129039d1e27e3fac24becc9bdafd2d1a7c8049bff24173df007be865f0165.source +264 -0
  21. package/app/.mimosa/hook-status/sess_05189059-e42d-4188-8911-4f7baabe009b-28ef7c75ea.json +14 -0
  22. package/app/app.vue +139 -0
  23. package/app/assets/css/main.css +1257 -0
  24. package/app/components/AppHeader.vue +675 -0
  25. package/app/components/AppSidebar.vue +286 -0
  26. package/app/components/AwChart.vue +44 -0
  27. package/app/components/AwLogo.vue +75 -0
  28. package/app/components/workshop/A2aRpcDebugger.vue +237 -0
  29. package/app/components/workshop/AgentInspectorDrawer.vue +424 -0
  30. package/app/components/workshop/AgentLanesView.vue +947 -0
  31. package/app/components/workshop/ArtifactCard.vue +120 -0
  32. package/app/components/workshop/AssetLibrary.vue +450 -0
  33. package/app/components/workshop/ChannelSessionList.vue +593 -0
  34. package/app/components/workshop/CommandPalette.vue +270 -0
  35. package/app/components/workshop/Composer.vue +731 -0
  36. package/app/components/workshop/DeviceTwinPanel.vue +607 -0
  37. package/app/components/workshop/EventBlock.vue +602 -0
  38. package/app/components/workshop/FileSelectorModal.vue +188 -0
  39. package/app/components/workshop/InspectorPanel.vue +265 -0
  40. package/app/components/workshop/LiveAgentBar.vue +362 -0
  41. package/app/components/workshop/MemoryPanel.vue +364 -0
  42. package/app/components/workshop/MentionHoverCard.vue +155 -0
  43. package/app/components/workshop/MultiChannelView.vue +189 -0
  44. package/app/components/workshop/PaneSplitter.vue +142 -0
  45. package/app/components/workshop/StatsPanel.vue +168 -0
  46. package/app/components/workshop/TaskBoardView.vue +636 -0
  47. package/app/components/workshop/TaskInspectorDrawer.vue +390 -0
  48. package/app/components/workshop/TranscriptTimeline.vue +545 -0
  49. package/app/components/workshop/blocks/ClusterArtifact.vue +77 -0
  50. package/app/components/workshop/blocks/ClusterError.vue +85 -0
  51. package/app/components/workshop/blocks/ClusterLife.vue +87 -0
  52. package/app/components/workshop/blocks/ClusterMember.vue +93 -0
  53. package/app/components/workshop/blocks/ClusterMemory.vue +84 -0
  54. package/app/components/workshop/blocks/ClusterOther.vue +67 -0
  55. package/app/components/workshop/blocks/ClusterRoute.vue +359 -0
  56. package/app/components/workshop/blocks/ClusterStatus.vue +147 -0
  57. package/app/components/workshop/blocks/ClusterStream.vue +325 -0
  58. package/app/components/workshop/blocks/ClusterTask.vue +151 -0
  59. package/app/components/workshop/blocks/ClusterTool.vue +158 -0
  60. package/app/components/workshop/lanes/LaneBlocks.vue +149 -0
  61. package/app/components/workshop/terminal/OmpTerminalPanel.vue +1010 -0
  62. package/app/components/workshop/town/ModelPreview3D.vue +276 -0
  63. package/app/components/workshop/town/TownScene.ts +1355 -0
  64. package/app/components/workshop/town/TownScene3D.ts +4533 -0
  65. package/app/components/workshop/town/TownView.vue +7071 -0
  66. package/app/composables/useCodeCopy.ts +30 -0
  67. package/app/composables/useHttp.ts +8 -0
  68. package/app/composables/useRouteMeta.ts +50 -0
  69. package/app/composables/useSiteConfig.ts +21 -0
  70. package/app/composables/workshop/apiClient.ts +95 -0
  71. package/app/composables/workshop/useCharacterAssets.ts +292 -0
  72. package/app/composables/workshop/useClusteredBlocks.ts +150 -0
  73. package/app/composables/workshop/useComposerBus.ts +16 -0
  74. package/app/composables/workshop/useDaqStream.ts +379 -0
  75. package/app/composables/workshop/useDcwStream.ts +300 -0
  76. package/app/composables/workshop/useDeviceTwins.ts +147 -0
  77. package/app/composables/workshop/useEventBlocks.ts +662 -0
  78. package/app/composables/workshop/useLocalTime.ts +33 -0
  79. package/app/composables/workshop/useOpsLog.ts +164 -0
  80. package/app/composables/workshop/useSceneLayouts.ts +166 -0
  81. package/app/composables/workshop/useTownBus.ts +47 -0
  82. package/app/composables/workshop/useVisibleInterval.ts +42 -0
  83. package/app/composables/workshop/useWorkshopApi.ts +224 -0
  84. package/app/composables/workshop/useWorkshopWs.ts +113 -0
  85. package/app/config/index.ts +66 -0
  86. package/app/config/schema.ts +68 -0
  87. package/app/error.vue +76 -0
  88. package/app/layouts/default.vue +100 -0
  89. package/app/layouts/town.vue +16 -0
  90. package/app/pages/daq/[id].vue +796 -0
  91. package/app/pages/daq/index.vue +2577 -0
  92. package/app/pages/dcw/[id].vue +2259 -0
  93. package/app/pages/dcw/index.vue +1079 -0
  94. package/app/pages/index.vue +830 -0
  95. package/app/pages/logs/index.vue +621 -0
  96. package/app/pages/monitor.vue +665 -0
  97. package/app/pages/settings.vue +757 -0
  98. package/app/pages/tokens.vue +610 -0
  99. package/app/pages/town.vue +145 -0
  100. package/app/pages/users.vue +257 -0
  101. package/app/pages/workshop/agents.vue +382 -0
  102. package/app/pages/workshop/channel-templates.vue +456 -0
  103. package/app/pages/workshop/index.vue +604 -0
  104. package/app/pages/workshop/teams.vue +448 -0
  105. package/app/pages/workshop/w/[wsId].vue +516 -0
  106. package/app/plugins/http.ts +71 -0
  107. package/app/plugins/locale-restore.client.ts +13 -0
  108. package/app/plugins/runtime-config.client.ts +65 -0
  109. package/app/plugins/session-restore.client.ts +24 -0
  110. package/app/plugins/theme.client.ts +15 -0
  111. package/app/stores/app.ts +32 -0
  112. package/app/stores/route-trail.ts +45 -0
  113. package/app/stores/runtime-config.ts +212 -0
  114. package/app/stores/workshop/connection.ts +184 -0
  115. package/app/stores/workshop/entities.ts +350 -0
  116. package/app/stores/workshop/events.ts +292 -0
  117. package/app/stores/workshop/user.ts +176 -0
  118. package/app/stores/workshop/workspaces.ts +133 -0
  119. package/bin/aw.mjs +13 -0
  120. package/cli/aw.mjs +184 -0
  121. package/cli/commands/build.mjs +33 -0
  122. package/cli/commands/config.mjs +157 -0
  123. package/cli/commands/dev.mjs +74 -0
  124. package/cli/commands/doctor.mjs +120 -0
  125. package/cli/commands/home.mjs +75 -0
  126. package/cli/commands/init.mjs +150 -0
  127. package/cli/commands/register.mjs +123 -0
  128. package/cli/commands/start.mjs +106 -0
  129. package/cli/commands/status.mjs +67 -0
  130. package/cli/commands/update.mjs +116 -0
  131. package/cli/commands/version.mjs +32 -0
  132. package/cli/core/args.mjs +95 -0
  133. package/cli/core/context.mjs +264 -0
  134. package/cli/core/errors.mjs +18 -0
  135. package/cli/core/help.mjs +68 -0
  136. package/cli/core/logger.mjs +40 -0
  137. package/cli/core/registry.mjs +111 -0
  138. package/config.yml +70 -0
  139. package/docker-compose.yml +34 -0
  140. package/docs/cli.md +220 -0
  141. package/i18n/dicts/_en.json +1097 -0
  142. package/i18n/dicts/_en2.json +300 -0
  143. package/i18n/dicts/_en3.json +102 -0
  144. package/i18n/dicts/_en4.json +115 -0
  145. package/i18n/dicts/_en5.json +33 -0
  146. package/i18n/dicts/a2aRpcDebugger.json +10 -0
  147. package/i18n/dicts/agentInspectorDrawer.json +25 -0
  148. package/i18n/dicts/agentLanesView.json +57 -0
  149. package/i18n/dicts/agents.json +27 -0
  150. package/i18n/dicts/appHeader.json +7 -0
  151. package/i18n/dicts/appSidebar.json +1 -0
  152. package/i18n/dicts/artifactCard.json +6 -0
  153. package/i18n/dicts/assetLibrary.json +18 -0
  154. package/i18n/dicts/awChart.json +1 -0
  155. package/i18n/dicts/awLogo.json +1 -0
  156. package/i18n/dicts/channelSessionList.json +45 -0
  157. package/i18n/dicts/clusterArtifact.json +4 -0
  158. package/i18n/dicts/clusterError.json +3 -0
  159. package/i18n/dicts/clusterLife.json +5 -0
  160. package/i18n/dicts/clusterMember.json +3 -0
  161. package/i18n/dicts/clusterMemory.json +3 -0
  162. package/i18n/dicts/clusterOther.json +3 -0
  163. package/i18n/dicts/clusterRoute.json +15 -0
  164. package/i18n/dicts/clusterStatus.json +3 -0
  165. package/i18n/dicts/clusterStream.json +3 -0
  166. package/i18n/dicts/clusterTask.json +10 -0
  167. package/i18n/dicts/clusterTool.json +3 -0
  168. package/i18n/dicts/commandPalette.json +16 -0
  169. package/i18n/dicts/composer.json +38 -0
  170. package/i18n/dicts/ctpl.json +32 -0
  171. package/i18n/dicts/daq.json +157 -0
  172. package/i18n/dicts/daqDetail.json +55 -0
  173. package/i18n/dicts/dcw.json +68 -0
  174. package/i18n/dicts/dcwDetail.json +199 -0
  175. package/i18n/dicts/deviceTwinPanel.json +12 -0
  176. package/i18n/dicts/eventBlock.json +8 -0
  177. package/i18n/dicts/fileSelectorModal.json +6 -0
  178. package/i18n/dicts/inspectorPanel.json +12 -0
  179. package/i18n/dicts/laneBlocks.json +6 -0
  180. package/i18n/dicts/liveAgentBar.json +8 -0
  181. package/i18n/dicts/logs.json +39 -0
  182. package/i18n/dicts/memoryPanel.json +20 -0
  183. package/i18n/dicts/mentionHoverCard.json +4 -0
  184. package/i18n/dicts/modelPreview3D.json +1 -0
  185. package/i18n/dicts/monitor.json +5 -0
  186. package/i18n/dicts/multiChannelView.json +13 -0
  187. package/i18n/dicts/ompTerminalPanel.json +7 -0
  188. package/i18n/dicts/paneSplitter.json +3 -0
  189. package/i18n/dicts/settings.json +1 -0
  190. package/i18n/dicts/statsPanel.json +6 -0
  191. package/i18n/dicts/taskBoardView.json +22 -0
  192. package/i18n/dicts/taskInspectorDrawer.json +19 -0
  193. package/i18n/dicts/teams.json +33 -0
  194. package/i18n/dicts/tokens.json +30 -0
  195. package/i18n/dicts/town.json +7 -0
  196. package/i18n/dicts/townView.json +209 -0
  197. package/i18n/dicts/transcriptTimeline.json +31 -0
  198. package/i18n/dicts/users.json +15 -0
  199. package/i18n/dicts/wsHome.json +33 -0
  200. package/i18n/dicts/wsView.json +15 -0
  201. package/i18n/locales/en.ts +1737 -0
  202. package/i18n/locales/zh-CN.ts +1736 -0
  203. package/nuxt.config.ts +209 -0
  204. package/package.json +123 -0
  205. package/public/assets/game/character/bot.png +0 -0
  206. package/public/assets/game/character/device-3d.glb +0 -0
  207. package/public/assets/game/character/hero-3d.glb +0 -0
  208. package/public/assets/game/character/hero-anime-1.glb +0 -0
  209. package/public/assets/game/character/hero-anime-2.glb +0 -0
  210. package/public/assets/game/character/hero-anime-3.glb +0 -0
  211. package/public/assets/game/character/hero-anime-4.glb +0 -0
  212. package/public/assets/game/character/knight.png +0 -0
  213. package/public/assets/game/character/mage.png +0 -0
  214. package/public/assets/game/coin.png +0 -0
  215. package/public/assets/game/devices/agv.glb +0 -0
  216. package/public/assets/game/devices/caster.glb +0 -0
  217. package/public/assets/game/devices/device-console.glb +0 -0
  218. package/public/assets/game/devices/device-robot-arm.glb +0 -0
  219. package/public/assets/game/devices/device-scanner.glb +0 -0
  220. package/public/assets/game/devices/extruder.glb +0 -0
  221. package/public/assets/game/devices/mdo.glb +0 -0
  222. package/public/assets/game/devices/power-cabinet.glb +0 -0
  223. package/public/assets/game/devices/pump.glb +0 -0
  224. package/public/assets/game/devices/tdo.glb +0 -0
  225. package/public/assets/game/devices/thickness-scanner.glb +0 -0
  226. package/public/assets/game/devices/winder.glb +0 -0
  227. package/public/assets/game/npc/boltnu-sheet.png +0 -0
  228. package/public/assets/game/npc/fluttaflap-sheet.png +0 -0
  229. package/public/assets/game/npc/rockitten-sheet.png +0 -0
  230. package/public/assets/game/npc/tux-sheet.png +0 -0
  231. package/public/assets/game/player/misa-back-walk.000.png +0 -0
  232. package/public/assets/game/player/misa-back-walk.001.png +0 -0
  233. package/public/assets/game/player/misa-back-walk.002.png +0 -0
  234. package/public/assets/game/player/misa-back-walk.003.png +0 -0
  235. package/public/assets/game/player/misa-back.png +0 -0
  236. package/public/assets/game/player/misa-front-walk.000.png +0 -0
  237. package/public/assets/game/player/misa-front-walk.001.png +0 -0
  238. package/public/assets/game/player/misa-front-walk.002.png +0 -0
  239. package/public/assets/game/player/misa-front-walk.003.png +0 -0
  240. package/public/assets/game/player/misa-front.png +0 -0
  241. package/public/assets/game/player/misa-left-walk.000.png +0 -0
  242. package/public/assets/game/player/misa-left-walk.001.png +0 -0
  243. package/public/assets/game/player/misa-left-walk.002.png +0 -0
  244. package/public/assets/game/player/misa-left-walk.003.png +0 -0
  245. package/public/assets/game/player/misa-left.png +0 -0
  246. package/public/assets/game/player/misa-right-walk.000.png +0 -0
  247. package/public/assets/game/player/misa-right-walk.001.png +0 -0
  248. package/public/assets/game/player/misa-right-walk.002.png +0 -0
  249. package/public/assets/game/player/misa-right-walk.003.png +0 -0
  250. package/public/assets/game/player/misa-right.png +0 -0
  251. package/public/assets/game/player-sheet.png +0 -0
  252. package/public/assets/game/tuxemon-town.json +1 -0
  253. package/public/assets/game/tuxmon-sample-32px-extruded.png +0 -0
  254. package/public/assets/game/wuwa/scene-map.png +0 -0
  255. package/public/assets/game/wuwa/world-far.png +0 -0
  256. package/public/assets/game/wuwa/world-middle.png +0 -0
  257. package/public/assets/game/wuwa/world-near.png +0 -0
  258. package/public/assets/game/wuwa/wu-aura.png +0 -0
  259. package/public/assets/game/wuwa/wu-lead.png +0 -0
  260. package/public/assets/game/wuwa/wu-ring.png +0 -0
  261. package/public/assets/game/wuwa/wu-slash.png +0 -0
  262. package/public/assets/game/wuwa/wu-worker-0.png +0 -0
  263. package/public/assets/game/wuwa/wu-worker-1.png +0 -0
  264. package/public/assets/game/wuwa/wu-worker-2.png +0 -0
  265. package/public/favicon.svg +14 -0
  266. package/public/scene/background/cyber-town-background.svg +110 -0
  267. package/scripts/_daq-realtime-probe.mjs +68 -0
  268. package/scripts/_daq-warn-probe.mjs +50 -0
  269. package/scripts/_dbg-agent-tools-audit.mjs +154 -0
  270. package/scripts/_dbg-agent-workflow-audit.mjs +177 -0
  271. package/scripts/_dbg-anim-verify.mjs +81 -0
  272. package/scripts/_dbg-audit-all-pages.mjs +43 -0
  273. package/scripts/_dbg-autoframe.mjs +103 -0
  274. package/scripts/_dbg-beacon-final.mjs +181 -0
  275. package/scripts/_dbg-bind-bidi-e2e.mjs +239 -0
  276. package/scripts/_dbg-callout-near.mjs +108 -0
  277. package/scripts/_dbg-chan-focus.mjs +49 -0
  278. package/scripts/_dbg-cleanup.mjs +31 -0
  279. package/scripts/_dbg-closedloop-ui-shot.mjs +61 -0
  280. package/scripts/_dbg-console-audit.mjs +61 -0
  281. package/scripts/_dbg-console-probe.mjs +23 -0
  282. package/scripts/_dbg-context-inject-audit.mjs +231 -0
  283. package/scripts/_dbg-crash-recovery.mjs +143 -0
  284. package/scripts/_dbg-crop-shot.mjs +16 -0
  285. package/scripts/_dbg-daq-acc-probe.mjs +24 -0
  286. package/scripts/_dbg-daq-attrib.mjs +34 -0
  287. package/scripts/_dbg-daq-bind-audit.mjs +119 -0
  288. package/scripts/_dbg-daq-cadence.mjs +104 -0
  289. package/scripts/_dbg-daq-debug.mjs +22 -0
  290. package/scripts/_dbg-daq-diag.mjs +33 -0
  291. package/scripts/_dbg-daq-e2e.mjs +171 -0
  292. package/scripts/_dbg-daq-film.mjs +136 -0
  293. package/scripts/_dbg-daq-filter-e2e.mjs +109 -0
  294. package/scripts/_dbg-daq-filter-e2e2.mjs +62 -0
  295. package/scripts/_dbg-daq-final-regression.mjs +78 -0
  296. package/scripts/_dbg-daq-full-check.mjs +179 -0
  297. package/scripts/_dbg-daq-line-note-verify.mjs +61 -0
  298. package/scripts/_dbg-daq-linebanner-audit.mjs +107 -0
  299. package/scripts/_dbg-daq-pages-shot.mjs +37 -0
  300. package/scripts/_dbg-daq-perf.mjs +61 -0
  301. package/scripts/_dbg-daq-probe.mjs +27 -0
  302. package/scripts/_dbg-daq-recipe-e2e.mjs +30 -0
  303. package/scripts/_dbg-daq-redesign-shot.mjs +88 -0
  304. package/scripts/_dbg-daq-rows-probe.mjs +26 -0
  305. package/scripts/_dbg-daq-rowstate-e2e.mjs +152 -0
  306. package/scripts/_dbg-daq-rowstate-shot.mjs +45 -0
  307. package/scripts/_dbg-daq-rowstate-shot2.mjs +38 -0
  308. package/scripts/_dbg-daq-tpl.mjs +144 -0
  309. package/scripts/_dbg-dash-console-check.mjs +49 -0
  310. package/scripts/_dbg-dash-deep-probe.mjs +61 -0
  311. package/scripts/_dbg-dash-hitpoint.mjs +44 -0
  312. package/scripts/_dbg-dash-live-shot.mjs +36 -0
  313. package/scripts/_dbg-dash-shot.mjs +21 -0
  314. package/scripts/_dbg-dashboard-shot.mjs +35 -0
  315. package/scripts/_dbg-dcw-audit.mjs +126 -0
  316. package/scripts/_dbg-dcw-card-e2e.mjs +108 -0
  317. package/scripts/_dbg-dcw-channel-ui.mjs +144 -0
  318. package/scripts/_dbg-dcw-examples.mjs +81 -0
  319. package/scripts/_dbg-dcw-light-shot.mjs +19 -0
  320. package/scripts/_dbg-dcw-line-audit.mjs +107 -0
  321. package/scripts/_dbg-dcw-pause-tpl-audit.mjs +161 -0
  322. package/scripts/_dbg-dcw-pause-ui.mjs +175 -0
  323. package/scripts/_dbg-dcw-scene.mjs +72 -0
  324. package/scripts/_dbg-dcw-shot2.mjs +14 -0
  325. package/scripts/_dbg-dcw-twin-e2e.mjs +192 -0
  326. package/scripts/_dbg-dt-interact.mjs +193 -0
  327. package/scripts/_dbg-error-probe.mjs +54 -0
  328. package/scripts/_dbg-filter-light-verify.mjs +54 -0
  329. package/scripts/_dbg-final-acceptance-2.mjs +72 -0
  330. package/scripts/_dbg-final-acceptance.mjs +192 -0
  331. package/scripts/_dbg-final-agent-e2e.mjs +151 -0
  332. package/scripts/_dbg-final-full-e2e.mjs +218 -0
  333. package/scripts/_dbg-final-line-e2e.mjs +173 -0
  334. package/scripts/_dbg-final-t6-hitl.mjs +38 -0
  335. package/scripts/_dbg-focus-range.mjs +115 -0
  336. package/scripts/_dbg-fresh-scene-e2e.mjs +125 -0
  337. package/scripts/_dbg-full-feature-e2e.mjs +219 -0
  338. package/scripts/_dbg-fullchain-e2e.mjs +178 -0
  339. package/scripts/_dbg-gate-debug.mjs +37 -0
  340. package/scripts/_dbg-gif-encode.mjs +111 -0
  341. package/scripts/_dbg-gizmo.mjs +95 -0
  342. package/scripts/_dbg-glass-probe.mjs +57 -0
  343. package/scripts/_dbg-glass-shot.mjs +50 -0
  344. package/scripts/_dbg-glass-sweep.mjs +25 -0
  345. package/scripts/_dbg-glb-probe.mjs +43 -0
  346. package/scripts/_dbg-hardening-probe.mjs +90 -0
  347. package/scripts/_dbg-hero-btn-probe.mjs +21 -0
  348. package/scripts/_dbg-hidden-check.mjs +21 -0
  349. package/scripts/_dbg-hitl-timeout-e2e.mjs +93 -0
  350. package/scripts/_dbg-hmi-audit.mjs +164 -0
  351. package/scripts/_dbg-home-repro.mjs +24 -0
  352. package/scripts/_dbg-home-stack.mjs +13 -0
  353. package/scripts/_dbg-huashu-survey.mjs +31 -0
  354. package/scripts/_dbg-huashu-survey2.mjs +35 -0
  355. package/scripts/_dbg-huashu-verify.mjs +25 -0
  356. package/scripts/_dbg-huashu-verify2.mjs +26 -0
  357. package/scripts/_dbg-hydration-detail.mjs +18 -0
  358. package/scripts/_dbg-i18n-debug.mjs +27 -0
  359. package/scripts/_dbg-i18n-debug2.mjs +26 -0
  360. package/scripts/_dbg-i18n-final.mjs +42 -0
  361. package/scripts/_dbg-i18n-scan.mjs +38 -0
  362. package/scripts/_dbg-infra-lifecycle.mjs +44 -0
  363. package/scripts/_dbg-line-aura-shots.mjs +54 -0
  364. package/scripts/_dbg-line-control-e2e.mjs +120 -0
  365. package/scripts/_dbg-line-gate-audit.mjs +108 -0
  366. package/scripts/_dbg-line-live-e2e.mjs +144 -0
  367. package/scripts/_dbg-line-scenario-e2e.mjs +256 -0
  368. package/scripts/_dbg-minimal-omp.mjs +77 -0
  369. package/scripts/_dbg-mode-nav.mjs +173 -0
  370. package/scripts/_dbg-mqtt-chain-e2e.mjs +90 -0
  371. package/scripts/_dbg-nav-rpg.mjs +84 -0
  372. package/scripts/_dbg-nav-shot.mjs +28 -0
  373. package/scripts/_dbg-nav.mjs +27 -0
  374. package/scripts/_dbg-opslog-e2e.mjs +121 -0
  375. package/scripts/_dbg-opslog-shots.mjs +62 -0
  376. package/scripts/_dbg-opt-team-e2e.mjs +133 -0
  377. package/scripts/_dbg-optimization-e2e.mjs +94 -0
  378. package/scripts/_dbg-orbit.mjs +58 -0
  379. package/scripts/_dbg-panesplitter-fix-check.mjs +62 -0
  380. package/scripts/_dbg-phase-e3-monitor.mjs +25 -0
  381. package/scripts/_dbg-pop-clamp-verify.mjs +77 -0
  382. package/scripts/_dbg-preset-e2e.mjs +116 -0
  383. package/scripts/_dbg-preview-console.mjs +28 -0
  384. package/scripts/_dbg-preview-minrepro.mjs +156 -0
  385. package/scripts/_dbg-preview-pixels.mjs +93 -0
  386. package/scripts/_dbg-quality-pages-e2e.mjs +84 -0
  387. package/scripts/_dbg-query-cancel.ts +12 -0
  388. package/scripts/_dbg-rail-tree-e2e.mjs +183 -0
  389. package/scripts/_dbg-real-driver-e2e.mjs +55 -0
  390. package/scripts/_dbg-redesign-shots.mjs +34 -0
  391. package/scripts/_dbg-restart-persist.mjs +41 -0
  392. package/scripts/_dbg-rollback-mgr-audit.mjs +169 -0
  393. package/scripts/_dbg-rpg.mjs +71 -0
  394. package/scripts/_dbg-sc001-dispatch.mjs +63 -0
  395. package/scripts/_dbg-scenario-final-shot.mjs +24 -0
  396. package/scripts/_dbg-scenario-phase-e2.mjs +75 -0
  397. package/scripts/_dbg-scenario-phase-e3.mjs +96 -0
  398. package/scripts/_dbg-scenario-phase1.mjs +90 -0
  399. package/scripts/_dbg-scenario-phase2.mjs +105 -0
  400. package/scripts/_dbg-scenario-phase3-monitor.mjs +48 -0
  401. package/scripts/_dbg-scenario-phase3.mjs +111 -0
  402. package/scripts/_dbg-scene-polish-shot.mjs +118 -0
  403. package/scripts/_dbg-selring-probe.mjs +47 -0
  404. package/scripts/_dbg-sideinfo.mjs +101 -0
  405. package/scripts/_dbg-splitter.mjs +88 -0
  406. package/scripts/_dbg-team-repro.mjs +76 -0
  407. package/scripts/_dbg-town-alarm-e2e.mjs +40 -0
  408. package/scripts/_dbg-town-beauty-shots.mjs +54 -0
  409. package/scripts/_dbg-town-daq-shot.mjs +26 -0
  410. package/scripts/_dbg-town-full-e2e.mjs +104 -0
  411. package/scripts/_dbg-town-gate.mjs +44 -0
  412. package/scripts/_dbg-town-ins-probe.mjs +37 -0
  413. package/scripts/_dbg-town-perf.mjs +50 -0
  414. package/scripts/_dbg-town-polish-shots.mjs +82 -0
  415. package/scripts/_dbg-town-realtime.mjs +42 -0
  416. package/scripts/_dbg-town-shot3.mjs +17 -0
  417. package/scripts/_dbg-town-truth.mjs +37 -0
  418. package/scripts/_dbg-town-truth2.mjs +27 -0
  419. package/scripts/_dbg-transform-audit.mjs +98 -0
  420. package/scripts/_dbg-trend-expand-test.mjs +38 -0
  421. package/scripts/_dbg-twindaq-focus.mjs +81 -0
  422. package/scripts/_dbg-ui-polish-shot.mjs +43 -0
  423. package/scripts/_dbg-ui-polish-verify1.mjs +92 -0
  424. package/scripts/_dbg-ui-polish-verify2.mjs +50 -0
  425. package/scripts/_dbg-ui-polish-verify3.mjs +51 -0
  426. package/scripts/_dbg-ui-polish-verify4.mjs +50 -0
  427. package/scripts/_dbg-ui-shot.mjs +26 -0
  428. package/scripts/_dbg-unify-shot.mjs +43 -0
  429. package/scripts/_dbg-uplink-probe.mjs +36 -0
  430. package/scripts/_dbg-wizard-preview-shot.mjs +58 -0
  431. package/scripts/_dbg-wizard-ui-e2e.mjs +93 -0
  432. package/scripts/_dbg-ws-probe.mjs +86 -0
  433. package/scripts/_dbg-ws-shot2.mjs +23 -0
  434. package/scripts/_dbg-wsdot-sanity.mjs +25 -0
  435. package/scripts/_dev-stack.mjs +46 -0
  436. package/scripts/_http-driver-probe.mjs +30 -0
  437. package/scripts/_lib-dcw-line.mjs +24 -0
  438. package/scripts/_mqtt-driver-probe.mjs +30 -0
  439. package/scripts/_newdriver-rest-probe.mjs +100 -0
  440. package/scripts/_node-state-probe.mjs +5 -0
  441. package/scripts/_opcua-driver-probe.mjs +31 -0
  442. package/scripts/_rtu-debug.mjs +41 -0
  443. package/scripts/_rtu-direct.mjs +6 -0
  444. package/scripts/_rtu-driver-probe.mjs +53 -0
  445. package/scripts/_rtu-mini-slave.mjs +63 -0
  446. package/scripts/_townview_style.css +1185 -0
  447. package/scripts/_townview_template.html +1215 -0
  448. package/scripts/_wizard-shots.mjs +90 -0
  449. package/scripts/acceptance-suite.py +207 -0
  450. package/scripts/api-live-e2e.mjs +467 -0
  451. package/scripts/build-anime-models.mjs +339 -0
  452. package/scripts/build-character-models.mjs +175 -0
  453. package/scripts/build-film-devices.mjs +227 -0
  454. package/scripts/build-model-3d.mjs +173 -0
  455. package/scripts/build-player-sheet.mjs +58 -0
  456. package/scripts/build-world-map.mjs +188 -0
  457. package/scripts/build-wuwa-assets.mjs +345 -0
  458. package/scripts/collab-live-test.py +177 -0
  459. package/scripts/debug-mcp-http.ts +64 -0
  460. package/scripts/demo-lead-worker.ts +256 -0
  461. package/scripts/demo-modes.ts +415 -0
  462. package/scripts/demo-omp-channel.ts +135 -0
  463. package/scripts/design-preflight.mjs +223 -0
  464. package/scripts/design-verify-templates.mjs +110 -0
  465. package/scripts/design-verify.mjs +170 -0
  466. package/scripts/dev-guard.mjs +74 -0
  467. package/scripts/dev-modbus-simulator.mjs +55 -0
  468. package/scripts/dev-opcua-simulator.mjs +57 -0
  469. package/scripts/dev-protocol-simulators.mjs +145 -0
  470. package/scripts/dev-window.cmd +6 -0
  471. package/scripts/device-line-restore.mjs +34 -0
  472. package/scripts/diag-lead-status.ts +101 -0
  473. package/scripts/e2e-a2a-steer-live.mjs +193 -0
  474. package/scripts/e2e-agent-channel-task.ts +151 -0
  475. package/scripts/e2e-agent-team.mjs +168 -0
  476. package/scripts/e2e-auth-matrix.mjs +119 -0
  477. package/scripts/e2e-channel-isolation.ts +325 -0
  478. package/scripts/e2e-dual-drive-comm.ts +259 -0
  479. package/scripts/e2e-lead-team-mgmt.ts +217 -0
  480. package/scripts/e2e-memory-persistence.ts +320 -0
  481. package/scripts/e2e-memory-system.ts +332 -0
  482. package/scripts/e2e-omp-modes.ts +274 -0
  483. package/scripts/e2e-omp-realtime.ts +258 -0
  484. package/scripts/e2e-omp-workspace.ts +180 -0
  485. package/scripts/e2e-parallel-execution.mjs +151 -0
  486. package/scripts/e2e-rest-memory.mjs +251 -0
  487. package/scripts/e2e-rest-robustness.mjs +177 -0
  488. package/scripts/e2e-resume-crash.mjs +254 -0
  489. package/scripts/e2e-tab-close.mjs +136 -0
  490. package/scripts/e2e-task-queue.ts +277 -0
  491. package/scripts/e2e-template-isolation.mjs +267 -0
  492. package/scripts/e2e-token-ui.mjs +149 -0
  493. package/scripts/final-soup-run.py +192 -0
  494. package/scripts/final-soup-watch.py +83 -0
  495. package/scripts/home-bootstrap.mjs +117 -0
  496. package/scripts/i18n-codemod.mjs +173 -0
  497. package/scripts/i18n-fix-en.py +28 -0
  498. package/scripts/i18n-fix-en2.py +31 -0
  499. package/scripts/i18n-merge.mjs +67 -0
  500. package/scripts/omp-real-test.py +328 -0
  501. package/scripts/smoke-optimization-verify.ts +72 -0
  502. package/scripts/start.mjs +60 -0
  503. package/scripts/test-a2a-relay.mjs +222 -0
  504. package/scripts/test-a2a-types.ts +296 -0
  505. package/scripts/test-agent-brain.ts +135 -0
  506. package/scripts/test-agent-multi-channel.ts +160 -0
  507. package/scripts/test-agent-runtime.ts +348 -0
  508. package/scripts/test-api-client.ts +108 -0
  509. package/scripts/test-api-suite.mjs +271 -0
  510. package/scripts/test-block-consumption.mjs +194 -0
  511. package/scripts/test-channel-routing.ts +301 -0
  512. package/scripts/test-cmd-render.mjs +218 -0
  513. package/scripts/test-collab-e2e.mjs +136 -0
  514. package/scripts/test-collab-omp.mjs +192 -0
  515. package/scripts/test-dedup-logic.ts +132 -0
  516. package/scripts/test-dual-drive.ts +227 -0
  517. package/scripts/test-e2e-collaboration.ts +262 -0
  518. package/scripts/test-e2e-monitor.ts +192 -0
  519. package/scripts/test-event-history.ts +112 -0
  520. package/scripts/test-event-persistence.mjs +169 -0
  521. package/scripts/test-exec-modes.ts +316 -0
  522. package/scripts/test-fifo-realtime.mjs +193 -0
  523. package/scripts/test-final-e2e.mjs +290 -0
  524. package/scripts/test-full-system.ts +439 -0
  525. package/scripts/test-game-session.ts +160 -0
  526. package/scripts/test-goal-summary.ts +202 -0
  527. package/scripts/test-harness-liveness.ts +109 -0
  528. package/scripts/test-harness-terminal.ts +164 -0
  529. package/scripts/test-header-trail.mjs +95 -0
  530. package/scripts/test-hitl.ts +360 -0
  531. package/scripts/test-koda-restyle.mjs +105 -0
  532. package/scripts/test-lane-history-live.mjs +103 -0
  533. package/scripts/test-lane-raw.ts +67 -0
  534. package/scripts/test-lanes-history-render.mjs +138 -0
  535. package/scripts/test-loop-omp.mjs +154 -0
  536. package/scripts/test-mcp-tools.ts +285 -0
  537. package/scripts/test-mdlite.ts +53 -0
  538. package/scripts/test-memory-dynamic.ts +99 -0
  539. package/scripts/test-memory-maintenance.ts +117 -0
  540. package/scripts/test-memory-vector.ts +154 -0
  541. package/scripts/test-memory.ts +431 -0
  542. package/scripts/test-mock-collab.mjs +226 -0
  543. package/scripts/test-modern-render.mjs +174 -0
  544. package/scripts/test-omp-terminal.mjs +187 -0
  545. package/scripts/test-orchestration.ts +425 -0
  546. package/scripts/test-persistence-lazy.ts +323 -0
  547. package/scripts/test-prompt-system.mjs +181 -0
  548. package/scripts/test-prompts-loader.ts +56 -0
  549. package/scripts/test-protocol.ts +156 -0
  550. package/scripts/test-real-scenario.mjs +290 -0
  551. package/scripts/test-route-reason.mjs +111 -0
  552. package/scripts/test-scheduler-loop.ts +469 -0
  553. package/scripts/test-stream-render.ts +37 -0
  554. package/scripts/test-task-drawer.mjs +204 -0
  555. package/scripts/test-task-engine.ts +433 -0
  556. package/scripts/test-task-invariants.mjs +169 -0
  557. package/scripts/test-terminal-e2e.mjs +264 -0
  558. package/scripts/test-town-3d.mjs +121 -0
  559. package/scripts/test-town-drag.mjs +218 -0
  560. package/scripts/test-town-layout.mjs +200 -0
  561. package/scripts/test-town-page.mjs +136 -0
  562. package/scripts/test-town-scene-math.ts +169 -0
  563. package/scripts/test-town-twin.mjs +121 -0
  564. package/scripts/test-town-upload.mjs +89 -0
  565. package/scripts/test-town-user-flow.mjs +619 -0
  566. package/scripts/test-town-world.mjs +76 -0
  567. package/scripts/test-town-wuwa.mjs +198 -0
  568. package/scripts/test-user-isolation.mjs +193 -0
  569. package/scripts/test-workshop-db.ts +280 -0
  570. package/scripts/test-workshop-entries.ts +370 -0
  571. package/scripts/test-workspace-api.ts +329 -0
  572. package/scripts/test-ws-aep.mjs +187 -0
  573. package/scripts/test-ws-protocol.ts +134 -0
  574. package/scripts/test-ws-stress.mjs +208 -0
  575. package/scripts/town-demo-seed.mjs +75 -0
  576. package/scripts/town-scene-clear.mjs +56 -0
  577. package/scripts/ui-screenshot.mjs +128 -0
  578. package/scripts/verify-a2a-live.mjs +124 -0
  579. package/scripts/verify-exec-modes-report.ts +248 -0
  580. package/scripts/verify-game.mjs +477 -0
  581. package/scripts/verify-lead-mail.ts +188 -0
  582. package/scripts/verify-page-smoke.mjs +87 -0
  583. package/scripts/verify-ws-events.mjs +123 -0
  584. package/scripts/ws-test.mjs +176 -0
  585. package/scripts/ws-test.py +4 -0
  586. package/server/api/health.get.ts +32 -0
  587. package/server/api/mcp/workshop.ts +78 -0
  588. package/server/api/metrics.ts +75 -0
  589. package/server/api/system/config.get.ts +12 -0
  590. package/server/api/system/monitor/terminal/ws.ts +177 -0
  591. package/server/api/system/monitor/terminate.post.ts +36 -0
  592. package/server/api/system/monitor.get.ts +13 -0
  593. package/server/api/system/settings/events.get.ts +28 -0
  594. package/server/api/system/settings/index.get.ts +14 -0
  595. package/server/api/system/settings/index.patch.ts +22 -0
  596. package/server/api/system/settings/reset.post.ts +12 -0
  597. package/server/api/users/[id].delete.ts +11 -0
  598. package/server/api/users/[id].get.ts +11 -0
  599. package/server/api/users/[id].put.ts +14 -0
  600. package/server/api/users/index.get.ts +13 -0
  601. package/server/api/users/index.post.ts +13 -0
  602. package/server/api/users/login.post.ts +11 -0
  603. package/server/api/users/logout.post.ts +9 -0
  604. package/server/api/users/me.get.ts +9 -0
  605. package/server/api/users/register.post.ts +11 -0
  606. package/server/api/users/tokens/[id]/token.get.ts +11 -0
  607. package/server/api/users/tokens/[id].delete.ts +11 -0
  608. package/server/api/users/tokens/[id].patch.ts +14 -0
  609. package/server/api/users/tokens/index.get.ts +9 -0
  610. package/server/api/users/tokens/index.post.ts +13 -0
  611. package/server/api/workshop/[...path].ts +13 -0
  612. package/server/api/workshop/a2a/[agentId]/card/index.get.ts +75 -0
  613. package/server/api/workshop/a2a/[agentId]/rpc/index.post.ts +429 -0
  614. package/server/api/workshop/a2a/send.post.ts +28 -0
  615. package/server/api/workshop/agent-tools/approvals/[id]/decide.post.ts +21 -0
  616. package/server/api/workshop/agent-tools/approvals/index.get.ts +18 -0
  617. package/server/api/workshop/agent-tools/bindings/[id].delete.ts +21 -0
  618. package/server/api/workshop/agent-tools/bindings/[id].patch.ts +14 -0
  619. package/server/api/workshop/agent-tools/bindings/index.get.ts +14 -0
  620. package/server/api/workshop/agent-tools/bindings/index.post.ts +20 -0
  621. package/server/api/workshop/agent-tools/invoke.post.ts +34 -0
  622. package/server/api/workshop/agents/[id].delete.ts +20 -0
  623. package/server/api/workshop/agents/[id].get.ts +19 -0
  624. package/server/api/workshop/agents/[id].patch.ts +30 -0
  625. package/server/api/workshop/agents/index.get.ts +13 -0
  626. package/server/api/workshop/agents/index.post.ts +29 -0
  627. package/server/api/workshop/agents/subscribe.post.ts +21 -0
  628. package/server/api/workshop/approvals/[id]/decide.post.ts +30 -0
  629. package/server/api/workshop/approvals/index.get.ts +22 -0
  630. package/server/api/workshop/assets/character/[id].delete.ts +33 -0
  631. package/server/api/workshop/assets/character/index.get.ts +17 -0
  632. package/server/api/workshop/assets/character/index.post.ts +87 -0
  633. package/server/api/workshop/assets/devices/[id].delete.ts +43 -0
  634. package/server/api/workshop/assets/devices/index.get.ts +103 -0
  635. package/server/api/workshop/assets/devices/index.post.ts +53 -0
  636. package/server/api/workshop/audit.get.ts +43 -0
  637. package/server/api/workshop/caller.ts +141 -0
  638. package/server/api/workshop/channel-templates/[id]/instantiate.post.ts +31 -0
  639. package/server/api/workshop/channel-templates/[id].delete.ts +20 -0
  640. package/server/api/workshop/channel-templates/[id].get.ts +19 -0
  641. package/server/api/workshop/channel-templates/[id].patch.ts +48 -0
  642. package/server/api/workshop/channel-templates/from-channel.post.ts +31 -0
  643. package/server/api/workshop/channel-templates/index.get.ts +13 -0
  644. package/server/api/workshop/channel-templates/index.post.ts +61 -0
  645. package/server/api/workshop/channels/[id]/activate.post.ts +19 -0
  646. package/server/api/workshop/channels/[id]/agents/[agentId]/memories/[memoryId].delete.ts +30 -0
  647. package/server/api/workshop/channels/[id]/agents/[agentId]/memories/index.get.ts +29 -0
  648. package/server/api/workshop/channels/[id]/agents/[agentId]/memories/index.post.ts +48 -0
  649. package/server/api/workshop/channels/[id]/agents/[agentId]/memories/search.post.ts +43 -0
  650. package/server/api/workshop/channels/[id]/agents/[agentId]/model.patch.ts +39 -0
  651. package/server/api/workshop/channels/[id]/agents/[agentId]/position.patch.ts +33 -0
  652. package/server/api/workshop/channels/[id]/agents/[agentId]/range.patch.ts +54 -0
  653. package/server/api/workshop/channels/[id]/agents/[agentId]/stop.post.ts +25 -0
  654. package/server/api/workshop/channels/[id]/agents/[agentId].delete.ts +23 -0
  655. package/server/api/workshop/channels/[id]/agents/[agentId].patch.ts +28 -0
  656. package/server/api/workshop/channels/[id]/agents/index.get.ts +27 -0
  657. package/server/api/workshop/channels/[id]/agents/index.post.ts +61 -0
  658. package/server/api/workshop/channels/[id]/events.get.ts +55 -0
  659. package/server/api/workshop/channels/[id]/index.get.ts +18 -0
  660. package/server/api/workshop/channels/[id]/index.patch.ts +30 -0
  661. package/server/api/workshop/channels/[id]/memories/[memoryId].delete.ts +29 -0
  662. package/server/api/workshop/channels/[id]/memories/index.get.ts +28 -0
  663. package/server/api/workshop/channels/[id]/memories/index.post.ts +42 -0
  664. package/server/api/workshop/channels/[id]/messages/index.get.ts +56 -0
  665. package/server/api/workshop/channels/[id]/messages/index.post.ts +75 -0
  666. package/server/api/workshop/channels/[id]/queue.get.ts +25 -0
  667. package/server/api/workshop/channels/[id]/tasks/index.get.ts +24 -0
  668. package/server/api/workshop/channels/[id]/tasks/index.post.ts +79 -0
  669. package/server/api/workshop/channels/[id]/terminals.get.ts +21 -0
  670. package/server/api/workshop/channels/[id].delete.ts +18 -0
  671. package/server/api/workshop/channels.get.ts +11 -0
  672. package/server/api/workshop/channels.post.ts +48 -0
  673. package/server/api/workshop/daq/[id]/bind.post.ts +19 -0
  674. package/server/api/workshop/daq/[id]/samples.get.ts +22 -0
  675. package/server/api/workshop/daq/[id]/test.post.ts +17 -0
  676. package/server/api/workshop/daq/[id].delete.ts +30 -0
  677. package/server/api/workshop/daq/[id].patch.ts +31 -0
  678. package/server/api/workshop/daq/alarms/[id]/ack.post.ts +15 -0
  679. package/server/api/workshop/daq/alarms.get.ts +16 -0
  680. package/server/api/workshop/daq/controller.post.ts +52 -0
  681. package/server/api/workshop/daq/index.get.ts +40 -0
  682. package/server/api/workshop/daq/index.post.ts +33 -0
  683. package/server/api/workshop/daq/infra/reconnect.post.ts +17 -0
  684. package/server/api/workshop/daq/infra.get.ts +11 -0
  685. package/server/api/workshop/daq/templates/[key].delete.ts +17 -0
  686. package/server/api/workshop/daq/templates/[key].patch.ts +18 -0
  687. package/server/api/workshop/daq/templates/index.post.ts +17 -0
  688. package/server/api/workshop/daq/test-driver.post.ts +23 -0
  689. package/server/api/workshop/dcw/[id]/bind.post.ts +17 -0
  690. package/server/api/workshop/dcw/[id]/param-ledger.get.ts +15 -0
  691. package/server/api/workshop/dcw/[id]/test.post.ts +15 -0
  692. package/server/api/workshop/dcw/[id]/write.post.ts +19 -0
  693. package/server/api/workshop/dcw/[id].delete.ts +30 -0
  694. package/server/api/workshop/dcw/[id].patch.ts +18 -0
  695. package/server/api/workshop/dcw/controller.post.ts +43 -0
  696. package/server/api/workshop/dcw/index.get.ts +25 -0
  697. package/server/api/workshop/dcw/index.post.ts +20 -0
  698. package/server/api/workshop/dcw/journal/index.get.ts +21 -0
  699. package/server/api/workshop/dcw/journal/node/[nodeId]/rollback.post.ts +22 -0
  700. package/server/api/workshop/dcw/line/query.get.ts +31 -0
  701. package/server/api/workshop/dcw/lines/[id]/start.post.ts +35 -0
  702. package/server/api/workshop/dcw/lines/[id]/stop.post.ts +34 -0
  703. package/server/api/workshop/dcw/lines/[id].delete.ts +35 -0
  704. package/server/api/workshop/dcw/lines/[id].patch.ts +15 -0
  705. package/server/api/workshop/dcw/lines/index.get.ts +14 -0
  706. package/server/api/workshop/dcw/lines/index.post.ts +31 -0
  707. package/server/api/workshop/dcw/optimizations/[id]/judge.post.ts +24 -0
  708. package/server/api/workshop/dcw/optimizations/[id]/rollback.post.ts +29 -0
  709. package/server/api/workshop/dcw/optimizations/[id]/series.get.ts +18 -0
  710. package/server/api/workshop/dcw/optimizations/[id].get.ts +17 -0
  711. package/server/api/workshop/dcw/optimizations/index.get.ts +23 -0
  712. package/server/api/workshop/dcw/products/[id].delete.ts +16 -0
  713. package/server/api/workshop/dcw/products/[id].patch.ts +17 -0
  714. package/server/api/workshop/dcw/products/index.post.ts +16 -0
  715. package/server/api/workshop/dcw/recipes/[id]/apply.post.ts +40 -0
  716. package/server/api/workshop/dcw/recipes/[id]/mark-good.post.ts +21 -0
  717. package/server/api/workshop/dcw/recipes/[id]/rollback-good.post.ts +19 -0
  718. package/server/api/workshop/dcw/recipes/[id].delete.ts +14 -0
  719. package/server/api/workshop/dcw/recipes/[id].patch.ts +16 -0
  720. package/server/api/workshop/dcw/recipes/index.get.ts +12 -0
  721. package/server/api/workshop/dcw/recipes/index.post.ts +15 -0
  722. package/server/api/workshop/dcw/runs/[id]/close.post.ts +15 -0
  723. package/server/api/workshop/dcw/runs/[id]/data.get.ts +15 -0
  724. package/server/api/workshop/dcw/runs/[id]/rollback.post.ts +20 -0
  725. package/server/api/workshop/dcw/runs/index.get.ts +11 -0
  726. package/server/api/workshop/dcw/templates/[key].delete.ts +14 -0
  727. package/server/api/workshop/dcw/templates/[key].patch.ts +16 -0
  728. package/server/api/workshop/dcw/templates/index.post.ts +15 -0
  729. package/server/api/workshop/dcw/test-driver.post.ts +16 -0
  730. package/server/api/workshop/device-twins/[id]/control.post.ts +21 -0
  731. package/server/api/workshop/device-twins/[id]/telemetry.post.ts +21 -0
  732. package/server/api/workshop/device-twins/[id].delete.ts +25 -0
  733. package/server/api/workshop/device-twins/[id].patch.ts +29 -0
  734. package/server/api/workshop/device-twins/index.get.ts +16 -0
  735. package/server/api/workshop/device-twins/index.post.ts +32 -0
  736. package/server/api/workshop/fs/dirs.get.ts +40 -0
  737. package/server/api/workshop/mailbox/all.get.ts +19 -0
  738. package/server/api/workshop/mailbox.get.ts +14 -0
  739. package/server/api/workshop/memories/maintenance.post.ts +15 -0
  740. package/server/api/workshop/ops-logs/index.get.ts +30 -0
  741. package/server/api/workshop/ops-logs/index.post.ts +39 -0
  742. package/server/api/workshop/runtime.get.ts +11 -0
  743. package/server/api/workshop/scene/layouts/[channelId].delete.ts +23 -0
  744. package/server/api/workshop/scene/layouts/[channelId].put.ts +31 -0
  745. package/server/api/workshop/scene/layouts.get.ts +13 -0
  746. package/server/api/workshop/tasks/[id]/cancel/index.post.ts +34 -0
  747. package/server/api/workshop/tasks/[id]/complete.post.ts +32 -0
  748. package/server/api/workshop/tasks/[id]/dispatch.post.ts +30 -0
  749. package/server/api/workshop/tasks/[id]/report.post.ts +38 -0
  750. package/server/api/workshop/tasks/[id]/retry.post.ts +33 -0
  751. package/server/api/workshop/tasks/[id].get.ts +32 -0
  752. package/server/api/workshop/tasks.get.ts +13 -0
  753. package/server/api/workshop/teams/[id]/deploy.post.ts +40 -0
  754. package/server/api/workshop/teams/[id]/members/[agentId].delete.ts +19 -0
  755. package/server/api/workshop/teams/[id]/members/index.get.ts +19 -0
  756. package/server/api/workshop/teams/[id]/members/index.post.ts +32 -0
  757. package/server/api/workshop/teams/[id].delete.ts +20 -0
  758. package/server/api/workshop/teams/[id].get.ts +19 -0
  759. package/server/api/workshop/teams/[id].patch.ts +32 -0
  760. package/server/api/workshop/teams/index.get.ts +13 -0
  761. package/server/api/workshop/teams/index.post.ts +27 -0
  762. package/server/api/workshop/users/me.get.ts +23 -0
  763. package/server/api/workshop/users/register.post.ts +33 -0
  764. package/server/api/workshop/workspaces/[id]/channel-templates/[tplId].post.ts +31 -0
  765. package/server/api/workshop/workspaces/[id]/channels/[channelId].delete.ts +15 -0
  766. package/server/api/workshop/workspaces/[id]/channels/[channelId].post.ts +15 -0
  767. package/server/api/workshop/workspaces/[id]/index.delete.ts +14 -0
  768. package/server/api/workshop/workspaces/index.get.ts +11 -0
  769. package/server/api/workshop/workspaces/index.post.ts +17 -0
  770. package/server/api/workshop/ws.ts +694 -0
  771. package/server/data/agent-node-bindings.json +554 -0
  772. package/server/data/daq-templates.json +16 -0
  773. package/server/data/daqs.json +2680 -0
  774. package/server/data/dcw-lines.json +919 -0
  775. package/server/data/dcw-products.json +835 -0
  776. package/server/data/dcw-recipes.json +1650 -0
  777. package/server/data/dcw-rollback.json +9339 -0
  778. package/server/data/dcw-runs.json +4633 -0
  779. package/server/data/dcw-templates.json +26 -0
  780. package/server/data/dcw-writes.json +9770 -0
  781. package/server/data/dcws.json +1736 -0
  782. package/server/data/device-twins.json +133 -0
  783. package/server/data/line-runs.json +152 -0
  784. package/server/data/scene-layouts.json +200 -0
  785. package/server/mcp/workshop-server.ts +510 -0
  786. package/server/middleware/request-log.ts +15 -0
  787. package/server/plugins/backup.ts +85 -0
  788. package/server/plugins/daq.ts +65 -0
  789. package/server/plugins/dev-stability-guard.ts +42 -0
  790. package/server/plugins/security.ts +29 -0
  791. package/server/plugins/system-config.ts +38 -0
  792. package/server/plugins/workshop.ts +145 -0
  793. package/server/repositories/user.repository.ts +391 -0
  794. package/server/schemas/user.schema.ts +67 -0
  795. package/server/services/system-config.ts +356 -0
  796. package/server/services/user.service.ts +186 -0
  797. package/server/services/workshop/agents/adapters/omp-rpc-client.ts +539 -0
  798. package/server/services/workshop/agents/adapters/to-a2a.ts +40 -0
  799. package/server/services/workshop/agents/agent-interface.ts +219 -0
  800. package/server/services/workshop/agents/claude-agent.ts +47 -0
  801. package/server/services/workshop/agents/factory.ts +24 -0
  802. package/server/services/workshop/agents/harness-process.ts +158 -0
  803. package/server/services/workshop/agents/harness-terminal.ts +545 -0
  804. package/server/services/workshop/agents/industrial-context.ts +222 -0
  805. package/server/services/workshop/agents/industrial-tools.ts +362 -0
  806. package/server/services/workshop/agents/mock-agent.ts +396 -0
  807. package/server/services/workshop/agents/node-bindings.repo.ts +165 -0
  808. package/server/services/workshop/agents/omp-agent.ts +1598 -0
  809. package/server/services/workshop/agents/tool-approvals.ts +174 -0
  810. package/server/services/workshop/assets/character-asset.repo.ts +120 -0
  811. package/server/services/workshop/assets/device-twin.repo.ts +236 -0
  812. package/server/services/workshop/daq/alarm-notify.ts +100 -0
  813. package/server/services/workshop/daq/bus/index.ts +46 -0
  814. package/server/services/workshop/daq/bus/inproc.adapter.ts +62 -0
  815. package/server/services/workshop/daq/bus/mqtt.adapter.ts +112 -0
  816. package/server/services/workshop/daq/bus/queue-port.ts +36 -0
  817. package/server/services/workshop/daq/daq-controller.ts +778 -0
  818. package/server/services/workshop/daq/daq-node.repo.ts +96 -0
  819. package/server/services/workshop/daq/daq-node.ts +247 -0
  820. package/server/services/workshop/daq/daq-runtime.ts +168 -0
  821. package/server/services/workshop/daq/daq-templates.ts +157 -0
  822. package/server/services/workshop/daq/drivers.ts +771 -0
  823. package/server/services/workshop/daq/host-bindings.ts +71 -0
  824. package/server/services/workshop/daq/host-ports.ts +64 -0
  825. package/server/services/workshop/daq/infra.ts +202 -0
  826. package/server/services/workshop/daq/storage/index.ts +96 -0
  827. package/server/services/workshop/daq/storage/sqlite.adapter.ts +205 -0
  828. package/server/services/workshop/daq/storage/timescale.adapter.ts +185 -0
  829. package/server/services/workshop/daq/storage/tsdb-port.ts +74 -0
  830. package/server/services/workshop/db/agent.repo.ts +105 -0
  831. package/server/services/workshop/db/channel-agent.repo.ts +119 -0
  832. package/server/services/workshop/db/channel-event.repo.ts +154 -0
  833. package/server/services/workshop/db/channel-template.repo.ts +113 -0
  834. package/server/services/workshop/db/channel.repo.ts +101 -0
  835. package/server/services/workshop/db/database.ts +934 -0
  836. package/server/services/workshop/db/memory.repo.ts +249 -0
  837. package/server/services/workshop/db/message.repo.ts +149 -0
  838. package/server/services/workshop/db/ops.repo.ts +323 -0
  839. package/server/services/workshop/db/schema.sql +143 -0
  840. package/server/services/workshop/db/subscription.repo.ts +62 -0
  841. package/server/services/workshop/db/task.repo.ts +175 -0
  842. package/server/services/workshop/db/team-member.repo.ts +70 -0
  843. package/server/services/workshop/db/team.repo.ts +109 -0
  844. package/server/services/workshop/db/user.repo.ts +100 -0
  845. package/server/services/workshop/dcw/dcw-controller.ts +841 -0
  846. package/server/services/workshop/dcw/dcw-line.repo.ts +86 -0
  847. package/server/services/workshop/dcw/dcw-node.repo.ts +89 -0
  848. package/server/services/workshop/dcw/dcw-node.ts +200 -0
  849. package/server/services/workshop/dcw/dcw-product.repo.ts +95 -0
  850. package/server/services/workshop/dcw/dcw-recipe.repo.ts +349 -0
  851. package/server/services/workshop/dcw/dcw-runtime.ts +82 -0
  852. package/server/services/workshop/dcw/dcw-templates.ts +138 -0
  853. package/server/services/workshop/dcw/drivers.ts +523 -0
  854. package/server/services/workshop/dcw/line-run.ts +101 -0
  855. package/server/services/workshop/dcw/recipe-rollback-manager.ts +702 -0
  856. package/server/services/workshop/dcw/recipe-rollback.repo.ts +197 -0
  857. package/server/services/workshop/logger.ts +58 -0
  858. package/server/services/workshop/ops/ops.ts +78 -0
  859. package/server/services/workshop/prompts/loader.ts +112 -0
  860. package/server/services/workshop/runtime/agent-runtime.ts +698 -0
  861. package/server/services/workshop/runtime/channel-runtime.ts +202 -0
  862. package/server/services/workshop/runtime/embedding-provider.ts +79 -0
  863. package/server/services/workshop/runtime/execution-mode.ts +215 -0
  864. package/server/services/workshop/runtime/mailbox.ts +148 -0
  865. package/server/services/workshop/runtime/manager.ts +2543 -0
  866. package/server/services/workshop/runtime/memory.ts +439 -0
  867. package/server/services/workshop/runtime/monitor.ts +194 -0
  868. package/server/services/workshop/runtime/scheduler-loop.ts +773 -0
  869. package/server/services/workshop/runtime/task-engine.ts +574 -0
  870. package/server/services/workshop/scene/scene-layout.repo.ts +112 -0
  871. package/server/services/workshop/scene-events.ts +63 -0
  872. package/server/services/workshop/types/a2a.ts +61 -0
  873. package/server/services/workshop/types/task.ts +85 -0
  874. package/server/types/user.ts +53 -0
  875. package/server/utils/approval-gate.ts +67 -0
  876. package/server/utils/auth.ts +13 -0
  877. package/server/utils/config.ts +40 -0
  878. package/server/utils/errors.ts +24 -0
  879. package/server/utils/response.ts +49 -0
  880. package/server/utils/validate.ts +19 -0
  881. package/shared/config/engine.d.mts +41 -0
  882. package/shared/config/engine.mjs +291 -0
  883. package/shared/config/home.d.mts +48 -0
  884. package/shared/config/home.mjs +146 -0
  885. package/shared/config/schema.json +30 -0
  886. package/shared/daq-protocol.ts +361 -0
  887. package/shared/dcw-protocol.ts +576 -0
  888. package/shared/terminal-protocol.ts +70 -0
  889. package/shared/town-anim.ts +56 -0
  890. package/shared/town-behavior.ts +136 -0
  891. package/shared/town-protocol.ts +110 -0
  892. package/shared/town-scene-math.ts +283 -0
  893. package/shared/workshop-protocol.ts +199 -0
  894. package/tsconfig.json +10 -0
  895. package/uno.config.ts +37 -0
@@ -0,0 +1,1737 @@
1
+ export default {
2
+ common: {
3
+ light: 'Light',
4
+ dark: 'Dark',
5
+ confirm: 'OK',
6
+ cancel: 'Cancel',
7
+ save: 'Save',
8
+ search: 'Search',
9
+ actions: 'Actions',
10
+ edit: 'Edit',
11
+ delete: 'Delete',
12
+ status: 'Status',
13
+ all: 'All',
14
+ },
15
+ menu: {
16
+ system: 'AgentWorkShop',
17
+ dashboard: 'Dashboard',
18
+ workshop: 'Agent Harness',
19
+ town: 'AgentWorkShop',
20
+ tokens: 'API Tokens',
21
+ daq: 'DAQ Console',
22
+ dcw: 'Line Ops',
23
+ logs: 'Logs',
24
+ users: 'Users',
25
+ monitor: 'Runtime Monitor',
26
+ settings: 'Settings',
27
+ },
28
+ header: {
29
+ collapse: 'Collapse menu',
30
+ expand: 'Expand menu',
31
+ language: 'Language',
32
+ theme: 'Theme',
33
+ fullscreen: 'Fullscreen',
34
+ notifications: 'Notifications',
35
+ profile: 'Profile',
36
+ guest: 'Guest',
37
+ logout: 'Log out',
38
+ trail: 'Route trail (click to return)',
39
+ workspace: 'Workspace',
40
+ },
41
+ home: {
42
+ kicker: 'DIGITAL TWIN · LINE OPS',
43
+ heroTitle: 'The operations hub where lines run',
44
+ heroAccent: 'in twin',
45
+ 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.',
46
+ ctaTown: 'Open Digital Twin',
47
+ ctaLine: 'Line Operations',
48
+ live: 'LIVE',
49
+ kpi: {
50
+ lines: 'Running Lines',
51
+ dcwNodes: 'Control Nodes',
52
+ daqNodes: 'DAQ Channels',
53
+ samples: 'Samples Stored',
54
+ writeRate: 'Write Success',
55
+ alarms: 'Active Alarms',
56
+ },
57
+ charts: {
58
+ trend: 'Live Condition Trends',
59
+ trendSub: 'Normalized per node range · last 3 min',
60
+ lineState: 'Line States',
61
+ pipeline: 'DAQ Pipeline Throughput',
62
+ writeCtl: 'Write Success Rate',
63
+ nodeState: 'Node State Mix',
64
+ lines: 'Line Fleet',
65
+ },
66
+ trendY: 'Range %',
67
+ runNow: 'Running',
68
+ standBy: 'Standby',
69
+ pipelineSeries: { produced: 'Produced', consumed: 'Consumed', stored: 'Stored' },
70
+ stateDaq: 'DAQ Nodes',
71
+ stateDcw: 'Control Nodes',
72
+ states: { ok: 'OK', warn: 'Warn', alarm: 'Alarm', writing: 'Writing', idle: 'Idle', error: 'Error', offline: 'Offline' },
73
+ batch: 'Batch',
74
+ nodesUnit: 'Control nodes',
75
+ daqUnit: 'DAQ channels',
76
+ tagged: 'Tagged samples',
77
+ noLine: 'No lines yet — create one in Line Operations',
78
+ fleetAll: 'View all lines',
79
+ fleetHint: 'Running first · top 8 shown',
80
+ writesFailed: 'failed',
81
+ fields: {
82
+ name: 'App Name',
83
+ version: 'Version',
84
+ mode: 'Mode',
85
+ devPort: 'Dev Port',
86
+ prodPort: 'Prod Port',
87
+ apiBase: 'API Base',
88
+ primary: 'Primary Color',
89
+ },
90
+
91
+ },
92
+ users: {
93
+ krkb23h011: '{p0} role changed to {p1}',
94
+ k1u7u12g012: '{p0} {p1}',
95
+ knh5f2r013: 'Deleted {p0}',
96
+ k3xhfg009: 'Enable',
97
+ k3wsi1010: 'Disabled',
98
+ k1jk2os9001: 'Delete this user? (Their resources are kept and ownership remains traceable)',
99
+ k1flpho5002: 'Manage global users and roles (admins have the highest privileges: full monitoring, any template, user management).',
100
+ kpdo6rc003: 'Admin privileges required',
101
+ k1mue9bl004: 'User management is admin-only; contact an administrator to change roles.',
102
+ k3xakp005: 'Delete',
103
+ k1br33vc006: 'Load failed',
104
+ k1enhqn3007: 'Update failed',
105
+ k1bphrb3008: 'Delete failed',
106
+ title: 'User Management',
107
+ subtitle: 'Manage system users, roles and access permissions',
108
+ add: 'Add User',
109
+ search: 'Search name or email',
110
+ deleteConfirm: 'Are you sure to delete this user?',
111
+ name: 'Username',
112
+ email: 'Email',
113
+ role: 'Role',
114
+ created: 'Created',
115
+ roleAdmin: 'Admin',
116
+ roleEditor: 'Editor',
117
+ roleUser: 'User',
118
+ active: 'Active',
119
+ disabled: 'Disabled',
120
+ },
121
+ settings: {
122
+ title: 'System Settings',
123
+ subtitle: 'Configure app basics, theme appearance and notifications',
124
+ basic: 'General',
125
+ basicDesc: 'Application name, description and other basics',
126
+ theme: 'Appearance',
127
+ themeDesc: 'Customize primary color and display mode',
128
+ notification: 'Notifications',
129
+ notificationDesc: 'Manage how system messages are delivered',
130
+ appName: 'App Name',
131
+ appDesc: 'Description',
132
+ primaryColor: 'Primary Color',
133
+ themeMode: 'Display Mode',
134
+ appearanceDesc: 'Accent color, dark mode and language, applied live and persisted automatically (localStorage).',
135
+ accentDesc: 'Warm-editorial defaults to the ink pill; pick a muted preset to preview instantly.',
136
+ accentInk: 'Ink',
137
+ accentStone: 'Amber',
138
+ accentMoss: 'Moss',
139
+ accentSlate: 'Slate',
140
+ accentPlum: 'Plum',
141
+ accentClay: 'Clay',
142
+ accentApplied: 'Accent applied',
143
+ accentReset: 'Reset to default ink (follows config.yml)',
144
+ accentResetAction: 'Reset to default ink',
145
+ darkDesc: 'Deep-navy control-room dark ramp; light mode keeps the editorial paper look.',
146
+ languageDesc: 'Interface language (zh-CN / en); applies immediately.',
147
+ systemTab: 'System',
148
+ systemDesc: 'Read-only runtime parameters (sourced from config.yml via nuxt.config runtimeConfig).',
149
+ identity: 'Signed in as',
150
+ identityGuest: 'Not signed in (workshop data requires sign-in)',
151
+ emailNotify: 'Email Notifications',
152
+ emailNotifyDesc: 'Push important events to administrators via email',
153
+ smsNotify: 'SMS Notifications',
154
+ smsNotifyDesc: 'Deliver urgent alerts instantly via SMS',
155
+ pushNotify: 'In-App Push',
156
+ pushNotifyDesc: 'Real-time message alerts in the browser',
157
+ saveSuccess: 'Settings saved',
158
+ runtimeTab: 'Runtime config',
159
+ runtime: {
160
+ title: 'Runtime config',
161
+ 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.',
162
+ live: 'live',
163
+ restart: 'restart',
164
+ save: 'Save settings',
165
+ resetAll: 'Reset all to defaults',
166
+ resetKey: 'Reset to default',
167
+ savedLive: 'Saved — live keys hot-reloaded',
168
+ restartNotice: 'Saved. These keys take effect after restarting the matching mode: {keys}',
169
+ keyReset: 'Reset to default: {key}',
170
+ resetAllDone: 'All runtime overrides cleared (falling back to config.yml)',
171
+ groupServer: 'Server',
172
+ groupApp: 'App',
173
+ groupTheme: 'Theme',
174
+ groupI18n: 'i18n',
175
+ groupSecurity: 'Security',
176
+ groupDaq: 'DAQ',
177
+ server: {
178
+ host: 'Listen address',
179
+ devPort: 'Dev port',
180
+ prodPort: 'Prod port',
181
+ },
182
+ app: {
183
+ title: 'App title',
184
+ description: 'App description',
185
+ },
186
+ api: {
187
+ baseURL: 'API base URL',
188
+ timeout: 'API timeout (ms)',
189
+ pageSize: 'Default page size',
190
+ maxPageSize: 'Max page size',
191
+ },
192
+ theme: {
193
+ primaryColor: 'Primary color',
194
+ mode: 'Theme mode',
195
+ },
196
+ i18n: {
197
+ defaultLocale: 'Default locale',
198
+ },
199
+ security: {
200
+ approvalGate: 'Dual approval for high-risk ops',
201
+ },
202
+ daq: {
203
+ startInfrastructure: 'DAQ infra policy',
204
+ mqttHost: 'MQTT broker host',
205
+ mqttPort: 'MQTT broker port',
206
+ tsHost: 'Timescale host',
207
+ tsPort: 'Timescale port',
208
+ },
209
+ },
210
+ },
211
+ monitor: {
212
+ k1dzryry003: 'My resources',
213
+ k16zpmg9002: 'admin full view',
214
+ k1dg9sr8001: 'Owner',
215
+ title: 'Runtime Monitor',
216
+ subtitle: 'Wired ChannelRunTimes / AgentRunTimes and harness processes ledger',
217
+ refresh: 'Refresh',
218
+ autoRefresh: 'Auto refresh',
219
+ needLogin: 'Sign in required to inspect runtime resources',
220
+ goLogin: 'Go to sign in',
221
+ loadFailed: 'Failed to load monitor data',
222
+ failed: 'Operation failed',
223
+ channels: 'Channel Runtimes',
224
+ agents: 'Agent Runtimes',
225
+ aliveProcesses: 'Alive harness procs',
226
+ orphan: 'orphan',
227
+ server: 'Server process',
228
+ updated: 'snapshot',
229
+ channelRuntimes: 'ChannelRunTime',
230
+ agentRuntimes: 'AgentRunTime',
231
+ harnessProcesses: 'harness processes',
232
+ chChannel: 'Channel',
233
+ members: 'Members',
234
+ wired: 'Wired',
235
+ scheduler: 'Scheduler',
236
+ scheduling: 'running',
237
+ lead: 'Lead',
238
+ name: 'Name',
239
+ role: 'Role',
240
+ harness: 'harness',
241
+ state: 'State',
242
+ stateIdle: 'Idle',
243
+ stateBusy: 'Busy',
244
+ stateStopped: 'Stopped',
245
+ currentTask: 'Current task',
246
+ queue: 'Queue',
247
+ channel: 'Channel',
248
+ actions: 'Actions',
249
+ terminate: 'Terminate',
250
+ terminated: 'terminated',
251
+ terminateConfirm: 'Terminating this process will also stop and unload its AgentRuntime. Confirm terminate',
252
+ terminatePidConfirm: 'Force-kill this process (PID); a bound runtime is stopped along with it. Confirm',
253
+ binding: 'Binding',
254
+ bound: 'bound',
255
+ agent: 'Agent',
256
+ command: 'Command',
257
+ startedAt: 'Started',
258
+ alive: 'Alive',
259
+ exited: 'Exited',
260
+ openTerminal: 'Terminal',
261
+ openTerminalHint: 'Attach to this omp process native terminal (live TUI output + HITL control)',
262
+ },
263
+ terminal: {
264
+ title: 'harness terminal',
265
+ abort: 'Abort',
266
+ clear: 'Clear',
267
+ stateIdle: 'idle',
268
+ stateRunning: 'turn running',
269
+ stateStreaming: 'streaming',
270
+ stateExited: 'process exited',
271
+ connOpen: 'live',
272
+ connConnecting: 'connecting',
273
+ connRetrying: 'retrying',
274
+ connClosed: 'offline',
275
+ 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',
276
+ hitlTitle: 'HITL dialog · waiting for your answer',
277
+ hitlCancel: 'Cancel dialog',
278
+ hitlConfirm: 'Confirm',
279
+ hitlDeny: 'Deny',
280
+ hitlSubmit: 'Submit',
281
+ },
282
+ agents: {
283
+ k3pa5h4025: 'Templates',
284
+ k3xhia001: 'Name',
285
+ k3lrqn0002: 'Visibility',
286
+ k3l98u7003: 'Creator',
287
+ k3mr526004: 'Instances',
288
+ k3xhfg005: 'Enable',
289
+ k40aa6006: 'Actions',
290
+ keetzvf007: 'Delete template? (Cloned instances are kept)',
291
+ 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.',
292
+ krpx6qa009: 'Back to Workspace',
293
+ k1efixrj010: 'New Template',
294
+ ka1gpdj011: 'Admin view: templates and creators of all users are visible',
295
+ k45eb0012: 'Edit',
296
+ k3xakp013: 'Delete',
297
+ k1d036zs014: 'No instances yet',
298
+ k17jfge3015: 'Private (visible only to you)',
299
+ k1tt5zyo016: 'Public (readable and usable by everyone, only you can modify)',
300
+ k3x23c017: 'Built-in',
301
+ k3wv1t018: 'Public',
302
+ k447jj019: 'Private',
303
+ k3n9aij020: 'Updated',
304
+ k3n5hak021: 'Created',
305
+ k3n5sd7022: 'Deleted',
306
+ kxa6cxx023: 'Published: readable and usable by everyone, only you can modify',
307
+ k1xxabaf024: 'Switched to private',
308
+ },
309
+ ctpl: {
310
+ kefkfnl030: 'Instantiated: {p0} ({p1} members); mount it from the workspace',
311
+ k1f54iqd029: 'Template Hub',
312
+ k117jag9001: 'Delete template? (Instantiated Channels are not affected)',
313
+ knjomku002: 'Create Channel from template (members auto-assembled)',
314
+ k1f55q76003: 'Template Name',
315
+ k40gkk004: 'Description',
316
+ k1ju32o7005: 'Select lead template (optional)',
317
+ k5uq1js006: 'Worker member templates (cloned one by one on instantiation)',
318
+ kqmdkc9007: 'Select member templates (optional)',
319
+ k1q87yho008: 'Scenario prompt (injected into all members)',
320
+ kk4u5cr009: 'Working directory (empty = default at instantiation)',
321
+ k3lrqn0010: 'Visibility',
322
+ 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.',
323
+ krpx6qa012: 'Back to Workspace',
324
+ k1efixrj013: 'New Template',
325
+ ka1gpdj014: 'Admin view: templates and creators of all users are visible',
326
+ k3rx4ps015: 'Empty team',
327
+ k3xakp016: 'Delete',
328
+ k3mr1fo017: 'Instantiate',
329
+ k19fglby018: 'Create the first Channel template',
330
+ k17jfge3019: 'Private (visible only to you)',
331
+ k191u0u5020: 'Public (instantiable by everyone, only you can modify)',
332
+ k3x23c021: 'Built-in',
333
+ k3wv1t022: 'Public',
334
+ k447jj023: 'Private',
335
+ k1i0ji0y024: 'Template name is required',
336
+ kyppebc025: 'Template created; instantiate and mount it with one click from the session bar on the left of the workspace',
337
+ kkziya3026: 'Published: instantiable by everyone',
338
+ k1xxabaf027: 'Switched to private',
339
+ k1oxfuqj028: 'Template deleted',
340
+ },
341
+ daq: {
342
+ k1bge46t118: 'Create Node',
343
+ k1b3dtga119: 'Save Template',
344
+ k3v957u120: '{p0} running: {p1} · {p2}',
345
+ k1x7jnru121: '{p0} standby: nodes on this line start acquiring after the run begins',
346
+ k1hrrqa1122: 'Active recipe monitor window {p0} ~ {p1}{p2}',
347
+ k11wnl1y123: 'Line running: {p0} · {p1}',
348
+ k9vnp9h124: 'Global {p0}ms',
349
+ kyuadl0125: 'Missing required parameter: {p0}',
350
+ k2hbo3c126: '{p0} copy',
351
+ k15lvw0o105: 'running — current product: ',
352
+ k3zkt2106: 'Start Run',
353
+ k12uge2o107: 'not running — nodes on this line pause acquisition',
354
+ k69vag8108: '· tagged',
355
+ k1cg78i8109: 'Open Line Management to Start',
356
+ kzg9805110: 'Reconnect Infrastructure',
357
+ knxpdpt111: 'Resume All Acquisition',
358
+ k1fstglk112: 'Test Connection',
359
+ k7pxjxo113: 'Create & Acquire (after test passes)',
360
+ k3xakp114: 'Delete',
361
+ k1efixrj115: 'New Template',
362
+ k1b39281116: 'Save Changes',
363
+ k3ozyqz117: 'Not Running',
364
+ k3ktxbr085: 'Line “',
365
+ k400lb086: 'Batch',
366
+ k3xagp087: 'Published',
367
+ k427eu088: 'Consumed',
368
+ k3w8go089: 'Dropped',
369
+ k3wusd090: 'Stored',
370
+ k48oi091: '位',
371
+ k4118o092: 'Samples',
372
+ k1ukoy0v093: 'Go to Line Management',
373
+ k1ld43ur094: 'Reconnecting…',
374
+ kpui00095: 'Pause All Acquisition',
375
+ k3vp67i096: 'Running',
376
+ kr45rk9097: ' · Custom',
377
+ kjbqphp098: '(stack not installed)',
378
+ k1fsh720099: 'Testing…',
379
+ k1bg4759100: 'Creating…',
380
+ k1hhheu3101: 'Confirm delete',
381
+ k1iiph0s102: 'Edit Template',
382
+ k1b38d59103: 'Saving…',
383
+ k1l3pt51104: 'Recipe Violation',
384
+ k1e8lcoo001: 'Global default when a node has no per-node WS publish interval; 0 = publish every frame with the sampling cadence',
385
+ k1yztsu4002: 'Published to queue by producer',
386
+ ko09iha003: 'Consumed from queue by consumer',
387
+ kj1jbmw004: 'Samples stored in the time-series DB',
388
+ kgpxzy3005: 'Defaults to auto-incremented name per template',
389
+ k5opd2t006: 'e.g. Oven Humidity',
390
+ kk8o4tl007: 'Defaults to the name',
391
+ kzn3l7l008: 'Defaults to auto-generated',
392
+ khb8mru009: 'Run state of the node\'s line: idle/unassigned nodes do not sample',
393
+ k3q23v3010: 'Line assignment (nodes without a line do not sample)',
394
+ k1emg364011: 'DAQ Console',
395
+ k1wmg2bz012: 'Full pipeline: acquisition → queue (MQTT) → time-series DB (Timescale) → WS real-time publish; node entities and parameters are authoritative on the server.',
396
+ k19onw5w013: 'No line is running — data acquisition is recipe-driven: please ',
397
+ k1b2tk5c014: 'Line Operations',
398
+ k1u9wnlg015: 'start a line in Line Operations and mount nodes to it',
399
+ k1ifahxj016: 'Default Interval',
400
+ k1if98n0017: 'Default Publish',
401
+ k1f5cv0s018: 'Template Manager',
402
+ k1fn0ukb019: 'Add Node',
403
+ k1b2o3b6020: 'Line Status',
404
+ k3zgkk021: 'Standby',
405
+ k1el12b1022: 'No lines yet',
406
+ k8jxxe8023: 'Create one in Line Operations',
407
+ k19rioqa024: 'Add DAQ Node',
408
+ k1p5c1un025: 'Mock Simulator',
409
+ k1cbcp3o026: 'Real Device',
410
+ k1fsgerc027: 'Signal template (range/unit domain)',
411
+ k1ce2k1y028: 'Node name (optional)',
412
+ k13mfsfc029: 'Sampling interval ms (empty = follow global)',
413
+ k1kt87rx030: 'Protocol',
414
+ k3xdnn031: 'Cancel',
415
+ k11mv96s032: 'Signal Template Manager',
416
+ ktji4ky033: 'Custom Templates',
417
+ k45eb0034: 'Edit',
418
+ kztvzbo035: 'No custom templates yet — copy from the built-in ones below, or create directly in the form below.',
419
+ k3xhia036: 'Name',
420
+ k3x4ef037: 'Unit',
421
+ k1l477m0038: 'Channel Semantics',
422
+ k1ayxrqb039: 'Tag Code',
423
+ k1l9jv5m040: 'Range Min',
424
+ k1l9jv4p041: 'Range Max',
425
+ k3mxmcx042: 'Decimals',
426
+ k3xx56043: 'Icon',
427
+ k1f4eknv044: 'Mock Base',
428
+ kytd15s045: 'Center value of mock sampling; defaults to range midpoint',
429
+ k1f4ifpo046: 'Mock Amplitude',
430
+ ksp2aji047: 'Mock fluctuation amplitude; defaults to 4% of range',
431
+ k48p40048: 'Reset',
432
+ k1w8s84s049: 'Built-in Templates (read-only, copyable)',
433
+ k3y694050: 'Copy',
434
+ k3wj9n051: 'Line',
435
+ k1bkl9uj052: 'All Lines',
436
+ k3ootr6053: 'Unassigned',
437
+ k1optt001: 'Agent optimization log',
438
+ k1optf001: 'All lines',
439
+ k1optf002: 'Refresh',
440
+ k1optf004: 'All recipes',
441
+ k1flttpl010: 'Template',
442
+ k1flttpl011: 'All templates',
443
+ k1fltdrv012: 'Driver',
444
+ k1fltdrv013: 'All drivers',
445
+ k1flttim014: 'Filter by last sample time',
446
+ k1flttim015: 'Data Age',
447
+ k1flttim016: 'Any age',
448
+ k1timlv017: 'Last 5 min',
449
+ k1timhr018: 'Last hour',
450
+ k1timdy019: 'Last 24 h',
451
+ k1timld020: 'Older than 24 h',
452
+ k1timnv021: 'Never reported',
453
+ k1fltsrc022: 'Search',
454
+ k1fltsph023: 'Node name / ID…',
455
+ k1opte001: 'No optimization records yet — registered automatically after agent dcw_control',
456
+ k1opte002: 'No DAQ data in window (line not running or node unbound)',
457
+ k1opta001: 'Series',
458
+ k1opta002: 'Rollback',
459
+ k1opto001: 'Open: awaiting agent dcw_judge',
460
+ k1optw001: 'Aggregating window…',
461
+ k1optw002: 'breach',
462
+ k1optst001: 'Open',
463
+ k1optst002: 'Judged · keep',
464
+ k1optst003: 'Rolled back',
465
+ k1optst004: 'Superseded',
466
+ k1optst005: 'Superseded by manual',
467
+ k1optst006: 'Closed on line stop',
468
+ k1optst007: 'Failed',
469
+ k1optst008: 'Judged · rollback not executed',
470
+ k1trnd001: 'Trend',
471
+ k1trnd002: 'Live trend: last 60 readings, dashed = limits',
472
+ k1wrn001: 'above max',
473
+ k1wrn002: 'below min',
474
+ k1wrn003: 'recipe window',
475
+ k1wrn004: 'safe range',
476
+ k1i8rtqt054: 'Bound Device',
477
+ k1bkw4m2055: 'All Devices',
478
+ k3own4q056: 'Unbound',
479
+ k2bindtip137: 'Bind device (same source as Digital Twin / node inspector, persisted server-side)',
480
+ k1b2tkyv057: 'Line Run',
481
+ k3x4t1058: 'All',
482
+ k1nxm3p7059: 'Acquiring (running)',
483
+ k1ulx34e060: 'Acquisition off (standby/unassigned)',
484
+ k1iwdfef061: 'Node State',
485
+ k41k5c062: 'OK',
486
+ k49z8v063: 'Warn',
487
+ k3xmid064: 'Alarm',
488
+ k44c2n065: 'Offline',
489
+ k1fygck2066: 'Clear Filters',
490
+ k45uio067: 'Node',
491
+ k42w8s068: 'State',
492
+ k3mv305069: 'Live Value',
493
+ k1l6g2ga070: 'Sampling',
494
+ k3zi0nf071: 'WS Publish',
495
+ k4a0la072: 'Driver',
496
+ k40aa6073: 'Actions',
497
+ k3o3jg2074: 'Console',
498
+ kvhjyc3075: 'No DAQ nodes yet — drag from the left rail “DAQ Nodes” in the digital twin space (the server creates node entities).',
499
+ k1w20qew076: 'No matching nodes — nothing matches the current filters; adjust or clear them.',
500
+ k1bhhheq077: 'Go to Sign-in',
501
+ k41mvv078: 'Every frame',
502
+ k422b8079: 'Temperature',
503
+ k3x6ff080: 'Pressure',
504
+ k3z9xc081: 'Tension',
505
+ k3subk4082: 'Encoder',
506
+ k47atw083: 'Vision',
507
+ kz7yhbj084: 'Electric/Gateway',
508
+ k1prodrc128: 'Product / Recipe',
509
+ k1staled129: 'Line is running but no fresh samples (> {p0}s) — node offline or driver fault',
510
+ k1disabl130: 'Disabled',
511
+ k1runtipc131: 'Run state of the line this node belongs to: sampling only while running',
512
+ k1prdrtip132: 'Product & recipe of the active run on this line',
513
+ k1tsdbtip133: 'Time-series backend: switch via DAQ_TSDB_URL (TimescaleDB compatible)',
514
+ k1queuet134: 'Message queue: switch via DAQ_MQTT_URL (standard MQTT broker)',
515
+ k1droptip135: 'Queue drops (produced-consumed)',
516
+ k1eg1000a136: 'e.g. 1000',
517
+ k1needtst137: 'Real-device scenario requires a passing connection test',
518
+ k1plndrv138: 'Reserved protocol: awaiting real channel support',
519
+ k1idlehin139: 'Line not running: this node starts sampling after the line starts',
520
+ k1gateoff140: 'DAQ gateway is paused — all nodes stop sampling',
521
+ k1alarm141: 'Unacked alarms',
522
+ k1ack142: 'Ack',
523
+ k1esc143: 'Escalated {p0} times (notification re-sent)',
524
+ k1acked144: 'Alarm acknowledged',
525
+ 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',
526
+ k1nodestop146: 'Stop collection',
527
+ k1nodestart147: 'Start collection',
528
+ k1evt001: 'No unacknowledged alarms',
529
+ k1evt002: 'Live events',
530
+ k1evt003: 'Log management',
531
+ k1evt004: 'No events yet — waiting for activity…',
532
+ },
533
+ daqDetail: {
534
+ k9vnp9h053: 'Global {p0}ms',
535
+ k3n5aaj045: 'Disabled',
536
+ k1cgi8fy046: 'Per-node Interval',
537
+ k3oktae047: 'No Calibration',
538
+ k1cggz5f048: 'Per-node Publish',
539
+ k3n42dj049: 'Fixed interval',
540
+ ksn9cgo050: 'Write parameters to the sampler',
541
+ k1fstglk051: 'Test Connection',
542
+ k452a8052: 'Bind',
543
+ k1fx2vik032: 'Live Value ·',
544
+ k1p9gioa033: 'Driver Connection ·',
545
+ k1i535i5034: 'TSDB history (',
546
+ kz8zr9v035: '(reserved)',
547
+ k3own4q036: 'Unbound',
548
+ k3w3j8f037: 'Acquiring',
549
+ k1k2ueyq038: 'Follow global interval',
550
+ k1eru4r1039: 'Calibration on',
551
+ k1k2t5o7040: 'Follow global publish',
552
+ k41mvv041: 'Every frame',
553
+ k1as0g50042: 'Writing…',
554
+ k1fsh720043: 'Testing…',
555
+ k479eh044: 'Unbind',
556
+ k1emg364001: 'DAQ Console',
557
+ k1bhhheq002: 'Go to Sign-in',
558
+ k4a0la003: 'Driver',
559
+ k3xg3w004: 'Interval',
560
+ k3w6td005: 'Apply',
561
+ k3x5tpx006: 'Warn Band',
562
+ k1hjj0jf007: 'Hard Range',
563
+ k1i8rtqt008: 'Bound Device',
564
+ kd9d69j009: 'Acquisition Params (server-controlled)',
565
+ k1iw7tbf010: 'Node Enable',
566
+ k12k23od011: 'Line (no sampling without a line)',
567
+ k3ootr6012: 'Unassigned',
568
+ k1l6smxo013: 'Sampling Driver',
569
+ k3x4ef014: 'Unit',
570
+ k3mxmcx015: 'Decimals',
571
+ k1l9jv5m016: 'Range Min',
572
+ k1md63hm017: 'Warn Low',
573
+ k1md63gp018: 'Warn High',
574
+ k1l9jv4p019: 'Range Max',
575
+ k1ie6qju020: 'Device Binding (end-to-end)',
576
+ kjobzu3021: 'Select a device twin…',
577
+ k3x1jg022: 'Refresh',
578
+ k40vsf023: 'Time',
579
+ k48v5024: 'Value',
580
+ k4bza025: 'State',
581
+ k41k5c026: 'OK',
582
+ k49z8v027: 'Warn',
583
+ k3xmid028: 'Alarm',
584
+ k44c2n029: 'Offline',
585
+ k1m1zwux030: 'Every frame (with sampling)',
586
+ k3lha20031: 'Raw points',
587
+ },
588
+ logs: {
589
+ title: 'Operations log',
590
+ sub: 'One unified record of every operation: what control was issued, what users and agents did — queryable by line / product / recipe',
591
+ live: 'Live',
592
+ liveHint: 'Receiving operation events over WS (summary rendering only; full details queryable below)',
593
+ manual: 'Manual entry',
594
+ all: 'All',
595
+ fLine: 'Line',
596
+ fProduct: 'Product',
597
+ fSource: 'Source',
598
+ fKind: 'Kind',
599
+ fKeyword: 'Keyword',
600
+ fKeywordPh: 'Search summary / action / actor…',
601
+ query: 'Query',
602
+ reset: 'Reset',
603
+ thTime: 'Time',
604
+ thActor: 'Actor',
605
+ thSummary: 'Event summary',
606
+ thScope: 'Scope (line / product / recipe)',
607
+ thDetail: 'Detail',
608
+ expand: 'Detail',
609
+ fold: 'Fold',
610
+ loading: 'Querying…',
611
+ empty: 'No matching log entries',
612
+ src: {
613
+ user: 'User',
614
+ system: 'System',
615
+ },
616
+ kind: {
617
+ write: 'Write',
618
+ manual: 'Manual',
619
+ alarm: 'Alarm',
620
+ line: 'Line',
621
+ recipe: 'Recipe',
622
+ rollback: 'Rollback',
623
+ daq: 'DAQ',
624
+ system: 'System',
625
+ },
626
+ mSummary: 'Entry content',
627
+ mSummaryPh: 'e.g. Replaced heater coil of oven #3; extended soaking for current batch by 10 min',
628
+ mSubmit: 'Record',
629
+ mOk: 'Recorded',
630
+ },
631
+ dcw: {
632
+ k1qidbpy061: 'Default {p0} (by creation order)',
633
+ k1gp649b062: '{p0} ({p1} nodes / {p2} products / {p3} recipes will be unmounted)',
634
+ k7xq2mfd063: 'Delete line "{p0}"?',
635
+ k5tq8wc071: 'Edit line',
636
+ k9m2vxa072: 'Also delete its nodes, products & recipes (irreversible)',
637
+ k4r7nbd073: 'Line "{p0}" and its {p1} nodes · {p2} products · {p3} recipes will be permanently deleted',
638
+ k3t616a058: 'Custom',
639
+ k149r6y7059: '○ Standby',
640
+ k1elczt9060: 'No recipes yet',
641
+ k3ootr6049: 'Unassigned',
642
+ k3wj9n050: 'Line',
643
+ k11nndsp051: 'Control Template ·',
644
+ k3zz0f052: 'Tagged',
645
+ k19dlbli053: 'Halo color auto from palette (',
646
+ k3x23c054: 'Built-in',
647
+ k1eox1el055: '● Running',
648
+ k18moyq1056: 'Acquisition starts once a recipe is selected',
649
+ kutxzsz057: 'Select recipe…',
650
+ k1i5a9vw001: 'There are nodes/products not assigned to any line; adopt them from the corresponding line detail page',
651
+ k1yfm3gv002: 'Delete line (nodes/products/recipes are unmounted)',
652
+ k1dhaby4003: 'Pick a recipe to start',
653
+ kru37i3004: 'e.g. Line 1 / Casting Line A',
654
+ k1f2nwsp005: 'Line purpose notes',
655
+ k1tooi3o006: 'e.g. Motor Current Setpoint',
656
+ k698qz0007: 'e.g. Motor Current',
657
+ k1qdnfzc008: 'e.g. Motor current setpoint: rising current means growing load… adjust in small steps and watch temperature rise',
658
+ k1b2tk5c009: 'Line Operations',
659
+ k5q0aqi010: 'Lines are the top-level isolation unit for nodes/products/recipes/data: every control node mounts to a line, and after a run starts each acquired sample carries the line identity;\n control templates only define parameter classes and process ranges — nodes are what actually write to PLCs.',
660
+ k45uio011: 'Node',
661
+ k3waz1012: 'Product',
662
+ k48grv013: 'Recipe',
663
+ k149b4vg014: '▶ Start Run',
664
+ k148rclf015: '■ Stop',
665
+ k1fwqw5g016: 'Line Management →',
666
+ k1efe391017: 'New Line',
667
+ 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.',
668
+ filterSearchPh: 'Search line names…',
669
+ filterEmpty: 'No lines match — adjust the filter or search',
670
+ k1b2ioko019: 'Line Name',
671
+ k24dxcd020: 'Description (optional)',
672
+ k1x7nubr021: 'Halo color (glow color of this line\'s nodes in the digital twin scene)',
673
+ k3xdnn022: 'Cancel',
674
+ k3wzi2023: 'Create',
675
+ k11oadmx024: 'Control Template Manager',
676
+ 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.',
677
+ k3xakp026: 'Delete',
678
+ k169eb4s027: 'New Custom Template',
679
+ k3xhia028: 'Name',
680
+ k1bqk219029: 'Parameter Semantics',
681
+ k1ayxrqb030: 'Tag Code',
682
+ k3x4ef031: 'Unit',
683
+ k1l9jv5m032: 'Range Min',
684
+ k1l9jv4p033: 'Range Max',
685
+ k3mxmcx034: 'Decimals',
686
+ k3xx56035: 'Icon',
687
+ k1b6qorg036: 'Process semantics (physical meaning / line impact / adjustment rules — injected into the context of agents bound to this template)',
688
+ k3x62t037: 'Close',
689
+ k1bg9nga038: 'Create Template',
690
+ k188cswn039: 'Pick a recipe for this line first (the recipe must bind control-node parameters)',
691
+ k422b8040: 'Temperature',
692
+ k3x6ff041: 'Pressure',
693
+ k3z9xc042: 'Tension',
694
+ kjb3vhs043: 'Encoder/Speed',
695
+ k47atw044: 'Vision',
696
+ k48c07045: 'General',
697
+ k6ugbw2046: 'Template name is required',
698
+ k13awowo047: 'Process range (min/max) is required',
699
+ k1bphrb3048: 'Delete failed',
700
+ },
701
+ dcwDetail: {
702
+ k1lzfi4g180: '({p0} params)',
703
+ k6vgks7181: 'Batch {p0}',
704
+ k1alcbyu182: 'Node {p0} write OK: {p1}',
705
+ kl1e9x9183: 'Node {p0} write failed: {p1}',
706
+ k8x1un1184: 'Missing required driver parameter: {p0}',
707
+ ky4e1tr185: 'Template “{p0}” created and pre-selected in the Add Control Node wizard',
708
+ k17jteb9186: 'Line started: {p0} · {p1} (batch {p2})',
709
+ kzl49pd187: 'Line stopped ({p0}); window data is kept for query',
710
+ ks7szkt188: 'Recipe dispatch partially failed: {p0}',
711
+ k3zkt2166: 'Start Run',
712
+ k1g3lh2v167: 'Dispatch finished: ',
713
+ k69vag8168: '· tagged',
714
+ knxgni9169: 'Resume All Control',
715
+ k1b2hxmx170: 'Line Stopped',
716
+ k1bg9nga171: 'Create Template',
717
+ k1fstglk172: 'Test Connection',
718
+ k1bge46t173: 'Create Node',
719
+ k3w6td174: 'Apply',
720
+ kxwei5175: 'View Batch Data',
721
+ k1efq0r9176: 'New Recipe',
722
+ k1b3kwg0177: 'Save Recipe',
723
+ k416ek178: 'Query',
724
+ k1bg4kn6179: 'Create Product',
725
+ k1l0iow1137: 'Operations',
726
+ k3wtib138: 'Writes',
727
+ k3yit7139: 'Failed',
728
+ k3km252140: 'product)',
729
+ k3x23c141: 'Built-in',
730
+ k3t616a142: 'Custom',
731
+ k1av3wgs143: 'Products /',
732
+ k1l3hrvp144: 'Recipe batches',
733
+ k11lq94k145: 'Batch Data ·',
734
+ k134rw3b146: 'Recipe min (optional, ≥',
735
+ khrv911147: 'Recipe max (optional, ≤',
736
+ kw7ym9b148: 'Write history (last',
737
+ k1bqci06149: 'params OK',
738
+ k40bfz150: 'entries)',
739
+ k1b2snna151: 'Line Detail',
740
+ 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.',
741
+ kplrsg153: 'Pause All Control',
742
+ 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',
743
+ k1pxrhx0154: 'Line running',
744
+ k1hicmch155: '(no parameters, cannot start)',
745
+ k1bg4759156: 'Creating…',
746
+ kr45rk9157: ' · Custom',
747
+ k1fsh720158: 'Testing…',
748
+ k3o3ib3159: 'Controlled',
749
+ k3zul4160: 'Manual',
750
+ k1br0ij9161: 'Loading…',
751
+ k3vpfg9162: 'In progress',
752
+ k1iiwk0i163: 'Edit Recipe',
753
+ k1b38d59164: 'Saving…',
754
+ k1eyx09r165: 'Querying…',
755
+ kd3ygmn001: 'Total Writes',
756
+ kd3znl0002: 'Total Failed Writes',
757
+ kc4ixly003: 'Create a custom control-node template: physical meaning / unit / safe process range',
758
+ k1tooi3o004: 'e.g. Motor Current Setpoint',
759
+ k698qz0005: 'e.g. Motor Current',
760
+ kxz9174006: 'Safe Min',
761
+ kxz9167007: 'Safe Max',
762
+ k1qdnfzc008: 'e.g. Motor current setpoint: rising current means growing load… adjust in small steps and watch temperature rise',
763
+ kgpxzy3009: 'Defaults to auto-incremented name per template',
764
+ kb1srz0010: 'e.g. 5000 (hold-write heartbeat)',
765
+ k12bnyt9011: 'e.g. Oven 2 temperature: tracks zone delta with Oven 1, step ≤1℃',
766
+ k1bpfjgx012: 'Delete Product',
767
+ k1l11api013: 'Alarms when DAQ goes out of bounds within the active batch',
768
+ k12c11vm014: 'e.g. 0.8mm Optical Film',
769
+ k1hxx8hy015: 'Product/process notes (optional)',
770
+ k5vew9z016: 'within node global range',
771
+ kzoh5pr017: 'hard write constraint while running',
772
+ k19337yp018: 'The line does not exist or has been deleted.',
773
+ kllwu1c019: '← Back to Line Overview',
774
+ k1972dx9020: 'Add Control Template',
775
+ k1976uns021: 'Add Control Node',
776
+ kaebkky022: 'Unassigned Assets · Adopt into This Line',
777
+ kyjp9fg023: '+ Adopt',
778
+ k19pof14024: 'Pick a product and recipe to start; every acquired sample will be tagged with product/recipe/batch while running',
779
+ k3waz1025: 'Product',
780
+ kuisodh026: 'Select product…',
781
+ k48grv027: 'Recipe',
782
+ kutxzsz028: 'Select recipe…',
783
+ kfb8vml029: '▶ Start Acquisition',
784
+ k1xyhd2y030: '■ Stop Acquisition',
785
+ k1x4vam0031: 'Add Control Node Template',
786
+ 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.',
787
+ k169eb4s033: 'New Custom Template',
788
+ k1f55q76034: 'Template Name',
789
+ k1bqk219035: 'Parameter Semantics',
790
+ k1ayxrqb036: 'Tag Code',
791
+ k3x4ef037: 'Unit',
792
+ k1l9jv5m038: 'Range Min',
793
+ k1l9jv4p039: 'Range Max',
794
+ k3mxmcx040: 'Decimals',
795
+ k3xx56041: 'Icon',
796
+ knjmyfr042: 'Process semantics (physical meaning / line impact / adjustment rules — injected into the context of agents bound to nodes of this template)',
797
+ k3x62t043: 'Close',
798
+ kyj8fen044: 'Real PLC Write',
799
+ k1ejzwqp045: 'Control template (meaning / unit / safe range)',
800
+ k1ce2k1y046: 'Node name (optional)',
801
+ k1vyb8im047: 'Hold-write interval ms (empty = manual only)',
802
+ kiune1f048: 'Write calibration encode (physical value → PLC setpoint)',
803
+ kkzy0k049: 'None (write engineering value directly)',
804
+ k1kt87rx050: 'Protocol',
805
+ k1hgizn7051: 'Node process semantics (optional, overrides template — injected into the context of agents bound to this node)',
806
+ k3xdnn052: 'Cancel',
807
+ k1e2dtkt053: 'Control Node',
808
+ k403cy054: 'Control',
809
+ k42w8s055: 'State',
810
+ k1deqh0d056: 'Current Setpoint',
811
+ k1k79ec9057: 'Setpoint',
812
+ k1dexou6058: 'Process Range',
813
+ k1b1nnaa059: 'Hold Interval',
814
+ k1i8rtqt060: 'Bound Device',
815
+ k40aa6061: 'Actions',
816
+ k3n93ed062: 'Paused',
817
+ k3xakp063: 'Delete',
818
+ k1wtecyw064: 'No control nodes yet — click “Add Control Node” (top right) to create one from a process template.',
819
+ k1j8w3hd065: 'Products & Recipes',
820
+ k1akm6dc066: '+ New Recipe',
821
+ k1aka0ki067: '+ New Product',
822
+ k6bl2q8068: 'A product can have multiple recipes; a recipe = a set of process parameters (control template + target engineering value). The recipe chosen at line start is written on start,\n and every acquired sample is tagged with product/recipe/batch.',
823
+ k3x4t1069: 'All',
824
+ knov3zg070: 'No products yet — click “New Product” to create one (recipes require a product; data is isolated per product).',
825
+ k1497qvr071: '▶ Apply',
826
+ k45eb0072: 'Edit',
827
+ keko1xy073: 'No recipes yet — click “New Recipe” to define a product\'s process parameter set.',
828
+ k1rjer8d074: 'Production Batches (data isolation windows)',
829
+ k400lb075: 'Batch',
830
+ k4497j076: 'Window',
831
+ k1bqhtmu077: 'Param Results',
832
+ k1dzwrdp078: 'Batch Data',
833
+ k1blr7y7079: 'Close Batch',
834
+ k1me41w8080: 'DAQ Channel Summary (within the batch window, product-isolated)',
835
+ k48hde081: 'Channel',
836
+ k45uio082: 'Node',
837
+ k40t11083: 'Latest',
838
+ k3xuaw084: 'Avg',
839
+ k4118o085: 'Samples',
840
+ kd457ry086: 'No DAQ samples in the window',
841
+ k12b7cxs087: 'Write History (within the batch window)',
842
+ k3xbjr088: 'Parameter',
843
+ k3ncbsh089: 'Engineering',
844
+ k3lh3mz090: 'Raw',
845
+ k454pg091: 'Result',
846
+ k40ieu092: 'At',
847
+ knzcp8i093: 'No write records in the window',
848
+ k1dw4fzf094: 'Product',
849
+ k1l3f8so095: 'Recipe Name',
850
+ k40gkk096: 'Description',
851
+ ka1kfgh097: 'Process parameters (bound to this line\'s control nodes: nodes are the real PLC writers, templates only classify)',
852
+ k3renp2098: 'Target',
853
+ k44idg099: 'Remove',
854
+ k1broh7h100: '+ Add Parameter',
855
+ k1h5gues101: 'DAQ monitor windows (while the batch is active, DAQ live values outside the window turn the row into an alarm)',
856
+ k1empnnb102: 'DAQ Node',
857
+ kqm08ap103: 'Monitor Min (optional)',
858
+ kpypf8g104: 'Monitor Max (optional)',
859
+ kv1de1p105: '+ Add Monitor Window',
860
+ k1us3jse106: 'Line Data Query (product · recipe · parameter · time · bucket)',
861
+ k1bkl1jx107: 'All Products',
862
+ k1bkx7cr108: 'All Recipes',
863
+ k1demcae109: 'Parameter',
864
+ k1bkx7ya110: 'All Channels',
865
+ k1bkul3k111: 'All Nodes',
866
+ kx2ojn0112: 'Last (min)',
867
+ kjvnvn4113: 'Bucket ms (0 = raw)',
868
+ k42kcu114: 'Points',
869
+ k49ujb115: 'First',
870
+ k40pvw116: 'Last',
871
+ k3xho3117: 'Span',
872
+ k1efduyf118: 'New Product',
873
+ k1avjrl6119: 'Product Name',
874
+ k1bhhheq120: 'Go to Sign-in',
875
+ k1ledgt001: 'Parameter ledger',
876
+ k1ledgs001: 'Pick a node…',
877
+ k1ledgv001: 'Current setpoint',
878
+ k1ledgv002: 'Recipe target',
879
+ k1ledgv003: 'Last good',
880
+ k1ledga001: 'Refresh',
881
+ k1ledga002: 'Step rollback',
882
+ k1ledgh001: 'Setpoint history (journal)',
883
+ k1ledgr001: 'Optimization records',
884
+ k3own4q121: 'Unbound',
885
+ k3zgkk122: 'Standby',
886
+ k3l3h80123: 'Writing',
887
+ k40reu124: 'Error',
888
+ k44c2n125: 'Offline',
889
+ k422b8126: 'Temperature',
890
+ k3x6ff127: 'Pressure',
891
+ k3z9xc128: 'Tension',
892
+ kjb3vhs129: 'Encoder/Speed',
893
+ k47atw130: 'Vision',
894
+ k48c07131: 'General',
895
+ k6ugbw2132: 'Template name is required',
896
+ kx3pg59133: 'Unit is required (e.g. ℃ / A)',
897
+ k13awowo134: 'Process range (min/max) is required',
898
+ k1b6qe0r135: 'A recipe is required before starting: pick a product and a recipe (the recipe must contain process parameters)',
899
+ kszv5sq136: 'No matching data in the window (check product/recipe/time range; only samples from running lines carry the line identity)',
900
+ },
901
+ teams: {
902
+ k6ljhyv029: 'Add Member · {p0}',
903
+ k1c0o6oe030: 'Deploy · {p0}',
904
+ kh90glh031: 'Deployed {p0} instances to the Channel',
905
+ k3svl8y028: 'Groups',
906
+ kxheuf1001: 'Public groups: deployable by everyone; only the owner can modify',
907
+ k1efmuyx002: 'New Group',
908
+ k3xhia003: 'Name',
909
+ k40gkk004: 'Description',
910
+ k3lrqn0005: 'Visibility',
911
+ k41ds5006: 'Template',
912
+ k479op007: 'Role',
913
+ 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).',
914
+ krpx6qa009: 'Back to Workspace',
915
+ k1bpgi8h010: 'Admin view: groups and creators of all users are visible',
916
+ k1bpojhf011: 'Delete Group',
917
+ k48ja7012: 'Deploy',
918
+ krt2oib013: '+ Add Member Template',
919
+ k6cbbgf014: 'Create the first group',
920
+ k17jfge3015: 'Private (visible only to you)',
921
+ k1h2lq0o016: 'Public (deployable by everyone, only you can modify)',
922
+ keowzlv017: 'lead (at most one)',
923
+ k3x23c018: 'Built-in',
924
+ k3wv1t019: 'Public',
925
+ k447jj020: 'Private',
926
+ k1bvcdo2021: 'Name is required',
927
+ k3n5hak022: 'Created',
928
+ k1globhp023: 'Published: deployable by everyone, only you can modify',
929
+ k1xxabaf024: 'Switched to private',
930
+ k1kw4rtj025: 'Select Template',
931
+ k3n5hzw026: 'Added',
932
+ k1oxjrxx027: 'Group deleted',
933
+ },
934
+ tokens: {
935
+ k1upppaw026: 'Each token can be revoked independently; plaintext is archived server-side and can be viewed/copied anytime',
936
+ k3p0p44027: 'Tags:',
937
+ kj3mklm028: '(unnamed)',
938
+ k1hlqknl001: 'Tags, e.g. CI / test scripts / backup',
939
+ k41416002: 'Tags',
940
+ k1k6z0r8003: 'Sign in first',
941
+ k1gjnree004: 'Tokens are private to a signed-in user; sign in to manage them.',
942
+ k1bhhheq005: 'Go to Sign-in',
943
+ khcxmsc006: 'Current session token is marked',
944
+ k1defr98007: 'Current session',
945
+ kyelqk1008: 'Hidden (legacy)',
946
+ k3vrpcs009: 'Rename',
947
+ k3xmrz010: 'Revoke',
948
+ 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.',
949
+ k1s5f5zd012: 'Saved, close',
950
+ k19jvk54013: 'Failed to load token list',
951
+ k169z26g014: 'Tags cannot be empty',
952
+ k3n9aij015: 'Updated',
953
+ k3n64kh016: 'Revoked',
954
+ kjtcn2h017: 'Copy failed; please select and copy manually',
955
+ kkpgzo8018: 'This token was created by a legacy version (hash only); plaintext is unavailable. Consider revoking and re-issuing',
956
+ k1gj9ls019: 'Failed to reveal plaintext',
957
+ kr5ovor020: 'This token was created by a legacy version (hash only); plaintext cannot be copied. Consider revoking and re-issuing',
958
+ kubtby5021: 'Failed to fetch plaintext',
959
+ kgkfcr0022: 'Copy failed; reveal the plaintext first and copy manually',
960
+ k1bg95gk023: 'Created',
961
+ k1euotul024: 'Last Used',
962
+ k40aa6025: 'Actions',
963
+ },
964
+ town: {
965
+ k3n4mae005: 'Workshop',
966
+ k1wm8wtr001: 'No Channels mounted yet',
967
+ k47e4s002: 'Please go to ',
968
+ k17rerba003: 'create/mount a channel, then come back to the AgentWorkShop twin space.',
969
+ k1uc5mup004: 'Connecting to the AgentWorkShop twin space (subscribing to the live event stream)…',
970
+ },
971
+ wsHome: {
972
+ k1mbatbh030: 'Registered: {p0}; sign-in token saved',
973
+ kwixbdl031: 'Signed in: {p0}',
974
+ newWs: 'New Workspace',
975
+ k3wcox029: 'Task',
976
+ k3n4m5c025: 'Workspace',
977
+ ke16e53026: '\'s resources (user-isolated; persisted server-side)',
978
+ k41ds5027: 'Template',
979
+ k1ggoa45028: 'Members / Busy',
980
+ k48h2c001: 'Email',
981
+ k3yvgs002: 'Password',
982
+ kwgbai9003: 'Username (unique)',
983
+ kizjkbo004: 'Email (unique)',
984
+ kh3cqfn005: 'Password (≥6 chars with letters and digits)',
985
+ k15qunld006: 'Paste user token',
986
+ ksmpk8l007: 'Workspace name, e.g. Payment Gateway Refactor',
987
+ kr0vzqu008: 'Open Workshop',
988
+ k43kol009: 'Sign In',
989
+ k17x74cj010: 'Each sign-in issues a session token that can be revoked individually on the Token page.',
990
+ k1so6a0v011: 'Register & Sign In',
991
+ k1r0a4u3012: 'You are signed in automatically after registration; you can issue more tokens yourself.',
992
+ k3pa5h4013: 'Templates',
993
+ k3svl8y014: 'Groups',
994
+ k484e7015: 'Sign Out',
995
+ k1bst7s9016: 'Syncing…',
996
+ k1ylgrbc017: 'No Channel mounted (mount from the left rail after entering)',
997
+ kr1uwwi018: 'Open Console',
998
+ k1vnhyks019: 'Username is required',
999
+ k8ieqzj020: 'Email is required',
1000
+ ksx73ra021: 'Password must be at least 6 characters (letters and digits)',
1001
+ k3ngm6p022: 'Signed out',
1002
+ k1br33vc023: 'Load failed',
1003
+ k3n5sd7024: 'Deleted',
1004
+ },
1005
+ wsView: {
1006
+ kqwckjr001: 'Hotkeys 1-5 switch views',
1007
+ k1tsy2e4002: 'Collapse/expand session bar',
1008
+ k1tx0ppf003: 'Collapse/expand inspector',
1009
+ k1cvg8sb004: 'Command palette (⌘K)',
1010
+ k1fkfvra005: 'Drag to resize session bar',
1011
+ kwqb0st006: 'Drag to resize inspector',
1012
+ klzbtyp007: 'Mount or select one from the left',
1013
+ k3zaj4008: 'Start',
1014
+ k1us0cxy009: 'The session list supports creating Channels, instantiating from templates, and hot-editing scenario and working directory',
1015
+ k3otu32010: 'Timeline',
1016
+ k3ko7a8011: 'Tasks',
1017
+ k3xbmo012: 'Screens',
1018
+ k1cz0pbw013: 'Twin Space',
1019
+ },
1020
+ meta: {
1021
+ agents: 'Agent Templates',
1022
+ teams: 'Agent Team Groups',
1023
+ ctpl: 'Channel Template Hub',
1024
+ },
1025
+ a2aRpcDebugger: {
1026
+ k6hcbxi001: 'Drag to resize drawer',
1027
+ k34cz76002: 'Target agent instance',
1028
+ k1bqe2pj003: 'Parameter Template',
1029
+ k405w8004: 'Run',
1030
+ kq00d3v005: 'Debug: please echo this message',
1031
+ k1kgwib8006: 'Debug message',
1032
+ k1e1hi4u007: '▶ Stream ended',
1033
+ k1vryfv008: 'Select target agent',
1034
+ },
1035
+ agentInspectorDrawer: {
1036
+ k3ypnl022: 'Done',
1037
+ k16t80ax023: 'Focus main timeline',
1038
+ k6hcbxi001: 'Drag to resize drawer',
1039
+ k1ofh789002: 'Remove this member? Its queued tasks will be re-dispatched to remaining members',
1040
+ kwsotdg003: 'Inject a message into this agent…',
1041
+ k1frr9es004: 'No events for this agent yet (generated after connection)',
1042
+ k1axbijb005: 'Task Queue',
1043
+ kas9m5q006: 'Members:',
1044
+ k1hrtylo007: 'Remove Member',
1045
+ k1jxt8vh008: 'Request ack',
1046
+ k3xkc7009: 'Send',
1047
+ k498bf010: 'Queue',
1048
+ kk653nv011: 'Running: “',
1049
+ k43rxk012: 'empty)',
1050
+ k1bs9x43013: 'Unfocus',
1051
+ kgjqkq9014: 'Re-enable (accept new tasks)',
1052
+ kpkjhbz015: 'Disable (pause accepting new tasks)',
1053
+ k3n5z7y016: 'Enabled',
1054
+ k1dst50d017: 'Disabled (its queued tasks are reclaimed by the scheduler)',
1055
+ kane5dq018: 'Member removed',
1056
+ k1p055kl019: 'Focus cancelled',
1057
+ ky2fhkf020: 'Main timeline focused on this agent',
1058
+ k1y2jrsr021: 'Message injected',
1059
+ },
1060
+ agentLanesView: {
1061
+ k1wn2vmt036: 'omp process PID {p0} · harness session state',
1062
+ k1l029kf037: 'Interrupt member {p0}\'s runtime? Running tasks will be aborted; the member is kept',
1063
+ kt3n27m038: 'Remove member {p0}? Its queued tasks will be reclaimed automatically',
1064
+ k7xt1y6039: 'Drag to resize the {p0} lane',
1065
+ k1qcmxyu040: '{p0} ({p1} members{p2})',
1066
+ k19j5rho041: 'Edit member {p0}',
1067
+ kg2slvf042: '(已有 lead,不能再添加 lead)',
1068
+ kpr6a3f043: '(channel 已有 lead,编组内 lead 成员冲突;请先移除现有 lead 或选用无 lead 编组)',
1069
+ k21xjz2044: 'Member {p0} updated (runtime reloads with the new prompt)',
1070
+ k3jmrw1045: 'Update failed: {p0}',
1071
+ k1g5ykr3046: 'Member {p0} added (waiting for the agent.member event to converge)',
1072
+ k1j97j74047: 'Add member failed: {p0}',
1073
+ kk3uwzo048: 'Cloned template member {p0} as {p1} (waiting for event convergence)',
1074
+ k1rrfz5h049: '模板克隆失败{\'$\'}{\'{\'}text.includes(\'LEAD_EXISTS\') ? t(\'agentLanesView.kg2slvf042\') : ',
1075
+ k1gslqf9050: 'Group {p0} deployed ({p1} members, waiting for event convergence)',
1076
+ k6nzyd3051: '编组部署失败{\'$\'}{\'{\'}text.includes(\'LEAD_EXISTS\') ? t(\'agentLanesView.kpr6a3f043\') : ',
1077
+ k1n3o03a052: 'Member {p0} removed',
1078
+ k13dsp10053: 'Remove member failed: {p0}',
1079
+ kcpbv47054: 'Interrupted the runtime of member {p0}',
1080
+ k139ec5j055: 'Interrupt failed: {p0}',
1081
+ k107s4am001: 'Scenario system prompt injected',
1082
+ k1884q17002: 'Open this member\'s native omp terminal (live TUI + HITL controls: inject conversation / abort / answer asks)',
1083
+ k1pgd3tf003: 'Edit member info / scenario prompt',
1084
+ k17kcn55004: 'Add Team Member',
1085
+ k3nufdm005: 'Member Name',
1086
+ k479op006: 'Role',
1087
+ kaogfp007: 'System prompt prefix (optional, defines member specialty)',
1088
+ kbqn6w5008: 'e.g. You are a database migration expert focused on schema changes and backfills…',
1089
+ kung925009: 'Select template…',
1090
+ k1bl78fu010: 'Clone Role',
1091
+ k1vhvbz7011: 'System prompt override (optional; empty = template preset)',
1092
+ k7ft6ig012: 'Empty = use the template\'s config.systemPromptPrefix; fill in to override with this scenario prompt',
1093
+ k29om9b013: 'Select an AgentTeam (batch-clone all members)',
1094
+ kur1otz014: 'Select group…',
1095
+ 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',
1096
+ k3y5ja016: 'Team',
1097
+ k3ll6sa017: ' members',
1098
+ k1fmutgo018: 'Add Member',
1099
+ k1woev5v019: 'Syncing member snapshots…',
1100
+ k122h4pc020: 'No members in this team yet',
1101
+ k7cr2h8021: 'Click “Add Member” (top right) to create from scratch, or deploy from templates / groups in one click',
1102
+ k3xycu022: 'Scenario',
1103
+ k4588s023: 'Terminal',
1104
+ k1b7cwvy024: 'Create from Scratch',
1105
+ k1ndey1w025: 'Clone from Template',
1106
+ k1l5qyux026: 'Deploy Group',
1107
+ kqg6783027: 'mock (test script)',
1108
+ k1weovo028: 'lead (at most one; rejected if a lead already exists)',
1109
+ knybb6r029: 'Template library empty? Create reusable agent templates (omp/mock/claude + system prompt) on the Templates page first.',
1110
+ 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).',
1111
+ k1rw1rd2031: 'After saving, the member runtime reloads; the next task/schedule uses the new prompt',
1112
+ ky6jqt4032: 'Member name is required',
1113
+ kfvflle033: 'user edits member info / scenario prompt',
1114
+ k13xo8sz034: 'Select an agent template to clone',
1115
+ k1tjd5ab035: 'Select an AgentTeam to deploy',
1116
+ },
1117
+ artifactCard: {
1118
+ k3yu62003: 'Expand',
1119
+ k3y694004: 'Copy',
1120
+ k40p82001: 'Collapse',
1121
+ k3n6o1m002: 'Copied',
1122
+ },
1123
+ assetLibrary: {
1124
+ katn7lo015: 'Drag onto the twin scene to create a device instance · {p0}',
1125
+ k8nv3or016: 'Uploaded → {p0}',
1126
+ k1hhga4h014: 'Confirm Upload',
1127
+ k7la4x5001: 'Device Model Library',
1128
+ kulif5b002: 'Drag into the twin space to create an instance',
1129
+ k5hg6jq003: 'Release to select a model',
1130
+ k3xdnn004: 'Cancel',
1131
+ k1ar7n8i005: 'Uploading…',
1132
+ k1n32zs0006: 'Device · drag & drop',
1133
+ k1kq2tmi007: 'Loading…',
1134
+ k15527e1008: 'No device models yet; drop a .glb file to upload',
1135
+ k1xz5wvk009: '3D preview not supported yet)',
1136
+ k1iiort6010: 'Drop or pick a model file',
1137
+ k498l011: 'Del',
1138
+ kcjqcaw012: 'Drop or pick a device model file first (.glb/.gltf/.obj/.fbx)',
1139
+ k8n918k013: 'Model file deleted',
1140
+ },
1141
+ channelSessionList: {
1142
+ kjmldih035: 'Settings {p0}',
1143
+ k1yurooi036: 'Move out {p0}',
1144
+ kfe4pzq037: 'Working directory: {p0} (click to copy path)',
1145
+ k1oes209038: '{p0}{p1} ({p2} members)',
1146
+ k1pmemvt039: 'Channel Settings · {p0}',
1147
+ kud74vg040: 'Copied: {p0}',
1148
+ k1x2th9e041: 'Create failed: {p0}',
1149
+ kai50qc042: 'Instantiated from template and mounted ({p0} members)',
1150
+ k2hfym5043: '{p0} template',
1151
+ k3wcox034: 'Task',
1152
+ kne35ug001: 'Channel Settings (scenario / working dir / save as template)',
1153
+ k1qjyl6l002: 'Create & Mount Channel',
1154
+ k40gkk003: 'Description',
1155
+ k1wj4f38004: 'Scenario prompt (injected to all)',
1156
+ 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',
1157
+ kmgv4h5006: 'Working directory (team workspace mount point)',
1158
+ k1i8q46x007: 'Scenario prompt (after editing, member runtimes are recycled and re-assembled with the new scenario)',
1159
+ ku3ugac008: 'The working-scenario spec shared by all agents of this channel…',
1160
+ k67dzev009: 'Working directory (agents\' cwd; omp subprocesses restart with the new directory after editing)',
1161
+ k6kpql010: 'Save as Channel Template',
1162
+ k1f55q76011: 'Template Name',
1163
+ k3lrqn0012: 'Visibility',
1164
+ kbdp56k013: 'Select team working directory',
1165
+ kkv789s014: 'No Channel mounted yet (instantiate from a template below in one click)',
1166
+ k1bst7s9015: 'Syncing…',
1167
+ k18ppu31016: 'Template = scenario + working directory + team; instantiating assembles the members',
1168
+ k1u3zsr5017: 'Injection order: scenario spec → member specialty → memory → system handbook → tasks; the settings dialog hot-updates (member runtimes recycle and re-assemble automatically)',
1169
+ k3pz0ma018: 'Browse…',
1170
+ kucq30k019: 'This directory is injected as the working cwd of every agent harness during tasks (omp subprocess working directory); created automatically if missing',
1171
+ 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',
1172
+ k1x6kznr021: 'Capture the current scenario/working directory/team combination as a reusable template',
1173
+ k1otvrfv022: 'Private (only you)',
1174
+ k1cc399s023: 'Public (instantiable by everyone)',
1175
+ kl9btf7024: 'Members keep template references when present, otherwise inline snapshots are saved; scenario and working directory are copied as-is',
1176
+ k1ggoa45025: 'Members / Busy',
1177
+ krij3gg026: 'Copy failed (browser clipboard not authorized)',
1178
+ k1bg6shc027: 'Create failed',
1179
+ kn89jvs028: 'Channel created (empty team; enter and assemble lead / workers via “Add Member”)',
1180
+ k97xi7u029: 'Template mount failed',
1181
+ k1hgfvdc030: 'Move-out failed',
1182
+ kvsxlu6031: 'Updated; member runtimes will be recycled and re-assembled with the new settings',
1183
+ k1i0ji0y032: 'Template name is required',
1184
+ kjpguxw033: 'Captured as a Channel template (scenario/directory/team snapshot)',
1185
+ },
1186
+ clusterArtifact: {
1187
+ kyh87lw001: 'Deliverable body matches the reply above',
1188
+ k49les002: 'Hide',
1189
+ },
1190
+ clusterError: {
1191
+ k40p82001: 'Collapse',
1192
+ },
1193
+ clusterLife: {
1194
+ k1xthifv001: 'Non-status event',
1195
+ k498bf002: 'Queue',
1196
+ k3pi5z1003: 'Sub-state',
1197
+ },
1198
+ clusterMember: {
1199
+ k40p82001: 'Collapse',
1200
+ },
1201
+ clusterMemory: {
1202
+ k40p82001: 'Collapse',
1203
+ },
1204
+ clusterOther: {
1205
+ k40p82001: 'Collapse',
1206
+ },
1207
+ clusterRoute: {
1208
+ k12448jn010: 'Human sender: {p0}',
1209
+ khsfl59011: 'View {p0}',
1210
+ k94hqp2012: 'Reply to message {p0}',
1211
+ k13ewgum013: 'All {p0}',
1212
+ kfbpe32001: 'The sender requests a reply: the receiver must ack with the execution result',
1213
+ kyza1ya002: '(broadcast)',
1214
+ k3wn89c003: 'Reply required',
1215
+ k40p82004: 'Collapse',
1216
+ k1ax44eo005: 'Task Dispatch',
1217
+ k1bsct42006: 'Cancel Notice',
1218
+ k1ax087h007: 'Subtask Completed',
1219
+ k1cxjc4m008: 'Live Injection',
1220
+ k1bka5dz009: 'Collaboration Message',
1221
+ },
1222
+ clusterStatus: {
1223
+ k1fpy8te001: 'Thinking / intermediate output',
1224
+ },
1225
+ clusterStream: {
1226
+ kpk9wff001: 'Content merged into a later reply block (not rendered twice)',
1227
+ },
1228
+ clusterTask: {
1229
+ kfwdcd4008: 'Status code {p0}',
1230
+ k3n8lhn001: 'Submitted',
1231
+ k3n8mf0002: 'Assigned',
1232
+ k3o5tz9003: 'Running',
1233
+ k1hpsvap004: 'Awaiting merge',
1234
+ k10w8u89005: 'Done · accepted',
1235
+ k4u7566006: 'Failed · awaiting re-dispatch',
1236
+ k3n5vg5007: 'Cancelled',
1237
+ },
1238
+ clusterTool: {
1239
+ k40p82001: 'Collapse',
1240
+ },
1241
+ commandPalette: {
1242
+ k1nz14ux013: 'Switch Channel: {p0}',
1243
+ k1d8xtez014: 'Timeline filter: {p0}',
1244
+ k1nn6i83001: 'Type a command… (navigate/views/Channel/filter/actions)',
1245
+ ktup4q4002: 'No matching commands',
1246
+ k1kvl0fa003: 'Select /',
1247
+ k1e3ualj004: 'Run /',
1248
+ k3x62t005: 'Close',
1249
+ kmxxk3u006: 'Go: Workspace Overview',
1250
+ k4s8e5q007: 'Go: Agent Templates',
1251
+ k1ezz11x008: 'Go: Channel Template Hub',
1252
+ k143z9bg009: 'View: Timeline',
1253
+ k13ztmim010: 'View: Task Board',
1254
+ k21cpnp011: 'View: Multi-channel',
1255
+ k1tm54il012: 'Action: focus the task input',
1256
+ },
1257
+ composer: {
1258
+ kl3604i033: 'Direct to {\'@\'}{p0}',
1259
+ k1cxjc4m034: 'Live Injection',
1260
+ k1d2idgj035: 'Task dispatched → {\'@\'}{p0} ({p1})',
1261
+ k1wk4bf036: 'Message sent to {\'@\'}{p0} ({p1})',
1262
+ k2z0fsx032: ' · direct',
1263
+ k1b38y2b001: 'Unlimited',
1264
+ k1jqqvhe002: 'HITL live injection: when the target is running, inject into its current turn directly (visible in the same turn)',
1265
+ k195594v003: 'Request an ack from the recipient',
1266
+ k1bxvc46004: 'Send to…',
1267
+ k3wcox005: 'Task',
1268
+ k17u6q77006: 'First line = title',
1269
+ k41ykc007: 'Message',
1270
+ k3x9n2008: 'Instant',
1271
+ k40g8m009: 'Queued',
1272
+ k3xv7u010: 'Ack',
1273
+ k49kr1011: 'Interval',
1274
+ k2z7yuw012: ' · default',
1275
+ k1bosqfv013: 'Live inject',
1276
+ kqdhdlq014: 'Task title is required',
1277
+ k1l36qf9015: 'Max runs must be 1–10000; empty means unlimited',
1278
+ k1bw65is016: 'Select a target agent ({\'@\'} mention available)',
1279
+ k1ww0ftm017: 'Running · the task joins its mailbox queue',
1280
+ k9eq10w018: 'Target busy: the new task is delivered to its mailbox and handled FIFO after the current turn',
1281
+ kbhz1rp019: 'Stopped · the task is queued and runs after wake-up',
1282
+ kophjf5020: 'Target runtime stopped: the task is safely queued and processed after re-enabling',
1283
+ k4qgtiw021: 'Idle · the task starts a turn immediately',
1284
+ kfmjwas022: 'Target idle: processing starts right after delivery',
1285
+ kwg68t0023: 'Running · will be live-injected into the current turn (HITL)',
1286
+ k7w1etd024: 'Running · handled after the current turn',
1287
+ k9m6p7u025: 'Target busy: the instant message is injected into its running session (visible in the same turn)',
1288
+ kj1ngpo026: 'Stopped · the message is queued and delivered after wake-up',
1289
+ kmf7lcc027: 'Target runtime stopped: the message is safely queued and processed after re-enabling',
1290
+ k1tet5df028: 'Idle · a turn starts immediately to handle it',
1291
+ kn600in029: 'Target idle: processing starts right after delivery',
1292
+ k2h5jwc030: 'Type a task (first line = title, {\'@\'} to target a member, defaults to lead)… ⌘/Ctrl+Enter to submit',
1293
+ k15mwzt7031: 'Type a message/notice ({\'@\'} to target a member, defaults to lead)… ⌘/Ctrl+Enter to send',
1294
+ },
1295
+ deviceTwinPanel: {
1296
+ kq2jssk008: 'Recipe Process Window',
1297
+ k1iwj796009: 'Node Range',
1298
+ kxddket010: '超出{p0} {p1}',
1299
+ k1j04u8001: 'Write setpoint (out-of-range values are rejected)',
1300
+ k7k6evr002: 'Device Console',
1301
+ kkw7sn5003: 'Loading device registers…',
1302
+ k13y2qmg004: 'Unregistered device',
1303
+ kotf23l005: 'Drag a device model into the twin scene to create a digital twin entity',
1304
+ k48grv006: 'Recipe',
1305
+ k44653007: 'Acknowledge',
1306
+ },
1307
+ eventBlock: {
1308
+ kc918hn001: 'A response or human acknowledgement is required',
1309
+ kcugdph002: 'Content duplicated from delta stream merged into one block',
1310
+ kknq700003: 'Quote into input',
1311
+ k3wmcv4004: 'Needs attention',
1312
+ k3vp67i005: 'Running',
1313
+ k3xk4t006: 'Deduped',
1314
+ },
1315
+ fileSelectorModal: {
1316
+ kvwnnvn001: '.. (up one level)',
1317
+ k268o2o002: '(no subdirectories; use “Select This Directory” to take the current location)',
1318
+ 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.',
1319
+ kz99pgv004: 'Failed to read directory',
1320
+ },
1321
+ inspectorPanel: {
1322
+ k1tqitzl008: '成员同步中…',
1323
+ kks0y5h009: '任务同步中…',
1324
+ k12oip5c010: 'Success {p0}% / avg {p1}s / failed {p2}',
1325
+ k498bf001: 'Queue',
1326
+ k3ypnl002: 'Done',
1327
+ k3mp44x003: 'Subtasks',
1328
+ k3w9q9004: 'Deliverables',
1329
+ k1el4cgf005: 'No members',
1330
+ k1el0vqb006: 'No tasks',
1331
+ k1el1plr007: 'No history',
1332
+ },
1333
+ laneBlocks: {
1334
+ k1br5dtr004: 'Load earlier',
1335
+ k1otw1r3001: 'Syncing history…',
1336
+ k1el0s5k002: 'No events yet',
1337
+ k1br0ij9003: 'Loading…',
1338
+ },
1339
+ liveAgentBar: {
1340
+ kh66fan003: 'View execution details of {p0}',
1341
+ k1a39d92004: '{p0} more members are busy',
1342
+ k3o5tz9005: 'Running',
1343
+ k68d2a2006: 'Queue ×{p0}',
1344
+ kr4bxgp001: 'All members idle',
1345
+ k1sf0ymy002: 'Running ·',
1346
+ },
1347
+ memoryPanel: {
1348
+ k1du3379001: 'Member Identity',
1349
+ k1bbee8p002: 'Write Memory',
1350
+ k419s4003: 'Title',
1351
+ k3wv1f004: 'Content',
1352
+ k3l2hmp005: 'Shared',
1353
+ k3rve9a006: 'Private',
1354
+ k1k7okbe007: 'Memories',
1355
+ k3x1jg008: 'Refresh',
1356
+ k3wtib009: 'Writes',
1357
+ kemjjvq010: 'shared (public scope, searchable by everyone)',
1358
+ k43rxk011: 'empty)',
1359
+ k3onh9w012: 'you)',
1360
+ k3zul4013: 'Manual',
1361
+ k186sctu014: 'Read failed (check member identity)',
1362
+ k1eh0fbo015: 'Search requires a keyword and member identity',
1363
+ k1dpj734016: 'Title/content/member identity are required',
1364
+ k3n5bat017: 'Written',
1365
+ k1bb5i1l018: 'Write failed',
1366
+ },
1367
+ mentionHoverCard: {
1368
+ k1t89ag4001: 'Click a mention to open execution details',
1369
+ k3o5eky002: 'Run:',
1370
+ },
1371
+ multiChannelView: {
1372
+ k3wcox005: 'Task',
1373
+ kvfx0mh006: 'Drag to resize the {p0} column',
1374
+ kp9ap3k007: '消息 {p0}> {\'|\'} undefined)?.[0]?.text ?? \'\').slice(0, 30)}',
1375
+ k1688yr4008: '交付 {p0} {\'|\'} undefined)?.name ?? \'\')}',
1376
+ kfvue7n009: 'Memory {p0}',
1377
+ khq39oe010: 'Member {p0} {p1}',
1378
+ k16wopr9011: 'Error {p0}',
1379
+ k1bfi9ms001: 'Mount multiple Channels on the left to observe them side by side here',
1380
+ k1bst7s9002: 'Syncing…',
1381
+ k4by6003: 'Busy',
1382
+ k1el0s5k004: 'No events yet',
1383
+ },
1384
+ paneSplitter: {
1385
+ kejk1i9001: 'Drag to resize panel',
1386
+ },
1387
+ statsPanel: {
1388
+ k1i88c0b001: 'Buffered Events',
1389
+ kfplawo002: 'Throughput (10s)',
1390
+ kzcd51003: 'Event type mix (buffer window)',
1391
+ k1pevwxl004: '(no events)',
1392
+ },
1393
+ taskBoardView: {
1394
+ k8m7hm6020: 'Routing reason: {p0}',
1395
+ k1f9c17l019: 'Syncing',
1396
+ k43pyn001: 'Board',
1397
+ k3x7l0002: 'List',
1398
+ k3wcox003: 'Task',
1399
+ k168w1ze004: 'Tasks · drag a card to “Failed/Cancelled” to cancel, or back to “Pending” to retry',
1400
+ k4b1x005: 'Sub-',
1401
+ k3vkhhj006: 'No',
1402
+ k13pad50007: 'Drop here to run the action',
1403
+ k3nf71d008: 'Pending',
1404
+ k3o5tz9009: 'Running',
1405
+ k1hpx9p1010: 'Awaiting Summary',
1406
+ k3n77g3011: 'Completed',
1407
+ k1veotws012: 'Failed/Cancelled',
1408
+ k189y4q013: 'Task cancellation requested',
1409
+ kv1l1j3014: 'Task re-dispatched',
1410
+ k1e7zwuc015: 'Operation failed',
1411
+ k1bs0t9b016: 'Cancel Task',
1412
+ k1lclwk6017: 'Retry Dispatch',
1413
+ k1dx9ysj018: 'Open Details',
1414
+ },
1415
+ taskInspectorDrawer: {
1416
+ kkp77tf015: 'Deliverables ({p0})',
1417
+ khnua62016: 'Subtasks ({p0})',
1418
+ kxj74io017: 'Raw content ({p0} parts)',
1419
+ k6hcbxi001: 'Drag to resize drawer',
1420
+ kns2a6x002: 'Retry this task?',
1421
+ k1a7jqb9003: 'Cancel this task?',
1422
+ k40gkk004: 'Description',
1423
+ k1lcgf2b005: 'Retry Task',
1424
+ k1bs0t9b006: 'Cancel Task',
1425
+ k1knph8c007: 'Routing reason',
1426
+ kr3vr2x008: 'No events (occurred before connection)',
1427
+ k1kmqn5u009: '(no subtasks)',
1428
+ k3o48o4010: 'Assignee:',
1429
+ k485ye011: 'Progress',
1430
+ k401n2012: 'none)',
1431
+ k1xj595a013: 'Cancellation requested',
1432
+ ke7bh8u014: 'Re-dispatched for execution',
1433
+ },
1434
+ townView: {
1435
+ k1k6wg8j185: 'Device Instance',
1436
+ k44c2n186: 'Offline',
1437
+ k1w6xehu187: '{p0} · {p1} · auto-binds near a device, range {p2} ~ {p3} {p4}',
1438
+ k1icez46188: '{p0} · {p1} · setpoint range {p2} ~ {p3} {p4} · auto-binds near a device',
1439
+ k2bindr0007: 'Bound to "{p0}" — click to re-bind to this device',
1440
+ k2bindr0008: 'Click to bind to this device',
1441
+ k2bindr0009: 'Not placed',
1442
+ k2bindr0010: 'No bindable nodes — use + on a template row in the left rail, or create in DAQ Center',
1443
+ k2tplxp0001: 'Click to expand/collapse "{p0}" nodes · {p1} · range {p2} ~ {p3} {p4}',
1444
+ k2tplxp0002: 'New "{p0}" node (drag into scene after creation)',
1445
+ k2tplxp0003: 'No nodes yet — use + on the template row, or add in DAQ Center',
1446
+ k2tplxp0005: 'Placed · click to locate & select; drag to re-place',
1447
+ k2tplxp0006: 'Drag onto the scene to place (auto-binds a device within ±95)',
1448
+ k479op189: 'Role',
1449
+ kb251ac190: 'Current recipe process window',
1450
+ kcyn0191: '“{p0}” is already in the scene (one placement per channel)',
1451
+ k1hmf2ut192: 'Channel layout failed to load; retrying ({p0})',
1452
+ kgz2nej193: 'Re-skinned {p0} → {p1}',
1453
+ k5e2460194: 'Placed a resident at the drop point → {p0}',
1454
+ k113fir9195: '{p0} {p1} out of range ({p2})',
1455
+ k1knv89d196: '{p0} {p1} entered the warn band ({p2})',
1456
+ ksjancw197: '{p0} {p1} back to normal',
1457
+ kbuyve5198: 'Beyond {p0} {p1} ~ {p2}',
1458
+ k3n93ed175: 'Paused',
1459
+ k3os7i3176: 'Not placed',
1460
+ k1l147w1177: 'Run Mode',
1461
+ k1empnnb178: 'DAQ Node',
1462
+ k1iwj796179: 'Node Range',
1463
+ kh1586b180: 'Enable this node',
1464
+ k1bc6rqf181: 'Global range',
1465
+ k121kfef182: 'Delete device instance',
1466
+ k1f1xmci183: 'Draw Range',
1467
+ k3lmtk3184: 'Syncing',
1468
+ k1c9jyta001: 'Scene Mode',
1469
+ k1fsi3ir002: 'Active Alarms',
1470
+ k1demf38003: 'Current User',
1471
+ khzlyf5004: 'Default sampling interval (nodes without their own interval follow this value)',
1472
+ k18d6wnb005: 'Locate selected device',
1473
+ k1io51dn006: 'Auto Orbit',
1474
+ k1sgjlq8007: 'Callout Visibility',
1475
+ k3wuf0008: 'Fullscreen',
1476
+ k1k4j5i7009: 'Camera Presets',
1477
+ k1ejxiwp010: 'Click to select this device',
1478
+ k1d0rl5z011: 'Drag to move panel',
1479
+ kz71l1f012: 'Distance within which the camera shows DAQ data cards for a device',
1480
+ k1bsckft013: 'Deselect',
1481
+ kpwutri014: 'Delete this DAQ node (server entity removed as well)',
1482
+ k1k6vbaf015: 'Device Name',
1483
+ k1k73omv016: 'Unbind',
1484
+ k15t7izc017: 'Write setpoint (out-of-window values are rejected by the recipe interlock)',
1485
+ k13enoy3018: 'Drag a box in the scene to set this character\'s movement range',
1486
+ khqvwix019: 'Auto = tool calls execute directly; manual = every write needs approval here',
1487
+ keztqrn020: 'Note (returned to the agent with the result)…',
1488
+ k15avt7g021: 'Re-fetch this character\'s conversation history',
1489
+ k1bkswpz022: 'Acknowledge All',
1490
+ klfwiqg023: 'RPG nav map · crosshair = camera · drag to pan · click to focus · wheel syncs zoom',
1491
+ k1lap9bs024: 'Reset View',
1492
+ kav8a8k025: 'Zoom out (minimap synced)',
1493
+ k1u7uce9026: 'Zoom in (minimap synced)',
1494
+ k48dwh027: 'Run',
1495
+ k45eb0028: 'Edit',
1496
+ k1b3bk8t029: 'Save Layout',
1497
+ k1k75lzy030: 'Device Assets',
1498
+ k2gwyas031: 'DAQ Nodes',
1499
+ k3xg3w032: 'Interval',
1500
+ km7ayhi033: 'Control Nodes (DCW)',
1501
+ k1c9n911034: 'Scene Manager',
1502
+ k1b0z4vr035: 'Line Twin Overview',
1503
+ kv72860036: '3D View · Standard',
1504
+ k1k6xemt037: 'Devices',
1505
+ k49lh038: '',
1506
+ k1l1a9t2039: 'Running Devices',
1507
+ k4dfq040: 'items',
1508
+ k1emsai1041: 'DAQ Channels',
1509
+ k4l1w042: '',
1510
+ kbrxdq1043: 'Line Health',
1511
+ k3rwxjc044: 'Empty Scene',
1512
+ k1sa1eaj045: 'Drag entities from “Device Assets / DAQ Nodes” on the left to start building the digital twin space',
1513
+ k1mehlxs046: 'Channel Manager',
1514
+ k489ka047: 'Boundary',
1515
+ k3zhy5048: 'Shape',
1516
+ k414bc049: 'Ellipse',
1517
+ k43u0g050: 'Rectangle',
1518
+ k1fbz4s1051: 'Semi-axis X',
1519
+ k1ighwgs052: 'Semi-axis Z',
1520
+ k40qab053: 'Orientation',
1521
+ kimxls2054: 'Pick 3D character models for channel members (live re-skin, persisted)',
1522
+ k419rbs055: 'No members in this channel yet',
1523
+ k1b3kp8f056: 'Save Boundary',
1524
+ k1hs45qg057: 'Remove Channel',
1525
+ k3x62t058: 'Close',
1526
+ kvjdqfg059: 'Building the digital twin space…',
1527
+ k1c9iq23060: 'Scene Controls',
1528
+ k1gizopz061: 'Ambient Light',
1529
+ k1bcpqto062: 'Structure Opacity',
1530
+ k1bztha1063: 'Alarm Threshold',
1531
+ ka4i1s9064: 'Callout Distance',
1532
+ k1idc6pa065: 'Grid Snap',
1533
+ k1i046wf066: 'Emergency Stop',
1534
+ k1kfoef9067: 'Trend Analysis',
1535
+ trendExpandAll: 'Show all {p0} channels',
1536
+ trendCollapse: 'Collapse',
1537
+ statesOffline: 'Offline',
1538
+ fpsCapLabel: 'FPS Cap',
1539
+ 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)',
1540
+ qualityLabel: 'Quality',
1541
+ qualityTip: 'Auto = tier by measured fps; Normal/HD/Ultra = fixed render config (Ultra unlocks full WebGL quality)',
1542
+ qualityAuto: 'Auto',
1543
+ qualityNormal: 'Normal',
1544
+ qualityHD: 'HD',
1545
+ qualityUltra: 'Ultra',
1546
+ secRender: 'Render',
1547
+ secEnv: 'Environment',
1548
+ secOps: 'Operate',
1549
+ hitlAutoReject: 'to auto-reject (timeout default-deny)',
1550
+ k1uht2uv068: 'Drag DAQ nodes from the left; live trends plot here',
1551
+ k1deqh0d069: 'Current Setpoint',
1552
+ k1i8rtqt070: 'Bound Device',
1553
+ kjo6ekr071: 'Select a device instance…',
1554
+ k3mv305072: 'Live Value',
1555
+ k1faqmjb073: 'In range',
1556
+ k1l6g2ga074: 'Sampling',
1557
+ k1or92b075: 'ms (empty = follow global)',
1558
+ k3x5tpx076: 'Warn Band',
1559
+ k1hjj0jf077: 'Hard Range',
1560
+ k48tki078: 'Acquire',
1561
+ k3xakp079: 'Delete',
1562
+ k1bpp30k080: 'Delete Node',
1563
+ kzk5dfx081: 'Mode · Read-only',
1564
+ k3xhia082: 'Name',
1565
+ k41amp083: 'Model',
1566
+ kgpuqhb084: 'No DAQ channels · drop a DAQ node near this device to auto-bind',
1567
+ kvm0lin085: '+ Add DAQ Channel',
1568
+ k48grv086: 'Recipe',
1569
+ k10smf24087: 'No control channels · drop a control node near this device to auto-bind',
1570
+ kvk1vh5088: '+ Add Control Channel',
1571
+ k1hg3167089: 'Move G',
1572
+ k1enlg7i090: 'Rotate R',
1573
+ k1ibjg3j091: 'Scale S',
1574
+ kt0i3y2092: 'Mode · Read-only (switch to “Edit” to transform/delete)',
1575
+ k1fix3hb093: 'Activity Range',
1576
+ k1p7nru2094: 'Industrial Node Bindings',
1577
+ k1io1ylm095: 'Auto Execute',
1578
+ k1duyr8q096: 'Manual Approval',
1579
+ k40ifw097: 'Control',
1580
+ k40rjw098: 'DAQ',
1581
+ kurjldk099: 'Select nodes…',
1582
+ k45kpj100: 'Auto',
1583
+ k3zul4101: 'Manual',
1584
+ k452a8102: 'Bind',
1585
+ kslcozu103: '✓ Approve',
1586
+ k14gu3rd104: '✕ Reject',
1587
+ k41lwj105: 'Axis X',
1588
+ k45bta106: 'Axis Z',
1589
+ k1w45mzc107: 'Clear range (fall back to channel)',
1590
+ k14s8urm108: 'Not set: members roam the channel boundary; click “Draw Range” to customize',
1591
+ kkhlx5h109: 'Loading conversation history…',
1592
+ k3o5tz9110: 'Running',
1593
+ k1qkqld7111: 'No conversation · this member hasn\'t spoken yet',
1594
+ k17dkhgd112: 'Device Run State',
1595
+ k7h1nxo113: 'Device Health',
1596
+ k3vp67i114: 'Running',
1597
+ k3zcvb115: 'Standby',
1598
+ k3xmid116: 'Alarm',
1599
+ k1q247fn117: 'Key Device Monitor',
1600
+ k1cxf749118: 'Live Alarms',
1601
+ kjz544r119: 'No alarms; lines are running smoothly',
1602
+ k1cxdtq2120: 'Live Events',
1603
+ k2uk6ua121: 'Event bus standing by',
1604
+ kjug2jq122: '3D View Navigation',
1605
+ k1i4g246123: 'System',
1606
+ k4a0jt124: 'Channels',
1607
+ k3xdvm125: 'Members',
1608
+ k47e16126: 'Devices',
1609
+ klyi8yg127: 'Digital Twin Platform',
1610
+ k1brss7t128: 'Members ·',
1611
+ k3ztf1129: 'Members',
1612
+ k1vtyk05130: 'DAQ bindings ·',
1613
+ ktzir2t131: 'Control setpoints ·',
1614
+ k1gk2jg7132: 'Pending approvals ·',
1615
+ k1ghjbfc133: 'Sessions ·',
1616
+ k768cnt134: 'History ·',
1617
+ k1cwz73k135: 'Live ·',
1618
+ k1gaaodq136: 'crosshair = camera · zoom ×',
1619
+ k1h5gxpf137: 'Demo data is simulated signals',
1620
+ k3vfpz5138: ' channels',
1621
+ k1pub99m139: 'Line Manager',
1622
+ k3w3j8f140: 'Acquiring',
1623
+ k3n94g3141: 'Placed',
1624
+ k3lkuz3142: 'Loading',
1625
+ k1iipfcs143: 'Edit Mode',
1626
+ k493s144: 'Off',
1627
+ k4bs5145: 'On',
1628
+ k1ekqxlt146: 'Control Node',
1629
+ kq2jssk147: 'Recipe Process Window',
1630
+ k3own4q148: 'Unbound',
1631
+ k479eh149: 'Unbind',
1632
+ k1wv0nyo150: 'Disable this node',
1633
+ k1l3m0hx151: 'Recipe Window',
1634
+ k1w10xa5152: 'Click again to confirm deletion',
1635
+ k3slzhc153: 'Drawing',
1636
+ k41k5c154: 'OK',
1637
+ k3oo50k155: 'Unsaved',
1638
+ k1b38d59156: 'Saving…',
1639
+ k3n51yk157: 'Saved',
1640
+ k1b3ayhc158: 'Save failed',
1641
+ k7rvbts159: 'Drag a channel card onto the scene to place it (release to drop)',
1642
+ k1v1icf6160: 'Not set · follows the channel boundary',
1643
+ kpplr16161: 'Owning channel not found; cannot bind the model',
1644
+ kt6xb5p162: 'Mode is read-only · switch to “Edit” to modify the scene',
1645
+ k3n4l5f163: 'Working',
1646
+ k3n58d1164: 'Stopped',
1647
+ k3w9q9165: 'Deliverables',
1648
+ k44xa7166: 'System',
1649
+ k3zbgf167: 'Error',
1650
+ k1ef3cls168: 'DAQ Channels',
1651
+ k15tn2fh169: 'Select a device in the scene first',
1652
+ k3ng94k170: 'Pending',
1653
+ k3mi2n0171: 'Processing',
1654
+ k3ncnxl172: 'Acknowledged',
1655
+ kb157zk173: 'EMERGENCY STOP triggered — all lines halted',
1656
+ k1s9qzr9174: 'Emergency stop released — lines resumed',
1657
+ kwrbtn180: 'Write',
1658
+ ksavetip181: 'Save all device layout',
1659
+ krotip182: 'Read-only in run mode',
1660
+ },
1661
+ transcriptTimeline: {
1662
+ k44c2n024: 'Offline',
1663
+ kglov3b025: 'Data last updated: {p0}',
1664
+ k3wwxl026: 'just now',
1665
+ k2gyl6l027: '{p0}s ago',
1666
+ k2hda35028: '{p0} 年 ',
1667
+ kbs29zx029: '{p0}{p1}-{p2}',
1668
+ k3y2p8020: 'Online',
1669
+ kywgd38021: 'Load earlier events',
1670
+ k126izdm022: 'Waiting for events…',
1671
+ kuyjpmi023: 'Submit a task below; the agent execution renders here live',
1672
+ kqu93z8001: 'Jump to latest',
1673
+ k40t11002: 'Latest',
1674
+ k1kbaden003: 'All history loaded (from the very first event)',
1675
+ ktuo1zg004: 'No matching events',
1676
+ k1atjpx1005: 'Events /',
1677
+ kapxgq4006: 'No events under this filter; try other filters',
1678
+ k4a9o007: 'blocks',
1679
+ k3lmtk3008: 'Syncing',
1680
+ k1br0ij9009: 'Loading…',
1681
+ klnne6o010: 'Syncing timeline…',
1682
+ k1iuqpxj011: 'Events will re-align automatically once the connection recovers',
1683
+ k3x4t1012: 'All',
1684
+ k3x5xi013: 'Critical',
1685
+ k41ykc014: 'Message',
1686
+ k3wcox015: 'Task',
1687
+ k3y5ja016: 'Team',
1688
+ k49d2l017: 'Error',
1689
+ k3wcqg018: 'Today',
1690
+ k40l1y019: 'Yesterday',
1691
+ },
1692
+ titles: {
1693
+ dashboard: 'Dashboard · AgentWorkShop',
1694
+ daq: 'DAQ Console · AgentWorkShop',
1695
+ daqNode: 'DAQ Node Console · AgentWorkShop',
1696
+ dcw: 'Line Operations · AgentWorkShop',
1697
+ dcwLine: 'Line Detail · AgentWorkShop',
1698
+ tokens: 'API Tokens · AgentWorkShop',
1699
+ users: 'Users · AgentWorkShop',
1700
+ workshop: 'Workshop · AgentWorkShop',
1701
+ agents: 'Agent Templates · Workshop',
1702
+ teams: 'Agent Team Groups · Workshop',
1703
+ ctpl: 'Channel Template Hub · Workshop',
1704
+ monitor: 'Runtime Monitor · AgentWorkShop',
1705
+ settings: 'Settings · AgentWorkShop',
1706
+ },
1707
+ chips: {
1708
+ chipAll: 'All {n}',
1709
+ chipMine: 'Mine {n}',
1710
+ chipPublic: 'Public {n}',
1711
+ chipBuiltin: 'Built-in {n}',
1712
+ chipOthers: 'Others\' private {n}',
1713
+ mine: 'Mine',
1714
+ public: 'Public',
1715
+ builtin: 'Built-in',
1716
+ issue: 'Issue Token',
1717
+ issueTitle: 'Issue API Token',
1718
+ },
1719
+ appHeader: {
1720
+ kzwjv99001: 'Close {p0}',
1721
+ kwsdot0001: 'Live connection healthy',
1722
+ kwsdot0002: 'Syncing in real time…',
1723
+ kwsdot0003: 'Connecting…',
1724
+ kwsdot0004: 'Connection lost',
1725
+ },
1726
+ ompTerminalPanel: {
1727
+ k14jk3nu001: ' {p0}· 对话框已撤销({p1}){p2}',
1728
+ k68kkpc002: '{p0}── 已接入 omp 进程 PID {p1}(会话重放 {p2} 帧)──{p3}',
1729
+ k59zj91003: '{p0}✗ 终端连接未就绪,命令未发送{p1}',
1730
+ kvzhi95004: '{p0}✔ HITL 已应答:{p1}{p2}',
1731
+ ke67kwf005: '{p0}── 切换目标 · {\'$\'}{\'{\'}props.pid ? ',
1732
+ },
1733
+ error: {
1734
+ backHome: 'Back to Home',
1735
+ lost: 'Page lost',
1736
+ },
1737
+ }