digital-workers 2.1.3 → 2.4.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/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +17 -0
  3. package/README.md +2 -0
  4. package/dist/actions.d.ts.map +1 -1
  5. package/dist/actions.js +33 -21
  6. package/dist/actions.js.map +1 -1
  7. package/dist/agent-comms.d.ts.map +1 -1
  8. package/dist/agent-comms.js +36 -25
  9. package/dist/agent-comms.js.map +1 -1
  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.js +3 -3
  23. package/dist/capability-tiers.js.map +1 -1
  24. package/dist/cascade-context.d.ts +28 -28
  25. package/dist/client.d.ts +162 -0
  26. package/dist/client.d.ts.map +1 -0
  27. package/dist/client.js +64 -0
  28. package/dist/client.js.map +1 -0
  29. package/dist/decide.d.ts +42 -6
  30. package/dist/decide.d.ts.map +1 -1
  31. package/dist/decide.js +54 -11
  32. package/dist/decide.js.map +1 -1
  33. package/dist/do.d.ts +36 -7
  34. package/dist/do.d.ts.map +1 -1
  35. package/dist/do.js +82 -39
  36. package/dist/do.js.map +1 -1
  37. package/dist/error-escalation.d.ts.map +1 -1
  38. package/dist/error-escalation.js +38 -38
  39. package/dist/error-escalation.js.map +1 -1
  40. package/dist/generate.d.ts +48 -7
  41. package/dist/generate.d.ts.map +1 -1
  42. package/dist/generate.js +49 -8
  43. package/dist/generate.js.map +1 -1
  44. package/dist/goals.d.ts +10 -9
  45. package/dist/goals.d.ts.map +1 -1
  46. package/dist/goals.js +30 -24
  47. package/dist/goals.js.map +1 -1
  48. package/dist/image.d.ts +189 -0
  49. package/dist/image.d.ts.map +1 -0
  50. package/dist/image.js +528 -0
  51. package/dist/image.js.map +1 -0
  52. package/dist/index.d.ts +49 -2
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +58 -2
  55. package/dist/index.js.map +1 -1
  56. package/dist/is.d.ts +45 -10
  57. package/dist/is.d.ts.map +1 -1
  58. package/dist/is.js +56 -21
  59. package/dist/is.js.map +1 -1
  60. package/dist/kpis.d.ts +24 -15
  61. package/dist/kpis.d.ts.map +1 -1
  62. package/dist/kpis.js +16 -14
  63. package/dist/kpis.js.map +1 -1
  64. package/dist/load-balancing.d.ts.map +1 -1
  65. package/dist/load-balancing.js +124 -38
  66. package/dist/load-balancing.js.map +1 -1
  67. package/dist/logger.d.ts +76 -0
  68. package/dist/logger.d.ts.map +1 -0
  69. package/dist/logger.js +39 -0
  70. package/dist/logger.js.map +1 -0
  71. package/dist/notify.d.ts +38 -9
  72. package/dist/notify.d.ts.map +1 -1
  73. package/dist/notify.js +72 -17
  74. package/dist/notify.js.map +1 -1
  75. package/dist/role.d.ts +5 -4
  76. package/dist/role.d.ts.map +1 -1
  77. package/dist/role.js +13 -10
  78. package/dist/role.js.map +1 -1
  79. package/dist/runtime.d.ts +310 -0
  80. package/dist/runtime.d.ts.map +1 -0
  81. package/dist/runtime.js +510 -0
  82. package/dist/runtime.js.map +1 -0
  83. package/dist/team.d.ts +11 -6
  84. package/dist/team.d.ts.map +1 -1
  85. package/dist/team.js +22 -15
  86. package/dist/team.js.map +1 -1
  87. package/dist/transports/email.d.ts +318 -0
  88. package/dist/transports/email.d.ts.map +1 -0
  89. package/dist/transports/email.js +779 -0
  90. package/dist/transports/email.js.map +1 -0
  91. package/dist/transports/slack.d.ts +515 -0
  92. package/dist/transports/slack.d.ts.map +1 -0
  93. package/dist/transports/slack.js +844 -0
  94. package/dist/transports/slack.js.map +1 -0
  95. package/dist/transports.d.ts.map +1 -1
  96. package/dist/transports.js +44 -25
  97. package/dist/transports.js.map +1 -1
  98. package/dist/types.d.ts +141 -19
  99. package/dist/types.d.ts.map +1 -1
  100. package/dist/types.js +5 -0
  101. package/dist/types.js.map +1 -1
  102. package/dist/utils/id.d.ts +19 -0
  103. package/dist/utils/id.d.ts.map +1 -0
  104. package/dist/utils/id.js +21 -0
  105. package/dist/utils/id.js.map +1 -0
  106. package/dist/video.d.ts +203 -0
  107. package/dist/video.d.ts.map +1 -0
  108. package/dist/video.js +528 -0
  109. package/dist/video.js.map +1 -0
  110. package/dist/worker.d.ts +343 -0
  111. package/dist/worker.d.ts.map +1 -0
  112. package/dist/worker.js +698 -0
  113. package/dist/worker.js.map +1 -0
  114. package/package.json +32 -14
  115. package/src/actions.ts +39 -30
  116. package/src/agent-comms.ts +54 -92
  117. package/src/approve.ts +91 -20
  118. package/src/ask.ts +99 -25
  119. package/src/browse.ts +627 -0
  120. package/src/capability-tiers.ts +5 -5
  121. package/src/client.ts +221 -0
  122. package/src/decide.ts +81 -35
  123. package/src/do.ts +98 -52
  124. package/src/error-escalation.ts +55 -67
  125. package/src/generate.ts +52 -18
  126. package/src/goals.ts +36 -27
  127. package/src/image.ts +816 -0
  128. package/src/index.ts +187 -2
  129. package/src/is.ts +59 -25
  130. package/src/kpis.ts +41 -36
  131. package/src/load-balancing.ts +132 -46
  132. package/src/logger.ts +93 -0
  133. package/src/notify.ts +78 -17
  134. package/src/role.ts +30 -20
  135. package/src/runtime.ts +796 -0
  136. package/src/team.ts +24 -19
  137. package/src/transports/email.ts +1160 -0
  138. package/src/transports/slack.ts +1320 -0
  139. package/src/transports.ts +58 -43
  140. package/src/types.ts +174 -46
  141. package/src/utils/id.ts +21 -0
  142. package/src/video.ts +906 -0
  143. package/src/worker.ts +1007 -0
  144. package/test/approve.test.ts +305 -0
  145. package/test/ask.test.ts +274 -0
  146. package/test/browse.test.ts +361 -0
  147. package/test/decide.test.ts +252 -0
  148. package/test/do.test.ts +144 -0
  149. package/test/error-logging.test.ts +357 -0
  150. package/test/generate.test.ts +319 -0
  151. package/test/image.test.ts +398 -0
  152. package/test/is.test.ts +287 -0
  153. package/test/load-balancing-safety.test.ts +404 -0
  154. package/test/notify.test.ts +434 -0
  155. package/test/primitives.test.ts +320 -0
  156. package/test/runtime-integration.test.ts +892 -0
  157. package/test/transports/crypto.test.ts +230 -0
  158. package/test/transports/email.test.ts +866 -0
  159. package/test/transports/id-generation.test.ts +91 -0
  160. package/test/transports/slack.test.ts +760 -0
  161. package/test/type-safety.test.ts +834 -0
  162. package/test/types.test.ts +60 -2
  163. package/test/video.test.ts +530 -0
  164. package/test/worker.test.ts +1433 -0
  165. package/tsconfig.json +4 -1
  166. package/vitest.config.ts +42 -0
  167. package/wrangler.jsonc +36 -0
  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,203 @@
1
+ /**
2
+ * Video generation functionality for digital workers
3
+ *
4
+ * This module provides video generation within a worker context,
5
+ * supporting various AI video generation models (Runway, Pika, etc.)
6
+ * with rich metadata about the generation process.
7
+ *
8
+ * @module
9
+ */
10
+ /**
11
+ * Video resolution options
12
+ */
13
+ export type VideoResolution = '480p' | '720p' | '1080p' | '4k';
14
+ /**
15
+ * Video aspect ratio options
16
+ */
17
+ export type VideoAspectRatio = '16:9' | '9:16' | '1:1' | '4:3' | '21:9';
18
+ /**
19
+ * Supported video generation models
20
+ */
21
+ export type VideoModel = 'runway-gen3' | 'runway-gen2' | 'pika-1.0' | 'pika-1.5' | 'stable-video' | 'minimax' | 'kling' | 'luma' | string;
22
+ /**
23
+ * Video style presets
24
+ */
25
+ export type VideoStyle = 'cinematic' | 'anime' | 'realistic' | 'cartoon' | 'documentary' | 'vintage' | 'noir' | 'fantasy' | 'sci-fi' | string;
26
+ /**
27
+ * Options for video generation
28
+ */
29
+ export interface VideoOptions {
30
+ /** Text prompt describing the video to generate */
31
+ prompt: string;
32
+ /** Video duration in seconds (default: 4) */
33
+ duration?: number;
34
+ /** Frames per second (default: 24) */
35
+ fps?: number;
36
+ /** Video resolution (default: '1080p') */
37
+ resolution?: VideoResolution;
38
+ /** Aspect ratio (default: '16:9') */
39
+ aspectRatio?: VideoAspectRatio;
40
+ /** Visual style preset */
41
+ style?: VideoStyle;
42
+ /** AI model to use */
43
+ model?: VideoModel;
44
+ /** Negative prompt - what to avoid */
45
+ negativePrompt?: string;
46
+ /** Guidance scale for generation (1-20) */
47
+ guidance?: number;
48
+ /** Random seed for reproducibility */
49
+ seed?: number;
50
+ /** Camera motion type */
51
+ motion?: 'static' | 'pan' | 'zoom' | 'orbit' | 'dolly' | 'handheld';
52
+ /** Motion intensity (0-1) */
53
+ motionIntensity?: number;
54
+ /** Whether to loop the video */
55
+ loop?: boolean;
56
+ /** Additional model-specific parameters */
57
+ modelParams?: Record<string, unknown>;
58
+ }
59
+ /**
60
+ * Metadata about the generated video
61
+ */
62
+ export interface VideoMetadata {
63
+ /** Model used for generation */
64
+ model: string;
65
+ /** Video duration in seconds */
66
+ duration: number;
67
+ /** Video resolution */
68
+ resolution: string;
69
+ /** Frames per second */
70
+ fps: number;
71
+ /** Aspect ratio */
72
+ aspectRatio: string;
73
+ /** Generation time in milliseconds */
74
+ generationTime: number;
75
+ /** File size in bytes (if available) */
76
+ fileSize?: number;
77
+ /** Video format */
78
+ format?: string;
79
+ /** Style applied */
80
+ style?: string;
81
+ /** Seed used for generation */
82
+ seed?: number;
83
+ /** Cost in credits/tokens (if applicable) */
84
+ cost?: number;
85
+ }
86
+ /**
87
+ * Result of video generation
88
+ */
89
+ export interface VideoResult {
90
+ /** URL of the generated video */
91
+ url: string;
92
+ /** Original prompt used */
93
+ prompt: string;
94
+ /** Generation metadata */
95
+ metadata: VideoMetadata;
96
+ /** Thumbnail URL (if available) */
97
+ thumbnail?: string;
98
+ /** Preview GIF URL (if available) */
99
+ preview?: string;
100
+ /** Status of generation */
101
+ status: 'completed' | 'processing' | 'failed';
102
+ /** Error message if failed */
103
+ error?: string;
104
+ }
105
+ /**
106
+ * Options for video-from-image generation
107
+ */
108
+ export interface VideoFromImageOptions extends Omit<VideoOptions, 'prompt'> {
109
+ /** Source image URL */
110
+ imageUrl: string;
111
+ /** Text prompt describing the desired motion/animation */
112
+ prompt: string;
113
+ /** How much the image can change (0-1) */
114
+ imageFidelity?: number;
115
+ }
116
+ /**
117
+ * Options for video extension
118
+ */
119
+ export interface VideoExtendOptions {
120
+ /** Source video URL */
121
+ videoUrl: string;
122
+ /** Additional duration in seconds to add */
123
+ duration: number;
124
+ /** Prompt for the extension (optional) */
125
+ prompt?: string;
126
+ /** Direction to extend: beginning or end */
127
+ direction?: 'forward' | 'backward';
128
+ /** Overlap frames for smoother transition */
129
+ overlap?: number;
130
+ }
131
+ /**
132
+ * Options for video editing
133
+ */
134
+ export interface VideoEditOptions {
135
+ /** Source video URL */
136
+ videoUrl: string;
137
+ /** Edit prompt describing changes */
138
+ prompt: string;
139
+ /** Specific region to edit (if supported) */
140
+ region?: {
141
+ x: number;
142
+ y: number;
143
+ width: number;
144
+ height: number;
145
+ };
146
+ /** Mask image URL for selective editing */
147
+ maskUrl?: string;
148
+ /** Edit strength (0-1) */
149
+ strength?: number;
150
+ /** Preserve audio from original */
151
+ preserveAudio?: boolean;
152
+ }
153
+ /**
154
+ * Generate a video from a text prompt.
155
+ *
156
+ * Creates AI-generated video content using models like Runway, Pika,
157
+ * Stable Video, and others. Returns the video URL with rich metadata
158
+ * about the generation process.
159
+ *
160
+ * @param prompt - Text description of the video to generate
161
+ * @param options - Generation options (duration, fps, resolution, model, etc.)
162
+ * @returns Promise resolving to VideoResult with URL and metadata
163
+ *
164
+ * @example
165
+ * ```ts
166
+ * // Basic video generation
167
+ * const result = await video('A serene mountain lake at sunset with gentle ripples')
168
+ * console.log(result.url) // URL of generated video
169
+ * console.log(result.metadata.duration) // Video duration in seconds
170
+ * ```
171
+ *
172
+ * @example
173
+ * ```ts
174
+ * // With options
175
+ * const result = await video('A futuristic city with flying cars', {
176
+ * duration: 8,
177
+ * resolution: '4k',
178
+ * style: 'cinematic',
179
+ * model: 'runway-gen3',
180
+ * motion: 'dolly',
181
+ * })
182
+ * ```
183
+ *
184
+ * @example
185
+ * ```ts
186
+ * // With negative prompt
187
+ * const result = await video('A happy golden retriever playing in a park', {
188
+ * negativePrompt: 'blurry, distorted, extra limbs',
189
+ * guidance: 12,
190
+ * })
191
+ * ```
192
+ */
193
+ export declare function video(prompt: string, options?: Partial<VideoOptions>): Promise<VideoResult>;
194
+ export declare namespace video {
195
+ var fromImage: (imageUrl: string, prompt: string, options?: Partial<Omit<VideoFromImageOptions, "imageUrl" | "prompt">>) => Promise<VideoResult>;
196
+ var extend: (videoUrl: string, duration: number, options?: Partial<Omit<VideoExtendOptions, "videoUrl" | "duration">>) => Promise<VideoResult>;
197
+ var edit: (videoUrl: string, prompt: string, options?: Partial<Omit<VideoEditOptions, "videoUrl" | "prompt">>) => Promise<VideoResult>;
198
+ var style: (stylePreset: VideoStyle) => (prompt: string, options?: Partial<Omit<VideoOptions, "style">>) => Promise<VideoResult>;
199
+ var variations: (prompt: string, count: number, options?: Partial<VideoOptions>) => Promise<VideoResult[]>;
200
+ var withMotion: (prompt: string, motion: "static" | "pan" | "zoom" | "orbit" | "dolly" | "handheld", options?: Partial<Omit<VideoOptions, "motion">>) => Promise<VideoResult>;
201
+ var loop: (prompt: string, options?: Partial<Omit<VideoOptions, "loop">>) => Promise<VideoResult>;
202
+ }
203
+ //# sourceMappingURL=video.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../src/video.ts"],"names":[],"mappings":"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"}