@tenova/swt3-ai 0.4.1 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +207 -20
- package/dist/adapters/ollama.d.ts +13 -0
- package/dist/adapters/ollama.d.ts.map +1 -0
- package/dist/adapters/ollama.js +25 -0
- package/dist/adapters/ollama.js.map +1 -0
- package/dist/adapters/openai.d.ts +1 -1
- package/dist/adapters/openai.d.ts.map +1 -1
- package/dist/adapters/openai.js +17 -17
- package/dist/adapters/openai.js.map +1 -1
- package/dist/adapters/vllm.d.ts +13 -0
- package/dist/adapters/vllm.d.ts.map +1 -0
- package/dist/adapters/vllm.js +15 -0
- package/dist/adapters/vllm.js.map +1 -0
- package/dist/buffer.d.ts.map +1 -1
- package/dist/buffer.js +3 -1
- package/dist/buffer.js.map +1 -1
- package/dist/clearing.d.ts +3 -3
- package/dist/clearing.d.ts.map +1 -1
- package/dist/clearing.js +15 -10
- package/dist/clearing.js.map +1 -1
- package/dist/config.d.ts +27 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +178 -0
- package/dist/config.js.map +1 -0
- package/dist/demo.js +2 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/witness.d.ts +34 -2
- package/dist/witness.d.ts.map +1 -1
- package/dist/witness.js +93 -16
- package/dist/witness.js.map +1 -1
- package/package.json +40 -5
package/README.md
CHANGED
|
@@ -159,6 +159,144 @@ This happens automatically. No configuration needed. The system prompt hash is e
|
|
|
159
159
|
|
|
160
160
|
The hash is included at clearing levels 0 and 1, stripped at levels 2 and 3.
|
|
161
161
|
|
|
162
|
+
## RAG Context Witnessing
|
|
163
|
+
|
|
164
|
+
New in v0.4.3. Witness what context chunks your RAG pipeline retrieves, from which corpus, and how relevant they are. Chunk text is never transmitted -- only SHA-256 hashes.
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
// Zero-friction: pass raw strings, SDK handles hashing
|
|
168
|
+
witness.witnessRagContext({
|
|
169
|
+
chunks: ["chunk text 1", "chunk text 2", "chunk text 3"],
|
|
170
|
+
corpusId: "legal-docs-v3",
|
|
171
|
+
});
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
This mints an AI-RAG.1 (Context Retrieval Provenance) anchor. Add similarity scores to also get AI-RAG.2 (Context Relevance):
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
import type { RagChunk } from "@tenova/swt3-ai";
|
|
178
|
+
|
|
179
|
+
witness.witnessRagContext({
|
|
180
|
+
chunks: [
|
|
181
|
+
{ contentHash: "abc123...", sourceId: "doc-7/p3", similarityScore: 0.92 },
|
|
182
|
+
{ contentHash: "def456...", sourceId: "doc-2/p1", similarityScore: 0.78 },
|
|
183
|
+
{ contentHash: "789abc...", sourceId: "doc-4/p2", similarityScore: 0.61 },
|
|
184
|
+
],
|
|
185
|
+
corpusId: "legal-docs-v3",
|
|
186
|
+
embeddingModel: "text-embedding-3-small",
|
|
187
|
+
similarityThreshold: 0.75, // triggers AI-RAG.2
|
|
188
|
+
});
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
One call. Two procedures. Complete retrieval attestation.
|
|
192
|
+
|
|
193
|
+
Maps to: EU AI Act Art. 12(2)(a) (reference database logging), Art. 10(2) (data quality), NIST AI RMF MAP 3.5 (data provenance).
|
|
194
|
+
|
|
195
|
+
## Model Weight Integrity
|
|
196
|
+
|
|
197
|
+
Witness the actual model weights, not just the model name string:
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
// File path: SDK hashes automatically
|
|
201
|
+
witness.witnessModelWeights("/models/llama-3.1-70b.safetensors");
|
|
202
|
+
|
|
203
|
+
// Pre-computed hash with verification
|
|
204
|
+
witness.witnessModelWeights(
|
|
205
|
+
{ fileHash: "abc123...", format: "safetensors" },
|
|
206
|
+
{ expectedHash: "abc123..." }, // PASS if match, FAIL if mismatch
|
|
207
|
+
);
|
|
208
|
+
|
|
209
|
+
// Adapter stack + quantization
|
|
210
|
+
witness.witnessAdapterStack(
|
|
211
|
+
[{ name: "lora-legal", adapterHash: "aaa111" }],
|
|
212
|
+
"llama-3.1-70b",
|
|
213
|
+
);
|
|
214
|
+
witness.witnessQuantization("gptq", { bits: 4, groupSize: 128 });
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Maps to: EU AI Act Art. 15(4) (resilience against modification), Art. 12(2)(b) (version logging).
|
|
218
|
+
|
|
219
|
+
## Environmental Attestation (Residential and Edge AI)
|
|
220
|
+
|
|
221
|
+
Witness the physical compute environment for distributed, edge-deployed, or residential AI nodes. Proves the hardware operated within safe thermal and power bounds during inference:
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
// Zero-config: auto-detects Linux thermal sensors
|
|
225
|
+
witness.witnessEnvironment();
|
|
226
|
+
|
|
227
|
+
// Manual readings from smart panel APIs or IPMI
|
|
228
|
+
witness.witnessEnvironment({
|
|
229
|
+
temperatureCelsius: 42,
|
|
230
|
+
thresholdCelsius: 75,
|
|
231
|
+
nodeType: "residential",
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
// Power integrity: draw vs capacity
|
|
235
|
+
witness.witnessEnergyDraw({
|
|
236
|
+
powerWatts: 1200,
|
|
237
|
+
capacityWatts: 2400,
|
|
238
|
+
nodeType: "edge",
|
|
239
|
+
});
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
If no sensors are available (dev machine, cloud VM), returns a valid anchor with zero readings. No crash, no error.
|
|
243
|
+
|
|
244
|
+
Use case: enterprises renting compute on distributed residential nodes need cryptographic proof that the node was operating within safe bounds, was not throttled, and was not physically tampered with during their inference window.
|
|
245
|
+
|
|
246
|
+
Maps to: NIST 800-53 PE-14 (environmental controls), EU AI Act Annex I (product safety for home-integrated AI).
|
|
247
|
+
|
|
248
|
+
## Skill Manifest Attestation
|
|
249
|
+
|
|
250
|
+
Witness which skills, tools, and plugins are loaded in your agent:
|
|
251
|
+
|
|
252
|
+
```typescript
|
|
253
|
+
// Zero-friction: just names
|
|
254
|
+
witness.witnessSkillManifest(["code_exec", "web_search", "file_read"]);
|
|
255
|
+
|
|
256
|
+
// Memory context
|
|
257
|
+
witness.witnessMemoryContext([
|
|
258
|
+
{ sourceType: "vector_store", sourceId: "pinecone-prod" },
|
|
259
|
+
{ sourceType: "conversation", sourceId: "session-123" },
|
|
260
|
+
]);
|
|
261
|
+
|
|
262
|
+
// Reward model binding
|
|
263
|
+
witness.witnessRewardModel("rm-v3-legal", { method: "dpo" });
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Maps to: EU AI Act Art. 12(2)(b) (capability tracking), NIST AI RMF GOVERN 1.7 (capability documentation).
|
|
267
|
+
|
|
268
|
+
## Multi-Agent Chains, Violations, and Safety (v0.5.0)
|
|
269
|
+
|
|
270
|
+
New in v0.5.0. Convenience methods for 8 additional procedures covering multi-agent orchestration, policy enforcement, human oversight, and training data governance:
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
// Multi-agent chain handoff (AI-CHAIN.1)
|
|
274
|
+
witness.witnessChainHandoff(3, "step-2-reviewer");
|
|
275
|
+
|
|
276
|
+
// Policy violation reporting (AI-VIO.1)
|
|
277
|
+
witness.witnessViolation(3, "PII in output", { autoDetected: true, policyCategory: "data" });
|
|
278
|
+
|
|
279
|
+
// Agent charter attestation (AI-CHR.1)
|
|
280
|
+
witness.witnessCharter({ charterText: "You are a fraud detection assistant..." });
|
|
281
|
+
|
|
282
|
+
// Model registry check (AI-MDL.8)
|
|
283
|
+
witness.witnessModelRegistry("gpt-4o-2025-04-16", "eu-approved-models-v3");
|
|
284
|
+
|
|
285
|
+
// Reviewer identity binding for four-eyes rule (AI-HITL.3)
|
|
286
|
+
witness.witnessReviewerIdentity(2, 2, { method: "cryptographic" });
|
|
287
|
+
|
|
288
|
+
// Safe state attestation (AI-SAFE.1)
|
|
289
|
+
witness.witnessSafeState({ mechanismExists: true, safeStateConfirmed: true });
|
|
290
|
+
|
|
291
|
+
// Training data statistics (AI-DATA.3)
|
|
292
|
+
witness.witnessTrainingStats(50000, 128, { classBalanceRatio: 0.85 });
|
|
293
|
+
|
|
294
|
+
// Training data PII lifecycle (AI-DATA.4)
|
|
295
|
+
witness.witnessTrainingPiiLifecycle(10000, { eventType: "pseudonymization", datasetId: "training-v3" });
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
Maps to: EU AI Act Art. 10(3), Art. 10(5), Art. 12(2)(a), Art. 12(3)(d), Art. 13, Art. 14(4)(e), Art. 14(5), Art. 51. NIST AI RMF MANAGE 3.2, MANAGE 4.1, GOVERN 1.2.
|
|
299
|
+
|
|
162
300
|
## Agent Identity
|
|
163
301
|
|
|
164
302
|
Bind a unique identity to every anchor your agent produces:
|
|
@@ -173,11 +311,64 @@ const witness = new Witness({
|
|
|
173
311
|
});
|
|
174
312
|
```
|
|
175
313
|
|
|
176
|
-
The `agentId` survives all clearing levels. The `signingKey` produces
|
|
314
|
+
The `agentId` survives all clearing levels. The `signingKey` produces an HMAC-SHA256 signature on every anchor, proving which agent instance created it. When a signing key is registered server-side, the server validates the signature on ingestion and rejects tampered payloads. This enables:
|
|
315
|
+
- **Payload authenticity** -- server verifies the SDK that minted the anchor held the registered secret
|
|
316
|
+
- **Tamper detection** -- any modification after signing causes rejection (422)
|
|
177
317
|
- Per-agent compliance passports
|
|
178
318
|
- Fleet-wide governance dashboards
|
|
179
319
|
- Agent-scoped evidence packages for auditors
|
|
180
320
|
|
|
321
|
+
Receipts include `signature_verified: true` when the server confirms the signature.
|
|
322
|
+
|
|
323
|
+
## Trust Mesh (Mutual Agent Verification)
|
|
324
|
+
|
|
325
|
+
Before two agents exchange data or invoke each other's tools, each verifies the other's compliance posture. No anchor, no handshake.
|
|
326
|
+
|
|
327
|
+
```typescript
|
|
328
|
+
// Agent A: present a signed credential
|
|
329
|
+
const credentialA = witnessA.presentCredential();
|
|
330
|
+
// Send credentialA to Agent B over your transport layer
|
|
331
|
+
|
|
332
|
+
// Agent B: verify Agent A's credential
|
|
333
|
+
witnessB.trustRegistry.trustTenant("TENANT_A");
|
|
334
|
+
witnessB.trustRegistry.registerSigningKey("agent-alpha", "shared-secret-a");
|
|
335
|
+
const result = witnessB.verifyTrust(credentialA);
|
|
336
|
+
|
|
337
|
+
if (result.granted) {
|
|
338
|
+
// Trust level: 1=basic, 2=verified, 3=attested, 4=sovereign
|
|
339
|
+
console.log(`Trusted at level ${result.trustLevel}`);
|
|
340
|
+
} else {
|
|
341
|
+
console.log(`Denied: ${result.denialReason}`);
|
|
342
|
+
}
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
**Trust levels:**
|
|
346
|
+
|
|
347
|
+
| Level | Name | Requires |
|
|
348
|
+
|-------|------|----------|
|
|
349
|
+
| 1 | Basic | Valid credential, unsigned or unverifiable |
|
|
350
|
+
| 2 | Verified | Valid credential + verified HMAC signature |
|
|
351
|
+
| 3 | Attested | Verified + hardware attestation + guardrails |
|
|
352
|
+
| 4 | Sovereign | Attested + clearing level >= 2 |
|
|
353
|
+
|
|
354
|
+
Unsigned credentials are automatically capped at TRUST_BASIC. You cannot claim a higher trust level without a verified signature.
|
|
355
|
+
|
|
356
|
+
**Key exchange:** Exchange signing keys out-of-band (environment variables, secrets manager, KMS). Never send keys over the wire alongside credentials. Each agent registers the counterpart's key:
|
|
357
|
+
|
|
358
|
+
```typescript
|
|
359
|
+
// Agent A registers B's key, B registers A's key
|
|
360
|
+
witnessA.trustRegistry.registerSigningKey("agent-beta", process.env.AGENT_B_KEY!);
|
|
361
|
+
witnessB.trustRegistry.registerSigningKey("agent-alpha", process.env.AGENT_A_KEY!);
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
**Zero-friction path:** Trust mesh works without signing keys. Agents without keys get TRUST_BASIC (level 1), which is sufficient for non-sensitive coordination. Add keys when you need verified or attested trust.
|
|
365
|
+
|
|
366
|
+
**Credential auto-population:** `presentCredential()` automatically includes which procedures the agent has witnessed and whether hardware attestation (AI-HW.1) has been performed. No manual tracking needed.
|
|
367
|
+
|
|
368
|
+
Every verification (pass or fail) mints AI-TRUST.1 + AI-TRUST.2 anchors. Denials produce evidence too.
|
|
369
|
+
|
|
370
|
+
Maps to: EU AI Act Art. 14 (human oversight and mutual accountability between AI systems).
|
|
371
|
+
|
|
181
372
|
## Gatekeeper Mode (Pre-Call Enforcement)
|
|
182
373
|
|
|
183
374
|
New in v0.3.4. Require guardrails to be active *before* the model is called, not just observed after:
|
|
@@ -265,7 +456,7 @@ Each inference produces anchors for these checks. Every check maps to a regulati
|
|
|
265
456
|
|
|
266
457
|
### EU AI Act Article Mapping
|
|
267
458
|
|
|
268
|
-
All
|
|
459
|
+
All 42 SWT3 AI witnessing procedures map to specific EU AI Act obligations:
|
|
269
460
|
|
|
270
461
|
| Procedure | EU AI Act Article | Obligation | Demo | Production |
|
|
271
462
|
|-----------|-------------------|------------|------|------------|
|
|
@@ -282,7 +473,7 @@ All 36 SWT3 AI witnessing procedures map to specific EU AI Act obligations:
|
|
|
282
473
|
| AI-EXPL.1 | Art. 13(1) | Transparency & Explainability | -| ✓ |
|
|
283
474
|
| AI-EXPL.2 | Art. 13(3b) | Confidence Calibration | -| ✓ |
|
|
284
475
|
|
|
285
|
-
The demo demonstrates
|
|
476
|
+
The demo demonstrates 5 procedures using simulated data. All 42 are available in production with real inference data. 36 cross-language test vectors ensure fingerprint parity across Python, TypeScript, Rust, C#, and Ruby. [See live conformity →](https://sovereign.tenova.io/audit/axm_audit_demo_eu_ai_act_public)
|
|
286
477
|
|
|
287
478
|
## How Verdicts Work
|
|
288
479
|
|
|
@@ -441,7 +632,7 @@ const witness = new Witness({
|
|
|
441
632
|
| `maxRetries` | 3 | Retries before dead-letter |
|
|
442
633
|
| `guardrailNames` | [] | Active guardrail names |
|
|
443
634
|
| `agentId` | - | Agent identity (survives all clearing levels) |
|
|
444
|
-
| `signingKey` | - | HMAC-SHA256 key for payload signing |
|
|
635
|
+
| `signingKey` | - | HMAC-SHA256 key for payload signing (register server-side for validation) |
|
|
445
636
|
| `cycleId` | - | Multi-agent chain link (survives all clearing levels) |
|
|
446
637
|
| `policyVersion` | - | Policy config identifier (hashed in payloads) |
|
|
447
638
|
| `strict` | false | Gatekeeper mode: block inference if guardrails insufficient |
|
|
@@ -521,29 +712,21 @@ This SDK produces identical fingerprints to the Python SDK (`swt3-ai`). A unifie
|
|
|
521
712
|
| API routes / Edge | TypeScript | @tenova/swt3-ai |
|
|
522
713
|
| Frontend (Next.js) | TypeScript | @tenova/swt3-ai + Vercel AI SDK |
|
|
523
714
|
|
|
524
|
-
##
|
|
525
|
-
|
|
526
|
-
AI agents can discover SWT3 compliance tools automatically via the Model Context Protocol. No developer integration required. The agent finds the tools and uses them on its own.
|
|
527
|
-
|
|
528
|
-
```bash
|
|
529
|
-
npm install @tenova/swt3-mcp
|
|
530
|
-
```
|
|
715
|
+
## Privacy
|
|
531
716
|
|
|
532
|
-
|
|
717
|
+
Your prompts and responses **never leave your infrastructure**. The SDK computes SHA-256 hashes locally and transmits only irreversible hashes and numeric factors. At Clearing Level 3, even the model name is hashed. The witness endpoint is a blind registrar: it stores cryptographic proofs, not your data.
|
|
533
718
|
|
|
534
|
-
|
|
535
|
-
{ "mcpServers": { "swt3": { "command": "npx", "args": ["@tenova/swt3-mcp"] } } }
|
|
536
|
-
```
|
|
719
|
+
---
|
|
537
720
|
|
|
538
|
-
|
|
721
|
+
## Upgrading to v0.5.1
|
|
539
722
|
|
|
540
|
-
**
|
|
723
|
+
**Trust Mesh (new):** `presentCredential()` and `verifyTrust()` are new methods. No breaking changes for existing code.
|
|
541
724
|
|
|
542
|
-
|
|
725
|
+
**Credential signing (behavioral change):** If your Witness has a `signingKey`, credentials are now HMAC-signed automatically. Counterpart agents must register your key via `trustRegistry.registerSigningKey()` to verify the signature. Without key registration, signed credentials are denied with `signature_unverifiable`. If you were using trust mesh in v0.5.0 without signing keys, credentials are now capped at TRUST_BASIC (level 1). To restore full trust levels, both sides must exchange and register signing keys.
|
|
543
726
|
|
|
544
|
-
|
|
727
|
+
**Environmental attestation (new):** `witnessEnvironment()` and `witnessEnergyDraw()` are new methods for AI-ENV.1/AI-ENV.2. No breaking changes.
|
|
545
728
|
|
|
546
|
-
|
|
729
|
+
**MCP server:** 16 procedure keyword suggestions (was 8). No breaking changes.
|
|
547
730
|
|
|
548
731
|
---
|
|
549
732
|
|
|
@@ -555,6 +738,10 @@ Your prompts and responses **never leave your infrastructure**. The SDK computes
|
|
|
555
738
|
- [Design Rationale](https://sovereign.tenova.io/guides/swt3-design-rationale.html) -- why every protocol decision was made
|
|
556
739
|
- [UCT Registry](https://sovereign.tenova.io/registry) -- 162 procedures, full factor definitions
|
|
557
740
|
- [Anchor Verifier](https://sovereign.tenova.io/verify) -- verify any anchor, zero server calls
|
|
741
|
+
- [EU AI Act Regulatory Architecture](https://sovereign.tenova.io/guides/futurium-submission.html) -- VI+CJT+ALF+LAVR framework mapping for conformity assessment bodies
|
|
742
|
+
- [Five Eyes Agentic AI Overlay](https://sovereign.tenova.io/guides/five-eyes-overlay.html) -- CISA/NSA guidance mapped to SWT3 procedures
|
|
743
|
+
- [CMMC Compliance Overlay](https://sovereign.tenova.io/guides/cmmc-overlay.html) -- clearing levels mapped to CMMC and NIST 800-171
|
|
744
|
+
- [SR 11-7 Model Risk Overlay](https://sovereign.tenova.io/guides/sr-11-7-overlay.html) -- clearing levels mapped to SR 11-7 requirements
|
|
558
745
|
|
|
559
746
|
---
|
|
560
747
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SWT3 AI Witness SDK -- Ollama Adapter.
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around the OpenAI adapter that tags records with
|
|
5
|
+
* provider="ollama". Ollama uses an OpenAI-compatible API at
|
|
6
|
+
* http://localhost:11434/v1.
|
|
7
|
+
*
|
|
8
|
+
* Auto-detected by witness.wrap() when base_url contains ":11434".
|
|
9
|
+
*/
|
|
10
|
+
import type { Witness } from "../witness.js";
|
|
11
|
+
export declare function wrapOllama(client: unknown, witness: Witness): unknown;
|
|
12
|
+
export declare function isOllamaClient(client: unknown): boolean;
|
|
13
|
+
//# sourceMappingURL=ollama.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../src/adapters/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAErE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAGvD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SWT3 AI Witness SDK -- Ollama Adapter.
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around the OpenAI adapter that tags records with
|
|
5
|
+
* provider="ollama". Ollama uses an OpenAI-compatible API at
|
|
6
|
+
* http://localhost:11434/v1.
|
|
7
|
+
*
|
|
8
|
+
* Auto-detected by witness.wrap() when base_url contains ":11434".
|
|
9
|
+
*/
|
|
10
|
+
import { wrapOpenAI } from "./openai.js";
|
|
11
|
+
export function wrapOllama(client, witness) {
|
|
12
|
+
return wrapOpenAI(client, witness, "ollama");
|
|
13
|
+
}
|
|
14
|
+
export function isOllamaClient(client) {
|
|
15
|
+
const baseURL = getBaseURL(client);
|
|
16
|
+
return baseURL.includes(":11434");
|
|
17
|
+
}
|
|
18
|
+
function getBaseURL(client) {
|
|
19
|
+
if (client === null || client === undefined)
|
|
20
|
+
return "";
|
|
21
|
+
const obj = client;
|
|
22
|
+
const url = obj.baseURL ?? obj.base_url ?? "";
|
|
23
|
+
return String(url);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ollama.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../src/adapters/ollama.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,UAAU,UAAU,CAAC,MAAe,EAAE,OAAgB;IAC1D,OAAO,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAe;IAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,UAAU,CAAC,MAAe;IACjC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC9C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC"}
|
|
@@ -15,5 +15,5 @@ import type { Witness } from "../witness.js";
|
|
|
15
15
|
/**
|
|
16
16
|
* Wrap an OpenAI client with an ES6 Proxy for transparent witnessing.
|
|
17
17
|
*/
|
|
18
|
-
export declare function wrapOpenAI(client: unknown, witness: Witness): unknown;
|
|
18
|
+
export declare function wrapOpenAI(client: unknown, witness: Witness, provider?: string): unknown;
|
|
19
19
|
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAU7C;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAU7C;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,SAAW,GAAG,OAAO,CAE1F"}
|
package/dist/adapters/openai.js
CHANGED
|
@@ -22,10 +22,10 @@ const INTERCEPT_PATHS = {
|
|
|
22
22
|
/**
|
|
23
23
|
* Wrap an OpenAI client with an ES6 Proxy for transparent witnessing.
|
|
24
24
|
*/
|
|
25
|
-
export function wrapOpenAI(client, witness) {
|
|
26
|
-
return createProxy(client, witness, "");
|
|
25
|
+
export function wrapOpenAI(client, witness, provider = "openai") {
|
|
26
|
+
return createProxy(client, witness, "", provider);
|
|
27
27
|
}
|
|
28
|
-
function createProxy(target, witness, path) {
|
|
28
|
+
function createProxy(target, witness, path, provider) {
|
|
29
29
|
return new Proxy(target, {
|
|
30
30
|
get(obj, prop) {
|
|
31
31
|
if (typeof prop === "symbol")
|
|
@@ -35,19 +35,19 @@ function createProxy(target, witness, path) {
|
|
|
35
35
|
// Check if this property is an interceptable method
|
|
36
36
|
if (path in INTERCEPT_PATHS && INTERCEPT_PATHS[path].has(prop)) {
|
|
37
37
|
// This IS the method to intercept
|
|
38
|
-
return createInterceptor(realValue, witness);
|
|
38
|
+
return createInterceptor(realValue, witness, provider);
|
|
39
39
|
}
|
|
40
40
|
// Check if this path could lead to interceptable methods
|
|
41
41
|
const hasChildren = Object.keys(INTERCEPT_PATHS).some((p) => p === currentPath || p.startsWith(currentPath + "."));
|
|
42
42
|
if (hasChildren && typeof realValue === "object" && realValue !== null) {
|
|
43
|
-
return createProxy(realValue, witness, currentPath);
|
|
43
|
+
return createProxy(realValue, witness, currentPath, provider);
|
|
44
44
|
}
|
|
45
45
|
// Pass through
|
|
46
46
|
return realValue;
|
|
47
47
|
},
|
|
48
48
|
});
|
|
49
49
|
}
|
|
50
|
-
function createInterceptor(realMethod, witness) {
|
|
50
|
+
function createInterceptor(realMethod, witness, provider) {
|
|
51
51
|
return function interceptedCreate(...args) {
|
|
52
52
|
const kwargs = (args[0] ?? {});
|
|
53
53
|
const messages = kwargs.messages;
|
|
@@ -70,12 +70,12 @@ function createInterceptor(realMethod, witness) {
|
|
|
70
70
|
const result = realMethod.call(this, ...args);
|
|
71
71
|
if (isStreaming) {
|
|
72
72
|
// Streaming: wrap the async iterable to accumulate chunks
|
|
73
|
-
return handleStreaming(result, witness, model, promptHash, start, systemPromptHash, authorizationId);
|
|
73
|
+
return handleStreaming(result, witness, model, promptHash, start, systemPromptHash, authorizationId, provider);
|
|
74
74
|
}
|
|
75
75
|
// Non-streaming: result is a Promise<ChatCompletion>
|
|
76
76
|
return result.then((response) => {
|
|
77
77
|
const elapsedMs = Math.round(performance.now() - start);
|
|
78
|
-
const record = extractRecord(response, model, promptHash, elapsedMs, systemPromptHash);
|
|
78
|
+
const record = extractRecord(response, model, promptHash, elapsedMs, systemPromptHash, provider);
|
|
79
79
|
witness.record(record, authorizationId);
|
|
80
80
|
return response; // Return UNTOUCHED
|
|
81
81
|
});
|
|
@@ -91,7 +91,7 @@ function createInterceptor(realMethod, witness) {
|
|
|
91
91
|
// We wrap the async iterator to accumulate content chunks, then
|
|
92
92
|
// witness after the stream completes. The developer's stream
|
|
93
93
|
// behavior is completely unchanged.
|
|
94
|
-
async function* streamAccumulator(stream, witness, model, promptHash, startTime, systemPromptHash, authorizationId) {
|
|
94
|
+
async function* streamAccumulator(stream, witness, model, promptHash, startTime, systemPromptHash, authorizationId, provider = "openai") {
|
|
95
95
|
const textParts = [];
|
|
96
96
|
let actualModel = model;
|
|
97
97
|
let systemFingerprint;
|
|
@@ -148,28 +148,28 @@ async function* streamAccumulator(stream, witness, model, promptHash, startTime,
|
|
|
148
148
|
guardrailsRequired: 0,
|
|
149
149
|
guardrailPassed: true,
|
|
150
150
|
hasRefusal,
|
|
151
|
-
provider
|
|
151
|
+
provider,
|
|
152
152
|
systemFingerprint,
|
|
153
153
|
systemPromptHash,
|
|
154
154
|
guardrailNames: [],
|
|
155
155
|
};
|
|
156
156
|
witness.record(record, authorizationId);
|
|
157
157
|
}
|
|
158
|
-
function handleStreaming(streamResult, witness, model, promptHash, startTime, systemPromptHash, authorizationId) {
|
|
158
|
+
function handleStreaming(streamResult, witness, model, promptHash, startTime, systemPromptHash, authorizationId, provider = "openai") {
|
|
159
159
|
// The stream result is a Promise that resolves to the stream object
|
|
160
160
|
// (OpenAI SDK returns Promise<Stream<ChatCompletionChunk>>)
|
|
161
161
|
if (streamResult && typeof streamResult.then === "function") {
|
|
162
162
|
return streamResult.then((stream) => {
|
|
163
|
-
return wrapStream(stream, witness, model, promptHash, startTime, systemPromptHash, authorizationId);
|
|
163
|
+
return wrapStream(stream, witness, model, promptHash, startTime, systemPromptHash, authorizationId, provider);
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
166
|
// Direct stream object (shouldn't happen but handle gracefully)
|
|
167
|
-
return wrapStream(streamResult, witness, model, promptHash, startTime, systemPromptHash, authorizationId);
|
|
167
|
+
return wrapStream(streamResult, witness, model, promptHash, startTime, systemPromptHash, authorizationId, provider);
|
|
168
168
|
}
|
|
169
|
-
function wrapStream(stream, witness, model, promptHash, startTime, systemPromptHash, authorizationId) {
|
|
169
|
+
function wrapStream(stream, witness, model, promptHash, startTime, systemPromptHash, authorizationId, provider = "openai") {
|
|
170
170
|
const s = stream;
|
|
171
171
|
// Create the accumulating async generator
|
|
172
|
-
const gen = streamAccumulator(s, witness, model, promptHash, startTime, systemPromptHash, authorizationId);
|
|
172
|
+
const gen = streamAccumulator(s, witness, model, promptHash, startTime, systemPromptHash, authorizationId, provider);
|
|
173
173
|
// Return a proxy that preserves all stream methods but overrides the iterator
|
|
174
174
|
return new Proxy(s, {
|
|
175
175
|
get(target, prop) {
|
|
@@ -241,7 +241,7 @@ function extractPromptText(messages) {
|
|
|
241
241
|
}
|
|
242
242
|
return parts.join("\n");
|
|
243
243
|
}
|
|
244
|
-
function extractRecord(response, model, promptHash, elapsedMs, systemPromptHash) {
|
|
244
|
+
function extractRecord(response, model, promptHash, elapsedMs, systemPromptHash, provider = "openai") {
|
|
245
245
|
const r = response;
|
|
246
246
|
let responseText = "";
|
|
247
247
|
let hasRefusal = false;
|
|
@@ -280,7 +280,7 @@ function extractRecord(response, model, promptHash, elapsedMs, systemPromptHash)
|
|
|
280
280
|
guardrailsRequired: 0,
|
|
281
281
|
guardrailPassed: true,
|
|
282
282
|
hasRefusal,
|
|
283
|
-
provider
|
|
283
|
+
provider,
|
|
284
284
|
systemFingerprint,
|
|
285
285
|
systemPromptHash,
|
|
286
286
|
guardrailNames: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD;;;GAGG;AACH,MAAM,eAAe,GAAgC;IACnD,kBAAkB,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAe,EAAE,OAAgB;
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SWT3 AI Witness SDK -- vLLM Adapter.
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around the OpenAI adapter that tags records with
|
|
5
|
+
* provider="vllm". vLLM uses an OpenAI-compatible API at
|
|
6
|
+
* http://localhost:8000/v1.
|
|
7
|
+
*
|
|
8
|
+
* NOT auto-detected by witness.wrap() (port 8000 too generic).
|
|
9
|
+
* Use wrap_vllm() or vllmClient() explicitly.
|
|
10
|
+
*/
|
|
11
|
+
import type { Witness } from "../witness.js";
|
|
12
|
+
export declare function wrapVllm(client: unknown, witness: Witness): unknown;
|
|
13
|
+
//# sourceMappingURL=vllm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vllm.d.ts","sourceRoot":"","sources":["../../src/adapters/vllm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAEnE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SWT3 AI Witness SDK -- vLLM Adapter.
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around the OpenAI adapter that tags records with
|
|
5
|
+
* provider="vllm". vLLM uses an OpenAI-compatible API at
|
|
6
|
+
* http://localhost:8000/v1.
|
|
7
|
+
*
|
|
8
|
+
* NOT auto-detected by witness.wrap() (port 8000 too generic).
|
|
9
|
+
* Use wrap_vllm() or vllmClient() explicitly.
|
|
10
|
+
*/
|
|
11
|
+
import { wrapOpenAI } from "./openai.js";
|
|
12
|
+
export function wrapVllm(client, witness) {
|
|
13
|
+
return wrapOpenAI(client, witness, "vllm");
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=vllm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vllm.js","sourceRoot":"","sources":["../../src/adapters/vllm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,UAAU,QAAQ,CAAC,MAAe,EAAE,OAAgB;IACxD,OAAO,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC"}
|
package/dist/buffer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAiB,MAAM,YAAY,CAAC;AAI/F,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAC,CAAmE;gBAEvE,MAAM,EAAE,aAAa,EAAE,cAAc,SAA2B;IAO5E,0CAA0C;IAC1C,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAQtC,6BAA6B;IAC7B,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAI;IAI7C,yCAAyC;IACnC,KAAK,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIxC,oDAAoD;IAC9C,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBvC,yDAAyD;IACzD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,oDAAoD;IACpD,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,2CAA2C;IAC3C,IAAI,QAAQ,IAAI,cAAc,EAAE,CAE/B;IAED,OAAO,CAAC,UAAU;YAYJ,aAAa;YAWb,SAAS;
|
|
1
|
+
{"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAiB,MAAM,YAAY,CAAC;AAI/F,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAC,CAAmE;gBAEvE,MAAM,EAAE,aAAa,EAAE,cAAc,SAA2B;IAO5E,0CAA0C;IAC1C,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAQtC,6BAA6B;IAC7B,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAI;IAI7C,yCAAyC;IACnC,KAAK,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIxC,oDAAoD;IAC9C,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAgBvC,yDAAyD;IACzD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,oDAAoD;IACpD,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,2CAA2C;IAC3C,IAAI,QAAQ,IAAI,cAAc,EAAE,CAE/B;IAED,OAAO,CAAC,UAAU;YAYJ,aAAa;YAWb,SAAS;CAmGxB"}
|
package/dist/buffer.js
CHANGED
|
@@ -117,7 +117,9 @@ export class WitnessBuffer {
|
|
|
117
117
|
if (resp.status >= 400 && resp.status < 500) {
|
|
118
118
|
// Client error — don't retry, don't dead-letter
|
|
119
119
|
const text = await resp.text();
|
|
120
|
-
|
|
120
|
+
// Scrub any key material that might appear in error response body
|
|
121
|
+
const safe = text.replace(/(?:Bearer|Authorization|api[_-]?key|signing[_-]?key)[^\s,;"]*/gi, "[REDACTED]");
|
|
122
|
+
console.error(`[swt3-ai] Batch flush failed (${resp.status}): ${safe.slice(0, 200)}`);
|
|
121
123
|
return [];
|
|
122
124
|
}
|
|
123
125
|
const result = (await resp.json());
|
package/dist/buffer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC,MAAM,OAAO,aAAa;IAChB,MAAM,CAAgB;IACtB,KAAK,GAAqB,EAAE,CAAC;IAC7B,UAAU,GAAqB,EAAE,CAAC;IAClC,cAAc,CAAS;IACvB,WAAW,GAAqB,EAAE,CAAC;IACnC,KAAK,GAAyC,IAAI,CAAC;IACnD,OAAO,GAAG,KAAK,CAAC;IAChB,mBAAmB,GAAG,CAAC,CAAC;IACxB,QAAQ,GAAG,KAAK,CAAC;IACjB,OAAO,CAAoE;IAEnF,YAAY,MAAqB,EAAE,cAAc,GAAG,wBAAwB;QAC1E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,0CAA0C;IAC1C,OAAO,CAAC,OAAuB;QAC7B,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAChD,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,WAAW,CAAC,QAA0B;QACpC,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,oDAAoD;IACpD,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CACV,iCAAiC,IAAI,CAAC,UAAU,CAAC,MAAM,gCAAgC,CACxF,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,yDAAyD;IACzD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACpD,CAAC;IAED,oDAAoD;IACpD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,2CAA2C;IAC3C,IAAI,QAAQ;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;QACrC,oDAAoD;QACpD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3D,IAAI,CAAC,KAAwB,CAAC,KAAK,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,cAAc;QACd,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAEhB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAErC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,QAA0B;QAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAErC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,uBAAuB,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrD,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;SAC9C,CAAC;QAEF,IAAI,SAAS,GAAkB,IAAI,CAAC;QAEpC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YAClE,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAE5E,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAC5B,MAAM,EAAE,MAAM;oBACd,OAAO;oBACP,IAAI;oBACJ,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBAEH,YAAY,CAAC,SAAS,CAAC,CAAC;gBAExB,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBAC5C,gDAAgD;oBAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC/B,OAAO,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBACtF,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAkB,CAAC;gBAEpD,MAAM,QAAQ,GAAqB,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACzD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;gBACnC,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;gBAE7B,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CACV,0BAA0B,MAAM,CAAC,QAAQ,cAAc,MAAM,CAAC,QAAQ,WAAW,CAClF,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,OAAO,CAAC,IAAI,CACV,cAAc,MAAM,CAAC,QAAQ,yBAAyB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;wBAC5E,wFAAwF;wBACxF,2FAA2F,CAC5F,CAAC;gBACJ,CAAC;gBAED,0EAA0E;gBAC1E,IAAI,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,IAAI,CAAC;wBACH,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBACnC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;gBAED,OAAO,QAAQ,CAAC;YAClB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,IAAI,CACV,iCAAiC,OAAO,GAAG,CAAC,YAAY,SAAS,EAAE,CACpE,CAAC;gBAEF,kCAAkC;gBAClC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;oBACzC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAElC,4BAA4B;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC;YAC7D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACjD,OAAO,CAAC,KAAK,CACX,qCAAqC,OAAO,kCAAkC,IAAI,CAAC,cAAc,GAAG,CACrG,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,oCAAoC,QAAQ,CAAC,MAAM,0CAA0C,IAAI,CAAC,UAAU,CAAC,MAAM,aAAa,SAAS,EAAE,CAC5I,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"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"}
|
package/dist/clearing.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ import type { InferenceRecord, WitnessPayload } from "./types.js";
|
|
|
16
16
|
* Applies clearing level to each payload via object destructuring (Level 2+
|
|
17
17
|
* fields are simply never assigned, guaranteeing they don't exist on the wire).
|
|
18
18
|
*/
|
|
19
|
-
export declare function extractPayloads(record: InferenceRecord, tenantId: string, clearingLevel: 0 | 1 | 2 | 3, latencyThresholdMs?: number, guardrailsRequired?: number, procedures?: string[], agentId?: string, signingKey?: string, cycleId?: string, policyVersionHash?: string, jurisdiction?: string, legalBasis?: string, purposeClass?: string, authorizationId?: string): WitnessPayload[];
|
|
19
|
+
export declare function extractPayloads(record: InferenceRecord, tenantId: string, clearingLevel: 0 | 1 | 2 | 3, latencyThresholdMs?: number, guardrailsRequired?: number, procedures?: string[], agentId?: string, signingKey?: string, signingKeyId?: string, signingKeyVersion?: number, cycleId?: string, policyVersionHash?: string, jurisdiction?: string, legalBasis?: string, purposeClass?: string, authorizationId?: string): WitnessPayload[];
|
|
20
20
|
/**
|
|
21
21
|
* Mint an AI-GRD.3 (Gatekeeper Gate) payload.
|
|
22
22
|
*
|
|
@@ -25,7 +25,7 @@ export declare function extractPayloads(record: InferenceRecord, tenantId: strin
|
|
|
25
25
|
* factor_c = 1 if gate passed, 0 if blocked
|
|
26
26
|
* Verdict: PASS if b >= a AND c == 1
|
|
27
27
|
*/
|
|
28
|
-
export declare function extractGatekeeperPayload(tenantId: string, required: number, active: number, gatePassed: boolean, clearingLevel: 0 | 1 | 2 | 3, agentId?: string, signingKey?: string, cycleId?: string, policyVersionHash?: string, jurisdiction?: string, legalBasis?: string, purposeClass?: string): WitnessPayload;
|
|
28
|
+
export declare function extractGatekeeperPayload(tenantId: string, required: number, active: number, gatePassed: boolean, clearingLevel: 0 | 1 | 2 | 3, agentId?: string, signingKey?: string, signingKeyId?: string, signingKeyVersion?: number, cycleId?: string, policyVersionHash?: string, jurisdiction?: string, legalBasis?: string, purposeClass?: string): WitnessPayload;
|
|
29
29
|
/** Revocation reason code mapping. */
|
|
30
30
|
export declare const REVOCATION_REASONS: Record<string, number>;
|
|
31
31
|
/**
|
|
@@ -35,5 +35,5 @@ export declare const REVOCATION_REASONS: Record<string, number>;
|
|
|
35
35
|
* factor_b = 1 (target declared valid by caller)
|
|
36
36
|
* factor_c = reason code (integer from REVOCATION_REASONS)
|
|
37
37
|
*/
|
|
38
|
-
export declare function extractRevocationPayload(tenantId: string, targetFingerprint: string, reason: string, clearingLevel: 0 | 1 | 2 | 3, agentId?: string, signingKey?: string, cycleId?: string, policyVersionHash?: string, jurisdiction?: string, legalBasis?: string, purposeClass?: string): WitnessPayload;
|
|
38
|
+
export declare function extractRevocationPayload(tenantId: string, targetFingerprint: string, reason: string, clearingLevel: 0 | 1 | 2 | 3, agentId?: string, signingKey?: string, signingKeyId?: string, signingKeyVersion?: number, cycleId?: string, policyVersionHash?: string, jurisdiction?: string, legalBasis?: string, purposeClass?: string): WitnessPayload;
|
|
39
39
|
//# sourceMappingURL=clearing.d.ts.map
|
package/dist/clearing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clearing.d.ts","sourceRoot":"","sources":["../src/clearing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAC5B,kBAAkB,GAAE,MAAc,EAClC,kBAAkB,GAAE,MAAU,EAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,EAChB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,eAAe,CAAC,EAAE,MAAM,GACvB,cAAc,EAAE,CA8MlB;
|
|
1
|
+
{"version":3,"file":"clearing.d.ts","sourceRoot":"","sources":["../src/clearing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAC5B,kBAAkB,GAAE,MAAc,EAClC,kBAAkB,GAAE,MAAU,EAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,MAAM,EAChB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,eAAe,CAAC,EAAE,MAAM,GACvB,cAAc,EAAE,CA8MlB;AA0FD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,OAAO,EACnB,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAC5B,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,MAAM,EAChB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,GACpB,cAAc,CAqBhB;AAED,sCAAsC;AACtC,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQrD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAC5B,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,MAAM,EAChB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,GACpB,cAAc,CAwBhB"}
|