@oomol-lab/open-flow 0.1.0-beta.90 → 0.1.0-beta.91
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/{FlowCanvas-C4iuvVKB.js → FlowCanvas-CZEphIhX.js} +169 -2324
- package/dist/browser/{createResourceDialog-BstGO0m4.js → createResourceDialog-CJbZa2gA.js} +2 -2
- package/dist/browser/{dialog-Bi-MVTGj.js → dialog-E1WkapJU.js} +10 -2
- package/dist/browser/{exportPng-DMsB9ku_.js → exportPng-c4or5th8.js} +2 -2
- package/dist/browser/{flowChanges-SKYJBr6X.js → flowChanges-DsLZdENA.js} +20 -37
- package/dist/browser/{flowWorkspace-4UHRaHcz.js → flowWorkspace-CxLQWUdj.js} +54 -19
- package/dist/browser/{markdownContent-B75ojl0E.js → markdownContent-BsdTdwBU.js} +1 -1
- package/dist/browser/preview.js +231 -68
- package/dist/browser/workbench.js +6 -6
- package/dist/browser/{workbenchSelect-CHOeceKA.js → workbenchSelect-BfQfMWuY.js} +1 -1
- package/dist/browser/{wrapLayout-DU5HG1qH.js → wrapLayout-ZOG4AikN.js} +2493 -200
- package/dist/command/index.js +58 -55
- package/dist/common/control-api-conformance.js +896 -8
- package/dist/common/control-api.js +896 -8
- package/dist/common/control-requests.js +17 -6
- package/dist/common/decision.js +10 -2
- package/dist/common/flow-authoring.js +896 -8
- package/dist/common/flow-change.js +896 -8
- package/dist/common/flow-encoding.js +896 -8
- package/dist/common/flow-semantics.js +10 -2
- package/dist/common/integration-trigger.js +10 -2
- package/dist/common/licenses.md +2 -0
- package/dist/common/mcp.js +896 -8
- package/dist/common/openapi.js +10 -2
- package/dist/common/poll-trigger.js +10 -2
- package/dist/common/provider-triggers.js +1 -1
- package/dist/common/scheduler.js +10 -2
- package/dist/common/webhook-trigger.js +890 -2
- package/dist/common/workflow.js +14 -3
- package/dist/render/browser/runtime.js +966 -59
- package/dist/render/node/index.js +792 -4
- package/package.json +1 -1
- package/src/control/common/authoringTools.ts +4 -2
- package/src/flow/common/schemaComparer.ts +12 -2
- package/src/json-schema-subset/checker/equals.ts +3 -0
- package/src/trigger/providers/catalog.generated.json +9 -1
- package/src/workflow/common/workflow.ts +4 -3
package/dist/browser/preview.js
CHANGED
|
@@ -7002,9 +7002,24 @@ function hasRouteCrossings(routes) {
|
|
|
7002
7002
|
//#region src/canvas/browser/base/routeLayout.ts
|
|
7003
7003
|
var clearance = 16;
|
|
7004
7004
|
var portOffset = 24;
|
|
7005
|
+
function componentIndex(sets) {
|
|
7006
|
+
return new Map(sets.flatMap((ids, index) => ids.map((id) => [id, index])));
|
|
7007
|
+
}
|
|
7005
7008
|
/** Orthogonal channels around the measured cards, in primary/cross coordinates. */
|
|
7006
|
-
function routeLayout(nodes, edges) {
|
|
7009
|
+
function routeLayout(nodes, edges, options = {}) {
|
|
7007
7010
|
const byId = new Map(nodes.map((node) => [node.id, node]));
|
|
7011
|
+
const graph = new ie.Graph();
|
|
7012
|
+
for (const node of nodes) graph.setNode(node.id);
|
|
7013
|
+
for (const edge of edges) graph.setEdge(edge.source, edge.target);
|
|
7014
|
+
const components = componentIndex(ie.alg.components(graph));
|
|
7015
|
+
const cycles = componentIndex(ie.alg.tarjan(graph));
|
|
7016
|
+
const obstacles = nodes.map((node) => ({
|
|
7017
|
+
component: components.get(node.id),
|
|
7018
|
+
left: node.x - clearance,
|
|
7019
|
+
right: node.x + node.width + clearance,
|
|
7020
|
+
top: node.y - clearance,
|
|
7021
|
+
bottom: node.y + node.height + clearance
|
|
7022
|
+
}));
|
|
7008
7023
|
const connections = edges.map((edge) => {
|
|
7009
7024
|
const source = byId.get(edge.source);
|
|
7010
7025
|
const target = byId.get(edge.target);
|
|
@@ -7017,11 +7032,15 @@ function routeLayout(nodes, edges) {
|
|
|
7017
7032
|
y: target.y + (edge.targetOffset?.y ?? target.height / 2)
|
|
7018
7033
|
};
|
|
7019
7034
|
const offset = output.x < input.x ? Math.min(portOffset, (input.x - output.x) / 2) : portOffset;
|
|
7035
|
+
const feedback = input.x <= output.x && cycles.get(edge.source) === cycles.get(edge.target);
|
|
7020
7036
|
return {
|
|
7021
7037
|
id: edge.id,
|
|
7038
|
+
component: components.get(edge.source),
|
|
7022
7039
|
source: output,
|
|
7023
7040
|
target: input,
|
|
7024
7041
|
returnSide: input.x <= output.x ? Math.sign(input.y - output.y) : 0,
|
|
7042
|
+
feedback,
|
|
7043
|
+
returnLane: void 0,
|
|
7025
7044
|
start: {
|
|
7026
7045
|
x: output.x + offset,
|
|
7027
7046
|
y: output.y
|
|
@@ -7032,12 +7051,23 @@ function routeLayout(nodes, edges) {
|
|
|
7032
7051
|
}
|
|
7033
7052
|
};
|
|
7034
7053
|
});
|
|
7035
|
-
const
|
|
7036
|
-
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
|
|
7040
|
-
|
|
7054
|
+
const feedback = connections.filter((edge) => edge.feedback).toSorted((a, b) => a.source.x - a.target.x - (b.source.x - b.target.x));
|
|
7055
|
+
for (const [index, edge] of feedback.entries()) {
|
|
7056
|
+
const side = edge.source.y <= edge.target.y ? -1 : 1;
|
|
7057
|
+
const span = obstacles.filter((rect) => rect.component === edge.component && rect.right >= edge.end.x && rect.left <= edge.start.x);
|
|
7058
|
+
let lane = side < 0 ? Math.min(...span.map((rect) => rect.top)) : Math.max(...span.map((rect) => rect.bottom));
|
|
7059
|
+
let previousLane;
|
|
7060
|
+
do {
|
|
7061
|
+
previousLane = lane;
|
|
7062
|
+
for (const rect of obstacles) if (rect.right >= edge.end.x && rect.left <= edge.start.x && lane > rect.top && lane < rect.bottom) lane = side < 0 ? rect.top : rect.bottom;
|
|
7063
|
+
for (const other of feedback.slice(0, index)) {
|
|
7064
|
+
if (other.component !== edge.component || other.start.x < edge.end.x || other.end.x > edge.start.x) continue;
|
|
7065
|
+
if (side < 0 && other.returnLane <= lane) lane = other.returnLane - clearance;
|
|
7066
|
+
if (side > 0 && other.returnLane >= lane) lane = other.returnLane + clearance;
|
|
7067
|
+
}
|
|
7068
|
+
} while (lane !== previousLane);
|
|
7069
|
+
edge.returnLane = lane;
|
|
7070
|
+
}
|
|
7041
7071
|
const routes = /* @__PURE__ */ new Map();
|
|
7042
7072
|
const pending = connections.filter((edge) => {
|
|
7043
7073
|
if (edge.start.x > edge.end.x) return true;
|
|
@@ -7069,7 +7099,11 @@ function routeLayout(nodes, edges) {
|
|
|
7069
7099
|
});
|
|
7070
7100
|
if (!pending.length) return routes;
|
|
7071
7101
|
const xs = [.../* @__PURE__ */ new Set([...obstacles.flatMap((rect) => [rect.left, rect.right]), ...pending.flatMap((edge) => [edge.start.x, edge.end.x])])].toSorted((a, b) => a - b);
|
|
7072
|
-
const ys = [.../* @__PURE__ */ new Set([...obstacles.flatMap((rect) => [rect.top, rect.bottom]), ...pending.flatMap((edge) => [edge.start.y, edge.end.y]
|
|
7102
|
+
const ys = [.../* @__PURE__ */ new Set([...obstacles.flatMap((rect) => [rect.top, rect.bottom]), ...pending.flatMap((edge) => edge.returnLane == null ? [edge.start.y, edge.end.y] : [
|
|
7103
|
+
edge.start.y,
|
|
7104
|
+
edge.end.y,
|
|
7105
|
+
edge.returnLane
|
|
7106
|
+
])])].toSorted((a, b) => a - b);
|
|
7073
7107
|
const xIndex = new Map(xs.map((value, index) => [value, index]));
|
|
7074
7108
|
const yIndex = new Map(ys.map((value, index) => [value, index]));
|
|
7075
7109
|
const columns = xs.length;
|
|
@@ -7119,7 +7153,9 @@ function routeLayout(nodes, edges) {
|
|
|
7119
7153
|
];
|
|
7120
7154
|
for (const [index, next] of moves.entries()) {
|
|
7121
7155
|
if (next < 0 || vertex === start && index === 0 || next === end && index === 0) continue;
|
|
7122
|
-
if (edge.
|
|
7156
|
+
if (edge.returnLane != null) {
|
|
7157
|
+
if (index === 0 && ys[y] !== edge.returnLane) continue;
|
|
7158
|
+
} else if (edge.returnSide * (ys[Math.floor(next / columns)] - edge.start.y) < -1e-6) continue;
|
|
7123
7159
|
const axis = index < 2 ? 0 : 1;
|
|
7124
7160
|
const state = next * 2 + axis;
|
|
7125
7161
|
const length = Math.abs(xs[next % columns] - xs[x]) + Math.abs(ys[Math.floor(next / columns)] - ys[y]);
|
|
@@ -7134,7 +7170,10 @@ function routeLayout(nodes, edges) {
|
|
|
7134
7170
|
});
|
|
7135
7171
|
}
|
|
7136
7172
|
}
|
|
7137
|
-
if (finish < 0)
|
|
7173
|
+
if (finish < 0) {
|
|
7174
|
+
if (options.allowBlockedPorts) continue;
|
|
7175
|
+
throw new Error("Could not route the compact workflow connection.");
|
|
7176
|
+
}
|
|
7138
7177
|
const points = [];
|
|
7139
7178
|
for (let state = finish; state >= 0; state = previous[state]) {
|
|
7140
7179
|
const vertex = Math.floor(state / 2);
|
|
@@ -13317,7 +13356,8 @@ var CanvasStore = class {
|
|
|
13317
13356
|
constructor(model, editable, language, callbacks, options = {}) {
|
|
13318
13357
|
this.canDeleteNodes = true;
|
|
13319
13358
|
this.dispose = disposableStore();
|
|
13320
|
-
this.
|
|
13359
|
+
this.exportRoutes = this.dispose.add(val(/* @__PURE__ */ new Map()));
|
|
13360
|
+
this.layoutRequest = this.dispose.add(val(0));
|
|
13321
13361
|
this.ignoredNodeIds = this.dispose.add(val([]));
|
|
13322
13362
|
this.ignoreNodes = (nodeIds, ignored) => {
|
|
13323
13363
|
if (this.$.editable.value) this.#callbacks.onIgnoreNodes?.(nodeIds, ignored);
|
|
@@ -13344,16 +13384,27 @@ var CanvasStore = class {
|
|
|
13344
13384
|
};
|
|
13345
13385
|
this.disposed = false;
|
|
13346
13386
|
this.layoutMeasurementAttempts = 0;
|
|
13387
|
+
this.initialLayoutPending = false;
|
|
13347
13388
|
this.#modelDirection = "horizontal";
|
|
13348
13389
|
this.pendingNodeDeletes = /* @__PURE__ */ new Set();
|
|
13349
13390
|
this.pendingDisconnects = /* @__PURE__ */ new Map();
|
|
13350
13391
|
this.#entries = /* @__PURE__ */ new Map();
|
|
13351
13392
|
this.#modelPositions = /* @__PURE__ */ new Map();
|
|
13352
13393
|
this.#selectedNodeIds = /* @__PURE__ */ new Set();
|
|
13394
|
+
this.requestLayout = () => {
|
|
13395
|
+
if (this.disposed) return;
|
|
13396
|
+
this.layoutComplete = false;
|
|
13397
|
+
this.layoutMeasurementAttempts = 0;
|
|
13398
|
+
this.initialLayoutPending = true;
|
|
13399
|
+
this.layoutRequest.set(this.layoutRequest.value + 1);
|
|
13400
|
+
};
|
|
13353
13401
|
this.completeLayout = (availableWidth) => {
|
|
13354
13402
|
if (this.disposed || this.layoutComplete) return true;
|
|
13355
13403
|
const nodes = this.allLayoutNodes();
|
|
13356
|
-
if (nodes.length === 0 && !this.$.changingDirection.value)
|
|
13404
|
+
if (nodes.length === 0 && !this.$.changingDirection.value) {
|
|
13405
|
+
this.resolveInitialLayout(void 0);
|
|
13406
|
+
return true;
|
|
13407
|
+
}
|
|
13357
13408
|
for (const node of nodes) {
|
|
13358
13409
|
const measured = node.$.measured.value;
|
|
13359
13410
|
if (!measured?.width || !measured.height) {
|
|
@@ -13361,6 +13412,7 @@ var CanvasStore = class {
|
|
|
13361
13412
|
this.layoutMeasurementAttempts = 0;
|
|
13362
13413
|
this.layoutComplete = true;
|
|
13363
13414
|
this.#restoreDirection();
|
|
13415
|
+
this.resolveInitialLayout(void 0);
|
|
13364
13416
|
return true;
|
|
13365
13417
|
}
|
|
13366
13418
|
}
|
|
@@ -13368,6 +13420,10 @@ var CanvasStore = class {
|
|
|
13368
13420
|
this.applyPositions(positions);
|
|
13369
13421
|
this.layoutMeasurementAttempts = 0;
|
|
13370
13422
|
this.layoutComplete = true;
|
|
13423
|
+
this.resolveInitialLayout({
|
|
13424
|
+
direction: this.$.direction.value,
|
|
13425
|
+
positions
|
|
13426
|
+
});
|
|
13371
13427
|
if (this.$.changingDirection.value) this.#saveDirection(positions);
|
|
13372
13428
|
else this.#callbacks.onMoveNodes(positions);
|
|
13373
13429
|
return "relayout";
|
|
@@ -13502,7 +13558,7 @@ var CanvasStore = class {
|
|
|
13502
13558
|
const commentNodes = this.dispose.add(reactiveMap(null, { onDeleted: dispose }));
|
|
13503
13559
|
const viewport = this.dispose.add(val(model.viewport, { equal: isSameViewport }));
|
|
13504
13560
|
this.rfCommand = this.dispose.add(createRFCommand(nodes));
|
|
13505
|
-
this.layoutComplete =
|
|
13561
|
+
this.layoutComplete = true;
|
|
13506
13562
|
this.#runStatus = this.dispose.add(val(model.runStatus == "running" ? FLOW_RUN_STATUS.Running : FLOW_RUN_STATUS.Idle));
|
|
13507
13563
|
this.#connections = this.dispose.add(val([]));
|
|
13508
13564
|
const edges = this.dispose.add(deriveEdges(this.#connections, nodes));
|
|
@@ -13539,8 +13595,14 @@ var CanvasStore = class {
|
|
|
13539
13595
|
nodeMiniMapPhase: this.dispose.add(compute((get) => getNodeMinimap(get(nodes.$).size + get(commentNodes.$).size, get(viewport)?.zoom ?? 1)))
|
|
13540
13596
|
};
|
|
13541
13597
|
this.#syncModel(model);
|
|
13598
|
+
if (options.autoLayout) this.requestLayout();
|
|
13542
13599
|
if (options.defaultDirection != null) this.changeDirection(options.defaultDirection);
|
|
13543
13600
|
}
|
|
13601
|
+
resolveInitialLayout(layout) {
|
|
13602
|
+
if (!this.initialLayoutPending) return;
|
|
13603
|
+
this.initialLayoutPending = false;
|
|
13604
|
+
this.#callbacks.onInitialLayout?.(layout);
|
|
13605
|
+
}
|
|
13544
13606
|
async #saveDirection(positions) {
|
|
13545
13607
|
try {
|
|
13546
13608
|
if (!await this.#callbacks.onChangeDirection?.(this.$.direction.value, positions) && !this.disposed) this.#restoreDirection();
|
|
@@ -13646,7 +13708,7 @@ var CanvasStore = class {
|
|
|
13646
13708
|
edges
|
|
13647
13709
|
}, insets, aspectRatio);
|
|
13648
13710
|
this.applyPositions(result.positions);
|
|
13649
|
-
this.
|
|
13711
|
+
this.exportRoutes.set(result.routes);
|
|
13650
13712
|
return result.bounds;
|
|
13651
13713
|
}
|
|
13652
13714
|
doRemoveNodes(nodes) {
|
|
@@ -33556,6 +33618,70 @@ function roundedConnectionPath(input) {
|
|
|
33556
33618
|
return `${path} L ${end.x} ${end.y}`;
|
|
33557
33619
|
}
|
|
33558
33620
|
//#endregion
|
|
33621
|
+
//#region src/canvas/browser/graph/Edges/ConnectionRoutes.tsx
|
|
33622
|
+
var emptyRoutes = /* @__PURE__ */ new Map();
|
|
33623
|
+
var emptyNodes = [];
|
|
33624
|
+
var emptyEdges = [];
|
|
33625
|
+
var ConnectionRoutesContext = createContext(emptyRoutes);
|
|
33626
|
+
function inactiveNodes() {
|
|
33627
|
+
return emptyNodes;
|
|
33628
|
+
}
|
|
33629
|
+
function measuredNodes(state) {
|
|
33630
|
+
return [...state.nodeLookup.values()].flatMap((node) => node.hidden || !node.measured.width || !node.measured.height ? [] : [{
|
|
33631
|
+
id: node.id,
|
|
33632
|
+
...layoutAxes(node.internals.positionAbsolute, "vertical"),
|
|
33633
|
+
width: node.measured.height,
|
|
33634
|
+
height: node.measured.width,
|
|
33635
|
+
column: 0,
|
|
33636
|
+
handles: node.internals.handleBounds
|
|
33637
|
+
}]);
|
|
33638
|
+
}
|
|
33639
|
+
function sameNodes(a, b) {
|
|
33640
|
+
return a.length === b.length && a.every((node, index) => shallowPlainObjectEqual(node, b[index]));
|
|
33641
|
+
}
|
|
33642
|
+
/** Share obstacle-aware routes using React Flow's measured cards and actual ports. */
|
|
33643
|
+
function ConnectionRoutesProvider({ direction, routes$, children }) {
|
|
33644
|
+
const planned = useVal(routes$);
|
|
33645
|
+
const active = direction === "vertical" && !planned?.size;
|
|
33646
|
+
const nodes = useStore$1(active ? measuredNodes : inactiveNodes, sameNodes);
|
|
33647
|
+
const edges = useStore$1((state) => active ? state.edges : emptyEdges);
|
|
33648
|
+
const routes = useMemo(() => {
|
|
33649
|
+
if (planned?.size) return planned;
|
|
33650
|
+
if (direction !== "vertical") return emptyRoutes;
|
|
33651
|
+
const byId = new Map(nodes.map((node) => [node.id, node]));
|
|
33652
|
+
const connections = edges.flatMap((edge) => {
|
|
33653
|
+
const source = byId.get(edge.source);
|
|
33654
|
+
const target = byId.get(edge.target);
|
|
33655
|
+
const output = source?.handles?.source?.find((handle) => edge.sourceHandle == null || handle.id === edge.sourceHandle);
|
|
33656
|
+
const input = target?.handles?.target?.find((handle) => edge.targetHandle == null || handle.id === edge.targetHandle);
|
|
33657
|
+
if (edge.hidden || !source || !target || output?.position !== Position$1.Bottom || input?.position !== Position$1.Top) return [];
|
|
33658
|
+
return [{
|
|
33659
|
+
id: edge.id,
|
|
33660
|
+
source: edge.source,
|
|
33661
|
+
target: edge.target,
|
|
33662
|
+
sourceOffset: {
|
|
33663
|
+
x: output.y + output.height,
|
|
33664
|
+
y: output.x + output.width / 2
|
|
33665
|
+
},
|
|
33666
|
+
targetOffset: {
|
|
33667
|
+
x: input.y,
|
|
33668
|
+
y: input.x + input.width / 2
|
|
33669
|
+
}
|
|
33670
|
+
}];
|
|
33671
|
+
});
|
|
33672
|
+
return new Map([...routeLayout(nodes, connections, { allowBlockedPorts: true })].map(([id, points]) => [id, points.map((point) => layoutAxes(point, "vertical"))]));
|
|
33673
|
+
}, [
|
|
33674
|
+
direction,
|
|
33675
|
+
nodes,
|
|
33676
|
+
edges,
|
|
33677
|
+
planned
|
|
33678
|
+
]);
|
|
33679
|
+
return /* @__PURE__ */ jsx(ConnectionRoutesContext.Provider, {
|
|
33680
|
+
value: routes,
|
|
33681
|
+
children
|
|
33682
|
+
});
|
|
33683
|
+
}
|
|
33684
|
+
//#endregion
|
|
33559
33685
|
//#region src/canvas/browser/graph/Edges/EdgeGradient.tsx
|
|
33560
33686
|
function EdgeGradient({ id, sourceX, sourceY, targetX, targetY, sourceColor, targetColor }) {
|
|
33561
33687
|
return /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", {
|
|
@@ -33582,7 +33708,7 @@ function BasicEdge(props) {
|
|
|
33582
33708
|
const error = useVal(edgeStore?.$.error);
|
|
33583
33709
|
const canvasStore = useCanvasStore();
|
|
33584
33710
|
const scale = useVal(canvasStore.$.scale);
|
|
33585
|
-
const routes =
|
|
33711
|
+
const routes = useContext(ConnectionRoutesContext);
|
|
33586
33712
|
const gap = 3;
|
|
33587
33713
|
const targetX = props.targetX + (props.targetPosition == Position$1.Left ? -3 : props.targetPosition == Position$1.Right ? gap : 0);
|
|
33588
33714
|
const targetY = props.targetY + (props.targetPosition == Position$1.Top ? -3 : props.targetPosition == Position$1.Bottom ? gap : 0);
|
|
@@ -55640,9 +55766,13 @@ var ReactFlowContainer = (props) => {
|
|
|
55640
55766
|
i18n: props.i18n,
|
|
55641
55767
|
children: /* @__PURE__ */ jsx(TooltipProvider, {
|
|
55642
55768
|
delay: 300,
|
|
55643
|
-
children: /* @__PURE__ */ jsx(ReactFlowProvider, { children: /* @__PURE__ */ jsx(
|
|
55644
|
-
|
|
55645
|
-
|
|
55769
|
+
children: /* @__PURE__ */ jsx(ReactFlowProvider, { children: /* @__PURE__ */ jsx(ConnectionRoutesProvider, {
|
|
55770
|
+
direction: props.direction,
|
|
55771
|
+
routes$: props.connectionRoutes$,
|
|
55772
|
+
children: /* @__PURE__ */ jsx(HandleContextProvider, {
|
|
55773
|
+
Handle: Handle$1,
|
|
55774
|
+
children: /* @__PURE__ */ jsx(ReactFlowContainerInner, { ...props })
|
|
55775
|
+
})
|
|
55646
55776
|
}) })
|
|
55647
55777
|
})
|
|
55648
55778
|
})
|
|
@@ -55894,7 +56024,11 @@ var ReactFlowContainerInner = (props) => {
|
|
|
55894
56024
|
]);
|
|
55895
56025
|
useLayoutEffect(() => {
|
|
55896
56026
|
setLayoutReady(props.layoutMotion !== false || props.onLayoutMeasured == null);
|
|
55897
|
-
}, [
|
|
56027
|
+
}, [
|
|
56028
|
+
props.layoutMotion,
|
|
56029
|
+
props.onLayoutMeasured,
|
|
56030
|
+
props.layoutRequest
|
|
56031
|
+
]);
|
|
55898
56032
|
useEffect(() => {
|
|
55899
56033
|
let active = true;
|
|
55900
56034
|
let measurementFrame = 0;
|
|
@@ -55941,6 +56075,7 @@ var ReactFlowContainerInner = (props) => {
|
|
|
55941
56075
|
onBeforeFitView,
|
|
55942
56076
|
props.layoutMotion,
|
|
55943
56077
|
props.onLayoutMeasured,
|
|
56078
|
+
props.layoutRequest,
|
|
55944
56079
|
props.direction,
|
|
55945
56080
|
rf,
|
|
55946
56081
|
updateNodeInternals
|
|
@@ -56366,6 +56501,7 @@ function tooShort(from, to) {
|
|
|
56366
56501
|
var FlowCanvas = ({ flowCanvasStore, annotationContext, onActivateSelection, onSelectionStart, onSelectionEnd, onInspectSelection, inspectorOpen = false, onRequestAddNode, cornerTools, cornerLeading, topLeftTools, bottomRightTools, toolbar, dark, dottedBackground, fitView, nodesDraggable, layoutMotion, className, addNodeRequest, addItemRequest, onInit, onMove, onMoveEnd, onNodeDragStop, onSelectionChange, isValidConnection, onDropAddItem }) => {
|
|
56367
56502
|
const editable = useVal(flowCanvasStore.$.editable);
|
|
56368
56503
|
const direction = useVal(flowCanvasStore.$.direction);
|
|
56504
|
+
const layoutRequest = useVal(flowCanvasStore.layoutRequest);
|
|
56369
56505
|
const changingDirection = useVal(flowCanvasStore.$.changingDirection);
|
|
56370
56506
|
const nodeMiniMapPhase = useVal(flowCanvasStore.$.nodeMiniMapPhase);
|
|
56371
56507
|
useEffect(flowCanvasStore.setupForceDelete, []);
|
|
@@ -56399,12 +56535,14 @@ var FlowCanvas = ({ flowCanvasStore, annotationContext, onActivateSelection, onS
|
|
|
56399
56535
|
fitView: fitView ?? !editable,
|
|
56400
56536
|
fitViewOptions,
|
|
56401
56537
|
layoutMotion,
|
|
56538
|
+
layoutRequest,
|
|
56402
56539
|
nodeTypes: NODE_TYPES,
|
|
56403
56540
|
edgeTypes: EDGE_TYPES,
|
|
56404
56541
|
miniMapExpanded$: flowCanvasStore.$$.miniMapExpanded,
|
|
56405
56542
|
interactiveMode$: flowCanvasStore.$$.interactiveMode,
|
|
56406
56543
|
nodes$: flowCanvasStore.$.rfNodes,
|
|
56407
56544
|
edges$: flowCanvasStore.$.rfEdges,
|
|
56545
|
+
connectionRoutes$: flowCanvasStore.exportRoutes,
|
|
56408
56546
|
viewport$: flowCanvasStore.$$.viewport,
|
|
56409
56547
|
onRequestAddNode,
|
|
56410
56548
|
addNodeRequest,
|
|
@@ -56449,6 +56587,7 @@ function callbacksFromProps(props) {
|
|
|
56449
56587
|
onChangeDirection: props.onChangeDirection,
|
|
56450
56588
|
onAddNode: props.onAddNode,
|
|
56451
56589
|
onMoveNodes: props.onMoveNodes,
|
|
56590
|
+
onInitialLayout: props.onInitialLayout,
|
|
56452
56591
|
onChangeNodeContentHidden: props.onChangeNodeContentHidden,
|
|
56453
56592
|
onChangeNodeWidth: props.onChangeNodeWidth,
|
|
56454
56593
|
onChangeComment: props.onChangeComment,
|
|
@@ -56469,6 +56608,10 @@ function FlowCanvasView(props) {
|
|
|
56469
56608
|
defaultMiniMapExpanded: props.defaultMiniMapExpanded
|
|
56470
56609
|
}), [props.identity]);
|
|
56471
56610
|
const previousStore = useRef(store);
|
|
56611
|
+
const previousLayoutRequest = useRef({
|
|
56612
|
+
store,
|
|
56613
|
+
requested: props.autoLayout
|
|
56614
|
+
});
|
|
56472
56615
|
const propsRef = useRef(props);
|
|
56473
56616
|
const selectedEdge = useRef();
|
|
56474
56617
|
propsRef.current = props;
|
|
@@ -56536,6 +56679,14 @@ function FlowCanvasView(props) {
|
|
|
56536
56679
|
props.selectedNodeIds,
|
|
56537
56680
|
props.ignoredNodeIds
|
|
56538
56681
|
]);
|
|
56682
|
+
useLayoutEffect(() => {
|
|
56683
|
+
const previous = previousLayoutRequest.current;
|
|
56684
|
+
previousLayoutRequest.current = {
|
|
56685
|
+
store,
|
|
56686
|
+
requested: props.autoLayout
|
|
56687
|
+
};
|
|
56688
|
+
if (previous.store === store && !previous.requested && props.autoLayout) store.requestLayout();
|
|
56689
|
+
}, [store, props.autoLayout]);
|
|
56539
56690
|
useEffect(() => {
|
|
56540
56691
|
if (props.focusNodeRequest != null) {
|
|
56541
56692
|
const reducedMotion = typeof window != "undefined" && typeof window.matchMedia == "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
@@ -60475,6 +60626,7 @@ function schemaEqualsChecker(extendsContext) {
|
|
|
60475
60626
|
if (value1 === null || value2 === null) return false;
|
|
60476
60627
|
if (typeof value1 !== "object") return false;
|
|
60477
60628
|
if (typeof value1 !== typeof value2) return false;
|
|
60629
|
+
if (extendsContext.isExtendsSchema(value1) || extendsContext.isExtendsSchema(value2)) return extendsContext.equals(value1, value2);
|
|
60478
60630
|
if (isCompiledSchema(value1) && isCompiledSchema(value2)) return isCompiledSchemaEquals(value1, value2);
|
|
60479
60631
|
return isObjectLikeEquals(value1, value2);
|
|
60480
60632
|
}
|
|
@@ -61197,10 +61349,17 @@ var SingleSelectSchema = class SingleSelectSchema extends SpecialSchema {
|
|
|
61197
61349
|
}
|
|
61198
61350
|
constructor(id, value, context) {
|
|
61199
61351
|
if (!SingleSelectSchema.isMatch(value)) throw new TypeError("Invalid single-select schema.");
|
|
61200
|
-
|
|
61352
|
+
const validator = new Validator(structuredClone(value), "7");
|
|
61353
|
+
super(id, { enum: value.enum.filter((item) => validator.validate(item).valid) }, context);
|
|
61201
61354
|
}
|
|
61202
61355
|
compareImpl(other) {
|
|
61203
|
-
if (
|
|
61356
|
+
if (this.value.enum.length == 0) return [(other instanceof SingleSelectSchema ? other.value.enum.length == 0 : isCompiledSchema(other) && getKind(other) === CompiledKind.Never) ? ExpressionSingleResult.Equals : ExpressionSingleResult.ContainedBy];
|
|
61357
|
+
if (isStringLikeSchema(other)) {
|
|
61358
|
+
const validator = new Validator(structuredClone(other), "7");
|
|
61359
|
+
const accepted = this.value.enum.filter((item) => validator.validate(item).valid).length;
|
|
61360
|
+
if (accepted == this.value.enum.length) return [ExpressionSingleResult.ContainedBy];
|
|
61361
|
+
return [accepted == 0 ? ExpressionSingleResult.Rejection : ExpressionSingleResult.Intersection];
|
|
61362
|
+
}
|
|
61204
61363
|
if (other instanceof SingleSelectSchema) {
|
|
61205
61364
|
const f = new Set(this.value.enum);
|
|
61206
61365
|
let result = ExpressionSingleResult.Equals;
|
|
@@ -65461,7 +65620,10 @@ function workflowAgentTool(id, name, target, previous) {
|
|
|
65461
65620
|
id,
|
|
65462
65621
|
description: previous?.description ?? target.name,
|
|
65463
65622
|
approval: previous?.approval ?? false,
|
|
65464
|
-
inputs: capability.inputs.map((
|
|
65623
|
+
inputs: capability.inputs.map((input) => {
|
|
65624
|
+
const { value: _value, ...port } = input;
|
|
65625
|
+
return Object.assign({}, port, { source: previous?.inputs.find((old) => old.handle == port.handle)?.source ?? { kind: "model" } });
|
|
65626
|
+
})
|
|
65465
65627
|
};
|
|
65466
65628
|
}
|
|
65467
65629
|
//#endregion
|
|
@@ -66576,9 +66738,8 @@ function projectEdges(graph, nodeIds) {
|
|
|
66576
66738
|
edges
|
|
66577
66739
|
};
|
|
66578
66740
|
}
|
|
66579
|
-
function
|
|
66741
|
+
function orderNodes(nodeIds, dependencies, dependents) {
|
|
66580
66742
|
const indegree = new Map([...dependencies].map(([nodeId, sources]) => [nodeId, sources.size]));
|
|
66581
|
-
const depth = /* @__PURE__ */ new Map();
|
|
66582
66743
|
const ordered = [];
|
|
66583
66744
|
const orderedIds = /* @__PURE__ */ new Set();
|
|
66584
66745
|
const ready = [...indegree].filter(([, count]) => count == 0).map(([nodeId]) => nodeId).toSorted();
|
|
@@ -66586,23 +66747,14 @@ function layoutNodes(nodeIds, dependencies, dependents) {
|
|
|
66586
66747
|
const nodeId = ready[cursor];
|
|
66587
66748
|
ordered.push(nodeId);
|
|
66588
66749
|
orderedIds.add(nodeId);
|
|
66589
|
-
const nextDepth = (depth.get(nodeId) ?? 0) + 1;
|
|
66590
66750
|
for (const targetId of [...dependents.get(nodeId)].toSorted()) {
|
|
66591
|
-
depth.set(targetId, Math.max(depth.get(targetId) ?? 0, nextDepth));
|
|
66592
66751
|
const count = indegree.get(targetId) - 1;
|
|
66593
66752
|
indegree.set(targetId, count);
|
|
66594
66753
|
if (count == 0) ready.push(targetId);
|
|
66595
66754
|
}
|
|
66596
66755
|
}
|
|
66597
|
-
const
|
|
66598
|
-
|
|
66599
|
-
depth.set(nodeId, cycleDepth);
|
|
66600
|
-
ordered.push(nodeId);
|
|
66601
|
-
}
|
|
66602
|
-
return {
|
|
66603
|
-
depth,
|
|
66604
|
-
ordered
|
|
66605
|
-
};
|
|
66756
|
+
for (const nodeId of [...nodeIds].filter((candidate) => !orderedIds.has(candidate)).toSorted()) ordered.push(nodeId);
|
|
66757
|
+
return ordered;
|
|
66606
66758
|
}
|
|
66607
66759
|
function designerInputs(nodeId, node, ports, revision) {
|
|
66608
66760
|
if (isTriggerNode(node)) return [];
|
|
@@ -66799,6 +66951,7 @@ function designerGraph(draft, presentation = {}, diagnostics = [], connectorActi
|
|
|
66799
66951
|
const graph = revision == null ? void 0 : revision.graph();
|
|
66800
66952
|
if (revision == null || graph == null) return {
|
|
66801
66953
|
edges: [],
|
|
66954
|
+
needsLayout: false,
|
|
66802
66955
|
nodes: [],
|
|
66803
66956
|
viewport: {
|
|
66804
66957
|
x: 0,
|
|
@@ -66812,7 +66965,7 @@ function designerGraph(draft, presentation = {}, diagnostics = [], connectorActi
|
|
|
66812
66965
|
const nodeIds = new Set(entries.map(([nodeId]) => nodeId));
|
|
66813
66966
|
const ports = new Map([...definitions].map(([nodeId, node]) => [nodeId, nodePorts(node, revision)]));
|
|
66814
66967
|
const edgeProjection = projectEdges(graph, nodeIds);
|
|
66815
|
-
const
|
|
66968
|
+
const ordered = orderNodes(nodeIds, edgeProjection.dependencies, edgeProjection.dependents);
|
|
66816
66969
|
const direction = savedDirection(presentation);
|
|
66817
66970
|
const positions = savedPositions(presentation);
|
|
66818
66971
|
const hiddenNodeContent = savedHiddenNodeContent(presentation);
|
|
@@ -66827,33 +66980,21 @@ function designerGraph(draft, presentation = {}, diagnostics = [], connectorActi
|
|
|
66827
66980
|
runNodes: projectedRun.nodes,
|
|
66828
66981
|
t
|
|
66829
66982
|
};
|
|
66830
|
-
const
|
|
66831
|
-
|
|
66832
|
-
|
|
66833
|
-
const row = rows.get(column) ?? 0;
|
|
66834
|
-
rows.set(column, row + 1);
|
|
66835
|
-
return direction === "vertical" ? {
|
|
66836
|
-
id: nodeId,
|
|
66837
|
-
column,
|
|
66838
|
-
x: 80 + row * 400,
|
|
66839
|
-
y: 80 + column * 240,
|
|
66840
|
-
width: 320,
|
|
66841
|
-
height: 160
|
|
66842
|
-
} : {
|
|
66983
|
+
const defaultNodes = ordered.every((nodeId) => positions[nodeId] != null) ? [] : graphLayout(ordered.map((nodeId) => {
|
|
66984
|
+
const { kind } = definitions.get(nodeId);
|
|
66985
|
+
return {
|
|
66843
66986
|
id: nodeId,
|
|
66844
|
-
|
|
66845
|
-
|
|
66846
|
-
|
|
66847
|
-
width: 420,
|
|
66848
|
-
height: 240
|
|
66987
|
+
width: direction === "vertical" ? 320 : 420,
|
|
66988
|
+
height: direction === "vertical" ? 160 : 240,
|
|
66989
|
+
branchHandles: kind === "condition" || kind === "approval" || kind === "wait" ? [...ports.get(nodeId).outputs.keys()].map((handle) => "$branch:" + handle) : void 0
|
|
66849
66990
|
};
|
|
66850
|
-
});
|
|
66991
|
+
}), edgeProjection.edges, direction).nodes;
|
|
66851
66992
|
const automaticPositions = direction === "horizontal" ? wrapLayout(defaultNodes) : Object.fromEntries(defaultNodes.map(({ id, x, y }) => [id, {
|
|
66852
66993
|
x,
|
|
66853
66994
|
y
|
|
66854
66995
|
}]));
|
|
66855
66996
|
const nodes = [];
|
|
66856
|
-
for (const nodeId of
|
|
66997
|
+
for (const nodeId of ordered) {
|
|
66857
66998
|
const position = positions[nodeId] ?? automaticPositions[nodeId];
|
|
66858
66999
|
const resolved = definitions.get(nodeId);
|
|
66859
67000
|
if (resolved.kind == "trigger") {
|
|
@@ -66881,6 +67022,7 @@ function designerGraph(draft, presentation = {}, diagnostics = [], connectorActi
|
|
|
66881
67022
|
return {
|
|
66882
67023
|
direction,
|
|
66883
67024
|
edges: edgeProjection.edges,
|
|
67025
|
+
needsLayout: nodes.length > 0 && nodes.every((node) => positions[node.id] == null),
|
|
66884
67026
|
nodes,
|
|
66885
67027
|
...projectedRun.status == null ? {} : { runStatus: projectedRun.status },
|
|
66886
67028
|
viewport: savedViewport(presentation)
|
|
@@ -120445,6 +120587,15 @@ function changeRevisionCanvasSession(session, graphId, change) {
|
|
|
120445
120587
|
const previous = session[graphId];
|
|
120446
120588
|
let next;
|
|
120447
120589
|
switch (change.kind) {
|
|
120590
|
+
case "initialize":
|
|
120591
|
+
next = {
|
|
120592
|
+
...previous,
|
|
120593
|
+
initialLayout: previous?.initialLayout ?? {
|
|
120594
|
+
direction: change.direction,
|
|
120595
|
+
positions: change.positions
|
|
120596
|
+
}
|
|
120597
|
+
};
|
|
120598
|
+
break;
|
|
120448
120599
|
case "move":
|
|
120449
120600
|
next = {
|
|
120450
120601
|
...previous,
|
|
@@ -120579,19 +120730,32 @@ function RevisionCanvas({ draft, presentation, theme, interactiveMode$, defaultI
|
|
|
120579
120730
|
return baseline.nodes.filter((node) => ids.has(node.id)).map((node) => node.id);
|
|
120580
120731
|
});
|
|
120581
120732
|
const session = sessions[graphId];
|
|
120733
|
+
const needsInitialLayout = baseline.needsLayout && session?.initialLayout == null;
|
|
120582
120734
|
const model = useMemo(() => ({
|
|
120583
120735
|
...baseline,
|
|
120584
|
-
direction: session?.direction ?? baseline.direction,
|
|
120736
|
+
direction: session?.direction ?? session?.initialLayout?.direction ?? baseline.direction,
|
|
120585
120737
|
viewport: session?.viewport ?? baseline.viewport,
|
|
120586
120738
|
nodes: baseline.nodes.map((node) => ({
|
|
120587
120739
|
...node,
|
|
120588
|
-
position: session?.positions?.[node.id] ?? node.position
|
|
120740
|
+
position: session?.positions?.[node.id] ?? session?.initialLayout?.positions[node.id] ?? node.position
|
|
120589
120741
|
}))
|
|
120590
120742
|
}), [baseline, session]);
|
|
120591
|
-
const layoutChanged = model.direction !== baseline.direction || baseline.nodes.some((node) => {
|
|
120743
|
+
const layoutChanged = model.direction !== (session?.initialLayout?.direction ?? baseline.direction) || baseline.nodes.some((node) => {
|
|
120592
120744
|
const position = session?.positions?.[node.id];
|
|
120593
|
-
|
|
120745
|
+
const original = session?.initialLayout?.positions[node.id] ?? node.position;
|
|
120746
|
+
return position != null && (position.x !== original.x || position.y !== original.y);
|
|
120594
120747
|
});
|
|
120748
|
+
const changeLayout = (positions, direction) => {
|
|
120749
|
+
const change = direction == null ? {
|
|
120750
|
+
kind: "move",
|
|
120751
|
+
positions
|
|
120752
|
+
} : {
|
|
120753
|
+
kind: "direction",
|
|
120754
|
+
positions,
|
|
120755
|
+
direction
|
|
120756
|
+
};
|
|
120757
|
+
setSessions((current) => changeRevisionCanvasSession(current, graphId, change));
|
|
120758
|
+
};
|
|
120595
120759
|
const selection = selected.length === 1 ? revision.node(selected[0]) : void 0;
|
|
120596
120760
|
const selectedNode = selected.length === 1 ? model.nodes.find((node) => node.id === selected[0]) : void 0;
|
|
120597
120761
|
const panelTitle = selectedNode?.title ?? (selected.length > 1 ? t("inspector.multipleSelected", { count: selected.length }) : t("inspector.outline"));
|
|
@@ -120623,6 +120787,7 @@ function RevisionCanvas({ draft, presentation, theme, interactiveMode$, defaultI
|
|
|
120623
120787
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
120624
120788
|
className: "revision-viewer-canvas",
|
|
120625
120789
|
children: [/* @__PURE__ */ jsx(FlowCanvasView, {
|
|
120790
|
+
autoLayout: needsInitialLayout,
|
|
120626
120791
|
identity: graphId,
|
|
120627
120792
|
model,
|
|
120628
120793
|
editable: false,
|
|
@@ -120640,16 +120805,14 @@ function RevisionCanvas({ draft, presentation, theme, interactiveMode$, defaultI
|
|
|
120640
120805
|
selectedNodeIds: selected,
|
|
120641
120806
|
ignoredNodeIds: [],
|
|
120642
120807
|
focusNodeRequest: focus,
|
|
120643
|
-
onMoveNodes:
|
|
120644
|
-
|
|
120645
|
-
|
|
120808
|
+
onMoveNodes: changeLayout,
|
|
120809
|
+
onInitialLayout: (layout) => setSessions((current) => changeRevisionCanvasSession(current, graphId, {
|
|
120810
|
+
kind: "initialize",
|
|
120811
|
+
direction: layout?.direction ?? canvasDirection(baseline.direction),
|
|
120812
|
+
positions: layout?.positions ?? Object.fromEntries(baseline.nodes.map((node) => [node.id, node.position]))
|
|
120646
120813
|
})),
|
|
120647
120814
|
onChangeDirection: (direction, positions) => {
|
|
120648
|
-
|
|
120649
|
-
kind: "direction",
|
|
120650
|
-
direction,
|
|
120651
|
-
positions
|
|
120652
|
-
}));
|
|
120815
|
+
changeLayout(positions, direction);
|
|
120653
120816
|
return true;
|
|
120654
120817
|
},
|
|
120655
120818
|
onMoveViewport: (viewport) => setSessions((current) => changeRevisionCanvasSession(current, graphId, {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { A as
|
|
1
|
+
import { A as DropdownMenuContent, B as DropdownMenuTrigger, I as DropdownMenuSeparator, M as DropdownMenuItem, O as DropdownMenu, T as IconifyProvider, _t as IconThemeContext, b as ContentIcon, h as PopoverTrigger, ht as ProviderIconCacheContext, l as Popover, m as PopoverTitle, u as PopoverContent } from "./wrapLayout-ZOG4AikN.js";
|
|
2
2
|
import { a as derive, i as compute, l as val } from "./dist-bO8nvHFH.js";
|
|
3
3
|
import { c as useLang, l as useTranslate, o as I18nProvider, u as useVal } from "./dist-BFmpkX4P.js";
|
|
4
4
|
import { Cr as cn, i as TooltipTrigger, n as TooltipContent, t as Tooltip, xr as Button } from "./tooltip-BZ6tpqnr.js";
|
|
5
|
-
import { Bt as schemaObject, C as upgradeManualTrigger, Dt as connectorProxyTask, M as mapConditionSources, N as nodeInputMappings, Rt as matchesSchema, S as resourceNameIssue, Yt as dequal, _ as applyFlowChanges, a as DialogFooter, bt as connectorProxyConfigSchema, d as Field, g as FlowChangeError, h as FieldLabel, hn as Input, i as DialogDescription, l as Icon, m as FieldGroup, o as DialogHeader, p as FieldError, r as DialogContent, s as DialogTitle, t as Dialog, u as Spinner, v as isTriggerNode, w as upgradeRevisionContent } from "./dialog-
|
|
6
|
-
import { $ as resourceValue, $n as allConnectorConnectionsQuery, $t as WorkflowExportDialog, At as actionWithConnections, Bn as EmptyMedia, Br as ApiError, Bt as setNodeContentHidden, C as updateValue, Ct as flowResourceReferences, Et as diagnosticItems, Fn as InputGroupInput, Ft as removeComments, Gt as setCodeActions, Hn as Badge, Ht as setVerticalNodeWidth, In as Empty, It as restoreCanvasPresentation, J as scopedValue, Jt as setServiceConnections, K as combineSources, Kn as createI18n, Kt as setConnectorConnection, Ln as EmptyContent, Lt as setCanvasLayout, Mn as followWorkbenchLink, Mt as canvasPresentationChange, Nn as InputGroup, Nt as commentIds, Pn as InputGroupAddon, Pr as workflowCandidate, Pt as flowPresentation, Q as resourceData, Qn as randomId, Qt as WorkflowBundleSummary, Rn as EmptyDescription, Rr as invalidResponse, Rt as setComment, S as updateTriggerConfig, St as revisionView, Tt as deriveInspectorDiagnostics, U as addNodeIntent, Un as EventSourcesPage, Ut as repairNodeNames, Vn as EmptyTitle, Vr as controlErrorCode, Vt as setNodePositions, W as deriveAddNodeOptions, Wt as resetInputValues, X as CacheResource, Xn as WorkbenchClient, Xt as updateTriggerSchedule, Y as connectorActionPresentation, Yn as errorNotice, Yt as updateStartInputDefs, Zn as normalizeFlowQuery, Zt as dequal$1, _ as updateRequestParameters, _r as workflowBundleFromPreview, a as nameCreatedNodes, an as FlowTagChips, at as getActionsCache, b as updateTaskAdditionalInputs, br as workflowNameFromFile, c as setInputVariable, cr as normalizeTriggerOutputs, ct as getProvidersCache, d as updateCondition, en as WorkflowExportMenuItem, et as action, f as updateNodeDescription, fr as isJsonValue, ft as designerGraph, g as updateOutputPorts, gr as parseWorkflowImportFile, h as updateNodeSettings, hr as encodeWorkflowBundle, i as deleteSelection, in as FlowSettingsDialog, jn as useFlowQuery, jt as connectionCatalog, l as setTriggerConnection, lr as sampleErrorOutputs, lt as createPersistentCache, m as updateNodeName, mr as connectorActionMetadata, nn as IdTooltip, nt as proxyResponse, o as selectWebhookResponse, on as TagPicker, p as updateNodeIcon, pr as connection, qt as setInputSources, r as applyFlowChanges$1, rt as validateAction, s as setInputValue, st as getConnectionsCache, t as addNode, tn as useWorkflowExportAction, tr as decodeTriggerCatalog, tt as provider, u as setTriggerEventSource, ur as triggerOutputDefinitions, ut as createSessionCache, v as updateResolution, vr as encodeWorkflowFile, vt as providerIcon, w as updateWebhook, wt as Latest, x as updateTaskPorts, y as updateTask, yr as workflowFileName, yt as RunStore, zn as EmptyHeader, zr as record, zt as setFlowViewport } from "./flowChanges-
|
|
5
|
+
import { Bt as schemaObject, C as upgradeManualTrigger, Dt as connectorProxyTask, M as mapConditionSources, N as nodeInputMappings, Rt as matchesSchema, S as resourceNameIssue, Yt as dequal, _ as applyFlowChanges, a as DialogFooter, bt as connectorProxyConfigSchema, d as Field, g as FlowChangeError, h as FieldLabel, hn as Input, i as DialogDescription, l as Icon, m as FieldGroup, o as DialogHeader, p as FieldError, r as DialogContent, s as DialogTitle, t as Dialog, u as Spinner, v as isTriggerNode, w as upgradeRevisionContent } from "./dialog-E1WkapJU.js";
|
|
6
|
+
import { $ as resourceValue, $n as allConnectorConnectionsQuery, $t as WorkflowExportDialog, At as actionWithConnections, Bn as EmptyMedia, Br as ApiError, Bt as setNodeContentHidden, C as updateValue, Ct as flowResourceReferences, Et as diagnosticItems, Fn as InputGroupInput, Ft as removeComments, Gt as setCodeActions, Hn as Badge, Ht as setVerticalNodeWidth, In as Empty, It as restoreCanvasPresentation, J as scopedValue, Jt as setServiceConnections, K as combineSources, Kn as createI18n, Kt as setConnectorConnection, Ln as EmptyContent, Lt as setCanvasLayout, Mn as followWorkbenchLink, Mt as canvasPresentationChange, Nn as InputGroup, Nt as commentIds, Pn as InputGroupAddon, Pr as workflowCandidate, Pt as flowPresentation, Q as resourceData, Qn as randomId, Qt as WorkflowBundleSummary, Rn as EmptyDescription, Rr as invalidResponse, Rt as setComment, S as updateTriggerConfig, St as revisionView, Tt as deriveInspectorDiagnostics, U as addNodeIntent, Un as EventSourcesPage, Ut as repairNodeNames, Vn as EmptyTitle, Vr as controlErrorCode, Vt as setNodePositions, W as deriveAddNodeOptions, Wt as resetInputValues, X as CacheResource, Xn as WorkbenchClient, Xt as updateTriggerSchedule, Y as connectorActionPresentation, Yn as errorNotice, Yt as updateStartInputDefs, Zn as normalizeFlowQuery, Zt as dequal$1, _ as updateRequestParameters, _r as workflowBundleFromPreview, a as nameCreatedNodes, an as FlowTagChips, at as getActionsCache, b as updateTaskAdditionalInputs, br as workflowNameFromFile, c as setInputVariable, cr as normalizeTriggerOutputs, ct as getProvidersCache, d as updateCondition, en as WorkflowExportMenuItem, et as action, f as updateNodeDescription, fr as isJsonValue, ft as designerGraph, g as updateOutputPorts, gr as parseWorkflowImportFile, h as updateNodeSettings, hr as encodeWorkflowBundle, i as deleteSelection, in as FlowSettingsDialog, jn as useFlowQuery, jt as connectionCatalog, l as setTriggerConnection, lr as sampleErrorOutputs, lt as createPersistentCache, m as updateNodeName, mr as connectorActionMetadata, nn as IdTooltip, nt as proxyResponse, o as selectWebhookResponse, on as TagPicker, p as updateNodeIcon, pr as connection, qt as setInputSources, r as applyFlowChanges$1, rt as validateAction, s as setInputValue, st as getConnectionsCache, t as addNode, tn as useWorkflowExportAction, tr as decodeTriggerCatalog, tt as provider, u as setTriggerEventSource, ur as triggerOutputDefinitions, ut as createSessionCache, v as updateResolution, vr as encodeWorkflowFile, vt as providerIcon, w as updateWebhook, wt as Latest, x as updateTaskPorts, y as updateTask, yr as workflowFileName, yt as RunStore, zn as EmptyHeader, zr as record, zt as setFlowViewport } from "./flowChanges-DsLZdENA.js";
|
|
7
7
|
import { a as uiLanguages, i as uiLanguageNames, n as isUiLanguage, r as resolveUiLanguage, t as importedWorkflowName } from "./languages-gYzoQqCi.js";
|
|
8
8
|
import { i as objectValue, n as isJsonValue$1, s as valueType, t as initialValue } from "./value-BbFQZZ_V.js";
|
|
9
9
|
import { Suspense, forwardRef, lazy, useEffect, useImperativeHandle, useLayoutEffect, useRef, useState } from "react";
|
|
@@ -520,7 +520,7 @@ function FlowDeletionDialog({ flow, workspace, container, busy, finalFocus, onCl
|
|
|
520
520
|
}
|
|
521
521
|
//#endregion
|
|
522
522
|
//#region src/workbench/browser/runtime/shell/resourceBrowser.tsx
|
|
523
|
-
var CreateResourceDialog = lazy(() => import("./createResourceDialog-
|
|
523
|
+
var CreateResourceDialog = lazy(() => import("./createResourceDialog-CJbZa2gA.js"));
|
|
524
524
|
var flowIdTooltipAlignOffset = 44;
|
|
525
525
|
var renamePopoverAlignOffset = -12;
|
|
526
526
|
function compactFlowId(flowId) {
|
|
@@ -7047,7 +7047,7 @@ var WorkbenchStore = class {
|
|
|
7047
7047
|
async downloadPng(result) {
|
|
7048
7048
|
const title = this.workspace.$.flow.value?.name ?? this.workspace.$.flowId.value ?? "Workflow";
|
|
7049
7049
|
try {
|
|
7050
|
-
const { downloadPng } = await import("./exportPng-
|
|
7050
|
+
const { downloadPng } = await import("./exportPng-c4or5th8.js");
|
|
7051
7051
|
downloadPng(result, title);
|
|
7052
7052
|
if (!this.#disposed) this.#notice.set({
|
|
7053
7053
|
kind: "success",
|
|
@@ -7314,7 +7314,7 @@ var WorkbenchStore = class {
|
|
|
7314
7314
|
};
|
|
7315
7315
|
//#endregion
|
|
7316
7316
|
//#region src/workbench/browser/runtime/openFlowWorkbench.tsx
|
|
7317
|
-
var FlowWorkspace = lazy(() => import("./flowWorkspace-
|
|
7317
|
+
var FlowWorkspace = lazy(() => import("./flowWorkspace-CxLQWUdj.js"));
|
|
7318
7318
|
function OpenFlowSessionGate({ action, description, error, onSubmit, onTokenChange, pending = false, title, token, tokenLabel }) {
|
|
7319
7319
|
const hasToken = token != null && tokenLabel != null && onTokenChange != null;
|
|
7320
7320
|
const tokenValue = token ?? "";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Cr as cn } from "./tooltip-BZ6tpqnr.js";
|
|
2
|
-
import { $t as SelectGroup, Qt as SelectContent, Xt as Select, en as SelectItem, nn as SelectTrigger, rn as SelectValue } from "./dialog-
|
|
2
|
+
import { $t as SelectGroup, Qt as SelectContent, Xt as Select, en as SelectItem, nn as SelectTrigger, rn as SelectValue } from "./dialog-E1WkapJU.js";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
//#region src/workbench/browser/runtime/shell/workbenchSelect.tsx
|
|
5
5
|
function WorkbenchSelect({ ariaLabel, className, disabled = false, id, onValueChange, options, portalRoot, size, value, variant }) {
|