23f7624596
ADR-166 MCP Bridge Security Lock / Static-source security lock (push) Failing after 0s
ADR-166 MCP Bridge Security Lock / Compose default binds loopback + Mongo has auth (push) Failing after 2s
CodeQL Advanced / Analyze (rust) (push) Failing after 0s
ADR-166 MCP Bridge Security Lock / plugin-agent-federation bindHost default (push) Failing after 1s
ADR-166 MCP Bridge Security Lock / Runtime behavior — 401 + terminal gate + fail-closed (push) Failing after 4s
business-pods-smoke / smoke (push) Failing after 1s
all-plugins-smoke / smoke-all (push) Failing after 2s
CI/CD Pipeline / Security & Code Quality (push) Failing after 1s
CI/CD Pipeline / Test Suite (ubuntu-latest) (push) Failing after 1s
CI/CD Pipeline / Build & Package (macos-latest) (push) Has been skipped
CI/CD Pipeline / Build & Package (ubuntu-latest) (push) Has been skipped
CI/CD Pipeline / Build & Package (windows-latest) (push) Has been skipped
CI/CD Pipeline / Documentation & Examples (push) Failing after 1s
Clone Tracker (14-day rolling) / Snapshot clones for ruflo ecosystem (push) Failing after 1s
CodeQL Advanced / Analyze (actions) (push) Failing after 1s
CodeQL Advanced / Analyze (javascript-typescript) (push) Failing after 1s
federation-peer-rust / stable-noop (push) Failing after 1s
metaharness-ci / score (push) Failing after 1s
metaharness-ci / router-compat (push) Failing after 0s
metaharness-ci / similarity-tests (push) Failing after 0s
no-agentbbs-smoke / smoke-without-agentbbs (push) Failing after 1s
V3 CI/CD Pipeline / Build V3 (windows-latest) (push) Has been skipped
codex-integration-audit / Codex integration audit (push) Failing after 1s
helpers-manifest-guard / guard (push) Failing after 1s
🔗 Cross-Agent Integration Tests / 🤝 Agent Coordination Tests (push) Has been skipped
🔗 Cross-Agent Integration Tests / 🧠 Memory Sharing Integration (push) Has been skipped
🔗 Cross-Agent Integration Tests / 🛡️ Fault Tolerance Tests (push) Has been skipped
🔗 Cross-Agent Integration Tests / ⚡ Performance Integration Tests (push) Has been skipped
metaharness-ci / mcp-scan (push) Failing after 1s
metaharness-ci / eject-dryrun (push) Failing after 1s
metaharness-ci / metaharness-real-data (push) Failing after 0s
no-cli-optdep-bloat-2561 / guard (push) Failing after 1s
no-metaharness-smoke / smoke-without-metaharness (push) Failing after 1s
no-phantom-agentic-flow-subpath / guard (push) Failing after 1s
🔄 Automated Rollback Manager / 🚨 Failure Detection (push) Failing after 1s
V3 CI/CD Pipeline / Plugin hooks smoke / ubuntu-latest / Node 22 (push) Failing after 1s
V3 CI/CD Pipeline / ruflo-graph-intelligence build + test smoke (#2044, ADR-123) (push) Failing after 1s
CVE Audit Gate / Audit root (critical-blocking) (push) Failing after 2s
cost-tracker-smoke / smoke (push) Failing after 3s
oia-audit-weekly / audit (push) Failing after 2s
ruflo-agent-smoke / ruflo-agent structural smoke (push) Failing after 1s
📊 Status Badges Update / 📊 Update Status Badges (push) Failing after 1s
V3 CI/CD Pipeline / Static regression guards (#2267 YAML + (push) Failing after 1s
V3 CI/CD Pipeline / Test V3 Packages (push) Failing after 0s
V3 CI/CD Pipeline / agent_execute provider routing smoke (#2042) (push) Failing after 0s
CVE Audit Gate / Audit v3 (critical-blocking) (push) Failing after 1s
federation-peer-rust / stable-native (push) Failing after 2s
🔗 Cross-Agent Integration Tests / 🚀 Integration Test Setup (push) Failing after 2s
neural-trader-smoke / runtime-smoke (push) Failing after 1s
V3 CI/CD Pipeline / Build V3 (macos-latest) (push) Has been skipped
V3 CI/CD Pipeline / Build V3 (ubuntu-latest) (push) Has been skipped
V3 CI/CD Pipeline / Type Check V3 (push) Failing after 1s
V3 CI/CD Pipeline / Smoke (no better-sqlite3) / ubuntu-latest / Node 24 (push) Failing after 1s
V3 CI/CD Pipeline / Smoke (no better-sqlite3) / ubuntu-latest / Node 22 (push) Failing after 2s
V3 CI/CD Pipeline / browser rvf create flag smoke (#2015) (push) Failing after 0s
V3 CI/CD Pipeline / Dependency review (#2046) (push) Has been skipped
V3 CI/CD Pipeline / Supply-chain audit (#2046) (push) Failing after 0s
V3 CI/CD Pipeline / witness marker drift smoke (#2021) (push) Failing after 1s
V3 CI/CD Pipeline / neural-trader portfolio CG smoke (#2068, ADR-126 Phase 3) (push) Failing after 1s
V3 CI/CD Pipeline / neural-trader backtest signing smoke (#2068, ADR-126 Phase 4) (push) Failing after 1s
V3 CI/CD Pipeline / kg-extract type-import classification smoke (#2049) (push) Failing after 0s
V3 CI/CD Pipeline / witness verify precondition smoke (#1880) (push) Failing after 2s
V3 CI/CD Pipeline / neural-trader pipeline risk-gate smoke (#2068, ADR-126 Phase 5) (push) Failing after 0s
V3 CI/CD Pipeline / neural-trader feature attribution smoke (#2068, ADR-126 Phase 6) (push) Failing after 0s
V3 CI/CD Pipeline / plugin-registry signature verification smoke (#1922, CWE-347) (push) Failing after 4s
V3 CI/CD Pipeline / memory stats legacy-DB smoke (#2120) (push) Failing after 4s
V3 CI/CD Pipeline / github deprecated actions smoke (#2089, ADR-127 Phase 3) (push) Failing after 1s
V3 CI/CD Pipeline / graph query + pathfinder smoke (ADR-130 P2+P5) (push) Has been skipped
V3 CI/CD Pipeline / graph trajectory hooks smoke (ADR-130 P3) (push) Has been skipped
V3 CI/CD Pipeline / graph plugin adapter smoke (ADR-130 P4) (push) Has been skipped
V3 CI/CD Pipeline / graph benchmark (ADR-130 P6) (push) Has been skipped
V3 CI/CD Pipeline / statusline generator delegation smoke (#2195) (push) Failing after 1s
V3 CI/CD Pipeline / wizard init regression guard (#2206 (push) Failing after 1s
V3 CI/CD Pipeline / memory no-stray-db smoke (ADR-125 P7) (push) Failing after 1s
V3 CI/CD Pipeline / github-safe injection smoke (#2089, ADR-127 Phase 1) (push) Failing after 1s
V3 CI/CD Pipeline / github actions pin smoke (#2089, ADR-127 Phase 1) (push) Failing after 1s
V3 CI/CD Pipeline / github attribution opt-in smoke (#2089, ADR-127 Phase 4) (push) Failing after 1s
V3 CI/CD Pipeline / pre-bash hook safety smoke (#2017) (push) Failing after 1s
V3 CI/CD Pipeline / Memory import smoke / ubuntu-latest (push) Failing after 0s
V3 CI/CD Pipeline / MCP protocol smoke / ubuntu-latest (push) Failing after 2s
V3 CI/CD Pipeline / ruvllm WASM auto-init smoke (#2086) (push) Failing after 4s
V3 CI/CD Pipeline / MCP paired-tool round-trip smoke (#1889) (push) Failing after 1s
V3 CI/CD Pipeline / Plugin package install-safety (#1902/#1903/#1904) (push) Failing after 1s
V3 CI/CD Pipeline / Tool description discoverability (ADR-112) (push) Failing after 3s
V3 CI/CD Pipeline / CLI npx-install smoke (#1147 / (22) (push) Failing after 1s
V3 CI/CD Pipeline / CLI npx-install smoke (#1147 / (24) (push) Failing after 1s
V3 CI/CD Pipeline / Windows hook shim smoke (#2132) / ubuntu-latest (push) Failing after 2s
V3 CI/CD Pipeline / Windows hook execution smoke (#2132) / ubuntu-latest (push) Failing after 1s
V3 CI/CD Pipeline / Windows init hooks smoke (#2132) / ubuntu-latest (push) Failing after 1s
V3 CI/CD Pipeline / Vector-index dimension audit (#1947) (push) Failing after 0s
V3 CI/CD Pipeline / Hook-command install safety (#1921) (push) Failing after 1s
V3 CI/CD Pipeline / ToolOutputGuardrail smoke (ADR-131, (push) Failing after 1s
V3 CI/CD Pipeline / init-bundle invariants smoke (#2095, ADR-128 Phase 5) (push) Failing after 1s
V3 CI/CD Pipeline / wasm provider bridge smoke (ADR-129 P1) (push) Failing after 2s
V3 CI/CD Pipeline / wasm gallery CRUD smoke (ADR-129 P3) (push) Failing after 1s
V3 CI/CD Pipeline / wasm plugin bridge smoke (ADR-129 P4) (push) Failing after 0s
V3 CI/CD Pipeline / wasm compose smoke (ADR-129 P2) (push) Failing after 4s
V3 CI/CD Pipeline / graph schema smoke (ADR-130 P1) (push) Failing after 0s
Validate Marketplace / validate (push) Failing after 1s
🔍 Verification Pipeline / 🚀 Setup Verification (push) Failing after 1s
🔍 Verification Pipeline / 🛡️ Security Verification (push) Has been skipped
🔍 Verification Pipeline / 📝 Code Quality (push) Has been skipped
🔍 Verification Pipeline / 🧪 Test Verification (${{ matrix.os }}, Node ${{ matrix.node }}) (push) Has been skipped
🔍 Verification Pipeline / 🏗️ Build Verification (push) Has been skipped
🔍 Verification Pipeline / 📚 Documentation Verification (push) Has been skipped
CVE Audit Gate / High-severity report (warn only) (push) Has been cancelled
🔄 Automated Rollback Manager / 🔄 Execute Rollback (push) Has been cancelled
🔄 Automated Rollback Manager / ✅ Post-Rollback Verification (push) Has been cancelled
🔄 Automated Rollback Manager / 📊 Rollback Monitoring (push) Has been cancelled
V3 CI/CD Pipeline / Windows init hooks smoke (#2132) / windows-latest (push) Has been cancelled
V3 CI/CD Pipeline / Windows hook execution smoke (#2132) / macos-latest (push) Has been cancelled
V3 CI/CD Pipeline / Windows hook execution smoke (#2132) / windows-latest (push) Has been cancelled
🔄 Automated Rollback Manager / ⏳ Manual Rollback Approval (push) Has been cancelled
V3 CI/CD Pipeline / MCP protocol smoke / macos-latest (push) Has been cancelled
V3 CI/CD Pipeline / Memory import smoke / macos-latest (push) Has been cancelled
V3 CI/CD Pipeline / Windows hook shim smoke (#2132) / macos-latest (push) Has been cancelled
V3 CI/CD Pipeline / Windows hook shim smoke (#2132) / windows-latest (push) Has been cancelled
V3 CI/CD Pipeline / Windows init hooks smoke (#2132) / macos-latest (push) Has been cancelled
V3 CI/CD Pipeline / Witness verify (signed manifest) / macos-latest (push) Has been cancelled
V3 CI/CD Pipeline / Witness verify (signed manifest) / ubuntu-latest (push) Has been cancelled
V3 CI/CD Pipeline / Witness verify (signed manifest) / windows-latest (push) Has been cancelled
V3 CI/CD Pipeline / Publish to npm (alpha) (push) Has been cancelled
V3 CI/CD Pipeline / Smoke (no better-sqlite3) / macos-latest / Node 22 (push) Has been cancelled
V3 CI/CD Pipeline / Plugin hooks smoke / macos-latest / Node 22 (push) Has been cancelled
CI/CD Pipeline / Deploy & Release (push) Has been cancelled
CI/CD Pipeline / CI Status (push) Has been cancelled
🔗 Cross-Agent Integration Tests / 📊 Integration Test Report (push) Has been cancelled
🔄 Automated Rollback Manager / 🔍 Pre-Rollback Validation (push) Has been cancelled
🔍 Verification Pipeline / ⚡ Performance Verification (push) Has been cancelled
🔍 Verification Pipeline / 📊 Verification Report (push) Has been cancelled
566 lines
12 KiB
TypeScript
566 lines
12 KiB
TypeScript
/**
|
|
* V3 MCP Types and Interfaces
|
|
*
|
|
* Optimized type definitions for the V3 MCP server with:
|
|
* - Strict typing for performance
|
|
* - Connection pooling types
|
|
* - Transport layer abstractions
|
|
* - Tool registry interfaces
|
|
*
|
|
* Performance Targets:
|
|
* - Server startup: <400ms
|
|
* - Tool registration: <10ms
|
|
* - Tool execution: <50ms overhead
|
|
*/
|
|
|
|
// ============================================================================
|
|
// Core Protocol Types
|
|
// ============================================================================
|
|
|
|
/**
|
|
* JSON-RPC 2.0 Protocol Version
|
|
*/
|
|
export type JsonRpcVersion = '2.0';
|
|
|
|
/**
|
|
* MCP Protocol Version
|
|
*/
|
|
export interface MCPProtocolVersion {
|
|
major: number;
|
|
minor: number;
|
|
patch: number;
|
|
}
|
|
|
|
/**
|
|
* MCP Request ID (can be string, number, or null)
|
|
*/
|
|
export type RequestId = string | number | null;
|
|
|
|
/**
|
|
* Base MCP Message
|
|
*/
|
|
export interface MCPMessage {
|
|
jsonrpc: JsonRpcVersion;
|
|
}
|
|
|
|
/**
|
|
* MCP Request
|
|
*/
|
|
export interface MCPRequest extends MCPMessage {
|
|
id: RequestId;
|
|
method: string;
|
|
params?: Record<string, unknown>;
|
|
}
|
|
|
|
/**
|
|
* MCP Notification (request without id)
|
|
*/
|
|
export interface MCPNotification extends MCPMessage {
|
|
method: string;
|
|
params?: Record<string, unknown>;
|
|
}
|
|
|
|
/**
|
|
* MCP Error
|
|
*/
|
|
export interface MCPError {
|
|
code: number;
|
|
message: string;
|
|
data?: unknown;
|
|
}
|
|
|
|
/**
|
|
* MCP Response
|
|
*/
|
|
export interface MCPResponse extends MCPMessage {
|
|
id: RequestId;
|
|
result?: unknown;
|
|
error?: MCPError;
|
|
}
|
|
|
|
// ============================================================================
|
|
// Server Configuration
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Transport type options
|
|
*/
|
|
export type TransportType = 'stdio' | 'http' | 'websocket' | 'in-process';
|
|
|
|
/**
|
|
* Authentication method
|
|
*/
|
|
export type AuthMethod = 'token' | 'oauth' | 'api-key' | 'none';
|
|
|
|
/**
|
|
* Authentication configuration
|
|
*/
|
|
export interface AuthConfig {
|
|
enabled: boolean;
|
|
method: AuthMethod;
|
|
tokens?: string[];
|
|
apiKeys?: string[];
|
|
jwtSecret?: string;
|
|
oauth?: {
|
|
clientId: string;
|
|
clientSecret: string;
|
|
authorizationUrl: string;
|
|
tokenUrl: string;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Load balancer configuration
|
|
*/
|
|
export interface LoadBalancerConfig {
|
|
enabled: boolean;
|
|
maxConcurrentRequests: number;
|
|
rateLimit?: {
|
|
requestsPerSecond: number;
|
|
burstSize: number;
|
|
};
|
|
circuitBreaker?: {
|
|
failureThreshold: number;
|
|
resetTimeout: number;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Connection pool configuration
|
|
*/
|
|
export interface ConnectionPoolConfig {
|
|
maxConnections: number;
|
|
minConnections: number;
|
|
idleTimeout: number;
|
|
acquireTimeout: number;
|
|
maxWaitingClients: number;
|
|
evictionRunInterval: number;
|
|
}
|
|
|
|
/**
|
|
* MCP Server configuration
|
|
*/
|
|
export interface MCPServerConfig {
|
|
name: string;
|
|
version: string;
|
|
transport: TransportType;
|
|
host?: string;
|
|
port?: number;
|
|
tlsEnabled?: boolean;
|
|
tlsCert?: string;
|
|
tlsKey?: string;
|
|
auth?: AuthConfig;
|
|
loadBalancer?: LoadBalancerConfig;
|
|
connectionPool?: ConnectionPoolConfig;
|
|
corsEnabled?: boolean;
|
|
corsOrigins?: string[];
|
|
maxRequestSize?: number;
|
|
requestTimeout?: number;
|
|
enableMetrics?: boolean;
|
|
enableCaching?: boolean;
|
|
cacheTTL?: number;
|
|
logLevel?: 'debug' | 'info' | 'warn' | 'error';
|
|
}
|
|
|
|
// ============================================================================
|
|
// Session Types
|
|
// ============================================================================
|
|
|
|
/**
|
|
* MCP Session state
|
|
*/
|
|
export type SessionState = 'created' | 'initializing' | 'ready' | 'closing' | 'closed' | 'error';
|
|
|
|
/**
|
|
* MCP Session
|
|
*/
|
|
export interface MCPSession {
|
|
id: string;
|
|
state: SessionState;
|
|
transport: TransportType;
|
|
createdAt: Date;
|
|
lastActivityAt: Date;
|
|
isInitialized: boolean;
|
|
isAuthenticated: boolean;
|
|
clientInfo?: MCPClientInfo;
|
|
protocolVersion?: MCPProtocolVersion;
|
|
capabilities?: MCPCapabilities;
|
|
metadata?: Record<string, unknown>;
|
|
}
|
|
|
|
/**
|
|
* Client information from initialization
|
|
*/
|
|
export interface MCPClientInfo {
|
|
name: string;
|
|
version: string;
|
|
}
|
|
|
|
// ============================================================================
|
|
// Capability Types
|
|
// ============================================================================
|
|
|
|
/**
|
|
* MCP Capabilities
|
|
*/
|
|
export interface MCPCapabilities {
|
|
logging?: {
|
|
level: 'debug' | 'info' | 'warn' | 'error';
|
|
};
|
|
tools?: {
|
|
listChanged: boolean;
|
|
};
|
|
resources?: {
|
|
listChanged: boolean;
|
|
subscribe: boolean;
|
|
};
|
|
prompts?: {
|
|
listChanged: boolean;
|
|
};
|
|
experimental?: Record<string, unknown>;
|
|
}
|
|
|
|
/**
|
|
* Initialize request parameters
|
|
*/
|
|
export interface MCPInitializeParams {
|
|
protocolVersion: MCPProtocolVersion;
|
|
capabilities: MCPCapabilities;
|
|
clientInfo: MCPClientInfo;
|
|
}
|
|
|
|
/**
|
|
* Initialize response result
|
|
*/
|
|
export interface MCPInitializeResult {
|
|
protocolVersion: MCPProtocolVersion;
|
|
capabilities: MCPCapabilities;
|
|
serverInfo: {
|
|
name: string;
|
|
version: string;
|
|
};
|
|
instructions?: string;
|
|
}
|
|
|
|
// ============================================================================
|
|
// Tool Types
|
|
// ============================================================================
|
|
|
|
/**
|
|
* JSON Schema type for tool input
|
|
*/
|
|
export interface JSONSchema {
|
|
type: string;
|
|
properties?: Record<string, JSONSchema>;
|
|
required?: string[];
|
|
items?: JSONSchema;
|
|
enum?: string[];
|
|
description?: string;
|
|
default?: unknown;
|
|
minimum?: number;
|
|
maximum?: number;
|
|
minLength?: number;
|
|
maxLength?: number;
|
|
pattern?: string;
|
|
additionalProperties?: boolean | JSONSchema;
|
|
}
|
|
|
|
/**
|
|
* Tool execution context
|
|
*/
|
|
export interface ToolContext {
|
|
sessionId: string;
|
|
requestId?: RequestId;
|
|
orchestrator?: unknown;
|
|
swarmCoordinator?: unknown;
|
|
agentManager?: unknown;
|
|
resourceManager?: unknown;
|
|
messageBus?: unknown;
|
|
monitor?: unknown;
|
|
metadata?: Record<string, unknown>;
|
|
}
|
|
|
|
/**
|
|
* Tool handler function type
|
|
*/
|
|
export type ToolHandler<TInput = unknown, TOutput = unknown> = (
|
|
input: TInput,
|
|
context?: ToolContext
|
|
) => Promise<TOutput>;
|
|
|
|
/**
|
|
* MCP Tool definition
|
|
*/
|
|
export interface MCPTool<TInput = unknown, TOutput = unknown> {
|
|
name: string;
|
|
description: string;
|
|
inputSchema: JSONSchema;
|
|
handler: ToolHandler<TInput, TOutput>;
|
|
category?: string;
|
|
tags?: string[];
|
|
version?: string;
|
|
deprecated?: boolean;
|
|
cacheable?: boolean;
|
|
cacheTTL?: number;
|
|
timeout?: number;
|
|
}
|
|
|
|
/**
|
|
* Tool call result
|
|
*/
|
|
export interface ToolCallResult {
|
|
content: Array<{
|
|
type: 'text' | 'image' | 'resource';
|
|
text?: string;
|
|
data?: string;
|
|
mimeType?: string;
|
|
}>;
|
|
isError: boolean;
|
|
}
|
|
|
|
/**
|
|
* Tool registration options
|
|
*/
|
|
export interface ToolRegistrationOptions {
|
|
override?: boolean;
|
|
validate?: boolean;
|
|
preload?: boolean;
|
|
}
|
|
|
|
// ============================================================================
|
|
// Transport Types
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Request handler function type
|
|
*/
|
|
export type RequestHandler = (request: MCPRequest) => Promise<MCPResponse>;
|
|
|
|
/**
|
|
* Notification handler function type
|
|
*/
|
|
export type NotificationHandler = (notification: MCPNotification) => Promise<void>;
|
|
|
|
/**
|
|
* Transport health status
|
|
*/
|
|
export interface TransportHealthStatus {
|
|
healthy: boolean;
|
|
error?: string;
|
|
metrics?: Record<string, number>;
|
|
}
|
|
|
|
/**
|
|
* Transport interface
|
|
*/
|
|
export interface ITransport {
|
|
readonly type: TransportType;
|
|
|
|
start(): Promise<void>;
|
|
stop(): Promise<void>;
|
|
|
|
onRequest(handler: RequestHandler): void;
|
|
onNotification(handler: NotificationHandler): void;
|
|
|
|
sendNotification?(notification: MCPNotification): Promise<void>;
|
|
|
|
getHealthStatus(): Promise<TransportHealthStatus>;
|
|
}
|
|
|
|
// ============================================================================
|
|
// Connection Pool Types
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Connection state
|
|
*/
|
|
export type ConnectionState = 'idle' | 'busy' | 'closing' | 'closed' | 'error';
|
|
|
|
/**
|
|
* Pooled connection
|
|
*/
|
|
export interface PooledConnection {
|
|
id: string;
|
|
state: ConnectionState;
|
|
createdAt: Date;
|
|
lastUsedAt: Date;
|
|
useCount: number;
|
|
transport: TransportType;
|
|
metadata?: Record<string, unknown>;
|
|
}
|
|
|
|
/**
|
|
* Connection pool statistics
|
|
*/
|
|
export interface ConnectionPoolStats {
|
|
totalConnections: number;
|
|
idleConnections: number;
|
|
busyConnections: number;
|
|
pendingRequests: number;
|
|
totalAcquired: number;
|
|
totalReleased: number;
|
|
totalCreated: number;
|
|
totalDestroyed: number;
|
|
avgAcquireTime: number;
|
|
}
|
|
|
|
/**
|
|
* Connection pool interface
|
|
*/
|
|
export interface IConnectionPool {
|
|
acquire(): Promise<PooledConnection>;
|
|
release(connection: PooledConnection): void;
|
|
destroy(connection: PooledConnection): void;
|
|
|
|
getStats(): ConnectionPoolStats;
|
|
|
|
drain(): Promise<void>;
|
|
clear(): Promise<void>;
|
|
}
|
|
|
|
// ============================================================================
|
|
// Metrics Types
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Tool call metrics
|
|
*/
|
|
export interface ToolCallMetrics {
|
|
toolName: string;
|
|
duration: number;
|
|
success: boolean;
|
|
timestamp: number;
|
|
transport: TransportType;
|
|
cached?: boolean;
|
|
}
|
|
|
|
/**
|
|
* MCP Server metrics
|
|
*/
|
|
export interface MCPServerMetrics {
|
|
totalRequests: number;
|
|
successfulRequests: number;
|
|
failedRequests: number;
|
|
averageResponseTime: number;
|
|
activeSessions: number;
|
|
toolInvocations: Record<string, number>;
|
|
errors: Record<string, number>;
|
|
lastReset: Date;
|
|
startupTime?: number;
|
|
uptime?: number;
|
|
}
|
|
|
|
/**
|
|
* Session metrics
|
|
*/
|
|
export interface SessionMetrics {
|
|
total: number;
|
|
active: number;
|
|
authenticated: number;
|
|
expired: number;
|
|
}
|
|
|
|
// ============================================================================
|
|
// Event Types
|
|
// ============================================================================
|
|
|
|
/**
|
|
* MCP Event types
|
|
*/
|
|
export type MCPEventType =
|
|
| 'server:started'
|
|
| 'server:stopped'
|
|
| 'server:error'
|
|
| 'session:created'
|
|
| 'session:initialized'
|
|
| 'session:closed'
|
|
| 'session:error'
|
|
| 'tool:registered'
|
|
| 'tool:unregistered'
|
|
| 'tool:called'
|
|
| 'tool:completed'
|
|
| 'tool:error'
|
|
| 'transport:connected'
|
|
| 'transport:disconnected'
|
|
| 'transport:error'
|
|
| 'pool:connection:acquired'
|
|
| 'pool:connection:released'
|
|
| 'pool:connection:created'
|
|
| 'pool:connection:destroyed';
|
|
|
|
/**
|
|
* MCP Event
|
|
*/
|
|
export interface MCPEvent {
|
|
type: MCPEventType;
|
|
timestamp: Date;
|
|
data?: unknown;
|
|
}
|
|
|
|
/**
|
|
* Event handler function type
|
|
*/
|
|
export type EventHandler = (event: MCPEvent) => void;
|
|
|
|
// ============================================================================
|
|
// Logger Interface
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Log level
|
|
*/
|
|
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
|
|
/**
|
|
* Logger interface
|
|
*/
|
|
export interface ILogger {
|
|
debug(message: string, data?: unknown): void;
|
|
info(message: string, data?: unknown): void;
|
|
warn(message: string, data?: unknown): void;
|
|
error(message: string, data?: unknown): void;
|
|
}
|
|
|
|
// ============================================================================
|
|
// Error Codes
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Standard JSON-RPC error codes
|
|
*/
|
|
export const ErrorCodes = {
|
|
PARSE_ERROR: -32700,
|
|
INVALID_REQUEST: -32600,
|
|
METHOD_NOT_FOUND: -32601,
|
|
INVALID_PARAMS: -32602,
|
|
INTERNAL_ERROR: -32603,
|
|
SERVER_NOT_INITIALIZED: -32002,
|
|
UNKNOWN_ERROR: -32001,
|
|
REQUEST_CANCELLED: -32800,
|
|
RATE_LIMITED: -32000,
|
|
AUTHENTICATION_REQUIRED: -32001,
|
|
AUTHORIZATION_FAILED: -32002,
|
|
} as const;
|
|
|
|
/**
|
|
* MCP Error class
|
|
*/
|
|
export class MCPServerError extends Error {
|
|
constructor(
|
|
message: string,
|
|
public code: number = ErrorCodes.INTERNAL_ERROR,
|
|
public data?: unknown
|
|
) {
|
|
super(message);
|
|
this.name = 'MCPServerError';
|
|
}
|
|
|
|
toMCPError(): MCPError {
|
|
return {
|
|
code: this.code,
|
|
message: this.message,
|
|
data: this.data,
|
|
};
|
|
}
|
|
}
|