agent-cards 0.4.4 → 0.5.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.
- package/dist/bin/agent-cards.js +82 -3
- package/dist/bin/agent-cards.js.map +1 -1
- package/dist/src/commands/cards/create.d.ts.map +1 -1
- package/dist/src/commands/cards/create.js +220 -58
- package/dist/src/commands/cards/create.js.map +1 -1
- package/dist/src/commands/cards/details.d.ts.map +1 -1
- package/dist/src/commands/cards/details.js +29 -3
- package/dist/src/commands/cards/details.js.map +1 -1
- package/dist/src/commands/cards/list.js +1 -1
- package/dist/src/commands/cards/list.js.map +1 -1
- package/dist/src/commands/cards/transactions.d.ts +5 -0
- package/dist/src/commands/cards/transactions.d.ts.map +1 -0
- package/dist/src/commands/cards/transactions.js +45 -0
- package/dist/src/commands/cards/transactions.js.map +1 -0
- package/dist/src/commands/extension.d.ts +5 -0
- package/dist/src/commands/extension.d.ts.map +1 -0
- package/dist/src/commands/extension.js +101 -0
- package/dist/src/commands/extension.js.map +1 -0
- package/dist/src/commands/payment-methods/setup.d.ts +2 -0
- package/dist/src/commands/payment-methods/setup.d.ts.map +1 -0
- package/dist/src/commands/payment-methods/setup.js +31 -0
- package/dist/src/commands/payment-methods/setup.js.map +1 -0
- package/dist/src/commands/settings.d.ts.map +1 -1
- package/dist/src/commands/settings.js +7 -21
- package/dist/src/commands/settings.js.map +1 -1
- package/dist/src/commands/setup-mcp.d.ts.map +1 -1
- package/dist/src/commands/setup-mcp.js +30 -21
- package/dist/src/commands/setup-mcp.js.map +1 -1
- package/dist/src/commands/signup.d.ts.map +1 -1
- package/dist/src/commands/signup.js +4 -1
- package/dist/src/commands/signup.js.map +1 -1
- package/dist/src/lib/api.d.ts +7 -0
- package/dist/src/lib/api.d.ts.map +1 -1
- package/dist/src/lib/api.js +14 -1
- package/dist/src/lib/api.js.map +1 -1
- package/dist/src/lib/config.d.ts.map +1 -1
- package/dist/src/lib/config.js +1 -0
- package/dist/src/lib/config.js.map +1 -1
- package/package.json +1 -1
package/dist/bin/agent-cards.js
CHANGED
|
@@ -10,12 +10,15 @@ import { whoami } from '../src/commands/whoami.js';
|
|
|
10
10
|
import { createCard } from '../src/commands/cards/create.js';
|
|
11
11
|
import { listCards } from '../src/commands/cards/list.js';
|
|
12
12
|
import { cardDetails } from '../src/commands/cards/details.js';
|
|
13
|
+
import { cardTransactions } from '../src/commands/cards/transactions.js';
|
|
13
14
|
import { balance } from '../src/commands/balance.js';
|
|
14
15
|
import { setupMcp } from '../src/commands/setup-mcp.js';
|
|
15
16
|
import { support } from '../src/commands/support.js';
|
|
16
17
|
import { showSettings, settingsNotifications, settingsAuthorization } from '../src/commands/settings.js';
|
|
18
|
+
import { paymentMethodSetup } from '../src/commands/payment-methods/setup.js';
|
|
19
|
+
import { installExtension, updateExtension } from '../src/commands/extension.js';
|
|
17
20
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
18
|
-
const pkg = JSON.parse(readFileSync(resolve(__dirname, '..', '
|
|
21
|
+
const pkg = JSON.parse(readFileSync(resolve(__dirname, '..', 'package.json'), 'utf8'));
|
|
19
22
|
const program = new Command();
|
|
20
23
|
program
|
|
21
24
|
.name('agent-cards')
|
|
@@ -107,6 +110,34 @@ cardsCmd
|
|
|
107
110
|
process.exit(1);
|
|
108
111
|
}
|
|
109
112
|
});
|
|
113
|
+
cardsCmd
|
|
114
|
+
.command('transactions <id>')
|
|
115
|
+
.description('Show transaction history for a card')
|
|
116
|
+
.option('--limit <n>', 'Number of transactions', parseInt, 20)
|
|
117
|
+
.option('--status <status>', 'Filter by status')
|
|
118
|
+
.action(async (id, opts) => {
|
|
119
|
+
try {
|
|
120
|
+
await cardTransactions(id, opts);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
console.error(`Error: ${err.message}`);
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
program
|
|
128
|
+
.command('transactions <id>')
|
|
129
|
+
.description('Show transaction history for a card')
|
|
130
|
+
.option('--limit <n>', 'Number of transactions', parseInt, 20)
|
|
131
|
+
.option('--status <status>', 'Filter by status')
|
|
132
|
+
.action(async (id, opts) => {
|
|
133
|
+
try {
|
|
134
|
+
await cardTransactions(id, opts);
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
console.error(`Error: ${err.message}`);
|
|
138
|
+
process.exit(1);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
110
141
|
program
|
|
111
142
|
.command('balance <id>')
|
|
112
143
|
.description('Quick balance check for a card')
|
|
@@ -121,7 +152,7 @@ program
|
|
|
121
152
|
});
|
|
122
153
|
program
|
|
123
154
|
.command('setup-mcp')
|
|
124
|
-
.description('Configure the
|
|
155
|
+
.description('Configure the AgentCard MCP server in Claude Code')
|
|
125
156
|
.action(async () => {
|
|
126
157
|
try {
|
|
127
158
|
await setupMcp();
|
|
@@ -163,7 +194,7 @@ settingsCmd.command('notifications').description('Configure email notifications'
|
|
|
163
194
|
process.exit(1);
|
|
164
195
|
}
|
|
165
196
|
});
|
|
166
|
-
settingsCmd.command('authorization').description('
|
|
197
|
+
settingsCmd.command('authorization').description('View authorization status (always enabled)').action(async () => {
|
|
167
198
|
try {
|
|
168
199
|
await settingsAuthorization();
|
|
169
200
|
}
|
|
@@ -172,5 +203,53 @@ settingsCmd.command('authorization').description('Configure authorization requir
|
|
|
172
203
|
process.exit(1);
|
|
173
204
|
}
|
|
174
205
|
});
|
|
206
|
+
const paymentMethodCmd = program.command('payment-method').description('Manage payment methods');
|
|
207
|
+
paymentMethodCmd
|
|
208
|
+
.command('setup')
|
|
209
|
+
.description('Save a payment method for future card creation')
|
|
210
|
+
.action(async () => {
|
|
211
|
+
try {
|
|
212
|
+
await paymentMethodSetup();
|
|
213
|
+
}
|
|
214
|
+
catch (err) {
|
|
215
|
+
console.error(`Error: ${err.message}`);
|
|
216
|
+
process.exit(1);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
const extensionCmd = program.command('extension').description('Install the AgentCard Pay Chrome extension');
|
|
220
|
+
extensionCmd
|
|
221
|
+
.command('install')
|
|
222
|
+
.description('Download and install the Chrome extension')
|
|
223
|
+
.action(async () => {
|
|
224
|
+
try {
|
|
225
|
+
await installExtension();
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
console.error(`Error: ${err.message}`);
|
|
229
|
+
process.exit(1);
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
extensionCmd
|
|
233
|
+
.command('update')
|
|
234
|
+
.description('Re-download the latest version of the extension')
|
|
235
|
+
.action(async () => {
|
|
236
|
+
try {
|
|
237
|
+
await updateExtension();
|
|
238
|
+
}
|
|
239
|
+
catch (err) {
|
|
240
|
+
console.error(`Error: ${err.message}`);
|
|
241
|
+
process.exit(1);
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
// Default action: install
|
|
245
|
+
extensionCmd.action(async () => {
|
|
246
|
+
try {
|
|
247
|
+
await installExtension();
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
console.error(`Error: ${err.message}`);
|
|
251
|
+
process.exit(1);
|
|
252
|
+
}
|
|
253
|
+
});
|
|
175
254
|
program.parse();
|
|
176
255
|
//# sourceMappingURL=agent-cards.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-cards.js","sourceRoot":"","sources":["../../bin/agent-cards.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-cards.js","sourceRoot":"","sources":["../../bin/agent-cards.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/commands/cards/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../../src/commands/cards/create.ts"],"names":[],"mappings":"AA0QA,wBAAsB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CrE"}
|
|
@@ -2,7 +2,7 @@ import inquirer from 'inquirer';
|
|
|
2
2
|
import ora from 'ora';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import open from 'open';
|
|
5
|
-
import { api } from '../../lib/api.js';
|
|
5
|
+
import { api, ApiError } from '../../lib/api.js';
|
|
6
6
|
import { poll } from '../../lib/poll.js';
|
|
7
7
|
function printCardResult(result) {
|
|
8
8
|
const balance = (result.balanceCents / 100).toFixed(2);
|
|
@@ -11,9 +11,214 @@ function printCardResult(result) {
|
|
|
11
11
|
console.log(` ${chalk.bold('Expires')} ${result.expiry}`);
|
|
12
12
|
console.log(` ${chalk.bold('Balance')} ${chalk.green('$' + balance)}`);
|
|
13
13
|
console.log(` ${chalk.bold('ID')} ${chalk.dim(result.id)}`);
|
|
14
|
+
console.log(` ${chalk.bold('Billing')} 2261 Market Street #4242, San Francisco, CA 94114, US`);
|
|
14
15
|
console.log('');
|
|
15
16
|
console.log(chalk.dim(`Run: agent-cards cards details ${result.id} # to see full PAN/CVV`));
|
|
16
17
|
}
|
|
18
|
+
/** Returns true if the error is a 422 user_info_required response. */
|
|
19
|
+
function isUserInfoRequired(err) {
|
|
20
|
+
return err instanceof ApiError && err.status === 422 && err.body?.status === 'user_info_required';
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Prompt the user for identity info required by Stripe Issuing and submit it.
|
|
24
|
+
* Returns true on success, false if the user cancels.
|
|
25
|
+
*/
|
|
26
|
+
async function collectAndSubmitUserInfo() {
|
|
27
|
+
console.log('');
|
|
28
|
+
console.log(chalk.yellow('Before creating your first card, we need some information for identity verification.'));
|
|
29
|
+
console.log('');
|
|
30
|
+
const { firstName, lastName, dateOfBirth, phoneNumber } = await inquirer.prompt([
|
|
31
|
+
{
|
|
32
|
+
type: 'input',
|
|
33
|
+
name: 'firstName',
|
|
34
|
+
message: 'First name:',
|
|
35
|
+
validate: (v) => v.trim().length > 0 || 'First name is required',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
type: 'input',
|
|
39
|
+
name: 'lastName',
|
|
40
|
+
message: 'Last name:',
|
|
41
|
+
validate: (v) => v.trim().length > 0 || 'Last name is required',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
type: 'input',
|
|
45
|
+
name: 'dateOfBirth',
|
|
46
|
+
message: 'Date of birth (YYYY-MM-DD):',
|
|
47
|
+
validate: (v) => {
|
|
48
|
+
if (!/^\d{4}-\d{2}-\d{2}$/.test(v))
|
|
49
|
+
return 'Please enter a date in YYYY-MM-DD format';
|
|
50
|
+
const d = new Date(v + 'T00:00:00Z');
|
|
51
|
+
if (isNaN(d.getTime()))
|
|
52
|
+
return 'Invalid date';
|
|
53
|
+
return true;
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
type: 'input',
|
|
58
|
+
name: 'phoneNumber',
|
|
59
|
+
message: 'Phone number (e.g. +1-555-123-4567):',
|
|
60
|
+
validate: (v) => v.trim().length > 0 || 'Phone number is required',
|
|
61
|
+
},
|
|
62
|
+
]);
|
|
63
|
+
console.log('');
|
|
64
|
+
console.log(chalk.dim('By continuing, you agree to the Stripe Issuing cardholder terms:'));
|
|
65
|
+
console.log(chalk.dim('https://stripe.com/legal/issuing/celtic-authorized-user-terms'));
|
|
66
|
+
console.log('');
|
|
67
|
+
const { termsAccepted } = await inquirer.prompt([
|
|
68
|
+
{
|
|
69
|
+
type: 'confirm',
|
|
70
|
+
name: 'termsAccepted',
|
|
71
|
+
message: 'Do you accept the cardholder terms?',
|
|
72
|
+
default: false,
|
|
73
|
+
},
|
|
74
|
+
]);
|
|
75
|
+
if (!termsAccepted) {
|
|
76
|
+
console.log(chalk.dim('You must accept the terms to create a card.'));
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
const spinner = ora('Submitting identity information...').start();
|
|
80
|
+
try {
|
|
81
|
+
await api('/cards/user-info', {
|
|
82
|
+
method: 'POST',
|
|
83
|
+
body: {
|
|
84
|
+
firstName: firstName.trim(),
|
|
85
|
+
lastName: lastName.trim(),
|
|
86
|
+
dateOfBirth,
|
|
87
|
+
phoneNumber: phoneNumber.trim(),
|
|
88
|
+
termsAccepted: true,
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
spinner.succeed('Identity information saved');
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
spinner.fail('Failed to save identity information');
|
|
96
|
+
throw err;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function isPaymentMethodRequired(err) {
|
|
100
|
+
return err instanceof ApiError && err.status === 422 && err.body?.status === 'payment_method_required';
|
|
101
|
+
}
|
|
102
|
+
function isCardDeclined(err) {
|
|
103
|
+
return err instanceof ApiError && err.status === 402 && err.body?.error === 'card_declined';
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Inline payment method setup: open Stripe Checkout, poll until saved, then return.
|
|
107
|
+
*/
|
|
108
|
+
async function inlinePaymentMethodSetup() {
|
|
109
|
+
console.log('');
|
|
110
|
+
console.log(chalk.yellow('No saved payment method found. Let\'s set one up now.'));
|
|
111
|
+
const spinner = ora('Creating payment method setup session...').start();
|
|
112
|
+
const res = await api('/payment-methods/setup', { method: 'POST' });
|
|
113
|
+
spinner.succeed('Setup session ready');
|
|
114
|
+
console.log(chalk.cyan('\nOpening payment method setup page...'));
|
|
115
|
+
console.log(chalk.dim(`URL: ${res.checkoutUrl}\n`));
|
|
116
|
+
await open(res.checkoutUrl);
|
|
117
|
+
spinner.start('Waiting for payment method to be saved...');
|
|
118
|
+
await poll(async () => {
|
|
119
|
+
const status = await api('/payment-methods/status');
|
|
120
|
+
return status.hasPaymentMethod ? true : null;
|
|
121
|
+
}, { timeoutMs: 600_000 });
|
|
122
|
+
spinner.succeed(chalk.green('Payment method saved!'));
|
|
123
|
+
console.log('');
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Try to create a card via POST /cards/create.
|
|
127
|
+
* Returns the card on success.
|
|
128
|
+
* Handles 422 user_info_required by prompting for info and retrying.
|
|
129
|
+
* Handles 422 payment_method_required by running inline setup and retrying.
|
|
130
|
+
*/
|
|
131
|
+
async function tryCardCreation(amountCents, spinner) {
|
|
132
|
+
let declineRetries = 0;
|
|
133
|
+
const MAX_DECLINE_RETRIES = 2;
|
|
134
|
+
const MAX_ATTEMPTS = 6; // hard ceiling to prevent infinite loops
|
|
135
|
+
const attemptCreate = () => api('/cards/create', {
|
|
136
|
+
method: 'POST',
|
|
137
|
+
body: { amountCents },
|
|
138
|
+
headers: { 'X-Approval-Channel': 'inline_cli' },
|
|
139
|
+
});
|
|
140
|
+
for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
|
|
141
|
+
try {
|
|
142
|
+
return await attemptCreate();
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
// Card declined — show reason, offer payment method selection, retry
|
|
146
|
+
if (isCardDeclined(err)) {
|
|
147
|
+
if (declineRetries >= MAX_DECLINE_RETRIES) {
|
|
148
|
+
spinner.fail(chalk.red('Card declined again. Please check your payment method and try later.'));
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
declineRetries++;
|
|
152
|
+
spinner.stop();
|
|
153
|
+
const reason = err.body?.decline_reason;
|
|
154
|
+
console.log('');
|
|
155
|
+
console.log(chalk.red(err.body?.message ?? 'Your payment method was declined.'));
|
|
156
|
+
if (reason) {
|
|
157
|
+
console.log(chalk.yellow(`Reason: ${reason}`));
|
|
158
|
+
}
|
|
159
|
+
console.log(chalk.dim('Your payment method has been removed.'));
|
|
160
|
+
// Check for other payment methods on file
|
|
161
|
+
let handled = false;
|
|
162
|
+
try {
|
|
163
|
+
const pmList = await api('/payment-methods/list');
|
|
164
|
+
if (pmList.paymentMethods.length > 0) {
|
|
165
|
+
const choices = [
|
|
166
|
+
...pmList.paymentMethods.map((pm) => ({
|
|
167
|
+
name: `${pm.brand} •••• ${pm.last4} (expires ${String(pm.expMonth).padStart(2, '0')}/${String(pm.expYear).slice(-2)})`,
|
|
168
|
+
value: pm.id,
|
|
169
|
+
})),
|
|
170
|
+
{ name: chalk.cyan('+ Add a new payment method'), value: '__new__' },
|
|
171
|
+
];
|
|
172
|
+
const { selectedPm } = await inquirer.prompt([
|
|
173
|
+
{
|
|
174
|
+
type: 'list',
|
|
175
|
+
name: 'selectedPm',
|
|
176
|
+
message: 'Select a payment method:',
|
|
177
|
+
choices,
|
|
178
|
+
},
|
|
179
|
+
]);
|
|
180
|
+
if (selectedPm !== '__new__') {
|
|
181
|
+
const setSpinner = ora('Setting default payment method...').start();
|
|
182
|
+
await api('/payment-methods/default', {
|
|
183
|
+
method: 'POST',
|
|
184
|
+
body: { paymentMethodId: selectedPm },
|
|
185
|
+
});
|
|
186
|
+
setSpinner.succeed('Payment method updated');
|
|
187
|
+
handled = true;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// If listing fails, fall through to setup flow
|
|
193
|
+
}
|
|
194
|
+
if (!handled) {
|
|
195
|
+
await inlinePaymentMethodSetup();
|
|
196
|
+
}
|
|
197
|
+
spinner.start('Retrying card creation...');
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
// Payment method required — inline setup then retry
|
|
201
|
+
if (isPaymentMethodRequired(err)) {
|
|
202
|
+
spinner.stop();
|
|
203
|
+
await inlinePaymentMethodSetup();
|
|
204
|
+
spinner.start('Creating card...');
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
// User info required — collect it and retry
|
|
208
|
+
if (isUserInfoRequired(err)) {
|
|
209
|
+
spinner.stop();
|
|
210
|
+
const ok = await collectAndSubmitUserInfo();
|
|
211
|
+
if (!ok) {
|
|
212
|
+
process.exit(1);
|
|
213
|
+
}
|
|
214
|
+
spinner.start('Creating card...');
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
throw err;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
17
222
|
export async function createCard(amountDollars) {
|
|
18
223
|
if (amountDollars < 1) {
|
|
19
224
|
console.error(chalk.red('Amount must be at least $1'));
|
|
@@ -23,7 +228,8 @@ export async function createCard(amountDollars) {
|
|
|
23
228
|
console.log('');
|
|
24
229
|
console.log(chalk.green.bold('Single-use card'));
|
|
25
230
|
console.log(chalk.green('This will create a one-time virtual card for a single transaction.'));
|
|
26
|
-
console.log(chalk.green('
|
|
231
|
+
console.log(chalk.green('Your payment method will only be charged when this card is used.'));
|
|
232
|
+
console.log(chalk.green('Cards expire if not used within 7 days.'));
|
|
27
233
|
console.log('');
|
|
28
234
|
const { confirmed } = await inquirer.prompt([
|
|
29
235
|
{
|
|
@@ -37,63 +243,19 @@ export async function createCard(amountDollars) {
|
|
|
37
243
|
console.log(chalk.dim('Cancelled.'));
|
|
38
244
|
return;
|
|
39
245
|
}
|
|
40
|
-
const spinner = ora('Creating
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
console.log('');
|
|
47
|
-
console.log(chalk.
|
|
48
|
-
console.log(chalk.yellow("You've been added to our waitlist — we'll notify you when we can issue more cards."));
|
|
49
|
-
console.log('');
|
|
246
|
+
const spinner = ora('Creating card...').start();
|
|
247
|
+
const result = await tryCardCreation(amountCents, spinner);
|
|
248
|
+
// Card created successfully
|
|
249
|
+
if (result && 'id' in result) {
|
|
250
|
+
spinner.succeed(chalk.green('Virtual card issued!'));
|
|
251
|
+
printCardResult(result);
|
|
252
|
+
console.log(chalk.dim('Your payment method will be charged when this card is used.'));
|
|
253
|
+
console.log(chalk.dim('Card expires if not used within 7 days.'));
|
|
50
254
|
return;
|
|
51
255
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const res = await api(`/approvals/${checkoutRes.approvalId}/status`);
|
|
57
|
-
if (res.status === 'approved' || res.status === 'denied' || res.status === 'expired') {
|
|
58
|
-
return res;
|
|
59
|
-
}
|
|
60
|
-
return null;
|
|
61
|
-
}, { timeoutMs: 600_000 });
|
|
62
|
-
if (approvalResult.status !== 'approved') {
|
|
63
|
-
spinner.fail(approvalResult.status === 'denied'
|
|
64
|
-
? 'The card owner denied the request.'
|
|
65
|
-
: 'The approval request expired.');
|
|
66
|
-
process.exit(1);
|
|
67
|
-
}
|
|
68
|
-
spinner.text = 'Approved! Creating checkout session...';
|
|
69
|
-
const approvedRes = await api('/funding/checkout/approved', {
|
|
70
|
-
method: 'POST',
|
|
71
|
-
body: {
|
|
72
|
-
approvalId: checkoutRes.approvalId,
|
|
73
|
-
fundingSessionId: checkoutRes.fundingSessionId,
|
|
74
|
-
},
|
|
75
|
-
});
|
|
76
|
-
sessionId = approvedRes.sessionId;
|
|
77
|
-
checkoutUrl = approvedRes.checkoutUrl;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
sessionId = checkoutRes.sessionId;
|
|
81
|
-
checkoutUrl = checkoutRes.checkoutUrl;
|
|
82
|
-
}
|
|
83
|
-
spinner.succeed('Checkout ready');
|
|
84
|
-
console.log(chalk.cyan(`\nOpening payment page for $${amountDollars.toFixed(2)}...`));
|
|
85
|
-
console.log(chalk.dim(`URL: ${checkoutUrl}\n`));
|
|
86
|
-
await open(checkoutUrl);
|
|
87
|
-
spinner.start('Waiting for payment confirmation...');
|
|
88
|
-
const result = await poll(async () => {
|
|
89
|
-
const res = await api(`/funding/status/${sessionId}`);
|
|
90
|
-
if (res.status === 'ready' && res.card)
|
|
91
|
-
return res.card;
|
|
92
|
-
if (res.status === 'failed')
|
|
93
|
-
throw new Error('Payment failed. The Stripe checkout was not completed or the charge was declined. Please try again.');
|
|
94
|
-
return null;
|
|
95
|
-
}, { timeoutMs: 600_000 });
|
|
96
|
-
spinner.succeed(chalk.green('Virtual card issued!'));
|
|
97
|
-
printCardResult(result);
|
|
256
|
+
// If we got here, something unexpected happened
|
|
257
|
+
spinner.fail('Unexpected error creating card.');
|
|
258
|
+
console.log(chalk.red('Card creation failed. Please try again or contact support.'));
|
|
259
|
+
process.exit(1);
|
|
98
260
|
}
|
|
99
261
|
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/cards/create.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/cards/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"details.d.ts","sourceRoot":"","sources":["../../../../src/commands/cards/details.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"details.d.ts","sourceRoot":"","sources":["../../../../src/commands/cards/details.ts"],"names":[],"mappings":"AAoCA,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC/D"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
+
import inquirer from 'inquirer';
|
|
2
3
|
import { api } from '../../lib/api.js';
|
|
3
|
-
|
|
4
|
-
const card = await api(`/cards/${cardId}/details`);
|
|
4
|
+
function printCardDetails(card) {
|
|
5
5
|
console.log('');
|
|
6
6
|
console.log(chalk.bold('Card Details'));
|
|
7
7
|
console.log(chalk.dim('─'.repeat(40)));
|
|
@@ -9,8 +9,34 @@ export async function cardDetails(cardId) {
|
|
|
9
9
|
console.log(` ${chalk.bold('CVV')} ${chalk.cyan(card.cvv)}`);
|
|
10
10
|
console.log(` ${chalk.bold('Expiry')} ${card.expiry}`);
|
|
11
11
|
console.log(` ${chalk.bold('Balance')} ${chalk.green('$' + (card.balanceCents / 100).toFixed(2))}`);
|
|
12
|
-
console.log(` ${chalk.bold('Status')} ${card.status === 'OPEN' ? chalk.green('OPEN') : chalk.red(card.status)}`);
|
|
12
|
+
console.log(` ${chalk.bold('Status')} ${card.status === 'OPEN' ? chalk.green('OPEN') : card.status === 'IN_USE' ? chalk.yellow('IN_USE') : chalk.red(card.status)}`);
|
|
13
13
|
console.log('');
|
|
14
14
|
console.log(chalk.red.bold('⚠ Keep this PAN/CVV confidential'));
|
|
15
15
|
}
|
|
16
|
+
export async function cardDetails(cardId) {
|
|
17
|
+
const res = await api(`/cards/${cardId}/details`, { headers: { 'X-Approval-Channel': 'inline_cli' } });
|
|
18
|
+
if (res._status === 202 && res.approvalId) {
|
|
19
|
+
console.log('');
|
|
20
|
+
console.log(chalk.yellow(res.message || 'Approval required to view card details.'));
|
|
21
|
+
console.log('');
|
|
22
|
+
const { approve } = await inquirer.prompt([
|
|
23
|
+
{
|
|
24
|
+
type: 'confirm',
|
|
25
|
+
name: 'approve',
|
|
26
|
+
message: 'Approve this request?',
|
|
27
|
+
default: true,
|
|
28
|
+
},
|
|
29
|
+
]);
|
|
30
|
+
const decision = approve ? 'approved' : 'denied';
|
|
31
|
+
await api(`/approvals/${res.approvalId}/resolve`, { method: 'POST', body: { decision }, headers: { 'X-Approval-Channel': 'inline_cli' } });
|
|
32
|
+
if (!approve) {
|
|
33
|
+
console.log(chalk.dim('Request denied.'));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const card = await api(`/cards/${cardId}/details/approved?approvalId=${res.approvalId}`);
|
|
37
|
+
printCardDetails(card);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
printCardDetails(res);
|
|
41
|
+
}
|
|
16
42
|
//# sourceMappingURL=details.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"details.js","sourceRoot":"","sources":["../../../../src/commands/cards/details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"details.js","sourceRoot":"","sources":["../../../../src/commands/cards/details.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ export async function listCards() {
|
|
|
14
14
|
for (const card of cards) {
|
|
15
15
|
const balance = `$${(card.balanceCents / 100).toFixed(2)}`;
|
|
16
16
|
const limit = `$${(card.spendLimitCents / 100).toFixed(2)}`;
|
|
17
|
-
const statusColor = card.status === 'OPEN' ? chalk.green : chalk.red;
|
|
17
|
+
const statusColor = card.status === 'OPEN' ? chalk.green : card.status === 'IN_USE' ? chalk.yellow : chalk.red;
|
|
18
18
|
table.push([
|
|
19
19
|
card.id.slice(0, 8) + '…',
|
|
20
20
|
'•••• ' + card.last4,
|
|
@@ -1 +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,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAYvC,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAoB,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IAE7D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC,CAAC;QACzF,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,IAAI,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC;QACrE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE;KAC1B,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;
|
|
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,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAYvC,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAoB,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IAE7D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC,CAAC;QACzF,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,IAAI,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC;QACrE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE;KAC1B,CAAC,CAAC;IAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/G,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG;YACzB,OAAO,GAAG,IAAI,CAAC,KAAK;YACpB,IAAI,CAAC,MAAM;YACX,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;YACpB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;YAChB,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;SACzB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../../../src/commands/cards/transactions.ts"],"names":[],"mappings":"AAgCA,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACvC,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import Table from 'cli-table3';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { api } from '../../lib/api.js';
|
|
4
|
+
function statusColor(status) {
|
|
5
|
+
switch (status) {
|
|
6
|
+
case 'SETTLED':
|
|
7
|
+
case 'COMPLETED':
|
|
8
|
+
return chalk.green(status);
|
|
9
|
+
case 'PENDING':
|
|
10
|
+
return chalk.yellow(status);
|
|
11
|
+
case 'DECLINED':
|
|
12
|
+
case 'REVERSED':
|
|
13
|
+
case 'FAILED':
|
|
14
|
+
return chalk.red(status);
|
|
15
|
+
default:
|
|
16
|
+
return chalk.dim(status);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export async function cardTransactions(cardId, opts) {
|
|
20
|
+
let path = `/cards/${cardId}/transactions?limit=${opts.limit}`;
|
|
21
|
+
if (opts.status)
|
|
22
|
+
path += `&status=${opts.status}`;
|
|
23
|
+
const { transactions } = await api(path);
|
|
24
|
+
if (transactions.length === 0) {
|
|
25
|
+
console.log(chalk.dim('No transactions found.'));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const table = new Table({
|
|
29
|
+
head: ['Date', 'Merchant', 'Amount', 'Status', 'Source'],
|
|
30
|
+
style: { head: ['cyan'] },
|
|
31
|
+
});
|
|
32
|
+
for (const tx of transactions) {
|
|
33
|
+
const date = new Date(tx.createdAt).toLocaleString();
|
|
34
|
+
const amount = `$${(tx.amountCents / 100).toFixed(2)}`;
|
|
35
|
+
table.push([
|
|
36
|
+
date,
|
|
37
|
+
tx.merchant || chalk.dim('—'),
|
|
38
|
+
chalk.green(amount),
|
|
39
|
+
statusColor(tx.status),
|
|
40
|
+
tx.source || chalk.dim('—'),
|
|
41
|
+
]);
|
|
42
|
+
}
|
|
43
|
+
console.log(table.toString());
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=transactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../../../src/commands/cards/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAcvC,SAAS,WAAW,CAAC,MAAc;IACjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS,CAAC;QACf,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3B;YACE,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,IAAwC;IAExC,IAAI,IAAI,GAAG,UAAU,MAAM,uBAAuB,IAAI,CAAC,KAAK,EAAE,CAAC;IAC/D,IAAI,IAAI,CAAC,MAAM;QAAE,IAAI,IAAI,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;IAElD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,GAAG,CAAkC,IAAI,CAAC,CAAC;IAE1E,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;QACxD,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE;KAC1B,CAAC,CAAC;IAEH,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI;YACJ,EAAE,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAC7B,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YACnB,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC;YACtB,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../../../src/commands/extension.ts"],"names":[],"mappings":"AASA,QAAA,MAAM,aAAa,QAAuC,CAAC;AA8B3D,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoDtD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrD;AAcD,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { existsSync, mkdirSync, createWriteStream, rmSync } from 'fs';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { CONFIG_DIR } from '../lib/config.js';
|
|
6
|
+
import { execSync } from 'child_process';
|
|
7
|
+
import https from 'https';
|
|
8
|
+
import http from 'http';
|
|
9
|
+
const EXTENSION_DIR = join(CONFIG_DIR, 'chrome-extension');
|
|
10
|
+
const EXTENSION_URL = process.env.AGENTCARD_EXTENSION_URL || 'https://agentcard.sh/pay/extension.zip';
|
|
11
|
+
const MANIFEST_PATH = join(EXTENSION_DIR, 'manifest.json');
|
|
12
|
+
function download(url, dest) {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
const file = createWriteStream(dest);
|
|
15
|
+
const get = url.startsWith('https') ? https.get : http.get;
|
|
16
|
+
get(url, (response) => {
|
|
17
|
+
// Follow redirects
|
|
18
|
+
if (response.statusCode === 301 || response.statusCode === 302) {
|
|
19
|
+
const location = response.headers.location;
|
|
20
|
+
if (!location)
|
|
21
|
+
return reject(new Error('Redirect with no location'));
|
|
22
|
+
file.close();
|
|
23
|
+
return download(location, dest).then(resolve).catch(reject);
|
|
24
|
+
}
|
|
25
|
+
if (response.statusCode !== 200) {
|
|
26
|
+
file.close();
|
|
27
|
+
return reject(new Error(`Download failed: HTTP ${response.statusCode}`));
|
|
28
|
+
}
|
|
29
|
+
response.pipe(file);
|
|
30
|
+
file.on('finish', () => { file.close(); resolve(); });
|
|
31
|
+
file.on('error', reject);
|
|
32
|
+
}).on('error', reject);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
export async function installExtension() {
|
|
36
|
+
// Check if already installed
|
|
37
|
+
if (existsSync(MANIFEST_PATH)) {
|
|
38
|
+
console.log(chalk.green('✓') + ' Extension already installed at ' + chalk.cyan(EXTENSION_DIR));
|
|
39
|
+
console.log();
|
|
40
|
+
printLoadInstructions();
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const spinner = ora('Downloading AgentCard Pay Chrome extension…').start();
|
|
44
|
+
const zipPath = join(CONFIG_DIR, 'extension.zip');
|
|
45
|
+
try {
|
|
46
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
47
|
+
// Download
|
|
48
|
+
await download(EXTENSION_URL, zipPath);
|
|
49
|
+
spinner.text = 'Extracting…';
|
|
50
|
+
// Extract
|
|
51
|
+
mkdirSync(EXTENSION_DIR, { recursive: true });
|
|
52
|
+
execSync(`unzip -o -q "${zipPath}" -d "${EXTENSION_DIR}"`, { stdio: 'ignore' });
|
|
53
|
+
// Clean up zip
|
|
54
|
+
rmSync(zipPath, { force: true });
|
|
55
|
+
if (!existsSync(MANIFEST_PATH)) {
|
|
56
|
+
// Maybe the zip has a nested folder
|
|
57
|
+
const { readdirSync } = await import('fs');
|
|
58
|
+
const entries = readdirSync(EXTENSION_DIR);
|
|
59
|
+
const nested = entries.find(e => existsSync(join(EXTENSION_DIR, e, 'manifest.json')));
|
|
60
|
+
if (nested) {
|
|
61
|
+
// Move contents up
|
|
62
|
+
execSync(`mv "${join(EXTENSION_DIR, nested)}"/* "${EXTENSION_DIR}"/`, { stdio: 'ignore' });
|
|
63
|
+
rmSync(join(EXTENSION_DIR, nested), { recursive: true, force: true });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
spinner.succeed('Extension installed!');
|
|
67
|
+
console.log(chalk.dim(' Location: ') + chalk.cyan(EXTENSION_DIR));
|
|
68
|
+
console.log();
|
|
69
|
+
printLoadInstructions();
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
spinner.fail('Failed to download extension.');
|
|
73
|
+
// Clean up partial downloads
|
|
74
|
+
rmSync(zipPath, { force: true });
|
|
75
|
+
rmSync(EXTENSION_DIR, { recursive: true, force: true });
|
|
76
|
+
console.error(chalk.red(err.message));
|
|
77
|
+
console.log();
|
|
78
|
+
console.log(chalk.dim('You can also download manually from: ') + chalk.cyan('https://agentcard.sh/pay'));
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
export async function updateExtension() {
|
|
83
|
+
// Remove existing and re-download
|
|
84
|
+
if (existsSync(EXTENSION_DIR)) {
|
|
85
|
+
rmSync(EXTENSION_DIR, { recursive: true, force: true });
|
|
86
|
+
}
|
|
87
|
+
await installExtension();
|
|
88
|
+
}
|
|
89
|
+
function printLoadInstructions() {
|
|
90
|
+
console.log(chalk.bold('Load the extension in Chrome:'));
|
|
91
|
+
console.log();
|
|
92
|
+
console.log(' 1. Open ' + chalk.cyan('chrome://extensions') + ' in Chrome');
|
|
93
|
+
console.log(' 2. Enable ' + chalk.bold('Developer mode') + ' (top-right toggle)');
|
|
94
|
+
console.log(' 3. Click ' + chalk.bold('"Load unpacked"'));
|
|
95
|
+
console.log(' 4. Select: ' + chalk.cyan(EXTENSION_DIR));
|
|
96
|
+
console.log(' 5. Sign in to the extension with your AgentCard account');
|
|
97
|
+
console.log();
|
|
98
|
+
console.log(chalk.dim('The extension will auto-connect to the MCP server when Chrome is running.'));
|
|
99
|
+
}
|
|
100
|
+
export { EXTENSION_DIR };
|
|
101
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/commands/extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../src/commands/payment-methods/setup.ts"],"names":[],"mappings":"AAMA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqCxD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import ora from 'ora';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import open from 'open';
|
|
4
|
+
import { api } from '../../lib/api.js';
|
|
5
|
+
import { poll } from '../../lib/poll.js';
|
|
6
|
+
export async function paymentMethodSetup() {
|
|
7
|
+
const spinner = ora('Creating payment method setup session...').start();
|
|
8
|
+
let checkoutUrl;
|
|
9
|
+
try {
|
|
10
|
+
const res = await api('/payment-methods/setup', { method: 'POST' });
|
|
11
|
+
checkoutUrl = res.checkoutUrl;
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
spinner.stop();
|
|
15
|
+
throw err;
|
|
16
|
+
}
|
|
17
|
+
spinner.succeed('Setup session ready');
|
|
18
|
+
console.log(chalk.cyan('\nOpening payment method setup page...'));
|
|
19
|
+
console.log(chalk.dim(`URL: ${checkoutUrl}\n`));
|
|
20
|
+
await open(checkoutUrl);
|
|
21
|
+
spinner.start('Waiting for payment method to be saved...');
|
|
22
|
+
await poll(async () => {
|
|
23
|
+
const res = await api('/payment-methods/status');
|
|
24
|
+
if (res.hasPaymentMethod)
|
|
25
|
+
return true;
|
|
26
|
+
return null;
|
|
27
|
+
}, { timeoutMs: 600_000 });
|
|
28
|
+
spinner.succeed(chalk.green('Payment method saved successfully!'));
|
|
29
|
+
console.log('You can now create cards without going through checkout each time.');
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../src/commands/payment-methods/setup.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,OAAO,GAAG,GAAG,CAAC,0CAA0C,CAAC,CAAC,KAAK,EAAE,CAAC;IAExE,IAAI,WAAmB,CAAC;IAExB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CACnB,wBAAwB,EACxB,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC;QACF,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IAChC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,WAAW,IAAI,CAAC,CAAC,CAAC;IAEhD,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC;IAExB,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAE3D,MAAM,IAAI,CACR,KAAK,IAAI,EAAE;QACT,MAAM,GAAG,GAAG,MAAM,GAAG,CACnB,yBAAyB,CAC1B,CAAC;QACF,IAAI,GAAG,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC,EACD,EAAE,SAAS,EAAE,OAAO,EAAE,CACvB,CAAC;IAEF,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;AACpF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/commands/settings.ts"],"names":[],"mappings":"AAsBA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/commands/settings.ts"],"names":[],"mappings":"AAsBA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAelD;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoC3D;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAS3D"}
|
|
@@ -16,6 +16,7 @@ export async function showSettings() {
|
|
|
16
16
|
console.log(chalk.bold('Authorization'));
|
|
17
17
|
console.log(` Card details ${flag(s.authorization.card_details)}`);
|
|
18
18
|
console.log(` Transaction ${flag(s.authorization.transaction)}`);
|
|
19
|
+
console.log(chalk.dim(' Authorization is always enabled and cannot be changed.'));
|
|
19
20
|
console.log();
|
|
20
21
|
}
|
|
21
22
|
export async function settingsNotifications() {
|
|
@@ -53,27 +54,12 @@ export async function settingsNotifications() {
|
|
|
53
54
|
console.log(chalk.green('Notification preferences saved.'));
|
|
54
55
|
}
|
|
55
56
|
export async function settingsAuthorization() {
|
|
56
|
-
const
|
|
57
|
-
console.log(
|
|
57
|
+
const s = await api('/settings');
|
|
58
|
+
console.log();
|
|
59
|
+
console.log(chalk.bold('Authorization'));
|
|
60
|
+
console.log(` Card details ${flag(s.authorization.card_details)}`);
|
|
61
|
+
console.log(` Transaction ${flag(s.authorization.transaction)}`);
|
|
62
|
+
console.log(chalk.dim(' Authorization is always enabled and cannot be changed.'));
|
|
58
63
|
console.log();
|
|
59
|
-
const answers = await inquirer.prompt([
|
|
60
|
-
{
|
|
61
|
-
type: 'confirm',
|
|
62
|
-
name: 'card_details',
|
|
63
|
-
message: 'Require approval for card details access?',
|
|
64
|
-
default: current.authorization.card_details,
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
type: 'confirm',
|
|
68
|
-
name: 'transaction',
|
|
69
|
-
message: 'Require approval for transactions (card creation)?',
|
|
70
|
-
default: current.authorization.transaction,
|
|
71
|
-
},
|
|
72
|
-
]);
|
|
73
|
-
await api('/settings', {
|
|
74
|
-
method: 'PATCH',
|
|
75
|
-
body: { authorization: answers },
|
|
76
|
-
});
|
|
77
|
-
console.log(chalk.green('Authorization preferences saved.'));
|
|
78
64
|
}
|
|
79
65
|
//# sourceMappingURL=settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/commands/settings.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/commands/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-mcp.d.ts","sourceRoot":"","sources":["../../../src/commands/setup-mcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup-mcp.d.ts","sourceRoot":"","sources":["../../../src/commands/setup-mcp.ts"],"names":[],"mappings":"AAiBA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAqD9C"}
|
|
@@ -2,30 +2,18 @@ import chalk from 'chalk';
|
|
|
2
2
|
import ora from 'ora';
|
|
3
3
|
import { execSync } from 'child_process';
|
|
4
4
|
import { getJwt } from '../lib/config.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
if (!jwt) {
|
|
8
|
-
console.error(chalk.red('Not logged in.') +
|
|
9
|
-
' Run ' +
|
|
10
|
-
chalk.cyan('agent-cards signup') +
|
|
11
|
-
' first.');
|
|
12
|
-
process.exit(1);
|
|
13
|
-
}
|
|
14
|
-
// Validate JWT isn't expired
|
|
5
|
+
import { signup } from './signup.js';
|
|
6
|
+
function isJwtExpired(jwt) {
|
|
15
7
|
try {
|
|
16
8
|
const payload = JSON.parse(Buffer.from(jwt.split('.')[1], 'base64').toString());
|
|
17
|
-
|
|
18
|
-
console.error(chalk.red('Your session has expired.') +
|
|
19
|
-
' Run ' +
|
|
20
|
-
chalk.cyan('agent-cards login') +
|
|
21
|
-
' to sign in again.');
|
|
22
|
-
process.exit(1);
|
|
23
|
-
}
|
|
9
|
+
return !!(payload.exp && payload.exp * 1000 < Date.now());
|
|
24
10
|
}
|
|
25
11
|
catch {
|
|
26
|
-
|
|
12
|
+
return false;
|
|
27
13
|
}
|
|
28
|
-
|
|
14
|
+
}
|
|
15
|
+
export async function setupMcp() {
|
|
16
|
+
// Check that claude CLI is installed first (before signup)
|
|
29
17
|
try {
|
|
30
18
|
execSync('claude --version', { stdio: 'ignore' });
|
|
31
19
|
}
|
|
@@ -35,14 +23,35 @@ export async function setupMcp() {
|
|
|
35
23
|
chalk.cyan('npm install -g @anthropic-ai/claude-code'));
|
|
36
24
|
process.exit(1);
|
|
37
25
|
}
|
|
26
|
+
let jwt = getJwt();
|
|
27
|
+
if (!jwt || isJwtExpired(jwt)) {
|
|
28
|
+
if (!jwt) {
|
|
29
|
+
console.log(chalk.yellow('Not logged in.') + ' Let\'s get you signed up first.\n');
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
console.log(chalk.yellow('Your session has expired.') + ' Let\'s sign you in again.\n');
|
|
33
|
+
}
|
|
34
|
+
await signup();
|
|
35
|
+
jwt = getJwt();
|
|
36
|
+
if (!jwt) {
|
|
37
|
+
console.error(chalk.red('Signup failed. Please try again.'));
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
console.log(); // blank line before MCP setup
|
|
41
|
+
}
|
|
38
42
|
const mcpUrl = 'https://mcp.agentcard.sh/mcp';
|
|
39
|
-
const spinner = ora('Configuring
|
|
43
|
+
const spinner = ora('Configuring AgentCard MCP server in Claude Code…').start();
|
|
40
44
|
try {
|
|
45
|
+
// Remove existing entry first (ignore errors if it doesn't exist)
|
|
46
|
+
try {
|
|
47
|
+
execSync('claude mcp remove --scope user agent-cards', { stdio: 'ignore' });
|
|
48
|
+
}
|
|
49
|
+
catch { }
|
|
41
50
|
execSync(`claude mcp add --transport http --scope user agent-cards ${mcpUrl} --header "Authorization:Bearer ${jwt}"`, { stdio: 'ignore' });
|
|
42
51
|
spinner.succeed('MCP server configured!');
|
|
43
52
|
console.log(chalk.dim(' Server: ') + chalk.cyan(mcpUrl) + '\n' +
|
|
44
53
|
chalk.dim(' Scope: ') + 'user (available in all projects)' + '\n\n' +
|
|
45
|
-
chalk.dim('Restart Claude Code to start using
|
|
54
|
+
chalk.dim('Restart Claude Code to start using AgentCard tools.'));
|
|
46
55
|
}
|
|
47
56
|
catch (err) {
|
|
48
57
|
spinner.fail('Failed to configure MCP server.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../../src/commands/setup-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup-mcp.js","sourceRoot":"","sources":["../../../src/commands/setup-mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../../src/commands/signup.ts"],"names":[],"mappings":"AAiBA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../../src/commands/signup.ts"],"names":[],"mappings":"AAiBA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB5C"}
|
|
@@ -27,11 +27,14 @@ export async function signup() {
|
|
|
27
27
|
},
|
|
28
28
|
]);
|
|
29
29
|
if (!logoutFirst) {
|
|
30
|
-
console.log(chalk.dim('
|
|
30
|
+
console.log(chalk.dim('Login cancelled.'));
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
33
33
|
clearAuth();
|
|
34
34
|
}
|
|
35
|
+
await loginWithEmail();
|
|
36
|
+
}
|
|
37
|
+
async function loginWithEmail() {
|
|
35
38
|
const { email } = await inquirer.prompt([
|
|
36
39
|
{
|
|
37
40
|
type: 'input',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signup.js","sourceRoot":"","sources":["../../../src/commands/signup.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,KAAK,UAAU,mBAAmB;IAChC,IAAI,CAAC,MAAM,EAAE;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAqB,UAAU,CAAC,CAAC;QACtD,OAAO,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,YAAY,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACjD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YAC5C;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,gCAAgC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB;gBACnF,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"signup.js","sourceRoot":"","sources":["../../../src/commands/signup.ts"],"names":[],"mappings":"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"}
|
package/dist/src/lib/api.d.ts
CHANGED
|
@@ -2,7 +2,14 @@ type FetchOptions = {
|
|
|
2
2
|
method?: string;
|
|
3
3
|
body?: unknown;
|
|
4
4
|
magicToken?: string;
|
|
5
|
+
headers?: Record<string, string>;
|
|
5
6
|
};
|
|
7
|
+
/** Error thrown for non-OK API responses. Carries the parsed response body and HTTP status. */
|
|
8
|
+
export declare class ApiError extends Error {
|
|
9
|
+
status: number;
|
|
10
|
+
body: Record<string, unknown>;
|
|
11
|
+
constructor(message: string, status: number, body: Record<string, unknown>);
|
|
12
|
+
}
|
|
6
13
|
export declare function api<T>(path: string, opts?: FetchOptions): Promise<T & {
|
|
7
14
|
_status?: number;
|
|
8
15
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/lib/api.ts"],"names":[],"mappings":"AAEA,KAAK,YAAY,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/lib/api.ts"],"names":[],"mappings":"AAEA,KAAK,YAAY,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,+FAA+F;AAC/F,qBAAa,QAAS,SAAQ,KAAK;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAM3E;AAED,wBAAsB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA8CrG"}
|
package/dist/src/lib/api.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import { getApiUrl, getJwt } from './config.js';
|
|
2
|
+
/** Error thrown for non-OK API responses. Carries the parsed response body and HTTP status. */
|
|
3
|
+
export class ApiError extends Error {
|
|
4
|
+
status;
|
|
5
|
+
body;
|
|
6
|
+
constructor(message, status, body) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = 'ApiError';
|
|
9
|
+
this.status = status;
|
|
10
|
+
this.body = body;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
2
13
|
export async function api(path, opts = {}) {
|
|
3
14
|
const url = `${getApiUrl()}${path}`;
|
|
4
15
|
const jwt = getJwt();
|
|
@@ -9,6 +20,8 @@ export async function api(path, opts = {}) {
|
|
|
9
20
|
headers['Authorization'] = `Bearer ${jwt}`;
|
|
10
21
|
if (opts.magicToken)
|
|
11
22
|
headers['X-Magic-Token'] = opts.magicToken;
|
|
23
|
+
if (opts.headers)
|
|
24
|
+
Object.assign(headers, opts.headers);
|
|
12
25
|
let res;
|
|
13
26
|
try {
|
|
14
27
|
res = await fetch(url, {
|
|
@@ -29,7 +42,7 @@ export async function api(path, opts = {}) {
|
|
|
29
42
|
if (res.status === 401) {
|
|
30
43
|
throw new Error('Not logged in or session expired. Run: agent-cards login');
|
|
31
44
|
}
|
|
32
|
-
throw new
|
|
45
|
+
throw new ApiError(data.error ?? data.message ?? `HTTP ${res.status}`, res.status, data);
|
|
33
46
|
}
|
|
34
47
|
data._status = res.status;
|
|
35
48
|
return data;
|
package/dist/src/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAShD,+FAA+F;AAC/F,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,MAAM,CAAS;IACf,IAAI,CAA0B;IAE9B,YAAY,OAAe,EAAE,MAAc,EAAE,IAA6B;QACxE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAI,IAAY,EAAE,OAAqB,EAAE;IAChE,MAAM,GAAG,GAAG,GAAG,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IAEF,IAAI,GAAG;QAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,GAAG,EAAE,CAAC;IACpD,IAAI,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;IAChE,IAAI,IAAI,CAAC,OAAO;QAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAEvD,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;YAC5B,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SACxD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9F,MAAM,IAAI,KAAK,CACb,0BAA0B,GAAG,mFAAmF,CACjH,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAE9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,QAAQ,CACf,IAAY,CAAC,KAAK,IAAK,IAAY,CAAC,OAAO,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EACpE,GAAG,CAAC,MAAM,EACV,IAA+B,CAChC,CAAC;IACJ,CAAC;IAEA,IAAY,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;IACnC,OAAO,IAAgC,CAAC;AAC1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,QAAkC,CAAC;AAG1D,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,QAAkC,CAAC;AAG1D,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,UAAU,IAAI,MAAM,CAOnC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAIvD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAGlC;AAED,wBAAgB,MAAM,IAAI,MAAM,GAAG,SAAS,CAE3C;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,IAAI,IAAI,CAOhC"}
|
package/dist/src/lib/config.js
CHANGED
|
@@ -30,6 +30,7 @@ export function clearAuth() {
|
|
|
30
30
|
const cfg = readConfig();
|
|
31
31
|
delete cfg.email;
|
|
32
32
|
delete cfg.jwt;
|
|
33
|
+
delete cfg.apiKey; // clean up legacy field
|
|
33
34
|
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
34
35
|
writeFileSync(CONFIG_FILE, JSON.stringify(cfg, null, 2), { mode: 0o600 });
|
|
35
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAQpD,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAqB;IAC/C,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;IAC9B,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,OAAO,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,gDAAgD,CAAC;AAC3G,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,OAAO,UAAU,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AACzD,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,OAAO,GAAG,CAAC,KAAK,CAAC;IACjB,OAAO,GAAG,CAAC,GAAG,CAAC;IACf,OAAQ,GAAW,CAAC,MAAM,CAAC,CAAC,wBAAwB;IACpD,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5E,CAAC"}
|