@continuumdao/continuum-node-sdk 1.2.9 → 1.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/agent/environment-variables.d.ts +12 -0
- package/dist/core/agent/environment-variables.d.ts.map +1 -0
- package/dist/core/agent/environment-variables.js +69 -0
- package/dist/core/agent/environment-variables.js.map +1 -0
- package/dist/core/registry/networks.d.ts.map +1 -1
- package/dist/core/registry/networks.js +8 -2
- package/dist/core/registry/networks.js.map +1 -1
- package/dist/core/registry/tokens.d.ts +3 -24
- package/dist/core/registry/tokens.d.ts.map +1 -1
- package/dist/core/registry/tokens.js +13 -11
- package/dist/core/registry/tokens.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/defi/handler.d.ts.map +1 -1
- package/dist/mcp/defi/handler.js +10 -4
- package/dist/mcp/defi/handler.js.map +1 -1
- package/dist/mcp/defi/register-protocol-tools.d.ts.map +1 -1
- package/dist/mcp/defi/register-protocol-tools.js +4 -0
- package/dist/mcp/defi/register-protocol-tools.js.map +1 -1
- package/dist/mcp/defi/uniswap-api-key.d.ts +16 -0
- package/dist/mcp/defi/uniswap-api-key.d.ts.map +1 -0
- package/dist/mcp/defi/uniswap-api-key.js +50 -0
- package/dist/mcp/defi/uniswap-api-key.js.map +1 -0
- package/dist/mcp/registry/networks.d.ts.map +1 -1
- package/dist/mcp/registry/networks.js +1 -1
- package/dist/mcp/registry/networks.js.map +1 -1
- package/dist/mcp/registry/tokens.d.ts.map +1 -1
- package/dist/mcp/registry/tokens.js +3 -10
- package/dist/mcp/registry/tokens.js.map +1 -1
- package/dist/schemas/extended.d.ts +47 -4
- package/dist/schemas/extended.d.ts.map +1 -1
- package/dist/schemas/extended.js +49 -6
- package/dist/schemas/extended.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/signing-flow.d.ts +0 -9
- package/dist/core/signing-flow.d.ts.map +0 -1
- package/dist/core/signing-flow.js +0 -139
- package/dist/core/signing-flow.js.map +0 -1
- package/dist/data/mpc-keys.d.ts +0 -8
- package/dist/data/mpc-keys.d.ts.map +0 -1
- package/dist/data/mpc-keys.js +0 -38
- package/dist/data/mpc-keys.js.map +0 -1
- package/dist/detops/general.d.ts +0 -11
- package/dist/detops/general.d.ts.map +0 -1
- package/dist/detops/general.js +0 -34
- package/dist/detops/general.js.map +0 -1
- package/dist/detops/group-actions.d.ts +0 -71
- package/dist/detops/group-actions.d.ts.map +0 -1
- package/dist/detops/group-actions.js +0 -360
- package/dist/detops/group-actions.js.map +0 -1
- package/dist/detops/groups.d.ts +0 -33
- package/dist/detops/groups.d.ts.map +0 -1
- package/dist/detops/groups.js +0 -223
- package/dist/detops/groups.js.map +0 -1
- package/dist/detops/keygen.d.ts +0 -72
- package/dist/detops/keygen.d.ts.map +0 -1
- package/dist/detops/keygen.js +0 -245
- package/dist/detops/keygen.js.map +0 -1
- package/dist/detops/management-keys.d.ts +0 -44
- package/dist/detops/management-keys.d.ts.map +0 -1
- package/dist/detops/management-keys.js +0 -216
- package/dist/detops/management-keys.js.map +0 -1
- package/dist/detops/management-signer.d.ts +0 -129
- package/dist/detops/management-signer.d.ts.map +0 -1
- package/dist/detops/management-signer.js +0 -619
- package/dist/detops/management-signer.js.map +0 -1
- package/dist/detops/management-signing.d.ts +0 -11
- package/dist/detops/management-signing.d.ts.map +0 -1
- package/dist/detops/management-signing.js +0 -131
- package/dist/detops/management-signing.js.map +0 -1
- package/dist/detops/mpc/broadcast-sign-result.d.ts +0 -9
- package/dist/detops/mpc/broadcast-sign-result.d.ts.map +0 -1
- package/dist/detops/mpc/broadcast-sign-result.js +0 -147
- package/dist/detops/mpc/broadcast-sign-result.js.map +0 -1
- package/dist/detops/mpc/bump-sign-result.d.ts +0 -25
- package/dist/detops/mpc/bump-sign-result.d.ts.map +0 -1
- package/dist/detops/mpc/bump-sign-result.js +0 -314
- package/dist/detops/mpc/bump-sign-result.js.map +0 -1
- package/dist/detops/mpc/client.d.ts +0 -15
- package/dist/detops/mpc/client.d.ts.map +0 -1
- package/dist/detops/mpc/client.js +0 -62
- package/dist/detops/mpc/client.js.map +0 -1
- package/dist/detops/mpc/compose-request.d.ts +0 -6
- package/dist/detops/mpc/compose-request.d.ts.map +0 -1
- package/dist/detops/mpc/compose-request.js +0 -33
- package/dist/detops/mpc/compose-request.js.map +0 -1
- package/dist/detops/mpc/context.d.ts +0 -11
- package/dist/detops/mpc/context.d.ts.map +0 -1
- package/dist/detops/mpc/context.js +0 -43
- package/dist/detops/mpc/context.js.map +0 -1
- package/dist/detops/mpc/forge-request.d.ts +0 -6
- package/dist/detops/mpc/forge-request.d.ts.map +0 -1
- package/dist/detops/mpc/forge-request.js +0 -46
- package/dist/detops/mpc/forge-request.js.map +0 -1
- package/dist/detops/mpc/gas-preflight.d.ts +0 -25
- package/dist/detops/mpc/gas-preflight.d.ts.map +0 -1
- package/dist/detops/mpc/gas-preflight.js +0 -101
- package/dist/detops/mpc/gas-preflight.js.map +0 -1
- package/dist/detops/mpc/list-ready.d.ts +0 -10
- package/dist/detops/mpc/list-ready.d.ts.map +0 -1
- package/dist/detops/mpc/list-ready.js +0 -48
- package/dist/detops/mpc/list-ready.js.map +0 -1
- package/dist/detops/mpc/management-post-sig.d.ts +0 -11
- package/dist/detops/mpc/management-post-sig.d.ts.map +0 -1
- package/dist/detops/mpc/management-post-sig.js +0 -20
- package/dist/detops/mpc/management-post-sig.js.map +0 -1
- package/dist/detops/mpc/mpa-top-up.d.ts +0 -18
- package/dist/detops/mpc/mpa-top-up.d.ts.map +0 -1
- package/dist/detops/mpc/mpa-top-up.js +0 -213
- package/dist/detops/mpc/mpa-top-up.js.map +0 -1
- package/dist/detops/mpc/register-keygen.d.ts +0 -6
- package/dist/detops/mpc/register-keygen.d.ts.map +0 -1
- package/dist/detops/mpc/register-keygen.js +0 -41
- package/dist/detops/mpc/register-keygen.js.map +0 -1
- package/dist/detops/mpc/schemas.d.ts +0 -251
- package/dist/detops/mpc/schemas.d.ts.map +0 -1
- package/dist/detops/mpc/schemas.js +0 -163
- package/dist/detops/mpc/schemas.js.map +0 -1
- package/dist/detops/mpc/sign-request-body.d.ts +0 -10
- package/dist/detops/mpc/sign-request-body.d.ts.map +0 -1
- package/dist/detops/mpc/sign-request-body.js +0 -64
- package/dist/detops/mpc/sign-request-body.js.map +0 -1
- package/dist/detops/mpc/sign-request-utils.d.ts +0 -33
- package/dist/detops/mpc/sign-request-utils.d.ts.map +0 -1
- package/dist/detops/mpc/sign-request-utils.js +0 -467
- package/dist/detops/mpc/sign-request-utils.js.map +0 -1
- package/dist/detops/mpc/transfer-native.d.ts +0 -6
- package/dist/detops/mpc/transfer-native.d.ts.map +0 -1
- package/dist/detops/mpc/transfer-native.js +0 -167
- package/dist/detops/mpc/transfer-native.js.map +0 -1
- package/dist/detops/mpc/transfer-tokens.d.ts +0 -15
- package/dist/detops/mpc/transfer-tokens.d.ts.map +0 -1
- package/dist/detops/mpc/transfer-tokens.js +0 -110
- package/dist/detops/mpc/transfer-tokens.js.map +0 -1
- package/dist/detops/mpc/trigger-sign-result.d.ts +0 -8
- package/dist/detops/mpc/trigger-sign-result.d.ts.map +0 -1
- package/dist/detops/mpc/trigger-sign-result.js +0 -244
- package/dist/detops/mpc/trigger-sign-result.js.map +0 -1
- package/dist/detops/mpc/types.d.ts +0 -62
- package/dist/detops/mpc/types.d.ts.map +0 -1
- package/dist/detops/mpc/types.js +0 -2
- package/dist/detops/mpc/types.js.map +0 -1
- package/dist/detops/node-info.d.ts +0 -27
- package/dist/detops/node-info.d.ts.map +0 -1
- package/dist/detops/node-info.js +0 -96
- package/dist/detops/node-info.js.map +0 -1
- package/dist/detops/registry/address-book.d.ts +0 -25
- package/dist/detops/registry/address-book.d.ts.map +0 -1
- package/dist/detops/registry/address-book.js +0 -83
- package/dist/detops/registry/address-book.js.map +0 -1
- package/dist/detops/registry/networks.d.ts +0 -20
- package/dist/detops/registry/networks.d.ts.map +0 -1
- package/dist/detops/registry/networks.js +0 -154
- package/dist/detops/registry/networks.js.map +0 -1
- package/dist/detops/registry/tokens.d.ts +0 -29
- package/dist/detops/registry/tokens.d.ts.map +0 -1
- package/dist/detops/registry/tokens.js +0 -142
- package/dist/detops/registry/tokens.js.map +0 -1
- package/dist/detops/result.d.ts +0 -21
- package/dist/detops/result.d.ts.map +0 -1
- package/dist/detops/result.js +0 -2
- package/dist/detops/result.js.map +0 -1
- package/dist/detops/schemas.d.ts +0 -153
- package/dist/detops/schemas.d.ts.map +0 -1
- package/dist/detops/schemas.js +0 -82
- package/dist/detops/schemas.js.map +0 -1
- package/dist/detops/signing-flow.d.ts +0 -9
- package/dist/detops/signing-flow.d.ts.map +0 -1
- package/dist/detops/signing-flow.js +0 -139
- package/dist/detops/signing-flow.js.map +0 -1
- package/dist/detops/types.d.ts +0 -58
- package/dist/detops/types.d.ts.map +0 -1
- package/dist/detops/types.js +0 -46
- package/dist/detops/types.js.map +0 -1
- package/dist/internal/ed25519/management-signing.d.ts +0 -51
- package/dist/internal/ed25519/management-signing.d.ts.map +0 -1
- package/dist/internal/ed25519/management-signing.js +0 -198
- package/dist/internal/ed25519/management-signing.js.map +0 -1
- package/dist/internal/ed25519/openssh-ed25519.d.ts +0 -20
- package/dist/internal/ed25519/openssh-ed25519.d.ts.map +0 -1
- package/dist/internal/ed25519/openssh-ed25519.js +0 -129
- package/dist/internal/ed25519/openssh-ed25519.js.map +0 -1
- package/dist/internal/management-request-signing.d.ts +0 -32
- package/dist/internal/management-request-signing.d.ts.map +0 -1
- package/dist/internal/management-request-signing.js +0 -186
- package/dist/internal/management-request-signing.js.map +0 -1
- package/dist/mcp/detops/registry/address-book.d.ts +0 -4
- package/dist/mcp/detops/registry/address-book.d.ts.map +0 -1
- package/dist/mcp/detops/registry/address-book.js +0 -39
- package/dist/mcp/detops/registry/address-book.js.map +0 -1
- package/dist/mcp/detops/registry/networks.d.ts +0 -4
- package/dist/mcp/detops/registry/networks.d.ts.map +0 -1
- package/dist/mcp/detops/registry/networks.js +0 -32
- package/dist/mcp/detops/registry/networks.js.map +0 -1
- package/dist/mcp/detops/registry/tokens.d.ts +0 -4
- package/dist/mcp/detops/registry/tokens.d.ts.map +0 -1
- package/dist/mcp/detops/registry/tokens.js +0 -43
- package/dist/mcp/detops/registry/tokens.js.map +0 -1
- package/dist/mcp/ed25519/management-signing.d.ts +0 -51
- package/dist/mcp/ed25519/management-signing.d.ts.map +0 -1
- package/dist/mcp/ed25519/management-signing.js +0 -198
- package/dist/mcp/ed25519/management-signing.js.map +0 -1
- package/dist/mcp/ed25519/openssh-ed25519.d.ts +0 -20
- package/dist/mcp/ed25519/openssh-ed25519.d.ts.map +0 -1
- package/dist/mcp/ed25519/openssh-ed25519.js +0 -129
- package/dist/mcp/ed25519/openssh-ed25519.js.map +0 -1
- package/dist/mcp/groups.d.ts +0 -71
- package/dist/mcp/groups.d.ts.map +0 -1
- package/dist/mcp/groups.js +0 -360
- package/dist/mcp/groups.js.map +0 -1
- package/dist/mcp/management-keys.d.ts +0 -4
- package/dist/mcp/management-keys.d.ts.map +0 -1
- package/dist/mcp/management-keys.js +0 -75
- package/dist/mcp/management-keys.js.map +0 -1
- package/dist/mcp/normalize.d.ts +0 -15
- package/dist/mcp/normalize.d.ts.map +0 -1
- package/dist/mcp/normalize.js +0 -204
- package/dist/mcp/normalize.js.map +0 -1
- package/dist/mcp/schemas.d.ts +0 -360
- package/dist/mcp/schemas.d.ts.map +0 -1
- package/dist/mcp/schemas.js +0 -263
- package/dist/mcp/schemas.js.map +0 -1
- package/dist/mcp/signing.d.ts +0 -32
- package/dist/mcp/signing.d.ts.map +0 -1
- package/dist/mcp/signing.js +0 -186
- package/dist/mcp/signing.js.map +0 -1
- package/dist/ops/general.d.ts +0 -11
- package/dist/ops/general.d.ts.map +0 -1
- package/dist/ops/general.js +0 -34
- package/dist/ops/general.js.map +0 -1
- package/dist/ops/groups.d.ts +0 -17
- package/dist/ops/groups.d.ts.map +0 -1
- package/dist/ops/groups.js +0 -105
- package/dist/ops/groups.js.map +0 -1
- package/dist/ops/management-signing.d.ts +0 -11
- package/dist/ops/management-signing.d.ts.map +0 -1
- package/dist/ops/management-signing.js +0 -131
- package/dist/ops/management-signing.js.map +0 -1
- package/dist/ops/result.d.ts +0 -21
- package/dist/ops/result.d.ts.map +0 -1
- package/dist/ops/result.js +0 -2
- package/dist/ops/result.js.map +0 -1
- package/dist/ops/schemas.d.ts +0 -153
- package/dist/ops/schemas.d.ts.map +0 -1
- package/dist/ops/schemas.js +0 -82
- package/dist/ops/schemas.js.map +0 -1
- package/dist/ops/signing-flow.d.ts +0 -8
- package/dist/ops/signing-flow.d.ts.map +0 -1
- package/dist/ops/signing-flow.js +0 -125
- package/dist/ops/signing-flow.js.map +0 -1
- package/dist/ops/types.d.ts +0 -58
- package/dist/ops/types.d.ts.map +0 -1
- package/dist/ops/types.js +0 -46
- package/dist/ops/types.js.map +0 -1
- package/dist/registry/address-book.d.ts +0 -25
- package/dist/registry/address-book.d.ts.map +0 -1
- package/dist/registry/address-book.js +0 -103
- package/dist/registry/address-book.js.map +0 -1
- package/dist/registry/networks.d.ts +0 -18
- package/dist/registry/networks.d.ts.map +0 -1
- package/dist/registry/networks.js +0 -180
- package/dist/registry/networks.js.map +0 -1
- package/dist/registry/tokens.d.ts +0 -29
- package/dist/registry/tokens.d.ts.map +0 -1
- package/dist/registry/tokens.js +0 -157
- package/dist/registry/tokens.js.map +0 -1
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
import { promises as fs } from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { MPA_HOME_DIR, MANAGEMENT_KEYS_DIR } from '../../config/paths.js';
|
|
4
|
-
import { discoverKeys, resolveKeyPath } from '../../config/keys.js';
|
|
5
|
-
import { signUtf8Message, readPublicKeyHex } from '../../api/management-key.js';
|
|
6
|
-
export function normalizeEd25519PublicKeyToHex(value, toMcpApiError) {
|
|
7
|
-
const trimmed = value.trim();
|
|
8
|
-
const normalizedHex = trimmed.toLowerCase().replace(/^0x/, '');
|
|
9
|
-
if (/^[a-f0-9]{64}$/.test(normalizedHex)) {
|
|
10
|
-
return normalizedHex;
|
|
11
|
-
}
|
|
12
|
-
throw toMcpApiError('Unsupported public key format; expected 64-character hex Ed25519 key');
|
|
13
|
-
}
|
|
14
|
-
export function buildManagementSigningMessage(bodyWithEmptySig) {
|
|
15
|
-
return JSON.stringify(bodyWithEmptySig);
|
|
16
|
-
}
|
|
17
|
-
export async function getPreferredSignerPublicKeyHex(deps) {
|
|
18
|
-
const { mgtGET, toMcpApiError } = deps;
|
|
19
|
-
try {
|
|
20
|
-
const raw = await mgtGET('/getPreferredSigner');
|
|
21
|
-
if (typeof raw === 'string') {
|
|
22
|
-
const s = raw.trim();
|
|
23
|
-
return s ? normalizeEd25519PublicKeyToHex(s, toMcpApiError) : undefined;
|
|
24
|
-
}
|
|
25
|
-
if (raw && typeof raw === 'object') {
|
|
26
|
-
const obj = raw;
|
|
27
|
-
const candidate = [obj.publicKeyHex, obj.publicKey, obj.key].find(v => typeof v === 'string');
|
|
28
|
-
if (!candidate || candidate.trim().length === 0) {
|
|
29
|
-
return undefined;
|
|
30
|
-
}
|
|
31
|
-
return normalizeEd25519PublicKeyToHex(candidate, toMcpApiError);
|
|
32
|
-
}
|
|
33
|
-
return undefined;
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
return undefined;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
export async function listLocalManagementPublicKeys(keyRoot, toMcpApiError) {
|
|
40
|
-
const keyDir = path.join(keyRoot, 'management_keys');
|
|
41
|
-
let entries = [];
|
|
42
|
-
try {
|
|
43
|
-
entries = await fs.readdir(keyDir);
|
|
44
|
-
}
|
|
45
|
-
catch {
|
|
46
|
-
return [];
|
|
47
|
-
}
|
|
48
|
-
const pubFiles = entries.filter(entry => entry.endsWith('.pub'));
|
|
49
|
-
const results = [];
|
|
50
|
-
for (const pubFile of pubFiles) {
|
|
51
|
-
const fileName = pubFile.slice(0, -4);
|
|
52
|
-
const pubPath = path.join(keyDir, pubFile);
|
|
53
|
-
try {
|
|
54
|
-
const raw = (await fs.readFile(pubPath, 'utf8')).trim();
|
|
55
|
-
let publicKeyHex;
|
|
56
|
-
try {
|
|
57
|
-
publicKeyHex = normalizeEd25519PublicKeyToHex(raw, toMcpApiError);
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
publicKeyHex = undefined;
|
|
61
|
-
}
|
|
62
|
-
results.push({ fileName, publicKeyRaw: raw, publicKeyHex });
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
// ignore unreadable keys
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return results;
|
|
69
|
-
}
|
|
70
|
-
async function resolvePrivateKeyPathForPublicKey(publicKey, keyRoot, config, toMcpApiError) {
|
|
71
|
-
const normalized = publicKey.replace(/^0x/i, '').toLowerCase();
|
|
72
|
-
const managementDir = path.join(keyRoot, 'management_keys');
|
|
73
|
-
if (toMcpApiError) {
|
|
74
|
-
const localKeys = await listLocalManagementPublicKeys(keyRoot, toMcpApiError);
|
|
75
|
-
for (const entry of localKeys) {
|
|
76
|
-
if (entry.publicKeyHex?.toLowerCase() === normalized) {
|
|
77
|
-
return path.join(managementDir, entry.fileName);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (config) {
|
|
82
|
-
const keys = discoverKeys(config.node.mpcConfigPath);
|
|
83
|
-
for (const key of keys) {
|
|
84
|
-
const pub = readPublicKeyHex(key.path)?.toLowerCase();
|
|
85
|
-
if (pub === normalized) {
|
|
86
|
-
return key.path;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const defaultPath = resolveKeyPath(config.signer.defaultKey, config.signer.defaultKeyPath, config.node.mpcConfigPath);
|
|
90
|
-
if (defaultPath) {
|
|
91
|
-
const defaultPub = readPublicKeyHex(defaultPath)?.toLowerCase();
|
|
92
|
-
if (defaultPub === normalized) {
|
|
93
|
-
return defaultPath;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
throw new Error(`No local private key found for management public key ${publicKey}`);
|
|
98
|
-
}
|
|
99
|
-
export async function ensureLocalKeyPairForPublicKey(publicKey, deps) {
|
|
100
|
-
const { keyRoot, toMcpApiError } = deps;
|
|
101
|
-
const keyDir = path.join(keyRoot, 'management_keys');
|
|
102
|
-
const normalizedTarget = normalizeEd25519PublicKeyToHex(publicKey, toMcpApiError);
|
|
103
|
-
const localKeys = await listLocalManagementPublicKeys(keyRoot, toMcpApiError);
|
|
104
|
-
const match = localKeys.find(k => k.publicKeyHex === normalizedTarget);
|
|
105
|
-
if (!match) {
|
|
106
|
-
throw toMcpApiError('Preferred signer key does not exist locally in management_keys', { preferredKey: normalizedTarget, keyDirectory: keyDir });
|
|
107
|
-
}
|
|
108
|
-
const privateKeyPath = path.join(keyDir, match.fileName);
|
|
109
|
-
try {
|
|
110
|
-
await fs.access(privateKeyPath);
|
|
111
|
-
}
|
|
112
|
-
catch {
|
|
113
|
-
throw toMcpApiError('Preferred signer key does not have a corresponding private key', { preferredKey: normalizedTarget, expectedPrivateKeyPath: privateKeyPath });
|
|
114
|
-
}
|
|
115
|
-
return {
|
|
116
|
-
fileName: match.fileName,
|
|
117
|
-
publicKeyPath: path.join(keyDir, `${match.fileName}.pub`),
|
|
118
|
-
privateKeyPath,
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
export async function resolvePreferredManagementKeyOption(keyOptions, deps) {
|
|
122
|
-
const { keyRoot, toMcpApiError, mgtGET } = deps;
|
|
123
|
-
const preferred = await getPreferredSignerPublicKeyHex({ mgtGET, toMcpApiError });
|
|
124
|
-
const failures = [];
|
|
125
|
-
if (preferred) {
|
|
126
|
-
try {
|
|
127
|
-
const normalizedPreferred = normalizeEd25519PublicKeyToHex(preferred, toMcpApiError);
|
|
128
|
-
const selected = keyOptions.find(opt => normalizeEd25519PublicKeyToHex(opt.value, toMcpApiError) ===
|
|
129
|
-
normalizedPreferred);
|
|
130
|
-
if (!selected) {
|
|
131
|
-
throw toMcpApiError('Preferred signer is not in allowed management keys', {
|
|
132
|
-
preferredSigner: normalizedPreferred,
|
|
133
|
-
allowedKeys: keyOptions.map(k => k.value),
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
await ensureLocalKeyPairForPublicKey(normalizedPreferred, {
|
|
137
|
-
keyRoot,
|
|
138
|
-
toMcpApiError,
|
|
139
|
-
});
|
|
140
|
-
return selected;
|
|
141
|
-
}
|
|
142
|
-
catch (error) {
|
|
143
|
-
failures.push({
|
|
144
|
-
key: preferred,
|
|
145
|
-
reason: error instanceof Error ? error.message : String(error),
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
for (const opt of keyOptions) {
|
|
150
|
-
try {
|
|
151
|
-
await ensureLocalKeyPairForPublicKey(opt.value, {
|
|
152
|
-
keyRoot,
|
|
153
|
-
toMcpApiError,
|
|
154
|
-
});
|
|
155
|
-
return opt;
|
|
156
|
-
}
|
|
157
|
-
catch (error) {
|
|
158
|
-
failures.push({
|
|
159
|
-
key: opt.value,
|
|
160
|
-
reason: error instanceof Error ? error.message : String(error),
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
throw toMcpApiError('No preferred signer is set, and no allowed management key has a usable local private key', { failures });
|
|
165
|
-
}
|
|
166
|
-
export async function getPrivateKeyStatus(option, deps) {
|
|
167
|
-
try {
|
|
168
|
-
await ensureLocalKeyPairForPublicKey(option.value, deps);
|
|
169
|
-
return { available: true };
|
|
170
|
-
}
|
|
171
|
-
catch (error) {
|
|
172
|
-
return {
|
|
173
|
-
available: false,
|
|
174
|
-
reason: error instanceof Error ? error.message : String(error),
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
export async function assertAgentCanSignManagementRequests(deps) {
|
|
179
|
-
const { keyRoot, mgtGET, toMcpApiError } = deps;
|
|
180
|
-
const configuredKeys = await mgtGET('/getAllowedEd25519MgtKeys');
|
|
181
|
-
if (configuredKeys.length === 0) {
|
|
182
|
-
throw toMcpApiError('No EdDSA management keys are configured. Configure a bootstrap Ed25519 key before agent-signed management requests.');
|
|
183
|
-
}
|
|
184
|
-
if (configuredKeys.length === 1) {
|
|
185
|
-
const bootstrap = configuredKeys[0];
|
|
186
|
-
await ensureLocalKeyPairForPublicKey(bootstrap.publicKey, {
|
|
187
|
-
keyRoot,
|
|
188
|
-
toMcpApiError,
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
export async function signManagementMessage(option, message, deps) {
|
|
193
|
-
await deps.assertAgentCanSignManagementRequests();
|
|
194
|
-
const keyPath = await resolvePrivateKeyPathForPublicKey(option.value, deps.keyRoot, deps.config, deps.toMcpApiError);
|
|
195
|
-
return signUtf8Message(keyPath, message);
|
|
196
|
-
}
|
|
197
|
-
export { MANAGEMENT_KEYS_DIR, MPA_HOME_DIR };
|
|
198
|
-
//# sourceMappingURL=management-signing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"management-signing.js","sourceRoot":"","sources":["../../../src/internal/ed25519/management-signing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenSSH "openssh-key-v1" unencrypted Ed25519 PEM ("BEGIN OPENSSH PRIVATE KEY") import.
|
|
3
|
-
* Node.js + OpenSSL 3.6+ commonly reject this envelope via createPrivateKey(); we decode wire
|
|
4
|
-
* format per OpenSSH PROTOCOL.key and import via JWK.
|
|
5
|
-
*/
|
|
6
|
-
import { KeyObject } from "crypto";
|
|
7
|
-
export declare const OPENSSH_V1_MAGIC: Buffer<ArrayBuffer>;
|
|
8
|
-
export declare function readSshString(buf: Buffer, offset: number): {
|
|
9
|
-
value: Buffer;
|
|
10
|
-
next: number;
|
|
11
|
-
};
|
|
12
|
-
/** @returns first 32-byte seed and 32-byte public key (from private pair string). */
|
|
13
|
-
export declare function parseUnencryptedOpenSshEd25519FromV1Blob(blob: Buffer): {
|
|
14
|
-
seed32: Buffer;
|
|
15
|
-
pub32: Buffer;
|
|
16
|
-
comment: string;
|
|
17
|
-
};
|
|
18
|
-
/** Import unencrypted ssh-keygen/OpenSSH PEM into a native KeyObject (Ed25519 only). */
|
|
19
|
-
export declare function importUnencryptedOpenSshEd25519PrivateKeyFromPem(pemArmored: string): KeyObject;
|
|
20
|
-
//# sourceMappingURL=openssh-ed25519.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openssh-ed25519.d.ts","sourceRoot":"","sources":["../../../src/internal/ed25519/openssh-ed25519.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAoB,SAAS,EAAE,MAAM,QAAQ,CAAA;AAEpD,eAAO,MAAM,gBAAgB,qBAAkC,CAAA;AAE/D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAU1F;AAoBD,qFAAqF;AACrF,wBAAgB,wCAAwC,CAAC,IAAI,EAAE,MAAM,GAAG;IACtE,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,CA4FA;AAMD,wFAAwF;AACxF,wBAAgB,gDAAgD,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAY9F"}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenSSH "openssh-key-v1" unencrypted Ed25519 PEM ("BEGIN OPENSSH PRIVATE KEY") import.
|
|
3
|
-
* Node.js + OpenSSL 3.6+ commonly reject this envelope via createPrivateKey(); we decode wire
|
|
4
|
-
* format per OpenSSH PROTOCOL.key and import via JWK.
|
|
5
|
-
*/
|
|
6
|
-
import { createPrivateKey } from "crypto";
|
|
7
|
-
export const OPENSSH_V1_MAGIC = Buffer.from("openssh-key-v1\0");
|
|
8
|
-
export function readSshString(buf, offset) {
|
|
9
|
-
if (offset + 4 > buf.length) {
|
|
10
|
-
throw new Error(`SSH string header EOF at offset ${offset}`);
|
|
11
|
-
}
|
|
12
|
-
const len = buf.readUInt32BE(offset);
|
|
13
|
-
const next = offset + 4 + len;
|
|
14
|
-
if (next > buf.length || len < 0) {
|
|
15
|
-
throw new Error(`SSH string length ${len} out of range at offset ${offset}`);
|
|
16
|
-
}
|
|
17
|
-
return { value: buf.subarray(offset + 4, next), next };
|
|
18
|
-
}
|
|
19
|
-
function pemBase64BodyForOpenSshBlock(pemArmored) {
|
|
20
|
-
const m = pemArmored.match(/-----BEGIN OPENSSH PRIVATE KEY-----([\s\S]*?)-----END OPENSSH PRIVATE KEY-----/i);
|
|
21
|
-
if (!m) {
|
|
22
|
-
throw new Error("missing -----BEGIN/END OPENSSH PRIVATE KEY----- PEM block");
|
|
23
|
-
}
|
|
24
|
-
const compact = m[1].replace(/\s+/g, "");
|
|
25
|
-
return Buffer.from(compact, "base64");
|
|
26
|
-
}
|
|
27
|
-
function assertOpenSshPadding(privList, offsetAfterComment) {
|
|
28
|
-
for (let pad = 1, o = offsetAfterComment; o < privList.length; pad++, o++) {
|
|
29
|
-
const expected = pad & 0xff;
|
|
30
|
-
if (privList[o] !== expected) {
|
|
31
|
-
throw new Error("invalid OpenSSH private key padding (file may be truncated or encrypted incorrectly)");
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
/** @returns first 32-byte seed and 32-byte public key (from private pair string). */
|
|
36
|
-
export function parseUnencryptedOpenSshEd25519FromV1Blob(blob) {
|
|
37
|
-
if (blob.length < OPENSSH_V1_MAGIC.length || !blob.subarray(0, OPENSSH_V1_MAGIC.length).equals(OPENSSH_V1_MAGIC)) {
|
|
38
|
-
throw new Error("not an openssh-key-v1 blob");
|
|
39
|
-
}
|
|
40
|
-
let offset = OPENSSH_V1_MAGIC.length;
|
|
41
|
-
const cipherName = readSshString(blob, offset);
|
|
42
|
-
offset = cipherName.next;
|
|
43
|
-
const kdfName = readSshString(blob, offset);
|
|
44
|
-
offset = kdfName.next;
|
|
45
|
-
const kdfOptions = readSshString(blob, offset);
|
|
46
|
-
offset = kdfOptions.next;
|
|
47
|
-
if (cipherName.value.toString("utf8") !== "none" || kdfName.value.toString("utf8") !== "none") {
|
|
48
|
-
throw new Error("OpenSSH private key is encrypted; use `ssh-keygen -p -N '' -m PKCS8 -f <keyfile>` to write an importable PKCS#8 PEM, or provide an unencrypted key");
|
|
49
|
-
}
|
|
50
|
-
const nKeys = blob.readUInt32BE(offset);
|
|
51
|
-
offset += 4;
|
|
52
|
-
if (nKeys !== 1) {
|
|
53
|
-
throw new Error(`OpenSSH file has ${nKeys} keys; only single-key Ed25519 files are supported`);
|
|
54
|
-
}
|
|
55
|
-
/** Public ssh wire blobs (validated against private material). */
|
|
56
|
-
const pubBlob = readSshString(blob, offset);
|
|
57
|
-
offset = pubBlob.next;
|
|
58
|
-
const encryptedPrivateListMaybe = readSshString(blob, offset);
|
|
59
|
-
offset = encryptedPrivateListMaybe.next;
|
|
60
|
-
const privList = encryptedPrivateListMaybe.value;
|
|
61
|
-
if (privList.length < 16) {
|
|
62
|
-
throw new Error("OpenSSH private key list too short");
|
|
63
|
-
}
|
|
64
|
-
const check1 = privList.readUInt32BE(0);
|
|
65
|
-
const check2 = privList.readUInt32BE(4);
|
|
66
|
-
if (check1 !== check2) {
|
|
67
|
-
throw new Error("OpenSSH private key checkints mismatch (wrong passphrase or corrupted file)");
|
|
68
|
-
}
|
|
69
|
-
let inner = 8;
|
|
70
|
-
const algo = readSshString(privList, inner);
|
|
71
|
-
inner = algo.next;
|
|
72
|
-
const ak = algo.value.toString("utf8");
|
|
73
|
-
if (ak !== "ssh-ed25519") {
|
|
74
|
-
throw new Error(`OpenSSH private key algorithm is ${JSON.stringify(ak)}, expected "ssh-ed25519"`);
|
|
75
|
-
}
|
|
76
|
-
const pubFromPrivate = readSshString(privList, inner);
|
|
77
|
-
inner = pubFromPrivate.next;
|
|
78
|
-
if (pubFromPrivate.value.length !== 32) {
|
|
79
|
-
throw new Error(`invalid Ed25519 public key length ${pubFromPrivate.value.length}`);
|
|
80
|
-
}
|
|
81
|
-
const pair = readSshString(privList, inner);
|
|
82
|
-
inner = pair.next;
|
|
83
|
-
if (pair.value.length !== 64) {
|
|
84
|
-
throw new Error(`invalid Ed25519 secret+public concat length ${pair.value.length}`);
|
|
85
|
-
}
|
|
86
|
-
const seed32 = Buffer.from(pair.value.subarray(0, 32));
|
|
87
|
-
const duplicatePub32 = Buffer.from(pair.value.subarray(32, 64));
|
|
88
|
-
if (!duplicatePub32.equals(pubFromPrivate.value)) {
|
|
89
|
-
throw new Error("OpenSSH Ed25519 public key mismatch inside private pair (corrupted key)");
|
|
90
|
-
}
|
|
91
|
-
const cm = readSshString(privList, inner);
|
|
92
|
-
inner = cm.next;
|
|
93
|
-
/** Wire-format public blob should match pubkey from private serialization. */
|
|
94
|
-
const pubOuter = pubBlob.value;
|
|
95
|
-
let po = 0;
|
|
96
|
-
const pubAlgo = readSshString(pubOuter, po);
|
|
97
|
-
po = pubAlgo.next;
|
|
98
|
-
if (pubAlgo.value.toString("utf8") !== "ssh-ed25519") {
|
|
99
|
-
throw new Error("OpenSSH outer public blob algorithm mismatch");
|
|
100
|
-
}
|
|
101
|
-
const pubOuterKeyBytes = readSshString(pubOuter, po).value;
|
|
102
|
-
if (!pubOuterKeyBytes.equals(pubFromPrivate.value)) {
|
|
103
|
-
throw new Error("OpenSSH outer public blob does not match embedded private pubkey (corrupted key)");
|
|
104
|
-
}
|
|
105
|
-
assertOpenSshPadding(privList, inner);
|
|
106
|
-
return {
|
|
107
|
-
seed32,
|
|
108
|
-
pub32: pubFromPrivate.value,
|
|
109
|
-
comment: cm.value.toString("utf8"),
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
function b64Url(buf) {
|
|
113
|
-
return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
|
|
114
|
-
}
|
|
115
|
-
/** Import unencrypted ssh-keygen/OpenSSH PEM into a native KeyObject (Ed25519 only). */
|
|
116
|
-
export function importUnencryptedOpenSshEd25519PrivateKeyFromPem(pemArmored) {
|
|
117
|
-
const blob = pemBase64BodyForOpenSshBlock(pemArmored.trim());
|
|
118
|
-
const { seed32, pub32 } = parseUnencryptedOpenSshEd25519FromV1Blob(blob);
|
|
119
|
-
return createPrivateKey({
|
|
120
|
-
format: "jwk",
|
|
121
|
-
key: {
|
|
122
|
-
kty: "OKP",
|
|
123
|
-
crv: "Ed25519",
|
|
124
|
-
d: b64Url(seed32),
|
|
125
|
-
x: b64Url(pub32),
|
|
126
|
-
},
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
//# sourceMappingURL=openssh-ed25519.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openssh-ed25519.js","sourceRoot":"","sources":["../../../src/internal/ed25519/openssh-ed25519.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { NodeSdkConfig } from '../config/schema.js';
|
|
2
|
-
import type { SdkResult } from '../detops/result.js';
|
|
3
|
-
import { type ManagementKeyOption } from './ed25519/management-signing.js';
|
|
4
|
-
import type { SelectedSigningKey } from '../schemas/extended.js';
|
|
5
|
-
export type { ManagementKeyOption } from './ed25519/management-signing.js';
|
|
6
|
-
export declare function fetchManagementKeyOptions(config: NodeSdkConfig): Promise<SdkResult<ManagementKeyOption[]>>;
|
|
7
|
-
export declare function resolveManagementSigningKeyOption(config: NodeSdkConfig, keyOptions: ManagementKeyOption[]): Promise<SdkResult<ManagementKeyOption>>;
|
|
8
|
-
export declare function getPreferredManagementKeyHex(config: NodeSdkConfig): Promise<SdkResult<{
|
|
9
|
-
publicKeyHex?: string;
|
|
10
|
-
}>>;
|
|
11
|
-
export type SignedManagementRequest = {
|
|
12
|
-
selectedSigningKey: ManagementKeyOption;
|
|
13
|
-
unsignedBody: Record<string, unknown>;
|
|
14
|
-
signingMessage: string;
|
|
15
|
-
signature: string;
|
|
16
|
-
body: Record<string, unknown>;
|
|
17
|
-
};
|
|
18
|
-
export declare function prepareSignedManagementRequest(config: NodeSdkConfig, buildUnsignedBody: (ctx: {
|
|
19
|
-
selectedSigningKey: ManagementKeyOption;
|
|
20
|
-
}) => Record<string, unknown> | Promise<Record<string, unknown>>): Promise<SdkResult<SignedManagementRequest>>;
|
|
21
|
-
export declare function buildClientSigManagementPostBody(unsignedBody: Record<string, unknown>, signedMessage: string, clientSig: string): Record<string, unknown>;
|
|
22
|
-
export declare function buildTokenRegistrySigningMessage(payload: Record<string, unknown>): string;
|
|
23
|
-
export declare function prepareActionSignedManagementRequest(config: NodeSdkConfig, buildSigningPayload: (ctx: {
|
|
24
|
-
selectedSigningKey: ManagementKeyOption;
|
|
25
|
-
}) => Record<string, unknown> | Promise<Record<string, unknown>>): Promise<SdkResult<{
|
|
26
|
-
selectedSigningKey: ManagementKeyOption;
|
|
27
|
-
signingMessage: string;
|
|
28
|
-
signature: string;
|
|
29
|
-
}>>;
|
|
30
|
-
export declare function toSelectedSigningKey(option: ManagementKeyOption): SelectedSigningKey;
|
|
31
|
-
export declare function postSignedManagementRequest(config: NodeSdkConfig, path: string, body: Record<string, unknown>): Promise<SdkResult<unknown>>;
|
|
32
|
-
//# sourceMappingURL=management-request-signing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"management-request-signing.d.ts","sourceRoot":"","sources":["../../src/internal/management-request-signing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAOvD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAMN,KAAK,mBAAmB,EACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAE/D,YAAY,EAAC,mBAAmB,EAAC,MAAM,iCAAiC,CAAC;AAiDzE,wBAAsB,yBAAyB,CAC9C,MAAM,EAAE,aAAa,GACnB,OAAO,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAwB3C;AAED,wBAAsB,iCAAiC,CACtD,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,mBAAmB,EAAE,GAC/B,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAezC;AAED,wBAAsB,4BAA4B,CACjD,MAAM,EAAE,aAAa,GACnB,OAAO,CAAC,SAAS,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC,CAe7C;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,kBAAkB,EAAE,mBAAmB,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B,CAAC;AAEF,wBAAsB,8BAA8B,CACnD,MAAM,EAAE,aAAa,EACrB,iBAAiB,EAAE,CAAC,GAAG,EAAE;IACxB,kBAAkB,EAAE,mBAAmB,CAAC;CACxC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC9D,OAAO,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,CA+C7C;AAED,wBAAgB,gCAAgC,CAC/C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzB;AAED,wBAAgB,gCAAgC,CAC/C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAER;AAED,wBAAsB,oCAAoC,CACzD,MAAM,EAAE,aAAa,EACrB,mBAAmB,EAAE,CAAC,GAAG,EAAE;IAC1B,kBAAkB,EAAE,mBAAmB,CAAC;CACxC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC9D,OAAO,CACT,SAAS,CAAC;IACT,kBAAkB,EAAE,mBAAmB,CAAC;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC,CACF,CAyCA;AAED,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,mBAAmB,GACzB,kBAAkB,CAQpB;AAED,wBAAsB,2BAA2B,CAChD,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAE7B"}
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
import { fetchPublicMgtKeyNonce, managementGet, managementPost, } from '../api/management-api.js';
|
|
2
|
-
import { MPA_HOME_DIR } from '../config/paths.js';
|
|
3
|
-
import { resolvePreferredManagementKeyOption, getPreferredSignerPublicKeyHex, buildManagementSigningMessage, signManagementMessage, assertAgentCanSignManagementRequests, } from './ed25519/management-signing.js';
|
|
4
|
-
function mgtGetAdapter(config) {
|
|
5
|
-
return async (cfg, path, params) => {
|
|
6
|
-
const search = new URLSearchParams();
|
|
7
|
-
if (params) {
|
|
8
|
-
for (const [key, value] of Object.entries(params)) {
|
|
9
|
-
if (value !== null && value !== undefined) {
|
|
10
|
-
search.set(key, String(value));
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
const query = search.toString();
|
|
15
|
-
const fullPath = query.length > 0 ? `${path}?${query}` : path;
|
|
16
|
-
return managementGet(cfg, fullPath);
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
function toError(reason, data) {
|
|
20
|
-
const error = new Error(reason);
|
|
21
|
-
if (data !== undefined) {
|
|
22
|
-
error.data = data;
|
|
23
|
-
}
|
|
24
|
-
return error;
|
|
25
|
-
}
|
|
26
|
-
async function runSigned(fn) {
|
|
27
|
-
try {
|
|
28
|
-
return { ok: true, data: await fn() };
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
return {
|
|
32
|
-
ok: false,
|
|
33
|
-
reason: error instanceof Error ? error.message : String(error),
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
export async function fetchManagementKeyOptions(config) {
|
|
38
|
-
const keys = await managementGet(config, '/getAllowedEd25519MgtKeys');
|
|
39
|
-
if (!keys.ok) {
|
|
40
|
-
return keys;
|
|
41
|
-
}
|
|
42
|
-
const options = [];
|
|
43
|
-
for (const item of keys.data) {
|
|
44
|
-
const nonceResult = await fetchPublicMgtKeyNonce(config, item.publicKey);
|
|
45
|
-
if (!nonceResult.ok) {
|
|
46
|
-
return nonceResult;
|
|
47
|
-
}
|
|
48
|
-
options.push({
|
|
49
|
-
id: `eddsa:${item.publicKey}`,
|
|
50
|
-
kind: 'EdDSA',
|
|
51
|
-
value: item.publicKey,
|
|
52
|
-
nonce: nonceResult.data.nonce,
|
|
53
|
-
label: item.label,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
return { ok: true, data: options };
|
|
57
|
-
}
|
|
58
|
-
export async function resolveManagementSigningKeyOption(config, keyOptions) {
|
|
59
|
-
return runSigned(async () => {
|
|
60
|
-
const mgtGET = async (path, params) => {
|
|
61
|
-
const result = await mgtGetAdapter(config)(config, path, params);
|
|
62
|
-
if (!result.ok) {
|
|
63
|
-
throw toError(result.reason);
|
|
64
|
-
}
|
|
65
|
-
return result.data;
|
|
66
|
-
};
|
|
67
|
-
return resolvePreferredManagementKeyOption(keyOptions, {
|
|
68
|
-
keyRoot: MPA_HOME_DIR,
|
|
69
|
-
toMcpApiError: toError,
|
|
70
|
-
mgtGET,
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
export async function getPreferredManagementKeyHex(config) {
|
|
75
|
-
return runSigned(async () => {
|
|
76
|
-
const mgtGET = async (path) => {
|
|
77
|
-
const result = await managementGet(config, path);
|
|
78
|
-
if (!result.ok) {
|
|
79
|
-
throw toError(result.reason);
|
|
80
|
-
}
|
|
81
|
-
return result.data;
|
|
82
|
-
};
|
|
83
|
-
const publicKeyHex = await getPreferredSignerPublicKeyHex({
|
|
84
|
-
mgtGET,
|
|
85
|
-
toMcpApiError: toError,
|
|
86
|
-
});
|
|
87
|
-
return { publicKeyHex };
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
export async function prepareSignedManagementRequest(config, buildUnsignedBody) {
|
|
91
|
-
return runSigned(async () => {
|
|
92
|
-
const keyOptionsResult = await fetchManagementKeyOptions(config);
|
|
93
|
-
if (!keyOptionsResult.ok) {
|
|
94
|
-
throw toError(keyOptionsResult.reason);
|
|
95
|
-
}
|
|
96
|
-
const selectedResult = await resolveManagementSigningKeyOption(config, keyOptionsResult.data);
|
|
97
|
-
if (!selectedResult.ok) {
|
|
98
|
-
throw toError(selectedResult.reason);
|
|
99
|
-
}
|
|
100
|
-
const selectedSigningKey = selectedResult.data;
|
|
101
|
-
const unsignedBody = await buildUnsignedBody({ selectedSigningKey });
|
|
102
|
-
const signingMessage = buildManagementSigningMessage(unsignedBody);
|
|
103
|
-
const mgtGET = async (path) => {
|
|
104
|
-
const result = await managementGet(config, path);
|
|
105
|
-
if (!result.ok) {
|
|
106
|
-
throw toError(result.reason);
|
|
107
|
-
}
|
|
108
|
-
return result.data;
|
|
109
|
-
};
|
|
110
|
-
const signature = await signManagementMessage(selectedSigningKey, signingMessage, {
|
|
111
|
-
keyRoot: MPA_HOME_DIR,
|
|
112
|
-
toMcpApiError: toError,
|
|
113
|
-
config,
|
|
114
|
-
assertAgentCanSignManagementRequests: async () => {
|
|
115
|
-
await assertAgentCanSignManagementRequests({
|
|
116
|
-
keyRoot: MPA_HOME_DIR,
|
|
117
|
-
mgtGET,
|
|
118
|
-
toMcpApiError: toError,
|
|
119
|
-
});
|
|
120
|
-
},
|
|
121
|
-
});
|
|
122
|
-
return {
|
|
123
|
-
selectedSigningKey,
|
|
124
|
-
unsignedBody,
|
|
125
|
-
signingMessage,
|
|
126
|
-
signature,
|
|
127
|
-
body: { ...unsignedBody, Sig: signature },
|
|
128
|
-
};
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
export function buildClientSigManagementPostBody(unsignedBody, signedMessage, clientSig) {
|
|
132
|
-
const { Sig: _sig, ...fields } = unsignedBody;
|
|
133
|
-
void _sig;
|
|
134
|
-
return { ...fields, signedMessage, clientSig };
|
|
135
|
-
}
|
|
136
|
-
export function buildTokenRegistrySigningMessage(payload) {
|
|
137
|
-
return JSON.stringify(payload);
|
|
138
|
-
}
|
|
139
|
-
export async function prepareActionSignedManagementRequest(config, buildSigningPayload) {
|
|
140
|
-
return runSigned(async () => {
|
|
141
|
-
const keyOptionsResult = await fetchManagementKeyOptions(config);
|
|
142
|
-
if (!keyOptionsResult.ok) {
|
|
143
|
-
throw toError(keyOptionsResult.reason);
|
|
144
|
-
}
|
|
145
|
-
const selectedResult = await resolveManagementSigningKeyOption(config, keyOptionsResult.data);
|
|
146
|
-
if (!selectedResult.ok) {
|
|
147
|
-
throw toError(selectedResult.reason);
|
|
148
|
-
}
|
|
149
|
-
const selectedSigningKey = selectedResult.data;
|
|
150
|
-
const signingPayload = await buildSigningPayload({ selectedSigningKey });
|
|
151
|
-
const signingMessage = buildTokenRegistrySigningMessage(signingPayload);
|
|
152
|
-
const mgtGET = async (path) => {
|
|
153
|
-
const result = await managementGet(config, path);
|
|
154
|
-
if (!result.ok) {
|
|
155
|
-
throw toError(result.reason);
|
|
156
|
-
}
|
|
157
|
-
return result.data;
|
|
158
|
-
};
|
|
159
|
-
const signature = await signManagementMessage(selectedSigningKey, signingMessage, {
|
|
160
|
-
keyRoot: MPA_HOME_DIR,
|
|
161
|
-
toMcpApiError: toError,
|
|
162
|
-
config,
|
|
163
|
-
assertAgentCanSignManagementRequests: async () => {
|
|
164
|
-
await assertAgentCanSignManagementRequests({
|
|
165
|
-
keyRoot: MPA_HOME_DIR,
|
|
166
|
-
mgtGET,
|
|
167
|
-
toMcpApiError: toError,
|
|
168
|
-
});
|
|
169
|
-
},
|
|
170
|
-
});
|
|
171
|
-
return { selectedSigningKey, signingMessage, signature };
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
export function toSelectedSigningKey(option) {
|
|
175
|
-
return {
|
|
176
|
-
id: option.id,
|
|
177
|
-
kind: option.kind,
|
|
178
|
-
value: option.value,
|
|
179
|
-
nonce: option.nonce,
|
|
180
|
-
label: option.label,
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
export async function postSignedManagementRequest(config, path, body) {
|
|
184
|
-
return managementPost(config, path, body);
|
|
185
|
-
}
|
|
186
|
-
//# sourceMappingURL=management-request-signing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"management-request-signing.js","sourceRoot":"","sources":["../../src/internal/management-request-signing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import type { NodeSdkConfig } from '../../../config/schema.js';
|
|
3
|
-
export declare function registerAddressBookTools(server: McpServer, config: NodeSdkConfig): void;
|
|
4
|
-
//# sourceMappingURL=address-book.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"address-book.d.ts","sourceRoot":"","sources":["../../../../src/mcp/detops/registry/address-book.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAEvE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAa7D,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,aAAa,GACnB,IAAI,CAuDN"}
|