@khorsheed/dsh-room 0.2.2 → 0.2.3
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/CHANGELOG.md +53 -0
- package/README.en.md +29 -62
- package/README.i18n.yaml +2 -2
- package/README.md +28 -61
- package/lib/client.js +13097 -4182
- package/lib/index.js +4045 -730
- package/lib/journal-B4FOGO6S.js +482 -0
- package/lib/journal-Rid9AAnD.js +485 -0
- package/lib/tool.js +112 -166
- package/lib/typert.host.js +2031 -374
- package/lib/typert.remote-client.d.ts +34 -10
- package/lib/typert.remote-client.js +1599 -210
- package/lib/types/agent-setup.d.ts +1 -1
- package/lib/types/client/InviteAgentAction.js +4 -16
- package/lib/types/client/InviteDialog.d.ts +28 -6
- package/lib/types/client/InviteDialog.js +76 -12
- package/lib/types/client/MemberCard.d.ts +5 -1
- package/lib/types/client/MemberCard.js +4 -4
- package/lib/types/client/MembersView.d.ts +1 -1
- package/lib/types/client/MembersView.js +58 -22
- package/lib/types/client/RemoveMemberConfirm.d.ts +40 -0
- package/lib/types/client/RemoveMemberConfirm.js +85 -0
- package/lib/types/client/RoomApprovalView.d.ts +11 -0
- package/lib/types/client/RoomApprovalView.js +28 -0
- package/lib/types/client/RoomComposer.d.ts +1 -1
- package/lib/types/client/RoomComposer.js +195 -29
- package/lib/types/client/RoomDecisionView.d.ts +22 -0
- package/lib/types/client/RoomDecisionView.js +35 -0
- package/lib/types/client/RoomHelpView.d.ts +17 -0
- package/lib/types/client/RoomHelpView.js +56 -0
- package/lib/types/client/RoomInboxView.d.ts +10 -0
- package/lib/types/client/RoomInboxView.js +14 -0
- package/lib/types/client/RoomQuestionView.d.ts +13 -0
- package/lib/types/client/RoomQuestionView.js +61 -0
- package/lib/types/client/RoomRelayView.js +1 -1
- package/lib/types/client/RoomRunView.d.ts +3 -1
- package/lib/types/client/RoomRunView.js +12 -5
- package/lib/types/client/RoomSettingsView.d.ts +19 -0
- package/lib/types/client/RoomSettingsView.js +30 -0
- package/lib/types/client/RoomSpeechView.d.ts +22 -8
- package/lib/types/client/RoomSpeechView.js +94 -11
- package/lib/types/client/RoomStatsLine.d.ts +26 -5
- package/lib/types/client/RoomStatsLine.js +53 -7
- package/lib/types/client/RoomTaskCapsule.d.ts +19 -0
- package/lib/types/client/RoomTaskCapsule.js +37 -0
- package/lib/types/client/TasksTab.d.ts +41 -0
- package/lib/types/client/TasksTab.js +43 -0
- package/lib/types/client/TasksView.d.ts +44 -0
- package/lib/types/client/TasksView.js +149 -0
- package/lib/types/client/TeamView.d.ts +33 -0
- package/lib/types/client/TeamView.js +210 -0
- package/lib/types/client/at-menu.d.ts +127 -0
- package/lib/types/client/at-menu.js +173 -0
- package/lib/types/client/draft-chips.d.ts +67 -0
- package/lib/types/client/draft-chips.js +95 -0
- package/lib/types/client/executions.d.ts +0 -30
- package/lib/types/client/executions.js +4 -34
- package/lib/types/client/icons-local.d.ts +25 -0
- package/lib/types/client/icons-local.js +10 -0
- package/lib/types/client/icons.d.ts +2 -1
- package/lib/types/client/icons.js +1 -0
- package/lib/types/client/index.js +276 -72
- package/lib/types/client/locales.d.ts +482 -52
- package/lib/types/client/locales.js +490 -60
- package/lib/types/client/nodes.d.ts +112 -17
- package/lib/types/client/nodes.js +197 -26
- package/lib/types/client/slots.d.ts +117 -47
- package/lib/types/client/task-tag.d.ts +32 -0
- package/lib/types/client/task-tag.js +33 -0
- package/lib/types/client/tasks.d.ts +50 -0
- package/lib/types/client/tasks.js +82 -0
- package/lib/types/client/team.d.ts +73 -0
- package/lib/types/client/team.js +187 -0
- package/lib/types/decisions.d.ts +49 -0
- package/lib/types/decisions.js +101 -0
- package/lib/types/deliveries.d.ts +17 -1
- package/lib/types/deliveries.js +82 -6
- package/lib/types/dispatch.d.ts +92 -4
- package/lib/types/dispatch.js +477 -109
- package/lib/types/help.d.ts +137 -0
- package/lib/types/help.js +216 -0
- package/lib/types/helps.d.ts +26 -0
- package/lib/types/helps.js +47 -0
- package/lib/types/index.d.ts +292 -52
- package/lib/types/index.js +1415 -199
- package/lib/types/jobs.d.ts +22 -0
- package/lib/types/jobs.js +77 -0
- package/lib/types/journal.d.ts +17 -27
- package/lib/types/journal.js +120 -43
- package/lib/types/messaging.d.ts +65 -0
- package/lib/types/messaging.js +160 -0
- package/lib/types/plan-service.js +7 -1
- package/lib/types/report-gate.d.ts +81 -0
- package/lib/types/report-gate.js +89 -0
- package/lib/types/tool-definition.d.ts +43 -20
- package/lib/types/tool-definition.js +145 -212
- package/lib/types/tool.d.ts +2 -2
- package/lib/types/tool.js +3 -2
- package/lib/types/types.d.ts +755 -78
- package/locale/zh.json +1 -1
- package/package.json +3 -3
- package/lib/types/client/RoomActivityDock.d.ts +0 -19
- package/lib/types/client/RoomActivityDock.js +0 -105
- package/lib/types/client/RoomDockCapsules.d.ts +0 -64
- package/lib/types/client/RoomDockCapsules.js +0 -277
- package/lib/types/client/RoomPlanTab.d.ts +0 -15
- package/lib/types/client/RoomPlanTab.js +0 -13
- package/lib/types/client/RoomTaskLineView.d.ts +0 -13
- package/lib/types/client/RoomTaskLineView.js +0 -21
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
/** `room` namespace dictionaries. */
|
|
2
2
|
/** Simplified Chinese dictionary (the key-set source of truth). */
|
|
3
3
|
export const zh = {
|
|
4
|
-
'activity.status.settled': '已结束',
|
|
5
|
-
'activity.sessionTotal': '会话累计',
|
|
6
4
|
"activity.agents": "后台 Agent",
|
|
7
5
|
"activity.plan": "当前计划",
|
|
8
6
|
"activity.planDetails": "计划详情与运行限制",
|
|
@@ -90,7 +88,8 @@ export const zh = {
|
|
|
90
88
|
'action.inviteAgent': '+ 邀请 agent',
|
|
91
89
|
'view.members': '成员',
|
|
92
90
|
'members.empty': '暂无成员',
|
|
93
|
-
'composer.placeholder': '
|
|
91
|
+
'composer.placeholder': '跟{name}对话;@ 指定其他成员',
|
|
92
|
+
'composer.chipRemove': '移除{label}',
|
|
94
93
|
'composer.send': '发送',
|
|
95
94
|
'composer.stop': '停止生成',
|
|
96
95
|
'composer.error.unknownTargets': '未知成员:{names}',
|
|
@@ -111,6 +110,8 @@ export const zh = {
|
|
|
111
110
|
'todo.progress.pending': '{pending} 待处理',
|
|
112
111
|
'queue.count': '{n} 条排队消息',
|
|
113
112
|
'member.kind.main': '原生 DSH',
|
|
113
|
+
'member.kind.native': '原生 DSH · {preset}',
|
|
114
|
+
'member.kind.defaultPreset': '默认预设',
|
|
114
115
|
'action.copy': '复制',
|
|
115
116
|
'action.copied': '已复制',
|
|
116
117
|
'markdown.footnotes': '脚注',
|
|
@@ -119,6 +120,17 @@ export const zh = {
|
|
|
119
120
|
'speech.jump': '查看成员会话',
|
|
120
121
|
'speech.expand': '展开全部',
|
|
121
122
|
'speech.collapse': '收起',
|
|
123
|
+
'speech.reportedTo': '→ 已汇报给 {member}',
|
|
124
|
+
'speech.usage': '用量 {tokens} tok',
|
|
125
|
+
'speech.detail': '这一轮的请求明细',
|
|
126
|
+
'usage.title': '本轮用量',
|
|
127
|
+
'usage.route': '提供方 / 模型',
|
|
128
|
+
'usage.cacheHit': '缓存命中',
|
|
129
|
+
'usage.uncached': '未缓存输入',
|
|
130
|
+
'usage.cacheRead': '缓存读取',
|
|
131
|
+
'usage.cacheWrite': '缓存写入',
|
|
132
|
+
'usage.output': '输出',
|
|
133
|
+
'usage.duration': '耗时',
|
|
122
134
|
'run.working': '{member} 正在工作…',
|
|
123
135
|
'run.failed': '{member} 运行失败',
|
|
124
136
|
'run.stop': '停止',
|
|
@@ -129,42 +141,35 @@ export const zh = {
|
|
|
129
141
|
'relay.line': '⇢ {from} → {to}:{content}',
|
|
130
142
|
'relay.confirm': '确认派发',
|
|
131
143
|
'relay.dismiss': '忽略',
|
|
144
|
+
'relay.continue': '继续这条链',
|
|
145
|
+
'inbox.line': '📥 {member} 的收件箱里有 {count} 条回报,先攒着,等更多结果再一起交',
|
|
146
|
+
'inbox.why': '决策模型:现在交的可能 {p}',
|
|
147
|
+
'inbox.release': '现在交给 {member}',
|
|
148
|
+
'relay.stop': '到此为止',
|
|
149
|
+
'relay.reason.confirm': '等你确认',
|
|
150
|
+
'relay.reason.hop-limit': '已到跳数上限',
|
|
151
|
+
'relay.reason.paused': '房间已暂停',
|
|
132
152
|
'relay.state.confirmed': '(已确认,派发中)',
|
|
133
153
|
'relay.state.dismissed': '(已忽略)',
|
|
134
154
|
'relay.state.sent': '(已送达)',
|
|
135
|
-
'tasks.capsule': '当前进度',
|
|
136
|
-
'tasks.chat': '聊天任务',
|
|
137
|
-
'tasks.doing': '在做',
|
|
138
|
-
'tasks.filter.all': '全部',
|
|
139
|
-
'tasks.blocked': '等 {member}',
|
|
140
|
-
'tasks.status.pending': '待开始',
|
|
141
|
-
'tasks.status.in_progress': '进行中',
|
|
142
|
-
'tasks.status.done': '已完成',
|
|
143
|
-
'tasks.status.cancelled': '已取消',
|
|
144
|
-
'tasks.status.failed': '失败',
|
|
145
|
-
'tasks.close': '完成',
|
|
146
|
-
'tasks.dismiss': '关闭',
|
|
147
|
-
'tasks.add': '添加',
|
|
148
|
-
'tasks.addMember': '任务成员',
|
|
149
|
-
'tasks.addPlaceholder': '新任务…',
|
|
150
|
-
'tasks.addBlockedBy': '等待成员(可选)',
|
|
151
|
-
'tasks.addBlockedByNone': '不等谁',
|
|
152
|
-
'tasks.addTrigger': '添加任务',
|
|
153
|
-
'goal.label': '目标',
|
|
154
155
|
'goal.set': '+ 设定目标',
|
|
155
156
|
'goal.placeholder': '本房间的目标…',
|
|
156
157
|
'goal.edit': '编辑',
|
|
157
158
|
'goal.save': '保存',
|
|
158
159
|
'goal.cancel': '取消',
|
|
159
|
-
'goal.recent': '推进记录',
|
|
160
|
-
'goal.noAdvances': '暂无推进记录',
|
|
161
|
-
'advance.line': '✓ {member} 完成了「{title}」',
|
|
162
|
-
'advance.progress': '── 目标进度 {done}/{total}',
|
|
163
160
|
'time.justNow': '刚刚',
|
|
164
161
|
'time.minutesAgo': '{count} 分钟前',
|
|
165
162
|
'time.hoursAgo': '{count} 小时前',
|
|
166
163
|
'time.daysAgo': '{count} 天前',
|
|
167
164
|
'stats.counts': '{turns} 轮 · {steps} 步',
|
|
165
|
+
'stats.members': '成员 {count} 位 · {tokens} tok',
|
|
166
|
+
'stats.membersNoTokens': '成员 {count} 位',
|
|
167
|
+
'stats.membersTitle': '成员用量',
|
|
168
|
+
'stats.col.member': '成员',
|
|
169
|
+
'stats.col.model': '模型',
|
|
170
|
+
'stats.col.rounds': '轮',
|
|
171
|
+
'stats.col.tokens': '用量',
|
|
172
|
+
'stats.col.time': '耗时',
|
|
168
173
|
'stats.llm': 'LLM {duration}',
|
|
169
174
|
'stats.toolCall': '工具调用 {duration}',
|
|
170
175
|
'stats.ttftAverage': '首 token 平均 {duration}',
|
|
@@ -184,13 +189,110 @@ export const zh = {
|
|
|
184
189
|
'members.instructions.collapse': '收起',
|
|
185
190
|
'members.edit': '编辑',
|
|
186
191
|
'members.remove': '移除',
|
|
187
|
-
'members.
|
|
192
|
+
'members.count': '成员 {count}',
|
|
193
|
+
'members.runningCount': '· {count} 运行中',
|
|
194
|
+
'team.title': '团队',
|
|
195
|
+
'collab.title': '协作',
|
|
196
|
+
'team.open': '团队',
|
|
197
|
+
'team.locate': '在团队中定位',
|
|
198
|
+
'team.you': '你',
|
|
199
|
+
'team.summary': '{members} 成员 · {running} 运行中 · {deliveries} 次派活 · {tokens} tok · {time}',
|
|
200
|
+
'team.stats': '{tokens} tok · {time} · {rounds} 轮',
|
|
201
|
+
'team.crossTask': '{from} 派活 {count}',
|
|
202
|
+
'team.alsoFrom': '另有 {list}',
|
|
203
|
+
'team.legend.pill': '节点上方:派 = 收到的派活 · 回 = 已回报 · 知会 = 只是告知',
|
|
204
|
+
'team.pillTasks': '派 {count}',
|
|
205
|
+
'team.pillReports': '· 回 {count}',
|
|
206
|
+
'team.pillNotify': '· 知会 {count}',
|
|
207
|
+
'team.more': '+{count} 位成员',
|
|
208
|
+
'team.from': '来自 {from}',
|
|
209
|
+
'team.fromNotify': '{from} 知会',
|
|
210
|
+
'team.kind.report': '回报',
|
|
211
|
+
'team.noDeliveries': '还没有收到过消息',
|
|
212
|
+
'team.pick': '点一个成员看详情',
|
|
213
|
+
'team.openSession': '打开它的会话 →',
|
|
214
|
+
'team.external.helper': '外援',
|
|
215
|
+
'members.linked': '外部会话',
|
|
216
|
+
'members.linkedOpen': '打开原会话 →',
|
|
217
|
+
'help.nudge': '已经向它求助 {count} 次了,要不要加入房间成员?',
|
|
218
|
+
'help.nudgeLink': '加入房间成员',
|
|
219
|
+
'help.nudgeDismiss': '不用了',
|
|
220
|
+
'team.external.linked': '外部会话',
|
|
221
|
+
'team.external.session': '外部会话',
|
|
222
|
+
'team.external.room': '其他协作间',
|
|
223
|
+
'team.external.asks': '求助 {count} 次',
|
|
224
|
+
'team.external.link': '加入房间成员',
|
|
225
|
+
'team.external.unlink': '移出成员列表',
|
|
226
|
+
'team.external.note': '它在自己的会话里干活,用量算在它自己的会话里,不计入房间统计。',
|
|
227
|
+
'team.status.queued': '排队中',
|
|
228
|
+
'team.status.held': '在收件箱',
|
|
229
|
+
'team.status.running': '运行中',
|
|
230
|
+
'team.status.done': '完成',
|
|
231
|
+
'team.status.cancelled': '已取消',
|
|
232
|
+
'team.status.failed': '失败',
|
|
233
|
+
'team.status.uncertain': '结果不确定',
|
|
234
|
+
'settings.title': '协作设置',
|
|
235
|
+
'settings.messages': '成员之间的消息',
|
|
236
|
+
'settings.messagesHint': '自由通信:成员直接互发,对方立刻收到;需我确认:先停在房间里,等你放行。协调者派活不受影响。',
|
|
237
|
+
'settings.free': '自由通信',
|
|
238
|
+
'settings.confirm': '需我确认',
|
|
239
|
+
'settings.hops': '消息链跳数上限',
|
|
240
|
+
'settings.hopsHint': '从你的一条消息开始,每次投递和回报都算一跳;到上限后停下,在房间里等你决定是否继续,防止成员互相来回。',
|
|
241
|
+
'settings.hopSummary': '跳数上限 {count}',
|
|
242
|
+
'settings.hopsLess': '减少',
|
|
243
|
+
'settings.hopsMore': '增加',
|
|
244
|
+
'settings.pause': '暂停房间',
|
|
245
|
+
'settings.pauseHint': '运行中的轮次照常跑完;成员之间的新消息和回报先排队,取消暂停后按顺序投递。你自己发的消息不受影响。',
|
|
246
|
+
'settings.pausedSummary': '已暂停',
|
|
247
|
+
'settings.groupCollab': '协作',
|
|
248
|
+
'settings.groupAuto': '自动判断',
|
|
249
|
+
'settings.autoFiling': '自动任务分类',
|
|
250
|
+
'settings.autoFilingHint': '没有其他明确规则时,由决策模型判断你的新消息是新任务,还是合并到已有任务。',
|
|
251
|
+
'settings.autoReport': '自动判断汇报时机',
|
|
252
|
+
'settings.autoReportHint': '成员结果回来时,自动判断是立即汇报,还是稍后统一汇报。关闭后结果一到就汇报。',
|
|
253
|
+
'settings.reportThreshold': '立即汇报阈值',
|
|
254
|
+
'settings.reportThresholdHint': '决策模型判断应立即汇报的概率不低于此值时立即汇报;阈值越高,越倾向于统一汇报。',
|
|
255
|
+
'settings.reportWait': '最长等待时间',
|
|
256
|
+
'settings.reportWaitHint': '待统一汇报的结果最多等待这么久,到时一并汇报。',
|
|
257
|
+
'settings.minutes': '{count} 分钟',
|
|
258
|
+
'settings.helpReminder': '求助提醒',
|
|
259
|
+
'settings.helpReminderHint': '向别的会话求助后,这么久还没回信,房间里那一行标黄提醒。不会自动取消。',
|
|
260
|
+
'settings.less': '减少',
|
|
261
|
+
'settings.more': '增加',
|
|
262
|
+
'remove.title': '移除 {member}?',
|
|
263
|
+
'remove.idle': '它现在空闲,没有排队的消息和未完成的任务。',
|
|
264
|
+
'remove.running': '正在运行,会先停止',
|
|
265
|
+
'remove.runningTask': '正在运行「{task}」,会先停止',
|
|
266
|
+
'remove.queued': '{count} 条排队中的消息将取消',
|
|
267
|
+
'remove.waiting': '{members} 在等它的回报,会收到「未完成:已移除」',
|
|
268
|
+
'remove.keep': '它的会话和历史保留,移除后 5 秒内可以撤销。',
|
|
269
|
+
'remove.coordinator': '它是当前的协调者,不能直接移除。先在另一位成员的卡片上点「设为协调者」,再回来移除。',
|
|
270
|
+
'remove.ok': '知道了',
|
|
271
|
+
'remove.cancel': '取消',
|
|
272
|
+
'remove.confirm': '移除',
|
|
273
|
+
'remove.stopAndRemove': '停止并移除',
|
|
274
|
+
'remove.undo': '撤销',
|
|
275
|
+
'remove.done': '已移除 {member}',
|
|
276
|
+
'remove.done.sep': ',',
|
|
277
|
+
'remove.done.stopped': '已停止当前一轮',
|
|
278
|
+
'remove.done.queued': '取消 {count} 条排队消息',
|
|
279
|
+
'remove.done.notified': '已告知 {members}',
|
|
188
280
|
'members.invite': '+ 邀请成员',
|
|
189
281
|
'invite.title': '邀请成员',
|
|
190
282
|
'invite.title.edit': '编辑 {member}',
|
|
191
283
|
'invite.provider': 'Provider',
|
|
192
284
|
'invite.name': '称呼(@ 寻址名)',
|
|
193
285
|
'invite.nameHint': '唯一、无空白、不含 @',
|
|
286
|
+
'invite.role': '职责',
|
|
287
|
+
'invite.native': '原生 dsh 子成员',
|
|
288
|
+
'invite.nativeHint': '在本宿主里开一个独立的 dsh 会话,带上所选 preset 的全部插件能力',
|
|
289
|
+
'invite.preset': '预设',
|
|
290
|
+
'invite.presetHint': '邀请后锁定,要换就另外邀请一位',
|
|
291
|
+
'invite.cliPreset': '模式',
|
|
292
|
+
'invite.cliPresetNone': '不带模式',
|
|
293
|
+
'invite.cliPresetHint': '选一个模式,它就能调用该模式里的插件工具(比如剪辑);自己的 shell、文件工具照常用。邀请后锁定',
|
|
294
|
+
'invite.rolePlaceholder': '例如:代码审查',
|
|
295
|
+
'invite.roleHint': '一句短语,其他成员和团队视图只看到这一项;细节写在指令里',
|
|
194
296
|
'invite.randomName': '随机起名',
|
|
195
297
|
'invite.preview': '预览',
|
|
196
298
|
'invite.previewName': '新成员',
|
|
@@ -200,9 +302,9 @@ export const zh = {
|
|
|
200
302
|
'invite.browse': '浏览…',
|
|
201
303
|
'invite.browseFailed': '目录选择器不可用(主机未提供 native 选择能力)',
|
|
202
304
|
'invite.cwdReset': '清除,恢复继承',
|
|
203
|
-
'invite.instructions': '
|
|
204
|
-
'invite.instructionsHint': '
|
|
205
|
-
'invite.instructionsHintEdit': '
|
|
305
|
+
'invite.instructions': '指令(只给它自己)',
|
|
306
|
+
'invite.instructionsHint': '随它收到的第一条消息一起给它,其他成员看不到;之后可编辑。留空则不带指令,入列后随时 @ 它安排任务',
|
|
307
|
+
'invite.instructionsHintEdit': '改动会随它收到的下一条消息告诉它一次;清空后不再带指令',
|
|
206
308
|
'invite.instructionsPlaceholder': '你是这个 room 的后端工程师,负责 API 设计,回答保持简洁…',
|
|
207
309
|
'invite.firstTask': '首个任务(可选)',
|
|
208
310
|
'invite.firstTaskHint': '留空则成员入列待命',
|
|
@@ -224,16 +326,127 @@ export const zh = {
|
|
|
224
326
|
'invite.facadeMissing': 'local-agent 委派门面未挂载——CLI 成员暂不可邀请(主 agent 成员不受影响)',
|
|
225
327
|
'invite.error.duplicate': '名字已被占用',
|
|
226
328
|
'invite.error.invalid': '名字需非空、无空白、不含 @',
|
|
329
|
+
'invite.error.roleTooLong': '职责最多 30 个字,细节写在指令里',
|
|
227
330
|
'invite.error.unavailable': 'local-agent 委派门面不可用',
|
|
228
331
|
'invite.error.unknownProvider': '未知 provider:{provider}(可用:{available})',
|
|
229
332
|
'invite.error.generic': '操作失败,请重试',
|
|
230
333
|
'invite.success.task': '已邀请 {member} 并开始工作',
|
|
231
334
|
'invite.success.idle': '{member} 已加入 room',
|
|
335
|
+
'job.title': '任务',
|
|
336
|
+
'job.filter.running': '进行中',
|
|
337
|
+
'job.filter.attention': '需要处理',
|
|
338
|
+
'job.filter.done': '已完成',
|
|
339
|
+
'job.filter.all': '全部',
|
|
340
|
+
'job.new': '+ 新任务',
|
|
341
|
+
'job.tagNew': '新任务',
|
|
342
|
+
'job.empty': '还没有任务。给成员发消息,引发的工作会自动成为任务。',
|
|
343
|
+
'job.emptyFilter': '这一栏没有任务',
|
|
344
|
+
'job.back': '全部任务',
|
|
345
|
+
'job.number': '任务 {number}',
|
|
346
|
+
'job.status.running': '进行中',
|
|
347
|
+
'job.status.attention': '需要处理',
|
|
348
|
+
'job.status.done': '已完成',
|
|
349
|
+
'job.status.stopped': '已停止',
|
|
350
|
+
'job.elapsed': '用时 {time}',
|
|
351
|
+
'job.you': '你:',
|
|
352
|
+
'job.by.human': '你指定的',
|
|
353
|
+
'job.by.coordinator': '协调者归入',
|
|
354
|
+
'job.by.model': '决策模型归入 · {probability}',
|
|
355
|
+
'job.stop': '停止整个任务',
|
|
356
|
+
'job.stopConfirm': '会停掉 {members} 正在做和排队的工作;已经做完的不受影响。',
|
|
357
|
+
'job.stopYes': '停止',
|
|
358
|
+
'job.followUp': '追问这个任务',
|
|
359
|
+
'job.followUpHint': '在主输入框里写,带「{label}」标签',
|
|
360
|
+
'job.waiting': '等 {member}',
|
|
361
|
+
'job.need': '需要你处理',
|
|
362
|
+
'job.relay': '{from} 发给 {to} 的消息在等你放行',
|
|
363
|
+
'job.relayConfirm': '放行',
|
|
364
|
+
'job.relayDismiss': '不发',
|
|
365
|
+
'job.goal': '房间目标',
|
|
366
|
+
'job.goalNone': '还没有目标',
|
|
367
|
+
'job.goalTag': '正式目标 · {objective}',
|
|
368
|
+
'job.subtasks': '子任务',
|
|
369
|
+
'job.timeline': '时间线',
|
|
370
|
+
'job.notify': '知会',
|
|
371
|
+
'job.seg.queue': '排队',
|
|
372
|
+
'job.seg.held': '等交出',
|
|
373
|
+
'job.seg.exec': '执行',
|
|
374
|
+
'job.node.stop': '停止',
|
|
375
|
+
'job.node.session': '会话 →',
|
|
376
|
+
'job.capsule.running': '{count} 个任务进行中',
|
|
377
|
+
'job.capsule.idle': '任务 {count}',
|
|
378
|
+
'job.capsule.attention': '⚠ {count} 件需要处理',
|
|
379
|
+
'job.tagRemove': '去掉标签,交给 dsh 判断归属',
|
|
380
|
+
'job.tagPlaceholder': '补充或追问…(发出后归到「{label}」)',
|
|
381
|
+
'job.tagPlaceholderNew': '写下要做的新事…(不会归进进行中的任务)',
|
|
382
|
+
'job.queueUncertain': '⚠ 这一轮被实例重启打断,结果不明——再给它发消息就按没做完处理,也可以到任务页核对:{text}',
|
|
383
|
+
'job.queueBlocked': '等上一轮核对:{text}',
|
|
384
|
+
'approval.line': '⚠ {member} 要你确认:调用 {tool}',
|
|
385
|
+
'approval.allow': '允许一次',
|
|
386
|
+
'approval.reject': '拒绝',
|
|
387
|
+
'approval.state.allowed-once': '(已允许)',
|
|
388
|
+
'approval.state.rejected': '(已拒绝)',
|
|
389
|
+
'approval.state.cancelled': '(已取消)',
|
|
390
|
+
'approval.expired': '这次确认已经结束了',
|
|
391
|
+
'composer.at.label': '@ 候选',
|
|
392
|
+
'composer.at.members': '本房间成员',
|
|
393
|
+
'composer.at.recent': '最近的会话',
|
|
394
|
+
'composer.at.sessions': '其他会话',
|
|
395
|
+
'composer.at.session': '会话',
|
|
396
|
+
'composer.at.sessionAt': '会话 · {time}',
|
|
397
|
+
'composer.at.more': '继续输入可搜索更多会话',
|
|
398
|
+
'composer.at.room': '协作间',
|
|
399
|
+
'composer.at.expand': '展开成员',
|
|
400
|
+
'composer.at.collapse': '收起成员',
|
|
401
|
+
'help.title': '{from} 向「{target}」求助',
|
|
402
|
+
'help.state.queued': '已送达 · 对方正忙,排队中',
|
|
403
|
+
'help.state.running': '对方处理中',
|
|
404
|
+
'help.state.asking': '对方在追问',
|
|
405
|
+
'help.state.replied': '已回信',
|
|
406
|
+
'help.state.failed': '没送到',
|
|
407
|
+
'help.expand': '看求助内容',
|
|
408
|
+
'help.collapse': '收起',
|
|
409
|
+
'help.open': '打开对方会话 →',
|
|
410
|
+
'help.request': '求助',
|
|
411
|
+
'help.msg.question': '对方追问',
|
|
412
|
+
'help.msg.reply': '对方回信',
|
|
413
|
+
'help.msg.fallback': '对方回信(这一轮的最后答复)',
|
|
414
|
+
'help.msg.message': '{from} 补充',
|
|
415
|
+
'help.handoff': '交接',
|
|
416
|
+
'help.waited': ' · 已等 {minutes} 分钟',
|
|
417
|
+
'help.card.request': '来自协作间「{room}」· {from} 的求助',
|
|
418
|
+
'help.card.message': '来自协作间「{room}」· {from} 的补充',
|
|
419
|
+
'help.card.back': '回到协作间 →',
|
|
420
|
+
'help.card.to': ' → 交给 {member}',
|
|
421
|
+
'help.card.held': '房间暂停中,恢复后处理',
|
|
422
|
+
'help.card.more': '展开',
|
|
423
|
+
'help.card.less': '收起',
|
|
424
|
+
'decision.open': '查看判断',
|
|
425
|
+
'decision.filing.task': '合并到任务 {number} · {title}',
|
|
426
|
+
'decision.filing.new': '判断为新任务',
|
|
427
|
+
'decision.filing.unavailable': '决策模型不可用,按新任务处理',
|
|
428
|
+
'decision.filing.failed': '决策模型没有给出判断,按新任务处理',
|
|
429
|
+
'decision.report.now': '{from} 的结果立即汇报给 {to}',
|
|
430
|
+
'decision.report.later': '{from} 的结果稍后统一汇报给 {to}',
|
|
431
|
+
'decision.report.rule': '{from} 的结果立即汇报给 {to}({rule})',
|
|
432
|
+
'decision.report.unavailable': '决策模型不可用,{from} 的结果立即汇报给 {to}',
|
|
433
|
+
'decision.report.failed': '决策模型没有给出判断,{from} 的结果立即汇报给 {to}',
|
|
434
|
+
'decision.rule.failure': '成员没有正常完成',
|
|
435
|
+
'decision.rule.last': '最后一个结果',
|
|
436
|
+
'question.title': '{member} 问你',
|
|
437
|
+
'question.other': '其他',
|
|
438
|
+
'question.otherPlaceholder': '写下你的回答…',
|
|
439
|
+
'question.submit': '提交回答',
|
|
440
|
+
'question.multi': '可多选',
|
|
441
|
+
'question.answered': '已回答',
|
|
442
|
+
'question.cancelled': '已过期,未作答',
|
|
443
|
+
'question.answer': '你的回答:{answer}',
|
|
444
|
+
'question.expired': '这组问题已经结束了',
|
|
445
|
+
'invite.modelLabel': '模型',
|
|
446
|
+
'invite.lockedNote': '邀请时定下,要换就另外邀请一位',
|
|
232
447
|
};
|
|
233
448
|
/** English dictionary, checked complete against the zh key set. */
|
|
234
449
|
export const en = {
|
|
235
|
-
'activity.status.settled': 'Finished',
|
|
236
|
-
'activity.sessionTotal': 'Session total',
|
|
237
450
|
"activity.agents": "Background agents",
|
|
238
451
|
"activity.plan": "Current plan",
|
|
239
452
|
"activity.planDetails": "Plan details and limits",
|
|
@@ -321,7 +534,8 @@ export const en = {
|
|
|
321
534
|
'action.inviteAgent': '+ Invite agent',
|
|
322
535
|
'view.members': 'Members',
|
|
323
536
|
'members.empty': 'No members yet',
|
|
324
|
-
'composer.placeholder': 'Talk to
|
|
537
|
+
'composer.placeholder': 'Talk to {name}; @ a member to dispatch',
|
|
538
|
+
'composer.chipRemove': 'Remove {label}',
|
|
325
539
|
'composer.send': 'Send',
|
|
326
540
|
'composer.stop': 'Stop generating',
|
|
327
541
|
'composer.error.unknownTargets': 'Unknown members: {names}',
|
|
@@ -342,6 +556,8 @@ export const en = {
|
|
|
342
556
|
'todo.progress.pending': '{pending} pending',
|
|
343
557
|
'queue.count': '{n} queued messages',
|
|
344
558
|
'member.kind.main': 'Native DSH',
|
|
559
|
+
'member.kind.native': 'Native DSH · {preset}',
|
|
560
|
+
'member.kind.defaultPreset': 'default preset',
|
|
345
561
|
'action.copy': 'Copy',
|
|
346
562
|
'action.copied': 'Copied',
|
|
347
563
|
'markdown.footnotes': 'Footnotes',
|
|
@@ -350,6 +566,17 @@ export const en = {
|
|
|
350
566
|
'speech.jump': 'Open the member session',
|
|
351
567
|
'speech.expand': 'Show all',
|
|
352
568
|
'speech.collapse': 'Show less',
|
|
569
|
+
'speech.reportedTo': '→ reported to {member}',
|
|
570
|
+
'speech.usage': 'Usage {tokens} tok',
|
|
571
|
+
'speech.detail': 'This round\'s request details',
|
|
572
|
+
'usage.title': 'This round\'s usage',
|
|
573
|
+
'usage.route': 'Provider / model',
|
|
574
|
+
'usage.cacheHit': 'Cache hit',
|
|
575
|
+
'usage.uncached': 'Uncached input',
|
|
576
|
+
'usage.cacheRead': 'Cache read',
|
|
577
|
+
'usage.cacheWrite': 'Cache write',
|
|
578
|
+
'usage.output': 'Output',
|
|
579
|
+
'usage.duration': 'Run time',
|
|
353
580
|
'run.working': '{member} is working…',
|
|
354
581
|
'run.failed': "{member}'s run failed",
|
|
355
582
|
'run.stop': 'Stop',
|
|
@@ -360,42 +587,35 @@ export const en = {
|
|
|
360
587
|
'relay.line': '⇢ {from} → {to}: {content}',
|
|
361
588
|
'relay.confirm': 'Confirm',
|
|
362
589
|
'relay.dismiss': 'Dismiss',
|
|
590
|
+
'relay.continue': 'Continue the chain',
|
|
591
|
+
'inbox.line': '📥 {count} report(s) wait in {member}\'s inbox until more results arrive',
|
|
592
|
+
'inbox.why': 'decision model: hand over now {p}',
|
|
593
|
+
'inbox.release': 'Hand to {member} now',
|
|
594
|
+
'relay.stop': 'Stop here',
|
|
595
|
+
'relay.reason.confirm': 'Awaiting you',
|
|
596
|
+
'relay.reason.hop-limit': 'Hop limit reached',
|
|
597
|
+
'relay.reason.paused': 'Room paused',
|
|
363
598
|
'relay.state.confirmed': '(confirmed, dispatching)',
|
|
364
599
|
'relay.state.dismissed': '(dismissed)',
|
|
365
600
|
'relay.state.sent': '(delivered)',
|
|
366
|
-
'tasks.capsule': 'Progress',
|
|
367
|
-
'tasks.chat': 'Chat tasks',
|
|
368
|
-
'tasks.doing': 'doing',
|
|
369
|
-
'tasks.filter.all': 'All',
|
|
370
|
-
'tasks.blocked': 'waiting on {member}',
|
|
371
|
-
'tasks.status.pending': 'pending',
|
|
372
|
-
'tasks.status.in_progress': 'in progress',
|
|
373
|
-
'tasks.status.done': 'done',
|
|
374
|
-
'tasks.status.cancelled': 'cancelled',
|
|
375
|
-
'tasks.status.failed': 'failed',
|
|
376
|
-
'tasks.close': 'Done',
|
|
377
|
-
'tasks.dismiss': 'Dismiss',
|
|
378
|
-
'tasks.add': 'Add',
|
|
379
|
-
'tasks.addMember': 'Task member',
|
|
380
|
-
'tasks.addPlaceholder': 'New task…',
|
|
381
|
-
'tasks.addBlockedBy': 'Waiting on (optional)',
|
|
382
|
-
'tasks.addBlockedByNone': 'Not waiting',
|
|
383
|
-
'tasks.addTrigger': 'Add task',
|
|
384
|
-
'goal.label': 'Goal',
|
|
385
601
|
'goal.set': '+ Set a goal',
|
|
386
602
|
'goal.placeholder': "The room's goal…",
|
|
387
603
|
'goal.edit': 'Edit',
|
|
388
604
|
'goal.save': 'Save',
|
|
389
605
|
'goal.cancel': 'Cancel',
|
|
390
|
-
'goal.recent': 'Advances',
|
|
391
|
-
'goal.noAdvances': 'No advances yet',
|
|
392
|
-
'advance.line': '✓ {member} finished "{title}"',
|
|
393
|
-
'advance.progress': '── goal {done}/{total}',
|
|
394
606
|
'time.justNow': 'just now',
|
|
395
607
|
'time.minutesAgo': '{count}m ago',
|
|
396
608
|
'time.hoursAgo': '{count}h ago',
|
|
397
609
|
'time.daysAgo': '{count}d ago',
|
|
398
610
|
'stats.counts': '{turns} turns · {steps} steps',
|
|
611
|
+
'stats.members': '{count} members · {tokens} tok',
|
|
612
|
+
'stats.membersNoTokens': '{count} members',
|
|
613
|
+
'stats.membersTitle': 'Member usage',
|
|
614
|
+
'stats.col.member': 'Member',
|
|
615
|
+
'stats.col.model': 'Model',
|
|
616
|
+
'stats.col.rounds': 'Rounds',
|
|
617
|
+
'stats.col.tokens': 'Usage',
|
|
618
|
+
'stats.col.time': 'Time',
|
|
399
619
|
'stats.llm': 'LLM {duration}',
|
|
400
620
|
'stats.toolCall': 'Tool call {duration}',
|
|
401
621
|
'stats.ttftAverage': 'TTFT avg {duration}',
|
|
@@ -415,13 +635,110 @@ export const en = {
|
|
|
415
635
|
'members.instructions.collapse': 'Less',
|
|
416
636
|
'members.edit': 'Edit',
|
|
417
637
|
'members.remove': 'Remove',
|
|
418
|
-
'members.
|
|
638
|
+
'members.count': 'Members {count}',
|
|
639
|
+
'members.runningCount': '· {count} running',
|
|
640
|
+
'team.title': 'Team',
|
|
641
|
+
'collab.title': 'Collaboration',
|
|
642
|
+
'team.open': 'Team',
|
|
643
|
+
'team.locate': 'Show in team',
|
|
644
|
+
'team.you': 'You',
|
|
645
|
+
'team.summary': '{members} members · {running} running · {deliveries} tasks · {tokens} tok · {time}',
|
|
646
|
+
'team.stats': '{tokens} tok · {time} · {rounds} rounds',
|
|
647
|
+
'team.crossTask': '{from}: {count} tasks',
|
|
648
|
+
'team.alsoFrom': 'also {list}',
|
|
649
|
+
'team.legend.pill': 'On each node: tasks received · reported back · FYIs',
|
|
650
|
+
'team.pillTasks': '{count} tasks',
|
|
651
|
+
'team.pillReports': '· {count} back',
|
|
652
|
+
'team.pillNotify': '· {count} FYI',
|
|
653
|
+
'team.more': '+{count} members',
|
|
654
|
+
'team.from': 'from {from}',
|
|
655
|
+
'team.fromNotify': 'FYI from {from}',
|
|
656
|
+
'team.kind.report': 'report',
|
|
657
|
+
'team.noDeliveries': 'No messages yet',
|
|
658
|
+
'team.pick': 'Pick a member for details',
|
|
659
|
+
'team.openSession': 'Open its session →',
|
|
660
|
+
'team.external.helper': 'Helper',
|
|
661
|
+
'members.linked': 'Outside sessions',
|
|
662
|
+
'members.linkedOpen': 'Open its session →',
|
|
663
|
+
'help.nudge': 'Asked {count} times now — add it to the room\'s members?',
|
|
664
|
+
'help.nudgeLink': 'Add to members',
|
|
665
|
+
'help.nudgeDismiss': 'No thanks',
|
|
666
|
+
'team.external.linked': 'Outside session',
|
|
667
|
+
'team.external.session': 'Outside session',
|
|
668
|
+
'team.external.room': 'Another room',
|
|
669
|
+
'team.external.asks': 'asked {count}×',
|
|
670
|
+
'team.external.link': 'Add to members',
|
|
671
|
+
'team.external.unlink': 'Remove from members',
|
|
672
|
+
'team.external.note': 'It works in its own session; its usage stays there and is not counted in the room.',
|
|
673
|
+
'team.status.queued': 'queued',
|
|
674
|
+
'team.status.held': 'in inbox',
|
|
675
|
+
'team.status.running': 'running',
|
|
676
|
+
'team.status.done': 'done',
|
|
677
|
+
'team.status.cancelled': 'cancelled',
|
|
678
|
+
'team.status.failed': 'failed',
|
|
679
|
+
'team.status.uncertain': 'uncertain',
|
|
680
|
+
'settings.title': 'Collaboration',
|
|
681
|
+
'settings.messages': 'Messages between members',
|
|
682
|
+
'settings.messagesHint': 'Free: members message each other directly. Ask me: messages wait in the room until you release them. Coordinator delegations are unaffected.',
|
|
683
|
+
'settings.free': 'Free',
|
|
684
|
+
'settings.confirm': 'Ask me',
|
|
685
|
+
'settings.hops': 'Hop limit per chain',
|
|
686
|
+
'settings.hopsHint': 'Counting from one of your messages, every delivery and report is a hop; at the limit the room stops and waits for you, so members cannot bounce messages forever.',
|
|
687
|
+
'settings.hopSummary': 'hop limit {count}',
|
|
688
|
+
'settings.hopsLess': 'Fewer',
|
|
689
|
+
'settings.hopsMore': 'More',
|
|
690
|
+
'settings.pause': 'Pause the room',
|
|
691
|
+
'settings.pauseHint': 'Running rounds finish; new member messages and reports queue and are delivered in order when you resume. Your own messages are unaffected.',
|
|
692
|
+
'settings.pausedSummary': 'paused',
|
|
693
|
+
'settings.groupCollab': 'Collaboration',
|
|
694
|
+
'settings.groupAuto': 'Automatic decisions',
|
|
695
|
+
'settings.autoFiling': 'Automatic task filing',
|
|
696
|
+
'settings.autoFilingHint': 'When no explicit rule applies, the decision model judges whether your new message starts a new task or joins an open one.',
|
|
697
|
+
'settings.autoReport': 'Automatic report timing',
|
|
698
|
+
'settings.autoReportHint': 'When a member result comes back, judge whether to report it at once or together later. Off: report every result as it arrives.',
|
|
699
|
+
'settings.reportThreshold': 'Report-now threshold',
|
|
700
|
+
'settings.reportThresholdHint': 'Report at once when the decision model\'s report-now probability is at least this value; higher leans toward reporting together.',
|
|
701
|
+
'settings.reportWait': 'Longest wait',
|
|
702
|
+
'settings.reportWaitHint': 'Results waiting to be reported together wait at most this long, then go out together.',
|
|
703
|
+
'settings.minutes': '{count} min',
|
|
704
|
+
'settings.helpReminder': 'Help reminder',
|
|
705
|
+
'settings.helpReminderHint': 'When a help request to another session gets no reply this long, its row in the room turns amber. Nothing is cancelled.',
|
|
706
|
+
'settings.less': 'Less',
|
|
707
|
+
'settings.more': 'More',
|
|
708
|
+
'remove.title': 'Remove {member}?',
|
|
709
|
+
'remove.idle': 'It is idle, with no queued messages and no open tasks.',
|
|
710
|
+
'remove.running': 'It is running; the round stops first',
|
|
711
|
+
'remove.runningTask': 'It is running "{task}"; the round stops first',
|
|
712
|
+
'remove.queued': '{count} queued message(s) will be cancelled',
|
|
713
|
+
'remove.waiting': '{members} waiting on its report will be told it was removed',
|
|
714
|
+
'remove.keep': 'Its session and history are kept; you can undo for 5 seconds.',
|
|
715
|
+
'remove.coordinator': 'It is the current coordinator and cannot be removed. Make another member the coordinator first, then remove it.',
|
|
716
|
+
'remove.ok': 'Got it',
|
|
717
|
+
'remove.cancel': 'Cancel',
|
|
718
|
+
'remove.confirm': 'Remove',
|
|
719
|
+
'remove.stopAndRemove': 'Stop and remove',
|
|
720
|
+
'remove.undo': 'Undo',
|
|
721
|
+
'remove.done': 'Removed {member}',
|
|
722
|
+
'remove.done.sep': '; ',
|
|
723
|
+
'remove.done.stopped': 'stopped its round',
|
|
724
|
+
'remove.done.queued': 'cancelled {count} queued message(s)',
|
|
725
|
+
'remove.done.notified': 'told {members}',
|
|
419
726
|
'members.invite': '+ Invite member',
|
|
420
727
|
'invite.title': 'Invite member',
|
|
421
728
|
'invite.title.edit': 'Edit {member}',
|
|
422
729
|
'invite.provider': 'Provider',
|
|
423
730
|
'invite.name': 'Name (@-addressing)',
|
|
424
731
|
'invite.nameHint': 'unique, no whitespace, no "@"',
|
|
732
|
+
'invite.role': 'Role',
|
|
733
|
+
'invite.native': 'Native dsh member',
|
|
734
|
+
'invite.nativeHint': 'A separate dsh session in this host, with every plugin of the chosen preset',
|
|
735
|
+
'invite.preset': 'Preset',
|
|
736
|
+
'invite.presetHint': 'Locked once invited; invite another member to use a different one',
|
|
737
|
+
'invite.cliPreset': 'Mode',
|
|
738
|
+
'invite.cliPresetNone': 'No mode',
|
|
739
|
+
'invite.cliPresetHint': 'Pick a mode and it can call that mode\'s plugin tools (editing, for one) next to its own shell and file tools. Locked once invited',
|
|
740
|
+
'invite.rolePlaceholder': 'e.g. code review',
|
|
741
|
+
'invite.roleHint': 'A short phrase — all the other members and the team view see; details go in the instructions',
|
|
425
742
|
'invite.randomName': 'Roll a random name',
|
|
426
743
|
'invite.preview': 'Preview',
|
|
427
744
|
'invite.previewName': 'new-member',
|
|
@@ -431,9 +748,9 @@ export const en = {
|
|
|
431
748
|
'invite.browse': 'Browse…',
|
|
432
749
|
'invite.browseFailed': 'The directory picker is unavailable (the host serves no native picking capability)',
|
|
433
750
|
'invite.cwdReset': 'Clear; inherit again',
|
|
434
|
-
'invite.instructions': '
|
|
435
|
-
'invite.instructionsHint': '
|
|
436
|
-
'invite.instructionsHintEdit': '
|
|
751
|
+
'invite.instructions': 'Instructions (private to the member)',
|
|
752
|
+
'invite.instructionsHint': 'Delivered with the first message the member receives; no other member sees them. Editable later. Empty: no instructions — once the member joins, @ it any time to hand out work',
|
|
753
|
+
'invite.instructionsHintEdit': 'A change is told to the member once, with its next message; clearing stops carrying instructions',
|
|
437
754
|
'invite.instructionsPlaceholder': 'You are this room\'s backend engineer, own the API design, keep answers concise…',
|
|
438
755
|
'invite.firstTask': 'First task (optional)',
|
|
439
756
|
'invite.firstTaskHint': 'Empty: the member joins idle',
|
|
@@ -455,9 +772,122 @@ export const en = {
|
|
|
455
772
|
'invite.facadeMissing': 'The local-agent delegation facade is not mounted — CLI members cannot be invited (the main-agent member is unaffected)',
|
|
456
773
|
'invite.error.duplicate': 'That name is taken',
|
|
457
774
|
'invite.error.invalid': 'Names must be non-empty, without whitespace or "@"',
|
|
775
|
+
'invite.error.roleTooLong': 'The role is at most 30 characters; put details in the instructions',
|
|
458
776
|
'invite.error.unavailable': 'The local-agent delegation facade is unavailable',
|
|
459
777
|
'invite.error.unknownProvider': 'Unknown provider: {provider} (available: {available})',
|
|
460
778
|
'invite.error.generic': 'The operation failed; please retry',
|
|
461
779
|
'invite.success.task': '{member} invited and working',
|
|
462
780
|
'invite.success.idle': '{member} joined the room',
|
|
781
|
+
'job.title': 'Tasks',
|
|
782
|
+
'job.filter.running': 'Running',
|
|
783
|
+
'job.filter.attention': 'Needs you',
|
|
784
|
+
'job.filter.done': 'Done',
|
|
785
|
+
'job.filter.all': 'All',
|
|
786
|
+
'job.new': '+ New task',
|
|
787
|
+
'job.tagNew': 'New task',
|
|
788
|
+
'job.empty': 'No tasks yet. Message a member — the work it starts becomes a task.',
|
|
789
|
+
'job.emptyFilter': 'Nothing here',
|
|
790
|
+
'job.back': 'All tasks',
|
|
791
|
+
'job.number': 'Task {number}',
|
|
792
|
+
'job.status.running': 'running',
|
|
793
|
+
'job.status.attention': 'needs you',
|
|
794
|
+
'job.status.done': 'done',
|
|
795
|
+
'job.status.stopped': 'stopped',
|
|
796
|
+
'job.elapsed': 'took {time}',
|
|
797
|
+
'job.you': 'You: ',
|
|
798
|
+
'job.by.human': 'filed by you',
|
|
799
|
+
'job.by.coordinator': 'filed by the coordinator',
|
|
800
|
+
'job.by.model': 'filed by the decision model · {probability}',
|
|
801
|
+
'job.stop': 'Stop the whole task',
|
|
802
|
+
'job.stopConfirm': 'Stops the running and queued work of {members}; finished work is kept.',
|
|
803
|
+
'job.stopYes': 'Stop',
|
|
804
|
+
'job.followUp': 'Follow up on this task',
|
|
805
|
+
'job.followUpHint': 'Write in the main composer, tagged "{label}"',
|
|
806
|
+
'job.waiting': 'waiting on {member}',
|
|
807
|
+
'job.need': 'Needs you',
|
|
808
|
+
'job.relay': 'A message from {from} to {to} waits for your go-ahead',
|
|
809
|
+
'job.relayConfirm': 'Send',
|
|
810
|
+
'job.relayDismiss': 'Drop',
|
|
811
|
+
'job.goal': 'Room goal',
|
|
812
|
+
'job.goalNone': 'No goal yet',
|
|
813
|
+
'job.goalTag': 'Formal goal · {objective}',
|
|
814
|
+
'job.subtasks': 'Subtasks',
|
|
815
|
+
'job.timeline': 'Timeline',
|
|
816
|
+
'job.notify': 'FYI',
|
|
817
|
+
'job.seg.queue': 'queued',
|
|
818
|
+
'job.seg.held': 'waiting to hand over',
|
|
819
|
+
'job.seg.exec': 'running',
|
|
820
|
+
'job.node.stop': 'Stop',
|
|
821
|
+
'job.node.session': 'Session →',
|
|
822
|
+
'job.capsule.running': '{count} tasks running',
|
|
823
|
+
'job.capsule.idle': 'Tasks {count}',
|
|
824
|
+
'job.capsule.attention': '⚠ {count} need you',
|
|
825
|
+
'job.tagRemove': 'Remove the tag and let dsh decide',
|
|
826
|
+
'job.tagPlaceholder': 'Add to or ask about it… (filed under "{label}")',
|
|
827
|
+
'job.tagPlaceholderNew': 'Describe the new work… (kept out of running tasks)',
|
|
828
|
+
'job.queueUncertain': '⚠ A restart interrupted this round and its outcome is unknown — a new message treats it as not finished, or reconcile it on the task page: {text}',
|
|
829
|
+
'job.queueBlocked': 'Waiting on the round above: {text}',
|
|
830
|
+
'approval.line': '⚠ {member} asks you to approve: {tool}',
|
|
831
|
+
'approval.allow': 'Allow once',
|
|
832
|
+
'approval.reject': 'Reject',
|
|
833
|
+
'approval.state.allowed-once': '(allowed)',
|
|
834
|
+
'approval.state.rejected': '(rejected)',
|
|
835
|
+
'approval.state.cancelled': '(cancelled)',
|
|
836
|
+
'approval.expired': 'This approval has already ended',
|
|
837
|
+
'composer.at.label': '@ suggestions',
|
|
838
|
+
'composer.at.members': 'Room members',
|
|
839
|
+
'composer.at.recent': 'Recent sessions',
|
|
840
|
+
'composer.at.sessions': 'Other sessions',
|
|
841
|
+
'composer.at.session': 'Session',
|
|
842
|
+
'composer.at.sessionAt': 'Session · {time}',
|
|
843
|
+
'composer.at.more': 'Type to search more sessions',
|
|
844
|
+
'composer.at.room': 'Room',
|
|
845
|
+
'composer.at.expand': 'Show members',
|
|
846
|
+
'composer.at.collapse': 'Hide members',
|
|
847
|
+
'help.title': '{from} asked "{target}" for help',
|
|
848
|
+
'help.state.queued': 'Delivered · waiting in their queue',
|
|
849
|
+
'help.state.running': 'They are on it',
|
|
850
|
+
'help.state.asking': 'They asked a question',
|
|
851
|
+
'help.state.replied': 'Replied',
|
|
852
|
+
'help.state.failed': 'Not delivered',
|
|
853
|
+
'help.expand': 'Show request',
|
|
854
|
+
'help.collapse': 'Hide',
|
|
855
|
+
'help.open': 'Open their session →',
|
|
856
|
+
'help.request': 'Request',
|
|
857
|
+
'help.msg.question': 'Their question',
|
|
858
|
+
'help.msg.reply': 'Their reply',
|
|
859
|
+
'help.msg.fallback': 'Their reply (last answer of the turn)',
|
|
860
|
+
'help.msg.message': '{from} wrote',
|
|
861
|
+
'help.handoff': 'Handoff',
|
|
862
|
+
'help.waited': ' · waiting {minutes} min',
|
|
863
|
+
'help.card.request': 'Help request from {from} · room "{room}"',
|
|
864
|
+
'help.card.message': 'Follow-up from {from} · room "{room}"',
|
|
865
|
+
'help.card.back': 'Back to the room →',
|
|
866
|
+
'help.card.to': ' → to {member}',
|
|
867
|
+
'help.card.held': 'Room paused — handled on resume',
|
|
868
|
+
'help.card.more': 'More',
|
|
869
|
+
'help.card.less': 'Less',
|
|
870
|
+
'decision.open': 'View decision',
|
|
871
|
+
'decision.filing.task': 'Filed under task {number} · {title}',
|
|
872
|
+
'decision.filing.new': 'Judged a new task',
|
|
873
|
+
'decision.filing.unavailable': 'Decision model unavailable; treated as a new task',
|
|
874
|
+
'decision.filing.failed': 'The decision model gave no answer; treated as a new task',
|
|
875
|
+
'decision.report.now': '{from}\'s result reported to {to} now',
|
|
876
|
+
'decision.report.later': '{from}\'s result held to report to {to} together',
|
|
877
|
+
'decision.report.rule': '{from}\'s result reported to {to} now ({rule})',
|
|
878
|
+
'decision.report.unavailable': 'Decision model unavailable; {from}\'s result reported to {to} now',
|
|
879
|
+
'decision.report.failed': 'The decision model gave no answer; {from}\'s result reported to {to} now',
|
|
880
|
+
'decision.rule.failure': 'the member did not finish normally',
|
|
881
|
+
'decision.rule.last': 'the last result',
|
|
882
|
+
'question.title': '{member} asks you',
|
|
883
|
+
'question.other': 'Other',
|
|
884
|
+
'question.otherPlaceholder': 'Type your answer…',
|
|
885
|
+
'question.submit': 'Submit answers',
|
|
886
|
+
'question.multi': 'Pick any',
|
|
887
|
+
'question.answered': 'Answered',
|
|
888
|
+
'question.cancelled': 'Expired without an answer',
|
|
889
|
+
'question.answer': 'Your answer: {answer}',
|
|
890
|
+
'question.expired': 'These questions already ended',
|
|
891
|
+
'invite.modelLabel': 'Model',
|
|
892
|
+
'invite.lockedNote': 'Set at invite; invite another member to change',
|
|
463
893
|
};
|