@llm4ts/runner 2.9.1 → 2.9.3

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.
@@ -70,6 +70,23 @@ export declare const laneLabel: (lane: string, executor: string | undefined) =>
70
70
  * `Verbose` prints them all, tagged.
71
71
  */
72
72
  export declare const rendersLanedEvent: (verbosity: Verbosity, event: FlowEvent) => boolean;
73
+ /** Tokens in and out so far; `estimated` once any report was an estimate. */
74
+ export interface TokenTally {
75
+ input: number;
76
+ output: number;
77
+ estimated: boolean;
78
+ }
79
+ /** 950 → "950", 12_400 → "12.4k", 1_250_000 → "1.3M". */
80
+ export declare const formatCount: (value: number) => string;
81
+ /** `3.5k tokens` (in and out together), `~` when estimated; empty before any report. */
82
+ export declare const formatTally: (tally: TokenTally | undefined) => string;
83
+ /** How long after a tool call a lane still reads as "Running <tool>…". */
84
+ export declare const toolActivityWindowMs = 15000;
85
+ /** What a lane is doing right now, in two words. */
86
+ export declare const activityOf: (lastTool: {
87
+ readonly tool: string;
88
+ readonly at: number;
89
+ } | undefined, now: number) => string;
73
90
  /** One status row per active lane, the run's own stage (if any) first. */
74
91
  export declare const statusBlock: (globalStage: string | undefined, lanes: ReadonlyArray<{
75
92
  readonly lane: string;
@@ -77,6 +94,8 @@ export declare const statusBlock: (globalStage: string | undefined, lanes: Reado
77
94
  readonly stage: string | undefined;
78
95
  readonly elapsedMs: number;
79
96
  readonly tools: number;
80
- }>) => string | undefined;
97
+ readonly tokens?: TokenTally;
98
+ readonly activity?: string;
99
+ }>, globalTokens?: TokenTally) => string | undefined;
81
100
  export declare const consumeTerminalEvents: (events: FlowEventHub, surface: TerminalSurface, verbosity?: "Quiet" | "Normal" | "Verbose" | "Debug" | undefined, options?: TerminalConsumerOptions | undefined) => Effect.Effect<TerminalConsumer, never, Scope.Scope>;
82
101
  //# sourceMappingURL=Terminal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Terminal.d.ts","sourceRoot":"","sources":["../src/Terminal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Terminal.d.ts","sourceRoot":"","sources":["../src/Terminal.ts"],"names":[],"mappings":"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"}
package/dist/Terminal.js CHANGED
@@ -30,7 +30,10 @@ export const rendersEvent = (verbosity, event) => {
30
30
  case "CapabilityDenied":
31
31
  case "CapabilityUnenforceable":
32
32
  return true;
33
+ // Every git read and gate command is a capability event: useful in a
34
+ // trace, noise on screen once several stories run.
33
35
  case "TokensUsed":
36
+ case "CapabilityUsed":
34
37
  return verbosity === "Verbose" || verbosity === "Debug";
35
38
  default:
36
39
  return verbosity !== "Quiet";
@@ -179,6 +182,9 @@ export const makePlainTerminalSurface = (write = (line) => process.stdout.write(
179
182
  });
180
183
  const spinnerFrames = Object.freeze(["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]);
181
184
  const clearLine = "\r\u001b[2K";
185
+ const clearToEnd = "\u001b[J";
186
+ const wrapOff = "\u001b[?7l";
187
+ const wrapOn = "\u001b[?7h";
182
188
  /** Cuts a plain status line to the terminal's width, so a wrapped line never breaks the redraw. */
183
189
  export const fitToWidth = (line, columns) => columns === undefined || columns < 8 || line.length <= columns - 2
184
190
  ? line
@@ -195,7 +201,10 @@ export const makeLiveTerminalSurface = Effect.fn("@llm4ts/runner/Terminal.makeLi
195
201
  // block (one row per concurrent story) is cleared line by line upwards.
196
202
  const drawn = yield* Ref.make(0);
197
203
  const emit = (text) => Effect.sync(() => write(text));
198
- const clearStatus = Effect.flatMap(Ref.getAndSet(drawn, 0), (lines) => emit(lines <= 1 ? clearLine : `${clearLine}${`\u001b[1A${clearLine}`.repeat(lines - 1)}`));
204
+ // Back to the block's first line, then clear to the end of the screen.
205
+ // Counting on the rows we drew (not on how the terminal wrapped them) is
206
+ // safe because the block is drawn with line wrap off.
207
+ const clearStatus = Effect.flatMap(Ref.getAndSet(drawn, 0), (lines) => emit(lines <= 1 ? `${clearLine}${clearToEnd}` : `\u001b[${lines - 1}A${clearLine}${clearToEnd}`));
199
208
  const drawStatus = Effect.gen(function* () {
200
209
  if (yield* Ref.get(suspended)) {
201
210
  return;
@@ -205,9 +214,13 @@ export const makeLiveTerminalSurface = Effect.fn("@llm4ts/runner/Terminal.makeLi
205
214
  const currentFrame = yield* Ref.get(frame);
206
215
  const width = columns();
207
216
  const rows = label.split("\n");
208
- yield* emit(rows
217
+ // Line wrap is off while the block is drawn: a row wider than the
218
+ // terminal (an ambiguous-width character such as "·" counts two
219
+ // columns in some terminals) is clipped instead of wrapping onto a
220
+ // line the next redraw would not clear.
221
+ yield* emit(`${wrapOff}${rows
209
222
  .map((row, index) => palette.status(index === 0 ? (spinnerFrames[currentFrame % spinnerFrames.length] ?? "·") : " ", fitToWidth(row, width === undefined ? undefined : width - 2)))
210
- .join("\n"));
223
+ .join("\n")}${wrapOn}`);
211
224
  yield* Ref.set(drawn, rows.length);
212
225
  }
213
226
  });
@@ -261,12 +274,56 @@ export const laneLabel = (lane, executor) => executor === undefined ? lane : `${
261
274
  export const rendersLanedEvent = (verbosity, event) => event._tag === "ToolUse"
262
275
  ? verbosity === "Verbose" || verbosity === "Debug"
263
276
  : rendersEvent(verbosity, event);
277
+ const emptyTally = () => ({ input: 0, output: 0, estimated: false });
278
+ const addTokens = (tally, event) => {
279
+ if (event._tag !== "TokensUsed") {
280
+ return;
281
+ }
282
+ tally.input += event.usage.prompt;
283
+ tally.output += event.usage.completion;
284
+ if (event.model?.startsWith("estimated:") === true) {
285
+ tally.estimated = true;
286
+ }
287
+ };
288
+ /** 950 → "950", 12_400 → "12.4k", 1_250_000 → "1.3M". */
289
+ export const formatCount = (value) => value < 1_000
290
+ ? `${Math.max(0, Math.round(value))}`
291
+ : value < 1_000_000
292
+ ? `${(value / 1_000).toFixed(1)}k`
293
+ : `${(value / 1_000_000).toFixed(1)}M`;
294
+ /** `3.5k tokens` (in and out together), `~` when estimated; empty before any report. */
295
+ export const formatTally = (tally) => {
296
+ if (tally === undefined || (tally.input === 0 && tally.output === 0)) {
297
+ return "";
298
+ }
299
+ return `${tally.estimated ? "~" : ""}${formatCount(tally.input + tally.output)} tokens`;
300
+ };
301
+ /** How long after a tool call a lane still reads as "Running <tool>…". */
302
+ export const toolActivityWindowMs = 15_000;
303
+ /** What a lane is doing right now, in two words. */
304
+ export const activityOf = (lastTool, now) => lastTool !== undefined && now - lastTool.at <= toolActivityWindowMs
305
+ ? `Running ${lastTool.tool}…`
306
+ : "Thinking…";
264
307
  /** One status row per active lane, the run's own stage (if any) first. */
265
- export const statusBlock = (globalStage, lanes) => {
308
+ export const statusBlock = (globalStage, lanes, globalTokens) => {
309
+ // Time, tokens and what it is doing first — the stage title last, so a
310
+ // narrow terminal cuts the title, not the signs of life.
266
311
  const rows = lanes
267
312
  .filter((lane) => lane.stage !== undefined)
268
- .map((lane) => `${laneLabel(lane.lane, lane.executor)} · ${lane.stage ?? ""} · ${formatDurationMs(lane.elapsedMs)}${lane.tools === 0 ? "" : ` · ${lane.tools} tool call${lane.tools === 1 ? "" : "s"}`}`);
269
- const block = [...(globalStage === undefined ? [] : [globalStage]), ...rows];
313
+ .map((lane) => [
314
+ laneLabel(lane.lane, lane.executor),
315
+ formatDurationMs(lane.elapsedMs),
316
+ formatTally(lane.tokens),
317
+ lane.activity ?? "",
318
+ lane.stage ?? ""
319
+ ]
320
+ .filter((part) => part.length > 0)
321
+ .join(" · "));
322
+ const tally = formatTally(globalTokens);
323
+ const head = globalStage === undefined
324
+ ? []
325
+ : [tally.length === 0 ? globalStage : `${globalStage} · ${tally}`];
326
+ const block = [...head, ...rows];
270
327
  return block.length === 0 ? undefined : block.join("\n");
271
328
  };
272
329
  export const consumeTerminalEvents = Effect.fn("@llm4ts/runner/Terminal.consume")(function* (events, surface, verbosity = "Normal", options = {}) {
@@ -276,6 +333,8 @@ export const consumeTerminalEvents = Effect.fn("@llm4ts/runner/Terminal.consume"
276
333
  // interleaves their stages, closes the wrong one, and shows whichever
277
334
  // story started last as the only thing running.
278
335
  const lanes = new Map();
336
+ // Tokens of events outside any lane: the whole run, for a flow with one coder.
337
+ const runTokens = emptyTally();
279
338
  const consumed = yield* Ref.make(0);
280
339
  const statsRef = yield* Ref.make({ stagesCompleted: 0, stagesFailed: 0 });
281
340
  const subscription = yield* events.subscribe;
@@ -291,8 +350,10 @@ export const consumeTerminalEvents = Effect.fn("@llm4ts/runner/Terminal.consume"
291
350
  executor: state.executor,
292
351
  stage: state.stages.at(-1)?.name,
293
352
  elapsedMs: now - state.startedAt,
294
- tools: state.tools
295
- }))));
353
+ tools: state.tools,
354
+ tokens: state.tokens,
355
+ activity: activityOf(state.lastTool, now)
356
+ })), runTokens));
296
357
  });
297
358
  const countStage = (event) => event._tag === "StageCompleted"
298
359
  ? Ref.update(statsRef, (current) => ({
@@ -324,7 +385,9 @@ export const consumeTerminalEvents = Effect.fn("@llm4ts/runner/Terminal.consume"
324
385
  stages: [],
325
386
  tools: 0,
326
387
  executor: undefined,
327
- startedAt: now
388
+ startedAt: now,
389
+ tokens: emptyTally(),
390
+ lastTool: undefined
328
391
  };
329
392
  lanes.set(tagged.lane, state);
330
393
  if (tagged.executor !== undefined) {
@@ -346,7 +409,9 @@ export const consumeTerminalEvents = Effect.fn("@llm4ts/runner/Terminal.consume"
346
409
  }
347
410
  else if (event._tag === "ToolUse") {
348
411
  state.tools += 1;
412
+ state.lastTool = { tool: terminalSafe(event.tool), at: now };
349
413
  }
414
+ addTokens(state.tokens, event);
350
415
  if (state.stages.length === 0 && closesChild(event)) {
351
416
  lanes.delete(tagged.lane);
352
417
  }
@@ -360,6 +425,10 @@ export const consumeTerminalEvents = Effect.fn("@llm4ts/runner/Terminal.consume"
360
425
  yield* Ref.update(consumed, (count) => count + 1);
361
426
  return;
362
427
  }
428
+ if (event._tag === "TokensUsed") {
429
+ addTokens(runTokens, event);
430
+ yield* refreshStatus;
431
+ }
363
432
  const currentDepth = closesChild(event)
364
433
  ? yield* Ref.updateAndGet(depth, (value) => Math.max(0, value - 1))
365
434
  : yield* Ref.get(depth);
@@ -384,6 +453,8 @@ export const consumeTerminalEvents = Effect.fn("@llm4ts/runner/Terminal.consume"
384
453
  }
385
454
  yield* Ref.update(consumed, (count) => count + 1);
386
455
  })), Effect.forkScoped);
456
+ // Elapsed time and "Running <tool>…" age between events too.
457
+ yield* Effect.sleep("1 second").pipe(Effect.andThen(Effect.suspend(() => (lanes.size === 0 ? Effect.void : refreshStatus))), Effect.forever, Effect.forkScoped);
387
458
  // Display only, so a drain that gives up just means a trailing line was
388
459
  // never printed; the shared helper already bounds the wait.
389
460
  const awaitDrained = (timeout) => Effect.asVoid(awaitConsumed(events, consumed, timeout));
@@ -1 +1 @@
1
- {"version":3,"file":"Terminal.js","sourceRoot":"","sources":["../src/Terminal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Terminal.js","sourceRoot":"","sources":["../src/Terminal.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llm4ts/runner",
3
- "version": "2.9.1",
3
+ "version": "2.9.3",
4
4
  "description": "Node runner, CLI, terminal, and MCP composition for llm4ts",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -63,8 +63,8 @@
63
63
  "typescript"
64
64
  ],
65
65
  "dependencies": {
66
- "@llm4ts/core": "2.9.1",
67
- "@llm4ts/flow": "2.9.1"
66
+ "@llm4ts/flow": "2.9.3",
67
+ "@llm4ts/core": "2.9.3"
68
68
  },
69
69
  "peerDependencies": {
70
70
  "effect": "4.0.0-rc.115"
package/src/Terminal.ts CHANGED
@@ -36,7 +36,10 @@ export const rendersEvent = (verbosity: Verbosity, event: FlowEvent): boolean =>
36
36
  case "CapabilityDenied":
37
37
  case "CapabilityUnenforceable":
38
38
  return true
39
+ // Every git read and gate command is a capability event: useful in a
40
+ // trace, noise on screen once several stories run.
39
41
  case "TokensUsed":
42
+ case "CapabilityUsed":
40
43
  return verbosity === "Verbose" || verbosity === "Debug"
41
44
  default:
42
45
  return verbosity !== "Quiet"
@@ -229,6 +232,9 @@ export const makePlainTerminalSurface = (
229
232
 
230
233
  const spinnerFrames = Object.freeze(["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"])
231
234
  const clearLine = "\r\u001b[2K"
235
+ const clearToEnd = "\u001b[J"
236
+ const wrapOff = "\u001b[?7l"
237
+ const wrapOn = "\u001b[?7h"
232
238
 
233
239
  export interface TerminalOutput {
234
240
  readonly isTTY?: boolean
@@ -263,8 +269,11 @@ export const makeLiveTerminalSurface = Effect.fn("@llm4ts/runner/Terminal.makeLi
263
269
  // block (one row per concurrent story) is cleared line by line upwards.
264
270
  const drawn = yield* Ref.make(0)
265
271
  const emit = (text: string): Effect.Effect<void> => Effect.sync(() => write(text))
272
+ // Back to the block's first line, then clear to the end of the screen.
273
+ // Counting on the rows we drew (not on how the terminal wrapped them) is
274
+ // safe because the block is drawn with line wrap off.
266
275
  const clearStatus = Effect.flatMap(Ref.getAndSet(drawn, 0), (lines) =>
267
- emit(lines <= 1 ? clearLine : `${clearLine}${`\u001b[1A${clearLine}`.repeat(lines - 1)}`)
276
+ emit(lines <= 1 ? `${clearLine}${clearToEnd}` : `\u001b[${lines - 1}A${clearLine}${clearToEnd}`)
268
277
  )
269
278
  const drawStatus = Effect.gen(function* () {
270
279
  if (yield* Ref.get(suspended)) {
@@ -275,15 +284,19 @@ export const makeLiveTerminalSurface = Effect.fn("@llm4ts/runner/Terminal.makeLi
275
284
  const currentFrame = yield* Ref.get(frame)
276
285
  const width = columns()
277
286
  const rows = label.split("\n")
287
+ // Line wrap is off while the block is drawn: a row wider than the
288
+ // terminal (an ambiguous-width character such as "·" counts two
289
+ // columns in some terminals) is clipped instead of wrapping onto a
290
+ // line the next redraw would not clear.
278
291
  yield* emit(
279
- rows
292
+ `${wrapOff}${rows
280
293
  .map((row, index) =>
281
294
  palette.status(
282
295
  index === 0 ? (spinnerFrames[currentFrame % spinnerFrames.length] ?? "·") : " ",
283
296
  fitToWidth(row, width === undefined ? undefined : width - 2)
284
297
  )
285
298
  )
286
- .join("\n")
299
+ .join("\n")}${wrapOn}`
287
300
  )
288
301
  yield* Ref.set(drawn, rows.length)
289
302
  }
@@ -394,8 +407,58 @@ interface LaneState {
394
407
  tools: number
395
408
  executor: string | undefined
396
409
  readonly startedAt: number
410
+ readonly tokens: TokenTally
411
+ lastTool: { readonly tool: string; readonly at: number } | undefined
412
+ }
413
+
414
+ /** Tokens in and out so far; `estimated` once any report was an estimate. */
415
+ export interface TokenTally {
416
+ input: number
417
+ output: number
418
+ estimated: boolean
419
+ }
420
+
421
+ const emptyTally = (): TokenTally => ({ input: 0, output: 0, estimated: false })
422
+
423
+ const addTokens = (tally: TokenTally, event: FlowEvent): void => {
424
+ if (event._tag !== "TokensUsed") {
425
+ return
426
+ }
427
+ tally.input += event.usage.prompt
428
+ tally.output += event.usage.completion
429
+ if (event.model?.startsWith("estimated:") === true) {
430
+ tally.estimated = true
431
+ }
397
432
  }
398
433
 
434
+ /** 950 → "950", 12_400 → "12.4k", 1_250_000 → "1.3M". */
435
+ export const formatCount = (value: number): string =>
436
+ value < 1_000
437
+ ? `${Math.max(0, Math.round(value))}`
438
+ : value < 1_000_000
439
+ ? `${(value / 1_000).toFixed(1)}k`
440
+ : `${(value / 1_000_000).toFixed(1)}M`
441
+
442
+ /** `3.5k tokens` (in and out together), `~` when estimated; empty before any report. */
443
+ export const formatTally = (tally: TokenTally | undefined): string => {
444
+ if (tally === undefined || (tally.input === 0 && tally.output === 0)) {
445
+ return ""
446
+ }
447
+ return `${tally.estimated ? "~" : ""}${formatCount(tally.input + tally.output)} tokens`
448
+ }
449
+
450
+ /** How long after a tool call a lane still reads as "Running <tool>…". */
451
+ export const toolActivityWindowMs = 15_000
452
+
453
+ /** What a lane is doing right now, in two words. */
454
+ export const activityOf = (
455
+ lastTool: { readonly tool: string; readonly at: number } | undefined,
456
+ now: number
457
+ ): string =>
458
+ lastTool !== undefined && now - lastTool.at <= toolActivityWindowMs
459
+ ? `Running ${lastTool.tool}…`
460
+ : "Thinking…"
461
+
399
462
  /** One status row per active lane, the run's own stage (if any) first. */
400
463
  export const statusBlock = (
401
464
  globalStage: string | undefined,
@@ -405,17 +468,32 @@ export const statusBlock = (
405
468
  readonly stage: string | undefined
406
469
  readonly elapsedMs: number
407
470
  readonly tools: number
408
- }>
471
+ readonly tokens?: TokenTally
472
+ readonly activity?: string
473
+ }>,
474
+ globalTokens?: TokenTally
409
475
  ): string | undefined => {
476
+ // Time, tokens and what it is doing first — the stage title last, so a
477
+ // narrow terminal cuts the title, not the signs of life.
410
478
  const rows = lanes
411
479
  .filter((lane) => lane.stage !== undefined)
412
- .map(
413
- (lane) =>
414
- `${laneLabel(lane.lane, lane.executor)} · ${lane.stage ?? ""} · ${formatDurationMs(lane.elapsedMs)}${
415
- lane.tools === 0 ? "" : ` · ${lane.tools} tool call${lane.tools === 1 ? "" : "s"}`
416
- }`
480
+ .map((lane) =>
481
+ [
482
+ laneLabel(lane.lane, lane.executor),
483
+ formatDurationMs(lane.elapsedMs),
484
+ formatTally(lane.tokens),
485
+ lane.activity ?? "",
486
+ lane.stage ?? ""
487
+ ]
488
+ .filter((part) => part.length > 0)
489
+ .join(" · ")
417
490
  )
418
- const block = [...(globalStage === undefined ? [] : [globalStage]), ...rows]
491
+ const tally = formatTally(globalTokens)
492
+ const head =
493
+ globalStage === undefined
494
+ ? []
495
+ : [tally.length === 0 ? globalStage : `${globalStage} · ${tally}`]
496
+ const block = [...head, ...rows]
419
497
  return block.length === 0 ? undefined : block.join("\n")
420
498
  }
421
499
 
@@ -431,6 +509,8 @@ export const consumeTerminalEvents = Effect.fn("@llm4ts/runner/Terminal.consume"
431
509
  // interleaves their stages, closes the wrong one, and shows whichever
432
510
  // story started last as the only thing running.
433
511
  const lanes = new Map<string, LaneState>()
512
+ // Tokens of events outside any lane: the whole run, for a flow with one coder.
513
+ const runTokens = emptyTally()
434
514
  const consumed = yield* Ref.make(0)
435
515
  const statsRef = yield* Ref.make<TerminalRunStats>({ stagesCompleted: 0, stagesFailed: 0 })
436
516
  const subscription = yield* events.subscribe
@@ -453,8 +533,11 @@ export const consumeTerminalEvents = Effect.fn("@llm4ts/runner/Terminal.consume"
453
533
  executor: state.executor,
454
534
  stage: state.stages.at(-1)?.name,
455
535
  elapsedMs: now - state.startedAt,
456
- tools: state.tools
457
- }))
536
+ tools: state.tools,
537
+ tokens: state.tokens,
538
+ activity: activityOf(state.lastTool, now)
539
+ })),
540
+ runTokens
458
541
  )
459
542
  )
460
543
  })
@@ -498,7 +581,9 @@ export const consumeTerminalEvents = Effect.fn("@llm4ts/runner/Terminal.consume"
498
581
  stages: [],
499
582
  tools: 0,
500
583
  executor: undefined,
501
- startedAt: now
584
+ startedAt: now,
585
+ tokens: emptyTally(),
586
+ lastTool: undefined
502
587
  } satisfies LaneState)
503
588
  lanes.set(tagged.lane, state)
504
589
  if (tagged.executor !== undefined) {
@@ -518,7 +603,9 @@ export const consumeTerminalEvents = Effect.fn("@llm4ts/runner/Terminal.consume"
518
603
  yield* countStage(event)
519
604
  } else if (event._tag === "ToolUse") {
520
605
  state.tools += 1
606
+ state.lastTool = { tool: terminalSafe(event.tool), at: now }
521
607
  }
608
+ addTokens(state.tokens, event)
522
609
  if (state.stages.length === 0 && closesChild(event)) {
523
610
  lanes.delete(tagged.lane)
524
611
  }
@@ -532,6 +619,10 @@ export const consumeTerminalEvents = Effect.fn("@llm4ts/runner/Terminal.consume"
532
619
  yield* Ref.update(consumed, (count) => count + 1)
533
620
  return
534
621
  }
622
+ if (event._tag === "TokensUsed") {
623
+ addTokens(runTokens, event)
624
+ yield* refreshStatus
625
+ }
535
626
  const currentDepth = closesChild(event)
536
627
  ? yield* Ref.updateAndGet(depth, (value) => Math.max(0, value - 1))
537
628
  : yield* Ref.get(depth)
@@ -558,6 +649,12 @@ export const consumeTerminalEvents = Effect.fn("@llm4ts/runner/Terminal.consume"
558
649
  ),
559
650
  Effect.forkScoped
560
651
  )
652
+ // Elapsed time and "Running <tool>…" age between events too.
653
+ yield* Effect.sleep("1 second").pipe(
654
+ Effect.andThen(Effect.suspend(() => (lanes.size === 0 ? Effect.void : refreshStatus))),
655
+ Effect.forever,
656
+ Effect.forkScoped
657
+ )
561
658
  // Display only, so a drain that gives up just means a trailing line was
562
659
  // never printed; the shared helper already bounds the wait.
563
660
  const awaitDrained = (timeout?: Duration.Input): Effect.Effect<void> =>