@nocobase/app-plugin-agents 2.0.0-beta.1 → 2.0.0-beta.11

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 (382) hide show
  1. package/CHANGELOG.md +197 -0
  2. package/README.md +25 -5
  3. package/dist/client/chat/api.d.ts +6 -1
  4. package/dist/client/chat/api.d.ts.map +1 -1
  5. package/dist/client/chat/api.js +18 -0
  6. package/dist/client/chat/api.js.map +1 -1
  7. package/dist/client/chat/controller.d.ts +12 -0
  8. package/dist/client/chat/controller.d.ts.map +1 -1
  9. package/dist/client/chat/controller.js +65 -20
  10. package/dist/client/chat/controller.js.map +1 -1
  11. package/dist/client/chat/notices.d.ts +12 -0
  12. package/dist/client/chat/notices.d.ts.map +1 -0
  13. package/dist/client/chat/notices.js +15 -0
  14. package/dist/client/chat/notices.js.map +1 -0
  15. package/dist/client/chat/submissions.d.ts +16 -0
  16. package/dist/client/chat/submissions.d.ts.map +1 -1
  17. package/dist/client/chat/submissions.js +22 -0
  18. package/dist/client/chat/submissions.js.map +1 -1
  19. package/dist/client/chat/use-chat.d.ts.map +1 -1
  20. package/dist/client/chat/use-chat.js +1 -0
  21. package/dist/client/chat/use-chat.js.map +1 -1
  22. package/dist/client/chat.d.ts +1 -0
  23. package/dist/client/chat.d.ts.map +1 -1
  24. package/dist/client/chat.js +1 -0
  25. package/dist/client/chat.js.map +1 -1
  26. package/dist/client/components/page-container.js +1 -1
  27. package/dist/client/components/page-container.js.map +1 -1
  28. package/dist/client/components/route-child-page.d.ts +1 -1
  29. package/dist/client/components/route-child-page.d.ts.map +1 -1
  30. package/dist/client/components/route-child-page.js +18 -2
  31. package/dist/client/components/route-child-page.js.map +1 -1
  32. package/dist/client/components/route-overlay.d.ts +4 -1
  33. package/dist/client/components/route-overlay.d.ts.map +1 -1
  34. package/dist/client/components/route-overlay.js +32 -3
  35. package/dist/client/components/route-overlay.js.map +1 -1
  36. package/dist/client/components/ui/alert-dialog.d.ts +3 -1
  37. package/dist/client/components/ui/alert-dialog.d.ts.map +1 -1
  38. package/dist/client/components/ui/alert-dialog.js +2 -2
  39. package/dist/client/components/ui/alert-dialog.js.map +1 -1
  40. package/dist/client/components/unsaved-changes.d.ts.map +1 -1
  41. package/dist/client/components/unsaved-changes.js +17 -4
  42. package/dist/client/components/unsaved-changes.js.map +1 -1
  43. package/dist/client/components/use-route-overlay.d.ts +2 -9
  44. package/dist/client/components/use-route-overlay.d.ts.map +1 -1
  45. package/dist/client/components/use-route-overlay.js +5 -3
  46. package/dist/client/components/use-route-overlay.js.map +1 -1
  47. package/dist/client/lib/format.d.ts.map +1 -1
  48. package/dist/client/lib/format.js +1 -0
  49. package/dist/client/lib/format.js.map +1 -1
  50. package/dist/client/locales/de-DE.d.ts.map +1 -1
  51. package/dist/client/locales/de-DE.js +145 -109
  52. package/dist/client/locales/de-DE.js.map +1 -1
  53. package/dist/client/locales/en-US.d.ts +2 -0
  54. package/dist/client/locales/en-US.d.ts.map +1 -1
  55. package/dist/client/locales/en-US.js +4 -2
  56. package/dist/client/locales/en-US.js.map +1 -1
  57. package/dist/client/locales/es-ES.d.ts.map +1 -1
  58. package/dist/client/locales/es-ES.js +222 -186
  59. package/dist/client/locales/es-ES.js.map +1 -1
  60. package/dist/client/locales/fr-FR.d.ts.map +1 -1
  61. package/dist/client/locales/fr-FR.js +154 -118
  62. package/dist/client/locales/fr-FR.js.map +1 -1
  63. package/dist/client/locales/id-ID.d.ts.map +1 -1
  64. package/dist/client/locales/id-ID.js +143 -107
  65. package/dist/client/locales/id-ID.js.map +1 -1
  66. package/dist/client/locales/index.d.ts.map +1 -1
  67. package/dist/client/locales/index.js +2 -0
  68. package/dist/client/locales/index.js.map +1 -1
  69. package/dist/client/locales/ja-JP.d.ts.map +1 -1
  70. package/dist/client/locales/ja-JP.js +226 -190
  71. package/dist/client/locales/ja-JP.js.map +1 -1
  72. package/dist/client/locales/ko-KR.d.ts +5 -0
  73. package/dist/client/locales/ko-KR.d.ts.map +1 -0
  74. package/dist/client/locales/ko-KR.js +1319 -0
  75. package/dist/client/locales/ko-KR.js.map +1 -0
  76. package/dist/client/locales/pt-BR.d.ts.map +1 -1
  77. package/dist/client/locales/pt-BR.js +216 -180
  78. package/dist/client/locales/pt-BR.js.map +1 -1
  79. package/dist/client/locales/ru-RU.d.ts +5 -0
  80. package/dist/client/locales/ru-RU.d.ts.map +1 -0
  81. package/dist/client/locales/ru-RU.js +1349 -0
  82. package/dist/client/locales/ru-RU.js.map +1 -0
  83. package/dist/client/locales/runWait.en-US.d.ts +2 -0
  84. package/dist/client/locales/runWait.en-US.d.ts.map +1 -1
  85. package/dist/client/locales/runWait.en-US.js +2 -0
  86. package/dist/client/locales/runWait.en-US.js.map +1 -1
  87. package/dist/client/locales/runWait.zh-CN.d.ts.map +1 -1
  88. package/dist/client/locales/runWait.zh-CN.js +2 -0
  89. package/dist/client/locales/runWait.zh-CN.js.map +1 -1
  90. package/dist/client/locales/runtimes.en-US.d.ts +9 -0
  91. package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
  92. package/dist/client/locales/runtimes.en-US.js +11 -2
  93. package/dist/client/locales/runtimes.en-US.js.map +1 -1
  94. package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -1
  95. package/dist/client/locales/runtimes.zh-CN.js +11 -2
  96. package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
  97. package/dist/client/locales/vi-VN.d.ts.map +1 -1
  98. package/dist/client/locales/vi-VN.js +182 -146
  99. package/dist/client/locales/vi-VN.js.map +1 -1
  100. package/dist/client/locales/zh-CN.d.ts.map +1 -1
  101. package/dist/client/locales/zh-CN.js +4 -2
  102. package/dist/client/locales/zh-CN.js.map +1 -1
  103. package/dist/client/locales/zh-TW.d.ts.map +1 -1
  104. package/dist/client/locales/zh-TW.js +159 -123
  105. package/dist/client/locales/zh-TW.js.map +1 -1
  106. package/dist/client/pages/runtimes/quota-limit-setting.d.ts +12 -0
  107. package/dist/client/pages/runtimes/quota-limit-setting.d.ts.map +1 -0
  108. package/dist/client/pages/runtimes/quota-limit-setting.js +57 -0
  109. package/dist/client/pages/runtimes/quota-limit-setting.js.map +1 -0
  110. package/dist/client/pages/runtimes/quota.d.ts +3 -2
  111. package/dist/client/pages/runtimes/quota.d.ts.map +1 -1
  112. package/dist/client/pages/runtimes/quota.js +10 -4
  113. package/dist/client/pages/runtimes/quota.js.map +1 -1
  114. package/dist/client/pages/runtimes/runner-runs.d.ts.map +1 -1
  115. package/dist/client/pages/runtimes/runner-runs.js +2 -8
  116. package/dist/client/pages/runtimes/runner-runs.js.map +1 -1
  117. package/dist/client/pages/runtimes/runner-tools.d.ts.map +1 -1
  118. package/dist/client/pages/runtimes/runner-tools.js +7 -16
  119. package/dist/client/pages/runtimes/runner-tools.js.map +1 -1
  120. package/dist/client/pages/runtimes/workspace-diagnostics.js +3 -3
  121. package/dist/client/pages/runtimes/workspace-diagnostics.js.map +1 -1
  122. package/dist/client/pages/usage/date-range-picker.d.ts.map +1 -1
  123. package/dist/client/pages/usage/date-range-picker.js +3 -1
  124. package/dist/client/pages/usage/date-range-picker.js.map +1 -1
  125. package/dist/client/routes.d.ts.map +1 -1
  126. package/dist/client/routes.js +7 -0
  127. package/dist/client/routes.js.map +1 -1
  128. package/dist/client/runs/format-wait.d.ts.map +1 -1
  129. package/dist/client/runs/format-wait.js +2 -0
  130. package/dist/client/runs/format-wait.js.map +1 -1
  131. package/dist/database/migrations/.manifest.json +20 -0
  132. package/dist/database/migrations/202611070001_ag_run_runner_pin.d.ts +4 -0
  133. package/dist/database/migrations/202611070001_ag_run_runner_pin.d.ts.map +1 -0
  134. package/dist/database/migrations/202611070001_ag_run_runner_pin.js +17 -0
  135. package/dist/database/migrations/202611070001_ag_run_runner_pin.js.map +1 -0
  136. package/dist/database/migrations/202611080001_ag_conversation_shares.d.ts +4 -0
  137. package/dist/database/migrations/202611080001_ag_conversation_shares.d.ts.map +1 -0
  138. package/dist/database/migrations/202611080001_ag_conversation_shares.js +25 -0
  139. package/dist/database/migrations/202611080001_ag_conversation_shares.js.map +1 -0
  140. package/dist/database/migrations/202611080002_ag_run_failure_params.d.ts +4 -0
  141. package/dist/database/migrations/202611080002_ag_run_failure_params.d.ts.map +1 -0
  142. package/dist/database/migrations/202611080002_ag_run_failure_params.js +17 -0
  143. package/dist/database/migrations/202611080002_ag_run_failure_params.js.map +1 -0
  144. package/dist/database/migrations/202611090001_ag_runner_preference.d.ts +9 -0
  145. package/dist/database/migrations/202611090001_ag_runner_preference.d.ts.map +1 -0
  146. package/dist/database/migrations/202611090001_ag_runner_preference.js +28 -0
  147. package/dist/database/migrations/202611090001_ag_runner_preference.js.map +1 -0
  148. package/dist/database/migrations/202611110001_ag_runner_quota_limits.d.ts +4 -0
  149. package/dist/database/migrations/202611110001_ag_runner_quota_limits.d.ts.map +1 -0
  150. package/dist/database/migrations/202611110001_ag_runner_quota_limits.js +17 -0
  151. package/dist/database/migrations/202611110001_ag_runner_quota_limits.js.map +1 -0
  152. package/dist/package.json +4 -2
  153. package/dist/server/composition.d.ts +9 -1
  154. package/dist/server/composition.d.ts.map +1 -1
  155. package/dist/server/composition.js +31 -2
  156. package/dist/server/composition.js.map +1 -1
  157. package/dist/server/core/agents/agent.service.d.ts +2 -1
  158. package/dist/server/core/agents/agent.service.d.ts.map +1 -1
  159. package/dist/server/core/agents/agent.service.js.map +1 -1
  160. package/dist/server/core/agents/agent.store.d.ts +2 -2
  161. package/dist/server/core/agents/agent.store.d.ts.map +1 -1
  162. package/dist/server/core/agents/agent.store.js +8 -2
  163. package/dist/server/core/agents/agent.store.js.map +1 -1
  164. package/dist/server/core/brief/brief.d.ts +10 -5
  165. package/dist/server/core/brief/brief.d.ts.map +1 -1
  166. package/dist/server/core/brief/brief.js +36 -13
  167. package/dist/server/core/brief/brief.js.map +1 -1
  168. package/dist/server/core/brief/index.d.ts +1 -1
  169. package/dist/server/core/brief/index.d.ts.map +1 -1
  170. package/dist/server/core/brief/index.js +1 -1
  171. package/dist/server/core/brief/index.js.map +1 -1
  172. package/dist/server/core/conversations/attachments.d.ts +6 -4
  173. package/dist/server/core/conversations/attachments.d.ts.map +1 -1
  174. package/dist/server/core/conversations/attachments.js +66 -22
  175. package/dist/server/core/conversations/attachments.js.map +1 -1
  176. package/dist/server/core/conversations/chat-settings.d.ts +1 -1
  177. package/dist/server/core/conversations/chat-settings.d.ts.map +1 -1
  178. package/dist/server/core/conversations/chat-settings.js +6 -0
  179. package/dist/server/core/conversations/chat-settings.js.map +1 -1
  180. package/dist/server/core/conversations/conversation.service.d.ts +3 -1
  181. package/dist/server/core/conversations/conversation.service.d.ts.map +1 -1
  182. package/dist/server/core/conversations/conversation.service.js +198 -18
  183. package/dist/server/core/conversations/conversation.service.js.map +1 -1
  184. package/dist/server/core/conversations/conversation.store.d.ts +2 -0
  185. package/dist/server/core/conversations/conversation.store.d.ts.map +1 -1
  186. package/dist/server/core/conversations/conversation.store.js.map +1 -1
  187. package/dist/server/core/conversations/index.d.ts +1 -0
  188. package/dist/server/core/conversations/index.d.ts.map +1 -1
  189. package/dist/server/core/conversations/links.d.ts.map +1 -1
  190. package/dist/server/core/conversations/links.js +10 -5
  191. package/dist/server/core/conversations/links.js.map +1 -1
  192. package/dist/server/core/conversations/ports.d.ts +8 -2
  193. package/dist/server/core/conversations/ports.d.ts.map +1 -1
  194. package/dist/server/core/conversations/shares.d.ts +38 -0
  195. package/dist/server/core/conversations/shares.d.ts.map +1 -0
  196. package/dist/server/core/conversations/shares.js +189 -0
  197. package/dist/server/core/conversations/shares.js.map +1 -0
  198. package/dist/server/core/reports/report.service.d.ts.map +1 -1
  199. package/dist/server/core/reports/report.service.js +24 -13
  200. package/dist/server/core/reports/report.service.js.map +1 -1
  201. package/dist/server/core/runs/access.d.ts +7 -1
  202. package/dist/server/core/runs/access.d.ts.map +1 -1
  203. package/dist/server/core/runs/access.js +51 -2
  204. package/dist/server/core/runs/access.js.map +1 -1
  205. package/dist/server/core/runs/claim.d.ts +22 -3
  206. package/dist/server/core/runs/claim.d.ts.map +1 -1
  207. package/dist/server/core/runs/claim.js +260 -42
  208. package/dist/server/core/runs/claim.js.map +1 -1
  209. package/dist/server/core/runs/eligibility.d.ts.map +1 -1
  210. package/dist/server/core/runs/eligibility.js +1 -0
  211. package/dist/server/core/runs/eligibility.js.map +1 -1
  212. package/dist/server/core/runs/extensions.d.ts +30 -2
  213. package/dist/server/core/runs/extensions.d.ts.map +1 -1
  214. package/dist/server/core/runs/extensions.js +18 -1
  215. package/dist/server/core/runs/extensions.js.map +1 -1
  216. package/dist/server/core/runs/git-credentials.d.ts.map +1 -1
  217. package/dist/server/core/runs/git-credentials.js +24 -2
  218. package/dist/server/core/runs/git-credentials.js.map +1 -1
  219. package/dist/server/core/runs/identity.d.ts.map +1 -1
  220. package/dist/server/core/runs/identity.js +9 -0
  221. package/dist/server/core/runs/identity.js.map +1 -1
  222. package/dist/server/core/runs/index.d.ts +3 -2
  223. package/dist/server/core/runs/index.d.ts.map +1 -1
  224. package/dist/server/core/runs/index.js +2 -1
  225. package/dist/server/core/runs/index.js.map +1 -1
  226. package/dist/server/core/runs/lifecycle.d.ts.map +1 -1
  227. package/dist/server/core/runs/lifecycle.js +14 -0
  228. package/dist/server/core/runs/lifecycle.js.map +1 -1
  229. package/dist/server/core/runs/npm-credentials.d.ts +35 -0
  230. package/dist/server/core/runs/npm-credentials.d.ts.map +1 -0
  231. package/dist/server/core/runs/npm-credentials.js +83 -0
  232. package/dist/server/core/runs/npm-credentials.js.map +1 -0
  233. package/dist/server/core/runs/ports.d.ts +24 -3
  234. package/dist/server/core/runs/ports.d.ts.map +1 -1
  235. package/dist/server/core/runs/ports.js.map +1 -1
  236. package/dist/server/core/runs/preview.d.ts +1 -4
  237. package/dist/server/core/runs/preview.d.ts.map +1 -1
  238. package/dist/server/core/runs/preview.js +10 -5
  239. package/dist/server/core/runs/preview.js.map +1 -1
  240. package/dist/server/core/runs/quota-wait.d.ts +7 -0
  241. package/dist/server/core/runs/quota-wait.d.ts.map +1 -0
  242. package/dist/server/core/runs/quota-wait.js +56 -0
  243. package/dist/server/core/runs/quota-wait.js.map +1 -0
  244. package/dist/server/core/runs/run-data-purge.d.ts.map +1 -1
  245. package/dist/server/core/runs/run-data-purge.js +1 -0
  246. package/dist/server/core/runs/run-data-purge.js.map +1 -1
  247. package/dist/server/core/runs/run.service.d.ts +31 -5
  248. package/dist/server/core/runs/run.service.d.ts.map +1 -1
  249. package/dist/server/core/runs/run.service.js +129 -35
  250. package/dist/server/core/runs/run.service.js.map +1 -1
  251. package/dist/server/core/runs/run.store.d.ts +24 -0
  252. package/dist/server/core/runs/run.store.d.ts.map +1 -1
  253. package/dist/server/core/runs/run.store.js +44 -0
  254. package/dist/server/core/runs/run.store.js.map +1 -1
  255. package/dist/server/core/runs/sweeper.d.ts.map +1 -1
  256. package/dist/server/core/runs/sweeper.js +2 -0
  257. package/dist/server/core/runs/sweeper.js.map +1 -1
  258. package/dist/server/core/runs/transitions.d.ts +1 -0
  259. package/dist/server/core/runs/transitions.d.ts.map +1 -1
  260. package/dist/server/core/runs/transitions.js +15 -1
  261. package/dist/server/core/runs/transitions.js.map +1 -1
  262. package/dist/server/core/runs/workload.d.ts +2 -2
  263. package/dist/server/core/runs/workload.d.ts.map +1 -1
  264. package/dist/server/core/runs/workload.js +62 -9
  265. package/dist/server/core/runs/workload.js.map +1 -1
  266. package/dist/server/kernel/clock.d.ts +2 -0
  267. package/dist/server/kernel/clock.d.ts.map +1 -1
  268. package/dist/server/kernel/clock.js +14 -0
  269. package/dist/server/kernel/clock.js.map +1 -1
  270. package/dist/server/kernel/events.d.ts +4 -1
  271. package/dist/server/kernel/events.d.ts.map +1 -1
  272. package/dist/server/kernel/events.js.map +1 -1
  273. package/dist/server/locales/de-DE.js +3 -3
  274. package/dist/server/locales/de-DE.js.map +1 -1
  275. package/dist/server/locales/es-ES.js +6 -6
  276. package/dist/server/locales/es-ES.js.map +1 -1
  277. package/dist/server/locales/fr-FR.js +4 -4
  278. package/dist/server/locales/fr-FR.js.map +1 -1
  279. package/dist/server/locales/id-ID.js +5 -5
  280. package/dist/server/locales/id-ID.js.map +1 -1
  281. package/dist/server/locales/index.d.ts.map +1 -1
  282. package/dist/server/locales/index.js +2 -0
  283. package/dist/server/locales/index.js.map +1 -1
  284. package/dist/server/locales/ja-JP.d.ts.map +1 -1
  285. package/dist/server/locales/ja-JP.js +6 -6
  286. package/dist/server/locales/ja-JP.js.map +1 -1
  287. package/dist/server/locales/ko-KR.d.ts +5 -0
  288. package/dist/server/locales/ko-KR.d.ts.map +1 -0
  289. package/dist/server/locales/ko-KR.js +59 -0
  290. package/dist/server/locales/ko-KR.js.map +1 -0
  291. package/dist/server/locales/pt-BR.js +6 -6
  292. package/dist/server/locales/pt-BR.js.map +1 -1
  293. package/dist/server/locales/ru-RU.d.ts +5 -0
  294. package/dist/server/locales/ru-RU.d.ts.map +1 -0
  295. package/dist/server/locales/ru-RU.js +59 -0
  296. package/dist/server/locales/ru-RU.js.map +1 -0
  297. package/dist/server/locales/vi-VN.js +6 -6
  298. package/dist/server/locales/vi-VN.js.map +1 -1
  299. package/dist/server/locales/zh-TW.d.ts.map +1 -1
  300. package/dist/server/locales/zh-TW.js +6 -6
  301. package/dist/server/locales/zh-TW.js.map +1 -1
  302. package/dist/server/online/agent/persistence/store.d.ts.map +1 -1
  303. package/dist/server/online/agent/persistence/store.js +3 -0
  304. package/dist/server/online/agent/persistence/store.js.map +1 -1
  305. package/dist/server/online/agent/runner/projection.d.ts +1 -1
  306. package/dist/server/online/agent/runner/projection.d.ts.map +1 -1
  307. package/dist/server/online/agent/runner/projection.js +8 -1
  308. package/dist/server/online/agent/runner/projection.js.map +1 -1
  309. package/dist/server/online/files/input.d.ts +2 -2
  310. package/dist/server/online/files/input.d.ts.map +1 -1
  311. package/dist/server/online/files/input.js +5 -6
  312. package/dist/server/online/files/input.js.map +1 -1
  313. package/dist/server/online/files/kimi.d.ts.map +1 -1
  314. package/dist/server/online/files/kimi.js +2 -2
  315. package/dist/server/online/files/kimi.js.map +1 -1
  316. package/dist/server/online/files/service.d.ts +2 -1
  317. package/dist/server/online/files/service.d.ts.map +1 -1
  318. package/dist/server/online/files/service.js +11 -10
  319. package/dist/server/online/files/service.js.map +1 -1
  320. package/dist/server/providers/agents.d.ts.map +1 -1
  321. package/dist/server/providers/agents.js +5 -2
  322. package/dist/server/providers/agents.js.map +1 -1
  323. package/dist/server/routes/admin.d.ts +1 -0
  324. package/dist/server/routes/admin.d.ts.map +1 -1
  325. package/dist/server/routes/admin.js +41 -14
  326. package/dist/server/routes/admin.js.map +1 -1
  327. package/dist/server/routes/chat.d.ts.map +1 -1
  328. package/dist/server/routes/chat.js +107 -24
  329. package/dist/server/routes/chat.js.map +1 -1
  330. package/dist/server/routes/index.d.ts.map +1 -1
  331. package/dist/server/routes/index.js +8 -2
  332. package/dist/server/routes/index.js.map +1 -1
  333. package/dist/server/routes/run.js +1 -1
  334. package/dist/server/routes/run.js.map +1 -1
  335. package/dist/server/routes/runners/admin.d.ts.map +1 -1
  336. package/dist/server/routes/runners/admin.js +3 -3
  337. package/dist/server/routes/runners/admin.js.map +1 -1
  338. package/dist/server/routes/runners/install.d.ts.map +1 -1
  339. package/dist/server/routes/runners/install.js +5 -0
  340. package/dist/server/routes/runners/install.js.map +1 -1
  341. package/dist/server/routes/runners/runner.d.ts.map +1 -1
  342. package/dist/server/routes/runners/runner.js +13 -22
  343. package/dist/server/routes/runners/runner.js.map +1 -1
  344. package/dist/server/routes/runners/runs.d.ts +1 -1
  345. package/dist/server/routes/runners/runs.d.ts.map +1 -1
  346. package/dist/server/routes/runners/runs.js +20 -1
  347. package/dist/server/routes/runners/runs.js.map +1 -1
  348. package/dist/server/routes/schemas.d.ts +4 -0
  349. package/dist/server/routes/schemas.d.ts.map +1 -1
  350. package/dist/server/routes/schemas.js +31 -6
  351. package/dist/server/routes/schemas.js.map +1 -1
  352. package/dist/server/runners/runner.service.d.ts.map +1 -1
  353. package/dist/server/runners/runner.service.js +33 -9
  354. package/dist/server/runners/runner.service.js.map +1 -1
  355. package/dist/server/runners/runner.store.d.ts +1 -0
  356. package/dist/server/runners/runner.store.d.ts.map +1 -1
  357. package/dist/server/runners/runner.store.js +1 -0
  358. package/dist/server/runners/runner.store.js.map +1 -1
  359. package/dist/server/tokens.d.ts +1 -1
  360. package/dist/server/tokens.d.ts.map +1 -1
  361. package/dist/server/tokens.js.map +1 -1
  362. package/dist/shared/briefs.d.ts +2 -6
  363. package/dist/shared/briefs.d.ts.map +1 -1
  364. package/dist/shared/conversations.d.ts +34 -3
  365. package/dist/shared/conversations.d.ts.map +1 -1
  366. package/dist/shared/conversations.js +10 -2
  367. package/dist/shared/conversations.js.map +1 -1
  368. package/dist/shared/runners.d.ts +7 -3
  369. package/dist/shared/runners.d.ts.map +1 -1
  370. package/dist/shared/runners.js +20 -4
  371. package/dist/shared/runners.js.map +1 -1
  372. package/dist/shared/runs.d.ts +11 -3
  373. package/dist/shared/runs.d.ts.map +1 -1
  374. package/dist/shared/runs.js +2 -0
  375. package/dist/shared/runs.js.map +1 -1
  376. package/docs/conversation-sharing.md +55 -0
  377. package/package.json +18 -16
  378. package/skills/nocobase-app-plugin-agents/SKILL.md +5 -1
  379. package/skills/nocobase-app-plugin-agents/references/extension-points.md +5 -1
  380. package/skills/nocobase-app-plugin-agents/references/online-agent.md +6 -6
  381. package/skills/nocobase-app-plugin-agents/references/runners.md +1 -1
  382. package/skills/nocobase-app-plugin-agents/references/verification-and-troubleshooting.md +2 -1
@@ -1,5 +1,3 @@
1
- import runtimesEnUS from './runtimes.en-US.js';
2
- import chatEnUS from './chat.en-US.js';
3
1
  const viVN = {
4
2
  modelSuggestions: {
5
3
  design: 'Suy luận mạnh nhất: đề xuất, kiến trúc, điều tra vấn đề khó và đánh giá thay đổi quan trọng; cũng triển khai thông thường và thay đổi nhiều gói.',
@@ -55,7 +53,7 @@ const viVN = {
55
53
  title: 'Hủy các thay đổi chưa được lưu?',
56
54
  },
57
55
  errors: {
58
- boundRunnerIncompatible: 'Runner này không thể chạy Agent đã chọn. Hãy đổi runner hoặc bắt đầu cuộc trò chuyện mới.',
56
+ boundRunnerIncompatible: 'Môi trường này không thể chạy Agent đã chọn. Hãy đổi môi trường để tiếp tục.',
59
57
  CONFLICT: 'Trong lúc đó, nó đã thay đổi. Tải lại và thử lại.',
60
58
  REVISION_CONFLICT: 'Trong lúc đó, nó đã thay đổi. Tải lại và thử lại.',
61
59
  FORBIDDEN: 'Bạn không được phép làm điều này.',
@@ -95,30 +93,31 @@ const viVN = {
95
93
  cline: 'Cline',
96
94
  amp: 'Amp',
97
95
  vibe: 'Mistral Vibe',
96
+ dsh: 'DeepSeek Harness',
98
97
  },
99
98
  agents: {
100
99
  unavailableNow: 'Hiện không khả dụng',
101
100
  title: 'Tác nhân',
102
- description: 'Thêm tác nhân từ các mô hình do trình chạy báo cáo. Lead Agent giao từng bước của nhiệm vụ cho tác nhân có mô tả phù hợp.',
103
- fromRunners: 'Đại lý từ trình chạy',
101
+ description: 'Thêm Agent từ các mô hình mà môi trường chạy báo cáo. Lead Agent giao từng bước của nhiệm vụ cho Agent có mô tả phù hợp.',
102
+ fromRunners: 'Đại lý từ môi trường chạy',
104
103
  display: {
105
104
  search: 'Tìm kiếm người mẫu hoặc nhà cung cấp',
106
105
  select: 'Chọn {{name}}',
107
106
  showDisabled: 'Hiện đã tắt',
108
107
  hideDisabled: 'Ẩn đã tắt',
109
108
  },
110
- filterLabel: 'Hiển thị đại lý',
109
+ filterLabel: 'Hiển thị Agents',
111
110
  filters: {
112
111
  all: 'Tất cả {{count}}',
113
112
  enabled: 'Đã bật {{count}}',
114
- unreported: 'Không có trình chạy {{count}}',
113
+ unreported: 'Không có môi trường chạy {{count}}',
115
114
  },
116
- loadFailed: 'Không thể tải các đại lý',
115
+ loadFailed: 'Không thể tải các Agents',
117
116
  loadMore: 'Tải thêm',
118
- emptyTitle: 'Chưa có đại lý',
119
- emptyDescription: 'Kết nối trình chạy có công cụ lập trình đã đăng nhập, rồi thêm tác nhân từ “Các mô hình khả dụng”.',
120
- noneInFilter: 'Không có đại lý ở đây.',
121
- howToAdd: 'Để thêm tác nhân, hãy cài đặt công cụ lập trình trên trình chạy và đăng nhập để sử dụng mô hình khả dụng. Sau khi trình chạy báo cáo mô hình, hãy thêm tác nhân từ “Các mô hình khả dụng” và mô tả thế mạnh của tác nhân. Tác nhân được bật ngay khi thêm. Tác nhân chỉ có trên trình chạy cá nhân chỉ xử lý các nhiệm vụ do chủ sở hữu trình chạy đó bắt đầu.',
117
+ emptyTitle: 'Chưa có Agents',
118
+ emptyDescription: 'Kết nối môi trường chạy có công cụ lập trình đã đăng nhập, rồi thêm Agent từ “Các mô hình khả dụng”.',
119
+ noneInFilter: 'Không có Agent ở đây.',
120
+ howToAdd: 'Để thêm Agent, hãy cài công cụ lập trình trên một môi trường chạy và đăng nhập một mô hình bạn được dùng: khi môi trường chạy báo cáo nó, hãy thêm từ Mô hình khả dụng và ghi rõ nó giỏi việc gì. Agent chỉ có trên môi trường chạy cá nhân chỉ làm các nhiệm vụ do chủ sở hữu của chúng khởi động.',
122
121
  goodAtMissing: 'Chưa viết',
123
122
  columns: {
124
123
  agent: 'Tác nhân',
@@ -128,21 +127,21 @@ const viVN = {
128
127
  state: 'Trạng thái',
129
128
  },
130
129
  where: {
131
- none: 'Không có trình chạy',
132
- team_one: 'Á quân đội {{count}}',
133
- team_other: 'Vận động viên đội {{count}}',
134
- personal_one: 'Trình chạy cá nhân {{count}} trực tuyến',
135
- personal_other: 'Máy chạy bộ cá nhân {{count}} trực tuyến',
130
+ none: 'Không có môi trường chạy',
131
+ team_one: '{{count}} môi trường chạy của nhóm',
132
+ team_other: '{{count}} môi trường chạy của nhóm',
133
+ personal_one: '{{count}} môi trường chạy cá nhân đang trực tuyến',
134
+ personal_other: '{{count}} môi trường chạy cá nhân đang trực tuyến',
136
135
  both: 'Nhóm {{team}} · {{personal}} cá nhân',
137
136
  names: '{{names}}',
138
- noneOnline: 'Hiện tại không có trình chạy nào trực tuyến',
137
+ noneOnline: 'Hiện tại không có môi trường chạy nào trực tuyến',
139
138
  personalOnly: 'Chỉ dành cho vận động viên chạy bộ cá nhân',
140
139
  lastReported: '{{when}} được báo cáo lần cuối',
141
140
  },
142
141
  state: {
143
142
  enabled: 'Đã bật',
144
143
  disabled: 'Đã tắt',
145
- unreported: 'Không có trình chạy',
144
+ unreported: 'Không có môi trường chạy',
146
145
  },
147
146
  effort: {
148
147
  default: 'Mặc định của công cụ',
@@ -158,11 +157,11 @@ const viVN = {
158
157
  enable: {
159
158
  reportedBy_one: 'Á hậu {{count}} tường thuật trực tuyến: {{names}}.',
160
159
  reportedBy_other: 'Báo cáo của các vận động viên {{count}} trực tuyến: {{names}}.',
161
- noRunnerNow: 'Hiện tại không có trình chạy nào có nó trực tuyến.',
162
- goodAtHint: 'Lead Agent quyết định những gì sẽ giao cho người đại diện này bằng những lời này. Nói những gì nó phù hợp và những gì nó không.',
160
+ noRunnerNow: 'Hiện tại không có môi trường chạy nào có nó trực tuyến.',
161
+ goodAtHint: 'Lead Agent quyết định những gì sẽ giao cho Agent này bằng những lời này. Nói những gì nó phù hợp và những gì nó không.',
163
162
  goodAtRequired: 'Viết ra nó giỏi về cái gì trước khi kích hoạt nó.',
164
163
  effortHint: 'Lead Agent không thể thay đổi nó khi bàn giao công việc.',
165
- personalOnly: 'Chỉ những trình chạy bộ cá nhân mới có nó: Lead Agent giao nó chỉ giải quyết các vấn đề mà chủ sở hữu của họ bắt đầu.',
164
+ personalOnly: 'Chỉ môi trường chạy cá nhân có nó: Lead Agent chỉ giao cho nó các nhiệm vụ do chủ sở hữu của chúng khởi động.',
166
165
  },
167
166
  edit: {
168
167
  button: 'Chỉnh sửa',
@@ -214,32 +213,32 @@ const viVN = {
214
213
  },
215
214
  agentTypes: {
216
215
  label: 'Loại tác nhân',
217
- question: 'Đại lý kiểu gì thế?',
216
+ question: 'Agent kiểu gì thế?',
218
217
  online: 'Trực tuyến',
219
218
  runner: 'Trình chạy',
220
- onlineHint: 'Câu trả lời trong vài giây trên máy chủ thông qua dịch vụ mẫu. Không cần thời gian chạy; nó không thể chạm vào mã.',
221
- runnerHint: 'Điều khiển công cụ mã hóa trong thời gian chạy và hoạt động trong thư mục đang hoạt động: mã, tệp, lệnh.',
222
- immutable: 'Một đại lý giữ nguyên loại của nó; tạo một tác nhân khác cho loại khác.',
219
+ onlineHint: 'Câu trả lời trong vài giây trên máy chủ thông qua dịch vụ mẫu. Không cần môi trường chạy; nó không thể chạm vào mã.',
220
+ runnerHint: 'Điều khiển công cụ mã hóa trong môi trường chạy và hoạt động trong thư mục đang hoạt động: mã, tệp, lệnh.',
221
+ immutable: 'Một Agent giữ nguyên loại của nó; tạo một Agent khác cho loại khác.',
223
222
  onServer: 'Trên máy chủ',
224
223
  filterAll: 'Tất cả các loại',
225
- noneOfType: 'Không có đại lý thuộc loại này.',
224
+ noneOfType: 'Không có Agent thuộc loại này.',
226
225
  },
227
226
  agentSkills: {
228
227
  title: 'Kỹ năng',
229
- description: 'Hướng dẫn sử dụng mà tác nhân đọc khi một nhiệm vụ phù hợp với mô tả của họ. Được đặt trong thư mục làm việc của nó trước mỗi lần chạy.',
228
+ description: 'Hướng dẫn sử dụng mà Agent đọc khi một nhiệm vụ phù hợp với mô tả của họ. Được đặt trong thư mục làm việc của nó trước mỗi lần chạy.',
230
229
  manage: 'Quản lý kỹ năng',
231
230
  placeholder: 'Chọn kỹ năng',
232
231
  empty: 'Chưa có kỹ năng.',
233
232
  save: 'Lưu kỹ năng',
234
- descriptionOnline: 'Hướng dẫn tác nhân đọc khi tác vụ khớp với mô tả của họ, trong hộp cát chỉ đọc trên máy chủ.',
235
- onlineScripts: 'Các tập lệnh không được thực thi cho các tác nhân trực tuyến: tác nhân có thể đọc chúng chứ không thể chạy chúng.',
233
+ descriptionOnline: 'Hướng dẫn Agent đọc khi tác vụ khớp với mô tả của họ, trong hộp cát chỉ đọc trên máy chủ.',
234
+ onlineScripts: 'Các tập lệnh không được thực thi cho các Agents trực tuyến: Agent có thể đọc chúng chứ không thể chạy chúng.',
236
235
  skippedScripts: ': {{paths}}',
237
236
  pathSeparator: ', ',
238
237
  },
239
238
  brief: {
240
239
  preview: 'Xem trước lời nhắc đầy đủ',
241
240
  previewTitle: 'Xem trước lời nhắc đầy đủ',
242
- previewDescription: 'Thật là một hành động của đặc vụ này sẽ được gửi đi bây giờ, với một chủ đề bịa đặt. Không có gì được xếp hàng.',
241
+ previewDescription: 'Thật là một hành động của Agent này sẽ được gửi đi bây giờ, với một chủ đề bịa đặt. Không có gì được xếp hàng.',
243
242
  scenario: 'Kịch bản',
244
243
  sample: 'Về một chủ đề bịa đặt: {{subject}}. Các giá trị được đánh dấu [mẫu] được tạo thành.',
245
244
  previewFailed: 'Không thể hiển thị lời nhắc đầy đủ.',
@@ -248,13 +247,13 @@ const viVN = {
248
247
  rendered: 'Kết xuất',
249
248
  raw: 'Nguyên',
250
249
  platform: 'Các quy tắc và nhiệm vụ của nền tảng · về các ký tự {{size}} (tiếng Anh)',
251
- platformNote: 'Quy tắc nền tảng được gửi bằng tiếng Anh; đại lý vẫn trả lời bằng ngôn ngữ của bạn.',
250
+ platformNote: 'Quy tắc nền tảng được gửi bằng tiếng Anh; Agent vẫn trả lời bằng ngôn ngữ của bạn.',
252
251
  agentPrompt: 'Lời nhắc của đại lý (do bạn viết)',
253
- noAgentPrompt: 'Tác nhân này không có lời nhắc riêng.',
252
+ noAgentPrompt: 'Agent này không có lời nhắc riêng.',
254
253
  firstMessage: 'Tin nhắn đầu tiên',
255
254
  empty: 'Trống rỗng',
256
- previewPlaceholders: 'Các ghi chú trong ngoặc về thời gian chạy được điền vào bởi thời gian chạy chạy nó: các thư mục làm việc của nó và lời nhắc khởi tạo của các thư mục mà nó vừa chuẩn bị.',
257
- placeholders: 'Trình giữ chỗ {{runner.…}} được điền vào bởi thời gian chạy chạy nó: các thư mục làm việc của nó và lời nhắc khởi tạo của các thư mục mà nó vừa chuẩn bị.',
255
+ previewPlaceholders: 'Các ghi chú trong ngoặc về môi trường chạy được điền vào bởi môi trường chạy chạy nó: các thư mục làm việc của nó và lời nhắc khởi tạo của các thư mục mà nó vừa chuẩn bị.',
256
+ placeholders: 'Trình giữ chỗ {{runner.…}} được điền vào bởi môi trường chạy chạy nó: các thư mục làm việc của nó và lời nhắc khởi tạo của các thư mục mà nó vừa chuẩn bị.',
258
257
  layers: {
259
258
  system: 'Quy tắc',
260
259
  task: 'Tác vụ',
@@ -265,7 +264,7 @@ const viVN = {
265
264
  },
266
265
  envVars: {
267
266
  title: 'Biến môi trường',
268
- description: 'Được chuyển đến công cụ mã hóa trong mỗi lần chạy và được ẩn trong các bản ghi lần chạy; các giá trị không được hiển thị lại sau khi lưu. Bất kỳ ai có thể sử dụng tác nhân dùng chung đều có thể nhận các giá trị này trên máy tính của riêng họ; đánh dấu các bí mật có rủi ro cao "Chỉ thời gian chạy của nhóm".',
267
+ description: 'Được chuyển đến công cụ mã hóa trong mỗi lần chạy và được ẩn trong các bản ghi lần chạy; các giá trị không được hiển thị lại sau khi lưu. Bất kỳ ai có thể sử dụng Agent dùng chung đều có thể nhận các giá trị này trên máy tính của riêng họ; đánh dấu các bí mật có rủi ro cao "Chỉ môi trường chạy của nhóm".',
269
268
  add: 'Thêm biến',
270
269
  addTitle: 'Thêm biến môi trường',
271
270
  editTitle: 'Thay thế {{name}}',
@@ -275,13 +274,13 @@ const viVN = {
275
274
  value: 'Giá trị',
276
275
  valueTooLong: 'Giá trị lớn hơn 8 KB.',
277
276
  keepValueHint: 'Để trống để giữ giá trị hiện tại.',
278
- teamRunnersOnly: 'Chỉ thời gian chạy của nhóm',
279
- teamRunnersOnlyHint: 'Nếu không có nó, một lần chạy sẽ gửi giá trị đến thời gian chạy thực hiện nó, bao gồm cả thời gian chạy cá nhân của bất kỳ ai có thể sử dụng tác nhân. Với nó, chỉ có thời gian chạy nhóm mới thực hiện các lần chạy có biến này.',
280
- teamRunnersOnlyBadge: 'Chỉ thời gian chạy của nhóm',
281
- fromRunner: 'Lấy từ thời gian chạy',
282
- fromRunnerHint: 'Không có giá trị nào được giữ ở đây: thời gian chạy thực hiện một lần chạy cung cấp giá trị đó từ máy của chính nó, được đặt ở đó bằng {{command}} hoặc được truyền bằng `--pass-env`. Một thời gian chạy không cung cấp nó sẽ không chạy được trước khi bắt đầu.',
283
- fromRunnerBadge: 'Từ thời gian chạy',
284
- valueRequired: 'Nhập một giá trị hoặc tiếp tục lấy giá trị đó từ thời gian chạy.',
277
+ teamRunnersOnly: 'Chỉ môi trường chạy của nhóm',
278
+ teamRunnersOnlyHint: 'Nếu không có nó, một lần chạy sẽ gửi giá trị đến môi trường chạy thực hiện nó, bao gồm cả môi trường chạy cá nhân của bất kỳ ai có thể sử dụng Agent. Với nó, chỉ có môi trường chạy nhóm mới thực hiện các lần chạy có biến này.',
279
+ teamRunnersOnlyBadge: 'Chỉ môi trường chạy của nhóm',
280
+ fromRunner: 'Lấy từ môi trường chạy',
281
+ fromRunnerHint: 'Không có giá trị nào được giữ ở đây: môi trường chạy thực hiện một lần chạy cung cấp giá trị đó từ máy của chính nó, được đặt ở đó bằng {{command}} hoặc được truyền bằng `--pass-env`. Một môi trường chạy không cung cấp nó sẽ không chạy được trước khi bắt đầu.',
282
+ fromRunnerBadge: 'Từ môi trường chạy',
283
+ valueRequired: 'Nhập một giá trị hoặc tiếp tục lấy giá trị đó từ môi trường chạy.',
285
284
  empty: 'Không có biến môi trường.',
286
285
  scope: 'Phạm vi',
287
286
  updated: 'Đã cập nhật',
@@ -321,7 +320,7 @@ const viVN = {
321
320
  },
322
321
  scopeVariables: {
323
322
  title: 'Các biến và bí mật',
324
- description: 'Trao cho mọi đặc vụ làm việc ở đây. Các biến cụ thể hơn (của thư mục làm việc, sau đó của tác nhân) sẽ vượt qua được những biến này.',
323
+ description: 'Trao cho mọi Agent làm việc ở đây. Các biến cụ thể hơn (của thư mục làm việc, sau đó của Agent) sẽ vượt qua được những biến này.',
325
324
  },
326
325
  scopes: {
327
326
  workdir: 'Thư mục làm việc',
@@ -333,7 +332,7 @@ const viVN = {
333
332
  usage: {
334
333
  otherUse: {
335
334
  title: 'Sử dụng mô hình khác',
336
- description: 'Mô hình gọi các hoạt động tác nhân bên ngoài, chẳng hạn như lập chỉ mục và tìm kiếm cơ sở kiến thức.',
335
+ description: 'Mô hình gọi các hoạt động Agent bên ngoài, chẳng hạn như lập chỉ mục và tìm kiếm cơ sở kiến thức.',
337
336
  purpose: 'Sử dụng',
338
337
  source: 'Được hỏi bởi',
339
338
  model: 'Mô hình',
@@ -346,7 +345,7 @@ const viVN = {
346
345
  },
347
346
  },
348
347
  title: 'Mức sử dụng',
349
- description: 'Đại lý nào đang chạy đã được sử dụng và giá của chúng ở mức giá mẫu hiện tại.',
348
+ description: 'Agent nào đang chạy đã được sử dụng và giá của chúng ở mức giá mẫu hiện tại.',
350
349
  loadFailed: 'Không thể tải việc sử dụng',
351
350
  groupBy: 'Nhóm theo',
352
351
  groupByValue: 'Nhóm bởi {{group}}',
@@ -368,7 +367,7 @@ const viVN = {
368
367
  filters: {
369
368
  allGroups: 'Tất cả: {{group}}',
370
369
  agent: 'Tác nhân',
371
- allAgents: 'Tất cả đại lý',
370
+ allAgents: 'Tất cả Agents',
372
371
  person: 'Bị đánh thức bởi',
373
372
  allPeople: 'Mọi người',
374
373
  range: 'Phạm vi ngày',
@@ -403,7 +402,7 @@ const viVN = {
403
402
  },
404
403
  defaultSkills: {
405
404
  title: 'Kỹ năng mặc định',
406
- description: 'Mọi đặc vụ làm việc ở đây đều có những kỹ năng này.',
405
+ description: 'Mọi Agent làm việc ở đây đều có những kỹ năng này.',
407
406
  save: 'Lưu kỹ năng',
408
407
  saved: 'Đã lưu các kỹ năng mặc định.',
409
408
  },
@@ -420,7 +419,7 @@ const viVN = {
420
419
  filters: {
421
420
  agent: 'Tác nhân',
422
421
  status: 'Trạng thái',
423
- allAgents: 'Tất cả đại lý',
422
+ allAgents: 'Tất cả Agents',
424
423
  allStatuses: 'Tất cả trạng thái',
425
424
  },
426
425
  noMatch: 'Không có lượt chạy nào phù hợp với các bộ lọc này.',
@@ -433,7 +432,7 @@ const viVN = {
433
432
  retried: 'Lượt chạy được đưa vào hàng đợi trở lại',
434
433
  viewBrief: 'Xem toàn bộ lời nhắc',
435
434
  briefTitle: 'Lời nhắc đầy đủ',
436
- briefDescription: 'Những gì đại lý đã được thông báo khi lần chạy này được yêu cầu lần cuối.',
435
+ briefDescription: 'Những gì Agent đã được thông báo khi lần chạy này được yêu cầu lần cuối.',
437
436
  briefOf: 'Thử {{attempt}}, đã xác nhận {{time}}',
438
437
  briefUnavailable: 'Không có lời nhắc đầy đủ cho lần chạy này.',
439
438
  processDataCleared: 'Dữ liệu quá trình chạy đã bị xóa theo chính sách lưu giữ.',
@@ -441,7 +440,7 @@ const viVN = {
441
440
  workspaceReset: {
442
441
  button: 'Làm sạch thư mục làm việc',
443
442
  title: 'Làm sạch thư mục làm việc?',
444
- description: 'Lần chạy tiếp theo bắt đầu từ lần thanh toán mới và được đưa ra lời nhắc khởi tạo lại. Những thay đổi không được đẩy sẽ bị mất trong thời gian chạy đó. Một thư mục được sử dụng tại chỗ sẽ không bao giờ bị xóa.',
443
+ description: 'Lần chạy tiếp theo bắt đầu từ lần thanh toán mới và được đưa ra lời nhắc khởi tạo lại. Những thay đổi không được đẩy sẽ bị mất trong môi trường chạy đó. Một thư mục được sử dụng tại chỗ sẽ không bao giờ bị xóa.',
445
444
  confirm: 'Sạch sẽ',
446
445
  done: 'Lần chạy tiếp theo bắt đầu từ lần thanh toán mới.',
447
446
  },
@@ -477,7 +476,7 @@ const viVN = {
477
476
  transcript: {
478
477
  title: 'Bản ghi lượt chạy',
479
478
  notFound: 'Hoạt động này không tồn tại.',
480
- waiting: 'Đang chờ đại lý bắt đầu…',
479
+ waiting: 'Đang chờ Agent bắt đầu…',
481
480
  empty: 'Lần chạy này không ghi nhận sự kiện nào.',
482
481
  fetchFailed: 'Không thể tìm nạp sự kiện mới. Đang thử lại…',
483
482
  expand: 'Hiển thị tất cả',
@@ -485,10 +484,10 @@ const viVN = {
485
484
  summary_one: 'Đã tạo sự kiện {{created}} · {{count}}',
486
485
  summary_other: 'Đã tạo sự kiện {{created}} · {{count}}',
487
486
  took: 'lấy {{duration}}',
488
- pendingInputs_one: '{{count}} bình luận chờ đại lý',
489
- pendingInputs_other: '{{count}} bình luận chờ đại lý',
490
- inputDelivered_one: 'Giao cho đại lý',
491
- inputDelivered_other: 'Đầu vào {{count}} được gửi tới đại lý',
487
+ pendingInputs_one: '{{count}} bình luận chờ Agent',
488
+ pendingInputs_other: '{{count}} bình luận chờ Agent',
489
+ inputDelivered_one: 'Giao cho Agent',
490
+ inputDelivered_other: 'Đầu vào {{count}} được gửi tới Agent',
492
491
  tokens: 'Đầu vào mã thông báo {{input}}, đầu ra {{output}}',
493
492
  kinds: {
494
493
  text: 'Tác nhân',
@@ -512,30 +511,39 @@ const viVN = {
512
511
  leaseExpired: 'Thời gian chạy đã ngừng báo cáo.',
513
512
  startTimeout: 'Thời gian chạy không bắt đầu chạy đúng lúc.',
514
513
  cancelled: 'Đã hủy.',
515
- idleTimeout: 'Đại lý ngừng tiến triển.',
514
+ idleTimeout: 'Agent ngừng tiến triển.',
516
515
  setupFailed: 'Không thể chuẩn bị được cuộc chạy.',
517
516
  cliUnavailable: 'Thời gian chạy không thể cài đặt ứng dụng CLI.',
518
517
  workspaceBusy: 'Thư mục làm việc đang bận; chờ đợi một nỗ lực khác.',
519
518
  checkoutFailed: 'Việc kiểm tra kho lưu trữ không thành công.',
520
- toolAuth: 'Công cụ mã hóa không được đăng nhập trong thời gian chạy.',
519
+ toolAuth: 'Công cụ mã hóa không được đăng nhập trong môi trường chạy.',
521
520
  toolQuota: 'Công cụ mã hóa đã hết hạn ngạch.',
521
+ sessionUnavailable: 'Không thể tiếp tục phiên ban đầu của công cụ lập trình.',
522
522
  toolRateLimit: 'Công cụ mã hóa bị giới hạn tốc độ.',
523
523
  toolNetwork: 'Công cụ mã hóa không thể tiếp cận dịch vụ của nó.',
524
524
  toolProcess: 'Công cụ mã hóa thoát bất ngờ.',
525
525
  contextOverflow: 'Cuộc trò chuyện kéo dài quá lâu đối với người mẫu.',
526
526
  delegatedQueueTimeout: 'Hết thời gian xếp hàng đại biểu; rút tiền',
527
- queuedExpired: 'Không có thời gian chạy nào được thực hiện kịp thời.',
528
- modelUnavailable: 'Không có mô hình của đại lý.',
529
- stepLimit: 'Nhân viên gọi tool quá nhiều lần mà không trả lời.',
530
- policyRefused: 'Không có chính sách nào của thời gian chạy cho phép nó thực hiện công việc này.',
527
+ queuedExpired: 'Không có môi trường chạy nào được thực hiện kịp thời.',
528
+ modelUnavailable: 'Không có mô hình của Agent.',
529
+ stepLimit: 'Agent gọi tool quá nhiều lần mà không trả lời.',
530
+ policyRefused: 'Không có chính sách nào của môi trường chạy cho phép nó thực hiện công việc này.',
531
531
  prepareNetwork: 'Thời gian chạy không thể tiếp cận máy chủ lưu trữ trong khi chuẩn bị chạy.',
532
- repoAccessUnavailable: 'Chứng chỉ của kho lưu trữ không thể được cấp ngay bây giờ; việc chạy sẽ được thử lại.',
532
+ repoAccessUnavailable: 'Tạm thời không thể truy cập kho mã.',
533
533
  repoAccessDenied: 'Ứng dụng sẽ không cấp thông tin xác thực cho một trong các kho lưu trữ của lần chạy.',
534
534
  unknown: 'Việc chạy không thành công.',
535
535
  },
536
536
  runtimes: {
537
- pathHint: runtimesEnUS.runtimes.pathHint,
537
+ pathHint: 'Runner tìm công cụ lập trình bằng PATH của chính nó. Trong terminal mà which codex / which claude hoạt động, hãy chạy lại nocobase-runner service install và khởi động lại dịch vụ (hoặc chạy lại nocobase-runner start) để nó nhận đúng PATH.',
538
538
  quota: {
539
+ ceilingReached: 'Đã đạt ngưỡng hạn mức',
540
+ ceilingLabel: 'Tạm dừng tại',
541
+ ceilingInput: 'Tạm dừng công việc {{tool}} mới khi đạt phần trăm đã dùng',
542
+ ceilingOff: 'Tắt',
543
+ ceilingSave: 'Áp dụng',
544
+ ceilingInvalid: 'Nhập phần trăm nguyên từ 1 đến 100 hoặc để trống.',
545
+ ceilingHint: 'Dựa trên mức dùng được báo cáo gần nhất. Để trống là không giới hạn; công việc đang chạy vẫn tiếp tục.',
546
+ ceilingPaused: 'Một cửa sổ hạn mức đã chạm ngưỡng; công việc mới liên quan chờ đặt lại hoặc thay đổi ngưỡng.',
539
547
  workspaceStatus: {
540
548
  active: 'Công việc vẫn tiếp tục',
541
549
  ended: 'Đã kết thúc · cho phép dọn dẹp',
@@ -560,13 +568,13 @@ const viVN = {
560
568
  since: 'kể từ {{time}}',
561
569
  marks_one: 'Dấu hạn ngạch {{count}}',
562
570
  marks_other: 'Dấu hạn ngạch {{count}}',
563
- queueHint: 'Một đại lý đạt hạn ngạch vẫn có thể được chọn. Công việc sẽ xếp hàng với thời hạn chờ đợi hiện có.',
571
+ queueHint: 'Một Agent đạt hạn ngạch vẫn có thể được chọn. Công việc sẽ xếp hàng với thời hạn chờ đợi hiện có.',
564
572
  partial: 'Chạy trên {{available}} · {{blocked}} theo hạn ngạch',
565
573
  workspaceSize: 'Kích thước không gian làm việc: {{value}}',
566
574
  providers_one: 'Nhà cung cấp {{count}} đạt hạn ngạch',
567
575
  providers_other: 'Nhà cung cấp {{count}} theo hạn ngạch',
568
576
  runColumns: {
569
- issue: 'Vấn đề/cuộc trò chuyện',
577
+ issue: 'Nhiệm vụ / cuộc trò chuyện',
570
578
  agent: 'Tác nhân',
571
579
  status: 'Trạng thái',
572
580
  started: 'Đã bắt đầu',
@@ -601,12 +609,13 @@ const viVN = {
601
609
  resets: 'Đặt lại {{time}}',
602
610
  near: 'Gần đến giới hạn',
603
611
  clear: 'Xóa',
604
- clearMark: 'Đánh dấu rõ ràng',
605
- confirm: 'Xóa dấu này? {{target}} hoạt động trở lại.',
612
+ clearMark: 'Xóa dấu',
613
+ confirmTitle: 'Xóa dấu hạn ngạch của {{target}}?',
614
+ confirm: 'Chỉ xóa sau khi xác nhận hạn ngạch đã được khôi phục. {{target}} nhận việc trở lại ngay; nếu hạn ngạch vẫn hết, lần chạy tiếp theo sẽ đánh dấu lại.',
606
615
  observed: '{{time}} được báo cáo lần cuối',
607
616
  usedPercent: '{{percent}}% đã sử dụng',
608
617
  ok: 'Được rồi',
609
- hint: 'Thời gian đặt lại đã biết sẽ tự động khôi phục tính đủ điều kiện. Đối với các lần đặt lại không xác định, hãy khôi phục hạn ngạch và xóa dấu. Chỉ chủ sở hữu thời gian chạy và quản trị viên mới có thể xóa điểm.',
618
+ hint: 'Dấu tự xóa vào thời điểm đặt lại đã biết, hoặc khi công cụ báo lại còn hạn ngạch. Chỉ xóa thủ công sau khi xác nhận hạn ngạch đã được khôi phục. Chỉ chủ sở hữu môi trường chạy và quản trị viên mới có thể xóa dấu.',
610
619
  },
611
620
  workspaces: {
612
621
  paused: 'Công việc mới bị tạm dừng cho đến khi dung lượng ổ đĩa được phục hồi. Các hoạt động hiện tại vẫn tiếp tục.',
@@ -637,7 +646,7 @@ const viVN = {
637
646
  settled: 'Công việc kết thúc; cần phải kiểm tra dọn dẹp cục bộ',
638
647
  active: 'Công việc vẫn tiếp tục',
639
648
  runNotFound: 'Không thể xác nhận: không tìm thấy chạy',
640
- ownershipUnknown: 'Không thể xác nhận: không thể xác minh quyền sở hữu của trình chạy',
649
+ ownershipUnknown: 'Không thể xác nhận: không thể xác minh quyền sở hữu của môi trường chạy',
641
650
  ambiguousSubject: 'Không thể xác nhận: khóa chủ đề không rõ ràng',
642
651
  bindingUnavailable: 'Không thể xác nhận: ứng dụng không có ràng buộc không gian làm việc',
643
652
  subjectUnknown: 'Không thể xác nhận: ứng dụng không thể giải quyết được chủ đề',
@@ -653,14 +662,14 @@ const viVN = {
653
662
  },
654
663
  },
655
664
  title: 'Môi trường chạy',
656
- description: 'Thời gian chạy chạy tác nhân và từng công cụ mã hóa được báo cáo.',
657
- add: 'Thêm thời gian chạy',
658
- loadFailed: 'Không thể tải thời gian chạy',
659
- emptyTitle: 'Chưa có thời gian chạy nào được kết nối',
660
- emptyDescription: 'Sau khi thời gian chạy được kết nối, các tác nhân chạy sẽ đảm nhận công việc ở đó bằng các công cụ mã hóa của nó.',
661
- noneConnected: 'Không có thời gian chạy nào được kết nối.',
662
- revokedList_one: '{{count}} đã thu hồi thời gian chạy',
663
- revokedList_other: '{{count}} đã thu hồi thời gian chạy',
665
+ description: 'Thời gian chạy chạy Agents và từng công cụ mã hóa được báo cáo.',
666
+ add: 'Thêm môi trường chạy',
667
+ loadFailed: 'Không thể tải môi trường chạy',
668
+ emptyTitle: 'Chưa có môi trường chạy nào được kết nối',
669
+ emptyDescription: 'Sau khi môi trường chạy được kết nối, các Agents chạy sẽ đảm nhận công việc ở đó bằng các công cụ mã hóa của nó.',
670
+ noneConnected: 'Không có môi trường chạy nào được kết nối.',
671
+ revokedList_one: '{{count}} đã thu hồi môi trường chạy',
672
+ revokedList_other: '{{count}} đã thu hồi môi trường chạy',
664
673
  lastSeen: 'Nhìn thấy lần cuối {{time}}',
665
674
  activity: {
666
675
  online: 'Trực tuyến {{active}}/{{slots}}',
@@ -691,7 +700,7 @@ const viVN = {
691
700
  },
692
701
  policy: {
693
702
  title: 'Chính sách địa phương',
694
- description: 'Chủ sở hữu thời gian chạy cho phép nó lấy những gì, như đã báo cáo. Nó được thay đổi trên máy chứ không phải ở đây.',
703
+ description: 'Chủ sở hữu môi trường chạy cho phép nó lấy những gì, như đã báo cáo. Nó được thay đổi trên máy chứ không phải ở đây.',
695
704
  none: 'Không có chính sách địa phương: thực hiện bất kỳ công việc nào được đăng ký.',
696
705
  any: 'Bất kỳ',
697
706
  nothing: 'Không có',
@@ -701,14 +710,14 @@ const viVN = {
701
710
  },
702
711
  variables: {
703
712
  title: 'Biến từ máy này',
704
- description: 'Các biến mà nó cung cấp để chạy lấy chúng từ thời gian chạy, theo tên; các giá trị vẫn còn trên máy. Đặt một cái ở đó với `nocobase-runner env set NAME` hoặc chuyển nó bằng `--pass-env NAME`.',
705
- none: 'Không: một lần chạy lấy một biến từ thời gian chạy không thành công ở đây trước khi nó bắt đầu.',
706
- unknown: 'Không được báo cáo: nhân vật chạy của nó cũ hơn tính năng này. Cập nhật trình chạy để xem chúng.',
713
+ description: 'Các biến mà nó cung cấp để chạy lấy chúng từ môi trường chạy, theo tên; các giá trị vẫn còn trên máy. Đặt một cái ở đó với `nocobase-runner env set NAME` hoặc chuyển nó bằng `--pass-env NAME`.',
714
+ none: 'Không: một lần chạy lấy một biến từ môi trường chạy không thành công ở đây trước khi nó bắt đầu.',
715
+ unknown: 'Không được báo cáo: nhân vật chạy của nó cũ hơn tính năng này. Cập nhật môi trường chạy để xem chúng.',
707
716
  },
708
717
  jobs: {
709
718
  allow: 'Cho phép xây dựng công việc',
710
- hint: 'Bản dựng và các bước khác mà ứng dụng này định cấu hình, chạy mà không cần mô hình. Báo cáo thời gian chạy này: {{kinds}}.',
711
- unsupported: 'Trình chạy của thời gian chạy này không nhận công việc. Cập nhật trình chạy để bật tính năng này.',
719
+ hint: 'Bản dựng và các bước khác mà ứng dụng này định cấu hình, chạy mà không cần mô hình. Báo cáo môi trường chạy này: {{kinds}}.',
720
+ unsupported: 'Trình chạy của môi trường chạy này không nhận công việc. Cập nhật môi trường chạy để bật tính năng này.',
712
721
  },
713
722
  noTools: 'Không tìm thấy công cụ mã hóa',
714
723
  actionsFor: 'Hành động dành cho {{name}}',
@@ -747,11 +756,11 @@ const viVN = {
747
756
  },
748
757
  upgradeRequired: {
749
758
  title: 'Thời gian chạy này cần nâng cấp',
750
- older: 'Trình chạy {{version}} của nó nói giao thức tác nhân {{protocol}}; ứng dụng này cần giao thức {{required}}. Nó vẫn được kết nối nhưng không chạy gì cho đến khi được cập nhật.',
751
- newer: 'Trình chạy {{version}} của nó nói giao thức tác nhân {{protocol}}, mới hơn ứng dụng này (giao thức {{required}}). Nó vẫn được kết nối nhưng không chạy gì cho đến khi chạy một trình chạy mà ứng dụng này phục vụ.',
759
+ older: 'Trình chạy {{version}} của nó nói giao thức Agent {{protocol}}; ứng dụng này cần giao thức {{required}}. Nó vẫn được kết nối nhưng không chạy gì cho đến khi được cập nhật.',
760
+ newer: 'Trình chạy {{version}} của nó nói giao thức Agent {{protocol}}, mới hơn ứng dụng này (giao thức {{required}}). Nó vẫn được kết nối nhưng không chạy gì cho đến khi chạy một môi trường chạy mà ứng dụng này phục vụ.',
752
761
  latest: 'Ứng dụng này phục vụ Á hậu {{latest}}. Chạy cái này trên máy chủ của nó để cập nhật nó:',
753
- noLatest: 'Cài đặt trình chạy nói giao thức {{required}} hoặc chạy trình chạy này trên máy chủ của nó để cập nhật:',
754
- reinstall: 'Trình chạy của nó không nói nó được cài đặt như thế nào. Cài đặt lại nó trên máy chủ của nó bằng lệnh từ Thêm thời gian chạy.',
762
+ noLatest: 'Cài đặt môi trường chạy nói giao thức {{required}} hoặc chạy môi trường chạy này trên máy chủ của nó để cập nhật:',
763
+ reinstall: 'Trình chạy của nó không nói nó được cài đặt như thế nào. Cài đặt lại nó trên máy chủ của nó bằng lệnh từ Thêm môi trường chạy.',
755
764
  },
756
765
  tool: {
757
766
  checking: 'Đang chờ phát hiện',
@@ -762,22 +771,22 @@ const viVN = {
762
771
  signedOut: 'Chưa đăng nhập',
763
772
  notInstalled: 'Chưa được cài đặt',
764
773
  off: 'Tắt',
765
- offHint: 'Tắt: công việc cho công cụ này không được gửi tới thời gian chạy này.',
774
+ offHint: 'Tắt: công việc cho công cụ này không được gửi tới môi trường chạy này.',
766
775
  enableLabel: 'Chạy {{tool}} trên {{name}}',
767
776
  version: 'Phiên bản {{version}}',
768
777
  },
769
778
  trust: {
770
- isolationHint: runtimesEnUS.runtimes.trust.isolationHint,
779
+ isolationHint: 'Với cả môi trường chạy cá nhân lẫn dùng chung, hãy chạy runner trong máy ảo hoặc môi trường cô lập: Agent có toàn quyền truy cập và runner không phải hộp cát.',
771
780
  label: 'Nó phù hợp với ai',
772
781
  team: 'Đội',
773
782
  teamHint: 'Mọi người trong nhóm đều bắt đầu công việc, với các biến số và bí mật của họ. Dành cho máy chủ và máy ảo dùng chung.',
774
783
  ownerOnly: 'Cá nhân',
775
- ownerOnlyHint: 'Chỉ chạy công việc bạn bắt đầu. Giá trị mặc định cho thời gian chạy mà bạn thêm vào.',
784
+ ownerOnlyHint: 'Chỉ chạy công việc bạn bắt đầu. Giá trị mặc định cho môi trường chạy mà bạn thêm vào.',
776
785
  personalOnly: 'Thời gian chạy này sẽ mang tính cá nhân: nó chỉ chạy công việc bạn bắt đầu. Bạn có thể chia sẻ nó với nhóm sau.',
777
786
  },
778
787
  share: {
779
788
  title: 'Chia sẻ {{name}} với nhóm?',
780
- description: 'Các lần chạy của người khác sẽ chạy trong thời gian chạy này, với các biến và bí mật của họ, đồng thời có thể đọc nội dung trên đó. Chỉ chia sẻ nó nếu điều đó tốt.',
789
+ description: 'Các lần chạy của người khác sẽ chạy trong môi trường chạy này, với các biến và bí mật của họ, đồng thời có thể đọc nội dung trên đó. Chỉ chia sẻ nó nếu điều đó tốt.',
781
790
  confirm: 'Chia sẻ với nhóm',
782
791
  },
783
792
  edit: {
@@ -795,11 +804,11 @@ const viVN = {
795
804
  badge: 'Có thể nâng cấp',
796
805
  title: 'Á hậu mới hơn cho {{name}}',
797
806
  description: 'Đã cài đặt {{version}}, ứng dụng này phục vụ {{latest}}.',
798
- hint: 'Nó tự cập nhật khi không có tác nhân nào đang chạy. Để cập nhật nó ngay bây giờ, hãy chạy cái này trên máy chủ của nó.',
807
+ hint: 'Nó tự cập nhật khi không có Agent nào đang chạy. Để cập nhật nó ngay bây giờ, hãy chạy cái này trên máy chủ của nó.',
799
808
  },
800
809
  revoke: {
801
810
  title: 'Thu hồi thông tin xác thực của {{name}}?',
802
- description: 'Á hậu của nó dừng lại ở yêu cầu tiếp theo và các lần chạy của nó quay trở lại hàng đợi. Để kết nối lại, hãy thêm lại thời gian chạy.',
811
+ description: 'Á hậu của nó dừng lại ở yêu cầu tiếp theo và các lần chạy của nó quay trở lại hàng đợi. Để kết nối lại, hãy thêm lại môi trường chạy.',
803
812
  confirm: 'Thu hồi',
804
813
  done: 'Đã thu hồi thông tin xác thực của {{name}}',
805
814
  },
@@ -811,16 +820,26 @@ const viVN = {
811
820
  },
812
821
  },
813
822
  connect: {
814
- ...runtimesEnUS.connect,
815
- title: 'Thêm thời gian chạy',
816
- description: 'Chạy lệnh bên dưới trên máy chủ đã cài đặt công cụ mã hóa: máy chủ, VM hoặc thiết bị của riêng bạn. Các tác nhân chạy ở đó với toàn quyền truy cập, với tư cách là người dùng chạy trình chạy, đồng thời có thể đọc và thay đổi bất kỳ thứ gì mà người dùng có thể, bao gồm cả khóa SSH và các thông tin xác thực khác. Trình chạy không phải là ranh giới bảo mật: chạy nó với tư cách là người dùng chuyên dụng, trong vùng chứa hoặc trong máy ảo.',
823
+ manual: 'Hoặc tự cài đặt',
824
+ promptTitle: 'Để Agent thiết lập',
825
+ promptCopy: 'Sao chép lời nhắc cho Agent',
826
+ promptShow: 'Xem lời nhắc',
827
+ promptHide: 'Ẩn lời nhắc',
828
+ promptHint: 'Sao chép lời nhắc này cho một Agent (Claude Code, Codex, v.v.) trên máy đích, Agent sẽ thực hiện các bước bên dưới thay bạn. Lời nhắc chứa thông tin xác thực dùng một lần: chỉ đưa cho Agent đó.',
829
+ windowsPowerShell: '1. Cài đặt WSL: chạy trong PowerShell, rồi khởi động lại Windows:',
830
+ windowsUbuntu: '2. Mở Ubuntu và chạy lệnh Linux bên dưới. Cài Node.js và các công cụ lập trình bên trong WSL Ubuntu.',
831
+ windowsNetwork: 'Nếu WSL không truy cập được internet, hãy bật chế độ mạng phản chiếu trong WSL.',
832
+ promptWindows: 'TRƯỚC TIÊN, hãy xác định bạn có đang chạy bên trong WSL Ubuntu không. Nếu KHÔNG ở trong WSL Ubuntu, hãy DỪNG LẠI: không chạy bất kỳ lệnh cài đặt hay đăng ký nào. Hãy bảo người dùng chạy wsl --install trong PowerShell, khởi động lại Windows, rồi mở Agent bên trong WSL Ubuntu và chạy lại lời nhắc này. CHỈ tiếp tục các bước bên dưới bên trong WSL Ubuntu. Cài cả Node.js và các công cụ lập trình bên trong WSL. Nếu WSL không truy cập được internet, hãy bật chế độ mạng phản chiếu.\n\n',
833
+ promptBody: 'Thiết lập máy này làm môi trường chạy NocoBase. Hãy dùng máy ảo hoặc môi trường cô lập: Agent có toàn quyền truy cập và runner không phải hộp cát.\n\nKiểm tra có Node.js 24 trở lên và các công cụ lập trình sau đã được cài đặt và đăng nhập: {{tools}}. Dùng cách cài đặt chính thức của chúng, không dùng gói snap.\n\nChạy lệnh đăng ký dùng một lần này để cài runner và CLI của ứng dụng, đăng ký và cài dịch vụ nền của nó:\n{{command}}\n\nKhắc phục các sự cố thiết lập thường gặp: đảm bảo PATH của dịch vụ chứa các công cụ lập trình (kiểm tra which codex / which claude trong terminal cài đặt, rồi chạy lại nocobase-runner service install và khởi động lại dịch vụ); cấu hình proxy cần thiết cho việc tải xuống và cho dịch vụ; xử lý quyền cài đặt npm toàn cục bằng prefix thuộc người dùng hoặc trình quản lý phiên bản Node, không dùng sudo npm install.\n\nKết thúc bằng nocobase-runner status và xác nhận kết nối cùng các công cụ lập trình. Báo cho tôi các bước đăng nhập hoặc mạng còn lại cần tôi hoàn tất. Coi thông tin xác thực đăng ký là bí mật và không đưa vào báo cáo.',
834
+ title: 'Thêm môi trường chạy',
835
+ description: 'Chạy lệnh bên dưới trên máy chủ đã cài đặt công cụ mã hóa: máy chủ, VM hoặc thiết bị của riêng bạn. Các tác nhân chạy ở đó với toàn quyền truy cập, với tư cách là người dùng chạy môi trường chạy, đồng thời có thể đọc và thay đổi bất kỳ thứ gì mà người dùng có thể, bao gồm cả khóa SSH và các thông tin xác thực khác. Trình chạy không phải là ranh giới bảo mật: chạy nó với tư cách là người dùng chuyên dụng, trong vùng chứa hoặc trong máy ảo.',
817
836
  createCredential: 'Tạo lệnh cài đặt',
818
837
  advanced: 'Nâng cao: giới hạn cho mỗi công cụ mã hóa',
819
- run: 'Chạy cái này trên máy chủ đó. Nó tải xuống trình chạy (nocobase-runner) và CLI của ứng dụng này từ ứng dụng này, đăng ký trình chạy và khởi động nó khi đăng nhập:',
838
+ run: 'Chạy cái này trên máy chủ đó. Nó tải xuống môi trường chạy (nocobase-runner) và CLI của ứng dụng này từ ứng dụng này, đăng ký môi trường chạy và khởi động nó khi đăng nhập:',
820
839
  nodeRequired: 'Máy chủ cần Node.js 24 trở lên (kiểm tra bằng nút --version). Lệnh dừng và cho biết cách cài đặt khi thiếu.',
821
840
  installed: 'Đã cài đặt nocobase-runner chưa? Đăng ký nó thay thế:',
822
- tokenOnce: 'Lệnh mang thông tin xác thực một lần cho thời gian chạy "{{trust}}". Nó hoạt động một lần, cho đến {{time}}.',
823
- after: 'Trong vài giây, thời gian chạy xuất hiện trong danh sách, với mỗi công cụ mã hóa được tìm thấy…',
841
+ tokenOnce: 'Lệnh mang thông tin xác thực một lần cho môi trường chạy "{{trust}}". Nó hoạt động một lần, cho đến {{time}}.',
842
+ after: 'Trong vài giây, môi trường chạy xuất hiện trong danh sách, với mỗi công cụ mã hóa được tìm thấy…',
824
843
  tokenTools: 'Công cụ mã hóa: {{tools}}.',
825
844
  tools: 'Công cụ mã hóa',
826
845
  toolsHint: 'Thời gian chạy này chỉ được cung cấp cho các công cụ đã được kiểm tra. Bạn có thể thay đổi nó trên trang Runtimes bất cứ lúc nào.',
@@ -839,8 +858,23 @@ const viVN = {
839
858
  },
840
859
  chat: {
841
860
  // Keep new guidance available in English until this locale is translated.
842
- executionFailed: chatEnUS.chat.executionFailed,
843
- fileInputFailures: chatEnUS.chat.fileInputFailures,
861
+ executionFailed: 'Thực thi thất bại. Hãy xem lại cuộc trò chuyện đã lưu trước khi thử lại.',
862
+ fileInputFailures: {
863
+ imageCapability: 'Mô hình này chưa được cấu hình nhận hình ảnh. Hãy chuyển sang mô hình đã xác minh hỗ trợ hình ảnh.',
864
+ unsupportedFormat: 'Mô hình đã chọn chưa được cấu hình nhận định dạng tệp đính kèm này và không có trình trích xuất văn bản cục bộ nào hỗ trợ. Hãy dùng định dạng tài liệu được hỗ trợ hoặc mô hình đã xác minh hỗ trợ tệp.',
865
+ formatMismatch: 'Tên tệp đính kèm và loại nội dung chỉ ra hai định dạng tài liệu khác nhau. Hãy kiểm tra định dạng tệp rồi tải lên lại.',
866
+ invalidInline: 'Dữ liệu tệp đính kèm không hợp lệ hoặc quá lớn. Hãy tải tệp lên lại hoặc dùng tệp nhỏ hơn.',
867
+ fileTooLarge: 'Một tệp đính kèm vượt quá giới hạn dung lượng. Hãy dùng tệp nhỏ hơn.',
868
+ inputTooLarge: 'Các tệp đính kèm của cuộc trò chuyện vượt quá giới hạn đầu vào. Hãy dùng tệp nhỏ hơn hoặc bắt đầu cuộc trò chuyện mới.',
869
+ documentTooLarge: 'Tệp đính kèm vượt quá giới hạn văn bản trích xuất. Hãy dùng tệp nhỏ hơn.',
870
+ contextTooLarge: 'Các tệp đính kèm của cuộc trò chuyện vượt quá giới hạn văn bản trích xuất. Hãy dùng tệp nhỏ hơn hoặc bắt đầu cuộc trò chuyện mới.',
871
+ fileCount: 'Cuộc trò chuyện vượt quá giới hạn 100 tệp đầu vào. Hãy bắt đầu cuộc trò chuyện mới.',
872
+ nativeFileCount: 'Cuộc trò chuyện vượt quá giới hạn tệp gốc đã cấu hình. Hãy dùng ít tệp đính kèm hơn hoặc chuyển chúng sang tài liệu văn bản được hỗ trợ.',
873
+ unreadable: 'Tệp đính kèm không có văn bản đọc được. Tài liệu quét cần OCR.',
874
+ extractionFailed: 'Không thể trích xuất văn bản của tệp đính kèm. Hãy kiểm tra tài liệu có đọc được không rồi tải lên lại.',
875
+ extractionTimeout: 'Trích xuất văn bản tệp đính kèm đã hết thời gian. Hãy dùng tệp nhỏ hơn hoặc thử lại.',
876
+ preparationFailed: 'Không thể chuẩn bị tệp đính kèm. Hãy kiểm tra quyền truy cập và định dạng tệp rồi thử lại.',
877
+ },
844
878
  untitled: 'Cuộc trò chuyện không tên',
845
879
  renamed: 'Đổi tên',
846
880
  archivedNamed: 'Đã lưu trữ “{{title}}”',
@@ -853,27 +887,27 @@ const viVN = {
853
887
  agentArchived: 'Không được kích hoạt',
854
888
  forbidden: 'Không có sẵn cho bạn',
855
889
  noModel: 'Cấu hình mô hình trò chuyện trước',
856
- noRunner: 'Không có trình chạy trực tuyến, không thể chọn',
890
+ noRunner: 'Không có môi trường chạy trực tuyến, không thể chọn',
857
891
  othersPersonal: 'Chỉ có vận động viên chạy bộ cá nhân của người khác mới có',
858
892
  modelUnavailable: 'Mẫu không có sẵn',
859
893
  },
860
894
  offline: {
861
- fallbackDone: 'Cuộc trò chuyện này hiện sử dụng một tác nhân khác',
895
+ fallbackDone: 'Cuộc trò chuyện này hiện sử dụng một Agent khác',
862
896
  restoreDone: 'Đã chuyển trở lại',
863
- newSession: 'Nhân viên bắt đầu phiên mới và đọc cuộc trò chuyện này.',
897
+ newSession: 'Agent bắt đầu phiên mới và đọc cuộc trò chuyện này.',
864
898
  },
865
899
  notice: {
866
900
  switchedToDefault: 'Đã chuyển sang {{name}}, mặc định của hệ thống, cho đến khi {{own}} hoạt động trở lại.',
867
- switchedToOnline: '{{own}} hiện không có trình chạy nào dành cho bạn, vì vậy {{name}} sẽ trả lời cho đến khi {{own}} quay trở lại.',
868
- onlineFallbackUnavailable: 'Tác nhân dự phòng trực tuyến không thể trả lời ({{reason}}). Cuộc trò chuyện này vẫn ở lại với {{own}} trong khi chờ trình chạy.',
901
+ switchedToOnline: '{{own}} hiện không có môi trường chạy nào dành cho bạn, vì vậy {{name}} sẽ trả lời cho đến khi {{own}} quay trở lại.',
902
+ onlineFallbackUnavailable: 'Agent dự phòng trực tuyến không thể trả lời ({{reason}}). Cuộc trò chuyện này vẫn ở lại với {{own}} trong khi chờ môi trường chạy.',
869
903
  switchedAgent: 'Đã chuyển sang {{name}}, giữ nguyên lịch sử cuộc trò chuyện.',
870
904
  switchedBack: 'Quay lại với {{name}}.',
871
- runFailed: 'Người đại diện dừng lại trước khi trả lời.',
872
- runFailedReason: 'Nhân viên dừng lại trước khi trả lời: {{reason}}',
905
+ runFailed: 'Agent dừng lại trước khi trả lời.',
906
+ runFailedReason: 'Agent dừng lại trước khi trả lời: {{reason}}',
873
907
  runCancelled: 'Yêu cầu hủy bỏ.',
874
908
  },
875
909
  consultation: {
876
- unavailableTitle: 'Đại lý được tư vấn không có sẵn',
910
+ unavailableTitle: 'Agent được tư vấn không có sẵn',
877
911
  snapshotTitle: 'Đã yêu cầu {{name}} vào thời điểm đó',
878
912
  title: 'Đã tư vấn {{name}}',
879
913
  },
@@ -884,31 +918,31 @@ const viVN = {
884
918
  },
885
919
  agents: {
886
920
  personalOnly: 'Chỉ dành cho vận động viên chạy bộ cá nhân',
887
- hint: 'Liệt kê các tác nhân được kích hoạt và cho biết lý do tại sao hiện tại người ta không thể trả lời bạn. Các câu trả lời chạy theo trình tự: câu trả lời đầu tiên đợi một người nhận, thường là vài giây.',
888
- chooseFor: 'Chọn đại lý',
889
- empty: 'Không có đại lý nào bạn có thể chọn',
890
- none: 'Không có đại lý',
891
- unknown: 'Đặc vụ vô danh',
892
- placeholder: 'Chọn đại lý',
921
+ hint: 'Liệt kê các Agents được kích hoạt và cho biết lý do tại sao hiện tại người ta không thể trả lời bạn. Các câu trả lời chạy theo trình tự: câu trả lời đầu tiên đợi một người nhận, thường là vài giây.',
922
+ chooseFor: 'Chọn Agent',
923
+ empty: 'Không có Agent nào bạn có thể chọn',
924
+ none: 'Không có Agent',
925
+ unknown: 'Agent vô danh',
926
+ placeholder: 'Chọn Agent',
893
927
  myDefault: 'Mặc định của tôi',
894
928
  systemDefault: 'Mặc định hệ thống',
895
929
  },
896
930
  },
897
931
  chatProfile: {
898
- loadFailed: 'Không thể tải cài đặt đại lý của bạn',
899
- defaultAgent: 'Tác nhân trò chuyện mặc định của tôi',
932
+ loadFailed: 'Không thể tải cài đặt Agent của bạn',
933
+ defaultAgent: 'Agent trò chuyện mặc định của tôi',
900
934
  systemDefault: 'Mặc định hệ thống',
901
935
  systemDefaultNamed: 'Mặc định hệ thống ({{name}})',
902
936
  noDefault: 'Không có mặc định hệ thống nào được đặt.',
903
- saved: 'Đã lưu tác nhân trò chuyện mặc định',
937
+ saved: 'Đã lưu Agent trò chuyện mặc định',
904
938
  },
905
939
  models: {
906
940
  title: 'Mô hình',
907
- description: 'Các dịch vụ mô hình gọi đại lý trực tuyến và các mô hình mà mỗi dịch vụ cung cấp: mô hình trò chuyện cho các đại lý, mô hình nhúng và xếp hạng lại để tìm kiếm.',
941
+ description: 'Các dịch vụ mô hình gọi Agents trực tuyến và các mô hình mà mỗi dịch vụ cung cấp: mô hình trò chuyện cho các Agents, mô hình nhúng và xếp hạng lại để tìm kiếm.',
908
942
  },
909
943
  defaultModel: {
910
944
  title: 'Mô hình trò chuyện mặc định',
911
- description: 'Các đại lý trực tuyến không có mô hình trả lời riêng của họ với nó, chẳng hạn như một đại lý mới hoặc một đại lý đi kèm với ứng dụng.',
945
+ description: 'Các Agents trực tuyến không có mô hình trả lời riêng của họ với nó, chẳng hạn như một Agent mới hoặc một Agent đi kèm với ứng dụng.',
912
946
  none: 'Chưa có mô hình trò chuyện nào được bật. Thêm dịch vụ mô hình và bật mô hình trò chuyện: mô hình đầu tiên trở thành mặc định.',
913
947
  saved: 'Mô hình trò chuyện mặc định hiện là {{model}}.',
914
948
  },
@@ -922,7 +956,7 @@ const viVN = {
922
956
  loadFailed: 'Không thể tải các dịch vụ mô hình',
923
957
  empty: {
924
958
  title: 'Chưa có dịch vụ mẫu',
925
- description: 'Sau khi bạn thêm dịch vụ mẫu, các đại lý trực tuyến có thể trả lời thông qua dịch vụ đó.',
959
+ description: 'Sau khi bạn thêm dịch vụ mẫu, các Agents trực tuyến có thể trả lời thông qua dịch vụ đó.',
926
960
  readOnly: 'Yêu cầu quản trị viên thêm dịch vụ mẫu.',
927
961
  },
928
962
  add: {
@@ -947,7 +981,7 @@ const viVN = {
947
981
  turnedOff: '{{title}} tắt.',
948
982
  name: 'Tên',
949
983
  enabled: 'Đã bật',
950
- enabledHint: 'Các đại lý trực tuyến chỉ có thể sử dụng các mô hình của nó khi nó đang bật.',
984
+ enabledHint: 'Các Agents trực tuyến chỉ có thể sử dụng các mô hình của nó khi nó đang bật.',
951
985
  saved: '{{title}} đã được lưu.',
952
986
  delete: 'Xóa',
953
987
  deleteTitle: 'Xóa {{title}}?',
@@ -970,7 +1004,7 @@ const viVN = {
970
1004
  },
971
1005
  models: {
972
1006
  title: 'Mô hình',
973
- description: 'Kiểm tra các mô hình mà dịch vụ này cung cấp và cho biết mỗi mô hình dùng để làm gì: mô hình trò chuyện trả lời tác nhân, mô hình nhúng văn bản chỉ mục cho tìm kiếm, sắp xếp lại mô hình theo thứ tự kết quả tìm kiếm. Một mô hình nhúng có thể yêu cầu các vectơ có kích thước.',
1007
+ description: 'Kiểm tra các mô hình mà dịch vụ này cung cấp và cho biết mỗi mô hình dùng để làm gì: mô hình trò chuyện trả lời Agents, mô hình nhúng văn bản chỉ mục cho tìm kiếm, sắp xếp lại mô hình theo thứ tự kết quả tìm kiếm. Một mô hình nhúng có thể yêu cầu các vectơ có kích thước.',
974
1008
  fetching: 'Đang tìm nạp mô hình của nhà cung cấp…',
975
1009
  fetchFailed: 'Nhà cung cấp sẽ không liệt kê các model của mình: {{message}}',
976
1010
  fetch: 'Tìm nạp mô hình',
@@ -1068,10 +1102,10 @@ const viVN = {
1068
1102
  loadFailed: 'Không thể tải kỹ năng',
1069
1103
  backToList: 'Trở lại kỹ năng',
1070
1104
  emptyTitle: 'Chưa có kỹ năng',
1071
- emptyDescription: 'Sau khi bạn thêm một kỹ năng, các đặc vụ sẽ đọc SKILL.md của nó bất cứ khi nào có nhiệm vụ yêu cầu.',
1105
+ emptyDescription: 'Sau khi bạn thêm một kỹ năng, các Agents sẽ đọc SKILL.md của nó bất cứ khi nào có nhiệm vụ yêu cầu.',
1072
1106
  emptyReadOnly: 'Yêu cầu quản trị viên thêm một kỹ năng.',
1073
1107
  content: 'SKILL.md',
1074
- contentHint: 'Tên của vấn đề phía trước là tên thư mục của kỹ năng: thay đổi nó sẽ đổi tên kỹ năng. Mô tả cho các đại lý biết khi nào nên đọc nó.',
1108
+ contentHint: 'Tên của vấn đề phía trước là tên thư mục của kỹ năng: thay đổi nó sẽ đổi tên kỹ năng. Mô tả cho các Agents biết khi nào nên đọc nó.',
1075
1109
  contentTooLarge: 'SKILL.md lớn hơn {{max}}.',
1076
1110
  emptyContent: 'Kỹ năng này chưa có nội dung.',
1077
1111
  created: 'Tạo ra kỹ năng "{{name}}"',
@@ -1084,14 +1118,14 @@ const viVN = {
1084
1118
  edit: 'Chỉnh sửa',
1085
1119
  delete: 'Xóa kỹ năng',
1086
1120
  deleteTitle: 'Xóa kỹ năng "{{name}}"?',
1087
- deleteDescription: 'Mọi đặc vụ và mọi nơi sử dụng kỹ năng này làm mặc định đều sẽ mất nó.',
1121
+ deleteDescription: 'Mọi Agent và mọi nơi sử dụng kỹ năng này làm mặc định đều sẽ mất nó.',
1088
1122
  readOnly: 'Chỉ người tạo kỹ năng và quản trị viên không gian làm việc mới có thể thay đổi kỹ năng này.',
1089
1123
  conflict: 'Người khác vừa thay đổi kỹ năng này. Phiên bản mới nhất đã được tải; thử lại.',
1090
1124
  conflictTitle: 'Có người khác vừa thay đổi kỹ năng này',
1091
1125
  conflictDraft: 'Ai đó đã lưu phiên bản mới sau khi bạn bắt đầu chỉnh sửa nên những thay đổi của bạn không được lưu. Sao chép những gì bạn muốn giữ lại, sau đó tải phiên bản mới nhất và chỉnh sửa lại.',
1092
1126
  loadLatest: 'Tải phiên bản mới nhất',
1093
- mountedAgents: 'Đại lý kèm theo',
1094
- noAgents: 'Chưa gắn bó với bất kỳ đại lý nào.',
1127
+ mountedAgents: 'Agents kèm theo',
1128
+ noAgents: 'Chưa gắn bó với bất kỳ Agent nào.',
1095
1129
  defaults: 'Kỹ năng mặc định của: {{places}}.',
1096
1130
  defaultsSeparator: ', ',
1097
1131
  files: 'Tệp',
@@ -1104,7 +1138,7 @@ const viVN = {
1104
1138
  binaryFile: 'Tệp nhị phân, {{size}}. Nó không thể được chỉnh sửa ở đây.',
1105
1139
  executable: 'Có thể thực thi được',
1106
1140
  scriptBadge: 'Kịch bản',
1107
- scriptsNote: 'Có tập lệnh: đại lý trực tuyến có thể đọc chúng nhưng không bao giờ chạy chúng',
1141
+ scriptsNote: 'Có tập lệnh: Agents trực tuyến có thể đọc chúng nhưng không bao giờ chạy chúng',
1108
1142
  compatibility: 'Khả năng tương thích: {{value}}',
1109
1143
  fileContent: 'Nội dung của {{path}}',
1110
1144
  export: 'Xuất khẩu',
@@ -1135,8 +1169,8 @@ const viVN = {
1135
1169
  name: 'Tên',
1136
1170
  renameTitle: 'Đổi tên "{{name}}"',
1137
1171
  conventional: {
1138
- scripts: 'Đại lý mã có thể chạy. Đại lý trực tuyến chỉ đọc nó.',
1139
- references: 'Đại lý tài liệu đọc khi họ cần.',
1172
+ scripts: 'Agents mã có thể chạy. Agents trực tuyến chỉ đọc nó.',
1173
+ references: 'Agents tài liệu đọc khi họ cần.',
1140
1174
  assets: 'Mẫu, hình ảnh và các tài nguyên khác.',
1141
1175
  },
1142
1176
  problems: {
@@ -1171,7 +1205,7 @@ const viVN = {
1171
1205
  },
1172
1206
  },
1173
1207
  template: {
1174
- description: 'Kỹ năng này có tác dụng gì và khi nào đặc vụ nên sử dụng nó.',
1208
+ description: 'Kỹ năng này có tác dụng gì và khi nào Agent nên sử dụng nó.',
1175
1209
  title: 'Kỹ năng mới',
1176
1210
  whenToUse: 'Khi nào nên sử dụng',
1177
1211
  whenToUseHint: 'Mô tả các nhiệm vụ đòi hỏi kỹ năng này.',
@@ -1198,7 +1232,7 @@ const viVN = {
1198
1232
  unchanged: 'không thay đổi',
1199
1233
  restore: 'Khôi phục',
1200
1234
  restoreTitle: 'Khôi phục phiên bản {{version}}?',
1201
- restoreDescription: 'Nó được lưu lại dưới dạng phiên bản mới nhất; các đại lý có được nó trong lần chạy tiếp theo của họ. Không có gì bị mất: phiên bản hiện tại vẫn còn trong lịch sử.',
1235
+ restoreDescription: 'Nó được lưu lại dưới dạng phiên bản mới nhất; các Agents có được nó trong lần chạy tiếp theo của họ. Không có gì bị mất: phiên bản hiện tại vẫn còn trong lịch sử.',
1202
1236
  restored: 'Đã khôi phục phiên bản {{version}} thành phiên bản {{current}}.',
1203
1237
  },
1204
1238
  },
@@ -1209,24 +1243,26 @@ const viVN = {
1209
1243
  pruning: 'Á hậu dọn dẹp cửa hàng chung; công việc mới bị tạm dừng',
1210
1244
  toolNotInstalled: 'Không có Á hậu kết nối nào được cài đặt công cụ này',
1211
1245
  incompatible: 'Trình chạy được kết nối không hỗ trợ khối lượng công việc này; yêu cầu nâng cấp',
1212
- restricted: 'Chính sách của trình chạy, thư mục hoặc hạn chế biến',
1246
+ restricted: 'Chính sách của môi trường chạy, thư mục hoặc hạn chế biến',
1213
1247
  unknown: 'Tính đủ điều kiện của khối lượng công việc chưa được thiết lập',
1214
- agentArchived: 'Đại lý được lưu trữ',
1248
+ agentArchived: 'Agent được lưu trữ',
1215
1249
  delayed: 'Đã lên lịch cho {{until}}',
1216
- noRunnerOnline: 'Không có thời gian chạy trực tuyến',
1250
+ noRunnerOnline: 'Không có môi trường chạy trực tuyến',
1217
1251
  runnersOffline: 'Thời gian chạy của nó đang ngoại tuyến',
1252
+ toolQuota: 'Đã hết hạn mức công cụ; thời gian đặt lại: {{until}}',
1218
1253
  toolUnavailable: 'Công cụ chưa đăng nhập, bị vô hiệu hóa hoặc mô hình được yêu cầu không có sẵn ({{tool}})',
1219
1254
  noSharedRunner: 'Chỉ có vận động viên cá nhân của người khác mới trực tuyến',
1220
- missingFeatures: 'Không có thời gian chạy hỗ trợ {{features}}',
1221
- secretsNotAllowed: 'Cần thời gian chạy nhóm: {{variables}} chỉ dành cho thời gian chạy nhóm',
1255
+ missingFeatures: 'Không có môi trường chạy hỗ trợ {{features}}',
1256
+ secretsNotAllowed: 'Cần môi trường chạy nhóm: {{variables}} chỉ dành cho môi trường chạy nhóm',
1222
1257
  sameWorkActive: 'Sau khi chạy xong rồi',
1223
1258
  concurrencyFull: 'Đồng thời đầy đủ ({{active}}/{{limit}})',
1224
1259
  runnersBusy: 'Các vận động viên tương thích đã đầy',
1225
1260
  toolSlotsFull: 'Khe cắm {{tool}} đã đầy ({{used}}/{{limit}})',
1226
1261
  setupRetrying: 'Việc chuẩn bị thất bại; đang thử lại: {{detail}}',
1227
- next: 'Tiếp theo để có thời gian chạy miễn phí',
1262
+ next: 'Tiếp theo để có môi trường chạy miễn phí',
1228
1263
  },
1229
1264
  unknown: 'Đã xếp hàng đợi ({{reason}})',
1265
+ quotaResetUnknown: 'chưa rõ',
1230
1266
  unknownValue: '—',
1231
1267
  },
1232
1268
  access: {
@@ -1238,12 +1274,12 @@ const viVN = {
1238
1274
  description: 'Các đặc vụ của đội và kỹ năng họ sử dụng.',
1239
1275
  actions: {
1240
1276
  edit: {
1241
- title: 'Thay đổi tác nhân và kỹ năng',
1242
- description: 'Thay đổi cài đặt, kỹ năng và biến của tác nhân, lưu trữ, khôi phục và xóa nó cũng như chỉnh sửa kỹ năng. Một đại diện không được cấp khả năng nào ngoài khả năng của người biên tập',
1243
- related: 'Thay đổi tác nhân và kỹ năng (tác nhân họ sở hữu và kỹ năng họ tạo ra)',
1277
+ title: 'Thay đổi Agents và kỹ năng',
1278
+ description: 'Thay đổi cài đặt, kỹ năng và biến của Agent, lưu trữ, khôi phục và xóa nó cũng như chỉnh sửa kỹ năng. Một Agent không được cấp khả năng nào ngoài khả năng của người biên tập',
1279
+ related: 'Thay đổi Agents và kỹ năng (Agents họ sở hữu và kỹ năng họ tạo ra)',
1244
1280
  relatedLabel: 'Đại lý tôi sở hữu và kỹ năng tôi tạo',
1245
1281
  relatedHint: 'Đại lý mà tôi là chủ sở hữu và các kỹ năng tôi đã tạo',
1246
- all: 'Thay đổi tác nhân và kỹ năng (tất cả)',
1282
+ all: 'Thay đổi Agents và kỹ năng (tất cả)',
1247
1283
  },
1248
1284
  },
1249
1285
  },
@@ -1263,11 +1299,11 @@ const viVN = {
1263
1299
  keyScopes: {
1264
1300
  agents: {
1265
1301
  title: 'Tác nhân',
1266
- description: 'Xem các đại lý, kỹ năng và cách chạy; thay đổi tác nhân và kỹ năng, hủy và thử lại.',
1302
+ description: 'Xem các Agents, kỹ năng và cách chạy; thay đổi Agents và kỹ năng, hủy và thử lại.',
1267
1303
  },
1268
1304
  runners: {
1269
1305
  title: 'Môi trường chạy',
1270
- description: 'Xem trình chạy và mã thông báo đăng ký; quản lý trình chạy.',
1306
+ description: 'Xem môi trường chạy và mã thông báo đăng ký; quản lý môi trường chạy.',
1271
1307
  },
1272
1308
  prices: {
1273
1309
  title: 'Giá mẫu',