@workglow/tasks 0.2.6 → 0.2.7

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 (105) hide show
  1. package/dist/browser.d.ts +2 -1
  2. package/dist/browser.d.ts.map +1 -1
  3. package/dist/browser.js +4047 -986
  4. package/dist/browser.js.map +42 -7
  5. package/dist/bun.d.ts +3 -1
  6. package/dist/bun.d.ts.map +1 -1
  7. package/dist/bun.js +4153 -580
  8. package/dist/bun.js.map +42 -5
  9. package/dist/common.d.ts +8 -4
  10. package/dist/common.d.ts.map +1 -1
  11. package/dist/electron.d.ts +19 -0
  12. package/dist/electron.d.ts.map +1 -0
  13. package/dist/electron.js +16526 -0
  14. package/dist/electron.js.map +146 -0
  15. package/dist/node.d.ts +3 -1
  16. package/dist/node.d.ts.map +1 -1
  17. package/dist/node.js +4153 -580
  18. package/dist/node.js.map +42 -5
  19. package/dist/server.d.ts +8 -0
  20. package/dist/server.d.ts.map +1 -0
  21. package/dist/task/browser-control/BrowserSessionRegistry.d.ts +34 -0
  22. package/dist/task/browser-control/BrowserSessionRegistry.d.ts.map +1 -0
  23. package/dist/task/browser-control/BunWebViewBackend.d.ts +59 -0
  24. package/dist/task/browser-control/BunWebViewBackend.d.ts.map +1 -0
  25. package/dist/task/browser-control/CDPBrowserBackend.d.ts +52 -0
  26. package/dist/task/browser-control/CDPBrowserBackend.d.ts.map +1 -0
  27. package/dist/task/browser-control/ElectronBackend.d.ts +57 -0
  28. package/dist/task/browser-control/ElectronBackend.d.ts.map +1 -0
  29. package/dist/task/browser-control/IBrowserContext.d.ts +177 -0
  30. package/dist/task/browser-control/IBrowserContext.d.ts.map +1 -0
  31. package/dist/task/browser-control/PlaywrightBackend.d.ts +78 -0
  32. package/dist/task/browser-control/PlaywrightBackend.d.ts.map +1 -0
  33. package/dist/task/browser-control/index.d.ts +11 -0
  34. package/dist/task/browser-control/index.d.ts.map +1 -0
  35. package/dist/task/browser-control/register.d.ts +34 -0
  36. package/dist/task/browser-control/register.d.ts.map +1 -0
  37. package/dist/task/browser-control/tasks/BrowserAttributeTask.d.ts +84 -0
  38. package/dist/task/browser-control/tasks/BrowserAttributeTask.d.ts.map +1 -0
  39. package/dist/task/browser-control/tasks/BrowserBackTask.d.ts +78 -0
  40. package/dist/task/browser-control/tasks/BrowserBackTask.d.ts.map +1 -0
  41. package/dist/task/browser-control/tasks/BrowserClickTask.d.ts +101 -0
  42. package/dist/task/browser-control/tasks/BrowserClickTask.d.ts.map +1 -0
  43. package/dist/task/browser-control/tasks/BrowserCloseTabTask.d.ts +71 -0
  44. package/dist/task/browser-control/tasks/BrowserCloseTabTask.d.ts.map +1 -0
  45. package/dist/task/browser-control/tasks/BrowserCloseTask.d.ts +54 -0
  46. package/dist/task/browser-control/tasks/BrowserCloseTask.d.ts.map +1 -0
  47. package/dist/task/browser-control/tasks/BrowserEvaluateTask.d.ts +74 -0
  48. package/dist/task/browser-control/tasks/BrowserEvaluateTask.d.ts.map +1 -0
  49. package/dist/task/browser-control/tasks/BrowserExtractHtmlTask.d.ts +82 -0
  50. package/dist/task/browser-control/tasks/BrowserExtractHtmlTask.d.ts.map +1 -0
  51. package/dist/task/browser-control/tasks/BrowserExtractTextTask.d.ts +81 -0
  52. package/dist/task/browser-control/tasks/BrowserExtractTextTask.d.ts.map +1 -0
  53. package/dist/task/browser-control/tasks/BrowserFillTask.d.ts +101 -0
  54. package/dist/task/browser-control/tasks/BrowserFillTask.d.ts.map +1 -0
  55. package/dist/task/browser-control/tasks/BrowserForwardTask.d.ts +78 -0
  56. package/dist/task/browser-control/tasks/BrowserForwardTask.d.ts.map +1 -0
  57. package/dist/task/browser-control/tasks/BrowserHoverTask.d.ts +98 -0
  58. package/dist/task/browser-control/tasks/BrowserHoverTask.d.ts.map +1 -0
  59. package/dist/task/browser-control/tasks/BrowserLoginTask.d.ts +87 -0
  60. package/dist/task/browser-control/tasks/BrowserLoginTask.d.ts.map +1 -0
  61. package/dist/task/browser-control/tasks/BrowserNavigateTask.d.ts +104 -0
  62. package/dist/task/browser-control/tasks/BrowserNavigateTask.d.ts.map +1 -0
  63. package/dist/task/browser-control/tasks/BrowserNewTabTask.d.ts +89 -0
  64. package/dist/task/browser-control/tasks/BrowserNewTabTask.d.ts.map +1 -0
  65. package/dist/task/browser-control/tasks/BrowserPressKeyTask.d.ts +82 -0
  66. package/dist/task/browser-control/tasks/BrowserPressKeyTask.d.ts.map +1 -0
  67. package/dist/task/browser-control/tasks/BrowserQuerySelectorTask.d.ts +94 -0
  68. package/dist/task/browser-control/tasks/BrowserQuerySelectorTask.d.ts.map +1 -0
  69. package/dist/task/browser-control/tasks/BrowserReloadTask.d.ts +68 -0
  70. package/dist/task/browser-control/tasks/BrowserReloadTask.d.ts.map +1 -0
  71. package/dist/task/browser-control/tasks/BrowserScreenshotTask.d.ts +69 -0
  72. package/dist/task/browser-control/tasks/BrowserScreenshotTask.d.ts.map +1 -0
  73. package/dist/task/browser-control/tasks/BrowserScrollTask.d.ts +73 -0
  74. package/dist/task/browser-control/tasks/BrowserScrollTask.d.ts.map +1 -0
  75. package/dist/task/browser-control/tasks/BrowserSelectTask.d.ts +98 -0
  76. package/dist/task/browser-control/tasks/BrowserSelectTask.d.ts.map +1 -0
  77. package/dist/task/browser-control/tasks/BrowserSessionTask.d.ts +63 -0
  78. package/dist/task/browser-control/tasks/BrowserSessionTask.d.ts.map +1 -0
  79. package/dist/task/browser-control/tasks/BrowserSnapshotTask.d.ts +66 -0
  80. package/dist/task/browser-control/tasks/BrowserSnapshotTask.d.ts.map +1 -0
  81. package/dist/task/browser-control/tasks/BrowserSwitchTabTask.d.ts +79 -0
  82. package/dist/task/browser-control/tasks/BrowserSwitchTabTask.d.ts.map +1 -0
  83. package/dist/task/browser-control/tasks/BrowserTypeTask.d.ts +79 -0
  84. package/dist/task/browser-control/tasks/BrowserTypeTask.d.ts.map +1 -0
  85. package/dist/task/browser-control/tasks/BrowserUploadTask.d.ts +96 -0
  86. package/dist/task/browser-control/tasks/BrowserUploadTask.d.ts.map +1 -0
  87. package/dist/task/browser-control/tasks/BrowserWaitTask.d.ts +73 -0
  88. package/dist/task/browser-control/tasks/BrowserWaitTask.d.ts.map +1 -0
  89. package/dist/task/browser-control/tasks/index.d.ts +32 -0
  90. package/dist/task/browser-control/tasks/index.d.ts.map +1 -0
  91. package/dist/task/image/ImageTextTask.d.ts +392 -0
  92. package/dist/task/image/ImageTextTask.d.ts.map +1 -0
  93. package/dist/task/image/imageTextRender.browser.d.ts +8 -0
  94. package/dist/task/image/imageTextRender.browser.d.ts.map +1 -0
  95. package/dist/task/image/imageTextRender.d.ts +42 -0
  96. package/dist/task/image/imageTextRender.d.ts.map +1 -0
  97. package/dist/task/image/imageTextRender.server.d.ts +8 -0
  98. package/dist/task/image/imageTextRender.server.d.ts.map +1 -0
  99. package/dist/task/image/registerImageTextRenderer.browser.d.ts +7 -0
  100. package/dist/task/image/registerImageTextRenderer.browser.d.ts.map +1 -0
  101. package/dist/task/image/registerImageTextRenderer.node.d.ts +7 -0
  102. package/dist/task/image/registerImageTextRenderer.node.d.ts.map +1 -0
  103. package/dist/util/BrowserTaskDeps.d.ts +21 -0
  104. package/dist/util/BrowserTaskDeps.d.ts.map +1 -0
  105. package/package.json +21 -14
@@ -0,0 +1,392 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { CreateWorkflow, IExecuteReactiveContext, Task, TaskConfig } from "@workglow/task-graph";
7
+ import { ImageFromSchema } from "./ImageSchemas";
8
+ declare const inputSchema: {
9
+ readonly type: "object";
10
+ readonly properties: {
11
+ readonly image: {
12
+ readonly oneOf: readonly [{
13
+ readonly type: "object";
14
+ readonly properties: {
15
+ readonly data: {
16
+ readonly type: "array";
17
+ readonly items: {
18
+ readonly type: "number";
19
+ readonly format: "Uint8Clamped";
20
+ };
21
+ readonly format: "Uint8ClampedArray";
22
+ readonly title: "Data";
23
+ readonly description: "Pixel data of the image";
24
+ };
25
+ readonly width: {
26
+ readonly type: "integer";
27
+ readonly minimum: 1;
28
+ readonly title: "Width";
29
+ readonly description: "Width in pixels";
30
+ };
31
+ readonly height: {
32
+ readonly type: "integer";
33
+ readonly minimum: 1;
34
+ readonly title: "Height";
35
+ readonly description: "Height in pixels";
36
+ };
37
+ readonly channels: {
38
+ readonly type: "integer";
39
+ readonly enum: readonly [1, 3, 4];
40
+ readonly title: "Channels";
41
+ readonly description: "1 (gray), 3 (RGB), or 4 (RGBA)";
42
+ };
43
+ };
44
+ readonly additionalProperties: false;
45
+ readonly required: readonly ["data", "width", "height", "channels"];
46
+ readonly format: "image:ImageBinary";
47
+ readonly title: "Image";
48
+ readonly description: "Raw pixel image data";
49
+ }, {
50
+ readonly type: "string";
51
+ readonly format: "image:data-uri";
52
+ readonly title: string;
53
+ readonly description: string;
54
+ }];
55
+ };
56
+ readonly text: {
57
+ readonly type: "string";
58
+ readonly title: "Text";
59
+ readonly description: "Text to render (use \\n for line breaks)";
60
+ };
61
+ readonly font: {
62
+ readonly type: "string";
63
+ readonly title: "Font";
64
+ readonly description: "CSS font family name (e.g. sans-serif, Arial)";
65
+ readonly default: "sans-serif";
66
+ };
67
+ readonly fontSize: {
68
+ readonly type: "integer";
69
+ readonly title: "Font size";
70
+ readonly description: "Font size in pixels";
71
+ readonly minimum: 1;
72
+ readonly default: 24;
73
+ };
74
+ readonly bold: {
75
+ readonly type: "boolean";
76
+ readonly title: "Bold";
77
+ readonly default: false;
78
+ };
79
+ readonly italic: {
80
+ readonly type: "boolean";
81
+ readonly title: "Italic";
82
+ readonly default: false;
83
+ };
84
+ readonly color: {
85
+ readonly type: "object";
86
+ readonly properties: {
87
+ readonly r: {
88
+ readonly type: "integer";
89
+ readonly minimum: 0;
90
+ readonly maximum: 255;
91
+ readonly title: "Red";
92
+ };
93
+ readonly g: {
94
+ readonly type: "integer";
95
+ readonly minimum: 0;
96
+ readonly maximum: 255;
97
+ readonly title: "Green";
98
+ };
99
+ readonly b: {
100
+ readonly type: "integer";
101
+ readonly minimum: 0;
102
+ readonly maximum: 255;
103
+ readonly title: "Blue";
104
+ };
105
+ readonly a: {
106
+ readonly type: "integer";
107
+ readonly minimum: 0;
108
+ readonly maximum: 255;
109
+ readonly title: "Alpha";
110
+ readonly default: 255;
111
+ };
112
+ };
113
+ readonly required: readonly ["r", "g", "b"];
114
+ readonly additionalProperties: false;
115
+ };
116
+ readonly width: {
117
+ readonly type: "integer";
118
+ readonly title: "Width";
119
+ readonly description: "Output width in pixels";
120
+ readonly minimum: 1;
121
+ };
122
+ readonly height: {
123
+ readonly type: "integer";
124
+ readonly title: "Height";
125
+ readonly description: "Output height in pixels";
126
+ readonly minimum: 1;
127
+ };
128
+ readonly position: {
129
+ readonly type: "string";
130
+ readonly title: "Position";
131
+ readonly description: "Anchor position of the text block within the image";
132
+ readonly enum: readonly ["top-left", "top-center", "top-right", "middle-left", "middle-center", "middle-right", "bottom-left", "bottom-center", "bottom-right"];
133
+ readonly default: "middle-center";
134
+ readonly "x-ui-enum-labels": Record<"bottom-center" | "bottom-left" | "bottom-right" | "middle-center" | "middle-left" | "middle-right" | "top-center" | "top-left" | "top-right", string>;
135
+ };
136
+ };
137
+ readonly required: readonly ["text", "color", "width", "height"];
138
+ readonly additionalProperties: false;
139
+ };
140
+ declare const outputSchema: {
141
+ readonly type: "object";
142
+ readonly properties: {
143
+ readonly image: {
144
+ readonly oneOf: readonly [{
145
+ readonly type: "object";
146
+ readonly properties: {
147
+ readonly data: {
148
+ readonly type: "array";
149
+ readonly items: {
150
+ readonly type: "number";
151
+ readonly format: "Uint8Clamped";
152
+ };
153
+ readonly format: "Uint8ClampedArray";
154
+ readonly title: "Data";
155
+ readonly description: "Pixel data of the image";
156
+ };
157
+ readonly width: {
158
+ readonly type: "integer";
159
+ readonly minimum: 1;
160
+ readonly title: "Width";
161
+ readonly description: "Width in pixels";
162
+ };
163
+ readonly height: {
164
+ readonly type: "integer";
165
+ readonly minimum: 1;
166
+ readonly title: "Height";
167
+ readonly description: "Height in pixels";
168
+ };
169
+ readonly channels: {
170
+ readonly type: "integer";
171
+ readonly enum: readonly [1, 3, 4];
172
+ readonly title: "Channels";
173
+ readonly description: "1 (gray), 3 (RGB), or 4 (RGBA)";
174
+ };
175
+ };
176
+ readonly additionalProperties: false;
177
+ readonly required: readonly ["data", "width", "height", "channels"];
178
+ readonly format: "image:ImageBinary";
179
+ readonly title: "Image";
180
+ readonly description: "Raw pixel image data";
181
+ }, {
182
+ readonly type: "string";
183
+ readonly format: "image:data-uri";
184
+ readonly title: string;
185
+ readonly description: string;
186
+ }];
187
+ };
188
+ };
189
+ readonly required: readonly ["image"];
190
+ readonly additionalProperties: false;
191
+ };
192
+ export type ImageTextTaskInput = ImageFromSchema<typeof inputSchema>;
193
+ export type ImageTextTaskOutput = ImageFromSchema<typeof outputSchema>;
194
+ export declare class ImageTextTask<Input extends ImageTextTaskInput = ImageTextTaskInput, Output extends ImageTextTaskOutput = ImageTextTaskOutput, Config extends TaskConfig = TaskConfig> extends Task<Input, Output, Config> {
195
+ static readonly type = "ImageTextTask";
196
+ static readonly category = "Image";
197
+ static title: string;
198
+ static description: string;
199
+ static inputSchema(): {
200
+ readonly type: "object";
201
+ readonly properties: {
202
+ readonly image: {
203
+ readonly oneOf: readonly [{
204
+ readonly type: "object";
205
+ readonly properties: {
206
+ readonly data: {
207
+ readonly type: "array";
208
+ readonly items: {
209
+ readonly type: "number";
210
+ readonly format: "Uint8Clamped";
211
+ };
212
+ readonly format: "Uint8ClampedArray";
213
+ readonly title: "Data";
214
+ readonly description: "Pixel data of the image";
215
+ };
216
+ readonly width: {
217
+ readonly type: "integer";
218
+ readonly minimum: 1;
219
+ readonly title: "Width";
220
+ readonly description: "Width in pixels";
221
+ };
222
+ readonly height: {
223
+ readonly type: "integer";
224
+ readonly minimum: 1;
225
+ readonly title: "Height";
226
+ readonly description: "Height in pixels";
227
+ };
228
+ readonly channels: {
229
+ readonly type: "integer";
230
+ readonly enum: readonly [1, 3, 4];
231
+ readonly title: "Channels";
232
+ readonly description: "1 (gray), 3 (RGB), or 4 (RGBA)";
233
+ };
234
+ };
235
+ readonly additionalProperties: false;
236
+ readonly required: readonly ["data", "width", "height", "channels"];
237
+ readonly format: "image:ImageBinary";
238
+ readonly title: "Image";
239
+ readonly description: "Raw pixel image data";
240
+ }, {
241
+ readonly type: "string";
242
+ readonly format: "image:data-uri";
243
+ readonly title: string;
244
+ readonly description: string;
245
+ }];
246
+ };
247
+ readonly text: {
248
+ readonly type: "string";
249
+ readonly title: "Text";
250
+ readonly description: "Text to render (use \\n for line breaks)";
251
+ };
252
+ readonly font: {
253
+ readonly type: "string";
254
+ readonly title: "Font";
255
+ readonly description: "CSS font family name (e.g. sans-serif, Arial)";
256
+ readonly default: "sans-serif";
257
+ };
258
+ readonly fontSize: {
259
+ readonly type: "integer";
260
+ readonly title: "Font size";
261
+ readonly description: "Font size in pixels";
262
+ readonly minimum: 1;
263
+ readonly default: 24;
264
+ };
265
+ readonly bold: {
266
+ readonly type: "boolean";
267
+ readonly title: "Bold";
268
+ readonly default: false;
269
+ };
270
+ readonly italic: {
271
+ readonly type: "boolean";
272
+ readonly title: "Italic";
273
+ readonly default: false;
274
+ };
275
+ readonly color: {
276
+ readonly type: "object";
277
+ readonly properties: {
278
+ readonly r: {
279
+ readonly type: "integer";
280
+ readonly minimum: 0;
281
+ readonly maximum: 255;
282
+ readonly title: "Red";
283
+ };
284
+ readonly g: {
285
+ readonly type: "integer";
286
+ readonly minimum: 0;
287
+ readonly maximum: 255;
288
+ readonly title: "Green";
289
+ };
290
+ readonly b: {
291
+ readonly type: "integer";
292
+ readonly minimum: 0;
293
+ readonly maximum: 255;
294
+ readonly title: "Blue";
295
+ };
296
+ readonly a: {
297
+ readonly type: "integer";
298
+ readonly minimum: 0;
299
+ readonly maximum: 255;
300
+ readonly title: "Alpha";
301
+ readonly default: 255;
302
+ };
303
+ };
304
+ readonly required: readonly ["r", "g", "b"];
305
+ readonly additionalProperties: false;
306
+ };
307
+ readonly width: {
308
+ readonly type: "integer";
309
+ readonly title: "Width";
310
+ readonly description: "Output width in pixels";
311
+ readonly minimum: 1;
312
+ };
313
+ readonly height: {
314
+ readonly type: "integer";
315
+ readonly title: "Height";
316
+ readonly description: "Output height in pixels";
317
+ readonly minimum: 1;
318
+ };
319
+ readonly position: {
320
+ readonly type: "string";
321
+ readonly title: "Position";
322
+ readonly description: "Anchor position of the text block within the image";
323
+ readonly enum: readonly ["top-left", "top-center", "top-right", "middle-left", "middle-center", "middle-right", "bottom-left", "bottom-center", "bottom-right"];
324
+ readonly default: "middle-center";
325
+ readonly "x-ui-enum-labels": Record<"bottom-center" | "bottom-left" | "bottom-right" | "middle-center" | "middle-left" | "middle-right" | "top-center" | "top-left" | "top-right", string>;
326
+ };
327
+ };
328
+ readonly required: readonly ["text", "color", "width", "height"];
329
+ readonly additionalProperties: false;
330
+ };
331
+ static outputSchema(): {
332
+ readonly type: "object";
333
+ readonly properties: {
334
+ readonly image: {
335
+ readonly oneOf: readonly [{
336
+ readonly type: "object";
337
+ readonly properties: {
338
+ readonly data: {
339
+ readonly type: "array";
340
+ readonly items: {
341
+ readonly type: "number";
342
+ readonly format: "Uint8Clamped";
343
+ };
344
+ readonly format: "Uint8ClampedArray";
345
+ readonly title: "Data";
346
+ readonly description: "Pixel data of the image";
347
+ };
348
+ readonly width: {
349
+ readonly type: "integer";
350
+ readonly minimum: 1;
351
+ readonly title: "Width";
352
+ readonly description: "Width in pixels";
353
+ };
354
+ readonly height: {
355
+ readonly type: "integer";
356
+ readonly minimum: 1;
357
+ readonly title: "Height";
358
+ readonly description: "Height in pixels";
359
+ };
360
+ readonly channels: {
361
+ readonly type: "integer";
362
+ readonly enum: readonly [1, 3, 4];
363
+ readonly title: "Channels";
364
+ readonly description: "1 (gray), 3 (RGB), or 4 (RGBA)";
365
+ };
366
+ };
367
+ readonly additionalProperties: false;
368
+ readonly required: readonly ["data", "width", "height", "channels"];
369
+ readonly format: "image:ImageBinary";
370
+ readonly title: "Image";
371
+ readonly description: "Raw pixel image data";
372
+ }, {
373
+ readonly type: "string";
374
+ readonly format: "image:data-uri";
375
+ readonly title: string;
376
+ readonly description: string;
377
+ }];
378
+ };
379
+ };
380
+ readonly required: readonly ["image"];
381
+ readonly additionalProperties: false;
382
+ };
383
+ getDefaultInputsFromStaticInputDefinitions(): Partial<Input>;
384
+ executeReactive(input: Input, _output: Output, _context: IExecuteReactiveContext): Promise<Output>;
385
+ }
386
+ declare module "@workglow/task-graph" {
387
+ interface Workflow {
388
+ imageText: CreateWorkflow<ImageTextTaskInput, ImageTextTaskOutput, TaskConfig>;
389
+ }
390
+ }
391
+ export {};
392
+ //# sourceMappingURL=ImageTextTask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageTextTask.d.ts","sourceRoot":"","sources":["../../../src/task/image/ImageTextTask.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,IAAI,EACJ,UAAU,EAEX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAA2C,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAkI1F,QAAA,MAAM,WAAW;mBACT,QAAQ;;iBAEZ,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIL,IAAI;qBACF,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,MAAM;qBACb,WAAW,EAAE,0CAA0C;;iBAEzD,IAAI;qBACF,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,MAAM;qBACb,WAAW,EAAE,+CAA+C;qBAC5D,OAAO,EAAE,YAAY;;iBAEvB,QAAQ;qBACN,IAAI,EAAE,SAAS;qBACf,KAAK,EAAE,WAAW;qBAClB,WAAW,EAAE,qBAAqB;qBAClC,OAAO,EAAE,CAAC;qBACV,OAAO,EAAE,EAAE;;iBAEb,IAAI;qBAAI,IAAI,EAAE,SAAS;qBAAE,KAAK,EAAE,MAAM;qBAAE,OAAO;;iBAC/C,MAAM;qBAAI,IAAI,EAAE,SAAS;qBAAE,KAAK,EAAE,QAAQ;qBAAE,OAAO;;iBACnD,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBACL,KAAK;qBACH,IAAI,EAAE,SAAS;qBACf,KAAK,EAAE,OAAO;qBACd,WAAW,EAAE,wBAAwB;qBACrC,OAAO,EAAE,CAAC;;iBAEZ,MAAM;qBACJ,IAAI,EAAE,SAAS;qBACf,KAAK,EAAE,QAAQ;qBACf,WAAW,EAAE,yBAAyB;qBACtC,OAAO,EAAE,CAAC;;iBAEZ,QAAQ;qBACN,IAAI,EAAE,QAAQ;qBACd,KAAK,EAAE,UAAU;qBACjB,WAAW,EAAE,oDAAoD;qBACjE,IAAI;qBACJ,OAAO,EAAE,eAAe;qBACxB,kBAAkB;;;;;CAKW,CAAC;AAEpC,QAAA,MAAM,YAAY;mBACV,QAAQ;;iBAEZ,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI0B,CAAC;AAEpC,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC,OAAO,WAAW,CAAC,CAAC;AACrE,MAAM,MAAM,mBAAmB,GAAG,eAAe,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvE,qBAAa,aAAa,CACxB,KAAK,SAAS,kBAAkB,GAAG,kBAAkB,EACrD,MAAM,SAAS,mBAAmB,GAAG,mBAAmB,EACxD,MAAM,SAAS,UAAU,GAAG,UAAU,CACtC,SAAQ,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;IACnC,gBAAyB,IAAI,mBAAmB;IAChD,gBAAyB,QAAQ,WAAW;IAC5C,OAAuB,KAAK,SAA0B;IACtD,OAAuB,WAAW,SAC4D;IAE9F,OAAgB,WAAW;uBA3ErB,QAAQ;;qBAEZ,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAIL,IAAI;yBACF,IAAI,EAAE,QAAQ;yBACd,KAAK,EAAE,MAAM;yBACb,WAAW,EAAE,0CAA0C;;qBAEzD,IAAI;yBACF,IAAI,EAAE,QAAQ;yBACd,KAAK,EAAE,MAAM;yBACb,WAAW,EAAE,+CAA+C;yBAC5D,OAAO,EAAE,YAAY;;qBAEvB,QAAQ;yBACN,IAAI,EAAE,SAAS;yBACf,KAAK,EAAE,WAAW;yBAClB,WAAW,EAAE,qBAAqB;yBAClC,OAAO,EAAE,CAAC;yBACV,OAAO,EAAE,EAAE;;qBAEb,IAAI;yBAAI,IAAI,EAAE,SAAS;yBAAE,KAAK,EAAE,MAAM;yBAAE,OAAO;;qBAC/C,MAAM;yBAAI,IAAI,EAAE,SAAS;yBAAE,KAAK,EAAE,QAAQ;yBAAE,OAAO;;qBACnD,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBACL,KAAK;yBACH,IAAI,EAAE,SAAS;yBACf,KAAK,EAAE,OAAO;yBACd,WAAW,EAAE,wBAAwB;yBACrC,OAAO,EAAE,CAAC;;qBAEZ,MAAM;yBACJ,IAAI,EAAE,SAAS;yBACf,KAAK,EAAE,QAAQ;yBACf,WAAW,EAAE,yBAAyB;yBACtC,OAAO,EAAE,CAAC;;qBAEZ,QAAQ;yBACN,IAAI,EAAE,QAAQ;yBACd,KAAK,EAAE,UAAU;yBACjB,WAAW,EAAE,oDAAoD;yBACjE,IAAI;yBACJ,OAAO,EAAE,eAAe;yBACxB,kBAAkB;;;;;MAgCrB;IAED,OAAgB,YAAY;uBA1BtB,QAAQ;;qBAEZ,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA0BN;IAEQ,0CAA0C,IAAI,OAAO,CAAC,KAAK,CAAC,CAIpE;IAEc,eAAe,CAC5B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,uBAAuB,GAChC,OAAO,CAAC,MAAM,CAAC,CAuCjB;CACF;AAED,OAAO,QAAQ,sBAAsB,CAAC,CAAC;IACrC,UAAU,QAAQ;QAChB,SAAS,EAAE,cAAc,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAC;KAChF;CACF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type ImageTextRenderer } from "./imageTextRender";
7
+ export declare function createBrowserImageTextRenderer(): ImageTextRenderer;
8
+ //# sourceMappingURL=imageTextRender.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageTextRender.browser.d.ts","sourceRoot":"","sources":["../../../src/task/image/imageTextRender.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AA8B3B,wBAAgB,8BAA8B,IAAI,iBAAiB,CA+ClE"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { ImageBinary } from "@workglow/util/media";
7
+ export declare const IMAGE_TEXT_ANCHOR_POSITIONS: readonly ["top-left", "top-center", "top-right", "middle-left", "middle-center", "middle-right", "bottom-left", "bottom-center", "bottom-right"];
8
+ export type ImageTextAnchorPosition = (typeof IMAGE_TEXT_ANCHOR_POSITIONS)[number];
9
+ export interface ImageTextRenderColor {
10
+ readonly r: number;
11
+ readonly g: number;
12
+ readonly b: number;
13
+ readonly a?: number;
14
+ }
15
+ export interface ImageTextRenderParams {
16
+ readonly text: string;
17
+ readonly font: string;
18
+ readonly fontSize: number;
19
+ readonly bold: boolean;
20
+ readonly italic: boolean;
21
+ readonly color: ImageTextRenderColor;
22
+ readonly width: number;
23
+ readonly height: number;
24
+ readonly position: ImageTextAnchorPosition;
25
+ }
26
+ export interface ImageTextRenderer {
27
+ renderToRgba(params: ImageTextRenderParams): Promise<ImageBinary>;
28
+ }
29
+ export declare const IMAGE_TEXT_RENDERER: import("@workglow/util").ServiceToken<ImageTextRenderer>;
30
+ export declare const IMAGE_TEXT_RENDER_PADDING = 2;
31
+ export declare const IMAGE_TEXT_RENDER_LINE_HEIGHT_FACTOR = 1.25;
32
+ export declare function parseImageTextAnchor(position: ImageTextAnchorPosition): {
33
+ readonly row: "top" | "middle" | "bottom";
34
+ readonly col: "left" | "center" | "right";
35
+ };
36
+ export declare function escapeImageTextXmlText(value: string): string;
37
+ export declare function escapeImageTextXmlAttr(value: string): string;
38
+ export declare function imageTextRgbaFillStyle(color: ImageTextRenderColor): string;
39
+ export declare function registerImageTextRenderer(renderer: ImageTextRenderer): void;
40
+ export declare function getImageTextRenderer(): ImageTextRenderer;
41
+ export declare function renderImageTextToRgba(params: ImageTextRenderParams): Promise<ImageBinary>;
42
+ //# sourceMappingURL=imageTextRender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageTextRender.d.ts","sourceRoot":"","sources":["../../../src/task/image/imageTextRender.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,eAAO,MAAM,2BAA2B,YACtC,UAAU,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,CACN,CAAC;AAEX,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;CAC5C;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACnE;AAED,eAAO,MAAM,mBAAmB,0DAE/B,CAAC;AAEF,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,oCAAoC,OAAO,CAAC;AAEzD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,uBAAuB,GAAG;IACvE,QAAQ,CAAC,GAAG,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC3C,CAMA;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAG1E;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAE3E;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,CAOxD;AAED,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAG/F"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type ImageTextRenderer } from "./imageTextRender";
7
+ export declare function createServerImageTextRenderer(): ImageTextRenderer;
8
+ //# sourceMappingURL=imageTextRender.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageTextRender.server.d.ts","sourceRoot":"","sources":["../../../src/task/image/imageTextRender.server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAOL,KAAK,iBAAiB,EAEvB,MAAM,mBAAmB,CAAC;AAkD3B,wBAAgB,6BAA6B,IAAI,iBAAiB,CAmCjE"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=registerImageTextRenderer.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerImageTextRenderer.browser.d.ts","sourceRoot":"","sources":["../../../src/task/image/registerImageTextRenderer.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=registerImageTextRenderer.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerImageTextRenderer.node.d.ts","sourceRoot":"","sources":["../../../src/task/image/registerImageTextRenderer.node.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { BrowserBackendType, BrowserConnectOptions, IBrowserContext } from "../task/browser-control/IBrowserContext";
7
+ export interface IBrowserProfileStorage {
8
+ save(projectId: string, profileName: string, state: string): Promise<void>;
9
+ load(projectId: string, profileName: string): Promise<string | null>;
10
+ delete(projectId: string, profileName: string): Promise<void>;
11
+ }
12
+ export interface BrowserTaskDeps {
13
+ readonly createContext: (options: BrowserConnectOptions) => IBrowserContext;
14
+ readonly availableBackends: readonly BrowserBackendType[];
15
+ readonly defaultBackend: BrowserBackendType;
16
+ readonly profileStorage: IBrowserProfileStorage;
17
+ }
18
+ export declare const BROWSER_CONTROL_TASK_DEPS: import("@workglow/util").ServiceToken<BrowserTaskDeps>;
19
+ export declare function registerBrowserDeps(deps: BrowserTaskDeps): void;
20
+ export declare function getBrowserDeps(): BrowserTaskDeps;
21
+ //# sourceMappingURL=BrowserTaskDeps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserTaskDeps.d.ts","sourceRoot":"","sources":["../../src/util/BrowserTaskDeps.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EAChB,MAAM,yCAAyC,CAAC;AAEjD,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACrE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,eAAe,CAAC;IAC5E,QAAQ,CAAC,iBAAiB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC1D,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;CACjD;AAED,eAAO,MAAM,yBAAyB,wDAC0B,CAAC;AAEjE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAE/D;AAED,wBAAgB,cAAc,IAAI,eAAe,CAOhD"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@workglow/tasks",
3
3
  "type": "module",
4
- "version": "0.2.6",
4
+ "version": "0.2.7",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/workglow-dev/workglow.git",
@@ -10,17 +10,19 @@
10
10
  "description": "Pre-built task implementations for Workglow, including common AI operations and utility functions.",
11
11
  "scripts": {
12
12
  "watch": "concurrently -c 'auto' 'bun:watch-*'",
13
- "watch-js": "concurrently -c 'auto' -n 'browser,node,bun' 'bun run watch-browser' 'bun run watch-node' 'bun run watch-bun'",
13
+ "watch-js": "concurrently -c 'auto' -n 'browser,node,bun,electron' 'bun run watch-browser' 'bun run watch-node' 'bun run watch-bun' 'bun run watch-electron'",
14
14
  "watch-browser": "bun build --watch --no-clear-screen --target=browser --sourcemap=external --packages=external --outdir ./dist ./src/browser.ts",
15
15
  "watch-node": "bun build --watch --no-clear-screen --target=node --sourcemap=external --packages=external --outdir ./dist ./src/node.ts",
16
16
  "watch-bun": "bun build --watch --no-clear-screen --target=bun --sourcemap=external --packages=external --outdir ./dist ./src/bun.ts",
17
+ "watch-electron": "bun build --watch --no-clear-screen --target=node --sourcemap=external --packages=external --outdir ./dist ./src/electron.ts",
17
18
  "watch-types": "tsc --watch --preserveWatchOutput",
18
- "build-package": "concurrently -c 'auto' -n 'browser,node,bun,types' 'bun run build-browser' 'bun run build-node' 'bun run build-bun' 'bun run build-types'",
19
- "build-js": "concurrently -c 'auto' -n 'browser,node,bun' 'bun run build-browser' 'bun run build-node' 'bun run build-bun'",
19
+ "build-package": "concurrently -c 'auto' -n 'browser,node,bun,electron,types' 'bun run build-browser' 'bun run build-node' 'bun run build-bun' 'bun run build-electron' 'bun run build-types'",
20
+ "build-js": "concurrently -c 'auto' -n 'browser,node,bun,electron' 'bun run build-browser' 'bun run build-node' 'bun run build-bun' 'bun run build-electron'",
20
21
  "build-clean": "rm -fr dist/* tsconfig.tsbuildinfo",
21
22
  "build-browser": "bun build --target=browser --sourcemap=external --packages=external --outdir ./dist ./src/browser.ts",
22
23
  "build-node": "bun build --target=node --sourcemap=external --packages=external --outdir ./dist ./src/node.ts",
23
24
  "build-bun": "bun build --target=bun --sourcemap=external --packages=external --outdir ./dist ./src/bun.ts",
25
+ "build-electron": "bun build --target=node --sourcemap=external --packages=external --outdir ./dist ./src/electron.ts",
24
26
  "build-types": "rm -f tsconfig.tsbuildinfo && tsgo",
25
27
  "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
26
28
  "test": "bun test"
@@ -41,6 +43,10 @@
41
43
  },
42
44
  "types": "./dist/node.d.ts",
43
45
  "import": "./dist/node.js"
46
+ },
47
+ "./electron": {
48
+ "types": "./dist/electron.d.ts",
49
+ "import": "./dist/electron.js"
44
50
  }
45
51
  },
46
52
  "files": [
@@ -52,14 +58,14 @@
52
58
  },
53
59
  "dependencies": {
54
60
  "ipaddr.js": "^2.2.0",
55
- "undici": "^8.0.2"
61
+ "undici": "^8.1.0"
56
62
  },
57
63
  "peerDependencies": {
58
64
  "@modelcontextprotocol/sdk": "^1.29.0",
59
- "@workglow/task-graph": "0.2.6",
60
- "@workglow/util": "0.2.6",
61
- "@workglow/job-queue": "0.2.6",
62
- "@workglow/storage": "0.2.6"
65
+ "@workglow/task-graph": "0.2.7",
66
+ "@workglow/util": "0.2.7",
67
+ "@workglow/job-queue": "0.2.7",
68
+ "@workglow/storage": "0.2.7"
63
69
  },
64
70
  "peerDependenciesMeta": {
65
71
  "@modelcontextprotocol/sdk": {
@@ -81,13 +87,14 @@
81
87
  "devDependencies": {
82
88
  "@modelcontextprotocol/sdk": "^1.29.0",
83
89
  "@types/papaparse": "^5.5.2",
84
- "@workglow/job-queue": "0.2.6",
85
- "@workglow/storage": "0.2.6",
86
- "@workglow/task-graph": "0.2.6",
87
- "@workglow/util": "0.2.6"
90
+ "@workglow/job-queue": "0.2.7",
91
+ "@workglow/storage": "0.2.7",
92
+ "@workglow/task-graph": "0.2.7",
93
+ "@workglow/util": "0.2.7"
88
94
  },
89
95
  "optionalDependencies": {
90
96
  "papaparse": "^5.5.3",
91
- "sharp": "^0.34.5"
97
+ "sharp": "^0.34.5",
98
+ "playwright": "^1.59.1"
92
99
  }
93
100
  }