langchain_agentx_stream_ui 0.2.7 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AskUserQuestionToolBody-BG1StdvE.d.ts → AskUserQuestionToolBody-CUXqUkar.d.ts} +1 -1
- package/dist/{chunk-SUEMZC4U.js → chunk-6ORA5RMV.js} +49 -194
- package/dist/chunk-6ORA5RMV.js.map +1 -0
- package/dist/{chunk-DP7V33X7.js → chunk-6Z4ZF36Z.js} +1 -1
- package/dist/chunk-6Z4ZF36Z.js.map +1 -0
- package/dist/{chunk-7CLAU74Y.js → chunk-FL2G7SV3.js} +378 -98
- package/dist/chunk-FL2G7SV3.js.map +1 -0
- package/dist/{chunk-4RIOBLGB.js → chunk-GBY5DJ7L.js} +1 -1
- package/dist/chunk-GBY5DJ7L.js.map +1 -0
- package/dist/{chunk-CUKNUCGU.js → chunk-ISQ7JWGD.js} +5 -5
- package/dist/chunk-ISQ7JWGD.js.map +1 -0
- package/dist/{chunk-6DYISADG.js → chunk-TCKOXX7O.js} +6 -33
- package/dist/chunk-TCKOXX7O.js.map +1 -0
- package/dist/index.d.ts +284 -63
- package/dist/index.js +704 -179
- package/dist/index.js.map +1 -1
- package/dist/{multi-session-xvSZstSN.d.ts → multi-session-CerO558Y.d.ts} +3 -1
- package/dist/multi-session.d.ts +2 -2
- package/dist/multi-session.js +6 -6
- package/dist/{sessionViewOptions-WM00Fpcn.d.ts → sessionViewOptions-DQRzPuN_.d.ts} +2 -0
- package/dist/tools-presentation.js +2 -2
- package/dist/tools.d.ts +3 -3
- package/dist/tools.js +4 -4
- package/dist/virtual.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-4RIOBLGB.js.map +0 -1
- package/dist/chunk-6DYISADG.js.map +0 -1
- package/dist/chunk-7CLAU74Y.js.map +0 -1
- package/dist/chunk-CUKNUCGU.js.map +0 -1
- package/dist/chunk-DP7V33X7.js.map +0 -1
- package/dist/chunk-SUEMZC4U.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/view/tools/presentation/textHelpers.ts"],"sourcesContent":["/**\r\n * textHelpers.ts — 标题预览截断\r\n *\r\n * 对齐参考:CLI widgets/tools/helpers.py truncate_preview\r\n */\r\nexport function truncatePreview(text: string, maxChars = 120): string {\r\n const line = (text || '').trim().split('\\n', 1)[0] ?? '';\r\n if (line.length > maxChars) {\r\n return `${line.slice(0, maxChars - 1)}…`;\r\n }\r\n return line;\r\n}\r\n"],"mappings":";AAKO,SAAS,gBAAgB,MAAc,WAAW,KAAa;AACpE,QAAM,QAAQ,QAAQ,IAAI,KAAK,EAAE,MAAM,MAAM,CAAC,EAAE,CAAC,KAAK;AACtD,MAAI,KAAK,SAAS,UAAU;AAC1B,WAAO,GAAG,KAAK,MAAM,GAAG,WAAW,CAAC,CAAC;AAAA,EACvC;AACA,SAAO;AACT;","names":[]}
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
resolveEditDiffText,
|
|
14
14
|
truncateCommand,
|
|
15
15
|
truncateLines
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-GBY5DJ7L.js";
|
|
17
17
|
|
|
18
18
|
// src/view/tools/toolNames.ts
|
|
19
19
|
var Read = "Read";
|
|
@@ -45,6 +45,252 @@ var INTERNAL_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
|
45
45
|
TaskStop
|
|
46
46
|
]);
|
|
47
47
|
|
|
48
|
+
// src/core/projection/exploreSummary.ts
|
|
49
|
+
function memoryReadTotal(counts) {
|
|
50
|
+
if (counts.memoryReadCount === 0 && counts.relevantRecallCount > 0) {
|
|
51
|
+
return counts.relevantRecallCount;
|
|
52
|
+
}
|
|
53
|
+
return counts.memoryReadCount;
|
|
54
|
+
}
|
|
55
|
+
function tenseVerb(options) {
|
|
56
|
+
if (options.active) {
|
|
57
|
+
return options.isFirst ? options.presentCap : options.presentLower;
|
|
58
|
+
}
|
|
59
|
+
return options.isFirst ? options.pastCap : options.pastLower;
|
|
60
|
+
}
|
|
61
|
+
function exploreSummaryParts(counts, active, continuingSentence = false) {
|
|
62
|
+
const parts = [];
|
|
63
|
+
let isFirst = !continuingSentence;
|
|
64
|
+
const memRead = memoryReadTotal(counts);
|
|
65
|
+
if (memRead > 0) {
|
|
66
|
+
parts.push({
|
|
67
|
+
verb: tenseVerb({
|
|
68
|
+
active,
|
|
69
|
+
isFirst,
|
|
70
|
+
presentCap: "Recalling",
|
|
71
|
+
presentLower: "recalling",
|
|
72
|
+
pastCap: "Recalled",
|
|
73
|
+
pastLower: "recalled"
|
|
74
|
+
}),
|
|
75
|
+
count: memRead,
|
|
76
|
+
suffix: memRead === 1 ? "memory" : "memories"
|
|
77
|
+
});
|
|
78
|
+
isFirst = false;
|
|
79
|
+
}
|
|
80
|
+
if (counts.memorySearchCount > 0) {
|
|
81
|
+
parts.push({
|
|
82
|
+
verb: tenseVerb({
|
|
83
|
+
active,
|
|
84
|
+
isFirst,
|
|
85
|
+
presentCap: "Searching",
|
|
86
|
+
presentLower: "searching",
|
|
87
|
+
pastCap: "Searched",
|
|
88
|
+
pastLower: "searched"
|
|
89
|
+
}),
|
|
90
|
+
count: null,
|
|
91
|
+
suffix: "memories"
|
|
92
|
+
});
|
|
93
|
+
isFirst = false;
|
|
94
|
+
}
|
|
95
|
+
if (counts.memoryWriteCount > 0) {
|
|
96
|
+
parts.push({
|
|
97
|
+
verb: tenseVerb({
|
|
98
|
+
active,
|
|
99
|
+
isFirst,
|
|
100
|
+
presentCap: "Writing",
|
|
101
|
+
presentLower: "writing",
|
|
102
|
+
pastCap: "Wrote",
|
|
103
|
+
pastLower: "wrote"
|
|
104
|
+
}),
|
|
105
|
+
count: counts.memoryWriteCount,
|
|
106
|
+
suffix: counts.memoryWriteCount === 1 ? "memory" : "memories"
|
|
107
|
+
});
|
|
108
|
+
isFirst = false;
|
|
109
|
+
}
|
|
110
|
+
if (counts.searchCount > 0) {
|
|
111
|
+
parts.push({
|
|
112
|
+
verb: tenseVerb({
|
|
113
|
+
active,
|
|
114
|
+
isFirst,
|
|
115
|
+
presentCap: "Searching for",
|
|
116
|
+
presentLower: "searching for",
|
|
117
|
+
pastCap: "Searched for",
|
|
118
|
+
pastLower: "searched for"
|
|
119
|
+
}),
|
|
120
|
+
count: counts.searchCount,
|
|
121
|
+
suffix: counts.searchCount === 1 ? "pattern" : "patterns"
|
|
122
|
+
});
|
|
123
|
+
isFirst = false;
|
|
124
|
+
}
|
|
125
|
+
if (counts.readCount > 0) {
|
|
126
|
+
parts.push({
|
|
127
|
+
verb: tenseVerb({
|
|
128
|
+
active,
|
|
129
|
+
isFirst,
|
|
130
|
+
presentCap: "Reading",
|
|
131
|
+
presentLower: "reading",
|
|
132
|
+
pastCap: "Read",
|
|
133
|
+
pastLower: "read"
|
|
134
|
+
}),
|
|
135
|
+
count: counts.readCount,
|
|
136
|
+
suffix: counts.readCount === 1 ? "file" : "files"
|
|
137
|
+
});
|
|
138
|
+
isFirst = false;
|
|
139
|
+
}
|
|
140
|
+
if (counts.listCount > 0) {
|
|
141
|
+
parts.push({
|
|
142
|
+
verb: tenseVerb({
|
|
143
|
+
active,
|
|
144
|
+
isFirst,
|
|
145
|
+
presentCap: "Listing",
|
|
146
|
+
presentLower: "listing",
|
|
147
|
+
pastCap: "Listed",
|
|
148
|
+
pastLower: "listed"
|
|
149
|
+
}),
|
|
150
|
+
count: counts.listCount,
|
|
151
|
+
suffix: counts.listCount === 1 ? "directory" : "directories"
|
|
152
|
+
});
|
|
153
|
+
isFirst = false;
|
|
154
|
+
}
|
|
155
|
+
if (counts.bashCount > 0) {
|
|
156
|
+
parts.push({
|
|
157
|
+
verb: tenseVerb({
|
|
158
|
+
active,
|
|
159
|
+
isFirst,
|
|
160
|
+
presentCap: "Running",
|
|
161
|
+
presentLower: "running",
|
|
162
|
+
pastCap: "Ran",
|
|
163
|
+
pastLower: "ran"
|
|
164
|
+
}),
|
|
165
|
+
count: counts.bashCount,
|
|
166
|
+
suffix: counts.bashCount === 1 ? "bash command" : "bash commands"
|
|
167
|
+
});
|
|
168
|
+
isFirst = false;
|
|
169
|
+
}
|
|
170
|
+
if (counts.gitOpBashCount > 0) {
|
|
171
|
+
parts.push({
|
|
172
|
+
verb: tenseVerb({
|
|
173
|
+
active,
|
|
174
|
+
isFirst,
|
|
175
|
+
presentCap: "Running",
|
|
176
|
+
presentLower: "running",
|
|
177
|
+
pastCap: "Ran",
|
|
178
|
+
pastLower: "ran"
|
|
179
|
+
}),
|
|
180
|
+
count: counts.gitOpBashCount,
|
|
181
|
+
suffix: counts.gitOpBashCount === 1 ? "git command" : "git commands"
|
|
182
|
+
});
|
|
183
|
+
isFirst = false;
|
|
184
|
+
}
|
|
185
|
+
if (counts.mcpCallCount > 0) {
|
|
186
|
+
parts.push({
|
|
187
|
+
verb: tenseVerb({
|
|
188
|
+
active,
|
|
189
|
+
isFirst,
|
|
190
|
+
presentCap: "Querying",
|
|
191
|
+
presentLower: "querying",
|
|
192
|
+
pastCap: "Queried",
|
|
193
|
+
pastLower: "queried"
|
|
194
|
+
}),
|
|
195
|
+
count: counts.mcpCallCount,
|
|
196
|
+
suffix: counts.mcpCallCount === 1 ? "MCP tool" : "MCP tools"
|
|
197
|
+
});
|
|
198
|
+
isFirst = false;
|
|
199
|
+
}
|
|
200
|
+
return parts;
|
|
201
|
+
}
|
|
202
|
+
function partPlainText(part) {
|
|
203
|
+
if (part.count !== null) {
|
|
204
|
+
return `${part.verb} ${part.count} ${part.suffix}`.trim();
|
|
205
|
+
}
|
|
206
|
+
return `${part.verb} ${part.suffix}`.trim();
|
|
207
|
+
}
|
|
208
|
+
function formatExploreSummaryText(counts, options = { active: false }) {
|
|
209
|
+
const parts = exploreSummaryParts(
|
|
210
|
+
counts,
|
|
211
|
+
options.active,
|
|
212
|
+
options.continuingSentence ?? false
|
|
213
|
+
);
|
|
214
|
+
if (parts.length === 0) return null;
|
|
215
|
+
const joiner = options.joiner ?? ", ";
|
|
216
|
+
let text = parts.map(partPlainText).join(joiner);
|
|
217
|
+
if (options.active) {
|
|
218
|
+
text = `${text}\u2026`;
|
|
219
|
+
}
|
|
220
|
+
if (options.prefix) {
|
|
221
|
+
text = options.prefix + text;
|
|
222
|
+
}
|
|
223
|
+
return text;
|
|
224
|
+
}
|
|
225
|
+
function formatThoughtDurationPrefix(seconds) {
|
|
226
|
+
const rounded = Math.max(1, Math.round(seconds));
|
|
227
|
+
return `Thought for ${rounded}s, `;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// src/view/tools/displayRecord.ts
|
|
231
|
+
function asDisplayRecord(display) {
|
|
232
|
+
if (display != null && typeof display === "object" && !Array.isArray(display)) {
|
|
233
|
+
return display;
|
|
234
|
+
}
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
function asInputRecord(input) {
|
|
238
|
+
if (input != null && typeof input === "object" && !Array.isArray(input)) {
|
|
239
|
+
return input;
|
|
240
|
+
}
|
|
241
|
+
return {};
|
|
242
|
+
}
|
|
243
|
+
function strField(record, key) {
|
|
244
|
+
const value = record[key];
|
|
245
|
+
return value == null ? "" : String(value).trim();
|
|
246
|
+
}
|
|
247
|
+
function numField(record, key) {
|
|
248
|
+
const value = record[key];
|
|
249
|
+
if (typeof value === "number" && Number.isFinite(value)) return value;
|
|
250
|
+
if (typeof value === "string" && value.trim() !== "") {
|
|
251
|
+
const n = Number(value);
|
|
252
|
+
if (Number.isFinite(n)) return n;
|
|
253
|
+
}
|
|
254
|
+
return void 0;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// src/view/tools/edit/formatEditTitle.ts
|
|
258
|
+
function editAction(input) {
|
|
259
|
+
const inp = asInputRecord(input);
|
|
260
|
+
if (Array.isArray(inp.edits) && inp.edits.length > 0) return "Update";
|
|
261
|
+
if ("old_string" in inp && inp.old_string === "") return "Create";
|
|
262
|
+
return "Update";
|
|
263
|
+
}
|
|
264
|
+
function formatEditTitle(input, display, _summary) {
|
|
265
|
+
const inp = asInputRecord(input);
|
|
266
|
+
const d = display != null && typeof display === "object" && !Array.isArray(display) ? display : null;
|
|
267
|
+
const path = displayPath(
|
|
268
|
+
strField(d ?? {}, "file_path") || strField(inp, "file_path")
|
|
269
|
+
);
|
|
270
|
+
const action = editAction(inp);
|
|
271
|
+
if (!path) return action;
|
|
272
|
+
return `${action}(${path})`;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// src/view/tools/write/formatWriteTitle.ts
|
|
276
|
+
function formatWriteTitle(input, display, _summary) {
|
|
277
|
+
const inp = asInputRecord(input);
|
|
278
|
+
const d = asDisplayRecord(display);
|
|
279
|
+
const path = displayPath(
|
|
280
|
+
strField(d ?? {}, "file_path") || strField(inp, "file_path")
|
|
281
|
+
);
|
|
282
|
+
if (!path) return "Write";
|
|
283
|
+
return `Write(${path})`;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
// src/view/tools/presentation/planPaths.ts
|
|
287
|
+
var PLAN_PATH_MARKERS = ["/.claude/plans/", ".claude/plans/"];
|
|
288
|
+
function isPlanFilePath(filePath) {
|
|
289
|
+
const normalized = displayPath(filePath.trim());
|
|
290
|
+
if (!normalized) return false;
|
|
291
|
+
return PLAN_PATH_MARKERS.some((marker) => normalized.includes(marker));
|
|
292
|
+
}
|
|
293
|
+
|
|
48
294
|
// src/view/tools/presentation/agentProgressRenderer.ts
|
|
49
295
|
var AGENT_PROGRESS_GUTTER = " \u23BF ";
|
|
50
296
|
var AGENT_PROGRESS_INDENT = " ";
|
|
@@ -55,7 +301,6 @@ function truncatePreview(text, maxChars = 80) {
|
|
|
55
301
|
}
|
|
56
302
|
var READ_TOOLS = /* @__PURE__ */ new Set(["Read"]);
|
|
57
303
|
var SEARCH_TOOLS = /* @__PURE__ */ new Set(["Glob", "Grep", "SemanticSearch", "Search"]);
|
|
58
|
-
var BASH_TOOLS = /* @__PURE__ */ new Set(["Bash"]);
|
|
59
304
|
function toolInputRecord(input) {
|
|
60
305
|
if (input != null && typeof input === "object" && !Array.isArray(input)) {
|
|
61
306
|
return input;
|
|
@@ -82,6 +327,18 @@ function formatSubagentToolProgressLine(toolName, options = {}) {
|
|
|
82
327
|
if (pattern) return `${name}(${truncatePreview(pattern, 60)})`;
|
|
83
328
|
if (path) return `${name}(${truncatePreview(path, 60)})`;
|
|
84
329
|
}
|
|
330
|
+
if (name === "Write") {
|
|
331
|
+
const path = String(inp.file_path ?? inp.path ?? "").trim();
|
|
332
|
+
if (path && isPlanFilePath(path)) return "Updated plan";
|
|
333
|
+
const title = formatWriteTitle(inp, null);
|
|
334
|
+
if (title !== "Write") return title;
|
|
335
|
+
}
|
|
336
|
+
if (name === "Edit") {
|
|
337
|
+
const path = String(inp.file_path ?? inp.path ?? "").trim();
|
|
338
|
+
if (path && isPlanFilePath(path)) return "Updated plan";
|
|
339
|
+
const title = formatEditTitle(inp, null);
|
|
340
|
+
if (title !== "Edit") return title;
|
|
341
|
+
}
|
|
85
342
|
const summary = (options.summary ?? "").trim();
|
|
86
343
|
const callingLower = `calling ${name.toLowerCase()}`;
|
|
87
344
|
if (summary && summary.toLowerCase() !== callingLower) {
|
|
@@ -132,82 +389,116 @@ function coerceSubagentProgressEntries(raw) {
|
|
|
132
389
|
}
|
|
133
390
|
return entries.sort((a, b) => a.step - b.step || a.toolName.localeCompare(b.toolName));
|
|
134
391
|
}
|
|
392
|
+
function formatGroupedProgressStatus(entry) {
|
|
393
|
+
const paren = formatSubagentProgressLine(entry);
|
|
394
|
+
const m = /^(Write|Update|Create)\((.+)\)$/.exec(paren);
|
|
395
|
+
if (m) return `${m[1]}: ${m[2]}`;
|
|
396
|
+
return paren;
|
|
397
|
+
}
|
|
135
398
|
function extractLastToolInfoFromProgress(progress) {
|
|
136
399
|
if (!Array.isArray(progress) || progress.length === 0) return null;
|
|
137
400
|
for (let index = progress.length - 1; index >= 0; index -= 1) {
|
|
138
401
|
const entry = progress[index];
|
|
139
402
|
if (!isSubagentProgressEntry(entry)) continue;
|
|
140
|
-
const line =
|
|
403
|
+
const line = formatGroupedProgressStatus(entry);
|
|
141
404
|
if (line) return line;
|
|
142
405
|
}
|
|
143
406
|
return null;
|
|
144
407
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
408
|
+
var FILESYSTEM_PROGRESS_TOOLS = /* @__PURE__ */ new Set(["Write", "Edit"]);
|
|
409
|
+
function extractLastFilesystemStatusFromProgress(progress) {
|
|
410
|
+
if (!Array.isArray(progress) || progress.length === 0) return null;
|
|
411
|
+
for (let index = progress.length - 1; index >= 0; index -= 1) {
|
|
412
|
+
const entry = progress[index];
|
|
413
|
+
if (!isSubagentProgressEntry(entry)) continue;
|
|
414
|
+
if (!FILESYSTEM_PROGRESS_TOOLS.has(entry.toolName)) continue;
|
|
415
|
+
const line = formatGroupedProgressStatus(entry);
|
|
416
|
+
if (line === "Write" || line === "Edit" || line === "Update" || line === "Create") {
|
|
417
|
+
continue;
|
|
154
418
|
}
|
|
155
|
-
return
|
|
156
|
-
}
|
|
157
|
-
return
|
|
158
|
-
}
|
|
159
|
-
function
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
const flush = () => {
|
|
172
|
-
if (currentTool == null || currentCount === 0) return;
|
|
173
|
-
grouped.push({
|
|
174
|
-
text: formatGroupText(
|
|
175
|
-
currentTool,
|
|
176
|
-
currentDisplay ?? currentTool,
|
|
177
|
-
currentCount,
|
|
178
|
-
currentIsRead,
|
|
179
|
-
currentIsSearch,
|
|
180
|
-
isRunning
|
|
181
|
-
),
|
|
182
|
-
toolUseCount: currentCount
|
|
183
|
-
});
|
|
184
|
-
currentTool = null;
|
|
185
|
-
currentDisplay = null;
|
|
186
|
-
currentCount = 0;
|
|
187
|
-
currentIsRead = false;
|
|
188
|
-
currentIsSearch = false;
|
|
419
|
+
return line;
|
|
420
|
+
}
|
|
421
|
+
return null;
|
|
422
|
+
}
|
|
423
|
+
function emptyExploreCounts() {
|
|
424
|
+
return {
|
|
425
|
+
searchCount: 0,
|
|
426
|
+
readCount: 0,
|
|
427
|
+
listCount: 0,
|
|
428
|
+
bashCount: 0,
|
|
429
|
+
memorySearchCount: 0,
|
|
430
|
+
memoryReadCount: 0,
|
|
431
|
+
memoryWriteCount: 0,
|
|
432
|
+
relevantRecallCount: 0,
|
|
433
|
+
gitOpBashCount: 0,
|
|
434
|
+
mcpCallCount: 0
|
|
189
435
|
};
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
436
|
+
}
|
|
437
|
+
function isSilentTaskTool(toolName) {
|
|
438
|
+
const name = toolName.trim();
|
|
439
|
+
if (!name) return false;
|
|
440
|
+
if (name === "TodoWrite") return true;
|
|
441
|
+
return name.startsWith("Task");
|
|
442
|
+
}
|
|
443
|
+
function isExploreTool(toolName) {
|
|
444
|
+
return READ_TOOLS.has(toolName) || SEARCH_TOOLS.has(toolName);
|
|
445
|
+
}
|
|
446
|
+
function incrementExploreCount(counts, toolName) {
|
|
447
|
+
if (READ_TOOLS.has(toolName)) {
|
|
448
|
+
counts.readCount += 1;
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
451
|
+
if (SEARCH_TOOLS.has(toolName)) {
|
|
452
|
+
counts.searchCount += 1;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
function buildExploreSummaryLine(counts, options) {
|
|
456
|
+
return formatExploreSummaryText(
|
|
457
|
+
{ ...emptyExploreCounts(), ...counts },
|
|
458
|
+
{ active: options.active }
|
|
459
|
+
) ?? "";
|
|
460
|
+
}
|
|
461
|
+
function processProgressEntries(entries, isRunning) {
|
|
462
|
+
const lines = [];
|
|
463
|
+
let i = 0;
|
|
464
|
+
while (i < entries.length) {
|
|
465
|
+
const entry = entries[i];
|
|
466
|
+
if (isSilentTaskTool(entry.toolName)) {
|
|
467
|
+
i += 1;
|
|
468
|
+
continue;
|
|
204
469
|
}
|
|
470
|
+
if (isExploreTool(entry.toolName)) {
|
|
471
|
+
let j = i;
|
|
472
|
+
const counts = emptyExploreCounts();
|
|
473
|
+
while (j < entries.length && isExploreTool(entries[j].toolName)) {
|
|
474
|
+
incrementExploreCount(counts, entries[j].toolName);
|
|
475
|
+
j += 1;
|
|
476
|
+
}
|
|
477
|
+
const blockLen = j - i;
|
|
478
|
+
if (blockLen >= 2) {
|
|
479
|
+
lines.push({
|
|
480
|
+
text: buildExploreSummaryLine(counts, { active: isRunning }),
|
|
481
|
+
toolUseCount: blockLen
|
|
482
|
+
});
|
|
483
|
+
} else {
|
|
484
|
+
lines.push({
|
|
485
|
+
text: formatSubagentProgressLine(entries[i]),
|
|
486
|
+
toolUseCount: 1
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
i = j;
|
|
490
|
+
continue;
|
|
491
|
+
}
|
|
492
|
+
lines.push({
|
|
493
|
+
text: formatSubagentProgressLine(entry),
|
|
494
|
+
toolUseCount: 1
|
|
495
|
+
});
|
|
496
|
+
i += 1;
|
|
205
497
|
}
|
|
206
|
-
|
|
207
|
-
return grouped;
|
|
498
|
+
return lines;
|
|
208
499
|
}
|
|
209
500
|
function processAgentProgressLines(entries, options) {
|
|
210
|
-
const processed =
|
|
501
|
+
const processed = processProgressEntries(entries, options.isRunning);
|
|
211
502
|
if (options.maxVisible >= processed.length) {
|
|
212
503
|
return { visible: processed, hiddenToolUseCount: 0 };
|
|
213
504
|
}
|
|
@@ -328,14 +619,14 @@ function AgentProgressLines({
|
|
|
328
619
|
{
|
|
329
620
|
className: "lax-agent-progress__line",
|
|
330
621
|
children: [
|
|
331
|
-
/* @__PURE__ */ jsx("span", { className: "lax-agent-progress__gutter", "aria-hidden": true, children:
|
|
622
|
+
/* @__PURE__ */ jsx("span", { className: "lax-agent-progress__gutter", "aria-hidden": true, children: AGENT_PROGRESS_GUTTER }),
|
|
332
623
|
/* @__PURE__ */ jsx("span", { className: "lax-agent-progress__text", children: line.text })
|
|
333
624
|
]
|
|
334
625
|
},
|
|
335
626
|
`${index}:${line.text}`
|
|
336
627
|
)),
|
|
337
628
|
hiddenToolUseCount > 0 && mode !== "full" ? /* @__PURE__ */ jsxs("div", { className: "lax-agent-progress__line lax-agent-progress__line--more", children: [
|
|
338
|
-
/* @__PURE__ */ jsx("span", { className: "lax-agent-progress__gutter", "aria-hidden": true, children:
|
|
629
|
+
/* @__PURE__ */ jsx("span", { className: "lax-agent-progress__gutter", "aria-hidden": true, children: AGENT_PROGRESS_GUTTER }),
|
|
339
630
|
/* @__PURE__ */ jsxs(
|
|
340
631
|
"button",
|
|
341
632
|
{
|
|
@@ -470,10 +761,11 @@ function AgentToolBody({
|
|
|
470
761
|
const bodyText = buildAgentBodyText(result?.display, result?.summary ?? "");
|
|
471
762
|
const transcriptFallback = buildAgentTranscriptText(result?.display, progress);
|
|
472
763
|
const showDoneSummary = status !== "running" && bodyText.length > 0;
|
|
764
|
+
const doneFilesystemStatus = status !== "running" ? extractLastFilesystemStatusFromProgress(progress) : null;
|
|
473
765
|
const showTranscriptLane = bodyMode === "full" && transcriptLane.length > 0;
|
|
474
766
|
const showRunningProgress = status === "running" && progress.length > 0 && !showTranscriptLane;
|
|
475
767
|
const showTranscriptFallback = bodyMode === "full" && !showTranscriptLane && transcriptFallback.length > 0;
|
|
476
|
-
if (!showRunningProgress && !showDoneSummary && !showTranscriptLane && !showTranscriptFallback) {
|
|
768
|
+
if (!showRunningProgress && !showDoneSummary && !doneFilesystemStatus && !showTranscriptLane && !showTranscriptFallback) {
|
|
477
769
|
return /* @__PURE__ */ jsx3("div", { className: "lax-tool-body lax-tool-body--agent", children: /* @__PURE__ */ jsx3("div", { className: "lax-tool-body__block", "data-variant": "dim", children: /* @__PURE__ */ jsx3("pre", { className: "lax-tool-body__text", children: "(running)" }) }) });
|
|
478
770
|
}
|
|
479
771
|
return /* @__PURE__ */ jsxs3("div", { className: "lax-tool-body lax-tool-body--agent", children: [
|
|
@@ -494,6 +786,17 @@ function AgentToolBody({
|
|
|
494
786
|
onExpand: () => onBodyModeChange?.("full")
|
|
495
787
|
}
|
|
496
788
|
) : null,
|
|
789
|
+
showDoneSummary && doneFilesystemStatus ? /* @__PURE__ */ jsx3(
|
|
790
|
+
"div",
|
|
791
|
+
{
|
|
792
|
+
className: "lax-agent-progress lax-agent-progress--done-status",
|
|
793
|
+
"data-testid": "lax-agent-done-filesystem-status",
|
|
794
|
+
children: /* @__PURE__ */ jsxs3("div", { className: "lax-agent-progress__line", children: [
|
|
795
|
+
/* @__PURE__ */ jsx3("span", { className: "lax-agent-progress__gutter", "aria-hidden": true, children: AGENT_PROGRESS_GUTTER }),
|
|
796
|
+
/* @__PURE__ */ jsx3("span", { className: "lax-agent-progress__text", children: doneFilesystemStatus })
|
|
797
|
+
] })
|
|
798
|
+
}
|
|
799
|
+
) : null,
|
|
497
800
|
showTranscriptLane ? /* @__PURE__ */ jsx3(SubagentTranscriptBlock, { entries: transcriptLane, dataSource: "transcript-lane" }) : null,
|
|
498
801
|
showTranscriptFallback ? /* @__PURE__ */ jsxs3(
|
|
499
802
|
"div",
|
|
@@ -509,33 +812,6 @@ function AgentToolBody({
|
|
|
509
812
|
] });
|
|
510
813
|
}
|
|
511
814
|
|
|
512
|
-
// src/view/tools/displayRecord.ts
|
|
513
|
-
function asDisplayRecord(display) {
|
|
514
|
-
if (display != null && typeof display === "object" && !Array.isArray(display)) {
|
|
515
|
-
return display;
|
|
516
|
-
}
|
|
517
|
-
return null;
|
|
518
|
-
}
|
|
519
|
-
function asInputRecord(input) {
|
|
520
|
-
if (input != null && typeof input === "object" && !Array.isArray(input)) {
|
|
521
|
-
return input;
|
|
522
|
-
}
|
|
523
|
-
return {};
|
|
524
|
-
}
|
|
525
|
-
function strField(record, key) {
|
|
526
|
-
const value = record[key];
|
|
527
|
-
return value == null ? "" : String(value).trim();
|
|
528
|
-
}
|
|
529
|
-
function numField(record, key) {
|
|
530
|
-
const value = record[key];
|
|
531
|
-
if (typeof value === "number" && Number.isFinite(value)) return value;
|
|
532
|
-
if (typeof value === "string" && value.trim() !== "") {
|
|
533
|
-
const n = Number(value);
|
|
534
|
-
if (Number.isFinite(n)) return n;
|
|
535
|
-
}
|
|
536
|
-
return void 0;
|
|
537
|
-
}
|
|
538
|
-
|
|
539
815
|
// src/view/tools/presentation/askUserHelpers.ts
|
|
540
816
|
function formatAskUserDisplayBody(display) {
|
|
541
817
|
const items = display.questions;
|
|
@@ -1106,16 +1382,20 @@ export {
|
|
|
1106
1382
|
WebFetch,
|
|
1107
1383
|
SILENT_TASK_TOOL_NAMES,
|
|
1108
1384
|
INTERNAL_TOOL_NAMES,
|
|
1385
|
+
formatExploreSummaryText,
|
|
1386
|
+
formatThoughtDurationPrefix,
|
|
1387
|
+
asDisplayRecord,
|
|
1388
|
+
asInputRecord,
|
|
1389
|
+
strField,
|
|
1390
|
+
numField,
|
|
1391
|
+
formatEditTitle,
|
|
1392
|
+
formatWriteTitle,
|
|
1109
1393
|
coerceSubagentProgressEntries,
|
|
1110
1394
|
extractLastToolInfoFromProgress,
|
|
1111
1395
|
formatAgentTitle,
|
|
1112
1396
|
AgentProgressLines,
|
|
1113
1397
|
SubagentTranscriptBlock,
|
|
1114
1398
|
AgentToolBody,
|
|
1115
|
-
asDisplayRecord,
|
|
1116
|
-
asInputRecord,
|
|
1117
|
-
strField,
|
|
1118
|
-
numField,
|
|
1119
1399
|
AskUserQuestionToolBody,
|
|
1120
1400
|
BashToolBody,
|
|
1121
1401
|
EditToolBody,
|
|
@@ -1129,4 +1409,4 @@ export {
|
|
|
1129
1409
|
ToolDisplayRegistry,
|
|
1130
1410
|
createDefaultToolRegistry
|
|
1131
1411
|
};
|
|
1132
|
-
//# sourceMappingURL=chunk-
|
|
1412
|
+
//# sourceMappingURL=chunk-FL2G7SV3.js.map
|