UNPKG

@voyager-0x/agent-mcp

Version:

Voyager MCP Agent - A powerful Model Context Protocol agent

84 lines (83 loc) 2.42 kB
import { McpAgent } from "./agent.js"; import { aiConfigManager } from "./config.js"; import { mcpModulesManager } from "./module.js"; import { StreamBuffer } from "./streamBuffer.js"; import { z } from "zod"; export class WebMcpAgent { constructor(config) { this.streamBuffer = new StreamBuffer(); this.onmessage = () => { }; this.onfinish = () => { }; aiConfigManager.setConfig(config); } updateConfig(config) { aiConfigManager.setConfig(config); } createChat() { this.agent = new McpAgent(); this.streamBuffer.reset(); // 重置流式缓存器 this.agent?.session.on("reply", (deltaMessage) => { // 使用智能缓存器处理流式内容 const readyToSend = this.streamBuffer.processChunk(deltaMessage); if (readyToSend) { this.onmessage(readyToSend); } }); this.agent?.session.on("finish", () => { // 会话结束时,刷新缓存器中剩余的内容 const remainingContent = this.streamBuffer.flush(); if (remainingContent) { this.onmessage(remainingContent); } this.onfinish(); }); return this.agent; } /** * 获取聊天消息 * @returns 聊天消息列表 */ getChatMessages() { return this.agent?.session.list(); } /** * 获取当前聊天会话 * @returns 聊天会话 */ getAgent() { if (!this.agent) { this.createChat(); } return this.agent; } /** * 发送消息 * @param message 消息内容 */ chat(message) { if (!this.agent) { this.createChat(); } return this.agent.chat(message); } /** * 取消当前聊天 */ cancelChat() { if (this.agent) { this.agent.cancelChat(); } } /** * 注册回复事件 * @param onmessage 回复事件 * @param onfinish 完成事件 */ onReply(onmessage, onfinish) { this.onmessage = onmessage; this.onfinish = onfinish; } } export const createMcpDslModule = mcpModulesManager.createMcpDslModule.bind(mcpModulesManager); export const createMcpServerModule = mcpModulesManager.createMcpServerModule.bind(mcpModulesManager); export { mcpModulesManager, z };