@tjamescouch/agentchat 0.23.5 → 0.23.7
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 +2 -0
- package/dist/lib/client.d.ts +4 -0
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +12 -0
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/disputes.d.ts +201 -0
- package/dist/lib/disputes.d.ts.map +1 -0
- package/dist/lib/disputes.js +504 -0
- package/dist/lib/disputes.js.map +1 -0
- package/dist/lib/protocol.d.ts +35 -0
- package/dist/lib/protocol.d.ts.map +1 -1
- package/dist/lib/protocol.js +121 -0
- package/dist/lib/protocol.js.map +1 -1
- package/dist/lib/server/handlers/disputes.d.ts +42 -0
- package/dist/lib/server/handlers/disputes.d.ts.map +1 -0
- package/dist/lib/server/handlers/disputes.js +492 -0
- package/dist/lib/server/handlers/disputes.js.map +1 -0
- package/dist/lib/server/handlers/identity.d.ts.map +1 -1
- package/dist/lib/server/handlers/identity.js +4 -2
- package/dist/lib/server/handlers/identity.js.map +1 -1
- package/dist/lib/server/handlers/index.d.ts +1 -0
- package/dist/lib/server/handlers/index.d.ts.map +1 -1
- package/dist/lib/server/handlers/index.js +2 -0
- package/dist/lib/server/handlers/index.js.map +1 -1
- package/dist/lib/server/handlers/message.d.ts.map +1 -1
- package/dist/lib/server/handlers/message.js +8 -3
- package/dist/lib/server/handlers/message.js.map +1 -1
- package/dist/lib/server/handlers/nick.d.ts +19 -0
- package/dist/lib/server/handlers/nick.d.ts.map +1 -0
- package/dist/lib/server/handlers/nick.js +52 -0
- package/dist/lib/server/handlers/nick.js.map +1 -0
- package/dist/lib/server/handlers/skills.d.ts.map +1 -1
- package/dist/lib/server/handlers/skills.js +1 -0
- package/dist/lib/server/handlers/skills.js.map +1 -1
- package/dist/lib/server.d.ts +6 -0
- package/dist/lib/server.d.ts.map +1 -1
- package/dist/lib/server.js +43 -2
- package/dist/lib/server.js.map +1 -1
- package/dist/lib/types.d.ts +75 -5
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +18 -0
- package/dist/lib/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentChat Disputes Module (Agentcourt)
|
|
3
|
+
* Panel-based arbitration for dispute resolution.
|
|
4
|
+
*
|
|
5
|
+
* Lifecycle: DISPUTE_INTENT → DISPUTE_REVEAL → PANEL_SELECTION →
|
|
6
|
+
* EVIDENCE_PERIOD → DELIBERATION → VERDICT
|
|
7
|
+
*/
|
|
8
|
+
import crypto from 'crypto';
|
|
9
|
+
// ============ Constants ============
|
|
10
|
+
export const DISPUTE_CONSTANTS = {
|
|
11
|
+
PANEL_SIZE: 3,
|
|
12
|
+
ARBITER_STAKE: 25,
|
|
13
|
+
ARBITER_REWARD: 5,
|
|
14
|
+
ARBITER_MIN_RATING: 1200,
|
|
15
|
+
ARBITER_MIN_TRANSACTIONS: 10,
|
|
16
|
+
ARBITER_INDEPENDENCE_DAYS: 30,
|
|
17
|
+
ARBITER_MIN_ACCOUNT_AGE_DAYS: 7,
|
|
18
|
+
FILING_FEE: 10,
|
|
19
|
+
EVIDENCE_PERIOD_MS: 3600000, // 1 hour
|
|
20
|
+
ARBITER_RESPONSE_TIMEOUT_MS: 1800000, // 30 minutes
|
|
21
|
+
VOTE_PERIOD_MS: 3600000, // 1 hour
|
|
22
|
+
MAX_DISPUTE_DURATION_MS: 14400000, // 4 hours
|
|
23
|
+
MAX_EVIDENCE_ITEMS: 10,
|
|
24
|
+
MAX_STATEMENT_CHARS: 2000,
|
|
25
|
+
MAX_REASONING_CHARS: 500,
|
|
26
|
+
MAX_REPLACEMENT_ROUNDS: 2,
|
|
27
|
+
REVEAL_TIMEOUT_MS: 600000, // 10 minutes
|
|
28
|
+
};
|
|
29
|
+
// ============ Per-dispute Mutex ============
|
|
30
|
+
/**
|
|
31
|
+
* Serializes async operations on a single dispute to prevent interleaving.
|
|
32
|
+
* Uses a promise-chain pattern: each operation awaits the previous one before running.
|
|
33
|
+
*/
|
|
34
|
+
class DisputeMutex {
|
|
35
|
+
chains = new Map();
|
|
36
|
+
async withLock(disputeId, fn) {
|
|
37
|
+
const prev = this.chains.get(disputeId) ?? Promise.resolve();
|
|
38
|
+
let resolve;
|
|
39
|
+
const next = new Promise(r => { resolve = r; });
|
|
40
|
+
this.chains.set(disputeId, next);
|
|
41
|
+
try {
|
|
42
|
+
await prev;
|
|
43
|
+
return await fn();
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
resolve();
|
|
47
|
+
if (this.chains.get(disputeId) === next) {
|
|
48
|
+
this.chains.delete(disputeId);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// ============ DisputeStore Class ============
|
|
54
|
+
export class DisputeStore {
|
|
55
|
+
disputes = new Map();
|
|
56
|
+
byProposal = new Map(); // proposal_id -> dispute_id
|
|
57
|
+
byAgent = new Map(); // agent_id -> Set<dispute_id>
|
|
58
|
+
timeoutHandlers = new Map();
|
|
59
|
+
mutex = new DisputeMutex();
|
|
60
|
+
/**
|
|
61
|
+
* File a dispute intent (phase 1 of commit-reveal)
|
|
62
|
+
*/
|
|
63
|
+
fileIntent(proposalId, disputantId, respondentId, reason, commitment) {
|
|
64
|
+
const id = generateDisputeId();
|
|
65
|
+
const serverNonce = crypto.randomBytes(16).toString('hex');
|
|
66
|
+
const dispute = {
|
|
67
|
+
id,
|
|
68
|
+
proposal_id: proposalId,
|
|
69
|
+
disputant: disputantId,
|
|
70
|
+
respondent: respondentId,
|
|
71
|
+
reason,
|
|
72
|
+
phase: 'reveal_pending',
|
|
73
|
+
commitment,
|
|
74
|
+
server_nonce: serverNonce,
|
|
75
|
+
arbiters: [],
|
|
76
|
+
replacement_rounds: 0,
|
|
77
|
+
votes: [],
|
|
78
|
+
created_at: Date.now(),
|
|
79
|
+
updated_at: Date.now(),
|
|
80
|
+
filing_fee_escrowed: true,
|
|
81
|
+
};
|
|
82
|
+
this.disputes.set(id, dispute);
|
|
83
|
+
this.byProposal.set(proposalId, id);
|
|
84
|
+
this._indexAgent(disputantId, id);
|
|
85
|
+
this._indexAgent(respondentId, id);
|
|
86
|
+
return dispute;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Reveal the nonce (phase 2 of commit-reveal)
|
|
90
|
+
* Returns null if commitment doesn't match.
|
|
91
|
+
*/
|
|
92
|
+
reveal(disputeId, nonce) {
|
|
93
|
+
const dispute = this.disputes.get(disputeId);
|
|
94
|
+
if (!dispute || dispute.phase !== 'reveal_pending')
|
|
95
|
+
return null;
|
|
96
|
+
// Verify commitment
|
|
97
|
+
const hash = crypto.createHash('sha256').update(nonce).digest('hex');
|
|
98
|
+
if (hash !== dispute.commitment)
|
|
99
|
+
return null;
|
|
100
|
+
dispute.nonce = nonce;
|
|
101
|
+
dispute.phase = 'panel_selection';
|
|
102
|
+
dispute.revealed_at = Date.now();
|
|
103
|
+
dispute.seed = crypto.createHash('sha256')
|
|
104
|
+
.update(dispute.proposal_id + nonce + dispute.server_nonce)
|
|
105
|
+
.digest('hex');
|
|
106
|
+
dispute.updated_at = Date.now();
|
|
107
|
+
return dispute;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Select arbiters from the eligible pool using seeded PRNG.
|
|
111
|
+
* Returns the selected agent IDs.
|
|
112
|
+
*/
|
|
113
|
+
selectPanel(disputeId, eligiblePool) {
|
|
114
|
+
const dispute = this.disputes.get(disputeId);
|
|
115
|
+
if (!dispute || dispute.phase !== 'panel_selection' || !dispute.seed)
|
|
116
|
+
return null;
|
|
117
|
+
if (eligiblePool.length < DISPUTE_CONSTANTS.PANEL_SIZE) {
|
|
118
|
+
// Not enough arbiters — fallback to legacy
|
|
119
|
+
dispute.phase = 'fallback';
|
|
120
|
+
dispute.updated_at = Date.now();
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
// Seeded selection using the seed
|
|
124
|
+
const selected = seededShuffle(eligiblePool, dispute.seed)
|
|
125
|
+
.slice(0, DISPUTE_CONSTANTS.PANEL_SIZE);
|
|
126
|
+
dispute.arbiters = selected.map(id => ({
|
|
127
|
+
agent_id: id,
|
|
128
|
+
status: 'pending',
|
|
129
|
+
}));
|
|
130
|
+
dispute.phase = 'arbiter_response';
|
|
131
|
+
dispute.panel_formed_at = Date.now();
|
|
132
|
+
dispute.updated_at = Date.now();
|
|
133
|
+
// Index arbiters
|
|
134
|
+
for (const id of selected) {
|
|
135
|
+
this._indexAgent(id, disputeId);
|
|
136
|
+
}
|
|
137
|
+
return selected;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Arbiter accepts their panel appointment
|
|
141
|
+
*/
|
|
142
|
+
arbiterAccept(disputeId, arbiterId) {
|
|
143
|
+
const dispute = this.disputes.get(disputeId);
|
|
144
|
+
if (!dispute || dispute.phase !== 'arbiter_response')
|
|
145
|
+
return false;
|
|
146
|
+
const slot = dispute.arbiters.find(a => a.agent_id === arbiterId && a.status === 'pending');
|
|
147
|
+
if (!slot)
|
|
148
|
+
return false;
|
|
149
|
+
slot.status = 'accepted';
|
|
150
|
+
slot.accepted_at = Date.now();
|
|
151
|
+
dispute.updated_at = Date.now();
|
|
152
|
+
// Check if all arbiters have accepted → move to evidence phase
|
|
153
|
+
if (dispute.arbiters.every(a => a.status === 'accepted')) {
|
|
154
|
+
dispute.phase = 'evidence';
|
|
155
|
+
dispute.evidence_deadline = Date.now() + DISPUTE_CONSTANTS.EVIDENCE_PERIOD_MS;
|
|
156
|
+
dispute.updated_at = Date.now();
|
|
157
|
+
}
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Arbiter declines — forfeit stake, trigger replacement
|
|
162
|
+
*/
|
|
163
|
+
arbiterDecline(disputeId, arbiterId, replacementPool) {
|
|
164
|
+
const dispute = this.disputes.get(disputeId);
|
|
165
|
+
if (!dispute || dispute.phase !== 'arbiter_response')
|
|
166
|
+
return null;
|
|
167
|
+
const slot = dispute.arbiters.find(a => a.agent_id === arbiterId && a.status === 'pending');
|
|
168
|
+
if (!slot)
|
|
169
|
+
return null;
|
|
170
|
+
slot.status = 'declined';
|
|
171
|
+
dispute.replacement_rounds++;
|
|
172
|
+
dispute.updated_at = Date.now();
|
|
173
|
+
if (dispute.replacement_rounds > DISPUTE_CONSTANTS.MAX_REPLACEMENT_ROUNDS) {
|
|
174
|
+
dispute.phase = 'fallback';
|
|
175
|
+
dispute.updated_at = Date.now();
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
// Find a replacement from pool (exclude current/past arbiters and parties)
|
|
179
|
+
const excluded = new Set([
|
|
180
|
+
dispute.disputant,
|
|
181
|
+
dispute.respondent,
|
|
182
|
+
...dispute.arbiters.map(a => a.agent_id),
|
|
183
|
+
]);
|
|
184
|
+
const candidates = replacementPool.filter(id => !excluded.has(id));
|
|
185
|
+
if (candidates.length === 0) {
|
|
186
|
+
dispute.phase = 'fallback';
|
|
187
|
+
dispute.updated_at = Date.now();
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
// Pick first available (deterministic from remaining pool)
|
|
191
|
+
const replacement = candidates[0];
|
|
192
|
+
slot.status = 'replaced';
|
|
193
|
+
dispute.arbiters.push({
|
|
194
|
+
agent_id: replacement,
|
|
195
|
+
status: 'pending',
|
|
196
|
+
});
|
|
197
|
+
this._indexAgent(replacement, disputeId);
|
|
198
|
+
return replacement;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Submit evidence for a dispute
|
|
202
|
+
*/
|
|
203
|
+
submitEvidence(disputeId, agentId, items, statement, sig) {
|
|
204
|
+
const dispute = this.disputes.get(disputeId);
|
|
205
|
+
if (!dispute || dispute.phase !== 'evidence')
|
|
206
|
+
return false;
|
|
207
|
+
// Check deadline
|
|
208
|
+
if (dispute.evidence_deadline && Date.now() > dispute.evidence_deadline)
|
|
209
|
+
return false;
|
|
210
|
+
// Reject duplicate submission from same party
|
|
211
|
+
if (agentId === dispute.disputant && dispute.disputant_evidence)
|
|
212
|
+
return false;
|
|
213
|
+
if (agentId === dispute.respondent && dispute.respondent_evidence)
|
|
214
|
+
return false;
|
|
215
|
+
// Validate limits
|
|
216
|
+
if (items.length > DISPUTE_CONSTANTS.MAX_EVIDENCE_ITEMS)
|
|
217
|
+
return false;
|
|
218
|
+
if (statement.length > DISPUTE_CONSTANTS.MAX_STATEMENT_CHARS)
|
|
219
|
+
return false;
|
|
220
|
+
// Hash each item for integrity (sorted keys for deterministic hashing)
|
|
221
|
+
const hashedItems = items.map(item => ({
|
|
222
|
+
...item,
|
|
223
|
+
hash: crypto.createHash('sha256').update(JSON.stringify(item, Object.keys(item).sort())).digest('hex'),
|
|
224
|
+
}));
|
|
225
|
+
const evidence = { items: hashedItems, statement, sig };
|
|
226
|
+
if (agentId === dispute.disputant) {
|
|
227
|
+
dispute.disputant_evidence = evidence;
|
|
228
|
+
}
|
|
229
|
+
else if (agentId === dispute.respondent) {
|
|
230
|
+
dispute.respondent_evidence = evidence;
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
dispute.updated_at = Date.now();
|
|
236
|
+
return true;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Close evidence period and move to deliberation
|
|
240
|
+
*/
|
|
241
|
+
closeEvidence(disputeId) {
|
|
242
|
+
const dispute = this.disputes.get(disputeId);
|
|
243
|
+
if (!dispute || dispute.phase !== 'evidence')
|
|
244
|
+
return false;
|
|
245
|
+
dispute.phase = 'deliberation';
|
|
246
|
+
dispute.vote_deadline = Date.now() + DISPUTE_CONSTANTS.VOTE_PERIOD_MS;
|
|
247
|
+
dispute.updated_at = Date.now();
|
|
248
|
+
return true;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Arbiter casts a vote
|
|
252
|
+
*/
|
|
253
|
+
castVote(disputeId, arbiterId, verdict, reasoning, sig) {
|
|
254
|
+
const dispute = this.disputes.get(disputeId);
|
|
255
|
+
if (!dispute || dispute.phase !== 'deliberation')
|
|
256
|
+
return false;
|
|
257
|
+
// Check deadline
|
|
258
|
+
if (dispute.vote_deadline && Date.now() > dispute.vote_deadline)
|
|
259
|
+
return false;
|
|
260
|
+
// Validate reasoning length
|
|
261
|
+
if (reasoning.length > DISPUTE_CONSTANTS.MAX_REASONING_CHARS)
|
|
262
|
+
return false;
|
|
263
|
+
// Must be an accepted arbiter
|
|
264
|
+
const slot = dispute.arbiters.find(a => a.agent_id === arbiterId && a.status === 'accepted');
|
|
265
|
+
if (!slot)
|
|
266
|
+
return false;
|
|
267
|
+
const vote = {
|
|
268
|
+
arbiter: arbiterId,
|
|
269
|
+
verdict,
|
|
270
|
+
reasoning,
|
|
271
|
+
sig,
|
|
272
|
+
voted_at: Date.now(),
|
|
273
|
+
};
|
|
274
|
+
slot.vote = vote;
|
|
275
|
+
slot.status = 'voted';
|
|
276
|
+
dispute.votes.push(vote);
|
|
277
|
+
dispute.updated_at = Date.now();
|
|
278
|
+
// Check if all accepted arbiters have voted
|
|
279
|
+
const acceptedArbiters = dispute.arbiters.filter(a => a.status === 'accepted' || a.status === 'voted');
|
|
280
|
+
const allVoted = acceptedArbiters.every(a => a.status === 'voted');
|
|
281
|
+
if (allVoted) {
|
|
282
|
+
this._resolveVerdict(dispute);
|
|
283
|
+
}
|
|
284
|
+
return true;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Force-resolve a dispute after vote deadline
|
|
288
|
+
* (some arbiters may not have voted — they forfeit)
|
|
289
|
+
*/
|
|
290
|
+
forceResolve(disputeId) {
|
|
291
|
+
const dispute = this.disputes.get(disputeId);
|
|
292
|
+
if (!dispute || dispute.phase !== 'deliberation')
|
|
293
|
+
return null;
|
|
294
|
+
// Mark non-voters as forfeited
|
|
295
|
+
for (const slot of dispute.arbiters) {
|
|
296
|
+
if (slot.status === 'accepted') {
|
|
297
|
+
slot.status = 'forfeited';
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
this._resolveVerdict(dispute);
|
|
301
|
+
return dispute;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Get a dispute by ID
|
|
305
|
+
*/
|
|
306
|
+
get(id) {
|
|
307
|
+
return this.disputes.get(id) || null;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Get dispute by proposal ID
|
|
311
|
+
*/
|
|
312
|
+
getByProposal(proposalId) {
|
|
313
|
+
const disputeId = this.byProposal.get(proposalId);
|
|
314
|
+
if (!disputeId)
|
|
315
|
+
return null;
|
|
316
|
+
return this.get(disputeId);
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* List disputes involving an agent
|
|
320
|
+
*/
|
|
321
|
+
listByAgent(agentId) {
|
|
322
|
+
const ids = this.byAgent.get(agentId) || new Set();
|
|
323
|
+
return Array.from(ids)
|
|
324
|
+
.map(id => this.get(id))
|
|
325
|
+
.filter((d) => d !== null)
|
|
326
|
+
.sort((a, b) => b.created_at - a.created_at);
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Clear a timeout handler
|
|
330
|
+
*/
|
|
331
|
+
clearTimeout(disputeId) {
|
|
332
|
+
const handler = this.timeoutHandlers.get(disputeId);
|
|
333
|
+
if (handler) {
|
|
334
|
+
globalThis.clearTimeout(handler);
|
|
335
|
+
this.timeoutHandlers.delete(disputeId);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Set a timeout handler for a dispute phase
|
|
340
|
+
*/
|
|
341
|
+
setTimeout(disputeId, ms, callback) {
|
|
342
|
+
this.clearTimeout(disputeId);
|
|
343
|
+
const handler = globalThis.setTimeout(callback, ms);
|
|
344
|
+
this.timeoutHandlers.set(disputeId, handler);
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Cleanup all timeouts
|
|
348
|
+
*/
|
|
349
|
+
close() {
|
|
350
|
+
for (const handler of this.timeoutHandlers.values()) {
|
|
351
|
+
globalThis.clearTimeout(handler);
|
|
352
|
+
}
|
|
353
|
+
this.timeoutHandlers.clear();
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Acquire a per-dispute lock for async operations.
|
|
357
|
+
* Serializes concurrent reveal/decline/panel-selection sequences
|
|
358
|
+
* that span await boundaries (e.g. buildArbiterPool).
|
|
359
|
+
*/
|
|
360
|
+
withLock(disputeId, fn) {
|
|
361
|
+
return this.mutex.withLock(disputeId, fn);
|
|
362
|
+
}
|
|
363
|
+
// ============ Private ============
|
|
364
|
+
_resolveVerdict(dispute) {
|
|
365
|
+
const votes = dispute.votes;
|
|
366
|
+
if (votes.length === 0) {
|
|
367
|
+
dispute.verdict = 'mutual';
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
// Count votes
|
|
371
|
+
const counts = { disputant: 0, respondent: 0, mutual: 0 };
|
|
372
|
+
for (const v of votes) {
|
|
373
|
+
counts[v.verdict]++;
|
|
374
|
+
}
|
|
375
|
+
// Majority wins
|
|
376
|
+
if (counts.disputant >= 2) {
|
|
377
|
+
dispute.verdict = 'disputant';
|
|
378
|
+
}
|
|
379
|
+
else if (counts.respondent >= 2) {
|
|
380
|
+
dispute.verdict = 'respondent';
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
// No majority (all different, or 2-voter tie) → mutual
|
|
384
|
+
dispute.verdict = 'mutual';
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
dispute.phase = 'resolved';
|
|
388
|
+
dispute.resolved_at = Date.now();
|
|
389
|
+
dispute.updated_at = Date.now();
|
|
390
|
+
}
|
|
391
|
+
_indexAgent(agentId, disputeId) {
|
|
392
|
+
if (!this.byAgent.has(agentId)) {
|
|
393
|
+
this.byAgent.set(agentId, new Set());
|
|
394
|
+
}
|
|
395
|
+
this.byAgent.get(agentId).add(disputeId);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
// ============ Helpers ============
|
|
399
|
+
/**
|
|
400
|
+
* Generate a unique dispute ID
|
|
401
|
+
*/
|
|
402
|
+
export function generateDisputeId() {
|
|
403
|
+
const timestamp = Date.now().toString(36);
|
|
404
|
+
const random = crypto.randomBytes(4).toString('hex');
|
|
405
|
+
return `disp_${timestamp}_${random}`;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Seeded shuffle using SHA256 chain for deterministic random selection
|
|
409
|
+
*/
|
|
410
|
+
function seededShuffle(arr, seed) {
|
|
411
|
+
const result = [...arr];
|
|
412
|
+
let currentSeed = seed;
|
|
413
|
+
for (let i = result.length - 1; i > 0; i--) {
|
|
414
|
+
currentSeed = crypto.createHash('sha256').update(currentSeed).digest('hex');
|
|
415
|
+
const j = parseInt(currentSeed.substring(0, 8), 16) % (i + 1);
|
|
416
|
+
[result[i], result[j]] = [result[j], result[i]];
|
|
417
|
+
}
|
|
418
|
+
return result;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Signing content generators for dispute messages
|
|
422
|
+
*/
|
|
423
|
+
export function getDisputeIntentSigningContent(proposalId, reason, commitment) {
|
|
424
|
+
return `DISPUTE_INTENT|${proposalId}|${reason}|${commitment}`;
|
|
425
|
+
}
|
|
426
|
+
export function getDisputeRevealSigningContent(proposalId, nonce) {
|
|
427
|
+
return `DISPUTE_REVEAL|${proposalId}|${nonce}`;
|
|
428
|
+
}
|
|
429
|
+
export function getEvidenceSigningContent(disputeId, itemsJson) {
|
|
430
|
+
const hash = crypto.createHash('sha256').update(itemsJson).digest('hex');
|
|
431
|
+
return `EVIDENCE|${disputeId}|${hash}`;
|
|
432
|
+
}
|
|
433
|
+
export function getArbiterAcceptSigningContent(disputeId) {
|
|
434
|
+
return `ARBITER_ACCEPT|${disputeId}`;
|
|
435
|
+
}
|
|
436
|
+
export function getArbiterDeclineSigningContent(disputeId, reason) {
|
|
437
|
+
return `ARBITER_DECLINE|${disputeId}|${reason}`;
|
|
438
|
+
}
|
|
439
|
+
export function getVoteSigningContent(disputeId, verdict) {
|
|
440
|
+
return `VOTE|${disputeId}|${verdict}`;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Calculate all rating changes for a resolved dispute.
|
|
444
|
+
* Uses standard ELO expected outcome formula with configurable K-factor.
|
|
445
|
+
*
|
|
446
|
+
* Party settlements:
|
|
447
|
+
* - Winner gains half of loser's loss (inflation prevention)
|
|
448
|
+
* - Mutual fault: both lose
|
|
449
|
+
*
|
|
450
|
+
* Arbiter settlements:
|
|
451
|
+
* - Majority voter: +ARBITER_REWARD
|
|
452
|
+
* - Dissenting voter: 0 (stake returned)
|
|
453
|
+
* - No-show/forfeited: -ARBITER_STAKE
|
|
454
|
+
*/
|
|
455
|
+
export function calculateDisputeSettlement(dispute, ratings, effectiveK = 16) {
|
|
456
|
+
const changes = {};
|
|
457
|
+
if (!dispute.verdict || dispute.phase !== 'resolved') {
|
|
458
|
+
throw new Error('Dispute not resolved');
|
|
459
|
+
}
|
|
460
|
+
const disputantRating = ratings[dispute.disputant]?.rating ?? 1200;
|
|
461
|
+
const respondentRating = ratings[dispute.respondent]?.rating ?? 1200;
|
|
462
|
+
// Standard ELO expected outcome
|
|
463
|
+
const eDisputant = 1 / (1 + Math.pow(10, (respondentRating - disputantRating) / 400));
|
|
464
|
+
const eRespondent = 1 - eDisputant;
|
|
465
|
+
if (dispute.verdict === 'disputant') {
|
|
466
|
+
const respondentLoss = Math.max(1, Math.round(effectiveK * eRespondent));
|
|
467
|
+
const disputantGain = Math.max(1, Math.round(respondentLoss * 0.5));
|
|
468
|
+
changes[dispute.disputant] = { oldRating: disputantRating, newRating: disputantRating + disputantGain, change: disputantGain };
|
|
469
|
+
changes[dispute.respondent] = { oldRating: respondentRating, newRating: respondentRating - respondentLoss, change: -respondentLoss };
|
|
470
|
+
}
|
|
471
|
+
else if (dispute.verdict === 'respondent') {
|
|
472
|
+
const disputantLoss = Math.max(1, Math.round(effectiveK * eDisputant));
|
|
473
|
+
const respondentGain = Math.max(1, Math.round(disputantLoss * 0.5));
|
|
474
|
+
changes[dispute.disputant] = { oldRating: disputantRating, newRating: disputantRating - disputantLoss, change: -disputantLoss };
|
|
475
|
+
changes[dispute.respondent] = { oldRating: respondentRating, newRating: respondentRating + respondentGain, change: respondentGain };
|
|
476
|
+
}
|
|
477
|
+
else {
|
|
478
|
+
// Mutual fault: both lose
|
|
479
|
+
const disputantLoss = Math.max(1, Math.round(effectiveK * eDisputant));
|
|
480
|
+
const respondentLoss = Math.max(1, Math.round(effectiveK * eRespondent));
|
|
481
|
+
changes[dispute.disputant] = { oldRating: disputantRating, newRating: disputantRating - disputantLoss, change: -disputantLoss };
|
|
482
|
+
changes[dispute.respondent] = { oldRating: respondentRating, newRating: respondentRating - respondentLoss, change: -respondentLoss };
|
|
483
|
+
}
|
|
484
|
+
// Arbiter rewards/penalties
|
|
485
|
+
for (const slot of dispute.arbiters) {
|
|
486
|
+
const arbiterRating = ratings[slot.agent_id]?.rating ?? 1200;
|
|
487
|
+
if (slot.status === 'voted' && slot.vote) {
|
|
488
|
+
if (slot.vote.verdict === dispute.verdict) {
|
|
489
|
+
// Voted with majority: +ARBITER_REWARD
|
|
490
|
+
changes[slot.agent_id] = { oldRating: arbiterRating, newRating: arbiterRating + DISPUTE_CONSTANTS.ARBITER_REWARD, change: DISPUTE_CONSTANTS.ARBITER_REWARD };
|
|
491
|
+
}
|
|
492
|
+
else {
|
|
493
|
+
// Dissenting: no penalty, stake returned
|
|
494
|
+
changes[slot.agent_id] = { oldRating: arbiterRating, newRating: arbiterRating, change: 0 };
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
else if (slot.status === 'forfeited') {
|
|
498
|
+
// No-show: forfeit stake
|
|
499
|
+
changes[slot.agent_id] = { oldRating: arbiterRating, newRating: arbiterRating - DISPUTE_CONSTANTS.ARBITER_STAKE, change: -DISPUTE_CONSTANTS.ARBITER_STAKE };
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
return changes;
|
|
503
|
+
}
|
|
504
|
+
//# sourceMappingURL=disputes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disputes.js","sourceRoot":"","sources":["../../lib/disputes.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/protocol.d.ts
CHANGED
|
@@ -18,6 +18,12 @@ export declare const ClientMessageType: {
|
|
|
18
18
|
REJECT: "REJECT";
|
|
19
19
|
COMPLETE: "COMPLETE";
|
|
20
20
|
DISPUTE: "DISPUTE";
|
|
21
|
+
DISPUTE_INTENT: "DISPUTE_INTENT";
|
|
22
|
+
DISPUTE_REVEAL: "DISPUTE_REVEAL";
|
|
23
|
+
EVIDENCE: "EVIDENCE";
|
|
24
|
+
ARBITER_ACCEPT: "ARBITER_ACCEPT";
|
|
25
|
+
ARBITER_DECLINE: "ARBITER_DECLINE";
|
|
26
|
+
ARBITER_VOTE: "ARBITER_VOTE";
|
|
21
27
|
REGISTER_SKILLS: "REGISTER_SKILLS";
|
|
22
28
|
SEARCH_SKILLS: "SEARCH_SKILLS";
|
|
23
29
|
SET_PRESENCE: "SET_PRESENCE";
|
|
@@ -27,6 +33,7 @@ export declare const ClientMessageType: {
|
|
|
27
33
|
ADMIN_REVOKE: "ADMIN_REVOKE";
|
|
28
34
|
ADMIN_LIST: "ADMIN_LIST";
|
|
29
35
|
VERIFY_IDENTITY: "VERIFY_IDENTITY";
|
|
36
|
+
SET_NICK: "SET_NICK";
|
|
30
37
|
};
|
|
31
38
|
export declare const ServerMessageType: {
|
|
32
39
|
WELCOME: "WELCOME";
|
|
@@ -44,6 +51,14 @@ export declare const ServerMessageType: {
|
|
|
44
51
|
REJECT: "REJECT";
|
|
45
52
|
COMPLETE: "COMPLETE";
|
|
46
53
|
DISPUTE: "DISPUTE";
|
|
54
|
+
PANEL_FORMED: "PANEL_FORMED";
|
|
55
|
+
ARBITER_ASSIGNED: "ARBITER_ASSIGNED";
|
|
56
|
+
EVIDENCE_RECEIVED: "EVIDENCE_RECEIVED";
|
|
57
|
+
CASE_READY: "CASE_READY";
|
|
58
|
+
VERDICT: "VERDICT";
|
|
59
|
+
DISPUTE_FALLBACK: "DISPUTE_FALLBACK";
|
|
60
|
+
DISPUTE_INTENT_ACK: "DISPUTE_INTENT_ACK";
|
|
61
|
+
DISPUTE_REVEALED: "DISPUTE_REVEALED";
|
|
47
62
|
SKILLS_REGISTERED: "SKILLS_REGISTERED";
|
|
48
63
|
SEARCH_RESULTS: "SEARCH_RESULTS";
|
|
49
64
|
PRESENCE_CHANGED: "PRESENCE_CHANGED";
|
|
@@ -53,6 +68,7 @@ export declare const ServerMessageType: {
|
|
|
53
68
|
VERIFY_FAILED: "VERIFY_FAILED";
|
|
54
69
|
ADMIN_RESULT: "ADMIN_RESULT";
|
|
55
70
|
CHALLENGE: "CHALLENGE";
|
|
71
|
+
NICK_CHANGED: "NICK_CHANGED";
|
|
56
72
|
};
|
|
57
73
|
export declare const ErrorCode: {
|
|
58
74
|
AUTH_REQUIRED: "AUTH_REQUIRED";
|
|
@@ -74,6 +90,14 @@ export declare const ErrorCode: {
|
|
|
74
90
|
VERIFICATION_EXPIRED: "VERIFICATION_EXPIRED";
|
|
75
91
|
NO_PUBKEY: "NO_PUBKEY";
|
|
76
92
|
NOT_ALLOWED: "NOT_ALLOWED";
|
|
93
|
+
DISPUTE_NOT_FOUND: "DISPUTE_NOT_FOUND";
|
|
94
|
+
DISPUTE_INVALID_PHASE: "DISPUTE_INVALID_PHASE";
|
|
95
|
+
DISPUTE_COMMITMENT_MISMATCH: "DISPUTE_COMMITMENT_MISMATCH";
|
|
96
|
+
DISPUTE_NOT_PARTY: "DISPUTE_NOT_PARTY";
|
|
97
|
+
DISPUTE_NOT_ARBITER: "DISPUTE_NOT_ARBITER";
|
|
98
|
+
DISPUTE_DEADLINE_PASSED: "DISPUTE_DEADLINE_PASSED";
|
|
99
|
+
DISPUTE_ALREADY_EXISTS: "DISPUTE_ALREADY_EXISTS";
|
|
100
|
+
INSUFFICIENT_ARBITERS: "INSUFFICIENT_ARBITERS";
|
|
77
101
|
};
|
|
78
102
|
export declare const PresenceStatus: {
|
|
79
103
|
ONLINE: "online";
|
|
@@ -169,6 +193,13 @@ interface RawClientMessage {
|
|
|
169
193
|
challenge_id?: string;
|
|
170
194
|
signature?: string;
|
|
171
195
|
timestamp?: number;
|
|
196
|
+
nick?: string;
|
|
197
|
+
commitment?: string;
|
|
198
|
+
dispute_id?: string;
|
|
199
|
+
items?: unknown[];
|
|
200
|
+
statement?: string;
|
|
201
|
+
verdict?: string;
|
|
202
|
+
reasoning?: string;
|
|
172
203
|
}
|
|
173
204
|
/**
|
|
174
205
|
* Validate incoming client message
|
|
@@ -192,6 +223,10 @@ export declare function parse<T = unknown>(data: string): T;
|
|
|
192
223
|
* Format: prop_<timestamp>_<random>
|
|
193
224
|
*/
|
|
194
225
|
export declare function generateProposalId(): string;
|
|
226
|
+
/**
|
|
227
|
+
* Check if a message type is an agentcourt dispute type
|
|
228
|
+
*/
|
|
229
|
+
export declare function isDisputeMessage(type: string): boolean;
|
|
195
230
|
/**
|
|
196
231
|
* Check if a message type is a proposal-related type
|
|
197
232
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../lib/protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAQL,gBAAgB,EAChB,KAAK,EACN,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../lib/protocol.ts"],"names":[],"mappings":"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"}
|