agent-passport-system 1.30.0 → 1.32.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.
Files changed (40) hide show
  1. package/README.md +34 -16
  2. package/dist/src/core/aps-txt.d.ts +27 -2
  3. package/dist/src/core/aps-txt.d.ts.map +1 -1
  4. package/dist/src/core/aps-txt.js +139 -13
  5. package/dist/src/core/aps-txt.js.map +1 -1
  6. package/dist/src/core/credential-request.d.ts +62 -0
  7. package/dist/src/core/credential-request.d.ts.map +1 -0
  8. package/dist/src/core/credential-request.js +243 -0
  9. package/dist/src/core/credential-request.js.map +1 -0
  10. package/dist/src/core/did-interop.d.ts +43 -0
  11. package/dist/src/core/did-interop.d.ts.map +1 -0
  12. package/dist/src/core/did-interop.js +139 -0
  13. package/dist/src/core/did-interop.js.map +1 -0
  14. package/dist/src/core/governance-block.d.ts +11 -1
  15. package/dist/src/core/governance-block.d.ts.map +1 -1
  16. package/dist/src/core/governance-block.js +16 -2
  17. package/dist/src/core/governance-block.js.map +1 -1
  18. package/dist/src/core/identity-bridge.d.ts +73 -0
  19. package/dist/src/core/identity-bridge.d.ts.map +1 -0
  20. package/dist/src/core/identity-bridge.js +128 -0
  21. package/dist/src/core/identity-bridge.js.map +1 -0
  22. package/dist/src/core/passport.d.ts +6 -1
  23. package/dist/src/core/passport.d.ts.map +1 -1
  24. package/dist/src/core/passport.js +6 -1
  25. package/dist/src/core/passport.js.map +1 -1
  26. package/dist/src/core/vc-wrapper.d.ts +54 -0
  27. package/dist/src/core/vc-wrapper.d.ts.map +1 -0
  28. package/dist/src/core/vc-wrapper.js +252 -0
  29. package/dist/src/core/vc-wrapper.js.map +1 -0
  30. package/dist/src/index.d.ts +12 -5
  31. package/dist/src/index.d.ts.map +1 -1
  32. package/dist/src/index.js +11 -3
  33. package/dist/src/index.js.map +1 -1
  34. package/dist/src/types/passport.d.ts +2 -0
  35. package/dist/src/types/passport.d.ts.map +1 -1
  36. package/dist/src/types/passport.js.map +1 -1
  37. package/dist/src/verification/reputation.d.ts.map +1 -1
  38. package/dist/src/verification/reputation.js +7 -6
  39. package/dist/src/verification/reputation.js.map +1 -1
  40. package/package.json +3 -3
package/README.md CHANGED
@@ -2,19 +2,36 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/agent-passport-system)](https://www.npmjs.com/package/agent-passport-system)
4
4
  [![license](https://img.shields.io/npm/l/agent-passport-system)](https://github.com/aeoess/agent-passport-system/blob/main/LICENSE)
5
- [![tests](https://img.shields.io/badge/tests-1399%20passing-brightgreen)](https://github.com/aeoess/agent-passport-system)
5
+ [![tests](https://img.shields.io/badge/tests-2180%20passing-brightgreen)](https://github.com/aeoess/agent-passport-system)
6
6
  [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.18749779.svg)](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
- **Governance, trust, and enforcement for AI agents. Not just identity.**
10
+ **The enforcement and accountability layer for AI agents. Bring your own identity.**
11
11
 
12
- When an AI agent acts on your behalf, APS answers: what is it allowed to do? How much can it spend? Is it trustworthy? What happens when it violates a constraint? And can you prove all of this cryptographically?
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
- 42 core modules + 32 v2 constitutional modules. 1399 tests. Zero heavy dependencies.
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, key rotation. | `SignedPassport`, `Delegation`, `RevocationRecord` |
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-42):** W3C DID (`did:aps`), 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, ProxyGateway.
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
- 108 tools across all modules. Any MCP client connects agents directly.
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
- # 1399 tests across 71 files, 370 suites, 0 failures
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 | 1399 (50 adversarial) | None | Limited | None | None |
182
+ | Tests | 2,180 (50 adversarial) | None | Limited | None | None |
166
183
 
167
184
  ## Recognition
168
185
 
169
- - Integrated into [Microsoft agent-governance-toolkit](https://github.com/microsoft/agent-governance-toolkit) (PR #274)
170
- - Public comment submitted to NIST NCCoE on AI Agent Identity and Authorization standards
171
- - Collaboration with IETF DAAP draft author (draft-mishra-oauth-agent-grants-01) on delegation spec
172
- - Listed on [MCP Registry](https://registry.modelcontextprotocol.io)
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
- Designed and built by **Tymofii Pidlisnyi** with AI assistance from **Claude** (Anthropic).
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
- Protocol: [aeoess.com/protocol.html](https://aeoess.com/protocol.html) · Agora: [aeoess.com/agora.html](https://aeoess.com/agora.html) · 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)
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
 
@@ -59,10 +59,17 @@ export interface GenerateApsTxtInput {
59
59
  pathOverrides?: PathOverride[];
60
60
  }
61
61
  export declare function generateApsTxt(input: GenerateApsTxtInput): ApsTxt;
62
- export declare function verifyApsTxt(doc: ApsTxt, publicKey: string): {
62
+ export interface VerifyApsTxtOptions {
63
+ /** When true, unsigned or unverifiable aps.txt returns { valid: false, reason: 'UNSIGNED' } */
64
+ strict?: boolean;
65
+ }
66
+ export interface VerifyApsTxtResult {
63
67
  valid: boolean;
64
68
  errors: string[];
65
- };
69
+ /** Set when strict mode rejects an unsigned/unverifiable document */
70
+ reason?: 'UNSIGNED';
71
+ }
72
+ export declare function verifyApsTxt(doc: ApsTxt, publicKey?: string, options?: VerifyApsTxtOptions): VerifyApsTxtResult;
66
73
  /**
67
74
  * Resolve terms for a specific path using aps.txt path overrides.
68
75
  * Falls back to default_terms if no override matches.
@@ -151,4 +158,22 @@ export declare function enforceApsTxt(doc: ApsTxt, path: string, opts?: {
151
158
  /** Publisher's trust score (0-1). If below trustThreshold, warn instead of block */
152
159
  publisherTrustScore?: number;
153
160
  }): ApsTxtEnforcementResult;
161
+ export type ApsTxtRiskLevel = 'low' | 'medium' | 'high';
162
+ export interface ApsTxtRiskResult {
163
+ risk: ApsTxtRiskLevel;
164
+ warnings: string[];
165
+ }
166
+ /**
167
+ * Evaluate the risk level of an aps.txt document.
168
+ * Flags suspicious patterns that may indicate DoS or manipulation.
169
+ *
170
+ * - Blanket block (all usage prohibited for wildcard agents) → high risk
171
+ * - Unsigned restrictive rules → medium risk
172
+ * - Unknown author with restrictive rules → medium risk
173
+ * - Signed, non-restrictive → low risk
174
+ */
175
+ export declare function evaluateApsTxtRisk(doc: ApsTxt, opts?: {
176
+ /** Publisher's public key for signature verification */
177
+ publisherPublicKey?: string;
178
+ }): ApsTxtRiskResult;
154
179
  //# sourceMappingURL=aps-txt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aps-txt.d.ts","sourceRoot":"","sources":["../../../src/core/aps-txt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aps-txt.d.ts","sourceRoot":"","sources":["../../../src/core/aps-txt.ts"],"names":[],"mappings":"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"}
@@ -34,13 +34,25 @@ export function generateApsTxt(input) {
34
34
  const signature = sign(payload, input.privateKey);
35
35
  return { ...doc, signature };
36
36
  }
37
- export function verifyApsTxt(doc, publicKey) {
37
+ export function verifyApsTxt(doc, publicKey, options) {
38
+ const strict = options?.strict ?? false;
39
+ // Strict mode: if no public key provided, reject as unsigned
40
+ if (!publicKey) {
41
+ if (strict) {
42
+ return { valid: false, errors: ['No public key provided for signature verification'], reason: 'UNSIGNED' };
43
+ }
44
+ return { valid: true, errors: [] };
45
+ }
38
46
  const errors = [];
39
47
  const { signature, ...rest } = doc;
40
48
  const payload = canonicalize(rest);
41
49
  const sigValid = verify(payload, signature, publicKey);
42
- if (!sigValid)
50
+ if (!sigValid) {
51
+ if (strict) {
52
+ return { valid: false, errors: ['Signature verification failed'], reason: 'UNSIGNED' };
53
+ }
43
54
  errors.push('Signature verification failed');
55
+ }
44
56
  const expectedDid = createDID(publicKey);
45
57
  if (doc.publisher_did !== expectedDid)
46
58
  errors.push(`DID mismatch: expected ${expectedDid}`);
@@ -68,12 +80,38 @@ export function resolveTermsForPath(doc, path, agentDid) {
68
80
  return doc.default_terms;
69
81
  }
70
82
  function matchGlob(pattern, path) {
71
- // Simple glob: * matches one segment, ** matches multiple segments
72
- const regex = pattern
73
- .replace(/\*\*/g, '§DOUBLESTAR§')
74
- .replace(/\*/g, '[^/]*')
75
- .replace(/§DOUBLESTAR§/g, '.*');
76
- return new RegExp(`^${regex}$`).test(path);
83
+ // Iterative glob match no regex, no ReDoS risk.
84
+ // * matches one path segment, ** matches zero or more segments.
85
+ const patParts = pattern.split('/');
86
+ const pathParts = path.split('/');
87
+ return globPartsMatch(patParts, 0, pathParts, 0);
88
+ }
89
+ function globPartsMatch(pat, pi, path, xi) {
90
+ while (pi < pat.length && xi < path.length) {
91
+ if (pat[pi] === '**') {
92
+ // ** matches zero or more segments — try each possible skip
93
+ // Bounded: at most path.length - xi iterations (linear, not exponential)
94
+ for (let skip = 0; skip <= path.length - xi; skip++) {
95
+ if (globPartsMatch(pat, pi + 1, path, xi + skip))
96
+ return true;
97
+ }
98
+ return false;
99
+ }
100
+ if (pat[pi] === '*') {
101
+ // * matches exactly one segment (any content)
102
+ pi++;
103
+ xi++;
104
+ continue;
105
+ }
106
+ if (pat[pi] !== path[xi])
107
+ return false;
108
+ pi++;
109
+ xi++;
110
+ }
111
+ // Consume trailing ** patterns (they can match zero segments)
112
+ while (pi < pat.length && pat[pi] === '**')
113
+ pi++;
114
+ return pi === pat.length && xi === path.length;
77
115
  }
78
116
  /** Match a DID pattern against an agent's DID.
79
117
  * `did:meeet:*` matches `did:meeet:agent_abc`
@@ -84,11 +122,32 @@ function matchGlob(pattern, path) {
84
122
  function matchDidPattern(pattern, did) {
85
123
  if (pattern === '*' || pattern === 'did:*')
86
124
  return true;
87
- // Convert DID pattern to regex: `did:meeet:*` `^did:meeet:.*$`
88
- const regex = pattern
89
- .replace(/[.+?^${}()|[\]\\]/g, '\\$&') // escape regex chars except *
90
- .replace(/\*/g, '.*');
91
- return new RegExp(`^${regex}$`).test(did);
125
+ // Simple wildcard match without regex split on * and check segments
126
+ const parts = pattern.split('*');
127
+ if (parts.length === 1)
128
+ return pattern === did; // no wildcard, exact match
129
+ // Check: did starts with first part and ends with last part,
130
+ // with all intermediate parts appearing in order
131
+ let pos = 0;
132
+ for (let i = 0; i < parts.length; i++) {
133
+ const part = parts[i];
134
+ if (i === 0) {
135
+ if (!did.startsWith(part))
136
+ return false;
137
+ pos = part.length;
138
+ }
139
+ else if (i === parts.length - 1) {
140
+ if (!did.slice(pos).endsWith(part))
141
+ return false;
142
+ }
143
+ else {
144
+ const idx = did.indexOf(part, pos);
145
+ if (idx === -1)
146
+ return false;
147
+ pos = idx + part.length;
148
+ }
149
+ }
150
+ return true;
92
151
  }
93
152
  /**
94
153
  * Serialize aps.txt to a JSON string ready to serve as a file.
@@ -157,6 +216,7 @@ export function createChainedGovernanceBlock(input) {
157
216
  governance_generated_at: now,
158
217
  terms: input.terms,
159
218
  revocation_policy: input.revocationPolicy || input.parentBlock.revocation_policy,
219
+ ...(input.parentBlock.expires_at ? { expires_at: input.parentBlock.expires_at } : {}),
160
220
  parent_block_hash: parentBlockHash,
161
221
  derivation_type: input.derivationType,
162
222
  derivative_agent_did: derivativeDid,
@@ -237,6 +297,72 @@ export function enforceApsTxt(doc, path, opts = {}) {
237
297
  signatureVerified,
238
298
  };
239
299
  }
300
+ /**
301
+ * Evaluate the risk level of an aps.txt document.
302
+ * Flags suspicious patterns that may indicate DoS or manipulation.
303
+ *
304
+ * - Blanket block (all usage prohibited for wildcard agents) → high risk
305
+ * - Unsigned restrictive rules → medium risk
306
+ * - Unknown author with restrictive rules → medium risk
307
+ * - Signed, non-restrictive → low risk
308
+ */
309
+ export function evaluateApsTxtRisk(doc, opts) {
310
+ const warnings = [];
311
+ let risk = 'low';
312
+ // Check signature status
313
+ let signed = false;
314
+ if (opts?.publisherPublicKey) {
315
+ const verification = verifyApsTxt(doc, opts.publisherPublicKey);
316
+ signed = verification.valid;
317
+ }
318
+ // Check for blanket block on default terms
319
+ const defaultAllDenied = isAllDenied(doc.default_terms);
320
+ if (defaultAllDenied) {
321
+ risk = 'high';
322
+ warnings.push('blanket_block');
323
+ }
324
+ // Check path overrides for wildcard agent blocks
325
+ if (doc.path_overrides) {
326
+ for (const override of doc.path_overrides) {
327
+ const isWildcard = override.user_agent === '*' || override.user_agent === 'did:*';
328
+ const isFullPath = override.pattern === '/*' || override.pattern === '/**' || override.pattern === '/';
329
+ if (isWildcard && isFullPath && isAllDenied(override.terms)) {
330
+ risk = 'high';
331
+ warnings.push('blanket_block');
332
+ break;
333
+ }
334
+ }
335
+ }
336
+ // Unsigned restrictive rules
337
+ if (!signed && (defaultAllDenied || hasRestrictiveOverrides(doc))) {
338
+ if (risk !== 'high')
339
+ risk = 'medium';
340
+ warnings.push('unsigned_restrictive');
341
+ }
342
+ // Unknown author (no publisher name or generic) with restrictive rules
343
+ if ((!doc.publisher_name || doc.publisher_name.trim() === '') && hasAnyRestriction(doc)) {
344
+ if (risk !== 'high')
345
+ risk = 'medium';
346
+ warnings.push('new_author_restrictive');
347
+ }
348
+ return { risk, warnings: [...new Set(warnings)] };
349
+ }
350
+ /** Check if any path override has restrictive terms */
351
+ function hasRestrictiveOverrides(doc) {
352
+ if (!doc.path_overrides)
353
+ return false;
354
+ return doc.path_overrides.some(o => isAllDenied(o.terms));
355
+ }
356
+ /** Check if any terms have at least one prohibited field */
357
+ function hasAnyRestriction(doc) {
358
+ const fields = ['inference', 'training', 'redistribution', 'derivative', 'caching'];
359
+ if (fields.some(f => doc.default_terms[f] === 'prohibited'))
360
+ return true;
361
+ if (doc.path_overrides) {
362
+ return doc.path_overrides.some(o => fields.some(f => o.terms[f] === 'prohibited'));
363
+ }
364
+ return false;
365
+ }
240
366
  /** Check if governance terms deny all usage types */
241
367
  function isAllDenied(terms) {
242
368
  const fields = ['inference', 'training', 'redistribution', 'derivative', 'caching'];
@@ -1 +1 @@
1
- {"version":3,"file":"aps-txt.js","sourceRoot":"","sources":["../../../src/core/aps-txt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aps-txt.js","sourceRoot":"","sources":["../../../src/core/aps-txt.ts"],"names":[],"mappings":"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"}
@@ -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"}