@llm4ts/runner 2.22.2 → 2.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Watch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Watch.js","sourceRoot":"","sources":["../src/Watch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Watch.js","sourceRoot":"","sources":["../src/Watch.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.22.2",
3
+ "version": "2.24.0",
4
4
  "description": "Node runner, CLI, terminal, and MCP composition for llm4ts",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -40,6 +40,7 @@
40
40
  "./ReviewFingerprint": "./dist/ReviewFingerprint.js",
41
41
  "./Terminal": "./dist/Terminal.js",
42
42
  "./TerminalInteraction": "./dist/TerminalInteraction.js",
43
+ "./Transcripts": "./dist/Transcripts.js",
43
44
  "./Watch": "./dist/Watch.js",
44
45
  "./Package": "./dist/Package.js",
45
46
  "./package.json": "./package.json",
@@ -67,8 +68,8 @@
67
68
  "typescript"
68
69
  ],
69
70
  "dependencies": {
70
- "@llm4ts/core": "2.22.2",
71
- "@llm4ts/flow": "2.22.2"
71
+ "@llm4ts/core": "2.24.0",
72
+ "@llm4ts/flow": "2.24.0"
72
73
  },
73
74
  "peerDependencies": {
74
75
  "effect": "4.0.0"
package/src/AgentTree.ts CHANGED
@@ -663,33 +663,57 @@ export type TreeMode = "lanes" | "executors"
663
663
  /** What the reader chose to look at; the run's state is separate. */
664
664
  export interface TreeView {
665
665
  readonly mode: TreeMode
666
- /** The selected lane's story id. */
666
+ /** The selected lane's story id, or in the executors view the executor. */
667
667
  readonly selected: string | undefined
668
668
  readonly expanded: boolean
669
669
  readonly fullLog: boolean
670
+ /** The transcript tail of the selection is open (`t`). */
671
+ readonly tail: boolean
672
+ /** Only this role's calls in the tail; all when undefined (`r` cycles). */
673
+ readonly tailRole: string | undefined
674
+ /** How many lines the tail is scrolled back from its end (page up/down). */
675
+ readonly tailBack: number
670
676
  }
671
677
 
672
678
  export const initialView: TreeView = {
673
679
  mode: "lanes",
674
680
  selected: undefined,
675
681
  expanded: false,
676
- fullLog: false
682
+ fullLog: false,
683
+ tail: false,
684
+ tailRole: undefined,
685
+ tailBack: 0
677
686
  }
678
687
 
679
688
  const runningLanes = (state: TreeState): ReadonlyArray<TreeLane> =>
680
689
  state.lanes.filter((lane) => lane.status === "running")
681
690
 
691
+ const tailRoles: ReadonlyArray<string | undefined> = [undefined, "coder", "reviewer", "judge"]
692
+ const tailPage = 10
693
+
694
+ /** Whose transcript the tail shows: the selected story, or the selected executor. */
695
+ export const tailTargetOf = (
696
+ view: TreeView
697
+ ): { readonly lane: string } | { readonly executor: string } | undefined =>
698
+ view.selected === undefined
699
+ ? undefined
700
+ : view.mode === "lanes"
701
+ ? { lane: view.selected }
702
+ : { executor: view.selected }
703
+
682
704
  /**
683
- * The view after a key: arrows or 1–9 select a running lane, enter expands
684
- * it, escape collapses, `e` switches lanes and executors, `l` the full log,
685
- * `q` quits. Keys it does not know return the same view.
705
+ * The view after a key: arrows or 1–9 select a running lane (an executor in
706
+ * the executors view), enter expands it, `t` tails its transcript, `r`
707
+ * cycles the tail's role, escape closes, `e` switches lanes and executors,
708
+ * `l` the full log, `q` quits. Keys it does not know return the same view.
686
709
  */
687
710
  export const onTreeKey = (view: TreeView, key: string, state: TreeState): TreeView | "quit" => {
688
- const running = runningLanes(state)
689
- const index = running.findIndex((lane) => lane.id === view.selected)
711
+ const choices =
712
+ view.mode === "lanes" ? runningLanes(state).map((lane) => lane.id) : state.executors
713
+ const index = choices.findIndex((id) => id === view.selected)
690
714
  const select = (next: number): TreeView => {
691
- const lane = running[Math.max(0, Math.min(running.length - 1, next))]
692
- return lane === undefined ? view : { ...view, selected: lane.id }
715
+ const id = choices[Math.max(0, Math.min(choices.length - 1, next))]
716
+ return id === undefined ? view : { ...view, selected: id }
693
717
  }
694
718
  switch (key) {
695
719
  case "q":
@@ -701,11 +725,34 @@ export const onTreeKey = (view: TreeView, key: string, state: TreeState): TreeVi
701
725
  case "left":
702
726
  return select(index < 0 ? 0 : index - 1)
703
727
  case "enter":
704
- return view.selected === undefined ? view : { ...view, expanded: !view.expanded }
728
+ return view.selected === undefined || view.mode !== "lanes"
729
+ ? view
730
+ : { ...view, expanded: !view.expanded }
731
+ case "t":
732
+ return view.selected === undefined
733
+ ? view
734
+ : { ...view, tail: !view.tail, expanded: false, tailBack: 0 }
735
+ case "pageup":
736
+ return view.tail ? { ...view, tailBack: view.tailBack + tailPage } : view
737
+ case "pagedown":
738
+ return view.tail ? { ...view, tailBack: Math.max(0, view.tailBack - tailPage) } : view
739
+ case "r":
740
+ return view.tail
741
+ ? {
742
+ ...view,
743
+ tailRole: tailRoles[(tailRoles.indexOf(view.tailRole) + 1) % tailRoles.length]
744
+ }
745
+ : view
705
746
  case "escape":
706
- return { ...view, expanded: false }
747
+ return { ...view, expanded: false, tail: false, tailBack: 0 }
707
748
  case "e":
708
- return { ...view, mode: view.mode === "lanes" ? "executors" : "lanes" }
749
+ return {
750
+ ...view,
751
+ mode: view.mode === "lanes" ? "executors" : "lanes",
752
+ selected: undefined,
753
+ expanded: false,
754
+ tail: false
755
+ }
709
756
  case "l":
710
757
  return { ...view, fullLog: !view.fullLog }
711
758
  default:
@@ -719,6 +766,8 @@ export interface TreeRenderOptions {
719
766
  readonly view: TreeView
720
767
  /** The terminal's rows; the frame fits them (see `renderTree`). */
721
768
  readonly height?: number
769
+ /** The open tail's lines, read by the host; absent when the run has no transcript. */
770
+ readonly tail?: ReadonlyArray<string>
722
771
  }
723
772
 
724
773
  const railWidth = 26
@@ -854,11 +903,16 @@ const heldBy = (state: TreeState, executor: string): ReadonlyArray<string> => {
854
903
  .map((lane) => `coder · ${lane.id}`)
855
904
  }
856
905
 
857
- const executorBox = (state: TreeState, executor: string, width: number): Array<Line> => {
906
+ const executorBox = (
907
+ state: TreeState,
908
+ executor: string,
909
+ width: number,
910
+ selected: boolean
911
+ ): Array<Line> => {
858
912
  const held = heldBy(state, executor)
859
913
  const out = state.exclusions.find((exclusion) => exclusion.executor === executor)
860
914
  return box(width, "running", [
861
- [span(executor, "bold")],
915
+ [span(selected ? `▸ ${executor}` : executor, "bold")],
862
916
  ...(held.length === 0
863
917
  ? [[span("no lease", "dim")]]
864
918
  : held.slice(0, 3).map((lease): Line => [span(lease)])),
@@ -942,7 +996,36 @@ const judgmentOf = (state: TreeState, width: number): Array<Line> => {
942
996
  )
943
997
  }
944
998
 
945
- const mainOf = (state: TreeState, width: number, view: TreeView): Array<Line> => {
999
+ /** The transcript tail of the selection, in place of the boxes. */
1000
+ const tailOf = (
1001
+ view: TreeView,
1002
+ tail: ReadonlyArray<string> | undefined,
1003
+ width: number
1004
+ ): Array<Line> =>
1005
+ box(
1006
+ width,
1007
+ "running",
1008
+ tail === undefined || tail.length === 0
1009
+ ? [
1010
+ [
1011
+ span(
1012
+ tail === undefined
1013
+ ? "no transcript for this run — start it with llm4ts run … --transcript"
1014
+ : "nothing said yet",
1015
+ "dim"
1016
+ )
1017
+ ]
1018
+ ]
1019
+ : tail.map((line): Line => [span(line)]),
1020
+ `tail · ${view.selected ?? ""} · ${view.tailRole ?? "all"}`
1021
+ )
1022
+
1023
+ const mainOf = (
1024
+ state: TreeState,
1025
+ width: number,
1026
+ view: TreeView,
1027
+ tail: ReadonlyArray<string> | undefined
1028
+ ): Array<Line> => {
946
1029
  const running = state.lanes.filter((lane) => lane.status === "running")
947
1030
  const orchestratorWidth = Math.min(46, width)
948
1031
  const stage = state.stages.at(-1) ?? (running.length > 0 ? "implement stories" : "idle")
@@ -962,17 +1045,21 @@ const mainOf = (state: TreeState, width: number, view: TreeView): Array<Line> =>
962
1045
  const shown = running.slice(0, maxLaneBoxes)
963
1046
  const executors = state.executors.slice(0, maxLaneBoxes + 1)
964
1047
  const lanes =
965
- view.expanded && selected !== undefined
966
- ? expandedLane(selected, width, state.now)
967
- : view.mode === "executors"
968
- ? executors.length === 0
969
- ? [centre([span("no executors yet", "dim")], width)]
970
- : columnsOf(executors, width, (executor, each) => executorBox(state, executor, each))
971
- : shown.length === 0
972
- ? [centre([span("no stories in flight", "dim")], width)]
973
- : columnsOf(shown, width, (lane, each) =>
974
- laneBox(lane, each, state.now, lane.id === view.selected, state.idleAfterMs)
975
- )
1048
+ view.tail && view.selected !== undefined
1049
+ ? tailOf(view, tail, width)
1050
+ : view.expanded && selected !== undefined
1051
+ ? expandedLane(selected, width, state.now)
1052
+ : view.mode === "executors"
1053
+ ? executors.length === 0
1054
+ ? [centre([span("no executors yet", "dim")], width)]
1055
+ : columnsOf(executors, width, (executor, each) =>
1056
+ executorBox(state, executor, each, executor === view.selected)
1057
+ )
1058
+ : shown.length === 0
1059
+ ? [centre([span("no stories in flight", "dim")], width)]
1060
+ : columnsOf(shown, width, (lane, each) =>
1061
+ laneBox(lane, each, state.now, lane.id === view.selected, state.idleAfterMs)
1062
+ )
976
1063
  return [
977
1064
  ...orchestrator.map((line) => centre(line, width)),
978
1065
  centre([span("•", "orchestrator")], width),
@@ -1027,7 +1114,10 @@ const frameOf = (
1027
1114
  ),
1028
1115
  [span("═".repeat(width), "dim")],
1029
1116
  [],
1030
- ...beside([railOf(state), mainOf(state, mainWidth, options.view)], [railWidth, mainWidth]),
1117
+ ...beside(
1118
+ [railOf(state), mainOf(state, mainWidth, options.view, options.tail)],
1119
+ [railWidth, mainWidth]
1120
+ ),
1031
1121
  ...(logCount === "none"
1032
1122
  ? []
1033
1123
  : [[], ...box(width, "log", logOf(state, logCount), "session log")]),
@@ -1078,3 +1168,16 @@ const fitToRows = (
1078
1168
  rows === undefined || rows < 4 || lines.length <= rows
1079
1169
  ? lines
1080
1170
  : [...lines.slice(0, rows - 2), ...lines.slice(-2)]
1171
+
1172
+ /** `20s`, `4m00s`, `1h02m`. */
1173
+ export const duration = (ms: number): string => {
1174
+ const seconds = Math.round(ms / 1_000)
1175
+ if (seconds < 60) {
1176
+ return `${seconds}s`
1177
+ }
1178
+ const minutes = Math.floor(seconds / 60)
1179
+ if (minutes < 60) {
1180
+ return `${minutes}m${String(seconds % 60).padStart(2, "0")}s`
1181
+ }
1182
+ return `${Math.floor(minutes / 60)}h${String(minutes % 60).padStart(2, "0")}m`
1183
+ }
@@ -12,8 +12,10 @@ import {
12
12
  onTreeKey,
13
13
  reduceTree,
14
14
  renderTree,
15
+ tailTargetOf,
15
16
  type TreeView
16
17
  } from "./AgentTree.ts"
18
+ import { loadTranscript, tailLinesOf, type TranscriptFiles } from "./Transcripts.ts"
17
19
  import type { TerminalSurface } from "./Terminal.ts"
18
20
 
19
21
  /**
@@ -92,13 +94,16 @@ export const makeScreenPainter: Effect.Effect<ScreenPainter> = Effect.map(
92
94
  export const enterScreen = "\u001b[?1049h\u001b[?25l\u001b[?7l"
93
95
  export const leaveScreen = "\u001b[?7h\u001b[?25h\u001b[?1049l"
94
96
  const redrawEvery = "100 millis"
97
+ const tailRows = 16
95
98
 
96
99
  export const makeAgentTreeHost = Effect.fn("@llm4ts/runner/AgentTreeSurface.make")(function* (
97
100
  hub: FlowEventHub,
98
101
  classic: TerminalSurface,
99
102
  output: AgentTreeOutput,
100
103
  keys: Stream.Stream<string>,
101
- idleAfterMs?: number
104
+ idleAfterMs?: number,
105
+ /** The run's transcript (`--transcript`), for the tail pane. */
106
+ transcripts?: { readonly directory: string; readonly files: TranscriptFiles }
102
107
  ): Effect.fn.Return<AgentTreeHost, never, Scope.Scope> {
103
108
  const state = yield* Ref.make(emptyTree(idleAfterMs === undefined ? {} : { idleAfterMs }))
104
109
  const view = yield* Ref.make<TreeView>(initialView)
@@ -118,11 +123,26 @@ export const makeAgentTreeHost = Effect.fn("@llm4ts/runner/AgentTreeSurface.make
118
123
 
119
124
  const render = (rows: number | undefined): Effect.Effect<ReadonlyArray<string>> =>
120
125
  Effect.gen(function* () {
126
+ const current = yield* Ref.get(view)
127
+ const width = Math.max(90, output.columns() ?? 90)
128
+ const target = tailTargetOf(current)
129
+ const tail =
130
+ !current.tail || target === undefined || transcripts === undefined
131
+ ? undefined
132
+ : tailLinesOf(
133
+ yield* loadTranscript(transcripts.files, transcripts.directory, target),
134
+ target,
135
+ current.tailRole,
136
+ width - 32,
137
+ tailRows,
138
+ current.tailBack
139
+ )
121
140
  return renderTree(yield* Ref.get(state), {
122
- width: Math.max(90, output.columns() ?? 90),
141
+ width,
123
142
  colour: output.colour,
124
- view: yield* Ref.get(view),
125
- ...(rows === undefined ? {} : { height: rows })
143
+ view: current,
144
+ ...(rows === undefined ? {} : { height: rows }),
145
+ ...(tail === undefined ? {} : { tail })
126
146
  })
127
147
  })
128
148
  /** The full screen fits the terminal; the last frame left behind is whole. */
@@ -201,6 +221,8 @@ const keyNames: Readonly<Record<string, string>> = {
201
221
  "\u001b[B": "down",
202
222
  "\u001b[C": "right",
203
223
  "\u001b[D": "left",
224
+ "\u001b[5~": "pageup",
225
+ "\u001b[6~": "pagedown",
204
226
  "\r": "enter",
205
227
  "\n": "enter",
206
228
  "\u001b": "escape"
package/src/FlowArgs.ts CHANGED
@@ -33,6 +33,7 @@ environment:
33
33
  LLM4TS_CODER coding agent: claude|codex|gemini|pi|agy|grok|cursor|opencode (default: claude)
34
34
  LLM4TS_VERBOSITY terminal verbosity: quiet|normal|verbose
35
35
  LLM4TS_UI tree: the full-screen agent tree (ADR 0022; q returns to the classic view)
36
+ LLM4TS_TRANSCRIPT on: record each seat's input and output under .llm4ts/transcripts/
36
37
  OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY
37
38
  credentials for API providers
38
39
 
package/src/FlowRunner.ts CHANGED
@@ -59,6 +59,8 @@ import {
59
59
  import { FlowContext, type ContextOptions, type FlowContextShape } from "@llm4ts/flow/FlowContext"
60
60
  import { makeFlowRecorder, type RunOutcome } from "@llm4ts/flow/FlowRecorder"
61
61
  import { timedJudgment, timedSeat, withTimedRole } from "@llm4ts/flow/Timing"
62
+ import { transcriptSeat, type TranscriptSink } from "@llm4ts/flow/Transcript"
63
+ import { nodeTranscriptFiles, nodeTranscriptSink, transcriptsWanted } from "./Transcripts.ts"
62
64
  import { idleAfterFrom } from "./AgentTree.ts"
63
65
  import { makeAgentTreeHost, nodeTreeKeys } from "./AgentTreeSurface.ts"
64
66
  import { makeJudgmentLog, type JudgmentLogShape } from "@llm4ts/flow/JudgmentLog"
@@ -116,6 +118,8 @@ export interface FlowRunnerDependencies {
116
118
  readonly readPiModelsJson?: () => string | undefined
117
119
  /** For the hosted TypeSafe judgment backend; defaults to the Node client. */
118
120
  readonly http?: HttpClientShape
121
+ /** Where `--transcript` writes, given its directory; files on disk by default. */
122
+ readonly transcriptSink?: (directory: string) => TranscriptSink
119
123
  }
120
124
 
121
125
  export interface NodeConnectorDependencies {
@@ -285,6 +289,28 @@ export const makeFlowRunnerContext = Effect.fn("@llm4ts/runner/FlowRunner.makeCo
285
289
  ): Effect.fn.Return<FlowRunnerBundle, FlowError, Scope.Scope> {
286
290
  const events = yield* makeFlowEventHub()
287
291
  const runId = options.runId ?? `run-${(yield* Clock.currentTimeMillis).toString()}`
292
+ // `llm4ts run --transcript`: what each seat is told and answers, per story,
293
+ // in its own files — never in the trace.
294
+ const transcriptOn =
295
+ transcriptsWanted(options.environment ?? process.env) && options.persistRun !== false
296
+ const transcripts = transcriptOn
297
+ ? (dependencies.transcriptSink ?? nodeTranscriptSink)(
298
+ join(options.workDir, ".llm4ts", "transcripts", runId)
299
+ )
300
+ : undefined
301
+ const recorded = (
302
+ service: LlmServiceShape,
303
+ lane: string | undefined,
304
+ role: string,
305
+ executor?: Effect.Effect<string | undefined>
306
+ ): LlmServiceShape =>
307
+ transcripts === undefined
308
+ ? service
309
+ : transcriptSeat(service, transcripts, {
310
+ role,
311
+ ...(lane === undefined ? {} : { lane }),
312
+ ...(executor === undefined ? {} : { executor })
313
+ })
288
314
  const judgmentLog =
289
315
  options.judgmentLog === true
290
316
  ? yield* makeJudgmentLog({ files: dependencies.files, root: options.workDir, runId })
@@ -453,17 +479,23 @@ export const makeFlowRunnerContext = Effect.fn("@llm4ts/runner/FlowRunner.makeCo
453
479
  readonly judgment: JudgmentShape
454
480
  },
455
481
  rebind: boolean,
456
- laneEvents: FlowEventsShape = events
482
+ laneEvents: FlowEventsShape = events,
483
+ lane?: string
457
484
  ): FlowContextShape =>
458
485
  FlowContext.of({
459
486
  // Every call is timed on the lane's events, under its role.
460
- reasoning: timedSeat(seats.reasoning, laneEvents, "reasoning"),
461
- coder: { ...seats.coder, ...timedSeat(seats.coder, laneEvents, "coder") },
487
+ reasoning: recorded(timedSeat(seats.reasoning, laneEvents, "reasoning"), lane, "reasoning"),
488
+ coder: {
489
+ ...seats.coder,
490
+ ...recorded(timedSeat(seats.coder, laneEvents, "coder"), lane, "coder")
491
+ },
462
492
  judgment: timedJudgment(seats.judgment, laneEvents),
463
493
  git: makeGitTool(dependencies.process, workDir, laneEvents),
464
494
  hosting: makeGitHubTool(dependencies.process, workDir, laneEvents),
465
495
  events: laneEvents,
466
- reviewers: seats.reviewers.map((reviewer) => timedSeat(reviewer, laneEvents, "reviewer")),
496
+ reviewers: seats.reviewers.map((reviewer) =>
497
+ recorded(timedSeat(reviewer, laneEvents, "reviewer"), lane, "reviewer")
498
+ ),
467
499
  coderCapabilities: seats.coder.capabilities,
468
500
  userPrompt: options.userPrompt,
469
501
  workDir,
@@ -480,7 +512,8 @@ export const makeFlowRunnerContext = Effect.fn("@llm4ts/runner/FlowRunner.makeCo
480
512
  false,
481
513
  contextOptions?.label === undefined
482
514
  ? events
483
- : withLane(events, { lane: contextOptions.label, workDir: directory })
515
+ : withLane(events, { lane: contextOptions.label, workDir: directory }),
516
+ contextOptions?.label
484
517
  )
485
518
  )
486
519
  }
@@ -618,17 +651,22 @@ export const makeFlowRunnerContext = Effect.fn("@llm4ts/runner/FlowRunner.makeCo
618
651
  held: HeldCoder,
619
652
  workDir: string,
620
653
  label: string,
621
- laneEvents: FlowEventsShape
654
+ laneEvents: FlowEventsShape,
655
+ lane: string | undefined
622
656
  ): RosterView => ({
623
657
  forRole: (role) =>
624
- timedSeat(
625
- rosterSeat(roster, source, role, workDir, {
626
- events: laneEvents,
627
- avoid: Effect.map(held.executor, (id) => (id === undefined ? [] : [id])),
628
- borrow: held.lease,
629
- label
630
- }),
631
- laneEvents,
658
+ recorded(
659
+ timedSeat(
660
+ rosterSeat(roster, source, role, workDir, {
661
+ events: laneEvents,
662
+ avoid: Effect.map(held.executor, (id) => (id === undefined ? [] : [id])),
663
+ borrow: held.lease,
664
+ label
665
+ }),
666
+ laneEvents,
667
+ role
668
+ ),
669
+ lane,
632
670
  role
633
671
  ),
634
672
  available: roster.available,
@@ -644,7 +682,8 @@ export const makeFlowRunnerContext = Effect.fn("@llm4ts/runner/FlowRunner.makeCo
644
682
  laneEvents: FlowEventsShape
645
683
  ): Effect.Effect<FlowContextShape, FlowError> =>
646
684
  Effect.gen(function* () {
647
- const view = viewFor(held, workDir, label, laneEvents)
685
+ const lane = rebind ? undefined : label
686
+ const view = viewFor(held, workDir, label, laneEvents, lane)
648
687
  const judgmentSeat =
649
688
  options.judgment === undefined
650
689
  ? view.forRole("judge")
@@ -662,7 +701,12 @@ export const makeFlowRunnerContext = Effect.fn("@llm4ts/runner/FlowRunner.makeCo
662
701
  : timedJudgment(judged, laneEvents)
663
702
  return FlowContext.of({
664
703
  reasoning: view.forRole(rebind ? "planner" : "reviewer"),
665
- coder: timedSeat(held.service, laneEvents, "coder"),
704
+ coder: recorded(
705
+ timedSeat(held.service, laneEvents, "coder"),
706
+ lane,
707
+ "coder",
708
+ held.executor
709
+ ),
666
710
  judgment,
667
711
  git: makeGitTool(dependencies.process, workDir, laneEvents),
668
712
  hosting: makeGitHubTool(dependencies.process, workDir, laneEvents),
@@ -781,7 +825,13 @@ export const runWithBundle = Effect.fn("@llm4ts/runner/FlowRunner.runWithBundle"
781
825
  colour: true
782
826
  },
783
827
  nodeTreeKeys("interrupt"),
784
- idleAfterFrom(environment)
828
+ idleAfterFrom(environment),
829
+ transcriptsWanted(environment)
830
+ ? {
831
+ directory: join(options.workDir, ".llm4ts", "transcripts", bundle.runId),
832
+ files: nodeTranscriptFiles
833
+ }
834
+ : undefined
785
835
  )
786
836
  : undefined
787
837
  const surface = tree?.surface ?? classic