agentworkshop 0.7.40 → 0.7.44

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 (327) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/B8uy9iRW.js +1 -0
  3. package/.output/public/_nuxt/BGTYYQH-.js +1 -0
  4. package/.output/public/_nuxt/BUmHEJ77.js +2 -0
  5. package/.output/public/_nuxt/BY7YrV_D.js +1 -0
  6. package/.output/public/_nuxt/Bqcgz95s.js +18 -0
  7. package/.output/public/_nuxt/C7UlqPeD.js +1 -0
  8. package/.output/public/_nuxt/CTmDn-YP.js +1 -0
  9. package/.output/public/_nuxt/Cs8pVeVG.js +1 -0
  10. package/.output/public/_nuxt/{DcsCcxp4.js → D98NH8kG.js} +1 -1
  11. package/.output/public/_nuxt/DKySmNPI.js +14 -0
  12. package/.output/public/_nuxt/Di0NY_ht.js +1 -0
  13. package/.output/public/_nuxt/Du9v6qGB.js +1 -0
  14. package/.output/public/_nuxt/{C_iYD-EB.js → EHlEMRii.js} +1 -1
  15. package/.output/public/_nuxt/Eke1fs-U.js +1 -0
  16. package/.output/public/_nuxt/{DeJykBFf.js → H0BcqZtT.js} +1 -1
  17. package/.output/public/_nuxt/{C4oW1HsE.js → HSYEkkce.js} +1 -1
  18. package/.output/public/_nuxt/{DZshyNLa.js → IREZ1eC2.js} +1 -1
  19. package/.output/public/_nuxt/{D_OTvQza.js → J9oU00D1.js} +1 -1
  20. package/.output/public/_nuxt/OmpTerminalPanel.BxR5-lvi.css +1 -0
  21. package/.output/public/_nuxt/SSyAPaHc.js +1 -0
  22. package/.output/public/_nuxt/TownView.li4EMQxK.css +1 -0
  23. package/.output/public/_nuxt/VdLk4jLE2.js +1 -0
  24. package/.output/public/_nuxt/_id_.BhsXoEuk.css +1 -0
  25. package/.output/public/_nuxt/_id_.DQyj-WKN.css +1 -0
  26. package/.output/public/_nuxt/{_wsId_.B4WiqkIS.css → _wsId_.CTx-BlfF.css} +1 -1
  27. package/.output/public/_nuxt/aShsv_rG.js +19 -0
  28. package/.output/public/_nuxt/{yF0aYMF1.js → aesgXKSr.js} +3 -3
  29. package/.output/public/_nuxt/agents.B21nUEUX.css +1 -0
  30. package/.output/public/_nuxt/aml.ekTjxFkf.css +1 -0
  31. package/.output/public/_nuxt/builds/latest.json +1 -1
  32. package/.output/public/_nuxt/builds/meta/b5506ef0-f48e-4f14-a6c0-d65e505d0b09.json +1 -0
  33. package/.output/public/_nuxt/ca4TJ3Op.js +1 -0
  34. package/.output/public/_nuxt/channel-templates.DplM1pJ3.css +1 -0
  35. package/.output/public/_nuxt/daq.BdVmoIfe.css +1 -0
  36. package/.output/public/_nuxt/dcw.DCgyzpWV.css +1 -0
  37. package/.output/public/_nuxt/{default.J32SgqFY.css → default.Bh3L2HU8.css} +1 -1
  38. package/.output/public/_nuxt/lHAxdSsj.js +1 -0
  39. package/.output/public/_nuxt/pages.j9rzRocr.css +1 -0
  40. package/.output/public/_nuxt/plugins.DhiZbHU8.css +1 -0
  41. package/.output/public/_nuxt/settings.BRx9rIDg.css +1 -0
  42. package/.output/public/_nuxt/teams.BLlOPB_Z.css +1 -0
  43. package/.output/public/_nuxt/tokens.De8xzszn.css +1 -0
  44. package/.output/public/_nuxt/workshop.D1jFNkrn.css +1 -0
  45. package/.output/server/chunks/_/nitro.mjs +1058 -830
  46. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  47. package/.output/server/chunks/build/{OmpTerminalPanel-Cu_s4i0A.mjs → OmpTerminalPanel-CVvxpsF7.mjs} +15 -15
  48. package/.output/server/chunks/build/{OmpTerminalPanel-Cu_s4i0A.mjs.map → OmpTerminalPanel-CVvxpsF7.mjs.map} +1 -1
  49. package/.output/server/chunks/build/{TownView-BuLAsmpR.mjs → TownView-CJ6IsDCc.mjs} +229 -228
  50. package/.output/server/chunks/build/{TownView-BuLAsmpR.mjs.map → TownView-CJ6IsDCc.mjs.map} +1 -1
  51. package/.output/server/chunks/build/{_id_-BU1wfOID.mjs → _id_-CVD_H0ir.mjs} +149 -147
  52. package/.output/server/chunks/build/_id_-CVD_H0ir.mjs.map +1 -0
  53. package/.output/server/chunks/build/{_id_-BYsEua57.mjs → _id_-CtxMb3qp.mjs} +47 -46
  54. package/.output/server/chunks/build/_id_-CtxMb3qp.mjs.map +1 -0
  55. package/.output/server/chunks/build/{_wsId_-BxlDcJHg.mjs → _wsId_-DpY3T-md.mjs} +516 -446
  56. package/.output/server/chunks/build/{_wsId_-BxlDcJHg.mjs.map → _wsId_-DpY3T-md.mjs.map} +1 -1
  57. package/.output/server/chunks/build/{agents-CLQqJF2y.mjs → agents-DsCkuXDV.mjs} +49 -46
  58. package/.output/server/chunks/build/agents-DsCkuXDV.mjs.map +1 -0
  59. package/.output/server/chunks/build/{aml-_7FdFL2p.mjs → aml-CT0xKGKI.mjs} +122 -105
  60. package/.output/server/chunks/build/aml-CT0xKGKI.mjs.map +1 -0
  61. package/.output/server/chunks/build/builtin-catalog-edpDcgfL.mjs +117 -0
  62. package/.output/server/chunks/build/builtin-catalog-edpDcgfL.mjs.map +1 -0
  63. package/.output/server/chunks/build/{channel-templates-p6SZNjlM.mjs → channel-templates-Dla9FbYa.mjs} +49 -37
  64. package/.output/server/chunks/build/channel-templates-Dla9FbYa.mjs.map +1 -0
  65. package/.output/server/chunks/build/{daq-cgyjKmJu.mjs → daq-DWWSKGAV.mjs} +95 -93
  66. package/.output/server/chunks/build/daq-DWWSKGAV.mjs.map +1 -0
  67. package/.output/server/chunks/build/{dcw-CoTxBlAZ.mjs → dcw-CT8k17_E.mjs} +46 -45
  68. package/.output/server/chunks/build/dcw-CT8k17_E.mjs.map +1 -0
  69. package/.output/server/chunks/build/{default-BE4r0FZN.mjs → default-D3525UFX.mjs} +16 -15
  70. package/.output/server/chunks/build/{default-BE4r0FZN.mjs.map → default-D3525UFX.mjs.map} +1 -1
  71. package/.output/server/chunks/build/{logs-BSOeZwwI.mjs → logs--dByNyhw.mjs} +2 -2
  72. package/.output/server/chunks/build/{logs-BSOeZwwI.mjs.map → logs--dByNyhw.mjs.map} +1 -1
  73. package/.output/server/chunks/build/{monitor-C0okQaXz.mjs → monitor-Dh2Kvaq5.mjs} +2 -2
  74. package/.output/server/chunks/build/{monitor-C0okQaXz.mjs.map → monitor-Dh2Kvaq5.mjs.map} +1 -1
  75. package/.output/server/chunks/build/{pages-DFxjn9Xa.mjs → pages-BHcSBM2D.mjs} +26 -20
  76. package/.output/server/chunks/build/pages-BHcSBM2D.mjs.map +1 -0
  77. package/.output/server/chunks/build/{plugins-lGlUr1lj.mjs → plugins-BNgIi61W.mjs} +23 -17
  78. package/.output/server/chunks/build/plugins-BNgIi61W.mjs.map +1 -0
  79. package/.output/server/chunks/build/{settings-Ddd1qx2Z.mjs → settings-ipYBDWdn.mjs} +45 -44
  80. package/.output/server/chunks/build/settings-ipYBDWdn.mjs.map +1 -0
  81. package/.output/server/chunks/build/{teams-MEDLZdMn.mjs → teams-5lx-CwFa.mjs} +47 -44
  82. package/.output/server/chunks/build/teams-5lx-CwFa.mjs.map +1 -0
  83. package/.output/server/chunks/build/{tokens-C7fTM5C2.mjs → tokens-q-IDT8Io.mjs} +73 -53
  84. package/.output/server/chunks/build/tokens-q-IDT8Io.mjs.map +1 -0
  85. package/.output/server/chunks/build/{town-qMPql9Se.mjs → town-QJWB5wng.mjs} +5 -4
  86. package/.output/server/chunks/build/town-QJWB5wng.mjs.map +1 -0
  87. package/.output/server/chunks/build/{useDaqStream-CIBaiGAl.mjs → useDaqStream-DfCFpb3p.mjs} +9 -3
  88. package/.output/server/chunks/build/useDaqStream-DfCFpb3p.mjs.map +1 -0
  89. package/.output/server/chunks/build/{useDcwStream-CBbiYnWe.mjs → useDcwStream-UPiX-3iO.mjs} +11 -2
  90. package/.output/server/chunks/build/useDcwStream-UPiX-3iO.mjs.map +1 -0
  91. package/.output/server/chunks/build/{workshop-BL5bhfs0.mjs → workshop-BIlCj_ZP.mjs} +45 -45
  92. package/.output/server/chunks/build/workshop-BIlCj_ZP.mjs.map +1 -0
  93. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
  94. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +3 -3
  95. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +1 -1
  96. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
  97. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
  98. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +1 -1
  99. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +1 -1
  100. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  101. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  102. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  103. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  104. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  105. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  106. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  107. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +3 -1
  108. package/.output/server/chunks/routes/api/workshop/index5.get.mjs.map +1 -1
  109. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +3 -1
  110. package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
  111. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  112. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  113. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  114. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  115. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
  116. package/.output/server/chunks/routes/renderer.mjs +2 -2
  117. package/.output/server/chunks/virtual/entry.mjs +639 -88
  118. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  119. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  120. package/.output/server/package.json +1 -1
  121. package/README-zh.md +16 -6
  122. package/README.md +17 -7
  123. package/app/components/AppHeader.vue +961 -959
  124. package/app/components/workshop/A2aRpcDebugger.vue +237 -237
  125. package/app/components/workshop/AgentInspectorDrawer.vue +424 -424
  126. package/app/components/workshop/AgentLanesView.vue +998 -998
  127. package/app/components/workshop/ArtifactCard.vue +120 -120
  128. package/app/components/workshop/AssetLibrary.vue +452 -452
  129. package/app/components/workshop/ChannelSessionList.vue +812 -804
  130. package/app/components/workshop/CommandPalette.vue +269 -269
  131. package/app/components/workshop/Composer.vue +827 -827
  132. package/app/components/workshop/DeviceTwinPanel.vue +643 -643
  133. package/app/components/workshop/EventBlock.vue +602 -602
  134. package/app/components/workshop/FileSelectorModal.vue +188 -188
  135. package/app/components/workshop/InspectorPanel.vue +301 -301
  136. package/app/components/workshop/MemoryPanel.vue +364 -364
  137. package/app/components/workshop/MultiChannelView.vue +189 -189
  138. package/app/components/workshop/TaskBoardView.vue +686 -686
  139. package/app/components/workshop/TaskInspectorDrawer.vue +390 -390
  140. package/app/components/workshop/TranscriptTimeline.vue +601 -601
  141. package/app/components/workshop/blocks/ClusterArtifact.vue +61 -61
  142. package/app/components/workshop/blocks/ClusterError.vue +85 -85
  143. package/app/components/workshop/blocks/ClusterLife.vue +87 -87
  144. package/app/components/workshop/blocks/ClusterMember.vue +95 -93
  145. package/app/components/workshop/blocks/ClusterMemory.vue +84 -84
  146. package/app/components/workshop/blocks/ClusterOther.vue +67 -67
  147. package/app/components/workshop/blocks/ClusterStatus.vue +149 -147
  148. package/app/components/workshop/blocks/ClusterTool.vue +158 -158
  149. package/app/components/workshop/terminal/OmpTerminalPanel.vue +1011 -1011
  150. package/app/components/workshop/town/TownView.vue +56 -56
  151. package/app/composables/workshop/useDaqStream.ts +7 -4
  152. package/app/composables/workshop/useDcwStream.ts +8 -2
  153. package/app/middleware/locale-cookie.global.ts +22 -0
  154. package/app/pages/aml/index.vue +24 -2
  155. package/app/pages/daq/[id].vue +20 -16
  156. package/app/pages/daq/index.vue +2310 -2307
  157. package/app/pages/dcw/[id].vue +26 -23
  158. package/app/pages/dcw/index.vue +3 -3
  159. package/app/pages/index.vue +987 -981
  160. package/app/pages/plugins/index.vue +317 -311
  161. package/app/pages/settings.vue +1564 -1562
  162. package/app/pages/tokens.vue +15 -15
  163. package/app/pages/workshop/agents.vue +612 -609
  164. package/app/pages/workshop/channel-templates.vue +18 -11
  165. package/app/pages/workshop/index.vue +668 -668
  166. package/app/pages/workshop/teams.vue +743 -740
  167. package/app/pages/workshop/w/[wsId].vue +704 -704
  168. package/app/plugins/locale-restore.client.ts +16 -1
  169. package/app/utils/builtin-catalog.ts +104 -0
  170. package/config.yml +170 -170
  171. package/docs/cli.en.md +2 -2
  172. package/docs/cli.md +2 -2
  173. package/docs/full-test-plan.md +2 -3
  174. package/docs/plugins.en.md +33 -1
  175. package/docs/plugins.md +29 -1
  176. package/docs/sdk.en.md +1 -1
  177. package/docs/sdk.md +1 -1
  178. package/i18n/locales/en.ts +293 -35
  179. package/i18n/locales/zh-CN.ts +265 -7
  180. package/package.json +4 -3
  181. package/scripts/_dbg-perms-e2e.mjs +132 -109
  182. package/scripts/_demo-agentteam-capture.mjs +278 -0
  183. package/scripts/_e2e-ui-functional.mjs +371 -0
  184. package/scripts/_i18n-en-cjk-scan.mjs +28 -0
  185. package/scripts/_i18n-en-verify.mjs +107 -0
  186. package/scripts/_i18n-extra-checks.mjs +53 -0
  187. package/scripts/_i18n-scan-hardcoded.mjs +180 -0
  188. package/scripts/_i18n-verify-keys.mjs +50 -0
  189. package/scripts/_loop-biax-campaign.mjs +130 -0
  190. package/scripts/_sweep-button-contrast.mjs +87 -0
  191. package/scripts/test-serial-bridge.mjs +418 -0
  192. package/scripts/ui/e2e-interactive.mjs +328 -0
  193. package/scripts/ui/record-demo.mjs +557 -0
  194. package/scripts/ui/seed-industrial-demo.mjs +171 -0
  195. package/server/api/workshop/daq/index.get.ts +3 -1
  196. package/server/api/workshop/dcw/index.get.ts +3 -0
  197. package/server/plugins/aw-plugins.ts +9 -7
  198. package/server/plugins-builtin/diag-bridge/index.mjs +608 -661
  199. package/server/plugins-builtin/rag-bridge/index.mjs +57 -133
  200. package/server/plugins-builtin/serial-bridge/client.mjs +210 -0
  201. package/server/plugins-builtin/serial-bridge/drivers.mjs +409 -0
  202. package/server/plugins-builtin/serial-bridge/i18n.json +62 -0
  203. package/server/plugins-builtin/serial-bridge/index.mjs +247 -0
  204. package/server/plugins-builtin/serial-bridge/lib.mjs +208 -0
  205. package/server/plugins-builtin/serial-bridge/rtu.mjs +168 -0
  206. package/server/services/workshop/daq/daq-controller.ts +7 -2
  207. package/server/services/workshop/daq/drivers.ts +89 -3
  208. package/server/services/workshop/dcw/dcw-controller.ts +5 -1
  209. package/server/services/workshop/dcw/drivers.ts +85 -2
  210. package/server/services/workshop/dcw/plugin-bridge.ts +45 -0
  211. package/server/services/workshop/plugins/host.mjs +30 -0
  212. package/shared/daq-protocol.ts +15 -0
  213. package/.output/public/_nuxt/88GOowgO2.js +0 -1
  214. package/.output/public/_nuxt/BOt2SP4z.js +0 -1
  215. package/.output/public/_nuxt/BP-NyKVG.js +0 -18
  216. package/.output/public/_nuxt/BXxH0UQE.js +0 -1
  217. package/.output/public/_nuxt/BsROmY89.js +0 -1
  218. package/.output/public/_nuxt/ClILjvWH.js +0 -1
  219. package/.output/public/_nuxt/CzOCSGLe.js +0 -1
  220. package/.output/public/_nuxt/D8qvkfyY.js +0 -1
  221. package/.output/public/_nuxt/DCn7QZ5N.js +0 -2
  222. package/.output/public/_nuxt/DS8qj8EL.js +0 -1
  223. package/.output/public/_nuxt/DUjW5Yq5.js +0 -1
  224. package/.output/public/_nuxt/Dihnimlk.js +0 -19
  225. package/.output/public/_nuxt/Dqw1lpr-.js +0 -1
  226. package/.output/public/_nuxt/Dr9v6C0f.js +0 -14
  227. package/.output/public/_nuxt/Du9ZJtnj.js +0 -1
  228. package/.output/public/_nuxt/OmpTerminalPanel.B_Pl5Ynm.css +0 -1
  229. package/.output/public/_nuxt/TownView.f-YOdXRs.css +0 -1
  230. package/.output/public/_nuxt/_id_.CM4bIgKY.css +0 -1
  231. package/.output/public/_nuxt/_id_.bNV69Dtf.css +0 -1
  232. package/.output/public/_nuxt/agents.ZD0rVdHE.css +0 -1
  233. package/.output/public/_nuxt/aml.BN8ZEW4h.css +0 -1
  234. package/.output/public/_nuxt/builds/meta/f4707884-7cf4-4a31-80d2-e3d72b73745f.json +0 -1
  235. package/.output/public/_nuxt/channel-templates.BOtahzPi.css +0 -1
  236. package/.output/public/_nuxt/daq.B0D3dPAc.css +0 -1
  237. package/.output/public/_nuxt/dcw.8Y7FqCVN.css +0 -1
  238. package/.output/public/_nuxt/pages.D7aSDlUI.css +0 -1
  239. package/.output/public/_nuxt/plugins.sb4nDGqr.css +0 -1
  240. package/.output/public/_nuxt/qr6R6Ha1.js +0 -1
  241. package/.output/public/_nuxt/settings.BTgR-NiE.css +0 -1
  242. package/.output/public/_nuxt/teams.CxnxKVVs.css +0 -1
  243. package/.output/public/_nuxt/tokens.BFY7qv4f.css +0 -1
  244. package/.output/public/_nuxt/workshop.CR_QzeAN.css +0 -1
  245. package/.output/server/chunks/build/_id_-BU1wfOID.mjs.map +0 -1
  246. package/.output/server/chunks/build/_id_-BYsEua57.mjs.map +0 -1
  247. package/.output/server/chunks/build/agents-CLQqJF2y.mjs.map +0 -1
  248. package/.output/server/chunks/build/aml-_7FdFL2p.mjs.map +0 -1
  249. package/.output/server/chunks/build/channel-templates-p6SZNjlM.mjs.map +0 -1
  250. package/.output/server/chunks/build/daq-cgyjKmJu.mjs.map +0 -1
  251. package/.output/server/chunks/build/dcw-CoTxBlAZ.mjs.map +0 -1
  252. package/.output/server/chunks/build/pages-DFxjn9Xa.mjs.map +0 -1
  253. package/.output/server/chunks/build/plugins-lGlUr1lj.mjs.map +0 -1
  254. package/.output/server/chunks/build/settings-Ddd1qx2Z.mjs.map +0 -1
  255. package/.output/server/chunks/build/teams-MEDLZdMn.mjs.map +0 -1
  256. package/.output/server/chunks/build/tokens-C7fTM5C2.mjs.map +0 -1
  257. package/.output/server/chunks/build/town-qMPql9Se.mjs.map +0 -1
  258. package/.output/server/chunks/build/useDaqStream-CIBaiGAl.mjs.map +0 -1
  259. package/.output/server/chunks/build/useDcwStream-CBbiYnWe.mjs.map +0 -1
  260. package/.output/server/chunks/build/workshop-BL5bhfs0.mjs.map +0 -1
  261. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.continue.json +0 -1
  262. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.json +0 -1
  263. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/054bb4bc4e4217a2ab0b0c6b663747214a9af464f5568ea60e784704e340bb0f.source +0 -153
  264. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/0554197c3d2bac203a1f5c48a5d52495d1336db1bd7aa4f4c19875810363e684.source +0 -153
  265. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/05c203d12a954fffba942e1d626e3f5fec05b18a5aef2bac003b7884a4b77406.source +0 -431
  266. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/145a6e6ba811af35aed31e0cc3211f53706a14980fa069ee9e3c1591139f96f0.source +0 -180
  267. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/1ae0fb281f97899c025e368ca73f41349b01fb5f85b19e08d7ebccff49095ed5.source +0 -112
  268. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/20ee9967aa0541c516db7575bdd4a1a745939bc7016bd10d7635903113edb8ec.source +0 -227
  269. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/233751843aeba9d4c5263f275b8102de00443c06f286918cbd23e0b6729e01aa.source +0 -131
  270. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/263c2e05b425e5c322e60c6475279f963bab3a873eb521b21df7fec935a46597.source +0 -160
  271. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/2ac5eaac28eaaee2178c4b32014df8e732f9dd432a285a872f5b7f31c1395fa4.source +0 -157
  272. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/33a0db0d2d95d2c11d0720090458e5fba1425376f5ceb5b422d1d3471be3226b.source +0 -348
  273. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/359e474ae83db35e4615d3728de6bf694b64d4dce9b536730a3b6518f9c0494a.source +0 -296
  274. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/37a4c3c31c4b70f6b719c53d1e9c4fcba603f31adfdd11bb6ef9f0d094923c56.source +0 -285
  275. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/461feca1c14a695eb8b0f17a6f95fe97eeceabc0510faaea4ba6d25bde147d8d.source +0 -217
  276. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/4cfadbda8591f29d5e1e230dc000e701b756e850441b3900fb596a4d2f6e98c2.source +0 -301
  277. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/50ca2810cf0b248c96948994c0c404531bbad6e553166b6816b3b03bfa0f75d2.source +0 -151
  278. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/52d9e8cb591a9ae86e238c3620a610cd386717bee222c0f37b25b2ac7e523dc4.source +0 -135
  279. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/6c87daafa4c006560a954636a97333f6123153c9d34d96203f7ee3a14e556357.source +0 -156
  280. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/77bc47854b577900621cacf1697f81fa2bc005af129d37614a97a3441c08f99f.source +0 -72
  281. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/7bbb789d3a527817118cf8399ed1861d6a962ade10878fd07223435d333a7089.source +0 -469
  282. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/86b7c1daafc8b60ba9982dde5bf1bcc74265709483c176e71f23ec6fc267451f.source +0 -259
  283. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/8df66d62bd41984d0970e8236882080c5085ac937d07a29779463d6a03b37c76.source +0 -97
  284. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/9962f2d1b3a85137bd40cc835725600b39f89ee02a27c06b2e0402e1eafde115.source +0 -277
  285. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/a1090ea066b792cb201739f4994e37bf7c12f52e805239a1eab87f18a537f266.source +0 -171
  286. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/a5241091650134d0919897e086a606a3846c8b2b54f8b4c84a8696c145ac3e9e.source +0 -425
  287. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/af19fa4c6e34d5540028be4b17600161283af3a2a2dfc61a3fdc0834436a0c14.source +0 -99
  288. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/b3713d78e2b2f93905ff6be8d58a8d0a2f42dea322eb67c987fda22ff6a084d5.source +0 -325
  289. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/b3849943c3aff102d1af815631fc843a2a52c17646a4b04696ece323e483bbec.source +0 -332
  290. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/bac735a3803a6650b7f1eb8f587e6dc5c68ea055000c3c99a11789438b78e837.source +0 -43
  291. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/d32c24d61eb8b33c73e5a8fc7e4dc7ef437aed238ee4371c2b00617e6104090a.source +0 -154
  292. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/d5170dc9a9879fda04fdf91d8a110d4efb6787ee38dda596d4da899883d36a72.source +0 -531
  293. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/dc59bcd7bb397be63ba2f2c3fec23f3782dcb17d2d75a9981eeced761f33eb32.source +0 -439
  294. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/eb5ff8cf66b92aec7bf6726781d8df74faa2b030c3aaac17d6b00c1fc04c9b32.source +0 -323
  295. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f10615a6fae18436e70d1201b2d44fdae3174a3aa7bb4db97dea1b3ed291d721.source +0 -433
  296. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f36d3e271668bc1260c2823542d22dbf1d0f7041ff16b1ac175bce2256e582ca.source +0 -280
  297. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/f94449380af09f31ac352152007146a75cc80bae8d6411ffe57b2c56f933b0ff.source +0 -117
  298. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/fe4dfd81178fd6b648335f6405d9ede71319aebde796008e50db21f8adf44c99.source +0 -160
  299. package/scripts/.mimosa/hook-state/sess_aeaecb58-8833-4b83-b93c-050467d21e03.mtxwtxme-61028-1f4519fbc4.baseline/ffb4e3aa548cfdadabaa44ab599f9b6a3ca6288176a2cc7a4b2fc2a12b5fb848.source +0 -101
  300. package/scripts/.mimosa/hook-status/sess_aeaecb58-8833-4b83-b93c-050467d21e03-d944d71bb3.json +0 -14
  301. package/scripts/_dbg-audit-all-pages.mjs +0 -43
  302. package/scripts/_dbg-daq-frames-e2e.mjs +0 -118
  303. package/scripts/_dbg-daq-rowstyle-verify.mjs +0 -112
  304. package/scripts/_dbg-hitl-timeout-e2e.mjs +0 -93
  305. package/scripts/_dbg-live-line-e2e.mjs +0 -279
  306. package/scripts/_dbg-minimal-omp.mjs +0 -77
  307. package/scripts/_dbg-mode-nav.mjs +0 -173
  308. package/scripts/_dbg-real-scenario-timeline.log +0 -55
  309. package/scripts/_dbg-team-repro.mjs +0 -76
  310. package/scripts/_dbg-town-agents-probe.mjs +0 -60
  311. package/scripts/_dbg-visual-acceptance.mjs +0 -63
  312. package/scripts/_townview_style.css +0 -1185
  313. package/scripts/_townview_template.html +0 -1215
  314. package/server/data/agent-node-bindings.json +0 -554
  315. package/server/data/daq-templates.json +0 -16
  316. package/server/data/daqs.json +0 -7464
  317. package/server/data/dcw-lines.json +0 -1787
  318. package/server/data/dcw-products.json +0 -1626
  319. package/server/data/dcw-recipes.json +0 -4672
  320. package/server/data/dcw-rollback.json +0 -20754
  321. package/server/data/dcw-runs.json +0 -6354
  322. package/server/data/dcw-templates.json +0 -146
  323. package/server/data/dcw-writes.json +0 -15650
  324. package/server/data/dcws.json +0 -9033
  325. package/server/data/device-twins.json +0 -133
  326. package/server/data/line-runs.json +0 -322
  327. package/server/data/scene-layouts.json +0 -277
@@ -25,8 +25,8 @@ import { a as apiErrorMessage } from './api-error-dul30BYQ.mjs';
25
25
  import { u as useEntitiesStore, a as useWorkshopWs, b as agentHueColor, c as useEventsStore, B as BlockClusterer, K as KIND_META, d as blockTier, e as buildStreamText, f as useWsConnectionStore, m as mdLiteMentions, T as TOOL_META, i as isStreaming, s as streamCursorVisible } from './useWorkshopWs-C_I7q9As.mjs';
26
26
  import { u as useWorkshopApi } from './useWorkshopApi-NyjL0L3j.mjs';
27
27
  import { f as formatLocalClock } from './useLocalTime-9a4B-aHv.mjs';
28
- import { O as OmpTerminalPanel_default } from './OmpTerminalPanel-Cu_s4i0A.mjs';
29
- import { u as useStorage, T as TownView_default } from './TownView-BuLAsmpR.mjs';
28
+ import { O as OmpTerminalPanel_default } from './OmpTerminalPanel-CVvxpsF7.mjs';
29
+ import { u as useStorage, T as TownView_default } from './TownView-CJ6IsDCc.mjs';
30
30
  import { defineComponent, computed, ref, watch, provide, mergeProps, unref, isRef, reactive, withCtx, createVNode, toDisplayString, createTextVNode, openBlock, createBlock, createCommentVNode, Fragment, renderList, withKeys, nextTick, useModel, withModifiers, mergeModels, shallowRef, toValue, onScopeDispose, Transition, withDirectives, vShow, inject, resolveDynamicComponent, resolveComponent, cloneVNode, useSSRContext } from 'vue';
31
31
  import { ssrRenderAttrs, ssrRenderComponent, ssrInterpolate, ssrRenderAttr, ssrRenderClass, ssrRenderStyle, ssrRenderTeleport, ssrRenderList, ssrIncludeBooleanAttr, ssrRenderVNode } from 'vue/server-renderer';
32
32
  import '../_/nitro.mjs';
@@ -62,10 +62,11 @@ import '@ant-design/colors';
62
62
  import 'axios';
63
63
  import './Checkbox-eax2M3o-.mjs';
64
64
  import './useTownBus-D9SoIsAN.mjs';
65
- import './useDcwStream-CBbiYnWe.mjs';
65
+ import './useDcwStream-UPiX-3iO.mjs';
66
66
  import './apiClient-BwnfOQU8.mjs';
67
- import './useDaqStream-CIBaiGAl.mjs';
67
+ import './useDaqStream-DfCFpb3p.mjs';
68
68
  import './useDeviceTwins-Yko6nNPF.mjs';
69
+ import './builtin-catalog-edpDcgfL.mjs';
69
70
  import 'three';
70
71
  import 'three/examples/jsm/loaders/GLTFLoader.js';
71
72
  import 'three/examples/jsm/environments/RoomEnvironment.js';
@@ -1897,17 +1898,17 @@ var FileSelectorModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
1897
1898
  const _component_a_spin = spin_default;
1898
1899
  _push(ssrRenderComponent(_component_a_modal, mergeProps({
1899
1900
  open: __props.open,
1900
- title: __props.title ?? "选择工作目录",
1901
+ title: __props.title ?? _ctx.$t("fileSelectorModal.title"),
1901
1902
  width: 640,
1902
- "ok-text": "选择此目录",
1903
- "cancel-text": "取消",
1903
+ "ok-text": _ctx.$t("fileSelectorModal.pickHere"),
1904
+ "cancel-text": _ctx.$t("common.cancel"),
1904
1905
  "confirm-loading": unref(loading),
1905
1906
  onOk: confirm,
1906
1907
  onCancel: cancel
1907
1908
  }, _attrs), {
1908
1909
  default: withCtx((_, _push, _parent, _scopeId) => {
1909
1910
  if (_push) {
1910
- _push(`<div class="fs" data-v-c35e0bdd${_scopeId}><div class="addr" data-v-c35e0bdd${_scopeId}>`);
1911
+ _push(`<div class="fs" data-v-eed7eab9${_scopeId}><div class="addr" data-v-eed7eab9${_scopeId}>`);
1911
1912
  _push(ssrRenderComponent(_component_a_breadcrumb, { class: "crumbs" }, {
1912
1913
  default: withCtx((_, _push, _parent, _scopeId) => {
1913
1914
  if (_push) {
@@ -1915,7 +1916,7 @@ var FileSelectorModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
1915
1916
  ssrRenderList(unref(crumbs), (c, i) => {
1916
1917
  _push(ssrRenderComponent(_component_a_breadcrumb_item, { key: c.path + i }, {
1917
1918
  default: withCtx((_, _push, _parent, _scopeId) => {
1918
- if (_push) _push(`<a data-v-c35e0bdd${_scopeId}>${ssrInterpolate(c.label)}</a>`);
1919
+ if (_push) _push(`<a data-v-eed7eab9${_scopeId}>${ssrInterpolate(c.label)}</a>`);
1919
1920
  else return [createVNode("a", { onClick: withModifiers(($event) => enter(c.path), ["prevent"]) }, toDisplayString(c.label), 9, ["onClick"])];
1920
1921
  }),
1921
1922
  _: 2
@@ -1937,22 +1938,22 @@ var FileSelectorModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
1937
1938
  "onUpdate:value": ($event) => isRef(manualPath) ? manualPath.value = $event : null,
1938
1939
  size: "small",
1939
1940
  class: "manual",
1940
- placeholder: "输入绝对路径跳转(如 D:\\\\projects\\\\my-app)",
1941
- "enter-button": "跳转",
1941
+ placeholder: _ctx.$t("fileSelectorModal.pathPh"),
1942
+ "enter-button": _ctx.$t("fileSelectorModal.go"),
1942
1943
  onSearch: goManual
1943
1944
  }, null, _parent, _scopeId));
1944
1945
  _push(ssrRenderComponent(_component_a_spin, { spinning: unref(loading) }, {
1945
1946
  default: withCtx((_, _push, _parent, _scopeId) => {
1946
1947
  if (_push) {
1947
- _push(`<div class="list" data-v-c35e0bdd${_scopeId}>`);
1948
- if (unref(parent)) _push(`<div class="row up" data-v-c35e0bdd${_scopeId}><span class="icon" data-v-c35e0bdd${_scopeId}>⬆</span><span class="name" data-v-c35e0bdd${_scopeId}>${ssrInterpolate(_ctx.$t("fileSelectorModal.kvwnnvn001"))}</span></div>`);
1948
+ _push(`<div class="list" data-v-eed7eab9${_scopeId}>`);
1949
+ if (unref(parent)) _push(`<div class="row up" data-v-eed7eab9${_scopeId}><span class="icon" data-v-eed7eab9${_scopeId}>⬆</span><span class="name" data-v-eed7eab9${_scopeId}>${ssrInterpolate(_ctx.$t("fileSelectorModal.kvwnnvn001"))}</span></div>`);
1949
1950
  else _push(`<!---->`);
1950
1951
  _push(`<!--[-->`);
1951
1952
  ssrRenderList(unref(dirs), (d) => {
1952
- _push(`<div class="row" data-v-c35e0bdd${_scopeId}><span class="icon" data-v-c35e0bdd${_scopeId}>${ssrInterpolate(d.hasChildren ? "📂" : "📁")}</span><span class="name" data-v-c35e0bdd${_scopeId}>${ssrInterpolate(d.name)}</span></div>`);
1953
+ _push(`<div class="row" data-v-eed7eab9${_scopeId}><span class="icon" data-v-eed7eab9${_scopeId}>${ssrInterpolate(d.hasChildren ? "📂" : "📁")}</span><span class="name" data-v-eed7eab9${_scopeId}>${ssrInterpolate(d.name)}</span></div>`);
1953
1954
  });
1954
1955
  _push(`<!--]-->`);
1955
- if (!unref(loading) && unref(dirs).length === 0) _push(`<div class="empty" data-v-c35e0bdd${_scopeId}>${ssrInterpolate(_ctx.$t("fileSelectorModal.k268o2o002"))}</div>`);
1956
+ if (!unref(loading) && unref(dirs).length === 0) _push(`<div class="empty" data-v-eed7eab9${_scopeId}>${ssrInterpolate(_ctx.$t("fileSelectorModal.k268o2o002"))}</div>`);
1956
1957
  else _push(`<!---->`);
1957
1958
  _push(`</div>`);
1958
1959
  } else return [createVNode("div", { class: "list" }, [
@@ -1977,7 +1978,7 @@ var FileSelectorModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
1977
1978
  }),
1978
1979
  _: 1
1979
1980
  }, _parent, _scopeId));
1980
- _push(`<div class="hint" data-v-c35e0bdd${_scopeId}>${ssrInterpolate(_ctx.$t("fileSelectorModal.k1rt80dq003"))}</div></div>`);
1981
+ _push(`<div class="hint" data-v-eed7eab9${_scopeId}>${ssrInterpolate(_ctx.$t("fileSelectorModal.k1rt80dq003"))}</div></div>`);
1981
1982
  } else return [createVNode("div", { class: "fs" }, [
1982
1983
  createVNode("div", { class: "addr" }, [createVNode(_component_a_breadcrumb, { class: "crumbs" }, {
1983
1984
  default: withCtx(() => [(openBlock(true), createBlock(Fragment, null, renderList(unref(crumbs), (c, i) => {
@@ -1993,10 +1994,15 @@ var FileSelectorModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
1993
1994
  "onUpdate:value": ($event) => isRef(manualPath) ? manualPath.value = $event : null,
1994
1995
  size: "small",
1995
1996
  class: "manual",
1996
- placeholder: "输入绝对路径跳转(如 D:\\\\projects\\\\my-app)",
1997
- "enter-button": "跳转",
1997
+ placeholder: _ctx.$t("fileSelectorModal.pathPh"),
1998
+ "enter-button": _ctx.$t("fileSelectorModal.go"),
1998
1999
  onSearch: goManual
1999
- }, null, 8, ["value", "onUpdate:value"]),
2000
+ }, null, 8, [
2001
+ "value",
2002
+ "onUpdate:value",
2003
+ "placeholder",
2004
+ "enter-button"
2005
+ ]),
2000
2006
  createVNode(_component_a_spin, { spinning: unref(loading) }, {
2001
2007
  default: withCtx(() => [createVNode("div", { class: "list" }, [
2002
2008
  unref(parent) ? (openBlock(), createBlock("div", {
@@ -2035,7 +2041,7 @@ FileSelectorModal_vue_vue_type_script_setup_true_lang_default.setup = (props, ct
2035
2041
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/FileSelectorModal.vue");
2036
2042
  return _sfc_setup$30 ? _sfc_setup$30(props, ctx) : void 0;
2037
2043
  };
2038
- var FileSelectorModal_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(FileSelectorModal_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-c35e0bdd"]]), { __name: "WorkshopFileSelectorModal" });
2044
+ var FileSelectorModal_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(FileSelectorModal_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-eed7eab9"]]), { __name: "WorkshopFileSelectorModal" });
2039
2045
  //#endregion
2040
2046
  //#region app/components/workshop/ChannelSessionList.vue?vue&type=script&setup=true&lang.ts
2041
2047
  var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -2091,7 +2097,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2091
2097
  const fileSelectorOpen = ref(false);
2092
2098
  const createAndMount = async () => {
2093
2099
  if (!mountForm.name.trim()) {
2094
- api$1.warning("Channel 名称必填");
2100
+ api$1.warning(t("channelSessionList.nameRequired"));
2095
2101
  return;
2096
2102
  }
2097
2103
  mountSubmitting.value = true;
@@ -2127,6 +2133,11 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2127
2133
  api$1.success(t("channelSessionList.kai50qc042", { p0: data?.agentCount ?? 0 }));
2128
2134
  templateMountId.value = void 0;
2129
2135
  refreshChannels();
2136
+ if (data?.channelId) {
2137
+ const ws = wsStore.workspaces.find((w) => w.id === props.wsId);
2138
+ if (ws && !ws.channelIds.includes(data.channelId)) ws.channelIds.push(data.channelId);
2139
+ wsStore.setActiveChannel(props.wsId, data.channelId);
2140
+ }
2130
2141
  } catch (e) {
2131
2142
  const err = e;
2132
2143
  api$1.error(apiErrorMessage(err, t("channelSessionList.k97xi7u029")));
@@ -2163,7 +2174,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2163
2174
  const m = llmProviders.value.find((p) => p.id === llmForm.provider)?.models.find((x) => x.id === llmForm.model);
2164
2175
  return (m?.efforts ?? []).map((e) => ({
2165
2176
  value: e,
2166
- label: e + (m?.defaultEffort === e ? "(默认)" : "")
2177
+ label: e + (m?.defaultEffort === e ? t("channelSessionList.defaultSuffix") : "")
2167
2178
  }));
2168
2179
  });
2169
2180
  const loadLlmCatalog = async (harness) => {
@@ -2284,41 +2295,41 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2284
2295
  const _component_a_radio_group = Group_default$1;
2285
2296
  const _component_a_radio = radio_default;
2286
2297
  const _component_workshop_file_selector_modal = FileSelectorModal_default;
2287
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "channel-list" }, _attrs))} data-v-749e05c3><div class="list-head" data-v-749e05c3><span class="title" data-v-749e05c3>Channels</span><span class="head-actions" data-v-749e05c3><button class="head-op im" type="button" title="Channel 模板中心" data-v-749e05c3><span class="i-tabler-layout-grid-add im-pop" data-v-749e05c3></span></button><button class="head-op im" type="button" title="新建 Channel" data-v-749e05c3><span class="i-tabler-plus im-pop" data-v-749e05c3></span></button></span></div>`);
2298
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "channel-list" }, _attrs))} data-v-4b0c24f2><div class="list-head" data-v-4b0c24f2><span class="title" data-v-4b0c24f2>Channels</span><span class="head-actions" data-v-4b0c24f2><button class="head-op im" type="button"${ssrRenderAttr("title", _ctx.$t("channelSessionList.tplCenterTitle"))} data-v-4b0c24f2><span class="i-tabler-layout-grid-add im-pop" data-v-4b0c24f2></span></button><button class="head-op im" type="button"${ssrRenderAttr("title", _ctx.$t("channelSessionList.newChannelTitle"))} data-v-4b0c24f2><span class="i-tabler-plus im-pop" data-v-4b0c24f2></span></button></span></div>`);
2288
2299
  _push(ssrRenderComponent(_component_ClientOnly, null, {}, _parent));
2289
- _push(`<div class="mount-template" data-v-749e05c3>`);
2300
+ _push(`<div class="mount-template" data-v-4b0c24f2>`);
2290
2301
  _push(ssrRenderComponent(_component_a_select, {
2291
2302
  value: unref(templateMountId),
2292
2303
  "onUpdate:value": ($event) => isRef(templateMountId) ? templateMountId.value = $event : null,
2293
2304
  size: "small",
2294
- placeholder: "从 Channel 模板挂载",
2305
+ placeholder: _ctx.$t("channelSessionList.mountFromTpl"),
2295
2306
  class: "select",
2296
2307
  loading: unref(templateMounting),
2297
2308
  options: unref(channelTemplates).map((t) => ({
2298
2309
  value: t.id,
2299
2310
  label: _ctx.$t("channelSessionList.k1oes209038", {
2300
- p0: t.isBuiltin ? "内置 · " : t.visibility === "public" ? "公开 · " : "",
2311
+ p0: t.isBuiltin ? _ctx.$t("channelSessionList.pfxBuiltin") : t.visibility === "public" ? _ctx.$t("channelSessionList.pfxPublic") : "",
2301
2312
  p1: t.name,
2302
2313
  p2: (t.lead ? 1 : 0) + t.members.length
2303
2314
  })
2304
2315
  })),
2305
2316
  onChange: mountFromTemplate
2306
2317
  }, null, _parent));
2307
- _push(`<div class="tpl-hint" data-v-749e05c3>${ssrInterpolate(_ctx.$t("channelSessionList.k18ppu31016"))}</div></div>`);
2318
+ _push(`<div class="tpl-hint" data-v-4b0c24f2>${ssrInterpolate(_ctx.$t("channelSessionList.k18ppu31016"))}</div></div>`);
2308
2319
  _push(ssrRenderComponent(_component_a_modal, {
2309
2320
  open: unref(mountModal),
2310
2321
  "onUpdate:open": ($event) => isRef(mountModal) ? mountModal.value = $event : null,
2311
2322
  title: _ctx.$t("channelSessionList.k1qjyl6l002"),
2312
2323
  "confirm-loading": unref(mountSubmitting),
2313
- "ok-text": "创建",
2314
- "cancel-text": "取消",
2324
+ "ok-text": _ctx.$t("common.create"),
2325
+ "cancel-text": _ctx.$t("common.cancel"),
2315
2326
  onOk: createAndMount
2316
2327
  }, {
2317
2328
  default: withCtx((_, _push, _parent, _scopeId) => {
2318
2329
  if (_push) _push(ssrRenderComponent(_component_a_form, { layout: "vertical" }, {
2319
2330
  default: withCtx((_, _push, _parent, _scopeId) => {
2320
2331
  if (_push) {
2321
- _push(ssrRenderComponent(_component_a_form_item, { label: "Channel 名称" }, {
2332
+ _push(ssrRenderComponent(_component_a_form_item, { label: _ctx.$t("channelSessionList.nameLabel") }, {
2322
2333
  default: withCtx((_, _push, _parent, _scopeId) => {
2323
2334
  if (_push) _push(ssrRenderComponent(_component_a_input, {
2324
2335
  value: unref(mountForm).name,
@@ -2346,7 +2357,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2346
2357
  }, _parent, _scopeId));
2347
2358
  _push(ssrRenderComponent(_component_a_form_item, { label: _ctx.$t("channelSessionList.k1wj4f38004") }, {
2348
2359
  extra: withCtx((_, _push, _parent, _scopeId) => {
2349
- if (_push) _push(`<span class="ws-hint" data-v-749e05c3${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.k1u3zsr5017"))}</span>`);
2360
+ if (_push) _push(`<span class="ws-hint" data-v-4b0c24f2${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.k1u3zsr5017"))}</span>`);
2350
2361
  else return [createVNode("span", { class: "ws-hint" }, toDisplayString(_ctx.$t("channelSessionList.k1u3zsr5017")), 1)];
2351
2362
  }),
2352
2363
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -2371,7 +2382,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2371
2382
  }, _parent, _scopeId));
2372
2383
  _push(ssrRenderComponent(_component_a_form_item, { label: _ctx.$t("channelSessionList.kmgv4h5006") }, {
2373
2384
  extra: withCtx((_, _push, _parent, _scopeId) => {
2374
- if (_push) _push(`<span class="ws-hint" data-v-749e05c3${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.kucq30k019"))}</span>`);
2385
+ if (_push) _push(`<span class="ws-hint" data-v-4b0c24f2${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.kucq30k019"))}</span>`);
2375
2386
  else return [createVNode("span", { class: "ws-hint" }, toDisplayString(_ctx.$t("channelSessionList.kucq30k019")), 1)];
2376
2387
  }),
2377
2388
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -2382,7 +2393,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2382
2393
  value: unref(mountForm).workspace,
2383
2394
  "onUpdate:value": ($event) => unref(mountForm).workspace = $event,
2384
2395
  style: { "width": "70%" },
2385
- placeholder: "留空 = data/workspaces/<channelId>",
2396
+ placeholder: _ctx.$t("channelSessionList.wsPh1"),
2386
2397
  "allow-clear": "",
2387
2398
  onPressEnter: createAndMount
2388
2399
  }, null, _parent, _scopeId));
@@ -2400,10 +2411,14 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2400
2411
  value: unref(mountForm).workspace,
2401
2412
  "onUpdate:value": ($event) => unref(mountForm).workspace = $event,
2402
2413
  style: { "width": "70%" },
2403
- placeholder: "留空 = data/workspaces/<channelId>",
2414
+ placeholder: _ctx.$t("channelSessionList.wsPh1"),
2404
2415
  "allow-clear": "",
2405
2416
  onPressEnter: createAndMount
2406
- }, null, 8, ["value", "onUpdate:value"]), createVNode(_component_a_button, {
2417
+ }, null, 8, [
2418
+ "value",
2419
+ "onUpdate:value",
2420
+ "placeholder"
2421
+ ]), createVNode(_component_a_button, {
2407
2422
  style: { "width": "30%" },
2408
2423
  onClick: ($event) => fileSelectorOpen.value = true
2409
2424
  }, {
@@ -2418,10 +2433,14 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2418
2433
  value: unref(mountForm).workspace,
2419
2434
  "onUpdate:value": ($event) => unref(mountForm).workspace = $event,
2420
2435
  style: { "width": "70%" },
2421
- placeholder: "留空 = data/workspaces/<channelId>",
2436
+ placeholder: _ctx.$t("channelSessionList.wsPh1"),
2422
2437
  "allow-clear": "",
2423
2438
  onPressEnter: createAndMount
2424
- }, null, 8, ["value", "onUpdate:value"]), createVNode(_component_a_button, {
2439
+ }, null, 8, [
2440
+ "value",
2441
+ "onUpdate:value",
2442
+ "placeholder"
2443
+ ]), createVNode(_component_a_button, {
2425
2444
  style: { "width": "30%" },
2426
2445
  onClick: ($event) => fileSelectorOpen.value = true
2427
2446
  }, {
@@ -2435,19 +2454,19 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2435
2454
  }, _parent, _scopeId));
2436
2455
  _push(ssrRenderComponent(_component_a_form_item, null, {
2437
2456
  default: withCtx((_, _push, _parent, _scopeId) => {
2438
- if (_push) _push(`<span class="ws-hint" data-v-749e05c3${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.k1ful761020"))}</span>`);
2457
+ if (_push) _push(`<span class="ws-hint" data-v-4b0c24f2${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.k1ful761020"))}</span>`);
2439
2458
  else return [createVNode("span", { class: "ws-hint" }, toDisplayString(_ctx.$t("channelSessionList.k1ful761020")), 1)];
2440
2459
  }),
2441
2460
  _: 1
2442
2461
  }, _parent, _scopeId));
2443
2462
  } else return [
2444
- createVNode(_component_a_form_item, { label: "Channel 名称" }, {
2463
+ createVNode(_component_a_form_item, { label: _ctx.$t("channelSessionList.nameLabel") }, {
2445
2464
  default: withCtx(() => [createVNode(_component_a_input, {
2446
2465
  value: unref(mountForm).name,
2447
2466
  "onUpdate:value": ($event) => unref(mountForm).name = $event
2448
2467
  }, null, 8, ["value", "onUpdate:value"])]),
2449
2468
  _: 1
2450
- }),
2469
+ }, 8, ["label"]),
2451
2470
  createVNode(_component_a_form_item, { label: _ctx.$t("channelSessionList.k40gkk003") }, {
2452
2471
  default: withCtx(() => [createVNode(_component_a_input, {
2453
2472
  value: unref(mountForm).description,
@@ -2476,10 +2495,14 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2476
2495
  value: unref(mountForm).workspace,
2477
2496
  "onUpdate:value": ($event) => unref(mountForm).workspace = $event,
2478
2497
  style: { "width": "70%" },
2479
- placeholder: "留空 = data/workspaces/<channelId>",
2498
+ placeholder: _ctx.$t("channelSessionList.wsPh1"),
2480
2499
  "allow-clear": "",
2481
2500
  onPressEnter: createAndMount
2482
- }, null, 8, ["value", "onUpdate:value"]), createVNode(_component_a_button, {
2501
+ }, null, 8, [
2502
+ "value",
2503
+ "onUpdate:value",
2504
+ "placeholder"
2505
+ ]), createVNode(_component_a_button, {
2483
2506
  style: { "width": "30%" },
2484
2507
  onClick: ($event) => fileSelectorOpen.value = true
2485
2508
  }, {
@@ -2500,13 +2523,13 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2500
2523
  }, _parent, _scopeId));
2501
2524
  else return [createVNode(_component_a_form, { layout: "vertical" }, {
2502
2525
  default: withCtx(() => [
2503
- createVNode(_component_a_form_item, { label: "Channel 名称" }, {
2526
+ createVNode(_component_a_form_item, { label: _ctx.$t("channelSessionList.nameLabel") }, {
2504
2527
  default: withCtx(() => [createVNode(_component_a_input, {
2505
2528
  value: unref(mountForm).name,
2506
2529
  "onUpdate:value": ($event) => unref(mountForm).name = $event
2507
2530
  }, null, 8, ["value", "onUpdate:value"])]),
2508
2531
  _: 1
2509
- }),
2532
+ }, 8, ["label"]),
2510
2533
  createVNode(_component_a_form_item, { label: _ctx.$t("channelSessionList.k40gkk003") }, {
2511
2534
  default: withCtx(() => [createVNode(_component_a_input, {
2512
2535
  value: unref(mountForm).description,
@@ -2535,10 +2558,14 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2535
2558
  value: unref(mountForm).workspace,
2536
2559
  "onUpdate:value": ($event) => unref(mountForm).workspace = $event,
2537
2560
  style: { "width": "70%" },
2538
- placeholder: "留空 = data/workspaces/<channelId>",
2561
+ placeholder: _ctx.$t("channelSessionList.wsPh1"),
2539
2562
  "allow-clear": "",
2540
2563
  onPressEnter: createAndMount
2541
- }, null, 8, ["value", "onUpdate:value"]), createVNode(_component_a_button, {
2564
+ }, null, 8, [
2565
+ "value",
2566
+ "onUpdate:value",
2567
+ "placeholder"
2568
+ ]), createVNode(_component_a_button, {
2542
2569
  style: { "width": "30%" },
2543
2570
  onClick: ($event) => fileSelectorOpen.value = true
2544
2571
  }, {
@@ -2564,8 +2591,8 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2564
2591
  "onUpdate:open": ($event) => isRef(settingsOpen) ? settingsOpen.value = $event : null,
2565
2592
  title: _ctx.$t("channelSessionList.k1pmemvt039", { p0: unref(settingsForm).name }),
2566
2593
  "confirm-loading": unref(settingsSaving),
2567
- "ok-text": "保存",
2568
- "cancel-text": "取消",
2594
+ "ok-text": _ctx.$t("common.save"),
2595
+ "cancel-text": _ctx.$t("common.cancel"),
2569
2596
  onOk: saveSettings
2570
2597
  }, {
2571
2598
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -2650,7 +2677,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2650
2677
  }),
2651
2678
  _: 1
2652
2679
  }, _parent, _scopeId));
2653
- _push(ssrRenderComponent(_component_a_form_item, { label: "默认模型(可选;留空用各 Harness 默认)" }, {
2680
+ _push(ssrRenderComponent(_component_a_form_item, { label: _ctx.$t("channelSessionList.llmDefaultLabel") }, {
2654
2681
  default: withCtx((_, _push, _parent, _scopeId) => {
2655
2682
  if (_push) _push(ssrRenderComponent(_component_a_space, null, {
2656
2683
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -2692,7 +2719,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2692
2719
  value: unref(llmForm).provider,
2693
2720
  "onUpdate:value": ($event) => unref(llmForm).provider = $event,
2694
2721
  style: { "width": "170px" },
2695
- placeholder: unref(llmLoading) ? "目录加载中…" : "provider",
2722
+ placeholder: unref(llmLoading) ? _ctx.$t("channelSessionList.catalogLoading") : "provider",
2696
2723
  options: unref(llmProviderOptions),
2697
2724
  disabled: !unref(llmForm).enabled || unref(llmLoading),
2698
2725
  "show-search": "",
@@ -2712,7 +2739,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2712
2739
  value: unref(llmForm).effort,
2713
2740
  "onUpdate:value": ($event) => unref(llmForm).effort = $event,
2714
2741
  style: { "width": "130px" },
2715
- placeholder: "effort(可选)",
2742
+ placeholder: _ctx.$t("channelSessionList.effortPh"),
2716
2743
  options: unref(llmEffortOptions),
2717
2744
  disabled: !unref(llmForm).enabled || !unref(llmForm).model,
2718
2745
  "allow-clear": ""
@@ -2721,7 +2748,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2721
2748
  value: unref(llmForm).effort,
2722
2749
  "onUpdate:value": ($event) => unref(llmForm).effort = $event,
2723
2750
  style: { "width": "130px" },
2724
- placeholder: "variant(可选)",
2751
+ placeholder: _ctx.$t("channelSessionList.variantPh"),
2725
2752
  disabled: !unref(llmForm).enabled || !unref(llmForm).model,
2726
2753
  "allow-clear": ""
2727
2754
  }, null, _parent, _scopeId));
@@ -2772,7 +2799,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2772
2799
  value: unref(llmForm).provider,
2773
2800
  "onUpdate:value": ($event) => unref(llmForm).provider = $event,
2774
2801
  style: { "width": "170px" },
2775
- placeholder: unref(llmLoading) ? "目录加载中…" : "provider",
2802
+ placeholder: unref(llmLoading) ? _ctx.$t("channelSessionList.catalogLoading") : "provider",
2776
2803
  options: unref(llmProviderOptions),
2777
2804
  disabled: !unref(llmForm).enabled || unref(llmLoading),
2778
2805
  "show-search": "",
@@ -2804,13 +2831,14 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2804
2831
  value: unref(llmForm).effort,
2805
2832
  "onUpdate:value": ($event) => unref(llmForm).effort = $event,
2806
2833
  style: { "width": "130px" },
2807
- placeholder: "effort(可选)",
2834
+ placeholder: _ctx.$t("channelSessionList.effortPh"),
2808
2835
  options: unref(llmEffortOptions),
2809
2836
  disabled: !unref(llmForm).enabled || !unref(llmForm).model,
2810
2837
  "allow-clear": ""
2811
2838
  }, null, 8, [
2812
2839
  "value",
2813
2840
  "onUpdate:value",
2841
+ "placeholder",
2814
2842
  "options",
2815
2843
  "disabled"
2816
2844
  ])) : unref(llmEffortMode) === "freetext" ? (openBlock(), createBlock(_component_a_input, {
@@ -2818,12 +2846,13 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2818
2846
  value: unref(llmForm).effort,
2819
2847
  "onUpdate:value": ($event) => unref(llmForm).effort = $event,
2820
2848
  style: { "width": "130px" },
2821
- placeholder: "variant(可选)",
2849
+ placeholder: _ctx.$t("channelSessionList.variantPh"),
2822
2850
  disabled: !unref(llmForm).enabled || !unref(llmForm).model,
2823
2851
  "allow-clear": ""
2824
2852
  }, null, 8, [
2825
2853
  "value",
2826
2854
  "onUpdate:value",
2855
+ "placeholder",
2827
2856
  "disabled"
2828
2857
  ])) : createCommentVNode("", true)
2829
2858
  ];
@@ -2877,7 +2906,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2877
2906
  value: unref(llmForm).provider,
2878
2907
  "onUpdate:value": ($event) => unref(llmForm).provider = $event,
2879
2908
  style: { "width": "170px" },
2880
- placeholder: unref(llmLoading) ? "目录加载中…" : "provider",
2909
+ placeholder: unref(llmLoading) ? _ctx.$t("channelSessionList.catalogLoading") : "provider",
2881
2910
  options: unref(llmProviderOptions),
2882
2911
  disabled: !unref(llmForm).enabled || unref(llmLoading),
2883
2912
  "show-search": "",
@@ -2909,13 +2938,14 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2909
2938
  value: unref(llmForm).effort,
2910
2939
  "onUpdate:value": ($event) => unref(llmForm).effort = $event,
2911
2940
  style: { "width": "130px" },
2912
- placeholder: "effort(可选)",
2941
+ placeholder: _ctx.$t("channelSessionList.effortPh"),
2913
2942
  options: unref(llmEffortOptions),
2914
2943
  disabled: !unref(llmForm).enabled || !unref(llmForm).model,
2915
2944
  "allow-clear": ""
2916
2945
  }, null, 8, [
2917
2946
  "value",
2918
2947
  "onUpdate:value",
2948
+ "placeholder",
2919
2949
  "options",
2920
2950
  "disabled"
2921
2951
  ])) : unref(llmEffortMode) === "freetext" ? (openBlock(), createBlock(_component_a_input, {
@@ -2923,12 +2953,13 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2923
2953
  value: unref(llmForm).effort,
2924
2954
  "onUpdate:value": ($event) => unref(llmForm).effort = $event,
2925
2955
  style: { "width": "130px" },
2926
- placeholder: "variant(可选)",
2956
+ placeholder: _ctx.$t("channelSessionList.variantPh"),
2927
2957
  disabled: !unref(llmForm).enabled || !unref(llmForm).model,
2928
2958
  "allow-clear": ""
2929
2959
  }, null, 8, [
2930
2960
  "value",
2931
2961
  "onUpdate:value",
2962
+ "placeholder",
2932
2963
  "disabled"
2933
2964
  ])) : createCommentVNode("", true)
2934
2965
  ]),
@@ -2941,12 +2972,12 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2941
2972
  default: withCtx((_, _push, _parent, _scopeId) => {
2942
2973
  if (_push) {
2943
2974
  if (unref(pluginRows).length) {
2944
- _push(`<div class="ch-plugin-list" data-v-749e05c3${_scopeId}><!--[-->`);
2975
+ _push(`<div class="ch-plugin-list" data-v-4b0c24f2${_scopeId}><!--[-->`);
2945
2976
  ssrRenderList(unref(pluginRows), (p) => {
2946
- _push(`<div class="ch-plugin-row" data-v-749e05c3${_scopeId}><div class="ch-plugin-main" data-v-749e05c3${_scopeId}><span class="aw-mono" data-v-749e05c3${_scopeId}>${ssrInterpolate(p.name)}</span>`);
2947
- if (p.builtin) _push(`<span class="ws-hint" data-v-749e05c3${_scopeId}>内置</span>`);
2977
+ _push(`<div class="ch-plugin-row" data-v-4b0c24f2${_scopeId}><div class="ch-plugin-main" data-v-4b0c24f2${_scopeId}><span class="aw-mono" data-v-4b0c24f2${_scopeId}>${ssrInterpolate(p.name)}</span>`);
2978
+ if (p.builtin) _push(`<span class="ws-hint" data-v-4b0c24f2${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.builtinTag"))}</span>`);
2948
2979
  else _push(`<!---->`);
2949
- if (p.description) _push(`<span class="ws-hint ch-plugin-desc" data-v-749e05c3${_scopeId}>${ssrInterpolate(p.description)}</span>`);
2980
+ if (p.description) _push(`<span class="ws-hint ch-plugin-desc" data-v-4b0c24f2${_scopeId}>${ssrInterpolate(p.description)}</span>`);
2950
2981
  else _push(`<!---->`);
2951
2982
  _push(`</div>`);
2952
2983
  _push(ssrRenderComponent(_component_a_switch, {
@@ -2958,10 +2989,10 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2958
2989
  _push(`</div>`);
2959
2990
  });
2960
2991
  _push(`<!--]-->`);
2961
- if (unref(pluginSource) !== "explicit") _push(`<span class="ws-hint" data-v-749e05c3${_scopeId}>${ssrInterpolate(unref(t)("channelSessionList.k1plugsrc046"))}</span>`);
2992
+ if (unref(pluginSource) !== "explicit") _push(`<span class="ws-hint" data-v-4b0c24f2${_scopeId}>${ssrInterpolate(unref(t)("channelSessionList.k1plugsrc046"))}</span>`);
2962
2993
  else _push(`<!---->`);
2963
2994
  _push(`</div>`);
2964
- } else _push(`<span class="ws-hint" data-v-749e05c3${_scopeId}>—</span>`);
2995
+ } else _push(`<span class="ws-hint" data-v-4b0c24f2${_scopeId}>—</span>`);
2965
2996
  } else return [unref(pluginRows).length ? (openBlock(), createBlock("div", {
2966
2997
  key: 0,
2967
2998
  class: "ch-plugin-list"
@@ -2974,7 +3005,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
2974
3005
  p.builtin ? (openBlock(), createBlock("span", {
2975
3006
  key: 0,
2976
3007
  class: "ws-hint"
2977
- }, "内置")) : createCommentVNode("", true),
3008
+ }, toDisplayString(_ctx.$t("channelSessionList.builtinTag")), 1)) : createCommentVNode("", true),
2978
3009
  p.description ? (openBlock(), createBlock("span", {
2979
3010
  key: 1,
2980
3011
  class: "ws-hint ch-plugin-desc"
@@ -3007,12 +3038,12 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
3007
3038
  onClick: openSaveTemplate
3008
3039
  }, {
3009
3040
  default: withCtx((_, _push, _parent, _scopeId) => {
3010
- if (_push) _push(`<span class="i-tabler-template" data-v-749e05c3${_scopeId}></span> ${ssrInterpolate(_ctx.$t("channelSessionList.k6kpql010"))}`);
3041
+ if (_push) _push(`<span class="i-tabler-template" data-v-4b0c24f2${_scopeId}></span> ${ssrInterpolate(_ctx.$t("channelSessionList.k6kpql010"))}`);
3011
3042
  else return [createVNode("span", { class: "i-tabler-template" }), createTextVNode(" " + toDisplayString(_ctx.$t("channelSessionList.k6kpql010")), 1)];
3012
3043
  }),
3013
3044
  _: 1
3014
3045
  }, _parent, _scopeId));
3015
- _push(`<span class="ws-hint" data-v-749e05c3${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.k1x6kznr021"))}</span>`);
3046
+ _push(`<span class="ws-hint" data-v-4b0c24f2${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.k1x6kznr021"))}</span>`);
3016
3047
  } else return [createVNode(_component_a_button, {
3017
3048
  size: "small",
3018
3049
  onClick: openSaveTemplate
@@ -3056,7 +3087,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
3056
3087
  })]),
3057
3088
  _: 1
3058
3089
  }, 8, ["label"]),
3059
- createVNode(_component_a_form_item, { label: "默认模型(可选;留空用各 Harness 默认)" }, {
3090
+ createVNode(_component_a_form_item, { label: _ctx.$t("channelSessionList.llmDefaultLabel") }, {
3060
3091
  default: withCtx(() => [createVNode(_component_a_space, null, {
3061
3092
  default: withCtx(() => [
3062
3093
  createVNode(_component_a_switch, {
@@ -3104,7 +3135,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
3104
3135
  value: unref(llmForm).provider,
3105
3136
  "onUpdate:value": ($event) => unref(llmForm).provider = $event,
3106
3137
  style: { "width": "170px" },
3107
- placeholder: unref(llmLoading) ? "目录加载中…" : "provider",
3138
+ placeholder: unref(llmLoading) ? _ctx.$t("channelSessionList.catalogLoading") : "provider",
3108
3139
  options: unref(llmProviderOptions),
3109
3140
  disabled: !unref(llmForm).enabled || unref(llmLoading),
3110
3141
  "show-search": "",
@@ -3136,13 +3167,14 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
3136
3167
  value: unref(llmForm).effort,
3137
3168
  "onUpdate:value": ($event) => unref(llmForm).effort = $event,
3138
3169
  style: { "width": "130px" },
3139
- placeholder: "effort(可选)",
3170
+ placeholder: _ctx.$t("channelSessionList.effortPh"),
3140
3171
  options: unref(llmEffortOptions),
3141
3172
  disabled: !unref(llmForm).enabled || !unref(llmForm).model,
3142
3173
  "allow-clear": ""
3143
3174
  }, null, 8, [
3144
3175
  "value",
3145
3176
  "onUpdate:value",
3177
+ "placeholder",
3146
3178
  "options",
3147
3179
  "disabled"
3148
3180
  ])) : unref(llmEffortMode) === "freetext" ? (openBlock(), createBlock(_component_a_input, {
@@ -3150,19 +3182,20 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
3150
3182
  value: unref(llmForm).effort,
3151
3183
  "onUpdate:value": ($event) => unref(llmForm).effort = $event,
3152
3184
  style: { "width": "130px" },
3153
- placeholder: "variant(可选)",
3185
+ placeholder: _ctx.$t("channelSessionList.variantPh"),
3154
3186
  disabled: !unref(llmForm).enabled || !unref(llmForm).model,
3155
3187
  "allow-clear": ""
3156
3188
  }, null, 8, [
3157
3189
  "value",
3158
3190
  "onUpdate:value",
3191
+ "placeholder",
3159
3192
  "disabled"
3160
3193
  ])) : createCommentVNode("", true)
3161
3194
  ]),
3162
3195
  _: 1
3163
3196
  })]),
3164
3197
  _: 1
3165
- }),
3198
+ }, 8, ["label"]),
3166
3199
  createVNode(_component_a_form_item, { label: unref(t)("channelSessionList.k1pluglbl045") }, {
3167
3200
  default: withCtx(() => [unref(pluginRows).length ? (openBlock(), createBlock("div", {
3168
3201
  key: 0,
@@ -3176,7 +3209,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
3176
3209
  p.builtin ? (openBlock(), createBlock("span", {
3177
3210
  key: 0,
3178
3211
  class: "ws-hint"
3179
- }, "内置")) : createCommentVNode("", true),
3212
+ }, toDisplayString(_ctx.$t("channelSessionList.builtinTag")), 1)) : createCommentVNode("", true),
3180
3213
  p.description ? (openBlock(), createBlock("span", {
3181
3214
  key: 1,
3182
3215
  class: "ws-hint ch-plugin-desc"
@@ -3248,7 +3281,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
3248
3281
  })]),
3249
3282
  _: 1
3250
3283
  }, 8, ["label"]),
3251
- createVNode(_component_a_form_item, { label: "默认模型(可选;留空用各 Harness 默认)" }, {
3284
+ createVNode(_component_a_form_item, { label: _ctx.$t("channelSessionList.llmDefaultLabel") }, {
3252
3285
  default: withCtx(() => [createVNode(_component_a_space, null, {
3253
3286
  default: withCtx(() => [
3254
3287
  createVNode(_component_a_switch, {
@@ -3296,7 +3329,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
3296
3329
  value: unref(llmForm).provider,
3297
3330
  "onUpdate:value": ($event) => unref(llmForm).provider = $event,
3298
3331
  style: { "width": "170px" },
3299
- placeholder: unref(llmLoading) ? "目录加载中…" : "provider",
3332
+ placeholder: unref(llmLoading) ? _ctx.$t("channelSessionList.catalogLoading") : "provider",
3300
3333
  options: unref(llmProviderOptions),
3301
3334
  disabled: !unref(llmForm).enabled || unref(llmLoading),
3302
3335
  "show-search": "",
@@ -3328,13 +3361,14 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
3328
3361
  value: unref(llmForm).effort,
3329
3362
  "onUpdate:value": ($event) => unref(llmForm).effort = $event,
3330
3363
  style: { "width": "130px" },
3331
- placeholder: "effort(可选)",
3364
+ placeholder: _ctx.$t("channelSessionList.effortPh"),
3332
3365
  options: unref(llmEffortOptions),
3333
3366
  disabled: !unref(llmForm).enabled || !unref(llmForm).model,
3334
3367
  "allow-clear": ""
3335
3368
  }, null, 8, [
3336
3369
  "value",
3337
3370
  "onUpdate:value",
3371
+ "placeholder",
3338
3372
  "options",
3339
3373
  "disabled"
3340
3374
  ])) : unref(llmEffortMode) === "freetext" ? (openBlock(), createBlock(_component_a_input, {
@@ -3342,19 +3376,20 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
3342
3376
  value: unref(llmForm).effort,
3343
3377
  "onUpdate:value": ($event) => unref(llmForm).effort = $event,
3344
3378
  style: { "width": "130px" },
3345
- placeholder: "variant(可选)",
3379
+ placeholder: _ctx.$t("channelSessionList.variantPh"),
3346
3380
  disabled: !unref(llmForm).enabled || !unref(llmForm).model,
3347
3381
  "allow-clear": ""
3348
3382
  }, null, 8, [
3349
3383
  "value",
3350
3384
  "onUpdate:value",
3385
+ "placeholder",
3351
3386
  "disabled"
3352
3387
  ])) : createCommentVNode("", true)
3353
3388
  ]),
3354
3389
  _: 1
3355
3390
  })]),
3356
3391
  _: 1
3357
- }),
3392
+ }, 8, ["label"]),
3358
3393
  createVNode(_component_a_form_item, { label: unref(t)("channelSessionList.k1pluglbl045") }, {
3359
3394
  default: withCtx(() => [unref(pluginRows).length ? (openBlock(), createBlock("div", {
3360
3395
  key: 0,
@@ -3368,7 +3403,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
3368
3403
  p.builtin ? (openBlock(), createBlock("span", {
3369
3404
  key: 0,
3370
3405
  class: "ws-hint"
3371
- }, "内置")) : createCommentVNode("", true),
3406
+ }, toDisplayString(_ctx.$t("channelSessionList.builtinTag")), 1)) : createCommentVNode("", true),
3372
3407
  p.description ? (openBlock(), createBlock("span", {
3373
3408
  key: 1,
3374
3409
  class: "ws-hint ch-plugin-desc"
@@ -3413,8 +3448,8 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
3413
3448
  "onUpdate:open": ($event) => isRef(saveTplOpen) ? saveTplOpen.value = $event : null,
3414
3449
  title: _ctx.$t("channelSessionList.k6kpql010"),
3415
3450
  "confirm-loading": unref(saveTplSubmitting),
3416
- "ok-text": "保存模板",
3417
- "cancel-text": "取消",
3451
+ "ok-text": _ctx.$t("channelSessionList.saveTplOk"),
3452
+ "cancel-text": _ctx.$t("common.cancel"),
3418
3453
  onOk: saveAsTemplate
3419
3454
  }, {
3420
3455
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -3497,7 +3532,7 @@ var ChannelSessionList_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
3497
3532
  }, _parent, _scopeId));
3498
3533
  _push(ssrRenderComponent(_component_a_form_item, null, {
3499
3534
  default: withCtx((_, _push, _parent, _scopeId) => {
3500
- if (_push) _push(`<span class="ws-hint" data-v-749e05c3${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.kl9btf7024"))}</span>`);
3535
+ if (_push) _push(`<span class="ws-hint" data-v-4b0c24f2${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.kl9btf7024"))}</span>`);
3501
3536
  else return [createVNode("span", { class: "ws-hint" }, toDisplayString(_ctx.$t("channelSessionList.kl9btf7024")), 1)];
3502
3537
  }),
3503
3538
  _: 1
@@ -3613,7 +3648,7 @@ ChannelSessionList_vue_vue_type_script_setup_true_lang_default.setup = (props, c
3613
3648
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/ChannelSessionList.vue");
3614
3649
  return _sfc_setup$29 ? _sfc_setup$29(props, ctx) : void 0;
3615
3650
  };
3616
- var ChannelSessionList_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ChannelSessionList_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-749e05c3"]]), { __name: "WorkshopChannelSessionList" });
3651
+ var ChannelSessionList_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ChannelSessionList_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-4b0c24f2"]]), { __name: "WorkshopChannelSessionList" });
3617
3652
  //#endregion
3618
3653
  //#region app/components/workshop/LiveAgentBar.vue?vue&type=script&setup=true&lang.ts
3619
3654
  var LiveAgentBar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -3864,17 +3899,17 @@ var ClusterTool_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
3864
3899
  const shown = computed(() => expanded.value ? toolLines.value : toolLines.value.slice(0, MAX$5));
3865
3900
  const hasMore = computed(() => toolLines.value.length > MAX$5);
3866
3901
  return (_ctx, _push, _parent, _attrs) => {
3867
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "tool-cluster" }, _attrs))} data-v-ac0502fc><!--[-->`);
3902
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "tool-cluster" }, _attrs))} data-v-8d0f2345><!--[-->`);
3868
3903
  ssrRenderList(shown.value, (t) => {
3869
- _push(`<div class="${ssrRenderClass([t.meta.kind, "tool-line"])}" data-v-ac0502fc><time class="tool-time aw-mono" data-v-ac0502fc>${ssrInterpolate(t.time)}</time><span class="tool-node" data-v-ac0502fc></span><span class="${ssrRenderClass([t.meta.icon, "tool-icon"])}" data-v-ac0502fc></span><span class="tool-name" data-v-ac0502fc>${ssrInterpolate(t.name)}</span>`);
3870
- if (t.args) _push(`<span class="tool-args"${ssrRenderAttr("title", t.args)} data-v-ac0502fc>${ssrInterpolate(t.args)}</span>`);
3904
+ _push(`<div class="${ssrRenderClass([t.meta.kind, "tool-line"])}" data-v-8d0f2345><time class="tool-time aw-mono" data-v-8d0f2345>${ssrInterpolate(t.time)}</time><span class="tool-node" data-v-8d0f2345></span><span class="${ssrRenderClass([t.meta.icon, "tool-icon"])}" data-v-8d0f2345></span><span class="tool-name" data-v-8d0f2345>${ssrInterpolate(t.name)}</span>`);
3905
+ if (t.args) _push(`<span class="tool-args"${ssrRenderAttr("title", t.args)} data-v-8d0f2345>${ssrInterpolate(t.args)}</span>`);
3871
3906
  else _push(`<!---->`);
3872
- if (t.meta.kind === "host") _push(`<span class="tool-kind" data-v-ac0502fc>harness</span>`);
3907
+ if (t.meta.kind === "host") _push(`<span class="tool-kind" data-v-8d0f2345>harness</span>`);
3873
3908
  else _push(`<!---->`);
3874
3909
  _push(`</div>`);
3875
3910
  });
3876
3911
  _push(`<!--]-->`);
3877
- if (hasMore.value) _push(`<button class="more-btn" data-v-ac0502fc>${ssrInterpolate(expanded.value ? _ctx.$t("clusterTool.k40p82001") : `展开全部 ${toolLines.value.length} 个调用`)}</button>`);
3912
+ if (hasMore.value) _push(`<button class="more-btn" data-v-8d0f2345>${ssrInterpolate(expanded.value ? _ctx.$t("clusterTool.k40p82001") : _ctx.$t("clusterTool.expandAll", { p0: toolLines.value.length }))}</button>`);
3878
3913
  else _push(`<!---->`);
3879
3914
  _push(`</div>`);
3880
3915
  };
@@ -3888,7 +3923,7 @@ ClusterTool_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) =>
3888
3923
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/blocks/ClusterTool.vue");
3889
3924
  return _sfc_setup$25 ? _sfc_setup$25(props, ctx) : void 0;
3890
3925
  };
3891
- var ClusterTool_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterTool_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-ac0502fc"]]), { __name: "WorkshopBlocksClusterTool" });
3926
+ var ClusterTool_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterTool_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-8d0f2345"]]), { __name: "WorkshopBlocksClusterTool" });
3892
3927
  //#endregion
3893
3928
  //#region app/components/workshop/blocks/ClusterStatus.vue?vue&type=script&setup=true&lang.ts
3894
3929
  var ClusterStatus_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -3902,6 +3937,7 @@ var ClusterStatus_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
3902
3937
  * - 点击展开:全部事件的完整文本(限高滚动,等宽字体——多为工具文档/中间输出);
3903
3938
  * - 块追加新事件时折叠预览实时刷新(计数 +N)。
3904
3939
  */
3940
+ const { t } = useI18n();
3905
3941
  const props = __props;
3906
3942
  const lines = computed(() => props.block.events.map((e) => ({
3907
3943
  seq: e.seq,
@@ -3910,20 +3946,20 @@ var ClusterStatus_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
3910
3946
  /** 折叠预览:最新事件首行(截 120 字符) */
3911
3947
  const preview = computed(() => {
3912
3948
  const last = lines.value[lines.value.length - 1];
3913
- if (!last) return "(空)";
3949
+ if (!last) return t("clusterStatus.empty");
3914
3950
  const flat = (last.text.split("\n").find((l) => l.trim().length > 0) ?? "").replace(/\s+/g, " ").trim();
3915
- return flat.length > 120 ? `${flat.slice(0, 120)}…` : flat || "(空)";
3951
+ return flat.length > 120 ? `${flat.slice(0, 120)}…` : flat || t("clusterStatus.empty");
3916
3952
  });
3917
3953
  const expanded = ref(false);
3918
3954
  return (_ctx, _push, _parent, _attrs) => {
3919
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "status-cluster" }, _attrs))} data-v-0a42e8bb><button class="st-toggle"${ssrRenderAttr("aria-expanded", expanded.value)} data-v-0a42e8bb><span class="${ssrRenderClass([{ open: expanded.value }, "chev"])}" data-v-0a42e8bb>▸</span><span class="st-label" data-v-0a42e8bb>${ssrInterpolate(_ctx.$t("clusterStatus.k1fpy8te001"))}</span><span class="st-count" data-v-0a42e8bb>${ssrInterpolate(lines.value.length)}</span>`);
3920
- if (!expanded.value) _push(`<span class="st-preview" data-v-0a42e8bb>${ssrInterpolate(preview.value)}</span>`);
3955
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "status-cluster" }, _attrs))} data-v-dd6205eb><button class="st-toggle"${ssrRenderAttr("aria-expanded", expanded.value)} data-v-dd6205eb><span class="${ssrRenderClass([{ open: expanded.value }, "chev"])}" data-v-dd6205eb>▸</span><span class="st-label" data-v-dd6205eb>${ssrInterpolate(_ctx.$t("clusterStatus.k1fpy8te001"))}</span><span class="st-count" data-v-dd6205eb>${ssrInterpolate(lines.value.length)}</span>`);
3956
+ if (!expanded.value) _push(`<span class="st-preview" data-v-dd6205eb>${ssrInterpolate(preview.value)}</span>`);
3921
3957
  else _push(`<!---->`);
3922
3958
  _push(`</button>`);
3923
3959
  if (expanded.value) {
3924
- _push(`<div class="st-detail" data-v-0a42e8bb><!--[-->`);
3960
+ _push(`<div class="st-detail" data-v-dd6205eb><!--[-->`);
3925
3961
  ssrRenderList(lines.value, (l) => {
3926
- _push(`<div class="st-line" data-v-0a42e8bb><span class="st-mark" data-v-0a42e8bb>·</span><pre class="st-text" data-v-0a42e8bb>${ssrInterpolate(l.text)}</pre></div>`);
3962
+ _push(`<div class="st-line" data-v-dd6205eb><span class="st-mark" data-v-dd6205eb>·</span><pre class="st-text" data-v-dd6205eb>${ssrInterpolate(l.text)}</pre></div>`);
3927
3963
  });
3928
3964
  _push(`<!--]--></div>`);
3929
3965
  } else _push(`<!---->`);
@@ -3939,7 +3975,7 @@ ClusterStatus_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) =
3939
3975
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/blocks/ClusterStatus.vue");
3940
3976
  return _sfc_setup$24 ? _sfc_setup$24(props, ctx) : void 0;
3941
3977
  };
3942
- var ClusterStatus_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterStatus_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-0a42e8bb"]]), { __name: "WorkshopBlocksClusterStatus" });
3978
+ var ClusterStatus_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterStatus_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-dd6205eb"]]), { __name: "WorkshopBlocksClusterStatus" });
3943
3979
  //#endregion
3944
3980
  //#region app/components/workshop/blocks/ClusterLife.vue?vue&type=script&setup=true&lang.ts
3945
3981
  var ClusterLife_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -3974,18 +4010,18 @@ var ClusterLife_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
3974
4010
  return l.currentTaskId.slice(0, 12);
3975
4011
  });
3976
4012
  return (_ctx, _push, _parent, _attrs) => {
3977
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "life-cluster" }, _attrs))} data-v-effa619b>`);
3978
- if (life.value) _push(`<span class="life-dot"${ssrRenderAttr("data-state", life.value.state)} data-v-effa619b></span>`);
4013
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "life-cluster" }, _attrs))} data-v-f7b93a69>`);
4014
+ if (life.value) _push(`<span class="life-dot"${ssrRenderAttr("data-state", life.value.state)} data-v-f7b93a69></span>`);
3979
4015
  else _push(`<!---->`);
3980
4016
  if (life.value) {
3981
- _push(`<div class="life-row" data-v-effa619b><span class="life-state" data-v-effa619b>${ssrInterpolate(life.value.state)}</span>`);
3982
- if (currentTitle.value) _push(`<span class="life-task"${ssrRenderAttr("title", life.value.currentTaskId ?? "")} data-v-effa619b>「${ssrInterpolate(currentTitle.value)}」</span>`);
4017
+ _push(`<div class="life-row" data-v-f7b93a69><span class="life-state" data-v-f7b93a69>${ssrInterpolate(life.value.state)}</span>`);
4018
+ if (currentTitle.value) _push(`<span class="life-task"${ssrRenderAttr("title", life.value.currentTaskId ?? "")} data-v-f7b93a69>「${ssrInterpolate(currentTitle.value)}」</span>`);
3983
4019
  else _push(`<!---->`);
3984
- _push(`<span class="life-meta" data-v-effa619b>${ssrInterpolate(_ctx.$t("clusterLife.k498bf002"))} ${ssrInterpolate(life.value.queued)} · 完成 ${ssrInterpolate(life.value.completed)}</span>`);
3985
- if (life.value.transitions > 1) _push(`<span class="life-count" data-v-effa619b>${ssrInterpolate(life.value.transitions)} ${ssrInterpolate(_ctx.$t("clusterLife.k3pi5z1003"))}</span>`);
4020
+ _push(`<span class="life-meta" data-v-f7b93a69>${ssrInterpolate(_ctx.$t("clusterLife.k498bf002"))} ${ssrInterpolate(life.value.queued)} · ${ssrInterpolate(_ctx.$t("clusterLife.done"))} ${ssrInterpolate(life.value.completed)}</span>`);
4021
+ if (life.value.transitions > 1) _push(`<span class="life-count" data-v-f7b93a69>${ssrInterpolate(life.value.transitions)} ${ssrInterpolate(_ctx.$t("clusterLife.k3pi5z1003"))}</span>`);
3986
4022
  else _push(`<!---->`);
3987
4023
  _push(`</div>`);
3988
- } else _push(`<span class="life-row" data-v-effa619b>${ssrInterpolate(_ctx.$t("clusterLife.k1xthifv001"))}</span>`);
4024
+ } else _push(`<span class="life-row" data-v-f7b93a69>${ssrInterpolate(_ctx.$t("clusterLife.k1xthifv001"))}</span>`);
3989
4025
  _push(`</div>`);
3990
4026
  };
3991
4027
  }
@@ -3998,7 +4034,7 @@ ClusterLife_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) =>
3998
4034
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/blocks/ClusterLife.vue");
3999
4035
  return _sfc_setup$23 ? _sfc_setup$23(props, ctx) : void 0;
4000
4036
  };
4001
- var ClusterLife_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterLife_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-effa619b"]]), { __name: "WorkshopBlocksClusterLife" });
4037
+ var ClusterLife_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterLife_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-f7b93a69"]]), { __name: "WorkshopBlocksClusterLife" });
4002
4038
  //#endregion
4003
4039
  //#region app/components/workshop/blocks/ClusterRoute.vue?vue&type=script&setup=true&lang.ts
4004
4040
  var MAX$4 = 4;
@@ -4288,7 +4324,7 @@ var ArtifactCard_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
4288
4324
  };
4289
4325
  return (_ctx, _push, _parent, _attrs) => {
4290
4326
  const _component_a_button = button_default;
4291
- _push(`<div${ssrRenderAttrs(mergeProps({ class: ["artifact-card", { deliverable: unref(isDeliverable) }] }, _attrs))} data-v-1699711f><div class="artifact-head" data-v-1699711f><span class="tag" data-v-1699711f><span class="${ssrRenderClass(unref(artifactIcon))}" data-v-1699711f></span></span><span class="name" data-v-1699711f>${ssrInterpolate(__props.artifact.name ?? "artifact")}</span>`);
4327
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: ["artifact-card", { deliverable: unref(isDeliverable) }] }, _attrs))} data-v-64e0e27f><div class="artifact-head" data-v-64e0e27f><span class="tag" data-v-64e0e27f><span class="${ssrRenderClass(unref(artifactIcon))}" data-v-64e0e27f></span></span><span class="name" data-v-64e0e27f>${ssrInterpolate(__props.artifact.name ?? "artifact")}</span>`);
4292
4328
  _push(ssrRenderComponent(_component_a_button, {
4293
4329
  size: "small",
4294
4330
  type: "text",
@@ -4313,7 +4349,7 @@ var ArtifactCard_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
4313
4349
  }),
4314
4350
  _: 1
4315
4351
  }, _parent));
4316
- _push(`</div><pre class="${ssrRenderClass([{ json: unref(isJson) }, "artifact-body"])}" data-v-1699711f>${ssrInterpolate(unref(shortText) || "(空)")}</pre></div>`);
4352
+ _push(`</div><pre class="${ssrRenderClass([{ json: unref(isJson) }, "artifact-body"])}" data-v-64e0e27f>${ssrInterpolate(unref(shortText) || _ctx.$t("artifactCard.empty"))}</pre></div>`);
4317
4353
  };
4318
4354
  }
4319
4355
  });
@@ -4325,7 +4361,7 @@ ArtifactCard_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) =>
4325
4361
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/ArtifactCard.vue");
4326
4362
  return _sfc_setup$20 ? _sfc_setup$20(props, ctx) : void 0;
4327
4363
  };
4328
- var ArtifactCard_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ArtifactCard_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-1699711f"]]), { __name: "WorkshopArtifactCard" });
4364
+ var ArtifactCard_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ArtifactCard_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-64e0e27f"]]), { __name: "WorkshopArtifactCard" });
4329
4365
  //#endregion
4330
4366
  //#region app/components/workshop/blocks/ClusterArtifact.vue?vue&type=script&setup=true&lang.ts
4331
4367
  var ClusterArtifact_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -4343,8 +4379,8 @@ var ClusterArtifact_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
4343
4379
  const expanded = ref(props.block.dupStream);
4344
4380
  return (_ctx, _push, _parent, _attrs) => {
4345
4381
  const _component_workshop_artifact_card = ArtifactCard_default;
4346
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "artifact-cluster" }, _attrs))} data-v-8e7bf1b1>`);
4347
- if (__props.block.dupStream) _push(`<div class="dup-note" data-v-8e7bf1b1><span class="i-tabler-copy" data-v-8e7bf1b1></span><span data-v-8e7bf1b1>${ssrInterpolate(_ctx.$t("clusterArtifact.kyh87lw001"))}</span><button class="mini-btn" data-v-8e7bf1b1>${ssrInterpolate(expanded.value ? _ctx.$t("clusterArtifact.k49les002") : "查看")}</button></div>`);
4382
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "artifact-cluster" }, _attrs))} data-v-305e2e30>`);
4383
+ if (__props.block.dupStream) _push(`<div class="dup-note" data-v-305e2e30><span class="i-tabler-copy" data-v-305e2e30></span><span data-v-305e2e30>${ssrInterpolate(_ctx.$t("clusterArtifact.kyh87lw001"))}</span><button class="mini-btn" data-v-305e2e30>${ssrInterpolate(expanded.value ? _ctx.$t("clusterArtifact.k49les002") : _ctx.$t("clusterArtifact.view"))}</button></div>`);
4348
4384
  else _push(`<!---->`);
4349
4385
  if (showBody.value || expanded.value) {
4350
4386
  _push(`<!--[-->`);
@@ -4368,7 +4404,7 @@ ClusterArtifact_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx)
4368
4404
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/blocks/ClusterArtifact.vue");
4369
4405
  return _sfc_setup$19 ? _sfc_setup$19(props, ctx) : void 0;
4370
4406
  };
4371
- var ClusterArtifact_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterArtifact_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-8e7bf1b1"]]), { __name: "WorkshopBlocksClusterArtifact" });
4407
+ var ClusterArtifact_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterArtifact_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-305e2e30"]]), { __name: "WorkshopBlocksClusterArtifact" });
4372
4408
  //#endregion
4373
4409
  //#region app/components/workshop/blocks/ClusterMember.vue?vue&type=script&setup=true&lang.ts
4374
4410
  var MAX$3 = 8;
@@ -4380,21 +4416,22 @@ var ClusterMember_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
4380
4416
  /**
4381
4417
  * 团队成员变更行 — 每行独立(added/updated/removed 语义由 render 端解读)。
4382
4418
  */
4419
+ const { t } = useI18n();
4383
4420
  const props = __props;
4384
4421
  const entities = useEntitiesStore();
4385
4422
  const cid = computed(() => props.block.events[0]?.channelId ?? "");
4386
4423
  const lines = computed(() => props.block.events.map((e) => {
4387
4424
  const p = e.payload;
4388
- const who = p.by === "user" ? "用户" : `lead ${entities.agentName(cid.value, p.by.replace(/^lead:/, ""))}`;
4425
+ const who = p.by === "user" ? t("clusterMember.byUser") : `lead ${entities.agentName(cid.value, p.by.replace(/^lead:/, ""))}`;
4389
4426
  const member = `${p.name}(${p.role}/${p.harness})`;
4390
4427
  const verbs = {
4391
- added: `新增成员 ${member}`,
4392
- updated: p.enabled === 0 ? `禁用成员 ${member}` : `更新成员 ${member}`,
4393
- removed: `移除成员 ${member}`
4428
+ added: t("clusterMember.vAdded", { p0: member }),
4429
+ updated: p.enabled === 0 ? t("clusterMember.vDisabled", { p0: member }) : t("clusterMember.vUpdated", { p0: member }),
4430
+ removed: t("clusterMember.vRemoved", { p0: member })
4394
4431
  };
4395
4432
  return {
4396
4433
  seq: e.seq,
4397
- text: `${who}${verbs[p.op]}${p.reason ? `,理由:${p.reason}` : ""}`,
4434
+ text: `${who}${verbs[p.op]}${p.reason ? t("clusterMember.reason", { p0: p.reason }) : ""}`,
4398
4435
  op: p.op
4399
4436
  };
4400
4437
  }));
@@ -4402,12 +4439,12 @@ var ClusterMember_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
4402
4439
  const shown = computed(() => expanded.value ? lines.value : lines.value.slice(0, MAX$3));
4403
4440
  const hasMore = computed(() => lines.value.length > MAX$3);
4404
4441
  return (_ctx, _push, _parent, _attrs) => {
4405
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "member-cluster" }, _attrs))} data-v-0647f285><!--[-->`);
4442
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "member-cluster" }, _attrs))} data-v-98712ab3><!--[-->`);
4406
4443
  ssrRenderList(shown.value, (m) => {
4407
- _push(`<div class="member-line"${ssrRenderAttr("data-op", m.op)} data-v-0647f285><span class="i-tabler-users" data-v-0647f285></span><span class="line-text" data-v-0647f285>${ssrInterpolate(m.text)}</span></div>`);
4444
+ _push(`<div class="member-line"${ssrRenderAttr("data-op", m.op)} data-v-98712ab3><span class="i-tabler-users" data-v-98712ab3></span><span class="line-text" data-v-98712ab3>${ssrInterpolate(m.text)}</span></div>`);
4408
4445
  });
4409
4446
  _push(`<!--]-->`);
4410
- if (hasMore.value) _push(`<button class="more-btn" data-v-0647f285>${ssrInterpolate(expanded.value ? _ctx.$t("clusterMember.k40p82001") : `全部 ${lines.value.length} 条`)}</button>`);
4447
+ if (hasMore.value) _push(`<button class="more-btn" data-v-98712ab3>${ssrInterpolate(expanded.value ? _ctx.$t("clusterMember.k40p82001") : _ctx.$t("clusterMember.showAll", { p0: lines.value.length }))}</button>`);
4411
4448
  else _push(`<!---->`);
4412
4449
  _push(`</div>`);
4413
4450
  };
@@ -4421,7 +4458,7 @@ ClusterMember_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) =
4421
4458
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/blocks/ClusterMember.vue");
4422
4459
  return _sfc_setup$18 ? _sfc_setup$18(props, ctx) : void 0;
4423
4460
  };
4424
- var ClusterMember_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterMember_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-0647f285"]]), { __name: "WorkshopBlocksClusterMember" });
4461
+ var ClusterMember_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterMember_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-98712ab3"]]), { __name: "WorkshopBlocksClusterMember" });
4425
4462
  //#endregion
4426
4463
  //#region app/components/workshop/blocks/ClusterMemory.vue?vue&type=script&setup=true&lang.ts
4427
4464
  var MAX$2 = 8;
@@ -4443,12 +4480,12 @@ var ClusterMemory_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
4443
4480
  const shown = computed(() => expanded.value ? lines.value : lines.value.slice(0, MAX$2));
4444
4481
  const hasMore = computed(() => lines.value.length > MAX$2);
4445
4482
  return (_ctx, _push, _parent, _attrs) => {
4446
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "memory-cluster" }, _attrs))} data-v-9ba9f01b><!--[-->`);
4483
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "memory-cluster" }, _attrs))} data-v-455b8e4b><!--[-->`);
4447
4484
  ssrRenderList(shown.value, (m) => {
4448
- _push(`<div class="memory-line" data-v-9ba9f01b><span class="i-tabler-bookmark" data-v-9ba9f01b></span><span class="mem-scope"${ssrRenderAttr("data-scope", m.scope)} data-v-9ba9f01b>${ssrInterpolate(m.scope)}</span><span class="mem-title" data-v-9ba9f01b>${ssrInterpolate(m.title)}</span></div>`);
4485
+ _push(`<div class="memory-line" data-v-455b8e4b><span class="i-tabler-bookmark" data-v-455b8e4b></span><span class="mem-scope"${ssrRenderAttr("data-scope", m.scope)} data-v-455b8e4b>${ssrInterpolate(m.scope)}</span><span class="mem-title" data-v-455b8e4b>${ssrInterpolate(m.title)}</span></div>`);
4449
4486
  });
4450
4487
  _push(`<!--]-->`);
4451
- if (hasMore.value) _push(`<button class="more-btn" data-v-9ba9f01b>${ssrInterpolate(expanded.value ? _ctx.$t("clusterMemory.k40p82001") : `全部 ${lines.value.length} 条`)}</button>`);
4488
+ if (hasMore.value) _push(`<button class="more-btn" data-v-455b8e4b>${ssrInterpolate(expanded.value ? _ctx.$t("clusterMemory.k40p82001") : _ctx.$t("clusterMemory.showAll", { p0: lines.value.length }))}</button>`);
4452
4489
  else _push(`<!---->`);
4453
4490
  _push(`</div>`);
4454
4491
  };
@@ -4462,7 +4499,7 @@ ClusterMemory_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) =
4462
4499
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/blocks/ClusterMemory.vue");
4463
4500
  return _sfc_setup$17 ? _sfc_setup$17(props, ctx) : void 0;
4464
4501
  };
4465
- var ClusterMemory_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterMemory_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-9ba9f01b"]]), { __name: "WorkshopBlocksClusterMemory" });
4502
+ var ClusterMemory_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterMemory_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-455b8e4b"]]), { __name: "WorkshopBlocksClusterMemory" });
4466
4503
  //#endregion
4467
4504
  //#region app/components/workshop/blocks/ClusterError.vue?vue&type=script&setup=true&lang.ts
4468
4505
  var MAX$1 = 3;
@@ -4484,15 +4521,15 @@ var ClusterError_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
4484
4521
  const shown = computed(() => expanded.value ? lines.value : lines.value.slice(0, MAX$1));
4485
4522
  const hasMore = computed(() => lines.value.length > MAX$1);
4486
4523
  return (_ctx, _push, _parent, _attrs) => {
4487
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "error-cluster" }, _attrs))} data-v-25c85ac6><!--[-->`);
4524
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "error-cluster" }, _attrs))} data-v-13861835><!--[-->`);
4488
4525
  ssrRenderList(shown.value, (er) => {
4489
- _push(`<div class="error-line" data-v-25c85ac6><span class="i-tabler-alert-triangle" data-v-25c85ac6></span>`);
4490
- if (er.code) _push(`<span class="error-code" data-v-25c85ac6>${ssrInterpolate(er.code)}</span>`);
4526
+ _push(`<div class="error-line" data-v-13861835><span class="i-tabler-alert-triangle" data-v-13861835></span>`);
4527
+ if (er.code) _push(`<span class="error-code" data-v-13861835>${ssrInterpolate(er.code)}</span>`);
4491
4528
  else _push(`<!---->`);
4492
- _push(`<span class="error-text" data-v-25c85ac6>${ssrInterpolate(er.text)}</span></div>`);
4529
+ _push(`<span class="error-text" data-v-13861835>${ssrInterpolate(er.text)}</span></div>`);
4493
4530
  });
4494
4531
  _push(`<!--]-->`);
4495
- if (hasMore.value) _push(`<button class="more-btn" data-v-25c85ac6>${ssrInterpolate(expanded.value ? _ctx.$t("clusterError.k40p82001") : `全部 ${lines.value.length} 条`)}</button>`);
4532
+ if (hasMore.value) _push(`<button class="more-btn" data-v-13861835>${ssrInterpolate(expanded.value ? _ctx.$t("clusterError.k40p82001") : _ctx.$t("clusterError.showAll", { p0: lines.value.length }))}</button>`);
4496
4533
  else _push(`<!---->`);
4497
4534
  _push(`</div>`);
4498
4535
  };
@@ -4506,7 +4543,7 @@ ClusterError_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) =>
4506
4543
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/blocks/ClusterError.vue");
4507
4544
  return _sfc_setup$16 ? _sfc_setup$16(props, ctx) : void 0;
4508
4545
  };
4509
- var ClusterError_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterError_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-25c85ac6"]]), { __name: "WorkshopBlocksClusterError" });
4546
+ var ClusterError_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterError_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-13861835"]]), { __name: "WorkshopBlocksClusterError" });
4510
4547
  //#endregion
4511
4548
  //#region app/components/workshop/blocks/ClusterOther.vue?vue&type=script&setup=true&lang.ts
4512
4549
  var MAX = 6;
@@ -4527,12 +4564,12 @@ var ClusterOther_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
4527
4564
  const shown = computed(() => expanded.value ? lines.value : lines.value.slice(0, MAX));
4528
4565
  const hasMore = computed(() => lines.value.length > MAX);
4529
4566
  return (_ctx, _push, _parent, _attrs) => {
4530
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "other-cluster" }, _attrs))} data-v-5f033e18><!--[-->`);
4567
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "other-cluster" }, _attrs))} data-v-ca60ab9f><!--[-->`);
4531
4568
  ssrRenderList(shown.value, (l) => {
4532
- _push(`<div class="other-row" data-v-5f033e18><span class="i-tabler-dots" data-v-5f033e18></span><span class="other-type" data-v-5f033e18>${ssrInterpolate(l.type)}</span></div>`);
4569
+ _push(`<div class="other-row" data-v-ca60ab9f><span class="i-tabler-dots" data-v-ca60ab9f></span><span class="other-type" data-v-ca60ab9f>${ssrInterpolate(l.type)}</span></div>`);
4533
4570
  });
4534
4571
  _push(`<!--]-->`);
4535
- if (hasMore.value) _push(`<button class="more-btn" data-v-5f033e18>${ssrInterpolate(expanded.value ? _ctx.$t("clusterOther.k40p82001") : `全部 ${lines.value.length} 条`)}</button>`);
4572
+ if (hasMore.value) _push(`<button class="more-btn" data-v-ca60ab9f>${ssrInterpolate(expanded.value ? _ctx.$t("clusterOther.k40p82001") : _ctx.$t("clusterOther.showAll", { p0: lines.value.length }))}</button>`);
4536
4573
  else _push(`<!---->`);
4537
4574
  _push(`</div>`);
4538
4575
  };
@@ -4546,7 +4583,7 @@ ClusterOther_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) =>
4546
4583
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/blocks/ClusterOther.vue");
4547
4584
  return _sfc_setup$15 ? _sfc_setup$15(props, ctx) : void 0;
4548
4585
  };
4549
- var ClusterOther_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterOther_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-5f033e18"]]), { __name: "WorkshopBlocksClusterOther" });
4586
+ var ClusterOther_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterOther_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-ca60ab9f"]]), { __name: "WorkshopBlocksClusterOther" });
4550
4587
  //#endregion
4551
4588
  //#region app/components/workshop/EventBlock.vue?vue&type=script&setup=true&lang.ts
4552
4589
  var EventBlock_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -4660,33 +4697,33 @@ var EventBlock_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
4660
4697
  "data-seq": firstSeq.value,
4661
4698
  "data-events": __props.block.events.length,
4662
4699
  "data-folded": __props.block.folded
4663
- }, _attrs))} data-v-e836bc26><button type="button" class="${ssrRenderClass([{
4700
+ }, _attrs))} data-v-3da6dfee><button type="button" class="${ssrRenderClass([{
4664
4701
  "is-agent": !!__props.block.agentId,
4665
4702
  "is-human": !!humanLabel.value,
4666
4703
  "clickable": !!__props.block.agentId
4667
- }, "agent-avatar"])}"${ssrRenderAttr("title", humanLabel.value ?? `${agentLabel.value}${roleLabel.value ? ` · ${roleLabel.value}` : ""}`)} style="${ssrRenderStyle(avColor.value ? { "--av": avColor.value } : void 0)}" data-v-e836bc26>`);
4668
- if (humanLabel.value) _push(`<span class="i-tabler-user system-icon" data-v-e836bc26></span>`);
4669
- else if (!__props.block.agentId) _push(`<span class="i-tabler-cpu system-icon" data-v-e836bc26></span>`);
4704
+ }, "agent-avatar"])}"${ssrRenderAttr("title", humanLabel.value ?? `${agentLabel.value}${roleLabel.value ? ` · ${roleLabel.value}` : ""}`)} style="${ssrRenderStyle(avColor.value ? { "--av": avColor.value } : void 0)}" data-v-3da6dfee>`);
4705
+ if (humanLabel.value) _push(`<span class="i-tabler-user system-icon" data-v-3da6dfee></span>`);
4706
+ else if (!__props.block.agentId) _push(`<span class="i-tabler-cpu system-icon" data-v-3da6dfee></span>`);
4670
4707
  else _push(`<!--[-->${ssrInterpolate(agentInitial.value)}<!--]-->`);
4671
- if (__props.block.agentId && agentState.value) _push(`<span class="${ssrRenderClass([agentState.value, "av-status"])}"${ssrRenderAttr("title", agentState.value === "busy" ? "运行中" : agentState.value === "stopped" ? "已停止" : "空闲")} data-v-e836bc26></span>`);
4708
+ if (__props.block.agentId && agentState.value) _push(`<span class="${ssrRenderClass([agentState.value, "av-status"])}"${ssrRenderAttr("title", agentState.value === "busy" ? _ctx.$t("eventBlock.stBusy") : agentState.value === "stopped" ? _ctx.$t("eventBlock.stStopped") : _ctx.$t("eventBlock.stIdle"))} data-v-3da6dfee></span>`);
4672
4709
  else _push(`<!---->`);
4673
- _push(`</button><div class="eb-main" data-v-e836bc26><header class="block-head" style="${ssrRenderStyle(!__props.compact ? null : { display: "none" })}" data-v-e836bc26><span class="agent-name" data-v-e836bc26>${ssrInterpolate(humanLabel.value ?? agentLabel.value)}</span>`);
4674
- if (roleLabel.value) _push(`<span class="role-label" data-v-e836bc26>${ssrInterpolate(roleLabel.value)}</span>`);
4710
+ _push(`</button><div class="eb-main" data-v-3da6dfee><header class="block-head" style="${ssrRenderStyle(!__props.compact ? null : { display: "none" })}" data-v-3da6dfee><span class="agent-name" data-v-3da6dfee>${ssrInterpolate(humanLabel.value ?? agentLabel.value)}</span>`);
4711
+ if (roleLabel.value) _push(`<span class="role-label" data-v-3da6dfee>${ssrInterpolate(roleLabel.value)}</span>`);
4675
4712
  else _push(`<!---->`);
4676
- if (tier.value === "attention") _push(`<span class="tier-attention"${ssrRenderAttr("title", _ctx.$t("eventBlock.kc918hn001"))} data-v-e836bc26><span class="i-tabler-alert-circle" data-v-e836bc26></span>${ssrInterpolate(_ctx.$t("eventBlock.k3wmcv4004"))}</span>`);
4713
+ if (tier.value === "attention") _push(`<span class="tier-attention"${ssrRenderAttr("title", _ctx.$t("eventBlock.kc918hn001"))} data-v-3da6dfee><span class="i-tabler-alert-circle" data-v-3da6dfee></span>${ssrInterpolate(_ctx.$t("eventBlock.k3wmcv4004"))}</span>`);
4677
4714
  else _push(`<!---->`);
4678
- _push(`<span class="head-right" data-v-e836bc26>`);
4679
- if (runningNow.value) _push(`<span class="running-chip" data-v-e836bc26><span class="running-dot" data-v-e836bc26></span>${ssrInterpolate(_ctx.$t("eventBlock.k3vp67i005"))}</span>`);
4715
+ _push(`<span class="head-right" data-v-3da6dfee>`);
4716
+ if (runningNow.value) _push(`<span class="running-chip" data-v-3da6dfee><span class="running-dot" data-v-3da6dfee></span>${ssrInterpolate(_ctx.$t("eventBlock.k3vp67i005"))}</span>`);
4680
4717
  else _push(`<!---->`);
4681
- if (__props.block.folded > 0) _push(`<span class="folded"${ssrRenderAttr("title", _ctx.$t("eventBlock.kcugdph002"))} data-v-e836bc26>${ssrInterpolate(_ctx.$t("eventBlock.k3xk4t006"))} ${ssrInterpolate(__props.block.folded)}</span>`);
4718
+ if (__props.block.folded > 0) _push(`<span class="folded"${ssrRenderAttr("title", _ctx.$t("eventBlock.kcugdph002"))} data-v-3da6dfee>${ssrInterpolate(_ctx.$t("eventBlock.k3xk4t006"))} ${ssrInterpolate(__props.block.folded)}</span>`);
4682
4719
  else _push(`<!---->`);
4683
- if (__props.block.events.length > 1) _push(`<span class="merged" data-v-e836bc26>×${ssrInterpolate(__props.block.events.length)}</span>`);
4720
+ if (__props.block.events.length > 1) _push(`<span class="merged" data-v-3da6dfee>×${ssrInterpolate(__props.block.events.length)}</span>`);
4684
4721
  else _push(`<!---->`);
4685
- _push(`<span class="kind-chip" data-v-e836bc26>${ssrInterpolate(meta.value.label)}</span><span class="time" data-v-e836bc26>${ssrInterpolate(time.value)}</span></span>`);
4686
- if (toolbarText.value) _push(`<span class="eb-toolbar" data-v-e836bc26><button type="button" class="eb-tool"${ssrRenderAttr("title", unref(copied) ? "已复制" : "复制全文")} data-v-e836bc26><span class="${ssrRenderClass(unref(copied) ? "i-tabler-check" : "i-tabler-copy")}" data-v-e836bc26></span></button><button type="button" class="eb-tool"${ssrRenderAttr("title", _ctx.$t("eventBlock.kknq700003"))} data-v-e836bc26><span class="i-tabler-quote" data-v-e836bc26></span></button></span>`);
4722
+ _push(`<span class="kind-chip" data-v-3da6dfee>${ssrInterpolate(meta.value.label)}</span><span class="time" data-v-3da6dfee>${ssrInterpolate(time.value)}</span></span>`);
4723
+ if (toolbarText.value) _push(`<span class="eb-toolbar" data-v-3da6dfee><button type="button" class="eb-tool"${ssrRenderAttr("title", unref(copied) ? _ctx.$t("eventBlock.copied") : _ctx.$t("eventBlock.copyAll"))} data-v-3da6dfee><span class="${ssrRenderClass(unref(copied) ? "i-tabler-check" : "i-tabler-copy")}" data-v-3da6dfee></span></button><button type="button" class="eb-tool"${ssrRenderAttr("title", _ctx.$t("eventBlock.kknq700003"))} data-v-3da6dfee><span class="i-tabler-quote" data-v-3da6dfee></span></button></span>`);
4687
4724
  else _push(`<!---->`);
4688
4725
  _push(`</header>`);
4689
- if (__props.compact) _push(`<span class="ghost-time" data-v-e836bc26>${ssrInterpolate(time.value.slice(0, 5))}</span>`);
4726
+ if (__props.compact) _push(`<span class="ghost-time" data-v-3da6dfee>${ssrInterpolate(time.value.slice(0, 5))}</span>`);
4690
4727
  else _push(`<!---->`);
4691
4728
  ssrRenderVNode(_push, createVNode(resolveDynamicComponent(body.value), {
4692
4729
  block: __props.block,
@@ -4704,7 +4741,7 @@ EventBlock_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
4704
4741
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/EventBlock.vue");
4705
4742
  return _sfc_setup$14 ? _sfc_setup$14(props, ctx) : void 0;
4706
4743
  };
4707
- var EventBlock_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(EventBlock_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-e836bc26"]]), { __name: "WorkshopEventBlock" });
4744
+ var EventBlock_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(EventBlock_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-3da6dfee"]]), { __name: "WorkshopEventBlock" });
4708
4745
  //#endregion
4709
4746
  //#region app/composables/workshop/useClusteredBlocks.ts
4710
4747
  /**
@@ -4981,42 +5018,42 @@ var TranscriptTimeline_vue_vue_type_script_setup_true_lang_default = /*@__PURE__
4981
5018
  return (_ctx, _push, _parent, _attrs) => {
4982
5019
  const _component_a_segmented = segmented_default;
4983
5020
  const _component_workshop_event_block = EventBlock_default;
4984
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "transcript" }, _attrs))} data-v-2b1e0a0e><div class="filter-bar" data-v-2b1e0a0e>`);
5021
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "transcript" }, _attrs))} data-v-17c5d971><div class="filter-bar" data-v-17c5d971>`);
4985
5022
  _push(ssrRenderComponent(_component_a_segmented, {
4986
5023
  value: unref(filter),
4987
5024
  "onUpdate:value": ($event) => isRef(filter) ? filter.value = $event : null,
4988
5025
  size: "small",
4989
5026
  options: filterOptions
4990
5027
  }, null, _parent));
4991
- _push(`<span class="count" data-v-2b1e0a0e>${ssrInterpolate(unref(totalEvents))} ${ssrInterpolate(_ctx.$t("transcriptTimeline.k1atjpx1005"))} ${ssrInterpolate(unref(blocks).length)} ${ssrInterpolate(_ctx.$t("transcriptTimeline.k4a9o007"))}</span><span class="sync-chip"${ssrRenderAttr("data-state", unref(syncing) ? "syncing" : unref(conn).state)}${ssrRenderAttr("title", unref(syncing) ? "连接中断,重连后将自动对齐缺失事件" : _ctx.$t("transcriptTimeline.kglov3b025", { p0: unref(lastDataAgo) || "无" }))} data-v-2b1e0a0e>`);
4992
- if (unref(syncing)) _push(`<span class="sync-pulse" data-v-2b1e0a0e></span>`);
4993
- else if (unref(conn).state === "open") _push(`<span class="i-tabler-point-filled sync-dot" data-v-2b1e0a0e></span>`);
5028
+ _push(`<span class="count" data-v-17c5d971>${ssrInterpolate(unref(totalEvents))} ${ssrInterpolate(_ctx.$t("transcriptTimeline.k1atjpx1005"))} ${ssrInterpolate(unref(blocks).length)} ${ssrInterpolate(_ctx.$t("transcriptTimeline.k4a9o007"))}</span><span class="sync-chip"${ssrRenderAttr("data-state", unref(syncing) ? "syncing" : unref(conn).state)}${ssrRenderAttr("title", unref(syncing) ? _ctx.$t("transcriptTimeline.syncLag") : _ctx.$t("transcriptTimeline.kglov3b025", { p0: unref(lastDataAgo) || _ctx.$t("transcriptTimeline.none") }))} data-v-17c5d971>`);
5029
+ if (unref(syncing)) _push(`<span class="sync-pulse" data-v-17c5d971></span>`);
5030
+ else if (unref(conn).state === "open") _push(`<span class="i-tabler-point-filled sync-dot" data-v-17c5d971></span>`);
4994
5031
  else _push(`<!---->`);
4995
- _push(` ${ssrInterpolate(unref(syncing) ? _ctx.$t("transcriptTimeline.k3lmtk3008") : unref(conn).state === "open" ? unref(lastDataAgo) || _ctx.$t("transcriptTimeline.k3y2p8020") : _ctx.$t("transcriptTimeline.k44c2n024"))}</span></div><div class="scroller" data-v-2b1e0a0e>`);
4996
- if (!unref(stickBottom) && !unref(scrollingDown)) _push(`<button class="jump-latest"${ssrRenderAttr("title", _ctx.$t("transcriptTimeline.kqu93z8001"))} data-v-2b1e0a0e><span class="i-tabler-arrow-down" data-v-2b1e0a0e></span> ${ssrInterpolate(_ctx.$t("transcriptTimeline.k40t11002"))}</button>`);
5032
+ _push(` ${ssrInterpolate(unref(syncing) ? _ctx.$t("transcriptTimeline.k3lmtk3008") : unref(conn).state === "open" ? unref(lastDataAgo) || _ctx.$t("transcriptTimeline.k3y2p8020") : _ctx.$t("transcriptTimeline.k44c2n024"))}</span></div><div class="scroller" data-v-17c5d971>`);
5033
+ if (!unref(stickBottom) && !unref(scrollingDown)) _push(`<button class="jump-latest"${ssrRenderAttr("title", _ctx.$t("transcriptTimeline.kqu93z8001"))} data-v-17c5d971><span class="i-tabler-arrow-down" data-v-17c5d971></span> ${ssrInterpolate(_ctx.$t("transcriptTimeline.k40t11002"))}</button>`);
4997
5034
  else _push(`<!---->`);
4998
- _push(`<div class="column" data-v-2b1e0a0e>`);
4999
- if (unref(maybeMore)) _push(`<button class="earlier-btn"${ssrIncludeBooleanAttr(unref(loadingEarlier)) ? " disabled" : ""} data-v-2b1e0a0e>${ssrInterpolate(unref(loadingEarlier) ? _ctx.$t("transcriptTimeline.k1br0ij9009") : _ctx.$t("transcriptTimeline.kywgd38021"))}</button>`);
5035
+ _push(`<div class="column" data-v-17c5d971>`);
5036
+ if (unref(maybeMore)) _push(`<button class="earlier-btn"${ssrIncludeBooleanAttr(unref(loadingEarlier)) ? " disabled" : ""} data-v-17c5d971>${ssrInterpolate(unref(loadingEarlier) ? _ctx.$t("transcriptTimeline.k1br0ij9009") : _ctx.$t("transcriptTimeline.kywgd38021"))}</button>`);
5000
5037
  else _push(`<!---->`);
5001
- if (unref(earlierExhausted) && unref(loadedCount) > 0) _push(`<div class="earlier-done" data-v-2b1e0a0e>${ssrInterpolate(_ctx.$t("transcriptTimeline.k1kbaden003"))}</div>`);
5038
+ if (unref(earlierExhausted) && unref(loadedCount) > 0) _push(`<div class="earlier-done" data-v-17c5d971>${ssrInterpolate(_ctx.$t("transcriptTimeline.k1kbaden003"))}</div>`);
5002
5039
  else _push(`<!---->`);
5003
5040
  if (unref(connecting)) {
5004
- _push(`<div class="skel-stack" data-v-2b1e0a0e><!--[-->`);
5041
+ _push(`<div class="skel-stack" data-v-17c5d971><!--[-->`);
5005
5042
  ssrRenderList(3, (n) => {
5006
- _push(`<div class="skel-row" style="${ssrRenderStyle({ "--d": `${(n - 1) * .12}s` })}" data-v-2b1e0a0e><span class="aw-skel skel-ava" data-v-2b1e0a0e></span><div class="skel-lines" data-v-2b1e0a0e><span class="aw-skel skel-line name" data-v-2b1e0a0e></span><span class="aw-skel skel-line w70" data-v-2b1e0a0e></span><span class="aw-skel skel-line w45" data-v-2b1e0a0e></span></div></div>`);
5043
+ _push(`<div class="skel-row" style="${ssrRenderStyle({ "--d": `${(n - 1) * .12}s` })}" data-v-17c5d971><span class="aw-skel skel-ava" data-v-17c5d971></span><div class="skel-lines" data-v-17c5d971><span class="aw-skel skel-line name" data-v-17c5d971></span><span class="aw-skel skel-line w70" data-v-17c5d971></span><span class="aw-skel skel-line w45" data-v-17c5d971></span></div></div>`);
5007
5044
  });
5008
5045
  _push(`<!--]--></div>`);
5009
5046
  } else if (unref(blocks).length === 0 && unref(totalEvents) === 0) {
5010
- _push(`<div class="empty" data-v-2b1e0a0e>`);
5011
- if (unref(syncing) || unref(conn).state !== "open") _push(`<span class="i-tabler-refresh empty-icon" data-v-2b1e0a0e></span>`);
5012
- else _push(`<span class="i-tabler-message-dots empty-icon" data-v-2b1e0a0e></span>`);
5013
- _push(`<p class="empty-title" data-v-2b1e0a0e>${ssrInterpolate(unref(syncing) || unref(conn).state !== "open" ? _ctx.$t("transcriptTimeline.klnne6o010") : _ctx.$t("transcriptTimeline.k126izdm022"))}</p><p class="empty-hint" data-v-2b1e0a0e>${ssrInterpolate(unref(syncing) || unref(conn).state !== "open" ? _ctx.$t("transcriptTimeline.k1iuqpxj011") : _ctx.$t("transcriptTimeline.kuyjpmi023"))}</p></div>`);
5014
- } else if (unref(blocks).length === 0) _push(`<div class="empty filtered" data-v-2b1e0a0e><span class="i-tabler-filter-off empty-icon" data-v-2b1e0a0e></span><p class="empty-title" data-v-2b1e0a0e>${ssrInterpolate(_ctx.$t("transcriptTimeline.ktuo1zg004"))}</p><p class="empty-hint" data-v-2b1e0a0e> 「${ssrInterpolate(filterOptions.find((o) => o.value === unref(filter))?.label ?? unref(filter))}」${ssrInterpolate(_ctx.$t("transcriptTimeline.kapxgq4006"))}</p></div>`);
5047
+ _push(`<div class="empty" data-v-17c5d971>`);
5048
+ if (unref(syncing) || unref(conn).state !== "open") _push(`<span class="i-tabler-refresh empty-icon" data-v-17c5d971></span>`);
5049
+ else _push(`<span class="i-tabler-message-dots empty-icon" data-v-17c5d971></span>`);
5050
+ _push(`<p class="empty-title" data-v-17c5d971>${ssrInterpolate(unref(syncing) || unref(conn).state !== "open" ? _ctx.$t("transcriptTimeline.klnne6o010") : _ctx.$t("transcriptTimeline.k126izdm022"))}</p><p class="empty-hint" data-v-17c5d971>${ssrInterpolate(unref(syncing) || unref(conn).state !== "open" ? _ctx.$t("transcriptTimeline.k1iuqpxj011") : _ctx.$t("transcriptTimeline.kuyjpmi023"))}</p></div>`);
5051
+ } else if (unref(blocks).length === 0) _push(`<div class="empty filtered" data-v-17c5d971><span class="i-tabler-filter-off empty-icon" data-v-17c5d971></span><p class="empty-title" data-v-17c5d971>${ssrInterpolate(_ctx.$t("transcriptTimeline.ktuo1zg004"))}</p><p class="empty-hint" data-v-17c5d971> 「${ssrInterpolate(filterOptions.find((o) => o.value === unref(filter))?.label ?? unref(filter))}」${ssrInterpolate(_ctx.$t("transcriptTimeline.kapxgq4006"))}</p></div>`);
5015
5052
  else _push(`<!---->`);
5016
5053
  _push(`<!--[-->`);
5017
5054
  ssrRenderList(unref(blocks), (b, i) => {
5018
5055
  _push(`<!--[-->`);
5019
- if (unref(blockDayFlags)[i]?.divider) _push(`<div class="date-divider" data-v-2b1e0a0e><span class="date-divider-label" data-v-2b1e0a0e>${ssrInterpolate(unref(blockDayFlags)[i].divider)}</span></div>`);
5056
+ if (unref(blockDayFlags)[i]?.divider) _push(`<div class="date-divider" data-v-17c5d971><span class="date-divider-label" data-v-17c5d971>${ssrInterpolate(unref(blockDayFlags)[i].divider)}</span></div>`);
5020
5057
  else _push(`<!---->`);
5021
5058
  _push(ssrRenderComponent(_component_workshop_event_block, {
5022
5059
  block: b,
@@ -5038,7 +5075,7 @@ TranscriptTimeline_vue_vue_type_script_setup_true_lang_default.setup = (props, c
5038
5075
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/TranscriptTimeline.vue");
5039
5076
  return _sfc_setup$13 ? _sfc_setup$13(props, ctx) : void 0;
5040
5077
  };
5041
- var TranscriptTimeline_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(TranscriptTimeline_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-2b1e0a0e"]]), { __name: "WorkshopTranscriptTimeline" });
5078
+ var TranscriptTimeline_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(TranscriptTimeline_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-17c5d971"]]), { __name: "WorkshopTranscriptTimeline" });
5042
5079
  //#endregion
5043
5080
  //#region app/components/workshop/lanes/LaneBlocks.vue?vue&type=script&setup=true&lang.ts
5044
5081
  var LaneBlocks_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -5281,7 +5318,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5281
5318
  memberModalOpen.value = false;
5282
5319
  } catch (err) {
5283
5320
  const text = apiErrorMessage(err);
5284
- api$1.error(`模板克隆失败${text.includes("LEAD_EXISTS") ? "(已有 lead,不能再添加 lead)" : `: ${text}`}`);
5321
+ api$1.error(t("agentLanesView.cloneFail", { p0: text.includes("LEAD_EXISTS") ? t("agentLanesView.leadExistsShort") : `: ${text}` }));
5285
5322
  } finally {
5286
5323
  memberSubmitting.value = false;
5287
5324
  }
@@ -5302,7 +5339,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5302
5339
  memberModalOpen.value = false;
5303
5340
  } catch (err) {
5304
5341
  const text = apiErrorMessage(err);
5305
- api$1.error(`编组部署失败${text.includes("LEAD_EXISTS") ? "(channel 已有 lead,编组内 lead 成员冲突;请先移除现有 lead 或选用无 lead 编组)" : `: ${text}`}`);
5342
+ api$1.error(t("agentLanesView.deployFail", { p0: text.includes("LEAD_EXISTS") ? t("agentLanesView.leadExistsChannel") : `: ${text}` }));
5306
5343
  } finally {
5307
5344
  memberSubmitting.value = false;
5308
5345
  }
@@ -5379,7 +5416,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5379
5416
  const _component_a_select = Select;
5380
5417
  const _component_a_space = Space;
5381
5418
  const _component_a_tag = Tag;
5382
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "lanes-wrap" }, _attrs))} data-v-f68d6ffb><div class="toolbar" data-v-f68d6ffb><div class="team-summary" data-v-f68d6ffb><span class="ts-label" data-v-f68d6ffb>${ssrInterpolate(_ctx.$t("agentLanesView.k3y5ja016"))}</span><span class="ts-count" data-v-f68d6ffb>${ssrInterpolate(unref(agents).length)}</span><span class="ts-unit" data-v-f68d6ffb>${ssrInterpolate(_ctx.$t("agentLanesView.k3ll6sa017"))}</span><span class="ts-detail" data-v-f68d6ffb>lead ${ssrInterpolate(unref(agents).filter((a) => a.role === "lead").length)} · worker ${ssrInterpolate(unref(agents).filter((a) => a.role === "worker").length)}</span></div>`);
5419
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "lanes-wrap" }, _attrs))} data-v-eaee1001><div class="toolbar" data-v-eaee1001><div class="team-summary" data-v-eaee1001><span class="ts-label" data-v-eaee1001>${ssrInterpolate(_ctx.$t("agentLanesView.k3y5ja016"))}</span><span class="ts-count" data-v-eaee1001>${ssrInterpolate(unref(agents).length)}</span><span class="ts-unit" data-v-eaee1001>${ssrInterpolate(_ctx.$t("agentLanesView.k3ll6sa017"))}</span><span class="ts-detail" data-v-eaee1001>lead ${ssrInterpolate(unref(agents).filter((a) => a.role === "lead").length)} · worker ${ssrInterpolate(unref(agents).filter((a) => a.role === "worker").length)}</span></div>`);
5383
5420
  _push(ssrRenderComponent(_component_a_button, {
5384
5421
  size: "small",
5385
5422
  type: "primary",
@@ -5387,34 +5424,34 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5387
5424
  onClick: openMemberModal
5388
5425
  }, {
5389
5426
  default: withCtx((_, _push, _parent, _scopeId) => {
5390
- if (_push) _push(`<span class="i-tabler-user-plus" data-v-f68d6ffb${_scopeId}></span><span data-v-f68d6ffb${_scopeId}>${ssrInterpolate(_ctx.$t("agentLanesView.k1fmutgo018"))}</span>`);
5427
+ if (_push) _push(`<span class="i-tabler-user-plus" data-v-eaee1001${_scopeId}></span><span data-v-eaee1001${_scopeId}>${ssrInterpolate(_ctx.$t("agentLanesView.k1fmutgo018"))}</span>`);
5391
5428
  else return [createVNode("span", { class: "i-tabler-user-plus" }), createVNode("span", null, toDisplayString(_ctx.$t("agentLanesView.k1fmutgo018")), 1)];
5392
5429
  }),
5393
5430
  _: 1
5394
5431
  }, _parent));
5395
- _push(`</div><div class="lanes" data-v-f68d6ffb>`);
5432
+ _push(`</div><div class="lanes" data-v-eaee1001>`);
5396
5433
  if (unref(agents).length === 0) {
5397
- _push(`<div class="empty" data-v-f68d6ffb>`);
5398
- if (!unref(entities).channels[__props.channelId]) _push(`<!--[--><span class="i-tabler-refresh empty-icon" data-v-f68d6ffb></span><p class="empty-title" data-v-f68d6ffb>${ssrInterpolate(_ctx.$t("agentLanesView.k1woev5v019"))}</p><!--]-->`);
5399
- else _push(`<!--[--><span class="i-tabler-users-group empty-icon" data-v-f68d6ffb></span><p class="empty-title" data-v-f68d6ffb>${ssrInterpolate(_ctx.$t("agentLanesView.k122h4pc020"))}</p><p class="empty-hint" data-v-f68d6ffb>${ssrInterpolate(_ctx.$t("agentLanesView.k7cr2h8021"))}</p><!--]-->`);
5434
+ _push(`<div class="empty" data-v-eaee1001>`);
5435
+ if (!unref(entities).channels[__props.channelId]) _push(`<!--[--><span class="i-tabler-refresh empty-icon" data-v-eaee1001></span><p class="empty-title" data-v-eaee1001>${ssrInterpolate(_ctx.$t("agentLanesView.k1woev5v019"))}</p><!--]-->`);
5436
+ else _push(`<!--[--><span class="i-tabler-users-group empty-icon" data-v-eaee1001></span><p class="empty-title" data-v-eaee1001>${ssrInterpolate(_ctx.$t("agentLanesView.k122h4pc020"))}</p><p class="empty-hint" data-v-eaee1001>${ssrInterpolate(_ctx.$t("agentLanesView.k7cr2h8021"))}</p><!--]-->`);
5400
5437
  _push(`</div>`);
5401
5438
  } else _push(`<!---->`);
5402
5439
  _push(`<!--[-->`);
5403
5440
  ssrRenderList(unref(agents), (a) => {
5404
- _push(`<!--[--><div class="lane" style="${ssrRenderStyle({ flexBasis: `${laneWidth(a.agentId)}px` })}" data-v-f68d6ffb><div class="lane-head" data-v-f68d6ffb><div class="head-top" data-v-f68d6ffb><span class="lane-ava" data-v-f68d6ffb><span style="${ssrRenderStyle({ "--av": laneHue(a.agentId) })}" data-v-f68d6ffb>${ssrInterpolate(laneInitial(a.name))}</span><span class="${ssrRenderClass([a.state, "lane-state"])}" data-v-f68d6ffb></span></span><span class="lane-name"${ssrRenderAttr("title", a.name)} data-v-f68d6ffb>${ssrInterpolate(a.name)}</span>`);
5405
- if (a.config?.systemPromptPrefix) _push(`<span class="lane-chip"${ssrRenderAttr("title", _ctx.$t("agentLanesView.k107s4am001"))} data-v-f68d6ffb>${ssrInterpolate(_ctx.$t("agentLanesView.k3xycu022"))}</span>`);
5441
+ _push(`<!--[--><div class="lane" style="${ssrRenderStyle({ flexBasis: `${laneWidth(a.agentId)}px` })}" data-v-eaee1001><div class="lane-head" data-v-eaee1001><div class="head-top" data-v-eaee1001><span class="lane-ava" data-v-eaee1001><span style="${ssrRenderStyle({ "--av": laneHue(a.agentId) })}" data-v-eaee1001>${ssrInterpolate(laneInitial(a.name))}</span><span class="${ssrRenderClass([a.state, "lane-state"])}" data-v-eaee1001></span></span><span class="lane-name"${ssrRenderAttr("title", a.name)} data-v-eaee1001>${ssrInterpolate(a.name)}</span>`);
5442
+ if (a.config?.systemPromptPrefix) _push(`<span class="lane-chip"${ssrRenderAttr("title", _ctx.$t("agentLanesView.k107s4am001"))} data-v-eaee1001>${ssrInterpolate(_ctx.$t("agentLanesView.k3xycu022"))}</span>`);
5406
5443
  else _push(`<!---->`);
5407
- _push(`<span class="${ssrRenderClass([a.role, "lane-role"])}" data-v-f68d6ffb>${ssrInterpolate(a.role)}</span>`);
5408
- if (termBadge(unref(terminalOf).get(a.agentId))) _push(`<span class="term-badge"${ssrRenderAttr("title", _ctx.$t("agentLanesView.k1wn2vmt036", { p0: unref(terminalOf).get(a.agentId)?.pid }))} data-v-f68d6ffb><span class="term-dot" style="${ssrRenderStyle({ background: TERM_DOT[termBadge(unref(terminalOf).get(a.agentId)).color] ?? "var(--tone-neutral-dot)" })}" data-v-f68d6ffb></span> ${ssrInterpolate(termBadge(unref(terminalOf).get(a.agentId)).text)}</span>`);
5444
+ _push(`<span class="${ssrRenderClass([a.role, "lane-role"])}" data-v-eaee1001>${ssrInterpolate(a.role)}</span>`);
5445
+ if (termBadge(unref(terminalOf).get(a.agentId))) _push(`<span class="term-badge"${ssrRenderAttr("title", _ctx.$t("agentLanesView.k1wn2vmt036", { p0: unref(terminalOf).get(a.agentId)?.pid }))} data-v-eaee1001><span class="term-dot" style="${ssrRenderStyle({ background: TERM_DOT[termBadge(unref(terminalOf).get(a.agentId)).color] ?? "var(--tone-neutral-dot)" })}" data-v-eaee1001></span> ${ssrInterpolate(termBadge(unref(terminalOf).get(a.agentId)).text)}</span>`);
5409
5446
  else _push(`<!---->`);
5410
- _push(`</div><div class="head-sub" data-v-f68d6ffb><span class="lane-meta" data-v-f68d6ffb>`);
5447
+ _push(`</div><div class="head-sub" data-v-eaee1001><span class="lane-meta" data-v-eaee1001>`);
5411
5448
  if (a.state === "busy" && a.currentTaskTitle) {
5412
5449
  _push(`<!--[-->${ssrInterpolate(a.currentTaskTitle)} `);
5413
- if (a.currentTaskProgress != null) _push(`<span class="lane-progress" data-v-f68d6ffb>${ssrInterpolate(a.currentTaskProgress)}%</span>`);
5450
+ if (a.currentTaskProgress != null) _push(`<span class="lane-progress" data-v-eaee1001>${ssrInterpolate(a.currentTaskProgress)}%</span>`);
5414
5451
  else _push(`<!---->`);
5415
5452
  _push(`<!--]-->`);
5416
5453
  } else _push(`<!--[-->${ssrInterpolate(a.state)} · Q${ssrInterpolate(a.queued ?? 0)}<!--]-->`);
5417
- _push(`</span><div class="lane-actions" data-v-f68d6ffb>`);
5454
+ _push(`</span><div class="lane-actions" data-v-eaee1001>`);
5418
5455
  if (a.harness === "omp") _push(ssrRenderComponent(_component_a_button, {
5419
5456
  size: "small",
5420
5457
  type: "primary",
@@ -5424,7 +5461,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5424
5461
  onClick: ($event) => openTerminal(a)
5425
5462
  }, {
5426
5463
  default: withCtx((_, _push, _parent, _scopeId) => {
5427
- if (_push) _push(`<span class="i-tabler-terminal-2" data-v-f68d6ffb${_scopeId}></span><span class="term-label" data-v-f68d6ffb${_scopeId}>${ssrInterpolate(_ctx.$t("agentLanesView.k4588s023"))}</span>`);
5464
+ if (_push) _push(`<span class="i-tabler-terminal-2" data-v-eaee1001${_scopeId}></span><span class="term-label" data-v-eaee1001${_scopeId}>${ssrInterpolate(_ctx.$t("agentLanesView.k4588s023"))}</span>`);
5428
5465
  else return [createVNode("span", { class: "i-tabler-terminal-2" }), createVNode("span", { class: "term-label" }, toDisplayString(_ctx.$t("agentLanesView.k4588s023")), 1)];
5429
5466
  }),
5430
5467
  _: 2
@@ -5438,16 +5475,16 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5438
5475
  onClick: ($event) => openEditMember(a)
5439
5476
  }, {
5440
5477
  default: withCtx((_, _push, _parent, _scopeId) => {
5441
- if (_push) _push(`<span class="i-tabler-edit" data-v-f68d6ffb${_scopeId}></span>`);
5478
+ if (_push) _push(`<span class="i-tabler-edit" data-v-eaee1001${_scopeId}></span>`);
5442
5479
  else return [createVNode("span", { class: "i-tabler-edit" })];
5443
5480
  }),
5444
5481
  _: 2
5445
5482
  }, _parent));
5446
- _push(`<span class="actions-divider" data-v-f68d6ffb></span>`);
5483
+ _push(`<span class="actions-divider" data-v-eaee1001></span>`);
5447
5484
  _push(ssrRenderComponent(_component_a_popconfirm, {
5448
5485
  title: _ctx.$t("agentLanesView.k1l029kf037", { p0: a.name }),
5449
- "ok-text": "停止",
5450
- "cancel-text": "取消",
5486
+ "ok-text": _ctx.$t("common.stop"),
5487
+ "cancel-text": _ctx.$t("common.cancel"),
5451
5488
  onConfirm: ($event) => stopMember(a.agentId, a.name)
5452
5489
  }, {
5453
5490
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -5456,10 +5493,10 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5456
5493
  type: "text",
5457
5494
  class: "lane-stop",
5458
5495
  loading: unref(stopping) === a.agentId,
5459
- title: "HITL 停止该 Agent 运行时"
5496
+ title: _ctx.$t("agentLanesView.hitlStopTitle")
5460
5497
  }, {
5461
5498
  default: withCtx((_, _push, _parent, _scopeId) => {
5462
- if (_push) _push(`<span class="i-tabler-player-stop" data-v-f68d6ffb${_scopeId}></span>`);
5499
+ if (_push) _push(`<span class="i-tabler-player-stop" data-v-eaee1001${_scopeId}></span>`);
5463
5500
  else return [createVNode("span", { class: "i-tabler-player-stop" })];
5464
5501
  }),
5465
5502
  _: 2
@@ -5469,18 +5506,18 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5469
5506
  type: "text",
5470
5507
  class: "lane-stop",
5471
5508
  loading: unref(stopping) === a.agentId,
5472
- title: "HITL 停止该 Agent 运行时"
5509
+ title: _ctx.$t("agentLanesView.hitlStopTitle")
5473
5510
  }, {
5474
5511
  default: withCtx(() => [createVNode("span", { class: "i-tabler-player-stop" })]),
5475
5512
  _: 1
5476
- }, 8, ["loading"])];
5513
+ }, 8, ["loading", "title"])];
5477
5514
  }),
5478
5515
  _: 2
5479
5516
  }, _parent));
5480
5517
  _push(ssrRenderComponent(_component_a_popconfirm, {
5481
5518
  title: _ctx.$t("agentLanesView.kt3n27m038", { p0: a.name }),
5482
- "ok-text": "移除",
5483
- "cancel-text": "取消",
5519
+ "ok-text": _ctx.$t("common.remove"),
5520
+ "cancel-text": _ctx.$t("common.cancel"),
5484
5521
  onConfirm: ($event) => removeMember(a.agentId, a.name)
5485
5522
  }, {
5486
5523
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -5492,7 +5529,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5492
5529
  loading: unref(removing) === a.agentId
5493
5530
  }, {
5494
5531
  default: withCtx((_, _push, _parent, _scopeId) => {
5495
- if (_push) _push(`<span class="i-tabler-x" data-v-f68d6ffb${_scopeId}></span>`);
5532
+ if (_push) _push(`<span class="i-tabler-x" data-v-eaee1001${_scopeId}></span>`);
5496
5533
  else return [createVNode("span", { class: "i-tabler-x" })];
5497
5534
  }),
5498
5535
  _: 2
@@ -5510,7 +5547,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5510
5547
  }),
5511
5548
  _: 2
5512
5549
  }, _parent));
5513
- _push(`</div></div></div><div class="lane-body" data-v-f68d6ffb>`);
5550
+ _push(`</div></div></div><div class="lane-body" data-v-eaee1001>`);
5514
5551
  _push(ssrRenderComponent(LaneBlocks_default, {
5515
5552
  "channel-id": __props.channelId,
5516
5553
  "agent-id": a.agentId
@@ -5529,8 +5566,8 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5529
5566
  "onUpdate:open": ($event) => isRef(memberModalOpen) ? memberModalOpen.value = $event : null,
5530
5567
  title: _ctx.$t("agentLanesView.k17kcn55004"),
5531
5568
  "confirm-loading": unref(memberSubmitting),
5532
- "ok-text": "添加",
5533
- "cancel-text": "取消",
5569
+ "ok-text": _ctx.$t("common.add"),
5570
+ "cancel-text": _ctx.$t("common.cancel"),
5534
5571
  onOk: submitMember
5535
5572
  }, {
5536
5573
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -5591,15 +5628,19 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5591
5628
  if (_push) _push(ssrRenderComponent(_component_a_input, {
5592
5629
  value: unref(memberForm).name,
5593
5630
  "onUpdate:value": ($event) => unref(memberForm).name = $event,
5594
- placeholder: "如 db-migrator / test-writer",
5631
+ placeholder: _ctx.$t("agentLanesView.namePh"),
5595
5632
  onPressEnter: submitMember
5596
5633
  }, null, _parent, _scopeId));
5597
5634
  else return [createVNode(_component_a_input, {
5598
5635
  value: unref(memberForm).name,
5599
5636
  "onUpdate:value": ($event) => unref(memberForm).name = $event,
5600
- placeholder: "如 db-migrator / test-writer",
5637
+ placeholder: _ctx.$t("agentLanesView.namePh"),
5601
5638
  onPressEnter: submitMember
5602
- }, null, 8, ["value", "onUpdate:value"])];
5639
+ }, null, 8, [
5640
+ "value",
5641
+ "onUpdate:value",
5642
+ "placeholder"
5643
+ ])];
5603
5644
  }),
5604
5645
  _: 1
5605
5646
  }, _parent, _scopeId));
@@ -5613,8 +5654,8 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5613
5654
  if (_push) {
5614
5655
  _push(ssrRenderComponent(_component_a_radio, { value: "omp" }, {
5615
5656
  default: withCtx((_, _push, _parent, _scopeId) => {
5616
- if (_push) _push(` omp(完整 LLM agent) `);
5617
- else return [createTextVNode(" omp(完整 LLM agent) ")];
5657
+ if (_push) _push(`${ssrInterpolate(_ctx.$t("agentLanesView.ompFull"))}`);
5658
+ else return [createTextVNode(toDisplayString(_ctx.$t("agentLanesView.ompFull")), 1)];
5618
5659
  }),
5619
5660
  _: 1
5620
5661
  }, _parent, _scopeId));
@@ -5634,7 +5675,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5634
5675
  }, _parent, _scopeId));
5635
5676
  } else return [
5636
5677
  createVNode(_component_a_radio, { value: "omp" }, {
5637
- default: withCtx(() => [createTextVNode(" omp(完整 LLM agent) ")]),
5678
+ default: withCtx(() => [createTextVNode(toDisplayString(_ctx.$t("agentLanesView.ompFull")), 1)]),
5638
5679
  _: 1
5639
5680
  }),
5640
5681
  createVNode(_component_a_radio, { value: "mock" }, {
@@ -5655,7 +5696,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5655
5696
  }, {
5656
5697
  default: withCtx(() => [
5657
5698
  createVNode(_component_a_radio, { value: "omp" }, {
5658
- default: withCtx(() => [createTextVNode(" omp(完整 LLM agent) ")]),
5699
+ default: withCtx(() => [createTextVNode(toDisplayString(_ctx.$t("agentLanesView.ompFull")), 1)]),
5659
5700
  _: 1
5660
5701
  }),
5661
5702
  createVNode(_component_a_radio, { value: "mock" }, {
@@ -5746,9 +5787,13 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5746
5787
  default: withCtx(() => [createVNode(_component_a_input, {
5747
5788
  value: unref(memberForm).name,
5748
5789
  "onUpdate:value": ($event) => unref(memberForm).name = $event,
5749
- placeholder: "如 db-migrator / test-writer",
5790
+ placeholder: _ctx.$t("agentLanesView.namePh"),
5750
5791
  onPressEnter: submitMember
5751
- }, null, 8, ["value", "onUpdate:value"])]),
5792
+ }, null, 8, [
5793
+ "value",
5794
+ "onUpdate:value",
5795
+ "placeholder"
5796
+ ])]),
5752
5797
  _: 1
5753
5798
  }, 8, ["label"]),
5754
5799
  createVNode(_component_a_form_item, { label: "harness" }, {
@@ -5758,7 +5803,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5758
5803
  }, {
5759
5804
  default: withCtx(() => [
5760
5805
  createVNode(_component_a_radio, { value: "omp" }, {
5761
- default: withCtx(() => [createTextVNode(" omp(完整 LLM agent) ")]),
5806
+ default: withCtx(() => [createTextVNode(toDisplayString(_ctx.$t("agentLanesView.ompFull")), 1)]),
5762
5807
  _: 1
5763
5808
  }),
5764
5809
  createVNode(_component_a_radio, { value: "mock" }, {
@@ -5813,7 +5858,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5813
5858
  }, {
5814
5859
  default: withCtx((_, _push, _parent, _scopeId) => {
5815
5860
  if (_push) {
5816
- _push(ssrRenderComponent(_component_a_form_item, { label: "选择 Agent 模板(克隆 name/harness/config 为独立实例)" }, {
5861
+ _push(ssrRenderComponent(_component_a_form_item, { label: _ctx.$t("agentLanesView.tplCloneLabel") }, {
5817
5862
  default: withCtx((_, _push, _parent, _scopeId) => {
5818
5863
  if (_push) _push(ssrRenderComponent(_component_a_select, {
5819
5864
  value: unref(selectedTemplateId),
@@ -5821,7 +5866,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5821
5866
  placeholder: _ctx.$t("agentLanesView.kung925009"),
5822
5867
  options: unref(templates).map((t) => ({
5823
5868
  value: t.id,
5824
- label: `${t.name}(${t.harness})${t.enabled === 0 ? " · 已停用" : ""}`
5869
+ label: `${t.name}(${t.harness})${t.enabled === 0 ? _ctx.$t("agentLanesView.tplDisabled") : ""}`
5825
5870
  }))
5826
5871
  }, null, _parent, _scopeId));
5827
5872
  else return [createVNode(_component_a_select, {
@@ -5830,7 +5875,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5830
5875
  placeholder: _ctx.$t("agentLanesView.kung925009"),
5831
5876
  options: unref(templates).map((t) => ({
5832
5877
  value: t.id,
5833
- label: `${t.name}(${t.harness})${t.enabled === 0 ? " · 已停用" : ""}`
5878
+ label: `${t.name}(${t.harness})${t.enabled === 0 ? _ctx.$t("agentLanesView.tplDisabled") : ""}`
5834
5879
  }))
5835
5880
  }, null, 8, [
5836
5881
  "value",
@@ -5910,16 +5955,16 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5910
5955
  }),
5911
5956
  _: 1
5912
5957
  }, _parent, _scopeId));
5913
- _push(`<div class="mode-hint" data-v-f68d6ffb${_scopeId}>${ssrInterpolate(_ctx.$t("agentLanesView.knybb6r029"))}</div>`);
5958
+ _push(`<div class="mode-hint" data-v-eaee1001${_scopeId}>${ssrInterpolate(_ctx.$t("agentLanesView.knybb6r029"))}</div>`);
5914
5959
  } else return [
5915
- createVNode(_component_a_form_item, { label: "选择 Agent 模板(克隆 name/harness/config 为独立实例)" }, {
5960
+ createVNode(_component_a_form_item, { label: _ctx.$t("agentLanesView.tplCloneLabel") }, {
5916
5961
  default: withCtx(() => [createVNode(_component_a_select, {
5917
5962
  value: unref(selectedTemplateId),
5918
5963
  "onUpdate:value": ($event) => isRef(selectedTemplateId) ? selectedTemplateId.value = $event : null,
5919
5964
  placeholder: _ctx.$t("agentLanesView.kung925009"),
5920
5965
  options: unref(templates).map((t) => ({
5921
5966
  value: t.id,
5922
- label: `${t.name}(${t.harness})${t.enabled === 0 ? " · 已停用" : ""}`
5967
+ label: `${t.name}(${t.harness})${t.enabled === 0 ? _ctx.$t("agentLanesView.tplDisabled") : ""}`
5923
5968
  }))
5924
5969
  }, null, 8, [
5925
5970
  "value",
@@ -5928,7 +5973,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5928
5973
  "options"
5929
5974
  ])]),
5930
5975
  _: 1
5931
- }),
5976
+ }, 8, ["label"]),
5932
5977
  createVNode(_component_a_form_item, { label: _ctx.$t("agentLanesView.k1bl78fu010") }, {
5933
5978
  default: withCtx(() => [createVNode(_component_a_radio_group, {
5934
5979
  value: unref(memberForm).role,
@@ -5980,7 +6025,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5980
6025
  label: _ctx.$t("agentLanesView.k1qcmxyu040", {
5981
6026
  p0: t.name,
5982
6027
  p1: t.memberCount,
5983
- p2: t.hasLead ? ",含 lead" : ""
6028
+ p2: t.hasLead ? _ctx.$t("agentLanesView.withLead") : ""
5984
6029
  })
5985
6030
  }))
5986
6031
  }, null, _parent, _scopeId));
@@ -5993,7 +6038,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
5993
6038
  label: _ctx.$t("agentLanesView.k1qcmxyu040", {
5994
6039
  p0: t.name,
5995
6040
  p1: t.memberCount,
5996
- p2: t.hasLead ? ",含 lead" : ""
6041
+ p2: t.hasLead ? _ctx.$t("agentLanesView.withLead") : ""
5997
6042
  })
5998
6043
  }))
5999
6044
  }, null, 8, [
@@ -6005,7 +6050,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6005
6050
  }),
6006
6051
  _: 1
6007
6052
  }, _parent, _scopeId));
6008
- _push(`<div class="mode-hint" data-v-f68d6ffb${_scopeId}>${ssrInterpolate(_ctx.$t("agentLanesView.k1qqnq5030"))}</div>`);
6053
+ _push(`<div class="mode-hint" data-v-eaee1001${_scopeId}>${ssrInterpolate(_ctx.$t("agentLanesView.k1qqnq5030"))}</div>`);
6009
6054
  } else return [createVNode(_component_a_form_item, { label: _ctx.$t("agentLanesView.k29om9b013") }, {
6010
6055
  default: withCtx(() => [createVNode(_component_a_select, {
6011
6056
  value: unref(selectedTeamId),
@@ -6016,7 +6061,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6016
6061
  label: _ctx.$t("agentLanesView.k1qcmxyu040", {
6017
6062
  p0: t.name,
6018
6063
  p1: t.memberCount,
6019
- p2: t.hasLead ? ",含 lead" : ""
6064
+ p2: t.hasLead ? _ctx.$t("agentLanesView.withLead") : ""
6020
6065
  })
6021
6066
  }))
6022
6067
  }, null, 8, [
@@ -6060,9 +6105,13 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6060
6105
  default: withCtx(() => [createVNode(_component_a_input, {
6061
6106
  value: unref(memberForm).name,
6062
6107
  "onUpdate:value": ($event) => unref(memberForm).name = $event,
6063
- placeholder: "如 db-migrator / test-writer",
6108
+ placeholder: _ctx.$t("agentLanesView.namePh"),
6064
6109
  onPressEnter: submitMember
6065
- }, null, 8, ["value", "onUpdate:value"])]),
6110
+ }, null, 8, [
6111
+ "value",
6112
+ "onUpdate:value",
6113
+ "placeholder"
6114
+ ])]),
6066
6115
  _: 1
6067
6116
  }, 8, ["label"]),
6068
6117
  createVNode(_component_a_form_item, { label: "harness" }, {
@@ -6072,7 +6121,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6072
6121
  }, {
6073
6122
  default: withCtx(() => [
6074
6123
  createVNode(_component_a_radio, { value: "omp" }, {
6075
- default: withCtx(() => [createTextVNode(" omp(完整 LLM agent) ")]),
6124
+ default: withCtx(() => [createTextVNode(toDisplayString(_ctx.$t("agentLanesView.ompFull")), 1)]),
6076
6125
  _: 1
6077
6126
  }),
6078
6127
  createVNode(_component_a_radio, { value: "mock" }, {
@@ -6125,14 +6174,14 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6125
6174
  class: "member-form"
6126
6175
  }, {
6127
6176
  default: withCtx(() => [
6128
- createVNode(_component_a_form_item, { label: "选择 Agent 模板(克隆 name/harness/config 为独立实例)" }, {
6177
+ createVNode(_component_a_form_item, { label: _ctx.$t("agentLanesView.tplCloneLabel") }, {
6129
6178
  default: withCtx(() => [createVNode(_component_a_select, {
6130
6179
  value: unref(selectedTemplateId),
6131
6180
  "onUpdate:value": ($event) => isRef(selectedTemplateId) ? selectedTemplateId.value = $event : null,
6132
6181
  placeholder: _ctx.$t("agentLanesView.kung925009"),
6133
6182
  options: unref(templates).map((t) => ({
6134
6183
  value: t.id,
6135
- label: `${t.name}(${t.harness})${t.enabled === 0 ? " · 已停用" : ""}`
6184
+ label: `${t.name}(${t.harness})${t.enabled === 0 ? _ctx.$t("agentLanesView.tplDisabled") : ""}`
6136
6185
  }))
6137
6186
  }, null, 8, [
6138
6187
  "value",
@@ -6141,7 +6190,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6141
6190
  "options"
6142
6191
  ])]),
6143
6192
  _: 1
6144
- }),
6193
+ }, 8, ["label"]),
6145
6194
  createVNode(_component_a_form_item, { label: _ctx.$t("agentLanesView.k1bl78fu010") }, {
6146
6195
  default: withCtx(() => [createVNode(_component_a_radio_group, {
6147
6196
  value: unref(memberForm).role,
@@ -6189,7 +6238,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6189
6238
  label: _ctx.$t("agentLanesView.k1qcmxyu040", {
6190
6239
  p0: t.name,
6191
6240
  p1: t.memberCount,
6192
- p2: t.hasLead ? ",含 lead" : ""
6241
+ p2: t.hasLead ? _ctx.$t("agentLanesView.withLead") : ""
6193
6242
  })
6194
6243
  }))
6195
6244
  }, null, 8, [
@@ -6210,8 +6259,8 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6210
6259
  "onUpdate:open": ($event) => isRef(editModalOpen) ? editModalOpen.value = $event : null,
6211
6260
  title: _ctx.$t("agentLanesView.k19j5rho041", { p0: unref(editForm).name || "" }),
6212
6261
  "confirm-loading": unref(editSubmitting),
6213
- "ok-text": "保存",
6214
- "cancel-text": "取消",
6262
+ "ok-text": _ctx.$t("common.save"),
6263
+ "cancel-text": _ctx.$t("common.cancel"),
6215
6264
  onOk: submitEditMember
6216
6265
  }, {
6217
6266
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -6234,7 +6283,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6234
6283
  }),
6235
6284
  _: 1
6236
6285
  }, _parent, _scopeId));
6237
- _push(ssrRenderComponent(_component_a_form_item, { label: "角色 / harness" }, {
6286
+ _push(ssrRenderComponent(_component_a_form_item, { label: _ctx.$t("agentLanesView.roleHarnessLabel") }, {
6238
6287
  default: withCtx((_, _push, _parent, _scopeId) => {
6239
6288
  if (_push) _push(ssrRenderComponent(_component_a_space, null, {
6240
6289
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -6276,9 +6325,9 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6276
6325
  }),
6277
6326
  _: 1
6278
6327
  }, _parent, _scopeId));
6279
- _push(ssrRenderComponent(_component_a_form_item, { label: "场景系统提示词(systemPromptPrefix)" }, {
6328
+ _push(ssrRenderComponent(_component_a_form_item, { label: _ctx.$t("agentLanesView.syspromptLabel") }, {
6280
6329
  extra: withCtx((_, _push, _parent, _scopeId) => {
6281
- if (_push) _push(`<span class="ws-hint" data-v-f68d6ffb${_scopeId}>${ssrInterpolate(_ctx.$t("agentLanesView.k1rw1rd2031"))}</span>`);
6330
+ if (_push) _push(`<span class="ws-hint" data-v-eaee1001${_scopeId}>${ssrInterpolate(_ctx.$t("agentLanesView.k1rw1rd2031"))}</span>`);
6282
6331
  else return [createVNode("span", { class: "ws-hint" }, toDisplayString(_ctx.$t("agentLanesView.k1rw1rd2031")), 1)];
6283
6332
  }),
6284
6333
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -6309,7 +6358,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6309
6358
  }, null, 8, ["value", "onUpdate:value"])]),
6310
6359
  _: 1
6311
6360
  }, 8, ["label"]),
6312
- createVNode(_component_a_form_item, { label: "角色 / harness" }, {
6361
+ createVNode(_component_a_form_item, { label: _ctx.$t("agentLanesView.roleHarnessLabel") }, {
6313
6362
  default: withCtx(() => [createVNode(_component_a_space, null, {
6314
6363
  default: withCtx(() => [createVNode(_component_a_tag, { color: unref(editForm).role === "lead" ? "purple" : "blue" }, {
6315
6364
  default: withCtx(() => [createTextVNode(toDisplayString(unref(editForm).role), 1)]),
@@ -6321,8 +6370,8 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6321
6370
  _: 1
6322
6371
  })]),
6323
6372
  _: 1
6324
- }),
6325
- createVNode(_component_a_form_item, { label: "场景系统提示词(systemPromptPrefix)" }, {
6373
+ }, 8, ["label"]),
6374
+ createVNode(_component_a_form_item, { label: _ctx.$t("agentLanesView.syspromptLabel") }, {
6326
6375
  extra: withCtx(() => [createVNode("span", { class: "ws-hint" }, toDisplayString(_ctx.$t("agentLanesView.k1rw1rd2031")), 1)]),
6327
6376
  default: withCtx(() => [createVNode(_component_a_textarea, {
6328
6377
  value: unref(editForm).systemPrompt,
@@ -6335,7 +6384,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6335
6384
  "placeholder"
6336
6385
  ])]),
6337
6386
  _: 1
6338
- })
6387
+ }, 8, ["label"])
6339
6388
  ];
6340
6389
  }),
6341
6390
  _: 1
@@ -6352,7 +6401,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6352
6401
  }, null, 8, ["value", "onUpdate:value"])]),
6353
6402
  _: 1
6354
6403
  }, 8, ["label"]),
6355
- createVNode(_component_a_form_item, { label: "角色 / harness" }, {
6404
+ createVNode(_component_a_form_item, { label: _ctx.$t("agentLanesView.roleHarnessLabel") }, {
6356
6405
  default: withCtx(() => [createVNode(_component_a_space, null, {
6357
6406
  default: withCtx(() => [createVNode(_component_a_tag, { color: unref(editForm).role === "lead" ? "purple" : "blue" }, {
6358
6407
  default: withCtx(() => [createTextVNode(toDisplayString(unref(editForm).role), 1)]),
@@ -6364,8 +6413,8 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6364
6413
  _: 1
6365
6414
  })]),
6366
6415
  _: 1
6367
- }),
6368
- createVNode(_component_a_form_item, { label: "场景系统提示词(systemPromptPrefix)" }, {
6416
+ }, 8, ["label"]),
6417
+ createVNode(_component_a_form_item, { label: _ctx.$t("agentLanesView.syspromptLabel") }, {
6369
6418
  extra: withCtx(() => [createVNode("span", { class: "ws-hint" }, toDisplayString(_ctx.$t("agentLanesView.k1rw1rd2031")), 1)]),
6370
6419
  default: withCtx(() => [createVNode(_component_a_textarea, {
6371
6420
  value: unref(editForm).systemPrompt,
@@ -6378,7 +6427,7 @@ var AgentLanesView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
6378
6427
  "placeholder"
6379
6428
  ])]),
6380
6429
  _: 1
6381
- })
6430
+ }, 8, ["label"])
6382
6431
  ]),
6383
6432
  _: 1
6384
6433
  })];
@@ -6405,7 +6454,7 @@ AgentLanesView_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx)
6405
6454
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/AgentLanesView.vue");
6406
6455
  return _sfc_setup$11 ? _sfc_setup$11(props, ctx) : void 0;
6407
6456
  };
6408
- var AgentLanesView_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(AgentLanesView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-f68d6ffb"]]), { __name: "WorkshopAgentLanesView" });
6457
+ var AgentLanesView_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(AgentLanesView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-eaee1001"]]), { __name: "WorkshopAgentLanesView" });
6409
6458
  //#endregion
6410
6459
  //#region app/components/workshop/TaskBoardView.vue?vue&type=script&setup=true&lang.ts
6411
6460
  var TaskBoardView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -6536,20 +6585,20 @@ var TaskBoardView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
6536
6585
  });
6537
6586
  return (_ctx, _push, _parent, _attrs) => {
6538
6587
  const _component_a_progress = progress_default;
6539
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "board-shell" }, _attrs))} data-v-e4b51f68><div class="toolbar" data-v-e4b51f68><div class="aw-seg" data-v-e4b51f68><button type="button" class="${ssrRenderClass({ on: unref(layout) === "board" })}" data-v-e4b51f68>${ssrInterpolate(_ctx.$t("taskBoardView.k43pyn001"))}</button><button type="button" class="${ssrRenderClass({ on: unref(layout) === "list" })}" data-v-e4b51f68>${ssrInterpolate(_ctx.$t("taskBoardView.k3x7l0002"))}</button></div><span class="count" data-v-e4b51f68>${ssrInterpolate(unref(mergedTasks).length)} ${ssrInterpolate(_ctx.$t("taskBoardView.k168w1ze004"))}</span></div>`);
6540
- if (unref(mergedTasks).length === 0) _push(`<div class="pane-empty" data-v-e4b51f68><span class="${ssrRenderClass(unref(synced) ? "pe-icon i-tabler-list-check" : "pe-icon i-tabler-refresh")}" data-v-e4b51f68></span><div class="pe-title" data-v-e4b51f68>${ssrInterpolate(unref(synced) ? _ctx.$t("taskBoardView.k3vkhhj006") : _ctx.$t("taskBoardView.k1f9c17l019"))} <span class="aw-serif-accent-italic" data-v-e4b51f68>${ssrInterpolate(_ctx.$t("taskBoardView.k3wcox003"))}</span></div><div class="pe-sub" data-v-e4b51f68>${ssrInterpolate(unref(synced) ? "在下方 Composer 提交首个任务(首行标题,支持 goal / loop / pipeline 模式)" : "任务快照对齐后自动呈现")}</div></div>`);
6588
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "board-shell" }, _attrs))} data-v-3f91ab4e><div class="toolbar" data-v-3f91ab4e><div class="aw-seg" data-v-3f91ab4e><button type="button" class="${ssrRenderClass({ on: unref(layout) === "board" })}" data-v-3f91ab4e>${ssrInterpolate(_ctx.$t("taskBoardView.k43pyn001"))}</button><button type="button" class="${ssrRenderClass({ on: unref(layout) === "list" })}" data-v-3f91ab4e>${ssrInterpolate(_ctx.$t("taskBoardView.k3x7l0002"))}</button></div><span class="count" data-v-3f91ab4e>${ssrInterpolate(unref(mergedTasks).length)} ${ssrInterpolate(_ctx.$t("taskBoardView.k168w1ze004"))}</span></div>`);
6589
+ if (unref(mergedTasks).length === 0) _push(`<div class="pane-empty" data-v-3f91ab4e><span class="${ssrRenderClass(unref(synced) ? "pe-icon i-tabler-list-check" : "pe-icon i-tabler-refresh")}" data-v-3f91ab4e></span><div class="pe-title" data-v-3f91ab4e>${ssrInterpolate(unref(synced) ? _ctx.$t("taskBoardView.k3vkhhj006") : _ctx.$t("taskBoardView.k1f9c17l019"))} <span class="aw-serif-accent-italic" data-v-3f91ab4e>${ssrInterpolate(_ctx.$t("taskBoardView.k3wcox003"))}</span></div><div class="pe-sub" data-v-3f91ab4e>${ssrInterpolate(unref(synced) ? _ctx.$t("taskBoardView.emptySubNew") : _ctx.$t("taskBoardView.emptySubSync"))}</div></div>`);
6541
6590
  else if (unref(layout) === "board") {
6542
- _push(`<div class="board" data-v-e4b51f68><!--[-->`);
6591
+ _push(`<div class="board" data-v-3f91ab4e><!--[-->`);
6543
6592
  ssrRenderList(unref(columns), (col) => {
6544
- _push(`<div class="${ssrRenderClass([colClasses(col), "task-col"])}" data-v-e4b51f68><div class="sec" data-v-e4b51f68><span class="st-dot" style="${ssrRenderStyle({ background: col.dot })}" data-v-e4b51f68></span><span class="sec-title" data-v-e4b51f68>${ssrInterpolate(col.title)}</span><span class="sec-cnt" data-v-e4b51f68>${ssrInterpolate(col.items.length)}</span></div><div class="task-col-body" data-v-e4b51f68><!--[-->`);
6593
+ _push(`<div class="${ssrRenderClass([colClasses(col), "task-col"])}" data-v-3f91ab4e><div class="sec" data-v-3f91ab4e><span class="st-dot" style="${ssrRenderStyle({ background: col.dot })}" data-v-3f91ab4e></span><span class="sec-title" data-v-3f91ab4e>${ssrInterpolate(col.title)}</span><span class="sec-cnt" data-v-3f91ab4e>${ssrInterpolate(col.items.length)}</span></div><div class="task-col-body" data-v-3f91ab4e><!--[-->`);
6545
6594
  ssrRenderList(col.items, (task) => {
6546
- _push(`<div class="${ssrRenderClass([{ dragging: unref(dragId) === task.id }, "card task"])}" draggable="true" data-v-e4b51f68><div class="tk-chan" data-v-e4b51f68><span data-v-e4b51f68>#${ssrInterpolate(agentName(task.assigneeId))}</span>`);
6547
- if (childCount(task.id)) _push(`<span class="tk-num" data-v-e4b51f68>${ssrInterpolate(_ctx.$t("taskBoardView.k4b1x005"))} ${ssrInterpolate(childCount(task.id))}</span>`);
6595
+ _push(`<div class="${ssrRenderClass([{ dragging: unref(dragId) === task.id }, "card task"])}" draggable="true" data-v-3f91ab4e><div class="tk-chan" data-v-3f91ab4e><span data-v-3f91ab4e>#${ssrInterpolate(agentName(task.assigneeId))}</span>`);
6596
+ if (childCount(task.id)) _push(`<span class="tk-num" data-v-3f91ab4e>${ssrInterpolate(_ctx.$t("taskBoardView.k4b1x005"))} ${ssrInterpolate(childCount(task.id))}</span>`);
6548
6597
  else _push(`<!---->`);
6549
- if (task.artifacts) _push(`<span class="tk-num" data-v-e4b51f68><span class="i-tabler-package" data-v-e4b51f68></span> ${ssrInterpolate(task.artifacts)}</span>`);
6598
+ if (task.artifacts) _push(`<span class="tk-num" data-v-3f91ab4e><span class="i-tabler-package" data-v-3f91ab4e></span> ${ssrInterpolate(task.artifacts)}</span>`);
6550
6599
  else _push(`<!---->`);
6551
- _push(`</div><div class="tk-title" data-v-e4b51f68>${ssrInterpolate(task.title)}</div>`);
6552
- if (task.routeReason) _push(`<div class="tk-route"${ssrRenderAttr("title", _ctx.$t("taskBoardView.k8m7hm6020", { p0: task.routeReason }))} data-v-e4b51f68> ↳ ${ssrInterpolate(task.routeReason)}</div>`);
6600
+ _push(`</div><div class="tk-title" data-v-3f91ab4e>${ssrInterpolate(task.title)}</div>`);
6601
+ if (task.routeReason) _push(`<div class="tk-route"${ssrRenderAttr("title", _ctx.$t("taskBoardView.k8m7hm6020", { p0: task.routeReason }))} data-v-3f91ab4e> ↳ ${ssrInterpolate(task.routeReason)}</div>`);
6553
6602
  else _push(`<!---->`);
6554
6603
  if (task.state === "WORKING" && task.progress > 0) _push(ssrRenderComponent(_component_a_progress, {
6555
6604
  percent: task.progress,
@@ -6557,41 +6606,41 @@ var TaskBoardView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
6557
6606
  "show-info": false
6558
6607
  }, null, _parent));
6559
6608
  else _push(`<!---->`);
6560
- _push(`<div class="tk-foot" data-v-e4b51f68><button type="button" class="st-pill-btn" data-v-e4b51f68><span class="st-pill" style="${ssrRenderStyle({
6609
+ _push(`<div class="tk-foot" data-v-3f91ab4e><button type="button" class="st-pill-btn" data-v-3f91ab4e><span class="st-pill" style="${ssrRenderStyle({
6561
6610
  color: col.dot,
6562
6611
  borderColor: col.dot
6563
- })}" data-v-e4b51f68>${ssrInterpolate(col.title)}</span></button></div></div>`);
6612
+ })}" data-v-3f91ab4e>${ssrInterpolate(col.title)}</span></button></div></div>`);
6564
6613
  });
6565
6614
  _push(`<!--]-->`);
6566
- if (col.items.length === 0) _push(`<div class="col-empty" data-v-e4b51f68>${ssrInterpolate(col.moveAction ? _ctx.$t("taskBoardView.k13pad50007") : "-")}</div>`);
6615
+ if (col.items.length === 0) _push(`<div class="col-empty" data-v-3f91ab4e>${ssrInterpolate(col.moveAction ? _ctx.$t("taskBoardView.k13pad50007") : "-")}</div>`);
6567
6616
  else _push(`<!---->`);
6568
6617
  _push(`</div></div>`);
6569
6618
  });
6570
6619
  _push(`<!--]--></div>`);
6571
6620
  } else {
6572
- _push(`<div class="task-list" data-v-e4b51f68><!--[-->`);
6621
+ _push(`<div class="task-list" data-v-3f91ab4e><!--[-->`);
6573
6622
  ssrRenderList(unref(columns), (col) => {
6574
6623
  _push(`<!--[-->`);
6575
- if (col.items.length) _push(`<div class="list-sec sec" data-v-e4b51f68><span class="st-dot" style="${ssrRenderStyle({ background: col.dot })}" data-v-e4b51f68></span><span class="sec-title" data-v-e4b51f68>${ssrInterpolate(col.title)}</span><span class="sec-cnt" data-v-e4b51f68>${ssrInterpolate(col.items.length)}</span></div>`);
6624
+ if (col.items.length) _push(`<div class="list-sec sec" data-v-3f91ab4e><span class="st-dot" style="${ssrRenderStyle({ background: col.dot })}" data-v-3f91ab4e></span><span class="sec-title" data-v-3f91ab4e>${ssrInterpolate(col.title)}</span><span class="sec-cnt" data-v-3f91ab4e>${ssrInterpolate(col.items.length)}</span></div>`);
6576
6625
  else _push(`<!---->`);
6577
6626
  _push(`<!--[-->`);
6578
6627
  ssrRenderList(col.items, (task) => {
6579
- _push(`<div class="list-row" data-v-e4b51f68><span class="grow" data-v-e4b51f68>${ssrInterpolate(task.title)}</span><span class="lnum" data-v-e4b51f68>#${ssrInterpolate(agentName(task.assigneeId))}</span><span class="meta" data-v-e4b51f68>${ssrInterpolate(task.id.slice(0, 8))}</span><span class="st-pill" style="${ssrRenderStyle({
6628
+ _push(`<div class="list-row" data-v-3f91ab4e><span class="grow" data-v-3f91ab4e>${ssrInterpolate(task.title)}</span><span class="lnum" data-v-3f91ab4e>#${ssrInterpolate(agentName(task.assigneeId))}</span><span class="meta" data-v-3f91ab4e>${ssrInterpolate(task.id.slice(0, 8))}</span><span class="st-pill" style="${ssrRenderStyle({
6580
6629
  color: col.dot,
6581
6630
  borderColor: col.dot
6582
- })}" data-v-e4b51f68>${ssrInterpolate(stateOf(task))}</span></div>`);
6631
+ })}" data-v-3f91ab4e>${ssrInterpolate(stateOf(task))}</span></div>`);
6583
6632
  });
6584
6633
  _push(`<!--]--><!--]-->`);
6585
6634
  });
6586
6635
  _push(`<!--]--></div>`);
6587
6636
  }
6588
6637
  if (unref(menu)) {
6589
- _push(`<!--[--><div class="menu-backdrop" data-v-e4b51f68></div><div class="st-menu" style="${ssrRenderStyle({
6638
+ _push(`<!--[--><div class="menu-backdrop" data-v-3f91ab4e></div><div class="st-menu" style="${ssrRenderStyle({
6590
6639
  left: `${unref(menu).x}px`,
6591
6640
  top: `${unref(menu).y}px`
6592
- })}" data-v-e4b51f68><!--[-->`);
6641
+ })}" data-v-3f91ab4e><!--[-->`);
6593
6642
  ssrRenderList(unref(menuActions), (a) => {
6594
- _push(`<button type="button" class="${ssrRenderClass({ danger: a.danger })}" data-v-e4b51f68><span class="${ssrRenderClass(a.key === "cancel" ? "i-tabler-circle-off" : a.key === "retry" ? "i-tabler-rotate" : "i-tabler-external-link")}" data-v-e4b51f68></span> ${ssrInterpolate(a.label)}</button>`);
6643
+ _push(`<button type="button" class="${ssrRenderClass({ danger: a.danger })}" data-v-3f91ab4e><span class="${ssrRenderClass(a.key === "cancel" ? "i-tabler-circle-off" : a.key === "retry" ? "i-tabler-rotate" : "i-tabler-external-link")}" data-v-3f91ab4e></span> ${ssrInterpolate(a.label)}</button>`);
6595
6644
  });
6596
6645
  _push(`<!--]--></div><!--]-->`);
6597
6646
  } else _push(`<!---->`);
@@ -6607,7 +6656,7 @@ TaskBoardView_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) =
6607
6656
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/TaskBoardView.vue");
6608
6657
  return _sfc_setup$10 ? _sfc_setup$10(props, ctx) : void 0;
6609
6658
  };
6610
- var TaskBoardView_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(TaskBoardView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-e4b51f68"]]), { __name: "WorkshopTaskBoardView" });
6659
+ var TaskBoardView_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(TaskBoardView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-3f91ab4e"]]), { __name: "WorkshopTaskBoardView" });
6611
6660
  //#endregion
6612
6661
  //#region app/components/workshop/MultiChannelView.vue?vue&type=script&setup=true&lang.ts
6613
6662
  var COL_W_DEFAULT = 360;
@@ -6666,8 +6715,8 @@ var MultiChannelView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
6666
6715
  case "task.progress": return `${String(p.progress ?? "")}%`;
6667
6716
  case "agent.delta": return `…${String(p.delta ?? "").slice(-24)}`;
6668
6717
  case "agent.message": return `${String(p.parts?.[0]?.text ?? "").slice(0, 40)}`;
6669
- case "a2a.message": return `文本 ${String(p.parts?.[0]?.text ?? "").slice(0, 40)}`;
6670
- case "a2a.artifact": return `交付 ${String(p.artifact?.name ?? "")}`;
6718
+ case "a2a.message": return t("multiChannelView.a2aMessage", { p0: String(p.parts?.[0]?.text ?? "").slice(0, 40) });
6719
+ case "a2a.artifact": return t("multiChannelView.a2aArtifact", { p0: String(p.artifact?.name ?? "") });
6671
6720
  case "memory.saved": return t("multiChannelView.kfvue7n009", { p0: String(p.title ?? "") });
6672
6721
  case "agent.member": return t("multiChannelView.khq39oe010", {
6673
6722
  p0: String(p.op ?? ""),
@@ -6680,20 +6729,20 @@ var MultiChannelView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
6680
6729
  };
6681
6730
  return (_ctx, _push, _parent, _attrs) => {
6682
6731
  const _component_workshop_pane_splitter = PaneSplitter_default;
6683
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "split" }, _attrs))} data-v-51168f05>`);
6684
- if (unref(columns).length === 0) _push(`<div class="empty" data-v-51168f05>${ssrInterpolate(_ctx.$t("multiChannelView.k1bfi9ms001"))}</div>`);
6732
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "split" }, _attrs))} data-v-a23be16b>`);
6733
+ if (unref(columns).length === 0) _push(`<div class="empty" data-v-a23be16b>${ssrInterpolate(_ctx.$t("multiChannelView.k1bfi9ms001"))}</div>`);
6685
6734
  else _push(`<!---->`);
6686
6735
  _push(`<!--[-->`);
6687
6736
  ssrRenderList(unref(columns), (col) => {
6688
- _push(`<!--[--><div class="col" style="${ssrRenderStyle({ flexBasis: `${colWidth(col.id)}px` })}" data-v-51168f05><div class="col-head" data-v-51168f05><span class="col-name" data-v-51168f05>${ssrInterpolate(col.name)}</span><span class="col-meta" data-v-51168f05>`);
6737
+ _push(`<!--[--><div class="col" style="${ssrRenderStyle({ flexBasis: `${colWidth(col.id)}px` })}" data-v-a23be16b><div class="col-head" data-v-a23be16b><span class="col-name" data-v-a23be16b>${ssrInterpolate(col.name)}</span><span class="col-meta" data-v-a23be16b>`);
6689
6738
  if (col.synced) _push(`<!--[-->${ssrInterpolate(col.agents)}a / ${ssrInterpolate(_ctx.$t("multiChannelView.k4by6003"))}${ssrInterpolate(col.busy)} / ${ssrInterpolate(_ctx.$t("multiChannelView.k3wcox005"))}${ssrInterpolate(col.activeTasks)} / seq${ssrInterpolate(col.seq)}<!--]-->`);
6690
6739
  else _push(`<!--[-->${ssrInterpolate(_ctx.$t("multiChannelView.k1bst7s9002"))}<!--]-->`);
6691
- _push(`</span></div><div class="col-body" data-v-51168f05>`);
6692
- if (col.items.length === 0) _push(`<div class="col-empty" data-v-51168f05>${ssrInterpolate(col.synced ? _ctx.$t("multiChannelView.k1el0s5k004") : _ctx.$t("multiChannelView.k1bst7s9002"))}</div>`);
6740
+ _push(`</span></div><div class="col-body" data-v-a23be16b>`);
6741
+ if (col.items.length === 0) _push(`<div class="col-empty" data-v-a23be16b>${ssrInterpolate(col.synced ? _ctx.$t("multiChannelView.k1el0s5k004") : _ctx.$t("multiChannelView.k1bst7s9002"))}</div>`);
6693
6742
  else _push(`<!---->`);
6694
6743
  _push(`<!--[-->`);
6695
6744
  ssrRenderList(col.items, (e) => {
6696
- _push(`<div class="${ssrRenderClass([{ clickable: e.type === "task.status" }, "mini-event"])}" data-v-51168f05><span class="me-time" data-v-51168f05>${ssrInterpolate(unref(formatLocalClock)(e.at))}</span><span class="me-agent" data-v-51168f05>${ssrInterpolate(e.agentId?.slice(0, 4) ?? "sys")}</span><span class="me-text" data-v-51168f05>${ssrInterpolate(summaryOf(e))}</span></div>`);
6745
+ _push(`<div class="${ssrRenderClass([{ clickable: e.type === "task.status" }, "mini-event"])}" data-v-a23be16b><span class="me-time" data-v-a23be16b>${ssrInterpolate(unref(formatLocalClock)(e.at))}</span><span class="me-agent" data-v-a23be16b>${ssrInterpolate(e.agentId?.slice(0, 4) ?? "sys")}</span><span class="me-text" data-v-a23be16b>${ssrInterpolate(summaryOf(e))}</span></div>`);
6697
6746
  });
6698
6747
  _push(`<!--]--></div></div>`);
6699
6748
  _push(ssrRenderComponent(_component_workshop_pane_splitter, {
@@ -6715,7 +6764,7 @@ MultiChannelView_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx
6715
6764
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/MultiChannelView.vue");
6716
6765
  return _sfc_setup$9 ? _sfc_setup$9(props, ctx) : void 0;
6717
6766
  };
6718
- var MultiChannelView_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(MultiChannelView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-51168f05"]]), { __name: "WorkshopMultiChannelView" });
6767
+ var MultiChannelView_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(MultiChannelView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-a23be16b"]]), { __name: "WorkshopMultiChannelView" });
6719
6768
  //#endregion
6720
6769
  //#region app/components/workshop/MemoryPanel.vue?vue&type=script&setup=true&lang.ts
6721
6770
  var MemoryPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -6868,7 +6917,7 @@ var MemoryPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
6868
6917
  const _component_a_input = input_default;
6869
6918
  const _component_a_textarea = TextArea_default;
6870
6919
  const _component_a_input_number = input_number_default;
6871
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "memory-panel" }, _attrs))} data-v-25b1b7cc><div class="toolbar" data-v-25b1b7cc>`);
6920
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "memory-panel" }, _attrs))} data-v-159e9730><div class="toolbar" data-v-159e9730>`);
6872
6921
  _push(ssrRenderComponent(_component_a_radio_group, {
6873
6922
  value: unref(domain),
6874
6923
  "onUpdate:value": ($event) => isRef(domain) ? domain.value = $event : null,
@@ -6913,9 +6962,9 @@ var MemoryPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
6913
6962
  }))
6914
6963
  }, null, _parent));
6915
6964
  else _push(`<!---->`);
6916
- _push(ssrRenderComponent(_component_a_tooltip, { title: unref(tokenResolved) ? "成员 token 已自动装配" : "自动装配失败,可手动填入成员 token" }, {
6965
+ _push(ssrRenderComponent(_component_a_tooltip, { title: unref(tokenResolved) ? _ctx.$t("memoryPanel.tokenAuto") : _ctx.$t("memoryPanel.tokenManual") }, {
6917
6966
  default: withCtx((_, _push, _parent, _scopeId) => {
6918
- if (_push) _push(`<span class="token-state"${ssrRenderAttr("data-ok", unref(tokenResolved))} data-v-25b1b7cc${_scopeId}><span class="i-tabler-key" data-v-25b1b7cc${_scopeId}></span>${ssrInterpolate(unref(tokenResolved) ? "auto" : _ctx.$t("memoryPanel.k3zul4013"))}</span>`);
6967
+ if (_push) _push(`<span class="token-state"${ssrRenderAttr("data-ok", unref(tokenResolved))} data-v-159e9730${_scopeId}><span class="i-tabler-key" data-v-159e9730${_scopeId}></span>${ssrInterpolate(unref(tokenResolved) ? "auto" : _ctx.$t("memoryPanel.k3zul4013"))}</span>`);
6919
6968
  else return [createVNode("span", {
6920
6969
  class: "token-state",
6921
6970
  "data-ok": unref(tokenResolved)
@@ -6928,16 +6977,16 @@ var MemoryPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
6928
6977
  value: unref(manualToken),
6929
6978
  "onUpdate:value": ($event) => isRef(manualToken) ? manualToken.value = $event : null,
6930
6979
  size: "small",
6931
- placeholder: "Bearer token(成员身份,兜底手填)",
6980
+ placeholder: _ctx.$t("memoryPanel.tokenPh"),
6932
6981
  class: "token"
6933
6982
  }, null, _parent));
6934
6983
  else _push(`<!---->`);
6935
- _push(`<div class="search-bar" data-v-25b1b7cc>`);
6984
+ _push(`<div class="search-bar" data-v-159e9730>`);
6936
6985
  _push(ssrRenderComponent(_component_a_input_search, {
6937
6986
  value: unref(searchText),
6938
6987
  "onUpdate:value": ($event) => isRef(searchText) ? searchText.value = $event : null,
6939
6988
  size: "small",
6940
- placeholder: "混合检索记忆(FTS+向量,与 agent search_memory 同源)…",
6989
+ placeholder: _ctx.$t("memoryPanel.searchPh"),
6941
6990
  loading: unref(searching),
6942
6991
  onSearch: doSearch
6943
6992
  }, null, _parent));
@@ -6963,13 +7012,13 @@ var MemoryPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
6963
7012
  }, null, _parent));
6964
7013
  _push(`</div>`);
6965
7014
  if (unref(searchResults).length) {
6966
- _push(`<div class="search-results" data-v-25b1b7cc><!--[-->`);
7015
+ _push(`<div class="search-results" data-v-159e9730><!--[-->`);
6967
7016
  ssrRenderList(unref(searchResults), (s) => {
6968
- _push(`<div class="hit"${ssrRenderAttr("title", s.content.slice(0, 200))} data-v-25b1b7cc><span class="src"${ssrRenderAttr("data-source", s.source)} data-v-25b1b7cc>${ssrInterpolate(s.source)}</span><span class="score" data-v-25b1b7cc>${ssrInterpolate(s.score)}</span><span class="hit-title" data-v-25b1b7cc>${ssrInterpolate(s.title)}</span></div>`);
7017
+ _push(`<div class="hit"${ssrRenderAttr("title", s.content.slice(0, 200))} data-v-159e9730><span class="src"${ssrRenderAttr("data-source", s.source)} data-v-159e9730>${ssrInterpolate(s.source)}</span><span class="score" data-v-159e9730>${ssrInterpolate(s.score)}</span><span class="hit-title" data-v-159e9730>${ssrInterpolate(s.title)}</span></div>`);
6969
7018
  });
6970
7019
  _push(`<!--]--></div>`);
6971
7020
  } else _push(`<!---->`);
6972
- _push(`<div class="list-head" data-v-25b1b7cc><span data-v-25b1b7cc>${ssrInterpolate(_ctx.$t("memoryPanel.k1k7okbe007"))}</span>`);
7021
+ _push(`<div class="list-head" data-v-159e9730><span data-v-159e9730>${ssrInterpolate(_ctx.$t("memoryPanel.k1k7okbe007"))}</span>`);
6973
7022
  _push(ssrRenderComponent(_component_a_space, { size: "small" }, {
6974
7023
  default: withCtx((_, _push, _parent, _scopeId) => {
6975
7024
  if (_push) {
@@ -7019,7 +7068,7 @@ var MemoryPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
7019
7068
  if (_push) {
7020
7069
  _push(`<!--[-->`);
7021
7070
  ssrRenderList(unref(rows), (r) => {
7022
- _push(`<div class="row" data-v-25b1b7cc${_scopeId}><div class="row-head" data-v-25b1b7cc${_scopeId}>`);
7071
+ _push(`<div class="row" data-v-159e9730${_scopeId}><div class="row-head" data-v-159e9730${_scopeId}>`);
7023
7072
  _push(ssrRenderComponent(_component_a_tag, { class: "kind" }, {
7024
7073
  default: withCtx((_, _push, _parent, _scopeId) => {
7025
7074
  if (_push) _push(`${ssrInterpolate(r.kind)}`);
@@ -7027,10 +7076,10 @@ var MemoryPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
7027
7076
  }),
7028
7077
  _: 2
7029
7078
  }, _parent, _scopeId));
7030
- _push(`<span class="row-importance" data-v-25b1b7cc${_scopeId}>${ssrInterpolate(r.importance.toFixed(2))}</span><span class="row-title" data-v-25b1b7cc${_scopeId}>${ssrInterpolate(r.title)}</span></div><div class="row-content" data-v-25b1b7cc${_scopeId}>${ssrInterpolate(r.content.slice(0, 140))}${ssrInterpolate(r.content.length > 140 ? "…" : "")}</div></div>`);
7079
+ _push(`<span class="row-importance" data-v-159e9730${_scopeId}>${ssrInterpolate(r.importance.toFixed(2))}</span><span class="row-title" data-v-159e9730${_scopeId}>${ssrInterpolate(r.title)}</span></div><div class="row-content" data-v-159e9730${_scopeId}>${ssrInterpolate(r.content.slice(0, 140))}${ssrInterpolate(r.content.length > 140 ? "…" : "")}</div></div>`);
7031
7080
  });
7032
7081
  _push(`<!--]-->`);
7033
- if (unref(rows).length === 0 && !unref(loading)) _push(`<div class="empty" data-v-25b1b7cc${_scopeId}> (${ssrInterpolate(_ctx.$t("memoryPanel.k43rxk011"))}</div>`);
7082
+ if (unref(rows).length === 0 && !unref(loading)) _push(`<div class="empty" data-v-159e9730${_scopeId}> (${ssrInterpolate(_ctx.$t("memoryPanel.k43rxk011"))}</div>`);
7034
7083
  else _push(`<!---->`);
7035
7084
  } else return [(openBlock(true), createBlock(Fragment, null, renderList(unref(rows), (r) => {
7036
7085
  return openBlock(), createBlock("div", {
@@ -7055,8 +7104,8 @@ var MemoryPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
7055
7104
  open: unref(writeOpen),
7056
7105
  "onUpdate:open": ($event) => isRef(writeOpen) ? writeOpen.value = $event : null,
7057
7106
  title: _ctx.$t("memoryPanel.k1bbee8p002"),
7058
- "ok-text": "写入",
7059
- "cancel-text": "取消",
7107
+ "ok-text": _ctx.$t("memoryPanel.writeOk"),
7108
+ "cancel-text": _ctx.$t("common.cancel"),
7060
7109
  onOk: doWrite
7061
7110
  }, {
7062
7111
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -7158,7 +7207,7 @@ var MemoryPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
7158
7207
  }),
7159
7208
  _: 1
7160
7209
  }, _parent, _scopeId));
7161
- _push(ssrRenderComponent(_component_a_form_item, { label: "dedupKey(可选,幂等)" }, {
7210
+ _push(ssrRenderComponent(_component_a_form_item, { label: _ctx.$t("memoryPanel.dedupLabel") }, {
7162
7211
  default: withCtx((_, _push, _parent, _scopeId) => {
7163
7212
  if (_push) _push(ssrRenderComponent(_component_a_input, {
7164
7213
  value: unref(writeForm).dedupKey,
@@ -7213,13 +7262,13 @@ var MemoryPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
7213
7262
  }, null, 8, ["value", "onUpdate:value"])]),
7214
7263
  _: 1
7215
7264
  }),
7216
- createVNode(_component_a_form_item, { label: "dedupKey(可选,幂等)" }, {
7265
+ createVNode(_component_a_form_item, { label: _ctx.$t("memoryPanel.dedupLabel") }, {
7217
7266
  default: withCtx(() => [createVNode(_component_a_input, {
7218
7267
  value: unref(writeForm).dedupKey,
7219
7268
  "onUpdate:value": ($event) => unref(writeForm).dedupKey = $event
7220
7269
  }, null, 8, ["value", "onUpdate:value"])]),
7221
7270
  _: 1
7222
- })
7271
+ }, 8, ["label"])
7223
7272
  ];
7224
7273
  }),
7225
7274
  _: 1
@@ -7267,13 +7316,13 @@ var MemoryPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
7267
7316
  }, null, 8, ["value", "onUpdate:value"])]),
7268
7317
  _: 1
7269
7318
  }),
7270
- createVNode(_component_a_form_item, { label: "dedupKey(可选,幂等)" }, {
7319
+ createVNode(_component_a_form_item, { label: _ctx.$t("memoryPanel.dedupLabel") }, {
7271
7320
  default: withCtx(() => [createVNode(_component_a_input, {
7272
7321
  value: unref(writeForm).dedupKey,
7273
7322
  "onUpdate:value": ($event) => unref(writeForm).dedupKey = $event
7274
7323
  }, null, 8, ["value", "onUpdate:value"])]),
7275
7324
  _: 1
7276
- })
7325
+ }, 8, ["label"])
7277
7326
  ]),
7278
7327
  _: 1
7279
7328
  })];
@@ -7292,7 +7341,7 @@ MemoryPanel_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) =>
7292
7341
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/MemoryPanel.vue");
7293
7342
  return _sfc_setup$8 ? _sfc_setup$8(props, ctx) : void 0;
7294
7343
  };
7295
- var MemoryPanel_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(MemoryPanel_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-25b1b7cc"]]), { __name: "WorkshopMemoryPanel" });
7344
+ var MemoryPanel_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(MemoryPanel_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-159e9730"]]), { __name: "WorkshopMemoryPanel" });
7296
7345
  //#endregion
7297
7346
  //#region app/components/workshop/StatsPanel.vue?vue&type=script&setup=true&lang.ts
7298
7347
  var WINDOW = 60;
@@ -7447,7 +7496,7 @@ var InspectorPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
7447
7496
  const _component_a_progress = progress_default;
7448
7497
  const _component_workshop_memory_panel = MemoryPanel_default;
7449
7498
  const _component_workshop_stats_panel = StatsPanel_default;
7450
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "inspector" }, _attrs))} data-v-b3dfa7e4>`);
7499
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "inspector" }, _attrs))} data-v-38b7c15b>`);
7451
7500
  _push(ssrRenderComponent(_component_a_tabs, {
7452
7501
  "active-key": unref(tab),
7453
7502
  "onUpdate:activeKey": ($event) => isRef(tab) ? tab.value = $event : null,
@@ -7458,16 +7507,16 @@ var InspectorPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
7458
7507
  if (_push) {
7459
7508
  _push(ssrRenderComponent(_component_a_tab_pane, {
7460
7509
  key: "members",
7461
- tab: "成员"
7510
+ tab: _ctx.$t("inspectorPanel.tabMembers")
7462
7511
  }, {
7463
7512
  default: withCtx((_, _push, _parent, _scopeId) => {
7464
7513
  if (_push) {
7465
7514
  _push(`<!--[-->`);
7466
7515
  ssrRenderList(unref(agents), (a) => {
7467
- _push(`<div class="member aw-tile" role="button" tabindex="0" data-v-b3dfa7e4${_scopeId}><span class="dot" style="${ssrRenderStyle({ background: stateDot[a.state] ?? "var(--tone-neutral-dot)" })}" data-v-b3dfa7e4${_scopeId}></span><div class="member-info" data-v-b3dfa7e4${_scopeId}><div class="member-name" data-v-b3dfa7e4${_scopeId}><span class="name-text" data-v-b3dfa7e4${_scopeId}>${ssrInterpolate(a.name)}</span><span class="${ssrRenderClass([a.role, "role-chip"])}" data-v-b3dfa7e4${_scopeId}>${ssrInterpolate(a.role)}</span></div><div class="member-meta" data-v-b3dfa7e4${_scopeId}>`);
7516
+ _push(`<div class="member aw-tile" role="button" tabindex="0" data-v-38b7c15b${_scopeId}><span class="dot" style="${ssrRenderStyle({ background: stateDot[a.state] ?? "var(--tone-neutral-dot)" })}" data-v-38b7c15b${_scopeId}></span><div class="member-info" data-v-38b7c15b${_scopeId}><div class="member-name" data-v-38b7c15b${_scopeId}><span class="name-text" data-v-38b7c15b${_scopeId}>${ssrInterpolate(a.name)}</span><span class="${ssrRenderClass([a.role, "role-chip"])}" data-v-38b7c15b${_scopeId}>${ssrInterpolate(a.role)}</span></div><div class="member-meta" data-v-38b7c15b${_scopeId}>`);
7468
7517
  if (a.state === "busy" && a.currentTaskTitle) {
7469
7518
  _push(`<!--[-->${ssrInterpolate(a.currentTaskTitle)} `);
7470
- if (a.currentTaskProgress != null) _push(`<span class="prog" data-v-b3dfa7e4${_scopeId}>${ssrInterpolate(a.currentTaskProgress)}%</span>`);
7519
+ if (a.currentTaskProgress != null) _push(`<span class="prog" data-v-38b7c15b${_scopeId}>${ssrInterpolate(a.currentTaskProgress)}%</span>`);
7471
7520
  else _push(`<!---->`);
7472
7521
  _push(`<!--]-->`);
7473
7522
  } else {
@@ -7478,10 +7527,10 @@ var InspectorPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
7478
7527
  else _push(`<!---->`);
7479
7528
  _push(`<!--]-->`);
7480
7529
  }
7481
- _push(`</div><div class="member-cap" data-v-b3dfa7e4${_scopeId}>${ssrInterpolate(capLine(a.agentId))}</div></div></div>`);
7530
+ _push(`</div><div class="member-cap" data-v-38b7c15b${_scopeId}>${ssrInterpolate(capLine(a.agentId))}</div></div></div>`);
7482
7531
  });
7483
7532
  _push(`<!--]-->`);
7484
- if (unref(agents).length === 0) _push(`<div class="empty" data-v-b3dfa7e4${_scopeId}>${ssrInterpolate(unref(synced) ? _ctx.$t("inspectorPanel.k1el4cgf005") : _ctx.$t("inspectorPanel.k1tqitzl008"))}</div>`);
7533
+ if (unref(agents).length === 0) _push(`<div class="empty" data-v-38b7c15b${_scopeId}>${ssrInterpolate(unref(synced) ? _ctx.$t("inspectorPanel.k1el4cgf005") : _ctx.$t("inspectorPanel.k1tqitzl008"))}</div>`);
7485
7534
  else _push(`<!---->`);
7486
7535
  } else return [(openBlock(true), createBlock(Fragment, null, renderList(unref(agents), (a) => {
7487
7536
  return openBlock(), createBlock("div", {
@@ -7515,16 +7564,16 @@ var InspectorPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
7515
7564
  }, _parent, _scopeId));
7516
7565
  _push(ssrRenderComponent(_component_a_tab_pane, {
7517
7566
  key: "tasks",
7518
- tab: "任务"
7567
+ tab: _ctx.$t("inspectorPanel.tabTasks")
7519
7568
  }, {
7520
7569
  default: withCtx((_, _push, _parent, _scopeId) => {
7521
7570
  if (_push) {
7522
7571
  _push(`<!--[-->`);
7523
7572
  ssrRenderList(unref(rootTasks), (task) => {
7524
- _push(`<div class="task aw-tile" role="button" tabindex="0" data-v-b3dfa7e4${_scopeId}><div class="task-head" data-v-b3dfa7e4${_scopeId}><span class="state-chip aw-mono" data-v-b3dfa7e4${_scopeId}>${ssrInterpolate(task.state)}</span><span class="task-title" data-v-b3dfa7e4${_scopeId}>${ssrInterpolate(task.title)}</span></div><div class="task-meta" data-v-b3dfa7e4${_scopeId}>${ssrInterpolate(task.id.slice(0, 8))} · ${ssrInterpolate(task.progress)}% `);
7525
- if (childCount(task.id)) _push(`<span data-v-b3dfa7e4${_scopeId}>· ${ssrInterpolate(_ctx.$t("inspectorPanel.k3mp44x003"))} ${ssrInterpolate(childCount(task.id))}</span>`);
7573
+ _push(`<div class="task aw-tile" role="button" tabindex="0" data-v-38b7c15b${_scopeId}><div class="task-head" data-v-38b7c15b${_scopeId}><span class="state-chip aw-mono" data-v-38b7c15b${_scopeId}>${ssrInterpolate(task.state)}</span><span class="task-title" data-v-38b7c15b${_scopeId}>${ssrInterpolate(task.title)}</span></div><div class="task-meta" data-v-38b7c15b${_scopeId}>${ssrInterpolate(task.id.slice(0, 8))} · ${ssrInterpolate(task.progress)}% `);
7574
+ if (childCount(task.id)) _push(`<span data-v-38b7c15b${_scopeId}>· ${ssrInterpolate(_ctx.$t("inspectorPanel.k3mp44x003"))} ${ssrInterpolate(childCount(task.id))}</span>`);
7526
7575
  else _push(`<!---->`);
7527
- if (task.artifacts) _push(`<span data-v-b3dfa7e4${_scopeId}>· ${ssrInterpolate(_ctx.$t("inspectorPanel.k3w9q9004"))} ${ssrInterpolate(task.artifacts)}</span>`);
7576
+ if (task.artifacts) _push(`<span data-v-38b7c15b${_scopeId}>· ${ssrInterpolate(_ctx.$t("inspectorPanel.k3w9q9004"))} ${ssrInterpolate(task.artifacts)}</span>`);
7528
7577
  else _push(`<!---->`);
7529
7578
  _push(`</div>`);
7530
7579
  if (task.state === "WORKING") _push(ssrRenderComponent(_component_a_progress, {
@@ -7536,7 +7585,7 @@ var InspectorPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
7536
7585
  _push(`</div>`);
7537
7586
  });
7538
7587
  _push(`<!--]-->`);
7539
- if (unref(rootTasks).length === 0) _push(`<div class="empty" data-v-b3dfa7e4${_scopeId}>${ssrInterpolate(unref(synced) ? _ctx.$t("inspectorPanel.k1el0vqb006") : _ctx.$t("inspectorPanel.kks0y5h009"))}</div>`);
7588
+ if (unref(rootTasks).length === 0) _push(`<div class="empty" data-v-38b7c15b${_scopeId}>${ssrInterpolate(unref(synced) ? _ctx.$t("inspectorPanel.k1el0vqb006") : _ctx.$t("inspectorPanel.kks0y5h009"))}</div>`);
7540
7589
  else _push(`<!---->`);
7541
7590
  } else return [(openBlock(true), createBlock(Fragment, null, renderList(unref(rootTasks), (task) => {
7542
7591
  return openBlock(), createBlock("div", {
@@ -7569,7 +7618,7 @@ var InspectorPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
7569
7618
  }, _parent, _scopeId));
7570
7619
  _push(ssrRenderComponent(_component_a_tab_pane, {
7571
7620
  key: "memory",
7572
- tab: "记忆"
7621
+ tab: _ctx.$t("inspectorPanel.tabMemory")
7573
7622
  }, {
7574
7623
  default: withCtx((_, _push, _parent, _scopeId) => {
7575
7624
  if (_push) _push(ssrRenderComponent(_component_workshop_memory_panel, { "channel-id": __props.channelId }, null, _parent, _scopeId));
@@ -7579,7 +7628,7 @@ var InspectorPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
7579
7628
  }, _parent, _scopeId));
7580
7629
  _push(ssrRenderComponent(_component_a_tab_pane, {
7581
7630
  key: "stats",
7582
- tab: "统计"
7631
+ tab: _ctx.$t("inspectorPanel.tabStats")
7583
7632
  }, {
7584
7633
  default: withCtx((_, _push, _parent, _scopeId) => {
7585
7634
  if (_push) _push(ssrRenderComponent(_component_workshop_stats_panel, { "channel-id": __props.channelId }, null, _parent, _scopeId));
@@ -7590,7 +7639,7 @@ var InspectorPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
7590
7639
  } else return [
7591
7640
  createVNode(_component_a_tab_pane, {
7592
7641
  key: "members",
7593
- tab: "成员"
7642
+ tab: _ctx.$t("inspectorPanel.tabMembers")
7594
7643
  }, {
7595
7644
  default: withCtx(() => [(openBlock(true), createBlock(Fragment, null, renderList(unref(agents), (a) => {
7596
7645
  return openBlock(), createBlock("div", {
@@ -7620,10 +7669,10 @@ var InspectorPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
7620
7669
  class: "empty"
7621
7670
  }, toDisplayString(unref(synced) ? _ctx.$t("inspectorPanel.k1el4cgf005") : _ctx.$t("inspectorPanel.k1tqitzl008")), 1)) : createCommentVNode("", true)]),
7622
7671
  _: 1
7623
- }),
7672
+ }, 8, ["tab"]),
7624
7673
  createVNode(_component_a_tab_pane, {
7625
7674
  key: "tasks",
7626
- tab: "任务"
7675
+ tab: _ctx.$t("inspectorPanel.tabTasks")
7627
7676
  }, {
7628
7677
  default: withCtx(() => [(openBlock(true), createBlock(Fragment, null, renderList(unref(rootTasks), (task) => {
7629
7678
  return openBlock(), createBlock("div", {
@@ -7652,21 +7701,21 @@ var InspectorPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
7652
7701
  class: "empty"
7653
7702
  }, toDisplayString(unref(synced) ? _ctx.$t("inspectorPanel.k1el0vqb006") : _ctx.$t("inspectorPanel.kks0y5h009")), 1)) : createCommentVNode("", true)]),
7654
7703
  _: 1
7655
- }),
7704
+ }, 8, ["tab"]),
7656
7705
  createVNode(_component_a_tab_pane, {
7657
7706
  key: "memory",
7658
- tab: "记忆"
7707
+ tab: _ctx.$t("inspectorPanel.tabMemory")
7659
7708
  }, {
7660
7709
  default: withCtx(() => [createVNode(_component_workshop_memory_panel, { "channel-id": __props.channelId }, null, 8, ["channel-id"])]),
7661
7710
  _: 1
7662
- }),
7711
+ }, 8, ["tab"]),
7663
7712
  createVNode(_component_a_tab_pane, {
7664
7713
  key: "stats",
7665
- tab: "统计"
7714
+ tab: _ctx.$t("inspectorPanel.tabStats")
7666
7715
  }, {
7667
7716
  default: withCtx(() => [createVNode(_component_workshop_stats_panel, { "channel-id": __props.channelId }, null, 8, ["channel-id"])]),
7668
7717
  _: 1
7669
- })
7718
+ }, 8, ["tab"])
7670
7719
  ];
7671
7720
  }),
7672
7721
  _: 1
@@ -7683,7 +7732,7 @@ InspectorPanel_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx)
7683
7732
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/InspectorPanel.vue");
7684
7733
  return _sfc_setup$6 ? _sfc_setup$6(props, ctx) : void 0;
7685
7734
  };
7686
- var InspectorPanel_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(InspectorPanel_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-b3dfa7e4"]]), { __name: "WorkshopInspectorPanel" });
7735
+ var InspectorPanel_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(InspectorPanel_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-38b7c15b"]]), { __name: "WorkshopInspectorPanel" });
7687
7736
  //#endregion
7688
7737
  //#region app/components/workshop/Composer.vue?vue&type=script&setup=true&lang.ts
7689
7738
  var Composer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -7814,33 +7863,33 @@ var Composer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
7814
7863
  return (_ctx, _push, _parent, _attrs) => {
7815
7864
  const _component_a_select = Select;
7816
7865
  const _component_a_input_number = input_number_default;
7817
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "composer" }, _attrs))} data-v-bddcd471><div class="composer-box" data-v-bddcd471>`);
7866
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "composer" }, _attrs))} data-v-3211862c><div class="composer-box" data-v-3211862c>`);
7818
7867
  if (unref(mentionOpen)) {
7819
- _push(`<div class="mention-menu" data-v-bddcd471><div class="mention-title" data-v-bddcd471>${ssrInterpolate(_ctx.$t("composer.k1bxvc46004"))}</div><!--[-->`);
7868
+ _push(`<div class="mention-menu" data-v-3211862c><div class="mention-title" data-v-3211862c>${ssrInterpolate(_ctx.$t("composer.k1bxvc46004"))}</div><!--[-->`);
7820
7869
  ssrRenderList(unref(mentionCandidates), (a, i) => {
7821
- _push(`<button type="button" class="${ssrRenderClass([{ sel: i === unref(mentionHi) }, "mention-opt"])}" data-v-bddcd471><span class="aw-avatar is-agent mention-ava" style="${ssrRenderStyle({ "--av": unref(agentHueColor)(a.agentId) })}" data-v-bddcd471>${ssrInterpolate(a.name.charAt(0).toUpperCase())}</span><span class="mention-name" data-v-bddcd471>@${ssrInterpolate(a.name)}</span><span class="mention-role" data-v-bddcd471>${ssrInterpolate(a.role)}</span><span class="${ssrRenderClass([a.state, "mention-state"])}"${ssrRenderAttr("title", a.state)} data-v-bddcd471></span></button>`);
7870
+ _push(`<button type="button" class="${ssrRenderClass([{ sel: i === unref(mentionHi) }, "mention-opt"])}" data-v-3211862c><span class="aw-avatar is-agent mention-ava" style="${ssrRenderStyle({ "--av": unref(agentHueColor)(a.agentId) })}" data-v-3211862c>${ssrInterpolate(a.name.charAt(0).toUpperCase())}</span><span class="mention-name" data-v-3211862c>@${ssrInterpolate(a.name)}</span><span class="mention-role" data-v-3211862c>${ssrInterpolate(a.role)}</span><span class="${ssrRenderClass([a.state, "mention-state"])}"${ssrRenderAttr("title", a.state)} data-v-3211862c></span></button>`);
7822
7871
  });
7823
7872
  _push(`<!--]--></div>`);
7824
7873
  } else _push(`<!---->`);
7825
- _push(`<div class="composer-status-chip" data-v-bddcd471>`);
7874
+ _push(`<div class="composer-status-chip" data-v-3211862c>`);
7826
7875
  if (unref(mode) === "task") {
7827
- _push(`<!--[--><span class="chip-key" data-v-bddcd471>${ssrInterpolate(_ctx.$t("composer.k3wcox005"))}</span><span data-v-bddcd471>${ssrInterpolate(unref(taskMode))}</span>`);
7828
- if (unref(taskMode) === "loop") _push(`<span data-v-bddcd471>${ssrInterpolate(_ctx.$t("composer.k49kr1011"))} ${ssrInterpolate(unref(loopIntervalSeconds) ?? "-")}s </span>`);
7876
+ _push(`<!--[--><span class="chip-key" data-v-3211862c>${ssrInterpolate(_ctx.$t("composer.k3wcox005"))}</span><span data-v-3211862c>${ssrInterpolate(unref(taskMode))}</span>`);
7877
+ if (unref(taskMode) === "loop") _push(`<span data-v-3211862c>${ssrInterpolate(_ctx.$t("composer.k49kr1011"))} ${ssrInterpolate(unref(loopIntervalSeconds) ?? "-")}s </span>`);
7829
7878
  else _push(`<!---->`);
7830
- _push(`<span class="chip-target"${ssrRenderAttr("title", unref(isDefaultLead) ? "未 @ 指定:任务自动路由 lead 调度;@ 某成员可直发" : _ctx.$t("composer.kl3604i033", { p0: unref(targetName) }))} data-v-bddcd471>→ ${ssrInterpolate(unref(targetName) ? `@${unref(targetName)}` : "lead")}${ssrInterpolate(unref(isDefaultLead) ? _ctx.$t("composer.k2z7yuw012") : _ctx.$t("composer.k2z0fsx032"))}</span>`);
7831
- if (unref(reachHint)) _push(`<span class="reach-chip"${ssrRenderAttr("data-tone", unref(reachHint).tone)}${ssrRenderAttr("title", unref(reachHint).title)} data-v-bddcd471><span class="reach-dot" aria-hidden="true" data-v-bddcd471></span>${ssrInterpolate(unref(reachHint).text)}</span>`);
7879
+ _push(`<span class="chip-target"${ssrRenderAttr("title", unref(isDefaultLead) ? _ctx.$t("composer.defaultLeadTitle") : _ctx.$t("composer.kl3604i033", { p0: unref(targetName) }))} data-v-3211862c>→ ${ssrInterpolate(unref(targetName) ? `@${unref(targetName)}` : "lead")}${ssrInterpolate(unref(isDefaultLead) ? _ctx.$t("composer.k2z7yuw012") : _ctx.$t("composer.k2z0fsx032"))}</span>`);
7880
+ if (unref(reachHint)) _push(`<span class="reach-chip"${ssrRenderAttr("data-tone", unref(reachHint).tone)}${ssrRenderAttr("title", unref(reachHint).title)} data-v-3211862c><span class="reach-dot" aria-hidden="true" data-v-3211862c></span>${ssrInterpolate(unref(reachHint).text)}</span>`);
7832
7881
  else _push(`<!---->`);
7833
- _push(`<span class="chip-hint" data-v-bddcd471>${ssrInterpolate(_ctx.$t("composer.k17u6q77006"))}</span><!--]-->`);
7882
+ _push(`<span class="chip-hint" data-v-3211862c>${ssrInterpolate(_ctx.$t("composer.k17u6q77006"))}</span><!--]-->`);
7834
7883
  } else {
7835
- _push(`<!--[--><span class="chip-key" data-v-bddcd471>${ssrInterpolate(_ctx.$t("composer.k41ykc007"))}</span>`);
7836
- if (unref(targetName)) _push(`<span data-v-bddcd471>@${ssrInterpolate(unref(targetName))}${ssrInterpolate(unref(isDefaultLead) ? _ctx.$t("composer.k2z7yuw012") : "")}</span>`);
7884
+ _push(`<!--[--><span class="chip-key" data-v-3211862c>${ssrInterpolate(_ctx.$t("composer.k41ykc007"))}</span>`);
7885
+ if (unref(targetName)) _push(`<span data-v-3211862c>@${ssrInterpolate(unref(targetName))}${ssrInterpolate(unref(isDefaultLead) ? _ctx.$t("composer.k2z7yuw012") : "")}</span>`);
7837
7886
  else _push(`<!---->`);
7838
- _push(`<span data-v-bddcd471>${ssrInterpolate(unref(priority) === "immediate" ? _ctx.$t("composer.k1bosqfv013") : _ctx.$t("composer.k40g8m009"))}</span>`);
7839
- if (unref(reachHint)) _push(`<span class="reach-chip"${ssrRenderAttr("data-tone", unref(reachHint).tone)}${ssrRenderAttr("title", unref(reachHint).title)} data-v-bddcd471><span class="reach-dot" aria-hidden="true" data-v-bddcd471></span>${ssrInterpolate(unref(reachHint).text)}</span>`);
7887
+ _push(`<span data-v-3211862c>${ssrInterpolate(unref(priority) === "immediate" ? _ctx.$t("composer.k1bosqfv013") : _ctx.$t("composer.k40g8m009"))}</span>`);
7888
+ if (unref(reachHint)) _push(`<span class="reach-chip"${ssrRenderAttr("data-tone", unref(reachHint).tone)}${ssrRenderAttr("title", unref(reachHint).title)} data-v-3211862c><span class="reach-dot" aria-hidden="true" data-v-3211862c></span>${ssrInterpolate(unref(reachHint).text)}</span>`);
7840
7889
  else _push(`<!---->`);
7841
- _push(`<span class="chip-hint" data-v-bddcd471>输入 @ 提及成员 · ⌘/Ctrl+Enter 发送</span><!--]-->`);
7890
+ _push(`<span class="chip-hint" data-v-3211862c>${ssrInterpolate(_ctx.$t("composer.chipHint"))}</span><!--]-->`);
7842
7891
  }
7843
- _push(`</div><textarea class="composer-input" rows="1"${ssrRenderAttr("placeholder", unref(placeholder))} data-v-bddcd471>${ssrInterpolate(unref(input))}</textarea><div class="composer-bar" data-v-bddcd471><div class="cb-left" data-v-bddcd471><div class="aw-seg" data-v-bddcd471><button type="button" class="${ssrRenderClass({ on: unref(mode) === "task" })}" data-v-bddcd471>${ssrInterpolate(_ctx.$t("composer.k3wcox005"))}</button><button type="button" class="${ssrRenderClass({ on: unref(mode) === "message" })}" data-v-bddcd471>${ssrInterpolate(_ctx.$t("composer.k41ykc007"))}</button></div>`);
7892
+ _push(`</div><textarea class="composer-input" rows="1"${ssrRenderAttr("placeholder", unref(placeholder))} data-v-3211862c>${ssrInterpolate(unref(input))}</textarea><div class="composer-bar" data-v-3211862c><div class="cb-left" data-v-3211862c><div class="aw-seg" data-v-3211862c><button type="button" class="${ssrRenderClass({ on: unref(mode) === "task" })}" data-v-3211862c>${ssrInterpolate(_ctx.$t("composer.k3wcox005"))}</button><button type="button" class="${ssrRenderClass({ on: unref(mode) === "message" })}" data-v-3211862c>${ssrInterpolate(_ctx.$t("composer.k41ykc007"))}</button></div>`);
7844
7893
  _push(ssrRenderComponent(_component_a_select, {
7845
7894
  value: unref(toAgentId),
7846
7895
  "onUpdate:value": ($event) => isRef(toAgentId) ? toAgentId.value = $event : null,
@@ -7852,13 +7901,13 @@ var Composer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
7852
7901
  }))
7853
7902
  }, null, _parent));
7854
7903
  if (unref(mode) === "task") {
7855
- _push(`<!--[--><div class="aw-seg" data-v-bddcd471><!--[-->`);
7904
+ _push(`<!--[--><div class="aw-seg" data-v-3211862c><!--[-->`);
7856
7905
  ssrRenderList([
7857
7906
  "goal",
7858
7907
  "loop",
7859
7908
  "pipeline"
7860
7909
  ], (m) => {
7861
- _push(`<button type="button" class="${ssrRenderClass({ on: unref(taskMode) === m })}" data-v-bddcd471>${ssrInterpolate(m)}</button>`);
7910
+ _push(`<button type="button" class="${ssrRenderClass({ on: unref(taskMode) === m })}" data-v-3211862c>${ssrInterpolate(m)}</button>`);
7862
7911
  });
7863
7912
  _push(`<!--]--></div>`);
7864
7913
  if (unref(taskMode) === "loop") {
@@ -7871,7 +7920,7 @@ var Composer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
7871
7920
  max: 86400,
7872
7921
  step: 1,
7873
7922
  precision: 0,
7874
- "addon-after": "秒",
7923
+ "addon-after": _ctx.$t("composer.seconds"),
7875
7924
  class: "loop-number"
7876
7925
  }, null, _parent));
7877
7926
  _push(ssrRenderComponent(_component_a_input_number, {
@@ -7888,8 +7937,8 @@ var Composer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
7888
7937
  _push(`<!--]-->`);
7889
7938
  } else _push(`<!---->`);
7890
7939
  _push(`<!--]-->`);
7891
- } else _push(`<!--[--><div class="aw-seg" data-v-bddcd471><button type="button" class="${ssrRenderClass({ on: unref(priority) === "immediate" })}"${ssrRenderAttr("title", _ctx.$t("composer.k1jqqvhe002"))} data-v-bddcd471>${ssrInterpolate(_ctx.$t("composer.k3x9n2008"))}</button><button type="button" class="${ssrRenderClass({ on: unref(priority) === "task" })}" data-v-bddcd471>${ssrInterpolate(_ctx.$t("composer.k40g8m009"))}</button></div><button type="button" class="${ssrRenderClass([{ on: unref(requireReply) }, "chip-toggle"])}"${ssrRenderAttr("title", _ctx.$t("composer.k195594v003"))} data-v-bddcd471><span class="i-tabler-mail-forward" data-v-bddcd471></span> ${ssrInterpolate(_ctx.$t("composer.k3xv7u010"))}</button><!--]-->`);
7892
- _push(`</div><div class="cb-right" data-v-bddcd471><button type="button" class="send-btn im"${ssrIncludeBooleanAttr(unref(sendLoading) || !unref(input).trim()) ? " disabled" : ""} title="发送(⌘/Ctrl+Enter)" data-v-bddcd471><span class="i-tabler-send im-nudge-up" data-v-bddcd471></span></button></div></div></div></div>`);
7940
+ } else _push(`<!--[--><div class="aw-seg" data-v-3211862c><button type="button" class="${ssrRenderClass({ on: unref(priority) === "immediate" })}"${ssrRenderAttr("title", _ctx.$t("composer.k1jqqvhe002"))} data-v-3211862c>${ssrInterpolate(_ctx.$t("composer.k3x9n2008"))}</button><button type="button" class="${ssrRenderClass({ on: unref(priority) === "task" })}" data-v-3211862c>${ssrInterpolate(_ctx.$t("composer.k40g8m009"))}</button></div><button type="button" class="${ssrRenderClass([{ on: unref(requireReply) }, "chip-toggle"])}"${ssrRenderAttr("title", _ctx.$t("composer.k195594v003"))} data-v-3211862c><span class="i-tabler-mail-forward" data-v-3211862c></span> ${ssrInterpolate(_ctx.$t("composer.k3xv7u010"))}</button><!--]-->`);
7941
+ _push(`</div><div class="cb-right" data-v-3211862c><button type="button" class="send-btn im"${ssrIncludeBooleanAttr(unref(sendLoading) || !unref(input).trim()) ? " disabled" : ""}${ssrRenderAttr("title", _ctx.$t("composer.sendTitle"))} data-v-3211862c><span class="i-tabler-send im-nudge-up" data-v-3211862c></span></button></div></div></div></div>`);
7893
7942
  };
7894
7943
  }
7895
7944
  });
@@ -7901,7 +7950,7 @@ Composer_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
7901
7950
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/Composer.vue");
7902
7951
  return _sfc_setup$5 ? _sfc_setup$5(props, ctx) : void 0;
7903
7952
  };
7904
- var Composer_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(Composer_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-bddcd471"]]), { __name: "WorkshopComposer" });
7953
+ var Composer_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(Composer_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-3211862c"]]), { __name: "WorkshopComposer" });
7905
7954
  //#endregion
7906
7955
  //#region app/components/workshop/AgentInspectorDrawer.vue?vue&type=script&setup=true&lang.ts
7907
7956
  var DRAWER_W_DEFAULT$2 = 520;
@@ -8060,7 +8109,7 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8060
8109
  onReset: ($event) => drawerWidth.value = DRAWER_W_DEFAULT$2
8061
8110
  }, null, _parent, _scopeId));
8062
8111
  if (unref(agent)) {
8063
- _push(`<!--[--><div class="head" data-v-69681b3a${_scopeId}><span class="dot" style="${ssrRenderStyle({ background: stateDot[unref(agent).state] ?? "var(--tone-neutral-dot)" })}" data-v-69681b3a${_scopeId}></span><span class="state-text" data-v-69681b3a${_scopeId}>${ssrInterpolate(unref(agent).state)}</span><span class="role-chip" data-v-69681b3a${_scopeId}>${ssrInterpolate(unref(agent).harness)}</span><span class="queue-meta" data-v-69681b3a${_scopeId}>${ssrInterpolate(_ctx.$t("agentInspectorDrawer.k498bf010"))}${ssrInterpolate(unref(agent).queued ?? 0)} · ${ssrInterpolate(_ctx.$t("agentInspectorDrawer.k3ypnl022"))}${ssrInterpolate(unref(agent).completed ?? 0)}</span>`);
8112
+ _push(`<!--[--><div class="head" data-v-fbf23e4d${_scopeId}><span class="dot" style="${ssrRenderStyle({ background: stateDot[unref(agent).state] ?? "var(--tone-neutral-dot)" })}" data-v-fbf23e4d${_scopeId}></span><span class="state-text" data-v-fbf23e4d${_scopeId}>${ssrInterpolate(unref(agent).state)}</span><span class="role-chip" data-v-fbf23e4d${_scopeId}>${ssrInterpolate(unref(agent).harness)}</span><span class="queue-meta" data-v-fbf23e4d${_scopeId}>${ssrInterpolate(_ctx.$t("agentInspectorDrawer.k498bf010"))}${ssrInterpolate(unref(agent).queued ?? 0)} · ${ssrInterpolate(_ctx.$t("agentInspectorDrawer.k3ypnl022"))}${ssrInterpolate(unref(agent).completed ?? 0)}</span>`);
8064
8113
  _push(ssrRenderComponent(_component_a_button, {
8065
8114
  size: "small",
8066
8115
  type: unref(focusActive) ? "primary" : "default",
@@ -8073,7 +8122,7 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8073
8122
  _: 1
8074
8123
  }, _parent, _scopeId));
8075
8124
  _push(`</div>`);
8076
- if (unref(currentTitle)) _push(`<div class="current-task" data-v-69681b3a${_scopeId}>${ssrInterpolate(_ctx.$t("agentInspectorDrawer.kk653nv011"))}${ssrInterpolate(unref(currentTitle))}」 </div>`);
8125
+ if (unref(currentTitle)) _push(`<div class="current-task" data-v-fbf23e4d${_scopeId}>${ssrInterpolate(_ctx.$t("agentInspectorDrawer.kk653nv011"))}${ssrInterpolate(unref(currentTitle))}」 </div>`);
8077
8126
  else _push(`<!---->`);
8078
8127
  _push(ssrRenderComponent(_component_a_tabs, {
8079
8128
  "active-key": unref(tab),
@@ -8085,12 +8134,12 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8085
8134
  if (_push) {
8086
8135
  _push(ssrRenderComponent(_component_a_tab_pane, {
8087
8136
  key: "stream",
8088
- tab: "独立输出流"
8137
+ tab: _ctx.$t("agentInspectorDrawer.tabStream")
8089
8138
  }, {
8090
8139
  default: withCtx((_, _push, _parent, _scopeId) => {
8091
8140
  if (_push) {
8092
- _push(`<div class="stream" data-v-69681b3a${_scopeId}>`);
8093
- if (unref(stream).length === 0) _push(`<div class="empty" data-v-69681b3a${_scopeId}>${ssrInterpolate(_ctx.$t("agentInspectorDrawer.k1frr9es004"))}</div>`);
8141
+ _push(`<div class="stream" data-v-fbf23e4d${_scopeId}>`);
8142
+ if (unref(stream).length === 0) _push(`<div class="empty" data-v-fbf23e4d${_scopeId}>${ssrInterpolate(_ctx.$t("agentInspectorDrawer.k1frr9es004"))}</div>`);
8094
8143
  else _push(`<!---->`);
8095
8144
  _push(`<!--[-->`);
8096
8145
  ssrRenderList(unref(stream), (b) => {
@@ -8131,24 +8180,24 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8131
8180
  if (_push) {
8132
8181
  _push(`<!--[-->`);
8133
8182
  ssrRenderList([
8134
- ["执行中", unref(assignedTasks).working],
8135
- ["待执行", unref(assignedTasks).queued],
8136
- ["已完成", unref(assignedTasks).done]
8183
+ [_ctx.$t("agentInspectorDrawer.grpWorking"), unref(assignedTasks).working],
8184
+ [_ctx.$t("agentInspectorDrawer.grpQueued"), unref(assignedTasks).queued],
8185
+ [_ctx.$t("agentInspectorDrawer.grpDone"), unref(assignedTasks).done]
8137
8186
  ], (group) => {
8138
- _push(`<div class="queue-group" data-v-69681b3a${_scopeId}><div class="group-title" data-v-69681b3a${_scopeId}>${ssrInterpolate(group[0])}(${ssrInterpolate(group[1].length)}) </div><!--[-->`);
8187
+ _push(`<div class="queue-group" data-v-fbf23e4d${_scopeId}><div class="group-title" data-v-fbf23e4d${_scopeId}>${ssrInterpolate(group[0])}(${ssrInterpolate(group[1].length)}) </div><!--[-->`);
8139
8188
  ssrRenderList(group[1], (task) => {
8140
- _push(`<div class="queue-task" data-v-69681b3a${_scopeId}><span class="state-chip aw-mono" data-v-69681b3a${_scopeId}>${ssrInterpolate(task.state)}</span><span class="qt-title" data-v-69681b3a${_scopeId}>${ssrInterpolate(task.title)}</span><span class="qt-meta" data-v-69681b3a${_scopeId}>${ssrInterpolate(task.progress)}%</span></div>`);
8189
+ _push(`<div class="queue-task" data-v-fbf23e4d${_scopeId}><span class="state-chip aw-mono" data-v-fbf23e4d${_scopeId}>${ssrInterpolate(task.state)}</span><span class="qt-title" data-v-fbf23e4d${_scopeId}>${ssrInterpolate(task.title)}</span><span class="qt-meta" data-v-fbf23e4d${_scopeId}>${ssrInterpolate(task.progress)}%</span></div>`);
8141
8190
  });
8142
8191
  _push(`<!--]-->`);
8143
- if (group[1].length === 0) _push(`<div class="empty" data-v-69681b3a${_scopeId}> (${ssrInterpolate(_ctx.$t("agentInspectorDrawer.k43rxk012"))}</div>`);
8192
+ if (group[1].length === 0) _push(`<div class="empty" data-v-fbf23e4d${_scopeId}> (${ssrInterpolate(_ctx.$t("agentInspectorDrawer.k43rxk012"))}</div>`);
8144
8193
  else _push(`<!---->`);
8145
8194
  _push(`</div>`);
8146
8195
  });
8147
8196
  _push(`<!--]-->`);
8148
8197
  } else return [(openBlock(true), createBlock(Fragment, null, renderList([
8149
- ["执行中", unref(assignedTasks).working],
8150
- ["待执行", unref(assignedTasks).queued],
8151
- ["已完成", unref(assignedTasks).done]
8198
+ [_ctx.$t("agentInspectorDrawer.grpWorking"), unref(assignedTasks).working],
8199
+ [_ctx.$t("agentInspectorDrawer.grpQueued"), unref(assignedTasks).queued],
8200
+ [_ctx.$t("agentInspectorDrawer.grpDone"), unref(assignedTasks).done]
8152
8201
  ], (group) => {
8153
8202
  return openBlock(), createBlock("div", {
8154
8203
  key: group[0],
@@ -8176,7 +8225,7 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8176
8225
  }, _parent, _scopeId));
8177
8226
  _push(ssrRenderComponent(_component_a_tab_pane, {
8178
8227
  key: "memory",
8179
- tab: "记忆"
8228
+ tab: _ctx.$t("agentInspectorDrawer.tabMemory")
8180
8229
  }, {
8181
8230
  default: withCtx((_, _push, _parent, _scopeId) => {
8182
8231
  if (_push) _push(ssrRenderComponent(_component_workshop_memory_panel, {
@@ -8193,7 +8242,7 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8193
8242
  } else return [
8194
8243
  createVNode(_component_a_tab_pane, {
8195
8244
  key: "stream",
8196
- tab: "独立输出流"
8245
+ tab: _ctx.$t("agentInspectorDrawer.tabStream")
8197
8246
  }, {
8198
8247
  default: withCtx(() => [createVNode("div", { class: "stream" }, [unref(stream).length === 0 ? (openBlock(), createBlock("div", {
8199
8248
  key: 0,
@@ -8205,7 +8254,7 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8205
8254
  }, null, 8, ["block"]);
8206
8255
  }), 128))])]),
8207
8256
  _: 1
8208
- }),
8257
+ }, 8, ["tab"]),
8209
8258
  createVNode(_component_a_tab_pane, { key: "queue" }, {
8210
8259
  tab: withCtx(() => [createTextVNode(toDisplayString(_ctx.$t("agentInspectorDrawer.k1axbijb005")) + " ", 1), createVNode(_component_a_badge, {
8211
8260
  count: unref(assignedTasks).working.length,
@@ -8213,9 +8262,9 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8213
8262
  size: "small"
8214
8263
  }, null, 8, ["count"])]),
8215
8264
  default: withCtx(() => [(openBlock(true), createBlock(Fragment, null, renderList([
8216
- ["执行中", unref(assignedTasks).working],
8217
- ["待执行", unref(assignedTasks).queued],
8218
- ["已完成", unref(assignedTasks).done]
8265
+ [_ctx.$t("agentInspectorDrawer.grpWorking"), unref(assignedTasks).working],
8266
+ [_ctx.$t("agentInspectorDrawer.grpQueued"), unref(assignedTasks).queued],
8267
+ [_ctx.$t("agentInspectorDrawer.grpDone"), unref(assignedTasks).done]
8219
8268
  ], (group) => {
8220
8269
  return openBlock(), createBlock("div", {
8221
8270
  key: group[0],
@@ -8242,33 +8291,33 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8242
8291
  }),
8243
8292
  createVNode(_component_a_tab_pane, {
8244
8293
  key: "memory",
8245
- tab: "记忆"
8294
+ tab: _ctx.$t("agentInspectorDrawer.tabMemory")
8246
8295
  }, {
8247
8296
  default: withCtx(() => [createVNode(_component_workshop_memory_panel, {
8248
8297
  "channel-id": __props.channelId,
8249
8298
  "agent-id": __props.agentId ?? void 0
8250
8299
  }, null, 8, ["channel-id", "agent-id"])]),
8251
8300
  _: 1
8252
- })
8301
+ }, 8, ["tab"])
8253
8302
  ];
8254
8303
  }),
8255
8304
  _: 1
8256
8305
  }, _parent, _scopeId));
8257
- _push(`<div class="footer" data-v-69681b3a${_scopeId}>`);
8306
+ _push(`<div class="footer" data-v-fbf23e4d${_scopeId}>`);
8258
8307
  if (unref(agent).role === "worker") {
8259
- _push(`<div class="member-ops" data-v-69681b3a${_scopeId}><span class="op-label" data-v-69681b3a${_scopeId}>${ssrInterpolate(_ctx.$t("agentInspectorDrawer.kas9m5q006"))}</span>`);
8308
+ _push(`<div class="member-ops" data-v-fbf23e4d${_scopeId}><span class="op-label" data-v-fbf23e4d${_scopeId}>${ssrInterpolate(_ctx.$t("agentInspectorDrawer.kas9m5q006"))}</span>`);
8260
8309
  _push(ssrRenderComponent(_component_a_switch, {
8261
8310
  checked: (unref(agent).enabled ?? 1) === 1,
8262
8311
  loading: unref(toggling),
8263
- "checked-children": "启用",
8264
- "un-checked-children": "停用",
8312
+ "checked-children": _ctx.$t("agentInspectorDrawer.swOn"),
8313
+ "un-checked-children": _ctx.$t("agentInspectorDrawer.swOff"),
8265
8314
  size: "small",
8266
8315
  onChange: toggleEnabled
8267
8316
  }, null, _parent, _scopeId));
8268
8317
  _push(ssrRenderComponent(_component_a_popconfirm, {
8269
8318
  title: _ctx.$t("agentInspectorDrawer.k1ofh789002"),
8270
- "ok-text": "移除",
8271
- "cancel-text": "取消",
8319
+ "ok-text": _ctx.$t("agentInspectorDrawer.okRemove"),
8320
+ "cancel-text": _ctx.$t("common.cancel"),
8272
8321
  onConfirm: removeMember
8273
8322
  }, {
8274
8323
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -8298,7 +8347,7 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8298
8347
  }, _parent, _scopeId));
8299
8348
  _push(`</div>`);
8300
8349
  } else _push(`<!---->`);
8301
- _push(`<div class="send-box" data-v-69681b3a${_scopeId}>`);
8350
+ _push(`<div class="send-box" data-v-fbf23e4d${_scopeId}>`);
8302
8351
  _push(ssrRenderComponent(_component_a_textarea, {
8303
8352
  value: unref(sendText),
8304
8353
  "onUpdate:value": ($event) => isRef(sendText) ? sendText.value = $event : null,
@@ -8309,17 +8358,17 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8309
8358
  placeholder: _ctx.$t("agentInspectorDrawer.kwsotdg003"),
8310
8359
  onKeydown: send
8311
8360
  }, null, _parent, _scopeId));
8312
- _push(`<div class="send-ops" data-v-69681b3a${_scopeId}>`);
8361
+ _push(`<div class="send-ops" data-v-fbf23e4d${_scopeId}>`);
8313
8362
  _push(ssrRenderComponent(_component_a_segmented, {
8314
8363
  value: unref(priority),
8315
8364
  "onUpdate:value": ($event) => isRef(priority) ? priority.value = $event : null,
8316
8365
  size: "small",
8317
8366
  options: [{
8318
8367
  value: "immediate",
8319
- label: "即时"
8368
+ label: _ctx.$t("agentInspectorDrawer.prioImmediate")
8320
8369
  }, {
8321
8370
  value: "task",
8322
- label: "排队"
8371
+ label: _ctx.$t("agentInspectorDrawer.prioQueued")
8323
8372
  }]
8324
8373
  }, null, _parent, _scopeId));
8325
8374
  _push(ssrRenderComponent(_component_a_checkbox, {
@@ -8383,7 +8432,7 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8383
8432
  default: withCtx(() => [
8384
8433
  createVNode(_component_a_tab_pane, {
8385
8434
  key: "stream",
8386
- tab: "独立输出流"
8435
+ tab: _ctx.$t("agentInspectorDrawer.tabStream")
8387
8436
  }, {
8388
8437
  default: withCtx(() => [createVNode("div", { class: "stream" }, [unref(stream).length === 0 ? (openBlock(), createBlock("div", {
8389
8438
  key: 0,
@@ -8395,7 +8444,7 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8395
8444
  }, null, 8, ["block"]);
8396
8445
  }), 128))])]),
8397
8446
  _: 1
8398
- }),
8447
+ }, 8, ["tab"]),
8399
8448
  createVNode(_component_a_tab_pane, { key: "queue" }, {
8400
8449
  tab: withCtx(() => [createTextVNode(toDisplayString(_ctx.$t("agentInspectorDrawer.k1axbijb005")) + " ", 1), createVNode(_component_a_badge, {
8401
8450
  count: unref(assignedTasks).working.length,
@@ -8403,9 +8452,9 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8403
8452
  size: "small"
8404
8453
  }, null, 8, ["count"])]),
8405
8454
  default: withCtx(() => [(openBlock(true), createBlock(Fragment, null, renderList([
8406
- ["执行中", unref(assignedTasks).working],
8407
- ["待执行", unref(assignedTasks).queued],
8408
- ["已完成", unref(assignedTasks).done]
8455
+ [_ctx.$t("agentInspectorDrawer.grpWorking"), unref(assignedTasks).working],
8456
+ [_ctx.$t("agentInspectorDrawer.grpQueued"), unref(assignedTasks).queued],
8457
+ [_ctx.$t("agentInspectorDrawer.grpDone"), unref(assignedTasks).done]
8409
8458
  ], (group) => {
8410
8459
  return openBlock(), createBlock("div", {
8411
8460
  key: group[0],
@@ -8432,14 +8481,14 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8432
8481
  }),
8433
8482
  createVNode(_component_a_tab_pane, {
8434
8483
  key: "memory",
8435
- tab: "记忆"
8484
+ tab: _ctx.$t("agentInspectorDrawer.tabMemory")
8436
8485
  }, {
8437
8486
  default: withCtx(() => [createVNode(_component_workshop_memory_panel, {
8438
8487
  "channel-id": __props.channelId,
8439
8488
  "agent-id": __props.agentId ?? void 0
8440
8489
  }, null, 8, ["channel-id", "agent-id"])]),
8441
8490
  _: 1
8442
- })
8491
+ }, 8, ["tab"])
8443
8492
  ]),
8444
8493
  _: 1
8445
8494
  }, 8, ["active-key", "onUpdate:activeKey"]),
@@ -8451,15 +8500,20 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8451
8500
  createVNode(_component_a_switch, {
8452
8501
  checked: (unref(agent).enabled ?? 1) === 1,
8453
8502
  loading: unref(toggling),
8454
- "checked-children": "启用",
8455
- "un-checked-children": "停用",
8503
+ "checked-children": _ctx.$t("agentInspectorDrawer.swOn"),
8504
+ "un-checked-children": _ctx.$t("agentInspectorDrawer.swOff"),
8456
8505
  size: "small",
8457
8506
  onChange: toggleEnabled
8458
- }, null, 8, ["checked", "loading"]),
8507
+ }, null, 8, [
8508
+ "checked",
8509
+ "loading",
8510
+ "checked-children",
8511
+ "un-checked-children"
8512
+ ]),
8459
8513
  createVNode(_component_a_popconfirm, {
8460
8514
  title: _ctx.$t("agentInspectorDrawer.k1ofh789002"),
8461
- "ok-text": "移除",
8462
- "cancel-text": "取消",
8515
+ "ok-text": _ctx.$t("agentInspectorDrawer.okRemove"),
8516
+ "cancel-text": _ctx.$t("common.cancel"),
8463
8517
  onConfirm: removeMember
8464
8518
  }, {
8465
8519
  default: withCtx(() => [createVNode(_component_a_button, {
@@ -8472,7 +8526,11 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8472
8526
  _: 1
8473
8527
  }, 8, ["loading"])]),
8474
8528
  _: 1
8475
- }, 8, ["title"])
8529
+ }, 8, [
8530
+ "title",
8531
+ "ok-text",
8532
+ "cancel-text"
8533
+ ])
8476
8534
  ])) : createCommentVNode("", true), createVNode("div", { class: "send-box" }, [createVNode(_component_a_textarea, {
8477
8535
  value: unref(sendText),
8478
8536
  "onUpdate:value": ($event) => isRef(sendText) ? sendText.value = $event : null,
@@ -8494,12 +8552,16 @@ var AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE
8494
8552
  size: "small",
8495
8553
  options: [{
8496
8554
  value: "immediate",
8497
- label: "即时"
8555
+ label: _ctx.$t("agentInspectorDrawer.prioImmediate")
8498
8556
  }, {
8499
8557
  value: "task",
8500
- label: "排队"
8558
+ label: _ctx.$t("agentInspectorDrawer.prioQueued")
8501
8559
  }]
8502
- }, null, 8, ["value", "onUpdate:value"]),
8560
+ }, null, 8, [
8561
+ "value",
8562
+ "onUpdate:value",
8563
+ "options"
8564
+ ]),
8503
8565
  createVNode(_component_a_checkbox, {
8504
8566
  checked: unref(requireReply),
8505
8567
  "onUpdate:checked": ($event) => isRef(requireReply) ? requireReply.value = $event : null
@@ -8532,7 +8594,7 @@ AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default.setup = (props,
8532
8594
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/AgentInspectorDrawer.vue");
8533
8595
  return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
8534
8596
  };
8535
- var AgentInspectorDrawer_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-69681b3a"]]), { __name: "WorkshopAgentInspectorDrawer" });
8597
+ var AgentInspectorDrawer_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(AgentInspectorDrawer_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-fbf23e4d"]]), { __name: "WorkshopAgentInspectorDrawer" });
8536
8598
  //#endregion
8537
8599
  //#region app/components/workshop/TaskInspectorDrawer.vue?vue&type=script&setup=true&lang.ts
8538
8600
  var DRAWER_W_DEFAULT$1 = 560;
@@ -8656,7 +8718,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
8656
8718
  "onUpdate:open": ($event) => open.value = $event,
8657
8719
  placement: "right",
8658
8720
  width: unref(drawerWidth),
8659
- title: unref(detail)?.title ?? unref(taskView)?.title ?? "任务详情",
8721
+ title: unref(detail)?.title ?? unref(taskView)?.title ?? _ctx.$t("taskInspectorDrawer.fallbackTitle"),
8660
8722
  class: "aw-resizable-drawer"
8661
8723
  }, _attrs), {
8662
8724
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -8672,7 +8734,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
8672
8734
  default: withCtx((_, _push, _parent, _scopeId) => {
8673
8735
  if (_push) {
8674
8736
  if (unref(detail) || unref(taskView)) {
8675
- _push(`<!--[--><div class="head" data-v-4130ad00${_scopeId}>`);
8737
+ _push(`<!--[--><div class="head" data-v-4bc3adff${_scopeId}>`);
8676
8738
  _push(ssrRenderComponent(_component_a_tag, { color: stateColor[unref(taskView)?.state ?? unref(detail)?.state ?? ""] ?? "default" }, {
8677
8739
  default: withCtx((_, _push, _parent, _scopeId) => {
8678
8740
  if (_push) _push(`${ssrInterpolate(unref(taskView)?.state ?? unref(detail)?.state)}`);
@@ -8680,7 +8742,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
8680
8742
  }),
8681
8743
  _: 1
8682
8744
  }, _parent, _scopeId));
8683
- _push(`<span class="meta" data-v-4130ad00${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k3o48o4010"))}${ssrInterpolate(agentName(unref(taskView)?.assigneeId ?? unref(detail)?.assigneeId ?? ""))}</span><span class="meta" data-v-4130ad00${_scopeId}>${ssrInterpolate(unref(taskView)?.progress ?? unref(detail)?.progress ?? 0)}%</span><div class="spacer" data-v-4130ad00${_scopeId}></div>`);
8745
+ _push(`<span class="meta" data-v-4bc3adff${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k3o48o4010"))}${ssrInterpolate(agentName(unref(taskView)?.assigneeId ?? unref(detail)?.assigneeId ?? ""))}</span><span class="meta" data-v-4bc3adff${_scopeId}>${ssrInterpolate(unref(taskView)?.progress ?? unref(detail)?.progress ?? 0)}%</span><div class="spacer" data-v-4bc3adff${_scopeId}></div>`);
8684
8746
  if ((unref(taskView)?.state ?? unref(detail)?.state) === "FAILED") _push(ssrRenderComponent(_component_a_popconfirm, {
8685
8747
  title: _ctx.$t("taskInspectorDrawer.kns2a6x002"),
8686
8748
  onConfirm: retry
@@ -8745,7 +8807,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
8745
8807
  _: 1
8746
8808
  }, _parent, _scopeId));
8747
8809
  _push(`</div>`);
8748
- if ((unref(taskView)?.state ?? unref(detail)?.state) === "FAILED" && unref(failureReason)) _push(`<div class="failure-reason" data-v-4130ad00${_scopeId}><span class="fr-label" data-v-4130ad00${_scopeId}>失败原因</span><span class="fr-text" data-v-4130ad00${_scopeId}>${ssrInterpolate(unref(failureReason))}</span></div>`);
8810
+ if ((unref(taskView)?.state ?? unref(detail)?.state) === "FAILED" && unref(failureReason)) _push(`<div class="failure-reason" data-v-4bc3adff${_scopeId}><span class="fr-label" data-v-4bc3adff${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.failReason"))}</span><span class="fr-text" data-v-4bc3adff${_scopeId}>${ssrInterpolate(unref(failureReason))}</span></div>`);
8749
8811
  else _push(`<!---->`);
8750
8812
  if (unref(detail)?.description) _push(ssrRenderComponent(_component_a_descriptions, {
8751
8813
  column: 1,
@@ -8768,7 +8830,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
8768
8830
  _: 1
8769
8831
  }, _parent, _scopeId));
8770
8832
  else _push(`<!---->`);
8771
- if (unref(detail)?.routeReason) _push(`<div class="route-reason" data-v-4130ad00${_scopeId}><span class="route-label" data-v-4130ad00${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k1knph8c007"))}</span><span class="route-text" data-v-4130ad00${_scopeId}>${ssrInterpolate(unref(detail).routeReason)}</span></div>`);
8833
+ if (unref(detail)?.routeReason) _push(`<div class="route-reason" data-v-4bc3adff${_scopeId}><span class="route-label" data-v-4bc3adff${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k1knph8c007"))}</span><span class="route-text" data-v-4bc3adff${_scopeId}>${ssrInterpolate(unref(detail).routeReason)}</span></div>`);
8772
8834
  else _push(`<!---->`);
8773
8835
  _push(ssrRenderComponent(_component_a_tabs, {
8774
8836
  size: "small",
@@ -8778,15 +8840,15 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
8778
8840
  if (_push) {
8779
8841
  _push(ssrRenderComponent(_component_a_tab_pane, {
8780
8842
  key: "timeline",
8781
- tab: "状态时间线"
8843
+ tab: _ctx.$t("taskInspectorDrawer.tabTimeline")
8782
8844
  }, {
8783
8845
  default: withCtx((_, _push, _parent, _scopeId) => {
8784
8846
  if (_push) {
8785
- if (unref(timeline).length === 0) _push(`<div class="empty" data-v-4130ad00${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.kr3vr2x008"))}</div>`);
8847
+ if (unref(timeline).length === 0) _push(`<div class="empty" data-v-4bc3adff${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.kr3vr2x008"))}</div>`);
8786
8848
  else _push(`<!---->`);
8787
8849
  _push(`<!--[-->`);
8788
8850
  ssrRenderList(unref(timeline), (e) => {
8789
- _push(`<div class="tl-row" data-v-4130ad00${_scopeId}><span class="tl-time" data-v-4130ad00${_scopeId}>${ssrInterpolate(unref(formatLocalClock)(e.at))}</span>`);
8851
+ _push(`<div class="tl-row" data-v-4bc3adff${_scopeId}><span class="tl-time" data-v-4bc3adff${_scopeId}>${ssrInterpolate(unref(formatLocalClock)(e.at))}</span>`);
8790
8852
  if (e.type === "task.status") _push(ssrRenderComponent(_component_a_tag, {
8791
8853
  color: stateColor[e.payload.state] ?? "default",
8792
8854
  class: "state"
@@ -8797,7 +8859,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
8797
8859
  }),
8798
8860
  _: 2
8799
8861
  }, _parent, _scopeId));
8800
- else _push(`<span class="tl-progress" data-v-4130ad00${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k485ye011"))} ${ssrInterpolate(e.payload.progress)}%</span>`);
8862
+ else _push(`<span class="tl-progress" data-v-4bc3adff${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k485ye011"))} ${ssrInterpolate(e.payload.progress)}%</span>`);
8801
8863
  _push(`</div>`);
8802
8864
  });
8803
8865
  _push(`<!--]-->`);
@@ -8829,7 +8891,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
8829
8891
  }, {
8830
8892
  default: withCtx((_, _push, _parent, _scopeId) => {
8831
8893
  if (_push) {
8832
- if (!unref(detail)?.artifacts.length) _push(`<div class="empty" data-v-4130ad00${_scopeId}> (${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k401n2012"))}</div>`);
8894
+ if (!unref(detail)?.artifacts.length) _push(`<div class="empty" data-v-4bc3adff${_scopeId}> (${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k401n2012"))}</div>`);
8833
8895
  else _push(`<!---->`);
8834
8896
  _push(`<!--[-->`);
8835
8897
  ssrRenderList(unref(detail)?.artifacts ?? [], (a) => {
@@ -8857,11 +8919,11 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
8857
8919
  }, {
8858
8920
  default: withCtx((_, _push, _parent, _scopeId) => {
8859
8921
  if (_push) {
8860
- if (unref(children).length === 0) _push(`<div class="empty" data-v-4130ad00${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k1kmqn5u009"))}</div>`);
8922
+ if (unref(children).length === 0) _push(`<div class="empty" data-v-4bc3adff${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k1kmqn5u009"))}</div>`);
8861
8923
  else _push(`<!---->`);
8862
8924
  _push(`<!--[-->`);
8863
8925
  ssrRenderList(unref(children), (c) => {
8864
- _push(`<div class="child-row" data-v-4130ad00${_scopeId}>`);
8926
+ _push(`<div class="child-row" data-v-4bc3adff${_scopeId}>`);
8865
8927
  _push(ssrRenderComponent(_component_a_tag, {
8866
8928
  color: stateColor[c.state] ?? "default",
8867
8929
  class: "state"
@@ -8872,7 +8934,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
8872
8934
  }),
8873
8935
  _: 2
8874
8936
  }, _parent, _scopeId));
8875
- _push(`<span class="child-title" data-v-4130ad00${_scopeId}>${ssrInterpolate(c.title)}</span><span class="child-meta" data-v-4130ad00${_scopeId}>${ssrInterpolate(agentName(c.assigneeId))} · ${ssrInterpolate(c.progress)}%</span></div>`);
8937
+ _push(`<span class="child-title" data-v-4bc3adff${_scopeId}>${ssrInterpolate(c.title)}</span><span class="child-meta" data-v-4bc3adff${_scopeId}>${ssrInterpolate(agentName(c.assigneeId))} · ${ssrInterpolate(c.progress)}%</span></div>`);
8876
8938
  });
8877
8939
  _push(`<!--]-->`);
8878
8940
  } else return [unref(children).length === 0 ? (openBlock(), createBlock("div", {
@@ -8902,7 +8964,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
8902
8964
  tab: _ctx.$t("taskInspectorDrawer.kxj74io017", { p0: unref(detail)?.artifacts.reduce((n, a) => n + a.parts.length, 0) ?? 0 })
8903
8965
  }, {
8904
8966
  default: withCtx((_, _push, _parent, _scopeId) => {
8905
- if (_push) _push(`<pre class="raw" data-v-4130ad00${_scopeId}>${ssrInterpolate(JSON.stringify(unref(detail)?.artifacts, null, 2)?.slice(0, 4e3))}</pre>`);
8967
+ if (_push) _push(`<pre class="raw" data-v-4bc3adff${_scopeId}>${ssrInterpolate(JSON.stringify(unref(detail)?.artifacts, null, 2)?.slice(0, 4e3))}</pre>`);
8906
8968
  else return [createVNode("pre", { class: "raw" }, toDisplayString(JSON.stringify(unref(detail)?.artifacts, null, 2)?.slice(0, 4e3)), 1)];
8907
8969
  }),
8908
8970
  _: 1
@@ -8910,7 +8972,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
8910
8972
  } else return [
8911
8973
  createVNode(_component_a_tab_pane, {
8912
8974
  key: "timeline",
8913
- tab: "状态时间线"
8975
+ tab: _ctx.$t("taskInspectorDrawer.tabTimeline")
8914
8976
  }, {
8915
8977
  default: withCtx(() => [unref(timeline).length === 0 ? (openBlock(), createBlock("div", {
8916
8978
  key: 0,
@@ -8932,7 +8994,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
8932
8994
  }, toDisplayString(_ctx.$t("taskInspectorDrawer.k485ye011")) + " " + toDisplayString(e.payload.progress) + "%", 1))]);
8933
8995
  }), 128))]),
8934
8996
  _: 1
8935
- }),
8997
+ }, 8, ["tab"]),
8936
8998
  createVNode(_component_a_tab_pane, {
8937
8999
  key: "artifacts",
8938
9000
  tab: _ctx.$t("taskInspectorDrawer.kkp77tf015", { p0: unref(detail)?.artifacts.length ?? 0 })
@@ -9032,7 +9094,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
9032
9094
  (unref(taskView)?.state ?? unref(detail)?.state) === "FAILED" && unref(failureReason) ? (openBlock(), createBlock("div", {
9033
9095
  key: 0,
9034
9096
  class: "failure-reason"
9035
- }, [createVNode("span", { class: "fr-label" }, "失败原因"), createVNode("span", { class: "fr-text" }, toDisplayString(unref(failureReason)), 1)])) : createCommentVNode("", true),
9097
+ }, [createVNode("span", { class: "fr-label" }, toDisplayString(_ctx.$t("taskInspectorDrawer.failReason")), 1), createVNode("span", { class: "fr-text" }, toDisplayString(unref(failureReason)), 1)])) : createCommentVNode("", true),
9036
9098
  unref(detail)?.description ? (openBlock(), createBlock(_component_a_descriptions, {
9037
9099
  key: 1,
9038
9100
  column: 1,
@@ -9056,7 +9118,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
9056
9118
  default: withCtx(() => [
9057
9119
  createVNode(_component_a_tab_pane, {
9058
9120
  key: "timeline",
9059
- tab: "状态时间线"
9121
+ tab: _ctx.$t("taskInspectorDrawer.tabTimeline")
9060
9122
  }, {
9061
9123
  default: withCtx(() => [unref(timeline).length === 0 ? (openBlock(), createBlock("div", {
9062
9124
  key: 0,
@@ -9078,7 +9140,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
9078
9140
  }, toDisplayString(_ctx.$t("taskInspectorDrawer.k485ye011")) + " " + toDisplayString(e.payload.progress) + "%", 1))]);
9079
9141
  }), 128))]),
9080
9142
  _: 1
9081
- }),
9143
+ }, 8, ["tab"]),
9082
9144
  createVNode(_component_a_tab_pane, {
9083
9145
  key: "artifacts",
9084
9146
  tab: _ctx.$t("taskInspectorDrawer.kkp77tf015", { p0: unref(detail)?.artifacts.length ?? 0 })
@@ -9186,7 +9248,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
9186
9248
  (unref(taskView)?.state ?? unref(detail)?.state) === "FAILED" && unref(failureReason) ? (openBlock(), createBlock("div", {
9187
9249
  key: 0,
9188
9250
  class: "failure-reason"
9189
- }, [createVNode("span", { class: "fr-label" }, "失败原因"), createVNode("span", { class: "fr-text" }, toDisplayString(unref(failureReason)), 1)])) : createCommentVNode("", true),
9251
+ }, [createVNode("span", { class: "fr-label" }, toDisplayString(_ctx.$t("taskInspectorDrawer.failReason")), 1), createVNode("span", { class: "fr-text" }, toDisplayString(unref(failureReason)), 1)])) : createCommentVNode("", true),
9190
9252
  unref(detail)?.description ? (openBlock(), createBlock(_component_a_descriptions, {
9191
9253
  key: 1,
9192
9254
  column: 1,
@@ -9210,7 +9272,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
9210
9272
  default: withCtx(() => [
9211
9273
  createVNode(_component_a_tab_pane, {
9212
9274
  key: "timeline",
9213
- tab: "状态时间线"
9275
+ tab: _ctx.$t("taskInspectorDrawer.tabTimeline")
9214
9276
  }, {
9215
9277
  default: withCtx(() => [unref(timeline).length === 0 ? (openBlock(), createBlock("div", {
9216
9278
  key: 0,
@@ -9232,7 +9294,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
9232
9294
  }, toDisplayString(_ctx.$t("taskInspectorDrawer.k485ye011")) + " " + toDisplayString(e.payload.progress) + "%", 1))]);
9233
9295
  }), 128))]),
9234
9296
  _: 1
9235
- }),
9297
+ }, 8, ["tab"]),
9236
9298
  createVNode(_component_a_tab_pane, {
9237
9299
  key: "artifacts",
9238
9300
  tab: _ctx.$t("taskInspectorDrawer.kkp77tf015", { p0: unref(detail)?.artifacts.length ?? 0 })
@@ -9300,7 +9362,7 @@ TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default.setup = (props,
9300
9362
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/TaskInspectorDrawer.vue");
9301
9363
  return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
9302
9364
  };
9303
- var TaskInspectorDrawer_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-4130ad00"]]), { __name: "WorkshopTaskInspectorDrawer" });
9365
+ var TaskInspectorDrawer_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-4bc3adff"]]), { __name: "WorkshopTaskInspectorDrawer" });
9304
9366
  //#endregion
9305
9367
  //#region app/components/workshop/A2aRpcDebugger.vue?vue&type=script&setup=true&lang.ts
9306
9368
  var DRAWER_W_DEFAULT = 600;
@@ -9336,7 +9398,7 @@ var A2aRpcDebugger_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
9336
9398
  if (!agentId.value && list.length > 0) agentId.value = list[0]?.agentId ?? "";
9337
9399
  }, { immediate: true });
9338
9400
  const method = ref("tasks/list");
9339
- const methodOptions = [
9401
+ const methodOptions = computed(() => [
9340
9402
  {
9341
9403
  value: "tasks/list",
9342
9404
  label: "tasks/list"
@@ -9351,18 +9413,18 @@ var A2aRpcDebugger_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
9351
9413
  },
9352
9414
  {
9353
9415
  value: "tasks/sendSubscribe",
9354
- label: "tasks/sendSubscribe(SSE 流)",
9416
+ label: t("a2aRpcDebugger.methodSse"),
9355
9417
  sse: true
9356
9418
  },
9357
9419
  {
9358
9420
  value: "message/send",
9359
- label: "message/send(需 token)"
9421
+ label: t("a2aRpcDebugger.methodToken")
9360
9422
  },
9361
9423
  {
9362
9424
  value: "agent/getCard",
9363
9425
  label: "agent/getCard"
9364
9426
  }
9365
- ];
9427
+ ]);
9366
9428
  const paramsJson = ref("{}");
9367
9429
  const token = ref("");
9368
9430
  const running = ref(false);
@@ -9427,7 +9489,7 @@ var A2aRpcDebugger_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
9427
9489
  try {
9428
9490
  params = JSON.parse(paramsJson.value || "{}");
9429
9491
  } catch {
9430
- api$1.error("params 不是合法 JSON");
9492
+ api$1.error(t("a2aRpcDebugger.badParams"));
9431
9493
  return;
9432
9494
  }
9433
9495
  running.value = true;
@@ -9471,7 +9533,7 @@ var A2aRpcDebugger_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
9471
9533
  "onUpdate:open": ($event) => open.value = $event,
9472
9534
  placement: "right",
9473
9535
  width: unref(drawerWidth),
9474
- title: "A2A RPC / SSE 调试器",
9536
+ title: _ctx.$t("a2aRpcDebugger.title"),
9475
9537
  class: "aw-resizable-drawer"
9476
9538
  }, _attrs), {
9477
9539
  default: withCtx((_, _push, _parent, _scopeId) => {
@@ -9483,7 +9545,7 @@ var A2aRpcDebugger_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
9483
9545
  onResize: resizeDrawer,
9484
9546
  onReset: ($event) => drawerWidth.value = DRAWER_W_DEFAULT
9485
9547
  }, null, _parent, _scopeId));
9486
- _push(`<div class="dbg" data-v-56f080d0${_scopeId}><div class="row" data-v-56f080d0${_scopeId}>`);
9548
+ _push(`<div class="dbg" data-v-32b791de${_scopeId}><div class="row" data-v-32b791de${_scopeId}>`);
9487
9549
  _push(ssrRenderComponent(_component_a_select, {
9488
9550
  value: unref(agentId),
9489
9551
  "onUpdate:value": ($event) => isRef(agentId) ? agentId.value = $event : null,
@@ -9498,24 +9560,24 @@ var A2aRpcDebugger_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
9498
9560
  value: unref(method),
9499
9561
  "onUpdate:value": ($event) => isRef(method) ? method.value = $event : null,
9500
9562
  class: "method",
9501
- options: methodOptions
9563
+ options: unref(methodOptions)
9502
9564
  }, null, _parent, _scopeId));
9503
9565
  _push(`</div>`);
9504
9566
  _push(ssrRenderComponent(_component_a_input_password, {
9505
9567
  value: unref(token),
9506
9568
  "onUpdate:value": ($event) => isRef(token) ? token.value = $event : null,
9507
9569
  size: "small",
9508
- placeholder: "Bearer token(message/send 需要;留空匿名)",
9570
+ placeholder: _ctx.$t("a2aRpcDebugger.tokenPh"),
9509
9571
  class: "token"
9510
9572
  }, null, _parent, _scopeId));
9511
- _push(`<div class="row" data-v-56f080d0${_scopeId}>`);
9573
+ _push(`<div class="row" data-v-32b791de${_scopeId}>`);
9512
9574
  _push(ssrRenderComponent(_component_a_textarea, {
9513
9575
  value: unref(paramsJson),
9514
9576
  "onUpdate:value": ($event) => isRef(paramsJson) ? paramsJson.value = $event : null,
9515
9577
  rows: 6,
9516
9578
  class: "params"
9517
9579
  }, null, _parent, _scopeId));
9518
- _push(`</div><div class="row ops" data-v-56f080d0${_scopeId}>`);
9580
+ _push(`</div><div class="row ops" data-v-32b791de${_scopeId}>`);
9519
9581
  _push(ssrRenderComponent(_component_a_button, {
9520
9582
  size: "small",
9521
9583
  onClick: ($event) => paramsJson.value = JSON.stringify(template(), null, 2)
@@ -9538,7 +9600,7 @@ var A2aRpcDebugger_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
9538
9600
  }),
9539
9601
  _: 1
9540
9602
  }, _parent, _scopeId));
9541
- _push(`</div><pre class="output" data-v-56f080d0${_scopeId}>${ssrInterpolate(unref(output) || "(输出;sendSubscribe 将逐条渲染 SSE 事件)")}</pre></div>`);
9603
+ _push(`</div><pre class="output" data-v-32b791de${_scopeId}>${ssrInterpolate(unref(output) || _ctx.$t("a2aRpcDebugger.outputEmpty"))}</pre></div>`);
9542
9604
  } else return [createVNode(_component_workshop_pane_splitter, {
9543
9605
  variant: "bare",
9544
9606
  class: "drawer-resizer",
@@ -9564,15 +9626,23 @@ var A2aRpcDebugger_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
9564
9626
  value: unref(method),
9565
9627
  "onUpdate:value": ($event) => isRef(method) ? method.value = $event : null,
9566
9628
  class: "method",
9567
- options: methodOptions
9568
- }, null, 8, ["value", "onUpdate:value"])]),
9629
+ options: unref(methodOptions)
9630
+ }, null, 8, [
9631
+ "value",
9632
+ "onUpdate:value",
9633
+ "options"
9634
+ ])]),
9569
9635
  createVNode(_component_a_input_password, {
9570
9636
  value: unref(token),
9571
9637
  "onUpdate:value": ($event) => isRef(token) ? token.value = $event : null,
9572
9638
  size: "small",
9573
- placeholder: "Bearer token(message/send 需要;留空匿名)",
9639
+ placeholder: _ctx.$t("a2aRpcDebugger.tokenPh"),
9574
9640
  class: "token"
9575
- }, null, 8, ["value", "onUpdate:value"]),
9641
+ }, null, 8, [
9642
+ "value",
9643
+ "onUpdate:value",
9644
+ "placeholder"
9645
+ ]),
9576
9646
  createVNode("div", { class: "row" }, [createVNode(_component_a_textarea, {
9577
9647
  value: unref(paramsJson),
9578
9648
  "onUpdate:value": ($event) => isRef(paramsJson) ? paramsJson.value = $event : null,
@@ -9594,7 +9664,7 @@ var A2aRpcDebugger_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
9594
9664
  default: withCtx(() => [createTextVNode(toDisplayString(_ctx.$t("a2aRpcDebugger.k405w8004")), 1)]),
9595
9665
  _: 1
9596
9666
  }, 8, ["loading"])]),
9597
- createVNode("pre", { class: "output" }, toDisplayString(unref(output) || "(输出;sendSubscribe 将逐条渲染 SSE 事件)"), 1)
9667
+ createVNode("pre", { class: "output" }, toDisplayString(unref(output) || _ctx.$t("a2aRpcDebugger.outputEmpty")), 1)
9598
9668
  ])];
9599
9669
  }),
9600
9670
  _: 1
@@ -9610,7 +9680,7 @@ A2aRpcDebugger_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx)
9610
9680
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/A2aRpcDebugger.vue");
9611
9681
  return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
9612
9682
  };
9613
- var A2aRpcDebugger_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(A2aRpcDebugger_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-56f080d0"]]), { __name: "WorkshopA2aRpcDebugger" });
9683
+ var A2aRpcDebugger_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(A2aRpcDebugger_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-32b791de"]]), { __name: "WorkshopA2aRpcDebugger" });
9614
9684
  //#endregion
9615
9685
  //#region app/components/workshop/CommandPalette.vue?vue&type=script&setup=true&lang.ts
9616
9686
  var CommandPalette_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -9658,7 +9728,7 @@ var CommandPalette_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
9658
9728
  },
9659
9729
  {
9660
9730
  key: "nav-teams",
9661
- label: "前往:AgentTeam 编组库",
9731
+ label: t("commandPalette.gotoTeams"),
9662
9732
  hint: "/workshop/teams",
9663
9733
  run: () => navigateTo("/workshop/teams")
9664
9734
  },
@@ -9677,7 +9747,7 @@ var CommandPalette_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
9677
9747
  },
9678
9748
  {
9679
9749
  key: "view-lanes",
9680
- label: "视图:Agent lanes",
9750
+ label: t("commandPalette.viewLanes"),
9681
9751
  run: () => {
9682
9752
  emit("setView", "lanes");
9683
9753
  }
@@ -9706,7 +9776,7 @@ var CommandPalette_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
9706
9776
  },
9707
9777
  {
9708
9778
  key: "act-a2a",
9709
- label: "动作:A2A RPC/SSE 调试器",
9779
+ label: t("commandPalette.actA2a"),
9710
9780
  run: () => {
9711
9781
  emit("openA2aDebug");
9712
9782
  }
@@ -9748,17 +9818,17 @@ var CommandPalette_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
9748
9818
  return (_ctx, _push, _parent, _attrs) => {
9749
9819
  ssrRenderTeleport(_push, (_push) => {
9750
9820
  if (open.value) {
9751
- _push(`<div class="palette-mask" data-v-b72e120a><div class="palette" data-v-b72e120a><div class="palette-search" data-v-b72e120a><span class="i-tabler-search ps-icon" data-v-b72e120a></span><input${ssrRenderAttr("value", unref(query))} class="palette-input"${ssrRenderAttr("placeholder", _ctx.$t("commandPalette.k1nn6i83001"))} autofocus data-v-b72e120a></div><div class="palette-list" data-v-b72e120a><!--[-->`);
9821
+ _push(`<div class="palette-mask" data-v-01a314a5><div class="palette" data-v-01a314a5><div class="palette-search" data-v-01a314a5><span class="i-tabler-search ps-icon" data-v-01a314a5></span><input${ssrRenderAttr("value", unref(query))} class="palette-input"${ssrRenderAttr("placeholder", _ctx.$t("commandPalette.k1nn6i83001"))} autofocus data-v-01a314a5></div><div class="palette-list" data-v-01a314a5><!--[-->`);
9752
9822
  ssrRenderList(unref(filtered), (c, i) => {
9753
- _push(`<button type="button" class="${ssrRenderClass([{ selected: i === unref(selected) }, "palette-item"])}" data-v-b72e120a><span class="pi-label" data-v-b72e120a>${ssrInterpolate(c.label)}</span>`);
9754
- if (c.hint) _push(`<span class="pi-hint" data-v-b72e120a>${ssrInterpolate(c.hint)}</span>`);
9823
+ _push(`<button type="button" class="${ssrRenderClass([{ selected: i === unref(selected) }, "palette-item"])}" data-v-01a314a5><span class="pi-label" data-v-01a314a5>${ssrInterpolate(c.label)}</span>`);
9824
+ if (c.hint) _push(`<span class="pi-hint" data-v-01a314a5>${ssrInterpolate(c.hint)}</span>`);
9755
9825
  else _push(`<!---->`);
9756
9826
  _push(`</button>`);
9757
9827
  });
9758
9828
  _push(`<!--]-->`);
9759
- if (unref(filtered).length === 0) _push(`<div class="palette-empty" data-v-b72e120a>${ssrInterpolate(_ctx.$t("commandPalette.ktup4q4002"))}</div>`);
9829
+ if (unref(filtered).length === 0) _push(`<div class="palette-empty" data-v-01a314a5>${ssrInterpolate(_ctx.$t("commandPalette.ktup4q4002"))}</div>`);
9760
9830
  else _push(`<!---->`);
9761
- _push(`</div><div class="palette-foot" data-v-b72e120a><kbd data-v-b72e120a>↑↓</kbd> ${ssrInterpolate(_ctx.$t("commandPalette.k1kvl0fa003"))} <kbd data-v-b72e120a>↵</kbd> ${ssrInterpolate(_ctx.$t("commandPalette.k1e3ualj004"))} <kbd data-v-b72e120a>esc</kbd> ${ssrInterpolate(_ctx.$t("commandPalette.k3x62t005"))}</div></div></div>`);
9831
+ _push(`</div><div class="palette-foot" data-v-01a314a5><kbd data-v-01a314a5>↑↓</kbd> ${ssrInterpolate(_ctx.$t("commandPalette.k1kvl0fa003"))} <kbd data-v-01a314a5>↵</kbd> ${ssrInterpolate(_ctx.$t("commandPalette.k1e3ualj004"))} <kbd data-v-01a314a5>esc</kbd> ${ssrInterpolate(_ctx.$t("commandPalette.k3x62t005"))}</div></div></div>`);
9762
9832
  } else _push(`<!---->`);
9763
9833
  }, "body", false, _parent);
9764
9834
  };
@@ -9772,7 +9842,7 @@ CommandPalette_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx)
9772
9842
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/CommandPalette.vue");
9773
9843
  return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
9774
9844
  };
9775
- var CommandPalette_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(CommandPalette_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-b72e120a"]]), { __name: "WorkshopCommandPalette" });
9845
+ var CommandPalette_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(CommandPalette_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-01a314a5"]]), { __name: "WorkshopCommandPalette" });
9776
9846
  //#endregion
9777
9847
  //#region app/pages/workshop/w/[wsId].vue?vue&type=script&setup=true&lang.ts
9778
9848
  var LEFT_W_DEFAULT = 248;
@@ -9857,7 +9927,7 @@ var _wsId__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
9857
9927
  ];
9858
9928
  return narrowUI.value ? [...base, {
9859
9929
  value: "inspector",
9860
- label: "检查器"
9930
+ label: t("wsView.inspector")
9861
9931
  }] : base;
9862
9932
  });
9863
9933
  const onViewKey = (ev) => {
@@ -9940,10 +10010,10 @@ var _wsId__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
9940
10010
  const _component_workshop_task_inspector_drawer = TaskInspectorDrawer_default;
9941
10011
  const _component_workshop_a2a_rpc_debugger = A2aRpcDebugger_default;
9942
10012
  const _component_workshop_command_palette = CommandPalette_default;
9943
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "harness" }, _attrs))} data-v-634670bb>`);
10013
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "harness" }, _attrs))} data-v-b63d16c3>`);
9944
10014
  _push(ssrRenderComponent(_component_workshop_mention_hover_card, null, null, _parent));
9945
- _push(`<div class="topbar" data-v-634670bb><div class="left" tabindex="-1" data-v-634670bb><span class="topbar-mark i-tabler-box" data-v-634670bb></span><span class="ws-name" data-v-634670bb>${ssrInterpolate(unref(workspace)?.name ?? "未知 Workspace")}</span>`);
9946
- if (unref(channelId)) _push(`<span class="chan-chip"${ssrRenderAttr("title", unref(channelId))} data-v-634670bb><span class="chan-hash" data-v-634670bb>#</span>${ssrInterpolate(unref(entities).channels[unref(channelId)]?.name ?? unref(channelId).slice(0, 8))}</span>`);
10015
+ _push(`<div class="topbar" data-v-b63d16c3><div class="left" tabindex="-1" data-v-b63d16c3><span class="topbar-mark i-tabler-box" data-v-b63d16c3></span><span class="ws-name" data-v-b63d16c3>${ssrInterpolate(unref(workspace)?.name ?? _ctx.$t("wsView.unknownWs"))}</span>`);
10016
+ if (unref(channelId)) _push(`<span class="chan-chip"${ssrRenderAttr("title", unref(channelId))} data-v-b63d16c3><span class="chan-hash" data-v-b63d16c3>#</span>${ssrInterpolate(unref(entities).channels[unref(channelId)]?.name ?? unref(channelId).slice(0, 8))}</span>`);
9947
10017
  else _push(`<!---->`);
9948
10018
  if (unref(channelId)) _push(ssrRenderComponent(_component_a_segmented, {
9949
10019
  value: unref(view),
@@ -9955,14 +10025,14 @@ var _wsId__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
9955
10025
  onKeydown: onViewKey
9956
10026
  }, null, _parent));
9957
10027
  else _push(`<!---->`);
9958
- _push(`</div><div class="right" data-v-634670bb>`);
9959
- if (unref(narrowUI)) _push(`<button class="${ssrRenderClass([{ off: !unref(leftOpen) }, "pane-toggle im toggle-left-narrow"])}" title="频道会话列表" data-v-634670bb><span class="i-tabler-list-details im-pop" data-v-634670bb></span></button>`);
10028
+ _push(`</div><div class="right" data-v-b63d16c3>`);
10029
+ if (unref(narrowUI)) _push(`<button class="${ssrRenderClass([{ off: !unref(leftOpen) }, "pane-toggle im toggle-left-narrow"])}"${ssrRenderAttr("title", _ctx.$t("wsView.channelListTitle"))} data-v-b63d16c3><span class="i-tabler-list-details im-pop" data-v-b63d16c3></span></button>`);
9960
10030
  else _push(`<!---->`);
9961
- _push(`<button class="${ssrRenderClass([{ off: !unref(leftOpen) }, "pane-toggle im toggle-left-desk"])}"${ssrRenderAttr("title", _ctx.$t("wsView.k1tsy2e4002"))} data-v-634670bb><span class="i-tabler-layout-sidebar-left-collapse im-pop" data-v-634670bb></span></button><button class="${ssrRenderClass([{ off: !unref(rightOpen) }, "pane-toggle im toggle-right-desk"])}"${ssrRenderAttr("title", _ctx.$t("wsView.k1tx0ppf003"))} data-v-634670bb><span class="i-tabler-layout-sidebar-right-collapse im-pop" data-v-634670bb></span></button><button class="pane-toggle im" title="A2A RPC/SSE 调试器" data-v-634670bb><span class="i-tabler-terminal-2 im-pop" data-v-634670bb></span></button><button class="pane-toggle im"${ssrRenderAttr("title", _ctx.$t("wsView.k1cvg8sb004"))} data-v-634670bb><span class="i-tabler-command im-pop" data-v-634670bb></span></button><span class="dot" style="${ssrRenderStyle({ background: unref(stateColor) })}" data-v-634670bb></span><span class="ws-state"${ssrRenderAttr("data-state", unref(conn).state)} data-v-634670bb>${ssrInterpolate(unref(conn).state)}</span><span class="seq" data-v-634670bb>seq ${ssrInterpolate(unref(lastSeq))}</span></div></div><div class="main" data-v-634670bb>`);
9962
- if (unref(narrowUI) && unref(leftOpen)) _push(`<div class="drawer-scrim" data-v-634670bb></div>`);
10031
+ _push(`<button class="${ssrRenderClass([{ off: !unref(leftOpen) }, "pane-toggle im toggle-left-desk"])}"${ssrRenderAttr("title", _ctx.$t("wsView.k1tsy2e4002"))} data-v-b63d16c3><span class="i-tabler-layout-sidebar-left-collapse im-pop" data-v-b63d16c3></span></button><button class="${ssrRenderClass([{ off: !unref(rightOpen) }, "pane-toggle im toggle-right-desk"])}"${ssrRenderAttr("title", _ctx.$t("wsView.k1tx0ppf003"))} data-v-b63d16c3><span class="i-tabler-layout-sidebar-right-collapse im-pop" data-v-b63d16c3></span></button><button class="pane-toggle im"${ssrRenderAttr("title", _ctx.$t("wsView.a2aTitle"))} data-v-b63d16c3><span class="i-tabler-terminal-2 im-pop" data-v-b63d16c3></span></button><button class="pane-toggle im"${ssrRenderAttr("title", _ctx.$t("wsView.k1cvg8sb004"))} data-v-b63d16c3><span class="i-tabler-command im-pop" data-v-b63d16c3></span></button><span class="dot" style="${ssrRenderStyle({ background: unref(stateColor) })}" data-v-b63d16c3></span><span class="ws-state"${ssrRenderAttr("data-state", unref(conn).state)} data-v-b63d16c3>${ssrInterpolate(unref(conn).state)}</span><span class="seq" data-v-b63d16c3>seq ${ssrInterpolate(unref(lastSeq))}</span></div></div><div class="main" data-v-b63d16c3>`);
10032
+ if (unref(narrowUI) && unref(leftOpen)) _push(`<div class="drawer-scrim" data-v-b63d16c3></div>`);
9963
10033
  else _push(`<!---->`);
9964
10034
  if (unref(leftOpen)) {
9965
- _push(`<div class="left-pane" style="${ssrRenderStyle({ flexBasis: unref(narrowUI) ? "auto" : `${unref(leftWidth)}px` })}" data-v-634670bb><div class="left-scroll" data-v-634670bb>`);
10035
+ _push(`<div class="left-pane" style="${ssrRenderStyle({ flexBasis: unref(narrowUI) ? "auto" : `${unref(leftWidth)}px` })}" data-v-b63d16c3><div class="left-scroll" data-v-b63d16c3>`);
9966
10036
  _push(ssrRenderComponent(_component_workshop_channel_session_list, { "ws-id": unref(wsId) }, null, _parent));
9967
10037
  _push(`</div>`);
9968
10038
  _push(ssrRenderComponent(_component_workshop_live_agent_bar, {
@@ -9977,7 +10047,7 @@ var _wsId__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
9977
10047
  onReset: ($event) => leftWidth.value = LEFT_W_DEFAULT
9978
10048
  }, null, _parent));
9979
10049
  else _push(`<!---->`);
9980
- _push(`<div class="center-pane" data-v-634670bb>`);
10050
+ _push(`<div class="center-pane" data-v-b63d16c3>`);
9981
10051
  if (unref(channelId)) {
9982
10052
  _push(`<!--[-->`);
9983
10053
  if (unref(view) === "timeline") _push(ssrRenderComponent(_component_workshop_transcript_timeline, { "channel-id": unref(channelId) }, null, _parent));
@@ -9998,7 +10068,7 @@ var _wsId__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
9998
10068
  }, null, _parent));
9999
10069
  else _push(`<!---->`);
10000
10070
  _push(`<!--]-->`);
10001
- } else _push(`<div class="pane-empty" data-v-634670bb><span class="pe-icon i-tabler-messages" data-v-634670bb></span><div class="pe-title" data-v-634670bb>${ssrInterpolate(_ctx.$t("wsView.klzbtyp007"))} <span class="aw-serif-accent-italic" data-v-634670bb>Channel</span> ${ssrInterpolate(_ctx.$t("wsView.k3zaj4008"))}</div><div class="pe-sub" data-v-634670bb>${ssrInterpolate(_ctx.$t("wsView.k1us0cxy009"))}</div></div>`);
10071
+ } else _push(`<div class="pane-empty" data-v-b63d16c3><span class="pe-icon i-tabler-messages" data-v-b63d16c3></span><div class="pe-title" data-v-b63d16c3>${ssrInterpolate(_ctx.$t("wsView.klzbtyp007"))} <span class="aw-serif-accent-italic" data-v-b63d16c3>Channel</span> ${ssrInterpolate(_ctx.$t("wsView.k3zaj4008"))}</div><div class="pe-sub" data-v-b63d16c3>${ssrInterpolate(_ctx.$t("wsView.k1us0cxy009"))}</div></div>`);
10002
10072
  _push(`</div>`);
10003
10073
  if (unref(rightOpen) && !unref(narrowUI)) _push(ssrRenderComponent(_component_workshop_pane_splitter, {
10004
10074
  label: _ctx.$t("wsView.kwqb0st006"),
@@ -10007,19 +10077,19 @@ var _wsId__vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineCom
10007
10077
  }, null, _parent));
10008
10078
  else _push(`<!---->`);
10009
10079
  if (unref(rightOpen) && !unref(narrowUI)) {
10010
- _push(`<div class="${ssrRenderClass([{ empty: unref(wsStore).loaded && !unref(channelId) }, "right-pane"])}" style="${ssrRenderStyle({ flexBasis: `${unref(rightWidth)}px` })}" data-v-634670bb>`);
10080
+ _push(`<div class="${ssrRenderClass([{ empty: unref(wsStore).loaded && !unref(channelId) }, "right-pane"])}" style="${ssrRenderStyle({ flexBasis: `${unref(rightWidth)}px` })}" data-v-b63d16c3>`);
10011
10081
  if (unref(channelId)) _push(ssrRenderComponent(_component_workshop_inspector_panel, {
10012
10082
  "channel-id": unref(channelId),
10013
10083
  onOpenAgent: openAgent,
10014
10084
  onOpenTask: openTask
10015
10085
  }, null, _parent));
10016
- else if (!unref(wsStore).loaded) _push(`<div class="pane-loading" data-v-634670bb> 正在加载 Workspace… </div>`);
10086
+ else if (!unref(wsStore).loaded) _push(`<div class="pane-loading" data-v-b63d16c3>${ssrInterpolate(_ctx.$t("wsView.loadingWs"))}</div>`);
10017
10087
  else _push(`<!---->`);
10018
10088
  _push(`</div>`);
10019
10089
  } else _push(`<!---->`);
10020
10090
  _push(`</div>`);
10021
10091
  if (unref(channelId)) {
10022
- _push(`<div class="composer-pane" data-v-634670bb>`);
10092
+ _push(`<div class="composer-pane" data-v-b63d16c3>`);
10023
10093
  _push(ssrRenderComponent(_component_workshop_composer, { "channel-id": unref(channelId) }, null, _parent));
10024
10094
  _push(ssrRenderComponent(_component_workshop_agent_inspector_drawer, {
10025
10095
  open: unref(agentDrawerOpen),
@@ -10060,7 +10130,7 @@ _wsId__vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
10060
10130
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/workshop/w/[wsId].vue");
10061
10131
  return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
10062
10132
  };
10063
- var _wsId__default = /*#__PURE__*/ _plugin_vue_export_helper_default(_wsId__vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-634670bb"]]);
10133
+ var _wsId__default = /*#__PURE__*/ _plugin_vue_export_helper_default(_wsId__vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-b63d16c3"]]);
10064
10134
 
10065
10135
  export { _wsId__default as default };
10066
- //# sourceMappingURL=_wsId_-BxlDcJHg.mjs.map
10136
+ //# sourceMappingURL=_wsId_-DpY3T-md.mjs.map