import type { AgentMessage } from "@earendil-works/pi-agent-core"; import type { Api, ImageContent, Model, Usage } from "@earendil-works/pi-ai"; import { type UsageState } from "@earendil-works/pi-durable"; import type { SessionStore } from "../sessions/session-store.js"; import type { CompactOutcome } from "../types.js"; import type { SessionRunStatus } from "../sessions/types.js"; import type { BudgetSettings, HarnessEventListener, MikanAgentSessionOptions, MikanToolInput, SubagentUsage, SubagentUsageSink } from "./types.js"; interface RunOptions { images?: ImageContent[]; budget?: BudgetSettings; tools?: MikanToolInput[]; allowTaskHandoff?: boolean; allowTaskStatus?: boolean; } export declare class MikanAgentSession { private readonly options; readonly sessionStore: SessionStore; readonly model: Model; private readonly settings; private readonly listeners; private systemPrompt; private attached; private runActive; private runAborted; private cancellation; private cancellationError; private deadlineTimer; private deadlineNotification; private runBudget; private budgetExceededReason; private retryAttempt; private runMessages; private streamingContent; private readonly toolArgs; private loopGuard; private readonly loopNotices; private runStarted; private runEndSeen; private observedUsage; private requestRunId; private activeRequest; private runEnded; private lastSessionRunStatus; private tally; constructor(options: MikanAgentSessionOptions); get lastRunMessages(): readonly AgentMessage[]; get isActiveRun(): boolean; setSystemPrompt(prompt: string): void; getLastRunStats(): Readonly<{ usage: SubagentUsage; tokens: number; costUsd: number; llmCalls: number; toolCalls: number; toolCallCounts: Record; durationMs: number; budgetExceededReason?: string; status?: SessionRunStatus; }>; captureExternalUsageSink(): SubagentUsageSink; subscribe(listener: HarnessEventListener): () => void; prompt(text: string, options?: RunOptions): Promise; compact(instructions?: string): Promise; steer(text: string): Promise; private run; private drive; private cleanupRun; abort(reason?: string): void; private requestCancellation; private attach; private trackedModels; private toHarnessTools; private installRunTools; private beforeCompact; private beforeRequest; private beforeTool; private afterTool; private executeNestedTool; private checkToolLoop; private emit; private handleDurableEvents; private handleDurableEvent; private streamContent; private compactionOutcome; private recordUsage; private endRetry; private endMessage; private emitToolStart; private emitToolEnd; private exceedBudget; private checkCallBudget; private callOverBudgetReason; private resourceOverBudgetReason; private armDeadline; } export declare const DEFAULT_EVENT_BUDGET: BudgetSettings; export declare function createEmptyUsage(): Usage; export declare function addUsage(total: Usage, usage: Usage): void; export declare function sumUsageState(state: UsageState): Usage; export declare function copyUsage(usage: Usage): Usage; export {}; //# sourceMappingURL=session.d.ts.map