@livechat/platform-workflows 0.1.8 → 0.44.0-beta.v1

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.
package/dist/tests.mjs CHANGED
@@ -1,14 +1,43 @@
1
- import "./chunk-I4E63NIC.mjs";
2
-
3
1
  // src/tests/selectors.ts
4
2
  var WORKFLOWS_TEST_SELECTORS = {
5
3
  views: {
6
4
  workflows: {
5
+ components: {
6
+ layout: {
7
+ sidebar: {
8
+ closeButton: "close-btn"
9
+ },
10
+ pagination: {
11
+ paginationArrowButton: {
12
+ nextButton: "next-btn",
13
+ previousButton: "previous-btn"
14
+ }
15
+ }
16
+ },
17
+ picker: {
18
+ itemList: "virtuoso-item-list"
19
+ }
20
+ },
7
21
  creator: {
8
22
  navbar: {
23
+ runsButton: "runs-btn",
24
+ readOnlyTag: "read-only-tag",
9
25
  activateSwitch: "activate-switch",
10
26
  publishButton: "publish-btn",
11
- editButton: "edit-btn"
27
+ editButton: "edit-btn",
28
+ nameInput: "name-input",
29
+ editNameButton: "edit-name-btn",
30
+ draftTag: "draft-tag",
31
+ withDraftTag: "with-draft-tag",
32
+ backButton: "back-btn",
33
+ actionMenu: {
34
+ button: "action-menu-trigger-button",
35
+ detailsButton: "details-btn",
36
+ executionsButton: "executions-btn",
37
+ discardDraftButton: "discard-draft-btn",
38
+ editDraftButton: "edit-draft-btn",
39
+ runButton: "run"
40
+ }
12
41
  },
13
42
  builder: {
14
43
  nodes: {
@@ -18,30 +47,89 @@ var WORKFLOWS_TEST_SELECTORS = {
18
47
  },
19
48
  trigger: {
20
49
  button: "add-trigger-btn"
21
- }
50
+ },
51
+ tooltipErrorTrigger: "tooltip-trigger"
22
52
  }
23
53
  },
24
54
  forms: {
55
+ customFieldActions: {
56
+ addToTrigerButton: "add-to-trigger-btn",
57
+ connectTriggerButton: "connect-trigger-btn",
58
+ switchTriggerButton: "switch-trigger-btn"
59
+ },
25
60
  integrations: {
26
61
  text: {
27
62
  info: "info-container",
28
63
  button: "start-trial-btn"
29
64
  }
65
+ },
66
+ widgets: {
67
+ credentialPicker: {
68
+ displayName: "credential-display-name",
69
+ removeButton: "remove-credential-btn",
70
+ secondaryInfo: "credential-secondary-info",
71
+ reconnectButton: "reconnect-btn"
72
+ },
73
+ tagsInput: {
74
+ formatIcon: "custom-tags-format-icon",
75
+ triggerIcon: "custom-tags-picker-trigger-icon",
76
+ wrapper: "custom-tags-picker"
77
+ }
78
+ },
79
+ testRun: {
80
+ runButton: "test-run-button",
81
+ errorMessageText: "error-message-text",
82
+ status: {
83
+ statusText: "result-status",
84
+ statusIconSuccess: "result-status-icon-success",
85
+ statusIconError: "result-status-icon-error",
86
+ responseInfo: "result-response-info"
87
+ }
88
+ },
89
+ testRunModal: {
90
+ wrapper: "test-run-modal",
91
+ runButton: "test-run-btn"
30
92
  }
93
+ },
94
+ controls: {
95
+ homeButton: "home-btn"
96
+ },
97
+ handles: {
98
+ buttons: {
99
+ runButton: "run-btn",
100
+ removeEdgeButton: "remove-edge-btn"
101
+ }
102
+ }
103
+ },
104
+ forms: {
105
+ allSetAlert: "form-all-set-alert",
106
+ buttons: {
107
+ removeButton: "custom-remove-btn"
31
108
  }
32
109
  },
33
110
  modals: {
34
- addTask: {
35
- wrapper: "add-task-modal",
36
- taskCard: (key) => `task-option-${key}`,
37
- taskCategoryButton: (key) => `task-category-${key}`,
38
- saveButton: "save-task-btn"
111
+ add: {
112
+ wrapper: "add-modal",
113
+ search: "search-input",
114
+ card: (key) => `card-option-${key}`,
115
+ categoryButton: (key) => `card-category-${key}`,
116
+ saveButton: "save-building-block-btn",
117
+ noMatchingText: (kind) => `no-matching-${kind}`
118
+ },
119
+ delete: {
120
+ wrapper: "delete-workflow-modal",
121
+ deleteButton: "delete-workflow-btn",
122
+ cancelButton: "cancel-delete-btn"
39
123
  },
40
- addTrigger: {
41
- wrapper: "add-trigger-modal",
42
- saveButton: "save-trigger-btn",
43
- triggerCard: (key) => `trigger-option-${key}`,
44
- triggerCategoryButton: (key) => `trigger-category-${key}`
124
+ execute: {
125
+ wrapper: "execute-workflow-modal",
126
+ cancelButton: "cancel-execute-btn",
127
+ runButton: "run-execute-btn"
128
+ },
129
+ import: {
130
+ wrapper: "import-workflow-modal",
131
+ cancelButton: "cancel-import-btn",
132
+ confirmButton: "run-import-btn"
45
133
  },
46
134
  publish: {
47
135
  wrapper: "publish-workflow-modal",
@@ -53,6 +141,14 @@ var WORKFLOWS_TEST_SELECTORS = {
53
141
  element: {
54
142
  wrapper: "element-wrapper"
55
143
  },
144
+ executions: {
145
+ noPublishedWorkflow: "no-published-workflow",
146
+ noWorkflowRunsYet: "no-workflow-runs-yet",
147
+ noMatchingExecution: "no-matching-execution",
148
+ card: (id) => `execution-${id}`,
149
+ executionDate: "execution-date",
150
+ status: "execution-status"
151
+ },
56
152
  details: {
57
153
  executions: {
58
154
  list: {
@@ -60,9 +156,6 @@ var WORKFLOWS_TEST_SELECTORS = {
60
156
  status: "execution-status"
61
157
  }
62
158
  },
63
- panel: {
64
- historyTab: "history-tab"
65
- },
66
159
  info: {
67
160
  dateCreated: "date-created",
68
161
  dateUpdated: "date-updated",
@@ -74,13 +167,24 @@ var WORKFLOWS_TEST_SELECTORS = {
74
167
  },
75
168
  list: {
76
169
  grid: {
170
+ filters: {
171
+ wrapper: "filters-wrapper",
172
+ statusFilter: "status-filter",
173
+ clearFiltersButton: "clear-filters-btn"
174
+ },
77
175
  table: {
78
176
  wrapper: "workflows-table",
79
177
  body: "workflows-table-body",
80
178
  menuTrigger: "action-menu-trigger",
81
179
  activateSwitch: "activate-switch",
82
180
  infoButton: "info-btn",
83
- workflowItem: (id) => `workflow-item-${id}`
181
+ emptyInfo: "empty-info",
182
+ workflowItem: (id) => `workflow-item-${id}`,
183
+ withDraftTag: "with-draft-tag",
184
+ draftTag: "draft-tag",
185
+ clearFiltersButton: "clear-filters-btn",
186
+ productIconsRow: "product-icons-row",
187
+ productIconCount: "product-icon-count"
84
188
  }
85
189
  },
86
190
  view: {
@@ -93,16 +197,40 @@ var WORKFLOWS_TEST_SELECTORS = {
93
197
  },
94
198
  previewTemplate: {
95
199
  wrapper: "template-preview-modal",
96
- useButton: "use-template-btn"
200
+ useButton: "use-template-btn",
201
+ productsUsed: "products-used"
202
+ },
203
+ previewImport: {
204
+ wrapper: "import-preview-modal",
205
+ useButton: "use-import-btn",
206
+ closeButton: "close-import-btn"
207
+ },
208
+ previewFallback: {
209
+ wrapper: "import-preview-fallback-modal",
210
+ closeButton: "close-btn"
97
211
  }
98
212
  },
99
213
  home: {
214
+ noTemplatesFoundInfo: "no-templates-found-info",
100
215
  cards: {
101
216
  template: {
102
217
  wrapper: "template-card"
218
+ },
219
+ scratch: {
220
+ cardHeader: "card-header"
103
221
  }
104
222
  }
105
223
  }
224
+ },
225
+ common: {
226
+ errorPage: {
227
+ backButton: "error-page-back-button",
228
+ homeButton: "error-page-home-button",
229
+ refreshButton: "error-page-refresh-button"
230
+ },
231
+ tree: {
232
+ listElementExpanderButton: "tree-list-element-expander-button"
233
+ }
106
234
  }
107
235
  }
108
236
  }
@@ -0,0 +1,440 @@
1
+ import { UiSchema } from '@rjsf/utils';
2
+ import { JSONSchema7 } from 'json-schema';
3
+ import { CredentialType, Credential, WorkflowTaskType, WorkflowHttpTask, WorkflowForkJoinTask, WorkflowJoinTask, WorkflowSwitchTask, WorkflowCustomTaskName, WorkflowConditionTask, WorkflowSwitchCaseTask, WorkflowDoWhileTask, WorkflowLoopTask, WorkflowForEachTask, WorkflowTerminateTask, WorkflowWaitTask, WorkflowInlineBaseTask, WorkflowScriptTask, WorkflowConvertTask, WorkflowConstructTask, WorkflowSimpleTask, WorkflowActionTask, WorkflowAwaitTask, WorkflowNotifyAiAgentTask, WorkflowReasoningTask, WorkflowItemKind, WorkflowHttpTaskCore, WorkflowForkJoinTaskCore, WorkflowJoinTaskCore, WorkflowSwitchTaskCore, WorkflowConditionTaskCore, WorkflowSwitchCaseTaskCore, WorkflowDoWhileBaseTaskCore, WorkflowLoopTaskCore, WorkflowForEachTaskCore, WorkflowTerminateTaskCore, WorkflowWaitTaskCore, WorkflowInlineBaseTaskCore, WorkflowScriptTaskCore, WorkflowConvertTaskCore, WorkflowConstructTaskCore, WorkflowSimpleTaskCore, WorkflowActionTaskCore, WorkflowAwaitTaskCore, WorkflowNotifyAiAgentTaskCore, WorkflowReasoningTaskCore, WorkflowTriggerType, WorkflowWebhookTrigger, WorkflowWebhookManualTrigger, WorkflowManualTrigger, WorkflowAgentTrigger, WorkflowRecurringTrigger, WorkflowOneTimeTrigger, WorkflowWebhookTriggerCore, WorkflowWebhookManualTriggerCore, WorkflowManualTriggerCore, WorkflowAgentTriggerCore, WorkflowRecurringTriggerCore, WorkflowOneTimeTriggerCore, ExternalResourceConfig } from '@livechat/developer-studio-api';
4
+
5
+ type CredentialGenericAuthType = 'httpBasicAuth' | 'httpBearerAuth' | 'httpQueryAuth' | 'httpDigestAuth' | 'httpCustomAuth' | 'httpHeaderAuth' | 'oAuth1Api' | 'oAuth2Api';
6
+ interface CredentialField {
7
+ displayName: string;
8
+ name: string;
9
+ type: 'string' | 'number' | 'boolean' | 'options' | 'hidden' | 'notice';
10
+ default?: string | number | boolean;
11
+ required?: boolean;
12
+ readonly?: true;
13
+ placeholder?: string;
14
+ description?: string;
15
+ doNotInherit?: boolean;
16
+ source?: {
17
+ reference: string;
18
+ };
19
+ typeOptions?: {
20
+ password?: boolean;
21
+ expirable?: boolean;
22
+ url?: boolean;
23
+ rows?: number;
24
+ };
25
+ options?: {
26
+ name: string;
27
+ value: string;
28
+ description?: string;
29
+ }[];
30
+ displayOptions?: {
31
+ show?: Record<string, string[]>;
32
+ hide?: Record<string, string[]>;
33
+ };
34
+ hint?: string;
35
+ }
36
+ interface CredentialAuthenticate {
37
+ type: 'generic' | 'oauth2';
38
+ properties?: {
39
+ headers?: Record<string, string>;
40
+ qs?: Record<string, string>;
41
+ body?: Record<string, string>;
42
+ };
43
+ }
44
+ interface CredentialTest {
45
+ request: {
46
+ baseURL?: string;
47
+ url: string;
48
+ method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
49
+ qs?: Record<string, string | number>;
50
+ };
51
+ }
52
+ declare enum CredentialKind {
53
+ Internal = "internal",
54
+ Custom = "custom"
55
+ }
56
+ interface CredentialTemplate {
57
+ name: string;
58
+ displayName: string;
59
+ provider: string;
60
+ product?: string;
61
+ type: CredentialType;
62
+ properties: CredentialField[];
63
+ documentationUrl?: string;
64
+ extends?: string[];
65
+ authenticate?: CredentialAuthenticate;
66
+ test?: CredentialTest;
67
+ iconUrl?: string | {
68
+ light: string;
69
+ dark: string;
70
+ };
71
+ supportedNodes?: string[];
72
+ genericAuth?: boolean;
73
+ isBuiltIn?: boolean;
74
+ isHidden?: boolean;
75
+ }
76
+ interface CredentialConfig {
77
+ name: string;
78
+ provider: string;
79
+ product?: string;
80
+ kind: CredentialKind;
81
+ type: CredentialType;
82
+ specification: {
83
+ schema: JSONSchema7;
84
+ uiSchema: UiSchema;
85
+ };
86
+ customization: {
87
+ description: string;
88
+ };
89
+ template: Credential;
90
+ metadata: {
91
+ isComplete?: boolean;
92
+ isHidden?: boolean;
93
+ };
94
+ }
95
+
96
+ declare enum WorkflowDomain {
97
+ Chats = "chats",
98
+ Tickets = "tickets",
99
+ Customers = "customers",
100
+ Agents = "agents",
101
+ General = "general"
102
+ }
103
+ interface WorkflowDomainConfig {
104
+ name: string;
105
+ displayName: string;
106
+ }
107
+
108
+ interface WorkflowTaskCoreMap {
109
+ [WorkflowTaskType.http]: WorkflowHttpTaskCore;
110
+ [WorkflowTaskType.forkJoin]: WorkflowForkJoinTaskCore;
111
+ [WorkflowTaskType.join]: WorkflowJoinTaskCore;
112
+ [WorkflowTaskType.switch]: WorkflowSwitchTaskCore;
113
+ [WorkflowCustomTaskName.condition]: WorkflowConditionTaskCore;
114
+ [WorkflowCustomTaskName.switchCase]: WorkflowSwitchCaseTaskCore;
115
+ [WorkflowTaskType.doWhile]: WorkflowDoWhileBaseTaskCore;
116
+ [WorkflowCustomTaskName.loop]: WorkflowLoopTaskCore;
117
+ [WorkflowCustomTaskName.forEach]: WorkflowForEachTaskCore;
118
+ [WorkflowTaskType.terminate]: WorkflowTerminateTaskCore;
119
+ [WorkflowTaskType.wait]: WorkflowWaitTaskCore;
120
+ [WorkflowTaskType.inline]: WorkflowInlineBaseTaskCore;
121
+ [WorkflowCustomTaskName.script]: WorkflowScriptTaskCore;
122
+ [WorkflowCustomTaskName.convert]: WorkflowConvertTaskCore;
123
+ [WorkflowCustomTaskName.construct]: WorkflowConstructTaskCore;
124
+ [WorkflowTaskType.simple]: WorkflowSimpleTaskCore;
125
+ [WorkflowCustomTaskName.action]: WorkflowActionTaskCore;
126
+ [WorkflowCustomTaskName.awaitAgent]: WorkflowAwaitTaskCore;
127
+ [WorkflowCustomTaskName.notifyAgent]: WorkflowNotifyAiAgentTaskCore;
128
+ [WorkflowCustomTaskName.reasoning]: WorkflowReasoningTaskCore;
129
+ }
130
+ interface WorkflowTaskDefinitionMap {
131
+ [WorkflowTaskType.http]: WorkflowHttpTask;
132
+ [WorkflowTaskType.forkJoin]: WorkflowForkJoinTask;
133
+ [WorkflowTaskType.join]: WorkflowJoinTask;
134
+ [WorkflowTaskType.switch]: WorkflowSwitchTask;
135
+ [WorkflowCustomTaskName.condition]: WorkflowConditionTask;
136
+ [WorkflowCustomTaskName.switchCase]: WorkflowSwitchCaseTask;
137
+ [WorkflowTaskType.doWhile]: WorkflowDoWhileTask;
138
+ [WorkflowCustomTaskName.loop]: WorkflowLoopTask;
139
+ [WorkflowCustomTaskName.forEach]: WorkflowForEachTask;
140
+ [WorkflowTaskType.terminate]: WorkflowTerminateTask;
141
+ [WorkflowTaskType.wait]: WorkflowWaitTask;
142
+ [WorkflowTaskType.inline]: WorkflowInlineBaseTask;
143
+ [WorkflowCustomTaskName.script]: WorkflowScriptTask;
144
+ [WorkflowCustomTaskName.convert]: WorkflowConvertTask;
145
+ [WorkflowCustomTaskName.construct]: WorkflowConstructTask;
146
+ [WorkflowTaskType.simple]: WorkflowSimpleTask;
147
+ [WorkflowCustomTaskName.action]: WorkflowActionTask;
148
+ [WorkflowCustomTaskName.awaitAgent]: WorkflowAwaitTask;
149
+ [WorkflowCustomTaskName.notifyAgent]: WorkflowNotifyAiAgentTask;
150
+ [WorkflowCustomTaskName.reasoning]: WorkflowReasoningTask;
151
+ }
152
+ interface WorkflowTriggerCoreMap {
153
+ [WorkflowTriggerType.webhook]: WorkflowWebhookTriggerCore;
154
+ [WorkflowTriggerType.webhookManual]: WorkflowWebhookManualTriggerCore;
155
+ [WorkflowTriggerType.manual]: WorkflowManualTriggerCore;
156
+ [WorkflowTriggerType.agent]: WorkflowAgentTriggerCore;
157
+ [WorkflowTriggerType.recurring]: WorkflowRecurringTriggerCore;
158
+ [WorkflowTriggerType.oneTime]: WorkflowOneTimeTriggerCore;
159
+ }
160
+ interface WorkflowsTriggerDefinitionMap {
161
+ [WorkflowTriggerType.webhook]: WorkflowWebhookTrigger;
162
+ [WorkflowTriggerType.webhookManual]: WorkflowWebhookManualTrigger;
163
+ [WorkflowTriggerType.manual]: WorkflowManualTrigger;
164
+ [WorkflowTriggerType.agent]: WorkflowAgentTrigger;
165
+ [WorkflowTriggerType.recurring]: WorkflowRecurringTrigger;
166
+ [WorkflowTriggerType.oneTime]: WorkflowOneTimeTrigger;
167
+ }
168
+ type WorkflowItemFlags = {
169
+ isHidden: boolean;
170
+ isRemovable: boolean;
171
+ isSelectable: boolean;
172
+ isEditable: boolean;
173
+ };
174
+ type WorkflowItemBaseMetadata = {
175
+ outputBasePath: string | null;
176
+ inputBasePath: string;
177
+ credentialPath?: string;
178
+ isHidden: boolean;
179
+ };
180
+ type WorkflowItemMetadata = WorkflowItemBaseMetadata;
181
+ declare enum WorkflowItemTag {
182
+ AI = "ai"
183
+ }
184
+ /**
185
+ * Describes the nature of a task/trigger so consumers (UI, AI agent prompts)
186
+ * can group, filter, and pick icons without inspecting `displayName`.
187
+ *
188
+ * For tasks the value reflects the side-effect the task performs.
189
+ * For triggers it reflects the verb of the event that fires the trigger
190
+ * (or `invoke`/`control` for non-event-driven orchestration triggers).
191
+ *
192
+ * Convention:
193
+ * - `read` — find/get/list/search + pure AI compute returning data
194
+ * - `create` — adds a new entity; trigger: "X was created"
195
+ * - `upsert` — create-or-update
196
+ * - `update` — modifies an existing entity; trigger: "X changed"
197
+ * - `delete` — remove/archive/close/end + "X was removed"
198
+ * - `send` — outbound communication (message, notification, transcript)
199
+ * - `invoke` — side-effectful action that does not fit CRUD
200
+ * (run job, generic HTTP, arbitrary script, notify agent,
201
+ * manually-triggered workflow)
202
+ * - `control` — workflow control-flow primitive (fork/join/cond/switch/loop/
203
+ * wait/terminate) and system trigger orchestration
204
+ */
205
+ declare enum WorkflowOperation {
206
+ Read = "read",
207
+ Create = "create",
208
+ Upsert = "upsert",
209
+ Update = "update",
210
+ Delete = "delete",
211
+ Send = "send",
212
+ Invoke = "invoke",
213
+ Control = "control"
214
+ }
215
+ /**
216
+ * Entity the task/trigger acts on. Always namespaced with the provider id
217
+ * (`<provider>:<entity>`, kebab-case) so the same entity name across two
218
+ * providers can't collide.
219
+ *
220
+ * Allowed values come from per-provider `<PROVIDER>_SUBJECTS` constants
221
+ * (e.g. `BIGCOMMERCE_SUBJECTS`, `LIVECHAT_SUBJECTS`) which `satisfies
222
+ * Record<string, \`${IntegrationNames.X}:${string}\`>` so typos and missing
223
+ * namespaces fail to compile. Control-flow primitives and generic HTTP /
224
+ * script tasks leave it `undefined`.
225
+ */
226
+ type WorkflowSubject = `${string}:${string}`;
227
+ interface WorkflowItemCustomization {
228
+ domain: WorkflowDomain | null;
229
+ provider: string;
230
+ operation: WorkflowOperation;
231
+ subject?: WorkflowSubject;
232
+ product?: string;
233
+ displayName: string;
234
+ description: string;
235
+ shortDescription: string;
236
+ tags?: WorkflowItemTag[];
237
+ icon?: string;
238
+ flags: WorkflowItemFlags;
239
+ }
240
+ interface WorkflowItemSpecificationRef<TType> {
241
+ type: 'single' | 'array' | 'array-element';
242
+ value: TType;
243
+ subject?: WorkflowDomain;
244
+ }
245
+ interface WorkflowItemInputBinding {
246
+ outputPath: string;
247
+ inputPath: string;
248
+ inputFormat?: string;
249
+ }
250
+ interface WorkflowItemSpecification {
251
+ input?: JSONSchema7;
252
+ inputUi?: UiSchema;
253
+ output?: JSONSchema7;
254
+ outputUi?: UiSchema;
255
+ inputReferences?: Record<string, WorkflowItemSpecificationRef<string>[]>;
256
+ inputResources?: Record<string, WorkflowItemSpecificationRef<string>[]>;
257
+ outputReferences?: Record<string, WorkflowItemSpecificationRef<string>[]>;
258
+ outputResources?: Record<string, WorkflowItemSpecificationRef<string>[]>;
259
+ outputBindings?: WorkflowItemInputBinding[];
260
+ }
261
+ interface WorkflowItemSpecifications<TData> {
262
+ default: string;
263
+ latest: string;
264
+ versions: Record<string, WorkflowItemSpecification & {
265
+ metadata: WorkflowItemMetadata;
266
+ template: TData;
267
+ }>;
268
+ }
269
+ type WorkflowItemTemplateBase<TData> = {
270
+ kind: WorkflowItemKind;
271
+ key: string;
272
+ domain: WorkflowDomain | null;
273
+ provider: string;
274
+ operation: WorkflowOperation;
275
+ subject?: WorkflowSubject;
276
+ product?: string;
277
+ name: string;
278
+ displayName: string;
279
+ shortDescription: string;
280
+ description: string;
281
+ icon?: string;
282
+ version?: string;
283
+ metadata: WorkflowItemBaseMetadata;
284
+ specification: WorkflowItemSpecification;
285
+ template: TData;
286
+ };
287
+ interface WorkflowItemConfigBase<TData> {
288
+ key: string;
289
+ kind: WorkflowItemKind;
290
+ customization: WorkflowItemCustomization;
291
+ specifications: WorkflowItemSpecifications<TData>;
292
+ }
293
+ /** Union of all task core types */
294
+ type AnyTaskCore = WorkflowTaskCoreMap[keyof WorkflowTaskCoreMap];
295
+ /** Union of all task definition types */
296
+ type AnyTaskDefinition = WorkflowTaskDefinitionMap[keyof WorkflowTaskDefinitionMap];
297
+ /** Union of all trigger core types */
298
+ type AnyTriggerCore = WorkflowTriggerCoreMap[keyof WorkflowTriggerCoreMap];
299
+ /** Union of all trigger definition types */
300
+ type AnyTriggerDefinition = WorkflowsTriggerDefinitionMap[keyof WorkflowsTriggerDefinitionMap];
301
+ /**
302
+ * Generic task template - use with specific TCore for type safety
303
+ * @example const myTask: WorkflowTaskTemplate<WorkflowHttpTaskCore> = { ... }
304
+ */
305
+ type WorkflowTaskTemplate<TCore extends AnyTaskCore = AnyTaskCore> = {
306
+ type: WorkflowTaskType;
307
+ } & WorkflowItemTemplateBase<TCore>;
308
+ /**
309
+ * Generic task config - use with specific TDefinition for type safety
310
+ * @example const myConfig: WorkflowTaskConfig<WorkflowHttpTask> = { ... }
311
+ */
312
+ type WorkflowTaskConfig<TDefinition extends AnyTaskDefinition = AnyTaskDefinition> = {
313
+ kind: typeof WorkflowItemKind.Task;
314
+ } & WorkflowItemConfigBase<TDefinition>;
315
+ /**
316
+ * Generic trigger template - use with specific TCore for type safety
317
+ */
318
+ type WorkflowTriggerTemplate<TCore extends AnyTriggerCore = AnyTriggerCore> = {
319
+ kind: typeof WorkflowItemKind.Trigger;
320
+ type: keyof WorkflowTriggerCoreMap;
321
+ } & WorkflowItemTemplateBase<TCore>;
322
+ /**
323
+ * Generic trigger config - use with specific TDefinition for type safety
324
+ */
325
+ type WorkflowTriggerConfig<TDefinition extends AnyTriggerDefinition = AnyTriggerDefinition> = {
326
+ kind: typeof WorkflowItemKind.Trigger;
327
+ } & WorkflowItemConfigBase<TDefinition>;
328
+ type WorkflowItemTemplate = WorkflowTaskTemplate | WorkflowTriggerTemplate;
329
+ type WorkflowItemConfig = WorkflowTaskConfig | WorkflowTriggerConfig;
330
+ /**
331
+ * JSON-serializable subset of WorkflowTaskTemplate<WorkflowHttpTaskCore>.
332
+ *
333
+ * Omits fields that the compiler derives:
334
+ * - kind → always Task
335
+ * - type → always http
336
+ * - name → same as key
337
+ */
338
+ type DeclarativeWorkflowTaskTemplate = Omit<WorkflowTaskTemplate<WorkflowHttpTaskCore>, 'kind' | 'type' | 'name' | 'metadata'> & {
339
+ metadata?: {
340
+ isHidden?: boolean;
341
+ };
342
+ };
343
+
344
+ interface ProviderProductConfig {
345
+ name: string;
346
+ displayName: string;
347
+ icon?: string;
348
+ }
349
+ interface ProviderConfig {
350
+ name: string;
351
+ displayName: string;
352
+ icon?: string;
353
+ isHidden?: boolean;
354
+ products?: Record<string, ProviderProductConfig>;
355
+ }
356
+
357
+ declare enum WorkflowRefClass {
358
+ Reference = "reference",
359
+ Resource = "resource"
360
+ }
361
+ declare enum WorkflowReferenceKind {
362
+ Resource = "resource",
363
+ Entity = "entity",
364
+ Property = "property"
365
+ }
366
+ declare enum WorkflowReferenceMatchingStrategy {
367
+ ExactOnly = "exact_only",
368
+ Semantic = "semantic"
369
+ }
370
+ type WorkflowReferenceDefinition = JSONSchema7 & {
371
+ class: WorkflowRefClass.Reference;
372
+ provider: string;
373
+ name: string;
374
+ displayName: string;
375
+ pluralDisplayName: string;
376
+ domain: WorkflowDomain | null;
377
+ product?: string;
378
+ visible: true;
379
+ configs?: {
380
+ dependencies?: Record<string, JSONSchema7>;
381
+ matching?: {
382
+ strategy: WorkflowReferenceMatchingStrategy;
383
+ };
384
+ external?: ExternalResourceConfig;
385
+ };
386
+ } & ({
387
+ kind: WorkflowReferenceKind.Resource;
388
+ resource: {
389
+ name: string;
390
+ path: string;
391
+ };
392
+ } | {
393
+ kind: WorkflowReferenceKind.Property | WorkflowReferenceKind.Entity;
394
+ });
395
+ type WorkflowResourceDefinition = JSONSchema7 & {
396
+ class: WorkflowRefClass.Resource;
397
+ provider: string;
398
+ name: string;
399
+ displayName: string;
400
+ pluralDisplayName: string;
401
+ };
402
+
403
+ interface LightConfiguration {
404
+ providers: Record<string, ProviderConfig>;
405
+ domains: Record<WorkflowDomain, WorkflowDomainConfig>;
406
+ credentials: Record<string, CredentialConfig>;
407
+ items: Record<string, WorkflowItemTemplate>;
408
+ resources: Record<string, WorkflowResourceDefinition>;
409
+ references: Record<string, WorkflowReferenceDefinition>;
410
+ }
411
+ interface Configuration {
412
+ providers: Record<string, ProviderConfig>;
413
+ domains: Record<WorkflowDomain, WorkflowDomainConfig>;
414
+ credentials: Record<string, CredentialConfig>;
415
+ items: Record<string, WorkflowItemConfig>;
416
+ resources: Record<string, WorkflowResourceDefinition>;
417
+ references: Record<string, WorkflowReferenceDefinition>;
418
+ }
419
+ type LightProviderConfiguration = ProviderConfig & {
420
+ defaultCredential?: CredentialConfig;
421
+ credentials: Record<string, CredentialConfig>;
422
+ items: Record<string, WorkflowItemTemplate>;
423
+ resources: Record<string, WorkflowResourceDefinition>;
424
+ };
425
+ type ProviderConfiguration = ProviderConfig & {
426
+ defaultCredential?: CredentialConfig;
427
+ credentials: Record<string, CredentialConfig>;
428
+ items: Record<string, WorkflowItemConfig>;
429
+ resources: Record<string, WorkflowResourceDefinition>;
430
+ };
431
+ interface LightSpecification {
432
+ providers: Record<string, LightProviderConfiguration>;
433
+ raw: LightConfiguration;
434
+ }
435
+ interface Specification {
436
+ providers: Record<string, ProviderConfiguration>;
437
+ raw: Configuration;
438
+ }
439
+
440
+ export { type WorkflowItemConfigBase as A, type WorkflowItemFlags as B, type CredentialConfig as C, type DeclarativeWorkflowTaskTemplate as D, type WorkflowItemInputBinding as E, WorkflowItemTag as F, type WorkflowItemTemplateBase as G, WorkflowOperation as H, WorkflowRefClass as I, WorkflowReferenceKind as J, WorkflowReferenceMatchingStrategy as K, type LightSpecification as L, type WorkflowSubject as M, type WorkflowTaskCoreMap as N, type WorkflowTaskDefinitionMap as O, type ProviderConfig as P, type WorkflowTriggerCoreMap as Q, type WorkflowsTriggerDefinitionMap as R, type Specification as S, type WorkflowDomainConfig as W, WorkflowDomain as a, type WorkflowTaskTemplate as b, type WorkflowTaskConfig as c, type WorkflowReferenceDefinition as d, type WorkflowResourceDefinition as e, type WorkflowItemSpecificationRef as f, type WorkflowItemConfig as g, type WorkflowItemTemplate as h, type WorkflowItemSpecification as i, type WorkflowItemMetadata as j, type WorkflowItemCustomization as k, type WorkflowItemSpecifications as l, type WorkflowTriggerConfig as m, type WorkflowTriggerTemplate as n, type Configuration as o, type CredentialAuthenticate as p, type CredentialField as q, type CredentialGenericAuthType as r, CredentialKind as s, type CredentialTemplate as t, type CredentialTest as u, type LightConfiguration as v, type LightProviderConfiguration as w, type ProviderConfiguration as x, type ProviderProductConfig as y, type WorkflowItemBaseMetadata as z };