UNPKG

jinko-mcp-dev

Version:

MCP server for Jinko Travel BFF

62 lines (61 loc) 1.86 kB
export class TelemetryMiddleware { metrics; constructor(metrics) { this.metrics = metrics; } /** * Wrap a tool function with metrics collection */ instrumentTool(toolName, toolFunction) { return (async (...args) => { const startTime = Date.now(); try { const result = await toolFunction.apply(this, args); const duration = (Date.now() - startTime) / 1000; this.metrics.recordToolCall(toolName, duration, 'success'); return result; } catch (error) { const duration = (Date.now() - startTime) / 1000; this.metrics.recordToolCall(toolName, duration, 'error'); throw error; } }); } /** * Create a tool execution context for manual instrumentation */ createToolContext(toolName, params) { return { toolName, params, startTime: Date.now(), }; } /** * Complete a tool execution context */ completeToolContext(context, result, error) { const duration = (Date.now() - context.startTime) / 1000; const status = error ? 'error' : 'success'; this.metrics.recordToolCall(context.toolName, duration, status); } /** * Record API call metrics */ recordApiCall(endpoint, method, duration, status) { this.metrics.recordApiCall(endpoint, method, duration, status); } /** * Record hotel search results count */ recordHotelSearchResults(hotelCount) { this.metrics.recordHotelSearchResults(hotelCount); } /** * Record hotel search call with detailed labels */ recordHotelSearchCall(params) { this.metrics.recordHotelSearchCall(params); } }