digital-workers 2.1.1 → 2.3.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 (197) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +136 -180
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +34 -21
  5. package/dist/actions.js.map +1 -1
  6. package/dist/agent-comms.d.ts +438 -0
  7. package/dist/agent-comms.d.ts.map +1 -0
  8. package/dist/agent-comms.js +677 -0
  9. package/dist/agent-comms.js.map +1 -0
  10. package/dist/approve.d.ts +40 -8
  11. package/dist/approve.d.ts.map +1 -1
  12. package/dist/approve.js +86 -20
  13. package/dist/approve.js.map +1 -1
  14. package/dist/ask.d.ts +38 -7
  15. package/dist/ask.d.ts.map +1 -1
  16. package/dist/ask.js +85 -25
  17. package/dist/ask.js.map +1 -1
  18. package/dist/browse.d.ts +223 -0
  19. package/dist/browse.d.ts.map +1 -0
  20. package/dist/browse.js +392 -0
  21. package/dist/browse.js.map +1 -0
  22. package/dist/capability-tiers.d.ts +230 -0
  23. package/dist/capability-tiers.d.ts.map +1 -0
  24. package/dist/capability-tiers.js +388 -0
  25. package/dist/capability-tiers.js.map +1 -0
  26. package/dist/cascade-context.d.ts +523 -0
  27. package/dist/cascade-context.d.ts.map +1 -0
  28. package/dist/cascade-context.js +494 -0
  29. package/dist/cascade-context.js.map +1 -0
  30. package/dist/client.d.ts +162 -0
  31. package/dist/client.d.ts.map +1 -0
  32. package/dist/client.js +64 -0
  33. package/dist/client.js.map +1 -0
  34. package/dist/decide.d.ts +42 -6
  35. package/dist/decide.d.ts.map +1 -1
  36. package/dist/decide.js +54 -11
  37. package/dist/decide.js.map +1 -1
  38. package/dist/do.d.ts +36 -7
  39. package/dist/do.d.ts.map +1 -1
  40. package/dist/do.js +82 -39
  41. package/dist/do.js.map +1 -1
  42. package/dist/error-escalation.d.ts +416 -0
  43. package/dist/error-escalation.d.ts.map +1 -0
  44. package/dist/error-escalation.js +656 -0
  45. package/dist/error-escalation.js.map +1 -0
  46. package/dist/generate.d.ts +48 -7
  47. package/dist/generate.d.ts.map +1 -1
  48. package/dist/generate.js +49 -8
  49. package/dist/generate.js.map +1 -1
  50. package/dist/goals.d.ts +10 -9
  51. package/dist/goals.d.ts.map +1 -1
  52. package/dist/goals.js +30 -24
  53. package/dist/goals.js.map +1 -1
  54. package/dist/image.d.ts +189 -0
  55. package/dist/image.d.ts.map +1 -0
  56. package/dist/image.js +528 -0
  57. package/dist/image.js.map +1 -0
  58. package/dist/index.d.ts +59 -2
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +92 -2
  61. package/dist/index.js.map +1 -1
  62. package/dist/is.d.ts +45 -10
  63. package/dist/is.d.ts.map +1 -1
  64. package/dist/is.js +56 -21
  65. package/dist/is.js.map +1 -1
  66. package/dist/kpis.d.ts +24 -15
  67. package/dist/kpis.d.ts.map +1 -1
  68. package/dist/kpis.js +16 -14
  69. package/dist/kpis.js.map +1 -1
  70. package/dist/load-balancing.d.ts +395 -0
  71. package/dist/load-balancing.d.ts.map +1 -0
  72. package/dist/load-balancing.js +991 -0
  73. package/dist/load-balancing.js.map +1 -0
  74. package/dist/logger.d.ts +76 -0
  75. package/dist/logger.d.ts.map +1 -0
  76. package/dist/logger.js +39 -0
  77. package/dist/logger.js.map +1 -0
  78. package/dist/notify.d.ts +38 -9
  79. package/dist/notify.d.ts.map +1 -1
  80. package/dist/notify.js +72 -17
  81. package/dist/notify.js.map +1 -1
  82. package/dist/role.d.ts +5 -4
  83. package/dist/role.d.ts.map +1 -1
  84. package/dist/role.js +13 -10
  85. package/dist/role.js.map +1 -1
  86. package/dist/runtime.d.ts +310 -0
  87. package/dist/runtime.d.ts.map +1 -0
  88. package/dist/runtime.js +510 -0
  89. package/dist/runtime.js.map +1 -0
  90. package/dist/team.d.ts +11 -6
  91. package/dist/team.d.ts.map +1 -1
  92. package/dist/team.js +22 -15
  93. package/dist/team.js.map +1 -1
  94. package/dist/transports/email.d.ts +318 -0
  95. package/dist/transports/email.d.ts.map +1 -0
  96. package/dist/transports/email.js +779 -0
  97. package/dist/transports/email.js.map +1 -0
  98. package/dist/transports/slack.d.ts +515 -0
  99. package/dist/transports/slack.d.ts.map +1 -0
  100. package/dist/transports/slack.js +844 -0
  101. package/dist/transports/slack.js.map +1 -0
  102. package/dist/transports.d.ts.map +1 -1
  103. package/dist/transports.js +44 -25
  104. package/dist/transports.js.map +1 -1
  105. package/dist/types.d.ts +149 -19
  106. package/dist/types.d.ts.map +1 -1
  107. package/dist/types.js +6 -0
  108. package/dist/types.js.map +1 -1
  109. package/dist/utils/id.d.ts +19 -0
  110. package/dist/utils/id.d.ts.map +1 -0
  111. package/dist/utils/id.js +21 -0
  112. package/dist/utils/id.js.map +1 -0
  113. package/dist/video.d.ts +203 -0
  114. package/dist/video.d.ts.map +1 -0
  115. package/dist/video.js +528 -0
  116. package/dist/video.js.map +1 -0
  117. package/dist/worker.d.ts +343 -0
  118. package/dist/worker.d.ts.map +1 -0
  119. package/dist/worker.js +698 -0
  120. package/dist/worker.js.map +1 -0
  121. package/package.json +24 -5
  122. package/src/actions.ts +48 -38
  123. package/src/agent-comms.ts +1200 -0
  124. package/src/approve.ts +91 -20
  125. package/src/ask.ts +99 -25
  126. package/src/browse.ts +627 -0
  127. package/src/capability-tiers.ts +545 -0
  128. package/src/cascade-context.ts +648 -0
  129. package/src/client.ts +221 -0
  130. package/src/decide.ts +81 -35
  131. package/src/do.ts +98 -52
  132. package/src/error-escalation.ts +1123 -0
  133. package/src/generate.ts +52 -18
  134. package/src/goals.ts +36 -27
  135. package/src/image.ts +816 -0
  136. package/src/index.ts +410 -2
  137. package/src/is.ts +59 -25
  138. package/src/kpis.ts +41 -36
  139. package/src/load-balancing.ts +1467 -0
  140. package/src/logger.ts +93 -0
  141. package/src/notify.ts +78 -17
  142. package/src/role.ts +30 -20
  143. package/src/runtime.ts +796 -0
  144. package/src/team.ts +24 -19
  145. package/src/transports/email.ts +1160 -0
  146. package/src/transports/slack.ts +1320 -0
  147. package/src/transports.ts +58 -43
  148. package/src/types.ts +182 -46
  149. package/src/utils/id.ts +21 -0
  150. package/src/video.ts +906 -0
  151. package/src/worker.ts +1007 -0
  152. package/test/agent-comms.test.ts +1397 -0
  153. package/test/approve.test.ts +305 -0
  154. package/test/ask.test.ts +274 -0
  155. package/test/browse.test.ts +361 -0
  156. package/test/capability-tiers.test.ts +631 -0
  157. package/test/cascade-context.test.ts +692 -0
  158. package/test/decide.test.ts +252 -0
  159. package/test/do.test.ts +144 -0
  160. package/test/error-escalation.test.ts +1205 -0
  161. package/test/error-logging.test.ts +357 -0
  162. package/test/generate.test.ts +319 -0
  163. package/test/image.test.ts +398 -0
  164. package/test/is.test.ts +287 -0
  165. package/test/load-balancing-safety.test.ts +404 -0
  166. package/test/load-balancing-thread-safety.test.ts +464 -0
  167. package/test/load-balancing.test.ts +1145 -0
  168. package/test/notify.test.ts +434 -0
  169. package/test/primitives.test.ts +320 -0
  170. package/test/runtime-integration.test.ts +892 -0
  171. package/test/transports/crypto.test.ts +230 -0
  172. package/test/transports/email.test.ts +866 -0
  173. package/test/transports/id-generation.test.ts +91 -0
  174. package/test/transports/slack.test.ts +760 -0
  175. package/test/type-safety.test.ts +834 -0
  176. package/test/types.test.ts +95 -2
  177. package/test/video.test.ts +530 -0
  178. package/test/worker.test.ts +1433 -0
  179. package/tsconfig.json +4 -1
  180. package/vitest.config.ts +42 -0
  181. package/wrangler.jsonc +36 -0
  182. package/.turbo/turbo-build.log +0 -5
  183. package/src/actions.js +0 -436
  184. package/src/approve.js +0 -234
  185. package/src/ask.js +0 -226
  186. package/src/decide.js +0 -244
  187. package/src/do.js +0 -227
  188. package/src/generate.js +0 -298
  189. package/src/goals.js +0 -205
  190. package/src/index.js +0 -68
  191. package/src/is.js +0 -317
  192. package/src/kpis.js +0 -270
  193. package/src/notify.js +0 -219
  194. package/src/role.js +0 -110
  195. package/src/team.js +0 -130
  196. package/src/transports.js +0 -357
  197. package/src/types.js +0 -71
@@ -0,0 +1,310 @@
1
+ /**
2
+ * Runtime Integration for Human Request Processing
3
+ *
4
+ * Connects transport adapters (Slack, Email, etc.) to a request store and
5
+ * provides orchestration for approval workflows, questions, and notifications.
6
+ *
7
+ * The HumanRequestProcessor is the central coordinator that:
8
+ * - Sends requests via configured transports
9
+ * - Tracks request state in a store
10
+ * - Handles webhook callbacks from transports
11
+ * - Notifies when requests complete or timeout
12
+ *
13
+ * @packageDocumentation
14
+ */
15
+ import type { Transport } from './transports.js';
16
+ import type { WorkerRef } from './types.js';
17
+ import type { SlackTransport } from './transports/slack.js';
18
+ import type { EmailTransport } from './transports/email.js';
19
+ /**
20
+ * Status of a human request
21
+ */
22
+ export type RequestStatus = 'pending' | 'completed' | 'expired' | 'cancelled' | 'failed';
23
+ /**
24
+ * Type of human request
25
+ */
26
+ export type RequestType = 'approval' | 'question' | 'notification';
27
+ /**
28
+ * Result of a completed request
29
+ */
30
+ export interface RequestResult {
31
+ /** Whether the request was approved (for approval type) */
32
+ approved?: boolean;
33
+ /** Answer to a question (for question type) */
34
+ answer?: unknown;
35
+ /** Who responded to the request */
36
+ respondedBy?: WorkerRef;
37
+ /** When the response was received */
38
+ respondedAt?: Date;
39
+ /** Additional notes from the responder */
40
+ notes?: string;
41
+ /** The channel used for the response */
42
+ via?: Transport;
43
+ }
44
+ /**
45
+ * A human request tracked by the runtime
46
+ */
47
+ export interface HumanRequest {
48
+ /** Unique request identifier */
49
+ id: string;
50
+ /** Type of request */
51
+ type: RequestType;
52
+ /** Target for the request (channel, email, etc.) */
53
+ target: string;
54
+ /** Request content/message */
55
+ content: string;
56
+ /** Current status */
57
+ status: RequestStatus;
58
+ /** Transport used to send the request */
59
+ transport: Transport;
60
+ /** External message ID from the transport */
61
+ externalId?: string;
62
+ /** Who initiated the request */
63
+ requestedBy?: WorkerRef;
64
+ /** Additional context for the request */
65
+ context?: Record<string, unknown>;
66
+ /** Channel to notify requestor of result */
67
+ notifyChannel?: string;
68
+ /** When the request was created */
69
+ createdAt: Date;
70
+ /** When the request was completed */
71
+ completedAt?: Date;
72
+ /** When the request expires */
73
+ expiresAt?: Date;
74
+ /** Result of the request (when completed) */
75
+ result?: RequestResult;
76
+ }
77
+ /**
78
+ * Data for creating a new request
79
+ */
80
+ export interface CreateRequestData {
81
+ type: RequestType;
82
+ target: string;
83
+ content: string;
84
+ transport: Transport;
85
+ requestedBy?: WorkerRef;
86
+ context?: Record<string, unknown>;
87
+ notifyChannel?: string;
88
+ expiresAt?: Date;
89
+ }
90
+ /**
91
+ * Data for updating a request
92
+ */
93
+ export interface UpdateRequestData {
94
+ status?: RequestStatus;
95
+ externalId?: string;
96
+ result?: RequestResult;
97
+ completedAt?: Date;
98
+ }
99
+ /**
100
+ * Store interface for persisting human requests
101
+ */
102
+ export interface HumanRequestStore {
103
+ /** Create a new request */
104
+ create(data: CreateRequestData): Promise<HumanRequest>;
105
+ /** Get a request by ID */
106
+ get(id: string): Promise<HumanRequest | undefined>;
107
+ /** Update a request */
108
+ update(id: string, data: UpdateRequestData): Promise<HumanRequest | undefined>;
109
+ /** Find a request by external ID (transport message ID) */
110
+ findByExternalId(externalId: string): Promise<HumanRequest | undefined>;
111
+ /** List all pending requests */
112
+ listPending(): Promise<HumanRequest[]>;
113
+ /** List expired requests that need processing */
114
+ listExpired(): Promise<HumanRequest[]>;
115
+ }
116
+ /**
117
+ * In-memory implementation of HumanRequestStore
118
+ *
119
+ * Suitable for development and testing. For production, implement
120
+ * a store backed by Durable Objects, KV, or a database.
121
+ */
122
+ export declare class InMemoryRequestStore implements HumanRequestStore {
123
+ private requests;
124
+ private externalIdIndex;
125
+ private counter;
126
+ private generateId;
127
+ create(data: CreateRequestData): Promise<HumanRequest>;
128
+ get(id: string): Promise<HumanRequest | undefined>;
129
+ update(id: string, data: UpdateRequestData): Promise<HumanRequest | undefined>;
130
+ findByExternalId(externalId: string): Promise<HumanRequest | undefined>;
131
+ listPending(): Promise<HumanRequest[]>;
132
+ listExpired(): Promise<HumanRequest[]>;
133
+ }
134
+ /**
135
+ * Supported transport adapters
136
+ */
137
+ export interface TransportAdapters {
138
+ slack?: SlackTransport;
139
+ email?: EmailTransport;
140
+ }
141
+ /**
142
+ * Result of submitting a request
143
+ */
144
+ export interface SubmitResult {
145
+ success: boolean;
146
+ requestId?: string;
147
+ externalId?: string;
148
+ error?: string;
149
+ }
150
+ /**
151
+ * Data for submitting a new request
152
+ */
153
+ export interface SubmitRequestData {
154
+ type: RequestType;
155
+ target: string;
156
+ content: string;
157
+ transport: Transport;
158
+ context?: Record<string, unknown>;
159
+ requestedBy?: WorkerRef;
160
+ notifyChannel?: string;
161
+ timeout?: number;
162
+ }
163
+ /**
164
+ * Webhook payload for processing responses
165
+ */
166
+ export interface WebhookPayload {
167
+ type: 'approval_response' | 'question_response' | 'email_reply';
168
+ requestId: string;
169
+ approved?: boolean;
170
+ answer?: unknown;
171
+ respondedBy?: WorkerRef;
172
+ notes?: string;
173
+ from?: string;
174
+ content?: string;
175
+ }
176
+ /**
177
+ * Result of processing a webhook
178
+ */
179
+ export interface WebhookResult {
180
+ success: boolean;
181
+ requestId?: string;
182
+ error?: string;
183
+ }
184
+ /**
185
+ * Callback data when a request completes
186
+ */
187
+ export interface CompleteCallbackData {
188
+ requestId: string;
189
+ request: HumanRequest;
190
+ result: RequestResult;
191
+ }
192
+ /**
193
+ * Callback data when a request times out
194
+ */
195
+ export interface TimeoutCallbackData {
196
+ requestId: string;
197
+ request: HumanRequest;
198
+ }
199
+ /**
200
+ * Result of cancelling a request
201
+ */
202
+ export interface CancelResult {
203
+ success: boolean;
204
+ error?: string;
205
+ }
206
+ /**
207
+ * Configuration for HumanRequestProcessor
208
+ */
209
+ export interface ProcessorConfig {
210
+ /** Request store for persistence */
211
+ store: HumanRequestStore;
212
+ /** Transport adapters */
213
+ transports: TransportAdapters;
214
+ /** Callback when a request completes */
215
+ onComplete?: (data: CompleteCallbackData) => void | Promise<void>;
216
+ /** Callback when a request times out */
217
+ onTimeout?: (data: TimeoutCallbackData) => void | Promise<void>;
218
+ /** Whether to notify requestor of results */
219
+ notifyRequestor?: boolean;
220
+ /** Interval for checking expired requests (ms) */
221
+ checkIntervalMs?: number;
222
+ }
223
+ /**
224
+ * Human Request Processor
225
+ *
226
+ * Coordinates between transport adapters and the request store to
227
+ * handle approval workflows, questions, and notifications.
228
+ *
229
+ * @example
230
+ * ```ts
231
+ * const processor = createHumanRequestProcessor({
232
+ * store: new InMemoryRequestStore(),
233
+ * transports: {
234
+ * slack: createSlackTransport({ botToken, signingSecret }),
235
+ * email: createEmailTransport({ apiKey }),
236
+ * },
237
+ * onComplete: (data) => {
238
+ * console.log(`Request ${data.requestId} completed:`, data.result)
239
+ * },
240
+ * })
241
+ *
242
+ * // Submit a request
243
+ * const result = await processor.submitRequest({
244
+ * type: 'approval',
245
+ * target: '#approvals',
246
+ * content: 'Approve deployment?',
247
+ * transport: 'slack',
248
+ * })
249
+ *
250
+ * // Handle webhook when user responds
251
+ * await processor.handleWebhook('slack', {
252
+ * type: 'approval_response',
253
+ * requestId: result.requestId,
254
+ * approved: true,
255
+ * })
256
+ * ```
257
+ */
258
+ export declare class HumanRequestProcessor {
259
+ private store;
260
+ private transports;
261
+ private onCompleteCallback;
262
+ private onTimeoutCallback;
263
+ private notifyRequestor;
264
+ private checkIntervalMs;
265
+ private timeoutChecker;
266
+ private destroyed;
267
+ constructor(config: ProcessorConfig);
268
+ /**
269
+ * Submit a new human request via the specified transport
270
+ */
271
+ submitRequest(data: SubmitRequestData): Promise<SubmitResult>;
272
+ /**
273
+ * Handle a webhook callback from a transport
274
+ */
275
+ handleWebhook(transport: Transport, payload: WebhookPayload): Promise<WebhookResult>;
276
+ /**
277
+ * Get a request by ID
278
+ */
279
+ getRequest(requestId: string): Promise<HumanRequest | undefined>;
280
+ /**
281
+ * Cancel a pending request
282
+ */
283
+ cancelRequest(requestId: string): Promise<CancelResult>;
284
+ /**
285
+ * Stop the processor and clean up resources
286
+ */
287
+ destroy(): void;
288
+ private getTransport;
289
+ private sendViaTransport;
290
+ private parseEmailApproval;
291
+ private notifyRequestorOfResult;
292
+ private startTimeoutChecker;
293
+ }
294
+ /**
295
+ * Create a HumanRequestProcessor instance
296
+ *
297
+ * @example
298
+ * ```ts
299
+ * const processor = createHumanRequestProcessor({
300
+ * store: new InMemoryRequestStore(),
301
+ * transports: {
302
+ * slack: createSlackTransport({ botToken, signingSecret }),
303
+ * },
304
+ * onComplete: (data) => console.log('Completed:', data),
305
+ * onTimeout: (data) => console.log('Timed out:', data),
306
+ * })
307
+ * ```
308
+ */
309
+ export declare function createHumanRequestProcessor(config: ProcessorConfig): HumanRequestProcessor;
310
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}