UNPKG

@toolbox-sdk/core

Version:
48 lines (47 loc) 2.7 kB
import { ZodObject, ZodRawShape } from 'zod'; import { ITransport } from './transport.types.js'; import { BoundParams, BoundValue } from './utils.js'; import { ClientHeadersConfig } from './client.js'; export type AuthTokenGetter = () => string | Promise<string>; export type AuthTokenGetters = Record<string, AuthTokenGetter>; export type RequiredAuthnParams = Record<string, string[]>; /** * A loaded, callable tool. Invoke it with an arguments object to run the tool on * the remote Toolbox server. The attached methods return new ToolboxTool * instances with additional auth-token getters or pre-bound parameters. */ export interface ToolboxTool { (callArguments?: Record<string, unknown>): Promise<string>; toolName: string; description: string; params: ZodObject<ZodRawShape>; boundParams: BoundParams; authTokenGetters: AuthTokenGetters; requiredAuthnParams: RequiredAuthnParams; requiredAuthzTokens: string[]; clientHeaders: ClientHeadersConfig; getName(): string; getDescription(): string; getParamSchema(): ZodObject<ZodRawShape>; addAuthTokenGetters(newAuthTokenGetters: AuthTokenGetters): ToolboxTool; addAuthTokenGetter(authSource: string, getIdToken: AuthTokenGetter): ToolboxTool; bindParams(paramsToBind: BoundParams): ToolboxTool; bindParam(paramName: string, paramValue: BoundValue): ToolboxTool; } /** * Creates a callable tool function representing a specific tool on a remote * Toolbox server. * * @param {ITransport} transport - The transport for making API requests. * @param {string} name - The name of the remote tool. * @param {string} description - A description of the remote tool. * @param {ZodObject<any>} paramSchema - The Zod schema for validating the tool's parameters. * @param {AuthTokenGetters} [authTokenGetters] - Optional map of auth service names to token getters. * @param {RequiredAuthnParams} [requiredAuthnParams] - Optional map of auth params that still need satisfying. * @param {string[]} [requiredAuthzTokens] - Optional list of auth tokens that still need satisfying. * @param {BoundParams} [boundParams] - Optional parameters to pre-bind to the tool. * @param {ClientHeadersConfig} [clientHeaders] - Optional client-specific headers. * @returns {ToolboxTool} An async function that, when * called, invokes the tool with the provided arguments. */ export declare function ToolboxTool(transport: ITransport, name: string, description: string, paramSchema: ZodObject<ZodRawShape>, authTokenGetters?: AuthTokenGetters, requiredAuthnParams?: RequiredAuthnParams, requiredAuthzTokens?: string[], boundParams?: BoundParams, clientHeaders?: ClientHeadersConfig): ToolboxTool;