import type { AgentTool } from '@earendil-works/pi-agent-core'; import type { ThinkingLevel } from '@earendil-works/pi-agent-core'; import { type AgentSession } from '@earendil-works/pi-coding-agent'; import type { Model, Api } from '@earendil-works/pi-ai'; import { type GuardedPiTranscriptManager } from './session-tool-result-guard.js'; import type { EmbeddedTranscriptRuntime } from './transcript-runtime.js'; export type EmbeddedRunnerFingerprintInput = { sessionId: string; workspaceDir: string; modelRef: string; toolNames: readonly string[]; systemPrompt: string; thinkingLevel: string; credentialRevision: string; }; export declare function buildEmbeddedRunnerFingerprint(input: EmbeddedRunnerFingerprintInput): string; export type AcquireEmbeddedSessionRunnerParams = { runtimeId: string; sessionId: string; workspaceDir: string; model: Model; modelRef: string; tools: AgentTool[]; systemPrompt: string; thinkingLevel: ThinkingLevel; transcriptRuntime: EmbeddedTranscriptRuntime; }; export type AcquiredEmbeddedSessionRunner = { session: AgentSession; piSm: GuardedPiTranscriptManager; reused: boolean; release: () => void; }; export interface EmbeddedSessionRunnerPoolStats { acquires: number; reuses: number; creates: number; evictions: number; pooled: number; } export declare function isEmbeddedSessionRunnerEnabled(): boolean; export declare function getEmbeddedSessionRunnerIdleTtlMs(): number; export interface EmbeddedSessionRunnerPoolOptions { /** Override for the env-driven enable flag (testing). */ isEnabled?: () => boolean; /** Override for the env-driven idle TTL (testing). */ getIdleTtlMs?: () => number; } /** * Owns the per-runtime pool of pi `AgentSession` runners. */ export declare class EmbeddedSessionRunnerPool { private readonly pool; private readonly isEnabledFn; private readonly getIdleTtlMsFn; private stats; constructor(opts?: EmbeddedSessionRunnerPoolOptions); getStats(): Readonly; resetForTest(): void; evict(runtimeId: string, reason?: string): void; evictAll(reason?: string): void; acquire(params: AcquireEmbeddedSessionRunnerParams): Promise; private clearIdleTimer; private scheduleIdleEviction; private disposePooledRunner; private createPooledRunner; } export declare const defaultEmbeddedSessionRunnerPool: EmbeddedSessionRunnerPool; export declare function getEmbeddedSessionRunnerStats(): Readonly; export declare function resetEmbeddedSessionRunnerForTest(): void; export declare function evictEmbeddedSessionRunner(runtimeId: string, reason?: string): void; export declare function evictAllEmbeddedSessionRunners(reason?: string): void; export declare function acquireEmbeddedSessionRunner(params: AcquireEmbeddedSessionRunnerParams): Promise;