@tjamescouch/agentchat 0.36.3 → 0.36.5

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 (80) hide show
  1. package/README.md +20 -15
  2. package/dist/bin/agentchat.js +2 -0
  3. package/dist/bin/agentchat.js.map +1 -1
  4. package/dist/lib/captcha.d.ts +36 -0
  5. package/dist/lib/captcha.d.ts.map +1 -0
  6. package/dist/lib/captcha.js +215 -0
  7. package/dist/lib/captcha.js.map +1 -0
  8. package/dist/lib/client.d.ts +7 -0
  9. package/dist/lib/client.d.ts.map +1 -1
  10. package/dist/lib/client.js +117 -0
  11. package/dist/lib/client.js.map +1 -1
  12. package/dist/lib/daemon.d.ts +2 -0
  13. package/dist/lib/daemon.d.ts.map +1 -1
  14. package/dist/lib/daemon.js +6 -0
  15. package/dist/lib/daemon.js.map +1 -1
  16. package/dist/lib/hnsw.d.ts +91 -0
  17. package/dist/lib/hnsw.d.ts.map +1 -0
  18. package/dist/lib/hnsw.js +486 -0
  19. package/dist/lib/hnsw.js.map +1 -0
  20. package/dist/lib/proposals.d.ts +2 -0
  21. package/dist/lib/proposals.d.ts.map +1 -1
  22. package/dist/lib/proposals.js +1 -0
  23. package/dist/lib/proposals.js.map +1 -1
  24. package/dist/lib/protocol.d.ts +14 -0
  25. package/dist/lib/protocol.d.ts.map +1 -1
  26. package/dist/lib/protocol.js +37 -0
  27. package/dist/lib/protocol.js.map +1 -1
  28. package/dist/lib/reputation.d.ts +34 -0
  29. package/dist/lib/reputation.d.ts.map +1 -1
  30. package/dist/lib/reputation.js +128 -0
  31. package/dist/lib/reputation.js.map +1 -1
  32. package/dist/lib/server/handlers/admin.d.ts +10 -7
  33. package/dist/lib/server/handlers/admin.d.ts.map +1 -1
  34. package/dist/lib/server/handlers/admin.js +73 -0
  35. package/dist/lib/server/handlers/admin.js.map +1 -1
  36. package/dist/lib/server/handlers/ban.d.ts +1 -7
  37. package/dist/lib/server/handlers/ban.d.ts.map +1 -1
  38. package/dist/lib/server/handlers/ban.js.map +1 -1
  39. package/dist/lib/server/handlers/captcha.d.ts +49 -0
  40. package/dist/lib/server/handlers/captcha.d.ts.map +1 -0
  41. package/dist/lib/server/handlers/captcha.js +203 -0
  42. package/dist/lib/server/handlers/captcha.js.map +1 -0
  43. package/dist/lib/server/handlers/disputes.d.ts +1 -7
  44. package/dist/lib/server/handlers/disputes.d.ts.map +1 -1
  45. package/dist/lib/server/handlers/disputes.js.map +1 -1
  46. package/dist/lib/server/handlers/identity.d.ts +1 -7
  47. package/dist/lib/server/handlers/identity.d.ts.map +1 -1
  48. package/dist/lib/server/handlers/identity.js +67 -11
  49. package/dist/lib/server/handlers/identity.js.map +1 -1
  50. package/dist/lib/server/handlers/index.d.ts +1 -0
  51. package/dist/lib/server/handlers/index.d.ts.map +1 -1
  52. package/dist/lib/server/handlers/index.js +2 -0
  53. package/dist/lib/server/handlers/index.js.map +1 -1
  54. package/dist/lib/server/handlers/message.d.ts +1 -7
  55. package/dist/lib/server/handlers/message.d.ts.map +1 -1
  56. package/dist/lib/server/handlers/message.js +19 -2
  57. package/dist/lib/server/handlers/message.js.map +1 -1
  58. package/dist/lib/server/handlers/nick.d.ts +1 -8
  59. package/dist/lib/server/handlers/nick.d.ts.map +1 -1
  60. package/dist/lib/server/handlers/nick.js.map +1 -1
  61. package/dist/lib/server/handlers/presence.d.ts +1 -7
  62. package/dist/lib/server/handlers/presence.d.ts.map +1 -1
  63. package/dist/lib/server/handlers/presence.js.map +1 -1
  64. package/dist/lib/server/handlers/proposal.d.ts +1 -7
  65. package/dist/lib/server/handlers/proposal.d.ts.map +1 -1
  66. package/dist/lib/server/handlers/proposal.js +1 -0
  67. package/dist/lib/server/handlers/proposal.js.map +1 -1
  68. package/dist/lib/server/handlers/skills.d.ts +1 -7
  69. package/dist/lib/server/handlers/skills.d.ts.map +1 -1
  70. package/dist/lib/server/handlers/skills.js +36 -11
  71. package/dist/lib/server/handlers/skills.js.map +1 -1
  72. package/dist/lib/server.d.ts +37 -1
  73. package/dist/lib/server.d.ts.map +1 -1
  74. package/dist/lib/server.js +156 -13
  75. package/dist/lib/server.js.map +1 -1
  76. package/dist/lib/types.d.ts +34 -4
  77. package/dist/lib/types.d.ts.map +1 -1
  78. package/dist/lib/types.js +8 -0
  79. package/dist/lib/types.js.map +1 -1
  80. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../../lib/server/handlers/skills.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAS,MAAM,gBAAgB,CAAC;AAWxF,UAAU,iBAAkB,SAAQ,SAAS;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA4BD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAyDrH;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFhI"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../../lib/server/handlers/skills.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAS,MAAM,gBAAgB,CAAC;AAwCxF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAyDrH;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgHhI"}
@@ -111,25 +111,50 @@ export async function handleSearchSkills(server, ws, msg) {
111
111
  }
112
112
  }
113
113
  }
114
- // Enrich results with reputation data
114
+ // Enrich results with agent + skill-specific reputation data
115
115
  const uniqueAgentIds = [...new Set(results.map(r => r.agent_id))];
116
- const ratingCache = new Map();
116
+ const agentRatingCache = new Map();
117
+ const skillRatingCache = new Map();
117
118
  for (const agentId of uniqueAgentIds) {
118
- const ratingInfo = await server.reputationStore.getRating(agentId);
119
- ratingCache.set(agentId, ratingInfo);
119
+ // Get agent-level rating
120
+ const agentRatingInfo = await server.reputationStore.getRating(agentId);
121
+ agentRatingCache.set(agentId, agentRatingInfo);
122
+ }
123
+ // For each result, also get skill-specific rating
124
+ for (const result of results) {
125
+ const agentIdNormalized = result.agent_id.replace('@', '');
126
+ // Get skill-specific rating
127
+ const skillRatingInfo = await server.reputationStore.getRatingForSkill(agentIdNormalized, result.capability);
128
+ const cacheKey = `${agentIdNormalized}:${result.capability}`;
129
+ skillRatingCache.set(cacheKey, {
130
+ capability: result.capability,
131
+ ...skillRatingInfo
132
+ });
120
133
  }
121
134
  // Add rating info to each result
122
135
  for (const result of results) {
123
- const ratingInfo = ratingCache.get(result.agent_id);
124
- if (ratingInfo) {
125
- result.rating = ratingInfo.rating;
126
- result.transactions = ratingInfo.transactions;
136
+ const agentRatingInfo = agentRatingCache.get(result.agent_id);
137
+ if (agentRatingInfo) {
138
+ result.agent_rating = agentRatingInfo.rating;
139
+ result.agent_transactions = agentRatingInfo.transactions;
140
+ }
141
+ const agentIdNormalized = result.agent_id.replace('@', '');
142
+ const cacheKey = `${agentIdNormalized}:${result.capability}`;
143
+ const skillRatingInfo = skillRatingCache.get(cacheKey);
144
+ if (skillRatingInfo) {
145
+ result.skill_rating = skillRatingInfo.rating;
146
+ result.skill_transactions = skillRatingInfo.transactions;
147
+ result.skill_updated = skillRatingInfo.updated;
127
148
  }
128
149
  }
129
- // Sort by rating (highest first), then by registration time
150
+ // Sort by skill rating (highest first), then agent rating, then by registration time
130
151
  results.sort((a, b) => {
131
- if ((b.rating || 0) !== (a.rating || 0))
132
- return (b.rating || 0) - (a.rating || 0);
152
+ if ((b.skill_rating || 0) !== (a.skill_rating || 0)) {
153
+ return (b.skill_rating || 0) - (a.skill_rating || 0);
154
+ }
155
+ if ((b.agent_rating || 0) !== (a.agent_rating || 0)) {
156
+ return (b.agent_rating || 0) - (a.agent_rating || 0);
157
+ }
133
158
  return b.registered_at - a.registered_at;
134
159
  });
135
160
  // Limit results
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../../lib/server/handlers/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../../lib/server/handlers/skills.ts"],"names":[],"mappings":"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"}
@@ -16,12 +16,20 @@ import { Banlist } from './banlist.js';
16
16
  import { Redactor } from './redactor.js';
17
17
  import { CallbackQueue, type CallbackEntry } from './callback-engine.js';
18
18
  import { FloorControl } from './floor-control.js';
19
- interface ExtendedWebSocket extends WebSocket {
19
+ import { CaptchaConfig } from './captcha.js';
20
+ export interface ExtendedWebSocket extends WebSocket {
20
21
  _connectedAt?: number;
21
22
  _realIp?: string;
23
+ _geoCountry?: string;
24
+ _geoCity?: string;
25
+ _geoLat?: number;
26
+ _geoLon?: number;
22
27
  _userAgent?: string;
28
+ _connId?: string;
23
29
  _msgTimestamps?: number[];
24
30
  _isAlive?: boolean;
31
+ _lastPong?: number;
32
+ _lastNickChange?: number;
25
33
  }
26
34
  export interface AgentState {
27
35
  id: string;
@@ -44,6 +52,21 @@ export interface PendingChallenge {
44
52
  challengeId: string;
45
53
  expires: number;
46
54
  }
55
+ export interface PendingCaptcha {
56
+ ws: ExtendedWebSocket;
57
+ captchaId: string;
58
+ question: string;
59
+ answer: string;
60
+ alternates?: string[];
61
+ expires: number;
62
+ attempts: number;
63
+ name: string;
64
+ pubkey: string | null;
65
+ id: string | null;
66
+ isApproved: boolean;
67
+ isNew: boolean;
68
+ lurkUntil: number;
69
+ }
47
70
  export interface ChannelState {
48
71
  name: string;
49
72
  inviteOnly: boolean;
@@ -78,6 +101,7 @@ export interface AgentChatServerOptions {
78
101
  challengeTimeoutMs?: number;
79
102
  logger?: Console;
80
103
  escrowHandlers?: Record<string, (payload: unknown) => Promise<void>>;
104
+ genesisAgentId?: string | null;
81
105
  allowlistEnabled?: boolean;
82
106
  allowlistStrict?: boolean;
83
107
  allowlistAdminKey?: string | null;
@@ -88,6 +112,7 @@ export interface AgentChatServerOptions {
88
112
  heartbeatIntervalMs?: number;
89
113
  heartbeatTimeoutMs?: number;
90
114
  minProposalAgeMs?: number;
115
+ privateChannelsEnabled?: boolean;
91
116
  }
92
117
  export interface HealthStatus {
93
118
  status: string;
@@ -138,10 +163,15 @@ export declare class AgentChatServer {
138
163
  verificationTimeoutMs: number;
139
164
  pendingChallenges: Map<string, PendingChallenge>;
140
165
  challengeTimeoutMs: number;
166
+ captchaConfig: CaptchaConfig;
167
+ openUntil: number;
168
+ pendingCaptchas: Map<string, PendingCaptcha>;
141
169
  minProposalAgeMs: number;
142
170
  redactor: Redactor;
171
+ genesisAgentId: string | null;
143
172
  allowlist: Allowlist | null;
144
173
  banlist: Banlist | null;
174
+ privateChannelsEnabled: boolean;
145
175
  callbackQueue: CallbackQueue;
146
176
  floorControl: FloorControl;
147
177
  motd: string | null;
@@ -162,6 +192,12 @@ export declare class AgentChatServer {
162
192
  * Get server health status
163
193
  */
164
194
  getHealth(): HealthStatus;
195
+ /**
196
+ * Auto-join an agent to all public (non-invite-only) channels.
197
+ * Called after registration so the agent can immediately send messages
198
+ * without a separate JOIN handshake.
199
+ */
200
+ _autoJoinPublicChannels(ws: ExtendedWebSocket): void;
165
201
  _createChannel(name: string, inviteOnly?: boolean, verifiedOnly?: boolean): ChannelState;
166
202
  /**
167
203
  * Add a message to a channel's buffer (circular buffer)
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../lib/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,IAAyC,MAAM,MAAM,CAAC;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAIL,KAAK,EAGL,cAAc,EACd,UAAU,EACX,MAAM,YAAY,CAAC;AAQpB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAyDlD,UAAU,iBAAkB,SAAQ,SAAS;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAGD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,iBAAiB,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,aAAa,EAAE,UAAU,EAAE,CAAC;CAC7B;AAGD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAGD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAGD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,eAAe;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IAGrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAGtB,WAAW,EAAE,MAAM,CAAC;IAGpB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,MAAM,EAAE,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAC3C,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1C,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACpC,eAAe,EAAE,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAChD,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAClD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IAGtB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACzC,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGzC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAG/B,SAAS,EAAE,aAAa,CAAC;IAGzB,QAAQ,EAAE,YAAY,CAAC;IAGvB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C,WAAW,EAAE,WAAW,CAAC;IAGzB,eAAe,EAAE,eAAe,CAAC;IAGjC,WAAW,EAAE,WAAW,CAAC;IAGzB,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACvD,qBAAqB,EAAE,MAAM,CAAC;IAG9B,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjD,kBAAkB,EAAE,MAAM,CAAC;IAG3B,gBAAgB,EAAE,MAAM,CAAC;IAGzB,QAAQ,EAAE,QAAQ,CAAC;IAGnB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAG5B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAGxB,aAAa,EAAE,aAAa,CAAC;IAG7B,YAAY,EAAE,YAAY,CAAC;IAG3B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAGpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAEtC,GAAG,EAAE,eAAe,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IAC9C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEb,OAAO,GAAE,sBAA2B;IAkJhD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI;IAIjF;;OAEG;IACH,SAAS,IAAI,YAAY;IAuBzB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,EAAE,YAAY,GAAE,OAAe,GAAG,YAAY;IActG;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI;IAYtD;;OAEG;IACH,eAAe,CAAC,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAU7D,cAAc,IAAI,IAAI;IAatB,cAAc,IAAI,IAAI;IAYtB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAStC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI;IAS7D,KAAK,CAAC,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI;IAMnD,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,GAAE,iBAAiB,GAAG,IAAW,GAAG,IAAI;IAW9F,WAAW,CAAC,EAAE,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI;IAKjD,KAAK,IAAI,IAAI;IAuKb;;OAEG;IACH,kBAAkB,IAAI,IAAI;IA4C1B,IAAI,IAAI,IAAI;IAuBZ,cAAc,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IA6OzD;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAiC5C,iBAAiB,CAAC,EAAE,EAAE,iBAAiB,GAAG,IAAI;CAiD/C;AAGD,wBAAgB,WAAW,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CAgCjF;AAGD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../lib/server.ts"],"names":[],"mappings":"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"}
@@ -14,11 +14,13 @@ import { DisputeStore } from './disputes.js';
14
14
  import { ReputationStore } from './reputation.js';
15
15
  import { SkillsStore } from './skills-store.js';
16
16
  import { EscrowHooks } from './escrow-hooks.js';
17
+ import geoip from 'geoip-lite';
17
18
  import { Allowlist } from './allowlist.js';
18
19
  import { Banlist } from './banlist.js';
19
20
  import { Redactor } from './redactor.js';
20
21
  import { CallbackQueue } from './callback-engine.js';
21
22
  import { FloorControl } from './floor-control.js';
23
+ import { loadCaptchaConfig } from './captcha.js';
22
24
  // Import extracted handlers
23
25
  import { handleMsg, handleJoin, handleLeave, handleListChannels, handleListAgents, handleCreateChannel, handleInvite, handleFileChunk, } from './server/handlers/message.js';
24
26
  import { handleProposal, handleAccept, handleReject, handleComplete, handleDispute, } from './server/handlers/proposal.js';
@@ -28,7 +30,9 @@ import { handleRegisterSkills, handleSearchSkills, } from './server/handlers/ski
28
30
  import { handleSetPresence, } from './server/handlers/presence.js';
29
31
  import { handleSetNick, } from './server/handlers/nick.js';
30
32
  import { handleAdminApprove, handleAdminRevoke, handleAdminList, handleAdminMotd, } from './server/handlers/admin.js';
33
+ import { handleAdminVerify } from './server/handlers/admin.js';
31
34
  import { handleAdminKick, handleAdminBan, handleAdminUnban, } from './server/handlers/ban.js';
35
+ import { handleCaptchaResponse, } from './server/handlers/captcha.js';
32
36
  export class AgentChatServer {
33
37
  port;
34
38
  host;
@@ -75,14 +79,23 @@ export class AgentChatServer {
75
79
  // Pending challenges (challenge-response auth)
76
80
  pendingChallenges;
77
81
  challengeTimeoutMs;
82
+ // Captcha
83
+ captchaConfig;
84
+ // Open window — new agents skip the 1-hour lurk until this timestamp
85
+ openUntil;
86
+ pendingCaptchas;
78
87
  // Anti-sybil
79
88
  minProposalAgeMs;
80
89
  // Secret redactor (agentseenoevil)
81
90
  redactor;
91
+ // Genesis agent ID — always verified
92
+ genesisAgentId;
82
93
  // Allowlist
83
94
  allowlist;
84
95
  // Banlist
85
96
  banlist;
97
+ // Private channels toggle
98
+ privateChannelsEnabled;
86
99
  // Callback engine
87
100
  callbackQueue;
88
101
  // Floor control (RESPONDING_TO protocol)
@@ -173,8 +186,15 @@ export class AgentChatServer {
173
186
  this.challengeTimeoutMs = options.challengeTimeoutMs
174
187
  || parseInt(process.env.CHALLENGE_TIMEOUT_MS || '', 10)
175
188
  || 60000;
189
+ // Captcha
190
+ this.captchaConfig = loadCaptchaConfig();
191
+ this.pendingCaptchas = new Map();
176
192
  // Anti-sybil
177
193
  this.minProposalAgeMs = options.minProposalAgeMs ?? 60000;
194
+ // Private channels — disabled by default
195
+ this.privateChannelsEnabled = options.privateChannelsEnabled ?? (process.env.PRIVATE_CHANNELS_ENABLED === 'true');
196
+ // Genesis agent ID — hardcoded ID always granted verified:true
197
+ this.genesisAgentId = options.genesisAgentId || process.env.GENESIS_AGENT_ID || '8addfe276526c9f6';
178
198
  // Allowlist
179
199
  const allowlistEnabled = options.allowlistEnabled || process.env.ALLOWLIST_ENABLED === 'true';
180
200
  if (allowlistEnabled) {
@@ -218,6 +238,7 @@ export class AgentChatServer {
218
238
  this.maxConnectionsPerIp = options.maxConnectionsPerIp || parseInt(process.env.MAX_CONNECTIONS_PER_IP || '0');
219
239
  this.connectionsByIp = new Map();
220
240
  // WebSocket heartbeat
241
+ // Default heartbeat interval
221
242
  this.heartbeatIntervalMs = options.heartbeatIntervalMs || 30000; // 30s
222
243
  this.heartbeatTimeoutMs = options.heartbeatTimeoutMs || 10000; // 10s
223
244
  this.heartbeatTimer = null;
@@ -255,6 +276,31 @@ export class AgentChatServer {
255
276
  timestamp: new Date(now).toISOString()
256
277
  };
257
278
  }
279
+ /**
280
+ * Auto-join an agent to all public (non-invite-only) channels.
281
+ * Called after registration so the agent can immediately send messages
282
+ * without a separate JOIN handshake.
283
+ */
284
+ _autoJoinPublicChannels(ws) {
285
+ const agent = this.agents.get(ws);
286
+ if (!agent)
287
+ return;
288
+ for (const [name, channel] of this.channels) {
289
+ if (channel.inviteOnly)
290
+ continue;
291
+ if (channel.verifiedOnly && !agent.verified)
292
+ continue;
293
+ channel.agents.add(ws);
294
+ agent.channels.add(name);
295
+ // Broadcast join to existing members
296
+ this._broadcast(name, createMessage(ServerMessageType.AGENT_JOINED, {
297
+ channel: name,
298
+ agent: `@${agent.id}`,
299
+ name: agent.name,
300
+ verified: !!agent.verified
301
+ }), ws);
302
+ }
303
+ }
258
304
  _createChannel(name, inviteOnly = false, verifiedOnly = false) {
259
305
  if (!this.channels.has(name)) {
260
306
  this.channels.set(name, {
@@ -328,16 +374,34 @@ export class AgentChatServer {
328
374
  return agent.lurk === true;
329
375
  }
330
376
  _log(event, data = {}) {
377
+ // Default log level can be overridden by caller via data.level
378
+ const level = (data && data.level) || 'info';
331
379
  const entry = {
332
380
  ts: new Date().toISOString(),
381
+ level,
333
382
  event,
334
383
  ...data
335
384
  };
336
- console.error(JSON.stringify(entry));
385
+ // Ensure stack traces (if present) are strings so JSON.stringify doesn't drop them
386
+ if (entry.error instanceof Error) {
387
+ entry.error = { message: entry.error.message, stack: entry.error.stack };
388
+ }
389
+ try {
390
+ console.error(JSON.stringify(entry));
391
+ }
392
+ catch (err) {
393
+ // Fallback if circular values sneaked in
394
+ console.error(event, entry, String(err));
395
+ }
337
396
  }
338
397
  _send(ws, msg) {
339
398
  if (ws.readyState === 1) { // OPEN
340
- ws.send(serialize(msg));
399
+ try {
400
+ ws.send(serialize(msg));
401
+ }
402
+ catch (err) {
403
+ this._log('send_error', { error: err instanceof Error ? { message: err.message, stack: err.stack } : String(err), conn_id: ws._connId });
404
+ }
341
405
  }
342
406
  }
343
407
  _broadcast(channel, msg, excludeWs = null) {
@@ -364,6 +428,24 @@ export class AgentChatServer {
364
428
  res.writeHead(200, { 'Content-Type': 'application/json' });
365
429
  res.end(JSON.stringify(health));
366
430
  }
431
+ else if (req.method === 'GET' && req.url === '/api/connections') {
432
+ // Get current connections with geo data
433
+ const connections = Array.from(this.agentById.entries()).map(([agentId, ws]) => {
434
+ const ews = ws;
435
+ return {
436
+ agent_id: agentId,
437
+ ip: ews._realIp,
438
+ country: ews._geoCountry,
439
+ city: ews._geoCity,
440
+ lat: ews._geoLat,
441
+ lon: ews._geoLon,
442
+ connected_at: ews._connectedAt,
443
+ user_agent: ews._userAgent
444
+ };
445
+ });
446
+ res.writeHead(200, { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' });
447
+ res.end(JSON.stringify({ connections, count: connections.length }));
448
+ }
367
449
  else {
368
450
  res.writeHead(404);
369
451
  res.end('Not Found');
@@ -420,22 +502,44 @@ export class AgentChatServer {
420
502
  }
421
503
  // Store connection metadata on ws for later logging
422
504
  ws._connectedAt = Date.now();
505
+ // Short connection identifier for correlation with logs
506
+ ws._connId = `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
423
507
  ws._realIp = realIp;
424
508
  ws._userAgent = userAgent;
425
509
  ws._isAlive = true;
510
+ // GeoIP lookup
511
+ if (realIp) {
512
+ const geo = geoip.lookup(realIp);
513
+ if (geo) {
514
+ ws._geoCountry = geo.country;
515
+ ws._geoCity = geo.city;
516
+ ws._geoLat = geo.ll?.[0];
517
+ ws._geoLon = geo.ll?.[1];
518
+ }
519
+ }
426
520
  // WS-level pong handler for heartbeat
427
521
  ws.on('pong', () => {
428
522
  ws._isAlive = true;
523
+ ws._lastPong = Date.now();
429
524
  });
430
525
  this._log('connection', {
431
526
  ip: realIp,
432
527
  proxy_ip: req.socket.remoteAddress,
433
- user_agent: userAgent
528
+ user_agent: userAgent,
529
+ conn_id: ws._connId,
530
+ country: ws._geoCountry,
531
+ city: ws._geoCity
434
532
  });
435
533
  ws.on('message', (data) => {
534
+ // Log raw receive (size only) for correlation — avoid logging payloads
535
+ try {
536
+ this._log('ws_message_recv', { conn_id: ws._connId, size: data.length, ip: ws._realIp });
537
+ }
538
+ catch { }
436
539
  this._handleMessage(ws, data.toString());
437
540
  });
438
- ws.on('close', () => {
541
+ ws.on('close', (code, reason) => {
542
+ const reasonStr = reason ? reason.toString() : undefined;
439
543
  // Decrement per-IP connection count
440
544
  if (ws._realIp && this.maxConnectionsPerIp > 0) {
441
545
  const current = this.connectionsByIp.get(ws._realIp) || 0;
@@ -457,28 +561,44 @@ export class AgentChatServer {
457
561
  });
458
562
  }
459
563
  }
564
+ // Clean up any pending captchas for this ws
565
+ for (const [captchaId, captcha] of this.pendingCaptchas) {
566
+ if (captcha.ws === ws) {
567
+ this.pendingCaptchas.delete(captchaId);
568
+ this._log('captcha_abandoned', {
569
+ captchaId,
570
+ ip: ws._realIp,
571
+ reason: 'websocket_closed'
572
+ });
573
+ }
574
+ }
460
575
  // Log if connection closed without ever identifying (drive-by)
461
576
  if (!this.agents.has(ws)) {
462
577
  const duration = ws._connectedAt ? Math.round((Date.now() - ws._connectedAt) / 1000) : 0;
463
578
  this._log('connection_closed_unidentified', {
464
579
  ip: ws._realIp,
465
580
  duration_sec: duration,
466
- user_agent: ws._userAgent
581
+ user_agent: ws._userAgent,
582
+ conn_id: ws._connId,
583
+ close_code: code,
584
+ close_reason: reasonStr
467
585
  });
468
586
  }
469
587
  this._handleDisconnect(ws);
470
588
  });
471
589
  ws.on('error', (err) => {
472
- this._log('ws_error', { error: err.message });
473
- this._handleDisconnect(ws);
590
+ this._log('ws_error', { error: err instanceof Error ? { message: err.message, stack: err.stack } : String(err), conn_id: ws._connId, ip: ws._realIp });
591
+ // Attempt graceful shutdown of this socket
474
592
  try {
475
593
  ws.close(1006, 'WebSocket error');
476
594
  }
477
595
  catch { }
596
+ // Defer to disconnect handler for cleanup
597
+ this._handleDisconnect(ws);
478
598
  });
479
599
  });
480
600
  this.wss.on('error', (err) => {
481
- this._log('server_error', { error: err.message });
601
+ this._log('server_error', { error: err instanceof Error ? { message: err.message, stack: err.stack } : String(err) });
482
602
  });
483
603
  // Start idle channel checker
484
604
  this.idleCheckInterval = setInterval(() => {
@@ -488,18 +608,32 @@ export class AgentChatServer {
488
608
  this.heartbeatTimer = setInterval(() => {
489
609
  if (!this.wss)
490
610
  return;
611
+ const now = Date.now();
491
612
  this.wss.clients.forEach((ws) => {
492
613
  const ews = ws;
493
- if (ews._isAlive === false) {
614
+ // If we haven't seen a pong in 2x heartbeat interval, consider connection stale
615
+ const lastPong = ews._lastPong || ews._connectedAt || 0;
616
+ if (now - lastPong > (this.heartbeatIntervalMs * 2 + this.heartbeatTimeoutMs)) {
494
617
  this._log('heartbeat_timeout', {
495
618
  ip: ews._realIp,
496
619
  agent: this.agents.get(ews)?.id,
620
+ conn_id: ews._connId,
621
+ last_pong_ms: lastPong ? now - lastPong : null
497
622
  });
498
623
  this._handleDisconnect(ews);
499
- return ews.terminate();
624
+ try {
625
+ return ews.terminate();
626
+ }
627
+ catch { }
628
+ }
629
+ // Send a ping and record send time for correlation
630
+ try {
631
+ ews._isAlive = false;
632
+ ews.ping();
633
+ }
634
+ catch (err) {
635
+ this._log('heartbeat_ping_error', { error: err instanceof Error ? { message: err.message, stack: err.stack } : String(err), conn_id: ews._connId, ip: ews._realIp });
500
636
  }
501
- ews._isAlive = false;
502
- ews.ping();
503
637
  });
504
638
  }, this.heartbeatIntervalMs);
505
639
  return this;
@@ -603,7 +737,9 @@ export class AgentChatServer {
603
737
  }
604
738
  const result = validateClientMessage(data);
605
739
  if (!result.valid) {
606
- this._send(ws, createError(ErrorCode.INVALID_MSG, result.error));
740
+ const errorStr = result.error;
741
+ this._log('invalid_message', { conn_id: ws._connId, ip: ws._realIp, error: errorStr, payload_preview: data.slice(0, 200) });
742
+ this._send(ws, createError(ErrorCode.INVALID_MSG, errorStr));
607
743
  return;
608
744
  }
609
745
  const msg = result.msg;
@@ -698,6 +834,10 @@ export class AgentChatServer {
698
834
  case ClientMessageType.VERIFY_IDENTITY:
699
835
  handleVerifyIdentity(this, ws, msg);
700
836
  break;
837
+ // Captcha response
838
+ case ClientMessageType.CAPTCHA_RESPONSE:
839
+ handleCaptchaResponse(this, ws, msg);
840
+ break;
701
841
  // Nick
702
842
  case ClientMessageType.SET_NICK:
703
843
  handleSetNick(this, ws, msg);
@@ -725,6 +865,9 @@ export class AgentChatServer {
725
865
  case ClientMessageType.ADMIN_MOTD:
726
866
  handleAdminMotd(this, ws, msg);
727
867
  break;
868
+ case ClientMessageType.ADMIN_VERIFY:
869
+ handleAdminVerify(this, ws, msg);
870
+ break;
728
871
  // Floor control — RESPONDING_TO
729
872
  case ClientMessageType.RESPONDING_TO: {
730
873
  const rtAgent = this.agents.get(ws);