agent-cards-admin 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/bin/agent-cards-admin.d.ts +3 -0
  2. package/dist/bin/agent-cards-admin.d.ts.map +1 -0
  3. package/dist/bin/agent-cards-admin.js +293 -0
  4. package/dist/bin/agent-cards-admin.js.map +1 -0
  5. package/dist/package.json +33 -0
  6. package/dist/src/commands/cards/close.d.ts +4 -0
  7. package/dist/src/commands/cards/close.d.ts.map +1 -0
  8. package/dist/src/commands/cards/close.js +29 -0
  9. package/dist/src/commands/cards/close.js.map +1 -0
  10. package/dist/src/commands/cards/create.d.ts +4 -0
  11. package/dist/src/commands/cards/create.d.ts.map +1 -0
  12. package/dist/src/commands/cards/create.js +51 -0
  13. package/dist/src/commands/cards/create.js.map +1 -0
  14. package/dist/src/commands/cards/details.d.ts +4 -0
  15. package/dist/src/commands/cards/details.d.ts.map +1 -0
  16. package/dist/src/commands/cards/details.js +22 -0
  17. package/dist/src/commands/cards/details.js.map +1 -0
  18. package/dist/src/commands/cards/get.d.ts +4 -0
  19. package/dist/src/commands/cards/get.d.ts.map +1 -0
  20. package/dist/src/commands/cards/get.js +20 -0
  21. package/dist/src/commands/cards/get.js.map +1 -0
  22. package/dist/src/commands/cards/list.d.ts +4 -0
  23. package/dist/src/commands/cards/list.d.ts.map +1 -0
  24. package/dist/src/commands/cards/list.js +31 -0
  25. package/dist/src/commands/cards/list.js.map +1 -0
  26. package/dist/src/commands/keys/create.d.ts +6 -0
  27. package/dist/src/commands/keys/create.d.ts.map +1 -0
  28. package/dist/src/commands/keys/create.js +75 -0
  29. package/dist/src/commands/keys/create.js.map +1 -0
  30. package/dist/src/commands/keys/list.d.ts +2 -0
  31. package/dist/src/commands/keys/list.d.ts.map +1 -0
  32. package/dist/src/commands/keys/list.js +34 -0
  33. package/dist/src/commands/keys/list.js.map +1 -0
  34. package/dist/src/commands/keys/revoke.d.ts +2 -0
  35. package/dist/src/commands/keys/revoke.d.ts.map +1 -0
  36. package/dist/src/commands/keys/revoke.js +65 -0
  37. package/dist/src/commands/keys/revoke.js.map +1 -0
  38. package/dist/src/commands/keys/rotate.d.ts +2 -0
  39. package/dist/src/commands/keys/rotate.d.ts.map +1 -0
  40. package/dist/src/commands/keys/rotate.js +73 -0
  41. package/dist/src/commands/keys/rotate.js.map +1 -0
  42. package/dist/src/commands/login.d.ts +2 -0
  43. package/dist/src/commands/login.d.ts.map +1 -0
  44. package/dist/src/commands/login.js +63 -0
  45. package/dist/src/commands/login.js.map +1 -0
  46. package/dist/src/commands/logout.d.ts +2 -0
  47. package/dist/src/commands/logout.d.ts.map +1 -0
  48. package/dist/src/commands/logout.js +18 -0
  49. package/dist/src/commands/logout.js.map +1 -0
  50. package/dist/src/commands/members/add.d.ts +5 -0
  51. package/dist/src/commands/members/add.d.ts.map +1 -0
  52. package/dist/src/commands/members/add.js +66 -0
  53. package/dist/src/commands/members/add.js.map +1 -0
  54. package/dist/src/commands/members/list.d.ts +2 -0
  55. package/dist/src/commands/members/list.d.ts.map +1 -0
  56. package/dist/src/commands/members/list.js +29 -0
  57. package/dist/src/commands/members/list.js.map +1 -0
  58. package/dist/src/commands/members/remove.d.ts +2 -0
  59. package/dist/src/commands/members/remove.d.ts.map +1 -0
  60. package/dist/src/commands/members/remove.js +64 -0
  61. package/dist/src/commands/members/remove.js.map +1 -0
  62. package/dist/src/commands/orgs/create.d.ts +5 -0
  63. package/dist/src/commands/orgs/create.d.ts.map +1 -0
  64. package/dist/src/commands/orgs/create.js +73 -0
  65. package/dist/src/commands/orgs/create.js.map +1 -0
  66. package/dist/src/commands/orgs/get.d.ts +2 -0
  67. package/dist/src/commands/orgs/get.d.ts.map +1 -0
  68. package/dist/src/commands/orgs/get.js +22 -0
  69. package/dist/src/commands/orgs/get.js.map +1 -0
  70. package/dist/src/commands/orgs/list.d.ts +2 -0
  71. package/dist/src/commands/orgs/list.d.ts.map +1 -0
  72. package/dist/src/commands/orgs/list.js +31 -0
  73. package/dist/src/commands/orgs/list.js.map +1 -0
  74. package/dist/src/commands/wallet/balance.d.ts +4 -0
  75. package/dist/src/commands/wallet/balance.d.ts.map +1 -0
  76. package/dist/src/commands/wallet/balance.js +13 -0
  77. package/dist/src/commands/wallet/balance.js.map +1 -0
  78. package/dist/src/commands/wallet/transactions.d.ts +4 -0
  79. package/dist/src/commands/wallet/transactions.d.ts.map +1 -0
  80. package/dist/src/commands/wallet/transactions.js +32 -0
  81. package/dist/src/commands/wallet/transactions.js.map +1 -0
  82. package/dist/src/lib/api.d.ts +27 -0
  83. package/dist/src/lib/api.d.ts.map +1 -0
  84. package/dist/src/lib/api.js +118 -0
  85. package/dist/src/lib/api.js.map +1 -0
  86. package/dist/src/lib/config.d.ts +18 -0
  87. package/dist/src/lib/config.d.ts.map +1 -0
  88. package/dist/src/lib/config.js +53 -0
  89. package/dist/src/lib/config.js.map +1 -0
  90. package/dist/src/lib/poll.d.ts +5 -0
  91. package/dist/src/lib/poll.d.ts.map +1 -0
  92. package/dist/src/lib/poll.js +12 -0
  93. package/dist/src/lib/poll.js.map +1 -0
  94. package/package.json +33 -0
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=agent-cards-admin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-cards-admin.d.ts","sourceRoot":"","sources":["../../bin/agent-cards-admin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,293 @@
1
+ #!/usr/bin/env node
2
+ import { readFileSync } from 'fs';
3
+ import { fileURLToPath } from 'url';
4
+ import { dirname, resolve } from 'path';
5
+ import { Command } from 'commander';
6
+ import chalk from 'chalk';
7
+ import { login } from '../src/commands/login.js';
8
+ import { logout } from '../src/commands/logout.js';
9
+ import { createOrg } from '../src/commands/orgs/create.js';
10
+ import { listOrgs } from '../src/commands/orgs/list.js';
11
+ import { getOrg } from '../src/commands/orgs/get.js';
12
+ import { createKey } from '../src/commands/keys/create.js';
13
+ import { listKeys } from '../src/commands/keys/list.js';
14
+ import { revokeKey } from '../src/commands/keys/revoke.js';
15
+ import { rotateKey } from '../src/commands/keys/rotate.js';
16
+ import { addMember } from '../src/commands/members/add.js';
17
+ import { listMembers } from '../src/commands/members/list.js';
18
+ import { removeMember } from '../src/commands/members/remove.js';
19
+ import { listCards } from '../src/commands/cards/list.js';
20
+ import { createCard } from '../src/commands/cards/create.js';
21
+ import { getCard } from '../src/commands/cards/get.js';
22
+ import { getCardDetails } from '../src/commands/cards/details.js';
23
+ import { closeCard } from '../src/commands/cards/close.js';
24
+ import { walletBalance } from '../src/commands/wallet/balance.js';
25
+ import { walletTransactions } from '../src/commands/wallet/transactions.js';
26
+ import { getEmail } from '../src/lib/config.js';
27
+ const __dirname = dirname(fileURLToPath(import.meta.url));
28
+ const pkg = JSON.parse(readFileSync(resolve(__dirname, '..', 'package.json'), 'utf8'));
29
+ const program = new Command();
30
+ program
31
+ .name('agent-cards-admin')
32
+ .description('Admin CLI for managing B2B organizations, API keys, and members')
33
+ .version(pkg.version);
34
+ const email = getEmail();
35
+ if (email) {
36
+ program.addHelpText('after', `\n${chalk.dim(`Logged in as ${chalk.cyan(email)}`)}`);
37
+ }
38
+ // --- Auth ---
39
+ program
40
+ .command('login')
41
+ .description('Log in with magic link')
42
+ .action(async () => {
43
+ try {
44
+ await login();
45
+ }
46
+ catch (err) {
47
+ console.error(`Error: ${err.message}`);
48
+ process.exit(1);
49
+ }
50
+ });
51
+ program
52
+ .command('logout')
53
+ .description('Log out and clear credentials')
54
+ .action(async () => {
55
+ try {
56
+ await logout();
57
+ }
58
+ catch (err) {
59
+ console.error(`Error: ${err.message}`);
60
+ process.exit(1);
61
+ }
62
+ });
63
+ // --- Organizations ---
64
+ const orgsCmd = program.command('orgs').description('Manage organizations');
65
+ orgsCmd
66
+ .command('create')
67
+ .description('Create a new organization')
68
+ .option('--name <name>', 'Organization name')
69
+ .option('--email <email>', 'Billing email')
70
+ .action(async (opts) => {
71
+ try {
72
+ await createOrg(opts);
73
+ }
74
+ catch (err) {
75
+ console.error(`Error: ${err.message}`);
76
+ process.exit(1);
77
+ }
78
+ });
79
+ orgsCmd
80
+ .command('list')
81
+ .description('List all organizations')
82
+ .action(async () => {
83
+ try {
84
+ await listOrgs();
85
+ }
86
+ catch (err) {
87
+ console.error(`Error: ${err.message}`);
88
+ process.exit(1);
89
+ }
90
+ });
91
+ orgsCmd
92
+ .command('get <org-id>')
93
+ .description('Show details of an organization')
94
+ .action(async (orgId) => {
95
+ try {
96
+ await getOrg(orgId);
97
+ }
98
+ catch (err) {
99
+ console.error(`Error: ${err.message}`);
100
+ process.exit(1);
101
+ }
102
+ });
103
+ // --- API Keys ---
104
+ const keysCmd = program.command('keys').description('Manage API keys');
105
+ keysCmd
106
+ .command('create')
107
+ .description('Create a new sandbox API key')
108
+ .option('--org <org-id>', 'Organization ID')
109
+ .option('--name <name>', 'Key name')
110
+ .action(async (opts) => {
111
+ try {
112
+ await createKey(opts);
113
+ }
114
+ catch (err) {
115
+ console.error(`Error: ${err.message}`);
116
+ process.exit(1);
117
+ }
118
+ });
119
+ keysCmd
120
+ .command('list')
121
+ .description('List API keys for an organization')
122
+ .requiredOption('--org <org-id>', 'Organization ID')
123
+ .action(async (opts) => {
124
+ try {
125
+ await listKeys(opts.org);
126
+ }
127
+ catch (err) {
128
+ console.error(`Error: ${err.message}`);
129
+ process.exit(1);
130
+ }
131
+ });
132
+ keysCmd
133
+ .command('revoke')
134
+ .description('Revoke an API key (interactive)')
135
+ .action(async () => {
136
+ try {
137
+ await revokeKey();
138
+ }
139
+ catch (err) {
140
+ console.error(`Error: ${err.message}`);
141
+ process.exit(1);
142
+ }
143
+ });
144
+ keysCmd
145
+ .command('rotate')
146
+ .description('Rotate an API key (interactive)')
147
+ .action(async () => {
148
+ try {
149
+ await rotateKey();
150
+ }
151
+ catch (err) {
152
+ console.error(`Error: ${err.message}`);
153
+ process.exit(1);
154
+ }
155
+ });
156
+ // --- Members ---
157
+ const membersCmd = program.command('members').description('Manage organization members');
158
+ membersCmd
159
+ .command('add')
160
+ .description('Add a member to an organization')
161
+ .option('--org <org-id>', 'Organization ID')
162
+ .option('--email <email>', 'Member email')
163
+ .action(async (opts) => {
164
+ try {
165
+ await addMember(opts);
166
+ }
167
+ catch (err) {
168
+ console.error(`Error: ${err.message}`);
169
+ process.exit(1);
170
+ }
171
+ });
172
+ membersCmd
173
+ .command('list')
174
+ .description('List members of an organization')
175
+ .requiredOption('--org <org-id>', 'Organization ID')
176
+ .action(async (opts) => {
177
+ try {
178
+ await listMembers(opts.org);
179
+ }
180
+ catch (err) {
181
+ console.error(`Error: ${err.message}`);
182
+ process.exit(1);
183
+ }
184
+ });
185
+ membersCmd
186
+ .command('remove')
187
+ .description('Remove a member from an organization (interactive)')
188
+ .action(async () => {
189
+ try {
190
+ await removeMember();
191
+ }
192
+ catch (err) {
193
+ console.error(`Error: ${err.message}`);
194
+ process.exit(1);
195
+ }
196
+ });
197
+ // --- Cards ---
198
+ const cardsCmd = program.command('cards').description('Manage virtual cards (requires API key)');
199
+ cardsCmd
200
+ .command('list')
201
+ .description('List all cards')
202
+ .option('--key <api-key>', 'API key (sk_test_...)')
203
+ .action(async (opts) => {
204
+ try {
205
+ await listCards(opts);
206
+ }
207
+ catch (err) {
208
+ console.error(`Error: ${err.message}`);
209
+ process.exit(1);
210
+ }
211
+ });
212
+ cardsCmd
213
+ .command('create')
214
+ .description('Create a new virtual card')
215
+ .option('--key <api-key>', 'API key (sk_test_...)')
216
+ .action(async (opts) => {
217
+ try {
218
+ await createCard(opts);
219
+ }
220
+ catch (err) {
221
+ console.error(`Error: ${err.message}`);
222
+ process.exit(1);
223
+ }
224
+ });
225
+ cardsCmd
226
+ .command('get <card-id>')
227
+ .description('Get card summary')
228
+ .option('--key <api-key>', 'API key (sk_test_...)')
229
+ .action(async (cardId, opts) => {
230
+ try {
231
+ await getCard(cardId, opts);
232
+ }
233
+ catch (err) {
234
+ console.error(`Error: ${err.message}`);
235
+ process.exit(1);
236
+ }
237
+ });
238
+ cardsCmd
239
+ .command('details <card-id>')
240
+ .description('Get full card details (PAN, CVV, expiry)')
241
+ .option('--key <api-key>', 'API key (sk_test_...)')
242
+ .action(async (cardId, opts) => {
243
+ try {
244
+ await getCardDetails(cardId, opts);
245
+ }
246
+ catch (err) {
247
+ console.error(`Error: ${err.message}`);
248
+ process.exit(1);
249
+ }
250
+ });
251
+ cardsCmd
252
+ .command('close <card-id>')
253
+ .description('Close a card permanently')
254
+ .option('--key <api-key>', 'API key (sk_test_...)')
255
+ .action(async (cardId, opts) => {
256
+ try {
257
+ await closeCard(cardId, opts);
258
+ }
259
+ catch (err) {
260
+ console.error(`Error: ${err.message}`);
261
+ process.exit(1);
262
+ }
263
+ });
264
+ // --- Wallet ---
265
+ const walletCmd = program.command('wallet').description('Manage organization wallet (requires API key)');
266
+ walletCmd
267
+ .command('balance')
268
+ .description('Show wallet balance')
269
+ .option('--key <api-key>', 'API key (sk_test_...)')
270
+ .action(async (opts) => {
271
+ try {
272
+ await walletBalance(opts);
273
+ }
274
+ catch (err) {
275
+ console.error(`Error: ${err.message}`);
276
+ process.exit(1);
277
+ }
278
+ });
279
+ walletCmd
280
+ .command('transactions')
281
+ .description('List wallet transactions')
282
+ .option('--key <api-key>', 'API key (sk_test_...)')
283
+ .action(async (opts) => {
284
+ try {
285
+ await walletTransactions(opts);
286
+ }
287
+ catch (err) {
288
+ console.error(`Error: ${err.message}`);
289
+ process.exit(1);
290
+ }
291
+ });
292
+ program.parse();
293
+ //# sourceMappingURL=agent-cards-admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-cards-admin.js","sourceRoot":"","sources":["../../bin/agent-cards-admin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "agent-cards-admin",
3
+ "version": "0.1.0",
4
+ "description": "Admin CLI for managing B2B organizations, API keys, and members",
5
+ "type": "module",
6
+ "bin": {
7
+ "agent-cards-admin": "dist/bin/agent-cards-admin.js"
8
+ },
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "engines": {
13
+ "node": ">=18"
14
+ },
15
+ "scripts": {
16
+ "dev": "tsx bin/agent-cards-admin.ts",
17
+ "build": "tsc && cp package.json dist/package.json && chmod +x dist/bin/agent-cards-admin.js",
18
+ "prepublishOnly": "pnpm build"
19
+ },
20
+ "dependencies": {
21
+ "chalk": "^5.3.0",
22
+ "cli-table3": "^0.6.3",
23
+ "commander": "^12.0.0",
24
+ "inquirer": "^9.2.15",
25
+ "ora": "^8.2.0"
26
+ },
27
+ "devDependencies": {
28
+ "@types/inquirer": "^9.0.7",
29
+ "@types/node": "^22.0.0",
30
+ "tsx": "^4.7.1",
31
+ "typescript": "^5.4.2"
32
+ }
33
+ }
@@ -0,0 +1,4 @@
1
+ export declare function closeCard(cardId: string, opts: {
2
+ key?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=close.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close.d.ts","sourceRoot":"","sources":["../../../../src/commands/cards/close.ts"],"names":[],"mappings":"AAKA,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BrF"}
@@ -0,0 +1,29 @@
1
+ import inquirer from 'inquirer';
2
+ import ora from 'ora';
3
+ import chalk from 'chalk';
4
+ import { apiKeyApi, getOrPromptApiKey } from '../../lib/api.js';
5
+ export async function closeCard(cardId, opts) {
6
+ const apiKey = await getOrPromptApiKey(opts.key);
7
+ const { confirmed } = await inquirer.prompt([
8
+ {
9
+ type: 'confirm',
10
+ name: 'confirmed',
11
+ message: `Are you sure you want to close card ${cardId}? This cannot be undone.`,
12
+ default: false,
13
+ },
14
+ ]);
15
+ if (!confirmed) {
16
+ console.log(chalk.dim('Cancelled.'));
17
+ return;
18
+ }
19
+ const spinner = ora('Closing card...').start();
20
+ const result = await apiKeyApi(apiKey, `/api/v1/cards/${cardId}`, {
21
+ method: 'DELETE',
22
+ });
23
+ spinner.succeed(chalk.green('Card closed'));
24
+ console.log('');
25
+ console.log(` ${chalk.bold('ID')} ${result.id}`);
26
+ console.log(` ${chalk.bold('Status')} ${chalk.red(result.status)}`);
27
+ console.log('');
28
+ }
29
+ //# sourceMappingURL=close.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close.js","sourceRoot":"","sources":["../../../../src/commands/cards/close.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,IAAsB;IACpE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QAC1C;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,uCAAuC,MAAM,0BAA0B;YAChF,OAAO,EAAE,KAAK;SACf;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAiC,MAAM,EAAE,iBAAiB,MAAM,EAAE,EAAE;QAChG,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;IAE5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function createCard(opts: {
2
+ key?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/commands/cards/create.ts"],"names":[],"mappings":"AAgBA,wBAAsB,UAAU,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDtE"}
@@ -0,0 +1,51 @@
1
+ import inquirer from 'inquirer';
2
+ import ora from 'ora';
3
+ import chalk from 'chalk';
4
+ import { apiKeyApi, getOrPromptApiKey } from '../../lib/api.js';
5
+ export async function createCard(opts) {
6
+ const apiKey = await getOrPromptApiKey(opts.key);
7
+ const { amountDollars } = await inquirer.prompt([
8
+ {
9
+ type: 'input',
10
+ name: 'amountDollars',
11
+ message: 'Card amount in dollars (e.g. 5.00):',
12
+ validate: (v) => {
13
+ const n = parseFloat(v);
14
+ if (isNaN(n) || n <= 0)
15
+ return 'Enter a positive dollar amount';
16
+ return true;
17
+ },
18
+ },
19
+ ]);
20
+ const amountCents = Math.round(parseFloat(amountDollars) * 100);
21
+ const { confirmed } = await inquirer.prompt([
22
+ {
23
+ type: 'confirm',
24
+ name: 'confirmed',
25
+ message: `Create a card with $${(amountCents / 100).toFixed(2)} spend limit?`,
26
+ default: true,
27
+ },
28
+ ]);
29
+ if (!confirmed) {
30
+ console.log(chalk.dim('Cancelled.'));
31
+ return;
32
+ }
33
+ const spinner = ora('Creating card...').start();
34
+ const card = await apiKeyApi(apiKey, '/api/v1/cards', {
35
+ method: 'POST',
36
+ body: { amountCents },
37
+ });
38
+ spinner.succeed(chalk.green('Card created'));
39
+ console.log('');
40
+ console.log(` ${chalk.bold('ID')} ${card.id}`);
41
+ console.log(` ${chalk.bold('Last 4')} ${card.last4}`);
42
+ console.log(` ${chalk.bold('Expiry')} ${card.expiry}`);
43
+ console.log(` ${chalk.bold('Balance')} $${(card.balanceCents / 100).toFixed(2)}`);
44
+ console.log(` ${chalk.bold('Spend Limit')} $${(card.spendLimitCents / 100).toFixed(2)}`);
45
+ console.log(` ${chalk.bold('Status')} ${chalk.green(card.status)}`);
46
+ if (card.sandbox) {
47
+ console.log(` ${chalk.yellow('(sandbox mode)')}`);
48
+ }
49
+ console.log('');
50
+ }
51
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/cards/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function getCardDetails(cardId: string, opts: {
2
+ key?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=details.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details.d.ts","sourceRoot":"","sources":["../../../../src/commands/cards/details.ts"],"names":[],"mappings":"AAeA,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB1F"}
@@ -0,0 +1,22 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { apiKeyApi, getOrPromptApiKey } from '../../lib/api.js';
4
+ export async function getCardDetails(cardId, opts) {
5
+ const apiKey = await getOrPromptApiKey(opts.key);
6
+ const spinner = ora('Fetching card details...').start();
7
+ const card = await apiKeyApi(apiKey, `/api/v1/cards/${cardId}/details`);
8
+ spinner.stop();
9
+ console.log('');
10
+ console.log(chalk.yellow.bold(' WARNING: Sensitive card data below. Do not share or log this output.'));
11
+ console.log('');
12
+ console.log(` ${chalk.bold('ID')} ${card.id}`);
13
+ console.log(` ${chalk.bold('PAN')} ${chalk.cyan(card.pan)}`);
14
+ console.log(` ${chalk.bold('CVV')} ${chalk.cyan(card.cvv)}`);
15
+ console.log(` ${chalk.bold('Expiry')} ${chalk.cyan(card.expiry)}`);
16
+ console.log(` ${chalk.bold('Last 4')} ${card.last4}`);
17
+ console.log(` ${chalk.bold('Balance')} $${(card.balanceCents / 100).toFixed(2)}`);
18
+ console.log(` ${chalk.bold('Spend Limit')} $${(card.spendLimitCents / 100).toFixed(2)}`);
19
+ console.log(` ${chalk.bold('Status')} ${card.status}`);
20
+ console.log('');
21
+ }
22
+ //# sourceMappingURL=details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details.js","sourceRoot":"","sources":["../../../../src/commands/cards/details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAahE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,IAAsB;IACzE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAsB,MAAM,EAAE,iBAAiB,MAAM,UAAU,CAAC,CAAC;IAC7F,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC,CAAC;IACzG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function getCard(cardId: string, opts: {
2
+ key?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/commands/cards/get.ts"],"names":[],"mappings":"AAcA,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBnF"}
@@ -0,0 +1,20 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { apiKeyApi, getOrPromptApiKey } from '../../lib/api.js';
4
+ export async function getCard(cardId, opts) {
5
+ const apiKey = await getOrPromptApiKey(opts.key);
6
+ const spinner = ora('Fetching card...').start();
7
+ const card = await apiKeyApi(apiKey, `/api/v1/cards/${cardId}`);
8
+ spinner.stop();
9
+ const statusColor = card.status === 'OPEN' ? chalk.green : card.status === 'CLOSED' ? chalk.red : chalk.dim;
10
+ console.log('');
11
+ console.log(` ${chalk.bold('ID')} ${card.id}`);
12
+ console.log(` ${chalk.bold('Last 4')} ${card.last4}`);
13
+ console.log(` ${chalk.bold('Expiry')} ${card.expiry}`);
14
+ console.log(` ${chalk.bold('Balance')} $${(card.balanceCents / 100).toFixed(2)}`);
15
+ console.log(` ${chalk.bold('Spend Limit')} $${(card.spendLimitCents / 100).toFixed(2)}`);
16
+ console.log(` ${chalk.bold('Status')} ${statusColor(card.status)}`);
17
+ console.log(` ${chalk.bold('Created')} ${new Date(card.createdAt).toLocaleString()}`);
18
+ console.log('');
19
+ }
20
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/commands/cards/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAYhE,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,IAAsB;IAClE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAe,MAAM,EAAE,iBAAiB,MAAM,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IAE1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function listCards(opts: {
2
+ key?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/commands/cards/list.ts"],"names":[],"mappings":"AAcA,wBAAsB,SAAS,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BrE"}
@@ -0,0 +1,31 @@
1
+ import Table from 'cli-table3';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { apiKeyApi, getOrPromptApiKey } from '../../lib/api.js';
5
+ export async function listCards(opts) {
6
+ const apiKey = await getOrPromptApiKey(opts.key);
7
+ const spinner = ora('Fetching cards...').start();
8
+ const { cards } = await apiKeyApi(apiKey, '/api/v1/cards');
9
+ spinner.stop();
10
+ if (cards.length === 0) {
11
+ console.log(chalk.dim('No cards found.'));
12
+ return;
13
+ }
14
+ const table = new Table({
15
+ head: ['ID', 'Last 4', 'Status', 'Balance', 'Spend Limit', 'Created'],
16
+ style: { head: ['cyan'] },
17
+ });
18
+ for (const card of cards) {
19
+ const statusColor = card.status === 'OPEN' ? chalk.green : card.status === 'CLOSED' ? chalk.red : chalk.dim;
20
+ table.push([
21
+ card.id,
22
+ card.last4,
23
+ statusColor(card.status),
24
+ `$${(card.balanceCents / 100).toFixed(2)}`,
25
+ `$${(card.spendLimitCents / 100).toFixed(2)}`,
26
+ new Date(card.createdAt).toLocaleDateString(),
27
+ ]);
28
+ }
29
+ console.log(table.toString());
30
+ }
31
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/cards/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAWhE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAsB;IACpD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;IACjD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,CAAmC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7F,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC;QACrE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE;KAC1B,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC1F,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,CAAC,EAAE;YACP,IAAI,CAAC,KAAK;YACV,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC7C,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function printSandboxBanner(): void;
2
+ export declare function createKey(opts: {
3
+ org?: string;
4
+ name?: string;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/commands/keys/create.ts"],"names":[],"mappings":"AAsBA,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0EpF"}