UNPKG

@mondaydotcomorg/agent-toolkit

Version:

monday.com agent toolkit

149 lines (137 loc) 5.83 kB
import { ZodRawShape, z, ZodTypeAny } from 'zod'; import { ToolAnnotations } from '@modelcontextprotocol/sdk/types'; import { ApiClient, ApiClientConfig } from '@mondaydotcomorg/api'; interface Executable<Input, Output> { execute: (input?: Input) => Promise<Output>; } type ToolInputType<Input extends ZodRawShape | undefined> = Input extends ZodRawShape ? z.objectOutputType<Input, ZodTypeAny> : undefined; type ToolOutputType<T extends Record<string, unknown>> = { content: string; metadata?: T; }; declare enum ToolType { READ = "read", WRITE = "write", ALL_API = "all_api" } interface Tool<Input extends ZodRawShape | undefined, Output extends Record<string, unknown> = never> extends Executable<ToolInputType<Input>, ToolOutputType<Output>> { name: string; type: ToolType; annotations: ToolAnnotations; /** Whether the tool is enabled by default. Defaults to true if not specified. */ enabledByDefault?: boolean; getDescription(): string; getInputSchema(): Input; } type MondayApiToolContext = { boardId?: number; apiVersion?: string; agentType?: string; agentClientName?: string; clientRedirectUris?: string[]; }; type BaseMondayApiToolConstructor = new (api: ApiClient, token?: string) => BaseMondayApiTool<any>; declare abstract class BaseMondayApiTool<Input extends ZodRawShape | undefined, Output extends Record<string, unknown> = never> implements Tool<Input, Output> { protected readonly mondayApi: ApiClient; protected readonly apiToken?: string | undefined; protected readonly context?: MondayApiToolContext | undefined; abstract name: string; abstract type: ToolType; abstract annotations: ToolAnnotations; enabledByDefault?: boolean; constructor(mondayApi: ApiClient, apiToken?: string | undefined, context?: MondayApiToolContext | undefined); abstract getDescription(): string; abstract getInputSchema(): Input; /** * Public execute method that automatically tracks execution */ execute(input?: ToolInputType<Input>): Promise<ToolOutputType<Output>>; /** * Abstract method that subclasses should implement for their actual logic */ protected abstract executeInternal(input?: ToolInputType<Input>): Promise<ToolOutputType<Output>>; /** * Tracks tool execution with timing and error information * @param toolName - The name of the tool being executed * @param executionTimeInMs - The time taken to execute the tool in milliseconds * @param isError - Whether the execution resulted in an error * @param params - The parameters passed to the tool */ private trackToolExecution; } declare enum MondayAppsToolCategory { APP = "app", APP_VERSION = "app_version", APP_FEATURE = "app_feature", STORAGE = "storage", MONDAY_CODE = "monday_code", APP_DEVELOPMENT_ASSISTANT = "app_development_assistant" } interface MondayApiResponse { statusCode: number; headers?: Record<string, string>; [key: string]: any; } type MondayAppsToolType = new (mondayApiToken?: string) => BaseMondayAppsTool<any, any>; declare abstract class BaseMondayAppsTool<Input extends ZodRawShape | undefined, Output extends Record<string, unknown> = never> implements Tool<Input, Output> { abstract name: string; abstract type: ToolType; abstract category: MondayAppsToolCategory; private mondayApiToken?; abstract annotations: ToolAnnotations; constructor(mondayApiToken?: string); abstract getDescription(): string; abstract getInputSchema(): Input; /** * Public execute method that automatically tracks execution */ execute(input?: ToolInputType<Input>): Promise<ToolOutputType<Output>>; /** * Abstract method that subclasses should implement for their actual logic */ protected abstract executeInternal(input?: ToolInputType<Input>): Promise<ToolOutputType<Output>>; /** * Execute an API request to the monday.com API */ protected executeApiRequest<T extends MondayApiResponse>(method: string, endpoint: string, options?: { data?: any; query?: Record<string, any>; headers?: Record<string, string>; timeout?: number; }): Promise<T>; protected executeGraphQLQuery<T>(query: string, variables?: Record<string, unknown>): Promise<T>; /** * Tracks tool execution with timing and error information * @param toolName - The name of the tool being executed * @param executionTimeInMs - The time taken to execute the tool in milliseconds * @param isError - Whether the execution resulted in an error * @param params - The parameters passed to the tool */ private trackToolExecution; } declare const allMondayAppsTools: MondayAppsToolType[]; declare const allMondayDevTools: BaseMondayApiToolConstructor[]; declare const allGraphqlApiTools: BaseMondayApiToolConstructor[]; declare const allTools: (MondayAppsToolType | BaseMondayApiToolConstructor)[]; declare enum ToolMode { API = "api", APPS = "apps", ATP = "atp" } type ToolsConfiguration = { include?: string[]; exclude?: string[]; readOnlyMode?: boolean; mode?: ToolMode; enableDynamicApiTools?: boolean | 'only'; enableToolManager?: boolean; }; type MondayAgentToolkitConfig = { mondayApiToken: ApiClientConfig['token']; mondayApiVersion?: ApiClientConfig['apiVersion']; mondayApiEndpoint?: ApiClientConfig['endpoint']; mondayApiRequestConfig?: ApiClientConfig['requestConfig']; toolsConfiguration?: ToolsConfiguration; context?: MondayApiToolContext; }; export { Executable, MondayAgentToolkitConfig, Tool, ToolInputType, ToolMode, ToolOutputType, ToolType, ToolsConfiguration, allGraphqlApiTools, allMondayAppsTools, allMondayDevTools, allTools };