import type { ManagedSessionState } from "./managed-session.js"; import { type CanonicalMutationLockPorts, type CanonicalMutationResources, type CanonicalMutationScopes, type CanonicalStateMutationResources, type CanonicalStateMutationScopes } from "./mutation-transaction.js"; import { type Conversation } from "./protocol.js"; import { appendEvent } from "./store.js"; import type { TerminalControlRef } from "./terminal-agent-adapter.js"; import type { TerminalAgentBridge } from "./terminal-agent-bridge.js"; import { type TerminalControlProvider } from "./terminal-control-provider.js"; import { type TerminalDispatchLedgerDocument } from "./terminal-dispatch-ledger-codec.js"; import type { createTerminalIdentityAuthorityCliAdapter } from "./terminal-identity-authority-cli-adapter.js"; import type { createTerminalAcceptanceCliFacade } from "./terminal-acceptance-cli-adapter.js"; import type { createTerminalHandoffCliFacade } from "./terminal-handoff-cli-adapter.js"; import type { createTerminalListCliFacade } from "./terminal-list-cli-adapter.js"; import type { TerminalDispatchRecoveryCliFacade } from "./terminal-dispatch-recovery-cli-adapter.js"; import type { TerminalDispatchRepositoryCliAdapter, TerminalDispatchResolveRequest } from "./terminal-dispatch-repository-cli-adapter.js"; import type { NativeThreadLifecycleCliFacade } from "./native-thread-lifecycle-cli-adapter.js"; import type { NativeThreadTransitionApplication } from "./native-thread-transition-application.js"; export type TerminalMaintenanceCliOptions = Readonly>; interface LoadedConversation { conversation: Conversation; statePath: string; logPath: string; } type TerminalIdentityFacade = ReturnType; type TerminalAcceptanceFacade = ReturnType; type TerminalHandoffFacade = ReturnType; type TerminalListFacade = ReturnType; export interface TerminalMaintenanceRuntimePorts { readonly defaultAgentTimeoutMinutes: number; readonly defaultAgentHardTimeoutMinutes: number; readonly monitorLockVersion: number; loadConversation(options: TerminalMaintenanceCliOptions): LoadedConversation; storeDir(options: TerminalMaintenanceCliOptions): string; createControlProvider(options: TerminalMaintenanceCliOptions): TerminalControlProvider; createBridge(options: TerminalMaintenanceCliOptions): TerminalAgentBridge; startMonitor(input: { conversation: Conversation; statePath: string; logPath: string; options: TerminalMaintenanceCliOptions; }): { pid?: number; } | undefined; positiveMinutes(value: unknown, optionName: string): number; textSummary(value: unknown, maxLength?: number): unknown; } export type TerminalMaintenanceIdentityPorts = Pick & Pick; export type TerminalMaintenanceAuthorityPorts = Pick & { hasUnresolvedNativeTransition: TerminalListFacade["managedSessionHasUnresolvedNativeTransition"]; assertExclusive: NativeThreadLifecycleCliFacade["assertExclusive"]; assertTurnBindingCurrent(conversation: Conversation, operation: string): void; assertManagedTerminalDispatchOwner(input: { storeDir: string; conversation: Conversation; terminalControl: TerminalControlRef; action: "approve" | "cancel"; }): void; loadTerminalDispatchLedgerOwner(ledger: TerminalDispatchLedgerDocument): Conversation | undefined; }; type CanonicalStateMutationLockPorts = CanonicalMutationLockPorts & { resources: CanonicalStateMutationResources; acquireState: () => () => void; }; export interface TerminalMaintenanceRepositoryPorts { acquireFileLock(lockPath: string): () => void; acquireTerminalLock: TerminalDispatchRepositoryCliAdapter["acquire"]; withStoreWriterLease(storeDir: string, operation: () => Promise): Promise; resolveDispatch: TerminalDispatchRepositoryCliAdapter["resolve"]; conversationLoad(scopes: CanonicalStateMutationScopes, resources: CanonicalStateMutationResources): Conversation; conversationSave(scopes: CanonicalStateMutationScopes, resources: CanonicalStateMutationResources, conversation: Conversation): void; conversationAppendEvent(scopes: CanonicalStateMutationScopes, resources: CanonicalStateMutationResources, event: Parameters[1]): void; sessionLoad(scopes: CanonicalStateMutationScopes, resources: CanonicalStateMutationResources, sessionId: string): ManagedSessionState; ledgerLoad(scopes: CanonicalMutationScopes, resources: CanonicalMutationResources): TerminalDispatchLedgerDocument | undefined; ledgerSave(scopes: CanonicalMutationScopes, resources: CanonicalMutationResources, ledger: TerminalDispatchLedgerDocument): void; ledgerResolve(scopes: CanonicalMutationScopes, resources: CanonicalMutationResources, request: TerminalDispatchResolveRequest): boolean; ledgerReconcileIncarnation(scopes: CanonicalMutationScopes, resources: CanonicalMutationResources): TerminalDispatchLedgerDocument | undefined; ledgerReconcile: NativeThreadTransitionApplication["reconcileLedger"]; terminalWriterLocks(storeDir: string, terminalControl: TerminalControlRef): CanonicalMutationLockPorts; terminalWriterStateLocks(storeDir: string, terminalControl: TerminalControlRef, statePath: string, logPath: string): CanonicalStateMutationLockPorts; isVerifiedDead: TerminalDispatchRecoveryCliFacade["isVerifiedDead"]; exactVerifiedDeadAuthority: TerminalDispatchRecoveryCliFacade["exactVerifiedDeadAuthority"]; ensureVerifiedDeadEvent: TerminalDispatchRecoveryCliFacade["ensureVerifiedDeadEvent"]; ensureVerifiedDeadClosedEvent: TerminalDispatchRecoveryCliFacade["ensureVerifiedDeadClosedEvent"]; assertVerifiedDeadDispatch: TerminalDispatchRecoveryCliFacade["assertVerifiedDeadDispatch"]; resolveVerifiedDeadDispatch: TerminalDispatchRecoveryCliFacade["resolveVerifiedDeadDispatch"]; } export interface TerminalMaintenanceCliDependencies { runtime: TerminalMaintenanceRuntimePorts; identity: TerminalMaintenanceIdentityPorts; authority: TerminalMaintenanceAuthorityPorts; repository: TerminalMaintenanceRepositoryPorts; } declare function runRenew(options: TerminalMaintenanceCliOptions): Promise; declare function runCancel(options: TerminalMaintenanceCliOptions): Promise; declare function runClose(options: TerminalMaintenanceCliOptions): Promise; declare const terminalMaintenanceOperations: { runRenew: typeof runRenew; runCancel: typeof runCancel; runClose: typeof runClose; }; export type TerminalMaintenanceCliFacade = Readonly; export declare function createTerminalMaintenanceCliFacade(dependencies: TerminalMaintenanceCliDependencies): TerminalMaintenanceCliFacade; export {};