@aiwayds/dsh-tui-pi 2.19.0 → 2.21.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.
- package/README.md +18 -48
- package/README.zh-CN.md +17 -47
- package/lib/agents.js +67 -52
- package/lib/agents.js.map +1 -1
- package/lib/ask-user.js +30 -30
- package/lib/ask-user.js.map +1 -1
- package/lib/attachments.js +8 -3
- package/lib/attachments.js.map +1 -1
- package/lib/btw-overlay.d.ts +18 -2
- package/lib/btw-overlay.js +55 -15
- package/lib/btw-overlay.js.map +1 -1
- package/lib/btw.d.ts +46 -6
- package/lib/btw.js +60 -20
- package/lib/btw.js.map +1 -1
- package/lib/custom-provider.js +34 -28
- package/lib/custom-provider.js.map +1 -1
- package/lib/footer.d.ts +9 -8
- package/lib/footer.js +36 -18
- package/lib/footer.js.map +1 -1
- package/lib/hard-exit.d.ts +36 -0
- package/lib/hard-exit.js +64 -0
- package/lib/hard-exit.js.map +1 -0
- package/lib/history-fork.d.ts +2 -2
- package/lib/history-fork.js +12 -9
- package/lib/history-fork.js.map +1 -1
- package/lib/history-turns.d.ts +4 -2
- package/lib/history-turns.js +7 -3
- package/lib/history-turns.js.map +1 -1
- package/lib/history.js +57 -45
- package/lib/history.js.map +1 -1
- package/lib/hotkeys.js +44 -33
- package/lib/hotkeys.js.map +1 -1
- package/lib/i18n/index.d.ts +54 -0
- package/lib/i18n/index.js +98 -0
- package/lib/i18n/index.js.map +1 -0
- package/lib/i18n/registry.d.ts +65 -0
- package/lib/i18n/registry.js +129 -0
- package/lib/i18n/registry.js.map +1 -0
- package/lib/index.js +216 -108
- package/lib/index.js.map +1 -1
- package/lib/language-ask.d.ts +98 -0
- package/lib/language-ask.js +118 -0
- package/lib/language-ask.js.map +1 -0
- package/lib/live-widgets.js +9 -8
- package/lib/live-widgets.js.map +1 -1
- package/lib/login.js +5 -4
- package/lib/login.js.map +1 -1
- package/lib/messages.d.ts +0 -4
- package/lib/messages.js +14 -15
- package/lib/messages.js.map +1 -1
- package/lib/model-profiles.js +32 -20
- package/lib/model-profiles.js.map +1 -1
- package/lib/panels.js +18 -17
- package/lib/panels.js.map +1 -1
- package/lib/preflight-projcache.js +9 -3
- package/lib/preflight-projcache.js.map +1 -1
- package/lib/preset-dialog.d.ts +3 -3
- package/lib/preset-dialog.js +20 -17
- package/lib/preset-dialog.js.map +1 -1
- package/lib/provider-catalog.d.ts +23 -7
- package/lib/provider-catalog.js +90 -68
- package/lib/provider-catalog.js.map +1 -1
- package/lib/queue-panel.d.ts +2 -2
- package/lib/queue-panel.js +13 -9
- package/lib/queue-panel.js.map +1 -1
- package/lib/repair-dialog.d.ts +4 -4
- package/lib/repair-dialog.js +23 -16
- package/lib/repair-dialog.js.map +1 -1
- package/lib/route-dialog.d.ts +3 -3
- package/lib/route-dialog.js +20 -14
- package/lib/route-dialog.js.map +1 -1
- package/lib/selectors.d.ts +15 -1
- package/lib/selectors.js +57 -23
- package/lib/selectors.js.map +1 -1
- package/lib/sessions.d.ts +47 -14
- package/lib/sessions.js +162 -53
- package/lib/sessions.js.map +1 -1
- package/lib/settings.d.ts +68 -9
- package/lib/settings.js +327 -78
- package/lib/settings.js.map +1 -1
- package/lib/skills-manager.js +27 -21
- package/lib/skills-manager.js.map +1 -1
- package/lib/skills.js +5 -4
- package/lib/skills.js.map +1 -1
- package/lib/startup-info.js +9 -3
- package/lib/startup-info.js.map +1 -1
- package/lib/steer-flow.d.ts +14 -4
- package/lib/steer-flow.js +24 -9
- package/lib/steer-flow.js.map +1 -1
- package/lib/stop-dialog.d.ts +2 -2
- package/lib/stop-dialog.js +16 -12
- package/lib/stop-dialog.js.map +1 -1
- package/lib/subagent-viewer.d.ts +3 -6
- package/lib/subagent-viewer.js +38 -36
- package/lib/subagent-viewer.js.map +1 -1
- package/lib/theme-preview.js +12 -11
- package/lib/theme-preview.js.map +1 -1
- package/lib/theme-settings.d.ts +23 -2
- package/lib/theme-settings.js +68 -61
- package/lib/theme-settings.js.map +1 -1
- package/lib/tui.js +2 -1
- package/lib/tui.js.map +1 -1
- package/locales/en.json +646 -0
- package/locales/ja.json +646 -0
- package/locales/ko.json +646 -0
- package/locales/zh-CN.json +646 -0
- package/package.json +2 -1
- package/skills/dsh-tui-pi-config/SKILL.md +9 -2
package/lib/startup-info.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startup-info.js","sourceRoot":"","sources":["../src/startup-info.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"startup-info.js","sourceRoot":"","sources":["../src/startup-info.ts"],"names":[],"mappings":"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"}
|
package/lib/steer-flow.d.ts
CHANGED
|
@@ -58,7 +58,7 @@ export declare function buildUserPrompt(text: string): {
|
|
|
58
58
|
source: {
|
|
59
59
|
kind: "user";
|
|
60
60
|
};
|
|
61
|
-
} & Pick<import("@deepseek-ai/dsh-llm").UserMessage, "
|
|
61
|
+
} & Pick<import("@deepseek-ai/dsh-llm").UserMessage, "id" | "role">;
|
|
62
62
|
/**
|
|
63
63
|
* Deliver a built message honoring the chosen route, with the design's race
|
|
64
64
|
* fallback: a requested steer that cannot land (the turn ended before
|
|
@@ -106,9 +106,19 @@ export type QueueActionResult = {
|
|
|
106
106
|
* Shared degrade notices — one wording source for the submit dialog path,
|
|
107
107
|
* the queue panel and the transcript mirrors (review nit: the copy was
|
|
108
108
|
* duplicated in three places and could drift).
|
|
109
|
+
*
|
|
110
|
+
* Kept as plain English consts (NOT resolved through {@link t}) because
|
|
111
|
+
* src/index.ts renders them directly and this module must not change that
|
|
112
|
+
* import shape. The i18n twins live under the `steer.notice.*` keys and are
|
|
113
|
+
* used by {@link describeQueueActionResult}; the en catalog values are
|
|
114
|
+
* byte-identical to these consts.
|
|
109
115
|
*/
|
|
110
116
|
export declare const STEER_UNAVAILABLE_NOTICE = "Steering was unavailable \u2014 the message stayed queued as a follow-up.";
|
|
111
117
|
export declare const TURN_ENDED_QUEUED_NOTICE = "The turn ended before the steer could land \u2014 queued as a follow-up instead.";
|
|
118
|
+
/** Translated twin of {@link STEER_UNAVAILABLE_NOTICE} for render paths that go through `t()`. */
|
|
119
|
+
export declare function steerUnavailableNotice(): string;
|
|
120
|
+
/** Translated twin of {@link TURN_ENDED_QUEUED_NOTICE} for render paths that go through `t()`. */
|
|
121
|
+
export declare function turnEndedQueuedNotice(): string;
|
|
112
122
|
/** Remove one pending message from the inbox (queue panel `d`). */
|
|
113
123
|
export declare function removeFromInbox(inbox: RemovableInbox, view: PendingPromptView): QueueActionResult;
|
|
114
124
|
/**
|
|
@@ -130,8 +140,8 @@ export declare function promotePending(agent: DeliverableAgent & {
|
|
|
130
140
|
readonly inbox: RemovableInbox;
|
|
131
141
|
}, view: PendingPromptView): QueueActionResult;
|
|
132
142
|
/**
|
|
133
|
-
* Human-readable transcript notice for one queue action result (
|
|
134
|
-
*
|
|
135
|
-
* the message took, per design §二.2/§二.4.
|
|
143
|
+
* Human-readable transcript notice for one queue action result (translated
|
|
144
|
+
* at call time through the `steer.notice.*` keys). The degrade wording
|
|
145
|
+
* states the ACTUAL route the message took, per design §二.2/§二.4.
|
|
136
146
|
*/
|
|
137
147
|
export declare function describeQueueActionResult(result: QueueActionResult): string;
|
package/lib/steer-flow.js
CHANGED
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* follow-up instead of failing (design §二.2 race fallback).
|
|
21
21
|
*/
|
|
22
22
|
import { createUserMessage } from '@deepseek-ai/dsh-llm';
|
|
23
|
+
import { t } from "./i18n/index.js";
|
|
23
24
|
/** The submit path for one line: direct send when idle, dialog when running. */
|
|
24
25
|
export function decideSubmitPath(running) {
|
|
25
26
|
return running ? 'dialog' : 'direct';
|
|
@@ -79,9 +80,23 @@ export function deliverToAgent(agent, message, route) {
|
|
|
79
80
|
* Shared degrade notices — one wording source for the submit dialog path,
|
|
80
81
|
* the queue panel and the transcript mirrors (review nit: the copy was
|
|
81
82
|
* duplicated in three places and could drift).
|
|
83
|
+
*
|
|
84
|
+
* Kept as plain English consts (NOT resolved through {@link t}) because
|
|
85
|
+
* src/index.ts renders them directly and this module must not change that
|
|
86
|
+
* import shape. The i18n twins live under the `steer.notice.*` keys and are
|
|
87
|
+
* used by {@link describeQueueActionResult}; the en catalog values are
|
|
88
|
+
* byte-identical to these consts.
|
|
82
89
|
*/
|
|
83
90
|
export const STEER_UNAVAILABLE_NOTICE = 'Steering was unavailable — the message stayed queued as a follow-up.';
|
|
84
91
|
export const TURN_ENDED_QUEUED_NOTICE = 'The turn ended before the steer could land — queued as a follow-up instead.';
|
|
92
|
+
/** Translated twin of {@link STEER_UNAVAILABLE_NOTICE} for render paths that go through `t()`. */
|
|
93
|
+
export function steerUnavailableNotice() {
|
|
94
|
+
return t('steer.notice.unavailable');
|
|
95
|
+
}
|
|
96
|
+
/** Translated twin of {@link TURN_ENDED_QUEUED_NOTICE} for render paths that go through `t()`. */
|
|
97
|
+
export function turnEndedQueuedNotice() {
|
|
98
|
+
return t('steer.notice.turnEnded');
|
|
99
|
+
}
|
|
85
100
|
/** Remove one pending message from the inbox (queue panel `d`). */
|
|
86
101
|
export function removeFromInbox(inbox, view) {
|
|
87
102
|
let removed;
|
|
@@ -128,28 +143,28 @@ export function promotePending(agent, view) {
|
|
|
128
143
|
catch {
|
|
129
144
|
return {
|
|
130
145
|
kind: 'error',
|
|
131
|
-
error:
|
|
146
|
+
error: t('steer.notice.orphaned', { error: delivery.error }),
|
|
132
147
|
};
|
|
133
148
|
}
|
|
134
149
|
}
|
|
135
150
|
}
|
|
136
151
|
/**
|
|
137
|
-
* Human-readable transcript notice for one queue action result (
|
|
138
|
-
*
|
|
139
|
-
* the message took, per design §二.2/§二.4.
|
|
152
|
+
* Human-readable transcript notice for one queue action result (translated
|
|
153
|
+
* at call time through the `steer.notice.*` keys). The degrade wording
|
|
154
|
+
* states the ACTUAL route the message took, per design §二.2/§二.4.
|
|
140
155
|
*/
|
|
141
156
|
export function describeQueueActionResult(result) {
|
|
142
157
|
switch (result.kind) {
|
|
143
158
|
case 'removed':
|
|
144
|
-
return '
|
|
159
|
+
return t('steer.notice.removed');
|
|
145
160
|
case 'promoted':
|
|
146
161
|
return result.degraded
|
|
147
|
-
?
|
|
148
|
-
: '
|
|
162
|
+
? t('steer.notice.unavailable')
|
|
163
|
+
: t('steer.notice.promoted');
|
|
149
164
|
case 'not-found':
|
|
150
|
-
return '
|
|
165
|
+
return t('steer.notice.notFound');
|
|
151
166
|
case 'error':
|
|
152
|
-
return
|
|
167
|
+
return t('steer.notice.error', { error: result.error });
|
|
153
168
|
}
|
|
154
169
|
}
|
|
155
170
|
//# sourceMappingURL=steer-flow.js.map
|
package/lib/steer-flow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steer-flow.js","sourceRoot":"","sources":["../src/steer-flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"steer-flow.js","sourceRoot":"","sources":["../src/steer-flow.ts"],"names":[],"mappings":"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"}
|
package/lib/stop-dialog.d.ts
CHANGED
|
@@ -45,8 +45,8 @@ export declare function stopConfirmOptions(): ReadonlyArray<{
|
|
|
45
45
|
}>;
|
|
46
46
|
/** Accent-BOLD dialog title. */
|
|
47
47
|
export declare function stopConfirmTitle(wording: StopConfirmWording): string;
|
|
48
|
-
/** Footer hint —
|
|
49
|
-
export declare
|
|
48
|
+
/** Footer hint — resolved per call so a live language switch repaints it. */
|
|
49
|
+
export declare function stopConfirmFooter(): string;
|
|
50
50
|
/**
|
|
51
51
|
* Pure dialog state: which row is highlighted, and the terminal outcome.
|
|
52
52
|
* Same shape as the preset dialog's state.
|
package/lib/stop-dialog.js
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
* the CURRENT editor instance through `restoreFocus`.
|
|
23
23
|
*/
|
|
24
24
|
import { getKeybindings } from '@earendil-works/pi-tui';
|
|
25
|
+
import { t } from "./i18n/index.js";
|
|
25
26
|
import { PanelHost, panelThemeFns } from "./panels.js";
|
|
26
27
|
import { BOLD, RESET, ansiFg } from "./theme/index.js";
|
|
27
28
|
import { clipToWidth, wrapText } from "./text.js";
|
|
@@ -37,35 +38,38 @@ export const STOP_CONFIRM_OPTION_IDS = ['stop', 'cancel'];
|
|
|
37
38
|
export function stopConfirmWording(mainRunning, runningChildren) {
|
|
38
39
|
const running = [];
|
|
39
40
|
if (mainRunning)
|
|
40
|
-
running.push('
|
|
41
|
+
running.push(t('stop.confirm.mainRunning'));
|
|
41
42
|
if (runningChildren > 0) {
|
|
42
|
-
running.push(
|
|
43
|
+
running.push(runningChildren === 1
|
|
44
|
+
? t('stop.confirm.childrenOne', { count: runningChildren })
|
|
45
|
+
: t('stop.confirm.childrenMany', { count: runningChildren }));
|
|
43
46
|
}
|
|
44
47
|
const situation = running.length > 0
|
|
45
|
-
?
|
|
46
|
-
: '
|
|
48
|
+
? t('stop.confirm.situation', { parts: running.join(t('stop.confirm.joiner')) })
|
|
49
|
+
: t('stop.confirm.idle');
|
|
47
50
|
return {
|
|
48
|
-
title: '
|
|
51
|
+
title: t('stop.confirm.title'),
|
|
49
52
|
body: [
|
|
50
53
|
situation,
|
|
51
|
-
'
|
|
52
|
-
+ 'Queued messages are kept and the session stays resumable.',
|
|
54
|
+
t('stop.confirm.reassure'),
|
|
53
55
|
],
|
|
54
56
|
};
|
|
55
57
|
}
|
|
56
58
|
/** The fixed option rows for one wording. */
|
|
57
59
|
export function stopConfirmOptions() {
|
|
58
60
|
return [
|
|
59
|
-
{ id: 'stop', text: '
|
|
60
|
-
{ id: 'cancel', text: '
|
|
61
|
+
{ id: 'stop', text: t('stop.option.stop') },
|
|
62
|
+
{ id: 'cancel', text: t('stop.option.cancel') },
|
|
61
63
|
];
|
|
62
64
|
}
|
|
63
65
|
/** Accent-BOLD dialog title. */
|
|
64
66
|
export function stopConfirmTitle(wording) {
|
|
65
67
|
return wording.title;
|
|
66
68
|
}
|
|
67
|
-
/** Footer hint —
|
|
68
|
-
export
|
|
69
|
+
/** Footer hint — resolved per call so a live language switch repaints it. */
|
|
70
|
+
export function stopConfirmFooter() {
|
|
71
|
+
return t('stop.footer');
|
|
72
|
+
}
|
|
69
73
|
export function initialStopConfirmState() {
|
|
70
74
|
return { selected: 0 };
|
|
71
75
|
}
|
|
@@ -142,7 +146,7 @@ export class StopConfirmPanel {
|
|
|
142
146
|
: fns.muted(row));
|
|
143
147
|
}
|
|
144
148
|
lines.push('');
|
|
145
|
-
lines.push(fns.subtle(clipToWidth(
|
|
149
|
+
lines.push(fns.subtle(clipToWidth(stopConfirmFooter(), wrap)));
|
|
146
150
|
return lines;
|
|
147
151
|
}
|
|
148
152
|
handleInput(data) {
|
package/lib/stop-dialog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-dialog.js","sourceRoot":"","sources":["../src/stop-dialog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,cAAc,EAA4B,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAiB,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEjD,uEAAuE;AACvE,MAAM,CAAC,MAAM,uBAAuB,GAAqC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAQ3F;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAoB,EAAE,eAAuB;IAC9E,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,WAAW;QAAE,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"stop-dialog.js","sourceRoot":"","sources":["../src/stop-dialog.ts"],"names":[],"mappings":"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"}
|
package/lib/subagent-viewer.d.ts
CHANGED
|
@@ -48,16 +48,13 @@ import { type TuiTheme } from './theme/index.ts';
|
|
|
48
48
|
export declare const STEER_SENT_NOTICE = "Steer message sent";
|
|
49
49
|
/** Notice shown when the target child can no longer receive steering. */
|
|
50
50
|
export declare const STEER_ENDED_NOTICE = "This subagent has ended \u2014 steering unavailable";
|
|
51
|
-
/** Transcript footer for a RUNNING child: x ×2 stops it. */
|
|
52
|
-
export declare const VIEWER_FOOTER_RUNNING = "\u2191\u2193 scroll \u00B7 Esc close \u00B7 x \u00D72 stop \u00B7 Enter steer";
|
|
53
|
-
/** Transcript footer for a SETTLED child: nothing to stop, x ×2 closes. */
|
|
54
|
-
export declare const VIEWER_FOOTER_SETTLED = "\u2191\u2193 scroll \u00B7 Esc close \u00B7 x \u00D72 close \u00B7 Enter steer";
|
|
55
51
|
/**
|
|
56
52
|
* The transcript footer for one child state. The x ×2 semantics flipped with
|
|
57
53
|
* the everything-stop work: on a running child the double press is the
|
|
58
54
|
* per-subagent STOP (cancel this child), on a settled one — nothing left to
|
|
59
55
|
* stop — it keeps its old close shortcut. The footer always names which one
|
|
60
|
-
* a press will do.
|
|
56
|
+
* a press will do. Resolved through t() per call (never freeze the language
|
|
57
|
+
* in a module constant).
|
|
61
58
|
*/
|
|
62
59
|
export declare function viewerFooter(running: boolean): string;
|
|
63
60
|
/** Steer input footer: hardcoded like every other in-panel key hint. */
|
|
@@ -120,7 +117,7 @@ export declare function buildSteerMessage(text: string): {
|
|
|
120
117
|
kind: "plugin";
|
|
121
118
|
plugin: string;
|
|
122
119
|
};
|
|
123
|
-
} & Pick<import("@deepseek-ai/dsh-llm").UserMessage, "
|
|
120
|
+
} & Pick<import("@deepseek-ai/dsh-llm").UserMessage, "id" | "role">;
|
|
124
121
|
/**
|
|
125
122
|
* Resolve the route for one child at THIS instant and deliver `text` when it
|
|
126
123
|
* is live. Pure decision + delivery, no scheduling: callers own the timing
|
package/lib/subagent-viewer.js
CHANGED
|
@@ -50,6 +50,7 @@ import { normalizePreview } from "./sessions.js";
|
|
|
50
50
|
import { toolSubject } from "./activity.js";
|
|
51
51
|
import { ansiFg, BOLD, RESET } from "./theme/index.js";
|
|
52
52
|
import { clipToWidth } from "./text.js";
|
|
53
|
+
import { t } from "./i18n/index.js";
|
|
53
54
|
/** Live-refresh interval of the transcript panel while it is open. */
|
|
54
55
|
const VIEWER_TICK_MS = 300;
|
|
55
56
|
/** How many recent settled children appear after the running ones. */
|
|
@@ -64,19 +65,16 @@ const CHILD_LOG_CAP = 2000;
|
|
|
64
65
|
export const STEER_SENT_NOTICE = 'Steer message sent';
|
|
65
66
|
/** Notice shown when the target child can no longer receive steering. */
|
|
66
67
|
export const STEER_ENDED_NOTICE = 'This subagent has ended — steering unavailable';
|
|
67
|
-
/** Transcript footer for a RUNNING child: x ×2 stops it. */
|
|
68
|
-
export const VIEWER_FOOTER_RUNNING = '↑↓ scroll · Esc close · x ×2 stop · Enter steer';
|
|
69
|
-
/** Transcript footer for a SETTLED child: nothing to stop, x ×2 closes. */
|
|
70
|
-
export const VIEWER_FOOTER_SETTLED = '↑↓ scroll · Esc close · x ×2 close · Enter steer';
|
|
71
68
|
/**
|
|
72
69
|
* The transcript footer for one child state. The x ×2 semantics flipped with
|
|
73
70
|
* the everything-stop work: on a running child the double press is the
|
|
74
71
|
* per-subagent STOP (cancel this child), on a settled one — nothing left to
|
|
75
72
|
* stop — it keeps its old close shortcut. The footer always names which one
|
|
76
|
-
* a press will do.
|
|
73
|
+
* a press will do. Resolved through t() per call (never freeze the language
|
|
74
|
+
* in a module constant).
|
|
77
75
|
*/
|
|
78
76
|
export function viewerFooter(running) {
|
|
79
|
-
return running ?
|
|
77
|
+
return running ? t('viewer.footer.running') : t('viewer.footer.settled');
|
|
80
78
|
}
|
|
81
79
|
/** Steer input footer: hardcoded like every other in-panel key hint. */
|
|
82
80
|
export const STEER_FOOTER = 'Enter send · Shift+Enter newline · Esc cancel';
|
|
@@ -197,13 +195,15 @@ function statusGlyph(view) {
|
|
|
197
195
|
export function eventLine(event, callNames) {
|
|
198
196
|
switch (event.type) {
|
|
199
197
|
case 'turn/start':
|
|
200
|
-
return
|
|
198
|
+
return t('viewer.event.turnStart', { n: event.data.turn });
|
|
201
199
|
case 'turn/end': {
|
|
202
200
|
const reason = event.data.reason;
|
|
203
201
|
const detail = reason.kind === 'error'
|
|
204
|
-
?
|
|
202
|
+
? (reason.error !== undefined
|
|
203
|
+
? t('viewer.event.errorDetail', { message: reason.error.message ?? '' })
|
|
204
|
+
: t('viewer.event.error'))
|
|
205
205
|
: reason.kind;
|
|
206
|
-
return
|
|
206
|
+
return t('viewer.event.turnEnd', { n: event.data.turn, detail });
|
|
207
207
|
}
|
|
208
208
|
case 'user/message': {
|
|
209
209
|
const message = event.data;
|
|
@@ -261,7 +261,7 @@ export function eventLine(event, callNames) {
|
|
|
261
261
|
}
|
|
262
262
|
case 'subagent/descriptor': {
|
|
263
263
|
const descriptor = event.data;
|
|
264
|
-
const parts = [`${sunglassesIcon()} subagent`];
|
|
264
|
+
const parts = [`${sunglassesIcon()} ${t('viewer.event.subagent')}`];
|
|
265
265
|
if (descriptor.provider !== undefined && descriptor.provider !== '')
|
|
266
266
|
parts.push(descriptor.provider);
|
|
267
267
|
if (descriptor.mode !== undefined)
|
|
@@ -274,7 +274,7 @@ export function eventLine(event, callNames) {
|
|
|
274
274
|
const summary = todos
|
|
275
275
|
.map(todo => `${todo.status === 'in_progress' ? '◐' : '☐'} ${todo.content}`)
|
|
276
276
|
.join(' ');
|
|
277
|
-
return
|
|
277
|
+
return t('viewer.event.todos', { done, total: todos.length, summary: normalizePreview(summary) });
|
|
278
278
|
}
|
|
279
279
|
default:
|
|
280
280
|
return undefined;
|
|
@@ -306,7 +306,7 @@ export function pickerItems(views, getRoundCount, maxRounds, getCompactionCount
|
|
|
306
306
|
.slice(0, SETTLED_CAP);
|
|
307
307
|
return [...running, ...settled].map(view => {
|
|
308
308
|
const rounds = getRoundCount(view.childId);
|
|
309
|
-
const roundsText = maxRounds > 0 ?
|
|
309
|
+
const roundsText = t('viewer.rounds', { count: rounds, cap: maxRounds > 0 ? `/${maxRounds}` : '' });
|
|
310
310
|
const mode = view.mode === undefined ? '' : ` [${view.mode}]`;
|
|
311
311
|
// Model short name — the route's model tail (the segment after the
|
|
312
312
|
// provider slash; a slash-less route shows whole). List rows scan, so
|
|
@@ -323,8 +323,8 @@ export function pickerItems(views, getRoundCount, maxRounds, getCompactionCount
|
|
|
323
323
|
// `⚡ injected` — a policy wrap-up (or steer) reached this child; shows
|
|
324
324
|
// the injection landed even when the child LLM then ignored it.
|
|
325
325
|
// `⏻ stopped` — the policy FORCE-stopped it (grace exhausted).
|
|
326
|
-
const injected = view.injectedAt !== undefined ? '
|
|
327
|
-
const stopped = view.hardStop !== undefined ? '
|
|
326
|
+
const injected = view.injectedAt !== undefined ? ` ${t('viewer.injected')}` : '';
|
|
327
|
+
const stopped = view.hardStop !== undefined ? ` ${t('viewer.stopped')}` : '';
|
|
328
328
|
return {
|
|
329
329
|
value: view.childId,
|
|
330
330
|
label: `${statusGlyph(view)} ${view.label}${mode}: ${roundsText}${stopped}${injected}${modelShort !== undefined ? ` · ${modelShort}` : ''}`,
|
|
@@ -424,14 +424,14 @@ class LiveSubagentTable {
|
|
|
424
424
|
/** A fresh table over `items` — widths re-fit, selection at `preselect`. */
|
|
425
425
|
buildList(items, preselect) {
|
|
426
426
|
return new TablePanel(this.theme, {
|
|
427
|
-
title: '
|
|
427
|
+
title: t('viewer.title'),
|
|
428
428
|
// Auto layout: SUB-AGENT fits its content, STATS runs to the edge.
|
|
429
|
-
columns: autoColumns([{ key: 'label', title: '
|
|
429
|
+
columns: autoColumns([{ key: 'label', title: t('viewer.col.subagent'), cap: 40 }, { key: 'description', title: t('viewer.col.stats') }], items, (item, key) => (key === 'description' ? item.description ?? '' : item.label)),
|
|
430
430
|
rows: items,
|
|
431
431
|
renderCell: (item, column) => (column.key === 'description' ? item.description ?? '' : item.label),
|
|
432
432
|
maxVisible: PICKER_MAX_VISIBLE,
|
|
433
433
|
preselect,
|
|
434
|
-
footer: '
|
|
434
|
+
footer: t('viewer.pickerFooter'),
|
|
435
435
|
onSelect: item => this.onSelectItem(item),
|
|
436
436
|
onCancel: () => this.onCancelPicker(),
|
|
437
437
|
});
|
|
@@ -557,18 +557,18 @@ export class SubagentViewerPanel {
|
|
|
557
557
|
const wrap = Math.max(2, width - 2);
|
|
558
558
|
const out = [...this.headerLines(view)];
|
|
559
559
|
if (truncated)
|
|
560
|
-
out.push(fns.subtle(
|
|
560
|
+
out.push(fns.subtle(t('viewer.truncated', { cap: CHILD_LOG_CAP })));
|
|
561
561
|
// The `⏻` marker row: the maxRounds policy hard-stopped this child — a
|
|
562
562
|
// synthetic in-transcript line (render-layer composition, the same shape
|
|
563
563
|
// as the dsh-dcp compaction marker), NOT a log event. It states the
|
|
564
564
|
// round it fired at and the cap it enforced so the stop reads as policy,
|
|
565
565
|
// never as a mysterious failure.
|
|
566
566
|
if (view?.hardStop !== undefined) {
|
|
567
|
-
out.push(fns.subtle(clipToWidth(
|
|
567
|
+
out.push(fns.subtle(clipToWidth(t('viewer.hardStopped', { round: view.hardStop.round, cap: view.hardStop.cap }), wrap)));
|
|
568
568
|
}
|
|
569
569
|
const slice = lines.slice(this.scrollTop, this.scrollTop + this.bodyRows);
|
|
570
570
|
if (slice.length === 0) {
|
|
571
|
-
out.push(fns.subtle('
|
|
571
|
+
out.push(fns.subtle(t('viewer.noEvents')));
|
|
572
572
|
}
|
|
573
573
|
else {
|
|
574
574
|
for (const line of slice)
|
|
@@ -605,7 +605,7 @@ export class SubagentViewerPanel {
|
|
|
605
605
|
// broken.
|
|
606
606
|
const running = this.bridge.getAgentViews().some(view => view.childId === this.childId && view.outcome === undefined);
|
|
607
607
|
if (running && this.bridge.cancelChild(this.childId)) {
|
|
608
|
-
this.showNotice('
|
|
608
|
+
this.showNotice(t('viewer.canceling'));
|
|
609
609
|
}
|
|
610
610
|
else {
|
|
611
611
|
this.onClose();
|
|
@@ -650,12 +650,12 @@ export class SubagentViewerPanel {
|
|
|
650
650
|
headerLines(view) {
|
|
651
651
|
const p = this.theme.palette;
|
|
652
652
|
if (view === undefined) {
|
|
653
|
-
return [ansiFg(p.accent) + BOLD +
|
|
653
|
+
return [ansiFg(p.accent) + BOLD + t('viewer.header.child', { id: clipToWidth(this.childId, 8) }) + RESET];
|
|
654
654
|
}
|
|
655
|
-
const status = view.outcome === undefined ? 'running'
|
|
656
|
-
: view.outcome === 'completed' ? 'completed'
|
|
657
|
-
: view.outcome === 'failed' ? 'failed'
|
|
658
|
-
: 'cancelled';
|
|
655
|
+
const status = view.outcome === undefined ? t('viewer.status.running')
|
|
656
|
+
: view.outcome === 'completed' ? t('viewer.status.completed')
|
|
657
|
+
: view.outcome === 'failed' ? t('viewer.status.failed')
|
|
658
|
+
: t('viewer.status.cancelled');
|
|
659
659
|
const statusColor = view.outcome === undefined ? p.accent
|
|
660
660
|
: view.outcome === 'completed' ? p.success
|
|
661
661
|
: view.outcome === 'failed' ? p.danger
|
|
@@ -671,7 +671,7 @@ export class SubagentViewerPanel {
|
|
|
671
671
|
if (view.modelRoute !== undefined)
|
|
672
672
|
routeParts.push(view.modelRoute);
|
|
673
673
|
if (view.thinking !== undefined)
|
|
674
|
-
routeParts.push(
|
|
674
|
+
routeParts.push(t('viewer.route.think', { effort: view.thinking }));
|
|
675
675
|
if (view.mode !== undefined)
|
|
676
676
|
routeParts.push(view.mode);
|
|
677
677
|
if (view.provider !== undefined && view.provider !== 'spawn')
|
|
@@ -681,11 +681,11 @@ export class SubagentViewerPanel {
|
|
|
681
681
|
// Line 3 — the activity/budget indicators (the old header tail).
|
|
682
682
|
const maxRounds = this.readMaxRounds();
|
|
683
683
|
const rounds = this.bridge.getRoundCount(this.childId);
|
|
684
|
-
const tail = [
|
|
684
|
+
const tail = [t('viewer.rounds', { count: rounds, cap: maxRounds > 0 ? `/${maxRounds}` : '' })];
|
|
685
685
|
if (view.hardStop !== undefined)
|
|
686
|
-
tail.push(
|
|
686
|
+
tail.push(t('viewer.hardStoppedAt', { round: view.hardStop.round }));
|
|
687
687
|
if (view.injectedAt !== undefined)
|
|
688
|
-
tail.push('
|
|
688
|
+
tail.push(t('viewer.injected'));
|
|
689
689
|
if (view.tokens > 0)
|
|
690
690
|
tail.push(formatTokens(view.tokens));
|
|
691
691
|
const elapsed = (view.outcome === undefined ? Date.now() : view.endedAt ?? Date.now()) - view.startedAt;
|
|
@@ -754,15 +754,15 @@ export class SteerInputPanel {
|
|
|
754
754
|
const fns = panelThemeFns(this.theme);
|
|
755
755
|
const wrap = Math.max(2, width - 2);
|
|
756
756
|
const lines = [
|
|
757
|
-
fns.accent(BOLD + clipToWidth(
|
|
758
|
-
fns.muted(clipToWidth('
|
|
757
|
+
fns.accent(BOLD + clipToWidth(t('viewer.steer.title', { label: this.options.label }), wrap) + RESET),
|
|
758
|
+
fns.muted(clipToWidth(t('viewer.steer.hint'), wrap)),
|
|
759
759
|
'',
|
|
760
760
|
...this.editor.render(wrap),
|
|
761
761
|
'',
|
|
762
762
|
];
|
|
763
763
|
if (this.error !== undefined)
|
|
764
764
|
lines.push(this.fgDanger(clipToWidth(`✘ ${this.error}`, wrap)));
|
|
765
|
-
lines.push(fns.subtle(clipToWidth(
|
|
765
|
+
lines.push(fns.subtle(clipToWidth(t('viewer.steer.footer'), wrap)));
|
|
766
766
|
return lines;
|
|
767
767
|
}
|
|
768
768
|
handleInput(data) {
|
|
@@ -874,7 +874,9 @@ export async function openSubagentViewer(ctx, tui, theme, bridge, restoreFocus)
|
|
|
874
874
|
if (key === 'K') {
|
|
875
875
|
const stopped = bridge.cancelAllChildren();
|
|
876
876
|
// Feedback rides the same toast channel as the per-viewer stop.
|
|
877
|
-
panel.showNotice?.(
|
|
877
|
+
panel.showNotice?.(stopped === 1
|
|
878
|
+
? t('viewer.stopAllOne')
|
|
879
|
+
: t('viewer.stopAllMany', { n: stopped }));
|
|
878
880
|
return true;
|
|
879
881
|
}
|
|
880
882
|
return false;
|
|
@@ -902,7 +904,7 @@ export async function openSubagentViewer(ctx, tui, theme, bridge, restoreFocus)
|
|
|
902
904
|
}, () => tui.requestRender(), () => {
|
|
903
905
|
// Ended children get an inline notice INSTEAD of the input box.
|
|
904
906
|
if (!steerAvailable(childId)) {
|
|
905
|
-
panel.showNotice(
|
|
907
|
+
panel.showNotice(t('viewer.steer.ended'));
|
|
906
908
|
return;
|
|
907
909
|
}
|
|
908
910
|
panel.dispose();
|
|
@@ -924,7 +926,7 @@ export async function openSubagentViewer(ctx, tui, theme, bridge, restoreFocus)
|
|
|
924
926
|
// settled while the message was being typed or queued.
|
|
925
927
|
deliverSubagentSteer(findView(childId), ctx.agents.get(SessionId(childId)), text),
|
|
926
928
|
onFinish: result => {
|
|
927
|
-
showViewer(childId, result.outcome === 'sent' ?
|
|
929
|
+
showViewer(childId, result.outcome === 'sent' ? t('viewer.steer.sent') : t('viewer.steer.ended'));
|
|
928
930
|
},
|
|
929
931
|
onCancel: () => showViewer(childId),
|
|
930
932
|
requestRender: () => tui.requestRender(),
|