@agi-fans/dsh-tui 0.27.0 → 0.28.0

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 (61) hide show
  1. package/lib/CHANGELOG.md +34 -1
  2. package/lib/chrome/status-line.js +4 -0
  3. package/lib/chrome/status-line.js.map +1 -1
  4. package/lib/chrome/tool-renderers.js +140 -4
  5. package/lib/chrome/tool-renderers.js.map +1 -1
  6. package/lib/commands/export.js +1 -1
  7. package/lib/commands/export.js.map +1 -1
  8. package/lib/commands/files.js +1 -1
  9. package/lib/commands/files.js.map +1 -1
  10. package/lib/commands/integrations.d.ts +1 -1
  11. package/lib/commands/integrations.js +126 -28
  12. package/lib/commands/integrations.js.map +1 -1
  13. package/lib/commands/permission.js +26 -5
  14. package/lib/commands/permission.js.map +1 -1
  15. package/lib/commands/plugins.js +216 -11
  16. package/lib/commands/plugins.js.map +1 -1
  17. package/lib/commands/session.js +18 -1
  18. package/lib/commands/session.js.map +1 -1
  19. package/lib/commands/team.d.ts +12 -0
  20. package/lib/commands/team.js +205 -0
  21. package/lib/commands/team.js.map +1 -0
  22. package/lib/definition.d.ts +3 -0
  23. package/lib/locale/zh.d.ts +164 -1
  24. package/lib/locale/zh.js +165 -2
  25. package/lib/locale/zh.js.map +1 -1
  26. package/lib/runtime/account-settings.js +141 -7
  27. package/lib/runtime/account-settings.js.map +1 -1
  28. package/lib/runtime/file-open.d.ts +2 -1
  29. package/lib/runtime/file-open.js +3 -8
  30. package/lib/runtime/file-open.js.map +1 -1
  31. package/lib/runtime/file-review.js +2 -2
  32. package/lib/runtime/file-review.js.map +1 -1
  33. package/lib/runtime/image-preview.js +1 -1
  34. package/lib/runtime/image-preview.js.map +1 -1
  35. package/lib/runtime/mcp-settings.d.ts +33 -0
  36. package/lib/runtime/mcp-settings.js +555 -0
  37. package/lib/runtime/mcp-settings.js.map +1 -0
  38. package/lib/runtime/plugin-settings.js +14 -3
  39. package/lib/runtime/plugin-settings.js.map +1 -1
  40. package/lib/runtime/tmux-settings.d.ts +21 -0
  41. package/lib/runtime/tmux-settings.js +60 -0
  42. package/lib/runtime/tmux-settings.js.map +1 -0
  43. package/lib/runtime/web-settings.js +55 -10
  44. package/lib/runtime/web-settings.js.map +1 -1
  45. package/lib/session/interaction-adapter.js +6 -1
  46. package/lib/session/interaction-adapter.js.map +1 -1
  47. package/lib/session/session-controller.js +43 -11
  48. package/lib/session/session-controller.js.map +1 -1
  49. package/lib/session/subagent-roster.d.ts +4 -1
  50. package/lib/session/subagent-roster.js +43 -14
  51. package/lib/session/subagent-roster.js.map +1 -1
  52. package/lib/session/subagent-tracker.d.ts +6 -1
  53. package/lib/session/subagent-tracker.js +7 -1
  54. package/lib/session/subagent-tracker.js.map +1 -1
  55. package/lib/views/autocomplete.js +1 -1
  56. package/lib/views/autocomplete.js.map +1 -1
  57. package/lib/views/trajectory.js +6 -2
  58. package/lib/views/trajectory.js.map +1 -1
  59. package/lib/views/transcript-render.js +8 -3
  60. package/lib/views/transcript-render.js.map +1 -1
  61. package/package.json +17 -2
@@ -0,0 +1,12 @@
1
+ /** Human controls and task-board inspection for Harness Agent Teams. */
2
+ import type { Context } from '@deepseek-ai/cordis';
3
+ import type { TeamTaskView } from '@deepseek-ai/dsh-agent-team';
4
+ export declare const name = "omdsh-command-team";
5
+ export declare const inject: string[];
6
+ type TranslateFn = (source: string, values?: Record<string, string | number>) => string;
7
+ /** Format one shared task for full-document inspection. */
8
+ export declare function formatTeamTaskDetail(task: TeamTaskView, t?: TranslateFn): string;
9
+ /** Render the session's Team mode and shared task board as Markdown. */
10
+ export declare function formatTeamBoardMarkdown(enabled: boolean, tasks: readonly TeamTaskView[], t?: TranslateFn): string;
11
+ export declare function apply(ctx: Context): void;
12
+ export {};
@@ -0,0 +1,205 @@
1
+ /** Human controls and task-board inspection for Harness Agent Teams. */
2
+ import { createPromptBrowser } from "../runtime/prompt-browser.js";
3
+ import { readReference } from "../runtime/reference-reader.js";
4
+ import { choosePrompt } from "../prompt-intents.js";
5
+ import { resolveUiLanguage, uiText } from "../locale/index.js";
6
+ import { registerCommands } from "./registration.js";
7
+ export const name = 'omdsh-command-team';
8
+ export const inject = ['commands', 'tui'];
9
+ function resolveRootAgent(ctx, agent) {
10
+ const subagents = ctx.get('subagents');
11
+ if (subagents === undefined)
12
+ return agent;
13
+ try {
14
+ return subagents.rootOf(agent);
15
+ }
16
+ catch {
17
+ return agent;
18
+ }
19
+ }
20
+ function ownerLabel(task, t) {
21
+ return task.ownerName ?? task.ownerId ?? t('unowned');
22
+ }
23
+ function statusBadge(task, t) {
24
+ if (task.status === 'pending')
25
+ return task.ready ? t('pending (ready)') : t('pending (blocked)');
26
+ if (task.status === 'in_progress')
27
+ return t('in progress');
28
+ if (task.status === 'completed')
29
+ return t('completed');
30
+ return t('deleted');
31
+ }
32
+ /** Format one shared task for full-document inspection. */
33
+ export function formatTeamTaskDetail(task, t = (source, values) => uiText('en', source, values)) {
34
+ const lines = [
35
+ `## #${task.id} · ${task.subject}`,
36
+ `${t('Status')}: ${statusBadge(task, t)} · ${t('Owner')}: ${ownerLabel(task, t)} · rev ${task.revision}`,
37
+ ...(task.blockedBy.length > 0 ? [`${t('Blocked by')}: ${task.blockedBy.map(id => `#${id}`).join(', ')}`] : []),
38
+ ...(task.writeScopes.length > 0 ? [`${t('Write scopes')}: ${task.writeScopes.map(scope => `\`${scope}\``).join(', ')}`] : []),
39
+ ...(task.writeScopeWarnings.length > 0 ? ['', '### ' + t('Write-scope warnings'), ...task.writeScopeWarnings.map(warning => `- ${warning}`)] : []),
40
+ '',
41
+ task.description,
42
+ ];
43
+ return lines.join('\n');
44
+ }
45
+ /** Render the session's Team mode and shared task board as Markdown. */
46
+ export function formatTeamBoardMarkdown(enabled, tasks, t = (source, values) => uiText('en', source, values)) {
47
+ const pending = tasks.filter(task => task.status === 'pending').length;
48
+ const inProgress = tasks.filter(task => task.status === 'in_progress').length;
49
+ const completed = tasks.filter(task => task.status === 'completed').length;
50
+ const header = [
51
+ '## ' + t('Agent Teams'),
52
+ `${t('Mode')}: **${t(enabled ? 'Enabled' : 'Disabled')}**`,
53
+ t('Tasks: {total} ({pending} pending · {inProgress} in progress · {completed} completed)', {
54
+ total: tasks.length,
55
+ pending,
56
+ inProgress,
57
+ completed,
58
+ }),
59
+ ];
60
+ if (tasks.length === 0) {
61
+ return [
62
+ ...header,
63
+ '',
64
+ t(enabled
65
+ ? 'No shared tasks recorded yet. The root agent and continuable subagents can create and claim tasks with team_task_* tools.'
66
+ : 'Enable Team mode (`/team on`) to expose shared task-board tools (`team_task_*`) to this session and its continuable subagents.'),
67
+ ].join('\n');
68
+ }
69
+ const rows = tasks.map(task => {
70
+ const subject = task.subject.replace(/\|/gu, '\\|');
71
+ const owner = ownerLabel(task, t).replace(/\|/gu, '\\|');
72
+ const scopes = task.writeScopes.length > 0 ? task.writeScopes.join(', ').replace(/\|/gu, '\\|') : '—';
73
+ return `| #${task.id} | ${statusBadge(task, t)} | ${owner} | ${subject} | ${scopes} |`;
74
+ });
75
+ const warnings = tasks.flatMap(task => task.writeScopeWarnings.map(warning => `- #${task.id}: ${warning}`));
76
+ return [
77
+ ...header,
78
+ '',
79
+ `| ID | ${t('Status')} | ${t('Owner')} | ${t('Task')} | ${t('Write scopes')} |`,
80
+ '|---|---|---|---|---|',
81
+ ...rows,
82
+ ...(warnings.length > 0 ? ['', '### ' + t('Write-scope warnings'), ...warnings] : []),
83
+ ].join('\n');
84
+ }
85
+ async function handleTeam(ctx, invocation) {
86
+ const language = resolveUiLanguage(ctx.tui.prefs?.().uiLanguage);
87
+ const t = (source, values) => uiText(language, source, values);
88
+ const teams = ctx.get('agentTeams');
89
+ if (teams === undefined) {
90
+ return { kind: 'error', text: t('Agent Teams service is not mounted in this profile.') };
91
+ }
92
+ const arg = invocation.rawInput.trim().toLowerCase();
93
+ if (arg !== '' && arg !== 'on' && arg !== 'off' && arg !== 'status') {
94
+ return { kind: 'error', text: 'Usage: /team [on|off|status]' };
95
+ }
96
+ const root = resolveRootAgent(ctx, invocation.agent);
97
+ if (arg === 'on' || arg === 'off') {
98
+ const target = arg === 'on';
99
+ await teams.setEnabled(root, target, invocation.signal);
100
+ return {
101
+ kind: 'success',
102
+ text: t(target
103
+ ? 'Agent Teams enabled for this session. Shared task-board tools (team_task_*) are now available on the next step.'
104
+ : 'Agent Teams disabled for this session. Existing shared tasks remain saved in the session log.'),
105
+ };
106
+ }
107
+ if (arg === 'status' || ctx.tui.interactive === false) {
108
+ return {
109
+ kind: 'success',
110
+ text: formatTeamBoardMarkdown(teams.isEnabled(root), teams.listTasks(root), t),
111
+ };
112
+ }
113
+ const lifetime = new AbortController();
114
+ const signal = AbortSignal.any([invocation.signal, lifetime.signal]);
115
+ const tui = {
116
+ prompt: (request) => ctx.tui.prompt({ ...request, signal, onSuperseded: () => lifetime.abort() }),
117
+ ...(ctx.tui.copyText === undefined ? {} : { copyText: (text, label) => ctx.tui.copyText(text, label) }),
118
+ };
119
+ const browse = createPromptBrowser(tui.prompt);
120
+ let diagnostic = '';
121
+ while (!signal.aborted) {
122
+ const enabled = teams.isEnabled(root);
123
+ const tasks = teams.listTasks(root);
124
+ const pending = tasks.filter(task => task.status === 'pending').length;
125
+ const inProgress = tasks.filter(task => task.status === 'in_progress').length;
126
+ const completed = tasks.filter(task => task.status === 'completed').length;
127
+ const summary = [
128
+ diagnostic,
129
+ `${t('Mode')}: ${t(enabled ? 'Enabled' : 'Disabled')} · ${t('Tasks: {total} ({pending} pending · {inProgress} in progress · {completed} completed)', {
130
+ total: tasks.length,
131
+ pending,
132
+ inProgress,
133
+ completed,
134
+ })}`,
135
+ t(enabled
136
+ ? 'Shared task-board tools (team_task_*) and collaboration guidance are active for this session tree.'
137
+ : 'Team mode is off. Enable it to expose shared task-board tools (team_task_*) to the root agent and its continuable subagents.'),
138
+ ].filter(Boolean).join('\n');
139
+ const answer = await browse(choosePrompt({
140
+ title: t('Agent Teams'),
141
+ question: t('Toggle Team mode or inspect the shared task board'),
142
+ filterable: tasks.length > 0,
143
+ detail: summary,
144
+ signal,
145
+ options: [
146
+ {
147
+ label: t(enabled ? 'Disable Team mode' : 'Enable Team mode'),
148
+ value: 'toggle',
149
+ description: t(enabled
150
+ ? 'Hide team_task_* tools on subsequent steps while keeping recorded tasks.'
151
+ : 'Expose team_task_* tools and collaboration policy to this session tree.'),
152
+ },
153
+ ...tasks.map(task => ({
154
+ label: `#${task.id} · ${task.subject}`,
155
+ value: `task:${task.id}`,
156
+ description: `${statusBadge(task, t)} · ${ownerLabel(task, t)} · rev ${task.revision}`,
157
+ preview: [
158
+ task.description,
159
+ ...(task.writeScopes.length > 0 ? [`${t('Write scopes')}: ${task.writeScopes.join(', ')}`] : []),
160
+ ...task.writeScopeWarnings,
161
+ ].filter(Boolean).join('\n'),
162
+ })),
163
+ { label: t('Refresh'), value: 'refresh' },
164
+ ],
165
+ }));
166
+ if (signal.aborted || answer === null)
167
+ break;
168
+ if (answer === 'refresh') {
169
+ diagnostic = '';
170
+ continue;
171
+ }
172
+ if (answer === 'toggle') {
173
+ try {
174
+ const next = !teams.isEnabled(root);
175
+ await teams.setEnabled(root, next, signal);
176
+ diagnostic = '';
177
+ ctx.tui.notice(t(next ? 'Agent Teams enabled for this session.' : 'Agent Teams disabled for this session.'), { transient: true });
178
+ }
179
+ catch (error) {
180
+ if (!signal.aborted)
181
+ diagnostic = error instanceof Error ? error.message : String(error);
182
+ }
183
+ continue;
184
+ }
185
+ if (answer.startsWith('task:')) {
186
+ const id = answer.slice(5);
187
+ const task = tasks.find(candidate => String(candidate.id) === id);
188
+ if (task !== undefined) {
189
+ await readReference(tui, `#${task.id} · ${task.subject}`, formatTeamTaskDetail(task, t), signal);
190
+ }
191
+ }
192
+ }
193
+ return { kind: 'success' };
194
+ }
195
+ export function apply(ctx) {
196
+ registerCommands(ctx, [
197
+ {
198
+ name: 'team',
199
+ description: 'Toggle Agent Teams mode and inspect the shared task board',
200
+ input: { hint: '[on|off|status]' },
201
+ handler: invocation => handleTeam(ctx, invocation),
202
+ },
203
+ ], 'omdsh team commands');
204
+ }
205
+ //# sourceMappingURL=team.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/commands/team.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAOxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,CAAC,MAAM,IAAI,GAAG,oBAAoB,CAAA;AACxC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AAIzC,SAAS,gBAAgB,CAAC,GAAY,EAAE,KAAY;IAClD,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACtC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACzC,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAkB,EAAE,CAAc;IACpD,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,CAAC,CAAA;AACvD,CAAC;AAED,SAAS,WAAW,CAAC,IAAkB,EAAE,CAAc;IACrD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAA;IAChG,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa;QAAE,OAAO,CAAC,CAAC,aAAa,CAAC,CAAA;IAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,CAAC,CAAC,WAAW,CAAC,CAAA;IACtD,OAAO,CAAC,CAAC,SAAS,CAAC,CAAA;AACrB,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,oBAAoB,CAClC,IAAkB,EAClB,IAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IAEjE,MAAM,KAAK,GAAG;QACZ,OAAO,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;QAClC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE;QACxG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9G,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7H,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,sBAAsB,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClJ,EAAE;QACF,IAAI,CAAC,WAAW;KACjB,CAAA;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,uBAAuB,CACrC,OAAgB,EAChB,KAA8B,EAC9B,IAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IAEjE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAA;IACtE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM,CAAA;IAC7E,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAA;IAE1E,MAAM,MAAM,GAAG;QACb,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC;QACxB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI;QAC1D,CAAC,CAAC,uFAAuF,EAAE;YACzF,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,OAAO;YACP,UAAU;YACV,SAAS;SACV,CAAC;KACH,CAAA;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,GAAG,MAAM;YACT,EAAE;YACF,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,2HAA2H;gBAC7H,CAAC,CAAC,gIAAgI,CAAC;SACtI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACd,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACnD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACrG,OAAO,MAAM,IAAI,CAAC,EAAE,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,MAAM,OAAO,MAAM,MAAM,IAAI,CAAA;IACxF,CAAC,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC,CAAA;IAC3G,OAAO;QACL,GAAG,MAAM;QACT,EAAE;QACF,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,IAAI;QAC/E,uBAAuB;QACvB,GAAG,IAAI;QACP,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,sBAAsB,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACtF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,GAAY,EAAE,UAA6B;IACnE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,CAAA;IAChE,MAAM,CAAC,GAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3E,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IACnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,qDAAqD,CAAC,EAAE,CAAA;IAC1F,CAAC;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACpD,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAA;IAChE,CAAC;IAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IAEpD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,GAAG,KAAK,IAAI,CAAA;QAC3B,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;QACvD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,CAAC,CAAC,MAAM;gBACZ,CAAC,CAAC,iHAAiH;gBACnH,CAAC,CAAC,+FAA+F,CAAC;SACrG,CAAA;IACH,CAAC;IAED,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QACtD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC/E,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAA;IACtC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IACpE,MAAM,GAAG,GAAG;QACV,MAAM,EAAE,CAAC,OAA6C,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;QACvI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAY,EAAE,KAAc,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;KAC1H,CAAA;IACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC9C,IAAI,UAAU,GAAG,EAAE,CAAA;IAEnB,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAA;QACtE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,MAAM,CAAA;QAC7E,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAA;QAE1E,MAAM,OAAO,GAAG;YACd,UAAU;YACV,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,uFAAuF,EAAE;gBACnJ,KAAK,EAAE,KAAK,CAAC,MAAM;gBACnB,OAAO;gBACP,UAAU;gBACV,SAAS;aACV,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,oGAAoG;gBACtG,CAAC,CAAC,8HAA8H,CAAC;SACpI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE5B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;YACvC,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC;YACvB,QAAQ,EAAE,CAAC,CAAC,mDAAmD,CAAC;YAChE,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC;YAC5B,MAAM,EAAE,OAAO;YACf,MAAM;YACN,OAAO,EAAE;gBACP;oBACE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,CAAC;oBAC5D,KAAK,EAAE,QAAQ;oBACf,WAAW,EAAE,CAAC,CAAC,OAAO;wBACpB,CAAC,CAAC,0EAA0E;wBAC5E,CAAC,CAAC,yEAAyE,CAAC;iBAC/E;gBACD,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACpB,KAAK,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;oBACtC,KAAK,EAAE,QAAQ,IAAI,CAAC,EAAE,EAAE;oBACxB,WAAW,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE;oBACtF,OAAO,EAAE;wBACP,IAAI,CAAC,WAAW;wBAChB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChG,GAAG,IAAI,CAAC,kBAAkB;qBAC3B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC7B,CAAC,CAAC;gBACH,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;aAC1C;SACF,CAAC,CAAC,CAAA;QACH,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,KAAK,IAAI;YAAE,MAAK;QAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAAC,UAAU,GAAG,EAAE,CAAC;YAAC,SAAQ;QAAC,CAAC;QACvD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBACnC,MAAM,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;gBAC1C,UAAU,GAAG,EAAE,CAAA;gBACf,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,wCAAwC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACnI,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC1F,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;YACjE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YAClG,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,gBAAgB,CAAC,GAAG,EAAE;QACpB;YACE,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,2DAA2D;YACxE,KAAK,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE;YAClC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC;SACnD;KACF,EAAE,qBAAqB,CAAC,CAAA;AAC3B,CAAC"}
@@ -348,6 +348,8 @@ export interface TuiSubagentView {
348
348
  readonly parentId?: string;
349
349
  /** Edge distance from the active root session; direct children are `1`. */
350
350
  readonly depth: number;
351
+ /** Model-facing subagent path or name when declared by the creator's catalog. */
352
+ readonly name?: string;
351
353
  readonly label: string;
352
354
  readonly mode?: 'one-shot' | 'continuable' | 'external';
353
355
  readonly needsApproval?: boolean;
@@ -384,6 +386,7 @@ export interface TuiSubagentRoster {
384
386
  /** The descendant whose own transcript currently replaces the parent view. */
385
387
  export interface TuiInspectedSubagent {
386
388
  readonly id: string;
389
+ readonly name?: string;
387
390
  readonly label: string;
388
391
  readonly needsApproval?: boolean;
389
392
  readonly phase: TuiSubagentPhase;
@@ -420,12 +420,29 @@ export declare const zh: {
420
420
  readonly "A deployment API key still takes precedence. Update its source before replacing the referenced key.": "部署配置中的 API 密钥仍优先生效,请先更新其来源,再替换引用的密钥。";
421
421
  readonly "Web search and fetch": "网页搜索与抓取";
422
422
  readonly "Choose search and fetch providers, edit their settings, then Apply to save.": "选择搜索和抓取服务商,编辑设置后选择应用保存。";
423
+ readonly "DeepSeek Search API": "DeepSeek 搜索 API";
424
+ readonly "DeepSeek Fetch API": "DeepSeek 抓取 API";
423
425
  readonly "DeepSeek (legacy)": "DeepSeek(旧版)";
424
426
  readonly "Direct fetch": "直接抓取";
427
+ readonly Automatic: "自动";
428
+ readonly "Search billing": "搜索计费方式";
429
+ readonly "Fetch billing": "抓取计费方式";
430
+ readonly "Search rate limit": "搜索频率上限";
431
+ readonly "Send original question": "发送原始问题";
432
+ readonly "Search endpoint": "搜索端点";
433
+ readonly "Search API key reference": "搜索 API 密钥引用";
434
+ readonly "Fetch endpoint": "抓取端点";
435
+ readonly "Fetch API key reference": "抓取 API 密钥引用";
436
+ readonly "Uses the DeepSeek account or API key chosen under Search billing. Calls the hosted Search API without an auxiliary model turn; service charges may apply.": "使用“搜索计费方式”所选的 DeepSeek 账户或 API 密钥,直接调用托管搜索 API,不经过辅助模型回合;可能产生服务费用。";
425
437
  readonly "Uses the conversation\u2019s DeepSeek account or the configured API key. Calls the hosted Search API without an auxiliary model turn; service charges may apply.": "使用当前会话的 DeepSeek 账号或配置的 API 密钥,直接调用托管搜索 API,不经过辅助模型回合;可能产生服务费用。";
426
438
  readonly "Uses the conversation\u2019s DeepSeek account or the configured API key. Runs an auxiliary Messages model turn with web search; model charges apply.": "使用当前会话的 DeepSeek 账号或配置的 API 密钥,通过辅助 Messages 模型回合执行搜索,会产生模型费用。";
427
- readonly "Fetches from this computer without a model or DeepSeek credential. Local DNS and network access apply; private addresses are blocked and content is bounded.": "从本机抓取网页,不调用模型,也不需要 DeepSeek 凭据。受本地 DNS 和网络影响,禁止访问私有地址,返回内容有大小限制。";
439
+ readonly "Fetches from this computer without a model or DeepSeek credential. Local DNS and network access apply, including intranet and local addresses; content is bounded.": "从本机抓取网页,不调用模型,也不需要 DeepSeek 凭据。受本地 DNS 和网络影响,可访问内网和本机地址,返回内容有大小限制。";
440
+ readonly "Uses the DeepSeek account or API key chosen under Fetch billing. Fetches through DeepSeek without an auxiliary model turn or local DNS lookup; service charges and content limits apply.": "使用“抓取计费方式”所选的 DeepSeek 账户或 API 密钥,经 DeepSeek 抓取网页,不经过辅助模型回合或本地 DNS 解析;有服务费用及内容限制。";
428
441
  readonly "Uses the conversation\u2019s DeepSeek account or the configured API key. Fetches through DeepSeek without an auxiliary model turn or local DNS lookup; service charges and content limits apply.": "使用当前会话的 DeepSeek 账号或配置的 API 密钥,经 DeepSeek 抓取网页,不经过辅助模型回合或本地 DNS 解析;有服务费用及内容限制。";
442
+ readonly "Follow the conversation\u2019s model provider, falling back to the other DeepSeek credential when available.": "跟随当前会话的模型服务商,并在可用时回退到另一 DeepSeek 凭据。";
443
+ readonly "Bill only the signed-in DeepSeek account; never fall back to an API key.": "仅使用已登录的 DeepSeek 账户计费,不回退到 API 密钥。";
444
+ readonly "Bill only the DeepSeek API key; never fall back to the signed-in account.": "仅使用 DeepSeek API 密钥计费,不回退到已登录账户。";
445
+ readonly "Default search and fetch provider: one direct DeepSeek API request without an auxiliary model turn, billed to the selected account or API key.": "默认搜索与抓取服务商:直接请求 DeepSeek API,不经过辅助模型回合,按所选账户或 API 密钥计费。";
429
446
  readonly "Provider list could not be loaded. The last known list is shown; retry to refresh it.": "服务商列表加载失败,保留上次成功加载的列表,请重试刷新。";
430
447
  readonly "The credential reference changed. Enter the key again for the current reference.": "凭据引用已更改,请为当前引用重新输入密钥。";
431
448
  readonly "Configure this provider in its plugin settings.": "请在该服务商的插件设置中配置。";
@@ -1096,6 +1113,28 @@ export declare const zh: {
1096
1113
  readonly "Configured route \u00B7 currently outside the model catalog": "已配置路由 · 当前不在模型目录中";
1097
1114
  readonly "Could not change configuration": "无法更改配置";
1098
1115
  readonly "File recovery snapshots": "文件恢复快照";
1116
+ readonly "Keep worktrees when archiving": "归档时保留 worktree";
1117
+ readonly "When off, archiving a session removes its clean, unreferenced Git worktree checkout while keeping the branch.": "关闭时,归档会话会移除干净且未被其他会话引用的 Git worktree 检出目录,但保留分支。";
1118
+ readonly Installed: "已安装";
1119
+ readonly Update: "更新";
1120
+ readonly "Update bundle": "更新插件包";
1121
+ readonly "Update available": "可更新";
1122
+ readonly "Choose a newer version": "选择更新版本";
1123
+ readonly "No newer versions are published.": "暂无已发布的更新版本。";
1124
+ readonly "{count} older versions omitted.": "已省略 {count} 个较早版本。";
1125
+ readonly Prerelease: "预发布";
1126
+ readonly Deprecated: "已弃用";
1127
+ readonly "Not a bundle": "非插件包";
1128
+ readonly "Git URL pinned to the target commit": "锁定到目标提交的 Git URL";
1129
+ readonly "Target package version": "目标包版本";
1130
+ readonly "No README or detail document is available for this bundle.": "此插件包暂无 README 或详细说明文档。";
1131
+ readonly "Installed Host code runs with your user permissions and affects all sessions in this profile.": "已安装的宿主代码将以你的用户权限运行,并影响使用此配置档案的所有会话。";
1132
+ readonly "Updating bundle in this profile. Esc or Ctrl+C cancels while the target version is installing.": "正在更新当前配置档案中的插件包。安装目标版本期间可按 Esc 或 Ctrl+C 取消。";
1133
+ readonly "{name} is included with omdsh. Open /plugins \u2192 Bundles to enable or disable it.": "{name} 随 omdsh 提供,请在 /plugins → 插件包 中启用或停用。";
1134
+ readonly "{name} {version} is already installed. Open /plugins \u2192 Bundles to manage it.": "{name} {version} 已安装,请在 /plugins → 插件包 中管理。";
1135
+ readonly "{name} is installed at {current}. Uninstall it in /plugins \u2192 Bundles before installing {target}.": "{name} 当前已安装 {current},请先在 /plugins → 插件包 中卸载后再安装 {target}。";
1136
+ readonly "{name} cannot be updated automatically from this source. Reinstall it from /plugins \u2192 Bundles.": "无法从此来源自动更新 {name},请在 /plugins → 插件包 中重新安装。";
1137
+ readonly "another version": "其他版本";
1099
1138
  readonly "Restore inherited model or permissions\u2026": "恢复继承的模型或权限…";
1100
1139
  readonly "Return to settings": "返回设置";
1101
1140
  readonly "Web search \u00B7 API": "网页搜索 · API";
@@ -1133,4 +1172,128 @@ export declare const zh: {
1133
1172
  readonly "TTFT and tokens per second, on the right of the metrics line. Space toggles this preference; width may hide enabled items.": "首 Token 延迟与每秒 Token 数,位于统计行右侧。 Space 切换此偏好;宽度不足时,已开启的项也可能隐藏。";
1134
1173
  readonly "LLM and tool time, on the left of the totals line. Appears when the metrics line fits. Space toggles this preference; width may hide enabled items.": "模型与工具耗时,位于累计行左侧。上方统计行完整时才显示。 Space 切换此偏好;宽度不足时,已开启的项也可能隐藏。";
1135
1174
  readonly "Turn and step counts, on the right of the totals line. Appears when the metrics line fits. Space toggles this preference; width may hide enabled items.": "回合与步数,位于累计行右侧。上方统计行完整时才显示。 Space 切换此偏好;宽度不足时,已开启的项也可能隐藏。";
1175
+ readonly "Profile \u00B7 Saves immediately \u00B7 Live": "Profile · 立即保存并实时生效";
1176
+ readonly "Tmux location context": "Tmux 位置上下文";
1177
+ readonly "Minimum refresh interval": "最短刷新间隔";
1178
+ readonly "When enabled inside a real tmux pane, appends session, window, pane and layout context when the pane layout changes.": "在真实 tmux 窗格中启用后,会在窗格布局变化时附加会话、窗口、窗格及布局上下文。";
1179
+ readonly "MCP servers": "MCP 服务器";
1180
+ readonly "None configured": "未配置";
1181
+ readonly "Add, enable, probe, restart, or remove live MCP servers. Static mcp.json servers continue to mount alongside them.": "添加、启用、探测、重启或移除实时 MCP 服务器;静态 mcp.json 服务器仍继续同时挂载。";
1182
+ readonly "Inspect and manage MCP servers, tools and recent calls": "查看并管理 MCP 服务器、可用工具和最近调用";
1183
+ readonly "Manage live servers here or in /settings \u2192 Integrations \u2192 MCP servers; static `.dsh/mcp.json` and `$OMDSH_HOME/mcp.json` entries stay active alongside them.": "可在此处或 /settings → 集成 → MCP 服务器中管理实时服务器;`.dsh/mcp.json` 与 `$OMDSH_HOME/mcp.json` 中的静态条目仍继续同时生效。";
1184
+ readonly "Managed servers": "托管服务器";
1185
+ readonly "No runtime MCP servers are configured.": "尚未配置运行时 MCP 服务器。";
1186
+ readonly "Manage live servers, inspect tools and review recent calls": "管理实时服务器、查看工具并检查最近调用";
1187
+ readonly "File-backed MCP entries are configured in `.dsh/mcp.json` or `$OMDSH_HOME/mcp.json`, or in /plugins.": "基于文件的 MCP 条目在 `.dsh/mcp.json`、`$OMDSH_HOME/mcp.json` 或 /plugins 中配置。";
1188
+ readonly "connected \u00B7 {count} tools": "已连接 · {count} 个工具";
1189
+ readonly "connecting (attempt {attempt})": "正在连接(第 {attempt} 次尝试)";
1190
+ readonly connecting: "正在连接";
1191
+ readonly "waiting for credentials": "等待凭据";
1192
+ readonly "reconnecting ({attempt}/{max})": "正在重连({attempt}/{max})";
1193
+ readonly closed: "已关闭";
1194
+ readonly "transport closure unconfirmed": "未确认传输连接已关闭";
1195
+ readonly "failed (cleanup)": "失败(清理阶段)";
1196
+ readonly "failed ({reason})": "失败({reason})";
1197
+ readonly "Probe succeeded ({duration}ms) \u00B7 {server} \u00B7 Tools: {count}": "探测成功({duration}ms)· {server} · 工具:{count}";
1198
+ readonly "Probe failed during {stage} ({duration}ms): {message}": "探测在 {stage} 阶段失败({duration}ms):{message}";
1199
+ readonly "Probe cleanup warning: {detail}": "探测清理警告:{detail}";
1200
+ readonly "transport closure was not confirmed": "未能确认传输连接已关闭";
1201
+ readonly Transport: "传输方式";
1202
+ readonly Headers: "请求头";
1203
+ readonly Command: "命令";
1204
+ readonly "MCP manager configuration is unavailable in this host.": "当前宿主无法提供 MCP 管理器配置。";
1205
+ readonly "Add MCP server": "添加 MCP 服务器";
1206
+ readonly "Server name": "服务器名称";
1207
+ readonly "Use 1\u201332 letters, digits, hyphens, or underscores (for example: docs). Tools register as mcp__<name>__<tool>.": "使用 1–32 个字母、数字、连字符或下划线(例如 docs)。工具将注册为 mcp__<name>__<tool>。";
1208
+ readonly "Server name must match [A-Za-z0-9_-]{1,32}.": "服务器名称必须匹配 [A-Za-z0-9_-]{1,32}。";
1209
+ readonly "Server \"{name}\" already exists.": "服务器“{name}”已存在。";
1210
+ readonly "Choose transport for {name}": "为 {name} 选择传输方式";
1211
+ readonly "Local process (stdio)": "本地进程(stdio)";
1212
+ readonly "Spawn a local command over stdin/stdout.": "通过标准输入/输出启动本地命令。";
1213
+ readonly "Remote endpoint (Streamable HTTP)": "远程端点(Streamable HTTP)";
1214
+ readonly "Connect to an HTTP/SSE MCP endpoint.": "连接到 HTTP/SSE MCP 端点。";
1215
+ readonly "Executable command": "可执行命令";
1216
+ readonly "Executable started without a shell (for example: npx, uvx, or node).": "直接启动的可执行程序,不经过 shell(例如 npx、uvx 或 node)。";
1217
+ readonly "Arguments (optional)": "启动参数(可选)";
1218
+ readonly "Space-separated arguments or a JSON array (for example: -y @modelcontextprotocol/server-memory). Leave empty for none.": "以空格分隔的参数或 JSON 字符串数组(例如 -y @modelcontextprotocol/server-memory),留空表示无参数。";
1219
+ readonly "Environment variables (optional)": "环境变量(可选)";
1220
+ readonly "Enter KEY=VALUE pairs (separated by \";\" or newlines). Use ${credential:NAME} to reference stored secrets.": "输入 KEY=VALUE 键值对(以分号或换行分隔),可使用 ${credential:NAME} 引用已保存的凭据。";
1221
+ readonly "MCP endpoint URL": "MCP 端点 URL";
1222
+ readonly "HTTP or HTTPS Streamable HTTP endpoint (for example: https://example.com/mcp).": "HTTP 或 HTTPS Streamable HTTP 端点地址(例如 https://example.com/mcp)。";
1223
+ readonly "Request headers (optional)": "请求头(可选)";
1224
+ readonly "Enter Header=Value pairs (separated by \";\" or newlines). Use ${credential:NAME} to reference stored secrets.": "输入 Header=Value 键值对(以分号或换行分隔),可使用 ${credential:NAME} 引用已保存的凭据。";
1225
+ readonly "MCP manager configuration is no longer available.": "MCP 管理器配置已不可用。";
1226
+ readonly "MCP server \"{name}\" saved.": "已保存 MCP 服务器“{name}”。";
1227
+ readonly "Registered by plugin": "由插件注册";
1228
+ readonly "Removed (cleanup pending)": "已移除(等待清理)";
1229
+ readonly "Disable server": "停用服务器";
1230
+ readonly "Enable server": "启用服务器";
1231
+ readonly "Probe connection": "探测连接";
1232
+ readonly "Connect once, list tools, and close without touching the live instance.": "建立一次性连接以列出工具并关闭,不影响当前运行实例。";
1233
+ readonly "Restart server": "重启服务器";
1234
+ readonly "Reconnect from scratch with a fresh retry budget.": "重新建立连接并重置重试计数。";
1235
+ readonly "Restore inherited configuration": "恢复继承的配置";
1236
+ readonly "Remove server": "移除服务器";
1237
+ readonly "Manage MCP server": "管理 MCP 服务器";
1238
+ readonly "MCP manager configuration is unavailable.": "MCP 管理器配置不可用。";
1239
+ readonly "Server enabled.": "已启用服务器。";
1240
+ readonly "Server disabled.": "已停用服务器。";
1241
+ readonly "Server restarted.": "已重启服务器。";
1242
+ readonly "Removes your profile override for \"{name}\" and restores the inherited server definition.": "移除“{name}”的配置档案覆盖,并恢复继承的服务器定义。";
1243
+ readonly "Removes \"{name}\" from your profile and unmounts its tools.": "从当前配置档案中移除“{name}”并卸载其工具。";
1244
+ readonly "Restored inherited configuration for \"{name}\".": "已恢复“{name}”的继承配置。";
1245
+ readonly "Removed MCP server \"{name}\".": "已移除 MCP 服务器“{name}”。";
1246
+ readonly "No runtime MCP servers are configured. Static servers in `.dsh/mcp.json` or `$OMDSH_HOME/mcp.json` remain active alongside this list.": "尚未配置运行时 MCP 服务器;`.dsh/mcp.json` 或 `$OMDSH_HOME/mcp.json` 中的静态服务器仍保持生效。";
1247
+ readonly "Runtime MCP servers reconcile live without restarting omdsh.": "运行时 MCP 服务器支持实时生效,无需重启 omdsh。";
1248
+ readonly "Add server\u2026": "添加服务器…";
1249
+ readonly "Configure a stdio or Streamable HTTP server.": "配置 stdio 或 Streamable HTTP 服务器。";
1250
+ readonly "Choose a server override to restore": "选择要恢复继承的服务器覆盖项";
1251
+ readonly "Manage live MCP servers": "管理实时 MCP 服务器";
1252
+ readonly "Toggle Agent Teams mode and inspect the shared task board": "切换 Agent 团队模式并查看共享任务面板";
1253
+ readonly unowned: "未认领";
1254
+ readonly "pending (ready)": "待处理(就绪)";
1255
+ readonly "pending (blocked)": "待处理(受阻)";
1256
+ readonly "in progress": "进行中";
1257
+ readonly deleted: "已删除";
1258
+ readonly Owner: "负责人";
1259
+ readonly "Blocked by": "前置依赖";
1260
+ readonly "Write scopes": "写入范围";
1261
+ readonly "Write-scope warnings": "写入范围冲突提示";
1262
+ readonly "Agent Teams": "Agent 团队";
1263
+ readonly Mode: "模式";
1264
+ readonly "Tasks: {total} ({pending} pending \u00B7 {inProgress} in progress \u00B7 {completed} completed)": "任务:{total}({pending} 待处理 · {inProgress} 进行中 · {completed} 已完成)";
1265
+ readonly "No shared tasks recorded yet. The root agent and continuable subagents can create and claim tasks with team_task_* tools.": "尚无共享任务记录。主代理和可续跑子代理可通过 team_task_* 工具创建和认领任务。";
1266
+ readonly "Enable Team mode (`/team on`) to expose shared task-board tools (`team_task_*`) to this session and its continuable subagents.": "启用团队模式(`/team on`)后,本会话及其可续跑子代理即可使用共享任务面板工具(`team_task_*`)。";
1267
+ readonly Task: "任务";
1268
+ readonly "Agent Teams service is not mounted in this profile.": "当前配置档案未挂载 Agent 团队服务。";
1269
+ readonly "Agent Teams enabled for this session. Shared task-board tools (team_task_*) are now available on the next step.": "已为本会话启用 Agent 团队模式,下一步起可使用共享任务面板工具(team_task_*)。";
1270
+ readonly "Agent Teams disabled for this session. Existing shared tasks remain saved in the session log.": "已为本会话停用 Agent 团队模式,已有的共享任务仍保留在会话日志中。";
1271
+ readonly "Shared task-board tools (team_task_*) and collaboration guidance are active for this session tree.": "共享任务面板工具(team_task_*)与协作指引已在当前会话树中生效。";
1272
+ readonly "Team mode is off. Enable it to expose shared task-board tools (team_task_*) to the root agent and its continuable subagents.": "团队模式已关闭。启用后,主代理及其可续跑子代理可使用共享任务面板工具(team_task_*)。";
1273
+ readonly "Toggle Team mode or inspect the shared task board": "切换团队模式或查看共享任务面板";
1274
+ readonly "Disable Team mode": "停用团队模式";
1275
+ readonly "Enable Team mode": "启用团队模式";
1276
+ readonly "Hide team_task_* tools on subsequent steps while keeping recorded tasks.": "在后续步骤中隐藏 team_task_* 工具,同时保留已记录的任务。";
1277
+ readonly "Expose team_task_* tools and collaboration policy to this session tree.": "向当前会话树开放 team_task_* 工具与协作策略。";
1278
+ readonly "Agent Teams enabled for this session.": "已为本会话启用 Agent 团队模式。";
1279
+ readonly "Agent Teams disabled for this session.": "已为本会话停用 Agent 团队模式。";
1280
+ readonly "Manage DeepSeek sign-in, profile, wallet balances and account notices shared with DSH.": "管理与 DSH 共享的 DeepSeek 登录、账户资料、钱包余额和账户通知。";
1281
+ readonly "Account notifications": "账户通知";
1282
+ readonly "Select a notification to read": "选择要查看的通知";
1283
+ readonly "Dismiss notification": "忽略此通知";
1284
+ readonly "Account notification": "账户通知";
1285
+ readonly "Platform links": "平台链接";
1286
+ readonly "Top up": "充值";
1287
+ readonly Usage: "用量";
1288
+ readonly "Notifications ({count}):": "通知({count}):";
1289
+ readonly "Auto review": "自动审查";
1290
+ readonly "auto review": "自动审查";
1291
+ readonly "Run without a sandbox after an experimental same-model review of every native tool call and PTC inner call.": "无沙箱运行;每次原生工具调用和 PTC 内层调用前由当前模型进行实验性审查。";
1292
+ readonly "Enable full access": "启用完全访问";
1293
+ readonly "Disable sandbox and approval protection.": "关闭沙箱与审批保护。";
1294
+ readonly "Keep the current permission.": "保持当前权限不变。";
1295
+ readonly "Enable experimental model-reviewed access without a sandbox?": "启用无沙箱的实验性模型自动审查权限?";
1296
+ readonly "Before every native tool call and PTC inner call, the current model reviews whether to allow it; denied calls ask you. Auto review can falsely allow or deny actions and uses extra tokens.": "每次原生工具调用和 PTC 内层调用前,当前模型会审查是否放行;审查拒绝的调用由你决定批准或拒绝。自动审查可能误放行或误拒绝,并会消耗额外 token。";
1297
+ readonly "Enable auto review": "启用自动审查";
1298
+ readonly "Disable sandbox and review every tool call with the current model.": "关闭沙箱,并由当前模型审查每次工具调用。";
1136
1299
  };