@ordewell/core 0.10.3 → 0.10.4
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/{IFileSystem-DCd-rkeH.d.ts → IFileSystem-_effm8-b.d.ts} +1 -1
- package/dist/{IFileSystem-B8Nkgg4e.d.mts → IFileSystem-vyqMdL-x.d.mts} +1 -1
- package/dist/{IRunner-CXdYyIZo.d.mts → IRunner-D_UkkMbJ.d.ts} +1 -1
- package/dist/{IRunner-QBdYcatb.d.ts → IRunner-NtTHQgLR.d.mts} +1 -1
- package/dist/{ModeResolver-BOU90Nn-.d.ts → ModeResolver-Dy3Ef6p-.d.ts} +1 -1
- package/dist/{ModeResolver-geqjKkLY.d.mts → ModeResolver-wnTFsDnF.d.mts} +1 -1
- package/dist/{Task-CRVIqSfy.d.mts → Task-DZs9eKgg.d.mts} +1 -1
- package/dist/{Task-CRVIqSfy.d.ts → Task-DZs9eKgg.d.ts} +1 -1
- package/dist/index.d.mts +21 -12
- package/dist/index.d.ts +21 -12
- package/dist/index.js +113 -27
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +113 -27
- package/dist/index.mjs.map +1 -1
- package/dist/parsing.d.mts +2 -2
- package/dist/parsing.d.ts +2 -2
- package/dist/{plan-utils-KU1Rse82.d.mts → plan-utils-CtKceSsQ.d.mts} +3 -3
- package/dist/{plan-utils-oC8bO4pN.d.ts → plan-utils-POIz5d8z.d.ts} +3 -3
- package/dist/plan-utils.d.mts +4 -4
- package/dist/plan-utils.d.ts +4 -4
- package/dist/testing.d.mts +3 -3
- package/dist/testing.d.ts +3 -3
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChildProcess } from 'child_process';
|
|
2
|
-
import { a2 as RunnerId, ar as UsageRecord, ad as SubagentOutcome, d as DiscoveredModel, am as TaskSkillSnapshot } from './Task-
|
|
2
|
+
import { a2 as RunnerId, ar as UsageRecord, ad as SubagentOutcome, d as DiscoveredModel, am as TaskSkillSnapshot } from './Task-DZs9eKgg.js';
|
|
3
3
|
import { z } from 'zod/v4';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChildProcess } from 'child_process';
|
|
2
|
-
import { a2 as RunnerId, ar as UsageRecord, ad as SubagentOutcome, d as DiscoveredModel, am as TaskSkillSnapshot } from './Task-
|
|
2
|
+
import { a2 as RunnerId, ar as UsageRecord, ad as SubagentOutcome, d as DiscoveredModel, am as TaskSkillSnapshot } from './Task-DZs9eKgg.mjs';
|
|
3
3
|
import { z } from 'zod/v4';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -463,7 +463,7 @@ interface IWorktreeIsolation {
|
|
|
463
463
|
* so a crash-recovery prune does not sweep it away; a repair it ends leaves
|
|
464
464
|
* the task `conflict`, as it was before the repair. Takes the run rather than
|
|
465
465
|
* a bare task id: ids are only unique within one plan, and one daemon serves
|
|
466
|
-
* many (ADR-
|
|
466
|
+
* many (ADR-0025 D2).
|
|
467
467
|
*/
|
|
468
468
|
release(run: IsolationRun, taskId: string, opts: {
|
|
469
469
|
keep: boolean;
|
|
@@ -463,7 +463,7 @@ interface IWorktreeIsolation {
|
|
|
463
463
|
* so a crash-recovery prune does not sweep it away; a repair it ends leaves
|
|
464
464
|
* the task `conflict`, as it was before the repair. Takes the run rather than
|
|
465
465
|
* a bare task id: ids are only unique within one plan, and one daemon serves
|
|
466
|
-
* many (ADR-
|
|
466
|
+
* many (ADR-0025 D2).
|
|
467
467
|
*/
|
|
468
468
|
release(run: IsolationRun, taskId: string, opts: {
|
|
469
469
|
keep: boolean;
|
package/dist/index.d.mts
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
7
|
-
import { T as ToolOutcome, I as IFileSystem, R as ReadFileOpts, b as GrepOptions, a as GlobOptions, F as FindSymbolOptions } from './IFileSystem-
|
|
8
|
-
export { G as GREP_DEFAULT_HEAD_LIMIT, c as GrepOutputMode, S as SEARCH_EXCLUSIONS } from './IFileSystem-
|
|
9
|
-
import { R as RunnerModeInfo } from './ModeResolver-
|
|
10
|
-
export { a as autonomyLevelLabel, p as parseAutonomyLevel, r as runnerModesFrom } from './ModeResolver-
|
|
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.mjs';
|
|
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.mjs';
|
|
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-CtKceSsQ.mjs';
|
|
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-CtKceSsQ.mjs';
|
|
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-NtTHQgLR.mjs';
|
|
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-NtTHQgLR.mjs';
|
|
7
|
+
import { T as ToolOutcome, I as IFileSystem, R as ReadFileOpts, b as GrepOptions, a as GlobOptions, F as FindSymbolOptions } from './IFileSystem-vyqMdL-x.mjs';
|
|
8
|
+
export { G as GREP_DEFAULT_HEAD_LIMIT, c as GrepOutputMode, S as SEARCH_EXCLUSIONS } from './IFileSystem-vyqMdL-x.mjs';
|
|
9
|
+
import { R as RunnerModeInfo } from './ModeResolver-wnTFsDnF.mjs';
|
|
10
|
+
export { a as autonomyLevelLabel, p as parseAutonomyLevel, r as runnerModesFrom } from './ModeResolver-wnTFsDnF.mjs';
|
|
11
11
|
import { ChildProcess } from 'child_process';
|
|
12
12
|
import { EventEmitter } from 'events';
|
|
13
13
|
import 'zod/v4';
|
|
@@ -2462,9 +2462,17 @@ declare class RunnerInstallation {
|
|
|
2462
2462
|
private inflight;
|
|
2463
2463
|
private registry;
|
|
2464
2464
|
private execImpl;
|
|
2465
|
-
|
|
2465
|
+
private now;
|
|
2466
|
+
constructor(registry: RunnerRegistry, execImpl?: ExecImpl, now?: () => number);
|
|
2466
2467
|
/** True if the runner's CLI responds to `--version`. Cached per process. */
|
|
2467
2468
|
isInstalled(runner: string): Promise<boolean>;
|
|
2469
|
+
/**
|
|
2470
|
+
* Forget cached "not installed" verdicts so the next probe re-runs them. A
|
|
2471
|
+
* runner-list refresh calls this, so a CLI installed while the host runs is
|
|
2472
|
+
* offered without a restart. An installed verdict stays: it cannot have
|
|
2473
|
+
* changed without the binary going away, and re-probing one costs a spawn.
|
|
2474
|
+
*/
|
|
2475
|
+
refresh(): void;
|
|
2468
2476
|
/**
|
|
2469
2477
|
* Whether this runner can serve as a harness planner (ADR-0009, T9), and why
|
|
2470
2478
|
* not when it cannot. Surfaces call this to grey out an unusable agent in the
|
|
@@ -2522,7 +2530,8 @@ declare function recordedInstalledPlanner(): PlannerBackendId | null;
|
|
|
2522
2530
|
* latest probe found installed, so a Codex-only or OpenCode-only host can plan
|
|
2523
2531
|
* and run on its first start; DEFAULT_RUNNERS while none was found or no probe
|
|
2524
2532
|
* has answered. Read on each call and never saved, so an agent installed later
|
|
2525
|
-
* joins on the next probe
|
|
2533
|
+
* joins on the next probe — a runner-list refresh asks again — and a saved
|
|
2534
|
+
* choice, even an empty one, still wins.
|
|
2526
2535
|
* Every host's config reads it here, so the daemon, CLI, TUI and VS Code agree.
|
|
2527
2536
|
*/
|
|
2528
2537
|
declare function defaultEnabledRunners(): RunnerId[];
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
7
|
-
import { T as ToolOutcome, I as IFileSystem, R as ReadFileOpts, b as GrepOptions, a as GlobOptions, F as FindSymbolOptions } from './IFileSystem-
|
|
8
|
-
export { G as GREP_DEFAULT_HEAD_LIMIT, c as GrepOutputMode, S as SEARCH_EXCLUSIONS } from './IFileSystem-
|
|
9
|
-
import { R as RunnerModeInfo } from './ModeResolver-
|
|
10
|
-
export { a as autonomyLevelLabel, p as parseAutonomyLevel, r as runnerModesFrom } from './ModeResolver-
|
|
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';
|
|
11
11
|
import { ChildProcess } from 'child_process';
|
|
12
12
|
import { EventEmitter } from 'events';
|
|
13
13
|
import 'zod/v4';
|
|
@@ -2462,9 +2462,17 @@ declare class RunnerInstallation {
|
|
|
2462
2462
|
private inflight;
|
|
2463
2463
|
private registry;
|
|
2464
2464
|
private execImpl;
|
|
2465
|
-
|
|
2465
|
+
private now;
|
|
2466
|
+
constructor(registry: RunnerRegistry, execImpl?: ExecImpl, now?: () => number);
|
|
2466
2467
|
/** True if the runner's CLI responds to `--version`. Cached per process. */
|
|
2467
2468
|
isInstalled(runner: string): Promise<boolean>;
|
|
2469
|
+
/**
|
|
2470
|
+
* Forget cached "not installed" verdicts so the next probe re-runs them. A
|
|
2471
|
+
* runner-list refresh calls this, so a CLI installed while the host runs is
|
|
2472
|
+
* offered without a restart. An installed verdict stays: it cannot have
|
|
2473
|
+
* changed without the binary going away, and re-probing one costs a spawn.
|
|
2474
|
+
*/
|
|
2475
|
+
refresh(): void;
|
|
2468
2476
|
/**
|
|
2469
2477
|
* Whether this runner can serve as a harness planner (ADR-0009, T9), and why
|
|
2470
2478
|
* not when it cannot. Surfaces call this to grey out an unusable agent in the
|
|
@@ -2522,7 +2530,8 @@ declare function recordedInstalledPlanner(): PlannerBackendId | null;
|
|
|
2522
2530
|
* latest probe found installed, so a Codex-only or OpenCode-only host can plan
|
|
2523
2531
|
* and run on its first start; DEFAULT_RUNNERS while none was found or no probe
|
|
2524
2532
|
* has answered. Read on each call and never saved, so an agent installed later
|
|
2525
|
-
* joins on the next probe
|
|
2533
|
+
* joins on the next probe — a runner-list refresh asks again — and a saved
|
|
2534
|
+
* choice, even an empty one, still wins.
|
|
2526
2535
|
* Every host's config reads it here, so the daemon, CLI, TUI and VS Code agree.
|
|
2527
2536
|
*/
|
|
2528
2537
|
declare function defaultEnabledRunners(): RunnerId[];
|
package/dist/index.js
CHANGED
|
@@ -7780,7 +7780,7 @@ var CODEX_MANIFEST = {
|
|
|
7780
7780
|
}
|
|
7781
7781
|
},
|
|
7782
7782
|
modelDiscovery: {
|
|
7783
|
-
// Codex has no `codex models` subcommand (see
|
|
7783
|
+
// Codex has no `codex models` subcommand (see ADR-0004). Discovery
|
|
7784
7784
|
// tries three sources in order, each falling through to the next:
|
|
7785
7785
|
//
|
|
7786
7786
|
// 1. `codex app-server` stdio JSON-RPC (`initialize` → `model/list`) —
|
|
@@ -7882,9 +7882,11 @@ function parseOpenCodeModelsVerbose(stdout, manifest) {
|
|
|
7882
7882
|
variants: variantIds.map((id) => ({ id, label: id.charAt(0).toUpperCase() + id.slice(1) }))
|
|
7883
7883
|
});
|
|
7884
7884
|
}
|
|
7885
|
-
|
|
7886
|
-
|
|
7887
|
-
|
|
7885
|
+
return preferredFirst(models, manifest);
|
|
7886
|
+
}
|
|
7887
|
+
function preferredFirst(models, manifest) {
|
|
7888
|
+
const prefOrder = manifest.modelDiscovery.preferredPatterns?.map((p) => p.id) ?? [];
|
|
7889
|
+
return [...models].sort((a, b) => {
|
|
7888
7890
|
const ai = prefOrder.indexOf(a.modelId);
|
|
7889
7891
|
const bi = prefOrder.indexOf(b.modelId);
|
|
7890
7892
|
if (ai >= 0 && bi >= 0) return ai - bi;
|
|
@@ -7892,7 +7894,36 @@ function parseOpenCodeModelsVerbose(stdout, manifest) {
|
|
|
7892
7894
|
if (bi >= 0) return 1;
|
|
7893
7895
|
return a.modelId.localeCompare(b.modelId);
|
|
7894
7896
|
});
|
|
7895
|
-
|
|
7897
|
+
}
|
|
7898
|
+
function parseOpenCodeModelsApi(stdout, manifest) {
|
|
7899
|
+
let data;
|
|
7900
|
+
try {
|
|
7901
|
+
data = JSON.parse(stdout)?.data;
|
|
7902
|
+
} catch {
|
|
7903
|
+
return [];
|
|
7904
|
+
}
|
|
7905
|
+
if (!Array.isArray(data)) return [];
|
|
7906
|
+
const prefLabels = new Map((manifest.modelDiscovery.preferredPatterns ?? []).map((p) => [p.id, p.label]));
|
|
7907
|
+
const seen = /* @__PURE__ */ new Set();
|
|
7908
|
+
const models = [];
|
|
7909
|
+
for (const entry of data) {
|
|
7910
|
+
if (!entry || typeof entry.providerID !== "string" || typeof entry.modelID !== "string") continue;
|
|
7911
|
+
if (entry.enabled === false) continue;
|
|
7912
|
+
const fullId = `${entry.providerID}/${entry.modelID}`;
|
|
7913
|
+
if (seen.has(fullId)) continue;
|
|
7914
|
+
seen.add(fullId);
|
|
7915
|
+
const variantIds = Array.isArray(entry.variants) ? entry.variants.flatMap((v) => {
|
|
7916
|
+
const id = v?.id;
|
|
7917
|
+
return typeof id === "string" && id ? [id] : [];
|
|
7918
|
+
}) : [];
|
|
7919
|
+
models.push({
|
|
7920
|
+
modelId: fullId,
|
|
7921
|
+
modelLabel: prefLabels.get(fullId) || typeof entry.name === "string" && entry.name || entry.modelID,
|
|
7922
|
+
runnerProvider: entry.providerID,
|
|
7923
|
+
variants: variantIds.map((id) => ({ id, label: id.charAt(0).toUpperCase() + id.slice(1) }))
|
|
7924
|
+
});
|
|
7925
|
+
}
|
|
7926
|
+
return preferredFirst(models, manifest);
|
|
7896
7927
|
}
|
|
7897
7928
|
|
|
7898
7929
|
// src/plugins/builtin/opencode.manifest.ts
|
|
@@ -7908,13 +7939,17 @@ var OPENCODE_MANIFEST = {
|
|
|
7908
7939
|
modelDiscovery: {
|
|
7909
7940
|
method: "command",
|
|
7910
7941
|
discoveryCommands: [
|
|
7942
|
+
// v1 prints per-model variants under --verbose; v2 rejects the flag (a
|
|
7943
|
+
// fast non-zero exit) and serves the same catalog, variants included, over
|
|
7944
|
+
// `api model.list`. v1 is asked first so it never reaches the `api` form.
|
|
7911
7945
|
{ command: "opencode", args: ["models", "--verbose"], parser: parseOpenCodeModelsVerbose },
|
|
7946
|
+
{ command: "opencode", args: ["api", "model.list"], parser: parseOpenCodeModelsApi },
|
|
7912
7947
|
{ command: "opencode", args: ["models"], parser: parseOpenCodeModels }
|
|
7913
7948
|
],
|
|
7914
7949
|
// No fallbackModels: the list must always reflect what `opencode models`
|
|
7915
7950
|
// actually reports for THIS user (their configured providers only). A
|
|
7916
7951
|
// hardcoded fallback previously leaked models the user didn't have.
|
|
7917
|
-
// No static variants — per-model variants
|
|
7952
|
+
// No static variants — per-model variants come from the first two commands above
|
|
7918
7953
|
providerQualifiedIds: true
|
|
7919
7954
|
},
|
|
7920
7955
|
contextFile: "AGENTS.md",
|
|
@@ -15677,6 +15712,7 @@ function parseCodexModelsCache(content) {
|
|
|
15677
15712
|
}
|
|
15678
15713
|
}
|
|
15679
15714
|
var GEMINI_MODELS_CACHE_TTL_MS = 24 * 60 * 60 * 1e3;
|
|
15715
|
+
var NEGATIVE_TTL_MS = 6e4;
|
|
15680
15716
|
function geminiDiscoveryCacheKey(apiKey) {
|
|
15681
15717
|
const dir = globalDataDir();
|
|
15682
15718
|
const hash = apiKey.slice(-8);
|
|
@@ -15806,26 +15842,33 @@ async function discoverFromApi(manifest, config, fetchImpl) {
|
|
|
15806
15842
|
return null;
|
|
15807
15843
|
}
|
|
15808
15844
|
}
|
|
15845
|
+
function wasKilled(err) {
|
|
15846
|
+
return !!err && typeof err === "object" && err.killed === true;
|
|
15847
|
+
}
|
|
15809
15848
|
async function discoverFromCommand(manifest, execImpl) {
|
|
15810
15849
|
const discovery = manifest.modelDiscovery;
|
|
15811
15850
|
const commands = discovery.discoveryCommands ?? [
|
|
15812
15851
|
{ command: discovery.command, args: discovery.args || [], parser: discovery.parser }
|
|
15813
15852
|
];
|
|
15814
15853
|
const runCommands = async () => {
|
|
15854
|
+
let timedOut2 = false;
|
|
15815
15855
|
for (const cmd of commands) {
|
|
15816
15856
|
try {
|
|
15817
15857
|
const { stdout } = await execImpl(`${cmd.command} ${cmd.args.join(" ")}`, { timeout: 45e3 });
|
|
15818
15858
|
const models = parseModelOutput(stdout, cmd.parser, manifest);
|
|
15819
|
-
if (models.length > 0) return applyVariants(mergeCanonicalAliases(models, manifest), manifest);
|
|
15820
|
-
} catch {
|
|
15859
|
+
if (models.length > 0) return { models: applyVariants(mergeCanonicalAliases(models, manifest), manifest), timedOut: timedOut2 };
|
|
15860
|
+
} catch (err) {
|
|
15861
|
+
if (wasKilled(err)) timedOut2 = true;
|
|
15821
15862
|
}
|
|
15822
15863
|
}
|
|
15823
|
-
return null;
|
|
15864
|
+
return { models: null, timedOut: timedOut2 };
|
|
15824
15865
|
};
|
|
15825
15866
|
const first = await runCommands();
|
|
15826
|
-
if (first) return { models: first, fromFallback: false };
|
|
15827
|
-
|
|
15828
|
-
|
|
15867
|
+
if (first.models) return { models: first.models, fromFallback: false };
|
|
15868
|
+
if (first.timedOut) {
|
|
15869
|
+
const second = await runCommands();
|
|
15870
|
+
if (second.models) return { models: second.models, fromFallback: false };
|
|
15871
|
+
}
|
|
15829
15872
|
return { models: applyVariants(buildFallbackModels(manifest), manifest), fromFallback: true };
|
|
15830
15873
|
}
|
|
15831
15874
|
function mergeCanonicalAliases(discovered, manifest) {
|
|
@@ -15862,16 +15905,33 @@ function parseLineByLine(stdout) {
|
|
|
15862
15905
|
}
|
|
15863
15906
|
var ModelDiscovery = class {
|
|
15864
15907
|
cache = /* @__PURE__ */ new Map();
|
|
15908
|
+
/**
|
|
15909
|
+
* Degraded results (a fallback list, or empty) remembered for
|
|
15910
|
+
* {@link NEGATIVE_TTL_MS}. They are deliberately not cached — a transient
|
|
15911
|
+
* failure must heal — but re-running a failing CLI on every lookup is the
|
|
15912
|
+
* other extreme.
|
|
15913
|
+
*/
|
|
15914
|
+
misses = /* @__PURE__ */ new Map();
|
|
15915
|
+
/**
|
|
15916
|
+
* Discoveries still running, so a second lookup of the same runner joins the
|
|
15917
|
+
* first instead of spawning the CLI again. A slow CLI is the case this
|
|
15918
|
+
* exists for: a planner switch and a runner-list refresh land inside one
|
|
15919
|
+
* another's wait, and two `opencode models` calls race each other for the
|
|
15920
|
+
* same background service.
|
|
15921
|
+
*/
|
|
15922
|
+
inflight = /* @__PURE__ */ new Map();
|
|
15865
15923
|
registry;
|
|
15866
15924
|
execImpl;
|
|
15867
15925
|
fetchImpl;
|
|
15868
15926
|
appServerClient;
|
|
15869
15927
|
readFileImpl;
|
|
15870
|
-
|
|
15928
|
+
now;
|
|
15929
|
+
constructor(registry, execImpl = defaultExec2, fetchImpl, appServerClient = defaultAppServerClient, readFileImpl, now = Date.now) {
|
|
15871
15930
|
this.registry = registry;
|
|
15872
15931
|
this.execImpl = execImpl;
|
|
15873
15932
|
this.fetchImpl = fetchImpl;
|
|
15874
15933
|
this.appServerClient = appServerClient;
|
|
15934
|
+
this.now = now;
|
|
15875
15935
|
this.readFileImpl = readFileImpl ?? ((filePath) => {
|
|
15876
15936
|
try {
|
|
15877
15937
|
return fsSync3.readFileSync(filePath.replace(/^~/, osMod.homedir()), "utf8");
|
|
@@ -15915,10 +15975,20 @@ var ModelDiscovery = class {
|
|
|
15915
15975
|
const runnerLabel = manifest.displayName || runner;
|
|
15916
15976
|
return models.map((m) => ({ ...m, runnerId: runner, runnerLabel }));
|
|
15917
15977
|
}
|
|
15918
|
-
|
|
15919
|
-
|
|
15920
|
-
|
|
15921
|
-
|
|
15978
|
+
discoverRaw(runner) {
|
|
15979
|
+
const cached2 = this.cache.get(runner);
|
|
15980
|
+
if (cached2) return Promise.resolve(cached2);
|
|
15981
|
+
const remembered = this.misses.get(runner);
|
|
15982
|
+
if (remembered && this.now() - remembered.at < NEGATIVE_TTL_MS) return Promise.resolve(remembered.models);
|
|
15983
|
+
const running2 = this.inflight.get(runner);
|
|
15984
|
+
if (running2) return running2;
|
|
15985
|
+
const started = this.discoverUncached(runner).finally(() => {
|
|
15986
|
+
if (this.inflight.get(runner) === started) this.inflight.delete(runner);
|
|
15987
|
+
});
|
|
15988
|
+
this.inflight.set(runner, started);
|
|
15989
|
+
return started;
|
|
15990
|
+
}
|
|
15991
|
+
async discoverUncached(runner) {
|
|
15922
15992
|
const manifest = this.registry.getManifest(runner);
|
|
15923
15993
|
if (!manifest) {
|
|
15924
15994
|
return [];
|
|
@@ -15950,10 +16020,13 @@ var ModelDiscovery = class {
|
|
|
15950
16020
|
models = buildFallbackModels(manifest);
|
|
15951
16021
|
}
|
|
15952
16022
|
if (cacheable && models.length > 0) this.cache.set(runner, models);
|
|
16023
|
+
else this.misses.set(runner, { models, at: this.now() });
|
|
15953
16024
|
return models;
|
|
15954
16025
|
}
|
|
15955
16026
|
clear() {
|
|
15956
16027
|
this.cache.clear();
|
|
16028
|
+
this.misses.clear();
|
|
16029
|
+
this.inflight.clear();
|
|
15957
16030
|
}
|
|
15958
16031
|
/** Whatever `discover()` has already cached for `runner` — never triggers discovery. */
|
|
15959
16032
|
getCached(runner) {
|
|
@@ -28098,15 +28171,15 @@ var ModelResolver = class {
|
|
|
28098
28171
|
return toOrchestratorOptions({}, ORCHESTRATOR_SHORTCUTS);
|
|
28099
28172
|
}
|
|
28100
28173
|
async modelsForRunners(runners) {
|
|
28101
|
-
const
|
|
28102
|
-
|
|
28174
|
+
const unique = [...new Set(runners)];
|
|
28175
|
+
const discovered = await Promise.all(unique.map(async (runner) => {
|
|
28103
28176
|
try {
|
|
28104
|
-
|
|
28177
|
+
return [runner, await this.discovery.discover(runner)];
|
|
28105
28178
|
} catch {
|
|
28106
|
-
|
|
28179
|
+
return [runner, []];
|
|
28107
28180
|
}
|
|
28108
|
-
}
|
|
28109
|
-
return
|
|
28181
|
+
}));
|
|
28182
|
+
return Object.fromEntries(discovered);
|
|
28110
28183
|
}
|
|
28111
28184
|
async pickerOptions() {
|
|
28112
28185
|
if (this.cachedPickerOptions) return this.cachedPickerOptions;
|
|
@@ -28193,24 +28266,28 @@ var defaultExec3 = async (command, options) => {
|
|
|
28193
28266
|
return { stdout: String(stdout) };
|
|
28194
28267
|
};
|
|
28195
28268
|
var CHECK_TIMEOUT_MS = 8e3;
|
|
28269
|
+
var NEGATIVE_TTL_MS2 = 6e4;
|
|
28196
28270
|
var RunnerInstallation = class {
|
|
28197
28271
|
cache = /* @__PURE__ */ new Map();
|
|
28198
28272
|
inflight = /* @__PURE__ */ new Map();
|
|
28199
28273
|
registry;
|
|
28200
28274
|
execImpl;
|
|
28201
|
-
|
|
28275
|
+
now;
|
|
28276
|
+
constructor(registry, execImpl = defaultExec3, now = Date.now) {
|
|
28202
28277
|
this.registry = registry;
|
|
28203
28278
|
this.execImpl = execImpl;
|
|
28279
|
+
this.now = now;
|
|
28204
28280
|
}
|
|
28205
28281
|
/** True if the runner's CLI responds to `--version`. Cached per process. */
|
|
28206
28282
|
async isInstalled(runner) {
|
|
28207
|
-
|
|
28283
|
+
const cached2 = this.cache.get(runner);
|
|
28284
|
+
if (cached2 && (cached2.installed || this.now() - cached2.at < NEGATIVE_TTL_MS2)) return cached2.installed;
|
|
28208
28285
|
const existing = this.inflight.get(runner);
|
|
28209
28286
|
if (existing) return existing;
|
|
28210
28287
|
const manifest = this.registry.getManifest(runner);
|
|
28211
28288
|
const command = manifest?.runner.command;
|
|
28212
28289
|
if (!command) {
|
|
28213
|
-
this.cache.set(runner, false);
|
|
28290
|
+
this.cache.set(runner, { installed: false, at: this.now() });
|
|
28214
28291
|
return false;
|
|
28215
28292
|
}
|
|
28216
28293
|
const probe = (async () => {
|
|
@@ -28221,13 +28298,22 @@ var RunnerInstallation = class {
|
|
|
28221
28298
|
return false;
|
|
28222
28299
|
}
|
|
28223
28300
|
})().then((installed) => {
|
|
28224
|
-
this.cache.set(runner, installed);
|
|
28301
|
+
this.cache.set(runner, { installed, at: this.now() });
|
|
28225
28302
|
this.inflight.delete(runner);
|
|
28226
28303
|
return installed;
|
|
28227
28304
|
});
|
|
28228
28305
|
this.inflight.set(runner, probe);
|
|
28229
28306
|
return probe;
|
|
28230
28307
|
}
|
|
28308
|
+
/**
|
|
28309
|
+
* Forget cached "not installed" verdicts so the next probe re-runs them. A
|
|
28310
|
+
* runner-list refresh calls this, so a CLI installed while the host runs is
|
|
28311
|
+
* offered without a restart. An installed verdict stays: it cannot have
|
|
28312
|
+
* changed without the binary going away, and re-probing one costs a spawn.
|
|
28313
|
+
*/
|
|
28314
|
+
refresh() {
|
|
28315
|
+
for (const [runner, probe] of this.cache) if (!probe.installed) this.cache.delete(runner);
|
|
28316
|
+
}
|
|
28231
28317
|
/**
|
|
28232
28318
|
* Whether this runner can serve as a harness planner (ADR-0009, T9), and why
|
|
28233
28319
|
* not when it cannot. Surfaces call this to grey out an unusable agent in the
|