import type { Credential } from "@bastani/pi-ai"; import type { Api, ImageContent, Model } from "@bastani/pi-ai/compat"; import type { AgentMessage, ThinkingLevel } from "@earendil-works/pi-agent-core"; import type { PromptDisposition, QueuedInputDisposition, SessionRecoveryReport, SessionStats } from "../../core/agent-session.js"; import type { BashResult } from "../../core/bash-executor.ts"; import type { VerbatimCompactionResult } from "../../core/compaction/index.ts"; import type { SessionRecoveryReason } from "../../core/extensions/index.js"; import type { WorkflowRunDetail, WorkflowRunFilterStatus, WorkflowRunSummary } from "../../core/extensions/workflow-run-control.js"; import type { AtomicProviderCompat } from "../../core/model-capabilities.ts"; import type { SaveCredentialOptions } from "../../core/model-runtime.js"; import type { SessionEntry, SessionSummaryEntry, SessionTreeNode } from "../../core/session-manager.ts"; import type { ToolStatusReport } from "../../core/tool-status.js"; import type { RpcAutocompleteItem, RpcCommand, RpcLoginProviderResult, RpcLogoutProviderResult, RpcModelCatalog, RpcModelRefreshResult, RpcResponse, RpcSessionInfo, RpcSessionState, RpcSlashCommand } from "./rpc-types.ts"; type DistributiveOmit = T extends unknown ? Omit : never; export type RpcCommandBody = DistributiveOmit; export interface ModelInfo { provider: string; id: string; contextWindow: number; reasoning: boolean; /** Provider/model capability metadata used to gate constrained sampling. */ compat?: AtomicProviderCompat; } export declare abstract class RpcClientApi { protected abstract request(command: RpcCommandBody): Promise; protected abstract data(response: RpcResponse): T; /** * Send a prompt and return its disposition once accepted. * If the disposition is "handled", no run started for this prompt, so don't wait for agent_settled. */ prompt(message: string, images?: ImageContent[], streamingBehavior?: "steer" | "followUp"): Promise; steer(message: string, images?: ImageContent[]): Promise; followUp(message: string, images?: ImageContent[]): Promise; abort(): Promise; clearQueue(): Promise<{ steering: string[]; followUp: string[]; }>; newSession(parentSession?: string): Promise<{ cancelled: boolean; }>; deleteSession(sessionId: string): Promise; getState(): Promise; getSessionSummary(): Promise; listSessions(): Promise; listWorkflowRuns(status?: WorkflowRunFilterStatus): Promise; getWorkflowRunSummary(runId: string): Promise; setModel(provider: string, modelId: string, options?: { persist?: boolean; }): Promise<{ provider: string; id: string; }>; cycleModel(direction?: "forward" | "backward", options?: { persist?: boolean; }): Promise<{ model: Model; thinkingLevel: ThinkingLevel; isScoped: boolean; } | null>; getAvailableModels(): Promise; loginProvider(provider: string, signal?: AbortSignal): Promise; saveProviderCredential(provider: string, credential: Credential, options?: SaveCredentialOptions): Promise; cancelLoginProvider(provider: string, loginId?: string): Promise; logoutProvider(provider: string): Promise; refreshModels(options?: { timeoutMs?: number; force?: boolean; allowNetwork?: boolean; }): Promise; setThinkingLevel(level: ThinkingLevel): Promise; /** * Isolated persist path: forwards `persist` and returns the engine's effective * level plus the provider/model the engine persisted against. Public callers * must keep using one-argument {@link setThinkingLevel}. */ setThinkingLevelAck(level: ThinkingLevel, options?: { persist?: boolean; }): Promise<{ level: ThinkingLevel; provider?: string; modelId?: string; }>; cycleThinkingLevel(): Promise<{ level: ThinkingLevel; } | null>; getAvailableThinkingLevels(): Promise; setSteeringMode(mode: "all" | "one-at-a-time"): Promise; setFollowUpMode(mode: "all" | "one-at-a-time"): Promise; compact(): Promise; setAutoCompaction(enabled: boolean): Promise; setAutoRetry(enabled: boolean): Promise; abortRetry(): Promise; bash(command: string): Promise; abortBash(requestId?: string): Promise; /** Recover work an earlier process left unfinished; call once the transcript is shown. */ startPendingRecovery(reason?: SessionRecoveryReason): Promise; getSessionStats(): Promise; /** Which tools are active, which are not (and why), and which selected names nothing registered. */ getTools(): Promise; exportHtml(outputPath?: string): Promise<{ path: string; }>; switchSession(sessionId: string, cwdOverride?: string, sessionDirectory?: string): Promise<{ cancelled: boolean; }>; fork(entryId: string): Promise<{ text: string; cancelled: boolean; }>; clone(): Promise<{ cancelled: boolean; }>; getForkMessages(): Promise>; getEntries(since?: string): Promise<{ entries: SessionEntry[]; leafId: string | null; }>; getTree(): Promise<{ tree: SessionTreeNode[]; leafId: string | null; }>; getLastAssistantText(): Promise; setSessionName(name: string): Promise; getMessages(): Promise; getCommands(): Promise; getCommandCompletions(commandName: string, argumentPrefix: string): Promise; } export {}; //# sourceMappingURL=rpc-client-api.d.ts.map