agentcard 0.0.20 → 0.0.21

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/src/commands/cards/details.d.ts +2 -0
  2. package/dist/src/commands/cards/details.js +6 -0
  3. package/dist/src/commands/cards/details.js.map +1 -1
  4. package/dist/src/commands/cards/list.js +1 -1
  5. package/dist/src/commands/cards/list.js.map +1 -1
  6. package/dist/src/commands/limit.d.ts +3 -0
  7. package/dist/src/commands/limit.js +50 -0
  8. package/dist/src/commands/limit.js.map +1 -0
  9. package/dist/src/commands/mail/get.d.ts +1 -0
  10. package/dist/src/commands/mail/get.js +28 -0
  11. package/dist/src/commands/mail/get.js.map +1 -0
  12. package/dist/src/commands/mail/info.d.ts +1 -0
  13. package/dist/src/commands/mail/info.js +17 -0
  14. package/dist/src/commands/mail/info.js.map +1 -0
  15. package/dist/src/commands/mail/list.d.ts +4 -0
  16. package/dist/src/commands/mail/list.js +34 -0
  17. package/dist/src/commands/mail/list.js.map +1 -0
  18. package/dist/src/commands/mail/send.d.ts +8 -0
  19. package/dist/src/commands/mail/send.js +59 -0
  20. package/dist/src/commands/mail/send.js.map +1 -0
  21. package/dist/src/commands/request/get.d.ts +1 -0
  22. package/dist/src/commands/request/get.js +104 -0
  23. package/dist/src/commands/request/get.js.map +1 -0
  24. package/dist/src/commands/request/new.d.ts +1 -0
  25. package/dist/src/commands/request/new.js +82 -0
  26. package/dist/src/commands/request/new.js.map +1 -0
  27. package/dist/src/commands/setup.d.ts +8 -0
  28. package/dist/src/commands/setup.js +166 -0
  29. package/dist/src/commands/setup.js.map +1 -0
  30. package/dist/src/commands/signup.js +26 -17
  31. package/dist/src/commands/signup.js.map +1 -1
  32. package/dist/src/commands/whoami.js +5 -2
  33. package/dist/src/commands/whoami.js.map +1 -1
  34. package/dist/src/index.js +100 -36
  35. package/dist/src/index.js.map +1 -1
  36. package/dist/src/lib/api.d.ts +2 -0
  37. package/dist/src/lib/api.js +6 -0
  38. package/dist/src/lib/api.js.map +1 -1
  39. package/dist/src/lib/track-command.d.ts +8 -0
  40. package/dist/src/lib/track-command.js +54 -0
  41. package/dist/src/lib/track-command.js.map +1 -0
  42. package/dist/src/lib/update-check.js +21 -2
  43. package/dist/src/lib/update-check.js.map +1 -1
  44. package/package.json +1 -1
  45. package/dist/src/commands/cards/create.d.ts +0 -1
  46. package/dist/src/commands/cards/create.js +0 -110
  47. package/dist/src/commands/cards/create.js.map +0 -1
  48. package/dist/src/commands/cards/refund.d.ts +0 -1
  49. package/dist/src/commands/cards/refund.js +0 -100
  50. package/dist/src/commands/cards/refund.js.map +0 -1
  51. package/dist/src/commands/track/purchase.d.ts +0 -8
  52. package/dist/src/commands/track/purchase.js +0 -25
  53. package/dist/src/commands/track/purchase.js.map +0 -1
@@ -0,0 +1,166 @@
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
+ async function provisionAgentEmail() {
10
+ const spinner = ora("Provisioning agent email...").start();
11
+ try {
12
+ const res = await post("/api/mail/inbox");
13
+ spinner.succeed(chalk.green(`Agent email: ${res.address}`));
14
+ }
15
+ catch (err) {
16
+ spinner.warn(`Couldn't provision agent email: ${err instanceof Error ? err.message : "Unknown error"}. Re-run \`agentcard setup\` to retry.`);
17
+ }
18
+ }
19
+ function renderStatus(me) {
20
+ const line = (label, value, masked = false) => {
21
+ const v = value ? (masked ? chalk.dim(value) : value) : chalk.yellow("(missing)");
22
+ return ` ${chalk.bold(label.padEnd(14))} ${v}`;
23
+ };
24
+ const pm = me.paymentMethod;
25
+ const pmStr = pm
26
+ ? `${pm.brand.charAt(0).toUpperCase() + pm.brand.slice(1)} ending in ${pm.last4}`
27
+ : null;
28
+ console.log(chalk.bold("\n Profile"));
29
+ console.log(" " + "─".repeat(44));
30
+ console.log(line("Email:", me.email));
31
+ console.log(line("Name:", me.firstName && me.lastName ? `${me.firstName} ${me.lastName}` : null));
32
+ console.log(line("Phone:", me.phoneNumber));
33
+ console.log(line("Payment:", pmStr));
34
+ console.log(line("Agent email:", me.agentEmail));
35
+ console.log(" " + "─".repeat(44) + "\n");
36
+ }
37
+ async function promptIfMissing(fieldLabel, current, validator, interactive) {
38
+ if (current)
39
+ return current;
40
+ if (!interactive)
41
+ return null;
42
+ const { value } = await inquirer.prompt([
43
+ {
44
+ type: "input",
45
+ name: "value",
46
+ message: `${fieldLabel}:`,
47
+ validate: validator,
48
+ },
49
+ ]);
50
+ return value.trim();
51
+ }
52
+ async function setupPaymentMethod() {
53
+ const spinner = ora("Creating Stripe setup session...").start();
54
+ let res;
55
+ try {
56
+ res = await post("/api/payment-methods");
57
+ }
58
+ catch (err) {
59
+ spinner.fail(`Failed to start payment setup: ${err instanceof Error ? err.message : "Unknown error"}`);
60
+ process.exit(1);
61
+ }
62
+ spinner.stop();
63
+ console.log(`Setup URL: ${res.url}`);
64
+ console.log(chalk.blue("Opening browser to add payment method..."));
65
+ await open(res.url);
66
+ const pollSpinner = ora("Waiting for payment method...").start();
67
+ const deadline = Date.now() + PM_TIMEOUT;
68
+ while (Date.now() < deadline) {
69
+ await new Promise((r) => setTimeout(r, POLL_INTERVAL));
70
+ try {
71
+ const me = await get("/api/me");
72
+ if (me.paymentMethod) {
73
+ const brand = me.paymentMethod.brand.charAt(0).toUpperCase() +
74
+ me.paymentMethod.brand.slice(1);
75
+ pollSpinner.succeed(chalk.green(`Payment method saved: ${brand} ending in ${me.paymentMethod.last4}.`));
76
+ return;
77
+ }
78
+ }
79
+ catch {
80
+ // keep polling
81
+ }
82
+ }
83
+ pollSpinner.fail("Timed out waiting for payment method. Re-run `agentcard setup` to retry.");
84
+ process.exit(1);
85
+ }
86
+ export async function setup(opts) {
87
+ const interactive = process.stdin.isTTY === true;
88
+ if (opts.reset) {
89
+ const spinner = ora("Resetting profile...").start();
90
+ try {
91
+ await del("/api/me");
92
+ spinner.succeed("Profile cleared. Starting fresh.");
93
+ }
94
+ catch (err) {
95
+ spinner.fail(`Reset failed: ${err instanceof Error ? err.message : "Unknown error"}`);
96
+ process.exit(1);
97
+ }
98
+ }
99
+ let me;
100
+ try {
101
+ me = await get("/api/me");
102
+ }
103
+ catch (err) {
104
+ console.error(chalk.red(`Failed to load profile: ${err instanceof Error ? err.message : err}`));
105
+ process.exit(1);
106
+ }
107
+ renderStatus(me);
108
+ const noFlagsGiven = !opts.firstName && !opts.lastName && !opts.phone;
109
+ const fullyConfigured = !!me.firstName &&
110
+ !!me.lastName &&
111
+ !!me.phoneNumber &&
112
+ !!me.paymentMethod &&
113
+ !!me.agentEmail;
114
+ if (fullyConfigured && noFlagsGiven && !opts.reset) {
115
+ console.log(chalk.green(`You're all set. Spend limit: $${(me.spendLimitCents / 100).toFixed(2)}.`));
116
+ 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."));
117
+ return;
118
+ }
119
+ // Collect first name, last name, phone (only if missing or overridden by flag)
120
+ const first = (opts.firstName ?? "").trim() ||
121
+ (await promptIfMissing("First name", me.firstName, (v) => v.trim().length > 0 || "Required", interactive));
122
+ const last = (opts.lastName ?? "").trim() ||
123
+ (await promptIfMissing("Last name", me.lastName, (v) => v.trim().length > 0 || "Required", interactive));
124
+ const phone = (opts.phone ?? "").trim() ||
125
+ (await promptIfMissing("Phone (include country code, e.g. +14155551234)", me.phoneNumber, (v) => E164.test(v.trim()) ||
126
+ "Include the country code with a + prefix, e.g. +14155551234", interactive));
127
+ const missingNow = [];
128
+ if (!first)
129
+ missingNow.push("--first-name");
130
+ if (!last)
131
+ missingNow.push("--last-name");
132
+ if (!phone)
133
+ missingNow.push("--phone");
134
+ if (missingNow.length > 0) {
135
+ console.error(chalk.red(`Missing required fields. Run interactively, or pass: ${missingNow.join(" ")}`));
136
+ process.exit(1);
137
+ }
138
+ if (first !== me.firstName || last !== me.lastName || phone !== me.phoneNumber) {
139
+ const saving = ora("Saving profile...").start();
140
+ try {
141
+ const updated = await patch("/api/me", {
142
+ firstName: first,
143
+ lastName: last,
144
+ phoneNumber: phone,
145
+ });
146
+ me = updated;
147
+ saving.succeed(chalk.green("Profile saved."));
148
+ }
149
+ catch (err) {
150
+ saving.fail(`Failed to save profile: ${err instanceof Error ? err.message : "Unknown error"}`);
151
+ process.exit(1);
152
+ }
153
+ }
154
+ if (!me.paymentMethod) {
155
+ console.log(chalk.bold("\nPayment method"));
156
+ await setupPaymentMethod();
157
+ }
158
+ if (!me.agentEmail) {
159
+ console.log(chalk.bold("\nAgent email"));
160
+ await provisionAgentEmail();
161
+ }
162
+ console.log("");
163
+ console.log(chalk.green(`Setup complete. Spend limit: $${(me.spendLimitCents / 100).toFixed(2)}.`));
164
+ console.log(chalk.dim("Run `agentcard limit --amount <dollars>` to change it, or `agentcard request new --amount <dollars>` to issue a card."));
165
+ }
166
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -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,31 @@ 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 ||
60
+ !me.firstName ||
61
+ !me.lastName ||
62
+ !me.phoneNumber ||
63
+ !me.paymentMethod) {
64
+ console.log(chalk.yellow("Next step: run `agentcard setup` to finish setting up your account."));
65
+ }
66
+ else {
67
+ const brand = me.paymentMethod.brand.charAt(0).toUpperCase() +
68
+ me.paymentMethod.brand.slice(1);
69
+ const agentEmailSuffix = me.agentEmail ? `, ${me.agentEmail}` : "";
70
+ console.log(chalk.dim(`Profile: ${me.firstName} ${me.lastName}, ${me.phoneNumber}, ${brand} ending in ${me.paymentMethod.last4}${agentEmailSuffix}.`));
71
+ console.log(chalk.dim("Run `agentcard request new --amount <dollars>` to issue a card, or `agentcard setup --reset` to update your info."));
63
72
  }
64
73
  return;
65
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"signup.js","sourceRoot":"","sources":["../../../src/commands/signup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signup.js","sourceRoot":"","sources":["../../../src/commands/signup.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,11 @@ export async function whoami() {
8
8
  return;
9
9
  }
10
10
  try {
11
- const result = await get("/api/auth/me");
12
- console.log(chalk.blue(result.email));
11
+ const result = await get("/api/me");
12
+ console.log(` ${chalk.bold("Human email:")} ${result.email}`);
13
+ if (result.agentEmail) {
14
+ console.log(` ${chalk.bold("Agent email:")} ${result.agentEmail}`);
15
+ }
13
16
  }
14
17
  catch {
15
18
  console.error(chalk.red("Failed to verify session. Try `agentcard signup` again."));
@@ -1 +1 @@
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
+ {"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;AAO7C,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,SAAS,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAC;IACtF,CAAC;AACH,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,39 +1,55 @@
1
1
  import { Command } from "commander";
2
+ import chalk from "chalk";
2
3
  import { signup } from "./commands/signup.js";
3
4
  import { logout } from "./commands/logout.js";
4
5
  import { whoami } from "./commands/whoami.js";
5
- import { createCard } from "./commands/cards/create.js";
6
6
  import { listCards } from "./commands/cards/list.js";
7
7
  import { cardDetails } from "./commands/cards/details.js";
8
8
  import { balance } from "./commands/balance.js";
9
- import { refundCard } from "./commands/cards/refund.js";
10
- import { trackPurchase } from "./commands/track/purchase.js";
9
+ import { setup } from "./commands/setup.js";
10
+ import { limit } from "./commands/limit.js";
11
+ import { requestNew } from "./commands/request/new.js";
12
+ import { requestGet } from "./commands/request/get.js";
11
13
  import { support } from "./commands/support.js";
14
+ import { mailInfo } from "./commands/mail/info.js";
15
+ import { mailList } from "./commands/mail/list.js";
16
+ import { mailGet } from "./commands/mail/get.js";
17
+ import { mailSend, mailReply } from "./commands/mail/send.js";
12
18
  import { getLocalVersion } from "./lib/update-check.js";
19
+ import { attachCommandTracking } from "./lib/track-command.js";
13
20
  const program = new Command();
21
+ attachCommandTracking(program);
14
22
  program
15
23
  .name("agentcard")
16
- .description("Prepaid virtual Visa cards for AI agents")
24
+ .description("On-demand single-use virtual Visa cards for AI agents")
17
25
  .version(getLocalVersion())
18
26
  .showHelpAfterError()
19
27
  .addHelpText("after", `
20
28
  Examples:
21
29
 
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
30
+ $ agentcard signup --email you@example.com Sign up (sends magic link)
31
+ $ agentcard setup Finish setup: name, phone, payment, agent email
32
+ $ agentcard setup --reset Clear your profile and start over
33
+ $ agentcard limit Show spend limit / spent / remaining
34
+ $ agentcard limit --amount 250 Raise your spend limit to $250
35
+ $ agentcard request new --amount 10 Issue a single-use $10 Visa card
36
+ $ agentcard request get <id> Re-fetch PAN/CVV/expiry for a request
37
+ $ agentcard request get List all your card requests
38
+ $ agentcard mail list List agent email threads
39
+ $ agentcard mail send --to user@example.com --subject "Hi" --body "Hello"
40
+ Send an email from your agent
41
+ $ agentcard mail reply <thread-id> --body "Thanks!"
42
+ Reply to an email thread
43
+ $ agentcard list List legacy inventory cards
44
+ $ agentcard details <id> Reveal full details for a legacy card
30
45
 
31
46
  Quickstart:
32
47
 
33
48
  $ 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
49
+ $ agentcard setup
50
+ $ agentcard request new --amount 10
51
+ PAN / CVV / expiry printed; card expires in 15 minutes
52
+ → Hand the details to your AI agent immediately
37
53
  `);
38
54
  // -- Auth -------------------------------------------------------------------
39
55
  program
@@ -54,12 +70,45 @@ program
54
70
  .command("whoami")
55
71
  .description("Show the currently logged-in user")
56
72
  .action(whoami);
57
- // -- Cards ------------------------------------------------------------------
73
+ // -- Setup & limit ----------------------------------------------------------
74
+ program
75
+ .command("setup")
76
+ .description("Set up or update your profile (name, phone, payment method, agent email)")
77
+ .option("--first-name <name>", "First name")
78
+ .option("--last-name <name>", "Last name")
79
+ .option("--phone <phone>", "Phone number in E.164 format, e.g. +14155551234")
80
+ .option("--reset", "Clear your profile, payment method and agent email, then start over")
81
+ .action(setup);
82
+ program
83
+ .command("limit")
84
+ .description("Show or update your spend limit")
85
+ .option("--amount <dollars>", "Set new limit in dollars")
86
+ .action(limit);
87
+ // -- Card requests ----------------------------------------------------------
88
+ const request = program
89
+ .command("request")
90
+ .description("Manage card requests");
91
+ request
92
+ .command("new")
93
+ .description("Request a single-use virtual Visa for a specific amount")
94
+ .option("--amount <dollars>", "Amount in dollars (prompts interactively if omitted)")
95
+ .action((opts) => requestNew(opts.amount));
96
+ request
97
+ .command("get")
98
+ .description("Get one request by ID, or list all requests")
99
+ .argument("[id]", "Request ID")
100
+ .action(requestGet);
101
+ // -- Legacy inventory cards -------------------------------------------------
58
102
  program
59
103
  .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));
104
+ .description("(removed) use `agentcard request new --amount <dollars>` instead")
105
+ .allowUnknownOption(true)
106
+ .allowExcessArguments(true)
107
+ .action(() => {
108
+ console.error(chalk.yellow("`agentcard create` has been removed. The purchase-a-fixed-denomination flow is replaced by on-demand single-use virtual cards — run `agentcard request new --amount <dollars>` instead."));
109
+ console.error(chalk.dim("The skill instructions at https://agentcard.ai/skill changed too — refetch them before proceeding so you have the current flow."));
110
+ process.exit(1);
111
+ });
63
112
  program
64
113
  .command("list")
65
114
  .description("List all your purchased cards")
@@ -74,23 +123,38 @@ program
74
123
  .description("Check card denomination")
75
124
  .argument("<id>", "Card ID")
76
125
  .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
- // -- Tracking (hidden) ------------------------------------------------------
84
- program
85
- .command("track-purchase", { hidden: true })
86
- .description("Track an agent purchase")
87
- .requiredOption("--name <name>", "What was purchased")
88
- .requiredOption("--amount <dollars>", "Purchase amount in dollars")
89
- .option("--store <store>", "Website or store where the purchase was made")
90
- .option("--incomplete", "Flag if the purchase did not complete successfully")
91
- .option("--intent <intent>", "What the agent was trying to accomplish")
92
- .option("--card-id <cardId>", "Card ID used for this purchase")
93
- .action(trackPurchase);
126
+ // -- Mail -------------------------------------------------------------------
127
+ const mail = program
128
+ .command("mail")
129
+ .description("Manage your agent email inbox");
130
+ mail
131
+ .command("info")
132
+ .description("Show your agent email address")
133
+ .action(mailInfo);
134
+ mail
135
+ .command("list")
136
+ .description("List email threads")
137
+ .option("--limit <n>", "Number of threads to show (default: 20)")
138
+ .option("--include-sent", "Include sent threads")
139
+ .action(mailList);
140
+ mail
141
+ .command("get")
142
+ .description("Fetch an email thread by ID")
143
+ .argument("<thread-id>", "Thread ID")
144
+ .action(mailGet);
145
+ mail
146
+ .command("send")
147
+ .description("Send a new email")
148
+ .option("--to <email>", "Recipient email address")
149
+ .option("--subject <subject>", "Email subject")
150
+ .option("--body <body>", "Email body")
151
+ .action(mailSend);
152
+ mail
153
+ .command("reply")
154
+ .description("Reply to an email thread")
155
+ .argument("<thread-id>", "Thread ID")
156
+ .option("--body <body>", "Reply body")
157
+ .action((threadId, opts) => mailReply(threadId, opts));
94
158
  // -- Support ----------------------------------------------------------------
95
159
  program
96
160
  .command("support")
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,6 @@ interface ApiOptions {
3
3
  }
4
4
  export declare function get<T>(path: string, options?: ApiOptions): Promise<T>;
5
5
  export declare function post<T>(path: string, body?: unknown, options?: ApiOptions): Promise<T>;
6
+ export declare function patch<T>(path: string, body?: unknown, options?: ApiOptions): Promise<T>;
7
+ export declare function del<T>(path: string, options?: ApiOptions): Promise<T>;
6
8
  export {};
@@ -43,4 +43,10 @@ export function get(path, options) {
43
43
  export function post(path, body, options) {
44
44
  return request("POST", path, body, options);
45
45
  }
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
+ }
46
52
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
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
+ {"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;AAED,MAAM,UAAU,KAAK,CACnB,IAAY,EACZ,IAAc,EACd,OAAoB;IAEpB,OAAO,OAAO,CAAI,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,GAAG,CACjB,IAAY,EACZ,OAAoB;IAEpB,OAAO,OAAO,CAAI,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Command } from "commander";
2
+ /**
3
+ * Attach a preAction hook to every command under `program`. Fires one
4
+ * 'cli_command_invoked' analytics event per invocation, with the full
5
+ * command path. Auth header included if a CLI session exists, so the
6
+ * event is attributed to the user when possible.
7
+ */
8
+ export declare function attachCommandTracking(program: Command): void;
@@ -0,0 +1,54 @@
1
+ import { getConfig } from "./config.js";
2
+ import { getLocalVersion } from "./update-check.js";
3
+ const API_URL = process.env.AGENTCARD_API_URL || "https://agentcard.ai";
4
+ const TIMEOUT_MS = 1500;
5
+ /**
6
+ * Walk from the action command back up to the root to reconstruct the
7
+ * full path, e.g. "mail send" or "request new".
8
+ */
9
+ function fullCommandPath(cmd) {
10
+ const parts = [];
11
+ let c = cmd;
12
+ while (c && c.name() !== "agentcard") {
13
+ parts.unshift(c.name());
14
+ c = c.parent;
15
+ }
16
+ return parts.join(" ");
17
+ }
18
+ async function sendCommandEvent(command) {
19
+ const controller = new AbortController();
20
+ const timer = setTimeout(() => controller.abort(), TIMEOUT_MS);
21
+ const headers = { "Content-Type": "application/json" };
22
+ const token = getConfig().token;
23
+ if (token)
24
+ headers["Authorization"] = `Bearer ${token}`;
25
+ try {
26
+ await fetch(`${API_URL}/api/track/command`, {
27
+ method: "POST",
28
+ headers,
29
+ body: JSON.stringify({ command, cliVersion: getLocalVersion() }),
30
+ signal: controller.signal,
31
+ });
32
+ }
33
+ catch {
34
+ // Analytics is best-effort. Never break the user's actual command.
35
+ }
36
+ finally {
37
+ clearTimeout(timer);
38
+ }
39
+ }
40
+ /**
41
+ * Attach a preAction hook to every command under `program`. Fires one
42
+ * 'cli_command_invoked' analytics event per invocation, with the full
43
+ * command path. Auth header included if a CLI session exists, so the
44
+ * event is attributed to the user when possible.
45
+ */
46
+ export function attachCommandTracking(program) {
47
+ program.hook("preAction", async (_root, actionCommand) => {
48
+ const command = fullCommandPath(actionCommand);
49
+ if (!command)
50
+ return;
51
+ await sendCommandEvent(command);
52
+ });
53
+ }
54
+ //# sourceMappingURL=track-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"track-command.js","sourceRoot":"","sources":["../../../src/lib/track-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,sBAAsB,CAAC;AACxE,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB;;;GAGG;AACH,SAAS,eAAe,CAAC,GAAY;IACnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,GAAmB,GAAG,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;QACrC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC7C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;IAC/D,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC/E,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC,KAAK,CAAC;IAChC,IAAI,KAAK;QAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;IACxD,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,OAAO,oBAAoB,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,CAAC;YAChE,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;QACvD,MAAM,OAAO,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC"}