mcp-use
Version:
Opinionated MCP Framework for TypeScript (@modelcontextprotocol/sdk compatible) - Build MCP Agents and Clients + MCP Servers with support for MCP-UI.
65 lines (62 loc) • 1.69 kB
JavaScript
import {
__name
} from "./chunk-3GQAWCBQ.js";
// src/agents/utils/ai_sdk.ts
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;
}
}
}
}
__name(streamEventsToAISDK, "streamEventsToAISDK");
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);
}
}
});
}
__name(createReadableStreamFromGenerator, "createReadableStreamFromGenerator");
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 `
\u{1F527} Using tool: ${event.name}
`;
break;
case "on_tool_end":
yield `
\u2705 Tool completed: ${event.name}
`;
break;
default:
break;
}
}
}
__name(streamEventsToAISDKWithTools, "streamEventsToAISDKWithTools");
export {
streamEventsToAISDK,
createReadableStreamFromGenerator,
streamEventsToAISDKWithTools
};