@bpmnkit/proxy 0.0.16 → 0.0.21

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.
@@ -0,0 +1,612 @@
1
+ /**
2
+ * Element template definitions for bpmnkit built-in workers.
3
+ * Served via GET /worker-templates — consumed by the Studio connector catalog.
4
+ *
5
+ * Follows the Camunda element template schema so they are compatible with
6
+ * the config-panel-bpmn template renderer.
7
+ */
8
+ const CATEGORY = { id: "bpmnkit", name: "Built-in" };
9
+ const CLI_ICON = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><rect width="16" height="16" rx="3" fill="#1e1e2e"/><text x="3" y="12" font-family="monospace" font-size="10" fill="#cdd6f4">&gt;_</text></svg>`;
10
+ const LLM_ICON = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><rect width="16" height="16" rx="3" fill="#1e1e2e"/><circle cx="8" cy="8" r="5" fill="none" stroke="#6b9df7" stroke-width="1.5"/><path d="M6 8h4M8 6v4" stroke="#6b9df7" stroke-width="1.5"/></svg>`;
11
+ const FS_ICON = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><rect width="16" height="16" rx="3" fill="#1e1e2e"/><path d="M3 5h10v8H3z" fill="none" stroke="#2dd4bf" stroke-width="1.5"/><path d="M3 5l2-2h4l2 2" fill="none" stroke="#2dd4bf" stroke-width="1.5"/></svg>`;
12
+ const JS_ICON = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><rect width="16" height="16" rx="3" fill="#f59e0b"/><text x="2" y="12" font-family="monospace" font-size="9" font-weight="bold" fill="#1e1e2e">JS</text></svg>`;
13
+ const WATCH_ICON = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><rect width="16" height="16" rx="3" fill="#1e1e2e"/><path d="M3 10V7l5-4 5 4v3" fill="none" stroke="#a78bfa" stroke-width="1.5"/><path d="M5 10h6v4H5z" fill="none" stroke="#a78bfa" stroke-width="1.5"/></svg>`;
14
+ const HTTP_ICON = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><rect width="16" height="16" rx="3" fill="#1e1e2e"/><circle cx="8" cy="8" r="5" fill="none" stroke="#2dd4bf" stroke-width="1.5"/><path d="M3 8h10M8 3c-2 2-2 8 0 10M8 3c2 2 2 8 0 10" stroke="#2dd4bf" stroke-width="1" fill="none"/></svg>`;
15
+ const EMAIL_ICON = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><rect width="16" height="16" rx="3" fill="#1e1e2e"/><rect x="2" y="4" width="12" height="8" rx="1" fill="none" stroke="#f59e0b" stroke-width="1.5"/><path d="M2 5l6 4 6-4" stroke="#f59e0b" stroke-width="1.5" fill="none"/></svg>`;
16
+ export const WORKER_TEMPLATES = [
17
+ // ── CLI Worker ────────────────────────────────────────────────────────────
18
+ {
19
+ id: "io.bpmnkit.cli",
20
+ name: "CLI Command",
21
+ version: 1,
22
+ description: "Run any shell command. Use {{varName}} to interpolate process variables, {{secrets.NAME}} for secrets.",
23
+ category: CATEGORY,
24
+ appliesTo: ["bpmn:ServiceTask"],
25
+ icon: { contents: CLI_ICON },
26
+ groups: [
27
+ { id: "command", label: "Command" },
28
+ { id: "output", label: "Output" },
29
+ ],
30
+ properties: [
31
+ {
32
+ id: "taskType",
33
+ type: "Hidden",
34
+ value: "io.bpmnkit:cli:1",
35
+ binding: { type: "zeebe:taskDefinition", property: "type" },
36
+ },
37
+ {
38
+ id: "command",
39
+ label: "Command",
40
+ description: "Shell command to run. Use {{varName}} for variables, {{secrets.NAME}} for secrets.",
41
+ type: "Text",
42
+ group: "command",
43
+ constraints: { notEmpty: true },
44
+ binding: { type: "zeebe:taskHeader", key: "command" },
45
+ },
46
+ {
47
+ id: "cwd",
48
+ label: "Working directory",
49
+ description: "Directory to run the command in. Default: home directory (~).",
50
+ type: "String",
51
+ optional: true,
52
+ group: "command",
53
+ binding: { type: "zeebe:taskHeader", key: "cwd" },
54
+ },
55
+ {
56
+ id: "timeout",
57
+ label: "Timeout (seconds)",
58
+ description: "Maximum time to wait before killing the process.",
59
+ type: "Number",
60
+ value: 60,
61
+ group: "command",
62
+ binding: { type: "zeebe:taskHeader", key: "timeout" },
63
+ },
64
+ {
65
+ id: "ignoreExitCode",
66
+ label: "Ignore non-zero exit code",
67
+ description: "Complete the job even when the command exits with a non-zero code.",
68
+ type: "Boolean",
69
+ value: false,
70
+ group: "command",
71
+ binding: { type: "zeebe:taskHeader", key: "ignoreExitCode" },
72
+ },
73
+ {
74
+ id: "resultVariable",
75
+ label: "Result variable",
76
+ description: "Process variable to store { stdout, stderr, exitCode }.",
77
+ type: "String",
78
+ value: "cliResult",
79
+ group: "output",
80
+ binding: { type: "zeebe:taskHeader", key: "resultVariable" },
81
+ },
82
+ ],
83
+ },
84
+ // ── LLM Worker ───────────────────────────────────────────────────────────
85
+ {
86
+ id: "io.bpmnkit.llm",
87
+ name: "LLM Prompt",
88
+ version: 1,
89
+ description: "Call an AI model (Claude, Copilot, or Gemini) with a prompt.",
90
+ category: CATEGORY,
91
+ appliesTo: ["bpmn:ServiceTask"],
92
+ icon: { contents: LLM_ICON },
93
+ groups: [
94
+ { id: "prompt", label: "Prompt" },
95
+ { id: "model", label: "Model" },
96
+ { id: "output", label: "Output" },
97
+ ],
98
+ properties: [
99
+ {
100
+ id: "taskType",
101
+ type: "Hidden",
102
+ value: "io.bpmnkit:llm:1",
103
+ binding: { type: "zeebe:taskDefinition", property: "type" },
104
+ },
105
+ {
106
+ id: "prompt",
107
+ label: "Prompt",
108
+ description: "The message to send. Use {{varName}} to include process variable values, or = for a FEEL expression.",
109
+ type: "Text",
110
+ feel: "optional",
111
+ group: "prompt",
112
+ constraints: { notEmpty: true },
113
+ binding: { type: "zeebe:input", name: "prompt" },
114
+ },
115
+ {
116
+ id: "system",
117
+ label: "System prompt",
118
+ description: "Optional instruction given to the model before the user message.",
119
+ type: "Text",
120
+ optional: true,
121
+ group: "prompt",
122
+ binding: { type: "zeebe:taskHeader", key: "system" },
123
+ },
124
+ {
125
+ id: "model",
126
+ label: "Model",
127
+ description: "Which LLM to use. Auto-detects the first available adapter if not set.",
128
+ type: "Dropdown",
129
+ optional: true,
130
+ group: "model",
131
+ choices: [
132
+ { name: "Auto-detect", value: "" },
133
+ { name: "Claude", value: "claude" },
134
+ { name: "GitHub Copilot", value: "copilot" },
135
+ { name: "Gemini", value: "gemini" },
136
+ ],
137
+ binding: { type: "zeebe:taskHeader", key: "model" },
138
+ },
139
+ {
140
+ id: "resultVariable",
141
+ label: "Result variable",
142
+ description: "Process variable to store the model's response string.",
143
+ type: "String",
144
+ value: "response",
145
+ group: "output",
146
+ binding: { type: "zeebe:taskHeader", key: "resultVariable" },
147
+ },
148
+ ],
149
+ },
150
+ // ── FS Read ───────────────────────────────────────────────────────────────
151
+ {
152
+ id: "io.bpmnkit.fs.read",
153
+ name: "Read File",
154
+ version: 1,
155
+ description: "Read a file from the local filesystem into a process variable.",
156
+ category: CATEGORY,
157
+ appliesTo: ["bpmn:ServiceTask"],
158
+ icon: { contents: FS_ICON },
159
+ groups: [
160
+ { id: "file", label: "File" },
161
+ { id: "output", label: "Output" },
162
+ ],
163
+ properties: [
164
+ {
165
+ id: "taskType",
166
+ type: "Hidden",
167
+ value: "io.bpmnkit:fs:read:1",
168
+ binding: { type: "zeebe:taskDefinition", property: "type" },
169
+ },
170
+ {
171
+ id: "path",
172
+ label: "File path",
173
+ description: "Absolute path or ~/relative path. Use = for a FEEL expression.",
174
+ type: "String",
175
+ feel: "optional",
176
+ group: "file",
177
+ constraints: { notEmpty: true },
178
+ binding: { type: "zeebe:input", name: "path" },
179
+ },
180
+ {
181
+ id: "resultVariable",
182
+ label: "Result variable",
183
+ description: "Process variable to store the file content (string).",
184
+ type: "String",
185
+ value: "fileContent",
186
+ group: "output",
187
+ binding: { type: "zeebe:taskHeader", key: "resultVariable" },
188
+ },
189
+ ],
190
+ },
191
+ // ── FS Write ──────────────────────────────────────────────────────────────
192
+ {
193
+ id: "io.bpmnkit.fs.write",
194
+ name: "Write File",
195
+ version: 1,
196
+ description: "Write a process variable to a file. Parent directories are created automatically.",
197
+ category: CATEGORY,
198
+ appliesTo: ["bpmn:ServiceTask"],
199
+ icon: { contents: FS_ICON },
200
+ groups: [{ id: "file", label: "File" }],
201
+ properties: [
202
+ {
203
+ id: "taskType",
204
+ type: "Hidden",
205
+ value: "io.bpmnkit:fs:write:1",
206
+ binding: { type: "zeebe:taskDefinition", property: "type" },
207
+ },
208
+ {
209
+ id: "path",
210
+ label: "File path",
211
+ description: "Absolute path or ~/relative path to write. Use = for a FEEL expression.",
212
+ type: "String",
213
+ feel: "optional",
214
+ group: "file",
215
+ constraints: { notEmpty: true },
216
+ binding: { type: "zeebe:input", name: "path" },
217
+ },
218
+ {
219
+ id: "content",
220
+ label: "Content",
221
+ description: "The string content to write. Use = for a FEEL expression.",
222
+ type: "String",
223
+ feel: "optional",
224
+ group: "file",
225
+ constraints: { notEmpty: true },
226
+ binding: { type: "zeebe:input", name: "content" },
227
+ },
228
+ ],
229
+ },
230
+ // ── FS Append ─────────────────────────────────────────────────────────────
231
+ {
232
+ id: "io.bpmnkit.fs.append",
233
+ name: "Append to File",
234
+ version: 1,
235
+ description: "Append content to a file. Creates the file if it does not exist.",
236
+ category: CATEGORY,
237
+ appliesTo: ["bpmn:ServiceTask"],
238
+ icon: { contents: FS_ICON },
239
+ groups: [{ id: "file", label: "File" }],
240
+ properties: [
241
+ {
242
+ id: "taskType",
243
+ type: "Hidden",
244
+ value: "io.bpmnkit:fs:append:1",
245
+ binding: { type: "zeebe:taskDefinition", property: "type" },
246
+ },
247
+ {
248
+ id: "path",
249
+ label: "File path",
250
+ description: "Absolute path or ~/relative path to append to.",
251
+ type: "String",
252
+ feel: "optional",
253
+ group: "file",
254
+ constraints: { notEmpty: true },
255
+ binding: { type: "zeebe:input", name: "path" },
256
+ },
257
+ {
258
+ id: "content",
259
+ label: "Content",
260
+ description: "The string content to append.",
261
+ type: "String",
262
+ feel: "optional",
263
+ group: "file",
264
+ constraints: { notEmpty: true },
265
+ binding: { type: "zeebe:input", name: "content" },
266
+ },
267
+ ],
268
+ },
269
+ // ── FS List ───────────────────────────────────────────────────────────────
270
+ {
271
+ id: "io.bpmnkit.fs.list",
272
+ name: "List Directory",
273
+ version: 1,
274
+ description: "List files in a directory. Returns an array of filenames.",
275
+ category: CATEGORY,
276
+ appliesTo: ["bpmn:ServiceTask"],
277
+ icon: { contents: FS_ICON },
278
+ groups: [
279
+ { id: "directory", label: "Directory" },
280
+ { id: "output", label: "Output" },
281
+ ],
282
+ properties: [
283
+ {
284
+ id: "taskType",
285
+ type: "Hidden",
286
+ value: "io.bpmnkit:fs:list:1",
287
+ binding: { type: "zeebe:taskDefinition", property: "type" },
288
+ },
289
+ {
290
+ id: "path",
291
+ label: "Directory path",
292
+ description: "Absolute path or ~/relative path to list.",
293
+ type: "String",
294
+ feel: "optional",
295
+ group: "directory",
296
+ constraints: { notEmpty: true },
297
+ binding: { type: "zeebe:input", name: "path" },
298
+ },
299
+ {
300
+ id: "resultVariable",
301
+ label: "Result variable",
302
+ description: "Process variable to store the file list (string array).",
303
+ type: "String",
304
+ value: "files",
305
+ group: "output",
306
+ binding: { type: "zeebe:taskHeader", key: "resultVariable" },
307
+ },
308
+ ],
309
+ },
310
+ // ── JS Eval ───────────────────────────────────────────────────────────────
311
+ {
312
+ id: "io.bpmnkit.js",
313
+ name: "JavaScript Expression",
314
+ version: 1,
315
+ description: "Evaluate a JavaScript expression. All process variables are available via the `variables` object.",
316
+ category: CATEGORY,
317
+ appliesTo: ["bpmn:ServiceTask"],
318
+ icon: { contents: JS_ICON },
319
+ groups: [
320
+ { id: "expression", label: "Expression" },
321
+ { id: "output", label: "Output" },
322
+ ],
323
+ properties: [
324
+ {
325
+ id: "taskType",
326
+ type: "Hidden",
327
+ value: "io.bpmnkit:js:1",
328
+ binding: { type: "zeebe:taskDefinition", property: "type" },
329
+ },
330
+ {
331
+ id: "expression",
332
+ label: "Expression",
333
+ description: "JavaScript expression returning a value. Use `variables.x` to read process variables.",
334
+ type: "Text",
335
+ group: "expression",
336
+ constraints: { notEmpty: true },
337
+ binding: { type: "zeebe:taskHeader", key: "expression" },
338
+ },
339
+ {
340
+ id: "resultVariable",
341
+ label: "Result variable",
342
+ description: "Process variable to store the expression result.",
343
+ type: "String",
344
+ value: "result",
345
+ group: "output",
346
+ binding: { type: "zeebe:taskHeader", key: "resultVariable" },
347
+ },
348
+ ],
349
+ },
350
+ // ── File Watch Trigger ────────────────────────────────────────────────────
351
+ {
352
+ id: "io.bpmnkit.trigger.file-watch",
353
+ name: "File Watch Trigger",
354
+ version: 1,
355
+ description: "Watch a directory and start a process instance when files are created or changed.",
356
+ category: CATEGORY,
357
+ appliesTo: ["bpmn:ServiceTask"],
358
+ icon: { contents: WATCH_ICON },
359
+ groups: [
360
+ { id: "watch", label: "Watch" },
361
+ { id: "filter", label: "Filter" },
362
+ ],
363
+ properties: [
364
+ {
365
+ id: "taskType",
366
+ type: "Hidden",
367
+ value: "io.bpmnkit:trigger:file-watch:1",
368
+ binding: { type: "zeebe:taskDefinition", property: "type" },
369
+ },
370
+ {
371
+ id: "watchPath",
372
+ label: "Watch path",
373
+ description: "Directory to watch for file changes. Absolute or ~/relative path.",
374
+ type: "String",
375
+ group: "watch",
376
+ constraints: { notEmpty: true },
377
+ binding: { type: "zeebe:taskHeader", key: "watchPath" },
378
+ },
379
+ {
380
+ id: "events",
381
+ label: "Events",
382
+ description: "Which file system events trigger the process.",
383
+ type: "Dropdown",
384
+ value: "all",
385
+ group: "watch",
386
+ choices: [
387
+ { name: "Add or change (all)", value: "all" },
388
+ { name: "New files only (add)", value: "add" },
389
+ { name: "Modified files only (change)", value: "change" },
390
+ ],
391
+ binding: { type: "zeebe:taskHeader", key: "events" },
392
+ },
393
+ {
394
+ id: "glob",
395
+ label: "File filter (glob)",
396
+ description: "Only trigger for filenames matching this pattern (e.g. *.md, report_*.csv).",
397
+ type: "String",
398
+ optional: true,
399
+ group: "filter",
400
+ binding: { type: "zeebe:taskHeader", key: "glob" },
401
+ },
402
+ ],
403
+ },
404
+ // ── HTTP Scraper ──────────────────────────────────────────────────────────
405
+ {
406
+ id: "io.bpmnkit.http.scrape",
407
+ name: "HTTP Scraper",
408
+ version: 1,
409
+ description: "Fetch a URL and extract its text content and title. Returns { html, text, title, statusCode }.",
410
+ category: CATEGORY,
411
+ appliesTo: ["bpmn:ServiceTask"],
412
+ icon: { contents: HTTP_ICON },
413
+ groups: [
414
+ { id: "request", label: "Request" },
415
+ { id: "output", label: "Output" },
416
+ ],
417
+ properties: [
418
+ {
419
+ id: "taskType",
420
+ type: "Hidden",
421
+ value: "io.bpmnkit:http:scrape:1",
422
+ binding: { type: "zeebe:taskDefinition", property: "type" },
423
+ },
424
+ {
425
+ id: "url",
426
+ label: "URL",
427
+ description: "URL to fetch. Use {{varName}} for variables or {{secrets.NAME}} for secrets.",
428
+ type: "String",
429
+ feel: "optional",
430
+ group: "request",
431
+ constraints: { notEmpty: true },
432
+ binding: { type: "zeebe:taskHeader", key: "url" },
433
+ },
434
+ {
435
+ id: "timeout",
436
+ label: "Timeout (seconds)",
437
+ description: "Maximum time to wait for the response.",
438
+ type: "Number",
439
+ value: 30,
440
+ group: "request",
441
+ binding: { type: "zeebe:taskHeader", key: "timeout" },
442
+ },
443
+ {
444
+ id: "resultVariable",
445
+ label: "Result variable",
446
+ description: "Process variable to store { url, html, text, title, statusCode }.",
447
+ type: "String",
448
+ value: "scrapeResult",
449
+ group: "output",
450
+ binding: { type: "zeebe:taskHeader", key: "resultVariable" },
451
+ },
452
+ ],
453
+ },
454
+ // ── Email Fetch ───────────────────────────────────────────────────────────
455
+ {
456
+ id: "io.bpmnkit.email.fetch",
457
+ name: "Fetch Emails",
458
+ version: 1,
459
+ description: "Fetch emails from an IMAP mailbox. Returns an array of { uid, subject, from, date, body }.",
460
+ category: CATEGORY,
461
+ appliesTo: ["bpmn:ServiceTask"],
462
+ icon: { contents: EMAIL_ICON },
463
+ groups: [
464
+ { id: "connection", label: "Connection" },
465
+ { id: "filter", label: "Filter" },
466
+ { id: "output", label: "Output" },
467
+ ],
468
+ properties: [
469
+ {
470
+ id: "taskType",
471
+ type: "Hidden",
472
+ value: "io.bpmnkit:email:fetch:1",
473
+ binding: { type: "zeebe:taskDefinition", property: "type" },
474
+ },
475
+ {
476
+ id: "imapHost",
477
+ label: "IMAP host",
478
+ description: "IMAP server hostname. Use {{secrets.IMAP_HOST}} for credentials.",
479
+ type: "String",
480
+ group: "connection",
481
+ constraints: { notEmpty: true },
482
+ binding: { type: "zeebe:taskHeader", key: "imapHost" },
483
+ },
484
+ {
485
+ id: "imapPort",
486
+ label: "IMAP port",
487
+ type: "Number",
488
+ value: 993,
489
+ group: "connection",
490
+ binding: { type: "zeebe:taskHeader", key: "imapPort" },
491
+ },
492
+ {
493
+ id: "imapUser",
494
+ label: "Username",
495
+ description: "Use {{secrets.IMAP_USER}}.",
496
+ type: "String",
497
+ group: "connection",
498
+ constraints: { notEmpty: true },
499
+ binding: { type: "zeebe:taskHeader", key: "imapUser" },
500
+ },
501
+ {
502
+ id: "imapPassword",
503
+ label: "Password",
504
+ description: "Use {{secrets.IMAP_PASSWORD}}.",
505
+ type: "String",
506
+ group: "connection",
507
+ constraints: { notEmpty: true },
508
+ binding: { type: "zeebe:taskHeader", key: "imapPassword" },
509
+ },
510
+ {
511
+ id: "folder",
512
+ label: "Folder",
513
+ type: "String",
514
+ value: "INBOX",
515
+ group: "filter",
516
+ binding: { type: "zeebe:taskHeader", key: "folder" },
517
+ },
518
+ {
519
+ id: "limit",
520
+ label: "Max messages",
521
+ type: "Number",
522
+ value: 10,
523
+ group: "filter",
524
+ binding: { type: "zeebe:taskHeader", key: "limit" },
525
+ },
526
+ {
527
+ id: "unreadOnly",
528
+ label: "Unread only",
529
+ type: "Boolean",
530
+ value: true,
531
+ group: "filter",
532
+ binding: { type: "zeebe:taskHeader", key: "unreadOnly" },
533
+ },
534
+ {
535
+ id: "resultVariable",
536
+ label: "Result variable",
537
+ description: "Process variable to store the email array.",
538
+ type: "String",
539
+ value: "emails",
540
+ group: "output",
541
+ binding: { type: "zeebe:taskHeader", key: "resultVariable" },
542
+ },
543
+ ],
544
+ },
545
+ // ── Email Send ────────────────────────────────────────────────────────────
546
+ {
547
+ id: "io.bpmnkit.email.send",
548
+ name: "Send Email",
549
+ version: 1,
550
+ description: "Send an email via SMTP. Reads to/subject/body from process variables.",
551
+ category: CATEGORY,
552
+ appliesTo: ["bpmn:ServiceTask"],
553
+ icon: { contents: EMAIL_ICON },
554
+ groups: [
555
+ { id: "connection", label: "Connection" },
556
+ { id: "message", label: "Message" },
557
+ ],
558
+ properties: [
559
+ {
560
+ id: "taskType",
561
+ type: "Hidden",
562
+ value: "io.bpmnkit:email:send:1",
563
+ binding: { type: "zeebe:taskDefinition", property: "type" },
564
+ },
565
+ {
566
+ id: "smtpHost",
567
+ label: "SMTP host",
568
+ description: "SMTP server hostname. Use {{secrets.SMTP_HOST}}.",
569
+ type: "String",
570
+ group: "connection",
571
+ constraints: { notEmpty: true },
572
+ binding: { type: "zeebe:taskHeader", key: "smtpHost" },
573
+ },
574
+ {
575
+ id: "smtpPort",
576
+ label: "SMTP port",
577
+ type: "Number",
578
+ value: 587,
579
+ group: "connection",
580
+ binding: { type: "zeebe:taskHeader", key: "smtpPort" },
581
+ },
582
+ {
583
+ id: "smtpUser",
584
+ label: "Username",
585
+ description: "Use {{secrets.SMTP_USER}}.",
586
+ type: "String",
587
+ group: "connection",
588
+ constraints: { notEmpty: true },
589
+ binding: { type: "zeebe:taskHeader", key: "smtpUser" },
590
+ },
591
+ {
592
+ id: "smtpPassword",
593
+ label: "Password",
594
+ description: "Use {{secrets.SMTP_PASSWORD}}.",
595
+ type: "String",
596
+ group: "connection",
597
+ constraints: { notEmpty: true },
598
+ binding: { type: "zeebe:taskHeader", key: "smtpPassword" },
599
+ },
600
+ {
601
+ id: "from",
602
+ label: "From address",
603
+ description: "Sender address. Defaults to SMTP username.",
604
+ type: "String",
605
+ optional: true,
606
+ group: "message",
607
+ binding: { type: "zeebe:taskHeader", key: "from" },
608
+ },
609
+ ],
610
+ },
611
+ ];
612
+ //# sourceMappingURL=worker-templates.js.map