@tenova/swt3-ai 0.5.3 → 0.5.5
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 +100 -8
- package/dist/adapters/cerebras.d.ts +25 -0
- package/dist/adapters/cerebras.d.ts.map +1 -0
- package/dist/adapters/cerebras.js +79 -0
- package/dist/adapters/cerebras.js.map +1 -0
- package/dist/clearing.d.ts +15 -3
- package/dist/clearing.d.ts.map +1 -1
- package/dist/clearing.js +42 -10
- package/dist/clearing.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +54 -2
- package/dist/config.js.map +1 -1
- package/dist/demo.d.ts.map +1 -1
- package/dist/demo.js +6 -2
- package/dist/demo.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +20 -0
- package/dist/doctor.js.map +1 -1
- package/dist/exporters/evidence.d.ts +59 -0
- package/dist/exporters/evidence.d.ts.map +1 -0
- package/dist/exporters/evidence.js +148 -0
- package/dist/exporters/evidence.js.map +1 -0
- package/dist/index.d.ts +10 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/merkle.d.ts +15 -0
- package/dist/merkle.d.ts.map +1 -1
- package/dist/merkle.js +24 -0
- package/dist/merkle.js.map +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +60 -4
- package/dist/schema.js.map +1 -1
- package/dist/sentinel-client.d.ts +90 -0
- package/dist/sentinel-client.d.ts.map +1 -0
- package/dist/sentinel-client.js +179 -0
- package/dist/sentinel-client.js.map +1 -0
- package/dist/signing.d.ts +31 -6
- package/dist/signing.d.ts.map +1 -1
- package/dist/signing.js +105 -12
- package/dist/signing.js.map +1 -1
- package/dist/types.d.ts +25 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +15 -0
- package/dist/types.js.map +1 -1
- package/dist/wal.d.ts +1 -1
- package/dist/wal.js +1 -1
- package/dist/witness.d.ts +117 -0
- package/dist/witness.d.ts.map +1 -1
- package/dist/witness.js +334 -9
- package/dist/witness.js.map +1 -1
- package/package.json +3 -2
- package/templates/autonomous-systems.yaml +70 -0
- package/templates/content-platform.yaml +68 -0
- package/templates/defense-govcon.yaml +77 -0
- package/templates/fintech-model-risk.yaml +69 -0
- package/templates/github-action.yml +44 -0
- package/templates/healthcare-clinical.yaml +67 -0
- package/templates/insurance-underwriting.yaml +68 -0
- package/templates/microsoft-foundry.yaml +61 -0
- package/templates/telecom-compliance.yaml +72 -0
package/README.md
CHANGED
|
@@ -13,6 +13,18 @@ Works with OpenAI, Anthropic, AWS Bedrock, Vercel AI SDK, and any OpenAI-compati
|
|
|
13
13
|
|
|
14
14
|
GPAI transparency obligations are enforceable now. EU AI Act high-risk enforcement begins **December 2, 2027**. This SDK gives you the evidence chain.
|
|
15
15
|
|
|
16
|
+
## What's New in v0.5.5
|
|
17
|
+
|
|
18
|
+
- **Trust Mesh Hardened** -- 7 security layers: intra-tenant zero-trust, per-agent rate limiting, per-level freshness windows (SOVEREIGN requires 5-min anchors), verifiable boolean claims, deny list propagation with sentinel hooks. All opt-in, frictionless defaults unchanged.
|
|
19
|
+
- **Key Attestation (AI-TRUST.3)** -- Bind signing keys to witness anchors. `generateKeyAttestation()` / `verifyKeyAttestation()`. Keys valid only while bound anchor is fresh. No certificate authority required.
|
|
20
|
+
- **Challenge-Response Liveness** -- Prove live key possession via nonce-based challenges. `generateChallenge()` / `respondToChallenge()` / `verifyLivenessResponse()`. Defeats credential replay at ATTESTED/SOVEREIGN levels.
|
|
21
|
+
- **4 New Adapters** -- Google ADK, CrewAI, A2A (Google Agent-to-Agent), Microsoft Foundry. 12 total integrations.
|
|
22
|
+
- **Verify CLI** -- `swt3 verify --anchor <token>` recomputes fingerprint offline. Zero network calls.
|
|
23
|
+
- **Bidirectional Framework Crosswalks** -- 222 mappings across 16 frameworks in machine-readable JSON.
|
|
24
|
+
- **RFC 3161 Timestamps** -- Merkle rollups include RFC 3161 timestamp authority proof for legal non-repudiation.
|
|
25
|
+
- **Microsoft Foundry Profile** -- Industry profile for Azure AI Foundry + AGT deployments.
|
|
26
|
+
- **15 profiles**, 65 procedures, 41 namespaces, 12 integrations, 1,379 cross-language tests
|
|
27
|
+
|
|
16
28
|
## MCP Server -- Official Registry
|
|
17
29
|
|
|
18
30
|
`@tenova/swt3-mcp` is listed on the official Model Context Protocol Registry as `io.tenova/swt3-witness`. Zero-config compliance governance for Claude Code, Cursor, Windsurf, and any MCP-compatible host.
|
|
@@ -79,6 +91,24 @@ trust_mesh:
|
|
|
79
91
|
|
|
80
92
|
All verification is local. Zero cloud overhead. No data exchanged until both agents clear the trust gate. Unsigned agents are capped at TRUST_BASIC (level 1). Add signing keys for verified trust. Add hardware attestation for sovereign trust.
|
|
81
93
|
|
|
94
|
+
## Offline Verification
|
|
95
|
+
|
|
96
|
+
Verify any witness anchor without network calls. The fingerprint formula is deterministic and identical across all 6 SDK languages -- recompute it anywhere in microseconds.
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
import { verifyAnchor } from "@tenova/swt3-ai";
|
|
100
|
+
|
|
101
|
+
const result = verifyAnchor(anchor, {
|
|
102
|
+
tenantId: "MY_TENANT",
|
|
103
|
+
procedureId: "AI-INF.1",
|
|
104
|
+
factorA: 1, factorB: 1, factorC: 0,
|
|
105
|
+
timestampMs: 1773316622000,
|
|
106
|
+
});
|
|
107
|
+
// result.status: "CERTIFIED TRUTH" | "TAMPERED"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Zero vendor dependency. Zero network calls. Works air-gapped. The same formula runs in Python, TypeScript, Rust, C#, and Ruby with identical output for identical inputs.
|
|
111
|
+
|
|
82
112
|
## See It Work (No Account Needed)
|
|
83
113
|
|
|
84
114
|
```bash
|
|
@@ -487,7 +517,7 @@ Supports single files or chains (`extends: [base.yaml, team.yaml]`). Merge order
|
|
|
487
517
|
|
|
488
518
|
### Built-in Profiles
|
|
489
519
|
|
|
490
|
-
|
|
520
|
+
14 profiles ship with the SDK -- 7 framework profiles and 7 industry verticals:
|
|
491
521
|
|
|
492
522
|
| Profile | Use Case |
|
|
493
523
|
|---------|----------|
|
|
@@ -498,6 +528,13 @@ Seven profiles ship with the SDK:
|
|
|
498
528
|
| `mythos-defense` | Exploit chain containment: clearing 3, strict trust, depth 5 |
|
|
499
529
|
| `granite-sovereign` | IBM Granite on-prem: air-gap ready, hardware attestation |
|
|
500
530
|
| `minimal` | Development: clearing 0, no policy enforcement |
|
|
531
|
+
| `fintech-model-risk` | SR 11-7 model risk: drift monitoring, clearing 2, signing required |
|
|
532
|
+
| `healthcare-clinical` | HIPAA clinical AI: consent witnessing, clearing 3, PII protection |
|
|
533
|
+
| `insurance-underwriting` | Underwriting AI: fairness, explainability, DPIA, clearing 2 |
|
|
534
|
+
| `telecom-compliance` | Telecom fraud/network AI: performance monitoring, incident response |
|
|
535
|
+
| `defense-govcon` | CMMC/RMF: clearing 3, strict chain enforcement, SBOM required |
|
|
536
|
+
| `content-platform` | Content moderation: watermark verification, transparency, consent |
|
|
537
|
+
| `autonomous-systems` | Autonomous/robotics: safety, robustness, dual-use, human oversight |
|
|
501
538
|
|
|
502
539
|
### Diagnostics
|
|
503
540
|
|
|
@@ -667,7 +704,7 @@ Each inference produces anchors for these checks. Every check maps to a regulati
|
|
|
667
704
|
|
|
668
705
|
### EU AI Act Article Mapping
|
|
669
706
|
|
|
670
|
-
All
|
|
707
|
+
All 65 SWT3 AI witnessing procedures map to specific EU AI Act obligations:
|
|
671
708
|
|
|
672
709
|
| Procedure | EU AI Act Article | Obligation | Demo | Production |
|
|
673
710
|
|-----------|-------------------|------------|------|------------|
|
|
@@ -684,7 +721,7 @@ All 47 SWT3 AI witnessing procedures map to specific EU AI Act obligations:
|
|
|
684
721
|
| AI-EXPL.1 | Art. 13(1) | Transparency & Explainability | -| ✓ |
|
|
685
722
|
| AI-EXPL.2 | Art. 13(3b) | Confidence Calibration | -| ✓ |
|
|
686
723
|
|
|
687
|
-
The demo demonstrates 5 procedures using simulated data. All
|
|
724
|
+
The demo demonstrates 5 procedures using simulated data. All 65 are available in production with real inference data. 207 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)
|
|
688
725
|
|
|
689
726
|
## How Verdicts Work
|
|
690
727
|
|
|
@@ -734,6 +771,58 @@ echo -n "WITNESS:DEMO_TENANT:AI-INF.1:1:1:0:1774800000000" | sha256sum | cut -c1
|
|
|
734
771
|
|
|
735
772
|
No SDK needed. Works on any machine, any language.
|
|
736
773
|
|
|
774
|
+
## Self-Hosted Deployment
|
|
775
|
+
|
|
776
|
+
Run the full stack inside your own infrastructure. No data leaves your network boundary.
|
|
777
|
+
|
|
778
|
+
### SWT3 Gateway (LLM Proxy)
|
|
779
|
+
|
|
780
|
+
A zero-latency Go reverse proxy that witnesses every inference transparently. Deploy inside your VPC, point your app at the gateway instead of the LLM provider. One line change:
|
|
781
|
+
|
|
782
|
+
```bash
|
|
783
|
+
docker run -d \
|
|
784
|
+
-e SWT3_API_KEY=axm_live_your_key \
|
|
785
|
+
-e SWT3_TENANT_ID=YOUR_ENCLAVE \
|
|
786
|
+
-e SWT3_UPSTREAM=https://api.openai.com \
|
|
787
|
+
-p 8443:8443 \
|
|
788
|
+
tenova/swt3-gateway:latest
|
|
789
|
+
```
|
|
790
|
+
|
|
791
|
+
```typescript
|
|
792
|
+
// One line change. Everything else stays the same.
|
|
793
|
+
const client = new OpenAI({ baseURL: "http://gateway:8443/v1" });
|
|
794
|
+
```
|
|
795
|
+
|
|
796
|
+
Multi-provider routing, model allowlist (advisory or strict), streaming support, HMAC payload signing. Helm chart included for Kubernetes.
|
|
797
|
+
|
|
798
|
+
[Gateway Documentation](https://github.com/tenova-labs/swt3-ai/tree/main/packages/swt3-gateway)
|
|
799
|
+
|
|
800
|
+
### Axiom Sovereign Engine (Full Platform)
|
|
801
|
+
|
|
802
|
+
The complete compliance platform as a container: dashboard, adjudicator, evidence chain, Merkle rollups.
|
|
803
|
+
|
|
804
|
+
```bash
|
|
805
|
+
# Three-service deployment (dashboard + adjudicator + postgres)
|
|
806
|
+
docker compose up -d
|
|
807
|
+
|
|
808
|
+
# Air-gap export for disconnected environments
|
|
809
|
+
docker save axiom-sovereign-engine:latest | gzip > axiom-sovereign.tar.gz
|
|
810
|
+
```
|
|
811
|
+
|
|
812
|
+
- UBI 9 Minimal base (Iron Bank compatible, DoD IL2-IL5)
|
|
813
|
+
- Non-root runtime, FIPS-validated OpenSSL 3.x
|
|
814
|
+
- Works air-gapped: `docker load` on the target, no internet required
|
|
815
|
+
- Helm chart for Kubernetes orchestration
|
|
816
|
+
|
|
817
|
+
### Deployment Options
|
|
818
|
+
|
|
819
|
+
| Mode | What You Run | Data Residency |
|
|
820
|
+
|------|-------------|----------------|
|
|
821
|
+
| **SDK only** | `npm install @tenova/swt3-ai` | Hashes leave, data stays |
|
|
822
|
+
| **Gateway** | Docker container in your VPC | Raw traffic never leaves your network |
|
|
823
|
+
| **Self-hosted platform** | Docker Compose or Helm | Everything on your infrastructure |
|
|
824
|
+
| **Air-gapped** | `docker load` from tarball | Zero internet connectivity required |
|
|
825
|
+
|
|
737
826
|
## Sovereign Cloud Support
|
|
738
827
|
|
|
739
828
|
The SDK works with any OpenAI-compatible endpoint. Run models on your own infrastructure and witness every inference identically:
|
|
@@ -843,7 +932,8 @@ const witness = new Witness({
|
|
|
843
932
|
| `maxRetries` | 3 | Retries before dead-letter |
|
|
844
933
|
| `guardrailNames` | [] | Active guardrail names |
|
|
845
934
|
| `agentId` | - | Agent identity (survives all clearing levels) |
|
|
846
|
-
| `signingKey` | - |
|
|
935
|
+
| `signingKey` | - | Signing key for payload non-repudiation (HMAC-SHA256 secret or ML-DSA-65 hex seed) |
|
|
936
|
+
| `signingAlgorithm` | - | `"hmac-sha256"` (default) or `"ml-dsa-65"` (FIPS 204 post-quantum) |
|
|
847
937
|
| `cycleId` | - | Multi-agent chain link (survives all clearing levels) |
|
|
848
938
|
| `policyVersion` | - | Policy config identifier (hashed in payloads) |
|
|
849
939
|
| `strict` | false | Gatekeeper mode: block inference if guardrails insufficient |
|
|
@@ -955,10 +1045,12 @@ Your prompts and responses **never leave your infrastructure**. The SDK computes
|
|
|
955
1045
|
- [Design Rationale](https://sovereign.tenova.io/guides/swt3-design-rationale.html) -- why every protocol decision was made
|
|
956
1046
|
- [UCT Registry](https://sovereign.tenova.io/registry) -- full procedure catalog with factor definitions
|
|
957
1047
|
- [Anchor Verifier](https://sovereign.tenova.io/verify) -- verify any anchor, zero server calls
|
|
958
|
-
- [
|
|
959
|
-
- [
|
|
960
|
-
- [
|
|
961
|
-
- [
|
|
1048
|
+
- [Before & After](https://sovereign.tenova.io/guides/developer-before-after.html) -- manual audit evidence vs. cryptographic witness anchors
|
|
1049
|
+
- [Integration Patterns](https://sovereign.tenova.io/guides/developer-integration-patterns.html) -- 8 instrumentation patterns mapped to regulatory requirements
|
|
1050
|
+
- [What Your Auditor Sees](https://sovereign.tenova.io/guides/developer-auditor-bridge.html) -- both sides of a witness anchor, developer to auditor
|
|
1051
|
+
- [CI/CD Integration](https://sovereign.tenova.io/guides/developer-cicd-guide.html) -- validate compliance configuration in your pipeline
|
|
1052
|
+
- [Assessment Mapping](https://sovereign.tenova.io/registry/assessment.html) -- which procedures satisfy which regulatory requirements
|
|
1053
|
+
- [All 65 Guides](https://sovereign.tenova.io/guides/) -- regulatory crosswalks, assessor walkthroughs, integration guides
|
|
962
1054
|
|
|
963
1055
|
---
|
|
964
1056
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SWT3 AI Witness SDK -- Cerebras WSE-3 Adapter.
|
|
3
|
+
*
|
|
4
|
+
* Host-side compliance witnessing for Cerebras wafer-scale inference.
|
|
5
|
+
* Wraps any object with launch()/memcpyD2H() methods, minting anchors
|
|
6
|
+
* on device-to-host transfers without modifying CSL kernels.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* import { wrapCerebrasRuntime } from "@tenova/swt3-ai/adapters/cerebras";
|
|
10
|
+
* const witnessed = wrapCerebrasRuntime(runtime, witness);
|
|
11
|
+
* witnessed.launch("kernel_name");
|
|
12
|
+
* const result = witnessed.memcpyD2H(symbol, shape);
|
|
13
|
+
*
|
|
14
|
+
* Copyright (c) 2026 Tenable Nova LLC. Apache 2.0. Patent pending.
|
|
15
|
+
*/
|
|
16
|
+
import type { Witness } from "../witness.js";
|
|
17
|
+
export interface CerebrasRuntime {
|
|
18
|
+
launch(kernelName: string, ...args: unknown[]): unknown;
|
|
19
|
+
memcpyD2H?(...args: unknown[]): unknown;
|
|
20
|
+
memcpyH2D?(...args: unknown[]): unknown;
|
|
21
|
+
}
|
|
22
|
+
export declare function wrapCerebrasRuntime(runtime: CerebrasRuntime, witness: Witness, modelId?: string): CerebrasRuntime & {
|
|
23
|
+
readonly launchCount: number;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=cerebras.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cerebras.d.ts","sourceRoot":"","sources":["../../src/adapters/cerebras.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAK7C,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACxD,SAAS,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACxC,SAAS,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;CACzC;AAsBD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,eAAe,GAAG;IAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAsDpD"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SWT3 AI Witness SDK -- Cerebras WSE-3 Adapter.
|
|
3
|
+
*
|
|
4
|
+
* Host-side compliance witnessing for Cerebras wafer-scale inference.
|
|
5
|
+
* Wraps any object with launch()/memcpyD2H() methods, minting anchors
|
|
6
|
+
* on device-to-host transfers without modifying CSL kernels.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* import { wrapCerebrasRuntime } from "@tenova/swt3-ai/adapters/cerebras";
|
|
10
|
+
* const witnessed = wrapCerebrasRuntime(runtime, witness);
|
|
11
|
+
* witnessed.launch("kernel_name");
|
|
12
|
+
* const result = witnessed.memcpyD2H(symbol, shape);
|
|
13
|
+
*
|
|
14
|
+
* Copyright (c) 2026 Tenable Nova LLC. Apache 2.0. Patent pending.
|
|
15
|
+
*/
|
|
16
|
+
import { sha256Truncated } from "../fingerprint.js";
|
|
17
|
+
import { createHash } from "crypto";
|
|
18
|
+
function hashBuffer(data) {
|
|
19
|
+
if (data === null || data === undefined)
|
|
20
|
+
return "";
|
|
21
|
+
if (data instanceof Buffer || data instanceof Uint8Array) {
|
|
22
|
+
return createHash("sha256").update(data).digest("hex").slice(0, 16);
|
|
23
|
+
}
|
|
24
|
+
if (typeof data === "string") {
|
|
25
|
+
return sha256Truncated(data);
|
|
26
|
+
}
|
|
27
|
+
if (data instanceof ArrayBuffer) {
|
|
28
|
+
return createHash("sha256").update(Buffer.from(data)).digest("hex").slice(0, 16);
|
|
29
|
+
}
|
|
30
|
+
return sha256Truncated(String(data));
|
|
31
|
+
}
|
|
32
|
+
export function wrapCerebrasRuntime(runtime, witness, modelId) {
|
|
33
|
+
const mid = modelId ?? process.env.SWT3_MODEL_ID ?? process.env.CEREBRAS_MODEL_NAME ?? "cerebras-wse3";
|
|
34
|
+
const state = {
|
|
35
|
+
launchTime: null,
|
|
36
|
+
kernelName: null,
|
|
37
|
+
launchCount: 0,
|
|
38
|
+
};
|
|
39
|
+
const originalLaunch = runtime.launch.bind(runtime);
|
|
40
|
+
const originalMemcpy = runtime.memcpyD2H?.bind(runtime);
|
|
41
|
+
const wrapped = Object.create(runtime);
|
|
42
|
+
wrapped.launch = (kernelName, ...args) => {
|
|
43
|
+
state.launchTime = performance.now();
|
|
44
|
+
state.kernelName = kernelName;
|
|
45
|
+
state.launchCount++;
|
|
46
|
+
return originalLaunch(kernelName, ...args);
|
|
47
|
+
};
|
|
48
|
+
if (originalMemcpy) {
|
|
49
|
+
wrapped.memcpyD2H = (...args) => {
|
|
50
|
+
const result = originalMemcpy(...args);
|
|
51
|
+
const elapsed = state.launchTime !== null
|
|
52
|
+
? Math.round(performance.now() - state.launchTime)
|
|
53
|
+
: 0;
|
|
54
|
+
const record = {
|
|
55
|
+
modelId: mid,
|
|
56
|
+
modelHash: sha256Truncated(mid),
|
|
57
|
+
promptHash: state.kernelName ? sha256Truncated(state.kernelName) : "",
|
|
58
|
+
responseHash: hashBuffer(result),
|
|
59
|
+
latencyMs: elapsed,
|
|
60
|
+
inputTokens: 0,
|
|
61
|
+
outputTokens: 0,
|
|
62
|
+
guardrailsActive: 0,
|
|
63
|
+
guardrailsRequired: 0,
|
|
64
|
+
guardrailPassed: true,
|
|
65
|
+
hasRefusal: false,
|
|
66
|
+
provider: "cerebras-wse3",
|
|
67
|
+
guardrailNames: [],
|
|
68
|
+
};
|
|
69
|
+
witness.record(record);
|
|
70
|
+
return result;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
Object.defineProperty(wrapped, "launchCount", {
|
|
74
|
+
get: () => state.launchCount,
|
|
75
|
+
enumerable: true,
|
|
76
|
+
});
|
|
77
|
+
return wrapped;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=cerebras.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cerebras.js","sourceRoot":"","sources":["../../src/adapters/cerebras.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAcpC,SAAS,UAAU,CAAC,IAAa;IAC/B,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnD,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;QACzD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;QAChC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAAwB,EACxB,OAAgB,EAChB,OAAgB;IAEhB,MAAM,GAAG,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,eAAe,CAAC;IAEvG,MAAM,KAAK,GAAkB;QAC3B,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,CAAC;KACf,CAAC;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAExD,MAAM,OAAO,GAAuD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE3F,OAAO,CAAC,MAAM,GAAG,CAAC,UAAkB,EAAE,GAAG,IAAe,EAAW,EAAE;QACnE,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACrC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QAC9B,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO,cAAc,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,SAAS,GAAG,CAAC,GAAG,IAAe,EAAW,EAAE;YAClD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,KAAK,IAAI;gBACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;gBAClD,CAAC,CAAC,CAAC,CAAC;YAEN,MAAM,MAAM,GAAoB;gBAC9B,OAAO,EAAE,GAAG;gBACZ,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC;gBAC/B,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;gBACrE,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC;gBAChC,SAAS,EAAE,OAAO;gBAClB,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,CAAC;gBACf,gBAAgB,EAAE,CAAC;gBACnB,kBAAkB,EAAE,CAAC;gBACrB,eAAe,EAAE,IAAI;gBACrB,UAAU,EAAE,KAAK;gBACjB,QAAQ,EAAE,eAAe;gBACzB,cAAc,EAAE,EAAE;aACnB,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE;QAC5C,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW;QAC5B,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
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, signingKeyId?: string, signingKeyVersion?: number, 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, signingAlgorithm?: 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, signingKeyId?: string, signingKeyVersion?: number, 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, signingAlgorithm?: string): WitnessPayload;
|
|
29
29
|
/** Revocation reason code mapping. */
|
|
30
30
|
export declare const REVOCATION_REASONS: Record<string, number>;
|
|
31
31
|
/**
|
|
@@ -35,5 +35,17 @@ 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, signingKeyId?: string, signingKeyVersion?: number, 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, signingAlgorithm?: string): WitnessPayload;
|
|
39
|
+
/**
|
|
40
|
+
* Mint an AI-CHAIN.2 (Trust Degradation) payload.
|
|
41
|
+
*
|
|
42
|
+
* Minted automatically when the effective trust level drops during
|
|
43
|
+
* a multi-agent chain handoff. Provides auditors with a specific,
|
|
44
|
+
* searchable anchor for trust boundary crossings.
|
|
45
|
+
*
|
|
46
|
+
* factor_a = previous effective trust level
|
|
47
|
+
* factor_b = new effective trust level
|
|
48
|
+
* factor_c = delta (negative = degradation)
|
|
49
|
+
*/
|
|
50
|
+
export declare function extractChainTrustDegradationPayload(tenantId: string, previousTrustLevel: number, newTrustLevel: number, clearingLevel: 0 | 1 | 2 | 3, agentId?: string, signingKey?: string, signingKeyId?: string, signingKeyVersion?: number, cycleId?: string, policyVersionHash?: string, signingAlgorithm?: string): WitnessPayload;
|
|
39
51
|
//# 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,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,
|
|
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,EACxB,gBAAgB,CAAC,EAAE,MAAM,GACxB,cAAc,EAAE,CA8MlB;AA6FD;;;;;;;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,EACrB,gBAAgB,CAAC,EAAE,MAAM,GACxB,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,EACrB,gBAAgB,CAAC,EAAE,MAAM,GACxB,cAAc,CAwBhB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mCAAmC,CACjD,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,EAC1B,aAAa,EAAE,MAAM,EACrB,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,gBAAgB,CAAC,EAAE,MAAM,GACxB,cAAc,CAqBhB"}
|
package/dist/clearing.js
CHANGED
|
@@ -17,7 +17,7 @@ import { signPayload } from "./signing.js";
|
|
|
17
17
|
* Applies clearing level to each payload via object destructuring (Level 2+
|
|
18
18
|
* fields are simply never assigned, guaranteeing they don't exist on the wire).
|
|
19
19
|
*/
|
|
20
|
-
export function extractPayloads(record, tenantId, clearingLevel, latencyThresholdMs = 30000, guardrailsRequired = 0, procedures, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, authorizationId) {
|
|
20
|
+
export function extractPayloads(record, tenantId, clearingLevel, latencyThresholdMs = 30000, guardrailsRequired = 0, procedures, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, authorizationId, signingAlgorithm) {
|
|
21
21
|
const [ts, epoch] = timestampMs();
|
|
22
22
|
const payloads = [];
|
|
23
23
|
// Access control records produce only AI-ACC.1 (skip inference procedures)
|
|
@@ -63,7 +63,7 @@ export function extractPayloads(record, tenantId, clearingLevel, latencyThreshol
|
|
|
63
63
|
ctx.cycle_id = cycleId;
|
|
64
64
|
payload.ai_context = ctx;
|
|
65
65
|
}
|
|
66
|
-
applyOperationalMetadata(payload, fp, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, authorizationId);
|
|
66
|
+
applyOperationalMetadata(payload, fp, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, authorizationId, signingAlgorithm);
|
|
67
67
|
payloads.push(payload);
|
|
68
68
|
}
|
|
69
69
|
return payloads;
|
|
@@ -105,7 +105,7 @@ export function extractPayloads(record, tenantId, clearingLevel, latencyThreshol
|
|
|
105
105
|
ctx.cycle_id = cycleId;
|
|
106
106
|
payload.ai_context = ctx;
|
|
107
107
|
}
|
|
108
|
-
applyOperationalMetadata(payload, fp, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, authorizationId);
|
|
108
|
+
applyOperationalMetadata(payload, fp, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, authorizationId, signingAlgorithm);
|
|
109
109
|
payloads.push(payload);
|
|
110
110
|
}
|
|
111
111
|
return payloads;
|
|
@@ -190,13 +190,13 @@ export function extractPayloads(record, tenantId, clearingLevel, latencyThreshol
|
|
|
190
190
|
// absent from JSON.stringify output, not just null.
|
|
191
191
|
applyClearingLevel(payload, record, clearingLevel);
|
|
192
192
|
// Operational metadata survives all clearing levels
|
|
193
|
-
applyOperationalMetadata(payload, fp, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, authorizationId);
|
|
193
|
+
applyOperationalMetadata(payload, fp, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, authorizationId, signingAlgorithm);
|
|
194
194
|
payloads.push(payload);
|
|
195
195
|
}
|
|
196
196
|
return payloads;
|
|
197
197
|
}
|
|
198
198
|
/** Apply operational metadata that survives all clearing levels. */
|
|
199
|
-
function applyOperationalMetadata(payload, fingerprint, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, authorizationId) {
|
|
199
|
+
function applyOperationalMetadata(payload, fingerprint, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, authorizationId, signingAlgorithm) {
|
|
200
200
|
if (agentId)
|
|
201
201
|
payload.agent_id = agentId;
|
|
202
202
|
if (cycleId)
|
|
@@ -212,7 +212,9 @@ function applyOperationalMetadata(payload, fingerprint, agentId, signingKey, sig
|
|
|
212
212
|
if (authorizationId)
|
|
213
213
|
payload.authorization_id = authorizationId;
|
|
214
214
|
if (signingKey) {
|
|
215
|
-
|
|
215
|
+
const algo = (signingAlgorithm ?? "hmac-sha256");
|
|
216
|
+
payload.payload_signature = signPayload(signingKey, fingerprint, agentId, algo);
|
|
217
|
+
payload.signing_algorithm = algo;
|
|
216
218
|
if (signingKeyId)
|
|
217
219
|
payload.signing_key_id = signingKeyId;
|
|
218
220
|
if (signingKeyVersion !== undefined)
|
|
@@ -282,7 +284,7 @@ function applyClearingLevel(payload, record, level) {
|
|
|
282
284
|
* factor_c = 1 if gate passed, 0 if blocked
|
|
283
285
|
* Verdict: PASS if b >= a AND c == 1
|
|
284
286
|
*/
|
|
285
|
-
export function extractGatekeeperPayload(tenantId, required, active, gatePassed, clearingLevel, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass) {
|
|
287
|
+
export function extractGatekeeperPayload(tenantId, required, active, gatePassed, clearingLevel, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, signingAlgorithm) {
|
|
286
288
|
const [ts, epoch] = timestampMs();
|
|
287
289
|
const fa = required;
|
|
288
290
|
const fb = active;
|
|
@@ -298,7 +300,7 @@ export function extractGatekeeperPayload(tenantId, required, active, gatePassed,
|
|
|
298
300
|
anchor_epoch: epoch,
|
|
299
301
|
fingerprint_timestamp_ms: ts,
|
|
300
302
|
};
|
|
301
|
-
applyOperationalMetadata(payload, fp, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass);
|
|
303
|
+
applyOperationalMetadata(payload, fp, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, undefined, signingAlgorithm);
|
|
302
304
|
return payload;
|
|
303
305
|
}
|
|
304
306
|
/** Revocation reason code mapping. */
|
|
@@ -318,7 +320,7 @@ export const REVOCATION_REASONS = {
|
|
|
318
320
|
* factor_b = 1 (target declared valid by caller)
|
|
319
321
|
* factor_c = reason code (integer from REVOCATION_REASONS)
|
|
320
322
|
*/
|
|
321
|
-
export function extractRevocationPayload(tenantId, targetFingerprint, reason, clearingLevel, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass) {
|
|
323
|
+
export function extractRevocationPayload(tenantId, targetFingerprint, reason, clearingLevel, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, signingAlgorithm) {
|
|
322
324
|
const [ts, epoch] = timestampMs();
|
|
323
325
|
const reasonCode = REVOCATION_REASONS[reason] ?? 0;
|
|
324
326
|
const fa = 1;
|
|
@@ -337,7 +339,37 @@ export function extractRevocationPayload(tenantId, targetFingerprint, reason, cl
|
|
|
337
339
|
revocation_target: targetFingerprint,
|
|
338
340
|
revocation_reason: reason,
|
|
339
341
|
};
|
|
340
|
-
applyOperationalMetadata(payload, fp, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass);
|
|
342
|
+
applyOperationalMetadata(payload, fp, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, jurisdiction, legalBasis, purposeClass, undefined, signingAlgorithm);
|
|
343
|
+
return payload;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Mint an AI-CHAIN.2 (Trust Degradation) payload.
|
|
347
|
+
*
|
|
348
|
+
* Minted automatically when the effective trust level drops during
|
|
349
|
+
* a multi-agent chain handoff. Provides auditors with a specific,
|
|
350
|
+
* searchable anchor for trust boundary crossings.
|
|
351
|
+
*
|
|
352
|
+
* factor_a = previous effective trust level
|
|
353
|
+
* factor_b = new effective trust level
|
|
354
|
+
* factor_c = delta (negative = degradation)
|
|
355
|
+
*/
|
|
356
|
+
export function extractChainTrustDegradationPayload(tenantId, previousTrustLevel, newTrustLevel, clearingLevel, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, signingAlgorithm) {
|
|
357
|
+
const [ts, epoch] = timestampMs();
|
|
358
|
+
const fa = previousTrustLevel;
|
|
359
|
+
const fb = newTrustLevel;
|
|
360
|
+
const fc = newTrustLevel - previousTrustLevel;
|
|
361
|
+
const fp = mintFingerprint(tenantId, "AI-CHAIN.2", fa, fb, fc, ts);
|
|
362
|
+
const payload = {
|
|
363
|
+
procedure_id: "AI-CHAIN.2",
|
|
364
|
+
factor_a: fa,
|
|
365
|
+
factor_b: fb,
|
|
366
|
+
factor_c: fc,
|
|
367
|
+
clearing_level: clearingLevel,
|
|
368
|
+
anchor_fingerprint: fp,
|
|
369
|
+
anchor_epoch: epoch,
|
|
370
|
+
fingerprint_timestamp_ms: ts,
|
|
371
|
+
};
|
|
372
|
+
applyOperationalMetadata(payload, fp, agentId, signingKey, signingKeyId, signingKeyVersion, cycleId, policyVersionHash, undefined, undefined, undefined, undefined, signingAlgorithm);
|
|
341
373
|
return payload;
|
|
342
374
|
}
|
|
343
375
|
//# sourceMappingURL=clearing.js.map
|
package/dist/clearing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clearing.js","sourceRoot":"","sources":["../src/clearing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"clearing.js","sourceRoot":"","sources":["../src/clearing.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EACyF,YAAY,EAChH,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EACyF,YAAY,EAChH,MAAM,YAAY,CAAC;AA0MpB,UAAU,MAAM;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAmQD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAiDpF;AAID,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD;AAID;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,cAAc,CAExD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,CAmG1D"}
|
package/dist/config.js
CHANGED
|
@@ -36,6 +36,7 @@ const KEY_MAP = {
|
|
|
36
36
|
signing_key: "signingKey",
|
|
37
37
|
signing_key_id: "signingKeyId",
|
|
38
38
|
signing_key_version: "signingKeyVersion",
|
|
39
|
+
signing_algorithm: "signingAlgorithm",
|
|
39
40
|
cycle_id: "cycleId",
|
|
40
41
|
policy_version: "policyVersion",
|
|
41
42
|
legal_basis: "legalBasis",
|
|
@@ -45,6 +46,7 @@ const KEY_MAP = {
|
|
|
45
46
|
wal_path: "walPath",
|
|
46
47
|
replay_window: "replayWindow",
|
|
47
48
|
token_budget: "tokenBudget",
|
|
49
|
+
digest_algorithm: "digestAlgorithm",
|
|
48
50
|
};
|
|
49
51
|
/** Env-suffix fields that resolve from process.env. */
|
|
50
52
|
const ENV_FIELDS = {
|
|
@@ -52,7 +54,7 @@ const ENV_FIELDS = {
|
|
|
52
54
|
signing_key_env: "signingKey",
|
|
53
55
|
};
|
|
54
56
|
/** Top-level sections extracted before key mapping. */
|
|
55
|
-
const SECTION_KEYS = new Set(["policy", "trust_mesh", "hardware", "density_policy", "mcp_policy", "merkle", "profile"]);
|
|
57
|
+
const SECTION_KEYS = new Set(["policy", "trust_mesh", "hardware", "density_policy", "mcp_policy", "merkle", "skill_card", "profile"]);
|
|
56
58
|
// ── Typo Protection Sets ──────────────────────────────────────────────
|
|
57
59
|
const VALID_POLICY_KEYS = new Set([
|
|
58
60
|
"require_signing",
|
|
@@ -68,7 +70,7 @@ const VALID_TRUST_MESH_KEYS = new Set([
|
|
|
68
70
|
"required_procedures", "signing_keys",
|
|
69
71
|
]);
|
|
70
72
|
const VALID_HARDWARE_KEYS = new Set([
|
|
71
|
-
"require_attestation", "attestation_freshness", "allowed_methods",
|
|
73
|
+
"require_attestation", "attestation_freshness", "allowed_methods", "runtime_profile",
|
|
72
74
|
]);
|
|
73
75
|
const VALID_DENSITY_POLICY_KEYS = new Set([
|
|
74
76
|
"min_anchors_per_1000_tokens", "required_providers",
|
|
@@ -84,6 +86,7 @@ const VALID_MERKLE_KEYS = new Set([
|
|
|
84
86
|
"enabled", "accumulator_interval",
|
|
85
87
|
]);
|
|
86
88
|
const VALID_PROFILES = new Set([
|
|
89
|
+
"cost-conscious",
|
|
87
90
|
"eu-ai-act-high-risk",
|
|
88
91
|
"granite-sovereign",
|
|
89
92
|
"mythos-defense",
|
|
@@ -239,11 +242,26 @@ function extractHardware(raw) {
|
|
|
239
242
|
if (typeof section !== "object" || Array.isArray(section)) {
|
|
240
243
|
throw new Error("'hardware' must be a YAML mapping");
|
|
241
244
|
}
|
|
245
|
+
// Extract runtime_profile before validateKeys (it's a nested object, not a flat key)
|
|
246
|
+
const rp = section.runtime_profile;
|
|
247
|
+
delete section.runtime_profile;
|
|
242
248
|
validateKeys(section, VALID_HARDWARE_KEYS, "hardware");
|
|
249
|
+
let runtimeProfile;
|
|
250
|
+
if (rp && typeof rp === "object" && !Array.isArray(rp)) {
|
|
251
|
+
runtimeProfile = {
|
|
252
|
+
expectedTopology: rp.expected_topology,
|
|
253
|
+
minGpuCount: rp.min_gpu_count,
|
|
254
|
+
minMemoryMb: rp.min_memory_mb,
|
|
255
|
+
expectedAccelerator: rp.expected_accelerator,
|
|
256
|
+
maxTemperatureCelsius: rp.max_temperature_celsius,
|
|
257
|
+
maxPowerWatts: rp.max_power_watts,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
243
260
|
return {
|
|
244
261
|
requireAttestation: section.require_attestation ?? false,
|
|
245
262
|
attestationFreshness: section.attestation_freshness ?? 3600,
|
|
246
263
|
allowedMethods: section.allowed_methods ?? [],
|
|
264
|
+
runtimeProfile,
|
|
247
265
|
};
|
|
248
266
|
}
|
|
249
267
|
function extractDensityPolicy(raw) {
|
|
@@ -308,6 +326,38 @@ function extractMerkle(raw) {
|
|
|
308
326
|
accumulatorInterval: section.accumulator_interval ?? 0,
|
|
309
327
|
};
|
|
310
328
|
}
|
|
329
|
+
const VALID_SKILL_CARD_KEYS = new Set(["skills", "expected_manifest_hash"]);
|
|
330
|
+
function extractSkillCard(raw) {
|
|
331
|
+
const section = raw.skill_card;
|
|
332
|
+
if (!section)
|
|
333
|
+
return null;
|
|
334
|
+
delete raw.skill_card;
|
|
335
|
+
if (typeof section !== "object" || Array.isArray(section)) {
|
|
336
|
+
throw new Error("'skill_card' must be a YAML mapping");
|
|
337
|
+
}
|
|
338
|
+
validateKeys(section, VALID_SKILL_CARD_KEYS, "skill_card");
|
|
339
|
+
const rawSkills = section.skills;
|
|
340
|
+
if (!rawSkills || !Array.isArray(rawSkills) || rawSkills.length === 0) {
|
|
341
|
+
return null;
|
|
342
|
+
}
|
|
343
|
+
const skills = rawSkills.map((s) => {
|
|
344
|
+
if (typeof s === "string")
|
|
345
|
+
return s;
|
|
346
|
+
if (typeof s === "object" && s !== null) {
|
|
347
|
+
const obj = s;
|
|
348
|
+
return {
|
|
349
|
+
name: obj.name,
|
|
350
|
+
version: obj.version,
|
|
351
|
+
skillHash: (obj.skill_hash ?? obj.skillHash),
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
return String(s);
|
|
355
|
+
});
|
|
356
|
+
return {
|
|
357
|
+
skills,
|
|
358
|
+
expectedManifestHash: section.expected_manifest_hash,
|
|
359
|
+
};
|
|
360
|
+
}
|
|
311
361
|
// ── Profile / Template System ─────────────────────────────────────────
|
|
312
362
|
function deepMerge(base, override) {
|
|
313
363
|
const result = { ...base };
|
|
@@ -430,6 +480,7 @@ export function loadFullConfig(path) {
|
|
|
430
480
|
const policy = extractPolicy(raw);
|
|
431
481
|
const trustMesh = extractTrustMesh(raw);
|
|
432
482
|
const hardware = extractHardware(raw);
|
|
483
|
+
const skillCard = extractSkillCard(raw);
|
|
433
484
|
const densityPolicy = extractDensityPolicy(raw);
|
|
434
485
|
const mcpPolicy = extractMcpPolicy(raw);
|
|
435
486
|
const merkle = extractMerkle(raw);
|
|
@@ -472,6 +523,7 @@ export function loadFullConfig(path) {
|
|
|
472
523
|
witnessOptions: result,
|
|
473
524
|
trustMesh,
|
|
474
525
|
hardware,
|
|
526
|
+
skillCard,
|
|
475
527
|
densityPolicy,
|
|
476
528
|
mcpPolicy,
|
|
477
529
|
merkle,
|