run402-mcp 2.48.0 → 3.0.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/dist/index.js +17 -15
- package/dist/index.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/project-get.d.ts +16 -0
- package/dist/tools/project-get.d.ts.map +1 -0
- package/dist/tools/project-get.js +40 -0
- package/dist/tools/project-get.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/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/projects.d.ts +14 -1
- package/sdk/dist/namespaces/projects.d.ts.map +1 -1
- package/sdk/dist/namespaces/projects.js +17 -0
- package/sdk/dist/namespaces/projects.js.map +1 -1
- package/sdk/dist/namespaces/projects.types.d.ts +50 -0
- package/sdk/dist/namespaces/projects.types.d.ts.map +1 -1
- package/sdk/dist/namespaces/transfers.d.ts +43 -3
- package/sdk/dist/namespaces/transfers.d.ts.map +1 -1
- package/sdk/dist/namespaces/transfers.js +5 -0
- package/sdk/dist/namespaces/transfers.js.map +1 -1
- package/sdk/dist/scoped.d.ts +10 -9
- package/sdk/dist/scoped.d.ts.map +1 -1
- package/sdk/dist/scoped.js +17 -14
- package/sdk/dist/scoped.js.map +1 -1
- 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
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getSdk } from "../sdk.js";
|
|
3
|
+
import { mapSdkError } from "../errors.js";
|
|
4
|
+
export const projectGetSchema = {
|
|
5
|
+
project_id: z.string().describe("Project ID to read (authoritative server view; no keys)"),
|
|
6
|
+
};
|
|
7
|
+
export async function handleProjectGet(args) {
|
|
8
|
+
try {
|
|
9
|
+
const p = await getSdk().projects.get(args.project_id);
|
|
10
|
+
const lastDeploy = p.last_deploy
|
|
11
|
+
? `\`${p.last_deploy.release_id}\` @ ${p.last_deploy.activated_at}`
|
|
12
|
+
: "(none)";
|
|
13
|
+
const domains = p.custom_domains?.length ? p.custom_domains.join(", ") : "(none)";
|
|
14
|
+
const mailbox = p.mailbox?.length ? p.mailbox.join(", ") : "(none)";
|
|
15
|
+
const u = p.usage;
|
|
16
|
+
const n = (v) => v.toLocaleString("en-US");
|
|
17
|
+
const lines = [
|
|
18
|
+
`## Project: ${p.name} (\`${p.project_id}\`)`,
|
|
19
|
+
``,
|
|
20
|
+
`| Field | Value |`,
|
|
21
|
+
`|-------|-------|`,
|
|
22
|
+
`| public_id | \`${p.public_id}\` |`,
|
|
23
|
+
`| org_id | \`${p.org_id}\` |`,
|
|
24
|
+
`| tier | ${p.tier} |`,
|
|
25
|
+
`| status | ${p.effective_status} (org: ${p.organization_lifecycle_state}) |`,
|
|
26
|
+
`| site_url | ${p.site_url ? `\`${p.site_url}\`` : "(none)"} |`,
|
|
27
|
+
`| custom_domains | ${domains} |`,
|
|
28
|
+
`| last_deploy | ${lastDeploy} |`,
|
|
29
|
+
`| mailbox | ${mailbox} |`,
|
|
30
|
+
`| api_calls | ${n(u.api_calls)} / ${n(u.api_calls_limit)} |`,
|
|
31
|
+
`| storage_bytes | ${n(u.storage_bytes)} / ${n(u.storage_bytes_limit)} |`,
|
|
32
|
+
`| created_at | ${p.created_at} |`,
|
|
33
|
+
];
|
|
34
|
+
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
return mapSdkError(err, "getting project");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=project-get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-get.js","sourceRoot":"","sources":["../../src/tools/project-get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;CAC3F,CAAC;AAIF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAEtC;IACC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvD,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW;YAC9B,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,UAAU,QAAQ,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE;YACnE,CAAC,CAAC,QAAQ,CAAC;QACb,MAAM,OAAO,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClF,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAClB,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAEnD,MAAM,KAAK,GAAG;YACZ,eAAe,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK;YAC7C,EAAE;YACF,mBAAmB;YACnB,mBAAmB;YACnB,mBAAmB,CAAC,CAAC,SAAS,MAAM;YACpC,gBAAgB,CAAC,CAAC,MAAM,MAAM;YAC9B,YAAY,CAAC,CAAC,IAAI,IAAI;YACtB,cAAc,CAAC,CAAC,gBAAgB,UAAU,CAAC,CAAC,4BAA4B,KAAK;YAC7E,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI;YAC/D,sBAAsB,OAAO,IAAI;YACjC,mBAAmB,UAAU,IAAI;YACjC,eAAe,OAAO,IAAI;YAC1B,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI;YAC7D,qBAAqB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI;YACzE,kBAAkB,CAAC,CAAC,UAAU,IAAI;SACnC,CAAC;QAEF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const provisionSignerSchema: {
|
|
3
3
|
project_id: z.ZodString;
|
|
4
4
|
chain: z.ZodEnum<["base-mainnet", "base-sepolia"]>;
|
|
5
5
|
recovery_address: z.ZodOptional<z.ZodString>;
|
|
6
6
|
};
|
|
7
|
-
export declare function
|
|
7
|
+
export declare function handleProvisionSigner(args: {
|
|
8
8
|
project_id: string;
|
|
9
9
|
chain: "base-mainnet" | "base-sepolia";
|
|
10
10
|
recovery_address?: string;
|
|
@@ -15,4 +15,4 @@ export declare function handleProvisionContractWallet(args: {
|
|
|
15
15
|
}>;
|
|
16
16
|
isError?: boolean;
|
|
17
17
|
}>;
|
|
18
|
-
//# sourceMappingURL=provision-
|
|
18
|
+
//# sourceMappingURL=provision-signer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision-signer.d.ts","sourceRoot":"","sources":["../../src/tools/provision-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,qBAAqB;;;;CAIjC,CAAC;AAEF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAU3N"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getSdk } from "../sdk.js";
|
|
3
|
+
import { mapSdkError } from "../errors.js";
|
|
4
|
+
export const provisionSignerSchema = {
|
|
5
|
+
project_id: z.string().describe("The project ID"),
|
|
6
|
+
chain: z.enum(["base-mainnet", "base-sepolia"]).describe("Which EVM chain. Cost: $0.04/day rental, requires $1.20 in cash credit at creation."),
|
|
7
|
+
recovery_address: z.string().optional().describe("Optional 0x-prefixed address for auto-drain on day-90 deletion"),
|
|
8
|
+
};
|
|
9
|
+
export async function handleProvisionSigner(args) {
|
|
10
|
+
try {
|
|
11
|
+
const body = await getSdk().contracts.provisionSigner(args.project_id, {
|
|
12
|
+
chain: args.chain,
|
|
13
|
+
recoveryAddress: args.recovery_address,
|
|
14
|
+
});
|
|
15
|
+
return { content: [{ type: "text", text: "## KMS Signer Provisioned\n\n```json\n" + JSON.stringify(body, null, 2) + "\n```\n\n**Cost**: $0.04/day rental ($1.20/month) + $0.000005 per contract call. **Non-custodial** — see https://run402.com/humans/terms.html#non-custodial-kms-wallets" }] };
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
return mapSdkError(err, "provisioning KMS signer");
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=provision-signer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision-signer.js","sourceRoot":"","sources":["../../src/tools/provision-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACjD,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,qFAAqF,CAAC;IAC/I,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;CACnH,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAA+F;IACzI,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE;YACrE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,eAAe,EAAE,IAAI,CAAC,gBAAgB;SACvC,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wCAAwC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,yKAAyK,EAAE,CAAC,EAAE,CAAC;IACrS,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export declare const setLowBalanceAlertSchema: {
|
|
3
3
|
project_id: z.ZodString;
|
|
4
|
-
|
|
4
|
+
signer_id: z.ZodString;
|
|
5
5
|
threshold_wei: z.ZodString;
|
|
6
6
|
};
|
|
7
7
|
export declare function handleSetLowBalanceAlert(args: {
|
|
8
8
|
project_id: string;
|
|
9
|
-
|
|
9
|
+
signer_id: string;
|
|
10
10
|
threshold_wei: string;
|
|
11
11
|
}): Promise<{
|
|
12
12
|
content: Array<{
|
|
@@ -3,12 +3,12 @@ import { getSdk } from "../sdk.js";
|
|
|
3
3
|
import { mapSdkError } from "../errors.js";
|
|
4
4
|
export const setLowBalanceAlertSchema = {
|
|
5
5
|
project_id: z.string().describe("The project ID"),
|
|
6
|
-
|
|
6
|
+
signer_id: z.string().describe("The KMS signer ID"),
|
|
7
7
|
threshold_wei: z.string().describe("Low-balance threshold in wei (decimal string)"),
|
|
8
8
|
};
|
|
9
9
|
export async function handleSetLowBalanceAlert(args) {
|
|
10
10
|
try {
|
|
11
|
-
await getSdk().contracts.setLowBalanceAlert(args.project_id, args.
|
|
11
|
+
await getSdk().contracts.setLowBalanceAlert(args.project_id, args.signer_id, args.threshold_wei);
|
|
12
12
|
return { content: [{ type: "text", text: "Low-balance threshold set to " + args.threshold_wei + " wei" }] };
|
|
13
13
|
}
|
|
14
14
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-low-balance-alert.js","sourceRoot":"","sources":["../../src/tools/set-low-balance-alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACjD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"set-low-balance-alert.js","sourceRoot":"","sources":["../../src/tools/set-low-balance-alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACjD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACnD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;CACpF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAAsE;IACnH,IAAI,CAAC;QACH,MAAM,MAAM,EAAE,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACjG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC;IAC9G,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export declare const setRecoveryAddressSchema: {
|
|
3
3
|
project_id: z.ZodString;
|
|
4
|
-
|
|
4
|
+
signer_id: z.ZodString;
|
|
5
5
|
recovery_address: z.ZodNullable<z.ZodString>;
|
|
6
6
|
};
|
|
7
7
|
export declare function handleSetRecoveryAddress(args: {
|
|
8
8
|
project_id: string;
|
|
9
|
-
|
|
9
|
+
signer_id: string;
|
|
10
10
|
recovery_address: string | null;
|
|
11
11
|
}): Promise<{
|
|
12
12
|
content: Array<{
|
|
@@ -3,12 +3,12 @@ import { getSdk } from "../sdk.js";
|
|
|
3
3
|
import { mapSdkError } from "../errors.js";
|
|
4
4
|
export const setRecoveryAddressSchema = {
|
|
5
5
|
project_id: z.string().describe("The project ID"),
|
|
6
|
-
|
|
6
|
+
signer_id: z.string().describe("The KMS signer ID"),
|
|
7
7
|
recovery_address: z.string().nullable().describe("0x-prefixed address (or null to clear). Used for auto-drain on day-90 deletion."),
|
|
8
8
|
};
|
|
9
9
|
export async function handleSetRecoveryAddress(args) {
|
|
10
10
|
try {
|
|
11
|
-
await getSdk().contracts.setRecovery(args.project_id, args.
|
|
11
|
+
await getSdk().contracts.setRecovery(args.project_id, args.signer_id, args.recovery_address);
|
|
12
12
|
return { content: [{ type: "text", text: "Recovery address " + (args.recovery_address ? "set to " + args.recovery_address : "cleared") }] };
|
|
13
13
|
}
|
|
14
14
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-recovery-address.js","sourceRoot":"","sources":["../../src/tools/set-recovery-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACjD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"set-recovery-address.js","sourceRoot":"","sources":["../../src/tools/set-recovery-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACjD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACnD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iFAAiF,CAAC;CACpI,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAAgF;IAC7H,IAAI,CAAC;QACH,MAAM,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9I,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,WAAW,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "run402-mcp",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "MCP server for Run402 — AI-native Postgres databases with REST API, auth, storage, and row-level security. Pay with x402 USDC micropayments.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
package/sdk/README.md
CHANGED
|
@@ -75,7 +75,7 @@ The `CredentialsProvider` interface has two required methods (`getAuth`, `getPro
|
|
|
75
75
|
| `apps` | `browse`, `getApp`, `fork`, `publish`, `listVersions`, `updateVersion`, `deleteVersion` |
|
|
76
76
|
| `tier` | `set`, `status` (tier pricing lives on `r.projects.getQuote()`) |
|
|
77
77
|
| `billing` | `createEmailOrganization`, `linkWallet`, `createCheckout`, `setAutoRecharge`, `checkBalance`, `getOrganization`, `lookupOrganization`, `getHistory`, `balance`, `history` |
|
|
78
|
-
| `contracts` | `
|
|
78
|
+
| `contracts` | `provisionSigner`, `getSigner`, `listSigners`, `setRecovery`, `setLowBalanceAlert`, `call`, `read`, `callStatus`, `drain`, `deleteSigner` |
|
|
79
79
|
| `ai` | `translate`, `moderate`, `usage`, `generateImage` |
|
|
80
80
|
| `allowance` | `status`, `create`, `export`, `faucet` |
|
|
81
81
|
| `service` | `status`, `health` (no auth, no setup — works on a fresh install) |
|
|
@@ -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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"}
|