@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.
Files changed (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +166 -0
  3. package/dist/lib/agents/index.generated.d.ts +147 -0
  4. package/dist/lib/agents/index.generated.d.ts.map +1 -0
  5. package/dist/lib/agents/index.generated.js +218 -0
  6. package/dist/lib/agents/index.generated.js.map +1 -0
  7. package/dist/lib/auth/index.d.ts +22 -0
  8. package/dist/lib/auth/index.d.ts.map +1 -0
  9. package/dist/lib/auth/index.js +73 -0
  10. package/dist/lib/auth/index.js.map +1 -0
  11. package/dist/lib/core/ADCPClient.d.ts +233 -0
  12. package/dist/lib/core/ADCPClient.d.ts.map +1 -0
  13. package/dist/lib/core/ADCPClient.js +287 -0
  14. package/dist/lib/core/ADCPClient.js.map +1 -0
  15. package/dist/lib/core/ADCPMultiAgentClient.d.ts +308 -0
  16. package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -0
  17. package/dist/lib/core/ADCPMultiAgentClient.js +468 -0
  18. package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -0
  19. package/dist/lib/core/AgentClient.d.ts +124 -0
  20. package/dist/lib/core/AgentClient.d.ts.map +1 -0
  21. package/dist/lib/core/AgentClient.js +242 -0
  22. package/dist/lib/core/AgentClient.js.map +1 -0
  23. package/dist/lib/core/ConfigurationManager.d.ts +79 -0
  24. package/dist/lib/core/ConfigurationManager.d.ts.map +1 -0
  25. package/dist/lib/core/ConfigurationManager.js +254 -0
  26. package/dist/lib/core/ConfigurationManager.js.map +1 -0
  27. package/dist/lib/core/ConversationTypes.d.ts +242 -0
  28. package/dist/lib/core/ConversationTypes.d.ts.map +1 -0
  29. package/dist/lib/core/ConversationTypes.js +5 -0
  30. package/dist/lib/core/ConversationTypes.js.map +1 -0
  31. package/dist/lib/core/ProtocolResponseParser.d.ts +45 -0
  32. package/dist/lib/core/ProtocolResponseParser.d.ts.map +1 -0
  33. package/dist/lib/core/ProtocolResponseParser.js +82 -0
  34. package/dist/lib/core/ProtocolResponseParser.js.map +1 -0
  35. package/dist/lib/core/TaskExecutor.d.ts +108 -0
  36. package/dist/lib/core/TaskExecutor.d.ts.map +1 -0
  37. package/dist/lib/core/TaskExecutor.js +422 -0
  38. package/dist/lib/core/TaskExecutor.js.map +1 -0
  39. package/dist/lib/errors/index.d.ts +125 -0
  40. package/dist/lib/errors/index.d.ts.map +1 -0
  41. package/dist/lib/errors/index.js +211 -0
  42. package/dist/lib/errors/index.js.map +1 -0
  43. package/dist/lib/handlers/types.d.ts +119 -0
  44. package/dist/lib/handlers/types.d.ts.map +1 -0
  45. package/dist/lib/handlers/types.js +239 -0
  46. package/dist/lib/handlers/types.js.map +1 -0
  47. package/dist/lib/index.d.ts +51 -0
  48. package/dist/lib/index.d.ts.map +1 -0
  49. package/dist/lib/index.js +122 -0
  50. package/dist/lib/index.js.map +1 -0
  51. package/dist/lib/protocols/a2a.d.ts +2 -0
  52. package/dist/lib/protocols/a2a.d.ts.map +1 -0
  53. package/dist/lib/protocols/a2a.js +70 -0
  54. package/dist/lib/protocols/a2a.js.map +1 -0
  55. package/dist/lib/protocols/index.d.ts +22 -0
  56. package/dist/lib/protocols/index.d.ts.map +1 -0
  57. package/dist/lib/protocols/index.js +47 -0
  58. package/dist/lib/protocols/index.js.map +1 -0
  59. package/dist/lib/protocols/mcp.d.ts +2 -0
  60. package/dist/lib/protocols/mcp.d.ts.map +1 -0
  61. package/dist/lib/protocols/mcp.js +127 -0
  62. package/dist/lib/protocols/mcp.js.map +1 -0
  63. package/dist/lib/storage/MemoryStorage.d.ts +93 -0
  64. package/dist/lib/storage/MemoryStorage.d.ts.map +1 -0
  65. package/dist/lib/storage/MemoryStorage.js +219 -0
  66. package/dist/lib/storage/MemoryStorage.js.map +1 -0
  67. package/dist/lib/storage/interfaces.d.ts +195 -0
  68. package/dist/lib/storage/interfaces.d.ts.map +1 -0
  69. package/dist/lib/storage/interfaces.js +5 -0
  70. package/dist/lib/storage/interfaces.js.map +1 -0
  71. package/dist/lib/types/adcp.d.ts +407 -0
  72. package/dist/lib/types/adcp.d.ts.map +1 -0
  73. package/dist/lib/types/adcp.js +5 -0
  74. package/dist/lib/types/adcp.js.map +1 -0
  75. package/dist/lib/types/core.generated.d.ts +469 -0
  76. package/dist/lib/types/core.generated.d.ts.map +1 -0
  77. package/dist/lib/types/core.generated.js +5 -0
  78. package/dist/lib/types/core.generated.js.map +1 -0
  79. package/dist/lib/types/index.d.ts +3 -0
  80. package/dist/lib/types/index.d.ts.map +1 -0
  81. package/dist/lib/types/index.js +19 -0
  82. package/dist/lib/types/index.js.map +1 -0
  83. package/dist/lib/types/tools.generated.d.ts +1674 -0
  84. package/dist/lib/types/tools.generated.d.ts.map +1 -0
  85. package/dist/lib/types/tools.generated.js +8 -0
  86. package/dist/lib/types/tools.generated.js.map +1 -0
  87. package/dist/lib/utils/index.d.ts +25 -0
  88. package/dist/lib/utils/index.d.ts.map +1 -0
  89. package/dist/lib/utils/index.js +109 -0
  90. package/dist/lib/utils/index.js.map +1 -0
  91. package/dist/lib/validation/index.d.ts +29 -0
  92. package/dist/lib/validation/index.d.ts.map +1 -0
  93. package/dist/lib/validation/index.js +186 -0
  94. package/dist/lib/validation/index.js.map +1 -0
  95. package/dist/lib/version.d.ts +22 -0
  96. package/dist/lib/version.d.ts.map +1 -0
  97. package/dist/lib/version.js +32 -0
  98. package/dist/lib/version.js.map +1 -0
  99. package/package.json +108 -0
@@ -0,0 +1,242 @@
1
+ /**
2
+ * Represents a single message in a conversation with an agent
3
+ */
4
+ export interface Message {
5
+ /** Unique identifier for this message */
6
+ id: string;
7
+ /** Role of the message sender */
8
+ role: 'user' | 'agent' | 'system';
9
+ /** Message content - can be structured or text */
10
+ content: any;
11
+ /** Timestamp when message was created */
12
+ timestamp: string;
13
+ /** Optional metadata about the message */
14
+ metadata?: {
15
+ /** Tool/task name if this message is tool-related */
16
+ toolName?: string;
17
+ /** Message type (request, response, clarification, etc.) */
18
+ type?: string;
19
+ /** Additional context data */
20
+ [key: string]: any;
21
+ };
22
+ }
23
+ /**
24
+ * Request for input from the agent - sent when clarification is needed
25
+ */
26
+ export interface InputRequest {
27
+ /** Human-readable question or prompt */
28
+ question: string;
29
+ /** Specific field being requested (if applicable) */
30
+ field?: string;
31
+ /** Expected type of response */
32
+ expectedType?: 'string' | 'number' | 'boolean' | 'object' | 'array';
33
+ /** Suggested values or options */
34
+ suggestions?: any[];
35
+ /** Whether this input is required */
36
+ required?: boolean;
37
+ /** Validation rules for the input */
38
+ validation?: {
39
+ min?: number;
40
+ max?: number;
41
+ pattern?: string;
42
+ enum?: any[];
43
+ };
44
+ /** Additional context about why this input is needed */
45
+ context?: string;
46
+ }
47
+ /**
48
+ * Different types of responses an input handler can provide
49
+ */
50
+ export type InputHandlerResponse = any | Promise<any> | {
51
+ defer: true;
52
+ token: string;
53
+ } | {
54
+ abort: true;
55
+ reason?: string;
56
+ } | never;
57
+ /**
58
+ * Function signature for input handlers
59
+ */
60
+ export type InputHandler = (context: ConversationContext) => InputHandlerResponse;
61
+ /**
62
+ * Complete conversation context provided to input handlers
63
+ */
64
+ export interface ConversationContext {
65
+ /** Full conversation history for this task */
66
+ messages: Message[];
67
+ /** Current input request from the agent */
68
+ inputRequest: InputRequest;
69
+ /** Unique task identifier */
70
+ taskId: string;
71
+ /** Agent configuration */
72
+ agent: {
73
+ id: string;
74
+ name: string;
75
+ protocol: 'mcp' | 'a2a';
76
+ };
77
+ /** Current clarification attempt number (1-based) */
78
+ attempt: number;
79
+ /** Maximum allowed clarification attempts */
80
+ maxAttempts: number;
81
+ /** Helper method to defer task to human */
82
+ deferToHuman(): Promise<{
83
+ defer: true;
84
+ token: string;
85
+ }>;
86
+ /** Helper method to abort the task */
87
+ abort(reason?: string): never;
88
+ /** Get conversation summary for context */
89
+ getSummary(): string;
90
+ /** Check if a field was previously discussed */
91
+ wasFieldDiscussed(field: string): boolean;
92
+ /** Get previous response for a field */
93
+ getPreviousResponse(field: string): any;
94
+ }
95
+ /**
96
+ * Status of a task execution
97
+ */
98
+ export type TaskStatus = 'pending' | 'running' | 'needs_input' | 'completed' | 'failed' | 'deferred' | 'aborted' | 'submitted';
99
+ /**
100
+ * Options for task execution
101
+ */
102
+ export interface TaskOptions {
103
+ /** Timeout for entire task (ms) */
104
+ timeout?: number;
105
+ /** Maximum clarification rounds before failing */
106
+ maxClarifications?: number;
107
+ /** Context ID to continue existing conversation */
108
+ contextId?: string;
109
+ /** Enable debug logging for this task */
110
+ debug?: boolean;
111
+ /** Additional metadata to include */
112
+ metadata?: Record<string, any>;
113
+ }
114
+ /**
115
+ * Internal task state for tracking execution
116
+ */
117
+ export interface TaskState {
118
+ /** Unique task identifier */
119
+ taskId: string;
120
+ /** Task name (tool name) */
121
+ taskName: string;
122
+ /** Original parameters */
123
+ params: any;
124
+ /** Current status */
125
+ status: TaskStatus;
126
+ /** Message history */
127
+ messages: Message[];
128
+ /** Current input request (if waiting for input) */
129
+ pendingInput?: InputRequest;
130
+ /** Start time */
131
+ startTime: number;
132
+ /** Current attempt number */
133
+ attempt: number;
134
+ /** Maximum attempts allowed */
135
+ maxAttempts: number;
136
+ /** Task options */
137
+ options: TaskOptions;
138
+ /** Agent configuration */
139
+ agent: {
140
+ id: string;
141
+ name: string;
142
+ protocol: 'mcp' | 'a2a';
143
+ };
144
+ }
145
+ /**
146
+ * Task tracking information from tasks/get endpoint (PR #78)
147
+ */
148
+ export interface TaskInfo {
149
+ /** Task ID */
150
+ taskId: string;
151
+ /** Current status */
152
+ status: string;
153
+ /** Task type/name */
154
+ taskType: string;
155
+ /** Creation timestamp */
156
+ createdAt: number;
157
+ /** Last update timestamp */
158
+ updatedAt: number;
159
+ /** Task result (if completed) */
160
+ result?: any;
161
+ /** Error message (if failed) */
162
+ error?: string;
163
+ /** Webhook URL (if applicable) */
164
+ webhookUrl?: string;
165
+ }
166
+ /**
167
+ * Continuation for deferred client tasks (client needs time)
168
+ */
169
+ export interface DeferredContinuation<T> {
170
+ /** Token for resuming the task */
171
+ token: string;
172
+ /** Question that triggered the deferral */
173
+ question?: string;
174
+ /** Resume the task with user input */
175
+ resume: (input: any) => Promise<TaskResult<T>>;
176
+ }
177
+ /**
178
+ * Continuation for submitted server tasks (server needs time)
179
+ */
180
+ export interface SubmittedContinuation<T> {
181
+ /** Task ID for tracking */
182
+ taskId: string;
183
+ /** Webhook URL where server will notify completion */
184
+ webhookUrl?: string;
185
+ /** Get current task status */
186
+ track: () => Promise<TaskInfo>;
187
+ /** Wait for completion with polling */
188
+ waitForCompletion: (pollInterval?: number) => Promise<TaskResult<T>>;
189
+ }
190
+ /**
191
+ * Result of a task execution
192
+ */
193
+ export interface TaskResult<T = any> {
194
+ /** Whether the task completed successfully */
195
+ success: boolean;
196
+ /** Task execution status */
197
+ status: 'completed' | 'deferred' | 'submitted';
198
+ /** Task result data (if successful) */
199
+ data?: T;
200
+ /** Error message (if failed) */
201
+ error?: string;
202
+ /** Deferred continuation (client needs time for input) */
203
+ deferred?: DeferredContinuation<T>;
204
+ /** Submitted continuation (server needs time for processing) */
205
+ submitted?: SubmittedContinuation<T>;
206
+ /** Task execution metadata */
207
+ metadata: {
208
+ taskId: string;
209
+ taskName: string;
210
+ agent: {
211
+ id: string;
212
+ name: string;
213
+ protocol: 'mcp' | 'a2a';
214
+ };
215
+ /** Total execution time in milliseconds */
216
+ responseTimeMs: number;
217
+ /** ISO timestamp of completion */
218
+ timestamp: string;
219
+ /** Number of clarification rounds */
220
+ clarificationRounds: number;
221
+ /** Final status */
222
+ status: TaskStatus;
223
+ };
224
+ /** Full conversation history */
225
+ conversation?: Message[];
226
+ /** Debug logs (if debug enabled) */
227
+ debugLogs?: any[];
228
+ }
229
+ /**
230
+ * Configuration for conversation management
231
+ */
232
+ export interface ConversationConfig {
233
+ /** Maximum messages to keep in history */
234
+ maxHistorySize?: number;
235
+ /** Whether to persist conversations */
236
+ persistConversations?: boolean;
237
+ /** Timeout for 'working' status (max 120s per PR #78) */
238
+ workingTimeout?: number;
239
+ /** Default max clarifications */
240
+ defaultMaxClarifications?: number;
241
+ }
242
+ //# sourceMappingURL=ConversationTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationTypes.d.ts","sourceRoot":"","sources":["../../../src/lib/core/ConversationTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // Core conversation types for ADCP client library
3
+ // These types support the conversation and clarification pattern
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=ConversationTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationTypes.js","sourceRoot":"","sources":["../../../src/lib/core/ConversationTypes.ts"],"names":[],"mappings":";AAAA,kDAAkD;AAClD,iEAAiE"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Simple ADCP-compliant response parser
3
+ * Implements ADCP spec PR #77 for standardized status field
4
+ */
5
+ import type { InputRequest } from './ConversationTypes';
6
+ /**
7
+ * ADCP standardized status values as per spec PR #78
8
+ * Clear semantics for async task management:
9
+ * - submitted: Long-running tasks (hours to days) - webhook required
10
+ * - working: Processing tasks (<120 seconds) - keep connection open
11
+ * - input-required: Tasks needing user interaction via handler
12
+ * - completed: Successful task completion
13
+ */
14
+ export declare const ADCP_STATUS: {
15
+ readonly SUBMITTED: "submitted";
16
+ readonly WORKING: "working";
17
+ readonly INPUT_REQUIRED: "input-required";
18
+ readonly COMPLETED: "completed";
19
+ readonly FAILED: "failed";
20
+ readonly CANCELED: "canceled";
21
+ readonly REJECTED: "rejected";
22
+ readonly AUTH_REQUIRED: "auth-required";
23
+ readonly UNKNOWN: "unknown";
24
+ };
25
+ export type ADCPStatus = typeof ADCP_STATUS[keyof typeof ADCP_STATUS];
26
+ /**
27
+ * Simple parser that follows ADCP spec exactly
28
+ */
29
+ export declare class ProtocolResponseParser {
30
+ /**
31
+ * Check if response indicates input is needed per ADCP spec
32
+ */
33
+ isInputRequest(response: any): boolean;
34
+ /**
35
+ * Parse input request from response
36
+ */
37
+ parseInputRequest(response: any): InputRequest;
38
+ /**
39
+ * Get ADCP status from response
40
+ */
41
+ getStatus(response: any): ADCPStatus | null;
42
+ private parseExpectedType;
43
+ }
44
+ export declare const responseParser: ProtocolResponseParser;
45
+ //# sourceMappingURL=ProtocolResponseParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtocolResponseParser.d.ts","sourceRoot":"","sources":["../../../src/lib/core/ProtocolResponseParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;CAUd,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,WAAW,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEtE;;GAEG;AACH,qBAAa,sBAAsB;IACjC;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO;IAetC;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,GAAG,GAAG,YAAY;IAgB9C;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,GAAG,GAAG,UAAU,GAAG,IAAI;IAO3C,OAAO,CAAC,iBAAiB;CAO1B;AAGD,eAAO,MAAM,cAAc,wBAA+B,CAAC"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ /**
3
+ * Simple ADCP-compliant response parser
4
+ * Implements ADCP spec PR #77 for standardized status field
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.responseParser = exports.ProtocolResponseParser = exports.ADCP_STATUS = void 0;
8
+ /**
9
+ * ADCP standardized status values as per spec PR #78
10
+ * Clear semantics for async task management:
11
+ * - submitted: Long-running tasks (hours to days) - webhook required
12
+ * - working: Processing tasks (<120 seconds) - keep connection open
13
+ * - input-required: Tasks needing user interaction via handler
14
+ * - completed: Successful task completion
15
+ */
16
+ exports.ADCP_STATUS = {
17
+ SUBMITTED: 'submitted', // Long-running (hours/days) - webhook required
18
+ WORKING: 'working', // Processing (<120s) - keep connection open
19
+ INPUT_REQUIRED: 'input-required', // Needs user input via handler
20
+ COMPLETED: 'completed', // Task completed successfully
21
+ FAILED: 'failed', // Task failed
22
+ CANCELED: 'canceled', // Task was canceled
23
+ REJECTED: 'rejected', // Task was rejected
24
+ AUTH_REQUIRED: 'auth-required', // Authentication required
25
+ UNKNOWN: 'unknown' // Unknown status
26
+ };
27
+ /**
28
+ * Simple parser that follows ADCP spec exactly
29
+ */
30
+ class ProtocolResponseParser {
31
+ /**
32
+ * Check if response indicates input is needed per ADCP spec
33
+ */
34
+ isInputRequest(response) {
35
+ // ADCP spec: check status field first
36
+ if (response?.status === exports.ADCP_STATUS.INPUT_REQUIRED) {
37
+ return true;
38
+ }
39
+ // Legacy fallback for backward compatibility
40
+ return (response?.type === 'input_request' ||
41
+ response?.question !== undefined ||
42
+ response?.input_required === true ||
43
+ response?.needs_clarification === true);
44
+ }
45
+ /**
46
+ * Parse input request from response
47
+ */
48
+ parseInputRequest(response) {
49
+ const question = response.message || response.question || response.prompt || 'Please provide input';
50
+ const field = response.field || response.parameter;
51
+ const suggestions = response.options || response.choices || response.suggestions;
52
+ return {
53
+ question,
54
+ field,
55
+ expectedType: this.parseExpectedType(response.expected_type || response.type),
56
+ suggestions,
57
+ required: response.required !== false,
58
+ validation: response.validation,
59
+ context: response.context || response.description
60
+ };
61
+ }
62
+ /**
63
+ * Get ADCP status from response
64
+ */
65
+ getStatus(response) {
66
+ if (response?.status && Object.values(exports.ADCP_STATUS).includes(response.status)) {
67
+ return response.status;
68
+ }
69
+ return null;
70
+ }
71
+ parseExpectedType(rawType) {
72
+ if (typeof rawType === 'string') {
73
+ const allowedTypes = ["string", "number", "boolean", "object", "array"];
74
+ return allowedTypes.includes(rawType) ? rawType : undefined;
75
+ }
76
+ return undefined;
77
+ }
78
+ }
79
+ exports.ProtocolResponseParser = ProtocolResponseParser;
80
+ // Export singleton instance
81
+ exports.responseParser = new ProtocolResponseParser();
82
+ //# sourceMappingURL=ProtocolResponseParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtocolResponseParser.js","sourceRoot":"","sources":["../../../src/lib/core/ProtocolResponseParser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIH;;;;;;;GAOG;AACU,QAAA,WAAW,GAAG;IACzB,SAAS,EAAE,WAAW,EAAO,+CAA+C;IAC5E,OAAO,EAAE,SAAS,EAAW,8CAA8C;IAC3E,cAAc,EAAE,gBAAgB,EAAG,+BAA+B;IAClE,SAAS,EAAE,WAAW,EAAO,8BAA8B;IAC3D,MAAM,EAAE,QAAQ,EAAY,cAAc;IAC1C,QAAQ,EAAE,UAAU,EAAQ,oBAAoB;IAChD,QAAQ,EAAE,UAAU,EAAQ,oBAAoB;IAChD,aAAa,EAAE,eAAe,EAAG,0BAA0B;IAC3D,OAAO,EAAE,SAAS,CAAU,iBAAiB;CACrC,CAAC;AAIX;;GAEG;AACH,MAAa,sBAAsB;IACjC;;OAEG;IACH,cAAc,CAAC,QAAa;QAC1B,sCAAsC;QACtC,IAAI,QAAQ,EAAE,MAAM,KAAK,mBAAW,CAAC,cAAc,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,6CAA6C;QAC7C,OAAO,CACL,QAAQ,EAAE,IAAI,KAAK,eAAe;YAClC,QAAQ,EAAE,QAAQ,KAAK,SAAS;YAChC,QAAQ,EAAE,cAAc,KAAK,IAAI;YACjC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CACvC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,QAAa;QAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,sBAAsB,CAAC;QACpG,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,SAAS,CAAC;QACnD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,WAAW,CAAC;QAEjF,OAAO;YACL,QAAQ;YACR,KAAK;YACL,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,IAAI,CAAC;YAC7E,WAAW;YACX,QAAQ,EAAE,QAAQ,CAAC,QAAQ,KAAK,KAAK;YACrC,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,WAAW;SAClD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAa;QACrB,IAAI,QAAQ,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7E,OAAO,QAAQ,CAAC,MAAoB,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,iBAAiB,CAAC,OAAY;QACpC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACxE,OAAO,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAvDD,wDAuDC;AAED,4BAA4B;AACf,QAAA,cAAc,GAAG,IAAI,sBAAsB,EAAE,CAAC"}
@@ -0,0 +1,108 @@
1
+ import type { AgentConfig } from '../types';
2
+ import type { Storage } from '../storage/interfaces';
3
+ import type { Message, InputHandler, TaskOptions, TaskResult, TaskState, TaskInfo } from './ConversationTypes';
4
+ /**
5
+ * Custom errors for task execution
6
+ */
7
+ export declare class TaskTimeoutError extends Error {
8
+ constructor(taskId: string, timeout: number);
9
+ }
10
+ export declare class MaxClarificationError extends Error {
11
+ constructor(taskId: string, maxAttempts: number);
12
+ }
13
+ export declare class DeferredTaskError extends Error {
14
+ token: string;
15
+ constructor(token: string);
16
+ }
17
+ export declare class InputRequiredError extends Error {
18
+ constructor(question: string);
19
+ }
20
+ /**
21
+ * Webhook manager for submitted tasks
22
+ */
23
+ interface WebhookManager {
24
+ generateUrl(taskId: string): string;
25
+ registerWebhook(agent: AgentConfig, taskId: string, webhookUrl: string): Promise<void>;
26
+ processWebhook(token: string, body: any): Promise<void>;
27
+ }
28
+ /**
29
+ * Deferred task storage for client deferrals
30
+ */
31
+ interface DeferredTaskState {
32
+ taskId: string;
33
+ contextId: string;
34
+ agent: AgentConfig;
35
+ taskName: string;
36
+ params: any;
37
+ messages: Message[];
38
+ createdAt: number;
39
+ }
40
+ /**
41
+ * Core task execution engine that handles the conversation loop with agents
42
+ */
43
+ export declare class TaskExecutor {
44
+ private config;
45
+ private responseParser;
46
+ private activeTasks;
47
+ private conversationStorage?;
48
+ constructor(config?: {
49
+ /** Default timeout for 'working' status (max 120s per PR #78) */
50
+ workingTimeout?: number;
51
+ /** Default max clarification attempts */
52
+ defaultMaxClarifications?: number;
53
+ /** Enable conversation storage */
54
+ enableConversationStorage?: boolean;
55
+ /** Webhook manager for submitted tasks */
56
+ webhookManager?: WebhookManager;
57
+ /** Storage for deferred task state */
58
+ deferredStorage?: Storage<DeferredTaskState>;
59
+ });
60
+ /**
61
+ * Execute a task with an agent using PR #78 async patterns
62
+ * Handles: working (keep SSE open), submitted (webhook), input-required (handler), completed
63
+ */
64
+ executeTask<T = any>(agent: AgentConfig, taskName: string, params: any, inputHandler?: InputHandler, options?: TaskOptions): Promise<TaskResult<T>>;
65
+ /**
66
+ * Handle agent response based on ADCP status (PR #78)
67
+ */
68
+ private handleAsyncResponse;
69
+ /**
70
+ * Wait for 'working' status completion (max 120s per PR #78)
71
+ */
72
+ private waitForWorkingCompletion;
73
+ /**
74
+ * Set up submitted task with webhook
75
+ */
76
+ private setupSubmittedTask;
77
+ /**
78
+ * Handle input-required status (handler mandatory)
79
+ */
80
+ private handleInputRequired;
81
+ /**
82
+ * Task tracking methods (PR #78)
83
+ */
84
+ listTasks(agent: AgentConfig): Promise<TaskInfo[]>;
85
+ getTaskStatus(agent: AgentConfig, taskId: string): Promise<TaskInfo>;
86
+ pollTaskCompletion<T>(agent: AgentConfig, taskId: string, pollInterval?: number): Promise<TaskResult<T>>;
87
+ /**
88
+ * Resume a deferred task (client deferral)
89
+ */
90
+ resumeDeferredTask<T>(token: string, input: any): Promise<TaskResult<T>>;
91
+ /**
92
+ * Continue a task after receiving input
93
+ */
94
+ private continueTaskWithInput;
95
+ /**
96
+ * Utility methods
97
+ */
98
+ private sleep;
99
+ private createErrorResult;
100
+ /**
101
+ * Legacy methods for backward compatibility
102
+ */
103
+ getConversationHistory(taskId: string): Message[] | undefined;
104
+ clearConversationHistory(taskId: string): void;
105
+ getActiveTasks(): TaskState[];
106
+ }
107
+ export {};
108
+ //# sourceMappingURL=TaskExecutor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskExecutor.d.ts","sourceRoot":"","sources":["../../../src/lib/core/TaskExecutor.ts"],"names":[],"mappings":"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"}