@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
TypeScript
/**
* 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;