UNPKG

@juspay/neurolink

Version:

Universal AI Development Platform with working MCP integration, multi-provider support, voice (TTS/STT/realtime), and professional CLI. 58+ external MCP servers discoverable, multimodal file processing, RAG pipelines. Build, test, and deploy AI applicatio

140 lines (139 loc) 4.63 kB
/** * MCP Elicitation Protocol * * Protocol-level interface for the MCP elicitation system that enables * tools to request interactive user input during execution. * * This module provides: * - Protocol message types for MCP elicitation requests/responses * - Protocol-level handlers for different transport types * - Utility functions for protocol message construction * - Integration with the ElicitationManager * * Implements MCP 2024-11-05 elicitation specification. * * @module mcp/elicitationProtocol * @since 8.39.0 */ import type { ElicitationCancelMessage, ElicitationProtocolAdapterConfig, ElicitationProtocolPayload, ElicitationRequestMessage, ElicitationRequestParams, ElicitationResponseMessage, ElicitationResponseParams, Elicitation, ElicitationResponse, ElicitationHandler, FormField, SelectOption } from "../types/index.js"; import { ElicitationManager } from "./elicitation/elicitationManager.js"; /** * Create an elicitation request protocol message */ export declare function createElicitationRequest(params: ElicitationRequestParams): ElicitationRequestMessage; /** * Create an elicitation response protocol message */ export declare function createElicitationResponse(requestId: string, response: Omit<ElicitationResponseParams, "requestId">): ElicitationResponseMessage; /** * Create an elicitation cancel protocol message */ export declare function createElicitationCancel(requestId: string, reason?: string): ElicitationCancelMessage; /** * Check if a message is an elicitation protocol message */ export declare function isElicitationProtocolMessage(message: unknown): message is ElicitationProtocolPayload; /** * Convert protocol message to Elicitation type */ export declare function protocolMessageToElicitation(message: ElicitationRequestMessage): Elicitation; /** * Convert ElicitationResponse to protocol message */ export declare function elicitationResponseToProtocol(response: ElicitationResponse): ElicitationResponseMessage; /** * Elicitation Protocol Adapter * * Bridges protocol-level messages with the ElicitationManager */ export declare class ElicitationProtocolAdapter { private manager; private config; constructor(config?: ElicitationProtocolAdapterConfig); /** * Handle incoming protocol message */ handleMessage(message: ElicitationProtocolPayload): Promise<ElicitationProtocolPayload | void>; /** * Handle elicitation request */ private handleRequest; /** * Handle elicitation response (for external responses) */ private handleResponse; /** * Handle elicitation cancel */ private handleCancel; /** * Send an elicitation request through the protocol */ requestElicitation(params: ElicitationRequestParams): Promise<ElicitationResponse>; /** * Cancel a pending elicitation */ cancelElicitation(requestId: string, reason?: string): void; /** * Get the underlying manager */ getManager(): ElicitationManager; /** * Set protocol handler for the manager */ setHandler(handler: ElicitationHandler): void; /** * Enable/disable the protocol */ setEnabled(enabled: boolean): void; /** * Check if protocol is enabled */ isEnabled(): boolean; } /** * Create protocol-compliant confirmation request */ export declare function createConfirmationRequest(message: string, options: { toolName: string; serverId?: string; confirmLabel?: string; cancelLabel?: string; timeout?: number; }): ElicitationRequestMessage; /** * Create protocol-compliant text input request */ export declare function createTextInputRequest(message: string, options: { toolName: string; serverId?: string; placeholder?: string; defaultValue?: string; minLength?: number; maxLength?: number; pattern?: string; multiline?: boolean; timeout?: number; }): ElicitationRequestMessage; /** * Create protocol-compliant select request */ export declare function createSelectRequest(message: string, selectOptions: SelectOption[], options: { toolName: string; serverId?: string; defaultValue?: string; timeout?: number; }): ElicitationRequestMessage; /** * Create protocol-compliant form request */ export declare function createFormRequest(message: string, fields: FormField[], options: { toolName: string; serverId?: string; submitLabel?: string; timeout?: number; }): ElicitationRequestMessage; /** * Global protocol adapter instance */ export declare const globalElicitationProtocol: ElicitationProtocolAdapter;