@tenova/swt3-ai 0.5.3 → 0.5.4

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 (60) hide show
  1. package/README.md +78 -5
  2. package/dist/adapters/cerebras.d.ts +25 -0
  3. package/dist/adapters/cerebras.d.ts.map +1 -0
  4. package/dist/adapters/cerebras.js +79 -0
  5. package/dist/adapters/cerebras.js.map +1 -0
  6. package/dist/clearing.d.ts +15 -3
  7. package/dist/clearing.d.ts.map +1 -1
  8. package/dist/clearing.js +42 -10
  9. package/dist/clearing.js.map +1 -1
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +54 -2
  12. package/dist/config.js.map +1 -1
  13. package/dist/demo.d.ts.map +1 -1
  14. package/dist/demo.js +6 -2
  15. package/dist/demo.js.map +1 -1
  16. package/dist/doctor.d.ts.map +1 -1
  17. package/dist/doctor.js +20 -0
  18. package/dist/doctor.js.map +1 -1
  19. package/dist/exporters/evidence.d.ts +59 -0
  20. package/dist/exporters/evidence.d.ts.map +1 -0
  21. package/dist/exporters/evidence.js +148 -0
  22. package/dist/exporters/evidence.js.map +1 -0
  23. package/dist/index.d.ts +10 -5
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +6 -4
  26. package/dist/index.js.map +1 -1
  27. package/dist/merkle.d.ts +15 -0
  28. package/dist/merkle.d.ts.map +1 -1
  29. package/dist/merkle.js +24 -0
  30. package/dist/merkle.js.map +1 -1
  31. package/dist/schema.d.ts.map +1 -1
  32. package/dist/schema.js +60 -4
  33. package/dist/schema.js.map +1 -1
  34. package/dist/sentinel-client.d.ts +90 -0
  35. package/dist/sentinel-client.d.ts.map +1 -0
  36. package/dist/sentinel-client.js +179 -0
  37. package/dist/sentinel-client.js.map +1 -0
  38. package/dist/signing.d.ts +31 -6
  39. package/dist/signing.d.ts.map +1 -1
  40. package/dist/signing.js +105 -12
  41. package/dist/signing.js.map +1 -1
  42. package/dist/types.d.ts +25 -0
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/types.js +15 -0
  45. package/dist/types.js.map +1 -1
  46. package/dist/wal.d.ts +1 -1
  47. package/dist/wal.js +1 -1
  48. package/dist/witness.d.ts +117 -0
  49. package/dist/witness.d.ts.map +1 -1
  50. package/dist/witness.js +334 -9
  51. package/dist/witness.js.map +1 -1
  52. package/package.json +3 -2
  53. package/templates/autonomous-systems.yaml +70 -0
  54. package/templates/content-platform.yaml +68 -0
  55. package/templates/defense-govcon.yaml +77 -0
  56. package/templates/fintech-model-risk.yaml +69 -0
  57. package/templates/github-action.yml +44 -0
  58. package/templates/healthcare-clinical.yaml +67 -0
  59. package/templates/insurance-underwriting.yaml +68 -0
  60. package/templates/telecom-compliance.yaml +72 -0
package/README.md CHANGED
@@ -13,6 +13,20 @@ 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.4
17
+
18
+ - **ML-DSA-65 (FIPS 204) post-quantum signing** -- Optional alongside HMAC-SHA256. Configure via `signingAlgorithm: "ml-dsa-65"` in constructor or `signing_algorithm: "ml-dsa-65"` in .swt3.yaml. Cross-language parity (same seed produces same keys in Python, TypeScript). `npm install @noble/post-quantum`
19
+ - **Self-hosted deployment** -- [SWT3 Gateway](#self-hosted-deployment) (Go reverse proxy, zero-latency, Helm chart) and full platform container (UBI 9, Iron Bank compatible, air-gap export). Deploy everything inside your VPC.
20
+ - **Chain Enforcer** -- 5-layer policy witnessing: tool blocklist/allowlist, velocity limiting, chain depth, token budgets. Every policy violation minted as an anchor. [Details](#agent-cost-governance)
21
+ - **Agent Cost Governance** -- per-session token budgets with `max_tokens_per_session`. Halt and record on exceeded. `cost-conscious` profile ships built-in. [Details](#agent-cost-governance)
22
+ - **Sentinel Client** -- IPC integration with the independent evidence custody daemon. Protected WAL, cross-process budgets, key isolation. Evidence the agent cannot tamper with.
23
+ - **AI-MARK.1** -- Content provenance witnessing (text, image, audio with C2PA/watermark/metadata tagging)
24
+ - **AI-BASE.1** -- Agent behavioral baseline (deviation scoring against established patterns)
25
+ - **AI-LIC.1** -- License provenance witnessing (model, adapter, and data license composition with SPDX)
26
+ - **14 Built-in Profiles** -- 7 framework profiles + 7 industry verticals (fintech, healthcare, insurance, telecom, defense/govcon, content platform, autonomous systems)
27
+ - **NSA MCP Security Mapping** -- [7 of 9 NSA AISC recommendations](https://sovereign.tenova.io/guides/nsa-mcp-security-mapping.html) addressed at the SDK layer (CSI U/OO/6030316-26, May 2026)
28
+ - **65 procedures**, 41 namespaces, 207 cross-language test vectors
29
+
16
30
  ## MCP Server -- Official Registry
17
31
 
18
32
  `@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.
@@ -487,7 +501,7 @@ Supports single files or chains (`extends: [base.yaml, team.yaml]`). Merge order
487
501
 
488
502
  ### Built-in Profiles
489
503
 
490
- Seven profiles ship with the SDK:
504
+ 14 profiles ship with the SDK -- 7 framework profiles and 7 industry verticals:
491
505
 
492
506
  | Profile | Use Case |
493
507
  |---------|----------|
@@ -498,6 +512,13 @@ Seven profiles ship with the SDK:
498
512
  | `mythos-defense` | Exploit chain containment: clearing 3, strict trust, depth 5 |
499
513
  | `granite-sovereign` | IBM Granite on-prem: air-gap ready, hardware attestation |
500
514
  | `minimal` | Development: clearing 0, no policy enforcement |
515
+ | `fintech-model-risk` | SR 11-7 model risk: drift monitoring, clearing 2, signing required |
516
+ | `healthcare-clinical` | HIPAA clinical AI: consent witnessing, clearing 3, PII protection |
517
+ | `insurance-underwriting` | Underwriting AI: fairness, explainability, DPIA, clearing 2 |
518
+ | `telecom-compliance` | Telecom fraud/network AI: performance monitoring, incident response |
519
+ | `defense-govcon` | CMMC/RMF: clearing 3, strict chain enforcement, SBOM required |
520
+ | `content-platform` | Content moderation: watermark verification, transparency, consent |
521
+ | `autonomous-systems` | Autonomous/robotics: safety, robustness, dual-use, human oversight |
501
522
 
502
523
  ### Diagnostics
503
524
 
@@ -667,7 +688,7 @@ Each inference produces anchors for these checks. Every check maps to a regulati
667
688
 
668
689
  ### EU AI Act Article Mapping
669
690
 
670
- All 47 SWT3 AI witnessing procedures map to specific EU AI Act obligations:
691
+ All 65 SWT3 AI witnessing procedures map to specific EU AI Act obligations:
671
692
 
672
693
  | Procedure | EU AI Act Article | Obligation | Demo | Production |
673
694
  |-----------|-------------------|------------|------|------------|
@@ -684,7 +705,7 @@ All 47 SWT3 AI witnessing procedures map to specific EU AI Act obligations:
684
705
  | AI-EXPL.1 | Art. 13(1) | Transparency & Explainability | -| ✓ |
685
706
  | AI-EXPL.2 | Art. 13(3b) | Confidence Calibration | -| ✓ |
686
707
 
687
- The demo demonstrates 5 procedures using simulated data. All 47 are available in production with real inference data. 40 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)
708
+ 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
709
 
689
710
  ## How Verdicts Work
690
711
 
@@ -734,6 +755,58 @@ echo -n "WITNESS:DEMO_TENANT:AI-INF.1:1:1:0:1774800000000" | sha256sum | cut -c1
734
755
 
735
756
  No SDK needed. Works on any machine, any language.
736
757
 
758
+ ## Self-Hosted Deployment
759
+
760
+ Run the full stack inside your own infrastructure. No data leaves your network boundary.
761
+
762
+ ### SWT3 Gateway (LLM Proxy)
763
+
764
+ 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:
765
+
766
+ ```bash
767
+ docker run -d \
768
+ -e SWT3_API_KEY=axm_live_your_key \
769
+ -e SWT3_TENANT_ID=YOUR_ENCLAVE \
770
+ -e SWT3_UPSTREAM=https://api.openai.com \
771
+ -p 8443:8443 \
772
+ tenova/swt3-gateway:latest
773
+ ```
774
+
775
+ ```typescript
776
+ // One line change. Everything else stays the same.
777
+ const client = new OpenAI({ baseURL: "http://gateway:8443/v1" });
778
+ ```
779
+
780
+ Multi-provider routing, model allowlist (advisory or strict), streaming support, HMAC payload signing. Helm chart included for Kubernetes.
781
+
782
+ [Gateway Documentation](https://github.com/tenova-labs/swt3-ai/tree/main/packages/swt3-gateway)
783
+
784
+ ### Axiom Sovereign Engine (Full Platform)
785
+
786
+ The complete compliance platform as a container: dashboard, adjudicator, evidence chain, Merkle rollups.
787
+
788
+ ```bash
789
+ # Three-service deployment (dashboard + adjudicator + postgres)
790
+ docker compose up -d
791
+
792
+ # Air-gap export for disconnected environments
793
+ docker save axiom-sovereign-engine:latest | gzip > axiom-sovereign.tar.gz
794
+ ```
795
+
796
+ - UBI 9 Minimal base (Iron Bank compatible, DoD IL2-IL5)
797
+ - Non-root runtime, FIPS-validated OpenSSL 3.x
798
+ - Works air-gapped: `docker load` on the target, no internet required
799
+ - Helm chart for Kubernetes orchestration
800
+
801
+ ### Deployment Options
802
+
803
+ | Mode | What You Run | Data Residency |
804
+ |------|-------------|----------------|
805
+ | **SDK only** | `npm install @tenova/swt3-ai` | Hashes leave, data stays |
806
+ | **Gateway** | Docker container in your VPC | Raw traffic never leaves your network |
807
+ | **Self-hosted platform** | Docker Compose or Helm | Everything on your infrastructure |
808
+ | **Air-gapped** | `docker load` from tarball | Zero internet connectivity required |
809
+
737
810
  ## Sovereign Cloud Support
738
811
 
739
812
  The SDK works with any OpenAI-compatible endpoint. Run models on your own infrastructure and witness every inference identically:
@@ -843,7 +916,8 @@ const witness = new Witness({
843
916
  | `maxRetries` | 3 | Retries before dead-letter |
844
917
  | `guardrailNames` | [] | Active guardrail names |
845
918
  | `agentId` | - | Agent identity (survives all clearing levels) |
846
- | `signingKey` | - | HMAC-SHA256 key for payload signing (register server-side for validation) |
919
+ | `signingKey` | - | Signing key for payload non-repudiation (HMAC-SHA256 secret or ML-DSA-65 hex seed) |
920
+ | `signingAlgorithm` | - | `"hmac-sha256"` (default) or `"ml-dsa-65"` (FIPS 204 post-quantum) |
847
921
  | `cycleId` | - | Multi-agent chain link (survives all clearing levels) |
848
922
  | `policyVersion` | - | Policy config identifier (hashed in payloads) |
849
923
  | `strict` | false | Gatekeeper mode: block inference if guardrails insufficient |
@@ -955,7 +1029,6 @@ Your prompts and responses **never leave your infrastructure**. The SDK computes
955
1029
  - [Design Rationale](https://sovereign.tenova.io/guides/swt3-design-rationale.html) -- why every protocol decision was made
956
1030
  - [UCT Registry](https://sovereign.tenova.io/registry) -- full procedure catalog with factor definitions
957
1031
  - [Anchor Verifier](https://sovereign.tenova.io/verify) -- verify any anchor, zero server calls
958
- - [EU AI Act Regulatory Architecture](https://sovereign.tenova.io/guides/futurium-submission.html) -- VI+CJT+ALF+LAVR framework mapping for conformity assessment bodies
959
1032
  - [Five Eyes Agentic AI Overlay](https://sovereign.tenova.io/guides/five-eyes-overlay.html) -- CISA/NSA guidance mapped to SWT3 procedures
960
1033
  - [CMMC Compliance Overlay](https://sovereign.tenova.io/guides/cmmc-overlay.html) -- clearing levels mapped to CMMC and NIST 800-171
961
1034
  - [SR 11-7 Model Risk Overlay](https://sovereign.tenova.io/guides/sr-11-7-overlay.html) -- clearing levels mapped to SR 11-7 requirements
@@ -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":"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"}
@@ -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
@@ -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,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"}
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
- payload.payload_signature = signPayload(signingKey, fingerprint, agentId);
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
@@ -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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"}
@@ -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;AAuMpB,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;AA6MD,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,CAiG1D"}
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,