@tjamescouch/agentchat 0.22.1 → 0.23.1

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.
Files changed (153) hide show
  1. package/Dockerfile +1 -1
  2. package/dist/bin/agentchat.d.ts +7 -0
  3. package/dist/bin/agentchat.d.ts.map +1 -0
  4. package/dist/bin/agentchat.js +1511 -0
  5. package/dist/bin/agentchat.js.map +1 -0
  6. package/dist/lib/allowlist.d.ts +77 -0
  7. package/dist/lib/allowlist.d.ts.map +1 -0
  8. package/dist/lib/allowlist.js +151 -0
  9. package/dist/lib/allowlist.js.map +1 -0
  10. package/dist/lib/client.d.ts +147 -0
  11. package/dist/lib/client.d.ts.map +1 -0
  12. package/dist/lib/client.js +704 -0
  13. package/dist/lib/client.js.map +1 -0
  14. package/dist/lib/daemon.d.ts +122 -0
  15. package/dist/lib/daemon.d.ts.map +1 -0
  16. package/dist/lib/daemon.js +523 -0
  17. package/dist/lib/daemon.js.map +1 -0
  18. package/dist/lib/deploy/akash.d.ts +271 -0
  19. package/dist/lib/deploy/akash.d.ts.map +1 -0
  20. package/dist/lib/deploy/akash.js +671 -0
  21. package/dist/lib/deploy/akash.js.map +1 -0
  22. package/dist/lib/deploy/config.d.ts +62 -0
  23. package/dist/lib/deploy/config.d.ts.map +1 -0
  24. package/dist/lib/deploy/config.js +116 -0
  25. package/dist/lib/deploy/config.js.map +1 -0
  26. package/dist/lib/deploy/docker.d.ts +37 -0
  27. package/dist/lib/deploy/docker.d.ts.map +1 -0
  28. package/dist/lib/deploy/docker.js +122 -0
  29. package/dist/lib/deploy/docker.js.map +1 -0
  30. package/dist/lib/deploy/index.d.ts +11 -0
  31. package/dist/lib/deploy/index.d.ts.map +1 -0
  32. package/dist/lib/deploy/index.js +11 -0
  33. package/dist/lib/deploy/index.js.map +1 -0
  34. package/dist/lib/escrow-hooks.d.ts +199 -0
  35. package/dist/lib/escrow-hooks.d.ts.map +1 -0
  36. package/dist/lib/escrow-hooks.js +221 -0
  37. package/dist/lib/escrow-hooks.js.map +1 -0
  38. package/dist/lib/identity.d.ts +134 -0
  39. package/dist/lib/identity.d.ts.map +1 -0
  40. package/dist/lib/identity.js +334 -0
  41. package/dist/lib/identity.js.map +1 -0
  42. package/dist/lib/jitter.d.ts +42 -0
  43. package/dist/lib/jitter.d.ts.map +1 -0
  44. package/{lib/jitter.ts → dist/lib/jitter.js} +10 -18
  45. package/dist/lib/jitter.js.map +1 -0
  46. package/dist/lib/proposals.d.ts +223 -0
  47. package/dist/lib/proposals.d.ts.map +1 -0
  48. package/dist/lib/proposals.js +379 -0
  49. package/dist/lib/proposals.js.map +1 -0
  50. package/dist/lib/protocol.d.ts +220 -0
  51. package/dist/lib/protocol.d.ts.map +1 -0
  52. package/dist/lib/protocol.js +507 -0
  53. package/dist/lib/protocol.js.map +1 -0
  54. package/dist/lib/receipts.d.ts +134 -0
  55. package/dist/lib/receipts.d.ts.map +1 -0
  56. package/dist/lib/receipts.js +270 -0
  57. package/dist/lib/receipts.js.map +1 -0
  58. package/dist/lib/reputation.d.ts +250 -0
  59. package/dist/lib/reputation.d.ts.map +1 -0
  60. package/dist/lib/reputation.js +586 -0
  61. package/dist/lib/reputation.js.map +1 -0
  62. package/dist/lib/security.d.ts +27 -0
  63. package/dist/lib/security.d.ts.map +1 -0
  64. package/dist/lib/security.js +150 -0
  65. package/dist/lib/security.js.map +1 -0
  66. package/dist/lib/server/handlers/admin.d.ts +26 -0
  67. package/dist/lib/server/handlers/admin.d.ts.map +1 -0
  68. package/dist/lib/server/handlers/admin.js +76 -0
  69. package/dist/lib/server/handlers/admin.js.map +1 -0
  70. package/dist/lib/server/handlers/identity.d.ts +36 -0
  71. package/dist/lib/server/handlers/identity.d.ts.map +1 -0
  72. package/dist/lib/server/handlers/identity.js +330 -0
  73. package/dist/lib/server/handlers/identity.js.map +1 -0
  74. package/dist/lib/server/handlers/index.d.ts +10 -0
  75. package/dist/lib/server/handlers/index.d.ts.map +1 -0
  76. package/dist/lib/server/handlers/index.js +15 -0
  77. package/dist/lib/server/handlers/index.js.map +1 -0
  78. package/dist/lib/server/handlers/message.d.ts +47 -0
  79. package/dist/lib/server/handlers/message.d.ts.map +1 -0
  80. package/dist/lib/server/handlers/message.js +265 -0
  81. package/dist/lib/server/handlers/message.js.map +1 -0
  82. package/dist/lib/server/handlers/presence.d.ts +18 -0
  83. package/dist/lib/server/handlers/presence.d.ts.map +1 -0
  84. package/dist/lib/server/handlers/presence.js +35 -0
  85. package/dist/lib/server/handlers/presence.js.map +1 -0
  86. package/dist/lib/server/handlers/proposal.d.ts +38 -0
  87. package/dist/lib/server/handlers/proposal.d.ts.map +1 -0
  88. package/dist/lib/server/handlers/proposal.js +273 -0
  89. package/dist/lib/server/handlers/proposal.js.map +1 -0
  90. package/dist/lib/server/handlers/skills.d.ts +22 -0
  91. package/dist/lib/server/handlers/skills.d.ts.map +1 -0
  92. package/dist/lib/server/handlers/skills.js +119 -0
  93. package/dist/lib/server/handlers/skills.js.map +1 -0
  94. package/dist/lib/server-directory.d.ts +85 -0
  95. package/dist/lib/server-directory.d.ts.map +1 -0
  96. package/dist/lib/server-directory.js +177 -0
  97. package/dist/lib/server-directory.js.map +1 -0
  98. package/dist/lib/server.d.ts +162 -0
  99. package/dist/lib/server.d.ts.map +1 -0
  100. package/dist/lib/server.js +602 -0
  101. package/dist/lib/server.js.map +1 -0
  102. package/dist/lib/types.d.ts +461 -0
  103. package/dist/lib/types.d.ts.map +1 -0
  104. package/dist/lib/types.js +98 -0
  105. package/dist/lib/types.js.map +1 -0
  106. package/package.json +22 -13
  107. package/bin/agentchat.js +0 -1617
  108. package/bin/agentchat.ts +0 -1812
  109. package/lib/allowlist.js +0 -162
  110. package/lib/chat.py +0 -241
  111. package/lib/client.js +0 -821
  112. package/lib/client.ts +0 -877
  113. package/lib/daemon.js +0 -562
  114. package/lib/daemon.ts +0 -662
  115. package/lib/deploy/akash.js +0 -811
  116. package/lib/deploy/config.js +0 -128
  117. package/lib/deploy/docker.js +0 -132
  118. package/lib/deploy/index.js +0 -24
  119. package/lib/elo_swarm.py +0 -569
  120. package/lib/escrow-hooks.js +0 -237
  121. package/lib/escrow-hooks.ts +0 -391
  122. package/lib/identity.js +0 -376
  123. package/lib/identity.ts +0 -412
  124. package/lib/jitter.js +0 -54
  125. package/lib/proposals.js +0 -426
  126. package/lib/proposals.ts +0 -612
  127. package/lib/protocol.js +0 -516
  128. package/lib/receipts.js +0 -294
  129. package/lib/receipts.ts +0 -359
  130. package/lib/reputation.js +0 -664
  131. package/lib/reputation.ts +0 -790
  132. package/lib/security.js +0 -183
  133. package/lib/server/handlers/admin.js +0 -94
  134. package/lib/server/handlers/identity.js +0 -258
  135. package/lib/server/handlers/index.js +0 -42
  136. package/lib/server/handlers/message.js +0 -319
  137. package/lib/server/handlers/presence.js +0 -45
  138. package/lib/server/handlers/proposal.js +0 -358
  139. package/lib/server/handlers/skills.js +0 -141
  140. package/lib/server-directory.js +0 -190
  141. package/lib/server-directory.ts +0 -232
  142. package/lib/server.js +0 -633
  143. package/lib/server.ts +0 -698
  144. package/lib/supervisor/USAGE.md +0 -110
  145. package/lib/supervisor/agent-health.sh +0 -107
  146. package/lib/supervisor/agent-monitor.sh +0 -123
  147. package/lib/supervisor/agent-supervisor.sh +0 -135
  148. package/lib/supervisor/agentctl.sh +0 -266
  149. package/lib/supervisor/god-backup.sh +0 -126
  150. package/lib/supervisor/god-watchdog.sh +0 -107
  151. package/lib/supervisor/killswitch.sh +0 -43
  152. package/lib/supervisor/notify.sh +0 -19
  153. package/lib/types.ts +0 -433
@@ -0,0 +1,379 @@
1
+ /**
2
+ * AgentChat Proposals Module
3
+ * Handles structured negotiation between agents
4
+ *
5
+ * Proposals enable agents to make verifiable, signed commitments
6
+ * for work, services, or payments.
7
+ */
8
+ import { generateProposalId, ProposalStatus } from './protocol.js';
9
+ // ============ ProposalStore Class ============
10
+ /**
11
+ * In-memory proposal store
12
+ * In production, this could be backed by persistence
13
+ */
14
+ export class ProposalStore {
15
+ proposals;
16
+ byAgent;
17
+ cleanupInterval;
18
+ constructor() {
19
+ // Map of proposal_id -> proposal object
20
+ this.proposals = new Map();
21
+ // Index by agent for quick lookups
22
+ this.byAgent = new Map(); // agent_id -> Set of proposal_ids
23
+ // Cleanup expired proposals periodically
24
+ this.cleanupInterval = setInterval(() => this.cleanupExpired(), 60000);
25
+ }
26
+ /**
27
+ * Create a new proposal
28
+ */
29
+ create(proposal) {
30
+ const id = proposal.id || generateProposalId();
31
+ const now = Date.now();
32
+ const stored = {
33
+ id,
34
+ from: proposal.from,
35
+ to: proposal.to,
36
+ task: proposal.task,
37
+ amount: proposal.amount || null,
38
+ currency: proposal.currency || null,
39
+ payment_code: proposal.payment_code || null,
40
+ terms: proposal.terms || null,
41
+ expires: proposal.expires ? now + (proposal.expires * 1000) : null,
42
+ status: ProposalStatus.PENDING,
43
+ created_at: now,
44
+ updated_at: now,
45
+ sig: proposal.sig,
46
+ // ELO staking
47
+ proposer_stake: proposal.elo_stake || null,
48
+ acceptor_stake: null,
49
+ stakes_escrowed: false,
50
+ // Response tracking
51
+ response_sig: null,
52
+ response_payment_code: null,
53
+ completed_at: null,
54
+ completion_proof: null,
55
+ dispute_reason: null
56
+ };
57
+ this.proposals.set(id, stored);
58
+ // Index by both agents
59
+ this._indexAgent(proposal.from, id);
60
+ this._indexAgent(proposal.to, id);
61
+ return stored;
62
+ }
63
+ /**
64
+ * Get a proposal by ID
65
+ */
66
+ get(id) {
67
+ const proposal = this.proposals.get(id);
68
+ if (!proposal)
69
+ return null;
70
+ // Check expiration
71
+ if (proposal.expires && Date.now() > proposal.expires) {
72
+ if (proposal.status === ProposalStatus.PENDING) {
73
+ proposal.status = ProposalStatus.EXPIRED;
74
+ proposal.updated_at = Date.now();
75
+ }
76
+ }
77
+ return proposal;
78
+ }
79
+ /**
80
+ * Accept a proposal
81
+ * @param id - Proposal ID
82
+ * @param acceptorId - Agent accepting the proposal
83
+ * @param sig - Signature of acceptance
84
+ * @param payment_code - Optional payment code
85
+ * @param acceptor_stake - Optional ELO stake from acceptor
86
+ */
87
+ accept(id, acceptorId, sig, payment_code = null, acceptor_stake = null) {
88
+ const proposal = this.get(id);
89
+ if (!proposal) {
90
+ return { error: 'PROPOSAL_NOT_FOUND' };
91
+ }
92
+ if (proposal.status !== ProposalStatus.PENDING) {
93
+ return { error: 'PROPOSAL_NOT_PENDING', status: proposal.status };
94
+ }
95
+ if (proposal.to !== acceptorId) {
96
+ return { error: 'NOT_PROPOSAL_RECIPIENT' };
97
+ }
98
+ if (proposal.expires && Date.now() > proposal.expires) {
99
+ proposal.status = ProposalStatus.EXPIRED;
100
+ proposal.updated_at = Date.now();
101
+ return { error: 'PROPOSAL_EXPIRED' };
102
+ }
103
+ proposal.status = ProposalStatus.ACCEPTED;
104
+ proposal.response_sig = sig;
105
+ proposal.response_payment_code = payment_code;
106
+ proposal.acceptor_stake = acceptor_stake;
107
+ proposal.updated_at = Date.now();
108
+ return { proposal };
109
+ }
110
+ /**
111
+ * Reject a proposal
112
+ */
113
+ reject(id, rejectorId, sig, reason = null) {
114
+ const proposal = this.get(id);
115
+ if (!proposal) {
116
+ return { error: 'PROPOSAL_NOT_FOUND' };
117
+ }
118
+ if (proposal.status !== ProposalStatus.PENDING) {
119
+ return { error: 'PROPOSAL_NOT_PENDING', status: proposal.status };
120
+ }
121
+ if (proposal.to !== rejectorId) {
122
+ return { error: 'NOT_PROPOSAL_RECIPIENT' };
123
+ }
124
+ proposal.status = ProposalStatus.REJECTED;
125
+ proposal.response_sig = sig;
126
+ proposal.reject_reason = reason;
127
+ proposal.updated_at = Date.now();
128
+ return { proposal };
129
+ }
130
+ /**
131
+ * Mark a proposal as complete
132
+ */
133
+ complete(id, completerId, sig, proof = null) {
134
+ const proposal = this.get(id);
135
+ if (!proposal) {
136
+ return { error: 'PROPOSAL_NOT_FOUND' };
137
+ }
138
+ if (proposal.status !== ProposalStatus.ACCEPTED) {
139
+ return { error: 'PROPOSAL_NOT_ACCEPTED', status: proposal.status };
140
+ }
141
+ // Either party can mark as complete
142
+ if (proposal.from !== completerId && proposal.to !== completerId) {
143
+ return { error: 'NOT_PROPOSAL_PARTY' };
144
+ }
145
+ proposal.status = ProposalStatus.COMPLETED;
146
+ proposal.completed_at = Date.now();
147
+ proposal.completion_proof = proof;
148
+ proposal.completion_sig = sig;
149
+ proposal.completed_by = completerId;
150
+ proposal.updated_at = Date.now();
151
+ return { proposal };
152
+ }
153
+ /**
154
+ * Dispute a proposal
155
+ */
156
+ dispute(id, disputerId, sig, reason) {
157
+ const proposal = this.get(id);
158
+ if (!proposal) {
159
+ return { error: 'PROPOSAL_NOT_FOUND' };
160
+ }
161
+ // Can only dispute accepted proposals
162
+ if (proposal.status !== ProposalStatus.ACCEPTED) {
163
+ return { error: 'PROPOSAL_NOT_ACCEPTED', status: proposal.status };
164
+ }
165
+ // Either party can dispute
166
+ if (proposal.from !== disputerId && proposal.to !== disputerId) {
167
+ return { error: 'NOT_PROPOSAL_PARTY' };
168
+ }
169
+ proposal.status = ProposalStatus.DISPUTED;
170
+ proposal.dispute_reason = reason;
171
+ proposal.dispute_sig = sig;
172
+ proposal.disputed_by = disputerId;
173
+ proposal.disputed_at = Date.now();
174
+ proposal.updated_at = Date.now();
175
+ return { proposal };
176
+ }
177
+ /**
178
+ * List proposals for an agent
179
+ */
180
+ listByAgent(agentId, options = {}) {
181
+ const ids = this.byAgent.get(agentId) || new Set();
182
+ let proposals = Array.from(ids)
183
+ .map(id => this.get(id))
184
+ .filter((p) => p !== null);
185
+ // Filter by status
186
+ if (options.status) {
187
+ proposals = proposals.filter(p => p.status === options.status);
188
+ }
189
+ // Filter by role (from/to)
190
+ if (options.role === 'from') {
191
+ proposals = proposals.filter(p => p.from === agentId);
192
+ }
193
+ else if (options.role === 'to') {
194
+ proposals = proposals.filter(p => p.to === agentId);
195
+ }
196
+ // Sort by created_at descending
197
+ proposals.sort((a, b) => b.created_at - a.created_at);
198
+ // Limit
199
+ if (options.limit) {
200
+ proposals = proposals.slice(0, options.limit);
201
+ }
202
+ return proposals;
203
+ }
204
+ /**
205
+ * Index a proposal by agent
206
+ */
207
+ _indexAgent(agentId, proposalId) {
208
+ if (!this.byAgent.has(agentId)) {
209
+ this.byAgent.set(agentId, new Set());
210
+ }
211
+ this.byAgent.get(agentId).add(proposalId);
212
+ }
213
+ /**
214
+ * Clean up expired proposals (older than 24 hours after expiration)
215
+ */
216
+ cleanupExpired() {
217
+ const cutoff = Date.now() - (24 * 60 * 60 * 1000);
218
+ for (const [id, proposal] of this.proposals) {
219
+ if (proposal.expires && proposal.expires < cutoff) {
220
+ this.proposals.delete(id);
221
+ // Remove from agent indices
222
+ const fromSet = this.byAgent.get(proposal.from);
223
+ if (fromSet)
224
+ fromSet.delete(id);
225
+ const toSet = this.byAgent.get(proposal.to);
226
+ if (toSet)
227
+ toSet.delete(id);
228
+ }
229
+ }
230
+ }
231
+ /**
232
+ * Stop the cleanup interval
233
+ */
234
+ close() {
235
+ if (this.cleanupInterval) {
236
+ clearInterval(this.cleanupInterval);
237
+ this.cleanupInterval = null;
238
+ }
239
+ }
240
+ /**
241
+ * Get stats about the proposal store
242
+ */
243
+ stats() {
244
+ const byStatus = {};
245
+ for (const proposal of this.proposals.values()) {
246
+ byStatus[proposal.status] = (byStatus[proposal.status] || 0) + 1;
247
+ }
248
+ return {
249
+ total: this.proposals.size,
250
+ byStatus,
251
+ agents: this.byAgent.size
252
+ };
253
+ }
254
+ }
255
+ // ============ Helper Functions ============
256
+ /**
257
+ * Format a proposal for display/transmission
258
+ */
259
+ export function formatProposal(proposal) {
260
+ return {
261
+ id: proposal.id,
262
+ from: proposal.from,
263
+ to: proposal.to,
264
+ task: proposal.task,
265
+ amount: proposal.amount,
266
+ currency: proposal.currency,
267
+ payment_code: proposal.payment_code,
268
+ terms: proposal.terms,
269
+ expires: proposal.expires,
270
+ status: proposal.status,
271
+ created_at: proposal.created_at,
272
+ sig: proposal.sig,
273
+ elo_stake: proposal.proposer_stake
274
+ };
275
+ }
276
+ /**
277
+ * Format a proposal response (accept/reject/complete/dispute)
278
+ */
279
+ export function formatProposalResponse(proposal, responseType) {
280
+ const base = {
281
+ proposal_id: proposal.id,
282
+ status: proposal.status,
283
+ updated_at: proposal.updated_at
284
+ };
285
+ switch (responseType) {
286
+ case 'accept':
287
+ return {
288
+ ...base,
289
+ from: proposal.from,
290
+ to: proposal.to,
291
+ payment_code: proposal.response_payment_code,
292
+ sig: proposal.response_sig,
293
+ proposer_stake: proposal.proposer_stake,
294
+ acceptor_stake: proposal.acceptor_stake
295
+ };
296
+ case 'reject':
297
+ return {
298
+ ...base,
299
+ from: proposal.from,
300
+ to: proposal.to,
301
+ reason: proposal.reject_reason,
302
+ sig: proposal.response_sig
303
+ };
304
+ case 'complete':
305
+ return {
306
+ ...base,
307
+ from: proposal.from,
308
+ to: proposal.to,
309
+ completed_by: proposal.completed_by,
310
+ completed_at: proposal.completed_at,
311
+ proof: proposal.completion_proof,
312
+ sig: proposal.completion_sig,
313
+ elo_stakes: {
314
+ proposer: proposal.proposer_stake || 0,
315
+ acceptor: proposal.acceptor_stake || 0
316
+ }
317
+ };
318
+ case 'dispute':
319
+ return {
320
+ ...base,
321
+ from: proposal.from,
322
+ to: proposal.to,
323
+ disputed_by: proposal.disputed_by,
324
+ disputed_at: proposal.disputed_at,
325
+ reason: proposal.dispute_reason,
326
+ sig: proposal.dispute_sig,
327
+ elo_stakes: {
328
+ proposer: proposal.proposer_stake || 0,
329
+ acceptor: proposal.acceptor_stake || 0
330
+ }
331
+ };
332
+ default:
333
+ return base;
334
+ }
335
+ }
336
+ /**
337
+ * Create proposal content string for signing
338
+ * This ensures both parties sign the same canonical data
339
+ */
340
+ export function getProposalSigningContent(proposal) {
341
+ const fields = [
342
+ proposal.to,
343
+ proposal.task,
344
+ proposal.amount || '',
345
+ proposal.currency || '',
346
+ proposal.payment_code || '',
347
+ proposal.expires || '',
348
+ proposal.elo_stake || ''
349
+ ];
350
+ return fields.join('|');
351
+ }
352
+ /**
353
+ * Create accept content string for signing
354
+ * @param proposalId - The proposal being accepted
355
+ * @param payment_code - Optional payment code
356
+ * @param elo_stake - Optional ELO stake from acceptor
357
+ */
358
+ export function getAcceptSigningContent(proposalId, payment_code = '', elo_stake = '') {
359
+ return `ACCEPT|${proposalId}|${payment_code}|${elo_stake}`;
360
+ }
361
+ /**
362
+ * Create reject content string for signing
363
+ */
364
+ export function getRejectSigningContent(proposalId, reason = '') {
365
+ return `REJECT|${proposalId}|${reason}`;
366
+ }
367
+ /**
368
+ * Create complete content string for signing
369
+ */
370
+ export function getCompleteSigningContent(proposalId, proof = '') {
371
+ return `COMPLETE|${proposalId}|${proof}`;
372
+ }
373
+ /**
374
+ * Create dispute content string for signing
375
+ */
376
+ export function getDisputeSigningContent(proposalId, reason) {
377
+ return `DISPUTE|${proposalId}|${reason}`;
378
+ }
379
+ //# sourceMappingURL=proposals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposals.js","sourceRoot":"","sources":["../../lib/proposals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * AgentChat Protocol
3
+ * Message types and validation for agent-to-agent communication
4
+ */
5
+ import { ValidationResult, Skill } from './types.js';
6
+ export declare const ClientMessageType: {
7
+ IDENTIFY: "IDENTIFY";
8
+ JOIN: "JOIN";
9
+ LEAVE: "LEAVE";
10
+ MSG: "MSG";
11
+ LIST_CHANNELS: "LIST_CHANNELS";
12
+ LIST_AGENTS: "LIST_AGENTS";
13
+ CREATE_CHANNEL: "CREATE_CHANNEL";
14
+ INVITE: "INVITE";
15
+ PING: "PING";
16
+ PROPOSAL: "PROPOSAL";
17
+ ACCEPT: "ACCEPT";
18
+ REJECT: "REJECT";
19
+ COMPLETE: "COMPLETE";
20
+ DISPUTE: "DISPUTE";
21
+ REGISTER_SKILLS: "REGISTER_SKILLS";
22
+ SEARCH_SKILLS: "SEARCH_SKILLS";
23
+ SET_PRESENCE: "SET_PRESENCE";
24
+ VERIFY_REQUEST: "VERIFY_REQUEST";
25
+ VERIFY_RESPONSE: "VERIFY_RESPONSE";
26
+ ADMIN_APPROVE: "ADMIN_APPROVE";
27
+ ADMIN_REVOKE: "ADMIN_REVOKE";
28
+ ADMIN_LIST: "ADMIN_LIST";
29
+ VERIFY_IDENTITY: "VERIFY_IDENTITY";
30
+ };
31
+ export declare const ServerMessageType: {
32
+ WELCOME: "WELCOME";
33
+ MSG: "MSG";
34
+ JOINED: "JOINED";
35
+ LEFT: "LEFT";
36
+ AGENT_JOINED: "AGENT_JOINED";
37
+ AGENT_LEFT: "AGENT_LEFT";
38
+ CHANNELS: "CHANNELS";
39
+ AGENTS: "AGENTS";
40
+ ERROR: "ERROR";
41
+ PONG: "PONG";
42
+ PROPOSAL: "PROPOSAL";
43
+ ACCEPT: "ACCEPT";
44
+ REJECT: "REJECT";
45
+ COMPLETE: "COMPLETE";
46
+ DISPUTE: "DISPUTE";
47
+ SKILLS_REGISTERED: "SKILLS_REGISTERED";
48
+ SEARCH_RESULTS: "SEARCH_RESULTS";
49
+ PRESENCE_CHANGED: "PRESENCE_CHANGED";
50
+ VERIFY_REQUEST: "VERIFY_REQUEST";
51
+ VERIFY_RESPONSE: "VERIFY_RESPONSE";
52
+ VERIFY_SUCCESS: "VERIFY_SUCCESS";
53
+ VERIFY_FAILED: "VERIFY_FAILED";
54
+ ADMIN_RESULT: "ADMIN_RESULT";
55
+ CHALLENGE: "CHALLENGE";
56
+ };
57
+ export declare const ErrorCode: {
58
+ AUTH_REQUIRED: "AUTH_REQUIRED";
59
+ CHANNEL_NOT_FOUND: "CHANNEL_NOT_FOUND";
60
+ NOT_INVITED: "NOT_INVITED";
61
+ INVALID_MSG: "INVALID_MSG";
62
+ RATE_LIMITED: "RATE_LIMITED";
63
+ AGENT_NOT_FOUND: "AGENT_NOT_FOUND";
64
+ CHANNEL_EXISTS: "CHANNEL_EXISTS";
65
+ INVALID_NAME: "INVALID_NAME";
66
+ PROPOSAL_NOT_FOUND: "PROPOSAL_NOT_FOUND";
67
+ PROPOSAL_EXPIRED: "PROPOSAL_EXPIRED";
68
+ INVALID_PROPOSAL: "INVALID_PROPOSAL";
69
+ SIGNATURE_REQUIRED: "SIGNATURE_REQUIRED";
70
+ NOT_PROPOSAL_PARTY: "NOT_PROPOSAL_PARTY";
71
+ INSUFFICIENT_REPUTATION: "INSUFFICIENT_REPUTATION";
72
+ INVALID_STAKE: "INVALID_STAKE";
73
+ VERIFICATION_FAILED: "VERIFICATION_FAILED";
74
+ VERIFICATION_EXPIRED: "VERIFICATION_EXPIRED";
75
+ NO_PUBKEY: "NO_PUBKEY";
76
+ NOT_ALLOWED: "NOT_ALLOWED";
77
+ };
78
+ export declare const PresenceStatus: {
79
+ ONLINE: "online";
80
+ AWAY: "away";
81
+ BUSY: "busy";
82
+ OFFLINE: "offline";
83
+ LISTENING: "listening";
84
+ };
85
+ export declare const ProposalStatus: {
86
+ PENDING: "pending";
87
+ ACCEPTED: "accepted";
88
+ REJECTED: "rejected";
89
+ COMPLETED: "completed";
90
+ DISPUTED: "disputed";
91
+ EXPIRED: "expired";
92
+ };
93
+ /**
94
+ * Check if a target is a channel (#name) or agent (@name)
95
+ */
96
+ export declare function isChannel(target: string): boolean;
97
+ export declare function isAgent(target: string): boolean;
98
+ /**
99
+ * Validate agent name
100
+ * - 1-32 characters
101
+ * - alphanumeric, dash, underscore
102
+ * - no spaces
103
+ */
104
+ export declare function isValidName(name: unknown): boolean;
105
+ /**
106
+ * Validate channel name
107
+ * - starts with #
108
+ * - 2-32 characters total
109
+ * - alphanumeric, dash, underscore after #
110
+ */
111
+ export declare function isValidChannel(channel: unknown): boolean;
112
+ /**
113
+ * Validate Ed25519 public key in PEM format
114
+ */
115
+ export declare function isValidPubkey(pubkey: unknown): boolean;
116
+ /**
117
+ * Generate stable agent ID from pubkey
118
+ * Returns first 8 chars of SHA256 hash (hex)
119
+ */
120
+ export declare function pubkeyToAgentId(pubkey: string): string;
121
+ interface MessageData {
122
+ [key: string]: unknown;
123
+ }
124
+ /**
125
+ * Create a message object with timestamp
126
+ */
127
+ export declare function createMessage<T extends MessageData>(type: string, data?: T): T & {
128
+ type: string;
129
+ ts: number;
130
+ };
131
+ /**
132
+ * Create an error message
133
+ */
134
+ export declare function createError(code: string, message: string): {
135
+ type: string;
136
+ ts: number;
137
+ code: string;
138
+ message: string;
139
+ };
140
+ interface RawClientMessage {
141
+ type?: string;
142
+ name?: string;
143
+ pubkey?: string | null;
144
+ channel?: string;
145
+ to?: string;
146
+ content?: string;
147
+ sig?: string;
148
+ agent?: string;
149
+ proposal_id?: string;
150
+ task?: string;
151
+ amount?: number;
152
+ currency?: string;
153
+ expires?: number;
154
+ terms?: string;
155
+ elo_stake?: number;
156
+ proof?: string;
157
+ reason?: string;
158
+ skills?: Skill[];
159
+ query?: Record<string, unknown>;
160
+ query_id?: string;
161
+ status?: string;
162
+ status_text?: string;
163
+ target?: string;
164
+ nonce?: string;
165
+ request_id?: string;
166
+ admin_key?: string;
167
+ note?: string;
168
+ agent_id?: string;
169
+ challenge_id?: string;
170
+ signature?: string;
171
+ timestamp?: number;
172
+ }
173
+ /**
174
+ * Validate incoming client message
175
+ * Returns { valid: true, msg } or { valid: false, error }
176
+ */
177
+ export declare function validateClientMessage(raw: string | RawClientMessage): ValidationResult;
178
+ /**
179
+ * Generate a unique agent ID
180
+ */
181
+ export declare function generateAgentId(): string;
182
+ /**
183
+ * Serialize message for sending over WebSocket
184
+ */
185
+ export declare function serialize(msg: unknown): string;
186
+ /**
187
+ * Parse message from WebSocket
188
+ */
189
+ export declare function parse<T = unknown>(data: string): T;
190
+ /**
191
+ * Generate a unique proposal ID
192
+ * Format: prop_<timestamp>_<random>
193
+ */
194
+ export declare function generateProposalId(): string;
195
+ /**
196
+ * Check if a message type is a proposal-related type
197
+ */
198
+ export declare function isProposalMessage(type: string): boolean;
199
+ /**
200
+ * Generate a unique verification request ID
201
+ * Format: verify_<timestamp>_<random>
202
+ */
203
+ export declare function generateVerifyId(): string;
204
+ /**
205
+ * Generate a random nonce for identity verification
206
+ * Returns a 32-character hex string
207
+ */
208
+ export declare function generateNonce(): string;
209
+ /**
210
+ * Generate a unique challenge ID
211
+ * Format: chal_<timestamp36>_<random>
212
+ */
213
+ export declare function generateChallengeId(): string;
214
+ /**
215
+ * Generate the canonical signing content for challenge-response auth.
216
+ * Client signs this to prove private key ownership.
217
+ */
218
+ export declare function generateAuthSigningContent(nonce: string, challengeId: string, timestamp: number): string;
219
+ export {};
220
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../lib/protocol.ts"],"names":[],"mappings":"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"}