agentcard 0.0.19 → 0.0.21-alpha.1

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 (53) hide show
  1. package/dist/bin/agentcard.js +0 -1
  2. package/dist/src/commands/balance.js +35 -6
  3. package/dist/src/commands/cards/details.js +0 -1
  4. package/dist/src/commands/cards/list.js +1 -2
  5. package/dist/src/commands/limit.js +49 -0
  6. package/dist/src/commands/logout.js +0 -1
  7. package/dist/src/commands/request/get.js +101 -0
  8. package/dist/src/commands/request/new.js +79 -0
  9. package/dist/src/commands/setup.js +146 -0
  10. package/dist/src/commands/signup.js +21 -18
  11. package/dist/src/commands/support.js +0 -1
  12. package/dist/src/commands/track/purchase.js +1 -1
  13. package/dist/src/commands/whoami.js +0 -1
  14. package/dist/src/index.js +48 -26
  15. package/dist/src/lib/api.js +6 -1
  16. package/dist/src/lib/config.js +0 -1
  17. package/dist/src/lib/prompt.js +0 -1
  18. package/dist/src/lib/update-check.js +21 -3
  19. package/package.json +6 -6
  20. package/dist/bin/agentcard.d.ts +0 -2
  21. package/dist/bin/agentcard.js.map +0 -1
  22. package/dist/src/commands/balance.d.ts +0 -1
  23. package/dist/src/commands/balance.js.map +0 -1
  24. package/dist/src/commands/cards/create.d.ts +0 -1
  25. package/dist/src/commands/cards/create.js +0 -110
  26. package/dist/src/commands/cards/create.js.map +0 -1
  27. package/dist/src/commands/cards/details.d.ts +0 -9
  28. package/dist/src/commands/cards/details.js.map +0 -1
  29. package/dist/src/commands/cards/list.d.ts +0 -1
  30. package/dist/src/commands/cards/list.js.map +0 -1
  31. package/dist/src/commands/cards/refund.d.ts +0 -1
  32. package/dist/src/commands/cards/refund.js +0 -100
  33. package/dist/src/commands/cards/refund.js.map +0 -1
  34. package/dist/src/commands/logout.d.ts +0 -1
  35. package/dist/src/commands/logout.js.map +0 -1
  36. package/dist/src/commands/signup.d.ts +0 -3
  37. package/dist/src/commands/signup.js.map +0 -1
  38. package/dist/src/commands/support.d.ts +0 -6
  39. package/dist/src/commands/support.js.map +0 -1
  40. package/dist/src/commands/track/purchase.d.ts +0 -7
  41. package/dist/src/commands/track/purchase.js.map +0 -1
  42. package/dist/src/commands/whoami.d.ts +0 -1
  43. package/dist/src/commands/whoami.js.map +0 -1
  44. package/dist/src/index.d.ts +0 -3
  45. package/dist/src/index.js.map +0 -1
  46. package/dist/src/lib/api.d.ts +0 -6
  47. package/dist/src/lib/api.js.map +0 -1
  48. package/dist/src/lib/config.d.ts +0 -8
  49. package/dist/src/lib/config.js.map +0 -1
  50. package/dist/src/lib/prompt.d.ts +0 -2
  51. package/dist/src/lib/prompt.js.map +0 -1
  52. package/dist/src/lib/update-check.d.ts +0 -2
  53. package/dist/src/lib/update-check.js.map +0 -1
@@ -15,4 +15,3 @@ if (updated) {
15
15
  process.exit(result.status ?? 1);
16
16
  }
17
17
  program.parse();
18
- //# sourceMappingURL=agentcard.js.map
@@ -1,15 +1,44 @@
1
1
  import chalk from "chalk";
2
+ import ora from "ora";
2
3
  import { get } from "../lib/api.js";
3
4
  export async function balance(id) {
4
- let card;
5
+ const spinner = ora("Fetching balance...").start();
6
+ let data;
5
7
  try {
6
- card = await get(`/api/cards/${id}/details`);
8
+ data = await get(`/api/cards/${id}/balance`);
7
9
  }
8
10
  catch (err) {
9
- console.error(chalk.red(`Failed to fetch card: ${err instanceof Error ? err.message : "Unknown error"}`));
11
+ spinner.fail(`Failed to fetch balance: ${err instanceof Error ? err.message : "Unknown error"}`);
10
12
  process.exit(1);
11
13
  }
12
- console.log(`Original amount: ${chalk.green(`$${(card.amountCents / 100).toFixed(2)}`)}`);
13
- console.log(chalk.dim("Real-time balance checking is not available for prepaid cards."));
14
+ spinner.stop();
15
+ const original = `$${(data.originalAmountCents / 100).toFixed(2)}`;
16
+ if (data.availableBalanceCents != null) {
17
+ const available = `$${(data.availableBalanceCents / 100).toFixed(2)}`;
18
+ console.log(`Card: ${chalk.dim(data.id)}`);
19
+ console.log(`Original amount: ${chalk.white(original)}`);
20
+ console.log(`Available balance: ${chalk.green(available)}`);
21
+ }
22
+ else {
23
+ console.log(`Card: ${chalk.dim(data.id)}`);
24
+ console.log(`Original amount: ${chalk.white(original)}`);
25
+ if (data.note) {
26
+ console.log(chalk.dim(data.note));
27
+ }
28
+ }
29
+ if (data.transactions.length > 0) {
30
+ console.log("");
31
+ console.log(chalk.bold("Transactions:"));
32
+ console.log(chalk.dim("─".repeat(60)));
33
+ for (const tx of data.transactions) {
34
+ const sign = tx.is_credit ? chalk.green("+") : chalk.red("-");
35
+ const amt = `$${Math.abs(tx.amount).toFixed(2)}`;
36
+ const date = tx.date;
37
+ console.log(` ${sign} ${chalk.white(amt.padEnd(10))} ${chalk.dim(date)} ${tx.description}`);
38
+ }
39
+ }
40
+ if (data.note) {
41
+ console.log("");
42
+ console.log(chalk.dim(data.note));
43
+ }
14
44
  }
15
- //# sourceMappingURL=balance.js.map
@@ -25,4 +25,3 @@ export async function cardDetails(id) {
25
25
  }
26
26
  printCardDetails(card);
27
27
  }
28
- //# sourceMappingURL=details.js.map
@@ -13,7 +13,7 @@ export async function listCards() {
13
13
  process.exit(1);
14
14
  }
15
15
  if (cards.length === 0 && requests.length === 0) {
16
- console.log(chalk.yellow('No cards yet. Run `agentcard create` to get started.'));
16
+ console.log(chalk.yellow('No cards yet. Run `agentcard request new --amount <dollars>` to issue one.'));
17
17
  return;
18
18
  }
19
19
  if (cards.length > 0) {
@@ -45,4 +45,3 @@ export async function listCards() {
45
45
  }
46
46
  }
47
47
  }
48
- //# sourceMappingURL=list.js.map
@@ -0,0 +1,49 @@
1
+ import chalk from "chalk";
2
+ import ora from "ora";
3
+ import { get, post } from "../lib/api.js";
4
+ function formatDollars(cents) {
5
+ return `$${(cents / 100).toFixed(2)}`;
6
+ }
7
+ function printLimit(res) {
8
+ console.log("");
9
+ console.log(chalk.bold(" Spend Limit"));
10
+ console.log(chalk.dim(" ────────────────────────────"));
11
+ console.log(` Limit: ${chalk.white(formatDollars(res.spendLimitCents))}`);
12
+ console.log(` Spent: ${chalk.white(formatDollars(res.spentCents))}`);
13
+ console.log(` Remaining: ${chalk.green(formatDollars(res.remainingCents))}`);
14
+ console.log(chalk.dim(" ────────────────────────────"));
15
+ console.log("");
16
+ }
17
+ export async function limit(opts) {
18
+ if (opts.amount === undefined) {
19
+ const spinner = ora("Fetching spend limit...").start();
20
+ let res;
21
+ try {
22
+ res = await get("/api/limits");
23
+ }
24
+ catch (err) {
25
+ spinner.fail(`Failed to fetch limit: ${err instanceof Error ? err.message : "Unknown error"}`);
26
+ process.exit(1);
27
+ }
28
+ spinner.stop();
29
+ printLimit(res);
30
+ return;
31
+ }
32
+ const dollars = Number(opts.amount);
33
+ if (!Number.isFinite(dollars) || dollars <= 0) {
34
+ console.error(chalk.red("Amount must be a positive number of dollars."));
35
+ process.exit(1);
36
+ }
37
+ const amountCents = Math.round(dollars * 100);
38
+ const spinner = ora(`Updating limit to ${formatDollars(amountCents)}...`).start();
39
+ let res;
40
+ try {
41
+ res = await post("/api/limits", { amountCents });
42
+ }
43
+ catch (err) {
44
+ spinner.fail(`Failed to update limit: ${err instanceof Error ? err.message : "Unknown error"}`);
45
+ process.exit(1);
46
+ }
47
+ spinner.succeed(chalk.green(`Spend limit updated to ${formatDollars(res.spendLimitCents)}.`));
48
+ printLimit(res);
49
+ }
@@ -4,4 +4,3 @@ export function logout() {
4
4
  clearConfig();
5
5
  console.log(chalk.green("Logged out."));
6
6
  }
7
- //# sourceMappingURL=logout.js.map
@@ -0,0 +1,101 @@
1
+ import chalk from "chalk";
2
+ import ora from "ora";
3
+ import { get } from "../../lib/api.js";
4
+ import { printCardDetails } from "../cards/details.js";
5
+ function formatDollars(cents) {
6
+ return `$${(cents / 100).toFixed(2)}`;
7
+ }
8
+ function colorStatus(status) {
9
+ switch (status) {
10
+ case "issued":
11
+ return chalk.green(status);
12
+ case "pending":
13
+ case "charged":
14
+ return chalk.yellow(status);
15
+ case "expired":
16
+ return chalk.dim(status);
17
+ case "failed":
18
+ return chalk.red(status);
19
+ default:
20
+ return status;
21
+ }
22
+ }
23
+ function printRequestMeta(req) {
24
+ console.log("");
25
+ console.log(chalk.bold(" Request"));
26
+ console.log(chalk.dim(" ────────────────────────────"));
27
+ console.log(` ID: ${chalk.white(req.id)}`);
28
+ console.log(` Amount: ${chalk.white(formatDollars(req.amountCents))}`);
29
+ console.log(` Status: ${colorStatus(req.status)}`);
30
+ console.log(` Created: ${chalk.white(new Date(req.createdAt).toLocaleString())}`);
31
+ console.log(` Expires: ${chalk.white(new Date(req.expiresAt).toLocaleString())}`);
32
+ if (req.issuedAt) {
33
+ console.log(` Issued: ${chalk.white(new Date(req.issuedAt).toLocaleString())}`);
34
+ }
35
+ if (req.last4) {
36
+ console.log(` Last 4: ${chalk.white(req.last4)}`);
37
+ }
38
+ console.log(chalk.dim(" ────────────────────────────"));
39
+ }
40
+ export async function requestGet(id) {
41
+ if (id) {
42
+ const spinner = ora(`Fetching request ${id}...`).start();
43
+ let req;
44
+ try {
45
+ req = await get(`/api/spend-requests/${id}`);
46
+ }
47
+ catch (err) {
48
+ spinner.fail(`Failed to fetch request: ${err instanceof Error ? err.message : "Unknown error"}`);
49
+ process.exit(1);
50
+ }
51
+ spinner.stop();
52
+ printRequestMeta(req);
53
+ if (req.status === "issued" &&
54
+ req.pan &&
55
+ req.cvv &&
56
+ req.expiryMonth !== undefined &&
57
+ req.expiryYear !== undefined) {
58
+ printCardDetails({
59
+ pan: req.pan,
60
+ cvv: req.cvv,
61
+ expiryMonth: req.expiryMonth,
62
+ expiryYear: req.expiryYear,
63
+ amountCents: req.amountCents,
64
+ });
65
+ }
66
+ else {
67
+ console.log("");
68
+ }
69
+ return;
70
+ }
71
+ const spinner = ora("Fetching requests...").start();
72
+ let res;
73
+ try {
74
+ res = await get("/api/spend-requests");
75
+ }
76
+ catch (err) {
77
+ spinner.fail(`Failed to fetch requests: ${err instanceof Error ? err.message : "Unknown error"}`);
78
+ process.exit(1);
79
+ }
80
+ spinner.stop();
81
+ const requests = res.requests ?? [];
82
+ if (requests.length === 0) {
83
+ console.log(chalk.yellow("No card requests yet. Run `agentcard request new --amount <dollars>` to issue one."));
84
+ return;
85
+ }
86
+ const idWidth = Math.max(2, ...requests.map((r) => r.id.length)) + 2;
87
+ const header = `${"ID".padEnd(idWidth)} ${"Amount".padEnd(10)} ${"Status".padEnd(10)} ${"Created".padEnd(22)} Expires`;
88
+ console.log(chalk.bold(header));
89
+ console.log("-".repeat(header.length));
90
+ for (const r of requests) {
91
+ const amount = formatDollars(r.amountCents);
92
+ const created = new Date(r.createdAt).toLocaleString();
93
+ const expires = new Date(r.expiresAt).toLocaleString();
94
+ const status = colorStatus(r.status);
95
+ // chalk colors add invisible chars; pad on the raw status width.
96
+ const rawStatus = r.status;
97
+ const statusPadded = status + " ".repeat(Math.max(0, 10 - rawStatus.length));
98
+ console.log(`${r.id.padEnd(idWidth)} ${amount.padEnd(10)} ${statusPadded} ${created.padEnd(22)} ${expires}`);
99
+ }
100
+ console.log(chalk.dim("\nRun `agentcard request get <id>` to view a single request's details."));
101
+ }
@@ -0,0 +1,79 @@
1
+ import chalk from "chalk";
2
+ import inquirer from "inquirer";
3
+ import ora from "ora";
4
+ import { post } from "../../lib/api.js";
5
+ import { printCardDetails } from "../cards/details.js";
6
+ const MAX_DOLLARS = 75;
7
+ function formatDollars(cents) {
8
+ return `$${(cents / 100).toFixed(2)}`;
9
+ }
10
+ export async function requestNew(amount) {
11
+ let raw = amount?.trim();
12
+ if (!raw) {
13
+ if (process.stdin.isTTY !== true) {
14
+ console.error(chalk.red("Amount is required. Pass `--amount <dollars>`."));
15
+ process.exit(1);
16
+ }
17
+ const { value } = await inquirer.prompt([
18
+ {
19
+ type: "input",
20
+ name: "value",
21
+ message: `Amount (dollars, max $${MAX_DOLLARS}):`,
22
+ validate: (v) => {
23
+ const t = v.trim();
24
+ if (!/^\d+$/.test(t))
25
+ return "Enter a positive integer";
26
+ const n = Number(t);
27
+ if (n <= 0)
28
+ return "Must be > 0";
29
+ if (n > MAX_DOLLARS)
30
+ return `Max $${MAX_DOLLARS} per card during beta`;
31
+ return true;
32
+ },
33
+ },
34
+ ]);
35
+ raw = value.trim();
36
+ }
37
+ if (!/^\d+$/.test(raw)) {
38
+ console.error(chalk.red("Amount must be a positive integer number of dollars."));
39
+ process.exit(1);
40
+ }
41
+ const dollars = Number(raw);
42
+ if (!Number.isFinite(dollars) || dollars <= 0) {
43
+ console.error(chalk.red("Amount must be a positive integer number of dollars."));
44
+ process.exit(1);
45
+ }
46
+ if (dollars > MAX_DOLLARS) {
47
+ console.error(chalk.red(`Amount is capped at $${MAX_DOLLARS} per card during beta.`));
48
+ process.exit(1);
49
+ }
50
+ const amountCents = dollars * 100;
51
+ const spinner = ora(`Requesting a ${formatDollars(amountCents)} single-use card...`).start();
52
+ let res;
53
+ try {
54
+ res = await post("/api/spend-requests", {
55
+ amountCents,
56
+ });
57
+ }
58
+ catch (err) {
59
+ spinner.fail(`Failed to issue card: ${err instanceof Error ? err.message : "Unknown error"}`);
60
+ process.exit(1);
61
+ }
62
+ spinner.succeed(chalk.green("Card issued."));
63
+ const expiresLocal = new Date(res.expiresAt).toLocaleString();
64
+ console.log("");
65
+ console.log(chalk.bold(" Request"));
66
+ console.log(chalk.dim(" ────────────────────────────"));
67
+ console.log(` ID: ${chalk.white(res.id)}`);
68
+ console.log(` Amount: ${chalk.green(formatDollars(res.amountCents))}`);
69
+ console.log(` Expires: ${chalk.white(expiresLocal)}`);
70
+ console.log(chalk.dim(" ────────────────────────────"));
71
+ printCardDetails({
72
+ pan: res.pan,
73
+ cvv: res.cvv,
74
+ expiryMonth: res.expiryMonth,
75
+ expiryYear: res.expiryYear,
76
+ amountCents: res.amountCents,
77
+ });
78
+ console.log(chalk.dim("We placed a hold on your payment method for this amount; it will only be charged if the card is used. Unused holds release within 7 days."));
79
+ }
@@ -0,0 +1,146 @@
1
+ import chalk from "chalk";
2
+ import open from "open";
3
+ import ora from "ora";
4
+ import inquirer from "inquirer";
5
+ import { del, get, patch, post } from "../lib/api.js";
6
+ const POLL_INTERVAL = 2000;
7
+ const PM_TIMEOUT = 5 * 60 * 1000;
8
+ const E164 = /^\+[1-9]\d{1,14}$/;
9
+ function renderStatus(me) {
10
+ const line = (label, value, masked = false) => {
11
+ const v = value ? (masked ? chalk.dim(value) : value) : chalk.yellow("(missing)");
12
+ return ` ${chalk.bold(label.padEnd(10))} ${v}`;
13
+ };
14
+ const pm = me.paymentMethod;
15
+ const pmStr = pm
16
+ ? `${pm.brand.charAt(0).toUpperCase() + pm.brand.slice(1)} ending in ${pm.last4}`
17
+ : null;
18
+ console.log(chalk.bold("\n Profile"));
19
+ console.log(" " + "─".repeat(40));
20
+ console.log(line("Email:", me.email));
21
+ console.log(line("Name:", me.firstName && me.lastName ? `${me.firstName} ${me.lastName}` : null));
22
+ console.log(line("Phone:", me.phoneNumber));
23
+ console.log(line("Payment:", pmStr));
24
+ console.log(" " + "─".repeat(40) + "\n");
25
+ }
26
+ async function promptIfMissing(fieldLabel, current, validator, interactive) {
27
+ if (current)
28
+ return current;
29
+ if (!interactive)
30
+ return null;
31
+ const { value } = await inquirer.prompt([
32
+ {
33
+ type: "input",
34
+ name: "value",
35
+ message: `${fieldLabel}:`,
36
+ validate: validator,
37
+ },
38
+ ]);
39
+ return value.trim();
40
+ }
41
+ async function setupPaymentMethod() {
42
+ const spinner = ora("Creating Stripe setup session...").start();
43
+ let res;
44
+ try {
45
+ res = await post("/api/payment-methods");
46
+ }
47
+ catch (err) {
48
+ spinner.fail(`Failed to start payment setup: ${err instanceof Error ? err.message : "Unknown error"}`);
49
+ process.exit(1);
50
+ }
51
+ spinner.stop();
52
+ console.log(`Setup URL: ${res.url}`);
53
+ console.log(chalk.blue("Opening browser to add payment method..."));
54
+ await open(res.url);
55
+ const pollSpinner = ora("Waiting for payment method...").start();
56
+ const deadline = Date.now() + PM_TIMEOUT;
57
+ while (Date.now() < deadline) {
58
+ await new Promise((r) => setTimeout(r, POLL_INTERVAL));
59
+ try {
60
+ const me = await get("/api/me");
61
+ if (me.paymentMethod) {
62
+ const brand = me.paymentMethod.brand.charAt(0).toUpperCase() +
63
+ me.paymentMethod.brand.slice(1);
64
+ pollSpinner.succeed(chalk.green(`Payment method saved: ${brand} ending in ${me.paymentMethod.last4}.`));
65
+ return;
66
+ }
67
+ }
68
+ catch {
69
+ // keep polling
70
+ }
71
+ }
72
+ pollSpinner.fail("Timed out waiting for payment method. Re-run `agentcard setup` to retry.");
73
+ process.exit(1);
74
+ }
75
+ export async function setup(opts) {
76
+ const interactive = process.stdin.isTTY === true;
77
+ if (opts.reset) {
78
+ const spinner = ora("Resetting profile...").start();
79
+ try {
80
+ await del("/api/me");
81
+ spinner.succeed("Profile cleared. Starting fresh.");
82
+ }
83
+ catch (err) {
84
+ spinner.fail(`Reset failed: ${err instanceof Error ? err.message : "Unknown error"}`);
85
+ process.exit(1);
86
+ }
87
+ }
88
+ let me;
89
+ try {
90
+ me = await get("/api/me");
91
+ }
92
+ catch (err) {
93
+ console.error(chalk.red(`Failed to load profile: ${err instanceof Error ? err.message : err}`));
94
+ process.exit(1);
95
+ }
96
+ renderStatus(me);
97
+ const noFlagsGiven = !opts.firstName && !opts.lastName && !opts.phone;
98
+ const fullyConfigured = !!me.firstName && !!me.lastName && !!me.phoneNumber && !!me.paymentMethod;
99
+ if (fullyConfigured && noFlagsGiven && !opts.reset) {
100
+ console.log(chalk.green(`You're all set. Spend limit: $${(me.spendLimitCents / 100).toFixed(2)}.`));
101
+ console.log(chalk.dim("Run `agentcard request new --amount <dollars>` to issue a card, `agentcard limit --amount <dollars>` to change your limit, or `agentcard setup --reset` to clear your profile."));
102
+ return;
103
+ }
104
+ // Collect first name, last name, phone
105
+ const first = (opts.firstName ?? "").trim() ||
106
+ (await promptIfMissing("First name", me.firstName, (v) => v.trim().length > 0 || "Required", interactive));
107
+ const last = (opts.lastName ?? "").trim() ||
108
+ (await promptIfMissing("Last name", me.lastName, (v) => v.trim().length > 0 || "Required", interactive));
109
+ const phone = (opts.phone ?? "").trim() ||
110
+ (await promptIfMissing("Phone (include country code, e.g. +14155551234)", me.phoneNumber, (v) => E164.test(v.trim()) ||
111
+ "Include the country code with a + prefix, e.g. +14155551234", interactive));
112
+ const missingNow = [];
113
+ if (!first)
114
+ missingNow.push("--first-name");
115
+ if (!last)
116
+ missingNow.push("--last-name");
117
+ if (!phone)
118
+ missingNow.push("--phone");
119
+ if (missingNow.length > 0) {
120
+ console.error(chalk.red(`Missing required fields. Run interactively, or pass: ${missingNow.join(" ")}`));
121
+ process.exit(1);
122
+ }
123
+ if (first !== me.firstName || last !== me.lastName || phone !== me.phoneNumber) {
124
+ const saving = ora("Saving profile...").start();
125
+ try {
126
+ const updated = await patch("/api/me", {
127
+ firstName: first,
128
+ lastName: last,
129
+ phoneNumber: phone,
130
+ });
131
+ me = updated;
132
+ saving.succeed(chalk.green("Profile saved."));
133
+ }
134
+ catch (err) {
135
+ saving.fail(`Failed to save profile: ${err instanceof Error ? err.message : "Unknown error"}`);
136
+ process.exit(1);
137
+ }
138
+ }
139
+ if (!me.paymentMethod) {
140
+ console.log(chalk.bold("\nPayment method"));
141
+ await setupPaymentMethod();
142
+ }
143
+ console.log("");
144
+ console.log(chalk.green(`Setup complete. Spend limit: $${(me.spendLimitCents / 100).toFixed(2)}.`));
145
+ console.log(chalk.dim("Run `agentcard limit --amount <dollars>` to change it, or `agentcard request new --amount <dollars>` to issue a card."));
146
+ }
@@ -4,13 +4,14 @@ import ora from "ora";
4
4
  import { get, post } from "../lib/api.js";
5
5
  import { prompt } from "../lib/prompt.js";
6
6
  import { saveConfig } from "../lib/config.js";
7
- function formatDollars(cents) {
8
- return `$${(cents / 100).toFixed(2)}`;
9
- }
10
7
  const API_URL = process.env.AGENTCARD_API_URL || "https://agentcard.ai";
11
8
  const POLL_INTERVAL = 2000;
12
9
  const TIMEOUT = 5 * 60 * 1000;
10
+ function formatTerms(appUrl) {
11
+ return `By using AgentCard you acknowledge this is a beta service governed by our terms: ${appUrl}/terms.`;
12
+ }
13
13
  export async function signup(opts) {
14
+ console.log(chalk.dim(formatTerms(API_URL)));
14
15
  let email = opts.email;
15
16
  if (!email) {
16
17
  const answers = await prompt([
@@ -23,7 +24,6 @@ export async function signup(opts) {
23
24
  process.exit(1);
24
25
  }
25
26
  const state = crypto.randomUUID();
26
- // Register the CLI auth state
27
27
  await post("/api/auth/cli/start", { state }, { auth: false });
28
28
  console.log(chalk.blue(`Sending magic link to ${email}...`));
29
29
  const callbackURL = `${API_URL}/auth/cli/callback?state=${state}`;
@@ -44,22 +44,26 @@ export async function signup(opts) {
44
44
  if (result.status === "complete" && result.token && result.email) {
45
45
  spinner.stop();
46
46
  saveConfig({ token: result.token, email: result.email });
47
- console.log(chalk.green(`Logged in as ${result.email}`));
48
- // Show available card denominations
47
+ let me = null;
49
48
  try {
50
- const res = await get("/api/cards/denominations");
51
- if (res.denominations.length > 0) {
52
- console.log("");
53
- console.log(chalk.bold("Available card amounts:"));
54
- for (const d of res.denominations) {
55
- console.log(` ${formatDollars(d.amountCents)}`);
56
- }
57
- console.log("");
58
- console.log(chalk.dim("Run `agentcard create` to purchase a card."));
59
- }
49
+ me = await get("/api/me");
60
50
  }
61
51
  catch {
62
- // Non-critical, don't block login
52
+ // Non-critical fall through with a generic next-step.
53
+ }
54
+ console.log(chalk.green(`Logged in as ${result.email}.`));
55
+ if (me?.locked) {
56
+ console.log(chalk.red("Your account is locked. Email support@agentcard.ai."));
57
+ return;
58
+ }
59
+ if (!me || !me.firstName || !me.lastName || !me.phoneNumber || !me.paymentMethod) {
60
+ console.log(chalk.yellow("Next step: run `agentcard setup` to finish setting up your account."));
61
+ }
62
+ else {
63
+ const brand = me.paymentMethod.brand.charAt(0).toUpperCase() +
64
+ me.paymentMethod.brand.slice(1);
65
+ console.log(chalk.dim(`Profile: ${me.firstName} ${me.lastName}, ${me.phoneNumber}, ${brand} ending in ${me.paymentMethod.last4}.`));
66
+ console.log(chalk.dim("Run `agentcard request new --amount <dollars>` to issue a card, or `agentcard setup --reset` to update your info."));
63
67
  }
64
68
  return;
65
69
  }
@@ -71,4 +75,3 @@ export async function signup(opts) {
71
75
  spinner.fail("Authentication timed out. Please try again.");
72
76
  process.exit(1);
73
77
  }
74
- //# sourceMappingURL=signup.js.map
@@ -19,4 +19,3 @@ export async function support(opts) {
19
19
  process.exit(1);
20
20
  }
21
21
  }
22
- //# sourceMappingURL=support.js.map
@@ -13,6 +13,7 @@ export async function trackPurchase(opts) {
13
13
  store: opts.store,
14
14
  status: opts.incomplete ? "incomplete" : "complete",
15
15
  intent: opts.intent,
16
+ cardId: opts.cardId,
16
17
  });
17
18
  console.log(chalk.green("Purchase tracked."));
18
19
  }
@@ -21,4 +22,3 @@ export async function trackPurchase(opts) {
21
22
  process.exit(1);
22
23
  }
23
24
  }
24
- //# sourceMappingURL=purchase.js.map
@@ -15,4 +15,3 @@ export async function whoami() {
15
15
  console.error(chalk.red("Failed to verify session. Try `agentcard signup` again."));
16
16
  }
17
17
  }
18
- //# sourceMappingURL=whoami.js.map
package/dist/src/index.js CHANGED
@@ -2,38 +2,43 @@ import { Command } from "commander";
2
2
  import { signup } from "./commands/signup.js";
3
3
  import { logout } from "./commands/logout.js";
4
4
  import { whoami } from "./commands/whoami.js";
5
- import { createCard } from "./commands/cards/create.js";
6
5
  import { listCards } from "./commands/cards/list.js";
7
6
  import { cardDetails } from "./commands/cards/details.js";
8
7
  import { balance } from "./commands/balance.js";
9
- import { refundCard } from "./commands/cards/refund.js";
8
+ import { setup } from "./commands/setup.js";
9
+ import { limit } from "./commands/limit.js";
10
+ import { requestNew } from "./commands/request/new.js";
11
+ import { requestGet } from "./commands/request/get.js";
10
12
  import { trackPurchase } from "./commands/track/purchase.js";
11
13
  import { support } from "./commands/support.js";
12
14
  import { getLocalVersion } from "./lib/update-check.js";
13
15
  const program = new Command();
14
16
  program
15
17
  .name("agentcard")
16
- .description("Prepaid virtual Visa cards for AI agents")
18
+ .description("On-demand single-use virtual Visa cards for AI agents")
17
19
  .version(getLocalVersion())
18
20
  .showHelpAfterError()
19
21
  .addHelpText("after", `
20
22
  Examples:
21
23
 
22
- $ agentcard signup --email you@example.com Sign up (AI-friendly, no browser)
23
- $ agentcard signup Sign up (interactive prompt)
24
- $ agentcard create --amount 25 Buy a $25 prepaid Visa card
25
- $ agentcard create Purchase a card (prompts for amount, multiples of $5)
26
- $ agentcard list List your cards
27
- $ agentcard details <id> Reveal full card number, CVV, expiry
28
- $ agentcard balance <id> Check card denomination
29
- $ agentcard refund <id> --amount 15 Refund $15 from your card
24
+ $ agentcard signup --email you@example.com Sign up (sends magic link)
25
+ $ agentcard setup Finish setup: name, phone, payment method
26
+ $ agentcard setup --reset Clear your profile and start over
27
+ $ agentcard limit Show spend limit / spent / remaining
28
+ $ agentcard limit --amount 250 Raise your spend limit to $250
29
+ $ agentcard request new --amount 10 Issue a single-use $10 Visa card
30
+ $ agentcard request get <id> Re-fetch PAN/CVV/expiry for a request
31
+ $ agentcard request get List all your card requests
32
+ $ agentcard list List legacy inventory cards
33
+ $ agentcard details <id> Reveal full details for a legacy card
30
34
 
31
35
  Quickstart:
32
36
 
33
37
  $ agentcard signup --email you@example.com
34
- $ agentcard create --amount 10
35
- $ agentcard details <card-id>
36
- Give the card details to your AI agent
38
+ $ agentcard setup
39
+ $ agentcard request new --amount 10
40
+ PAN / CVV / expiry printed; card expires in 15 minutes
41
+ → Hand the details to your AI agent immediately
37
42
  `);
38
43
  // -- Auth -------------------------------------------------------------------
39
44
  program
@@ -54,12 +59,35 @@ program
54
59
  .command("whoami")
55
60
  .description("Show the currently logged-in user")
56
61
  .action(whoami);
57
- // -- Cards ------------------------------------------------------------------
62
+ // -- Setup & limit ----------------------------------------------------------
58
63
  program
59
- .command("create")
60
- .description("Purchase a prepaid Visa card (multiples of $5, $5-$200)")
61
- .option("--amount <dollars>", "Card amount in dollars, must be a multiple of $5 (e.g. 5, 10, 25, 50)")
62
- .action((opts) => createCard(opts.amount));
64
+ .command("setup")
65
+ .description("Set up or update your profile (name, phone, payment method)")
66
+ .option("--first-name <name>", "First name")
67
+ .option("--last-name <name>", "Last name")
68
+ .option("--phone <phone>", "Phone number in E.164 format, e.g. +14155551234")
69
+ .option("--reset", "Clear your profile and payment method, then start over")
70
+ .action(setup);
71
+ program
72
+ .command("limit")
73
+ .description("Show or update your spend limit")
74
+ .option("--amount <dollars>", "Set new limit in dollars")
75
+ .action(limit);
76
+ // -- Card requests ----------------------------------------------------------
77
+ const request = program
78
+ .command("request")
79
+ .description("Manage card requests");
80
+ request
81
+ .command("new")
82
+ .description("Request a single-use virtual Visa for a specific amount")
83
+ .option("--amount <dollars>", "Amount in dollars (prompts interactively if omitted)")
84
+ .action((opts) => requestNew(opts.amount));
85
+ request
86
+ .command("get")
87
+ .description("Get one request by ID, or list all requests")
88
+ .argument("[id]", "Request ID")
89
+ .action(requestGet);
90
+ // -- Legacy inventory cards -------------------------------------------------
63
91
  program
64
92
  .command("list")
65
93
  .description("List all your purchased cards")
@@ -74,12 +102,6 @@ program
74
102
  .description("Check card denomination")
75
103
  .argument("<id>", "Card ID")
76
104
  .action(balance);
77
- program
78
- .command("refund")
79
- .description("Refund remaining card balance to your original payment method")
80
- .argument("<id>", "Card ID")
81
- .option("--amount <dollars>", "Amount to refund in dollars")
82
- .action((id, opts) => refundCard(id, opts.amount));
83
105
  // -- Tracking (hidden) ------------------------------------------------------
84
106
  program
85
107
  .command("track-purchase", { hidden: true })
@@ -89,6 +111,7 @@ program
89
111
  .option("--store <store>", "Website or store where the purchase was made")
90
112
  .option("--incomplete", "Flag if the purchase did not complete successfully")
91
113
  .option("--intent <intent>", "What the agent was trying to accomplish")
114
+ .option("--card-id <cardId>", "Card ID used for this purchase")
92
115
  .action(trackPurchase);
93
116
  // -- Support ----------------------------------------------------------------
94
117
  program
@@ -100,4 +123,3 @@ program
100
123
  .option("--error <error>", "Error message or details")
101
124
  .action(support);
102
125
  export { program };
103
- //# sourceMappingURL=index.js.map
@@ -43,4 +43,9 @@ export function get(path, options) {
43
43
  export function post(path, body, options) {
44
44
  return request("POST", path, body, options);
45
45
  }
46
- //# sourceMappingURL=api.js.map
46
+ export function patch(path, body, options) {
47
+ return request("PATCH", path, body, options);
48
+ }
49
+ export function del(path, options) {
50
+ return request("DELETE", path, undefined, options);
51
+ }
@@ -27,4 +27,3 @@ export function clearConfig() {
27
27
  writeFileSync(CONFIG_FILE, "{}", { mode: 0o600 });
28
28
  }
29
29
  }
30
- //# sourceMappingURL=config.js.map
@@ -8,4 +8,3 @@ export async function prompt(questions) {
8
8
  process.exit(0);
9
9
  }
10
10
  }
11
- //# sourceMappingURL=prompt.js.map
@@ -18,6 +18,14 @@ export function getLocalVersion() {
18
18
  }
19
19
  throw new Error("Could not find agentcard package.json");
20
20
  }
21
+ function detectPackageManager() {
22
+ const binPath = process.argv[1] ?? "";
23
+ if (binPath.includes("pnpm"))
24
+ return "pnpm";
25
+ if (binPath.includes("yarn"))
26
+ return "yarn";
27
+ return "npm";
28
+ }
21
29
  function getLatestVersion() {
22
30
  try {
23
31
  const result = execSync("npm view agentcard version", {
@@ -38,9 +46,15 @@ export function checkForUpdate() {
38
46
  const latest = getLatestVersion();
39
47
  if (!latest || !semver.gt(latest, local))
40
48
  return false;
49
+ const pm = detectPackageManager();
50
+ const installCmds = {
51
+ npm: `npm install -g agentcard@${latest}`,
52
+ pnpm: `pnpm add -g agentcard@${latest}`,
53
+ yarn: `yarn global add agentcard@${latest}`,
54
+ };
41
55
  console.log(chalk.yellow(`Updating agentcard ${local} → ${latest}...`));
42
56
  try {
43
- execSync(`npm install -g agentcard@${latest}`, {
57
+ execSync(installCmds[pm], {
44
58
  stdio: ["pipe", "pipe", "pipe"],
45
59
  timeout: 60000,
46
60
  });
@@ -49,9 +63,13 @@ export function checkForUpdate() {
49
63
  return true;
50
64
  }
51
65
  catch {
52
- console.error(chalk.yellow(`Update available: ${local} → ${latest}. Run: npm install -g agentcard`));
66
+ const manualCmds = {
67
+ npm: "npm install -g agentcard",
68
+ pnpm: "pnpm add -g agentcard",
69
+ yarn: "yarn global add agentcard",
70
+ };
71
+ console.error(chalk.yellow(`Update available: ${local} → ${latest}. Run: ${manualCmds[pm]}`));
53
72
  console.log("");
54
73
  return false;
55
74
  }
56
75
  }
57
- //# sourceMappingURL=update-check.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentcard",
3
- "version": "0.0.19",
3
+ "version": "0.0.21-alpha.1",
4
4
  "description": "CLI for managing prepaid virtual Visa cards for AI agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -9,6 +9,10 @@
9
9
  "files": [
10
10
  "dist"
11
11
  ],
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "dev": "tsc --watch"
15
+ },
12
16
  "dependencies": {
13
17
  "chalk": "^5.4.1",
14
18
  "commander": "^13.1.0",
@@ -21,9 +25,5 @@
21
25
  "@types/node": "^22.0.0",
22
26
  "@types/semver": "^7.7.1",
23
27
  "typescript": "^5.7.0"
24
- },
25
- "scripts": {
26
- "build": "tsc",
27
- "dev": "tsc --watch"
28
28
  }
29
- }
29
+ }
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"agentcard.js","sourceRoot":"","sources":["../../bin/agentcard.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;AAEjC,IAAI,OAAO,EAAE,CAAC;IACZ,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAC3D,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE;KACpD,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1 +0,0 @@
1
- export declare function balance(id: string): Promise<void>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../src/commands/balance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAMpC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,EAAU;IACtC,IAAI,IAAiB,CAAC;IACtB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,GAAG,CAAc,cAAc,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAChF,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CACT,oBAAoB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAC7E,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAC5E,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- export declare function createCard(amount?: string): Promise<void>;
@@ -1,110 +0,0 @@
1
- import chalk from "chalk";
2
- import inquirer from "inquirer";
3
- import open from "open";
4
- import ora from "ora";
5
- import { get, post } from "../../lib/api.js";
6
- import { printCardDetails } from "./details.js";
7
- const POLL_INTERVAL = 2000;
8
- const TIMEOUT = 10 * 60 * 1000;
9
- function formatDollars(cents) {
10
- return `$${(cents / 100).toFixed(2)}`;
11
- }
12
- export async function createCard(amount) {
13
- let dollars;
14
- if (amount) {
15
- dollars = parseInt(amount, 10);
16
- if (isNaN(dollars) || dollars <= 0) {
17
- console.error(chalk.red("Amount must be a positive integer (in dollars)."));
18
- process.exit(1);
19
- }
20
- }
21
- else {
22
- const { rawAmount } = await inquirer.prompt([
23
- {
24
- type: "input",
25
- name: "rawAmount",
26
- message: "Enter card amount in dollars (multiples of $5, up to $200):",
27
- validate: (v) => {
28
- const n = parseFloat(v);
29
- if (isNaN(n) || n <= 0)
30
- return "Enter a valid dollar amount";
31
- if (!Number.isInteger(n) || n % 5 !== 0)
32
- return "Amount must be a multiple of $5 (e.g. 5, 10, 15, 20)";
33
- if (n < 5)
34
- return "Minimum amount is $5";
35
- if (n > 200)
36
- return "Maximum amount is $200";
37
- return true;
38
- },
39
- },
40
- ]);
41
- dollars = parseInt(rawAmount, 10);
42
- }
43
- if (dollars < 5 || dollars > 200 || dollars % 5 !== 0) {
44
- console.error(chalk.red("Amount must be a multiple of $5, between $5 and $200."));
45
- process.exit(1);
46
- }
47
- const spinner = ora("Creating checkout session...").start();
48
- let purchase;
49
- try {
50
- purchase = await post("/api/cards/purchase", {
51
- amountCents: dollars * 100,
52
- });
53
- }
54
- catch (err) {
55
- spinner.fail(`Failed to create card: ${err instanceof Error ? err.message : "Unknown error"}`);
56
- process.exit(1);
57
- }
58
- spinner.stop();
59
- if (purchase.manualFulfillment) {
60
- console.log("");
61
- console.log(chalk.yellow("Note: Cards are currently being fulfilled manually. After payment, your card will be available within 72 hours."));
62
- console.log(chalk.yellow("Run `agentcard list` to check when your card is ready."));
63
- console.log("");
64
- }
65
- console.log(`Checkout URL: ${purchase.url}`);
66
- if (purchase.manualFulfillment) {
67
- // In manual mode, don't auto-open or poll — just show the URL
68
- console.log("");
69
- console.log(chalk.green("Complete payment at the URL above."));
70
- console.log(chalk.dim("Your card will appear in `agentcard list` once fulfilled (up to 72 hours)."));
71
- return;
72
- }
73
- console.log(chalk.blue("Opening browser for payment..."));
74
- await open(purchase.url);
75
- const paymentSpinner = ora("Waiting for payment and card provisioning...").start();
76
- const deadline = Date.now() + TIMEOUT;
77
- while (Date.now() < deadline) {
78
- await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL));
79
- try {
80
- const status = await get(`/api/cards/purchase/status?session_id=${purchase.sessionId}`);
81
- if (status.status === "complete" && status.card) {
82
- paymentSpinner.succeed(chalk.green("Card purchased!"));
83
- try {
84
- const details = await get(`/api/cards/${status.card.id}/details`);
85
- printCardDetails(details);
86
- console.log(chalk.dim(` To view again: agentcard details ${status.card.id}`));
87
- console.log("");
88
- }
89
- catch {
90
- console.log(`Run \`agentcard details ${status.card.id}\` to view card details.`);
91
- }
92
- return;
93
- }
94
- if (status.status === "failed") {
95
- paymentSpinner.fail(chalk.red(status.error || "Card could not be provisioned. Your payment has been refunded."));
96
- process.exit(1);
97
- }
98
- if (status.status === "expired") {
99
- paymentSpinner.fail("Payment session expired. Please try again.");
100
- process.exit(1);
101
- }
102
- }
103
- catch {
104
- // Not ready yet, keep polling
105
- }
106
- }
107
- paymentSpinner.fail("Payment timed out. Please try again.");
108
- process.exit(1);
109
- }
110
- //# sourceMappingURL=create.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/cards/create.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- export interface CardDetails {
2
- pan: string;
3
- cvv: string;
4
- expiryMonth: number;
5
- expiryYear: number;
6
- amountCents: number;
7
- }
8
- export declare function printCardDetails(card: CardDetails): void;
9
- export declare function cardDetails(id: string): Promise<void>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"details.js","sourceRoot":"","sources":["../../../../src/commands/cards/details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAUvC,MAAM,UAAU,gBAAgB,CAAC,IAAiB;IAChD,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;IAEjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAU;IAC1C,IAAI,IAAiB,CAAC;IACtB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,GAAG,CAAc,cAAc,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACxF,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}
@@ -1 +0,0 @@
1
- export declare function listCards(): Promise<void>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/cards/list.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function refundCard(cardId: string, amount?: string): Promise<void>;
@@ -1,100 +0,0 @@
1
- import chalk from "chalk";
2
- import inquirer from "inquirer";
3
- import ora from "ora";
4
- import { get, post } from "../../lib/api.js";
5
- const POLL_INTERVAL = 2000;
6
- const TIMEOUT = 10 * 60 * 1000;
7
- export async function refundCard(cardId, amount) {
8
- let dollars;
9
- if (amount) {
10
- dollars = parseFloat(amount);
11
- if (isNaN(dollars) || dollars <= 0) {
12
- console.error(chalk.red("Amount must be a positive number (in dollars)."));
13
- process.exit(1);
14
- }
15
- }
16
- else {
17
- const { rawAmount } = await inquirer.prompt([
18
- {
19
- type: "input",
20
- name: "rawAmount",
21
- message: "Enter the amount to refund in dollars:",
22
- validate: (v) => {
23
- const n = parseFloat(v);
24
- if (isNaN(n) || n <= 0)
25
- return "Enter a valid dollar amount";
26
- return true;
27
- },
28
- },
29
- ]);
30
- dollars = parseFloat(rawAmount);
31
- }
32
- const amountCents = Math.round(dollars * 100);
33
- // Fetch card details so the user knows exactly which card to use
34
- const detailsSpinner = ora("Fetching card details...").start();
35
- let card;
36
- try {
37
- card = await get(`/api/cards/${cardId}/details`);
38
- }
39
- catch (err) {
40
- detailsSpinner.fail(`Failed to fetch card details: ${err instanceof Error ? err.message : "Unknown error"}`);
41
- process.exit(1);
42
- }
43
- detailsSpinner.stop();
44
- const expiry = `${String(card.expiryMonth).padStart(2, "0")}/${card.expiryYear}`;
45
- console.log("");
46
- console.log(chalk.bold(" Use this card on the checkout page:"));
47
- console.log(chalk.dim(" ────────────────────────────"));
48
- console.log(` Number: ${chalk.white(card.pan)}`);
49
- console.log(` CVV: ${chalk.white(card.cvv)}`);
50
- console.log(` Expiry: ${chalk.white(expiry)}`);
51
- console.log(chalk.dim(" ────────────────────────────"));
52
- console.log("");
53
- console.log(chalk.yellow.bold(" Please make sure to use the card above on checkout to"));
54
- console.log(chalk.yellow.bold(" ensure your refund ends up in the right place."));
55
- console.log("");
56
- const spinner = ora("Creating refund checkout session...").start();
57
- let refund;
58
- try {
59
- refund = await post("/api/cards/refund", {
60
- cardId,
61
- amountCents,
62
- });
63
- }
64
- catch (err) {
65
- spinner.fail(`Failed to create refund: ${err instanceof Error ? err.message : "Unknown error"}`);
66
- process.exit(1);
67
- }
68
- spinner.stop();
69
- console.log(`Checkout URL: ${refund.url}`);
70
- const pollSpinner = ora("Waiting for payment and refund processing...").start();
71
- const deadline = Date.now() + TIMEOUT;
72
- while (Date.now() < deadline) {
73
- await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL));
74
- try {
75
- const status = await get(`/api/cards/refund/status?session_id=${refund.sessionId}`);
76
- if (status.status === "complete") {
77
- const refundedDollars = status.refundedAmountCents
78
- ? `$${(status.refundedAmountCents / 100).toFixed(2)}`
79
- : `$${dollars.toFixed(2)}`;
80
- pollSpinner.succeed(chalk.green(`Refund of ${refundedDollars} processed! Funds will return to your original payment method.`));
81
- console.log(chalk.dim(" Note: refunds typically appear within 5-10 business days."));
82
- return;
83
- }
84
- if (status.status === "failed") {
85
- pollSpinner.fail(chalk.red(status.error || "Refund failed. Please contact support."));
86
- process.exit(1);
87
- }
88
- if (status.status === "expired") {
89
- pollSpinner.fail("Checkout session expired. Please try again.");
90
- process.exit(1);
91
- }
92
- }
93
- catch {
94
- // Not ready yet, keep polling
95
- }
96
- }
97
- pollSpinner.fail("Refund timed out. Please check your email or contact support.");
98
- process.exit(1);
99
- }
100
- //# sourceMappingURL=refund.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refund.js","sourceRoot":"","sources":["../../../../src/commands/cards/refund.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function logout(): void;
@@ -1 +0,0 @@
1
- {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,UAAU,MAAM;IACpB,WAAW,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1C,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare function signup(opts: {
2
- email?: string;
3
- }): Promise<void>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"signup.js","sourceRoot":"","sources":["../../../src/commands/signup.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export declare function support(opts: {
2
- message: string;
3
- cardId?: string;
4
- url?: string;
5
- error?: string;
6
- }): Promise<void>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"support.js","sourceRoot":"","sources":["../../../src/commands/support.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAK7B;IACC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,cAAc,EAAE;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,7 +0,0 @@
1
- export declare function trackPurchase(opts: {
2
- name: string;
3
- amount: string;
4
- store?: string;
5
- incomplete?: boolean;
6
- intent?: string;
7
- }): Promise<void>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"purchase.js","sourceRoot":"","sources":["../../../../src/commands/track/purchase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAMnC;IACC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,qBAAqB,EAAE;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU;YACnD,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1 +0,0 @@
1
- export declare function whoami(): Promise<void>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAM7C,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAa,cAAc,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAC;IACtF,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Command } from "commander";
2
- declare const program: Command;
3
- export { program };
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- interface ApiOptions {
2
- auth?: boolean;
3
- }
4
- export declare function get<T>(path: string, options?: ApiOptions): Promise<T>;
5
- export declare function post<T>(path: string, body?: unknown, options?: ApiOptions): Promise<T>;
6
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,sBAAsB,CAAC;AAMxE,KAAK,UAAU,OAAO,CACpB,MAAc,EACd,IAAY,EACZ,IAAc,EACd,UAAsB,EAAE,IAAI,EAAE,IAAI,EAAE;IAEpC,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM;QACN,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;KAC9C,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CACtE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,GAAG,CAAI,IAAY,EAAE,OAAoB;IACvD,OAAO,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,IAAY,EACZ,IAAc,EACd,OAAoB;IAEpB,OAAO,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC"}
@@ -1,8 +0,0 @@
1
- interface Config {
2
- token?: string;
3
- email?: string;
4
- }
5
- export declare function getConfig(): Config;
6
- export declare function saveConfig(config: Config): void;
7
- export declare function clearConfig(): void;
8
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACjD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEpD,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAC1D,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
@@ -1,2 +0,0 @@
1
- import inquirer from "inquirer";
2
- export declare function prompt(questions: Parameters<typeof inquirer.prompt>[0]): Promise<Record<string, string>>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/lib/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,SAAgD;IAEhD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function getLocalVersion(): string;
2
- export declare function checkForUpdate(): boolean;
@@ -1 +0,0 @@
1
- {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../../src/lib/update-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,UAAU,eAAe;IAC7B,IAAI,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,OAAO,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACvD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO,GAAG,CAAC,OAAO,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,4BAA4B,EAAE;YACpD,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAE5D,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,KAAK,MAAM,MAAM,KAAK,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC;QACH,QAAQ,CAAC,4BAA4B,MAAM,EAAE,EAAE;YAC7C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,MAAM,GAAG,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8GAA8G,CAAC,CAAC,CAAC;QACvI,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,KAAK,MAAM,MAAM,iCAAiC,CAAC,CAAC,CAAC;QACrG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}