@monitoro/herd
Version:
Automate your browser, build AI web tools and MCP servers with Monitoro Herd
114 lines (113 loc) • 2.87 kB
TypeScript
import { HerdClient } from "../HerdClient.js";
import cors from "cors";
export interface TrailServerTransportConfig {
type: "http" | "mcp-stdio" | "mcp-sse";
port?: number;
path?: string;
cors?: boolean | cors.CorsOptions;
}
export interface TrailServerOptions {
name: string;
version: string;
description?: string;
transports: TrailServerTransportConfig[];
trails: string[];
autoBuild?: boolean;
silent?: boolean;
cacheEnabled?: boolean;
includeOrgPrefix?: boolean;
abridge?: boolean;
maxResponseLength?: number;
}
export declare class TrailServer {
private client;
private mcpServer;
private transports;
private trails;
private expressApp?;
private httpServer?;
private sseTransport?;
private stdioTransport?;
private autoBuild;
private silent;
private cacheEnabled;
private includeOrgPrefix;
private usingStdioTransport;
private abridge;
private maxResponseLength;
private toolNameMappings;
private loadedTrails;
private logDir;
private outputLogPath;
private errorLogPath;
constructor(client: HerdClient, options: TrailServerOptions);
/**
* Check if transports include mcp-stdio
*/
private hasStdioTransport;
/**
* Setup log directory and files
*/
private setupLogDirectory;
/**
* Append a log entry to a log file, respecting size limits
*/
private logToFile;
/**
* Truncate log file if it exceeds the maximum size
*/
private truncateLogIfNeeded;
/**
* Safe logging that respects silent mode and stdio transport
*/
private log;
/**
* Error logging that respects stdio transport
* (errors should be logged unless using stdio transport)
*/
private logError;
/**
* Load a trail and convert its actions to MCP tools
*/
private loadTrailAndRegisterTools;
/**
* Register a trail action as an MCP tool
*/
private registerActionAsTool;
/**
* Initialize HTTP transport
*/
private initializeHttpTransport;
/**
* Initialize MCP STDIO transport
*/
private initializeMcpStdioTransport;
/**
* Initialize MCP SSE transport
*/
private initializeMcpSseTransport;
/**
* Start the trail server
*/
start(): Promise<void>;
/**
* Stop the trail server
*/
stop(): Promise<void>;
/**
* Check if a path is a local trail directory
*/
private isLocalTrailDirectory;
/**
* Calculate the total text length in a response
*/
private calculateTextLength;
/**
* Abridge content recursively to fit within the limit
*/
private abridgeContent;
/**
* Process response to ensure it fits within the limit
*/
private processResponseForSizeLimit;
}