agentworkshop 0.7.52 → 0.7.53

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 (459) hide show
  1. package/.AgentWorkShop/prompts/host-tools.json +70 -1
  2. package/.output/.AgentWorkShop/prompts/host-tools.json +70 -1
  3. package/.output/.AgentWorkShop/schema.json +2 -0
  4. package/.output/nitro.json +1 -1
  5. package/.output/public/_nuxt/{D0ldVwl-.js → 77DRSnQv.js} +1 -1
  6. package/.output/public/_nuxt/8oRmGaAV.js +1 -0
  7. package/.output/public/_nuxt/{BPou3U7b.js → BLnLjzka.js} +1 -1
  8. package/.output/public/_nuxt/{CFQyYMEn2.js → BSdJTnk12.js} +1 -1
  9. package/.output/public/_nuxt/{C4lagVdN2.js → BUD1CNvB2.js} +1 -1
  10. package/.output/public/_nuxt/{CTvh8v4T.js → BXR3tgEk.js} +1 -1
  11. package/.output/public/_nuxt/{Cbeifv55.js → BhlRInVa.js} +1 -1
  12. package/.output/public/_nuxt/{mNnuUoSy.js → BkfA3BbD.js} +1 -1
  13. package/.output/public/_nuxt/{ChGuLxwW2.js → BpcQDwKM2.js} +1 -1
  14. package/.output/public/_nuxt/{DQMbdg4t.js → BwlGxRxA.js} +1 -1
  15. package/.output/public/_nuxt/{Bt2ZL5332.js → C4sQKuhk2.js} +1 -1
  16. package/.output/public/_nuxt/{CkPxL4UX2.js → CBUIODly2.js} +1 -1
  17. package/.output/public/_nuxt/CR-ILcRu2.js +1 -0
  18. package/.output/public/_nuxt/CZLnEnbE.js +14 -0
  19. package/.output/public/_nuxt/{qPsch_ny2.js → Chxx-DIE2.js} +1 -1
  20. package/.output/public/_nuxt/{BiUhxH3t2.js → CjwxhpwR2.js} +1 -1
  21. package/.output/public/_nuxt/{B9cGf8mg.js → CvGYm7w8.js} +1 -1
  22. package/.output/public/_nuxt/{B9BmiUil.js → DAGuPgXa.js} +1 -1
  23. package/.output/public/_nuxt/{DefDtlKK.js → DE6H1HdJ.js} +1 -1
  24. package/.output/public/_nuxt/{D_Ce9Fon2.js → DFhyhDGa2.js} +1 -1
  25. package/.output/public/_nuxt/{BXx9AxdF2.js → DSqMyLCV2.js} +1 -1
  26. package/.output/public/_nuxt/{B8zP7kaj2.js → DV5joWTn2.js} +1 -1
  27. package/.output/public/_nuxt/{Da90gveK.js → DVOR2pWg.js} +1 -1
  28. package/.output/public/_nuxt/DWsgRq2c.js +1 -0
  29. package/.output/public/_nuxt/{mgWHSRc8.js → DZDi8inD.js} +1 -1
  30. package/.output/public/_nuxt/{xQX5r6tW.js → Dep0Hc9w.js} +1 -1
  31. package/.output/public/_nuxt/{evt5VGDh.js → DffgG8vT.js} +1 -1
  32. package/.output/public/_nuxt/{B_opxrHJ.js → DlCktWDT.js} +1 -1
  33. package/.output/public/_nuxt/{BVzw5a_0.js → DmzmgYHb.js} +1 -1
  34. package/.output/public/_nuxt/PluginSlot.CGH0vb95.css +1 -0
  35. package/.output/public/_nuxt/{ty5W5QwO.js → WmMwIS4y.js} +1 -1
  36. package/.output/public/_nuxt/{_id_.DamiFT0Q.css → _id_.rdGx-UDx.css} +1 -1
  37. package/.output/public/_nuxt/{BgEDwFMf.js → _kUzq9VF.js} +1 -1
  38. package/.output/public/_nuxt/_wsId_.XjmieZaJ.css +1 -0
  39. package/.output/public/_nuxt/{C00Rd6Cg.js → aV6YPjg0.js} +1 -1
  40. package/.output/public/_nuxt/builds/latest.json +1 -1
  41. package/.output/public/_nuxt/builds/meta/5ccc21c2-aba0-4b63-9a13-410e0569e345.json +1 -0
  42. package/.output/public/_nuxt/{default.CXb_zoN6.css → default.CyLpQD1C.css} +1 -1
  43. package/.output/public/_nuxt/o9rJf00k.js +1 -0
  44. package/.output/public/_nuxt/sl1EEoCr2.js +21 -0
  45. package/.output/public/robots.txt +3 -0
  46. package/.output/server/chunks/_/binding-authz.mjs +1 -1
  47. package/.output/server/chunks/_/character-asset.repo.mjs +1 -1
  48. package/.output/server/chunks/_/entity.mjs +1 -1
  49. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  50. package/.output/server/chunks/_/nitro.mjs +1945 -1420
  51. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  52. package/.output/server/chunks/_/scene-layout.repo.mjs +1 -1
  53. package/.output/server/chunks/build/{PluginSlot-D2WUZgbp.mjs → PluginSlot-CT4YaNrB.mjs} +5 -5
  54. package/.output/server/chunks/build/{PluginSlot-D2WUZgbp.mjs.map → PluginSlot-CT4YaNrB.mjs.map} +1 -1
  55. package/.output/server/chunks/build/TownView-fP9BiALv.mjs +1 -1
  56. package/.output/server/chunks/build/{_id_-BUpQSlzo.mjs → _id_-CK-QFrDV.mjs} +55 -51
  57. package/.output/server/chunks/build/_id_-CK-QFrDV.mjs.map +1 -0
  58. package/.output/server/chunks/build/{_wsId_-C4L9fVHC.mjs → _wsId_-DdqXzycE.mjs} +320 -202
  59. package/.output/server/chunks/build/{_wsId_-C4L9fVHC.mjs.map → _wsId_-DdqXzycE.mjs.map} +1 -1
  60. package/.output/server/chunks/build/{agents-ydYu-Ol9.mjs → agents-DqICy4AL.mjs} +6 -6
  61. package/.output/server/chunks/build/{agents-ydYu-Ol9.mjs.map → agents-DqICy4AL.mjs.map} +1 -1
  62. package/.output/server/chunks/build/{channel-templates-DP1ndA5K.mjs → channel-templates-gdCLajKy.mjs} +2 -2
  63. package/.output/server/chunks/build/{channel-templates-DP1ndA5K.mjs.map → channel-templates-gdCLajKy.mjs.map} +1 -1
  64. package/.output/server/chunks/build/daq-N69AOtgw.mjs +1 -1
  65. package/.output/server/chunks/build/dcw-CN9d3Rs7.mjs +1 -1
  66. package/.output/server/chunks/build/{default-DCf9tn1i.mjs → default-CXUe4HL7.mjs} +65 -62
  67. package/.output/server/chunks/build/{default-DCf9tn1i.mjs.map → default-CXUe4HL7.mjs.map} +1 -1
  68. package/.output/server/chunks/build/{pages-BzmrmLL_.mjs → pages-CRMeXrxG.mjs} +3 -3
  69. package/.output/server/chunks/build/{pages-BzmrmLL_.mjs.map → pages-CRMeXrxG.mjs.map} +1 -1
  70. package/.output/server/chunks/build/{plugins-DSka7-vS.mjs → plugins-NAS9MQ5r.mjs} +2 -2
  71. package/.output/server/chunks/build/{plugins-DSka7-vS.mjs.map → plugins-NAS9MQ5r.mjs.map} +1 -1
  72. package/.output/server/chunks/build/{schedules-BYR-lA1k.mjs → schedules-D8vYHgQ5.mjs} +2 -2
  73. package/.output/server/chunks/build/{schedules-BYR-lA1k.mjs.map → schedules-D8vYHgQ5.mjs.map} +1 -1
  74. package/.output/server/chunks/build/{settings-UyZ78w2e.mjs → settings-B7HA-sdb.mjs} +3 -3
  75. package/.output/server/chunks/build/{settings-UyZ78w2e.mjs.map → settings-B7HA-sdb.mjs.map} +1 -1
  76. package/.output/server/chunks/build/{teams-D-Y5mzU7.mjs → teams-wM-MdLv9.mjs} +8 -8
  77. package/.output/server/chunks/build/{teams-D-Y5mzU7.mjs.map → teams-wM-MdLv9.mjs.map} +1 -1
  78. package/.output/server/chunks/build/types-D6J7slEa.mjs +1 -1
  79. package/.output/server/chunks/build/{useAgentHarnessOptions-CRyQYYY0.mjs → useAgentHarnessOptions-BnFCh23W.mjs} +2 -2
  80. package/.output/server/chunks/build/{useAgentHarnessOptions-CRyQYYY0.mjs.map → useAgentHarnessOptions-BnFCh23W.mjs.map} +1 -1
  81. package/.output/server/chunks/build/{useAgentTemplateActions-CaRsOBmB.mjs → useAgentTemplateActions-DsBRUQni.mjs} +2 -2
  82. package/.output/server/chunks/build/{useAgentTemplateActions-CaRsOBmB.mjs.map → useAgentTemplateActions-DsBRUQni.mjs.map} +1 -1
  83. package/.output/server/chunks/build/{useAgentTemplateForm-ChiIuPYr.mjs → useAgentTemplateForm-DzQ_t2Ue.mjs} +2 -2
  84. package/.output/server/chunks/build/{useAgentTemplateForm-ChiIuPYr.mjs.map → useAgentTemplateForm-DzQ_t2Ue.mjs.map} +1 -1
  85. package/.output/server/chunks/build/{useAgentTemplatesCatalog-Bf5hk6Jf.mjs → useAgentTemplatesCatalog-Q7LgG1Af.mjs} +2 -2
  86. package/.output/server/chunks/build/{useAgentTemplatesCatalog-Bf5hk6Jf.mjs.map → useAgentTemplatesCatalog-Q7LgG1Af.mjs.map} +1 -1
  87. package/.output/server/chunks/build/useDaqAddNode-kW7uTSMQ.mjs +1 -1
  88. package/.output/server/chunks/build/useDaqDetailNode-D_vhG0jF.mjs +1 -1
  89. package/.output/server/chunks/build/useDaqDetailParams-JfqHvTxr.mjs +1 -1
  90. package/.output/server/chunks/build/useDaqFilters-BUQtZ82a.mjs +1 -1
  91. package/.output/server/chunks/build/useDaqStream-wOxZcMDA.mjs +1 -1
  92. package/.output/server/chunks/build/useDaqTemplates-BqQRdrIm.mjs +1 -1
  93. package/.output/server/chunks/build/{useDashboardData-CNOY4Bi3.mjs → useDashboardData-DWJ6vHjm.mjs} +2 -2
  94. package/.output/server/chunks/build/{useDashboardData-CNOY4Bi3.mjs.map → useDashboardData-DWJ6vHjm.mjs.map} +1 -1
  95. package/.output/server/chunks/build/useDcwAddNode-C1HDP3yG.mjs +1 -1
  96. package/.output/server/chunks/build/useDcwStream-D04kCV3J.mjs +1 -1
  97. package/.output/server/chunks/build/{useTeamActions-C51ciLb0.mjs → useTeamActions-BOLQkYxg.mjs} +2 -2
  98. package/.output/server/chunks/build/{useTeamActions-C51ciLb0.mjs.map → useTeamActions-BOLQkYxg.mjs.map} +1 -1
  99. package/.output/server/chunks/build/{useTeamAddMemberDialog-DthpCMP8.mjs → useTeamAddMemberDialog-BCgrLPxI.mjs} +2 -2
  100. package/.output/server/chunks/build/{useTeamAddMemberDialog-DthpCMP8.mjs.map → useTeamAddMemberDialog-BCgrLPxI.mjs.map} +1 -1
  101. package/.output/server/chunks/build/{useTeamCreateDialog-Dc2KTwyg.mjs → useTeamCreateDialog-CJk40LqS.mjs} +2 -2
  102. package/.output/server/chunks/build/{useTeamCreateDialog-Dc2KTwyg.mjs.map → useTeamCreateDialog-CJk40LqS.mjs.map} +1 -1
  103. package/.output/server/chunks/build/{useTeamDeployDialog-CXpvPnJD.mjs → useTeamDeployDialog-49hdUXQP.mjs} +2 -2
  104. package/.output/server/chunks/build/{useTeamDeployDialog-CXpvPnJD.mjs.map → useTeamDeployDialog-49hdUXQP.mjs.map} +1 -1
  105. package/.output/server/chunks/build/{useTeamPluginDialog-DTs-7SSm.mjs → useTeamPluginDialog-Dh-QOoiU.mjs} +2 -2
  106. package/.output/server/chunks/build/{useTeamPluginDialog-DTs-7SSm.mjs.map → useTeamPluginDialog-Dh-QOoiU.mjs.map} +1 -1
  107. package/.output/server/chunks/build/{useTeamsCatalog-CcpetYyW.mjs → useTeamsCatalog-HBSyKt5P.mjs} +2 -2
  108. package/.output/server/chunks/build/{useTeamsCatalog-CcpetYyW.mjs.map → useTeamsCatalog-HBSyKt5P.mjs.map} +1 -1
  109. package/.output/server/chunks/build/{useWorkshopApi-CO3ophqt.mjs → useWorkshopApi-C9sTYu1F.mjs} +9 -1
  110. package/.output/server/chunks/build/useWorkshopApi-C9sTYu1F.mjs.map +1 -0
  111. package/.output/server/chunks/build/useWorkshopWs-Bm80bLn7.mjs.map +1 -1
  112. package/.output/server/chunks/routes/api/index.get.mjs +1 -1
  113. package/.output/server/chunks/routes/api/index.post.mjs +14 -3
  114. package/.output/server/chunks/routes/api/index.post.mjs.map +1 -1
  115. package/.output/server/chunks/routes/api/mcp/workshop.mjs +43 -14
  116. package/.output/server/chunks/routes/api/mcp/workshop.mjs.map +1 -1
  117. package/.output/server/chunks/routes/api/metrics.mjs +2 -0
  118. package/.output/server/chunks/routes/api/metrics.mjs.map +1 -1
  119. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +1 -1
  120. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
  121. package/.output/server/chunks/routes/api/system/backup/list.get.mjs +47 -0
  122. package/.output/server/chunks/routes/api/system/backup/list.get.mjs.map +1 -0
  123. package/.output/server/chunks/routes/api/system/backup/run.post.mjs +35 -0
  124. package/.output/server/chunks/routes/api/system/backup/run.post.mjs.map +1 -0
  125. package/.output/server/chunks/routes/api/system/config-groups/_id_.delete.mjs +1 -1
  126. package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs +1 -1
  127. package/.output/server/chunks/routes/api/system/index.get.mjs +1 -1
  128. package/.output/server/chunks/routes/api/system/index.patch.mjs +15 -4
  129. package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
  130. package/.output/server/chunks/routes/api/system/index.post.mjs +1 -1
  131. package/.output/server/chunks/routes/api/system/index2.get.mjs +1 -1
  132. package/.output/server/chunks/routes/api/system/monitor/terminal/ws.mjs +1 -1
  133. package/.output/server/chunks/routes/api/system/monitor/terminate.post.mjs +1 -1
  134. package/.output/server/chunks/routes/api/system/settings/events.get.mjs +1 -1
  135. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs +15 -3
  136. package/.output/server/chunks/routes/api/system/settings/reset.post.mjs.map +1 -1
  137. package/.output/server/chunks/routes/api/system/timezone.get.mjs +1 -1
  138. package/.output/server/chunks/routes/api/users/_id_.delete.mjs +14 -3
  139. package/.output/server/chunks/routes/api/users/_id_.delete.mjs.map +1 -1
  140. package/.output/server/chunks/routes/api/users/_id_.get.mjs +1 -1
  141. package/.output/server/chunks/routes/api/users/_id_.put.mjs +14 -3
  142. package/.output/server/chunks/routes/api/users/_id_.put.mjs.map +1 -1
  143. package/.output/server/chunks/routes/api/users/index.get.mjs +1 -1
  144. package/.output/server/chunks/routes/api/users/index.post.mjs +1 -1
  145. package/.output/server/chunks/routes/api/users/login.post.mjs +3 -2
  146. package/.output/server/chunks/routes/api/users/login.post.mjs.map +1 -1
  147. package/.output/server/chunks/routes/api/users/logout.post.mjs +1 -1
  148. package/.output/server/chunks/routes/api/users/me.get.mjs +1 -1
  149. package/.output/server/chunks/routes/api/users/register.post.mjs +4 -1
  150. package/.output/server/chunks/routes/api/users/register.post.mjs.map +1 -1
  151. package/.output/server/chunks/routes/api/users/setup-status.get.mjs +1 -1
  152. package/.output/server/chunks/routes/api/users/tokens/_id/token.get.mjs +1 -1
  153. package/.output/server/chunks/routes/api/users/tokens/_id_.delete.mjs +1 -1
  154. package/.output/server/chunks/routes/api/users/tokens/_id_.patch.mjs +1 -1
  155. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.get.mjs +1 -1
  156. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs +19 -15
  157. package/.output/server/chunks/routes/api/workshop/a2a/_agentId/index.post.mjs.map +1 -1
  158. package/.output/server/chunks/routes/api/workshop/a2a/send.post.mjs +1 -1
  159. package/.output/server/chunks/routes/api/workshop/agent-tools/approvals/_id/decide.post.mjs +1 -1
  160. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.delete.mjs +1 -1
  161. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/_id_.patch.mjs +1 -1
  162. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/grant.post.mjs +1 -1
  163. package/.output/server/chunks/routes/api/workshop/agent-tools/bindings/revoke.post.mjs +1 -1
  164. package/.output/server/chunks/routes/api/workshop/agent-tools/index.get.mjs +1 -1
  165. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +1 -1
  166. package/.output/server/chunks/routes/api/workshop/agent-tools/index2.get.mjs +1 -1
  167. package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +1 -1
  168. package/.output/server/chunks/routes/api/workshop/agent-tools/list.get.mjs +1 -1
  169. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +1 -1
  170. package/.output/server/chunks/routes/api/workshop/agents/subscribe.post.mjs +1 -1
  171. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id/preview.get.mjs +1 -1
  172. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.delete.mjs +1 -1
  173. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +1 -1
  174. package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.patch.mjs +1 -1
  175. package/.output/server/chunks/routes/api/workshop/aml/entities/prune.post.mjs +1 -1
  176. package/.output/server/chunks/routes/api/workshop/aml/env/recheck.post.mjs +1 -1
  177. package/.output/server/chunks/routes/api/workshop/aml/env/uv.post.mjs +1 -1
  178. package/.output/server/chunks/routes/api/workshop/aml/env/venv.post.mjs +1 -1
  179. package/.output/server/chunks/routes/api/workshop/aml/index.get.mjs +1 -1
  180. package/.output/server/chunks/routes/api/workshop/aml/index.post.mjs +1 -1
  181. package/.output/server/chunks/routes/api/workshop/aml/index2.post.mjs +1 -1
  182. package/.output/server/chunks/routes/api/workshop/aml/index3.get.mjs +1 -1
  183. package/.output/server/chunks/routes/api/workshop/aml/index3.post.mjs +1 -1
  184. package/.output/server/chunks/routes/api/workshop/aml/index4.get.mjs +1 -1
  185. package/.output/server/chunks/routes/api/workshop/aml/index5.get.mjs +1 -1
  186. package/.output/server/chunks/routes/api/workshop/aml/index6.get.mjs +1 -1
  187. package/.output/server/chunks/routes/api/workshop/aml/index7.get.mjs +1 -1
  188. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/cancel.post.mjs +1 -1
  189. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/logs.get.mjs +1 -1
  190. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id/retry.post.mjs +1 -1
  191. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.delete.mjs +1 -1
  192. package/.output/server/chunks/routes/api/workshop/aml/jobs/_id_.get.mjs +1 -1
  193. package/.output/server/chunks/routes/api/workshop/aml/models/_id/predict.post.mjs +1 -1
  194. package/.output/server/chunks/routes/api/workshop/aml/models/_id/promote.post.mjs +1 -1
  195. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.delete.mjs +1 -1
  196. package/.output/server/chunks/routes/api/workshop/aml/models/_id_.patch.mjs +1 -1
  197. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id/train.post.mjs +1 -1
  198. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.delete.mjs +1 -1
  199. package/.output/server/chunks/routes/api/workshop/aml/training-plans/_id_.patch.mjs +1 -1
  200. package/.output/server/chunks/routes/api/workshop/aml/twin/providers.get.mjs +1 -1
  201. package/.output/server/chunks/routes/api/workshop/approvals/_id/decide.post.mjs +1 -1
  202. package/.output/server/chunks/routes/api/workshop/assets/index.get.mjs +1 -1
  203. package/.output/server/chunks/routes/api/workshop/assets/index.post.mjs +1 -1
  204. package/.output/server/chunks/routes/api/workshop/assets/index2.post.mjs +1 -1
  205. package/.output/server/chunks/routes/api/workshop/audit.get.mjs +1 -1
  206. package/.output/server/chunks/routes/api/workshop/caller.mjs +1 -1
  207. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +8 -3
  208. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs.map +1 -1
  209. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +1 -1
  210. package/.output/server/chunks/routes/api/workshop/channel-templates/from-channel.post.mjs +1 -1
  211. package/.output/server/chunks/routes/api/workshop/channels/_id/activate.post.mjs +1 -1
  212. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/index.post.mjs +1 -1
  213. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId/memories/search.post.mjs +1 -1
  214. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.get.mjs +1 -1
  215. package/.output/server/chunks/routes/api/workshop/channels/_id/chat/index.post.mjs +1 -1
  216. package/.output/server/chunks/routes/api/workshop/channels/_id/events.get.mjs +1 -1
  217. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +1 -1
  218. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +1 -1
  219. package/.output/server/chunks/routes/api/workshop/channels/_id/index2.post.mjs +1 -1
  220. package/.output/server/chunks/routes/api/workshop/channels/_id/index3.post.mjs +1 -1
  221. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +1 -1
  222. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.post.mjs +1 -1
  223. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +1 -1
  224. package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs +37 -0
  225. package/.output/server/chunks/routes/api/workshop/channels/_id/line.put.mjs.map +1 -0
  226. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -1
  227. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.get.mjs +1 -1
  228. package/.output/server/chunks/routes/api/workshop/channels/_id/twin-profile.patch.mjs +1 -1
  229. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +1 -1
  230. package/.output/server/chunks/routes/api/workshop/channels/index.patch.mjs +1 -1
  231. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +4 -4
  232. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -1
  233. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +1 -1
  234. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +1 -1
  235. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +1 -1
  236. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -1
  237. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +1 -1
  238. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +1 -1
  239. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +1 -1
  240. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +1 -1
  241. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +1 -1
  242. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +1 -1
  243. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +1 -1
  244. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -1
  245. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
  246. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
  247. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
  248. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
  249. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
  250. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +1 -1
  251. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -1
  252. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
  253. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
  254. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
  255. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
  256. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
  257. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
  258. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -1
  259. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
  260. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
  261. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
  262. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -1
  263. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -1
  264. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +1 -1
  265. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
  266. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -1
  267. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +1 -1
  268. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +1 -1
  269. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
  270. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +6 -1
  271. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs.map +1 -1
  272. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
  273. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
  274. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
  275. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs +1 -1
  276. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
  277. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
  278. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -1
  279. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -1
  280. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +1 -1
  281. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +1 -1
  282. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +1 -1
  283. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +1 -1
  284. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
  285. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
  286. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
  287. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
  288. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs +3 -3
  289. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/revert.post.mjs.map +1 -1
  290. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
  291. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +1 -1
  292. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +1 -1
  293. package/.output/server/chunks/routes/api/workshop/dcw/recipes/index.patch.mjs +1 -1
  294. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
  295. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
  296. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
  297. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  298. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  299. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
  300. package/.output/server/chunks/routes/api/workshop/device-twins/_id/control.post.mjs +1 -1
  301. package/.output/server/chunks/routes/api/workshop/device-twins/_id/telemetry.post.mjs +1 -1
  302. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
  303. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +1 -1
  304. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +14 -2
  305. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs.map +1 -1
  306. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  307. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  308. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  309. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  310. package/.output/server/chunks/routes/api/workshop/index.post.mjs +1 -1
  311. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  312. package/.output/server/chunks/routes/api/workshop/index10.get.mjs +1 -1
  313. package/.output/server/chunks/routes/api/workshop/index2.get.mjs +1 -1
  314. package/.output/server/chunks/routes/api/workshop/index2.post.mjs +1 -1
  315. package/.output/server/chunks/routes/api/workshop/index3.get.mjs +1 -1
  316. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
  317. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
  318. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -1
  319. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -1
  320. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
  321. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
  322. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -1
  323. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +1 -1
  324. package/.output/server/chunks/routes/api/workshop/index8.get.mjs +1 -1
  325. package/.output/server/chunks/routes/api/workshop/index8.post.mjs +1 -1
  326. package/.output/server/chunks/routes/api/workshop/index9.get.mjs +3 -3
  327. package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
  328. package/.output/server/chunks/routes/api/workshop/index9.post.mjs +1 -1
  329. package/.output/server/chunks/routes/api/workshop/notifications/read.post.mjs +1 -1
  330. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  331. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  332. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  333. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  334. package/.output/server/chunks/routes/api/workshop/schedules/_id/runs.get.mjs +1 -1
  335. package/.output/server/chunks/routes/api/workshop/schedules/_id_.patch.mjs +1 -1
  336. package/.output/server/chunks/routes/api/workshop/tasks/_id/complete.post.mjs +1 -1
  337. package/.output/server/chunks/routes/api/workshop/tasks/_id/dispatch.post.mjs +1 -1
  338. package/.output/server/chunks/routes/api/workshop/tasks/_id/report.post.mjs +1 -1
  339. package/.output/server/chunks/routes/api/workshop/tasks/_id_.get.mjs +1 -1
  340. package/.output/server/chunks/routes/api/workshop/teams/_id/deploy.post.mjs +1 -1
  341. package/.output/server/chunks/routes/api/workshop/teams/_id/index.post.mjs +1 -1
  342. package/.output/server/chunks/routes/api/workshop/teams/_id/index.put.mjs +1 -1
  343. package/.output/server/chunks/routes/api/workshop/teams/_id/index2.get.mjs +1 -1
  344. package/.output/server/chunks/routes/api/workshop/teams/_id_.patch.mjs +1 -1
  345. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs +4 -1
  346. package/.output/server/chunks/routes/api/workshop/users/register.post.mjs.map +1 -1
  347. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +2 -2
  348. package/.output/server/chunks/routes/renderer.mjs +2 -2
  349. package/.output/server/chunks/virtual/entry.mjs +340 -52
  350. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  351. package/.output/server/package.json +1 -1
  352. package/README-zh.md +7 -3
  353. package/README.md +11 -5
  354. package/app/components/app-header/HitlBell.vue +9 -9
  355. package/app/components/dcw/DcwAddNodeModal.vue +3 -3
  356. package/app/components/dcw/DcwNodesTable.vue +4 -4
  357. package/app/components/dcw/DcwRecipeEditModal.vue +2 -2
  358. package/app/components/workshop/ChatMemberPanel.vue +39 -38
  359. package/app/components/workshop/ChatTimeline.vue +33 -24
  360. package/app/components/workshop/Composer.vue +7 -7
  361. package/app/components/workshop/NotificationCenter.vue +22 -13
  362. package/app/components/workshop/PluginSlot.vue +1 -1
  363. package/app/components/workshop/TaskInspectorDrawer.vue +5 -5
  364. package/app/components/workshop/blocks/ClusterTool.vue +1 -1
  365. package/app/components/workshop/composer/ComposerToolbar.vue +2 -2
  366. package/app/components/workshop/composer/MentionMenu.vue +1 -1
  367. package/app/components/workshop/composer/ReplyChip.vue +2 -2
  368. package/app/components/workshop/composer/StatusChip.vue +7 -7
  369. package/app/components/workshop/console/LineOperationsPanel.vue +15 -14
  370. package/app/components/workshop/lanes/LaneHeader.vue +5 -3
  371. package/app/components/workshop/session-list/ChannelSettingsModal.vue +43 -1
  372. package/app/composables/useCodeCopy.ts +16 -2
  373. package/app/composables/workshop/useWorkshopApi.ts +7 -0
  374. package/app/stores/workshop/notifications.ts +43 -17
  375. package/docs/cli.en.md +1 -1
  376. package/i18n/dicts/_en.json +1551 -1557
  377. package/i18n/dicts/_en2.json +300 -300
  378. package/i18n/dicts/_en4.json +114 -115
  379. package/i18n/dicts/agentLanesView.json +61 -57
  380. package/i18n/dicts/appHeader.json +17 -7
  381. package/i18n/dicts/channelSessionList.json +51 -48
  382. package/i18n/dicts/chat.json +79 -0
  383. package/i18n/dicts/clusterTool.json +4 -3
  384. package/i18n/dicts/composer.json +38 -38
  385. package/i18n/dicts/dcwDetail.json +219 -209
  386. package/i18n/dicts/lineOps.json +14 -0
  387. package/i18n/dicts/multiChannelView.json +13 -13
  388. package/i18n/dicts/notifications.json +13 -0
  389. package/i18n/dicts/taskInspectorDrawer.json +25 -19
  390. package/i18n/locales/en.ts +152 -8
  391. package/i18n/locales/zh-CN.ts +152 -8
  392. package/package.json +1 -1
  393. package/public/robots.txt +3 -0
  394. package/server/api/mcp/workshop.ts +8 -1
  395. package/server/api/metrics.ts +4 -1
  396. package/server/api/plugins/[name]/[...path].ts +4 -3
  397. package/server/api/system/backup/list.get.ts +32 -0
  398. package/server/api/system/backup/run.post.ts +21 -0
  399. package/server/api/system/settings/index.patch.ts +12 -2
  400. package/server/api/system/settings/reset.post.ts +11 -2
  401. package/server/api/users/[id].delete.ts +9 -2
  402. package/server/api/users/[id].put.ts +9 -2
  403. package/server/api/users/index.post.ts +9 -2
  404. package/server/api/users/login.post.ts +3 -3
  405. package/server/api/users/register.post.ts +11 -1
  406. package/server/api/workshop/a2a/[agentId]/rpc/index.post.ts +23 -13
  407. package/server/api/workshop/channel-templates/[id]/instantiate.post.ts +6 -0
  408. package/server/api/workshop/channels/[id]/line.put.ts +30 -0
  409. package/server/api/workshop/dcw/line/query.get.ts +6 -0
  410. package/server/api/workshop/dcw/recipes/[id]/revert.post.ts +3 -2
  411. package/server/api/workshop/fs/dirs.get.ts +19 -1
  412. package/server/api/workshop/ops-logs/index.get.ts +3 -2
  413. package/server/api/workshop/users/register.post.ts +7 -0
  414. package/server/mcp/workshop-server.ts +36 -13
  415. package/server/middleware/00-security-headers.ts +38 -0
  416. package/server/middleware/01-rate-guard.ts +101 -0
  417. package/server/plugins/backup.ts +56 -1
  418. package/server/plugins-builtin/diag-bridge/host/plugin.mjs +18 -11
  419. package/server/repositories/user.repository.ts +10 -5
  420. package/server/services/user.service.ts +24 -1
  421. package/server/services/workshop/agents/host-tool-bridge/dispatch.ts +1 -1
  422. package/server/services/workshop/agents/host-tool-bridge/tools/industrial.ts +4 -2
  423. package/server/services/workshop/agents/industrial/index.ts +1 -1
  424. package/server/services/workshop/agents/industrial/ops-tools.ts +168 -26
  425. package/server/services/workshop/agents/tool-classes.ts +2 -0
  426. package/server/services/workshop/aml/dataset-builder.ts +4 -2
  427. package/server/services/workshop/aml/job-orchestrator/process.ts +1 -0
  428. package/server/services/workshop/aml/job-orchestrator/shared.ts +2 -0
  429. package/server/services/workshop/aml/job-orchestrator/start-job.ts +5 -2
  430. package/server/services/workshop/db/channel.repo.ts +11 -1
  431. package/server/services/workshop/db/database/migrations.ts +2 -0
  432. package/server/services/workshop/db/database/rows.ts +2 -0
  433. package/server/services/workshop/db/database/seed.ts +19 -9
  434. package/server/services/workshop/dcw/dcw-controller/recipes.ts +60 -4
  435. package/server/services/workshop/dcw/dcw-controller/write.ts +35 -6
  436. package/server/services/workshop/dcw/dcw-recipe.repo.ts +4 -3
  437. package/server/services/workshop/dcw/param-map.repo.ts +3 -0
  438. package/server/services/workshop/plugins/host/init.mjs +9 -1
  439. package/server/services/workshop/plugins/host/load.mjs +2 -2
  440. package/server/services/workshop/runtime/manager/admin-channel.ts +27 -1
  441. package/server/services/workshop/runtime/manager/channel-templates.ts +5 -4
  442. package/server/services/workshop/runtime/manager/runtime-wiring.ts +17 -1
  443. package/shared/config/schema.json +2 -0
  444. package/.output/public/_nuxt/4wrEQ3np2.js +0 -21
  445. package/.output/public/_nuxt/CGQvF-Gg.js +0 -14
  446. package/.output/public/_nuxt/CcGuXiOa.js +0 -1
  447. package/.output/public/_nuxt/D0SNhlnt.js +0 -1
  448. package/.output/public/_nuxt/DnH9SRMW2.js +0 -1
  449. package/.output/public/_nuxt/ON2x-t6n.js +0 -1
  450. package/.output/public/_nuxt/PluginSlot.DmjNbrcX.css +0 -1
  451. package/.output/public/_nuxt/_wsId_.DkrQkT6r.css +0 -1
  452. package/.output/public/_nuxt/builds/meta/c64014ca-3595-4b7a-a5ca-055687c83ba2.json +0 -1
  453. package/.output/server/chunks/build/_id_-BUpQSlzo.mjs.map +0 -1
  454. package/.output/server/chunks/build/useWorkshopApi-CO3ophqt.mjs.map +0 -1
  455. package/scripts/.chk-tok +0 -1
  456. package/scripts/.retrain-body.json +0 -1
  457. package/scripts/.retrain3-body.json +0 -1
  458. package/scripts/.rt-tok +0 -1
  459. package/scripts/.rt3-tok +0 -1
@@ -22,7 +22,7 @@ import { f as formatLocalClock } from './useLocalTime-DZ2RAtVs.mjs';
22
22
  import { u as useEntitiesStore, b as agentHueColor, c as useEventsStore, a as useWorkshopWs, d as useChatStore, e as useNotificationsStore, B as BlockClusterer, f as chatErrorCode, g as chatErrorMessage, h as useWsConnectionStore, i as blockTier, j as buildStreamText, k as isStreaming, s as streamCursorVisible } from './useWorkshopWs-Bm80bLn7.mjs';
23
23
  import { u as useWorkspacesStore } from './workspaces-CmW0cpOt.mjs';
24
24
  import { a as apiErrorMessage } from './api-error-BwAQLw44.mjs';
25
- import { u as useWorkshopApi } from './useWorkshopApi-CO3ophqt.mjs';
25
+ import { u as useWorkshopApi } from './useWorkshopApi-C9sTYu1F.mjs';
26
26
  import { O as OmpTerminalPanel_default } from './OmpTerminalPanel-mk31gVzA.mjs';
27
27
  import { T as TownView_default } from './TownView-fP9BiALv.mjs';
28
28
  import { u as useStorage } from './core-CgTOPS4t.mjs';
@@ -3099,8 +3099,25 @@ var ChannelSettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE
3099
3099
  const settingsForm = reactive({
3100
3100
  name: "",
3101
3101
  scenarioPrompt: "",
3102
- workspace: ""
3102
+ workspace: "",
3103
+ lineId: ""
3103
3104
  });
3105
+ const lineOptions = ref([]);
3106
+ const linesLoading = ref(false);
3107
+ const lineChanged = ref(false);
3108
+ const loadLines = async () => {
3109
+ linesLoading.value = true;
3110
+ try {
3111
+ const res = await api$11.listDcwLines();
3112
+ lineOptions.value = res?.data?.lines ?? [];
3113
+ } catch {} finally {
3114
+ linesLoading.value = false;
3115
+ }
3116
+ };
3117
+ const onLineChange = (v) => {
3118
+ settingsForm.lineId = String(v ?? "");
3119
+ lineChanged.value = true;
3120
+ };
3104
3121
  const llmForm = reactive({
3105
3122
  harness: "omp",
3106
3123
  provider: "",
@@ -3158,6 +3175,9 @@ var ChannelSettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE
3158
3175
  settingsForm.name = meta?.name ?? "";
3159
3176
  settingsForm.scenarioPrompt = meta?.scenarioPrompt ?? "";
3160
3177
  settingsForm.workspace = meta?.workspace ?? "";
3178
+ settingsForm.lineId = meta?.lineId ?? "";
3179
+ lineChanged.value = false;
3180
+ loadLines();
3161
3181
  let saved = null;
3162
3182
  try {
3163
3183
  const metaAny = meta;
@@ -3217,6 +3237,7 @@ var ChannelSettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE
3217
3237
  ...llmForm.effort ? { effort: llmForm.effort } : {}
3218
3238
  } : null
3219
3239
  });
3240
+ if (lineChanged.value) await api$11.bindChannelLine(props.channelId, settingsForm.lineId || null);
3220
3241
  api$1.success(t("channelSessionList.kvsxlu6031"));
3221
3242
  open.value = false;
3222
3243
  emit("saved");
@@ -3234,13 +3255,13 @@ var ChannelSettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE
3234
3255
  const _component_a_modal = modal_default;
3235
3256
  const _component_a_form = form_default;
3236
3257
  const _component_a_form_item = FormItem_default;
3258
+ const _component_a_select = Select;
3237
3259
  const _component_a_textarea = TextArea_default;
3238
3260
  const _component_a_input_group = Group_default;
3239
3261
  const _component_a_input = input_default;
3240
3262
  const _component_a_button = button_default;
3241
3263
  const _component_a_space = Space;
3242
3264
  const _component_a_switch = switch_default;
3243
- const _component_a_select = Select;
3244
3265
  const _component_workshop_file_selector_modal = FileSelectorModal_default;
3245
3266
  _push(`<!--[-->`);
3246
3267
  _push(ssrRenderComponent(_component_a_modal, {
@@ -3256,6 +3277,44 @@ var ChannelSettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE
3256
3277
  if (_push) _push(ssrRenderComponent(_component_a_form, { layout: "vertical" }, {
3257
3278
  default: withCtx((_, _push, _parent, _scopeId) => {
3258
3279
  if (_push) {
3280
+ _push(ssrRenderComponent(_component_a_form_item, { label: _ctx.$t("channelSessionList.bindLineLabel") }, {
3281
+ default: withCtx((_, _push, _parent, _scopeId) => {
3282
+ if (_push) {
3283
+ _push(ssrRenderComponent(_component_a_select, {
3284
+ value: unref(settingsForm).lineId || void 0,
3285
+ loading: unref(linesLoading),
3286
+ "allow-clear": "",
3287
+ "show-search": "",
3288
+ "option-filter-prop": "label",
3289
+ placeholder: _ctx.$t("channelSessionList.bindLinePlaceholder"),
3290
+ options: unref(lineOptions).map((l) => ({
3291
+ value: l.id,
3292
+ label: l.name
3293
+ })),
3294
+ onChange: onLineChange
3295
+ }, null, _parent, _scopeId));
3296
+ _push(`<div class="bind-line-hint" data-v-cb687826${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.bindLineHint"))}</div>`);
3297
+ } else return [createVNode(_component_a_select, {
3298
+ value: unref(settingsForm).lineId || void 0,
3299
+ loading: unref(linesLoading),
3300
+ "allow-clear": "",
3301
+ "show-search": "",
3302
+ "option-filter-prop": "label",
3303
+ placeholder: _ctx.$t("channelSessionList.bindLinePlaceholder"),
3304
+ options: unref(lineOptions).map((l) => ({
3305
+ value: l.id,
3306
+ label: l.name
3307
+ })),
3308
+ onChange: onLineChange
3309
+ }, null, 8, [
3310
+ "value",
3311
+ "loading",
3312
+ "placeholder",
3313
+ "options"
3314
+ ]), createVNode("div", { class: "bind-line-hint" }, toDisplayString(_ctx.$t("channelSessionList.bindLineHint")), 1)];
3315
+ }),
3316
+ _: 1
3317
+ }, _parent, _scopeId));
3259
3318
  _push(ssrRenderComponent(_component_a_form_item, { label: _ctx.$t("channelSessionList.k1i8q46x007") }, {
3260
3319
  default: withCtx((_, _push, _parent, _scopeId) => {
3261
3320
  if (_push) _push(ssrRenderComponent(_component_a_textarea, {
@@ -3629,12 +3688,12 @@ var ChannelSettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE
3629
3688
  default: withCtx((_, _push, _parent, _scopeId) => {
3630
3689
  if (_push) {
3631
3690
  if (unref(pluginRows).length) {
3632
- _push(`<div class="ch-plugin-list" data-v-3ff76d4f${_scopeId}><!--[-->`);
3691
+ _push(`<div class="ch-plugin-list" data-v-cb687826${_scopeId}><!--[-->`);
3633
3692
  ssrRenderList(unref(pluginRows), (p) => {
3634
- _push(`<div class="ch-plugin-row" data-v-3ff76d4f${_scopeId}><div class="ch-plugin-main" data-v-3ff76d4f${_scopeId}><span class="aw-mono" data-v-3ff76d4f${_scopeId}>${ssrInterpolate(p.name)}</span>`);
3635
- if (p.builtin) _push(`<span class="ws-hint" data-v-3ff76d4f${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.builtinTag"))}</span>`);
3693
+ _push(`<div class="ch-plugin-row" data-v-cb687826${_scopeId}><div class="ch-plugin-main" data-v-cb687826${_scopeId}><span class="aw-mono" data-v-cb687826${_scopeId}>${ssrInterpolate(p.name)}</span>`);
3694
+ if (p.builtin) _push(`<span class="ws-hint" data-v-cb687826${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.builtinTag"))}</span>`);
3636
3695
  else _push(`<!---->`);
3637
- if (p.description) _push(`<span class="ws-hint ch-plugin-desc" data-v-3ff76d4f${_scopeId}>${ssrInterpolate(p.description)}</span>`);
3696
+ if (p.description) _push(`<span class="ws-hint ch-plugin-desc" data-v-cb687826${_scopeId}>${ssrInterpolate(p.description)}</span>`);
3638
3697
  else _push(`<!---->`);
3639
3698
  _push(`</div>`);
3640
3699
  _push(ssrRenderComponent(_component_a_switch, {
@@ -3646,10 +3705,10 @@ var ChannelSettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE
3646
3705
  _push(`</div>`);
3647
3706
  });
3648
3707
  _push(`<!--]-->`);
3649
- if (unref(pluginSource) !== "explicit") _push(`<span class="ws-hint" data-v-3ff76d4f${_scopeId}>${ssrInterpolate(unref(t)("channelSessionList.k1plugsrc046"))}</span>`);
3708
+ if (unref(pluginSource) !== "explicit") _push(`<span class="ws-hint" data-v-cb687826${_scopeId}>${ssrInterpolate(unref(t)("channelSessionList.k1plugsrc046"))}</span>`);
3650
3709
  else _push(`<!---->`);
3651
3710
  _push(`</div>`);
3652
- } else _push(`<span class="ws-hint" data-v-3ff76d4f${_scopeId}>—</span>`);
3711
+ } else _push(`<span class="ws-hint" data-v-cb687826${_scopeId}>—</span>`);
3653
3712
  } else return [unref(pluginRows).length ? (openBlock(), createBlock("div", {
3654
3713
  key: 0,
3655
3714
  class: "ch-plugin-list"
@@ -3695,12 +3754,12 @@ var ChannelSettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE
3695
3754
  onClick: openSaveTemplate
3696
3755
  }, {
3697
3756
  default: withCtx((_, _push, _parent, _scopeId) => {
3698
- if (_push) _push(`<span class="i-tabler-template" data-v-3ff76d4f${_scopeId}></span> ${ssrInterpolate(_ctx.$t("channelSessionList.k6kpql010"))}`);
3757
+ if (_push) _push(`<span class="i-tabler-template" data-v-cb687826${_scopeId}></span> ${ssrInterpolate(_ctx.$t("channelSessionList.k6kpql010"))}`);
3699
3758
  else return [createVNode("span", { class: "i-tabler-template" }), createTextVNode(" " + toDisplayString(_ctx.$t("channelSessionList.k6kpql010")), 1)];
3700
3759
  }),
3701
3760
  _: 1
3702
3761
  }, _parent, _scopeId));
3703
- _push(`<span class="ws-hint" data-v-3ff76d4f${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.k1x6kznr021"))}</span>`);
3762
+ _push(`<span class="ws-hint" data-v-cb687826${_scopeId}>${ssrInterpolate(_ctx.$t("channelSessionList.k1x6kznr021"))}</span>`);
3704
3763
  } else return [createVNode(_component_a_button, {
3705
3764
  size: "small",
3706
3765
  onClick: openSaveTemplate
@@ -3712,6 +3771,27 @@ var ChannelSettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE
3712
3771
  _: 1
3713
3772
  }, _parent, _scopeId));
3714
3773
  } else return [
3774
+ createVNode(_component_a_form_item, { label: _ctx.$t("channelSessionList.bindLineLabel") }, {
3775
+ default: withCtx(() => [createVNode(_component_a_select, {
3776
+ value: unref(settingsForm).lineId || void 0,
3777
+ loading: unref(linesLoading),
3778
+ "allow-clear": "",
3779
+ "show-search": "",
3780
+ "option-filter-prop": "label",
3781
+ placeholder: _ctx.$t("channelSessionList.bindLinePlaceholder"),
3782
+ options: unref(lineOptions).map((l) => ({
3783
+ value: l.id,
3784
+ label: l.name
3785
+ })),
3786
+ onChange: onLineChange
3787
+ }, null, 8, [
3788
+ "value",
3789
+ "loading",
3790
+ "placeholder",
3791
+ "options"
3792
+ ]), createVNode("div", { class: "bind-line-hint" }, toDisplayString(_ctx.$t("channelSessionList.bindLineHint")), 1)]),
3793
+ _: 1
3794
+ }, 8, ["label"]),
3715
3795
  createVNode(_component_a_form_item, { label: _ctx.$t("channelSessionList.k1i8q46x007") }, {
3716
3796
  default: withCtx(() => [createVNode(_component_a_textarea, {
3717
3797
  value: unref(settingsForm).scenarioPrompt,
@@ -3906,6 +3986,27 @@ var ChannelSettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE
3906
3986
  }, _parent, _scopeId));
3907
3987
  else return [createVNode(_component_a_form, { layout: "vertical" }, {
3908
3988
  default: withCtx(() => [
3989
+ createVNode(_component_a_form_item, { label: _ctx.$t("channelSessionList.bindLineLabel") }, {
3990
+ default: withCtx(() => [createVNode(_component_a_select, {
3991
+ value: unref(settingsForm).lineId || void 0,
3992
+ loading: unref(linesLoading),
3993
+ "allow-clear": "",
3994
+ "show-search": "",
3995
+ "option-filter-prop": "label",
3996
+ placeholder: _ctx.$t("channelSessionList.bindLinePlaceholder"),
3997
+ options: unref(lineOptions).map((l) => ({
3998
+ value: l.id,
3999
+ label: l.name
4000
+ })),
4001
+ onChange: onLineChange
4002
+ }, null, 8, [
4003
+ "value",
4004
+ "loading",
4005
+ "placeholder",
4006
+ "options"
4007
+ ]), createVNode("div", { class: "bind-line-hint" }, toDisplayString(_ctx.$t("channelSessionList.bindLineHint")), 1)]),
4008
+ _: 1
4009
+ }, 8, ["label"]),
3909
4010
  createVNode(_component_a_form_item, { label: _ctx.$t("channelSessionList.k1i8q46x007") }, {
3910
4011
  default: withCtx(() => [createVNode(_component_a_textarea, {
3911
4012
  value: unref(settingsForm).scenarioPrompt,
@@ -4121,7 +4222,7 @@ ChannelSettingsModal_vue_vue_type_script_setup_true_lang_default.setup = (props,
4121
4222
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/session-list/ChannelSettingsModal.vue");
4122
4223
  return _sfc_setup$55 ? _sfc_setup$55(props, ctx) : void 0;
4123
4224
  };
4124
- var ChannelSettingsModal_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ChannelSettingsModal_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-3ff76d4f"]]), { __name: "WorkshopSessionListChannelSettingsModal" });
4225
+ var ChannelSettingsModal_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ChannelSettingsModal_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-cb687826"]]), { __name: "WorkshopSessionListChannelSettingsModal" });
4125
4226
  //#endregion
4126
4227
  //#region app/components/workshop/session-list/SaveTemplateModal.vue?vue&type=script&setup=true&lang.ts
4127
4228
  var SaveTemplateModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -5374,17 +5475,17 @@ var ClusterTool_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
5374
5475
  const shown = computed(() => expanded.value ? toolLines.value : toolLines.value.slice(0, MAX$5));
5375
5476
  const hasMore = computed(() => toolLines.value.length > MAX$5);
5376
5477
  return (_ctx, _push, _parent, _attrs) => {
5377
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "tool-cluster" }, _attrs))} data-v-43cd8a58><!--[-->`);
5478
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "tool-cluster" }, _attrs))} data-v-878f10f1><!--[-->`);
5378
5479
  ssrRenderList(shown.value, (t) => {
5379
- _push(`<div class="${ssrRenderClass([t.meta.kind, "tool-line"])}" data-v-43cd8a58><time class="tool-time aw-mono" data-v-43cd8a58>${ssrInterpolate(t.time)}</time><span class="tool-node" data-v-43cd8a58></span><span class="${ssrRenderClass([t.meta.icon, "tool-icon"])}" data-v-43cd8a58></span><span class="tool-name" data-v-43cd8a58>${ssrInterpolate(t.name)}</span>`);
5380
- if (t.args) _push(`<span class="tool-args"${ssrRenderAttr("title", t.args)} data-v-43cd8a58>${ssrInterpolate(t.args)}</span>`);
5480
+ _push(`<div class="${ssrRenderClass([t.meta.kind, "tool-line"])}" data-v-878f10f1><time class="tool-time aw-mono" data-v-878f10f1>${ssrInterpolate(t.time)}</time><span class="tool-node" data-v-878f10f1></span><span class="${ssrRenderClass([t.meta.icon, "tool-icon"])}" data-v-878f10f1></span><span class="tool-name" data-v-878f10f1>${ssrInterpolate(t.name)}</span>`);
5481
+ if (t.args) _push(`<span class="tool-args"${ssrRenderAttr("title", t.args)} data-v-878f10f1>${ssrInterpolate(t.args)}</span>`);
5381
5482
  else _push(`<!---->`);
5382
- if (t.meta.kind !== "native") _push(`<span class="${ssrRenderClass([t.meta.kind, "tool-kind"])}" data-v-43cd8a58>${ssrInterpolate(t.meta.kind === "industrial" ? "工业" : "harness")}</span>`);
5483
+ if (t.meta.kind !== "native") _push(`<span class="${ssrRenderClass([t.meta.kind, "tool-kind"])}" data-v-878f10f1>${ssrInterpolate(t.meta.kind === "industrial" ? _ctx.$t("clusterTool.kindIndustrial") : "harness")}</span>`);
5383
5484
  else _push(`<!---->`);
5384
5485
  _push(`</div>`);
5385
5486
  });
5386
5487
  _push(`<!--]-->`);
5387
- if (hasMore.value) _push(`<button class="more-btn" data-v-43cd8a58>${ssrInterpolate(expanded.value ? _ctx.$t("clusterTool.k40p82001") : _ctx.$t("clusterTool.expandAll", { p0: toolLines.value.length }))}</button>`);
5488
+ if (hasMore.value) _push(`<button class="more-btn" data-v-878f10f1>${ssrInterpolate(expanded.value ? _ctx.$t("clusterTool.k40p82001") : _ctx.$t("clusterTool.expandAll", { p0: toolLines.value.length }))}</button>`);
5388
5489
  else _push(`<!---->`);
5389
5490
  _push(`</div>`);
5390
5491
  };
@@ -5398,7 +5499,7 @@ ClusterTool_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) =>
5398
5499
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/blocks/ClusterTool.vue");
5399
5500
  return _sfc_setup$47 ? _sfc_setup$47(props, ctx) : void 0;
5400
5501
  };
5401
- var ClusterTool_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterTool_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-43cd8a58"]]), { __name: "WorkshopBlocksClusterTool" });
5502
+ var ClusterTool_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ClusterTool_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-878f10f1"]]), { __name: "WorkshopBlocksClusterTool" });
5402
5503
  //#endregion
5403
5504
  //#region app/components/workshop/blocks/ClusterStatus.vue?vue&type=script&setup=true&lang.ts
5404
5505
  var ClusterStatus_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -6490,6 +6591,7 @@ var ChatTimeline_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
6490
6591
  * 写入 chat store 的 replyTarget,由 Composer 转成 replyToId 发出。
6491
6592
  */
6492
6593
  const props = __props;
6594
+ const { t } = useI18n();
6493
6595
  const chat = useChatStore();
6494
6596
  const entities = useEntitiesStore();
6495
6597
  const notifications = useNotificationsStore();
@@ -6514,7 +6616,7 @@ var ChatTimeline_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
6514
6616
  }
6515
6617
  function avatarText(m) {
6516
6618
  if (m.senderType === "agent") return senderNameOf(m).charAt(0).toUpperCase();
6517
- return "人";
6619
+ return t("chat.avatarHuman");
6518
6620
  }
6519
6621
  function renderText(m) {
6520
6622
  return mdLiteMentions(m.text, mentionMembers.value);
@@ -6531,7 +6633,7 @@ var ChatTimeline_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
6531
6633
  /** 引用锚点的发送者名(锚点不在已加载窗口内 → 显示"更早的消息") */
6532
6634
  function replyAnchorName(m) {
6533
6635
  const anchor = m.replyToId ? byId.value.get(m.replyToId) : void 0;
6534
- return anchor ? senderNameOf(anchor) : "更早的消息";
6636
+ return anchor ? senderNameOf(anchor) : t("chat.earlierMessage");
6535
6637
  }
6536
6638
  /**
6537
6639
  * 投递台账按 messageId 建一次索引。
@@ -6550,28 +6652,20 @@ var ChatTimeline_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
6550
6652
  return out;
6551
6653
  });
6552
6654
  const deliveriesOf = (m) => deliveriesByMessage.value.get(m.id) ?? [];
6553
- const DELIVERY_META = {
6554
- pending: {
6555
- label: "待投递",
6556
- tone: "pending"
6557
- },
6558
- delivered: {
6559
- label: "已入信箱",
6560
- tone: "delivered"
6561
- },
6562
- consumed: {
6563
- label: "已被消费",
6564
- tone: "consumed"
6565
- },
6566
- failed: {
6567
- label: "投递失败",
6568
- tone: "failed"
6569
- },
6570
- cancelled: {
6571
- label: "已取消",
6572
- tone: "cancelled"
6573
- }
6574
- };
6655
+ const DELIVERY_TONE = {
6656
+ pending: "pending",
6657
+ delivered: "delivered",
6658
+ consumed: "consumed",
6659
+ failed: "failed",
6660
+ cancelled: "cancelled"
6661
+ };
6662
+ const deliveryLabels = computed(() => ({
6663
+ pending: t("chat.deliveryPending"),
6664
+ delivered: t("chat.deliveryDelivered"),
6665
+ consumed: t("chat.deliveryConsumed"),
6666
+ failed: t("chat.deliveryFailed"),
6667
+ cancelled: t("chat.deliveryCancelled")
6668
+ }));
6575
6669
  const scroller = ref(null);
6576
6670
  const atBottom = ref(true);
6577
6671
  function scrollToBottom() {
@@ -6598,43 +6692,43 @@ var ChatTimeline_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
6598
6692
  scrollToBottom();
6599
6693
  });
6600
6694
  return (_ctx, _push, _parent, _attrs) => {
6601
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "chat-timeline" }, _attrs))} data-v-b705073e><div class="ct-head" data-v-b705073e><span class="i-tabler-messages ct-icon" data-v-b705073e></span><span class="ct-title" data-v-b705073e>群聊</span><span class="ct-count" data-v-b705073e>${ssrInterpolate(messages.value.length)} 条</span><span class="ct-spacer" data-v-b705073e></span>`);
6602
- if (!atBottom.value) _push(`<span class="ct-jump" role="button" tabindex="0" title="回到最新" data-v-b705073e><span class="i-tabler-arrow-down" data-v-b705073e></span> 最新 </span>`);
6695
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "chat-timeline" }, _attrs))} data-v-2619237f><div class="ct-head" data-v-2619237f><span class="i-tabler-messages ct-icon" data-v-2619237f></span><span class="ct-title" data-v-2619237f>${ssrInterpolate(_ctx.$t("chat.title"))}</span><span class="ct-count" data-v-2619237f>${ssrInterpolate(_ctx.$t("chat.messageCount", { p0: messages.value.length }))}</span><span class="ct-spacer" data-v-2619237f></span>`);
6696
+ if (!atBottom.value) _push(`<span class="ct-jump" role="button" tabindex="0"${ssrRenderAttr("title", _ctx.$t("chat.backToLatest"))} data-v-2619237f><span class="i-tabler-arrow-down" data-v-2619237f></span> ${ssrInterpolate(_ctx.$t("chat.latest"))}</span>`);
6603
6697
  else _push(`<!---->`);
6604
- _push(`</div><div class="ct-scroll" data-v-b705073e>`);
6605
- if (hasMore.value && messages.value.length > 0) _push(`<button type="button" class="ct-earlier"${ssrIncludeBooleanAttr(loading.value) ? " disabled" : ""} data-v-b705073e>${ssrInterpolate(loading.value ? "加载中…" : "加载更早的消息")}</button>`);
6698
+ _push(`</div><div class="ct-scroll" data-v-2619237f>`);
6699
+ if (hasMore.value && messages.value.length > 0) _push(`<button type="button" class="ct-earlier"${ssrIncludeBooleanAttr(loading.value) ? " disabled" : ""} data-v-2619237f>${ssrInterpolate(loading.value ? _ctx.$t("chat.loading") : _ctx.$t("chat.loadEarlier"))}</button>`);
6606
6700
  else _push(`<!---->`);
6607
- if (messages.value.length === 0) _push(`<div class="ct-empty" data-v-b705073e><span class="i-tabler-message-2 ct-empty-icon" data-v-b705073e></span><div data-v-b705073e>还没有群聊消息</div><div class="ct-empty-sub" data-v-b705073e> 直接发言只进群聊(0 次 Agent 执行);输入 @ 提及 Agent 才会触发执行,@ 成员只发定向通知。 </div></div>`);
6701
+ if (messages.value.length === 0) _push(`<div class="ct-empty" data-v-2619237f><span class="i-tabler-message-2 ct-empty-icon" data-v-2619237f></span><div data-v-2619237f>${ssrInterpolate(_ctx.$t("chat.emptyTitle"))}</div><div class="ct-empty-sub" data-v-2619237f>${ssrInterpolate(_ctx.$t("chat.emptyHint"))}</div></div>`);
6608
6702
  else _push(`<!---->`);
6609
6703
  _push(`<!--[-->`);
6610
6704
  ssrRenderList(messages.value, (m) => {
6611
- _push(`<div class="${ssrRenderClass([[m.senderType, operationOf(m) ? `op-${operationOf(m).kind}` : ""], "ct-row"])}"${ssrRenderAttr("data-operation", operationOf(m)?.kind)}${ssrRenderAttr("data-operation-severity", operationOf(m)?.severity)} data-v-b705073e><span class="${ssrRenderClass([{ "is-agent": m.senderType === "agent" }, "aw-avatar ct-ava"])}" style="${ssrRenderStyle(m.senderType === "agent" ? { "--av": unref(agentHueColor)(m.senderId) } : {})}" data-v-b705073e>${ssrInterpolate(avatarText(m))}</span><div class="ct-body" data-v-b705073e><div class="ct-meta" data-v-b705073e><span class="ct-sender" data-v-b705073e>${ssrInterpolate(senderNameOf(m))}</span><span class="${ssrRenderClass([m.senderType, "ct-role"])}" data-v-b705073e>`);
6612
- if (m.senderType === "user") _push(`<span class="i-tabler-user" data-v-b705073e></span>`);
6613
- else if (m.senderType === "agent") _push(`<span class="i-tabler-robot" data-v-b705073e></span>`);
6705
+ _push(`<div class="${ssrRenderClass([[m.senderType, operationOf(m) ? `op-${operationOf(m).kind}` : ""], "ct-row"])}"${ssrRenderAttr("data-operation", operationOf(m)?.kind)}${ssrRenderAttr("data-operation-severity", operationOf(m)?.severity)} data-v-2619237f><span class="${ssrRenderClass([{ "is-agent": m.senderType === "agent" }, "aw-avatar ct-ava"])}" style="${ssrRenderStyle(m.senderType === "agent" ? { "--av": unref(agentHueColor)(m.senderId) } : {})}" data-v-2619237f>${ssrInterpolate(avatarText(m))}</span><div class="ct-body" data-v-2619237f><div class="ct-meta" data-v-2619237f><span class="ct-sender" data-v-2619237f>${ssrInterpolate(senderNameOf(m))}</span><span class="${ssrRenderClass([m.senderType, "ct-role"])}" data-v-2619237f>`);
6706
+ if (m.senderType === "user") _push(`<span class="i-tabler-user" data-v-2619237f></span>`);
6707
+ else if (m.senderType === "agent") _push(`<span class="i-tabler-robot" data-v-2619237f></span>`);
6614
6708
  else _push(`<!---->`);
6615
- _push(` ${ssrInterpolate(m.senderType === "agent" ? unref(entities).agents[__props.channelId]?.find((a) => a.agentId === m.senderId)?.role ?? "agent" : m.senderType === "user" ? "用户" : "系统")}</span><span class="ct-time" data-v-b705073e>${ssrInterpolate(unref(formatLocalClock)(m.createdAt, false))}</span><button type="button" class="ct-reply-btn" title="引用这条消息回复" data-v-b705073e><span class="i-tabler-arrow-back-up" data-v-b705073e></span> 回复 </button></div>`);
6616
- if (m.replyToId) _push(`<div class="ct-replyto" data-v-b705073e><span class="i-tabler-corner-down-right" data-v-b705073e></span> 回复 <b data-v-b705073e>${ssrInterpolate(replyAnchorName(m))}</b></div>`);
6709
+ _push(` ${ssrInterpolate(m.senderType === "agent" ? unref(entities).agents[__props.channelId]?.find((a) => a.agentId === m.senderId)?.role ?? "agent" : m.senderType === "user" ? _ctx.$t("chat.roleUser") : _ctx.$t("chat.roleSystem"))}</span><span class="ct-time" data-v-2619237f>${ssrInterpolate(unref(formatLocalClock)(m.createdAt, false))}</span><button type="button" class="ct-reply-btn"${ssrRenderAttr("title", _ctx.$t("chat.replyTitle"))} data-v-2619237f><span class="i-tabler-arrow-back-up" data-v-2619237f></span> ${ssrInterpolate(_ctx.$t("chat.reply"))}</button></div>`);
6710
+ if (m.replyToId) _push(`<div class="ct-replyto" data-v-2619237f><span class="i-tabler-corner-down-right" data-v-2619237f></span> ${ssrInterpolate(_ctx.$t("chat.reply"))} <b data-v-2619237f>${ssrInterpolate(replyAnchorName(m))}</b></div>`);
6617
6711
  else _push(`<!---->`);
6618
- if (operationOf(m)) _push(`<div class="${ssrRenderClass([operationOf(m).kind, "ct-operation-badge"])}" data-v-b705073e><span class="${ssrRenderClass(operationOf(m).icon)}" data-v-b705073e></span> ${ssrInterpolate(operationOf(m).label)}</div>`);
6712
+ if (operationOf(m)) _push(`<div class="${ssrRenderClass([operationOf(m).kind, "ct-operation-badge"])}" data-v-2619237f><span class="${ssrRenderClass(operationOf(m).icon)}" data-v-2619237f></span> ${ssrInterpolate(operationOf(m).label)}</div>`);
6619
6713
  else _push(`<!---->`);
6620
- _push(`<div class="ct-text" data-v-b705073e>${renderText(m) ?? ""}</div>`);
6714
+ _push(`<div class="ct-text" data-v-2619237f>${renderText(m) ?? ""}</div>`);
6621
6715
  if (m.mentions.length > 0) {
6622
- _push(`<div class="ct-mentions" data-v-b705073e><!--[-->`);
6716
+ _push(`<div class="ct-mentions" data-v-2619237f><!--[-->`);
6623
6717
  ssrRenderList(m.mentions, (mm) => {
6624
- _push(`<span class="${ssrRenderClass([mm.type, "ct-mention-chip"])}"${ssrRenderAttr("data-agent-id", mm.type === "agent" ? mm.id : void 0)}${ssrRenderAttr("title", mm.type === "agent" ? "点击查看该 Agent" : "被 @ 的成员(不触发 Agent)")} data-v-b705073e><span class="${ssrRenderClass(mm.type === "agent" ? "i-tabler-robot" : "i-tabler-user")}" data-v-b705073e></span> @${ssrInterpolate(mm.label || (mm.type === "agent" ? unref(entities).agentName(__props.channelId, mm.id) : mm.id.slice(0, 8)))}</span>`);
6718
+ _push(`<span class="${ssrRenderClass([mm.type, "ct-mention-chip"])}"${ssrRenderAttr("data-agent-id", mm.type === "agent" ? mm.id : void 0)}${ssrRenderAttr("title", mm.type === "agent" ? _ctx.$t("chat.mentionAgentTitle") : _ctx.$t("chat.mentionMemberTitle"))} data-v-2619237f><span class="${ssrRenderClass(mm.type === "agent" ? "i-tabler-robot" : "i-tabler-user")}" data-v-2619237f></span> @${ssrInterpolate(mm.label || (mm.type === "agent" ? unref(entities).agentName(__props.channelId, mm.id) : mm.id.slice(0, 8)))}</span>`);
6625
6719
  });
6626
6720
  _push(`<!--]--></div>`);
6627
6721
  } else _push(`<!---->`);
6628
6722
  if (deliveriesOf(m).length > 0) {
6629
- _push(`<div class="ct-deliveries" data-v-b705073e><!--[-->`);
6723
+ _push(`<div class="ct-deliveries" data-v-2619237f><!--[-->`);
6630
6724
  ssrRenderList(deliveriesOf(m), (d) => {
6631
- _push(`<span class="ct-delivery"${ssrRenderAttr("data-tone", DELIVERY_META[d.status]?.tone ?? "pending")}${ssrRenderAttr("title", d.error || `deliveryId: ${d.deliveryId}`)} data-v-b705073e><span class="cd-dot" data-v-b705073e></span>@${ssrInterpolate(unref(entities).agentName(__props.channelId, d.targetAgentId))} · ${ssrInterpolate(DELIVERY_META[d.status]?.label ?? d.status)}</span>`);
6725
+ _push(`<span class="ct-delivery"${ssrRenderAttr("data-tone", DELIVERY_TONE[d.status] ?? "pending")}${ssrRenderAttr("title", d.error || `deliveryId: ${d.deliveryId}`)} data-v-2619237f><span class="cd-dot" data-v-2619237f></span>@${ssrInterpolate(unref(entities).agentName(__props.channelId, d.targetAgentId))} · ${ssrInterpolate(deliveryLabels.value[d.status] ?? d.status)}</span>`);
6632
6726
  });
6633
6727
  _push(`<!--]--></div>`);
6634
6728
  } else _push(`<!---->`);
6635
6729
  if (m.senderType === "agent" && m.sourceChatMessageId) {
6636
- _push(`<div class="ct-source" data-v-b705073e><span class="i-tabler-link" data-v-b705073e></span> 回答自 ${ssrInterpolate(m.sourceChatMessageId.slice(0, 8))} `);
6637
- if (m.requesterUserId) _push(`<!--[--> · 提问者 ${ssrInterpolate(m.requesterUserId.slice(0, 8))}<!--]-->`);
6730
+ _push(`<div class="ct-source" data-v-2619237f><span class="i-tabler-link" data-v-2619237f></span> ${ssrInterpolate(_ctx.$t("chat.answeredFrom", { p0: m.sourceChatMessageId.slice(0, 8) }))} `);
6731
+ if (m.requesterUserId) _push(`<!--[-->${ssrInterpolate(_ctx.$t("chat.askedBy", { p0: m.requesterUserId.slice(0, 8) }))}<!--]-->`);
6638
6732
  else _push(`<!---->`);
6639
6733
  _push(`</div>`);
6640
6734
  } else _push(`<!---->`);
@@ -6652,7 +6746,7 @@ ChatTimeline_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) =>
6652
6746
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/ChatTimeline.vue");
6653
6747
  return _sfc_setup$30 ? _sfc_setup$30(props, ctx) : void 0;
6654
6748
  };
6655
- var ChatTimeline_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ChatTimeline_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-b705073e"]]), { __name: "WorkshopChatTimeline" });
6749
+ var ChatTimeline_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ChatTimeline_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-2619237f"]]), { __name: "WorkshopChatTimeline" });
6656
6750
  function useLaneWidths() {
6657
6751
  const laneWidths = useStorage("aw.harness.laneW", {});
6658
6752
  const laneWidth = (id) => laneWidths.value[id] ?? 320;
@@ -6867,6 +6961,7 @@ var LaneHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
6867
6961
  const props = __props;
6868
6962
  const emit = __emit;
6869
6963
  const agent = computed(() => props.agent);
6964
+ const { t } = useI18n();
6870
6965
  /**
6871
6966
  * §8 监督/watchdog 徽标:
6872
6967
  * - `watchdog N`:监督回合已触发 watchdog(观察信号,不是取消);
@@ -6880,17 +6975,23 @@ var LaneHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
6880
6975
  if (s.watchdogCount > 0 || s.state === "WATCHDOG_SIGNALED") return {
6881
6976
  kind: "watchdog",
6882
6977
  text: `watchdog ${s.watchdogCount}`,
6883
- title: `监督观察阈值已触发(${s.watchdogAt ?? "-"});这是观察信号,不是取消`
6978
+ title: t("agentLanesView.supervisionWatchdogTitle", { p0: s.watchdogAt ?? "-" })
6884
6979
  };
6885
6980
  if (live) return {
6886
6981
  kind: "running",
6887
6982
  text: "supervising",
6888
- title: `监督回合进行中(attempt=${s.attemptId?.slice(0, 8) ?? "-"},tick=${s.snapshotRevision ?? "-"})`
6983
+ title: t("agentLanesView.supervisionRunningTitle", {
6984
+ p0: s.attemptId?.slice(0, 8) ?? "-",
6985
+ p1: s.snapshotRevision ?? "-"
6986
+ })
6889
6987
  };
6890
6988
  if (s.lastDecisionKind) return {
6891
6989
  kind: "decision",
6892
- text: `决策 ${s.lastDecisionKind}`,
6893
- title: `Lead 最后决策:${s.lastDecisionKind}(${s.completedAt ?? "-"})`
6990
+ text: t("agentLanesView.supervisionDecisionText", { p0: s.lastDecisionKind }),
6991
+ title: t("agentLanesView.supervisionDecisionTitle", {
6992
+ p0: s.lastDecisionKind,
6993
+ p1: s.completedAt ?? "-"
6994
+ })
6894
6995
  };
6895
6996
  return null;
6896
6997
  });
@@ -6923,24 +7024,24 @@ var LaneHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
6923
7024
  return (_ctx, _push, _parent, _attrs) => {
6924
7025
  const _component_a_button = button_default;
6925
7026
  const _component_a_popconfirm = popconfirm_default;
6926
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "lane-head" }, _attrs))} data-v-1dfd80fa><div class="head-top" data-v-1dfd80fa><span class="lane-ava" data-v-1dfd80fa><span style="${ssrRenderStyle({ "--av": unref(laneHue)(unref(agent).agentId) })}" data-v-1dfd80fa>${ssrInterpolate(unref(laneInitial)(unref(agent).name))}</span><span class="${ssrRenderClass([unref(agent).state, "lane-state"])}" data-v-1dfd80fa></span></span><span class="lane-name"${ssrRenderAttr("title", unref(agent).name)} data-v-1dfd80fa>${ssrInterpolate(unref(agent).name)}</span>`);
6927
- if (unref(agent).config?.systemPromptPrefix) _push(`<span class="lane-chip"${ssrRenderAttr("title", _ctx.$t("agentLanesView.k107s4am001"))} data-v-1dfd80fa>${ssrInterpolate(_ctx.$t("agentLanesView.k3xycu022"))}</span>`);
7027
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "lane-head" }, _attrs))} data-v-c7c28180><div class="head-top" data-v-c7c28180><span class="lane-ava" data-v-c7c28180><span style="${ssrRenderStyle({ "--av": unref(laneHue)(unref(agent).agentId) })}" data-v-c7c28180>${ssrInterpolate(unref(laneInitial)(unref(agent).name))}</span><span class="${ssrRenderClass([unref(agent).state, "lane-state"])}" data-v-c7c28180></span></span><span class="lane-name"${ssrRenderAttr("title", unref(agent).name)} data-v-c7c28180>${ssrInterpolate(unref(agent).name)}</span>`);
7028
+ if (unref(agent).config?.systemPromptPrefix) _push(`<span class="lane-chip"${ssrRenderAttr("title", _ctx.$t("agentLanesView.k107s4am001"))} data-v-c7c28180>${ssrInterpolate(_ctx.$t("agentLanesView.k3xycu022"))}</span>`);
6928
7029
  else _push(`<!---->`);
6929
- _push(`<span class="${ssrRenderClass([unref(agent).role, "lane-role"])}" data-v-1dfd80fa>${ssrInterpolate(unref(agent).role)}</span>`);
6930
- if (unref(termBadge)(__props.terminal)) _push(`<span class="term-badge"${ssrRenderAttr("title", _ctx.$t("agentLanesView.k1wn2vmt036", { p0: __props.terminal?.pid }))} data-v-1dfd80fa><span class="term-dot" style="${ssrRenderStyle({ background: unref(TERM_DOT)[unref(termBadge)(__props.terminal).color] ?? "var(--tone-neutral-dot)" })}" data-v-1dfd80fa></span> ${ssrInterpolate(unref(termBadge)(__props.terminal).text)}</span>`);
7030
+ _push(`<span class="${ssrRenderClass([unref(agent).role, "lane-role"])}" data-v-c7c28180>${ssrInterpolate(unref(agent).role)}</span>`);
7031
+ if (unref(termBadge)(__props.terminal)) _push(`<span class="term-badge"${ssrRenderAttr("title", _ctx.$t("agentLanesView.k1wn2vmt036", { p0: __props.terminal?.pid }))} data-v-c7c28180><span class="term-dot" style="${ssrRenderStyle({ background: unref(TERM_DOT)[unref(termBadge)(__props.terminal).color] ?? "var(--tone-neutral-dot)" })}" data-v-c7c28180></span> ${ssrInterpolate(unref(termBadge)(__props.terminal).text)}</span>`);
6931
7032
  else _push(`<!---->`);
6932
- if (unref(continuityBadge)) _push(`<span class="${ssrRenderClass([{ restart: unref(continuityBadge).error }, "cont-badge"])}"${ssrRenderAttr("title", unref(continuityBadge).title)} data-v-1dfd80fa>${ssrInterpolate(unref(continuityBadge).text)}</span>`);
7033
+ if (unref(continuityBadge)) _push(`<span class="${ssrRenderClass([{ restart: unref(continuityBadge).error }, "cont-badge"])}"${ssrRenderAttr("title", unref(continuityBadge).title)} data-v-c7c28180>${ssrInterpolate(unref(continuityBadge).text)}</span>`);
6933
7034
  else _push(`<!---->`);
6934
- if (unref(supervisionBadge)) _push(`<span class="${ssrRenderClass([unref(supervisionBadge).kind, "sup-badge"])}"${ssrRenderAttr("title", unref(supervisionBadge).title)} data-v-1dfd80fa>${ssrInterpolate(unref(supervisionBadge).text)}</span>`);
7035
+ if (unref(supervisionBadge)) _push(`<span class="${ssrRenderClass([unref(supervisionBadge).kind, "sup-badge"])}"${ssrRenderAttr("title", unref(supervisionBadge).title)} data-v-c7c28180>${ssrInterpolate(unref(supervisionBadge).text)}</span>`);
6935
7036
  else _push(`<!---->`);
6936
- _push(`</div><div class="head-sub" data-v-1dfd80fa><span class="lane-meta" data-v-1dfd80fa>`);
7037
+ _push(`</div><div class="head-sub" data-v-c7c28180><span class="lane-meta" data-v-c7c28180>`);
6937
7038
  if (unref(agent).state === "busy" && unref(agent).currentTaskTitle) {
6938
7039
  _push(`<!--[-->${ssrInterpolate(unref(agent).currentTaskTitle)} `);
6939
- if (unref(agent).currentTaskProgress != null) _push(`<span class="lane-progress" data-v-1dfd80fa>${ssrInterpolate(unref(agent).currentTaskProgress)}%</span>`);
7040
+ if (unref(agent).currentTaskProgress != null) _push(`<span class="lane-progress" data-v-c7c28180>${ssrInterpolate(unref(agent).currentTaskProgress)}%</span>`);
6940
7041
  else _push(`<!---->`);
6941
7042
  _push(`<!--]-->`);
6942
7043
  } else _push(`<!--[-->${ssrInterpolate(unref(agent).state)} · Q${ssrInterpolate(unref(agent).queued ?? 0)}<!--]-->`);
6943
- _push(`</span><div class="lane-actions" data-v-1dfd80fa>`);
7044
+ _push(`</span><div class="lane-actions" data-v-c7c28180>`);
6944
7045
  if (unref(agent).harness === "omp") _push(ssrRenderComponent(_component_a_button, {
6945
7046
  size: "small",
6946
7047
  type: "primary",
@@ -6950,7 +7051,7 @@ var LaneHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
6950
7051
  onClick: ($event) => emit("open-terminal", unref(agent))
6951
7052
  }, {
6952
7053
  default: withCtx((_, _push, _parent, _scopeId) => {
6953
- if (_push) _push(`<span class="i-tabler-terminal-2" data-v-1dfd80fa${_scopeId}></span><span class="term-label" data-v-1dfd80fa${_scopeId}>${ssrInterpolate(_ctx.$t("agentLanesView.k4588s023"))}</span>`);
7054
+ if (_push) _push(`<span class="i-tabler-terminal-2" data-v-c7c28180${_scopeId}></span><span class="term-label" data-v-c7c28180${_scopeId}>${ssrInterpolate(_ctx.$t("agentLanesView.k4588s023"))}</span>`);
6954
7055
  else return [createVNode("span", { class: "i-tabler-terminal-2" }), createVNode("span", { class: "term-label" }, toDisplayString(_ctx.$t("agentLanesView.k4588s023")), 1)];
6955
7056
  }),
6956
7057
  _: 1
@@ -6964,12 +7065,12 @@ var LaneHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
6964
7065
  onClick: ($event) => emit("edit", unref(agent))
6965
7066
  }, {
6966
7067
  default: withCtx((_, _push, _parent, _scopeId) => {
6967
- if (_push) _push(`<span class="i-tabler-edit" data-v-1dfd80fa${_scopeId}></span>`);
7068
+ if (_push) _push(`<span class="i-tabler-edit" data-v-c7c28180${_scopeId}></span>`);
6968
7069
  else return [createVNode("span", { class: "i-tabler-edit" })];
6969
7070
  }),
6970
7071
  _: 1
6971
7072
  }, _parent));
6972
- _push(`<span class="actions-divider" data-v-1dfd80fa></span>`);
7073
+ _push(`<span class="actions-divider" data-v-c7c28180></span>`);
6973
7074
  _push(ssrRenderComponent(_component_a_popconfirm, {
6974
7075
  title: _ctx.$t("agentLanesView.k1l029kf037", { p0: unref(agent).name }),
6975
7076
  "ok-text": _ctx.$t("common.stop"),
@@ -6985,7 +7086,7 @@ var LaneHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
6985
7086
  title: _ctx.$t("agentLanesView.hitlStopTitle")
6986
7087
  }, {
6987
7088
  default: withCtx((_, _push, _parent, _scopeId) => {
6988
- if (_push) _push(`<span class="i-tabler-player-stop" data-v-1dfd80fa${_scopeId}></span>`);
7089
+ if (_push) _push(`<span class="i-tabler-player-stop" data-v-c7c28180${_scopeId}></span>`);
6989
7090
  else return [createVNode("span", { class: "i-tabler-player-stop" })];
6990
7091
  }),
6991
7092
  _: 1
@@ -7018,7 +7119,7 @@ var LaneHeader_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
7018
7119
  loading: __props.removing === unref(agent).agentId
7019
7120
  }, {
7020
7121
  default: withCtx((_, _push, _parent, _scopeId) => {
7021
- if (_push) _push(`<span class="i-tabler-x" data-v-1dfd80fa${_scopeId}></span>`);
7122
+ if (_push) _push(`<span class="i-tabler-x" data-v-c7c28180${_scopeId}></span>`);
7022
7123
  else return [createVNode("span", { class: "i-tabler-x" })];
7023
7124
  }),
7024
7125
  _: 1
@@ -7048,7 +7149,7 @@ LaneHeader_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
7048
7149
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/lanes/LaneHeader.vue");
7049
7150
  return _sfc_setup$27 ? _sfc_setup$27(props, ctx) : void 0;
7050
7151
  };
7051
- var LaneHeader_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(LaneHeader_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-1dfd80fa"]]), { __name: "WorkshopLanesLaneHeader" });
7152
+ var LaneHeader_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(LaneHeader_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-c7c28180"]]), { __name: "WorkshopLanesLaneHeader" });
7052
7153
  //#endregion
7053
7154
  //#region app/components/workshop/lanes/AddMemberModal.vue?vue&type=script&setup=true&lang.ts
7054
7155
  var AddMemberModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -10089,6 +10190,7 @@ var ChatMemberPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10089
10190
  * 409 VERSION_CONFLICT 不是泛化错误,而是"别人刚改过,请刷新后重试"。
10090
10191
  */
10091
10192
  const props = __props;
10193
+ const { t } = useI18n();
10092
10194
  const chat = useChatStore();
10093
10195
  const perms = computed(() => chat.permissions[props.channelId] ?? null);
10094
10196
  const members = computed(() => chat.members[props.channelId] ?? []);
@@ -10141,13 +10243,13 @@ var ChatMemberPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10141
10243
  if (busy.value) return;
10142
10244
  busy.value = "join";
10143
10245
  try {
10144
- if (await chat.join(props.channelId) === "pending") api$1.info("已提交加入申请,等待 owner 批准");
10145
- else api$1.success("已加入群聊");
10246
+ if (await chat.join(props.channelId) === "pending") api$1.info(t("chat.joinedPending"));
10247
+ else api$1.success(t("chat.joinedOk"));
10146
10248
  await refresh();
10147
10249
  } catch (e) {
10148
10250
  const code = chatErrorCode(e);
10149
- if (code === "CHAT_DISABLED") api$1.warning("该 Channel 未开启群聊");
10150
- else if (code === "CHANNEL_PRIVATE") api$1.warning("该 Channel 未公开,需 owner 邀请");
10251
+ if (code === "CHAT_DISABLED") api$1.warning(t("chat.errChatDisabled"));
10252
+ else if (code === "CHANNEL_PRIVATE") api$1.warning(t("chat.errChannelPrivate"));
10151
10253
  else api$1.error(chatErrorMessage(e));
10152
10254
  } finally {
10153
10255
  busy.value = null;
@@ -10158,10 +10260,10 @@ var ChatMemberPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10158
10260
  busy.value = "leave";
10159
10261
  try {
10160
10262
  await chat.leave(props.channelId);
10161
- api$1.success("已退出群聊");
10263
+ api$1.success(t("chat.leftOk"));
10162
10264
  await refresh();
10163
10265
  } catch (e) {
10164
- if (chatErrorCode(e) === "OWNER_CANNOT_LEAVE") api$1.warning("owner 不能退出群聊,请先转移 owner");
10266
+ if (chatErrorCode(e) === "OWNER_CANNOT_LEAVE") api$1.warning(t("chat.errOwnerCannotLeave"));
10165
10267
  else api$1.error(chatErrorMessage(e));
10166
10268
  } finally {
10167
10269
  busy.value = null;
@@ -10172,7 +10274,7 @@ var ChatMemberPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10172
10274
  busy.value = `approve:${m.userId}`;
10173
10275
  try {
10174
10276
  await chat.approveMember(props.channelId, m.userId);
10175
- api$1.success("已批准加入");
10277
+ api$1.success(t("chat.approvedOk"));
10176
10278
  } catch (e) {
10177
10279
  api$1.error(chatErrorMessage(e));
10178
10280
  } finally {
@@ -10184,7 +10286,7 @@ var ChatMemberPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10184
10286
  busy.value = `remove:${m.userId}`;
10185
10287
  try {
10186
10288
  await chat.removeMember(props.channelId, m.userId);
10187
- api$1.success("已移除成员");
10289
+ api$1.success(t("chat.removedOk"));
10188
10290
  } catch (e) {
10189
10291
  api$1.error(chatErrorMessage(e));
10190
10292
  } finally {
@@ -10207,29 +10309,29 @@ var ChatMemberPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10207
10309
  approvalPolicy: d.approvalPolicy,
10208
10310
  chatEnabled: d.chatEnabled ? 1 : 0
10209
10311
  });
10210
- api$1.success("群聊设置已保存");
10312
+ api$1.success(t("chat.settingsSaved"));
10211
10313
  syncDraft();
10212
10314
  } catch (e) {
10213
- if (chatErrorCode(e) === "VERSION_CONFLICT") settingsError.value = "Channel 设置已被他人修改,请刷新后重试";
10315
+ if (chatErrorCode(e) === "VERSION_CONFLICT") settingsError.value = t("chat.settingsConflict");
10214
10316
  else if (chatErrorCode(e) === "CHAT_DISABLED") settingsError.value = chatErrorMessage(e);
10215
10317
  else settingsError.value = chatErrorMessage(e);
10216
10318
  } finally {
10217
10319
  busy.value = null;
10218
10320
  }
10219
10321
  }
10220
- const statusLabel = {
10221
- active: "在群",
10222
- pending: "待批准",
10223
- left: "已退出",
10224
- removed: "已移除"
10225
- };
10322
+ const statusLabels = computed(() => ({
10323
+ active: t("chat.statusActive"),
10324
+ pending: t("chat.statusPending"),
10325
+ left: t("chat.statusLeft"),
10326
+ removed: t("chat.statusRemoved")
10327
+ }));
10226
10328
  const avatarText = (m) => (m.displayName || m.userId.slice(0, 8)).trim().charAt(0).toUpperCase();
10227
10329
  return (_ctx, _push, _parent, _attrs) => {
10228
10330
  const _component_a_button = button_default;
10229
10331
  const _component_a_popconfirm = popconfirm_default;
10230
10332
  const _component_a_select = Select;
10231
10333
  const _component_a_switch = switch_default;
10232
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "member-panel" }, _attrs))} data-v-76f98421><div class="mp-head" data-v-76f98421><span class="i-tabler-users-group mp-icon" data-v-76f98421></span><span class="mp-title" data-v-76f98421>成员</span><span class="mp-count" data-v-76f98421>${ssrInterpolate(members.value.filter((m) => m.status === "active").length)}</span><span class="mp-spacer" data-v-76f98421></span><button type="button" class="mp-refresh" title="刷新成员与设置" data-v-76f98421><span class="i-tabler-refresh" data-v-76f98421></span></button></div><div class="mp-scroll" data-v-76f98421><div class="mp-actions" data-v-76f98421>`);
10334
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "member-panel" }, _attrs))} data-v-00cda6ad><div class="mp-head" data-v-00cda6ad><span class="i-tabler-users-group mp-icon" data-v-00cda6ad></span><span class="mp-title" data-v-00cda6ad>${ssrInterpolate(_ctx.$t("chat.title"))}</span><span class="mp-count" data-v-00cda6ad>${ssrInterpolate(members.value.filter((m) => m.status === "active").length)}</span><span class="mp-spacer" data-v-00cda6ad></span><button type="button" class="mp-refresh"${ssrRenderAttr("title", _ctx.$t("chat.refreshTitle"))} data-v-00cda6ad><span class="i-tabler-refresh" data-v-00cda6ad></span></button></div><div class="mp-scroll" data-v-00cda6ad><div class="mp-actions" data-v-00cda6ad>`);
10233
10335
  if (!isMember.value) {
10234
10336
  _push(`<!--[-->`);
10235
10337
  if (canJoin.value) _push(ssrRenderComponent(_component_a_button, {
@@ -10240,16 +10342,16 @@ var ChatMemberPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10240
10342
  onClick: onJoin
10241
10343
  }, {
10242
10344
  default: withCtx((_, _push, _parent, _scopeId) => {
10243
- if (_push) _push(` 加入群聊 `);
10244
- else return [createTextVNode(" 加入群聊 ")];
10345
+ if (_push) _push(`${ssrInterpolate(_ctx.$t("chat.join"))}`);
10346
+ else return [createTextVNode(toDisplayString(_ctx.$t("chat.join")), 1)];
10245
10347
  }),
10246
10348
  _: 1
10247
10349
  }, _parent));
10248
- else _push(`<div class="mp-hint" data-v-76f98421>${ssrInterpolate(perms.value === null ? "未加入群聊 —— 需 owner 邀请或 Channel 未公开" : "该 Channel 未公开或未开启群聊 —— 需 owner 邀请")}</div>`);
10350
+ else _push(`<div class="mp-hint" data-v-00cda6ad>${ssrInterpolate(perms.value === null ? _ctx.$t("chat.notMemberHint") : _ctx.$t("chat.privateHint"))}</div>`);
10249
10351
  _push(`<!--]-->`);
10250
- } else if (myStatus.value === "pending") _push(`<div class="mp-hint pending" data-v-76f98421><span class="i-tabler-hourglass" data-v-76f98421></span> 加入申请待 owner 批准 </div>`);
10352
+ } else if (myStatus.value === "pending") _push(`<div class="mp-hint pending" data-v-00cda6ad><span class="i-tabler-hourglass" data-v-00cda6ad></span> ${ssrInterpolate(_ctx.$t("chat.pendingHint"))}</div>`);
10251
10353
  else if (!isOwner.value) _push(ssrRenderComponent(_component_a_popconfirm, {
10252
- title: "退出群聊后将立即失去读、发言、审批与通知补拉权限,确认退出?",
10354
+ title: _ctx.$t("chat.leaveConfirm"),
10253
10355
  "ok-text": _ctx.$t("common.confirm"),
10254
10356
  "cancel-text": _ctx.$t("common.cancel"),
10255
10357
  onConfirm: onLeave
@@ -10261,8 +10363,8 @@ var ChatMemberPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10261
10363
  loading: busy.value === "leave"
10262
10364
  }, {
10263
10365
  default: withCtx((_, _push, _parent, _scopeId) => {
10264
- if (_push) _push(` 退出群聊 `);
10265
- else return [createTextVNode(" 退出群聊 ")];
10366
+ if (_push) _push(`${ssrInterpolate(_ctx.$t("chat.leave"))}`);
10367
+ else return [createTextVNode(toDisplayString(_ctx.$t("chat.leave")), 1)];
10266
10368
  }),
10267
10369
  _: 1
10268
10370
  }, _parent, _scopeId));
@@ -10271,21 +10373,21 @@ var ChatMemberPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10271
10373
  block: "",
10272
10374
  loading: busy.value === "leave"
10273
10375
  }, {
10274
- default: withCtx(() => [createTextVNode(" 退出群聊 ")]),
10376
+ default: withCtx(() => [createTextVNode(toDisplayString(_ctx.$t("chat.leave")), 1)]),
10275
10377
  _: 1
10276
10378
  }, 8, ["loading"])];
10277
10379
  }),
10278
10380
  _: 1
10279
10381
  }, _parent));
10280
- else _push(`<div class="mp-hint" data-v-76f98421><span class="i-tabler-crown" data-v-76f98421></span> 你是 owner(不可退出,可转移 owner 或删除 Channel) </div>`);
10281
- _push(`</div><div class="mp-list" data-v-76f98421><!--[-->`);
10382
+ else _push(`<div class="mp-hint" data-v-00cda6ad><span class="i-tabler-crown" data-v-00cda6ad></span> ${ssrInterpolate(_ctx.$t("chat.ownerHint"))}</div>`);
10383
+ _push(`</div><div class="mp-list" data-v-00cda6ad><!--[-->`);
10282
10384
  ssrRenderList(sortedMembers.value, (m) => {
10283
- _push(`<div class="${ssrRenderClass([m.status, "mp-row"])}" data-v-76f98421><span class="aw-avatar mp-ava" data-v-76f98421>${ssrInterpolate(avatarText(m))}</span><div class="mp-info" data-v-76f98421><div class="mp-name-line" data-v-76f98421><span class="mp-name" data-v-76f98421>${ssrInterpolate(m.displayName || m.userId.slice(0, 8))}</span>`);
10284
- if (m.role === "owner") _push(`<span class="mp-role owner" data-v-76f98421>owner</span>`);
10385
+ _push(`<div class="${ssrRenderClass([m.status, "mp-row"])}" data-v-00cda6ad><span class="aw-avatar mp-ava" data-v-00cda6ad>${ssrInterpolate(avatarText(m))}</span><div class="mp-info" data-v-00cda6ad><div class="mp-name-line" data-v-00cda6ad><span class="mp-name" data-v-00cda6ad>${ssrInterpolate(m.displayName || m.userId.slice(0, 8))}</span>`);
10386
+ if (m.role === "owner") _push(`<span class="mp-role owner" data-v-00cda6ad>owner</span>`);
10285
10387
  else _push(`<!---->`);
10286
- _push(`</div><div class="mp-sub" data-v-76f98421><span class="mp-status"${ssrRenderAttr("data-status", m.status)} data-v-76f98421>${ssrInterpolate(statusLabel[m.status])}</span><span class="mp-joined" data-v-76f98421>${ssrInterpolate(unref(formatLocalClock)(m.joinedAt, false))}</span></div></div>`);
10388
+ _push(`</div><div class="mp-sub" data-v-00cda6ad><span class="mp-status"${ssrRenderAttr("data-status", m.status)} data-v-00cda6ad>${ssrInterpolate(statusLabels.value[m.status])}</span><span class="mp-joined" data-v-00cda6ad>${ssrInterpolate(unref(formatLocalClock)(m.joinedAt, false))}</span></div></div>`);
10287
10389
  if (canManage.value && m.role !== "owner") {
10288
- _push(`<div class="mp-row-actions" data-v-76f98421>`);
10390
+ _push(`<div class="mp-row-actions" data-v-00cda6ad>`);
10289
10391
  if (m.status === "pending") _push(ssrRenderComponent(_component_a_button, {
10290
10392
  size: "small",
10291
10393
  type: "primary",
@@ -10293,14 +10395,14 @@ var ChatMemberPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10293
10395
  onClick: ($event) => onApprove(m)
10294
10396
  }, {
10295
10397
  default: withCtx((_, _push, _parent, _scopeId) => {
10296
- if (_push) _push(` 批准 `);
10297
- else return [createTextVNode(" 批准 ")];
10398
+ if (_push) _push(`${ssrInterpolate(_ctx.$t("chat.approve"))}`);
10399
+ else return [createTextVNode(toDisplayString(_ctx.$t("chat.approve")), 1)];
10298
10400
  }),
10299
10401
  _: 2
10300
10402
  }, _parent));
10301
10403
  else _push(`<!---->`);
10302
10404
  if (m.status === "active" || m.status === "pending") _push(ssrRenderComponent(_component_a_popconfirm, {
10303
- title: "移除该成员后其立即失去群聊与审批权限,确认?",
10405
+ title: _ctx.$t("chat.removeConfirm"),
10304
10406
  "ok-text": _ctx.$t("common.remove"),
10305
10407
  "cancel-text": _ctx.$t("common.cancel"),
10306
10408
  onConfirm: ($event) => onRemove(m)
@@ -10334,50 +10436,50 @@ var ChatMemberPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10334
10436
  _push(`</div>`);
10335
10437
  });
10336
10438
  _push(`<!--]-->`);
10337
- if (sortedMembers.value.length === 0) _push(`<div class="mp-hint" data-v-76f98421> 名册不可见(非成员) </div>`);
10439
+ if (sortedMembers.value.length === 0) _push(`<div class="mp-hint" data-v-00cda6ad>${ssrInterpolate(_ctx.$t("chat.rosterHidden"))}</div>`);
10338
10440
  else _push(`<!---->`);
10339
10441
  _push(`</div>`);
10340
10442
  if (canManage.value && draft.value) {
10341
- _push(`<div class="mp-settings" data-v-76f98421><div class="mp-sec-title" data-v-76f98421> 群聊设置 <span class="mp-ver" data-v-76f98421>v${ssrInterpolate(settings.value?.version ?? "-")}</span></div><label class="mp-field" data-v-76f98421><span data-v-76f98421>可见性</span>`);
10443
+ _push(`<div class="mp-settings" data-v-00cda6ad><div class="mp-sec-title" data-v-00cda6ad>${ssrInterpolate(_ctx.$t("chat.settingsTitle"))} <span class="mp-ver" data-v-00cda6ad>v${ssrInterpolate(settings.value?.version ?? "-")}</span></div><label class="mp-field" data-v-00cda6ad><span data-v-00cda6ad>${ssrInterpolate(_ctx.$t("chat.visibilityLabel"))}</span>`);
10342
10444
  _push(ssrRenderComponent(_component_a_select, {
10343
10445
  value: draft.value.visibility,
10344
10446
  "onUpdate:value": ($event) => draft.value.visibility = $event,
10345
10447
  size: "small",
10346
10448
  options: [{
10347
10449
  value: "private",
10348
- label: "私有(仅成员可见)"
10450
+ label: _ctx.$t("chat.visibilityPrivate")
10349
10451
  }, {
10350
10452
  value: "public",
10351
- label: "公开(登录用户可发现)"
10453
+ label: _ctx.$t("chat.visibilityPublic")
10352
10454
  }]
10353
10455
  }, null, _parent));
10354
- _push(`</label><label class="mp-field" data-v-76f98421><span data-v-76f98421>加入策略</span>`);
10456
+ _push(`</label><label class="mp-field" data-v-00cda6ad><span data-v-00cda6ad>${ssrInterpolate(_ctx.$t("chat.joinPolicyLabel"))}</span>`);
10355
10457
  _push(ssrRenderComponent(_component_a_select, {
10356
10458
  value: draft.value.joinPolicy,
10357
10459
  "onUpdate:value": ($event) => draft.value.joinPolicy = $event,
10358
10460
  size: "small",
10359
10461
  options: [{
10360
10462
  value: "owner_approve",
10361
- label: "需 owner 批准"
10463
+ label: _ctx.$t("chat.joinPolicyOwnerApprove")
10362
10464
  }, {
10363
10465
  value: "open",
10364
- label: "开放加入"
10466
+ label: _ctx.$t("chat.joinPolicyOpen")
10365
10467
  }]
10366
10468
  }, null, _parent));
10367
- _push(`</label><label class="mp-field" data-v-76f98421><span data-v-76f98421>审批策略</span>`);
10469
+ _push(`</label><label class="mp-field" data-v-00cda6ad><span data-v-00cda6ad>${ssrInterpolate(_ctx.$t("chat.approvalPolicyLabel"))}</span>`);
10368
10470
  _push(ssrRenderComponent(_component_a_select, {
10369
10471
  value: draft.value.approvalPolicy,
10370
10472
  "onUpdate:value": ($event) => draft.value.approvalPolicy = $event,
10371
10473
  size: "small",
10372
10474
  options: [{
10373
10475
  value: "owner_only",
10374
- label: "仅 owner 可决策"
10476
+ label: _ctx.$t("chat.approvalOwnerOnly")
10375
10477
  }, {
10376
10478
  value: "any_member",
10377
- label: "任一成员可决策"
10479
+ label: _ctx.$t("chat.approvalAnyMember")
10378
10480
  }]
10379
10481
  }, null, _parent));
10380
- _push(`</label><label class="mp-field switch" data-v-76f98421><span data-v-76f98421>开启群聊</span>`);
10482
+ _push(`</label><label class="mp-field switch" data-v-00cda6ad><span data-v-00cda6ad>${ssrInterpolate(_ctx.$t("chat.chatEnabledLabel"))}</span>`);
10381
10483
  _push(ssrRenderComponent(_component_a_switch, {
10382
10484
  checked: draft.value.chatEnabled,
10383
10485
  "onUpdate:checked": ($event) => draft.value.chatEnabled = $event,
@@ -10385,15 +10487,15 @@ var ChatMemberPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10385
10487
  }, null, _parent));
10386
10488
  _push(`</label>`);
10387
10489
  if (settingsError.value) {
10388
- _push(`<div class="mp-error" data-v-76f98421>${ssrInterpolate(settingsError.value)} `);
10490
+ _push(`<div class="mp-error" data-v-00cda6ad>${ssrInterpolate(settingsError.value)} `);
10389
10491
  _push(ssrRenderComponent(_component_a_button, {
10390
10492
  size: "small",
10391
10493
  type: "link",
10392
10494
  onClick: ($event) => refresh().then(syncDraft)
10393
10495
  }, {
10394
10496
  default: withCtx((_, _push, _parent, _scopeId) => {
10395
- if (_push) _push(` 刷新 `);
10396
- else return [createTextVNode(" 刷新 ")];
10497
+ if (_push) _push(`${ssrInterpolate(_ctx.$t("chat.refresh"))}`);
10498
+ else return [createTextVNode(toDisplayString(_ctx.$t("chat.refresh")), 1)];
10397
10499
  }),
10398
10500
  _: 1
10399
10501
  }, _parent));
@@ -10407,8 +10509,8 @@ var ChatMemberPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10407
10509
  onClick: onSaveSettings
10408
10510
  }, {
10409
10511
  default: withCtx((_, _push, _parent, _scopeId) => {
10410
- if (_push) _push(` 保存设置 `);
10411
- else return [createTextVNode(" 保存设置 ")];
10512
+ if (_push) _push(`${ssrInterpolate(_ctx.$t("chat.saveSettings"))}`);
10513
+ else return [createTextVNode(toDisplayString(_ctx.$t("chat.saveSettings")), 1)];
10412
10514
  }),
10413
10515
  _: 1
10414
10516
  }, _parent));
@@ -10426,7 +10528,7 @@ ChatMemberPanel_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx)
10426
10528
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/ChatMemberPanel.vue");
10427
10529
  return _sfc_setup$13 ? _sfc_setup$13(props, ctx) : void 0;
10428
10530
  };
10429
- var ChatMemberPanel_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ChatMemberPanel_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-76f98421"]]), { __name: "WorkshopChatMemberPanel" });
10531
+ var ChatMemberPanel_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ChatMemberPanel_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-00cda6ad"]]), { __name: "WorkshopChatMemberPanel" });
10430
10532
  //#endregion
10431
10533
  //#region app/components/workshop/console/LineOperationsPanel.vue?vue&type=script&setup=true&lang.ts
10432
10534
  var LineOperationsPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -10438,6 +10540,7 @@ var LineOperationsPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
10438
10540
  const events = useEventsStore();
10439
10541
  const entities = useEntitiesStore();
10440
10542
  const filter = ref("all");
10543
+ const { t } = useI18n();
10441
10544
  const allItems = computed(() => events.ring(props.channelId).items);
10442
10545
  const operations = computed(() => allItems.value.map((e) => ({
10443
10546
  e,
@@ -10465,7 +10568,7 @@ var LineOperationsPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
10465
10568
  };
10466
10569
  });
10467
10570
  function agentName(e) {
10468
- return e.agentId ? entities.agentName(props.channelId, e.agentId) || e.agentId.slice(0, 8) : "系统";
10571
+ return e.agentId ? entities.agentName(props.channelId, e.agentId) || e.agentId.slice(0, 8) : t("lineOps.systemName");
10469
10572
  }
10470
10573
  function tone(meta) {
10471
10574
  return `${meta.kind} ${meta.severity}`;
@@ -10476,13 +10579,13 @@ var LineOperationsPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
10476
10579
  return (_ctx, _push, _parent, _attrs) => {
10477
10580
  _push(`<section${ssrRenderAttrs(mergeProps({
10478
10581
  class: "line-ops-panel",
10479
- "aria-label": "产线作业面板"
10480
- }, _attrs))} data-v-e241fe8f><header class="lop-head" data-v-e241fe8f><div data-v-e241fe8f><div class="lop-kicker" data-v-e241fe8f><span class="lop-live" data-v-e241fe8f></span>LINE OPERATIONS </div><h3 data-v-e241fe8f>产线作业</h3></div><span class="${ssrRenderClass([phaseTone(), "lop-phase"])}" data-v-e241fe8f><span class="i-tabler-radar" data-v-e241fe8f></span>${ssrInterpolate(phase.value.label)}</span></header><div class="lop-summary" data-v-e241fe8f><div class="lop-stat dcw" data-v-e241fe8f><span data-v-e241fe8f>DCW</span><b data-v-e241fe8f>${ssrInterpolate(stats.value.dcw)}</b><small data-v-e241fe8f>写控</small></div><div class="lop-stat daq" data-v-e241fe8f><span data-v-e241fe8f>DAQ</span><b data-v-e241fe8f>${ssrInterpolate(stats.value.daq)}</b><small data-v-e241fe8f>采集</small></div><div class="lop-stat aml" data-v-e241fe8f><span data-v-e241fe8f>AML</span><b data-v-e241fe8f>${ssrInterpolate(stats.value.aml)}</b><small data-v-e241fe8f>训练</small></div><div class="lop-stat safety" data-v-e241fe8f><span data-v-e241fe8f>SAFE</span><b data-v-e241fe8f>${ssrInterpolate(stats.value.blocked)}</b><small data-v-e241fe8f>拦截</small></div></div><nav class="lop-filters" aria-label="作业筛选" data-v-e241fe8f><button class="${ssrRenderClass({ on: filter.value === "all" })}" data-v-e241fe8f> 全部 </button><button class="${ssrRenderClass({ on: filter.value === "dcw" })}" data-v-e241fe8f> 写控 </button><button class="${ssrRenderClass({ on: filter.value === "daq" })}" data-v-e241fe8f> 取数 </button><button class="${ssrRenderClass({ on: filter.value === "aml" })}" data-v-e241fe8f> AML </button><button class="${ssrRenderClass({ on: filter.value === "twin" })}" data-v-e241fe8f> 孪生 </button><button class="${ssrRenderClass({ on: filter.value === "safety" })}" data-v-e241fe8f> 安全 </button></nav><div class="lop-timeline" data-v-e241fe8f>`);
10481
- if (visible.value.length === 0) _push(`<div class="lop-empty" data-v-e241fe8f><span class="i-tabler-activity-heartbeat" data-v-e241fe8f></span><span data-v-e241fe8f>等待产线作业事件</span></div>`);
10582
+ "aria-label": _ctx.$t("lineOps.panelAria")
10583
+ }, _attrs))} data-v-e034693e><header class="lop-head" data-v-e034693e><div data-v-e034693e><div class="lop-kicker" data-v-e034693e><span class="lop-live" data-v-e034693e></span>LINE OPERATIONS </div><h3 data-v-e034693e>${ssrInterpolate(_ctx.$t("lineOps.title"))}</h3></div><span class="${ssrRenderClass([phaseTone(), "lop-phase"])}" data-v-e034693e><span class="i-tabler-radar" data-v-e034693e></span>${ssrInterpolate(phase.value.label)}</span></header><div class="lop-summary" data-v-e034693e><div class="lop-stat dcw" data-v-e034693e><span data-v-e034693e>DCW</span><b data-v-e034693e>${ssrInterpolate(stats.value.dcw)}</b><small data-v-e034693e>${ssrInterpolate(_ctx.$t("lineOps.statDcw"))}</small></div><div class="lop-stat daq" data-v-e034693e><span data-v-e034693e>DAQ</span><b data-v-e034693e>${ssrInterpolate(stats.value.daq)}</b><small data-v-e034693e>${ssrInterpolate(_ctx.$t("lineOps.statDaq"))}</small></div><div class="lop-stat aml" data-v-e034693e><span data-v-e034693e>AML</span><b data-v-e034693e>${ssrInterpolate(stats.value.aml)}</b><small data-v-e034693e>${ssrInterpolate(_ctx.$t("lineOps.statAml"))}</small></div><div class="lop-stat safety" data-v-e034693e><span data-v-e034693e>SAFE</span><b data-v-e034693e>${ssrInterpolate(stats.value.blocked)}</b><small data-v-e034693e>${ssrInterpolate(_ctx.$t("lineOps.statSafe"))}</small></div></div><nav class="lop-filters"${ssrRenderAttr("aria-label", _ctx.$t("lineOps.filterAria"))} data-v-e034693e><button class="${ssrRenderClass({ on: filter.value === "all" })}" data-v-e034693e>${ssrInterpolate(_ctx.$t("common.all"))}</button><button class="${ssrRenderClass({ on: filter.value === "dcw" })}" data-v-e034693e>${ssrInterpolate(_ctx.$t("lineOps.statDcw"))}</button><button class="${ssrRenderClass({ on: filter.value === "daq" })}" data-v-e034693e>${ssrInterpolate(_ctx.$t("lineOps.filterDaq"))}</button><button class="${ssrRenderClass({ on: filter.value === "aml" })}" data-v-e034693e> AML </button><button class="${ssrRenderClass({ on: filter.value === "twin" })}" data-v-e034693e>${ssrInterpolate(_ctx.$t("lineOps.filterTwin"))}</button><button class="${ssrRenderClass({ on: filter.value === "safety" })}" data-v-e034693e>${ssrInterpolate(_ctx.$t("lineOps.filterSafety"))}</button></nav><div class="lop-timeline" data-v-e034693e>`);
10584
+ if (visible.value.length === 0) _push(`<div class="lop-empty" data-v-e034693e><span class="i-tabler-activity-heartbeat" data-v-e034693e></span><span data-v-e034693e>${ssrInterpolate(_ctx.$t("lineOps.empty"))}</span></div>`);
10482
10585
  else _push(`<!---->`);
10483
10586
  _push(`<!--[-->`);
10484
10587
  ssrRenderList(visible.value.slice(0, 24), (item) => {
10485
- _push(`<article class="${ssrRenderClass([tone(item.meta), "lop-event"])}" data-v-e241fe8f><div class="lop-event-icon" data-v-e241fe8f><span class="${ssrRenderClass(item.meta.icon)}" data-v-e241fe8f></span></div><div class="lop-event-body" data-v-e241fe8f><div class="lop-event-top" data-v-e241fe8f><strong data-v-e241fe8f>${ssrInterpolate(item.meta.label)}</strong><time data-v-e241fe8f>${ssrInterpolate(unref(formatLocalClock)(item.e.at, false))}</time></div><p data-v-e241fe8f>${ssrInterpolate(item.meta.summary || "—")}</p><small data-v-e241fe8f>${ssrInterpolate(agentName(item.e))} · #${ssrInterpolate(item.e.seq)}</small></div></article>`);
10588
+ _push(`<article class="${ssrRenderClass([tone(item.meta), "lop-event"])}" data-v-e034693e><div class="lop-event-icon" data-v-e034693e><span class="${ssrRenderClass(item.meta.icon)}" data-v-e034693e></span></div><div class="lop-event-body" data-v-e034693e><div class="lop-event-top" data-v-e034693e><strong data-v-e034693e>${ssrInterpolate(item.meta.label)}</strong><time data-v-e034693e>${ssrInterpolate(unref(formatLocalClock)(item.e.at, false))}</time></div><p data-v-e034693e>${ssrInterpolate(item.meta.summary || "—")}</p><small data-v-e034693e>${ssrInterpolate(agentName(item.e))} · #${ssrInterpolate(item.e.seq)}</small></div></article>`);
10486
10589
  });
10487
10590
  _push(`<!--]--></div></section>`);
10488
10591
  };
@@ -10496,7 +10599,7 @@ LineOperationsPanel_vue_vue_type_script_setup_true_lang_default.setup = (props,
10496
10599
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/console/LineOperationsPanel.vue");
10497
10600
  return _sfc_setup$12 ? _sfc_setup$12(props, ctx) : void 0;
10498
10601
  };
10499
- var LineOperationsPanel_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(LineOperationsPanel_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-e241fe8f"]]), { __name: "WorkshopConsoleLineOperationsPanel" });
10602
+ var LineOperationsPanel_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(LineOperationsPanel_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-e034693e"]]), { __name: "WorkshopConsoleLineOperationsPanel" });
10500
10603
  //#endregion
10501
10604
  //#region app/components/workshop/console/RightPane.vue?vue&type=script&setup=true&lang.ts
10502
10605
  var RightPane_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -10714,12 +10817,12 @@ var ComposerToolbar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10714
10817
  return (_ctx, _push, _parent, _attrs) => {
10715
10818
  const _component_a_select = Select;
10716
10819
  const _component_a_input_number = input_number_default;
10717
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "composer-bar" }, _attrs))} data-v-29be197e><div class="cb-left" data-v-29be197e><div class="aw-seg" data-v-29be197e>`);
10718
- if (__props.canPost || !__props.perms) _push(`<button type="button" class="${ssrRenderClass({ on: mode.value === "chat" })}" title="群聊:仅显式 @Agent 才触发执行" data-v-29be197e> 群聊 </button>`);
10820
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "composer-bar" }, _attrs))} data-v-6bede5c4><div class="cb-left" data-v-6bede5c4><div class="aw-seg" data-v-6bede5c4>`);
10821
+ if (__props.canPost || !__props.perms) _push(`<button type="button" class="${ssrRenderClass({ on: mode.value === "chat" })}"${ssrRenderAttr("title", _ctx.$t("chat.toolbarChatTitle"))} data-v-6bede5c4>${ssrInterpolate(_ctx.$t("chat.title"))}</button>`);
10719
10822
  else _push(`<!---->`);
10720
- if (__props.canManage || !__props.perms || !__props.canPost) _push(`<button type="button" class="${ssrRenderClass({ on: mode.value === "task" })}" data-v-29be197e>${ssrInterpolate(_ctx.$t("composer.k3wcox005"))}</button>`);
10823
+ if (__props.canManage || !__props.perms || !__props.canPost) _push(`<button type="button" class="${ssrRenderClass({ on: mode.value === "task" })}" data-v-6bede5c4>${ssrInterpolate(_ctx.$t("composer.k3wcox005"))}</button>`);
10721
10824
  else _push(`<!---->`);
10722
- if (__props.canManage || !__props.perms || !__props.canPost) _push(`<button type="button" class="${ssrRenderClass({ on: mode.value === "message" })}" data-v-29be197e>${ssrInterpolate(_ctx.$t("composer.k41ykc007"))}</button>`);
10825
+ if (__props.canManage || !__props.perms || !__props.canPost) _push(`<button type="button" class="${ssrRenderClass({ on: mode.value === "message" })}" data-v-6bede5c4>${ssrInterpolate(_ctx.$t("composer.k41ykc007"))}</button>`);
10723
10826
  else _push(`<!---->`);
10724
10827
  _push(`</div>`);
10725
10828
  if (mode.value !== "chat") _push(ssrRenderComponent(_component_a_select, {
@@ -10734,13 +10837,13 @@ var ComposerToolbar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10734
10837
  }, null, _parent));
10735
10838
  else _push(`<!---->`);
10736
10839
  if (mode.value === "task") {
10737
- _push(`<!--[--><div class="aw-seg" data-v-29be197e><!--[-->`);
10840
+ _push(`<!--[--><div class="aw-seg" data-v-6bede5c4><!--[-->`);
10738
10841
  ssrRenderList([
10739
10842
  "goal",
10740
10843
  "loop",
10741
10844
  "pipeline"
10742
10845
  ], (m) => {
10743
- _push(`<button type="button" class="${ssrRenderClass({ on: taskMode.value === m })}" data-v-29be197e>${ssrInterpolate(m)}</button>`);
10846
+ _push(`<button type="button" class="${ssrRenderClass({ on: taskMode.value === m })}" data-v-6bede5c4>${ssrInterpolate(m)}</button>`);
10744
10847
  });
10745
10848
  _push(`<!--]--></div>`);
10746
10849
  if (taskMode.value === "loop") {
@@ -10770,9 +10873,9 @@ var ComposerToolbar_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
10770
10873
  _push(`<!--]-->`);
10771
10874
  } else _push(`<!---->`);
10772
10875
  _push(`<!--]-->`);
10773
- } else if (mode.value === "message") _push(`<!--[--><div class="aw-seg" data-v-29be197e><button type="button" class="${ssrRenderClass({ on: priority.value === "immediate" })}"${ssrRenderAttr("title", _ctx.$t("composer.k1jqqvhe002"))} data-v-29be197e>${ssrInterpolate(_ctx.$t("composer.k3x9n2008"))}</button><button type="button" class="${ssrRenderClass({ on: priority.value === "task" })}" data-v-29be197e>${ssrInterpolate(_ctx.$t("composer.k40g8m009"))}</button></div><button type="button" class="${ssrRenderClass([{ on: requireReply.value }, "chip-toggle"])}"${ssrRenderAttr("title", _ctx.$t("composer.k195594v003"))} data-v-29be197e><span class="i-tabler-mail-forward" data-v-29be197e></span> ${ssrInterpolate(_ctx.$t("composer.k3xv7u010"))}</button><!--]-->`);
10876
+ } else if (mode.value === "message") _push(`<!--[--><div class="aw-seg" data-v-6bede5c4><button type="button" class="${ssrRenderClass({ on: priority.value === "immediate" })}"${ssrRenderAttr("title", _ctx.$t("composer.k1jqqvhe002"))} data-v-6bede5c4>${ssrInterpolate(_ctx.$t("composer.k3x9n2008"))}</button><button type="button" class="${ssrRenderClass({ on: priority.value === "task" })}" data-v-6bede5c4>${ssrInterpolate(_ctx.$t("composer.k40g8m009"))}</button></div><button type="button" class="${ssrRenderClass([{ on: requireReply.value }, "chip-toggle"])}"${ssrRenderAttr("title", _ctx.$t("composer.k195594v003"))} data-v-6bede5c4><span class="i-tabler-mail-forward" data-v-6bede5c4></span> ${ssrInterpolate(_ctx.$t("composer.k3xv7u010"))}</button><!--]-->`);
10774
10877
  else _push(`<!---->`);
10775
- _push(`</div><div class="cb-right" data-v-29be197e><button type="button" class="send-btn im"${ssrIncludeBooleanAttr(__props.sendLoading || !__props.input.trim() || mode.value === "chat" && !__props.canPost) ? " disabled" : ""}${ssrRenderAttr("title", _ctx.$t("composer.sendTitle"))} data-v-29be197e><span class="i-tabler-send im-nudge-up" data-v-29be197e></span></button></div></div>`);
10878
+ _push(`</div><div class="cb-right" data-v-6bede5c4><button type="button" class="send-btn im"${ssrIncludeBooleanAttr(__props.sendLoading || !__props.input.trim() || mode.value === "chat" && !__props.canPost) ? " disabled" : ""}${ssrRenderAttr("title", _ctx.$t("composer.sendTitle"))} data-v-6bede5c4><span class="i-tabler-send im-nudge-up" data-v-6bede5c4></span></button></div></div>`);
10776
10879
  };
10777
10880
  }
10778
10881
  });
@@ -10784,7 +10887,7 @@ ComposerToolbar_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx)
10784
10887
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/composer/ComposerToolbar.vue");
10785
10888
  return _sfc_setup$10 ? _sfc_setup$10(props, ctx) : void 0;
10786
10889
  };
10787
- var ComposerToolbar_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ComposerToolbar_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-29be197e"]]), { __name: "WorkshopComposerToolbar" });
10890
+ var ComposerToolbar_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ComposerToolbar_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-6bede5c4"]]), { __name: "WorkshopComposerToolbar" });
10788
10891
  //#endregion
10789
10892
  //#region app/components/workshop/composer/MentionMenu.vue?vue&type=script&setup=true&lang.ts
10790
10893
  var MentionMenu_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -10797,10 +10900,10 @@ var MentionMenu_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defi
10797
10900
  emits: ["pick", "hover"],
10798
10901
  setup(__props, { emit: __emit }) {
10799
10902
  return (_ctx, _push, _parent, _attrs) => {
10800
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "mention-menu" }, _attrs))} data-v-a42e4a1c><div class="mention-title" data-v-a42e4a1c>${ssrInterpolate(_ctx.$t("composer.k1bxvc46004"))}</div><!--[-->`);
10903
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "mention-menu" }, _attrs))} data-v-a5b73823><div class="mention-title" data-v-a5b73823>${ssrInterpolate(_ctx.$t("composer.k1bxvc46004"))}</div><!--[-->`);
10801
10904
  ssrRenderList(__props.candidates, (c, i) => {
10802
- _push(`<button type="button" class="${ssrRenderClass([{ sel: i === __props.highlighted }, "mention-opt"])}" data-v-a42e4a1c><span class="${ssrRenderClass([c.type === "agent" ? "is-agent" : "is-user", "aw-avatar mention-ava"])}" style="${ssrRenderStyle({ "--av": c.type === "agent" ? unref(agentHueColor)(c.id) : "var(--ink-faint)" })}" data-v-a42e4a1c>${ssrInterpolate(c.type === "agent" ? "A" : "人")}</span><span class="mention-name" data-v-a42e4a1c>@${ssrInterpolate(c.name)}</span><span class="mention-role" data-v-a42e4a1c>${ssrInterpolate(c.role)}</span>`);
10803
- if (c.type === "agent") _push(`<span class="${ssrRenderClass([c.state, "mention-state"])}"${ssrRenderAttr("title", c.state)} data-v-a42e4a1c></span>`);
10905
+ _push(`<button type="button" class="${ssrRenderClass([{ sel: i === __props.highlighted }, "mention-opt"])}" data-v-a5b73823><span class="${ssrRenderClass([c.type === "agent" ? "is-agent" : "is-user", "aw-avatar mention-ava"])}" style="${ssrRenderStyle({ "--av": c.type === "agent" ? unref(agentHueColor)(c.id) : "var(--ink-faint)" })}" data-v-a5b73823>${ssrInterpolate(c.type === "agent" ? "A" : _ctx.$t("chat.avatarHuman"))}</span><span class="mention-name" data-v-a5b73823>@${ssrInterpolate(c.name)}</span><span class="mention-role" data-v-a5b73823>${ssrInterpolate(c.role)}</span>`);
10906
+ if (c.type === "agent") _push(`<span class="${ssrRenderClass([c.state, "mention-state"])}"${ssrRenderAttr("title", c.state)} data-v-a5b73823></span>`);
10804
10907
  else _push(`<!---->`);
10805
10908
  _push(`</button>`);
10806
10909
  });
@@ -10816,7 +10919,7 @@ MentionMenu_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) =>
10816
10919
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/composer/MentionMenu.vue");
10817
10920
  return _sfc_setup$9 ? _sfc_setup$9(props, ctx) : void 0;
10818
10921
  };
10819
- var MentionMenu_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(MentionMenu_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-a42e4a1c"]]), { __name: "WorkshopComposerMentionMenu" });
10922
+ var MentionMenu_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(MentionMenu_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-a5b73823"]]), { __name: "WorkshopComposerMentionMenu" });
10820
10923
  //#endregion
10821
10924
  //#region app/components/workshop/composer/ReplyChip.vue?vue&type=script&setup=true&lang.ts
10822
10925
  var ReplyChip_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -10829,7 +10932,7 @@ var ReplyChip_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ define
10829
10932
  emits: ["cancel"],
10830
10933
  setup(__props, { emit: __emit }) {
10831
10934
  return (_ctx, _push, _parent, _attrs) => {
10832
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "reply-chip" }, _attrs))} data-v-59520bd3><span class="i-tabler-arrow-back-up" data-v-59520bd3></span><span class="reply-label" data-v-59520bd3>回复 <b data-v-59520bd3>${ssrInterpolate(__props.senderName)}</b></span><span class="reply-excerpt" data-v-59520bd3>${ssrInterpolate(__props.excerpt)}</span><button type="button" class="reply-cancel" title="取消回复" data-v-59520bd3><span class="i-tabler-x" data-v-59520bd3></span></button></div>`);
10935
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "reply-chip" }, _attrs))} data-v-9af897c9><span class="i-tabler-arrow-back-up" data-v-9af897c9></span><span class="reply-label" data-v-9af897c9>${ssrInterpolate(_ctx.$t("chat.reply"))} <b data-v-9af897c9>${ssrInterpolate(__props.senderName)}</b></span><span class="reply-excerpt" data-v-9af897c9>${ssrInterpolate(__props.excerpt)}</span><button type="button" class="reply-cancel"${ssrRenderAttr("title", _ctx.$t("chat.cancelReply"))} data-v-9af897c9><span class="i-tabler-x" data-v-9af897c9></span></button></div>`);
10833
10936
  };
10834
10937
  }
10835
10938
  });
@@ -10841,7 +10944,7 @@ ReplyChip_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
10841
10944
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/composer/ReplyChip.vue");
10842
10945
  return _sfc_setup$8 ? _sfc_setup$8(props, ctx) : void 0;
10843
10946
  };
10844
- var ReplyChip_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ReplyChip_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-59520bd3"]]), { __name: "WorkshopComposerReplyChip" });
10947
+ var ReplyChip_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ReplyChip_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-9af897c9"]]), { __name: "WorkshopComposerReplyChip" });
10845
10948
  //#endregion
10846
10949
  //#region app/components/workshop/composer/StatusChip.vue?vue&type=script&setup=true&lang.ts
10847
10950
  var StatusChip_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -10864,30 +10967,33 @@ var StatusChip_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
10864
10967
  * 目标成员与 HITL 可达性提示。纯展示,无状态、无事件。
10865
10968
  */
10866
10969
  return (_ctx, _push, _parent, _attrs) => {
10867
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "composer-status-chip" }, _attrs))} data-v-2cc33deb>`);
10970
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "composer-status-chip" }, _attrs))} data-v-bac143ef>`);
10868
10971
  if (__props.mode === "chat") {
10869
- _push(`<!--[--><span class="chip-key" data-v-2cc33deb>群聊</span>`);
10870
- if (__props.draftAgentMentions.length > 0) _push(`<span class="reach-chip" data-tone="info"${ssrRenderAttr("title", "仅显式 @Agent 触发执行")} data-v-2cc33deb><span class="reach-dot" aria-hidden="true" data-v-2cc33deb></span>@${ssrInterpolate(__props.draftAgentMentions.map((m) => m.label).join(" @"))} · 将触发 ${ssrInterpolate(__props.draftAgentMentions.length)} 次 Agent 执行 </span>`);
10871
- else _push(`<span class="reach-chip" data-tone="ok" title="未 @Agent:消息只进群聊,不触发任何 Agent" data-v-2cc33deb><span class="reach-dot" aria-hidden="true" data-v-2cc33deb></span>仅群聊 · 0 次 Agent 执行 </span>`);
10872
- if (__props.draftUserMentions.length > 0) _push(`<span class="chip-hint" data-v-2cc33deb>@${ssrInterpolate(__props.draftUserMentions.map((m) => m.label).join(" @"))} 将收到定向通知</span>`);
10873
- else _push(`<span class="chip-hint" data-v-2cc33deb>输入 @ 提及成员 · Enter 发送</span>`);
10972
+ _push(`<!--[--><span class="chip-key" data-v-bac143ef>${ssrInterpolate(_ctx.$t("chat.title"))}</span>`);
10973
+ if (__props.draftAgentMentions.length > 0) _push(`<span class="reach-chip" data-tone="info"${ssrRenderAttr("title", _ctx.$t("chat.reachAgentsTitle"))} data-v-bac143ef><span class="reach-dot" aria-hidden="true" data-v-bac143ef></span>${ssrInterpolate(_ctx.$t("chat.reachAgentsText", {
10974
+ p0: __props.draftAgentMentions.map((m) => m.label).join(" @"),
10975
+ p1: __props.draftAgentMentions.length
10976
+ }))}</span>`);
10977
+ else _push(`<span class="reach-chip" data-tone="ok"${ssrRenderAttr("title", _ctx.$t("chat.reachNoAgentTitle"))} data-v-bac143ef><span class="reach-dot" aria-hidden="true" data-v-bac143ef></span>${ssrInterpolate(_ctx.$t("chat.reachNoAgentText"))}</span>`);
10978
+ if (__props.draftUserMentions.length > 0) _push(`<span class="chip-hint" data-v-bac143ef>@${ssrInterpolate(__props.draftUserMentions.map((m) => m.label).join(" @"))}${ssrInterpolate(_ctx.$t("chat.notifyMembersSuffix"))}</span>`);
10979
+ else _push(`<span class="chip-hint" data-v-bac143ef>${ssrInterpolate(_ctx.$t("chat.mentionHint"))}</span>`);
10874
10980
  _push(`<!--]-->`);
10875
10981
  } else if (__props.mode === "task") {
10876
- _push(`<!--[--><span class="chip-key" data-v-2cc33deb>${ssrInterpolate(_ctx.$t("composer.k3wcox005"))}</span><span data-v-2cc33deb>${ssrInterpolate(__props.taskMode)}</span>`);
10877
- if (__props.taskMode === "loop") _push(`<span data-v-2cc33deb>${ssrInterpolate(_ctx.$t("composer.k49kr1011"))} ${ssrInterpolate(__props.loopIntervalSeconds ?? "-")}s </span>`);
10982
+ _push(`<!--[--><span class="chip-key" data-v-bac143ef>${ssrInterpolate(_ctx.$t("composer.k3wcox005"))}</span><span data-v-bac143ef>${ssrInterpolate(__props.taskMode)}</span>`);
10983
+ if (__props.taskMode === "loop") _push(`<span data-v-bac143ef>${ssrInterpolate(_ctx.$t("composer.k49kr1011"))} ${ssrInterpolate(__props.loopIntervalSeconds ?? "-")}s </span>`);
10878
10984
  else _push(`<!---->`);
10879
- _push(`<span class="chip-target"${ssrRenderAttr("title", __props.isDefaultLead ? _ctx.$t("composer.defaultLeadTitle") : _ctx.$t("composer.kl3604i033", { p0: __props.targetName }))} data-v-2cc33deb>→ ${ssrInterpolate(__props.targetName ? `@${__props.targetName}` : "lead")}${ssrInterpolate(__props.isDefaultLead ? _ctx.$t("composer.k2z7yuw012") : _ctx.$t("composer.k2z0fsx032"))}</span>`);
10880
- if (__props.reachHint) _push(`<span class="reach-chip"${ssrRenderAttr("data-tone", __props.reachHint.tone)}${ssrRenderAttr("title", __props.reachHint.title)} data-v-2cc33deb><span class="reach-dot" aria-hidden="true" data-v-2cc33deb></span>${ssrInterpolate(__props.reachHint.text)}</span>`);
10985
+ _push(`<span class="chip-target"${ssrRenderAttr("title", __props.isDefaultLead ? _ctx.$t("composer.defaultLeadTitle") : _ctx.$t("composer.kl3604i033", { p0: __props.targetName }))} data-v-bac143ef>→ ${ssrInterpolate(__props.targetName ? `@${__props.targetName}` : "lead")}${ssrInterpolate(__props.isDefaultLead ? _ctx.$t("composer.k2z7yuw012") : _ctx.$t("composer.k2z0fsx032"))}</span>`);
10986
+ if (__props.reachHint) _push(`<span class="reach-chip"${ssrRenderAttr("data-tone", __props.reachHint.tone)}${ssrRenderAttr("title", __props.reachHint.title)} data-v-bac143ef><span class="reach-dot" aria-hidden="true" data-v-bac143ef></span>${ssrInterpolate(__props.reachHint.text)}</span>`);
10881
10987
  else _push(`<!---->`);
10882
- _push(`<span class="chip-hint" data-v-2cc33deb>${ssrInterpolate(_ctx.$t("composer.k17u6q77006"))}</span><!--]-->`);
10988
+ _push(`<span class="chip-hint" data-v-bac143ef>${ssrInterpolate(_ctx.$t("composer.k17u6q77006"))}</span><!--]-->`);
10883
10989
  } else {
10884
- _push(`<!--[--><span class="chip-key" data-v-2cc33deb>${ssrInterpolate(_ctx.$t("composer.k41ykc007"))}</span>`);
10885
- if (__props.targetName) _push(`<span data-v-2cc33deb>@${ssrInterpolate(__props.targetName)}${ssrInterpolate(__props.isDefaultLead ? _ctx.$t("composer.k2z7yuw012") : "")}</span>`);
10990
+ _push(`<!--[--><span class="chip-key" data-v-bac143ef>${ssrInterpolate(_ctx.$t("composer.k41ykc007"))}</span>`);
10991
+ if (__props.targetName) _push(`<span data-v-bac143ef>@${ssrInterpolate(__props.targetName)}${ssrInterpolate(__props.isDefaultLead ? _ctx.$t("composer.k2z7yuw012") : "")}</span>`);
10886
10992
  else _push(`<!---->`);
10887
- _push(`<span data-v-2cc33deb>${ssrInterpolate(__props.priority === "immediate" ? _ctx.$t("composer.k1bosqfv013") : _ctx.$t("composer.k40g8m009"))}</span>`);
10888
- if (__props.reachHint) _push(`<span class="reach-chip"${ssrRenderAttr("data-tone", __props.reachHint.tone)}${ssrRenderAttr("title", __props.reachHint.title)} data-v-2cc33deb><span class="reach-dot" aria-hidden="true" data-v-2cc33deb></span>${ssrInterpolate(__props.reachHint.text)}</span>`);
10993
+ _push(`<span data-v-bac143ef>${ssrInterpolate(__props.priority === "immediate" ? _ctx.$t("composer.k1bosqfv013") : _ctx.$t("composer.k40g8m009"))}</span>`);
10994
+ if (__props.reachHint) _push(`<span class="reach-chip"${ssrRenderAttr("data-tone", __props.reachHint.tone)}${ssrRenderAttr("title", __props.reachHint.title)} data-v-bac143ef><span class="reach-dot" aria-hidden="true" data-v-bac143ef></span>${ssrInterpolate(__props.reachHint.text)}</span>`);
10889
10995
  else _push(`<!---->`);
10890
- _push(`<span class="chip-hint" data-v-2cc33deb>${ssrInterpolate(_ctx.$t("composer.chipHint"))}</span><!--]-->`);
10996
+ _push(`<span class="chip-hint" data-v-bac143ef>${ssrInterpolate(_ctx.$t("composer.chipHint"))}</span><!--]-->`);
10891
10997
  }
10892
10998
  _push(`</div>`);
10893
10999
  };
@@ -10901,7 +11007,7 @@ StatusChip_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
10901
11007
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/composer/StatusChip.vue");
10902
11008
  return _sfc_setup$7 ? _sfc_setup$7(props, ctx) : void 0;
10903
11009
  };
10904
- var StatusChip_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(StatusChip_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-2cc33deb"]]), { __name: "WorkshopComposerStatusChip" });
11010
+ var StatusChip_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(StatusChip_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-bac143ef"]]), { __name: "WorkshopComposerStatusChip" });
10905
11011
  //#endregion
10906
11012
  //#region app/components/workshop/Composer.vue?vue&type=script&setup=true&lang.ts
10907
11013
  var Composer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
@@ -11085,10 +11191,10 @@ var Composer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
11085
11191
  });
11086
11192
  pendingSend.value = null;
11087
11193
  chat.clearReplyTarget();
11088
- if (res.unresolvedMentions?.length) api$1.warning(`未识别的 @: ${res.unresolvedMentions.join("、")}(不在本群成员内,未投递)`);
11194
+ if (res.unresolvedMentions?.length) api$1.warning(t("chat.unresolvedMentions", { p0: res.unresolvedMentions.join("、") }));
11089
11195
  const n = res.deliveries?.length ?? 0;
11090
- if (n > 0) api$1.success(`已发到群聊 · ${n} 个 Agent 已收到投递`);
11091
- else api$1.success("已发到群聊(未 @Agent,无 Agent 执行)");
11196
+ if (n > 0) api$1.success(t("chat.sentToChat", { p0: n }));
11197
+ else api$1.success(t("chat.sentToChatNoAgent"));
11092
11198
  };
11093
11199
  const send = async () => {
11094
11200
  const text = input.value.trim();
@@ -11155,8 +11261,8 @@ var Composer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
11155
11261
  emit("submitted");
11156
11262
  } catch (e) {
11157
11263
  const code = chatErrorCode(e);
11158
- if (mode.value === "chat" && code === "CHAT_DISABLED") api$1.warning("该 Channel 未开启群聊 —— 请 owner 在右侧成员面板开启后重试");
11159
- else if (mode.value === "chat" && (code === "NOT_CHANNEL_MEMBER" || code === "FORBIDDEN_LEGACY")) api$1.warning("你还不是该 Channel 的群成员 —— 请在右侧成员面板加入群聊");
11264
+ if (mode.value === "chat" && code === "CHAT_DISABLED") api$1.warning(t("chat.composerChatDisabled"));
11265
+ else if (mode.value === "chat" && (code === "NOT_CHANNEL_MEMBER" || code === "FORBIDDEN_LEGACY")) api$1.warning(t("chat.composerNotMember"));
11160
11266
  else api$1.error(chatErrorMessage(e));
11161
11267
  } finally {
11162
11268
  sendLoading.value = false;
@@ -11216,11 +11322,11 @@ var Composer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
11216
11322
  };
11217
11323
  });
11218
11324
  const placeholder = computed(() => {
11219
- if (mode.value === "chat") return "发送到群聊… @ 提及 Agent(触发执行)或成员(仅通知)";
11325
+ if (mode.value === "chat") return t("chat.composerPlaceholder");
11220
11326
  return mode.value === "task" ? t("composer.k2h5jwc030") : t("composer.k15mwzt7031");
11221
11327
  });
11222
11328
  return (_ctx, _push, _parent, _attrs) => {
11223
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "composer" }, _attrs))} data-v-685c0ff5><div class="composer-box" data-v-685c0ff5>`);
11329
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "composer" }, _attrs))} data-v-b1f25582><div class="composer-box" data-v-b1f25582>`);
11224
11330
  if (unref(mentionOpen)) _push(ssrRenderComponent(MentionMenu_default, {
11225
11331
  candidates: unref(mentionFiltered),
11226
11332
  highlighted: unref(mentionHi),
@@ -11245,9 +11351,9 @@ var Composer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
11245
11351
  "reach-hint": unref(reachHint),
11246
11352
  priority: unref(priority)
11247
11353
  }, null, _parent));
11248
- if (unref(mode) === "chat" && unref(perms) && !unref(canPost)) _push(`<div class="composer-block-hint" data-v-685c0ff5><span class="i-tabler-lock" data-v-685c0ff5></span> ${ssrInterpolate(unref(isMember) ? "该 Channel 未开启群聊(owner 可在右侧成员面板开启)" : "你还不是群成员 —— 请在右侧成员面板加入群聊后发言")}</div>`);
11354
+ if (unref(mode) === "chat" && unref(perms) && !unref(canPost)) _push(`<div class="composer-block-hint" data-v-b1f25582><span class="i-tabler-lock" data-v-b1f25582></span> ${ssrInterpolate(unref(isMember) ? _ctx.$t("chat.blockChatDisabled") : _ctx.$t("chat.blockNotMember"))}</div>`);
11249
11355
  else _push(`<!---->`);
11250
- _push(`<textarea class="composer-input" rows="1"${ssrRenderAttr("placeholder", unref(placeholder))} data-v-685c0ff5>${ssrInterpolate(unref(input))}</textarea>`);
11356
+ _push(`<textarea class="composer-input" rows="1"${ssrRenderAttr("placeholder", unref(placeholder))} data-v-b1f25582>${ssrInterpolate(unref(input))}</textarea>`);
11251
11357
  _push(ssrRenderComponent(ComposerToolbar_default, {
11252
11358
  mode: unref(mode),
11253
11359
  "onUpdate:mode": ($event) => isRef(mode) ? mode.value = $event : null,
@@ -11284,7 +11390,7 @@ Composer_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
11284
11390
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/Composer.vue");
11285
11391
  return _sfc_setup$6 ? _sfc_setup$6(props, ctx) : void 0;
11286
11392
  };
11287
- var Composer_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(Composer_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-685c0ff5"]]), { __name: "WorkshopComposer" });
11393
+ var Composer_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(Composer_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-b1f25582"]]), { __name: "WorkshopComposer" });
11288
11394
  //#endregion
11289
11395
  //#region app/components/workshop/AgentInspectorDrawer.vue?vue&type=script&setup=true&lang.ts
11290
11396
  var DRAWER_W_DEFAULT$2 = 520;
@@ -12016,11 +12122,11 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
12016
12122
  const ts = new Date(value).getTime();
12017
12123
  if (!Number.isFinite(ts)) return value;
12018
12124
  const delta = ts - Date.now();
12019
- if (delta <= 0) return "已超时";
12125
+ if (delta <= 0) return t("taskInspectorDrawer.timedOut");
12020
12126
  const mins = Math.ceil(delta / 6e4);
12021
- return mins < 60 ? `剩余约 ${mins} 分钟` : `截止 ${formatLocalClock(value)}`;
12127
+ return mins < 60 ? t("taskInspectorDrawer.remainingMinutes", { p0: mins }) : t("taskInspectorDrawer.deadlineAt", { p0: formatLocalClock(value) });
12022
12128
  });
12023
- const cancelTitle = computed(() => childHealth.value.total > 0 ? `这会同时停止 ${childHealth.value.active} 个活动后代任务,已完成结果会保留。确定继续?` : "确定取消这个任务吗?");
12129
+ const cancelTitle = computed(() => childHealth.value.total > 0 ? t("taskInspectorDrawer.cancelWithChildren", { p0: childHealth.value.active }) : t("taskInspectorDrawer.cancelConfirm"));
12024
12130
  /** AEP 状态时间线重放 */
12025
12131
  const timeline = computed(() => {
12026
12132
  if (!props.taskId) return [];
@@ -12110,7 +12216,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
12110
12216
  default: withCtx((_, _push, _parent, _scopeId) => {
12111
12217
  if (_push) {
12112
12218
  if (unref(detail) || unref(taskView)) {
12113
- _push(`<!--[--><div class="head" data-v-25f7d667${_scopeId}>`);
12219
+ _push(`<!--[--><div class="head" data-v-9b700ecf${_scopeId}>`);
12114
12220
  _push(ssrRenderComponent(_component_a_tag, { color: stateColor[unref(taskView)?.state ?? unref(detail)?.state ?? ""] ?? "default" }, {
12115
12221
  default: withCtx((_, _push, _parent, _scopeId) => {
12116
12222
  if (_push) _push(`${ssrInterpolate(unref(taskView)?.state ?? unref(detail)?.state)}`);
@@ -12118,7 +12224,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
12118
12224
  }),
12119
12225
  _: 1
12120
12226
  }, _parent, _scopeId));
12121
- _push(`<span class="meta" data-v-25f7d667${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k3o48o4010"))}${ssrInterpolate(agentName(unref(taskView)?.assigneeId ?? unref(detail)?.assigneeId ?? ""))}</span><span class="meta" data-v-25f7d667${_scopeId}>${ssrInterpolate(unref(taskView)?.progress ?? unref(detail)?.progress ?? 0)}%</span><div class="spacer" data-v-25f7d667${_scopeId}></div>`);
12227
+ _push(`<span class="meta" data-v-9b700ecf${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k3o48o4010"))}${ssrInterpolate(agentName(unref(taskView)?.assigneeId ?? unref(detail)?.assigneeId ?? ""))}</span><span class="meta" data-v-9b700ecf${_scopeId}>${ssrInterpolate(unref(taskView)?.progress ?? unref(detail)?.progress ?? 0)}%</span><div class="spacer" data-v-9b700ecf${_scopeId}></div>`);
12122
12228
  if ((unref(taskView)?.state ?? unref(detail)?.state) === "FAILED") _push(ssrRenderComponent(_component_a_popconfirm, {
12123
12229
  title: _ctx.$t("taskInspectorDrawer.kns2a6x002"),
12124
12230
  onConfirm: retry
@@ -12183,15 +12289,19 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
12183
12289
  _: 1
12184
12290
  }, _parent, _scopeId));
12185
12291
  _push(`</div>`);
12186
- if ((unref(taskView)?.state ?? unref(detail)?.state) === "FAILED" && unref(failureReason)) _push(`<div class="failure-reason" data-v-25f7d667${_scopeId}><span class="fr-label" data-v-25f7d667${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.failReason"))}</span><span class="fr-text" data-v-25f7d667${_scopeId}>${ssrInterpolate(unref(failureReason))}</span></div>`);
12292
+ if ((unref(taskView)?.state ?? unref(detail)?.state) === "FAILED" && unref(failureReason)) _push(`<div class="failure-reason" data-v-9b700ecf${_scopeId}><span class="fr-label" data-v-9b700ecf${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.failReason"))}</span><span class="fr-text" data-v-9b700ecf${_scopeId}>${ssrInterpolate(unref(failureReason))}</span></div>`);
12187
12293
  else _push(`<!---->`);
12188
12294
  if (unref(deadlineLabel) || unref(detail)?.closeReason || unref(childHealth).total > 0) {
12189
- _push(`<div class="guardrail-strip" data-v-25f7d667${_scopeId}>`);
12190
- if (unref(deadlineLabel)) _push(`<span class="guardrail-chip deadline" data-v-25f7d667${_scopeId}><span class="i-tabler-hourglass-high" data-v-25f7d667${_scopeId}></span> ${ssrInterpolate(unref(deadlineLabel))}</span>`);
12295
+ _push(`<div class="guardrail-strip" data-v-9b700ecf${_scopeId}>`);
12296
+ if (unref(deadlineLabel)) _push(`<span class="guardrail-chip deadline" data-v-9b700ecf${_scopeId}><span class="i-tabler-hourglass-high" data-v-9b700ecf${_scopeId}></span> ${ssrInterpolate(unref(deadlineLabel))}</span>`);
12191
12297
  else _push(`<!---->`);
12192
- if (unref(detail)?.closeReason) _push(`<span class="guardrail-chip reason" data-v-25f7d667${_scopeId}><span class="i-tabler-lock-square-rounded" data-v-25f7d667${_scopeId}></span> ${ssrInterpolate(unref(detail).closeReason)}</span>`);
12298
+ if (unref(detail)?.closeReason) _push(`<span class="guardrail-chip reason" data-v-9b700ecf${_scopeId}><span class="i-tabler-lock-square-rounded" data-v-9b700ecf${_scopeId}></span> ${ssrInterpolate(unref(detail).closeReason)}</span>`);
12193
12299
  else _push(`<!---->`);
12194
- if (unref(childHealth).total > 0) _push(`<span class="guardrail-chip tree" data-v-25f7d667${_scopeId}><span class="i-tabler-git-branch" data-v-25f7d667${_scopeId}></span> 后代 ${ssrInterpolate(unref(childHealth).total)} · 活动 ${ssrInterpolate(unref(childHealth).active)} · 已取消 ${ssrInterpolate(unref(childHealth).canceled)}</span>`);
12300
+ if (unref(childHealth).total > 0) _push(`<span class="guardrail-chip tree" data-v-9b700ecf${_scopeId}><span class="i-tabler-git-branch" data-v-9b700ecf${_scopeId}></span> ${ssrInterpolate(_ctx.$t("taskInspectorDrawer.childrenStats", {
12301
+ p0: unref(childHealth).total,
12302
+ p1: unref(childHealth).active,
12303
+ p2: unref(childHealth).canceled
12304
+ }))}</span>`);
12195
12305
  else _push(`<!---->`);
12196
12306
  _push(`</div>`);
12197
12307
  } else _push(`<!---->`);
@@ -12216,7 +12326,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
12216
12326
  _: 1
12217
12327
  }, _parent, _scopeId));
12218
12328
  else _push(`<!---->`);
12219
- if (unref(detail)?.routeReason) _push(`<div class="route-reason" data-v-25f7d667${_scopeId}><span class="route-label" data-v-25f7d667${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k1knph8c007"))}</span><span class="route-text" data-v-25f7d667${_scopeId}>${ssrInterpolate(unref(detail).routeReason)}</span></div>`);
12329
+ if (unref(detail)?.routeReason) _push(`<div class="route-reason" data-v-9b700ecf${_scopeId}><span class="route-label" data-v-9b700ecf${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k1knph8c007"))}</span><span class="route-text" data-v-9b700ecf${_scopeId}>${ssrInterpolate(unref(detail).routeReason)}</span></div>`);
12220
12330
  else _push(`<!---->`);
12221
12331
  _push(ssrRenderComponent(_component_a_tabs, {
12222
12332
  size: "small",
@@ -12230,11 +12340,11 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
12230
12340
  }, {
12231
12341
  default: withCtx((_, _push, _parent, _scopeId) => {
12232
12342
  if (_push) {
12233
- if (unref(timeline).length === 0) _push(`<div class="empty" data-v-25f7d667${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.kr3vr2x008"))}</div>`);
12343
+ if (unref(timeline).length === 0) _push(`<div class="empty" data-v-9b700ecf${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.kr3vr2x008"))}</div>`);
12234
12344
  else _push(`<!---->`);
12235
12345
  _push(`<!--[-->`);
12236
12346
  ssrRenderList(unref(timeline), (e) => {
12237
- _push(`<div class="tl-row" data-v-25f7d667${_scopeId}><span class="tl-time" data-v-25f7d667${_scopeId}>${ssrInterpolate(unref(formatLocalClock)(e.at))}</span>`);
12347
+ _push(`<div class="tl-row" data-v-9b700ecf${_scopeId}><span class="tl-time" data-v-9b700ecf${_scopeId}>${ssrInterpolate(unref(formatLocalClock)(e.at))}</span>`);
12238
12348
  if (e.type === "task.status") _push(ssrRenderComponent(_component_a_tag, {
12239
12349
  color: stateColor[e.payload.state] ?? "default",
12240
12350
  class: "state"
@@ -12245,7 +12355,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
12245
12355
  }),
12246
12356
  _: 2
12247
12357
  }, _parent, _scopeId));
12248
- else _push(`<span class="tl-progress" data-v-25f7d667${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k485ye011"))} ${ssrInterpolate(e.payload.progress)}%</span>`);
12358
+ else _push(`<span class="tl-progress" data-v-9b700ecf${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k485ye011"))} ${ssrInterpolate(e.payload.progress)}%</span>`);
12249
12359
  _push(`</div>`);
12250
12360
  });
12251
12361
  _push(`<!--]-->`);
@@ -12277,7 +12387,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
12277
12387
  }, {
12278
12388
  default: withCtx((_, _push, _parent, _scopeId) => {
12279
12389
  if (_push) {
12280
- if (!unref(detail)?.artifacts.length) _push(`<div class="empty" data-v-25f7d667${_scopeId}> (${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k401n2012"))}</div>`);
12390
+ if (!unref(detail)?.artifacts.length) _push(`<div class="empty" data-v-9b700ecf${_scopeId}> (${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k401n2012"))}</div>`);
12281
12391
  else _push(`<!---->`);
12282
12392
  _push(`<!--[-->`);
12283
12393
  ssrRenderList(unref(detail)?.artifacts ?? [], (a) => {
@@ -12305,11 +12415,11 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
12305
12415
  }, {
12306
12416
  default: withCtx((_, _push, _parent, _scopeId) => {
12307
12417
  if (_push) {
12308
- if (unref(children).length === 0) _push(`<div class="empty" data-v-25f7d667${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k1kmqn5u009"))}</div>`);
12418
+ if (unref(children).length === 0) _push(`<div class="empty" data-v-9b700ecf${_scopeId}>${ssrInterpolate(_ctx.$t("taskInspectorDrawer.k1kmqn5u009"))}</div>`);
12309
12419
  else _push(`<!---->`);
12310
12420
  _push(`<!--[-->`);
12311
12421
  ssrRenderList(unref(children), (c) => {
12312
- _push(`<div class="child-row" data-v-25f7d667${_scopeId}>`);
12422
+ _push(`<div class="child-row" data-v-9b700ecf${_scopeId}>`);
12313
12423
  _push(ssrRenderComponent(_component_a_tag, {
12314
12424
  color: stateColor[c.state] ?? "default",
12315
12425
  class: "state"
@@ -12320,7 +12430,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
12320
12430
  }),
12321
12431
  _: 2
12322
12432
  }, _parent, _scopeId));
12323
- _push(`<span class="child-title" data-v-25f7d667${_scopeId}>${ssrInterpolate(c.title)}</span><span class="child-meta" data-v-25f7d667${_scopeId}>${ssrInterpolate(agentName(c.assigneeId))} · ${ssrInterpolate(c.progress)}%</span></div>`);
12433
+ _push(`<span class="child-title" data-v-9b700ecf${_scopeId}>${ssrInterpolate(c.title)}</span><span class="child-meta" data-v-9b700ecf${_scopeId}>${ssrInterpolate(agentName(c.assigneeId))} · ${ssrInterpolate(c.progress)}%</span></div>`);
12324
12434
  });
12325
12435
  _push(`<!--]-->`);
12326
12436
  } else return [unref(children).length === 0 ? (openBlock(), createBlock("div", {
@@ -12350,7 +12460,7 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
12350
12460
  tab: _ctx.$t("taskInspectorDrawer.kxj74io017", { p0: unref(detail)?.artifacts.reduce((n, a) => n + a.parts.length, 0) ?? 0 })
12351
12461
  }, {
12352
12462
  default: withCtx((_, _push, _parent, _scopeId) => {
12353
- if (_push) _push(`<pre class="raw" data-v-25f7d667${_scopeId}>${ssrInterpolate(JSON.stringify(unref(detail)?.artifacts, null, 2)?.slice(0, 4e3))}</pre>`);
12463
+ if (_push) _push(`<pre class="raw" data-v-9b700ecf${_scopeId}>${ssrInterpolate(JSON.stringify(unref(detail)?.artifacts, null, 2)?.slice(0, 4e3))}</pre>`);
12354
12464
  else return [createVNode("pre", { class: "raw" }, toDisplayString(JSON.stringify(unref(detail)?.artifacts, null, 2)?.slice(0, 4e3)), 1)];
12355
12465
  }),
12356
12466
  _: 1
@@ -12496,7 +12606,11 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
12496
12606
  unref(childHealth).total > 0 ? (openBlock(), createBlock("span", {
12497
12607
  key: 2,
12498
12608
  class: "guardrail-chip tree"
12499
- }, [createVNode("span", { class: "i-tabler-git-branch" }), createTextVNode(" 后代 " + toDisplayString(unref(childHealth).total) + " · 活动 " + toDisplayString(unref(childHealth).active) + " · 已取消 " + toDisplayString(unref(childHealth).canceled), 1)])) : createCommentVNode("", true)
12609
+ }, [createVNode("span", { class: "i-tabler-git-branch" }), createTextVNode(" " + toDisplayString(_ctx.$t("taskInspectorDrawer.childrenStats", {
12610
+ p0: unref(childHealth).total,
12611
+ p1: unref(childHealth).active,
12612
+ p2: unref(childHealth).canceled
12613
+ })), 1)])) : createCommentVNode("", true)
12500
12614
  ])) : createCommentVNode("", true),
12501
12615
  unref(detail)?.description ? (openBlock(), createBlock(_component_a_descriptions, {
12502
12616
  key: 2,
@@ -12667,7 +12781,11 @@ var TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default = /*@__PURE_
12667
12781
  unref(childHealth).total > 0 ? (openBlock(), createBlock("span", {
12668
12782
  key: 2,
12669
12783
  class: "guardrail-chip tree"
12670
- }, [createVNode("span", { class: "i-tabler-git-branch" }), createTextVNode(" 后代 " + toDisplayString(unref(childHealth).total) + " · 活动 " + toDisplayString(unref(childHealth).active) + " · 已取消 " + toDisplayString(unref(childHealth).canceled), 1)])) : createCommentVNode("", true)
12784
+ }, [createVNode("span", { class: "i-tabler-git-branch" }), createTextVNode(" " + toDisplayString(_ctx.$t("taskInspectorDrawer.childrenStats", {
12785
+ p0: unref(childHealth).total,
12786
+ p1: unref(childHealth).active,
12787
+ p2: unref(childHealth).canceled
12788
+ })), 1)])) : createCommentVNode("", true)
12671
12789
  ])) : createCommentVNode("", true),
12672
12790
  unref(detail)?.description ? (openBlock(), createBlock(_component_a_descriptions, {
12673
12791
  key: 2,
@@ -12782,7 +12900,7 @@ TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default.setup = (props,
12782
12900
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/TaskInspectorDrawer.vue");
12783
12901
  return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
12784
12902
  };
12785
- var TaskInspectorDrawer_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-25f7d667"]]), { __name: "WorkshopTaskInspectorDrawer" });
12903
+ var TaskInspectorDrawer_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(TaskInspectorDrawer_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-9b700ecf"]]), { __name: "WorkshopTaskInspectorDrawer" });
12786
12904
  //#endregion
12787
12905
  //#region app/components/workshop/A2aRpcDebugger.vue?vue&type=script&setup=true&lang.ts
12788
12906
  var DRAWER_W_DEFAULT = 600;
@@ -13495,4 +13613,4 @@ _wsId__vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
13495
13613
  var _wsId__default = /*#__PURE__*/ _plugin_vue_export_helper_default(_wsId__vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-18e1cc65"]]);
13496
13614
 
13497
13615
  export { _wsId__default as default };
13498
- //# sourceMappingURL=_wsId_-C4L9fVHC.mjs.map
13616
+ //# sourceMappingURL=_wsId_-DdqXzycE.mjs.map