@adcp/client 0.2.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 +166 -0
- package/dist/lib/agents/index.generated.d.ts +147 -0
- package/dist/lib/agents/index.generated.d.ts.map +1 -0
- package/dist/lib/agents/index.generated.js +218 -0
- package/dist/lib/agents/index.generated.js.map +1 -0
- package/dist/lib/auth/index.d.ts +22 -0
- package/dist/lib/auth/index.d.ts.map +1 -0
- package/dist/lib/auth/index.js +73 -0
- package/dist/lib/auth/index.js.map +1 -0
- package/dist/lib/core/ADCPClient.d.ts +233 -0
- package/dist/lib/core/ADCPClient.d.ts.map +1 -0
- package/dist/lib/core/ADCPClient.js +287 -0
- package/dist/lib/core/ADCPClient.js.map +1 -0
- package/dist/lib/core/ADCPMultiAgentClient.d.ts +308 -0
- package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -0
- package/dist/lib/core/ADCPMultiAgentClient.js +468 -0
- package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -0
- package/dist/lib/core/AgentClient.d.ts +124 -0
- package/dist/lib/core/AgentClient.d.ts.map +1 -0
- package/dist/lib/core/AgentClient.js +242 -0
- package/dist/lib/core/AgentClient.js.map +1 -0
- package/dist/lib/core/ConfigurationManager.d.ts +79 -0
- package/dist/lib/core/ConfigurationManager.d.ts.map +1 -0
- package/dist/lib/core/ConfigurationManager.js +254 -0
- package/dist/lib/core/ConfigurationManager.js.map +1 -0
- package/dist/lib/core/ConversationTypes.d.ts +242 -0
- package/dist/lib/core/ConversationTypes.d.ts.map +1 -0
- package/dist/lib/core/ConversationTypes.js +5 -0
- package/dist/lib/core/ConversationTypes.js.map +1 -0
- package/dist/lib/core/ProtocolResponseParser.d.ts +45 -0
- package/dist/lib/core/ProtocolResponseParser.d.ts.map +1 -0
- package/dist/lib/core/ProtocolResponseParser.js +82 -0
- package/dist/lib/core/ProtocolResponseParser.js.map +1 -0
- package/dist/lib/core/TaskExecutor.d.ts +108 -0
- package/dist/lib/core/TaskExecutor.d.ts.map +1 -0
- package/dist/lib/core/TaskExecutor.js +422 -0
- package/dist/lib/core/TaskExecutor.js.map +1 -0
- package/dist/lib/errors/index.d.ts +125 -0
- package/dist/lib/errors/index.d.ts.map +1 -0
- package/dist/lib/errors/index.js +211 -0
- package/dist/lib/errors/index.js.map +1 -0
- package/dist/lib/handlers/types.d.ts +119 -0
- package/dist/lib/handlers/types.d.ts.map +1 -0
- package/dist/lib/handlers/types.js +239 -0
- package/dist/lib/handlers/types.js.map +1 -0
- package/dist/lib/index.d.ts +51 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +122 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/protocols/a2a.d.ts +2 -0
- package/dist/lib/protocols/a2a.d.ts.map +1 -0
- package/dist/lib/protocols/a2a.js +70 -0
- package/dist/lib/protocols/a2a.js.map +1 -0
- package/dist/lib/protocols/index.d.ts +22 -0
- package/dist/lib/protocols/index.d.ts.map +1 -0
- package/dist/lib/protocols/index.js +47 -0
- package/dist/lib/protocols/index.js.map +1 -0
- package/dist/lib/protocols/mcp.d.ts +2 -0
- package/dist/lib/protocols/mcp.d.ts.map +1 -0
- package/dist/lib/protocols/mcp.js +127 -0
- package/dist/lib/protocols/mcp.js.map +1 -0
- package/dist/lib/storage/MemoryStorage.d.ts +93 -0
- package/dist/lib/storage/MemoryStorage.d.ts.map +1 -0
- package/dist/lib/storage/MemoryStorage.js +219 -0
- package/dist/lib/storage/MemoryStorage.js.map +1 -0
- package/dist/lib/storage/interfaces.d.ts +195 -0
- package/dist/lib/storage/interfaces.d.ts.map +1 -0
- package/dist/lib/storage/interfaces.js +5 -0
- package/dist/lib/storage/interfaces.js.map +1 -0
- package/dist/lib/types/adcp.d.ts +407 -0
- package/dist/lib/types/adcp.d.ts.map +1 -0
- package/dist/lib/types/adcp.js +5 -0
- package/dist/lib/types/adcp.js.map +1 -0
- package/dist/lib/types/core.generated.d.ts +469 -0
- package/dist/lib/types/core.generated.d.ts.map +1 -0
- package/dist/lib/types/core.generated.js +5 -0
- package/dist/lib/types/core.generated.js.map +1 -0
- package/dist/lib/types/index.d.ts +3 -0
- package/dist/lib/types/index.d.ts.map +1 -0
- package/dist/lib/types/index.js +19 -0
- package/dist/lib/types/index.js.map +1 -0
- package/dist/lib/types/tools.generated.d.ts +1674 -0
- package/dist/lib/types/tools.generated.d.ts.map +1 -0
- package/dist/lib/types/tools.generated.js +8 -0
- package/dist/lib/types/tools.generated.js.map +1 -0
- package/dist/lib/utils/index.d.ts +25 -0
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +109 -0
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/lib/validation/index.d.ts +29 -0
- package/dist/lib/validation/index.d.ts.map +1 -0
- package/dist/lib/validation/index.js +186 -0
- package/dist/lib/validation/index.js.map +1 -0
- package/dist/lib/version.d.ts +22 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +32 -0
- package/dist/lib/version.js.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Core task execution engine for ADCP conversation flow
|
|
3
|
+
// Implements PR #78 async patterns: working/submitted/input-required/completed
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.TaskExecutor = exports.InputRequiredError = exports.DeferredTaskError = exports.MaxClarificationError = exports.TaskTimeoutError = void 0;
|
|
6
|
+
const crypto_1 = require("crypto");
|
|
7
|
+
const protocols_1 = require("../protocols");
|
|
8
|
+
const types_1 = require("../handlers/types");
|
|
9
|
+
const ProtocolResponseParser_1 = require("./ProtocolResponseParser");
|
|
10
|
+
/**
|
|
11
|
+
* Custom errors for task execution
|
|
12
|
+
*/
|
|
13
|
+
class TaskTimeoutError extends Error {
|
|
14
|
+
constructor(taskId, timeout) {
|
|
15
|
+
super(`Task ${taskId} timed out after ${timeout}ms`);
|
|
16
|
+
this.name = 'TaskTimeoutError';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.TaskTimeoutError = TaskTimeoutError;
|
|
20
|
+
class MaxClarificationError extends Error {
|
|
21
|
+
constructor(taskId, maxAttempts) {
|
|
22
|
+
super(`Task ${taskId} exceeded maximum clarification attempts: ${maxAttempts}`);
|
|
23
|
+
this.name = 'MaxClarificationError';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.MaxClarificationError = MaxClarificationError;
|
|
27
|
+
class DeferredTaskError extends Error {
|
|
28
|
+
token;
|
|
29
|
+
constructor(token) {
|
|
30
|
+
super(`Task deferred with token: ${token}`);
|
|
31
|
+
this.token = token;
|
|
32
|
+
this.name = 'DeferredTaskError';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.DeferredTaskError = DeferredTaskError;
|
|
36
|
+
class InputRequiredError extends Error {
|
|
37
|
+
constructor(question) {
|
|
38
|
+
super(`Server requires input but no handler provided. Question: ${question}`);
|
|
39
|
+
this.name = 'InputRequiredError';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.InputRequiredError = InputRequiredError;
|
|
43
|
+
/**
|
|
44
|
+
* Core task execution engine that handles the conversation loop with agents
|
|
45
|
+
*/
|
|
46
|
+
class TaskExecutor {
|
|
47
|
+
config;
|
|
48
|
+
responseParser;
|
|
49
|
+
activeTasks = new Map();
|
|
50
|
+
conversationStorage;
|
|
51
|
+
constructor(config = {}) {
|
|
52
|
+
this.config = config;
|
|
53
|
+
this.responseParser = new ProtocolResponseParser_1.ProtocolResponseParser();
|
|
54
|
+
if (config.enableConversationStorage) {
|
|
55
|
+
this.conversationStorage = new Map();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Execute a task with an agent using PR #78 async patterns
|
|
60
|
+
* Handles: working (keep SSE open), submitted (webhook), input-required (handler), completed
|
|
61
|
+
*/
|
|
62
|
+
async executeTask(agent, taskName, params, inputHandler, options = {}) {
|
|
63
|
+
const taskId = options.contextId || (0, crypto_1.randomUUID)();
|
|
64
|
+
const startTime = Date.now();
|
|
65
|
+
const workingTimeout = this.config.workingTimeout || 120000; // 120s max per PR #78
|
|
66
|
+
// Create initial message
|
|
67
|
+
const initialMessage = {
|
|
68
|
+
id: (0, crypto_1.randomUUID)(),
|
|
69
|
+
role: 'user',
|
|
70
|
+
content: { tool: taskName, params },
|
|
71
|
+
timestamp: new Date().toISOString(),
|
|
72
|
+
metadata: { toolName: taskName, type: 'request' }
|
|
73
|
+
};
|
|
74
|
+
// Start streaming connection
|
|
75
|
+
const debugLogs = [];
|
|
76
|
+
try {
|
|
77
|
+
// Send initial request and get streaming response
|
|
78
|
+
const response = await protocols_1.ProtocolClient.callTool(agent, taskName, params, debugLogs);
|
|
79
|
+
// Add initial response message
|
|
80
|
+
const responseMessage = {
|
|
81
|
+
id: (0, crypto_1.randomUUID)(),
|
|
82
|
+
role: 'agent',
|
|
83
|
+
content: response,
|
|
84
|
+
timestamp: new Date().toISOString(),
|
|
85
|
+
metadata: { toolName: taskName, type: 'response' }
|
|
86
|
+
};
|
|
87
|
+
const messages = [initialMessage, responseMessage];
|
|
88
|
+
// Handle response based on status
|
|
89
|
+
return await this.handleAsyncResponse(agent, taskId, taskName, params, response, messages, inputHandler, options, debugLogs, startTime);
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
return this.createErrorResult(taskId, agent, error, debugLogs, startTime);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Handle agent response based on ADCP status (PR #78)
|
|
97
|
+
*/
|
|
98
|
+
async handleAsyncResponse(agent, taskId, taskName, params, response, messages, inputHandler, options = {}, debugLogs = [], startTime = Date.now()) {
|
|
99
|
+
const status = this.responseParser.getStatus(response);
|
|
100
|
+
switch (status) {
|
|
101
|
+
case ProtocolResponseParser_1.ADCP_STATUS.COMPLETED:
|
|
102
|
+
// Task completed immediately
|
|
103
|
+
return {
|
|
104
|
+
success: true,
|
|
105
|
+
status: 'completed',
|
|
106
|
+
data: response.result || response.data || response,
|
|
107
|
+
metadata: {
|
|
108
|
+
taskId,
|
|
109
|
+
taskName,
|
|
110
|
+
agent: { id: agent.id, name: agent.name, protocol: agent.protocol },
|
|
111
|
+
responseTimeMs: Date.now() - startTime,
|
|
112
|
+
timestamp: new Date().toISOString(),
|
|
113
|
+
clarificationRounds: 0,
|
|
114
|
+
status: 'completed'
|
|
115
|
+
},
|
|
116
|
+
conversation: messages
|
|
117
|
+
};
|
|
118
|
+
case ProtocolResponseParser_1.ADCP_STATUS.WORKING:
|
|
119
|
+
// Server is processing - keep connection open for up to 120s
|
|
120
|
+
return this.waitForWorkingCompletion(agent, taskId, taskName, params, response, messages, inputHandler, options, debugLogs, startTime);
|
|
121
|
+
case ProtocolResponseParser_1.ADCP_STATUS.SUBMITTED:
|
|
122
|
+
// Long-running task - set up webhook
|
|
123
|
+
return this.setupSubmittedTask(agent, taskId, taskName, response, messages, options, debugLogs, startTime);
|
|
124
|
+
case ProtocolResponseParser_1.ADCP_STATUS.INPUT_REQUIRED:
|
|
125
|
+
// Server needs input - handler is mandatory
|
|
126
|
+
return this.handleInputRequired(agent, taskId, taskName, params, response, messages, inputHandler, options, debugLogs, startTime);
|
|
127
|
+
case ProtocolResponseParser_1.ADCP_STATUS.FAILED:
|
|
128
|
+
case ProtocolResponseParser_1.ADCP_STATUS.REJECTED:
|
|
129
|
+
case ProtocolResponseParser_1.ADCP_STATUS.CANCELED:
|
|
130
|
+
throw new Error(`Task ${status}: ${response.error || response.message || 'Unknown error'}`);
|
|
131
|
+
default:
|
|
132
|
+
// Unknown status - treat as completed if we have data
|
|
133
|
+
if (response.result || response.data) {
|
|
134
|
+
return {
|
|
135
|
+
success: true,
|
|
136
|
+
status: 'completed',
|
|
137
|
+
data: response.result || response.data || response,
|
|
138
|
+
metadata: {
|
|
139
|
+
taskId,
|
|
140
|
+
taskName,
|
|
141
|
+
agent: { id: agent.id, name: agent.name, protocol: agent.protocol },
|
|
142
|
+
responseTimeMs: Date.now() - startTime,
|
|
143
|
+
timestamp: new Date().toISOString(),
|
|
144
|
+
clarificationRounds: 0,
|
|
145
|
+
status: 'completed'
|
|
146
|
+
},
|
|
147
|
+
conversation: messages
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
throw new Error(`Unknown status: ${status || 'undefined'}`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Wait for 'working' status completion (max 120s per PR #78)
|
|
157
|
+
*/
|
|
158
|
+
async waitForWorkingCompletion(agent, taskId, taskName, params, initialResponse, messages, inputHandler, options = {}, debugLogs = [], startTime = Date.now()) {
|
|
159
|
+
// TODO: Implement SSE/streaming connection waiting
|
|
160
|
+
// For now, simulate by polling tasks/get endpoint
|
|
161
|
+
const workingTimeout = this.config.workingTimeout || 120000;
|
|
162
|
+
const pollInterval = 2000; // Poll every 2 seconds
|
|
163
|
+
const deadline = Date.now() + workingTimeout;
|
|
164
|
+
while (Date.now() < deadline) {
|
|
165
|
+
await this.sleep(pollInterval);
|
|
166
|
+
try {
|
|
167
|
+
const taskInfo = await this.getTaskStatus(agent, taskId);
|
|
168
|
+
if (taskInfo.status === ProtocolResponseParser_1.ADCP_STATUS.COMPLETED) {
|
|
169
|
+
return {
|
|
170
|
+
success: true,
|
|
171
|
+
status: 'completed',
|
|
172
|
+
data: taskInfo.result,
|
|
173
|
+
metadata: {
|
|
174
|
+
taskId,
|
|
175
|
+
taskName,
|
|
176
|
+
agent: { id: agent.id, name: agent.name, protocol: agent.protocol },
|
|
177
|
+
responseTimeMs: Date.now() - startTime,
|
|
178
|
+
timestamp: new Date().toISOString(),
|
|
179
|
+
clarificationRounds: 0,
|
|
180
|
+
status: 'completed'
|
|
181
|
+
},
|
|
182
|
+
conversation: messages
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
if (taskInfo.status === ProtocolResponseParser_1.ADCP_STATUS.INPUT_REQUIRED) {
|
|
186
|
+
// Transition to input handling
|
|
187
|
+
return this.handleInputRequired(agent, taskId, taskName, params, taskInfo, messages, inputHandler, options, debugLogs, startTime);
|
|
188
|
+
}
|
|
189
|
+
if (taskInfo.status === ProtocolResponseParser_1.ADCP_STATUS.FAILED) {
|
|
190
|
+
throw new Error(`Task failed: ${taskInfo.error}`);
|
|
191
|
+
}
|
|
192
|
+
// Still working, continue polling
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
// Network error during polling - continue trying
|
|
196
|
+
console.warn(`Polling error for task ${taskId}:`, error);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
throw new TaskTimeoutError(taskId, workingTimeout);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Set up submitted task with webhook
|
|
203
|
+
*/
|
|
204
|
+
async setupSubmittedTask(agent, taskId, taskName, response, messages, options = {}, debugLogs = [], startTime = Date.now()) {
|
|
205
|
+
let webhookUrl = response.webhookUrl;
|
|
206
|
+
// If no webhook URL provided by server, generate one
|
|
207
|
+
if (!webhookUrl && this.config.webhookManager) {
|
|
208
|
+
webhookUrl = this.config.webhookManager.generateUrl(taskId);
|
|
209
|
+
await this.config.webhookManager.registerWebhook(agent, taskId, webhookUrl);
|
|
210
|
+
}
|
|
211
|
+
const submitted = {
|
|
212
|
+
taskId,
|
|
213
|
+
webhookUrl,
|
|
214
|
+
track: () => this.getTaskStatus(agent, taskId),
|
|
215
|
+
waitForCompletion: (pollInterval = 60000) => this.pollTaskCompletion(agent, taskId, pollInterval)
|
|
216
|
+
};
|
|
217
|
+
return {
|
|
218
|
+
success: false,
|
|
219
|
+
status: 'submitted',
|
|
220
|
+
submitted,
|
|
221
|
+
metadata: {
|
|
222
|
+
taskId,
|
|
223
|
+
taskName,
|
|
224
|
+
agent: { id: agent.id, name: agent.name, protocol: agent.protocol },
|
|
225
|
+
responseTimeMs: Date.now() - startTime,
|
|
226
|
+
timestamp: new Date().toISOString(),
|
|
227
|
+
clarificationRounds: 0,
|
|
228
|
+
status: 'submitted'
|
|
229
|
+
},
|
|
230
|
+
conversation: messages
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Handle input-required status (handler mandatory)
|
|
235
|
+
*/
|
|
236
|
+
async handleInputRequired(agent, taskId, taskName, params, response, messages, inputHandler, options = {}, debugLogs = [], startTime = Date.now()) {
|
|
237
|
+
const inputRequest = this.responseParser.parseInputRequest(response);
|
|
238
|
+
// Handler is mandatory for input-required
|
|
239
|
+
if (!inputHandler) {
|
|
240
|
+
throw new InputRequiredError(inputRequest.question);
|
|
241
|
+
}
|
|
242
|
+
// Build context for handler
|
|
243
|
+
const context = {
|
|
244
|
+
messages,
|
|
245
|
+
inputRequest,
|
|
246
|
+
taskId,
|
|
247
|
+
agent: { id: agent.id, name: agent.name, protocol: agent.protocol },
|
|
248
|
+
attempt: 1,
|
|
249
|
+
maxAttempts: options.maxClarifications || 3,
|
|
250
|
+
deferToHuman: async () => ({ defer: true, token: (0, crypto_1.randomUUID)() }),
|
|
251
|
+
abort: (reason) => { throw new Error(reason || 'Task aborted'); },
|
|
252
|
+
getSummary: () => messages.map(m => `${m.role}: ${JSON.stringify(m.content)}`).join('\n'),
|
|
253
|
+
wasFieldDiscussed: (field) => messages.some(m => m.content && typeof m.content === 'object' && m.content[field] !== undefined),
|
|
254
|
+
getPreviousResponse: (field) => {
|
|
255
|
+
const msg = messages.find(m => m.role === 'user' && m.content && typeof m.content === 'object' && m.content[field] !== undefined);
|
|
256
|
+
return msg?.content[field];
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
// Call handler
|
|
260
|
+
const handlerResponse = await inputHandler(context);
|
|
261
|
+
// Check if handler wants to defer
|
|
262
|
+
if ((0, types_1.isDeferResponse)(handlerResponse)) {
|
|
263
|
+
const token = handlerResponse.token;
|
|
264
|
+
// Save deferred state for later resumption
|
|
265
|
+
if (this.config.deferredStorage) {
|
|
266
|
+
await this.config.deferredStorage.set(token, {
|
|
267
|
+
taskId,
|
|
268
|
+
contextId: response.contextId || taskId,
|
|
269
|
+
agent,
|
|
270
|
+
taskName,
|
|
271
|
+
params,
|
|
272
|
+
messages,
|
|
273
|
+
createdAt: Date.now()
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
const deferred = {
|
|
277
|
+
token,
|
|
278
|
+
question: inputRequest.question,
|
|
279
|
+
resume: (input) => this.resumeDeferredTask(token, input)
|
|
280
|
+
};
|
|
281
|
+
return {
|
|
282
|
+
success: false,
|
|
283
|
+
status: 'deferred',
|
|
284
|
+
deferred,
|
|
285
|
+
metadata: {
|
|
286
|
+
taskId,
|
|
287
|
+
taskName,
|
|
288
|
+
agent: { id: agent.id, name: agent.name, protocol: agent.protocol },
|
|
289
|
+
responseTimeMs: Date.now() - startTime,
|
|
290
|
+
timestamp: new Date().toISOString(),
|
|
291
|
+
clarificationRounds: 1,
|
|
292
|
+
status: 'deferred'
|
|
293
|
+
},
|
|
294
|
+
conversation: messages
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
// Handler provided input - continue with the task
|
|
298
|
+
return this.continueTaskWithInput(agent, taskId, taskName, params, response.contextId, handlerResponse, messages, options, debugLogs, startTime);
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Task tracking methods (PR #78)
|
|
302
|
+
*/
|
|
303
|
+
async listTasks(agent) {
|
|
304
|
+
try {
|
|
305
|
+
const response = await protocols_1.ProtocolClient.callTool(agent, 'tasks/list', {});
|
|
306
|
+
return response.tasks || [];
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
console.warn('Failed to list tasks:', error);
|
|
310
|
+
return [];
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
async getTaskStatus(agent, taskId) {
|
|
314
|
+
const response = await protocols_1.ProtocolClient.callTool(agent, 'tasks/get', { taskId });
|
|
315
|
+
return response.task || response;
|
|
316
|
+
}
|
|
317
|
+
async pollTaskCompletion(agent, taskId, pollInterval = 60000) {
|
|
318
|
+
while (true) {
|
|
319
|
+
const status = await this.getTaskStatus(agent, taskId);
|
|
320
|
+
if (status.status === ProtocolResponseParser_1.ADCP_STATUS.COMPLETED) {
|
|
321
|
+
return {
|
|
322
|
+
success: true,
|
|
323
|
+
status: 'completed',
|
|
324
|
+
data: status.result,
|
|
325
|
+
metadata: {
|
|
326
|
+
taskId,
|
|
327
|
+
taskName: status.taskType,
|
|
328
|
+
agent: { id: agent.id, name: agent.name, protocol: agent.protocol },
|
|
329
|
+
responseTimeMs: Date.now() - status.createdAt,
|
|
330
|
+
timestamp: new Date().toISOString(),
|
|
331
|
+
clarificationRounds: 0,
|
|
332
|
+
status: 'completed'
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
if (status.status === ProtocolResponseParser_1.ADCP_STATUS.FAILED || status.status === ProtocolResponseParser_1.ADCP_STATUS.CANCELED) {
|
|
337
|
+
throw new Error(`Task ${status.status}: ${status.error}`);
|
|
338
|
+
}
|
|
339
|
+
await this.sleep(pollInterval);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Resume a deferred task (client deferral)
|
|
344
|
+
*/
|
|
345
|
+
async resumeDeferredTask(token, input) {
|
|
346
|
+
if (!this.config.deferredStorage) {
|
|
347
|
+
throw new Error('Deferred storage not configured');
|
|
348
|
+
}
|
|
349
|
+
const state = await this.config.deferredStorage.get(token);
|
|
350
|
+
if (!state) {
|
|
351
|
+
throw new Error(`Deferred task not found: ${token}`);
|
|
352
|
+
}
|
|
353
|
+
// Continue task with the provided input
|
|
354
|
+
return this.continueTaskWithInput(state.agent, state.taskId, state.taskName, state.params, state.contextId, input, state.messages);
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Continue a task after receiving input
|
|
358
|
+
*/
|
|
359
|
+
async continueTaskWithInput(agent, taskId, taskName, params, contextId, input, messages, options = {}, debugLogs = [], startTime = Date.now()) {
|
|
360
|
+
// Add user input message
|
|
361
|
+
const inputMessage = {
|
|
362
|
+
id: (0, crypto_1.randomUUID)(),
|
|
363
|
+
role: 'user',
|
|
364
|
+
content: input,
|
|
365
|
+
timestamp: new Date().toISOString(),
|
|
366
|
+
metadata: { type: 'input_response' }
|
|
367
|
+
};
|
|
368
|
+
messages.push(inputMessage);
|
|
369
|
+
// Continue the task with input
|
|
370
|
+
const response = await protocols_1.ProtocolClient.callTool(agent, 'continue_task', {
|
|
371
|
+
contextId,
|
|
372
|
+
input
|
|
373
|
+
}, debugLogs);
|
|
374
|
+
// Add response message
|
|
375
|
+
const responseMessage = {
|
|
376
|
+
id: (0, crypto_1.randomUUID)(),
|
|
377
|
+
role: 'agent',
|
|
378
|
+
content: response,
|
|
379
|
+
timestamp: new Date().toISOString(),
|
|
380
|
+
metadata: { type: 'continued_response' }
|
|
381
|
+
};
|
|
382
|
+
messages.push(responseMessage);
|
|
383
|
+
// Handle the continued response
|
|
384
|
+
return this.handleAsyncResponse(agent, taskId, taskName, params, response, messages, undefined, options, debugLogs, startTime);
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Utility methods
|
|
388
|
+
*/
|
|
389
|
+
sleep(ms) {
|
|
390
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
391
|
+
}
|
|
392
|
+
createErrorResult(taskId, agent, error, debugLogs = [], startTime = Date.now()) {
|
|
393
|
+
return {
|
|
394
|
+
success: false,
|
|
395
|
+
status: 'completed', // TaskResult status
|
|
396
|
+
error: error.message || String(error),
|
|
397
|
+
metadata: {
|
|
398
|
+
taskId,
|
|
399
|
+
taskName: 'unknown',
|
|
400
|
+
agent: { id: agent.id, name: agent.name, protocol: agent.protocol },
|
|
401
|
+
responseTimeMs: Date.now() - startTime,
|
|
402
|
+
timestamp: new Date().toISOString(),
|
|
403
|
+
clarificationRounds: 0,
|
|
404
|
+
status: 'failed' // metadata status
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Legacy methods for backward compatibility
|
|
410
|
+
*/
|
|
411
|
+
getConversationHistory(taskId) {
|
|
412
|
+
return this.conversationStorage?.get(taskId);
|
|
413
|
+
}
|
|
414
|
+
clearConversationHistory(taskId) {
|
|
415
|
+
this.conversationStorage?.delete(taskId);
|
|
416
|
+
}
|
|
417
|
+
getActiveTasks() {
|
|
418
|
+
return Array.from(this.activeTasks.values());
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
exports.TaskExecutor = TaskExecutor;
|
|
422
|
+
//# sourceMappingURL=TaskExecutor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskExecutor.js","sourceRoot":"","sources":["../../../src/lib/core/TaskExecutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for all ADCP client errors
|
|
3
|
+
*/
|
|
4
|
+
export declare abstract class ADCPError extends Error {
|
|
5
|
+
details?: any | undefined;
|
|
6
|
+
abstract readonly code: string;
|
|
7
|
+
constructor(message: string, details?: any | undefined);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Error thrown when a task times out
|
|
11
|
+
*/
|
|
12
|
+
export declare class TaskTimeoutError extends ADCPError {
|
|
13
|
+
readonly taskId: string;
|
|
14
|
+
readonly timeout: number;
|
|
15
|
+
readonly code = "TASK_TIMEOUT";
|
|
16
|
+
constructor(taskId: string, timeout: number);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Error thrown when maximum clarification attempts are exceeded
|
|
20
|
+
*/
|
|
21
|
+
export declare class MaxClarificationError extends ADCPError {
|
|
22
|
+
readonly taskId: string;
|
|
23
|
+
readonly maxAttempts: number;
|
|
24
|
+
readonly code = "MAX_CLARIFICATIONS";
|
|
25
|
+
constructor(taskId: string, maxAttempts: number);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Error thrown when a task is deferred to human
|
|
29
|
+
* Contains the token needed to resume the task
|
|
30
|
+
*/
|
|
31
|
+
export declare class DeferredTaskError extends ADCPError {
|
|
32
|
+
readonly token: string;
|
|
33
|
+
readonly code = "TASK_DEFERRED";
|
|
34
|
+
constructor(token: string);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Error thrown when a task is aborted
|
|
38
|
+
*/
|
|
39
|
+
export declare class TaskAbortedError extends ADCPError {
|
|
40
|
+
readonly taskId: string;
|
|
41
|
+
readonly reason?: string | undefined;
|
|
42
|
+
readonly code = "TASK_ABORTED";
|
|
43
|
+
constructor(taskId: string, reason?: string | undefined);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Error thrown when an agent is not found
|
|
47
|
+
*/
|
|
48
|
+
export declare class AgentNotFoundError extends ADCPError {
|
|
49
|
+
readonly agentId: string;
|
|
50
|
+
readonly availableAgents: string[];
|
|
51
|
+
readonly code = "AGENT_NOT_FOUND";
|
|
52
|
+
constructor(agentId: string, availableAgents: string[]);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Error thrown when an agent doesn't support a task
|
|
56
|
+
*/
|
|
57
|
+
export declare class UnsupportedTaskError extends ADCPError {
|
|
58
|
+
readonly agentId: string;
|
|
59
|
+
readonly taskName: string;
|
|
60
|
+
readonly supportedTasks?: string[] | undefined;
|
|
61
|
+
readonly code = "UNSUPPORTED_TASK";
|
|
62
|
+
constructor(agentId: string, taskName: string, supportedTasks?: string[] | undefined);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Error thrown when protocol communication fails
|
|
66
|
+
*/
|
|
67
|
+
export declare class ProtocolError extends ADCPError {
|
|
68
|
+
readonly protocol: 'mcp' | 'a2a';
|
|
69
|
+
readonly originalError?: Error | undefined;
|
|
70
|
+
readonly code = "PROTOCOL_ERROR";
|
|
71
|
+
constructor(protocol: 'mcp' | 'a2a', message: string, originalError?: Error | undefined);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Error thrown when validation fails
|
|
75
|
+
*/
|
|
76
|
+
export declare class ValidationError extends ADCPError {
|
|
77
|
+
readonly field: string;
|
|
78
|
+
readonly value: any;
|
|
79
|
+
readonly constraint: string;
|
|
80
|
+
readonly code = "VALIDATION_ERROR";
|
|
81
|
+
constructor(field: string, value: any, constraint: string);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Error thrown when input handler is missing but required
|
|
85
|
+
*/
|
|
86
|
+
export declare class MissingInputHandlerError extends ADCPError {
|
|
87
|
+
readonly taskId: string;
|
|
88
|
+
readonly question: string;
|
|
89
|
+
readonly code = "MISSING_INPUT_HANDLER";
|
|
90
|
+
constructor(taskId: string, question: string);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Error thrown when conversation context is invalid
|
|
94
|
+
*/
|
|
95
|
+
export declare class InvalidContextError extends ADCPError {
|
|
96
|
+
readonly contextId: string;
|
|
97
|
+
readonly code = "INVALID_CONTEXT";
|
|
98
|
+
constructor(contextId: string, reason: string);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Error thrown when configuration is invalid
|
|
102
|
+
*/
|
|
103
|
+
export declare class ConfigurationError extends ADCPError {
|
|
104
|
+
readonly configField?: string | undefined;
|
|
105
|
+
readonly code = "CONFIGURATION_ERROR";
|
|
106
|
+
constructor(message: string, configField?: string | undefined);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Type guard to check if an error is an ADCP error
|
|
110
|
+
*/
|
|
111
|
+
export declare function isADCPError(error: unknown): error is ADCPError;
|
|
112
|
+
/**
|
|
113
|
+
* Type guard to check if an error is a specific ADCP error type
|
|
114
|
+
*/
|
|
115
|
+
export declare function isErrorOfType<T extends ADCPError>(error: unknown, ErrorClass: new (...args: any[]) => T): error is T;
|
|
116
|
+
/**
|
|
117
|
+
* Utility to extract error information for logging/debugging
|
|
118
|
+
*/
|
|
119
|
+
export declare function extractErrorInfo(error: unknown): {
|
|
120
|
+
message: string;
|
|
121
|
+
code?: string;
|
|
122
|
+
details?: any;
|
|
123
|
+
stack?: string;
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/errors/index.ts"],"names":[],"mappings":"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"}
|