{"version":3,"sources":["../../src/server/index.ts"],"names":[],"mappings":";;;;;;;AA2CO,SAAS,gBAAgB,OAAA,EAAsC;AACpE,EAAA,MAAM,MAAA,GAAiB,YAAA,CAAa,OAAA,CAAQ,MAAA,EAAQ,QAAQ,KAAK,CAAA;AAEjE,EAAA,MAAM,aAAa,IAAI,mBAAA;AAAA,IACrB,CAAC,IAAA,KAAS,kBAAA,CAAmB,IAAA,EAAM,OAAO,CAAA;AAAA,IAC1C;AAAA,GACF;AAEA,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,MAAM,KAAA,GAAQ;AAAA,IAAC;AAAA,GACjB;AACF;AAEA,SAAS,kBAAA,CACP,MACA,OAAA,EACkB;AAClB,EAAA,KAAK,OAAA,CAAQ,MAAA;AAEb,EAAA,OAAO;AAAA,IACL,MAAM,WAAW,MAAA,EAAQ;AAEvB,MAAA,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAAA,IAC7D,CAAA;AAAA,IACA,MAAM,aAAa,MAAA,EAAQ;AAEzB,MAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,IAC/D,CAAA;AAAA,IACA,MAAM,WAAW,MAAA,EAAQ;AAEvB,MAAA,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAAA,IAC7D,CAAA;AAAA,IACA,MAAM,YAAY,MAAA,EAAQ;AAExB,MAAA,MAAM,IAAI,MAAM,4CAA4C,CAAA;AAAA,IAC9D,CAAA;AAAA,IACA,MAAM,OAAO,MAAA,EAAQ;AACnB,MAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,QAAA,MAAM,OAAA,CAAQ,QAAA,CAAS,MAAA,CAAO,SAAS,CAAA;AACvC,QAAA;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,MAAM,OAAO,MAAA,EAAQ;AACnB,MAAA,IAAI,CAAC,QAAQ,QAAA,EAAU;AACrB,QAAA,MAAM,IAAI,MAAM,kDAAkD,CAAA;AAAA,MACpE;AACA,MAAA,MAAM,SAAA,GAAa,OAAkC,SAAA,IAAa,SAAA;AAClE,MAAA,MAAM,UAAA,GAAa,IAAI,eAAA,EAAgB;AACvC,MAAA,MAAM,GAAA,GAA+B;AAAA,QACnC,SAAA;AAAA,QACA,QAAQ,UAAA,CAAW,MAAA;AAAA,QACnB,UAAA,EAAY,OAAO,MAAA,KAAW;AAC5B,UAAA,MAAM,IAAA,CAAK,cAAc,MAAe,CAAA;AAAA,QAC1C;AAAA,OACF;AACA,MAAA,IAAI;AACF,QAAA,OAAQ,MAAM,OAAA,CAAQ,QAAA,CAAS,MAAA,EAAQ,GAAG,CAAA;AAAA,MAC5C,SAAS,GAAA,EAAK;AACZ,QAAA,UAAA,CAAW,KAAA,EAAM;AACjB,QAAA,MAAM,GAAA;AAAA,MACR;AAAA,IACF;AAAA,GACF;AACF","file":"index.mjs","sourcesContent":["/**\n * AIP-44 ACP server — exposes an AIP-9 operator to ACP-speaking clients.\n *\n * Thin wrapper around `@agentclientprotocol/sdk`'s `AgentSideConnection`.\n * Hosts the connection, maps incoming `session/prompt` requests onto an\n * `onPrompt` handler, and bridges `session/update` notifications to the\n * caller's audit emitter via the per-session context.\n */\n\nimport {\n  AgentSideConnection,\n  ndJsonStream,\n  type Agent as AcpAgentHandlers,\n  type Stream,\n} from \"@agentclientprotocol/sdk\"\nimport type { AcpHandle } from \"../types.js\"\n\nexport interface AcpServerOptions {\n  /** AIP-44 manifest describing the server's role + capabilities. */\n  handle: AcpHandle\n  /** Output bytes go here (client stdin / WS write side). */\n  output: WritableStream<Uint8Array>\n  /** Input bytes come from here (client stdout / WS read side). */\n  input: ReadableStream<Uint8Array>\n  /** Hook invoked when a client calls `session/prompt`. */\n  onPrompt?: (params: unknown, ctx: AcpServerSessionContext) => Promise<unknown>\n  /** Hook invoked on `session/cancel`. */\n  onCancel?: (sessionId: string) => Promise<void>\n}\n\nexport interface AcpServerSessionContext {\n  readonly sessionId: string\n  /** Push a `session/update` notification to the connected client. */\n  sendUpdate(update: unknown): Promise<void>\n  /** Aborts when the client sends `session/cancel`. */\n  readonly signal: AbortSignal\n}\n\nexport interface AcpServer {\n  readonly connection: AgentSideConnection\n  close(): Promise<void>\n}\n\nexport function createAcpServer(options: AcpServerOptions): AcpServer {\n  const stream: Stream = ndJsonStream(options.output, options.input)\n\n  const connection = new AgentSideConnection(\n    (conn) => buildAgentHandlers(conn, options),\n    stream,\n  )\n\n  return {\n    connection,\n    async close() {},\n  }\n}\n\nfunction buildAgentHandlers(\n  conn: AgentSideConnection,\n  options: AcpServerOptions,\n): AcpAgentHandlers {\n  void options.handle\n\n  return {\n    async initialize(params) {\n      void params\n      throw new Error(\"AcpServer.initialize: not yet implemented\")\n    },\n    async authenticate(params) {\n      void params\n      throw new Error(\"AcpServer.authenticate: not yet implemented\")\n    },\n    async newSession(params) {\n      void params\n      throw new Error(\"AcpServer.newSession: not yet implemented\")\n    },\n    async loadSession(params) {\n      void params\n      throw new Error(\"AcpServer.loadSession: not yet implemented\")\n    },\n    async cancel(params) {\n      if (options.onCancel) {\n        await options.onCancel(params.sessionId)\n        return\n      }\n    },\n    async prompt(params) {\n      if (!options.onPrompt) {\n        throw new Error(\"AcpServer.prompt: no onPrompt handler configured\")\n      }\n      const sessionId = (params as { sessionId?: string }).sessionId ?? \"unknown\"\n      const controller = new AbortController()\n      const ctx: AcpServerSessionContext = {\n        sessionId,\n        signal: controller.signal,\n        sendUpdate: async (update) => {\n          await conn.sessionUpdate(update as never)\n        },\n      }\n      try {\n        return (await options.onPrompt(params, ctx)) as never\n      } catch (err) {\n        controller.abort()\n        throw err\n      }\n    },\n  } as AcpAgentHandlers\n}\n"]}