import type { ToolAdapter, YakToolset } from "./types/tools.js"; /** * Compose client-side {@link ToolAdapter}s into ONE merged tool manifest and ONE * routed `onToolCall`. This is the single injection point for "available tools" * into the iframe: every adapter — client-side (GraphQL/REST/custom, run by your own * `execute` callback) or server-relayed ({@link createYakServerAdapter}) — contributes * its tools to the merged manifest and its executor to the routed handler. Because every * tool now flows through `onToolCall`, they all surface through `onToolCallComplete` / * `useYakToolEvent`. * * @example * ```tsx * const toolset = createYakToolset([ * createYakServerAdapter({ endpoint: "/api/yak" }), // tRPC + custom server tools * createGraphQLToolAdapter({ name: "shop", schema, execute: runShopQuery }), * createRESTToolAdapter({ name: "billing", spec, execute: callBillingApi }), * ]); * * ({ routes, ...(await toolset.getConfig()) })} * onToolCall={toolset.onToolCall} * />; * ``` */ export declare function createYakToolset(adapters: ToolAdapter[]): YakToolset; /** Config for {@link createYakServerAdapter}. */ export type YakServerAdapterConfig = { /** * Endpoint mounting `createYakHandler` / `createNextYakHandler`. GET returns the * tool manifest; POST `{ name, args }` executes a tool. Default: `"/api/yak"`. */ endpoint?: string; /** Stable id for diagnostics. Default: `"server"`. */ id?: string; /** Extra headers (e.g. auth) applied to both the GET manifest load and POST execution. */ headers?: HeadersInit | (() => HeadersInit | Promise); }; /** * Bridge a server-side yak handler ({@link createYakHandler} / * `createNextYakHandler`, e.g. fronting the `@yak-io/trpc` adapter) into a * client-side {@link ToolAdapter}, so server-relayed tools merge into the same * manifest + `onToolCall` as browser-executed adapters. */ export declare function createYakServerAdapter(config?: YakServerAdapterConfig): ToolAdapter; //# sourceMappingURL=toolset.d.ts.map