opentool 0.7.2 → 0.7.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 +42 -15
- package/dist/cli/index.d.ts +4 -3
- package/dist/cli/index.js +264 -669
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +595 -865
- package/dist/index.js.map +1 -1
- package/dist/validate-BrOwtVYW.d.ts +382 -0
- package/dist/x402/index.d.ts +154 -0
- package/dist/x402/index.js +708 -0
- package/dist/x402/index.js.map +1 -0
- package/package.json +4 -4
- package/dist/index-D_bCF2Bf.d.ts +0 -487
- package/dist/payment/index.d.ts +0 -2
- package/dist/payment/index.js +0 -969
- package/dist/payment/index.js.map +0 -1
- package/dist/validate-CqB2Juma.d.ts +0 -216
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/payment.ts","../../src/helpers/payment.ts","../../src/payment/index.ts"],"names":["z","context"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from \"zod\";\n\nexport const PAYMENT_SCHEMA_VERSION = 1 as const;\nexport const paymentSchemaVersionSchema = z.literal(PAYMENT_SCHEMA_VERSION);\nexport type PaymentSchemaVersion = z.infer<typeof paymentSchemaVersionSchema>;\n\nexport const decimalStringSchema = z\n .string()\n .regex(/^(?:0|[1-9]\\d*)(?:\\.\\d+)?$/, \"Value must be a positive decimal string\");\n\nexport const currencySchema = z.object({\n code: z\n .string()\n .min(2)\n .max(12)\n .transform((value) => value.toUpperCase()),\n symbol: z.string().min(1).max(6).optional(),\n decimals: z.number().int().min(0).max(36).optional(),\n kind: z.enum([\"fiat\", \"crypto\"]).default(\"crypto\").optional(),\n description: z.string().optional(),\n});\nexport type Currency = z.infer<typeof currencySchema>;\n\nexport const paymentAmountSchema = z.object({\n value: decimalStringSchema,\n currency: currencySchema,\n display: z.string().optional(),\n});\nexport type PaymentAmount = z.infer<typeof paymentAmountSchema>;\n\nexport const cryptoAssetSchema = z.object({\n symbol: z.string().min(2).max(12),\n network: z.string().min(1).optional(),\n chainId: z.number().int().min(0).optional(),\n address: z.string().min(1).optional(),\n decimals: z.number().int().min(0).max(36).optional(),\n standard: z.enum([\"erc20\", \"spl\", \"custom\"]).default(\"erc20\").optional(),\n description: z.string().optional(),\n});\nexport type CryptoAsset = z.infer<typeof cryptoAssetSchema>;\n\nexport const facilitatorConfigSchema = z.object({\n url: z.string().url(),\n vendor: z.string().optional(),\n verifyPath: z.string().default(\"/verify\").optional(),\n settlePath: z.string().default(\"/settle\").optional(),\n apiKey: z.string().optional(),\n apiKeyEnv: z.string().optional(),\n apiKeyHeader: z.string().default(\"Authorization\").optional(),\n headers: z.record(z.string(), z.string()).optional(),\n timeoutMs: z.number().int().positive().optional(),\n});\nexport type FacilitatorConfig = z.infer<typeof facilitatorConfigSchema>;\n\nexport const settlementTermsSchema = z.object({\n windowSeconds: z.number().int().positive().optional(),\n targetConfirmations: z.number().int().positive().optional(),\n finalityDescription: z.string().optional(),\n slaDescription: z.string().optional(),\n});\nexport type SettlementTerms = z.infer<typeof settlementTermsSchema>;\n\nexport const paymentFieldSchema = z.object({\n key: z.string().min(1),\n label: z.string().min(1),\n required: z.boolean().default(true).optional(),\n description: z.string().optional(),\n example: z.string().optional(),\n});\nexport type PaymentField = z.infer<typeof paymentFieldSchema>;\n\nexport const x402ProofSchema = z.object({\n mode: z.literal(\"x402\"),\n scheme: z.string().min(1),\n network: z.string().min(1),\n version: z.number().int().min(1).optional(),\n facilitator: facilitatorConfigSchema.optional(),\n verifier: z.string().optional(),\n});\nexport type X402ProofConfig = z.infer<typeof x402ProofSchema>;\n\nexport const directProofSchema = z.object({\n mode: z.literal(\"direct\"),\n proofTypes: z.array(z.string().min(1)).nonempty(),\n verifier: z.string().optional(),\n instructions: z.string().optional(),\n fields: z.array(paymentFieldSchema).optional(),\n allowsManualReview: z.boolean().optional(),\n});\nexport type DirectProofConfig = z.infer<typeof directProofSchema>;\n\nexport const paymentProofSchema = z.discriminatedUnion(\"mode\", [\n x402ProofSchema,\n directProofSchema,\n]);\nexport type PaymentProofConfig = z.infer<typeof paymentProofSchema>;\n\nexport const paymentOptionSchema = z.object({\n id: z.string().min(1),\n title: z.string().min(1),\n description: z.string().optional(),\n amount: paymentAmountSchema,\n asset: cryptoAssetSchema,\n payTo: z.string().min(1),\n resource: z.string().url().optional(),\n proof: paymentProofSchema,\n settlement: settlementTermsSchema.optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\nexport type PaymentOption = z.infer<typeof paymentOptionSchema>;\n\nexport const paymentRequirementsSchema = z.object({\n schemaVersion: paymentSchemaVersionSchema,\n message: z.string().optional(),\n title: z.string().optional(),\n resource: z.string().url().optional(),\n accepts: z.array(paymentOptionSchema).nonempty(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n fallbackText: z.string().optional(),\n});\nexport type PaymentRequirementsDefinition = z.infer<\n typeof paymentRequirementsSchema\n>;\n\nexport const x402PaymentHeaderSchema = z.object({\n x402Version: z.number().int().min(1),\n scheme: z.string().min(1),\n network: z.string().min(1),\n payload: z.unknown(),\n correlationId: z.string().optional(),\n});\nexport type X402PaymentHeader = z.infer<typeof x402PaymentHeaderSchema>;\n\nexport const directPaymentPayloadSchema = z.object({\n schemaVersion: z.literal(1),\n optionId: z.string().min(1),\n proofType: z.string().min(1),\n payload: z.unknown(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\nexport type DirectPaymentPayload = z.infer<typeof directPaymentPayloadSchema>;\n\nexport const paymentSuccessMetadataSchema = z.object({\n optionId: z.string().min(1),\n verifier: z.string().optional(),\n txHash: z.string().optional(),\n networkId: z.string().optional(),\n amount: paymentAmountSchema.optional(),\n settledAt: z.string().datetime().optional(),\n payload: z.unknown().optional(),\n});\nexport type PaymentSuccessMetadata = z.infer<\n typeof paymentSuccessMetadataSchema\n>;\n\nexport const paymentFailureSchema = z.object({\n reason: z.string().min(1),\n code: z\n .enum([\n \"verifier_not_found\",\n \"verification_failed\",\n \"invalid_payload\",\n \"unsupported_option\",\n \"missing_header\",\n \"unknown\",\n ])\n .default(\"unknown\")\n .optional(),\n retryable: z.boolean().optional(),\n detail: z.unknown().optional(),\n});\nexport type PaymentFailure = z.infer<typeof paymentFailureSchema>;\n","import { z } from \"zod\";\nimport {\n DirectPaymentPayload,\n directPaymentPayloadSchema,\n DirectProofConfig,\n PaymentFailure,\n paymentFailureSchema,\n PaymentOption,\n paymentOptionSchema,\n PaymentRequirementsDefinition,\n paymentRequirementsSchema,\n PaymentSuccessMetadata,\n paymentSuccessMetadataSchema,\n SettlementTerms,\n X402PaymentHeader,\n x402PaymentHeaderSchema,\n X402ProofConfig,\n} from \"../types/payment\";\n\nconst X402_VERSION_DEFAULT = 1;\nconst HEADER_X402 = \"X-PAYMENT\";\nconst HEADER_DIRECT = \"X-PAYMENT-PROOF\";\nexport const HEADER_PAYMENT_RESPONSE = \"X-PAYMENT-RESPONSE\";\n\nconst 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});\nexport type X402Requirement = z.infer<typeof x402RequirementSchema>;\n\nexport interface X402RequirementsResponse {\n x402Version: number;\n error?: string;\n accepts: X402Requirement[];\n}\n\nexport interface PaymentRequiredBody extends PaymentRequirementsDefinition {\n x402?: X402RequirementsResponse;\n}\n\nexport type PaymentAttempt =\n | {\n type: \"x402\";\n headerName: typeof HEADER_X402;\n raw: string;\n payload: X402PaymentHeader;\n }\n | {\n type: \"direct\";\n headerName: typeof HEADER_DIRECT;\n raw: string;\n payload: DirectPaymentPayload;\n };\n\nexport interface ExtractAttemptsResult {\n attempts: PaymentAttempt[];\n failures: PaymentFailure[];\n}\n\nexport interface PaymentVerificationContext {\n attempt: PaymentAttempt;\n option: PaymentOption;\n definition: PaymentRequirementsDefinition;\n settle?: boolean;\n}\n\nexport interface PaymentVerificationResult {\n success: boolean;\n optionId: string;\n attemptType: PaymentAttempt[\"type\"];\n metadata?: PaymentSuccessMetadata;\n failure?: PaymentFailure;\n responseHeaders?: Record<string, string>;\n}\n\nexport type PaymentVerifier = (\n context: PaymentVerificationContext\n) => Promise<PaymentVerificationResult>;\n\nexport interface VerifyPaymentOptions {\n definition: PaymentRequirementsDefinition;\n request?: Request;\n attempts?: PaymentAttempt[];\n settle?: boolean;\n verifiers?: Record<string, PaymentVerifier>;\n fetchImpl?: typeof fetch;\n}\n\nexport function createPaymentRequiredBody(\n definition: PaymentRequirementsDefinition\n): PaymentRequiredBody {\n const parsed = paymentRequirementsSchema.parse(definition);\n const x402Accepts = parsed.accepts\n .filter((option) => option.proof.mode === \"x402\")\n .map((option) =>\n toX402Requirement(option, parsed.resource, option.settlement)\n )\n .filter((value): value is X402Requirement => Boolean(value));\n\n const x402Body: X402RequirementsResponse | undefined =\n x402Accepts.length > 0\n ? {\n x402Version: resolveX402Version(parsed.accepts),\n error: parsed.message ?? \"Payment required\",\n accepts: x402Accepts,\n }\n : undefined;\n\n if (x402Body) {\n return {\n ...parsed,\n x402: x402Body,\n };\n }\n\n return parsed;\n}\n\nexport function paymentRequiredResponse(\n definition: PaymentRequirementsDefinition,\n init?: ResponseInit\n): Response {\n const body = createPaymentRequiredBody(definition);\n const headers = new Headers(init?.headers);\n if (!headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/json; charset=utf-8\");\n }\n return new Response(JSON.stringify(body), {\n ...init,\n status: init?.status ?? 402,\n headers,\n });\n}\n\nexport function extractPaymentAttempts(\n source: Request\n): ExtractAttemptsResult {\n const attempts: PaymentAttempt[] = [];\n const failures: PaymentFailure[] = [];\n\n const x402Header = source.headers.get(HEADER_X402);\n if (x402Header) {\n const { attempt, failure } = parseX402Header(x402Header);\n if (attempt) {\n attempts.push(attempt);\n } else if (failure) {\n failures.push(failure);\n }\n }\n\n const directHeader = source.headers.get(HEADER_DIRECT);\n if (directHeader) {\n const { attempt, failure } = parseDirectHeader(directHeader);\n if (attempt) {\n attempts.push(attempt);\n } else if (failure) {\n failures.push(failure);\n }\n }\n\n if (attempts.length === 0 && failures.length === 0) {\n failures.push(\n paymentFailureSchema.parse({\n reason: \"No payment headers present\",\n code: \"missing_header\",\n retryable: false,\n })\n );\n }\n\n return { attempts, failures };\n}\n\nexport async function verifyPayment(\n options: VerifyPaymentOptions\n): Promise<PaymentVerificationResult> {\n const definition = paymentRequirementsSchema.parse(options.definition);\n const attempts = options.attempts\n ? options.attempts\n : options.request\n ? extractPaymentAttempts(options.request).attempts\n : [];\n\n if (attempts.length === 0) {\n return {\n success: false,\n optionId: \"\",\n attemptType: \"direct\",\n failure: paymentFailureSchema.parse({\n reason: \"No payment attempt found\",\n code: \"missing_header\",\n retryable: false,\n }),\n };\n }\n\n for (const attempt of attempts) {\n const option = findMatchingOption(definition, attempt);\n if (!option) {\n continue;\n }\n\n if (attempt.type === \"x402\") {\n const proof = option.proof as X402ProofConfig;\n const verifierId = proof.verifier ?? (proof.facilitator ? \"x402:facilitator\" : undefined);\n if (verifierId === \"x402:facilitator\" && proof.facilitator) {\n const context: PaymentVerificationContext = {\n attempt,\n option,\n definition,\n };\n if (options.settle !== undefined) {\n context.settle = options.settle;\n }\n return runFacilitatorVerifier({\n ...context,\n fetchImpl: options.fetchImpl ?? fetch,\n });\n }\n\n const verifier = verifierId ? options.verifiers?.[verifierId] : undefined;\n if (!verifier) {\n return {\n success: false,\n optionId: option.id,\n attemptType: attempt.type,\n failure: paymentFailureSchema.parse({\n reason: `No verifier registered for id: ${verifierId ?? \"(missing)\"}`,\n code: \"verifier_not_found\",\n retryable: false,\n }),\n };\n }\n\n const context: PaymentVerificationContext = {\n attempt,\n option,\n definition,\n };\n if (options.settle !== undefined) {\n context.settle = options.settle;\n }\n return verifier(context);\n }\n\n if (attempt.type === \"direct\") {\n const proof = option.proof as DirectProofConfig;\n const verifierId = proof.verifier ?? `direct:${attempt.payload.proofType}`;\n const verifier = verifierId ? options.verifiers?.[verifierId] : undefined;\n if (!verifier) {\n return {\n success: false,\n optionId: option.id,\n attemptType: attempt.type,\n failure: paymentFailureSchema.parse({\n reason: `No verifier registered for id: ${verifierId}`,\n code: \"verifier_not_found\",\n retryable: false,\n }),\n };\n }\n\n const context: PaymentVerificationContext = {\n attempt,\n option,\n definition,\n };\n if (options.settle !== undefined) {\n context.settle = options.settle;\n }\n return verifier(context);\n }\n }\n\n return {\n success: false,\n optionId: \"\",\n attemptType: attempts[0]?.type ?? \"direct\",\n failure: paymentFailureSchema.parse({\n reason: \"No matching payment option for attempt\",\n code: \"unsupported_option\",\n retryable: false,\n }),\n };\n}\n\nexport function createPaymentResponseHeader(\n metadata: PaymentSuccessMetadata\n): string {\n const parsed = paymentSuccessMetadataSchema.parse(metadata);\n return encodeJson(parsed);\n}\n\nfunction parseX402Header(value: string): {\n attempt?: PaymentAttempt;\n failure?: PaymentFailure;\n} {\n try {\n const payload = decodeJson(value, x402PaymentHeaderSchema);\n return {\n attempt: {\n type: \"x402\",\n headerName: HEADER_X402,\n raw: value,\n payload,\n },\n };\n } catch (error) {\n return {\n failure: paymentFailureSchema.parse({\n reason: `Invalid X-PAYMENT header: ${(error as Error).message}`,\n code: \"invalid_payload\",\n retryable: false,\n }),\n };\n }\n}\n\nfunction parseDirectHeader(value: string): {\n attempt?: PaymentAttempt;\n failure?: PaymentFailure;\n} {\n try {\n const payload = decodeJson(value, directPaymentPayloadSchema);\n return {\n attempt: {\n type: \"direct\",\n headerName: HEADER_DIRECT,\n raw: value,\n payload,\n },\n };\n } catch (error) {\n return {\n failure: paymentFailureSchema.parse({\n reason: `Invalid X-PAYMENT-PROOF header: ${(error as Error).message}`,\n code: \"invalid_payload\",\n retryable: false,\n }),\n };\n }\n}\n\nfunction findMatchingOption(\n definition: PaymentRequirementsDefinition,\n attempt: PaymentAttempt\n): PaymentOption | undefined {\n return definition.accepts.find((candidate) => {\n const option = paymentOptionSchema.parse(candidate);\n if (attempt.type === \"x402\" && option.proof.mode === \"x402\") {\n return (\n option.proof.scheme === attempt.payload.scheme &&\n option.proof.network === attempt.payload.network\n );\n }\n\n if (attempt.type === \"direct\" && option.proof.mode === \"direct\") {\n return option.id === attempt.payload.optionId;\n }\n\n return false;\n });\n}\n\nfunction resolveX402Version(options: PaymentOption[]): number {\n const versions: number[] = [];\n for (const option of options) {\n if (option.proof.mode === \"x402\" && option.proof.version) {\n versions.push(option.proof.version);\n }\n }\n return versions.length > 0 ? Math.max(...versions) : X402_VERSION_DEFAULT;\n}\n\nfunction toX402Requirement(\n option: PaymentOption,\n fallbackResource?: string,\n settlement?: SettlementTerms\n): X402Requirement | undefined {\n if (option.proof.mode !== \"x402\") {\n return undefined;\n }\n\n const decimals = resolveDecimals(option);\n const assetAddress = option.asset.address;\n if (!assetAddress) {\n throw new Error(\n `x402 payment option '${option.id}' is missing asset.address`\n );\n }\n\n const units = decimalToBaseUnits(option.amount.value, decimals);\n\n return x402RequirementSchema.parse({\n scheme: option.proof.scheme,\n network: option.proof.network,\n maxAmountRequired: units,\n asset: assetAddress,\n payTo: option.payTo,\n resource: option.resource ?? fallbackResource,\n description: option.description,\n maxTimeoutSeconds: settlement?.windowSeconds,\n extra: {\n symbol: option.asset.symbol,\n currencyCode: option.amount.currency.code,\n decimals,\n },\n });\n}\n\nfunction resolveDecimals(option: PaymentOption): number {\n if (typeof option.asset.decimals === \"number\") {\n return option.asset.decimals;\n }\n if (typeof option.amount.currency.decimals === \"number\") {\n return option.amount.currency.decimals;\n }\n throw new Error(\n `Payment option '${option.id}' must specify asset.decimals or currency.decimals`\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 encodeJson(value: unknown): string {\n const json = JSON.stringify(value);\n return Buffer.from(json, \"utf-8\").toString(\"base64\");\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\nasync function runFacilitatorVerifier({\n attempt,\n option,\n definition,\n settle,\n fetchImpl,\n}: PaymentVerificationContext & { fetchImpl: typeof fetch }): Promise<\n PaymentVerificationResult\n> {\n if (option.proof.mode !== \"x402\" || attempt.type !== \"x402\" || !option.proof.facilitator) {\n return {\n success: false,\n optionId: option.id,\n attemptType: attempt.type,\n failure: paymentFailureSchema.parse({\n reason: \"Facilitator verifier invoked for non-x402 option\",\n code: \"verification_failed\",\n retryable: false,\n }),\n };\n }\n\n const facilitator = option.proof.facilitator;\n const verifierUrl = new URL(\n facilitator.verifyPath ?? \"/verify\",\n ensureTrailingSlash(facilitator.url)\n ).toString();\n const requirement = toX402Requirement(option, definition.resource, option.settlement);\n if (!requirement) {\n return {\n success: false,\n optionId: option.id,\n attemptType: attempt.type,\n failure: paymentFailureSchema.parse({\n reason: \"Unable to derive x402 requirement for facilitator\",\n code: \"verification_failed\",\n retryable: false,\n }),\n };\n }\n\n const headers = buildFacilitatorHeaders(facilitator);\n const controller = facilitator.timeoutMs\n ? new AbortController()\n : undefined;\n const timeout = facilitator.timeoutMs\n ? setTimeout(() => controller?.abort(), facilitator.timeoutMs)\n : undefined;\n\n try {\n const verifyResponse = await fetchImpl(verifierUrl, {\n method: \"POST\",\n headers,\n body: JSON.stringify({\n x402Version: attempt.payload.x402Version,\n paymentHeader: attempt.raw,\n paymentRequirements: requirement,\n }),\n signal: controller?.signal ?? null,\n });\n\n if (!verifyResponse.ok) {\n return {\n success: false,\n optionId: option.id,\n attemptType: attempt.type,\n failure: paymentFailureSchema.parse({\n reason: `Facilitator verify request failed: ${verifyResponse.status}`,\n code: \"verification_failed\",\n retryable: verifyResponse.status >= 500,\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 optionId: option.id,\n attemptType: attempt.type,\n failure: paymentFailureSchema.parse({\n reason: verifyPayload.invalidReason ?? \"Facilitator verification failed\",\n code: \"verification_failed\",\n retryable: false,\n }),\n };\n }\n\n if (!settle) {\n return {\n success: true,\n optionId: option.id,\n attemptType: attempt.type,\n metadata: paymentSuccessMetadataSchema.parse({\n optionId: option.id,\n verifier: facilitator.vendor ?? \"facilitator\",\n }),\n };\n }\n\n const settleUrl = new URL(\n facilitator.settlePath ?? \"/settle\",\n ensureTrailingSlash(facilitator.url)\n ).toString();\n\n const settleResponse = await fetchImpl(settleUrl, {\n method: \"POST\",\n headers,\n body: JSON.stringify({\n x402Version: attempt.payload.x402Version,\n paymentHeader: attempt.raw,\n paymentRequirements: requirement,\n }),\n signal: controller?.signal ?? null,\n });\n\n if (!settleResponse.ok) {\n return {\n success: false,\n optionId: option.id,\n attemptType: attempt.type,\n failure: paymentFailureSchema.parse({\n reason: `Facilitator settle request failed: ${settleResponse.status}`,\n code: \"verification_failed\",\n retryable: settleResponse.status >= 500,\n }),\n };\n }\n\n const settlePayload = (await settleResponse.json()) as {\n success: boolean;\n error?: string | null;\n txHash?: string | null;\n networkId?: string | null;\n };\n\n if (!settlePayload.success) {\n return {\n success: false,\n optionId: option.id,\n attemptType: attempt.type,\n failure: paymentFailureSchema.parse({\n reason: settlePayload.error ?? \"Facilitator settlement failed\",\n code: \"verification_failed\",\n retryable: false,\n }),\n };\n }\n\n const metadata = paymentSuccessMetadataSchema.parse({\n optionId: option.id,\n verifier: facilitator.vendor ?? \"facilitator\",\n txHash: settlePayload.txHash ?? undefined,\n networkId: settlePayload.networkId ?? undefined,\n });\n\n return {\n success: true,\n optionId: option.id,\n attemptType: attempt.type,\n metadata,\n responseHeaders: {\n [HEADER_PAYMENT_RESPONSE]: createPaymentResponseHeader(metadata),\n },\n };\n } catch (error) {\n return {\n success: false,\n optionId: option.id,\n attemptType: attempt.type,\n failure: paymentFailureSchema.parse({\n reason: `Facilitator request error: ${(error as Error).message}`,\n code: \"verification_failed\",\n retryable: false,\n }),\n };\n } finally {\n if (timeout) {\n clearTimeout(timeout);\n }\n }\n}\n\nfunction buildFacilitatorHeaders(config: X402ProofConfig[\"facilitator\"]): Record<string, string> {\n const headers: Record<string, string> = {\n \"content-type\": \"application/json\",\n };\n\n if (config?.headers) {\n Object.assign(headers, config.headers);\n }\n\n const apiKey = resolveFacilitatorApiKey(config);\n if (apiKey) {\n const headerName = config?.apiKeyHeader ?? \"Authorization\";\n headers[headerName] = apiKey;\n }\n\n return headers;\n}\n\nfunction resolveFacilitatorApiKey(\n config: X402ProofConfig[\"facilitator\"]\n): string | undefined {\n if (!config) {\n return undefined;\n }\n if (config.apiKey) {\n return config.apiKey;\n }\n if (config.apiKeyEnv && typeof process !== \"undefined\") {\n return process.env?.[config.apiKeyEnv];\n }\n return undefined;\n}\n\nfunction ensureTrailingSlash(value: string): string {\n return value.endsWith(\"/\") ? value : `${value}/`;\n}\n\nexport const PAYMENT_HEADERS = {\n x402: HEADER_X402,\n direct: HEADER_DIRECT,\n response: HEADER_PAYMENT_RESPONSE,\n} as const;\n\nexport { PAYMENT_SCHEMA_VERSION } from \"../types/payment\";\n","import type { PaymentVerifier } from \"../helpers/payment\";\nimport {\n PAYMENT_HEADERS,\n paymentRequiredResponse,\n verifyPayment,\n type PaymentVerificationResult,\n} from \"../helpers/payment\";\nimport {\n PAYMENT_SCHEMA_VERSION,\n paymentOptionSchema,\n type DirectProofConfig,\n type PaymentField,\n type PaymentOption,\n type PaymentRequirementsDefinition,\n type PaymentSuccessMetadata,\n type SettlementTerms,\n type X402ProofConfig,\n} from \"../types/payment\";\n\nconst DEFAULT_ID_X402 = \"x402\";\nconst DEFAULT_ID_402 = \"402\";\ninterface CurrencySpec {\n decimals: number;\n symbol: string;\n x402?: {\n network: string;\n assetAddress: string;\n };\n}\n\nconst SUPPORTED_CURRENCIES: Record<string, CurrencySpec> = {\n USDC: {\n decimals: 6,\n symbol: \"USDC\",\n x402: {\n network: \"base\",\n assetAddress: \"0x833589fCD6eDb6E08f4c7C37b7b4c6e997E08A43\",\n },\n },\n};\n\nconst DEFAULT_FACILITATORS = {\n opentool: \"https://facilitator.opentool.dev/x402\",\n coinbase: \"https://payments.coinbase.com/x402\",\n} as const;\n\nexport interface DefinedPayment {\n definition: PaymentRequirementsDefinition;\n verifiers: Record<string, PaymentVerifier>;\n metadata?: Record<string, unknown>;\n message?: string;\n}\n\nexport interface RequirePaymentOptions {\n settle?: boolean;\n verifiers?: Record<string, PaymentVerifier>;\n fetchImpl?: typeof fetch;\n onFailure?: (result: PaymentVerificationResult) => Response;\n}\n\nexport interface RequirePaymentSuccess {\n payment: PaymentSuccessMetadata;\n headers: Record<string, string>;\n optionId: string;\n result: PaymentVerificationResult;\n}\n\nexport type RequirePaymentOutcome = Response | RequirePaymentSuccess;\n\nconst PAYMENT_CONTEXT_SYMBOL = Symbol.for(\"opentool.payment.context\");\n\nexport class PaymentRequiredError extends Error {\n readonly response: Response;\n readonly verification: PaymentVerificationResult | undefined;\n\n constructor(response: Response, verification?: PaymentVerificationResult) {\n super(\"Payment required\");\n this.name = \"PaymentRequiredError\";\n this.response = response;\n this.verification = verification;\n }\n}\n\nexport type PaymentContext = RequirePaymentSuccess;\n\nfunction setPaymentContext(request: Request, context: PaymentContext): 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 getPaymentContext(\n request: Request\n): PaymentContext | undefined {\n return (request as any)[PAYMENT_CONTEXT_SYMBOL];\n}\n\nfunction applyPaymentHeaders(\n response: Response,\n headers: Record<string, string>\n): 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\nexport function withPaymentRequirement(\n handler: (request: Request) => Promise<Response> | Response,\n payment: DefinedPayment | PaymentRequirementsDefinition,\n options: RequirePaymentOptions = {}\n): (request: Request) => Promise<Response> {\n return async (request: Request): Promise<Response> => {\n const verification = await requirePayment(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\nexport interface DefinePaymentConfig {\n amount: string | number;\n payTo: string;\n currency?: string;\n message?: string;\n resource?: string;\n acceptedMethods?: (\"x402\" | \"402\")[];\n acceptedCurrencies?: string[];\n chains?: (string | number)[];\n facilitator?:\n | \"opentool\"\n | \"coinbase\"\n | string\n | X402ProofConfig[\"facilitator\"];\n metadata?: Record<string, unknown>;\n verifiers?: Record<string, PaymentVerifier>;\n x402?: X402Config;\n direct?: DirectConfig;\n}\n\nexport interface X402Config {\n id?: string;\n facilitator?: string | X402ProofConfig[\"facilitator\"];\n network?: string;\n assetAddress?: string;\n scheme?: string;\n version?: number;\n settlement?: SettlementTerms;\n}\n\nexport interface DirectConfig {\n id?: string;\n verifierId?: string;\n proofType?: string;\n token?: string;\n verify?: PaymentVerifier;\n instructions?: string;\n fields?: PaymentField[];\n allowsManualReview?: boolean;\n settlement?: SettlementTerms;\n}\n\nexport function definePayment(config: DefinePaymentConfig): DefinedPayment {\n const verifiers: Record<string, PaymentVerifier> = {\n ...(config.verifiers ?? {}),\n };\n const methods = config.acceptedMethods ?? [\"402\"];\n const includeX402 = methods.includes(\"x402\");\n const includePlain402 = methods.includes(\"402\");\n\n if (!includeX402 && !includePlain402) {\n throw new Error(\n \"definePayment requires at least one payment transport (x402 or 402)\"\n );\n }\n\n const currencyCode = normalizeCurrency(config.currency);\n const currencySpec = SUPPORTED_CURRENCIES[currencyCode];\n if (!currencySpec) {\n throw new Error(`Unsupported currency for payments: ${currencyCode}`);\n }\n const decimals = currencySpec.decimals;\n const symbol = currencySpec.symbol;\n const value = toDecimalString(config.amount);\n\n const accepts: PaymentOption[] = [];\n\n if (includeX402) {\n const overrides = config.x402 ?? {};\n const defaults = currencySpec.x402;\n if (!defaults && (!overrides.network || !overrides.assetAddress)) {\n throw new Error(\n \"x402 payments require a network and assetAddress; supply them or choose a supported currency.\"\n );\n }\n const facilitator = resolveFacilitator(\n config.facilitator ?? overrides.facilitator ?? \"opentool\"\n );\n accepts.push(\n paymentOptionSchema.parse({\n id: overrides.id ?? DEFAULT_ID_X402,\n title: `Pay ${value} ${currencyCode}`,\n amount: {\n value,\n currency: { code: currencyCode, symbol, decimals },\n },\n asset: {\n symbol,\n network: overrides.network ?? defaults?.network ?? \"\",\n address: overrides.assetAddress ?? defaults?.assetAddress ?? \"\",\n decimals,\n standard: \"erc20\",\n },\n payTo: config.payTo,\n proof: {\n mode: \"x402\",\n network: overrides.network ?? defaults?.network ?? \"\",\n scheme: overrides.scheme ?? \"exact\",\n version: overrides.version ?? 1,\n facilitator,\n verifier: facilitator ? \"x402:facilitator\" : undefined,\n },\n settlement: overrides.settlement,\n })\n );\n }\n\n if (includePlain402) {\n const overrides = config.direct ?? {};\n const id = overrides.id ?? DEFAULT_ID_402;\n const verifierId = overrides.verifierId ?? `direct:${id}`;\n const proofType = overrides.proofType ?? id;\n const verifier =\n overrides.verify ??\n buildDefaultDirectVerifier(overrides.token, verifierId, id);\n verifiers[verifierId] = verifier;\n accepts.push(\n paymentOptionSchema.parse({\n id,\n title: `Pay ${value} ${currencyCode}`,\n amount: {\n value,\n currency: { code: currencyCode, symbol, decimals },\n },\n asset: {\n symbol,\n decimals,\n standard: \"erc20\",\n },\n payTo: config.payTo,\n proof: {\n mode: \"direct\",\n proofTypes: [proofType],\n verifier: verifierId,\n instructions: overrides.instructions,\n fields: overrides.fields,\n allowsManualReview: overrides.allowsManualReview,\n } as DirectProofConfig,\n settlement: overrides.settlement,\n })\n );\n }\n\n const facilitatorLabel = includeX402\n ? resolveFacilitatorLabel(config.facilitator ?? config.x402?.facilitator)\n : undefined;\n\n const baseMetadata: Record<string, unknown> = {};\n if (currencyCode === \"USDC\") {\n baseMetadata.amountUSDC = Number(value);\n }\n baseMetadata.x402 = includeX402;\n baseMetadata.plain402 = includePlain402;\n baseMetadata.acceptedMethods = methods;\n baseMetadata.acceptedCurrencies = config.acceptedCurrencies ?? [currencyCode];\n if (config.chains) {\n baseMetadata.chains = config.chains;\n }\n if (facilitatorLabel) {\n baseMetadata.facilitator = facilitatorLabel;\n }\n\n const metadata = config.metadata\n ? { ...baseMetadata, ...config.metadata }\n : baseMetadata;\n\n const definition: PaymentRequirementsDefinition = {\n schemaVersion: PAYMENT_SCHEMA_VERSION,\n accepts,\n metadata,\n } as PaymentRequirementsDefinition;\n\n if (config.message !== undefined) {\n (definition as any).message = config.message;\n }\n if (config.resource !== undefined) {\n (definition as any).resource = config.resource;\n }\n\n const defined: DefinedPayment = {\n definition,\n verifiers,\n metadata,\n };\n if (config.message !== undefined) {\n defined.message = config.message;\n }\n\n return defined;\n}\n\nexport async function requirePayment(\n request: Request,\n payment: DefinedPayment | PaymentRequirementsDefinition,\n options: RequirePaymentOptions = {}\n): Promise<RequirePaymentOutcome> {\n const { definition, verifiers } = normalizePayment(payment);\n const mergedVerifiers: Record<string, PaymentVerifier> = {\n ...verifiers,\n ...(options.verifiers ?? {}),\n };\n\n const verifyOptions: Parameters<typeof verifyPayment>[0] = {\n definition,\n request,\n };\n\n if (Object.keys(mergedVerifiers).length > 0) {\n verifyOptions.verifiers = mergedVerifiers;\n }\n if (options.settle !== undefined) {\n verifyOptions.settle = options.settle;\n }\n if (options.fetchImpl) {\n verifyOptions.fetchImpl = options.fetchImpl;\n }\n\n const verification = await verifyPayment(verifyOptions);\n\n if (!verification.success || !verification.metadata) {\n if (options.onFailure) {\n return options.onFailure(verification);\n }\n const response = paymentRequiredResponse(definition);\n throw new PaymentRequiredError(response, verification);\n }\n\n return {\n payment: verification.metadata,\n headers: verification.responseHeaders ?? {},\n optionId: verification.optionId,\n result: verification,\n };\n}\n\nfunction normalizePayment(\n payment: DefinedPayment | PaymentRequirementsDefinition\n): {\n definition: PaymentRequirementsDefinition;\n verifiers: Record<string, PaymentVerifier>;\n} {\n if (isDefinedPayment(payment)) {\n return {\n definition: payment.definition,\n verifiers: payment.verifiers ?? {},\n };\n }\n\n return {\n definition: payment,\n verifiers: {},\n };\n}\n\nfunction isDefinedPayment(value: unknown): value is DefinedPayment {\n return (\n !!value &&\n typeof value === \"object\" &&\n \"definition\" in value &&\n (value as DefinedPayment).definition !== undefined\n );\n}\n\nfunction resolveFacilitator(\n value: \"opentool\" | \"coinbase\" | string | X402ProofConfig[\"facilitator\"]\n): X402ProofConfig[\"facilitator\"] | undefined {\n if (!value) {\n return undefined;\n }\n if (typeof value === \"string\") {\n if (value in DEFAULT_FACILITATORS) {\n return {\n url: DEFAULT_FACILITATORS[value as keyof typeof DEFAULT_FACILITATORS],\n };\n }\n return { url: value };\n }\n return value;\n}\n\nfunction resolveFacilitatorLabel(\n value: DefinePaymentConfig[\"facilitator\"]\n): string | undefined {\n if (!value) {\n return \"opentool\";\n }\n if (typeof value === \"string\") {\n if (value === \"opentool\" || value === \"coinbase\") {\n return value;\n }\n return \"custom\";\n }\n return \"custom\";\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\nfunction buildDefaultDirectVerifier(\n expectedToken: string | undefined,\n verifierId: string,\n optionId: string\n): PaymentVerifier {\n return async ({ attempt, option }) => {\n if (attempt.type !== \"direct\") {\n return {\n success: false,\n optionId: option.id,\n attemptType: attempt.type,\n failure: {\n reason: \"Expected direct payment payload\",\n code: \"invalid_payload\",\n },\n };\n }\n\n const payload = attempt.payload.payload as { token?: string } | undefined;\n if (expectedToken) {\n if (payload?.token !== expectedToken) {\n return {\n success: false,\n optionId: option.id,\n attemptType: attempt.type,\n failure: {\n reason: \"Invalid or missing payment proof\",\n code: \"verification_failed\",\n },\n };\n }\n } else if (!payload) {\n return {\n success: false,\n optionId: option.id,\n attemptType: attempt.type,\n failure: {\n reason: \"Payment proof is required\",\n code: \"verification_failed\",\n },\n };\n }\n\n return {\n success: true,\n optionId,\n attemptType: attempt.type,\n metadata: {\n optionId,\n verifier: verifierId,\n payload,\n },\n };\n };\n}\n\nexport { PAYMENT_HEADERS };\n"]}
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { Y as DefinedPayment } from './index-D_bCF2Bf.js';
|
|
3
|
-
|
|
4
|
-
declare const ToolMetadataOverridesSchema: z.ZodObject<{
|
|
5
|
-
name: z.ZodOptional<z.ZodString>;
|
|
6
|
-
description: z.ZodOptional<z.ZodString>;
|
|
7
|
-
annotations: z.ZodOptional<z.ZodObject<{
|
|
8
|
-
title: z.ZodOptional<z.ZodString>;
|
|
9
|
-
readOnlyHint: z.ZodOptional<z.ZodBoolean>;
|
|
10
|
-
destructiveHint: z.ZodOptional<z.ZodBoolean>;
|
|
11
|
-
idempotentHint: z.ZodOptional<z.ZodBoolean>;
|
|
12
|
-
openWorldHint: z.ZodOptional<z.ZodBoolean>;
|
|
13
|
-
requiresPayment: z.ZodOptional<z.ZodBoolean>;
|
|
14
|
-
}, z.core.$strict>>;
|
|
15
|
-
payment: z.ZodOptional<z.ZodObject<{
|
|
16
|
-
amountUSDC: z.ZodOptional<z.ZodNumber>;
|
|
17
|
-
description: z.ZodOptional<z.ZodString>;
|
|
18
|
-
x402: z.ZodOptional<z.ZodBoolean>;
|
|
19
|
-
plain402: z.ZodOptional<z.ZodBoolean>;
|
|
20
|
-
acceptedMethods: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"x402">, z.ZodLiteral<"402">]>>>;
|
|
21
|
-
acceptedCurrencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
22
|
-
chains: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
23
|
-
facilitator: z.ZodOptional<z.ZodString>;
|
|
24
|
-
}, z.core.$strict>>;
|
|
25
|
-
discovery: z.ZodOptional<z.ZodObject<{
|
|
26
|
-
keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
27
|
-
category: z.ZodOptional<z.ZodString>;
|
|
28
|
-
useCases: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
29
|
-
capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
30
|
-
requirements: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
31
|
-
pricing: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
32
|
-
compatibility: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
33
|
-
documentation: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
34
|
-
}, z.core.$catchall<z.ZodAny>>>;
|
|
35
|
-
chains: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
36
|
-
}, z.core.$catchall<z.ZodAny>>;
|
|
37
|
-
type ToolMetadataOverrides = z.infer<typeof ToolMetadataOverridesSchema>;
|
|
38
|
-
declare const ToolSchema: z.ZodObject<{
|
|
39
|
-
name: z.ZodString;
|
|
40
|
-
description: z.ZodString;
|
|
41
|
-
inputSchema: z.ZodAny;
|
|
42
|
-
annotations: z.ZodOptional<z.ZodObject<{
|
|
43
|
-
title: z.ZodOptional<z.ZodString>;
|
|
44
|
-
readOnlyHint: z.ZodOptional<z.ZodBoolean>;
|
|
45
|
-
destructiveHint: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
-
idempotentHint: z.ZodOptional<z.ZodBoolean>;
|
|
47
|
-
openWorldHint: z.ZodOptional<z.ZodBoolean>;
|
|
48
|
-
requiresPayment: z.ZodOptional<z.ZodBoolean>;
|
|
49
|
-
}, z.core.$strict>>;
|
|
50
|
-
payment: z.ZodOptional<z.ZodObject<{
|
|
51
|
-
amountUSDC: z.ZodOptional<z.ZodNumber>;
|
|
52
|
-
description: z.ZodOptional<z.ZodString>;
|
|
53
|
-
x402: z.ZodOptional<z.ZodBoolean>;
|
|
54
|
-
plain402: z.ZodOptional<z.ZodBoolean>;
|
|
55
|
-
acceptedMethods: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"x402">, z.ZodLiteral<"402">]>>>;
|
|
56
|
-
acceptedCurrencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
57
|
-
chains: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
58
|
-
facilitator: z.ZodOptional<z.ZodString>;
|
|
59
|
-
}, z.core.$strict>>;
|
|
60
|
-
discovery: z.ZodOptional<z.ZodObject<{
|
|
61
|
-
keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
62
|
-
category: z.ZodOptional<z.ZodString>;
|
|
63
|
-
useCases: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
64
|
-
capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
65
|
-
requirements: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
66
|
-
pricing: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
67
|
-
compatibility: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
68
|
-
documentation: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
69
|
-
}, z.core.$catchall<z.ZodAny>>>;
|
|
70
|
-
chains: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
71
|
-
}, z.core.$strict>;
|
|
72
|
-
type Tool = z.infer<typeof ToolSchema>;
|
|
73
|
-
declare const MetadataSchema: z.ZodObject<{
|
|
74
|
-
metadataSpecVersion: z.ZodDefault<z.ZodString>;
|
|
75
|
-
name: z.ZodString;
|
|
76
|
-
displayName: z.ZodString;
|
|
77
|
-
version: z.ZodString;
|
|
78
|
-
description: z.ZodOptional<z.ZodString>;
|
|
79
|
-
author: z.ZodOptional<z.ZodString>;
|
|
80
|
-
repository: z.ZodOptional<z.ZodString>;
|
|
81
|
-
website: z.ZodOptional<z.ZodString>;
|
|
82
|
-
category: z.ZodString;
|
|
83
|
-
termsOfService: z.ZodOptional<z.ZodString>;
|
|
84
|
-
mcpUrl: z.ZodOptional<z.ZodString>;
|
|
85
|
-
payment: z.ZodOptional<z.ZodObject<{
|
|
86
|
-
amountUSDC: z.ZodOptional<z.ZodNumber>;
|
|
87
|
-
description: z.ZodOptional<z.ZodString>;
|
|
88
|
-
x402: z.ZodOptional<z.ZodBoolean>;
|
|
89
|
-
plain402: z.ZodOptional<z.ZodBoolean>;
|
|
90
|
-
acceptedMethods: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"x402">, z.ZodLiteral<"402">]>>>;
|
|
91
|
-
acceptedCurrencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
92
|
-
chains: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
93
|
-
facilitator: z.ZodOptional<z.ZodString>;
|
|
94
|
-
}, z.core.$strict>>;
|
|
95
|
-
tools: z.ZodArray<z.ZodObject<{
|
|
96
|
-
name: z.ZodString;
|
|
97
|
-
description: z.ZodString;
|
|
98
|
-
inputSchema: z.ZodAny;
|
|
99
|
-
annotations: z.ZodOptional<z.ZodObject<{
|
|
100
|
-
title: z.ZodOptional<z.ZodString>;
|
|
101
|
-
readOnlyHint: z.ZodOptional<z.ZodBoolean>;
|
|
102
|
-
destructiveHint: z.ZodOptional<z.ZodBoolean>;
|
|
103
|
-
idempotentHint: z.ZodOptional<z.ZodBoolean>;
|
|
104
|
-
openWorldHint: z.ZodOptional<z.ZodBoolean>;
|
|
105
|
-
requiresPayment: z.ZodOptional<z.ZodBoolean>;
|
|
106
|
-
}, z.core.$strict>>;
|
|
107
|
-
payment: z.ZodOptional<z.ZodObject<{
|
|
108
|
-
amountUSDC: z.ZodOptional<z.ZodNumber>;
|
|
109
|
-
description: z.ZodOptional<z.ZodString>;
|
|
110
|
-
x402: z.ZodOptional<z.ZodBoolean>;
|
|
111
|
-
plain402: z.ZodOptional<z.ZodBoolean>;
|
|
112
|
-
acceptedMethods: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"x402">, z.ZodLiteral<"402">]>>>;
|
|
113
|
-
acceptedCurrencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
114
|
-
chains: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
115
|
-
facilitator: z.ZodOptional<z.ZodString>;
|
|
116
|
-
}, z.core.$strict>>;
|
|
117
|
-
discovery: z.ZodOptional<z.ZodObject<{
|
|
118
|
-
keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
119
|
-
category: z.ZodOptional<z.ZodString>;
|
|
120
|
-
useCases: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
121
|
-
capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
122
|
-
requirements: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
123
|
-
pricing: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
124
|
-
compatibility: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
125
|
-
documentation: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
126
|
-
}, z.core.$catchall<z.ZodAny>>>;
|
|
127
|
-
chains: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
128
|
-
}, z.core.$strict>>;
|
|
129
|
-
discovery: z.ZodOptional<z.ZodObject<{
|
|
130
|
-
keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
131
|
-
category: z.ZodOptional<z.ZodString>;
|
|
132
|
-
useCases: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
133
|
-
capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
134
|
-
requirements: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
135
|
-
pricing: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
136
|
-
compatibility: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
137
|
-
documentation: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
138
|
-
}, z.core.$catchall<z.ZodAny>>>;
|
|
139
|
-
promptExamples: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
140
|
-
iconPath: z.ZodOptional<z.ZodString>;
|
|
141
|
-
videoPath: z.ZodOptional<z.ZodString>;
|
|
142
|
-
image: z.ZodOptional<z.ZodString>;
|
|
143
|
-
animation_url: z.ZodOptional<z.ZodString>;
|
|
144
|
-
chains: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
145
|
-
}, z.core.$strict>;
|
|
146
|
-
type Metadata = z.infer<typeof MetadataSchema>;
|
|
147
|
-
|
|
148
|
-
interface ToolContent {
|
|
149
|
-
type: "text" | "image" | "resource";
|
|
150
|
-
text?: string;
|
|
151
|
-
data?: string;
|
|
152
|
-
mimeType?: string;
|
|
153
|
-
}
|
|
154
|
-
interface ToolResponse {
|
|
155
|
-
content: ToolContent[];
|
|
156
|
-
isError?: boolean;
|
|
157
|
-
}
|
|
158
|
-
declare const HTTP_METHODS: readonly ["GET", "HEAD", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"];
|
|
159
|
-
type HttpMethod = (typeof HTTP_METHODS)[number];
|
|
160
|
-
interface HttpHandlerDefinition {
|
|
161
|
-
method: HttpMethod;
|
|
162
|
-
handler: (request: Request) => Promise<Response> | Response;
|
|
163
|
-
}
|
|
164
|
-
interface McpConfig {
|
|
165
|
-
enabled: boolean;
|
|
166
|
-
mode?: "stdio" | "lambda" | "dual";
|
|
167
|
-
defaultMethod?: string;
|
|
168
|
-
metadataOverrides?: Partial<ToolMetadataOverrides>;
|
|
169
|
-
}
|
|
170
|
-
interface InternalToolDefinition<TSchema extends z.ZodSchema | undefined = z.ZodSchema | undefined> {
|
|
171
|
-
filename: string;
|
|
172
|
-
schema?: TSchema;
|
|
173
|
-
inputSchema?: unknown;
|
|
174
|
-
metadata: ToolMetadataOverrides | null;
|
|
175
|
-
httpHandlers: HttpHandlerDefinition[];
|
|
176
|
-
mcpConfig?: McpConfig | null;
|
|
177
|
-
sourcePath?: string;
|
|
178
|
-
handler?: (params: any) => Promise<ToolResponse>;
|
|
179
|
-
payment?: DefinedPayment | null;
|
|
180
|
-
}
|
|
181
|
-
interface ServerConfig {
|
|
182
|
-
name: string;
|
|
183
|
-
version: string;
|
|
184
|
-
tools: InternalToolDefinition[];
|
|
185
|
-
}
|
|
186
|
-
interface BuildConfig {
|
|
187
|
-
toolsDir: string;
|
|
188
|
-
outputDir: string;
|
|
189
|
-
serverName?: string;
|
|
190
|
-
serverVersion?: string;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
interface GenerateMetadataOptions {
|
|
194
|
-
input: string;
|
|
195
|
-
output?: string;
|
|
196
|
-
}
|
|
197
|
-
interface GenerateMetadataResult {
|
|
198
|
-
metadata: Metadata;
|
|
199
|
-
defaultsApplied: string[];
|
|
200
|
-
tools: InternalToolDefinition[];
|
|
201
|
-
outputPath: string;
|
|
202
|
-
}
|
|
203
|
-
declare function generateMetadataCommand(options: GenerateMetadataOptions): Promise<void>;
|
|
204
|
-
declare function generateMetadata(options: GenerateMetadataOptions): Promise<GenerateMetadataResult>;
|
|
205
|
-
|
|
206
|
-
interface ValidateOptions {
|
|
207
|
-
input: string;
|
|
208
|
-
}
|
|
209
|
-
interface LoadToolsOptions {
|
|
210
|
-
projectRoot?: string;
|
|
211
|
-
}
|
|
212
|
-
declare function validateCommand(options: ValidateOptions): Promise<void>;
|
|
213
|
-
declare function validateFullCommand(options: ValidateOptions): Promise<void>;
|
|
214
|
-
declare function loadAndValidateTools(toolsDir: string, options?: LoadToolsOptions): Promise<InternalToolDefinition[]>;
|
|
215
|
-
|
|
216
|
-
export { type BuildConfig as B, type GenerateMetadataOptions as G, HTTP_METHODS as H, type InternalToolDefinition as I, type McpConfig as M, type ServerConfig as S, type ToolResponse as T, type ValidateOptions as V, generateMetadataCommand as a, type ToolContent as b, type HttpMethod as c, type HttpHandlerDefinition as d, type Tool as e, type ToolMetadataOverrides as f, generateMetadata as g, type Metadata as h, type GenerateMetadataResult as i, validateFullCommand as j, loadAndValidateTools as l, validateCommand as v };
|