openclaw-protocol-bridge 1.0.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.
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Protocol Bridge - Core Bridge Implementation
3
+ * The TCP/IP of Agent Standards
4
+ */
5
+ import { EventEmitter } from 'events';
6
+ import { BridgeConfig, UniversalMessage, MessageResponse, AgentInfo, AgentIdentity, DiscoveryQuery, BridgeMetrics, HealthStatus, MiddlewareFunction } from './types';
7
+ export declare class ProtocolBridge extends EventEmitter {
8
+ private config;
9
+ private adapters;
10
+ private agents;
11
+ private middleware;
12
+ private metrics;
13
+ private startTime;
14
+ private running;
15
+ constructor(config: BridgeConfig);
16
+ /**
17
+ * Initialize the bridge
18
+ */
19
+ initialize(): Promise<void>;
20
+ /**
21
+ * Shutdown the bridge
22
+ */
23
+ shutdown(): Promise<void>;
24
+ /**
25
+ * Register an agent
26
+ */
27
+ registerAgent(agent: AgentInfo): Promise<boolean>;
28
+ /**
29
+ * Unregister an agent
30
+ */
31
+ unregisterAgent(agentId: string): Promise<void>;
32
+ /**
33
+ * Send a message from one agent to another
34
+ */
35
+ send(params: {
36
+ from: AgentIdentity;
37
+ to: AgentIdentity;
38
+ action: string;
39
+ params?: any;
40
+ metadata?: any;
41
+ }): Promise<MessageResponse>;
42
+ /**
43
+ * Route a message through the bridge
44
+ */
45
+ route(message: UniversalMessage): Promise<MessageResponse>;
46
+ /**
47
+ * Execute the actual routing
48
+ */
49
+ private executeRoute;
50
+ /**
51
+ * Discover agents
52
+ */
53
+ discover(query?: DiscoveryQuery): Promise<AgentInfo[]>;
54
+ /**
55
+ * Get bridge metrics
56
+ */
57
+ getMetrics(): BridgeMetrics;
58
+ /**
59
+ * Get health status
60
+ */
61
+ getHealth(): Promise<HealthStatus>;
62
+ /**
63
+ * Add middleware
64
+ */
65
+ use(middleware: MiddlewareFunction): void;
66
+ /**
67
+ * Get list of registered agents
68
+ */
69
+ getAgents(): AgentInfo[];
70
+ /**
71
+ * Get specific agent
72
+ */
73
+ getAgent(agentId: string): AgentInfo | undefined;
74
+ /**
75
+ * Initialize protocol adapters
76
+ */
77
+ private initializeAdapters;
78
+ /**
79
+ * Start discovery service
80
+ */
81
+ private startDiscovery;
82
+ /**
83
+ * Filter agents based on query
84
+ */
85
+ private filterAgents;
86
+ /**
87
+ * Apply middleware chain
88
+ */
89
+ private applyMiddleware;
90
+ /**
91
+ * Initialize metrics
92
+ */
93
+ private initializeMetrics;
94
+ /**
95
+ * Update metrics
96
+ */
97
+ private updateMetrics;
98
+ }
99
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/core/bridge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,kBAAkB,EAMnB,MAAM,SAAS,CAAC;AAEjB,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAA6C;IAC7D,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,OAAO,CAAkB;gBAErB,MAAM,EAAE,YAAY;IAOhC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IA+BvD;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE;QACjB,IAAI,EAAE,aAAa,CAAC;QACpB,EAAE,EAAE,aAAa,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,QAAQ,CAAC,EAAE,GAAG,CAAC;KAChB,GAAG,OAAO,CAAC,eAAe,CAAC;IAgB5B;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA6BhE;;OAEG;YACW,YAAY;IAyB1B;;OAEG;IACG,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAmB5D;;OAEG;IACH,UAAU,IAAI,aAAa;IAQ3B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IA4BxC;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAIzC;;OAEG;IACH,SAAS,IAAI,SAAS,EAAE;IAIxB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIhD;;OAEG;YACW,kBAAkB;IAsBhC;;OAEG;YACW,cAAc;IAsC5B;;OAEG;IACH,OAAO,CAAC,YAAY;IA+BpB;;OAEG;YACW,eAAe;IAkB7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,OAAO,CAAC,aAAa;CA2CtB"}
@@ -0,0 +1,387 @@
1
+ "use strict";
2
+ /**
3
+ * Protocol Bridge - Core Bridge Implementation
4
+ * The TCP/IP of Agent Standards
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ProtocolBridge = void 0;
8
+ const uuid_1 = require("uuid");
9
+ const events_1 = require("events");
10
+ const mcp_1 = require("../adapters/mcp");
11
+ const a2a_1 = require("../adapters/a2a");
12
+ const types_1 = require("./types");
13
+ class ProtocolBridge extends events_1.EventEmitter {
14
+ constructor(config) {
15
+ super();
16
+ this.adapters = new Map();
17
+ this.agents = new Map();
18
+ this.middleware = [];
19
+ this.running = false;
20
+ this.config = config;
21
+ this.startTime = new Date();
22
+ this.metrics = this.initializeMetrics();
23
+ }
24
+ /**
25
+ * Initialize the bridge
26
+ */
27
+ async initialize() {
28
+ console.log('Initializing Protocol Bridge...');
29
+ // Initialize protocol adapters
30
+ await this.initializeAdapters();
31
+ // Start discovery if enabled
32
+ if (this.config.discovery.enabled) {
33
+ await this.startDiscovery();
34
+ }
35
+ this.running = true;
36
+ this.emit('bridge:started');
37
+ console.log('Protocol Bridge initialized successfully');
38
+ }
39
+ /**
40
+ * Shutdown the bridge
41
+ */
42
+ async shutdown() {
43
+ console.log('Shutting down Protocol Bridge...');
44
+ // Disconnect all adapters
45
+ for (const [protocol, adapter] of this.adapters) {
46
+ await adapter.disconnect();
47
+ console.log(`Disconnected ${protocol} adapter`);
48
+ }
49
+ this.running = false;
50
+ this.emit('bridge:stopped');
51
+ console.log('Protocol Bridge shut down');
52
+ }
53
+ /**
54
+ * Register an agent
55
+ */
56
+ async registerAgent(agent) {
57
+ try {
58
+ const adapter = this.adapters.get(agent.protocol);
59
+ if (!adapter) {
60
+ throw new types_1.BridgeError('PROTOCOL_NOT_FOUND', `Protocol ${agent.protocol} is not enabled`);
61
+ }
62
+ // Validate agent with protocol adapter
63
+ const isValid = await adapter.validateAgent(agent);
64
+ if (!isValid) {
65
+ throw new types_1.BridgeError('VALIDATION_FAILED', `Failed to validate agent ${agent.id}`);
66
+ }
67
+ // Store agent
68
+ agent.status = 'active';
69
+ agent.lastSeen = new Date();
70
+ this.agents.set(agent.id, agent);
71
+ this.emit('agent:registered', agent);
72
+ console.log(`Agent registered: ${agent.id} (${agent.protocol})`);
73
+ return true;
74
+ }
75
+ catch (error) {
76
+ console.error(`Failed to register agent ${agent.id}:`, error);
77
+ throw error;
78
+ }
79
+ }
80
+ /**
81
+ * Unregister an agent
82
+ */
83
+ async unregisterAgent(agentId) {
84
+ const agent = this.agents.get(agentId);
85
+ if (agent) {
86
+ this.agents.delete(agentId);
87
+ this.emit('agent:unregistered', agent);
88
+ console.log(`Agent unregistered: ${agentId}`);
89
+ }
90
+ }
91
+ /**
92
+ * Send a message from one agent to another
93
+ */
94
+ async send(params) {
95
+ // Create universal message
96
+ const message = {
97
+ id: (0, uuid_1.v4)(),
98
+ timestamp: new Date(),
99
+ from: params.from,
100
+ to: params.to,
101
+ type: 'request',
102
+ action: params.action,
103
+ payload: params.params || {},
104
+ metadata: params.metadata,
105
+ };
106
+ return await this.route(message);
107
+ }
108
+ /**
109
+ * Route a message through the bridge
110
+ */
111
+ async route(message) {
112
+ const startTime = Date.now();
113
+ try {
114
+ // Apply middleware
115
+ let response;
116
+ const finalHandler = async (msg) => {
117
+ return await this.executeRoute(msg);
118
+ };
119
+ if (this.middleware.length > 0) {
120
+ response = await this.applyMiddleware(message, finalHandler);
121
+ }
122
+ else {
123
+ response = await finalHandler(message);
124
+ }
125
+ // Update metrics
126
+ const latency = Date.now() - startTime;
127
+ this.updateMetrics(message, response, latency);
128
+ this.emit('message:routed', { message, response, latency });
129
+ return response;
130
+ }
131
+ catch (error) {
132
+ this.emit('message:failed', { message, error });
133
+ throw error;
134
+ }
135
+ }
136
+ /**
137
+ * Execute the actual routing
138
+ */
139
+ async executeRoute(message) {
140
+ // Get target agent
141
+ const targetAgent = this.agents.get(message.to.id);
142
+ if (!targetAgent) {
143
+ throw new types_1.RoutingError(`Agent not found: ${message.to.id}`);
144
+ }
145
+ // Get source and target adapters
146
+ const sourceAdapter = this.adapters.get(message.from.protocol);
147
+ const targetAdapter = this.adapters.get(message.to.protocol);
148
+ if (!sourceAdapter || !targetAdapter) {
149
+ throw new types_1.RoutingError('Protocol adapter not found');
150
+ }
151
+ // If protocols are the same, just forward
152
+ if (message.from.protocol === message.to.protocol) {
153
+ return await targetAdapter.send(message);
154
+ }
155
+ // Translate between protocols
156
+ // The message is already in universal format, so we just need to send it
157
+ return await targetAdapter.send(message);
158
+ }
159
+ /**
160
+ * Discover agents
161
+ */
162
+ async discover(query) {
163
+ let agents = [];
164
+ // Query all enabled protocol adapters
165
+ for (const [protocol, adapter] of this.adapters) {
166
+ if (adapter.isEnabled()) {
167
+ const protocolAgents = await adapter.discover();
168
+ agents = agents.concat(protocolAgents);
169
+ }
170
+ }
171
+ // Filter based on query
172
+ if (query) {
173
+ agents = this.filterAgents(agents, query);
174
+ }
175
+ return agents;
176
+ }
177
+ /**
178
+ * Get bridge metrics
179
+ */
180
+ getMetrics() {
181
+ const uptime = Math.floor((Date.now() - this.startTime.getTime()) / 1000);
182
+ return {
183
+ ...this.metrics,
184
+ uptime,
185
+ };
186
+ }
187
+ /**
188
+ * Get health status
189
+ */
190
+ async getHealth() {
191
+ const protocols = {};
192
+ for (const [protocol, adapter] of this.adapters) {
193
+ const isHealthy = await adapter.healthCheck();
194
+ protocols[protocol] = isHealthy ? 'active' : 'inactive';
195
+ }
196
+ const activeAgents = Array.from(this.agents.values()).filter((a) => a.status === 'active').length;
197
+ const inactiveAgents = this.agents.size - activeAgents;
198
+ const uptime = Math.floor((Date.now() - this.startTime.getTime()) / 1000);
199
+ return {
200
+ status: this.running ? 'healthy' : 'unhealthy',
201
+ uptime,
202
+ protocols,
203
+ agents: {
204
+ registered: this.agents.size,
205
+ active: activeAgents,
206
+ inactive: inactiveAgents,
207
+ },
208
+ lastCheck: new Date(),
209
+ };
210
+ }
211
+ /**
212
+ * Add middleware
213
+ */
214
+ use(middleware) {
215
+ this.middleware.push(middleware);
216
+ }
217
+ /**
218
+ * Get list of registered agents
219
+ */
220
+ getAgents() {
221
+ return Array.from(this.agents.values());
222
+ }
223
+ /**
224
+ * Get specific agent
225
+ */
226
+ getAgent(agentId) {
227
+ return this.agents.get(agentId);
228
+ }
229
+ /**
230
+ * Initialize protocol adapters
231
+ */
232
+ async initializeAdapters() {
233
+ // MCP
234
+ if (this.config.protocols.mcp?.enabled) {
235
+ const mcpAdapter = new mcp_1.MCPAdapter(this.config.protocols.mcp);
236
+ await mcpAdapter.initialize();
237
+ await mcpAdapter.connect();
238
+ this.adapters.set('mcp', mcpAdapter);
239
+ console.log('MCP adapter initialized');
240
+ }
241
+ // A2A
242
+ if (this.config.protocols.a2a?.enabled) {
243
+ const a2aAdapter = new a2a_1.A2AAdapter(this.config.protocols.a2a);
244
+ await a2aAdapter.initialize();
245
+ await a2aAdapter.connect();
246
+ this.adapters.set('a2a', a2aAdapter);
247
+ console.log('A2A adapter initialized');
248
+ }
249
+ // TODO: Add more protocol adapters (ACP, LangChain, etc.)
250
+ }
251
+ /**
252
+ * Start discovery service
253
+ */
254
+ async startDiscovery() {
255
+ const interval = this.config.discovery.interval || 30000; // 30 seconds default
256
+ setInterval(async () => {
257
+ try {
258
+ // Discover agents from all protocols
259
+ const discoveredAgents = await this.discover();
260
+ // Update agent status
261
+ for (const agent of discoveredAgents) {
262
+ if (!this.agents.has(agent.id)) {
263
+ // New agent discovered
264
+ await this.registerAgent(agent);
265
+ }
266
+ else {
267
+ // Update existing agent
268
+ const existing = this.agents.get(agent.id);
269
+ existing.lastSeen = new Date();
270
+ existing.status = 'active';
271
+ }
272
+ }
273
+ // Mark stale agents as inactive
274
+ const ttl = this.config.discovery.ttl || 60000; // 60 seconds default
275
+ const now = Date.now();
276
+ for (const [id, agent] of this.agents) {
277
+ if (agent.lastSeen && now - agent.lastSeen.getTime() > ttl) {
278
+ agent.status = 'inactive';
279
+ this.emit('agent:status_changed', agent);
280
+ }
281
+ }
282
+ }
283
+ catch (error) {
284
+ console.error('Discovery error:', error);
285
+ }
286
+ }, interval);
287
+ console.log(`Discovery service started (interval: ${interval}ms)`);
288
+ }
289
+ /**
290
+ * Filter agents based on query
291
+ */
292
+ filterAgents(agents, query) {
293
+ return agents.filter((agent) => {
294
+ // Filter by capabilities
295
+ if (query.capabilities && query.capabilities.length > 0) {
296
+ const hasCapabilities = query.capabilities.every((cap) => agent.capabilities.some((c) => c.name === cap));
297
+ if (!hasCapabilities)
298
+ return false;
299
+ }
300
+ // Filter by protocols
301
+ if (query.protocols && query.protocols.length > 0) {
302
+ if (!query.protocols.includes(agent.protocol))
303
+ return false;
304
+ }
305
+ // Filter by max cost
306
+ if (query.maxCost !== undefined) {
307
+ const totalCost = agent.capabilities.reduce((sum, c) => sum + (c.cost || 0), 0);
308
+ if (totalCost > query.maxCost)
309
+ return false;
310
+ }
311
+ // Filter by max latency
312
+ if (query.maxLatency !== undefined) {
313
+ const maxLatency = Math.max(...agent.capabilities.map((c) => c.latency || 0));
314
+ if (maxLatency > query.maxLatency)
315
+ return false;
316
+ }
317
+ return true;
318
+ });
319
+ }
320
+ /**
321
+ * Apply middleware chain
322
+ */
323
+ async applyMiddleware(message, finalHandler) {
324
+ let index = 0;
325
+ const next = async (msg) => {
326
+ if (index >= this.middleware.length) {
327
+ return await finalHandler(msg);
328
+ }
329
+ const middleware = this.middleware[index++];
330
+ return await middleware(msg, next);
331
+ };
332
+ return await next(message);
333
+ }
334
+ /**
335
+ * Initialize metrics
336
+ */
337
+ initializeMetrics() {
338
+ return {
339
+ totalMessages: 0,
340
+ successRate: 0,
341
+ averageLatency: 0,
342
+ protocolStats: {},
343
+ agentStats: {
344
+ registered: 0,
345
+ active: 0,
346
+ inactive: 0,
347
+ },
348
+ uptime: 0,
349
+ };
350
+ }
351
+ /**
352
+ * Update metrics
353
+ */
354
+ updateMetrics(message, response, latency) {
355
+ this.metrics.totalMessages++;
356
+ // Update protocol stats
357
+ const protocol = message.to.protocol;
358
+ if (!this.metrics.protocolStats[protocol]) {
359
+ this.metrics.protocolStats[protocol] = {
360
+ sent: 0,
361
+ received: 0,
362
+ errors: 0,
363
+ averageLatency: 0,
364
+ };
365
+ }
366
+ const stats = this.metrics.protocolStats[protocol];
367
+ stats.sent++;
368
+ if (response.status === 'success') {
369
+ stats.received++;
370
+ }
371
+ else {
372
+ stats.errors++;
373
+ }
374
+ // Update average latency
375
+ stats.averageLatency =
376
+ (stats.averageLatency * (stats.sent - 1) + latency) / stats.sent;
377
+ // Update overall average latency
378
+ this.metrics.averageLatency =
379
+ (this.metrics.averageLatency * (this.metrics.totalMessages - 1) + latency) /
380
+ this.metrics.totalMessages;
381
+ // Update success rate
382
+ const totalSuccess = Object.values(this.metrics.protocolStats).reduce((sum, s) => sum + s.received, 0);
383
+ this.metrics.successRate = totalSuccess / this.metrics.totalMessages;
384
+ }
385
+ }
386
+ exports.ProtocolBridge = ProtocolBridge;
387
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/core/bridge.ts"],"names":[],"mappings":"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"}