import type { ExtensionAPI, ExtensionHandler, SessionStartEvent, SessionShutdownEvent, BeforeAgentStartEvent, BeforeAgentStartEventResult, InputEvent, InputEventResult, TurnEndEvent, RegisteredCommand, } from "@earendil-works/pi-coding-agent"; /** * Sole isolation point for all Pi SDK calls. * No other Core file may import ExtensionAPI directly — pass PiAdapter instead. * This makes the Pi boundary explicit and allows tests to mock the adapter. * * Note: resources_discover is not wrapped here because its event/result types * are not exported from the SDK's main entry point. The gatekeeper extension * (a CS-specific extension being removed in Phase 5) calls pi.on directly. */ export class PiAdapter { constructor(private readonly pi: ExtensionAPI) {} onSessionStart(handler: ExtensionHandler): void { this.pi.on("session_start", handler); } onSessionShutdown(handler: ExtensionHandler): void { this.pi.on("session_shutdown", handler); } onBeforeAgentStart( handler: ExtensionHandler ): void { this.pi.on("before_agent_start", handler); } onInput(handler: ExtensionHandler): void { this.pi.on("input", handler); } onTurnEnd(handler: ExtensionHandler): void { this.pi.on("turn_end", handler); } registerCommand(name: string, options: Omit): void { this.pi.registerCommand(name, options); } sendUserMessage(content: string): void { this.pi.sendUserMessage(content); } }