@logicseek/hello-cc 1.0.1 → 1.0.2

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 (97) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/README.md +4 -0
  3. package/README.zh-CN.md +4 -0
  4. package/docs/README.md +9 -0
  5. package/docs/README.zh-CN.md +9 -0
  6. package/docs/commands.md +53 -0
  7. package/docs/commands.zh-CN.md +48 -0
  8. package/docs/dsh.md +137 -0
  9. package/docs/dsh.zh-CN.md +139 -0
  10. package/docs/mcp.md +9 -0
  11. package/docs/mcp.zh-CN.md +23 -0
  12. package/docs/native.md +295 -0
  13. package/docs/native.zh-CN.md +253 -0
  14. package/docs/web-handoff.zh-CN.md +53 -0
  15. package/lib/cli/app.mjs +25 -6
  16. package/lib/cli/commands/doctor.mjs +17 -2
  17. package/lib/cli/commands/dsh.mjs +79 -0
  18. package/lib/cli/commands/hook.mjs +241 -90
  19. package/lib/cli/commands/lock.mjs +34 -19
  20. package/lib/cli/commands/mcp.mjs +28 -0
  21. package/lib/cli/commands/native.mjs +130 -0
  22. package/lib/cli/commands/run.mjs +66 -21
  23. package/lib/cli/commands/task.mjs +6 -3
  24. package/lib/cli-args.mjs +4 -0
  25. package/lib/coordination-state.mjs +15 -1
  26. package/lib/core/coordination/event-retention.mjs +14 -2
  27. package/lib/core/coordination/gc-plan.mjs +3 -13
  28. package/lib/core/coordination/locks.mjs +45 -0
  29. package/lib/core/coordination/results.mjs +79 -0
  30. package/lib/core/peers/bindings.mjs +9 -3
  31. package/lib/diagnostics/codex.mjs +121 -0
  32. package/lib/integrations/codex-interactions.mjs +114 -0
  33. package/lib/integrations/dsh-collaboration.mjs +170 -0
  34. package/lib/integrations/dsh-cordis.d.ts +19 -0
  35. package/lib/integrations/dsh-cordis.mjs +177 -0
  36. package/lib/integrations/dsh.bundle.yml +7 -0
  37. package/lib/integrations/dsh.mjs +287 -0
  38. package/lib/integrations/native/claude.mjs +451 -0
  39. package/lib/integrations/native/codex.mjs +242 -0
  40. package/lib/integrations/native/dsh-acp.mjs +343 -0
  41. package/lib/integrations/native/index.mjs +19 -0
  42. package/lib/integrations/native/interactions.mjs +53 -0
  43. package/lib/integrations/native/jsonrpc.mjs +185 -0
  44. package/lib/integrations/peers/identity.mjs +36 -10
  45. package/lib/integrations/peers/processes.mjs +22 -8
  46. package/lib/integrations/providers.mjs +6 -2
  47. package/lib/mcp/scope.mjs +104 -0
  48. package/lib/mcp/stdio.mjs +80 -0
  49. package/lib/mcp/tools.mjs +197 -0
  50. package/lib/process/identity.mjs +3 -1
  51. package/lib/release/release-notes.mjs +9 -0
  52. package/lib/runtime/native/client.mjs +38 -0
  53. package/lib/runtime/native/service.mjs +511 -0
  54. package/lib/runtime/native/store.mjs +121 -0
  55. package/lib/ui/help.mjs +5 -2
  56. package/lib/web/adoption-state.mjs +55 -0
  57. package/lib/web/auto-attach.mjs +18 -2
  58. package/lib/web/codex-app-server.mjs +557 -0
  59. package/lib/web/codex-sessions.mjs +287 -0
  60. package/lib/web/control-lease.mjs +204 -0
  61. package/lib/web/http-routes.mjs +197 -15
  62. package/lib/web/http.mjs +5 -4
  63. package/lib/web/native-sessions.mjs +286 -0
  64. package/lib/web/project-contexts.mjs +2 -1
  65. package/lib/web/pty-sessions.mjs +60 -33
  66. package/lib/web/runtime-main.mjs +98 -6
  67. package/lib/web/session-serialize.mjs +0 -0
  68. package/lib/web/task-results.mjs +76 -0
  69. package/lib/web/tmux-sessions.mjs +92 -11
  70. package/lib/web/tmux-stream.mjs +2 -2
  71. package/lib/web/ui-codex.mjs +550 -0
  72. package/lib/web/ui-command-palette.mjs +119 -0
  73. package/lib/web/ui-handoff.mjs +102 -0
  74. package/lib/web/ui-history.mjs +118 -0
  75. package/lib/web/ui-i18n.mjs +841 -0
  76. package/lib/web/ui-interactions.mjs +78 -0
  77. package/lib/web/ui-login.mjs +101 -0
  78. package/lib/web/ui-native.mjs +165 -0
  79. package/lib/web/ui-preferences.mjs +278 -0
  80. package/lib/web/ui-review.mjs +132 -0
  81. package/lib/web/ui-template.mjs +1106 -576
  82. package/lib/web/ui-terminal-find.mjs +98 -0
  83. package/lib/web/ui-workbench.mjs +94 -0
  84. package/lib/web/ui-workspace.mjs +222 -0
  85. package/package.json +11 -3
  86. package/scripts/check-free-identifiers.mjs +67 -8
  87. package/scripts/codex-diagnostics-installed-acceptance.mjs +72 -0
  88. package/scripts/dsh-cordis-acceptance.mjs +200 -0
  89. package/scripts/dsh-installed-acceptance.mjs +247 -0
  90. package/scripts/dsh-official-acceptance.mjs +180 -0
  91. package/scripts/dsh-web-startup-acceptance.mjs +87 -0
  92. package/scripts/github-release.mjs +3 -1
  93. package/scripts/native-live-acceptance.mjs +369 -0
  94. package/scripts/regression.mjs +243 -89
  95. package/scripts/web-handoff-installed-acceptance.mjs +98 -0
  96. package/scripts/web-native-interaction-acceptance.mjs +204 -0
  97. package/scripts/web-native-model-acceptance.mjs +138 -0
@@ -0,0 +1,841 @@
1
+ // Shared interface copy for the console and its sign-in page.
2
+ const coreTranslations = {
3
+ en: {
4
+ 'workspace.split': 'Split',
5
+ 'workspace.panes': 'Session panes',
6
+ 'workspace.primary': 'Main',
7
+ 'workspace.secondary': 'Second',
8
+ 'workspace.secondSession': 'Second session',
9
+ 'workspace.close': 'Close split',
10
+ 'workspace.closeHelp': 'Close this pane; the session keeps running',
11
+ 'workspace.resize': 'Resize session panes',
12
+ 'workspace.rows': 'Stack vertically',
13
+ 'workspace.columns': 'Arrange side by side',
14
+ 'workspace.missing': 'The saved session is unavailable. Choose another session above.',
15
+ 'workspace.missingShort': 'Unavailable',
16
+ 'workspace.connecting': 'Opening session…',
17
+ 'workspace.failed': 'This pane could not connect. Reconnect, or sign in again in the main window.',
18
+ 'workspace.retry': 'Reconnect pane',
19
+ 'commands.button': 'Commands',
20
+ 'commands.shortcutHint': 'Command palette (Ctrl / ⌘ + Shift + P)',
21
+ 'commands.title': 'Command palette',
22
+ 'commands.placeholder': 'Search actions, projects or sessions…',
23
+ 'commands.search': 'Search commands',
24
+ 'commands.results': 'Commands',
25
+ 'commands.navigate': 'Navigate',
26
+ 'commands.open': 'Open',
27
+ 'commands.count': '{count} results',
28
+ 'commands.empty': 'No matching commands. Try another phrase.',
29
+ 'commands.refine': 'Showing the first 80; refine your search',
30
+ 'commands.unavailable': 'This item is no longer available. Choose another result.',
31
+ 'commands.pages': 'Pages and actions',
32
+ 'commands.projects': 'Projects',
33
+ 'commands.refresh': 'Refresh project state',
34
+ 'commands.view.overview': 'Show project overview',
35
+ 'commands.view.tasks': 'Show tasks',
36
+ 'commands.view.messages': 'Show messages',
37
+ 'commands.view.events': 'Show events',
38
+ 'find.button': 'Find',
39
+ 'find.title': 'Find in terminal',
40
+ 'find.shortcutHint': 'Find in terminal (Ctrl / ⌘ + Shift + F)',
41
+ 'find.placeholder': 'Find in terminal output…',
42
+ 'find.previous': 'Previous match (Shift + Enter)',
43
+ 'find.next': 'Next match (Enter)',
44
+ 'find.case': 'Match case',
45
+ 'find.word': 'Whole word',
46
+ 'find.hint': 'Search the output retained in this terminal.',
47
+ 'find.none': 'No matches',
48
+ 'find.many': '{count}+ matches; refine your search',
49
+ 'find.count': '{index} of {count}',
50
+ 'find.failed': 'Search unavailable. Try a shorter phrase.',
51
+ language: 'Language',
52
+ project: 'Project',
53
+ projectPath: 'Project path',
54
+ projectPathPlaceholder: '/path/to/project',
55
+ registerProject: 'Register Project',
56
+ newSession: 'New session',
57
+ dshLaunchHelp: 'For DeepSeek Harness, run hcc dsh web in the project. Its agents appear under Detected.',
58
+ dshCoordinationHelp: 'Tasks, locks, and messages are shared with hello-cc. Chat, cancel, and resume this agent in the dsh Web UI.',
59
+ start: 'Start',
60
+ mode: 'Mode',
61
+ 'mode.new': 'new',
62
+ 'mode.resume': 'resume',
63
+ 'mode.last': 'last',
64
+ 'mode.continue': 'continue',
65
+ session: 'Session',
66
+ sessionId: 'Session id',
67
+ sessionIdPlaceholder: 'session id or name',
68
+ sessions: 'Sessions',
69
+ addProject: 'Add project',
70
+ sessionSearch: 'Search sessions',
71
+ sessionSearchPlaceholder: 'Name, ID, directory or command…',
72
+ sessionStatusFilter: 'Session availability',
73
+ sessionFilterAll: 'All sessions',
74
+ sessionFilterActive: 'Active sessions',
75
+ noMatchingSessions: 'No matching sessions.',
76
+ clearSessionFilters: 'Clear search and filters',
77
+ sessionDetails: 'Session details',
78
+ projectDialogHelp: 'Register a local project directory to view its sessions and shared state.',
79
+ startDialogHelp: 'Choose a CLI and start a new session or resume existing history.',
80
+ startProject: 'Target project',
81
+ createFirstSession: 'Start a session',
82
+ sessionListSummary: '{count} matching sessions',
83
+ view: 'View',
84
+ 'kind.all': 'all',
85
+ 'kind.shell': 'shell',
86
+ 'kind.other': 'other',
87
+ noSessionSelected: 'No session selected',
88
+ startOrSelect: 'Start or select a session from the left panel',
89
+ actions: 'Actions',
90
+ 'action.state': 'state',
91
+ 'action.inbox': 'inbox',
92
+ 'action.claimNextTask': 'claim next task',
93
+ 'action.status': 'status',
94
+ 'action.renewHeartbeat': 'renew heartbeat',
95
+ 'action.reregister': 're-register peer',
96
+ 'action.runStatusTerminal': 'run status in terminal',
97
+ logout: 'log out',
98
+ actionResult: 'Action Result',
99
+ stop: 'stop',
100
+ projectState: 'Project State',
101
+ refresh: 'Refresh',
102
+ managed: 'Managed',
103
+ detected: 'Detected',
104
+ running: 'running',
105
+ noActiveSessions: 'No active sessions.',
106
+ startOneAbove: 'Start one above',
107
+ orRunTerminal: 'or run in any terminal:',
108
+ noDetectedPeers: 'No detected peers.',
109
+ viewFilter: 'View filter',
110
+ noTasks: 'No tasks.',
111
+ noPeers: 'No peers.',
112
+ noActiveLocks: 'No active locks.',
113
+ noMessages: 'No messages.',
114
+ noTimelineItems: 'No timeline items.',
115
+ nextAction: 'Next Action',
116
+ timeline: 'Timeline',
117
+ messages: 'Messages',
118
+ peers: 'Peers',
119
+ tasks: 'Tasks',
120
+ locks: 'Locks',
121
+ owner: 'owner',
122
+ assignee: 'assignee',
123
+ task: 'task',
124
+ all: 'all',
125
+ next: 'next',
126
+ finish: 'finish',
127
+ warnings: 'warnings',
128
+ noImmediateAction: 'No immediate coordination action',
129
+ detectedSession: 'Detected Session',
130
+ sendMessage: 'Send Message',
131
+ messageHelp: "Message will appear in the peer's <code>hcc msg inbox</code> and be injected on next hook fire.",
132
+ dshCordisMessageHelp: "Message will appear in this Agent's <code>hcc msg inbox</code> and enter its context at the next Harness step. Sending a message does not wake an idle Agent.",
133
+ messageBodyPlaceholder: 'Message body...',
134
+ send: 'Send',
135
+ peer: 'peer',
136
+ kind: 'kind',
137
+ status: 'status',
138
+ cwd: 'cwd',
139
+ pid: 'pid',
140
+ unknown: 'unknown',
141
+ lastSeen: 'last seen',
142
+ secondsAgo: 's ago',
143
+ age: 'age',
144
+ branch: 'branch',
145
+ runtime: 'runtime',
146
+ command: 'command',
147
+ providerSession: 'provider session',
148
+ activeDetected: 'Active detected',
149
+ staleDetected: 'Stale detected',
150
+ noActiveDetectedPeers: 'No active detected peers.',
151
+ showStale: 'show stale',
152
+ hideStale: 'hide stale',
153
+ thread: 'thread',
154
+ reply: 'reply',
155
+ 'status.active': 'active',
156
+ 'status.stale': 'stale',
157
+ 'status.unknown': 'unknown',
158
+ 'status.running': 'running',
159
+ 'status.idle': 'idle',
160
+ 'status.exited': 'exited',
161
+ 'status.claimed': 'claimed',
162
+ 'status.review': 'review',
163
+ 'status.blocked': 'blocked',
164
+ 'status.done': 'done',
165
+ 'status.abandoned': 'abandoned',
166
+ 'status.pending': 'pending',
167
+ 'conn.offline': 'offline',
168
+ 'conn.online': 'online',
169
+ 'conn.attached': 'attached',
170
+ 'conn.reconnecting': 'reconnecting...',
171
+ 'conn.coordinationOnly': 'coordination only',
172
+ 'conn.error': 'error',
173
+ show: 'Show',
174
+ collapse: 'Collapse',
175
+ sidebar: 'sidebar',
176
+ statePanel: 'state panel',
177
+ dragToResize: 'drag to resize',
178
+ collapseSidebar: 'Collapse sidebar',
179
+ collapseStatePanel: 'Collapse state panel',
180
+ toggleLeftSidebar: 'Toggle left sidebar',
181
+ toggleRightPanel: 'Toggle right panel',
182
+ resizeLeftSidebar: 'Resize left sidebar',
183
+ resizeRightPanel: 'Resize right panel',
184
+ customSession: 'custom session id...',
185
+ 'dialog.cancel': 'Cancel',
186
+ 'dialog.killTmux': 'Also kill tmux session',
187
+ 'action.stopPeer': 'Stop peer',
188
+ 'action.restartPeer': 'Restart peer',
189
+ detectedPeer: 'detected peer'
190
+ },
191
+ zh: {
192
+ 'workspace.split': '分屏',
193
+ 'workspace.panes': '会话窗格',
194
+ 'workspace.primary': '主窗格',
195
+ 'workspace.secondary': '副窗格',
196
+ 'workspace.secondSession': '副窗格会话',
197
+ 'workspace.close': '关闭分屏',
198
+ 'workspace.closeHelp': '关闭此窗格,会话继续运行',
199
+ 'workspace.resize': '调整会话窗格大小',
200
+ 'workspace.rows': '上下排列',
201
+ 'workspace.columns': '左右排列',
202
+ 'workspace.missing': '保存的会话已不可用,请在上方选择其他会话。',
203
+ 'workspace.missingShort': '不可用',
204
+ 'workspace.connecting': '正在打开会话…',
205
+ 'workspace.failed': '此窗格连接失败。可以重新连接,或在主窗口重新登录。',
206
+ 'workspace.retry': '重新连接窗格',
207
+ 'commands.button': '命令',
208
+ 'commands.shortcutHint': '命令面板(Ctrl / ⌘ + Shift + P)',
209
+ 'commands.title': '命令面板',
210
+ 'commands.placeholder': '搜索操作、项目或会话…',
211
+ 'commands.search': '搜索命令',
212
+ 'commands.results': '命令列表',
213
+ 'commands.navigate': '选择',
214
+ 'commands.open': '打开',
215
+ 'commands.count': '{count} 个结果',
216
+ 'commands.empty': '没有匹配的命令,请尝试其他关键词。',
217
+ 'commands.refine': '显示前 80 项,可继续缩小搜索范围',
218
+ 'commands.unavailable': '该项目或会话已不可用,请选择其他结果。',
219
+ 'commands.pages': '页面与操作',
220
+ 'commands.projects': '项目',
221
+ 'commands.refresh': '刷新项目状态',
222
+ 'commands.view.overview': '显示项目概览',
223
+ 'commands.view.tasks': '显示任务',
224
+ 'commands.view.messages': '显示消息',
225
+ 'commands.view.events': '显示事件',
226
+ 'find.button': '查找',
227
+ 'find.title': '终端查找',
228
+ 'find.shortcutHint': '终端查找(Ctrl / ⌘ + Shift + F)',
229
+ 'find.placeholder': '查找终端输出…',
230
+ 'find.previous': '上一个匹配(Shift + Enter)',
231
+ 'find.next': '下一个匹配(Enter)',
232
+ 'find.case': '区分大小写',
233
+ 'find.word': '全词匹配',
234
+ 'find.hint': '搜索当前终端保留的输出。',
235
+ 'find.none': '没有匹配项',
236
+ 'find.many': '{count}+ 个匹配,请缩小查找范围',
237
+ 'find.count': '第 {index} / {count} 个',
238
+ 'find.failed': '暂时无法查找,请尝试较短的关键词。',
239
+ language: '语言',
240
+ project: '项目',
241
+ projectPath: '项目路径',
242
+ projectPathPlaceholder: '/项目/路径',
243
+ registerProject: '注册项目',
244
+ newSession: '新会话',
245
+ dshLaunchHelp: 'DeepSeek Harness 请在项目内运行 hcc dsh web,其 Agent 会显示在检测会话中。',
246
+ dshCoordinationHelp: 'hello-cc 共享任务、锁和消息。对话、取消及恢复该 Agent 请在 dsh Web 界面操作。',
247
+ start: '启动',
248
+ mode: '模式',
249
+ 'mode.new': '新建',
250
+ 'mode.resume': '恢复',
251
+ 'mode.last': '最近',
252
+ 'mode.continue': '继续',
253
+ session: '会话',
254
+ sessionId: '会话 ID',
255
+ sessionIdPlaceholder: '会话 ID 或名称',
256
+ sessions: '会话',
257
+ addProject: '添加项目',
258
+ sessionSearch: '搜索会话',
259
+ sessionSearchPlaceholder: '名称、ID、目录或命令…',
260
+ sessionStatusFilter: '会话活动状态',
261
+ sessionFilterAll: '全部会话',
262
+ sessionFilterActive: '活跃会话',
263
+ noMatchingSessions: '没有匹配的会话。',
264
+ clearSessionFilters: '清除搜索与筛选',
265
+ sessionDetails: '会话详情',
266
+ projectDialogHelp: '注册本地项目目录,查看项目会话和共享状态。',
267
+ startDialogHelp: '选择 CLI,启动新会话或恢复已有历史。',
268
+ startProject: '目标项目',
269
+ createFirstSession: '启动一个会话',
270
+ sessionListSummary: '{count} 个匹配会话',
271
+ view: '视图',
272
+ 'kind.all': '全部',
273
+ 'kind.shell': 'shell',
274
+ 'kind.other': '其他',
275
+ noSessionSelected: '未选择会话',
276
+ startOrSelect: '从左侧面板启动或选择一个会话',
277
+ actions: '操作',
278
+ 'action.state': '状态详情',
279
+ 'action.inbox': '收件箱',
280
+ 'action.claimNextTask': '认领下个任务',
281
+ 'action.status': '状态',
282
+ 'action.renewHeartbeat': '续期心跳',
283
+ 'action.reregister': '重新注册协作方',
284
+ 'action.runStatusTerminal': '在终端运行状态命令',
285
+ logout: '退出登录',
286
+ actionResult: '操作结果',
287
+ stop: '停止',
288
+ projectState: '项目状态',
289
+ refresh: '刷新',
290
+ managed: '托管',
291
+ detected: '检测到',
292
+ running: '运行中',
293
+ noActiveSessions: '没有活动会话。',
294
+ startOneAbove: '在上方启动一个会话',
295
+ orRunTerminal: '或在任意终端运行:',
296
+ noDetectedPeers: '没有检测到的协作方。',
297
+ viewFilter: '视图过滤',
298
+ noTasks: '没有任务。',
299
+ noPeers: '没有协作方。',
300
+ noActiveLocks: '没有活动锁。',
301
+ noMessages: '没有消息。',
302
+ noTimelineItems: '没有时间线条目。',
303
+ nextAction: '下一步',
304
+ timeline: '时间线',
305
+ messages: '消息',
306
+ peers: '协作方',
307
+ tasks: '任务',
308
+ locks: '锁',
309
+ owner: '负责人',
310
+ assignee: '执行者',
311
+ task: '任务',
312
+ all: '全部',
313
+ next: '下一步',
314
+ finish: '收尾',
315
+ warnings: '警告',
316
+ noImmediateAction: '当前没有需要立即处理的协作动作',
317
+ detectedSession: '检测到的会话',
318
+ sendMessage: '发送消息',
319
+ messageHelp: '消息会出现在该 peer 的 <code>hcc msg inbox</code> 中,并在下一次 hook 触发时注入。',
320
+ dshCordisMessageHelp: '消息会出现在该 Agent 的 <code>hcc msg inbox</code> 中,并在下一次 Harness 步骤进入上下文。发送消息不会唤醒空闲 Agent。',
321
+ messageBodyPlaceholder: '消息内容...',
322
+ send: '发送',
323
+ peer: '协作方',
324
+ kind: '类型',
325
+ status: '状态',
326
+ cwd: '工作目录',
327
+ pid: 'PID',
328
+ unknown: '未知',
329
+ lastSeen: '最后出现',
330
+ secondsAgo: ' 秒前',
331
+ age: '时长',
332
+ branch: '分支',
333
+ runtime: '运行时',
334
+ command: '命令',
335
+ providerSession: '提供方会话',
336
+ activeDetected: '活跃检测',
337
+ staleDetected: '过期检测',
338
+ noActiveDetectedPeers: '没有活跃的检测协作方。',
339
+ showStale: '显示过期',
340
+ hideStale: '隐藏过期',
341
+ thread: '线程',
342
+ reply: '回复',
343
+ 'status.active': '活跃',
344
+ 'status.stale': '过期',
345
+ 'status.unknown': '未知',
346
+ 'status.running': '运行中',
347
+ 'status.idle': '空闲',
348
+ 'status.exited': '已退出',
349
+ 'status.claimed': '已认领',
350
+ 'status.review': '审查中',
351
+ 'status.blocked': '阻塞',
352
+ 'status.done': '完成',
353
+ 'status.abandoned': '已放弃',
354
+ 'status.pending': '待处理',
355
+ 'conn.offline': '离线',
356
+ 'conn.online': '在线',
357
+ 'conn.attached': '已连接',
358
+ 'conn.reconnecting': '重连中...',
359
+ 'conn.coordinationOnly': '仅协作',
360
+ 'conn.error': '错误',
361
+ show: '显示',
362
+ collapse: '折叠',
363
+ sidebar: '侧栏',
364
+ statePanel: '状态面板',
365
+ dragToResize: '拖动调整大小',
366
+ collapseSidebar: '折叠侧栏',
367
+ collapseStatePanel: '折叠状态面板',
368
+ toggleLeftSidebar: '切换左侧栏',
369
+ toggleRightPanel: '切换右侧面板',
370
+ resizeLeftSidebar: '调整左侧栏宽度',
371
+ resizeRightPanel: '调整右侧面板宽度',
372
+ customSession: '自定义会话 ID...',
373
+ 'dialog.cancel': '取消',
374
+ 'dialog.killTmux': '同时终止 tmux 会话',
375
+ 'action.stopPeer': '停止协作方',
376
+ 'action.restartPeer': '恢复协作方',
377
+ detectedPeer: '检测到的协作方'
378
+ }
379
+ };
380
+
381
+
382
+ export const UI_TRANSLATIONS = Object.freeze({
383
+ en: Object.freeze({
384
+ 'history.title': 'Codex history',
385
+ 'history.help': 'Browse saved history, then explicitly resume or fork it in a separate executor.',
386
+ 'history.more': 'Load more',
387
+ 'history.confirm': 'I checked the original executor. Opening starts a separate executor; resuming the same thread requires stopping the original.',
388
+ 'history.resume': 'Resume in a new executor',
389
+ 'history.fork': 'Fork into a new executor',
390
+ 'history.empty': 'No saved Codex threads in this project.',
391
+ 'history.loading': 'Reading saved history…',
392
+ 'history.opening': 'Opening the selected history…',
393
+ 'history.noTurns': 'This saved thread has no recorded turns.',
394
+ 'history.checkSessions': 'Check the sessions list before trying again.',
395
+ 'history.sourceControlRequired': 'Select the original running session and take browser control before forking. Resume requires stopping the original executor.',
396
+ 'history.stopOriginal': 'The original executor is running. You can fork with control; stop the original before resuming the same thread.',
397
+ 'history.user': 'You',
398
+ 'history.assistant': 'Assistant',
399
+ 'history.command': 'Command output',
400
+ 'history.files': 'File changes',
401
+ 'history.event': 'Execution record',
402
+ 'review.title': 'Review results',
403
+ 'review.record': 'Record verification evidence',
404
+ 'review.manualHelp': 'Record what you verified and its evidence. Task completion remains a separate action.',
405
+ 'review.stage': 'Stage',
406
+ 'review.local': 'Local validation',
407
+ 'review.publication': 'Publication',
408
+ 'review.business': 'Business acceptance',
409
+ 'review.status': 'Result',
410
+ 'review.pending': 'Pending',
411
+ 'review.passed': 'Passed',
412
+ 'review.failed': 'Failed',
413
+ 'review.recordTitle': 'Verification title or command already run',
414
+ 'review.details': 'Conclusion and remaining gaps',
415
+ 'review.evidence': 'Evidence references, one per line',
416
+ 'review.save': 'Save record',
417
+ 'review.controlRequired': 'Recording requires browser control and ownership of the current task.',
418
+ 'review.noTask': 'This session has no current task. Existing results are available for reading.',
419
+ 'review.executorSource': 'Executor evidence',
420
+ 'review.userSource': 'Manually recorded evidence',
421
+ 'review.recordedSource': 'Recorded evidence',
422
+ 'review.commands': 'Recorded commands',
423
+ 'review.diff': 'Changes',
424
+ 'review.empty': 'No recorded results yet.',
425
+ 'review.loading': 'Loading result evidence…',
426
+ 'review.saving': 'Saving verification record…',
427
+ 'review.saved': 'Verification evidence recorded.',
428
+ 'native.approvalPolicy': 'The current controller can answer interactive requests here.',
429
+ 'native.receipts': 'Durable delivery receipts',
430
+ 'native.output': 'Executor output',
431
+ 'native.draft': 'Message draft saved in this browser',
432
+ 'native.send': 'Queue message',
433
+ 'native.interrupt': 'Interrupt current turn',
434
+ 'native.read': 'Refresh receipts',
435
+ 'native.reviewPending': 'Reviewed; keep draft',
436
+ 'native.closeConfirm': 'Stop this executor',
437
+ 'native.close': 'Close executor',
438
+ 'native.sameExecutor': 'Connected to the existing native executor',
439
+ 'native.noReceipts': 'No delivery receipts yet.',
440
+ 'native.noOutput': 'No recorded executor output yet.',
441
+ 'native.error': 'Execution error',
442
+ 'native.event': 'Execution record',
443
+ 'native.uncertain': 'Submission is unconfirmed. Check durable receipts before sending again; your draft is retained.',
444
+ 'native.queued': 'Added to the HCC queue, awaiting executor receipt.',
445
+ 'native.sending': 'Adding the message to the HCC queue…',
446
+ 'native.invalidReceipt': 'The queue receipt could not be verified.',
447
+ 'native.interruptRequested': 'Interrupt requested; check the executor state.',
448
+ 'native.closed': 'Executor closed.',
449
+ 'native.retained': 'Draft retained. A new send creates a new submission.',
450
+ 'native.reviewConfirm': 'Have you checked the durable receipts? A new send may duplicate work already queued. Keep this draft and remove its unconfirmed marker?',
451
+ 'native.delivery.queued': 'Queued, awaiting dispatch',
452
+ 'native.delivery.dispatching': 'Submitting to executor',
453
+ 'native.delivery.submitted': 'Submitted, awaiting output',
454
+ 'native.delivery.accepted': 'Executor output observed',
455
+ 'native.delivery.completed': 'Executor turn completed',
456
+ 'native.delivery.failed': 'Execution failed',
457
+ 'native.delivery.uncertain': 'Receipt uncertain; inspection required',
458
+ 'native.state.new': 'New',
459
+ 'native.state.opening': 'Opening',
460
+ 'native.state.idle': 'Idle',
461
+ 'native.state.ready': 'Ready',
462
+ 'native.state.busy': 'Busy',
463
+ 'native.state.running': 'Running',
464
+ 'native.state.completed': 'Completed',
465
+ 'native.state.interrupting': 'Interrupting',
466
+ 'native.state.closing': 'Closing',
467
+ 'native.state.closed': 'Closed',
468
+ 'native.state.disconnected': 'Disconnected',
469
+ 'native.state.error': 'Error',
470
+ 'native.state.uncertain': 'Uncertain',
471
+ 'aux.history': 'Codex history',
472
+ 'aux.review': 'Review results',
473
+ 'handoff.resumeConfirm': 'I have stopped the original executor. Resuming history starts a separate executor.',
474
+ 'handoff.transport': 'Codex interface',
475
+ 'handoff.cli': 'Terminal CLI',
476
+ 'handoff.appServer': 'Structured App Server (opt in)',
477
+ 'handoff.claim': 'Take control',
478
+ 'handoff.takeover': 'Take over browser control',
479
+ 'handoff.release': 'Release control',
480
+ 'handoff.reconnect': 'Reconnect',
481
+ 'handoff.controller': 'Controlling this session',
482
+ 'handoff.observer': 'Observing · input disabled',
483
+ 'handoff.disconnected': 'Disconnected · draft retained',
484
+ 'handoff.connecting': 'Connecting…',
485
+ 'handoff.localClients': 'Local tmux clients',
486
+ 'handoff.localBoundary': 'Local terminal users can still type. Browser control only coordinates Web clients.',
487
+ 'handoff.localUnknown': 'Local tmux client state is unavailable',
488
+ 'handoff.noLocalClients': 'No local tmux client detected',
489
+ 'handoff.leaveHelp': 'Closing this page leaves the local executor running.',
490
+ 'handoff.draft': 'Terminal input draft',
491
+ 'handoff.draftPlaceholder': 'Write terminal input here; Ctrl+Enter sends it',
492
+ 'handoff.send': 'Send + Enter',
493
+ 'handoff.saved': 'Draft saved in this browser. Send appends Enter.',
494
+ 'handoff.pending': 'Waiting for terminal input receipt…',
495
+ 'handoff.uncertain': 'Input receipt missing. Check the terminal before sending again; draft retained.',
496
+ 'handoff.review': 'Reviewed; keep draft',
497
+ 'handoff.received': 'Terminal accepted the bytes. Execution or model response is not confirmed.',
498
+ 'handoff.controlRequired': 'Take browser control before sending input or changing the terminal size.',
499
+ 'handoff.missingSelection': 'Previously selected session is unavailable. Select a session to continue.',
500
+ 'handoff.task': 'Current task',
501
+ 'handoff.detach': 'Pause Web attachment',
502
+ 'handoff.terminate': 'Terminate executor',
503
+ 'handoff.detachHelp': 'Pause Web attachment; local tmux remains running. Select the checkbox to also terminate it.',
504
+ 'handoff.terminateHelp': 'This terminates the executor, unlike releasing browser control or closing the page.',
505
+ 'handoff.storageHint': 'Drafts are retained in this browser; private browsing or unavailable storage may limit persistence.',
506
+ ...coreTranslations.en,
507
+ settings: 'Settings',
508
+ close: 'Close',
509
+ system: 'Follow system',
510
+ 'setting.system': 'Follow system',
511
+ theme: 'Appearance',
512
+ light: 'Light',
513
+ dark: 'Dark',
514
+ 'theme.light': 'Light',
515
+ 'theme.dark': 'Dark',
516
+ terminalTheme: 'Terminal appearance',
517
+ followsInterface: 'Follow interface',
518
+ 'terminalTheme.system': 'Follow interface',
519
+ 'terminalTheme.follow': 'Follow interface',
520
+ density: 'Information density',
521
+ comfortable: 'Comfortable',
522
+ compact: 'Compact',
523
+ 'density.comfortable': 'Comfortable',
524
+ 'density.compact': 'Compact',
525
+ terminalFontSize: 'Terminal font size',
526
+ fontSize: 'Terminal font size',
527
+ focusMode: 'Focus mode',
528
+ exitFocus: 'Exit focus mode',
529
+ terminal: 'Terminal',
530
+ navigation: 'Navigation',
531
+ phase: 'Phase',
532
+ why: 'Reason',
533
+ none: 'None',
534
+ current: 'Current task',
535
+ claimed: 'Claimed task',
536
+ by: 'By',
537
+ locked: 'Locked',
538
+ unread: 'Unread',
539
+ active: 'Active',
540
+ stale: 'Stale',
541
+ root: 'Project path',
542
+ requestFailed: 'Request failed',
543
+ details: 'Details',
544
+ ownerActive: 'Owner is active',
545
+ ownerStale: 'Owner is stale',
546
+ ownerStaleNoLock: 'Owner is stale; no active locks',
547
+ ownerStaleLocks: 'Owner is stale; active locks',
548
+ loginTitle: 'Sign in to hello-cc',
549
+ loginHelp: 'Enter the access token shown when you start the web console.',
550
+ accessToken: 'Access token',
551
+ tokenPlaceholder: 'Paste your access token',
552
+ signIn: 'Sign in',
553
+ signingIn: 'Signing in…',
554
+ invalidToken: 'Invalid access token. Please check it and try again.',
555
+ networkError: 'Unable to connect. Please check your connection and try again.',
556
+ tokenRequired: 'Enter your access token.',
557
+ stopConfirmation: 'Stop this session?',
558
+ 'action.task-next': 'Claim next task',
559
+ 'action.heartbeat': 'Renew heartbeat',
560
+ 'action.register': 'Re-register peer',
561
+ 'action.lock-acquire': 'Acquire lock',
562
+ 'action.lock-release': 'Release lock',
563
+ 'action.task-takeover': 'Take over task',
564
+ 'action.msg': 'Send message',
565
+ 'action.stop': 'Stop peer',
566
+ 'action.restart': 'Restart peer',
567
+ dismiss: 'Dismiss',
568
+ settingsHelp: 'Preferences are saved in this browser.',
569
+ resetPreferences: 'Reset preferences',
570
+ 'error.unauthorized': 'Your session has expired. Please sign in again.',
571
+ 'error.forbidden': 'This action is not allowed.',
572
+ 'error.not_found': 'The requested item could not be found.',
573
+ 'error.invalid_request': 'Please check the submitted information.',
574
+ 'error.conflict': 'The item changed. Refresh and try again.',
575
+ noPendingTasks: 'No pending tasks.',
576
+ lockReleased: 'Lock released',
577
+ noLock: 'No lock found',
578
+ renewedLocks: 'Locks renewed',
579
+ registered: 'Peer registered',
580
+ 'conn.signed out': 'Signed out',
581
+ 'conn.signedOut': 'Signed out',
582
+ 'status.detached': 'detached',
583
+ 'status.busy': 'busy',
584
+ 'status.working': 'working',
585
+ 'status.work': 'work in progress',
586
+ 'status.handoff': 'handoff',
587
+ 'status.reply_message': 'reply to message',
588
+ 'status.claim_task': 'claim task',
589
+ 'status.takeover_task': 'take over task',
590
+ 'status.acquire_lock': 'acquire lock',
591
+ 'status.coordinate_lock': 'coordinate lock',
592
+ 'status.team_plan': 'plan team tasks',
593
+ 'error.bad_request': 'Please check the submitted information.',
594
+ 'error.bad_args': 'Please check the submitted information.',
595
+ 'error.bad_state': 'The item is in a state that does not allow this action.',
596
+ 'error.method_not_allowed': 'This action is not supported by the current request.',
597
+ 'error.session_not_running': 'This session is no longer running.',
598
+ 'error.request_too_large': 'The submitted content is too large.',
599
+ 'error.api_version_unsupported': 'Refresh the page to use the current API version.',
600
+ 'error.csrf_origin': 'The request could not be verified. Open the console from its own address.',
601
+ 'error.proxy_origin_mismatch': 'The console address does not match its proxy configuration.',
602
+ 'error.peer_identity_required': 'Connect to a running managed session before performing this action.',
603
+ 'error.peer_identity_mismatch': 'The selected session does not match the target peer.',
604
+ 'error.lock_held': 'Another peer holds a conflicting lock.',
605
+ 'error.lock_owned': 'This lock belongs to another peer.',
606
+ 'error.task_owned': 'This task belongs to another peer.',
607
+ 'error.task_assigned': 'This task is assigned to another peer.',
608
+ 'error.subject_changed': 'The item changed during this action. Refresh and try again.',
609
+ 'error.registry_busy': 'The project registry is busy. Please try again.',
610
+ 'error.server_error': 'The server could not complete this request.'
611
+ }),
612
+ zh: Object.freeze({
613
+ 'history.title': 'Codex 历史',
614
+ 'history.help': '浏览保存的历史,并显式选择恢复或分叉到独立执行器。',
615
+ 'history.more': '加载更多',
616
+ 'history.confirm': '我已核对原执行器状态,明确在独立执行器中打开;恢复同一会话前需停止原执行器。',
617
+ 'history.resume': '在独立执行器中恢复',
618
+ 'history.fork': '分叉到独立执行器',
619
+ 'history.empty': '此项目暂无保存的 Codex 会话。',
620
+ 'history.loading': '正在读取保存的历史…',
621
+ 'history.opening': '正在打开所选历史…',
622
+ 'history.noTurns': '此会话暂无已记录的轮次。',
623
+ 'history.checkSessions': '再次尝试前请先核对会话列表。',
624
+ 'history.sourceControlRequired': '分叉前请选择正在运行的原会话并取得网页控制权;恢复同一会话需要先停止原执行器。',
625
+ 'history.stopOriginal': '原执行器仍在运行。取得控制权后可以分叉;恢复同一会话前需要停止原执行器。',
626
+ 'history.user': '用户',
627
+ 'history.assistant': '助手',
628
+ 'history.command': '命令输出',
629
+ 'history.files': '文件变更',
630
+ 'history.event': '执行记录',
631
+ 'review.title': '结果审阅',
632
+ 'review.record': '记录验证证据',
633
+ 'review.manualHelp': '记录已验证的内容及证据,任务完成状态由单独的任务操作管理。',
634
+ 'review.stage': '阶段',
635
+ 'review.local': '本地验证',
636
+ 'review.publication': '发布',
637
+ 'review.business': '业务验收',
638
+ 'review.status': '结论',
639
+ 'review.pending': '待验证',
640
+ 'review.passed': '通过',
641
+ 'review.failed': '失败',
642
+ 'review.recordTitle': '验证标题或已运行的命令',
643
+ 'review.details': '结论及剩余缺口',
644
+ 'review.evidence': '证据引用,每行一条',
645
+ 'review.save': '保存记录',
646
+ 'review.controlRequired': '记录结论需要网页控制权,并持有当前任务。',
647
+ 'review.noTask': '此会话没有当前任务,可以查阅已有结果。',
648
+ 'review.executorSource': '执行器证据',
649
+ 'review.userSource': '人工记录的证据',
650
+ 'review.recordedSource': '已记录的证据',
651
+ 'review.commands': '已记录的命令',
652
+ 'review.diff': '代码变更',
653
+ 'review.empty': '暂无已记录的结果。',
654
+ 'review.loading': '正在加载结果证据…',
655
+ 'review.saving': '正在保存验证记录…',
656
+ 'review.saved': '验证证据已记录。',
657
+ 'native.approvalPolicy': '当前控制者可在此处理人工审批和交互请求。',
658
+ 'native.receipts': '持久投递回执',
659
+ 'native.output': '执行器输出',
660
+ 'native.draft': '消息草稿保存在此浏览器',
661
+ 'native.send': '将消息加入队列',
662
+ 'native.interrupt': '中断当前轮次',
663
+ 'native.read': '刷新回执',
664
+ 'native.reviewPending': '已核对,保留草稿',
665
+ 'native.closeConfirm': '确认停止此执行器',
666
+ 'native.close': '关闭执行器',
667
+ 'native.sameExecutor': '连接到原生执行器本身',
668
+ 'native.noReceipts': '暂无投递回执。',
669
+ 'native.noOutput': '暂无已记录的执行器输出。',
670
+ 'native.error': '执行错误',
671
+ 'native.event': '执行记录',
672
+ 'native.uncertain': '提交结果尚未确认,请核对持久回执后再发送;草稿已保留。',
673
+ 'native.queued': '已进入 HCC 队列,等待执行器接收。',
674
+ 'native.sending': '正在将消息加入 HCC 队列…',
675
+ 'native.invalidReceipt': '无法验证队列回执。',
676
+ 'native.interruptRequested': '已请求中断,请核对执行器状态。',
677
+ 'native.closed': '执行器已关闭。',
678
+ 'native.retained': '草稿已保留,再次发送会创建新提交。',
679
+ 'native.reviewConfirm': '是否已核对持久回执?再次发送可能重复已经排队的任务。保留草稿并清除未确认标记?',
680
+ 'native.delivery.queued': '已排队,等待投递',
681
+ 'native.delivery.dispatching': '正在提交给执行器',
682
+ 'native.delivery.submitted': '已提交,等待输出',
683
+ 'native.delivery.accepted': '已观察到执行器输出',
684
+ 'native.delivery.completed': '执行器轮次已完成',
685
+ 'native.delivery.failed': '执行失败',
686
+ 'native.delivery.uncertain': '接收结果不确定,需要核对',
687
+ 'native.state.new': '新建',
688
+ 'native.state.opening': '启动中',
689
+ 'native.state.idle': '空闲',
690
+ 'native.state.ready': '就绪',
691
+ 'native.state.busy': '工作中',
692
+ 'native.state.running': '运行中',
693
+ 'native.state.completed': '已完成此轮',
694
+ 'native.state.interrupting': '正在中断',
695
+ 'native.state.closing': '正在关闭',
696
+ 'native.state.closed': '已关闭',
697
+ 'native.state.disconnected': '已断开',
698
+ 'native.state.error': '错误',
699
+ 'native.state.uncertain': '状态不确定',
700
+ 'aux.history': 'Codex 历史',
701
+ 'aux.review': '结果审阅',
702
+ 'handoff.resumeConfirm': '我已停止原执行器;恢复历史会启动一个独立执行器。',
703
+ 'handoff.transport': 'Codex 接入方式',
704
+ 'handoff.cli': '终端 CLI',
705
+ 'handoff.appServer': '结构化 App Server(按需启用)',
706
+ 'handoff.claim': '取得控制',
707
+ 'handoff.takeover': '接管网页控制',
708
+ 'handoff.release': '释放控制',
709
+ 'handoff.reconnect': '重新连接',
710
+ 'handoff.controller': '正在控制此会话',
711
+ 'handoff.observer': '仅观察 · 输入已禁用',
712
+ 'handoff.disconnected': '连接已断开 · 草稿已保留',
713
+ 'handoff.connecting': '正在连接…',
714
+ 'handoff.localClients': '本地 tmux 客户端',
715
+ 'handoff.localBoundary': '本地终端仍可输入;网页控制权只协调 Web 客户端。',
716
+ 'handoff.localUnknown': '暂时无法确认本地 tmux 客户端状态',
717
+ 'handoff.noLocalClients': '未检测到本地 tmux 客户端',
718
+ 'handoff.leaveHelp': '关闭此页面会保留本地执行器。',
719
+ 'handoff.draft': '终端输入草稿',
720
+ 'handoff.draftPlaceholder': '在此编写终端输入,Ctrl+Enter 发送',
721
+ 'handoff.send': '发送并回车',
722
+ 'handoff.saved': '草稿已在此浏览器保存。发送时会附加回车。',
723
+ 'handoff.pending': '等待终端接收回执…',
724
+ 'handoff.uncertain': '未收到输入回执,请核对终端后再发送;草稿已保留。',
725
+ 'handoff.review': '已核对,保留草稿',
726
+ 'handoff.received': '终端已接收字节,执行结果或模型响应尚未确认。',
727
+ 'handoff.controlRequired': '请先取得网页控制权,再输入或调整终端尺寸。',
728
+ 'handoff.missingSelection': '上次选择的会话已不可用,请选择会话继续。',
729
+ 'handoff.task': '当前任务',
730
+ 'handoff.detach': '暂停网页接管',
731
+ 'handoff.terminate': '终止执行器',
732
+ 'handoff.detachHelp': '暂停网页接管,本地 tmux 继续运行。勾选选项会同时终止 tmux。',
733
+ 'handoff.terminateHelp': '此操作会终止执行器;释放网页控制或关闭页面会保留它。',
734
+ 'handoff.storageHint': '草稿保存在此浏览器;隐私模式或存储不可用时,持久保存可能受限。',
735
+ ...coreTranslations.zh,
736
+ settings: '设置',
737
+ close: '关闭',
738
+ system: '跟随系统',
739
+ 'setting.system': '跟随系统',
740
+ theme: '界面外观',
741
+ light: '浅色',
742
+ dark: '深色',
743
+ 'theme.light': '浅色',
744
+ 'theme.dark': '深色',
745
+ terminalTheme: '终端外观',
746
+ followsInterface: '跟随界面',
747
+ 'terminalTheme.system': '跟随界面',
748
+ 'terminalTheme.follow': '跟随界面',
749
+ density: '信息密度',
750
+ comfortable: '舒适',
751
+ compact: '紧凑',
752
+ 'density.comfortable': '舒适',
753
+ 'density.compact': '紧凑',
754
+ terminalFontSize: '终端字号',
755
+ fontSize: '终端字号',
756
+ focusMode: '专注模式',
757
+ exitFocus: '退出专注模式',
758
+ terminal: '终端',
759
+ navigation: '导航',
760
+ phase: '阶段',
761
+ why: '原因',
762
+ none: '无',
763
+ current: '当前任务',
764
+ claimed: '已认领任务',
765
+ by: '持有者',
766
+ locked: '已锁定',
767
+ unread: '未读',
768
+ active: '活跃',
769
+ stale: '过期',
770
+ root: '项目路径',
771
+ requestFailed: '请求失败',
772
+ details: '详情',
773
+ ownerActive: '负责人在线',
774
+ ownerStale: '负责人已过期',
775
+ ownerStaleNoLock: '负责人已过期;无活动锁',
776
+ ownerStaleLocks: '负责人已过期;活动锁',
777
+ loginTitle: '登录 hello-cc',
778
+ loginHelp: '输入启动 Web 控制台时显示的访问令牌。',
779
+ accessToken: '访问令牌',
780
+ tokenPlaceholder: '粘贴访问令牌',
781
+ signIn: '登录',
782
+ signingIn: '正在登录…',
783
+ invalidToken: '访问令牌无效,请检查后重试。',
784
+ networkError: '无法连接,请检查网络后重试。',
785
+ tokenRequired: '请输入访问令牌。',
786
+ stopConfirmation: '停止此会话?',
787
+ 'action.task-next': '认领下个任务',
788
+ 'action.heartbeat': '续期心跳',
789
+ 'action.register': '重新注册协作方',
790
+ 'action.lock-acquire': '获取锁',
791
+ 'action.lock-release': '释放锁',
792
+ 'action.task-takeover': '接管任务',
793
+ 'action.msg': '发送消息',
794
+ 'action.stop': '停止协作方',
795
+ 'action.restart': '恢复协作方',
796
+ dismiss: '关闭',
797
+ settingsHelp: '偏好设置保存在当前浏览器中。',
798
+ resetPreferences: '恢复默认设置',
799
+ 'error.unauthorized': '登录已过期,请重新登录。',
800
+ 'error.forbidden': '当前操作不被允许。',
801
+ 'error.not_found': '未找到请求的内容。',
802
+ 'error.invalid_request': '请检查提交的信息。',
803
+ 'error.conflict': '内容已发生变化,请刷新后重试。',
804
+ noPendingTasks: '没有待处理任务。',
805
+ lockReleased: '已释放锁',
806
+ noLock: '未找到锁',
807
+ renewedLocks: '已续期的锁',
808
+ registered: '已注册协作方',
809
+ 'conn.signed out': '已退出登录',
810
+ 'conn.signedOut': '已退出登录',
811
+ 'status.detached': '已断开',
812
+ 'status.busy': '忙碌',
813
+ 'status.working': '工作中',
814
+ 'status.work': '执行任务中',
815
+ 'status.handoff': '交接',
816
+ 'status.reply_message': '回复消息',
817
+ 'status.claim_task': '认领任务',
818
+ 'status.takeover_task': '接管任务',
819
+ 'status.acquire_lock': '获取锁',
820
+ 'status.coordinate_lock': '协调锁',
821
+ 'status.team_plan': '规划团队任务',
822
+ 'error.bad_request': '请检查提交的信息。',
823
+ 'error.bad_args': '请检查提交的信息。',
824
+ 'error.bad_state': '当前状态不允许执行此操作。',
825
+ 'error.method_not_allowed': '当前请求不支持此操作。',
826
+ 'error.session_not_running': '此会话已停止运行。',
827
+ 'error.request_too_large': '提交的内容过大。',
828
+ 'error.api_version_unsupported': '请刷新页面以使用当前 API 版本。',
829
+ 'error.csrf_origin': '无法验证请求,请从控制台自身地址打开页面。',
830
+ 'error.proxy_origin_mismatch': '控制台地址与代理配置不匹配。',
831
+ 'error.peer_identity_required': '请先连接正在运行的托管会话,再执行此操作。',
832
+ 'error.peer_identity_mismatch': '所选会话与目标协作方不匹配。',
833
+ 'error.lock_held': '其他协作方持有冲突锁。',
834
+ 'error.lock_owned': '此锁属于其他协作方。',
835
+ 'error.task_owned': '此任务属于其他协作方。',
836
+ 'error.task_assigned': '此任务已分配给其他协作方。',
837
+ 'error.subject_changed': '操作期间内容发生变化,请刷新后重试。',
838
+ 'error.registry_busy': '项目注册表繁忙,请稍后重试。',
839
+ 'error.server_error': '服务器无法完成请求。'
840
+ })
841
+ });