@ordewell/core 0.6.1 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,14 +1,14 @@
1
- import { aG as RunnerId, ag as PlanStatus, a6 as LegacyPlanState, I as IApproval, k as ApprovalDecision, p as ApprovalRequest, j as ApprovalAnswer, L as ITerminalRunner, J as IConfig, h as AiProvider, as as ProviderModelLists, m as ApprovalMode, X as IsolationMergeResult, T as IsolationLandedTask, N as IWorktreeIsolation, a2 as IsolationTaskStatus, ad as PlanIsolation, aL as RunnerTransport, az as RepoGroupLayout, M as ITerminalSession, w as DiscoveredModel, aU as Task, f as AgentProcessDeps, c as AgentAdapter, aB as ResearchProgress, aA as ResearchLogEntry, u as ConversationMessage, ba as UsageRecord, b1 as TaskSnapshot, r as AwaitingReason, Q as IsolationHandoff, $ as IsolationRun, a0 as IsolationTaskRecord, aV as TaskIsolation, a3 as IsolationView, Y as IsolationOutcome, ay as RepairEvidence, b8 as TreeSnapshot, bh as Verdict, aJ as RunnerRegistry, ax as QueuedTaskMessage, aw as QueuedMessage, b as ActiveTaskSession, ac as OrchestratorOption, aY as TaskModeAgentAdapter, g as AgentStartOptions, e as AgentEvent, aE as ResearchToolType, ai as PlannerUsage, n as ApprovalPolicy, af as PlanState, aH as RunnerInvocation, A as AbstractRunner, a as AbstractTerminalSession, aQ as StructuredSessionCapability, b2 as TaskStartOptions, aR as StructuredTurnEnd, aP as StructuredEvent, aK as RunnerSpawnOptions, K as IPluginStore, aI as RunnerPluginManifest, aF as ResolveContext, b0 as TaskRunnerFlags } from './Task-ib_U0YP7.js';
2
- export { d as AgentAdapterFactory, i as AllProviderModels, l as ApprovalKind, o as ApprovalPolicyOptions, q as ApprovalSource, B as BlockingPrompt, C as CMD_EXE_MAX_COMMAND_LINE, s as CatalogModel, t as CommandLineTooLongError, D as DENY_ALL, v as DiscoveredMode, x as DiscoveryCommand, E as EmbeddedNewlineError, y as ExecutableNotFoundError, F as FetchAllProviderModelsOptions, H as HeadlessRunner, z as HeadlessRunnerDeps, G as HeadlessSession, O as IntegrationDisposal, P as IsolationAvailability, R as IsolationHandoffRepo, S as IsolationInactiveReason, U as IsolationLanding, V as IsolationMergeBlock, W as IsolationMergeBlockReason, Z as IsolationPruneResult, _ as IsolationRepo, a1 as IsolationTaskRepo, a4 as LaunchDeps, a5 as LaunchPlan, a7 as LineBuffer, a8 as Message, a9 as ModelCatalog, aa as ModelShortcut, ab as ORCHESTRATOR_SHORTCUTS, ae as PlanModificationWarnings, ah as PlannerStartOptions, aj as PluginCloneFn, ak as PluginEntry, al as PluginFeatures, am as PluginMode, an as PluginModelDiscovery, ao as PluginRunnerDef, ap as PreparedLaunch, aq as PreparedTask, ar as ProviderCredentialSource, at as ProviderModelsResult, au as PtySize, av as PtyWrapOptions, aC as ResearchStep, aD as ResearchStepOutcome, aM as StreamEvent, aN as StreamStepEvent, aO as StreamThinkingEvent, aS as SubagentLogEntry, aT as SubagentOutcome, aW as TaskIsolationState, aX as TaskMode, aZ as TaskModeUnsupportedError, a_ as TaskModelAssignment, a$ as TaskOutputSummary, b3 as TaskStatus, b4 as TaskTransport, b5 as TaskType, b6 as TaskWithParent, b7 as ThinkingBlock, b9 as UsageLine, bb as UsageTotals, bc as UserPromptEntry, bd as UserStep, be as ValidationCheck, bf as ValidationContext, bg as ValidationResult, bi as VerificationCheck, bj as WINDOWS_MAX_COMMAND_LINE, bk as addPlannerUsage, bl as addTaskToPlan, bm as addUsage, bn as approvalScopes, bo as buildShellInvocation, bp as collectProviderCredentials, bq as createEmptyPlan, br as createTask, bs as emptyWarnings, bt as enabledRunners, bu as fetchAllProviderModels, bv as flattenTasks, bw as flattenTasksWithParents, bx as isAwaitingReason, by as isExecutableResolved, bz as isGranted, bA as isMeasured, bB as isReservedRunnerName, bC as isRunnerApproval, bD as isRunnerTransport, bE as isStructuredSession, bF as keepExecutionState, bG as knownModelId, bH as migrateLegacyPlan, bI as migratePlanState, bJ as migrateTask, bK as partedPromptUsage, bL as planDirectLaunch, bM as planShellLaunch, bN as plannerContextFill, bO as posixShellQuote, bP as removeTaskFromPlan, bQ as renumberTasks, bR as resolveModelShortcut, bS as resolveProvider, bT as stripAnsi, bU as toApprovalDecision, bV as toOrchestratorOptions, bW as updateTaskInPlan, bX as usageLine, bY as validateModifiedPlan, bZ as warningsText, b_ as windowsCommandLine, b$ as wrapWithPty } from './Task-ib_U0YP7.js';
3
- import { u as TaskOp, M as MergeGateView, m as SessionBroadcaster, A as ApplyTaskOpsResult, n as SessionMessage, o as SessionNotice, s as TaskLogEvent } from './plan-utils-DvHPzAfV.js';
4
- export { a as ApprovalBlock, b as ApprovalStatus, C as CHECKPOINT_TRUNCATE_LENGTH, c as ConversationInput, d as ConversationView, D as DisplayBlock, E as EMPTY_CONVERSATION, e as EMPTY_HOLD, f as EMPTY_TASK_LOG, G as GatedConversation, L as LocalEntry, g as MessageBlock, h as MessageRole, N as NO_TURN, O as OutputPreview, P as PlanBlock, i as PlanMarkerStatus, j as PromptHold, S as SerializedPlan, k as SerializedTask, l as SerializedTaskStatus, p as SubagentBlock, q as SubagentChild, r as SubagentStatus, T as TakenPrompt, t as TaskLogView, v as TaskRef, w as ThinkingDisplayBlock, x as ToolBlock, y as ToolHeadline, z as ToolStatus, B as TurnGate, U as UsageBlock, F as aheadOfDraft, H as applyTaskOps, I as canMergeTasks, J as canSetDependencies, K as canSplitTask, Q as capConflictFiles, R as classifyOutcome, V as coalesceTaskLog, W as dependencyCandidates, X as dependentsOf, Y as drainNext, Z as executionSummary, _ as followTurn, $ as fromTranscript, a0 as hasHiddenDetail, a1 as holdPrompt, a2 as outputLines, a3 as outputPreview, a4 as parseTaskOpsJson, a5 as reduceConversation, a6 as reduceTaskLog, a7 as replayTaskLog, a8 as runnerToolSubject, a9 as serializePlan, aa as serializeTask, ab as serializeTaskStatus, ac as stopTurn, ad as summarizeToolCall, ae as taskStartedNotice, af as textHasTaskOps, ag as toTaskLogEvent, ah as toolHeadline, ai as trimToolOutput, aj as truncateCheckpointSummary, ak as unsendAll, al as unsendLatest } from './plan-utils-DvHPzAfV.js';
5
- import { I as IFileSystem, R as ReadFileOpts, T as ToolOutcome, b as GrepOptions, a as GlobOptions, F as FindSymbolOptions } from './IFileSystem-DuEiG_kA.js';
6
- export { G as GREP_DEFAULT_HEAD_LIMIT, c as GrepOutputMode, S as SEARCH_EXCLUSIONS } from './IFileSystem-DuEiG_kA.js';
7
- import { R as RunnerModeInfo } from './ModeResolver-DXxV4n_V.js';
8
- export { M as ManifestLookup, a as autonomyLevelLabel, b as buildModeGuide, f as filteredBuildModes, p as parseAutonomyLevel, r as resolveDefaultMode, c as resolveTaskMode, d as runnerModesFrom } from './ModeResolver-DXxV4n_V.js';
1
+ import { aG as RunnerId, ag as PlanStatus, a6 as LegacyPlanState, I as IApproval, k as ApprovalDecision, p as ApprovalRequest, j as ApprovalAnswer, L as ITerminalRunner, J as IConfig, h as AiProvider, as as ProviderModelLists, m as ApprovalMode, X as IsolationMergeResult, T as IsolationLandedTask, N as IWorktreeIsolation, a2 as IsolationTaskStatus, ad as PlanIsolation, aL as RunnerTransport, az as RepoGroupLayout, M as ITerminalSession, w as DiscoveredModel, aV as Task, f as AgentProcessDeps, c as AgentAdapter, aB as ResearchProgress, aA as ResearchLogEntry, u as ConversationMessage, bb as UsageRecord, b2 as TaskSnapshot, r as AwaitingReason, Q as IsolationHandoff, $ as IsolationRun, a0 as IsolationTaskRecord, aW as TaskIsolation, a3 as IsolationView, Y as IsolationOutcome, ay as RepairEvidence, b9 as TreeSnapshot, bi as Verdict, aJ as RunnerRegistry, ax as QueuedTaskMessage, aw as QueuedMessage, b as ActiveTaskSession, ac as OrchestratorOption, aZ as TaskModeAgentAdapter, g as AgentStartOptions, e as AgentEvent, aE as ResearchToolType, ai as PlannerUsage, n as ApprovalPolicy, af as PlanState, aH as RunnerInvocation, A as AbstractRunner, a as AbstractTerminalSession, aM as RunnerVersionProbe, aR as StructuredSessionCapability, b3 as TaskStartOptions, aS as StructuredTurnEnd, aQ as StructuredEvent, aK as RunnerSpawnOptions, K as IPluginStore, aI as RunnerPluginManifest, aF as ResolveContext, b1 as TaskRunnerFlags } from './Task-xqdxugt2.js';
2
+ export { d as AgentAdapterFactory, i as AllProviderModels, l as ApprovalKind, o as ApprovalPolicyOptions, q as ApprovalSource, B as BlockingPrompt, C as CMD_EXE_MAX_COMMAND_LINE, s as CatalogModel, t as CommandLineTooLongError, D as DENY_ALL, v as DiscoveredMode, x as DiscoveryCommand, E as EmbeddedNewlineError, y as ExecutableNotFoundError, F as FetchAllProviderModelsOptions, H as HeadlessRunner, z as HeadlessRunnerDeps, G as HeadlessSession, O as IntegrationDisposal, P as IsolationAvailability, R as IsolationHandoffRepo, S as IsolationInactiveReason, U as IsolationLanding, V as IsolationMergeBlock, W as IsolationMergeBlockReason, Z as IsolationPruneResult, _ as IsolationRepo, a1 as IsolationTaskRepo, a4 as LaunchDeps, a5 as LaunchPlan, a7 as LineBuffer, a8 as Message, a9 as ModelCatalog, aa as ModelShortcut, ab as ORCHESTRATOR_SHORTCUTS, ae as PlanModificationWarnings, ah as PlannerStartOptions, aj as PluginCloneFn, ak as PluginEntry, al as PluginFeatures, am as PluginMode, an as PluginModelDiscovery, ao as PluginRunnerDef, ap as PreparedLaunch, aq as PreparedTask, ar as ProviderCredentialSource, at as ProviderModelsResult, au as PtySize, av as PtyWrapOptions, aC as ResearchStep, aD as ResearchStepOutcome, aN as StreamEvent, aO as StreamStepEvent, aP as StreamThinkingEvent, aT as SubagentLogEntry, aU as SubagentOutcome, aX as TaskIsolationState, aY as TaskMode, a_ as TaskModeUnsupportedError, a$ as TaskModelAssignment, b0 as TaskOutputSummary, b4 as TaskStatus, b5 as TaskTransport, b6 as TaskType, b7 as TaskWithParent, b8 as ThinkingBlock, ba as UsageLine, bc as UsageTotals, bd as UserPromptEntry, be as UserStep, bf as ValidationCheck, bg as ValidationContext, bh as ValidationResult, bj as VerificationCheck, bk as WINDOWS_MAX_COMMAND_LINE, bl as addPlannerUsage, bm as addTaskToPlan, bn as addUsage, bo as approvalScopes, bp as buildShellInvocation, bq as collectProviderCredentials, br as createEmptyPlan, bs as createTask, bt as emptyWarnings, bu as enabledRunners, bv as fetchAllProviderModels, bw as flattenTasks, bx as flattenTasksWithParents, by as isAwaitingReason, bz as isExecutableResolved, bA as isGranted, bB as isMeasured, bC as isReservedRunnerName, bD as isRunnerApproval, bE as isRunnerTransport, bF as isStructuredSession, bG as keepExecutionState, bH as knownModelId, bI as migrateLegacyPlan, bJ as migratePlanState, bK as migrateTask, bL as partedPromptUsage, bM as planDirectLaunch, bN as planShellLaunch, bO as plannerContextFill, bP as posixShellQuote, bQ as removeTaskFromPlan, bR as renumberTasks, bS as resolveModelShortcut, bT as resolveProvider, bU as stripAnsi, bV as toApprovalDecision, bW as toOrchestratorOptions, bX as updateTaskInPlan, bY as usageLine, bZ as validateModifiedPlan, b_ as warningsText, b$ as windowsCommandLine, c0 as wrapWithPty } from './Task-xqdxugt2.js';
3
+ import { u as TaskOp, M as MergeGateView, m as SessionBroadcaster, A as ApplyTaskOpsResult, n as SessionMessage, o as SessionNotice, s as TaskLogEvent } from './plan-utils-Br8UAoiu.js';
4
+ export { a as ApprovalBlock, b as ApprovalStatus, C as CHECKPOINT_TRUNCATE_LENGTH, c as ConversationInput, d as ConversationView, D as DisplayBlock, E as EMPTY_CONVERSATION, e as EMPTY_HOLD, f as EMPTY_TASK_LOG, G as GatedConversation, L as LocalEntry, g as MessageBlock, h as MessageRole, N as NO_TURN, O as OutputPreview, P as PlanBlock, i as PlanMarkerStatus, j as PromptHold, S as SerializedPlan, k as SerializedTask, l as SerializedTaskStatus, p as SubagentBlock, q as SubagentChild, r as SubagentStatus, T as TakenPrompt, t as TaskLogView, v as TaskRef, w as ThinkingDisplayBlock, x as ToolBlock, y as ToolHeadline, z as ToolStatus, B as TurnGate, U as UsageBlock, F as aheadOfDraft, H as applyTaskOps, I as canMergeTasks, J as canSetDependencies, K as canSplitTask, Q as capConflictFiles, R as classifyOutcome, V as coalesceTaskLog, W as dependencyCandidates, X as dependentsOf, Y as digestTaskLog, Z as drainNext, _ as executionSummary, $ as followTurn, a0 as fromTranscript, a1 as hasHiddenDetail, a2 as holdPrompt, a3 as outputLines, a4 as outputPreview, a5 as parseTaskOpsJson, a6 as reduceConversation, a7 as reduceTaskLog, a8 as replayTaskLog, a9 as runnerToolSubject, aa as serializePlan, ab as serializeTask, ac as serializeTaskStatus, ad as stopTurn, ae as summarizeToolCall, af as taskStartedNotice, ag as textHasTaskOps, ah as toTaskLogEvent, ai as toolHeadline, aj as trimToolOutput, ak as truncateCheckpointSummary, al as unsendAll, am as unsendLatest } from './plan-utils-Br8UAoiu.js';
5
+ import { I as IFileSystem, R as ReadFileOpts, T as ToolOutcome, b as GrepOptions, a as GlobOptions, F as FindSymbolOptions } from './IFileSystem-DQEKyC6H.js';
6
+ export { G as GREP_DEFAULT_HEAD_LIMIT, c as GrepOutputMode, S as SEARCH_EXCLUSIONS } from './IFileSystem-DQEKyC6H.js';
7
+ import { R as RunnerModeInfo } from './ModeResolver-ByNpC0EP.js';
8
+ export { M as ManifestLookup, a as autonomyLevelLabel, b as buildModeGuide, f as filteredBuildModes, p as parseAutonomyLevel, r as resolveDefaultMode, c as resolveTaskMode, d as runnerModesFrom } from './ModeResolver-ByNpC0EP.js';
9
9
  import { ChildProcess } from 'child_process';
10
- import { b as PlanParseError } from './parsing-C8Z22twN.js';
11
- export { P as PLAN_ENVELOPE_KEY, a as PartialPlanTask, T as TASK_OPS_ENVELOPE_KEY, c as TASK_QUERY_ENVELOPE_KEY, d as checkDepsResolve, e as checkImmutableLog, f as checkInProgress, g as checkNoCycles, h as checkUniqueIds, i as escapeControlCharsInStrings, j as extractJsonObject, k as extractObjectWithBalance, l as extractObjectsWithKey, m as looksLikePlanAttempt, o as opensWithJsonObject, p as parsePartialPlan, n as parsePlanJson, s as stripModelNoise, q as stripTrailingCommas, v as validatePlanModification } from './parsing-C8Z22twN.js';
10
+ import { b as PlanParseError } from './parsing-COPG8-Ep.js';
11
+ export { P as PLAN_ENVELOPE_KEY, a as PartialPlanTask, T as TASK_OPS_ENVELOPE_KEY, c as TASK_QUERY_ENVELOPE_KEY, d as checkDepsResolve, e as checkImmutableLog, f as checkInProgress, g as checkNoCycles, h as checkUniqueIds, i as escapeControlCharsInStrings, j as extractJsonObject, k as extractObjectWithBalance, l as extractObjectsWithKey, m as looksLikePlanAttempt, o as opensWithJsonObject, p as parsePartialPlan, n as parsePlanJson, s as stripModelNoise, q as stripTrailingCommas, v as validatePlanModification } from './parsing-COPG8-Ep.js';
12
12
  export { resolveOrderLabel, taskOrderLabel } from './order-labels.js';
13
13
  import 'events';
14
14
 
@@ -27,77 +27,6 @@ interface SessionData {
27
27
  plan: LegacyPlanState;
28
28
  }
29
29
 
30
- /**
31
- * Which interpreter runs the planner's `bash` tool, and in which language.
32
- *
33
- * `AUTO_COMMANDS` — the read-only tier that runs with no prompt — is `ls`, `cat`,
34
- * `wc`, `head`, `tail`, `du`, `df`, `file`, `sort`, `uniq`, `basename`, `find`,
35
- * `grep`. That set is POSIX, and passing it to `shell: true` on Windows means
36
- * cmd.exe, where most of those names do not exist and `find` is an unrelated
37
- * program that returns plausible wrong output instead of an error. The planner's
38
- * whole research surface degraded to guessing, quietly.
39
- *
40
- * Rather than write a Windows dialect of every research command — a second
41
- * behavior to keep in step forever — this finds a POSIX shell to run the
42
- * existing ones in. Git for Windows ships a full one, and git is already a
43
- * prerequisite for everything Ordewell does, so in practice it is there. Failing
44
- * that, cmd.exe is used and the classifier is told so, because the one thing
45
- * that must never happen is classifying a command in one language and running it
46
- * in another: `commandPolicy` reads {@link ResearchShell.dialect} for exactly
47
- * that reason.
48
- *
49
- * POSIX resolves to `{ file: null }`, meaning "use `shell: true`" — byte for
50
- * byte what the adapters did before this module existed.
51
- *
52
- * Windows paths are built with `path.win32` explicitly, not the host-flavoured
53
- * `path`, so the probe is the same on a Windows host as it is under a Linux
54
- * test runner.
55
- */
56
- type ShellDialect = 'posix' | 'cmd';
57
- interface ResearchShell {
58
- /**
59
- * Executable that takes a command string, or null to use the host default
60
- * via `shell: true`.
61
- */
62
- file: string | null;
63
- /** Arguments preceding the command string. */
64
- args: string[];
65
- /** The language the command string will be interpreted in. */
66
- dialect: ShellDialect;
67
- /**
68
- * Directory holding this shell's POSIX utilities, when it brings its own.
69
- * Prepended to PATH for the search subprocesses (`grep`, `tree`) that
70
- * `execFile` starts without a shell, so they resolve too.
71
- */
72
- utilsDir: string | null;
73
- }
74
- interface ResearchShellDeps {
75
- platform?: NodeJS.Platform;
76
- exists?: (candidate: string) => boolean;
77
- env?: NodeJS.ProcessEnv;
78
- }
79
- /**
80
- * The shell the planner's `bash` tool should use on this host. Resolved once per
81
- * process — the answer cannot change while Ordewell runs, and the probe costs a
82
- * handful of `stat` calls.
83
- */
84
- declare function resolveResearchShell(deps?: ResearchShellDeps): ResearchShell;
85
- /** Test seam: drop the per-process cache so the next call re-probes. */
86
- declare function clearResearchShellCache(): void;
87
- /**
88
- * PATH for the search subprocesses the adapters start without a shell, with the
89
- * research shell's own utilities in front. Without this, `grep` — the fallback
90
- * when ripgrep is absent — is unresolvable on a Windows box even when a
91
- * perfectly good `grep.exe` sits in the Git tree beside the shell.
92
- */
93
- declare function researchToolsPath(shell: ResearchShell, basePath: string | undefined): string;
94
- /**
95
- * A message explaining a degraded research surface, or null when there is
96
- * nothing to explain. Surfaced by the adapters on the first refused command so
97
- * the limitation is visible rather than inferred from bad answers.
98
- */
99
- declare function researchShellWarning(shell: ResearchShell): string | null;
100
-
101
30
  /**
102
31
  * Tiered classification for the planner's `bash` tool.
103
32
  *
@@ -189,6 +118,12 @@ declare const REFUSED_COMMANDS: string[];
189
118
  */
190
119
  interface CommandPolicyOptions {
191
120
  dialect?: ShellDialect;
121
+ /**
122
+ * `CDPATH` is set in the environment the command will run in. A relative
123
+ * `cd` may then land in a directory the command line never names, so `cd`
124
+ * stops being navigation the classifier can follow.
125
+ */
126
+ cdpathSet?: boolean;
192
127
  }
193
128
  type CommandTier = 'auto' | 'ask' | 'refuse';
194
129
  interface CommandClassification {
@@ -205,6 +140,77 @@ interface CommandClassification {
205
140
  */
206
141
  declare function classifyCommand(command: string, opts?: CommandPolicyOptions): CommandClassification;
207
142
 
143
+ /**
144
+ * Which interpreter runs the planner's `bash` tool, and in which language.
145
+ *
146
+ * `AUTO_COMMANDS` — the read-only tier that runs with no prompt — is `ls`, `cat`,
147
+ * `wc`, `head`, `tail`, `du`, `df`, `file`, `sort`, `uniq`, `basename`, `find`,
148
+ * `grep`. That set is POSIX, and passing it to `shell: true` on Windows means
149
+ * cmd.exe, where most of those names do not exist and `find` is an unrelated
150
+ * program that returns plausible wrong output instead of an error. The planner's
151
+ * whole research surface degraded to guessing, quietly.
152
+ *
153
+ * Rather than write a Windows dialect of every research command — a second
154
+ * behavior to keep in step forever — this finds a POSIX shell to run the
155
+ * existing ones in. Git for Windows ships a full one, and git is already a
156
+ * prerequisite for everything Ordewell does, so in practice it is there. Failing
157
+ * that, cmd.exe is used and the classifier is told so, because the one thing
158
+ * that must never happen is classifying a command in one language and running it
159
+ * in another: `commandPolicy` reads {@link ResearchShell.dialect} for exactly
160
+ * that reason.
161
+ *
162
+ * POSIX resolves to `{ file: null }`, meaning "use `shell: true`" — byte for
163
+ * byte what the adapters did before this module existed.
164
+ *
165
+ * Windows paths are built with `path.win32` explicitly, not the host-flavoured
166
+ * `path`, so the probe is the same on a Windows host as it is under a Linux
167
+ * test runner.
168
+ */
169
+ type ShellDialect = 'posix' | 'cmd';
170
+ interface ResearchShell {
171
+ /**
172
+ * Executable that takes a command string, or null to use the host default
173
+ * via `shell: true`.
174
+ */
175
+ file: string | null;
176
+ /** Arguments preceding the command string. */
177
+ args: string[];
178
+ /** The language the command string will be interpreted in. */
179
+ dialect: ShellDialect;
180
+ /**
181
+ * Directory holding this shell's POSIX utilities, when it brings its own.
182
+ * Prepended to PATH for the search subprocesses (`grep`, `tree`) that
183
+ * `execFile` starts without a shell, so they resolve too.
184
+ */
185
+ utilsDir: string | null;
186
+ }
187
+ interface ResearchShellDeps {
188
+ platform?: NodeJS.Platform;
189
+ exists?: (candidate: string) => boolean;
190
+ env?: NodeJS.ProcessEnv;
191
+ }
192
+ /**
193
+ * The shell the planner's `bash` tool should use on this host. Resolved once per
194
+ * process — the answer cannot change while Ordewell runs, and the probe costs a
195
+ * handful of `stat` calls.
196
+ */
197
+ declare function resolveResearchShell(deps?: ResearchShellDeps): ResearchShell;
198
+ /** Test seam: drop the per-process cache so the next call re-probes. */
199
+ declare function clearResearchShellCache(): void;
200
+ /**
201
+ * PATH for the search subprocesses the adapters start without a shell, with the
202
+ * research shell's own utilities in front. Without this, `grep` — the fallback
203
+ * when ripgrep is absent — is unresolvable on a Windows box even when a
204
+ * perfectly good `grep.exe` sits in the Git tree beside the shell.
205
+ */
206
+ declare function researchToolsPath(shell: ResearchShell, basePath: string | undefined): string;
207
+ /**
208
+ * A message explaining a degraded research surface, or null when there is
209
+ * nothing to explain. Surfaced by the adapters on the first refused command so
210
+ * the limitation is visible rather than inferred from bad answers.
211
+ */
212
+ declare function researchShellWarning(shell: ResearchShell): string | null;
213
+
208
214
  /**
209
215
  * The policy half of the planner's filesystem: path confinement, the tiered
210
216
  * `bash` gate, and the definition-first symbol lookup. Adapters supply only the
@@ -265,6 +271,7 @@ declare abstract class BaseFileSystem implements IFileSystem {
265
271
  * containing directory, one entry per distinct scope.
266
272
  */
267
273
  private outsidePaths;
274
+ private policyOptions;
268
275
  /**
269
276
  * Three tiers (see `commandPolicy.ts`): read-only inspection runs silently,
270
277
  * anything else asks once and is remembered, and writes are refused outright
@@ -312,7 +319,8 @@ interface ResolvedPath {
312
319
  abs: string;
313
320
  inside: boolean;
314
321
  }
315
- declare function resolveWithin(root: string, target: string): ResolvedPath;
322
+ /** `from` is where a relative `target` starts; containment is still judged against `root`. */
323
+ declare function resolveWithin(root: string, target: string, from?: string): ResolvedPath;
316
324
  /** The directory a grant covers for `target` — its parent for files, itself for directories. */
317
325
  declare function grantScopeFor(abs: string, kind: 'file' | 'directory'): string;
318
326
 
@@ -469,19 +477,27 @@ interface GrepInvocation {
469
477
  declare function buildGrepArgs(pattern: string, opts: GrepOptions, root: string): GrepInvocation;
470
478
  /** Build the ripgrep invocation that lists files matching a glob. */
471
479
  declare function buildGlobArgs(pattern: string, root: string): string[];
480
+ /**
481
+ * Which regex dialect the machine's `grep` can run: GNU grep has `-P` (PCRE);
482
+ * BSD grep (macOS) rejects it, but its `-E` is the enhanced regex library and
483
+ * reads the same non-capturing groups, `\b`, `\s` and `\d`.
484
+ */
485
+ type GrepRegex = 'pcre' | 'ere';
486
+ /** Run `grep` with these args: it exits 1 ("no match") when `-P` exists and 2 when it does not. */
487
+ declare const GREP_PCRE_PROBE_ARGS: string[];
488
+ declare function grepRegexFromProbe(exitCode: number | null): GrepRegex;
472
489
  /**
473
490
  * The POSIX-grep fallback for machines without ripgrep. Ordering and `--sort`
474
491
  * are unavailable.
475
492
  *
476
- * `-P` (PCRE) is required, not optional: patterns built in core — most
493
+ * A regex mode is required, not optional: patterns built in core — most
477
494
  * notably `find_symbol`'s `definitionPattern` — use non-capturing groups and
478
- * `\b`, which BRE has no syntax for and ERE (`-E`) still cannot express
479
- * ((?:...) is a PCRE construct). Without `-P`, GNU grep either errors
480
- * ("Unmatched \{") or, worse, silently treats `(`/`)`/`|` as literal
481
- * characters and reports a confident empty result. `-P` and `-F` are
482
- * mutually exclusive, so literal mode skips it.
495
+ * `\b`, which BRE has no syntax for. Without `-P` or an enhanced `-E`, grep
496
+ * either errors ("Unmatched \{") or, worse, silently treats `(`/`)`/`|` as
497
+ * literal characters and reports a confident empty result. The regex flags and
498
+ * `-F` are mutually exclusive, so literal mode skips them.
483
499
  */
484
- declare function buildFallbackGrepArgs(pattern: string, opts: GrepOptions, root: string): string[];
500
+ declare function buildFallbackGrepArgs(pattern: string, opts: GrepOptions, root: string, regex?: GrepRegex): string[];
485
501
  /**
486
502
  * GNU grep's own `--include` glob only ever matches a basename, so it silently
487
503
  * matches nothing against an anchored pattern like `subdir/*.txt` (there is no
@@ -1892,6 +1908,8 @@ interface TaskOrchestratorDeps {
1892
1908
  tddEnabled: () => boolean;
1893
1909
  /** Read once as a run opens, never per spawn (ADR-0018, S1). */
1894
1910
  runnerTransport: () => RunnerTransport;
1911
+ /** What the task's last saved attempt did, or null when it left no log (ADR-0020). */
1912
+ previousAttemptFromLog: (taskId: string) => string | null;
1895
1913
  }
1896
1914
  /**
1897
1915
  * What a caller supplies to {@link createTaskOrchestrator}; every optional one
@@ -1910,6 +1928,7 @@ interface TaskOrchestratorOptions {
1910
1928
  workspaceEnv?: (cwd: string) => Promise<WorkspaceEnv>;
1911
1929
  tddEnabled?: () => boolean;
1912
1930
  runnerTransport?: () => RunnerTransport;
1931
+ previousAttemptFromLog?: (taskId: string) => string | null;
1913
1932
  }
1914
1933
  /**
1915
1934
  * The pure scheduler. Owns execution state (`running`, `planStatus`,
@@ -1967,6 +1986,7 @@ declare class TaskOrchestrator {
1967
1986
  private observers;
1968
1987
  private tddEnabled;
1969
1988
  private readRunnerTransport;
1989
+ private previousAttemptFromLog;
1970
1990
  /**
1971
1991
  * The setting as the latest run copied it when it opened. Every spawn of
1972
1992
  * that run uses this, so flipping the setting mid-run changes the next run
@@ -1984,6 +2004,14 @@ declare class TaskOrchestrator {
1984
2004
  static compose(options: TaskOrchestratorOptions): TaskOrchestrator;
1985
2005
  /** Advisory silence timestamp for a task's live runner, or null if not idle. */
1986
2006
  getIdleSince(taskId: string): string | null;
2007
+ /**
2008
+ * What an ops retry is told about the attempt before. The saved log is read
2009
+ * whether or not the session was reloaded, so both behave alike; the terminal
2010
+ * buffer is the fallback for a runner that has no log. A reload clears the
2011
+ * attempt count along with the buffer, so a retry made since is what says
2012
+ * there was an attempt to report on.
2013
+ */
2014
+ private opsPreviousAttempt;
1987
2015
  /** Recent clean output of a task's latest attempt, running or ended; null if it never ran. */
1988
2016
  getLiveOutput(taskId: string, opts: LiveTailOptions): LiveTail | null;
1989
2017
  get storeInstance(): PlanStore;
@@ -3015,6 +3043,8 @@ declare class OpenCodeAdapter implements TaskModeAgentAdapter {
3015
3043
  private interruptRequested;
3016
3044
  /** A task's requests waiting for an answer, by request id, with the session that asked. */
3017
3045
  private readonly openPermissions;
3046
+ /** Set once the server turns out to speak the 2.x API, which then owns the session. */
3047
+ private v2;
3018
3048
  constructor(deps: AgentProcessDeps);
3019
3049
  start(opts: AgentStartOptions): Promise<void>;
3020
3050
  send(message: string, onEvent: (event: AgentEvent) => void, signal?: AbortSignal, onActivity?: () => void): Promise<void>;
@@ -3055,6 +3085,12 @@ declare class OpenCodeAdapter implements TaskModeAgentAdapter {
3055
3085
  interrupt(timeoutMs: number): Promise<boolean>;
3056
3086
  onProcessExit(listener: (code: number) => void): void;
3057
3087
  answerPermission(id: string, decision: ApprovalDecision): boolean;
3088
+ /**
3089
+ * OpenCode 2.x replaced the 1.x HTTP surface rather than extending it, and
3090
+ * only 2.x answers `/api/info` with its version. A 1.x server — or one that
3091
+ * answers with anything else — keeps the 1.x protocol this class speaks.
3092
+ */
3093
+ private speaksV2;
3058
3094
  private role;
3059
3095
  /**
3060
3096
  * Turn one settled assistant message into events. The settled response is
@@ -3657,13 +3693,6 @@ interface SessionRuntimeSettings {
3657
3693
  /** Read once as a run starts, never per spawn (ADR-0018, S1). Absent means terminal. */
3658
3694
  runnerTransport?: RunnerTransport;
3659
3695
  }
3660
- /**
3661
- * The whole of what a host reads off disk for a Session. Both hosts used to
3662
- * assemble this by hand, mapping each toggle's settings key to its runtime key
3663
- * in two blocks nothing kept in step — which is how one toggle came to be
3664
- * dropped. `MODE_TOGGLES` holds the mapping now; this adds the one field that
3665
- * is not a toggle.
3666
- */
3667
3696
  declare function sessionRuntimeSettings(settings: UserSettings): SessionRuntimeSettings;
3668
3697
  /**
3669
3698
  * Resolve `/skill-name` invocations to their skill's markdown content. Pure
@@ -4261,6 +4290,12 @@ declare class VerdictEngine {
4261
4290
  private idleSince;
4262
4291
  /** Tasks waiting on the user, whose silence is expected rather than a sign of a stuck runner. */
4263
4292
  private idlePaused;
4293
+ /**
4294
+ * Open tool approvals per structured task. They arrive mid-turn and leave the
4295
+ * status alone (ADR-0018, W1), but a task waiting on one is waiting on the
4296
+ * user, so it is not idle either.
4297
+ */
4298
+ private openApprovals;
4264
4299
  onVerdict(listener: VerdictListener): void;
4265
4300
  onCheckpoint(listener: CheckpointListener): void;
4266
4301
  onIdleChange(listener: IdleListener): void;
@@ -4293,6 +4328,8 @@ declare class VerdictEngine {
4293
4328
  * when the marker was never observed.
4294
4329
  */
4295
4330
  watch(task: Task, session: ITerminalSession): void;
4331
+ private approvalOpened;
4332
+ private approvalClosed;
4296
4333
  /** Scan only the new text plus the unmatched carry, so a long run stays linear. */
4297
4334
  private scanCheckpoints;
4298
4335
  private bumpGeneration;
@@ -4628,6 +4665,8 @@ declare function buildRunnerInvocation(opts: {
4628
4665
  headless?: boolean;
4629
4666
  interactive?: boolean;
4630
4667
  cwd?: string;
4668
+ /** The installed runner's `--version`, for a manifest whose command line differs by major version. */
4669
+ runnerVersion?: string;
4631
4670
  registry: RunnerRegistry;
4632
4671
  }): RunnerInvocation;
4633
4672
 
@@ -4684,6 +4723,8 @@ interface TmuxRunnerDeps {
4684
4723
  pollIntervalMs?: number;
4685
4724
  logDir?: string;
4686
4725
  clipboardCommand?: () => string | null;
4726
+ /** Reads the runner's version, for a manifest whose command line differs by major version. */
4727
+ runnerVersion?: RunnerVersionProbe;
4687
4728
  }
4688
4729
  declare class TmuxSession extends AbstractTerminalSession {
4689
4730
  private tmuxSession;
@@ -4753,6 +4794,7 @@ declare class TmuxRunner extends AbstractRunner<TmuxSession> {
4753
4794
  private pollIntervalMs;
4754
4795
  private logDir;
4755
4796
  private clipboardCommand;
4797
+ private runnerVersion;
4756
4798
  /** Retries get a freshly named window so a failed attempt's output stays inspectable. */
4757
4799
  private attempts;
4758
4800
  private ready;
@@ -5403,4 +5445,4 @@ declare const DEFAULT_MAX_PARALLEL = 3;
5403
5445
  */
5404
5446
  declare function parseMaxParallel(value: unknown): number | null;
5405
5447
 
5406
- export { ALLOWED_PLUGIN_HOSTS, ALL_PROVIDERS, AUTO_COMMANDS, AbstractRunner, AbstractTerminalSession, ActiveTaskSession, type Adr0013IsolationRun, type Adr0013PlanIsolation, type Adr0013TaskRecord, AgentAdapter, AgentEvent, AgentProcessDeps, AgentStartOptions, AiProvider, ApplyTaskOpsResult, ApprovalAnswer, ApprovalDecision, ApprovalMode, ApprovalPolicy, ApprovalRequest, type AskOptions, AwaitingReason, BUILTIN_SKILL_NAMES, BaseAiService, BaseConfig, BaseFileSystem, BufferedTaskOutputSource, CLAUDE_CODE_MANIFEST, CLI_PROVIDERS, CORE_PLANNER_PROMPT, type CappedRows, type CheckpointListener, ClaudeCodeAdapter, CliAgentAiService, type CliAgentAiServiceDeps, CodexAdapter, type CommandClassification, type CommandTier, type ComposeOptions, ConsoleLogger, ContextCollector, type Continuability, ConversationBusyError, type ConversationCompaction, ConversationEditError, type ConversationFork, ConversationMessage, type ConversationRequest, type ConversationRewind, type ConversationTurn, type ConversationVariant, DAEMON_SUBPROTOCOL, DAEMON_TOKEN_SUBPROTOCOL_PREFIX, DEFAULT_MAX_PARALLEL, DiscoveredModel, type EnvAdmission, EnvConfig, type ExecFileFn, type ExecImpl, FindSymbolOptions, FsPluginStore, GIT_READONLY_SUBCOMMANDS, GeminiService, type GitExecFn, GlobOptions, type GrepInvocation, GrepOptions, type HasBinFn, HomeTranscriptReader, type IAiService, IApproval, IConfig, IFileSystem, type ILogger, type INotification, IPluginStore, ITerminalRunner, ITerminalSession, IWorktreeIsolation, IsolationHandoff, IsolationLandedTask, IsolationMergeResult, IsolationOutcome, IsolationRun, IsolationTaskRecord, IsolationTaskStatus, IsolationView, JSON_REPAIR_INSTRUCTION, type KillTreeDeps, LegacyPlanState, type LiveOutputLookup, type LiveTail, type LiveTailOptions, type MappedTool, MergeGateView, ModelResolver, type ModelResolverDeps, type ModifyPlanRequest, type NotificationAction, OPENCODE_MANIFEST, ORDEWELL_SETTABLE_ENV, OUTPUT_LINES_DEFAULT, OUTPUT_LINES_MAX, OpenAiService, OpenCodeAdapter, type OrchestratorObserver, OrchestratorOption, PLUGIN_NAME_PATTERN, PROVIDER_CREDENTIAL_ENV, PROVIDER_DETECT_PRIORITY, PROVIDER_LABEL, PROVIDER_PRIORITY, PROVIDER_SHORT_LABEL, type PendingApproval, PendingApprovals, type PendingApprovalsOptions, PlanEditError, PlanIsolation, PlanParseError, type PlanRequest, PlanState, PlanStatus, PlanStore, Planner, type PlannerModelCandidate, type PlannerModelChoice, PlannerModelMemory, type PlannerModelRecall, type PlannerModelStore, type PlannerReplyClassification, type PlannerRuntimeToggles, PlannerUsage, type PluginSource, type PrdBlock, type PriorOutput, type ProbeFn, ProviderModelLists, type ProviderRegistration, QueuedMessage, QueuedTaskMessage, REFUSED_COMMANDS, ReadFileOpts, RepairEvidence, type RepairLoopOpts, type RepairVerdict, RepoGroupLayout, type ResearchChat, ResearchLogEntry, ResearchProgress, type ResearchShell, type ResearchShellDeps, ResearchToolType, type ResearchTurn, ResolveContext, type RewindTarget, RunnerApprovals, type RunnerCatalog, RunnerId, RunnerInstallation, RunnerInvocation, type RunnerMode, RunnerModeInfo, RunnerPluginManifest, RunnerRegistry, RunnerSpawnOptions, RunnerTransport, SETTINGS_ENV_ALLOWLIST, SETTINGS_ENV_REFUSED, STATE_DIR, STOPPED_TOOL_RESULT, SYMBOL_LANGUAGES, type SaveSession, Session, SessionBroadcaster, type SessionData, type SessionDeps, SessionMessage, type SessionMeta, SessionNotice, type SessionPlanner, type SessionRuntimeSettings, SettingsService, type ShellDialect, type SkillInfo, type SkillMetadata, SkillsService, type SpawnSpec, StdioAgentAdapter, StructuredEvent, StructuredRunner, type StructuredRunnerDeps, StructuredSession, StructuredSessionCapability, StructuredTurnEnd, TASK_QUERY_ANSWER_MAX_CHARS, TASK_QUERY_ANSWER_OR_OPS, TASK_QUERY_FIELDS, TASK_QUERY_PROTOCOL, TASK_QUERY_REMINDER, TRUNCATED_PLAN_REPAIR_INSTRUCTION, Task, type TaskAttemptSnapshot, TaskControlError, TaskIsolation, TaskLogEvent, type TaskLogFile, type TaskLogLocation, TaskLogRecorder, type TaskLogRecorderDeps, TaskModeAgentAdapter, TaskOp, TaskOrchestrator, type TaskOrchestratorDeps, type TaskOrchestratorOptions, type TaskOutputAttempt, type TaskOutputSource, type TaskQuery, type TaskQueryCatalog, type TaskQueryField, TaskRunnerFlags, TaskSnapshot, TaskStartOptions, TmuxRunner, type TmuxRunnerDeps, type TokenCarriers, type ToolCall, ToolOutcome, type ToolResult, type TranscriptQuery, type TranscriptReader, type TransportRoute, TransportRouter, TreeSnapshot, UsageRecord, type UserSettings, Verdict, VerdictEngine, type VerdictListener, type WorkspaceCheckDeps, WorkspaceNotAProjectError, WorkspaceNotFoundError, type WorkspaceProjectCheckDeps, type WorktreeIsolationDeps, admitSettingsEnv, applyHeadLimit, assertInstallablePluginUrl, assertPlainPluginName, assertWorkspaceExists, assertWorkspaceIsProject, augmentPromptWithPriorOutputs, augmentedPath, bearerHeaderValue, buildConflictRepairPrompt, buildConflictResolutionPrompt, buildConversationSystemPrompt, buildFallbackGrepArgs, buildGlobArgs, buildGrepArgs, buildMergePrompt, buildModifyDuringExecutionPrompt, buildModifyPlanPrompt, buildPlanWithResults, buildResearchPrompt, buildResearchToolsPrompt, buildRunnerInvocation, buildSplitPrompt, buildSubagentSystemPrompt, canContinue, clampThinkingEffort, classifyCommand, classifyPlannerReply, classifyPluginSource, clearAugmentedPathCache, clearDaemonToken, clearResearchShellCache, clearState, clipboardCopyCommand, coerceAssignments, collectDirectDependencyOutputs, composeAugmentedPrompt, composeContinuationPrompt, configuredProviders, continuability, createAiService, createSession, createSkillsService, createTaskAdapter, createTaskOrchestrator, createWorktreeIsolation, daemonTokenPath, defaultLogger, definitionPattern, deleteSession, describeMergeResult, discoverGeminiModels, effectiveAllowlist, ensureDir, ensurePrivateDir, ensureStateDirIgnored, executionLogBlock, extractPrdBlock, extractPresentedToken, filterFallbackByAnchoredInclude, filterModelsForPrompt, formatSearchOutput, generatePlanWithRepair, getLatestSession, getProviderMeta, getSettingsPath, getStateDir, globalDataDir, grantScopeFor, hasTmux, idSegment, includeGlobFor, isCliProvider, isOpenAiProvider, isPlainPluginName, isValidManifest, killTree, languageForId, listSessions, listTaskLogAttempts, loadSession, loadSessionPlanState, loadState, mapAgentTool, migrateOldConfigDir, migratePlanIsolation, mintDaemonToken, mintSessionId, modelContextBlock, modifyValidationFeedback, normalizeAgentArgs, normalizeGeminiModel, openTaskLog, parseMaxParallel, parseTaskQueryJson, pendingEditRulesBlock, prefixModelId, providerForRunner, reEmitPlanPrompt, reEmitTaskOpsPrompt, reEmitTaskQueryPrompt, readDaemonToken, readTaskLog, referencePattern, renderPlanMap, renderPriorOutputs, renderTaskQueryAnswer, repairLoop, researchShellWarning, researchToolsPath, resolveArgs, resolvePluginInstallDir, resolveProviderFromPrefix, resolveResearchShell, resolveSkillInvocation, resolveTaskRunnerFlags, resolveWithin, retargetTaskRunner, routeTransport, runnerAssignment, runnerForProvider, sanitizeSlug, savePrdMarkdown, saveSession, saveState, sessionDataDir, sessionRuntimeSettings, stateExists, stripModelPrefix, summarizeOutput, supportsTaskMode, taskOpsRejectedPrompt, taskQuerySignature, textHasTaskQuery, tmuxSessionName, tmuxSocketName, tmuxWindowName, tokenSubprotocols, tokensMatch, truncatedPlanReEmitPrompt, wellKnownBinDirs, withPath, writePrivateFile };
5448
+ export { ALLOWED_PLUGIN_HOSTS, ALL_PROVIDERS, AUTO_COMMANDS, AbstractRunner, AbstractTerminalSession, ActiveTaskSession, type Adr0013IsolationRun, type Adr0013PlanIsolation, type Adr0013TaskRecord, AgentAdapter, AgentEvent, AgentProcessDeps, AgentStartOptions, AiProvider, ApplyTaskOpsResult, ApprovalAnswer, ApprovalDecision, ApprovalMode, ApprovalPolicy, ApprovalRequest, type AskOptions, AwaitingReason, BUILTIN_SKILL_NAMES, BaseAiService, BaseConfig, BaseFileSystem, BufferedTaskOutputSource, CLAUDE_CODE_MANIFEST, CLI_PROVIDERS, CORE_PLANNER_PROMPT, type CappedRows, type CheckpointListener, ClaudeCodeAdapter, CliAgentAiService, type CliAgentAiServiceDeps, CodexAdapter, type CommandClassification, type CommandTier, type ComposeOptions, ConsoleLogger, ContextCollector, type Continuability, ConversationBusyError, type ConversationCompaction, ConversationEditError, type ConversationFork, ConversationMessage, type ConversationRequest, type ConversationRewind, type ConversationTurn, type ConversationVariant, DAEMON_SUBPROTOCOL, DAEMON_TOKEN_SUBPROTOCOL_PREFIX, DEFAULT_MAX_PARALLEL, DiscoveredModel, type EnvAdmission, EnvConfig, type ExecFileFn, type ExecImpl, FindSymbolOptions, FsPluginStore, GIT_READONLY_SUBCOMMANDS, GREP_PCRE_PROBE_ARGS, GeminiService, type GitExecFn, GlobOptions, type GrepInvocation, GrepOptions, type GrepRegex, type HasBinFn, HomeTranscriptReader, type IAiService, IApproval, IConfig, IFileSystem, type ILogger, type INotification, IPluginStore, ITerminalRunner, ITerminalSession, IWorktreeIsolation, IsolationHandoff, IsolationLandedTask, IsolationMergeResult, IsolationOutcome, IsolationRun, IsolationTaskRecord, IsolationTaskStatus, IsolationView, JSON_REPAIR_INSTRUCTION, type KillTreeDeps, LegacyPlanState, type LiveOutputLookup, type LiveTail, type LiveTailOptions, type MappedTool, MergeGateView, ModelResolver, type ModelResolverDeps, type ModifyPlanRequest, type NotificationAction, OPENCODE_MANIFEST, ORDEWELL_SETTABLE_ENV, OUTPUT_LINES_DEFAULT, OUTPUT_LINES_MAX, OpenAiService, OpenCodeAdapter, type OrchestratorObserver, OrchestratorOption, PLUGIN_NAME_PATTERN, PROVIDER_CREDENTIAL_ENV, PROVIDER_DETECT_PRIORITY, PROVIDER_LABEL, PROVIDER_PRIORITY, PROVIDER_SHORT_LABEL, type PendingApproval, PendingApprovals, type PendingApprovalsOptions, PlanEditError, PlanIsolation, PlanParseError, type PlanRequest, PlanState, PlanStatus, PlanStore, Planner, type PlannerModelCandidate, type PlannerModelChoice, PlannerModelMemory, type PlannerModelRecall, type PlannerModelStore, type PlannerReplyClassification, type PlannerRuntimeToggles, PlannerUsage, type PluginSource, type PrdBlock, type PriorOutput, type ProbeFn, ProviderModelLists, type ProviderRegistration, QueuedMessage, QueuedTaskMessage, REFUSED_COMMANDS, ReadFileOpts, RepairEvidence, type RepairLoopOpts, type RepairVerdict, RepoGroupLayout, type ResearchChat, ResearchLogEntry, ResearchProgress, type ResearchShell, type ResearchShellDeps, ResearchToolType, type ResearchTurn, ResolveContext, type RewindTarget, RunnerApprovals, type RunnerCatalog, RunnerId, RunnerInstallation, RunnerInvocation, type RunnerMode, RunnerModeInfo, RunnerPluginManifest, RunnerRegistry, RunnerSpawnOptions, RunnerTransport, SETTINGS_ENV_ALLOWLIST, SETTINGS_ENV_REFUSED, STATE_DIR, STOPPED_TOOL_RESULT, SYMBOL_LANGUAGES, type SaveSession, Session, SessionBroadcaster, type SessionData, type SessionDeps, SessionMessage, type SessionMeta, SessionNotice, type SessionPlanner, type SessionRuntimeSettings, SettingsService, type ShellDialect, type SkillInfo, type SkillMetadata, SkillsService, type SpawnSpec, StdioAgentAdapter, StructuredEvent, StructuredRunner, type StructuredRunnerDeps, StructuredSession, StructuredSessionCapability, StructuredTurnEnd, TASK_QUERY_ANSWER_MAX_CHARS, TASK_QUERY_ANSWER_OR_OPS, TASK_QUERY_FIELDS, TASK_QUERY_PROTOCOL, TASK_QUERY_REMINDER, TRUNCATED_PLAN_REPAIR_INSTRUCTION, Task, type TaskAttemptSnapshot, TaskControlError, TaskIsolation, TaskLogEvent, type TaskLogFile, type TaskLogLocation, TaskLogRecorder, type TaskLogRecorderDeps, TaskModeAgentAdapter, TaskOp, TaskOrchestrator, type TaskOrchestratorDeps, type TaskOrchestratorOptions, type TaskOutputAttempt, type TaskOutputSource, type TaskQuery, type TaskQueryCatalog, type TaskQueryField, TaskRunnerFlags, TaskSnapshot, TaskStartOptions, TmuxRunner, type TmuxRunnerDeps, type TokenCarriers, type ToolCall, ToolOutcome, type ToolResult, type TranscriptQuery, type TranscriptReader, type TransportRoute, TransportRouter, TreeSnapshot, UsageRecord, type UserSettings, Verdict, VerdictEngine, type VerdictListener, type WorkspaceCheckDeps, WorkspaceNotAProjectError, WorkspaceNotFoundError, type WorkspaceProjectCheckDeps, type WorktreeIsolationDeps, admitSettingsEnv, applyHeadLimit, assertInstallablePluginUrl, assertPlainPluginName, assertWorkspaceExists, assertWorkspaceIsProject, augmentPromptWithPriorOutputs, augmentedPath, bearerHeaderValue, buildConflictRepairPrompt, buildConflictResolutionPrompt, buildConversationSystemPrompt, buildFallbackGrepArgs, buildGlobArgs, buildGrepArgs, buildMergePrompt, buildModifyDuringExecutionPrompt, buildModifyPlanPrompt, buildPlanWithResults, buildResearchPrompt, buildResearchToolsPrompt, buildRunnerInvocation, buildSplitPrompt, buildSubagentSystemPrompt, canContinue, clampThinkingEffort, classifyCommand, classifyPlannerReply, classifyPluginSource, clearAugmentedPathCache, clearDaemonToken, clearResearchShellCache, clearState, clipboardCopyCommand, coerceAssignments, collectDirectDependencyOutputs, composeAugmentedPrompt, composeContinuationPrompt, configuredProviders, continuability, createAiService, createSession, createSkillsService, createTaskAdapter, createTaskOrchestrator, createWorktreeIsolation, daemonTokenPath, defaultLogger, definitionPattern, deleteSession, describeMergeResult, discoverGeminiModels, effectiveAllowlist, ensureDir, ensurePrivateDir, ensureStateDirIgnored, executionLogBlock, extractPrdBlock, extractPresentedToken, filterFallbackByAnchoredInclude, filterModelsForPrompt, formatSearchOutput, generatePlanWithRepair, getLatestSession, getProviderMeta, getSettingsPath, getStateDir, globalDataDir, grantScopeFor, grepRegexFromProbe, hasTmux, idSegment, includeGlobFor, isCliProvider, isOpenAiProvider, isPlainPluginName, isValidManifest, killTree, languageForId, listSessions, listTaskLogAttempts, loadSession, loadSessionPlanState, loadState, mapAgentTool, migrateOldConfigDir, migratePlanIsolation, mintDaemonToken, mintSessionId, modelContextBlock, modifyValidationFeedback, normalizeAgentArgs, normalizeGeminiModel, openTaskLog, parseMaxParallel, parseTaskQueryJson, pendingEditRulesBlock, prefixModelId, providerForRunner, reEmitPlanPrompt, reEmitTaskOpsPrompt, reEmitTaskQueryPrompt, readDaemonToken, readTaskLog, referencePattern, renderPlanMap, renderPriorOutputs, renderTaskQueryAnswer, repairLoop, researchShellWarning, researchToolsPath, resolveArgs, resolvePluginInstallDir, resolveProviderFromPrefix, resolveResearchShell, resolveSkillInvocation, resolveTaskRunnerFlags, resolveWithin, retargetTaskRunner, routeTransport, runnerAssignment, runnerForProvider, sanitizeSlug, savePrdMarkdown, saveSession, saveState, sessionDataDir, sessionRuntimeSettings, stateExists, stripModelPrefix, summarizeOutput, supportsTaskMode, taskOpsRejectedPrompt, taskQuerySignature, textHasTaskQuery, tmuxSessionName, tmuxSocketName, tmuxWindowName, tokenSubprotocols, tokensMatch, truncatedPlanReEmitPrompt, wellKnownBinDirs, withPath, writePrivateFile };