@rookdaemon/agora 0.2.8 → 0.3.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/dist/chunk-JUOGKXFN.js +1645 -0
- package/dist/chunk-JUOGKXFN.js.map +1 -0
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +1163 -1137
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1613 -30
- package/dist/index.js +1135 -29
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
- package/dist/cli.d.ts.map +0 -1
- package/dist/config.d.ts +0 -59
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -115
- package/dist/config.js.map +0 -1
- package/dist/discovery/bootstrap.d.ts +0 -32
- package/dist/discovery/bootstrap.d.ts.map +0 -1
- package/dist/discovery/bootstrap.js +0 -36
- package/dist/discovery/bootstrap.js.map +0 -1
- package/dist/discovery/peer-discovery.d.ts +0 -59
- package/dist/discovery/peer-discovery.d.ts.map +0 -1
- package/dist/discovery/peer-discovery.js +0 -108
- package/dist/discovery/peer-discovery.js.map +0 -1
- package/dist/identity/keypair.d.ts +0 -42
- package/dist/identity/keypair.d.ts.map +0 -1
- package/dist/identity/keypair.js +0 -83
- package/dist/identity/keypair.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/message/envelope.d.ts +0 -59
- package/dist/message/envelope.d.ts.map +0 -1
- package/dist/message/envelope.js +0 -83
- package/dist/message/envelope.js.map +0 -1
- package/dist/message/types/paper-discovery.d.ts +0 -28
- package/dist/message/types/paper-discovery.d.ts.map +0 -1
- package/dist/message/types/paper-discovery.js +0 -2
- package/dist/message/types/paper-discovery.js.map +0 -1
- package/dist/message/types/peer-discovery.d.ts +0 -78
- package/dist/message/types/peer-discovery.d.ts.map +0 -1
- package/dist/message/types/peer-discovery.js +0 -90
- package/dist/message/types/peer-discovery.js.map +0 -1
- package/dist/peer/client.d.ts +0 -50
- package/dist/peer/client.d.ts.map +0 -1
- package/dist/peer/client.js +0 -138
- package/dist/peer/client.js.map +0 -1
- package/dist/peer/manager.d.ts +0 -65
- package/dist/peer/manager.d.ts.map +0 -1
- package/dist/peer/manager.js +0 -153
- package/dist/peer/manager.js.map +0 -1
- package/dist/peer/server.d.ts +0 -65
- package/dist/peer/server.d.ts.map +0 -1
- package/dist/peer/server.js +0 -154
- package/dist/peer/server.js.map +0 -1
- package/dist/registry/capability.d.ts +0 -44
- package/dist/registry/capability.d.ts.map +0 -1
- package/dist/registry/capability.js +0 -94
- package/dist/registry/capability.js.map +0 -1
- package/dist/registry/discovery-service.d.ts +0 -64
- package/dist/registry/discovery-service.d.ts.map +0 -1
- package/dist/registry/discovery-service.js +0 -129
- package/dist/registry/discovery-service.js.map +0 -1
- package/dist/registry/messages.d.ts +0 -105
- package/dist/registry/messages.d.ts.map +0 -1
- package/dist/registry/messages.js +0 -2
- package/dist/registry/messages.js.map +0 -1
- package/dist/registry/peer-store.d.ts +0 -57
- package/dist/registry/peer-store.d.ts.map +0 -1
- package/dist/registry/peer-store.js +0 -92
- package/dist/registry/peer-store.js.map +0 -1
- package/dist/registry/peer.d.ts +0 -20
- package/dist/registry/peer.d.ts.map +0 -1
- package/dist/registry/peer.js +0 -2
- package/dist/registry/peer.js.map +0 -1
- package/dist/relay/client.d.ts +0 -112
- package/dist/relay/client.d.ts.map +0 -1
- package/dist/relay/client.js +0 -281
- package/dist/relay/client.js.map +0 -1
- package/dist/relay/jwt-auth.d.ts +0 -40
- package/dist/relay/jwt-auth.d.ts.map +0 -1
- package/dist/relay/jwt-auth.js +0 -109
- package/dist/relay/jwt-auth.js.map +0 -1
- package/dist/relay/message-buffer.d.ts +0 -41
- package/dist/relay/message-buffer.d.ts.map +0 -1
- package/dist/relay/message-buffer.js +0 -53
- package/dist/relay/message-buffer.js.map +0 -1
- package/dist/relay/rest-api.d.ts +0 -68
- package/dist/relay/rest-api.d.ts.map +0 -1
- package/dist/relay/rest-api.js +0 -225
- package/dist/relay/rest-api.js.map +0 -1
- package/dist/relay/run-relay.d.ts +0 -33
- package/dist/relay/run-relay.d.ts.map +0 -1
- package/dist/relay/run-relay.js +0 -57
- package/dist/relay/run-relay.js.map +0 -1
- package/dist/relay/server.d.ts +0 -91
- package/dist/relay/server.d.ts.map +0 -1
- package/dist/relay/server.js +0 -385
- package/dist/relay/server.js.map +0 -1
- package/dist/relay/store.d.ts +0 -19
- package/dist/relay/store.d.ts.map +0 -1
- package/dist/relay/store.js +0 -55
- package/dist/relay/store.js.map +0 -1
- package/dist/relay/types.d.ts +0 -35
- package/dist/relay/types.d.ts.map +0 -1
- package/dist/relay/types.js +0 -2
- package/dist/relay/types.js.map +0 -1
- package/dist/reputation/commit-reveal.d.ts +0 -45
- package/dist/reputation/commit-reveal.d.ts.map +0 -1
- package/dist/reputation/commit-reveal.js +0 -125
- package/dist/reputation/commit-reveal.js.map +0 -1
- package/dist/reputation/scoring.d.ts +0 -31
- package/dist/reputation/scoring.d.ts.map +0 -1
- package/dist/reputation/scoring.js +0 -105
- package/dist/reputation/scoring.js.map +0 -1
- package/dist/reputation/store.d.ts +0 -83
- package/dist/reputation/store.d.ts.map +0 -1
- package/dist/reputation/store.js +0 -202
- package/dist/reputation/store.js.map +0 -1
- package/dist/reputation/types.d.ts +0 -150
- package/dist/reputation/types.d.ts.map +0 -1
- package/dist/reputation/types.js +0 -113
- package/dist/reputation/types.js.map +0 -1
- package/dist/reputation/verification.d.ts +0 -28
- package/dist/reputation/verification.d.ts.map +0 -1
- package/dist/reputation/verification.js +0 -91
- package/dist/reputation/verification.js.map +0 -1
- package/dist/service.d.ts +0 -90
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -176
- package/dist/service.js.map +0 -1
- package/dist/transport/http.d.ts +0 -41
- package/dist/transport/http.d.ts.map +0 -1
- package/dist/transport/http.js +0 -103
- package/dist/transport/http.js.map +0 -1
- package/dist/transport/peer-config.d.ts +0 -38
- package/dist/transport/peer-config.d.ts.map +0 -1
- package/dist/transport/peer-config.js +0 -41
- package/dist/transport/peer-config.js.map +0 -1
- package/dist/transport/relay.d.ts +0 -30
- package/dist/transport/relay.d.ts.map +0 -1
- package/dist/transport/relay.js +0 -85
- package/dist/transport/relay.js.map +0 -1
- package/dist/utils.d.ts +0 -40
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -59
- package/dist/utils.js.map +0 -1
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Commit-reveal pattern implementation for tamper-proof predictions.
|
|
3
|
-
* Agents commit to predictions before outcomes are known, then reveal after.
|
|
4
|
-
*/
|
|
5
|
-
import { createHash } from 'node:crypto';
|
|
6
|
-
import { createEnvelope } from '../message/envelope.js';
|
|
7
|
-
import { validateCommitRecord, validateRevealRecord } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Create a commitment hash for a prediction
|
|
10
|
-
* @param prediction - The prediction string
|
|
11
|
-
* @returns SHA-256 hash of the prediction (hex string)
|
|
12
|
-
*/
|
|
13
|
-
export function hashPrediction(prediction) {
|
|
14
|
-
return createHash('sha256').update(prediction).digest('hex');
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Create a signed commit record
|
|
18
|
-
* @param agent - Public key of the committing agent
|
|
19
|
-
* @param privateKey - Private key for signing
|
|
20
|
-
* @param domain - Domain of the prediction
|
|
21
|
-
* @param prediction - The prediction to commit to
|
|
22
|
-
* @param timestamp - Timestamp for the commit (ms)
|
|
23
|
-
* @param expiryMs - Expiry time in milliseconds from timestamp
|
|
24
|
-
* @returns Signed CommitRecord
|
|
25
|
-
*/
|
|
26
|
-
export function createCommit(agent, privateKey, domain, prediction, timestamp, expiryMs) {
|
|
27
|
-
const commitment = hashPrediction(prediction);
|
|
28
|
-
const expiry = timestamp + expiryMs;
|
|
29
|
-
// Create the payload for signing
|
|
30
|
-
const payload = {
|
|
31
|
-
agent,
|
|
32
|
-
domain,
|
|
33
|
-
commitment,
|
|
34
|
-
timestamp,
|
|
35
|
-
expiry,
|
|
36
|
-
};
|
|
37
|
-
// Create signed envelope with type 'commit'
|
|
38
|
-
const envelope = createEnvelope('commit', agent, privateKey, payload, timestamp);
|
|
39
|
-
// Return commit record
|
|
40
|
-
return {
|
|
41
|
-
id: envelope.id,
|
|
42
|
-
agent,
|
|
43
|
-
domain,
|
|
44
|
-
commitment,
|
|
45
|
-
timestamp,
|
|
46
|
-
expiry,
|
|
47
|
-
signature: envelope.signature,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Create a signed reveal record
|
|
52
|
-
* @param agent - Public key of the revealing agent
|
|
53
|
-
* @param privateKey - Private key for signing
|
|
54
|
-
* @param commitmentId - ID of the original commit record
|
|
55
|
-
* @param prediction - The original prediction (plaintext)
|
|
56
|
-
* @param outcome - The observed outcome
|
|
57
|
-
* @param timestamp - Timestamp for the reveal (ms)
|
|
58
|
-
* @param evidence - Optional evidence for the outcome
|
|
59
|
-
* @returns Signed RevealRecord
|
|
60
|
-
*/
|
|
61
|
-
export function createReveal(agent, privateKey, commitmentId, prediction, outcome, timestamp, evidence) {
|
|
62
|
-
// Create the payload for signing
|
|
63
|
-
const payload = {
|
|
64
|
-
agent,
|
|
65
|
-
commitmentId,
|
|
66
|
-
prediction,
|
|
67
|
-
outcome,
|
|
68
|
-
timestamp,
|
|
69
|
-
};
|
|
70
|
-
if (evidence !== undefined) {
|
|
71
|
-
payload.evidence = evidence;
|
|
72
|
-
}
|
|
73
|
-
// Create signed envelope with type 'reveal'
|
|
74
|
-
const envelope = createEnvelope('reveal', agent, privateKey, payload, timestamp);
|
|
75
|
-
// Return reveal record
|
|
76
|
-
const record = {
|
|
77
|
-
id: envelope.id,
|
|
78
|
-
agent,
|
|
79
|
-
commitmentId,
|
|
80
|
-
prediction,
|
|
81
|
-
outcome,
|
|
82
|
-
timestamp,
|
|
83
|
-
signature: envelope.signature,
|
|
84
|
-
};
|
|
85
|
-
if (evidence !== undefined) {
|
|
86
|
-
record.evidence = evidence;
|
|
87
|
-
}
|
|
88
|
-
return record;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Verify a reveal against its commitment
|
|
92
|
-
* @param commit - The original commit record
|
|
93
|
-
* @param reveal - The reveal record
|
|
94
|
-
* @returns Object with valid flag and optional reason for failure
|
|
95
|
-
*/
|
|
96
|
-
export function verifyReveal(commit, reveal) {
|
|
97
|
-
// Validate structures
|
|
98
|
-
const commitValidation = validateCommitRecord(commit);
|
|
99
|
-
if (!commitValidation.valid) {
|
|
100
|
-
return { valid: false, reason: `Invalid commit: ${commitValidation.errors.join(', ')}` };
|
|
101
|
-
}
|
|
102
|
-
const revealValidation = validateRevealRecord(reveal);
|
|
103
|
-
if (!revealValidation.valid) {
|
|
104
|
-
return { valid: false, reason: `Invalid reveal: ${revealValidation.errors.join(', ')}` };
|
|
105
|
-
}
|
|
106
|
-
// Check that reveal references the correct commit
|
|
107
|
-
if (reveal.commitmentId !== commit.id) {
|
|
108
|
-
return { valid: false, reason: 'Reveal does not reference this commit' };
|
|
109
|
-
}
|
|
110
|
-
// Check that agents match
|
|
111
|
-
if (reveal.agent !== commit.agent) {
|
|
112
|
-
return { valid: false, reason: 'Reveal agent does not match commit agent' };
|
|
113
|
-
}
|
|
114
|
-
// Check that reveal is after commit expiry
|
|
115
|
-
if (reveal.timestamp < commit.expiry) {
|
|
116
|
-
return { valid: false, reason: 'Reveal timestamp is before commit expiry' };
|
|
117
|
-
}
|
|
118
|
-
// Verify that the prediction hash matches the commitment
|
|
119
|
-
const predictedHash = hashPrediction(reveal.prediction);
|
|
120
|
-
if (predictedHash !== commit.commitment) {
|
|
121
|
-
return { valid: false, reason: 'Prediction hash does not match commitment' };
|
|
122
|
-
}
|
|
123
|
-
return { valid: true };
|
|
124
|
-
}
|
|
125
|
-
//# sourceMappingURL=commit-reveal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commit-reveal.js","sourceRoot":"","sources":["../../src/reputation/commit-reveal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Trust score computation with exponential time decay.
|
|
3
|
-
* Domain-specific reputation scoring from verification history.
|
|
4
|
-
*/
|
|
5
|
-
import type { VerificationRecord, TrustScore } from './types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Exponential decay function for time-based reputation degradation.
|
|
8
|
-
* @param deltaTimeMs - Time since verification (milliseconds)
|
|
9
|
-
* @param lambda - Decay rate (default: ln(2)/70 ≈ 0.0099, giving 70-day half-life)
|
|
10
|
-
* @returns Weight multiplier (0-1)
|
|
11
|
-
*/
|
|
12
|
-
export declare function decay(deltaTimeMs: number, lambda?: number): number;
|
|
13
|
-
/**
|
|
14
|
-
* Compute trust score for an agent in a specific domain
|
|
15
|
-
* @param agent - Public key of the agent being scored
|
|
16
|
-
* @param domain - Capability domain
|
|
17
|
-
* @param verifications - All verification records (will be filtered by target and domain)
|
|
18
|
-
* @param currentTime - Current timestamp (ms)
|
|
19
|
-
* @returns TrustScore object with computed reputation
|
|
20
|
-
*/
|
|
21
|
-
export declare function computeTrustScore(agent: string, domain: string, verifications: VerificationRecord[], currentTime: number): TrustScore;
|
|
22
|
-
/**
|
|
23
|
-
* Compute trust scores for an agent across multiple domains
|
|
24
|
-
* @param agent - Public key of the agent being scored
|
|
25
|
-
* @param verifications - All verification records
|
|
26
|
-
* @param currentTime - Current timestamp (ms)
|
|
27
|
-
* @returns Map of domain to TrustScore
|
|
28
|
-
*/
|
|
29
|
-
export declare function computeTrustScores(agent: string, verifications: VerificationRecord[], currentTime: number): Map<string, TrustScore>;
|
|
30
|
-
export declare const computeAllTrustScores: typeof computeTrustScores;
|
|
31
|
-
//# sourceMappingURL=scoring.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../src/reputation/scoring.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEjE;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,SAAmB,GAAG,MAAM,CAG5E;AAkBD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,kBAAkB,EAAE,EACnC,WAAW,EAAE,MAAM,GAClB,UAAU,CAwDZ;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,kBAAkB,EAAE,EACnC,WAAW,EAAE,MAAM,GAClB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAezB;AAGD,eAAO,MAAM,qBAAqB,2BAAqB,CAAC"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Trust score computation with exponential time decay.
|
|
3
|
-
* Domain-specific reputation scoring from verification history.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Exponential decay function for time-based reputation degradation.
|
|
7
|
-
* @param deltaTimeMs - Time since verification (milliseconds)
|
|
8
|
-
* @param lambda - Decay rate (default: ln(2)/70 ≈ 0.0099, giving 70-day half-life)
|
|
9
|
-
* @returns Weight multiplier (0-1)
|
|
10
|
-
*/
|
|
11
|
-
export function decay(deltaTimeMs, lambda = Math.log(2) / 70) {
|
|
12
|
-
const deltaDays = deltaTimeMs / (1000 * 60 * 60 * 24);
|
|
13
|
-
return Math.exp(-lambda * deltaDays);
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Compute verdict weight
|
|
17
|
-
* @param verdict - Verification verdict
|
|
18
|
-
* @returns Weight value (+1 for correct, -1 for incorrect, 0 for disputed)
|
|
19
|
-
*/
|
|
20
|
-
function verdictWeight(verdict) {
|
|
21
|
-
switch (verdict) {
|
|
22
|
-
case 'correct':
|
|
23
|
-
return 1;
|
|
24
|
-
case 'incorrect':
|
|
25
|
-
return -1;
|
|
26
|
-
case 'disputed':
|
|
27
|
-
return 0;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Compute trust score for an agent in a specific domain
|
|
32
|
-
* @param agent - Public key of the agent being scored
|
|
33
|
-
* @param domain - Capability domain
|
|
34
|
-
* @param verifications - All verification records (will be filtered by target and domain)
|
|
35
|
-
* @param currentTime - Current timestamp (ms)
|
|
36
|
-
* @returns TrustScore object with computed reputation
|
|
37
|
-
*/
|
|
38
|
-
export function computeTrustScore(agent, domain, verifications, currentTime) {
|
|
39
|
-
// Filter verifications for this agent and domain
|
|
40
|
-
const relevantVerifications = verifications.filter(v => v.target === agent && v.domain === domain);
|
|
41
|
-
if (relevantVerifications.length === 0) {
|
|
42
|
-
return {
|
|
43
|
-
agent,
|
|
44
|
-
domain,
|
|
45
|
-
score: 0,
|
|
46
|
-
verificationCount: 0,
|
|
47
|
-
lastVerified: 0,
|
|
48
|
-
topVerifiers: [],
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
// Compute weighted score with time decay
|
|
52
|
-
let totalWeight = 0;
|
|
53
|
-
const verifierWeights = new Map();
|
|
54
|
-
for (const verification of relevantVerifications) {
|
|
55
|
-
const deltaTime = currentTime - verification.timestamp;
|
|
56
|
-
const decayFactor = decay(deltaTime);
|
|
57
|
-
const verdict = verdictWeight(verification.verdict);
|
|
58
|
-
const weight = verdict * verification.confidence * decayFactor;
|
|
59
|
-
totalWeight += weight;
|
|
60
|
-
// Track verifier contributions
|
|
61
|
-
const currentVerifierWeight = verifierWeights.get(verification.verifier) || 0;
|
|
62
|
-
verifierWeights.set(verification.verifier, currentVerifierWeight + Math.abs(weight));
|
|
63
|
-
}
|
|
64
|
-
// Normalize score to 0-1 range
|
|
65
|
-
// Positive verifications push toward 1, negative push toward 0
|
|
66
|
-
const rawScore = totalWeight / Math.max(relevantVerifications.length, 1);
|
|
67
|
-
const normalizedScore = Math.max(0, Math.min(1, (rawScore + 1) / 2));
|
|
68
|
-
// Find most recent verification
|
|
69
|
-
const lastVerified = Math.max(...relevantVerifications.map(v => v.timestamp));
|
|
70
|
-
// Get top verifiers by absolute weight
|
|
71
|
-
const topVerifiers = Array.from(verifierWeights.entries())
|
|
72
|
-
.sort((a, b) => b[1] - a[1])
|
|
73
|
-
.slice(0, 5)
|
|
74
|
-
.map(([verifier]) => verifier);
|
|
75
|
-
return {
|
|
76
|
-
agent,
|
|
77
|
-
domain,
|
|
78
|
-
score: normalizedScore,
|
|
79
|
-
verificationCount: relevantVerifications.length,
|
|
80
|
-
lastVerified,
|
|
81
|
-
topVerifiers,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Compute trust scores for an agent across multiple domains
|
|
86
|
-
* @param agent - Public key of the agent being scored
|
|
87
|
-
* @param verifications - All verification records
|
|
88
|
-
* @param currentTime - Current timestamp (ms)
|
|
89
|
-
* @returns Map of domain to TrustScore
|
|
90
|
-
*/
|
|
91
|
-
export function computeTrustScores(agent, verifications, currentTime) {
|
|
92
|
-
// Get unique domains for this agent
|
|
93
|
-
const domains = new Set(verifications
|
|
94
|
-
.filter(v => v.target === agent)
|
|
95
|
-
.map(v => v.domain));
|
|
96
|
-
const scores = new Map();
|
|
97
|
-
for (const domain of domains) {
|
|
98
|
-
const score = computeTrustScore(agent, domain, verifications, currentTime);
|
|
99
|
-
scores.set(domain, score);
|
|
100
|
-
}
|
|
101
|
-
return scores;
|
|
102
|
-
}
|
|
103
|
-
// Alias for backward compatibility
|
|
104
|
-
export const computeAllTrustScores = computeTrustScores;
|
|
105
|
-
//# sourceMappingURL=scoring.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../src/reputation/scoring.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local reputation store using JSONL append-only log.
|
|
3
|
-
* Stores verification records, commits, and reveals.
|
|
4
|
-
*/
|
|
5
|
-
import type { VerificationRecord, CommitRecord, RevealRecord } from './types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Reputation store with JSONL persistence
|
|
8
|
-
*/
|
|
9
|
-
export declare class ReputationStore {
|
|
10
|
-
private filePath;
|
|
11
|
-
private verifications;
|
|
12
|
-
private commits;
|
|
13
|
-
private reveals;
|
|
14
|
-
private loaded;
|
|
15
|
-
constructor(filePath: string);
|
|
16
|
-
/**
|
|
17
|
-
* Load records from JSONL file
|
|
18
|
-
*/
|
|
19
|
-
load(): Promise<void>;
|
|
20
|
-
/**
|
|
21
|
-
* Ensure the store is loaded
|
|
22
|
-
*/
|
|
23
|
-
private ensureLoaded;
|
|
24
|
-
/**
|
|
25
|
-
* Append a record to the JSONL file
|
|
26
|
-
*/
|
|
27
|
-
private appendToFile;
|
|
28
|
-
/**
|
|
29
|
-
* Add a verification record
|
|
30
|
-
*/
|
|
31
|
-
addVerification(verification: VerificationRecord): Promise<void>;
|
|
32
|
-
/**
|
|
33
|
-
* Add a commit record
|
|
34
|
-
*/
|
|
35
|
-
addCommit(commit: CommitRecord): Promise<void>;
|
|
36
|
-
/**
|
|
37
|
-
* Add a reveal record
|
|
38
|
-
*/
|
|
39
|
-
addReveal(reveal: RevealRecord): Promise<void>;
|
|
40
|
-
/**
|
|
41
|
-
* Get all verifications
|
|
42
|
-
*/
|
|
43
|
-
getVerifications(): Promise<VerificationRecord[]>;
|
|
44
|
-
/**
|
|
45
|
-
* Get verifications for a specific target
|
|
46
|
-
*/
|
|
47
|
-
getVerificationsByTarget(target: string): Promise<VerificationRecord[]>;
|
|
48
|
-
/**
|
|
49
|
-
* Get verifications by domain
|
|
50
|
-
*/
|
|
51
|
-
getVerificationsByDomain(domain: string): Promise<VerificationRecord[]>;
|
|
52
|
-
/**
|
|
53
|
-
* Get verifications for an agent (where they are the target of verification)
|
|
54
|
-
* This requires looking up the target message to find the agent
|
|
55
|
-
* For now, we'll return all verifications and let the caller filter
|
|
56
|
-
*/
|
|
57
|
-
getVerificationsByDomainForAgent(domain: string): Promise<VerificationRecord[]>;
|
|
58
|
-
/**
|
|
59
|
-
* Get all commits
|
|
60
|
-
*/
|
|
61
|
-
getCommits(): Promise<CommitRecord[]>;
|
|
62
|
-
/**
|
|
63
|
-
* Get commit by ID
|
|
64
|
-
*/
|
|
65
|
-
getCommit(id: string): Promise<CommitRecord | null>;
|
|
66
|
-
/**
|
|
67
|
-
* Get commits by agent
|
|
68
|
-
*/
|
|
69
|
-
getCommitsByAgent(agent: string): Promise<CommitRecord[]>;
|
|
70
|
-
/**
|
|
71
|
-
* Get all reveals
|
|
72
|
-
*/
|
|
73
|
-
getReveals(): Promise<RevealRecord[]>;
|
|
74
|
-
/**
|
|
75
|
-
* Get reveal by commitment ID
|
|
76
|
-
*/
|
|
77
|
-
getRevealByCommitment(commitmentId: string): Promise<RevealRecord | null>;
|
|
78
|
-
/**
|
|
79
|
-
* Get reveals by agent
|
|
80
|
-
*/
|
|
81
|
-
getRevealsByAgent(agent: string): Promise<RevealRecord[]>;
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/reputation/store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAWjF;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,MAAM,CAAS;gBAEX,QAAQ,EAAE,MAAM;IAI5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuD3B;;OAEG;YACW,YAAY;IAM1B;;OAEG;YACW,YAAY;IAS1B;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtE;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpD;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpD;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAKvD;;OAEG;IACG,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAK7E;;OAEG;IACG,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAK7E;;;;OAIG;IACG,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAIrF;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAK3C;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKzD;;OAEG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAK/D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAK3C;;OAEG;IACG,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAK/E;;OAEG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAIhE"}
|
package/dist/reputation/store.js
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local reputation store using JSONL append-only log.
|
|
3
|
-
* Stores verification records, commits, and reveals.
|
|
4
|
-
*/
|
|
5
|
-
import { promises as fs } from 'node:fs';
|
|
6
|
-
import { dirname } from 'node:path';
|
|
7
|
-
import { validateVerificationRecord, validateCommitRecord, validateRevealRecord } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Reputation store with JSONL persistence
|
|
10
|
-
*/
|
|
11
|
-
export class ReputationStore {
|
|
12
|
-
filePath;
|
|
13
|
-
verifications = new Map();
|
|
14
|
-
commits = new Map();
|
|
15
|
-
reveals = new Map();
|
|
16
|
-
loaded = false;
|
|
17
|
-
constructor(filePath) {
|
|
18
|
-
this.filePath = filePath;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Load records from JSONL file
|
|
22
|
-
*/
|
|
23
|
-
async load() {
|
|
24
|
-
try {
|
|
25
|
-
const content = await fs.readFile(this.filePath, 'utf-8');
|
|
26
|
-
const lines = content.trim().split('\n').filter(line => line.length > 0);
|
|
27
|
-
for (const line of lines) {
|
|
28
|
-
try {
|
|
29
|
-
const record = JSON.parse(line);
|
|
30
|
-
switch (record.type) {
|
|
31
|
-
case 'verification': {
|
|
32
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
33
|
-
const { type: _type, ...verification } = record;
|
|
34
|
-
const validation = validateVerificationRecord(verification);
|
|
35
|
-
if (validation.valid) {
|
|
36
|
-
this.verifications.set(verification.id, verification);
|
|
37
|
-
}
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
case 'commit': {
|
|
41
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
42
|
-
const { type: _type, ...commit } = record;
|
|
43
|
-
const validation = validateCommitRecord(commit);
|
|
44
|
-
if (validation.valid) {
|
|
45
|
-
this.commits.set(commit.id, commit);
|
|
46
|
-
}
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
case 'reveal': {
|
|
50
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
51
|
-
const { type: _type, ...reveal } = record;
|
|
52
|
-
const validation = validateRevealRecord(reveal);
|
|
53
|
-
if (validation.valid) {
|
|
54
|
-
this.reveals.set(reveal.id, reveal);
|
|
55
|
-
}
|
|
56
|
-
break;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
// Skip invalid lines
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
this.loaded = true;
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
// File doesn't exist yet - that's okay for first run
|
|
69
|
-
if (error.code === 'ENOENT') {
|
|
70
|
-
this.loaded = true;
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
throw error;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Ensure the store is loaded
|
|
78
|
-
*/
|
|
79
|
-
async ensureLoaded() {
|
|
80
|
-
if (!this.loaded) {
|
|
81
|
-
await this.load();
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Append a record to the JSONL file
|
|
86
|
-
*/
|
|
87
|
-
async appendToFile(record) {
|
|
88
|
-
// Ensure directory exists
|
|
89
|
-
await fs.mkdir(dirname(this.filePath), { recursive: true });
|
|
90
|
-
// Append JSONL line
|
|
91
|
-
const line = JSON.stringify(record) + '\n';
|
|
92
|
-
await fs.appendFile(this.filePath, line, 'utf-8');
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Add a verification record
|
|
96
|
-
*/
|
|
97
|
-
async addVerification(verification) {
|
|
98
|
-
await this.ensureLoaded();
|
|
99
|
-
const validation = validateVerificationRecord(verification);
|
|
100
|
-
if (!validation.valid) {
|
|
101
|
-
throw new Error(`Invalid verification: ${validation.errors.join(', ')}`);
|
|
102
|
-
}
|
|
103
|
-
this.verifications.set(verification.id, verification);
|
|
104
|
-
await this.appendToFile({ type: 'verification', ...verification });
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Add a commit record
|
|
108
|
-
*/
|
|
109
|
-
async addCommit(commit) {
|
|
110
|
-
await this.ensureLoaded();
|
|
111
|
-
const validation = validateCommitRecord(commit);
|
|
112
|
-
if (!validation.valid) {
|
|
113
|
-
throw new Error(`Invalid commit: ${validation.errors.join(', ')}`);
|
|
114
|
-
}
|
|
115
|
-
this.commits.set(commit.id, commit);
|
|
116
|
-
await this.appendToFile({ type: 'commit', ...commit });
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Add a reveal record
|
|
120
|
-
*/
|
|
121
|
-
async addReveal(reveal) {
|
|
122
|
-
await this.ensureLoaded();
|
|
123
|
-
const validation = validateRevealRecord(reveal);
|
|
124
|
-
if (!validation.valid) {
|
|
125
|
-
throw new Error(`Invalid reveal: ${validation.errors.join(', ')}`);
|
|
126
|
-
}
|
|
127
|
-
this.reveals.set(reveal.id, reveal);
|
|
128
|
-
await this.appendToFile({ type: 'reveal', ...reveal });
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Get all verifications
|
|
132
|
-
*/
|
|
133
|
-
async getVerifications() {
|
|
134
|
-
await this.ensureLoaded();
|
|
135
|
-
return Array.from(this.verifications.values());
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Get verifications for a specific target
|
|
139
|
-
*/
|
|
140
|
-
async getVerificationsByTarget(target) {
|
|
141
|
-
await this.ensureLoaded();
|
|
142
|
-
return Array.from(this.verifications.values()).filter(v => v.target === target);
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Get verifications by domain
|
|
146
|
-
*/
|
|
147
|
-
async getVerificationsByDomain(domain) {
|
|
148
|
-
await this.ensureLoaded();
|
|
149
|
-
return Array.from(this.verifications.values()).filter(v => v.domain === domain);
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Get verifications for an agent (where they are the target of verification)
|
|
153
|
-
* This requires looking up the target message to find the agent
|
|
154
|
-
* For now, we'll return all verifications and let the caller filter
|
|
155
|
-
*/
|
|
156
|
-
async getVerificationsByDomainForAgent(domain) {
|
|
157
|
-
return this.getVerificationsByDomain(domain);
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Get all commits
|
|
161
|
-
*/
|
|
162
|
-
async getCommits() {
|
|
163
|
-
await this.ensureLoaded();
|
|
164
|
-
return Array.from(this.commits.values());
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Get commit by ID
|
|
168
|
-
*/
|
|
169
|
-
async getCommit(id) {
|
|
170
|
-
await this.ensureLoaded();
|
|
171
|
-
return this.commits.get(id) || null;
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Get commits by agent
|
|
175
|
-
*/
|
|
176
|
-
async getCommitsByAgent(agent) {
|
|
177
|
-
await this.ensureLoaded();
|
|
178
|
-
return Array.from(this.commits.values()).filter(c => c.agent === agent);
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Get all reveals
|
|
182
|
-
*/
|
|
183
|
-
async getReveals() {
|
|
184
|
-
await this.ensureLoaded();
|
|
185
|
-
return Array.from(this.reveals.values());
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Get reveal by commitment ID
|
|
189
|
-
*/
|
|
190
|
-
async getRevealByCommitment(commitmentId) {
|
|
191
|
-
await this.ensureLoaded();
|
|
192
|
-
return Array.from(this.reveals.values()).find(r => r.commitmentId === commitmentId) || null;
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Get reveals by agent
|
|
196
|
-
*/
|
|
197
|
-
async getRevealsByAgent(agent) {
|
|
198
|
-
await this.ensureLoaded();
|
|
199
|
-
return Array.from(this.reveals.values()).filter(r => r.agent === agent);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
//# sourceMappingURL=store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/reputation/store.ts"],"names":[],"mappings":"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"}
|