run402-mcp 4.120.0 → 4.121.0
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/core/dist/profiles.d.ts +2 -0
- package/core/dist/profiles.d.ts.map +1 -1
- package/core/dist/profiles.js.map +1 -1
- package/core/dist/wallet-auth.d.ts +30 -0
- package/core/dist/wallet-auth.d.ts.map +1 -1
- package/core/dist/wallet-auth.js +77 -38
- package/core/dist/wallet-auth.js.map +1 -1
- package/core/dist/wallet.d.ts +22 -1
- package/core/dist/wallet.d.ts.map +1 -1
- package/core/dist/wallet.js +21 -0
- package/core/dist/wallet.js.map +1 -1
- package/dist/docs/llms-sdk.txt +3 -3
- package/dist/wallet-auth.d.ts +4 -2
- package/dist/wallet-auth.d.ts.map +1 -1
- package/dist/wallet-auth.js +6 -1
- package/dist/wallet-auth.js.map +1 -1
- package/package.json +2 -1
- package/sdk/README.md +1 -1
- package/sdk/core-dist/profiles.d.ts +2 -0
- package/sdk/core-dist/wallet-auth.d.ts +30 -0
- package/sdk/core-dist/wallet-auth.js +77 -38
- package/sdk/core-dist/wallet.d.ts +22 -1
- package/sdk/core-dist/wallet.js +21 -0
- package/sdk/dist/credentials.d.ts +15 -1
- package/sdk/dist/credentials.d.ts.map +1 -1
- package/sdk/dist/errors.d.ts +14 -0
- package/sdk/dist/errors.d.ts.map +1 -1
- package/sdk/dist/errors.js +22 -0
- package/sdk/dist/errors.js.map +1 -1
- package/sdk/dist/index.d.ts +1 -1
- package/sdk/dist/index.d.ts.map +1 -1
- package/sdk/dist/index.js +1 -1
- package/sdk/dist/index.js.map +1 -1
- package/sdk/dist/node/_paid-stack.d.ts +18 -0
- package/sdk/dist/node/_paid-stack.d.ts.map +1 -1
- package/sdk/dist/node/_paid-stack.js +19 -0
- package/sdk/dist/node/_paid-stack.js.map +1 -1
- package/sdk/dist/node/ci.d.ts +1 -1
- package/sdk/dist/node/ci.d.ts.map +1 -1
- package/sdk/dist/node/ci.js +8 -6
- package/sdk/dist/node/ci.js.map +1 -1
- package/sdk/dist/node/credentials.d.ts.map +1 -1
- package/sdk/dist/node/credentials.js +5 -4
- package/sdk/dist/node/credentials.js.map +1 -1
- package/sdk/dist/node/index.d.ts +2 -1
- package/sdk/dist/node/index.d.ts.map +1 -1
- package/sdk/dist/node/index.js +2 -1
- package/sdk/dist/node/index.js.map +1 -1
- package/sdk/dist/node/org-adopt.d.ts +1 -1
- package/sdk/dist/node/org-adopt.d.ts.map +1 -1
- package/sdk/dist/node/org-adopt.js +9 -7
- package/sdk/dist/node/org-adopt.js.map +1 -1
- package/sdk/dist/node/paid-fetch.d.ts.map +1 -1
- package/sdk/dist/node/paid-fetch.js +6 -4
- package/sdk/dist/node/paid-fetch.js.map +1 -1
- package/sdk/dist/node/signers/index.d.ts +26 -0
- package/sdk/dist/node/signers/index.d.ts.map +1 -0
- package/sdk/dist/node/signers/index.js +35 -0
- package/sdk/dist/node/signers/index.js.map +1 -0
- package/sdk/dist/node/signers/kms.d.ts +54 -0
- package/sdk/dist/node/signers/kms.d.ts.map +1 -0
- package/sdk/dist/node/signers/kms.js +236 -0
- package/sdk/dist/node/signers/kms.js.map +1 -0
- package/sdk/dist/node/wallets-send.d.ts +62 -0
- package/sdk/dist/node/wallets-send.d.ts.map +1 -0
- package/sdk/dist/node/wallets-send.js +149 -0
- package/sdk/dist/node/wallets-send.js.map +1 -0
- package/sdk/dist/node/wallets.d.ts +33 -5
- package/sdk/dist/node/wallets.d.ts.map +1 -1
- package/sdk/dist/node/wallets.js +78 -12
- package/sdk/dist/node/wallets.js.map +1 -1
- package/sdk/dist/secret-gate.d.ts +1 -1
- package/sdk/dist/secret-gate.d.ts.map +1 -1
- package/sdk/dist/secret-gate.js +7 -2
- package/sdk/dist/secret-gate.js.map +1 -1
package/core/dist/profiles.d.ts
CHANGED
|
@@ -24,6 +24,8 @@ export interface ProfileMeta {
|
|
|
24
24
|
label?: string | null;
|
|
25
25
|
rail?: "x402" | "mpp";
|
|
26
26
|
created?: string;
|
|
27
|
+
/** How the wallet signs: a local key, or a signer reference (an AWS KMS key). Absent means local. */
|
|
28
|
+
signer?: "local" | "aws_kms";
|
|
27
29
|
}
|
|
28
30
|
export declare function readBaseConfig(): BaseConfig;
|
|
29
31
|
export declare function writeBaseConfig(cfg: BaseConfig): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAwBH,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAwBH,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qGAAqG;IACrG,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B;AAqBD,wBAAgB,cAAc,IAAI,UAAU,CAU3C;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAErD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAGzC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAInD;AAID,sFAAsF;AACtF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBrD;AAMD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAUzD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAG/D;AAID,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAc3C;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKhD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA0CpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,MAAM,GACP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,12 +25,42 @@ export interface SIWxAuthOptions extends SIWEMessageOpts {
|
|
|
25
25
|
wallet: Pick<WalletData, "address" | "privateKey">;
|
|
26
26
|
type?: "eip191";
|
|
27
27
|
}
|
|
28
|
+
/** Signs an EIP-191 personal message for `address`; resolves to a 65-byte 0x hex signature. */
|
|
29
|
+
export type PersonalMessageSigner = (message: string) => Promise<string>;
|
|
30
|
+
/**
|
|
31
|
+
* A SIWX header waiting for its signature: `message` is the exact EIP-4361
|
|
32
|
+
* text to sign (EIP-191), `finish` turns the signature into the header. This
|
|
33
|
+
* is how a signer-backed wallet, whose signature is asynchronous, signs in.
|
|
34
|
+
*/
|
|
35
|
+
export interface PreparedSIWx {
|
|
36
|
+
message: string;
|
|
37
|
+
finish(signature: string): SIWxAuthHeaders;
|
|
38
|
+
}
|
|
39
|
+
export declare function prepareSIWx(opts: SIWEMessageOpts & {
|
|
40
|
+
address: string;
|
|
41
|
+
type?: "eip191";
|
|
42
|
+
}): PreparedSIWx;
|
|
28
43
|
/**
|
|
29
44
|
* Format an EIP-4361 (SIWE) message. Must be byte-for-byte compatible
|
|
30
45
|
* with the `siwe` library's message format used server-side for verification.
|
|
31
46
|
*/
|
|
32
47
|
export declare function formatSIWEMessage(opts: SIWEMessageOpts, address: string): string;
|
|
48
|
+
/** SIWX headers signed with a local private key (synchronous). */
|
|
33
49
|
export declare function buildSIWxAuthHeaders(opts: SIWxAuthOptions): SIWxAuthHeaders;
|
|
50
|
+
/**
|
|
51
|
+
* Thrown where a synchronous signature is required but the wallet signs
|
|
52
|
+
* through a signer (`wallet.json` `signer`). Callers that can wait use
|
|
53
|
+
* `getWalletAuthHeadersAsync` with the SDK's signer instead.
|
|
54
|
+
*/
|
|
55
|
+
export declare class SignerWalletError extends Error {
|
|
56
|
+
readonly code = "SIGNER_WALLET_ASYNC";
|
|
57
|
+
constructor();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* SIWX headers for any wallet: a key-backed wallet signs locally; a
|
|
61
|
+
* signer-backed one through `signerFor(wallet)`. Null when no wallet exists.
|
|
62
|
+
*/
|
|
63
|
+
export declare function getWalletAuthHeadersAsync(path: string, walletPath: string | undefined, signerFor: (wallet: WalletData) => Promise<PersonalMessageSigner>): Promise<SIWxAuthHeaders | null>;
|
|
34
64
|
/**
|
|
35
65
|
* Get SIWX auth headers for the Run402 API.
|
|
36
66
|
* Returns null if no local wallet is configured.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-auth.d.ts","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQzD;AA4CD,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAsBhF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"wallet-auth.d.ts","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQzD;AA4CD,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,+FAA+F;AAC/F,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEzE;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC;CAC5C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;CAAE,GAAG,YAAY,CA0BtG;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAsBhF;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAM3E;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,yBAAyB;;CAKvC;AAiBD;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,qBAAqB,CAAC,GAChE,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAOjC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAW9F"}
|
package/core/dist/wallet-auth.js
CHANGED
|
@@ -6,7 +6,7 @@ import { randomBytes } from "node:crypto";
|
|
|
6
6
|
import { secp256k1 } from "@noble/curves/secp256k1.js";
|
|
7
7
|
import { keccak_256 } from "@noble/hashes/sha3.js";
|
|
8
8
|
import { bytesToHex } from "@noble/hashes/utils.js";
|
|
9
|
-
import { readWallet } from "./wallet.js";
|
|
9
|
+
import { isSignerWallet, readWallet } from "./wallet.js";
|
|
10
10
|
import { getApiBase } from "./config.js";
|
|
11
11
|
/**
|
|
12
12
|
* EIP-55 mixed-case checksum encoding.
|
|
@@ -57,6 +57,33 @@ function personalSign(privateKeyHex, address, message) {
|
|
|
57
57
|
const vHex = (recovery + 27).toString(16).padStart(2, "0");
|
|
58
58
|
return "0x" + r + s + vHex;
|
|
59
59
|
}
|
|
60
|
+
export function prepareSIWx(opts) {
|
|
61
|
+
const message = formatSIWEMessage(opts, opts.address);
|
|
62
|
+
return {
|
|
63
|
+
message,
|
|
64
|
+
finish(signature) {
|
|
65
|
+
const payload = {
|
|
66
|
+
domain: opts.domain,
|
|
67
|
+
address: toChecksumAddress(opts.address),
|
|
68
|
+
statement: opts.statement,
|
|
69
|
+
uri: opts.uri,
|
|
70
|
+
version: opts.version ?? "1",
|
|
71
|
+
chainId: payloadChainId(opts.chainId),
|
|
72
|
+
type: opts.type ?? "eip191",
|
|
73
|
+
nonce: opts.nonce,
|
|
74
|
+
issuedAt: opts.issuedAt,
|
|
75
|
+
expirationTime: opts.expirationTime,
|
|
76
|
+
signature,
|
|
77
|
+
};
|
|
78
|
+
if (opts.resources !== undefined) {
|
|
79
|
+
payload.resources = opts.resources;
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
"SIGN-IN-WITH-X": Buffer.from(JSON.stringify(payload)).toString("base64"),
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
60
87
|
/**
|
|
61
88
|
* Format an EIP-4361 (SIWE) message. Must be byte-for-byte compatible
|
|
62
89
|
* with the `siwe` library's message format used server-side for verification.
|
|
@@ -85,29 +112,54 @@ export function formatSIWEMessage(opts, address) {
|
|
|
85
112
|
}
|
|
86
113
|
return lines.join("\n");
|
|
87
114
|
}
|
|
115
|
+
/** SIWX headers signed with a local private key (synchronous). */
|
|
88
116
|
export function buildSIWxAuthHeaders(opts) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const payload = {
|
|
92
|
-
domain: opts.domain,
|
|
93
|
-
address: toChecksumAddress(opts.wallet.address),
|
|
94
|
-
statement: opts.statement,
|
|
95
|
-
uri: opts.uri,
|
|
96
|
-
version: opts.version ?? "1",
|
|
97
|
-
chainId: payloadChainId(opts.chainId),
|
|
98
|
-
type: opts.type ?? "eip191",
|
|
99
|
-
nonce: opts.nonce,
|
|
100
|
-
issuedAt: opts.issuedAt,
|
|
101
|
-
expirationTime: opts.expirationTime,
|
|
102
|
-
signature,
|
|
103
|
-
};
|
|
104
|
-
if (opts.resources !== undefined) {
|
|
105
|
-
payload.resources = opts.resources;
|
|
117
|
+
if (!opts.wallet.privateKey) {
|
|
118
|
+
throw new SignerWalletError();
|
|
106
119
|
}
|
|
120
|
+
const prepared = prepareSIWx({ ...opts, address: opts.wallet.address });
|
|
121
|
+
return prepared.finish(personalSign(opts.wallet.privateKey, opts.wallet.address, prepared.message));
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Thrown where a synchronous signature is required but the wallet signs
|
|
125
|
+
* through a signer (`wallet.json` `signer`). Callers that can wait use
|
|
126
|
+
* `getWalletAuthHeadersAsync` with the SDK's signer instead.
|
|
127
|
+
*/
|
|
128
|
+
export class SignerWalletError extends Error {
|
|
129
|
+
code = "SIGNER_WALLET_ASYNC";
|
|
130
|
+
constructor() {
|
|
131
|
+
super("This wallet signs through a signer (wallet.json 'signer'), which this synchronous path cannot use.");
|
|
132
|
+
this.name = "SignerWalletError";
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
function walletSIWxOptions(path) {
|
|
136
|
+
const apiBase = getApiBase();
|
|
137
|
+
const url = new URL(apiBase);
|
|
138
|
+
const now = new Date();
|
|
107
139
|
return {
|
|
108
|
-
|
|
140
|
+
domain: url.hostname,
|
|
141
|
+
uri: `${apiBase}${path}`,
|
|
142
|
+
statement: "Sign in to Run402",
|
|
143
|
+
chainId: "eip155:84532",
|
|
144
|
+
nonce: randomBytes(16).toString("hex"),
|
|
145
|
+
issuedAt: now.toISOString(),
|
|
146
|
+
expirationTime: new Date(now.getTime() + 5 * 60 * 1000).toISOString(),
|
|
109
147
|
};
|
|
110
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* SIWX headers for any wallet: a key-backed wallet signs locally; a
|
|
151
|
+
* signer-backed one through `signerFor(wallet)`. Null when no wallet exists.
|
|
152
|
+
*/
|
|
153
|
+
export async function getWalletAuthHeadersAsync(path, walletPath, signerFor) {
|
|
154
|
+
const localWallet = readWallet(walletPath);
|
|
155
|
+
if (!localWallet || !localWallet.address)
|
|
156
|
+
return null;
|
|
157
|
+
if (!isSignerWallet(localWallet))
|
|
158
|
+
return getWalletAuthHeaders(path, walletPath);
|
|
159
|
+
const prepared = prepareSIWx({ ...walletSIWxOptions(path), address: localWallet.address });
|
|
160
|
+
const sign = await signerFor(localWallet);
|
|
161
|
+
return prepared.finish(await sign(prepared.message));
|
|
162
|
+
}
|
|
111
163
|
/**
|
|
112
164
|
* Get SIWX auth headers for the Run402 API.
|
|
113
165
|
* Returns null if no local wallet is configured.
|
|
@@ -121,26 +173,13 @@ export function getWalletAuthHeaders(path, walletPath) {
|
|
|
121
173
|
// this helper returns SIWxAuthHeaders | null. Re-throw so callers above
|
|
122
174
|
// the CLI's wrapper (e.g. SDK paid-fetch) can decide whether to swallow it.
|
|
123
175
|
const localWallet = readWallet(walletPath);
|
|
124
|
-
if (!localWallet || !localWallet.address
|
|
176
|
+
if (!localWallet || !localWallet.address)
|
|
125
177
|
return null;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const now = new Date();
|
|
132
|
-
const issuedAt = now.toISOString();
|
|
133
|
-
const expirationTime = new Date(now.getTime() + 5 * 60 * 1000).toISOString();
|
|
134
|
-
return buildSIWxAuthHeaders({
|
|
135
|
-
wallet: localWallet,
|
|
136
|
-
domain,
|
|
137
|
-
uri,
|
|
138
|
-
statement: "Sign in to Run402",
|
|
139
|
-
chainId: "eip155:84532",
|
|
140
|
-
nonce,
|
|
141
|
-
issuedAt,
|
|
142
|
-
expirationTime,
|
|
143
|
-
});
|
|
178
|
+
if (isSignerWallet(localWallet))
|
|
179
|
+
throw new SignerWalletError();
|
|
180
|
+
if (!localWallet.privateKey)
|
|
181
|
+
return null;
|
|
182
|
+
return buildSIWxAuthHeaders({ wallet: localWallet, ...walletSIWxOptions(path) });
|
|
144
183
|
}
|
|
145
184
|
function messageChainId(chainId) {
|
|
146
185
|
if (typeof chainId === "number")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-auth.js","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet-auth.js","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"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"}
|
package/core/dist/wallet.d.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A wallet is backed by exactly one of: a local private key (`privateKey`),
|
|
3
|
+
* or a signer reference (`signer`) naming where the key lives. A signer
|
|
4
|
+
* reference holds no secret.
|
|
5
|
+
*/
|
|
1
6
|
export interface WalletData {
|
|
2
7
|
address: string;
|
|
3
|
-
|
|
8
|
+
/** Local signing key. Absent on a signer-backed wallet. */
|
|
9
|
+
privateKey?: string;
|
|
10
|
+
/** Where a signer-backed wallet's key lives. Absent on a key-backed wallet. */
|
|
11
|
+
signer?: WalletSigner;
|
|
4
12
|
created?: string;
|
|
5
13
|
funded?: boolean;
|
|
6
14
|
lastFaucet?: string;
|
|
@@ -8,6 +16,14 @@ export interface WalletData {
|
|
|
8
16
|
/** The Lightning wallet (`run402 init lightning`): a budgeted wallet on Run402's Hub. `nwc` is the pairing secret. */
|
|
9
17
|
lightning?: WalletLightning;
|
|
10
18
|
}
|
|
19
|
+
/** An AWS KMS `ECC_SECG_P256K1` / `SIGN_VERIFY` key, adopted by reference. */
|
|
20
|
+
export interface WalletSigner {
|
|
21
|
+
kind: "aws_kms";
|
|
22
|
+
key_arn: string;
|
|
23
|
+
region: string;
|
|
24
|
+
/** The AWS profile used to reach the key (an SSO profile); default credential chain when absent. */
|
|
25
|
+
aws_profile?: string;
|
|
26
|
+
}
|
|
11
27
|
export interface WalletLightning {
|
|
12
28
|
wallet_id: string;
|
|
13
29
|
nwc: string;
|
|
@@ -17,6 +33,11 @@ export interface WalletLightning {
|
|
|
17
33
|
custody: "run402_hub";
|
|
18
34
|
minted_at: string;
|
|
19
35
|
}
|
|
36
|
+
export declare const KMS_KEY_ARN_RE: RegExp;
|
|
37
|
+
/** True when the wallet signs through a signer instead of a local key. */
|
|
38
|
+
export declare function isSignerWallet(wallet: Pick<WalletData, "signer">): wallet is WalletData & {
|
|
39
|
+
signer: WalletSigner;
|
|
40
|
+
};
|
|
20
41
|
export declare function readWallet(path?: string): WalletData | null;
|
|
21
42
|
export declare function saveWallet(data: WalletData, path?: string): void;
|
|
22
43
|
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;IACpC,sHAAsH;IACtH,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,oGAAoG;IACpG,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAOD,eAAO,MAAM,cAAc,QAAgE,CAAC;AAE5F,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM,IAAI,UAAU,GAAG;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAElH;AA6CD,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA6D3D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAQhE"}
|
package/core/dist/wallet.js
CHANGED
|
@@ -6,6 +6,12 @@ import { getWalletPath } from "./config.js";
|
|
|
6
6
|
const ADDRESS_RE = /^0x[a-fA-F0-9]{40}$/;
|
|
7
7
|
// 0x-prefixed 64-hex secp256k1 private key (32 bytes).
|
|
8
8
|
const PRIVATE_KEY_RE = /^0x[a-fA-F0-9]{64}$/;
|
|
9
|
+
// arn:aws:kms:<region>:<account>:key/<id>
|
|
10
|
+
export const KMS_KEY_ARN_RE = /^arn:aws[a-z-]*:kms:([a-z0-9-]+):\d{12}:key\/[A-Za-z0-9-]+$/;
|
|
11
|
+
/** True when the wallet signs through a signer instead of a local key. */
|
|
12
|
+
export function isSignerWallet(wallet) {
|
|
13
|
+
return wallet.signer !== undefined;
|
|
14
|
+
}
|
|
9
15
|
/**
|
|
10
16
|
* Load the agent wallet from disk.
|
|
11
17
|
*
|
|
@@ -78,6 +84,21 @@ export function readWallet(path) {
|
|
|
78
84
|
throw new Error("wallet.json missing valid 'address' (expected 0x-prefixed 40-hex string). " +
|
|
79
85
|
"Back up the file and run 'run402 init' to recreate it.");
|
|
80
86
|
}
|
|
87
|
+
if (data.privateKey !== undefined && data.signer !== undefined) {
|
|
88
|
+
throw new Error(`${p} has both 'privateKey' and 'signer'; a wallet is backed by exactly one. ` +
|
|
89
|
+
"Remove the one that does not belong to this wallet.");
|
|
90
|
+
}
|
|
91
|
+
if (data.signer !== undefined) {
|
|
92
|
+
const signer = data.signer;
|
|
93
|
+
if (!signer || typeof signer !== "object" || signer.kind !== "aws_kms" ||
|
|
94
|
+
typeof signer.key_arn !== "string" || !KMS_KEY_ARN_RE.test(signer.key_arn) ||
|
|
95
|
+
typeof signer.region !== "string" || signer.region.length === 0 ||
|
|
96
|
+
(signer.aws_profile !== undefined && (typeof signer.aws_profile !== "string" || signer.aws_profile.length === 0))) {
|
|
97
|
+
throw new Error(`${p} has a malformed 'signer' (expected { kind: "aws_kms", key_arn, region, aws_profile? }). ` +
|
|
98
|
+
"Re-import the wallet with 'run402 wallets import <name> --kms <key-arn>'.");
|
|
99
|
+
}
|
|
100
|
+
return data;
|
|
101
|
+
}
|
|
81
102
|
if (typeof data.privateKey !== "string" || !PRIVATE_KEY_RE.test(data.privateKey)) {
|
|
82
103
|
throw new Error("wallet.json missing valid 'privateKey' (expected 0x-prefixed 64-hex string). " +
|
|
83
104
|
"Back up the file and run 'run402 init' to recreate it.");
|
package/core/dist/wallet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
|
package/dist/docs/llms-sdk.txt
CHANGED
|
@@ -585,7 +585,7 @@ await r.wallets.unbind();
|
|
|
585
585
|
await r.wallets.remove("ci-deploy", { confirm: true });
|
|
586
586
|
```
|
|
587
587
|
|
|
588
|
-
`r.wallets.import(name, privateKey)` adopts an existing key; `privateKey` may be a function, called only after the name checks pass. `resolveWalletSelection()`, `assertWalletExists()`, and `selectWallet()` (which also publishes the selection to the environment for the rest of the process) are exported for programs that choose a wallet before building a client.
|
|
588
|
+
`r.wallets.import(name, privateKey)` adopts an existing key; `privateKey` may be a function, called only after the name checks pass. `r.wallets.import(name, { kms: { keyId, awsProfile? } })` adopts an AWS KMS key by reference (`keyId` is the key ARN; read-only `GetPublicKey`): the profile's `wallet.json` holds `signer: { kind: "aws_kms", key_arn, region, aws_profile? }` and no secret, and every signature (SIWX, x402, MPP, transactions) is made by KMS. `@aws-sdk/client-kms` is an optional peer loaded only for such a wallet. `r.wallets.list()` / `current()` report `signer: "local" | "aws_kms"`. `r.wallets.send({ amount, to, from?, network?, confirm? })` sends USDC on `base` / `base-sepolia` (optionally `from` an owned CoinbaseSmartWallet) or pathUSD on `tempo` / `tempo-moderato`; without `confirm: true` it returns the checked preview. On the sandbox surface `import` refuses with `SECRET_REQUIRES_CLI` and `send` with `VALUE_TRANSFER_REQUIRES_CLI`. `resolveWalletSelection()`, `assertWalletExists()`, and `selectWallet()` (which also publishes the selection to the environment for the rest of the process) are exported for programs that choose a wallet before building a client.
|
|
589
589
|
|
|
590
590
|
### Organization context
|
|
591
591
|
|
|
@@ -1206,7 +1206,7 @@ const r = run402({ disablePaidFetch: true });
|
|
|
1206
1206
|
await r.ci.createBinding({
|
|
1207
1207
|
...values,
|
|
1208
1208
|
provider: CI_GITHUB_ACTIONS_PROVIDER,
|
|
1209
|
-
signed_delegation: signCiDelegation(values),
|
|
1209
|
+
signed_delegation: await signCiDelegation(values),
|
|
1210
1210
|
});
|
|
1211
1211
|
```
|
|
1212
1212
|
|
|
@@ -1592,7 +1592,7 @@ Node-only CI exports from `@run402/sdk/node`:
|
|
|
1592
1592
|
```
|
|
1593
1593
|
signCiDelegation(values, opts?: {
|
|
1594
1594
|
apiBase?, walletPath?, chainId?, issuedAt?, expirationTime?, nonce?
|
|
1595
|
-
}): string
|
|
1595
|
+
}): Promise<string>
|
|
1596
1596
|
|
|
1597
1597
|
createCiSessionCredentials({
|
|
1598
1598
|
projectId, accessToken?, getAccessToken?
|
package/dist/wallet-auth.d.ts
CHANGED
|
@@ -6,10 +6,12 @@ import { type ToolResult } from "./structured.js";
|
|
|
6
6
|
export type { SIWxAuthHeaders };
|
|
7
7
|
export declare const getWalletAuthHeaders: typeof _getWalletAuthHeaders;
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Check a wallet is configured (and, for a key-backed wallet, return its SIWX
|
|
10
|
+
* headers), or return an MCP error result. A signer-backed wallet (KMS) signs
|
|
11
|
+
* asynchronously inside the SDK, so it returns no headers here.
|
|
10
12
|
*/
|
|
11
13
|
export declare function requireWalletAuth(path: string): {
|
|
12
|
-
headers: SIWxAuthHeaders;
|
|
14
|
+
headers: SIWxAuthHeaders | null;
|
|
13
15
|
} | {
|
|
14
16
|
error: ToolResult;
|
|
15
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-auth.d.ts","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,IAAI,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet-auth.d.ts","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,IAAI,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGlH,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE/D,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,eAAO,MAAM,oBAAoB,8BAAwB,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAC/C,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;CACjC,GAAG;IACF,KAAK,EAAE,UAAU,CAAC;CACnB,CAoBA"}
|
package/dist/wallet-auth.js
CHANGED
|
@@ -2,12 +2,17 @@
|
|
|
2
2
|
* SIWX auth helper — re-exports core signing + adds MCP-specific error wrapper.
|
|
3
3
|
*/
|
|
4
4
|
import { getWalletAuthHeaders as _getWalletAuthHeaders } from "../core/dist/wallet-auth.js";
|
|
5
|
+
import { readWallet } from "../core/dist/wallet.js";
|
|
5
6
|
import { errorResult } from "./structured.js";
|
|
6
7
|
export const getWalletAuthHeaders = _getWalletAuthHeaders;
|
|
7
8
|
/**
|
|
8
|
-
*
|
|
9
|
+
* Check a wallet is configured (and, for a key-backed wallet, return its SIWX
|
|
10
|
+
* headers), or return an MCP error result. A signer-backed wallet (KMS) signs
|
|
11
|
+
* asynchronously inside the SDK, so it returns no headers here.
|
|
9
12
|
*/
|
|
10
13
|
export function requireWalletAuth(path) {
|
|
14
|
+
if (readWallet()?.signer)
|
|
15
|
+
return { headers: null };
|
|
11
16
|
const headers = getWalletAuthHeaders(path);
|
|
12
17
|
if (!headers) {
|
|
13
18
|
// Creating a wallet writes a private key, which only the CLI hands to a
|
package/dist/wallet-auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-auth.js","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,IAAI,qBAAqB,EAAwB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet-auth.js","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,IAAI,qBAAqB,EAAwB,MAAM,6BAA6B,CAAC;AAClH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAI/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAK5C,IAAI,UAAU,EAAE,EAAE,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,wEAAwE;QACxE,yDAAyD;QACzD,OAAO;YACL,KAAK,EAAE,WAAW,CAChB,sIAAsI,EACtI;gBACE,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,6BAA6B;gBACtC,YAAY,EAAE;oBACZ,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,qGAAqG,EAAE;iBAChK;aACF,CACF;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "run402-mcp",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.121.0",
|
|
4
4
|
"packageManager": "npm@11.19.0",
|
|
5
5
|
"mcpName": "com.run402/mcp",
|
|
6
6
|
"description": "MCP server for Run402 — full-stack backend infrastructure for AI agents: Postgres, auth, storage, serverless functions and atomic deploys. Paid with x402/MPP. Includes $0.03 image generation.",
|
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
"node": ">=22.13.0"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
+
"@aws-sdk/client-kms": "^3.1147.0",
|
|
73
74
|
"@hpke/chacha20poly1305": "^1.8.0",
|
|
74
75
|
"@hpke/core": "^1.9.0",
|
|
75
76
|
"@humanwhocodes/momoa": "3.3.10",
|
package/sdk/README.md
CHANGED
|
@@ -886,7 +886,7 @@ const values = {
|
|
|
886
886
|
};
|
|
887
887
|
|
|
888
888
|
const r = run402({ disablePaidFetch: true });
|
|
889
|
-
const signed_delegation = signCiDelegation(values);
|
|
889
|
+
const signed_delegation = await signCiDelegation(values);
|
|
890
890
|
await r.ci.createBinding({
|
|
891
891
|
...values,
|
|
892
892
|
provider: CI_GITHUB_ACTIONS_PROVIDER,
|
|
@@ -24,6 +24,8 @@ export interface ProfileMeta {
|
|
|
24
24
|
label?: string | null;
|
|
25
25
|
rail?: "x402" | "mpp";
|
|
26
26
|
created?: string;
|
|
27
|
+
/** How the wallet signs: a local key, or a signer reference (an AWS KMS key). Absent means local. */
|
|
28
|
+
signer?: "local" | "aws_kms";
|
|
27
29
|
}
|
|
28
30
|
export declare function readBaseConfig(): BaseConfig;
|
|
29
31
|
export declare function writeBaseConfig(cfg: BaseConfig): void;
|
|
@@ -25,12 +25,42 @@ export interface SIWxAuthOptions extends SIWEMessageOpts {
|
|
|
25
25
|
wallet: Pick<WalletData, "address" | "privateKey">;
|
|
26
26
|
type?: "eip191";
|
|
27
27
|
}
|
|
28
|
+
/** Signs an EIP-191 personal message for `address`; resolves to a 65-byte 0x hex signature. */
|
|
29
|
+
export type PersonalMessageSigner = (message: string) => Promise<string>;
|
|
30
|
+
/**
|
|
31
|
+
* A SIWX header waiting for its signature: `message` is the exact EIP-4361
|
|
32
|
+
* text to sign (EIP-191), `finish` turns the signature into the header. This
|
|
33
|
+
* is how a signer-backed wallet, whose signature is asynchronous, signs in.
|
|
34
|
+
*/
|
|
35
|
+
export interface PreparedSIWx {
|
|
36
|
+
message: string;
|
|
37
|
+
finish(signature: string): SIWxAuthHeaders;
|
|
38
|
+
}
|
|
39
|
+
export declare function prepareSIWx(opts: SIWEMessageOpts & {
|
|
40
|
+
address: string;
|
|
41
|
+
type?: "eip191";
|
|
42
|
+
}): PreparedSIWx;
|
|
28
43
|
/**
|
|
29
44
|
* Format an EIP-4361 (SIWE) message. Must be byte-for-byte compatible
|
|
30
45
|
* with the `siwe` library's message format used server-side for verification.
|
|
31
46
|
*/
|
|
32
47
|
export declare function formatSIWEMessage(opts: SIWEMessageOpts, address: string): string;
|
|
48
|
+
/** SIWX headers signed with a local private key (synchronous). */
|
|
33
49
|
export declare function buildSIWxAuthHeaders(opts: SIWxAuthOptions): SIWxAuthHeaders;
|
|
50
|
+
/**
|
|
51
|
+
* Thrown where a synchronous signature is required but the wallet signs
|
|
52
|
+
* through a signer (`wallet.json` `signer`). Callers that can wait use
|
|
53
|
+
* `getWalletAuthHeadersAsync` with the SDK's signer instead.
|
|
54
|
+
*/
|
|
55
|
+
export declare class SignerWalletError extends Error {
|
|
56
|
+
readonly code = "SIGNER_WALLET_ASYNC";
|
|
57
|
+
constructor();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* SIWX headers for any wallet: a key-backed wallet signs locally; a
|
|
61
|
+
* signer-backed one through `signerFor(wallet)`. Null when no wallet exists.
|
|
62
|
+
*/
|
|
63
|
+
export declare function getWalletAuthHeadersAsync(path: string, walletPath: string | undefined, signerFor: (wallet: WalletData) => Promise<PersonalMessageSigner>): Promise<SIWxAuthHeaders | null>;
|
|
34
64
|
/**
|
|
35
65
|
* Get SIWX auth headers for the Run402 API.
|
|
36
66
|
* Returns null if no local wallet is configured.
|