@cicctencent/agent-server 0.2.74 → 0.2.76

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 (117) hide show
  1. package/dist/cjs/agent/agent-server.d.ts.map +1 -1
  2. package/dist/cjs/agent/agent-server.js +149 -6
  3. package/dist/cjs/agent/agent-server.js.map +1 -1
  4. package/dist/cjs/connectors/calendar-adapter.d.ts +4 -11
  5. package/dist/cjs/connectors/calendar-adapter.d.ts.map +1 -1
  6. package/dist/cjs/connectors/calendar-adapter.js +84 -115
  7. package/dist/cjs/connectors/calendar-adapter.js.map +1 -1
  8. package/dist/cjs/connectors/db-adapter.d.ts +5 -22
  9. package/dist/cjs/connectors/db-adapter.d.ts.map +1 -1
  10. package/dist/cjs/connectors/db-adapter.js +316 -119
  11. package/dist/cjs/connectors/db-adapter.js.map +1 -1
  12. package/dist/cjs/connectors/email-adapter.d.ts +12 -14
  13. package/dist/cjs/connectors/email-adapter.d.ts.map +1 -1
  14. package/dist/cjs/connectors/email-adapter.js +286 -127
  15. package/dist/cjs/connectors/email-adapter.js.map +1 -1
  16. package/dist/cjs/connectors/fs-adapter.d.ts +3 -9
  17. package/dist/cjs/connectors/fs-adapter.d.ts.map +1 -1
  18. package/dist/cjs/connectors/fs-adapter.js +77 -87
  19. package/dist/cjs/connectors/fs-adapter.js.map +1 -1
  20. package/dist/cjs/connectors/http-adapter.d.ts +14 -18
  21. package/dist/cjs/connectors/http-adapter.d.ts.map +1 -1
  22. package/dist/cjs/connectors/http-adapter.js +260 -135
  23. package/dist/cjs/connectors/http-adapter.js.map +1 -1
  24. package/dist/cjs/connectors/index.d.ts +4 -2
  25. package/dist/cjs/connectors/index.d.ts.map +1 -1
  26. package/dist/cjs/connectors/index.js +137 -1
  27. package/dist/cjs/connectors/index.js.map +1 -1
  28. package/dist/cjs/connectors/mcp-adapter.d.ts +9 -17
  29. package/dist/cjs/connectors/mcp-adapter.d.ts.map +1 -1
  30. package/dist/cjs/connectors/mcp-adapter.js +186 -136
  31. package/dist/cjs/connectors/mcp-adapter.js.map +1 -1
  32. package/dist/cjs/connectors/mq-adapter.d.ts +10 -15
  33. package/dist/cjs/connectors/mq-adapter.d.ts.map +1 -1
  34. package/dist/cjs/connectors/mq-adapter.js +264 -142
  35. package/dist/cjs/connectors/mq-adapter.js.map +1 -1
  36. package/dist/cjs/index.d.ts +1 -1
  37. package/dist/cjs/index.d.ts.map +1 -1
  38. package/dist/cjs/index.js +4 -3
  39. package/dist/cjs/index.js.map +1 -1
  40. package/dist/cjs/mcp/api-bridge-client.d.ts.map +1 -1
  41. package/dist/cjs/mcp/api-bridge-client.js +15 -1
  42. package/dist/cjs/mcp/api-bridge-client.js.map +1 -1
  43. package/dist/cjs/mcp/api-bridge-types.d.ts +15 -0
  44. package/dist/cjs/mcp/api-bridge-types.d.ts.map +1 -1
  45. package/dist/cjs/mcp/body-template.d.ts +2 -0
  46. package/dist/cjs/mcp/body-template.d.ts.map +1 -1
  47. package/dist/cjs/mcp/body-template.js +1 -0
  48. package/dist/cjs/mcp/body-template.js.map +1 -1
  49. package/dist/cjs/mcp/template-builder.d.ts.map +1 -1
  50. package/dist/cjs/mcp/template-builder.js +5 -3
  51. package/dist/cjs/mcp/template-builder.js.map +1 -1
  52. package/dist/cjs/prompt/prompt-builder.d.ts.map +1 -1
  53. package/dist/cjs/prompt/prompt-builder.js +6 -16
  54. package/dist/cjs/prompt/prompt-builder.js.map +1 -1
  55. package/dist/cjs/spi/types.d.ts +2 -0
  56. package/dist/cjs/spi/types.d.ts.map +1 -1
  57. package/dist/cjs/types.d.ts +180 -10
  58. package/dist/cjs/types.d.ts.map +1 -1
  59. package/dist/esm/agent/agent-server.d.ts.map +1 -1
  60. package/dist/esm/agent/agent-server.js +149 -6
  61. package/dist/esm/agent/agent-server.js.map +1 -1
  62. package/dist/esm/connectors/calendar-adapter.d.ts +4 -11
  63. package/dist/esm/connectors/calendar-adapter.d.ts.map +1 -1
  64. package/dist/esm/connectors/calendar-adapter.js +84 -115
  65. package/dist/esm/connectors/calendar-adapter.js.map +1 -1
  66. package/dist/esm/connectors/db-adapter.d.ts +5 -22
  67. package/dist/esm/connectors/db-adapter.d.ts.map +1 -1
  68. package/dist/esm/connectors/db-adapter.js +315 -118
  69. package/dist/esm/connectors/db-adapter.js.map +1 -1
  70. package/dist/esm/connectors/email-adapter.d.ts +12 -14
  71. package/dist/esm/connectors/email-adapter.d.ts.map +1 -1
  72. package/dist/esm/connectors/email-adapter.js +253 -127
  73. package/dist/esm/connectors/email-adapter.js.map +1 -1
  74. package/dist/esm/connectors/fs-adapter.d.ts +3 -9
  75. package/dist/esm/connectors/fs-adapter.d.ts.map +1 -1
  76. package/dist/esm/connectors/fs-adapter.js +77 -87
  77. package/dist/esm/connectors/fs-adapter.js.map +1 -1
  78. package/dist/esm/connectors/http-adapter.d.ts +14 -18
  79. package/dist/esm/connectors/http-adapter.d.ts.map +1 -1
  80. package/dist/esm/connectors/http-adapter.js +260 -135
  81. package/dist/esm/connectors/http-adapter.js.map +1 -1
  82. package/dist/esm/connectors/index.d.ts +4 -2
  83. package/dist/esm/connectors/index.d.ts.map +1 -1
  84. package/dist/esm/connectors/index.js +136 -1
  85. package/dist/esm/connectors/index.js.map +1 -1
  86. package/dist/esm/connectors/mcp-adapter.d.ts +9 -17
  87. package/dist/esm/connectors/mcp-adapter.d.ts.map +1 -1
  88. package/dist/esm/connectors/mcp-adapter.js +153 -136
  89. package/dist/esm/connectors/mcp-adapter.js.map +1 -1
  90. package/dist/esm/connectors/mq-adapter.d.ts +10 -15
  91. package/dist/esm/connectors/mq-adapter.d.ts.map +1 -1
  92. package/dist/esm/connectors/mq-adapter.js +230 -141
  93. package/dist/esm/connectors/mq-adapter.js.map +1 -1
  94. package/dist/esm/index.d.ts +1 -1
  95. package/dist/esm/index.d.ts.map +1 -1
  96. package/dist/esm/index.js +1 -1
  97. package/dist/esm/index.js.map +1 -1
  98. package/dist/esm/mcp/api-bridge-client.d.ts.map +1 -1
  99. package/dist/esm/mcp/api-bridge-client.js +15 -1
  100. package/dist/esm/mcp/api-bridge-client.js.map +1 -1
  101. package/dist/esm/mcp/api-bridge-types.d.ts +15 -0
  102. package/dist/esm/mcp/api-bridge-types.d.ts.map +1 -1
  103. package/dist/esm/mcp/body-template.d.ts +2 -0
  104. package/dist/esm/mcp/body-template.d.ts.map +1 -1
  105. package/dist/esm/mcp/body-template.js +1 -1
  106. package/dist/esm/mcp/body-template.js.map +1 -1
  107. package/dist/esm/mcp/template-builder.d.ts.map +1 -1
  108. package/dist/esm/mcp/template-builder.js +5 -3
  109. package/dist/esm/mcp/template-builder.js.map +1 -1
  110. package/dist/esm/prompt/prompt-builder.d.ts.map +1 -1
  111. package/dist/esm/prompt/prompt-builder.js +6 -16
  112. package/dist/esm/prompt/prompt-builder.js.map +1 -1
  113. package/dist/esm/spi/types.d.ts +2 -0
  114. package/dist/esm/spi/types.d.ts.map +1 -1
  115. package/dist/esm/types.d.ts +180 -10
  116. package/dist/esm/types.d.ts.map +1 -1
  117. package/package.json +7 -3
@@ -1,176 +1,301 @@
1
+ function readService(svc) {
2
+ return {
3
+ name: svc.name,
4
+ apiRoot: svc.apiRoot || svc.baseUrl,
5
+ httpMode: svc.httpMode || (svc.openapiUrl ? 'openapi' : 'manual'),
6
+ auth: svc.auth || (svc.authToken ? { type: (svc.authType || 'bearer'), value: svc.authToken } : undefined),
7
+ endpoints: svc.endpoints || [],
8
+ openapiUrl: svc.openapiUrl,
9
+ };
10
+ }
11
+ /**
12
+ * 解析 HTTP 服务列表。
13
+ * 优先使用 `config.services`(work-client 多服务形态);
14
+ * 缺失时回退到扁平单服务配置(work-space 向导:顶层 apiMode/openapiSpec/authType/authToken)。
15
+ */
16
+ function resolveHttpServices(config) {
17
+ if (config.services && config.services.length > 0)
18
+ return config.services;
19
+ return [{
20
+ name: config.name || 'default',
21
+ baseUrl: config.baseUrl,
22
+ apiRoot: config.apiRoot,
23
+ httpMode: config.apiMode,
24
+ openapiUrl: config.openapiSpec,
25
+ authToken: config.authToken,
26
+ authType: config.authType,
27
+ headers: config.globalHeaders,
28
+ endpoints: config.endpoints || [],
29
+ }];
30
+ }
1
31
  export class HTTPAPIAdapter {
2
32
  type = 'http-api';
33
+ label = 'HTTP 服务';
3
34
  async testConnection(config) {
4
- const services = config.services || [];
5
- if (services.length === 0) {
6
- return {
7
- success: false,
8
- message: '未配置任何服务',
9
- };
10
- }
11
- const results = [];
12
- for (const svc of services) {
35
+ const services = resolveHttpServices(config);
36
+ if (services.length === 0)
37
+ return { success: false, message: '未配置任何服务' };
38
+ const start = Date.now();
39
+ const errors = [];
40
+ let tested = 0;
41
+ for (const svcRaw of services) {
42
+ const svc = readService(svcRaw);
43
+ if (!svc.apiRoot) {
44
+ errors.push(`${svc.name}: 缺少 API 根地址`);
45
+ continue;
46
+ }
13
47
  try {
14
- const resp = await fetch(svc.baseUrl, {
48
+ const response = await fetch(svc.apiRoot.replace(/\/$/, ''), {
15
49
  method: 'GET',
16
- headers: this.buildHeaders(config, svc),
50
+ headers: this.buildAuthHeaders(svc),
17
51
  signal: AbortSignal.timeout(10000),
52
+ redirect: 'follow',
18
53
  });
19
- if (resp.ok) {
20
- results.push(`${svc.name}: OK (${resp.status})`);
21
- }
22
- else {
23
- results.push(`${svc.name}: HTTP ${resp.status}`);
24
- }
54
+ if (response.status < 400 || response.status === 404)
55
+ tested++;
56
+ else
57
+ errors.push(`${svc.name}: HTTP ${response.status}`);
25
58
  }
26
- catch (err) {
27
- return {
28
- success: false,
29
- message: `服务 ${svc.name} 连接失败`,
30
- error: err.message,
31
- };
59
+ catch (e) {
60
+ if (e?.cause?.code === 'ENOTFOUND' || e?.cause?.code === 'ECONNREFUSED')
61
+ errors.push(`${svc.name}: ${e.cause.code}`);
62
+ else
63
+ tested++;
32
64
  }
33
65
  }
66
+ const latency = Date.now() - start;
67
+ if (errors.length > 0 && tested === 0)
68
+ return { success: false, message: errors.join('; '), latency };
69
+ const info = { services: services.length, reachable: tested };
70
+ if (errors.length > 0)
71
+ info.warnings = errors.join('; ');
72
+ return { success: true, message: `连接成功,${tested} 个服务可达`, latency, info };
73
+ }
74
+ async discoverTools(config) {
75
+ const services = resolveHttpServices(config);
76
+ const allTools = [];
77
+ for (const svcRaw of services) {
78
+ const svc = readService(svcRaw);
79
+ if (svc.httpMode === 'openapi' && svc.openapiUrl) {
80
+ allTools.push(...(await this.discoverFromOpenAPI(svc)));
81
+ }
82
+ else if (svc.endpoints.length) {
83
+ allTools.push(...this.discoverFromEndpoints(svc));
84
+ }
85
+ }
86
+ return allTools;
87
+ }
88
+ generateManifest(config, _tools) {
89
+ const services = resolveHttpServices(config);
34
90
  return {
35
- success: true,
36
- message: `连接成功,${results.length} 个服务可达`,
37
- resources: results,
91
+ name: config.name,
92
+ description: config.description || `HTTP API 连接器 — ${services.length} 服务`,
93
+ category: 'data',
94
+ version: '1.0.0',
95
+ icon: 'globe2',
96
+ enabled: true,
97
+ requestBuilderId: 'template',
98
+ dataSourceType: 'http-api',
38
99
  };
39
100
  }
40
- async discoverTools(config) {
41
- const endpoints = await this.collectEndpoints(config);
101
+ generateMCPServerConfigs(config, tools) {
102
+ const services = resolveHttpServices(config);
103
+ const all = tools && tools.length > 0 ? tools : undefined;
104
+ const result = [];
105
+ for (const svcRaw of services) {
106
+ const svc = readService(svcRaw);
107
+ const svcName = svc.name || 'default';
108
+ const safeName = svcName.replace(/[^a-zA-Z0-9_-]/g, '_');
109
+ const svcTools = (all || []).filter(t => t.executorMeta?.serviceName === svcName);
110
+ const toolDefs = svcTools.map(t => ({
111
+ name: t.name,
112
+ description: t.description,
113
+ inputSchema: t.inputSchema,
114
+ executorType: t.executorType,
115
+ executorMeta: t.executorMeta,
116
+ }));
117
+ const apiMapping = {};
118
+ if (svc.endpoints.length) {
119
+ for (const ep of svc.endpoints) {
120
+ apiMapping[ep.name] = {
121
+ entry: ep.entry || ep.path || '',
122
+ method: ep.method,
123
+ ...(ep.method !== 'GET' ? { body: this.buildBodyTemplate(ep) } : {}),
124
+ };
125
+ }
126
+ }
127
+ else if (svc.httpMode === 'openapi') {
128
+ for (const t of svcTools) {
129
+ const meta = t.executorMeta;
130
+ if (meta?.method && meta?.entry) {
131
+ apiMapping[t.name] = {
132
+ entry: meta.entry,
133
+ method: meta.method,
134
+ ...(meta.method !== 'GET' ? { body: meta.bodyTemplate } : {}),
135
+ };
136
+ }
137
+ }
138
+ }
139
+ result.push({
140
+ name: safeName,
141
+ transport: 'api-bridge',
142
+ apiRoot: svc.apiRoot,
143
+ urlTemplate: '{apiRoot}/{entry}',
144
+ ...(Object.keys(apiMapping).length > 0 ? { apiMapping } : {}),
145
+ ...(svc.auth ? { auth: svc.auth } : {}),
146
+ requestBuilderId: 'template',
147
+ tools: svcTools,
148
+ });
149
+ }
150
+ return result;
151
+ }
152
+ buildAuthHeaders(svc) {
153
+ const headers = { 'User-Agent': 'WorkAI/1.0' };
154
+ const auth = svc.auth;
155
+ if (!auth)
156
+ return headers;
157
+ switch (auth.type) {
158
+ case 'bearer':
159
+ headers['Authorization'] = `Bearer ${auth.value}`;
160
+ break;
161
+ case 'basic':
162
+ headers['Authorization'] = `Basic ${Buffer.from(auth.value).toString('base64')}`;
163
+ break;
164
+ case 'apiKey':
165
+ headers[auth.name || 'X-API-Key'] = auth.value;
166
+ break;
167
+ case 'custom':
168
+ headers[auth.name || 'X-Custom-Auth'] = auth.value;
169
+ break;
170
+ }
171
+ return headers;
172
+ }
173
+ discoverFromEndpoints(svc) {
42
174
  const tools = [];
43
- for (const ep of endpoints) {
44
- const toolName = this.sanitizeToolName(ep.name);
175
+ for (const ep of svc.endpoints) {
45
176
  const properties = {};
46
- if (ep.querySchema?.properties) {
47
- for (const [key, val] of Object.entries(ep.querySchema.properties)) {
48
- properties[key] = {
49
- ...val,
50
- description: val.description || `Query param: ${key}`,
51
- };
177
+ // 兼容:parameters(work-client)或 bodySchema/querySchema(规范)
178
+ if (ep.parameters) {
179
+ for (const [k, v] of Object.entries(ep.parameters)) {
180
+ properties[k] = { type: v.type, description: v.description, ...(v.enum ? { enum: v.enum } : {}) };
52
181
  }
53
182
  }
54
- if (ep.bodySchema?.properties) {
55
- for (const [key, val] of Object.entries(ep.bodySchema.properties)) {
56
- properties[key] = {
57
- ...val,
58
- description: val.description || `Body param: ${key}`,
59
- };
183
+ else {
184
+ for (const [k, v] of Object.entries(ep.querySchema?.properties || {})) {
185
+ properties[k] = { type: v.type || 'string', description: v.description || k };
186
+ }
187
+ for (const [k, v] of Object.entries(ep.bodySchema?.properties || {})) {
188
+ properties[k] = { type: v.type || 'string', description: v.description || k };
60
189
  }
61
190
  }
191
+ const required = ep.parameters
192
+ ? Object.entries(ep.parameters).filter(([, v]) => v.required).map(([k]) => k)
193
+ : [...(ep.querySchema?.required || []), ...(ep.bodySchema?.required || [])];
62
194
  tools.push({
63
- name: toolName,
64
- description: ep.description || `${ep.method} ${ep.path}`,
195
+ name: ep.name,
196
+ description: ep.description || `${ep.method} ${ep.entry || ep.path}`,
65
197
  inputSchema: {
66
198
  type: 'object',
67
199
  properties,
68
- required: [
69
- ...(ep.querySchema?.required || []),
70
- ...(ep.bodySchema?.required || []),
71
- ],
200
+ ...(required.length ? { required: [...new Set(required)] } : {}),
201
+ },
202
+ executorType: 'http-api',
203
+ executorMeta: {
204
+ serviceName: svc.name,
205
+ method: ep.method,
206
+ entry: ep.entry || ep.path,
207
+ apiRoot: svc.apiRoot,
72
208
  },
73
209
  });
74
210
  }
75
211
  return tools;
76
212
  }
77
- async generateManifest(config) {
78
- const tools = await this.discoverTools(config);
79
- return {
80
- tools,
81
- metadata: {
82
- apiMode: config.apiMode,
83
- serviceCount: config.services?.length || 0,
84
- endpointCount: tools.length,
85
- },
86
- };
87
- }
88
- async generateMCPServerConfigs(config) {
89
- const tools = await this.discoverTools(config);
90
- const services = config.services || [];
91
- return services.map(svc => ({
92
- name: `http-${svc.name}`,
93
- transport: 'streamable-http',
94
- url: svc.baseUrl,
95
- tools: tools.filter(t => svc.endpoints?.some(ep => this.sanitizeToolName(ep.name) === t.name)),
96
- }));
97
- }
98
- /** 收集所有端点 */
99
- async collectEndpoints(config) {
100
- if (config.apiMode === 'openapi' && config.openapiSpec) {
101
- return this.parseOpenAPI(config);
102
- }
103
- const endpoints = [];
104
- for (const svc of config.services || []) {
105
- for (const ep of svc.endpoints || []) {
106
- endpoints.push({ ...ep, service: svc.name });
107
- }
108
- }
109
- return endpoints;
110
- }
111
- /** 解析 OpenAPI spec */
112
- async parseOpenAPI(config) {
113
- let spec;
114
- if (config.openapiSpec.startsWith('http://') ||
115
- config.openapiSpec.startsWith('https://')) {
116
- const resp = await fetch(config.openapiSpec);
117
- spec = await resp.json();
118
- }
119
- else {
120
- spec = JSON.parse(config.openapiSpec);
121
- }
122
- const endpoints = [];
123
- const basePath = spec.basePath || '';
124
- const title = spec.info?.title || 'openapi-service';
125
- for (const [routePath, methods] of Object.entries(spec.paths || {})) {
126
- for (const [method, detail] of Object.entries(methods)) {
127
- const upperMethod = method.toUpperCase();
128
- if (!['GET', 'POST', 'PUT', 'DELETE', 'PATCH'].includes(upperMethod)) {
213
+ async discoverFromOpenAPI(svc) {
214
+ if (!svc.openapiUrl)
215
+ return [];
216
+ const response = await fetch(svc.openapiUrl, { signal: AbortSignal.timeout(15000) });
217
+ if (!response.ok)
218
+ throw new Error(`OpenAPI 文档获取失败: ${response.status} ${response.statusText}`);
219
+ const spec = await response.json();
220
+ const tools = [];
221
+ const paths = spec.paths || {};
222
+ const basePath = this.getBasePath(spec);
223
+ for (const [pathStr, pathItem] of Object.entries(paths)) {
224
+ for (const [method, operation] of Object.entries(pathItem)) {
225
+ if (!['get', 'post', 'put', 'delete', 'patch'].includes(method.toLowerCase()))
129
226
  continue;
227
+ const operationId = operation.operationId || this.generateOperationId(pathStr, method);
228
+ const toolName = this.sanitizeToolName(operationId);
229
+ const entry = (basePath + pathStr).replace(/^\//, '');
230
+ const properties = {};
231
+ const requiredParams = [];
232
+ const allParams = [...(pathItem.parameters || []), ...(operation.parameters || [])];
233
+ for (const param of allParams) {
234
+ const pName = param.name;
235
+ const pSchema = param.schema || {};
236
+ properties[pName] = { type: pSchema.type || 'string', description: param.description || `${param.in} 参数: ${pName}`, ...(pSchema.enum ? { enum: pSchema.enum } : {}) };
237
+ if (param.required)
238
+ requiredParams.push(pName);
130
239
  }
131
- const d = detail;
132
- endpoints.push({
133
- name: d.operationId ||
134
- `${upperMethod.toLowerCase()}_${routePath.replace(/[^a-zA-Z0-9]/g, '_')}`,
135
- method: upperMethod,
136
- path: basePath + routePath,
137
- description: d.summary || d.description || '',
138
- service: title,
240
+ let bodyTemplate;
241
+ if (method.toLowerCase() !== 'get' && operation.requestBody?.content) {
242
+ const jsonContent = operation.requestBody.content['application/json'];
243
+ if (jsonContent?.schema?.properties) {
244
+ for (const pName of Object.keys(jsonContent.schema.properties))
245
+ properties[pName] = { type: jsonContent.schema.properties[pName].type || 'string', description: jsonContent.schema.properties[pName].description || pName };
246
+ if (jsonContent.schema.required)
247
+ requiredParams.push(...jsonContent.schema.required);
248
+ bodyTemplate = {};
249
+ for (const pName of Object.keys(jsonContent.schema.properties))
250
+ bodyTemplate[pName] = `\${${pName}}`;
251
+ }
252
+ }
253
+ tools.push({
254
+ name: toolName,
255
+ description: (operation.summary || operation.description || `${method.toUpperCase()} ${pathStr}`).slice(0, 200),
256
+ inputSchema: {
257
+ type: 'object',
258
+ properties,
259
+ ...(requiredParams.length ? { required: [...new Set(requiredParams)] } : {}),
260
+ },
261
+ executorType: 'http-api',
262
+ executorMeta: {
263
+ serviceName: svc.name,
264
+ method: method.toUpperCase(),
265
+ entry,
266
+ apiRoot: svc.apiRoot,
267
+ ...(bodyTemplate ? { bodyTemplate } : {}),
268
+ },
139
269
  });
140
270
  }
141
271
  }
142
- return endpoints;
272
+ return tools;
143
273
  }
144
- /** 构建请求头 */
145
- buildHeaders(config, svc) {
146
- const headers = {
147
- 'Content-Type': 'application/json',
148
- ...(config.globalHeaders || {}),
149
- ...(svc?.headers || {}),
150
- };
151
- const token = svc?.authToken || config.authToken;
152
- if (token) {
153
- switch (config.authType) {
154
- case 'bearer':
155
- headers['Authorization'] = `Bearer ${token}`;
156
- break;
157
- case 'basic':
158
- headers['Authorization'] = `Basic ${Buffer.from(token).toString('base64')}`;
159
- break;
160
- case 'apikey':
161
- headers['X-API-Key'] = token;
162
- break;
274
+ getBasePath(spec) {
275
+ if (spec.servers?.length) {
276
+ try {
277
+ const url = new URL(spec.servers[0].url);
278
+ return url.pathname.replace(/\/$/, '') || '';
279
+ }
280
+ catch {
281
+ return spec.servers[0].url?.replace(/\/$/, '') || '';
163
282
  }
164
283
  }
165
- return headers;
284
+ return spec.basePath || '';
285
+ }
286
+ generateOperationId(pathStr, method) {
287
+ const parts = pathStr.split('/').filter(Boolean).map((p) => p.startsWith('{') ? `by_${p.slice(1, -1)}` : p.replace(/[^a-zA-Z0-9]/g, '_'));
288
+ return `${method.toLowerCase()}_${parts.join('_')}`;
166
289
  }
167
- /** 将端点名转为合法工具名 */
168
290
  sanitizeToolName(name) {
169
- return name
170
- .replace(/[^a-zA-Z0-9_]/g, '_')
171
- .replace(/_+/g, '_')
172
- .replace(/^_|_$/g, '')
173
- .toLowerCase();
291
+ return name.replace(/[^a-zA-Z0-9_]/g, '_').replace(/_+/g, '_').replace(/^_|_$/g, '');
292
+ }
293
+ buildBodyTemplate(ep) {
294
+ const params = ep.parameters || {};
295
+ const body = {};
296
+ for (const pName of Object.keys(params))
297
+ body[pName] = `\${${pName}}`;
298
+ return body;
174
299
  }
175
300
  }
176
301
  //# sourceMappingURL=http-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-adapter.js","sourceRoot":"","sources":["../../../src/connectors/http-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-adapter.js","sourceRoot":"","sources":["../../../src/connectors/http-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { DataSourceAdapter, DataSourceType } from '../types.js';
1
+ import type { DataSourceAdapter, DataSourceType, DataSourceTypeInfo } from '../types.js';
2
2
  /** 注册数据源适配器 */
3
3
  export declare function registerAdapter(adapter: DataSourceAdapter): void;
4
4
  /** 获取指定类型的适配器 */
@@ -9,5 +9,7 @@ export declare function listAdapterTypes(): DataSourceType[];
9
9
  export declare function listAdapters(): DataSourceAdapter[];
10
10
  /** 重置注册表(测试用) */
11
11
  export declare function resetAdapters(): void;
12
- export type { DataSourceType, DataSourceConfig, DataSourceAdapter, DiscoveredTool, ConnectionTestResult, MCPServerConfig, ServiceConfig, EndpointConfig, } from '../types.js';
12
+ export type { DataSourceType, DataSourceConfig, DataSourceAdapter, DiscoveredTool, ConnectionTestResult, MCPServerConfig, ServiceConfig, EndpointConfig, DataSourceTypeInfo, } from '../types.js';
13
+ /** 列出所有适配器的显示信息(供前端向导使用) */
14
+ export declare function listDataSourceTypes(): DataSourceTypeInfo[];
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connectors/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMrE,eAAe;AACf,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAEhE;AAED,iBAAiB;AACjB,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,iBAAiB,CAMlE;AAED,oBAAoB;AACpB,wBAAgB,gBAAgB,IAAI,cAAc,EAAE,CAEnD;AAED,kBAAkB;AAClB,wBAAgB,YAAY,IAAI,iBAAiB,EAAE,CAElD;AAED,iBAAiB;AACjB,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAGD,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connectors/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAMzF,eAAe;AACf,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAEhE;AAED,iBAAiB;AACjB,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,iBAAiB,CAMlE;AAED,oBAAoB;AACpB,wBAAgB,gBAAgB,IAAI,cAAc,EAAE,CAEnD;AAED,kBAAkB;AAClB,wBAAgB,YAAY,IAAI,iBAAiB,EAAE,CAElD;AAED,iBAAiB;AACjB,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAGD,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,cAAc,EACd,kBAAkB,GACnB,MAAM,aAAa,CAAC;AA6BrB,4BAA4B;AAC5B,wBAAgB,mBAAmB,IAAI,kBAAkB,EAAE,CAgI1D"}