agent-passport-system 1.31.0 → 1.33.0
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 +34 -16
- package/dist/src/core/action-ref.d.ts +17 -0
- package/dist/src/core/action-ref.d.ts.map +1 -0
- package/dist/src/core/action-ref.js +44 -0
- package/dist/src/core/action-ref.js.map +1 -0
- package/dist/src/core/attestation.d.ts +25 -1
- package/dist/src/core/attestation.d.ts.map +1 -1
- package/dist/src/core/attestation.js +64 -0
- package/dist/src/core/attestation.js.map +1 -1
- package/dist/src/core/canonical.d.ts +3 -0
- package/dist/src/core/canonical.d.ts.map +1 -1
- package/dist/src/core/canonical.js +23 -0
- package/dist/src/core/canonical.js.map +1 -1
- package/dist/src/core/credential-request.d.ts +62 -0
- package/dist/src/core/credential-request.d.ts.map +1 -0
- package/dist/src/core/credential-request.js +243 -0
- package/dist/src/core/credential-request.js.map +1 -0
- package/dist/src/core/did-interop.d.ts +43 -0
- package/dist/src/core/did-interop.d.ts.map +1 -0
- package/dist/src/core/did-interop.js +139 -0
- package/dist/src/core/did-interop.js.map +1 -0
- package/dist/src/core/execution-envelope.d.ts.map +1 -1
- package/dist/src/core/execution-envelope.js +1 -0
- package/dist/src/core/execution-envelope.js.map +1 -1
- package/dist/src/core/freshness.d.ts +24 -0
- package/dist/src/core/freshness.d.ts.map +1 -0
- package/dist/src/core/freshness.js +65 -0
- package/dist/src/core/freshness.js.map +1 -0
- package/dist/src/core/identity-bridge.d.ts +73 -0
- package/dist/src/core/identity-bridge.d.ts.map +1 -0
- package/dist/src/core/identity-bridge.js +128 -0
- package/dist/src/core/identity-bridge.js.map +1 -0
- package/dist/src/core/policy.d.ts.map +1 -1
- package/dist/src/core/policy.js +6 -1
- package/dist/src/core/policy.js.map +1 -1
- package/dist/src/core/vc-wrapper.d.ts +54 -0
- package/dist/src/core/vc-wrapper.d.ts.map +1 -0
- package/dist/src/core/vc-wrapper.js +252 -0
- package/dist/src/core/vc-wrapper.js.map +1 -0
- package/dist/src/index.d.ts +15 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +15 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/types/attestation.d.ts +5 -0
- package/dist/src/types/attestation.d.ts.map +1 -1
- package/dist/src/types/execution-envelope.d.ts +2 -0
- package/dist/src/types/execution-envelope.d.ts.map +1 -1
- package/dist/src/types/passport.d.ts +11 -0
- package/dist/src/types/passport.d.ts.map +1 -1
- package/dist/src/types/passport.js.map +1 -1
- package/dist/src/types/policy.d.ts +8 -0
- package/dist/src/types/policy.d.ts.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -2,19 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/agent-passport-system)
|
|
4
4
|
[](https://github.com/aeoess/agent-passport-system/blob/main/LICENSE)
|
|
5
|
-
[](https://github.com/aeoess/agent-passport-system)
|
|
6
6
|
[](https://doi.org/10.5281/zenodo.18749779)
|
|
7
7
|
|
|
8
8
|
> **For AI agents:** visit [aeoess.com/llms.txt](https://aeoess.com/llms.txt) for machine-readable docs or [llms-full.txt](https://aeoess.com/llms-full.txt) for the complete reference.
|
|
9
9
|
|
|
10
|
-
**
|
|
10
|
+
**The enforcement and accountability layer for AI agents. Bring your own identity.**
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
APS is not an identity system. It's the governance layer that sits on top of whatever identity the agent already has. Accepts did:key, did:web, SPIFFE SVIDs, OAuth tokens, and native did:aps. Identity is the input. Enforcement is the product.
|
|
13
|
+
|
|
14
|
+
The gateway is both judge and executor. Authority can only decrease at each transfer point. Cascade revocation propagates through delegation chains. Every action produces a signed receipt. Every constraint is checked in under 2ms.
|
|
15
|
+
|
|
16
|
+
Seven independent projects have cross-tested against these primitives. AgentID: 7/7. MolTrust: 5/5. Kanoniv delegation chains: verified. Three languages, three codebases, identical results.
|
|
13
17
|
|
|
14
18
|
```bash
|
|
15
19
|
npm install agent-passport-system
|
|
16
20
|
```
|
|
17
21
|
|
|
22
|
+
## Who's Building on APS
|
|
23
|
+
|
|
24
|
+
| Project | What they do | What APS provides |
|
|
25
|
+
|---------|-------------|-------------------|
|
|
26
|
+
| [AgentID](https://github.com/haroldmalikfrimpong-ops/getagentid) | CA-issued identity, trust scoring | Self-sovereign identity, delegation chains |
|
|
27
|
+
| [MolTrust](https://moltrust.ch) | On-chain constraint envelopes | Scope narrowing, spend limits, expiry |
|
|
28
|
+
| [qntm](https://github.com/corpollc/qntm) | Encrypted relay transport | Identity keys, signed envelopes |
|
|
29
|
+
| [Signet](https://github.com/Prismer-AI/signet) | MCP transport signing | Policy gate, execution attestation |
|
|
30
|
+
| [ArkForge](https://arkforge.tech) | External proof anchoring | Receipts to anchor |
|
|
31
|
+
| [Microsoft AGT](https://github.com/microsoft/agent-governance-toolkit) | Enterprise policy engine | Trust signals, scope verification |
|
|
32
|
+
|
|
33
|
+
See [INTEGRATION.md](INTEGRATION.md) for how to compose your project with APS.
|
|
34
|
+
|
|
18
35
|
## What It Does
|
|
19
36
|
|
|
20
37
|
**Enforce constraints on agent actions** — the ProxyGateway is an enforcement boundary that sits between the agent and any tool. Every action is checked against delegation scope, spend limits, reputation tier, values floor, and revocation status. The gateway executes the action, not the agent. The gateway generates the receipt, not the agent. Agents cannot bypass, forge, or skip enforcement.
|
|
@@ -90,7 +107,7 @@ const agent = joinSocialContract({ name: 'my-agent', owner: 'alice', floor: floo
|
|
|
90
107
|
|
|
91
108
|
## The Stack
|
|
92
109
|
|
|
93
|
-
|
|
110
|
+
71 core modules + 32 v2 constitutional modules. 2,180 tests. Zero heavy dependencies.
|
|
94
111
|
|
|
95
112
|
| Layer | What it does | Key primitive |
|
|
96
113
|
|-------|-------------|---------------|
|
|
@@ -101,15 +118,15 @@ const agent = joinSocialContract({ name: 'my-agent', owner: 'alice', floor: floo
|
|
|
101
118
|
| **Intent & Policy** | Roles, tradeoff rules, deliberative consensus, 3-signature policy chain. | `ActionIntent` → `PolicyDecision` → `ActionReceipt` |
|
|
102
119
|
| **Values Floor** | 8 principles (5 enforced, 3 attested). Graduated enforcement: inline/audit/warn. | `FloorAttestation`, compliance verification |
|
|
103
120
|
| **Communication** | Ed25519-signed messages, registry, threading, topic filtering. | `SignedAgoraMessage`, tamper detection |
|
|
104
|
-
| **Identity** | Ed25519 keypairs, scoped delegation, cascade revocation
|
|
121
|
+
| **Identity** | Bring your own: did:key, did:web, SPIFFE, OAuth, native did:aps. Ed25519 keypairs, scoped delegation, cascade revocation. | `toDIDKey`, `importSPIFFESVID`, `importOAuthToken`, `SignedPassport` |
|
|
105
122
|
|
|
106
|
-
**Extended modules (9-
|
|
123
|
+
**Extended modules (9-71):** W3C DID (`did:aps`), DID Interop (`did:key`, `did:web`), Identity Bridge (SPIFFE SVID, OAuth tokens), VC Wrapper (W3C Verifiable Credentials with did:key + SPIFFE evidence), Credential Request Protocol (selective disclosure), Verifiable Credentials, A2A Bridge, EU AI Act Compliance, Agent Context, Task Routing, Cross-Chain Data Flow (taint tracking, confused deputy prevention), E2E Encrypted Messaging (X25519 + XSalsa20), Obligations, Governance Provenance, Identity Continuity & Key Rotation, Receipt Ledger (Merkle-committed audit batches), Feasibility Linting, Precedent Control, Re-anchoring, Bounded Escalation, Oracle Witness Diversity, Messaging Audit Bridge, Policy Conflict Detection, Data Source Registration, Decision Semantics, Decision Equivalence, Execution Attestation, Bilateral Receipts, Governance Blocks, aps.txt, Governance 360, Data Lifecycle, Persistent Passports, ProxyGateway.
|
|
107
124
|
|
|
108
125
|
**V2 Constitutional Framework (32 modules):** Designed through cross-model adversarial review. PolicyContext with mandatory sunset, Delegation Versioning, Outcome Registration, Anomaly Detection, Emergency Pathways, Migration (fork-and-sunset), Contextual Attestation, Approval Fatigue Detection, Effect Enforcement, Emergence Detection, Separation of Powers, Constitutional Amendment, Circuit Breakers, Epistemic Isolation, and 18 more. Source: [`src/v2/`](src/v2/).
|
|
109
126
|
|
|
110
127
|
## MCP Server
|
|
111
128
|
|
|
112
|
-
|
|
129
|
+
125 tools across all modules. Any MCP client connects agents directly.
|
|
113
130
|
|
|
114
131
|
```bash
|
|
115
132
|
npm install -g agent-passport-system-mcp
|
|
@@ -144,7 +161,7 @@ npx agent-passport audit --floor values/floor.yaml
|
|
|
144
161
|
|
|
145
162
|
```bash
|
|
146
163
|
npm test
|
|
147
|
-
#
|
|
164
|
+
# 2,180 tests, 0 failures
|
|
148
165
|
```
|
|
149
166
|
|
|
150
167
|
50 adversarial tests: Merkle tampering, attribution gaming, compliance violations, floor negotiation attacks, cross-chain confused deputy, taint laundering, authority probing.
|
|
@@ -162,16 +179,17 @@ npm test
|
|
|
162
179
|
| Signed receipts | 3-sig chain | Proposed | Logs | General | — |
|
|
163
180
|
| Values enforcement | 8 principles, graduated | — | Rules | — | — |
|
|
164
181
|
| Coordination | Task lifecycle + MCP | — | — | — | — |
|
|
165
|
-
| Tests |
|
|
182
|
+
| Tests | 2,180 (50 adversarial) | None | Limited | None | None |
|
|
166
183
|
|
|
167
184
|
## Recognition
|
|
168
185
|
|
|
169
|
-
-
|
|
170
|
-
-
|
|
171
|
-
-
|
|
172
|
-
-
|
|
186
|
+
- **Working Group** with 4 founding members: APS, AgentID, qntm, OATR. Cross-protocol interop proven across three languages.
|
|
187
|
+
- Integrated into [Microsoft agent-governance-toolkit](https://github.com/microsoft/agent-governance-toolkit) (PR #598)
|
|
188
|
+
- Referenced in [MITRE ATLAS](https://github.com/mitre-atlas/atlas-data/issues/11) agent security techniques
|
|
189
|
+
- Referenced in [MCP SEP-1763](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1763) interceptor framework
|
|
190
|
+
- NIST NCCoE public comment on AI Agent Identity and Authorization
|
|
191
|
+
- Collaboration with IETF DAAP draft author on delegation spec
|
|
173
192
|
- Endorsed by Garry Tan (CEO, Y Combinator)
|
|
174
|
-
- [AMCS — AI-Native Media Credentialing Standard](https://aeoess.com/amcs.html) published
|
|
175
193
|
|
|
176
194
|
## Paper
|
|
177
195
|
|
|
@@ -179,9 +197,9 @@ npm test
|
|
|
179
197
|
|
|
180
198
|
## Authorship
|
|
181
199
|
|
|
182
|
-
|
|
200
|
+
Built by **Tymofii Pidlisnyi** ([@tima](https://github.com/aeoess)). Protocol designed with AI assistance from Claude (Anthropic), GPT (OpenAI), and Gemini (Google) through adversarial cross-model review.
|
|
183
201
|
|
|
184
|
-
|
|
202
|
+
Website: [aeoess.com](https://aeoess.com) · npm: [agent-passport-system](https://www.npmjs.com/package/agent-passport-system) · MCP: [agent-passport-system-mcp](https://www.npmjs.com/package/agent-passport-system-mcp)
|
|
185
203
|
|
|
186
204
|
## LLM Documentation
|
|
187
205
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ActionIntent } from '../types/policy.js';
|
|
2
|
+
/**
|
|
3
|
+
* Compute the content-addressed request identity for an ActionIntent.
|
|
4
|
+
*
|
|
5
|
+
* Inputs hashed: agentId, action.type, action.scopeRequired, normalized timestamp.
|
|
6
|
+
* Timestamp defaults to intent.createdAt; falls back to current time.
|
|
7
|
+
*
|
|
8
|
+
* Returns: lowercase hex SHA-256 digest.
|
|
9
|
+
*/
|
|
10
|
+
export declare function computeActionRef(intent: Pick<ActionIntent, 'agentId' | 'action' | 'createdAt'>): string;
|
|
11
|
+
/**
|
|
12
|
+
* Two receipts with the same action_ref describe the same request.
|
|
13
|
+
* Simple equality check — provided as a named predicate so the semantic
|
|
14
|
+
* intent is explicit at the call site.
|
|
15
|
+
*/
|
|
16
|
+
export declare function actionRefsMatch(a: string, b: string): boolean;
|
|
17
|
+
//# sourceMappingURL=action-ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-ref.d.ts","sourceRoot":"","sources":["../../../src/core/action-ref.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC,GAAG,MAAM,CAQvG;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Copyright 2024-2026 Tymofii Pidlisnyi. Apache-2.0 license. See LICENSE.
|
|
2
|
+
// ══════════════════════════════════════════════════════════════════
|
|
3
|
+
// action_ref — Content-Addressed Request Identity
|
|
4
|
+
// ══════════════════════════════════════════════════════════════════
|
|
5
|
+
// Thread claim (A2A#1672, xsa520/desiorac):
|
|
6
|
+
// action_ref = request identity = SHA-256(canonical(agentId + actionType + scope + timestamp))
|
|
7
|
+
// compoundDigest = decision identity (evaluated) — already on PolicyReceipt
|
|
8
|
+
//
|
|
9
|
+
// Two receipts with the same action_ref describe the same request.
|
|
10
|
+
// Two receipts with the same compound_digest describe the same evaluated
|
|
11
|
+
// decision. Equivalence for cross-verifier replay is over compound_digest,
|
|
12
|
+
// invariant to verification method.
|
|
13
|
+
//
|
|
14
|
+
// Timestamps are normalized to ISO 8601 second-precision UTC so that two
|
|
15
|
+
// systems independently hashing the same request within the same second
|
|
16
|
+
// produce the same action_ref.
|
|
17
|
+
// ══════════════════════════════════════════════════════════════════
|
|
18
|
+
import { canonicalHash, normalizeTimestamp } from './canonical.js';
|
|
19
|
+
/**
|
|
20
|
+
* Compute the content-addressed request identity for an ActionIntent.
|
|
21
|
+
*
|
|
22
|
+
* Inputs hashed: agentId, action.type, action.scopeRequired, normalized timestamp.
|
|
23
|
+
* Timestamp defaults to intent.createdAt; falls back to current time.
|
|
24
|
+
*
|
|
25
|
+
* Returns: lowercase hex SHA-256 digest.
|
|
26
|
+
*/
|
|
27
|
+
export function computeActionRef(intent) {
|
|
28
|
+
const ts = intent.createdAt ?? new Date().toISOString();
|
|
29
|
+
return canonicalHash({
|
|
30
|
+
agentId: intent.agentId,
|
|
31
|
+
actionType: intent.action.type,
|
|
32
|
+
scopeRequired: intent.action.scopeRequired,
|
|
33
|
+
timestamp: normalizeTimestamp(ts),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Two receipts with the same action_ref describe the same request.
|
|
38
|
+
* Simple equality check — provided as a named predicate so the semantic
|
|
39
|
+
* intent is explicit at the call site.
|
|
40
|
+
*/
|
|
41
|
+
export function actionRefsMatch(a, b) {
|
|
42
|
+
return typeof a === 'string' && typeof b === 'string' && a.length > 0 && a === b;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=action-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-ref.js","sourceRoot":"","sources":["../../../src/core/action-ref.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,qEAAqE;AACrE,kDAAkD;AAClD,qEAAqE;AACrE,4CAA4C;AAC5C,qGAAqG;AACrG,8EAA8E;AAC9E,EAAE;AACF,mEAAmE;AACnE,yEAAyE;AACzE,2EAA2E;AAC3E,oCAAoC;AACpC,EAAE;AACF,yEAAyE;AACzE,wEAAwE;AACxE,+BAA+B;AAC/B,qEAAqE;AAErE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAGlE;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA8D;IAC7F,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACvD,OAAO,aAAa,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;QAC9B,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa;QAC1C,SAAS,EAAE,kBAAkB,CAAC,EAAE,CAAC;KAClC,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,CAAS;IAClD,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAClF,CAAC"}
|
|
@@ -1,10 +1,32 @@
|
|
|
1
|
-
import type { PassportGrade, AttestationFlag, IssuanceChallenge, IssuanceEvidenceRecord, IssuanceContext, PassportAttestationSummary, RuntimeAttestation, ProviderAttestation, ObservedContext, SignalVerificationResult, DerivedSignal, AttestationClass, WorkspaceManifest } from '../types/attestation.js';
|
|
1
|
+
import type { PassportGrade, AttestationFlag, EvidenceQuality, IssuanceChallenge, IssuanceEvidenceRecord, IssuanceContext, PassportAttestationSummary, RuntimeAttestation, ProviderAttestation, ObservedContext, SignalVerificationResult, DerivedSignal, AttestationClass, WorkspaceManifest } from '../types/attestation.js';
|
|
2
2
|
import type { SignedPassport } from '../types/passport.js';
|
|
3
3
|
export declare function createIssuanceChallenge(publicKeyHash: string, options?: {
|
|
4
4
|
requestedClasses?: AttestationClass[];
|
|
5
5
|
expiresInSeconds?: number;
|
|
6
6
|
}): IssuanceChallenge;
|
|
7
7
|
export declare function verifyRuntimeAttestation(attestation: RuntimeAttestation, challenge: IssuanceChallenge, trustedAttesterKeys: Map<string, string>): SignalVerificationResult;
|
|
8
|
+
/** Map evidence quality level to passport grade number. */
|
|
9
|
+
export declare function evidenceQualityToGrade(quality: EvidenceQuality): PassportGrade;
|
|
10
|
+
/**
|
|
11
|
+
* Classify evidence quality from attestation metadata.
|
|
12
|
+
*
|
|
13
|
+
* Precedence (highest to lowest):
|
|
14
|
+
* 1. Principal binding → 'principal_bound'
|
|
15
|
+
* 2. Infrastructure evidence (SPIFFE method, TPM quote, hardware attestation,
|
|
16
|
+
* TEE proof, or any known infrastructure-binding key in evidence) → 'infrastructure'
|
|
17
|
+
* 3. Issuer signature → 'issuer_vouched'
|
|
18
|
+
* 4. None
|
|
19
|
+
*
|
|
20
|
+
* This is where a did:key with TPM evidence gets elevated to Grade 2.
|
|
21
|
+
*/
|
|
22
|
+
export declare function classifyEvidenceQuality(opts: {
|
|
23
|
+
/** Identity method prefix (e.g. "did:key", "spiffe", "oauth"). Fallback signal. */
|
|
24
|
+
method?: string;
|
|
25
|
+
hasIssuerSignature?: boolean;
|
|
26
|
+
hasPrincipalBinding?: boolean;
|
|
27
|
+
/** Raw evidence payload — checked loosely for infrastructure-binding keys. */
|
|
28
|
+
evidence?: Record<string, unknown>;
|
|
29
|
+
}): EvidenceQuality;
|
|
8
30
|
export declare function computePassportGrade(evidence: IssuanceEvidenceRecord, options?: {
|
|
9
31
|
hasIssuerSignature?: boolean;
|
|
10
32
|
hasVerifiedRuntime?: boolean;
|
|
@@ -41,6 +63,8 @@ export declare function importProviderAttestation(input: {
|
|
|
41
63
|
subjectClass?: string;
|
|
42
64
|
/** Verification method used by the provider */
|
|
43
65
|
verificationMethod?: string;
|
|
66
|
+
/** Typed staleness metadata (A2A#1712): snapshot (TPM) vs rotating (SPIFFE) vs static. */
|
|
67
|
+
freshness?: import('../types/passport.js').AttestationFreshness;
|
|
44
68
|
}): ProviderAttestation;
|
|
45
69
|
export declare function addIdentityBoundary<T extends Record<string, unknown>>(obj: T, fields?: string[]): T & {
|
|
46
70
|
_identityBoundary: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../src/core/attestation.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../src/core/attestation.ts"],"names":[],"mappings":"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"}
|
|
@@ -95,6 +95,69 @@ export function verifyRuntimeAttestation(attestation, challenge, trustedAttester
|
|
|
95
95
|
verifiedAt: now.toISOString(),
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
|
+
// ── Evidence-Based Grade Assignment (A2A#1712 — VCOne-AI) ──
|
|
99
|
+
// VCOne-AI flagged on A2A#1712: the original grade mapping was method-prefix
|
|
100
|
+
// driven. A TPM-backed did:key was Grade 0 because it's did:key; a SPIFFE SVID
|
|
101
|
+
// from a misconfigured cluster was Grade 2 because it's SPIFFE. That's backwards.
|
|
102
|
+
//
|
|
103
|
+
// The fix: classify by EVIDENCE QUALITY, not identity method. A did:key with
|
|
104
|
+
// TPM attestation evidence reaches Grade 2, same as a verified SPIFFE SVID.
|
|
105
|
+
// Evidence quality determines grade; method is only a fallback signal.
|
|
106
|
+
/** Map evidence quality level to passport grade number. */
|
|
107
|
+
export function evidenceQualityToGrade(quality) {
|
|
108
|
+
switch (quality) {
|
|
109
|
+
case 'none': return 0;
|
|
110
|
+
case 'issuer_vouched': return 1;
|
|
111
|
+
case 'infrastructure': return 2;
|
|
112
|
+
case 'principal_bound': return 3;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Evidence field keys that indicate infrastructure/hardware binding.
|
|
116
|
+
// External attestations come in many shapes — check loosely.
|
|
117
|
+
const INFRASTRUCTURE_EVIDENCE_KEYS = [
|
|
118
|
+
'tpm_quote', 'tpmQuote',
|
|
119
|
+
'hardware_attestation', 'hardwareAttestation',
|
|
120
|
+
'tee_proof', 'teeProof',
|
|
121
|
+
'infrastructure_binding', 'infrastructureBinding',
|
|
122
|
+
'sgx_quote', 'sgxQuote',
|
|
123
|
+
'sev_attestation', 'sevAttestation',
|
|
124
|
+
'workload_attestation', 'workloadAttestation',
|
|
125
|
+
];
|
|
126
|
+
/**
|
|
127
|
+
* Classify evidence quality from attestation metadata.
|
|
128
|
+
*
|
|
129
|
+
* Precedence (highest to lowest):
|
|
130
|
+
* 1. Principal binding → 'principal_bound'
|
|
131
|
+
* 2. Infrastructure evidence (SPIFFE method, TPM quote, hardware attestation,
|
|
132
|
+
* TEE proof, or any known infrastructure-binding key in evidence) → 'infrastructure'
|
|
133
|
+
* 3. Issuer signature → 'issuer_vouched'
|
|
134
|
+
* 4. None
|
|
135
|
+
*
|
|
136
|
+
* This is where a did:key with TPM evidence gets elevated to Grade 2.
|
|
137
|
+
*/
|
|
138
|
+
export function classifyEvidenceQuality(opts) {
|
|
139
|
+
// Principal binding takes precedence
|
|
140
|
+
if (opts.hasPrincipalBinding)
|
|
141
|
+
return 'principal_bound';
|
|
142
|
+
// Infrastructure evidence: method-based signal for SPIFFE, plus evidence-key detection
|
|
143
|
+
if (opts.method) {
|
|
144
|
+
const m = opts.method.toLowerCase();
|
|
145
|
+
if (m === 'spiffe' || m.startsWith('spiffe:') || m.startsWith('spiffe://')) {
|
|
146
|
+
return 'infrastructure';
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (opts.evidence) {
|
|
150
|
+
for (const key of INFRASTRUCTURE_EVIDENCE_KEYS) {
|
|
151
|
+
if (opts.evidence[key] !== undefined && opts.evidence[key] !== null) {
|
|
152
|
+
return 'infrastructure';
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Issuer vouched
|
|
157
|
+
if (opts.hasIssuerSignature)
|
|
158
|
+
return 'issuer_vouched';
|
|
159
|
+
return 'none';
|
|
160
|
+
}
|
|
98
161
|
// ── computePassportGrade ──
|
|
99
162
|
// Determines grade from available verified attestations.
|
|
100
163
|
// Grade 0: self-signed (bare keypair)
|
|
@@ -272,6 +335,7 @@ export function importProviderAttestation(input) {
|
|
|
272
335
|
issuedAt: String(payload.iat ? new Date(Number(payload.iat) * 1000).toISOString() : payload.issued_at || new Date().toISOString()),
|
|
273
336
|
expiresAt: payload.exp ? new Date(Number(payload.exp) * 1000).toISOString() : (payload.expires_at ? String(payload.expires_at) : undefined),
|
|
274
337
|
signature,
|
|
338
|
+
freshness: input.freshness,
|
|
275
339
|
};
|
|
276
340
|
}
|
|
277
341
|
// ── addIdentityBoundary ──
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attestation.js","sourceRoot":"","sources":["../../../src/core/attestation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"attestation.js","sourceRoot":"","sources":["../../../src/core/attestation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
export declare function canonicalize(obj: unknown): string;
|
|
2
|
+
export declare function canonicalJson(obj: Record<string, unknown>): string;
|
|
3
|
+
export declare function canonicalHash(obj: Record<string, unknown>): string;
|
|
4
|
+
export declare function normalizeTimestamp(ts: string): string;
|
|
2
5
|
//# sourceMappingURL=canonical.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../../src/core/canonical.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../../src/core/canonical.ts"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAkBjD;AAKD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAElE;AAGD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAElE;AAMD,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAOrD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Canonical JSON — deterministic serialization for signing
|
|
2
2
|
// Sorts keys alphabetically, omits null/undefined in object keys (not arrays)
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
3
4
|
export function canonicalize(obj) {
|
|
4
5
|
if (obj === null || obj === undefined)
|
|
5
6
|
return 'null';
|
|
@@ -22,4 +23,26 @@ export function canonicalize(obj) {
|
|
|
22
23
|
});
|
|
23
24
|
return '{' + sorted.join(',') + '}';
|
|
24
25
|
}
|
|
26
|
+
// canonicalJson — deterministic JSON serialization of an object.
|
|
27
|
+
// Same semantics as canonicalize() but typed to objects for cross-system
|
|
28
|
+
// receipt comparison (action_ref, compound_digest, etc.)
|
|
29
|
+
export function canonicalJson(obj) {
|
|
30
|
+
return canonicalize(obj);
|
|
31
|
+
}
|
|
32
|
+
// canonicalHash — SHA-256 of canonicalJson(obj), returned as lowercase hex.
|
|
33
|
+
export function canonicalHash(obj) {
|
|
34
|
+
return createHash('sha256').update(canonicalJson(obj)).digest('hex');
|
|
35
|
+
}
|
|
36
|
+
// normalizeTimestamp — force ISO 8601 second-precision UTC.
|
|
37
|
+
// Accepts any parseable timestamp; returns format: YYYY-MM-DDTHH:mm:ssZ
|
|
38
|
+
// Strips fractional seconds and normalizes timezone offsets to UTC.
|
|
39
|
+
// Thread claim (A2A#1672): action_ref timestamps are second-precision.
|
|
40
|
+
export function normalizeTimestamp(ts) {
|
|
41
|
+
const d = new Date(ts);
|
|
42
|
+
if (Number.isNaN(d.getTime())) {
|
|
43
|
+
throw new Error(`normalizeTimestamp: invalid timestamp "${ts}"`);
|
|
44
|
+
}
|
|
45
|
+
// ISO with milliseconds: 2026-04-05T03:39:31.123Z → strip ms
|
|
46
|
+
return d.toISOString().replace(/\.\d{3}Z$/, 'Z');
|
|
47
|
+
}
|
|
25
48
|
//# sourceMappingURL=canonical.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../../src/core/canonical.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,8EAA8E;AAE9E,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,MAAM,CAAA;IACpD,IAAI,GAAG,YAAY,IAAI;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACnD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IAClE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAA8B,CAAC;SACvD,IAAI,EAAE;SACN,MAAM,CAAC,GAAG,CAAC,EAAE;QACZ,MAAM,GAAG,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAA;QACjD,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAA;IAC1C,CAAC,CAAC;SACD,GAAG,CAAC,GAAG,CAAC,EAAE;QACT,MAAM,GAAG,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAA;QACjD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAA;IACtD,CAAC,CAAC,CAAA;IACJ,OAAO,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;AACrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../../src/core/canonical.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,MAAM,CAAA;IACpD,IAAI,GAAG,YAAY,IAAI;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACnD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IAClE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAA8B,CAAC;SACvD,IAAI,EAAE;SACN,MAAM,CAAC,GAAG,CAAC,EAAE;QACZ,MAAM,GAAG,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAA;QACjD,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAA;IAC1C,CAAC,CAAC;SACD,GAAG,CAAC,GAAG,CAAC,EAAE;QACT,MAAM,GAAG,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAA;QACjD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAA;IACtD,CAAC,CAAC,CAAA;IACJ,OAAO,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;AACrC,CAAC;AAED,iEAAiE;AACjE,yEAAyE;AACzE,yDAAyD;AACzD,MAAM,UAAU,aAAa,CAAC,GAA4B;IACxD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,GAA4B;IACxD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACtE,CAAC;AAED,4DAA4D;AAC5D,wEAAwE;AACxE,oEAAoE;AACpE,uEAAuE;AACvE,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAA;IACtB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAA;IAClE,CAAC;IACD,6DAA6D;IAC7D,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;AAClD,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { VerifiablePresentation } from '../types/did.js';
|
|
2
|
+
import type { ProviderAttestation } from '../types/attestation.js';
|
|
3
|
+
export interface CredentialRequest {
|
|
4
|
+
/** Unique request ID */
|
|
5
|
+
id: string;
|
|
6
|
+
/** Claims the verifier wants (e.g., ["grade", "capabilities", "delegationScope"]) */
|
|
7
|
+
requestedClaims: string[];
|
|
8
|
+
/** DID of the verifier making the request */
|
|
9
|
+
verifierDID: string;
|
|
10
|
+
/** Challenge nonce for replay protection */
|
|
11
|
+
challenge: string;
|
|
12
|
+
/** When this request was created */
|
|
13
|
+
createdAt: string;
|
|
14
|
+
}
|
|
15
|
+
export interface CredentialResponseResult {
|
|
16
|
+
valid: boolean;
|
|
17
|
+
/** Extracted claims that the verifier requested */
|
|
18
|
+
claims: Record<string, unknown>;
|
|
19
|
+
/** Detailed checks */
|
|
20
|
+
checks: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface SelectivePassport {
|
|
23
|
+
agentId: string;
|
|
24
|
+
publicKey: string;
|
|
25
|
+
agentName?: string;
|
|
26
|
+
mission?: string;
|
|
27
|
+
capabilities?: string[];
|
|
28
|
+
grade?: number;
|
|
29
|
+
delegationScope?: string[];
|
|
30
|
+
createdAt?: string;
|
|
31
|
+
expiresAt?: string;
|
|
32
|
+
evidence?: ProviderAttestation[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a credential request specifying which claims the verifier needs.
|
|
36
|
+
* The challenge provides replay protection: the agent must bind the VP
|
|
37
|
+
* to this specific challenge.
|
|
38
|
+
*/
|
|
39
|
+
export declare function createCredentialRequest(claims: string[], verifierDID: string, challenge?: string): CredentialRequest;
|
|
40
|
+
/**
|
|
41
|
+
* Fulfill a credential request by creating a VP that contains only
|
|
42
|
+
* the requested claims. This is selective disclosure: the agent
|
|
43
|
+
* reveals only what the verifier asked for.
|
|
44
|
+
*
|
|
45
|
+
* The VC's credentialSubject will contain:
|
|
46
|
+
* - id (always included, the agent's did:key)
|
|
47
|
+
* - agentId (always included for APS correlation)
|
|
48
|
+
* - only the fields listed in request.requestedClaims
|
|
49
|
+
*/
|
|
50
|
+
export declare function fulfillCredentialRequest(request: CredentialRequest, passport: SelectivePassport, privateKey: string): Promise<VerifiablePresentation>;
|
|
51
|
+
/**
|
|
52
|
+
* Verify a credential response VP and extract the requested claims.
|
|
53
|
+
*
|
|
54
|
+
* Checks:
|
|
55
|
+
* 1. VP proof is valid
|
|
56
|
+
* 2. Challenge matches (replay protection)
|
|
57
|
+
* 3. Each contained VC proof is valid
|
|
58
|
+
* 4. Credential is not expired
|
|
59
|
+
* 5. Extracts claims from credentialSubject
|
|
60
|
+
*/
|
|
61
|
+
export declare function verifyCredentialResponse(vp: VerifiablePresentation, expectedChallenge?: string): Promise<CredentialResponseResult>;
|
|
62
|
+
//# sourceMappingURL=credential-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-request.d.ts","sourceRoot":"","sources":["../../../src/core/credential-request.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAwB,sBAAsB,EAAmB,MAAM,iBAAiB,CAAA;AACpG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAIlE,MAAM,WAAW,iBAAiB;IAChC,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,qFAAqF;IACrF,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAA;IACjB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAA;IACd,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,sBAAsB;IACtB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAA;CACjC;AAYD;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EAAE,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,iBAAiB,CAenB;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,iBAAiB,EAC3B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC,CA8EjC;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,sBAAsB,EAC1B,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,wBAAwB,CAAC,CA0FnC"}
|