export type SessionStartReason = "startup" | "reload" | "new" | "resume" | "fork"; export type SessionShutdownReason = "quit" | "reload" | "new" | "resume" | "fork"; export type SessionStartEvent = { reason: SessionStartReason; previousSessionFile?: string; }; export type SessionShutdownEvent = { reason: SessionShutdownReason; targetSessionFile?: string; }; export type BeforeAgentStartEvent = { systemPrompt: string; }; export type BeforeAgentStartResult = { systemPrompt?: string; } | void; export type ExtensionContext = { cwd: string; mode: "tui" | "rpc" | "json" | "print"; hasUI: boolean; signal?: AbortSignal; ui?: { notify?: (message: string, level?: "info" | "warn" | "error") => void; }; }; /** Context handed to a command handler. Superset of ExtensionContext in practice; we * only read `signal`, `ui`, and `hasUI`. */ export type ExtensionCommandContext = ExtensionContext; export type AutocompleteItem = { value: string; label?: string; }; export type ExecResult = { stdout: string; stderr: string; code: number; killed: boolean; }; export type ExecOptions = { signal?: AbortSignal; timeout?: number; cwd?: string; env?: NodeJS.ProcessEnv; }; /** An LLM-visible message injected from a command. `display:true` shows it in the TUI; * `{triggerTurn:true, deliverAs:"steer"}` makes the model act on it this turn. */ export type SendMessage = { customType: string; content: string; display?: boolean; details?: Record; }; export type SendMessageOptions = { triggerTurn?: boolean; deliverAs?: "steer" | "followUp"; }; export type CommandSpec = { description: string; handler: (args: string, ctx: ExtensionCommandContext) => void | Promise; getArgumentCompletions?: (prefix: string) => AutocompleteItem[] | null; }; export interface ExtensionAPI { on(event: "session_start", handler: (event: SessionStartEvent, ctx: ExtensionContext) => void | Promise): void; on(event: "session_shutdown", handler: (event: SessionShutdownEvent, ctx: ExtensionContext) => void | Promise): void; on(event: "before_agent_start", handler: (event: BeforeAgentStartEvent, ctx: ExtensionContext) => BeforeAgentStartResult | Promise): void; registerCommand(name: string, spec: CommandSpec): void; exec(command: string, args: string[], options?: ExecOptions): Promise; sendMessage(message: SendMessage, options?: SendMessageOptions): void; } //# sourceMappingURL=pi.d.ts.map