run402-mcp 2.49.0 → 3.1.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/README.md +5 -5
- package/core/dist/control-plane-session.d.ts +10 -7
- package/core/dist/control-plane-session.d.ts.map +1 -1
- package/core/dist/control-plane-session.js.map +1 -1
- package/core/dist/write-auth-session.d.ts +99 -0
- package/core/dist/write-auth-session.d.ts.map +1 -0
- package/core/dist/write-auth-session.js +174 -0
- package/core/dist/write-auth-session.js.map +1 -0
- package/dist/index.js +15 -15
- package/dist/index.js.map +1 -1
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +3 -1
- package/dist/sdk.js.map +1 -1
- package/dist/tools/contract-call.d.ts +2 -2
- package/dist/tools/contract-call.js +2 -2
- package/dist/tools/contract-call.js.map +1 -1
- package/dist/tools/contract-deploy.d.ts +2 -2
- package/dist/tools/contract-deploy.js +4 -4
- package/dist/tools/contract-deploy.js.map +1 -1
- package/dist/tools/delete-signer.d.ts +16 -0
- package/dist/tools/delete-signer.d.ts.map +1 -0
- package/dist/tools/delete-signer.js +17 -0
- package/dist/tools/delete-signer.js.map +1 -0
- package/dist/tools/{drain-contract-wallet.d.ts → drain-signer.d.ts} +5 -5
- package/dist/tools/drain-signer.d.ts.map +1 -0
- package/dist/tools/{drain-contract-wallet.js → drain-signer.js} +7 -7
- package/dist/tools/drain-signer.js.map +1 -0
- package/dist/tools/get-signer.d.ts +16 -0
- package/dist/tools/get-signer.d.ts.map +1 -0
- package/dist/tools/get-signer.js +17 -0
- package/dist/tools/get-signer.js.map +1 -0
- package/dist/tools/{list-contract-wallets.d.ts → list-signers.d.ts} +3 -3
- package/dist/tools/list-signers.d.ts.map +1 -0
- package/dist/tools/{list-contract-wallets.js → list-signers.js} +5 -5
- package/dist/tools/list-signers.js.map +1 -0
- package/dist/tools/{provision-contract-wallet.d.ts → provision-signer.d.ts} +3 -3
- package/dist/tools/provision-signer.d.ts.map +1 -0
- package/dist/tools/provision-signer.js +21 -0
- package/dist/tools/provision-signer.js.map +1 -0
- package/dist/tools/set-low-balance-alert.d.ts +2 -2
- package/dist/tools/set-low-balance-alert.js +2 -2
- package/dist/tools/set-low-balance-alert.js.map +1 -1
- package/dist/tools/set-recovery-address.d.ts +2 -2
- package/dist/tools/set-recovery-address.js +2 -2
- package/dist/tools/set-recovery-address.js.map +1 -1
- package/package.json +1 -1
- package/sdk/README.md +1 -1
- package/sdk/core-dist/control-plane-session.d.ts +10 -7
- package/sdk/core-dist/write-auth-session.d.ts +99 -0
- package/sdk/core-dist/write-auth-session.js +174 -0
- package/sdk/dist/credentials.d.ts +28 -1
- package/sdk/dist/credentials.d.ts.map +1 -1
- package/sdk/dist/errors.d.ts +43 -1
- package/sdk/dist/errors.d.ts.map +1 -1
- package/sdk/dist/errors.js +71 -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/kernel.d.ts +3 -1
- package/sdk/dist/kernel.d.ts.map +1 -1
- package/sdk/dist/kernel.js +35 -4
- package/sdk/dist/kernel.js.map +1 -1
- package/sdk/dist/namespaces/contracts.d.ts +38 -38
- package/sdk/dist/namespaces/contracts.d.ts.map +1 -1
- package/sdk/dist/namespaces/contracts.js +44 -44
- package/sdk/dist/namespaces/contracts.js.map +1 -1
- package/sdk/dist/namespaces/deploy.d.ts.map +1 -1
- package/sdk/dist/namespaces/deploy.js +16 -4
- package/sdk/dist/namespaces/deploy.js.map +1 -1
- package/sdk/dist/namespaces/operator.d.ts +86 -3
- package/sdk/dist/namespaces/operator.d.ts.map +1 -1
- package/sdk/dist/namespaces/operator.js +55 -0
- package/sdk/dist/namespaces/operator.js.map +1 -1
- package/sdk/dist/namespaces/projects.d.ts.map +1 -1
- package/sdk/dist/namespaces/projects.js +11 -0
- package/sdk/dist/namespaces/projects.js.map +1 -1
- package/sdk/dist/namespaces/transfers.d.ts +3 -3
- package/sdk/dist/namespaces/transfers.d.ts.map +1 -1
- package/sdk/dist/node/credentials.d.ts +32 -6
- package/sdk/dist/node/credentials.d.ts.map +1 -1
- package/sdk/dist/node/credentials.js +57 -4
- package/sdk/dist/node/credentials.js.map +1 -1
- package/sdk/dist/node/index.d.ts +11 -1
- package/sdk/dist/node/index.d.ts.map +1 -1
- package/sdk/dist/node/index.js +3 -1
- package/sdk/dist/node/index.js.map +1 -1
- package/sdk/dist/scoped.d.ts +8 -8
- package/sdk/dist/scoped.js +14 -14
- package/dist/tools/delete-contract-wallet.d.ts +0 -16
- package/dist/tools/delete-contract-wallet.d.ts.map +0 -1
- package/dist/tools/delete-contract-wallet.js +0 -17
- package/dist/tools/delete-contract-wallet.js.map +0 -1
- package/dist/tools/drain-contract-wallet.d.ts.map +0 -1
- package/dist/tools/drain-contract-wallet.js.map +0 -1
- package/dist/tools/get-contract-wallet.d.ts +0 -16
- package/dist/tools/get-contract-wallet.d.ts.map +0 -1
- package/dist/tools/get-contract-wallet.js +0 -17
- package/dist/tools/get-contract-wallet.js.map +0 -1
- package/dist/tools/list-contract-wallets.d.ts.map +0 -1
- package/dist/tools/list-contract-wallets.js.map +0 -1
- package/dist/tools/provision-contract-wallet.d.ts.map +0 -1
- package/dist/tools/provision-contract-wallet.js +0 -21
- package/dist/tools/provision-contract-wallet.js.map +0 -1
package/sdk/dist/kernel.js
CHANGED
|
@@ -10,21 +10,49 @@
|
|
|
10
10
|
* or a response-shaped error value — they either get the parsed body as T
|
|
11
11
|
* or an exception.
|
|
12
12
|
*/
|
|
13
|
-
import { ApiError, NetworkError, NotAuthorizedError, PaymentRequired, StepUpRequiredError, TransferFreezeError, Unauthorized, } from "./errors.js";
|
|
13
|
+
import { ApiError, NetworkError, NotAuthorizedError, OperatorApprovalRequiredError, PaymentRequired, StepUpRequiredError, TransferFreezeError, Unauthorized, } from "./errors.js";
|
|
14
|
+
/** Gateway 403 codes that mean "a passkey operator approval is needed for this (capability, target)". */
|
|
15
|
+
const WRITE_AUTH_CODES = new Set([
|
|
16
|
+
"WRITE_AUTH_REQUIRED",
|
|
17
|
+
"WRITE_AUTH_BINDING_MISMATCH",
|
|
18
|
+
"WRITE_AUTH_SESSION_INVALID",
|
|
19
|
+
]);
|
|
14
20
|
export async function request(kernel, path, opts) {
|
|
15
21
|
return (await requestWithResponse(kernel, path, opts)).body;
|
|
16
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Auth header families. If a request explicitly sets ANY of these, it owns its
|
|
25
|
+
* credentials and the kernel will not merge a provider auth header alongside —
|
|
26
|
+
* preventing duplicate/contradictory credentials once dual-header auth exists.
|
|
27
|
+
*/
|
|
28
|
+
const AUTH_HEADER_NAMES = ["authorization", "sign-in-with-x", "x-run402-write-auth"];
|
|
29
|
+
/** Case-insensitive header presence check. */
|
|
30
|
+
function hasHeader(headers, name) {
|
|
31
|
+
const lower = name.toLowerCase();
|
|
32
|
+
for (const k of Object.keys(headers)) {
|
|
33
|
+
if (k.toLowerCase() === lower)
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
17
38
|
export async function requestWithResponse(kernel, path, opts) {
|
|
18
39
|
const { apiBase, fetch, credentials } = kernel;
|
|
19
40
|
const { method = "GET", headers = {}, body, rawBody, withAuth = true, context } = opts;
|
|
20
41
|
const url = `${apiBase}${path}`;
|
|
21
42
|
const fetchHeaders = { ...headers };
|
|
22
43
|
if (withAuth) {
|
|
23
|
-
const auth = await credentials.getAuth(path);
|
|
44
|
+
const auth = await credentials.getAuth(path, opts.authMeta);
|
|
24
45
|
if (auth) {
|
|
46
|
+
// Credential-family atomicity: if the request already set any auth header
|
|
47
|
+
// (any casing), it owns its credentials — never merge provider auth over
|
|
48
|
+
// or beside it. Other provider headers still merge (case-insensitively).
|
|
49
|
+
const requestOwnsAuth = AUTH_HEADER_NAMES.some((h) => hasHeader(fetchHeaders, h));
|
|
25
50
|
for (const [k, v] of Object.entries(auth)) {
|
|
26
|
-
if (
|
|
27
|
-
|
|
51
|
+
if (hasHeader(fetchHeaders, k))
|
|
52
|
+
continue;
|
|
53
|
+
if (requestOwnsAuth && AUTH_HEADER_NAMES.includes(k.toLowerCase()))
|
|
54
|
+
continue;
|
|
55
|
+
fetchHeaders[k] = v;
|
|
28
56
|
}
|
|
29
57
|
}
|
|
30
58
|
}
|
|
@@ -71,6 +99,9 @@ export async function requestWithResponse(kernel, path, opts) {
|
|
|
71
99
|
// generic 401/403 so callers can prompt for access, not re-authentication.
|
|
72
100
|
throw new NotAuthorizedError(`${displayMessage(resBody, "Not authorized")} while ${context} (HTTP ${res.status})`, res.status, resBody, context);
|
|
73
101
|
}
|
|
102
|
+
if (res.status === 403 && WRITE_AUTH_CODES.has(envelopeCode(resBody) ?? "")) {
|
|
103
|
+
throw new OperatorApprovalRequiredError(`${displayMessage(resBody, "Operator approval required")} while ${context}`, res.status, resBody, context, { capability: opts.authMeta?.capability ?? null, target: opts.authMeta?.target ?? null });
|
|
104
|
+
}
|
|
74
105
|
if (res.status === 401 || res.status === 403) {
|
|
75
106
|
throw new Unauthorized(`${displayMessage(resBody, "Unauthorized")} while ${context} (HTTP ${res.status})`, res.status, resBody, context);
|
|
76
107
|
}
|
package/sdk/dist/kernel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,GACb,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `contracts` namespace — AWS KMS-backed Ethereum
|
|
2
|
+
* `contracts` namespace — AWS KMS-backed Ethereum signers.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Signers sign smart-contract write transactions. Private keys never leave
|
|
5
|
+
* KMS. Pricing: $0.04/day rental ($1.20/month) plus $0.000005 per sign.
|
|
6
|
+
* Non-custodial.
|
|
7
7
|
*
|
|
8
8
|
* NOTE: The contracts API surface is frozen — this namespace preserves the
|
|
9
9
|
* existing request/response shapes verbatim.
|
|
10
10
|
*/
|
|
11
11
|
import type { Client } from "../kernel.js";
|
|
12
12
|
export type EvmChain = "base-mainnet" | "base-sepolia";
|
|
13
|
-
export type
|
|
13
|
+
export type SignerStatus = "active" | "suspended" | "deleted";
|
|
14
14
|
export type ContractCallStatus = "submitted" | "confirmed" | "failed";
|
|
15
|
-
export interface
|
|
16
|
-
|
|
15
|
+
export interface SignerSummary {
|
|
16
|
+
signer_id: string;
|
|
17
17
|
address: string;
|
|
18
18
|
chain: EvmChain;
|
|
19
|
-
status:
|
|
19
|
+
status: SignerStatus;
|
|
20
20
|
balance_wei: string;
|
|
21
21
|
threshold_wei: string | null;
|
|
22
22
|
recovery_address: string | null;
|
|
23
23
|
created_at: string;
|
|
24
24
|
}
|
|
25
|
-
export interface
|
|
26
|
-
|
|
25
|
+
export interface ListSignersResult {
|
|
26
|
+
signers: SignerSummary[];
|
|
27
27
|
}
|
|
28
|
-
export interface
|
|
29
|
-
|
|
28
|
+
export interface ProvisionSignerResult {
|
|
29
|
+
signer_id: string;
|
|
30
30
|
address: string;
|
|
31
31
|
chain: EvmChain;
|
|
32
|
-
status?:
|
|
32
|
+
status?: SignerStatus;
|
|
33
33
|
balance_wei?: string;
|
|
34
34
|
threshold_wei?: string | null;
|
|
35
35
|
recovery_address?: string | null;
|
|
@@ -51,17 +51,17 @@ export interface DrainResult {
|
|
|
51
51
|
status: ContractCallStatus;
|
|
52
52
|
tx_hash: string | null;
|
|
53
53
|
}
|
|
54
|
-
export interface
|
|
55
|
-
|
|
54
|
+
export interface DeleteSignerResult {
|
|
55
|
+
signer_id: string;
|
|
56
56
|
deleted_at?: string;
|
|
57
57
|
scheduled_deletion_at?: string;
|
|
58
58
|
}
|
|
59
|
-
export interface
|
|
59
|
+
export interface ProvisionSignerOptions {
|
|
60
60
|
chain: EvmChain;
|
|
61
61
|
recoveryAddress?: string;
|
|
62
62
|
}
|
|
63
63
|
export interface ContractCallOptions {
|
|
64
|
-
|
|
64
|
+
signerId: string;
|
|
65
65
|
chain: EvmChain;
|
|
66
66
|
contractAddress?: string;
|
|
67
67
|
to?: string;
|
|
@@ -74,9 +74,9 @@ export interface ContractCallOptions {
|
|
|
74
74
|
idempotencyKey?: string;
|
|
75
75
|
}
|
|
76
76
|
export interface ContractDeployOptions {
|
|
77
|
-
/** The cwlt_… ID of the KMS
|
|
78
|
-
|
|
79
|
-
/** The chain to deploy to. Must match the
|
|
77
|
+
/** The cwlt_… ID of the KMS signer that will sign + own the new contract. */
|
|
78
|
+
signerId: string;
|
|
79
|
+
/** The chain to deploy to. Must match the signer's chain. */
|
|
80
80
|
chain: EvmChain;
|
|
81
81
|
/**
|
|
82
82
|
* Full creation calldata as a 0x-prefixed hex string: creation bytecode
|
|
@@ -93,7 +93,7 @@ export interface ContractDeployOptions {
|
|
|
93
93
|
}
|
|
94
94
|
export interface ContractDeployResult extends ContractCallResult {
|
|
95
95
|
/**
|
|
96
|
-
* The deterministic CREATE address derived from `(
|
|
96
|
+
* The deterministic CREATE address derived from `(signer.address, nonce)`.
|
|
97
97
|
* Returned synchronously — the caller knows where the new contract will
|
|
98
98
|
* live without waiting for confirmation. The reconciler verifies this
|
|
99
99
|
* matches the on-chain receipt's `contractAddress` on confirmation.
|
|
@@ -112,31 +112,31 @@ export interface ContractReadOptions {
|
|
|
112
112
|
}
|
|
113
113
|
export declare class Contracts {
|
|
114
114
|
private readonly client;
|
|
115
|
-
readonly setAlert: (projectId: string,
|
|
116
|
-
readonly delete: (projectId: string,
|
|
115
|
+
readonly setAlert: (projectId: string, signerId: string, thresholdWei: string) => Promise<void>;
|
|
116
|
+
readonly delete: (projectId: string, signerId: string) => Promise<DeleteSignerResult>;
|
|
117
117
|
readonly status: (projectId: string, callId: string) => Promise<ContractCallResult>;
|
|
118
118
|
constructor(client: Client);
|
|
119
|
-
/** Provision a new KMS-backed
|
|
120
|
-
|
|
121
|
-
/** Get a
|
|
122
|
-
|
|
123
|
-
/** List all
|
|
124
|
-
|
|
119
|
+
/** Provision a new KMS-backed signer. */
|
|
120
|
+
provisionSigner(projectId: string, opts: ProvisionSignerOptions): Promise<ProvisionSignerResult>;
|
|
121
|
+
/** Get a signer's metadata + live balance. */
|
|
122
|
+
getSigner(projectId: string, signerId: string): Promise<SignerSummary>;
|
|
123
|
+
/** List all signers owned by the project, including deleted ones. */
|
|
124
|
+
listSigners(projectId: string): Promise<ListSignersResult>;
|
|
125
125
|
/** Set or clear the recovery address used for auto-drain on day-90 deletion. */
|
|
126
|
-
setRecovery(projectId: string,
|
|
126
|
+
setRecovery(projectId: string, signerId: string, recoveryAddress: string | null): Promise<void>;
|
|
127
127
|
/** Set the low-balance threshold (in wei) for email alerts. */
|
|
128
|
-
setLowBalanceAlert(projectId: string,
|
|
128
|
+
setLowBalanceAlert(projectId: string, signerId: string, thresholdWei: string): Promise<void>;
|
|
129
129
|
/** Submit a smart-contract write call. Idempotent on `idempotencyKey`. */
|
|
130
130
|
call(projectId: string, opts: ContractCallOptions): Promise<ContractCallResult>;
|
|
131
131
|
/**
|
|
132
|
-
* Deploy a contract from the
|
|
132
|
+
* Deploy a contract from the signer (KMS-signs a contract-creation tx).
|
|
133
133
|
*
|
|
134
134
|
* The `bytecode` is the full creation calldata — creation bytecode
|
|
135
135
|
* concatenated with ABI-encoded constructor args (the caller does the
|
|
136
136
|
* encoding via viem/ethers etc.; run402 does NOT compile Solidity).
|
|
137
137
|
*
|
|
138
138
|
* Returns synchronously with the deterministic CREATE address derived
|
|
139
|
-
* from `(
|
|
139
|
+
* from `(signer.address, nonce)` — no need to wait for confirmation
|
|
140
140
|
* to know where the contract will live. Reconciler verifies on receipt.
|
|
141
141
|
*
|
|
142
142
|
* Same pricing as `call`: chain gas at-cost + $0.000005 KMS sign fee.
|
|
@@ -148,15 +148,15 @@ export declare class Contracts {
|
|
|
148
148
|
/** Look up a previously submitted call by id. */
|
|
149
149
|
callStatus(projectId: string, callId: string): Promise<ContractCallResult>;
|
|
150
150
|
/**
|
|
151
|
-
* Drain the
|
|
152
|
-
* Works on suspended
|
|
151
|
+
* Drain the signer's native-token balance to a destination address.
|
|
152
|
+
* Works on suspended signers. Requires `X-Confirm-Drain: <signer_id>`
|
|
153
153
|
* confirmation header (sent automatically by the SDK).
|
|
154
154
|
*/
|
|
155
|
-
drain(projectId: string,
|
|
155
|
+
drain(projectId: string, signerId: string, destinationAddress: string): Promise<DrainResult>;
|
|
156
156
|
/**
|
|
157
157
|
* Schedule the KMS key for deletion (7-day AWS minimum window). Refused
|
|
158
|
-
* if the
|
|
158
|
+
* if the signer has on-chain balance >= dust — drain first.
|
|
159
159
|
*/
|
|
160
|
-
|
|
160
|
+
deleteSigner(projectId: string, signerId: string): Promise<DeleteSignerResult>;
|
|
161
161
|
}
|
|
162
162
|
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/namespaces/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC;AAGvD,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/namespaces/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `contracts` namespace — AWS KMS-backed Ethereum
|
|
2
|
+
* `contracts` namespace — AWS KMS-backed Ethereum signers.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Signers sign smart-contract write transactions. Private keys never leave
|
|
5
|
+
* KMS. Pricing: $0.04/day rental ($1.20/month) plus $0.000005 per sign.
|
|
6
|
+
* Non-custodial.
|
|
7
7
|
*
|
|
8
8
|
* NOTE: The contracts API surface is frozen — this namespace preserves the
|
|
9
9
|
* existing request/response shapes verbatim.
|
|
@@ -19,57 +19,57 @@ export class Contracts {
|
|
|
19
19
|
constructor(client) {
|
|
20
20
|
this.client = client;
|
|
21
21
|
this.setAlert = this.setLowBalanceAlert.bind(this);
|
|
22
|
-
this.delete = this.
|
|
22
|
+
this.delete = this.deleteSigner.bind(this);
|
|
23
23
|
this.status = this.callStatus.bind(this);
|
|
24
24
|
}
|
|
25
|
-
/** Provision a new KMS-backed
|
|
26
|
-
async
|
|
27
|
-
assertStringInSet(opts.chain, EVM_CHAINS, "chain", "provisioning KMS
|
|
25
|
+
/** Provision a new KMS-backed signer. */
|
|
26
|
+
async provisionSigner(projectId, opts) {
|
|
27
|
+
assertStringInSet(opts.chain, EVM_CHAINS, "chain", "provisioning KMS signer");
|
|
28
28
|
if (opts.recoveryAddress) {
|
|
29
|
-
assertEvmAddress(opts.recoveryAddress, "recoveryAddress", "provisioning KMS
|
|
29
|
+
assertEvmAddress(opts.recoveryAddress, "recoveryAddress", "provisioning KMS signer");
|
|
30
30
|
}
|
|
31
31
|
const project = await this.client.getProject(projectId);
|
|
32
32
|
if (!project)
|
|
33
|
-
throw new ProjectNotFound(projectId, "provisioning KMS
|
|
33
|
+
throw new ProjectNotFound(projectId, "provisioning KMS signer");
|
|
34
34
|
const body = { chain: opts.chain };
|
|
35
35
|
if (opts.recoveryAddress)
|
|
36
36
|
body.recovery_address = opts.recoveryAddress;
|
|
37
|
-
return this.client.request("/contracts/v1/
|
|
37
|
+
return this.client.request("/contracts/v1/signers", {
|
|
38
38
|
method: "POST",
|
|
39
39
|
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
40
40
|
body,
|
|
41
|
-
context: "provisioning KMS
|
|
41
|
+
context: "provisioning KMS signer",
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
|
-
/** Get a
|
|
45
|
-
async
|
|
44
|
+
/** Get a signer's metadata + live balance. */
|
|
45
|
+
async getSigner(projectId, signerId) {
|
|
46
46
|
const project = await this.client.getProject(projectId);
|
|
47
47
|
if (!project)
|
|
48
|
-
throw new ProjectNotFound(projectId, "fetching
|
|
49
|
-
return this.client.request(`/contracts/v1/
|
|
48
|
+
throw new ProjectNotFound(projectId, "fetching signer");
|
|
49
|
+
return this.client.request(`/contracts/v1/signers/${encodeURIComponent(signerId)}`, {
|
|
50
50
|
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
51
|
-
context: "fetching
|
|
51
|
+
context: "fetching signer",
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
|
-
/** List all
|
|
55
|
-
async
|
|
54
|
+
/** List all signers owned by the project, including deleted ones. */
|
|
55
|
+
async listSigners(projectId) {
|
|
56
56
|
const project = await this.client.getProject(projectId);
|
|
57
57
|
if (!project)
|
|
58
|
-
throw new ProjectNotFound(projectId, "listing
|
|
59
|
-
return this.client.request("/contracts/v1/
|
|
58
|
+
throw new ProjectNotFound(projectId, "listing signers");
|
|
59
|
+
return this.client.request("/contracts/v1/signers", {
|
|
60
60
|
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
61
|
-
context: "listing
|
|
61
|
+
context: "listing signers",
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
64
|
/** Set or clear the recovery address used for auto-drain on day-90 deletion. */
|
|
65
|
-
async setRecovery(projectId,
|
|
65
|
+
async setRecovery(projectId, signerId, recoveryAddress) {
|
|
66
66
|
if (recoveryAddress !== null) {
|
|
67
67
|
assertEvmAddress(recoveryAddress, "recoveryAddress", "setting recovery address");
|
|
68
68
|
}
|
|
69
69
|
const project = await this.client.getProject(projectId);
|
|
70
70
|
if (!project)
|
|
71
71
|
throw new ProjectNotFound(projectId, "setting recovery address");
|
|
72
|
-
await this.client.request(`/contracts/v1/
|
|
72
|
+
await this.client.request(`/contracts/v1/signers/${encodeURIComponent(signerId)}/recovery-address`, {
|
|
73
73
|
method: "POST",
|
|
74
74
|
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
75
75
|
body: { recovery_address: recoveryAddress },
|
|
@@ -77,12 +77,12 @@ export class Contracts {
|
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
79
|
/** Set the low-balance threshold (in wei) for email alerts. */
|
|
80
|
-
async setLowBalanceAlert(projectId,
|
|
80
|
+
async setLowBalanceAlert(projectId, signerId, thresholdWei) {
|
|
81
81
|
assertWeiString(thresholdWei, "thresholdWei", "setting low-balance threshold");
|
|
82
82
|
const project = await this.client.getProject(projectId);
|
|
83
83
|
if (!project)
|
|
84
84
|
throw new ProjectNotFound(projectId, "setting low-balance threshold");
|
|
85
|
-
await this.client.request(`/contracts/v1/
|
|
85
|
+
await this.client.request(`/contracts/v1/signers/${encodeURIComponent(signerId)}/alert`, {
|
|
86
86
|
method: "POST",
|
|
87
87
|
headers: { Authorization: `Bearer ${project.service_key}` },
|
|
88
88
|
body: { threshold_wei: thresholdWei },
|
|
@@ -112,7 +112,7 @@ export class Contracts {
|
|
|
112
112
|
if (opts.idempotencyKey)
|
|
113
113
|
headers["Idempotency-Key"] = opts.idempotencyKey;
|
|
114
114
|
const body = {
|
|
115
|
-
|
|
115
|
+
signer_id: opts.signerId,
|
|
116
116
|
chain: opts.chain,
|
|
117
117
|
contract_address: contractAddress,
|
|
118
118
|
abi_fragment: abiFragment,
|
|
@@ -131,14 +131,14 @@ export class Contracts {
|
|
|
131
131
|
});
|
|
132
132
|
}
|
|
133
133
|
/**
|
|
134
|
-
* Deploy a contract from the
|
|
134
|
+
* Deploy a contract from the signer (KMS-signs a contract-creation tx).
|
|
135
135
|
*
|
|
136
136
|
* The `bytecode` is the full creation calldata — creation bytecode
|
|
137
137
|
* concatenated with ABI-encoded constructor args (the caller does the
|
|
138
138
|
* encoding via viem/ethers etc.; run402 does NOT compile Solidity).
|
|
139
139
|
*
|
|
140
140
|
* Returns synchronously with the deterministic CREATE address derived
|
|
141
|
-
* from `(
|
|
141
|
+
* from `(signer.address, nonce)` — no need to wait for confirmation
|
|
142
142
|
* to know where the contract will live. Reconciler verifies on receipt.
|
|
143
143
|
*
|
|
144
144
|
* Same pricing as `call`: chain gas at-cost + $0.000005 KMS sign fee.
|
|
@@ -166,7 +166,7 @@ export class Contracts {
|
|
|
166
166
|
if (opts.idempotencyKey)
|
|
167
167
|
headers["Idempotency-Key"] = opts.idempotencyKey;
|
|
168
168
|
const body = {
|
|
169
|
-
|
|
169
|
+
signer_id: opts.signerId,
|
|
170
170
|
chain: opts.chain,
|
|
171
171
|
bytecode: opts.bytecode,
|
|
172
172
|
};
|
|
@@ -221,40 +221,40 @@ export class Contracts {
|
|
|
221
221
|
});
|
|
222
222
|
}
|
|
223
223
|
/**
|
|
224
|
-
* Drain the
|
|
225
|
-
* Works on suspended
|
|
224
|
+
* Drain the signer's native-token balance to a destination address.
|
|
225
|
+
* Works on suspended signers. Requires `X-Confirm-Drain: <signer_id>`
|
|
226
226
|
* confirmation header (sent automatically by the SDK).
|
|
227
227
|
*/
|
|
228
|
-
async drain(projectId,
|
|
229
|
-
assertEvmAddress(destinationAddress, "destinationAddress", "draining
|
|
228
|
+
async drain(projectId, signerId, destinationAddress) {
|
|
229
|
+
assertEvmAddress(destinationAddress, "destinationAddress", "draining signer");
|
|
230
230
|
const project = await this.client.getProject(projectId);
|
|
231
231
|
if (!project)
|
|
232
|
-
throw new ProjectNotFound(projectId, "draining
|
|
233
|
-
return this.client.request(`/contracts/v1/
|
|
232
|
+
throw new ProjectNotFound(projectId, "draining signer");
|
|
233
|
+
return this.client.request(`/contracts/v1/signers/${encodeURIComponent(signerId)}/drain`, {
|
|
234
234
|
method: "POST",
|
|
235
235
|
headers: {
|
|
236
236
|
Authorization: `Bearer ${project.service_key}`,
|
|
237
|
-
"X-Confirm-Drain":
|
|
237
|
+
"X-Confirm-Drain": signerId,
|
|
238
238
|
},
|
|
239
239
|
body: { destination_address: destinationAddress },
|
|
240
|
-
context: "draining
|
|
240
|
+
context: "draining signer",
|
|
241
241
|
});
|
|
242
242
|
}
|
|
243
243
|
/**
|
|
244
244
|
* Schedule the KMS key for deletion (7-day AWS minimum window). Refused
|
|
245
|
-
* if the
|
|
245
|
+
* if the signer has on-chain balance >= dust — drain first.
|
|
246
246
|
*/
|
|
247
|
-
async
|
|
247
|
+
async deleteSigner(projectId, signerId) {
|
|
248
248
|
const project = await this.client.getProject(projectId);
|
|
249
249
|
if (!project)
|
|
250
|
-
throw new ProjectNotFound(projectId, "deleting
|
|
251
|
-
return this.client.request(`/contracts/v1/
|
|
250
|
+
throw new ProjectNotFound(projectId, "deleting signer");
|
|
251
|
+
return this.client.request(`/contracts/v1/signers/${encodeURIComponent(signerId)}`, {
|
|
252
252
|
method: "DELETE",
|
|
253
253
|
headers: {
|
|
254
254
|
Authorization: `Bearer ${project.service_key}`,
|
|
255
|
-
"X-Confirm-Delete":
|
|
255
|
+
"X-Confirm-Delete": signerId,
|
|
256
256
|
},
|
|
257
|
-
context: "deleting
|
|
257
|
+
context: "deleting signer",
|
|
258
258
|
});
|
|
259
259
|
}
|
|
260
260
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/namespaces/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxF,MAAM,UAAU,GAAwB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAoHzE,MAAM,OAAO,SAAS;IAKS;IAJpB,QAAQ,CAA+E;IACvF,MAAM,CAAuE;IAC7E,MAAM,CAAqE;IAEpF,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/namespaces/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/namespaces/deploy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/namespaces/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -166,7 +166,7 @@ export class Deploy {
|
|
|
166
166
|
*/
|
|
167
167
|
async commit(planId, opts = {}) {
|
|
168
168
|
const emit = makeEmitter(opts.onEvent);
|
|
169
|
-
const commit = await commitInternal(this.client, planId, opts.idempotencyKey);
|
|
169
|
+
const commit = await commitInternal(this.client, planId, opts.idempotencyKey, opts.project);
|
|
170
170
|
return await pollUntilReady(this.client, commit, {}, [], emit, opts.project);
|
|
171
171
|
}
|
|
172
172
|
/**
|
|
@@ -479,7 +479,7 @@ async function applyOnce(client, spec, opts, emit) {
|
|
|
479
479
|
...(sliceKinds.length > 0 ? { slice_kinds: sliceKinds } : {}),
|
|
480
480
|
});
|
|
481
481
|
const { planId } = requirePersistedPlan(plan, "applying deploy");
|
|
482
|
-
const commit = await commitInternal(client, planId, opts.idempotencyKey);
|
|
482
|
+
const commit = await commitInternal(client, planId, opts.idempotencyKey, spec.project);
|
|
483
483
|
const result = await pollUntilReady(client, commit, plan.diff, plan.warnings, emit, spec.project, sliceKinds);
|
|
484
484
|
// v1.48 unified-apply: thread the plan response's `asset_entries[]` back
|
|
485
485
|
// into DeployResult.assets so callers reading `result.assets.byKey[key]`
|
|
@@ -811,6 +811,8 @@ async function planInternal(client, spec, idempotencyKey, dryRun = false) {
|
|
|
811
811
|
plan = withClientPlanWarnings(normalized, normalizePlanResponse(await client.request(dryRun ? "/apply/v1/plans?dry_run=true" : "/apply/v1/plans", {
|
|
812
812
|
method: "POST",
|
|
813
813
|
body,
|
|
814
|
+
// Operator-approval scope: deploying a release is `project.deploy` on this project.
|
|
815
|
+
authMeta: { method: "deploy.plan", capability: "project.deploy", target: { project_id: spec.project } },
|
|
814
816
|
context: "planning deploy",
|
|
815
817
|
})));
|
|
816
818
|
}
|
|
@@ -1151,11 +1153,21 @@ function expandCronNumberPart(part, min, max) {
|
|
|
1151
1153
|
}
|
|
1152
1154
|
return values;
|
|
1153
1155
|
}
|
|
1154
|
-
async function commitInternal(client, planId, idempotencyKey) {
|
|
1156
|
+
async function commitInternal(client, planId, idempotencyKey, project) {
|
|
1155
1157
|
try {
|
|
1156
1158
|
return await client.request(`/apply/v1/plans/${encodeURIComponent(planId)}/commit`, {
|
|
1157
1159
|
method: "POST",
|
|
1158
1160
|
body: idempotencyKey ? { idempotency_key: idempotencyKey } : {},
|
|
1161
|
+
// Operator-approval scope: committing a deploy is `project.deploy` on this project.
|
|
1162
|
+
...(project
|
|
1163
|
+
? {
|
|
1164
|
+
authMeta: {
|
|
1165
|
+
method: "deploy.commit",
|
|
1166
|
+
capability: "project.deploy",
|
|
1167
|
+
target: { project_id: project },
|
|
1168
|
+
},
|
|
1169
|
+
}
|
|
1170
|
+
: {}),
|
|
1159
1171
|
context: "committing deploy",
|
|
1160
1172
|
});
|
|
1161
1173
|
}
|
|
@@ -1542,7 +1554,7 @@ async function startInternal(client, spec, opts) {
|
|
|
1542
1554
|
...(sliceKinds.length > 0 ? { slice_kinds: sliceKinds } : {}),
|
|
1543
1555
|
});
|
|
1544
1556
|
const { planId } = requirePersistedPlan(plan, "starting deploy");
|
|
1545
|
-
const commit = await commitInternal(client, planId, opts.idempotencyKey);
|
|
1557
|
+
const commit = await commitInternal(client, planId, opts.idempotencyKey, spec.project);
|
|
1546
1558
|
return await pollUntilReady(client, commit, plan.diff, plan.warnings, emit, spec.project, sliceKinds);
|
|
1547
1559
|
})();
|
|
1548
1560
|
// Avoid an unhandled-rejection at construction time. Consumers must call
|