/** * @name tools/tool-execution-pipeline * @description Opt-in execution pipeline for modular SAP MCP tools and trusted plugins. * * The compatibility layer still owns MCP transport normalization, allow-list, * private-key guards, policy checks, and metrics. This module gives individual * tool families a shared way to parse input, return structured success/error * envelopes, and attach execution metadata without repeating try/catch blocks. * * @module tools/tool-execution-pipeline */ import type { Server } from '@modelcontextprotocol/sdk/server/index.js'; import type { ToolAnnotations } from '@modelcontextprotocol/sdk/types.js'; import type { SapMcpContext } from '../../core/src/types.js'; import type { UiCardContext } from '../../ui-cards/src/ui-resources.js'; import { type ToolExecutionMetadata } from './tool-execution-metadata.js'; export interface SafeParseSuccess { readonly success: true; readonly data: TInput; } export interface SafeParseFailure { readonly success: false; readonly error: unknown; } export interface ToolInputParser { readonly safeParse: (input: unknown) => SafeParseSuccess | SafeParseFailure; } export interface ToolExecutionPipelineInput { readonly rawInput: unknown; readonly input: TInput; readonly context: SapMcpContext; readonly metadata: ToolExecutionMetadata; } export interface ToolExecutionPipelineResult> { readonly data: TOutput; readonly metadata?: Record; readonly isError?: boolean; readonly pipelineResult?: true; } export interface ToolExecutionPipelineDefinition> { readonly name: string; readonly title?: string; readonly description: string; readonly inputSchema: ToolInputParser | Record; readonly outputSchema?: Record; readonly annotations?: ToolAnnotations; readonly _meta?: Record; readonly responseMode?: 'envelope' | 'data'; readonly uiCard?: (result: ToolExecutionPipelineResult, input: ToolExecutionPipelineInput) => UiCardContext | undefined; readonly execute: (input: ToolExecutionPipelineInput) => Promise>; } export interface ToolExecutionEnvelope = Record> { readonly [key: string]: unknown; readonly success: boolean; readonly toolName: string; readonly data?: TOutput; readonly metadata: { readonly intent: ToolExecutionMetadata['intent']; readonly paymentTier: ToolExecutionMetadata['paymentTier']; readonly writeOperation: boolean; readonly hostedAccountlessBlocked: boolean; readonly signerBoundary: string; } & Record; readonly error?: { readonly code: string; readonly message: string; readonly details?: unknown; }; } /** * @name createToolExecutionResult * @description Marks an execution result as an explicit pipeline result wrapper. */ export declare function createToolExecutionResult>(data: TOutput, metadata?: Record, options?: { readonly isError?: boolean; }): ToolExecutionPipelineResult; /** * @name createToolExecutionEnvelope * @description Builds the structured success envelope returned by pipeline tools. */ export declare function createToolExecutionEnvelope>(toolName: string, data: TOutput, metadata: ToolExecutionMetadata, extraMetadata?: Record): ToolExecutionEnvelope; /** * @name createToolExecutionErrorEnvelope * @description Builds a structured application-level error envelope for pipeline tools. */ export declare function createToolExecutionErrorEnvelope(toolName: string, metadata: ToolExecutionMetadata, code: string, message: string, details?: unknown): ToolExecutionEnvelope; /** * @name registerPipelineTool * @description Registers a modular tool with shared input validation and response envelopes. */ export declare function registerPipelineTool>(server: Server, context: SapMcpContext, definition: ToolExecutionPipelineDefinition): void; //# sourceMappingURL=tool-execution-pipeline.d.ts.map