agent-cards 0.3.0 → 0.4.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.
@@ -9,6 +9,8 @@ import { listCards } from '../src/commands/cards/list.js';
9
9
  import { cardDetails } from '../src/commands/cards/details.js';
10
10
  import { balance } from '../src/commands/balance.js';
11
11
  import { setupMcp } from '../src/commands/setup-mcp.js';
12
+ import { support } from '../src/commands/support.js';
13
+ import { showSettings, settingsNotifications, settingsAuthorization } from '../src/commands/settings.js';
12
14
  const program = new Command();
13
15
  program
14
16
  .name('agent-cards')
@@ -124,5 +126,46 @@ program
124
126
  process.exit(1);
125
127
  }
126
128
  });
129
+ program
130
+ .command('support')
131
+ .description('Start a live support conversation')
132
+ .option('--resume <id>', 'Resume an existing conversation')
133
+ .action(async (opts) => {
134
+ try {
135
+ await support(opts.resume);
136
+ }
137
+ catch (err) {
138
+ console.error(`Error: ${err.message}`);
139
+ process.exit(1);
140
+ }
141
+ });
142
+ const settingsCmd = program.command('settings').description('Manage notification and authorization preferences');
143
+ settingsCmd.action(async () => {
144
+ try {
145
+ await showSettings();
146
+ }
147
+ catch (err) {
148
+ console.error(`Error: ${err.message}`);
149
+ process.exit(1);
150
+ }
151
+ });
152
+ settingsCmd.command('notifications').description('Configure email notifications').action(async () => {
153
+ try {
154
+ await settingsNotifications();
155
+ }
156
+ catch (err) {
157
+ console.error(`Error: ${err.message}`);
158
+ process.exit(1);
159
+ }
160
+ });
161
+ settingsCmd.command('authorization').description('Configure authorization requirements').action(async () => {
162
+ try {
163
+ await settingsAuthorization();
164
+ }
165
+ catch (err) {
166
+ console.error(`Error: ${err.message}`);
167
+ process.exit(1);
168
+ }
169
+ });
127
170
  program.parse();
128
171
  //# sourceMappingURL=agent-cards.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-cards.js","sourceRoot":"","sources":["../../bin/agent-cards.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-cards.js","sourceRoot":"","sources":["../../bin/agent-cards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function showSettings(): Promise<void>;
2
+ export declare function settingsNotifications(): Promise<void>;
3
+ export declare function settingsAuthorization(): Promise<void>;
4
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/commands/settings.ts"],"names":[],"mappings":"AAsBA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAclD;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoC3D;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CA2B3D"}
@@ -0,0 +1,79 @@
1
+ import chalk from 'chalk';
2
+ import inquirer from 'inquirer';
3
+ import { api } from '../lib/api.js';
4
+ function flag(value) {
5
+ return value ? chalk.green('ON') : chalk.dim('OFF');
6
+ }
7
+ export async function showSettings() {
8
+ const s = await api('/settings');
9
+ console.log();
10
+ console.log(chalk.bold('Notifications'));
11
+ console.log(` Card details accessed ${flag(s.notifications.card_details_accessed)}`);
12
+ console.log(` Transaction ${flag(s.notifications.transaction)}`);
13
+ console.log(` Card closed ${flag(s.notifications.card_closed)}`);
14
+ console.log(` Low balance ${flag(s.notifications.low_balance)} ${chalk.dim(`(threshold: $${(s.notifications.low_balance_threshold_cents / 100).toFixed(2)})`)}`);
15
+ console.log();
16
+ console.log(chalk.bold('Authorization'));
17
+ console.log(` Card details ${flag(s.authorization.card_details)}`);
18
+ console.log(` Transaction ${flag(s.authorization.transaction)}`);
19
+ console.log();
20
+ }
21
+ export async function settingsNotifications() {
22
+ const current = await api('/settings');
23
+ const answers = await inquirer.prompt([
24
+ {
25
+ type: 'confirm',
26
+ name: 'card_details_accessed',
27
+ message: 'Notify when card details are accessed?',
28
+ default: current.notifications.card_details_accessed,
29
+ },
30
+ {
31
+ type: 'confirm',
32
+ name: 'transaction',
33
+ message: 'Notify on transactions?',
34
+ default: current.notifications.transaction,
35
+ },
36
+ {
37
+ type: 'confirm',
38
+ name: 'card_closed',
39
+ message: 'Notify when a card is closed?',
40
+ default: current.notifications.card_closed,
41
+ },
42
+ {
43
+ type: 'confirm',
44
+ name: 'low_balance',
45
+ message: 'Notify on low balance?',
46
+ default: current.notifications.low_balance,
47
+ },
48
+ ]);
49
+ await api('/settings', {
50
+ method: 'PATCH',
51
+ body: { notifications: answers },
52
+ });
53
+ console.log(chalk.green('Notification preferences saved.'));
54
+ }
55
+ export async function settingsAuthorization() {
56
+ const current = await api('/settings');
57
+ console.log(chalk.yellow('Warning: Enabling authorization will require email approval before agents can perform these actions.'));
58
+ 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
+ }
79
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/commands/settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function support(resume?: string): Promise<void>;
2
+ //# sourceMappingURL=support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../../src/commands/support.ts"],"names":[],"mappings":"AAgCA,wBAAsB,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2K5D"}
@@ -0,0 +1,188 @@
1
+ import chalk from 'chalk';
2
+ import readline from 'readline';
3
+ import ora from 'ora';
4
+ import figlet from 'figlet';
5
+ import { api } from '../lib/api.js';
6
+ import { getApiUrl, getJwt } from '../lib/config.js';
7
+ import { connectSse } from '../lib/sse.js';
8
+ function ts(iso) {
9
+ return new Date(iso).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
10
+ }
11
+ function printMsg(role, body, time) {
12
+ const t = time ? chalk.dim(` ${time}`) : '';
13
+ const label = role === 'visitor'
14
+ ? chalk.cyan('you')
15
+ : chalk.green('support');
16
+ console.log(`${label}${t} ${body}`);
17
+ }
18
+ export async function support(resume) {
19
+ const jwt = getJwt();
20
+ if (!jwt) {
21
+ console.log();
22
+ console.log(chalk.dim('you need to be logged in to chat with the team.'));
23
+ console.log(chalk.dim(`run ${chalk.white('agent-cards login')} to get started.`));
24
+ console.log();
25
+ process.exit(1);
26
+ }
27
+ let conversationId;
28
+ let typingSpinner = null;
29
+ if (resume) {
30
+ conversationId = resume;
31
+ console.log(chalk.dim(`resuming ${conversationId}\n`));
32
+ const messages = await api(`/chat/conversations/${conversationId}/messages`);
33
+ for (const msg of messages) {
34
+ printMsg(msg.role, msg.body, ts(msg.createdAt));
35
+ }
36
+ console.log();
37
+ }
38
+ else {
39
+ const convo = await api('/chat/conversations', { method: 'POST' });
40
+ conversationId = convo.id;
41
+ // Animated ASCII banner
42
+ const banner = figlet.textSync('agentcard', { font: 'Small' });
43
+ const lines = banner.split('\n');
44
+ const totalChars = Math.max(...lines.map(l => l.length));
45
+ const frames = totalChars + 6;
46
+ const bannerHeight = lines.length;
47
+ console.log(); // spacing
48
+ // print placeholder lines
49
+ for (const line of lines)
50
+ console.log(chalk.dim(line));
51
+ // animate a green sweep across the banner
52
+ for (let frame = 0; frame < frames; frame++) {
53
+ // move cursor up to the banner start
54
+ process.stdout.write(`\x1B[${bannerHeight}A`);
55
+ for (const line of lines) {
56
+ let out = '';
57
+ for (let i = 0; i < line.length; i++) {
58
+ if (i >= frame - 3 && i <= frame) {
59
+ out += chalk.green(line[i]);
60
+ }
61
+ else if (i < frame - 3) {
62
+ out += chalk.greenBright(line[i]);
63
+ }
64
+ else {
65
+ out += chalk.dim(line[i]);
66
+ }
67
+ }
68
+ process.stdout.write('\x1B[2K' + out + '\n');
69
+ }
70
+ await new Promise(r => setTimeout(r, 12));
71
+ }
72
+ // final state: all green
73
+ process.stdout.write(`\x1B[${bannerHeight}A`);
74
+ for (const line of lines) {
75
+ process.stdout.write('\x1B[2K' + chalk.green(line) + '\n');
76
+ }
77
+ console.log(chalk.dim('we typically reply within a few hours. ctrl+c to exit.\n'));
78
+ }
79
+ // Show waiting spinner for new conversations, wait for Enter
80
+ if (!resume) {
81
+ const spinner = ora({
82
+ text: chalk.dim('press enter to chat with the team'),
83
+ color: 'green',
84
+ discardStdin: false,
85
+ }).start();
86
+ await new Promise((resolve) => {
87
+ process.stdin.setRawMode(true);
88
+ process.stdin.resume();
89
+ const onData = (key) => {
90
+ // Enter = 0x0d, Ctrl+C = 0x03
91
+ if (key[0] === 0x03) {
92
+ spinner.stop();
93
+ process.exit(0);
94
+ }
95
+ if (key[0] === 0x0d) {
96
+ process.stdin.removeListener('data', onData);
97
+ spinner.stop();
98
+ process.stdin.setRawMode(false);
99
+ process.stdin.pause();
100
+ resolve();
101
+ }
102
+ };
103
+ process.stdin.on('data', onData);
104
+ });
105
+ }
106
+ // SSE
107
+ const abortController = new AbortController();
108
+ const rl = readline.createInterface({
109
+ input: process.stdin,
110
+ output: process.stdout,
111
+ prompt: chalk.cyan('> '),
112
+ });
113
+ connectSse(`${getApiUrl()}/chat/conversations/${conversationId}/stream`, jwt, (event) => {
114
+ if (event.event === 'typing') {
115
+ if (!typingSpinner) {
116
+ // Clear prompt line, show spinner, prompt will restore after
117
+ readline.clearLine(process.stdout, 0);
118
+ readline.cursorTo(process.stdout, 0);
119
+ typingSpinner = ora({
120
+ text: chalk.dim('support is typing'),
121
+ color: 'green',
122
+ discardStdin: false,
123
+ }).start();
124
+ }
125
+ return;
126
+ }
127
+ if (event.event === 'message' && event.data) {
128
+ try {
129
+ const msg = JSON.parse(event.data);
130
+ if (msg.role === 'agent') {
131
+ if (typingSpinner) {
132
+ typingSpinner.stop();
133
+ typingSpinner = null;
134
+ }
135
+ readline.clearLine(process.stdout, 0);
136
+ readline.cursorTo(process.stdout, 0);
137
+ printMsg('agent', msg.body, ts(msg.createdAt));
138
+ rl.prompt();
139
+ }
140
+ }
141
+ catch (_) { }
142
+ }
143
+ else if (event.event === 'closed') {
144
+ if (typingSpinner) {
145
+ typingSpinner.stop();
146
+ typingSpinner = null;
147
+ }
148
+ console.log(chalk.dim('\nclosed by support.'));
149
+ cleanup();
150
+ }
151
+ }, abortController.signal).catch(() => { });
152
+ rl.prompt();
153
+ rl.on('line', async (line) => {
154
+ const text = line.trim();
155
+ if (!text) {
156
+ rl.prompt();
157
+ return;
158
+ }
159
+ // rewrite the input line as a formatted message
160
+ readline.moveCursor(process.stdout, 0, -1);
161
+ readline.clearLine(process.stdout, 0);
162
+ readline.cursorTo(process.stdout, 0);
163
+ printMsg('visitor', text, ts(new Date().toISOString()));
164
+ try {
165
+ await api(`/chat/conversations/${conversationId}/messages`, {
166
+ method: 'POST',
167
+ body: { body: text },
168
+ });
169
+ }
170
+ catch (err) {
171
+ console.error(chalk.red(`send failed: ${err.message}`));
172
+ }
173
+ rl.prompt();
174
+ });
175
+ function cleanup() {
176
+ if (typingSpinner)
177
+ typingSpinner.stop();
178
+ abortController.abort();
179
+ rl.close();
180
+ process.exit(0);
181
+ }
182
+ rl.on('close', cleanup);
183
+ process.on('SIGINT', () => {
184
+ console.log(chalk.dim(`\n\nresume with: agent-cards support --resume ${conversationId}`));
185
+ cleanup();
186
+ });
187
+ }
188
+ //# sourceMappingURL=support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support.js","sourceRoot":"","sources":["../../../src/commands/support.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ interface Config {
5
5
  apiUrl?: string;
6
6
  }
7
7
  export declare function readConfig(): Config;
8
- export declare function writeConfig(data: Config): void;
8
+ export declare function writeConfig(data: Partial<Config>): void;
9
9
  export declare function getApiUrl(): string;
10
10
  export declare function getJwt(): string | undefined;
11
11
  /** Remove stored auth (email + jwt) so user can log in as someone else. */
@@ -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;CAEjB;AAED,wBAAgB,UAAU,IAAI,MAAM,CAOnC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAG9C;AAED,wBAAgB,SAAS,IAAI,MAAM,CAGlC;AAED,wBAAgB,MAAM,IAAI,MAAM,GAAG,SAAS,CAE3C;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,IAAI,IAAI,CAIhC"}
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;CAEjB;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,CAMhC"}
@@ -15,7 +15,8 @@ export function readConfig() {
15
15
  }
16
16
  export function writeConfig(data) {
17
17
  mkdirSync(CONFIG_DIR, { recursive: true });
18
- writeFileSync(CONFIG_FILE, JSON.stringify(data, null, 2), { mode: 0o600 });
18
+ const existing = readConfig();
19
+ writeFileSync(CONFIG_FILE, JSON.stringify({ ...existing, ...data }, null, 2), { mode: 0o600 });
19
20
  }
20
21
  export function getApiUrl() {
21
22
  const cfg = readConfig();
@@ -27,7 +28,9 @@ export function getJwt() {
27
28
  /** Remove stored auth (email + jwt) so user can log in as someone else. */
28
29
  export function clearAuth() {
29
30
  const cfg = readConfig();
30
- const { email: _e, jwt: _j, ...rest } = cfg;
31
- writeConfig(rest);
31
+ delete cfg.email;
32
+ delete cfg.jwt;
33
+ mkdirSync(CONFIG_DIR, { recursive: true });
34
+ writeFileSync(CONFIG_FILE, JSON.stringify(cfg, null, 2), { mode: 0o600 });
32
35
  }
33
36
  //# sourceMappingURL=config.js.map
@@ -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;AASpD,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,IAAY;IACtC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7E,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,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;IAC5C,WAAW,CAAC,IAAI,CAAC,CAAC;AACpB,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;AASpD,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,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"}
@@ -0,0 +1,7 @@
1
+ export interface SseEvent {
2
+ event?: string;
3
+ data?: string;
4
+ }
5
+ export type SseHandler = (event: SseEvent) => void;
6
+ export declare function connectSse(url: string, jwt: string, onEvent: SseHandler, signal?: AbortSignal): Promise<void>;
7
+ //# sourceMappingURL=sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../../src/lib/sse.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AAEnD,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,UAAU,EACnB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAwCf"}
@@ -0,0 +1,43 @@
1
+ export async function connectSse(url, jwt, onEvent, signal) {
2
+ const res = await fetch(url, {
3
+ headers: { Authorization: `Bearer ${jwt}` },
4
+ signal,
5
+ });
6
+ if (!res.ok)
7
+ throw new Error(`SSE connect failed: ${res.status}`);
8
+ if (!res.body)
9
+ throw new Error('No response body');
10
+ const reader = res.body.getReader();
11
+ const decoder = new TextDecoder();
12
+ let buffer = '';
13
+ let currentEvent;
14
+ let currentData = [];
15
+ while (true) {
16
+ const { done, value } = await reader.read();
17
+ if (done)
18
+ break;
19
+ buffer += decoder.decode(value, { stream: true });
20
+ const lines = buffer.split('\n');
21
+ buffer = lines.pop(); // keep incomplete line in buffer
22
+ for (const line of lines) {
23
+ if (line.startsWith('event: ')) {
24
+ currentEvent = line.slice(7).trim();
25
+ }
26
+ else if (line.startsWith('data: ')) {
27
+ currentData.push(line.slice(6));
28
+ }
29
+ else if (line.startsWith(':')) {
30
+ // comment / heartbeat — ignore
31
+ }
32
+ else if (line === '') {
33
+ // empty line = end of event
34
+ if (currentData.length > 0 || currentEvent) {
35
+ onEvent({ event: currentEvent, data: currentData.join('\n') });
36
+ }
37
+ currentEvent = undefined;
38
+ currentData = [];
39
+ }
40
+ }
41
+ }
42
+ }
43
+ //# sourceMappingURL=sse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../../src/lib/sse.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,GAAW,EACX,OAAmB,EACnB,MAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE;QAC3C,MAAM;KACP,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,YAAgC,CAAC;IACrC,IAAI,WAAW,GAAa,EAAE,CAAC;IAE/B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI;YAAE,MAAM;QAEhB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC,CAAC,iCAAiC;QAExD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/B,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,+BAA+B;YACjC,CAAC;iBAAM,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;gBACvB,4BAA4B;gBAC5B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,EAAE,CAAC;oBAC3C,OAAO,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjE,CAAC;gBACD,YAAY,GAAG,SAAS,CAAC;gBACzB,WAAW,GAAG,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agent-cards",
3
- "version": "0.3.0",
4
- "description": "Prepaid virtual Visa cards for AI agents and developers",
3
+ "version": "0.4.1",
4
+ "description": "CLI for managing prepaid virtual Visa cards for AI agents",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "agent-cards": "dist/bin/agent-cards.js"
@@ -21,11 +21,13 @@
21
21
  "chalk": "^5.3.0",
22
22
  "cli-table3": "^0.6.3",
23
23
  "commander": "^12.0.0",
24
+ "figlet": "^1.10.0",
24
25
  "inquirer": "^9.2.15",
25
26
  "open": "^10.1.0",
26
- "ora": "^8.0.1"
27
+ "ora": "^8.2.0"
27
28
  },
28
29
  "devDependencies": {
30
+ "@types/figlet": "^1.7.0",
29
31
  "@types/inquirer": "^9.0.7",
30
32
  "@types/node": "^22.0.0",
31
33
  "tsx": "^4.7.1",
@@ -1,15 +0,0 @@
1
- export interface DemoCard {
2
- id: string;
3
- last4: string;
4
- expiry: string;
5
- balanceCents: number;
6
- spendLimitCents: number;
7
- status: string;
8
- createdAt: string;
9
- pan: string;
10
- cvv: string;
11
- }
12
- export declare function readDemoCards(): DemoCard[];
13
- export declare function appendDemoCard(card: DemoCard): void;
14
- export declare function findDemoCard(id: string): DemoCard | undefined;
15
- //# sourceMappingURL=demo-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo-store.d.ts","sourceRoot":"","sources":["../../../src/lib/demo-store.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAYD,wBAAgB,aAAa,IAAI,QAAQ,EAAE,CAE1C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAKnD;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAE7D"}
@@ -1,28 +0,0 @@
1
- import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
2
- import { join } from 'path';
3
- import { CONFIG_DIR } from './config.js';
4
- const DEMO_CARDS_FILE = join(CONFIG_DIR, 'demo-cards.json');
5
- function readRaw() {
6
- if (!existsSync(DEMO_CARDS_FILE))
7
- return [];
8
- try {
9
- const data = JSON.parse(readFileSync(DEMO_CARDS_FILE, 'utf8'));
10
- return Array.isArray(data) ? data : [];
11
- }
12
- catch {
13
- return [];
14
- }
15
- }
16
- export function readDemoCards() {
17
- return readRaw();
18
- }
19
- export function appendDemoCard(card) {
20
- const cards = readRaw();
21
- cards.push(card);
22
- mkdirSync(CONFIG_DIR, { recursive: true });
23
- writeFileSync(DEMO_CARDS_FILE, JSON.stringify(cards, null, 2), { mode: 0o600 });
24
- }
25
- export function findDemoCard(id) {
26
- return readRaw().find((c) => c.id === id);
27
- }
28
- //# sourceMappingURL=demo-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo-store.js","sourceRoot":"","sources":["../../../src/lib/demo-store.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,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AAc5D,SAAS,OAAO;IACd,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC;IACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,OAAO,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC"}