{"version":3,"sources":["../../src/client/client.ts"],"names":["uuuid","getTracer","BaseError","FetchError","createEventSource","HTTPError","ErrorModel","ACPError","Event","PingResponse","AgentsListResponse","AgentsReadResponse","inputToMessages","RunCreateResponse","RunReadResponse","RunEventsListResponse","RunResumeResponse"],"mappings":"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","file":"client.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { v4 as uuuid } from \"uuid\";\nimport { ErrorModel } from \"../models/errors.js\";\nimport {\n  AgentManifest,\n  AgentName,\n  AwaitResume,\n  Event,\n  Run,\n  RunId,\n  SessionId,\n} from \"../models/models.js\";\nimport {\n  AgentsListResponse,\n  AgentsReadResponse,\n  PingResponse,\n  RunCreateRequest,\n  RunCreateResponse,\n  RunEventsListResponse,\n  RunReadResponse,\n  RunResumeRequest,\n  RunResumeResponse,\n} from \"../models/schemas.js\";\nimport { ACPError, BaseError, FetchError, HTTPError } from \"./errors.js\";\nimport { createEventSource, EventSource } from \"./sse.js\";\nimport { Input } from \"./types.js\";\nimport { inputToMessages } from \"./utils.js\";\nimport { getTracer } from \"../instrumentation.js\";\n\ntype FetchLike = typeof fetch;\n\nexport interface ClientInit {\n  baseUrl?: string;\n  /**\n   * Optional fetch implementation to use. Defaults to `globalThis.fetch`.\n   * Can also be used for advanced use cases like mocking, proxying, custom certs etc.\n   */\n  fetch?: FetchLike;\n  sessionId?: string;\n}\n\nexport class Client {\n  #baseUrl: string;\n  #fetch: FetchLike;\n  #sessionId?: SessionId;\n\n  constructor(init?: ClientInit) {\n    this.#fetch = init?.fetch ?? globalThis.fetch.bind(globalThis);\n    this.#baseUrl = normalizeBaseUrl(init?.baseUrl ?? \"\");\n    this.#sessionId = init?.sessionId;\n  }\n\n  get sessionId() {\n    return this.#sessionId;\n  }\n\n  async withSession<T>(\n    cb: (session: Client) => Promise<T>,\n    sessionId: SessionId = uuuid()\n  ) {\n    return await getTracer().startActiveSpan(\n      \"session\",\n      { attributes: { \"acp.session\": sessionId } },\n      async (span) => {\n        try {\n          const client = new Client({\n            fetch: this.#fetch,\n            baseUrl: this.#baseUrl,\n            sessionId,\n          });\n          return await cb(client);\n        } finally {\n          span.end();\n        }\n      }\n    );\n  }\n\n  async #fetcher(url: string, options?: RequestInit) {\n    let response: Response | undefined;\n    try {\n      response = await this.#fetch(this.#baseUrl + url, options);\n      await this.#handleErrorResponse(response);\n      return await response.json();\n    } catch (err) {\n      if (\n        err instanceof BaseError ||\n        (err instanceof Error && err.name === \"AbortError\")\n      ) {\n        throw err;\n      }\n      throw new FetchError((err as Error).message ?? \"fetch failed\", response, {\n        cause: err,\n      });\n    }\n  }\n\n  async #fetchEventSource(url: string, options?: RequestInit) {\n    let eventSource: EventSource;\n    try {\n      eventSource = await createEventSource({\n        url: this.#baseUrl + url,\n        fetch: this.#fetch,\n        options,\n      });\n    } catch (err) {\n      throw new FetchError(\n        (err as Error).message ?? \"fetch failed\",\n        undefined,\n        {\n          cause: err,\n        }\n      );\n    }\n    await this.#handleErrorResponse(eventSource.response);\n    return eventSource;\n  }\n\n  async #handleErrorResponse(response: Response) {\n    if (response.ok) return;\n\n    const text = await response.text();\n    let data: unknown;\n    try {\n      data = JSON.parse(text);\n    } catch {\n      throw new HTTPError(response, text);\n    }\n\n    const result = ErrorModel.safeParse(data);\n    if (result.success) {\n      throw new ACPError(result.data);\n    }\n    throw new HTTPError(response, data);\n  }\n\n  async *#processEventSource(eventSource: EventSource) {\n    for await (const message of eventSource.consume()) {\n      const event = Event.parse(JSON.parse(message.data));\n      if (event.type === \"error\") {\n        throw new ACPError(event.error);\n      }\n      yield event;\n    }\n  }\n\n  async ping() {\n    const data = await this.#fetcher(\"/ping\", { method: \"GET\" });\n    PingResponse.parse(data);\n  }\n\n  async agents(): Promise<AgentManifest[]> {\n    const data = await this.#fetcher(\"/agents\", { method: \"GET\" });\n    return AgentsListResponse.parse(data).agents;\n  }\n\n  async agent(name: AgentName): Promise<AgentManifest> {\n    const data = await this.#fetcher(`/agents/${name}`, { method: \"GET\" });\n    return AgentsReadResponse.parse(data);\n  }\n\n  async runSync(agentName: AgentName, input: Input): Promise<Run> {\n    const data = await this.#fetcher(\n      \"/runs\",\n      jsonPost<RunCreateRequest>({\n        agent_name: agentName,\n        input: inputToMessages(input),\n        mode: \"sync\",\n        session_id: this.#sessionId,\n      })\n    );\n    return RunCreateResponse.parse(data);\n  }\n\n  async runAsync(agentName: AgentName, input: Input): Promise<Run> {\n    const data = await this.#fetcher(\n      \"/runs\",\n      jsonPost<RunCreateRequest>({\n        agent_name: agentName,\n        input: inputToMessages(input),\n        mode: \"async\",\n        session_id: this.#sessionId,\n      })\n    );\n    return RunCreateResponse.parse(data);\n  }\n\n  async *runStream(\n    agentName: AgentName,\n    input: Input,\n    signal?: AbortSignal\n  ): AsyncGenerator<Event, void, unknown> {\n    const eventSource = await this.#fetchEventSource(\n      \"/runs\",\n      jsonPost<RunCreateRequest>(\n        {\n          agent_name: agentName,\n          input: inputToMessages(input),\n          mode: \"stream\",\n          session_id: this.#sessionId,\n        },\n        { signal }\n      )\n    );\n    for await (const event of this.#processEventSource(eventSource)) {\n      yield event;\n    }\n  }\n\n  async runStatus(runId: RunId): Promise<Run> {\n    const data = await this.#fetcher(`/runs/${runId}`, { method: \"GET\" });\n    return RunReadResponse.parse(data);\n  }\n\n  async runEvents(runId: RunId): Promise<Event[]> {\n    const data = await this.#fetcher(`/runs/${runId}/events`, {\n      method: \"GET\",\n    });\n    return RunEventsListResponse.parse(data).events;\n  }\n\n  async runCancel(runId: RunId): Promise<Run> {\n    const data = await this.#fetcher(`/runs/${runId}/cancel`, {\n      method: \"POST\",\n    });\n    return RunReadResponse.parse(data);\n  }\n\n  async runResumeSync(runId: RunId, awaitResume: AwaitResume): Promise<Run> {\n    const data = await this.#fetcher(\n      `/runs/${runId}`,\n      jsonPost<RunResumeRequest>({\n        await_resume: awaitResume,\n        mode: \"sync\",\n      })\n    );\n    return RunResumeResponse.parse(data);\n  }\n\n  async runResumeAsync(runId: RunId, awaitResume: AwaitResume): Promise<Run> {\n    const data = await this.#fetcher(\n      `/runs/${runId}`,\n      jsonPost<RunResumeRequest>({\n        await_resume: awaitResume,\n        mode: \"async\",\n      })\n    );\n    return RunResumeResponse.parse(data);\n  }\n\n  async *runResumeStream(\n    runId: RunId,\n    awaitResume: AwaitResume,\n    signal?: AbortSignal\n  ): AsyncGenerator<Event, void, unknown> {\n    const eventSource = await this.#fetchEventSource(\n      `/runs/${runId}`,\n      jsonPost<RunResumeRequest>(\n        {\n          await_resume: awaitResume,\n          mode: \"stream\",\n        },\n        { signal }\n      )\n    );\n    for await (const event of this.#processEventSource(eventSource)) {\n      yield event;\n    }\n  }\n}\n\nconst normalizeBaseUrl = (url: string) => {\n  if (url.endsWith(\"/\")) {\n    return url.slice(0, -1);\n  }\n  return url;\n};\n\nconst jsonPost = <T>(\n  json: T,\n  init?: Omit<RequestInit, \"method\" | \"headers\" | \"body\">\n): RequestInit => {\n  return {\n    ...init,\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application/json\" },\n    body: JSON.stringify(json),\n  };\n};\n"]}