@obul.ai/obulx 0.2.0 → 0.2.2
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 +11 -2
- package/dist/args.d.ts +2 -3
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +15 -23
- package/dist/args.js.map +1 -1
- package/dist/cli.js +12 -4
- package/dist/cli.js.map +1 -1
- package/dist/lib.d.ts +0 -15
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +18 -272
- package/dist/lib.js.map +1 -1
- package/package.json +2 -5
package/README.md
CHANGED
|
@@ -7,6 +7,11 @@ Obul x402 CLI and library.
|
|
|
7
7
|
npm install -g @obul.ai/obulx
|
|
8
8
|
```
|
|
9
9
|
|
|
10
|
+
Direct x402 mode (non-proxy) requires installing the optional addon:
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g @obul.ai/obulx-x402
|
|
13
|
+
```
|
|
14
|
+
|
|
10
15
|
## What It Does
|
|
11
16
|
`obulx` is a CLI for calling x402-protected endpoints. It supports:
|
|
12
17
|
- Proxy mode (via Obul proxy) API key auth.
|
|
@@ -18,7 +23,7 @@ obulx [options] <url>
|
|
|
18
23
|
```
|
|
19
24
|
|
|
20
25
|
## Key Parameters
|
|
21
|
-
- `--obul-proxy <BASE>`: Enables proxy mode and rewrites the URL as `BASE/{scheme}/{host}{path}?{query}`.
|
|
26
|
+
- `--obul-proxy <BASE>`: Enables proxy mode and rewrites the URL as `BASE/{scheme}/{host}{path}?{query}`. Defaults to `OBUL_PROXY_URL` or `https://proxy.obul.ai/proxy`.
|
|
22
27
|
- `--network <NETWORK>`: Required for direct x402 mode. Repeatable or comma-separated.
|
|
23
28
|
- `--auto-approve-limit <N>`: Required for direct x402 mode. Integer string in token units.
|
|
24
29
|
- `--asset <ADDRESS>`: Optional in direct mode. Exact match (case-insensitive).
|
|
@@ -30,9 +35,10 @@ obulx [options] <url>
|
|
|
30
35
|
- `-vvv`: Also show probe request + response in direct x402 mode.
|
|
31
36
|
|
|
32
37
|
## Environment Variables
|
|
33
|
-
- `OBUL_PROXY_URL`:
|
|
38
|
+
- `OBUL_PROXY_URL`: Override proxy base (defaults to `https://proxy.obul.ai/proxy`).
|
|
34
39
|
- `OBUL_API_KEY`: API key for proxy mode.
|
|
35
40
|
- `OBUL_X402_PRIVATE_KEY`: Private signing key for direct x402 mode.
|
|
41
|
+
- `PRIVATE_KEY`: Fallback private key for direct x402 mode.
|
|
36
42
|
|
|
37
43
|
## Examples
|
|
38
44
|
|
|
@@ -55,6 +61,7 @@ obulx --obul-proxy https://proxy.devnet.obul.ai/proxy \
|
|
|
55
61
|
Direct x402 mode:
|
|
56
62
|
```bash
|
|
57
63
|
export OBUL_X402_PRIVATE_KEY="0x..."
|
|
64
|
+
npm install -g @obul.ai/obulx-x402
|
|
58
65
|
|
|
59
66
|
obulx --network base --auto-approve-limit 1000 \
|
|
60
67
|
https://x402.example.com/resource
|
|
@@ -63,6 +70,7 @@ obulx --network base --auto-approve-limit 1000 \
|
|
|
63
70
|
Direct mode with network priority and asset filter:
|
|
64
71
|
```bash
|
|
65
72
|
export OBUL_X402_PRIVATE_KEY="0x..."
|
|
73
|
+
npm install -g @obul.ai/obulx-x402
|
|
66
74
|
|
|
67
75
|
obulx --network base,optimism --asset 0xA0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 \
|
|
68
76
|
--auto-approve-limit 1000 \
|
|
@@ -77,6 +85,7 @@ obulx -vv --obul-proxy https://proxy.devnet.obul.ai/proxy \
|
|
|
77
85
|
|
|
78
86
|
Verbose output (probe + final in direct mode):
|
|
79
87
|
```bash
|
|
88
|
+
npm install -g @obul.ai/obulx-x402
|
|
80
89
|
obulx -vvv --network base --auto-approve-limit 1000 \
|
|
81
90
|
https://x402.example.com/resource
|
|
82
91
|
```
|
package/dist/args.d.ts
CHANGED
|
@@ -7,12 +7,11 @@ export type ParsedArgs = {
|
|
|
7
7
|
asset?: string;
|
|
8
8
|
autoApproveLimit?: string;
|
|
9
9
|
obulProxy?: string;
|
|
10
|
-
obulAccessToken?: string;
|
|
11
|
-
obulApiKey?: string;
|
|
12
10
|
verbose: number;
|
|
13
11
|
help: boolean;
|
|
12
|
+
version: boolean;
|
|
14
13
|
};
|
|
15
|
-
export declare const helpText = "obulx [options] <url>\n\nOptions:\n -X, --method <METHOD> HTTP method (default GET)\n -d, --data <BODY> request body; defaults method to POST if method not set\n -H, --header <NAME: VALUE> add a header (repeatable)\n --network <NETWORK> accepted network (repeatable or comma-separated)\n --asset <ADDRESS> required asset address (exact match, case-insensitive)\n --auto-approve-limit <N> auto-approve limit in token units, integer string\n --obul-proxy <BASE> proxy base
|
|
14
|
+
export declare const helpText = "obulx [options] <url>\n\nOptions:\n -X, --method <METHOD> HTTP method (default GET)\n -d, --data <BODY> request body; defaults method to POST if method not set\n -H, --header <NAME: VALUE> add a header (repeatable)\n --network <NETWORK> accepted network (repeatable or comma-separated)\n --asset <ADDRESS> required asset address (exact match, case-insensitive)\n --auto-approve-limit <N> auto-approve limit in token units, integer string\n --obul-proxy <BASE> proxy base (defaults to OBUL_PROXY_URL or https://proxy.obul.ai/proxy)\n -v, --verbose print final response status/headers\n -vv print final request + response\n -vvv also print x402 probe request/response when in direct mode\n --version show version\n -h, --help show usage\n";
|
|
16
15
|
export declare function parseNetworks(values: string[]): string[];
|
|
17
16
|
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
18
17
|
export declare function parseArgsWithDefaults(args: ParsedArgs): Required<Pick<ParsedArgs, "method" | "headers" | "networks" | "verbose">> & ParsedArgs;
|
package/dist/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,QAAQ,u5BAepB,CAAA;AAkBD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAOxD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAgGpD;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,GACf,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC,GAAG,UAAU,CASxF"}
|
package/dist/args.js
CHANGED
|
@@ -7,11 +7,11 @@ Options:
|
|
|
7
7
|
--network <NETWORK> accepted network (repeatable or comma-separated)
|
|
8
8
|
--asset <ADDRESS> required asset address (exact match, case-insensitive)
|
|
9
9
|
--auto-approve-limit <N> auto-approve limit in token units, integer string
|
|
10
|
-
--obul-proxy <BASE> proxy base
|
|
11
|
-
--obul-access-token <TOK> JWT access token for proxy mode (overrides env)
|
|
12
|
-
--obul-api-key <KEY> API key for proxy mode (overrides env)
|
|
10
|
+
--obul-proxy <BASE> proxy base (defaults to OBUL_PROXY_URL or https://proxy.obul.ai/proxy)
|
|
13
11
|
-v, --verbose print final response status/headers
|
|
14
|
-
-vv
|
|
12
|
+
-vv print final request + response
|
|
13
|
+
-vvv also print x402 probe request/response when in direct mode
|
|
14
|
+
--version show version
|
|
15
15
|
-h, --help show usage
|
|
16
16
|
`;
|
|
17
17
|
function parseHeader(raw) {
|
|
@@ -42,7 +42,8 @@ export function parseArgs(argv) {
|
|
|
42
42
|
headers: {},
|
|
43
43
|
networks: [],
|
|
44
44
|
verbose: 0,
|
|
45
|
-
help: false
|
|
45
|
+
help: false,
|
|
46
|
+
version: false
|
|
46
47
|
};
|
|
47
48
|
const args = [...argv];
|
|
48
49
|
while (args.length > 0) {
|
|
@@ -53,12 +54,17 @@ export function parseArgs(argv) {
|
|
|
53
54
|
result.help = true;
|
|
54
55
|
continue;
|
|
55
56
|
}
|
|
56
|
-
if (arg === "
|
|
57
|
-
result.
|
|
57
|
+
if (arg === "--version" || arg === "-V") {
|
|
58
|
+
result.version = true;
|
|
58
59
|
continue;
|
|
59
60
|
}
|
|
60
|
-
if (arg
|
|
61
|
-
|
|
61
|
+
if (/^-v+$/.test(arg)) {
|
|
62
|
+
const level = Math.min(3, arg.length - 1);
|
|
63
|
+
result.verbose = Math.max(result.verbose, level);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (arg === "--verbose") {
|
|
67
|
+
result.verbose = Math.min(3, result.verbose + 1);
|
|
62
68
|
continue;
|
|
63
69
|
}
|
|
64
70
|
if (arg === "-X" || arg === "--method") {
|
|
@@ -111,20 +117,6 @@ export function parseArgs(argv) {
|
|
|
111
117
|
result.obulProxy = value;
|
|
112
118
|
continue;
|
|
113
119
|
}
|
|
114
|
-
if (arg === "--obul-access-token") {
|
|
115
|
-
const value = args.shift();
|
|
116
|
-
if (!value)
|
|
117
|
-
throw new Error("Missing value for --obul-access-token");
|
|
118
|
-
result.obulAccessToken = value;
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
if (arg === "--obul-api-key") {
|
|
122
|
-
const value = args.shift();
|
|
123
|
-
if (!value)
|
|
124
|
-
throw new Error("Missing value for --obul-api-key");
|
|
125
|
-
result.obulApiKey = value;
|
|
126
|
-
continue;
|
|
127
|
-
}
|
|
128
120
|
if (arg.startsWith("-")) {
|
|
129
121
|
throw new Error(`Unknown flag: ${arg}`);
|
|
130
122
|
}
|
package/dist/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { createRequire } from "node:module";
|
|
2
3
|
import { obulxFetch } from "./lib.js";
|
|
3
4
|
import { helpText, parseArgs, parseArgsWithDefaults } from "./args.js";
|
|
4
5
|
async function main() {
|
|
5
6
|
try {
|
|
6
7
|
const parsed = parseArgs(process.argv.slice(2));
|
|
8
|
+
if (parsed.version) {
|
|
9
|
+
const require = createRequire(import.meta.url);
|
|
10
|
+
const pkg = require("../package.json");
|
|
11
|
+
process.stdout.write(`${pkg.version}\n`);
|
|
12
|
+
process.exit(0);
|
|
13
|
+
}
|
|
7
14
|
if (parsed.help) {
|
|
8
15
|
process.stderr.write(helpText);
|
|
9
16
|
process.exit(0);
|
|
@@ -15,9 +22,11 @@ async function main() {
|
|
|
15
22
|
if (!args.url) {
|
|
16
23
|
throw new Error("Missing URL");
|
|
17
24
|
}
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
|
|
25
|
+
const wantsDirect = args.networks.length > 0 && !args.obulProxy;
|
|
26
|
+
const obulProxy = wantsDirect
|
|
27
|
+
? undefined
|
|
28
|
+
: args.obulProxy ?? process.env.OBUL_PROXY_URL ?? "https://proxy.obul.ai/proxy";
|
|
29
|
+
const obulApiKey = process.env.OBUL_API_KEY;
|
|
21
30
|
const privateKey = process.env.OBUL_X402_PRIVATE_KEY ?? process.env.PRIVATE_KEY;
|
|
22
31
|
const response = await obulxFetch({
|
|
23
32
|
url: args.url,
|
|
@@ -28,7 +37,6 @@ async function main() {
|
|
|
28
37
|
asset: args.asset,
|
|
29
38
|
autoApproveLimit: args.autoApproveLimit,
|
|
30
39
|
obulProxy,
|
|
31
|
-
obulAccessToken,
|
|
32
40
|
obulApiKey,
|
|
33
41
|
verbose: args.verbose,
|
|
34
42
|
privateKey
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEtE,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA;QAChC,CAAC;QAED,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA;QAChC,CAAC;QACD,MAAM,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEtE,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;YACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,CAAA;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA;QAChC,CAAC;QAED,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA;QAChC,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;QAC/D,MAAM,SAAS,GAAG,WAAW;YAC3B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,6BAA6B,CAAA;QACjF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAA;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;QAE/E,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC;YAChC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,SAAS;YACT,UAAU;YACV,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU;SACX,CAAC,CAAA;QAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAA"}
|
package/dist/lib.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ export type ObulxFetchOptions = {
|
|
|
7
7
|
asset?: string;
|
|
8
8
|
autoApproveLimit?: string;
|
|
9
9
|
obulProxy?: string;
|
|
10
|
-
obulAccessToken?: string;
|
|
11
10
|
obulApiKey?: string;
|
|
12
11
|
verbose?: number;
|
|
13
12
|
privateKey?: string;
|
|
@@ -22,23 +21,9 @@ export type ObulxResponse = {
|
|
|
22
21
|
body: Uint8Array;
|
|
23
22
|
url: string;
|
|
24
23
|
};
|
|
25
|
-
type PaymentRequirement = {
|
|
26
|
-
scheme?: string;
|
|
27
|
-
network?: string;
|
|
28
|
-
asset?: string;
|
|
29
|
-
amount?: string | number;
|
|
30
|
-
maxAmountRequired?: string | number;
|
|
31
|
-
[key: string]: unknown;
|
|
32
|
-
};
|
|
33
24
|
export declare function buildProxyUrl(base: string, target: URL): string;
|
|
34
25
|
export declare function applyProxyAuth(headers: Headers, options: {
|
|
35
|
-
obulAccessToken?: string;
|
|
36
26
|
obulApiKey?: string;
|
|
37
27
|
}): void;
|
|
38
|
-
export declare function selectPaymentRequirement(input: unknown, options: {
|
|
39
|
-
networks?: string[];
|
|
40
|
-
asset?: string;
|
|
41
|
-
}): PaymentRequirement;
|
|
42
28
|
export declare function obulxFetch(options: ObulxFetchOptions): Promise<ObulxResponse>;
|
|
43
|
-
export {};
|
|
44
29
|
//# sourceMappingURL=lib.d.ts.map
|
package/dist/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAA;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAID,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,CAM/D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,QAWhF;AAsDD,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CAoCnF"}
|
package/dist/lib.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import { wrapFetchWithPayment } from "x402-fetch";
|
|
2
|
-
import { privateKeyToAccount } from "viem/accounts";
|
|
3
1
|
const REDACTED = "<redacted>";
|
|
4
|
-
const DEFAULT_MAX_VALUE = 10n ** 30n;
|
|
5
2
|
export function buildProxyUrl(base, target) {
|
|
6
3
|
const trimmed = base.replace(/\/+$/, "");
|
|
7
4
|
const scheme = target.protocol.replace(":", "");
|
|
@@ -10,163 +7,14 @@ export function buildProxyUrl(base, target) {
|
|
|
10
7
|
return `${trimmed}/${scheme}/${host}${path}${target.search}`;
|
|
11
8
|
}
|
|
12
9
|
export function applyProxyAuth(headers, options) {
|
|
13
|
-
if (
|
|
14
|
-
headers.set("Authorization", `Bearer ${options.obulAccessToken}`);
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
if (headers.get("authorization")) {
|
|
10
|
+
if (headers.get("authorization") || headers.get("x-obul-api-key")) {
|
|
18
11
|
return;
|
|
19
12
|
}
|
|
20
13
|
if (options.obulApiKey) {
|
|
21
14
|
headers.set("X-Obul-Api-Key", options.obulApiKey);
|
|
22
15
|
return;
|
|
23
16
|
}
|
|
24
|
-
throw new Error("Missing proxy auth: set
|
|
25
|
-
}
|
|
26
|
-
export function selectPaymentRequirement(input, options) {
|
|
27
|
-
const requirements = normalizeRequirements(input);
|
|
28
|
-
if (requirements.length === 0) {
|
|
29
|
-
throw new Error("No payment requirements available");
|
|
30
|
-
}
|
|
31
|
-
const asset = options.asset?.toLowerCase();
|
|
32
|
-
const filteredByAsset = asset
|
|
33
|
-
? requirements.filter((req) => (req.asset ?? "").toString().toLowerCase() === asset)
|
|
34
|
-
: requirements;
|
|
35
|
-
if (asset && filteredByAsset.length === 0) {
|
|
36
|
-
throw new Error(`No payment requirements matched asset ${options.asset}`);
|
|
37
|
-
}
|
|
38
|
-
if (options.networks && options.networks.length > 0) {
|
|
39
|
-
for (const network of options.networks) {
|
|
40
|
-
const match = filteredByAsset.find((req) => matchesNetwork(req, network));
|
|
41
|
-
if (match)
|
|
42
|
-
return match;
|
|
43
|
-
}
|
|
44
|
-
throw new Error(`No payment requirements matched networks: ${options.networks.join(", ")}`);
|
|
45
|
-
}
|
|
46
|
-
return filteredByAsset[0];
|
|
47
|
-
}
|
|
48
|
-
function matchesNetwork(requirement, network) {
|
|
49
|
-
const target = network.toLowerCase();
|
|
50
|
-
const requirementNetwork = extractNetwork(requirement);
|
|
51
|
-
if (!requirementNetwork)
|
|
52
|
-
return false;
|
|
53
|
-
return requirementNetwork.toLowerCase() === target;
|
|
54
|
-
}
|
|
55
|
-
function extractNetwork(requirement) {
|
|
56
|
-
const network = requirement.network;
|
|
57
|
-
if (typeof network === "string")
|
|
58
|
-
return network;
|
|
59
|
-
if (typeof network === "number")
|
|
60
|
-
return String(network);
|
|
61
|
-
if (typeof network === "object" && network !== null) {
|
|
62
|
-
const value = network.id;
|
|
63
|
-
if (typeof value === "string")
|
|
64
|
-
return value;
|
|
65
|
-
if (typeof value === "number")
|
|
66
|
-
return String(value);
|
|
67
|
-
}
|
|
68
|
-
return undefined;
|
|
69
|
-
}
|
|
70
|
-
function normalizeRequirements(input) {
|
|
71
|
-
if (!input)
|
|
72
|
-
return [];
|
|
73
|
-
if (Array.isArray(input)) {
|
|
74
|
-
return input.flatMap((item) => normalizeRequirements(item));
|
|
75
|
-
}
|
|
76
|
-
if (typeof input !== "object")
|
|
77
|
-
return [];
|
|
78
|
-
const obj = input;
|
|
79
|
-
if ("paymentRequirements" in obj) {
|
|
80
|
-
return normalizeRequirements(obj.paymentRequirements);
|
|
81
|
-
}
|
|
82
|
-
if ("accepts" in obj) {
|
|
83
|
-
return normalizeRequirements(obj.accepts);
|
|
84
|
-
}
|
|
85
|
-
if ("paymentRequired" in obj) {
|
|
86
|
-
return normalizeRequirements(obj.paymentRequired);
|
|
87
|
-
}
|
|
88
|
-
if ("payment_required" in obj) {
|
|
89
|
-
return normalizeRequirements(obj.payment_required);
|
|
90
|
-
}
|
|
91
|
-
if ("requirements" in obj) {
|
|
92
|
-
return normalizeRequirements(obj.requirements);
|
|
93
|
-
}
|
|
94
|
-
if (looksLikeRequirement(obj)) {
|
|
95
|
-
return [obj];
|
|
96
|
-
}
|
|
97
|
-
return [];
|
|
98
|
-
}
|
|
99
|
-
function looksLikeRequirement(obj) {
|
|
100
|
-
return "scheme" in obj || "network" in obj || "asset" in obj || "amount" in obj;
|
|
101
|
-
}
|
|
102
|
-
function parseAmount(requirement) {
|
|
103
|
-
const value = requirement.amount ?? requirement.maxAmountRequired;
|
|
104
|
-
if (typeof value === "number" && Number.isFinite(value)) {
|
|
105
|
-
return { raw: String(value), number: value };
|
|
106
|
-
}
|
|
107
|
-
if (typeof value === "string") {
|
|
108
|
-
const trimmed = value.trim();
|
|
109
|
-
if (/^\d+$/.test(trimmed)) {
|
|
110
|
-
try {
|
|
111
|
-
return { raw: trimmed, bigint: BigInt(trimmed) };
|
|
112
|
-
}
|
|
113
|
-
catch {
|
|
114
|
-
return { raw: trimmed };
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
const asNumber = Number(trimmed);
|
|
118
|
-
if (Number.isFinite(asNumber)) {
|
|
119
|
-
return { raw: trimmed, number: asNumber };
|
|
120
|
-
}
|
|
121
|
-
return { raw: trimmed };
|
|
122
|
-
}
|
|
123
|
-
return { raw: "" };
|
|
124
|
-
}
|
|
125
|
-
function parseLimit(limit) {
|
|
126
|
-
if (limit == null)
|
|
127
|
-
return undefined;
|
|
128
|
-
if (!/^\d+$/.test(limit.trim())) {
|
|
129
|
-
throw new Error("--auto-approve-limit must be an integer string");
|
|
130
|
-
}
|
|
131
|
-
return BigInt(limit.trim());
|
|
132
|
-
}
|
|
133
|
-
function normalizePrivateKey(key) {
|
|
134
|
-
const trimmed = key.trim();
|
|
135
|
-
if (trimmed.startsWith("0x"))
|
|
136
|
-
return trimmed;
|
|
137
|
-
return `0x${trimmed}`;
|
|
138
|
-
}
|
|
139
|
-
async function confirmPayment(requirement, options) {
|
|
140
|
-
const isTTY = Boolean(options.stdin.isTTY);
|
|
141
|
-
if (!isTTY) {
|
|
142
|
-
throw new Error("Payment requires confirmation but stdin is not interactive");
|
|
143
|
-
}
|
|
144
|
-
const { stderr, stdin } = options;
|
|
145
|
-
const amount = parseAmount(requirement);
|
|
146
|
-
const displayAmount = amount.raw || "unknown";
|
|
147
|
-
const asset = requirement.asset ?? "unknown";
|
|
148
|
-
return new Promise((resolve) => {
|
|
149
|
-
stderr.write(`Approve payment of ${displayAmount} ${asset}? [y/N]: `);
|
|
150
|
-
let buffer = "";
|
|
151
|
-
const onData = (chunk) => {
|
|
152
|
-
buffer += chunk.toString();
|
|
153
|
-
if (!buffer.includes("\n"))
|
|
154
|
-
return;
|
|
155
|
-
cleanup();
|
|
156
|
-
const answer = buffer.trim().toLowerCase();
|
|
157
|
-
resolve(answer === "y" || answer === "yes");
|
|
158
|
-
};
|
|
159
|
-
const onEnd = () => {
|
|
160
|
-
cleanup();
|
|
161
|
-
resolve(false);
|
|
162
|
-
};
|
|
163
|
-
const cleanup = () => {
|
|
164
|
-
stdin.off("data", onData);
|
|
165
|
-
stdin.off("end", onEnd);
|
|
166
|
-
};
|
|
167
|
-
stdin.on("data", onData);
|
|
168
|
-
stdin.on("end", onEnd);
|
|
169
|
-
});
|
|
17
|
+
throw new Error("Missing proxy auth: set OBUL_API_KEY.");
|
|
170
18
|
}
|
|
171
19
|
function redactHeaders(headers) {
|
|
172
20
|
const lines = [];
|
|
@@ -207,144 +55,42 @@ async function toResponseLike(response) {
|
|
|
207
55
|
url: response.url
|
|
208
56
|
};
|
|
209
57
|
}
|
|
210
|
-
async function
|
|
211
|
-
const header = response.headers.get("payment-required") ?? response.headers.get("x-payment-required");
|
|
212
|
-
if (header) {
|
|
213
|
-
const fromHeader = parsePaymentRequiredHeader(header);
|
|
214
|
-
if (fromHeader) {
|
|
215
|
-
return { raw: fromHeader, requirements: normalizeRequirements(fromHeader) };
|
|
216
|
-
}
|
|
217
|
-
}
|
|
58
|
+
async function loadDirect() {
|
|
218
59
|
try {
|
|
219
|
-
const
|
|
220
|
-
return
|
|
60
|
+
const moduleName = "@obul.ai/obulx-x402";
|
|
61
|
+
return await import(/* @vite-ignore */ moduleName);
|
|
221
62
|
}
|
|
222
63
|
catch {
|
|
223
|
-
|
|
64
|
+
throw new Error("Direct x402 mode requires @obul.ai/obulx-x402. Install it and retry.");
|
|
224
65
|
}
|
|
225
66
|
}
|
|
226
|
-
function parsePaymentRequiredHeader(header) {
|
|
227
|
-
const trimmed = header.trim();
|
|
228
|
-
if (!trimmed)
|
|
229
|
-
return undefined;
|
|
230
|
-
try {
|
|
231
|
-
return JSON.parse(trimmed);
|
|
232
|
-
}
|
|
233
|
-
catch {
|
|
234
|
-
try {
|
|
235
|
-
const decoded = Buffer.from(trimmed, "base64").toString("utf8");
|
|
236
|
-
return JSON.parse(decoded);
|
|
237
|
-
}
|
|
238
|
-
catch {
|
|
239
|
-
return undefined;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
function createProbeFetch(fetcher, probe) {
|
|
244
|
-
let used = false;
|
|
245
|
-
return async (input, init) => {
|
|
246
|
-
if (!used) {
|
|
247
|
-
used = true;
|
|
248
|
-
return probe;
|
|
249
|
-
}
|
|
250
|
-
return fetcher(input, init);
|
|
251
|
-
};
|
|
252
|
-
}
|
|
253
|
-
function pickMatchingRequirement(requirements, selected) {
|
|
254
|
-
if (requirements.length === 0) {
|
|
255
|
-
throw new Error("No payment requirements available");
|
|
256
|
-
}
|
|
257
|
-
const selectedAmount = selected.amount ?? selected.maxAmountRequired;
|
|
258
|
-
const matches = requirements.filter((req) => {
|
|
259
|
-
const sameNetwork = selected.network ? matchesNetwork(req, selected.network) : true;
|
|
260
|
-
const sameAsset = selected.asset
|
|
261
|
-
? (req.asset ?? "").toString().toLowerCase() === selected.asset.toString().toLowerCase()
|
|
262
|
-
: true;
|
|
263
|
-
const reqAmount = req.amount ?? req.maxAmountRequired;
|
|
264
|
-
const sameAmount = selectedAmount != null ? String(reqAmount ?? "") === String(selectedAmount) : true;
|
|
265
|
-
return sameNetwork && sameAsset && sameAmount;
|
|
266
|
-
});
|
|
267
|
-
return matches[0] ?? requirements[0];
|
|
268
|
-
}
|
|
269
67
|
export async function obulxFetch(options) {
|
|
68
|
+
if (!options.obulProxy) {
|
|
69
|
+
const direct = await loadDirect();
|
|
70
|
+
return direct.obulxFetchDirect(options);
|
|
71
|
+
}
|
|
270
72
|
const fetcher = options.fetch ?? globalThis.fetch;
|
|
271
73
|
if (!fetcher) {
|
|
272
74
|
throw new Error("fetch is not available in this environment");
|
|
273
75
|
}
|
|
274
76
|
const stderr = options.stderr ?? process.stderr;
|
|
275
|
-
const stdin = options.stdin ?? process.stdin;
|
|
276
77
|
const method = options.method ?? (options.body ? "POST" : "GET");
|
|
277
78
|
const headers = new Headers(options.headers ?? {});
|
|
278
79
|
const verbose = options.verbose ?? 0;
|
|
279
80
|
const requestUrl = new URL(options.url);
|
|
280
|
-
const
|
|
81
|
+
const proxyUrl = buildProxyUrl(options.obulProxy, requestUrl);
|
|
82
|
+
applyProxyAuth(headers, { obulApiKey: options.obulApiKey });
|
|
83
|
+
if (verbose >= 2) {
|
|
84
|
+
logRequest(method, proxyUrl, headers, stderr, "final request");
|
|
85
|
+
}
|
|
86
|
+
const response = await fetcher(proxyUrl, {
|
|
281
87
|
method,
|
|
282
88
|
headers,
|
|
283
89
|
body: options.body
|
|
284
|
-
};
|
|
285
|
-
if (options.obulProxy) {
|
|
286
|
-
const proxyUrl = buildProxyUrl(options.obulProxy, requestUrl);
|
|
287
|
-
applyProxyAuth(headers, { obulAccessToken: options.obulAccessToken, obulApiKey: options.obulApiKey });
|
|
288
|
-
const response = await fetcher(proxyUrl, init);
|
|
289
|
-
if (verbose >= 1) {
|
|
290
|
-
logResponse(response, stderr);
|
|
291
|
-
}
|
|
292
|
-
return toResponseLike(response);
|
|
293
|
-
}
|
|
294
|
-
if (!options.networks || options.networks.length === 0) {
|
|
295
|
-
throw new Error("--network is required for direct x402 mode");
|
|
296
|
-
}
|
|
297
|
-
const limit = parseLimit(options.autoApproveLimit);
|
|
298
|
-
if (!limit) {
|
|
299
|
-
throw new Error("--auto-approve-limit is required for direct x402 mode");
|
|
300
|
-
}
|
|
301
|
-
const privateKey = options.privateKey;
|
|
302
|
-
if (!privateKey) {
|
|
303
|
-
throw new Error("Missing private key: set OBUL_X402_PRIVATE_KEY or PRIVATE_KEY");
|
|
304
|
-
}
|
|
305
|
-
const probe = await fetcher(requestUrl.toString(), init);
|
|
306
|
-
if (verbose >= 2) {
|
|
307
|
-
logRequest(method, requestUrl.toString(), headers, stderr, "probe request");
|
|
308
|
-
logResponse(probe, stderr, "probe response");
|
|
309
|
-
}
|
|
310
|
-
if (probe.status !== 402) {
|
|
311
|
-
if (verbose >= 1) {
|
|
312
|
-
logResponse(probe, stderr);
|
|
313
|
-
}
|
|
314
|
-
return toResponseLike(probe);
|
|
315
|
-
}
|
|
316
|
-
const parsed = await parsePaymentRequired(probe.clone());
|
|
317
|
-
if (parsed.requirements.length === 0) {
|
|
318
|
-
throw new Error("Received 402 but could not parse payment requirements");
|
|
319
|
-
}
|
|
320
|
-
const selected = selectPaymentRequirement(parsed.raw ?? parsed.requirements, {
|
|
321
|
-
networks: options.networks,
|
|
322
|
-
asset: options.asset
|
|
323
90
|
});
|
|
324
|
-
const amount = parseAmount(selected);
|
|
325
|
-
if (amount.bigint != null) {
|
|
326
|
-
if (amount.bigint > limit) {
|
|
327
|
-
const approved = await confirmPayment(selected, { stderr, stdin });
|
|
328
|
-
if (!approved)
|
|
329
|
-
throw new Error("Payment declined");
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
else if (amount.number != null) {
|
|
333
|
-
const limitNumber = Number(limit);
|
|
334
|
-
if (Number.isFinite(limitNumber) && amount.number > limitNumber) {
|
|
335
|
-
const approved = await confirmPayment(selected, { stderr, stdin });
|
|
336
|
-
if (!approved)
|
|
337
|
-
throw new Error("Payment declined");
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
const account = privateKeyToAccount(normalizePrivateKey(privateKey));
|
|
341
|
-
const fetchWithProbe = createProbeFetch(fetcher, probe);
|
|
342
|
-
const selector = (requirements) => pickMatchingRequirement(requirements, selected);
|
|
343
|
-
const fetchWithPayment = wrapFetchWithPayment(fetchWithProbe, account, DEFAULT_MAX_VALUE, selector);
|
|
344
|
-
const paidResponse = await fetchWithPayment(requestUrl.toString(), init);
|
|
345
91
|
if (verbose >= 1) {
|
|
346
|
-
logResponse(
|
|
92
|
+
logResponse(response, stderr, verbose >= 2 ? "final response" : undefined);
|
|
347
93
|
}
|
|
348
|
-
return toResponseLike(
|
|
94
|
+
return toResponseLike(response);
|
|
349
95
|
}
|
|
350
96
|
//# sourceMappingURL=lib.js.map
|
package/dist/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@obul.ai/obulx",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Obul x402 CLI and library.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -17,10 +17,7 @@
|
|
|
17
17
|
"build": "tsc -p tsconfig.json",
|
|
18
18
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
19
19
|
},
|
|
20
|
-
"dependencies": {
|
|
21
|
-
"x402-fetch": "^0.6.0",
|
|
22
|
-
"viem": "^2.21.26"
|
|
23
|
-
},
|
|
20
|
+
"dependencies": {},
|
|
24
21
|
"devDependencies": {
|
|
25
22
|
"@types/node": "^20.11.30"
|
|
26
23
|
}
|