UNPKG

unstructured-client

Version:

<h3 align="center"> <img src="https://raw.githubusercontent.com/Unstructured-IO/unstructured/main/img/unstructured_logo.png" height="200" > </h3>

118 lines (109 loc) 3.04 kB
/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { RequestHandlerExtra } from "@modelcontextprotocol/sdk/shared/protocol.js"; import { GetPromptResult } from "@modelcontextprotocol/sdk/types.js"; import { objectOutputType, ZodOptional, ZodType, ZodTypeAny, ZodTypeDef, } from "zod"; import { UnstructuredClientCore } from "../core.js"; import { ConsoleLogger } from "./console-logger.js"; import { MCPScope } from "./scopes.js"; // '@modelcontextprotocol/sdk' currently does not export this type export type PromptArgsRawShape = { [k: string]: | ZodType<string, ZodTypeDef, string> | ZodOptional<ZodType<string, ZodTypeDef, string>>; }; export type PromptDefinition< Args extends undefined | PromptArgsRawShape = undefined, > = Args extends PromptArgsRawShape ? { name: string; description?: string; scopes?: MCPScope[]; args: Args; prompt: ( client: UnstructuredClientCore, args: objectOutputType<Args, ZodTypeAny>, extra: RequestHandlerExtra, ) => GetPromptResult | Promise<GetPromptResult>; } : { name: string; description?: string; scopes?: MCPScope[]; args?: undefined; prompt: ( client: UnstructuredClientCore, extra: RequestHandlerExtra, ) => GetPromptResult | Promise<GetPromptResult>; }; // Optional function to assist with formatting prompt results export async function formatResult(value: string): Promise<GetPromptResult> { return { messages: [ { role: "user", content: { type: "text", text: value, }, }, ], }; } export function createRegisterPrompt( logger: ConsoleLogger, server: McpServer, sdk: UnstructuredClientCore, allowedScopes: Set<MCPScope>, ): <A extends PromptArgsRawShape | undefined>( prompt: PromptDefinition<A>, ) => void { return <A extends PromptArgsRawShape | undefined>( prompt: PromptDefinition<A>, ): void => { const scopes = prompt.scopes ?? []; if (allowedScopes.size > 0 && scopes.length === 0) { return; } if ( allowedScopes.size > 0 && !scopes.every((s: MCPScope) => allowedScopes.has(s)) ) { return; } if (prompt.args) { if (prompt.description) { server.prompt( prompt.name, prompt.description, prompt.args, async (args, ctx) => prompt.prompt(sdk, args, ctx), ); } else { server.prompt( prompt.name, prompt.args, async (args, ctx) => prompt.prompt(sdk, args, ctx), ); } } else { if (prompt.description) { server.prompt( prompt.name, prompt.description, async (ctx) => prompt.prompt(sdk, ctx), ); } else { server.prompt(prompt.name, async (ctx) => prompt.prompt(sdk, ctx)); } } logger.debug("Registered prompt", { name: prompt.name }); }; }