cards402 0.4.1 → 0.4.3
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/README.md +16 -0
- package/dist/commands/onboard.d.ts +11 -0
- package/dist/commands/onboard.d.ts.map +1 -1
- package/dist/commands/onboard.js +40 -2
- package/dist/commands/onboard.js.map +1 -1
- package/dist/commands/onboard.test.d.ts +2 -0
- package/dist/commands/onboard.test.d.ts.map +1 -0
- package/dist/commands/onboard.test.js +48 -0
- package/dist/commands/onboard.test.js.map +1 -0
- package/dist/commands/purchase.d.ts.map +1 -1
- package/dist/commands/purchase.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,6 +12,22 @@ npm install cards402
|
|
|
12
12
|
|
|
13
13
|
Requires Node.js 18 or newer (the SDK uses native `fetch`, `ReadableStream`, and `WebCrypto`). Supported platforms via the bundled `@ctx.com/stellar-ows-core` native wallet bindings: macOS (arm64 + x64), Linux (arm64 + x64). Windows is not currently supported.
|
|
14
14
|
|
|
15
|
+
### A note on `npm audit`
|
|
16
|
+
|
|
17
|
+
You'll see 3 critical advisories on `axios <= 1.14.0` after installing. They come from `@stellar/stellar-sdk`, which hard-pins an older axios version that we can't override from inside this package. The SDK's own HTTP calls only talk to hardcoded Stellar RPC / Horizon endpoints, so neither advisory (NO_PROXY SSRF, header-injection metadata exfil) is reachable through cards402 code — it's noise for our use, but noise you should still silence at your own project root.
|
|
18
|
+
|
|
19
|
+
Fix in your own `package.json`:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"overrides": {
|
|
24
|
+
"axios": "^1.15.0"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
then `rm -rf node_modules package-lock.json && npm install`. `npm audit` returns clean. Upstream fix tracked at [stellar/js-stellar-sdk#1381](https://github.com/stellar/js-stellar-sdk/pull/1381); this note will be removed as soon as it merges and a new stellar-sdk ships.
|
|
30
|
+
|
|
15
31
|
## Quick start
|
|
16
32
|
|
|
17
33
|
```typescript
|
|
@@ -1,2 +1,13 @@
|
|
|
1
|
+
export { deriveDefaultWalletName as _deriveDefaultWalletName };
|
|
2
|
+
/**
|
|
3
|
+
* Derive a unique, deterministic wallet name from the agent label and
|
|
4
|
+
* claim code. Two different claims always produce different names, so
|
|
5
|
+
* running `cards402 onboard` multiple times on the same machine gives
|
|
6
|
+
* each agent its own OWS wallet file instead of silently reusing the
|
|
7
|
+
* previous agent's private keys. The claim-code suffix is what makes
|
|
8
|
+
* it unique; the label is just there to make the vault file readable
|
|
9
|
+
* on disk.
|
|
10
|
+
*/
|
|
11
|
+
declare function deriveDefaultWalletName(claim: string, label: string | null): string;
|
|
1
12
|
export declare function onboardCommand(argv: string[]): Promise<number>;
|
|
2
13
|
//# sourceMappingURL=onboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,uBAAuB,IAAI,wBAAwB,EAAE,CAAC;AAgD/D;;;;;;;;GAQG;AACH,iBAAS,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAgB5E;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA2HpE"}
|
package/dist/commands/onboard.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
// "Awaiting deposit" in their dashboard immediately.
|
|
13
13
|
// 5. Print the Stellar address + next steps.
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports._deriveDefaultWalletName = deriveDefaultWalletName;
|
|
15
16
|
exports.onboardCommand = onboardCommand;
|
|
16
17
|
const config_1 = require("../config");
|
|
17
18
|
const ows_1 = require("../ows");
|
|
@@ -53,11 +54,39 @@ the api key into any env var yourself.
|
|
|
53
54
|
|
|
54
55
|
Options:
|
|
55
56
|
--claim <code> One-time claim code from the dashboard. Required.
|
|
56
|
-
--wallet-name <name> Name for the OWS wallet.
|
|
57
|
+
--wallet-name <name> Name for the OWS wallet. If omitted, a unique
|
|
58
|
+
name is derived from the agent label + the
|
|
59
|
+
claim code so two separate agents on the same
|
|
60
|
+
machine can't accidentally share a wallet.
|
|
57
61
|
--api-base <url> Override the default https://api.cards402.com/v1
|
|
58
62
|
-h, --help Show this message
|
|
59
63
|
`);
|
|
60
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Derive a unique, deterministic wallet name from the agent label and
|
|
67
|
+
* claim code. Two different claims always produce different names, so
|
|
68
|
+
* running `cards402 onboard` multiple times on the same machine gives
|
|
69
|
+
* each agent its own OWS wallet file instead of silently reusing the
|
|
70
|
+
* previous agent's private keys. The claim-code suffix is what makes
|
|
71
|
+
* it unique; the label is just there to make the vault file readable
|
|
72
|
+
* on disk.
|
|
73
|
+
*/
|
|
74
|
+
function deriveDefaultWalletName(claim, label) {
|
|
75
|
+
// Strip the `c402_` prefix (if present), take the first 8 hex chars
|
|
76
|
+
// for a short-but-unique suffix. The claim code is cryptographically
|
|
77
|
+
// random — 8 hex chars = 32 bits, collision probability negligible
|
|
78
|
+
// at any realistic fleet size.
|
|
79
|
+
const raw = claim.replace(/^c402_/i, '');
|
|
80
|
+
const suffix = raw.slice(0, 8).toLowerCase();
|
|
81
|
+
// Slugify label: lowercase, replace non-alnum with -, collapse
|
|
82
|
+
// repeats, trim hyphens, cap length. Falls back to `agent` if empty.
|
|
83
|
+
const slug = (label ?? 'agent')
|
|
84
|
+
.toLowerCase()
|
|
85
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
86
|
+
.replace(/^-+|-+$/g, '')
|
|
87
|
+
.slice(0, 24) || 'agent';
|
|
88
|
+
return `cards402-${slug}-${suffix}`;
|
|
89
|
+
}
|
|
61
90
|
async function onboardCommand(argv) {
|
|
62
91
|
const args = parseArgs(argv);
|
|
63
92
|
if (args.help) {
|
|
@@ -70,7 +99,10 @@ async function onboardCommand(argv) {
|
|
|
70
99
|
return 2;
|
|
71
100
|
}
|
|
72
101
|
const apiBase = args.apiBase || process.env.CARDS402_BASE_URL || 'https://api.cards402.com/v1';
|
|
73
|
-
|
|
102
|
+
// We can't derive the default wallet name until AFTER the claim is
|
|
103
|
+
// redeemed (we need the label). So we start with the explicit
|
|
104
|
+
// --wallet-name override, and if it wasn't passed we compute a
|
|
105
|
+
// unique default after step 1.
|
|
74
106
|
// Step 1 — trade claim code for api key.
|
|
75
107
|
process.stdout.write('→ Claiming agent credentials…\n');
|
|
76
108
|
let claimResponse;
|
|
@@ -92,6 +124,12 @@ async function onboardCommand(argv) {
|
|
|
92
124
|
process.stderr.write(`error: network failure during claim: ${String(err)}\n`);
|
|
93
125
|
return 1;
|
|
94
126
|
}
|
|
127
|
+
// Resolve wallet name: explicit override wins, otherwise derive from
|
|
128
|
+
// the agent label + the claim code so every onboarding run produces
|
|
129
|
+
// a distinct wallet. This closes the "second agent inherited the
|
|
130
|
+
// first agent's wallet" bug where both claims used the static
|
|
131
|
+
// default 'cards402-agent' name.
|
|
132
|
+
const walletName = args.walletName || deriveDefaultWalletName(args.claim, claimResponse.label);
|
|
95
133
|
// Step 2 — persist config so the SDK finds it on next run.
|
|
96
134
|
const { path: configPath } = (0, config_1.saveCards402Config)({
|
|
97
135
|
api_key: claimResponse.api_key,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,EAAE;AACF,4DAA4D;AAC5D,uEAAuE;AACvE,sDAAsD;AACtD,qEAAqE;AACrE,0DAA0D;AAC1D,oEAAoE;AACpE,2CAA2C;AAC3C,mEAAmE;AACnE,wDAAwD;AACxD,6CAA6C;;
|
|
1
|
+
{"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboard.test.d.ts","sourceRoot":"","sources":["../../src/commands/onboard.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Unit tests for the onboard command's wallet-name derivation. The
|
|
3
|
+
// helper is the load-bearing piece that fixes the "second agent reuses
|
|
4
|
+
// the first agent's OWS wallet" bug — the test exists to keep that
|
|
5
|
+
// behaviour locked in across future edits.
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const vitest_1 = require("vitest");
|
|
8
|
+
const onboard_1 = require("./onboard");
|
|
9
|
+
(0, vitest_1.describe)('deriveDefaultWalletName', () => {
|
|
10
|
+
const claimA = 'c402_a1b2c3d4e5f607080910111213141516171819202122232425262728293031';
|
|
11
|
+
const claimB = 'c402_ff00112233445566778899aabbccddeeff00112233445566778899aabbccdd';
|
|
12
|
+
(0, vitest_1.it)('produces a name prefixed with cards402-', () => {
|
|
13
|
+
(0, vitest_1.expect)((0, onboard_1._deriveDefaultWalletName)(claimA, 'research-bot')).toMatch(/^cards402-/);
|
|
14
|
+
});
|
|
15
|
+
(0, vitest_1.it)('includes a slugified version of the label', () => {
|
|
16
|
+
(0, vitest_1.expect)((0, onboard_1._deriveDefaultWalletName)(claimA, 'Research Bot v2!')).toContain('research-bot-v2');
|
|
17
|
+
});
|
|
18
|
+
(0, vitest_1.it)('falls back to "agent" when the label is null', () => {
|
|
19
|
+
(0, vitest_1.expect)((0, onboard_1._deriveDefaultWalletName)(claimA, null)).toContain('agent');
|
|
20
|
+
});
|
|
21
|
+
(0, vitest_1.it)('falls back to "agent" when the label is empty', () => {
|
|
22
|
+
(0, vitest_1.expect)((0, onboard_1._deriveDefaultWalletName)(claimA, '')).toContain('agent');
|
|
23
|
+
});
|
|
24
|
+
(0, vitest_1.it)('produces different names for different claims — even with the same label', () => {
|
|
25
|
+
const a = (0, onboard_1._deriveDefaultWalletName)(claimA, 'research-bot');
|
|
26
|
+
const b = (0, onboard_1._deriveDefaultWalletName)(claimB, 'research-bot');
|
|
27
|
+
(0, vitest_1.expect)(a).not.toBe(b);
|
|
28
|
+
});
|
|
29
|
+
(0, vitest_1.it)('is deterministic — same inputs always yield the same name', () => {
|
|
30
|
+
(0, vitest_1.expect)((0, onboard_1._deriveDefaultWalletName)(claimA, 'research-bot')).toBe((0, onboard_1._deriveDefaultWalletName)(claimA, 'research-bot'));
|
|
31
|
+
});
|
|
32
|
+
(0, vitest_1.it)('accepts a claim without the c402_ prefix', () => {
|
|
33
|
+
const raw = (0, onboard_1._deriveDefaultWalletName)(claimA, 'x');
|
|
34
|
+
const noPrefix = (0, onboard_1._deriveDefaultWalletName)(claimA.replace(/^c402_/, ''), 'x');
|
|
35
|
+
(0, vitest_1.expect)(raw).toBe(noPrefix);
|
|
36
|
+
});
|
|
37
|
+
(0, vitest_1.it)('caps the label slug so a long label does not blow out the path', () => {
|
|
38
|
+
const long = 'a'.repeat(200);
|
|
39
|
+
const name = (0, onboard_1._deriveDefaultWalletName)(claimA, long);
|
|
40
|
+
// cards402- + slug (<=24) + - + 8-hex = ~42 chars max
|
|
41
|
+
(0, vitest_1.expect)(name.length).toBeLessThanOrEqual(48);
|
|
42
|
+
});
|
|
43
|
+
(0, vitest_1.it)('never contains characters unsafe for a filesystem vault path', () => {
|
|
44
|
+
const name = (0, onboard_1._deriveDefaultWalletName)(claimA, '../../evil/$(whoami)');
|
|
45
|
+
(0, vitest_1.expect)(name).toMatch(/^cards402-[a-z0-9-]+$/);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=onboard.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboard.test.js","sourceRoot":"","sources":["../../src/commands/onboard.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purchase.d.ts","sourceRoot":"","sources":["../../src/commands/purchase.ts"],"names":[],"mappings":"AAuHA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"purchase.d.ts","sourceRoot":"","sources":["../../src/commands/purchase.ts"],"names":[],"mappings":"AAuHA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6ErE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purchase.js","sourceRoot":"","sources":["../../src/commands/purchase.ts"],"names":[],"mappings":";AAAA,mEAAmE;AACnE,gEAAgE;AAChE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,iEAAiE;AACjE,oBAAoB;AACpB,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,+DAA+D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2G/D,
|
|
1
|
+
{"version":3,"file":"purchase.js","sourceRoot":"","sources":["../../src/commands/purchase.ts"],"names":[],"mappings":"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"}
|