@probemesh/sdk 0.1.0

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.
Files changed (83) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +160 -0
  3. package/dist/chunk-257Y7LN2.js +827 -0
  4. package/dist/chunk-257Y7LN2.js.map +1 -0
  5. package/dist/chunk-2ASMVLG4.js +56 -0
  6. package/dist/chunk-2ASMVLG4.js.map +1 -0
  7. package/dist/chunk-2KWGHJYP.js +285 -0
  8. package/dist/chunk-2KWGHJYP.js.map +1 -0
  9. package/dist/chunk-3H7UGVI6.js +1117 -0
  10. package/dist/chunk-3H7UGVI6.js.map +1 -0
  11. package/dist/chunk-5Q3PDYIA.js +657 -0
  12. package/dist/chunk-5Q3PDYIA.js.map +1 -0
  13. package/dist/chunk-CXZOO3U4.js +550 -0
  14. package/dist/chunk-CXZOO3U4.js.map +1 -0
  15. package/dist/chunk-FRFBK4SY.js +270 -0
  16. package/dist/chunk-FRFBK4SY.js.map +1 -0
  17. package/dist/chunk-HJK52QJF.js +994 -0
  18. package/dist/chunk-HJK52QJF.js.map +1 -0
  19. package/dist/chunk-HNBDX7IU.js +705 -0
  20. package/dist/chunk-HNBDX7IU.js.map +1 -0
  21. package/dist/chunk-NYTV263W.js +116 -0
  22. package/dist/chunk-NYTV263W.js.map +1 -0
  23. package/dist/chunk-PXG54XOG.js +595 -0
  24. package/dist/chunk-PXG54XOG.js.map +1 -0
  25. package/dist/chunk-TDOBAMYM.js +607 -0
  26. package/dist/chunk-TDOBAMYM.js.map +1 -0
  27. package/dist/chunk-TV42EZSI.js +2157 -0
  28. package/dist/chunk-TV42EZSI.js.map +1 -0
  29. package/dist/chunk-UU2ZG7P7.js +408 -0
  30. package/dist/chunk-UU2ZG7P7.js.map +1 -0
  31. package/dist/chunk-WKN7QOCA.js +977 -0
  32. package/dist/chunk-WKN7QOCA.js.map +1 -0
  33. package/dist/chunk-ZJOLPBJJ.js +1091 -0
  34. package/dist/chunk-ZJOLPBJJ.js.map +1 -0
  35. package/dist/cli/audit-trail-export.cjs +1193 -0
  36. package/dist/cli/audit-trail-export.cjs.map +1 -0
  37. package/dist/cli/audit-trail-export.d.cts +1 -0
  38. package/dist/cli/audit-trail-export.d.ts +1 -0
  39. package/dist/cli/audit-trail-export.js +24 -0
  40. package/dist/cli/audit-trail-export.js.map +1 -0
  41. package/dist/cli/catalog-check.cjs +2687 -0
  42. package/dist/cli/catalog-check.cjs.map +1 -0
  43. package/dist/cli/catalog-check.d.cts +1 -0
  44. package/dist/cli/catalog-check.d.ts +1 -0
  45. package/dist/cli/catalog-check.js +26 -0
  46. package/dist/cli/catalog-check.js.map +1 -0
  47. package/dist/cli/probemesh-init.cjs +1049 -0
  48. package/dist/cli/probemesh-init.cjs.map +1 -0
  49. package/dist/cli/probemesh-init.d.cts +1 -0
  50. package/dist/cli/probemesh-init.d.ts +1 -0
  51. package/dist/cli/probemesh-init.js +22 -0
  52. package/dist/cli/probemesh-init.js.map +1 -0
  53. package/dist/cli/provider-conformance.cjs +6180 -0
  54. package/dist/cli/provider-conformance.cjs.map +1 -0
  55. package/dist/cli/provider-conformance.d.cts +1 -0
  56. package/dist/cli/provider-conformance.d.ts +1 -0
  57. package/dist/cli/provider-conformance.js +29 -0
  58. package/dist/cli/provider-conformance.js.map +1 -0
  59. package/dist/cli/provider-dossier-check.cjs +2978 -0
  60. package/dist/cli/provider-dossier-check.cjs.map +1 -0
  61. package/dist/cli/provider-dossier-check.d.cts +1 -0
  62. package/dist/cli/provider-dossier-check.d.ts +1 -0
  63. package/dist/cli/provider-dossier-check.js +27 -0
  64. package/dist/cli/provider-dossier-check.js.map +1 -0
  65. package/dist/cli/provider-dossier.cjs +1753 -0
  66. package/dist/cli/provider-dossier.cjs.map +1 -0
  67. package/dist/cli/provider-dossier.d.cts +1 -0
  68. package/dist/cli/provider-dossier.d.ts +1 -0
  69. package/dist/cli/provider-dossier.js +26 -0
  70. package/dist/cli/provider-dossier.js.map +1 -0
  71. package/dist/cli/x402-accept.cjs +6009 -0
  72. package/dist/cli/x402-accept.cjs.map +1 -0
  73. package/dist/cli/x402-accept.d.cts +1 -0
  74. package/dist/cli/x402-accept.d.ts +1 -0
  75. package/dist/cli/x402-accept.js +28 -0
  76. package/dist/cli/x402-accept.js.map +1 -0
  77. package/dist/index.cjs +13671 -0
  78. package/dist/index.cjs.map +1 -0
  79. package/dist/index.d.cts +2026 -0
  80. package/dist/index.d.ts +2026 -0
  81. package/dist/index.js +2560 -0
  82. package/dist/index.js.map +1 -0
  83. package/package.json +111 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli/probemeshInitCli.ts","../../src/errors.ts","../../src/integrationTemplates.ts","../../src/cli/probemesh-init.ts"],"sourcesContent":["import { mkdir, stat, writeFile } from \"node:fs/promises\";\nimport { dirname, isAbsolute, relative, resolve } from \"node:path\";\n\nimport {\n listProbeMeshIntegrationTemplates,\n renderProbeMeshIntegrationTemplate,\n} from \"../integrationTemplates\";\nimport type {\n ProbeMeshIntegrationTemplateFile,\n ProbeMeshIntegrationTemplateId,\n ProbeMeshIntegrationTemplateRenderResult,\n} from \"../integrationTemplates\";\n\nexport interface ProbeMeshInitCliOptions {\n argv?: string[];\n cwd?: string;\n}\n\nexport interface ProbeMeshInitCliResult {\n exitCode: 0 | 2;\n listed: boolean;\n dryRun: boolean;\n stdout: string;\n stderr?: string;\n templateId?: ProbeMeshIntegrationTemplateId | string;\n outDir?: string;\n files?: ProbeMeshIntegrationTemplateFile[];\n}\n\ninterface ParsedCliArgs {\n list?: boolean;\n templateId?: string;\n outDir?: string;\n packageName?: string;\n force?: boolean;\n dryRun?: boolean;\n help?: boolean;\n}\n\nconst USAGE =\n \"Usage: probemesh-init [--list] [--template <id> --out-dir <path>] [--package-name <name>] [--force] [--dry-run]\";\n\nexport async function runProbeMeshInitCli(\n options: ProbeMeshInitCliOptions = {},\n): Promise<ProbeMeshInitCliResult> {\n const argv = options.argv ?? [];\n const cwd = options.cwd ?? process.cwd();\n\n try {\n const parsedArgs = parseCliArgs(argv);\n\n if (parsedArgs.help) {\n return cliSuccess({\n listed: true,\n dryRun: false,\n stdout: `${USAGE}\\n`,\n });\n }\n\n if (parsedArgs.list) {\n return cliSuccess({\n listed: true,\n dryRun: false,\n stdout: formatTemplateList(),\n });\n }\n\n if (!parsedArgs.templateId) {\n return cliFailure(\"--template <id> is required unless --list is used.\");\n }\n\n if (!parsedArgs.outDir) {\n return cliFailure(\"--out-dir <path> is required when generating a template.\");\n }\n\n const rendered = renderProbeMeshIntegrationTemplate({\n templateId: parsedArgs.templateId,\n packageName: parsedArgs.packageName,\n });\n const outDir = resolve(cwd, parsedArgs.outDir);\n const plannedFiles = rendered.files.map((file) => ({\n ...file,\n path: file.path,\n }));\n\n await assertSafeTargets({\n outDir,\n files: plannedFiles,\n force: parsedArgs.force === true,\n });\n\n if (!parsedArgs.dryRun) {\n await writeRenderedTemplate({\n outDir,\n rendered,\n });\n }\n\n return cliSuccess({\n listed: false,\n dryRun: parsedArgs.dryRun === true,\n templateId: rendered.template.id,\n outDir,\n files: plannedFiles,\n stdout: formatGenerationResult({\n rendered,\n outDir,\n dryRun: parsedArgs.dryRun === true,\n }),\n });\n } catch (error) {\n return cliFailure(\n error instanceof Error ? error.message : \"Unknown probemesh-init failure.\",\n );\n }\n}\n\nfunction parseCliArgs(argv: string[]): ParsedCliArgs {\n const parsedArgs: ParsedCliArgs = {};\n\n for (let index = 0; index < argv.length; index += 1) {\n const arg = argv[index];\n\n if (arg === \"--\") {\n continue;\n }\n\n if (arg === \"--help\" || arg === \"-h\") {\n parsedArgs.help = true;\n continue;\n }\n\n if (arg === \"--list\") {\n parsedArgs.list = true;\n continue;\n }\n\n if (arg === \"--template\") {\n parsedArgs.templateId = requireValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--out-dir\") {\n parsedArgs.outDir = requireValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--package-name\") {\n parsedArgs.packageName = requireValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--force\") {\n parsedArgs.force = true;\n continue;\n }\n\n if (arg === \"--dry-run\") {\n parsedArgs.dryRun = true;\n continue;\n }\n\n throw new Error(`Unknown argument \"${arg}\".`);\n }\n\n return parsedArgs;\n}\n\nfunction requireValue(argv: string[], index: number, flag: string) {\n const value = argv[index + 1];\n\n if (!value || value.startsWith(\"--\")) {\n throw new Error(`${flag} requires a value.`);\n }\n\n return value;\n}\n\nfunction formatTemplateList() {\n const templates = listProbeMeshIntegrationTemplates();\n const lines = [\n \"Available ProbeMesh integration templates:\",\n ...templates.map(\n (template) =>\n `- ${template.id}: ${template.name} - ${template.description}`,\n ),\n ];\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatGenerationResult(options: {\n rendered: ProbeMeshIntegrationTemplateRenderResult;\n outDir: string;\n dryRun: boolean;\n}) {\n const prefix = options.dryRun ? \"Dry run: would generate\" : \"Generated\";\n const lines = [\n `${prefix} ${options.rendered.template.id} in ${options.outDir}`,\n `Package: ${options.rendered.packageName}`,\n ...options.rendered.files.map((file) => `- ${file.path}`),\n ];\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nasync function assertSafeTargets(options: {\n outDir: string;\n files: ProbeMeshIntegrationTemplateFile[];\n force: boolean;\n}) {\n const collisions: string[] = [];\n\n for (const file of options.files) {\n const target = resolveTemplateTarget(options.outDir, file.path);\n\n if (options.force) {\n continue;\n }\n\n if (await pathExists(target)) {\n collisions.push(file.path);\n }\n }\n\n if (collisions.length > 0) {\n throw new Error(\n [\n \"Refusing to overwrite existing template files without --force.\",\n `Existing files: ${collisions.join(\", \")}`,\n ].join(\" \"),\n );\n }\n}\n\nasync function writeRenderedTemplate(options: {\n outDir: string;\n rendered: ProbeMeshIntegrationTemplateRenderResult;\n}) {\n for (const file of options.rendered.files) {\n const target = resolveTemplateTarget(options.outDir, file.path);\n await mkdir(dirname(target), {\n recursive: true,\n });\n await writeFile(target, file.content, \"utf8\");\n }\n}\n\nfunction resolveTemplateTarget(outDir: string, filePath: string) {\n const target = resolve(outDir, filePath);\n const relativeTarget = relative(outDir, target);\n\n if (relativeTarget.startsWith(\"..\") || isAbsolute(relativeTarget)) {\n throw new Error(`Template file path escapes output directory: ${filePath}`);\n }\n\n return target;\n}\n\nasync function pathExists(path: string) {\n try {\n await stat(path);\n return true;\n } catch (error) {\n if (\n error &&\n typeof error === \"object\" &&\n \"code\" in error &&\n error.code === \"ENOENT\"\n ) {\n return false;\n }\n\n throw error;\n }\n}\n\nfunction cliSuccess(\n result: Omit<ProbeMeshInitCliResult, \"exitCode\">,\n): ProbeMeshInitCliResult {\n return {\n exitCode: 0,\n ...result,\n };\n}\n\nfunction cliFailure(message: string): ProbeMeshInitCliResult {\n return {\n exitCode: 2,\n listed: false,\n dryRun: false,\n stdout: \"\",\n stderr: `${message}\\n${USAGE}\\n`,\n };\n}\n","import type {\n CallStatus,\n ProbeMeshAttemptMetadata,\n ProbeMeshCallTimeline,\n ProbeMeshCallSafety,\n ProbeMeshErrorCode,\n ProbeMeshRetrySafety,\n ProbeMeshRouteMetadata,\n ReceiptRef,\n} from \"./types\";\n\nexport interface ProbeMeshErrorOptions {\n code: ProbeMeshErrorCode;\n message: string;\n capability?: string;\n provider?: string;\n callId?: string;\n receiptRefs?: ReceiptRef[];\n safety?: ProbeMeshCallSafety;\n timeline?: ProbeMeshCallTimeline;\n retrySafety?: ProbeMeshRetrySafety;\n attempt?: ProbeMeshAttemptMetadata;\n route?: ProbeMeshRouteMetadata;\n cause?: unknown;\n}\n\nexport class ProbeMeshError extends Error {\n readonly code: ProbeMeshErrorCode;\n readonly status: CallStatus = \"failed\";\n readonly capability?: string;\n readonly provider?: string;\n readonly callId?: string;\n readonly receiptRefs?: ReceiptRef[];\n readonly safety?: ProbeMeshCallSafety;\n readonly timeline?: ProbeMeshCallTimeline;\n readonly retrySafety?: ProbeMeshRetrySafety;\n readonly attempt?: ProbeMeshAttemptMetadata;\n readonly route?: ProbeMeshRouteMetadata;\n readonly cause?: unknown;\n\n constructor(options: ProbeMeshErrorOptions) {\n super(options.message);\n this.name = \"ProbeMeshError\";\n this.code = options.code;\n this.capability = options.capability;\n this.provider = options.provider;\n this.callId = options.callId;\n this.receiptRefs = options.receiptRefs;\n this.safety = options.safety;\n this.timeline = options.timeline;\n this.retrySafety = options.retrySafety;\n this.attempt = options.attempt;\n this.route = options.route;\n this.cause = options.cause;\n }\n\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n message: this.message,\n status: this.status,\n capability: this.capability,\n provider: this.provider,\n callId: this.callId,\n receiptRefs: this.receiptRefs,\n safety: this.safety,\n timeline: this.timeline,\n retrySafety: this.retrySafety,\n attempt: this.attempt,\n route: this.route,\n };\n }\n}\n\nexport function isProbeMeshError(error: unknown): error is ProbeMeshError {\n return error instanceof ProbeMeshError;\n}\n","import { ProbeMeshError } from \"./errors\";\n\nexport type ProbeMeshIntegrationTemplateId =\n | \"provider-x402-sandbox\"\n | \"buyer-hosted-router\"\n | \"catalog-policy-ci\"\n | \"audit-trail-export\";\n\nexport interface ProbeMeshIntegrationTemplateFile {\n path: string;\n content: string;\n executable?: boolean;\n}\n\nexport interface ProbeMeshIntegrationTemplate {\n id: ProbeMeshIntegrationTemplateId;\n name: string;\n description: string;\n files: ProbeMeshIntegrationTemplateFile[];\n}\n\nexport interface ProbeMeshIntegrationTemplateRenderOptions {\n templateId: ProbeMeshIntegrationTemplateId | string;\n packageName?: string;\n sdkVersion?: string;\n}\n\nexport interface ProbeMeshIntegrationTemplateRenderResult {\n template: ProbeMeshIntegrationTemplate;\n packageName: string;\n files: ProbeMeshIntegrationTemplateFile[];\n}\n\nconst DEFAULT_SDK_VERSION = \"^0.1.0\";\n\nconst TEMPLATE_ORDER: ProbeMeshIntegrationTemplateId[] = [\n \"provider-x402-sandbox\",\n \"buyer-hosted-router\",\n \"catalog-policy-ci\",\n \"audit-trail-export\",\n];\n\nconst TEMPLATE_PACKAGE_NAMES: Record<ProbeMeshIntegrationTemplateId, string> = {\n \"provider-x402-sandbox\": \"probemesh-provider-x402-sandbox\",\n \"buyer-hosted-router\": \"probemesh-buyer-hosted-router\",\n \"catalog-policy-ci\": \"probemesh-catalog-policy-ci\",\n \"audit-trail-export\": \"probemesh-audit-trail-export\",\n};\n\nconst TEMPLATE_REGISTRY: ProbeMeshIntegrationTemplate[] = [\n {\n id: \"provider-x402-sandbox\",\n name: \"Provider x402 Sandbox\",\n description:\n \"Manifest-backed provider starter with the x402 sandbox protocol and an acceptance config.\",\n files: createProviderX402SandboxFiles(),\n },\n {\n id: \"buyer-hosted-router\",\n name: \"Buyer Hosted Router\",\n description:\n \"Hosted buyer starter with paid provider routing, payment strategy, catalog policy, and audit collection.\",\n files: createBuyerHostedRouterFiles(),\n },\n {\n id: \"catalog-policy-ci\",\n name: \"Catalog Policy CI\",\n description:\n \"CI-friendly catalog policy check starter with machine-readable reports.\",\n files: createCatalogPolicyCiFiles(),\n },\n {\n id: \"audit-trail-export\",\n name: \"Audit Trail Export\",\n description:\n \"Local audit artifact collection and audit trail export starter.\",\n files: createAuditTrailExportFiles(),\n },\n];\n\nexport function listProbeMeshIntegrationTemplates() {\n return TEMPLATE_ORDER.map((id) => cloneTemplate(requireTemplate(id)));\n}\n\nexport function getProbeMeshIntegrationTemplate(\n id: ProbeMeshIntegrationTemplateId | string,\n) {\n return cloneTemplate(requireTemplate(id));\n}\n\nexport function renderProbeMeshIntegrationTemplate(\n options: ProbeMeshIntegrationTemplateRenderOptions,\n): ProbeMeshIntegrationTemplateRenderResult {\n const template = requireTemplate(options.templateId);\n const packageName =\n options.packageName?.trim() ?? TEMPLATE_PACKAGE_NAMES[template.id];\n const sdkVersion = options.sdkVersion?.trim() ?? DEFAULT_SDK_VERSION;\n\n assertValidPackageName(packageName);\n assertNonEmptyString(sdkVersion, \"sdkVersion\");\n\n return {\n template: cloneTemplate(template),\n packageName,\n files: template.files.map((file) => ({\n ...file,\n path: validateRelativeTemplatePath(file.path),\n content: renderTemplateContent(file.content, {\n packageName,\n sdkVersion,\n }),\n })),\n };\n}\n\nfunction requireTemplate(id: ProbeMeshIntegrationTemplateId | string) {\n const template = TEMPLATE_REGISTRY.find((candidate) => candidate.id === id);\n\n if (!template) {\n throw new ProbeMeshError({\n code: \"invalid_request\",\n message: `Unknown ProbeMesh integration template \"${id}\".`,\n });\n }\n\n return template;\n}\n\nfunction cloneTemplate(template: ProbeMeshIntegrationTemplate) {\n return {\n ...template,\n files: template.files.map((file) => ({ ...file })),\n };\n}\n\nfunction renderTemplateContent(\n content: string,\n values: {\n packageName: string;\n sdkVersion: string;\n },\n) {\n return content\n .replaceAll(\"{{packageName}}\", values.packageName)\n .replaceAll(\"{{sdkVersion}}\", values.sdkVersion);\n}\n\nfunction assertNonEmptyString(value: string, label: string) {\n if (value.trim().length === 0) {\n throw new ProbeMeshError({\n code: \"invalid_request\",\n message: `${label} must be a non-empty string.`,\n });\n }\n}\n\nfunction assertValidPackageName(packageName: string) {\n assertNonEmptyString(packageName, \"packageName\");\n\n if (\n packageName.length > 214 ||\n packageName.startsWith(\".\") ||\n packageName.startsWith(\"_\") ||\n packageName.includes(\" \") ||\n !/^(?:@[a-z0-9][a-z0-9._-]*\\/)?[a-z0-9][a-z0-9._-]*$/.test(packageName)\n ) {\n throw new ProbeMeshError({\n code: \"invalid_request\",\n message: `Invalid packageName \"${packageName}\".`,\n });\n }\n}\n\nfunction validateRelativeTemplatePath(path: string) {\n assertNonEmptyString(path, \"template file path\");\n\n if (\n path.startsWith(\"/\") ||\n path.startsWith(\"\\\\\") ||\n path.includes(\"..\") ||\n path.split(/[\\\\/]/).some((segment) => segment.length === 0)\n ) {\n throw new ProbeMeshError({\n code: \"invalid_request\",\n message: `Invalid template file path \"${path}\".`,\n });\n }\n\n return path;\n}\n\nfunction createProviderX402SandboxFiles(): ProbeMeshIntegrationTemplateFile[] {\n return [\n templateFile(\n \"package.json\",\n [\n \"{\",\n ' \"name\": \"{{packageName}}\",',\n ' \"private\": true,',\n ' \"type\": \"module\",',\n ' \"engines\": {',\n ' \"node\": \">=20.12.0\"',\n \" },\",\n ' \"packageManager\": \"pnpm@10.33.0\",',\n ' \"scripts\": {',\n ' \"dev\": \"tsx src/index.ts\",',\n ' \"accept:x402\": \"probemesh-x402-accept --config x402-acceptance.config.mjs\",',\n ' \"conformance:provider\": \"probemesh-conformance --config provider-conformance.config.mjs\",',\n ' \"dossier:provider\": \"probemesh-dossier --config provider-dossier.config.mjs\"',\n \" },\",\n ' \"dependencies\": {',\n ' \"@probemesh/sdk\": \"{{sdkVersion}}\"',\n \" },\",\n ' \"devDependencies\": {',\n ' \"tsx\": \"^4.15.7\",',\n ' \"typescript\": \"^5.4.5\"',\n \" }\",\n \"}\",\n ],\n ),\n templateFile(\n \"README.md\",\n [\n \"# {{packageName}}\",\n \"\",\n \"Manifest-backed ProbeMesh provider starter using the local x402 sandbox protocol.\",\n \"\",\n \"## Run\",\n \"\",\n \"```sh\",\n \"pnpm install\",\n \"pnpm dev\",\n \"pnpm accept:x402\",\n \"pnpm conformance:provider\",\n \"pnpm dossier:provider\",\n \"```\",\n \"\",\n \"`pnpm accept:x402` writes a JSON report, Markdown report, and provider catalog artifact under `artifacts/`.\",\n \"\",\n \"`pnpm conformance:provider` writes a JSON report, Markdown report, and provider conformance artifact under `artifacts/`.\",\n \"\",\n \"`pnpm dossier:provider` bundles the catalog and conformance artifacts into one provider onboarding dossier under `artifacts/`.\",\n \"\",\n \"The x402 sandbox emits deterministic payment headers and receipts. It does not use a real wallet, facilitator, settlement network, or live funds.\",\n ],\n ),\n templateFile(\n \"src/index.ts\",\n [\n 'import {',\n \" createAdapterFromManifest,\",\n \" createProbeMesh,\",\n \" createX402SandboxProtocol,\",\n \" hasReceipt,\",\n '} from \"@probemesh/sdk\";',\n \"\",\n \"const providerId = \\\"starter-x402-provider\\\";\",\n \"const manifest = {\",\n \" id: providerId,\",\n \" displayName: \\\"Starter x402 Provider\\\",\",\n \" capabilities: [\\\"price-lookup\\\"],\",\n \" protocolMode: \\\"x402\\\",\",\n \" paymentOptions: [\",\n \" {\",\n \" id: \\\"x402-sandbox-usdc\\\",\",\n \" protocolMode: \\\"x402\\\",\",\n \" pricing: { unit: \\\"call\\\", amountUsd: 0.01, currency: \\\"USD\\\" },\",\n \" receiptTypes: [\\\"payment_proof\\\", \\\"settlement_confirmation\\\", \\\"provider_delivery\\\"],\",\n \" },\",\n \" ],\",\n \" pricing: { unit: \\\"call\\\", amountUsd: 0.01, currency: \\\"USD\\\" },\",\n \" inputSchema: { type: \\\"object\\\" },\",\n \" outputSchema: { type: \\\"object\\\" },\",\n \" receipts: { payment: true, delivery: true, responseEvidence: false },\",\n \"} as const;\",\n \"\",\n \"const adapter = createAdapterFromManifest(\",\n \" manifest,\",\n \" {\",\n \" \\\"price-lookup\\\": (_request, context) => ({\",\n \" data: { symbol: \\\"BTC\\\", currency: \\\"USD\\\", price: 64000, paidWith: context.paymentSelection?.protocolMode },\",\n \" receiptRefs: [\",\n \" {\",\n \" type: \\\"provider_delivery\\\",\",\n \" provider: providerId,\",\n \" status: \\\"recorded\\\",\",\n \" ref: context.callId + \\\":provider_delivery\\\",\",\n \" timestamp: context.startedAt.toISOString(),\",\n \" },\",\n \" ],\",\n \" }),\",\n \" },\",\n \" {\",\n \" protocolAdapters: [createX402SandboxProtocol({ providerId })],\",\n \" },\",\n \");\",\n \"\",\n \"const probemesh = createProbeMesh({ adapters: [adapter] });\",\n \"const response = await probemesh.call({\",\n \" capability: \\\"price-lookup\\\",\",\n \" input: { symbol: \\\"BTC\\\", currency: \\\"USD\\\" },\",\n \" constraints: { maxCostUsd: 0.02, requireReceipt: true },\",\n \" paymentPreferences: { allowedProtocols: [\\\"x402\\\"] },\",\n \" paymentStrategy: { mode: \\\"receipt_coverage\\\" },\",\n \" idempotencyKey: \\\"starter-x402-call\\\",\",\n \"});\",\n \"\",\n \"console.log(JSON.stringify({\",\n \" status: response.status,\",\n \" provider: response.provider.id,\",\n \" protocol: response.route?.paymentSelection?.protocolMode,\",\n \" hasPaymentProof: hasReceipt(response, \\\"payment_proof\\\"),\",\n \" hasSettlement: hasReceipt(response, \\\"settlement_confirmation\\\"),\",\n \" hasDelivery: hasReceipt(response, \\\"provider_delivery\\\"),\",\n \" safety: response.safety,\",\n \"}, null, 2));\",\n ],\n ),\n templateFile(\n \"x402-acceptance.config.mjs\",\n [\n 'import { createAdapterFromManifest, createX402SandboxProtocol } from \"@probemesh/sdk\";',\n \"\",\n \"const providerId = \\\"starter-x402-provider\\\";\",\n \"const manifest = {\",\n \" id: providerId,\",\n \" displayName: \\\"Starter x402 Provider\\\",\",\n \" capabilities: [\\\"price-lookup\\\"],\",\n \" protocolMode: \\\"x402\\\",\",\n \" paymentOptions: [\",\n \" {\",\n \" id: \\\"x402-sandbox-usdc\\\",\",\n \" protocolMode: \\\"x402\\\",\",\n \" pricing: { unit: \\\"call\\\", amountUsd: 0.01, currency: \\\"USD\\\" },\",\n \" receiptTypes: [\\\"payment_proof\\\", \\\"settlement_confirmation\\\", \\\"provider_delivery\\\"],\",\n \" },\",\n \" ],\",\n \" pricing: { unit: \\\"call\\\", amountUsd: 0.01, currency: \\\"USD\\\" },\",\n \" inputSchema: { type: \\\"object\\\" },\",\n \" outputSchema: { type: \\\"object\\\" },\",\n \" receipts: { payment: true, delivery: true, responseEvidence: false },\",\n \"};\",\n \"\",\n \"const adapter = createAdapterFromManifest(\",\n \" manifest,\",\n \" {\",\n \" \\\"price-lookup\\\": (_request, context) => ({\",\n \" data: { symbol: \\\"BTC\\\", currency: \\\"USD\\\", price: 64000 },\",\n \" receiptRefs: [\",\n \" {\",\n \" type: \\\"provider_delivery\\\",\",\n \" provider: providerId,\",\n \" status: \\\"recorded\\\",\",\n \" ref: context.callId + \\\":provider_delivery\\\",\",\n \" timestamp: context.startedAt.toISOString(),\",\n \" },\",\n \" ],\",\n \" }),\",\n \" },\",\n \" { protocolAdapters: [createX402SandboxProtocol({ providerId })] },\",\n \");\",\n \"\",\n \"export default {\",\n \" acceptance: {\",\n \" adapters: [adapter],\",\n \" request: {\",\n \" capability: \\\"price-lookup\\\",\",\n \" input: { symbol: \\\"BTC\\\", currency: \\\"USD\\\" },\",\n \" constraints: { maxCostUsd: 0.02, requireReceipt: true },\",\n \" paymentPreferences: { allowedProtocols: [\\\"x402\\\"] },\",\n \" idempotencyKey: \\\"starter-x402-acceptance\\\",\",\n \" },\",\n \" expectedProviderId: providerId,\",\n \" requiredReceiptTypes: [\\\"payment_proof\\\", \\\"settlement_confirmation\\\", \\\"provider_delivery\\\"],\",\n \" },\",\n \" catalog: { manifest, artifactId: providerId + \\\":x402-sandbox\\\" },\",\n \" report: { title: \\\"Starter x402 sandbox acceptance\\\" },\",\n \" outputs: {\",\n \" json: \\\"artifacts/x402-acceptance-report.json\\\",\",\n \" markdown: \\\"artifacts/x402-acceptance-report.md\\\",\",\n \" catalog: \\\"artifacts/provider-catalog-artifact.json\\\",\",\n \" },\",\n \"};\",\n ],\n ),\n templateFile(\n \"provider-conformance.config.mjs\",\n [\n 'import { createAdapterFromManifest, createX402SandboxProtocol } from \"@probemesh/sdk\";',\n \"\",\n \"const providerId = \\\"starter-x402-provider\\\";\",\n \"const requiredReceiptTypes = [\\\"payment_proof\\\", \\\"settlement_confirmation\\\", \\\"provider_delivery\\\"];\",\n \"const manifest = {\",\n \" id: providerId,\",\n \" displayName: \\\"Starter x402 Provider\\\",\",\n \" capabilities: [\\\"price-lookup\\\"],\",\n \" protocolMode: \\\"x402\\\",\",\n \" paymentOptions: [\",\n \" {\",\n \" id: \\\"x402-sandbox-usdc\\\",\",\n \" protocolMode: \\\"x402\\\",\",\n \" pricing: { unit: \\\"call\\\", amountUsd: 0.01, currency: \\\"USD\\\" },\",\n \" receiptTypes: requiredReceiptTypes,\",\n \" },\",\n \" ],\",\n \" pricing: { unit: \\\"call\\\", amountUsd: 0.01, currency: \\\"USD\\\" },\",\n \" inputSchema: {\",\n \" type: \\\"object\\\",\",\n \" required: [\\\"symbol\\\", \\\"currency\\\"],\",\n \" properties: {\",\n \" symbol: { type: \\\"string\\\" },\",\n \" currency: { type: \\\"string\\\" },\",\n \" },\",\n \" additionalProperties: true,\",\n \" },\",\n \" outputSchema: {\",\n \" type: \\\"object\\\",\",\n \" required: [\\\"symbol\\\", \\\"currency\\\", \\\"price\\\"],\",\n \" properties: {\",\n \" symbol: { type: \\\"string\\\" },\",\n \" currency: { type: \\\"string\\\" },\",\n \" price: { type: \\\"number\\\" },\",\n \" paidWith: { type: \\\"string\\\" },\",\n \" },\",\n \" additionalProperties: true,\",\n \" },\",\n \" receipts: { payment: true, delivery: true, responseEvidence: false },\",\n \"};\",\n \"\",\n \"const adapter = createAdapterFromManifest(\",\n \" manifest,\",\n \" {\",\n \" \\\"price-lookup\\\": (_request, context) => ({\",\n \" data: { symbol: \\\"BTC\\\", currency: \\\"USD\\\", price: 64000, paidWith: context.paymentSelection?.protocolMode },\",\n \" receiptRefs: [\",\n \" {\",\n \" type: \\\"provider_delivery\\\",\",\n \" provider: providerId,\",\n \" status: \\\"recorded\\\",\",\n \" ref: context.callId + \\\":provider_delivery\\\",\",\n \" timestamp: context.startedAt.toISOString(),\",\n \" },\",\n \" ],\",\n \" }),\",\n \" },\",\n \" { protocolAdapters: [createX402SandboxProtocol({ providerId })] },\",\n \");\",\n \"\",\n \"export default {\",\n \" conformance: {\",\n \" manifest,\",\n \" adapters: [adapter],\",\n \" request: {\",\n \" capability: \\\"price-lookup\\\",\",\n \" input: { symbol: \\\"BTC\\\", currency: \\\"USD\\\" },\",\n \" constraints: { maxCostUsd: 0.02, requireReceipt: true },\",\n \" paymentPreferences: { allowedProtocols: [\\\"x402\\\"], requiredReceiptTypes },\",\n \" paymentStrategy: { mode: \\\"receipt_coverage\\\", preferredReceiptTypes: requiredReceiptTypes },\",\n \" idempotencyKey: \\\"starter-x402-conformance\\\",\",\n \" },\",\n \" expectedProviderId: providerId,\",\n \" requiredReceiptTypes,\",\n \" schemaValidation: { input: true, output: true },\",\n \" },\",\n \" report: { title: \\\"Starter x402 sandbox conformance\\\", format: \\\"markdown\\\" },\",\n \" artifact: { artifactId: providerId + \\\":x402-sandbox-conformance\\\" },\",\n \" outputs: {\",\n \" json: \\\"artifacts/provider-conformance-report.json\\\",\",\n \" markdown: \\\"artifacts/provider-conformance-report.md\\\",\",\n \" artifact: \\\"artifacts/provider-conformance-artifact.json\\\",\",\n \" },\",\n \"};\",\n ],\n ),\n templateFile(\n \"provider-dossier.config.mjs\",\n [\n \"export default {\",\n \" catalogArtifactFile: \\\"artifacts/provider-catalog-artifact.json\\\",\",\n \" conformanceArtifactFile: \\\"artifacts/provider-conformance-artifact.json\\\",\",\n \" dossier: {\",\n \" dossierId: \\\"starter-x402-provider:onboarding-dossier\\\",\",\n \" title: \\\"Starter x402 provider onboarding dossier\\\",\",\n \" format: \\\"markdown\\\",\",\n \" },\",\n \" outputs: {\",\n \" json: \\\"artifacts/provider-onboarding-dossier.json\\\",\",\n \" markdown: \\\"artifacts/provider-onboarding-dossier.md\\\",\",\n \" },\",\n \"};\",\n ],\n ),\n ];\n}\n\nfunction createBuyerHostedRouterFiles(): ProbeMeshIntegrationTemplateFile[] {\n return [\n templateFile(\n \"package.json\",\n [\n \"{\",\n ' \"name\": \"{{packageName}}\",',\n ' \"private\": true,',\n ' \"type\": \"module\",',\n ' \"engines\": {',\n ' \"node\": \">=20.12.0\"',\n \" },\",\n ' \"packageManager\": \"pnpm@10.33.0\",',\n ' \"scripts\": {',\n ' \"dev\": \"tsx src/index.ts\"',\n \" },\",\n ' \"dependencies\": {',\n ' \"@probemesh/sdk\": \"{{sdkVersion}}\"',\n \" },\",\n ' \"devDependencies\": {',\n ' \"tsx\": \"^4.15.7\",',\n ' \"typescript\": \"^5.4.5\"',\n \" }\",\n \"}\",\n ],\n ),\n templateFile(\n \"README.md\",\n [\n \"# {{packageName}}\",\n \"\",\n \"Hosted buyer starter with a paid provider, payment strategy, catalog policy, and audit collector.\",\n \"\",\n \"## Run\",\n \"\",\n \"```sh\",\n \"pnpm install\",\n \"pnpm dev\",\n \"```\",\n \"\",\n \"Everything runs locally. The payment protocol is mock-only and intended for integration testing.\",\n ],\n ),\n templateFile(\n \"src/index.ts\",\n [\n 'import {',\n \" createPaidPriceLookupProvider,\",\n \" createProbeMesh,\",\n \" createProbeMeshAuditTrailCollector,\",\n \" createProviderCatalog,\",\n \" createProviderCatalogArtifact,\",\n \" startHostedRouter,\",\n \" summarizeProbeMeshAuditTrailBundle,\",\n '} from \"@probemesh/sdk\";',\n \"\",\n \"const apiKey = \\\"local-dev-api-key\\\";\",\n \"const providerId = \\\"paid-price-provider\\\";\",\n \"const receiptTypes = [\\\"payment_proof\\\", \\\"provider_delivery\\\"] as const;\",\n \"const manifest = {\",\n \" id: providerId,\",\n \" displayName: \\\"Paid Price Lookup Provider\\\",\",\n \" capabilities: [\\\"price-lookup\\\"],\",\n \" protocolMode: \\\"mock-payment\\\",\",\n \" paymentOptions: [\",\n \" {\",\n \" id: \\\"mock-payment-standard\\\",\",\n \" protocolMode: \\\"mock-payment\\\",\",\n \" pricing: { unit: \\\"call\\\", amountUsd: 0.01, currency: \\\"USD\\\" },\",\n \" receiptTypes: [...receiptTypes],\",\n \" },\",\n \" ],\",\n \" pricing: { unit: \\\"call\\\", amountUsd: 0.01, currency: \\\"USD\\\" },\",\n \" inputSchema: { type: \\\"object\\\" },\",\n \" outputSchema: { type: \\\"object\\\" },\",\n \" receipts: { payment: true, delivery: true, responseEvidence: false },\",\n \"} as const;\",\n \"\",\n \"const acceptanceReport = {\",\n \" title: \\\"Starter paid provider acceptance\\\",\",\n \" status: \\\"passed\\\",\",\n \" gate: { accepted: true, status: \\\"accepted\\\", requiredCheckNames: [], failedRequiredCheckNames: [], reasons: [\\\"local starter\\\"] },\",\n \" summary: {\",\n \" status: \\\"passed\\\", totalChecks: 1, passedChecks: 1, failedChecks: 0, failedCheckNames: [],\",\n \" providerId, receiptTypes: [...receiptTypes], requiredReceiptTypes: [...receiptTypes],\",\n \" timelineEventTypes: [\\\"call.completed\\\"], telemetryEventTypes: [\\\"call.completed\\\"],\",\n \" safety: { paymentStatus: \\\"authorized\\\", settlementStatus: \\\"settled\\\", deliveryStatus: \\\"delivered\\\", moneyMayHaveMoved: true },\",\n \" retrySafety: { retryable: false, safeToAutoRetry: false, reason: \\\"completed\\\" },\",\n \" },\",\n \" checks: [],\",\n \" receipts: {\",\n \" total: 2, types: [...receiptTypes], providers: [providerId],\",\n \" byType: { payment_proof: 1, provider_delivery: 1 },\",\n \" hasPaymentProof: true, hasSettlementConfirmation: false, hasProviderDelivery: true,\",\n \" },\",\n \" timelineEventTypes: [\\\"call.completed\\\"],\",\n \" telemetryEventTypes: [\\\"call.completed\\\"],\",\n \" safety: { paymentStatus: \\\"authorized\\\", settlementStatus: \\\"settled\\\", deliveryStatus: \\\"delivered\\\", moneyMayHaveMoved: true },\",\n \" retrySafety: { retryable: false, safeToAutoRetry: false, reason: \\\"completed\\\" },\",\n \"} as const;\",\n \"\",\n \"const catalog = createProviderCatalog({\",\n \" artifacts: [\",\n \" createProviderCatalogArtifact({\",\n \" manifest,\",\n \" acceptanceReport,\",\n \" artifactId: providerId + \\\":mock-payment\\\",\",\n \" generatedAt: \\\"2026-05-15T00:00:00.000Z\\\",\",\n \" }),\",\n \" ],\",\n \"});\",\n \"\",\n \"const collector = createProbeMeshAuditTrailCollector();\",\n \"const router = await startHostedRouter({\",\n \" port: 0,\",\n \" apiKeys: [apiKey],\",\n \" adapters: [createPaidPriceLookupProvider()],\",\n \" catalogPolicy: {\",\n \" catalog,\",\n \" requiredReceiptTypes: [...receiptTypes],\",\n \" maxCostUsd: 0.02,\",\n \" },\",\n \" auditArtifacts: { enabled: true, onArtifact: collector.onArtifact },\",\n \"});\",\n \"\",\n \"try {\",\n \" const probemesh = createProbeMesh({ hosted: { baseUrl: router.url, apiKey } });\",\n \" const response = await probemesh.call({\",\n \" capability: \\\"price-lookup\\\",\",\n \" input: { symbol: \\\"ETH\\\", currency: \\\"USD\\\" },\",\n \" constraints: { maxCostUsd: 0.02, requireReceipt: true },\",\n \" paymentPreferences: { allowedProtocols: [\\\"mock-payment\\\"] },\",\n \" paymentStrategy: { mode: \\\"lowest_cost\\\" },\",\n \" idempotencyKey: \\\"buyer-hosted-router-demo\\\",\",\n \" });\",\n \" const bundle = collector.createBundle({ bundleId: \\\"buyer-hosted-router-audit\\\" });\",\n \" console.log(JSON.stringify({\",\n \" status: response.status,\",\n \" provider: response.provider.id,\",\n \" route: response.route,\",\n \" safety: response.safety,\",\n \" auditSummary: summarizeProbeMeshAuditTrailBundle(bundle),\",\n \" }, null, 2));\",\n \"} finally {\",\n \" await router.close();\",\n \"}\",\n ],\n ),\n ];\n}\n\nfunction createCatalogPolicyCiFiles(): ProbeMeshIntegrationTemplateFile[] {\n return [\n templateFile(\n \"package.json\",\n [\n \"{\",\n ' \"name\": \"{{packageName}}\",',\n ' \"private\": true,',\n ' \"type\": \"module\",',\n ' \"engines\": {',\n ' \"node\": \">=20.12.0\"',\n \" },\",\n ' \"packageManager\": \"pnpm@10.33.0\",',\n ' \"scripts\": {',\n ' \"check:catalog\": \"probemesh-catalog-check --config catalog-policy.config.mjs --format markdown --out-json artifacts/catalog-policy.json --out-md artifacts/catalog-policy.md --out-bundle artifacts/catalog-policy-bundle.json\"',\n \" },\",\n ' \"dependencies\": {',\n ' \"@probemesh/sdk\": \"{{sdkVersion}}\"',\n \" }\",\n \"}\",\n ],\n ),\n templateFile(\n \"README.md\",\n [\n \"# {{packageName}}\",\n \"\",\n \"CI starter for validating a buyer-side ProbeMesh provider catalog and router policy.\",\n \"\",\n \"## Run\",\n \"\",\n \"```sh\",\n \"pnpm install\",\n \"pnpm check:catalog\",\n \"```\",\n \"\",\n \"The generated artifacts are safe to store in CI because they contain metadata and hashes, not secrets or executable adapters.\",\n ],\n ),\n templateFile(\n \"catalog-policy.config.mjs\",\n [\n 'import { createProviderCatalogArtifact } from \"@probemesh/sdk\";',\n \"\",\n \"const providerId = \\\"catalog-ready-price-provider\\\";\",\n \"const receiptTypes = [\\\"payment_proof\\\", \\\"provider_delivery\\\"];\",\n \"const manifest = {\",\n \" id: providerId,\",\n \" displayName: \\\"Catalog Ready Price Provider\\\",\",\n \" capabilities: [\\\"price-lookup\\\"],\",\n \" protocolMode: \\\"mock-payment\\\",\",\n \" paymentOptions: [\",\n \" {\",\n \" id: \\\"mock-payment-standard\\\",\",\n \" protocolMode: \\\"mock-payment\\\",\",\n \" pricing: { unit: \\\"call\\\", amountUsd: 0.01, currency: \\\"USD\\\" },\",\n \" receiptTypes,\",\n \" },\",\n \" ],\",\n \" pricing: { unit: \\\"call\\\", amountUsd: 0.01, currency: \\\"USD\\\" },\",\n \" inputSchema: { type: \\\"object\\\" },\",\n \" outputSchema: { type: \\\"object\\\" },\",\n \" receipts: { payment: true, delivery: true, responseEvidence: false },\",\n \"};\",\n \"const acceptanceReport = {\",\n \" title: \\\"Catalog ready provider\\\",\",\n \" status: \\\"passed\\\",\",\n \" gate: { accepted: true, status: \\\"accepted\\\", requiredCheckNames: [], failedRequiredCheckNames: [], reasons: [\\\"starter fixture\\\"] },\",\n \" summary: { status: \\\"passed\\\", totalChecks: 1, passedChecks: 1, failedChecks: 0, failedCheckNames: [], providerId, receiptTypes, requiredReceiptTypes: receiptTypes, timelineEventTypes: [\\\"call.completed\\\"], telemetryEventTypes: [\\\"call.completed\\\"] },\",\n \" checks: [],\",\n \" receipts: { total: 2, types: receiptTypes, providers: [providerId], byType: { payment_proof: 1, provider_delivery: 1 }, hasPaymentProof: true, hasSettlementConfirmation: false, hasProviderDelivery: true },\",\n \" timelineEventTypes: [\\\"call.completed\\\"],\",\n \" telemetryEventTypes: [\\\"call.completed\\\"],\",\n \"};\",\n \"\",\n \"export default {\",\n \" artifacts: [createProviderCatalogArtifact({ manifest, acceptanceReport, artifactId: providerId + \\\":mock-payment\\\" })],\",\n \" catalogPolicy: { status: \\\"ready\\\", maxCostUsd: 0.02, requiredReceiptTypes: receiptTypes },\",\n \" adapterInventory: [{ id: providerId, capabilities: [\\\"price-lookup\\\"], pricing: manifest.pricing }],\",\n \" queries: [\",\n \" {\",\n \" capability: \\\"price-lookup\\\",\",\n \" minMatches: 1,\",\n \" paymentPreferences: { allowedProtocols: [\\\"mock-payment\\\"], requiredReceiptTypes: receiptTypes },\",\n \" paymentStrategy: { mode: \\\"lowest_cost\\\" },\",\n \" },\",\n \" ],\",\n \" report: { title: \\\"Starter catalog policy check\\\" },\",\n \" bundle: { bundleId: \\\"starter-catalog-policy-bundle\\\" },\",\n \"};\",\n ],\n ),\n ];\n}\n\nfunction createAuditTrailExportFiles(): ProbeMeshIntegrationTemplateFile[] {\n return [\n templateFile(\n \"package.json\",\n [\n \"{\",\n ' \"name\": \"{{packageName}}\",',\n ' \"private\": true,',\n ' \"type\": \"module\",',\n ' \"engines\": {',\n ' \"node\": \">=20.12.0\"',\n \" },\",\n ' \"packageManager\": \"pnpm@10.33.0\",',\n ' \"scripts\": {',\n ' \"dev\": \"tsx src/index.ts\",',\n ' \"export:audit-trail\": \"probemesh-audit-trail-export --config audit-trail.config.mjs --format markdown --out-json artifacts/audit-trail.json --out-md artifacts/audit-trail.md\"',\n \" },\",\n ' \"dependencies\": {',\n ' \"@probemesh/sdk\": \"{{sdkVersion}}\"',\n \" },\",\n ' \"devDependencies\": {',\n ' \"tsx\": \"^4.15.7\",',\n ' \"typescript\": \"^5.4.5\"',\n \" }\",\n \"}\",\n ],\n ),\n templateFile(\n \"README.md\",\n [\n \"# {{packageName}}\",\n \"\",\n \"Starter for collecting safe ProbeMesh call audit artifacts and exporting a local audit trail bundle.\",\n \"\",\n \"## Run\",\n \"\",\n \"```sh\",\n \"pnpm install\",\n \"pnpm dev\",\n \"pnpm export:audit-trail\",\n \"```\",\n \"\",\n \"Audit artifacts include route, receipts, safety, retry decisions, and hashes. Raw request input and secrets are not stored.\",\n ],\n ),\n templateFile(\n \"src/index.ts\",\n [\n 'import {',\n \" createPaidPriceLookupProvider,\",\n \" createProbeMesh,\",\n \" createProbeMeshAuditTrailCollector,\",\n \" formatProbeMeshAuditTrailBundle,\",\n \" startHostedRouter,\",\n '} from \"@probemesh/sdk\";',\n \"\",\n \"const apiKey = \\\"local-audit-api-key\\\";\",\n \"const collector = createProbeMeshAuditTrailCollector();\",\n \"const router = await startHostedRouter({\",\n \" port: 0,\",\n \" apiKeys: [apiKey],\",\n \" adapters: [createPaidPriceLookupProvider()],\",\n \" auditArtifacts: { enabled: true, onArtifact: collector.onArtifact },\",\n \"});\",\n \"\",\n \"try {\",\n \" const probemesh = createProbeMesh({ hosted: { baseUrl: router.url, apiKey } });\",\n \" await probemesh.call({\",\n \" capability: \\\"price-lookup\\\",\",\n \" input: { symbol: \\\"SOL\\\", currency: \\\"USD\\\" },\",\n \" constraints: { maxCostUsd: 0.02, requireReceipt: true },\",\n \" paymentPreferences: { allowedProtocols: [\\\"mock-payment\\\"] },\",\n \" idempotencyKey: \\\"audit-trail-starter-call\\\",\",\n \" });\",\n \" const bundle = collector.createBundle({ bundleId: \\\"audit-trail-starter-bundle\\\" });\",\n \" console.log(formatProbeMeshAuditTrailBundle(bundle, { format: \\\"markdown\\\" }));\",\n \"} finally {\",\n \" await router.close();\",\n \"}\",\n ],\n ),\n templateFile(\n \"audit-trail.config.mjs\",\n [\n 'import { createProbeMeshCallAuditArtifact } from \"@probemesh/sdk\";',\n \"\",\n \"const generatedAt = \\\"2026-05-15T00:00:00.000Z\\\";\",\n \"const response = {\",\n \" callId: \\\"starter-audit-call\\\",\",\n \" capability: \\\"price-lookup\\\",\",\n \" data: { symbol: \\\"ETH\\\", currency: \\\"USD\\\", price: 3200 },\",\n \" provider: { id: \\\"starter-audit-provider\\\", displayName: \\\"Starter Audit Provider\\\", mode: \\\"hosted\\\" },\",\n \" cost: { unit: \\\"call\\\", amountUsd: 0.01, currency: \\\"USD\\\" },\",\n \" latencyMs: 4,\",\n \" receiptRefs: [{ type: \\\"provider_delivery\\\", provider: \\\"starter-audit-provider\\\", status: \\\"recorded\\\", ref: \\\"starter-audit-call:delivery\\\", timestamp: generatedAt }],\",\n \" retrySafety: { retryable: false, safeToAutoRetry: false, reason: \\\"completed\\\" },\",\n \" status: \\\"completed\\\",\",\n \"};\",\n \"\",\n \"export default {\",\n \" artifacts: [\",\n \" createProbeMeshCallAuditArtifact({\",\n \" request: { capability: \\\"price-lookup\\\", input: { symbol: \\\"ETH\\\" }, idempotencyKey: \\\"starter-audit-call\\\" },\",\n \" response,\",\n \" generatedAt,\",\n \" }),\",\n \" ],\",\n \" bundle: { bundleId: \\\"starter-audit-trail\\\", generatedAt },\",\n \"};\",\n ],\n ),\n ];\n}\n\nfunction templateFile(path: string, lines: string[]): ProbeMeshIntegrationTemplateFile {\n return {\n path,\n content: `${lines.join(\"\\n\")}\\n`,\n };\n}\n","#!/usr/bin/env node\nimport { runProbeMeshInitCli } from \"./probemeshInitCli\";\n\nvoid main();\n\nasync function main() {\n const result = await runProbeMeshInitCli({\n argv: process.argv.slice(2),\n cwd: process.cwd(),\n });\n\n if (result.stdout) {\n process.stdout.write(result.stdout);\n }\n\n if (result.stderr) {\n process.stderr.write(result.stderr);\n }\n\n process.exitCode = result.exitCode;\n}\n"],"mappings":"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AA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,+BAAmE;AAC1E,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,6BAAiE;AACxE,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,8BAAkE;AACzE,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,aAAa,MAA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","names":[]}
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ runProbeMeshInitCli
4
+ } from "../chunk-HJK52QJF.js";
5
+ import "../chunk-2ASMVLG4.js";
6
+
7
+ // src/cli/probemesh-init.ts
8
+ void main();
9
+ async function main() {
10
+ const result = await runProbeMeshInitCli({
11
+ argv: process.argv.slice(2),
12
+ cwd: process.cwd()
13
+ });
14
+ if (result.stdout) {
15
+ process.stdout.write(result.stdout);
16
+ }
17
+ if (result.stderr) {
18
+ process.stderr.write(result.stderr);
19
+ }
20
+ process.exitCode = result.exitCode;
21
+ }
22
+ //# sourceMappingURL=probemesh-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli/probemesh-init.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { runProbeMeshInitCli } from \"./probemeshInitCli\";\n\nvoid main();\n\nasync function main() {\n const result = await runProbeMeshInitCli({\n argv: process.argv.slice(2),\n cwd: process.cwd(),\n });\n\n if (result.stdout) {\n process.stdout.write(result.stdout);\n }\n\n if (result.stderr) {\n process.stderr.write(result.stderr);\n }\n\n process.exitCode = result.exitCode;\n}\n"],"mappings":";;;;;;;AAGA,KAAK,KAAK;AAEV,eAAe,OAAO;AACpB,QAAM,SAAS,MAAM,oBAAoB;AAAA,IACvC,MAAM,QAAQ,KAAK,MAAM,CAAC;AAAA,IAC1B,KAAK,QAAQ,IAAI;AAAA,EACnB,CAAC;AAED,MAAI,OAAO,QAAQ;AACjB,YAAQ,OAAO,MAAM,OAAO,MAAM;AAAA,EACpC;AAEA,MAAI,OAAO,QAAQ;AACjB,YAAQ,OAAO,MAAM,OAAO,MAAM;AAAA,EACpC;AAEA,UAAQ,WAAW,OAAO;AAC5B;","names":[]}