import type { Server, Socket } from "node:net"; import type { ChildProcess } from "node:child_process"; import type { ExtensionAPI, ExtensionContext, ExtensionCommandContext, ExtensionHandler, RegisteredCommand, TurnEndEvent, SessionStartEvent, InputEvent, BeforeAgentStartEvent, AgentEndEvent, InputSource } from "@earendil-works/pi-coding-agent"; export type { ExtensionAPI, ExtensionContext, ExtensionCommandContext, ExtensionHandler, RegisteredCommand, TurnEndEvent, SessionStartEvent, InputEvent, BeforeAgentStartEvent, AgentEndEvent, InputSource, }; export declare const MODES: { readonly OFF: "off"; readonly WAITING: "waiting"; readonly ACTIVE: "active"; }; export type VerifierMode = (typeof MODES)[keyof typeof MODES]; export interface VerifierState { mode: VerifierMode; port: number; portRetries: number; maxRestarts: number; restartDelayMs: number; restartCount: number; dangerousTools: Set; allowedTools: Set; toolPolicyMode: "block" | "allow"; server: Server | undefined; clients: Socket[]; buffer: { timestamp: number; data: unknown; }[]; bufferTtlMs: number; verifierProcess: ChildProcess | undefined; verifierSessionId: string | undefined; pendingVerification: boolean; lastFeedbackInjectedAt: number; feedbackCooldownMs: number; verificationAttempts: number; maxVerificationAttempts: number; escalationPaused: boolean; lastContext: ExtensionContext | undefined; /** True when the next before_agent_start is from our own pi.sendUserMessage injection. */ injectedNext: boolean; /** Monotonic turn counter incremented only for genuine user prompts. */ turnIndex: number; /** The last non-extension user prompt text. */ lastUserPrompt: string | undefined; /** Path to the builder's session JSONL file. */ sessionFilePath: string | undefined; /** Whether the current turn is a genuine user turn (true) or injected feedback (false). */ currentTurnGenuine: boolean; } export interface SessionEvent { type: "start" | "stop" | "session_start" | "error"; timestamp: number; payload: unknown; } export interface IpcMessage { timestamp: number; data: IpcPayload; } export type IpcPayload = { type: "session_start"; } | { type: "start"; turnIndex: number; userPrompt?: string; } | { type: "stop"; turnIndex: number; event: TurnEndEvent; userPrompt?: string; } | { type: "error"; detail: string; } | { type: "feedback"; content: string; } | { type: "analysis_error"; error: string; }; export interface FeedbackPayload { type: "feedback"; content: string; } export declare function toJsonl(obj: unknown): string; export declare function isIpcMessage(value: unknown): value is IpcMessage; export declare function isFeedbackPayload(value: unknown): value is FeedbackPayload; export declare function isStartPayload(value: unknown): value is Extract; export declare function isStopPayload(value: unknown): value is Extract; export declare function isAssistantMessage(value: unknown): value is { role: "assistant"; content: { type: "text"; text?: string; }[]; }; //# sourceMappingURL=types.d.ts.map