@iicp/client 0.5.7 → 0.7.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 (76) 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 +34 -2
  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/iicp_tcp.d.ts +4 -1
  33. package/dist/iicp_tcp.d.ts.map +1 -1
  34. package/dist/iicp_tcp.js +3 -0
  35. package/dist/iicp_tcp.js.map +1 -1
  36. package/dist/index.d.ts +16 -0
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +25 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/nat_detection.d.ts +4 -0
  41. package/dist/nat_detection.d.ts.map +1 -1
  42. package/dist/nat_detection.js +19 -0
  43. package/dist/nat_detection.js.map +1 -1
  44. package/dist/node.d.ts +45 -1
  45. package/dist/node.d.ts.map +1 -1
  46. package/dist/node.js +349 -59
  47. package/dist/node.js.map +1 -1
  48. package/dist/otel_tracer.d.ts +26 -0
  49. package/dist/otel_tracer.d.ts.map +1 -0
  50. package/dist/otel_tracer.js +96 -0
  51. package/dist/otel_tracer.js.map +1 -0
  52. package/dist/peer_manager.d.ts +54 -0
  53. package/dist/peer_manager.d.ts.map +1 -0
  54. package/dist/peer_manager.js +184 -0
  55. package/dist/peer_manager.js.map +1 -0
  56. package/dist/relay_session.d.ts +42 -0
  57. package/dist/relay_session.d.ts.map +1 -0
  58. package/dist/relay_session.js +276 -0
  59. package/dist/relay_session.js.map +1 -0
  60. package/dist/relay_worker_client.d.ts +37 -0
  61. package/dist/relay_worker_client.d.ts.map +1 -0
  62. package/dist/relay_worker_client.js +216 -0
  63. package/dist/relay_worker_client.js.map +1 -0
  64. package/dist/scheduler.d.ts +23 -0
  65. package/dist/scheduler.d.ts.map +1 -0
  66. package/dist/scheduler.js +42 -0
  67. package/dist/scheduler.js.map +1 -0
  68. package/dist/token_validator.d.ts +15 -0
  69. package/dist/token_validator.d.ts.map +1 -0
  70. package/dist/token_validator.js +34 -0
  71. package/dist/token_validator.js.map +1 -0
  72. package/dist/trust_auditor.d.ts +34 -0
  73. package/dist/trust_auditor.d.ts.map +1 -0
  74. package/dist/trust_auditor.js +123 -0
  75. package/dist/trust_auditor.js.map +1 -0
  76. package/package.json +1 -1
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Constant-time bearer-token validation (parity Block E, #340).
5
+ *
6
+ * Port of iicp-adapter `services/token_validator.py`. Compares a presented token against
7
+ * the expected one with `crypto.timingSafeEqual` so a timing side-channel can't recover
8
+ * the token byte-by-byte. The expected token is updated after registration.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.TokenValidator = void 0;
12
+ const node_crypto_1 = require("node:crypto");
13
+ class TokenValidator {
14
+ expected;
15
+ constructor(expectedToken = "") {
16
+ this.expected = expectedToken;
17
+ }
18
+ isValid(presented) {
19
+ if (!this.expected || !presented)
20
+ return false;
21
+ const a = Buffer.from(this.expected);
22
+ const b = Buffer.from(presented);
23
+ // timingSafeEqual throws on length mismatch; guard first (length is not secret).
24
+ if (a.length !== b.length)
25
+ return false;
26
+ return (0, node_crypto_1.timingSafeEqual)(a, b);
27
+ }
28
+ /** Set the expected token after registration (directory-issued). */
29
+ updateToken(newToken) {
30
+ this.expected = newToken;
31
+ }
32
+ }
33
+ exports.TokenValidator = TokenValidator;
34
+ //# sourceMappingURL=token_validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token_validator.js","sourceRoot":"","sources":["../src/token_validator.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC;;;;;;GAMG;;;AAEH,6CAA8C;AAE9C,MAAa,cAAc;IACjB,QAAQ,CAAS;IAEzB,YAAY,aAAa,GAAG,EAAE;QAC5B,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,SAAoC;QAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,iFAAiF;QACjF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QACxC,OAAO,IAAA,6BAAe,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,oEAAoE;IACpE,WAAW,CAAC,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AApBD,wCAoBC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Trust auditor — cross-node declaration consistency check (parity Block E, #340).
3
+ *
4
+ * Port of iicp-adapter `services/trust_auditor.py` (#118). Discovers active peers via the
5
+ * directory, probes each peer's `/iicp/health`, and verifies the directory-registered
6
+ * models actually appear in the peer's live health response. Missing models are a
7
+ * "declaration divergence" reported to `/v1/audit-report`.
8
+ *
9
+ * Opt-in background capability (call `runAuditPass` on a timer); not in the request hot
10
+ * path. The pure `modelsDiverge` helper is the unit-testable core.
11
+ */
12
+ /** Registered models absent from the peer's health response (empty == consistent). */
13
+ export declare function modelsDiverge(registered: string[], health: string[]): string[];
14
+ export interface NodeAuditResult {
15
+ node_id: string;
16
+ endpoint: string;
17
+ passed: boolean;
18
+ health_reachable: boolean;
19
+ declared_models_match: boolean;
20
+ registered_models: string[];
21
+ health_models: string[];
22
+ latency_ms: number | null;
23
+ detail: string;
24
+ }
25
+ export interface AuditReport {
26
+ run_at: string;
27
+ nodes_probed: number;
28
+ nodes_passed: number;
29
+ nodes_failed: number;
30
+ results: NodeAuditResult[];
31
+ }
32
+ /** Discover peers, probe each concurrently, report divergences. One pass. */
33
+ export declare function runAuditPass(directoryUrl: string, ownNodeId: string, nodeToken?: string): Promise<AuditReport>;
34
+ //# sourceMappingURL=trust_auditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust_auditor.d.ts","sourceRoot":"","sources":["../src/trust_auditor.ts"],"names":[],"mappings":"AACA;;;;;;;;;;GAUG;AAOH,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAG9E;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAuFD,6EAA6E;AAC7E,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,SAAK,GACb,OAAO,CAAC,WAAW,CAAC,CAmBtB"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Trust auditor — cross-node declaration consistency check (parity Block E, #340).
5
+ *
6
+ * Port of iicp-adapter `services/trust_auditor.py` (#118). Discovers active peers via the
7
+ * directory, probes each peer's `/iicp/health`, and verifies the directory-registered
8
+ * models actually appear in the peer's live health response. Missing models are a
9
+ * "declaration divergence" reported to `/v1/audit-report`.
10
+ *
11
+ * Opt-in background capability (call `runAuditPass` on a timer); not in the request hot
12
+ * path. The pure `modelsDiverge` helper is the unit-testable core.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.modelsDiverge = modelsDiverge;
16
+ exports.runAuditPass = runAuditPass;
17
+ const DISCOVER_INTENT = "urn:iicp:intent:llm:chat:v1";
18
+ const PROBE_TIMEOUT_MS = 5000;
19
+ const DISCOVER_TIMEOUT_MS = 8000;
20
+ const AUDIT_REPORT_TIMEOUT_MS = 5000;
21
+ /** Registered models absent from the peer's health response (empty == consistent). */
22
+ function modelsDiverge(registered, health) {
23
+ const h = new Set(health);
24
+ return registered.filter((m) => !h.has(m));
25
+ }
26
+ async function discoverPeers(directoryUrl, ownNodeId) {
27
+ try {
28
+ const url = `${directoryUrl.replace(/\/$/, "")}/v1/discover?intent=${encodeURIComponent(DISCOVER_INTENT)}`;
29
+ const resp = await fetch(url, { signal: AbortSignal.timeout(DISCOVER_TIMEOUT_MS) });
30
+ if (!resp.ok)
31
+ return [];
32
+ const body = (await resp.json());
33
+ return (body.nodes ?? []).filter((n) => n.node_id !== ownNodeId);
34
+ }
35
+ catch {
36
+ return [];
37
+ }
38
+ }
39
+ async function probeNode(node) {
40
+ const nodeId = node.node_id ?? "unknown";
41
+ const endpoint = node.operator_url ?? node.endpoint ?? "";
42
+ const registered = node.models ?? [];
43
+ const base = {
44
+ node_id: nodeId,
45
+ endpoint,
46
+ passed: false,
47
+ health_reachable: false,
48
+ declared_models_match: false,
49
+ registered_models: registered,
50
+ health_models: [],
51
+ latency_ms: null,
52
+ detail: "",
53
+ };
54
+ if (!endpoint)
55
+ return { ...base, detail: "no endpoint" };
56
+ const t0 = Date.now();
57
+ try {
58
+ const resp = await fetch(`${endpoint.replace(/\/$/, "")}/iicp/health`, {
59
+ signal: AbortSignal.timeout(PROBE_TIMEOUT_MS),
60
+ });
61
+ const latency = Date.now() - t0;
62
+ if (!resp.ok)
63
+ return { ...base, latency_ms: latency, detail: `HTTP ${resp.status}` };
64
+ const health = (await resp.json());
65
+ const healthModels = health.models ?? [];
66
+ const missing = modelsDiverge(registered, healthModels);
67
+ const ok = missing.length === 0;
68
+ return {
69
+ ...base,
70
+ health_reachable: true,
71
+ declared_models_match: ok,
72
+ passed: ok,
73
+ health_models: healthModels,
74
+ latency_ms: latency,
75
+ detail: ok ? "OK" : `registered ${JSON.stringify(missing)} absent from health`,
76
+ };
77
+ }
78
+ catch (exc) {
79
+ const msg = exc instanceof Error ? exc.message : String(exc);
80
+ return { ...base, latency_ms: Date.now() - t0, detail: `connection error: ${msg}` };
81
+ }
82
+ }
83
+ async function reportDivergence(directoryUrl, ownNodeId, nodeToken, targetNodeId) {
84
+ if (!ownNodeId || !nodeToken)
85
+ return;
86
+ try {
87
+ await fetch(`${directoryUrl.replace(/\/$/, "")}/v1/audit-report`, {
88
+ method: "POST",
89
+ headers: { "Content-Type": "application/json", Authorization: `Bearer ${nodeToken}` },
90
+ body: JSON.stringify({
91
+ node_id: ownNodeId,
92
+ target_node_id: targetNodeId,
93
+ finding: "declaration_divergence",
94
+ }),
95
+ signal: AbortSignal.timeout(AUDIT_REPORT_TIMEOUT_MS),
96
+ });
97
+ }
98
+ catch {
99
+ /* best-effort */
100
+ }
101
+ }
102
+ /** Discover peers, probe each concurrently, report divergences. One pass. */
103
+ async function runAuditPass(directoryUrl, ownNodeId, nodeToken = "") {
104
+ const nodes = await discoverPeers(directoryUrl, ownNodeId);
105
+ const runAt = new Date().toISOString();
106
+ if (nodes.length === 0) {
107
+ return { run_at: runAt, nodes_probed: 0, nodes_passed: 0, nodes_failed: 0, results: [] };
108
+ }
109
+ const results = await Promise.all(nodes.map(probeNode));
110
+ for (const r of results) {
111
+ if (r.health_reachable && !r.declared_models_match) {
112
+ await reportDivergence(directoryUrl, ownNodeId, nodeToken, r.node_id);
113
+ }
114
+ }
115
+ return {
116
+ run_at: runAt,
117
+ nodes_probed: results.length,
118
+ nodes_passed: results.filter((r) => r.passed).length,
119
+ nodes_failed: results.filter((r) => !r.passed).length,
120
+ results,
121
+ };
122
+ }
123
+ //# sourceMappingURL=trust_auditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust_auditor.js","sourceRoot":"","sources":["../src/trust_auditor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iicp/client",
3
- "version": "0.5.7",
3
+ "version": "0.7.0",
4
4
  "description": "Official TypeScript/JavaScript SDK for the IICP protocol (ADR-016)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",