@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
package/dist/wal.d.ts ADDED
@@ -0,0 +1,69 @@
1
+ /**
2
+ * SWT3 AI Witness SDK -- Write-Ahead Log (WAL).
3
+ *
4
+ * Crash-resilient buffer persistence. Payloads are written to a JSONL
5
+ * file before network transmission. If the process crashes, unsent
6
+ * entries survive on disk and replay on next startup.
7
+ *
8
+ * Format:
9
+ * Each line: JSON object with { seq, fingerprint, payload }
10
+ * Checkpoint file: single number (last successfully flushed seq)
11
+ *
12
+ * Replay protection:
13
+ * A bounded set of recently-seen anchor_fingerprint values prevents
14
+ * duplicate witness anchors from being submitted. The set is populated
15
+ * from the WAL on startup and updated on each enqueue.
16
+ *
17
+ * Patent pending. All rights reserved.
18
+ */
19
+ import type { WitnessPayload } from "./types.js";
20
+ export interface WalOptions {
21
+ /** Directory for WAL files. Default: $TMPDIR/swt3-wal */
22
+ walDir?: string;
23
+ /** Max fingerprints in replay protection set. Default: 50000 */
24
+ replayWindow?: number;
25
+ /** Enable replay protection (dedup). Default: true when WAL enabled */
26
+ replayProtection?: boolean;
27
+ }
28
+ export declare class WriteAheadLog {
29
+ private walPath;
30
+ private checkpointPath;
31
+ private seq;
32
+ private checkpoint;
33
+ private replaySet;
34
+ private replayWindow;
35
+ private replayEnabled;
36
+ constructor(tenantId: string, options?: WalOptions);
37
+ /**
38
+ * Write a payload to the WAL before sending. Returns the sequence number.
39
+ * Returns -1 if the fingerprint is a duplicate (replay protection).
40
+ */
41
+ append(payload: WitnessPayload): number;
42
+ /**
43
+ * Mark entries up to this sequence as successfully flushed.
44
+ * Updates the checkpoint file atomically.
45
+ */
46
+ markFlushed(upToSeq: number): void;
47
+ /**
48
+ * Recover unflushed entries from the WAL. Called on startup.
49
+ * Returns payloads that were written but never confirmed as flushed.
50
+ */
51
+ recover(): WitnessPayload[];
52
+ /**
53
+ * Check if a fingerprint has already been seen (replay protection).
54
+ */
55
+ isDuplicate(fingerprint: string): boolean;
56
+ /** Current sequence number. */
57
+ get currentSeq(): number;
58
+ /** Last flushed checkpoint. */
59
+ get currentCheckpoint(): number;
60
+ /** Number of fingerprints in the replay set. */
61
+ get replaySetSize(): number;
62
+ /** Remove WAL and checkpoint files (for testing or cleanup). */
63
+ destroy(): void;
64
+ private _scanWal;
65
+ private _readEntries;
66
+ private _addToReplaySet;
67
+ private _maybeRotate;
68
+ }
69
+ //# sourceMappingURL=wal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wal.d.ts","sourceRoot":"","sources":["../src/wal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAiBjD,MAAM,WAAW,UAAU;IACzB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAU;gBAEnB,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe;IAwBtD;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;IAyBvC;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAalC;;;OAGG;IACH,OAAO,IAAI,cAAc,EAAE;IAe3B;;OAEG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAKzC,+BAA+B;IAC/B,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,+BAA+B;IAC/B,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,gDAAgD;IAChD,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,gEAAgE;IAChE,OAAO,IAAI,IAAI;IASf,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,YAAY;CAuBrB"}
package/dist/wal.js ADDED
@@ -0,0 +1,223 @@
1
+ /**
2
+ * SWT3 AI Witness SDK -- Write-Ahead Log (WAL).
3
+ *
4
+ * Crash-resilient buffer persistence. Payloads are written to a JSONL
5
+ * file before network transmission. If the process crashes, unsent
6
+ * entries survive on disk and replay on next startup.
7
+ *
8
+ * Format:
9
+ * Each line: JSON object with { seq, fingerprint, payload }
10
+ * Checkpoint file: single number (last successfully flushed seq)
11
+ *
12
+ * Replay protection:
13
+ * A bounded set of recently-seen anchor_fingerprint values prevents
14
+ * duplicate witness anchors from being submitted. The set is populated
15
+ * from the WAL on startup and updated on each enqueue.
16
+ *
17
+ * Patent pending. All rights reserved.
18
+ */
19
+ import { mkdirSync, appendFileSync, readFileSync, writeFileSync, existsSync, renameSync, unlinkSync, statSync } from "node:fs";
20
+ import { join } from "node:path";
21
+ import { tmpdir } from "node:os";
22
+ /** Default WAL directory under OS temp. */
23
+ const DEFAULT_WAL_DIR = join(tmpdir(), "swt3-wal");
24
+ /** Maximum fingerprints tracked for replay protection. */
25
+ const DEFAULT_REPLAY_WINDOW = 50_000;
26
+ /** WAL file rotation threshold (5 MB). */
27
+ const WAL_ROTATION_BYTES = 5 * 1024 * 1024;
28
+ export class WriteAheadLog {
29
+ walPath;
30
+ checkpointPath;
31
+ seq = 0;
32
+ checkpoint = 0;
33
+ replaySet;
34
+ replayWindow;
35
+ replayEnabled;
36
+ constructor(tenantId, options = {}) {
37
+ const dir = options.walDir ?? DEFAULT_WAL_DIR;
38
+ this.replayWindow = options.replayWindow ?? DEFAULT_REPLAY_WINDOW;
39
+ this.replayEnabled = options.replayProtection ?? true;
40
+ this.replaySet = new Set();
41
+ // Tenant-scoped WAL file (multiple SDK instances on same machine)
42
+ const safe = tenantId.replace(/[^a-zA-Z0-9_-]/g, "_");
43
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
44
+ this.walPath = join(dir, `${safe}.wal`);
45
+ this.checkpointPath = join(dir, `${safe}.ckpt`);
46
+ // Load checkpoint
47
+ if (existsSync(this.checkpointPath)) {
48
+ const raw = readFileSync(this.checkpointPath, "utf-8").trim();
49
+ this.checkpoint = parseInt(raw, 10) || 0;
50
+ }
51
+ // Scan existing WAL to find max seq and populate replay set
52
+ if (existsSync(this.walPath)) {
53
+ this._scanWal();
54
+ }
55
+ }
56
+ /**
57
+ * Write a payload to the WAL before sending. Returns the sequence number.
58
+ * Returns -1 if the fingerprint is a duplicate (replay protection).
59
+ */
60
+ append(payload) {
61
+ const fp = payload.anchor_fingerprint;
62
+ // Replay protection: reject duplicates
63
+ if (this.replayEnabled && fp && this.replaySet.has(fp)) {
64
+ return -1;
65
+ }
66
+ this.seq++;
67
+ const entry = {
68
+ seq: this.seq,
69
+ fingerprint: fp || "",
70
+ payload: payloadToRecord(payload),
71
+ };
72
+ appendFileSync(this.walPath, JSON.stringify(entry) + "\n", "utf-8");
73
+ // Track fingerprint
74
+ if (this.replayEnabled && fp) {
75
+ this._addToReplaySet(fp);
76
+ }
77
+ return this.seq;
78
+ }
79
+ /**
80
+ * Mark entries up to this sequence as successfully flushed.
81
+ * Updates the checkpoint file atomically.
82
+ */
83
+ markFlushed(upToSeq) {
84
+ if (upToSeq <= this.checkpoint)
85
+ return;
86
+ this.checkpoint = upToSeq;
87
+ // Atomic write: write to temp then rename
88
+ const tmp = this.checkpointPath + ".tmp";
89
+ writeFileSync(tmp, String(this.checkpoint), "utf-8");
90
+ renameSync(tmp, this.checkpointPath);
91
+ // Rotate WAL if it's large and fully flushed
92
+ this._maybeRotate();
93
+ }
94
+ /**
95
+ * Recover unflushed entries from the WAL. Called on startup.
96
+ * Returns payloads that were written but never confirmed as flushed.
97
+ */
98
+ recover() {
99
+ if (!existsSync(this.walPath))
100
+ return [];
101
+ const entries = this._readEntries();
102
+ const unflushed = entries.filter((e) => e.seq > this.checkpoint);
103
+ if (unflushed.length > 0) {
104
+ console.info(`[swt3-ai] WAL recovery: ${unflushed.length} unflushed entries found (checkpoint: ${this.checkpoint}, max seq: ${this.seq})`);
105
+ }
106
+ return unflushed.map((e) => e.payload);
107
+ }
108
+ /**
109
+ * Check if a fingerprint has already been seen (replay protection).
110
+ */
111
+ isDuplicate(fingerprint) {
112
+ if (!this.replayEnabled || !fingerprint)
113
+ return false;
114
+ return this.replaySet.has(fingerprint);
115
+ }
116
+ /** Current sequence number. */
117
+ get currentSeq() {
118
+ return this.seq;
119
+ }
120
+ /** Last flushed checkpoint. */
121
+ get currentCheckpoint() {
122
+ return this.checkpoint;
123
+ }
124
+ /** Number of fingerprints in the replay set. */
125
+ get replaySetSize() {
126
+ return this.replaySet.size;
127
+ }
128
+ /** Remove WAL and checkpoint files (for testing or cleanup). */
129
+ destroy() {
130
+ try {
131
+ unlinkSync(this.walPath);
132
+ }
133
+ catch { /* noop */ }
134
+ try {
135
+ unlinkSync(this.checkpointPath);
136
+ }
137
+ catch { /* noop */ }
138
+ try {
139
+ unlinkSync(this.walPath + ".tmp");
140
+ }
141
+ catch { /* noop */ }
142
+ try {
143
+ unlinkSync(this.checkpointPath + ".tmp");
144
+ }
145
+ catch { /* noop */ }
146
+ }
147
+ // ── Internal ──
148
+ _scanWal() {
149
+ const entries = this._readEntries();
150
+ for (const entry of entries) {
151
+ if (entry.seq > this.seq)
152
+ this.seq = entry.seq;
153
+ if (this.replayEnabled && entry.fingerprint) {
154
+ this._addToReplaySet(entry.fingerprint);
155
+ }
156
+ }
157
+ }
158
+ _readEntries() {
159
+ if (!existsSync(this.walPath))
160
+ return [];
161
+ const raw = readFileSync(this.walPath, "utf-8");
162
+ const entries = [];
163
+ for (const line of raw.split("\n")) {
164
+ if (!line.trim())
165
+ continue;
166
+ try {
167
+ entries.push(JSON.parse(line));
168
+ }
169
+ catch {
170
+ // Corrupted line (partial write from crash) -- skip
171
+ }
172
+ }
173
+ return entries;
174
+ }
175
+ _addToReplaySet(fp) {
176
+ this.replaySet.add(fp);
177
+ // Evict oldest entries if over window (convert to array, drop first N)
178
+ if (this.replaySet.size > this.replayWindow) {
179
+ const overflow = this.replaySet.size - this.replayWindow;
180
+ const iter = this.replaySet.values();
181
+ for (let i = 0; i < overflow; i++) {
182
+ const oldest = iter.next().value;
183
+ if (oldest !== undefined)
184
+ this.replaySet.delete(oldest);
185
+ }
186
+ }
187
+ }
188
+ _maybeRotate() {
189
+ if (!existsSync(this.walPath))
190
+ return;
191
+ try {
192
+ const stat = statSync(this.walPath);
193
+ if (stat.size < WAL_ROTATION_BYTES)
194
+ return;
195
+ }
196
+ catch {
197
+ return;
198
+ }
199
+ // Read entries, keep only unflushed
200
+ const entries = this._readEntries();
201
+ const unflushed = entries.filter((e) => e.seq > this.checkpoint);
202
+ if (unflushed.length === 0) {
203
+ // All flushed -- truncate
204
+ writeFileSync(this.walPath, "", "utf-8");
205
+ }
206
+ else {
207
+ // Rewrite with only unflushed entries
208
+ const tmp = this.walPath + ".tmp";
209
+ writeFileSync(tmp, unflushed.map((e) => JSON.stringify(e)).join("\n") + "\n", "utf-8");
210
+ renameSync(tmp, this.walPath);
211
+ }
212
+ }
213
+ }
214
+ /** Convert WitnessPayload to a plain record for JSON serialization. */
215
+ function payloadToRecord(p) {
216
+ const r = {};
217
+ for (const [k, v] of Object.entries(p)) {
218
+ if (v !== undefined && v !== null)
219
+ r[k] = v;
220
+ }
221
+ return r;
222
+ }
223
+ //# sourceMappingURL=wal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wal.js","sourceRoot":"","sources":["../src/wal.ts"],"names":[],"mappings":"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"}
package/dist/witness.d.ts CHANGED
@@ -19,8 +19,48 @@
19
19
  *
20
20
  * Copyright (c) 2026 Tenable Nova LLC. Apache 2.0. Patent pending.
21
21
  */
22
+ import type { TPMSnapshot } from "./hardware.js";
23
+ import type { EnvironmentSnapshot } from "./environment.js";
24
+ import { TrustRegistry, type TrustCredential, type TrustResult } from "./trust.js";
22
25
  import { type VercelOnFinishOptions } from "./adapters/vercel-ai.js";
23
- import type { WitnessPayload, WitnessReceipt, InferenceRecord } from "./types.js";
26
+ import type { WitnessPayload, WitnessReceipt, InferenceRecord, RagContextOptions, ModelWeightInfo, AdapterInfo, SkillInfo, MemorySource } from "./types.js";
27
+ import type { DensityPolicyConfig, McpPolicyConfig, MerkleConfig, ChainPolicyViolation } from "./types.js";
28
+ import { MerkleAccumulator } from "./merkle.js";
29
+ export declare class PolicyViolationError extends Error {
30
+ violation: ChainPolicyViolation;
31
+ constructor(violation: ChainPolicyViolation);
32
+ }
33
+ /**
34
+ * Chain density enforcement engine.
35
+ *
36
+ * Evaluates tool calls against rate limits, depth limits, allow/blocklists,
37
+ * and custom rules. All checks are in-memory, zero network calls.
38
+ * Instantiated from McpPolicyConfig by Witness.fromConfig().
39
+ */
40
+ export declare class ChainEnforcer {
41
+ private velocityWindow;
42
+ private velocityLimit;
43
+ private velocityWindowMs;
44
+ private chainDepth;
45
+ private maxChainDepth;
46
+ private allowPatterns;
47
+ private blockPatterns;
48
+ private failSecure;
49
+ private customRules;
50
+ private lastToolName;
51
+ private tokenCount;
52
+ private maxTokensPerSession;
53
+ private _violations;
54
+ constructor(policy: McpPolicyConfig);
55
+ check(toolName: string): ChainPolicyViolation | null;
56
+ resetDepth(): void;
57
+ recordTokens(count: number): void;
58
+ resetTokens(): void;
59
+ get currentTokenCount(): number;
60
+ get violations(): readonly ChainPolicyViolation[];
61
+ clearViolations(): void;
62
+ private violation;
63
+ }
24
64
  export interface WitnessOptions {
25
65
  endpoint: string;
26
66
  apiKey: string;
@@ -45,7 +85,10 @@ export interface WitnessOptions {
45
85
  legalBasis?: string;
46
86
  purposeClass?: string;
47
87
  onFlush?: (payloads: WitnessPayload[], receipts: WitnessReceipt[]) => void;
88
+ tokenBudget?: number;
48
89
  gatewayMode?: boolean;
90
+ walPath?: string;
91
+ replayWindow?: number;
49
92
  }
50
93
  /**
51
94
  * Raised when strict (gatekeeper) mode blocks an inference due to
@@ -77,6 +120,28 @@ export declare class Witness {
77
120
  * Requires: `npm install yaml`
78
121
  */
79
122
  static fromConfig(path?: string, overrides?: Partial<WitnessOptions>): Witness;
123
+ private _configHash?;
124
+ private _hardwareConfig?;
125
+ private _densityPolicy?;
126
+ private _mcpPolicy?;
127
+ private _merkleConfig?;
128
+ private _merkleAccumulator?;
129
+ private _chainEnforcer?;
130
+ get configHash(): string | undefined;
131
+ /** Density policy from YAML config (null if not configured). */
132
+ get densityPolicy(): DensityPolicyConfig | undefined;
133
+ /** MCP tool witnessing policy from YAML config (null if not configured). */
134
+ get mcpPolicy(): McpPolicyConfig | undefined;
135
+ /** Merkle accumulator config from YAML config (null if not configured). */
136
+ get merkleConfig(): MerkleConfig | undefined;
137
+ /** SDK-side Merkle accumulator (created when merkle.enabled is true). */
138
+ get merkleAccumulator(): MerkleAccumulator | undefined;
139
+ /** Chain density enforcer (created when chain density fields are configured). */
140
+ get chainEnforcer(): ChainEnforcer | undefined;
141
+ /** Record token usage against the chain enforcer's session budget. */
142
+ recordSessionTokens(count: number): void;
143
+ private _recordChainViolation;
144
+ private _configureTrustMesh;
80
145
  constructor(options: WitnessOptions);
81
146
  /**
82
147
  * Wrap an AI client with transparent witnessing.
@@ -164,6 +229,86 @@ export declare class Witness {
164
229
  witnessInputValidation(passed: boolean, options?: {
165
230
  sanitized?: boolean;
166
231
  }): void;
232
+ /**
233
+ * Witness a RAG retrieval step (AI-RAG.1 + optional AI-RAG.2).
234
+ *
235
+ * Records what context chunks were retrieved and from which corpus.
236
+ * Chunk text is NEVER transmitted -- only SHA-256 hashes.
237
+ *
238
+ * Automatically emits AI-RAG.2 (Context Relevance) when
239
+ * similarityThreshold is set and chunks have similarityScore.
240
+ *
241
+ * @param options.chunks - Raw strings (auto-hashed) or RagChunk objects.
242
+ * @param options.corpusId - Identifier for the retrieval corpus/index.
243
+ * @param options.similarityThreshold - When set and chunks have scores,
244
+ * AI-RAG.2 is emitted alongside AI-RAG.1.
245
+ * @returns Array of WitnessPayload objects (1-2 payloads).
246
+ *
247
+ * @example
248
+ * witness.witnessRagContext({
249
+ * chunks: ["chunk text 1", "chunk text 2"],
250
+ * corpusId: "legal-docs-v3",
251
+ * });
252
+ */
253
+ witnessRagContext(options: RagContextOptions): WitnessPayload[];
254
+ /**
255
+ * Hash a model weight file and return a ModelWeightInfo.
256
+ *
257
+ * Call ONCE at startup, not per-inference. File I/O is synchronous.
258
+ *
259
+ * @example
260
+ * const info = Witness.hashModelFile("/models/llama-3.1-70b.safetensors");
261
+ * witness.witnessModelWeights(info);
262
+ */
263
+ static hashModelFile(filePath: string, format?: string): ModelWeightInfo;
264
+ /**
265
+ * Witness model weight file integrity (AI-MDL.5).
266
+ *
267
+ * @param weights - ModelWeightInfo (from hashModelFile() or manual),
268
+ * or file path string (blocks for large files -- prefer hashModelFile()).
269
+ * @param options.expectedHash - If provided and matches, PASS. If mismatches, FAIL.
270
+ */
271
+ witnessModelWeights(weights: ModelWeightInfo | string, options?: {
272
+ expectedHash?: string;
273
+ }): WitnessPayload;
274
+ /**
275
+ * Witness active LoRA/QLoRA/PEFT adapter stack (AI-MDL.6).
276
+ */
277
+ witnessAdapterStack(adapters: AdapterInfo[], baseModelId?: string): WitnessPayload;
278
+ /**
279
+ * Witness model quantization method (AI-MDL.7).
280
+ *
281
+ * @param method - fp32, fp16, bf16, int8, int4, gptq, awq, gguf.
282
+ */
283
+ witnessQuantization(method: string, options?: {
284
+ bits?: number;
285
+ groupSize?: number;
286
+ }): WitnessPayload;
287
+ /**
288
+ * Witness active skill/tool/plugin manifest (AI-SKILL.1).
289
+ *
290
+ * @param skills - Skill name strings (auto-hashed) or SkillInfo objects.
291
+ * @param options.expectedManifestHash - Expected hash of the full manifest.
292
+ *
293
+ * @example
294
+ * witness.witnessSkillManifest(["code_exec", "web_search", "file_read"]);
295
+ */
296
+ witnessSkillManifest(skills: (string | SkillInfo)[], options?: {
297
+ expectedManifestHash?: string;
298
+ }): WitnessPayload;
299
+ /**
300
+ * Witness persistent memory sources influencing a decision (AI-SKILL.2).
301
+ */
302
+ witnessMemoryContext(sources: MemorySource[]): WitnessPayload;
303
+ /**
304
+ * Witness RLHF/DPO reward model binding (AI-SKILL.3).
305
+ */
306
+ witnessRewardModel(modelId: string, options?: {
307
+ modelHash?: string;
308
+ method?: string;
309
+ }): WitnessPayload;
310
+ /** Apply operational metadata (agent_id, signing, CJT fields) to a payload. */
311
+ private _applyOperationalMetadata;
167
312
  /**
168
313
  * Revoke a previously-issued witness anchor (AI-REV.1).
169
314
  *
@@ -176,6 +321,153 @@ export declare class Witness {
176
321
  * error_correction, or unspecified.
177
322
  * @returns The fingerprint of the revocation anchor itself.
178
323
  */
324
+ /**
325
+ * Witness accelerator hardware inventory (AI-HW.1).
326
+ *
327
+ * Records what GPU/accelerator hardware is present. Call ONCE at
328
+ * service startup, not per-inference. If no GPUs are detectable,
329
+ * returns a payload with factor_a=0, factor_b=0 (graceful no-op).
330
+ *
331
+ * @param options.snapshot - Pre-computed HardwareSnapshot (from queryHardware()).
332
+ * If omitted, auto-detects via nvidia-smi.
333
+ * @param options.expectedTopology - Expected topology (e.g., "NVL72").
334
+ * If provided and doesn't match detected topology, factor_b=0.
335
+ */
336
+ witnessHardware(options?: {
337
+ snapshot?: import("./hardware.js").HardwareSnapshot;
338
+ expectedTopology?: string;
339
+ }): WitnessPayload;
340
+ /**
341
+ * Witness TPM 2.0 platform attestation (AI-HW.3).
342
+ *
343
+ * Reads PCR registers 0-7 via tpm2-tools and mints an anchor proving
344
+ * host firmware integrity. All raw PCR digests are SHA-256 hashed
345
+ * before leaving the module.
346
+ *
347
+ * @param options.snapshot - Pre-computed TPMSnapshot (from queryTPM()).
348
+ */
349
+ witnessTPMAttestation(options?: {
350
+ snapshot?: TPMSnapshot;
351
+ }): WitnessPayload;
352
+ /**
353
+ * Witness thermal integrity of the compute environment (AI-ENV.1).
354
+ *
355
+ * Call at service startup or on a periodic schedule, not per-inference.
356
+ * Auto-detects Linux thermal zones. Pass manual values for XFRA/Span nodes.
357
+ *
358
+ * @param options.temperatureCelsius - Measured temperature (auto-detected if omitted)
359
+ * @param options.thresholdCelsius - Safe maximum (default 85)
360
+ * @param options.snapshot - Pre-computed EnvironmentSnapshot
361
+ * @param options.nodeType - Node type: datacenter, edge, residential, mobile
362
+ */
363
+ witnessEnvironment(options?: {
364
+ temperatureCelsius?: number;
365
+ thresholdCelsius?: number;
366
+ snapshot?: EnvironmentSnapshot;
367
+ nodeType?: string;
368
+ }): WitnessPayload;
369
+ /**
370
+ * Witness power integrity of the compute environment (AI-ENV.2).
371
+ *
372
+ * Call at service startup or on a periodic schedule, not per-inference.
373
+ * Pass manual values from Span panel API, IPMI, or other power monitoring.
374
+ *
375
+ * @param options.powerWatts - Current power draw in watts
376
+ * @param options.capacityWatts - Total available capacity in watts
377
+ * @param options.throttled - Whether power throttling is active
378
+ * @param options.snapshot - Pre-computed EnvironmentSnapshot
379
+ * @param options.nodeType - Node type: datacenter, edge, residential, mobile
380
+ */
381
+ witnessEnergyDraw(options?: {
382
+ powerWatts?: number;
383
+ capacityWatts?: number;
384
+ throttled?: boolean;
385
+ snapshot?: EnvironmentSnapshot;
386
+ nodeType?: string;
387
+ }): WitnessPayload;
388
+ /**
389
+ * Witness a multi-agent chain handoff (AI-CHAIN.1).
390
+ */
391
+ witnessChainHandoff(depth: number, targetAgent: string, options?: {
392
+ accepted?: boolean;
393
+ }): WitnessPayload;
394
+ /**
395
+ * Witness a policy violation (AI-VIO.1).
396
+ */
397
+ witnessViolation(severity: number, description: string, options?: {
398
+ autoDetected?: boolean;
399
+ policyCategory?: string;
400
+ }): WitnessPayload;
401
+ /**
402
+ * Witness an agent charter or system prompt hash (AI-CHR.1).
403
+ */
404
+ witnessCharter(options: {
405
+ charterText?: string;
406
+ charterHash?: string;
407
+ expectedHash?: string;
408
+ }): WitnessPayload;
409
+ /**
410
+ * Witness a model registry check (AI-MDL.8).
411
+ */
412
+ witnessModelRegistry(modelId: string, registryId: string, options?: {
413
+ found?: boolean;
414
+ status?: string;
415
+ }): WitnessPayload;
416
+ /**
417
+ * Witness reviewer identity binding (AI-HITL.3).
418
+ */
419
+ witnessReviewerIdentity(required: number, actual: number, options?: {
420
+ method?: string;
421
+ reviewerIdHash?: string;
422
+ }): WitnessPayload;
423
+ /**
424
+ * Witness safe state attestation (AI-SAFE.1).
425
+ */
426
+ witnessSafeState(options?: {
427
+ mechanismExists?: boolean;
428
+ safeStateConfirmed?: boolean;
429
+ mechanismType?: string;
430
+ }): WitnessPayload;
431
+ /**
432
+ * Witness training dataset summary statistics (AI-DATA.3).
433
+ */
434
+ witnessTrainingStats(rowCount: number, featureCount: number, options?: {
435
+ classBalanceRatio?: number;
436
+ distributionHash?: string;
437
+ classLabels?: string[];
438
+ summary?: string;
439
+ }): WitnessPayload;
440
+ /**
441
+ * Witness a training data PII lifecycle event (AI-DATA.4).
442
+ */
443
+ witnessTrainingPiiLifecycle(recordsAffected: number, options?: {
444
+ completed?: boolean;
445
+ eventType?: string;
446
+ datasetId?: string;
447
+ scope?: string;
448
+ }): WitnessPayload;
449
+ /**
450
+ * Witness a bias assessment (AI-FAIR.3).
451
+ * Records that a bias assessment was conducted, how many protected
452
+ * attributes were tested, and whether all fairness thresholds were met.
453
+ *
454
+ * @param protectedAttributeCount - Number of demographic dimensions tested
455
+ * @param allThresholdsMet - true if all fairness thresholds passed
456
+ * @param options.maxDisparityPct - Worst-case disparity percentage (0-100)
457
+ * @param options.methodology - Assessment methodology name
458
+ * @param options.protectedAttributes - List of protected attributes tested
459
+ */
460
+ witnessBiasAssessment(protectedAttributeCount: number, allThresholdsMet: boolean, options?: {
461
+ maxDisparityPct?: number;
462
+ methodology?: string;
463
+ protectedAttributes?: string[];
464
+ }): WitnessPayload;
465
+ private _trustRegistry?;
466
+ private _witnessedProcedures;
467
+ get trustRegistry(): TrustRegistry;
468
+ set trustRegistry(registry: TrustRegistry);
469
+ presentCredential(): TrustCredential;
470
+ verifyTrust(credential: TrustCredential): TrustResult;
179
471
  revoke(fingerprint: string, reason?: string): string;
180
472
  /**
181
473
  * Query the Compliance Manifest API for this tenant's anchors.
@@ -1 +1 @@
1
- {"version":3,"file":"witness.d.ts","sourceRoot":"","sources":["../src/witness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"witness.d.ts","sourceRoot":"","sources":["../src/witness.ts"],"names":[],"mappings":"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"}