@ordewell/core 0.10.4 → 0.10.5

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 (46) hide show
  1. package/dist/{IFileSystem-_effm8-b.d.ts → IFileSystem-ClBdp59f.d.ts} +1 -1
  2. package/dist/{IFileSystem-vyqMdL-x.d.mts → IFileSystem-Db34maxC.d.mts} +1 -1
  3. package/dist/{IRunner-D_UkkMbJ.d.ts → IRunner-Crkt3tHD.d.ts} +64 -3
  4. package/dist/{IRunner-NtTHQgLR.d.mts → IRunner-lMQIa5Wc.d.mts} +64 -3
  5. package/dist/{ModeResolver-wnTFsDnF.d.mts → ModeResolver-B4hhABNf.d.mts} +1 -1
  6. package/dist/{ModeResolver-Dy3Ef6p-.d.ts → ModeResolver-CUR5jCSU.d.ts} +1 -1
  7. package/dist/{Task-DZs9eKgg.d.mts → Task-D4QHjdGv.d.mts} +92 -10
  8. package/dist/{Task-DZs9eKgg.d.ts → Task-D4QHjdGv.d.ts} +92 -10
  9. package/dist/{chunk-A57ITQE7.mjs → chunk-4QLFM73A.mjs} +34 -5
  10. package/dist/chunk-4QLFM73A.mjs.map +1 -0
  11. package/dist/{chunk-FH6M5QZG.mjs → chunk-6LEA6WAM.mjs} +88 -7
  12. package/dist/chunk-6LEA6WAM.mjs.map +1 -0
  13. package/dist/{chunk-645FALZX.mjs → chunk-F3KIX7WR.mjs} +3 -3
  14. package/dist/{chunk-OYUSADFM.mjs → chunk-NJGID6BG.mjs} +3 -1
  15. package/dist/chunk-NJGID6BG.mjs.map +1 -0
  16. package/dist/{chunk-SM6BV6XS.mjs → chunk-RT4NQ2BZ.mjs} +3 -1
  17. package/dist/chunk-RT4NQ2BZ.mjs.map +1 -0
  18. package/dist/index.d.mts +296 -64
  19. package/dist/index.d.ts +296 -64
  20. package/dist/index.js +1576 -376
  21. package/dist/index.js.map +1 -1
  22. package/dist/index.mjs +1455 -362
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/parsing.d.mts +2 -2
  25. package/dist/parsing.d.ts +2 -2
  26. package/dist/parsing.js.map +1 -1
  27. package/dist/parsing.mjs +3 -3
  28. package/dist/{plan-utils-POIz5d8z.d.ts → plan-utils-BVJCzNvm.d.ts} +204 -19
  29. package/dist/{plan-utils-CtKceSsQ.d.mts → plan-utils-wI8MuDBC.d.mts} +204 -19
  30. package/dist/plan-utils.d.mts +4 -4
  31. package/dist/plan-utils.d.ts +4 -4
  32. package/dist/plan-utils.js +94 -5
  33. package/dist/plan-utils.js.map +1 -1
  34. package/dist/plan-utils.mjs +13 -3
  35. package/dist/testing.d.mts +6 -3
  36. package/dist/testing.d.ts +6 -3
  37. package/dist/testing.js +7 -0
  38. package/dist/testing.js.map +1 -1
  39. package/dist/testing.mjs +7 -2
  40. package/dist/testing.mjs.map +1 -1
  41. package/package.json +1 -1
  42. package/dist/chunk-A57ITQE7.mjs.map +0 -1
  43. package/dist/chunk-FH6M5QZG.mjs.map +0 -1
  44. package/dist/chunk-OYUSADFM.mjs.map +0 -1
  45. package/dist/chunk-SM6BV6XS.mjs.map +0 -1
  46. /package/dist/{chunk-645FALZX.mjs.map → chunk-F3KIX7WR.mjs.map} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { af as Task, E as ExecutionActor, r as IsolationMergeResult, f as ExecutionRecord, g as GuardTrip, ae as SupervisorLevel, e as ExecutionCommandName, G as GuardTarget, a2 as RunnerId, d as DiscoveredModel, Z as ResearchProgress, Y as ResearchLogEntry, C as ConversationMessage, a7 as SkillInfo, a8 as SkillLoad, ac as SkillsService, L as LegacyPlanState, N as PlanStatus, n as IsolationLandedTask, I as IWorktreeIsolation, F as IsolationTaskStatus, J as PlanIsolation, ar as UsageRecord, a0 as ResearchToolType, Q as PlannerUsage, an as TaskSnapshot, K as PlanState, H as IsolationView, at as Verdict, am as TaskSkillSnapshot } from './Task-DZs9eKgg.js';
2
- export { A as ApprovalRecord, a as AttemptUsage, b as AwaitingReason, B as BUILTIN_SKILL_NAMES, D as DEFAULT_RUNNERS, c as DEFAULT_SUPERVISOR_RETRY_LIMIT, h as IntegrationDisposal, i as InvalidSkill, j as IsolationAvailability, k as IsolationHandoff, l as IsolationHandoffRepo, m as IsolationInactiveReason, o as IsolationLanding, p as IsolationMergeBlock, q as IsolationMergeBlockReason, s as IsolationOutcome, t as IsolationPruneResult, u as IsolationRemoval, v as IsolationRepo, w as IsolationRun, x as IsolationTaskRecord, y as IsolationTaskRef, z as IsolationTaskRepo, M as ModelUsage, O as PlanUsage, R as PrepareIntent, S as PreparedTask, T as PreservedWork, U as PreviousWork, V as RefusedRemoval, W as RepairEvidence, X as RepoGroupLayout, _ as ResearchStep, $ as ResearchStepOutcome, a1 as RunSettings, a3 as SetupFailure, a4 as ShadowedSkill, a5 as SkillAppliesTo, a6 as SkillCatalog, a9 as SkillLoadNotice, aa as SkillMetadata, ab as SkillSource, ai as TaskIsolation, aj as TaskIsolationState, ak as TaskModelAssignment, ao as TaskStatus, ap as TreeSnapshot, aq as UsageLine, as as UsageTotals, au as VerificationCheck, av as addAttemptUsage, aw as addModelUsage, ax as addPlannerUsage, ay as addUsage, az as addUsageTotals, aA as createEmptyPlan, aB as createSkillsService, aC as createTask, aD as endAttemptUsage, aE as flattenTasks, aF as flattenTasksWithParents, aG as isAwaitingReason, aH as isMeasured, aI as isSupervisorLevel, aJ as isUserMessage, aK as migratePlanState, aL as partedPromptUsage, aM as pausedOnLimit, aN as planUsage, aO as plannerContextFill, aP as rejoinPlanTree, aQ as startAttemptUsage, aR as usageLine, aS as waitsForApproval } from './Task-DZs9eKgg.js';
3
- import { ah as StartAdmission, w as LiveTailOptions, L as LiveTail, U as PlannerModes, at as TaskOp, u as IsolatedExecution, aa as SessionBroadcaster, b as ApplyTaskOpsResult, af as SkillLookup, ac as SessionNotice, q as EditCatalog, ab as SessionMessage, T as PlanStore, au as TaskOrchestrator, v as IsolationRunController, O as OrchestratorObserver, ar as TaskLogEvent, I as INotification, s as GlobalRunSettings, a1 as RunView, Z as RunMergeView, ax as TaskOutputSource, aO as UserSettings, al as SurfacePlan, am as SurfacePlanState } from './plan-utils-POIz5d8z.js';
4
- export { A as ACT_RISK, a as AUTORUN_RISK, c as ApprovalBlock, d as ApprovalStatus, e as AutoMergeTrigger, B as BlockingSubject, C as CHECKPOINT_TRUNCATE_LENGTH, f as CommandBlock, g as CommandStatus, h as CompactionBlock, i as ConversationInput, j as ConversationView, D as DiffRow, k as DiffRowKind, l as DiffStat, m as DisplayBlock, E as EMPTY_CONVERSATION, n as EMPTY_HOLD, o as EMPTY_RUN, p as EMPTY_TASK_LOG, r as ExecutionSummary, G as GatedConversation, H as HeldEdit, t as HeldEditMark, x as LocalEntry, M as MarkdownToken, y as MessageBlock, z as MessageRole, N as NOT_STARTED, F as NO_TURN, J as NewTaskFields, K as NotificationAction, P as OutputPreview, Q as PlanBlock, R as PlanMarkerStatus, S as PlanSnapshot, V as PromptHold, W as RUN_SETTINGS_DEFAULTS, Y as RunInput, _ as RunSettingsError, $ as RunTask, a0 as RunTaskStatus, a2 as RunnerLoadedBlock, a3 as STOPPED_BEFORE_START, a4 as SUPERVISOR_LEVEL_LABEL, a5 as SerializedConversationMessage, a6 as SerializedPendingTurn, a7 as SerializedPlan, a8 as SerializedTask, a9 as SerializedTaskStatus, ad as SettingsService, ae as SkillLoadBlock, ag as SkillToken, ai as SubagentBlock, aj as SubagentChild, ak as SubagentStatus, an as SurfaceTask, ao as TakenPrompt, ap as TaskAttemptSnapshot, aq as TaskControlError, as as TaskLogView, av as TaskOrchestratorDeps, aw as TaskOrchestratorOptions, ay as TaskRef, az as TaskRowAction, aA as TaskRowContext, aB as TaskRowIsolation, aC as TaskRowKind, aD as TaskRowPlacement, aE as TaskRowSubject, aF as TaskRowUsage, aG as TaskRowView, aH as TaskStatusKind, aI as ThinkingDisplayBlock, aJ as ToolBlock, aK as ToolHeadline, aL as ToolStatus, aM as TurnGate, aN as UsageBlock, aP as WAITS_FOR_APPROVAL_LABEL, aQ as aheadOfDraft, aR as applyTaskOps, aS as approvalLabel, aT as automergeSummary, aU as autorunSummary, aV as awaitingLabel, aW as blockedByLabel, aX as blockingFailures, aY as canMergeTasks, aZ as canSetDependencies, a_ as canSplitTask, a$ as capConflictFiles, b0 as classifyOutcome, b1 as coalesceTaskLog, b2 as dependencyCandidates, b3 as dependentsNotice, b4 as dependentsOf, b5 as diffRows, b6 as diffStat, b7 as diffSummary, b8 as digestTaskLog, b9 as drainNext, ba as executionSummary, bb as followTurn, bc as fromTranscript, bd as getSettingsPath, be as hasHiddenDetail, bf as holdPrompt, bg as isTaskRunning, bh as loadedSkillTokens, bi as markAction, bj as markRequestFor, bk as markdownHtml, bl as markdownTokens, bm as namedRepos, bn as newTaskFields, bo as opsEditable, bp as outputLines, bq as outputPreview, br as parseCount, bs as parseSwitch, bt as parseTaskOpsJson, bu as pastGateConfirmation, bv as reconcileApprovals, bw as reduceConversation, bx as reduceRun, by as reduceTaskLog, bz as replayTaskLog, bA as resolveTaskRef, bB as resumeLabel, bC as resumeTime, bD as runSettingsOf, bE as runnerToolSubject, bF as serializePlan, bG as serializeTask, bH as serializeTaskStatus, bI as skillTokens, bJ as skippedLabel, bK as stopTurn, bL as summarizeToolCall, bM as supervisorSummary, bN as surfacePlan, bO as surfacePlanState, bP as takeAt, bQ as taskLogForSurface, bR as taskOrderLabel, bS as taskRef, bT as taskRefOf, bU as taskRowActions, bV as taskRowView, bW as taskStartedNotice, bX as taskStatusKind, bY as textHasTaskOps, bZ as titledRefs, b_ as titledTaskRef, b$ as titledTaskRefOf, c0 as toTaskLogEvent, c1 as toolHeadline, c2 as trimToolOutput, c3 as truncateCheckpointSummary, c4 as unsendAll, c5 as unsendLatest } from './plan-utils-POIz5d8z.js';
5
- import { I as IApproval, y as IConfig, d as AgentProcessDeps, a as AgentAdapter, _ as OrdewellMcpServer, a6 as PlannerToolHandler, ad as ResearchShell, p as ApprovalRequest, j as ApprovalDecision, i as ApprovalAnswer, z as IRunner, a3 as PlannerBackendId, a9 as ProviderModelLists, f as AiProvider, m as ApprovalModeSetting, aq as RunnerRegistry, Z as OrchestratorOption, aD as TaskModeAgentAdapter, e as AgentStartOptions, c as AgentEvent, ai as RunnerCommand, a7 as ProjectMcpServer, n as ApprovalPolicy, B as IRunnerSession, aA as TaskCompleteArgs, r as CheckpointAnswer, av as StructuredTurnEnd, au as StructuredEvent, aC as TaskMessageFrom, ab as QueuedTaskMessage, aI as TaskStartOptions, aJ as TaskTokenScope, am as RunnerManifest, aH as TaskRunnerFlags } from './IRunner-D_UkkMbJ.js';
6
- export { A as AUTO_COMMANDS, b as AgentAdapterFactory, g as AllProviderModels, h as AnswerApprovalArgs, k as ApprovalKind, l as ApprovalMode, o as ApprovalPolicyOptions, q as ApprovalSource, C as CatalogModel, s as CheckpointArgs, t as CommandClassification, u as CommandTier, v as CommandWords, D as DEFAULT_PLANNER_ALLOWLIST, w as DENY_ALL, x as DiscoveryCommand, E as EditPlanArgs, F as FetchAllProviderModelsOptions, G as GIT_READONLY_SUBCOMMANDS, H as InvokedCommand, L as LineBuffer, J as ListModelsArgs, K as ListRunnersArgs, M as LoadSkillArgs, N as McpClientConfig, O as McpCredential, P as McpTool, Q as McpToolContext, R as McpToolReply, S as MessageTaskArgs, T as ModelCatalog, U as ModelShortcut, V as ORCHESTRATOR_SHORTCUTS, W as ORDEWELL_MCP_PATH, X as ORDEWELL_MCP_SERVER_NAME, Y as OneTaskArgs, $ as OwnerOnlyFile, a0 as PLANNER_EXECUTION_TOOLS, a1 as PLANNER_TOOLS, a2 as PlannerAllowlist, a4 as PlannerStartOptions, a5 as PlannerTokenScope, a8 as ProviderCredentialSource, aa as ProviderModelsResult, ac as REFUSED_COMMANDS, ae as ResearchShellDeps, af as RetryTaskArgs, ag as RunCommandArgs, ah as RunPlanArgs, aj as RunnerCommandKind, ak as RunnerEntry, al as RunnerFeatures, an as RunnerMcpServer, ao as RunnerMode, ap as RunnerModelDiscovery, ar as ShellDialect, as as SpawnFn, at as StandingDecision, aw as SubmitPlanArgs, ax as TASK_COMPLETE_TOOL, ay as TASK_COMPLETION_CONTRACT, az as TASK_TOOLS, aB as TaskDiffArgs, aE as TaskModeUnsupportedError, aF as TaskOutputArgs, aG as TaskQueryArgs, aK as TaskToolHandler, aL as approvalScopes, aM as classifyCommand, aN as clearResearchShellCache, aO as collectProviderCredentials, aP as commandAllowedBy, aQ as effectiveApprovalMode, aR as enabledRunners, aS as fetchAllProviderModels, aT as findRunnerCommand, aU as isGranted, aV as isRunnerApproval, aW as knownModelId, aX as mcpClientConfig, aY as ownerOnlyConfigFile, aZ as parseAllowlist, a_ as parseApprovalModeSetting, a$ as researchShellWarning, b0 as researchToolsPath, b1 as resolveModelShortcut, b2 as resolveProvider, b3 as resolveResearchShell, b4 as scopeAllowed, b5 as sharedMcpServer, b6 as toApprovalDecision, b7 as toOrchestratorOptions, b8 as toolAllowed } from './IRunner-D_UkkMbJ.js';
7
- import { T as ToolOutcome, I as IFileSystem, R as ReadFileOpts, b as GrepOptions, a as GlobOptions, F as FindSymbolOptions } from './IFileSystem-_effm8-b.js';
8
- export { G as GREP_DEFAULT_HEAD_LIMIT, c as GrepOutputMode, S as SEARCH_EXCLUSIONS } from './IFileSystem-_effm8-b.js';
9
- import { R as RunnerModeInfo } from './ModeResolver-Dy3Ef6p-.js';
10
- export { a as autonomyLevelLabel, p as parseAutonomyLevel, r as runnerModesFrom } from './ModeResolver-Dy3Ef6p-.js';
1
+ import { ah as Task, E as ExecutionActor, r as IsolationMergeResult, f as ExecutionRecord, g as GuardTrip, ag as SupervisorLevel, e as ExecutionCommandName, G as GuardTarget, a3 as RunnerId, d as DiscoveredModel, _ as ResearchProgress, Z as ResearchLogEntry, C as ConversationMessage, a9 as SkillInfo, aa as SkillLoad, ae as SkillsService, L as LegacyPlanState, N as PlanStatus, n as IsolationLandedTask, I as IWorktreeIsolation, F as IsolationTaskStatus, J as PlanIsolation, au as UsageRecord, a4 as RunnerSessionCost, a1 as ResearchToolType, R as PlannerUsage, ao as TaskSkillSnapshot, ap as TaskSnapshot, K as PlanState, H as IsolationView, aw as Verdict } from './Task-D4QHjdGv.js';
2
+ export { A as ApprovalRecord, a as AttemptUsage, b as AwaitingReason, B as BUILTIN_SKILL_NAMES, D as DEFAULT_RUNNERS, c as DEFAULT_SUPERVISOR_RETRY_LIMIT, h as IntegrationDisposal, i as InvalidSkill, j as IsolationAvailability, k as IsolationHandoff, l as IsolationHandoffRepo, m as IsolationInactiveReason, o as IsolationLanding, p as IsolationMergeBlock, q as IsolationMergeBlockReason, s as IsolationOutcome, t as IsolationPruneResult, u as IsolationRemoval, v as IsolationRepo, w as IsolationRun, x as IsolationTaskRecord, y as IsolationTaskRef, z as IsolationTaskRepo, M as ModelUsage, O as PlanUsage, Q as PlannerResendState, S as PrepareIntent, T as PreparedTask, U as PreservedWork, V as PreviousWork, W as RefusedRemoval, X as RepairEvidence, Y as RepoGroupLayout, $ as ResearchStep, a0 as ResearchStepOutcome, a2 as RunSettings, a5 as SetupFailure, a6 as ShadowedSkill, a7 as SkillAppliesTo, a8 as SkillCatalog, ab as SkillLoadNotice, ac as SkillMetadata, ad as SkillSource, ak as TaskIsolation, al as TaskIsolationState, am as TaskModelAssignment, aq as TaskStatus, ar as TaskUsageSummary, as as TreeSnapshot, at as UsageLine, av as UsageTotals, ax as VerificationCheck, ay as addAttemptUsage, az as addModelUsage, aA as addPlannerUsage, aB as addUsage, aC as addUsageTotals, aD as countedSessionCost, aE as createEmptyPlan, aF as createSkillsService, aG as createTask, aH as endAttemptUsage, aI as flattenTasks, aJ as flattenTasksWithParents, aK as isAwaitingReason, aL as isMeasured, aM as isSupervisorLevel, aN as isUserMessage, aO as migratePlanState, aP as partedPromptUsage, aQ as pausedOnLimit, aR as planUsage, aS as plannerContextFill, aT as rejoinPlanTree, aU as resumedSessionWindow, aV as startAttemptUsage, aW as taskUsageSummary, aX as usageLine, aY as waitsForApproval } from './Task-D4QHjdGv.js';
3
+ import { aj as StartAdmission, y as LiveTailOptions, L as LiveTail, W as PlannerModes, av as TaskOp, w as IsolatedExecution, f as AssignmentScope, ac as SessionBroadcaster, b as ApplyTaskOpsResult, ah as SkillLookup, ae as SessionNotice, s as EditCatalog, ad as SessionMessage, V as PlanStore, aw as TaskOrchestrator, x as IsolationRunController, Q as OrchestratorObserver, at as TaskLogEvent, I as INotification, u as GlobalRunSettings, a3 as RunView, $ as RunMergeView, az as TaskOutputSource, aQ as UserSettings, an as SurfacePlan, ao as SurfacePlanState } from './plan-utils-BVJCzNvm.js';
4
+ export { A as ACT_RISK, a as AUTORUN_RISK, c as ApprovalBlock, d as ApprovalStatus, e as AssignmentIssue, g as AutoMergeTrigger, B as BlockingSubject, C as CHECKPOINT_TRUNCATE_LENGTH, h as CommandBlock, i as CommandStatus, j as CompactionBlock, k as ConversationInput, l as ConversationView, D as DiffRow, m as DiffRowKind, n as DiffStat, o as DisplayBlock, E as EMPTY_CONVERSATION, p as EMPTY_HOLD, q as EMPTY_RUN, r as EMPTY_TASK_LOG, t as ExecutionSummary, G as GatedConversation, H as HeldEdit, v as HeldEditMark, z as LocalEntry, M as MarkdownToken, F as MessageBlock, J as MessageRole, N as NOT_STARTED, K as NO_TURN, O as NewTaskFields, P as NotificationAction, R as OutputPreview, S as PlanBlock, T as PlanMarkerStatus, U as PlanSnapshot, X as PromptHold, Y as RUN_SETTINGS_DEFAULTS, _ as RunInput, a0 as RunSettingsError, a1 as RunTask, a2 as RunTaskStatus, a4 as RunnerLoadedBlock, a5 as STOPPED_BEFORE_START, a6 as SUPERVISOR_LEVEL_LABEL, a7 as SerializedConversationMessage, a8 as SerializedPendingTurn, a9 as SerializedPlan, aa as SerializedTask, ab as SerializedTaskStatus, af as SettingsService, ag as SkillLoadBlock, ai as SkillToken, ak as SubagentBlock, al as SubagentChild, am as SubagentStatus, ap as SurfaceTask, aq as TakenPrompt, ar as TaskAttemptSnapshot, as as TaskControlError, au as TaskLogView, ax as TaskOrchestratorDeps, ay as TaskOrchestratorOptions, aA as TaskRef, aB as TaskRowAction, aC as TaskRowContext, aD as TaskRowIsolation, aE as TaskRowKind, aF as TaskRowPlacement, aG as TaskRowSubject, aH as TaskRowUsage, aI as TaskRowView, aJ as TaskStatusKind, aK as ThinkingDisplayBlock, aL as ToolBlock, aM as ToolHeadline, aN as ToolStatus, aO as TurnGate, aP as UsageBlock, aR as WAITS_FOR_APPROVAL_LABEL, aS as aheadOfDraft, aT as applyTaskOps, aU as approvalLabel, aV as assignmentIssue, aW as assignmentIssueText, aX as automergeSummary, aY as autorunSummary, aZ as awaitingLabel, a_ as blockedByLabel, a$ as blockingFailures, b0 as canMergeTasks, b1 as canSetDependencies, b2 as canSplitTask, b3 as capConflictFiles, b4 as classifyOutcome, b5 as coalesceTaskLog, b6 as dependencyCandidates, b7 as dependentsNotice, b8 as dependentsOf, b9 as diffRows, ba as diffStat, bb as diffSummary, bc as digestTaskLog, bd as drainNext, be as executionSummary, bf as followTurn, bg as fromTranscript, bh as getSettingsPath, bi as hasHiddenDetail, bj as holdPrompt, bk as isTaskRunning, bl as loadedSkillTokens, bm as markAction, bn as markRequestFor, bo as markdownHtml, bp as markdownTokens, bq as namedRepos, br as newTaskFields, bs as opsEditable, bt as outputLines, bu as outputPreview, bv as parseCount, bw as parseSwitch, bx as parseTaskOpsJson, by as pastGateConfirmation, bz as reconcileApprovals, bA as reduceConversation, bB as reduceRun, bC as reduceTaskLog, bD as replayTaskLog, bE as resolveTaskRef, bF as resumeLabel, bG as resumeTime, bH as runSettingsOf, bI as runnerToolSubject, bJ as serializePlan, bK as serializeTask, bL as serializeTaskStatus, bM as skillTokens, bN as skippedLabel, bO as stopTurn, bP as summarizeToolCall, bQ as supervisorSummary, bR as surfacePlan, bS as surfacePlanState, bT as takeAt, bU as taskLogForSurface, bV as taskOrderLabel, bW as taskRef, bX as taskRefOf, bY as taskRowActions, bZ as taskRowView, b_ as taskStartedNotice, b$ as taskStatusKind, c0 as textHasTaskOps, c1 as titledRefs, c2 as titledTaskRef, c3 as titledTaskRefOf, c4 as toTaskLogEvent, c5 as toolHeadline, c6 as trimToolOutput, c7 as truncateCheckpointSummary, c8 as unsendAll, c9 as unsendLatest } from './plan-utils-BVJCzNvm.js';
5
+ import { I as IApproval, y as IConfig, d as AgentProcessDeps, a as AgentAdapter, _ as OrdewellMcpServer, aM as UsageLimitSignal, a6 as PlannerToolHandler, ad as ResearchShell, p as ApprovalRequest, j as ApprovalDecision, i as ApprovalAnswer, z as IRunner, a3 as PlannerBackendId, a9 as ProviderModelLists, f as AiProvider, m as ApprovalModeSetting, ar as RunnerRegistry, Z as OrchestratorOption, aE as TaskModeAgentAdapter, e as AgentStartOptions, c as AgentEvent, ai as RunnerCommand, a7 as ProjectMcpServer, B as IRunnerSession, n as ApprovalPolicy, aB as TaskCompleteArgs, r as CheckpointAnswer, aw as StructuredTurnEnd, av as StructuredEvent, aD as TaskMessageFrom, ab as QueuedTaskMessage, aJ as TaskStartOptions, aK as TaskTokenScope, am as RunnerManifest, aI as TaskRunnerFlags } from './IRunner-Crkt3tHD.js';
6
+ export { A as AUTO_COMMANDS, b as AgentAdapterFactory, g as AllProviderModels, h as AnswerApprovalArgs, k as ApprovalKind, l as ApprovalMode, o as ApprovalPolicyOptions, q as ApprovalSource, C as CatalogModel, s as CheckpointArgs, t as CommandClassification, u as CommandTier, v as CommandWords, D as DEFAULT_PLANNER_ALLOWLIST, w as DENY_ALL, x as DiscoveryCommand, E as EditPlanArgs, F as FetchAllProviderModelsOptions, G as GIT_READONLY_SUBCOMMANDS, H as InvokedCommand, L as LineBuffer, J as ListModelsArgs, K as ListRunnersArgs, M as LoadSkillArgs, N as McpClientConfig, O as McpCredential, P as McpTool, Q as McpToolContext, R as McpToolReply, S as MessageTaskArgs, T as ModelCatalog, U as ModelShortcut, V as ORCHESTRATOR_SHORTCUTS, W as ORDEWELL_MCP_PATH, X as ORDEWELL_MCP_SERVER_NAME, Y as OneTaskArgs, $ as OwnerOnlyFile, a0 as PLANNER_EXECUTION_TOOLS, a1 as PLANNER_TOOLS, a2 as PlannerAllowlist, a4 as PlannerStartOptions, a5 as PlannerTokenScope, a8 as ProviderCredentialSource, aa as ProviderModelsResult, ac as REFUSED_COMMANDS, ae as ResearchShellDeps, af as RetryTaskArgs, ag as RunCommandArgs, ah as RunPlanArgs, aj as RunnerCommandKind, ak as RunnerEntry, al as RunnerFeatures, an as RunnerMcpServer, ao as RunnerMode, ap as RunnerModelDiscovery, aq as RunnerModelRef, as as ShellDialect, at as SpawnFn, au as StandingDecision, ax as SubmitPlanArgs, ay as TASK_COMPLETE_TOOL, az as TASK_COMPLETION_CONTRACT, aA as TASK_TOOLS, aC as TaskDiffArgs, aF as TaskModeUnsupportedError, aG as TaskOutputArgs, aH as TaskQueryArgs, aL as TaskToolHandler, aN as approvalScopes, aO as classifyCommand, aP as clearResearchShellCache, aQ as collectProviderCredentials, aR as commandAllowedBy, aS as effectiveApprovalMode, aT as enabledRunners, aU as fetchAllProviderModels, aV as findRunnerCommand, aW as isGranted, aX as isRunnerApproval, aY as knownModelId, aZ as mcpClientConfig, a_ as ownerOnlyConfigFile, a$ as parseAllowlist, b0 as parseApprovalModeSetting, b1 as researchShellWarning, b2 as researchToolsPath, b3 as resolveModelShortcut, b4 as resolveProvider, b5 as resolveResearchShell, b6 as scopeAllowed, b7 as sharedMcpServer, b8 as toApprovalDecision, b9 as toOrchestratorOptions, ba as toolAllowed } from './IRunner-Crkt3tHD.js';
7
+ import { T as ToolOutcome, I as IFileSystem, R as ReadFileOpts, b as GrepOptions, a as GlobOptions, F as FindSymbolOptions } from './IFileSystem-ClBdp59f.js';
8
+ export { G as GREP_DEFAULT_HEAD_LIMIT, c as GrepOutputMode, S as SEARCH_EXCLUSIONS } from './IFileSystem-ClBdp59f.js';
9
+ import { R as RunnerModeInfo } from './ModeResolver-CUR5jCSU.js';
10
+ export { a as autonomyLevelLabel, p as parseAutonomyLevel, r as runnerModesFrom } from './ModeResolver-CUR5jCSU.js';
11
11
  import { ChildProcess } from 'child_process';
12
12
  import { EventEmitter } from 'events';
13
13
  import 'zod/v4';
@@ -125,6 +125,8 @@ interface ExecutionHost {
125
125
  planApproved(): boolean;
126
126
  /** The user approved this task: it was in the plan they executed, or they started it themselves. */
127
127
  taskApproved(taskId: string): boolean;
128
+ /** A task the scheduler leaves for the user to approve: added to the plan since they approved it (ADR-0035). */
129
+ waitsForApproval(taskId: string): boolean;
128
130
  /** A start the user consented to approves these tasks, before it acts. */
129
131
  approve(taskIds: readonly string[]): void;
130
132
  /** Full autonomy: starts follow plan approval without a question. */
@@ -156,6 +158,12 @@ interface ExecutionHost {
156
158
  waitingRequests(taskId: string): readonly WaitingRequest[];
157
159
  /** A start is told who asked: whether a run it opens continues the last one depends on it (ADR-0029). */
158
160
  runPlan(actor: ExecutionActor): Promise<void>;
161
+ /**
162
+ * The user's Execute while a run is under way, once it approved every task:
163
+ * the run takes them in, each starting once its dependencies finish. Answers
164
+ * the line that says so, naming how many had waited for approval.
165
+ */
166
+ joinRun(approved: number): Promise<string>;
159
167
  startTask(taskId: string, actor: ExecutionActor): Promise<void>;
160
168
  stopTask(taskId: string): Promise<void>;
161
169
  stopRun(): void;
@@ -680,12 +688,6 @@ interface ConversationRequest {
680
688
  fetcher?: IWebFetcher;
681
689
  runnerModes?: Record<RunnerId, RunnerModeInfo[]>;
682
690
  autonomousDefault?: boolean;
683
- /**
684
- * The planner model's context window when the catalog knows it. Threaded here
685
- * so a usage record can carry it (and the UI can show context fill); absent
686
- * when unknown, never guessed (#49).
687
- */
688
- contextWindow?: number;
689
691
  /** Where tasks will run (ADR-0013, ADR-0014): in worktrees, the prompt drops file-overlap ordering and describes a repo group. */
690
692
  isolatedExecution?: IsolatedExecution;
691
693
  /** A plan the planner submits starts at once (ADR-0030), so the opening prompt has no outline gate. */
@@ -730,7 +732,8 @@ type ConversationTurn =
730
732
  /**
731
733
  * `aborted`: the call was stopped, and `text` is only what it had by then.
732
734
  * `failed`: the call ended without a reply (a dead agent, a usage limit),
733
- * and `text` says why.
735
+ * and `text` says why; `usageLimit`, where the runner also said in a field
736
+ * whether that was its usage limit (see {@link TurnFailure}).
734
737
  */
735
738
  {
736
739
  kind: 'message';
@@ -738,6 +741,7 @@ type ConversationTurn =
738
741
  researchLog: ResearchLogEntry[];
739
742
  aborted?: boolean;
740
743
  failed?: boolean;
744
+ usageLimit?: UsageLimitSignal | false;
741
745
  } | {
742
746
  kind: 'plan';
743
747
  tasks: Task[];
@@ -874,9 +878,35 @@ declare function plannerMessage(text: string, loads: readonly SkillLoad[]): stri
874
878
  * carries the skills loaded after it, composed by {@link plannerMessage}, and
875
879
  * the load entries themselves are folded away. Sessions saved before skill
876
880
  * loads existed hold the expanded text in the message and replay unchanged.
881
+ * A failed turn's entry is left out: the planner never said it.
877
882
  */
878
883
  declare function plannerTranscript(history: readonly ConversationMessage[]): ConversationMessage[];
879
884
 
885
+ /**
886
+ * What a stopped runner says about why it stopped, and what ending an attempt
887
+ * does to the runner it leaves behind. TaskOrchestrator acts on the answers.
888
+ */
889
+
890
+ /**
891
+ * A turn's failure as its runner reported it: its words, and `usageLimit`
892
+ * where its protocol also says in a field whether it was the limit (Codex's
893
+ * `codexErrorInfo`).
894
+ */
895
+ interface TurnFailure {
896
+ message: string;
897
+ usageLimit?: UsageLimitSignal | false;
898
+ }
899
+
900
+ /** What a usage limit that ended a planner turn led to. */
901
+ interface PlannerLimit {
902
+ /** The line the transcript keeps, drawn as a failure. */
903
+ text: string;
904
+ /** When what the turn took goes again on its own; null when it waits for the user's next message. */
905
+ resendAt: Date | null;
906
+ /** Why nothing goes again on its own, when nothing does: what the planner did, as in "the planner hit its usage limit and …". */
907
+ held?: string;
908
+ }
909
+
880
910
  /**
881
911
  * The planner turn (see CONTEXT.md): the one piece of planner work that holds
882
912
  * the conversation, from its claim to its settled outcome. Its signal is what a
@@ -947,6 +977,8 @@ interface PlannerConversationHost {
947
977
  catalog(): TaskQueryCatalog;
948
978
  /** Whether autorun is on now (ADR-0030); the planner is told in the turn after it changes. */
949
979
  autorun(): boolean;
980
+ /** The enabled runners and allowlist as of now; the planner is told in the turn after either changes. */
981
+ assignmentScope(): AssignmentScope;
950
982
  /** Run updates no turn has carried yet, taken by the turn that asks: the next turn is told, whoever opens it. */
951
983
  takeRunUpdates(): string[];
952
984
  tasks(): readonly Task[];
@@ -975,6 +1007,8 @@ interface PlannerConversationHost {
975
1007
  turnAborted(): void;
976
1008
  /** A planner turn let the conversation go, so the next one may take it. */
977
1009
  turnReleased?(): void;
1010
+ /** A turn ended on the planner's usage limit, which it reported as `said`: what is sent again, and when. */
1011
+ usageLimit(said: TurnFailure): PlannerLimit;
978
1012
  }
979
1013
  /**
980
1014
  * A conversation edit (rewind, fork) the conversation refused because the
@@ -1003,6 +1037,26 @@ declare class ConversationBusyError extends ConversationEditError {
1003
1037
  declare class PlannerTurnDiscardedError extends Error {
1004
1038
  constructor(options?: ErrorOptions);
1005
1039
  }
1040
+ /**
1041
+ * A wake-up turn's backend ended without a reply — a dead agent, a usage
1042
+ * limit — and said why. A user's turn shows that in the chat instead; a
1043
+ * wake-up has nobody waiting on it, so its supervisor is told (ADR-0029).
1044
+ */
1045
+ declare class PlannerTurnFailedError extends Error {
1046
+ constructor(message: string);
1047
+ }
1048
+ /**
1049
+ * A planner turn ended on the planner's usage limit (#84). Nothing of it
1050
+ * lands: the transcript keeps the failure instead, out of the planner's own
1051
+ * dialogue, and the turn's inputs wait to be sent again — at `resendAt`, or
1052
+ * with the next input when it is null.
1053
+ */
1054
+ declare class PlannerUsageLimitError extends PlannerTurnFailedError {
1055
+ readonly resendAt: Date | null;
1056
+ /** Why nothing is sent again on its own, when nothing is. */
1057
+ readonly held?: string;
1058
+ constructor(limit: PlannerLimit);
1059
+ }
1006
1060
  /**
1007
1061
  * The user stopped the turn and the backend reported that as a thrown error
1008
1062
  * rather than a settled reply. Typed so a surface can stay quiet for it without
@@ -1039,6 +1093,8 @@ interface TranscriptSnapshot {
1039
1093
  readonly researchLog: ResearchLogEntry[] | undefined;
1040
1094
  readonly persisted: number;
1041
1095
  readonly savedInBackground: number;
1096
+ /** What the planner had been told of the user's runners when the turn began. */
1097
+ readonly toldScope: AssignmentScope | null;
1042
1098
  }
1043
1099
  interface ReplyOptions {
1044
1100
  signal?: AbortSignal;
@@ -1079,6 +1135,8 @@ declare class PlannerConversation {
1079
1135
  private savedInBackground;
1080
1136
  /** What the planner was last told of autorun: by its opening prompt, or a turn's block since. */
1081
1137
  private toldAutorun;
1138
+ /** The runners and allowlist the planner was last told of: its opening prompt, or a turn's block since. Null until a conversation opens. */
1139
+ private toldScope;
1082
1140
  private live;
1083
1141
  private openTurn;
1084
1142
  constructor(host: PlannerConversationHost);
@@ -1250,6 +1308,19 @@ declare class PlannerConversation {
1250
1308
  * (ADR-0029).
1251
1309
  */
1252
1310
  private assertWakeUpAnswered;
1311
+ /**
1312
+ * A turn that ended on the planner's usage limit lands nothing. What it
1313
+ * wrote is taken back, its failure is kept in its place, and the limit's
1314
+ * wait is armed in the same save. Only a turn Ordewell started gets here,
1315
+ * so a limit is never acted on for a planner nobody asked anything of.
1316
+ */
1317
+ private assertNotLimited;
1318
+ /**
1319
+ * A failure kept in the transcript, drawn as one on reload too, and never
1320
+ * replayed to the planner. Stamped after the newest entry: surfaces take
1321
+ * only entries newer than the last they synced.
1322
+ */
1323
+ private recordFailure;
1253
1324
  private assertIdle;
1254
1325
  /**
1255
1326
  * Refuse to land a turn that no longer belongs here: it was abandoned, its
@@ -1349,6 +1420,16 @@ declare class PlannerConversation {
1349
1420
  * conversation reaches its next turn without repeating in every one.
1350
1421
  */
1351
1422
  private autorunBlock;
1423
+ /**
1424
+ * The user's runner or allowlist change, when the planner was not told yet —
1425
+ * the same once-per-change rule as autorun, for API and harness planners
1426
+ * alike. Tasks the change leaves outside the scope are named, not touched.
1427
+ *
1428
+ * A reloaded session is not told: {@link resume} takes the scope as it is
1429
+ * then, as it does the autorun rule, since the catalog the first turn carries
1430
+ * and `list_runners` already show the runners as they are now.
1431
+ */
1432
+ private runnersChangedBlock;
1352
1433
  private runUpdatesBlock;
1353
1434
  /**
1354
1435
  * The catalog the planner may actually draw from — model ids and task-mode
@@ -2157,6 +2238,35 @@ interface Adr0013PlanIsolation {
2157
2238
  */
2158
2239
  declare function migratePlanIsolation(state: PlanIsolation | Adr0013PlanIsolation): PlanIsolation;
2159
2240
 
2241
+ /** The part of a run's handoff a Merge confirmation is worded from; structural, so each surface passes the handoff it holds. */
2242
+ interface MergeWordingHandoff {
2243
+ repos: readonly {
2244
+ path: string;
2245
+ baseBranch?: string;
2246
+ landed: readonly unknown[];
2247
+ }[];
2248
+ }
2249
+ /**
2250
+ * Whether the run spans more than a lone repo at the workspace root. A group of
2251
+ * one at `.` is worded and drawn exactly as it was before repo groups; anything
2252
+ * else names its repos.
2253
+ */
2254
+ declare function isRepoGroup(handoff: {
2255
+ repos: readonly {
2256
+ path: string;
2257
+ }[];
2258
+ }): boolean;
2259
+ /** The repos Merge all will merge: those with work on their integration branch, else all of them. */
2260
+ declare function reposWithWork(handoff: MergeWordingHandoff): string[];
2261
+ /**
2262
+ * What a Merge confirmation says the branch lands on: the branch the run
2263
+ * started on, which Merge all insists is checked out. A repo that started
2264
+ * detached has none, and keeps the old wording.
2265
+ */
2266
+ declare function mergeTarget(handoff: MergeWordingHandoff): string;
2267
+ /** The refusal Merge all makes when a repo is on another branch, for a confirmation to warn of; empty when no repo named a branch. */
2268
+ declare function checkoutRule(handoff: MergeWordingHandoff): string;
2269
+
2160
2270
  interface ILogger {
2161
2271
  warn(scope: string, message: string, err?: unknown): void;
2162
2272
  }
@@ -2285,8 +2395,12 @@ declare class GeminiService extends BaseAiService implements IAiService {
2285
2395
  private genAI;
2286
2396
  private genAIKey;
2287
2397
  private model;
2398
+ /** The id `model` was made for; the SDK's own `model.model` is its `models/…` resource path. */
2399
+ private modelId;
2288
2400
  constructor(config: IConfig);
2289
2401
  private init;
2402
+ /** The planner model picked for this session, as the API names it. */
2403
+ private plannerModel;
2290
2404
  private getPlanningModel;
2291
2405
  ensureInit(): void;
2292
2406
  reset(): void;
@@ -2441,13 +2555,15 @@ declare class ModelResolver {
2441
2555
  getCachedRunnerModels(runner: string): DiscoveredModel[];
2442
2556
  getCachedPickerOptions(): OrchestratorOption[];
2443
2557
  /**
2444
- * The planner model's context window, from whatever catalog is already
2445
- * cached (#49): a vendor model comes from the picker catalog, a harness
2446
- * planner's model from the runner's own discovered models. Reads only —
2447
- * never triggers a fetch or discovery of its own, so an unknown window stays
2448
- * unknown and context fill is omitted rather than guessed.
2558
+ * A model's context window from whatever catalog is already cached (#49),
2559
+ * for a usage record whose reporter stated none: a vendor's model from the
2560
+ * picker catalog (its own `/models` endpoint), a runner's model from that
2561
+ * runner's own discovered listing. `source` is the record's reporter, and
2562
+ * `model` the id it named. Reads only — never triggers a fetch or discovery
2563
+ * of its own, so an unknown window stays unknown and context fill is
2564
+ * omitted rather than guessed.
2449
2565
  */
2450
- contextWindowFor(modelId: string): number | undefined;
2566
+ contextWindowFor(source: string, model: string): number | undefined;
2451
2567
  invalidate(): void;
2452
2568
  }
2453
2569
 
@@ -2822,9 +2938,9 @@ declare class ClaudeCodeAdapter extends StdioAgentAdapter implements TaskModeAge
2822
2938
  /** The model answering the planner's current message, as its `message_start` named it. */
2823
2939
  private plannerModel;
2824
2940
  /**
2825
- * The session's `total_cost_usd` as last reported. Undefined after a resume:
2826
- * the CLI restores the resumed session's running total, and what Ordewell
2827
- * already counted of it is not ours to know here.
2941
+ * The session's `total_cost_usd` as last counted. A resume starts from what
2942
+ * was counted of that session before, and is undefined without it: the CLI
2943
+ * restores the session's running total, which holds turns counted earlier.
2828
2944
  */
2829
2945
  private reportedCostUsd;
2830
2946
  private reportedModelCostUsd;
@@ -2865,7 +2981,23 @@ declare class ClaudeCodeAdapter extends StdioAgentAdapter implements TaskModeAge
2865
2981
  private terminalOnly;
2866
2982
  /** Whether this process's `runner_loaded` went out: its first `init` sends it. */
2867
2983
  private loadedReported;
2984
+ /** The models `initialize` listed, which turn the ids the CLI reports back into the ones a plan holds. */
2985
+ private listedModels;
2986
+ /** The id the task's main thread last reported answering on. */
2987
+ private mainModel;
2988
+ /** What the plan should say the task runs: its spawn's model, then each switch followed. */
2989
+ private followedModel;
2990
+ /**
2991
+ * Model commands sent through the chat whose switch has not been seen yet,
2992
+ * oldest first, each with the turns still to end before its own has. Several
2993
+ * can be pending: a command's switch is first reported by the next turn's
2994
+ * `init`, which can be another `/model`'s.
2995
+ */
2996
+ private modelCommands;
2868
2997
  protected spawnSpec(opts: AgentStartOptions, workspace: Record<string, string>): SpawnSpec;
2998
+ sessionCost(): RunnerSessionCost | null;
2999
+ /** A count kept for another session says nothing of this one's. */
3000
+ private countFrom;
2869
3001
  savedOutput(abs: string): boolean;
2870
3002
  /**
2871
3003
  * A task's run: the manifest decides what its mode and effort mean
@@ -2937,6 +3069,12 @@ declare class ClaudeCodeAdapter extends StdioAgentAdapter implements TaskModeAge
2937
3069
  dispose(): void;
2938
3070
  private clearFollowOnTimer;
2939
3071
  protected turnPayload(message: string): string;
3072
+ /**
3073
+ * The CLI runs a message that starts with a slash command as that command,
3074
+ * whether the surface sent it as one or as plain text, so the message
3075
+ * itself says a model switch was asked for: every way into the chat counts.
3076
+ */
3077
+ private noteModelCommand;
2940
3078
  private openTurnState;
2941
3079
  /**
2942
3080
  * The echo of a steered message: the model has it. After a closed turn it
@@ -2945,6 +3083,29 @@ declare class ClaudeCodeAdapter extends StdioAgentAdapter implements TaskModeAge
2945
3083
  */
2946
3084
  private steerDelivered;
2947
3085
  protected handleLine(line: string, emit: (event: AgentEvent) => void): void;
3086
+ /**
3087
+ * A task's main thread reported the model it answers on. A change is the
3088
+ * user's own switch when a model command went out before it: Ordewell never
3089
+ * passes `--fallback-model`, so nothing else should move it. A change with
3090
+ * no command before it is reported as drift, and the plan does not follow
3091
+ * it. A command whose turn ended with the model unchanged switched nothing,
3092
+ * and is let go.
3093
+ *
3094
+ * Effort is never reported (recorded on 2.1.302, `task-effort-command`):
3095
+ * `init` names the model alone, its `per_turn_effort_active` says effort is
3096
+ * on, not which; `/effort low` only prints that it set it; and `/model`
3097
+ * takes no effort (`/model haiku high` is "not found"). So a switch carries
3098
+ * no effort and the plan's stays as planned.
3099
+ */
3100
+ private followModel;
3101
+ /** Whether the model value `asked` runs as the id `resolved`, by what `initialize` lists. */
3102
+ private runsAs;
3103
+ /**
3104
+ * The value `initialize` lists for the id a model runs as. Several can share
3105
+ * one (`sonnet`, `default`); the one asked for wins, and `default` only as a
3106
+ * last resort, since it names whatever the CLI's default becomes.
3107
+ */
3108
+ private listedModel;
2948
3109
  /**
2949
3110
  * `--permission-mode auto` on a model or account without auto mode is not
2950
3111
  * refused: the CLI says nothing and starts in `default`, then asks about every
@@ -2984,7 +3145,8 @@ declare class ClaudeCodeAdapter extends StdioAgentAdapter implements TaskModeAge
2984
3145
  * What only the result line knows: the cost, which covers every call the
2985
3146
  * session made — subagents included, since none of their lines carries one —
2986
3147
  * and the planner model's window. `total_cost_usd` is a running total, so a
2987
- * turn reports its growth. The first turn after a resume only sets the
3148
+ * turn reports its growth. After a resume it grows from what was counted of
3149
+ * the session before; with no count kept, the first turn only sets the
2988
3150
  * baseline: its total includes turns counted before, and a turn's own share
2989
3151
  * cannot be told apart from them.
2990
3152
  */
@@ -3023,6 +3185,11 @@ declare class CodexAdapter extends StdioAgentAdapter implements TaskModeAgentAda
3023
3185
  private turn;
3024
3186
  /** The last turn this adapter ended — so its second end signal, landing late, ends nothing. */
3025
3187
  private endedTurnId;
3188
+ /**
3189
+ * The account's limit windows as Codex last reported them. Only read when a
3190
+ * turn fails on the usage limit; an update on its own acts on nothing.
3191
+ */
3192
+ private rateLimits;
3026
3193
  /** An interrupt was asked for during this turn, so however it ends, it was cut short. */
3027
3194
  private interruptRequested;
3028
3195
  /**
@@ -3116,6 +3283,7 @@ declare class CodexAdapter extends StdioAgentAdapter implements TaskModeAgentAda
3116
3283
  /** `turn/start`'s answer. One for a turn that has since closed or been replaced names and closes nothing. */
3117
3284
  private turnAnswered;
3118
3285
  protected handleLine(line: string, emit: (event: AgentEvent) => void): void;
3286
+ private turnFailed;
3119
3287
  private turnStarted;
3120
3288
  /**
3121
3289
  * Ahead of the event that ends the turn: a steer Codex accepted and the turn
@@ -3491,6 +3659,8 @@ interface SessionCatalogDeps {
3491
3659
  };
3492
3660
  /** The runners of the plan being edited; empty while the session has none. */
3493
3661
  planRunners: () => RunnerId[];
3662
+ /** Whether a task's runner is up: an attempt claimed, running, quiet or waiting on someone. */
3663
+ liveRunner?: (taskId: string) => boolean;
3494
3664
  }
3495
3665
  /**
3496
3666
  * What a session may assign: the enabled runners, their modes, the models
@@ -3514,6 +3684,8 @@ declare class SessionCatalog {
3514
3684
  * has since cleared.
3515
3685
  */
3516
3686
  allowlist(): Record<string, string[]>;
3687
+ /** The enabled runners and allowlist together, for whoever compares an assignment with them. */
3688
+ scope(): AssignmentScope;
3517
3689
  /** The models the user allows on one runner; unset means no restriction. */
3518
3690
  allowlistFor(runner: RunnerId): string[] | undefined;
3519
3691
  /**
@@ -3544,6 +3716,12 @@ declare class SessionCatalog {
3544
3716
  * asked for.
3545
3717
  */
3546
3718
  live(): Promise<TaskQueryCatalog>;
3719
+ /**
3720
+ * What {@link live} answers, from what is cached and without discovering:
3721
+ * the enabled runners, however the plan was started. The per-turn block
3722
+ * reads this, so it can never offer a different set than `list_runners`.
3723
+ */
3724
+ current(): TaskQueryCatalog;
3547
3725
  queryCatalog(runners: RunnerId[]): TaskQueryCatalog;
3548
3726
  /**
3549
3727
  * The catalog a model/task-mode edit is checked against — the same
@@ -3569,6 +3747,13 @@ declare class SessionCatalog {
3569
3747
  }>;
3570
3748
  }
3571
3749
 
3750
+ /**
3751
+ * A model's context window from a catalog Ordewell already holds — a runner's
3752
+ * own model listing or a provider's own models endpoint, never a table kept in
3753
+ * Ordewell. `source` is the record's reporter: a runner id or a vendor id.
3754
+ */
3755
+ type CatalogWindow = (source: string, model: string) => number | undefined;
3756
+
3572
3757
  /** The `planner_usage` member of the session broadcast union. */
3573
3758
  type PlannerUsageMessage = Extract<SessionMessage, {
3574
3759
  type: 'planner_usage';
@@ -3583,7 +3768,11 @@ type PlannerUsageMessage = Extract<SessionMessage, {
3583
3768
  * defined — this module just holds the state and the broadcast shape.
3584
3769
  */
3585
3770
  declare class PlannerUsageLedger {
3771
+ private readonly catalogWindow;
3586
3772
  private usage;
3773
+ private windows;
3774
+ /** `catalogWindow` serves the window of a planner model whose backend reports none. */
3775
+ constructor(catalogWindow?: CatalogWindow);
3587
3776
  /** Fold one model call's record into the totals; returns the running ledger. */
3588
3777
  record(record: UsageRecord): PlannerUsage;
3589
3778
  /** Adopt a persisted ledger (a reopened session) or start from zero. */
@@ -3621,9 +3810,10 @@ interface SessionEventRelayDeps {
3621
3810
  * observers. A wait on a usage limit, and a task gone idle, reach surfaces as
3622
3811
  * the task's status; `onUsageLimitWait` and `onTaskIdle` themselves are for
3623
3812
  * the supervisor to wake on. The end-of-run handoff is marked by supervision
3624
- * and remembered for a surface joining late, so Session announces it too.
3813
+ * and remembered for a surface joining late, so Session announces it too. A
3814
+ * model switch is a plan edit, which Session's editor announces as one.
3625
3815
  */
3626
- type RelayObserver = Required<Omit<OrchestratorObserver, 'onTaskSettled' | 'onRunStarted' | 'onAutoMerge' | 'onUsageLimitWait' | 'onTaskIdle' | 'onIsolationHandoff'>>;
3816
+ type RelayObserver = Required<Omit<OrchestratorObserver, 'onTaskSettled' | 'onRunStarted' | 'onAutoMerge' | 'onUsageLimitWait' | 'onModelSwitched' | 'onTaskIdle' | 'onIsolationHandoff'>>;
3627
3817
  /**
3628
3818
  * Turns orchestrator and planner events into {@link SessionMessage}
3629
3819
  * broadcasts — the one place a surface's view of a Session is produced. It
@@ -3707,11 +3897,12 @@ interface TaskLogFile {
3707
3897
  /** The attempts a task has a log for, oldest first. */
3708
3898
  declare function listTaskLogAttempts(location: TaskLogLocation, taskId: string): number[];
3709
3899
  /**
3710
- * Start the next attempt's file. Numbered from what is on disk rather than
3711
- * from the orchestrator's count, which restarts at one whenever a plan is
3712
- * loaded and would overwrite the attempts before it.
3900
+ * Start an attempt's file, under the attempt's own number so its log and its
3901
+ * usage ledger name the same attempt. Without one, or when that file already
3902
+ * exists, it takes the next number after what is on disk: nothing saved is
3903
+ * ever overwritten.
3713
3904
  */
3714
- declare function openTaskLog(location: TaskLogLocation, taskId: string): TaskLogFile;
3905
+ declare function openTaskLog(location: TaskLogLocation, taskId: string, attempt?: number): TaskLogFile;
3715
3906
  /**
3716
3907
  * One attempt's events, in order; empty when it has no log. A line that does
3717
3908
  * not parse is skipped — the last one, most likely, cut off by a crash
@@ -3719,6 +3910,42 @@ declare function openTaskLog(location: TaskLogLocation, taskId: string): TaskLog
3719
3910
  */
3720
3911
  declare function readTaskLog(location: TaskLogLocation, taskId: string, attempt: number): TaskLogEvent[];
3721
3912
 
3913
+ interface TaskLogRecorderDeps {
3914
+ broadcast: SessionBroadcaster;
3915
+ /** Where the session's logs go, read as each attempt starts: a session's id can change between plans. */
3916
+ location: () => TaskLogLocation;
3917
+ /** Opens an attempt's file, under the attempt's number when the spawn named one; tests pass one that never touches the disk. */
3918
+ open?: (location: TaskLogLocation, taskId: string, attempt?: number) => TaskLogFile;
3919
+ flushMs?: number;
3920
+ logger?: ILogger;
3921
+ }
3922
+ /**
3923
+ * Keeps each structured task's log (ADR-0018, P1): every event of an attempt
3924
+ * is appended to that attempt's file and broadcast as `task_log`, in the same
3925
+ * batches, so what a surface saw live and what it reloads are one sequence.
3926
+ *
3927
+ * It sits around the runner rather than inside the orchestrator, which stays
3928
+ * unaware of logs.
3929
+ */
3930
+ declare class TaskLogRecorder {
3931
+ private readonly deps;
3932
+ private readonly open;
3933
+ private readonly flushMs;
3934
+ private readonly logger;
3935
+ /** Each task's latest attempt, by the session it records: its log takes a {@link note} until the next attempt starts. */
3936
+ private readonly latest;
3937
+ constructor(deps: TaskLogRecorderDeps);
3938
+ wrap(runner: IRunner): IRunner;
3939
+ /**
3940
+ * An entry the session did not emit, written into the log of the attempt
3941
+ * that runs `sessionId` and sent at once: what Ordewell made of one of its
3942
+ * events once that settled. Dropped once the task's next attempt started.
3943
+ */
3944
+ note(sessionId: string, taskId: string, entry: TaskLogEvent): void;
3945
+ /** Start a new attempt's log for `session`, opening with the skills it was given, and keep it until the session exits. */
3946
+ record(taskId: string, session: IRunnerSession, skills?: readonly TaskSkillSnapshot[], attemptNumber?: number): void;
3947
+ }
3948
+
3722
3949
  /**
3723
3950
  * Options for plan generation. Progress is not overridable: every planner
3724
3951
  * progress event is translated to a SessionMessage inside the Session and
@@ -3803,7 +4030,7 @@ interface SessionDeps {
3803
4030
  /** Persistence seam. Defaults to the saved-session store under the workspace. */
3804
4031
  saveSession?: SaveSession;
3805
4032
  /** Where a structured task's log is saved (ADR-0018, P1). Defaults to a file per attempt beside the session's. */
3806
- openTaskLog?: (location: TaskLogLocation, taskId: string) => TaskLogFile;
4033
+ openTaskLog?: (location: TaskLogLocation, taskId: string, attempt?: number) => TaskLogFile;
3807
4034
  /** The Ordewell MCP server a harness planner's tools are served from (ADR-0022). Defaults to the process's one. */
3808
4035
  mcpServer?: OrdewellMcpServer;
3809
4036
  }
@@ -3835,6 +4062,8 @@ interface SessionParts {
3835
4062
  usage: PlannerUsageLedger;
3836
4063
  approvals: PendingApprovals;
3837
4064
  approvalPolicy: ApprovalPolicy;
4065
+ /** Where the Session writes what it made of a task's event into that attempt's log. */
4066
+ taskLogs: Pick<TaskLogRecorder, 'note'>;
3838
4067
  fetcher: IWebFetcher;
3839
4068
  skillsService: Pick<SkillsService, 'findSkill' | 'listSkills' | 'searchedDirs' | 'forRoot'>;
3840
4069
  saveSession: SaveSession;
@@ -3882,6 +4111,7 @@ declare class Session {
3882
4111
  private readonly fsAdapter;
3883
4112
  private readonly approvals;
3884
4113
  private readonly approvalPolicy;
4114
+ private readonly taskLogs;
3885
4115
  private readonly fetcher;
3886
4116
  private readonly settingsFn;
3887
4117
  private readonly save;
@@ -4081,6 +4311,8 @@ declare class Session {
4081
4311
  * boundary rewrites `in_progress` to `pending` — nothing is running when a
4082
4312
  * session comes off a file — so a surface that re-reads the plan mid-run must
4083
4313
  * come here instead, or every task it is watching reads as never started.
4314
+ * An archived snapshot carries the task as it is now: a retry or continue
4315
+ * keeps the archive while the live task runs on and spends more.
4084
4316
  */
4085
4317
  get currentPlanState(): PlanState | null;
4086
4318
  get currentGoal(): string;
@@ -4257,8 +4489,16 @@ declare class Session {
4257
4489
  executePlan(): Promise<void>;
4258
4490
  private idlePlan;
4259
4491
  private runWholePlan;
4492
+ /**
4493
+ * Execute while a run is under way (#95): the seam has approved every task,
4494
+ * as executing does, and the run takes them in. A run the scheduler was not
4495
+ * driving, one task started on its own, becomes the plan's run, as Execute
4496
+ * would make it.
4497
+ */
4498
+ private joinRun;
4260
4499
  approveReview(): Promise<LegacyPlanState>;
4261
- forceStartTask(taskId: string): Promise<void>;
4500
+ /** Answers the line saying the task waits for its dependencies, when it was queued behind them rather than started. */
4501
+ forceStartTask(taskId: string): Promise<string | undefined>;
4262
4502
  private startOneTask;
4263
4503
  runTask(taskId: string): Promise<void>;
4264
4504
  /**
@@ -4283,8 +4523,22 @@ declare class Session {
4283
4523
  markTaskIncomplete(taskId: string): Promise<void>;
4284
4524
  /** Resume a task paused on a usage limit now, once the user says it has reset; see {@link TaskOrchestrator.resumeNow}. */
4285
4525
  resumeNow(taskId: string): Promise<void>;
4526
+ /**
4527
+ * Keep what waits on the planner's usage limit from being sent at the reset:
4528
+ * it goes with the user's next message instead. False when nothing waits on
4529
+ * a reset.
4530
+ */
4531
+ cancelPlannerResend(): boolean;
4286
4532
  /** Keep a task paused on a usage limit from resuming on its own; see {@link TaskOrchestrator.cancelScheduledResume}. */
4287
4533
  cancelScheduledResume(taskId: string): boolean;
4534
+ /**
4535
+ * The plan follows a model switch the user made in the runner (#106), and
4536
+ * the task's log says what the plan holds once that settled: a write-back
4537
+ * not made — no model command asked for the change, or the edit failed — is
4538
+ * stated, never shown as made. Once the switch's attempt has ended, the plan
4539
+ * may be another one, so nothing of it is said.
4540
+ */
4541
+ private followRunnerModel;
4288
4542
  /** Said through both channels: a host shows one or the other, never both (the daemon's toasts are no-ops). */
4289
4543
  private notice;
4290
4544
  approveCheckpoint(taskId: string): void;
@@ -4584,6 +4838,10 @@ interface ErrorBody {
4584
4838
  interface OkResponse {
4585
4839
  ok: boolean;
4586
4840
  }
4841
+ /** A task start's answer: `queued` says why it did not start now, when the task waits for its dependencies instead. */
4842
+ interface TaskStartResponse extends OkResponse {
4843
+ queued?: string;
4844
+ }
4587
4845
  /**
4588
4846
  * A plan as the planner routes return it: the session's plan state, not the
4589
4847
  * `SerializedPlan` a websocket `plan_generated` carries. The two differ —
@@ -5015,6 +5273,7 @@ declare class StructuredSession extends AbstractRunnerSession {
5015
5273
  private messageCount;
5016
5274
  private interrupting;
5017
5275
  private lastSessionId;
5276
+ private lastSessionCost;
5018
5277
  private readonly structuredEmitter;
5019
5278
  private permissionCount;
5020
5279
  /**
@@ -5089,6 +5348,7 @@ declare class StructuredSession extends AbstractRunnerSession {
5089
5348
  removeQueued(id: string): boolean;
5090
5349
  queued(): QueuedTaskMessage[];
5091
5350
  nativeSessionId(): string | null;
5351
+ sessionCost(): RunnerSessionCost | null;
5092
5352
  answerPermission(id: string, decision: ApprovalDecision): boolean;
5093
5353
  /** Every open request goes unanswered once the process that asked is gone. */
5094
5354
  private withdrawPermissions;
@@ -5173,34 +5433,6 @@ type Continuability = {
5173
5433
  declare function continuability(task: Task): Continuability;
5174
5434
  declare function canContinue(task: Task): boolean;
5175
5435
 
5176
- interface TaskLogRecorderDeps {
5177
- broadcast: SessionBroadcaster;
5178
- /** Where the session's logs go, read as each attempt starts: a session's id can change between plans. */
5179
- location: () => TaskLogLocation;
5180
- /** Opens an attempt's file; tests pass one that never touches the disk. */
5181
- open?: (location: TaskLogLocation, taskId: string) => TaskLogFile;
5182
- flushMs?: number;
5183
- logger?: ILogger;
5184
- }
5185
- /**
5186
- * Keeps each structured task's log (ADR-0018, P1): every event of an attempt
5187
- * is appended to that attempt's file and broadcast as `task_log`, in the same
5188
- * batches, so what a surface saw live and what it reloads are one sequence.
5189
- *
5190
- * It sits around the runner rather than inside the orchestrator, which stays
5191
- * unaware of logs.
5192
- */
5193
- declare class TaskLogRecorder {
5194
- private readonly deps;
5195
- private readonly open;
5196
- private readonly flushMs;
5197
- private readonly logger;
5198
- constructor(deps: TaskLogRecorderDeps);
5199
- wrap(runner: IRunner): IRunner;
5200
- /** Start a new attempt's log for `session`, opening with the skills it was given, and keep it until the session exits. */
5201
- record(taskId: string, session: IRunnerSession, skills?: readonly TaskSkillSnapshot[]): void;
5202
- }
5203
-
5204
5436
  declare function stripAnsi(text: string): string;
5205
5437
 
5206
5438
  /**
@@ -5616,4 +5848,4 @@ declare const DEFAULT_MAX_PARALLEL = 5;
5616
5848
  */
5617
5849
  declare function parseMaxParallel(value: unknown): number | null;
5618
5850
 
5619
- export { ALL_PROVIDERS, AbstractRunner, AbstractRunnerSession, type AdoptSessionResponse, type Adr0013IsolationRun, type Adr0013PlanIsolation, type Adr0013TaskRecord, AgentAdapter, AgentEvent, AgentProcessDeps, AgentStartOptions, AiProvider, AlreadyExecutingError, ApplyTaskOpsResult, ApprovalAnswer, type ApprovalAnswerResponse, ApprovalDecision, ApprovalModeSetting, ApprovalPolicy, ApprovalRequest, type ApprovalRequestMessage, type ApprovalsResponse, type AskOptions, BaseAiService, BaseConfig, BaseFileSystem, BufferedTaskOutputSource, type ByPlannerBackend, CHAT_COMMANDS, CLAUDE_CODE_MANIFEST, CLI_PROVIDERS, CMD_EXE_MAX_COMMAND_LINE, CODEX_SANDBOX_DOCS, CODEX_SANDBOX_OFF_LINE, type CachedPage, type CancelPlanningResponse, type CancelResumeResponse, type CappedRows, CheckpointAnswer, type CheckpointListener, ClaudeCodeAdapter, CliAgentAiService, type CliAgentAiServiceDeps, CodexAdapter, CodexSandboxAvailability, type CommandDescriptor, CommandLineTooLongError, type CommandOutcome, type CommandsResponse, type ConfiguredPlanner, type Consent, ConsoleLogger, ContextCollector, type Continuability, ConversationBusyError, type ConversationCompactResponse, type ConversationCompaction, ConversationEditError, type ConversationFork, type ConversationForkResponse, ConversationMessage, type ConversationRequest, type ConversationRewind, type ConversationRewindResponse, type ConversationTurn, DAEMON_SUBPROTOCOL, DAEMON_TOKEN_SUBPROTOCOL_PREFIX, DEFAULT_MAX_PARALLEL, DEFAULT_WEB_READ_BUDGET, type DaemonErrorCode, type DecideOptions, type DirEntry, DiscoveredModel, DuckDuckGoSearchProvider, EmbeddedNewlineError, type EnvAdmission, EnvConfig, type ErrorBody, type ExecImpl, ExecutableNotFoundError, type ExecuteResponse, ExecutionActor, type ExecutionCommand, ExecutionCommandName, ExecutionCommands, type ExecutionHost, ExecutionRecord, FindSymbolOptions, type ForceSendResponse, GREP_PCRE_PROBE_ARGS, GeminiService, type GeneratePlanResponse, type GitExecFn, GlobOptions, GlobalRunSettings, type GrepInvocation, GrepOptions, type GrepRegex, GuardTarget, GuardTrip, HARNESS_PLANNER_REASON, HEADLESS_CLI_COMMANDS, type HasBinFn, HttpWebFetcher, type HttpWebFetcherOptions, type IAiService, IApproval, IConfig, IFileSystem, type ILogger, INotification, IRunner, IRunnerSession, type ISearchProvider, IWorktreeIsolation, type IsolationDiffResponse, IsolationLandedTask, type IsolationMergeResponse, IsolationMergeResult, IsolationTaskStatus, IsolationView, type KillTreeDeps, type LaunchDeps, type LaunchPlan, LegacyPlanState, type LiveOutputLookup, LiveTail, LiveTailOptions, type LoopGuard, type MappedTool, type MergeGateEntry, type MergeGateResponse, ModelResolver, type ModelResolverDeps, type ModelsResponse, NoPlanError, OPENCODE_MANIFEST, ORDEWELL_SETTABLE_ENV, OUTPUT_LINES_DEFAULT, OUTPUT_LINES_MAX, type OkResponse, OpenAiService, OpenCodeAdapter, OrchestratorObserver, OrchestratorOption, OrdewellMcpServer, PROVIDER_CREDENTIAL_ENV, PROVIDER_DETECT_PRIORITY, PROVIDER_LABEL, PROVIDER_PRIORITY, PROVIDER_SHORT_LABEL, type PendingApproval, PendingApprovals, type PendingApprovalsOptions, PlanEditError, PlanIsolation, type PlanRequest, type PlanResponse, PlanState, PlanStatus, PlanStore, Planner, type PlannerBackendEntry, PlannerBackendId, type PlannerChoice, type PlannerCommandSyntax, type PlannerModelCandidate, type PlannerModelChoice, type PlannerModelLookup, PlannerModelMemory, type PlannerModelRecall, type PlannerModelSource, type PlannerModelStore, type PlannerNotReady, PlannerNotReadyError, type PlannerReadinessConfig, type PlannerSelectionChange, type PlannerSelectionCurrent, type PlannerSelectionResult, type PlannerSelectionState, type PlannerSubmission, PlannerToolHandler, PlannerTurnDiscardedError, PlannerTurnStoppedError, type PlannerUsability, PlannerUsage, type PrdBlock, type PrdResponse, ProviderModelLists, type ProviderRegistration, QueuedTaskMessage, ReadFileOpts, type RemoveMessageResponse, type ResearchChat, ResearchLogEntry, ResearchShell, type ResearchTurn, type ResolveConflictResponse, type ResolvedChoice, type ResolvedPlanner, type RewindTarget, type RewindTargetsResponse, RunMergeView, type RunSnapshotFrame, RunView, RunnerApprovals, RunnerCommand, RunnerId, RunnerInstallation, RunnerManifest, RunnerModeInfo, RunnerRegistry, type RunnerSpawnOptions, type RunnersResponse, SETTINGS_ENV_ALLOWLIST, SETTINGS_ENV_REFUSED, STATE_DIR, STATE_DIR_IGNORE, STOPPED_TOOL_RESULT, SUPERVISOR_LEVELS, SYMBOL_LANGUAGES, type SaveSession, type SearchHit, type SearchOutcome, type SearchPage, type SearchTransport, Session, SessionBroadcaster, type SessionData, type SessionDeps, type SessionFrame, type SessionListResponse, SessionMessage, type SessionMeta, SessionNotFoundError, SessionNotice, type SessionPlanner, type SessionResponse, type SessionRuntimeSettings, type SettingsResponse, type SettingsUpdateResponse, SkillInfo, type SkillInvocation, SkillLoad, SkillsService, type SpawnSpec, StartAdmission, StdioAgentAdapter, type StopResponse, type StreamStamp, StructuredEvent, StructuredRunner, type StructuredRunnerDeps, StructuredSession, StructuredTurnEnd, SupervisorLevel, type SupervisorPolicy, SurfacePlan, SurfacePlanState, TASK_QUERY_ANSWER_MAX_CHARS, TASK_QUERY_ANSWER_OR_OPS, TASK_QUERY_FIELDS, TASK_QUERY_PROTOCOL, TASK_QUERY_REMINDER, TERMINAL_UI_COMMANDS, Task, TaskCompleteArgs, type TaskLogAttemptsResponse, TaskLogEvent, type TaskLogFile, type TaskLogLocation, TaskLogRecorder, type TaskLogRecorderDeps, type TaskLogResponse, TaskMessageFrom, type TaskMessageResponse, TaskModeAgentAdapter, TaskOp, TaskOrchestrator, TaskOutputSource, type TaskQuery, type TaskQueryCatalog, type TaskQueryField, TaskRunnerFlags, TaskStartOptions, TaskTokenScope, type TokenCarriers, type ToolCall, ToolOutcome, type ToolResult, UsageRecord, UserSettings, VerdictEngine, type VerdictListener, WINDOWS_MAX_COMMAND_LINE, type WebRead, type WebReadDecision, type WebResponse, WebResponseCache, type WebResponseCacheOptions, type WebTransport, type WorkspaceCheckDeps, WorkspaceNotAProjectError, WorkspaceNotFoundError, type WorkspaceProjectCheckDeps, type WorkspacesResponse, type WorktreeIsolationDeps, abbreviateHome, admitSettingsEnv, applyHeadLimit, assertWorkspaceExists, assertWorkspaceIsProject, augmentedPath, bearerHeaderValue, buildFallbackGrepArgs, buildGlobArgs, buildGrepArgs, canContinue, clearAugmentedPathCache, clearDaemonToken, clearState, clipboardCopyCommand, codexSandboxNotice, configuredProviders, continuability, createAiService, createSession, createTaskAdapter, createWorktreeIsolation, daemonTokenPath, defaultEnabledRunners, defaultLogger, definitionPattern, deleteSession, describeMergeResult, describePlannerNotReady, detectInstalledPlanner, discoverGeminiModels, ensureDir, ensurePrivateDir, ensureStateDirIgnored, extractPrdBlock, extractPresentedToken, filterFallbackByAnchoredInclude, findInstalledPlanner, formatSearchOutput, getLatestSession, getProviderMeta, getStateDir, globalDataDir, grantScopeFor, grepRegexFromProbe, idSegment, includeGlobFor, installedPlannerAnswered, installedPlannerDetected, isApiProvider, isCliProvider, isExecutableResolved, isOpenAiProvider, isPlannerBackend, isVendorModelFor, killTree, languageForId, listSessions, listTaskLogAttempts, listTree, loadSession, loadSessionPlanState, loadState, looksLikeChallenge, mapAgentTool, migrateOldConfigDir, migratePlanIsolation, mintDaemonToken, mintSessionId, normalizeAgentArgs, normalizeGeminiModel, openTaskLog, parseMaxParallel, parseSearchHits, parseTaskQueryJson, planDirectLaunch, plannerBackendEntries, plannerMessage, plannerNotReady, plannerNotReadyFor, plannerTranscript, prefixModelId, providerForRunner, readDaemonToken, readTaskLog, recordInstalledPlanner, recordedInstalledPlanner, referencePattern, removedPluginNotice, renderTaskQueryAnswer, resetInstalledPlanner, resolveProviderFromPrefix, resolveSkillInvocation, resolveTaskRunnerFlags, resolveWithin, runnerForProvider, sanitizeSlug, savePrdMarkdown, saveSession, saveState, selectPlanner, sessionDataDir, sessionRuntimeSettings, sharedSearchProvider, sharedWebResponseCache, stateExists, stripAnsi, stripModelPrefix, supportsTaskMode, taskQuerySignature, textHasTaskQuery, tokenSubprotocols, tokensMatch, wellKnownBinDirs, windowsCommandLine, withPath, writePrivateFile };
5851
+ export { ALL_PROVIDERS, AbstractRunner, AbstractRunnerSession, type AdoptSessionResponse, type Adr0013IsolationRun, type Adr0013PlanIsolation, type Adr0013TaskRecord, AgentAdapter, AgentEvent, AgentProcessDeps, AgentStartOptions, AiProvider, AlreadyExecutingError, ApplyTaskOpsResult, ApprovalAnswer, type ApprovalAnswerResponse, ApprovalDecision, ApprovalModeSetting, ApprovalPolicy, ApprovalRequest, type ApprovalRequestMessage, type ApprovalsResponse, type AskOptions, AssignmentScope, BaseAiService, BaseConfig, BaseFileSystem, BufferedTaskOutputSource, type ByPlannerBackend, CHAT_COMMANDS, CLAUDE_CODE_MANIFEST, CLI_PROVIDERS, CMD_EXE_MAX_COMMAND_LINE, CODEX_SANDBOX_DOCS, CODEX_SANDBOX_OFF_LINE, type CachedPage, type CancelPlanningResponse, type CancelResumeResponse, type CappedRows, CheckpointAnswer, type CheckpointListener, ClaudeCodeAdapter, CliAgentAiService, type CliAgentAiServiceDeps, CodexAdapter, CodexSandboxAvailability, type CommandDescriptor, CommandLineTooLongError, type CommandOutcome, type CommandsResponse, type ConfiguredPlanner, type Consent, ConsoleLogger, ContextCollector, type Continuability, ConversationBusyError, type ConversationCompactResponse, type ConversationCompaction, ConversationEditError, type ConversationFork, type ConversationForkResponse, ConversationMessage, type ConversationRequest, type ConversationRewind, type ConversationRewindResponse, type ConversationTurn, DAEMON_SUBPROTOCOL, DAEMON_TOKEN_SUBPROTOCOL_PREFIX, DEFAULT_MAX_PARALLEL, DEFAULT_WEB_READ_BUDGET, type DaemonErrorCode, type DecideOptions, type DirEntry, DiscoveredModel, DuckDuckGoSearchProvider, EmbeddedNewlineError, type EnvAdmission, EnvConfig, type ErrorBody, type ExecImpl, ExecutableNotFoundError, type ExecuteResponse, ExecutionActor, type ExecutionCommand, ExecutionCommandName, ExecutionCommands, type ExecutionHost, ExecutionRecord, FindSymbolOptions, type ForceSendResponse, GREP_PCRE_PROBE_ARGS, GeminiService, type GeneratePlanResponse, type GitExecFn, GlobOptions, GlobalRunSettings, type GrepInvocation, GrepOptions, type GrepRegex, GuardTarget, GuardTrip, HARNESS_PLANNER_REASON, HEADLESS_CLI_COMMANDS, type HasBinFn, HttpWebFetcher, type HttpWebFetcherOptions, type IAiService, IApproval, IConfig, IFileSystem, type ILogger, INotification, IRunner, IRunnerSession, type ISearchProvider, IWorktreeIsolation, type IsolationDiffResponse, IsolationLandedTask, type IsolationMergeResponse, IsolationMergeResult, IsolationTaskStatus, IsolationView, type KillTreeDeps, type LaunchDeps, type LaunchPlan, LegacyPlanState, type LiveOutputLookup, LiveTail, LiveTailOptions, type LoopGuard, type MappedTool, type MergeGateEntry, type MergeGateResponse, type MergeWordingHandoff, ModelResolver, type ModelResolverDeps, type ModelsResponse, NoPlanError, OPENCODE_MANIFEST, ORDEWELL_SETTABLE_ENV, OUTPUT_LINES_DEFAULT, OUTPUT_LINES_MAX, type OkResponse, OpenAiService, OpenCodeAdapter, OrchestratorObserver, OrchestratorOption, OrdewellMcpServer, PROVIDER_CREDENTIAL_ENV, PROVIDER_DETECT_PRIORITY, PROVIDER_LABEL, PROVIDER_PRIORITY, PROVIDER_SHORT_LABEL, type PendingApproval, PendingApprovals, type PendingApprovalsOptions, PlanEditError, PlanIsolation, type PlanRequest, type PlanResponse, PlanState, PlanStatus, PlanStore, Planner, type PlannerBackendEntry, PlannerBackendId, type PlannerChoice, type PlannerCommandSyntax, type PlannerModelCandidate, type PlannerModelChoice, type PlannerModelLookup, PlannerModelMemory, type PlannerModelRecall, type PlannerModelSource, type PlannerModelStore, type PlannerNotReady, PlannerNotReadyError, type PlannerReadinessConfig, type PlannerSelectionChange, type PlannerSelectionCurrent, type PlannerSelectionResult, type PlannerSelectionState, type PlannerSubmission, PlannerToolHandler, PlannerTurnDiscardedError, PlannerTurnStoppedError, type PlannerUsability, PlannerUsage, PlannerUsageLimitError, type PrdBlock, type PrdResponse, ProviderModelLists, type ProviderRegistration, QueuedTaskMessage, ReadFileOpts, type RemoveMessageResponse, type ResearchChat, ResearchLogEntry, ResearchShell, type ResearchTurn, type ResolveConflictResponse, type ResolvedChoice, type ResolvedPlanner, type RewindTarget, type RewindTargetsResponse, RunMergeView, type RunSnapshotFrame, RunView, RunnerApprovals, RunnerCommand, RunnerId, RunnerInstallation, RunnerManifest, RunnerModeInfo, RunnerRegistry, RunnerSessionCost, type RunnerSpawnOptions, type RunnersResponse, SETTINGS_ENV_ALLOWLIST, SETTINGS_ENV_REFUSED, STATE_DIR, STATE_DIR_IGNORE, STOPPED_TOOL_RESULT, SUPERVISOR_LEVELS, SYMBOL_LANGUAGES, type SaveSession, type SearchHit, type SearchOutcome, type SearchPage, type SearchTransport, Session, SessionBroadcaster, type SessionData, type SessionDeps, type SessionFrame, type SessionListResponse, SessionMessage, type SessionMeta, SessionNotFoundError, SessionNotice, type SessionPlanner, type SessionResponse, type SessionRuntimeSettings, type SettingsResponse, type SettingsUpdateResponse, SkillInfo, type SkillInvocation, SkillLoad, SkillsService, type SpawnSpec, StartAdmission, StdioAgentAdapter, type StopResponse, type StreamStamp, StructuredEvent, StructuredRunner, type StructuredRunnerDeps, StructuredSession, StructuredTurnEnd, SupervisorLevel, type SupervisorPolicy, SurfacePlan, SurfacePlanState, TASK_QUERY_ANSWER_MAX_CHARS, TASK_QUERY_ANSWER_OR_OPS, TASK_QUERY_FIELDS, TASK_QUERY_PROTOCOL, TASK_QUERY_REMINDER, TERMINAL_UI_COMMANDS, Task, TaskCompleteArgs, type TaskLogAttemptsResponse, TaskLogEvent, type TaskLogFile, type TaskLogLocation, TaskLogRecorder, type TaskLogRecorderDeps, type TaskLogResponse, TaskMessageFrom, type TaskMessageResponse, TaskModeAgentAdapter, TaskOp, TaskOrchestrator, TaskOutputSource, type TaskQuery, type TaskQueryCatalog, type TaskQueryField, TaskRunnerFlags, TaskStartOptions, type TaskStartResponse, TaskTokenScope, type TokenCarriers, type ToolCall, ToolOutcome, type ToolResult, UsageRecord, UserSettings, VerdictEngine, type VerdictListener, WINDOWS_MAX_COMMAND_LINE, type WebRead, type WebReadDecision, type WebResponse, WebResponseCache, type WebResponseCacheOptions, type WebTransport, type WorkspaceCheckDeps, WorkspaceNotAProjectError, WorkspaceNotFoundError, type WorkspaceProjectCheckDeps, type WorkspacesResponse, type WorktreeIsolationDeps, abbreviateHome, admitSettingsEnv, applyHeadLimit, assertWorkspaceExists, assertWorkspaceIsProject, augmentedPath, bearerHeaderValue, buildFallbackGrepArgs, buildGlobArgs, buildGrepArgs, canContinue, checkoutRule, clearAugmentedPathCache, clearDaemonToken, clearState, clipboardCopyCommand, codexSandboxNotice, configuredProviders, continuability, createAiService, createSession, createTaskAdapter, createWorktreeIsolation, daemonTokenPath, defaultEnabledRunners, defaultLogger, definitionPattern, deleteSession, describeMergeResult, describePlannerNotReady, detectInstalledPlanner, discoverGeminiModels, ensureDir, ensurePrivateDir, ensureStateDirIgnored, extractPrdBlock, extractPresentedToken, filterFallbackByAnchoredInclude, findInstalledPlanner, formatSearchOutput, getLatestSession, getProviderMeta, getStateDir, globalDataDir, grantScopeFor, grepRegexFromProbe, idSegment, includeGlobFor, installedPlannerAnswered, installedPlannerDetected, isApiProvider, isCliProvider, isExecutableResolved, isOpenAiProvider, isPlannerBackend, isRepoGroup, isVendorModelFor, killTree, languageForId, listSessions, listTaskLogAttempts, listTree, loadSession, loadSessionPlanState, loadState, looksLikeChallenge, mapAgentTool, mergeTarget, migrateOldConfigDir, migratePlanIsolation, mintDaemonToken, mintSessionId, normalizeAgentArgs, normalizeGeminiModel, openTaskLog, parseMaxParallel, parseSearchHits, parseTaskQueryJson, planDirectLaunch, plannerBackendEntries, plannerMessage, plannerNotReady, plannerNotReadyFor, plannerTranscript, prefixModelId, providerForRunner, readDaemonToken, readTaskLog, recordInstalledPlanner, recordedInstalledPlanner, referencePattern, removedPluginNotice, renderTaskQueryAnswer, reposWithWork, resetInstalledPlanner, resolveProviderFromPrefix, resolveSkillInvocation, resolveTaskRunnerFlags, resolveWithin, runnerForProvider, sanitizeSlug, savePrdMarkdown, saveSession, saveState, selectPlanner, sessionDataDir, sessionRuntimeSettings, sharedSearchProvider, sharedWebResponseCache, stateExists, stripAnsi, stripModelPrefix, supportsTaskMode, taskQuerySignature, textHasTaskQuery, tokenSubprotocols, tokensMatch, wellKnownBinDirs, windowsCommandLine, withPath, writePrivateFile };