@tjamescouch/agentchat 0.22.0 → 0.23.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.
Files changed (135) 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 → dist/lib}/jitter.js +16 -19
  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/lib/chat.py +0 -241
  109. package/lib/client.js +0 -821
  110. package/lib/daemon.js +0 -562
  111. package/lib/deploy/akash.js +0 -811
  112. package/lib/deploy/config.js +0 -128
  113. package/lib/deploy/docker.js +0 -132
  114. package/lib/deploy/index.js +0 -24
  115. package/lib/elo_swarm.py +0 -569
  116. package/lib/escrow-hooks.js +0 -237
  117. package/lib/identity.js +0 -376
  118. package/lib/proposals.js +0 -426
  119. package/lib/protocol.js +0 -484
  120. package/lib/receipts.js +0 -294
  121. package/lib/reputation.js +0 -664
  122. package/lib/security.js +0 -183
  123. package/lib/server/handlers/identity.js +0 -242
  124. package/lib/server/handlers/index.js +0 -42
  125. package/lib/server/handlers/message.js +0 -306
  126. package/lib/server/handlers/presence.js +0 -44
  127. package/lib/server/handlers/proposal.js +0 -358
  128. package/lib/server/handlers/skills.js +0 -141
  129. package/lib/server-directory.js +0 -181
  130. package/lib/server.js +0 -528
  131. package/lib/supervisor/USAGE.md +0 -110
  132. package/lib/supervisor/agent-supervisor.sh +0 -135
  133. package/lib/supervisor/agentctl.sh +0 -250
  134. package/lib/supervisor/killswitch.sh +0 -36
  135. package/lib/supervisor/notify.sh +0 -19
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Server Directory
3
+ * Registry of known AgentChat servers for discovery
4
+ */
5
+ import http from 'http';
6
+ import https from 'https';
7
+ import fs from 'fs/promises';
8
+ import path from 'path';
9
+ // Default public servers (can be extended)
10
+ export const DEFAULT_SERVERS = process.env.AGENTCHAT_PUBLIC === 'true'
11
+ ? [
12
+ {
13
+ name: 'AgentChat Public',
14
+ url: 'wss://agentchat-server.fly.dev',
15
+ description: 'Official public AgentChat server',
16
+ region: 'global'
17
+ }
18
+ ]
19
+ : [
20
+ {
21
+ name: 'AgentChat Local',
22
+ url: 'ws://localhost:6667',
23
+ description: 'Local AgentChat server',
24
+ region: 'local'
25
+ }
26
+ ];
27
+ // Default directory file path
28
+ export const DEFAULT_DIRECTORY_PATH = path.join(process.env.HOME || process.env.USERPROFILE || '.', '.agentchat', 'servers.json');
29
+ /**
30
+ * Server Directory for discovering AgentChat servers
31
+ */
32
+ export class ServerDirectory {
33
+ directoryPath;
34
+ servers;
35
+ timeout;
36
+ constructor(options = {}) {
37
+ this.directoryPath = options.directoryPath || DEFAULT_DIRECTORY_PATH;
38
+ this.servers = [...DEFAULT_SERVERS];
39
+ this.timeout = options.timeout || 5000;
40
+ }
41
+ /**
42
+ * Load servers from directory file
43
+ */
44
+ async load() {
45
+ try {
46
+ const data = await fs.readFile(this.directoryPath, 'utf8');
47
+ const loaded = JSON.parse(data);
48
+ if (Array.isArray(loaded.servers)) {
49
+ // Merge with defaults, avoiding duplicates by URL
50
+ const urls = new Set(this.servers.map(s => s.url));
51
+ for (const server of loaded.servers) {
52
+ if (!urls.has(server.url)) {
53
+ this.servers.push(server);
54
+ urls.add(server.url);
55
+ }
56
+ }
57
+ }
58
+ }
59
+ catch {
60
+ // File doesn't exist or is invalid, use defaults
61
+ }
62
+ return this;
63
+ }
64
+ /**
65
+ * Save servers to directory file
66
+ */
67
+ async save() {
68
+ const dir = path.dirname(this.directoryPath);
69
+ await fs.mkdir(dir, { recursive: true });
70
+ await fs.writeFile(this.directoryPath, JSON.stringify({
71
+ version: 1,
72
+ updated_at: new Date().toISOString(),
73
+ servers: this.servers
74
+ }, null, 2));
75
+ }
76
+ /**
77
+ * Add a server to the directory
78
+ */
79
+ async addServer(server) {
80
+ const existing = this.servers.find(s => s.url === server.url);
81
+ if (existing) {
82
+ Object.assign(existing, server);
83
+ }
84
+ else {
85
+ this.servers.push(server);
86
+ }
87
+ await this.save();
88
+ }
89
+ /**
90
+ * Remove a server from the directory
91
+ */
92
+ async removeServer(url) {
93
+ this.servers = this.servers.filter(s => s.url !== url);
94
+ await this.save();
95
+ }
96
+ /**
97
+ * Check health of a single server
98
+ * @param server - Server object with url
99
+ * @returns Server with health status
100
+ */
101
+ async checkHealth(server) {
102
+ const wsUrl = server.url;
103
+ // Convert ws:// or wss:// to http:// or https://
104
+ const httpUrl = wsUrl
105
+ .replace('wss://', 'https://')
106
+ .replace('ws://', 'http://');
107
+ try {
108
+ const health = await this._fetchHealth(httpUrl + '/health');
109
+ return {
110
+ ...server,
111
+ status: 'online',
112
+ health,
113
+ checked_at: new Date().toISOString()
114
+ };
115
+ }
116
+ catch (err) {
117
+ const error = err;
118
+ return {
119
+ ...server,
120
+ status: 'offline',
121
+ error: error.message || error.code || 'Unknown error',
122
+ checked_at: new Date().toISOString()
123
+ };
124
+ }
125
+ }
126
+ /**
127
+ * Fetch health endpoint
128
+ */
129
+ _fetchHealth(url) {
130
+ return new Promise((resolve, reject) => {
131
+ const protocol = url.startsWith('https') ? https : http;
132
+ const req = protocol.get(url, { timeout: this.timeout }, (res) => {
133
+ let data = '';
134
+ res.on('data', (chunk) => data += chunk);
135
+ res.on('end', () => {
136
+ if (res.statusCode === 200) {
137
+ try {
138
+ resolve(JSON.parse(data));
139
+ }
140
+ catch {
141
+ reject(new Error('Invalid health response'));
142
+ }
143
+ }
144
+ else {
145
+ reject(new Error(`HTTP ${res.statusCode}`));
146
+ }
147
+ });
148
+ });
149
+ req.on('error', reject);
150
+ req.on('timeout', () => {
151
+ req.destroy();
152
+ reject(new Error('Timeout'));
153
+ });
154
+ });
155
+ }
156
+ /**
157
+ * Discover available servers (check health of all known servers)
158
+ * @param options
159
+ * @param options.onlineOnly - Only return online servers
160
+ * @returns List of servers with status
161
+ */
162
+ async discover(options = {}) {
163
+ const results = await Promise.all(this.servers.map(server => this.checkHealth(server)));
164
+ if (options.onlineOnly) {
165
+ return results.filter(s => s.status === 'online');
166
+ }
167
+ return results;
168
+ }
169
+ /**
170
+ * Get list of known servers without health check
171
+ */
172
+ list() {
173
+ return [...this.servers];
174
+ }
175
+ }
176
+ export default ServerDirectory;
177
+ //# sourceMappingURL=server-directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-directory.js","sourceRoot":"","sources":["../../lib/server-directory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * AgentChat Server
3
+ * WebSocket relay for agent-to-agent communication
4
+ */
5
+ import { WebSocketServer, WebSocket } from 'ws';
6
+ import http from 'http';
7
+ import https from 'https';
8
+ import { Skill, PresenceStatus, AnyMessage } from './types.js';
9
+ import { ProposalStore } from './proposals.js';
10
+ import { ReputationStore } from './reputation.js';
11
+ import { EscrowHooks } from './escrow-hooks.js';
12
+ import { Allowlist } from './allowlist.js';
13
+ interface ExtendedWebSocket extends WebSocket {
14
+ _connectedAt?: number;
15
+ _realIp?: string;
16
+ _userAgent?: string;
17
+ _msgTimestamps?: number[];
18
+ _isAlive?: boolean;
19
+ }
20
+ export interface AgentState {
21
+ id: string;
22
+ name?: string;
23
+ channels: Set<string>;
24
+ pubkey?: string | null;
25
+ presence?: PresenceStatus | string;
26
+ status_text?: string | null;
27
+ connectedAt?: number;
28
+ verified?: boolean;
29
+ }
30
+ export interface PendingChallenge {
31
+ ws: ExtendedWebSocket;
32
+ name: string;
33
+ pubkey: string;
34
+ nonce: string;
35
+ challengeId: string;
36
+ expires: number;
37
+ }
38
+ export interface ChannelState {
39
+ name: string;
40
+ inviteOnly: boolean;
41
+ invited: Set<string>;
42
+ agents: Set<ExtendedWebSocket>;
43
+ messageBuffer: AnyMessage[];
44
+ }
45
+ export interface SkillRegistration {
46
+ skills: Skill[];
47
+ registered_at: number;
48
+ sig: string;
49
+ }
50
+ export interface PendingVerification {
51
+ from: string;
52
+ target: string;
53
+ nonce: string;
54
+ expires: number;
55
+ }
56
+ export interface AgentChatServerOptions {
57
+ port?: number;
58
+ host?: string;
59
+ name?: string;
60
+ logMessages?: boolean;
61
+ cert?: string | null;
62
+ key?: string | null;
63
+ rateLimitMs?: number;
64
+ messageBufferSize?: number;
65
+ idleTimeoutMs?: number;
66
+ verificationTimeoutMs?: number;
67
+ logger?: Console;
68
+ escrowHandlers?: Record<string, (payload: unknown) => Promise<void>>;
69
+ allowlistEnabled?: boolean;
70
+ allowlistStrict?: boolean;
71
+ allowlistAdminKey?: string | null;
72
+ allowlistFilePath?: string;
73
+ maxConnectionsPerIp?: number;
74
+ heartbeatIntervalMs?: number;
75
+ heartbeatTimeoutMs?: number;
76
+ }
77
+ export interface HealthStatus {
78
+ status: string;
79
+ server: string;
80
+ version: string;
81
+ uptime_seconds: number;
82
+ started_at: string | null;
83
+ agents: {
84
+ connected: number;
85
+ with_identity: number;
86
+ };
87
+ channels: {
88
+ total: number;
89
+ public: number;
90
+ };
91
+ proposals: ReturnType<ProposalStore['stats']>;
92
+ timestamp: string;
93
+ }
94
+ export declare class AgentChatServer {
95
+ port: number;
96
+ host: string;
97
+ serverName: string;
98
+ logMessages: boolean;
99
+ tlsCert: string | null;
100
+ tlsKey: string | null;
101
+ rateLimitMs: number;
102
+ messageBufferSize: number;
103
+ agents: Map<ExtendedWebSocket, AgentState>;
104
+ agentById: Map<string, ExtendedWebSocket>;
105
+ channels: Map<string, ChannelState>;
106
+ lastMessageTime: Map<ExtendedWebSocket, number>;
107
+ pubkeyToId: Map<string, string>;
108
+ idleTimeoutMs: number;
109
+ idleCheckInterval: NodeJS.Timeout | null;
110
+ channelLastActivity: Map<string, number>;
111
+ conversationStarters: string[];
112
+ proposals: ProposalStore;
113
+ skillsRegistry: Map<string, SkillRegistration>;
114
+ reputationStore: ReputationStore;
115
+ escrowHooks: EscrowHooks;
116
+ pendingVerifications: Map<string, PendingVerification>;
117
+ verificationTimeoutMs: number;
118
+ pendingChallenges: Map<string, PendingChallenge>;
119
+ challengeTimeoutMs: number;
120
+ allowlist: Allowlist | null;
121
+ maxConnectionsPerIp: number;
122
+ connectionsByIp: Map<string, number>;
123
+ heartbeatIntervalMs: number;
124
+ heartbeatTimeoutMs: number;
125
+ heartbeatTimer: NodeJS.Timeout | null;
126
+ wss: WebSocketServer | null;
127
+ httpServer: http.Server | https.Server | null;
128
+ startedAt: number | null;
129
+ constructor(options?: AgentChatServerOptions);
130
+ /**
131
+ * Register a handler for escrow events
132
+ */
133
+ onEscrow(event: string, handler: (payload: unknown) => Promise<void>): () => void;
134
+ /**
135
+ * Get server health status
136
+ */
137
+ getHealth(): HealthStatus;
138
+ _createChannel(name: string, inviteOnly?: boolean): ChannelState;
139
+ /**
140
+ * Add a message to a channel's buffer (circular buffer)
141
+ */
142
+ _bufferMessage(channel: string, msg: AnyMessage): void;
143
+ /**
144
+ * Replay buffered messages to a newly joined agent
145
+ */
146
+ _replayMessages(ws: ExtendedWebSocket, channel: string): void;
147
+ _log(event: string, data?: Record<string, unknown>): void;
148
+ _send(ws: ExtendedWebSocket, msg: AnyMessage): void;
149
+ _broadcast(channel: string, msg: AnyMessage, excludeWs?: ExtendedWebSocket | null): void;
150
+ _getAgentId(ws: ExtendedWebSocket): string | null;
151
+ start(): this;
152
+ /**
153
+ * Check for idle channels and post conversation starters
154
+ */
155
+ _checkIdleChannels(): void;
156
+ stop(): void;
157
+ _handleMessage(ws: ExtendedWebSocket, data: string): void;
158
+ _handleDisconnect(ws: ExtendedWebSocket): void;
159
+ }
160
+ export declare function startServer(options?: AgentChatServerOptions): AgentChatServer;
161
+ export { EscrowEvent } from './escrow-hooks.js';
162
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../lib/server.ts"],"names":[],"mappings":"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"}