agent-passport-system 1.1.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/LICENSE +190 -0
- package/README.md +194 -0
- package/dist/src/cli/index.d.ts +3 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +569 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/contract.d.ts +97 -0
- package/dist/src/contract.d.ts.map +1 -0
- package/dist/src/contract.js +161 -0
- package/dist/src/contract.js.map +1 -0
- package/dist/src/core/attribution.d.ts +71 -0
- package/dist/src/core/attribution.d.ts.map +1 -0
- package/dist/src/core/attribution.js +277 -0
- package/dist/src/core/attribution.js.map +1 -0
- package/dist/src/core/canonical.d.ts +2 -0
- package/dist/src/core/canonical.d.ts.map +1 -0
- package/dist/src/core/canonical.js +23 -0
- package/dist/src/core/canonical.js.map +1 -0
- package/dist/src/core/delegation.d.ts +41 -0
- package/dist/src/core/delegation.d.ts.map +1 -0
- package/dist/src/core/delegation.js +173 -0
- package/dist/src/core/delegation.js.map +1 -0
- package/dist/src/core/index.d.ts +3 -0
- package/dist/src/core/index.d.ts.map +1 -0
- package/dist/src/core/index.js +3 -0
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/core/passport.d.ts +9 -0
- package/dist/src/core/passport.d.ts.map +1 -0
- package/dist/src/core/passport.js +76 -0
- package/dist/src/core/passport.js.map +1 -0
- package/dist/src/core/values.d.ts +49 -0
- package/dist/src/core/values.d.ts.map +1 -0
- package/dist/src/core/values.js +320 -0
- package/dist/src/core/values.js.map +1 -0
- package/dist/src/crypto/index.d.ts +2 -0
- package/dist/src/crypto/index.d.ts.map +1 -0
- package/dist/src/crypto/index.js +2 -0
- package/dist/src/crypto/index.js.map +1 -0
- package/dist/src/crypto/keys.d.ts +6 -0
- package/dist/src/crypto/keys.d.ts.map +1 -0
- package/dist/src/crypto/keys.js +63 -0
- package/dist/src/crypto/keys.js.map +1 -0
- package/dist/src/index.d.ts +13 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +27 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/types/index.d.ts +2 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +2 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/passport.d.ts +260 -0
- package/dist/src/types/passport.d.ts.map +1 -0
- package/dist/src/types/passport.js +3 -0
- package/dist/src/types/passport.js.map +1 -0
- package/dist/src/verification/index.d.ts +3 -0
- package/dist/src/verification/index.d.ts.map +1 -0
- package/dist/src/verification/index.js +3 -0
- package/dist/src/verification/index.js.map +1 -0
- package/dist/src/verification/reputation.d.ts +4 -0
- package/dist/src/verification/reputation.d.ts.map +1 -0
- package/dist/src/verification/reputation.js +43 -0
- package/dist/src/verification/reputation.js.map +1 -0
- package/dist/src/verification/verify.d.ts +5 -0
- package/dist/src/verification/verify.d.ts.map +1 -0
- package/dist/src/verification/verify.js +69 -0
- package/dist/src/verification/verify.js.map +1 -0
- package/package.json +59 -0
- package/values/floor.yaml +204 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
// Human Values Floor — Attestation, Compliance, and Negotiation
|
|
2
|
+
// Layer 2 of the Agent Social Contract
|
|
3
|
+
//
|
|
4
|
+
// Design philosophy:
|
|
5
|
+
// The Floor produces FACTS, not opinions.
|
|
6
|
+
// "This principle is technically enforced" = fact.
|
|
7
|
+
// "This agent is 94.3% compliant" = opinion disguised as fact.
|
|
8
|
+
// We produce the former. Consumers interpret the latter.
|
|
9
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
10
|
+
import { readFileSync } from 'node:fs';
|
|
11
|
+
import { sign, verify } from '../crypto/keys.js';
|
|
12
|
+
import { canonicalize } from './canonical.js';
|
|
13
|
+
// ══════════════════════════════════════
|
|
14
|
+
// FLOOR LOADING
|
|
15
|
+
// ══════════════════════════════════════
|
|
16
|
+
/**
|
|
17
|
+
* Parse the Values Floor from a JSON object.
|
|
18
|
+
*
|
|
19
|
+
* v2 design: JSON, not YAML. The floor is a protocol artifact,
|
|
20
|
+
* not a config file. JSON is unambiguous, universally parseable,
|
|
21
|
+
* and requires zero dependencies. Every language on earth can
|
|
22
|
+
* read JSON. Not every language can read YAML the same way.
|
|
23
|
+
*
|
|
24
|
+
* We still support YAML for human authoring (loadFloorFromYaml),
|
|
25
|
+
* but the canonical representation is JSON.
|
|
26
|
+
*/
|
|
27
|
+
export function loadFloor(input) {
|
|
28
|
+
// Try JSON first (canonical format)
|
|
29
|
+
try {
|
|
30
|
+
const parsed = JSON.parse(input);
|
|
31
|
+
if (parsed.floor && Array.isArray(parsed.floor)) {
|
|
32
|
+
return parsed;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// Not JSON — try YAML
|
|
37
|
+
}
|
|
38
|
+
return parseYamlFloor(input);
|
|
39
|
+
}
|
|
40
|
+
export function loadFloorFromFile(filePath) {
|
|
41
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
42
|
+
return loadFloor(content);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Minimal YAML parser for the floor manifest.
|
|
46
|
+
* Handles our specific structure only. For complex YAML, convert to JSON first.
|
|
47
|
+
*/
|
|
48
|
+
function parseYamlFloor(yamlContent) {
|
|
49
|
+
const lines = yamlContent.split('\n');
|
|
50
|
+
const floor = {
|
|
51
|
+
version: '',
|
|
52
|
+
schema: '',
|
|
53
|
+
lastUpdated: '',
|
|
54
|
+
governanceUri: '',
|
|
55
|
+
floor: []
|
|
56
|
+
};
|
|
57
|
+
let currentPrinciple = null;
|
|
58
|
+
let inFloor = false;
|
|
59
|
+
let inEnforcement = false;
|
|
60
|
+
let inSection = false; // true once we enter 'floor:' or 'extensions:'
|
|
61
|
+
for (const line of lines) {
|
|
62
|
+
const trimmed = line.trim();
|
|
63
|
+
if (trimmed.startsWith('#') || trimmed === '')
|
|
64
|
+
continue;
|
|
65
|
+
// Top-level fields — only before entering a section
|
|
66
|
+
if (!inSection) {
|
|
67
|
+
if (trimmed.startsWith('version:')) {
|
|
68
|
+
floor.version = extractVal(trimmed);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (trimmed.startsWith('schema:')) {
|
|
72
|
+
floor.schema = extractVal(trimmed);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (trimmed.startsWith('last_updated:')) {
|
|
76
|
+
floor.lastUpdated = extractVal(trimmed);
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (trimmed.startsWith('governance_uri:')) {
|
|
80
|
+
floor.governanceUri = extractVal(trimmed);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (trimmed === 'floor:') {
|
|
85
|
+
inFloor = true;
|
|
86
|
+
inSection = true;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (inFloor && (trimmed.startsWith('extensions:') || trimmed.startsWith('integration:'))) {
|
|
90
|
+
inFloor = false;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (inFloor) {
|
|
94
|
+
if (trimmed.startsWith('- id:')) {
|
|
95
|
+
if (currentPrinciple?.id)
|
|
96
|
+
floor.floor.push(currentPrinciple);
|
|
97
|
+
currentPrinciple = {
|
|
98
|
+
id: extractVal(trimmed.slice(2)),
|
|
99
|
+
enforcement: { technical: false, mechanism: '' },
|
|
100
|
+
weight: 'mandatory'
|
|
101
|
+
};
|
|
102
|
+
inEnforcement = false;
|
|
103
|
+
}
|
|
104
|
+
if (currentPrinciple) {
|
|
105
|
+
if (trimmed.startsWith('name:'))
|
|
106
|
+
currentPrinciple.name = extractVal(trimmed);
|
|
107
|
+
if (trimmed.startsWith('weight:'))
|
|
108
|
+
currentPrinciple.weight = extractVal(trimmed);
|
|
109
|
+
if (trimmed.startsWith('principle:') && !trimmed.endsWith('>')) {
|
|
110
|
+
currentPrinciple.principle = extractVal(trimmed);
|
|
111
|
+
}
|
|
112
|
+
if (trimmed === 'enforcement:') {
|
|
113
|
+
inEnforcement = true;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (inEnforcement) {
|
|
117
|
+
if (trimmed.startsWith('technical:'))
|
|
118
|
+
currentPrinciple.enforcement.technical = trimmed.includes('true');
|
|
119
|
+
if (trimmed.startsWith('mechanism:'))
|
|
120
|
+
currentPrinciple.enforcement.mechanism = extractVal(trimmed);
|
|
121
|
+
if (trimmed.startsWith('protocol_ref:'))
|
|
122
|
+
currentPrinciple.enforcement.protocolRef = extractVal(trimmed);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (currentPrinciple?.id)
|
|
128
|
+
floor.floor.push(currentPrinciple);
|
|
129
|
+
return floor;
|
|
130
|
+
}
|
|
131
|
+
function extractVal(line) {
|
|
132
|
+
const i = line.indexOf(':');
|
|
133
|
+
if (i === -1)
|
|
134
|
+
return '';
|
|
135
|
+
let v = line.slice(i + 1).trim();
|
|
136
|
+
if ((v.startsWith('"') && v.endsWith('"')) || (v.startsWith("'") && v.endsWith("'"))) {
|
|
137
|
+
v = v.slice(1, -1);
|
|
138
|
+
}
|
|
139
|
+
return v;
|
|
140
|
+
}
|
|
141
|
+
// ══════════════════════════════════════
|
|
142
|
+
// FLOOR ATTESTATION
|
|
143
|
+
// ══════════════════════════════════════
|
|
144
|
+
/**
|
|
145
|
+
* An attestation is minimal: agent signs {floorVersion, extensions, timestamp}.
|
|
146
|
+
* That's it. No performative commitment text.
|
|
147
|
+
*
|
|
148
|
+
* The attestation says: "I recognize this floor version."
|
|
149
|
+
* The receipts say: "Here's what I actually did."
|
|
150
|
+
* The compliance check compares the two.
|
|
151
|
+
*
|
|
152
|
+
* Truth is in the receipts, not in the attestation.
|
|
153
|
+
*/
|
|
154
|
+
export function attestFloor(agentId, publicKey, floorVersion, extensions, privateKey, expiresInDays = 365) {
|
|
155
|
+
const now = new Date();
|
|
156
|
+
const expiry = new Date(now);
|
|
157
|
+
expiry.setDate(expiry.getDate() + expiresInDays);
|
|
158
|
+
const attestation = {
|
|
159
|
+
attestationId: 'att_' + uuidv4().slice(0, 12),
|
|
160
|
+
agentId,
|
|
161
|
+
publicKey,
|
|
162
|
+
floorVersion,
|
|
163
|
+
extensions,
|
|
164
|
+
attestedAt: now.toISOString(),
|
|
165
|
+
expiresAt: expiry.toISOString(),
|
|
166
|
+
// Minimal commitment: what floor, what extensions, nothing more
|
|
167
|
+
commitment: `floor:${floorVersion}|ext:${extensions.sort().join(',') || 'none'}|ts:${now.toISOString()}`
|
|
168
|
+
};
|
|
169
|
+
const canonical = canonicalize(attestation);
|
|
170
|
+
const signature = sign(canonical, privateKey);
|
|
171
|
+
return { ...attestation, signature };
|
|
172
|
+
}
|
|
173
|
+
export function verifyAttestation(attestation) {
|
|
174
|
+
const errors = [];
|
|
175
|
+
const { signature, ...unsigned } = attestation;
|
|
176
|
+
const canonical = canonicalize(unsigned);
|
|
177
|
+
if (!verify(canonical, signature, attestation.publicKey)) {
|
|
178
|
+
errors.push('Invalid attestation signature');
|
|
179
|
+
}
|
|
180
|
+
if (new Date(attestation.expiresAt) < new Date()) {
|
|
181
|
+
errors.push('Attestation expired');
|
|
182
|
+
}
|
|
183
|
+
if (!attestation.floorVersion)
|
|
184
|
+
errors.push('No floor version specified');
|
|
185
|
+
return { valid: errors.length === 0, errors };
|
|
186
|
+
}
|
|
187
|
+
// ══════════════════════════════════════
|
|
188
|
+
// COMPLIANCE — FACTS, NOT SCORES
|
|
189
|
+
// ══════════════════════════════════════
|
|
190
|
+
/**
|
|
191
|
+
* Evaluate compliance by producing FACTS about each principle.
|
|
192
|
+
*
|
|
193
|
+
* Previous version: returned overallCompliance: 0.943 (opinion).
|
|
194
|
+
* This version: returns each principle's status as a verifiable fact,
|
|
195
|
+
* PLUS a summary that separates what's proven from what's claimed.
|
|
196
|
+
*
|
|
197
|
+
* The compliance report is evidence. What you do with evidence
|
|
198
|
+
* is your decision — not the protocol's.
|
|
199
|
+
*/
|
|
200
|
+
export function evaluateCompliance(agentId, receipts, floor, delegations, verifierPrivateKey) {
|
|
201
|
+
const agentReceipts = receipts.filter(r => r.agentId === agentId);
|
|
202
|
+
const checks = floor.floor.map(p => evaluatePrinciple(p, agentReceipts, delegations));
|
|
203
|
+
const enforced = checks.filter(c => c.status === 'enforced').length;
|
|
204
|
+
const attested = checks.filter(c => c.status === 'attested').length;
|
|
205
|
+
const violations = checks.filter(c => c.status === 'violation').length;
|
|
206
|
+
const total = checks.length;
|
|
207
|
+
// We still compute a score because consumers need a number.
|
|
208
|
+
// But we document what it means: fraction of principles with
|
|
209
|
+
// no violations, weighted by enforcement type.
|
|
210
|
+
// enforced = 1.0 (cryptographic proof), attested = 0.8 (claim without proof),
|
|
211
|
+
// unverifiable = 0.5 (no data), violation = 0.0 (counter-evidence)
|
|
212
|
+
const score = checks.reduce((sum, c) => {
|
|
213
|
+
if (c.status === 'enforced')
|
|
214
|
+
return sum + 1.0;
|
|
215
|
+
if (c.status === 'attested')
|
|
216
|
+
return sum + 0.8;
|
|
217
|
+
if (c.status === 'unverifiable')
|
|
218
|
+
return sum + 0.5;
|
|
219
|
+
return sum;
|
|
220
|
+
}, 0) / total;
|
|
221
|
+
const timestamps = agentReceipts.map(r => r.timestamp).sort();
|
|
222
|
+
const report = {
|
|
223
|
+
reportId: 'comp_' + uuidv4().slice(0, 12),
|
|
224
|
+
agentId,
|
|
225
|
+
floorVersion: floor.version,
|
|
226
|
+
period: {
|
|
227
|
+
from: timestamps[0] || new Date().toISOString(),
|
|
228
|
+
to: timestamps[timestamps.length - 1] || new Date().toISOString()
|
|
229
|
+
},
|
|
230
|
+
receiptsAnalyzed: agentReceipts.length,
|
|
231
|
+
checks,
|
|
232
|
+
overallCompliance: Math.round(score * 1000) / 1000,
|
|
233
|
+
generatedAt: new Date().toISOString()
|
|
234
|
+
};
|
|
235
|
+
const canonical = canonicalize(report);
|
|
236
|
+
const signature = sign(canonical, verifierPrivateKey);
|
|
237
|
+
return { ...report, signature };
|
|
238
|
+
}
|
|
239
|
+
function evaluatePrinciple(principle, receipts, delegations) {
|
|
240
|
+
const base = { principleId: principle.id, principleName: principle.name };
|
|
241
|
+
switch (principle.id) {
|
|
242
|
+
case 'F-001': { // Traceability
|
|
243
|
+
if (receipts.length === 0)
|
|
244
|
+
return { ...base, status: 'unverifiable', detail: 'No receipts to analyze' };
|
|
245
|
+
const traced = receipts.filter(r => r.delegationChain?.length > 0);
|
|
246
|
+
return traced.length === receipts.length
|
|
247
|
+
? { ...base, status: 'enforced', detail: `All ${receipts.length} receipts have delegation chains`, evidence: receipts[0]?.receiptId }
|
|
248
|
+
: { ...base, status: 'violation', detail: `${receipts.length - traced.length} receipts missing delegation chain` };
|
|
249
|
+
}
|
|
250
|
+
case 'F-002': { // Honest Identity
|
|
251
|
+
const ids = new Set(receipts.map(r => r.agentId));
|
|
252
|
+
return ids.size <= 1
|
|
253
|
+
? { ...base, status: 'enforced', detail: 'Consistent agent identity across all receipts' }
|
|
254
|
+
: { ...base, status: 'violation', detail: `Multiple agent IDs: ${[...ids].join(', ')}` };
|
|
255
|
+
}
|
|
256
|
+
case 'F-003': { // Scoped Authority
|
|
257
|
+
const bad = receipts.filter(r => {
|
|
258
|
+
const d = delegations.get(r.delegationId);
|
|
259
|
+
return d && !d.scope.includes(r.action.scopeUsed);
|
|
260
|
+
});
|
|
261
|
+
return bad.length === 0
|
|
262
|
+
? { ...base, status: 'enforced', detail: 'All actions within delegated scope' }
|
|
263
|
+
: { ...base, status: 'violation', detail: `${bad.length} out-of-scope actions`, evidence: bad[0].receiptId };
|
|
264
|
+
}
|
|
265
|
+
case 'F-004': { // Revocability
|
|
266
|
+
const revoked = receipts.filter(r => delegations.get(r.delegationId)?.revoked);
|
|
267
|
+
return revoked.length === 0
|
|
268
|
+
? { ...base, status: 'enforced', detail: 'No actions under revoked delegations' }
|
|
269
|
+
: { ...base, status: 'violation', detail: `${revoked.length} actions under revoked delegations`, evidence: revoked[0].receiptId };
|
|
270
|
+
}
|
|
271
|
+
case 'F-005': { // Auditability
|
|
272
|
+
if (receipts.length === 0)
|
|
273
|
+
return { ...base, status: 'unverifiable', detail: 'No receipts to audit' };
|
|
274
|
+
const signed = receipts.filter(r => r.signature?.length > 0);
|
|
275
|
+
return signed.length === receipts.length
|
|
276
|
+
? { ...base, status: 'enforced', detail: `All ${receipts.length} receipts cryptographically signed` }
|
|
277
|
+
: { ...base, status: 'violation', detail: 'Unsigned receipts found' };
|
|
278
|
+
}
|
|
279
|
+
case 'F-006': // Non-Deception
|
|
280
|
+
return { ...base, status: 'attested', detail: 'Requires reasoning-level verification' };
|
|
281
|
+
case 'F-007': // Proportionality
|
|
282
|
+
return { ...base, status: 'attested', detail: 'Requires reputation context' };
|
|
283
|
+
default:
|
|
284
|
+
return { ...base, status: 'unverifiable', detail: `Unknown principle ${principle.id}` };
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
// ══════════════════════════════════════
|
|
288
|
+
// COMMON GROUND NEGOTIATION
|
|
289
|
+
// ══════════════════════════════════════
|
|
290
|
+
/**
|
|
291
|
+
* Determine shared ethical ground between two agents.
|
|
292
|
+
* Simple: same major floor version + intersection of extensions.
|
|
293
|
+
*/
|
|
294
|
+
export function negotiateCommonGround(passportA, attestationA, passportB, attestationB) {
|
|
295
|
+
const reasons = [];
|
|
296
|
+
if (new Date(attestationA.expiresAt) < new Date()) {
|
|
297
|
+
reasons.push(`Agent ${passportA.agentId} attestation expired`);
|
|
298
|
+
}
|
|
299
|
+
if (new Date(attestationB.expiresAt) < new Date()) {
|
|
300
|
+
reasons.push(`Agent ${passportB.agentId} attestation expired`);
|
|
301
|
+
}
|
|
302
|
+
const majorA = attestationA.floorVersion.split('.')[0];
|
|
303
|
+
const majorB = attestationB.floorVersion.split('.')[0];
|
|
304
|
+
const compatible = majorA === majorB;
|
|
305
|
+
if (!compatible) {
|
|
306
|
+
reasons.push(`Incompatible floor versions: ${attestationA.floorVersion} vs ${attestationB.floorVersion}`);
|
|
307
|
+
}
|
|
308
|
+
const extA = new Set(attestationA.extensions);
|
|
309
|
+
const shared = attestationB.extensions.filter(e => extA.has(e));
|
|
310
|
+
return {
|
|
311
|
+
floorVersion: compatible ? attestationA.floorVersion : null,
|
|
312
|
+
sharedExtensions: shared,
|
|
313
|
+
agentA: passportA.publicKey,
|
|
314
|
+
agentB: passportB.publicKey,
|
|
315
|
+
negotiatedAt: new Date().toISOString(),
|
|
316
|
+
compatible: reasons.length === 0 && compatible,
|
|
317
|
+
incompatibilityReasons: reasons
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.js","sourceRoot":"","sources":["../../../src/core/values.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { KeyPair } from '../types/passport.js';
|
|
2
|
+
export declare function generateKeyPair(): KeyPair;
|
|
3
|
+
export declare function sign(message: string, privateKeyHex: string): string;
|
|
4
|
+
export declare function verify(message: string, signatureHex: string, publicKeyHex: string): boolean;
|
|
5
|
+
export declare function publicKeyFromPrivate(privateKeyHex: string): string;
|
|
6
|
+
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/crypto/keys.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAyBnD,wBAAgB,eAAe,IAAI,OAAO,CASzC;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CASnE;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAY3F;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CASlE"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Ed25519 Cryptographic Operations for Agent Passport System
|
|
2
|
+
// Uses @noble/ed25519 for pure JS Ed25519
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
4
|
+
// Ed25519 field order
|
|
5
|
+
const L = 2n ** 252n + 27742317777372353535851937790883648493n;
|
|
6
|
+
function sha512(data) {
|
|
7
|
+
return new Uint8Array(createHash('sha512').update(data).digest());
|
|
8
|
+
}
|
|
9
|
+
function hexToBytes(hex) {
|
|
10
|
+
const bytes = new Uint8Array(hex.length / 2);
|
|
11
|
+
for (let i = 0; i < hex.length; i += 2) {
|
|
12
|
+
bytes[i / 2] = parseInt(hex.slice(i, i + 2), 16);
|
|
13
|
+
}
|
|
14
|
+
return bytes;
|
|
15
|
+
}
|
|
16
|
+
function bytesToHex(bytes) {
|
|
17
|
+
return Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('');
|
|
18
|
+
}
|
|
19
|
+
// Simplified Ed25519-like signing using Node.js crypto
|
|
20
|
+
// For production, use @noble/ed25519 — this is a compatible implementation
|
|
21
|
+
import crypto from 'node:crypto';
|
|
22
|
+
export function generateKeyPair() {
|
|
23
|
+
const { publicKey, privateKey } = crypto.generateKeyPairSync('ed25519', {
|
|
24
|
+
publicKeyEncoding: { type: 'spki', format: 'der' },
|
|
25
|
+
privateKeyEncoding: { type: 'pkcs8', format: 'der' }
|
|
26
|
+
});
|
|
27
|
+
// Extract raw 32-byte keys from DER encoding
|
|
28
|
+
const privHex = bytesToHex(new Uint8Array(privateKey.slice(-32)));
|
|
29
|
+
const pubHex = bytesToHex(new Uint8Array(publicKey.slice(-32)));
|
|
30
|
+
return { privateKey: privHex, publicKey: pubHex };
|
|
31
|
+
}
|
|
32
|
+
export function sign(message, privateKeyHex) {
|
|
33
|
+
// Reconstruct DER-encoded private key
|
|
34
|
+
const privBytes = hexToBytes(privateKeyHex);
|
|
35
|
+
const derPrefix = Buffer.from('302e020100300506032b657004220420', 'hex');
|
|
36
|
+
const derKey = Buffer.concat([derPrefix, Buffer.from(privBytes)]);
|
|
37
|
+
const keyObj = crypto.createPrivateKey({ key: derKey, format: 'der', type: 'pkcs8' });
|
|
38
|
+
const sig = crypto.sign(null, Buffer.from(message, 'utf8'), keyObj);
|
|
39
|
+
return bytesToHex(new Uint8Array(sig));
|
|
40
|
+
}
|
|
41
|
+
export function verify(message, signatureHex, publicKeyHex) {
|
|
42
|
+
try {
|
|
43
|
+
const pubBytes = hexToBytes(publicKeyHex);
|
|
44
|
+
const derPrefix = Buffer.from('302a300506032b6570032100', 'hex');
|
|
45
|
+
const derKey = Buffer.concat([derPrefix, Buffer.from(pubBytes)]);
|
|
46
|
+
const keyObj = crypto.createPublicKey({ key: derKey, format: 'der', type: 'spki' });
|
|
47
|
+
const sigBytes = hexToBytes(signatureHex);
|
|
48
|
+
return crypto.verify(null, Buffer.from(message, 'utf8'), keyObj, Buffer.from(sigBytes));
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function publicKeyFromPrivate(privateKeyHex) {
|
|
55
|
+
const privBytes = hexToBytes(privateKeyHex);
|
|
56
|
+
const derPrefix = Buffer.from('302e020100300506032b657004220420', 'hex');
|
|
57
|
+
const derKey = Buffer.concat([derPrefix, Buffer.from(privBytes)]);
|
|
58
|
+
const keyObj = crypto.createPrivateKey({ key: derKey, format: 'der', type: 'pkcs8' });
|
|
59
|
+
const pubKey = crypto.createPublicKey(keyObj);
|
|
60
|
+
const pubDer = pubKey.export({ type: 'spki', format: 'der' });
|
|
61
|
+
return bytesToHex(new Uint8Array(pubDer.slice(-32)));
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/crypto/keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { joinSocialContract, verifySocialContract, delegate, recordWork, proveContributions, auditCompliance } from './contract.js';
|
|
2
|
+
export type { JoinOptions, SocialContractAgent, TrustVerification, DelegateOptions, WorkOptions, ContributionProof } from './contract.js';
|
|
3
|
+
export { createPassport, signPassport, updatePassport, isExpired } from './core/passport.js';
|
|
4
|
+
export { canonicalize } from './core/canonical.js';
|
|
5
|
+
export { generateKeyPair, sign, verify, publicKeyFromPrivate } from './crypto/keys.js';
|
|
6
|
+
export { verifyPassport, createChallenge, verifyChallenge } from './verification/verify.js';
|
|
7
|
+
export { applyReputationEvent, calculateOverallScore } from './verification/reputation.js';
|
|
8
|
+
export { createDelegation, subDelegate, verifyDelegation, revokeDelegation, verifyRevocation, createReceipt, verifyReceipt, getReceipts, getRevocation, clearStores } from './core/delegation.js';
|
|
9
|
+
export { loadFloor, loadFloorFromFile, attestFloor, verifyAttestation, evaluateCompliance, negotiateCommonGround } from './core/values.js';
|
|
10
|
+
export { hashReceipt, traceBeneficiary, computeAttribution, verifyAttributionReport, buildMerkleRoot, generateMerkleProof, verifyMerkleProof, computeCollaborationAttribution, DEFAULT_SCOPE_WEIGHTS } from './core/attribution.js';
|
|
11
|
+
export type { AgentPassport, SignedPassport, KeyPair, VerificationResult, Challenge, ChallengeResponse, ReputationScore, ReputationEvent, Delegation, RuntimeInfo, CreatePassportOptions, ActionReceipt, RevocationRecord, DelegationStatus, ValuesFloor, FloorPrinciple, FloorAttestation, ComplianceCheck, ComplianceReport, SharedGround, FloorReference, BeneficiaryInfo, BeneficiaryTrace, DelegationHop, AttributionEntry, AttributionReport, MerkleProof, MerkleProofNode } from './types/passport.js';
|
|
12
|
+
export type { CollaborationAttribution } from './core/attribution.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,kBAAkB,EAAE,oBAAoB,EACxC,QAAQ,EAAE,UAAU,EACpB,kBAAkB,EAAE,eAAe,EACpC,MAAM,eAAe,CAAA;AAEtB,YAAY,EACV,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EACnD,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAChD,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC3F,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAG1F,OAAO,EACL,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAC/C,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,aAAa,EAAE,WAAW,EACxC,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACL,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,iBAAiB,EAC9B,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAAE,uBAAuB,EAC3C,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EACvD,+BAA+B,EAC/B,qBAAqB,EACtB,MAAM,uBAAuB,CAAA;AAG9B,YAAY,EAEV,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,EAC1D,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAC9D,UAAU,EAAE,WAAW,EAAE,qBAAqB,EAC9C,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAEjD,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAC7C,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAE/D,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAChD,gBAAgB,EAAE,iBAAiB,EACnC,WAAW,EAAE,eAAe,EAC7B,MAAM,qBAAqB,CAAA;AAG5B,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Agent Passport System — Public API v2.0
|
|
2
|
+
// The Agent Social Contract: Identity · Values · Attribution
|
|
3
|
+
//
|
|
4
|
+
// HIGH-LEVEL API (start here):
|
|
5
|
+
// joinSocialContract() — create an agent in the contract
|
|
6
|
+
// verifySocialContract() — verify another agent
|
|
7
|
+
// delegate() — grant authority
|
|
8
|
+
// recordWork() — sign a receipt for work done
|
|
9
|
+
// proveContributions() — generate Merkle proofs of contributions
|
|
10
|
+
// auditCompliance() — check agent against the Floor
|
|
11
|
+
//
|
|
12
|
+
// Everything else below is the implementation these build on.
|
|
13
|
+
// ── The Social Contract (high-level) ──
|
|
14
|
+
export { joinSocialContract, verifySocialContract, delegate, recordWork, proveContributions, auditCompliance } from './contract.js';
|
|
15
|
+
// ── Layer 1: Identity & Accountability ──
|
|
16
|
+
export { createPassport, signPassport, updatePassport, isExpired } from './core/passport.js';
|
|
17
|
+
export { canonicalize } from './core/canonical.js';
|
|
18
|
+
export { generateKeyPair, sign, verify, publicKeyFromPrivate } from './crypto/keys.js';
|
|
19
|
+
export { verifyPassport, createChallenge, verifyChallenge } from './verification/verify.js';
|
|
20
|
+
export { applyReputationEvent, calculateOverallScore } from './verification/reputation.js';
|
|
21
|
+
// v1.1 — Delegation, Receipts, Revocation
|
|
22
|
+
export { createDelegation, subDelegate, verifyDelegation, revokeDelegation, verifyRevocation, createReceipt, verifyReceipt, getReceipts, getRevocation, clearStores } from './core/delegation.js';
|
|
23
|
+
// ── Layer 2: Human Values Floor ──
|
|
24
|
+
export { loadFloor, loadFloorFromFile, attestFloor, verifyAttestation, evaluateCompliance, negotiateCommonGround } from './core/values.js';
|
|
25
|
+
// ── Layer 3: Beneficiary Attribution ──
|
|
26
|
+
export { hashReceipt, traceBeneficiary, computeAttribution, verifyAttributionReport, buildMerkleRoot, generateMerkleProof, verifyMerkleProof, computeCollaborationAttribution, DEFAULT_SCOPE_WEIGHTS } from './core/attribution.js';
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,6DAA6D;AAC7D,EAAE;AACF,+BAA+B;AAC/B,8DAA8D;AAC9D,mDAAmD;AACnD,8CAA8C;AAC9C,2DAA2D;AAC3D,sEAAsE;AACtE,4DAA4D;AAC5D,EAAE;AACF,8DAA8D;AAE9D,yCAAyC;AACzC,OAAO,EACL,kBAAkB,EAAE,oBAAoB,EACxC,QAAQ,EAAE,UAAU,EACpB,kBAAkB,EAAE,eAAe,EACpC,MAAM,eAAe,CAAA;AAOtB,2CAA2C;AAC3C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC3F,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAE1F,0CAA0C;AAC1C,OAAO,EACL,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAC/C,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,aAAa,EAAE,WAAW,EACxC,MAAM,sBAAsB,CAAA;AAE7B,oCAAoC;AACpC,OAAO,EACL,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,iBAAiB,EAC9B,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,kBAAkB,CAAA;AAEzB,yCAAyC;AACzC,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAAE,uBAAuB,EAC3C,eAAe,EAAE,mBAAmB,EAAE,iBAAiB,EACvD,+BAA+B,EAC/B,qBAAqB,EACtB,MAAM,uBAAuB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
|