{"version":3,"sources":["../src/cli-doctor.ts","../src/cli.ts"],"names":[],"mappings":"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","file":"cli.cjs","sourcesContent":["/**\n * `mercadopago doctor` — diagnostic command for the @ar-agents/mercadopago\n * package. Prints a status report covering:\n *\n *   - Node version\n *   - MP_ACCESS_TOKEN presence + format + sandbox/prod prefix\n *   - Live token validation against `GET /users/me` (lightweight, free)\n *   - Peer-dependency presence (ai, zod, @vercel/kv, @opentelemetry/api)\n *   - Tools registered (count + categories from tools.manifest.json)\n *   - Subpath availability (/vercel-kv, /otel, /testing)\n *\n * No third-party CLI deps. ANSI colors are inlined.\n *\n * Run with:\n *   pnpm exec mercadopago doctor\n *   npx @ar-agents/mercadopago doctor\n *   npx -p @ar-agents/mercadopago mercadopago doctor\n */\n\nconst C = {\n  reset: \"\\x1b[0m\",\n  dim: \"\\x1b[2m\",\n  red: \"\\x1b[31m\",\n  green: \"\\x1b[32m\",\n  yellow: \"\\x1b[33m\",\n  blue: \"\\x1b[34m\",\n  magenta: \"\\x1b[35m\",\n  cyan: \"\\x1b[36m\",\n  bold: \"\\x1b[1m\",\n};\n\nconst NO_COLOR = process.env.NO_COLOR != null || !process.stdout.isTTY;\nconst c = (color: keyof typeof C, s: string) =>\n  NO_COLOR ? s : `${C[color]}${s}${C.reset}`;\n\ntype CheckResult =\n  | { kind: \"ok\"; line: string; detail?: string }\n  | { kind: \"warn\"; line: string; detail?: string }\n  | { kind: \"fail\"; line: string; detail?: string };\n\nfunction fmt(r: CheckResult): string {\n  const icon =\n    r.kind === \"ok\" ? c(\"green\", \"✓\") : r.kind === \"warn\" ? c(\"yellow\", \"⚠\") : c(\"red\", \"✗\");\n  const detail = r.detail ? `\\n  ${c(\"dim\", \"→ \" + r.detail)}` : \"\";\n  return `${icon} ${r.line}${detail}`;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Individual checks\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction checkNode(): CheckResult {\n  const major = Number(process.versions.node.split(\".\")[0]);\n  if (major >= 20) {\n    return {\n      kind: \"ok\",\n      line: `Node ${process.versions.node} (>= 20.0.0)`,\n    };\n  }\n  return {\n    kind: \"fail\",\n    line: `Node ${process.versions.node} too old`,\n    detail: `@ar-agents/mercadopago requires Node 20+. Bun and Edge Runtime are also supported.`,\n  };\n}\n\nfunction checkAccessToken(): CheckResult {\n  const t = process.env.MP_ACCESS_TOKEN?.trim();\n  if (!t) {\n    return {\n      kind: \"fail\",\n      line: \"MP_ACCESS_TOKEN not set\",\n      detail:\n        \"Get one at https://www.mercadopago.com.ar/developers/panel/app — TEST- prefix for sandbox, APP_USR- for production.\",\n    };\n  }\n  if (t.startsWith(\"TEST-\")) {\n    return { kind: \"ok\", line: `MP_ACCESS_TOKEN set (TEST- prefix → sandbox)` };\n  }\n  if (t.startsWith(\"APP_USR-\")) {\n    return {\n      kind: \"warn\",\n      line: `MP_ACCESS_TOKEN set (APP_USR- prefix → PRODUCTION)`,\n      detail: \"Live transactions WILL move real money. Use TEST- in development.\",\n    };\n  }\n  return {\n    kind: \"fail\",\n    line: \"MP_ACCESS_TOKEN has unexpected prefix\",\n    detail: `Expected TEST- or APP_USR-, got \"${t.slice(0, 8)}…\". Common cause: trailing newline in env file (use printf, not echo).`,\n  };\n}\n\nasync function probeToken(token: string): Promise<CheckResult> {\n  try {\n    const res = await fetch(\"https://api.mercadopago.com/users/me\", {\n      headers: { Authorization: `Bearer ${token}` },\n    });\n    if (res.status === 401) {\n      return {\n        kind: \"fail\",\n        line: \"Token rejected by MP API (401 Unauthorized)\",\n        detail: \"Token is invalid, expired, or copy-pasted with extra whitespace.\",\n      };\n    }\n    if (!res.ok) {\n      return {\n        kind: \"fail\",\n        line: `MP API responded with HTTP ${res.status}`,\n        detail: `Unexpected status — try again or check api.mercadopago.com status.`,\n      };\n    }\n    const me = (await res.json()) as {\n      id?: number;\n      site_id?: string;\n      email?: string;\n      country_id?: string;\n    };\n    return {\n      kind: \"ok\",\n      line: `Authenticated against api.mercadopago.com`,\n      detail: `account ${me.id ?? \"?\"} · site ${me.site_id ?? \"?\"} · country ${me.country_id ?? \"?\"}`,\n    };\n  } catch (err) {\n    return {\n      kind: \"fail\",\n      line: \"Could not reach api.mercadopago.com\",\n      detail:\n        err instanceof Error ? err.message : \"Unknown network error. Check connectivity / proxy.\",\n    };\n  }\n}\n\nasync function checkPeerDep(name: string, required: boolean): Promise<CheckResult> {\n  try {\n    await import(name);\n    return { kind: \"ok\", line: `${name} installed` };\n  } catch {\n    return {\n      kind: required ? \"fail\" : \"warn\",\n      line: `${name} not installed`,\n      detail: required\n        ? `Required peer dep — install with: pnpm add ${name}`\n        : `Optional — required only if you use the matching subpath.`,\n    };\n  }\n}\n\nfunction checkBackUrl(): CheckResult {\n  const url = process.env.NEXT_PUBLIC_BACK_URL ?? process.env.BACK_URL;\n  if (!url) {\n    return {\n      kind: \"warn\",\n      line: \"NEXT_PUBLIC_BACK_URL not set\",\n      detail:\n        \"Required by mercadoPagoTools({ backUrl }) for create_subscription / create_payment_preference. Must be HTTPS (localhost rejected by MP in production).\",\n    };\n  }\n  if (!url.startsWith(\"https://\")) {\n    return {\n      kind: \"fail\",\n      line: `NEXT_PUBLIC_BACK_URL must be HTTPS (got: ${url.slice(0, 40)}…)`,\n      detail: \"MP rejects localhost and http:// URLs server-side.\",\n    };\n  }\n  return { kind: \"ok\", line: `NEXT_PUBLIC_BACK_URL set (${url})` };\n}\n\nfunction checkWebhookSecret(): CheckResult {\n  const s = process.env.MP_WEBHOOK_SECRET?.trim();\n  if (!s) {\n    return {\n      kind: \"warn\",\n      line: \"MP_WEBHOOK_SECRET not set\",\n      detail:\n        \"verifyWebhookSignature() needs this. Copy from https://www.mercadopago.com.ar/developers/panel/app → notificaciones.\",\n    };\n  }\n  if (s.length < 16) {\n    return {\n      kind: \"warn\",\n      line: `MP_WEBHOOK_SECRET set but suspiciously short (${s.length} chars)`,\n      detail: \"MP secrets are typically 32+ chars. Double-check the paste.\",\n    };\n  }\n  return { kind: \"ok\", line: `MP_WEBHOOK_SECRET set (${s.length} chars)` };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Tools manifest\n// ─────────────────────────────────────────────────────────────────────────────\n\ntype Manifest = {\n  package: string;\n  version: string;\n  tools: Array<{ name: string; category?: string; description?: string }>;\n};\n\nasync function loadManifest(): Promise<Manifest | null> {\n  // Bundled output lives at dist/cli.js. tools.manifest.json sits at the\n  // package root, one level up. The src path src/cli-doctor.ts is also one\n  // level up. Both resolve via \"../tools.manifest.json\".\n  const fs = await import(\"node:fs/promises\");\n  for (const rel of [\"../tools.manifest.json\", \"../../tools.manifest.json\"]) {\n    try {\n      const url = new URL(rel, import.meta.url);\n      const text = await fs.readFile(url, \"utf-8\");\n      return JSON.parse(text) as Manifest;\n    } catch {\n      // try next\n    }\n  }\n  return null;\n}\n\nfunction summarizeManifest(m: Manifest): string[] {\n  const lines: string[] = [];\n  lines.push(c(\"bold\", `Tools registered: ${m.tools.length}`));\n\n  // Group by inferred category from name prefix.\n  const groups = new Map<string, string[]>();\n  for (const tool of m.tools) {\n    const cat = tool.category ?? inferCategory(tool.name);\n    if (!groups.has(cat)) groups.set(cat, []);\n    groups.get(cat)!.push(tool.name);\n  }\n  for (const [cat, names] of [...groups.entries()].sort()) {\n    lines.push(`  ${c(\"dim\", \"→\")} ${cat} (${names.length})`);\n  }\n  return lines;\n}\n\nfunction inferCategory(toolName: string): string {\n  if (toolName.includes(\"subscription\") || toolName.includes(\"preapproval\")) return \"Subscriptions\";\n  if (toolName.includes(\"payment\") && !toolName.includes(\"preference\")) return \"Payments\";\n  if (toolName.includes(\"refund\")) return \"Refunds\";\n  if (toolName.includes(\"preference\") || toolName.includes(\"checkout\")) return \"Checkout Pro\";\n  if (toolName.includes(\"oauth\") || toolName.includes(\"marketplace\")) return \"Marketplace OAuth\";\n  if (toolName.includes(\"merchant_order\") || toolName.includes(\"order\")) return \"Order Management\";\n  if (toolName.includes(\"customer\") && !toolName.includes(\"card\")) return \"Customers\";\n  if (toolName.includes(\"customer_card\") || toolName.includes(\"card\")) return \"Saved cards\";\n  if (toolName.includes(\"installment\") || toolName.includes(\"cuotas\") || toolName.includes(\"promo\")) return \"Cuotas\";\n  if (toolName.includes(\"qr\")) return \"QR\";\n  if (toolName.includes(\"3ds\") || toolName.includes(\"challenge\")) return \"3DS\";\n  if (toolName.includes(\"point\")) return \"Point devices\";\n  if (toolName.includes(\"store\") || toolName.includes(\"pos\")) return \"Stores+POS\";\n  if (toolName.includes(\"balance\") || toolName.includes(\"settlement\") || toolName.includes(\"account\")) return \"Account/Balance\";\n  if (toolName.includes(\"dispute\")) return \"Disputes\";\n  if (toolName.includes(\"webhook\")) return \"Webhooks\";\n  if (toolName.includes(\"bank_account\")) return \"Bank Accounts\";\n  if (toolName.includes(\"lookup\") || toolName.includes(\"validate\") || toolName.includes(\"explain\") || toolName.includes(\"compute\")) return \"Lookups\";\n  return \"Other\";\n}\n\nconst HITL_TOOLS = [\n  \"refund_payment\",\n  \"cancel_subscription\",\n  \"pause_subscription\",\n  \"cancel_payment_preference\",\n  \"delete_customer_card\",\n  \"cancel_qr_dynamic\",\n  \"delete_pos\",\n  \"revoke_marketplace_token\",\n];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Main entrypoint\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport async function runDoctor(args: { probe: boolean } = { probe: false }): Promise<number> {\n  const lines: string[] = [];\n  lines.push(\"\");\n  lines.push(c(\"bold\", `${c(\"cyan\", \"@ar-agents/mercadopago\")} doctor`));\n  lines.push(c(\"dim\", \"  diagnosing your environment\"));\n  lines.push(\"\");\n\n  // Environment checks.\n  lines.push(fmt(checkNode()));\n\n  const tokenCheck = checkAccessToken();\n  lines.push(fmt(tokenCheck));\n\n  if (tokenCheck.kind === \"ok\" || tokenCheck.kind === \"warn\") {\n    const probe = await probeToken(process.env.MP_ACCESS_TOKEN!.trim());\n    lines.push(fmt(probe));\n  }\n\n  lines.push(fmt(checkBackUrl()));\n  lines.push(fmt(checkWebhookSecret()));\n\n  // Peer deps.\n  lines.push(fmt(await checkPeerDep(\"ai\", true)));\n  lines.push(fmt(await checkPeerDep(\"zod\", true)));\n  lines.push(fmt(await checkPeerDep(\"@vercel/kv\", false)));\n  lines.push(fmt(await checkPeerDep(\"@opentelemetry/api\", false)));\n\n  lines.push(\"\");\n\n  // Tools manifest.\n  const manifest = await loadManifest();\n  if (manifest) {\n    lines.push(...summarizeManifest(manifest));\n    lines.push(\"\");\n    lines.push(\n      c(\n        \"yellow\",\n        `${HITL_TOOLS.length} irreversible ops behind requireConfirmation():`,\n      ),\n    );\n    lines.push(\"  \" + c(\"dim\", HITL_TOOLS.join(\" · \")));\n  } else {\n    lines.push(\n      fmt({\n        kind: \"warn\",\n        line: \"Could not load tools.manifest.json\",\n        detail: \"The package shipping is incomplete — reinstall.\",\n      }),\n    );\n  }\n\n  lines.push(\"\");\n\n  // Probe mode (extra dry-call).\n  if (args.probe && tokenCheck.kind === \"ok\") {\n    lines.push(c(\"bold\", \"Probe mode: dry-calling validate_tax_id…\"));\n    try {\n      const res = await fetch(\"https://api.mercadopago.com/v1/identification_types\", {\n        headers: { Authorization: `Bearer ${process.env.MP_ACCESS_TOKEN!.trim()}` },\n      });\n      if (res.ok) {\n        const types = (await res.json()) as Array<{ id: string }>;\n        lines.push(\n          fmt({\n            kind: \"ok\",\n            line: `validate_tax_id reachable — ${types.length} ID types available`,\n          }),\n        );\n      } else {\n        lines.push(\n          fmt({\n            kind: \"warn\",\n            line: `validate_tax_id probe returned HTTP ${res.status}`,\n          }),\n        );\n      }\n    } catch (err) {\n      lines.push(\n        fmt({\n          kind: \"warn\",\n          line: \"Probe failed\",\n          detail: err instanceof Error ? err.message : String(err),\n        }),\n      );\n    }\n    lines.push(\"\");\n  }\n\n  lines.push(\n    c(\n      \"dim\",\n      args.probe\n        ? \"All probes done. Pass without --probe for the lighter check.\"\n        : \"Run with --probe to also dry-call validate_tax_id (no charge).\",\n    ),\n  );\n\n  process.stdout.write(lines.join(\"\\n\") + \"\\n\");\n\n  // Exit code: 0 if everything was ok or warn, 1 if any fail.\n  const hasFail = lines.some((l) => l.includes(\"✗\"));\n  return hasFail ? 1 : 0;\n}\n","/**\n * CLI dispatcher for `@ar-agents/mercadopago`. Reads `argv[2]` (the first\n * arg after the bin name) and dispatches to the matching subcommand.\n *\n * Usage:\n *   mercadopago doctor             — diagnose your environment\n *   mercadopago doctor --probe     — also dry-call validate_tax_id\n *   mercadopago help               — print this list\n *\n * Exit codes follow the convention: 0 = ok or warn-only, 1 = at least one\n * fail; CI scripts can rely on `mercadopago doctor` to gate deploys.\n */\n\nimport { runDoctor } from \"./cli-doctor\";\n\nconst HELP = `\\\n@ar-agents/mercadopago CLI\n\nCommands:\n  doctor               Diagnose your environment (Node, token, peer deps, tools)\n  doctor --probe       Same as doctor but also dry-calls validate_tax_id\n  help                 Print this message\n  version              Print the installed package version\n\nEnvironment:\n  MP_ACCESS_TOKEN      Required for any live calls. TEST- for sandbox, APP_USR- for prod.\n  NEXT_PUBLIC_BACK_URL Required HTTPS URL for create_subscription / create_payment_preference.\n  MP_WEBHOOK_SECRET    Required for verifyWebhookSignature.\n\nDocs: https://github.com/ar-agents/ar-agents/tree/main/packages/mercadopago\n`;\n\nasync function readVersion(): Promise<string> {\n  // Bundled output lives at dist/cli.js, so package.json is one level up.\n  // (Source path src/cli.ts is also one level up — keeping ../package.json\n  // works for both.)\n  for (const rel of [\"../package.json\", \"../../package.json\"]) {\n    try {\n      const url = new URL(rel, import.meta.url);\n      const fs = await import(\"node:fs/promises\");\n      const text = await fs.readFile(url, \"utf-8\");\n      const pkg = JSON.parse(text) as { version?: string };\n      if (pkg.version) return pkg.version;\n    } catch {\n      // try next\n    }\n  }\n  return \"unknown\";\n}\n\nexport async function runCli(argv: string[]): Promise<number> {\n  const [, , cmd, ...rest] = argv;\n\n  if (!cmd || cmd === \"help\" || cmd === \"--help\" || cmd === \"-h\") {\n    process.stdout.write(HELP);\n    return 0;\n  }\n\n  if (cmd === \"version\" || cmd === \"--version\" || cmd === \"-v\") {\n    process.stdout.write(`@ar-agents/mercadopago ${await readVersion()}\\n`);\n    return 0;\n  }\n\n  if (cmd === \"doctor\") {\n    const probe = rest.includes(\"--probe\");\n    return runDoctor({ probe });\n  }\n\n  process.stderr.write(\n    `Unknown command: ${cmd}\\n\\nRun \\`mercadopago help\\` for usage.\\n`,\n  );\n  return 2;\n}\n"]}