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.
- package/README.md +45 -7
- package/dist/src/core/charter.d.ts +91 -0
- package/dist/src/core/charter.d.ts.map +1 -0
- package/dist/src/core/charter.js +536 -0
- package/dist/src/core/charter.js.map +1 -0
- package/dist/src/core/data-source-attribution.d.ts +17 -0
- package/dist/src/core/data-source-attribution.d.ts.map +1 -0
- package/dist/src/core/data-source-attribution.js +219 -0
- package/dist/src/core/data-source-attribution.js.map +1 -0
- package/dist/src/core/federation.d.ts +39 -0
- package/dist/src/core/federation.d.ts.map +1 -0
- package/dist/src/core/federation.js +85 -0
- package/dist/src/core/federation.js.map +1 -0
- package/dist/src/core/fidelity-probe.d.ts +125 -0
- package/dist/src/core/fidelity-probe.d.ts.map +1 -0
- package/dist/src/core/fidelity-probe.js +151 -0
- package/dist/src/core/fidelity-probe.js.map +1 -0
- package/dist/src/core/gateway-identity.d.ts +59 -0
- package/dist/src/core/gateway-identity.d.ts.map +1 -0
- package/dist/src/core/gateway-identity.js +195 -0
- package/dist/src/core/gateway-identity.js.map +1 -0
- package/dist/src/core/gateway-wiring.d.ts +32 -0
- package/dist/src/core/gateway-wiring.d.ts.map +1 -0
- package/dist/src/core/gateway-wiring.js +71 -0
- package/dist/src/core/gateway-wiring.js.map +1 -0
- package/dist/src/core/gateway.d.ts +67 -2
- package/dist/src/core/gateway.d.ts.map +1 -1
- package/dist/src/core/gateway.js +421 -2
- package/dist/src/core/gateway.js.map +1 -1
- package/dist/src/core/reserve.d.ts +28 -0
- package/dist/src/core/reserve.d.ts.map +1 -0
- package/dist/src/core/reserve.js +69 -0
- package/dist/src/core/reserve.js.map +1 -0
- package/dist/src/core/time.d.ts +20 -0
- package/dist/src/core/time.d.ts.map +1 -0
- package/dist/src/core/time.js +100 -0
- package/dist/src/core/time.js.map +1 -0
- package/dist/src/core/transactional.d.ts +58 -0
- package/dist/src/core/transactional.d.ts.map +1 -0
- package/dist/src/core/transactional.js +171 -0
- package/dist/src/core/transactional.js.map +1 -0
- package/dist/src/index.d.ts +29 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +16 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/types/approval.d.ts +113 -0
- package/dist/src/types/approval.d.ts.map +1 -0
- package/dist/src/types/approval.js +16 -0
- package/dist/src/types/approval.js.map +1 -0
- package/dist/src/types/charter.d.ts +294 -0
- package/dist/src/types/charter.d.ts.map +1 -0
- package/dist/src/types/charter.js +24 -0
- package/dist/src/types/charter.js.map +1 -0
- package/dist/src/types/data-contribution.d.ts +28 -0
- package/dist/src/types/data-contribution.d.ts.map +1 -1
- package/dist/src/types/dispute.d.ts +80 -0
- package/dist/src/types/dispute.d.ts.map +1 -0
- package/dist/src/types/dispute.js +14 -0
- package/dist/src/types/dispute.js.map +1 -0
- package/dist/src/types/escrow.d.ts +84 -0
- package/dist/src/types/escrow.d.ts.map +1 -0
- package/dist/src/types/escrow.js +10 -0
- package/dist/src/types/escrow.js.map +1 -0
- package/dist/src/types/evidence.d.ts +14 -0
- package/dist/src/types/evidence.d.ts.map +1 -0
- package/dist/src/types/evidence.js +9 -0
- package/dist/src/types/evidence.js.map +1 -0
- package/dist/src/types/federation.d.ts +44 -0
- package/dist/src/types/federation.d.ts.map +1 -0
- package/dist/src/types/federation.js +16 -0
- package/dist/src/types/federation.js.map +1 -0
- package/dist/src/types/finality.d.ts +18 -0
- package/dist/src/types/finality.d.ts.map +1 -0
- package/dist/src/types/finality.js +10 -0
- package/dist/src/types/finality.js.map +1 -0
- package/dist/src/types/foreign.d.ts +63 -0
- package/dist/src/types/foreign.d.ts.map +1 -0
- package/dist/src/types/foreign.js +16 -0
- package/dist/src/types/foreign.js.map +1 -0
- package/dist/src/types/gateway.d.ts +265 -1
- package/dist/src/types/gateway.d.ts.map +1 -1
- package/dist/src/types/passport.d.ts +7 -0
- package/dist/src/types/passport.d.ts.map +1 -1
- package/dist/src/types/passport.js.map +1 -1
- package/dist/src/types/reserve.d.ts +52 -0
- package/dist/src/types/reserve.d.ts.map +1 -0
- package/dist/src/types/reserve.js +15 -0
- package/dist/src/types/reserve.js.map +1 -0
- package/dist/src/types/time.d.ts +70 -0
- package/dist/src/types/time.d.ts.map +1 -0
- package/dist/src/types/time.js +19 -0
- package/dist/src/types/time.js.map +1 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
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
|
-
**Governance,
|
|
10
|
+
**Governance infrastructure for the agent economy.** Identity, delegation, reputation, enforcement, commerce, institutional governance. Not just identity — the full stack.
|
|
11
11
|
|
|
12
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
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 |
|
|
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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"}
|