import type { IControllerMessage, TControllerModelChoice, TControllerModelOption, IControllerPermission, IControllerQuestion, IControllerRuntimeId, IControllerSession, IControllerSessionDetail, IControllerSessionMetrics, IControllerSessionReversionInfo, IControllerTodo, IControllerToolExecution, TControllerBuiltinCommand, TControllerPermissionReply, TControllerSessionStatus } from '../dist_ts_interfaces/index.js'; import type { IOpenCodeClientOptions, IOpenCodeDirectChildObservation, IOpenCodeEventStreamOptions, IOpenCodeMessagePage, IOpenCodeNormalizedMessageBundle, IOpenCodeSessionAuthorityObservation } from './interfaces.opencode.js'; import type { IFlexOpenCodeOAuthAuth } from './interfaces.flexipc.js'; import { openCodeSessionIdentitySnapshotCapability, type IOpenCodeSessionIdentitySnapshot, type IOpenCodeSessionIdentitySnapshotCapability } from './classes.sessionidentityintegration.js'; interface ISessionIntelligenceMarker { controllerId: string; projectId: string; sourceSessionId: IControllerRuntimeId; exchangeId: string; } export declare class OpenCodeSessionIntelligenceCleanupError extends AggregateError { readonly temporarySessionId: string; constructor(temporarySessionIdArg: string, isolationErrorArg: Error, cleanupErrorArg: unknown); } export declare const createBoundedOpenCodeFetch: (expectedBaseUrlArg: string, fetchImplementationArg?: typeof globalThis.fetch, acquireRuntimeLeaseArg?: () => () => void, runtimeAbortSignalArg?: AbortSignal) => typeof globalThis.fetch; export interface IOpenCodeSessionSearchResult { sessions: IControllerSession[]; truncated: boolean; } export declare const normalizeOpenCodeSession: (value: unknown, directory: string, status?: TControllerSessionStatus) => IControllerSession; export declare const normalizeOpenCodeMessageBundles: (value: unknown, expectedSessionIdArg?: string) => IOpenCodeNormalizedMessageBundle[]; export declare const normalizeOpenCodeMessages: (value: unknown, expectedSessionIdArg?: string) => IControllerMessage[]; export declare const mergeOpenCodeToolExecutionsIntoDetail: (detailArg: TDetail, executionsArg: readonly IControllerToolExecution[]) => Omit & { messages: IControllerMessage[]; }; export declare const createBoundedOpenCodeSelectedMessageSlice: (messagesArg: readonly IControllerMessage[]) => IControllerMessage[]; export declare const normalizeOpenCodePermissions: (value: unknown) => IControllerPermission[]; export declare const normalizeOpenCodeQuestions: (value: unknown) => IControllerQuestion[]; export interface IPtyConnectionCallbacks { onData: (chunk: Buffer) => void; onMeta?: (cursor: number) => void; onClose: () => void; } export interface IPtyConnectionHandle { sendInput: (data: string) => void; close: () => void; } interface IOpenCodePty { /** OpenCode-native PTY ID; this is not a controller terminal ID. */ id: string; title: string; command: string; cwd: string; } export declare const normalizeOpenCodePtys: (value: unknown) => IOpenCodePty[]; export declare const normalizeOpenCodeTodos: (value: unknown) => IControllerTodo[]; export declare class OpenCodeClientAdapter implements IOpenCodeSessionIdentitySnapshotCapability { readonly directory: string; readonly baseUrl: string; private readonly client; private readonly controlClient; private readonly authorization; private eventAbortController?; private eventTask?; private readonly runtimeRequestAbortController; private readonly temporarySessionIds; private readonly sessionMetricsCache; private readonly liveMessagePartCache; private liveMessagePartCacheBytes; private readonly liveMessageEventIds; constructor(options: IOpenCodeClientOptions); abortRuntimeRequests(reasonArg: unknown): void; private requireDirectory; getStatuses(directoryArg: string, signal?: AbortSignal): Promise>; listSessions(directoryArg: string, signal?: AbortSignal): Promise; [openCodeSessionIdentitySnapshotCapability](directoryArg: string, signalArg?: AbortSignal): Promise; /** V2 includes archived sessions and offers a lossless cursor for mature folders. */ private listNativeSessions; getSessionReversionInfo(directoryArg: string, sessionIdArg: string, signal?: AbortSignal): Promise; getSession(directoryArg: string, sessionId: string, signal?: AbortSignal): Promise; getSessionAuthorityObservation(directoryArg: string, sessionIdArg: string, signalArg?: AbortSignal): Promise; listDirectChildSessionObservations(directoryArg: string, parentSessionIdArg: string, signalArg?: AbortSignal): Promise; getEnrollableSession(directoryArg: string, sessionIdArg: string, signalArg?: AbortSignal): Promise; getSessionSnapshot(directoryArg: string, sessionId: string, signal?: AbortSignal): Promise; getSessionIfPresent(directoryArg: string, sessionId: string, signal?: AbortSignal): Promise; updateSession(directoryArg: string, sessionId: string, patch: { title?: string; archivedAt?: number; }, signal?: AbortSignal): Promise; createSession(directoryArg: string, title?: string, signal?: AbortSignal): Promise; createSessionWithId(directoryArg: string, sessionIdArg: string, titleArg?: string, signalArg?: AbortSignal): Promise; searchSessions(directoryArg: string, queryArg: string, signalArg?: AbortSignal): Promise; deleteSession(directoryArg: string, sessionId: string, signal?: AbortSignal): Promise; deleteSessionIfPresent(directoryArg: string, sessionIdArg: string, signal?: AbortSignal): Promise; sendMessage(directoryArg: string, sessionId: string, text: string, model?: TControllerModelChoice, agent?: string, signal?: AbortSignal, messageIdArg?: string): Promise; sendMessageAndWait(directoryArg: string, sessionId: string, text: string, signal?: AbortSignal): Promise; sendHarnessControlMessageAndWait(directoryArg: string, sessionId: string, text: string, signal?: AbortSignal, timeoutMsArg?: number): Promise; sendHarnessControlMessage(directoryArg: string, sessionId: string, text: string, signal?: AbortSignal): Promise; abortSession(directoryArg: string, sessionId: string, signal?: AbortSignal): Promise; setOpenCodeOAuthAuth(authArg: IFlexOpenCodeOAuthAuth, signal?: AbortSignal): Promise; listMessages(directoryArg: string, sessionId: string, signal?: AbortSignal): Promise; private readRawMessagePage; listMessagePage(directoryArg: string, sessionId: string, options: { limit: number; before?: string; }, signal?: AbortSignal): Promise; getSessionMetrics(directoryArg: string, sessionIdArg: string, signal?: AbortSignal): Promise; private sessionMetricsCacheKey; private calculateSessionMetrics; buildSessionIntelligenceTranscript(directoryArg: string, sessionIdArg: string, signal?: AbortSignal): Promise; getMessageBundle(directoryArg: string, sessionId: string, messageId: string, signal?: AbortSignal): Promise; runBuiltinSessionCommand(directoryArg: string, sessionId: string, command: TControllerBuiltinCommand, model?: TControllerModelChoice, signal?: AbortSignal): Promise; listPermissions(directoryArg: string, sessionId?: string, signal?: AbortSignal): Promise; listQuestions(directoryArg: string, sessionId?: string, signal?: AbortSignal): Promise; replyQuestion(directoryArg: string, requestId: string, answers: string[][], signal?: AbortSignal): Promise; rejectQuestion(directoryArg: string, requestId: string, signal?: AbortSignal): Promise; replyPermission(directoryArg: string, requestId: string, reply: TControllerPermissionReply, message?: string, signal?: AbortSignal): Promise; listPtys(directoryArg: string, signal?: AbortSignal): Promise; createPty(directoryArg: string, title?: string, signal?: AbortSignal): Promise; updatePty(directoryArg: string, ptyId: string, patch: { title?: string; size?: { rows: number; cols: number; }; }, signal?: AbortSignal): Promise; removePty(directoryArg: string, ptyId: string, signal?: AbortSignal): Promise; /** * Opens the PTY relay socket. The ticket flow mirrors the official web * client: mint a short-lived single-use ticket, then upgrade without Basic * auth. cursor 0 requests a full scrollback replay. */ connectPty(directoryArg: string, ptyId: string, cursor: number, callbacks: IPtyConnectionCallbacks): Promise; listTodos(directoryArg: string, sessionId: string, signal?: AbortSignal): Promise; listCommands(directoryArg: string, signal?: AbortSignal): Promise>; getSessionIntelligenceCapability(directoryArg: string, signal?: AbortSignal): Promise<{ enabled: boolean; model?: string; contextTokens?: number; }>; createSessionIntelligenceSession(directoryArg: string, markerArg: ISessionIntelligenceMarker, signal?: AbortSignal): Promise; runSessionIntelligence(directoryArg: string, temporarySessionIdArg: string, promptArg: string, signal?: AbortSignal): Promise<{ answer: string; scratchpad: string; model: string; }>; deleteSessionIntelligenceSession(directoryArg: string, temporarySessionIdArg: string, signal?: AbortSignal): Promise; rememberSessionIntelligenceTemporarySessionIds(sessionIdsArg: string[]): void; getRememberedSessionIntelligenceTemporarySessionIds(): string[]; cleanupOrphanedSessionIntelligenceSessions(directoryArg: string, controllerIdArg: string, olderThanArg: number, signal?: AbortSignal): Promise; private rememberTemporarySessionId; listModelOptions(signal?: AbortSignal): Promise; getSessionDetail(directoryArg: string, sessionId: string, signal?: AbortSignal): Promise & { messagePage: IOpenCodeMessagePage; }>; startEventStream(options: IOpenCodeEventStreamOptions): Promise; stopEventStream(): Promise; private liveMessagePartKey; private clearLiveMessagePartCache; private acceptLiveMessageEventId; private clearLiveMessagePartsForSession; private clearLiveMessagePartsForMessage; private projectLiveMessageUpdate; private normalizeLiveMessageStreamEvent; private consumeEventStream; } export {};