@iicp/client 0.7.12 → 0.7.35
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 +120 -19
- package/dist/backends/anthropic.d.ts +40 -0
- package/dist/backends/anthropic.d.ts.map +1 -0
- package/dist/backends/anthropic.js +205 -0
- package/dist/backends/anthropic.js.map +1 -0
- package/dist/backends/index.d.ts +1 -1
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +3 -1
- package/dist/backends/index.js.map +1 -1
- package/dist/cip_policy.d.ts +9 -0
- package/dist/cip_policy.d.ts.map +1 -1
- package/dist/cip_policy.js +13 -0
- package/dist/cip_policy.js.map +1 -1
- package/dist/cli.d.ts +24 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +205 -35
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +122 -36
- package/dist/client.js.map +1 -1
- package/dist/confidentiality.d.ts +14 -0
- package/dist/confidentiality.d.ts.map +1 -0
- package/dist/confidentiality.js +104 -0
- package/dist/confidentiality.js.map +1 -0
- package/dist/delegation.d.ts +40 -0
- package/dist/delegation.d.ts.map +1 -0
- package/dist/delegation.js +76 -0
- package/dist/delegation.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/instance_lock.d.ts +11 -0
- package/dist/instance_lock.d.ts.map +1 -0
- package/dist/instance_lock.js +86 -0
- package/dist/instance_lock.js.map +1 -0
- package/dist/node.d.ts +48 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +0 -0
- package/dist/node.js.map +1 -1
- package/dist/node_log.d.ts +5 -0
- package/dist/node_log.d.ts.map +1 -0
- package/dist/node_log.js +69 -0
- package/dist/node_log.js.map +1 -0
- package/dist/qualify.js +2 -2
- package/dist/qualify.js.map +1 -1
- package/dist/types.d.ts +10 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -7,13 +7,64 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
exports.IicpClient = void 0;
|
|
8
8
|
const node_crypto_1 = require("node:crypto");
|
|
9
9
|
const errors_js_1 = require("./errors.js");
|
|
10
|
+
const confidentiality_js_1 = require("./confidentiality.js");
|
|
10
11
|
const INTENT_RE = /^urn:iicp:intent:[a-z0-9_:/-]+$/;
|
|
11
12
|
const MAX_TIMEOUT_MS = 120_000;
|
|
12
13
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
13
14
|
const MAX_RETRIES = 3;
|
|
14
15
|
const TRANSIENT_STATUSES = new Set([429, 502, 503, 504]);
|
|
16
|
+
/** SSRF guard: return true only if url is safe to use as a node endpoint (#388). */
|
|
17
|
+
function _isSsrfSafe(url) {
|
|
18
|
+
let parsed;
|
|
19
|
+
try {
|
|
20
|
+
parsed = new URL(url);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
if (!["http:", "https:"].includes(parsed.protocol))
|
|
26
|
+
return false;
|
|
27
|
+
const host = parsed.hostname.toLowerCase();
|
|
28
|
+
if (!host)
|
|
29
|
+
return false;
|
|
30
|
+
if (["localhost", "0.0.0.0", "::1", "::"].includes(host))
|
|
31
|
+
return false;
|
|
32
|
+
const blockedSuffixes = [".local", ".internal", ".lan", ".test", ".invalid", ".localhost"];
|
|
33
|
+
if (blockedSuffixes.some((s) => host.endsWith(s)))
|
|
34
|
+
return false;
|
|
35
|
+
// IPv6 address — URL.hostname strips brackets, leaving e.g. "2a0a:a543::1"
|
|
36
|
+
if (host.includes(":")) {
|
|
37
|
+
// Block link-local (fe80:) and unique-local (fc00::/7)
|
|
38
|
+
if (/^(fe80:|fc[0-9a-f]{2}:|fd[0-9a-f]{2}:)/i.test(host))
|
|
39
|
+
return false;
|
|
40
|
+
return true; // global unicast IPv6 — safe
|
|
41
|
+
}
|
|
42
|
+
if (!host.includes("."))
|
|
43
|
+
return false; // bare Docker service name
|
|
44
|
+
const ipv4Match = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(host);
|
|
45
|
+
if (ipv4Match) {
|
|
46
|
+
const [a, b, c, d] = ipv4Match.slice(1).map(Number);
|
|
47
|
+
if (a === 10)
|
|
48
|
+
return false; // RFC1918 10/8
|
|
49
|
+
if (a === 172 && b >= 16 && b <= 31)
|
|
50
|
+
return false; // RFC1918 172.16/12
|
|
51
|
+
if (a === 192 && b === 168)
|
|
52
|
+
return false; // RFC1918 192.168/16
|
|
53
|
+
if (a === 127)
|
|
54
|
+
return false; // loopback
|
|
55
|
+
if (a === 169 && b === 254)
|
|
56
|
+
return false; // link-local / metadata
|
|
57
|
+
if (a === 100 && b >= 64 && b <= 127)
|
|
58
|
+
return false; // CGNAT
|
|
59
|
+
if (a === 0)
|
|
60
|
+
return false; // this-network
|
|
61
|
+
void c;
|
|
62
|
+
void d;
|
|
63
|
+
}
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
15
66
|
const DEFAULT_CONFIG = {
|
|
16
|
-
directory_url: "https://iicp.network",
|
|
67
|
+
directory_url: "https://iicp.network/api",
|
|
17
68
|
timeout_ms: DEFAULT_TIMEOUT_MS,
|
|
18
69
|
tls_verify: true,
|
|
19
70
|
};
|
|
@@ -21,6 +72,11 @@ class IicpClient {
|
|
|
21
72
|
cfg;
|
|
22
73
|
constructor(config) {
|
|
23
74
|
const merged = { ...DEFAULT_CONFIG, ...config };
|
|
75
|
+
if (merged.tls_verify === false) {
|
|
76
|
+
console.warn("[iicp-client] tls_verify: false has no effect — TLS certificate verification " +
|
|
77
|
+
"cannot be disabled via this config field. Use NODE_TLS_REJECT_UNAUTHORIZED=0 " +
|
|
78
|
+
"in the environment if you need to disable cert verification for local testing.");
|
|
79
|
+
}
|
|
24
80
|
// SDK-04: reject oversized timeouts at construction time
|
|
25
81
|
if (merged.timeout_ms > MAX_TIMEOUT_MS) {
|
|
26
82
|
throw new errors_js_1.IicpError(`timeout_ms must be ≤ ${MAX_TIMEOUT_MS}; got ${merged.timeout_ms}`, "SDK-04");
|
|
@@ -43,13 +99,20 @@ class IicpClient {
|
|
|
43
99
|
params.set("qos", o.qos);
|
|
44
100
|
if (o.min_reputation !== undefined)
|
|
45
101
|
params.set("min_reputation", String(o.min_reputation));
|
|
46
|
-
const data = await this._get(`${this.cfg.directory_url}/
|
|
102
|
+
const data = await this._get(`${this.cfg.directory_url.replace(/\/$/, "")}/v1/discover?${params}`, 5_000, traceparent);
|
|
47
103
|
const raw = data.nodes ?? [];
|
|
48
|
-
|
|
104
|
+
const nodes = [];
|
|
105
|
+
for (const n of raw) {
|
|
49
106
|
const node = n;
|
|
50
|
-
|
|
107
|
+
const endpoint = String(node.endpoint ?? "");
|
|
108
|
+
if (!_isSsrfSafe(endpoint)) {
|
|
109
|
+
console.warn(`[iicp-client] SSRF guard: skipping node ${String(node.node_id ?? "?").slice(0, 8)} — endpoint ${endpoint} is not publicly routable`);
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
const rawCx = node.cx_public_key;
|
|
113
|
+
nodes.push({
|
|
51
114
|
node_id: String(node.node_id),
|
|
52
|
-
endpoint
|
|
115
|
+
endpoint,
|
|
53
116
|
score: Number(node.score ?? 0),
|
|
54
117
|
available: Boolean(node.available ?? true),
|
|
55
118
|
region: String(node.region ?? ""),
|
|
@@ -57,8 +120,16 @@ class IicpClient {
|
|
|
57
120
|
reputation_score: node.reputation_score,
|
|
58
121
|
health_label: node.health_label,
|
|
59
122
|
exposure_mode: node.exposure_mode,
|
|
60
|
-
|
|
61
|
-
|
|
123
|
+
cx_public_key: rawCx && typeof rawCx === "object" && rawCx.algorithm && rawCx.key && rawCx.key_id
|
|
124
|
+
? { algorithm: rawCx.algorithm, key: rawCx.key, key_id: rawCx.key_id }
|
|
125
|
+
: undefined,
|
|
126
|
+
// #397 — transport protocols (http/https/iicp-native) when the directory emits them.
|
|
127
|
+
transport: Array.isArray(node.transport)
|
|
128
|
+
? node.transport.map(String)
|
|
129
|
+
: undefined,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
return nodes;
|
|
62
133
|
}
|
|
63
134
|
/**
|
|
64
135
|
* Discover → select best node → submit task.
|
|
@@ -69,23 +140,16 @@ class IicpClient {
|
|
|
69
140
|
const tp = _traceparent(); // SDK-06: shared trace across discover + submit
|
|
70
141
|
const nodes = await this.discover(req.intent, {
|
|
71
142
|
region: req.constraints?.region ?? this.cfg.region,
|
|
72
|
-
qos
|
|
143
|
+
// Do not filter by qos — qos is a task execution hint, not a node capability
|
|
144
|
+
// filter. Most nodes don't declare qos support; directory returns 0 nodes.
|
|
73
145
|
min_reputation: req.constraints?.min_reputation,
|
|
74
146
|
}, tp);
|
|
75
147
|
if (nodes.length === 0) {
|
|
76
148
|
throw new errors_js_1.IicpError(`No nodes available for intent: ${req.intent}`, "SDK-03", { component: "directory" });
|
|
77
149
|
}
|
|
78
|
-
const node = nodes[0];
|
|
79
150
|
const taskId = req.task_id ?? (0, node_crypto_1.randomUUID)();
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
intent: req.intent,
|
|
83
|
-
payload: req.payload,
|
|
84
|
-
constraints: req.constraints ?? {},
|
|
85
|
-
};
|
|
86
|
-
const headers = {
|
|
87
|
-
"Content-Type": "application/json",
|
|
88
|
-
};
|
|
151
|
+
const candidates = nodes.slice(0, MAX_RETRIES);
|
|
152
|
+
const headers = { "Content-Type": "application/json" };
|
|
89
153
|
if (req.auth?.token) {
|
|
90
154
|
headers["Authorization"] = `Bearer ${req.auth.token}`;
|
|
91
155
|
}
|
|
@@ -93,27 +157,49 @@ class IicpClient {
|
|
|
93
157
|
headers["Authorization"] = `Bearer ${this.cfg.api_token}`;
|
|
94
158
|
}
|
|
95
159
|
let lastErr;
|
|
96
|
-
for (
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
160
|
+
for (const node of candidates) {
|
|
161
|
+
// IICP-CX S.16 §5: build body per node (cx_public_key may differ)
|
|
162
|
+
const shouldEncrypt = this.cfg.use_confidentiality === true && node.cx_public_key != null;
|
|
163
|
+
const body = {
|
|
164
|
+
task_id: taskId,
|
|
165
|
+
intent: req.intent,
|
|
166
|
+
constraints: req.constraints ?? {},
|
|
167
|
+
};
|
|
168
|
+
if (shouldEncrypt && node.cx_public_key) {
|
|
169
|
+
body["iicp_conf"] = (0, confidentiality_js_1.encryptPayload)(req.payload, node.cx_public_key, taskId, req.intent);
|
|
105
170
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
await
|
|
113
|
-
|
|
171
|
+
else {
|
|
172
|
+
body["payload"] = req.payload;
|
|
173
|
+
}
|
|
174
|
+
let nodeConnected = true;
|
|
175
|
+
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
176
|
+
try {
|
|
177
|
+
const data = await this._post(`${node.endpoint}/v1/task`, body, req.constraints?.timeout_ms ?? this.cfg.timeout_ms, headers, tp);
|
|
178
|
+
return {
|
|
179
|
+
task_id: taskId,
|
|
180
|
+
result: data.result,
|
|
181
|
+
status: String(data.status ?? "ok"),
|
|
182
|
+
metrics: data.metrics,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
if (err instanceof errors_js_1.IicpError) {
|
|
187
|
+
lastErr = err;
|
|
188
|
+
// Connection error → skip to next node immediately
|
|
189
|
+
if (!err.status_code) {
|
|
190
|
+
nodeConnected = false;
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
if (TRANSIENT_STATUSES.has(err.status_code)) {
|
|
194
|
+
await _sleep(200 * 2 ** attempt);
|
|
195
|
+
continue; // retry same node on 5xx
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
throw err; // non-retryable
|
|
114
199
|
}
|
|
115
|
-
throw err;
|
|
116
200
|
}
|
|
201
|
+
if (!nodeConnected)
|
|
202
|
+
continue; // unreachable node, try next
|
|
117
203
|
}
|
|
118
204
|
throw lastErr;
|
|
119
205
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IICP-CX S.16 Tier-1 confidentiality: X25519-HKDF-SHA256 + AES-256-GCM.
|
|
3
|
+
* CX-Consumer side — encrypts task payloads for nodes advertising cx_public_key.
|
|
4
|
+
* Uses Node.js built-in crypto only (no external dependencies).
|
|
5
|
+
*/
|
|
6
|
+
import type { CxPublicKey } from "./types.js";
|
|
7
|
+
/** Encrypt a task payload using the node's X25519 public key (CX-Consumer). */
|
|
8
|
+
export declare function encryptPayload(payload: unknown, cxPublicKey: CxPublicKey, taskId: string, intent: string): Record<string, unknown>;
|
|
9
|
+
/**
|
|
10
|
+
* Decrypt an iicp_conf envelope (CX-Provider side — for testing/adapter use).
|
|
11
|
+
* privKeyBytes: raw 32-byte X25519 private key; pubKeyBytes: corresponding public key.
|
|
12
|
+
*/
|
|
13
|
+
export declare function decryptPayload(iicpConf: Record<string, unknown>, privKeyBytes: Buffer, pubKeyBytes: Buffer): unknown;
|
|
14
|
+
//# sourceMappingURL=confidentiality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confidentiality.d.ts","sourceRoot":"","sources":["../src/confidentiality.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA0B9C,+EAA+E;AAC/E,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0CzB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAmCT"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* IICP-CX S.16 Tier-1 confidentiality: X25519-HKDF-SHA256 + AES-256-GCM.
|
|
4
|
+
* CX-Consumer side — encrypts task payloads for nodes advertising cx_public_key.
|
|
5
|
+
* Uses Node.js built-in crypto only (no external dependencies).
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.encryptPayload = encryptPayload;
|
|
9
|
+
exports.decryptPayload = decryptPayload;
|
|
10
|
+
const node_crypto_1 = require("node:crypto");
|
|
11
|
+
function b64urlEncode(buf) {
|
|
12
|
+
return buf.toString("base64url");
|
|
13
|
+
}
|
|
14
|
+
function b64urlDecode(s) {
|
|
15
|
+
return Buffer.from(s, "base64url");
|
|
16
|
+
}
|
|
17
|
+
/** HKDF-SHA256 with HMAC-based extract+expand (RFC 5869). */
|
|
18
|
+
function hkdfSha256(ikm, salt, info, length) {
|
|
19
|
+
const prk = (0, node_crypto_1.createHmac)("sha256", salt).update(ikm).digest();
|
|
20
|
+
let t = Buffer.alloc(0);
|
|
21
|
+
let output = Buffer.alloc(0);
|
|
22
|
+
for (let i = 1; output.length < length; i++) {
|
|
23
|
+
t = (0, node_crypto_1.createHmac)("sha256", prk)
|
|
24
|
+
.update(t)
|
|
25
|
+
.update(info)
|
|
26
|
+
.update(Buffer.from([i]))
|
|
27
|
+
.digest();
|
|
28
|
+
output = Buffer.concat([output, t]);
|
|
29
|
+
}
|
|
30
|
+
return output.slice(0, length);
|
|
31
|
+
}
|
|
32
|
+
/** Encrypt a task payload using the node's X25519 public key (CX-Consumer). */
|
|
33
|
+
function encryptPayload(payload, cxPublicKey, taskId, intent) {
|
|
34
|
+
if (cxPublicKey.algorithm !== "X25519") {
|
|
35
|
+
throw new Error(`Unsupported cx_public_key algorithm: ${cxPublicKey.algorithm}`);
|
|
36
|
+
}
|
|
37
|
+
// Import node's static public key from base64url-encoded raw bytes (JWK format)
|
|
38
|
+
const nodeX = cxPublicKey.key; // already base64url
|
|
39
|
+
const nodePub = (0, node_crypto_1.createPublicKey)({
|
|
40
|
+
key: { kty: "OKP", crv: "X25519", x: nodeX },
|
|
41
|
+
format: "jwk",
|
|
42
|
+
});
|
|
43
|
+
// Generate ephemeral X25519 keypair
|
|
44
|
+
const { privateKey: ephemPriv, publicKey: ephemPub } = (0, node_crypto_1.generateKeyPairSync)("x25519");
|
|
45
|
+
const ephemPubJwk = ephemPub.export({ format: "jwk" });
|
|
46
|
+
const ephemPubBytes = b64urlDecode(ephemPubJwk.x);
|
|
47
|
+
// ECDH shared secret
|
|
48
|
+
const sharedSecret = (0, node_crypto_1.diffieHellman)({ privateKey: ephemPriv, publicKey: nodePub });
|
|
49
|
+
// HKDF-SHA256
|
|
50
|
+
const nonce = (0, node_crypto_1.randomBytes)(12);
|
|
51
|
+
const info = Buffer.from(`IICP-CX-v1${taskId}${intent}`);
|
|
52
|
+
const keyMaterial = hkdfSha256(sharedSecret, nonce, info, 32);
|
|
53
|
+
// AES-256-GCM encrypt
|
|
54
|
+
const payloadJson = Buffer.from(JSON.stringify(payload));
|
|
55
|
+
const aad = Buffer.from(`${taskId}|${intent}`);
|
|
56
|
+
const cipher = (0, node_crypto_1.createCipheriv)("aes-256-gcm", keyMaterial, nonce);
|
|
57
|
+
cipher.setAAD(aad);
|
|
58
|
+
const ciphertext = Buffer.concat([cipher.update(payloadJson), cipher.final()]);
|
|
59
|
+
const tag = cipher.getAuthTag();
|
|
60
|
+
return {
|
|
61
|
+
version: 1,
|
|
62
|
+
recipient_key_id: cxPublicKey.key_id,
|
|
63
|
+
kem_ciphertext: b64urlEncode(ephemPubBytes),
|
|
64
|
+
encrypted_body: b64urlEncode(Buffer.concat([ciphertext, tag])),
|
|
65
|
+
nonce: b64urlEncode(nonce),
|
|
66
|
+
aad: b64urlEncode(aad),
|
|
67
|
+
plaintext_size: payloadJson.length,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Decrypt an iicp_conf envelope (CX-Provider side — for testing/adapter use).
|
|
72
|
+
* privKeyBytes: raw 32-byte X25519 private key; pubKeyBytes: corresponding public key.
|
|
73
|
+
*/
|
|
74
|
+
function decryptPayload(iicpConf, privKeyBytes, pubKeyBytes) {
|
|
75
|
+
const privX = b64urlEncode(privKeyBytes);
|
|
76
|
+
const pubX = b64urlEncode(pubKeyBytes);
|
|
77
|
+
const nodePriv = (0, node_crypto_1.createPrivateKey)({
|
|
78
|
+
key: { kty: "OKP", crv: "X25519", x: pubX, d: privX },
|
|
79
|
+
format: "jwk",
|
|
80
|
+
});
|
|
81
|
+
const ephemPubBytes = b64urlDecode(String(iicpConf["kem_ciphertext"]));
|
|
82
|
+
const ephemPub = (0, node_crypto_1.createPublicKey)({
|
|
83
|
+
key: { kty: "OKP", crv: "X25519", x: b64urlEncode(ephemPubBytes) },
|
|
84
|
+
format: "jwk",
|
|
85
|
+
});
|
|
86
|
+
const sharedSecret = (0, node_crypto_1.diffieHellman)({ privateKey: nodePriv, publicKey: ephemPub });
|
|
87
|
+
const nonce = b64urlDecode(String(iicpConf["nonce"]));
|
|
88
|
+
const aadBytes = b64urlDecode(String(iicpConf["aad"]));
|
|
89
|
+
const aadStr = aadBytes.toString();
|
|
90
|
+
const pipeIdx = aadStr.indexOf("|");
|
|
91
|
+
const taskId = aadStr.slice(0, pipeIdx);
|
|
92
|
+
const intent = aadStr.slice(pipeIdx + 1);
|
|
93
|
+
const info = Buffer.from(`IICP-CX-v1${taskId}${intent}`);
|
|
94
|
+
const keyMaterial = hkdfSha256(sharedSecret, nonce, info, 32);
|
|
95
|
+
const encBody = b64urlDecode(String(iicpConf["encrypted_body"]));
|
|
96
|
+
const ciphertext = encBody.slice(0, -16);
|
|
97
|
+
const tag = encBody.slice(-16);
|
|
98
|
+
const decipher = (0, node_crypto_1.createDecipheriv)("aes-256-gcm", keyMaterial, nonce);
|
|
99
|
+
decipher.setAAD(aadBytes);
|
|
100
|
+
decipher.setAuthTag(tag);
|
|
101
|
+
const plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]);
|
|
102
|
+
return JSON.parse(plaintext.toString());
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=confidentiality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confidentiality.js","sourceRoot":"","sources":["../src/confidentiality.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADR-045 Phase A — operator→node delegation (#407 / #2).
|
|
3
|
+
*
|
|
4
|
+
* A fleet operator holds an ed25519 keypair and issues a compact,
|
|
5
|
+
* offline-verifiable token asserting `node:<id>` is operated by
|
|
6
|
+
* `<operator_pubkey>` until `<not_after>`. The node attaches it at REGISTER;
|
|
7
|
+
* any federated directory verifies it locally (no phone-home). Proven in #406.
|
|
8
|
+
*
|
|
9
|
+
* Uses the built-in `node:crypto` ed25519 (no new dependency). The CANONICAL
|
|
10
|
+
* signing bytes MUST be byte-identical to the PHP directory verifier
|
|
11
|
+
* (`OperatorDelegationVerifier::canonicalBytes`) and the Python signer — pinned
|
|
12
|
+
* by a cross-language known-answer test (KAT). A mismatch silently breaks all
|
|
13
|
+
* verification.
|
|
14
|
+
*/
|
|
15
|
+
import { type KeyObject } from "node:crypto";
|
|
16
|
+
export interface Delegation {
|
|
17
|
+
node_id: string;
|
|
18
|
+
operator_pub: string;
|
|
19
|
+
not_after: number;
|
|
20
|
+
sig: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Exact bytes the operator signs / the directory verifies. Field order is
|
|
24
|
+
* alphabetical (node_id < not_after < operator_pub); JSON.stringify preserves
|
|
25
|
+
* insertion order, yielding the spec/PHP byte form. Do NOT reorder.
|
|
26
|
+
*/
|
|
27
|
+
export declare function canonicalBytes(nodeId: string, operatorPubB64: string, notAfter: number): Buffer;
|
|
28
|
+
/** Base64 of the operator's raw 32-byte ed25519 public key (as the directory stores). */
|
|
29
|
+
export declare function operatorPubB64(privateKey: KeyObject): string;
|
|
30
|
+
/** Operator (offline) signs a delegation for one node. Short TTL = revocation baseline (OPEN-3 C). */
|
|
31
|
+
export declare function issueDelegation(privateKey: KeyObject, nodeId: string, ttlSeconds?: number): Delegation;
|
|
32
|
+
/**
|
|
33
|
+
* Local self-consistency check (signature + node binding + expiry). The
|
|
34
|
+
* DIRECTORY is the authority on operator trust; this lets a node sanity-check
|
|
35
|
+
* its own token before sending. Returns true only if all checks pass.
|
|
36
|
+
*/
|
|
37
|
+
export declare function verifyDelegation(token: Delegation, claimedNodeId: string, now?: number): boolean;
|
|
38
|
+
/** Convenience for tests/tools: generate an operator ed25519 keypair. */
|
|
39
|
+
export declare function generateOperatorKey(): KeyObject;
|
|
40
|
+
//# sourceMappingURL=delegation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation.d.ts","sourceRoot":"","sources":["../src/delegation.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAwC,KAAK,SAAS,EAAgB,MAAM,aAAa,CAAC;AAKjG,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK/F;AAED,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,UAAU,EAAE,SAAS,GAAG,MAAM,CAG5D;AAED,sGAAsG;AACtG,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,SAAO,GAAG,UAAU,CAKpG;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAqBhG;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,IAAI,SAAS,CAE/C"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
/**
|
|
4
|
+
* ADR-045 Phase A — operator→node delegation (#407 / #2).
|
|
5
|
+
*
|
|
6
|
+
* A fleet operator holds an ed25519 keypair and issues a compact,
|
|
7
|
+
* offline-verifiable token asserting `node:<id>` is operated by
|
|
8
|
+
* `<operator_pubkey>` until `<not_after>`. The node attaches it at REGISTER;
|
|
9
|
+
* any federated directory verifies it locally (no phone-home). Proven in #406.
|
|
10
|
+
*
|
|
11
|
+
* Uses the built-in `node:crypto` ed25519 (no new dependency). The CANONICAL
|
|
12
|
+
* signing bytes MUST be byte-identical to the PHP directory verifier
|
|
13
|
+
* (`OperatorDelegationVerifier::canonicalBytes`) and the Python signer — pinned
|
|
14
|
+
* by a cross-language known-answer test (KAT). A mismatch silently breaks all
|
|
15
|
+
* verification.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.canonicalBytes = canonicalBytes;
|
|
19
|
+
exports.operatorPubB64 = operatorPubB64;
|
|
20
|
+
exports.issueDelegation = issueDelegation;
|
|
21
|
+
exports.verifyDelegation = verifyDelegation;
|
|
22
|
+
exports.generateOperatorKey = generateOperatorKey;
|
|
23
|
+
const node_crypto_1 = require("node:crypto");
|
|
24
|
+
/** SPKI DER prefix for an ed25519 public key (12 bytes); + 32 raw key bytes = 44. */
|
|
25
|
+
const ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
|
|
26
|
+
/**
|
|
27
|
+
* Exact bytes the operator signs / the directory verifies. Field order is
|
|
28
|
+
* alphabetical (node_id < not_after < operator_pub); JSON.stringify preserves
|
|
29
|
+
* insertion order, yielding the spec/PHP byte form. Do NOT reorder.
|
|
30
|
+
*/
|
|
31
|
+
function canonicalBytes(nodeId, operatorPubB64, notAfter) {
|
|
32
|
+
return Buffer.from(JSON.stringify({ node_id: nodeId, not_after: notAfter, operator_pub: operatorPubB64 }), "utf8");
|
|
33
|
+
}
|
|
34
|
+
/** Base64 of the operator's raw 32-byte ed25519 public key (as the directory stores). */
|
|
35
|
+
function operatorPubB64(privateKey) {
|
|
36
|
+
const der = (0, node_crypto_1.createPublicKey)(privateKey).export({ type: "spki", format: "der" });
|
|
37
|
+
return Buffer.from(der.subarray(der.length - 32)).toString("base64");
|
|
38
|
+
}
|
|
39
|
+
/** Operator (offline) signs a delegation for one node. Short TTL = revocation baseline (OPEN-3 C). */
|
|
40
|
+
function issueDelegation(privateKey, nodeId, ttlSeconds = 3600) {
|
|
41
|
+
const pub = operatorPubB64(privateKey);
|
|
42
|
+
const notAfter = Math.floor(Date.now() / 1000) + ttlSeconds;
|
|
43
|
+
const sig = (0, node_crypto_1.sign)(null, canonicalBytes(nodeId, pub, notAfter), privateKey);
|
|
44
|
+
return { node_id: nodeId, operator_pub: pub, not_after: notAfter, sig: sig.toString("base64") };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Local self-consistency check (signature + node binding + expiry). The
|
|
48
|
+
* DIRECTORY is the authority on operator trust; this lets a node sanity-check
|
|
49
|
+
* its own token before sending. Returns true only if all checks pass.
|
|
50
|
+
*/
|
|
51
|
+
function verifyDelegation(token, claimedNodeId, now) {
|
|
52
|
+
const ts = now ?? Math.floor(Date.now() / 1000);
|
|
53
|
+
try {
|
|
54
|
+
if (token.node_id !== claimedNodeId)
|
|
55
|
+
return false;
|
|
56
|
+
if (ts >= token.not_after)
|
|
57
|
+
return false;
|
|
58
|
+
const raw = Buffer.from(token.operator_pub, "base64");
|
|
59
|
+
if (raw.length !== 32)
|
|
60
|
+
return false;
|
|
61
|
+
const pub = (0, node_crypto_1.createPublicKey)({
|
|
62
|
+
key: Buffer.concat([ED25519_SPKI_PREFIX, raw]),
|
|
63
|
+
format: "der",
|
|
64
|
+
type: "spki",
|
|
65
|
+
});
|
|
66
|
+
return (0, node_crypto_1.verify)(null, canonicalBytes(token.node_id, token.operator_pub, token.not_after), pub, Buffer.from(token.sig, "base64"));
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** Convenience for tests/tools: generate an operator ed25519 keypair. */
|
|
73
|
+
function generateOperatorKey() {
|
|
74
|
+
return (0, node_crypto_1.generateKeyPairSync)("ed25519").privateKey;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=delegation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation.js","sourceRoot":"","sources":["../src/delegation.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC;;;;;;;;;;;;;GAaG;;AAmBH,wCAKC;AAGD,wCAGC;AAGD,0CAKC;AAOD,4CAqBC;AAGD,kDAEC;AArED,6CAAiG;AAEjG,qFAAqF;AACrF,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;AAS3E;;;;GAIG;AACH,SAAgB,cAAc,CAAC,MAAc,EAAE,cAAsB,EAAE,QAAgB;IACrF,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,EACtF,MAAM,CACP,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,SAAgB,cAAc,CAAC,UAAqB;IAClD,MAAM,GAAG,GAAG,IAAA,6BAAe,EAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAChF,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACvE,CAAC;AAED,sGAAsG;AACtG,SAAgB,eAAe,CAAC,UAAqB,EAAE,MAAc,EAAE,UAAU,GAAG,IAAI;IACtF,MAAM,GAAG,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAA,kBAAI,EAAC,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;AAClG,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,KAAiB,EAAE,aAAqB,EAAE,GAAY;IACrF,MAAM,EAAE,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,OAAO,KAAK,aAAa;YAAE,OAAO,KAAK,CAAC;QAClD,IAAI,EAAE,IAAI,KAAK,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACtD,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,GAAG,GAAG,IAAA,6BAAe,EAAC;YAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;YAC9C,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QACH,OAAO,IAAA,oBAAM,EACX,IAAI,EACJ,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,EAClE,GAAG,EACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CACjC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,SAAgB,mBAAmB;IACjC,OAAO,IAAA,iCAAmB,EAAC,SAAS,CAAC,CAAC,UAAU,CAAC;AACnD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export { vllmHandler } from "./backends/vllm.js";
|
|
|
14
14
|
export type { VllmOptions } from "./backends/vllm.js";
|
|
15
15
|
export { llamacppHandler } from "./backends/llamacpp.js";
|
|
16
16
|
export type { LlamaCppOptions } from "./backends/llamacpp.js";
|
|
17
|
+
export { anthropicHandler } from "./backends/anthropic.js";
|
|
18
|
+
export type { AnthropicOptions } from "./backends/anthropic.js";
|
|
17
19
|
export { getBackendHandler, BACKEND_TYPES } from "./backends/index.js";
|
|
18
20
|
export type { BackendType } from "./backends/index.js";
|
|
19
21
|
export type { BackendHandler, BackendOptions } from "./backends/base.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConcurrencyGate = exports.CapacityExceededError = exports.runConformanceChecks = exports.verifySignature = exports.signBody = exports.phpCanonicalSignBody = exports.buildPricingBlock = exports.getCipPolicy = exports.configureCipPolicy = exports.CooperativeInferencePolicy = exports.PeerManager = exports.modelsDiverge = exports.runAuditPass = exports.IdempotencyGuard = exports.TokenValidator = exports.AvailabilityEvaluator = exports.QUEUE_WAIT_MS = exports.QUEUE_ELIGIBLE = exports.QOS_PRIORITY = exports.isQueueEligible = exports.qosPriority = exports.BACKEND_TYPES = exports.getBackendHandler = exports.llamacppHandler = exports.vllmHandler = exports.openaiCompatHandler = exports.qualifyServiceAsync = exports.qualifyService = exports.EXPOSURE_MODES = exports.tryUpnpMapping = exports.probeExternalIp = exports.detectCgnat = exports.looksRoutable = exports.detectNat = exports.decodeFrame = exports.encodeFrame = exports.IICP_MAGIC = exports.FRAME_HEADER_LEN = exports.FRAMING_VERSION = exports.MsgType = exports.IicpTcpClientError = exports.IicpTcpClient = exports.IicpTcpServer = exports.IicpNode = exports.IicpError = exports.IicpClient = void 0;
|
|
3
|
+
exports.ConcurrencyGate = exports.CapacityExceededError = exports.runConformanceChecks = exports.verifySignature = exports.signBody = exports.phpCanonicalSignBody = exports.buildPricingBlock = exports.getCipPolicy = exports.configureCipPolicy = exports.CooperativeInferencePolicy = exports.PeerManager = exports.modelsDiverge = exports.runAuditPass = exports.IdempotencyGuard = exports.TokenValidator = exports.AvailabilityEvaluator = exports.QUEUE_WAIT_MS = exports.QUEUE_ELIGIBLE = exports.QOS_PRIORITY = exports.isQueueEligible = exports.qosPriority = exports.BACKEND_TYPES = exports.getBackendHandler = exports.anthropicHandler = exports.llamacppHandler = exports.vllmHandler = exports.openaiCompatHandler = exports.qualifyServiceAsync = exports.qualifyService = exports.EXPOSURE_MODES = exports.tryUpnpMapping = exports.probeExternalIp = exports.detectCgnat = exports.looksRoutable = exports.detectNat = exports.decodeFrame = exports.encodeFrame = exports.IICP_MAGIC = exports.FRAME_HEADER_LEN = exports.FRAMING_VERSION = exports.MsgType = exports.IicpTcpClientError = exports.IicpTcpClient = exports.IicpTcpServer = exports.IicpNode = exports.IicpError = exports.IicpClient = void 0;
|
|
4
4
|
var client_js_1 = require("./client.js");
|
|
5
5
|
Object.defineProperty(exports, "IicpClient", { enumerable: true, get: function () { return client_js_1.IicpClient; } });
|
|
6
6
|
var errors_js_1 = require("./errors.js");
|
|
@@ -33,6 +33,8 @@ var vllm_js_1 = require("./backends/vllm.js");
|
|
|
33
33
|
Object.defineProperty(exports, "vllmHandler", { enumerable: true, get: function () { return vllm_js_1.vllmHandler; } });
|
|
34
34
|
var llamacpp_js_1 = require("./backends/llamacpp.js");
|
|
35
35
|
Object.defineProperty(exports, "llamacppHandler", { enumerable: true, get: function () { return llamacpp_js_1.llamacppHandler; } });
|
|
36
|
+
var anthropic_js_1 = require("./backends/anthropic.js");
|
|
37
|
+
Object.defineProperty(exports, "anthropicHandler", { enumerable: true, get: function () { return anthropic_js_1.anthropicHandler; } });
|
|
36
38
|
var index_js_1 = require("./backends/index.js");
|
|
37
39
|
Object.defineProperty(exports, "getBackendHandler", { enumerable: true, get: function () { return index_js_1.getBackendHandler; } });
|
|
38
40
|
Object.defineProperty(exports, "BACKEND_TYPES", { enumerable: true, get: function () { return index_js_1.BACKEND_TYPES; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AAAhC,uGAAA,UAAU,OAAA;AACnB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,qCAAqC;AAA5B,mGAAA,QAAQ,OAAA;AAEjB,6CAUuB;AATrB,4GAAA,aAAa,OAAA;AACb,4GAAA,aAAa,OAAA;AACb,iHAAA,kBAAkB,OAAA;AAClB,sGAAA,OAAO,OAAA;AACP,8GAAA,eAAe,OAAA;AACf,+GAAA,gBAAgB,OAAA;AAChB,yGAAA,UAAU,OAAA;AACV,0GAAA,WAAW,OAAA;AACX,0GAAA,WAAW,OAAA;AASb,uDAM4B;AAL1B,6GAAA,SAAS,OAAA;AACT,iHAAA,aAAa,OAAA;AACb,+GAAA,WAAW,OAAA;AACX,mHAAA,eAAe,OAAA;AACf,kHAAA,cAAc,OAAA;AAGhB,2CAIsB;AAHpB,4GAAA,cAAc,OAAA;AACd,4GAAA,cAAc,OAAA;AACd,iHAAA,mBAAmB,OAAA;AASrB,gEAAkE;AAAzD,uHAAA,mBAAmB,OAAA;AAM5B,8CAAiD;AAAxC,sGAAA,WAAW,OAAA;AAEpB,sDAAyD;AAAhD,8GAAA,eAAe,OAAA;AAExB,gDAAuE;AAA9D,6GAAA,iBAAiB,OAAA;AAAE,yGAAA,aAAa,OAAA;AAGzC,+CAA2G;AAAlG,2GAAA,WAAW,OAAA;AAAE,+GAAA,eAAe,OAAA;AAAE,4GAAA,YAAY,OAAA;AAAE,8GAAA,cAAc,OAAA;AAAE,6GAAA,aAAa,OAAA;AAClF,qDAA0D;AAAjD,wHAAA,qBAAqB,OAAA;AAE9B,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,mDAAoD;AAA3C,kHAAA,gBAAgB,OAAA;AACzB,uDAAiE;AAAxD,gHAAA,YAAY,OAAA;AAAE,iHAAA,aAAa,OAAA;AAEpC,qDAAgD;AAAvC,8GAAA,WAAW,OAAA;AAEpB,iDAIyB;AAHvB,2HAAA,0BAA0B,OAAA;AAC1B,mHAAA,kBAAkB,OAAA;AAClB,6GAAA,YAAY,OAAA;AAGd,2CAKsB;AAJpB,+GAAA,iBAAiB,OAAA;AACjB,kHAAA,oBAAoB,OAAA;AACpB,sGAAA,QAAQ,OAAA;AACR,6GAAA,eAAe,OAAA;AAGjB,mDAAwD;AAA/C,sHAAA,oBAAoB,OAAA;AAE7B,mDAA0E;AAAjE,uHAAA,qBAAqB,OAAA;AAAE,iHAAA,eAAe,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AAAhC,uGAAA,UAAU,OAAA;AACnB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,qCAAqC;AAA5B,mGAAA,QAAQ,OAAA;AAEjB,6CAUuB;AATrB,4GAAA,aAAa,OAAA;AACb,4GAAA,aAAa,OAAA;AACb,iHAAA,kBAAkB,OAAA;AAClB,sGAAA,OAAO,OAAA;AACP,8GAAA,eAAe,OAAA;AACf,+GAAA,gBAAgB,OAAA;AAChB,yGAAA,UAAU,OAAA;AACV,0GAAA,WAAW,OAAA;AACX,0GAAA,WAAW,OAAA;AASb,uDAM4B;AAL1B,6GAAA,SAAS,OAAA;AACT,iHAAA,aAAa,OAAA;AACb,+GAAA,WAAW,OAAA;AACX,mHAAA,eAAe,OAAA;AACf,kHAAA,cAAc,OAAA;AAGhB,2CAIsB;AAHpB,4GAAA,cAAc,OAAA;AACd,4GAAA,cAAc,OAAA;AACd,iHAAA,mBAAmB,OAAA;AASrB,gEAAkE;AAAzD,uHAAA,mBAAmB,OAAA;AAM5B,8CAAiD;AAAxC,sGAAA,WAAW,OAAA;AAEpB,sDAAyD;AAAhD,8GAAA,eAAe,OAAA;AAExB,wDAA2D;AAAlD,gHAAA,gBAAgB,OAAA;AAEzB,gDAAuE;AAA9D,6GAAA,iBAAiB,OAAA;AAAE,yGAAA,aAAa,OAAA;AAGzC,+CAA2G;AAAlG,2GAAA,WAAW,OAAA;AAAE,+GAAA,eAAe,OAAA;AAAE,4GAAA,YAAY,OAAA;AAAE,8GAAA,cAAc,OAAA;AAAE,6GAAA,aAAa,OAAA;AAClF,qDAA0D;AAAjD,wHAAA,qBAAqB,OAAA;AAE9B,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AACvB,mDAAoD;AAA3C,kHAAA,gBAAgB,OAAA;AACzB,uDAAiE;AAAxD,gHAAA,YAAY,OAAA;AAAE,iHAAA,aAAa,OAAA;AAEpC,qDAAgD;AAAvC,8GAAA,WAAW,OAAA;AAEpB,iDAIyB;AAHvB,2HAAA,0BAA0B,OAAA;AAC1B,mHAAA,kBAAkB,OAAA;AAClB,6GAAA,YAAY,OAAA;AAGd,2CAKsB;AAJpB,+GAAA,iBAAiB,OAAA;AACjB,kHAAA,oBAAoB,OAAA;AACpB,sGAAA,QAAQ,OAAA;AACR,6GAAA,eAAe,OAAA;AAGjB,mDAAwD;AAA/C,sHAAA,oBAAoB,OAAA;AAE7B,mDAA0E;AAAjE,uHAAA,qBAAqB,OAAA;AAAE,iHAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class NodeAlreadyServingError extends Error {
|
|
2
|
+
}
|
|
3
|
+
export declare class InstanceLock {
|
|
4
|
+
private _path;
|
|
5
|
+
private constructor();
|
|
6
|
+
/** Acquire the per-node_id lock. Throws NodeAlreadyServingError if another LIVE
|
|
7
|
+
* process holds it and `force` is false. Fails open on I/O error. */
|
|
8
|
+
static acquire(nodeId: string, force?: boolean): InstanceLock;
|
|
9
|
+
release(): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=instance_lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance_lock.d.ts","sourceRoot":"","sources":["../src/instance_lock.ts"],"names":[],"mappings":"AAgCA,qBAAa,uBAAwB,SAAQ,KAAK;CAAG;AAErD,qBAAa,YAAY;IACH,OAAO,CAAC,KAAK;IAAjC,OAAO;IAEP;yEACqE;IACrE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,YAAY;IA+B3D,OAAO,IAAI,IAAI;CAShB"}
|