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.
- package/LICENSE +21 -0
- package/README.md +567 -0
- package/config/platforms.example.json +93 -0
- package/config/platforms.json +93 -0
- package/dist/adapters/a2a.d.ts +67 -0
- package/dist/adapters/a2a.d.ts.map +1 -0
- package/dist/adapters/a2a.js +256 -0
- package/dist/adapters/a2a.js.map +1 -0
- package/dist/adapters/base.d.ts +85 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +71 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/mcp.d.ts +39 -0
- package/dist/adapters/mcp.d.ts.map +1 -0
- package/dist/adapters/mcp.js +197 -0
- package/dist/adapters/mcp.js.map +1 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +259 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/server.d.ts +6 -0
- package/dist/cli/server.d.ts.map +1 -0
- package/dist/cli/server.js +161 -0
- package/dist/cli/server.js.map +1 -0
- package/dist/core/bridge.d.ts +99 -0
- package/dist/core/bridge.d.ts.map +1 -0
- package/dist/core/bridge.js +387 -0
- package/dist/core/bridge.js.map +1 -0
- package/dist/core/types.d.ts +257 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +48 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/examples/basic-usage.ts +142 -0
- package/examples/middleware-example.ts +131 -0
- package/package.json +88 -0
|
@@ -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"}
|