digital-workers 2.1.3 → 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 (183) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +2 -0
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +33 -21
  5. package/dist/actions.js.map +1 -1
  6. package/dist/agent-comms.d.ts.map +1 -1
  7. package/dist/agent-comms.js +36 -25
  8. package/dist/agent-comms.js.map +1 -1
  9. package/dist/approve.d.ts +40 -8
  10. package/dist/approve.d.ts.map +1 -1
  11. package/dist/approve.js +86 -20
  12. package/dist/approve.js.map +1 -1
  13. package/dist/ask.d.ts +38 -7
  14. package/dist/ask.d.ts.map +1 -1
  15. package/dist/ask.js +85 -25
  16. package/dist/ask.js.map +1 -1
  17. package/dist/browse.d.ts +223 -0
  18. package/dist/browse.d.ts.map +1 -0
  19. package/dist/browse.js +392 -0
  20. package/dist/browse.js.map +1 -0
  21. package/dist/capability-tiers.js +3 -3
  22. package/dist/capability-tiers.js.map +1 -1
  23. package/dist/cascade-context.d.ts +28 -28
  24. package/dist/client.d.ts +162 -0
  25. package/dist/client.d.ts.map +1 -0
  26. package/dist/client.js +64 -0
  27. package/dist/client.js.map +1 -0
  28. package/dist/decide.d.ts +42 -6
  29. package/dist/decide.d.ts.map +1 -1
  30. package/dist/decide.js +54 -11
  31. package/dist/decide.js.map +1 -1
  32. package/dist/do.d.ts +36 -7
  33. package/dist/do.d.ts.map +1 -1
  34. package/dist/do.js +82 -39
  35. package/dist/do.js.map +1 -1
  36. package/dist/error-escalation.d.ts.map +1 -1
  37. package/dist/error-escalation.js +38 -38
  38. package/dist/error-escalation.js.map +1 -1
  39. package/dist/generate.d.ts +48 -7
  40. package/dist/generate.d.ts.map +1 -1
  41. package/dist/generate.js +49 -8
  42. package/dist/generate.js.map +1 -1
  43. package/dist/goals.d.ts +10 -9
  44. package/dist/goals.d.ts.map +1 -1
  45. package/dist/goals.js +30 -24
  46. package/dist/goals.js.map +1 -1
  47. package/dist/image.d.ts +189 -0
  48. package/dist/image.d.ts.map +1 -0
  49. package/dist/image.js +528 -0
  50. package/dist/image.js.map +1 -0
  51. package/dist/index.d.ts +49 -2
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +58 -2
  54. package/dist/index.js.map +1 -1
  55. package/dist/is.d.ts +45 -10
  56. package/dist/is.d.ts.map +1 -1
  57. package/dist/is.js +56 -21
  58. package/dist/is.js.map +1 -1
  59. package/dist/kpis.d.ts +24 -15
  60. package/dist/kpis.d.ts.map +1 -1
  61. package/dist/kpis.js +16 -14
  62. package/dist/kpis.js.map +1 -1
  63. package/dist/load-balancing.d.ts.map +1 -1
  64. package/dist/load-balancing.js +124 -38
  65. package/dist/load-balancing.js.map +1 -1
  66. package/dist/logger.d.ts +76 -0
  67. package/dist/logger.d.ts.map +1 -0
  68. package/dist/logger.js +39 -0
  69. package/dist/logger.js.map +1 -0
  70. package/dist/notify.d.ts +38 -9
  71. package/dist/notify.d.ts.map +1 -1
  72. package/dist/notify.js +72 -17
  73. package/dist/notify.js.map +1 -1
  74. package/dist/role.d.ts +5 -4
  75. package/dist/role.d.ts.map +1 -1
  76. package/dist/role.js +13 -10
  77. package/dist/role.js.map +1 -1
  78. package/dist/runtime.d.ts +310 -0
  79. package/dist/runtime.d.ts.map +1 -0
  80. package/dist/runtime.js +510 -0
  81. package/dist/runtime.js.map +1 -0
  82. package/dist/team.d.ts +11 -6
  83. package/dist/team.d.ts.map +1 -1
  84. package/dist/team.js +22 -15
  85. package/dist/team.js.map +1 -1
  86. package/dist/transports/email.d.ts +318 -0
  87. package/dist/transports/email.d.ts.map +1 -0
  88. package/dist/transports/email.js +779 -0
  89. package/dist/transports/email.js.map +1 -0
  90. package/dist/transports/slack.d.ts +515 -0
  91. package/dist/transports/slack.d.ts.map +1 -0
  92. package/dist/transports/slack.js +844 -0
  93. package/dist/transports/slack.js.map +1 -0
  94. package/dist/transports.d.ts.map +1 -1
  95. package/dist/transports.js +44 -25
  96. package/dist/transports.js.map +1 -1
  97. package/dist/types.d.ts +141 -19
  98. package/dist/types.d.ts.map +1 -1
  99. package/dist/types.js +5 -0
  100. package/dist/types.js.map +1 -1
  101. package/dist/utils/id.d.ts +19 -0
  102. package/dist/utils/id.d.ts.map +1 -0
  103. package/dist/utils/id.js +21 -0
  104. package/dist/utils/id.js.map +1 -0
  105. package/dist/video.d.ts +203 -0
  106. package/dist/video.d.ts.map +1 -0
  107. package/dist/video.js +528 -0
  108. package/dist/video.js.map +1 -0
  109. package/dist/worker.d.ts +343 -0
  110. package/dist/worker.d.ts.map +1 -0
  111. package/dist/worker.js +698 -0
  112. package/dist/worker.js.map +1 -0
  113. package/package.json +32 -14
  114. package/src/actions.ts +39 -30
  115. package/src/agent-comms.ts +54 -92
  116. package/src/approve.ts +91 -20
  117. package/src/ask.ts +99 -25
  118. package/src/browse.ts +627 -0
  119. package/src/capability-tiers.ts +5 -5
  120. package/src/client.ts +221 -0
  121. package/src/decide.ts +81 -35
  122. package/src/do.ts +98 -52
  123. package/src/error-escalation.ts +55 -67
  124. package/src/generate.ts +52 -18
  125. package/src/goals.ts +36 -27
  126. package/src/image.ts +816 -0
  127. package/src/index.ts +187 -2
  128. package/src/is.ts +59 -25
  129. package/src/kpis.ts +41 -36
  130. package/src/load-balancing.ts +132 -46
  131. package/src/logger.ts +93 -0
  132. package/src/notify.ts +78 -17
  133. package/src/role.ts +30 -20
  134. package/src/runtime.ts +796 -0
  135. package/src/team.ts +24 -19
  136. package/src/transports/email.ts +1160 -0
  137. package/src/transports/slack.ts +1320 -0
  138. package/src/transports.ts +58 -43
  139. package/src/types.ts +174 -46
  140. package/src/utils/id.ts +21 -0
  141. package/src/video.ts +906 -0
  142. package/src/worker.ts +1007 -0
  143. package/test/approve.test.ts +305 -0
  144. package/test/ask.test.ts +274 -0
  145. package/test/browse.test.ts +361 -0
  146. package/test/decide.test.ts +252 -0
  147. package/test/do.test.ts +144 -0
  148. package/test/error-logging.test.ts +357 -0
  149. package/test/generate.test.ts +319 -0
  150. package/test/image.test.ts +398 -0
  151. package/test/is.test.ts +287 -0
  152. package/test/load-balancing-safety.test.ts +404 -0
  153. package/test/notify.test.ts +434 -0
  154. package/test/primitives.test.ts +320 -0
  155. package/test/runtime-integration.test.ts +892 -0
  156. package/test/transports/crypto.test.ts +230 -0
  157. package/test/transports/email.test.ts +866 -0
  158. package/test/transports/id-generation.test.ts +91 -0
  159. package/test/transports/slack.test.ts +760 -0
  160. package/test/type-safety.test.ts +834 -0
  161. package/test/types.test.ts +60 -2
  162. package/test/video.test.ts +530 -0
  163. package/test/worker.test.ts +1433 -0
  164. package/tsconfig.json +4 -1
  165. package/vitest.config.ts +42 -0
  166. package/wrangler.jsonc +36 -0
  167. package/.turbo/turbo-build.log +0 -4
  168. package/LICENSE +0 -21
  169. package/src/actions.js +0 -436
  170. package/src/approve.js +0 -234
  171. package/src/ask.js +0 -226
  172. package/src/decide.js +0 -244
  173. package/src/do.js +0 -227
  174. package/src/generate.js +0 -298
  175. package/src/goals.js +0 -205
  176. package/src/index.js +0 -68
  177. package/src/is.js +0 -317
  178. package/src/kpis.js +0 -270
  179. package/src/notify.js +0 -219
  180. package/src/role.js +0 -110
  181. package/src/team.js +0 -130
  182. package/src/transports.js +0 -357
  183. package/src/types.js +0 -71
@@ -0,0 +1,510 @@
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
+ // =============================================================================
16
+ // In-Memory Request Store
17
+ // =============================================================================
18
+ /**
19
+ * In-memory implementation of HumanRequestStore
20
+ *
21
+ * Suitable for development and testing. For production, implement
22
+ * a store backed by Durable Objects, KV, or a database.
23
+ */
24
+ export class InMemoryRequestStore {
25
+ requests = new Map();
26
+ externalIdIndex = new Map();
27
+ counter = 0;
28
+ generateId() {
29
+ this.counter++;
30
+ return `req_${Date.now()}_${this.counter.toString().padStart(4, '0')}`;
31
+ }
32
+ async create(data) {
33
+ const id = this.generateId();
34
+ const request = {
35
+ id,
36
+ type: data.type,
37
+ target: data.target,
38
+ content: data.content,
39
+ status: 'pending',
40
+ transport: data.transport,
41
+ createdAt: new Date(),
42
+ };
43
+ if (data.requestedBy !== undefined) {
44
+ request.requestedBy = data.requestedBy;
45
+ }
46
+ if (data.context !== undefined) {
47
+ request.context = data.context;
48
+ }
49
+ if (data.notifyChannel !== undefined) {
50
+ request.notifyChannel = data.notifyChannel;
51
+ }
52
+ if (data.expiresAt !== undefined) {
53
+ request.expiresAt = data.expiresAt;
54
+ }
55
+ this.requests.set(id, request);
56
+ return request;
57
+ }
58
+ async get(id) {
59
+ return this.requests.get(id);
60
+ }
61
+ async update(id, data) {
62
+ const request = this.requests.get(id);
63
+ if (!request) {
64
+ return undefined;
65
+ }
66
+ if (data.status !== undefined) {
67
+ request.status = data.status;
68
+ }
69
+ if (data.externalId !== undefined) {
70
+ request.externalId = data.externalId;
71
+ this.externalIdIndex.set(data.externalId, id);
72
+ }
73
+ if (data.result !== undefined) {
74
+ request.result = data.result;
75
+ }
76
+ if (data.completedAt !== undefined) {
77
+ request.completedAt = data.completedAt;
78
+ }
79
+ // Auto-set completedAt when status becomes terminal
80
+ if (data.status === 'completed' || data.status === 'expired' || data.status === 'cancelled') {
81
+ if (!request.completedAt) {
82
+ request.completedAt = new Date();
83
+ }
84
+ }
85
+ this.requests.set(id, request);
86
+ return request;
87
+ }
88
+ async findByExternalId(externalId) {
89
+ const requestId = this.externalIdIndex.get(externalId);
90
+ if (!requestId) {
91
+ return undefined;
92
+ }
93
+ return this.requests.get(requestId);
94
+ }
95
+ async listPending() {
96
+ const pending = [];
97
+ for (const request of this.requests.values()) {
98
+ if (request.status === 'pending') {
99
+ pending.push(request);
100
+ }
101
+ }
102
+ return pending;
103
+ }
104
+ async listExpired() {
105
+ const now = new Date();
106
+ const expired = [];
107
+ for (const request of this.requests.values()) {
108
+ if (request.status === 'pending' && request.expiresAt && request.expiresAt <= now) {
109
+ expired.push(request);
110
+ }
111
+ }
112
+ return expired;
113
+ }
114
+ }
115
+ // =============================================================================
116
+ // Human Request Processor
117
+ // =============================================================================
118
+ /**
119
+ * Human Request Processor
120
+ *
121
+ * Coordinates between transport adapters and the request store to
122
+ * handle approval workflows, questions, and notifications.
123
+ *
124
+ * @example
125
+ * ```ts
126
+ * const processor = createHumanRequestProcessor({
127
+ * store: new InMemoryRequestStore(),
128
+ * transports: {
129
+ * slack: createSlackTransport({ botToken, signingSecret }),
130
+ * email: createEmailTransport({ apiKey }),
131
+ * },
132
+ * onComplete: (data) => {
133
+ * console.log(`Request ${data.requestId} completed:`, data.result)
134
+ * },
135
+ * })
136
+ *
137
+ * // Submit a request
138
+ * const result = await processor.submitRequest({
139
+ * type: 'approval',
140
+ * target: '#approvals',
141
+ * content: 'Approve deployment?',
142
+ * transport: 'slack',
143
+ * })
144
+ *
145
+ * // Handle webhook when user responds
146
+ * await processor.handleWebhook('slack', {
147
+ * type: 'approval_response',
148
+ * requestId: result.requestId,
149
+ * approved: true,
150
+ * })
151
+ * ```
152
+ */
153
+ export class HumanRequestProcessor {
154
+ store;
155
+ transports;
156
+ onCompleteCallback;
157
+ onTimeoutCallback;
158
+ notifyRequestor;
159
+ checkIntervalMs;
160
+ timeoutChecker = null;
161
+ destroyed = false;
162
+ constructor(config) {
163
+ this.store = config.store;
164
+ this.transports = config.transports;
165
+ this.onCompleteCallback = config.onComplete ?? null;
166
+ this.onTimeoutCallback = config.onTimeout ?? null;
167
+ this.notifyRequestor = config.notifyRequestor ?? false;
168
+ this.checkIntervalMs = config.checkIntervalMs ?? 30000;
169
+ // Start timeout checker if onTimeout callback is provided
170
+ if (this.onTimeoutCallback) {
171
+ this.startTimeoutChecker();
172
+ }
173
+ }
174
+ /**
175
+ * Submit a new human request via the specified transport
176
+ */
177
+ async submitRequest(data) {
178
+ // Validate transport is configured
179
+ const transport = this.getTransport(data.transport);
180
+ if (!transport) {
181
+ return {
182
+ success: false,
183
+ error: `Transport '${data.transport}' not configured`,
184
+ };
185
+ }
186
+ // Calculate expiration time if timeout specified
187
+ let expiresAt;
188
+ if (data.timeout !== undefined) {
189
+ expiresAt = new Date(Date.now() + data.timeout);
190
+ }
191
+ // Create request in store
192
+ const createData = {
193
+ type: data.type,
194
+ target: data.target,
195
+ content: data.content,
196
+ transport: data.transport,
197
+ };
198
+ if (data.requestedBy !== undefined) {
199
+ createData.requestedBy = data.requestedBy;
200
+ }
201
+ if (data.context !== undefined) {
202
+ createData.context = data.context;
203
+ }
204
+ if (data.notifyChannel !== undefined) {
205
+ createData.notifyChannel = data.notifyChannel;
206
+ }
207
+ if (expiresAt !== undefined) {
208
+ createData.expiresAt = expiresAt;
209
+ }
210
+ const request = await this.store.create(createData);
211
+ // Send via transport
212
+ let deliveryResult;
213
+ try {
214
+ deliveryResult = await this.sendViaTransport(data.transport, transport, request);
215
+ }
216
+ catch (error) {
217
+ // Update request status to failed
218
+ await this.store.update(request.id, { status: 'failed' });
219
+ return {
220
+ success: false,
221
+ requestId: request.id,
222
+ error: error instanceof Error ? error.message : String(error),
223
+ };
224
+ }
225
+ if (!deliveryResult.success) {
226
+ // Update request status to failed
227
+ await this.store.update(request.id, { status: 'failed' });
228
+ const errorResult = {
229
+ success: false,
230
+ requestId: request.id,
231
+ };
232
+ if (deliveryResult.error) {
233
+ errorResult.error = deliveryResult.error;
234
+ }
235
+ return errorResult;
236
+ }
237
+ // Update request with external ID
238
+ if (deliveryResult.messageId) {
239
+ await this.store.update(request.id, {
240
+ externalId: deliveryResult.messageId,
241
+ });
242
+ }
243
+ const successResult = {
244
+ success: true,
245
+ requestId: request.id,
246
+ };
247
+ if (deliveryResult.messageId) {
248
+ successResult.externalId = deliveryResult.messageId;
249
+ }
250
+ return successResult;
251
+ }
252
+ /**
253
+ * Handle a webhook callback from a transport
254
+ */
255
+ async handleWebhook(transport, payload) {
256
+ const { requestId } = payload;
257
+ // Find the request
258
+ const request = await this.store.get(requestId);
259
+ if (!request) {
260
+ return {
261
+ success: false,
262
+ requestId,
263
+ error: `Request '${requestId}' not found`,
264
+ };
265
+ }
266
+ // Check if already completed
267
+ if (request.status !== 'pending') {
268
+ return {
269
+ success: false,
270
+ requestId,
271
+ error: `Request '${requestId}' already completed with status '${request.status}'`,
272
+ };
273
+ }
274
+ // Build result based on payload type
275
+ let result;
276
+ if (payload.type === 'email_reply') {
277
+ // Parse email content for approval/rejection
278
+ const approved = this.parseEmailApproval(payload.content ?? '');
279
+ result = {
280
+ approved,
281
+ via: transport,
282
+ respondedAt: new Date(),
283
+ };
284
+ if (payload.from) {
285
+ result.respondedBy = { id: payload.from };
286
+ }
287
+ }
288
+ else {
289
+ result = {
290
+ respondedAt: new Date(),
291
+ via: transport,
292
+ };
293
+ if (payload.approved !== undefined) {
294
+ result.approved = payload.approved;
295
+ }
296
+ if (payload.answer !== undefined) {
297
+ result.answer = payload.answer;
298
+ }
299
+ if (payload.respondedBy !== undefined) {
300
+ result.respondedBy = payload.respondedBy;
301
+ }
302
+ if (payload.notes !== undefined) {
303
+ result.notes = payload.notes;
304
+ }
305
+ }
306
+ // Update the request
307
+ await this.store.update(requestId, {
308
+ status: 'completed',
309
+ result,
310
+ completedAt: new Date(),
311
+ });
312
+ // Notify requestor if configured
313
+ if (this.notifyRequestor && request.notifyChannel) {
314
+ await this.notifyRequestorOfResult(request, result);
315
+ }
316
+ // Call onComplete callback
317
+ if (this.onCompleteCallback) {
318
+ const updatedRequest = await this.store.get(requestId);
319
+ if (updatedRequest) {
320
+ try {
321
+ await this.onCompleteCallback({
322
+ requestId,
323
+ request: updatedRequest,
324
+ result,
325
+ });
326
+ }
327
+ catch {
328
+ // Swallow callback errors
329
+ }
330
+ }
331
+ }
332
+ return {
333
+ success: true,
334
+ requestId,
335
+ };
336
+ }
337
+ /**
338
+ * Get a request by ID
339
+ */
340
+ async getRequest(requestId) {
341
+ return this.store.get(requestId);
342
+ }
343
+ /**
344
+ * Cancel a pending request
345
+ */
346
+ async cancelRequest(requestId) {
347
+ const request = await this.store.get(requestId);
348
+ if (!request) {
349
+ return {
350
+ success: false,
351
+ error: `Request '${requestId}' not found`,
352
+ };
353
+ }
354
+ if (request.status !== 'pending') {
355
+ return {
356
+ success: false,
357
+ error: `Request '${requestId}' already completed with status '${request.status}'`,
358
+ };
359
+ }
360
+ await this.store.update(requestId, {
361
+ status: 'cancelled',
362
+ completedAt: new Date(),
363
+ });
364
+ return { success: true };
365
+ }
366
+ /**
367
+ * Stop the processor and clean up resources
368
+ */
369
+ destroy() {
370
+ this.destroyed = true;
371
+ if (this.timeoutChecker !== null) {
372
+ clearInterval(this.timeoutChecker);
373
+ this.timeoutChecker = null;
374
+ }
375
+ }
376
+ // ===========================================================================
377
+ // Private Methods
378
+ // ===========================================================================
379
+ getTransport(transport) {
380
+ switch (transport) {
381
+ case 'slack':
382
+ return this.transports.slack;
383
+ case 'email':
384
+ return this.transports.email;
385
+ default:
386
+ return undefined;
387
+ }
388
+ }
389
+ async sendViaTransport(transportName, transport, request) {
390
+ if (transportName === 'slack') {
391
+ const slackTransport = transport;
392
+ if (request.type === 'approval') {
393
+ const options = { requestId: request.id };
394
+ if (request.context !== undefined) {
395
+ options.context = request.context;
396
+ }
397
+ return slackTransport.sendApprovalRequest(request.target, request.content, options);
398
+ }
399
+ else if (request.type === 'question') {
400
+ return slackTransport.sendQuestion(request.target, request.content, {
401
+ requestId: request.id,
402
+ });
403
+ }
404
+ else {
405
+ return slackTransport.sendNotification(request.target, request.content);
406
+ }
407
+ }
408
+ if (transportName === 'email') {
409
+ const emailTransport = transport;
410
+ if (request.type === 'approval') {
411
+ const options = {
412
+ to: request.target,
413
+ request: request.content,
414
+ requestId: request.id,
415
+ };
416
+ if (request.context !== undefined) {
417
+ options.context = request.context;
418
+ }
419
+ return emailTransport.sendApprovalRequest(options);
420
+ }
421
+ else {
422
+ return emailTransport.sendNotification({
423
+ to: request.target,
424
+ message: request.content,
425
+ });
426
+ }
427
+ }
428
+ return {
429
+ success: false,
430
+ transport: transportName,
431
+ error: `Unsupported transport: ${transportName}`,
432
+ };
433
+ }
434
+ parseEmailApproval(content) {
435
+ const lower = content.toLowerCase().trim();
436
+ const approvePatterns = [/^approved/i, /^yes/i, /^lgtm/i, /^ok\b/i];
437
+ for (const pattern of approvePatterns) {
438
+ if (pattern.test(lower)) {
439
+ return true;
440
+ }
441
+ }
442
+ return false;
443
+ }
444
+ async notifyRequestorOfResult(request, result) {
445
+ if (!request.notifyChannel) {
446
+ return;
447
+ }
448
+ // Use Slack if available
449
+ const slackTransport = this.transports.slack;
450
+ if (slackTransport) {
451
+ const status = result.approved ? 'approved' : 'rejected';
452
+ const message = `Your request "${request.content}" was ${status}${result.notes ? `: ${result.notes}` : ''}`;
453
+ await slackTransport.sendNotification(request.notifyChannel, message);
454
+ }
455
+ }
456
+ startTimeoutChecker() {
457
+ this.timeoutChecker = setInterval(async () => {
458
+ if (this.destroyed) {
459
+ return;
460
+ }
461
+ try {
462
+ const expiredRequests = await this.store.listExpired();
463
+ for (const request of expiredRequests) {
464
+ // Update status to expired
465
+ await this.store.update(request.id, {
466
+ status: 'expired',
467
+ completedAt: new Date(),
468
+ });
469
+ // Call onTimeout callback
470
+ if (this.onTimeoutCallback) {
471
+ try {
472
+ await this.onTimeoutCallback({
473
+ requestId: request.id,
474
+ request,
475
+ });
476
+ }
477
+ catch {
478
+ // Swallow callback errors
479
+ }
480
+ }
481
+ }
482
+ }
483
+ catch {
484
+ // Swallow errors in timeout checker
485
+ }
486
+ }, this.checkIntervalMs);
487
+ }
488
+ }
489
+ // =============================================================================
490
+ // Factory Functions
491
+ // =============================================================================
492
+ /**
493
+ * Create a HumanRequestProcessor instance
494
+ *
495
+ * @example
496
+ * ```ts
497
+ * const processor = createHumanRequestProcessor({
498
+ * store: new InMemoryRequestStore(),
499
+ * transports: {
500
+ * slack: createSlackTransport({ botToken, signingSecret }),
501
+ * },
502
+ * onComplete: (data) => console.log('Completed:', data),
503
+ * onTimeout: (data) => console.log('Timed out:', data),
504
+ * })
505
+ * ```
506
+ */
507
+ export function createHumanRequestProcessor(config) {
508
+ return new HumanRequestProcessor(config);
509
+ }
510
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/dist/team.d.ts CHANGED
@@ -13,7 +13,8 @@ import type { WorkerTeam } from './types.js';
13
13
  *
14
14
  * @example
15
15
  * ```ts
16
- * const engineeringTeam = Team({
16
+ * const engineeringTeam = defineTeam({
17
+ * id: 'team_eng',
17
18
  * name: 'Engineering',
18
19
  * description: 'Product engineering team',
19
20
  * members: [
@@ -22,18 +23,20 @@ import type { WorkerTeam } from './types.js';
22
23
  * { id: 'ai-reviewer', name: 'Code Reviewer', role: 'Code Reviewer', type: 'ai' },
23
24
  * { id: 'ai-tester', name: 'Test Generator', role: 'Test Engineer', type: 'ai' },
24
25
  * ],
26
+ * contacts: { slack: '#engineering', email: 'eng@company.com' },
25
27
  * goals: [
26
28
  * 'Ship features on schedule',
27
29
  * 'Maintain code quality',
28
30
  * 'Reduce technical debt',
29
31
  * ],
30
- * lead: 'alice',
32
+ * lead: { id: 'alice', type: 'human', name: 'Alice' },
31
33
  * })
32
34
  * ```
33
35
  *
34
36
  * @example
35
37
  * ```ts
36
- * const supportTeam = Team({
38
+ * const supportTeam = defineTeam({
39
+ * id: 'team_support',
37
40
  * name: 'Customer Support',
38
41
  * description: '24/7 customer support team',
39
42
  * members: [
@@ -41,21 +44,23 @@ import type { WorkerTeam } from './types.js';
41
44
  * { id: 'support-ai-2', name: 'Support Bot Beta', role: 'Support Agent', type: 'ai' },
42
45
  * { id: 'escalation-human', name: 'Jane', role: 'Senior Support', type: 'human' },
43
46
  * ],
47
+ * contacts: { slack: '#support' },
44
48
  * goals: [
45
49
  * 'Maintain 95% satisfaction rate',
46
50
  * 'Response time under 5 minutes',
47
51
  * 'First contact resolution > 80%',
48
52
  * ],
49
- * lead: 'escalation-human',
53
+ * lead: { id: 'escalation-human', type: 'human', name: 'Jane' },
50
54
  * })
51
55
  * ```
52
56
  */
53
- export declare function Team(definition: WorkerTeam): WorkerTeam;
54
- export declare namespace Team {
57
+ export declare function defineTeam(definition: WorkerTeam): WorkerTeam;
58
+ export declare namespace defineTeam {
55
59
  var addMember: (team: WorkerTeam, member: WorkerTeam["members"][number]) => WorkerTeam;
56
60
  var removeMember: (team: WorkerTeam, memberId: string) => WorkerTeam;
57
61
  var aiMembers: (team: WorkerTeam) => import("./types.js").WorkerRef[];
58
62
  var humanMembers: (team: WorkerTeam) => import("./types.js").WorkerRef[];
59
63
  var byRole: (team: WorkerTeam, role: string) => import("./types.js").WorkerRef[];
60
64
  }
65
+ export { defineTeam as Team };
61
66
  //# sourceMappingURL=team.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../src/team.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,wBAAgB,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAEvD;yBAFe,IAAI;0BAsBZ,UAAU,UACR,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KACpC,UAAU;6BAiBc,UAAU,YAAY,MAAM,KAAG,UAAU;0BAiB5C,UAAU;6BAcP,UAAU;uBAchB,UAAU,QAAQ,MAAM"}
1
+ {"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../src/team.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAI5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAE7D;yBAFe,UAAU;0BAqBI,UAAU,UAAU,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAG,UAAU;6BAiB3D,UAAU,YAAY,MAAM,KAAG,UAAU;0BAiB5C,UAAU;6BAcP,UAAU;uBAchB,UAAU,QAAQ,MAAM;;AAGnD,OAAO,EAAE,UAAU,IAAI,IAAI,EAAE,CAAA"}