cspr402 0.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +173 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +108 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/client.d.ts +207 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +400 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/commands/onboard.d.ts +4 -0
  12. package/dist/commands/onboard.d.ts.map +1 -0
  13. package/dist/commands/onboard.js +192 -0
  14. package/dist/commands/onboard.js.map +1 -0
  15. package/dist/commands/onboard.test.d.ts +2 -0
  16. package/dist/commands/onboard.test.d.ts.map +1 -0
  17. package/dist/commands/onboard.test.js +48 -0
  18. package/dist/commands/onboard.test.js.map +1 -0
  19. package/dist/commands/purchase.d.ts +2 -0
  20. package/dist/commands/purchase.d.ts.map +1 -0
  21. package/dist/commands/purchase.js +206 -0
  22. package/dist/commands/purchase.js.map +1 -0
  23. package/dist/commands/wallet.d.ts +2 -0
  24. package/dist/commands/wallet.d.ts.map +1 -0
  25. package/dist/commands/wallet.js +161 -0
  26. package/dist/commands/wallet.js.map +1 -0
  27. package/dist/config.d.ts +77 -0
  28. package/dist/config.d.ts.map +1 -0
  29. package/dist/config.js +329 -0
  30. package/dist/config.js.map +1 -0
  31. package/dist/errors.d.ts +101 -0
  32. package/dist/errors.d.ts.map +1 -0
  33. package/dist/errors.js +197 -0
  34. package/dist/errors.js.map +1 -0
  35. package/dist/index.d.ts +6 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +22 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/mcp.d.ts +2 -0
  40. package/dist/mcp.d.ts.map +1 -0
  41. package/dist/mcp.js +337 -0
  42. package/dist/mcp.js.map +1 -0
  43. package/dist/mpp.d.ts +57 -0
  44. package/dist/mpp.d.ts.map +1 -0
  45. package/dist/mpp.js +165 -0
  46. package/dist/mpp.js.map +1 -0
  47. package/dist/ows.d.ts +190 -0
  48. package/dist/ows.d.ts.map +1 -0
  49. package/dist/ows.js +565 -0
  50. package/dist/ows.js.map +1 -0
  51. package/dist/soroban.d.ts +92 -0
  52. package/dist/soroban.d.ts.map +1 -0
  53. package/dist/soroban.js +313 -0
  54. package/dist/soroban.js.map +1 -0
  55. package/dist/stellar.d.ts +53 -0
  56. package/dist/stellar.d.ts.map +1 -0
  57. package/dist/stellar.js +180 -0
  58. package/dist/stellar.js.map +1 -0
  59. package/dist/version-check.d.ts +5 -0
  60. package/dist/version-check.d.ts.map +1 -0
  61. package/dist/version-check.js +203 -0
  62. package/dist/version-check.js.map +1 -0
  63. package/package.json +80 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stellar.js","sourceRoot":"","sources":["../src/stellar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Fire-and-forget update check. Returns immediately; the check runs
2
+ * in the background. Safe to call at CLI startup regardless of which
3
+ * subcommand is about to run. */
4
+ export declare function checkForUpdates(): void;
5
+ //# sourceMappingURL=version-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../src/version-check.ts"],"names":[],"mappings":"AAuHA;;kCAEkC;AAClC,wBAAgB,eAAe,IAAI,IAAI,CA+CtC"}
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ // Background version check — warns the operator on stderr if their
3
+ // locally-installed cards402 is older than the current `latest` tag on
4
+ // the npm registry.
5
+ //
6
+ // Design constraints (all of these matter for a CLI that agents run
7
+ // inside an LLM loop):
8
+ //
9
+ // - Fire-and-forget. Never blocks the command. The check runs in
10
+ // parallel with whatever `main()` dispatched to; if the command
11
+ // exits first, we let the check drop. If the check finishes first,
12
+ // the warning prints before the command result.
13
+ // - Short timeout. 2s on the registry fetch so a slow network never
14
+ // measurably affects agent throughput.
15
+ // - Cached. We write the last-check timestamp + seen-latest-version
16
+ // to `~/.cards402/version-check.json` and skip the registry entirely
17
+ // if we checked within the last 24h. That's fine because once an
18
+ // operator has seen the warning they know to upgrade, and repeating
19
+ // the same warning every second is noise.
20
+ // - Non-fatal on every failure path. Network down, missing file,
21
+ // permission denied, JSON parse error, semver comparison throws —
22
+ // any of those silently no-op. A broken update check must never
23
+ // break an actual purchase.
24
+ // - stderr only. Never pollutes stdout so scripts parsing CLI output
25
+ // aren't affected.
26
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
27
+ if (k2 === undefined) k2 = k;
28
+ var desc = Object.getOwnPropertyDescriptor(m, k);
29
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
30
+ desc = { enumerable: true, get: function() { return m[k]; } };
31
+ }
32
+ Object.defineProperty(o, k2, desc);
33
+ }) : (function(o, m, k, k2) {
34
+ if (k2 === undefined) k2 = k;
35
+ o[k2] = m[k];
36
+ }));
37
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
38
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
39
+ }) : function(o, v) {
40
+ o["default"] = v;
41
+ });
42
+ var __importStar = (this && this.__importStar) || (function () {
43
+ var ownKeys = function(o) {
44
+ ownKeys = Object.getOwnPropertyNames || function (o) {
45
+ var ar = [];
46
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
47
+ return ar;
48
+ };
49
+ return ownKeys(o);
50
+ };
51
+ return function (mod) {
52
+ if (mod && mod.__esModule) return mod;
53
+ var result = {};
54
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
55
+ __setModuleDefault(result, mod);
56
+ return result;
57
+ };
58
+ })();
59
+ Object.defineProperty(exports, "__esModule", { value: true });
60
+ exports.checkForUpdates = checkForUpdates;
61
+ const fs = __importStar(require("fs"));
62
+ const path = __importStar(require("path"));
63
+ const os = __importStar(require("os"));
64
+ const REGISTRY_URL = 'https://registry.npmjs.org/cards402/latest';
65
+ const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // once per day
66
+ const FETCH_TIMEOUT_MS = 2_000;
67
+ const STATE_FILE = path.join(os.homedir(), '.cards402', 'version-check.json');
68
+ // F1-version-check (2026-04-16): cap on local state file. Matches the
69
+ // 16 KB pattern from config.ts and purchase.ts. The state file is
70
+ // normally <200 bytes; anything larger is corruption or tampering.
71
+ const MAX_STATE_BYTES = 16 * 1024;
72
+ // F2-version-check (2026-04-16): cap on the npm registry response body.
73
+ // The /latest endpoint returns a package manifest — normally ~2 KB for
74
+ // cards402. A hostile server (DNS hijack, MITM, compromised CDN) could
75
+ // push megabytes within the 2s abort window. 64 KB is generous for any
76
+ // legitimate manifest and bounds memory consumption.
77
+ const MAX_REGISTRY_BODY_BYTES = 64 * 1024;
78
+ function readLocalVersion() {
79
+ try {
80
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
81
+ const pkg = require('../package.json');
82
+ return pkg.version;
83
+ }
84
+ catch {
85
+ return null;
86
+ }
87
+ }
88
+ function readState() {
89
+ try {
90
+ // F1-version-check: size cap before readFileSync. A multi-GB state
91
+ // file (corruption, symlink) would OOM the process on every CLI
92
+ // invocation since checkForUpdates fires at startup for every command.
93
+ const stat = fs.statSync(STATE_FILE);
94
+ if (stat.size > MAX_STATE_BYTES)
95
+ return null;
96
+ const raw = fs.readFileSync(STATE_FILE, 'utf8');
97
+ return JSON.parse(raw);
98
+ }
99
+ catch {
100
+ return null;
101
+ }
102
+ }
103
+ function writeState(state) {
104
+ try {
105
+ fs.mkdirSync(path.dirname(STATE_FILE), { recursive: true, mode: 0o700 });
106
+ fs.writeFileSync(STATE_FILE, JSON.stringify(state), { mode: 0o600 });
107
+ }
108
+ catch {
109
+ /* best-effort */
110
+ }
111
+ }
112
+ /** Returns >0 if a > b, <0 if a < b, 0 if equal. Handles plain semver
113
+ * triples; pre-release tags (e.g. 0.4.6-beta.1) fall back to string
114
+ * compare which is accurate enough for our gating. */
115
+ function compareVersions(a, b) {
116
+ const stripped = (s) => s.split('-')[0] ?? s;
117
+ const pa = stripped(a)
118
+ .split('.')
119
+ .map((n) => parseInt(n, 10));
120
+ const pb = stripped(b)
121
+ .split('.')
122
+ .map((n) => parseInt(n, 10));
123
+ for (let i = 0; i < 3; i++) {
124
+ const x = pa[i] ?? 0;
125
+ const y = pb[i] ?? 0;
126
+ if (x !== y)
127
+ return x - y;
128
+ }
129
+ return a.localeCompare(b);
130
+ }
131
+ function printWarning(local, latest) {
132
+ // Write to stderr so scripts piping stdout aren't affected. The
133
+ // warning is ≤ 3 lines and mentions the exact upgrade command so
134
+ // an LLM operator can act on it without extra prompting.
135
+ const msg = [
136
+ '',
137
+ `⚠ cards402 ${local} is out of date — ${latest} is available on npm.`,
138
+ ` Upgrade: npx -y cards402@latest <command> | npm i -g cards402@latest`,
139
+ ` Release notes: https://cards402.com/changelog`,
140
+ '',
141
+ ].join('\n');
142
+ try {
143
+ process.stderr.write(msg);
144
+ }
145
+ catch {
146
+ /* stderr closed — ignore */
147
+ }
148
+ }
149
+ /** Fire-and-forget update check. Returns immediately; the check runs
150
+ * in the background. Safe to call at CLI startup regardless of which
151
+ * subcommand is about to run. */
152
+ function checkForUpdates() {
153
+ const local = readLocalVersion();
154
+ if (!local)
155
+ return;
156
+ // Throttle: skip if we've checked in the last 24h.
157
+ const state = readState();
158
+ if (state?.last_checked_at) {
159
+ const age = Date.now() - Date.parse(state.last_checked_at);
160
+ if (age < CHECK_INTERVAL_MS && state.latest_seen) {
161
+ // Re-use the cached result so a stale install still nags.
162
+ if (compareVersions(local, state.latest_seen) < 0) {
163
+ printWarning(local, state.latest_seen);
164
+ }
165
+ return;
166
+ }
167
+ }
168
+ // Fetch the registry in the background. `void` the promise so Node
169
+ // doesn't treat it as unhandled. We use AbortController to cap the
170
+ // fetch wall time independent of the socket timeouts.
171
+ void (async () => {
172
+ try {
173
+ const ctrl = new AbortController();
174
+ const timer = setTimeout(() => ctrl.abort(), FETCH_TIMEOUT_MS);
175
+ const res = await fetch(REGISTRY_URL, { signal: ctrl.signal });
176
+ clearTimeout(timer);
177
+ if (!res.ok)
178
+ return;
179
+ // F2-version-check: read the body as text with a length cap
180
+ // before JSON.parse. The 2s abort limits wall time but NOT data
181
+ // volume — a fast hostile server can push ~200 MB through a
182
+ // gigabit link in 2 seconds. res.json() loads the entire body
183
+ // into a string before parsing, so a multi-MB response fills
184
+ // memory. Cap at MAX_REGISTRY_BODY_BYTES and discard anything
185
+ // larger — a legitimate npm /latest manifest is ~2 KB.
186
+ const text = await res.text();
187
+ if (text.length > MAX_REGISTRY_BODY_BYTES)
188
+ return;
189
+ const body = JSON.parse(text);
190
+ const latest = body?.version;
191
+ if (!latest)
192
+ return;
193
+ writeState({ last_checked_at: new Date().toISOString(), latest_seen: latest });
194
+ if (compareVersions(local, latest) < 0) {
195
+ printWarning(local, latest);
196
+ }
197
+ }
198
+ catch {
199
+ /* network / parse / abort — silent no-op */
200
+ }
201
+ })();
202
+ }
203
+ //# sourceMappingURL=version-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../src/version-check.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "cspr402",
3
+ "version": "0.4.7",
4
+ "description": "CSPR402 SDK and CLI for Casper testnet payment verification and mock virtual cards",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "require": "./dist/index.js"
12
+ },
13
+ "./mcp": {
14
+ "types": "./dist/mcp.d.ts",
15
+ "import": "./dist/mcp.js",
16
+ "require": "./dist/mcp.js"
17
+ }
18
+ },
19
+ "bin": {
20
+ "cspr402": "dist/cli.js"
21
+ },
22
+ "files": [
23
+ "dist",
24
+ "README.md",
25
+ "LICENSE"
26
+ ],
27
+ "scripts": {
28
+ "build": "tsc",
29
+ "dev": "tsc --watch",
30
+ "lint": "eslint src",
31
+ "typecheck": "tsc --noEmit",
32
+ "test": "vitest run src/__tests__/client.test.ts src/__tests__/config.test.ts src/__tests__/errors.test.ts src/__tests__/integration.test.ts",
33
+ "prepublishOnly": "npm run build && npm test"
34
+ },
35
+ "keywords": [
36
+ "casper",
37
+ "cspr",
38
+ "testnet",
39
+ "virtual-card",
40
+ "vcc",
41
+ "ai-agent",
42
+ "mcp",
43
+ "model-context-protocol",
44
+ "402-payment",
45
+ "cep18",
46
+ "cspr402"
47
+ ],
48
+ "license": "MIT",
49
+ "repository": {
50
+ "type": "git",
51
+ "url": "git+https://github.com/kann420/CSPR402.git"
52
+ },
53
+ "homepage": "https://cspr402.xyz",
54
+ "publishConfig": {
55
+ "access": "public"
56
+ },
57
+ "engines": {
58
+ "node": ">=18"
59
+ },
60
+ "overrides": {
61
+ "axios": "^1.15.0"
62
+ },
63
+ "dependencies": {
64
+ "@modelcontextprotocol/sdk": "^1.0.0",
65
+ "@ctx.com/stellar-ows-core": "^1.3.0-stellar",
66
+ "@stellar/stellar-sdk": "^15.0.1"
67
+ },
68
+ "optionalDependencies": {
69
+ "@ctx.com/stellar-ows-core-linux-x64-gnu": "1.3.0-stellar",
70
+ "@ctx.com/stellar-ows-core-linux-arm64-gnu": "1.3.0-stellar",
71
+ "@ctx.com/stellar-ows-core-darwin-x64": "1.3.0-stellar",
72
+ "@ctx.com/stellar-ows-core-darwin-arm64": "1.3.0-stellar"
73
+ },
74
+ "devDependencies": {
75
+ "@types/node": "^22.0.0",
76
+ "@vitest/coverage-v8": "^4.1.5",
77
+ "typescript": "^6.0.0",
78
+ "vitest": "^4.1.5"
79
+ }
80
+ }