@oomol-lab/open-flow 0.1.0-beta.68 → 0.1.0-beta.69
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/browser/{ContentIcon-Sx9bywU-.js → ContentIcon-CsECY5id.js} +14 -7
- package/dist/browser/{FlowCanvas-CXpaeurx.js → FlowCanvas-C5X22xQ7.js} +18 -18
- package/dist/browser/{createResourceDialog-BKmimKA_.js → createResourceDialog-Di5BBrQv.js} +2 -2
- package/dist/browser/{dialog-ZmfcwuMS.js → dialog-Bjo-r9B0.js} +85 -8
- package/dist/browser/event-sources.d.ts +4 -2
- package/dist/browser/{exportSvg-D4CqCcx2.js → exportSvg-Cj6Spxx-.js} +2 -2
- package/dist/browser/flow-authoring-node.d.ts +3 -1
- package/dist/browser/flow-authoring.js +68 -7
- package/dist/browser/flow-change-schema.d.ts +3 -1
- package/dist/browser/flow-change.d.ts +17 -2
- package/dist/browser/flow-change.js +82 -9
- package/dist/browser/{flowChanges-B5tZMcGr.js → flowChanges-Dp-rcEJ6.js} +737 -1180
- package/dist/browser/{flowWorkspace-zFBFtZPo.js → flowWorkspace-CB1QACku.js} +440 -70
- package/dist/browser/preview.css +49 -41
- package/dist/browser/preview.js +2229 -2359
- package/dist/browser/{typeScriptSession-D0bjYDeg.js → typeScriptSession-B0hC-C8y.js} +1 -1
- package/dist/browser/ui.css +8 -0
- package/dist/browser/workbench.css +53 -41
- package/dist/browser/workbench.js +74 -32
- package/dist/browser/{workbenchSelect-CChdgugI.js → workbenchSelect-C3hxUcYm.js} +1 -1
- package/dist/command/index.js +55 -51
- package/dist/common/authoring.d.ts +20 -0
- package/dist/common/authoringSchema.d.ts +243 -0
- package/dist/common/connector-proxy.d.ts +4 -0
- package/dist/common/control-api-conformance.js +147 -33
- package/dist/common/control-api.d.ts +14 -7
- package/dist/common/control-api.js +130 -15
- package/dist/common/control-requests.d.ts +32 -19
- package/dist/common/control-requests.js +2854 -152
- package/dist/common/decision.js +27 -3
- package/dist/common/engine-contract.d.ts +2 -2
- package/dist/common/event-source-definition.d.ts +34 -16
- package/dist/common/event-source.d.ts +63 -5
- package/dist/common/event-source.js +5744 -261
- package/dist/common/event-sources.d.ts +99 -6
- package/dist/common/flow-encoding.js +49 -10
- package/dist/common/flow-errorHandling.d.ts +36 -0
- package/dist/common/flow-graph.d.ts +4 -2
- package/dist/common/flow-retry.d.ts +19 -0
- package/dist/common/flow-semantics.js +94 -10
- package/dist/common/{fr-Du5gv3kM.js → fr-CNTSedYU.js} +259 -18
- package/dist/common/integration-trigger.d.ts +1 -1
- package/dist/common/integration-trigger.js +27 -3
- package/dist/common/{ja-D2wyPdTF.js → ja-CxQBHr2J.js} +259 -18
- package/dist/common/{ko-Cuu2AOaC.js → ko-D1Exiv1h.js} +259 -18
- package/dist/common/mcp.d.ts +30 -0
- package/dist/common/mcp.js +132 -17
- package/dist/common/openapi.js +27 -3
- package/dist/common/poll-trigger.js +27 -3
- package/dist/common/provider-triggers.d.ts +0 -2
- package/dist/common/provider-triggers.js +358 -155
- package/dist/common/{ru-BjI_JSsx.js → ru-BzLZv0B7.js} +259 -18
- package/dist/common/run-events.d.ts +2 -0
- package/dist/common/run-events.js +4 -2
- package/dist/common/runtime-contract.d.ts +1 -0
- package/dist/common/runtime-contract.js +4 -4
- package/dist/common/scheduler.d.ts +13 -2
- package/dist/common/scheduler.js +288 -98
- package/dist/common/webhook-trigger.js +27 -3
- package/dist/common/workflow.js +27 -3
- package/dist/common/{zh-CN-CnnXkzLh.js → zh-CN-Dg_xSGde.js} +259 -18
- package/dist/common/{zh-TW-CJnR2dgF.js → zh-TW-oxuLwsV0.js} +259 -18
- package/dist/index.d.ts +1 -0
- package/package.json +1 -1
- package/dist/common/event-source-feishu.d.ts +0 -3
- package/dist/common/feishu-events.d.ts +0 -19
- package/dist/common/feishu-subscriptions.d.ts +0 -6
|
@@ -1155,7 +1155,8 @@ var en_default$1 = {
|
|
|
1155
1155
|
"running": "Running",
|
|
1156
1156
|
"success": "Completed",
|
|
1157
1157
|
"error": "Failed",
|
|
1158
|
-
"waiting": "Waiting"
|
|
1158
|
+
"waiting": "Waiting",
|
|
1159
|
+
"handled": "Failure handled"
|
|
1159
1160
|
},
|
|
1160
1161
|
"triggerSource": {
|
|
1161
1162
|
"manual": "Manual",
|
|
@@ -1796,7 +1797,8 @@ var fr_default$1 = {
|
|
|
1796
1797
|
"running": "En cours",
|
|
1797
1798
|
"success": "Terminé",
|
|
1798
1799
|
"error": "Échec",
|
|
1799
|
-
"waiting": "En attente"
|
|
1800
|
+
"waiting": "En attente",
|
|
1801
|
+
"handled": "Échec traité"
|
|
1800
1802
|
},
|
|
1801
1803
|
"triggerSource": {
|
|
1802
1804
|
"manual": "Manuel",
|
|
@@ -2437,7 +2439,8 @@ var ja_default$1 = {
|
|
|
2437
2439
|
"running": "実行中",
|
|
2438
2440
|
"success": "完了",
|
|
2439
2441
|
"error": "失敗",
|
|
2440
|
-
"waiting": "待機中"
|
|
2442
|
+
"waiting": "待機中",
|
|
2443
|
+
"handled": "失敗を処理済み"
|
|
2441
2444
|
},
|
|
2442
2445
|
"triggerSource": {
|
|
2443
2446
|
"manual": "手動",
|
|
@@ -3078,7 +3081,8 @@ var ko_default$1 = {
|
|
|
3078
3081
|
"running": "실행 중",
|
|
3079
3082
|
"success": "완료",
|
|
3080
3083
|
"error": "실패",
|
|
3081
|
-
"waiting": "대기 중"
|
|
3084
|
+
"waiting": "대기 중",
|
|
3085
|
+
"handled": "실패 처리됨"
|
|
3082
3086
|
},
|
|
3083
3087
|
"triggerSource": {
|
|
3084
3088
|
"manual": "수동",
|
|
@@ -3719,7 +3723,8 @@ var ru_default$1 = {
|
|
|
3719
3723
|
"running": "Выполняется",
|
|
3720
3724
|
"success": "Завершён",
|
|
3721
3725
|
"error": "Ошибка",
|
|
3722
|
-
"waiting": "Ожидание"
|
|
3726
|
+
"waiting": "Ожидание",
|
|
3727
|
+
"handled": "Ошибка обработана"
|
|
3723
3728
|
},
|
|
3724
3729
|
"triggerSource": {
|
|
3725
3730
|
"manual": "Вручную",
|
|
@@ -4360,7 +4365,8 @@ var zh_CN_default$1 = {
|
|
|
4360
4365
|
"running": "运行中",
|
|
4361
4366
|
"success": "已完成",
|
|
4362
4367
|
"error": "失败",
|
|
4363
|
-
"waiting": "等待处理"
|
|
4368
|
+
"waiting": "等待处理",
|
|
4369
|
+
"handled": "失败已处理"
|
|
4364
4370
|
},
|
|
4365
4371
|
"triggerSource": {
|
|
4366
4372
|
"manual": "手动",
|
|
@@ -5001,7 +5007,8 @@ var zh_TW_default$1 = {
|
|
|
5001
5007
|
"running": "執行中",
|
|
5002
5008
|
"success": "已完成",
|
|
5003
5009
|
"error": "失敗",
|
|
5004
|
-
"waiting": "等待處理"
|
|
5010
|
+
"waiting": "等待處理",
|
|
5011
|
+
"handled": "失敗已處理"
|
|
5005
5012
|
},
|
|
5006
5013
|
"triggerSource": {
|
|
5007
5014
|
"manual": "手動",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { o as __toESM, t as __commonJSMin } from "./rolldown-runtime-CEgmsyvS.js";
|
|
2
|
-
import { $ as ko_default, B as MenuPopup, C as DropdownMenuContent, D as DropdownMenuRadioGroup, E as DropdownMenuLabel, F as findRootOwnerId, G as MenuRootContext, H as MenuGroup, J as waitBranchDescription, K as useMenuRootContext, L as MenuRoot, N as DropdownMenuTrigger, O as DropdownMenuRadioItem, Q as ru_default, R as MenuPositioner, S as DropdownMenuCheckboxItem, T as DropdownMenuItem, U as ContextMenuRootContext, V as MenuItem, W as useContextMenuRootContext, X as zh_TW_default, Z as zh_CN_default, _ as NativeScrollArea, at as Checkbox, d as PopoverContent, et as ja_default, g as PopoverTrigger, h as PopoverTitle, k as DropdownMenuSeparator, l as wrapLayout, nt as en_default, q as uiLocales, rt as I18n, st as IconThemeContext, t as ContentIcon, tt as fr_default, u as Popover, v as ScrollArea, w as DropdownMenuGroup, x as DropdownMenu, z as MenuPortal } from "./ContentIcon-
|
|
2
|
+
import { $ as ko_default, B as MenuPopup, C as DropdownMenuContent, D as DropdownMenuRadioGroup, E as DropdownMenuLabel, F as findRootOwnerId, G as MenuRootContext, H as MenuGroup, J as waitBranchDescription, K as useMenuRootContext, L as MenuRoot, N as DropdownMenuTrigger, O as DropdownMenuRadioItem, Q as ru_default, R as MenuPositioner, S as DropdownMenuCheckboxItem, T as DropdownMenuItem, U as ContextMenuRootContext, V as MenuItem, W as useContextMenuRootContext, X as zh_TW_default, Z as zh_CN_default, _ as NativeScrollArea, at as Checkbox, d as PopoverContent, et as ja_default, g as PopoverTrigger, h as PopoverTitle, k as DropdownMenuSeparator, l as wrapLayout, nt as en_default, q as uiLocales, rt as I18n, st as IconThemeContext, t as ContentIcon, tt as fr_default, u as Popover, v as ScrollArea, w as DropdownMenuGroup, x as DropdownMenu, z as MenuPortal } from "./ContentIcon-CsECY5id.js";
|
|
3
3
|
import { a as derive, c as strictEqual, i as compute, l as val, n as attachSetter, r as combine, s as readonlyVal } from "./dist-bO8nvHFH.js";
|
|
4
4
|
import { c as useLang, i as isString, l as useTranslate, n as isBoolean, o as I18nProvider, r as isPlainObject, t as isArray$1, u as useVal } from "./dist-BFmpkX4P.js";
|
|
5
5
|
import { D as string, E as strictObject, En as ownerDocument, Ln as createChangeEventDetails, On as createLucideIcon, S as number, Ut as addEventListener, Yt as require_with_selector, b as literal, bn as contains, cr as useId$1, ct as pressableTriggerOpenStateMapping, g as discriminatedUnion, gn as stopEvent$1, gr as cn$1, i as TooltipTrigger, mr as Button, n as TooltipContent, r as TooltipProvider, t as Tooltip, tn as useTimeout, tr as triggerPress, vr as clsx, xn as getTarget, yr as useRenderElement, zn as cancelOpen } from "./tooltip-CJjYs_2I.js";
|
|
@@ -18887,22 +18887,22 @@ function NodeContentRows({ children }) {
|
|
|
18887
18887
|
});
|
|
18888
18888
|
}
|
|
18889
18889
|
var RunChips_module_default = {
|
|
18890
|
-
chip: "
|
|
18891
|
-
popup: "
|
|
18892
|
-
statusPopup: "
|
|
18893
|
-
heading: "
|
|
18894
|
-
metadata: "
|
|
18895
|
-
runId: "
|
|
18896
|
-
separator: "
|
|
18897
|
-
record: "
|
|
18898
|
-
log: "
|
|
18899
|
-
preview: "
|
|
18900
|
-
previewAction: "
|
|
18901
|
-
gallery: "
|
|
18902
|
-
row: "
|
|
18903
|
-
links: "
|
|
18904
|
-
status: "
|
|
18905
|
-
"run-spin": "RunChips_run-
|
|
18890
|
+
chip: "RunChips_chip_80ab6",
|
|
18891
|
+
popup: "RunChips_popup_80ab6",
|
|
18892
|
+
statusPopup: "RunChips_statusPopup_80ab6",
|
|
18893
|
+
heading: "RunChips_heading_80ab6",
|
|
18894
|
+
metadata: "RunChips_metadata_80ab6",
|
|
18895
|
+
runId: "RunChips_runId_80ab6",
|
|
18896
|
+
separator: "RunChips_separator_80ab6",
|
|
18897
|
+
record: "RunChips_record_80ab6",
|
|
18898
|
+
log: "RunChips_log_80ab6",
|
|
18899
|
+
preview: "RunChips_preview_80ab6",
|
|
18900
|
+
previewAction: "RunChips_previewAction_80ab6",
|
|
18901
|
+
gallery: "RunChips_gallery_80ab6",
|
|
18902
|
+
row: "RunChips_row_80ab6",
|
|
18903
|
+
links: "RunChips_links_80ab6",
|
|
18904
|
+
status: "RunChips_status_80ab6",
|
|
18905
|
+
"run-spin": "RunChips_run-spin_80ab6"
|
|
18906
18906
|
};
|
|
18907
18907
|
//#endregion
|
|
18908
18908
|
//#region ../../node_modules/.bun/sonner@2.0.7+6dbf9a050bc9aadb/node_modules/sonner/dist/index.mjs
|
|
@@ -19818,7 +19818,7 @@ function RunChips({ run }) {
|
|
|
19818
19818
|
const elapsed = run.startedAt != null && run.finishedAt != null ? Date.parse(run.finishedAt) - Date.parse(run.startedAt) : void 0;
|
|
19819
19819
|
const status = `${t(`canvasCard.status.${run.status}`)}${run.status == "running" && run.progress != null && Number.isFinite(run.progress) ? ` · ${Math.round(Math.min(100, Math.max(0, run.progress)))}%` : ""}${elapsed != null && Number.isFinite(elapsed) && elapsed >= 0 ? ` · ${formatDuration(elapsed)}` : ""}`;
|
|
19820
19820
|
const state = run.status;
|
|
19821
|
-
const icon = state == "running" ? "i-codicon:loading" : state == "success" ? "i-codicon:check" : state == "error" ? "i-codicon:error" : state == "waiting" ? "i-carbon:time" : "i-codicon:circle-outline";
|
|
19821
|
+
const icon = state == "handled" ? "i-lucide-light:triangle-alert" : state == "running" ? "i-codicon:loading" : state == "success" ? "i-codicon:check" : state == "error" ? "i-codicon:error" : state == "waiting" ? "i-carbon:time" : "i-codicon:circle-outline";
|
|
19822
19822
|
return /* @__PURE__ */ jsxs("div", {
|
|
19823
19823
|
className: RunChips_module_default.row,
|
|
19824
19824
|
children: [/* @__PURE__ */ jsx(RecordChip, {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { l as useTranslate } from "./dist-BFmpkX4P.js";
|
|
2
2
|
import { mr as Button } from "./tooltip-CJjYs_2I.js";
|
|
3
|
-
import { a as DialogFooter, d as Field, f as FieldDescription, h as FieldLabel, i as DialogDescription, l as Icon, m as FieldGroup, n as DialogClose, o as DialogHeader, p as FieldError, r as DialogContent, s as DialogTitle, t as Dialog, u as Spinner
|
|
4
|
-
import { t as WorkbenchSelect } from "./workbenchSelect-
|
|
3
|
+
import { Et as Input, a as DialogFooter, d as Field, f as FieldDescription, h as FieldLabel, i as DialogDescription, l as Icon, m as FieldGroup, n as DialogClose, o as DialogHeader, p as FieldError, r as DialogContent, s as DialogTitle, t as Dialog, u as Spinner } from "./dialog-Bjo-r9B0.js";
|
|
4
|
+
import { t as WorkbenchSelect } from "./workbenchSelect-C3hxUcYm.js";
|
|
5
5
|
import { useEffect, useRef, useState } from "react";
|
|
6
6
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
//#region src/workbench/browser/runtime/shell/createResourceDialog.tsx
|
|
@@ -3360,6 +3360,32 @@ function checkJsonDepth(value, depth = 0) {
|
|
|
3360
3360
|
if (value != null && typeof value == "object") for (const child of Object.values(value)) checkJsonDepth(child, depth + 1);
|
|
3361
3361
|
}
|
|
3362
3362
|
//#endregion
|
|
3363
|
+
//#region src/flow/common/retry.ts
|
|
3364
|
+
var retryNodeTypes = [
|
|
3365
|
+
"code",
|
|
3366
|
+
"connector",
|
|
3367
|
+
"openapi",
|
|
3368
|
+
"llm",
|
|
3369
|
+
"decision"
|
|
3370
|
+
];
|
|
3371
|
+
var nodeRetryLimits = {
|
|
3372
|
+
maxRetries: 5,
|
|
3373
|
+
minIntervalMs: 1e3,
|
|
3374
|
+
maxIntervalMs: 6e4,
|
|
3375
|
+
intervalStepMs: 1e3
|
|
3376
|
+
};
|
|
3377
|
+
var defaultNodeRetry = {
|
|
3378
|
+
maxRetries: 2,
|
|
3379
|
+
intervalMs: 2e3
|
|
3380
|
+
};
|
|
3381
|
+
var retryConfigurationSchema = strictObject({
|
|
3382
|
+
maxRetries: number().int().min(0).max(nodeRetryLimits.maxRetries),
|
|
3383
|
+
intervalMs: number().int().min(nodeRetryLimits.minIntervalMs).max(nodeRetryLimits.maxIntervalMs).multipleOf(nodeRetryLimits.intervalStepMs)
|
|
3384
|
+
});
|
|
3385
|
+
function supportsNodeRetry(node) {
|
|
3386
|
+
return node.kind == "task" && retryNodeTypes.some((type) => type == ("moduleId" in node.task ? "code" : node.task.executor.kind));
|
|
3387
|
+
}
|
|
3388
|
+
//#endregion
|
|
3363
3389
|
//#region src/flow/common/triggerScheduleSchema.ts
|
|
3364
3390
|
var triggerScheduleSchema = array(union([object({
|
|
3365
3391
|
type: literal("cron"),
|
|
@@ -3408,6 +3434,7 @@ var nodeSource = object({
|
|
|
3408
3434
|
kind: literal("node"),
|
|
3409
3435
|
nodeId: text,
|
|
3410
3436
|
output: text,
|
|
3437
|
+
system: literal(true).optional(),
|
|
3411
3438
|
field: text.optional()
|
|
3412
3439
|
});
|
|
3413
3440
|
var source = union([nodeSource, object({
|
|
@@ -3668,7 +3695,9 @@ var base = {
|
|
|
3668
3695
|
name: text.optional(),
|
|
3669
3696
|
description: text.optional(),
|
|
3670
3697
|
icon: text.optional(),
|
|
3671
|
-
timeoutMs: number().optional()
|
|
3698
|
+
timeoutMs: number().optional(),
|
|
3699
|
+
retry: retryConfigurationSchema.optional(),
|
|
3700
|
+
onError: _enum(["stop", "error"]).optional()
|
|
3672
3701
|
};
|
|
3673
3702
|
var node = union([
|
|
3674
3703
|
strictObject({
|
|
@@ -3804,7 +3833,8 @@ var revision = object({
|
|
|
3804
3833
|
literal(5),
|
|
3805
3834
|
literal(6),
|
|
3806
3835
|
literal(7),
|
|
3807
|
-
literal(8)
|
|
3836
|
+
literal(8),
|
|
3837
|
+
literal(9)
|
|
3808
3838
|
]),
|
|
3809
3839
|
document,
|
|
3810
3840
|
modules: record$1(text, module)
|
|
@@ -3873,6 +3903,13 @@ var shapes = {
|
|
|
3873
3903
|
},
|
|
3874
3904
|
"graph.node.delete": at,
|
|
3875
3905
|
"graph.node.field.set": union([
|
|
3906
|
+
object({
|
|
3907
|
+
...at,
|
|
3908
|
+
kind: literal("graph.node.field.set"),
|
|
3909
|
+
field: literal("retry"),
|
|
3910
|
+
before: retryConfigurationSchema.optional(),
|
|
3911
|
+
value: retryConfigurationSchema.optional()
|
|
3912
|
+
}),
|
|
3876
3913
|
object({
|
|
3877
3914
|
...at,
|
|
3878
3915
|
kind: literal("graph.node.field.set"),
|
|
@@ -3886,7 +3923,8 @@ var shapes = {
|
|
|
3886
3923
|
field: _enum([
|
|
3887
3924
|
"description",
|
|
3888
3925
|
"icon",
|
|
3889
|
-
"name"
|
|
3926
|
+
"name",
|
|
3927
|
+
"onError"
|
|
3890
3928
|
]),
|
|
3891
3929
|
before: text.optional(),
|
|
3892
3930
|
value: text.optional()
|
|
@@ -3992,6 +4030,12 @@ var variants = new Map(Object.entries(shapes).map(([kind, shape]) => [kind, shap
|
|
|
3992
4030
|
})]));
|
|
3993
4031
|
array(union([...variants.values()])).min(1);
|
|
3994
4032
|
function checkModelVersion(content) {
|
|
4033
|
+
if (content.modelVersion < 9 && Object.values(content.document.graph.nodes).some((candidateNode) => "retry" in candidateNode && candidateNode.retry != null)) throw new TypeError("Node retries require Flow model version 9.");
|
|
4034
|
+
if (content.modelVersion < 9 && Object.values(content.document.graph.nodes).some((candidateNode) => {
|
|
4035
|
+
if (candidateNode.onError != null) return true;
|
|
4036
|
+
if ([...Object.values("inputs" in candidateNode ? candidateNode.inputs : {}), ...Object.values(candidateNode.kind == "outputs" ? candidateNode.outputMappings : {})].some((candidateMapping) => candidateMapping.kind == "sources" && candidateMapping.sources.some((candidateSource) => candidateSource.kind == "node" && candidateSource.system))) return true;
|
|
4037
|
+
return candidateNode.kind == "condition" && candidateNode.cases.some((item) => item.groups.some((candidateGroup) => candidateGroup.expressions.some((expression) => [expression.left, expression.right].some((candidateOperand) => candidateOperand?.kind == "source" && candidateOperand.source.kind == "node" && candidateOperand.source.system))));
|
|
4038
|
+
})) throw new TypeError("Node error handling requires Flow model version 9.");
|
|
3995
4039
|
if (content.modelVersion < 8 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "outputs")) throw new TypeError("Workflow outputs require Flow model version 8.");
|
|
3996
4040
|
if (content.modelVersion < 7 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "start")) throw new TypeError("Start Triggers require Flow model version 7.");
|
|
3997
4041
|
if (content.modelVersion < 6 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && "executor" in candidateNode.task)) throw new TypeError("Node-owned managed Tasks require Flow model version 6.");
|
|
@@ -4195,6 +4239,37 @@ function comparisonIssue(operator, leftType, rightType) {
|
|
|
4195
4239
|
};
|
|
4196
4240
|
}
|
|
4197
4241
|
//#endregion
|
|
4242
|
+
//#region src/flow/common/errorHandling.ts
|
|
4243
|
+
var nodeErrorSchema = {
|
|
4244
|
+
type: "object",
|
|
4245
|
+
additionalProperties: false,
|
|
4246
|
+
required: [
|
|
4247
|
+
"code",
|
|
4248
|
+
"message",
|
|
4249
|
+
"nodeId",
|
|
4250
|
+
"nodeName",
|
|
4251
|
+
"runId",
|
|
4252
|
+
"executionId"
|
|
4253
|
+
],
|
|
4254
|
+
properties: {
|
|
4255
|
+
code: { type: "string" },
|
|
4256
|
+
message: { type: "string" },
|
|
4257
|
+
nodeId: { type: "string" },
|
|
4258
|
+
nodeName: { type: "string" },
|
|
4259
|
+
runId: { type: "string" },
|
|
4260
|
+
executionId: { type: "string" }
|
|
4261
|
+
}
|
|
4262
|
+
};
|
|
4263
|
+
function supportsNodeErrorHandling(node) {
|
|
4264
|
+
return supportsNodeRetry(node);
|
|
4265
|
+
}
|
|
4266
|
+
function nodeSystemOutputPorts(node) {
|
|
4267
|
+
return supportsNodeErrorHandling(node) && node.onError == "error" ? { error: {
|
|
4268
|
+
jsonSchema: nodeErrorSchema,
|
|
4269
|
+
nullable: true
|
|
4270
|
+
} } : {};
|
|
4271
|
+
}
|
|
4272
|
+
//#endregion
|
|
4198
4273
|
//#region src/flow/common/change.ts
|
|
4199
4274
|
var schemaKeywords = /* @__PURE__ */ new Set([
|
|
4200
4275
|
"const",
|
|
@@ -4362,10 +4437,10 @@ function upgradeRevisionContent(content) {
|
|
|
4362
4437
|
function upgradeDecodedRevisionContent(content) {
|
|
4363
4438
|
const graph = content.document.graph;
|
|
4364
4439
|
const hasManual = Object.values(graph.nodes).some((node) => node.kind == "manual");
|
|
4365
|
-
if (!hasManual && content.modelVersion ==
|
|
4440
|
+
if (!hasManual && content.modelVersion == 9) return content;
|
|
4366
4441
|
return {
|
|
4367
4442
|
...content,
|
|
4368
|
-
modelVersion:
|
|
4443
|
+
modelVersion: 9,
|
|
4369
4444
|
document: {
|
|
4370
4445
|
...content.document,
|
|
4371
4446
|
graph: hasManual ? {
|
|
@@ -4412,7 +4487,7 @@ function invalid(message) {
|
|
|
4412
4487
|
throw new FlowChangeError(message);
|
|
4413
4488
|
}
|
|
4414
4489
|
function applyFlowChanges(content, operations) {
|
|
4415
|
-
const source = content.modelVersion !=
|
|
4490
|
+
const source = content.modelVersion != 9 || Object.values(content.document.graph.nodes).some((node) => node.kind == "manual") ? decodeRevisionContent(content) : content;
|
|
4416
4491
|
const document = { ...source.document };
|
|
4417
4492
|
const modules = { ...source.modules };
|
|
4418
4493
|
for (const operation of operations) switch (operation.kind) {
|
|
@@ -4584,6 +4659,8 @@ function applyFlowChanges(content, operations) {
|
|
|
4584
4659
|
const graph = document.graph;
|
|
4585
4660
|
const node = graph.nodes[operation.nodeId];
|
|
4586
4661
|
if (node == null) invalid("The Node does not exist in the target graph.");
|
|
4662
|
+
if (operation.field == "onError" && operation.value != null && (!supportsNodeErrorHandling(node) || !["stop", "error"].includes(String(operation.value)))) invalid("This node does not support this error handling setting.");
|
|
4663
|
+
if (operation.field == "retry" && operation.value != null && !supportsNodeRetry(node)) invalid("This node does not support retries.");
|
|
4587
4664
|
if (operation.field == "connectionId" && node.kind != "poll" && node.kind != "integration") invalid("Only provider Triggers select a node Connection.");
|
|
4588
4665
|
if (!dequal(Reflect.get(node, operation.field), operation.before)) invalid("The Node field changed before this operation was applied.");
|
|
4589
4666
|
const updated = { ...node };
|
|
@@ -4855,7 +4932,7 @@ function applyFlowChanges(content, operations) {
|
|
|
4855
4932
|
assertOpenApiAuthBindings(document);
|
|
4856
4933
|
return upgradeDecodedRevisionContent({
|
|
4857
4934
|
document,
|
|
4858
|
-
modelVersion:
|
|
4935
|
+
modelVersion: 9,
|
|
4859
4936
|
modules
|
|
4860
4937
|
});
|
|
4861
4938
|
}
|
|
@@ -8782,4 +8859,4 @@ function DialogDescription({ className, ...props }) {
|
|
|
8782
8859
|
});
|
|
8783
8860
|
}
|
|
8784
8861
|
//#endregion
|
|
8785
|
-
export {
|
|
8862
|
+
export { decisionLimits as $, upgradeRevisionContent as A, operatorsForType as B, isTriggerNode as C, removeItem as Ct, portsByHandle as D, useLabelableId as Dt, normalizeNodeName as E, Input as Et, comparisonIssue as F, decodeRevisionContent as G, unaryOperator as H, conditionInputPorts as I, defaultNodeRetry as J, webhookMethods as K, mapConditionSources as L, nodeSystemOutputPorts as M, supportsNodeErrorHandling as N, resourceNameIssue as O, ChevronDown as Ot, clearConditionBindings as P, checkJsonDepth as Q, nodeInputMappings as R, isSchemaKeyword as S, findItemIndex as St, nodeNameIssue as T, Label as Tt, valueType as U, otherwiseOutput as V, authoringDefinitionSchemas as W, retryConfigurationSchema as X, nodeRetryLimits as Y, supportsNodeRetry as Z, matchesSchema as _, isGroupedItems as _t, DialogFooter as a, format as at, FlowChangeError as b, compareItemEquality as bt, DialogTrigger as c, SelectChevron as ct, Field as d, SelectItem as dt, decisionModel as et, FieldDescription as f, SelectSeparator as ft, comparePorts as g, hasNullItemLabel as gt, FieldLabel as h, resolveAriaLabelledBy as ht, DialogDescription as i, limitDecisionQuestions as it, nodeErrorSchema as j, upgradeManualTrigger as k, Icon as l, SelectContent as lt, FieldGroup as m, SelectValue as mt, DialogClose as n, decisionTask as nt, DialogHeader as o, dequal as ot, FieldError as p, SelectTrigger as pt, webhookSupportsBody as q, DialogContent as r, defaultDecisionQuestion as rt, DialogTitle as s, Select as st, Dialog as t, decisionQuestionIssues as tt, Spinner as u, SelectGroup as ut, schemaObject as v, stringifyAsLabel as vt, nextNodeName as w, selectedValueIncludes as wt, applyFlowChanges as x, defaultItemEquality as xt, variableInputCompatible as y, stringifyAsValue as yt, operandHandle as z };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { ControlClient, EventSource } from '../common/control-api.js';
|
|
1
|
+
import type { ControlClient, CreateEventSource, EventSource } from '../common/control-api.js';
|
|
2
2
|
import type { UiLanguage } from '../common/localization.js';
|
|
3
3
|
import type { WorkbenchNotification } from './workbench-contract.js';
|
|
4
|
+
type EventSourceKind = NonNullable<CreateEventSource['kind']>;
|
|
4
5
|
interface Props {
|
|
5
6
|
/** Host notification channel for operation failures; use the same handler as WorkbenchHost.notify. */
|
|
6
7
|
readonly notify: (notification: WorkbenchNotification) => void;
|
|
@@ -13,7 +14,8 @@ interface Props {
|
|
|
13
14
|
}[];
|
|
14
15
|
}
|
|
15
16
|
export declare function EventSourcesPage(props: Props): import("react").JSX.Element;
|
|
16
|
-
export declare function SourceForm({ source, existingNames, fixedTeamId, onPendingChange, client, teams, onSaved, onCancel, notify, }: Omit<Props, 'language'> & {
|
|
17
|
+
export declare function SourceForm({ source, sourceKind, existingNames, fixedTeamId, onPendingChange, client, teams, onSaved, onCancel, notify, }: Omit<Props, 'language'> & {
|
|
18
|
+
readonly sourceKind?: EventSourceKind;
|
|
17
19
|
readonly source?: EventSource;
|
|
18
20
|
readonly existingNames?: readonly string[];
|
|
19
21
|
readonly onPendingChange?: (pending: boolean) => void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as IconImageCrossOriginContext, o as IconifyProvider } from "./ContentIcon-
|
|
2
|
-
import { t as FlowCanvas, y as CanvasStore } from "./FlowCanvas-
|
|
1
|
+
import { n as IconImageCrossOriginContext, o as IconifyProvider } from "./ContentIcon-CsECY5id.js";
|
|
2
|
+
import { t as FlowCanvas, y as CanvasStore } from "./FlowCanvas-C5X22xQ7.js";
|
|
3
3
|
import { createElement } from "react";
|
|
4
4
|
import { createRoot } from "react-dom/client";
|
|
5
5
|
//#region ../../node_modules/.bun/html-to-image@1.11.11/node_modules/html-to-image/es/util.js
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DecisionQuestion } from '../common/decision.js';
|
|
2
|
-
import type { ChangeOperation, CodeModule, ConnectorCapability, Group, GraphNode, InputMapping, InputValues, InputPort, JsonValue, Port, PortDefinition, RevisionContent, TaskDefinition, TriggerKeySnapshot, TriggerNode, TriggerSchedule, WebhookOptions } from './flow-change.js';
|
|
2
|
+
import type { ChangeOperation, CodeModule, ConnectorCapability, Group, GraphNode, InputMapping, InputValues, InputPort, JsonValue, Port, PortDefinition, RetryConfiguration, RevisionContent, TaskDefinition, TriggerKeySnapshot, TriggerNode, TriggerSchedule, WebhookOptions } from './flow-change.js';
|
|
3
3
|
export declare const defaultCodeTaskPorts: Pick<Extract<TaskDefinition, {
|
|
4
4
|
readonly moduleId: string;
|
|
5
5
|
}>, 'inputs' | 'outputs' | 'capabilities'>;
|
|
@@ -7,6 +7,8 @@ export interface Settings {
|
|
|
7
7
|
readonly name?: string;
|
|
8
8
|
readonly maxExecutions?: number;
|
|
9
9
|
readonly timeoutMs?: number;
|
|
10
|
+
readonly onError?: 'stop' | 'error';
|
|
11
|
+
readonly retry?: RetryConfiguration;
|
|
10
12
|
}
|
|
11
13
|
export interface LlmTaskOptions {
|
|
12
14
|
readonly inputs?: Readonly<Partial<Record<LlmInputHandle, JsonValue>>>;
|
|
@@ -5827,6 +5827,28 @@ function checkJsonDepth(value, depth = 0) {
|
|
|
5827
5827
|
if (value != null && typeof value == "object") for (const child of Object.values(value)) checkJsonDepth(child, depth + 1);
|
|
5828
5828
|
}
|
|
5829
5829
|
//#endregion
|
|
5830
|
+
//#region src/flow/common/retry.ts
|
|
5831
|
+
var retryNodeTypes = [
|
|
5832
|
+
"code",
|
|
5833
|
+
"connector",
|
|
5834
|
+
"openapi",
|
|
5835
|
+
"llm",
|
|
5836
|
+
"decision"
|
|
5837
|
+
];
|
|
5838
|
+
var nodeRetryLimits = {
|
|
5839
|
+
maxRetries: 5,
|
|
5840
|
+
minIntervalMs: 1e3,
|
|
5841
|
+
maxIntervalMs: 6e4,
|
|
5842
|
+
intervalStepMs: 1e3
|
|
5843
|
+
};
|
|
5844
|
+
var retryConfigurationSchema = strictObject({
|
|
5845
|
+
maxRetries: number().int().min(0).max(nodeRetryLimits.maxRetries),
|
|
5846
|
+
intervalMs: number().int().min(nodeRetryLimits.minIntervalMs).max(nodeRetryLimits.maxIntervalMs).multipleOf(nodeRetryLimits.intervalStepMs)
|
|
5847
|
+
});
|
|
5848
|
+
function supportsNodeRetry(node) {
|
|
5849
|
+
return node.kind == "task" && retryNodeTypes.some((type) => type == ("moduleId" in node.task ? "code" : node.task.executor.kind));
|
|
5850
|
+
}
|
|
5851
|
+
//#endregion
|
|
5830
5852
|
//#region src/flow/common/triggerScheduleSchema.ts
|
|
5831
5853
|
var triggerScheduleSchema = array(union([object({
|
|
5832
5854
|
type: literal("cron"),
|
|
@@ -5872,6 +5894,7 @@ var source = union([object({
|
|
|
5872
5894
|
kind: literal("node"),
|
|
5873
5895
|
nodeId: text,
|
|
5874
5896
|
output: text,
|
|
5897
|
+
system: literal(true).optional(),
|
|
5875
5898
|
field: text.optional()
|
|
5876
5899
|
}), object({
|
|
5877
5900
|
kind: literal("binding"),
|
|
@@ -6130,7 +6153,9 @@ var base = {
|
|
|
6130
6153
|
name: text.optional(),
|
|
6131
6154
|
description: text.optional(),
|
|
6132
6155
|
icon: text.optional(),
|
|
6133
|
-
timeoutMs: number().optional()
|
|
6156
|
+
timeoutMs: number().optional(),
|
|
6157
|
+
retry: retryConfigurationSchema.optional(),
|
|
6158
|
+
onError: _enum(["stop", "error"]).optional()
|
|
6134
6159
|
};
|
|
6135
6160
|
var node = union([
|
|
6136
6161
|
strictObject({
|
|
@@ -6251,7 +6276,8 @@ var revision = object({
|
|
|
6251
6276
|
literal(5),
|
|
6252
6277
|
literal(6),
|
|
6253
6278
|
literal(7),
|
|
6254
|
-
literal(8)
|
|
6279
|
+
literal(8),
|
|
6280
|
+
literal(9)
|
|
6255
6281
|
]),
|
|
6256
6282
|
document,
|
|
6257
6283
|
modules: record$1(text, module)
|
|
@@ -6320,6 +6346,13 @@ var shapes = {
|
|
|
6320
6346
|
},
|
|
6321
6347
|
"graph.node.delete": at,
|
|
6322
6348
|
"graph.node.field.set": union([
|
|
6349
|
+
object({
|
|
6350
|
+
...at,
|
|
6351
|
+
kind: literal("graph.node.field.set"),
|
|
6352
|
+
field: literal("retry"),
|
|
6353
|
+
before: retryConfigurationSchema.optional(),
|
|
6354
|
+
value: retryConfigurationSchema.optional()
|
|
6355
|
+
}),
|
|
6323
6356
|
object({
|
|
6324
6357
|
...at,
|
|
6325
6358
|
kind: literal("graph.node.field.set"),
|
|
@@ -6333,7 +6366,8 @@ var shapes = {
|
|
|
6333
6366
|
field: _enum([
|
|
6334
6367
|
"description",
|
|
6335
6368
|
"icon",
|
|
6336
|
-
"name"
|
|
6369
|
+
"name",
|
|
6370
|
+
"onError"
|
|
6337
6371
|
]),
|
|
6338
6372
|
before: text.optional(),
|
|
6339
6373
|
value: text.optional()
|
|
@@ -6438,6 +6472,12 @@ array(union([...new Map(Object.entries(shapes).map(([kind, shape]) => [kind, sha
|
|
|
6438
6472
|
...shape
|
|
6439
6473
|
})])).values()])).min(1);
|
|
6440
6474
|
function checkModelVersion(content) {
|
|
6475
|
+
if (content.modelVersion < 9 && Object.values(content.document.graph.nodes).some((candidateNode) => "retry" in candidateNode && candidateNode.retry != null)) throw new TypeError("Node retries require Flow model version 9.");
|
|
6476
|
+
if (content.modelVersion < 9 && Object.values(content.document.graph.nodes).some((candidateNode) => {
|
|
6477
|
+
if (candidateNode.onError != null) return true;
|
|
6478
|
+
if ([...Object.values("inputs" in candidateNode ? candidateNode.inputs : {}), ...Object.values(candidateNode.kind == "outputs" ? candidateNode.outputMappings : {})].some((candidateMapping) => candidateMapping.kind == "sources" && candidateMapping.sources.some((candidateSource) => candidateSource.kind == "node" && candidateSource.system))) return true;
|
|
6479
|
+
return candidateNode.kind == "condition" && candidateNode.cases.some((item) => item.groups.some((candidateGroup) => candidateGroup.expressions.some((expression) => [expression.left, expression.right].some((candidateOperand) => candidateOperand?.kind == "source" && candidateOperand.source.kind == "node" && candidateOperand.source.system))));
|
|
6480
|
+
})) throw new TypeError("Node error handling requires Flow model version 9.");
|
|
6441
6481
|
if (content.modelVersion < 8 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "outputs")) throw new TypeError("Workflow outputs require Flow model version 8.");
|
|
6442
6482
|
if (content.modelVersion < 7 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "start")) throw new TypeError("Start Triggers require Flow model version 7.");
|
|
6443
6483
|
if (content.modelVersion < 6 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && "executor" in candidateNode.task)) throw new TypeError("Node-owned managed Tasks require Flow model version 6.");
|
|
@@ -6500,6 +6540,11 @@ function setConditionInput(node, handle, mapping) {
|
|
|
6500
6540
|
};
|
|
6501
6541
|
}
|
|
6502
6542
|
//#endregion
|
|
6543
|
+
//#region src/flow/common/errorHandling.ts
|
|
6544
|
+
function supportsNodeErrorHandling(node) {
|
|
6545
|
+
return supportsNodeRetry(node);
|
|
6546
|
+
}
|
|
6547
|
+
//#endregion
|
|
6503
6548
|
//#region src/flow/common/change.ts
|
|
6504
6549
|
function decodeConnectorCapabilities(value) {
|
|
6505
6550
|
if (!Array.isArray(value)) throw new TypeError("Connector capabilities must be an array.");
|
|
@@ -6628,10 +6673,10 @@ function isTriggerNode(node) {
|
|
|
6628
6673
|
function upgradeDecodedRevisionContent(content) {
|
|
6629
6674
|
const graph = content.document.graph;
|
|
6630
6675
|
const hasManual = Object.values(graph.nodes).some((node) => node.kind == "manual");
|
|
6631
|
-
if (!hasManual && content.modelVersion ==
|
|
6676
|
+
if (!hasManual && content.modelVersion == 9) return content;
|
|
6632
6677
|
return {
|
|
6633
6678
|
...content,
|
|
6634
|
-
modelVersion:
|
|
6679
|
+
modelVersion: 9,
|
|
6635
6680
|
document: {
|
|
6636
6681
|
...content.document,
|
|
6637
6682
|
graph: hasManual ? {
|
|
@@ -6666,7 +6711,7 @@ function invalid(message) {
|
|
|
6666
6711
|
throw new FlowChangeError(message);
|
|
6667
6712
|
}
|
|
6668
6713
|
function applyFlowChanges(content, operations) {
|
|
6669
|
-
const source = content.modelVersion !=
|
|
6714
|
+
const source = content.modelVersion != 9 || Object.values(content.document.graph.nodes).some((node) => node.kind == "manual") ? decodeRevisionContent(content) : content;
|
|
6670
6715
|
const document = { ...source.document };
|
|
6671
6716
|
const modules = { ...source.modules };
|
|
6672
6717
|
for (const operation of operations) switch (operation.kind) {
|
|
@@ -6838,6 +6883,8 @@ function applyFlowChanges(content, operations) {
|
|
|
6838
6883
|
const graph = document.graph;
|
|
6839
6884
|
const node = graph.nodes[operation.nodeId];
|
|
6840
6885
|
if (node == null) invalid("The Node does not exist in the target graph.");
|
|
6886
|
+
if (operation.field == "onError" && operation.value != null && (!supportsNodeErrorHandling(node) || !["stop", "error"].includes(String(operation.value)))) invalid("This node does not support this error handling setting.");
|
|
6887
|
+
if (operation.field == "retry" && operation.value != null && !supportsNodeRetry(node)) invalid("This node does not support retries.");
|
|
6841
6888
|
if (operation.field == "connectionId" && node.kind != "poll" && node.kind != "integration") invalid("Only provider Triggers select a node Connection.");
|
|
6842
6889
|
if (!dequal(Reflect.get(node, operation.field), operation.before)) invalid("The Node field changed before this operation was applied.");
|
|
6843
6890
|
const updated = { ...node };
|
|
@@ -7109,7 +7156,7 @@ function applyFlowChanges(content, operations) {
|
|
|
7109
7156
|
assertOpenApiAuthBindings(document);
|
|
7110
7157
|
return upgradeDecodedRevisionContent({
|
|
7111
7158
|
document,
|
|
7112
|
-
modelVersion:
|
|
7159
|
+
modelVersion: 9,
|
|
7113
7160
|
modules
|
|
7114
7161
|
});
|
|
7115
7162
|
}
|
|
@@ -10254,6 +10301,20 @@ function updateSettings(content, nodeId, settings) {
|
|
|
10254
10301
|
nodeId,
|
|
10255
10302
|
value: settings.timeoutMs
|
|
10256
10303
|
});
|
|
10304
|
+
if (Object.hasOwn(settings, "onError") && node.onError != settings.onError) operations.push({
|
|
10305
|
+
before: node.onError,
|
|
10306
|
+
field: "onError",
|
|
10307
|
+
kind: "graph.node.field.set",
|
|
10308
|
+
nodeId,
|
|
10309
|
+
value: settings.onError
|
|
10310
|
+
});
|
|
10311
|
+
if (Object.hasOwn(settings, "retry") && !dequal(node.retry, settings.retry)) operations.push({
|
|
10312
|
+
before: node.retry,
|
|
10313
|
+
field: "retry",
|
|
10314
|
+
kind: "graph.node.field.set",
|
|
10315
|
+
nodeId,
|
|
10316
|
+
value: settings.retry
|
|
10317
|
+
});
|
|
10257
10318
|
return operations;
|
|
10258
10319
|
}
|
|
10259
10320
|
function setInputValues(content, nodeId, values) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ChangeOperation, FlowDocument, JsonValue, RevisionContent } from './flow-change.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
export declare const currentFlowModelVersion =
|
|
3
|
+
export declare const currentFlowModelVersion = 9;
|
|
4
4
|
/** Configuration schemas shared by the node authoring boundary. */
|
|
5
5
|
export declare const authoringDefinitionSchemas: {
|
|
6
6
|
input: z.ZodObject<{
|
|
@@ -57,6 +57,7 @@ export declare const authoringDefinitionSchemas: {
|
|
|
57
57
|
kind: z.ZodLiteral<"node">;
|
|
58
58
|
nodeId: z.ZodString;
|
|
59
59
|
output: z.ZodString;
|
|
60
|
+
system: z.ZodOptional<z.ZodLiteral<true>>;
|
|
60
61
|
field: z.ZodOptional<z.ZodString>;
|
|
61
62
|
}, z.core.$strip>, z.ZodObject<{
|
|
62
63
|
kind: z.ZodLiteral<"binding">;
|
|
@@ -95,6 +96,7 @@ export declare const authoringDefinitionSchemas: {
|
|
|
95
96
|
kind: z.ZodLiteral<"node">;
|
|
96
97
|
nodeId: z.ZodString;
|
|
97
98
|
output: z.ZodString;
|
|
99
|
+
system: z.ZodOptional<z.ZodLiteral<true>>;
|
|
98
100
|
field: z.ZodOptional<z.ZodString>;
|
|
99
101
|
}, z.core.$strip>, z.ZodObject<{
|
|
100
102
|
kind: z.ZodLiteral<"binding">;
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import type { JsonValue, Port, PortDefinition } from '../index.js';
|
|
2
2
|
export { fixedInputValue, inputValue, inputValues } from './flow-input-value.js';
|
|
3
|
+
import type { RetryConfiguration } from '../common/flow-retry.js';
|
|
3
4
|
import type { WebhookMethod } from './webhook-method.js';
|
|
4
5
|
import { currentFlowModelVersion } from './flow-change-schema.js';
|
|
5
6
|
export { changeOperationsSchema, currentFlowModelVersion, decodeChangeOperations } from './flow-change-schema.js';
|
|
7
|
+
export type { RetryConfiguration } from '../common/flow-retry.js';
|
|
8
|
+
export { supportsNodeRetry } from '../common/flow-retry.js';
|
|
9
|
+
export { nodeSystemOutputPorts, supportsNodeErrorHandling, nodeErrorSchema } from '../common/flow-errorHandling.js';
|
|
10
|
+
export type { NodeErrorData } from '../common/flow-errorHandling.js';
|
|
6
11
|
export type { WebhookMethod };
|
|
7
12
|
export type { JsonValue, Port, PortDefinition } from '../index.js';
|
|
8
13
|
export type SchemaKeyword = 'const' | 'enum' | 'exclusiveMaximum' | 'exclusiveMinimum' | 'maximum' | 'maxItems' | 'maxLength' | 'maxProperties' | 'minimum' | 'minItems' | 'minLength' | 'minProperties' | 'multipleOf' | 'pattern' | 'required' | 'type';
|
|
@@ -35,6 +40,7 @@ export interface Group {
|
|
|
35
40
|
}
|
|
36
41
|
export declare function portsByHandle<Value extends Port>(ports: readonly (Value | Group)[]): Readonly<Record<string, Value>>;
|
|
37
42
|
export interface NodeSource {
|
|
43
|
+
readonly system?: true;
|
|
38
44
|
readonly field?: string;
|
|
39
45
|
readonly kind: 'node';
|
|
40
46
|
readonly nodeId: string;
|
|
@@ -62,6 +68,8 @@ interface GraphNodeBase {
|
|
|
62
68
|
readonly name?: string;
|
|
63
69
|
readonly maxExecutions?: number;
|
|
64
70
|
readonly timeoutMs?: number;
|
|
71
|
+
readonly retry?: RetryConfiguration;
|
|
72
|
+
readonly onError?: 'stop' | 'error';
|
|
65
73
|
}
|
|
66
74
|
export interface ValueNode extends GraphNodeBase {
|
|
67
75
|
readonly kind: 'value';
|
|
@@ -251,6 +259,7 @@ export interface WebhookOptions {
|
|
|
251
259
|
readonly responseStatusCode?: number;
|
|
252
260
|
}
|
|
253
261
|
interface TriggerNodeBase {
|
|
262
|
+
readonly onError?: never;
|
|
254
263
|
readonly description?: string;
|
|
255
264
|
readonly icon?: string;
|
|
256
265
|
readonly name: string;
|
|
@@ -308,7 +317,7 @@ export interface CodeModule {
|
|
|
308
317
|
}
|
|
309
318
|
export interface RevisionContent {
|
|
310
319
|
readonly document: FlowDocument;
|
|
311
|
-
readonly modelVersion: 2 | 4 | 5 | 6 | 7 | typeof currentFlowModelVersion;
|
|
320
|
+
readonly modelVersion: 2 | 4 | 5 | 6 | 7 | 8 | typeof currentFlowModelVersion;
|
|
312
321
|
readonly modules: Readonly<Record<string, CodeModule>>;
|
|
313
322
|
}
|
|
314
323
|
export interface GraphEdge {
|
|
@@ -374,10 +383,16 @@ export type ChangeOperation = {
|
|
|
374
383
|
readonly nodeId: string;
|
|
375
384
|
} | {
|
|
376
385
|
readonly before?: number | string;
|
|
377
|
-
readonly field: 'connectionId' | 'description' | 'icon' | 'maxExecutions' | 'name' | 'timeoutMs';
|
|
386
|
+
readonly field: 'connectionId' | 'description' | 'icon' | 'maxExecutions' | 'name' | 'timeoutMs' | 'onError';
|
|
378
387
|
readonly kind: 'graph.node.field.set';
|
|
379
388
|
readonly nodeId: string;
|
|
380
389
|
readonly value?: number | string;
|
|
390
|
+
} | {
|
|
391
|
+
readonly before?: RetryConfiguration;
|
|
392
|
+
readonly field: 'retry';
|
|
393
|
+
readonly kind: 'graph.node.field.set';
|
|
394
|
+
readonly nodeId: string;
|
|
395
|
+
readonly value?: RetryConfiguration;
|
|
381
396
|
} | {
|
|
382
397
|
readonly before?: InputMapping;
|
|
383
398
|
readonly handle: string;
|