UNPKG

@copilotkit/runtime-client-gql

Version:

<div align="center"> <a href="https://copilotkit.ai" target="_blank"> <img src="https://github.com/copilotkit/copilotkit/raw/main/assets/banner.png" alt="CopilotKit Logo"> </a>

142 lines (138 loc) 4.35 kB
import { generateCopilotResponseMutation } from "./chunk-UTULAYEV.mjs"; import { getAvailableAgentsQuery, loadAgentStateQuery } from "./chunk-OKPFKUUA.mjs"; // src/client/CopilotRuntimeClient.ts import { Client, cacheExchange, fetchExchange } from "@urql/core"; // package.json var version = "1.8.4"; // src/client/CopilotRuntimeClient.ts import { ResolvedCopilotKitError, CopilotKitLowLevelError, CopilotKitError, CopilotKitVersionMismatchError, getPossibleVersionMismatch } from "@copilotkit/shared"; var createFetchFn = (signal, handleGQLWarning) => async (...args) => { var _a, _b; const publicApiKey = (_b = (_a = args[1]) == null ? void 0 : _a.headers) == null ? void 0 : _b["x-copilotcloud-public-api-key"]; try { const result = await fetch(args[0], { ...args[1] ?? {}, signal }); const mismatch = publicApiKey ? null : await getPossibleVersionMismatch({ runtimeVersion: result.headers.get("X-CopilotKit-Runtime-Version"), runtimeClientGqlVersion: version }); if (result.status !== 200) { if (result.status >= 400 && result.status <= 500) { if (mismatch) { throw new CopilotKitVersionMismatchError(mismatch); } throw new ResolvedCopilotKitError({ status: result.status }); } } if (mismatch && handleGQLWarning) { handleGQLWarning(mismatch.message); } return result; } catch (error) { if (error.message.includes("BodyStreamBuffer was aborted") || error.message.includes("signal is aborted without reason")) { throw error; } if (error instanceof CopilotKitError) { throw error; } throw new CopilotKitLowLevelError({ error, url: args[0] }); } }; var CopilotRuntimeClient = class { constructor(options) { const headers = {}; this.handleGQLErrors = options.handleGQLErrors; this.handleGQLWarning = options.handleGQLWarning; if (options.headers) { Object.assign(headers, options.headers); } if (options.publicApiKey) { headers["x-copilotcloud-public-api-key"] = options.publicApiKey; } this.client = new Client({ url: options.url, exchanges: [cacheExchange, fetchExchange], fetchOptions: { headers: { ...headers, "X-CopilotKit-Runtime-Client-GQL-Version": version }, ...options.credentials ? { credentials: options.credentials } : {} } }); } generateCopilotResponse({ data, properties, signal }) { const fetchFn = createFetchFn(signal, this.handleGQLWarning); const result = this.client.mutation(generateCopilotResponseMutation, { data, properties }, { fetch: fetchFn }); return result; } asStream(source) { const handleGQLErrors = this.handleGQLErrors; return new ReadableStream({ start(controller) { source.subscribe(({ data, hasNext, error }) => { if (error) { if (error.message.includes("BodyStreamBuffer was aborted") || error.message.includes("signal is aborted without reason")) { if (!hasNext) controller.close(); console.warn("Abort error suppressed"); return; } controller.error(error); if (handleGQLErrors) { handleGQLErrors(error); } } else { controller.enqueue(data); if (!hasNext) { controller.close(); } } }); } }); } availableAgents() { const fetchFn = createFetchFn(); return this.client.query(getAvailableAgentsQuery, {}, { fetch: fetchFn }); } loadAgentState(data) { const fetchFn = createFetchFn(); return this.client.query( loadAgentStateQuery, { data }, { fetch: fetchFn } ); } static removeGraphQLTypename(data) { if (Array.isArray(data)) { data.forEach((item) => CopilotRuntimeClient.removeGraphQLTypename(item)); } else if (typeof data === "object" && data !== null) { delete data.__typename; Object.keys(data).forEach((key) => { if (typeof data[key] === "object" && data[key] !== null) { CopilotRuntimeClient.removeGraphQLTypename(data[key]); } }); } return data; } }; export { CopilotRuntimeClient }; //# sourceMappingURL=chunk-34WDZSKG.mjs.map