Skip to main content
Glama
handler.interface.ts2.48 kB
/** * @fileoverview Base handler interfaces and types for standardized handler patterns * @packageDocumentation */ import { DeepSourceClientFactory } from '../../client/factory.js'; import { Logger } from '../../utils/logging/logger.js'; import { ApiResponse } from '../../models/common.js'; /** * Base dependencies that all handlers require */ export interface BaseHandlerDeps { /** Factory for creating DeepSource API clients */ clientFactory: DeepSourceClientFactory; /** Logger instance for the handler */ logger: Logger; /** Function to retrieve the API key */ getApiKey: () => string; } /** * Generic handler function type * @template TParams - The input parameters type * @template TResult - The result type (defaults to ApiResponse) */ export type HandlerFunction<TParams = unknown, TResult = ApiResponse> = TParams extends undefined ? () => Promise<TResult> : (params: TParams) => Promise<TResult>; /** * Factory function type for creating handlers with dependencies * @template TDeps - The dependencies type (extends BaseHandlerDeps) * @template TParams - The handler parameters type * @template TResult - The handler result type */ export type HandlerFactory< TDeps extends BaseHandlerDeps = BaseHandlerDeps, TParams = unknown, TResult = ApiResponse, > = (deps: TDeps) => HandlerFunction<TParams, TResult>; /** * Handler configuration for registration */ export interface HandlerConfig<TParams = unknown> { /** The name of the handler/tool */ name: string; /** Factory function to create the handler */ factory: HandlerFactory<BaseHandlerDeps, TParams>; /** Optional custom dependencies (will be merged with base deps) */ customDeps?: Partial<BaseHandlerDeps>; } /** * Result type for handlers that return structured data */ export interface HandlerResult<T> { /** The structured data */ data: T; /** Optional metadata about the result */ metadata?: { /** Total count of items (for paginated results) */ totalCount?: number; /** Whether there are more pages */ hasMore?: boolean; /** Cursor for next page */ nextCursor?: string; }; } /** * Error result type for standardized error handling */ export interface HandlerError { /** Error code for categorization */ code: string; /** Human-readable error message */ message: string; /** Additional error details */ details?: Record<string, unknown>; /** Suggested actions for resolution */ suggestions?: string[]; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sapientpants/deepsource-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server