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,93 @@
1
+ {
2
+ "douyin": {
3
+ "enabled": true,
4
+ "name": "抖音",
5
+ "api_base": "https://open.douyin.com",
6
+ "upload_endpoint": "/oauth/platform/upload/video",
7
+ "max_file_size": 268435456,
8
+ "supported_formats": ["mp4", "mov", "avi"],
9
+ "max_duration": 300,
10
+ "rate_limit": {
11
+ "requests_per_hour": 100,
12
+ "requests_per_day": 1000
13
+ }
14
+ },
15
+ "kuaishou": {
16
+ "enabled": true,
17
+ "name": "快手",
18
+ "api_base": "https://open.kuaishou.com",
19
+ "upload_endpoint": "/openapi/video/upload",
20
+ "max_file_size": 268435456,
21
+ "supported_formats": ["mp4", "mov"],
22
+ "max_duration": 600,
23
+ "rate_limit": {
24
+ "requests_per_hour": 100,
25
+ "requests_per_day": 1000
26
+ }
27
+ },
28
+ "weixin": {
29
+ "enabled": true,
30
+ "name": "微信视频号",
31
+ "api_base": "https://api.weixin.qq.com",
32
+ "upload_endpoint": "/channels/ec/basics/video/upload",
33
+ "max_file_size": 268435456,
34
+ "supported_formats": ["mp4"],
35
+ "max_duration": 300,
36
+ "rate_limit": {
37
+ "requests_per_hour": 50,
38
+ "requests_per_day": 500
39
+ }
40
+ },
41
+ "bilibili": {
42
+ "enabled": true,
43
+ "name": "哔哩哔哩",
44
+ "api_base": "https://member.bilibili.com",
45
+ "upload_endpoint": "/x/vu/web/add/v3",
46
+ "max_file_size": 4294967296,
47
+ "supported_formats": ["mp4", "flv", "mov"],
48
+ "max_duration": 7200,
49
+ "rate_limit": {
50
+ "requests_per_hour": 50,
51
+ "requests_per_day": 500
52
+ }
53
+ },
54
+ "xiaohongshu": {
55
+ "enabled": false,
56
+ "name": "小红书",
57
+ "api_base": "https://open.xiaohongshu.com",
58
+ "upload_endpoint": "/api/v1/video/upload",
59
+ "max_file_size": 268435456,
60
+ "supported_formats": ["mp4"],
61
+ "max_duration": 300,
62
+ "rate_limit": {
63
+ "requests_per_hour": 50,
64
+ "requests_per_day": 500
65
+ }
66
+ },
67
+ "youtube": {
68
+ "enabled": true,
69
+ "name": "YouTube",
70
+ "api_base": "https://www.googleapis.com",
71
+ "upload_endpoint": "/upload/youtube/v3/videos",
72
+ "max_file_size": 137438953472,
73
+ "supported_formats": ["mp4", "mov", "avi", "flv"],
74
+ "max_duration": 43200,
75
+ "rate_limit": {
76
+ "requests_per_hour": 1000,
77
+ "requests_per_day": 10000
78
+ }
79
+ },
80
+ "tiktok": {
81
+ "enabled": true,
82
+ "name": "TikTok",
83
+ "api_base": "https://open-api.tiktok.com",
84
+ "upload_endpoint": "/share/video/upload",
85
+ "max_file_size": 287453952,
86
+ "supported_formats": ["mp4", "mov"],
87
+ "max_duration": 300,
88
+ "rate_limit": {
89
+ "requests_per_hour": 100,
90
+ "requests_per_day": 1000
91
+ }
92
+ }
93
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * A2A (Agent-to-Agent) Protocol Adapter
3
+ * Developed by Google with 50+ industry partners
4
+ */
5
+ import { BaseAdapter } from './base';
6
+ import { UniversalMessage, MessageResponse, AgentInfo, ProtocolConfig } from '../core/types';
7
+ /**
8
+ * A2A Message Format
9
+ */
10
+ interface A2AMessage {
11
+ message_id: string;
12
+ timestamp: string;
13
+ sender: {
14
+ agent_id: string;
15
+ name?: string;
16
+ };
17
+ recipient: {
18
+ agent_id: string;
19
+ };
20
+ message_type: 'task' | 'response' | 'event' | 'query';
21
+ content: {
22
+ skill: string;
23
+ parameters: any;
24
+ };
25
+ metadata?: {
26
+ priority?: string;
27
+ timeout?: number;
28
+ [key: string]: any;
29
+ };
30
+ }
31
+ export declare class A2AAdapter extends BaseAdapter {
32
+ private client;
33
+ private registeredAgents;
34
+ private discoveryEndpoint?;
35
+ constructor(config: ProtocolConfig);
36
+ initialize(): Promise<void>;
37
+ connect(): Promise<void>;
38
+ disconnect(): Promise<void>;
39
+ send(message: UniversalMessage): Promise<MessageResponse>;
40
+ receive(data: any): Promise<UniversalMessage>;
41
+ toProtocolFormat(message: UniversalMessage): A2AMessage;
42
+ fromProtocolFormat(data: any): UniversalMessage;
43
+ discover(): Promise<AgentInfo[]>;
44
+ validateAgent(agent: AgentInfo): Promise<boolean>;
45
+ /**
46
+ * A2A-specific: Register with discovery service
47
+ */
48
+ private registerWithDiscovery;
49
+ /**
50
+ * A2A-specific: Unregister from discovery service
51
+ */
52
+ private unregisterFromDiscovery;
53
+ /**
54
+ * Map universal message type to A2A type
55
+ */
56
+ private mapMessageType;
57
+ /**
58
+ * Map A2A message type to universal type
59
+ */
60
+ private mapToUniversalType;
61
+ /**
62
+ * Normalize priority string to valid MessageMetadata priority
63
+ */
64
+ private normalizePriority;
65
+ }
66
+ export {};
67
+ //# sourceMappingURL=a2a.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a.d.ts","sourceRoot":"","sources":["../../src/adapters/a2a.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,cAAc,EAEf,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IACtD,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,GAAG,CAAC;KACjB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;CACH;AAqBD,qBAAa,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,OAAO,CAAC,iBAAiB,CAAC,CAAS;gBAEvB,MAAM,EAAE,cAAc;IAY5B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAcxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA+CzD,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAInD,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU;IAoBvD,kBAAkB,CAAC,IAAI,EAAE,GAAG,GAAG,gBAAgB;IA4BzC,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAkBhC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BvD;;OAEG;YACW,qBAAqB;IAenC;;OAEG;YACW,uBAAuB;IAarC;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAU1B"}
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ /**
3
+ * A2A (Agent-to-Agent) Protocol Adapter
4
+ * Developed by Google with 50+ industry partners
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.A2AAdapter = void 0;
11
+ const axios_1 = __importDefault(require("axios"));
12
+ const base_1 = require("./base");
13
+ const types_1 = require("../core/types");
14
+ class A2AAdapter extends base_1.BaseAdapter {
15
+ constructor(config) {
16
+ super('a2a', config);
17
+ this.registeredAgents = new Map();
18
+ this.client = axios_1.default.create({
19
+ timeout: 30000,
20
+ headers: {
21
+ 'Content-Type': 'application/json',
22
+ 'X-Protocol': 'A2A/1.0',
23
+ },
24
+ });
25
+ this.discoveryEndpoint = config.options?.discoveryEndpoint;
26
+ }
27
+ async initialize() {
28
+ console.log(`Initializing A2A adapter (version: ${this.config.version})`);
29
+ }
30
+ async connect() {
31
+ try {
32
+ this.connected = true;
33
+ console.log('A2A adapter connected');
34
+ // Optionally connect to discovery service
35
+ if (this.discoveryEndpoint) {
36
+ await this.registerWithDiscovery();
37
+ }
38
+ }
39
+ catch (error) {
40
+ this.handleError(error, 'Failed to connect to A2A');
41
+ }
42
+ }
43
+ async disconnect() {
44
+ if (this.discoveryEndpoint) {
45
+ await this.unregisterFromDiscovery();
46
+ }
47
+ this.connected = false;
48
+ this.registeredAgents.clear();
49
+ console.log('A2A adapter disconnected');
50
+ }
51
+ async send(message) {
52
+ this.validateMessage(message);
53
+ try {
54
+ const agent = this.registeredAgents.get(message.to.id);
55
+ if (!agent) {
56
+ throw new types_1.ProtocolError('a2a', `Agent not found: ${message.to.id}`);
57
+ }
58
+ // Translate to A2A format
59
+ const a2aMessage = this.toProtocolFormat(message);
60
+ // Send via HTTP POST to agent's endpoint
61
+ const response = await this.client.post(`${agent.endpoint}/message`, a2aMessage);
62
+ if (response.data.status === 'error') {
63
+ return {
64
+ messageId: message.id,
65
+ status: 'error',
66
+ error: {
67
+ code: response.data.error?.code || 'A2A_ERROR',
68
+ message: response.data.error?.message || 'Unknown error',
69
+ },
70
+ };
71
+ }
72
+ return {
73
+ messageId: message.id,
74
+ status: 'success',
75
+ data: response.data.result,
76
+ };
77
+ }
78
+ catch (error) {
79
+ return {
80
+ messageId: message.id,
81
+ status: 'error',
82
+ error: {
83
+ code: 'A2A_SEND_ERROR',
84
+ message: error.message,
85
+ details: error,
86
+ },
87
+ };
88
+ }
89
+ }
90
+ async receive(data) {
91
+ return this.fromProtocolFormat(data);
92
+ }
93
+ toProtocolFormat(message) {
94
+ return {
95
+ message_id: message.id,
96
+ timestamp: message.timestamp.toISOString(),
97
+ sender: {
98
+ agent_id: message.from.id,
99
+ name: message.from.name,
100
+ },
101
+ recipient: {
102
+ agent_id: message.to.id,
103
+ },
104
+ message_type: this.mapMessageType(message.type),
105
+ content: {
106
+ skill: message.action,
107
+ parameters: message.payload,
108
+ },
109
+ metadata: message.metadata,
110
+ };
111
+ }
112
+ fromProtocolFormat(data) {
113
+ const a2aMessage = data;
114
+ // Convert A2A metadata to universal format
115
+ const metadata = a2aMessage.metadata ? {
116
+ ...a2aMessage.metadata,
117
+ priority: this.normalizePriority(a2aMessage.metadata.priority),
118
+ } : undefined;
119
+ return {
120
+ id: a2aMessage.message_id,
121
+ timestamp: new Date(a2aMessage.timestamp),
122
+ from: {
123
+ id: a2aMessage.sender.agent_id,
124
+ protocol: 'a2a',
125
+ name: a2aMessage.sender.name,
126
+ },
127
+ to: {
128
+ id: a2aMessage.recipient.agent_id,
129
+ protocol: 'a2a',
130
+ },
131
+ type: this.mapToUniversalType(a2aMessage.message_type),
132
+ action: a2aMessage.content.skill,
133
+ payload: a2aMessage.content.parameters,
134
+ metadata,
135
+ };
136
+ }
137
+ async discover() {
138
+ if (!this.discoveryEndpoint) {
139
+ // Return locally registered agents
140
+ return Array.from(this.registeredAgents.values()).filter((agent) => agent.status === 'active');
141
+ }
142
+ try {
143
+ // Query discovery service
144
+ const response = await this.client.get(`${this.discoveryEndpoint}/agents`);
145
+ return response.data.agents || [];
146
+ }
147
+ catch (error) {
148
+ console.error('Failed to discover A2A agents:', error);
149
+ return [];
150
+ }
151
+ }
152
+ async validateAgent(agent) {
153
+ try {
154
+ // Test connection by querying agent's skills
155
+ const response = await this.client.get(`${agent.endpoint}/skills`);
156
+ if (response.status !== 200) {
157
+ return false;
158
+ }
159
+ // Extract skills as capabilities
160
+ const skills = response.data.skills || [];
161
+ agent.capabilities = skills.map((skill) => ({
162
+ name: skill.name,
163
+ description: skill.description,
164
+ inputSchema: skill.input_schema,
165
+ outputSchema: skill.output_schema,
166
+ cost: skill.cost,
167
+ }));
168
+ // Store agent
169
+ this.registeredAgents.set(agent.id, agent);
170
+ return true;
171
+ }
172
+ catch (error) {
173
+ console.error(`Failed to validate A2A agent ${agent.id}:`, error);
174
+ return false;
175
+ }
176
+ }
177
+ /**
178
+ * A2A-specific: Register with discovery service
179
+ */
180
+ async registerWithDiscovery() {
181
+ if (!this.discoveryEndpoint)
182
+ return;
183
+ try {
184
+ await this.client.post(`${this.discoveryEndpoint}/register`, {
185
+ agent_id: 'bridge',
186
+ type: 'bridge',
187
+ capabilities: ['protocol-translation', 'routing'],
188
+ });
189
+ console.log('Registered with A2A discovery service');
190
+ }
191
+ catch (error) {
192
+ console.warn('Failed to register with A2A discovery:', error);
193
+ }
194
+ }
195
+ /**
196
+ * A2A-specific: Unregister from discovery service
197
+ */
198
+ async unregisterFromDiscovery() {
199
+ if (!this.discoveryEndpoint)
200
+ return;
201
+ try {
202
+ await this.client.post(`${this.discoveryEndpoint}/unregister`, {
203
+ agent_id: 'bridge',
204
+ });
205
+ console.log('Unregistered from A2A discovery service');
206
+ }
207
+ catch (error) {
208
+ console.warn('Failed to unregister from A2A discovery:', error);
209
+ }
210
+ }
211
+ /**
212
+ * Map universal message type to A2A type
213
+ */
214
+ mapMessageType(type) {
215
+ switch (type) {
216
+ case 'request':
217
+ return 'task';
218
+ case 'response':
219
+ return 'response';
220
+ case 'event':
221
+ return 'event';
222
+ default:
223
+ return 'query';
224
+ }
225
+ }
226
+ /**
227
+ * Map A2A message type to universal type
228
+ */
229
+ mapToUniversalType(type) {
230
+ switch (type) {
231
+ case 'task':
232
+ case 'query':
233
+ return 'request';
234
+ case 'response':
235
+ return 'response';
236
+ case 'event':
237
+ return 'event';
238
+ default:
239
+ return 'request';
240
+ }
241
+ }
242
+ /**
243
+ * Normalize priority string to valid MessageMetadata priority
244
+ */
245
+ normalizePriority(priority) {
246
+ if (!priority)
247
+ return undefined;
248
+ const normalized = priority.toLowerCase();
249
+ if (normalized === 'low' || normalized === 'normal' || normalized === 'high' || normalized === 'critical') {
250
+ return normalized;
251
+ }
252
+ return 'normal'; // Default fallback
253
+ }
254
+ }
255
+ exports.A2AAdapter = A2AAdapter;
256
+ //# sourceMappingURL=a2a.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a.js","sourceRoot":"","sources":["../../src/adapters/a2a.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Base Protocol Adapter
3
+ * All protocol adapters must extend this class
4
+ */
5
+ import { ProtocolType, UniversalMessage, MessageResponse, AgentInfo, ProtocolConfig } from '../core/types';
6
+ export declare abstract class BaseAdapter {
7
+ protected name: ProtocolType;
8
+ protected config: ProtocolConfig;
9
+ protected connected: boolean;
10
+ constructor(name: ProtocolType, config: ProtocolConfig);
11
+ /**
12
+ * Initialize the adapter
13
+ */
14
+ abstract initialize(): Promise<void>;
15
+ /**
16
+ * Connect to the protocol
17
+ */
18
+ abstract connect(): Promise<void>;
19
+ /**
20
+ * Disconnect from the protocol
21
+ */
22
+ abstract disconnect(): Promise<void>;
23
+ /**
24
+ * Send a message via this protocol
25
+ * @param message Universal message format
26
+ * @returns Response from the target agent
27
+ */
28
+ abstract send(message: UniversalMessage): Promise<MessageResponse>;
29
+ /**
30
+ * Receive a message from this protocol
31
+ * @param data Protocol-specific data
32
+ * @returns Universal message format
33
+ */
34
+ abstract receive(data: any): Promise<UniversalMessage>;
35
+ /**
36
+ * Translate from universal format to protocol-specific format
37
+ * @param message Universal message
38
+ * @returns Protocol-specific message
39
+ */
40
+ abstract toProtocolFormat(message: UniversalMessage): any;
41
+ /**
42
+ * Translate from protocol-specific format to universal format
43
+ * @param data Protocol-specific data
44
+ * @returns Universal message
45
+ */
46
+ abstract fromProtocolFormat(data: any): UniversalMessage;
47
+ /**
48
+ * Discover agents in this protocol
49
+ */
50
+ abstract discover(): Promise<AgentInfo[]>;
51
+ /**
52
+ * Validate agent registration
53
+ * @param agent Agent info to validate
54
+ */
55
+ abstract validateAgent(agent: AgentInfo): Promise<boolean>;
56
+ /**
57
+ * Get protocol name
58
+ */
59
+ getName(): ProtocolType;
60
+ /**
61
+ * Check if adapter is connected
62
+ */
63
+ isConnected(): boolean;
64
+ /**
65
+ * Check if adapter is enabled
66
+ */
67
+ isEnabled(): boolean;
68
+ /**
69
+ * Get protocol version
70
+ */
71
+ getVersion(): string | undefined;
72
+ /**
73
+ * Health check
74
+ */
75
+ healthCheck(): Promise<boolean>;
76
+ /**
77
+ * Validate message format
78
+ */
79
+ protected validateMessage(message: UniversalMessage): void;
80
+ /**
81
+ * Handle errors
82
+ */
83
+ protected handleError(error: any, context?: string): never;
84
+ }
85
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/adapters/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,cAAc,EAGf,MAAM,eAAe,CAAC;AAEvB,8BAAsB,WAAW;IAC/B,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC;IAC7B,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAS;gBAEzB,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc;IAKtD;;OAEG;IACH,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAElE;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAEtD;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG;IAEzD;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,GAAG,gBAAgB;IAExD;;OAEG;IACH,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAEzC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAE1D;;OAEG;IACH,OAAO,IAAI,YAAY;IAIvB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAe1D;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK;CAI3D"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ /**
3
+ * Base Protocol Adapter
4
+ * All protocol adapters must extend this class
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.BaseAdapter = void 0;
8
+ const types_1 = require("../core/types");
9
+ class BaseAdapter {
10
+ constructor(name, config) {
11
+ this.connected = false;
12
+ this.name = name;
13
+ this.config = config;
14
+ }
15
+ /**
16
+ * Get protocol name
17
+ */
18
+ getName() {
19
+ return this.name;
20
+ }
21
+ /**
22
+ * Check if adapter is connected
23
+ */
24
+ isConnected() {
25
+ return this.connected;
26
+ }
27
+ /**
28
+ * Check if adapter is enabled
29
+ */
30
+ isEnabled() {
31
+ return this.config.enabled;
32
+ }
33
+ /**
34
+ * Get protocol version
35
+ */
36
+ getVersion() {
37
+ return this.config.version;
38
+ }
39
+ /**
40
+ * Health check
41
+ */
42
+ async healthCheck() {
43
+ return this.connected && this.config.enabled;
44
+ }
45
+ /**
46
+ * Validate message format
47
+ */
48
+ validateMessage(message) {
49
+ if (!message.id) {
50
+ throw new types_1.ProtocolError(this.name, 'Message ID is required');
51
+ }
52
+ if (!message.from || !message.from.id) {
53
+ throw new types_1.ProtocolError(this.name, 'Message sender is required');
54
+ }
55
+ if (!message.to || !message.to.id) {
56
+ throw new types_1.ProtocolError(this.name, 'Message recipient is required');
57
+ }
58
+ if (!message.action) {
59
+ throw new types_1.ProtocolError(this.name, 'Message action is required');
60
+ }
61
+ }
62
+ /**
63
+ * Handle errors
64
+ */
65
+ handleError(error, context) {
66
+ const message = context ? `${context}: ${error.message}` : error.message;
67
+ throw new types_1.ProtocolError(this.name, message, error);
68
+ }
69
+ }
70
+ exports.BaseAdapter = BaseAdapter;
71
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/adapters/base.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,yCAQuB;AAEvB,MAAsB,WAAW;IAK/B,YAAY,IAAkB,EAAE,MAAsB;QAF5C,cAAS,GAAY,KAAK,CAAC;QAGnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAwDD;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC/C,CAAC;IAED;;OAEG;IACO,eAAe,CAAC,OAAyB;QACjD,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,qBAAa,CAAC,IAAI,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,qBAAa,CAAC,IAAI,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,qBAAa,CAAC,IAAI,CAAC,IAAI,EAAE,+BAA+B,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,qBAAa,CAAC,IAAI,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,KAAU,EAAE,OAAgB;QAChD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QACzE,MAAM,IAAI,qBAAa,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;CACF;AA5HD,kCA4HC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * MCP (Model Context Protocol) Adapter
3
+ * Specification: https://modelcontextprotocol.io/specification/2025-11-25
4
+ */
5
+ import { BaseAdapter } from './base';
6
+ import { UniversalMessage, MessageResponse, AgentInfo, ProtocolConfig } from '../core/types';
7
+ /**
8
+ * MCP Message Format
9
+ */
10
+ interface MCPRequest {
11
+ jsonrpc: '2.0';
12
+ id: string | number;
13
+ method: string;
14
+ params?: any;
15
+ }
16
+ export declare class MCPAdapter extends BaseAdapter {
17
+ private client;
18
+ private registeredAgents;
19
+ constructor(config: ProtocolConfig);
20
+ initialize(): Promise<void>;
21
+ connect(): Promise<void>;
22
+ disconnect(): Promise<void>;
23
+ send(message: UniversalMessage): Promise<MessageResponse>;
24
+ receive(data: any): Promise<UniversalMessage>;
25
+ toProtocolFormat(message: UniversalMessage): MCPRequest;
26
+ fromProtocolFormat(data: any): UniversalMessage;
27
+ discover(): Promise<AgentInfo[]>;
28
+ validateAgent(agent: AgentInfo): Promise<boolean>;
29
+ /**
30
+ * MCP-specific: Call a tool
31
+ */
32
+ callTool(agentId: string, toolName: string, args: any): Promise<any>;
33
+ /**
34
+ * MCP-specific: List resources
35
+ */
36
+ listResources(agentId: string): Promise<any[]>;
37
+ }
38
+ export {};
39
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/adapters/mcp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,cAAc,EAEf,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,UAAU,UAAU;IAClB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAmBD,qBAAa,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,gBAAgB,CAAqC;gBAEjD,MAAM,EAAE,cAAc;IAU5B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAWxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA+CzD,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAInD,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,UAAU;IASvD,kBAAkB,CAAC,IAAI,EAAE,GAAG,GAAG,gBAAgB;IAoBzC,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAahC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAgCvD;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAuB1E;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;CAmBrD"}