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.
@@ -10,4 +10,4 @@ function truncatePreview(text, maxChars = 120) {
10
10
  export {
11
11
  truncatePreview
12
12
  };
13
- //# sourceMappingURL=chunk-DP7V33X7.js.map
13
+ //# sourceMappingURL=chunk-6Z4ZF36Z.js.map
@@ -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-4RIOBLGB.js";
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 = formatSubagentProgressLine(entry);
403
+ const line = formatGroupedProgressStatus(entry);
141
404
  if (line) return line;
142
405
  }
143
406
  return null;
144
407
  }
145
- function formatGroupText(toolName, display, count, isRead, isSearch, isRunning) {
146
- if (count > 1) {
147
- if (isRead) {
148
- const verb = isRunning ? "Reading" : "Read";
149
- const noun = count === 1 ? "file" : "files";
150
- return `${verb} ${count} ${noun}`;
151
- }
152
- if (isSearch) {
153
- return `${toolName} ${count} times`;
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 `${toolName} ${count} times`;
156
- }
157
- return display;
158
- }
159
- function groupProgressEntries(entries, isRunning) {
160
- const raw = entries.map((entry) => ({
161
- toolName: entry.toolName,
162
- display: formatSubagentProgressLine(entry),
163
- isError: false
164
- }));
165
- const grouped = [];
166
- let currentTool = null;
167
- let currentDisplay = null;
168
- let currentCount = 0;
169
- let currentIsRead = false;
170
- let currentIsSearch = false;
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
- for (const { toolName, display } of raw) {
191
- const isRead = READ_TOOLS.has(toolName);
192
- const isSearch = SEARCH_TOOLS.has(toolName);
193
- const isBash = BASH_TOOLS.has(toolName);
194
- const sameGroup = !isBash && currentTool === toolName && currentIsRead === isRead && currentIsSearch === isSearch;
195
- if (sameGroup) {
196
- currentCount += 1;
197
- } else {
198
- flush();
199
- currentTool = toolName;
200
- currentDisplay = display;
201
- currentCount = 1;
202
- currentIsRead = isRead;
203
- currentIsSearch = isSearch;
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
- flush();
207
- return grouped;
498
+ return lines;
208
499
  }
209
500
  function processAgentProgressLines(entries, options) {
210
- const processed = groupProgressEntries(entries, options.isRunning);
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: index === 0 ? AGENT_PROGRESS_GUTTER : AGENT_PROGRESS_INDENT }),
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: AGENT_PROGRESS_INDENT }),
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-7CLAU74Y.js.map
1412
+ //# sourceMappingURL=chunk-FL2G7SV3.js.map