opentool 0.19.2 → 0.19.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/index.d.ts +3 -14
- package/dist/index.js +124 -437
- package/dist/index.js.map +1 -1
- package/dist/runtime/index.d.ts +16 -0
- package/dist/runtime/index.js +804 -0
- package/dist/runtime/index.js.map +1 -0
- package/package.json +5 -1
- package/templates/base/package.json +1 -1
- package/templates/polymarket-simple-trade/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/x402/types.ts","../../src/x402/helpers.ts","../../src/x402/payment.ts","../../src/adapters/mcp.ts","../../src/runtime/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from \"zod\";\n\nexport const X402_VERSION = 1;\nexport const HEADER_X402 = \"X-PAYMENT\";\nexport const HEADER_PAYMENT_RESPONSE = \"X-PAYMENT-RESPONSE\";\n\nexport const x402RequirementSchema = z.object({\n scheme: z.string().min(1),\n network: z.string().min(1),\n maxAmountRequired: z.string().min(1),\n asset: z.string().min(1),\n payTo: z.string().min(1),\n resource: z.string().optional(),\n description: z.string().optional(),\n mimeType: z.string().optional(),\n outputSchema: z.unknown().optional(),\n maxTimeoutSeconds: z.number().int().positive().optional(),\n extra: z.record(z.string(), z.unknown()).nullable().optional(),\n});\n\nexport type X402Requirement = z.infer<typeof x402RequirementSchema>;\n\nexport const x402PaymentHeaderSchema = z.object({\n x402Version: z.number().int().positive(),\n scheme: z.string().min(1),\n network: z.string().min(1),\n correlationId: z.string().optional(),\n payload: z.unknown(),\n});\n\nexport type X402PaymentHeader = z.infer<typeof x402PaymentHeaderSchema>;\n\nexport interface X402RequirementsResponse {\n x402Version: number;\n error?: string;\n accepts: X402Requirement[];\n}\n\nexport interface X402PaymentAttempt {\n type: \"x402\";\n headerName: typeof HEADER_X402;\n raw: string;\n payload: X402PaymentHeader;\n}\n\nexport interface X402VerificationResult {\n success: boolean;\n metadata?: {\n optionId: string;\n verifier: string;\n [key: string]: unknown;\n };\n failure?: {\n reason: string;\n code: string;\n };\n responseHeaders?: Record<string, string>;\n}\n\nexport interface X402FacilitatorConfig {\n url: string;\n verifyPath?: string;\n settlePath?: string;\n apiKeyHeader?: string;\n}\n\nexport interface CurrencySpec {\n decimals: number;\n symbol: string;\n network: string;\n assetAddress: string;\n}\n\nexport const SUPPORTED_CURRENCIES: Record<string, CurrencySpec> = {\n USDC: {\n decimals: 6,\n symbol: \"USDC\",\n network: \"base\",\n assetAddress: \"0x833589fCD6eDb6E08f4c7C37b7b4c6e997E08A43\",\n },\n};\n\nexport const DEFAULT_FACILITATOR: X402FacilitatorConfig = {\n url: \"https://facilitator.x402.rs\",\n verifyPath: \"/verify\",\n settlePath: \"/settle\",\n apiKeyHeader: \"Authorization\",\n};\n","import { z } from \"zod\";\nimport {\n HEADER_X402,\n HEADER_PAYMENT_RESPONSE,\n X402_VERSION,\n x402PaymentHeaderSchema,\n x402RequirementSchema,\n type X402PaymentAttempt,\n type X402Requirement,\n type X402VerificationResult,\n type X402FacilitatorConfig,\n} from \"./types\";\n\nexport interface X402PaymentDefinition {\n amount: string;\n currency: { code: string; symbol: string; decimals: number };\n asset: { symbol: string; network: string; address: string; decimals: number };\n payTo: string;\n resource?: string;\n description?: string;\n scheme: string;\n network: string;\n facilitator: X402FacilitatorConfig;\n metadata?: Record<string, unknown>;\n}\n\nexport function createX402PaymentRequired(definition: X402PaymentDefinition): Response {\n const requirement = toX402Requirement(definition);\n\n // Build full payment requirements response\n const body = {\n schemaVersion: 1,\n message: definition.description ?? \"Payment required\",\n resource: definition.resource,\n accepts: [\n {\n id: \"x402\",\n title: `Pay ${definition.amount} ${definition.currency.code}`,\n description: definition.description,\n amount: {\n value: definition.amount,\n currency: {\n code: definition.currency.code,\n symbol: definition.currency.symbol,\n decimals: definition.currency.decimals,\n kind: \"crypto\",\n },\n },\n asset: {\n symbol: definition.asset.symbol,\n network: definition.asset.network,\n address: definition.asset.address,\n decimals: definition.asset.decimals,\n standard: \"erc20\",\n },\n payTo: definition.payTo,\n resource: definition.resource,\n proof: {\n mode: \"x402\",\n scheme: definition.scheme,\n network: definition.network,\n version: X402_VERSION,\n facilitator: definition.facilitator,\n verifier: \"x402:facilitator\",\n },\n },\n ],\n metadata: definition.metadata ?? {},\n x402: {\n x402Version: X402_VERSION,\n error: definition.description ?? \"Payment required\",\n accepts: [requirement],\n },\n };\n\n return new Response(JSON.stringify(body), {\n status: 402,\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n}\n\nexport function extractX402Attempt(request: Request): X402PaymentAttempt | null {\n const raw = request.headers.get(HEADER_X402);\n if (!raw) {\n return null;\n }\n\n try {\n const payload = decodeJson(raw, x402PaymentHeaderSchema);\n return {\n type: \"x402\",\n headerName: HEADER_X402,\n raw,\n payload,\n };\n } catch {\n return null;\n }\n}\n\nexport async function verifyX402Payment(\n attempt: X402PaymentAttempt,\n definition: X402PaymentDefinition,\n options: {\n settle?: boolean;\n fetchImpl?: typeof fetch;\n timeout?: number;\n } = {},\n): Promise<X402VerificationResult> {\n const fetchImpl = options.fetchImpl ?? fetch;\n const timeout = options.timeout ?? 25000; // 25 second default timeout\n const facilitator = definition.facilitator;\n\n const verifierUrl = new URL(\n facilitator.verifyPath ?? \"/verify\",\n ensureTrailingSlash(facilitator.url),\n ).toString();\n\n const requirement = toX402Requirement(definition);\n const headers = buildFacilitatorHeaders(facilitator);\n\n try {\n const verifyBody = {\n x402Version: attempt.payload.x402Version,\n paymentPayload: attempt.payload,\n paymentRequirements: requirement,\n };\n console.log(\"[x402] Calling facilitator /verify\", {\n url: verifierUrl,\n fullBody: JSON.stringify(verifyBody, null, 2),\n });\n const verifyResponse = await Promise.race([\n fetchImpl(verifierUrl, {\n method: \"POST\",\n headers,\n body: JSON.stringify(verifyBody),\n }),\n new Promise<never>((_, reject) =>\n setTimeout(() => reject(new Error(`Verification timeout after ${timeout}ms`)), timeout),\n ),\n ]);\n console.log(\"[x402] Facilitator /verify response\", { status: verifyResponse.status });\n\n if (!verifyResponse.ok) {\n const errorText = await verifyResponse.text().catch(() => \"\");\n console.error(\"[x402] Facilitator /verify error\", {\n status: verifyResponse.status,\n body: errorText,\n });\n return {\n success: false,\n failure: {\n reason: `Facilitator verify request failed: ${verifyResponse.status}${errorText ? ` - ${errorText}` : \"\"}`,\n code: \"verification_failed\",\n },\n };\n }\n\n const verifyPayload = (await verifyResponse.json()) as {\n isValid: boolean;\n invalidReason?: string | null;\n };\n\n if (!verifyPayload.isValid) {\n return {\n success: false,\n failure: {\n reason: verifyPayload.invalidReason ?? \"Facilitator verification failed\",\n code: \"verification_failed\",\n },\n };\n }\n\n const responseHeaders: Record<string, string> = {};\n if (options.settle) {\n const settleUrl = new URL(\n facilitator.settlePath ?? \"/settle\",\n ensureTrailingSlash(facilitator.url),\n ).toString();\n\n try {\n const settleBody = {\n x402Version: attempt.payload.x402Version,\n paymentPayload: attempt.payload,\n paymentRequirements: requirement,\n };\n console.log(\"[x402] Calling facilitator /settle\", {\n url: settleUrl,\n bodyPreview: JSON.stringify(settleBody).substring(0, 300),\n });\n const settleResponse = await Promise.race([\n fetchImpl(settleUrl, {\n method: \"POST\",\n headers,\n body: JSON.stringify(settleBody),\n }),\n new Promise<never>((_, reject) =>\n setTimeout(() => reject(new Error(`Settlement timeout after ${timeout}ms`)), timeout),\n ),\n ]);\n console.log(\"[x402] Facilitator /settle response\", { status: settleResponse.status });\n\n if (!settleResponse.ok) {\n const errorText = await settleResponse.text().catch(() => \"\");\n console.error(\"[x402] Facilitator /settle error\", {\n status: settleResponse.status,\n body: errorText,\n });\n return {\n success: false,\n failure: {\n reason: `Facilitator settlement failed: ${settleResponse.status}${errorText ? ` - ${errorText}` : \"\"}`,\n code: \"settlement_failed\",\n },\n };\n }\n\n const settlePayload = (await settleResponse.json()) as {\n txHash?: string;\n [key: string]: unknown;\n };\n console.log(\"[x402] Facilitator /settle success\", { txHash: settlePayload.txHash });\n if (settlePayload.txHash) {\n responseHeaders[HEADER_PAYMENT_RESPONSE] = JSON.stringify({\n settled: true,\n txHash: settlePayload.txHash,\n });\n }\n } catch (error) {\n console.error(\"[x402] Settlement exception\", {\n error: error instanceof Error ? error.message : String(error),\n });\n return {\n success: false,\n failure: {\n reason: error instanceof Error ? error.message : \"Settlement failed\",\n code: \"settlement_failed\",\n },\n };\n }\n }\n\n const result: X402VerificationResult = {\n success: true,\n metadata: {\n optionId: \"x402\",\n verifier: \"x402:facilitator\",\n amount: definition.amount,\n currency: definition.currency.code,\n network: definition.network,\n },\n };\n\n if (Object.keys(responseHeaders).length > 0) {\n result.responseHeaders = responseHeaders;\n }\n\n return result;\n } catch (error) {\n return {\n success: false,\n failure: {\n reason: error instanceof Error ? error.message : \"Unknown error\",\n code: \"verification_failed\",\n },\n };\n }\n}\n\nfunction toX402Requirement(definition: X402PaymentDefinition): X402Requirement {\n const decimals = definition.asset.decimals;\n const units = decimalToBaseUnits(definition.amount, decimals);\n\n return x402RequirementSchema.parse({\n scheme: definition.scheme,\n network: definition.network,\n maxAmountRequired: units,\n asset: definition.asset.address,\n payTo: definition.payTo,\n resource: definition.resource,\n description: definition.description,\n mimeType: \"application/json\",\n maxTimeoutSeconds: 900,\n extra: {\n symbol: definition.asset.symbol,\n currencyCode: definition.currency.code,\n decimals,\n },\n });\n}\n\nfunction decimalToBaseUnits(value: string, decimals: number): string {\n const [whole, fraction = \"\"] = value.split(\".\");\n const sanitizedFraction = fraction.slice(0, decimals);\n const paddedFraction = sanitizedFraction.padEnd(decimals, \"0\");\n const combined = `${whole}${paddedFraction}`.replace(/^0+/, \"\");\n return combined.length > 0 ? combined : \"0\";\n}\n\nfunction decodeJson<T>(value: string, schema: z.ZodSchema<T>): T {\n const base64 = normalizeBase64(value);\n const json = Buffer.from(base64, \"base64\").toString(\"utf-8\");\n const parsed = JSON.parse(json);\n return schema.parse(parsed);\n}\n\nfunction normalizeBase64(input: string): string {\n if (/^[A-Za-z0-9+/=]+$/.test(input)) {\n return input;\n }\n const restored = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const paddingNeeded = (4 - (restored.length % 4)) % 4;\n return restored + \"=\".repeat(paddingNeeded);\n}\n\nfunction buildFacilitatorHeaders(facilitator: X402FacilitatorConfig): Record<string, string> {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n if (facilitator.apiKeyHeader && process.env.X402_FACILITATOR_API_KEY) {\n headers[facilitator.apiKeyHeader] = process.env.X402_FACILITATOR_API_KEY;\n }\n return headers;\n}\n\nfunction ensureTrailingSlash(url: string): string {\n return url.endsWith(\"/\") ? url : `${url}/`;\n}\n\nexport const PAYMENT_HEADERS = [HEADER_X402, HEADER_PAYMENT_RESPONSE] as const;\n","import {\n createX402PaymentRequired,\n extractX402Attempt,\n verifyX402Payment,\n PAYMENT_HEADERS,\n type X402PaymentDefinition,\n} from \"./helpers\";\nimport {\n SUPPORTED_CURRENCIES,\n DEFAULT_FACILITATOR,\n type X402FacilitatorConfig,\n type X402VerificationResult,\n type CurrencySpec,\n} from \"./types\";\n\nexport interface DefineX402PaymentConfig {\n amount: string | number;\n payTo: string;\n currency?: string;\n message?: string;\n resource?: string;\n network?: string;\n assetAddress?: string;\n scheme?: \"exact\" | \"bounded\";\n facilitator?: string | X402FacilitatorConfig;\n metadata?: Record<string, unknown>;\n}\n\nexport interface X402Payment {\n definition: X402PaymentDefinition;\n metadata?: Record<string, unknown>;\n}\n\nexport interface RequireX402PaymentOptions {\n settle?: boolean;\n fetchImpl?: typeof fetch;\n onFailure?: (result: X402VerificationResult) => Response;\n}\n\nexport interface RequireX402PaymentSuccess {\n payment: {\n optionId: string;\n verifier: string;\n amount: string;\n currency: string;\n network: string;\n };\n headers: Record<string, string>;\n result: X402VerificationResult;\n}\n\nexport type RequireX402PaymentOutcome = Response | RequireX402PaymentSuccess;\n\nconst PAYMENT_CONTEXT_SYMBOL = Symbol.for(\"opentool.x402.context\");\n\nexport class X402PaymentRequiredError extends Error {\n readonly response: Response;\n readonly verification: X402VerificationResult | undefined;\n\n constructor(response: Response, verification?: X402VerificationResult) {\n super(\"X402 Payment required\");\n this.name = \"X402PaymentRequiredError\";\n this.response = response;\n this.verification = verification;\n }\n}\n\nexport type X402PaymentContext = RequireX402PaymentSuccess;\n\nfunction setPaymentContext(request: Request, context: X402PaymentContext): void {\n try {\n Object.defineProperty(request, PAYMENT_CONTEXT_SYMBOL, {\n value: context,\n configurable: true,\n enumerable: false,\n writable: true,\n });\n } catch {\n (request as any)[PAYMENT_CONTEXT_SYMBOL] = context;\n }\n}\n\nexport function getX402PaymentContext(request: Request): X402PaymentContext | undefined {\n return (request as any)[PAYMENT_CONTEXT_SYMBOL];\n}\n\nexport function defineX402Payment(config: DefineX402PaymentConfig): X402Payment {\n const currencyCode = normalizeCurrency(config.currency);\n const currencySpec = SUPPORTED_CURRENCIES[currencyCode];\n\n if (!currencySpec) {\n throw new Error(`Unsupported currency for x402 payments: ${currencyCode}`);\n }\n\n const network = config.network ?? currencySpec.network;\n const assetAddress = config.assetAddress ?? currencySpec.assetAddress;\n\n if (!network || !assetAddress) {\n throw new Error(\n \"x402 payments require a network and assetAddress; supply them or choose a supported currency.\",\n );\n }\n\n const facilitator = resolveFacilitator(config.facilitator);\n const value = toDecimalString(config.amount);\n\n const definition: X402PaymentDefinition = {\n amount: value,\n currency: {\n code: currencyCode,\n symbol: currencySpec.symbol,\n decimals: currencySpec.decimals,\n },\n asset: {\n symbol: currencySpec.symbol,\n network,\n address: assetAddress,\n decimals: currencySpec.decimals,\n },\n payTo: config.payTo,\n scheme: config.scheme ?? \"exact\",\n network,\n facilitator,\n };\n\n if (config.resource) {\n definition.resource = config.resource;\n }\n if (config.message) {\n definition.description = config.message;\n }\n if (config.metadata) {\n definition.metadata = config.metadata;\n }\n\n const baseMetadata: Record<string, unknown> = {\n amountUSDC: currencyCode === \"USDC\" ? Number(value) : undefined,\n facilitator: \"x402rs\",\n network,\n };\n\n const metadata = config.metadata ? { ...baseMetadata, ...config.metadata } : baseMetadata;\n\n return {\n definition,\n metadata,\n };\n}\n\nexport async function requireX402Payment(\n request: Request,\n payment: X402Payment | X402PaymentDefinition,\n options: RequireX402PaymentOptions = {},\n): Promise<RequireX402PaymentOutcome> {\n const definition = isX402Payment(payment) ? payment.definition : payment;\n\n const attempt = extractX402Attempt(request);\n if (!attempt) {\n const response = createX402PaymentRequired(definition);\n throw new X402PaymentRequiredError(response);\n }\n\n const verifyOptions: Parameters<typeof verifyX402Payment>[2] = {\n settle: options.settle !== undefined ? options.settle : true,\n };\n if (options.fetchImpl !== undefined) {\n verifyOptions.fetchImpl = options.fetchImpl;\n }\n\n const verification = await verifyX402Payment(attempt, definition, verifyOptions);\n\n if (!verification.success || !verification.metadata) {\n if (options.onFailure) {\n return options.onFailure(verification);\n }\n const response = createX402PaymentRequired(definition);\n throw new X402PaymentRequiredError(response, verification);\n }\n\n return {\n payment: verification.metadata as {\n optionId: string;\n verifier: string;\n amount: string;\n currency: string;\n network: string;\n },\n headers: verification.responseHeaders ?? {},\n result: verification,\n };\n}\n\nexport function withX402Payment(\n handler: (request: Request) => Promise<Response> | Response,\n payment: X402Payment | X402PaymentDefinition,\n options: RequireX402PaymentOptions = {},\n): (request: Request) => Promise<Response> {\n return async (request: Request): Promise<Response> => {\n const verification = await requireX402Payment(request, payment, options);\n if (verification instanceof Response) {\n return verification;\n }\n\n setPaymentContext(request, verification);\n\n const response = await Promise.resolve(handler(request));\n return applyPaymentHeaders(response, verification.headers);\n };\n}\n\nfunction applyPaymentHeaders(response: Response, headers: Record<string, string>): Response {\n const entries = Object.entries(headers ?? {});\n if (entries.length === 0) {\n return response;\n }\n\n let mutated = false;\n const merged = new Headers(response.headers);\n for (const [key, value] of entries) {\n if (!merged.has(key)) {\n merged.set(key, value);\n mutated = true;\n }\n }\n\n if (!mutated) {\n return response;\n }\n\n return new Response(response.body, {\n status: response.status,\n statusText: response.statusText,\n headers: merged,\n });\n}\n\nfunction isX402Payment(value: unknown): value is X402Payment {\n return (\n !!value &&\n typeof value === \"object\" &&\n \"definition\" in value &&\n (value as X402Payment).definition !== undefined\n );\n}\n\nfunction resolveFacilitator(\n value: string | X402FacilitatorConfig | undefined,\n): X402FacilitatorConfig {\n if (!value) {\n return DEFAULT_FACILITATOR;\n }\n if (typeof value === \"string\") {\n return { ...DEFAULT_FACILITATOR, url: value };\n }\n return value;\n}\n\nfunction normalizeCurrency(currency?: string): string {\n return (currency ?? \"USDC\").toUpperCase();\n}\n\nfunction toDecimalString(value: string | number): string {\n return typeof value === \"number\" ? value.toString() : value;\n}\n\nexport { PAYMENT_HEADERS };\nexport type { X402PaymentDefinition, X402VerificationResult, X402FacilitatorConfig, CurrencySpec };\nexport { SUPPORTED_CURRENCIES, DEFAULT_FACILITATOR };\n","import { z, type ZodSchema } from \"zod\";\nimport { X402PaymentRequiredError } from \"../x402/payment\";\nimport type { ToolResponse } from \"../types/index\";\n\nexport const HTTP_METHODS = [\"GET\", \"HEAD\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"OPTIONS\"] as const;\n\nexport type HttpMethod = (typeof HTTP_METHODS)[number];\n\nexport interface CreateMcpAdapterOptions {\n name: string;\n schema?: ZodSchema;\n httpHandlers: Record<string, ((request: Request) => Promise<Response> | Response) | undefined>;\n defaultMethod?: string;\n}\n\n/**\n * Create an adapter that bridges MCP `call_tool` invocations to Web Standard handlers.\n */\nexport function createMcpAdapter(options: CreateMcpAdapterOptions) {\n const normalizedSchema = ensureSchema(options.schema);\n const defaultMethod = resolveDefaultMethod(options);\n const httpHandler = options.httpHandlers[defaultMethod];\n\n if (!httpHandler) {\n throw new Error(`Tool \"${options.name}\" does not export an HTTP handler for ${defaultMethod}`);\n }\n\n return async function invoke(rawArguments: unknown): Promise<ToolResponse> {\n const validated = normalizedSchema ? normalizedSchema.parse(rawArguments ?? {}) : rawArguments;\n\n const request = buildRequest(options.name, defaultMethod, validated);\n try {\n const response = await Promise.resolve(httpHandler(request));\n return await responseToToolResponse(response);\n } catch (error) {\n if (error instanceof X402PaymentRequiredError) {\n return await responseToToolResponse(error.response);\n }\n throw error;\n }\n };\n}\n\nfunction resolveDefaultMethod(options: CreateMcpAdapterOptions): HttpMethod {\n const explicit = options.defaultMethod?.toUpperCase();\n if (explicit && typeof options.httpHandlers[explicit] === \"function\") {\n return explicit as HttpMethod;\n }\n\n const preferredOrder: HttpMethod[] = [\"POST\", \"PUT\", \"PATCH\", \"GET\", \"DELETE\", \"OPTIONS\", \"HEAD\"];\n for (const method of preferredOrder) {\n if (typeof options.httpHandlers[method] === \"function\") {\n return method;\n }\n }\n\n const available = Object.keys(options.httpHandlers).filter(\n (method) => typeof options.httpHandlers[method] === \"function\",\n );\n if (available.length > 0) {\n return available[0] as HttpMethod;\n }\n\n throw new Error(`No HTTP handlers available for tool \"${options.name}\"`);\n}\n\nfunction ensureSchema(schema: ZodSchema | undefined): ZodSchema | undefined {\n if (!schema) {\n return undefined;\n }\n\n if (schema instanceof z.ZodType) {\n return schema;\n }\n\n if (typeof (schema as any)?.parse === \"function\") {\n return schema;\n }\n\n throw new Error(\"MCP adapter requires a valid Zod schema to validate arguments\");\n}\n\nfunction buildRequest(name: string, method: string, params: unknown): Request {\n const url = new URL(`https://opentool.local/${encodeURIComponent(name)}`);\n\n const headers = new Headers({\n \"x-opentool-invocation\": \"mcp\",\n \"x-opentool-tool\": name,\n });\n\n if (method === \"GET\" || method === \"HEAD\") {\n if (params && typeof params === \"object\") {\n Object.entries(params as Record<string, unknown>).forEach(([key, value]) => {\n if (value == null) {\n return;\n }\n url.searchParams.set(key, String(value));\n });\n }\n return new Request(url, { method, headers });\n }\n\n headers.set(\"Content-Type\", \"application/json\");\n const init: RequestInit = { method, headers };\n if (params != null) {\n init.body = JSON.stringify(params);\n }\n return new Request(url, init);\n}\n\nexport async function responseToToolResponse(response: Response): Promise<ToolResponse> {\n const statusIsError = response.status >= 400;\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n const text = await response.text();\n\n if (contentType.includes(\"application/json\")) {\n try {\n const payload = text ? JSON.parse(text) : {};\n if (payload && typeof payload === \"object\" && Array.isArray(payload.content)) {\n return {\n content: payload.content,\n isError: payload.isError ?? statusIsError,\n };\n }\n return {\n content: [{ type: \"text\", text: JSON.stringify(payload, null, 2) }],\n isError: statusIsError,\n };\n } catch {\n return {\n content: [{ type: \"text\", text }],\n isError: statusIsError,\n };\n }\n }\n\n if (!text) {\n return {\n content: [],\n isError: statusIsError,\n };\n }\n\n return {\n content: [{ type: \"text\", text }],\n isError: statusIsError,\n };\n}\n\nexport type { ToolResponse };\n","import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { CallToolRequestSchema, ListToolsRequestSchema } from \"@modelcontextprotocol/sdk/types.js\";\nimport * as fs from \"fs\";\nimport * as path from \"node:path\";\nimport { fileURLToPath } from \"url\";\nimport { zodToJsonSchema } from \"@alcyone-labs/zod-to-json-schema\";\nimport { createMcpAdapter, HTTP_METHODS } from \"../adapters/mcp\";\nimport { withX402Payment } from \"../x402/payment\";\nimport {\n type HttpHandlerDefinition,\n type InternalToolDefinition,\n type McpConfig,\n type ToolResponse,\n} from \"../types/index\";\nimport { BuildMetadata, Tool } from \"../types/metadata\";\n\ninterface AdapterEntry {\n tool: InternalToolDefinition;\n invoke: (params: unknown) => Promise<ToolResponse>;\n}\n\n/**\n * Create local development server for MCP tooling.\n */\nexport function createDevServer(tools: InternalToolDefinition[]): Server {\n const metadata = loadMetadata();\n const metadataMap = buildMetadataMap(metadata);\n\n const adapters = buildAdapters(tools);\n\n const server = new Server(\n {\n name: \"opentool-dev\",\n version: \"1.0.0\",\n },\n {\n capabilities: {\n tools: {},\n },\n },\n );\n\n server.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: adapters.map(({ tool }) => serializeTool(tool, metadataMap)),\n }));\n\n server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const entry = adapters.find(({ tool }) => {\n const toolName = tool.metadata?.name || tool.filename;\n return toolName === request.params.name;\n });\n\n if (!entry) {\n throw new Error(`Tool ${request.params.name} not found or not MCP-enabled`);\n }\n\n try {\n return (await entry.invoke(request.params.arguments)) as any;\n } catch (error) {\n const message = (error && (error as Error).message) || String(error);\n return {\n content: [{ type: \"text\", text: `Error: ${message}` }],\n isError: true,\n } as any;\n }\n });\n\n return server;\n}\n\n/**\n * Create stdio server for use with AWS Lambda MCP Adapter\n */\nexport async function createStdioServer(tools?: InternalToolDefinition[]): Promise<void> {\n const metadata = loadMetadata();\n const metadataMap = buildMetadataMap(metadata);\n const toolDefinitions = tools || (await loadToolsFromDirectory(metadataMap));\n const adapters = buildAdapters(toolDefinitions);\n\n const server = new Server(\n {\n name: \"opentool-runtime\",\n version: \"1.0.0\",\n },\n {\n capabilities: {\n tools: {},\n },\n },\n );\n\n server.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: adapters.map(({ tool }) => serializeTool(tool, metadataMap)),\n }));\n\n server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const entry = adapters.find(({ tool }) => {\n const toolName = tool.metadata?.name || tool.filename;\n return toolName === request.params.name;\n });\n\n if (!entry) {\n throw new Error(`Tool ${request.params.name} not found or not MCP-enabled`);\n }\n\n try {\n return (await entry.invoke(request.params.arguments)) as any;\n } catch (error) {\n const message = (error && (error as Error).message) || String(error);\n return {\n content: [{ type: \"text\", text: `Error: ${message}` }],\n isError: true,\n } as any;\n }\n });\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n console.error(\"MCP stdio server started\");\n}\n\nfunction buildAdapters(tools: InternalToolDefinition[]): AdapterEntry[] {\n return tools\n .filter((tool) => isMcpEnabled(tool))\n .map((tool) => {\n const httpHandlers = toHttpHandlerMap(tool.httpHandlers);\n const adapterOptions = {\n name: tool.metadata?.name || tool.filename,\n httpHandlers,\n ...(tool.schema ? { schema: tool.schema } : {}),\n ...(tool.mcpConfig?.defaultMethod ? { defaultMethod: tool.mcpConfig.defaultMethod } : {}),\n };\n const adapter = createMcpAdapter(adapterOptions);\n\n return {\n tool,\n invoke: adapter,\n };\n });\n}\n\n/**\n * Load tools from tools directory\n */\nasync function loadToolsFromDirectory(\n metadataMap: Map<string, Tool>,\n): Promise<InternalToolDefinition[]> {\n const tools: InternalToolDefinition[] = [];\n const toolsDir = path.join(process.cwd(), \"tools\");\n if (!fs.existsSync(toolsDir)) {\n return tools;\n }\n\n const files = fs.readdirSync(toolsDir);\n for (const file of files) {\n if (!isSupportedToolFile(file)) {\n continue;\n }\n\n const toolPath = path.join(toolsDir, file);\n try {\n const exportsObject = require(toolPath);\n const candidate = resolveModuleCandidate(exportsObject);\n if (!candidate?.schema) {\n continue;\n }\n\n const baseName = file.replace(/\\.[^.]+$/, \"\");\n const name = candidate.metadata?.name || baseName;\n const meta = metadataMap.get(name);\n\n let inputSchema = meta?.inputSchema;\n if (!inputSchema) {\n try {\n inputSchema = zodToJsonSchema(candidate.schema, {\n name: `${name}Schema`,\n target: \"jsonSchema7\",\n $refStrategy: \"none\",\n });\n } catch {\n inputSchema = { type: \"object\" };\n }\n }\n inputSchema = normalizeInputSchema(inputSchema);\n\n const payment = candidate.payment ?? null;\n const httpHandlersRaw = collectHttpHandlers(candidate);\n const httpHandlers = [...httpHandlersRaw];\n\n if (httpHandlers.length === 0) {\n continue;\n }\n\n if (payment) {\n for (let index = 0; index < httpHandlers.length; index += 1) {\n const entry = httpHandlers[index];\n httpHandlers[index] = {\n ...entry,\n handler: withX402Payment(entry.handler, payment),\n };\n }\n }\n\n const mcpConfig = normalizeRuntimeMcpConfig(candidate.mcp);\n const adapterOptions = {\n name,\n httpHandlers: toHttpHandlerMap(httpHandlers),\n ...(candidate.schema ? { schema: candidate.schema } : {}),\n ...(typeof candidate.mcp?.defaultMethod === \"string\"\n ? { defaultMethod: candidate.mcp.defaultMethod }\n : {}),\n };\n const adapter = createMcpAdapter(adapterOptions);\n\n const tool: InternalToolDefinition = {\n ...(candidate.schema ? { schema: candidate.schema } : {}),\n inputSchema,\n metadata: candidate.metadata || meta || null,\n filename: baseName,\n httpHandlers,\n mcpConfig,\n handler: async (params) => adapter(params),\n payment,\n };\n tools.push(tool);\n } catch (error) {\n console.warn(`Failed to load tool from ${file}: ${error}`);\n }\n }\n\n return tools;\n}\n\nfunction loadMetadata(): BuildMetadata | null {\n const metadataPath = path.join(process.cwd(), \"metadata.json\");\n if (!fs.existsSync(metadataPath)) {\n return null;\n }\n try {\n const contents = fs.readFileSync(metadataPath, \"utf8\");\n return JSON.parse(contents) as BuildMetadata;\n } catch (error) {\n console.warn(`Failed to parse metadata.json: ${error}`);\n return null;\n }\n}\n\nfunction buildMetadataMap(metadata: BuildMetadata | null): Map<string, Tool> {\n const map = new Map<string, Tool>();\n if (!metadata?.tools) {\n return map;\n }\n metadata.tools.forEach((tool) => {\n map.set(tool.name, tool);\n });\n return map;\n}\n\nfunction serializeTool(tool: InternalToolDefinition, metadataMap: Map<string, Tool>) {\n const name = tool.metadata?.name || tool.filename;\n const meta = metadataMap.get(name);\n return {\n name,\n description: meta?.description || tool.metadata?.description || `${tool.filename} tool`,\n inputSchema: meta?.inputSchema || tool.inputSchema,\n annotations: meta?.annotations || tool.metadata?.annotations,\n payment: meta?.payment || tool.metadata?.payment,\n discovery: meta?.discovery || tool.metadata?.discovery,\n };\n}\n\nfunction isSupportedToolFile(file: string): boolean {\n return /\\.(cjs|mjs|js|ts)$/i.test(file);\n}\n\nfunction resolveModuleCandidate(exportsObject: any): any {\n if (!exportsObject) {\n return null;\n }\n if (exportsObject.schema) {\n return exportsObject;\n }\n if (exportsObject.default && exportsObject.default.schema) {\n return exportsObject.default;\n }\n return exportsObject;\n}\n\nfunction collectHttpHandlers(module: any): HttpHandlerDefinition[] {\n const handlers: HttpHandlerDefinition[] = [];\n HTTP_METHODS.forEach((method) => {\n const handler = module?.[method];\n if (typeof handler === \"function\") {\n handlers.push({\n method,\n handler: async (request: Request) => handler.call(module, request),\n });\n }\n });\n return handlers;\n}\n\nfunction toHttpHandlerMap(\n handlers: HttpHandlerDefinition[],\n): Record<string, HttpHandlerDefinition[\"handler\"]> {\n return handlers.reduce<Record<string, HttpHandlerDefinition[\"handler\"]>>((acc, handler) => {\n acc[handler.method.toUpperCase()] = handler.handler;\n return acc;\n }, {});\n}\n\nfunction normalizeInputSchema(schema: any): any {\n if (!schema || typeof schema !== \"object\") {\n return schema;\n }\n\n const clone = JSON.parse(JSON.stringify(schema));\n\n if (typeof clone.$ref === \"string\" && clone.$ref.startsWith(\"#/definitions/\")) {\n const refKey = clone.$ref.replace(\"#/definitions/\", \"\");\n if (clone.definitions && typeof clone.definitions[refKey] === \"object\") {\n return normalizeInputSchema(clone.definitions[refKey]);\n }\n }\n\n delete clone.$ref;\n delete clone.definitions;\n\n if (!clone.type) {\n clone.type = \"object\";\n }\n\n return clone;\n}\n\nfunction normalizeRuntimeMcpConfig(rawConfig: any): McpConfig | null {\n if (isPlainObject(rawConfig) && rawConfig.enabled === true) {\n let normalizedMode: McpConfig[\"mode\"] | undefined;\n if (typeof rawConfig.mode === \"string\") {\n const candidate = rawConfig.mode.toLowerCase();\n if (candidate === \"stdio\" || candidate === \"lambda\" || candidate === \"dual\") {\n normalizedMode = candidate as McpConfig[\"mode\"];\n } else {\n throw new Error('mcp.mode must be one of \"stdio\", \"lambda\", or \"dual\"');\n }\n }\n const metadataOverrides = isPlainObject(rawConfig.metadataOverrides)\n ? rawConfig.metadataOverrides\n : undefined;\n const config: McpConfig = { enabled: true };\n\n if (normalizedMode) {\n config.mode = normalizedMode;\n }\n\n if (typeof rawConfig.defaultMethod === \"string\") {\n config.defaultMethod = rawConfig.defaultMethod.toUpperCase();\n }\n\n if (metadataOverrides) {\n config.metadataOverrides = metadataOverrides;\n }\n\n return config;\n }\n\n return null;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isMcpEnabled(tool: InternalToolDefinition): boolean {\n return Boolean(tool.mcpConfig?.enabled);\n}\n\nexport function resolveRuntimePath(value: string): string {\n if (value.startsWith(\"file://\")) {\n return fileURLToPath(value);\n }\n return path.resolve(value);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opentool",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.3",
|
|
4
4
|
"description": "OpenTool framework for building serverless MCP tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -82,6 +82,10 @@
|
|
|
82
82
|
"import": "./dist/index.js",
|
|
83
83
|
"types": "./dist/index.d.ts"
|
|
84
84
|
},
|
|
85
|
+
"./runtime": {
|
|
86
|
+
"import": "./dist/runtime/index.js",
|
|
87
|
+
"types": "./dist/runtime/index.d.ts"
|
|
88
|
+
},
|
|
85
89
|
"./x402": {
|
|
86
90
|
"import": "./dist/x402/index.js",
|
|
87
91
|
"types": "./dist/x402/index.d.ts"
|