@pentoshi/clai 3.8.20 → 3.8.21
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 +8 -5
- package/dist/agent/context-breakdown.d.ts +37 -0
- package/dist/agent/context-breakdown.js +145 -0
- package/dist/agent/context-breakdown.js.map +1 -0
- package/dist/agent/reliability-policy.d.ts +85 -0
- package/dist/agent/reliability-policy.js +158 -0
- package/dist/agent/reliability-policy.js.map +1 -0
- package/dist/agent/runner.js +235 -136
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/session-state.d.ts +11 -1
- package/dist/agent/session-state.js +22 -15
- package/dist/agent/session-state.js.map +1 -1
- package/dist/agent/task-evidence.js +13 -0
- package/dist/agent/task-evidence.js.map +1 -1
- package/dist/agent/tool-history.d.ts +12 -0
- package/dist/agent/tool-history.js +159 -0
- package/dist/agent/tool-history.js.map +1 -1
- package/dist/agent/tool-output-formatting.d.ts +4 -0
- package/dist/agent/tool-output-formatting.js +13 -4
- package/dist/agent/tool-output-formatting.js.map +1 -1
- package/dist/app/controllers/session-controller.d.ts +6 -0
- package/dist/app/controllers/session-controller.js +21 -1
- package/dist/app/controllers/session-controller.js.map +1 -1
- package/dist/commands/providers.js +57 -26
- package/dist/commands/providers.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/llm/gemini.js +4 -1
- package/dist/llm/gemini.js.map +1 -1
- package/dist/llm/key-rotation.d.ts +52 -0
- package/dist/llm/key-rotation.js +122 -0
- package/dist/llm/key-rotation.js.map +1 -0
- package/dist/llm/provider.d.ts +2 -0
- package/dist/llm/provider.js +8 -0
- package/dist/llm/provider.js.map +1 -1
- package/dist/llm/router.d.ts +15 -2
- package/dist/llm/router.js +318 -125
- package/dist/llm/router.js.map +1 -1
- package/dist/prompts/embedded.js +1 -1
- package/dist/prompts/embedded.js.map +1 -1
- package/dist/prompts/index.d.ts +25 -0
- package/dist/prompts/index.js +55 -7
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/system.agent.md +1 -1
- package/dist/repl/slash-commands.js +14 -8
- package/dist/repl/slash-commands.js.map +1 -1
- package/dist/repl.d.ts +4 -1
- package/dist/repl.js +12 -2
- package/dist/repl.js.map +1 -1
- package/dist/store/config.d.ts +18 -0
- package/dist/store/config.js +9 -0
- package/dist/store/config.js.map +1 -1
- package/dist/store/history.d.ts +8 -0
- package/dist/store/history.js +38 -0
- package/dist/store/history.js.map +1 -1
- package/dist/store/keys.d.ts +55 -0
- package/dist/store/keys.js +226 -21
- package/dist/store/keys.js.map +1 -1
- package/dist/store/logs.js +35 -12
- package/dist/store/logs.js.map +1 -1
- package/dist/store/paths.d.ts +13 -0
- package/dist/store/paths.js +23 -1
- package/dist/store/paths.js.map +1 -1
- package/dist/store/session-workspace.d.ts +79 -0
- package/dist/store/session-workspace.js +199 -0
- package/dist/store/session-workspace.js.map +1 -0
- package/dist/tools/definitions.js +9 -1
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/http.d.ts +8 -0
- package/dist/tools/http.js +86 -2
- package/dist/tools/http.js.map +1 -1
- package/dist/tools/pentest-workflows.js +38 -19
- package/dist/tools/pentest-workflows.js.map +1 -1
- package/dist/tools/registry.js +25 -2
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/shell.d.ts +1 -1
- package/dist/tui/format-keys.js +29 -6
- package/dist/tui/format-keys.js.map +1 -1
- package/dist/tui-v2/app/command-handlers.js +1 -2
- package/dist/tui-v2/app/command-handlers.js.map +1 -1
- package/dist/tui-v2/app/commands/config-commands.d.ts +1 -2
- package/dist/tui-v2/app/commands/config-commands.js +1 -11
- package/dist/tui-v2/app/commands/config-commands.js.map +1 -1
- package/dist/tui-v2/app/commands/key-commands.d.ts +1 -1
- package/dist/tui-v2/app/commands/key-commands.js +148 -63
- package/dist/tui-v2/app/commands/key-commands.js.map +1 -1
- package/dist/tui-v2/app/commands/picker-commands.js +6 -0
- package/dist/tui-v2/app/commands/picker-commands.js.map +1 -1
- package/dist/tui-v2/bootstrap/composition-root.js +8 -5
- package/dist/tui-v2/bootstrap/composition-root.js.map +1 -1
- package/dist/tui-v2/components/modal/keys-modal.d.ts +19 -0
- package/dist/tui-v2/components/modal/keys-modal.js +203 -0
- package/dist/tui-v2/components/modal/keys-modal.js.map +1 -0
- package/dist/tui-v2/components/overlay/overlay-host.js +6 -2
- package/dist/tui-v2/components/overlay/overlay-host.js.map +1 -1
- package/dist/tui-v2/components/pager/pager-line.js +5 -2
- package/dist/tui-v2/components/pager/pager-line.js.map +1 -1
- package/dist/tui-v2/components/pager/pager.js +6 -3
- package/dist/tui-v2/components/pager/pager.js.map +1 -1
- package/dist/tui-v2/components/plan/use-pane-presence.d.ts +6 -4
- package/dist/tui-v2/components/plan/use-pane-presence.js +8 -45
- package/dist/tui-v2/components/plan/use-pane-presence.js.map +1 -1
- package/dist/tui-v2/components/transcript/assistant-message.js +4 -1
- package/dist/tui-v2/components/transcript/assistant-message.js.map +1 -1
- package/dist/tui-v2/components/transcript/compacted-row.js +1 -1
- package/dist/tui-v2/components/transcript/compacted-row.js.map +1 -1
- package/dist/tui-v2/components/transcript/file-diff-card.js +3 -23
- package/dist/tui-v2/components/transcript/file-diff-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/linkable-text.js +9 -2
- package/dist/tui-v2/components/transcript/linkable-text.js.map +1 -1
- package/dist/tui-v2/components/transcript/selectable-line.d.ts +22 -0
- package/dist/tui-v2/components/transcript/selectable-line.js +24 -0
- package/dist/tui-v2/components/transcript/selectable-line.js.map +1 -0
- package/dist/tui-v2/components/transcript/thinking-block.js +3 -1
- package/dist/tui-v2/components/transcript/thinking-block.js.map +1 -1
- package/dist/tui-v2/components/transcript/tool-card.d.ts +5 -3
- package/dist/tui-v2/components/transcript/tool-card.js +39 -33
- package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/use-click-without-drag.js +4 -1
- package/dist/tui-v2/components/transcript/use-click-without-drag.js.map +1 -1
- package/dist/tui-v2/components/transcript/user-message.js +1 -1
- package/dist/tui-v2/components/transcript/user-message.js.map +1 -1
- package/dist/tui-v2/controllers/overlay-controller.d.ts +36 -0
- package/dist/tui-v2/controllers/overlay-controller.js +28 -0
- package/dist/tui-v2/controllers/overlay-controller.js.map +1 -1
- package/dist/tui-v2/rendering/batch-sections.d.ts +15 -4
- package/dist/tui-v2/rendering/batch-sections.js +157 -64
- package/dist/tui-v2/rendering/batch-sections.js.map +1 -1
- package/dist/tui-v2/rendering/format-help.js +1 -1
- package/dist/tui-v2/rendering/format-help.js.map +1 -1
- package/dist/tui-v2/rendering/open-tool-output.js +10 -7
- package/dist/tui-v2/rendering/open-tool-output.js.map +1 -1
- package/dist/tui-v2/rendering/pager-markdown.d.ts +9 -0
- package/dist/tui-v2/rendering/pager-markdown.js +46 -0
- package/dist/tui-v2/rendering/pager-markdown.js.map +1 -1
- package/dist/tui-v2/rendering/pager-view-policy.d.ts +6 -3
- package/dist/tui-v2/rendering/pager-view-policy.js +9 -13
- package/dist/tui-v2/rendering/pager-view-policy.js.map +1 -1
- package/dist/tui-v2/rendering/sanitize-display.js +3 -1
- package/dist/tui-v2/rendering/sanitize-display.js.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/package.json +1 -1
|
@@ -42,6 +42,29 @@ export interface ScopeEditorRequest {
|
|
|
42
42
|
/** Existing authorized targets (pre-fill). */
|
|
43
43
|
readonly initialTargets: readonly string[];
|
|
44
44
|
}
|
|
45
|
+
/** One existing key shown masked in the multi-key editor (/set). */
|
|
46
|
+
export interface KeysEditorSlotView {
|
|
47
|
+
readonly id: string;
|
|
48
|
+
readonly masked: string;
|
|
49
|
+
}
|
|
50
|
+
/** Multi-row API key editor for a single LLM provider. */
|
|
51
|
+
export interface KeysEditorRequest {
|
|
52
|
+
readonly provider: string;
|
|
53
|
+
readonly initialKeys: readonly KeysEditorSlotView[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Save rows: empty `value` + `slotId` keeps the stored secret; non-empty value
|
|
57
|
+
* is a new/replacement plaintext key. Reset clears all keys for the provider.
|
|
58
|
+
*/
|
|
59
|
+
export type KeysEditorAnswer = {
|
|
60
|
+
readonly action: "save";
|
|
61
|
+
readonly rows: readonly {
|
|
62
|
+
slotId?: string;
|
|
63
|
+
value: string;
|
|
64
|
+
}[];
|
|
65
|
+
} | {
|
|
66
|
+
readonly action: "reset";
|
|
67
|
+
};
|
|
45
68
|
export interface PromptActionsRequest {
|
|
46
69
|
readonly prompt: string;
|
|
47
70
|
readonly onResend: () => void;
|
|
@@ -70,6 +93,11 @@ export type OverlayState = {
|
|
|
70
93
|
readonly request: ScopeEditorRequest;
|
|
71
94
|
/** undefined = cancel; [] = clear/disable; non-empty = save targets. */
|
|
72
95
|
readonly resolve: (targets: string[] | undefined) => void;
|
|
96
|
+
} | {
|
|
97
|
+
readonly kind: "keys-editor";
|
|
98
|
+
readonly request: KeysEditorRequest;
|
|
99
|
+
/** undefined = cancel. */
|
|
100
|
+
readonly resolve: (answer: KeysEditorAnswer | undefined) => void;
|
|
73
101
|
} | {
|
|
74
102
|
readonly kind: "prompt-actions";
|
|
75
103
|
readonly request: PromptActionsRequest;
|
|
@@ -126,6 +154,14 @@ export declare class OverlayController {
|
|
|
126
154
|
*/
|
|
127
155
|
openScopeEditor(request: ScopeEditorRequest): Promise<string[] | undefined>;
|
|
128
156
|
answerScope(targets: string[] | undefined): void;
|
|
157
|
+
/**
|
|
158
|
+
* Multi-row API key editor. Resolves:
|
|
159
|
+
* - `undefined` cancel / overlay busy
|
|
160
|
+
* - `{ action: "reset" }` clear all keys
|
|
161
|
+
* - `{ action: "save", rows }` keep/replace/add keys
|
|
162
|
+
*/
|
|
163
|
+
openKeysEditor(request: KeysEditorRequest): Promise<KeysEditorAnswer | undefined>;
|
|
164
|
+
answerKeys(answer: KeysEditorAnswer | undefined): void;
|
|
129
165
|
answerConfirm(ok: boolean): void;
|
|
130
166
|
answerPlanConfirm(result: PlanConfirmResult): void;
|
|
131
167
|
answerSecret(value: string | undefined): void;
|
|
@@ -127,6 +127,26 @@ export class OverlayController {
|
|
|
127
127
|
this.forceClose();
|
|
128
128
|
resolve(targets);
|
|
129
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Multi-row API key editor. Resolves:
|
|
132
|
+
* - `undefined` cancel / overlay busy
|
|
133
|
+
* - `{ action: "reset" }` clear all keys
|
|
134
|
+
* - `{ action: "save", rows }` keep/replace/add keys
|
|
135
|
+
*/
|
|
136
|
+
openKeysEditor(request) {
|
|
137
|
+
return new Promise((resolve) => {
|
|
138
|
+
const opened = this.open({ kind: "keys-editor", request, resolve }, "modal");
|
|
139
|
+
if (!opened)
|
|
140
|
+
resolve(undefined);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
answerKeys(answer) {
|
|
144
|
+
if (this.state.kind !== "keys-editor")
|
|
145
|
+
return;
|
|
146
|
+
const { resolve } = this.state;
|
|
147
|
+
this.forceClose();
|
|
148
|
+
resolve(answer);
|
|
149
|
+
}
|
|
130
150
|
answerConfirm(ok) {
|
|
131
151
|
const confirm = this.activeConfirm();
|
|
132
152
|
if (!confirm)
|
|
@@ -184,6 +204,10 @@ export class OverlayController {
|
|
|
184
204
|
this.answerScope(undefined);
|
|
185
205
|
return true;
|
|
186
206
|
}
|
|
207
|
+
if (this.state.kind === "keys-editor") {
|
|
208
|
+
this.answerKeys(undefined);
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
187
211
|
return false;
|
|
188
212
|
}
|
|
189
213
|
/** The picker's own `onSelect` decides whether/when to close (e.g. a
|
|
@@ -221,6 +245,10 @@ export class OverlayController {
|
|
|
221
245
|
}
|
|
222
246
|
else if (this.state.kind === "secret")
|
|
223
247
|
this.state.resolve(undefined);
|
|
248
|
+
else if (this.state.kind === "scope-editor")
|
|
249
|
+
this.state.resolve(undefined);
|
|
250
|
+
else if (this.state.kind === "keys-editor")
|
|
251
|
+
this.state.resolve(undefined);
|
|
224
252
|
this.suspended = undefined;
|
|
225
253
|
this.forceClose();
|
|
226
254
|
this.listeners.clear();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay-controller.js","sourceRoot":"","sources":["../../../src/tui-v2/controllers/overlay-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"overlay-controller.js","sourceRoot":"","sources":["../../../src/tui-v2/controllers/overlay-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,18 @@
|
|
|
2
2
|
* Parse and present tool.batch output as nested sub-tool sections
|
|
3
3
|
* (classic TUI parity).
|
|
4
4
|
*
|
|
5
|
-
* Batch runners emit labeled sections
|
|
5
|
+
* Batch runners emit labeled sections (streamed as each child finishes, and
|
|
6
|
+
* again as the final body):
|
|
6
7
|
* ── #1 dns.lookup [ok exit=0]
|
|
7
8
|
* …
|
|
8
9
|
* ── #2 web.fetch [fail exit=1]
|
|
9
10
|
* …
|
|
11
|
+
*
|
|
12
|
+
* Live progress also includes `[batch] …` ticks. While the parent is still
|
|
13
|
+
* running we merge settled sections with running placeholders so nested cards
|
|
14
|
+
* appear expanded from the first start — same shape as single tool cards.
|
|
10
15
|
*/
|
|
11
|
-
export type BatchSectionStatus = "ok" | "fail" | "cancelled";
|
|
16
|
+
export type BatchSectionStatus = "ok" | "fail" | "cancelled" | "running";
|
|
12
17
|
export interface BatchSection {
|
|
13
18
|
readonly index: number;
|
|
14
19
|
readonly name: string;
|
|
@@ -21,6 +26,7 @@ export interface BatchSection {
|
|
|
21
26
|
/**
|
|
22
27
|
* Split a completed tool.batch output into per-sub-tool sections.
|
|
23
28
|
* Returns [] when the body is not in the labeled batch format.
|
|
29
|
+
* If the same index appears twice (live re-stream), the last header wins.
|
|
24
30
|
*/
|
|
25
31
|
export declare function parseBatchSections(output: string): BatchSection[];
|
|
26
32
|
export interface BatchSectionPresentation {
|
|
@@ -42,13 +48,18 @@ export interface BatchLiveLine {
|
|
|
42
48
|
readonly tone: "info" | "ok" | "fail" | "running";
|
|
43
49
|
}
|
|
44
50
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
51
|
+
* Parse live `[batch] …` progress ticks (kept for tests / summary).
|
|
52
|
+
* Prefer {@link buildBatchCardsFromSpool} for the live nested-card UI.
|
|
47
53
|
*/
|
|
48
54
|
export declare function parseBatchLiveProgress(raw: string): {
|
|
49
55
|
readonly lines: readonly BatchLiveLine[];
|
|
50
56
|
readonly summary: string;
|
|
51
57
|
};
|
|
58
|
+
/**
|
|
59
|
+
* Merge streamed `── #N` sections with `[batch]` start/running ticks into an
|
|
60
|
+
* ordered list of nested cards for live (and final) batch UI.
|
|
61
|
+
*/
|
|
62
|
+
export declare function buildBatchCardsFromSpool(raw: string): BatchSection[];
|
|
52
63
|
/**
|
|
53
64
|
* Rebuild a single section as a labeled block for the pager (matches
|
|
54
65
|
* runner formatting so the full-batch view stays familiar).
|
|
@@ -2,32 +2,59 @@
|
|
|
2
2
|
* Parse and present tool.batch output as nested sub-tool sections
|
|
3
3
|
* (classic TUI parity).
|
|
4
4
|
*
|
|
5
|
-
* Batch runners emit labeled sections
|
|
5
|
+
* Batch runners emit labeled sections (streamed as each child finishes, and
|
|
6
|
+
* again as the final body):
|
|
6
7
|
* ── #1 dns.lookup [ok exit=0]
|
|
7
8
|
* …
|
|
8
9
|
* ── #2 web.fetch [fail exit=1]
|
|
9
10
|
* …
|
|
11
|
+
*
|
|
12
|
+
* Live progress also includes `[batch] …` ticks. While the parent is still
|
|
13
|
+
* running we merge settled sections with running placeholders so nested cards
|
|
14
|
+
* appear expanded from the first start — same shape as single tool cards.
|
|
10
15
|
*/
|
|
11
16
|
import { cleanToolOutputLines, presentOutput } from "./tool-presenter.js";
|
|
12
|
-
const HEADER_RE = /^──\s+#(\d+)\s+([\w.]+)\s+\[(ok|fail|cancelled)(?:\s+exit=(\d+))?\]/;
|
|
17
|
+
const HEADER_RE = /^──\s+#(\d+)\s+([\w.]+)\s+\[(ok|fail|cancelled|running)(?:\s+exit=(\d+))?\]/;
|
|
18
|
+
/** Progress ticks are never part of a sub-tool body. */
|
|
19
|
+
function isBatchProgressLine(line) {
|
|
20
|
+
return /^\[batch\]/i.test(line.trim());
|
|
21
|
+
}
|
|
13
22
|
/**
|
|
14
23
|
* Split a completed tool.batch output into per-sub-tool sections.
|
|
15
24
|
* Returns [] when the body is not in the labeled batch format.
|
|
25
|
+
* If the same index appears twice (live re-stream), the last header wins.
|
|
16
26
|
*/
|
|
17
27
|
export function parseBatchSections(output) {
|
|
18
|
-
const
|
|
28
|
+
const ordered = [];
|
|
29
|
+
const byIndex = new Map(); // index → position in ordered
|
|
19
30
|
let current = null;
|
|
20
31
|
const bodyLines = [];
|
|
32
|
+
const flush = () => {
|
|
33
|
+
if (current === null)
|
|
34
|
+
return;
|
|
35
|
+
const section = {
|
|
36
|
+
...current,
|
|
37
|
+
body: bodyLines.join("\n").trim(),
|
|
38
|
+
};
|
|
39
|
+
bodyLines.length = 0;
|
|
40
|
+
const prev = byIndex.get(section.index);
|
|
41
|
+
if (prev !== undefined) {
|
|
42
|
+
ordered[prev] = section;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
byIndex.set(section.index, ordered.length);
|
|
46
|
+
ordered.push(section);
|
|
47
|
+
}
|
|
48
|
+
current = null;
|
|
49
|
+
};
|
|
21
50
|
for (const line of output.replace(/\r/g, "").split("\n")) {
|
|
51
|
+
if (isBatchProgressLine(line)) {
|
|
52
|
+
// Progress ticks never belong in a section body.
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
22
55
|
const m = HEADER_RE.exec(line);
|
|
23
56
|
if (m) {
|
|
24
|
-
|
|
25
|
-
sections.push({
|
|
26
|
-
...current,
|
|
27
|
-
body: bodyLines.join("\n").trim(),
|
|
28
|
-
});
|
|
29
|
-
bodyLines.length = 0;
|
|
30
|
-
}
|
|
57
|
+
flush();
|
|
31
58
|
const exitCode = m[4] !== undefined ? parseInt(m[4], 10) : undefined;
|
|
32
59
|
const status = m[3];
|
|
33
60
|
current = {
|
|
@@ -42,23 +69,26 @@ export function parseBatchSections(output) {
|
|
|
42
69
|
bodyLines.push(line);
|
|
43
70
|
}
|
|
44
71
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
return sections;
|
|
72
|
+
flush();
|
|
73
|
+
// Drop pure running placeholders from final parse when a settled sibling
|
|
74
|
+
// replaced them — callers that need live stubs use buildBatchCardsFromSpool.
|
|
75
|
+
return ordered.filter((s) => s.status !== "running" || s.body.length > 0);
|
|
52
76
|
}
|
|
53
77
|
/** Present one nested sub-tool for the card (collapsed head/tail or full). */
|
|
54
78
|
export function presentBatchSection(section, expanded) {
|
|
55
|
-
const presented = presentOutput(section.body, undefined, expanded);
|
|
56
|
-
// Prefer cleaned body even when presentOutput samples ends for huge text.
|
|
57
|
-
const hasBody = section.body.trim().length > 0;
|
|
58
79
|
const status = section.status ?? (section.ok ? "ok" : "fail");
|
|
80
|
+
const bodyForPresent = status === "running" && !section.body.trim()
|
|
81
|
+
? "running…"
|
|
82
|
+
: section.body;
|
|
83
|
+
const presented = presentOutput(bodyForPresent, undefined, expanded);
|
|
84
|
+
const hasBody = bodyForPresent.trim().length > 0;
|
|
59
85
|
let glyph = "✗";
|
|
60
86
|
let statusLabel = "failed";
|
|
61
|
-
if (status === "
|
|
87
|
+
if (status === "running") {
|
|
88
|
+
glyph = "●";
|
|
89
|
+
statusLabel = "running";
|
|
90
|
+
}
|
|
91
|
+
else if (status === "ok") {
|
|
62
92
|
glyph = "✓";
|
|
63
93
|
statusLabel =
|
|
64
94
|
section.exitCode !== undefined
|
|
@@ -88,8 +118,13 @@ export function presentBatchSection(section, expanded) {
|
|
|
88
118
|
export function batchSummaryLine(sections) {
|
|
89
119
|
if (sections.length === 0)
|
|
90
120
|
return "";
|
|
121
|
+
const running = sections.filter((s) => s.status === "running").length;
|
|
91
122
|
const failed = sections.filter((s) => (s.status ?? (s.ok ? "ok" : "fail")) === "fail").length;
|
|
92
123
|
const cancelled = sections.filter((s) => (s.status ?? (s.ok ? "ok" : "fail")) === "cancelled").length;
|
|
124
|
+
const ok = sections.filter((s) => (s.status ?? (s.ok ? "ok" : "fail")) === "ok").length;
|
|
125
|
+
if (running > 0) {
|
|
126
|
+
return `${ok} done · ${running} running · ${sections.length} total`;
|
|
127
|
+
}
|
|
93
128
|
if (failed === 0 && cancelled === 0) {
|
|
94
129
|
return `${sections.length} sub-tool(s) — all ok`;
|
|
95
130
|
}
|
|
@@ -105,73 +140,131 @@ export function isBatchToolName(name) {
|
|
|
105
140
|
return name === "tool.batch";
|
|
106
141
|
}
|
|
107
142
|
/**
|
|
108
|
-
*
|
|
109
|
-
*
|
|
143
|
+
* Parse live `[batch] …` progress ticks (kept for tests / summary).
|
|
144
|
+
* Prefer {@link buildBatchCardsFromSpool} for the live nested-card UI.
|
|
110
145
|
*/
|
|
111
146
|
export function parseBatchLiveProgress(raw) {
|
|
147
|
+
const cards = buildBatchCardsFromSpool(raw);
|
|
148
|
+
if (cards.length === 0) {
|
|
149
|
+
const ticks = raw
|
|
150
|
+
.replace(/\r/g, "")
|
|
151
|
+
.split("\n")
|
|
152
|
+
.map((l) => l.trim())
|
|
153
|
+
.filter((l) => /^\[batch\]/i.test(l));
|
|
154
|
+
const header = ticks.find((t) => /starting\b/i.test(t));
|
|
155
|
+
return {
|
|
156
|
+
lines: header
|
|
157
|
+
? [{ text: header.replace(/^\[batch\]\s*/i, ""), tone: "info" }]
|
|
158
|
+
: [],
|
|
159
|
+
summary: header
|
|
160
|
+
? header.replace(/^\[batch\]\s*/i, "")
|
|
161
|
+
: ticks.length
|
|
162
|
+
? "batch running…"
|
|
163
|
+
: "",
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
const lines = cards.map((c) => ({
|
|
167
|
+
text: `#${c.index} ${c.name} · ${c.status}`,
|
|
168
|
+
tone: c.status === "ok"
|
|
169
|
+
? "ok"
|
|
170
|
+
: c.status === "running"
|
|
171
|
+
? "running"
|
|
172
|
+
: c.status === "fail"
|
|
173
|
+
? "fail"
|
|
174
|
+
: "info",
|
|
175
|
+
}));
|
|
176
|
+
return { lines, summary: batchSummaryLine(cards) };
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Merge streamed `── #N` sections with `[batch]` start/running ticks into an
|
|
180
|
+
* ordered list of nested cards for live (and final) batch UI.
|
|
181
|
+
*/
|
|
182
|
+
export function buildBatchCardsFromSpool(raw) {
|
|
183
|
+
const settled = parseBatchSections(raw);
|
|
184
|
+
const byIndex = new Map();
|
|
185
|
+
for (const s of settled) {
|
|
186
|
+
// Prefer settled over running if both exist.
|
|
187
|
+
if (s.status !== "running" || !byIndex.has(s.index)) {
|
|
188
|
+
byIndex.set(s.index, s);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
112
191
|
const ticks = raw
|
|
113
192
|
.replace(/\r/g, "")
|
|
114
193
|
.split("\n")
|
|
115
194
|
.map((l) => l.trim())
|
|
116
195
|
.filter((l) => /^\[batch\]/i.test(l));
|
|
117
|
-
|
|
118
|
-
return { lines: [], summary: "" };
|
|
119
|
-
}
|
|
120
|
-
// Prefer the latest status per call index so the card stays short.
|
|
121
|
-
const byKey = new Map();
|
|
122
|
-
let header;
|
|
123
|
-
let progress;
|
|
196
|
+
const tickState = new Map();
|
|
124
197
|
for (const tick of ticks) {
|
|
125
198
|
const body = tick.replace(/^\[batch\]\s*/i, "");
|
|
126
199
|
const start = /^#(\d+)\s+([\w.]+)\s+starting/i.exec(body);
|
|
127
|
-
const done = /^#(\d+)\s+([\w.]+)\s+(ok|fail|cancelled)
|
|
200
|
+
const done = /^#(\d+)\s+([\w.]+)\s+(ok|fail|cancelled)(?:\s+exit=(\d+))?/i.exec(body);
|
|
128
201
|
const running = /^#(\d+)\s+([\w.]+)\s+still running/i.exec(body);
|
|
129
|
-
const
|
|
202
|
+
const err = /^#(\d+)\s+([\w.]+)\s+error:/i.exec(body);
|
|
130
203
|
if (start) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
204
|
+
const idx = parseInt(start[1], 10);
|
|
205
|
+
const prev = tickState.get(idx);
|
|
206
|
+
if (!prev || prev.status === "running") {
|
|
207
|
+
tickState.set(idx, {
|
|
208
|
+
name: start[2],
|
|
209
|
+
status: "running",
|
|
210
|
+
exitCode: undefined,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
135
213
|
}
|
|
136
214
|
else if (done) {
|
|
215
|
+
const idx = parseInt(done[1], 10);
|
|
137
216
|
const st = done[3].toLowerCase();
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
217
|
+
const exit = done[4] !== undefined ? parseInt(done[4], 10) : undefined;
|
|
218
|
+
tickState.set(idx, {
|
|
219
|
+
name: done[2],
|
|
220
|
+
status: st,
|
|
221
|
+
exitCode: Number.isFinite(exit) ? exit : undefined,
|
|
142
222
|
});
|
|
143
223
|
}
|
|
144
224
|
else if (running) {
|
|
145
|
-
|
|
146
|
-
const prev =
|
|
147
|
-
if (!prev || prev.
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
225
|
+
const idx = parseInt(running[1], 10);
|
|
226
|
+
const prev = tickState.get(idx);
|
|
227
|
+
if (!prev || prev.status === "running") {
|
|
228
|
+
tickState.set(idx, {
|
|
229
|
+
name: running[2],
|
|
230
|
+
status: "running",
|
|
231
|
+
exitCode: undefined,
|
|
151
232
|
});
|
|
152
233
|
}
|
|
153
234
|
}
|
|
154
|
-
else if (
|
|
155
|
-
|
|
235
|
+
else if (err) {
|
|
236
|
+
const idx = parseInt(err[1], 10);
|
|
237
|
+
tickState.set(idx, {
|
|
238
|
+
name: err[2],
|
|
239
|
+
status: "fail",
|
|
240
|
+
exitCode: undefined,
|
|
241
|
+
});
|
|
156
242
|
}
|
|
157
|
-
|
|
158
|
-
|
|
243
|
+
}
|
|
244
|
+
// Fill running (or tick-only settled) stubs for indices not yet sectioned.
|
|
245
|
+
for (const [idx, st] of tickState) {
|
|
246
|
+
const existing = byIndex.get(idx);
|
|
247
|
+
if (existing && existing.status !== "running")
|
|
248
|
+
continue;
|
|
249
|
+
if (existing && st.status === "running")
|
|
250
|
+
continue;
|
|
251
|
+
// Prefer full section body when we already have one.
|
|
252
|
+
if (existing && existing.body.trim().length > 0 && st.status !== "running") {
|
|
253
|
+
// Section may lack exit; prefer section.
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
if (st.status === "running" || !existing) {
|
|
257
|
+
byIndex.set(idx, {
|
|
258
|
+
index: idx,
|
|
259
|
+
name: st.name,
|
|
260
|
+
status: st.status === "running" ? "running" : st.status,
|
|
261
|
+
ok: st.status === "ok",
|
|
262
|
+
exitCode: st.exitCode,
|
|
263
|
+
body: existing?.body ?? "",
|
|
264
|
+
});
|
|
159
265
|
}
|
|
160
266
|
}
|
|
161
|
-
|
|
162
|
-
if (header)
|
|
163
|
-
lines.push(header);
|
|
164
|
-
const ordered = [...byKey.entries()].sort((a, b) => Number(a[0]) - Number(b[0]));
|
|
165
|
-
for (const [, line] of ordered)
|
|
166
|
-
lines.push(line);
|
|
167
|
-
if (progress)
|
|
168
|
-
lines.push(progress);
|
|
169
|
-
const runningN = ordered.filter(([, l]) => l.tone === "running").length;
|
|
170
|
-
const doneN = ordered.filter(([, l]) => l.tone !== "running").length;
|
|
171
|
-
const summary = ordered.length > 0
|
|
172
|
-
? `${doneN} settled · ${runningN} running · ${ordered.length} total`
|
|
173
|
-
: header?.text ?? "batch running…";
|
|
174
|
-
return { lines, summary };
|
|
267
|
+
return [...byIndex.values()].sort((a, b) => a.index - b.index);
|
|
175
268
|
}
|
|
176
269
|
/**
|
|
177
270
|
* Rebuild a single section as a labeled block for the pager (matches
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-sections.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/batch-sections.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"batch-sections.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/batch-sections.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ function sectionFor(command) {
|
|
|
18
18
|
if (["set", "unset", "keys", "info"].includes(name)) {
|
|
19
19
|
return "Credentials";
|
|
20
20
|
}
|
|
21
|
-
if (["permissions", "allow", "disallow", "freeonly", "fallback", "
|
|
21
|
+
if (["permissions", "allow", "disallow", "freeonly", "fallback", "scope", "privacy"].includes(name)) {
|
|
22
22
|
return "Permissions & safety";
|
|
23
23
|
}
|
|
24
24
|
if (["history", "clear", "new", "clean", "save", "reset", "compact", "context", "think", "thinking", "output", "cwd"].includes(name)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-help.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/format-help.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IACE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,QAAQ,CACzF,IAAI,CACL,EACD,CAAC;QACD,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IACE,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"format-help.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/format-help.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { createArtifactPagerSource } from "./artifact-pager-source.js";
|
|
|
10
10
|
import { asToolCallId } from "../../app/events/app-event.js";
|
|
11
11
|
import { formatModalPlainText } from "./file-diff-view.js";
|
|
12
12
|
import { defaultPagerMarkdownMode } from "./pager-view-policy.js";
|
|
13
|
-
import { stripPagerLineGutters } from "./pager-markdown.js";
|
|
13
|
+
import { extractFsReadFileBody, stripPagerLineGutters } from "./pager-markdown.js";
|
|
14
14
|
/**
|
|
15
15
|
* Prefer a human-readable hit list for web.search-style payloads.
|
|
16
16
|
* Falls back to pretty JSON, then the raw text.
|
|
@@ -187,8 +187,8 @@ export async function openToolOutputPager(services, item, options = {}) {
|
|
|
187
187
|
path: fileChange.path,
|
|
188
188
|
body: fileChange.afterText,
|
|
189
189
|
});
|
|
190
|
-
//
|
|
191
|
-
//
|
|
190
|
+
// Always open the guttered green/red editor body by default.
|
|
191
|
+
// (mdMode is plain for file mutations; `f` still formats if the user wants.)
|
|
192
192
|
const body = mdMode === "force"
|
|
193
193
|
? stripPagerLineGutters(guttered) ||
|
|
194
194
|
fileChange.afterText ||
|
|
@@ -196,7 +196,7 @@ export async function openToolOutputPager(services, item, options = {}) {
|
|
|
196
196
|
"(empty file)"
|
|
197
197
|
: guttered || "(empty file)";
|
|
198
198
|
const opened = services.overlay.openPager(title, body, undefined,
|
|
199
|
-
//
|
|
199
|
+
// Keep path for raw syntax highlighting of the green editor view.
|
|
200
200
|
mdMode === "force" ? undefined : fileChange.path, mdMode);
|
|
201
201
|
if (!opened) {
|
|
202
202
|
services.session.notice("warn", "could not open output pager (another overlay is open)");
|
|
@@ -327,9 +327,12 @@ export async function openToolOutputPager(services, item, options = {}) {
|
|
|
327
327
|
path: highlightPath ?? pathFromArgsDisplay(item.argsDisplay),
|
|
328
328
|
body: body,
|
|
329
329
|
});
|
|
330
|
-
// Formatted md reads:
|
|
331
|
-
|
|
332
|
-
|
|
330
|
+
// Formatted md reads: pure file markdown (no `N: ` gutters / # fs.read chrome).
|
|
331
|
+
// Prefer on-disk file when available; otherwise strip the spool dump.
|
|
332
|
+
const finalBody = mdMode === "force"
|
|
333
|
+
? openedSourceFile
|
|
334
|
+
? body || "(no output)"
|
|
335
|
+
: extractFsReadFileBody(body) || body || "(no output)"
|
|
333
336
|
: pagerBody;
|
|
334
337
|
const opened = services.overlay.openPager(title, finalBody, artifactSource, mdMode === "force" ? undefined : highlightPath, mdMode);
|
|
335
338
|
if (!opened) {
|