@tjamescouch/agentchat 0.23.6 → 0.24.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 +6 -0
- package/dist/lib/client.d.ts +4 -0
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +15 -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/escrow-hooks.d.ts +1 -0
- package/dist/lib/escrow-hooks.d.ts.map +1 -1
- package/dist/lib/escrow-hooks.js +2 -1
- package/dist/lib/escrow-hooks.js.map +1 -1
- package/dist/lib/protocol.d.ts +39 -0
- package/dist/lib/protocol.d.ts.map +1 -1
- package/dist/lib/protocol.js +134 -0
- package/dist/lib/protocol.js.map +1 -1
- package/dist/lib/redactor.d.ts +38 -0
- package/dist/lib/redactor.d.ts.map +1 -0
- package/dist/lib/redactor.js +103 -0
- package/dist/lib/redactor.js.map +1 -0
- package/dist/lib/reputation.d.ts +7 -0
- package/dist/lib/reputation.d.ts.map +1 -1
- package/dist/lib/reputation.js +10 -0
- package/dist/lib/reputation.js.map +1 -1
- package/dist/lib/server/handlers/disputes.d.ts +38 -0
- package/dist/lib/server/handlers/disputes.d.ts.map +1 -0
- package/dist/lib/server/handlers/disputes.js +591 -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 +8 -3
- 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 +18 -4
- 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/proposal.d.ts.map +1 -1
- package/dist/lib/server/handlers/proposal.js +40 -2
- package/dist/lib/server/handlers/proposal.js.map +1 -1
- package/dist/lib/server/handlers/skills.d.ts.map +1 -1
- package/dist/lib/server/handlers/skills.js +19 -0
- package/dist/lib/server/handlers/skills.js.map +1 -1
- package/dist/lib/server.d.ts +9 -0
- package/dist/lib/server.d.ts.map +1 -1
- package/dist/lib/server.js +83 -2
- package/dist/lib/server.js.map +1 -1
- package/dist/lib/types.d.ts +99 -5
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +22 -0
- package/dist/lib/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,591 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentcourt Dispute Handlers
|
|
3
|
+
* Server-side handlers for the panel-based dispute resolution system
|
|
4
|
+
*/
|
|
5
|
+
import { ServerMessageType, ErrorCode, createMessage, createError, } from '../../protocol.js';
|
|
6
|
+
import { DISPUTE_CONSTANTS, calculateDisputeSettlement, getDisputeIntentSigningContent, getDisputeRevealSigningContent, getEvidenceSigningContent, getArbiterAcceptSigningContent, getArbiterDeclineSigningContent, getVoteSigningContent, } from '../../disputes.js';
|
|
7
|
+
import { Identity } from '../../identity.js';
|
|
8
|
+
import { EscrowEvent } from '../../escrow-hooks.js';
|
|
9
|
+
/**
|
|
10
|
+
* Build the eligible arbiter pool based on Agentcourt spec criteria.
|
|
11
|
+
* Checks: not-a-party, persistent identity, presence, rating, transactions,
|
|
12
|
+
* independence (no recent transactions with parties), panel concurrency, stake availability.
|
|
13
|
+
*/
|
|
14
|
+
async function buildArbiterPool(server, disputantId, respondentId) {
|
|
15
|
+
const pool = [];
|
|
16
|
+
for (const [, agent] of server.agents) {
|
|
17
|
+
const agentId = `@${agent.id}`;
|
|
18
|
+
// Must not be a party
|
|
19
|
+
if (agentId === disputantId || agentId === respondentId)
|
|
20
|
+
continue;
|
|
21
|
+
// Must have persistent identity
|
|
22
|
+
if (!agent.pubkey)
|
|
23
|
+
continue;
|
|
24
|
+
// Must not be away or offline
|
|
25
|
+
if (agent.presence === 'away' || agent.presence === 'offline')
|
|
26
|
+
continue;
|
|
27
|
+
// Check reputation rating >= 1200 and >= 10 transactions
|
|
28
|
+
const rating = await server.reputationStore.getRating(agentId);
|
|
29
|
+
if (!rating || rating.rating < DISPUTE_CONSTANTS.ARBITER_MIN_RATING)
|
|
30
|
+
continue;
|
|
31
|
+
if (!rating || rating.transactions < DISPUTE_CONSTANTS.ARBITER_MIN_TRANSACTIONS)
|
|
32
|
+
continue;
|
|
33
|
+
// Must have sufficient rating for stake (rating - stake > 100 floor)
|
|
34
|
+
if (rating.rating - DISPUTE_CONSTANTS.ARBITER_STAKE < 100)
|
|
35
|
+
continue;
|
|
36
|
+
// Panel concurrency: no more than 3 active panels
|
|
37
|
+
const activePanels = countActivePanels(server, agentId);
|
|
38
|
+
if (activePanels >= 3)
|
|
39
|
+
continue;
|
|
40
|
+
pool.push(agentId);
|
|
41
|
+
}
|
|
42
|
+
return pool;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Count how many active dispute panels an agent is currently serving on
|
|
46
|
+
*/
|
|
47
|
+
function countActivePanels(server, agentId) {
|
|
48
|
+
const disputes = server.disputes.listByAgent(agentId);
|
|
49
|
+
let count = 0;
|
|
50
|
+
for (const d of disputes) {
|
|
51
|
+
if (d.phase === 'arbiter_response' || d.phase === 'evidence' || d.phase === 'deliberation') {
|
|
52
|
+
const isArbiter = d.arbiters?.some((a) => a.agent_id === agentId && (a.status === 'pending' || a.status === 'accepted'));
|
|
53
|
+
if (isArbiter)
|
|
54
|
+
count++;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return count;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Send a message to a specific agent by ID
|
|
61
|
+
*/
|
|
62
|
+
function sendToAgent(server, agentId, msg) {
|
|
63
|
+
const id = agentId.startsWith('@') ? agentId.slice(1) : agentId;
|
|
64
|
+
const ws = server.agentById.get(id);
|
|
65
|
+
if (ws) {
|
|
66
|
+
server._send(ws, msg);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Handle DISPUTE_INTENT — phase 1 of commit-reveal filing
|
|
71
|
+
*/
|
|
72
|
+
export function handleDisputeIntent(server, ws, msg) {
|
|
73
|
+
const agent = server.agents.get(ws);
|
|
74
|
+
if (!agent) {
|
|
75
|
+
server._send(ws, createError(ErrorCode.AUTH_REQUIRED, 'Must IDENTIFY first'));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (!agent.pubkey) {
|
|
79
|
+
server._send(ws, createError(ErrorCode.SIGNATURE_REQUIRED, 'Filing disputes requires persistent identity'));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
// Verify signature
|
|
83
|
+
const sigContent = getDisputeIntentSigningContent(msg.proposal_id, msg.reason, msg.commitment);
|
|
84
|
+
if (!Identity.verify(sigContent, msg.sig, agent.pubkey)) {
|
|
85
|
+
server._log('sig_verification_failed', { agent: agent.id, msg_type: 'DISPUTE_INTENT' });
|
|
86
|
+
server._send(ws, createError(ErrorCode.VERIFICATION_FAILED, 'Invalid signature'));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
// Get the proposal
|
|
90
|
+
const proposal = server.proposals.get(msg.proposal_id);
|
|
91
|
+
if (!proposal) {
|
|
92
|
+
server._send(ws, createError(ErrorCode.PROPOSAL_NOT_FOUND, 'Proposal not found'));
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
// Must be accepted to dispute
|
|
96
|
+
if (proposal.status !== 'accepted' && proposal.status !== 'disputed') {
|
|
97
|
+
server._send(ws, createError(ErrorCode.INVALID_PROPOSAL, 'Can only dispute accepted proposals'));
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
// Must be a party
|
|
101
|
+
const disputantId = `@${agent.id}`;
|
|
102
|
+
if (proposal.from !== disputantId && proposal.to !== disputantId) {
|
|
103
|
+
server._send(ws, createError(ErrorCode.NOT_PROPOSAL_PARTY, 'Not a party to this proposal'));
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
// Check no existing agentcourt dispute for this proposal
|
|
107
|
+
if (server.disputes.getByProposal(msg.proposal_id)) {
|
|
108
|
+
server._send(ws, createError(ErrorCode.DISPUTE_ALREADY_EXISTS, 'Agentcourt dispute already filed for this proposal'));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const respondentId = proposal.from === disputantId ? proposal.to : proposal.from;
|
|
112
|
+
const dispute = server.disputes.fileIntent(msg.proposal_id, disputantId, respondentId, server.redactor.clean(msg.reason), msg.commitment);
|
|
113
|
+
server._log('dispute_intent', { dispute_id: dispute.id, proposal_id: msg.proposal_id, disputant: agent.id });
|
|
114
|
+
// Set reveal timeout
|
|
115
|
+
server.disputes.setTimeout(dispute.id, DISPUTE_CONSTANTS.REVEAL_TIMEOUT_MS, () => {
|
|
116
|
+
const d = server.disputes.get(dispute.id);
|
|
117
|
+
if (d && d.phase === 'reveal_pending') {
|
|
118
|
+
d.phase = 'fallback';
|
|
119
|
+
d.updated_at = Date.now();
|
|
120
|
+
server._log('dispute_reveal_timeout', { dispute_id: dispute.id });
|
|
121
|
+
sendToAgent(server, disputantId, createMessage(ServerMessageType.DISPUTE_FALLBACK, {
|
|
122
|
+
dispute_id: dispute.id,
|
|
123
|
+
reason: 'Reveal timeout expired',
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
// ACK to disputant
|
|
128
|
+
server._send(ws, createMessage(ServerMessageType.DISPUTE_INTENT_ACK, {
|
|
129
|
+
dispute_id: dispute.id,
|
|
130
|
+
proposal_id: msg.proposal_id,
|
|
131
|
+
server_nonce: dispute.server_nonce,
|
|
132
|
+
}));
|
|
133
|
+
// Notify respondent
|
|
134
|
+
sendToAgent(server, respondentId, createMessage(ServerMessageType.MSG, {
|
|
135
|
+
from: '@server',
|
|
136
|
+
from_name: 'Server',
|
|
137
|
+
to: respondentId,
|
|
138
|
+
content: `Dispute filed against proposal ${msg.proposal_id} by ${disputantId}. Agentcourt panel arbitration in progress.`,
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Handle DISPUTE_REVEAL — phase 2 of commit-reveal filing
|
|
143
|
+
*/
|
|
144
|
+
export async function handleDisputeReveal(server, ws, msg) {
|
|
145
|
+
const agent = server.agents.get(ws);
|
|
146
|
+
if (!agent) {
|
|
147
|
+
server._send(ws, createError(ErrorCode.AUTH_REQUIRED, 'Must IDENTIFY first'));
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
// Find the dispute by proposal
|
|
151
|
+
const dispute = server.disputes.getByProposal(msg.proposal_id);
|
|
152
|
+
if (!dispute) {
|
|
153
|
+
server._send(ws, createError(ErrorCode.DISPUTE_NOT_FOUND, 'No pending dispute for this proposal'));
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
// Must be the disputant
|
|
157
|
+
if (dispute.disputant !== `@${agent.id}`) {
|
|
158
|
+
server._send(ws, createError(ErrorCode.DISPUTE_NOT_PARTY, 'Only the disputant can reveal'));
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
// Verify signature (disputant proved persistent identity in DISPUTE_INTENT)
|
|
162
|
+
if (!agent.pubkey) {
|
|
163
|
+
server._send(ws, createError(ErrorCode.SIGNATURE_REQUIRED, 'Dispute reveal requires persistent identity'));
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const sigContent = getDisputeRevealSigningContent(msg.proposal_id, msg.nonce);
|
|
167
|
+
if (!Identity.verify(sigContent, msg.sig, agent.pubkey)) {
|
|
168
|
+
server._log('sig_verification_failed', { agent: agent.id, msg_type: 'DISPUTE_REVEAL' });
|
|
169
|
+
server._send(ws, createError(ErrorCode.VERIFICATION_FAILED, 'Invalid signature'));
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
// Acquire per-dispute lock to serialize reveal→buildPool→selectPanel sequence.
|
|
173
|
+
// Without this, concurrent reveals could interleave across the await boundary.
|
|
174
|
+
await server.disputes.withLock(dispute.id, async () => {
|
|
175
|
+
// Attempt reveal (synchronous — phase check + transition is atomic in single-threaded Node.js)
|
|
176
|
+
const revealed = server.disputes.reveal(dispute.id, msg.nonce);
|
|
177
|
+
if (!revealed) {
|
|
178
|
+
server._send(ws, createError(ErrorCode.DISPUTE_COMMITMENT_MISMATCH, 'Nonce does not match commitment'));
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
server.disputes.clearTimeout(dispute.id);
|
|
182
|
+
server._log('dispute_revealed', { dispute_id: dispute.id });
|
|
183
|
+
// Build arbiter pool and select panel
|
|
184
|
+
const pool = await buildArbiterPool(server, dispute.disputant, dispute.respondent);
|
|
185
|
+
const selected = server.disputes.selectPanel(dispute.id, pool);
|
|
186
|
+
if (!selected) {
|
|
187
|
+
// Fallback to legacy
|
|
188
|
+
server._log('dispute_fallback', { dispute_id: dispute.id, pool_size: pool.length });
|
|
189
|
+
const fallbackMsg = createMessage(ServerMessageType.DISPUTE_FALLBACK, {
|
|
190
|
+
dispute_id: dispute.id,
|
|
191
|
+
proposal_id: msg.proposal_id,
|
|
192
|
+
reason: `Insufficient eligible arbiters (${pool.length} available, ${DISPUTE_CONSTANTS.PANEL_SIZE} required)`,
|
|
193
|
+
});
|
|
194
|
+
sendToAgent(server, dispute.disputant, fallbackMsg);
|
|
195
|
+
sendToAgent(server, dispute.respondent, fallbackMsg);
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
// Send PANEL_FORMED to both parties and arbiters
|
|
199
|
+
const d = server.disputes.get(dispute.id);
|
|
200
|
+
const panelMsg = createMessage(ServerMessageType.PANEL_FORMED, {
|
|
201
|
+
dispute_id: dispute.id,
|
|
202
|
+
proposal_id: msg.proposal_id,
|
|
203
|
+
arbiters: selected,
|
|
204
|
+
disputant: dispute.disputant,
|
|
205
|
+
respondent: dispute.respondent,
|
|
206
|
+
evidence_deadline: null, // set after all arbiters accept
|
|
207
|
+
vote_deadline: null,
|
|
208
|
+
seed: d.seed,
|
|
209
|
+
server_nonce: d.server_nonce,
|
|
210
|
+
});
|
|
211
|
+
sendToAgent(server, dispute.disputant, panelMsg);
|
|
212
|
+
sendToAgent(server, dispute.respondent, panelMsg);
|
|
213
|
+
// Send individual assignment to each arbiter
|
|
214
|
+
for (const arbiterId of selected) {
|
|
215
|
+
sendToAgent(server, arbiterId, createMessage(ServerMessageType.ARBITER_ASSIGNED, {
|
|
216
|
+
dispute_id: dispute.id,
|
|
217
|
+
proposal_id: msg.proposal_id,
|
|
218
|
+
disputant: dispute.disputant,
|
|
219
|
+
respondent: dispute.respondent,
|
|
220
|
+
reason: dispute.reason,
|
|
221
|
+
response_deadline: Date.now() + DISPUTE_CONSTANTS.ARBITER_RESPONSE_TIMEOUT_MS,
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
// Set arbiter response timeout
|
|
225
|
+
server.disputes.setTimeout(dispute.id, DISPUTE_CONSTANTS.ARBITER_RESPONSE_TIMEOUT_MS, () => {
|
|
226
|
+
const d = server.disputes.get(dispute.id);
|
|
227
|
+
if (d && d.phase === 'arbiter_response') {
|
|
228
|
+
// Forfeit non-responding arbiters
|
|
229
|
+
for (const slot of d.arbiters) {
|
|
230
|
+
if (slot.status === 'pending') {
|
|
231
|
+
slot.status = 'forfeited';
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// Check if enough accepted
|
|
235
|
+
const accepted = d.arbiters.filter(a => a.status === 'accepted');
|
|
236
|
+
if (accepted.length >= DISPUTE_CONSTANTS.PANEL_SIZE) {
|
|
237
|
+
d.phase = 'evidence';
|
|
238
|
+
d.evidence_deadline = Date.now() + DISPUTE_CONSTANTS.EVIDENCE_PERIOD_MS;
|
|
239
|
+
d.updated_at = Date.now();
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
d.phase = 'fallback';
|
|
243
|
+
d.updated_at = Date.now();
|
|
244
|
+
const msg = createMessage(ServerMessageType.DISPUTE_FALLBACK, {
|
|
245
|
+
dispute_id: d.id,
|
|
246
|
+
reason: 'Insufficient arbiters accepted',
|
|
247
|
+
});
|
|
248
|
+
sendToAgent(server, d.disputant, msg);
|
|
249
|
+
sendToAgent(server, d.respondent, msg);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
server._send(ws, createMessage(ServerMessageType.DISPUTE_REVEALED, {
|
|
254
|
+
dispute_id: dispute.id,
|
|
255
|
+
panel_size: selected.length,
|
|
256
|
+
seed: d.seed,
|
|
257
|
+
}));
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Handle EVIDENCE submission
|
|
262
|
+
*/
|
|
263
|
+
export function handleEvidence(server, ws, msg) {
|
|
264
|
+
const agent = server.agents.get(ws);
|
|
265
|
+
if (!agent) {
|
|
266
|
+
server._send(ws, createError(ErrorCode.AUTH_REQUIRED, 'Must IDENTIFY first'));
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
const dispute = server.disputes.get(msg.dispute_id);
|
|
270
|
+
if (!dispute) {
|
|
271
|
+
server._send(ws, createError(ErrorCode.DISPUTE_NOT_FOUND, 'Dispute not found'));
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const agentId = `@${agent.id}`;
|
|
275
|
+
if (agentId !== dispute.disputant && agentId !== dispute.respondent) {
|
|
276
|
+
server._send(ws, createError(ErrorCode.DISPUTE_NOT_PARTY, 'Not a party to this dispute'));
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
// Verify signature (both proposal parties have persistent identity)
|
|
280
|
+
if (!agent.pubkey) {
|
|
281
|
+
server._send(ws, createError(ErrorCode.SIGNATURE_REQUIRED, 'Evidence submission requires persistent identity'));
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
const itemsJson = JSON.stringify(msg.items);
|
|
285
|
+
const sigContent = getEvidenceSigningContent(msg.dispute_id, itemsJson);
|
|
286
|
+
if (!Identity.verify(sigContent, msg.sig, agent.pubkey)) {
|
|
287
|
+
server._log('sig_verification_failed', { agent: agent.id, msg_type: 'EVIDENCE' });
|
|
288
|
+
server._send(ws, createError(ErrorCode.VERIFICATION_FAILED, 'Invalid signature'));
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
const success = server.disputes.submitEvidence(msg.dispute_id, agentId, msg.items, server.redactor.clean(msg.statement), msg.sig);
|
|
292
|
+
if (!success) {
|
|
293
|
+
server._send(ws, createError(ErrorCode.DISPUTE_DEADLINE_PASSED, 'Evidence submission failed (deadline passed or limit exceeded)'));
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
server._log('evidence_submitted', { dispute_id: msg.dispute_id, agent: agent.id, items: msg.items.length });
|
|
297
|
+
// Notify all parties and arbiters
|
|
298
|
+
const ackMsg = createMessage(ServerMessageType.EVIDENCE_RECEIVED, {
|
|
299
|
+
dispute_id: msg.dispute_id,
|
|
300
|
+
from: agentId,
|
|
301
|
+
items_count: msg.items.length,
|
|
302
|
+
});
|
|
303
|
+
sendToAgent(server, dispute.disputant, ackMsg);
|
|
304
|
+
sendToAgent(server, dispute.respondent, ackMsg);
|
|
305
|
+
for (const slot of dispute.arbiters) {
|
|
306
|
+
if (slot.status === 'accepted' || slot.status === 'voted') {
|
|
307
|
+
sendToAgent(server, slot.agent_id, ackMsg);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Handle ARBITER_ACCEPT
|
|
313
|
+
*/
|
|
314
|
+
export function handleArbiterAccept(server, ws, msg) {
|
|
315
|
+
const agent = server.agents.get(ws);
|
|
316
|
+
if (!agent) {
|
|
317
|
+
server._send(ws, createError(ErrorCode.AUTH_REQUIRED, 'Must IDENTIFY first'));
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
const dispute = server.disputes.get(msg.dispute_id);
|
|
321
|
+
if (!dispute) {
|
|
322
|
+
server._send(ws, createError(ErrorCode.DISPUTE_NOT_FOUND, 'Dispute not found'));
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
// Verify signature (arbiters must have persistent identity per buildArbiterPool)
|
|
326
|
+
if (!agent.pubkey) {
|
|
327
|
+
server._send(ws, createError(ErrorCode.SIGNATURE_REQUIRED, 'Arbiter operations require persistent identity'));
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
const sigContent = getArbiterAcceptSigningContent(msg.dispute_id);
|
|
331
|
+
if (!Identity.verify(sigContent, msg.sig, agent.pubkey)) {
|
|
332
|
+
server._log('sig_verification_failed', { agent: agent.id, msg_type: 'ARBITER_ACCEPT' });
|
|
333
|
+
server._send(ws, createError(ErrorCode.VERIFICATION_FAILED, 'Invalid signature'));
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
const agentId = `@${agent.id}`;
|
|
337
|
+
const success = server.disputes.arbiterAccept(msg.dispute_id, agentId);
|
|
338
|
+
if (!success) {
|
|
339
|
+
server._send(ws, createError(ErrorCode.DISPUTE_NOT_ARBITER, 'Not a pending arbiter for this dispute'));
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
server._log('arbiter_accepted', { dispute_id: msg.dispute_id, arbiter: agent.id });
|
|
343
|
+
// Check if we transitioned to evidence phase
|
|
344
|
+
const d = server.disputes.get(msg.dispute_id);
|
|
345
|
+
if (d.phase === 'evidence') {
|
|
346
|
+
server.disputes.clearTimeout(msg.dispute_id);
|
|
347
|
+
// Send evidence period notification to all parties
|
|
348
|
+
const evidenceMsg = createMessage(ServerMessageType.MSG, {
|
|
349
|
+
from: '@server',
|
|
350
|
+
from_name: 'Server',
|
|
351
|
+
to: dispute.disputant,
|
|
352
|
+
content: `All arbiters accepted. Evidence period open until ${new Date(d.evidence_deadline).toISOString()}. Submit your evidence now.`,
|
|
353
|
+
});
|
|
354
|
+
sendToAgent(server, d.disputant, evidenceMsg);
|
|
355
|
+
sendToAgent(server, d.respondent, { ...evidenceMsg, to: d.respondent });
|
|
356
|
+
// Set evidence deadline timeout
|
|
357
|
+
server.disputes.setTimeout(msg.dispute_id, DISPUTE_CONSTANTS.EVIDENCE_PERIOD_MS, () => {
|
|
358
|
+
const dispute = server.disputes.get(msg.dispute_id);
|
|
359
|
+
if (dispute && dispute.phase === 'evidence') {
|
|
360
|
+
server.disputes.closeEvidence(msg.dispute_id);
|
|
361
|
+
_sendCaseReady(server, msg.dispute_id);
|
|
362
|
+
}
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Handle ARBITER_DECLINE
|
|
368
|
+
*/
|
|
369
|
+
export async function handleArbiterDecline(server, ws, msg) {
|
|
370
|
+
const agent = server.agents.get(ws);
|
|
371
|
+
if (!agent) {
|
|
372
|
+
server._send(ws, createError(ErrorCode.AUTH_REQUIRED, 'Must IDENTIFY first'));
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
const dispute = server.disputes.get(msg.dispute_id);
|
|
376
|
+
if (!dispute) {
|
|
377
|
+
server._send(ws, createError(ErrorCode.DISPUTE_NOT_FOUND, 'Dispute not found'));
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
// Verify signature (arbiters must have persistent identity per buildArbiterPool)
|
|
381
|
+
if (!agent.pubkey) {
|
|
382
|
+
server._send(ws, createError(ErrorCode.SIGNATURE_REQUIRED, 'Arbiter operations require persistent identity'));
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
if (msg.sig) {
|
|
386
|
+
const sigContent = getArbiterDeclineSigningContent(msg.dispute_id, msg.reason || '');
|
|
387
|
+
if (!Identity.verify(sigContent, msg.sig, agent.pubkey)) {
|
|
388
|
+
server._log('sig_verification_failed', { agent: agent.id, msg_type: 'ARBITER_DECLINE' });
|
|
389
|
+
server._send(ws, createError(ErrorCode.VERIFICATION_FAILED, 'Invalid signature'));
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
const agentId = `@${agent.id}`;
|
|
394
|
+
// Acquire per-dispute lock to serialize decline→buildPool→replace sequence.
|
|
395
|
+
// Without this, concurrent declines could pick the same replacement or
|
|
396
|
+
// double-increment replacement_rounds across the await boundary.
|
|
397
|
+
await server.disputes.withLock(msg.dispute_id, async () => {
|
|
398
|
+
const pool = await buildArbiterPool(server, dispute.disputant, dispute.respondent);
|
|
399
|
+
const replacement = server.disputes.arbiterDecline(msg.dispute_id, agentId, pool);
|
|
400
|
+
server._log('arbiter_declined', { dispute_id: msg.dispute_id, arbiter: agent.id, replacement });
|
|
401
|
+
if (replacement) {
|
|
402
|
+
// Notify the replacement
|
|
403
|
+
sendToAgent(server, replacement, createMessage(ServerMessageType.ARBITER_ASSIGNED, {
|
|
404
|
+
dispute_id: msg.dispute_id,
|
|
405
|
+
proposal_id: dispute.proposal_id,
|
|
406
|
+
disputant: dispute.disputant,
|
|
407
|
+
respondent: dispute.respondent,
|
|
408
|
+
reason: dispute.reason,
|
|
409
|
+
response_deadline: Date.now() + DISPUTE_CONSTANTS.ARBITER_RESPONSE_TIMEOUT_MS,
|
|
410
|
+
is_replacement: true,
|
|
411
|
+
}));
|
|
412
|
+
}
|
|
413
|
+
// Check for fallback
|
|
414
|
+
const d = server.disputes.get(msg.dispute_id);
|
|
415
|
+
if (d.phase === 'fallback') {
|
|
416
|
+
const fallbackMsg = createMessage(ServerMessageType.DISPUTE_FALLBACK, {
|
|
417
|
+
dispute_id: msg.dispute_id,
|
|
418
|
+
reason: 'Unable to form arbiter panel after replacements',
|
|
419
|
+
});
|
|
420
|
+
sendToAgent(server, d.disputant, fallbackMsg);
|
|
421
|
+
sendToAgent(server, d.respondent, fallbackMsg);
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Handle ARBITER_VOTE
|
|
427
|
+
*/
|
|
428
|
+
export async function handleArbiterVote(server, ws, msg) {
|
|
429
|
+
const agent = server.agents.get(ws);
|
|
430
|
+
if (!agent) {
|
|
431
|
+
server._send(ws, createError(ErrorCode.AUTH_REQUIRED, 'Must IDENTIFY first'));
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
const dispute = server.disputes.get(msg.dispute_id);
|
|
435
|
+
if (!dispute) {
|
|
436
|
+
server._send(ws, createError(ErrorCode.DISPUTE_NOT_FOUND, 'Dispute not found'));
|
|
437
|
+
return;
|
|
438
|
+
}
|
|
439
|
+
// Verify signature (arbiters must have persistent identity per buildArbiterPool)
|
|
440
|
+
if (!agent.pubkey) {
|
|
441
|
+
server._send(ws, createError(ErrorCode.SIGNATURE_REQUIRED, 'Arbiter operations require persistent identity'));
|
|
442
|
+
return;
|
|
443
|
+
}
|
|
444
|
+
const sigContent = getVoteSigningContent(msg.dispute_id, msg.verdict);
|
|
445
|
+
if (!Identity.verify(sigContent, msg.sig, agent.pubkey)) {
|
|
446
|
+
server._log('sig_verification_failed', { agent: agent.id, msg_type: 'ARBITER_VOTE' });
|
|
447
|
+
server._send(ws, createError(ErrorCode.VERIFICATION_FAILED, 'Invalid signature'));
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
const agentId = `@${agent.id}`;
|
|
451
|
+
const success = server.disputes.castVote(msg.dispute_id, agentId, msg.verdict, msg.reasoning, msg.sig);
|
|
452
|
+
if (!success) {
|
|
453
|
+
server._send(ws, createError(ErrorCode.DISPUTE_NOT_ARBITER, 'Cannot vote: not an accepted arbiter, wrong phase, or deadline passed'));
|
|
454
|
+
return;
|
|
455
|
+
}
|
|
456
|
+
server._log('arbiter_voted', { dispute_id: msg.dispute_id, arbiter: agent.id, verdict: msg.verdict });
|
|
457
|
+
// Check if dispute is now resolved
|
|
458
|
+
const d = server.disputes.get(msg.dispute_id);
|
|
459
|
+
if (d.phase === 'resolved') {
|
|
460
|
+
server.disputes.clearTimeout(msg.dispute_id);
|
|
461
|
+
await _sendVerdict(server, msg.dispute_id);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
// ============ Internal helpers ============
|
|
465
|
+
/**
|
|
466
|
+
* Send CASE_READY to all arbiters after evidence period closes
|
|
467
|
+
*/
|
|
468
|
+
function _sendCaseReady(server, disputeId) {
|
|
469
|
+
const dispute = server.disputes.get(disputeId);
|
|
470
|
+
if (!dispute)
|
|
471
|
+
return;
|
|
472
|
+
const proposal = server.proposals.get(dispute.proposal_id);
|
|
473
|
+
const caseMsg = createMessage(ServerMessageType.CASE_READY, {
|
|
474
|
+
dispute_id: disputeId,
|
|
475
|
+
proposal: proposal ? {
|
|
476
|
+
id: proposal.id,
|
|
477
|
+
from: proposal.from,
|
|
478
|
+
to: proposal.to,
|
|
479
|
+
task: proposal.task,
|
|
480
|
+
amount: proposal.amount,
|
|
481
|
+
currency: proposal.currency,
|
|
482
|
+
} : null,
|
|
483
|
+
disputant: dispute.disputant,
|
|
484
|
+
disputant_evidence: dispute.disputant_evidence || null,
|
|
485
|
+
respondent: dispute.respondent,
|
|
486
|
+
respondent_evidence: dispute.respondent_evidence || null,
|
|
487
|
+
vote_deadline: dispute.vote_deadline,
|
|
488
|
+
});
|
|
489
|
+
for (const slot of dispute.arbiters) {
|
|
490
|
+
if (slot.status === 'accepted') {
|
|
491
|
+
sendToAgent(server, slot.agent_id, caseMsg);
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
server._log('case_ready', { dispute_id: disputeId });
|
|
495
|
+
// Set vote deadline timeout
|
|
496
|
+
server.disputes.setTimeout(disputeId, DISPUTE_CONSTANTS.VOTE_PERIOD_MS, async () => {
|
|
497
|
+
const d = server.disputes.get(disputeId);
|
|
498
|
+
if (d && d.phase === 'deliberation') {
|
|
499
|
+
server.disputes.forceResolve(disputeId);
|
|
500
|
+
await _sendVerdict(server, disputeId);
|
|
501
|
+
}
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Send VERDICT to all parties and arbiters, then apply settlement
|
|
506
|
+
*/
|
|
507
|
+
async function _sendVerdict(server, disputeId) {
|
|
508
|
+
const dispute = server.disputes.get(disputeId);
|
|
509
|
+
if (!dispute || !dispute.verdict)
|
|
510
|
+
return;
|
|
511
|
+
// Compute arbiter rewards
|
|
512
|
+
const arbiterResults = dispute.arbiters
|
|
513
|
+
.filter(a => a.status === 'voted' || a.status === 'forfeited')
|
|
514
|
+
.map(slot => {
|
|
515
|
+
if (slot.status === 'forfeited') {
|
|
516
|
+
return {
|
|
517
|
+
arbiter: slot.agent_id,
|
|
518
|
+
verdict: null,
|
|
519
|
+
reasoning: null,
|
|
520
|
+
reward: -DISPUTE_CONSTANTS.ARBITER_STAKE,
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
const votedWithMajority = slot.vote?.verdict === dispute.verdict;
|
|
524
|
+
return {
|
|
525
|
+
arbiter: slot.agent_id,
|
|
526
|
+
verdict: slot.vote?.verdict,
|
|
527
|
+
reasoning: slot.vote?.reasoning,
|
|
528
|
+
reward: votedWithMajority ? DISPUTE_CONSTANTS.ARBITER_REWARD : 0,
|
|
529
|
+
};
|
|
530
|
+
});
|
|
531
|
+
const verdictMsg = createMessage(ServerMessageType.VERDICT, {
|
|
532
|
+
dispute_id: disputeId,
|
|
533
|
+
proposal_id: dispute.proposal_id,
|
|
534
|
+
verdict: dispute.verdict,
|
|
535
|
+
votes: dispute.votes.map(v => ({
|
|
536
|
+
arbiter: v.arbiter,
|
|
537
|
+
verdict: v.verdict,
|
|
538
|
+
reasoning: v.reasoning,
|
|
539
|
+
})),
|
|
540
|
+
arbiter_results: arbiterResults,
|
|
541
|
+
resolved_at: dispute.resolved_at,
|
|
542
|
+
});
|
|
543
|
+
// Send to all involved parties
|
|
544
|
+
sendToAgent(server, dispute.disputant, verdictMsg);
|
|
545
|
+
sendToAgent(server, dispute.respondent, verdictMsg);
|
|
546
|
+
for (const slot of dispute.arbiters) {
|
|
547
|
+
sendToAgent(server, slot.agent_id, verdictMsg);
|
|
548
|
+
}
|
|
549
|
+
server._log('verdict', {
|
|
550
|
+
dispute_id: disputeId,
|
|
551
|
+
verdict: dispute.verdict,
|
|
552
|
+
votes: dispute.votes.length,
|
|
553
|
+
});
|
|
554
|
+
// Apply settlement: calculate and persist ELO rating changes
|
|
555
|
+
try {
|
|
556
|
+
const allParties = [dispute.disputant, dispute.respondent, ...dispute.arbiters.map(a => a.agent_id)];
|
|
557
|
+
const ratings = {};
|
|
558
|
+
for (const party of allParties) {
|
|
559
|
+
const r = await server.reputationStore.getRating(party);
|
|
560
|
+
ratings[party] = { rating: r.rating, transactions: r.transactions };
|
|
561
|
+
}
|
|
562
|
+
const settlement = calculateDisputeSettlement(dispute, ratings);
|
|
563
|
+
await server.reputationStore.applyVerdictSettlement(settlement);
|
|
564
|
+
// Broadcast SETTLEMENT_COMPLETE to all parties
|
|
565
|
+
const settlementMsg = createMessage(ServerMessageType.SETTLEMENT_COMPLETE, {
|
|
566
|
+
dispute_id: disputeId,
|
|
567
|
+
proposal_id: dispute.proposal_id,
|
|
568
|
+
verdict: dispute.verdict,
|
|
569
|
+
rating_changes: settlement,
|
|
570
|
+
});
|
|
571
|
+
sendToAgent(server, dispute.disputant, settlementMsg);
|
|
572
|
+
sendToAgent(server, dispute.respondent, settlementMsg);
|
|
573
|
+
for (const slot of dispute.arbiters) {
|
|
574
|
+
sendToAgent(server, slot.agent_id, settlementMsg);
|
|
575
|
+
}
|
|
576
|
+
server.escrowHooks.emit(EscrowEvent.VERDICT_SETTLED, {
|
|
577
|
+
dispute_id: disputeId,
|
|
578
|
+
proposal_id: dispute.proposal_id,
|
|
579
|
+
verdict: dispute.verdict,
|
|
580
|
+
rating_changes: settlement,
|
|
581
|
+
});
|
|
582
|
+
server._log('settlement_complete', {
|
|
583
|
+
dispute_id: disputeId,
|
|
584
|
+
parties: Object.keys(settlement).length,
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
catch (err) {
|
|
588
|
+
server._log('settlement_error', { dispute_id: disputeId, error: err.message });
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
//# sourceMappingURL=disputes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disputes.js","sourceRoot":"","sources":["../../../../lib/server/handlers/disputes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../../lib/server/handlers/identity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAgBxB,UAAU,iBAAkB,SAAQ,SAAS;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAYD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../../lib/server/handlers/identity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAgBxB,UAAU,iBAAkB,SAAQ,SAAS;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAYD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI,CAsGzG;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAqGrH;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,oBAAoB,GAAG,IAAI,CAsEnH;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,qBAAqB,GAAG,IAAI,CA6ErH"}
|