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,1097 @@
1
+ {
2
+ "名称": "Name",
3
+ "可见性": "Visibility",
4
+ "创建者": "Creator",
5
+ "实例数": "Instances",
6
+ "启用": "Enable",
7
+ "操作": "Actions",
8
+ "删除模板?(已克隆实例保留)": "Delete template? (Cloned instances are kept)",
9
+ "模板按用户隔离:私有仅本人可见;公开后全员可读可用(仅属主可修改);内置模板公开且不可变更。": "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.",
10
+ "返回工作区": "Back to Workspace",
11
+ "新建模板": "New Template",
12
+ "admin 视图:可见全部用户的模板与创建者": "Admin view: templates and creators of all users are visible",
13
+ "编辑": "Edit",
14
+ "删除": "Delete",
15
+ "尚无实例": "No instances yet",
16
+ "私有(仅本人可见)": "Private (visible only to you)",
17
+ "公开(全员可读可用,仅本人可修改)": "Public (readable and usable by everyone, only you can modify)",
18
+ "内置": "Built-in",
19
+ "公开": "Public",
20
+ "私有": "Private",
21
+ "已更新": "Updated",
22
+ "已创建": "Created",
23
+ "已删除": "Deleted",
24
+ "已公开:全员可读可用,仅你可修改": "Published: readable and usable by everyone, only you can modify",
25
+ "已转为私有": "Switched to private",
26
+ "删除模板?(已实例化的 Channel 不受影响)": "Delete template? (Instantiated Channels are not affected)",
27
+ "按模板新建 Channel(成员自动装配)": "Create Channel from template (members auto-assembled)",
28
+ "模板名称": "Template Name",
29
+ "描述": "Description",
30
+ "选择 lead 模板(可空)": "Select lead template (optional)",
31
+ "Worker 成员模板(实例化时逐个克隆)": "Worker member templates (cloned one by one on instantiation)",
32
+ "选择成员模板(可空)": "Select member templates (optional)",
33
+ "作业场景 Prompt(注入全部成员)": "Scenario prompt (injected into all members)",
34
+ "工作目录(留空 = 实例化时默认)": "Working directory (empty = default at instantiation)",
35
+ "场景 + 工作目录 + 团队的组合模板;一键实例化为 Channel(成员自动装配)。模板按用户隔离,公开后全员可用。": "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.",
36
+ "空团队": "Empty team",
37
+ "实例化": "Instantiate",
38
+ "新建第一个 Channel 模板": "Create the first Channel template",
39
+ "公开(全员可实例化,仅本人可修改)": "Public (instantiable by everyone, only you can modify)",
40
+ "模板名必填": "Template name is required",
41
+ "模板已创建;可在工作区左侧会话栏一键实例化挂载": "Template created; instantiate and mount it with one click from the session bar on the left of the workspace",
42
+ "已公开:全员可实例化": "Published: instantiable by everyone",
43
+ "已删除模板": "Template deleted",
44
+ "Channel 模板中心 · Workshop": "Channel Template Hub · Workshop",
45
+ "节点未单独设置 WS 下发间隔时的全局缺省;0 = 随采样节拍每帧下发": "Global default when a node has no per-node WS publish interval; 0 = publish every frame with the sampling cadence",
46
+ "生产者已发布到队列": "Published to queue by producer",
47
+ "消费者已从队列取得": "Consumed from queue by consumer",
48
+ "时序库累计入库样本": "Samples stored in the time-series DB",
49
+ "缺省按模板自增命名": "Defaults to auto-incremented name per template",
50
+ "如 烘箱湿度": "e.g. Oven Humidity",
51
+ "缺省同名称": "Defaults to the name",
52
+ "缺省自动生成": "Defaults to auto-generated",
53
+ "节点所属产线的开跑状态:未开跑/未分配的节点不采集": "Run state of the node's line: idle/unassigned nodes do not sample",
54
+ "节点产线归属(未挂载产线的节点不采集)": "Line assignment (nodes without a line do not sample)",
55
+ "数采中心": "DAQ Console",
56
+ "采集 → 队列(MQTT)→ 时序库(Timescale)→ WS 实时下发全链路;节点实体与参数以服务端为准。": "Full pipeline: acquisition → queue (MQTT) → time-series DB (Timescale) → WS real-time publish; node entities and parameters are authoritative on the server.",
57
+ "产线未开跑 —— 数采由产线配方驱动:请在": "No line is running — data acquisition is recipe-driven: please ",
58
+ "产线运营": "Line Operations",
59
+ "开跑产线,并将节点挂载到产线": "start a line in Line Operations and mount nodes to it",
60
+ "缺省周期": "Default Interval",
61
+ "缺省下发": "Default Publish",
62
+ "模板管理": "Template Manager",
63
+ "添加节点": "Add Node",
64
+ "产线状态": "Line Status",
65
+ "待机": "Standby",
66
+ "暂无产线": "No lines yet",
67
+ "去产线运营创建": "Create one in Line Operations",
68
+ "添加数采节点": "Add DAQ Node",
69
+ "Mock 模拟源": "Mock Simulator",
70
+ "真实设备采集": "Real Device",
71
+ "信号模板(量程/单位域)": "Signal template (range/unit domain)",
72
+ "节点名称(可选)": "Node name (optional)",
73
+ "采样周期 ms(空=跟随全局)": "Sampling interval ms (empty = follow global)",
74
+ "通信协议": "Protocol",
75
+ "取消": "Cancel",
76
+ "信号模板管理": "Signal Template Manager",
77
+ "自定义模板": "Custom Templates",
78
+ "暂无自定义模板 —— 从下方内置模板复制,或直接在下方表单新建。": "No custom templates yet — copy from the built-in ones below, or create directly in the form below.",
79
+ "单位": "Unit",
80
+ "通道语义": "Channel Semantics",
81
+ "位号代号": "Tag Code",
82
+ "量程下限": "Range Min",
83
+ "量程上限": "Range Max",
84
+ "小数位": "Decimals",
85
+ "图标": "Icon",
86
+ "模拟基值": "Mock Base",
87
+ "Mock 采样中心值,缺省量程中点": "Center value of mock sampling; defaults to range midpoint",
88
+ "模拟波幅": "Mock Amplitude",
89
+ "Mock 波动幅度,缺省量程 4%": "Mock fluctuation amplitude; defaults to 4% of range",
90
+ "重置": "Reset",
91
+ "内置模板(只读,可复制)": "Built-in Templates (read-only, copyable)",
92
+ "复制": "Copy",
93
+ "产线": "Line",
94
+ "全部产线": "All Lines",
95
+ "未分配": "Unassigned",
96
+ "绑定设备": "Bound Device",
97
+ "全部设备": "All Devices",
98
+ "未绑定": "Unbound",
99
+ "产线运行": "Line Run",
100
+ "全部": "All",
101
+ "采集开启(运行中)": "Acquiring (running)",
102
+ "采集关闭(待机/未分配)": "Acquisition off (standby/unassigned)",
103
+ "节点状态": "Node State",
104
+ "正常": "OK",
105
+ "预警": "Warn",
106
+ "告警": "Alarm",
107
+ "离线": "Offline",
108
+ "清除筛选": "Clear Filters",
109
+ "节点": "Node",
110
+ "状态": "State",
111
+ "实时值": "Live Value",
112
+ "采样周期": "Sampling",
113
+ "WS 下发": "WS Publish",
114
+ "驱动": "Driver",
115
+ "控制台": "Console",
116
+ "暂无数采节点 —— 在数字孪生空间从左轨「数采节点 · DAQ」拖入即可(server 建立节点实体)。": "No DAQ nodes yet — drag from the left rail “DAQ Nodes” in the digital twin space (the server creates node entities).",
117
+ "无匹配节点 —— 当前筛选条件下没有节点,请调整或清除筛选。": "No matching nodes — nothing matches the current filters; adjust or clear them.",
118
+ "前往登录": "Go to Sign-in",
119
+ "每帧": "Every frame",
120
+ "温度": "Temperature",
121
+ "压力": "Pressure",
122
+ "张力": "Tension",
123
+ "编码器": "Encoder",
124
+ "视觉": "Vision",
125
+ "电参/网关": "Electric/Gateway",
126
+ "周期": "Interval",
127
+ "下发": "Apply",
128
+ "预警带": "Warn Band",
129
+ "硬限量程": "Hard Range",
130
+ "采集参数(server 单点控制)": "Acquisition Params (server-controlled)",
131
+ "节点启停": "Node Enable",
132
+ "所属产线(未挂载不采集)": "Line (no sampling without a line)",
133
+ "采样驱动": "Sampling Driver",
134
+ "预警下限": "Warn Low",
135
+ "预警上限": "Warn High",
136
+ "设备绑定(端到端集成)": "Device Binding (end-to-end)",
137
+ "选择设备孪生…": "Select a device twin…",
138
+ "刷新": "Refresh",
139
+ "时间": "Time",
140
+ "值": "Value",
141
+ "态": "State",
142
+ "每帧(随采样)": "Every frame (with sampling)",
143
+ "原始点": "Raw points",
144
+ "存在未挂载产线的节点/产品,可在对应产线详情页收编": "There are nodes/products not assigned to any line; adopt them from the corresponding line detail page",
145
+ "删除产线(旗下节点/产品/配方解除挂载)": "Delete line (nodes/products/recipes are unmounted)",
146
+ "选择配方后开跑": "Pick a recipe to start",
147
+ "如 1号产线 / 流延线 A": "e.g. Line 1 / Casting Line A",
148
+ "产线用途说明": "Line purpose notes",
149
+ "如 电机电流设定": "e.g. Motor Current Setpoint",
150
+ "如 电机电流": "e.g. Motor Current",
151
+ "如:电机电流设定:电流升高表示负载增大…调整需小幅步进并观察温升": "e.g. Motor current setpoint: rising current means growing load… adjust in small steps and watch temperature rise",
152
+ "产线是节点/产品/配方/数据的顶层隔离单元:每个控制节点挂载到产线,开跑后本产线数采逐样本携带产线标识;\n 控制模板只定义参数分类与工艺量程,真正下发 PLC 的是节点。": "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.",
153
+ "产品": "Product",
154
+ "配方": "Recipe",
155
+ "▶ 开跑": "▶ Start Run",
156
+ "■ 停止": "■ Stop",
157
+ "产线管理 →": "Line Management →",
158
+ "新建产线": "New Line",
159
+ "还没有产线:点击「新建产线」创建第一条产线,然后在产线详情里收编/添加控制节点、建产品与配方。": "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.",
160
+ "产线名称": "Line Name",
161
+ "描述(可选)": "Description (optional)",
162
+ "光晕色(数字孪生场景中本产线节点的光环色)": "Halo color (glow color of this line's nodes in the digital twin scene)",
163
+ "创建": "Create",
164
+ "控制模板管理": "Control Template Manager",
165
+ "模板 = 参数分类(电机电流/转速/线速度…),定义单位与工艺安全量程;创建控制节点时选模板继承域,节点可再自定义覆盖。": "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.",
166
+ "新建自定义模板": "New Custom Template",
167
+ "参数语义": "Parameter Semantics",
168
+ "工艺语义(物理意义/对产线的影响/调整守则 —— 注入绑定此模板的 Agent 上下文)": "Process semantics (physical meaning / line impact / adjustment rules — injected into the context of agents bound to this template)",
169
+ "关闭": "Close",
170
+ "创建模板": "Create Template",
171
+ "请先选择该产线的配方(配方需绑定控制节点参数)": "Pick a recipe for this line first (the recipe must bind control-node parameters)",
172
+ "编码/速度": "Encoder/Speed",
173
+ "通用": "General",
174
+ "模板名称必填": "Template name is required",
175
+ "工艺量程(min/max)必填": "Process range (min/max) is required",
176
+ "删除失败": "Delete failed",
177
+ "累计写命令": "Total Writes",
178
+ "累计写失败": "Total Failed Writes",
179
+ "自定义创建控制节点模板:物理含义/单位/工艺安全量程": "Create a custom control-node template: physical meaning / unit / safe process range",
180
+ "工艺安全下限": "Safe Min",
181
+ "工艺安全上限": "Safe Max",
182
+ "如 5000(心跳重下发)": "e.g. 5000 (hold-write heartbeat)",
183
+ "如:2 号烘箱温度:与 1 号联动控制分区温差,调整步进 ≤1℃": "e.g. Oven 2 temperature: tracks zone delta with Oven 1, step ≤1℃",
184
+ "删除产品": "Delete Product",
185
+ "活动批次内数采越限即报警": "Alarms when DAQ goes out of bounds within the active batch",
186
+ "如 0.8mm 光学膜": "e.g. 0.8mm Optical Film",
187
+ "产品/工艺说明(可选)": "Product/process notes (optional)",
188
+ "节点全局量程内": "within node global range",
189
+ "运行期写入硬约束": "hard write constraint while running",
190
+ "产线不存在或已被删除。": "The line does not exist or has been deleted.",
191
+ "← 返回产线总览": "← Back to Line Overview",
192
+ "添加控制模板": "Add Control Template",
193
+ "添加控制节点": "Add Control Node",
194
+ "未分配资产 · 收编到本产线": "Unassigned Assets · Adopt into This Line",
195
+ "+ 收编": "+ Adopt",
196
+ "选择产品与配方后开跑;运行中的每条数采数据将携带产品/配方/批次标识": "Pick a product and recipe to start; every acquired sample will be tagged with product/recipe/batch while running",
197
+ "选择产品…": "Select product…",
198
+ "选择配方…": "Select recipe…",
199
+ "▶ 开始数采": "▶ Start Acquisition",
200
+ "■ 停止数采": "■ Stop Acquisition",
201
+ "添加控制节点模板": "Add Control Node Template",
202
+ "模板 = 参数分类(物理含义/单位/工艺安全量程):创建控制节点时选模板继承域;模板下发不涉及 PLC,真正执行的是节点。": "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.",
203
+ "工艺语义(物理意义/对产线的影响/调整守则 —— 注入绑定此模板节点的 Agent 上下文)": "Process semantics (physical meaning / line impact / adjustment rules — injected into the context of agents bound to nodes of this template)",
204
+ "真实 PLC 写入": "Real PLC Write",
205
+ "控制模板(物理含义/单位/安全量程)": "Control template (meaning / unit / safe range)",
206
+ "保写周期 ms(空=仅手动下发)": "Hold-write interval ms (empty = manual only)",
207
+ "写入标定 encode(物理值 → PLC 设定值)": "Write calibration encode (physical value → PLC setpoint)",
208
+ "无(直接写工程值)": "None (write engineering value directly)",
209
+ "节点工艺语义(可选,覆盖模板描述 —— 注入绑定此节点的 Agent 上下文)": "Node process semantics (optional, overrides template — injected into the context of agents bound to this node)",
210
+ "控制节点": "Control Node",
211
+ "控制": "Control",
212
+ "当前设定": "Current Setpoint",
213
+ "设定下发": "Setpoint",
214
+ "工艺量程": "Process Range",
215
+ "保写周期": "Hold Interval",
216
+ "已暂停": "Paused",
217
+ "暂无控制节点 —— 点击右上「添加控制节点」从工艺模板创建。": "No control nodes yet — click “Add Control Node” (top right) to create one from a process template.",
218
+ "产品与配方": "Products & Recipes",
219
+ "+ 新建配方": "+ New Recipe",
220
+ "+ 新建产品": "+ New Product",
221
+ "一个产品可有多个配方;配方 = 工艺参数集(控制模板 + 目标工程值)。产线开跑时选定配方,其参数随开跑下发,\n 数采数据逐样本携带产品/配方/批次标识。": "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.",
222
+ "暂无产品 —— 点击「新建产品」创建(配方必挂产品;数据按产品隔离)。": "No products yet — click “New Product” to create one (recipes require a product; data is isolated per product).",
223
+ "▶ 下发": "▶ Apply",
224
+ "暂无配方 —— 点击「新建配方」定义产品工艺参数集。": "No recipes yet — click “New Recipe” to define a product's process parameter set.",
225
+ "生产批次(数据隔离窗口)": "Production Batches (data isolation windows)",
226
+ "批次": "Batch",
227
+ "窗口": "Window",
228
+ "参数结果": "Param Results",
229
+ "批次数据": "Batch Data",
230
+ "关闭批次": "Close Batch",
231
+ "数采通道汇总(批次窗口内,产品隔离)": "DAQ Channel Summary (within the batch window, product-isolated)",
232
+ "通道": "Channel",
233
+ "最新": "Latest",
234
+ "均值": "Avg",
235
+ "样本": "Samples",
236
+ "窗口内无数采样本": "No DAQ samples in the window",
237
+ "写历史(批次窗口内)": "Write History (within the batch window)",
238
+ "参数": "Parameter",
239
+ "工程值": "Engineering",
240
+ "原始值": "Raw",
241
+ "结果": "Result",
242
+ "时刻": "At",
243
+ "窗口内无写记录": "No write records in the window",
244
+ "所属产品": "Product",
245
+ "配方名称": "Recipe Name",
246
+ "工艺参数(绑定本产线控制节点:节点才是真实下发 PLC 的执行体,模板仅分类)": "Process parameters (bound to this line's control nodes: nodes are the real PLC writers, templates only classify)",
247
+ "目标值": "Target",
248
+ "移除": "Remove",
249
+ "+ 添加参数": "+ Add Parameter",
250
+ "数采监控窗口(活动批次内,数采节点实时值越出窗口即报警标红)": "DAQ monitor windows (while the batch is active, DAQ live values outside the window turn the row into an alarm)",
251
+ "数采节点": "DAQ Node",
252
+ "监控下限(可选)": "Monitor Min (optional)",
253
+ "监控上限(可选)": "Monitor Max (optional)",
254
+ "+ 添加监控窗口": "+ Add Monitor Window",
255
+ "产线数据查询(产品 · 配方 · 工艺参数 · 时间 · 间隔)": "Line Data Query (product · recipe · parameter · time · bucket)",
256
+ "全部产品": "All Products",
257
+ "全部配方": "All Recipes",
258
+ "工艺参数": "Parameter",
259
+ "全部通道": "All Channels",
260
+ "全部节点": "All Nodes",
261
+ "最近(分钟)": "Last (min)",
262
+ "聚合间隔 ms(0=原始点)": "Bucket ms (0 = raw)",
263
+ "点数": "Points",
264
+ "首值": "First",
265
+ "末值": "Last",
266
+ "区间": "Span",
267
+ "新建产品": "New Product",
268
+ "产品名称": "Product Name",
269
+ "写入中": "Writing",
270
+ "故障": "Error",
271
+ "单位必填(如 ℃ / A)": "Unit is required (e.g. ℃ / A)",
272
+ "开跑前必须先设定配方:请选择产品与配方(配方需含工艺参数)": "A recipe is required before starting: pick a product and a recipe (the recipe must contain process parameters)",
273
+ "窗口内无匹配数据(检查产品/配方/时间范围;仅产线运行中的样本带产线标识)": "No matching data in the window (check product/recipe/time range; only samples from running lines carry the line identity)",
274
+ "归属用户": "Owner",
275
+ "公开编组:全员可部署;仅属主可修改": "Public groups: deployable by everyone; only the owner can modify",
276
+ "新建编组": "New Group",
277
+ "模板": "Template",
278
+ "角色": "Role",
279
+ "编组按用户隔离;公开编组全员可部署(仅属主可修改);一键整体部署到 Channel(每个成员克隆为独立实例)。": "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).",
280
+ "admin 视图:可见全部用户的编组与创建者": "Admin view: groups and creators of all users are visible",
281
+ "删除编组": "Delete Group",
282
+ "部署": "Deploy",
283
+ "+ 添加成员模板": "+ Add Member Template",
284
+ "新建第一个编组": "Create the first group",
285
+ "公开(全员可部署,仅本人可修改)": "Public (deployable by everyone, only you can modify)",
286
+ "lead(至多一个)": "lead (at most one)",
287
+ "名称必填": "Name is required",
288
+ "已公开:全员可部署,仅你可修改": "Published: deployable by everyone, only you can modify",
289
+ "选择模板": "Select Template",
290
+ "已加入": "Added",
291
+ "已删除编组": "Group deleted",
292
+ "标签,如:CI / 测试脚本 / 备用": "Tags, e.g. CI / test scripts / backup",
293
+ "标签": "Tags",
294
+ "请先登录": "Sign in first",
295
+ "Token 属于登录用户的私有资源,需登录后管理。": "Tokens are private to a signed-in user; sign in to manage them.",
296
+ "当前会话 Token 已标识": "Current session token is marked",
297
+ "当前会话": "Current session",
298
+ "旧版不可见": "Hidden (legacy)",
299
+ "重命名": "Rename",
300
+ "吊销": "Revoke",
301
+ "Token 已创建并存档,之后可随时在列表中查看/复制;仍建议仅在可信环境展示明文。": "The token has been created and archived; you can view/copy it from the list anytime. Still, only reveal the plaintext in trusted environments.",
302
+ "我已保存,关闭": "Saved, close",
303
+ "加载 token 列表失败": "Failed to load token list",
304
+ "标签不能为空": "Tags cannot be empty",
305
+ "已吊销": "Revoked",
306
+ "复制失败,请手动选择复制": "Copy failed; please select and copy manually",
307
+ "该 token 创建于旧版本(仅存哈希),无法查看明文;建议吊销后重新签发": "This token was created by a legacy version (hash only); plaintext is unavailable. Consider revoking and re-issuing",
308
+ "查看明文失败": "Failed to reveal plaintext",
309
+ "该 token 创建于旧版本(仅存哈希),无法复制明文;建议吊销后重新签发": "This token was created by a legacy version (hash only); plaintext cannot be copied. Consider revoking and re-issuing",
310
+ "获取明文失败": "Failed to fetch plaintext",
311
+ "复制失败,请先显示明文后手动选择复制": "Copy failed; reveal the plaintext first and copy manually",
312
+ "创建时间": "Created",
313
+ "最近使用": "Last Used",
314
+ "还没有挂载任何 Channel": "No Channels mounted yet",
315
+ "请到": "Please go to ",
316
+ "创建/挂载频道后,再回到 AgentWorkShop 孪生空间。": "create/mount a channel, then come back to the AgentWorkShop twin space.",
317
+ "正在接入 AgentWorkShop 孪生空间(订阅实时事件流)…": "Connecting to the AgentWorkShop twin space (subscribing to the live event stream)…",
318
+ "邮箱": "Email",
319
+ "密码": "Password",
320
+ "用户名(唯一)": "Username (unique)",
321
+ "邮箱(唯一)": "Email (unique)",
322
+ "密码(≥6 位,含字母和数字)": "Password (≥6 chars with letters and digits)",
323
+ "粘贴用户 token": "Paste user token",
324
+ "Workspace 名称,如:支付网关重构": "Workspace name, e.g. Payment Gateway Refactor",
325
+ "进入工作台": "Open Workshop",
326
+ "登录": "Sign In",
327
+ "每次登录签发一个会话 token,可在 Token 管理页单独吊销。": "Each sign-in issues a session token that can be revoked individually on the Token page.",
328
+ "注册并登录": "Register & Sign In",
329
+ "注册成功后自动登录;可再自行签发多个 token。": "You are signed in automatically after registration; you can issue more tokens yourself.",
330
+ "模板库": "Templates",
331
+ "编组库": "Groups",
332
+ "退出": "Sign Out",
333
+ "同步中…": "Syncing…",
334
+ "未挂载 Channel(进入后从左栏挂载)": "No Channel mounted (mount from the left rail after entering)",
335
+ "进入控制台": "Open Console",
336
+ "请填写用户名": "Username is required",
337
+ "请填写邮箱": "Email is required",
338
+ "密码至少 6 位 (需含字母和数字)": "Password must be at least 6 characters (letters and digits)",
339
+ "已退出": "Signed out",
340
+ "加载失败": "Load failed",
341
+ "快捷键 1-5 直切视图": "Hotkeys 1-5 switch views",
342
+ "收起/展开 会话栏": "Collapse/expand session bar",
343
+ "收起/展开 检查器": "Collapse/expand inspector",
344
+ "命令面板(⌘K)": "Command palette (⌘K)",
345
+ "拖拽调节会话栏宽度": "Drag to resize session bar",
346
+ "拖拽调节检查器宽度": "Drag to resize inspector",
347
+ "从左侧挂载或选择一个": "Mount or select one from the left",
348
+ "开始": "Start",
349
+ "会话列表支持新建 Channel、从模板实例化,以及热修改场景与工作目录": "The session list supports creating Channels, instantiating from templates, and hot-editing scenario and working directory",
350
+ "时间线": "Timeline",
351
+ "任务板": "Tasks",
352
+ "同屏": "Screens",
353
+ "孪生空间": "Twin Space",
354
+ "诊断线": "Diag Line",
355
+ "工具审计线": "Tool Audit Line",
356
+ "语义验证线": "Semantic Check Line",
357
+ "创建/挂载频道后,再回到孪生空间。": "create/mount a channel, then come back to the twin space.",
358
+ "Agent 模板库": "Agent Templates",
359
+ "AgentTeam 编组库": "Agent Team Groups",
360
+ "Channel 模板中心": "Channel Template Hub",
361
+ "管理全局用户与角色(admin 拥有最高权限:全量监控、任意模板、用户管理)。": "Manage global users and roles (admins have the highest privileges: full monitoring, any template, user management).",
362
+ "用户管理 · AgentWorkShop": "Users · AgentWorkShop",
363
+ "加载中…": "Loading…",
364
+ "启用中": "Active",
365
+ "停用": "Disabled",
366
+ "设为 admin": "Make admin",
367
+ "设为 user": "Make user",
368
+ "确认删除该用户?": "Delete this user?",
369
+ "暂无用户": "No users yet",
370
+ "用户名": "Username",
371
+ "已启用": "Enabled",
372
+ "已停用": "Disabled",
373
+ "启用/停用": "Enable/Disable",
374
+ "运行时监控": "Runtime Monitor",
375
+ "监控 · AgentWorkShop": "Monitor · AgentWorkShop",
376
+ "运行状态": "Run State",
377
+ "事件流": "Event Stream",
378
+ "连接": "Connection",
379
+ "已连接": "Connected",
380
+ "未连接": "Disconnected",
381
+ "队列": "Queue",
382
+ "内存": "Memory",
383
+ "上行": "Uplink",
384
+ "下行": "Downlink",
385
+ "事件总数": "Total Events",
386
+ "最近事件": "Recent Events",
387
+ "暂无事件": "No events yet",
388
+ "类型": "Type",
389
+ "内容": "Content",
390
+ "运行时监控 · AgentWorkShop": "Runtime Monitor · AgentWorkShop",
391
+ "系统设置": "System Settings",
392
+ "设置 · AgentWorkShop": "Settings · AgentWorkShop",
393
+ "外观": "Appearance",
394
+ "主题": "Theme",
395
+ "跟随系统": "System",
396
+ "语言偏好": "Language",
397
+ "中文": "中文",
398
+ "English": "English",
399
+ "接口配置": "API",
400
+ "接口基址": "API Base",
401
+ "超时": "Timeout",
402
+ "保存设置": "Save Settings",
403
+ "已保存": "Saved",
404
+ "注册用户": "Registered Users",
405
+ "在线会话": "Active Sessions",
406
+ "系统运行时长": "Uptime",
407
+ "版本": "Version",
408
+ "环境": "Environment",
409
+ "开发": "Dev",
410
+ "生产": "Prod",
411
+ "测试": "Test",
412
+ "普通": "user",
413
+ "管理员": "admin",
414
+ "访客": "Guest",
415
+ "搜索用户…": "Search users…",
416
+ "添加用户": "Add User",
417
+ "确认吊销该 token?": "Revoke this token?",
418
+ "已复制": "Copied",
419
+ "显示": "Show",
420
+ "隐藏": "Hide",
421
+ "明文": "Plaintext",
422
+ "全选": "Select All",
423
+ "展开全部": "Expand All",
424
+ "收起全部": "Collapse All",
425
+ "更多": "More",
426
+ "详情": "Details",
427
+ "确定要删除吗?": "Confirm deletion?",
428
+ "保存成功": "Saved successfully",
429
+ "网络错误": "Network error",
430
+ "必填项": "Required field",
431
+ "格式不正确": "Invalid format",
432
+ "确认操作": "Confirm Action",
433
+ "温馨提示": "Notice",
434
+ "暂无数据": "No data",
435
+ "加载更多": "Load More",
436
+ "首页": "Home",
437
+ "上一页": "Prev",
438
+ "下一页": "Next",
439
+ "共": "Total",
440
+ "条": "items",
441
+ "更新失败": "Update failed",
442
+ "删除该用户?(其名下资源保留,归属仍可追溯)": "Delete this user? (Their resources are kept and ownership remains traceable)",
443
+ "需要管理员权限": "Admin privileges required",
444
+ "用户管理仅对 admin 角色开放;请联系管理员调整角色。": "User management is admin-only; contact an administrator to change roles.",
445
+ "模板中心": "Template Hub",
446
+ "产线「": "Line “",
447
+ "发布": "Published",
448
+ "消费": "Consumed",
449
+ "丢失": "Dropped",
450
+ "入库": "Stored",
451
+ "位": "位",
452
+ "前往产线管理": "Go to Line Management",
453
+ "重连中…": "Reconnecting…",
454
+ "暂停全部采集": "Pause All Acquisition",
455
+ "运行中": "Running",
456
+ " · 自定义": " · Custom",
457
+ "(栈未装)": "(stack not installed)",
458
+ "测试中…": "Testing…",
459
+ "创建中…": "Creating…",
460
+ "确认删除": "Confirm delete",
461
+ "编辑模板": "Edit Template",
462
+ "保存中…": "Saving…",
463
+ "配方越限": "Recipe Violation",
464
+ "实时值 ·": "Live Value ·",
465
+ "驱动连接参数 ·": "Driver Connection ·",
466
+ "时序库历史(": "TSDB history (",
467
+ "(预留)": "(reserved)",
468
+ "采集中": "Acquiring",
469
+ "跟随全局周期": "Follow global interval",
470
+ "标定生效": "Calibration on",
471
+ "跟随全局下发": "Follow global publish",
472
+ "下发中…": "Writing…",
473
+ "解绑": "Unbind",
474
+ "控制模板 ·": "Control Template ·",
475
+ "打标": "Tagged",
476
+ "光晕色自动取色板(": "Halo color auto from palette (",
477
+ "● 运行中": "● Running",
478
+ "选择配方后即可开跑数据采集": "Acquisition starts once a recipe is selected",
479
+ "运营管理": "Operations",
480
+ "写入": "Writes",
481
+ "失败": "Failed",
482
+ "产品)": "product)",
483
+ "自定义": "Custom",
484
+ "产品 /": "Products /",
485
+ "配方批次": "Recipe batches",
486
+ "批次数据 ·": "Batch Data ·",
487
+ "配方下限(可选,≥": "Recipe min (optional, ≥",
488
+ "配方上限(可选,≤": "Recipe max (optional, ≤",
489
+ "写历史(最近": "Write history (last",
490
+ "参数成功": "params OK",
491
+ "条)": "entries)",
492
+ "产线详情": "Line Detail",
493
+ "本产线专属的节点/产品/配方/批次管理:开跑必设配方,窗口内数采逐样本携带产线标识,实现真实的产线级数据隔离;PLC 底层(换算/写/回读)由系统封装。": "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.",
494
+ "暂停全部控制": "Pause All Control",
495
+ "产线运行中": "Line running",
496
+ "(无参数,不可开跑)": "(no parameters, cannot start)",
497
+ "控制中": "Controlled",
498
+ "手动": "Manual",
499
+ "进行中": "In progress",
500
+ "编辑配方": "Edit Recipe",
501
+ "查询中…": "Querying…",
502
+ "每个 token 可独立吊销;明文存档于服务端,可随时查看复制": "Each token can be revoked independently; plaintext is archived server-side and can be viewed/copied anytime",
503
+ "标签:": "Tags:",
504
+ "(未命名)": "(unnamed)",
505
+ "工作台": "Workshop",
506
+ "工作区": "Workspace",
507
+ "的资源(用户级隔离;服务端持久化)": "'s resources (user-isolated; persisted server-side)",
508
+ "成员 / 忙": "Members / Busy",
509
+ "拖拽调节抽屉宽度": "Drag to resize drawer",
510
+ "目标 agent 实例": "Target agent instance",
511
+ "参数模板": "Parameter Template",
512
+ "执行": "Run",
513
+ "调试:请回显这条消息": "Debug: please echo this message",
514
+ "调试消息": "Debug message",
515
+ "▶ 流结束": "▶ Stream ended",
516
+ "选择目标 agent": "Select target agent",
517
+ "移除该成员?其排队任务将自动重派给剩余成员": "Remove this member? Its queued tasks will be re-dispatched to remaining members",
518
+ "向该 agent 注入消息…": "Inject a message into this agent…",
519
+ "该 agent 暂无事件(连接后产生)": "No events for this agent yet (generated after connection)",
520
+ "任务队列": "Task Queue",
521
+ "成员管理:": "Members:",
522
+ "移除成员": "Remove Member",
523
+ "要求回执": "Request ack",
524
+ "发送": "Send",
525
+ "执行中:「": "Running: “",
526
+ "空)": "empty)",
527
+ "取消聚焦": "Unfocus",
528
+ "重新启用(接收新任务)": "Re-enable (accept new tasks)",
529
+ "停用(暂停接收新任务)": "Disable (pause accepting new tasks)",
530
+ "已停用(其排队任务由调度回收)": "Disabled (its queued tasks are reclaimed by the scheduler)",
531
+ "成员已移除": "Member removed",
532
+ "已取消聚焦": "Focus cancelled",
533
+ "主时间线已聚焦该 agent": "Main timeline focused on this agent",
534
+ "消息已注入": "Message injected",
535
+ "已注入场景系统提示词": "Scenario system prompt injected",
536
+ "打开该成员的 omp 原生终端(实时 TUI + HITL 控制:注入对话 / 中止 / 应答 ask)": "Open this member's native omp terminal (live TUI + HITL controls: inject conversation / abort / answer asks)",
537
+ "编辑成员信息 / 场景提示词": "Edit member info / scenario prompt",
538
+ "添加团队成员": "Add Team Member",
539
+ "成员名": "Member Name",
540
+ "系统提示词前缀(可选,定义成员专长)": "System prompt prefix (optional, defines member specialty)",
541
+ "如:你是数据库迁移专家,专注 schema 变更与数据回填…": "e.g. You are a database migration expert focused on schema changes and backfills…",
542
+ "选择模板…": "Select template…",
543
+ "克隆角色": "Clone Role",
544
+ "系统提示词覆盖(可选,留空沿用模板预设)": "System prompt override (optional; empty = template preset)",
545
+ "留空 = 使用模板自带 config.systemPromptPrefix;填写则覆盖为该场景提示词": "Empty = use the template's config.systemPromptPrefix; fill in to override with this scenario prompt",
546
+ "选择 AgentTeam(批量克隆全部成员)": "Select an AgentTeam (batch-clone all members)",
547
+ "选择编组…": "Select group…",
548
+ "该内容作为系统提示词前缀,注入该成员 harness 每轮 prompt(omp)或状态消息(mock)。留空 = 无场景提示": "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",
549
+ "团队": "Team",
550
+ "名成员": " members",
551
+ "添加成员": "Add Member",
552
+ "成员快照同步中…": "Syncing member snapshots…",
553
+ "团队暂无成员": "No members in this team yet",
554
+ "点击右上「添加成员」从零创建,或从模板 / 编组一键部署": "Click “Add Member” (top right) to create from scratch, or deploy from templates / groups in one click",
555
+ "场景": "Scenario",
556
+ "终端": "Terminal",
557
+ "从零创建": "Create from Scratch",
558
+ "从模板克隆": "Clone from Template",
559
+ "部署编组": "Deploy Group",
560
+ "mock(测试剧本)": "mock (test script)",
561
+ "lead(至多一个,已有 lead 会被拒绝)": "lead (at most one; rejected if a lead already exists)",
562
+ "模板库为空?到「模板库」页面先创建可复用的 Agent 模板(omp/mock/claude + 系统提示词)。": "Template library empty? Create reusable agent templates (omp/mock/claude + system prompt) on the Templates page first.",
563
+ "编组内每名成员模板都会克隆为独立实例;若编组含 lead 而本 channel 已有 lead,部署将被拒绝(409)。": "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).",
564
+ "保存后成员运行时重载,下次任务/调度使用新提示词": "After saving, the member runtime reloads; the next task/schedule uses the new prompt",
565
+ "成员名不能为空": "Member name is required",
566
+ "user 编辑成员信息/场景提示词": "user edits member info / scenario prompt",
567
+ "请选择要克隆的 Agent 模板": "Select an agent template to clone",
568
+ "请选择要部署的 AgentTeam": "Select an AgentTeam to deploy",
569
+ "收起": "Collapse",
570
+ "设备模型库": "Device Model Library",
571
+ "拖入孪生空间生成实例": "Drag into the twin space to create an instance",
572
+ "松开以选择模型": "Release to select a model",
573
+ "上传中…": "Uploading…",
574
+ "设备 · 拖拽放置": "Device · drag & drop",
575
+ "载入中…": "Loading…",
576
+ "暂无设备模型,拖入 .glb 文件上传": "No device models yet; drop a .glb file to upload",
577
+ "暂不支持 3D 预览)": "3D preview not supported yet)",
578
+ "拖放或选择模型文件": "Drop or pick a model file",
579
+ "删": "Del",
580
+ "请先拖入或选择设备模型文件(.glb/.gltf/.obj/.fbx)": "Drop or pick a device model file first (.glb/.gltf/.obj/.fbx)",
581
+ "已删除模型文件": "Model file deleted",
582
+ "Channel 设置(场景/工作目录/存为模板)": "Channel Settings (scenario / working dir / save as template)",
583
+ "新建 Channel 并挂载": "Create & Mount Channel",
584
+ "作业场景 Prompt(全员注入)": "Scenario prompt (injected to all)",
585
+ "该 channel 全部 Agent 共享的作业场景规范,与系统设计手册组合注入每个 harness……例如:所有产出必须附中文摘要;代码修改需先列计划再动手;回复末尾附 [DONE] 标记": "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",
586
+ "工作目录(团队作业挂载点)": "Working directory (team workspace mount point)",
587
+ "作业场景 Prompt(修改后成员运行时自动回收,按新场景重装配)": "Scenario prompt (after editing, member runtimes are recycled and re-assembled with the new scenario)",
588
+ "该 channel 全部 Agent 共享的作业场景规范……": "The working-scenario spec shared by all agents of this channel…",
589
+ "工作目录(Agent 作业 cwd;修改后 omp 子进程按新目录重启)": "Working directory (agents' cwd; omp subprocesses restart with the new directory after editing)",
590
+ "保存为 Channel 模板": "Save as Channel Template",
591
+ "选择团队工作目录": "Select team working directory",
592
+ "尚未挂载 Channel(可从下方模板一键实例化)": "No Channel mounted yet (instantiate from a template below in one click)",
593
+ "模板 = 场景 + 工作目录 + 团队;实例化即装配成员": "Template = scenario + working directory + team; instantiating assembles the members",
594
+ "注入顺序:场景规范 → 成员专长 → 记忆 → 系统手册 → 任务;设置弹窗可热更新(成员运行时自动回收重装配)": "Injection order: scenario spec → member specialty → memory → system handbook → tasks; the settings dialog hot-updates (member runtimes recycle and re-assemble automatically)",
595
+ "浏览…": "Browse…",
596
+ "执行任务时该目录注入各 Agent harness 的作业 cwd(omp 子进程工作目录);不存在自动创建": "This directory is injected as the working cwd of every agent harness during tasks (omp subprocess working directory); created automatically if missing",
597
+ "Channel 创建后为空团队,无任何 Agent;进入后通过「添加成员」选择角色(lead/worker)与场景提示词完成装配": "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",
598
+ "捕获当前场景/工作目录/团队组合为可复用模板": "Capture the current scenario/working directory/team combination as a reusable template",
599
+ "私有(仅本人)": "Private (only you)",
600
+ "公开(全员可实例化)": "Public (instantiable by everyone)",
601
+ "成员有模板引用则保留引用,否则保存内联快照;场景与工作目录照搬": "Members keep template references when present, otherwise inline snapshots are saved; scenario and working directory are copied as-is",
602
+ "复制失败(浏览器未授权剪贴板)": "Copy failed (browser clipboard not authorized)",
603
+ "创建失败": "Create failed",
604
+ "Channel 已创建(空团队;进入后通过「添加成员」装配 lead / worker)": "Channel created (empty team; enter and assemble lead / workers via “Add Member”)",
605
+ "模板挂载失败": "Template mount failed",
606
+ "移出失败": "Move-out failed",
607
+ "已更新;成员运行时将按新设置回收重装配": "Updated; member runtimes will be recycled and re-assembled with the new settings",
608
+ "已捕获为 Channel 模板(场景/目录/团队快照)": "Captured as a Channel template (scenario/directory/team snapshot)",
609
+ "交付物正文与上方回复一致": "Deliverable body matches the reply above",
610
+ "非状态事件": "Non-status event",
611
+ "次状态": "Sub-state",
612
+ "发送方要求回复:接收方须回执执行结果": "The sender requests a reply: the receiver must ack with the execution result",
613
+ "(广播)": "(broadcast)",
614
+ "需回复": "Reply required",
615
+ "任务派发": "Task Dispatch",
616
+ "取消通知": "Cancel Notice",
617
+ "子任务完成": "Subtask Completed",
618
+ "实时注入": "Live Injection",
619
+ "协作消息": "Collaboration Message",
620
+ "思考 / 中间输出": "Thinking / intermediate output",
621
+ "内容并入了后续回复块(不再重复渲染)": "Content merged into a later reply block (not rendered twice)",
622
+ "已提交": "Submitted",
623
+ "已指派": "Assigned",
624
+ "执行中": "Running",
625
+ "等待合并": "Awaiting merge",
626
+ "完成·经验收": "Done · accepted",
627
+ "失败·待改派": "Failed · awaiting re-dispatch",
628
+ "已取消": "Cancelled",
629
+ "输入命令…(导航/视图/Channel/过滤/动作)": "Type a command… (navigate/views/Channel/filter/actions)",
630
+ "无匹配命令": "No matching commands",
631
+ "选择 /": "Select /",
632
+ "执行 /": "Run /",
633
+ "前往:工作区总览": "Go: Workspace Overview",
634
+ "前往:Agent 模板库": "Go: Agent Templates",
635
+ "前往:Channel 模板中心": "Go: Channel Template Hub",
636
+ "视图:时间线": "View: Timeline",
637
+ "视图:任务板": "View: Task Board",
638
+ "视图:多通道同屏": "View: Multi-channel",
639
+ "动作:聚焦任务输入框": "Action: focus the task input",
640
+ "不限次数": "Unlimited",
641
+ "HITL 实时注入:目标运行中时直接注入其当前回合(同轮可见)": "HITL live injection: when the target is running, inject into its current turn directly (visible in the same turn)",
642
+ "要求对方回执": "Request an ack from the recipient",
643
+ "发送给…": "Send to…",
644
+ "任务": "Task",
645
+ "首行 = 标题": "First line = title",
646
+ "消息": "Message",
647
+ "即时": "Instant",
648
+ "排队": "Queued",
649
+ "回执": "Ack",
650
+ "间隔": "Interval",
651
+ " · 默认": " · default",
652
+ "即时注入": "Live inject",
653
+ "任务标题不能为空": "Task title is required",
654
+ "最大次数需设置为 1 到 10000 次,留空表示不限次数": "Max runs must be 1–10000; empty means unlimited",
655
+ "请选择目标 Agent(可用 @ 提及)": "Select a target agent (@ mention available)",
656
+ "运行中 · 任务进入其信箱排队": "Running · the task joins its mailbox queue",
657
+ "目标正在执行:新任务投递到信箱,当前回合结束后按 FIFO 处理": "Target busy: the new task is delivered to its mailbox and handled FIFO after the current turn",
658
+ "已停止 · 任务将入队,唤醒后执行": "Stopped · the task is queued and runs after wake-up",
659
+ "目标运行时已停止:任务安全入队,重新启用后自动处理": "Target runtime stopped: the task is safely queued and processed after re-enabling",
660
+ "空闲 · 任务将立即起回合执行": "Idle · the task starts a turn immediately",
661
+ "目标空闲:任务投递后立即开始处理": "Target idle: processing starts right after delivery",
662
+ "运行中 · 将实时注入当前回合(HITL)": "Running · will be live-injected into the current turn (HITL)",
663
+ "运行中 · 本回合结束后处理": "Running · handled after the current turn",
664
+ "目标正在执行任务:即时消息会注入其运行中的会话(同轮可见)": "Target busy: the instant message is injected into its running session (visible in the same turn)",
665
+ "已停止 · 消息将入队,唤醒后送达": "Stopped · the message is queued and delivered after wake-up",
666
+ "目标运行时已停止:消息安全入队,重新启用后自动处理": "Target runtime stopped: the message is safely queued and processed after re-enabling",
667
+ "空闲 · 将立即起回合处理": "Idle · a turn starts immediately to handle it",
668
+ "目标空闲:消息投递后立即开始处理": "Target idle: processing starts right after delivery",
669
+ "输入任务下发(首行标题,@ 成员直发,缺省 lead)… ⌘/Ctrl+Enter 提交": "Type a task (first line = title, @ to target a member, defaults to lead)… ⌘/Ctrl+Enter to submit",
670
+ "输入消息/通知(@ 成员指定目标,缺省 lead)… ⌘/Ctrl+Enter 发送": "Type a message/notice (@ to target a member, defaults to lead)… ⌘/Ctrl+Enter to send",
671
+ "下发设定值(越限将被拒绝)": "Write setpoint (out-of-range values are rejected)",
672
+ "设备控制台": "Device Console",
673
+ "正在装载设备寄存器…": "Loading device registers…",
674
+ "未注册设备": "Unregistered device",
675
+ "将设备模型拖入孪生场景即可创建数字孪生实体": "Drag a device model into the twin scene to create a digital twin entity",
676
+ "确认": "Acknowledge",
677
+ "需要回应或人工知悉": "A response or human acknowledgement is required",
678
+ "与 delta 增量重复的内容已合并为一段": "Content duplicated from delta stream merged into one block",
679
+ "引用到输入框": "Quote into input",
680
+ "需关注": "Needs attention",
681
+ "去重": "Deduped",
682
+ "..(上一级)": ".. (up one level)",
683
+ "(无子目录;可直接「选择此目录」使用当前位置)": "(no subdirectories; use “Select This Directory” to take the current location)",
684
+ "双击目录 = 直接选用;选定路径将作为团队工作目录(Agent 作业 cwd),不存在时会自动创建。": "Double-click a directory to take it directly; the chosen path becomes the team working directory (agents' cwd) and is created automatically if missing.",
685
+ "目录读取失败": "Failed to read directory",
686
+ "完成": "Done",
687
+ "子任务": "Subtasks",
688
+ "交付": "Deliverables",
689
+ "暂无成员": "No members",
690
+ "暂无任务": "No tasks",
691
+ "暂无历史": "No history",
692
+ "正在同步历史…": "Syncing history…",
693
+ "全部成员空闲": "All members idle",
694
+ "正在执行 ·": "Running ·",
695
+ "成员身份": "Member Identity",
696
+ "写入记忆": "Write Memory",
697
+ "标题": "Title",
698
+ "公共域": "Shared",
699
+ "私有域": "Private",
700
+ "记忆列表": "Memories",
701
+ "shared(公共域,全员可检索)": "shared (public scope, searchable by everyone)",
702
+ "本人)": "you)",
703
+ "读取失败(检查成员身份)": "Read failed (check member identity)",
704
+ "检索需要关键词与成员身份": "Search requires a keyword and member identity",
705
+ "标题/内容/成员身份必填": "Title/content/member identity are required",
706
+ "已写入": "Written",
707
+ "写入失败": "Write failed",
708
+ "点击提及打开执行详情": "Click a mention to open execution details",
709
+ "执行:": "Run:",
710
+ "左侧挂载多个 Channel 后在此同屏观察": "Mount multiple Channels on the left to observe them side by side here",
711
+ "忙": "Busy",
712
+ "拖拽调节面板宽度": "Drag to resize panel",
713
+ "缓冲事件": "Buffered Events",
714
+ "近 10s 吞吐": "Throughput (10s)",
715
+ "事件类型分布(缓冲窗口)": "Event type mix (buffer window)",
716
+ "(暂无事件)": "(no events)",
717
+ "看板": "Board",
718
+ "列表": "List",
719
+ "任务 · 拖拽卡片到「异常/取消」取消,失败任务拖回「待启动」重试": "Tasks · drag a card to “Failed/Cancelled” to cancel, or back to “Pending” to retry",
720
+ "子": "Sub-",
721
+ "还没有": "No",
722
+ "拖入此处执行该动作": "Drop here to run the action",
723
+ "待启动": "Pending",
724
+ "等待汇总": "Awaiting Summary",
725
+ "已完成": "Completed",
726
+ "异常/取消": "Failed/Cancelled",
727
+ "已请求取消任务": "Task cancellation requested",
728
+ "任务已重新派发": "Task re-dispatched",
729
+ "操作失败": "Operation failed",
730
+ "取消任务": "Cancel Task",
731
+ "重试派发": "Retry Dispatch",
732
+ "打开详情": "Open Details",
733
+ "确认重试该任务?": "Retry this task?",
734
+ "确认取消该任务?": "Cancel this task?",
735
+ "重试任务": "Retry Task",
736
+ "路由理由": "Routing reason",
737
+ "暂无事件(连接前发生)": "No events (occurred before connection)",
738
+ "(无子任务)": "(no subtasks)",
739
+ "指派:": "Assignee:",
740
+ "进度": "Progress",
741
+ "无)": "none)",
742
+ "已请求取消": "Cancellation requested",
743
+ "已重新投递执行": "Re-dispatched for execution",
744
+ "场景模式": "Scene Mode",
745
+ "活跃告警": "Active Alarms",
746
+ "当前用户": "Current User",
747
+ "缺省采样周期(未单独设置周期的节点跟随此值)": "Default sampling interval (nodes without their own interval follow this value)",
748
+ "定位选中设备": "Locate selected device",
749
+ "自动环绕": "Auto Orbit",
750
+ "数据标注显隐": "Callout Visibility",
751
+ "全屏": "Fullscreen",
752
+ "视角预设": "Camera Presets",
753
+ "点击选中该设备": "Click to select this device",
754
+ "拖动移动面板": "Drag to move panel",
755
+ "相机靠近设备多少距离内显示数采数据卡": "Distance within which the camera shows DAQ data cards for a device",
756
+ "取消选中": "Deselect",
757
+ "删除该数采节点(server 实体一并移除)": "Delete this DAQ node (server entity removed as well)",
758
+ "设备名称": "Device Name",
759
+ "解除绑定": "Unbind",
760
+ "下发 write(工程设定值;越窗将被配方联锁拒绝)": "Write setpoint (out-of-window values are rejected by the recipe interlock)",
761
+ "在场景中拖动框选,确定该角色的移动范围": "Drag a box in the scene to set this character's movement range",
762
+ "自动 = 工具调用直接执行;手动 = 每次下发需在此批准": "Auto = tool calls execute directly; manual = every write needs approval here",
763
+ "备注(随结果返回给 Agent)…": "Note (returned to the agent with the result)…",
764
+ "重新拉取该角色的历史对话": "Re-fetch this character's conversation history",
765
+ "全部确认": "Acknowledge All",
766
+ "RPG 导航图 · 准星=镜头 · 拖动平移 · 点击聚焦 · 滚轮同步视角缩放": "RPG nav map · crosshair = camera · drag to pan · click to focus · wheel syncs zoom",
767
+ "重置视角": "Reset View",
768
+ "缩小视角(小地图同步)": "Zoom out (minimap synced)",
769
+ "放大视角(小地图同步)": "Zoom in (minimap synced)",
770
+ "运行": "Run",
771
+ "保存布局": "Save Layout",
772
+ "设备资源": "Device Assets",
773
+ "数采节点 · DAQ": "DAQ Nodes",
774
+ "智控节点 · DCW": "Control Nodes (DCW)",
775
+ "场景管理": "Scene Manager",
776
+ "产线孪生总览": "Line Twin Overview",
777
+ "3D 视角 · 标准": "3D View · Standard",
778
+ "设备总数": "Devices",
779
+ "运行设备": "Running Devices",
780
+ "数采通道": "DAQ Channels",
781
+ "线体健康度": "Line Health",
782
+ "空场景": "Empty Scene",
783
+ "从左侧「设备资源 / 数采节点」拖入实体,开始搭建数字孪生空间": "Drag entities from “Device Assets / DAQ Nodes” on the left to start building the digital twin space",
784
+ "频道管理": "Channel Manager",
785
+ "边界": "Boundary",
786
+ "形状": "Shape",
787
+ "椭圆": "Ellipse",
788
+ "矩形": "Rectangle",
789
+ "横轴半径": "Semi-axis X",
790
+ "纵轴半径": "Semi-axis Z",
791
+ "朝向": "Orientation",
792
+ "为频道成员选择 3D 角色模型(实时换装并持久化)": "Pick 3D character models for channel members (live re-skin, persisted)",
793
+ "该频道暂无成员": "No members in this channel yet",
794
+ "保存边界": "Save Boundary",
795
+ "移除频道": "Remove Channel",
796
+ "正在铺设数字孪生空间…": "Building the digital twin space…",
797
+ "场景控制": "Scene Controls",
798
+ "环境光照": "Ambient Light",
799
+ "构造透明度": "Structure Opacity",
800
+ "告警阈值": "Alarm Threshold",
801
+ "数采可视距离": "Callout Distance",
802
+ "网格吸附": "Grid Snap",
803
+ "紧急停止": "Emergency Stop",
804
+ "趋势分析": "Trend Analysis",
805
+ "从左侧拖入数采节点,实时趋势将在此绘制": "Drag DAQ nodes from the left; live trends plot here",
806
+ "选择设备实例…": "Select a device instance…",
807
+ "台": "",
808
+ "路": "",
809
+ "正常范围": "In range",
810
+ "ms(空=跟随全局)": "ms (empty = follow global)",
811
+ "采集": "Acquire",
812
+ "删除节点": "Delete Node",
813
+ "运行模式 · 只读": "Mode · Read-only",
814
+ "模型": "Model",
815
+ "暂无数据通道 · 拖入数采节点靠近此设备即可自动绑定": "No DAQ channels · drop a DAQ node near this device to auto-bind",
816
+ "+ 添加数采通道": "+ Add DAQ Channel",
817
+ "暂无智控通道 · 拖入智控节点靠近此设备即可自动绑定": "No control channels · drop a control node near this device to auto-bind",
818
+ "+ 添加智控通道": "+ Add Control Channel",
819
+ "移动 G": "Move G",
820
+ "旋转 R": "Rotate R",
821
+ "缩放 S": "Scale S",
822
+ "运行模式 · 只读(切换「编辑」可调整变换/删除)": "Mode · Read-only (switch to “Edit” to transform/delete)",
823
+ "活动范围": "Activity Range",
824
+ "工业节点绑定": "Industrial Node Bindings",
825
+ "自动执行": "Auto Execute",
826
+ "手动确认": "Manual Approval",
827
+ "数控": "Control",
828
+ "数采": "DAQ",
829
+ "选择节点…": "Select nodes…",
830
+ "自动": "Auto",
831
+ "绑定": "Bind",
832
+ "✓ 批准执行": "✓ Approve",
833
+ "✕ 拒绝": "✕ Reject",
834
+ "横轴": "Axis X",
835
+ "纵轴": "Axis Z",
836
+ "清除范围(回退频道)": "Clear range (fall back to channel)",
837
+ "未设置:沿用频道边界活动;点「框选绘制」定制": "Not set: members roam the channel boundary; click “Draw Range” to customize",
838
+ "正在读取历史对话…": "Loading conversation history…",
839
+ "暂无对话 · 该员工尚未发言": "No conversation · this member hasn't spoken yet",
840
+ "设备运行状态": "Device Run State",
841
+ "设备健康度": "Device Health",
842
+ "待命": "Standby",
843
+ "关键设备监控": "Key Device Monitor",
844
+ "实时告警": "Live Alarms",
845
+ "暂无告警,产线运行平稳": "No alarms; lines are running smoothly",
846
+ "实时事件": "Live Events",
847
+ "事件总线待命": "Event bus standing by",
848
+ "3D 视图导航": "3D View Navigation",
849
+ "系统状态": "System",
850
+ "频道": "Channels",
851
+ "员工": "Members",
852
+ "设备": "Devices",
853
+ "数字孪生平台": "Digital Twin Platform",
854
+ "员工 ·": "Members ·",
855
+ "成员": "Members",
856
+ "数据绑定 ·": "DAQ bindings ·",
857
+ "智控设定 ·": "Control setpoints ·",
858
+ "待审批下发 ·": "Pending approvals ·",
859
+ "会话记录 ·": "Sessions ·",
860
+ "历史记录 ·": "History ·",
861
+ "实时 ·": "Live ·",
862
+ "准星=镜头 · 同步视角 ×": "crosshair = camera · zoom ×",
863
+ "演示数据为模拟信号": "Demo data is simulated signals",
864
+ "路通道": " channels",
865
+ "产线管理员": "Line Manager",
866
+ "已放置": "Placed",
867
+ "加载中": "Loading",
868
+ "编辑模式": "Edit Mode",
869
+ "关": "Off",
870
+ "开": "On",
871
+ "智控节点": "Control Node",
872
+ "配方工艺窗口": "Recipe Process Window",
873
+ "停用本节点": "Disable this node",
874
+ "配方窗口": "Recipe Window",
875
+ "再次点击确认删除": "Click again to confirm deletion",
876
+ "绘制中": "Drawing",
877
+ "未保存": "Unsaved",
878
+ "保存失败": "Save failed",
879
+ "请把频道卡片拖拽到场景中放置(松开即安放)": "Drag a channel card onto the scene to place it (release to drop)",
880
+ "未设置 · 沿用频道边界": "Not set · follows the channel boundary",
881
+ "找不到所属频道,无法绑定模型": "Owning channel not found; cannot bind the model",
882
+ "运行模式为只读 · 切换「编辑」后可修改场景": "Mode is read-only · switch to “Edit” to modify the scene",
883
+ "工作中": "Working",
884
+ "已停止": "Stopped",
885
+ "系统": "System",
886
+ "异常": "Error",
887
+ "数据通道": "DAQ Channels",
888
+ "请先在场景中选中一台设备": "Select a device in the scene first",
889
+ "待处理": "Pending",
890
+ "处理中": "Processing",
891
+ "已确认": "Acknowledged",
892
+ "紧急停止(E-STOP)已触发,产线全线停机": "EMERGENCY STOP triggered — all lines halted",
893
+ "紧急停止已解除,产线恢复运行": "Emergency stop released — lines resumed",
894
+ "跳转到最新": "Jump to latest",
895
+ "已加载全部历史(最早 1 条起)": "All history loaded (from the very first event)",
896
+ "无匹配事件": "No matching events",
897
+ "事件 /": "Events /",
898
+ "过滤下没有事件,可切换过滤条件": "No events under this filter; try other filters",
899
+ "块": "blocks",
900
+ "同步中": "Syncing",
901
+ "正在同步时间线…": "Syncing timeline…",
902
+ "连接恢复后事件将自动对齐": "Events will re-align automatically once the connection recovers",
903
+ "关键": "Critical",
904
+ "错误": "Error",
905
+ "今天": "Today",
906
+ "昨天": "Yesterday",
907
+ "聚焦主时间线": "Focus main timeline",
908
+ "确认上传": "Confirm Upload",
909
+ " · 直发": " · direct",
910
+ "运行中 —— 当前产品:": "running — current product: ",
911
+ "开跑": "Start Run",
912
+ "未开跑 —— 本产线节点暂停采集": "not running — nodes on this line pause acquisition",
913
+ "· 已打标": "· tagged",
914
+ "前往产线管理开跑": "Open Line Management to Start",
915
+ "重连基础设施": "Reconnect Infrastructure",
916
+ "恢复全部采集": "Resume All Acquisition",
917
+ "测试连接": "Test Connection",
918
+ "测试通过后创建并采集": "Create & Acquire (after test passes)",
919
+ "保存修改": "Save Changes",
920
+ "未运行": "Not Running",
921
+ "节点独立周期": "Per-node Interval",
922
+ "无标定": "No Calibration",
923
+ "节点独立下发": "Per-node Publish",
924
+ "定间隔": "Fixed interval",
925
+ "下发参数到采集器": "Write parameters to the sampler",
926
+ "○ 待机": "○ Standby",
927
+ "暂无配方": "No recipes yet",
928
+ "下发完成:": "Dispatch finished: ",
929
+ "恢复全部控制": "Resume All Control",
930
+ "产线停止": "Line Stopped",
931
+ "创建节点": "Create Node",
932
+ "查看批次数据": "View Batch Data",
933
+ "新建配方": "New Recipe",
934
+ "保存配方": "Save Recipe",
935
+ "查询": "Query",
936
+ "创建产品": "Create Product",
937
+ "正在同步": "Syncing",
938
+ "未放置": "Not placed",
939
+ "运行模式": "Run Mode",
940
+ "节点量程": "Node Range",
941
+ "启用本节点": "Enable this node",
942
+ "全局量程": "Global range",
943
+ "删除设备实例": "Delete device instance",
944
+ "框选绘制": "Draw Range",
945
+ "在线": "Online",
946
+ "加载更早的事件": "Load earlier events",
947
+ "等待事件流入": "Waiting for events…",
948
+ "在下方提交任务后,Agent 执行过程将在此实时渲染": "Submit a task below; the agent execution renders here live",
949
+ "我的资源": "My resources",
950
+ "admin 全量视图": "admin full view",
951
+ "签发 Token": "Issue Token",
952
+ "签发 API Token": "Issue API Token",
953
+ "新建 Workspace": "New Workspace",
954
+ "omp 进程 PID {p0} · harness 会话状态": "omp process PID {p0} · harness session state",
955
+ "中断成员 {p0} 的运行时?执行中任务将中止,成员保留": "Interrupt member {p0}'s runtime? Running tasks will be aborted; the member is kept",
956
+ "移除成员 {p0}?其排队任务将自动回收": "Remove member {p0}? Its queued tasks will be reclaimed automatically",
957
+ "拖拽调节 {p0} 泳道宽度": "Drag to resize the {p0} lane",
958
+ "{p0}({p1} 名成员{p2})": "{p0} ({p1} members{p2})",
959
+ "编辑成员 {p0}": "Edit member {p0}",
960
+ "成员 {p0} 已更新(运行时将按新提示词重载)": "Member {p0} updated (runtime reloads with the new prompt)",
961
+ "更新失败: {p0}": "Update failed: {p0}",
962
+ "成员 {p0} 已添加(等待 agent.member 事件回流对齐)": "Member {p0} added (waiting for the agent.member event to converge)",
963
+ "添加成员失败: {p0}": "Add member failed: {p0}",
964
+ "已克隆模板添加 {p0} 成员 {p1}(等待事件回流对齐)": "Cloned template member {p0} as {p1} (waiting for event convergence)",
965
+ "编组 {p0} 已部署({p1} 名成员,等待事件回流对齐)": "Group {p0} deployed ({p1} members, waiting for event convergence)",
966
+ "成员 {p0} 已移除": "Member {p0} removed",
967
+ "移除成员失败: {p0}": "Remove member failed: {p0}",
968
+ "已中断成员 {p0} 的运行时": "Interrupted the runtime of member {p0}",
969
+ "中断失败: {p0}": "Interrupt failed: {p0}",
970
+ "关闭 {p0}": "Close {p0}",
971
+ "展开": "Expand",
972
+ "拖到孪生场景即生成设备实例 · {p0}": "Drag onto the twin scene to create a device instance · {p0}",
973
+ "已上传 → {p0}": "Uploaded → {p0}",
974
+ "设置 {p0}": "Settings {p0}",
975
+ "移出 {p0}": "Move out {p0}",
976
+ "工作目录:{p0}(点击复制路径)": "Working directory: {p0} (click to copy path)",
977
+ "{p0}{p1}({p2} 成员)": "{p0}{p1} ({p2} members)",
978
+ "Channel 设置 · {p0}": "Channel Settings · {p0}",
979
+ "已复制:{p0}": "Copied: {p0}",
980
+ "创建失败:{p0}": "Create failed: {p0}",
981
+ "已从模板实例化并挂载(成员 {p0} 个)": "Instantiated from template and mounted ({p0} members)",
982
+ "{p0} 模板": "{p0} template",
983
+ "人类发送者:{p0}": "Human sender: {p0}",
984
+ "查看 {p0}": "View {p0}",
985
+ "回复关联消息 {p0}": "Reply to message {p0}",
986
+ "全部 {p0} 条": "All {p0}",
987
+ "状态代码 {p0}": "Status code {p0}",
988
+ "切换 Channel:{p0}": "Switch Channel: {p0}",
989
+ "时间线过滤:{p0}": "Timeline filter: {p0}",
990
+ "直发 @{p0}": "Direct to @{p0}",
991
+ "任务已下发 → @{p0}({p1})": "Task dispatched → @{p0} ({p1})",
992
+ "消息已发送给 @{p0}({p1})": "Message sent to @{p0} ({p1})",
993
+ "已实例化:{p0}(成员 {p1} 个),到工作区挂载使用": "Instantiated: {p0} ({p1} members); mount it from the workspace",
994
+ "保存模板": "Save Template",
995
+ "{p0} 运行中:{p1} · {p2}": "{p0} running: {p1} · {p2}",
996
+ "{p0} 待机:开跑后本产线节点开始采集": "{p0} standby: nodes on this line start acquiring after the run begins",
997
+ "活动配方监控窗口 {p0} ~ {p1}{p2}": "Active recipe monitor window {p0} ~ {p1}{p2}",
998
+ "产线运行中:{p0} · {p1}": "Line running: {p0} · {p1}",
999
+ "全局 {p0}ms": "Global {p0}ms",
1000
+ "缺少必填参数:{p0}": "Missing required parameter: {p0}",
1001
+ "{p0} 副本": "{p0} copy",
1002
+ "缺省 {p0}(按创建序)": "Default {p0} (by creation order)",
1003
+ "{p0}(节点 {p1}/产品 {p2}/配方 {p3} 将解除挂载)": "{p0} ({p1} nodes / {p2} products / {p3} recipes will be unmounted)",
1004
+ "({p0} 参数)": "({p0} params)",
1005
+ "批次 {p0}": "Batch {p0}",
1006
+ "节点 {p0} 下发成功:{p1}": "Node {p0} write OK: {p1}",
1007
+ "节点 {p0} 下发失败:{p1}": "Node {p0} write failed: {p1}",
1008
+ "缺少必填驱动参数:{p0}": "Missing required driver parameter: {p0}",
1009
+ "模板「{p0}」已创建,已在「添加控制节点」向导中选中": "Template “{p0}” created and pre-selected in the Add Control Node wizard",
1010
+ "产线「{p0}」未开跑 —— 本产线节点暂停采集": "Line “{p0}” is not running — nodes on this line pause acquisition",
1011
+ "产线「{p0}」运行中 —— 当前产品:": "Line “{p0}” running — current product: ",
1012
+ "产线已开跑:{p0} · {p1}(批次 {p2})": "Line started: {p0} · {p1} (batch {p2})",
1013
+ "产线已停止({p0});窗口数据保留可查": "Line stopped ({p0}); window data is kept for query",
1014
+ "配方下发部分失败:{p0}": "Recipe dispatch partially failed: {p0}",
1015
+ "配方批次 {p0} 下发完成:{p1}/{p2} 参数成功": "Recipe batch {p0} dispatched: {p1}/{p2} params OK",
1016
+ "已删除产线「{p0}」": "Line “{p0}” deleted",
1017
+ "确认删除产线「{p0}」?": "Delete line “{p0}”?",
1018
+ "删除失败:{p0}": "Delete failed: {p0}",
1019
+ "加载 token 列表失败:{p0}": "Failed to load token list: {p0}",
1020
+ "已登录:{p0}": "Signed in: {p0}",
1021
+ "注册成功:{p0};登录 token 已保存": "Registered: {p0}; sign-in token saved",
1022
+ "已部署 {p0} 个实例到 Channel": "Deployed {p0} instances to the Channel",
1023
+ "添加成员 · {p0}": "Add Member · {p0}",
1024
+ "部署 · {p0}": "Deploy · {p0}",
1025
+ "关闭 {p0} 标签页": "Close {p0} tab",
1026
+ "发布 {p0}": "Published {p0}",
1027
+ "消费 {p0}": "Consumed {p0}",
1028
+ "入库 {p0}": "Stored {p0}",
1029
+ "节点 {p0}/{p1}": "Nodes {p0}/{p1}",
1030
+ "采集已暂停": "Acquisition paused",
1031
+ "工作区总览": "Workspace Overview",
1032
+ "切至 {p0}": "Switch to {p0}",
1033
+ "范围 {p0} ~ {p1}": "Range {p0} ~ {p1}",
1034
+ "{p0} 越限": "{p0} out of range",
1035
+ "窗口 {p0} ~ {p1}": "Window {p0} ~ {p1}",
1036
+ "第 {p0} 页 / 共 {p1} 页": "Page {p0} / {p1}",
1037
+ "共 {p0} 条": "{p0} items",
1038
+ "已选择 {p0} 项": "{p0} selected",
1039
+ "确认删除 {p0}?": "Delete {p0}?",
1040
+ "删除成功:{p0}": "Deleted: {p0}",
1041
+ "已更新:{p0}": "Updated: {p0}",
1042
+ "复制路径": "Copy path",
1043
+ "复制成功": "Copied",
1044
+ "操作确认": "Confirm Operation",
1045
+ "该操作不可撤销,确认继续?": "This action cannot be undone. Continue?",
1046
+ "加载中… {p0}": "Loading… {p0}",
1047
+ "请输入 {p0}": "Enter {p0}",
1048
+ "{p0} 不能为空": "{p0} is required",
1049
+ "{p0} 已存在": "{p0} already exists",
1050
+ "切换到 {p0}": "Switch to {p0}",
1051
+ "当前:{p0}": "Current: {p0}",
1052
+ "目标:{p0}": "Target: {p0}",
1053
+ "共 {p0} 个节点": "{p0} nodes in total",
1054
+ "在线 {p0}": "{p0} online",
1055
+ "告警 {p0}": "{p0} alarms",
1056
+ "样本 {p0}": "{p0} samples",
1057
+ "批次 {p0} · 已打标 {p1}": "Batch {p0} · tagged {p1}",
1058
+ "运行中:{p0}": "Running: {p0}",
1059
+ "未运行:{p0}": "Not running: {p0}",
1060
+ "绑定 {p0}": "Bind {p0}",
1061
+ "已绑定 {p0}": "Bound {p0}",
1062
+ "选中 {p0}": "Selected {p0}",
1063
+ "聚焦 {p0}": "Focus {p0}",
1064
+ "聚焦 {p0} 主时间线": "Focus {p0} main timeline",
1065
+ "已切换到 {p0}": "Switched to {p0}",
1066
+ "成功率 {p0}% / 均耗 {p1}s / 失败 {p2}": "Success {p0}% / avg {p1}s / failed {p2}",
1067
+ "加载更早": "Load earlier",
1068
+ "查看 {p0} 的执行详情": "View execution details of {p0}",
1069
+ "{p0} 位成员同样在忙": "{p0} more members are busy",
1070
+ "队列 ×{p0}": "Queue ×{p0}",
1071
+ "拖拽调节 {p0} 列宽": "Drag to resize the {p0} column",
1072
+ "记忆 {p0}": "Memory {p0}",
1073
+ "成员 {p0} {p1}": "Member {p0} {p1}",
1074
+ "错误 {p0}": "Error {p0}",
1075
+ "路由理由:{p0}": "Routing reason: {p0}",
1076
+ "交付物({p0})": "Deliverables ({p0})",
1077
+ "子任务({p0})": "Subtasks ({p0})",
1078
+ "原始内容({p0} parts)": "Raw content ({p0} parts)",
1079
+ "设备实例": "Device Instance",
1080
+ "当前配方工艺窗口": "Current recipe process window",
1081
+ "「{p0}」已在场景中(相同频道只能放置一个)": "“{p0}” is already in the scene (one placement per channel)",
1082
+ "频道布局加载失败,自动重试中({p0})": "Channel layout failed to load; retrying ({p0})",
1083
+ "已为 {p0} 换装 → {p1}": "Re-skinned {p0} → {p1}",
1084
+ "已在落点放入居民 → {p0}": "Placed a resident at the drop point → {p0}",
1085
+ "{p0} {p1}越限量程({p2})": "{p0} {p1} out of range ({p2})",
1086
+ "{p0} {p1}进入预警带({p2})": "{p0} {p1} entered the warn band ({p2})",
1087
+ "{p0} {p1}恢复正常": "{p0} {p1} back to normal",
1088
+ "超出{p0} {p1} ~ {p2}": "Beyond {p0} {p1} ~ {p2}",
1089
+ "最后数据更新:{p0}": "Data last updated: {p0}",
1090
+ "刚刚": "just now",
1091
+ "{p0}s 前": "{p0}s ago",
1092
+ "{p0} 年 ": "{p0}y ",
1093
+ "{p0}{p1} 月 {p2} 日": "{p0}{p1}-{p2}",
1094
+ "{p0} 角色已调整为 {p1}": "{p0} role changed to {p1}",
1095
+ "{p0} 已{p1}": "{p0} {p1}",
1096
+ "已删除 {p0}": "Deleted {p0}"
1097
+ }