@sowonai/crewx-cli 0.4.0-dev.6 → 0.4.0-dev.8

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 (40) hide show
  1. package/README.md +38 -6
  2. package/dist/cli/chat.handler.js +9 -5
  3. package/dist/cli/chat.handler.js.map +1 -1
  4. package/dist/cli/mcp.handler.js.map +1 -1
  5. package/dist/providers/base-ai.provider.d.ts +1 -50
  6. package/dist/providers/base-ai.provider.js +2 -620
  7. package/dist/providers/base-ai.provider.js.map +1 -1
  8. package/dist/providers/claude.provider.d.ts +2 -22
  9. package/dist/providers/claude.provider.js +8 -338
  10. package/dist/providers/claude.provider.js.map +1 -1
  11. package/dist/providers/codex.provider.d.ts +2 -15
  12. package/dist/providers/codex.provider.js +8 -77
  13. package/dist/providers/codex.provider.js.map +1 -1
  14. package/dist/providers/copilot.provider.d.ts +2 -22
  15. package/dist/providers/copilot.provider.js +8 -242
  16. package/dist/providers/copilot.provider.js.map +1 -1
  17. package/dist/providers/gemini.provider.d.ts +2 -19
  18. package/dist/providers/gemini.provider.js +8 -123
  19. package/dist/providers/gemini.provider.js.map +1 -1
  20. package/dist/providers/logger.adapter.d.ts +4 -0
  21. package/dist/providers/logger.adapter.js +56 -0
  22. package/dist/providers/logger.adapter.js.map +1 -0
  23. package/dist/services/parallel-processing.service.d.ts +15 -17
  24. package/dist/services/parallel-processing.service.js +227 -196
  25. package/dist/services/parallel-processing.service.js.map +1 -1
  26. package/dist/services/remote-agent.service.d.ts +3 -6
  27. package/dist/services/remote-agent.service.js +41 -95
  28. package/dist/services/remote-agent.service.js.map +1 -1
  29. package/dist/services/tool-call.service.d.ts +2 -36
  30. package/dist/services/tool-call.service.js.map +1 -1
  31. package/dist/slack/formatters/message.formatter.d.ts +5 -2
  32. package/dist/slack/formatters/message.formatter.js +55 -2
  33. package/dist/slack/formatters/message.formatter.js.map +1 -1
  34. package/dist/slack/slack-bot.js +1 -2
  35. package/dist/slack/slack-bot.js.map +1 -1
  36. package/dist/utils/stdin-utils.js.map +1 -1
  37. package/dist/utils/terminal-message-formatter.d.ts +23 -0
  38. package/dist/utils/terminal-message-formatter.js +136 -0
  39. package/dist/utils/terminal-message-formatter.js.map +1 -0
  40. package/package.json +2 -2
@@ -12,10 +12,10 @@ var ParallelProcessingService_1;
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.ParallelProcessingService = void 0;
14
14
  const common_1 = require("@nestjs/common");
15
+ const crewx_sdk_1 = require("@sowonai/crewx-sdk");
15
16
  const ai_service_1 = require("../ai.service");
16
17
  const task_management_service_1 = require("./task-management.service");
17
18
  const config_service_1 = require("./config.service");
18
- const crewx_sdk_1 = require("@sowonai/crewx-sdk");
19
19
  let ParallelProcessingService = ParallelProcessingService_1 = class ParallelProcessingService {
20
20
  constructor(aiService, taskManagementService, configService) {
21
21
  this.aiService = aiService;
@@ -23,218 +23,57 @@ let ParallelProcessingService = ParallelProcessingService_1 = class ParallelProc
23
23
  this.configService = configService;
24
24
  this.logger = new common_1.Logger(ParallelProcessingService_1.name);
25
25
  this.timeoutConfig = (0, crewx_sdk_1.getTimeoutConfig)();
26
- }
27
- getProviderForAgent(agentId) {
28
- if (agentId === 'claude' || agentId === 'gemini' || agentId === 'copilot' || agentId === 'codex') {
29
- return agentId;
30
- }
31
- const agentConfig = this.configService.getAgentConfig(agentId);
32
- if (agentConfig && agentConfig.inline?.provider) {
33
- return agentConfig.inline.provider;
34
- }
35
- this.logger.warn(`No provider found for agent ${agentId}, defaulting to claude`);
36
- return 'claude';
37
- }
38
- getOptionsForAgent(agentId, mode) {
39
- const agentConfig = this.configService.getAgentConfig(agentId);
40
- if (agentConfig && agentConfig.options) {
41
- if (typeof agentConfig.options === 'object' && agentConfig.options[mode]) {
42
- return agentConfig.options[mode] || [];
43
- }
44
- }
45
- return [];
26
+ this.parallelRunner = (0, crewx_sdk_1.createDefaultParallelRunner)();
46
27
  }
47
28
  async executeParallel(requests, config = {}) {
48
- const startTime = performance.now();
49
- const { maxConcurrency = 5, timeout = this.timeoutConfig.parallel, failFast = false } = config;
50
- this.logger.log(`Starting parallel execution of ${requests.length} requests`);
51
- this.logger.log(`Configuration: maxConcurrency=${maxConcurrency}, timeout=${timeout}ms, failFast=${failFast}`);
52
- const chunks = this.chunkArray(requests, maxConcurrency);
53
- const allResults = [];
54
- let shouldStop = false;
55
- for (const chunk of chunks) {
56
- if (shouldStop)
57
- break;
58
- this.logger.log(`Executing chunk of ${chunk.length} requests`);
59
- const chunkPromises = chunk.map(async (request) => {
60
- return this.executeWithTimeout(request, timeout);
61
- });
62
- try {
63
- const chunkResults = await Promise.allSettled(chunkPromises);
64
- for (const [index, result] of chunkResults.entries()) {
65
- if (result.status === 'fulfilled') {
66
- allResults.push(result.value);
67
- if (failFast && !result.value.success) {
68
- this.logger.warn(`Fail-fast triggered by failed execution: ${chunk[index]?.agentId}`);
69
- shouldStop = true;
70
- break;
71
- }
72
- }
73
- else {
74
- const failedRequest = chunk[index];
75
- if (failedRequest) {
76
- allResults.push({
77
- agentId: failedRequest.agentId,
78
- success: false,
79
- error: result.reason?.message || 'Promise rejected',
80
- duration: 0
81
- });
82
- if (failFast) {
83
- this.logger.warn(`Fail-fast triggered by promise rejection: ${failedRequest.agentId}`);
84
- shouldStop = true;
85
- break;
86
- }
87
- }
88
- }
89
- }
90
- }
91
- catch (error) {
92
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
93
- this.logger.error(`Chunk execution failed: ${errorMessage}`);
94
- chunk.forEach(request => {
95
- allResults.push({
96
- agentId: request.agentId,
97
- success: false,
98
- error: errorMessage,
99
- duration: 0
100
- });
101
- });
102
- if (failFast) {
103
- shouldStop = true;
104
- }
105
- }
29
+ if (requests.length === 0) {
30
+ return {
31
+ results: [],
32
+ summary: {
33
+ total: 0,
34
+ successful: 0,
35
+ failed: 0,
36
+ totalDuration: 0,
37
+ averageDuration: 0,
38
+ },
39
+ };
106
40
  }
107
- const endTime = performance.now();
108
- const totalDuration = endTime - startTime;
109
- const successful = allResults.filter(r => r.success).length;
110
- const failed = allResults.length - successful;
111
- const averageDuration = allResults.length > 0
112
- ? allResults.reduce((sum, r) => sum + r.duration, 0) / allResults.length
113
- : 0;
114
- const summary = {
115
- total: allResults.length,
116
- successful,
117
- failed,
118
- totalDuration,
119
- averageDuration
120
- };
121
- this.logger.log(`Parallel execution completed: ${successful}/${allResults.length} successful, total time: ${totalDuration.toFixed(2)}ms`);
41
+ this.logger.log(`Starting parallel execution of ${requests.length} requests`);
42
+ this.logger.log(`Configuration: maxConcurrency=${config.maxConcurrency ?? 5}, ` +
43
+ `timeout=${config.timeout ?? this.timeoutConfig.parallel}ms, ` +
44
+ `failFast=${config.failFast ?? false}`);
45
+ const tasks = requests.map((request, index) => this.createTask(request, index));
46
+ const runnerOptions = this.createRunnerOptions(config);
47
+ const taskResults = await this.parallelRunner.run(tasks, runnerOptions);
48
+ const orderedResults = this.buildAgentResults(taskResults);
49
+ const summary = this.buildSummary(orderedResults);
50
+ this.logger.log(`Parallel execution completed: ${summary.successful}/${summary.total} successful, ` +
51
+ `total time: ${summary.totalDuration.toFixed(2)}ms`);
122
52
  return {
123
- results: allResults,
124
- summary
53
+ results: orderedResults,
54
+ summary,
125
55
  };
126
56
  }
127
57
  async queryAgentsParallel(queries, config) {
128
- const requests = queries.map(q => ({
58
+ const requests = queries.map((q) => ({
129
59
  agentId: q.agentId,
130
60
  query: q.query,
131
61
  context: q.context,
132
62
  projectPath: q.projectPath,
133
63
  messages: q.messages,
134
- platform: q.platform
64
+ platform: q.platform,
135
65
  }));
136
66
  return this.executeParallel(requests, config);
137
67
  }
138
68
  async executeAgentsParallel(tasks, config) {
139
- const requests = tasks.map(t => ({
69
+ const requests = tasks.map((t) => ({
140
70
  agentId: t.agentId,
141
71
  task: t.task,
142
72
  context: t.context,
143
- projectPath: t.projectPath
73
+ projectPath: t.projectPath,
144
74
  }));
145
75
  return this.executeParallel(requests, config);
146
76
  }
147
- async executeWithTimeout(request, timeout) {
148
- const startTime = performance.now();
149
- const actualProvider = this.getProviderForAgent(request.agentId);
150
- const taskId = this.taskManagementService.createTask({
151
- type: request.query ? 'query' : 'execute',
152
- provider: actualProvider,
153
- prompt: request.query || request.task || '',
154
- agentId: request.agentId
155
- });
156
- try {
157
- const mode = request.query ? 'query' : 'execute';
158
- const agentOptions = this.getOptionsForAgent(request.agentId, mode);
159
- this.logger.log(`Starting execution for agent: ${request.agentId} (provider: ${actualProvider}, mode: ${mode}, options: ${agentOptions.join(' ')}, taskId: ${taskId})`);
160
- this.taskManagementService.addTaskLog(taskId, {
161
- level: 'info',
162
- message: `Starting ${mode} operation with options: ${agentOptions.join(' ')}`
163
- });
164
- const timeoutPromise = new Promise((_, reject) => {
165
- setTimeout(() => reject(new Error(`Timeout after ${timeout}ms`)), timeout);
166
- });
167
- let resultPromise;
168
- if (request.query) {
169
- const finalQuery = request.context ?
170
- `Context: ${request.context}\n\nQuery: ${request.query}` :
171
- request.query;
172
- resultPromise = this.aiService.queryAI(finalQuery, actualProvider, {
173
- workingDirectory: request.projectPath,
174
- taskId,
175
- additionalArgs: agentOptions,
176
- agentId: request.agentId,
177
- });
178
- }
179
- else if (request.task) {
180
- const finalTask = request.context ?
181
- `Context: ${request.context}\n\nTask: ${request.task}` :
182
- request.task;
183
- resultPromise = this.aiService.executeAI(finalTask, actualProvider, {
184
- workingDirectory: request.projectPath,
185
- taskId,
186
- additionalArgs: agentOptions,
187
- agentId: request.agentId,
188
- });
189
- }
190
- else {
191
- throw new Error('Either query or task must be provided');
192
- }
193
- const result = await Promise.race([resultPromise, timeoutPromise]);
194
- const endTime = performance.now();
195
- const duration = endTime - startTime;
196
- this.taskManagementService.completeTask(taskId, result, result.success);
197
- this.taskManagementService.addTaskLog(taskId, {
198
- level: result.success ? 'info' : 'error',
199
- message: result.success
200
- ? `Completed successfully in ${duration.toFixed(2)}ms`
201
- : `Failed after ${duration.toFixed(2)}ms: ${result.error || 'Unknown error'}`
202
- });
203
- this.logger.log(`Agent ${request.agentId} ${result.success ? 'completed successfully' : 'failed'} in ${duration.toFixed(2)}ms (taskId: ${taskId})`);
204
- return {
205
- agentId: request.agentId,
206
- success: result.success,
207
- result,
208
- duration,
209
- taskId
210
- };
211
- }
212
- catch (error) {
213
- const endTime = performance.now();
214
- const duration = endTime - startTime;
215
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
216
- this.taskManagementService.completeTask(taskId, { error: errorMessage }, false);
217
- this.taskManagementService.addTaskLog(taskId, {
218
- level: 'error',
219
- message: `Failed after ${duration.toFixed(2)}ms: ${errorMessage}`
220
- });
221
- this.logger.error(`Agent ${request.agentId} failed after ${duration.toFixed(2)}ms: ${errorMessage} (taskId: ${taskId})`);
222
- return {
223
- agentId: request.agentId,
224
- success: false,
225
- error: errorMessage,
226
- duration,
227
- taskId
228
- };
229
- }
230
- }
231
- chunkArray(array, chunkSize) {
232
- const chunks = [];
233
- for (let i = 0; i < array.length; i += chunkSize) {
234
- chunks.push(array.slice(i, i + chunkSize));
235
- }
236
- return chunks;
237
- }
238
77
  getPerformanceMetrics(results) {
239
78
  if (results.length === 0) {
240
79
  return {
@@ -242,21 +81,213 @@ let ParallelProcessingService = ParallelProcessingService_1 = class ParallelProc
242
81
  successRate: 0,
243
82
  averageExecutionTime: 0,
244
83
  fastestExecution: 0,
245
- slowestExecution: 0
84
+ slowestExecution: 0,
85
+ successfulAgents: [],
86
+ failedAgents: [],
246
87
  };
247
88
  }
248
- const successful = results.filter(r => r.success);
249
- const durations = results.map(r => r.duration);
89
+ const successful = results.filter((r) => r.success);
90
+ const durations = results.map((r) => r.duration);
250
91
  return {
251
92
  totalAgents: results.length,
252
93
  successRate: (successful.length / results.length) * 100,
253
94
  averageExecutionTime: durations.reduce((a, b) => a + b, 0) / durations.length,
254
95
  fastestExecution: Math.min(...durations),
255
96
  slowestExecution: Math.max(...durations),
256
- successfulAgents: successful.map(r => r.agentId),
257
- failedAgents: results.filter(r => !r.success).map(r => ({ agentId: r.agentId, error: r.error }))
97
+ successfulAgents: successful.map((r) => r.agentId),
98
+ failedAgents: results
99
+ .filter((r) => !r.success)
100
+ .map((r) => ({ agentId: r.agentId, error: r.error })),
258
101
  };
259
102
  }
103
+ createTask(request, index) {
104
+ const mode = request.query ? 'query' : 'execute';
105
+ const provider = this.getProviderForAgent(request.agentId);
106
+ const agentOptions = this.getOptionsForAgent(request.agentId, mode);
107
+ const metadata = {
108
+ request,
109
+ provider,
110
+ agentOptions,
111
+ mode,
112
+ index,
113
+ };
114
+ return {
115
+ id: `${request.agentId}:${mode}:${index}`,
116
+ metadata,
117
+ run: (context) => this.runAgentTask(metadata, context),
118
+ };
119
+ }
120
+ async runAgentTask(metadata, context) {
121
+ const { request, provider, agentOptions, mode } = metadata;
122
+ const prompt = mode === 'query' ? request.query : request.task;
123
+ if (!prompt) {
124
+ throw new Error('Either query or task must be provided');
125
+ }
126
+ const formattedPrompt = request.context
127
+ ? `Context: ${request.context}\n\n${mode === 'query' ? 'Query' : 'Task'}: ${prompt}`
128
+ : prompt;
129
+ const abortPromise = new Promise((_, reject) => {
130
+ if (context.signal.aborted) {
131
+ const reason = context.signal.reason instanceof Error
132
+ ? context.signal.reason
133
+ : new crewx_sdk_1.ParallelRunnerTimeoutError(metadata.request.agentId, 0);
134
+ reject(reason);
135
+ return;
136
+ }
137
+ context.signal.addEventListener('abort', () => {
138
+ const reason = context.signal.reason instanceof Error
139
+ ? context.signal.reason
140
+ : new crewx_sdk_1.ParallelRunnerTimeoutError(metadata.request.agentId, 0);
141
+ reject(reason);
142
+ }, { once: true });
143
+ });
144
+ const executionPromise = mode === 'query'
145
+ ? this.aiService.queryAI(formattedPrompt, provider, {
146
+ workingDirectory: request.projectPath,
147
+ additionalArgs: agentOptions,
148
+ agentId: request.agentId,
149
+ })
150
+ : this.aiService.executeAI(formattedPrompt, provider, {
151
+ workingDirectory: request.projectPath,
152
+ additionalArgs: agentOptions,
153
+ agentId: request.agentId,
154
+ });
155
+ try {
156
+ return await Promise.race([executionPromise, abortPromise]);
157
+ }
158
+ finally {
159
+ executionPromise.catch(() => undefined);
160
+ }
161
+ }
162
+ createRunnerOptions(config) {
163
+ return {
164
+ maxConcurrency: config.maxConcurrency ?? 5,
165
+ timeoutMs: config.timeout ?? this.timeoutConfig.parallel,
166
+ failFast: config.failFast ?? false,
167
+ evaluateTaskSuccess: (value) => value.success,
168
+ callbacks: this.createTaskCallbacks(),
169
+ };
170
+ }
171
+ createTaskCallbacks() {
172
+ return {
173
+ onTaskStart: async (task) => {
174
+ const metadata = this.getMetadata(task.metadata);
175
+ const modeLabel = metadata.mode;
176
+ const prompt = modeLabel === 'query' ? metadata.request.query ?? '' : metadata.request.task ?? '';
177
+ const taskId = this.taskManagementService.createTask({
178
+ type: modeLabel,
179
+ provider: metadata.provider,
180
+ prompt,
181
+ agentId: metadata.request.agentId,
182
+ });
183
+ metadata.taskId = taskId;
184
+ this.logger.log(`Starting execution for agent: ${metadata.request.agentId} ` +
185
+ `(provider: ${metadata.provider}, mode: ${modeLabel}, options: ${metadata.agentOptions.join(' ')}, taskId: ${taskId})`);
186
+ this.taskManagementService.addTaskLog(taskId, {
187
+ level: 'info',
188
+ message: `Starting ${modeLabel} operation with options: ${metadata.agentOptions.join(' ')}`,
189
+ });
190
+ },
191
+ onTaskComplete: async (result) => {
192
+ const metadata = this.getMetadata(result.metadata);
193
+ const taskId = metadata.taskId;
194
+ if (!taskId) {
195
+ return;
196
+ }
197
+ const aiResult = result.value;
198
+ if (aiResult) {
199
+ this.taskManagementService.completeTask(taskId, aiResult, aiResult.success);
200
+ this.taskManagementService.addTaskLog(taskId, {
201
+ level: aiResult.success ? 'info' : 'error',
202
+ message: aiResult.success
203
+ ? `Completed successfully in ${result.durationMs.toFixed(2)}ms`
204
+ : `Failed after ${result.durationMs.toFixed(2)}ms: ${aiResult.error || 'Unknown error'}`,
205
+ });
206
+ }
207
+ this.logger.log(`Agent ${metadata.request.agentId} ${result.success ? 'completed successfully' : 'failed'} ` +
208
+ `in ${result.durationMs.toFixed(2)}ms (taskId: ${taskId})`);
209
+ },
210
+ onError: async (task, error, durationMs) => {
211
+ const metadata = this.getMetadata(task.metadata);
212
+ const taskId = metadata.taskId;
213
+ const message = error.message || 'Unknown error';
214
+ if (taskId) {
215
+ this.taskManagementService.completeTask(taskId, { error: message }, false);
216
+ this.taskManagementService.addTaskLog(taskId, {
217
+ level: 'error',
218
+ message: `Failed after ${durationMs.toFixed(2)}ms: ${message}`,
219
+ });
220
+ }
221
+ this.logger.error(`Agent ${metadata.request.agentId} failed after ${durationMs.toFixed(2)}ms: ${message} ` +
222
+ `(taskId: ${taskId ?? 'N/A'})`);
223
+ },
224
+ };
225
+ }
226
+ buildAgentResults(taskResults) {
227
+ const decorated = taskResults.map((result) => {
228
+ const metadata = this.getMetadata(result.metadata);
229
+ const agentResult = result.value
230
+ ? {
231
+ agentId: metadata.request.agentId,
232
+ success: result.value.success,
233
+ result: result.value,
234
+ error: result.value.error,
235
+ duration: result.durationMs,
236
+ taskId: metadata.taskId,
237
+ }
238
+ : {
239
+ agentId: metadata.request.agentId,
240
+ success: false,
241
+ error: result.error?.message ?? 'Unknown error',
242
+ duration: result.durationMs,
243
+ taskId: metadata.taskId,
244
+ };
245
+ return { index: metadata.index, data: agentResult };
246
+ });
247
+ decorated.sort((a, b) => a.index - b.index);
248
+ return decorated.map((item) => item.data);
249
+ }
250
+ buildSummary(results) {
251
+ const metrics = this.parallelRunner.getMetrics();
252
+ const successful = results.filter((r) => r.success).length;
253
+ const failed = results.length - successful;
254
+ const averageDuration = results.length
255
+ ? results.reduce((sum, item) => sum + item.duration, 0) / results.length
256
+ : 0;
257
+ return {
258
+ total: results.length,
259
+ successful,
260
+ failed,
261
+ totalDuration: metrics.totalDurationMs,
262
+ averageDuration,
263
+ };
264
+ }
265
+ getMetadata(metadata) {
266
+ if (!metadata) {
267
+ throw new Error('ParallelRunner task metadata is missing');
268
+ }
269
+ return metadata;
270
+ }
271
+ getProviderForAgent(agentId) {
272
+ if (agentId === 'claude' || agentId === 'gemini' || agentId === 'copilot' || agentId === 'codex') {
273
+ return agentId;
274
+ }
275
+ const agentConfig = this.configService.getAgentConfig(agentId);
276
+ if (agentConfig && agentConfig.inline?.provider) {
277
+ return agentConfig.inline.provider;
278
+ }
279
+ this.logger.warn(`No provider found for agent ${agentId}, defaulting to claude`);
280
+ return 'claude';
281
+ }
282
+ getOptionsForAgent(agentId, mode) {
283
+ const agentConfig = this.configService.getAgentConfig(agentId);
284
+ if (agentConfig && agentConfig.options) {
285
+ if (typeof agentConfig.options === 'object' && agentConfig.options[mode]) {
286
+ return agentConfig.options[mode] || [];
287
+ }
288
+ }
289
+ return [];
290
+ }
260
291
  };
261
292
  exports.ParallelProcessingService = ParallelProcessingService;
262
293
  exports.ParallelProcessingService = ParallelProcessingService = ParallelProcessingService_1 = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"parallel-processing.service.js","sourceRoot":"","sources":["../../src/services/parallel-processing.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parallel-processing.service.js","sourceRoot":"","sources":["../../src/services/parallel-processing.service.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@ import { AgentLoaderService } from './agent-loader.service';
2
2
  import { ConfigService } from './config.service';
3
3
  import { AgentInfo, RemoteAgentInfo } from '@sowonai/crewx-sdk';
4
4
  import { RemoteProviderConfig } from '../providers/dynamic-provider.factory';
5
- import { McpClientService } from './mcp-client.service';
6
5
  export interface RemoteAgentDescriptor {
7
6
  agent: AgentInfo;
8
7
  remote: RemoteAgentInfo;
@@ -11,9 +10,9 @@ export interface RemoteAgentDescriptor {
11
10
  export declare class RemoteAgentService {
12
11
  private readonly agentLoaderService;
13
12
  private readonly configService;
14
- private readonly mcpClientService;
15
13
  private readonly logger;
16
- constructor(agentLoaderService: AgentLoaderService, configService: ConfigService, mcpClientService: McpClientService);
14
+ private readonly manager;
15
+ constructor(agentLoaderService: AgentLoaderService, configService: ConfigService);
17
16
  getRemoteAgents(): Promise<RemoteAgentDescriptor[]>;
18
17
  getRemoteAgent(agentId: string): Promise<RemoteAgentDescriptor | undefined>;
19
18
  isRemoteAgent(agentId: string): Promise<boolean>;
@@ -39,11 +38,9 @@ export declare class RemoteAgentService {
39
38
  metadata?: Record<string, any>;
40
39
  }>;
41
40
  }): Promise<any>;
41
+ private convertToSdkConfig;
42
42
  private resolveRemoteInfo;
43
43
  private resolveRemoteProviderConfig;
44
44
  private normalizeProviderName;
45
45
  private ensureRemote;
46
- private callRemoteTool;
47
- private normalizeRemoteResponse;
48
- private normalizeRemoteUrl;
49
46
  }