agent-passport-system 1.26.0 → 1.28.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 (93) hide show
  1. package/README.md +45 -7
  2. package/dist/src/core/charter.d.ts +91 -0
  3. package/dist/src/core/charter.d.ts.map +1 -0
  4. package/dist/src/core/charter.js +536 -0
  5. package/dist/src/core/charter.js.map +1 -0
  6. package/dist/src/core/data-source-attribution.d.ts +17 -0
  7. package/dist/src/core/data-source-attribution.d.ts.map +1 -0
  8. package/dist/src/core/data-source-attribution.js +219 -0
  9. package/dist/src/core/data-source-attribution.js.map +1 -0
  10. package/dist/src/core/federation.d.ts +39 -0
  11. package/dist/src/core/federation.d.ts.map +1 -0
  12. package/dist/src/core/federation.js +85 -0
  13. package/dist/src/core/federation.js.map +1 -0
  14. package/dist/src/core/fidelity-probe.d.ts +125 -0
  15. package/dist/src/core/fidelity-probe.d.ts.map +1 -0
  16. package/dist/src/core/fidelity-probe.js +151 -0
  17. package/dist/src/core/fidelity-probe.js.map +1 -0
  18. package/dist/src/core/gateway-identity.d.ts +59 -0
  19. package/dist/src/core/gateway-identity.d.ts.map +1 -0
  20. package/dist/src/core/gateway-identity.js +195 -0
  21. package/dist/src/core/gateway-identity.js.map +1 -0
  22. package/dist/src/core/gateway-wiring.d.ts +32 -0
  23. package/dist/src/core/gateway-wiring.d.ts.map +1 -0
  24. package/dist/src/core/gateway-wiring.js +71 -0
  25. package/dist/src/core/gateway-wiring.js.map +1 -0
  26. package/dist/src/core/gateway.d.ts +67 -2
  27. package/dist/src/core/gateway.d.ts.map +1 -1
  28. package/dist/src/core/gateway.js +421 -2
  29. package/dist/src/core/gateway.js.map +1 -1
  30. package/dist/src/core/reserve.d.ts +28 -0
  31. package/dist/src/core/reserve.d.ts.map +1 -0
  32. package/dist/src/core/reserve.js +69 -0
  33. package/dist/src/core/reserve.js.map +1 -0
  34. package/dist/src/core/time.d.ts +20 -0
  35. package/dist/src/core/time.d.ts.map +1 -0
  36. package/dist/src/core/time.js +100 -0
  37. package/dist/src/core/time.js.map +1 -0
  38. package/dist/src/core/transactional.d.ts +58 -0
  39. package/dist/src/core/transactional.d.ts.map +1 -0
  40. package/dist/src/core/transactional.js +171 -0
  41. package/dist/src/core/transactional.js.map +1 -0
  42. package/dist/src/index.d.ts +29 -3
  43. package/dist/src/index.d.ts.map +1 -1
  44. package/dist/src/index.js +16 -1
  45. package/dist/src/index.js.map +1 -1
  46. package/dist/src/types/approval.d.ts +113 -0
  47. package/dist/src/types/approval.d.ts.map +1 -0
  48. package/dist/src/types/approval.js +16 -0
  49. package/dist/src/types/approval.js.map +1 -0
  50. package/dist/src/types/charter.d.ts +294 -0
  51. package/dist/src/types/charter.d.ts.map +1 -0
  52. package/dist/src/types/charter.js +24 -0
  53. package/dist/src/types/charter.js.map +1 -0
  54. package/dist/src/types/data-contribution.d.ts +28 -0
  55. package/dist/src/types/data-contribution.d.ts.map +1 -1
  56. package/dist/src/types/dispute.d.ts +80 -0
  57. package/dist/src/types/dispute.d.ts.map +1 -0
  58. package/dist/src/types/dispute.js +14 -0
  59. package/dist/src/types/dispute.js.map +1 -0
  60. package/dist/src/types/escrow.d.ts +84 -0
  61. package/dist/src/types/escrow.d.ts.map +1 -0
  62. package/dist/src/types/escrow.js +10 -0
  63. package/dist/src/types/escrow.js.map +1 -0
  64. package/dist/src/types/evidence.d.ts +14 -0
  65. package/dist/src/types/evidence.d.ts.map +1 -0
  66. package/dist/src/types/evidence.js +9 -0
  67. package/dist/src/types/evidence.js.map +1 -0
  68. package/dist/src/types/federation.d.ts +44 -0
  69. package/dist/src/types/federation.d.ts.map +1 -0
  70. package/dist/src/types/federation.js +16 -0
  71. package/dist/src/types/federation.js.map +1 -0
  72. package/dist/src/types/finality.d.ts +18 -0
  73. package/dist/src/types/finality.d.ts.map +1 -0
  74. package/dist/src/types/finality.js +10 -0
  75. package/dist/src/types/finality.js.map +1 -0
  76. package/dist/src/types/foreign.d.ts +63 -0
  77. package/dist/src/types/foreign.d.ts.map +1 -0
  78. package/dist/src/types/foreign.js +16 -0
  79. package/dist/src/types/foreign.js.map +1 -0
  80. package/dist/src/types/gateway.d.ts +265 -1
  81. package/dist/src/types/gateway.d.ts.map +1 -1
  82. package/dist/src/types/passport.d.ts +7 -0
  83. package/dist/src/types/passport.d.ts.map +1 -1
  84. package/dist/src/types/passport.js.map +1 -1
  85. package/dist/src/types/reserve.d.ts +52 -0
  86. package/dist/src/types/reserve.d.ts.map +1 -0
  87. package/dist/src/types/reserve.js +15 -0
  88. package/dist/src/types/reserve.js.map +1 -0
  89. package/dist/src/types/time.d.ts +70 -0
  90. package/dist/src/types/time.d.ts.map +1 -0
  91. package/dist/src/types/time.js +19 -0
  92. package/dist/src/types/time.js.map +1 -0
  93. package/package.json +3 -3
package/README.md CHANGED
@@ -2,14 +2,14 @@
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-1507%20passing-brightgreen)](https://github.com/aeoess/agent-passport-system)
5
+ [![tests](https://img.shields.io/badge/tests-1656%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
+ **Governance infrastructure for the agent economy.** Identity, delegation, reputation, enforcement, commerce, institutional governance. Not just identity — the full stack.
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
+ AI agents represent companies and people. They spend real money, access sensitive data, negotiate contracts, and talk to other agents. APS answers: what is this agent 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?
13
13
 
14
14
  ```bash
15
15
  npm install agent-passport-system
@@ -70,6 +70,40 @@ const result = await gateway.processToolCall({
70
70
 
71
71
  **What just happened:** The gateway verified the agent's identity, checked delegation scope, enforced spend limits, evaluated values floor compliance, verified reputation tier, checked revocation status, executed the tool, generated a signed receipt, and updated reputation. All in one call. The agent never touched the tool directly.
72
72
 
73
+ ## Framework Integration: CrewAI
74
+
75
+ Add governance to any CrewAI crew in 10 lines. Works the same way with LangChain, ADK, A2A, or any custom framework.
76
+
77
+ ```typescript
78
+ import { generateKeyPair, createCrewAIGovernance } from 'agent-passport-system'
79
+
80
+ const keys = generateKeyPair()
81
+ const gov = createCrewAIGovernance({
82
+ agentId: 'research-agent',
83
+ ...keys,
84
+ delegationId: 'del_research_2026',
85
+ allowedScopes: ['tool:web_search', 'tool:read_file', 'task:execute'],
86
+ spendLimitPerAction: 5.00,
87
+ })
88
+
89
+ // Wrap any tool call — permitted actions execute, denied ones don't
90
+ const result = await gov.governedToolCall(
91
+ 'web_search',
92
+ { query: 'AI governance standards' },
93
+ () => mySearchTool('AI governance standards'),
94
+ 0.01 // estimated cost
95
+ )
96
+ // result.governance.verdict → 'permit' or 'deny'
97
+ // result.receipt → signed proof of the action (or denial)
98
+
99
+ // Use as CrewAI task callback
100
+ const receipt = gov.taskCallback({ description: '...', result: '...', agent: 'research-agent' })
101
+ ```
102
+
103
+ **What you get:** scope enforcement (agent can only use allowed tools), spend controls ($5/action limit), signed receipts for every action (permit or deny), and a verifiable audit trail. The agent never bypasses governance because the wrapper executes the action, not the agent.
104
+
105
+ See [`examples/crewai-governance.ts`](examples/crewai-governance.ts) for the full working example. Adapters also available for [LangChain](src/adapters/langchain.ts), [Google ADK](src/adapters/adk.ts), and [A2A](src/adapters/a2a.ts).
106
+
73
107
  ## Identity Is the Foundation, Not the Product
74
108
 
75
109
  Everything above is built on Ed25519 cryptographic identity. But identity is the plumbing, not the value proposition.
@@ -90,7 +124,7 @@ const agent = joinSocialContract({ name: 'my-agent', owner: 'alice', floor: floo
90
124
 
91
125
  ## The Stack
92
126
 
93
- 42 core modules + 32 v2 constitutional modules. 1507 tests. Zero heavy dependencies.
127
+ 56 core modules + 32 v2 constitutional modules. 1707 tests. Zero heavy dependencies.
94
128
 
95
129
  | Layer | What it does | Key primitive |
96
130
  |-------|-------------|---------------|
@@ -109,7 +143,7 @@ const agent = joinSocialContract({ name: 'my-agent', owner: 'alice', floor: floo
109
143
 
110
144
  ## MCP Server
111
145
 
112
- 108 tools across all modules. Any MCP client connects agents directly.
146
+ 121 tools across all modules. Any MCP client connects agents directly.
113
147
 
114
148
  ```bash
115
149
  npm install -g agent-passport-system-mcp
@@ -144,7 +178,7 @@ npx agent-passport audit --floor values/floor.yaml
144
178
 
145
179
  ```bash
146
180
  npm test
147
- # 1507 tests across 79 files, 392 suites, 0 failures
181
+ # 1707 tests across 86 files, 443 suites, 0 failures
148
182
  ```
149
183
 
150
184
  50 adversarial tests: Merkle tampering, attribution gaming, compliance violations, floor negotiation attacks, cross-chain confused deputy, taint laundering, authority probing.
@@ -162,7 +196,7 @@ npm test
162
196
  | Signed receipts | 3-sig chain | Proposed | Logs | General | — |
163
197
  | Values enforcement | 8 principles, graduated | — | Rules | — | — |
164
198
  | Coordination | Task lifecycle + MCP | — | — | — | — |
165
- | Tests | 1507 (50 adversarial) | None | Limited | None | None |
199
+ | Tests | 1656 (50 adversarial) | None | Limited | None | None |
166
200
 
167
201
  ## Recognition
168
202
 
@@ -177,6 +211,10 @@ npm test
177
211
 
178
212
  **"Monotonic Narrowing for Agent Authority"** — Published on [Zenodo](https://doi.org/10.5281/zenodo.18749779). [Read →](papers/agent-social-contract.md)
179
213
 
214
+ **"Faceted Authority Attenuation: A Product Lattice Model for AI Agent Governance"** — Published on [Zenodo](https://doi.org/10.5281/zenodo.19260073). Seven-dimensional product lattice formalization with authorization witnesses, constraint vectors, and institutional governance composition.
215
+
216
+ **Cited by:** Nanook & Gerundium, "PDR in Production: Empirical Validation of Behavioral Trust Scoring in Multi-Agent Systems" ([DOI:10.5281/zenodo.19323172](https://doi.org/10.5281/zenodo.19323172)) — Section 7.6 independently validates the APS Bayesian reputation model, sigma dynamics, and structuralVerdict/trustVerdict separation using production data from UBC.
217
+
180
218
  ## Authorship
181
219
 
182
220
  Designed and built by **Tymofii Pidlisnyi** with AI assistance from **Claude** (Anthropic).
@@ -0,0 +1,91 @@
1
+ import type { CharterCore, CharterSignature, Office, OfficeRegistry, OfficeTransfer, CharterAmendment, CharterVerification, AmendmentVerification, DelegationSurvival, DissolutionPolicy, DisputeVenue, SuccessionRule, SuccessionTrigger, QuorumFailurePolicy } from '../types/charter.js';
2
+ import type { MultiClassThresholdPolicy, ApprovalRequest, ApprovalSignature, ApprovalSubjectType, ApprovalEvaluation, ApprovalPolicy } from '../types/approval.js';
3
+ export interface CreateCharterOptions {
4
+ name: string;
5
+ offices: Office[];
6
+ amendmentPolicy: MultiClassThresholdPolicy;
7
+ dissolutionPolicy: DissolutionPolicy;
8
+ delegationSurvival: DelegationSurvival;
9
+ disputeVenue?: DisputeVenue;
10
+ founderPrivateKey: string;
11
+ founderPublicKey: string;
12
+ founderRole: string;
13
+ version?: string;
14
+ }
15
+ /** Create a new charter. The founder signs it as the first founding signatory.
16
+ * Additional signatories can be added with signCharter() until the
17
+ * amendment policy threshold is met. */
18
+ export declare function createCharter(opts: CreateCharterOptions): CharterCore;
19
+ /** Add a founding signature to a charter. Returns a new charter
20
+ * with the additional signature and a re-signed outer signature. */
21
+ export declare function signCharter(charter: CharterCore, signerPrivateKey: string, signerPublicKey: string, signerRole: string, resignerPrivateKey: string): CharterCore;
22
+ /** Verify a charter's integrity: content hash, signatures, office consistency. */
23
+ export declare function verifyCharter(charter: CharterCore): CharterVerification;
24
+ /** Evaluate whether a set of signatures satisfies a multi-class threshold policy.
25
+ * All class requirements must be met (conjunction). Consilium Q5. */
26
+ export declare function evaluateThreshold(policy: MultiClassThresholdPolicy, signatures: ApprovalSignature[]): ApprovalEvaluation;
27
+ export interface CreateAmendmentOptions {
28
+ charter: CharterCore;
29
+ proposedCharter: CharterCore;
30
+ description: string;
31
+ proposerPrivateKey: string;
32
+ proposerPublicKey: string;
33
+ effectiveAt?: string;
34
+ }
35
+ /** Create a charter amendment proposal. Does NOT apply it —
36
+ * signatures must be collected and threshold evaluated first. */
37
+ export declare function createAmendment(opts: CreateAmendmentOptions): CharterAmendment;
38
+ /** Add a signature to a charter amendment. */
39
+ export declare function signAmendment(amendment: CharterAmendment, signerPrivateKey: string, signerPublicKey: string, signerRole: string): CharterAmendment;
40
+ /** Verify a charter amendment against the charter's amendment policy. */
41
+ export declare function verifyAmendment(amendment: CharterAmendment, charter: CharterCore): AmendmentVerification;
42
+ /** Create an OfficeRegistry from a charter's offices. */
43
+ export declare function createOfficeRegistry(charter: CharterCore, successionRules: SuccessionRule[], quorumFailurePolicies: QuorumFailurePolicy[], signerPrivateKey: string): OfficeRegistry;
44
+ export interface CreateOfficeTransferOptions {
45
+ charter: CharterCore;
46
+ officeId: string;
47
+ fromHolder: string | null;
48
+ toHolder: string | null;
49
+ trigger: SuccessionTrigger | 'appointment' | 'resignation';
50
+ delegationHandling: 'frozen' | 'transferred' | 'revoked';
51
+ approvalSignatures: CharterSignature[];
52
+ signerPrivateKey: string;
53
+ }
54
+ /** Record an office holder change. */
55
+ export declare function createOfficeTransfer(opts: CreateOfficeTransferOptions): OfficeTransfer;
56
+ /** Create an approval request for a multi-party action. */
57
+ export declare function createApprovalRequest(policyId: string, subject: string, subjectType: ApprovalSubjectType, requestedBy: string, timeoutSeconds: number): ApprovalRequest;
58
+ /** Add a signature to an approval request. Validates the signer
59
+ * is not a duplicate and the request hasn't expired. */
60
+ export declare function addApprovalSignature(request: ApprovalRequest, signerPrivateKey: string, signerPublicKey: string, keyClass: string, officeId?: string): ApprovalRequest;
61
+ /** Evaluate an approval request against its policy. For 'threshold'
62
+ * type, delegates to evaluateThreshold. For simpler types, does
63
+ * direct checks. Returns the updated request with status. */
64
+ export declare function evaluateApprovalRequest(request: ApprovalRequest, policy: ApprovalPolicy): {
65
+ request: ApprovalRequest;
66
+ evaluation: ApprovalEvaluation;
67
+ };
68
+ /** Find an office by ID within a charter. */
69
+ export declare function findOffice(charter: CharterCore, officeId: string): Office | undefined;
70
+ /** Find which office(s) a public key holds. */
71
+ export declare function findOfficesByHolder(charter: CharterCore, publicKey: string): Office[];
72
+ /** Resolve the successor office for a vacant office. Walks the
73
+ * succession order and returns the first non-vacant office. */
74
+ export declare function resolveSuccessor(charter: CharterCore, officeId: string): Office | null;
75
+ /** Check if a holder can take an office without violating
76
+ * incompatibility constraints (GPT #20). */
77
+ export declare function checkIncompatibility(charter: CharterCore, officeId: string, holderPublicKey: string): {
78
+ compatible: boolean;
79
+ conflicts: string[];
80
+ };
81
+ /** Check if an office has quorum per its QuorumFailurePolicy. */
82
+ export declare function checkQuorum(office: Office, policy: QuorumFailurePolicy | undefined): {
83
+ hasQuorum: boolean;
84
+ holders: number;
85
+ required: number;
86
+ };
87
+ /** Check if a charter is in dissolution grace period. */
88
+ export declare function isInDissolutionGrace(charter: CharterCore): boolean;
89
+ /** Verify an office transfer signature. */
90
+ export declare function verifyOfficeTransfer(transfer: OfficeTransfer): boolean;
91
+ //# sourceMappingURL=charter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charter.d.ts","sourceRoot":"","sources":["../../../src/core/charter.ts"],"names":[],"mappings":"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"}