@tenova/swt3-ai 0.5.1 → 0.5.3

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 (70) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +227 -10
  3. package/dist/buffer.d.ts +7 -1
  4. package/dist/buffer.d.ts.map +1 -1
  5. package/dist/buffer.js +38 -3
  6. package/dist/buffer.js.map +1 -1
  7. package/dist/cli.d.ts +13 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +202 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/config.d.ts +18 -5
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +346 -42
  14. package/dist/config.js.map +1 -1
  15. package/dist/demo.d.ts +1 -1
  16. package/dist/demo.d.ts.map +1 -1
  17. package/dist/demo.js +88 -4
  18. package/dist/demo.js.map +1 -1
  19. package/dist/doctor.d.ts +20 -0
  20. package/dist/doctor.d.ts.map +1 -0
  21. package/dist/doctor.js +357 -0
  22. package/dist/doctor.js.map +1 -0
  23. package/dist/environment.d.ts +34 -0
  24. package/dist/environment.d.ts.map +1 -0
  25. package/dist/environment.js +99 -0
  26. package/dist/environment.js.map +1 -0
  27. package/dist/exporters/chain-monitor.d.ts +55 -0
  28. package/dist/exporters/chain-monitor.d.ts.map +1 -0
  29. package/dist/exporters/chain-monitor.js +172 -0
  30. package/dist/exporters/chain-monitor.js.map +1 -0
  31. package/dist/hardware.d.ts +96 -0
  32. package/dist/hardware.d.ts.map +1 -0
  33. package/dist/hardware.js +265 -0
  34. package/dist/hardware.js.map +1 -0
  35. package/dist/index.d.ts +19 -3
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +10 -2
  38. package/dist/index.js.map +1 -1
  39. package/dist/merkle.d.ts +107 -0
  40. package/dist/merkle.d.ts.map +1 -0
  41. package/dist/merkle.js +226 -0
  42. package/dist/merkle.js.map +1 -0
  43. package/dist/schema.d.ts +18 -0
  44. package/dist/schema.d.ts.map +1 -0
  45. package/dist/schema.js +255 -0
  46. package/dist/schema.js.map +1 -0
  47. package/dist/trust.d.ts +100 -0
  48. package/dist/trust.d.ts.map +1 -0
  49. package/dist/trust.js +222 -0
  50. package/dist/trust.js.map +1 -0
  51. package/dist/types.d.ts +167 -11
  52. package/dist/types.d.ts.map +1 -1
  53. package/dist/types.js +42 -1
  54. package/dist/types.js.map +1 -1
  55. package/dist/wal.d.ts +69 -0
  56. package/dist/wal.d.ts.map +1 -0
  57. package/dist/wal.js +223 -0
  58. package/dist/wal.js.map +1 -0
  59. package/dist/witness.d.ts +293 -1
  60. package/dist/witness.d.ts.map +1 -1
  61. package/dist/witness.js +1234 -5
  62. package/dist/witness.js.map +1 -1
  63. package/package.json +7 -7
  64. package/templates/cost-conscious.yaml +35 -0
  65. package/templates/eu-ai-act-high-risk.yaml +56 -0
  66. package/templates/granite-sovereign.yaml +55 -0
  67. package/templates/minimal.yaml +38 -0
  68. package/templates/mythos-defense.yaml +65 -0
  69. package/templates/nist-ai-rmf.yaml +47 -0
  70. package/templates/owasp-agentic-top10.yaml +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-monitor.d.ts","sourceRoot":"","sources":["../../src/exporters/chain-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAQD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAsB;gBAEzB,OAAO,GAAE,mBAAwB;IAI7C,OAAO,CAAC,OAAO;IAmBf,WAAW,IAAI,WAAW;IAuC1B,UAAU,IAAI,MAAM;IAIpB,UAAU,IAAI,MAAM;CAiGrB"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * SWT3 AI Witness SDK -- Exploit Chain Monitor Exporter.
3
+ *
4
+ * Reads WAL entries and chain enforcer violation history to produce
5
+ * forensic timelines for incident response and auditor review.
6
+ *
7
+ * Usage:
8
+ * swt3 audit --format html
9
+ * swt3 audit --format json --wal-path /tmp/swt3-wal
10
+ */
11
+ import { readFileSync, existsSync } from "node:fs";
12
+ import { join } from "node:path";
13
+ import { tmpdir } from "node:os";
14
+ export class ChainMonitorExporter {
15
+ options;
16
+ constructor(options = {}) {
17
+ this.options = options;
18
+ }
19
+ readWal() {
20
+ const dir = this.options.walDir ?? join(tmpdir(), "swt3-wal");
21
+ const tenantId = this.options.tenantId ?? "UNKNOWN";
22
+ const safe = tenantId.replace(/[^a-zA-Z0-9_-]/g, "_");
23
+ const walPath = join(dir, `${safe}.wal`);
24
+ if (!existsSync(walPath))
25
+ return [];
26
+ const raw = readFileSync(walPath, "utf-8");
27
+ const entries = [];
28
+ for (const line of raw.split("\n")) {
29
+ if (!line.trim())
30
+ continue;
31
+ try {
32
+ entries.push(JSON.parse(line));
33
+ }
34
+ catch { /* skip corrupted lines */ }
35
+ }
36
+ return entries;
37
+ }
38
+ buildReport() {
39
+ const entries = this.readWal();
40
+ const violations = [...(this.options.violations ?? [])];
41
+ const timeline = entries.map((e) => {
42
+ const p = e.payload;
43
+ const isChainEnforcer = p.provider === "chain-enforcer";
44
+ return {
45
+ seq: e.seq,
46
+ timestamp: p.fingerprint_timestamp_ms ?? 0,
47
+ fingerprint: e.fingerprint,
48
+ procedureId: p.procedure_id ?? "unknown",
49
+ toolName: p.ai_model_id ?? undefined,
50
+ modelId: isChainEnforcer ? undefined : p.ai_model_id ?? undefined,
51
+ tokens: (p.ai_input_tokens ?? 0) + (p.ai_output_tokens ?? 0) || undefined,
52
+ isViolation: isChainEnforcer,
53
+ violationReason: isChainEnforcer ? "Chain policy violation" : undefined,
54
+ };
55
+ });
56
+ timeline.sort((a, b) => a.timestamp - b.timestamp);
57
+ return {
58
+ metadata: {
59
+ generatedAt: new Date().toISOString(),
60
+ sdkVersion: "0.5.3",
61
+ tenantId: this.options.tenantId ?? "UNKNOWN",
62
+ agentId: this.options.agentId ?? "UNKNOWN",
63
+ modelId: this.options.modelId ?? "UNKNOWN",
64
+ clearingLevel: this.options.clearingLevel ?? 1,
65
+ entryCount: timeline.length,
66
+ violationCount: violations.length + timeline.filter((t) => t.isViolation).length,
67
+ merkleRoot: this.options.merkleRoot,
68
+ },
69
+ timeline,
70
+ violations,
71
+ };
72
+ }
73
+ exportJson() {
74
+ return JSON.stringify(this.buildReport(), null, 2);
75
+ }
76
+ exportHtml() {
77
+ const report = this.buildReport();
78
+ const m = report.metadata;
79
+ const ts = m.generatedAt.replace("T", " ").slice(0, 19);
80
+ const timelineRows = report.timeline.map((t) => {
81
+ const time = t.timestamp ? new Date(t.timestamp).toISOString().slice(11, 23) : "--";
82
+ const status = t.isViolation
83
+ ? '<span style="color:#EF4444">VIOLATION</span>'
84
+ : '<span style="color:#4ADE80">OK</span>';
85
+ const tool = t.toolName ? escapeHtml(t.toolName) : "--";
86
+ const tokens = t.tokens ? String(t.tokens) : "--";
87
+ const reason = t.violationReason ? `<br><span style="color:#EF4444;font-size:.75rem">${escapeHtml(t.violationReason)}</span>` : "";
88
+ return `<tr><td>${t.seq}</td><td>${time}</td><td>${escapeHtml(t.procedureId)}</td><td>${tool}</td><td style="font-family:monospace;font-size:.8rem">${escapeHtml(t.fingerprint.slice(0, 12))}</td><td>${tokens}</td><td>${status}${reason}</td></tr>`;
89
+ }).join("\n");
90
+ const violationRows = report.violations.map((v) => {
91
+ const time = v.timestamp ? new Date(v.timestamp).toISOString().slice(11, 23) : "--";
92
+ return `<tr style="color:#EF4444"><td>${escapeHtml(v.rule)}</td><td>${escapeHtml(v.toolName)}</td><td>${escapeHtml(v.reason)}</td><td>${time}</td><td>${v.action}</td></tr>`;
93
+ }).join("\n");
94
+ const merkleSection = m.merkleRoot
95
+ ? `<h2>Cryptographic Seal</h2><pre>Merkle Root: ${escapeHtml(m.merkleRoot)}</pre>`
96
+ : "";
97
+ const watermark = "Self-Signed / Unnotarized";
98
+ return `<!DOCTYPE html>
99
+ <html lang="en">
100
+ <head>
101
+ <meta charset="UTF-8">
102
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
103
+ <title>SWT3 Exploit Chain Monitor</title>
104
+ <style>
105
+ *{margin:0;padding:0;box-sizing:border-box}
106
+ body{background:#070504;color:#E0D9D1;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;padding:2.5rem;line-height:1.6}
107
+ .c{max-width:960px;margin:0 auto}
108
+ h1{color:#E8A87C;font-size:1.5rem;margin-bottom:.25rem}
109
+ h2{color:#E8A87C;font-size:1.1rem;margin:1.5rem 0 .75rem}
110
+ .meta{color:#6B7280;font-size:.8rem;margin-bottom:1.5rem}
111
+ .stats{display:flex;gap:2rem;margin:1rem 0}
112
+ .stat{text-align:center}
113
+ .stat .num{font-size:2rem;font-weight:800}
114
+ .stat .label{font-size:.75rem;color:#6B7280;text-transform:uppercase;letter-spacing:.1em}
115
+ .pass{color:#4ADE80}
116
+ .fail{color:#EF4444}
117
+ table{width:100%;border-collapse:collapse;margin:.75rem 0;font-size:.85rem}
118
+ th{text-align:left;padding:.5rem .75rem;color:#E8A87C;border-bottom:1px solid #222;font-size:.7rem;text-transform:uppercase;letter-spacing:.1em}
119
+ td{padding:.5rem .75rem;border-bottom:1px solid #151312}
120
+ pre{background:#111;padding:1rem;border-radius:8px;overflow-x:auto;font-size:.8rem;color:#9CA3AF;margin:.75rem 0;border:1px solid #222}
121
+ .sep{border:none;border-top:1px solid #222;margin:1.5rem 0}
122
+ .watermark{color:#6B7280;font-size:.75rem;margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid #222;text-align:center}
123
+ .watermark .badge{display:inline-block;padding:.25rem .75rem;border:1px solid #FBBF24;color:#FBBF24;border-radius:4px;font-size:.7rem;font-weight:600;letter-spacing:.05em;margin-bottom:.5rem}
124
+ </style>
125
+ </head>
126
+ <body>
127
+ <div class="c">
128
+ <h1>SWT3 Exploit Chain Monitor</h1>
129
+ <p class="meta">Generated ${ts} UTC | SWT3 SDK v${escapeHtml(m.sdkVersion)} | Clearing Level ${m.clearingLevel}</p>
130
+
131
+ <div class="stats">
132
+ <div class="stat"><div class="num pass">${m.entryCount}</div><div class="label">Events</div></div>
133
+ <div class="stat"><div class="num ${m.violationCount > 0 ? "fail" : "pass"}">${m.violationCount}</div><div class="label">Violations</div></div>
134
+ </div>
135
+
136
+ <h2>Session</h2>
137
+ <table>
138
+ <tr><td style="color:#6B7280">Tenant</td><td>${escapeHtml(m.tenantId)}</td></tr>
139
+ <tr><td style="color:#6B7280">Agent</td><td>${escapeHtml(m.agentId)}</td></tr>
140
+ <tr><td style="color:#6B7280">Model</td><td>${escapeHtml(m.modelId)}</td></tr>
141
+ </table>
142
+
143
+ <h2>Timeline</h2>
144
+ ${report.timeline.length > 0 ? `<table>
145
+ <tr><th>#</th><th>Time</th><th>Procedure</th><th>Tool</th><th>Fingerprint</th><th>Tokens</th><th>Status</th></tr>
146
+ ${timelineRows}
147
+ </table>` : '<p style="color:#6B7280">No WAL entries found.</p>'}
148
+
149
+ ${report.violations.length > 0 ? `<hr class="sep">
150
+ <h2>Chain Density Violations</h2>
151
+ <table>
152
+ <tr><th>Rule</th><th>Tool</th><th>Reason</th><th>Time</th><th>Action</th></tr>
153
+ ${violationRows}
154
+ </table>` : ""}
155
+
156
+ ${merkleSection}
157
+
158
+ <div class="watermark">
159
+ <div class="badge">${watermark}</div>
160
+ <p>SWT3 Protocol | Patent Pending | Apache 2.0</p>
161
+ <p>TeNova: Defining the AI Accountability Standard.</p>
162
+ <p style="margin-top:.5rem">This report was generated locally. No data was transmitted to external services.</p>
163
+ </div>
164
+ </div>
165
+ </body>
166
+ </html>`;
167
+ }
168
+ }
169
+ function escapeHtml(str) {
170
+ return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
171
+ }
172
+ //# sourceMappingURL=chain-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-monitor.js","sourceRoot":"","sources":["../../src/exporters/chain-monitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * SWT3 AI Witness SDK -- Hardware Discovery (AI-HW.1, AI-HW.3).
3
+ *
4
+ * Out-of-band hardware inventory snapshots. Records what GPU hardware
5
+ * and TPM state were present when the service started.
6
+ * Does NOT sit in the inference path.
7
+ *
8
+ * Data sources:
9
+ * - nvidia-smi subprocess for GPU discovery (AI-HW.1)
10
+ * - tpm2-tools subprocess for TPM 2.0 attestation (AI-HW.3)
11
+ *
12
+ * Security: All hardware identifiers (GPU UUIDs, bus IDs, hostnames,
13
+ * PCR digests, endorsement keys) are SHA-256 hashed at discovery time.
14
+ * Raw values never leave this module.
15
+ */
16
+ export interface GpuInfo {
17
+ name: string;
18
+ memoryMb: number;
19
+ busIdHash: string;
20
+ uuidHash: string;
21
+ }
22
+ export interface HardwareSnapshot {
23
+ gpus: GpuInfo[];
24
+ driverVersion: string;
25
+ cudaVersion: string;
26
+ topology: string;
27
+ interconnect: string;
28
+ totalMemoryMb: number;
29
+ hostnameHash: string;
30
+ }
31
+ /** Topology codes for factor_c. */
32
+ export declare const TOPOLOGY_CODES: Record<string, number>;
33
+ /**
34
+ * Query GPU hardware and return a pre-hashed snapshot.
35
+ * Returns empty snapshot if no GPUs are detectable.
36
+ */
37
+ export declare function queryHardware(): HardwareSnapshot;
38
+ /**
39
+ * Infer cluster topology from GPU count and model names.
40
+ */
41
+ export declare function detectTopology(gpus: GpuInfo[]): string;
42
+ /**
43
+ * Detect GPU interconnect type from nvidia-smi topology matrix.
44
+ */
45
+ export declare function detectInterconnect(): string;
46
+ /**
47
+ * Convert topology string to factor_c integer code.
48
+ */
49
+ export declare function topologyCode(topology: string): number;
50
+ /**
51
+ * Query GPUs via nvidia-smi subprocess. Returns [gpus, driverVersion].
52
+ */
53
+ export declare function queryNvidiaSmi(): [GpuInfo[], string];
54
+ export interface PcrRegister {
55
+ index: number;
56
+ bank: string;
57
+ digestHash: string;
58
+ }
59
+ export interface TPMSnapshot {
60
+ available: boolean;
61
+ manufacturer: string;
62
+ firmwareVersion: string;
63
+ pcrs: PcrRegister[];
64
+ endorsementKeyHash: string;
65
+ hostnameHash: string;
66
+ }
67
+ /**
68
+ * Query TPM 2.0 PCR registers and return a pre-hashed snapshot.
69
+ * Returns empty snapshot if no TPM device or tpm2-tools not installed.
70
+ */
71
+ export declare function queryTPM(): TPMSnapshot;
72
+ /**
73
+ * Read TPM PCR registers via tpm2_pcrread. Returns hashed digests.
74
+ *
75
+ * Output format:
76
+ * sha256:
77
+ * 0 : 0x<64-hex-chars>
78
+ * 7 : 0x<64-hex-chars>
79
+ */
80
+ export declare function queryTPMPcrs(): PcrRegister[];
81
+ /**
82
+ * Parse tpm2_pcrread output into pre-hashed PcrRegister array.
83
+ */
84
+ export declare function parseTPMPcrOutput(output: string): PcrRegister[];
85
+ /**
86
+ * Query TPM manufacturer and firmware via tpm2_getcap.
87
+ * Returns hashed values. Falls back to empty strings on failure.
88
+ */
89
+ export declare function queryTPMProperties(): {
90
+ manufacturer: string;
91
+ firmwareVersion: string;
92
+ endorsementKeyHash: string;
93
+ };
94
+ /** SHA-256 hash of the all-zeros PCR value (uninitialized register). */
95
+ export declare const ZERO_PCR_HASH: string;
96
+ //# sourceMappingURL=hardware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hardware.d.ts","sourceRoot":"","sources":["../src/hardware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,mCAAmC;AACnC,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAYjD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,IAAI,gBAAgB,CAiBhD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAkBtD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CA2B3C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CA8BpD;AAID,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;CACtB;AAWD;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,WAAW,CActC;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,WAAW,EAAE,CAW5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAwB/D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAgCA;AAED,wEAAwE;AACxE,eAAO,MAAM,aAAa,QAAkC,CAAC"}
@@ -0,0 +1,265 @@
1
+ /**
2
+ * SWT3 AI Witness SDK -- Hardware Discovery (AI-HW.1, AI-HW.3).
3
+ *
4
+ * Out-of-band hardware inventory snapshots. Records what GPU hardware
5
+ * and TPM state were present when the service started.
6
+ * Does NOT sit in the inference path.
7
+ *
8
+ * Data sources:
9
+ * - nvidia-smi subprocess for GPU discovery (AI-HW.1)
10
+ * - tpm2-tools subprocess for TPM 2.0 attestation (AI-HW.3)
11
+ *
12
+ * Security: All hardware identifiers (GPU UUIDs, bus IDs, hostnames,
13
+ * PCR digests, endorsement keys) are SHA-256 hashed at discovery time.
14
+ * Raw values never leave this module.
15
+ */
16
+ import { execSync } from "node:child_process";
17
+ import { hostname } from "node:os";
18
+ import { sha256Truncated } from "./fingerprint.js";
19
+ /** Topology codes for factor_c. */
20
+ export const TOPOLOGY_CODES = {
21
+ single: 0,
22
+ "multi-gpu": 1,
23
+ HGX: 1,
24
+ "DGX-A100": 1,
25
+ "DGX-H100": 1,
26
+ "DGX-H200": 1,
27
+ "DGX-B200": 1,
28
+ NVL36: 2,
29
+ NVL72: 2,
30
+ "multi-node": 2,
31
+ unknown: 3,
32
+ };
33
+ /**
34
+ * Query GPU hardware and return a pre-hashed snapshot.
35
+ * Returns empty snapshot if no GPUs are detectable.
36
+ */
37
+ export function queryHardware() {
38
+ const [gpus, driverVersion] = queryNvidiaSmi();
39
+ const topology = detectTopology(gpus);
40
+ // Only query interconnect if GPUs were found (avoids unnecessary subprocess)
41
+ const interconnect = gpus.length > 0 ? detectInterconnect() : "unknown";
42
+ const totalMemoryMb = gpus.reduce((sum, g) => sum + g.memoryMb, 0);
43
+ const hostnameHash = sha256Truncated(hostname());
44
+ return {
45
+ gpus,
46
+ driverVersion,
47
+ cudaVersion: "", // Not available via nvidia-smi CSV
48
+ topology,
49
+ interconnect,
50
+ totalMemoryMb,
51
+ hostnameHash,
52
+ };
53
+ }
54
+ /**
55
+ * Infer cluster topology from GPU count and model names.
56
+ */
57
+ export function detectTopology(gpus) {
58
+ const count = gpus.length;
59
+ if (count === 0)
60
+ return "unknown";
61
+ if (count === 1)
62
+ return "single";
63
+ const nameStr = gpus.map((g) => g.name.toUpperCase()).join(" ");
64
+ if (count === 72)
65
+ return "NVL72";
66
+ if (count === 36)
67
+ return "NVL36";
68
+ if (count === 8) {
69
+ if (nameStr.includes("B200") || nameStr.includes("BLACKWELL"))
70
+ return "DGX-B200";
71
+ if (nameStr.includes("H200"))
72
+ return "DGX-H200";
73
+ if (nameStr.includes("H100"))
74
+ return "DGX-H100";
75
+ if (nameStr.includes("A100"))
76
+ return "DGX-A100";
77
+ return "HGX";
78
+ }
79
+ if ([2, 3, 4, 6].includes(count))
80
+ return "multi-gpu";
81
+ return "multi-node";
82
+ }
83
+ /**
84
+ * Detect GPU interconnect type from nvidia-smi topology matrix.
85
+ */
86
+ export function detectInterconnect() {
87
+ try {
88
+ const raw = execSync("nvidia-smi topo -m", {
89
+ timeout: 5_000,
90
+ encoding: "utf-8",
91
+ stdio: ["pipe", "pipe", "pipe"],
92
+ });
93
+ // Parse only GPU data rows (start with "GPU" + digit), skip header/legend
94
+ const connections = [];
95
+ for (const line of raw.split("\n")) {
96
+ const trimmed = line.trim();
97
+ if (/^GPU\d/.test(trimmed)) {
98
+ const parts = trimmed.split(/\s+/).slice(1).filter((p) => p !== "X");
99
+ connections.push(...parts.map((p) => p.toUpperCase()));
100
+ }
101
+ }
102
+ if (connections.length === 0)
103
+ return "unknown";
104
+ const joined = connections.join(" ");
105
+ if (joined.includes("SYS"))
106
+ return "nvswitch";
107
+ if (connections.some((c) => /^NV\d/.test(c)))
108
+ return "nvlink";
109
+ if (joined.includes("PIX") || joined.includes("PHB") || joined.includes("PXB"))
110
+ return "pcie";
111
+ return "unknown";
112
+ }
113
+ catch {
114
+ return "unknown";
115
+ }
116
+ }
117
+ /**
118
+ * Convert topology string to factor_c integer code.
119
+ */
120
+ export function topologyCode(topology) {
121
+ return TOPOLOGY_CODES[topology] ?? 3;
122
+ }
123
+ /**
124
+ * Query GPUs via nvidia-smi subprocess. Returns [gpus, driverVersion].
125
+ */
126
+ export function queryNvidiaSmi() {
127
+ try {
128
+ const output = execSync("nvidia-smi --query-gpu=name,memory.total,pci.bus_id,uuid,driver_version --format=csv,noheader,nounits", { timeout: 5_000, encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] });
129
+ const gpus = [];
130
+ let driver = "";
131
+ for (const line of output.trim().split("\n")) {
132
+ if (!line.trim())
133
+ continue;
134
+ const parts = line.split(",").map((p) => p.trim());
135
+ if (parts.length < 5)
136
+ continue;
137
+ const [name, memStr, busId, uuid, drv] = parts;
138
+ if (!driver)
139
+ driver = drv;
140
+ gpus.push({
141
+ name,
142
+ memoryMb: Math.round(parseFloat(memStr)) || 0,
143
+ busIdHash: sha256Truncated(busId),
144
+ uuidHash: sha256Truncated(uuid),
145
+ });
146
+ }
147
+ return [gpus, driver];
148
+ }
149
+ catch {
150
+ return [[], ""];
151
+ }
152
+ }
153
+ const EMPTY_TPM = {
154
+ available: false,
155
+ manufacturer: "",
156
+ firmwareVersion: "",
157
+ pcrs: [],
158
+ endorsementKeyHash: "",
159
+ hostnameHash: "",
160
+ };
161
+ /**
162
+ * Query TPM 2.0 PCR registers and return a pre-hashed snapshot.
163
+ * Returns empty snapshot if no TPM device or tpm2-tools not installed.
164
+ */
165
+ export function queryTPM() {
166
+ const pcrs = queryTPMPcrs();
167
+ if (pcrs.length === 0)
168
+ return { ...EMPTY_TPM, hostnameHash: sha256Truncated(hostname()) };
169
+ const props = queryTPMProperties();
170
+ return {
171
+ available: true,
172
+ manufacturer: props.manufacturer,
173
+ firmwareVersion: props.firmwareVersion,
174
+ pcrs,
175
+ endorsementKeyHash: props.endorsementKeyHash,
176
+ hostnameHash: sha256Truncated(hostname()),
177
+ };
178
+ }
179
+ /**
180
+ * Read TPM PCR registers via tpm2_pcrread. Returns hashed digests.
181
+ *
182
+ * Output format:
183
+ * sha256:
184
+ * 0 : 0x<64-hex-chars>
185
+ * 7 : 0x<64-hex-chars>
186
+ */
187
+ export function queryTPMPcrs() {
188
+ try {
189
+ const output = execSync("tpm2_pcrread sha256:0,1,2,3,4,5,6,7", {
190
+ timeout: 5_000,
191
+ encoding: "utf-8",
192
+ stdio: ["pipe", "pipe", "pipe"],
193
+ });
194
+ return parseTPMPcrOutput(output);
195
+ }
196
+ catch {
197
+ return [];
198
+ }
199
+ }
200
+ /**
201
+ * Parse tpm2_pcrread output into pre-hashed PcrRegister array.
202
+ */
203
+ export function parseTPMPcrOutput(output) {
204
+ const pcrs = [];
205
+ let currentBank = "";
206
+ for (const line of output.split("\n")) {
207
+ const trimmed = line.trim();
208
+ // Bank header: "sha256:" or "sha1:"
209
+ const bankMatch = trimmed.match(/^(\w+):$/);
210
+ if (bankMatch) {
211
+ currentBank = bankMatch[1];
212
+ continue;
213
+ }
214
+ // PCR line: " 0 : 0x3d458c..."
215
+ const pcrMatch = trimmed.match(/^(\d+)\s*:\s*0x([0-9a-fA-F]+)$/);
216
+ if (pcrMatch && currentBank) {
217
+ pcrs.push({
218
+ index: parseInt(pcrMatch[1], 10),
219
+ bank: currentBank,
220
+ digestHash: sha256Truncated(pcrMatch[2]),
221
+ });
222
+ }
223
+ }
224
+ return pcrs;
225
+ }
226
+ /**
227
+ * Query TPM manufacturer and firmware via tpm2_getcap.
228
+ * Returns hashed values. Falls back to empty strings on failure.
229
+ */
230
+ export function queryTPMProperties() {
231
+ const result = { manufacturer: "", firmwareVersion: "", endorsementKeyHash: "" };
232
+ try {
233
+ const output = execSync("tpm2_getcap properties-fixed", {
234
+ timeout: 5_000,
235
+ encoding: "utf-8",
236
+ stdio: ["pipe", "pipe", "pipe"],
237
+ });
238
+ for (const line of output.split("\n")) {
239
+ const kv = line.trim();
240
+ if (kv.startsWith("TPM2_PT_MANUFACTURER:")) {
241
+ result.manufacturer = sha256Truncated(kv.split(":").slice(1).join(":").trim());
242
+ }
243
+ else if (kv.startsWith("TPM2_PT_FIRMWARE_VERSION_1:")) {
244
+ result.firmwareVersion = sha256Truncated(kv.split(":").slice(1).join(":").trim());
245
+ }
246
+ }
247
+ }
248
+ catch { /* unavailable */ }
249
+ // Endorsement key: separate command
250
+ try {
251
+ const ekOutput = execSync("tpm2_readpublic -c 0x81010001 -o /dev/null 2>&1 || tpm2_createek -c /dev/null -G rsa -u /dev/stdout 2>/dev/null | head -c 512", {
252
+ timeout: 5_000,
253
+ encoding: "utf-8",
254
+ stdio: ["pipe", "pipe", "pipe"],
255
+ });
256
+ if (ekOutput.trim()) {
257
+ result.endorsementKeyHash = sha256Truncated(ekOutput.trim());
258
+ }
259
+ }
260
+ catch { /* unavailable */ }
261
+ return result;
262
+ }
263
+ /** SHA-256 hash of the all-zeros PCR value (uninitialized register). */
264
+ export const ZERO_PCR_HASH = sha256Truncated("0".repeat(64));
265
+ //# sourceMappingURL=hardware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hardware.js","sourceRoot":"","sources":["../src/hardware.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -13,13 +13,29 @@
13
13
  *
14
14
  * const client = witness.wrap(new OpenAI()) as OpenAI;
15
15
  */
16
- export { Witness, GatekeeperError } from "./witness.js";
16
+ export { Witness, GatekeeperError, ChainEnforcer, PolicyViolationError } from "./witness.js";
17
+ export { ChainMonitorExporter } from "./exporters/chain-monitor.js";
18
+ export type { ChainMonitorOptions, AuditReport, TimelineEntry } from "./exporters/chain-monitor.js";
17
19
  export type { WitnessOptions } from "./witness.js";
18
- export type { WitnessConfig, WitnessPayload, WitnessReceipt, InferenceRecord, BatchResponse, } from "./types.js";
20
+ export type { WitnessConfig, WitnessPayload, WitnessReceipt, InferenceRecord, BatchResponse, RagChunk, RagContextOptions, ModelWeightInfo, AdapterInfo, SkillInfo, MemorySource, } from "./types.js";
21
+ export { QUANTIZATION_CODES, POLICY_CATEGORIES, BINDING_METHODS, APPROVAL_STATUS, PII_EVENT_TYPES } from "./types.js";
19
22
  export { mintFingerprint, sha256Truncated, sha256Hex, timestampMs } from "./fingerprint.js";
20
23
  export { extractPayloads, extractGatekeeperPayload, extractRevocationPayload, REVOCATION_REASONS } from "./clearing.js";
21
24
  export { signPayload } from "./signing.js";
22
- export { loadConfig } from "./config.js";
25
+ export { loadConfig, loadFullConfig, computeConfigHash } from "./config.js";
26
+ export type { TrustMeshConfig, HardwareConfig, DensityPolicyConfig, McpPolicyConfig, MerkleConfig, LoadedConfig, ChainRule, ChainPolicyViolation } from "./types.js";
27
+ export { validateSchema } from "./schema.js";
28
+ export type { ValidationResult, ValidationError } from "./schema.js";
29
+ export { WriteAheadLog } from "./wal.js";
30
+ export type { WalOptions } from "./wal.js";
23
31
  export { wrapOllama, isOllamaClient } from "./adapters/ollama.js";
24
32
  export { wrapVllm } from "./adapters/vllm.js";
33
+ export { queryHardware, detectTopology, topologyCode, TOPOLOGY_CODES, queryTPM, parseTPMPcrOutput, ZERO_PCR_HASH } from "./hardware.js";
34
+ export type { GpuInfo, HardwareSnapshot, TPMSnapshot, PcrRegister } from "./hardware.js";
35
+ export { hashLeaf, hashNode, getMerkleRoot, getMerkleProof, verifyMerkleProof, MerkleAccumulator, } from "./merkle.js";
36
+ export type { MerkleProof, MerkleProofStep, SessionRoot, MerkleAccumulatorOptions } from "./merkle.js";
37
+ export { queryEnvironment, NODE_TYPE_CODES } from "./environment.js";
38
+ export type { EnvironmentSnapshot } from "./environment.js";
39
+ export { TrustRegistry, verifyCredential, evaluateTrustLevel, signCredential, verifyCredentialSignature, buildCredentialMessage, TRUST_DENIED, TRUST_BASIC, TRUST_VERIFIED, TRUST_ATTESTED, TRUST_SOVEREIGN, TRUST_LEVEL_NAMES, } from "./trust.js";
40
+ export type { TrustCredential, TrustResult } from "./trust.js";
25
41
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EACV,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AACpG,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EACV,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,SAAS,EACT,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACrK,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxI,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EACL,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EACpE,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACrE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EACnD,cAAc,EAAE,yBAAyB,EAAE,sBAAsB,EACjE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAC1E,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -13,11 +13,19 @@
13
13
  *
14
14
  * const client = witness.wrap(new OpenAI()) as OpenAI;
15
15
  */
16
- export { Witness, GatekeeperError } from "./witness.js";
16
+ export { Witness, GatekeeperError, ChainEnforcer, PolicyViolationError } from "./witness.js";
17
+ export { ChainMonitorExporter } from "./exporters/chain-monitor.js";
18
+ export { QUANTIZATION_CODES, POLICY_CATEGORIES, BINDING_METHODS, APPROVAL_STATUS, PII_EVENT_TYPES } from "./types.js";
17
19
  export { mintFingerprint, sha256Truncated, sha256Hex, timestampMs } from "./fingerprint.js";
18
20
  export { extractPayloads, extractGatekeeperPayload, extractRevocationPayload, REVOCATION_REASONS } from "./clearing.js";
19
21
  export { signPayload } from "./signing.js";
20
- export { loadConfig } from "./config.js";
22
+ export { loadConfig, loadFullConfig, computeConfigHash } from "./config.js";
23
+ export { validateSchema } from "./schema.js";
24
+ export { WriteAheadLog } from "./wal.js";
21
25
  export { wrapOllama, isOllamaClient } from "./adapters/ollama.js";
22
26
  export { wrapVllm } from "./adapters/vllm.js";
27
+ export { queryHardware, detectTopology, topologyCode, TOPOLOGY_CODES, queryTPM, parseTPMPcrOutput, ZERO_PCR_HASH } from "./hardware.js";
28
+ export { hashLeaf, hashNode, getMerkleRoot, getMerkleProof, verifyMerkleProof, MerkleAccumulator, } from "./merkle.js";
29
+ export { queryEnvironment, NODE_TYPE_CODES } from "./environment.js";
30
+ export { TrustRegistry, verifyCredential, evaluateTrustLevel, signCredential, verifyCredentialSignature, buildCredentialMessage, TRUST_DENIED, TRUST_BASIC, TRUST_VERIFIED, TRUST_ATTESTED, TRUST_SOVEREIGN, TRUST_LEVEL_NAMES, } from "./trust.js";
23
31
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AASxD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAgBpE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE5E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAExI,OAAO,EACL,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EACpE,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EACL,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EACnD,cAAc,EAAE,yBAAyB,EAAE,sBAAsB,EACjE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAC1E,iBAAiB,GAClB,MAAM,YAAY,CAAC"}