@ordewell/core 0.7.0 → 0.7.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.
Files changed (55) hide show
  1. package/dist/{IFileSystem-DgpX0BU7.d.mts → IFileSystem-B5asBRDa.d.mts} +1 -1
  2. package/dist/{IFileSystem-D4ADfTrX.d.ts → IFileSystem-CbCmUDBn.d.ts} +1 -1
  3. package/dist/{ModeResolver-Cv01ZDd9.d.mts → ModeResolver-DcqAho4y.d.mts} +1 -1
  4. package/dist/{ModeResolver-BEcRAz1c.d.ts → ModeResolver-DtfhWeVL.d.ts} +1 -1
  5. package/dist/{Task-CoKhvBa1.d.mts → Task-BpzIbunq.d.mts} +146 -22
  6. package/dist/{Task-CoKhvBa1.d.ts → Task-BpzIbunq.d.ts} +146 -22
  7. package/dist/{chunk-LSGY7AIZ.mjs → chunk-AJ5KDO6V.mjs} +219 -77
  8. package/dist/chunk-AJ5KDO6V.mjs.map +1 -0
  9. package/dist/chunk-H5O74L77.mjs +185 -0
  10. package/dist/chunk-H5O74L77.mjs.map +1 -0
  11. package/dist/{chunk-YU4UKKKI.mjs → chunk-MZYZS7B3.mjs} +14 -186
  12. package/dist/chunk-MZYZS7B3.mjs.map +1 -0
  13. package/dist/{chunk-J3YSTPCE.mjs → chunk-OUIQWNS3.mjs} +8 -5
  14. package/dist/chunk-OUIQWNS3.mjs.map +1 -0
  15. package/dist/{chunk-N66ZHFGN.mjs → chunk-OYUSADFM.mjs} +11 -1
  16. package/dist/chunk-OYUSADFM.mjs.map +1 -0
  17. package/dist/{chunk-HPNUFBIT.mjs → chunk-V3JHS7AX.mjs} +9 -1
  18. package/dist/chunk-V3JHS7AX.mjs.map +1 -0
  19. package/dist/index.d.mts +909 -459
  20. package/dist/index.d.ts +909 -459
  21. package/dist/index.js +5671 -3776
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.mjs +5548 -3795
  24. package/dist/index.mjs.map +1 -1
  25. package/dist/order-labels.d.mts +15 -2
  26. package/dist/order-labels.d.ts +15 -2
  27. package/dist/order-labels.js +12 -2
  28. package/dist/order-labels.js.map +1 -1
  29. package/dist/order-labels.mjs +7 -3
  30. package/dist/{parsing-DMdOq-BV.d.ts → parsing-COFGUEWx.d.ts} +2 -2
  31. package/dist/{parsing-B4OCHH1_.d.mts → parsing-D0uo-Icd.d.mts} +2 -2
  32. package/dist/parsing.d.mts +3 -3
  33. package/dist/parsing.d.ts +3 -3
  34. package/dist/parsing.js +6 -3
  35. package/dist/parsing.js.map +1 -1
  36. package/dist/parsing.mjs +4 -3
  37. package/dist/{plan-utils-CD1Xu65s.d.mts → plan-utils-CdW3mxt5.d.mts} +226 -9
  38. package/dist/{plan-utils-BdYPRBno.d.ts → plan-utils-D4Z8UyLL.d.ts} +226 -9
  39. package/dist/plan-utils.d.mts +4 -3
  40. package/dist/plan-utils.d.ts +4 -3
  41. package/dist/plan-utils.js +210 -3
  42. package/dist/plan-utils.js.map +1 -1
  43. package/dist/plan-utils.mjs +44 -3
  44. package/dist/testing.d.mts +17 -5
  45. package/dist/testing.d.ts +17 -5
  46. package/dist/testing.js +50 -3
  47. package/dist/testing.js.map +1 -1
  48. package/dist/testing.mjs +50 -5
  49. package/dist/testing.mjs.map +1 -1
  50. package/package.json +1 -1
  51. package/dist/chunk-HPNUFBIT.mjs.map +0 -1
  52. package/dist/chunk-J3YSTPCE.mjs.map +0 -1
  53. package/dist/chunk-LSGY7AIZ.mjs.map +0 -1
  54. package/dist/chunk-N66ZHFGN.mjs.map +0 -1
  55. package/dist/chunk-YU4UKKKI.mjs.map +0 -1
@@ -1,5 +1,6 @@
1
- import { b7 as StructuredTurnEnd, b9 as SubagentOutcome, bz as UsageRecord, k as ApprovalDecision, b5 as StructuredEvent, aX as RunnerId, y as DiscoveredModel, bc as Task, a9 as LegacyPlanState, aN as QueuedMessage, bA as UsageTotals, bG as Verdict, be as TaskIsolation, bt as TaskTransport, r as AwaitingReason, aO as QueuedTaskMessage, T as IsolationHandoff, _ as IsolationMergeResult, aT as ResearchStep, l as ApprovalKind, q as ApprovalSource, aU as ResearchStepOutcome, w as ConversationMessage, aR as ResearchLogEntry, az as PlannerUsage } from './Task-CoKhvBa1.mjs';
2
- import { R as RunnerModeInfo } from './ModeResolver-Cv01ZDd9.mjs';
1
+ import { bc as StructuredTurnEnd, be as SubagentOutcome, bF as UsageRecord, k as ApprovalDecision, ba as StructuredEvent, b0 as RunnerId, z as DiscoveredModel, bi as Task, ac as LegacyPlanState, aR as QueuedMessage, bG as UsageTotals, bM as Verdict, bk as TaskIsolation, bz as TaskTransport, r as AwaitingReason, aS as QueuedTaskMessage, U as IsolationHandoff, $ as IsolationMergeResult, aY as ResearchStep, l as ApprovalKind, q as ApprovalSource, aZ as ResearchStepOutcome, w as ConversationMessage, aW as ResearchLogEntry, aC as PlannerUsage, bl as TaskIsolationState } from './Task-BpzIbunq.mjs';
2
+ import { R as RunnerModeInfo } from './ModeResolver-DcqAho4y.mjs';
3
+ import './order-labels.mjs';
3
4
 
4
5
  /**
5
6
  * One entry of a structured task's log (ADR-0018, P1): what a runner did,
@@ -11,11 +12,12 @@ import { R as RunnerModeInfo } from './ModeResolver-Cv01ZDd9.mjs';
11
12
  * without a format version.
12
13
  */
13
14
  type TaskLogEvent =
14
- /** A turn began by delivering `message`; `messageId` names it when it had been queued. */
15
+ /** A turn began by delivering `message`; `messageId` names it when it had been queued, `forced` when it was force sent. */
15
16
  {
16
17
  type: 'turn_start';
17
18
  message: string;
18
19
  messageId?: string;
20
+ forced?: boolean;
19
21
  } | {
20
22
  type: 'turn_end';
21
23
  reason: StructuredTurnEnd;
@@ -65,13 +67,37 @@ type TaskLogEvent =
65
67
  } | {
66
68
  type: 'usage';
67
69
  record: UsageRecord;
68
- } | {
70
+ }
71
+ /**
72
+ * Waiting in Ordewell's queue — again, for a message the runner was handed
73
+ * and let go of (ADR-0023, D4). `forced` moves it ahead of the rest (F2).
74
+ */
75
+ | {
69
76
  type: 'message_queued';
70
77
  messageId: string;
71
78
  text: string;
79
+ forced?: boolean;
72
80
  } | {
73
81
  type: 'message_removed';
74
82
  messageId: string;
83
+ } | {
84
+ type: 'message_undelivered';
85
+ messageId: string;
86
+ text: string;
87
+ }
88
+ /** The runner accepted a queued message into its running turn; it can no longer be taken back. */
89
+ | {
90
+ type: 'message_handed_over';
91
+ messageId: string;
92
+ }
93
+ /**
94
+ * The model read a message inside its running turn (ADR-0023, Q2), logged
95
+ * where it read it. A message that opened a turn is that turn's `turn_start`.
96
+ */
97
+ | {
98
+ type: 'message_delivered';
99
+ messageId: string;
100
+ text: string;
75
101
  }
76
102
  /** The agent's own words for a failed turn. */
77
103
  | {
@@ -263,6 +289,8 @@ type SerializedTaskStatus = {
263
289
  transport?: Pick<TaskTransport, 'kind' | 'fallback'>;
264
290
  /** What an `awaiting_user` task waits on, when it was saved (ADR-0018, W1). */
265
291
  awaitingReason?: AwaitingReason;
292
+ /** The whole question of the checkpoint the task waits at; absent when it waits at none. */
293
+ checkpoint?: string;
266
294
  /** Messages waiting for a structured task's turn to end, oldest first; absent when there are none. */
267
295
  queued?: QueuedTaskMessage[];
268
296
  /** Set when the task can be continued in its saved runner session (ADR-0018, K1); the id itself stays in the daemon. */
@@ -483,8 +511,6 @@ type SessionMessage =
483
511
  };
484
512
  } | {
485
513
  type: 'execution_stopped';
486
- } | {
487
- type: 'queue_ready';
488
514
  } | {
489
515
  type: 'task_updated';
490
516
  taskId: string;
@@ -578,7 +604,7 @@ type SessionNotice = {
578
604
  };
579
605
  type SessionBroadcaster = (msg: SessionMessage) => void;
580
606
  declare function serializeTask(t: Task): SerializedTask;
581
- declare function serializeTaskStatus(t: Task, idleSince?: string | null, isolation?: TaskIsolation | null, queued?: readonly QueuedTaskMessage[], awaitingApproval?: number, mergeGate?: readonly string[]): SerializedTaskStatus;
607
+ declare function serializeTaskStatus(t: Task, idleSince?: string | null, isolation?: TaskIsolation | null, queued?: readonly QueuedTaskMessage[], awaitingApproval?: number, mergeGate?: readonly string[], checkpoint?: string): SerializedTaskStatus;
582
608
  declare function serializePlan(plan: LegacyPlanState): SerializedPlan;
583
609
  declare function executionSummary(tasks: readonly Task[]): {
584
610
  total: number;
@@ -794,7 +820,7 @@ declare function fromTranscript(conversationHistory: readonly ConversationMessag
794
820
  * one at a time.
795
821
  */
796
822
  interface TaskLogView extends BlockList {
797
- /** Messages waiting for the running turn to end, oldest first. */
823
+ /** Messages not yet delivered, oldest first; `handedOver` marks the ones the runner already has. */
798
824
  readonly queued: readonly QueuedTaskMessage[];
799
825
  /** A turn is running. */
800
826
  readonly working: boolean;
@@ -925,4 +951,195 @@ declare function hasHiddenDetail(blocks: readonly DisplayBlock[]): boolean;
925
951
  /** The conversation line for a task starting, worded the same on every surface. */
926
952
  declare function taskStartedNotice(title: string, runner?: string): string;
927
953
 
928
- export { diffRows as $, type ApplyTaskOpsResult as A, type ToolBlock as B, CHECKPOINT_TRUNCATE_LENGTH as C, type DiffRow as D, EMPTY_CONVERSATION as E, type ToolHeadline as F, type GatedConversation as G, type ToolStatus as H, type TurnGate as I, aheadOfDraft as J, applyTaskOps as K, type LocalEntry as L, type MergeGateView as M, NO_TURN as N, type OutputPreview as O, type PlanBlock as P, canMergeTasks as Q, canSetDependencies as R, type SerializedPlan as S, type TakenPrompt as T, type UsageBlock as U, canSplitTask as V, capConflictFiles as W, classifyOutcome as X, coalesceTaskLog as Y, dependencyCandidates as Z, dependentsOf as _, type ApprovalBlock as a, diffStat as a0, diffSummary as a1, digestTaskLog as a2, drainNext as a3, executionSummary as a4, followTurn as a5, fromTranscript as a6, hasHiddenDetail as a7, holdPrompt as a8, outputLines as a9, outputPreview as aa, parseTaskOpsJson as ab, reduceConversation as ac, reduceTaskLog as ad, replayTaskLog as ae, runnerToolSubject as af, serializePlan as ag, serializeTask as ah, serializeTaskStatus as ai, stopTurn as aj, summarizeToolCall as ak, taskStartedNotice as al, textHasTaskOps as am, toTaskLogEvent as an, toolHeadline as ao, trimToolOutput as ap, truncateCheckpointSummary as aq, unsendAll as ar, unsendLatest as as, type ApprovalStatus as b, type ConversationInput as c, type ConversationView as d, type DiffRowKind as e, type DiffStat as f, type DisplayBlock as g, EMPTY_HOLD as h, EMPTY_TASK_LOG as i, type MessageBlock as j, type MessageRole as k, type PlanMarkerStatus as l, type PromptHold as m, type SerializedTask as n, type SerializedTaskStatus as o, type SessionBroadcaster as p, type SessionMessage as q, type SessionNotice as r, type SubagentBlock as s, type SubagentChild as t, type SubagentStatus as u, type TaskLogEvent as v, type TaskLogView as w, type TaskOp as x, type TaskRef as y, type ThinkingDisplayBlock as z };
954
+ /**
955
+ * What a row's status means to a reader, before any surface picks a word,
956
+ * icon or colour for it. `quiet` is a running task whose runner has printed
957
+ * nothing for a while — the status is still `in_progress`, so only the row,
958
+ * never the store, tells the two apart.
959
+ */
960
+ type TaskStatusKind = 'todo' | 'running' | 'quiet' | 'awaiting' | 'blocked' | 'failed' | 'done';
961
+ /** A task with a runner live behind it. `in_progress` is the store's own status. */
962
+ declare const isTaskRunning: (task: {
963
+ status: string;
964
+ }) => boolean;
965
+ /** Statuses of a task that has not started: what can still be started by hand, or flipped between change and ops (ADR-0020). */
966
+ declare const NOT_STARTED: ReadonlySet<string>;
967
+ declare function taskStatusKind(task: {
968
+ status: string;
969
+ idleSince?: string | null;
970
+ }): TaskStatusKind;
971
+ /** What an awaiting_user task waits on (ADR-0018, W1); null when no reason was saved. */
972
+ declare function awaitingLabel(task: {
973
+ status: string;
974
+ awaitingReason?: AwaitingReason;
975
+ }): string | null;
976
+ /** Runner requests a task waits on (ADR-0018, A1); null when none do. */
977
+ declare function approvalLabel(count: number | undefined): string | null;
978
+
979
+ /** What a user can do to one task from its row. */
980
+ type TaskRowAction = 'cancel' | 'skip' | 'force-start' | 'complete' | 'uncomplete';
981
+ /** A subtask runs with its parent, so its row offers a different set than a top-level task's. */
982
+ type TaskRowPlacement = 'task' | 'subtask';
983
+ interface ActionSubject {
984
+ status: string;
985
+ type: 'ai' | 'user';
986
+ }
987
+ /** The actions a task's row offers while a plan runs, in the order they are laid out. */
988
+ declare function taskRowActions(task: ActionSubject, placement?: TaskRowPlacement): TaskRowAction[];
989
+ /**
990
+ * One toggle in both directions: a done task is taken back, anything else is
991
+ * marked done. A second control for the reverse is one nobody remembers.
992
+ */
993
+ declare function markAction(task: {
994
+ status: string;
995
+ }): 'complete' | 'uncomplete';
996
+ /**
997
+ * The mark an action asks the session for, or null when it is not a mark.
998
+ * Skip has no request of its own: a skipped task is marked complete, so the
999
+ * run moves on past it.
1000
+ */
1001
+ declare function markRequestFor(action: string): 'complete' | 'uncomplete' | null;
1002
+ /** Change versus ops can still be flipped (ADR-0020): an AI task that has not started. */
1003
+ declare function opsEditable(task: ActionSubject): boolean;
1004
+
1005
+ /**
1006
+ * A task as both surfaces hold it, with the live state each tracks beside it
1007
+ * (silence, approvals, isolation, the merge gate). Structural, because the TUI
1008
+ * projects tasks into its own shape.
1009
+ */
1010
+ interface TaskRowSubject {
1011
+ id: string;
1012
+ order: number;
1013
+ type: 'ai' | 'user';
1014
+ status: string;
1015
+ dependencies: readonly string[];
1016
+ taskMode?: string;
1017
+ ops?: boolean;
1018
+ idleSince?: string | null;
1019
+ awaitingReason?: AwaitingReason;
1020
+ awaitingApproval?: number;
1021
+ isolation?: TaskRowIsolation | null;
1022
+ mergeGate?: readonly string[];
1023
+ forcedPastGate?: readonly string[];
1024
+ }
1025
+ interface TaskRowIsolation {
1026
+ state: TaskIsolationState;
1027
+ repos?: string[];
1028
+ conflictRepo?: string;
1029
+ conflictFiles?: string[];
1030
+ repair?: {
1031
+ attempt: number;
1032
+ limit: number;
1033
+ };
1034
+ repairedFiles?: string[];
1035
+ }
1036
+ interface TaskRowContext {
1037
+ /** Set for a subtask: it is labelled by its dotted order. */
1038
+ parent?: {
1039
+ order: number;
1040
+ } | null;
1041
+ /** Which action set the row offers; a row with a parent is a subtask's unless told otherwise. */
1042
+ placement?: TaskRowPlacement;
1043
+ /** Order of each task a dependency or gate may name; one missing from it is shown by id. */
1044
+ orderOf?: ReadonlyMap<string, number>;
1045
+ /** The modes the task's runner declares; autonomy is a tag on one of them (ADR-0001). */
1046
+ modes?: readonly {
1047
+ id: string;
1048
+ autonomous?: boolean;
1049
+ }[];
1050
+ }
1051
+ /** Whether the row stands for an AI task, a manual one, or an ops task (ADR-0020). */
1052
+ type TaskRowKind = 'ai' | 'user' | 'ops';
1053
+ interface TaskRowView {
1054
+ /** "2", or "2.1" for a subtask. */
1055
+ orderLabel: string;
1056
+ kind: TaskRowKind;
1057
+ status: TaskStatusKind;
1058
+ /** A runner is live behind it — `quiet` included. */
1059
+ running: boolean;
1060
+ /** What an awaiting task waits on, in sentence case; null when nothing was saved. */
1061
+ awaiting: string | null;
1062
+ /** Runner requests waiting on the user, in sentence case; null when none do. */
1063
+ approvals: string | null;
1064
+ /** The task's mode is tagged autonomous: it runs without permission prompts. */
1065
+ autonomous: boolean;
1066
+ /** The repos its isolated work changed, by path; empty for a group of one. */
1067
+ repos: string[];
1068
+ /** Integration stopped on a conflict: the one isolation state that needs the user. */
1069
+ conflict: {
1070
+ repo: string | null;
1071
+ files: string | null;
1072
+ } | null;
1073
+ /** A conflict repair in flight (ADR-0015) — progress, not a blocker. */
1074
+ repairing: {
1075
+ files: string | null;
1076
+ attempt: {
1077
+ attempt: number;
1078
+ limit: number;
1079
+ } | null;
1080
+ } | null;
1081
+ /** The files a conflict repair was started for; `landed` once the task is integrated. */
1082
+ repaired: {
1083
+ files: string;
1084
+ landed: boolean;
1085
+ } | null;
1086
+ /** The dependencies, by reference, whose work is not merged into the user's branch yet. */
1087
+ mergeGate: string[] | null;
1088
+ /** An ops task changed tracked files in the user's checkout and nothing was committed. */
1089
+ opsChangedFiles: boolean;
1090
+ /** The dependencies, by title, a force start went past the merge gate of. */
1091
+ forcedPastGate: readonly string[] | null;
1092
+ /** The task's dependencies, by reference. */
1093
+ dependencies: string[];
1094
+ /** What the row offers while a plan runs. */
1095
+ actions: TaskRowAction[];
1096
+ /** The one mark its toggle sets. */
1097
+ mark: 'complete' | 'uncomplete';
1098
+ opsEditable: boolean;
1099
+ }
1100
+ /** The repos a task changed, for a row that names them; none for a group of one. */
1101
+ declare const namedRepos: (repos: readonly string[] | undefined) => string[];
1102
+ /**
1103
+ * Everything a plan row says about one task, decided once: each surface picks
1104
+ * its own words, glyphs and casing for these facts, and derives none of them.
1105
+ */
1106
+ declare function taskRowView(task: TaskRowSubject, context?: TaskRowContext): TaskRowView;
1107
+
1108
+ interface Named {
1109
+ id: string;
1110
+ order: number;
1111
+ title: string;
1112
+ subtasks?: readonly Named[];
1113
+ }
1114
+ /** Each id as "#N title", subtasks included; one the plan no longer holds stays a bare id. */
1115
+ declare function titledRefs(ids: readonly string[], tasks: readonly Named[]): string[];
1116
+ /**
1117
+ * What removing a task does to the tasks that depend on it, or null when none
1118
+ * do. Named rather than counted: the removal rewrites their dependency lists,
1119
+ * and a bare "Remove task?" would hide that.
1120
+ */
1121
+ declare function dependentsNotice(dependents: readonly {
1122
+ order: number;
1123
+ title: string;
1124
+ }[]): string | null;
1125
+ /**
1126
+ * What a start past a merge gate is asked with (ADR-0020): the work the task
1127
+ * would act without, named. `subject` is how the asking surface refers to the
1128
+ * task — "It" under a title that already names it.
1129
+ */
1130
+ declare function pastGateConfirmation(unmerged: readonly string[], subject?: string): string;
1131
+ interface NewTaskFields {
1132
+ title: string;
1133
+ description: string;
1134
+ prompt: string;
1135
+ type: 'ai';
1136
+ }
1137
+ /**
1138
+ * What a hand-added task starts as: an AI task whose description is its title
1139
+ * and whose prompt, unless one was typed, is too. Null for a title with nothing
1140
+ * in it, rather than a nameless task. Assignments are left for the session to
1141
+ * derive from the runner's catalog.
1142
+ */
1143
+ declare function newTaskFields(title: string, prompt?: string): NewTaskFields | null;
1144
+
1145
+ export { type UsageBlock as $, type ApplyTaskOpsResult as A, type TaskOp as B, CHECKPOINT_TRUNCATE_LENGTH as C, type DiffRow as D, EMPTY_CONVERSATION as E, type TaskRef as F, type GatedConversation as G, type TaskRowAction as H, type TaskRowContext as I, type TaskRowIsolation as J, type TaskRowKind as K, type LocalEntry as L, type MergeGateView as M, NOT_STARTED as N, type OutputPreview as O, type PlanBlock as P, type TaskRowPlacement as Q, type TaskRowSubject as R, type SerializedPlan as S, type TakenPrompt as T, type TaskRowView as U, type TaskStatusKind as V, type ThinkingDisplayBlock as W, type ToolBlock as X, type ToolHeadline as Y, type ToolStatus as Z, type TurnGate as _, type ApprovalBlock as a, aheadOfDraft as a0, applyTaskOps as a1, approvalLabel as a2, awaitingLabel as a3, canMergeTasks as a4, canSetDependencies as a5, canSplitTask as a6, capConflictFiles as a7, classifyOutcome as a8, coalesceTaskLog as a9, runnerToolSubject as aA, serializePlan as aB, serializeTask as aC, serializeTaskStatus as aD, stopTurn as aE, summarizeToolCall as aF, taskRowActions as aG, taskRowView as aH, taskStartedNotice as aI, taskStatusKind as aJ, textHasTaskOps as aK, titledRefs as aL, toTaskLogEvent as aM, toolHeadline as aN, trimToolOutput as aO, truncateCheckpointSummary as aP, unsendAll as aQ, unsendLatest as aR, dependencyCandidates as aa, dependentsNotice as ab, dependentsOf as ac, diffRows as ad, diffStat as ae, diffSummary as af, digestTaskLog as ag, drainNext as ah, executionSummary as ai, followTurn as aj, fromTranscript as ak, hasHiddenDetail as al, holdPrompt as am, isTaskRunning as an, markAction as ao, markRequestFor as ap, namedRepos as aq, newTaskFields as ar, opsEditable as as, outputLines as at, outputPreview as au, parseTaskOpsJson as av, pastGateConfirmation as aw, reduceConversation as ax, reduceTaskLog as ay, replayTaskLog as az, type ApprovalStatus as b, type ConversationInput as c, type ConversationView as d, type DiffRowKind as e, type DiffStat as f, type DisplayBlock as g, EMPTY_HOLD as h, EMPTY_TASK_LOG as i, type EditCatalog as j, type MessageBlock as k, type MessageRole as l, NO_TURN as m, type NewTaskFields as n, type PlanMarkerStatus as o, type PromptHold as p, type SerializedTask as q, type SerializedTaskStatus as r, type SessionBroadcaster as s, type SessionMessage as t, type SessionNotice as u, type SubagentBlock as v, type SubagentChild as w, type SubagentStatus as x, type TaskLogEvent as y, type TaskLogView as z };
@@ -1,5 +1,6 @@
1
- import { b7 as StructuredTurnEnd, b9 as SubagentOutcome, bz as UsageRecord, k as ApprovalDecision, b5 as StructuredEvent, aX as RunnerId, y as DiscoveredModel, bc as Task, a9 as LegacyPlanState, aN as QueuedMessage, bA as UsageTotals, bG as Verdict, be as TaskIsolation, bt as TaskTransport, r as AwaitingReason, aO as QueuedTaskMessage, T as IsolationHandoff, _ as IsolationMergeResult, aT as ResearchStep, l as ApprovalKind, q as ApprovalSource, aU as ResearchStepOutcome, w as ConversationMessage, aR as ResearchLogEntry, az as PlannerUsage } from './Task-CoKhvBa1.js';
2
- import { R as RunnerModeInfo } from './ModeResolver-BEcRAz1c.js';
1
+ import { bc as StructuredTurnEnd, be as SubagentOutcome, bF as UsageRecord, k as ApprovalDecision, ba as StructuredEvent, b0 as RunnerId, z as DiscoveredModel, bi as Task, ac as LegacyPlanState, aR as QueuedMessage, bG as UsageTotals, bM as Verdict, bk as TaskIsolation, bz as TaskTransport, r as AwaitingReason, aS as QueuedTaskMessage, U as IsolationHandoff, $ as IsolationMergeResult, aY as ResearchStep, l as ApprovalKind, q as ApprovalSource, aZ as ResearchStepOutcome, w as ConversationMessage, aW as ResearchLogEntry, aC as PlannerUsage, bl as TaskIsolationState } from './Task-BpzIbunq.js';
2
+ import { R as RunnerModeInfo } from './ModeResolver-DtfhWeVL.js';
3
+ import './order-labels.js';
3
4
 
4
5
  /**
5
6
  * One entry of a structured task's log (ADR-0018, P1): what a runner did,
@@ -11,11 +12,12 @@ import { R as RunnerModeInfo } from './ModeResolver-BEcRAz1c.js';
11
12
  * without a format version.
12
13
  */
13
14
  type TaskLogEvent =
14
- /** A turn began by delivering `message`; `messageId` names it when it had been queued. */
15
+ /** A turn began by delivering `message`; `messageId` names it when it had been queued, `forced` when it was force sent. */
15
16
  {
16
17
  type: 'turn_start';
17
18
  message: string;
18
19
  messageId?: string;
20
+ forced?: boolean;
19
21
  } | {
20
22
  type: 'turn_end';
21
23
  reason: StructuredTurnEnd;
@@ -65,13 +67,37 @@ type TaskLogEvent =
65
67
  } | {
66
68
  type: 'usage';
67
69
  record: UsageRecord;
68
- } | {
70
+ }
71
+ /**
72
+ * Waiting in Ordewell's queue — again, for a message the runner was handed
73
+ * and let go of (ADR-0023, D4). `forced` moves it ahead of the rest (F2).
74
+ */
75
+ | {
69
76
  type: 'message_queued';
70
77
  messageId: string;
71
78
  text: string;
79
+ forced?: boolean;
72
80
  } | {
73
81
  type: 'message_removed';
74
82
  messageId: string;
83
+ } | {
84
+ type: 'message_undelivered';
85
+ messageId: string;
86
+ text: string;
87
+ }
88
+ /** The runner accepted a queued message into its running turn; it can no longer be taken back. */
89
+ | {
90
+ type: 'message_handed_over';
91
+ messageId: string;
92
+ }
93
+ /**
94
+ * The model read a message inside its running turn (ADR-0023, Q2), logged
95
+ * where it read it. A message that opened a turn is that turn's `turn_start`.
96
+ */
97
+ | {
98
+ type: 'message_delivered';
99
+ messageId: string;
100
+ text: string;
75
101
  }
76
102
  /** The agent's own words for a failed turn. */
77
103
  | {
@@ -263,6 +289,8 @@ type SerializedTaskStatus = {
263
289
  transport?: Pick<TaskTransport, 'kind' | 'fallback'>;
264
290
  /** What an `awaiting_user` task waits on, when it was saved (ADR-0018, W1). */
265
291
  awaitingReason?: AwaitingReason;
292
+ /** The whole question of the checkpoint the task waits at; absent when it waits at none. */
293
+ checkpoint?: string;
266
294
  /** Messages waiting for a structured task's turn to end, oldest first; absent when there are none. */
267
295
  queued?: QueuedTaskMessage[];
268
296
  /** Set when the task can be continued in its saved runner session (ADR-0018, K1); the id itself stays in the daemon. */
@@ -483,8 +511,6 @@ type SessionMessage =
483
511
  };
484
512
  } | {
485
513
  type: 'execution_stopped';
486
- } | {
487
- type: 'queue_ready';
488
514
  } | {
489
515
  type: 'task_updated';
490
516
  taskId: string;
@@ -578,7 +604,7 @@ type SessionNotice = {
578
604
  };
579
605
  type SessionBroadcaster = (msg: SessionMessage) => void;
580
606
  declare function serializeTask(t: Task): SerializedTask;
581
- declare function serializeTaskStatus(t: Task, idleSince?: string | null, isolation?: TaskIsolation | null, queued?: readonly QueuedTaskMessage[], awaitingApproval?: number, mergeGate?: readonly string[]): SerializedTaskStatus;
607
+ declare function serializeTaskStatus(t: Task, idleSince?: string | null, isolation?: TaskIsolation | null, queued?: readonly QueuedTaskMessage[], awaitingApproval?: number, mergeGate?: readonly string[], checkpoint?: string): SerializedTaskStatus;
582
608
  declare function serializePlan(plan: LegacyPlanState): SerializedPlan;
583
609
  declare function executionSummary(tasks: readonly Task[]): {
584
610
  total: number;
@@ -794,7 +820,7 @@ declare function fromTranscript(conversationHistory: readonly ConversationMessag
794
820
  * one at a time.
795
821
  */
796
822
  interface TaskLogView extends BlockList {
797
- /** Messages waiting for the running turn to end, oldest first. */
823
+ /** Messages not yet delivered, oldest first; `handedOver` marks the ones the runner already has. */
798
824
  readonly queued: readonly QueuedTaskMessage[];
799
825
  /** A turn is running. */
800
826
  readonly working: boolean;
@@ -925,4 +951,195 @@ declare function hasHiddenDetail(blocks: readonly DisplayBlock[]): boolean;
925
951
  /** The conversation line for a task starting, worded the same on every surface. */
926
952
  declare function taskStartedNotice(title: string, runner?: string): string;
927
953
 
928
- export { diffRows as $, type ApplyTaskOpsResult as A, type ToolBlock as B, CHECKPOINT_TRUNCATE_LENGTH as C, type DiffRow as D, EMPTY_CONVERSATION as E, type ToolHeadline as F, type GatedConversation as G, type ToolStatus as H, type TurnGate as I, aheadOfDraft as J, applyTaskOps as K, type LocalEntry as L, type MergeGateView as M, NO_TURN as N, type OutputPreview as O, type PlanBlock as P, canMergeTasks as Q, canSetDependencies as R, type SerializedPlan as S, type TakenPrompt as T, type UsageBlock as U, canSplitTask as V, capConflictFiles as W, classifyOutcome as X, coalesceTaskLog as Y, dependencyCandidates as Z, dependentsOf as _, type ApprovalBlock as a, diffStat as a0, diffSummary as a1, digestTaskLog as a2, drainNext as a3, executionSummary as a4, followTurn as a5, fromTranscript as a6, hasHiddenDetail as a7, holdPrompt as a8, outputLines as a9, outputPreview as aa, parseTaskOpsJson as ab, reduceConversation as ac, reduceTaskLog as ad, replayTaskLog as ae, runnerToolSubject as af, serializePlan as ag, serializeTask as ah, serializeTaskStatus as ai, stopTurn as aj, summarizeToolCall as ak, taskStartedNotice as al, textHasTaskOps as am, toTaskLogEvent as an, toolHeadline as ao, trimToolOutput as ap, truncateCheckpointSummary as aq, unsendAll as ar, unsendLatest as as, type ApprovalStatus as b, type ConversationInput as c, type ConversationView as d, type DiffRowKind as e, type DiffStat as f, type DisplayBlock as g, EMPTY_HOLD as h, EMPTY_TASK_LOG as i, type MessageBlock as j, type MessageRole as k, type PlanMarkerStatus as l, type PromptHold as m, type SerializedTask as n, type SerializedTaskStatus as o, type SessionBroadcaster as p, type SessionMessage as q, type SessionNotice as r, type SubagentBlock as s, type SubagentChild as t, type SubagentStatus as u, type TaskLogEvent as v, type TaskLogView as w, type TaskOp as x, type TaskRef as y, type ThinkingDisplayBlock as z };
954
+ /**
955
+ * What a row's status means to a reader, before any surface picks a word,
956
+ * icon or colour for it. `quiet` is a running task whose runner has printed
957
+ * nothing for a while — the status is still `in_progress`, so only the row,
958
+ * never the store, tells the two apart.
959
+ */
960
+ type TaskStatusKind = 'todo' | 'running' | 'quiet' | 'awaiting' | 'blocked' | 'failed' | 'done';
961
+ /** A task with a runner live behind it. `in_progress` is the store's own status. */
962
+ declare const isTaskRunning: (task: {
963
+ status: string;
964
+ }) => boolean;
965
+ /** Statuses of a task that has not started: what can still be started by hand, or flipped between change and ops (ADR-0020). */
966
+ declare const NOT_STARTED: ReadonlySet<string>;
967
+ declare function taskStatusKind(task: {
968
+ status: string;
969
+ idleSince?: string | null;
970
+ }): TaskStatusKind;
971
+ /** What an awaiting_user task waits on (ADR-0018, W1); null when no reason was saved. */
972
+ declare function awaitingLabel(task: {
973
+ status: string;
974
+ awaitingReason?: AwaitingReason;
975
+ }): string | null;
976
+ /** Runner requests a task waits on (ADR-0018, A1); null when none do. */
977
+ declare function approvalLabel(count: number | undefined): string | null;
978
+
979
+ /** What a user can do to one task from its row. */
980
+ type TaskRowAction = 'cancel' | 'skip' | 'force-start' | 'complete' | 'uncomplete';
981
+ /** A subtask runs with its parent, so its row offers a different set than a top-level task's. */
982
+ type TaskRowPlacement = 'task' | 'subtask';
983
+ interface ActionSubject {
984
+ status: string;
985
+ type: 'ai' | 'user';
986
+ }
987
+ /** The actions a task's row offers while a plan runs, in the order they are laid out. */
988
+ declare function taskRowActions(task: ActionSubject, placement?: TaskRowPlacement): TaskRowAction[];
989
+ /**
990
+ * One toggle in both directions: a done task is taken back, anything else is
991
+ * marked done. A second control for the reverse is one nobody remembers.
992
+ */
993
+ declare function markAction(task: {
994
+ status: string;
995
+ }): 'complete' | 'uncomplete';
996
+ /**
997
+ * The mark an action asks the session for, or null when it is not a mark.
998
+ * Skip has no request of its own: a skipped task is marked complete, so the
999
+ * run moves on past it.
1000
+ */
1001
+ declare function markRequestFor(action: string): 'complete' | 'uncomplete' | null;
1002
+ /** Change versus ops can still be flipped (ADR-0020): an AI task that has not started. */
1003
+ declare function opsEditable(task: ActionSubject): boolean;
1004
+
1005
+ /**
1006
+ * A task as both surfaces hold it, with the live state each tracks beside it
1007
+ * (silence, approvals, isolation, the merge gate). Structural, because the TUI
1008
+ * projects tasks into its own shape.
1009
+ */
1010
+ interface TaskRowSubject {
1011
+ id: string;
1012
+ order: number;
1013
+ type: 'ai' | 'user';
1014
+ status: string;
1015
+ dependencies: readonly string[];
1016
+ taskMode?: string;
1017
+ ops?: boolean;
1018
+ idleSince?: string | null;
1019
+ awaitingReason?: AwaitingReason;
1020
+ awaitingApproval?: number;
1021
+ isolation?: TaskRowIsolation | null;
1022
+ mergeGate?: readonly string[];
1023
+ forcedPastGate?: readonly string[];
1024
+ }
1025
+ interface TaskRowIsolation {
1026
+ state: TaskIsolationState;
1027
+ repos?: string[];
1028
+ conflictRepo?: string;
1029
+ conflictFiles?: string[];
1030
+ repair?: {
1031
+ attempt: number;
1032
+ limit: number;
1033
+ };
1034
+ repairedFiles?: string[];
1035
+ }
1036
+ interface TaskRowContext {
1037
+ /** Set for a subtask: it is labelled by its dotted order. */
1038
+ parent?: {
1039
+ order: number;
1040
+ } | null;
1041
+ /** Which action set the row offers; a row with a parent is a subtask's unless told otherwise. */
1042
+ placement?: TaskRowPlacement;
1043
+ /** Order of each task a dependency or gate may name; one missing from it is shown by id. */
1044
+ orderOf?: ReadonlyMap<string, number>;
1045
+ /** The modes the task's runner declares; autonomy is a tag on one of them (ADR-0001). */
1046
+ modes?: readonly {
1047
+ id: string;
1048
+ autonomous?: boolean;
1049
+ }[];
1050
+ }
1051
+ /** Whether the row stands for an AI task, a manual one, or an ops task (ADR-0020). */
1052
+ type TaskRowKind = 'ai' | 'user' | 'ops';
1053
+ interface TaskRowView {
1054
+ /** "2", or "2.1" for a subtask. */
1055
+ orderLabel: string;
1056
+ kind: TaskRowKind;
1057
+ status: TaskStatusKind;
1058
+ /** A runner is live behind it — `quiet` included. */
1059
+ running: boolean;
1060
+ /** What an awaiting task waits on, in sentence case; null when nothing was saved. */
1061
+ awaiting: string | null;
1062
+ /** Runner requests waiting on the user, in sentence case; null when none do. */
1063
+ approvals: string | null;
1064
+ /** The task's mode is tagged autonomous: it runs without permission prompts. */
1065
+ autonomous: boolean;
1066
+ /** The repos its isolated work changed, by path; empty for a group of one. */
1067
+ repos: string[];
1068
+ /** Integration stopped on a conflict: the one isolation state that needs the user. */
1069
+ conflict: {
1070
+ repo: string | null;
1071
+ files: string | null;
1072
+ } | null;
1073
+ /** A conflict repair in flight (ADR-0015) — progress, not a blocker. */
1074
+ repairing: {
1075
+ files: string | null;
1076
+ attempt: {
1077
+ attempt: number;
1078
+ limit: number;
1079
+ } | null;
1080
+ } | null;
1081
+ /** The files a conflict repair was started for; `landed` once the task is integrated. */
1082
+ repaired: {
1083
+ files: string;
1084
+ landed: boolean;
1085
+ } | null;
1086
+ /** The dependencies, by reference, whose work is not merged into the user's branch yet. */
1087
+ mergeGate: string[] | null;
1088
+ /** An ops task changed tracked files in the user's checkout and nothing was committed. */
1089
+ opsChangedFiles: boolean;
1090
+ /** The dependencies, by title, a force start went past the merge gate of. */
1091
+ forcedPastGate: readonly string[] | null;
1092
+ /** The task's dependencies, by reference. */
1093
+ dependencies: string[];
1094
+ /** What the row offers while a plan runs. */
1095
+ actions: TaskRowAction[];
1096
+ /** The one mark its toggle sets. */
1097
+ mark: 'complete' | 'uncomplete';
1098
+ opsEditable: boolean;
1099
+ }
1100
+ /** The repos a task changed, for a row that names them; none for a group of one. */
1101
+ declare const namedRepos: (repos: readonly string[] | undefined) => string[];
1102
+ /**
1103
+ * Everything a plan row says about one task, decided once: each surface picks
1104
+ * its own words, glyphs and casing for these facts, and derives none of them.
1105
+ */
1106
+ declare function taskRowView(task: TaskRowSubject, context?: TaskRowContext): TaskRowView;
1107
+
1108
+ interface Named {
1109
+ id: string;
1110
+ order: number;
1111
+ title: string;
1112
+ subtasks?: readonly Named[];
1113
+ }
1114
+ /** Each id as "#N title", subtasks included; one the plan no longer holds stays a bare id. */
1115
+ declare function titledRefs(ids: readonly string[], tasks: readonly Named[]): string[];
1116
+ /**
1117
+ * What removing a task does to the tasks that depend on it, or null when none
1118
+ * do. Named rather than counted: the removal rewrites their dependency lists,
1119
+ * and a bare "Remove task?" would hide that.
1120
+ */
1121
+ declare function dependentsNotice(dependents: readonly {
1122
+ order: number;
1123
+ title: string;
1124
+ }[]): string | null;
1125
+ /**
1126
+ * What a start past a merge gate is asked with (ADR-0020): the work the task
1127
+ * would act without, named. `subject` is how the asking surface refers to the
1128
+ * task — "It" under a title that already names it.
1129
+ */
1130
+ declare function pastGateConfirmation(unmerged: readonly string[], subject?: string): string;
1131
+ interface NewTaskFields {
1132
+ title: string;
1133
+ description: string;
1134
+ prompt: string;
1135
+ type: 'ai';
1136
+ }
1137
+ /**
1138
+ * What a hand-added task starts as: an AI task whose description is its title
1139
+ * and whose prompt, unless one was typed, is too. Null for a title with nothing
1140
+ * in it, rather than a nameless task. Assignments are left for the session to
1141
+ * derive from the runner's catalog.
1142
+ */
1143
+ declare function newTaskFields(title: string, prompt?: string): NewTaskFields | null;
1144
+
1145
+ export { type UsageBlock as $, type ApplyTaskOpsResult as A, type TaskOp as B, CHECKPOINT_TRUNCATE_LENGTH as C, type DiffRow as D, EMPTY_CONVERSATION as E, type TaskRef as F, type GatedConversation as G, type TaskRowAction as H, type TaskRowContext as I, type TaskRowIsolation as J, type TaskRowKind as K, type LocalEntry as L, type MergeGateView as M, NOT_STARTED as N, type OutputPreview as O, type PlanBlock as P, type TaskRowPlacement as Q, type TaskRowSubject as R, type SerializedPlan as S, type TakenPrompt as T, type TaskRowView as U, type TaskStatusKind as V, type ThinkingDisplayBlock as W, type ToolBlock as X, type ToolHeadline as Y, type ToolStatus as Z, type TurnGate as _, type ApprovalBlock as a, aheadOfDraft as a0, applyTaskOps as a1, approvalLabel as a2, awaitingLabel as a3, canMergeTasks as a4, canSetDependencies as a5, canSplitTask as a6, capConflictFiles as a7, classifyOutcome as a8, coalesceTaskLog as a9, runnerToolSubject as aA, serializePlan as aB, serializeTask as aC, serializeTaskStatus as aD, stopTurn as aE, summarizeToolCall as aF, taskRowActions as aG, taskRowView as aH, taskStartedNotice as aI, taskStatusKind as aJ, textHasTaskOps as aK, titledRefs as aL, toTaskLogEvent as aM, toolHeadline as aN, trimToolOutput as aO, truncateCheckpointSummary as aP, unsendAll as aQ, unsendLatest as aR, dependencyCandidates as aa, dependentsNotice as ab, dependentsOf as ac, diffRows as ad, diffStat as ae, diffSummary as af, digestTaskLog as ag, drainNext as ah, executionSummary as ai, followTurn as aj, fromTranscript as ak, hasHiddenDetail as al, holdPrompt as am, isTaskRunning as an, markAction as ao, markRequestFor as ap, namedRepos as aq, newTaskFields as ar, opsEditable as as, outputLines as at, outputPreview as au, parseTaskOpsJson as av, pastGateConfirmation as aw, reduceConversation as ax, reduceTaskLog as ay, replayTaskLog as az, type ApprovalStatus as b, type ConversationInput as c, type ConversationView as d, type DiffRowKind as e, type DiffStat as f, type DisplayBlock as g, EMPTY_HOLD as h, EMPTY_TASK_LOG as i, type EditCatalog as j, type MessageBlock as k, type MessageRole as l, NO_TURN as m, type NewTaskFields as n, type PlanMarkerStatus as o, type PromptHold as p, type SerializedTask as q, type SerializedTaskStatus as r, type SessionBroadcaster as s, type SessionMessage as t, type SessionNotice as u, type SubagentBlock as v, type SubagentChild as w, type SubagentStatus as x, type TaskLogEvent as y, type TaskLogView as z };
@@ -1,6 +1,7 @@
1
- export { a as ApprovalBlock, b as ApprovalStatus, C as CHECKPOINT_TRUNCATE_LENGTH, c as ConversationInput, d as ConversationView, D as DiffRow, e as DiffRowKind, f as DiffStat, g as DisplayBlock, E as EMPTY_CONVERSATION, h as EMPTY_HOLD, i as EMPTY_TASK_LOG, G as GatedConversation, L as LocalEntry, j as MessageBlock, k as MessageRole, N as NO_TURN, O as OutputPreview, P as PlanBlock, l as PlanMarkerStatus, m as PromptHold, s as SubagentBlock, t as SubagentChild, u as SubagentStatus, T as TakenPrompt, w as TaskLogView, y as TaskRef, z as ThinkingDisplayBlock, B as ToolBlock, F as ToolHeadline, H as ToolStatus, I as TurnGate, U as UsageBlock, J as aheadOfDraft, Q as canMergeTasks, R as canSetDependencies, V as canSplitTask, W as capConflictFiles, Z as dependencyCandidates, _ as dependentsOf, $ as diffRows, a0 as diffStat, a1 as diffSummary, a3 as drainNext, a5 as followTurn, a6 as fromTranscript, a7 as hasHiddenDetail, a8 as holdPrompt, a9 as outputLines, aa as outputPreview, ac as reduceConversation, ad as reduceTaskLog, ae as replayTaskLog, af as runnerToolSubject, aj as stopTurn, ak as summarizeToolCall, al as taskStartedNotice, ao as toolHeadline, aq as truncateCheckpointSummary, ar as unsendAll, as as unsendLatest } from './plan-utils-CD1Xu65s.mjs';
2
- import './Task-CoKhvBa1.mjs';
1
+ export { a as ApprovalBlock, b as ApprovalStatus, C as CHECKPOINT_TRUNCATE_LENGTH, c as ConversationInput, d as ConversationView, D as DiffRow, e as DiffRowKind, f as DiffStat, g as DisplayBlock, E as EMPTY_CONVERSATION, h as EMPTY_HOLD, i as EMPTY_TASK_LOG, G as GatedConversation, L as LocalEntry, k as MessageBlock, l as MessageRole, N as NOT_STARTED, m as NO_TURN, n as NewTaskFields, O as OutputPreview, P as PlanBlock, o as PlanMarkerStatus, p as PromptHold, v as SubagentBlock, w as SubagentChild, x as SubagentStatus, T as TakenPrompt, z as TaskLogView, F as TaskRef, H as TaskRowAction, I as TaskRowContext, J as TaskRowIsolation, K as TaskRowKind, Q as TaskRowPlacement, R as TaskRowSubject, U as TaskRowView, V as TaskStatusKind, W as ThinkingDisplayBlock, X as ToolBlock, Y as ToolHeadline, Z as ToolStatus, _ as TurnGate, $ as UsageBlock, a0 as aheadOfDraft, a2 as approvalLabel, a3 as awaitingLabel, a4 as canMergeTasks, a5 as canSetDependencies, a6 as canSplitTask, a7 as capConflictFiles, aa as dependencyCandidates, ab as dependentsNotice, ac as dependentsOf, ad as diffRows, ae as diffStat, af as diffSummary, ah as drainNext, aj as followTurn, ak as fromTranscript, al as hasHiddenDetail, am as holdPrompt, an as isTaskRunning, ao as markAction, ap as markRequestFor, aq as namedRepos, ar as newTaskFields, as as opsEditable, at as outputLines, au as outputPreview, aw as pastGateConfirmation, ax as reduceConversation, ay as reduceTaskLog, az as replayTaskLog, aA as runnerToolSubject, aE as stopTurn, aF as summarizeToolCall, aG as taskRowActions, aH as taskRowView, aI as taskStartedNotice, aJ as taskStatusKind, aL as titledRefs, aN as toolHeadline, aP as truncateCheckpointSummary, aQ as unsendAll, aR as unsendLatest } from './plan-utils-CdW3mxt5.mjs';
2
+ export { taskOrderLabel, taskRef, titledTaskRef } from './order-labels.mjs';
3
+ export { D as DEFAULT_RUNNERS } from './Task-BpzIbunq.mjs';
4
+ import './ModeResolver-DcqAho4y.mjs';
3
5
  import 'child_process';
4
6
  import 'events';
5
7
  import 'zod/v4';
6
- import './ModeResolver-Cv01ZDd9.mjs';
@@ -1,6 +1,7 @@
1
- export { a as ApprovalBlock, b as ApprovalStatus, C as CHECKPOINT_TRUNCATE_LENGTH, c as ConversationInput, d as ConversationView, D as DiffRow, e as DiffRowKind, f as DiffStat, g as DisplayBlock, E as EMPTY_CONVERSATION, h as EMPTY_HOLD, i as EMPTY_TASK_LOG, G as GatedConversation, L as LocalEntry, j as MessageBlock, k as MessageRole, N as NO_TURN, O as OutputPreview, P as PlanBlock, l as PlanMarkerStatus, m as PromptHold, s as SubagentBlock, t as SubagentChild, u as SubagentStatus, T as TakenPrompt, w as TaskLogView, y as TaskRef, z as ThinkingDisplayBlock, B as ToolBlock, F as ToolHeadline, H as ToolStatus, I as TurnGate, U as UsageBlock, J as aheadOfDraft, Q as canMergeTasks, R as canSetDependencies, V as canSplitTask, W as capConflictFiles, Z as dependencyCandidates, _ as dependentsOf, $ as diffRows, a0 as diffStat, a1 as diffSummary, a3 as drainNext, a5 as followTurn, a6 as fromTranscript, a7 as hasHiddenDetail, a8 as holdPrompt, a9 as outputLines, aa as outputPreview, ac as reduceConversation, ad as reduceTaskLog, ae as replayTaskLog, af as runnerToolSubject, aj as stopTurn, ak as summarizeToolCall, al as taskStartedNotice, ao as toolHeadline, aq as truncateCheckpointSummary, ar as unsendAll, as as unsendLatest } from './plan-utils-BdYPRBno.js';
2
- import './Task-CoKhvBa1.js';
1
+ export { a as ApprovalBlock, b as ApprovalStatus, C as CHECKPOINT_TRUNCATE_LENGTH, c as ConversationInput, d as ConversationView, D as DiffRow, e as DiffRowKind, f as DiffStat, g as DisplayBlock, E as EMPTY_CONVERSATION, h as EMPTY_HOLD, i as EMPTY_TASK_LOG, G as GatedConversation, L as LocalEntry, k as MessageBlock, l as MessageRole, N as NOT_STARTED, m as NO_TURN, n as NewTaskFields, O as OutputPreview, P as PlanBlock, o as PlanMarkerStatus, p as PromptHold, v as SubagentBlock, w as SubagentChild, x as SubagentStatus, T as TakenPrompt, z as TaskLogView, F as TaskRef, H as TaskRowAction, I as TaskRowContext, J as TaskRowIsolation, K as TaskRowKind, Q as TaskRowPlacement, R as TaskRowSubject, U as TaskRowView, V as TaskStatusKind, W as ThinkingDisplayBlock, X as ToolBlock, Y as ToolHeadline, Z as ToolStatus, _ as TurnGate, $ as UsageBlock, a0 as aheadOfDraft, a2 as approvalLabel, a3 as awaitingLabel, a4 as canMergeTasks, a5 as canSetDependencies, a6 as canSplitTask, a7 as capConflictFiles, aa as dependencyCandidates, ab as dependentsNotice, ac as dependentsOf, ad as diffRows, ae as diffStat, af as diffSummary, ah as drainNext, aj as followTurn, ak as fromTranscript, al as hasHiddenDetail, am as holdPrompt, an as isTaskRunning, ao as markAction, ap as markRequestFor, aq as namedRepos, ar as newTaskFields, as as opsEditable, at as outputLines, au as outputPreview, aw as pastGateConfirmation, ax as reduceConversation, ay as reduceTaskLog, az as replayTaskLog, aA as runnerToolSubject, aE as stopTurn, aF as summarizeToolCall, aG as taskRowActions, aH as taskRowView, aI as taskStartedNotice, aJ as taskStatusKind, aL as titledRefs, aN as toolHeadline, aP as truncateCheckpointSummary, aQ as unsendAll, aR as unsendLatest } from './plan-utils-D4Z8UyLL.js';
2
+ export { taskOrderLabel, taskRef, titledTaskRef } from './order-labels.js';
3
+ export { D as DEFAULT_RUNNERS } from './Task-BpzIbunq.js';
4
+ import './ModeResolver-DtfhWeVL.js';
3
5
  import 'child_process';
4
6
  import 'events';
5
7
  import 'zod/v4';
6
- import './ModeResolver-BEcRAz1c.js';