/** * Plan-family machine document (`plan-result-v3`) and the emit boundary. * * `emitOperationResolution` is the one place a plan-family command terminates: * it derives the outcome and exit code from the resolution with the shared * pure derivations, records completion semantics for telemetry, emits the * machine document, and projects the human render. No channel re-derives its * own account of what happened. */ import * as Effect from "effect/Effect"; import * as Schema from "effect/Schema"; import { Verbosity } from "./cli-flags/index.js"; import { type SuggestedAction } from "@agentxm/registry-protocol/unstable/suggested-action"; import { type CommandOutcomeSummary, type SourceKind, type SubjectType } from "./cli-runtime/index.js"; import { type OperationOutcome, type OperationResolution } from "@agentxm/workspace/transitions/planning"; import { Screen } from "./screen/index.js"; import type { TargetedUpdatePublicContext } from "@agentxm/workspace/resolution"; export declare const PLAN_RESULT_CONTRACT = "plan-result-v3"; export declare const AgentCoverageSchema: Schema.Struct<{ readonly scope: Schema.Literals; readonly agents: Schema.$Array; }>; export type AgentCoverage = typeof AgentCoverageSchema.Type; export declare const PlanResolutionResultSchema: Schema.Struct<{ readonly contract: Schema.Literal<"plan-result-v3">; readonly outcome: Schema.Literals; readonly mode: Schema.Literals; readonly planName: Schema.String; readonly planDescription: Schema.optional; readonly candidateId: Schema.optional; readonly message: Schema.optional; readonly atomicity: Schema.Struct<{ readonly declared: Schema.Literals; readonly applied: Schema.Literals; }>; readonly blocking: Schema.optional; readonly subject: Schema.String; readonly phase: Schema.Literals; readonly detail: Schema.String; readonly causeCode: Schema.optional>; readonly reference: Schema.optional; readonly escape: Schema.optional; readonly url: Schema.optional; }>>; }>>; readonly failure: Schema.optional; readonly message: Schema.String; readonly causes: Schema.optional; readonly message: Schema.String; readonly stack: Schema.optional; }>>>; }>>; readonly interruption: Schema.optional; readonly disposition: Schema.Literals; }>>; readonly divergence: Schema.optional; readonly counts: Schema.Struct<{ readonly total: Schema.Number; readonly planned: Schema.Number; readonly ready: Schema.Number; readonly committed: Schema.Number; readonly unchanged: Schema.Number; readonly failed: Schema.Number; readonly rolledBack: Schema.Number; readonly blocked: Schema.Number; readonly skipped: Schema.Number; readonly cancelled: Schema.Number; readonly interrupted: Schema.Number; readonly warnings: Schema.Number; }>; readonly units: Schema.$Array; readonly disposition: Schema.optional>; readonly blocking: Schema.optional; readonly subject: Schema.String; readonly phase: Schema.Literals; readonly detail: Schema.String; readonly causeCode: Schema.optional>; readonly reference: Schema.optional; readonly escape: Schema.optional; readonly url: Schema.optional; }>>; }>>; readonly message: Schema.optional; readonly warnings: Schema.optional>; readonly code: Schema.optional; readonly error: Schema.optional; readonly message: Schema.String; readonly causes: Schema.optional; readonly message: Schema.String; readonly stack: Schema.optional; }>>>; }>>; readonly artifact: Schema.optional; readonly scope: Schema.Literals; readonly agents: Schema.optional>; readonly version: Schema.optional; readonly change: Schema.Literals; readonly mechanism: Schema.optional>; readonly previousVersion: Schema.optional; readonly fileCount: Schema.optional; readonly targets: Schema.optional; readonly agentIds: Schema.optional>; readonly unitId: Schema.optional; readonly owner: Schema.optional; readonly entryName: Schema.optional; }>>>; readonly references: Schema.optional; readonly reason: Schema.String; readonly unitId: Schema.optional; readonly owner: Schema.optional; }>>>; readonly agentOutcomes: Schema.optional; readonly name: Schema.String; readonly agentId: Schema.String; readonly outcome: Schema.Literals; readonly reasonCode: Schema.String; readonly reason: Schema.String; readonly mechanism: Schema.optional; readonly path: Schema.optional; }>>>; readonly source: Schema.optional; readonly directory: Schema.optional; readonly gitTreeHash: Schema.optional; }>>; readonly managedRegions: Schema.optional>>; readonly packMembership: Schema.optional, Schema.Struct<{ readonly member: Schema.String; readonly before: Schema.String; readonly after: Schema.Null; }>, Schema.Struct<{ readonly member: Schema.String; readonly before: Schema.String; readonly after: Schema.String; }>]>>; }>>; readonly registryLifecycle: Schema.optional; readonly reason: Schema.optional; }>>; readonly deprecation: Schema.optional; readonly message: Schema.String; readonly replacement: Schema.optional; readonly fqn: Schema.String; }>, Schema.Struct<{ readonly status: Schema.Literal<"unavailable">; readonly fqn: Schema.optional; }>]>>; }>, Schema.Struct<{ readonly deprecatedAt: Schema.decodeTo; readonly message: Schema.optional; readonly replacement: Schema.Union; readonly fqn: Schema.String; }>, Schema.Struct<{ readonly status: Schema.Literal<"unavailable">; readonly fqn: Schema.optional; }>]>; }>]>>; }>>; readonly sourceSwitch: Schema.optional; readonly locator: Schema.String; readonly resolution: Schema.String; readonly treeIntegrity: Schema.String; }>; readonly after: Schema.Struct<{ readonly family: Schema.Literals; readonly locator: Schema.String; readonly resolution: Schema.String; readonly treeIntegrity: Schema.String; }>; readonly content: Schema.Literals; readonly dependencies: Schema.Struct<{ readonly effect: Schema.Literals; readonly added: Schema.$Array; readonly removed: Schema.$Array; readonly changed: Schema.$Array; }>; readonly projections: Schema.Struct<{ readonly effect: Schema.Literal<"reconcile">; readonly detail: Schema.String; }>; readonly guarantees: Schema.Struct<{ readonly gained: Schema.$Array; readonly lost: Schema.$Array; }>; readonly packMembers: Schema.optional; readonly before: Schema.optional; readonly locator: Schema.String; readonly resolution: Schema.String; }>>; readonly after: Schema.optional; readonly locator: Schema.String; readonly resolution: Schema.String; }>>; }>>>; }>>; }>>; readonly agentOutcomes: Schema.optional; readonly name: Schema.String; readonly agentId: Schema.String; readonly outcome: Schema.Literals; readonly reasonCode: Schema.String; readonly reason: Schema.String; readonly mechanism: Schema.optional; readonly path: Schema.optional; }>>>; readonly registryLifecycle: Schema.optional; readonly reason: Schema.optional; }>>; readonly deprecation: Schema.optional; readonly message: Schema.String; readonly replacement: Schema.optional; readonly fqn: Schema.String; }>, Schema.Struct<{ readonly status: Schema.Literal<"unavailable">; readonly fqn: Schema.optional; }>]>>; }>, Schema.Struct<{ readonly deprecatedAt: Schema.decodeTo; readonly message: Schema.optional; readonly replacement: Schema.Union; readonly fqn: Schema.String; }>, Schema.Struct<{ readonly status: Schema.Literal<"unavailable">; readonly fqn: Schema.optional; }>]>; }>]>>; }>>; readonly links: Schema.optional>; }>>; readonly footprint: Schema.optional; }>>>; readonly recovery: Schema.optional; readonly snapshotDir: Schema.optional; readonly actions: Schema.$Array; readonly url: Schema.optional; }>>; }>>; readonly evaluatedAt: Schema.optional; readonly holdbackCount: Schema.optional; readonly holdbacks: Schema.optional; readonly target: Schema.String; readonly dependencyPath: Schema.$Array; readonly requestedRange: Schema.optional; readonly currentVersion: Schema.optional; readonly selectedVersion: Schema.optional; readonly candidateVersion: Schema.String; readonly publishedAt: Schema.String; readonly eligibleAt: Schema.String; readonly minimumReleaseAgeSeconds: Schema.Number; readonly bypassCause: Schema.optional>; readonly exemptionScope: Schema.optional>; }>>>; readonly releaseAgeBypassCount: Schema.optional; readonly releaseAgeBypasses: Schema.optional; readonly target: Schema.String; readonly dependencyPath: Schema.$Array; readonly requestedRange: Schema.optional; readonly currentVersion: Schema.optional; readonly selectedVersion: Schema.optional; readonly candidateVersion: Schema.String; readonly publishedAt: Schema.String; readonly eligibleAt: Schema.String; readonly minimumReleaseAgeSeconds: Schema.Number; readonly bypassCause: Schema.optional>; readonly exemptionScope: Schema.optional>; }>>>; readonly imports: Schema.optional>; readonly preconditions: Schema.optional; readonly detail: Schema.optional; readonly blockedOn: Schema.optional>; readonly command: Schema.optional; }>>>; readonly riskConditions: Schema.optional; readonly id: Schema.String; readonly detail: Schema.String; readonly consent: Schema.optional>; }>, Schema.Struct<{ readonly level: Schema.Literal<"override-required">; readonly id: Schema.String; readonly policy: Schema.Literals; readonly requiredFlag: Schema.String; readonly detail: Schema.String; }>, Schema.Struct<{ readonly level: Schema.Literal<"blocked">; readonly id: Schema.String; readonly detail: Schema.String; readonly errorCode: Schema.Literals; }>]>>>; readonly agentCoverage: Schema.optional; readonly agents: Schema.$Array; }>>; readonly targetedUpdate: Schema.optional; readonly name: Schema.String; readonly fqn: Schema.String; }>; readonly ownership: Schema.Literals; readonly activation: Schema.Literals; readonly authority: Schema.Literals; readonly direct: Schema.optional; readonly enabled: Schema.Boolean; readonly constraint: Schema.optional; }>>; readonly packs: Schema.$Array; readonly source: Schema.optional>; readonly memberSource: Schema.Literals; readonly constraint: Schema.String; readonly enabled: Schema.Boolean; }>>; readonly effectiveConstraint: Schema.optional; readonly memberClosure: Schema.$Array; readonly name: Schema.String; readonly fqn: Schema.String; }>>; readonly effects: Schema.Struct<{ readonly settings: Schema.Literals; readonly acceptedResolution: Schema.Literals; readonly canonical: Schema.Literals; readonly projection: Schema.Literals; readonly packRoot: Schema.Literals; readonly packManifest: Schema.Literals; }>; readonly relevantProblems: Schema.$Array; readonly blocker: Schema.optional>; }>>; }>; export type PlanResolutionResult = typeof PlanResolutionResultSchema.Type; export declare const PlanResolutionDocumentSchema: Schema.Struct<{ result: Schema.Struct<{ readonly contract: Schema.Literal<"plan-result-v3">; readonly outcome: Schema.Literals; readonly mode: Schema.Literals; readonly planName: Schema.String; readonly planDescription: Schema.optional; readonly candidateId: Schema.optional; readonly message: Schema.optional; readonly atomicity: Schema.Struct<{ readonly declared: Schema.Literals; readonly applied: Schema.Literals; }>; readonly blocking: Schema.optional; readonly subject: Schema.String; readonly phase: Schema.Literals; readonly detail: Schema.String; readonly causeCode: Schema.optional>; readonly reference: Schema.optional; readonly escape: Schema.optional; readonly url: Schema.optional; }>>; }>>; readonly failure: Schema.optional; readonly message: Schema.String; readonly causes: Schema.optional; readonly message: Schema.String; readonly stack: Schema.optional; }>>>; }>>; readonly interruption: Schema.optional; readonly disposition: Schema.Literals; }>>; readonly divergence: Schema.optional; readonly counts: Schema.Struct<{ readonly total: Schema.Number; readonly planned: Schema.Number; readonly ready: Schema.Number; readonly committed: Schema.Number; readonly unchanged: Schema.Number; readonly failed: Schema.Number; readonly rolledBack: Schema.Number; readonly blocked: Schema.Number; readonly skipped: Schema.Number; readonly cancelled: Schema.Number; readonly interrupted: Schema.Number; readonly warnings: Schema.Number; }>; readonly units: Schema.$Array; readonly disposition: Schema.optional>; readonly blocking: Schema.optional; readonly subject: Schema.String; readonly phase: Schema.Literals; readonly detail: Schema.String; readonly causeCode: Schema.optional>; readonly reference: Schema.optional; readonly escape: Schema.optional; readonly url: Schema.optional; }>>; }>>; readonly message: Schema.optional; readonly warnings: Schema.optional>; readonly code: Schema.optional; readonly error: Schema.optional; readonly message: Schema.String; readonly causes: Schema.optional; readonly message: Schema.String; readonly stack: Schema.optional; }>>>; }>>; readonly artifact: Schema.optional; readonly scope: Schema.Literals; readonly agents: Schema.optional>; readonly version: Schema.optional; readonly change: Schema.Literals; readonly mechanism: Schema.optional>; readonly previousVersion: Schema.optional; readonly fileCount: Schema.optional; readonly targets: Schema.optional; readonly agentIds: Schema.optional>; readonly unitId: Schema.optional; readonly owner: Schema.optional; readonly entryName: Schema.optional; }>>>; readonly references: Schema.optional; readonly reason: Schema.String; readonly unitId: Schema.optional; readonly owner: Schema.optional; }>>>; readonly agentOutcomes: Schema.optional; readonly name: Schema.String; readonly agentId: Schema.String; readonly outcome: Schema.Literals; readonly reasonCode: Schema.String; readonly reason: Schema.String; readonly mechanism: Schema.optional; readonly path: Schema.optional; }>>>; readonly source: Schema.optional; readonly directory: Schema.optional; readonly gitTreeHash: Schema.optional; }>>; readonly managedRegions: Schema.optional>>; readonly packMembership: Schema.optional, Schema.Struct<{ readonly member: Schema.String; readonly before: Schema.String; readonly after: Schema.Null; }>, Schema.Struct<{ readonly member: Schema.String; readonly before: Schema.String; readonly after: Schema.String; }>]>>; }>>; readonly registryLifecycle: Schema.optional; readonly reason: Schema.optional; }>>; readonly deprecation: Schema.optional; readonly message: Schema.String; readonly replacement: Schema.optional; readonly fqn: Schema.String; }>, Schema.Struct<{ readonly status: Schema.Literal<"unavailable">; readonly fqn: Schema.optional; }>]>>; }>, Schema.Struct<{ readonly deprecatedAt: Schema.decodeTo; readonly message: Schema.optional; readonly replacement: Schema.Union; readonly fqn: Schema.String; }>, Schema.Struct<{ readonly status: Schema.Literal<"unavailable">; readonly fqn: Schema.optional; }>]>; }>]>>; }>>; readonly sourceSwitch: Schema.optional; readonly locator: Schema.String; readonly resolution: Schema.String; readonly treeIntegrity: Schema.String; }>; readonly after: Schema.Struct<{ readonly family: Schema.Literals; readonly locator: Schema.String; readonly resolution: Schema.String; readonly treeIntegrity: Schema.String; }>; readonly content: Schema.Literals; readonly dependencies: Schema.Struct<{ readonly effect: Schema.Literals; readonly added: Schema.$Array; readonly removed: Schema.$Array; readonly changed: Schema.$Array; }>; readonly projections: Schema.Struct<{ readonly effect: Schema.Literal<"reconcile">; readonly detail: Schema.String; }>; readonly guarantees: Schema.Struct<{ readonly gained: Schema.$Array; readonly lost: Schema.$Array; }>; readonly packMembers: Schema.optional; readonly before: Schema.optional; readonly locator: Schema.String; readonly resolution: Schema.String; }>>; readonly after: Schema.optional; readonly locator: Schema.String; readonly resolution: Schema.String; }>>; }>>>; }>>; }>>; readonly agentOutcomes: Schema.optional; readonly name: Schema.String; readonly agentId: Schema.String; readonly outcome: Schema.Literals; readonly reasonCode: Schema.String; readonly reason: Schema.String; readonly mechanism: Schema.optional; readonly path: Schema.optional; }>>>; readonly registryLifecycle: Schema.optional; readonly reason: Schema.optional; }>>; readonly deprecation: Schema.optional; readonly message: Schema.String; readonly replacement: Schema.optional; readonly fqn: Schema.String; }>, Schema.Struct<{ readonly status: Schema.Literal<"unavailable">; readonly fqn: Schema.optional; }>]>>; }>, Schema.Struct<{ readonly deprecatedAt: Schema.decodeTo; readonly message: Schema.optional; readonly replacement: Schema.Union; readonly fqn: Schema.String; }>, Schema.Struct<{ readonly status: Schema.Literal<"unavailable">; readonly fqn: Schema.optional; }>]>; }>]>>; }>>; readonly links: Schema.optional>; }>>; readonly footprint: Schema.optional; }>>>; readonly recovery: Schema.optional; readonly snapshotDir: Schema.optional; readonly actions: Schema.$Array; readonly url: Schema.optional; }>>; }>>; readonly evaluatedAt: Schema.optional; readonly holdbackCount: Schema.optional; readonly holdbacks: Schema.optional; readonly target: Schema.String; readonly dependencyPath: Schema.$Array; readonly requestedRange: Schema.optional; readonly currentVersion: Schema.optional; readonly selectedVersion: Schema.optional; readonly candidateVersion: Schema.String; readonly publishedAt: Schema.String; readonly eligibleAt: Schema.String; readonly minimumReleaseAgeSeconds: Schema.Number; readonly bypassCause: Schema.optional>; readonly exemptionScope: Schema.optional>; }>>>; readonly releaseAgeBypassCount: Schema.optional; readonly releaseAgeBypasses: Schema.optional; readonly target: Schema.String; readonly dependencyPath: Schema.$Array; readonly requestedRange: Schema.optional; readonly currentVersion: Schema.optional; readonly selectedVersion: Schema.optional; readonly candidateVersion: Schema.String; readonly publishedAt: Schema.String; readonly eligibleAt: Schema.String; readonly minimumReleaseAgeSeconds: Schema.Number; readonly bypassCause: Schema.optional>; readonly exemptionScope: Schema.optional>; }>>>; readonly imports: Schema.optional>; readonly preconditions: Schema.optional; readonly detail: Schema.optional; readonly blockedOn: Schema.optional>; readonly command: Schema.optional; }>>>; readonly riskConditions: Schema.optional; readonly id: Schema.String; readonly detail: Schema.String; readonly consent: Schema.optional>; }>, Schema.Struct<{ readonly level: Schema.Literal<"override-required">; readonly id: Schema.String; readonly policy: Schema.Literals; readonly requiredFlag: Schema.String; readonly detail: Schema.String; }>, Schema.Struct<{ readonly level: Schema.Literal<"blocked">; readonly id: Schema.String; readonly detail: Schema.String; readonly errorCode: Schema.Literals; }>]>>>; readonly agentCoverage: Schema.optional; readonly agents: Schema.$Array; }>>; readonly targetedUpdate: Schema.optional; readonly name: Schema.String; readonly fqn: Schema.String; }>; readonly ownership: Schema.Literals; readonly activation: Schema.Literals; readonly authority: Schema.Literals; readonly direct: Schema.optional; readonly enabled: Schema.Boolean; readonly constraint: Schema.optional; }>>; readonly packs: Schema.$Array; readonly source: Schema.optional>; readonly memberSource: Schema.Literals; readonly constraint: Schema.String; readonly enabled: Schema.Boolean; }>>; readonly effectiveConstraint: Schema.optional; readonly memberClosure: Schema.$Array; readonly name: Schema.String; readonly fqn: Schema.String; }>>; readonly effects: Schema.Struct<{ readonly settings: Schema.Literals; readonly acceptedResolution: Schema.Literals; readonly canonical: Schema.Literals; readonly projection: Schema.Literals; readonly packRoot: Schema.Literals; readonly packManifest: Schema.Literals; }>; readonly relevantProblems: Schema.$Array; readonly blocker: Schema.optional>; }>>; }>; }>; export type PlanResolutionDocument = typeof PlanResolutionDocumentSchema.Type; export interface PlanResolutionResultOptions { readonly verbose?: boolean; readonly debug?: boolean; readonly message?: string; readonly imports?: { readonly imported: number; readonly skipped: number; readonly conflicting: number; }; readonly targetedUpdate?: TargetedUpdatePublicContext; } export declare const toPlanResolutionResult: (resolution: OperationResolution, options?: PlanResolutionResultOptions) => PlanResolutionResult; /** Telemetry completion summary projected from the same resolution. */ export declare const operationResolutionSummary: (resolution: OperationResolution, context?: { readonly subjectType?: SubjectType; readonly sourceKind?: SourceKind; }) => CommandOutcomeSummary; export interface EmitOperationResolutionOptions { readonly suggestions?: ReadonlyArray; readonly withoutSuggestions?: boolean; /** Overrides the derived human headline and is carried in the document. */ readonly message?: string; readonly imports?: { readonly imported: number; readonly skipped: number; readonly conflicting: number; }; readonly targetedUpdate?: TargetedUpdatePublicContext; } export interface EmittedOperationResolution { readonly outcome: OperationOutcome; readonly exitCode: number; readonly emitted: boolean; } /** * Terminate a plan-family invocation: derive outcome and exit, record * completion semantics, emit the machine document, and project the human * render. Returns the derivations so callers can act on them without * re-deriving. */ export declare const emitOperationResolution: (command: string, resolution: OperationResolution, options?: EmitOperationResolutionOptions) => Effect.Effect<{ outcome: "blocked" | "failed" | "cancelled" | "interrupted" | "previewed" | "applied" | "no-op" | "partial"; exitCode: number; emitted: boolean; }, never, Verbosity | Screen>; /** * Terminate a plan-family invocation that planned nothing: an empty resolution * in the invocation's actual mode whose outcome derives `no-op`, with the * stated message. */ export declare const emitNoOpOperation: (command: string, args: { readonly mode: "preview" | "apply"; readonly planName: string; readonly planDescription?: string; readonly message: string; readonly suggestions?: ReadonlyArray; readonly withoutSuggestions?: boolean; }) => Effect.Effect<{ outcome: "blocked" | "failed" | "cancelled" | "interrupted" | "previewed" | "applied" | "no-op" | "partial"; exitCode: number; emitted: boolean; }, never, Verbosity | Screen>; //# sourceMappingURL=operation-output.d.ts.map