codexmate 0.0.55 → 0.0.57
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.
- package/README.md +2 -0
- package/README.vi.md +2 -0
- package/README.zh.md +2 -0
- package/cli/local-bridge.js +221 -22
- package/cli.js +797 -134
- package/lib/task-orchestrator.js +90 -21
- package/lib/task-workspace-chat.js +292 -0
- package/package.json +2 -2
- package/web-ui/app.js +57 -129
- package/web-ui/modules/app.computed.main-tabs.mjs +304 -7
- package/web-ui/modules/app.computed.session.mjs +210 -0
- package/web-ui/modules/app.methods.agents.mjs +3 -0
- package/web-ui/modules/app.methods.claude-config.mjs +178 -22
- package/web-ui/modules/app.methods.codex-config.mjs +294 -65
- package/web-ui/modules/app.methods.navigation.mjs +71 -84
- package/web-ui/modules/app.methods.openclaw-editing.mjs +3 -6
- package/web-ui/modules/app.methods.providers.mjs +15 -1
- package/web-ui/modules/app.methods.runtime.mjs +7 -2
- package/web-ui/modules/app.methods.session-actions.mjs +25 -12
- package/web-ui/modules/app.methods.session-browser.mjs +23 -54
- package/web-ui/modules/app.methods.session-trash.mjs +0 -1
- package/web-ui/modules/app.methods.startup-claude.mjs +35 -17
- package/web-ui/modules/app.methods.task-orchestration.mjs +347 -8
- package/web-ui/modules/app.methods.tool-config-permissions.mjs +0 -3
- package/web-ui/modules/app.methods.web-ui-preferences.mjs +415 -68
- package/web-ui/modules/config-template-confirm-pref.mjs +2 -3
- package/web-ui/modules/i18n/locales/en.mjs +187 -28
- package/web-ui/modules/i18n/locales/ja.mjs +184 -25
- package/web-ui/modules/i18n/locales/vi.mjs +186 -33
- package/web-ui/modules/i18n/locales/zh-tw.mjs +187 -28
- package/web-ui/modules/i18n/locales/zh.mjs +189 -30
- package/web-ui/modules/i18n.mjs +5 -12
- package/web-ui/modules/provider-default-names.mjs +25 -0
- package/web-ui/modules/sessions-filters-url.mjs +1 -2
- package/web-ui/partials/index/layout-header.html +37 -14
- package/web-ui/partials/index/modal-health-check.html +69 -5
- package/web-ui/partials/index/panel-config-codex.html +2 -2
- package/web-ui/partials/index/panel-orchestration.html +489 -282
- package/web-ui/partials/index/panel-sessions.html +97 -17
- package/web-ui/res/web-ui-render.precompiled.js +1423 -732
- package/web-ui/session-helpers.mjs +4 -1
- package/web-ui/styles/layout-shell.css +157 -1
- package/web-ui/styles/navigation-panels.css +11 -0
- package/web-ui/styles/responsive.css +98 -0
- package/web-ui/styles/sessions-preview.css +212 -2
- package/web-ui/styles/sessions-toolbar-trash.css +61 -18
- package/web-ui/styles/skills-list.css +122 -0
- package/web-ui/styles/task-orchestration.css +2161 -4
- package/web-ui/styles/titles-cards.css +52 -0
|
@@ -108,6 +108,8 @@ const vi = Object.freeze({
|
|
|
108
108
|
'side.system': 'Hệ thống',
|
|
109
109
|
'side.orchestration': 'Tác vụ',
|
|
110
110
|
'side.skills': 'Skills',
|
|
111
|
+
'side.collapse': 'Thu gọn thanh bên',
|
|
112
|
+
'side.expand': 'Mở rộng thanh bên',
|
|
111
113
|
|
|
112
114
|
// Side rail items
|
|
113
115
|
'side.overview.doctor': 'Doctor',
|
|
@@ -217,7 +219,7 @@ const vi = Object.freeze({
|
|
|
217
219
|
'title.config': 'Bảng điều khiển cấu hình cục bộ',
|
|
218
220
|
'title.sessions': 'Phiên & Xuất',
|
|
219
221
|
'title.usage': 'Thống kê & Xu hướng',
|
|
220
|
-
'title.orchestration': '
|
|
222
|
+
'title.orchestration': 'Luồng tác vụ',
|
|
221
223
|
'title.market': 'Cài đặt & Đồng bộ Skills',
|
|
222
224
|
'title.plugins': 'Plugin & Mẫu',
|
|
223
225
|
'title.docs': 'Cài CLI & Tài liệu',
|
|
@@ -284,11 +286,15 @@ const vi = Object.freeze({
|
|
|
284
286
|
'modal.providerCache.errorDetails': 'Chi tiết lỗi',
|
|
285
287
|
'modal.providerCache.loadFailed': 'Không tải được bản ghi cache',
|
|
286
288
|
|
|
287
|
-
'orchestration.readiness.target.label': '
|
|
288
|
-
'orchestration.readiness.target.done': 'Đã
|
|
289
|
-
'orchestration.readiness.target.missing': 'Chưa
|
|
289
|
+
'orchestration.readiness.target.label': 'Tin nhắn tác vụ',
|
|
290
|
+
'orchestration.readiness.target.done': 'Đã có tin nhắn tác vụ',
|
|
291
|
+
'orchestration.readiness.target.missing': 'Chưa có tin nhắn tác vụ',
|
|
292
|
+
'orchestration.readiness.sequence.label': 'Thứ tự',
|
|
293
|
+
'orchestration.readiness.sequence.missing': 'Gửi yêu cầu 1 trước',
|
|
294
|
+
'orchestration.readiness.sequence.single': 'Hiện chỉ có yêu cầu 1; gửi tiếp để tạo yêu cầu 2.',
|
|
295
|
+
'orchestration.readiness.sequence.multiple': '{count} yêu cầu sẽ chạy theo thứ tự: hoàn tất yêu cầu 1 rồi tiếp tục yêu cầu 2.',
|
|
290
296
|
'orchestration.readiness.engine.label': 'Chiến lược chạy',
|
|
291
|
-
'orchestration.readiness.engine.
|
|
297
|
+
'orchestration.readiness.engine.openaiChat': 'Dùng node tương thích OpenAI Chat',
|
|
292
298
|
'orchestration.readiness.workflow.done': 'Đã chọn {count} Workflow',
|
|
293
299
|
'orchestration.readiness.workflow.missing': 'Chưa chọn Workflow ID',
|
|
294
300
|
'orchestration.readiness.scope.label': 'Phạm vi',
|
|
@@ -299,12 +305,13 @@ const vi = Object.freeze({
|
|
|
299
305
|
'orchestration.readiness.preview.missing': 'Chưa tạo kế hoạch',
|
|
300
306
|
'orchestration.readiness.preview.blocked': 'Có {count} mục chặn',
|
|
301
307
|
'orchestration.readiness.preview.ready': 'Kế hoạch sẵn sàng, {count} node',
|
|
302
|
-
'orchestration.readiness.empty.title': '
|
|
303
|
-
'orchestration.readiness.empty.summary': '
|
|
308
|
+
'orchestration.readiness.empty.title': 'Nhập mục tiêu tác vụ',
|
|
309
|
+
'orchestration.readiness.empty.summary': 'Xác định mục tiêu, ràng buộc và tiêu chí nghiệm thu.',
|
|
304
310
|
'orchestration.readiness.workflow.title': 'Thiếu Workflow',
|
|
305
311
|
'orchestration.readiness.workflow.summary': 'Bạn đã chọn chế độ Workflow nhưng chưa chỉ định quy trình tái sử dụng.',
|
|
306
|
-
'orchestration.readiness.preview.title': 'Nên xem trước
|
|
307
|
-
'orchestration.readiness.preview.summary': '
|
|
312
|
+
'orchestration.readiness.preview.title': 'Nên xem trước kế hoạch',
|
|
313
|
+
'orchestration.readiness.preview.summary': 'Mục tiêu đã có. Dùng /plan để kiểm tra node và phụ thuộc.',
|
|
314
|
+
'orchestration.readiness.preview.sequenceSummary': 'Bản nháp đã sẵn sàng với {count} yêu cầu theo thứ tự: hoàn tất yêu cầu 1 rồi tiếp tục yêu cầu 2.',
|
|
308
315
|
'orchestration.readiness.blocked.title': 'Bản xem trước có mục chặn',
|
|
309
316
|
'orchestration.readiness.blocked.summary': 'Kế hoạch hiện còn {count} mục chặn, hãy xử lý chúng trước.',
|
|
310
317
|
'orchestration.readiness.warn.title': 'Có thể chạy nhưng có cảnh báo',
|
|
@@ -312,8 +319,8 @@ const vi = Object.freeze({
|
|
|
312
319
|
'orchestration.readiness.dryRun.title': 'Phù hợp để chạy thử',
|
|
313
320
|
'orchestration.readiness.dryRun.summary': 'Bây giờ có thể chạy thử an toàn rồi xem kết quả trước khi chạy thật.',
|
|
314
321
|
'orchestration.readiness.ready.title': 'Sẵn sàng chạy',
|
|
315
|
-
'orchestration.readiness.ready.withFollowUps': '
|
|
316
|
-
'orchestration.readiness.ready.summary': 'Mục tiêu
|
|
322
|
+
'orchestration.readiness.ready.withFollowUps': '{count} yêu cầu theo thứ tự đã khóa: hoàn tất yêu cầu 1 rồi tiếp tục yêu cầu 2 với ngữ cảnh.',
|
|
323
|
+
'orchestration.readiness.ready.summary': 'Mục tiêu đã rõ. Có thể chạy hoặc đưa vào hàng đợi.',
|
|
317
324
|
|
|
318
325
|
// Settings panel
|
|
319
326
|
'settings.language.sideLabel': 'Ngôn ngữ: {language}',
|
|
@@ -402,6 +409,8 @@ const vi = Object.freeze({
|
|
|
402
409
|
'toast.apply.fail': 'Áp dụng cấu hình thất bại',
|
|
403
410
|
'toast.check.success': 'Kiểm tra thành công',
|
|
404
411
|
'toast.check.fail': 'Kiểm tra thất bại',
|
|
412
|
+
'toast.health.noFailedProviderSelection': 'Hãy chọn ít nhất một provider lỗi trước',
|
|
413
|
+
'toast.health.deleteFailedProvidersDone': 'Đã xóa {count} provider lỗi',
|
|
405
414
|
'toast.noChanges': 'Không phát hiện thay đổi',
|
|
406
415
|
'toast.template.loadFail': 'Tải mẫu thất bại',
|
|
407
416
|
'toast.template.empty': 'Mẫu không được để trống',
|
|
@@ -857,6 +866,32 @@ const vi = Object.freeze({
|
|
|
857
866
|
'sessions.preview.rerender': 'Render lại',
|
|
858
867
|
'sessions.preview.preparing': 'Đang chuẩn bị nội dung phiên...',
|
|
859
868
|
'sessions.preview.clipped': 'Chỉ hiển thị {count} tin nhắn mới nhất.',
|
|
869
|
+
'sessions.workspace.kicker': 'Bộ nhớ công việc',
|
|
870
|
+
'sessions.workspace.title': 'Tóm tắt tái sử dụng phiên',
|
|
871
|
+
'sessions.workspace.subtitle': 'Trích xuất tín hiệu, lệnh, tệp, liên kết và rủi ro từ {count} tin nhắn đã tải.',
|
|
872
|
+
'sessions.workspace.copy': 'Sao chép tóm tắt',
|
|
873
|
+
'sessions.workspace.copy.title': 'Tóm tắt không gian làm việc phiên',
|
|
874
|
+
'sessions.workspace.copy.source': 'Nguồn',
|
|
875
|
+
'sessions.workspace.copy.path': 'Đường dẫn',
|
|
876
|
+
'sessions.workspace.copy.empty': 'Chưa có tóm tắt phiên để sao chép',
|
|
877
|
+
'sessions.workspace.copy.success': 'Đã sao chép tóm tắt',
|
|
878
|
+
'sessions.workspace.metric.messages': 'Tin nhắn',
|
|
879
|
+
'sessions.workspace.metric.user': 'Người dùng',
|
|
880
|
+
'sessions.workspace.metric.assistant': 'Trợ lý',
|
|
881
|
+
'sessions.workspace.metric.commands': 'Lệnh',
|
|
882
|
+
'sessions.workspace.metric.artifacts': 'Tài liệu',
|
|
883
|
+
'sessions.workspace.metric.risks': 'Rủi ro / todo',
|
|
884
|
+
'sessions.workspace.signals': 'Tín hiệu tác vụ',
|
|
885
|
+
'sessions.workspace.commands': 'Lệnh có thể tái sử dụng',
|
|
886
|
+
'sessions.workspace.files': 'Tệp liên quan',
|
|
887
|
+
'sessions.workspace.links': 'Liên kết liên quan',
|
|
888
|
+
'sessions.workspace.risks': 'Rủi ro và todo',
|
|
889
|
+
'sessions.workspace.nextSteps': 'Bước tiếp theo',
|
|
890
|
+
'sessions.workspace.empty': 'Chưa có tín hiệu rõ ràng. Hãy xem tin nhắn gốc bên dưới.',
|
|
891
|
+
'sessions.workspace.noneCommands': 'Chưa có tín hiệu lệnh',
|
|
892
|
+
'sessions.workspace.noneFiles': 'Chưa có tín hiệu tệp',
|
|
893
|
+
'sessions.workspace.noneLinks': 'Chưa có tín hiệu liên kết',
|
|
894
|
+
'sessions.workspace.noneRisks': 'Chưa phát hiện rủi ro hoặc todo',
|
|
860
895
|
'sessions.preview.shownCount': 'Hiển thị {shown} / {total}',
|
|
861
896
|
'sessions.preview.loadMore': 'Tải thêm (còn lại {remain})',
|
|
862
897
|
'sessions.preview.loadingMore': 'Đang tải tin nhắn cũ hơn...',
|
|
@@ -1029,7 +1064,18 @@ const vi = Object.freeze({
|
|
|
1029
1064
|
'config.health.title': 'Kiểm tra sức khỏe cấu hình',
|
|
1030
1065
|
'config.health.run': 'Chạy kiểm tra',
|
|
1031
1066
|
'config.health.running': 'Đang kiểm tra...',
|
|
1032
|
-
'config.health.hint': '
|
|
1067
|
+
'config.health.hint': 'Chỉ kiểm tra nhà cung cấp đang chọn; lỗi từ nhà cung cấp chưa chọn không tính vào lần kiểm tra này.',
|
|
1068
|
+
'config.health.codexHint': 'Kiểm tra provider route Codex hiện tại, endpoint, xác thực và model qua local bridge.',
|
|
1069
|
+
'config.health.providersSummary': 'Provider: tổng {total} · OK {green} · lỗi cấu hình {yellow} · thất bại {red}',
|
|
1070
|
+
'config.health.failedProviders.title': 'Provider lỗi có thể xóa',
|
|
1071
|
+
'config.health.failedProviders.selectAria': 'Chọn provider lỗi {name} để xóa',
|
|
1072
|
+
'config.health.failedProviders.clearSelection': 'Bỏ chọn',
|
|
1073
|
+
'config.health.failedProviders.selectAll': 'Chọn tất cả',
|
|
1074
|
+
'config.health.failedProviders.selectAllAria': 'Chọn tất cả provider lỗi có thể xóa',
|
|
1075
|
+
'config.health.failedProviders.notDeletable': 'Provider hệ thống/được giữ lại; không thể xóa tại đây.',
|
|
1076
|
+
'config.health.failedProviders.writeRequired': 'Bật quyền ghi provider trong tab này trước khi xóa.',
|
|
1077
|
+
'config.health.failedProviders.deleteSelected': 'Xóa cấu hình đã chọn',
|
|
1078
|
+
'config.health.failedProviders.deleting': 'Đang xóa...',
|
|
1033
1079
|
'config.health.progress': '{done}/{total} xong · {failed} thất bại',
|
|
1034
1080
|
'config.health.ok': 'Đạt',
|
|
1035
1081
|
'config.health.fail': 'Thất bại',
|
|
@@ -1050,9 +1096,91 @@ const vi = Object.freeze({
|
|
|
1050
1096
|
'usage.range.7d.short': '7 ngày qua',
|
|
1051
1097
|
'usage.range.30d.short': '30 ngày qua',
|
|
1052
1098
|
'orchestration.queueStats': 'Hàng đợi: {running} đang chạy · {queued} đang chờ',
|
|
1099
|
+
'orchestration.rebuilding.status': 'Tạm dừng',
|
|
1100
|
+
'orchestration.rebuilding.title': 'Đang xây lại',
|
|
1101
|
+
'orchestration.rebuilding.body': 'Lối vào điều phối tác vụ chỉ hiển thị và hiện chưa thể bấm.',
|
|
1053
1102
|
'orchestration.hero.kicker': 'Điều phối tác vụ',
|
|
1054
|
-
'orchestration.hero.title': '
|
|
1055
|
-
'orchestration.hero.subtitle': '
|
|
1103
|
+
'orchestration.hero.title': 'Điều phối tác vụ',
|
|
1104
|
+
'orchestration.hero.subtitle': 'Lập kế hoạch, chạy và theo dõi tác vụ với ngữ cảnh workspace/thread.',
|
|
1105
|
+
'orchestration.quick.kicker': 'Nhập tác vụ',
|
|
1106
|
+
'orchestration.quick.title': 'Nhập mục tiêu tác vụ',
|
|
1107
|
+
'orchestration.quick.subtitle': 'Mô tả mục tiêu, ràng buộc và tiêu chí nghiệm thu. Dùng /plan để xem trước trước khi chạy.',
|
|
1108
|
+
'orchestration.quick.caption': 'Enter thêm yêu cầu; /plan xem trước; Bắt đầu chạy sẽ lập kế hoạch và chạy.',
|
|
1109
|
+
'orchestration.quick.templates.reviewFix.meta': 'Sửa góp ý review và kiểm thử hồi quy.',
|
|
1110
|
+
'orchestration.quick.templates.planOnly.meta': 'Chỉ điều tra và lập kế hoạch, không ghi file.',
|
|
1111
|
+
'orchestration.quick.templates.workflowBatch.meta': 'Dùng Workflow cục bộ cho kiểm tra lặp lại.',
|
|
1112
|
+
'orchestration.chat.input.label': 'Tin nhắn tác vụ',
|
|
1113
|
+
'orchestration.chat.input.placeholder': 'Mô tả mục tiêu, ràng buộc và tiêu chí nghiệm thu. Gõ /plan để xem trước.',
|
|
1114
|
+
'orchestration.chat.input.hint': 'Workspace, thread và chế độ chạy có thể chỉnh trong Nâng cao.',
|
|
1115
|
+
'orchestration.chat.context.aria': 'Ngữ cảnh tác vụ',
|
|
1116
|
+
'orchestration.chat.context.workspace.auto': 'Tự phát hiện workspace',
|
|
1117
|
+
'orchestration.chat.context.workspace.value': 'Workspace {value}',
|
|
1118
|
+
'orchestration.chat.context.thread.auto': 'Tự tạo thread',
|
|
1119
|
+
'orchestration.chat.context.thread.value': 'Thread {value}',
|
|
1120
|
+
'orchestration.chat.context.sequence.empty': 'Thứ tự: chờ yêu cầu 1',
|
|
1121
|
+
'orchestration.chat.context.sequence.value': 'Thứ tự: {count} yêu cầu',
|
|
1122
|
+
'orchestration.privacy.workspace.selected': 'Đã chọn workspace',
|
|
1123
|
+
'orchestration.privacy.thread.selected': 'Đã chọn thread',
|
|
1124
|
+
'orchestration.chat.thread.aria': 'Cuộc trò chuyện tác vụ',
|
|
1125
|
+
'orchestration.chat.input.send': 'Thêm yêu cầu',
|
|
1126
|
+
'orchestration.chat.input.discuss': 'Xem trước kế hoạch',
|
|
1127
|
+
'orchestration.chat.input.work': 'Bắt đầu chạy',
|
|
1128
|
+
'orchestration.chat.input.firstHint': 'Nội dung này sẽ thành yêu cầu 1.',
|
|
1129
|
+
'orchestration.chat.input.sequenceHint': 'Gửi bây giờ sẽ thành yêu cầu {count}.',
|
|
1130
|
+
'orchestration.chat.input.workHint': 'Nội dung hiện tại sẽ được đưa vào trước khi chạy.',
|
|
1131
|
+
'orchestration.chat.input.workCaption': 'Enter thêm yêu cầu; /plan chỉ xem trước; Bắt đầu chạy sẽ lập kế hoạch và chạy.',
|
|
1132
|
+
'orchestration.chat.assistant.contextLabel': 'Ngữ cảnh trước đó',
|
|
1133
|
+
'orchestration.chat.assistant.contextFallback': 'Đã chọn một tác vụ cũ. Khi tiếp tục, Codexmate sẽ kế thừa thread và workspace của tác vụ đó.',
|
|
1134
|
+
'orchestration.chat.assistant.resultLabel': 'Kết quả',
|
|
1135
|
+
'orchestration.chat.assistant.filesSummary': 'Thao tác file: {files}',
|
|
1136
|
+
'orchestration.chat.assistant.readyLabel': 'Codexmate',
|
|
1137
|
+
'orchestration.chat.assistant.empty': 'Gửi yêu cầu đầu tiên. Nếu còn yêu cầu thứ hai, hãy gửi tiếp; Codexmate sẽ giữ ngữ cảnh và xử lý theo thứ tự.',
|
|
1138
|
+
'orchestration.chat.assistant.planLabel': 'Xem trước kế hoạch',
|
|
1139
|
+
'orchestration.chat.assistant.planSummary': 'Đã tạo kế hoạch: {nodes} node trong {waves} lượt.',
|
|
1140
|
+
'orchestration.chat.assistant.sequenceReady': 'Đã nhận nhiều yêu cầu. Codexmate sẽ hoàn tất yêu cầu 1 trước, rồi tiếp tục với ngữ cảnh còn lại.',
|
|
1141
|
+
'orchestration.chat.assistant.singleReady': 'Đã nhận yêu cầu đầu tiên. Có thể thêm yêu cầu 2 hoặc xem trước và chạy ngay.',
|
|
1142
|
+
'orchestration.chat.user.step': 'Yêu cầu {count}',
|
|
1143
|
+
'orchestration.chat.meta.thread': 'Thread {value}',
|
|
1144
|
+
'orchestration.chat.meta.workspace': 'Workspace {value}',
|
|
1145
|
+
'orchestration.chat.meta.order': 'Chạy tuần tự · giữ ngữ cảnh',
|
|
1146
|
+
'orchestration.chat.meta.first': 'Hoàn tất mục này trước',
|
|
1147
|
+
'orchestration.chat.meta.afterPrevious': 'Tiếp tục sau khi yêu cầu trước hoàn tất',
|
|
1148
|
+
'orchestration.chat.meta.contextKept': 'Ngữ cảnh được giữ trong thread',
|
|
1149
|
+
'orchestration.chat.meta.previewNext': 'Tiếp theo: xem trước kế hoạch',
|
|
1150
|
+
'orchestration.quick.checklist.title': 'Kiểm tra sẵn sàng',
|
|
1151
|
+
'orchestration.quick.checklist.subtitle': 'Chỉ hiển thị blocker ảnh hưởng tới việc chạy.',
|
|
1152
|
+
'orchestration.quick.status.title': 'Bản nháp hiện tại',
|
|
1153
|
+
'orchestration.workspace.aria': 'Workspace và bản ghi',
|
|
1154
|
+
'orchestration.workspace.title': 'Workspace',
|
|
1155
|
+
'orchestration.workspace.subtitle': 'Chọn dự án và tiếp tục bản ghi.',
|
|
1156
|
+
'orchestration.workspace.selector': 'Bộ chọn workspace',
|
|
1157
|
+
'orchestration.workspace.counts': '{runs} runs · {queue} queue',
|
|
1158
|
+
'orchestration.workspace.newSession': '+ Mới',
|
|
1159
|
+
'orchestration.workspace.sessions.title': 'Bản ghi',
|
|
1160
|
+
'orchestration.workspace.sessions.empty.title': 'Chưa có bản ghi cho dự án này',
|
|
1161
|
+
'orchestration.workspace.sessions.empty.subtitle': 'Tạo bản ghi mới hoặc làm mới để tải lần chạy hiện có.',
|
|
1162
|
+
'orchestration.workspace.sessions.queueTitle': 'Mục hàng đợi',
|
|
1163
|
+
'orchestration.workspace.sessions.runTitle': 'Bản ghi chạy',
|
|
1164
|
+
'orchestration.workspace.sessions.detailsHidden': 'Đã ẩn chi tiết',
|
|
1165
|
+
'orchestration.workspace.pathHidden': 'Đã ẩn đường dẫn',
|
|
1166
|
+
'orchestration.agent.aria': 'Trạng thái điều phối tác vụ',
|
|
1167
|
+
'orchestration.agent.kicker': 'Điều phối tác vụ',
|
|
1168
|
+
'orchestration.agent.title': 'Console điều phối tác vụ',
|
|
1169
|
+
'orchestration.agent.subtitle': 'Chọn workspace và bản ghi, chạy tác vụ và xem chi tiết thực thi.',
|
|
1170
|
+
'orchestration.agent.state.ready': 'Ready',
|
|
1171
|
+
'orchestration.agent.state.planning': 'Planning',
|
|
1172
|
+
'orchestration.agent.state.running': 'Running',
|
|
1173
|
+
'orchestration.agent.surface.workspace': 'Workspace',
|
|
1174
|
+
'orchestration.agent.surface.session': 'Context',
|
|
1175
|
+
'orchestration.agent.surface.mode': 'Mode',
|
|
1176
|
+
'orchestration.agent.surface.trace': 'Trace',
|
|
1177
|
+
'orchestration.agent.surface.runs': 'runs',
|
|
1178
|
+
'orchestration.agent.surface.queue': 'queued',
|
|
1179
|
+
'orchestration.agent.trace.title': 'Live trace',
|
|
1180
|
+
'orchestration.agent.trace.plan': 'Plan nodes',
|
|
1181
|
+
'orchestration.agent.trace.queue': 'Queue',
|
|
1182
|
+
'orchestration.agent.trace.runs': 'Runs',
|
|
1183
|
+
'orchestration.agent.trace.nodes': 'Run nodes',
|
|
1056
1184
|
'orchestration.draft.reset': 'Đặt lại bản nháp',
|
|
1057
1185
|
'orchestration.summary.aria': 'Tóm tắt điều phối tác vụ',
|
|
1058
1186
|
'orchestration.summary.running': 'Đang chạy',
|
|
@@ -1072,14 +1200,15 @@ const vi = Object.freeze({
|
|
|
1072
1200
|
'orchestration.templates.workflowBatch.target': 'Chạy một bộ kiểm tra cố định bằng workflow và tóm tắt kết quả',
|
|
1073
1201
|
'orchestration.templates.workflowBatch.workflowIds': 'diagnose-config\\nsafe-provider-switch',
|
|
1074
1202
|
'orchestration.templates.workflowBatch.notes': 'Đưa ra kết luận thống nhất; tránh diễn giải lặp lại',
|
|
1075
|
-
'orchestration.fields.target': '
|
|
1076
|
-
'orchestration.fields.target.placeholder': 'vd:
|
|
1077
|
-
'orchestration.fields.target.hint': 'Một
|
|
1078
|
-
'orchestration.engine.
|
|
1203
|
+
'orchestration.fields.target': 'Tin nhắn tác vụ',
|
|
1204
|
+
'orchestration.fields.target.placeholder': 'vd: sửa comment review PR hiện tại, thêm test regression và tránh module không liên quan',
|
|
1205
|
+
'orchestration.fields.target.hint': 'Một tin nhắn kiểu chat là đủ: kết quả, ràng buộc và tiêu chí chấp nhận.',
|
|
1206
|
+
'orchestration.engine.openaiChat': 'OpenAI Chat',
|
|
1079
1207
|
'orchestration.engine.workflow': 'Workflow',
|
|
1080
1208
|
'orchestration.runMode.write': 'Ghi',
|
|
1081
1209
|
'orchestration.runMode.readOnly': 'Chỉ đọc',
|
|
1082
1210
|
'orchestration.runMode.dryRun': 'Thử nghiệm',
|
|
1211
|
+
'orchestration.pills.sequenceCount': 'Yêu cầu tuần tự {count}',
|
|
1083
1212
|
'orchestration.pills.hasTitle': 'Có tiêu đề',
|
|
1084
1213
|
'orchestration.pills.workflowCount': 'Workflows {count}',
|
|
1085
1214
|
'orchestration.pills.planNodes': 'Kế hoạch {count} nút',
|
|
@@ -1088,11 +1217,18 @@ const vi = Object.freeze({
|
|
|
1088
1217
|
'orchestration.fields.engine': 'Engine',
|
|
1089
1218
|
'orchestration.fields.runMode': 'Chế độ chạy',
|
|
1090
1219
|
'orchestration.advanced.title': 'Nâng cao',
|
|
1220
|
+
'orchestration.advanced.open': 'Cài đặt',
|
|
1091
1221
|
'orchestration.fields.title': 'Tiêu đề',
|
|
1092
1222
|
'orchestration.fields.title.placeholder': 'Tùy chọn. Mặc định là tiêu đề suy ra từ mục tiêu.',
|
|
1093
1223
|
'orchestration.fields.notes': 'Ghi chú',
|
|
1094
1224
|
'orchestration.fields.notes.placeholder': 'vd: Chỉ thay đổi tăng dần; không viết lại kiến trúc',
|
|
1095
1225
|
'orchestration.fields.notes.hint': 'Thêm ranh giới, ràng buộc, quy tắc style hoặc yêu cầu xác minh.',
|
|
1226
|
+
'orchestration.fields.workspacePath': 'Workspace path',
|
|
1227
|
+
'orchestration.fields.workspacePath.placeholder': 'e.g. /home/me/project',
|
|
1228
|
+
'orchestration.fields.workspacePath.hint': 'Plan, run, and queue use this cwd; leave blank to use the server current directory.',
|
|
1229
|
+
'orchestration.fields.threadId': 'Task thread ID',
|
|
1230
|
+
'orchestration.fields.threadId.placeholder': 'Optional; generated automatically when empty',
|
|
1231
|
+
'orchestration.fields.threadId.hint': 'Use the same thread for follow-up requirements, retries, and queue tracking.',
|
|
1096
1232
|
'orchestration.fields.followUps': 'Theo dõi (mỗi dòng một mục)',
|
|
1097
1233
|
'orchestration.fields.followUps.placeholder': 'vd:\\nXử lý comment review mới\\nThêm test regression',
|
|
1098
1234
|
'orchestration.fields.concurrency': 'Đồng thời',
|
|
@@ -1108,33 +1244,37 @@ const vi = Object.freeze({
|
|
|
1108
1244
|
'orchestration.actions.planning': 'Đang lập kế hoạch...',
|
|
1109
1245
|
'orchestration.actions.previewOnly': 'Chỉ xem trước',
|
|
1110
1246
|
'orchestration.actions.preparing': 'Đang chuẩn bị...',
|
|
1111
|
-
'orchestration.actions.generatePlan': '
|
|
1112
|
-
'orchestration.actions.planAndRun': '
|
|
1247
|
+
'orchestration.actions.generatePlan': 'Gửi /plan',
|
|
1248
|
+
'orchestration.actions.planAndRun': 'Xem /plan rồi chạy',
|
|
1113
1249
|
'orchestration.actions.processing': 'Đang xử lý...',
|
|
1114
1250
|
'orchestration.actions.queueAndStart': 'Xếp hàng & bắt đầu',
|
|
1115
|
-
'orchestration.actions.caption': '
|
|
1116
|
-
'orchestration.stage.title': '
|
|
1117
|
-
'orchestration.stage.subtitle': '
|
|
1118
|
-
'orchestration.stage.pill.target': 'Viết
|
|
1251
|
+
'orchestration.actions.caption': 'Khi chạy, kế hoạch được làm mới nếu cần; dùng hàng đợi cho tác vụ hàng loạt.',
|
|
1252
|
+
'orchestration.stage.title': 'Giai đoạn tác vụ',
|
|
1253
|
+
'orchestration.stage.subtitle': 'Nhập mục tiêu, xem trước kế hoạch, rồi chạy.',
|
|
1254
|
+
'orchestration.stage.pill.target': 'Viết tin nhắn',
|
|
1119
1255
|
'orchestration.stage.pill.preview': 'Xem trước',
|
|
1120
1256
|
'orchestration.stage.pill.run': 'Chạy hoặc xếp hàng',
|
|
1121
1257
|
'orchestration.plan.title': 'Xem trước kế hoạch',
|
|
1122
|
-
'orchestration.plan.subtitle': 'Xác nhận
|
|
1258
|
+
'orchestration.plan.subtitle': 'Xác nhận node, lượt chạy và phụ thuộc.',
|
|
1123
1259
|
'orchestration.plan.summary.nodes': 'Nút',
|
|
1124
1260
|
'orchestration.plan.summary.waves': 'Đợt',
|
|
1125
1261
|
'orchestration.plan.summary.engine': 'Engine',
|
|
1262
|
+
'orchestration.plan.summary.threadId': 'Thread ID',
|
|
1263
|
+
'orchestration.plan.summary.cwd': 'Workspace',
|
|
1126
1264
|
'orchestration.plan.node.write': 'ghi',
|
|
1127
1265
|
'orchestration.plan.node.readOnly': 'chỉ đọc',
|
|
1128
1266
|
'orchestration.labels.dependencies': 'Phụ thuộc: ',
|
|
1129
1267
|
'orchestration.labels.error': 'Lỗi: ',
|
|
1130
1268
|
'orchestration.workbench.title': 'Bàn làm việc',
|
|
1131
|
-
'orchestration.workbench.subtitle': '
|
|
1269
|
+
'orchestration.workbench.subtitle': 'Hiển thị hàng đợi, lịch sử chạy và chi tiết node.',
|
|
1132
1270
|
'orchestration.queue.start': 'Bắt đầu hàng đợi',
|
|
1133
1271
|
'orchestration.queue.starting': 'Đang bắt đầu...',
|
|
1134
1272
|
'orchestration.workbench.tabs.aria': 'Chế độ xem bàn làm việc',
|
|
1135
1273
|
'orchestration.workbench.tabs.queue': 'Hàng đợi {count}',
|
|
1136
1274
|
'orchestration.workbench.tabs.runs': 'Lần chạy {count}',
|
|
1137
1275
|
'orchestration.workbench.tabs.detail': 'Chi tiết lần chạy',
|
|
1276
|
+
'orchestration.workbench.queueCount': '{count} đang chờ',
|
|
1277
|
+
'orchestration.workbench.ready': 'Sẵn sàng',
|
|
1138
1278
|
'orchestration.queue.empty.title': 'Không có tác vụ trong hàng đợi',
|
|
1139
1279
|
'orchestration.queue.empty.subtitle': 'Xếp hàng tác vụ hàng loạt trước, rồi bắt đầu runner.',
|
|
1140
1280
|
'orchestration.runs.empty.title': 'Chưa có lần chạy nào',
|
|
@@ -1142,13 +1282,32 @@ const vi = Object.freeze({
|
|
|
1142
1282
|
'orchestration.detail.refresh': 'Làm mới chi tiết',
|
|
1143
1283
|
'orchestration.detail.retry': 'Thử lại',
|
|
1144
1284
|
'orchestration.detail.retrying': 'Đang thử lại...',
|
|
1285
|
+
'orchestration.detail.continueThread': 'Continue thread',
|
|
1145
1286
|
'orchestration.detail.empty.title': 'Chọn một lần chạy để xem chi tiết',
|
|
1146
1287
|
'orchestration.detail.empty.subtitle': 'Chế độ xem này hiển thị trạng thái nút, tóm tắt và log.',
|
|
1147
1288
|
'orchestration.detail.summary.status': 'Trạng thái',
|
|
1148
1289
|
'orchestration.detail.summary.duration': 'Thời gian',
|
|
1149
1290
|
'orchestration.detail.summary.nodes': 'Nút',
|
|
1150
1291
|
'orchestration.detail.summary.summary': 'Tóm tắt',
|
|
1292
|
+
'orchestration.detail.context.aria': 'Ngữ cảnh lượt chạy tác vụ',
|
|
1293
|
+
'orchestration.detail.context.run': 'Run ID',
|
|
1151
1294
|
'orchestration.detail.node.meta': '{id} · thử {attempts} lần · tự sửa {autoFix}',
|
|
1295
|
+
'orchestration.openai.status.title': 'Cấu hình chạy OpenAI Chat',
|
|
1296
|
+
'orchestration.openai.status.subtitle': 'Node tác vụ dùng provider OpenClaw hiện tại; kiểm tra base URL, API key và model trước khi chạy.',
|
|
1297
|
+
'orchestration.openai.status.provider': 'Provider',
|
|
1298
|
+
'orchestration.openai.status.model': 'Model',
|
|
1299
|
+
'orchestration.openai.status.endpoint': 'Endpoint',
|
|
1300
|
+
'orchestration.openai.status.apiKey': 'API Key',
|
|
1301
|
+
'orchestration.openai.status.headers': 'Headers thêm',
|
|
1302
|
+
'orchestration.openai.status.configured': 'Đã cấu hình',
|
|
1303
|
+
'orchestration.openai.status.missing': 'Thiếu',
|
|
1304
|
+
'orchestration.openai.status.notSet': 'Chưa đặt',
|
|
1305
|
+
'orchestration.openai.status.notLoaded': 'Làm mới để tải trạng thái sẵn sàng OpenAI Chat.',
|
|
1306
|
+
'orchestration.openai.status.configure': 'Cấu hình OpenAI Chat',
|
|
1307
|
+
'orchestration.detail.node.output': 'AI output',
|
|
1308
|
+
'orchestration.detail.node.endpoint': 'Endpoint: ',
|
|
1309
|
+
'orchestration.detail.node.materializedFiles': 'File đã tạo:',
|
|
1310
|
+
'orchestration.detail.node.workspaceFiles': 'File workspace:',
|
|
1152
1311
|
'skills.localLabel': '{target} / Skills cục bộ',
|
|
1153
1312
|
'skills.counts': '{installed} đã cài · {importable} có thể nhập',
|
|
1154
1313
|
'status.currentSource': 'Nguồn hiện tại',
|
|
@@ -1180,10 +1339,6 @@ const vi = Object.freeze({
|
|
|
1180
1339
|
'settings.tab.data': 'Dữ liệu',
|
|
1181
1340
|
'settings.tabs.aria': 'Danh mục cài đặt',
|
|
1182
1341
|
'settings.quickSettings.title': 'Cài đặt nhanh',
|
|
1183
|
-
'settings.sharePrefix.title': 'Tiền tố lệnh chia sẻ',
|
|
1184
|
-
'settings.sharePrefix.meta': 'Dùng làm tiền tố cho "Sao chép lệnh chia sẻ" trong Web UI',
|
|
1185
|
-
'settings.sharePrefix.label': 'Tiền tố',
|
|
1186
|
-
'settings.sharePrefix.hint': 'Mặc định là npm start (local). Bạn có thể chuyển sang codexmate toàn cục. Cài đặt này được lưu trong trình duyệt.',
|
|
1187
1342
|
'settings.claude.title': 'Cấu hình Claude',
|
|
1188
1343
|
'settings.claude.meta': 'Sao lưu / nhập ~/.claude',
|
|
1189
1344
|
'settings.codex.title': 'Cấu hình Codex',
|
|
@@ -1219,8 +1374,6 @@ const vi = Object.freeze({
|
|
|
1219
1374
|
'settings.trash.retentionMeta': 'Mục trong thùng rác cũ hơn số ngày lưu giữ sẽ tự động bị xóa',
|
|
1220
1375
|
'settings.trash.retentionLabel': 'Số ngày lưu giữ',
|
|
1221
1376
|
'settings.trash.retentionHint': 'Phạm vi 1-365 ngày, mặc định 30. Mục hết hạn bị xóa khi tải thùng rác.',
|
|
1222
|
-
'settings.trashConfig.title': 'Cấu hình thùng rác',
|
|
1223
|
-
'settings.trashConfig.meta': 'Bật/tắt thùng rác và số ngày tự động dọn dẹp',
|
|
1224
1377
|
'settings.templateConfirm.title': 'Xác nhận áp dụng template',
|
|
1225
1378
|
'settings.templateConfirm.meta': 'Giảm ghi nhầm',
|
|
1226
1379
|
'settings.templateConfirm.toggle': 'Xem trước diff trước khi áp dụng (Xác nhận → Áp dụng)',
|
|
@@ -1284,7 +1437,7 @@ const vi = Object.freeze({
|
|
|
1284
1437
|
'claude.health.title': 'Kiểm tra sức khỏe cấu hình',
|
|
1285
1438
|
'claude.health.run': 'Chạy kiểm tra',
|
|
1286
1439
|
'claude.health.running': 'Đang kiểm tra...',
|
|
1287
|
-
'claude.health.hint': '
|
|
1440
|
+
'claude.health.hint': 'Chỉ kiểm tra cấu hình Claude đang chọn; lỗi từ cấu hình chưa chọn không tính vào lần kiểm tra này.',
|
|
1288
1441
|
'claude.health.progress': '{done}/{total} xong · {failed} thất bại',
|
|
1289
1442
|
'claude.md.title': 'CLAUDE.md',
|
|
1290
1443
|
'claude.md.open': 'Mở CLAUDE.md',
|