@ordewell/core 0.5.5 → 0.6.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.
Files changed (54) hide show
  1. package/dist/IFileSystem-CFYf4yR2.d.mts +76 -0
  2. package/dist/IFileSystem-D4dAl2r8.d.ts +76 -0
  3. package/dist/{ModeResolver-D-SUFRNF.d.mts → ModeResolver-DVYVRbJp.d.ts} +6 -2
  4. package/dist/{ModeResolver-D3XO0fT9.d.ts → ModeResolver-a4xJFlEp.d.mts} +6 -2
  5. package/dist/Task-CZJr6rmz.d.mts +2121 -0
  6. package/dist/Task-CZJr6rmz.d.ts +2121 -0
  7. package/dist/{chunk-KLN7ELXO.mjs → chunk-2SOVKO7P.mjs} +1561 -1269
  8. package/dist/chunk-2SOVKO7P.mjs.map +1 -0
  9. package/dist/{chunk-T2S5O36I.mjs → chunk-C44UWIAD.mjs} +6 -6
  10. package/dist/chunk-C44UWIAD.mjs.map +1 -0
  11. package/dist/{chunk-HD2FWPRV.mjs → chunk-EDGUFCIR.mjs} +6 -1
  12. package/dist/chunk-EDGUFCIR.mjs.map +1 -0
  13. package/dist/{chunk-UUBGVCGJ.mjs → chunk-OM4D274O.mjs} +20 -2
  14. package/dist/chunk-OM4D274O.mjs.map +1 -0
  15. package/dist/index.d.mts +1594 -803
  16. package/dist/index.d.ts +1594 -803
  17. package/dist/index.js +9540 -6040
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.mjs +8167 -4996
  20. package/dist/index.mjs.map +1 -1
  21. package/dist/order-labels.d.mts +3 -1
  22. package/dist/order-labels.d.ts +3 -1
  23. package/dist/{parsing-BTP4bwkk.d.ts → parsing-Bd6-b644.d.ts} +2 -2
  24. package/dist/{parsing-CDtRSxBY.d.mts → parsing-DIaGZmiQ.d.mts} +2 -2
  25. package/dist/parsing.d.mts +5 -3
  26. package/dist/parsing.d.ts +5 -3
  27. package/dist/parsing.js.map +1 -1
  28. package/dist/parsing.mjs +2 -2
  29. package/dist/{plan-utils-pE4TBwxl.d.mts → plan-utils-Ba-l8EZS.d.mts} +212 -43
  30. package/dist/{plan-utils-BFaPo-IT.d.ts → plan-utils-_T5S7Mnk.d.ts} +212 -43
  31. package/dist/plan-utils.d.mts +5 -4
  32. package/dist/plan-utils.d.ts +5 -4
  33. package/dist/plan-utils.js +352 -64
  34. package/dist/plan-utils.js.map +1 -1
  35. package/dist/plan-utils.mjs +11 -5
  36. package/dist/testing.d.mts +54 -4
  37. package/dist/testing.d.ts +54 -4
  38. package/dist/testing.js +93 -2
  39. package/dist/testing.js.map +1 -1
  40. package/dist/testing.mjs +91 -2
  41. package/dist/testing.mjs.map +1 -1
  42. package/package.json +2 -1
  43. package/skills/grilling/SKILL.md +6 -16
  44. package/skills/improve-codebase-architecture/SKILL.md +1 -1
  45. package/dist/ApprovalPolicy-BVhGdECT.d.mts +0 -79
  46. package/dist/ApprovalPolicy-BVhGdECT.d.ts +0 -79
  47. package/dist/ITerminalRunner-BV9Rd2o9.d.ts +0 -563
  48. package/dist/ITerminalRunner-C77ZNZS9.d.mts +0 -563
  49. package/dist/Task-Vl5Zq_D-.d.mts +0 -825
  50. package/dist/Task-Vl5Zq_D-.d.ts +0 -825
  51. package/dist/chunk-HD2FWPRV.mjs.map +0 -1
  52. package/dist/chunk-KLN7ELXO.mjs.map +0 -1
  53. package/dist/chunk-T2S5O36I.mjs.map +0 -1
  54. package/dist/chunk-UUBGVCGJ.mjs.map +0 -1
@@ -1,39 +1,134 @@
1
- import { r as IsolationTaskStatus, P as PlanIsolation, H as RunnerId, a as DiscoveredModel, T as Task, L as LegacyPlanState, Q as QueuedMessage, a4 as UsageTotals, O as SubagentOutcome, aa as Verdict, U as TaskIsolation, d as IsolationHandoff, k as IsolationMergeResult, E as ResearchStep, F as ResearchStepOutcome, C as ConversationMessage, z as ResearchLogEntry, w as PlannerUsage } from './Task-Vl5Zq_D-.mjs';
2
- import { R as RunnerModeInfo } from './ModeResolver-D-SUFRNF.mjs';
3
- import { A as ApprovalKind, e as ApprovalSource } from './ApprovalPolicy-BVhGdECT.mjs';
1
+ import { aR as StructuredTurnEnd, aT as SubagentOutcome, b9 as UsageRecord, k as ApprovalDecision, aP as StructuredEvent, aG as RunnerId, w as DiscoveredModel, aU as Task, a6 as LegacyPlanState, aw as QueuedMessage, ba as UsageTotals, bg as Verdict, aV as TaskIsolation, b4 as TaskTransport, r as AwaitingReason, ax as QueuedTaskMessage, Q as IsolationHandoff, X as IsolationMergeResult, aC as ResearchStep, l as ApprovalKind, q as ApprovalSource, aD as ResearchStepOutcome, u as ConversationMessage, aA as ResearchLogEntry, ai as PlannerUsage } from './Task-CZJr6rmz.mjs';
2
+ import { R as RunnerModeInfo } from './ModeResolver-a4xJFlEp.mjs';
4
3
 
5
- /** A conflict's files as one surface shows them: every one, up to `max`, then how many more. */
6
- declare function capConflictFiles(files: string[], max?: number): string;
7
- /** A task record as ADR-0013 persisted it, for one repository. */
8
- interface Adr0013TaskRecord {
9
- taskId: string;
10
- order: number;
11
- title: string;
12
- branch: string;
13
- worktree: string;
14
- status: IsolationTaskStatus;
15
- linked: string[];
4
+ /**
5
+ * One entry of a structured task's log (ADR-0018, P1): what a runner did,
6
+ * normalized and serializable, streamed live as `task_log` and appended to
7
+ * the attempt's `.jsonl` file. The live view and the reload fold the same
8
+ * events through `reduceTaskLog`, so the two cannot disagree.
9
+ *
10
+ * Readers skip a type they do not know, which is how later events join
11
+ * without a format version.
12
+ */
13
+ type TaskLogEvent =
14
+ /** A turn began by delivering `message`; `messageId` names it when it had been queued. */
15
+ {
16
+ type: 'turn_start';
17
+ message: string;
18
+ messageId?: string;
19
+ } | {
20
+ type: 'turn_end';
21
+ reason: StructuredTurnEnd;
22
+ } | {
23
+ type: 'text_delta';
24
+ text: string;
25
+ }
26
+ /** A complete run of the agent's reply, authoritative over the deltas streamed for it. */
27
+ | {
28
+ type: 'text';
29
+ text: string;
30
+ } | {
31
+ type: 'thinking_delta';
32
+ text: string;
33
+ subagentId?: string;
34
+ } | {
35
+ type: 'thinking';
36
+ text: string;
37
+ subagentId?: string;
16
38
  }
17
- /** A run as ADR-0013 persisted it (0.4.23): one repository, its refs on the run itself. */
18
- interface Adr0013IsolationRun {
39
+ /** `args` is the call's arguments as JSON, exactly as the runner announced them. */
40
+ | {
41
+ type: 'tool_call';
19
42
  id: string;
20
- workspaceRoot: string;
21
- baseRef: string;
22
- baseBranch?: string;
23
- integrationBranch: string;
24
- tasks: Record<string, Adr0013TaskRecord>;
43
+ name: string;
44
+ args: string;
45
+ subagentId?: string;
46
+ }
47
+ /** `omittedLines` is set when {@link trimToolOutput} cut the middle of `output`. */
48
+ | {
49
+ type: 'tool_result';
50
+ id: string;
51
+ output: string;
52
+ success: boolean;
53
+ omittedLines?: number;
54
+ subagentId?: string;
55
+ } | {
56
+ type: 'subagent_started';
57
+ subagentId: string;
58
+ brief: string;
59
+ model?: string;
60
+ } | {
61
+ type: 'subagent_finished';
62
+ subagentId: string;
63
+ outcome: SubagentOutcome;
64
+ digest: string;
65
+ } | {
66
+ type: 'usage';
67
+ record: UsageRecord;
68
+ } | {
69
+ type: 'message_queued';
70
+ messageId: string;
71
+ text: string;
72
+ } | {
73
+ type: 'message_removed';
74
+ messageId: string;
75
+ }
76
+ /** The agent's own words for a failed turn. */
77
+ | {
78
+ type: 'error';
79
+ message: string;
25
80
  }
26
- interface Adr0013PlanIsolation {
27
- run: Adr0013IsolationRun;
28
- resolvers: Record<string, string>;
81
+ /**
82
+ * The runner asked to use a tool its mode does not cover (ADR-0018, A1).
83
+ * `approvalId` is what the answer is given under; `args` is the call's
84
+ * arguments as JSON; `allowForTask` says the runner offered its own
85
+ * session-scoped grant.
86
+ */
87
+ | {
88
+ type: 'approval_requested';
89
+ approvalId: string;
90
+ tool: string;
91
+ args: string;
92
+ allowForTask: boolean;
93
+ toolCallId?: string;
94
+ } | {
95
+ type: 'approval_decided';
96
+ approvalId: string;
97
+ decision: ApprovalDecision['decision'];
98
+ note?: string;
29
99
  }
100
+ /** The request went unanswered: the runner withdrew it, or its process ended. */
101
+ | {
102
+ type: 'approval_withdrawn';
103
+ approvalId: string;
104
+ };
105
+ /**
106
+ * Keep a tool result's head and tail. A build log or a whole file read can
107
+ * run to megabytes, and every attempt's file keeps it for good; the ends are
108
+ * where a reader looks — the command's start, and how it finished.
109
+ */
110
+ declare function trimToolOutput(output: string): {
111
+ output: string;
112
+ omittedLines?: number;
113
+ };
114
+ /**
115
+ * The log entry for one structured event, or null for what the log does not
116
+ * keep: background-agent launches, which the subagent's own events already show.
117
+ */
118
+ declare function toTaskLogEvent(event: StructuredEvent): TaskLogEvent | null;
119
+ /**
120
+ * Merge runs of deltas into one event each. Deltas arrive a few characters at
121
+ * a time; merged, a batch is one message on the wire and one line on disk,
122
+ * and the view folds to the same blocks either way.
123
+ */
124
+ declare function coalesceTaskLog(events: readonly TaskLogEvent[]): TaskLogEvent[];
125
+
30
126
  /**
31
- * A persisted plan isolation in today's shape. A run saved in the ADR-0013
32
- * format — recognised by its own `integrationBranch` — becomes a group of one
33
- * at `.`, keeping its branches, so a session saved by 0.4.23 resumes and hands
34
- * off exactly as it would have.
127
+ * Pure, no-imports helper so a browser surface can format a conflict's files
128
+ * without pulling `isolationRecord` — and its `path` import — into a webview
129
+ * bundle. Kept out of `isolationRecord.ts` for exactly that reason.
35
130
  */
36
- declare function migratePlanIsolation(state: PlanIsolation | Adr0013PlanIsolation): PlanIsolation;
131
+ declare function capConflictFiles(files: string[], max?: number): string;
37
132
 
38
133
  /**
39
134
  * The catalog a model/task-mode edit is checked against — the same discovered
@@ -87,7 +182,7 @@ declare function textHasTaskOps(text: string): boolean;
87
182
  declare function parseTaskOpsJson(text: string): TaskOp[];
88
183
  interface ApplyTaskOpsResult {
89
184
  ok: boolean;
90
- tasks: Task[];
185
+ tasks: readonly Task[];
91
186
  errors: string[];
92
187
  /** Human-readable summary of what changed, for the chat transcript. */
93
188
  summary: string[];
@@ -101,7 +196,7 @@ interface ApplyTaskOpsResult {
101
196
  * which {@link applyTaskOps} repairs; refusing on order would make this
102
197
  * pre-flight stricter than the applier it stands in for.
103
198
  */
104
- declare function canMergeTasks(tasks: Task[], selectedIds: string[]): {
199
+ declare function canMergeTasks(tasks: readonly Task[], selectedIds: string[]): {
105
200
  ok: boolean;
106
201
  error?: string;
107
202
  };
@@ -128,14 +223,14 @@ declare function dependentsOf<T extends Pick<TaskRef, 'id' | 'dependencies'>>(ta
128
223
  * the same invariant `applyTaskOps` enforces. Omit `taskId` for a task that does
129
224
  * not exist yet: it lands last, so every current task is a candidate.
130
225
  */
131
- declare function dependencyCandidates<T extends Pick<TaskRef, 'id' | 'order'>>(tasks: T[], taskId?: string): T[];
226
+ declare function dependencyCandidates<T extends Pick<TaskRef, 'id' | 'order'>>(tasks: readonly T[], taskId?: string): T[];
132
227
  /** Pre-flight check for a hand-edited dependency list: every id exists and comes earlier. */
133
- declare function canSetDependencies<T extends TaskRef>(tasks: T[], taskId: string, dependencies: string[]): {
228
+ declare function canSetDependencies<T extends TaskRef>(tasks: readonly T[], taskId: string, dependencies: string[]): {
134
229
  ok: boolean;
135
230
  error?: string;
136
231
  };
137
232
  /** Pre-flight check for a split: the task exists and is not locked by execution. */
138
- declare function canSplitTask(tasks: Task[], taskId: string): {
233
+ declare function canSplitTask(tasks: readonly Task[], taskId: string): {
139
234
  ok: boolean;
140
235
  error?: string;
141
236
  };
@@ -145,7 +240,7 @@ declare function canSplitTask(tasks: Task[], taskId: string): {
145
240
  * completed tasks untouched), or nothing is returned and `errors` explains
146
241
  * why. The caller commits `tasks` on ok.
147
242
  */
148
- declare function applyTaskOps(currentTasks: Task[], ops: TaskOp[], runners: RunnerId[], catalog?: EditCatalog): ApplyTaskOpsResult;
243
+ declare function applyTaskOps(currentTasks: readonly Task[], ops: TaskOp[], runners: RunnerId[], catalog?: EditCatalog): ApplyTaskOpsResult;
149
244
 
150
245
  type SerializedTaskStatus = {
151
246
  id: string;
@@ -159,6 +254,20 @@ type SerializedTaskStatus = {
159
254
  idleSince?: string | null;
160
255
  /** Absent unless the plan has an isolation run, so a shared-root plan's updates are unchanged. */
161
256
  isolation?: TaskIsolation;
257
+ /** Absent unless the task's plan asked for the structured transport (ADR-0018): what it ran on, or why it fell back. */
258
+ transport?: Pick<TaskTransport, 'kind' | 'fallback'>;
259
+ /** What an `awaiting_user` task waits on, when it was saved (ADR-0018, W1). */
260
+ awaitingReason?: AwaitingReason;
261
+ /** Messages waiting for a structured task's turn to end, oldest first; absent when there are none. */
262
+ queued?: QueuedTaskMessage[];
263
+ /** Set when the task can be continued in its saved runner session (ADR-0018, K1); the id itself stays in the daemon. */
264
+ continuable?: true;
265
+ /**
266
+ * How many of a structured task's runner requests wait for an answer
267
+ * (ADR-0018, A1) — "waiting for approval", which leaves `status` alone.
268
+ * Absent when none do.
269
+ */
270
+ awaitingApproval?: number;
162
271
  };
163
272
  type SerializedTask = {
164
273
  id: string;
@@ -365,6 +474,18 @@ type SessionMessage =
365
474
  type: 'task_output';
366
475
  taskId: string;
367
476
  text: string;
477
+ }
478
+ /**
479
+ * A structured task's log as it happens (ADR-0018, P1): the next events of
480
+ * the task's attempt `attempt`, in order — the same ones appended to that
481
+ * attempt's file, so a surface folding these and one replaying the file
482
+ * draw the same blocks. Terminal-transport tasks send none.
483
+ */
484
+ | {
485
+ type: 'task_log';
486
+ taskId: string;
487
+ attempt: number;
488
+ events: TaskLogEvent[];
368
489
  } | {
369
490
  type: 'isolation_blocked';
370
491
  reason: 'dirty';
@@ -431,9 +552,9 @@ type SessionNotice = {
431
552
  };
432
553
  type SessionBroadcaster = (msg: SessionMessage) => void;
433
554
  declare function serializeTask(t: Task): SerializedTask;
434
- declare function serializeTaskStatus(t: Task, idleSince?: string | null, isolation?: TaskIsolation | null): SerializedTaskStatus;
555
+ declare function serializeTaskStatus(t: Task, idleSince?: string | null, isolation?: TaskIsolation | null, queued?: readonly QueuedTaskMessage[], awaitingApproval?: number): SerializedTaskStatus;
435
556
  declare function serializePlan(plan: LegacyPlanState): SerializedPlan;
436
- declare function executionSummary(tasks: Task[]): {
557
+ declare function executionSummary(tasks: readonly Task[]): {
437
558
  total: number;
438
559
  completed: number;
439
560
  failed: number;
@@ -467,7 +588,8 @@ declare function classifyOutcome(success: boolean, output: string): ResearchStep
467
588
  * block is expanded is that UI state, and deliberately not part of a block.
468
589
  */
469
590
  type DisplayBlock = MessageBlock | ThinkingDisplayBlock | ToolBlock | SubagentBlock | ApprovalBlock | PlanBlock | UsageBlock;
470
- type MessageRole = 'user' | 'planner' | 'system' | 'error';
591
+ /** `agent` is a task runner speaking in a structured task's log (ADR-0018); the planner is `planner`. */
592
+ type MessageRole = 'user' | 'planner' | 'agent' | 'system' | 'error';
471
593
  interface MessageBlock {
472
594
  type: 'message';
473
595
  id: string;
@@ -539,7 +661,8 @@ interface SubagentBlock {
539
661
  usage?: UsageTotals;
540
662
  turnId?: string;
541
663
  }
542
- type ApprovalStatus = 'pending' | 'granted' | 'denied';
664
+ /** `withdrawn`: a runner's request that went unanswered — the runner cancelled it, or its process ended. */
665
+ type ApprovalStatus = 'pending' | 'granted' | 'denied' | 'withdrawn';
543
666
  interface ApprovalBlock {
544
667
  type: 'approval';
545
668
  id: string;
@@ -553,6 +676,14 @@ interface ApprovalBlock {
553
676
  /** Absent while pending. */
554
677
  decidedBy?: ApprovalSource;
555
678
  turnId?: string;
679
+ /** A runner's request (`runner_tool`) that can also be allowed for the rest of its task. */
680
+ allowForTask?: boolean;
681
+ /** Granted for the rest of the task, not this call alone. */
682
+ forTask?: boolean;
683
+ /** What a denial told the agent. */
684
+ note?: string;
685
+ /** The runner's tool call the request is about. */
686
+ toolCallId?: string;
556
687
  }
557
688
  type PlanMarkerStatus = 'building' | 'generated' | 'updated';
558
689
  interface PlanBlock {
@@ -578,6 +709,12 @@ interface UsageBlock {
578
709
  bySubagent?: Record<string, UsageTotals>;
579
710
  }
580
711
 
712
+ /** What every view over display blocks holds; each view adds its own state beside it. */
713
+ interface BlockList {
714
+ readonly blocks: readonly DisplayBlock[];
715
+ readonly nextId: number;
716
+ }
717
+
581
718
  /**
582
719
  * A line a surface adds to the conversation itself rather than receiving from
583
720
  * the session: the user's prompt as it is sent, a notice, an error.
@@ -588,9 +725,7 @@ interface LocalEntry {
588
725
  text: string;
589
726
  }
590
727
  type ConversationInput = SessionMessage | LocalEntry;
591
- interface ConversationView {
592
- readonly blocks: readonly DisplayBlock[];
593
- readonly nextId: number;
728
+ interface ConversationView extends BlockList {
594
729
  /**
595
730
  * The newest transcript entry the view accounts for. Plan markers and system
596
731
  * notes reach a surface only inside the transcript a `plan_generated`
@@ -619,6 +754,40 @@ declare function reduceConversation(view: ConversationView, input: ConversationI
619
754
  */
620
755
  declare function fromTranscript(conversationHistory: readonly ConversationMessage[] | undefined, researchLog: readonly ResearchLogEntry[] | undefined, plannerUsage?: PlannerUsage): ConversationView;
621
756
 
757
+ /**
758
+ * What a surface draws for one attempt of a structured task (ADR-0018, O1b):
759
+ * the same display blocks as the planner conversation, built from the task's
760
+ * {@link TaskLogEvent}s. No planner turn ids — a task's turns are its own,
761
+ * one at a time.
762
+ */
763
+ interface TaskLogView extends BlockList {
764
+ /** Messages waiting for the running turn to end, oldest first. */
765
+ readonly queued: readonly QueuedTaskMessage[];
766
+ /** A turn is running. */
767
+ readonly working: boolean;
768
+ /** How the last turn ended; absent before the first one does. */
769
+ readonly lastTurnEnd?: StructuredTurnEnd;
770
+ /** What the runner reported over the attempt, subagents included. */
771
+ readonly usage?: PlannerUsage;
772
+ /**
773
+ * The block each run of deltas streams into, keyed by stream, so the run's
774
+ * authoritative copy replaces it instead of repeating it below.
775
+ */
776
+ readonly streams: Readonly<Record<string, string>>;
777
+ }
778
+ declare const EMPTY_TASK_LOG: TaskLogView;
779
+ /** A runner's tool request, read the way its call's row reads: `Bash(npm test)`. */
780
+ declare function runnerToolSubject(tool: string, args: string): string;
781
+ /**
782
+ * Fold one task-log event into the view. Pure and incremental, like
783
+ * `reduceConversation`: an event that changes nothing returns `view` itself,
784
+ * and an event of a type this build does not know is skipped — a log written
785
+ * by a newer Ordewell still reads.
786
+ */
787
+ declare function reduceTaskLog(view: TaskLogView, event: TaskLogEvent): TaskLogView;
788
+ /** A whole attempt's events, folded from the start — what a reload shows. */
789
+ declare function replayTaskLog(events: readonly TaskLogEvent[], from?: TaskLogView): TaskLogView;
790
+
622
791
  /**
623
792
  * The one-line head of a command row, shared by every surface: the tool's name
624
793
  * and the argument that says what the call is about.
@@ -705,4 +874,4 @@ declare function hasHiddenDetail(blocks: readonly DisplayBlock[]): boolean;
705
874
  /** The conversation line for a task starting, worded the same on every surface. */
706
875
  declare function taskStartedNotice(title: string, runner?: string): string;
707
876
 
708
- export { holdPrompt as $, type Adr0013IsolationRun as A, aheadOfDraft as B, CHECKPOINT_TRUNCATE_LENGTH as C, type DisplayBlock as D, EMPTY_CONVERSATION as E, applyTaskOps as F, type GatedConversation as G, canMergeTasks as H, canSetDependencies as I, canSplitTask as J, capConflictFiles as K, type LocalEntry as L, type MessageBlock as M, NO_TURN as N, type OutputPreview as O, type PlanBlock as P, classifyOutcome as Q, dependencyCandidates as R, type SerializedPlan as S, type TakenPrompt as T, type UsageBlock as U, dependentsOf as V, drainNext as W, executionSummary as X, followTurn as Y, fromTranscript as Z, hasHiddenDetail as _, type Adr0013PlanIsolation as a, migratePlanIsolation as a0, outputLines as a1, outputPreview as a2, parseTaskOpsJson as a3, reduceConversation as a4, serializePlan as a5, serializeTask as a6, serializeTaskStatus as a7, stopTurn as a8, summarizeToolCall as a9, taskStartedNotice as aa, textHasTaskOps as ab, toolHeadline as ac, truncateCheckpointSummary as ad, unsendAll as ae, unsendLatest as af, type Adr0013TaskRecord as b, type ApplyTaskOpsResult as c, type ApprovalBlock as d, type ApprovalStatus as e, type ConversationInput as f, type ConversationView as g, EMPTY_HOLD as h, type MessageRole as i, type PlanMarkerStatus as j, type PromptHold as k, type SerializedTask as l, type SerializedTaskStatus as m, type SessionBroadcaster as n, type SessionMessage as o, type SessionNotice as p, type SubagentBlock as q, type SubagentChild as r, type SubagentStatus as s, type TaskOp as t, type TaskRef as u, type ThinkingDisplayBlock as v, type ToolBlock as w, type ToolHeadline as x, type ToolStatus as y, type TurnGate as z };
877
+ export { hasHiddenDetail as $, type ApplyTaskOpsResult as A, aheadOfDraft as B, CHECKPOINT_TRUNCATE_LENGTH as C, type DisplayBlock as D, EMPTY_CONVERSATION as E, applyTaskOps as F, type GatedConversation as G, canMergeTasks as H, canSetDependencies as I, canSplitTask as J, capConflictFiles as K, type LocalEntry as L, type MessageBlock as M, NO_TURN as N, type OutputPreview as O, type PlanBlock as P, classifyOutcome as Q, coalesceTaskLog as R, type SerializedPlan as S, type TakenPrompt as T, type UsageBlock as U, dependencyCandidates as V, dependentsOf as W, drainNext as X, executionSummary as Y, followTurn as Z, fromTranscript as _, type ApprovalBlock as a, holdPrompt as a0, outputLines as a1, outputPreview as a2, parseTaskOpsJson as a3, reduceConversation as a4, reduceTaskLog as a5, replayTaskLog as a6, runnerToolSubject as a7, serializePlan as a8, serializeTask as a9, serializeTaskStatus as aa, stopTurn as ab, summarizeToolCall as ac, taskStartedNotice as ad, textHasTaskOps as ae, toTaskLogEvent as af, toolHeadline as ag, trimToolOutput as ah, truncateCheckpointSummary as ai, unsendAll as aj, unsendLatest as ak, type ApprovalStatus as b, type ConversationInput as c, type ConversationView as d, EMPTY_HOLD as e, EMPTY_TASK_LOG as f, type MessageRole as g, type PlanMarkerStatus as h, type PromptHold as i, type SerializedTask as j, type SerializedTaskStatus as k, type SessionBroadcaster as l, type SessionMessage as m, type SessionNotice as n, type SubagentBlock as o, type SubagentChild as p, type SubagentStatus as q, type TaskLogEvent as r, type TaskLogView as s, type TaskOp as t, type TaskRef as u, type ThinkingDisplayBlock as v, type ToolBlock as w, type ToolHeadline as x, type ToolStatus as y, type TurnGate as z };