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
package/dist/client.js ADDED
@@ -0,0 +1,64 @@
1
+ /**
2
+ * RPC Client for Digital Workers
3
+ *
4
+ * Provides a typed RPC client that connects to the deployed
5
+ * digital-workers worker using rpc.do for remote procedure calls.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { createDigitalWorkersClient } from 'digital-workers/client'
10
+ *
11
+ * const client = createDigitalWorkersClient('https://digital-workers.workers.dev')
12
+ * const worker = await client.spawn({ name: 'my-agent', type: 'agent' })
13
+ * await client.send(worker.id, otherWorkerId, 'task', { data: 'hello' })
14
+ * ```
15
+ *
16
+ * @packageDocumentation
17
+ */
18
+ import { RPC, http } from 'rpc.do';
19
+ // ==================== Client Factory ====================
20
+ /** Default URL for the digital-workers worker */
21
+ const DEFAULT_URL = 'https://digital-workers.workers.dev';
22
+ /**
23
+ * Create a typed RPC client for the digital-workers worker
24
+ *
25
+ * @param url - The URL of the deployed digital-workers worker
26
+ * @param options - Optional client configuration
27
+ * @returns A typed RPC client with all DigitalWorkersServiceCore methods
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { createDigitalWorkersClient } from 'digital-workers/client'
32
+ *
33
+ * // Connect to production
34
+ * const client = createDigitalWorkersClient('https://digital-workers.workers.dev')
35
+ *
36
+ * // Spawn and manage workers
37
+ * const agent = await client.spawn({ name: 'my-agent', type: 'agent' })
38
+ * const human = await client.spawn({ name: 'reviewer', type: 'human' })
39
+ *
40
+ * // Send messages between workers
41
+ * await client.send(agent.id, human.id, 'review-request', { content: 'Please review' })
42
+ * const messages = await client.receive(human.id, { type: 'review-request' })
43
+ *
44
+ * // Coordinate multiple workers
45
+ * const task = await client.fanOut(agent.id, [worker1.id, worker2.id], 'process', data)
46
+ * const status = await client.getTaskStatus(task.id)
47
+ * ```
48
+ */
49
+ export function createDigitalWorkersClient(url = DEFAULT_URL, options) {
50
+ return RPC(http(url, options?.token));
51
+ }
52
+ /**
53
+ * Default client instance connected to the production digital-workers worker
54
+ *
55
+ * @example
56
+ * ```ts
57
+ * import client from 'digital-workers/client'
58
+ *
59
+ * const worker = await client.spawn({ name: 'my-agent' })
60
+ * ```
61
+ */
62
+ const client = createDigitalWorkersClient();
63
+ export default client;
64
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAuJlC,2DAA2D;AAE3D,iDAAiD;AACjD,MAAM,WAAW,GAAG,qCAAqC,CAAA;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAc,WAAW,EACzB,OAAqC;IAErC,OAAO,GAAG,CAAoB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,GAAG,0BAA0B,EAAE,CAAA;AAE3C,eAAe,MAAM,CAAA"}
package/dist/decide.d.ts CHANGED
@@ -1,18 +1,51 @@
1
1
  /**
2
2
  * Decision-making functionality for digital workers
3
+ *
4
+ * IMPORTANT: Worker-Assisted Decisions vs LLM Judging
5
+ * ----------------------------------------------------
6
+ * This module provides structured decision-making that can involve human
7
+ * decision-makers, NOT simple LLM-based option selection.
8
+ *
9
+ * - `digital-workers.decide()` - Structured decision-making with criteria
10
+ * evaluation, confidence scoring, and optional human approval routing.
11
+ *
12
+ * - `ai-functions.decide()` - LLM as judge - compares options and picks
13
+ * the best one based on criteria (curried function pattern).
14
+ *
15
+ * Use digital-workers when you need:
16
+ * - Multi-criteria decision analysis
17
+ * - Confidence scores and alternative rankings
18
+ * - Human approval for critical decisions
19
+ * - Audit trail of decision reasoning
20
+ *
21
+ * Use ai-functions when you need:
22
+ * - Simple "pick the best" comparison
23
+ * - LLM judging between options
24
+ * - Curried decision function pattern
25
+ *
26
+ * @module
3
27
  */
4
28
  import type { Decision, DecideOptions } from './types.js';
5
29
  /**
6
- * Make a decision from a set of options
30
+ * Make a structured decision with criteria evaluation and optional human routing.
7
31
  *
8
- * Uses AI to evaluate options and make a reasoned decision,
9
- * or can route to human decision-makers for critical choices.
32
+ * **Key Difference from ai-functions.decide():**
33
+ * Unlike `ai-functions.decide()` which is a curried LLM judge function
34
+ * (e.g., `decide\`criteria\`(optionA, optionB)`), this function provides
35
+ * comprehensive decision analysis with:
36
+ * - Multi-criteria scoring
37
+ * - Confidence levels
38
+ * - Alternative rankings
39
+ * - Optional human approval routing via `decide.withApproval()`
10
40
  *
11
- * @param options - Decision options with configuration
12
- * @returns Promise resolving to decision result
41
+ * This is a **decision framework**, not a simple LLM comparison primitive.
42
+ *
43
+ * @param options - Decision options including choices, context, and criteria
44
+ * @returns Promise resolving to decision with choice, reasoning, confidence, and alternatives
13
45
  *
14
46
  * @example
15
47
  * ```ts
48
+ * // Structured decision with criteria evaluation
16
49
  * const decision = await decide({
17
50
  * options: ['Option A', 'Option B', 'Option C'],
18
51
  * context: 'We need to choose a technology stack for our new project',
@@ -26,7 +59,8 @@ import type { Decision, DecideOptions } from './types.js';
26
59
  *
27
60
  * console.log(`Decision: ${decision.choice}`)
28
61
  * console.log(`Reasoning: ${decision.reasoning}`)
29
- * console.log(`Confidence: ${decision.confidence}`)
62
+ * console.log(`Confidence: ${decision.confidence}`) // 0-1 score
63
+ * console.log(`Alternatives:`, decision.alternatives)
30
64
  * ```
31
65
  *
32
66
  * @example
@@ -47,6 +81,8 @@ import type { Decision, DecideOptions } from './types.js';
47
81
  * criteria: ['Cost', 'Time to market', 'Risk', 'Scalability'],
48
82
  * })
49
83
  * ```
84
+ *
85
+ * @see {@link ai-functions#decide} for LLM-as-judge option comparison
50
86
  */
51
87
  export declare function decide<T = string>(options: DecideOptions<T>): Promise<Decision<T>>;
52
88
  export declare namespace decide {
@@ -1 +1 @@
1
- {"version":3,"file":"decide.d.ts","sourceRoot":"","sources":["../src/decide.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAsB,MAAM,CAAC,CAAC,GAAG,MAAM,EACrC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAyEtB;yBA3EqB,MAAM;0BAqGhB,MAAM,YACN,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;qBA8BP,CAAC,kBACnB,CAAC,EAAE,YACA,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,aAChC,MAAM,EAAE,KACjB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;uBA6EpB,CAAC,oBACnB,aAAa,CAAC,CAAC,CAAC,YACf,MAAM,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC"}
1
+ {"version":3,"file":"decide.d.ts","sourceRoot":"","sources":["../src/decide.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,wBAAsB,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CA8ExF;yBA9EqB,MAAM;0BAwGhB,MAAM,YACN,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;qBA+BP,CAAC,kBACnB,CAAC,EAAE,YACA,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,aAChC,MAAM,EAAE,KACjB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;uBAkFpB,CAAC,oBACnB,aAAa,CAAC,CAAC,CAAC,YACf,MAAM,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC"}
package/dist/decide.js CHANGED
@@ -1,18 +1,51 @@
1
1
  /**
2
2
  * Decision-making functionality for digital workers
3
+ *
4
+ * IMPORTANT: Worker-Assisted Decisions vs LLM Judging
5
+ * ----------------------------------------------------
6
+ * This module provides structured decision-making that can involve human
7
+ * decision-makers, NOT simple LLM-based option selection.
8
+ *
9
+ * - `digital-workers.decide()` - Structured decision-making with criteria
10
+ * evaluation, confidence scoring, and optional human approval routing.
11
+ *
12
+ * - `ai-functions.decide()` - LLM as judge - compares options and picks
13
+ * the best one based on criteria (curried function pattern).
14
+ *
15
+ * Use digital-workers when you need:
16
+ * - Multi-criteria decision analysis
17
+ * - Confidence scores and alternative rankings
18
+ * - Human approval for critical decisions
19
+ * - Audit trail of decision reasoning
20
+ *
21
+ * Use ai-functions when you need:
22
+ * - Simple "pick the best" comparison
23
+ * - LLM judging between options
24
+ * - Curried decision function pattern
25
+ *
26
+ * @module
3
27
  */
4
28
  import { generateObject } from 'ai-functions';
5
29
  /**
6
- * Make a decision from a set of options
30
+ * Make a structured decision with criteria evaluation and optional human routing.
7
31
  *
8
- * Uses AI to evaluate options and make a reasoned decision,
9
- * or can route to human decision-makers for critical choices.
32
+ * **Key Difference from ai-functions.decide():**
33
+ * Unlike `ai-functions.decide()` which is a curried LLM judge function
34
+ * (e.g., `decide\`criteria\`(optionA, optionB)`), this function provides
35
+ * comprehensive decision analysis with:
36
+ * - Multi-criteria scoring
37
+ * - Confidence levels
38
+ * - Alternative rankings
39
+ * - Optional human approval routing via `decide.withApproval()`
10
40
  *
11
- * @param options - Decision options with configuration
12
- * @returns Promise resolving to decision result
41
+ * This is a **decision framework**, not a simple LLM comparison primitive.
42
+ *
43
+ * @param options - Decision options including choices, context, and criteria
44
+ * @returns Promise resolving to decision with choice, reasoning, confidence, and alternatives
13
45
  *
14
46
  * @example
15
47
  * ```ts
48
+ * // Structured decision with criteria evaluation
16
49
  * const decision = await decide({
17
50
  * options: ['Option A', 'Option B', 'Option C'],
18
51
  * context: 'We need to choose a technology stack for our new project',
@@ -26,7 +59,8 @@ import { generateObject } from 'ai-functions';
26
59
  *
27
60
  * console.log(`Decision: ${decision.choice}`)
28
61
  * console.log(`Reasoning: ${decision.reasoning}`)
29
- * console.log(`Confidence: ${decision.confidence}`)
62
+ * console.log(`Confidence: ${decision.confidence}`) // 0-1 score
63
+ * console.log(`Alternatives:`, decision.alternatives)
30
64
  * ```
31
65
  *
32
66
  * @example
@@ -47,9 +81,11 @@ import { generateObject } from 'ai-functions';
47
81
  * criteria: ['Cost', 'Time to market', 'Risk', 'Scalability'],
48
82
  * })
49
83
  * ```
84
+ *
85
+ * @see {@link ai-functions#decide} for LLM-as-judge option comparison
50
86
  */
51
87
  export async function decide(options) {
52
- const { options: choices, context, criteria = [], includeReasoning = true, } = options;
88
+ const { options: choices, context, criteria = [], includeReasoning = true } = options;
53
89
  // Format context for the prompt
54
90
  const contextStr = typeof context === 'string'
55
91
  ? context
@@ -85,7 +121,9 @@ export async function decide(options) {
85
121
  },
86
122
  system: `You are a decision-making expert. Analyze the options carefully and make the best choice based on the context and criteria provided.
87
123
 
88
- ${criteria.length > 0 ? `Evaluation Criteria:\n${criteria.map((c, i) => `${i + 1}. ${c}`).join('\n')}` : ''}`,
124
+ ${criteria.length > 0
125
+ ? `Evaluation Criteria:\n${criteria.map((c, i) => `${i + 1}. ${c}`).join('\n')}`
126
+ : ''}`,
89
127
  prompt: `Make a decision based on the following:
90
128
 
91
129
  Context:
@@ -94,7 +132,9 @@ ${contextStr}
94
132
  Options:
95
133
  ${choicesStr}
96
134
 
97
- ${criteria.length > 0 ? `\nEvaluate each option against these criteria:\n${criteria.join(', ')}` : ''}
135
+ ${criteria.length > 0
136
+ ? `\nEvaluate each option against these criteria:\n${criteria.join(', ')}`
137
+ : ''}
98
138
 
99
139
  Provide your decision with clear reasoning.`,
100
140
  });
@@ -181,7 +221,9 @@ decide.prioritize = async (items, context, criteria = []) => {
181
221
  },
182
222
  system: `You are a prioritization expert. Rank items by priority based on the context and criteria.
183
223
 
184
- ${criteria.length > 0 ? `Prioritization Criteria:\n${criteria.map((c, i) => `${i + 1}. ${c}`).join('\n')}` : ''}`,
224
+ ${criteria.length > 0
225
+ ? `Prioritization Criteria:\n${criteria.map((c, i) => `${i + 1}. ${c}`).join('\n')}`
226
+ : ''}`,
185
227
  prompt: `Prioritize the following items:
186
228
 
187
229
  Context:
@@ -236,10 +278,11 @@ decide.withApproval = async (options, approver) => {
236
278
  context: options.context,
237
279
  },
238
280
  });
281
+ const approvedBy = approval.approvedBy?.id ?? approval.approvedBy?.name;
239
282
  return {
240
283
  ...decision,
241
284
  approved: approval.approved,
242
- approvedBy: approval.approvedBy?.id ?? approval.approvedBy?.name,
285
+ ...(approvedBy !== undefined && { approvedBy }),
243
286
  };
244
287
  };
245
288
  //# sourceMappingURL=decide.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decide.js","sourceRoot":"","sources":["../src/decide.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decide.js","sourceRoot":"","sources":["../src/decide.ts"],"names":[],"mappings":"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"}
package/dist/do.d.ts CHANGED
@@ -1,20 +1,47 @@
1
1
  /**
2
2
  * Task execution functionality for digital workers
3
+ *
4
+ * IMPORTANT: Worker Routing vs Direct LLM Calls
5
+ * ---------------------------------------------
6
+ * This module provides worker-routed task execution, NOT direct LLM calls.
7
+ *
8
+ * - `digital-workers.do()` - Routes tasks to Workers (AI Agents or Humans)
9
+ * based on capability matching, load balancing, and escalation policies.
10
+ *
11
+ * - `ai-functions.do()` - Directly calls the LLM to describe task execution.
12
+ *
13
+ * Use digital-workers when you need:
14
+ * - Task routing to appropriate workers
15
+ * - Human-in-the-loop escalation
16
+ * - Capability-based worker selection
17
+ * - Retry and timeout handling across workers
18
+ *
19
+ * Use ai-functions when you need:
20
+ * - Direct LLM text generation
21
+ * - Simple AI task description
22
+ * - No worker coordination required
23
+ *
24
+ * @module
3
25
  */
4
26
  import type { TaskResult, DoOptions } from './types.js';
5
27
  /**
6
- * Execute a task
28
+ * Execute a task by routing to an appropriate Worker (AI Agent or Human).
7
29
  *
8
- * Routes tasks to appropriate workers (AI or human) based on complexity
9
- * and requirements. Handles retries, timeouts, and background execution.
30
+ * **Key Difference from ai-functions.do():**
31
+ * Unlike `ai-functions.do()` which directly calls the LLM to describe what
32
+ * actions would be taken, this function routes the task to a Worker (Agent
33
+ * or Human) based on capability matching. The Worker then executes the task
34
+ * using their specific tools and capabilities.
35
+ *
36
+ * This is a **worker coordination primitive**, not a direct LLM primitive.
10
37
  *
11
38
  * @param task - Description of the task to execute
12
39
  * @param options - Execution options (retries, timeout, background, etc.)
13
- * @returns Promise resolving to task result
40
+ * @returns Promise resolving to task result with execution details
14
41
  *
15
42
  * @example
16
43
  * ```ts
17
- * // Execute a simple task
44
+ * // Route task to appropriate worker based on capability
18
45
  * const result = await do('Generate monthly sales report', {
19
46
  * timeout: 60000, // 1 minute
20
47
  * context: {
@@ -30,7 +57,7 @@ import type { TaskResult, DoOptions } from './types.js';
30
57
  *
31
58
  * @example
32
59
  * ```ts
33
- * // Execute with retries
60
+ * // Execute with retries across workers
34
61
  * const result = await do('Sync data to backup server', {
35
62
  * maxRetries: 3,
36
63
  * timeout: 30000,
@@ -43,7 +70,7 @@ import type { TaskResult, DoOptions } from './types.js';
43
70
  *
44
71
  * @example
45
72
  * ```ts
46
- * // Execute in background
73
+ * // Execute in background (worker handles async)
47
74
  * const result = await do('Process large dataset', {
48
75
  * background: true,
49
76
  * context: {
@@ -52,6 +79,8 @@ import type { TaskResult, DoOptions } from './types.js';
52
79
  * },
53
80
  * })
54
81
  * ```
82
+ *
83
+ * @see {@link ai-functions#do} for direct LLM task description
55
84
  */
56
85
  export declare function doTask<T = unknown>(task: string, options?: DoOptions): Promise<TaskResult<T>>;
57
86
  export declare namespace doTask {
package/dist/do.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"do.d.ts","sourceRoot":"","sources":["../src/do.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAsB,MAAM,CAAC,CAAC,GAAG,OAAO,EACtC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,SAAc,GACtB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAiGxB;yBApGqB,MAAM;mBA8HH,CAAC,mBACjB,MAAM,EAAE,YACN,SAAS,KACjB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;mBAsBP,CAAC,mBACjB,MAAM,EAAE,YACN,SAAS,KACjB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;2BAiCC,CAAC,kBAC1B,MAAM,gBACE,MAAM,EAAE,YACb,SAAS,KACjB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;AAxFzB,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,CAAA"}
1
+ {"version":3,"file":"do.d.ts","sourceRoot":"","sources":["../src/do.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,wBAAsB,MAAM,CAAC,CAAC,GAAG,OAAO,EACtC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,SAAc,GACtB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAmHxB;yBAtHqB,MAAM;mBAgJH,CAAC,mBACjB,MAAM,EAAE,YACN,SAAS,KACjB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;mBAsBP,CAAC,mBACjB,MAAM,EAAE,YACN,SAAS,KACjB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;2BAiCC,CAAC,kBAC1B,MAAM,gBACE,MAAM,EAAE,YACb,SAAS,KACjB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;AAxFzB,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,CAAA"}
package/dist/do.js CHANGED
@@ -1,20 +1,46 @@
1
1
  /**
2
2
  * Task execution functionality for digital workers
3
+ *
4
+ * IMPORTANT: Worker Routing vs Direct LLM Calls
5
+ * ---------------------------------------------
6
+ * This module provides worker-routed task execution, NOT direct LLM calls.
7
+ *
8
+ * - `digital-workers.do()` - Routes tasks to Workers (AI Agents or Humans)
9
+ * based on capability matching, load balancing, and escalation policies.
10
+ *
11
+ * - `ai-functions.do()` - Directly calls the LLM to describe task execution.
12
+ *
13
+ * Use digital-workers when you need:
14
+ * - Task routing to appropriate workers
15
+ * - Human-in-the-loop escalation
16
+ * - Capability-based worker selection
17
+ * - Retry and timeout handling across workers
18
+ *
19
+ * Use ai-functions when you need:
20
+ * - Direct LLM text generation
21
+ * - Simple AI task description
22
+ * - No worker coordination required
23
+ *
24
+ * @module
3
25
  */
4
- import { define } from 'ai-functions';
5
26
  /**
6
- * Execute a task
27
+ * Execute a task by routing to an appropriate Worker (AI Agent or Human).
7
28
  *
8
- * Routes tasks to appropriate workers (AI or human) based on complexity
9
- * and requirements. Handles retries, timeouts, and background execution.
29
+ * **Key Difference from ai-functions.do():**
30
+ * Unlike `ai-functions.do()` which directly calls the LLM to describe what
31
+ * actions would be taken, this function routes the task to a Worker (Agent
32
+ * or Human) based on capability matching. The Worker then executes the task
33
+ * using their specific tools and capabilities.
34
+ *
35
+ * This is a **worker coordination primitive**, not a direct LLM primitive.
10
36
  *
11
37
  * @param task - Description of the task to execute
12
38
  * @param options - Execution options (retries, timeout, background, etc.)
13
- * @returns Promise resolving to task result
39
+ * @returns Promise resolving to task result with execution details
14
40
  *
15
41
  * @example
16
42
  * ```ts
17
- * // Execute a simple task
43
+ * // Route task to appropriate worker based on capability
18
44
  * const result = await do('Generate monthly sales report', {
19
45
  * timeout: 60000, // 1 minute
20
46
  * context: {
@@ -30,7 +56,7 @@ import { define } from 'ai-functions';
30
56
  *
31
57
  * @example
32
58
  * ```ts
33
- * // Execute with retries
59
+ * // Execute with retries across workers
34
60
  * const result = await do('Sync data to backup server', {
35
61
  * maxRetries: 3,
36
62
  * timeout: 30000,
@@ -43,7 +69,7 @@ import { define } from 'ai-functions';
43
69
  *
44
70
  * @example
45
71
  * ```ts
46
- * // Execute in background
72
+ * // Execute in background (worker handles async)
47
73
  * const result = await do('Process large dataset', {
48
74
  * background: true,
49
75
  * context: {
@@ -52,55 +78,72 @@ import { define } from 'ai-functions';
52
78
  * },
53
79
  * })
54
80
  * ```
81
+ *
82
+ * @see {@link ai-functions#do} for direct LLM task description
55
83
  */
56
84
  export async function doTask(task, options = {}) {
57
- const { maxRetries = 0, timeout, background = false, context, } = options;
85
+ const { maxRetries = 0, timeout, background = false, context } = options;
58
86
  const startTime = Date.now();
59
87
  const steps = [];
60
- // Use agentic function for complex tasks
61
- const taskFn = define.agentic({
62
- name: 'executeTask',
63
- description: 'Execute a task using available tools and capabilities',
64
- args: {
65
- task: 'Description of the task to execute',
66
- contextInfo: 'Additional context and parameters for the task',
67
- },
68
- returnType: {
69
- result: 'The result of executing the task',
70
- steps: ['List of steps taken to complete the task'],
71
- },
72
- instructions: `Execute the following task:
73
-
74
- ${task}
75
-
76
- ${context ? `Context: ${JSON.stringify(context, null, 2)}` : ''}
77
-
78
- Work step-by-step to complete the task. Use available tools as needed.
79
- Document each step you take for transparency.`,
80
- maxIterations: 10,
81
- tools: [], // Tools would be provided by the execution environment
82
- });
83
88
  let retries = 0;
84
89
  let lastError;
85
90
  while (retries <= maxRetries) {
86
91
  try {
92
+ // Use generateObject directly for more reliable execution
93
+ const { generateObject } = await import('ai-functions');
94
+ const executeTask = async () => {
95
+ const response = await generateObject({
96
+ model: 'sonnet',
97
+ schema: {
98
+ result: 'The result of executing the task - provide a detailed response',
99
+ steps: [
100
+ {
101
+ action: 'Description of what was done in this step',
102
+ result: 'Outcome of this step',
103
+ },
104
+ ],
105
+ success: 'Whether the task was completed successfully (boolean)',
106
+ },
107
+ system: `You are a capable AI worker executing tasks. You have access to the following context:
108
+
109
+ ${context ? JSON.stringify(context, null, 2) : 'No additional context provided.'}
110
+
111
+ Execute the task step-by-step, documenting each action you take.
112
+ Provide detailed, actionable results that can be used directly.`,
113
+ prompt: `Execute the following task and provide the result:
114
+
115
+ Task: ${task}
116
+
117
+ Work through this task carefully:
118
+ 1. Analyze what needs to be done
119
+ 2. Execute each step
120
+ 3. Provide the final result
121
+
122
+ Return a detailed result that fulfills the task requirements.`,
123
+ });
124
+ const obj = response.object;
125
+ if (!obj.success) {
126
+ throw new Error('Task execution failed');
127
+ }
128
+ return { result: obj.result, steps: obj.steps };
129
+ };
87
130
  const response = await Promise.race([
88
- taskFn.call({ task, contextInfo: context ? JSON.stringify(context) : '' }),
131
+ executeTask(),
89
132
  timeout
90
133
  ? new Promise((_, reject) => setTimeout(() => reject(new Error('Task timeout')), timeout))
91
134
  : new Promise(() => { }), // Never resolves if no timeout
92
135
  ]);
93
- const typedResponse = response;
94
136
  // Track steps if provided
95
- if (typedResponse.steps) {
96
- steps.push(...typedResponse.steps.map((step) => ({
97
- ...step,
137
+ if (response.steps) {
138
+ steps.push(...response.steps.map((step) => ({
139
+ action: String(step.action),
140
+ result: step.result,
98
141
  timestamp: new Date(),
99
142
  })));
100
143
  }
101
144
  const duration = Date.now() - startTime;
102
145
  return {
103
- result: typedResponse.result,
146
+ result: response.result,
104
147
  success: true,
105
148
  duration,
106
149
  steps,
@@ -179,7 +222,7 @@ doTask.sequence = async (tasks, options = {}) => {
179
222
  const result = await doTask(task, options);
180
223
  results.push(result);
181
224
  // Stop if a task fails (unless we're continuing on error)
182
- if (!result.success && !options.context?.continueOnError) {
225
+ if (!result.success && !options.context?.['continueOnError']) {
183
226
  break;
184
227
  }
185
228
  }
package/dist/do.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"do.js","sourceRoot":"","sources":["../src/do.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"do.js","sourceRoot":"","sources":["../src/do.ts"],"names":[],"mappings":"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"}