cards402 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.
- package/dist/cli.js +14 -0
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -1
- package/dist/client.js.map +1 -1
- package/dist/commands/purchase.d.ts +2 -0
- package/dist/commands/purchase.d.ts.map +1 -0
- package/dist/commands/purchase.js +217 -0
- package/dist/commands/purchase.js.map +1 -0
- package/dist/commands/wallet.d.ts +2 -0
- package/dist/commands/wallet.d.ts.map +1 -0
- package/dist/commands/wallet.js +77 -0
- package/dist/commands/wallet.js.map +1 -0
- package/dist/errors.d.ts +22 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +34 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ows.d.ts +15 -6
- package/dist/ows.d.ts.map +1 -1
- package/dist/ows.js +102 -43
- package/dist/ows.js.map +1 -1
- package/dist/soroban.d.ts +7 -0
- package/dist/soroban.d.ts.map +1 -1
- package/dist/soroban.js +67 -8
- package/dist/soroban.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -54,10 +54,16 @@ async function main() {
|
|
|
54
54
|
|
|
55
55
|
Usage:
|
|
56
56
|
cards402 onboard --claim <code> Set up an agent from a dashboard claim code
|
|
57
|
+
cards402 purchase --amount <USDC> Buy a card using the wallet from onboard
|
|
58
|
+
cards402 wallet address Print this agent's Stellar address
|
|
59
|
+
cards402 wallet balance Print XLM + USDC balances from Horizon
|
|
57
60
|
cards402 mcp Start the MCP server over stdio (default)
|
|
58
61
|
cards402 version Print the SDK version
|
|
59
62
|
cards402 --help Show this message
|
|
60
63
|
|
|
64
|
+
All the 'purchase' and 'wallet' subcommands read ~/.cards402/config.json
|
|
65
|
+
(written by 'cards402 onboard') so you don't need to pass an api key.
|
|
66
|
+
|
|
61
67
|
Docs: https://cards402.com/docs
|
|
62
68
|
Onboarding guide for agents: https://cards402.com/skill.md
|
|
63
69
|
`);
|
|
@@ -73,6 +79,14 @@ Onboarding guide for agents: https://cards402.com/skill.md
|
|
|
73
79
|
const { onboardCommand } = await Promise.resolve().then(() => __importStar(require('./commands/onboard')));
|
|
74
80
|
return onboardCommand(rest);
|
|
75
81
|
}
|
|
82
|
+
if (cmd === 'purchase' || cmd === 'buy') {
|
|
83
|
+
const { purchaseCommand } = await Promise.resolve().then(() => __importStar(require('./commands/purchase')));
|
|
84
|
+
return purchaseCommand(rest);
|
|
85
|
+
}
|
|
86
|
+
if (cmd === 'wallet') {
|
|
87
|
+
const { walletCommand } = await Promise.resolve().then(() => __importStar(require('./commands/wallet')));
|
|
88
|
+
return walletCommand(rest);
|
|
89
|
+
}
|
|
76
90
|
if (cmd === 'mcp') {
|
|
77
91
|
const { startMcpServer } = await Promise.resolve().then(() => __importStar(require('./mcp')));
|
|
78
92
|
await startMcpServer();
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA,2BAA2B;AAC3B,EAAE;AACF,eAAe;AACf,sEAAsE;AACtE,uEAAuE;AACvE,gEAAgE;AAChE,gEAAgE;AAChE,8CAA8C;AAC9C,yDAAyD;AACzD,EAAE;AACF,sEAAsE;AACtE,uEAAuE;AACvE,6DAA6D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE7D,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,EAAE,AAAD,EAAG,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA,2BAA2B;AAC3B,EAAE;AACF,eAAe;AACf,sEAAsE;AACtE,uEAAuE;AACvE,gEAAgE;AAChE,gEAAgE;AAChE,8CAA8C;AAC9C,yDAAyD;AACzD,EAAE;AACF,sEAAsE;AACtE,uEAAuE;AACvE,6DAA6D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE7D,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,EAAE,AAAD,EAAG,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;CAgBxB,CAAC,CAAC;QACC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC7D,iEAAiE;QACjE,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;QAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,EAAE,cAAc,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;QAC9D,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QACxC,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,qBAAqB,GAAC,CAAC;QAChE,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,MAAM,EAAE,aAAa,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;QAC5D,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClB,MAAM,EAAE,cAAc,EAAE,GAAG,wDAAa,OAAO,GAAC,CAAC;QACjD,MAAM,cAAc,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,KAAK,CAAC,CAAC;IAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC3E,OAAO,CAAC,CAAC;AACX,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CACT,CAAC,IAAI,EAAE,EAAE;IACP,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;IACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC5E,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CACF,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Cards402Error, SpendLimitError, RateLimitError, ServiceUnavailableError, PriceUnavailableError, InvalidAmountError, AuthError, OrderFailedError, WaitTimeoutError, } from './errors';
|
|
1
|
+
export { Cards402Error, SpendLimitError, RateLimitError, ServiceUnavailableError, PriceUnavailableError, InvalidAmountError, AuthError, OrderFailedError, WaitTimeoutError, ResumableError, } from './errors';
|
|
2
2
|
export interface Budget {
|
|
3
3
|
spent_usdc: string;
|
|
4
4
|
limit_usdc: string | null;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Cards402Client = exports.WaitTimeoutError = exports.OrderFailedError = exports.AuthError = exports.InvalidAmountError = exports.PriceUnavailableError = exports.ServiceUnavailableError = exports.RateLimitError = exports.SpendLimitError = exports.Cards402Error = void 0;
|
|
3
|
+
exports.Cards402Client = exports.ResumableError = exports.WaitTimeoutError = exports.OrderFailedError = exports.AuthError = exports.InvalidAmountError = exports.PriceUnavailableError = exports.ServiceUnavailableError = exports.RateLimitError = exports.SpendLimitError = exports.Cards402Error = void 0;
|
|
4
4
|
var errors_1 = require("./errors");
|
|
5
5
|
Object.defineProperty(exports, "Cards402Error", { enumerable: true, get: function () { return errors_1.Cards402Error; } });
|
|
6
6
|
Object.defineProperty(exports, "SpendLimitError", { enumerable: true, get: function () { return errors_1.SpendLimitError; } });
|
|
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "InvalidAmountError", { enumerable: true, get: fu
|
|
|
11
11
|
Object.defineProperty(exports, "AuthError", { enumerable: true, get: function () { return errors_1.AuthError; } });
|
|
12
12
|
Object.defineProperty(exports, "OrderFailedError", { enumerable: true, get: function () { return errors_1.OrderFailedError; } });
|
|
13
13
|
Object.defineProperty(exports, "WaitTimeoutError", { enumerable: true, get: function () { return errors_1.WaitTimeoutError; } });
|
|
14
|
+
Object.defineProperty(exports, "ResumableError", { enumerable: true, get: function () { return errors_1.ResumableError; } });
|
|
14
15
|
const errors_2 = require("./errors");
|
|
15
16
|
class Cards402Client {
|
|
16
17
|
baseUrl;
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +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,CA+ErE"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// `cards402 purchase --amount 10 [--asset xlm|usdc]` — one-command
|
|
3
|
+
// card purchase. Loads creds from the on-disk config written by
|
|
4
|
+
// `cards402 onboard`, opens the order, pays the Soroban contract
|
|
5
|
+
// from the local OWS wallet, waits for the SSE stream to report
|
|
6
|
+
// the card ready, and prints the card details.
|
|
7
|
+
//
|
|
8
|
+
// Designed so the cautious-agent flow is a single shell invocation:
|
|
9
|
+
// the agent doesn't have to write any JavaScript or guess at the
|
|
10
|
+
// SDK surface area.
|
|
11
|
+
//
|
|
12
|
+
// Resume: if a purchase fails mid-flight (Soroban RPC timeout, network
|
|
13
|
+
// blip, etc.), the order id is saved to ~/.cards402/last-order and the
|
|
14
|
+
// user can retry with `cards402 purchase --resume <order-id>`.
|
|
15
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
18
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
19
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
20
|
+
}
|
|
21
|
+
Object.defineProperty(o, k2, desc);
|
|
22
|
+
}) : (function(o, m, k, k2) {
|
|
23
|
+
if (k2 === undefined) k2 = k;
|
|
24
|
+
o[k2] = m[k];
|
|
25
|
+
}));
|
|
26
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
27
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
28
|
+
}) : function(o, v) {
|
|
29
|
+
o["default"] = v;
|
|
30
|
+
});
|
|
31
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
32
|
+
var ownKeys = function(o) {
|
|
33
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
34
|
+
var ar = [];
|
|
35
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
36
|
+
return ar;
|
|
37
|
+
};
|
|
38
|
+
return ownKeys(o);
|
|
39
|
+
};
|
|
40
|
+
return function (mod) {
|
|
41
|
+
if (mod && mod.__esModule) return mod;
|
|
42
|
+
var result = {};
|
|
43
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
44
|
+
__setModuleDefault(result, mod);
|
|
45
|
+
return result;
|
|
46
|
+
};
|
|
47
|
+
})();
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
exports.purchaseCommand = purchaseCommand;
|
|
50
|
+
const fs = __importStar(require("fs"));
|
|
51
|
+
const os = __importStar(require("os"));
|
|
52
|
+
const path = __importStar(require("path"));
|
|
53
|
+
const config_1 = require("../config");
|
|
54
|
+
const ows_1 = require("../ows");
|
|
55
|
+
const errors_1 = require("../errors");
|
|
56
|
+
function parseArgs(argv) {
|
|
57
|
+
const out = {};
|
|
58
|
+
for (let i = 0; i < argv.length; i++) {
|
|
59
|
+
const arg = argv[i];
|
|
60
|
+
if (arg === undefined)
|
|
61
|
+
continue;
|
|
62
|
+
if (arg === '-h' || arg === '--help')
|
|
63
|
+
out.help = true;
|
|
64
|
+
else if (arg === '-a' || arg === '--amount')
|
|
65
|
+
out.amount = argv[++i];
|
|
66
|
+
else if (arg.startsWith('--amount='))
|
|
67
|
+
out.amount = arg.slice('--amount='.length);
|
|
68
|
+
else if (arg === '--asset') {
|
|
69
|
+
const v = argv[++i];
|
|
70
|
+
if (v === 'xlm' || v === 'usdc')
|
|
71
|
+
out.asset = v;
|
|
72
|
+
}
|
|
73
|
+
else if (arg.startsWith('--asset=')) {
|
|
74
|
+
const v = arg.slice('--asset='.length);
|
|
75
|
+
if (v === 'xlm' || v === 'usdc')
|
|
76
|
+
out.asset = v;
|
|
77
|
+
}
|
|
78
|
+
else if (arg === '--wallet-name')
|
|
79
|
+
out.walletName = argv[++i];
|
|
80
|
+
else if (arg.startsWith('--wallet-name='))
|
|
81
|
+
out.walletName = arg.slice('--wallet-name='.length);
|
|
82
|
+
else if (arg === '--resume')
|
|
83
|
+
out.resume = argv[++i];
|
|
84
|
+
else if (arg.startsWith('--resume='))
|
|
85
|
+
out.resume = arg.slice('--resume='.length);
|
|
86
|
+
}
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
89
|
+
function usage() {
|
|
90
|
+
process.stderr.write(`Usage: cards402 purchase --amount <USDC> [--asset xlm|usdc]
|
|
91
|
+
cards402 purchase --resume <order-id>
|
|
92
|
+
|
|
93
|
+
Buys a virtual Visa card for the given USD value using the credentials
|
|
94
|
+
and wallet set up by 'cards402 onboard'. Reads ~/.cards402/config.json
|
|
95
|
+
for the api key and wallet name, so you don't need to pass either.
|
|
96
|
+
|
|
97
|
+
Options:
|
|
98
|
+
-a, --amount <USDC> Card value in USD (decimal string). Required for new purchases.
|
|
99
|
+
--asset xlm|usdc Which asset to pay with. Default: xlm
|
|
100
|
+
--wallet-name <name> Override the wallet name from config.json
|
|
101
|
+
--resume <order-id> Resume a purchase that failed mid-flight. Omit --amount.
|
|
102
|
+
-h, --help Show this message
|
|
103
|
+
|
|
104
|
+
Examples:
|
|
105
|
+
cards402 purchase --amount 10 # $10 card paid in XLM
|
|
106
|
+
cards402 purchase --amount 5 --asset usdc
|
|
107
|
+
cards402 purchase --resume a94d18cc-... # pick up an interrupted purchase
|
|
108
|
+
`);
|
|
109
|
+
}
|
|
110
|
+
function lastOrderFile() {
|
|
111
|
+
const dir = process.env.CARDS402_CONFIG_DIR || path.join(os.homedir(), '.cards402');
|
|
112
|
+
return path.join(dir, 'last-order');
|
|
113
|
+
}
|
|
114
|
+
function saveLastOrder(orderId) {
|
|
115
|
+
try {
|
|
116
|
+
const p = lastOrderFile();
|
|
117
|
+
fs.mkdirSync(path.dirname(p), { recursive: true, mode: 0o700 });
|
|
118
|
+
fs.writeFileSync(p, orderId + '\n', { mode: 0o600 });
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
/* non-fatal */
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function clearLastOrder() {
|
|
125
|
+
try {
|
|
126
|
+
fs.unlinkSync(lastOrderFile());
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
/* non-fatal */
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function printCard(card) {
|
|
133
|
+
process.stdout.write('\n');
|
|
134
|
+
process.stdout.write('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
|
|
135
|
+
process.stdout.write(' Card delivered\n');
|
|
136
|
+
process.stdout.write('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
|
|
137
|
+
process.stdout.write(` Number: ${card.number}\n`);
|
|
138
|
+
process.stdout.write(` CVV: ${card.cvv}\n`);
|
|
139
|
+
process.stdout.write(` Expiry: ${card.expiry}\n`);
|
|
140
|
+
if (card.brand)
|
|
141
|
+
process.stdout.write(` Brand: ${card.brand}\n`);
|
|
142
|
+
process.stdout.write(` Order: ${card.order_id}\n`);
|
|
143
|
+
process.stdout.write('\n');
|
|
144
|
+
process.stdout.write('The card details above are sensitive — save them to a secrets store immediately and do not log them.\n');
|
|
145
|
+
}
|
|
146
|
+
async function purchaseCommand(argv) {
|
|
147
|
+
const args = parseArgs(argv);
|
|
148
|
+
if (args.help) {
|
|
149
|
+
usage();
|
|
150
|
+
return 0;
|
|
151
|
+
}
|
|
152
|
+
// --resume and --amount are mutually exclusive; --resume doesn't need --amount.
|
|
153
|
+
if (args.resume && args.amount) {
|
|
154
|
+
process.stderr.write('error: --resume and --amount cannot be used together\n');
|
|
155
|
+
return 2;
|
|
156
|
+
}
|
|
157
|
+
if (!args.resume && !args.amount) {
|
|
158
|
+
process.stderr.write('error: --amount <USDC> is required (or --resume <order-id>)\n\n');
|
|
159
|
+
usage();
|
|
160
|
+
return 2;
|
|
161
|
+
}
|
|
162
|
+
if (args.amount && (!/^\d+(\.\d+)?$/.test(args.amount) || parseFloat(args.amount) <= 0)) {
|
|
163
|
+
process.stderr.write(`error: --amount must be a positive decimal (got: ${args.amount})\n`);
|
|
164
|
+
return 2;
|
|
165
|
+
}
|
|
166
|
+
const config = (0, config_1.loadCards402Config)();
|
|
167
|
+
if (!config) {
|
|
168
|
+
process.stderr.write(`error: no cards402 config found at ~/.cards402/config.json
|
|
169
|
+
|
|
170
|
+
Run 'cards402 onboard --claim <code>' first to set up credentials.
|
|
171
|
+
Your operator can mint a claim code from https://cards402.com/dashboard.
|
|
172
|
+
`);
|
|
173
|
+
return 1;
|
|
174
|
+
}
|
|
175
|
+
const walletName = args.walletName || config.wallet_name || 'cards402-agent';
|
|
176
|
+
const paymentAsset = args.asset ?? 'xlm';
|
|
177
|
+
if (args.resume) {
|
|
178
|
+
process.stdout.write(`→ Resuming order ${args.resume}…\n`);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
process.stdout.write(`→ Purchasing $${args.amount} card via ${paymentAsset.toUpperCase()}…\n`);
|
|
182
|
+
}
|
|
183
|
+
try {
|
|
184
|
+
const card = await (0, ows_1.purchaseCardOWS)({
|
|
185
|
+
apiKey: config.api_key,
|
|
186
|
+
baseUrl: config.api_url,
|
|
187
|
+
walletName,
|
|
188
|
+
// amount is unused on resume but the type requires it; pass '0' safely.
|
|
189
|
+
amountUsdc: args.amount ?? '0',
|
|
190
|
+
paymentAsset,
|
|
191
|
+
...(args.resume ? { resume: args.resume } : {}),
|
|
192
|
+
});
|
|
193
|
+
clearLastOrder();
|
|
194
|
+
printCard(card);
|
|
195
|
+
return 0;
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
if (err instanceof errors_1.OrderFailedError) {
|
|
199
|
+
process.stderr.write(`\nerror: ${err.message}\n`);
|
|
200
|
+
clearLastOrder();
|
|
201
|
+
return 1;
|
|
202
|
+
}
|
|
203
|
+
if (err instanceof errors_1.ResumableError) {
|
|
204
|
+
saveLastOrder(err.orderId);
|
|
205
|
+
process.stderr.write(`\nerror: ${err.message}\n`);
|
|
206
|
+
process.stderr.write(`\nYour payment may still be processing on-chain. The cards402 backend will\n` +
|
|
207
|
+
`credit the order if the transaction finalizes. Resume with:\n\n` +
|
|
208
|
+
` cards402 purchase --resume ${err.orderId}\n\n` +
|
|
209
|
+
`(saved to ~/.cards402/last-order)\n`);
|
|
210
|
+
return 1;
|
|
211
|
+
}
|
|
212
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
213
|
+
process.stderr.write(`error: purchase failed: ${msg}\n`);
|
|
214
|
+
return 1;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=purchase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purchase.js","sourceRoot":"","sources":["../../src/commands/purchase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"AAqBA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA8DnE"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// `cards402 wallet address` / `cards402 wallet balance` — read-only
|
|
3
|
+
// helpers that wrap the OWS SDK so agents don't have to spawn Node
|
|
4
|
+
// one-liners to find out their own Stellar address or check whether
|
|
5
|
+
// funding has landed.
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.walletCommand = walletCommand;
|
|
8
|
+
const config_1 = require("../config");
|
|
9
|
+
const ows_1 = require("../ows");
|
|
10
|
+
function usage() {
|
|
11
|
+
process.stderr.write(`Usage: cards402 wallet <subcommand>
|
|
12
|
+
|
|
13
|
+
Subcommands:
|
|
14
|
+
address Print the Stellar address for this agent's wallet
|
|
15
|
+
balance Print the wallet's XLM and USDC balances from Horizon
|
|
16
|
+
-h, --help Show this message
|
|
17
|
+
|
|
18
|
+
Both subcommands read ~/.cards402/config.json for the wallet name, so
|
|
19
|
+
you don't need to pass anything after 'cards402 onboard'.
|
|
20
|
+
`);
|
|
21
|
+
}
|
|
22
|
+
async function walletCommand(argv) {
|
|
23
|
+
const [sub, ...rest] = argv;
|
|
24
|
+
if (!sub || sub === '-h' || sub === '--help' || sub === 'help') {
|
|
25
|
+
usage();
|
|
26
|
+
return sub ? 0 : 2;
|
|
27
|
+
}
|
|
28
|
+
const config = (0, config_1.loadCards402Config)();
|
|
29
|
+
if (!config) {
|
|
30
|
+
process.stderr.write("error: no cards402 config found. Run 'cards402 onboard --claim <code>' first.\n");
|
|
31
|
+
return 1;
|
|
32
|
+
}
|
|
33
|
+
const walletName = rest.find((a) => a.startsWith('--name='))?.slice(7) || config.wallet_name || 'cards402-agent';
|
|
34
|
+
if (sub === 'address') {
|
|
35
|
+
try {
|
|
36
|
+
const publicKey = (0, ows_1.getOWSPublicKey)(walletName);
|
|
37
|
+
process.stdout.write(`${publicKey}\n`);
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
process.stderr.write(`error: wallet "${walletName}" not found: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
42
|
+
return 1;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (sub === 'balance') {
|
|
46
|
+
try {
|
|
47
|
+
const publicKey = (0, ows_1.getOWSPublicKey)(walletName);
|
|
48
|
+
const bal = await (0, ows_1.getOWSBalance)(walletName);
|
|
49
|
+
process.stdout.write(`address: ${publicKey}\n`);
|
|
50
|
+
process.stdout.write(`xlm: ${bal.xlm}\n`);
|
|
51
|
+
process.stdout.write(`usdc: ${bal.usdc}\n`);
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
56
|
+
// Horizon 404 on a brand-new unactivated wallet — show zeros.
|
|
57
|
+
if (msg.includes('Not Found') || msg.includes('404')) {
|
|
58
|
+
try {
|
|
59
|
+
const publicKey = (0, ows_1.getOWSPublicKey)(walletName);
|
|
60
|
+
process.stdout.write(`address: ${publicKey}\n`);
|
|
61
|
+
process.stdout.write(`xlm: 0 (unactivated — send >= 1 XLM)\n`);
|
|
62
|
+
process.stdout.write(`usdc: 0\n`);
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
/* fall through to error */
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
process.stderr.write(`error: ${msg}\n`);
|
|
70
|
+
return 1;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
process.stderr.write(`error: unknown wallet subcommand '${sub}'\n`);
|
|
74
|
+
usage();
|
|
75
|
+
return 2;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=wallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/commands/wallet.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -53,6 +53,28 @@ export declare class OrderFailedError extends Cards402Error {
|
|
|
53
53
|
stellar_txid: string;
|
|
54
54
|
} | undefined);
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Thrown by purchaseCardOWS when the order was created (and possibly paid)
|
|
58
|
+
* but the flow couldn't finish — e.g. Soroban RPC finalization timed out,
|
|
59
|
+
* or waitForCard hit its deadline. Always carries the orderId so the caller
|
|
60
|
+
* can resume via `cards402 purchase --resume <order-id>` without minting a
|
|
61
|
+
* new order (which would strand the original one until it expires).
|
|
62
|
+
*
|
|
63
|
+
* `txHash` is present when the payment was submitted onto the ledger (even
|
|
64
|
+
* if finalization wasn't confirmed client-side) — the backend watcher can
|
|
65
|
+
* still credit the order after the fact.
|
|
66
|
+
*
|
|
67
|
+
* `phase: 'paid'` means payViaContractOWS returned successfully, so resume
|
|
68
|
+
* should skip straight to waitForCard. `phase: 'unpaid'` means the payment
|
|
69
|
+
* never went out and resume may need to retry the Soroban submit.
|
|
70
|
+
*/
|
|
71
|
+
export declare class ResumableError extends Cards402Error {
|
|
72
|
+
readonly orderId: string;
|
|
73
|
+
readonly phase: 'unpaid' | 'paid';
|
|
74
|
+
readonly txHash?: string | undefined;
|
|
75
|
+
readonly cause?: unknown | undefined;
|
|
76
|
+
constructor(orderId: string, reason: string, phase: 'unpaid' | 'paid', txHash?: string | undefined, cause?: unknown | undefined);
|
|
77
|
+
}
|
|
56
78
|
/** Waiting for a card timed out — order may still be processing. */
|
|
57
79
|
export declare class WaitTimeoutError extends Cards402Error {
|
|
58
80
|
readonly orderId: string;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,oDAAoD;AACpD,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,EAAE,MAAM;aACZ,MAAM,EAAE,MAAM;aACd,GAAG,CAAC,EAAE,OAAO;gBAH7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,OAAO,YAAA;CAMhC;AAED,kDAAkD;AAClD,qBAAa,eAAgB,SAAQ,aAAa;aAE9B,KAAK,EAAE,MAAM;aACb,KAAK,EAAE,MAAM;gBADb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM;CAUhC;AAED,+DAA+D;AAC/D,qBAAa,cAAe,SAAQ,aAAa;;CAUhD;AAED,8EAA8E;AAC9E,qBAAa,uBAAwB,SAAQ,aAAa;gBAC5C,OAAO,SAAuE;CAK3F;AAED,yDAAyD;AACzD,qBAAa,qBAAsB,SAAQ,aAAa;gBAEpD,OAAO,SAAuF;CAMjG;AAED,qDAAqD;AACrD,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,OAAO,SAA0E;CAK9F;AAED,yCAAyC;AACzC,qBAAa,SAAU,SAAQ,aAAa;;CAU3C;AAED,oEAAoE;AACpE,qBAAa,gBAAiB,SAAQ,aAAa;aAE/B,OAAO,EAAE,MAAM;aAEf,MAAM,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE;gBAFjC,OAAO,EAAE,MAAM,EAC/B,MAAM,EAAE,MAAM,EACE,MAAM,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,YAAA;CAapD;AAED,oEAAoE;AACpE,qBAAa,gBAAiB,SAAQ,aAAa;aAE/B,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM,EAC/B,SAAS,EAAE,MAAM;CAWpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAsB1F"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,oDAAoD;AACpD,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,EAAE,MAAM;aACZ,MAAM,EAAE,MAAM;aACd,GAAG,CAAC,EAAE,OAAO;gBAH7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,OAAO,YAAA;CAMhC;AAED,kDAAkD;AAClD,qBAAa,eAAgB,SAAQ,aAAa;aAE9B,KAAK,EAAE,MAAM;aACb,KAAK,EAAE,MAAM;gBADb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM;CAUhC;AAED,+DAA+D;AAC/D,qBAAa,cAAe,SAAQ,aAAa;;CAUhD;AAED,8EAA8E;AAC9E,qBAAa,uBAAwB,SAAQ,aAAa;gBAC5C,OAAO,SAAuE;CAK3F;AAED,yDAAyD;AACzD,qBAAa,qBAAsB,SAAQ,aAAa;gBAEpD,OAAO,SAAuF;CAMjG;AAED,qDAAqD;AACrD,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,OAAO,SAA0E;CAK9F;AAED,yCAAyC;AACzC,qBAAa,SAAU,SAAQ,aAAa;;CAU3C;AAED,oEAAoE;AACpE,qBAAa,gBAAiB,SAAQ,aAAa;aAE/B,OAAO,EAAE,MAAM;aAEf,MAAM,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE;gBAFjC,OAAO,EAAE,MAAM,EAC/B,MAAM,EAAE,MAAM,EACE,MAAM,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,YAAA;CAapD;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAe,SAAQ,aAAa;aAE7B,OAAO,EAAE,MAAM;aAEf,KAAK,EAAE,QAAQ,GAAG,MAAM;aACxB,MAAM,CAAC,EAAE,MAAM;aACf,KAAK,CAAC,EAAE,OAAO;gBAJf,OAAO,EAAE,MAAM,EAC/B,MAAM,EAAE,MAAM,EACE,KAAK,EAAE,QAAQ,GAAG,MAAM,EACxB,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,KAAK,CAAC,EAAE,OAAO,YAAA;CAalC;AAED,oEAAoE;AACpE,qBAAa,gBAAiB,SAAQ,aAAa;aAE/B,OAAO,EAAE,MAAM;gBAAf,OAAO,EAAE,MAAM,EAC/B,SAAS,EAAE,MAAM;CAWpB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAsB1F"}
|
package/dist/errors.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* }
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.WaitTimeoutError = exports.OrderFailedError = exports.AuthError = exports.InvalidAmountError = exports.PriceUnavailableError = exports.ServiceUnavailableError = exports.RateLimitError = exports.SpendLimitError = exports.Cards402Error = void 0;
|
|
15
|
+
exports.WaitTimeoutError = exports.ResumableError = exports.OrderFailedError = exports.AuthError = exports.InvalidAmountError = exports.PriceUnavailableError = exports.ServiceUnavailableError = exports.RateLimitError = exports.SpendLimitError = exports.Cards402Error = void 0;
|
|
16
16
|
exports.parseApiError = parseApiError;
|
|
17
17
|
/** Base class — all cards402 errors extend this. */
|
|
18
18
|
class Cards402Error extends Error {
|
|
@@ -107,6 +107,39 @@ class OrderFailedError extends Cards402Error {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
exports.OrderFailedError = OrderFailedError;
|
|
110
|
+
/**
|
|
111
|
+
* Thrown by purchaseCardOWS when the order was created (and possibly paid)
|
|
112
|
+
* but the flow couldn't finish — e.g. Soroban RPC finalization timed out,
|
|
113
|
+
* or waitForCard hit its deadline. Always carries the orderId so the caller
|
|
114
|
+
* can resume via `cards402 purchase --resume <order-id>` without minting a
|
|
115
|
+
* new order (which would strand the original one until it expires).
|
|
116
|
+
*
|
|
117
|
+
* `txHash` is present when the payment was submitted onto the ledger (even
|
|
118
|
+
* if finalization wasn't confirmed client-side) — the backend watcher can
|
|
119
|
+
* still credit the order after the fact.
|
|
120
|
+
*
|
|
121
|
+
* `phase: 'paid'` means payViaContractOWS returned successfully, so resume
|
|
122
|
+
* should skip straight to waitForCard. `phase: 'unpaid'` means the payment
|
|
123
|
+
* never went out and resume may need to retry the Soroban submit.
|
|
124
|
+
*/
|
|
125
|
+
class ResumableError extends Cards402Error {
|
|
126
|
+
orderId;
|
|
127
|
+
phase;
|
|
128
|
+
txHash;
|
|
129
|
+
cause;
|
|
130
|
+
constructor(orderId, reason, phase, txHash, cause) {
|
|
131
|
+
const hashNote = txHash ? ` (tx: ${txHash})` : '';
|
|
132
|
+
super(`Purchase could not finish for order ${orderId}: ${reason}${hashNote}. ` +
|
|
133
|
+
`Resume with: cards402 purchase --resume ${orderId}`, 'resumable', 0, { orderId, reason, phase, txHash });
|
|
134
|
+
this.orderId = orderId;
|
|
135
|
+
this.phase = phase;
|
|
136
|
+
this.txHash = txHash;
|
|
137
|
+
this.cause = cause;
|
|
138
|
+
this.name = 'ResumableError';
|
|
139
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
exports.ResumableError = ResumableError;
|
|
110
143
|
/** Waiting for a card timed out — order may still be processing. */
|
|
111
144
|
class WaitTimeoutError extends Cards402Error {
|
|
112
145
|
orderId;
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAoKH,sCAsBC;AAxLD,oDAAoD;AACpD,MAAa,aAAc,SAAQ,KAAK;IAGpB;IACA;IACA;IAJlB,YACE,OAAe,EACC,IAAY,EACZ,MAAc,EACd,GAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,QAAG,GAAH,GAAG,CAAU;QAG7B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAXD,sCAWC;AAED,kDAAkD;AAClD,MAAa,eAAgB,SAAQ,aAAa;IAE9B;IACA;IAFlB,YACkB,KAAa,EACb,KAAa;QAE7B,KAAK,CACH,0BAA0B,KAAK,cAAc,KAAK,iFAAiF,EACnI,sBAAsB,EACtB,GAAG,CACJ,CAAC;QAPc,UAAK,GAAL,KAAK,CAAQ;QACb,UAAK,GAAL,KAAK,CAAQ;QAO7B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAbD,0CAaC;AAED,+DAA+D;AAC/D,MAAa,cAAe,SAAQ,aAAa;IAC/C;QACE,KAAK,CACH,qFAAqF,EACrF,qBAAqB,EACrB,GAAG,CACJ,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAVD,wCAUC;AAED,8EAA8E;AAC9E,MAAa,uBAAwB,SAAQ,aAAa;IACxD,YAAY,OAAO,GAAG,oEAAoE;QACxF,KAAK,CAAC,OAAO,EAAE,iCAAiC,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAND,0DAMC;AAED,yDAAyD;AACzD,MAAa,qBAAsB,SAAQ,aAAa;IACtD,YACE,OAAO,GAAG,oFAAoF;QAE9F,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AARD,sDAQC;AAED,qDAAqD;AACrD,MAAa,kBAAmB,SAAQ,aAAa;IACnD,YAAY,OAAO,GAAG,uEAAuE;QAC3F,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAND,gDAMC;AAED,yCAAyC;AACzC,MAAa,SAAU,SAAQ,aAAa;IAC1C;QACE,KAAK,CACH,uFAAuF,EACvF,iBAAiB,EACjB,GAAG,CACJ,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAVD,8BAUC;AAED,oEAAoE;AACpE,MAAa,gBAAiB,SAAQ,aAAa;IAE/B;IAEA;IAHlB,YACkB,OAAe,EAC/B,MAAc,EACE,MAAiC;QAEjD,MAAM,UAAU,GAAG,MAAM;YACvB,CAAC,CAAC,0CAA0C,MAAM,CAAC,YAAY,IAAI;YACnE,CAAC,CAAC,sDAAsD,CAAC;QAC3D,KAAK,CAAC,SAAS,OAAO,YAAY,MAAM,IAAI,UAAU,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE;YAC7E,OAAO;YACP,MAAM;YACN,MAAM;SACP,CAAC,CAAC;QAXa,YAAO,GAAP,OAAO,CAAQ;QAEf,WAAM,GAAN,MAAM,CAA2B;QAUjD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAjBD,4CAiBC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAa,cAAe,SAAQ,aAAa;IAE7B;IAEA;IACA;IACA;IALlB,YACkB,OAAe,EAC/B,MAAc,EACE,KAAwB,EACxB,MAAe,EACf,KAAe;QAE/B,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,KAAK,CACH,uCAAuC,OAAO,KAAK,MAAM,GAAG,QAAQ,IAAI;YACtE,2CAA2C,OAAO,EAAE,EACtD,WAAW,EACX,CAAC,EACD,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CACnC,CAAC;QAbc,YAAO,GAAP,OAAO,CAAQ;QAEf,UAAK,GAAL,KAAK,CAAmB;QACxB,WAAM,GAAN,MAAM,CAAS;QACf,UAAK,GAAL,KAAK,CAAU;QAU/B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAnBD,wCAmBC;AAED,oEAAoE;AACpE,MAAa,gBAAiB,SAAQ,aAAa;IAE/B;IADlB,YACkB,OAAe,EAC/B,SAAiB;QAEjB,KAAK,CACH,oCAAoC,SAAS,GAAG,IAAI,aAAa,OAAO,KAAK;YAC3E,kEAAkE,EACpE,cAAc,EACd,GAAG,CACJ,CAAC;QARc,YAAO,GAAP,OAAO,CAAQ;QAS/B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAdD,4CAcC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,MAAc,EAAE,IAA6B;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC;IAEtE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,sBAAsB;YACzB,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC;QACnF,KAAK,qBAAqB;YACxB,OAAO,IAAI,cAAc,EAAE,CAAC;QAC9B,KAAK,iCAAiC;YACpC,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,mBAAmB,CAAC;QACzB,KAAK,uBAAuB;YAC1B,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC5C,KAAK,gBAAgB;YACnB,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACzC,KAAK,iBAAiB,CAAC;QACvB,KAAK,iBAAiB;YACpB,OAAO,IAAI,SAAS,EAAE,CAAC;QACzB;YACE,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { createWallet, getBalance, addUsdcTrustline, payViaContract, purchaseCar
|
|
|
4
4
|
export type { WalletInfo, PayOpts } from './stellar';
|
|
5
5
|
export { createOWSWallet, importStellarKey, getOWSPublicKey, getOWSBalance, addUsdcTrustlineOWS, payViaContractOWS, purchaseCardOWS, onboardAgent, payVCCOWS, } from './ows';
|
|
6
6
|
export type { TrustlineOpts, PayViaContractOwsOpts, PayVCCOwsOpts, PurchaseCardOwsOpts, OnboardAgentOpts, OnboardAgentResult, } from './ows';
|
|
7
|
-
export { Cards402Error, SpendLimitError, RateLimitError, ServiceUnavailableError, PriceUnavailableError, InvalidAmountError, AuthError, OrderFailedError, WaitTimeoutError, } from './errors';
|
|
7
|
+
export { Cards402Error, SpendLimitError, RateLimitError, ServiceUnavailableError, PriceUnavailableError, InvalidAmountError, AuthError, OrderFailedError, WaitTimeoutError, ResumableError, } from './errors';
|
|
8
8
|
export { loadCards402Config, saveCards402Config, resolveCredentials } from './config';
|
|
9
9
|
export type { Cards402Config } from './config';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,MAAM,EACN,YAAY,GACb,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,EAEZ,MAAM,GACP,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,YAAY,EAEZ,SAAS,GACV,MAAM,OAAO,CAAC;AACf,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,aAAa,EACb,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,MAAM,EACN,YAAY,GACb,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,EAEZ,MAAM,GACP,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAErD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,YAAY,EAEZ,SAAS,GACV,MAAM,OAAO,CAAC;AACf,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,aAAa,EACb,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACtF,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveCredentials = exports.saveCards402Config = exports.loadCards402Config = exports.WaitTimeoutError = exports.OrderFailedError = exports.AuthError = exports.InvalidAmountError = exports.PriceUnavailableError = exports.ServiceUnavailableError = exports.RateLimitError = exports.SpendLimitError = exports.Cards402Error = exports.payVCCOWS = exports.onboardAgent = exports.purchaseCardOWS = exports.payViaContractOWS = exports.addUsdcTrustlineOWS = exports.getOWSBalance = exports.getOWSPublicKey = exports.importStellarKey = exports.createOWSWallet = exports.payVCC = exports.purchaseCard = exports.payViaContract = exports.addUsdcTrustline = exports.getBalance = exports.createWallet = exports.Cards402Client = void 0;
|
|
3
|
+
exports.resolveCredentials = exports.saveCards402Config = exports.loadCards402Config = exports.ResumableError = exports.WaitTimeoutError = exports.OrderFailedError = exports.AuthError = exports.InvalidAmountError = exports.PriceUnavailableError = exports.ServiceUnavailableError = exports.RateLimitError = exports.SpendLimitError = exports.Cards402Error = exports.payVCCOWS = exports.onboardAgent = exports.purchaseCardOWS = exports.payViaContractOWS = exports.addUsdcTrustlineOWS = exports.getOWSBalance = exports.getOWSPublicKey = exports.importStellarKey = exports.createOWSWallet = exports.payVCC = exports.purchaseCard = exports.payViaContract = exports.addUsdcTrustline = exports.getBalance = exports.createWallet = exports.Cards402Client = void 0;
|
|
4
4
|
var client_1 = require("./client");
|
|
5
5
|
Object.defineProperty(exports, "Cards402Client", { enumerable: true, get: function () { return client_1.Cards402Client; } });
|
|
6
6
|
var stellar_1 = require("./stellar");
|
|
@@ -32,6 +32,7 @@ Object.defineProperty(exports, "InvalidAmountError", { enumerable: true, get: fu
|
|
|
32
32
|
Object.defineProperty(exports, "AuthError", { enumerable: true, get: function () { return errors_1.AuthError; } });
|
|
33
33
|
Object.defineProperty(exports, "OrderFailedError", { enumerable: true, get: function () { return errors_1.OrderFailedError; } });
|
|
34
34
|
Object.defineProperty(exports, "WaitTimeoutError", { enumerable: true, get: function () { return errors_1.WaitTimeoutError; } });
|
|
35
|
+
Object.defineProperty(exports, "ResumableError", { enumerable: true, get: function () { return errors_1.ResumableError; } });
|
|
35
36
|
var config_1 = require("./config");
|
|
36
37
|
Object.defineProperty(exports, "loadCards402Config", { enumerable: true, get: function () { return config_1.loadCards402Config; } });
|
|
37
38
|
Object.defineProperty(exports, "saveCards402Config", { enumerable: true, get: function () { return config_1.saveCards402Config; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AAavB,qCAQmB;AAPjB,uGAAA,YAAY,OAAA;AACZ,qGAAA,UAAU,OAAA;AACV,2GAAA,gBAAgB,OAAA;AAChB,yGAAA,cAAc,OAAA;AACd,uGAAA,YAAY,OAAA;AACZ,wCAAwC;AACxC,iGAAA,MAAM,OAAA;AAIR,6BAWe;AAVb,sGAAA,eAAe,OAAA;AACf,uGAAA,gBAAgB,OAAA;AAChB,sGAAA,eAAe,OAAA;AACf,oGAAA,aAAa,OAAA;AACb,0GAAA,mBAAmB,OAAA;AACnB,wGAAA,iBAAiB,OAAA;AACjB,sGAAA,eAAe,OAAA;AACf,mGAAA,YAAY,OAAA;AACZ,qBAAqB;AACrB,gGAAA,SAAS,OAAA;AAWX,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AAavB,qCAQmB;AAPjB,uGAAA,YAAY,OAAA;AACZ,qGAAA,UAAU,OAAA;AACV,2GAAA,gBAAgB,OAAA;AAChB,yGAAA,cAAc,OAAA;AACd,uGAAA,YAAY,OAAA;AACZ,wCAAwC;AACxC,iGAAA,MAAM,OAAA;AAIR,6BAWe;AAVb,sGAAA,eAAe,OAAA;AACf,uGAAA,gBAAgB,OAAA;AAChB,sGAAA,eAAe,OAAA;AACf,oGAAA,aAAa,OAAA;AACb,0GAAA,mBAAmB,OAAA;AACnB,wGAAA,iBAAiB,OAAA;AACjB,sGAAA,eAAe,OAAA;AACf,mGAAA,YAAY,OAAA;AACZ,qBAAqB;AACrB,gGAAA,SAAS,OAAA;AAWX,mCAWkB;AAVhB,uGAAA,aAAa,OAAA;AACb,yGAAA,eAAe,OAAA;AACf,wGAAA,cAAc,OAAA;AACd,iHAAA,uBAAuB,OAAA;AACvB,+GAAA,qBAAqB,OAAA;AACrB,4GAAA,kBAAkB,OAAA;AAClB,mGAAA,SAAS,OAAA;AACT,0GAAA,gBAAgB,OAAA;AAChB,0GAAA,gBAAgB,OAAA;AAChB,wGAAA,cAAc,OAAA;AAGhB,mCAAsF;AAA7E,4GAAA,kBAAkB,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AAAE,4GAAA,kBAAkB,OAAA"}
|
package/dist/ows.d.ts
CHANGED
|
@@ -98,10 +98,14 @@ export interface PurchaseCardOwsOpts {
|
|
|
98
98
|
vaultPath?: string;
|
|
99
99
|
baseUrl?: string;
|
|
100
100
|
networkPassphrase?: string;
|
|
101
|
-
/**
|
|
102
|
-
|
|
101
|
+
/**
|
|
102
|
+
* Resume an existing order instead of creating a new one. Accepts either
|
|
103
|
+
* a bare order id string (wait for the backend to finish an in-flight
|
|
104
|
+
* payment) or an object with a fresh PaymentInstructions (resubmit).
|
|
105
|
+
*/
|
|
106
|
+
resume?: string | {
|
|
103
107
|
orderId: string;
|
|
104
|
-
payment
|
|
108
|
+
payment?: PaymentInstructions;
|
|
105
109
|
};
|
|
106
110
|
/** Tune the card-ready poll. Default: { timeoutMs: 300_000, intervalMs: 3_000 }. */
|
|
107
111
|
waitForCardOpts?: {
|
|
@@ -110,10 +114,15 @@ export interface PurchaseCardOwsOpts {
|
|
|
110
114
|
};
|
|
111
115
|
}
|
|
112
116
|
/**
|
|
113
|
-
* Full purchase flow using an OWS wallet: create order → pay
|
|
117
|
+
* Full purchase flow using an OWS wallet: create order → pay the receiver
|
|
118
|
+
* contract on Stellar → wait for card. Any failure after the order exists
|
|
119
|
+
* is wrapped as a ResumableError so the caller can retry via `--resume`
|
|
120
|
+
* without minting a new order.
|
|
114
121
|
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
122
|
+
* Soroban RPC backpressure is tolerated: if submitSorobanTx throws with a
|
|
123
|
+
* txHash attached (deadline reached but tx may still land), we proceed to
|
|
124
|
+
* waitForCard — the cards402 backend watcher is the source of truth and
|
|
125
|
+
* will credit the order when the tx finalizes.
|
|
117
126
|
*/
|
|
118
127
|
export declare function purchaseCardOWS(opts: PurchaseCardOwsOpts): Promise<CardDetails & {
|
|
119
128
|
order_id: string;
|
package/dist/ows.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ows.d.ts","sourceRoot":"","sources":["../src/ows.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ows.d.ts","sourceRoot":"","sources":["../src/ows.ts"],"names":[],"mappings":"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"}
|
package/dist/ows.js
CHANGED
|
@@ -54,6 +54,7 @@ exports.payViaContractOWS = payViaContractOWS;
|
|
|
54
54
|
exports.purchaseCardOWS = purchaseCardOWS;
|
|
55
55
|
const stellar_ows_core_1 = require("@ctx.com/stellar-ows-core");
|
|
56
56
|
const stellar_sdk_1 = require("@stellar/stellar-sdk");
|
|
57
|
+
const errors_1 = require("./errors");
|
|
57
58
|
const soroban_1 = require("./soroban");
|
|
58
59
|
const USDC_ISSUER = 'GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN';
|
|
59
60
|
const HORIZON_URL = 'https://horizon.stellar.org';
|
|
@@ -230,10 +231,15 @@ async function payViaContractOWS(opts) {
|
|
|
230
231
|
/** @deprecated Use `payViaContractOWS` — the old direct-Stellar path no longer matches the backend. */
|
|
231
232
|
exports.payVCCOWS = payViaContractOWS;
|
|
232
233
|
/**
|
|
233
|
-
* Full purchase flow using an OWS wallet: create order → pay
|
|
234
|
+
* Full purchase flow using an OWS wallet: create order → pay the receiver
|
|
235
|
+
* contract on Stellar → wait for card. Any failure after the order exists
|
|
236
|
+
* is wrapped as a ResumableError so the caller can retry via `--resume`
|
|
237
|
+
* without minting a new order.
|
|
234
238
|
*
|
|
235
|
-
*
|
|
236
|
-
*
|
|
239
|
+
* Soroban RPC backpressure is tolerated: if submitSorobanTx throws with a
|
|
240
|
+
* txHash attached (deadline reached but tx may still land), we proceed to
|
|
241
|
+
* waitForCard — the cards402 backend watcher is the source of truth and
|
|
242
|
+
* will credit the order when the tx finalizes.
|
|
237
243
|
*/
|
|
238
244
|
async function purchaseCardOWS(opts) {
|
|
239
245
|
const { Cards402Client } = await Promise.resolve().then(() => __importStar(require('./client')));
|
|
@@ -241,14 +247,35 @@ async function purchaseCardOWS(opts) {
|
|
|
241
247
|
const paymentAsset = opts.paymentAsset ?? 'usdc';
|
|
242
248
|
let orderId;
|
|
243
249
|
let payment;
|
|
250
|
+
let skipPayment = false;
|
|
244
251
|
if (opts.resume) {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
252
|
+
if (typeof opts.resume === 'string') {
|
|
253
|
+
orderId = opts.resume;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
orderId = opts.resume.orderId;
|
|
257
|
+
payment = opts.resume.payment;
|
|
258
|
+
}
|
|
259
|
+
// Check where the order is — if the payment already landed (or is
|
|
260
|
+
// landing), we can skip straight to waitForCard.
|
|
248
261
|
const status = await client.getOrder(orderId);
|
|
249
|
-
if (status.phase
|
|
250
|
-
|
|
251
|
-
|
|
262
|
+
if (status.phase === 'ready' && status.card) {
|
|
263
|
+
return { ...status.card, order_id: orderId };
|
|
264
|
+
}
|
|
265
|
+
if (status.phase === 'failed' ||
|
|
266
|
+
status.phase === 'refunded' ||
|
|
267
|
+
status.phase === 'rejected' ||
|
|
268
|
+
status.phase === 'expired') {
|
|
269
|
+
throw new errors_1.OrderFailedError(orderId, status.error ?? status.phase, status.refund);
|
|
270
|
+
}
|
|
271
|
+
// awaiting_payment — a previous submit may still be in flight. If the
|
|
272
|
+
// caller didn't hand us a fresh PaymentInstructions, just wait; the
|
|
273
|
+
// backend will pick the tx up when it finalizes, or the order will
|
|
274
|
+
// expire cleanly. Resubmitting without the original payment object
|
|
275
|
+
// risks double-paying if the original lands after all.
|
|
276
|
+
// processing / awaiting_approval — backend is working, just wait.
|
|
277
|
+
if (status.phase !== 'awaiting_payment' || !payment) {
|
|
278
|
+
skipPayment = true;
|
|
252
279
|
}
|
|
253
280
|
}
|
|
254
281
|
else {
|
|
@@ -256,45 +283,77 @@ async function purchaseCardOWS(opts) {
|
|
|
256
283
|
orderId = order.order_id;
|
|
257
284
|
payment = order.payment;
|
|
258
285
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
286
|
+
if (!skipPayment) {
|
|
287
|
+
if (!payment) {
|
|
288
|
+
// Unreachable: the resume branch sets skipPayment when payment is
|
|
289
|
+
// missing, and the create branch always sets payment.
|
|
290
|
+
throw new errors_1.ResumableError(orderId, 'internal: payment instructions missing for an unpaid order', 'unpaid');
|
|
291
|
+
}
|
|
292
|
+
// USDC payments need a trustline on the wallet's Stellar account. If the
|
|
293
|
+
// agent is paying in USDC and never added one, add it now so the
|
|
294
|
+
// purchase doesn't silently fail on the payment step.
|
|
295
|
+
if (paymentAsset === 'usdc') {
|
|
296
|
+
try {
|
|
297
|
+
const bal = await getOWSBalance(opts.walletName, opts.vaultPath);
|
|
298
|
+
if (bal.usdc === '0') {
|
|
299
|
+
const publicKey = getOWSPublicKey(opts.walletName, opts.vaultPath);
|
|
300
|
+
const server = new stellar_sdk_1.Horizon.Server(HORIZON_URL);
|
|
301
|
+
const account = await withTimeout(server.loadAccount(publicKey));
|
|
302
|
+
const hasTrustline = account.balances.some((b) => b.asset_type === 'credit_alphanum4' &&
|
|
303
|
+
b.asset_code === 'USDC' &&
|
|
304
|
+
b.asset_issuer === USDC_ISSUER);
|
|
305
|
+
if (!hasTrustline) {
|
|
306
|
+
await addUsdcTrustlineOWS({
|
|
307
|
+
walletName: opts.walletName,
|
|
308
|
+
passphrase: opts.passphrase,
|
|
309
|
+
vaultPath: opts.vaultPath,
|
|
310
|
+
networkPassphrase: opts.networkPassphrase,
|
|
311
|
+
});
|
|
312
|
+
}
|
|
282
313
|
}
|
|
283
314
|
}
|
|
315
|
+
catch (err) {
|
|
316
|
+
throw new errors_1.ResumableError(orderId, `failed to ensure USDC trustline: ${err instanceof Error ? err.message : String(err)}. The wallet needs at least 2 XLM (1 for the account reserve, 1 for the trustline)`, 'unpaid', undefined, err);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
try {
|
|
320
|
+
await payViaContractOWS({
|
|
321
|
+
walletName: opts.walletName,
|
|
322
|
+
payment,
|
|
323
|
+
paymentAsset,
|
|
324
|
+
passphrase: opts.passphrase,
|
|
325
|
+
vaultPath: opts.vaultPath,
|
|
326
|
+
networkPassphrase: opts.networkPassphrase,
|
|
327
|
+
});
|
|
284
328
|
}
|
|
285
329
|
catch (err) {
|
|
286
|
-
|
|
330
|
+
// submitSorobanTx attaches `txHash` to its error when the envelope
|
|
331
|
+
// has been accepted onto the network but we gave up waiting for
|
|
332
|
+
// finalization. In that case the cards402 backend watcher can
|
|
333
|
+
// still credit the order — fall through to waitForCard instead of
|
|
334
|
+
// failing the purchase.
|
|
335
|
+
const txHash = err?.txHash;
|
|
336
|
+
if (!txHash) {
|
|
337
|
+
throw new errors_1.ResumableError(orderId, err instanceof Error ? err.message : String(err), 'unpaid', undefined, err);
|
|
338
|
+
}
|
|
287
339
|
}
|
|
288
340
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
341
|
+
try {
|
|
342
|
+
const card = await client.waitForCard(orderId, opts.waitForCardOpts);
|
|
343
|
+
return { ...card, order_id: orderId };
|
|
344
|
+
}
|
|
345
|
+
catch (err) {
|
|
346
|
+
// OrderFailedError is terminal — propagate unchanged so the CLI
|
|
347
|
+
// surfaces the real reason instead of a misleading resume hint.
|
|
348
|
+
if (err instanceof errors_1.OrderFailedError)
|
|
349
|
+
throw err;
|
|
350
|
+
// Auth / budget / validation errors from the client are also terminal.
|
|
351
|
+
if (err instanceof errors_1.Cards402Error && err.code !== 'wait_timeout')
|
|
352
|
+
throw err;
|
|
353
|
+
// Everything else (network blip, SSE disconnect, wait_timeout) — wrap
|
|
354
|
+
// as resumable. The order is paid at this point; resuming will just
|
|
355
|
+
// re-attach to the stream.
|
|
356
|
+
throw new errors_1.ResumableError(orderId, err instanceof Error ? err.message : String(err), 'paid', undefined, err);
|
|
357
|
+
}
|
|
299
358
|
}
|
|
300
359
|
//# sourceMappingURL=ows.js.map
|
package/dist/ows.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ows.js","sourceRoot":"","sources":["../src/ows.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ows.js","sourceRoot":"","sources":["../src/ows.ts"],"names":[],"mappings":"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"}
|
package/dist/soroban.d.ts
CHANGED
|
@@ -27,6 +27,13 @@ export declare function buildContractPaymentTx(opts: BuildContractTxOpts): Promi
|
|
|
27
27
|
/**
|
|
28
28
|
* Submit a signed Soroban transaction and poll until it reaches a terminal
|
|
29
29
|
* status. Returns the transaction hash on success.
|
|
30
|
+
*
|
|
31
|
+
* Important: a successful return only guarantees the tx has been accepted
|
|
32
|
+
* onto the ledger. The cards402 backend's contract watcher is the source
|
|
33
|
+
* of truth for "the order has been credited" — the SDK's purchaseCardOWS
|
|
34
|
+
* always follows up with waitForCard against the order id, so even if
|
|
35
|
+
* this function gives up before finalization, the watcher still has a
|
|
36
|
+
* chance to credit the order if the tx eventually lands.
|
|
30
37
|
*/
|
|
31
38
|
export declare function submitSorobanTx(tx: Transaction, server: rpc.Server): Promise<string>;
|
|
32
39
|
/**
|
package/dist/soroban.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"soroban.d.ts","sourceRoot":"","sources":["../src/soroban.ts"],"names":[],"mappings":"AAKA,OAAO,EAOL,GAAG,EACH,GAAG,EACH,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAK9B,wBAAgB,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYxD;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,SAAS,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC;IAAE,EAAE,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAA;CAAE,CAAC,CA4BlD;AAED
|
|
1
|
+
{"version":3,"file":"soroban.d.ts","sourceRoot":"","sources":["../src/soroban.ts"],"names":[],"mappings":"AAKA,OAAO,EAOL,GAAG,EACH,GAAG,EACH,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAK9B,wBAAgB,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYxD;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,SAAS,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC;IAAE,EAAE,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAA;CAAE,CAAC,CA4BlD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA+G1F;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE;IAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,GAAG,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EAC/D,YAAY,EAAE,MAAM,GAAG,KAAK,GAC3B;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAQ1C;AAID,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
package/dist/soroban.js
CHANGED
|
@@ -62,16 +62,69 @@ async function buildContractPaymentTx(opts) {
|
|
|
62
62
|
/**
|
|
63
63
|
* Submit a signed Soroban transaction and poll until it reaches a terminal
|
|
64
64
|
* status. Returns the transaction hash on success.
|
|
65
|
+
*
|
|
66
|
+
* Important: a successful return only guarantees the tx has been accepted
|
|
67
|
+
* onto the ledger. The cards402 backend's contract watcher is the source
|
|
68
|
+
* of truth for "the order has been credited" — the SDK's purchaseCardOWS
|
|
69
|
+
* always follows up with waitForCard against the order id, so even if
|
|
70
|
+
* this function gives up before finalization, the watcher still has a
|
|
71
|
+
* chance to credit the order if the tx eventually lands.
|
|
65
72
|
*/
|
|
66
73
|
async function submitSorobanTx(tx, server) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
74
|
+
// sendTransaction is idempotent for the same envelope. Three cases we
|
|
75
|
+
// retry explicitly:
|
|
76
|
+
// - TRY_AGAIN_LATER: RPC is congested, re-send after a short wait
|
|
77
|
+
// - thrown network error (fetch/DNS/TCP): the request never reached
|
|
78
|
+
// the RPC, safe to retry
|
|
79
|
+
// - DUPLICATE is treated as "already in flight" — fall through to
|
|
80
|
+
// the polling loop below instead of looping forever
|
|
81
|
+
// Up to 5 total attempts with 1.5s spacing covers typical RPC drops.
|
|
82
|
+
const MAX_SEND_ATTEMPTS = 5;
|
|
83
|
+
let send;
|
|
84
|
+
let sendErr;
|
|
85
|
+
for (let attempt = 0; attempt < MAX_SEND_ATTEMPTS; attempt++) {
|
|
86
|
+
try {
|
|
87
|
+
send = await server.sendTransaction(tx);
|
|
88
|
+
if (send.status === 'TRY_AGAIN_LATER') {
|
|
89
|
+
if (attempt < MAX_SEND_ATTEMPTS - 1) {
|
|
90
|
+
await new Promise((r) => setTimeout(r, 1500));
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
throw new Error(`Soroban network congested — sendTransaction returned TRY_AGAIN_LATER after ${MAX_SEND_ATTEMPTS} attempts. Retry the purchase in a minute.`);
|
|
94
|
+
}
|
|
95
|
+
if (send.status === 'ERROR') {
|
|
96
|
+
throw new Error(`Soroban sendTransaction error: ${JSON.stringify(send.errorResult ?? send)}`);
|
|
97
|
+
}
|
|
98
|
+
// PENDING or DUPLICATE — envelope is now known to the network. Break
|
|
99
|
+
// out of the retry loop and poll for finalization.
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
sendErr = err;
|
|
104
|
+
// If the thrown error is structured (TRY_AGAIN_LATER, ERROR) let it
|
|
105
|
+
// propagate directly. Otherwise assume it was a transient network
|
|
106
|
+
// failure and retry.
|
|
107
|
+
if (err instanceof Error &&
|
|
108
|
+
(err.message.startsWith('Soroban network congested') ||
|
|
109
|
+
err.message.startsWith('Soroban sendTransaction error'))) {
|
|
110
|
+
throw err;
|
|
111
|
+
}
|
|
112
|
+
if (attempt >= MAX_SEND_ATTEMPTS - 1) {
|
|
113
|
+
throw new Error(`Soroban sendTransaction failed after ${MAX_SEND_ATTEMPTS} attempts: ${err?.message ?? String(err)}`);
|
|
114
|
+
}
|
|
115
|
+
await new Promise((r) => setTimeout(r, 1500));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (!send) {
|
|
119
|
+
throw new Error(`Soroban sendTransaction produced no result: ${sendErr?.message ?? 'unknown error'}`);
|
|
70
120
|
}
|
|
71
|
-
// Poll for
|
|
72
|
-
//
|
|
73
|
-
//
|
|
74
|
-
|
|
121
|
+
// Poll for finalization. 120s deadline (was 60s) so we don't bail on
|
|
122
|
+
// mainnet RPC under modest backpressure. Each poll is cheap; the cost
|
|
123
|
+
// of a longer wait is much less than the cost of a stranded order.
|
|
124
|
+
// Some stellar-sdk versions can't parse newer Soroban RPC response XDR
|
|
125
|
+
// ("Bad union switch: 4"); when that happens, fall back to Horizon.
|
|
126
|
+
const POLL_DEADLINE_MS = 120_000;
|
|
127
|
+
const deadline = Date.now() + POLL_DEADLINE_MS;
|
|
75
128
|
while (Date.now() < deadline) {
|
|
76
129
|
try {
|
|
77
130
|
const status = await server.getTransaction(send.hash);
|
|
@@ -114,7 +167,13 @@ async function submitSorobanTx(tx, server) {
|
|
|
114
167
|
catch {
|
|
115
168
|
/* ignore */
|
|
116
169
|
}
|
|
117
|
-
|
|
170
|
+
// Throw with the hash so the caller can recover if the tx eventually
|
|
171
|
+
// lands. purchaseCardOWS catches this and proceeds to waitForCard,
|
|
172
|
+
// which subscribes to the cards402 backend SSE and gets credit from
|
|
173
|
+
// the contract watcher even if Soroban RPC was slow to confirm.
|
|
174
|
+
const err = new Error(`Soroban transaction ${send.hash} did not finalize within ${POLL_DEADLINE_MS / 1000}s`);
|
|
175
|
+
err.txHash = send.hash;
|
|
176
|
+
throw err;
|
|
118
177
|
}
|
|
119
178
|
/**
|
|
120
179
|
* Decide which contract function + asset amount to use based on the
|
package/dist/soroban.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"soroban.js","sourceRoot":"","sources":["../src/soroban.ts"],"names":[],"mappings":";AAAA,4EAA4E;AAC5E,8EAA8E;AAC9E,2EAA2E;AAC3E,2DAA2D;;;AAiB3D,4CAEC;AAMD,4CAYC;AAmBD,wDA8BC;
|
|
1
|
+
{"version":3,"file":"soroban.js","sourceRoot":"","sources":["../src/soroban.ts"],"names":[],"mappings":"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"}
|