@adcp/client 0.3.0 → 0.4.1

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.
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Structured async handler for AdCP webhook responses
3
+ * Provides type-safe callbacks for each AdCP tool completion
4
+ */
5
+ import type { GetProductsResponse, ListCreativeFormatsResponse, CreateMediaBuyResponse, UpdateMediaBuyResponse, SyncCreativesResponse, ListCreativesResponse, GetMediaBuyDeliveryResponse, ListAuthorizedPropertiesResponse, ProvidePerformanceFeedbackResponse, GetSignalsResponse, ActivateSignalResponse } from '../types/tools.generated';
6
+ /**
7
+ * Metadata provided with webhook responses
8
+ */
9
+ export interface WebhookMetadata {
10
+ /** Client-provided operation ID */
11
+ operation_id: string;
12
+ /** Server's context ID */
13
+ context_id?: string;
14
+ /** Server's task ID */
15
+ task_id?: string;
16
+ /** Agent ID */
17
+ agent_id: string;
18
+ /** Task type/tool name */
19
+ task_type: string;
20
+ /** Task status (completed, failed, needs_input, working, etc) */
21
+ status?: string;
22
+ /** Error message if status is failed */
23
+ error?: string;
24
+ /** Timestamp */
25
+ timestamp: string;
26
+ }
27
+ /**
28
+ * Metadata for agent-initiated notifications
29
+ * Same as WebhookMetadata but includes notification-specific fields
30
+ */
31
+ export interface NotificationMetadata extends WebhookMetadata {
32
+ /** Notification type */
33
+ notification_type: 'scheduled' | 'final' | 'delayed';
34
+ /** Sequence number of this notification */
35
+ sequence_number?: number;
36
+ /** When next notification is expected (not present for 'final') */
37
+ next_expected_at?: string;
38
+ }
39
+ /**
40
+ * Media buy delivery notification payload (PR #81)
41
+ * Agent-initiated periodic reporting, not tied to any client operation
42
+ */
43
+ export interface MediaBuyDeliveryNotification {
44
+ /** Type of notification */
45
+ notification_type: 'scheduled' | 'final' | 'delayed';
46
+ /** Sequential notification number (starts at 1) */
47
+ sequence_number?: number;
48
+ /** When next notification is expected (omitted for 'final') */
49
+ next_expected_at?: string;
50
+ /** Reporting period for this notification */
51
+ reporting_period?: {
52
+ start: string;
53
+ end: string;
54
+ };
55
+ /** Currency used for financial metrics */
56
+ currency?: string;
57
+ /** Array of media buy deliveries being reported */
58
+ media_buy_deliveries?: Array<{
59
+ media_buy_id: string;
60
+ impressions?: number;
61
+ clicks?: number;
62
+ spend?: number;
63
+ conversions?: number;
64
+ [key: string]: any;
65
+ }>;
66
+ }
67
+ /**
68
+ * Activity event for logging/observability
69
+ */
70
+ export interface Activity {
71
+ type: 'protocol_request' | 'protocol_response' | 'status_change' | 'webhook_received';
72
+ operation_id: string;
73
+ agent_id: string;
74
+ context_id?: string;
75
+ task_id?: string;
76
+ task_type: string;
77
+ status?: string;
78
+ payload?: any;
79
+ timestamp: string;
80
+ }
81
+ /**
82
+ * Configuration for async handler with typed callbacks
83
+ */
84
+ export interface AsyncHandlerConfig {
85
+ onGetProductsStatusChange?: (response: GetProductsResponse, metadata: WebhookMetadata) => void | Promise<void>;
86
+ onListCreativeFormatsStatusChange?: (response: ListCreativeFormatsResponse, metadata: WebhookMetadata) => void | Promise<void>;
87
+ onCreateMediaBuyStatusChange?: (response: CreateMediaBuyResponse, metadata: WebhookMetadata) => void | Promise<void>;
88
+ onUpdateMediaBuyStatusChange?: (response: UpdateMediaBuyResponse, metadata: WebhookMetadata) => void | Promise<void>;
89
+ onSyncCreativesStatusChange?: (response: SyncCreativesResponse, metadata: WebhookMetadata) => void | Promise<void>;
90
+ onListCreativesStatusChange?: (response: ListCreativesResponse, metadata: WebhookMetadata) => void | Promise<void>;
91
+ onGetMediaBuyDeliveryStatusChange?: (response: GetMediaBuyDeliveryResponse, metadata: WebhookMetadata) => void | Promise<void>;
92
+ onListAuthorizedPropertiesStatusChange?: (response: ListAuthorizedPropertiesResponse, metadata: WebhookMetadata) => void | Promise<void>;
93
+ onProvidePerformanceFeedbackStatusChange?: (response: ProvidePerformanceFeedbackResponse, metadata: WebhookMetadata) => void | Promise<void>;
94
+ onGetSignalsStatusChange?: (response: GetSignalsResponse, metadata: WebhookMetadata) => void | Promise<void>;
95
+ onActivateSignalStatusChange?: (response: ActivateSignalResponse, metadata: WebhookMetadata) => void | Promise<void>;
96
+ onTaskStatusChange?: (response: any, metadata: WebhookMetadata) => void | Promise<void>;
97
+ onActivity?: (activity: Activity) => void | Promise<void>;
98
+ onMediaBuyDeliveryNotification?: (notification: MediaBuyDeliveryNotification, metadata: NotificationMetadata) => void | Promise<void>;
99
+ }
100
+ /**
101
+ * Webhook payload structure
102
+ */
103
+ export interface WebhookPayload {
104
+ operation_id: string;
105
+ context_id?: string;
106
+ task_id?: string;
107
+ task_type: string;
108
+ status: string;
109
+ result?: any;
110
+ error?: string;
111
+ message?: string;
112
+ timestamp?: string;
113
+ }
114
+ /**
115
+ * Async handler class
116
+ */
117
+ export declare class AsyncHandler {
118
+ private config;
119
+ constructor(config: AsyncHandlerConfig);
120
+ /**
121
+ * Handle incoming webhook payload (both task completions and notifications)
122
+ */
123
+ handleWebhook(payload: WebhookPayload, agentId?: string): Promise<void>;
124
+ /**
125
+ * Handle task completion - route to specific handler
126
+ */
127
+ private handleCompletion;
128
+ /**
129
+ * Emit activity event
130
+ */
131
+ private emitActivity;
132
+ }
133
+ /**
134
+ * Factory function to create async handler
135
+ */
136
+ export declare function createAsyncHandler(config: AsyncHandlerConfig): AsyncHandler;
137
+ //# sourceMappingURL=AsyncHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncHandler.d.ts","sourceRoot":"","sources":["../../../src/lib/core/AsyncHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ /**
3
+ * Structured async handler for AdCP webhook responses
4
+ * Provides type-safe callbacks for each AdCP tool completion
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AsyncHandler = void 0;
8
+ exports.createAsyncHandler = createAsyncHandler;
9
+ /**
10
+ * Async handler class
11
+ */
12
+ class AsyncHandler {
13
+ config;
14
+ constructor(config) {
15
+ this.config = config;
16
+ }
17
+ /**
18
+ * Handle incoming webhook payload (both task completions and notifications)
19
+ */
20
+ async handleWebhook(payload, agentId) {
21
+ const metadata = {
22
+ operation_id: payload.operation_id,
23
+ context_id: payload.context_id,
24
+ task_id: payload.task_id,
25
+ agent_id: agentId || 'unknown',
26
+ task_type: payload.task_type,
27
+ status: payload.status,
28
+ error: payload.error,
29
+ timestamp: payload.timestamp || new Date().toISOString()
30
+ };
31
+ // Emit activity
32
+ await this.emitActivity({
33
+ type: 'webhook_received',
34
+ operation_id: metadata.operation_id,
35
+ agent_id: metadata.agent_id,
36
+ context_id: metadata.context_id,
37
+ task_id: metadata.task_id,
38
+ task_type: metadata.task_type,
39
+ status: payload.status,
40
+ payload: payload.result,
41
+ timestamp: metadata.timestamp
42
+ });
43
+ // Check if this is a notification (media_buy_delivery with notification_type)
44
+ // Notifications are treated like status updates for an ongoing "get delivery report" operation
45
+ // The operation_id (from URL) groups all reports for the same agent + month
46
+ if (payload.task_type === 'media_buy_delivery' &&
47
+ payload.result &&
48
+ typeof payload.result === 'object' &&
49
+ 'notification_type' in payload.result) {
50
+ const notificationPayload = payload.result;
51
+ // Build notification metadata
52
+ // operation_id comes from webhook URL and was lazily generated from agent + month
53
+ const notificationMetadata = {
54
+ ...metadata,
55
+ notification_type: notificationPayload.notification_type,
56
+ sequence_number: notificationPayload.sequence_number,
57
+ next_expected_at: notificationPayload.next_expected_at
58
+ };
59
+ await this.config.onMediaBuyDeliveryNotification?.(notificationPayload, notificationMetadata);
60
+ return;
61
+ }
62
+ // All status changes go through the specific handler
63
+ // The handler receives metadata with status and can act accordingly
64
+ await this.handleCompletion(payload.task_type, payload.result, metadata);
65
+ }
66
+ /**
67
+ * Handle task completion - route to specific handler
68
+ */
69
+ async handleCompletion(taskType, result, metadata) {
70
+ let handler;
71
+ // Route to specific handler based on task type
72
+ switch (taskType) {
73
+ case 'get_products':
74
+ handler = this.config.onGetProductsStatusChange;
75
+ break;
76
+ case 'list_creative_formats':
77
+ handler = this.config.onListCreativeFormatsStatusChange;
78
+ break;
79
+ case 'create_media_buy':
80
+ handler = this.config.onCreateMediaBuyStatusChange;
81
+ break;
82
+ case 'update_media_buy':
83
+ handler = this.config.onUpdateMediaBuyStatusChange;
84
+ break;
85
+ case 'sync_creatives':
86
+ handler = this.config.onSyncCreativesStatusChange;
87
+ break;
88
+ case 'list_creatives':
89
+ handler = this.config.onListCreativesStatusChange;
90
+ break;
91
+ case 'get_media_buy_delivery':
92
+ handler = this.config.onGetMediaBuyDeliveryStatusChange;
93
+ break;
94
+ case 'list_authorized_properties':
95
+ handler = this.config.onListAuthorizedPropertiesStatusChange;
96
+ break;
97
+ case 'provide_performance_feedback':
98
+ handler = this.config.onProvidePerformanceFeedbackStatusChange;
99
+ break;
100
+ case 'get_signals':
101
+ handler = this.config.onGetSignalsStatusChange;
102
+ break;
103
+ case 'activate_signal':
104
+ handler = this.config.onActivateSignalStatusChange;
105
+ break;
106
+ }
107
+ // Call specific handler if configured, otherwise fallback to generic handler
108
+ const handlerToCall = handler || this.config.onTaskStatusChange;
109
+ if (handlerToCall) {
110
+ try {
111
+ await handlerToCall(result, metadata);
112
+ }
113
+ catch (error) {
114
+ // Log error but don't crash webhook processing
115
+ console.error(`Error in handler for task ${taskType}:`, error);
116
+ }
117
+ }
118
+ }
119
+ /**
120
+ * Emit activity event
121
+ */
122
+ async emitActivity(activity) {
123
+ await this.config.onActivity?.(activity);
124
+ }
125
+ }
126
+ exports.AsyncHandler = AsyncHandler;
127
+ /**
128
+ * Factory function to create async handler
129
+ */
130
+ function createAsyncHandler(config) {
131
+ return new AsyncHandler(config);
132
+ }
133
+ //# sourceMappingURL=AsyncHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncHandler.js","sourceRoot":"","sources":["../../../src/lib/core/AsyncHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Unified event types for task execution tracking
3
+ * All events are emitted with operation_id for grouping multi-agent operations
4
+ */
5
+ /**
6
+ * Base event structure - all events share these fields
7
+ *
8
+ * Key identifiers:
9
+ * - operationId + agentId = YOUR unique identifier for this work
10
+ * - contextId = server's conversation identifier (server creates this)
11
+ * - taskId = server's work identifier (server creates this, only for async)
12
+ */
13
+ export interface BaseTaskEvent {
14
+ /** Client-generated operation ID - groups related work across multiple agents */
15
+ operationId: string;
16
+ /** Agent ID - which agent is handling this */
17
+ agentId: string;
18
+ /** Context ID from server - created by agent on first response */
19
+ contextId?: string;
20
+ /** Task ID from server - only present for async operations */
21
+ taskId?: string;
22
+ /** Task/tool name */
23
+ taskType: string;
24
+ /** Event timestamp */
25
+ timestamp: string;
26
+ }
27
+ /**
28
+ * Protocol request event - emitted when request is sent
29
+ */
30
+ export interface ProtocolRequestEvent extends BaseTaskEvent {
31
+ eventType: 'protocol_request';
32
+ protocol: 'a2a' | 'mcp';
33
+ method: string;
34
+ payload: {
35
+ params: Record<string, any>;
36
+ headers?: Record<string, string>;
37
+ };
38
+ }
39
+ /**
40
+ * Protocol response event - emitted when response is received
41
+ */
42
+ export interface ProtocolResponseEvent extends BaseTaskEvent {
43
+ eventType: 'protocol_response';
44
+ protocol: 'a2a' | 'mcp';
45
+ method: string;
46
+ payload: any;
47
+ /** Response status from server */
48
+ status: string;
49
+ }
50
+ /**
51
+ * Task status update event - emitted on status changes
52
+ */
53
+ export interface TaskStatusEvent extends BaseTaskEvent {
54
+ eventType: 'status_update';
55
+ /** New status */
56
+ status: 'submitted' | 'working' | 'input-required' | 'completed' | 'failed' | 'rejected' | 'canceled';
57
+ /** Previous status (if applicable) */
58
+ previousStatus?: string;
59
+ /** Result data (for completed) */
60
+ result?: any;
61
+ /** Error details (for failed) */
62
+ error?: string;
63
+ }
64
+ /**
65
+ * Object tracking event - for tracking individual objects (creatives, products, etc)
66
+ */
67
+ export interface ObjectEvent {
68
+ /** Client-generated operation ID */
69
+ operationId: string;
70
+ /** Agent ID */
71
+ agentId: string;
72
+ /** Context ID from server (if applicable) */
73
+ contextId?: string;
74
+ /** Task ID from server (if applicable) */
75
+ taskId?: string;
76
+ /** Type of object */
77
+ objectType: 'product' | 'creative' | 'media_buy' | 'signal' | string;
78
+ /** Object identifier */
79
+ objectId?: string;
80
+ /** Target entity (agent ID, platform, etc) */
81
+ targetEntity: string;
82
+ /** Object status */
83
+ status: string;
84
+ /** Object payload/data */
85
+ payload?: any;
86
+ /** Event timestamp */
87
+ timestamp: string;
88
+ }
89
+ /**
90
+ * Union type of all task events
91
+ */
92
+ export type TaskEvent = ProtocolRequestEvent | ProtocolResponseEvent | TaskStatusEvent;
93
+ /**
94
+ * Webhook-compatible task status event
95
+ * This is what you'd receive from a webhook AND from the event emitter
96
+ * Covers ALL status changes (submitted, working, completed, etc)
97
+ *
98
+ * Identifiers:
99
+ * - operationId + agentId = YOUR unique key for this work
100
+ * - contextId = server gave you this (store it for reconciliation)
101
+ * - taskId = server gave you this (store it for async tracking)
102
+ */
103
+ export interface TaskStatusUpdateEvent {
104
+ /** Client-generated operation ID */
105
+ operationId: string;
106
+ /** Agent ID */
107
+ agentId: string;
108
+ /** Context ID from server (server creates this on first response) */
109
+ contextId?: string;
110
+ /** Task ID from server (only for async operations) */
111
+ taskId?: string;
112
+ /** Task type/tool name */
113
+ taskType: string;
114
+ /** Current status */
115
+ status: 'submitted' | 'working' | 'input-required' | 'completed' | 'failed' | 'rejected' | 'canceled';
116
+ /** Previous status (for tracking transitions) */
117
+ previousStatus?: string;
118
+ /** Result data (if completed) */
119
+ result?: any;
120
+ /** Error message (if failed) */
121
+ error?: string;
122
+ /** Message from server (for working/input-required states) */
123
+ message?: string;
124
+ /** Question for user (if input-required) */
125
+ question?: string;
126
+ /** Expected input type (if input-required) */
127
+ expectedInput?: {
128
+ field?: string;
129
+ type?: string;
130
+ suggestions?: any[];
131
+ };
132
+ /** Webhook URL (if registered) */
133
+ webhookUrl?: string;
134
+ /** Timestamp */
135
+ timestamp: string;
136
+ }
137
+ /**
138
+ * Webhook-compatible task completion event (convenience type for completed/failed)
139
+ * @deprecated Use TaskStatusUpdateEvent instead
140
+ */
141
+ export type TaskCompletionEvent = TaskStatusUpdateEvent & {
142
+ status: 'completed' | 'failed' | 'rejected' | 'canceled';
143
+ };
144
+ /**
145
+ * Event listener callback signatures
146
+ * For OBSERVABILITY only - not for control flow!
147
+ * Use these to log, record, or update UI - NOT to handle responses
148
+ */
149
+ export interface TaskEventCallbacks {
150
+ /**
151
+ * Called for protocol requests (when request is sent to agent)
152
+ * Use for: logging, UI updates, recording to database
153
+ */
154
+ onProtocolRequest?: (event: ProtocolRequestEvent) => void;
155
+ /**
156
+ * Called for protocol responses (when response received from agent)
157
+ * Use for: logging, UI updates, recording to database
158
+ */
159
+ onProtocolResponse?: (event: ProtocolResponseEvent) => void;
160
+ /**
161
+ * Called for ALL status changes (submitted, working, completed, etc)
162
+ * Use for: progress tracking, UI updates, event recording
163
+ * NOTE: This fires during synchronous execution - don't block!
164
+ */
165
+ onStatusChange?: (event: TaskStatusUpdateEvent) => void;
166
+ /**
167
+ * Called for object events (products received, creatives synced, etc)
168
+ * Use for: tracking granular object status
169
+ */
170
+ onObjectEvent?: (event: ObjectEvent) => void;
171
+ }
172
+ /**
173
+ * Helper to create operation ID
174
+ * Used to group related work across multiple agents
175
+ * Example: "Sync 5 creatives to 3 agents" = 1 operation ID
176
+ */
177
+ export declare function createOperationId(): string;
178
+ /**
179
+ * Server identifier tracking (DEPRECATED - use webhook URL path instead)
180
+ *
181
+ * Previously needed to map server IDs back to operation_id.
182
+ * Now superseded by encoding operation_id in webhook URL:
183
+ * /webhook/{agent_id}/{operation_id}
184
+ *
185
+ * @deprecated Use webhook URL path parameters instead
186
+ */
187
+ export declare class ServerIdentifierMapper {
188
+ private contextToKey;
189
+ private taskToKey;
190
+ /**
191
+ * Register server identifiers when you get them from first response
192
+ */
193
+ register(operationId: string, agentId: string, contextId?: string, taskId?: string): void;
194
+ /**
195
+ * Look up your operation+agent from webhook context_id
196
+ */
197
+ lookupByContext(contextId: string): {
198
+ operationId: string;
199
+ agentId: string;
200
+ } | undefined;
201
+ /**
202
+ * Look up your operation+agent from webhook task_id
203
+ */
204
+ lookupByTask(taskId: string): {
205
+ operationId: string;
206
+ agentId: string;
207
+ } | undefined;
208
+ /**
209
+ * Clean up completed operation
210
+ */
211
+ remove(operationId: string, agentId: string): void;
212
+ /**
213
+ * Get statistics
214
+ */
215
+ getStats(): {
216
+ totalContexts: number;
217
+ totalTasks: number;
218
+ };
219
+ }
220
+ //# sourceMappingURL=TaskEventTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskEventTypes.d.ts","sourceRoot":"","sources":["../../../src/lib/core/TaskEventTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ /**
3
+ * Unified event types for task execution tracking
4
+ * All events are emitted with operation_id for grouping multi-agent operations
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ServerIdentifierMapper = void 0;
8
+ exports.createOperationId = createOperationId;
9
+ /**
10
+ * Helper to create operation ID
11
+ * Used to group related work across multiple agents
12
+ * Example: "Sync 5 creatives to 3 agents" = 1 operation ID
13
+ */
14
+ function createOperationId() {
15
+ return `op_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
16
+ }
17
+ /**
18
+ * Server identifier tracking (DEPRECATED - use webhook URL path instead)
19
+ *
20
+ * Previously needed to map server IDs back to operation_id.
21
+ * Now superseded by encoding operation_id in webhook URL:
22
+ * /webhook/{agent_id}/{operation_id}
23
+ *
24
+ * @deprecated Use webhook URL path parameters instead
25
+ */
26
+ class ServerIdentifierMapper {
27
+ contextToKey = new Map();
28
+ taskToKey = new Map();
29
+ /**
30
+ * Register server identifiers when you get them from first response
31
+ */
32
+ register(operationId, agentId, contextId, taskId) {
33
+ const key = { operationId, agentId };
34
+ if (contextId) {
35
+ this.contextToKey.set(contextId, key);
36
+ }
37
+ if (taskId) {
38
+ this.taskToKey.set(taskId, key);
39
+ }
40
+ }
41
+ /**
42
+ * Look up your operation+agent from webhook context_id
43
+ */
44
+ lookupByContext(contextId) {
45
+ return this.contextToKey.get(contextId);
46
+ }
47
+ /**
48
+ * Look up your operation+agent from webhook task_id
49
+ */
50
+ lookupByTask(taskId) {
51
+ return this.taskToKey.get(taskId);
52
+ }
53
+ /**
54
+ * Clean up completed operation
55
+ */
56
+ remove(operationId, agentId) {
57
+ // Remove all mappings for this operation+agent
58
+ for (const [contextId, key] of this.contextToKey) {
59
+ if (key.operationId === operationId && key.agentId === agentId) {
60
+ this.contextToKey.delete(contextId);
61
+ }
62
+ }
63
+ for (const [taskId, key] of this.taskToKey) {
64
+ if (key.operationId === operationId && key.agentId === agentId) {
65
+ this.taskToKey.delete(taskId);
66
+ }
67
+ }
68
+ }
69
+ /**
70
+ * Get statistics
71
+ */
72
+ getStats() {
73
+ return {
74
+ totalContexts: this.contextToKey.size,
75
+ totalTasks: this.taskToKey.size
76
+ };
77
+ }
78
+ }
79
+ exports.ServerIdentifierMapper = ServerIdentifierMapper;
80
+ //# sourceMappingURL=TaskEventTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskEventTypes.js","sourceRoot":"","sources":["../../../src/lib/core/TaskEventTypes.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA0LH,8CAEC;AAPD;;;;GAIG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACvE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAa,sBAAsB;IACzB,YAAY,GAAG,IAAI,GAAG,EAAoD,CAAC;IAC3E,SAAS,GAAG,IAAI,GAAG,EAAoD,CAAC;IAEhF;;OAEG;IACH,QAAQ,CAAC,WAAmB,EAAE,OAAe,EAAE,SAAkB,EAAE,MAAe;QAChF,MAAM,GAAG,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;QAErC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,SAAiB;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAmB,EAAE,OAAe;QACzC,+CAA+C;QAC/C,KAAK,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACjD,IAAI,GAAG,CAAC,WAAW,KAAK,WAAW,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBAC/D,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3C,IAAI,GAAG,CAAC,WAAW,KAAK,WAAW,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBAC/D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QAIN,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;YACrC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SAChC,CAAC;IACJ,CAAC;CACF;AA7DD,wDA6DC"}
@@ -48,6 +48,8 @@ export declare class TaskExecutor {
48
48
  constructor(config?: {
49
49
  /** Default timeout for 'working' status (max 120s per PR #78) */
50
50
  workingTimeout?: number;
51
+ /** Polling interval for 'working' status in milliseconds (default: 2000ms) */
52
+ pollingInterval?: number;
51
53
  /** Default max clarification attempts */
52
54
  defaultMaxClarifications?: number;
53
55
  /** Enable conversation storage */
@@ -1 +1 @@
1
- {"version":3,"file":"TaskExecutor.d.ts","sourceRoot":"","sources":["../../../src/lib/core/TaskExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TaskExecutor.d.ts","sourceRoot":"","sources":["../../../src/lib/core/TaskExecutor.ts"],"names":[],"mappings":"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"}