UNPKG

@agentpaid/mcp-use

Version:

A utility library for integrating Model Context Protocol (MCP) with LangChain, Zod, and related tools. Provides helpers for schema conversion, event streaming, and SDK usage.

68 lines (67 loc) 2.36 kB
"use strict"; /** * AI SDK Integration Utilities * * Utility functions for integrating MCPAgent's streamEvents with Vercel AI SDK. * These utilities help convert stream events to AI SDK compatible formats. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.streamEventsToAISDK = streamEventsToAISDK; exports.createReadableStreamFromGenerator = createReadableStreamFromGenerator; exports.streamEventsToAISDKWithTools = streamEventsToAISDKWithTools; /** * Converts streamEvents to AI SDK compatible stream (basic version) * Only yields the actual content tokens from chat model streams */ async function* streamEventsToAISDK(streamEvents) { for await (const event of streamEvents) { if (event.event === 'on_chat_model_stream' && event.data?.chunk?.text) { const textContent = event.data.chunk.text; if (typeof textContent === 'string' && textContent.length > 0) { yield textContent; } } } } /** * Converts async generator to ReadableStream for AI SDK compatibility */ function createReadableStreamFromGenerator(generator) { return new ReadableStream({ async start(controller) { try { for await (const chunk of generator) { controller.enqueue(chunk); } controller.close(); } catch (error) { controller.error(error); } }, }); } /** * Enhanced adapter that includes tool information along with chat content * Yields both content tokens and tool usage notifications */ async function* streamEventsToAISDKWithTools(streamEvents) { for await (const event of streamEvents) { switch (event.event) { case 'on_chat_model_stream': if (event.data?.chunk?.text) { const textContent = event.data.chunk.text; if (typeof textContent === 'string' && textContent.length > 0) { yield textContent; } } break; case 'on_tool_start': yield `\n🔧 Using tool: ${event.name}\n`; break; case 'on_tool_end': yield `\n✅ Tool completed: ${event.name}\n`; break; } } }