@iicp/client 0.5.6 → 0.6.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.
Files changed (64) hide show
  1. package/dist/availability.d.ts +30 -0
  2. package/dist/availability.d.ts.map +1 -0
  3. package/dist/availability.js +64 -0
  4. package/dist/availability.js.map +1 -0
  5. package/dist/backends/base.d.ts +35 -0
  6. package/dist/backends/base.d.ts.map +1 -0
  7. package/dist/backends/base.js +97 -0
  8. package/dist/backends/base.js.map +1 -0
  9. package/dist/backends/index.d.ts +13 -0
  10. package/dist/backends/index.d.ts.map +1 -0
  11. package/dist/backends/index.js +30 -0
  12. package/dist/backends/index.js.map +1 -0
  13. package/dist/backends/llamacpp.d.ts +18 -0
  14. package/dist/backends/llamacpp.d.ts.map +1 -0
  15. package/dist/backends/llamacpp.js +17 -0
  16. package/dist/backends/llamacpp.js.map +1 -0
  17. package/dist/backends/openai_compat.d.ts +6 -10
  18. package/dist/backends/openai_compat.d.ts.map +1 -1
  19. package/dist/backends/openai_compat.js +5 -78
  20. package/dist/backends/openai_compat.js.map +1 -1
  21. package/dist/backends/vllm.d.ts +19 -0
  22. package/dist/backends/vllm.d.ts.map +1 -0
  23. package/dist/backends/vllm.js +17 -0
  24. package/dist/backends/vllm.js.map +1 -0
  25. package/dist/cli.d.ts.map +1 -1
  26. package/dist/cli.js +60 -3
  27. package/dist/cli.js.map +1 -1
  28. package/dist/idempotency.d.ts +17 -0
  29. package/dist/idempotency.d.ts.map +1 -0
  30. package/dist/idempotency.js +39 -0
  31. package/dist/idempotency.js.map +1 -0
  32. package/dist/index.d.ts +16 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +25 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/nat_detection.d.ts +37 -0
  37. package/dist/nat_detection.d.ts.map +1 -1
  38. package/dist/nat_detection.js +398 -29
  39. package/dist/nat_detection.js.map +1 -1
  40. package/dist/node.d.ts +35 -1
  41. package/dist/node.d.ts.map +1 -1
  42. package/dist/node.js +267 -59
  43. package/dist/node.js.map +1 -1
  44. package/dist/otel_tracer.d.ts +26 -0
  45. package/dist/otel_tracer.d.ts.map +1 -0
  46. package/dist/otel_tracer.js +96 -0
  47. package/dist/otel_tracer.js.map +1 -0
  48. package/dist/peer_manager.d.ts +37 -0
  49. package/dist/peer_manager.d.ts.map +1 -0
  50. package/dist/peer_manager.js +135 -0
  51. package/dist/peer_manager.js.map +1 -0
  52. package/dist/scheduler.d.ts +23 -0
  53. package/dist/scheduler.d.ts.map +1 -0
  54. package/dist/scheduler.js +42 -0
  55. package/dist/scheduler.js.map +1 -0
  56. package/dist/token_validator.d.ts +15 -0
  57. package/dist/token_validator.d.ts.map +1 -0
  58. package/dist/token_validator.js +34 -0
  59. package/dist/token_validator.js.map +1 -0
  60. package/dist/trust_auditor.d.ts +34 -0
  61. package/dist/trust_auditor.d.ts.map +1 -0
  62. package/dist/trust_auditor.js +123 -0
  63. package/dist/trust_auditor.js.map +1 -0
  64. package/package.json +1 -1
package/dist/node.d.ts CHANGED
@@ -7,6 +7,7 @@
7
7
  * GET /iicp/health — liveness / capacity (always 200)
8
8
  * GET /metrics — Prometheus text (503 if prom-client absent)
9
9
  */
10
+ import { type Window } from "./availability.js";
10
11
  export interface NodeConfig {
11
12
  nodeId: string;
12
13
  endpoint: string;
@@ -44,6 +45,18 @@ export interface NodeConfig {
44
45
  /** Operator-provisioned HMAC key for ADR-019 signing. If empty, the SDK
45
46
  * falls back to the directory-issued key returned in the register response. */
46
47
  nodeHmacKey?: string;
48
+ /** Phase 3+ availability windows (ADR-006). Each: {start,end:"HH:MM", share:0-1}
49
+ * in local time. Shapes effective capacity advertised + gated. Empty → full. */
50
+ availabilityWindows?: Window[];
51
+ /** ADR-010 task_id idempotency. Off by default to preserve the pre-0.6 contract.
52
+ * When true, a duplicate task_id within 5 min is rejected with IICP-E010. */
53
+ enableIdempotency?: boolean;
54
+ /** Phase 2 mesh (ADR-009/022). When true, serve() gossips peers and exposes
55
+ * POST /v1/peers. Default false. */
56
+ enableMesh?: boolean;
57
+ /** When true, serve() exposes POST /v1/relay to forward tasks to peers learned
58
+ * via gossip (ADR-022). Requires enableMesh. Default false. */
59
+ relayCapable?: boolean;
47
60
  }
48
61
  export interface ServeOptions {
49
62
  host?: string;
@@ -53,9 +66,16 @@ export interface ServeOptions {
53
66
  export type TaskHandler = (task: Record<string, unknown>) => Promise<Record<string, unknown>>;
54
67
  export declare class IicpNode {
55
68
  private readonly _cfg;
69
+ private readonly _availability;
70
+ private readonly _idempotency;
71
+ private readonly _peerManager;
56
72
  private _runtimeHmacKey;
73
+ /** BUG-5: token stashed by register() so deregister()/heartbeat don't need it re-passed. */
74
+ private _runtimeToken;
57
75
  /** #343 — UPnP IPv6 pinhole UID captured by applyNatProfile, revoked on shutdown. */
58
76
  private _pinholeUid;
77
+ private _pinholeLeaseSeconds;
78
+ private _pinholeRenewalTimer;
59
79
  private _activeTasks;
60
80
  private _nonces;
61
81
  private _prom;
@@ -64,6 +84,8 @@ export declare class IicpNode {
64
84
  private _tokensCounter;
65
85
  private _promLoaded;
66
86
  constructor(config: NodeConfig);
87
+ /** Effective concurrency cap after applying availability windows (ADR-006). */
88
+ private _effectiveMaxConcurrent;
67
89
  /** The HMAC key in use for ADR-019 pricing signatures. */
68
90
  get nodeHmacKey(): string;
69
91
  /**
@@ -86,8 +108,11 @@ export declare class IicpNode {
86
108
  ipv6?: {
87
109
  pinholeActive?: boolean;
88
110
  pinholeUniqueId?: number;
111
+ pinholeLeaseSeconds?: number;
89
112
  };
90
113
  }): void;
114
+ /** #343 — Schedule pinhole renewal at lease/2 interval using UpdatePinhole. */
115
+ private _schedulePinholeRenewal;
91
116
  /** #343 — close the UPnP IPv6 firewall pinhole if one is tracked. Best-effort. */
92
117
  revokePinhole(): Promise<void>;
93
118
  register(): Promise<string>;
@@ -99,12 +124,21 @@ export declare class IicpNode {
99
124
  * shutdown paths swallow failures so a flaky directory connection doesn't
100
125
  * block process exit.
101
126
  */
102
- deregister(nodeToken: string): Promise<void>;
127
+ deregister(nodeToken?: string): Promise<void>;
103
128
  private _checkNonce;
104
129
  private _ensureProm;
105
130
  serve(handler: TaskHandler, options?: ServeOptions): () => void;
131
+ private _handlePeers;
132
+ private _handleRelay;
106
133
  private _handleHealth;
107
134
  private _handleMetrics;
135
+ /**
136
+ * QoS-aware admission. Resolves true once a slot is free, false if capacity
137
+ * stays full. realtime/interactive wait up to QUEUE_WAIT_MS; other tiers fail
138
+ * fast. The check-then-increment is non-atomic but safe in the single-threaded
139
+ * event loop (advisory back-pressure, matching the prior counter gate).
140
+ */
141
+ private _admit;
108
142
  private _handleTask;
109
143
  }
110
144
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAmBH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2GAA2G;IAC3G,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uHAAuH;IACvH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;mFAC+E;IAC/E,eAAe,CAAC,EACZ,QAAQ,GACR,aAAa,GACb,iBAAiB,GACjB,YAAY,GACZ,iBAAiB,GACjB,SAAS,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,WAAW,GAAG,SAAS,CAAC;IACxF,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C;;kDAE8C;IAE9C,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB;yEACqE;IAErE,OAAO,CAAC,EAAE,GAAG,CAAC;IACd;mFAC+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAI9F,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAkBnB;IACF,OAAO,CAAC,eAAe,CAAc;IACrC,qFAAqF;IACrF,OAAO,CAAC,WAAW,CAAuB;IAE1C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,UAAU;IAwB9B,0DAA0D;IAC1D,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;;;;;;;;OASG;IACH,eAAe,CAAC,OAAO,EAAE;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,WAAW,IAAI,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE;YACL,aAAa,CAAC,EAAE,OAAO,CAAC;YACxB,eAAe,CAAC,EAAE,MAAM,CAAC;SAC1B,CAAC;KACH,GAAG,IAAI;IAsBR,kFAAkF;IAC5E,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9B,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAiF3B,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD;;;;;;OAMG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBlD,OAAO,CAAC,WAAW;YAcL,WAAW;IA6BzB,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,IAAI;IAuCnE,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,WAAW;CAqFpB"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
package/dist/node.js CHANGED
@@ -12,18 +12,29 @@
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.IicpNode = void 0;
14
14
  const http = require("node:http");
15
+ const scheduler_js_1 = require("./scheduler.js");
16
+ const availability_js_1 = require("./availability.js");
17
+ const idempotency_js_1 = require("./idempotency.js");
18
+ const peer_manager_js_1 = require("./peer_manager.js");
15
19
  const DEFAULT_DIRECTORY = "https://iicp.network/api";
16
20
  const HEARTBEAT_INTERVAL_MS = 30_000;
17
21
  const NONCE_TTL_MS = 300_000;
18
22
  // SDK version reported in register payload sdk_version. Update on package
19
23
  // version bumps; checked by tests against package.json.
20
- const SDK_VERSION = "0.5.6";
24
+ const SDK_VERSION = "0.6.0";
21
25
  // ── IicpNode ──────────────────────────────────────────────────────────────────
22
26
  class IicpNode {
23
27
  _cfg;
28
+ _availability;
29
+ _idempotency = new idempotency_js_1.IdempotencyGuard();
30
+ _peerManager;
24
31
  _runtimeHmacKey = "";
32
+ /** BUG-5: token stashed by register() so deregister()/heartbeat don't need it re-passed. */
33
+ _runtimeToken = "";
25
34
  /** #343 — UPnP IPv6 pinhole UID captured by applyNatProfile, revoked on shutdown. */
26
35
  _pinholeUid = null;
36
+ _pinholeLeaseSeconds = 3600;
37
+ _pinholeRenewalTimer = null;
27
38
  _activeTasks = 0;
28
39
  _nonces = new Map(); // nonce → expiry timestamp (ms)
29
40
  _prom = null;
@@ -51,8 +62,18 @@ class IicpNode {
51
62
  cipPolicy: config.cipPolicy,
52
63
  pricing: config.pricing,
53
64
  nodeHmacKey: config.nodeHmacKey ?? "",
65
+ availabilityWindows: config.availabilityWindows ?? [],
66
+ enableIdempotency: config.enableIdempotency ?? false,
67
+ enableMesh: config.enableMesh ?? false,
68
+ relayCapable: config.relayCapable ?? false,
54
69
  };
55
70
  this._runtimeHmacKey = config.nodeHmacKey ?? "";
71
+ this._availability = new availability_js_1.AvailabilityEvaluator(this._cfg.availabilityWindows);
72
+ this._peerManager = new peer_manager_js_1.PeerManager(this._cfg.directoryUrl, config.nodeHmacKey ?? "");
73
+ }
74
+ /** Effective concurrency cap after applying availability windows (ADR-006). */
75
+ _effectiveMaxConcurrent() {
76
+ return this._availability.effectiveMaxConcurrent(this._cfg.maxConcurrent);
56
77
  }
57
78
  /** The HMAC key in use for ADR-019 pricing signatures. */
58
79
  get nodeHmacKey() {
@@ -87,10 +108,44 @@ class IicpNode {
87
108
  // #343 — capture the IPv6 firewall pinhole UID so we can revoke it on shutdown.
88
109
  if (profile.ipv6?.pinholeActive && typeof profile.ipv6.pinholeUniqueId === "number") {
89
110
  this._pinholeUid = profile.ipv6.pinholeUniqueId;
111
+ if (typeof profile.ipv6.pinholeLeaseSeconds === "number" && profile.ipv6.pinholeLeaseSeconds > 0) {
112
+ this._pinholeLeaseSeconds = profile.ipv6.pinholeLeaseSeconds;
113
+ }
114
+ this._schedulePinholeRenewal();
90
115
  }
91
116
  }
117
+ /** #343 — Schedule pinhole renewal at lease/2 interval using UpdatePinhole. */
118
+ _schedulePinholeRenewal() {
119
+ if (this._pinholeRenewalTimer !== null)
120
+ clearTimeout(this._pinholeRenewalTimer);
121
+ const delayMs = Math.max(this._pinholeLeaseSeconds / 2, 60) * 1000;
122
+ this._pinholeRenewalTimer = setTimeout(async () => {
123
+ const uid = this._pinholeUid;
124
+ if (uid == null)
125
+ return;
126
+ try {
127
+ const { renewIpv6Pinhole } = await import("./nat_detection.js");
128
+ const ok = await renewIpv6Pinhole(uid, this._pinholeLeaseSeconds);
129
+ if (ok) {
130
+ this._schedulePinholeRenewal(); // schedule next renewal
131
+ }
132
+ else {
133
+ // Retry sooner — IGD may be temporarily unreachable.
134
+ this._pinholeLeaseSeconds = Math.max(this._pinholeLeaseSeconds, 120);
135
+ this._schedulePinholeRenewal();
136
+ }
137
+ }
138
+ catch {
139
+ this._schedulePinholeRenewal();
140
+ }
141
+ }, delayMs);
142
+ }
92
143
  /** #343 — close the UPnP IPv6 firewall pinhole if one is tracked. Best-effort. */
93
144
  async revokePinhole() {
145
+ if (this._pinholeRenewalTimer !== null) {
146
+ clearTimeout(this._pinholeRenewalTimer);
147
+ this._pinholeRenewalTimer = null;
148
+ }
94
149
  const uid = this._pinholeUid;
95
150
  if (uid == null)
96
151
  return;
@@ -176,6 +231,8 @@ class IicpNode {
176
231
  const token = (data.node_token ?? data.token);
177
232
  if (!token)
178
233
  throw new Error(`Directory did not return node_token: ${JSON.stringify(data)}`);
234
+ // BUG-5: stash the token so deregister()/heartbeat don't need it re-passed.
235
+ this._runtimeToken = token;
179
236
  // ADR-019: capture the directory-issued HMAC key for subsequent pricing
180
237
  // signatures. Operator-provisioned key wins when set.
181
238
  if (!this._runtimeHmacKey) {
@@ -187,13 +244,25 @@ class IicpNode {
187
244
  return token;
188
245
  }
189
246
  async heartbeat(nodeToken) {
190
- const resp = await fetch(`${this._cfg.directoryUrl.replace(/\/$/, "")}/api/v1/heartbeat`, {
247
+ const resp = await fetch(
248
+ // /v1/heartbeat (NOT /api/v1/heartbeat) — default directoryUrl
249
+ // already ends in /api; doubling produced 404s and prevented
250
+ // last_seen updates, so nodes vanished from /v1/stats.
251
+ `${this._cfg.directoryUrl.replace(/\/$/, "")}/v1/heartbeat`, {
191
252
  method: "POST",
192
- headers: { "Content-Type": "application/json" },
253
+ headers: {
254
+ "Content-Type": "application/json",
255
+ // NodeTokenAuth middleware on the directory side requires
256
+ // Bearer auth; the body token is kept for back-compat with
257
+ // older directory builds.
258
+ Authorization: `Bearer ${nodeToken}`,
259
+ },
193
260
  body: JSON.stringify({
194
261
  node_id: this._cfg.nodeId,
195
262
  node_token: nodeToken,
196
263
  status: "available",
264
+ // Live capacity after availability shaping (ADR-006).
265
+ max_concurrent: this._effectiveMaxConcurrent(),
197
266
  }),
198
267
  signal: AbortSignal.timeout(this._cfg.timeoutMs),
199
268
  });
@@ -208,12 +277,18 @@ class IicpNode {
208
277
  * block process exit.
209
278
  */
210
279
  async deregister(nodeToken) {
280
+ // BUG-5: default to the token stashed by register() so callers can simply
281
+ // `await node.deregister()`. Explicit arg overrides.
282
+ const token = nodeToken ?? this._runtimeToken;
283
+ if (!token) {
284
+ throw new Error("deregister() requires a node token (none stashed — call register() first)");
285
+ }
211
286
  const resp = await fetch(`${this._cfg.directoryUrl.replace(/\/$/, "")}/v1/register`, {
212
287
  method: "DELETE",
213
288
  headers: { "Content-Type": "application/json" },
214
289
  body: JSON.stringify({
215
290
  node_id: this._cfg.nodeId,
216
- node_token: nodeToken,
291
+ node_token: token,
217
292
  }),
218
293
  signal: AbortSignal.timeout(this._cfg.timeoutMs),
219
294
  });
@@ -282,6 +357,12 @@ class IicpNode {
282
357
  else if (req.method === "POST" && req.url === "/v1/task") {
283
358
  this._handleTask(req, res, handler);
284
359
  }
360
+ else if (req.method === "POST" && req.url === "/v1/peers" && this._cfg.enableMesh) {
361
+ this._handlePeers(req, res);
362
+ }
363
+ else if (req.method === "POST" && req.url === "/v1/relay" && this._cfg.relayCapable) {
364
+ this._handleRelay(req, res);
365
+ }
285
366
  else {
286
367
  res.writeHead(404, { "Content-Type": "application/json" });
287
368
  res.end(JSON.stringify({ error: "not_found" }));
@@ -294,17 +375,99 @@ class IicpNode {
294
375
  this.heartbeat(nodeToken).catch(() => undefined);
295
376
  }, HEARTBEAT_INTERVAL_MS);
296
377
  }
378
+ if (this._cfg.enableMesh) {
379
+ // Phase 2 mesh: bootstrap then gossip every 30s (managed inside PeerManager).
380
+ void this._peerManager.start(this._cfg.nodeId);
381
+ }
297
382
  return () => {
298
383
  if (hbTimer)
299
384
  clearInterval(hbTimer);
385
+ this._peerManager.stop();
300
386
  server.closeAllConnections?.();
301
387
  server.close();
302
388
  };
303
389
  }
390
+ // ── POST /v1/peers (ADR-009 gossip exchange) ────────────────────────────────
391
+ _handlePeers(req, res) {
392
+ const chunks = [];
393
+ req.on("data", (c) => chunks.push(c));
394
+ req.on("end", () => {
395
+ const raw = Buffer.concat(chunks).toString() || "{}";
396
+ const sig = req.headers["x-iicp-signature"];
397
+ if (!this._peerManager.verifyExchange(raw, sig)) {
398
+ res.writeHead(401, { "Content-Type": "application/json" });
399
+ res.end(JSON.stringify({ error: { code: "IICP-E012", message: "invalid_signature" } }));
400
+ return;
401
+ }
402
+ try {
403
+ const body = JSON.parse(raw);
404
+ const incoming = (body.known_peers ?? []).filter((p) => typeof p === "object" && p !== null);
405
+ this._peerManager.mergePeers(incoming);
406
+ }
407
+ catch {
408
+ res.writeHead(400, { "Content-Type": "application/json" });
409
+ res.end(JSON.stringify({ error: { code: "IICP-E000", message: "invalid JSON" } }));
410
+ return;
411
+ }
412
+ const out = JSON.stringify({ peers: this._peerManager.getPeers() });
413
+ res.writeHead(200, { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(out) });
414
+ res.end(out);
415
+ });
416
+ }
417
+ // ── POST /v1/relay (ADR-022 mesh relay) ─────────────────────────────────────
418
+ _handleRelay(req, res) {
419
+ const chunks = [];
420
+ req.on("data", (c) => chunks.push(c));
421
+ req.on("end", async () => {
422
+ let payload;
423
+ try {
424
+ payload = JSON.parse(Buffer.concat(chunks).toString() || "{}");
425
+ }
426
+ catch {
427
+ res.writeHead(400, { "Content-Type": "application/json" });
428
+ res.end(JSON.stringify({ error: { code: "IICP-E000", message: "invalid JSON" } }));
429
+ return;
430
+ }
431
+ const targetId = payload.target_node_id ?? "";
432
+ const task = payload.task;
433
+ if (!targetId || !task) {
434
+ res.writeHead(422, { "Content-Type": "application/json" });
435
+ res.end(JSON.stringify({ error: { code: "IICP-E000", message: "target_node_id and task required" } }));
436
+ return;
437
+ }
438
+ const target = this._peerManager.relayTarget(targetId);
439
+ if (!target) {
440
+ res.writeHead(404, { "Content-Type": "application/json" });
441
+ res.end(JSON.stringify({ error: { code: "IICP-E030", message: "target not in peer list" } }));
442
+ return;
443
+ }
444
+ try {
445
+ const resp = await fetch(`${target.endpoint.replace(/\/$/, "")}/v1/task`, {
446
+ method: "POST",
447
+ headers: { "Content-Type": "application/json" },
448
+ body: JSON.stringify(task),
449
+ signal: AbortSignal.timeout(120_000),
450
+ });
451
+ const text = await resp.text();
452
+ res.writeHead(resp.status, { "Content-Type": "application/json" });
453
+ res.end(text);
454
+ }
455
+ catch (exc) {
456
+ const msg = exc instanceof Error ? exc.message : String(exc);
457
+ res.writeHead(502, { "Content-Type": "application/json" });
458
+ res.end(JSON.stringify({ error: { code: "IICP-E031", message: `relay failed: ${msg}` } }));
459
+ }
460
+ });
461
+ }
304
462
  // ── GET /iicp/health ───────────────────────────────────────────────────────
305
463
  _handleHealth(res) {
306
464
  const active = this._activeTasks;
307
465
  const max = this._cfg.maxConcurrent;
466
+ const effMax = this._effectiveMaxConcurrent();
467
+ const uid = this._pinholeUid;
468
+ const pinholeState = uid != null
469
+ ? { active: true, unique_id: uid, lease_seconds: this._pinholeLeaseSeconds }
470
+ : { active: false };
308
471
  const body = JSON.stringify({
309
472
  status: "ok",
310
473
  node_id: this._cfg.nodeId,
@@ -312,9 +475,11 @@ class IicpNode {
312
475
  load: max > 0 ? active / max : 0,
313
476
  active_jobs: active,
314
477
  max_concurrent: max,
315
- available: active < max,
478
+ effective_max_concurrent: effMax,
479
+ available: active < effMax,
316
480
  model: this._cfg.model ?? "",
317
481
  intent: this._cfg.intent,
482
+ pinhole_state: pinholeState,
318
483
  });
319
484
  res.writeHead(200, { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(body) });
320
485
  res.end(body);
@@ -337,22 +502,29 @@ class IicpNode {
337
502
  });
338
503
  }
339
504
  // ── POST /v1/task ──────────────────────────────────────────────────────────
340
- _handleTask(req, res, handler) {
341
- // Concurrency gate IICP-E021
342
- if (this._activeTasks >= this._cfg.maxConcurrent) {
343
- const body = JSON.stringify({
344
- error: { code: "IICP-E021", message: "capacity_exceeded", retry_after_ms: 2000 },
345
- });
346
- res.writeHead(429, {
347
- "Content-Type": "application/json",
348
- "Retry-After": "2",
349
- "Content-Length": Buffer.byteLength(body),
350
- });
351
- res.end(body);
352
- return;
505
+ /**
506
+ * QoS-aware admission. Resolves true once a slot is free, false if capacity
507
+ * stays full. realtime/interactive wait up to QUEUE_WAIT_MS; other tiers fail
508
+ * fast. The check-then-increment is non-atomic but safe in the single-threaded
509
+ * event loop (advisory back-pressure, matching the prior counter gate).
510
+ */
511
+ async _admit(qos) {
512
+ // Effective cap folds in availability windows (ADR-006): a reduced/closed
513
+ // window lowers capacity below maxConcurrent.
514
+ const cap = this._effectiveMaxConcurrent();
515
+ if (this._activeTasks < cap)
516
+ return true;
517
+ if (!(0, scheduler_js_1.isQueueEligible)(qos))
518
+ return false;
519
+ const deadline = Date.now() + scheduler_js_1.QUEUE_WAIT_MS;
520
+ while (Date.now() < deadline) {
521
+ await new Promise((r) => setTimeout(r, 50));
522
+ if (this._activeTasks < this._effectiveMaxConcurrent())
523
+ return true;
353
524
  }
354
- this._activeTasks++;
355
- const t0 = Date.now();
525
+ return false;
526
+ }
527
+ _handleTask(req, res, handler) {
356
528
  const chunks = [];
357
529
  req.on("data", (chunk) => chunks.push(chunk));
358
530
  req.on("end", () => {
@@ -361,56 +533,92 @@ class IicpNode {
361
533
  task = JSON.parse(Buffer.concat(chunks).toString() || "{}");
362
534
  }
363
535
  catch {
364
- this._activeTasks--;
365
536
  res.writeHead(400, { "Content-Type": "application/json" });
366
537
  res.end(JSON.stringify({ error: { code: "IICP-E000", message: "invalid JSON" } }));
367
538
  return;
368
539
  }
369
- // Nonce replay — IICP-E011
370
- if (!this._checkNonce(task.nonce)) {
371
- this._activeTasks--;
372
- const body = JSON.stringify({ error: { code: "IICP-E011", message: "replay_detected" } });
373
- res.writeHead(409, { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(body) });
374
- res.end(body);
375
- return;
376
- }
377
- // W3C traceparent propagation
378
- const tp = req.headers["traceparent"];
379
- if (tp)
380
- task._trace = { traceparent: tp };
381
540
  const intent = task.intent ?? this._cfg.intent;
382
541
  const constraints = task.constraints;
383
542
  const qos = constraints?.qos_class ?? "best_effort";
384
543
  const taskId = task.task_id ?? "";
385
- handler(task)
386
- .then((result) => {
387
- this._activeTasks--;
388
- const latencyMs = Date.now() - t0;
389
- if (this._tasksCounter) {
390
- this._tasksCounter
391
- .labels("completed", intent, qos).inc();
392
- }
393
- if (this._latencyHistogram) {
394
- this._latencyHistogram.labels(intent, qos).observe(latencyMs);
544
+ // QoS-aware admission — IICP-E021. realtime/interactive wait briefly for a
545
+ // slot; batch/best-effort/unspecified fail fast (ADR-006; see scheduler.ts).
546
+ void this._admit(qos).then((admitted) => {
547
+ if (!admitted) {
548
+ const body = JSON.stringify({
549
+ error: {
550
+ code: "IICP-E021",
551
+ message: "capacity_exceeded",
552
+ qos_class: qos,
553
+ retry_after_ms: 2000,
554
+ },
555
+ });
556
+ res.writeHead(429, {
557
+ "Content-Type": "application/json",
558
+ "Retry-After": "2",
559
+ "Content-Length": Buffer.byteLength(body),
560
+ });
561
+ res.end(body);
562
+ return;
395
563
  }
396
- const tokens = result.usage?.total_tokens ?? 0;
397
- if (tokens && this._tokensCounter) {
398
- this._tokensCounter
399
- .labels(intent).inc(tokens);
564
+ this._activeTasks++;
565
+ const t0 = Date.now();
566
+ // Nonce replay — IICP-E011
567
+ if (!this._checkNonce(task.nonce)) {
568
+ this._activeTasks--;
569
+ const body = JSON.stringify({ error: { code: "IICP-E011", message: "replay_detected" } });
570
+ res.writeHead(409, { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(body) });
571
+ res.end(body);
572
+ return;
400
573
  }
401
- const body = JSON.stringify({ task_id: taskId, status: "completed", ...result });
402
- res.writeHead(200, { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(body) });
403
- res.end(body);
404
- })
405
- .catch((err) => {
406
- this._activeTasks--;
407
- if (this._tasksCounter) {
408
- this._tasksCounter
409
- .labels("error", intent, qos).inc();
574
+ // Idempotency duplicate task_id within the retry window (ADR-010). Opt-in
575
+ // (enableIdempotency) to preserve the pre-0.6 contract.
576
+ if (this._cfg.enableIdempotency &&
577
+ !this._idempotency.checkAndRegister(task.task_id)) {
578
+ this._activeTasks--;
579
+ const body = JSON.stringify({ error: { code: "IICP-E010", message: "duplicate_task" } });
580
+ res.writeHead(409, { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(body) });
581
+ res.end(body);
582
+ return;
410
583
  }
411
- const body = JSON.stringify({ task_id: taskId, status: "error", error: { message: err.message } });
412
- res.writeHead(500, { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(body) });
413
- res.end(body);
584
+ // W3C traceparent propagation
585
+ const tp = req.headers["traceparent"];
586
+ if (tp)
587
+ task._trace = { traceparent: tp };
588
+ // ADR-014 — OTel validate span (nonce + auth check already done above; span marks boundary)
589
+ import("./otel_tracer.js").then(({ withTaskValidateSpan, withTaskExecuteSpan }) => {
590
+ withTaskValidateSpan(taskId, () => undefined);
591
+ return withTaskExecuteSpan(taskId, intent, () => handler(task));
592
+ }).catch(() => handler(task))
593
+ .then((result) => {
594
+ this._activeTasks--;
595
+ const latencyMs = Date.now() - t0;
596
+ if (this._tasksCounter) {
597
+ this._tasksCounter
598
+ .labels("completed", intent, qos).inc();
599
+ }
600
+ if (this._latencyHistogram) {
601
+ this._latencyHistogram.labels(intent, qos).observe(latencyMs);
602
+ }
603
+ const tokens = result.usage?.total_tokens ?? 0;
604
+ if (tokens && this._tokensCounter) {
605
+ this._tokensCounter
606
+ .labels(intent).inc(tokens);
607
+ }
608
+ const body = JSON.stringify({ task_id: taskId, status: "completed", ...result });
609
+ res.writeHead(200, { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(body) });
610
+ res.end(body);
611
+ })
612
+ .catch((err) => {
613
+ this._activeTasks--;
614
+ if (this._tasksCounter) {
615
+ this._tasksCounter
616
+ .labels("error", intent, qos).inc();
617
+ }
618
+ const body = JSON.stringify({ task_id: taskId, status: "error", error: { message: err.message } });
619
+ res.writeHead(500, { "Content-Type": "application/json", "Content-Length": Buffer.byteLength(body) });
620
+ res.end(body);
621
+ });
414
622
  });
415
623
  });
416
624
  }
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}