@ordewell/core 0.6.4 → 0.7.1
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/README.md +1 -1
- package/dist/{IFileSystem-Qj2MWHn_.d.mts → IFileSystem-BnLh-_SK.d.mts} +1 -1
- package/dist/{IFileSystem-DQEKyC6H.d.ts → IFileSystem-DofiRcCo.d.ts} +1 -1
- package/dist/{ModeResolver-rqaY_4Ex.d.mts → ModeResolver-DZzJSdIU.d.mts} +3 -3
- package/dist/{ModeResolver-ByNpC0EP.d.ts → ModeResolver-DkMYf4uS.d.ts} +3 -3
- package/dist/{Task-xqdxugt2.d.mts → Task-BnLxkVQF.d.mts} +414 -22
- package/dist/{Task-xqdxugt2.d.ts → Task-BnLxkVQF.d.ts} +414 -22
- package/dist/{chunk-JRZPSNRO.mjs → chunk-LGQNXPBX.mjs} +10 -2
- package/dist/chunk-LGQNXPBX.mjs.map +1 -0
- package/dist/{chunk-N66ZHFGN.mjs → chunk-OYUSADFM.mjs} +11 -1
- package/dist/chunk-OYUSADFM.mjs.map +1 -0
- package/dist/{chunk-HPNUFBIT.mjs → chunk-V3JHS7AX.mjs} +9 -1
- package/dist/chunk-V3JHS7AX.mjs.map +1 -0
- package/dist/{chunk-I6U3PVHL.mjs → chunk-Y36NIASW.mjs} +255 -32
- package/dist/chunk-Y36NIASW.mjs.map +1 -0
- package/dist/{chunk-M4KXBEFJ.mjs → chunk-ZV5LDNCO.mjs} +44 -43
- package/dist/chunk-ZV5LDNCO.mjs.map +1 -0
- package/dist/index.d.mts +518 -238
- package/dist/index.d.ts +518 -238
- package/dist/index.js +3925 -1568
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3525 -1393
- package/dist/index.mjs.map +1 -1
- package/dist/order-labels.d.mts +16 -2
- package/dist/order-labels.d.ts +16 -2
- package/dist/order-labels.js +12 -2
- package/dist/order-labels.js.map +1 -1
- package/dist/order-labels.mjs +7 -3
- package/dist/{parsing-DDZ1rUYa.d.mts → parsing-B6ctfF80.d.mts} +24 -3
- package/dist/{parsing-COPG8-Ep.d.ts → parsing-ddZXZFP4.d.ts} +24 -3
- package/dist/parsing.d.mts +4 -3
- package/dist/parsing.d.ts +4 -3
- package/dist/parsing.js +42 -41
- package/dist/parsing.js.map +1 -1
- package/dist/parsing.mjs +3 -3
- package/dist/{plan-utils-Br8UAoiu.d.ts → plan-utils--kQRzSE-.d.ts} +251 -7
- package/dist/{plan-utils-DMgajMvd.d.mts → plan-utils-CKgNtDwQ.d.mts} +251 -7
- package/dist/plan-utils.d.mts +5 -3
- package/dist/plan-utils.d.ts +5 -3
- package/dist/plan-utils.js +313 -61
- package/dist/plan-utils.js.map +1 -1
- package/dist/plan-utils.mjs +46 -3
- package/dist/testing.d.mts +26 -5
- package/dist/testing.d.ts +26 -5
- package/dist/testing.js +62 -2
- package/dist/testing.js.map +1 -1
- package/dist/testing.mjs +62 -4
- package/dist/testing.mjs.map +1 -1
- package/package.json +4 -2
- package/dist/chunk-HPNUFBIT.mjs.map +0 -1
- package/dist/chunk-I6U3PVHL.mjs.map +0 -1
- package/dist/chunk-JRZPSNRO.mjs.map +0 -1
- package/dist/chunk-M4KXBEFJ.mjs.map +0 -1
- package/dist/chunk-N66ZHFGN.mjs.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { R as RunnerModeInfo } from './ModeResolver-
|
|
1
|
+
import { bb as StructuredTurnEnd, bd as SubagentOutcome, bE as UsageRecord, k as ApprovalDecision, b9 as StructuredEvent, a$ as RunnerId, y as DiscoveredModel, bh as Task, ab as LegacyPlanState, aQ as QueuedMessage, bF as UsageTotals, bL as Verdict, bj as TaskIsolation, by as TaskTransport, r as AwaitingReason, aR as QueuedTaskMessage, T as IsolationHandoff, _ as IsolationMergeResult, aX as ResearchStep, l as ApprovalKind, q as ApprovalSource, aY as ResearchStepOutcome, w as ConversationMessage, aV as ResearchLogEntry, aB as PlannerUsage, bk as TaskIsolationState } from './Task-BnLxkVQF.js';
|
|
2
|
+
import { R as RunnerModeInfo } from './ModeResolver-DkMYf4uS.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-ByNpC0EP.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. */
|
|
@@ -578,7 +606,7 @@ type SessionNotice = {
|
|
|
578
606
|
};
|
|
579
607
|
type SessionBroadcaster = (msg: SessionMessage) => void;
|
|
580
608
|
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;
|
|
609
|
+
declare function serializeTaskStatus(t: Task, idleSince?: string | null, isolation?: TaskIsolation | null, queued?: readonly QueuedTaskMessage[], awaitingApproval?: number, mergeGate?: readonly string[], checkpoint?: string): SerializedTaskStatus;
|
|
582
610
|
declare function serializePlan(plan: LegacyPlanState): SerializedPlan;
|
|
583
611
|
declare function executionSummary(tasks: readonly Task[]): {
|
|
584
612
|
total: number;
|
|
@@ -647,6 +675,11 @@ interface ToolHeadline {
|
|
|
647
675
|
keyArg: string;
|
|
648
676
|
}
|
|
649
677
|
type ToolStatus = 'pending' | 'ok' | 'error' | 'denied' | 'interrupted';
|
|
678
|
+
/** What a file edit changed, counted from its diff. */
|
|
679
|
+
interface DiffStat {
|
|
680
|
+
added: number;
|
|
681
|
+
removed: number;
|
|
682
|
+
}
|
|
650
683
|
interface ToolBlock {
|
|
651
684
|
type: 'tool';
|
|
652
685
|
id: string;
|
|
@@ -662,6 +695,8 @@ interface ToolBlock {
|
|
|
662
695
|
output: string;
|
|
663
696
|
/** Every line of `output`, counted as {@link outputPreview} counts them. */
|
|
664
697
|
outputLineCount: number;
|
|
698
|
+
/** Present when the call edited a file and `output` is its diff: a surface draws it as one. */
|
|
699
|
+
diff?: DiffStat;
|
|
665
700
|
turnId?: string;
|
|
666
701
|
/**
|
|
667
702
|
* The subagent this call starts. The call becomes that subagent's block once
|
|
@@ -787,7 +822,7 @@ declare function fromTranscript(conversationHistory: readonly ConversationMessag
|
|
|
787
822
|
* one at a time.
|
|
788
823
|
*/
|
|
789
824
|
interface TaskLogView extends BlockList {
|
|
790
|
-
/** Messages
|
|
825
|
+
/** Messages not yet delivered, oldest first; `handedOver` marks the ones the runner already has. */
|
|
791
826
|
readonly queued: readonly QueuedTaskMessage[];
|
|
792
827
|
/** A turn is running. */
|
|
793
828
|
readonly working: boolean;
|
|
@@ -831,6 +866,24 @@ interface OutputPreview {
|
|
|
831
866
|
declare function outputLines(output: string): string[];
|
|
832
867
|
/** The head of a tool's output for a collapsed row, and how many lines it leaves out. */
|
|
833
868
|
declare function outputPreview(output: string, maxLines: number): OutputPreview;
|
|
869
|
+
/**
|
|
870
|
+
* The lines a diff adds and removes, or null when `output` is not one: every
|
|
871
|
+
* line a hunk header, context, an addition or a removal, and at least one of
|
|
872
|
+
* the last two.
|
|
873
|
+
*/
|
|
874
|
+
declare function diffStat(output: string): DiffStat | null;
|
|
875
|
+
/** `gap` stands between two hunks, for the lines a diff leaves out. */
|
|
876
|
+
type DiffRowKind = 'added' | 'removed' | 'context' | 'gap';
|
|
877
|
+
interface DiffRow {
|
|
878
|
+
kind: DiffRowKind;
|
|
879
|
+
/** The line in the file: the old file's for a removal, the new file's otherwise. */
|
|
880
|
+
line?: number;
|
|
881
|
+
text: string;
|
|
882
|
+
}
|
|
883
|
+
/** A diff as the rows a surface draws, numbered as an editor would number them. */
|
|
884
|
+
declare function diffRows(output: string): DiffRow[];
|
|
885
|
+
/** "Added 2 lines, removed 1 line": the summary every surface puts on an edit's row. */
|
|
886
|
+
declare function diffSummary({ added, removed }: DiffStat): string;
|
|
834
887
|
|
|
835
888
|
/**
|
|
836
889
|
* Prompts the user sent while a planner turn was in flight, waiting to be the
|
|
@@ -900,4 +953,195 @@ declare function hasHiddenDetail(blocks: readonly DisplayBlock[]): boolean;
|
|
|
900
953
|
/** The conversation line for a task starting, worded the same on every surface. */
|
|
901
954
|
declare function taskStartedNotice(title: string, runner?: string): string;
|
|
902
955
|
|
|
903
|
-
|
|
956
|
+
/**
|
|
957
|
+
* What a row's status means to a reader, before any surface picks a word,
|
|
958
|
+
* icon or colour for it. `quiet` is a running task whose runner has printed
|
|
959
|
+
* nothing for a while — the status is still `in_progress`, so only the row,
|
|
960
|
+
* never the store, tells the two apart.
|
|
961
|
+
*/
|
|
962
|
+
type TaskStatusKind = 'todo' | 'running' | 'quiet' | 'awaiting' | 'blocked' | 'failed' | 'done';
|
|
963
|
+
/** A task with a runner live behind it. `in_progress` is the store's own status. */
|
|
964
|
+
declare const isTaskRunning: (task: {
|
|
965
|
+
status: string;
|
|
966
|
+
}) => boolean;
|
|
967
|
+
/** Statuses of a task that has not started: what can still be started by hand, or flipped between change and ops (ADR-0020). */
|
|
968
|
+
declare const NOT_STARTED: ReadonlySet<string>;
|
|
969
|
+
declare function taskStatusKind(task: {
|
|
970
|
+
status: string;
|
|
971
|
+
idleSince?: string | null;
|
|
972
|
+
}): TaskStatusKind;
|
|
973
|
+
/** What an awaiting_user task waits on (ADR-0018, W1); null when no reason was saved. */
|
|
974
|
+
declare function awaitingLabel(task: {
|
|
975
|
+
status: string;
|
|
976
|
+
awaitingReason?: AwaitingReason;
|
|
977
|
+
}): string | null;
|
|
978
|
+
/** Runner requests a task waits on (ADR-0018, A1); null when none do. */
|
|
979
|
+
declare function approvalLabel(count: number | undefined): string | null;
|
|
980
|
+
|
|
981
|
+
/** What a user can do to one task from its row. */
|
|
982
|
+
type TaskRowAction = 'cancel' | 'skip' | 'force-start' | 'complete' | 'uncomplete';
|
|
983
|
+
/** A subtask runs with its parent, so its row offers a different set than a top-level task's. */
|
|
984
|
+
type TaskRowPlacement = 'task' | 'subtask';
|
|
985
|
+
interface ActionSubject {
|
|
986
|
+
status: string;
|
|
987
|
+
type: 'ai' | 'user';
|
|
988
|
+
}
|
|
989
|
+
/** The actions a task's row offers while a plan runs, in the order they are laid out. */
|
|
990
|
+
declare function taskRowActions(task: ActionSubject, placement?: TaskRowPlacement): TaskRowAction[];
|
|
991
|
+
/**
|
|
992
|
+
* One toggle in both directions: a done task is taken back, anything else is
|
|
993
|
+
* marked done. A second control for the reverse is one nobody remembers.
|
|
994
|
+
*/
|
|
995
|
+
declare function markAction(task: {
|
|
996
|
+
status: string;
|
|
997
|
+
}): 'complete' | 'uncomplete';
|
|
998
|
+
/**
|
|
999
|
+
* The mark an action asks the session for, or null when it is not a mark.
|
|
1000
|
+
* Skip has no request of its own: a skipped task is marked complete, so the
|
|
1001
|
+
* run moves on past it.
|
|
1002
|
+
*/
|
|
1003
|
+
declare function markRequestFor(action: string): 'complete' | 'uncomplete' | null;
|
|
1004
|
+
/** Change versus ops can still be flipped (ADR-0020): an AI task that has not started. */
|
|
1005
|
+
declare function opsEditable(task: ActionSubject): boolean;
|
|
1006
|
+
|
|
1007
|
+
/**
|
|
1008
|
+
* A task as both surfaces hold it, with the live state each tracks beside it
|
|
1009
|
+
* (silence, approvals, isolation, the merge gate). Structural, because the TUI
|
|
1010
|
+
* projects tasks into its own shape.
|
|
1011
|
+
*/
|
|
1012
|
+
interface TaskRowSubject {
|
|
1013
|
+
id: string;
|
|
1014
|
+
order: number;
|
|
1015
|
+
type: 'ai' | 'user';
|
|
1016
|
+
status: string;
|
|
1017
|
+
dependencies: readonly string[];
|
|
1018
|
+
taskMode?: string;
|
|
1019
|
+
ops?: boolean;
|
|
1020
|
+
idleSince?: string | null;
|
|
1021
|
+
awaitingReason?: AwaitingReason;
|
|
1022
|
+
awaitingApproval?: number;
|
|
1023
|
+
isolation?: TaskRowIsolation | null;
|
|
1024
|
+
mergeGate?: readonly string[];
|
|
1025
|
+
forcedPastGate?: readonly string[];
|
|
1026
|
+
}
|
|
1027
|
+
interface TaskRowIsolation {
|
|
1028
|
+
state: TaskIsolationState;
|
|
1029
|
+
repos?: string[];
|
|
1030
|
+
conflictRepo?: string;
|
|
1031
|
+
conflictFiles?: string[];
|
|
1032
|
+
repair?: {
|
|
1033
|
+
attempt: number;
|
|
1034
|
+
limit: number;
|
|
1035
|
+
};
|
|
1036
|
+
repairedFiles?: string[];
|
|
1037
|
+
}
|
|
1038
|
+
interface TaskRowContext {
|
|
1039
|
+
/** Set for a subtask: it is labelled by its dotted order. */
|
|
1040
|
+
parent?: {
|
|
1041
|
+
order: number;
|
|
1042
|
+
} | null;
|
|
1043
|
+
/** Which action set the row offers; a row with a parent is a subtask's unless told otherwise. */
|
|
1044
|
+
placement?: TaskRowPlacement;
|
|
1045
|
+
/** Order of each task a dependency or gate may name; one missing from it is shown by id. */
|
|
1046
|
+
orderOf?: ReadonlyMap<string, number>;
|
|
1047
|
+
/** The modes the task's runner declares; autonomy is a tag on one of them (ADR-0001). */
|
|
1048
|
+
modes?: readonly {
|
|
1049
|
+
id: string;
|
|
1050
|
+
autonomous?: boolean;
|
|
1051
|
+
}[];
|
|
1052
|
+
}
|
|
1053
|
+
/** Whether the row stands for an AI task, a manual one, or an ops task (ADR-0020). */
|
|
1054
|
+
type TaskRowKind = 'ai' | 'user' | 'ops';
|
|
1055
|
+
interface TaskRowView {
|
|
1056
|
+
/** "2", or "2.1" for a subtask. */
|
|
1057
|
+
orderLabel: string;
|
|
1058
|
+
kind: TaskRowKind;
|
|
1059
|
+
status: TaskStatusKind;
|
|
1060
|
+
/** A runner is live behind it — `quiet` included. */
|
|
1061
|
+
running: boolean;
|
|
1062
|
+
/** What an awaiting task waits on, in sentence case; null when nothing was saved. */
|
|
1063
|
+
awaiting: string | null;
|
|
1064
|
+
/** Runner requests waiting on the user, in sentence case; null when none do. */
|
|
1065
|
+
approvals: string | null;
|
|
1066
|
+
/** The task's mode is tagged autonomous: it runs without permission prompts. */
|
|
1067
|
+
autonomous: boolean;
|
|
1068
|
+
/** The repos its isolated work changed, by path; empty for a group of one. */
|
|
1069
|
+
repos: string[];
|
|
1070
|
+
/** Integration stopped on a conflict: the one isolation state that needs the user. */
|
|
1071
|
+
conflict: {
|
|
1072
|
+
repo: string | null;
|
|
1073
|
+
files: string | null;
|
|
1074
|
+
} | null;
|
|
1075
|
+
/** A conflict repair in flight (ADR-0015) — progress, not a blocker. */
|
|
1076
|
+
repairing: {
|
|
1077
|
+
files: string | null;
|
|
1078
|
+
attempt: {
|
|
1079
|
+
attempt: number;
|
|
1080
|
+
limit: number;
|
|
1081
|
+
} | null;
|
|
1082
|
+
} | null;
|
|
1083
|
+
/** The files a conflict repair was started for; `landed` once the task is integrated. */
|
|
1084
|
+
repaired: {
|
|
1085
|
+
files: string;
|
|
1086
|
+
landed: boolean;
|
|
1087
|
+
} | null;
|
|
1088
|
+
/** The dependencies, by reference, whose work is not merged into the user's branch yet. */
|
|
1089
|
+
mergeGate: string[] | null;
|
|
1090
|
+
/** An ops task changed tracked files in the user's checkout and nothing was committed. */
|
|
1091
|
+
opsChangedFiles: boolean;
|
|
1092
|
+
/** The dependencies, by title, a force start went past the merge gate of. */
|
|
1093
|
+
forcedPastGate: readonly string[] | null;
|
|
1094
|
+
/** The task's dependencies, by reference. */
|
|
1095
|
+
dependencies: string[];
|
|
1096
|
+
/** What the row offers while a plan runs. */
|
|
1097
|
+
actions: TaskRowAction[];
|
|
1098
|
+
/** The one mark its toggle sets. */
|
|
1099
|
+
mark: 'complete' | 'uncomplete';
|
|
1100
|
+
opsEditable: boolean;
|
|
1101
|
+
}
|
|
1102
|
+
/** The repos a task changed, for a row that names them; none for a group of one. */
|
|
1103
|
+
declare const namedRepos: (repos: readonly string[] | undefined) => string[];
|
|
1104
|
+
/**
|
|
1105
|
+
* Everything a plan row says about one task, decided once: each surface picks
|
|
1106
|
+
* its own words, glyphs and casing for these facts, and derives none of them.
|
|
1107
|
+
*/
|
|
1108
|
+
declare function taskRowView(task: TaskRowSubject, context?: TaskRowContext): TaskRowView;
|
|
1109
|
+
|
|
1110
|
+
interface Named {
|
|
1111
|
+
id: string;
|
|
1112
|
+
order: number;
|
|
1113
|
+
title: string;
|
|
1114
|
+
subtasks?: readonly Named[];
|
|
1115
|
+
}
|
|
1116
|
+
/** Each id as "#N title", subtasks included; one the plan no longer holds stays a bare id. */
|
|
1117
|
+
declare function titledRefs(ids: readonly string[], tasks: readonly Named[]): string[];
|
|
1118
|
+
/**
|
|
1119
|
+
* What removing a task does to the tasks that depend on it, or null when none
|
|
1120
|
+
* do. Named rather than counted: the removal rewrites their dependency lists,
|
|
1121
|
+
* and a bare "Remove task?" would hide that.
|
|
1122
|
+
*/
|
|
1123
|
+
declare function dependentsNotice(dependents: readonly {
|
|
1124
|
+
order: number;
|
|
1125
|
+
title: string;
|
|
1126
|
+
}[]): string | null;
|
|
1127
|
+
/**
|
|
1128
|
+
* What a start past a merge gate is asked with (ADR-0020): the work the task
|
|
1129
|
+
* would act without, named. `subject` is how the asking surface refers to the
|
|
1130
|
+
* task — "It" under a title that already names it.
|
|
1131
|
+
*/
|
|
1132
|
+
declare function pastGateConfirmation(unmerged: readonly string[], subject?: string): string;
|
|
1133
|
+
interface NewTaskFields {
|
|
1134
|
+
title: string;
|
|
1135
|
+
description: string;
|
|
1136
|
+
prompt: string;
|
|
1137
|
+
type: 'ai';
|
|
1138
|
+
}
|
|
1139
|
+
/**
|
|
1140
|
+
* What a hand-added task starts as: an AI task whose description is its title
|
|
1141
|
+
* and whose prompt, unless one was typed, is too. Null for a title with nothing
|
|
1142
|
+
* in it, rather than a nameless task. Assignments are left for the session to
|
|
1143
|
+
* derive from the runner's catalog.
|
|
1144
|
+
*/
|
|
1145
|
+
declare function newTaskFields(title: string, prompt?: string): NewTaskFields | null;
|
|
1146
|
+
|
|
1147
|
+
export { aheadOfDraft as $, type ApplyTaskOpsResult as A, type TaskRef as B, CHECKPOINT_TRUNCATE_LENGTH as C, type DiffRow as D, EMPTY_CONVERSATION as E, type TaskRowAction as F, type GatedConversation as G, type TaskRowContext as H, type TaskRowIsolation as I, type TaskRowKind as J, type TaskRowPlacement as K, type LocalEntry as L, type MergeGateView as M, NOT_STARTED as N, type OutputPreview as O, type PlanBlock as P, type TaskRowSubject as Q, type TaskRowView as R, type SerializedPlan as S, type TakenPrompt as T, type TaskStatusKind as U, type ThinkingDisplayBlock as V, type ToolBlock as W, type ToolHeadline as X, type ToolStatus as Y, type TurnGate as Z, type UsageBlock as _, type ApprovalBlock as a, applyTaskOps as a0, approvalLabel as a1, awaitingLabel as a2, canMergeTasks as a3, canSetDependencies as a4, canSplitTask as a5, capConflictFiles as a6, classifyOutcome as a7, coalesceTaskLog as a8, dependencyCandidates as a9, serializePlan as aA, serializeTask as aB, serializeTaskStatus as aC, stopTurn as aD, summarizeToolCall as aE, taskRowActions as aF, taskRowView as aG, taskStartedNotice as aH, taskStatusKind as aI, textHasTaskOps as aJ, titledRefs as aK, toTaskLogEvent as aL, toolHeadline as aM, trimToolOutput as aN, truncateCheckpointSummary as aO, unsendAll as aP, unsendLatest as aQ, dependentsNotice as aa, dependentsOf as ab, diffRows as ac, diffStat as ad, diffSummary as ae, digestTaskLog as af, drainNext as ag, executionSummary as ah, followTurn as ai, fromTranscript as aj, hasHiddenDetail as ak, holdPrompt as al, isTaskRunning as am, markAction as an, markRequestFor as ao, namedRepos as ap, newTaskFields as aq, opsEditable as ar, outputLines as as, outputPreview as at, parseTaskOpsJson as au, pastGateConfirmation as av, reduceConversation as aw, reduceTaskLog as ax, replayTaskLog as ay, runnerToolSubject 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 MessageBlock as j, type MessageRole as k, NO_TURN as l, type NewTaskFields as m, type PlanMarkerStatus as n, type PromptHold as o, type SerializedTask as p, type SerializedTaskStatus as q, type SessionBroadcaster as r, type SessionMessage as s, type SessionNotice as t, type SubagentBlock as u, type SubagentChild as v, type SubagentStatus as w, type TaskLogEvent as x, type TaskLogView as y, type TaskOp as z };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { R as RunnerModeInfo } from './ModeResolver-
|
|
1
|
+
import { bb as StructuredTurnEnd, bd as SubagentOutcome, bE as UsageRecord, k as ApprovalDecision, b9 as StructuredEvent, a$ as RunnerId, y as DiscoveredModel, bh as Task, ab as LegacyPlanState, aQ as QueuedMessage, bF as UsageTotals, bL as Verdict, bj as TaskIsolation, by as TaskTransport, r as AwaitingReason, aR as QueuedTaskMessage, T as IsolationHandoff, _ as IsolationMergeResult, aX as ResearchStep, l as ApprovalKind, q as ApprovalSource, aY as ResearchStepOutcome, w as ConversationMessage, aV as ResearchLogEntry, aB as PlannerUsage, bk as TaskIsolationState } from './Task-BnLxkVQF.mjs';
|
|
2
|
+
import { R as RunnerModeInfo } from './ModeResolver-DZzJSdIU.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-rqaY_4Ex.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. */
|
|
@@ -578,7 +606,7 @@ type SessionNotice = {
|
|
|
578
606
|
};
|
|
579
607
|
type SessionBroadcaster = (msg: SessionMessage) => void;
|
|
580
608
|
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;
|
|
609
|
+
declare function serializeTaskStatus(t: Task, idleSince?: string | null, isolation?: TaskIsolation | null, queued?: readonly QueuedTaskMessage[], awaitingApproval?: number, mergeGate?: readonly string[], checkpoint?: string): SerializedTaskStatus;
|
|
582
610
|
declare function serializePlan(plan: LegacyPlanState): SerializedPlan;
|
|
583
611
|
declare function executionSummary(tasks: readonly Task[]): {
|
|
584
612
|
total: number;
|
|
@@ -647,6 +675,11 @@ interface ToolHeadline {
|
|
|
647
675
|
keyArg: string;
|
|
648
676
|
}
|
|
649
677
|
type ToolStatus = 'pending' | 'ok' | 'error' | 'denied' | 'interrupted';
|
|
678
|
+
/** What a file edit changed, counted from its diff. */
|
|
679
|
+
interface DiffStat {
|
|
680
|
+
added: number;
|
|
681
|
+
removed: number;
|
|
682
|
+
}
|
|
650
683
|
interface ToolBlock {
|
|
651
684
|
type: 'tool';
|
|
652
685
|
id: string;
|
|
@@ -662,6 +695,8 @@ interface ToolBlock {
|
|
|
662
695
|
output: string;
|
|
663
696
|
/** Every line of `output`, counted as {@link outputPreview} counts them. */
|
|
664
697
|
outputLineCount: number;
|
|
698
|
+
/** Present when the call edited a file and `output` is its diff: a surface draws it as one. */
|
|
699
|
+
diff?: DiffStat;
|
|
665
700
|
turnId?: string;
|
|
666
701
|
/**
|
|
667
702
|
* The subagent this call starts. The call becomes that subagent's block once
|
|
@@ -787,7 +822,7 @@ declare function fromTranscript(conversationHistory: readonly ConversationMessag
|
|
|
787
822
|
* one at a time.
|
|
788
823
|
*/
|
|
789
824
|
interface TaskLogView extends BlockList {
|
|
790
|
-
/** Messages
|
|
825
|
+
/** Messages not yet delivered, oldest first; `handedOver` marks the ones the runner already has. */
|
|
791
826
|
readonly queued: readonly QueuedTaskMessage[];
|
|
792
827
|
/** A turn is running. */
|
|
793
828
|
readonly working: boolean;
|
|
@@ -831,6 +866,24 @@ interface OutputPreview {
|
|
|
831
866
|
declare function outputLines(output: string): string[];
|
|
832
867
|
/** The head of a tool's output for a collapsed row, and how many lines it leaves out. */
|
|
833
868
|
declare function outputPreview(output: string, maxLines: number): OutputPreview;
|
|
869
|
+
/**
|
|
870
|
+
* The lines a diff adds and removes, or null when `output` is not one: every
|
|
871
|
+
* line a hunk header, context, an addition or a removal, and at least one of
|
|
872
|
+
* the last two.
|
|
873
|
+
*/
|
|
874
|
+
declare function diffStat(output: string): DiffStat | null;
|
|
875
|
+
/** `gap` stands between two hunks, for the lines a diff leaves out. */
|
|
876
|
+
type DiffRowKind = 'added' | 'removed' | 'context' | 'gap';
|
|
877
|
+
interface DiffRow {
|
|
878
|
+
kind: DiffRowKind;
|
|
879
|
+
/** The line in the file: the old file's for a removal, the new file's otherwise. */
|
|
880
|
+
line?: number;
|
|
881
|
+
text: string;
|
|
882
|
+
}
|
|
883
|
+
/** A diff as the rows a surface draws, numbered as an editor would number them. */
|
|
884
|
+
declare function diffRows(output: string): DiffRow[];
|
|
885
|
+
/** "Added 2 lines, removed 1 line": the summary every surface puts on an edit's row. */
|
|
886
|
+
declare function diffSummary({ added, removed }: DiffStat): string;
|
|
834
887
|
|
|
835
888
|
/**
|
|
836
889
|
* Prompts the user sent while a planner turn was in flight, waiting to be the
|
|
@@ -900,4 +953,195 @@ declare function hasHiddenDetail(blocks: readonly DisplayBlock[]): boolean;
|
|
|
900
953
|
/** The conversation line for a task starting, worded the same on every surface. */
|
|
901
954
|
declare function taskStartedNotice(title: string, runner?: string): string;
|
|
902
955
|
|
|
903
|
-
|
|
956
|
+
/**
|
|
957
|
+
* What a row's status means to a reader, before any surface picks a word,
|
|
958
|
+
* icon or colour for it. `quiet` is a running task whose runner has printed
|
|
959
|
+
* nothing for a while — the status is still `in_progress`, so only the row,
|
|
960
|
+
* never the store, tells the two apart.
|
|
961
|
+
*/
|
|
962
|
+
type TaskStatusKind = 'todo' | 'running' | 'quiet' | 'awaiting' | 'blocked' | 'failed' | 'done';
|
|
963
|
+
/** A task with a runner live behind it. `in_progress` is the store's own status. */
|
|
964
|
+
declare const isTaskRunning: (task: {
|
|
965
|
+
status: string;
|
|
966
|
+
}) => boolean;
|
|
967
|
+
/** Statuses of a task that has not started: what can still be started by hand, or flipped between change and ops (ADR-0020). */
|
|
968
|
+
declare const NOT_STARTED: ReadonlySet<string>;
|
|
969
|
+
declare function taskStatusKind(task: {
|
|
970
|
+
status: string;
|
|
971
|
+
idleSince?: string | null;
|
|
972
|
+
}): TaskStatusKind;
|
|
973
|
+
/** What an awaiting_user task waits on (ADR-0018, W1); null when no reason was saved. */
|
|
974
|
+
declare function awaitingLabel(task: {
|
|
975
|
+
status: string;
|
|
976
|
+
awaitingReason?: AwaitingReason;
|
|
977
|
+
}): string | null;
|
|
978
|
+
/** Runner requests a task waits on (ADR-0018, A1); null when none do. */
|
|
979
|
+
declare function approvalLabel(count: number | undefined): string | null;
|
|
980
|
+
|
|
981
|
+
/** What a user can do to one task from its row. */
|
|
982
|
+
type TaskRowAction = 'cancel' | 'skip' | 'force-start' | 'complete' | 'uncomplete';
|
|
983
|
+
/** A subtask runs with its parent, so its row offers a different set than a top-level task's. */
|
|
984
|
+
type TaskRowPlacement = 'task' | 'subtask';
|
|
985
|
+
interface ActionSubject {
|
|
986
|
+
status: string;
|
|
987
|
+
type: 'ai' | 'user';
|
|
988
|
+
}
|
|
989
|
+
/** The actions a task's row offers while a plan runs, in the order they are laid out. */
|
|
990
|
+
declare function taskRowActions(task: ActionSubject, placement?: TaskRowPlacement): TaskRowAction[];
|
|
991
|
+
/**
|
|
992
|
+
* One toggle in both directions: a done task is taken back, anything else is
|
|
993
|
+
* marked done. A second control for the reverse is one nobody remembers.
|
|
994
|
+
*/
|
|
995
|
+
declare function markAction(task: {
|
|
996
|
+
status: string;
|
|
997
|
+
}): 'complete' | 'uncomplete';
|
|
998
|
+
/**
|
|
999
|
+
* The mark an action asks the session for, or null when it is not a mark.
|
|
1000
|
+
* Skip has no request of its own: a skipped task is marked complete, so the
|
|
1001
|
+
* run moves on past it.
|
|
1002
|
+
*/
|
|
1003
|
+
declare function markRequestFor(action: string): 'complete' | 'uncomplete' | null;
|
|
1004
|
+
/** Change versus ops can still be flipped (ADR-0020): an AI task that has not started. */
|
|
1005
|
+
declare function opsEditable(task: ActionSubject): boolean;
|
|
1006
|
+
|
|
1007
|
+
/**
|
|
1008
|
+
* A task as both surfaces hold it, with the live state each tracks beside it
|
|
1009
|
+
* (silence, approvals, isolation, the merge gate). Structural, because the TUI
|
|
1010
|
+
* projects tasks into its own shape.
|
|
1011
|
+
*/
|
|
1012
|
+
interface TaskRowSubject {
|
|
1013
|
+
id: string;
|
|
1014
|
+
order: number;
|
|
1015
|
+
type: 'ai' | 'user';
|
|
1016
|
+
status: string;
|
|
1017
|
+
dependencies: readonly string[];
|
|
1018
|
+
taskMode?: string;
|
|
1019
|
+
ops?: boolean;
|
|
1020
|
+
idleSince?: string | null;
|
|
1021
|
+
awaitingReason?: AwaitingReason;
|
|
1022
|
+
awaitingApproval?: number;
|
|
1023
|
+
isolation?: TaskRowIsolation | null;
|
|
1024
|
+
mergeGate?: readonly string[];
|
|
1025
|
+
forcedPastGate?: readonly string[];
|
|
1026
|
+
}
|
|
1027
|
+
interface TaskRowIsolation {
|
|
1028
|
+
state: TaskIsolationState;
|
|
1029
|
+
repos?: string[];
|
|
1030
|
+
conflictRepo?: string;
|
|
1031
|
+
conflictFiles?: string[];
|
|
1032
|
+
repair?: {
|
|
1033
|
+
attempt: number;
|
|
1034
|
+
limit: number;
|
|
1035
|
+
};
|
|
1036
|
+
repairedFiles?: string[];
|
|
1037
|
+
}
|
|
1038
|
+
interface TaskRowContext {
|
|
1039
|
+
/** Set for a subtask: it is labelled by its dotted order. */
|
|
1040
|
+
parent?: {
|
|
1041
|
+
order: number;
|
|
1042
|
+
} | null;
|
|
1043
|
+
/** Which action set the row offers; a row with a parent is a subtask's unless told otherwise. */
|
|
1044
|
+
placement?: TaskRowPlacement;
|
|
1045
|
+
/** Order of each task a dependency or gate may name; one missing from it is shown by id. */
|
|
1046
|
+
orderOf?: ReadonlyMap<string, number>;
|
|
1047
|
+
/** The modes the task's runner declares; autonomy is a tag on one of them (ADR-0001). */
|
|
1048
|
+
modes?: readonly {
|
|
1049
|
+
id: string;
|
|
1050
|
+
autonomous?: boolean;
|
|
1051
|
+
}[];
|
|
1052
|
+
}
|
|
1053
|
+
/** Whether the row stands for an AI task, a manual one, or an ops task (ADR-0020). */
|
|
1054
|
+
type TaskRowKind = 'ai' | 'user' | 'ops';
|
|
1055
|
+
interface TaskRowView {
|
|
1056
|
+
/** "2", or "2.1" for a subtask. */
|
|
1057
|
+
orderLabel: string;
|
|
1058
|
+
kind: TaskRowKind;
|
|
1059
|
+
status: TaskStatusKind;
|
|
1060
|
+
/** A runner is live behind it — `quiet` included. */
|
|
1061
|
+
running: boolean;
|
|
1062
|
+
/** What an awaiting task waits on, in sentence case; null when nothing was saved. */
|
|
1063
|
+
awaiting: string | null;
|
|
1064
|
+
/** Runner requests waiting on the user, in sentence case; null when none do. */
|
|
1065
|
+
approvals: string | null;
|
|
1066
|
+
/** The task's mode is tagged autonomous: it runs without permission prompts. */
|
|
1067
|
+
autonomous: boolean;
|
|
1068
|
+
/** The repos its isolated work changed, by path; empty for a group of one. */
|
|
1069
|
+
repos: string[];
|
|
1070
|
+
/** Integration stopped on a conflict: the one isolation state that needs the user. */
|
|
1071
|
+
conflict: {
|
|
1072
|
+
repo: string | null;
|
|
1073
|
+
files: string | null;
|
|
1074
|
+
} | null;
|
|
1075
|
+
/** A conflict repair in flight (ADR-0015) — progress, not a blocker. */
|
|
1076
|
+
repairing: {
|
|
1077
|
+
files: string | null;
|
|
1078
|
+
attempt: {
|
|
1079
|
+
attempt: number;
|
|
1080
|
+
limit: number;
|
|
1081
|
+
} | null;
|
|
1082
|
+
} | null;
|
|
1083
|
+
/** The files a conflict repair was started for; `landed` once the task is integrated. */
|
|
1084
|
+
repaired: {
|
|
1085
|
+
files: string;
|
|
1086
|
+
landed: boolean;
|
|
1087
|
+
} | null;
|
|
1088
|
+
/** The dependencies, by reference, whose work is not merged into the user's branch yet. */
|
|
1089
|
+
mergeGate: string[] | null;
|
|
1090
|
+
/** An ops task changed tracked files in the user's checkout and nothing was committed. */
|
|
1091
|
+
opsChangedFiles: boolean;
|
|
1092
|
+
/** The dependencies, by title, a force start went past the merge gate of. */
|
|
1093
|
+
forcedPastGate: readonly string[] | null;
|
|
1094
|
+
/** The task's dependencies, by reference. */
|
|
1095
|
+
dependencies: string[];
|
|
1096
|
+
/** What the row offers while a plan runs. */
|
|
1097
|
+
actions: TaskRowAction[];
|
|
1098
|
+
/** The one mark its toggle sets. */
|
|
1099
|
+
mark: 'complete' | 'uncomplete';
|
|
1100
|
+
opsEditable: boolean;
|
|
1101
|
+
}
|
|
1102
|
+
/** The repos a task changed, for a row that names them; none for a group of one. */
|
|
1103
|
+
declare const namedRepos: (repos: readonly string[] | undefined) => string[];
|
|
1104
|
+
/**
|
|
1105
|
+
* Everything a plan row says about one task, decided once: each surface picks
|
|
1106
|
+
* its own words, glyphs and casing for these facts, and derives none of them.
|
|
1107
|
+
*/
|
|
1108
|
+
declare function taskRowView(task: TaskRowSubject, context?: TaskRowContext): TaskRowView;
|
|
1109
|
+
|
|
1110
|
+
interface Named {
|
|
1111
|
+
id: string;
|
|
1112
|
+
order: number;
|
|
1113
|
+
title: string;
|
|
1114
|
+
subtasks?: readonly Named[];
|
|
1115
|
+
}
|
|
1116
|
+
/** Each id as "#N title", subtasks included; one the plan no longer holds stays a bare id. */
|
|
1117
|
+
declare function titledRefs(ids: readonly string[], tasks: readonly Named[]): string[];
|
|
1118
|
+
/**
|
|
1119
|
+
* What removing a task does to the tasks that depend on it, or null when none
|
|
1120
|
+
* do. Named rather than counted: the removal rewrites their dependency lists,
|
|
1121
|
+
* and a bare "Remove task?" would hide that.
|
|
1122
|
+
*/
|
|
1123
|
+
declare function dependentsNotice(dependents: readonly {
|
|
1124
|
+
order: number;
|
|
1125
|
+
title: string;
|
|
1126
|
+
}[]): string | null;
|
|
1127
|
+
/**
|
|
1128
|
+
* What a start past a merge gate is asked with (ADR-0020): the work the task
|
|
1129
|
+
* would act without, named. `subject` is how the asking surface refers to the
|
|
1130
|
+
* task — "It" under a title that already names it.
|
|
1131
|
+
*/
|
|
1132
|
+
declare function pastGateConfirmation(unmerged: readonly string[], subject?: string): string;
|
|
1133
|
+
interface NewTaskFields {
|
|
1134
|
+
title: string;
|
|
1135
|
+
description: string;
|
|
1136
|
+
prompt: string;
|
|
1137
|
+
type: 'ai';
|
|
1138
|
+
}
|
|
1139
|
+
/**
|
|
1140
|
+
* What a hand-added task starts as: an AI task whose description is its title
|
|
1141
|
+
* and whose prompt, unless one was typed, is too. Null for a title with nothing
|
|
1142
|
+
* in it, rather than a nameless task. Assignments are left for the session to
|
|
1143
|
+
* derive from the runner's catalog.
|
|
1144
|
+
*/
|
|
1145
|
+
declare function newTaskFields(title: string, prompt?: string): NewTaskFields | null;
|
|
1146
|
+
|
|
1147
|
+
export { aheadOfDraft as $, type ApplyTaskOpsResult as A, type TaskRef as B, CHECKPOINT_TRUNCATE_LENGTH as C, type DiffRow as D, EMPTY_CONVERSATION as E, type TaskRowAction as F, type GatedConversation as G, type TaskRowContext as H, type TaskRowIsolation as I, type TaskRowKind as J, type TaskRowPlacement as K, type LocalEntry as L, type MergeGateView as M, NOT_STARTED as N, type OutputPreview as O, type PlanBlock as P, type TaskRowSubject as Q, type TaskRowView as R, type SerializedPlan as S, type TakenPrompt as T, type TaskStatusKind as U, type ThinkingDisplayBlock as V, type ToolBlock as W, type ToolHeadline as X, type ToolStatus as Y, type TurnGate as Z, type UsageBlock as _, type ApprovalBlock as a, applyTaskOps as a0, approvalLabel as a1, awaitingLabel as a2, canMergeTasks as a3, canSetDependencies as a4, canSplitTask as a5, capConflictFiles as a6, classifyOutcome as a7, coalesceTaskLog as a8, dependencyCandidates as a9, serializePlan as aA, serializeTask as aB, serializeTaskStatus as aC, stopTurn as aD, summarizeToolCall as aE, taskRowActions as aF, taskRowView as aG, taskStartedNotice as aH, taskStatusKind as aI, textHasTaskOps as aJ, titledRefs as aK, toTaskLogEvent as aL, toolHeadline as aM, trimToolOutput as aN, truncateCheckpointSummary as aO, unsendAll as aP, unsendLatest as aQ, dependentsNotice as aa, dependentsOf as ab, diffRows as ac, diffStat as ad, diffSummary as ae, digestTaskLog as af, drainNext as ag, executionSummary as ah, followTurn as ai, fromTranscript as aj, hasHiddenDetail as ak, holdPrompt as al, isTaskRunning as am, markAction as an, markRequestFor as ao, namedRepos as ap, newTaskFields as aq, opsEditable as ar, outputLines as as, outputPreview as at, parseTaskOpsJson as au, pastGateConfirmation as av, reduceConversation as aw, reduceTaskLog as ax, replayTaskLog as ay, runnerToolSubject 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 MessageBlock as j, type MessageRole as k, NO_TURN as l, type NewTaskFields as m, type PlanMarkerStatus as n, type PromptHold as o, type SerializedTask as p, type SerializedTaskStatus as q, type SessionBroadcaster as r, type SessionMessage as s, type SessionNotice as t, type SubagentBlock as u, type SubagentChild as v, type SubagentStatus as w, type TaskLogEvent as x, type TaskLogView as y, type TaskOp as z };
|