codexmate 0.0.56 → 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.
Files changed (31) hide show
  1. package/cli.js +680 -129
  2. package/lib/task-orchestrator.js +90 -21
  3. package/lib/task-workspace-chat.js +292 -0
  4. package/package.json +2 -2
  5. package/web-ui/app.js +55 -129
  6. package/web-ui/modules/app.computed.main-tabs.mjs +304 -7
  7. package/web-ui/modules/app.methods.agents.mjs +3 -0
  8. package/web-ui/modules/app.methods.claude-config.mjs +65 -25
  9. package/web-ui/modules/app.methods.navigation.mjs +67 -83
  10. package/web-ui/modules/app.methods.openclaw-editing.mjs +3 -6
  11. package/web-ui/modules/app.methods.session-actions.mjs +1 -12
  12. package/web-ui/modules/app.methods.session-browser.mjs +23 -54
  13. package/web-ui/modules/app.methods.session-trash.mjs +0 -1
  14. package/web-ui/modules/app.methods.startup-claude.mjs +16 -31
  15. package/web-ui/modules/app.methods.task-orchestration.mjs +347 -8
  16. package/web-ui/modules/app.methods.tool-config-permissions.mjs +0 -3
  17. package/web-ui/modules/app.methods.web-ui-preferences.mjs +415 -68
  18. package/web-ui/modules/config-template-confirm-pref.mjs +2 -3
  19. package/web-ui/modules/i18n/locales/en.mjs +146 -26
  20. package/web-ui/modules/i18n/locales/ja.mjs +143 -23
  21. package/web-ui/modules/i18n/locales/vi.mjs +145 -25
  22. package/web-ui/modules/i18n/locales/zh-tw.mjs +146 -26
  23. package/web-ui/modules/i18n/locales/zh.mjs +148 -28
  24. package/web-ui/modules/i18n.mjs +5 -12
  25. package/web-ui/modules/sessions-filters-url.mjs +1 -2
  26. package/web-ui/partials/index/layout-header.html +37 -14
  27. package/web-ui/partials/index/panel-orchestration.html +489 -282
  28. package/web-ui/res/web-ui-render.precompiled.js +1049 -610
  29. package/web-ui/styles/layout-shell.css +157 -1
  30. package/web-ui/styles/navigation-panels.css +11 -0
  31. package/web-ui/styles/task-orchestration.css +2161 -4
@@ -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': 'Điều phối tác vụ',
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': 'Mục tiêu',
288
- 'orchestration.readiness.target.done': 'Đã viết mục tiêu',
289
- 'orchestration.readiness.target.missing': 'Chưa viết mục tiêu',
289
+ 'orchestration.readiness.target.label': 'Tin nhắn tác vụ',
290
+ 'orchestration.readiness.target.done': 'Đã tin nhắn tác vụ',
291
+ 'orchestration.readiness.target.missing': 'Chưa 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.codex': 'Dùng Codex để lập kế hoạch node',
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': 'Viết mục tiêu trước',
303
- 'orchestration.readiness.empty.summary': ' tả kết quả cần đạt, rồi để bộ điều phối tách thành các node.',
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 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 trước',
307
- 'orchestration.readiness.preview.summary': 'Bản nháp đã đủ hình hài; hãy tạo kế hoạch để kiểm tra node và phụ thuộc.',
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': 'Mục tiêu chính hành động tiếp theo đã sẵn sàng; thể chạy ngay hoặc đưa vào hàng đợi.',
316
- 'orchestration.readiness.ready.summary': 'Mục tiêu chính đã đủ rõ; thể chạy ngay hoặc đưa vào hàng đợi.',
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õ. 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}',
@@ -1089,9 +1096,91 @@ const vi = Object.freeze({
1089
1096
  'usage.range.7d.short': '7 ngày qua',
1090
1097
  'usage.range.30d.short': '30 ngày qua',
1091
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.',
1092
1102
  'orchestration.hero.kicker': 'Điều phối tác vụ',
1093
- 'orchestration.hero.title': 'Biến mục tiêu thành các bước thực thi',
1094
- 'orchestration.hero.subtitle': 'Viết mục tiêu, xem trước kế hoạch, rồi chạy.',
1103
+ 'orchestration.hero.title': 'Điều phối tác vụ',
1104
+ 'orchestration.hero.subtitle': 'Lập kế hoạch, chạy 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',
1095
1184
  'orchestration.draft.reset': 'Đặt lại bản nháp',
1096
1185
  'orchestration.summary.aria': 'Tóm tắt điều phối tác vụ',
1097
1186
  'orchestration.summary.running': 'Đang chạy',
@@ -1111,14 +1200,15 @@ const vi = Object.freeze({
1111
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ả',
1112
1201
  'orchestration.templates.workflowBatch.workflowIds': 'diagnose-config\\nsafe-provider-switch',
1113
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',
1114
- 'orchestration.fields.target': 'Mục tiêu',
1115
- 'orchestration.fields.target.placeholder': 'vd: Xử comment review PR thêm test regression; tránh các module không liên quan',
1116
- 'orchestration.fields.target.hint': 'Một câu là đủ: kết quả, ràng buộc và tiêu chí chấp nhận.',
1117
- 'orchestration.engine.codex': 'Codex',
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 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',
1118
1207
  'orchestration.engine.workflow': 'Workflow',
1119
1208
  'orchestration.runMode.write': 'Ghi',
1120
1209
  'orchestration.runMode.readOnly': 'Chỉ đọc',
1121
1210
  'orchestration.runMode.dryRun': 'Thử nghiệm',
1211
+ 'orchestration.pills.sequenceCount': 'Yêu cầu tuần tự {count}',
1122
1212
  'orchestration.pills.hasTitle': 'Có tiêu đề',
1123
1213
  'orchestration.pills.workflowCount': 'Workflows {count}',
1124
1214
  'orchestration.pills.planNodes': 'Kế hoạch {count} nút',
@@ -1127,11 +1217,18 @@ const vi = Object.freeze({
1127
1217
  'orchestration.fields.engine': 'Engine',
1128
1218
  'orchestration.fields.runMode': 'Chế độ chạy',
1129
1219
  'orchestration.advanced.title': 'Nâng cao',
1220
+ 'orchestration.advanced.open': 'Cài đặt',
1130
1221
  'orchestration.fields.title': 'Tiêu đề',
1131
1222
  'orchestration.fields.title.placeholder': 'Tùy chọn. Mặc định là tiêu đề suy ra từ mục tiêu.',
1132
1223
  'orchestration.fields.notes': 'Ghi chú',
1133
1224
  'orchestration.fields.notes.placeholder': 'vd: Chỉ thay đổi tăng dần; không viết lại kiến trúc',
1134
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.',
1135
1232
  'orchestration.fields.followUps': 'Theo dõi (mỗi dòng một mục)',
1136
1233
  'orchestration.fields.followUps.placeholder': 'vd:\\nXử lý comment review mới\\nThêm test regression',
1137
1234
  'orchestration.fields.concurrency': 'Đồng thời',
@@ -1147,33 +1244,37 @@ const vi = Object.freeze({
1147
1244
  'orchestration.actions.planning': 'Đang lập kế hoạch...',
1148
1245
  'orchestration.actions.previewOnly': 'Chỉ xem trước',
1149
1246
  'orchestration.actions.preparing': 'Đang chuẩn bị...',
1150
- 'orchestration.actions.generatePlan': 'Tạo kế hoạch',
1151
- 'orchestration.actions.planAndRun': 'Lập kế hoạch & chạy',
1247
+ 'orchestration.actions.generatePlan': 'Gửi /plan',
1248
+ 'orchestration.actions.planAndRun': 'Xem /plan rồi chạy',
1152
1249
  'orchestration.actions.processing': 'Đang xử lý...',
1153
1250
  'orchestration.actions.queueAndStart': 'Xếp hàng & bắt đầu',
1154
- 'orchestration.actions.caption': '"Lập kế hoạch & chạy" làm mới kế hoạch khi cần; dùng "Xếp hàng & bắt đầu" cho chạy hàng loạt.',
1155
- 'orchestration.stage.title': 'Không gian làm việc mở khi có dữ liệu',
1156
- 'orchestration.stage.subtitle': 'Viết mục tiêu trước, rồi xem trước kế hoạch.',
1157
- 'orchestration.stage.pill.target': 'Viết mục tiêu',
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',
1158
1255
  'orchestration.stage.pill.preview': 'Xem trước',
1159
1256
  'orchestration.stage.pill.run': 'Chạy hoặc xếp hàng',
1160
1257
  'orchestration.plan.title': 'Xem trước kế hoạch',
1161
- 'orchestration.plan.subtitle': 'Xác nhận nút, đợt và phụ thuộc.',
1258
+ 'orchestration.plan.subtitle': 'Xác nhận node, lượt chạy và phụ thuộc.',
1162
1259
  'orchestration.plan.summary.nodes': 'Nút',
1163
1260
  'orchestration.plan.summary.waves': 'Đợt',
1164
1261
  'orchestration.plan.summary.engine': 'Engine',
1262
+ 'orchestration.plan.summary.threadId': 'Thread ID',
1263
+ 'orchestration.plan.summary.cwd': 'Workspace',
1165
1264
  'orchestration.plan.node.write': 'ghi',
1166
1265
  'orchestration.plan.node.readOnly': 'chỉ đọc',
1167
1266
  'orchestration.labels.dependencies': 'Phụ thuộc: ',
1168
1267
  'orchestration.labels.error': 'Lỗi: ',
1169
1268
  'orchestration.workbench.title': 'Bàn làm việc',
1170
- 'orchestration.workbench.subtitle': 'Chỉ mở rộng khi dữ liệu.',
1269
+ 'orchestration.workbench.subtitle': 'Hiển thị hàng đợi, lịch sử chạy và chi tiết node.',
1171
1270
  'orchestration.queue.start': 'Bắt đầu hàng đợi',
1172
1271
  'orchestration.queue.starting': 'Đang bắt đầu...',
1173
1272
  'orchestration.workbench.tabs.aria': 'Chế độ xem bàn làm việc',
1174
1273
  'orchestration.workbench.tabs.queue': 'Hàng đợi {count}',
1175
1274
  'orchestration.workbench.tabs.runs': 'Lần chạy {count}',
1176
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',
1177
1278
  'orchestration.queue.empty.title': 'Không có tác vụ trong hàng đợi',
1178
1279
  'orchestration.queue.empty.subtitle': 'Xếp hàng tác vụ hàng loạt trước, rồi bắt đầu runner.',
1179
1280
  'orchestration.runs.empty.title': 'Chưa có lần chạy nào',
@@ -1181,13 +1282,32 @@ const vi = Object.freeze({
1181
1282
  'orchestration.detail.refresh': 'Làm mới chi tiết',
1182
1283
  'orchestration.detail.retry': 'Thử lại',
1183
1284
  'orchestration.detail.retrying': 'Đang thử lại...',
1285
+ 'orchestration.detail.continueThread': 'Continue thread',
1184
1286
  'orchestration.detail.empty.title': 'Chọn một lần chạy để xem chi tiết',
1185
1287
  'orchestration.detail.empty.subtitle': 'Chế độ xem này hiển thị trạng thái nút, tóm tắt và log.',
1186
1288
  'orchestration.detail.summary.status': 'Trạng thái',
1187
1289
  'orchestration.detail.summary.duration': 'Thời gian',
1188
1290
  'orchestration.detail.summary.nodes': 'Nút',
1189
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',
1190
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:',
1191
1311
  'skills.localLabel': '{target} / Skills cục bộ',
1192
1312
  'skills.counts': '{installed} đã cài · {importable} có thể nhập',
1193
1313
  'status.currentSource': 'Nguồn hiện tại',
@@ -147,6 +147,8 @@ const zhTw = Object.freeze({
147
147
  'side.system': '系統',
148
148
  'side.orchestration': '任務',
149
149
  'side.skills': 'Skills',
150
+ 'side.collapse': '收合側邊欄',
151
+ 'side.expand': '展開側邊欄',
150
152
 
151
153
  // Side rail items
152
154
  'side.overview.doctor': 'Doctor 面板',
@@ -202,7 +204,7 @@ const zhTw = Object.freeze({
202
204
  'title.config': '本地設定控制台',
203
205
  'title.sessions': '會話與匯出',
204
206
  'title.usage': '本地用量與趨勢',
205
- 'title.orchestration': '任務編排',
207
+ 'title.orchestration': '任務執行緒',
206
208
  'title.market': 'Skills 安裝與同步',
207
209
  'title.plugins': '插件與模板',
208
210
  'title.docs': 'CLI 安裝與文檔',
@@ -213,7 +215,7 @@ const zhTw = Object.freeze({
213
215
  'subtitle.config': '管理本地設定與模型。',
214
216
  'subtitle.sessions': '瀏覽與匯出會話。',
215
217
  'subtitle.usage': '查看近 7 / 30 天用量。',
216
- 'subtitle.orchestration': '規劃、排隊、執行與回看本地任務。',
218
+ 'subtitle.orchestration': '像聊天一樣整理任務,準備好後送出 /plan。',
217
219
  'subtitle.market': '管理本地 Skills。',
218
220
  'subtitle.plugins': '管理模板化 prompt 與可複用插件。',
219
221
  'subtitle.docs': '查看 CLI 安裝命令與排障。',
@@ -957,19 +959,105 @@ const zhTw = Object.freeze({
957
959
  'usage.range.7d.short': '近 7 天',
958
960
  'usage.range.30d.short': '近 30 天',
959
961
  'orchestration.queueStats': '隊列 {running} 運行中 · {queued} 等待中',
962
+ 'orchestration.rebuilding.status': '暫停開放',
963
+ 'orchestration.rebuilding.title': '重建中',
964
+ 'orchestration.rebuilding.body': '任務編排入口暫時保留展示,但目前不可點擊。',
960
965
  'orchestration.hero.kicker': '任務編排',
961
- 'orchestration.hero.title': '把需求拆成可執行步驟',
962
- 'orchestration.hero.subtitle': '先寫目標,再預覽計劃,再執行。',
966
+ 'orchestration.hero.title': '任務編排',
967
+ 'orchestration.hero.subtitle': '規劃、執行並追蹤任務,保留工作區與執行緒上下文。',
968
+ 'orchestration.quick.kicker': '任務輸入',
969
+ 'orchestration.quick.title': '輸入任務目標',
970
+ 'orchestration.quick.subtitle': '描述目標、約束和驗收標準。執行前可用 /plan 預覽計畫。',
971
+ 'orchestration.quick.caption': 'Enter 追加需求;/plan 預覽計畫;開始執行會產生計畫並執行。',
972
+ 'orchestration.quick.templates.reviewFix.meta': '處理 review 回饋並補回歸驗證。',
973
+ 'orchestration.quick.templates.planOnly.meta': '先排查規劃,不寫入檔案。',
974
+ 'orchestration.quick.templates.workflowBatch.meta': '複用本地 Workflow 跑固定檢查。',
975
+ 'orchestration.chat.input.label': '任務訊息',
976
+ 'orchestration.chat.input.placeholder': '描述目標、約束和驗收標準;輸入 /plan 預覽計畫。',
977
+ 'orchestration.chat.input.hint': '工作區、執行緒和執行模式可在進階設定中調整。',
978
+ 'orchestration.chat.context.aria': '任務上下文',
979
+ 'orchestration.chat.context.workspace.auto': '工作區自動推斷',
980
+ 'orchestration.chat.context.workspace.value': '工作區 {value}',
981
+ 'orchestration.chat.context.thread.auto': '執行緒自動生成',
982
+ 'orchestration.chat.context.thread.value': '執行緒 {value}',
983
+ 'orchestration.chat.context.sequence.empty': '順序:等待需求 1',
984
+ 'orchestration.chat.context.sequence.value': '順序:{count} 條需求',
985
+ 'orchestration.privacy.workspace.selected': '已選擇工作區',
986
+ 'orchestration.privacy.thread.selected': '已選擇執行緒',
987
+ 'orchestration.chat.thread.aria': '任務對話',
988
+ 'orchestration.chat.input.send': '追加需求',
989
+ 'orchestration.chat.input.discuss': '預覽計畫',
990
+ 'orchestration.chat.input.work': '開始執行',
991
+ 'orchestration.chat.input.firstHint': '這會成為需求 1。',
992
+ 'orchestration.chat.input.workHint': '執行前會先合併目前輸入。',
993
+ 'orchestration.chat.input.workCaption': 'Enter 追加需求;/plan 只預覽;開始執行會規劃並執行。',
994
+ 'orchestration.chat.input.sequenceHint': '現在送出會成為需求 {count}。',
995
+ 'orchestration.chat.assistant.contextLabel': '上一輪上下文',
996
+ 'orchestration.chat.assistant.contextFallback': '已選中一個歷史任務,繼續時會繼承它的執行緒和工作區。',
997
+ 'orchestration.chat.assistant.resultLabel': '實作結果',
998
+ 'orchestration.chat.assistant.filesSummary': '檔案操作:{files}',
999
+ 'orchestration.chat.assistant.readyLabel': 'Codexmate',
1000
+ 'orchestration.chat.assistant.empty': '輸入任務目標。多條需求會按順序執行並保留上下文。',
1001
+ 'orchestration.chat.assistant.planLabel': '計畫預覽',
1002
+ 'orchestration.chat.assistant.planSummary': '計畫已生成:{nodes} 個節點,{waves} 個批次。',
1003
+ 'orchestration.chat.assistant.sequenceReady': '已收到多條需求;執行時會先完成需求 1,再帶著上下文繼續後續需求。',
1004
+ 'orchestration.chat.assistant.singleReady': '已收到需求。可繼續追加,或輸入 /plan 預覽計畫。',
1005
+ 'orchestration.chat.user.step': '需求 {count}',
1006
+ 'orchestration.chat.meta.thread': '執行緒 {value}',
1007
+ 'orchestration.chat.meta.workspace': '工作區 {value}',
1008
+ 'orchestration.chat.meta.order': '順序執行 · 保留上下文',
1009
+ 'orchestration.chat.meta.first': '先完成這一條',
1010
+ 'orchestration.chat.meta.afterPrevious': '等待前一條完成後繼續',
1011
+ 'orchestration.chat.meta.contextKept': '上下文會隨執行緒保留',
1012
+ 'orchestration.chat.meta.previewNext': '下一步:/plan 預覽',
1013
+ 'orchestration.quick.checklist.title': '執行檢查',
1014
+ 'orchestration.quick.checklist.subtitle': '只保留真正影響執行的阻塞項。',
1015
+ 'orchestration.agent.aria': '任務編排狀態',
1016
+ 'orchestration.agent.kicker': '任務編排',
1017
+ 'orchestration.agent.title': '任務編排控制台',
1018
+ 'orchestration.agent.subtitle': '選擇工作區與會話,執行任務,並查看執行詳情。',
1019
+ 'orchestration.agent.state.ready': 'Ready',
1020
+ 'orchestration.agent.state.planning': 'Planning',
1021
+ 'orchestration.agent.state.running': 'Running',
1022
+ 'orchestration.agent.surface.workspace': 'Workspace',
1023
+ 'orchestration.agent.surface.session': '上下文',
1024
+ 'orchestration.agent.surface.mode': 'Mode',
1025
+ 'orchestration.agent.surface.trace': 'Trace',
1026
+ 'orchestration.agent.surface.runs': 'runs',
1027
+ 'orchestration.agent.surface.queue': 'queued',
1028
+ 'orchestration.agent.trace.title': 'Live trace',
1029
+ 'orchestration.agent.trace.plan': 'Plan nodes',
1030
+ 'orchestration.agent.trace.queue': 'Queue',
1031
+ 'orchestration.agent.trace.runs': 'Runs',
1032
+ 'orchestration.agent.trace.nodes': 'Run nodes',
1033
+ 'orchestration.quick.status.title': '目前草稿',
1034
+ 'orchestration.workspace.aria': '工作區與會話',
1035
+ 'orchestration.workspace.title': '工作區',
1036
+ 'orchestration.workspace.subtitle': '選擇專案,再為該專案新建或恢復會話。',
1037
+ 'orchestration.workspace.selector': '工作區選擇',
1038
+ 'orchestration.workspace.counts': '{runs} runs · {queue} queue',
1039
+ 'orchestration.workspace.newSession': '+ 新建',
1040
+ 'orchestration.workspace.sessions.title': '記錄',
1041
+ 'orchestration.workspace.sessions.empty.title': '暫無記錄',
1042
+ 'orchestration.workspace.sessions.empty.subtitle': '新建記錄,或重新整理後選擇既有執行記錄。',
1043
+ 'orchestration.workspace.sessions.queueTitle': '佇列項目',
1044
+ 'orchestration.workspace.sessions.runTitle': '執行記錄',
1045
+ 'orchestration.workspace.sessions.detailsHidden': '詳情已隱藏',
1046
+ 'orchestration.workspace.pathHidden': '路徑已隱藏',
963
1047
  'orchestration.draft.reset': '重置草稿',
964
1048
  'orchestration.summary.aria': '任務編排概覽',
965
1049
  'orchestration.summary.running': '運行中',
966
1050
  'orchestration.summary.queued': '排隊中',
967
1051
  'orchestration.summary.runs': '運行記錄',
968
- 'orchestration.readiness.target.label': '目標',
969
- 'orchestration.readiness.target.done': '已寫目標',
970
- 'orchestration.readiness.target.missing': '還沒寫目標',
1052
+ 'orchestration.readiness.target.label': '任務訊息',
1053
+ 'orchestration.readiness.target.done': '已寫任務訊息',
1054
+ 'orchestration.readiness.target.missing': '還沒寫任務訊息',
1055
+ 'orchestration.readiness.sequence.label': '順序',
1056
+ 'orchestration.readiness.sequence.missing': '先傳送需求 1',
1057
+ 'orchestration.readiness.sequence.single': '目前只有需求 1;繼續傳送會變成需求 2。',
1058
+ 'orchestration.readiness.sequence.multiple': '{count} 條需求會按順序執行:先完成需求 1,再繼續需求 2。',
971
1059
  'orchestration.readiness.engine.label': '執行策略',
972
- 'orchestration.readiness.engine.codex': '使用 Codex 規劃節點',
1060
+ 'orchestration.readiness.engine.openaiChat': '使用 OpenAI Chat-compatible 節點',
973
1061
  'orchestration.readiness.workflow.done': '已選 {count} 個 Workflow',
974
1062
  'orchestration.readiness.workflow.missing': '還沒選 Workflow ID',
975
1063
  'orchestration.readiness.scope.label': '邊界',
@@ -980,12 +1068,13 @@ const zhTw = Object.freeze({
980
1068
  'orchestration.readiness.preview.missing': '還沒生成計劃',
981
1069
  'orchestration.readiness.preview.blocked': '有 {count} 個阻塞項',
982
1070
  'orchestration.readiness.preview.ready': '計劃可用,{count} 個節點',
983
- 'orchestration.readiness.empty.title': '先寫目標',
984
- 'orchestration.readiness.empty.summary': '先把想完成的結果寫清楚,再讓編排器拆節點。',
1071
+ 'orchestration.readiness.empty.title': '填寫任務目標',
1072
+ 'orchestration.readiness.empty.summary': '先明確目標、約束和驗收標準。',
985
1073
  'orchestration.readiness.workflow.title': '缺少 Workflow',
986
1074
  'orchestration.readiness.workflow.summary': '你已經選了 Workflow 模式,但還沒指定可複用流程。',
987
- 'orchestration.readiness.preview.title': '建議先預覽',
988
- 'orchestration.readiness.preview.summary': '草稿已成形,先生成一次計劃,確認節點和依賴再執行。',
1075
+ 'orchestration.readiness.preview.title': '建議預覽計畫',
1076
+ 'orchestration.readiness.preview.summary': '目標已填寫。可用 /plan 確認節點和依賴。',
1077
+ 'orchestration.readiness.preview.sequenceSummary': '草稿已成形,已鎖定 {count} 條順序需求:先完成需求 1,再繼續需求 2。',
989
1078
  'orchestration.readiness.blocked.title': '預覽有阻塞',
990
1079
  'orchestration.readiness.blocked.summary': '目前計劃裡還有 {count} 個阻塞項,先處理它們。',
991
1080
  'orchestration.readiness.warn.title': '可以執行,但有提醒',
@@ -993,8 +1082,8 @@ const zhTw = Object.freeze({
993
1082
  'orchestration.readiness.dryRun.title': '適合先預演',
994
1083
  'orchestration.readiness.dryRun.summary': '現在可以安全地跑一次僅預演,先看結果再決定是否真實執行。',
995
1084
  'orchestration.readiness.ready.title': '可以執行',
996
- 'orchestration.readiness.ready.withFollowUps': '主目標和收尾動作都已具備,可以直接執行或入隊。',
997
- 'orchestration.readiness.ready.summary': '主目標已經夠清楚了,可以直接執行或入隊。',
1085
+ 'orchestration.readiness.ready.withFollowUps': '已鎖定 {count} 條順序需求:先完成需求 1,再帶上下文繼續需求 2。',
1086
+ 'orchestration.readiness.ready.summary': '目標清晰,可以執行或入隊。',
998
1087
  'orchestration.step1.title': '先把結果寫清楚',
999
1088
  'orchestration.step1.subtitle': '只寫會影響執行的內容。',
1000
1089
  'orchestration.templates.title': '快捷示例',
@@ -1009,14 +1098,15 @@ const zhTw = Object.freeze({
1009
1098
  'orchestration.templates.workflowBatch.target': '用 Workflow 跑一組固定檢查並整理結果',
1010
1099
  'orchestration.templates.workflowBatch.workflowIds': 'diagnose-config\nsafe-provider-switch',
1011
1100
  'orchestration.templates.workflowBatch.notes': '輸出統一結論,避免重複描述',
1012
- 'orchestration.fields.target': '目標',
1013
- 'orchestration.fields.target.placeholder': '例如:修復目前 PR review 評論,並補對應迴歸測試;不要改無關模塊',
1014
- 'orchestration.fields.target.hint': '一句話寫清結果、邊界和驗收標準就夠了。',
1015
- 'orchestration.engine.codex': 'Codex',
1101
+ 'orchestration.fields.target': '任務訊息',
1102
+ 'orchestration.fields.target.placeholder': '例如:修復目前 PR review 評論,補對應迴歸測試,並避免改無關模塊',
1103
+ 'orchestration.fields.target.hint': '像發訊息一樣寫清結果、邊界和驗收標準就夠了。',
1104
+ 'orchestration.engine.openaiChat': 'OpenAI Chat',
1016
1105
  'orchestration.engine.workflow': 'Workflow',
1017
1106
  'orchestration.runMode.write': '寫入',
1018
1107
  'orchestration.runMode.readOnly': '只讀',
1019
1108
  'orchestration.runMode.dryRun': '僅預演',
1109
+ 'orchestration.pills.sequenceCount': '順序需求 {count}',
1020
1110
  'orchestration.pills.hasTitle': '標題已設',
1021
1111
  'orchestration.pills.workflowCount': 'Workflow {count}',
1022
1112
  'orchestration.pills.planNodes': '計劃 {count} 節點',
@@ -1025,11 +1115,18 @@ const zhTw = Object.freeze({
1025
1115
  'orchestration.fields.engine': '引擎',
1026
1116
  'orchestration.fields.runMode': '運行模式',
1027
1117
  'orchestration.advanced.title': '高級設定',
1118
+ 'orchestration.advanced.open': '設定',
1028
1119
  'orchestration.fields.title': '標題',
1029
1120
  'orchestration.fields.title.placeholder': '可選,預設從目標自動提取',
1030
1121
  'orchestration.fields.notes': '說明',
1031
1122
  'orchestration.fields.notes.placeholder': '例如:不要重寫現有架構,只做增量實現',
1032
1123
  'orchestration.fields.notes.hint': '補邊界、禁區、風格要求或驗證要求。',
1124
+ 'orchestration.fields.workspacePath': '工作区路径',
1125
+ 'orchestration.fields.workspacePath.placeholder': '例如:/home/me/project',
1126
+ 'orchestration.fields.workspacePath.hint': '计划、执行和队列都会使用这个 cwd;留空则使用服务当前目录。',
1127
+ 'orchestration.fields.threadId': '任务线程 ID',
1128
+ 'orchestration.fields.threadId.placeholder': '可选;留空自动生成',
1129
+ 'orchestration.fields.threadId.hint': '同一线程用于连续追加要求、重试和队列追踪。',
1033
1130
  'orchestration.fields.followUps': '後續動作(每行一條)',
1034
1131
  'orchestration.fields.followUps.placeholder': '例如:\n繼續處理 review 評論\n最後補回歸測試',
1035
1132
  'orchestration.fields.concurrency': '併發',
@@ -1045,33 +1142,37 @@ const zhTw = Object.freeze({
1045
1142
  'orchestration.actions.planning': '規劃中...',
1046
1143
  'orchestration.actions.previewOnly': '僅預覽',
1047
1144
  'orchestration.actions.preparing': '準備中...',
1048
- 'orchestration.actions.generatePlan': '生成計劃',
1049
- 'orchestration.actions.planAndRun': '計劃並執行',
1145
+ 'orchestration.actions.generatePlan': '送出 /plan',
1146
+ 'orchestration.actions.planAndRun': '預覽 /plan 並執行',
1050
1147
  'orchestration.actions.processing': '處理中...',
1051
1148
  'orchestration.actions.queueAndStart': '入隊並開始',
1052
- 'orchestration.actions.caption': '“計劃並執行”會在必要時自動重新整理計劃;批量任務用“入隊並開始”。',
1053
- 'orchestration.stage.title': '有內容時再展開工作區',
1054
- 'orchestration.stage.subtitle': '先寫目標,再預覽計劃。',
1055
- 'orchestration.stage.pill.target': '寫目標',
1149
+ 'orchestration.actions.caption': '執行前會按需刷新計畫;批量任務可入隊執行。',
1150
+ 'orchestration.stage.title': '任務階段',
1151
+ 'orchestration.stage.subtitle': '填寫目標、預覽計畫,然後執行。',
1152
+ 'orchestration.stage.pill.target': '寫任務訊息',
1056
1153
  'orchestration.stage.pill.preview': '預覽',
1057
1154
  'orchestration.stage.pill.run': '執行或入隊',
1058
1155
  'orchestration.plan.title': '計劃預覽',
1059
- 'orchestration.plan.subtitle': '先確認節點、波次和依賴。',
1156
+ 'orchestration.plan.subtitle': '確認節點、批次和依賴關係。',
1060
1157
  'orchestration.plan.summary.nodes': '節點數',
1061
1158
  'orchestration.plan.summary.waves': '波次',
1062
1159
  'orchestration.plan.summary.engine': '引擎',
1160
+ 'orchestration.plan.summary.threadId': '线程 ID',
1161
+ 'orchestration.plan.summary.cwd': '工作区',
1063
1162
  'orchestration.plan.node.write': 'write',
1064
1163
  'orchestration.plan.node.readOnly': 'read-only',
1065
1164
  'orchestration.labels.dependencies': '依賴:',
1066
1165
  'orchestration.labels.error': '錯誤:',
1067
1166
  'orchestration.workbench.title': '執行工作臺',
1068
- 'orchestration.workbench.subtitle': '有內容時才展開。',
1167
+ 'orchestration.workbench.subtitle': '顯示佇列、執行記錄和節點詳情。',
1069
1168
  'orchestration.queue.start': '開始隊列',
1070
1169
  'orchestration.queue.starting': '啟動中...',
1071
1170
  'orchestration.workbench.tabs.aria': '任務編排工作臺視圖',
1072
1171
  'orchestration.workbench.tabs.queue': '隊列 {count}',
1073
1172
  'orchestration.workbench.tabs.runs': '運行記錄 {count}',
1074
1173
  'orchestration.workbench.tabs.detail': '運行詳情',
1174
+ 'orchestration.workbench.queueCount': '{count} 個排隊中',
1175
+ 'orchestration.workbench.ready': '就緒',
1075
1176
  'orchestration.queue.empty.title': '目前沒有排隊任務',
1076
1177
  'orchestration.queue.empty.subtitle': '批量任務可先入隊,再啟動隊列。',
1077
1178
  'orchestration.runs.empty.title': '還沒有運行記錄',
@@ -1079,13 +1180,32 @@ const zhTw = Object.freeze({
1079
1180
  'orchestration.detail.refresh': '重新整理詳情',
1080
1181
  'orchestration.detail.retry': '重試',
1081
1182
  'orchestration.detail.retrying': '重試中...',
1183
+ 'orchestration.detail.continueThread': '继续此线程',
1082
1184
  'orchestration.detail.empty.title': '選擇一條運行記錄查看詳情',
1083
1185
  'orchestration.detail.empty.subtitle': '這裡會顯示節點狀態、摘要和日誌。',
1084
1186
  'orchestration.detail.summary.status': '狀態',
1085
1187
  'orchestration.detail.summary.duration': '耗時',
1086
1188
  'orchestration.detail.summary.nodes': '節點數',
1087
1189
  'orchestration.detail.summary.summary': '摘要',
1190
+ 'orchestration.detail.context.aria': '任務運行上下文',
1191
+ 'orchestration.detail.context.run': 'Run ID',
1088
1192
  'orchestration.detail.node.meta': '{id} · attempts {attempts} · auto-fix {autoFix}',
1193
+ 'orchestration.openai.status.title': 'OpenAI Chat 運行設定',
1194
+ 'orchestration.openai.status.subtitle': '任務節點使用目前 OpenClaw provider;執行前會檢查 base URL、API key 和模型。',
1195
+ 'orchestration.openai.status.provider': 'Provider',
1196
+ 'orchestration.openai.status.model': '模型',
1197
+ 'orchestration.openai.status.endpoint': 'Endpoint',
1198
+ 'orchestration.openai.status.apiKey': 'API Key',
1199
+ 'orchestration.openai.status.headers': '額外 headers',
1200
+ 'orchestration.openai.status.configured': '已設定',
1201
+ 'orchestration.openai.status.missing': '缺失',
1202
+ 'orchestration.openai.status.notSet': '未設定',
1203
+ 'orchestration.openai.status.notLoaded': '重新整理後載入 OpenAI Chat 就緒狀態。',
1204
+ 'orchestration.openai.status.configure': '設定 OpenAI Chat',
1205
+ 'orchestration.detail.node.output': 'AI 輸出',
1206
+ 'orchestration.detail.node.endpoint': 'Endpoint:',
1207
+ 'orchestration.detail.node.materializedFiles': '物化檔案:',
1208
+ 'orchestration.detail.node.workspaceFiles': '工作區檔案:',
1089
1209
  'skills.localLabel': '{target} / 本地 Skills',
1090
1210
  'skills.counts': '已裝 {installed} · 可匯入 {importable}',
1091
1211