@oomol-lab/open-flow 0.1.0-beta.84 → 0.1.0-beta.86
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-B2g7NceZ.js → FlowCanvas-CHIaMaBv.js} +112 -16
- package/dist/browser/{createResourceDialog-Bi4fUnbD.js → createResourceDialog-C0E5yPe6.js} +3 -3
- package/dist/browser/{dialog-BzoSxhXQ.js → dialog-b3hsdu8i.js} +291 -143
- package/dist/browser/{exportPng-DLdtJvg3.js → exportPng-DGHcejgy.js} +2 -2
- package/dist/browser/{flowChanges-C567g-Pc.js → flowChanges-BvSWezEb.js} +375 -83
- package/dist/browser/{flowWorkspace-DBk4A-Ld.js → flowWorkspace-BKnMRClO.js} +1619 -475
- package/dist/browser/fr-CNTSedYU.js +593 -0
- package/dist/browser/ja-CxQBHr2J.js +593 -0
- package/dist/browser/ko-D1Exiv1h.js +593 -0
- package/dist/browser/licenses.md +1 -1
- package/dist/browser/{markdownContent-DIuJThGK.js → markdownContent-BR9-1ikU.js} +1 -1
- package/dist/browser/preview.css +181 -181
- package/dist/browser/preview.js +2103 -636
- package/dist/browser/ru-BzLZv0B7.js +593 -0
- package/dist/browser/{tooltip-DGj5pudg.js → tooltip-DSBF3bRw.js} +55 -23
- package/dist/browser/workbench.css +181 -181
- package/dist/browser/workbench.js +86 -17
- package/dist/browser/{workbenchSelect-BIaEVTx6.js → workbenchSelect-Di1Bm_-d.js} +2 -2
- package/dist/browser/{wrapLayout-C4moMKgb.js → wrapLayout-B0AT8_-i.js} +1 -1
- package/dist/browser/zh-CN-Dg_xSGde.js +593 -0
- package/dist/browser/zh-TW-oxuLwsV0.js +593 -0
- package/dist/command/index.js +61 -57
- package/dist/command/licenses.md +28 -4
- package/dist/common/authoring.d.ts +5 -5
- package/dist/common/authoringExamples.d.ts +3 -2
- package/dist/common/authoringSchema.d.ts +41 -4
- package/dist/common/catalogCache.d.ts +46 -0
- package/dist/common/connector-action.js +13 -10
- package/dist/common/connector-proxy.d.ts +96 -0
- package/dist/common/connector-proxy.js +5209 -0
- package/dist/common/control-api-conformance.js +312 -46
- package/dist/common/control-api.d.ts +12 -1
- package/dist/common/control-api.js +303 -41
- package/dist/common/control-requests.d.ts +4 -3
- package/dist/common/control-requests.js +14111 -171
- package/dist/common/engine-contract.d.ts +3 -2
- package/dist/common/event-source.js +55 -23
- package/dist/common/flow-authoring-node.d.ts +2 -0
- package/dist/common/flow-authoring.js +6936 -6781
- package/dist/common/flow-change-schema.d.ts +1 -1
- package/dist/common/flow-change.d.ts +2 -2
- package/dist/common/flow-change.js +91 -36
- package/dist/common/flow-connectionUsage.d.ts +1 -1
- package/dist/common/flow-encoding.js +93 -38
- package/dist/common/flow-requestParameters.d.ts +34 -0
- package/dist/common/flow-semantics.js +9429 -9236
- package/dist/common/flow-state.js +55 -23
- package/dist/common/flow-workflowFile.d.ts +3 -1
- package/dist/common/http-request.d.ts +6 -11
- package/dist/common/http-request.js +192 -141
- package/dist/common/licenses.md +1 -1
- package/dist/common/mcp.d.ts +3 -3
- package/dist/common/mcp.js +303 -41
- package/dist/common/run-events.js +1 -0
- package/dist/common/runtime-contract.js +10 -4
- package/dist/common/runtime-nodejs-compat.js +55 -23
- package/dist/common/scheduler-checkpoint.d.ts +3 -3
- package/dist/common/scheduler-dependencies.d.ts +22 -28
- package/dist/common/scheduler-node-execution.d.ts +1 -0
- package/dist/common/scheduler.d.ts +8 -2
- package/dist/common/scheduler.js +274 -95
- package/dist/common/workflow.js +51 -19
- package/dist/common/workflowAuthoring.d.ts +411 -0
- package/dist/render/browser/licenses.md +1 -1
- package/dist/render/browser/runtime.js +289 -61
- package/dist/render/node/index.js +85 -30
- package/dist/render/node/licenses.md +1 -1
- package/package.json +1 -1
- package/skills/open-flow/references/flow-authoring.md +14 -13
- package/src/base/common/jsonSchema.ts +11 -0
- package/src/connector/common/actionSchema.ts +4 -11
- package/src/connector/common/proxy.ts +152 -0
- package/src/control/common/api.ts +99 -3
- package/src/control/common/authoring.ts +23 -9
- package/src/control/common/authoringExamples.ts +9 -0
- package/src/control/common/authoringSchema.ts +21 -12
- package/src/control/common/catalogCache.ts +145 -0
- package/src/control/common/conformance.ts +9 -3
- package/src/control/common/connectorQueries.ts +17 -2
- package/src/control/common/requests.ts +1 -0
- package/src/control/common/workflowAuthoring.ts +120 -0
- package/src/execution/common/checkpoint.ts +18 -12
- package/src/execution/common/dependencies.ts +132 -15
- package/src/execution/common/events.ts +3 -0
- package/src/execution/common/node-execution.ts +22 -15
- package/src/execution/common/scheduler.ts +20 -31
- package/src/flow/common/change.ts +2 -1
- package/src/flow/common/changeSchema.ts +11 -1
- package/src/flow/common/connectionUsage.ts +4 -2
- package/src/flow/common/errorHandling.ts +3 -1
- package/src/flow/common/nodeChanges.ts +35 -18
- package/src/flow/common/requestParameters.ts +120 -0
- package/src/flow/common/semantics.ts +51 -1
- package/src/flow/common/sourceField.ts +3 -2
- package/src/flow/common/workflowFile.ts +2 -2
- package/src/http/common/httpRequest.ts +28 -78
- package/src/runtime/common/engineContract.ts +6 -3
package/dist/browser/preview.js
CHANGED
|
@@ -6636,6 +6636,76 @@ function _e(e) {
|
|
|
6636
6636
|
}
|
|
6637
6637
|
/*! For license information please see dagre.esm.js.LEGAL.txt */
|
|
6638
6638
|
//#endregion
|
|
6639
|
+
//#region src/canvas/browser/base/routeCrossings.ts
|
|
6640
|
+
var epsilon = 1e-6;
|
|
6641
|
+
function samePoint(a, b) {
|
|
6642
|
+
return Math.abs(a.x - b.x) < epsilon && Math.abs(a.y - b.y) < epsilon;
|
|
6643
|
+
}
|
|
6644
|
+
function segment(a, b) {
|
|
6645
|
+
return {
|
|
6646
|
+
left: Math.min(a.x, b.x),
|
|
6647
|
+
right: Math.max(a.x, b.x),
|
|
6648
|
+
top: Math.min(a.y, b.y),
|
|
6649
|
+
bottom: Math.max(a.y, b.y)
|
|
6650
|
+
};
|
|
6651
|
+
}
|
|
6652
|
+
/** Allow only the common prefix/suffix, not later crossings between the same edges. */
|
|
6653
|
+
function sharedEnd(a, b, overlap, reverse) {
|
|
6654
|
+
const step = reverse ? -1 : 1;
|
|
6655
|
+
let i = reverse ? a.length - 1 : 0;
|
|
6656
|
+
let j = reverse ? b.length - 1 : 0;
|
|
6657
|
+
let start = a[i];
|
|
6658
|
+
if (!samePoint(start, b[j])) return false;
|
|
6659
|
+
if (Math.abs(overlap.left - start.x) < epsilon && Math.abs(overlap.right - start.x) < epsilon && Math.abs(overlap.top - start.y) < epsilon && Math.abs(overlap.bottom - start.y) < epsilon) return true;
|
|
6660
|
+
while (a[i + step] && b[j + step]) {
|
|
6661
|
+
const endA = a[i + step];
|
|
6662
|
+
const endB = b[j + step];
|
|
6663
|
+
const vertical = Math.abs(endA.x - start.x) < epsilon;
|
|
6664
|
+
const otherVertical = Math.abs(endB.x - start.x) < epsilon;
|
|
6665
|
+
const directionA = vertical ? endA.y - start.y : endA.x - start.x;
|
|
6666
|
+
const directionB = vertical ? endB.y - start.y : endB.x - start.x;
|
|
6667
|
+
if (vertical !== otherVertical || directionA * directionB < 0) return false;
|
|
6668
|
+
const end = Math.abs(directionA) <= Math.abs(directionB) ? endA : endB;
|
|
6669
|
+
const common = segment(start, end);
|
|
6670
|
+
if (overlap.left >= common.left - epsilon && overlap.right <= common.right + epsilon && overlap.top >= common.top - epsilon && overlap.bottom <= common.bottom + epsilon) return true;
|
|
6671
|
+
if (samePoint(end, endA)) i += step;
|
|
6672
|
+
if (samePoint(end, endB)) j += step;
|
|
6673
|
+
start = end;
|
|
6674
|
+
}
|
|
6675
|
+
return false;
|
|
6676
|
+
}
|
|
6677
|
+
/** Check orthogonal routes once after layout; stop at the first unrelated contact or overlap. */
|
|
6678
|
+
function hasRouteCrossings(routes) {
|
|
6679
|
+
const paths = [...routes.values()].map((points) => {
|
|
6680
|
+
const path = points.filter((point, index) => index === 0 || !samePoint(point, points[index - 1]));
|
|
6681
|
+
return {
|
|
6682
|
+
path,
|
|
6683
|
+
segments: path.slice(1).map((point, index) => segment(path[index], point))
|
|
6684
|
+
};
|
|
6685
|
+
});
|
|
6686
|
+
for (let i = 0; i < paths.length; i++) {
|
|
6687
|
+
const a = paths[i];
|
|
6688
|
+
for (let j = i + 1; j < paths.length; j++) {
|
|
6689
|
+
const b = paths[j];
|
|
6690
|
+
for (const first of a.segments) for (const second of b.segments) {
|
|
6691
|
+
const left = Math.max(first.left, second.left);
|
|
6692
|
+
const right = Math.min(first.right, second.right);
|
|
6693
|
+
const top = Math.max(first.top, second.top);
|
|
6694
|
+
const bottom = Math.min(first.bottom, second.bottom);
|
|
6695
|
+
if (left > right + epsilon || top > bottom + epsilon) continue;
|
|
6696
|
+
const overlap = {
|
|
6697
|
+
left,
|
|
6698
|
+
right,
|
|
6699
|
+
top,
|
|
6700
|
+
bottom
|
|
6701
|
+
};
|
|
6702
|
+
if (!sharedEnd(a.path, b.path, overlap, false) && !sharedEnd(a.path, b.path, overlap, true)) return true;
|
|
6703
|
+
}
|
|
6704
|
+
}
|
|
6705
|
+
}
|
|
6706
|
+
return false;
|
|
6707
|
+
}
|
|
6708
|
+
//#endregion
|
|
6639
6709
|
//#region src/canvas/browser/base/routeLayout.ts
|
|
6640
6710
|
var clearance = 16;
|
|
6641
6711
|
var portOffset = 24;
|
|
@@ -7041,19 +7111,26 @@ function compactComponent(graph, insets, aspectRatio) {
|
|
|
7041
7111
|
const gap = 48;
|
|
7042
7112
|
const pathNodes = normalized.filter((node) => incoming.has(node.id) || outgoing.has(node.id));
|
|
7043
7113
|
const crossSize = Math.max(...(pathNodes.length ? pathNodes : normalized).map((node) => node.height));
|
|
7044
|
-
const bow = crossSize * .
|
|
7045
|
-
const separation = crossSize +
|
|
7114
|
+
const bow = crossSize * .5;
|
|
7115
|
+
const separation = crossSize + bow + gap;
|
|
7046
7116
|
const bucketSize = Math.max(...normalized.map((node) => node.width)) + gap;
|
|
7047
7117
|
const byId = new Map(normalized.map((node) => [node.id, node]));
|
|
7048
7118
|
const forwardEdges = graph.edges.filter((edge) => byId.get(edge.source).column < byId.get(edge.target).column);
|
|
7049
7119
|
const parents = Map.groupBy(forwardEdges, (edge) => edge.target);
|
|
7050
7120
|
const children = Map.groupBy(forwardEdges, (edge) => edge.source);
|
|
7051
7121
|
const ordered = normalized.toSorted((a, b) => a.column - b.column || a.y - b.y);
|
|
7052
|
-
const remaining = /* @__PURE__ */ new Map();
|
|
7053
|
-
for (const node of ordered.toReversed()) remaining.set(node.id, 1 + Math.max(0, ...(children.get(node.id) ?? []).filter((edge) => parents.get(edge.target)?.length === 1).map((edge) => remaining.get(edge.target))));
|
|
7054
7122
|
const rankEnds = new Map([...Map.groupBy(normalized, (node) => node.column)].map(([rank, nodes]) => [rank, Math.max(...nodes.map((node) => node.x + node.width))]));
|
|
7123
|
+
const remaining = /* @__PURE__ */ new Map();
|
|
7124
|
+
for (const node of ordered.toReversed()) {
|
|
7125
|
+
const next = (children.get(node.id) ?? []).filter((edge) => parents.get(edge.target)?.length === 1).map((edge) => remaining.get(edge.target));
|
|
7126
|
+
remaining.set(node.id, {
|
|
7127
|
+
count: 1 + Math.max(0, ...next.map((path) => path.count)),
|
|
7128
|
+
size: Math.max(node.width, ...next.map((path) => rankEnds.get(node.column) - node.x + gap + path.size))
|
|
7129
|
+
});
|
|
7130
|
+
}
|
|
7055
7131
|
const spans = /* @__PURE__ */ new Set([Infinity, ...rankEnds.values()]);
|
|
7056
|
-
|
|
7132
|
+
const layouts = [];
|
|
7133
|
+
let unfolded;
|
|
7057
7134
|
for (const span of spans) {
|
|
7058
7135
|
const placed = /* @__PURE__ */ new Map();
|
|
7059
7136
|
const buckets = /* @__PURE__ */ new Map();
|
|
@@ -7075,10 +7152,15 @@ function compactComponent(graph, insets, aspectRatio) {
|
|
|
7075
7152
|
} else if (parent) {
|
|
7076
7153
|
shift = parent.shift;
|
|
7077
7154
|
start = parent.start;
|
|
7155
|
+
const length = primary - start + remaining.get(original.id).size;
|
|
7156
|
+
const capacity = Math.max(original.width, span - start);
|
|
7157
|
+
const runs = Math.max(1, Math.ceil((length + gap) / (capacity + gap)));
|
|
7158
|
+
const end = start + (length + gap) / runs - gap;
|
|
7159
|
+
const midpoint = (parent.node.x + parent.node.width + primary + original.width) / 2;
|
|
7078
7160
|
if ((children.get(parent.node.id)?.length ?? 0) > 1) {
|
|
7079
7161
|
shift = parent.node.y - byId.get(parent.node.id).y;
|
|
7080
7162
|
start = primary;
|
|
7081
|
-
} else if (
|
|
7163
|
+
} else if (midpoint > end + 1e-6 && remaining.get(original.id).count > 2) {
|
|
7082
7164
|
primary = Math.max(0, start - span / 3);
|
|
7083
7165
|
shift = parent.shift + side * separation;
|
|
7084
7166
|
start = primary;
|
|
@@ -7107,7 +7189,7 @@ function compactComponent(graph, insets, aspectRatio) {
|
|
|
7107
7189
|
order: placed.size,
|
|
7108
7190
|
shift: node.y - original.y - drift,
|
|
7109
7191
|
start,
|
|
7110
|
-
extent: Math.max(node.x + node.width, ...upstream.map((entry) => entry.extent))
|
|
7192
|
+
extent: Math.max(node.x + node.width, parent && node.x < parent.node.x ? parent.node.x + parent.node.width + gap : 0, ...upstream.map((entry) => entry.extent))
|
|
7111
7193
|
};
|
|
7112
7194
|
placed.set(node.id, placement);
|
|
7113
7195
|
for (let bucket = firstBucket; bucket <= lastBucket; bucket++) {
|
|
@@ -7121,23 +7203,37 @@ function compactComponent(graph, insets, aspectRatio) {
|
|
|
7121
7203
|
const width = extent.height + insets.width + 48;
|
|
7122
7204
|
const height = extent.width + insets.height + 48;
|
|
7123
7205
|
const area = width * height;
|
|
7124
|
-
const
|
|
7125
|
-
if (!best || score < best.score - 1e-9 || Math.abs(score - best.score) < 1e-9 && (area < best.area || area === best.area && turns < best.turns)) best = {
|
|
7206
|
+
const candidate = {
|
|
7126
7207
|
nodes,
|
|
7127
|
-
score,
|
|
7208
|
+
score: Math.max(width / aspectRatio, height),
|
|
7128
7209
|
area,
|
|
7129
7210
|
turns
|
|
7130
7211
|
};
|
|
7212
|
+
if (span === Infinity) unfolded = candidate;
|
|
7213
|
+
layouts.push(candidate);
|
|
7214
|
+
layouts.sort((a, b) => Math.abs(a.score - b.score) >= 1e-9 ? a.score - b.score : a.area - b.area || a.turns - b.turns);
|
|
7215
|
+
if (layouts.length > 2) layouts.pop();
|
|
7131
7216
|
}
|
|
7132
|
-
const
|
|
7217
|
+
const edges = graph.edges.map((edge) => Object.assign({}, edge, {
|
|
7133
7218
|
sourceOffset: edge.sourceOffset && layoutAxes(edge.sourceOffset, "vertical"),
|
|
7134
7219
|
targetOffset: edge.targetOffset && layoutAxes(edge.targetOffset, "vertical")
|
|
7135
|
-
}))
|
|
7220
|
+
}));
|
|
7221
|
+
if (!layouts.includes(unfolded)) layouts.push(unfolded);
|
|
7222
|
+
let best;
|
|
7223
|
+
for (const candidate of layouts) {
|
|
7224
|
+
const routes = routeLayout(candidate.nodes, edges);
|
|
7225
|
+
const crosses = hasRouteCrossings(routes);
|
|
7226
|
+
if (!best || !crosses) best = {
|
|
7227
|
+
nodes: candidate.nodes,
|
|
7228
|
+
routes
|
|
7229
|
+
};
|
|
7230
|
+
if (!crosses) break;
|
|
7231
|
+
}
|
|
7136
7232
|
const physicalNodes = best.nodes.map((node) => Object.assign({}, node, layoutAxes(node, "vertical"), {
|
|
7137
7233
|
width: node.height,
|
|
7138
7234
|
height: node.width
|
|
7139
7235
|
}));
|
|
7140
|
-
const physicalRoutes = new Map([...routes].map(([id, points]) => [id, points.map((point) => layoutAxes(point, "vertical"))]));
|
|
7236
|
+
const physicalRoutes = new Map([...best.routes].map(([id, points]) => [id, points.map((point) => layoutAxes(point, "vertical"))]));
|
|
7141
7237
|
return {
|
|
7142
7238
|
positions: Object.fromEntries(physicalNodes.map(({ id, x, y }) => [id, {
|
|
7143
7239
|
x,
|
|
@@ -48092,7 +48188,7 @@ function getAddItemId(dataTransfer) {
|
|
|
48092
48188
|
return dataTransfer.getData(ADD_ITEM_KEY);
|
|
48093
48189
|
}
|
|
48094
48190
|
//#endregion
|
|
48095
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
48191
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/util.js
|
|
48096
48192
|
function getEnumValues(entries) {
|
|
48097
48193
|
const numericValues = Object.values(entries).filter((v) => typeof v === "number");
|
|
48098
48194
|
return Object.entries(entries).filter(([k, _]) => numericValues.indexOf(+k) === -1).map(([_, v]) => v);
|
|
@@ -48118,7 +48214,7 @@ var Cached = class {
|
|
|
48118
48214
|
return this._value;
|
|
48119
48215
|
}
|
|
48120
48216
|
};
|
|
48121
|
-
function cached(getter) {
|
|
48217
|
+
function cached$1(getter) {
|
|
48122
48218
|
return new Cached(getter);
|
|
48123
48219
|
}
|
|
48124
48220
|
function nullish(input) {
|
|
@@ -48232,7 +48328,7 @@ var captureStackTrace = "captureStackTrace" in Error ? Error.captureStackTrace :
|
|
|
48232
48328
|
function isObject(data) {
|
|
48233
48329
|
return typeof data === "object" && data !== null && !Array.isArray(data);
|
|
48234
48330
|
}
|
|
48235
|
-
var allowsEval = /* @__PURE__*/ cached(() => {
|
|
48331
|
+
var allowsEval = /* @__PURE__*/ cached$1(() => {
|
|
48236
48332
|
if (globalConfig.jitless) return false;
|
|
48237
48333
|
if (typeof navigator !== "undefined" && navigator?.userAgent?.includes("Cloudflare")) return false;
|
|
48238
48334
|
try {
|
|
@@ -48417,6 +48513,17 @@ function prefixIssues(path, issues) {
|
|
|
48417
48513
|
function unwrapMessage(message) {
|
|
48418
48514
|
return typeof message === "string" ? message : message?.message;
|
|
48419
48515
|
}
|
|
48516
|
+
/** The leading size checks of `defChecks` that set an upper bound, each paired with it. */
|
|
48517
|
+
function sizeCaps(defChecks) {
|
|
48518
|
+
const caps = [];
|
|
48519
|
+
for (const ch of defChecks ?? []) {
|
|
48520
|
+
const d = ch._zod.def;
|
|
48521
|
+
if (!/_(length|size)$|_equals$/.test(d.check)) break;
|
|
48522
|
+
const max = d.maximum ?? d.length ?? d.size;
|
|
48523
|
+
if (max >= 0) caps.push([max, ch]);
|
|
48524
|
+
}
|
|
48525
|
+
return caps;
|
|
48526
|
+
}
|
|
48420
48527
|
function attachSchema(issues, start, inst) {
|
|
48421
48528
|
var _a;
|
|
48422
48529
|
for (let i = start; i < issues.length; i++) (_a = issues[i]).schema ?? (_a.schema = inst);
|
|
@@ -48633,7 +48740,7 @@ function constantCatch(value) {
|
|
|
48633
48740
|
return fn;
|
|
48634
48741
|
}
|
|
48635
48742
|
//#endregion
|
|
48636
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
48743
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/core.js
|
|
48637
48744
|
var _a$1;
|
|
48638
48745
|
var _zodDesc = {
|
|
48639
48746
|
value: void 0,
|
|
@@ -48739,7 +48846,7 @@ function config(newConfig) {
|
|
|
48739
48846
|
return globalConfig;
|
|
48740
48847
|
}
|
|
48741
48848
|
//#endregion
|
|
48742
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
48849
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/errors.js
|
|
48743
48850
|
function _getMessage() {
|
|
48744
48851
|
const internals = this._zod;
|
|
48745
48852
|
internals.message ?? (internals.message = JSON.stringify(internals.def, jsonStringifyReplacer, 2));
|
|
@@ -48855,7 +48962,7 @@ function formatError(error, mapper = (issue) => issue.message) {
|
|
|
48855
48962
|
return fieldErrors;
|
|
48856
48963
|
}
|
|
48857
48964
|
//#endregion
|
|
48858
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
48965
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/parse.js
|
|
48859
48966
|
function finalizeParams(callee, params) {
|
|
48860
48967
|
return {
|
|
48861
48968
|
callee: params?.callee ?? callee,
|
|
@@ -49058,7 +49165,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
|
|
|
49058
49165
|
return _safeParseAsync(_Err)(schema, value, _ctx);
|
|
49059
49166
|
};
|
|
49060
49167
|
//#endregion
|
|
49061
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
49168
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/regexes.js
|
|
49062
49169
|
/**
|
|
49063
49170
|
* @deprecated CUID v1 is deprecated by its authors due to information leakage
|
|
49064
49171
|
* (timestamps embedded in the id). Use {@link cuid2} instead.
|
|
@@ -49131,7 +49238,7 @@ var _null$2 = /^null$/i;
|
|
|
49131
49238
|
var lowercase = /^[^A-Z]*$/;
|
|
49132
49239
|
var uppercase = /^[^a-z]*$/;
|
|
49133
49240
|
//#endregion
|
|
49134
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
49241
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/checks.js
|
|
49135
49242
|
var $ZodCheck = /*@__PURE__*/ $constructor("$ZodCheck", (inst, def) => {
|
|
49136
49243
|
var _a;
|
|
49137
49244
|
inst._zod ?? (inst._zod = {});
|
|
@@ -49427,7 +49534,7 @@ var $ZodCheckOverwrite = /*@__PURE__*/ $constructor("$ZodCheckOverwrite", (inst,
|
|
|
49427
49534
|
};
|
|
49428
49535
|
});
|
|
49429
49536
|
//#endregion
|
|
49430
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
49537
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/doc.js
|
|
49431
49538
|
var Doc = class {
|
|
49432
49539
|
constructor(args = [], closed = {}) {
|
|
49433
49540
|
this.content = [];
|
|
@@ -49461,14 +49568,14 @@ var Doc = class {
|
|
|
49461
49568
|
}
|
|
49462
49569
|
};
|
|
49463
49570
|
//#endregion
|
|
49464
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
49571
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/versions.js
|
|
49465
49572
|
var version = {
|
|
49466
49573
|
major: 4,
|
|
49467
49574
|
minor: 6,
|
|
49468
|
-
patch:
|
|
49575
|
+
patch: 7
|
|
49469
49576
|
};
|
|
49470
49577
|
//#endregion
|
|
49471
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
49578
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/schemas.js
|
|
49472
49579
|
var $ZodType = /*@__PURE__*/ $constructor("$ZodType", (inst, def) => {
|
|
49473
49580
|
var _a;
|
|
49474
49581
|
inst ?? (inst = {});
|
|
@@ -49981,6 +50088,26 @@ var $ZodNever = /*@__PURE__*/ $constructor("$ZodNever", (inst, def) => {
|
|
|
49981
50088
|
return payload;
|
|
49982
50089
|
};
|
|
49983
50090
|
});
|
|
50091
|
+
function capSize(inst, size) {
|
|
50092
|
+
const caps = sizeCaps(inst._zod.def.checks);
|
|
50093
|
+
if (!caps.length) return;
|
|
50094
|
+
const cap = Math.min(...caps.map((c) => c[0]));
|
|
50095
|
+
const parse = inst._zod.parse;
|
|
50096
|
+
inst._zod.parse = (payload, ctx) => {
|
|
50097
|
+
const n = size(payload.value);
|
|
50098
|
+
if (n > cap && !ctx?.skipChecks && ctx?.direction !== "backward") {
|
|
50099
|
+
for (const [max, ch] of sizeCaps(inst._zod.def.checks)) if (n > max && ch._zod.def.when(payload)) {
|
|
50100
|
+
const start = payload.issues.length;
|
|
50101
|
+
ch._zod.check(payload);
|
|
50102
|
+
payload.issues[start].continue = false;
|
|
50103
|
+
attachSchema(payload.issues, start, inst);
|
|
50104
|
+
return payload;
|
|
50105
|
+
}
|
|
50106
|
+
}
|
|
50107
|
+
return parse(payload, ctx);
|
|
50108
|
+
};
|
|
50109
|
+
}
|
|
50110
|
+
var arraySize = (input) => Array.isArray(input) ? input.length : -1;
|
|
49984
50111
|
function handleArrayResult(result, final, index) {
|
|
49985
50112
|
if (result.issues.length) final.issues.push(...prefixIssues(index, result.issues));
|
|
49986
50113
|
final.value[index] = result.value;
|
|
@@ -50018,6 +50145,7 @@ var $ZodArray = /*@__PURE__*/ $constructor("$ZodArray", (inst, def) => {
|
|
|
50018
50145
|
if (proms.length) return Promise.all(proms).then(() => payload);
|
|
50019
50146
|
return payload;
|
|
50020
50147
|
};
|
|
50148
|
+
capSize(inst, arraySize);
|
|
50021
50149
|
});
|
|
50022
50150
|
function handlePropertyResult(result, final, key, input, optin, optout) {
|
|
50023
50151
|
const isPresent = key in input;
|
|
@@ -50112,7 +50240,7 @@ var $ZodObject = /*@__PURE__*/ $constructor("$ZodObject", (inst, def) => {
|
|
|
50112
50240
|
get.raw = sh;
|
|
50113
50241
|
Object.defineProperty(def, "shape", { get });
|
|
50114
50242
|
}
|
|
50115
|
-
const _normalized = cached(() => normalizeDef(def));
|
|
50243
|
+
const _normalized = cached$1(() => normalizeDef(def));
|
|
50116
50244
|
defineLazyInternal(inst, "propValues", (zod) => {
|
|
50117
50245
|
const shape = zod.def.shape;
|
|
50118
50246
|
const propValues = {};
|
|
@@ -50126,7 +50254,7 @@ var $ZodObject = /*@__PURE__*/ $constructor("$ZodObject", (inst, def) => {
|
|
|
50126
50254
|
}
|
|
50127
50255
|
return propValues;
|
|
50128
50256
|
});
|
|
50129
|
-
const isObject$
|
|
50257
|
+
const isObject$2 = isObject;
|
|
50130
50258
|
const catchall = def.catchall;
|
|
50131
50259
|
let value;
|
|
50132
50260
|
const memo = globalConfig.memoizer;
|
|
@@ -50134,7 +50262,7 @@ var $ZodObject = /*@__PURE__*/ $constructor("$ZodObject", (inst, def) => {
|
|
|
50134
50262
|
inst._zod.parse = (payload, ctx) => {
|
|
50135
50263
|
value ?? (value = _normalized.value);
|
|
50136
50264
|
const input = payload.value;
|
|
50137
|
-
if (!isObject$
|
|
50265
|
+
if (!isObject$2(input)) {
|
|
50138
50266
|
payload.issues.push({
|
|
50139
50267
|
expected: "object",
|
|
50140
50268
|
code: "invalid_type",
|
|
@@ -50171,7 +50299,7 @@ var $ZodObject = /*@__PURE__*/ $constructor("$ZodObject", (inst, def) => {
|
|
|
50171
50299
|
var $ZodObjectJIT = /*@__PURE__*/ $constructor("$ZodObjectJIT", (inst, def) => {
|
|
50172
50300
|
$ZodObject.init(inst, def);
|
|
50173
50301
|
const superParse = inst._zod.parse;
|
|
50174
|
-
const _normalized = cached(() => normalizeDef(def));
|
|
50302
|
+
const _normalized = cached$1(() => normalizeDef(def));
|
|
50175
50303
|
const memo = globalConfig.memoizer;
|
|
50176
50304
|
const generateFastpass = (shape) => {
|
|
50177
50305
|
const normalized = _normalized.value;
|
|
@@ -50264,7 +50392,7 @@ var $ZodObjectJIT = /*@__PURE__*/ $constructor("$ZodObjectJIT", (inst, def) => {
|
|
|
50264
50392
|
return doc.compile();
|
|
50265
50393
|
};
|
|
50266
50394
|
let fastpass;
|
|
50267
|
-
const isObject$
|
|
50395
|
+
const isObject$3 = isObject;
|
|
50268
50396
|
const jit = !globalConfig.jitless;
|
|
50269
50397
|
const fastEnabled = jit && allowsEval.value;
|
|
50270
50398
|
const catchall = def.catchall;
|
|
@@ -50272,7 +50400,7 @@ var $ZodObjectJIT = /*@__PURE__*/ $constructor("$ZodObjectJIT", (inst, def) => {
|
|
|
50272
50400
|
inst._zod.parse = (payload, ctx) => {
|
|
50273
50401
|
value ?? (value = _normalized.value);
|
|
50274
50402
|
const input = payload.value;
|
|
50275
|
-
if (!isObject$
|
|
50403
|
+
if (!isObject$3(input)) {
|
|
50276
50404
|
payload.issues.push({
|
|
50277
50405
|
expected: "object",
|
|
50278
50406
|
code: "invalid_type",
|
|
@@ -50380,7 +50508,7 @@ var $ZodDiscriminatedUnion = /*@__PURE__*/ $constructor("$ZodDiscriminatedUnion"
|
|
|
50380
50508
|
const propShape = rawShape(option._zod.def);
|
|
50381
50509
|
if (propShape && !Object.prototype.hasOwnProperty.call(propShape, def.discriminator)) throw new Error(`Invalid discriminated union option at index "${i}"`);
|
|
50382
50510
|
});
|
|
50383
|
-
const disc = cached(() => discriminatorMap(def));
|
|
50511
|
+
const disc = cached$1(() => discriminatorMap(def));
|
|
50384
50512
|
inst._zod.parse = (payload, ctx) => {
|
|
50385
50513
|
const input = payload.value;
|
|
50386
50514
|
if (!isObject(input)) {
|
|
@@ -50936,7 +51064,7 @@ function handleRefineResult(result, payload, input, inst) {
|
|
|
50936
51064
|
}
|
|
50937
51065
|
}
|
|
50938
51066
|
//#endregion
|
|
50939
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
51067
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/memoizer.js
|
|
50940
51068
|
var $ZodCyclicError = class extends Error {
|
|
50941
51069
|
constructor() {
|
|
50942
51070
|
super(`Cannot parse a reference cycle that closes through a transform`);
|
|
@@ -51189,7 +51317,7 @@ function isBackEdge(ctx, value) {
|
|
|
51189
51317
|
return backEdges !== void 0 && isRef(value) && backEdges.has(value);
|
|
51190
51318
|
}
|
|
51191
51319
|
//#endregion
|
|
51192
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
51320
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/locales/en.js
|
|
51193
51321
|
var error$1 = () => {
|
|
51194
51322
|
const Sizable = {
|
|
51195
51323
|
string: {
|
|
@@ -51297,7 +51425,7 @@ function en_default$2() {
|
|
|
51297
51425
|
return { localeError: error$1() };
|
|
51298
51426
|
}
|
|
51299
51427
|
//#endregion
|
|
51300
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
51428
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/registries.js
|
|
51301
51429
|
var _a;
|
|
51302
51430
|
var $ZodRegistry = class {
|
|
51303
51431
|
constructor() {
|
|
@@ -51344,7 +51472,7 @@ function registry() {
|
|
|
51344
51472
|
(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());
|
|
51345
51473
|
var globalRegistry = globalThis.__zod_globalRegistry;
|
|
51346
51474
|
//#endregion
|
|
51347
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
51475
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/api.js
|
|
51348
51476
|
function snapshotChecks(def) {
|
|
51349
51477
|
if (def.checks) def.checks = [...def.checks];
|
|
51350
51478
|
return def;
|
|
@@ -51860,7 +51988,7 @@ function _check(fn, params) {
|
|
|
51860
51988
|
return ch;
|
|
51861
51989
|
}
|
|
51862
51990
|
//#endregion
|
|
51863
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
51991
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/to-json-schema.js
|
|
51864
51992
|
function assignProps(target, ...sources) {
|
|
51865
51993
|
for (const source of sources) for (const key of Reflect.ownKeys(source)) if (Object.prototype.propertyIsEnumerable.call(source, key)) assignProp(target, key, source[key]);
|
|
51866
51994
|
return target;
|
|
@@ -52304,7 +52432,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
|
|
|
52304
52432
|
return finalize(ctx, schema);
|
|
52305
52433
|
};
|
|
52306
52434
|
//#endregion
|
|
52307
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
52435
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/core/json-schema-processors.js
|
|
52308
52436
|
var narrowMin = (agg, key, value) => {
|
|
52309
52437
|
if (agg[key] === void 0 || value > agg[key]) agg[key] = value;
|
|
52310
52438
|
};
|
|
@@ -52765,7 +52893,7 @@ var lazyProcessor = (schema, ctx, _json, params) => {
|
|
|
52765
52893
|
seen.ref = innerType;
|
|
52766
52894
|
};
|
|
52767
52895
|
//#endregion
|
|
52768
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
52896
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/errors.js
|
|
52769
52897
|
var _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);
|
|
52770
52898
|
function _lazyMethod(proto, key, make) {
|
|
52771
52899
|
Object.defineProperty(proto, key, {
|
|
@@ -52815,7 +52943,7 @@ var initializer = (inst, issues) => {
|
|
|
52815
52943
|
};
|
|
52816
52944
|
var ZodRealError = /*@__PURE__*/ $constructor("ZodError", initializer, void 0, { Parent: Error });
|
|
52817
52945
|
//#endregion
|
|
52818
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
52946
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/parse.js
|
|
52819
52947
|
var parse = /* @__PURE__ */ _parse(ZodRealError);
|
|
52820
52948
|
var parseAsync = /* @__PURE__ */ _parseAsync(ZodRealError);
|
|
52821
52949
|
var safeParse = /* @__PURE__ */ _safeParse(ZodRealError);
|
|
@@ -52829,7 +52957,7 @@ var safeDecode = /* @__PURE__ */ _safeDecode(ZodRealError);
|
|
|
52829
52957
|
var safeEncodeAsync = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
|
|
52830
52958
|
var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
|
|
52831
52959
|
//#endregion
|
|
52832
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
52960
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/schemas.js
|
|
52833
52961
|
function _ensureDefaultLocale() {
|
|
52834
52962
|
if (!globalConfig.localeError) config(en_default$2());
|
|
52835
52963
|
}
|
|
@@ -53761,7 +53889,7 @@ function preprocess(fn, schema) {
|
|
|
53761
53889
|
});
|
|
53762
53890
|
}
|
|
53763
53891
|
//#endregion
|
|
53764
|
-
//#region ../../node_modules/.bun/zod@4.6.
|
|
53892
|
+
//#region ../../node_modules/.bun/zod@4.6.7/node_modules/zod/v4/classic/iso.js
|
|
53765
53893
|
function datetime(params) {
|
|
53766
53894
|
return /* @__PURE__ */ _isoDateTime(ZodISODateTime, params);
|
|
53767
53895
|
}
|
|
@@ -56145,6 +56273,882 @@ function FlowCanvasView(props) {
|
|
|
56145
56273
|
}, props.identity);
|
|
56146
56274
|
}
|
|
56147
56275
|
//#endregion
|
|
56276
|
+
//#region src/trigger/providers/fieldDescriptions.ts
|
|
56277
|
+
var driveChangesConfig = {
|
|
56278
|
+
driveId: "Shared drive ID. Leave empty to monitor the connected account.",
|
|
56279
|
+
includeCorpusRemovals: "Include the accessible file resource when an item leaves the change corpus.",
|
|
56280
|
+
includeItemsFromAllDrives: "Include items from My Drive and shared drives.",
|
|
56281
|
+
includeRemoved: "Include changes caused by deletion or loss of access.",
|
|
56282
|
+
pageSize: "Maximum number of changes read per page.",
|
|
56283
|
+
restrictToMyDrive: "Restrict changes to the My Drive hierarchy."
|
|
56284
|
+
};
|
|
56285
|
+
var englishTriggerFieldDescriptions = {
|
|
56286
|
+
"jira.on_issue_event": {
|
|
56287
|
+
configInputs: {
|
|
56288
|
+
sourceId: "Event source",
|
|
56289
|
+
eventTypes: "Events"
|
|
56290
|
+
},
|
|
56291
|
+
outputs: {
|
|
56292
|
+
event: "Event type",
|
|
56293
|
+
deliveryId: "Notification ID",
|
|
56294
|
+
cloudId: "Cloud site ID",
|
|
56295
|
+
issueId: "Issue ID",
|
|
56296
|
+
body: "Original event"
|
|
56297
|
+
}
|
|
56298
|
+
},
|
|
56299
|
+
"fireflies.on_meeting_ready": {
|
|
56300
|
+
configInputs: {
|
|
56301
|
+
sourceId: "Event source",
|
|
56302
|
+
eventTypes: "Events"
|
|
56303
|
+
},
|
|
56304
|
+
outputs: {
|
|
56305
|
+
event: "Event type",
|
|
56306
|
+
deliveryId: "Notification ID",
|
|
56307
|
+
accountId: "Account ID",
|
|
56308
|
+
meetingId: "Meeting / transcript ID",
|
|
56309
|
+
body: "Original object"
|
|
56310
|
+
}
|
|
56311
|
+
},
|
|
56312
|
+
"zoom.on_recording_ready": {
|
|
56313
|
+
configInputs: {
|
|
56314
|
+
sourceId: "Event source",
|
|
56315
|
+
eventTypes: "Events"
|
|
56316
|
+
},
|
|
56317
|
+
outputs: {
|
|
56318
|
+
event: "Event type",
|
|
56319
|
+
deliveryId: "Notification ID",
|
|
56320
|
+
accountId: "Zoom account ID",
|
|
56321
|
+
meetingUuid: "Meeting instance UUID",
|
|
56322
|
+
body: "Original object"
|
|
56323
|
+
}
|
|
56324
|
+
},
|
|
56325
|
+
"sentry.on_issue_alert": {
|
|
56326
|
+
configInputs: {
|
|
56327
|
+
sourceId: "Event source",
|
|
56328
|
+
eventTypes: "Events",
|
|
56329
|
+
projectIds: "Project IDs; empty includes all projects in the installation.",
|
|
56330
|
+
ruleNames: "Exact alert rule labels; empty includes all rules."
|
|
56331
|
+
},
|
|
56332
|
+
outputs: {
|
|
56333
|
+
event: "Event type",
|
|
56334
|
+
deliveryId: "Notification ID",
|
|
56335
|
+
organizationId: "Organization ID",
|
|
56336
|
+
issueId: "Issue ID",
|
|
56337
|
+
body: "Original object"
|
|
56338
|
+
}
|
|
56339
|
+
},
|
|
56340
|
+
"intercom.on_conversation_event": {
|
|
56341
|
+
configInputs: {
|
|
56342
|
+
sourceId: "Event source",
|
|
56343
|
+
eventTypes: "Events"
|
|
56344
|
+
},
|
|
56345
|
+
outputs: {
|
|
56346
|
+
event: "Event type",
|
|
56347
|
+
deliveryId: "Notification ID",
|
|
56348
|
+
workspaceId: "Workspace ID",
|
|
56349
|
+
objectId: "Conversation or ticket ID",
|
|
56350
|
+
body: "Original object"
|
|
56351
|
+
}
|
|
56352
|
+
},
|
|
56353
|
+
"slackbot.on_event": {
|
|
56354
|
+
configInputs: {
|
|
56355
|
+
sourceId: "Event source",
|
|
56356
|
+
eventTypes: "Events",
|
|
56357
|
+
channelIds: "Channel IDs; empty means all source channels."
|
|
56358
|
+
},
|
|
56359
|
+
outputs: {
|
|
56360
|
+
event: "Event type",
|
|
56361
|
+
deliveryId: "Event ID",
|
|
56362
|
+
appId: "Slack app ID",
|
|
56363
|
+
teamId: "Workspace ID",
|
|
56364
|
+
channel: "Conversation ID",
|
|
56365
|
+
user: "User ID",
|
|
56366
|
+
text: "Message text",
|
|
56367
|
+
ts: "Message timestamp",
|
|
56368
|
+
threadTs: "Parent thread timestamp, when present.",
|
|
56369
|
+
body: "Original Slack event"
|
|
56370
|
+
}
|
|
56371
|
+
},
|
|
56372
|
+
"asana.on_task_event": {
|
|
56373
|
+
configInputs: {
|
|
56374
|
+
projectId: "Project ID",
|
|
56375
|
+
eventTypes: "Events",
|
|
56376
|
+
customFieldId: "Custom field ID"
|
|
56377
|
+
},
|
|
56378
|
+
outputs: {
|
|
56379
|
+
projectId: "Project ID",
|
|
56380
|
+
events: "Matching events in this delivery."
|
|
56381
|
+
}
|
|
56382
|
+
},
|
|
56383
|
+
"calendly.on_booking_event": {
|
|
56384
|
+
configInputs: {
|
|
56385
|
+
scope: "Scope",
|
|
56386
|
+
eventTypes: "Events"
|
|
56387
|
+
},
|
|
56388
|
+
outputs: {
|
|
56389
|
+
event: "Business event type.",
|
|
56390
|
+
inviteeUri: "Invitee URI",
|
|
56391
|
+
createdAt: "Event timestamp.",
|
|
56392
|
+
body: "Original event data."
|
|
56393
|
+
}
|
|
56394
|
+
},
|
|
56395
|
+
"clickup.on_task_event": {
|
|
56396
|
+
configInputs: {
|
|
56397
|
+
workspaceId: "Workspace ID",
|
|
56398
|
+
listId: "List ID",
|
|
56399
|
+
eventTypes: "Events"
|
|
56400
|
+
},
|
|
56401
|
+
outputs: {
|
|
56402
|
+
event: "Business event type.",
|
|
56403
|
+
taskId: "Task ID",
|
|
56404
|
+
body: "Original event data."
|
|
56405
|
+
}
|
|
56406
|
+
},
|
|
56407
|
+
"pandadoc.on_document_event": {
|
|
56408
|
+
configInputs: { completedOnly: "Completed documents only" },
|
|
56409
|
+
outputs: { events: "Matching events in this delivery." }
|
|
56410
|
+
},
|
|
56411
|
+
"pipedrive.on_crm_event": {
|
|
56412
|
+
configInputs: { eventType: "Event" },
|
|
56413
|
+
outputs: {
|
|
56414
|
+
event: "Business event type.",
|
|
56415
|
+
deliveryId: "Delivery ID",
|
|
56416
|
+
objectId: "Object ID",
|
|
56417
|
+
body: "Original event data."
|
|
56418
|
+
}
|
|
56419
|
+
},
|
|
56420
|
+
"resend.on_email_event": {
|
|
56421
|
+
configInputs: { eventTypes: "Events" },
|
|
56422
|
+
outputs: {
|
|
56423
|
+
event: "Business event type.",
|
|
56424
|
+
deliveryId: "Delivery ID",
|
|
56425
|
+
emailId: "Email ID",
|
|
56426
|
+
createdAt: "Event timestamp.",
|
|
56427
|
+
body: "Original event data."
|
|
56428
|
+
}
|
|
56429
|
+
},
|
|
56430
|
+
"typeform.on_form_response": {
|
|
56431
|
+
configInputs: { formId: "Form ID" },
|
|
56432
|
+
outputs: { response: "Submission identity, time and original answers with stable field identifiers." }
|
|
56433
|
+
},
|
|
56434
|
+
"vercel.on_deployment_event": {
|
|
56435
|
+
configInputs: {
|
|
56436
|
+
teamId: "Team ID",
|
|
56437
|
+
projectId: "Project ID",
|
|
56438
|
+
environment: "Environment"
|
|
56439
|
+
},
|
|
56440
|
+
outputs: {
|
|
56441
|
+
event: "Business event type.",
|
|
56442
|
+
deliveryId: "Delivery ID",
|
|
56443
|
+
deploymentId: "Deployment ID",
|
|
56444
|
+
projectId: "Project ID",
|
|
56445
|
+
body: "Original event data."
|
|
56446
|
+
}
|
|
56447
|
+
},
|
|
56448
|
+
"tally.on_form_response": {
|
|
56449
|
+
configInputs: { formId: "Select a form accessible to this connection." },
|
|
56450
|
+
outputs: { response: "Submission identity, time, and fields, preserving field keys, types, values, options, and file metadata." }
|
|
56451
|
+
},
|
|
56452
|
+
"feishu_app_bot.on_event": {
|
|
56453
|
+
configInputs: {
|
|
56454
|
+
sourceId: "Event source that receives events for this trigger.",
|
|
56455
|
+
eventTypes: "Feishu event types that trigger a Run.",
|
|
56456
|
+
chatIds: "Chat IDs to receive events from. Leave empty to receive events from every chat available to the source.",
|
|
56457
|
+
resource: "Optional document, calendar, or approval resource to subscribe to."
|
|
56458
|
+
},
|
|
56459
|
+
outputs: {
|
|
56460
|
+
event: "Feishu event type.",
|
|
56461
|
+
deliveryId: "Unique delivery ID for this event.",
|
|
56462
|
+
appId: "ID of the Feishu application that received the event.",
|
|
56463
|
+
tenantKey: "Key of the Feishu tenant that produced the event.",
|
|
56464
|
+
occurredAt: "Time when the event occurred, when supplied by Feishu.",
|
|
56465
|
+
body: "Original Feishu event payload."
|
|
56466
|
+
}
|
|
56467
|
+
},
|
|
56468
|
+
"airtable.on_record_changed": {
|
|
56469
|
+
configInputs: {
|
|
56470
|
+
baseId: "ID of the Airtable base to monitor.",
|
|
56471
|
+
fields: "Fields to include in each returned record. Leave empty to include every field.",
|
|
56472
|
+
formula: "Airtable formula used to filter records. Leave empty to include every record.",
|
|
56473
|
+
maxRecordsPerPoll: "Maximum number of records processed per poll.",
|
|
56474
|
+
tableIdOrName: "ID or name of the Airtable table to monitor.",
|
|
56475
|
+
triggerField: "Date or time field used to detect created or updated records.",
|
|
56476
|
+
view: "Airtable view used to filter and order records. Leave empty to use the table default."
|
|
56477
|
+
},
|
|
56478
|
+
outputs: { events: "Records created or updated since the previous poll." }
|
|
56479
|
+
},
|
|
56480
|
+
"gmail.on_message_received": {
|
|
56481
|
+
configInputs: {
|
|
56482
|
+
includeDrafts: "Also trigger on draft messages.",
|
|
56483
|
+
includeSpamAndTrash: "Also trigger on messages in Spam and Trash.",
|
|
56484
|
+
labelNamesOrIds: "Only trigger on messages carrying all of these labels, referenced by name or ID.",
|
|
56485
|
+
maxMessagesPerPoll: "Maximum number of messages processed per poll.",
|
|
56486
|
+
readStatus: "Only trigger on read messages, unread messages, or both.",
|
|
56487
|
+
search: "Gmail search query that each message must match.",
|
|
56488
|
+
sender: "Only trigger on messages whose sender matches this address or name."
|
|
56489
|
+
},
|
|
56490
|
+
outputs: { events: "Messages received since the previous poll." }
|
|
56491
|
+
},
|
|
56492
|
+
"github.on_repo_event": {
|
|
56493
|
+
configInputs: {
|
|
56494
|
+
events: "GitHub webhook events that trigger a Run.",
|
|
56495
|
+
insecureSsl: "Allow GitHub to deliver webhooks without SSL certificate verification.",
|
|
56496
|
+
owner: "Owner of the GitHub repository.",
|
|
56497
|
+
repo: "Name of the GitHub repository."
|
|
56498
|
+
},
|
|
56499
|
+
outputs: {
|
|
56500
|
+
body: "Original GitHub webhook payload.",
|
|
56501
|
+
deliveryId: "Unique GitHub webhook delivery ID.",
|
|
56502
|
+
event: "GitHub webhook event name."
|
|
56503
|
+
}
|
|
56504
|
+
},
|
|
56505
|
+
"github.watch_pull_request": {
|
|
56506
|
+
configInputs: {
|
|
56507
|
+
owner: "Owner of the GitHub repository.",
|
|
56508
|
+
repo: "Name of the GitHub repository.",
|
|
56509
|
+
number: "Number of the pull request to watch."
|
|
56510
|
+
},
|
|
56511
|
+
outputs: {
|
|
56512
|
+
pullRequest: "Current pull request details after an observed change.",
|
|
56513
|
+
version: "Stable identifier for the observed pull request version."
|
|
56514
|
+
}
|
|
56515
|
+
},
|
|
56516
|
+
"gitlab.on_project_event": {
|
|
56517
|
+
configInputs: {
|
|
56518
|
+
events: "GitLab project events that trigger a Run.",
|
|
56519
|
+
insecureSsl: "Allow GitLab to deliver webhooks without SSL certificate verification.",
|
|
56520
|
+
project: "Numeric project ID or URL-encoded project path.",
|
|
56521
|
+
pushBranchFilter: "Branch or wildcard pattern used to filter push events. Leave empty to include every branch."
|
|
56522
|
+
},
|
|
56523
|
+
outputs: {
|
|
56524
|
+
body: "Original GitLab webhook payload.",
|
|
56525
|
+
deliveryId: "Unique ID generated for this webhook delivery.",
|
|
56526
|
+
event: "Normalized GitLab event name.",
|
|
56527
|
+
gitlabEvent: "Original GitLab event header value."
|
|
56528
|
+
}
|
|
56529
|
+
},
|
|
56530
|
+
"googlecalendar.on_event_changed": {
|
|
56531
|
+
configInputs: {
|
|
56532
|
+
calendarId: "ID of the Google Calendar to monitor.",
|
|
56533
|
+
changes: "Calendar event changes that trigger a Run.",
|
|
56534
|
+
matchTerm: "Text that must appear in the event summary, description, location, or attendees. Leave empty to match every event.",
|
|
56535
|
+
maxEventsPerPoll: "Maximum number of calendar events processed per poll."
|
|
56536
|
+
},
|
|
56537
|
+
outputs: { events: "Calendar events created, updated, or cancelled since the previous poll." }
|
|
56538
|
+
},
|
|
56539
|
+
"googledrive.changes_detected": {
|
|
56540
|
+
configInputs: driveChangesConfig,
|
|
56541
|
+
outputs: { events: "Google Drive changes available when the notification was received." }
|
|
56542
|
+
},
|
|
56543
|
+
"googledrive.watch_changes": {
|
|
56544
|
+
configInputs: driveChangesConfig,
|
|
56545
|
+
outputs: { events: "Google Drive changes observed by notifications or periodic scans." }
|
|
56546
|
+
},
|
|
56547
|
+
"googledrive.on_file_change": {
|
|
56548
|
+
configInputs: {
|
|
56549
|
+
changeType: "Whether created or updated items trigger a Run.",
|
|
56550
|
+
driveId: "Shared drive ID. Leave empty to use My Drive.",
|
|
56551
|
+
folderId: "ID of the Google Drive folder to monitor.",
|
|
56552
|
+
itemTypes: "Whether to monitor files, folders, or both.",
|
|
56553
|
+
maxFilesPerPoll: "Maximum number of changed items processed per poll.",
|
|
56554
|
+
mimeTypes: "Only trigger on these MIME types. Leave empty to include every MIME type.",
|
|
56555
|
+
namePrefix: "Only trigger on items whose names start with this text. Leave empty to include every name."
|
|
56556
|
+
},
|
|
56557
|
+
outputs: { events: "Files or folders created or updated since the previous poll." }
|
|
56558
|
+
},
|
|
56559
|
+
"googlesheets.on_row_added": {
|
|
56560
|
+
configInputs: {
|
|
56561
|
+
columnRange: "A1 column range to read, such as A:Z.",
|
|
56562
|
+
dateTimeRender: "How date and time values are returned.",
|
|
56563
|
+
firstDataRow: "First row containing data below the header.",
|
|
56564
|
+
headerRow: "Row whose cells become output field names.",
|
|
56565
|
+
maxRowsPerPoll: "Maximum number of new rows processed per poll.",
|
|
56566
|
+
sheet: "Name of the worksheet to monitor.",
|
|
56567
|
+
spreadsheetId: "ID of the Google Sheets spreadsheet.",
|
|
56568
|
+
valueRender: "How cell values are returned."
|
|
56569
|
+
},
|
|
56570
|
+
outputs: { events: "Rows appended since the previous poll." }
|
|
56571
|
+
},
|
|
56572
|
+
"linear.on_issue_changed": {
|
|
56573
|
+
configInputs: {
|
|
56574
|
+
teamId: "Linear Team UUID. Use Copy model UUID in Linear to find it.",
|
|
56575
|
+
stateIds: "Statuses from the selected Team. Leave empty for every status. Matches current status, not every transition into it."
|
|
56576
|
+
},
|
|
56577
|
+
outputs: { events: "Linear issues created or updated since the previous poll." }
|
|
56578
|
+
},
|
|
56579
|
+
"notion.on_database_page_event": {
|
|
56580
|
+
configInputs: {
|
|
56581
|
+
dataSourceId: "Data source ID within the database. Leave empty to use the primary data source.",
|
|
56582
|
+
databaseId: "ID of the Notion database to monitor.",
|
|
56583
|
+
events: "Page changes that trigger a Run.",
|
|
56584
|
+
includeProperties: "Include page properties in each output event.",
|
|
56585
|
+
maxItemsPerPoll: "Maximum number of changed pages processed per poll."
|
|
56586
|
+
},
|
|
56587
|
+
outputs: { events: "Database pages added or updated since the previous poll." }
|
|
56588
|
+
},
|
|
56589
|
+
"one_drive.on_item_changed": {
|
|
56590
|
+
configInputs: {
|
|
56591
|
+
events: "OneDrive item changes that trigger a Run.",
|
|
56592
|
+
itemId: "Only monitor this file or folder ID. Leave empty to monitor multiple items.",
|
|
56593
|
+
itemTypes: "Whether to monitor files, folders, or both.",
|
|
56594
|
+
maxItemsPerPoll: "Maximum number of changed items processed per poll.",
|
|
56595
|
+
parentFolderId: "Only monitor items in this parent folder. Leave empty to monitor the whole drive."
|
|
56596
|
+
},
|
|
56597
|
+
outputs: { events: "OneDrive items created, updated, or deleted since the previous poll." }
|
|
56598
|
+
},
|
|
56599
|
+
"outlook.on_message_received": {
|
|
56600
|
+
configInputs: {
|
|
56601
|
+
folder: "Well-known mail folder name, folder ID, or an empty value for the whole mailbox.",
|
|
56602
|
+
includeDrafts: "Also trigger on draft messages.",
|
|
56603
|
+
maxMessagesPerPoll: "Maximum number of messages processed per poll.",
|
|
56604
|
+
readStatus: "Only trigger on read messages, unread messages, or both.",
|
|
56605
|
+
senderAddress: "Exact sender address. Leave empty to allow any sender.",
|
|
56606
|
+
subjectContains: "Case-insensitive text that must appear in the message subject.",
|
|
56607
|
+
withAttachmentsOnly: "Only trigger on messages that have attachments."
|
|
56608
|
+
},
|
|
56609
|
+
outputs: { events: "Outlook messages received since the previous poll." }
|
|
56610
|
+
},
|
|
56611
|
+
"shopify.on_shop_event": {
|
|
56612
|
+
configInputs: { topics: "Shopify webhook topics that trigger a Run." },
|
|
56613
|
+
outputs: {
|
|
56614
|
+
apiVersion: "Shopify API version used for the webhook.",
|
|
56615
|
+
body: "Original Shopify webhook payload.",
|
|
56616
|
+
eventId: "Unique Shopify event ID.",
|
|
56617
|
+
shopDomain: "Domain of the Shopify shop that produced the event.",
|
|
56618
|
+
topic: "Shopify webhook topic.",
|
|
56619
|
+
triggeredAt: "Time when Shopify triggered the webhook.",
|
|
56620
|
+
webhookId: "ID of the Shopify webhook subscription."
|
|
56621
|
+
}
|
|
56622
|
+
},
|
|
56623
|
+
"slack.on_message_posted": {
|
|
56624
|
+
configInputs: {
|
|
56625
|
+
channelId: "Slack conversation ID to watch, such as C0122KQ70S7E.",
|
|
56626
|
+
fromUserIds: "Only trigger on messages from these Slack user IDs. Leave empty to allow any author.",
|
|
56627
|
+
ignoreUserIds: "Never trigger on messages from these Slack user IDs.",
|
|
56628
|
+
includeBotMessages: "Also trigger on messages posted by bots and apps.",
|
|
56629
|
+
includeSystemMessages: "Also trigger on Slack system notices.",
|
|
56630
|
+
maxMessagesPerPoll: "Maximum number of messages processed per poll.",
|
|
56631
|
+
textContains: "Only trigger when message text contains this string, ignoring case."
|
|
56632
|
+
},
|
|
56633
|
+
outputs: { events: "Slack messages posted since the previous poll." }
|
|
56634
|
+
},
|
|
56635
|
+
"stripe.on_event": {
|
|
56636
|
+
configInputs: {
|
|
56637
|
+
apiVersion: "Stripe API version used for webhook events. Leave empty to use the account default.",
|
|
56638
|
+
events: "Stripe event types that trigger a Run.",
|
|
56639
|
+
includeConnectedAccounts: "Also receive events from connected Stripe accounts."
|
|
56640
|
+
},
|
|
56641
|
+
outputs: {
|
|
56642
|
+
body: "Original Stripe event payload.",
|
|
56643
|
+
event: "Stripe event type.",
|
|
56644
|
+
eventId: "Unique Stripe event ID.",
|
|
56645
|
+
livemode: "Whether the event was created in live mode."
|
|
56646
|
+
}
|
|
56647
|
+
},
|
|
56648
|
+
"telegram.on_update": {
|
|
56649
|
+
configInputs: {
|
|
56650
|
+
chatIds: "Only accept updates from these numeric Telegram chat IDs. Leave empty to allow every chat.",
|
|
56651
|
+
dropPendingUpdates: "Discard updates queued before the webhook is created or resumed.",
|
|
56652
|
+
updates: "Telegram update types that trigger a Run. Use * for the Telegram default set.",
|
|
56653
|
+
userIds: "Only accept updates from these numeric Telegram user IDs. Leave empty to allow every user."
|
|
56654
|
+
},
|
|
56655
|
+
outputs: {
|
|
56656
|
+
body: "Original Telegram update payload.",
|
|
56657
|
+
deliveryId: "Unique ID generated for this Telegram update.",
|
|
56658
|
+
event: "Telegram update type."
|
|
56659
|
+
}
|
|
56660
|
+
},
|
|
56661
|
+
"woocommerce.on_store_event": {
|
|
56662
|
+
configInputs: {
|
|
56663
|
+
events: "WooCommerce store events that trigger a Run.",
|
|
56664
|
+
webhookName: "Name shown for the webhook in WooCommerce."
|
|
56665
|
+
},
|
|
56666
|
+
outputs: {
|
|
56667
|
+
body: "Original WooCommerce webhook payload.",
|
|
56668
|
+
deliveryId: "Unique WooCommerce webhook delivery ID.",
|
|
56669
|
+
event: "WooCommerce event action.",
|
|
56670
|
+
resource: "WooCommerce resource type.",
|
|
56671
|
+
source: "URL of the WooCommerce store that produced the event.",
|
|
56672
|
+
topic: "Full WooCommerce webhook topic.",
|
|
56673
|
+
webhookId: "ID of the WooCommerce webhook subscription."
|
|
56674
|
+
}
|
|
56675
|
+
},
|
|
56676
|
+
"zendesk.on_event": {
|
|
56677
|
+
configInputs: { events: "Zendesk event types that trigger a Run." },
|
|
56678
|
+
outputs: {
|
|
56679
|
+
body: "Original Zendesk event payload.",
|
|
56680
|
+
deliveryId: "Unique ID generated for this Zendesk event delivery.",
|
|
56681
|
+
event: "Zendesk event type.",
|
|
56682
|
+
subject: "Zendesk subject associated with the event."
|
|
56683
|
+
}
|
|
56684
|
+
}
|
|
56685
|
+
};
|
|
56686
|
+
//#endregion
|
|
56687
|
+
//#region src/trigger/providers/fieldLabels.ts
|
|
56688
|
+
var triggerConfigFieldLabels = {
|
|
56689
|
+
"en": {
|
|
56690
|
+
"jira.on_issue_event": { sourceId: "Event source" },
|
|
56691
|
+
"fireflies.on_meeting_ready": { sourceId: "Event source" },
|
|
56692
|
+
"zoom.on_recording_ready": { sourceId: "Event source" },
|
|
56693
|
+
"sentry.on_issue_alert": { sourceId: "Event source" },
|
|
56694
|
+
"intercom.on_conversation_event": { sourceId: "Event source" },
|
|
56695
|
+
"slackbot.on_event": { sourceId: "Event source" },
|
|
56696
|
+
"asana.on_task_event": { projectId: "Project ID" },
|
|
56697
|
+
"calendly.on_booking_event": {},
|
|
56698
|
+
"clickup.on_task_event": { workspaceId: "Workspace ID" },
|
|
56699
|
+
"pandadoc.on_document_event": {},
|
|
56700
|
+
"pipedrive.on_crm_event": {},
|
|
56701
|
+
"resend.on_email_event": {},
|
|
56702
|
+
"typeform.on_form_response": { formId: "Form ID" },
|
|
56703
|
+
"vercel.on_deployment_event": {
|
|
56704
|
+
teamId: "Team ID",
|
|
56705
|
+
projectId: "Project ID"
|
|
56706
|
+
},
|
|
56707
|
+
"tally.on_form_response": { formId: "Form" },
|
|
56708
|
+
"feishu_app_bot.on_event": {
|
|
56709
|
+
sourceId: "Event source",
|
|
56710
|
+
eventTypes: "Events to receive"
|
|
56711
|
+
},
|
|
56712
|
+
"airtable.on_record_changed": {
|
|
56713
|
+
baseId: "Base",
|
|
56714
|
+
tableIdOrName: "Table",
|
|
56715
|
+
triggerField: "Trigger field"
|
|
56716
|
+
},
|
|
56717
|
+
"github.on_repo_event": {
|
|
56718
|
+
events: "Events",
|
|
56719
|
+
owner: "Repository owner",
|
|
56720
|
+
repo: "Repository"
|
|
56721
|
+
},
|
|
56722
|
+
"github.watch_pull_request": {
|
|
56723
|
+
owner: "Repository owner",
|
|
56724
|
+
repo: "Repository",
|
|
56725
|
+
number: "Pull request number"
|
|
56726
|
+
},
|
|
56727
|
+
"gitlab.on_project_event": {
|
|
56728
|
+
events: "Events",
|
|
56729
|
+
project: "Project"
|
|
56730
|
+
},
|
|
56731
|
+
"googlecalendar.on_event_changed": { calendarId: "Calendar" },
|
|
56732
|
+
"googledrive.on_file_change": {
|
|
56733
|
+
changeType: "Change type",
|
|
56734
|
+
folderId: "Folder"
|
|
56735
|
+
},
|
|
56736
|
+
"googlesheets.on_row_added": {
|
|
56737
|
+
sheet: "Worksheet",
|
|
56738
|
+
spreadsheetId: "Spreadsheet"
|
|
56739
|
+
},
|
|
56740
|
+
"linear.on_issue_changed": { teamId: "Team" },
|
|
56741
|
+
"notion.on_database_page_event": { databaseId: "Database" },
|
|
56742
|
+
"shopify.on_shop_event": { topics: "Topics" },
|
|
56743
|
+
"slack.on_message_posted": { channelId: "Channel" },
|
|
56744
|
+
"stripe.on_event": { events: "Events" },
|
|
56745
|
+
"telegram.on_update": { updates: "Updates" },
|
|
56746
|
+
"woocommerce.on_store_event": { events: "Events" },
|
|
56747
|
+
"zendesk.on_event": { events: "Events" }
|
|
56748
|
+
},
|
|
56749
|
+
"zh-CN": {
|
|
56750
|
+
"jira.on_issue_event": { sourceId: "事件源" },
|
|
56751
|
+
"fireflies.on_meeting_ready": { sourceId: "事件源" },
|
|
56752
|
+
"zoom.on_recording_ready": { sourceId: "事件源" },
|
|
56753
|
+
"sentry.on_issue_alert": { sourceId: "事件源" },
|
|
56754
|
+
"intercom.on_conversation_event": { sourceId: "事件源" },
|
|
56755
|
+
"slackbot.on_event": { sourceId: "事件源" },
|
|
56756
|
+
"asana.on_task_event": { projectId: "项目 ID" },
|
|
56757
|
+
"calendly.on_booking_event": {},
|
|
56758
|
+
"clickup.on_task_event": { workspaceId: "工作区 ID" },
|
|
56759
|
+
"pandadoc.on_document_event": {},
|
|
56760
|
+
"pipedrive.on_crm_event": {},
|
|
56761
|
+
"resend.on_email_event": {},
|
|
56762
|
+
"typeform.on_form_response": { formId: "表单 ID" },
|
|
56763
|
+
"vercel.on_deployment_event": {
|
|
56764
|
+
teamId: "团队 ID",
|
|
56765
|
+
projectId: "项目 ID"
|
|
56766
|
+
},
|
|
56767
|
+
"tally.on_form_response": { formId: "表单" },
|
|
56768
|
+
"feishu_app_bot.on_event": {
|
|
56769
|
+
sourceId: "事件源",
|
|
56770
|
+
eventTypes: "接收的事件"
|
|
56771
|
+
},
|
|
56772
|
+
"airtable.on_record_changed": {
|
|
56773
|
+
baseId: "Base",
|
|
56774
|
+
tableIdOrName: "数据表",
|
|
56775
|
+
triggerField: "触发字段"
|
|
56776
|
+
},
|
|
56777
|
+
"github.on_repo_event": {
|
|
56778
|
+
events: "事件",
|
|
56779
|
+
owner: "仓库所有者",
|
|
56780
|
+
repo: "仓库"
|
|
56781
|
+
},
|
|
56782
|
+
"github.watch_pull_request": {
|
|
56783
|
+
owner: "仓库所有者",
|
|
56784
|
+
repo: "仓库",
|
|
56785
|
+
number: "拉取请求编号"
|
|
56786
|
+
},
|
|
56787
|
+
"gitlab.on_project_event": {
|
|
56788
|
+
events: "事件",
|
|
56789
|
+
project: "项目"
|
|
56790
|
+
},
|
|
56791
|
+
"googlecalendar.on_event_changed": { calendarId: "日历" },
|
|
56792
|
+
"googledrive.on_file_change": {
|
|
56793
|
+
changeType: "变更类型",
|
|
56794
|
+
folderId: "文件夹"
|
|
56795
|
+
},
|
|
56796
|
+
"googlesheets.on_row_added": {
|
|
56797
|
+
sheet: "工作表",
|
|
56798
|
+
spreadsheetId: "电子表格"
|
|
56799
|
+
},
|
|
56800
|
+
"linear.on_issue_changed": { teamId: "团队" },
|
|
56801
|
+
"notion.on_database_page_event": { databaseId: "数据库" },
|
|
56802
|
+
"shopify.on_shop_event": { topics: "主题" },
|
|
56803
|
+
"slack.on_message_posted": { channelId: "频道" },
|
|
56804
|
+
"stripe.on_event": { events: "事件" },
|
|
56805
|
+
"telegram.on_update": { updates: "更新类型" },
|
|
56806
|
+
"woocommerce.on_store_event": { events: "事件" },
|
|
56807
|
+
"zendesk.on_event": { events: "事件" }
|
|
56808
|
+
},
|
|
56809
|
+
"zh-TW": {
|
|
56810
|
+
"jira.on_issue_event": { sourceId: "事件源" },
|
|
56811
|
+
"fireflies.on_meeting_ready": { sourceId: "事件源" },
|
|
56812
|
+
"zoom.on_recording_ready": { sourceId: "事件源" },
|
|
56813
|
+
"sentry.on_issue_alert": { sourceId: "事件源" },
|
|
56814
|
+
"intercom.on_conversation_event": { sourceId: "事件源" },
|
|
56815
|
+
"slackbot.on_event": { sourceId: "事件源" },
|
|
56816
|
+
"asana.on_task_event": { projectId: "專案 ID" },
|
|
56817
|
+
"calendly.on_booking_event": {},
|
|
56818
|
+
"clickup.on_task_event": { workspaceId: "工作區 ID" },
|
|
56819
|
+
"pandadoc.on_document_event": {},
|
|
56820
|
+
"pipedrive.on_crm_event": {},
|
|
56821
|
+
"resend.on_email_event": {},
|
|
56822
|
+
"typeform.on_form_response": { formId: "表單 ID" },
|
|
56823
|
+
"vercel.on_deployment_event": {
|
|
56824
|
+
teamId: "團隊 ID",
|
|
56825
|
+
projectId: "專案 ID"
|
|
56826
|
+
},
|
|
56827
|
+
"tally.on_form_response": { formId: "表單" },
|
|
56828
|
+
"feishu_app_bot.on_event": {
|
|
56829
|
+
sourceId: "事件來源",
|
|
56830
|
+
eventTypes: "接收的事件"
|
|
56831
|
+
},
|
|
56832
|
+
"airtable.on_record_changed": {
|
|
56833
|
+
baseId: "Base",
|
|
56834
|
+
tableIdOrName: "資料表",
|
|
56835
|
+
triggerField: "觸發欄位"
|
|
56836
|
+
},
|
|
56837
|
+
"github.on_repo_event": {
|
|
56838
|
+
events: "事件",
|
|
56839
|
+
owner: "儲存庫擁有者",
|
|
56840
|
+
repo: "儲存庫"
|
|
56841
|
+
},
|
|
56842
|
+
"github.watch_pull_request": {
|
|
56843
|
+
owner: "儲存庫擁有者",
|
|
56844
|
+
repo: "儲存庫",
|
|
56845
|
+
number: "提取要求編號"
|
|
56846
|
+
},
|
|
56847
|
+
"gitlab.on_project_event": {
|
|
56848
|
+
events: "事件",
|
|
56849
|
+
project: "專案"
|
|
56850
|
+
},
|
|
56851
|
+
"googlecalendar.on_event_changed": { calendarId: "日曆" },
|
|
56852
|
+
"googledrive.on_file_change": {
|
|
56853
|
+
changeType: "變更類型",
|
|
56854
|
+
folderId: "資料夾"
|
|
56855
|
+
},
|
|
56856
|
+
"googlesheets.on_row_added": {
|
|
56857
|
+
sheet: "工作表",
|
|
56858
|
+
spreadsheetId: "試算表"
|
|
56859
|
+
},
|
|
56860
|
+
"linear.on_issue_changed": { teamId: "團隊" },
|
|
56861
|
+
"notion.on_database_page_event": { databaseId: "資料庫" },
|
|
56862
|
+
"shopify.on_shop_event": { topics: "主題" },
|
|
56863
|
+
"slack.on_message_posted": { channelId: "頻道" },
|
|
56864
|
+
"stripe.on_event": { events: "事件" },
|
|
56865
|
+
"telegram.on_update": { updates: "更新類型" },
|
|
56866
|
+
"woocommerce.on_store_event": { events: "事件" },
|
|
56867
|
+
"zendesk.on_event": { events: "事件" }
|
|
56868
|
+
},
|
|
56869
|
+
"ja": {
|
|
56870
|
+
"jira.on_issue_event": { sourceId: "イベントソース" },
|
|
56871
|
+
"fireflies.on_meeting_ready": { sourceId: "イベントソース" },
|
|
56872
|
+
"zoom.on_recording_ready": { sourceId: "イベントソース" },
|
|
56873
|
+
"sentry.on_issue_alert": { sourceId: "イベントソース" },
|
|
56874
|
+
"intercom.on_conversation_event": { sourceId: "イベントソース" },
|
|
56875
|
+
"slackbot.on_event": { sourceId: "イベントソース" },
|
|
56876
|
+
"asana.on_task_event": { projectId: "プロジェクト ID" },
|
|
56877
|
+
"calendly.on_booking_event": {},
|
|
56878
|
+
"clickup.on_task_event": { workspaceId: "ワークスペース ID" },
|
|
56879
|
+
"pandadoc.on_document_event": {},
|
|
56880
|
+
"pipedrive.on_crm_event": {},
|
|
56881
|
+
"resend.on_email_event": {},
|
|
56882
|
+
"typeform.on_form_response": { formId: "フォーム ID" },
|
|
56883
|
+
"vercel.on_deployment_event": {
|
|
56884
|
+
teamId: "チーム ID",
|
|
56885
|
+
projectId: "プロジェクト ID"
|
|
56886
|
+
},
|
|
56887
|
+
"tally.on_form_response": { formId: "フォーム" },
|
|
56888
|
+
"feishu_app_bot.on_event": {
|
|
56889
|
+
sourceId: "イベントソース",
|
|
56890
|
+
eventTypes: "受信するイベント"
|
|
56891
|
+
},
|
|
56892
|
+
"airtable.on_record_changed": {
|
|
56893
|
+
baseId: "ベース",
|
|
56894
|
+
tableIdOrName: "テーブル",
|
|
56895
|
+
triggerField: "トリガーフィールド"
|
|
56896
|
+
},
|
|
56897
|
+
"github.on_repo_event": {
|
|
56898
|
+
events: "イベント",
|
|
56899
|
+
owner: "リポジトリの所有者",
|
|
56900
|
+
repo: "リポジトリ"
|
|
56901
|
+
},
|
|
56902
|
+
"github.watch_pull_request": {
|
|
56903
|
+
owner: "リポジトリの所有者",
|
|
56904
|
+
repo: "リポジトリ",
|
|
56905
|
+
number: "プルリクエスト番号"
|
|
56906
|
+
},
|
|
56907
|
+
"gitlab.on_project_event": {
|
|
56908
|
+
events: "イベント",
|
|
56909
|
+
project: "プロジェクト"
|
|
56910
|
+
},
|
|
56911
|
+
"googlecalendar.on_event_changed": { calendarId: "カレンダー" },
|
|
56912
|
+
"googledrive.on_file_change": {
|
|
56913
|
+
changeType: "変更の種類",
|
|
56914
|
+
folderId: "フォルダー"
|
|
56915
|
+
},
|
|
56916
|
+
"googlesheets.on_row_added": {
|
|
56917
|
+
sheet: "シート",
|
|
56918
|
+
spreadsheetId: "スプレッドシート"
|
|
56919
|
+
},
|
|
56920
|
+
"linear.on_issue_changed": { teamId: "チーム" },
|
|
56921
|
+
"notion.on_database_page_event": { databaseId: "データベース" },
|
|
56922
|
+
"shopify.on_shop_event": { topics: "トピック" },
|
|
56923
|
+
"slack.on_message_posted": { channelId: "チャンネル" },
|
|
56924
|
+
"stripe.on_event": { events: "イベント" },
|
|
56925
|
+
"telegram.on_update": { updates: "更新の種類" },
|
|
56926
|
+
"woocommerce.on_store_event": { events: "イベント" },
|
|
56927
|
+
"zendesk.on_event": { events: "イベント" }
|
|
56928
|
+
},
|
|
56929
|
+
"ko": {
|
|
56930
|
+
"jira.on_issue_event": { sourceId: "이벤트 소스" },
|
|
56931
|
+
"fireflies.on_meeting_ready": { sourceId: "이벤트 소스" },
|
|
56932
|
+
"zoom.on_recording_ready": { sourceId: "이벤트 소스" },
|
|
56933
|
+
"sentry.on_issue_alert": { sourceId: "이벤트 소스" },
|
|
56934
|
+
"intercom.on_conversation_event": { sourceId: "이벤트 소스" },
|
|
56935
|
+
"slackbot.on_event": { sourceId: "이벤트 소스" },
|
|
56936
|
+
"asana.on_task_event": { projectId: "프로젝트 ID" },
|
|
56937
|
+
"calendly.on_booking_event": {},
|
|
56938
|
+
"clickup.on_task_event": { workspaceId: "워크스페이스 ID" },
|
|
56939
|
+
"pandadoc.on_document_event": {},
|
|
56940
|
+
"pipedrive.on_crm_event": {},
|
|
56941
|
+
"resend.on_email_event": {},
|
|
56942
|
+
"typeform.on_form_response": { formId: "양식 ID" },
|
|
56943
|
+
"vercel.on_deployment_event": {
|
|
56944
|
+
teamId: "팀 ID",
|
|
56945
|
+
projectId: "프로젝트 ID"
|
|
56946
|
+
},
|
|
56947
|
+
"tally.on_form_response": { formId: "양식" },
|
|
56948
|
+
"feishu_app_bot.on_event": {
|
|
56949
|
+
sourceId: "이벤트 소스",
|
|
56950
|
+
eventTypes: "수신할 이벤트"
|
|
56951
|
+
},
|
|
56952
|
+
"airtable.on_record_changed": {
|
|
56953
|
+
baseId: "베이스",
|
|
56954
|
+
tableIdOrName: "테이블",
|
|
56955
|
+
triggerField: "트리거 필드"
|
|
56956
|
+
},
|
|
56957
|
+
"github.on_repo_event": {
|
|
56958
|
+
events: "이벤트",
|
|
56959
|
+
owner: "저장소 소유자",
|
|
56960
|
+
repo: "저장소"
|
|
56961
|
+
},
|
|
56962
|
+
"github.watch_pull_request": {
|
|
56963
|
+
owner: "저장소 소유자",
|
|
56964
|
+
repo: "저장소",
|
|
56965
|
+
number: "풀 리퀘스트 번호"
|
|
56966
|
+
},
|
|
56967
|
+
"gitlab.on_project_event": {
|
|
56968
|
+
events: "이벤트",
|
|
56969
|
+
project: "프로젝트"
|
|
56970
|
+
},
|
|
56971
|
+
"googlecalendar.on_event_changed": { calendarId: "캘린더" },
|
|
56972
|
+
"googledrive.on_file_change": {
|
|
56973
|
+
changeType: "변경 유형",
|
|
56974
|
+
folderId: "폴더"
|
|
56975
|
+
},
|
|
56976
|
+
"googlesheets.on_row_added": {
|
|
56977
|
+
sheet: "시트",
|
|
56978
|
+
spreadsheetId: "스프레드시트"
|
|
56979
|
+
},
|
|
56980
|
+
"linear.on_issue_changed": { teamId: "팀" },
|
|
56981
|
+
"notion.on_database_page_event": { databaseId: "데이터베이스" },
|
|
56982
|
+
"shopify.on_shop_event": { topics: "주제" },
|
|
56983
|
+
"slack.on_message_posted": { channelId: "채널" },
|
|
56984
|
+
"stripe.on_event": { events: "이벤트" },
|
|
56985
|
+
"telegram.on_update": { updates: "업데이트 유형" },
|
|
56986
|
+
"woocommerce.on_store_event": { events: "이벤트" },
|
|
56987
|
+
"zendesk.on_event": { events: "이벤트" }
|
|
56988
|
+
},
|
|
56989
|
+
"ru": {
|
|
56990
|
+
"jira.on_issue_event": { sourceId: "Источник событий" },
|
|
56991
|
+
"fireflies.on_meeting_ready": { sourceId: "Источник событий" },
|
|
56992
|
+
"zoom.on_recording_ready": { sourceId: "Источник событий" },
|
|
56993
|
+
"sentry.on_issue_alert": { sourceId: "Источник событий" },
|
|
56994
|
+
"intercom.on_conversation_event": { sourceId: "Источник событий" },
|
|
56995
|
+
"slackbot.on_event": { sourceId: "Источник событий" },
|
|
56996
|
+
"asana.on_task_event": { projectId: "ID проекта" },
|
|
56997
|
+
"calendly.on_booking_event": {},
|
|
56998
|
+
"clickup.on_task_event": { workspaceId: "ID рабочего пространства" },
|
|
56999
|
+
"pandadoc.on_document_event": {},
|
|
57000
|
+
"pipedrive.on_crm_event": {},
|
|
57001
|
+
"resend.on_email_event": {},
|
|
57002
|
+
"typeform.on_form_response": { formId: "ID формы" },
|
|
57003
|
+
"vercel.on_deployment_event": {
|
|
57004
|
+
teamId: "ID команды",
|
|
57005
|
+
projectId: "ID проекта"
|
|
57006
|
+
},
|
|
57007
|
+
"tally.on_form_response": { formId: "Форма" },
|
|
57008
|
+
"feishu_app_bot.on_event": {
|
|
57009
|
+
sourceId: "Источник событий",
|
|
57010
|
+
eventTypes: "Принимаемые события"
|
|
57011
|
+
},
|
|
57012
|
+
"airtable.on_record_changed": {
|
|
57013
|
+
baseId: "База",
|
|
57014
|
+
tableIdOrName: "Таблица",
|
|
57015
|
+
triggerField: "Поле триггера"
|
|
57016
|
+
},
|
|
57017
|
+
"github.on_repo_event": {
|
|
57018
|
+
events: "События",
|
|
57019
|
+
owner: "Владелец репозитория",
|
|
57020
|
+
repo: "Репозиторий"
|
|
57021
|
+
},
|
|
57022
|
+
"github.watch_pull_request": {
|
|
57023
|
+
owner: "Владелец репозитория",
|
|
57024
|
+
repo: "Репозиторий",
|
|
57025
|
+
number: "Номер запроса на слияние"
|
|
57026
|
+
},
|
|
57027
|
+
"gitlab.on_project_event": {
|
|
57028
|
+
events: "События",
|
|
57029
|
+
project: "Проект"
|
|
57030
|
+
},
|
|
57031
|
+
"googlecalendar.on_event_changed": { calendarId: "Календарь" },
|
|
57032
|
+
"googledrive.on_file_change": {
|
|
57033
|
+
changeType: "Тип изменения",
|
|
57034
|
+
folderId: "Папка"
|
|
57035
|
+
},
|
|
57036
|
+
"googlesheets.on_row_added": {
|
|
57037
|
+
sheet: "Лист",
|
|
57038
|
+
spreadsheetId: "Таблица"
|
|
57039
|
+
},
|
|
57040
|
+
"linear.on_issue_changed": { teamId: "Команда" },
|
|
57041
|
+
"notion.on_database_page_event": { databaseId: "База данных" },
|
|
57042
|
+
"shopify.on_shop_event": { topics: "Темы" },
|
|
57043
|
+
"slack.on_message_posted": { channelId: "Канал" },
|
|
57044
|
+
"stripe.on_event": { events: "События" },
|
|
57045
|
+
"telegram.on_update": { updates: "Типы обновлений" },
|
|
57046
|
+
"woocommerce.on_store_event": { events: "События" },
|
|
57047
|
+
"zendesk.on_event": { events: "События" }
|
|
57048
|
+
},
|
|
57049
|
+
"fr": {
|
|
57050
|
+
"jira.on_issue_event": { sourceId: "Source d’événements" },
|
|
57051
|
+
"fireflies.on_meeting_ready": { sourceId: "Source d’événements" },
|
|
57052
|
+
"zoom.on_recording_ready": { sourceId: "Source d’événements" },
|
|
57053
|
+
"sentry.on_issue_alert": { sourceId: "Source d’événements" },
|
|
57054
|
+
"intercom.on_conversation_event": { sourceId: "Source d’événements" },
|
|
57055
|
+
"slackbot.on_event": { sourceId: "Source d’événements" },
|
|
57056
|
+
"asana.on_task_event": { projectId: "ID du projet" },
|
|
57057
|
+
"calendly.on_booking_event": {},
|
|
57058
|
+
"clickup.on_task_event": { workspaceId: "ID de l’espace de travail" },
|
|
57059
|
+
"pandadoc.on_document_event": {},
|
|
57060
|
+
"pipedrive.on_crm_event": {},
|
|
57061
|
+
"resend.on_email_event": {},
|
|
57062
|
+
"typeform.on_form_response": { formId: "ID du formulaire" },
|
|
57063
|
+
"vercel.on_deployment_event": {
|
|
57064
|
+
teamId: "ID de l’équipe",
|
|
57065
|
+
projectId: "ID du projet"
|
|
57066
|
+
},
|
|
57067
|
+
"tally.on_form_response": { formId: "Formulaire" },
|
|
57068
|
+
"feishu_app_bot.on_event": {
|
|
57069
|
+
sourceId: "Source d’événements",
|
|
57070
|
+
eventTypes: "Événements à recevoir"
|
|
57071
|
+
},
|
|
57072
|
+
"airtable.on_record_changed": {
|
|
57073
|
+
baseId: "Base",
|
|
57074
|
+
tableIdOrName: "Table",
|
|
57075
|
+
triggerField: "Champ déclencheur"
|
|
57076
|
+
},
|
|
57077
|
+
"github.on_repo_event": {
|
|
57078
|
+
events: "Événements",
|
|
57079
|
+
owner: "Propriétaire du dépôt",
|
|
57080
|
+
repo: "Dépôt"
|
|
57081
|
+
},
|
|
57082
|
+
"github.watch_pull_request": {
|
|
57083
|
+
owner: "Propriétaire du dépôt",
|
|
57084
|
+
repo: "Dépôt",
|
|
57085
|
+
number: "Numéro de la demande de tirage"
|
|
57086
|
+
},
|
|
57087
|
+
"gitlab.on_project_event": {
|
|
57088
|
+
events: "Événements",
|
|
57089
|
+
project: "Projet"
|
|
57090
|
+
},
|
|
57091
|
+
"googlecalendar.on_event_changed": { calendarId: "Agenda" },
|
|
57092
|
+
"googledrive.on_file_change": {
|
|
57093
|
+
changeType: "Type de modification",
|
|
57094
|
+
folderId: "Dossier"
|
|
57095
|
+
},
|
|
57096
|
+
"googlesheets.on_row_added": {
|
|
57097
|
+
sheet: "Feuille",
|
|
57098
|
+
spreadsheetId: "Feuille de calcul"
|
|
57099
|
+
},
|
|
57100
|
+
"linear.on_issue_changed": { teamId: "Équipe" },
|
|
57101
|
+
"notion.on_database_page_event": { databaseId: "Base de données" },
|
|
57102
|
+
"shopify.on_shop_event": { topics: "Sujets" },
|
|
57103
|
+
"slack.on_message_posted": { channelId: "Canal" },
|
|
57104
|
+
"stripe.on_event": { events: "Événements" },
|
|
57105
|
+
"telegram.on_update": { updates: "Types de mise à jour" },
|
|
57106
|
+
"woocommerce.on_store_event": { events: "Événements" },
|
|
57107
|
+
"zendesk.on_event": { events: "Événements" }
|
|
57108
|
+
}
|
|
57109
|
+
};
|
|
57110
|
+
//#endregion
|
|
57111
|
+
//#region src/trigger/providers/localization.ts
|
|
57112
|
+
var loaders = {
|
|
57113
|
+
"zh-CN": () => import("./zh-CN-Dg_xSGde.js"),
|
|
57114
|
+
"zh-TW": () => import("./zh-TW-oxuLwsV0.js"),
|
|
57115
|
+
"ja": () => import("./ja-CxQBHr2J.js"),
|
|
57116
|
+
"ko": () => import("./ko-D1Exiv1h.js"),
|
|
57117
|
+
"ru": () => import("./ru-BzLZv0B7.js"),
|
|
57118
|
+
"fr": () => import("./fr-CNTSedYU.js")
|
|
57119
|
+
};
|
|
57120
|
+
var cached = /* @__PURE__ */ new Map();
|
|
57121
|
+
var english = Promise.resolve({});
|
|
57122
|
+
function loadTriggerTranslations(locale) {
|
|
57123
|
+
if (locale == "en") return english;
|
|
57124
|
+
const existing = cached.get(locale);
|
|
57125
|
+
if (existing != null) return existing;
|
|
57126
|
+
const request = loaders[locale]().then((module) => module.default);
|
|
57127
|
+
cached.set(locale, request);
|
|
57128
|
+
request.catch(() => {
|
|
57129
|
+
if (cached.get(locale) == request) cached.delete(locale);
|
|
57130
|
+
});
|
|
57131
|
+
return request;
|
|
57132
|
+
}
|
|
57133
|
+
async function localizeTrigger(definition, locale) {
|
|
57134
|
+
const copy = (await loadTriggerTranslations(locale))[definition.key];
|
|
57135
|
+
const englishFields = englishTriggerFieldDescriptions[definition.key];
|
|
57136
|
+
return {
|
|
57137
|
+
configInputs: fieldDescriptions(definition.configInputs, copy?.configInputs, englishFields?.configInputs),
|
|
57138
|
+
configInputLabels: triggerConfigFieldLabels[locale][definition.key] ?? {},
|
|
57139
|
+
displayName: copy?.displayName ?? definition.displayName,
|
|
57140
|
+
description: copy?.description ?? definition.description,
|
|
57141
|
+
outputs: fieldDescriptions(definition.outputs, copy?.outputs, englishFields?.outputs)
|
|
57142
|
+
};
|
|
57143
|
+
}
|
|
57144
|
+
function fieldDescriptions(fields, translations, fallback) {
|
|
57145
|
+
return Object.fromEntries(fields.flatMap((field) => {
|
|
57146
|
+
if (!("handle" in field)) return [];
|
|
57147
|
+
const description = translations?.[field.handle] ?? fallback?.[field.handle] ?? field.description;
|
|
57148
|
+
return description == null ? [] : [[field.handle, description]];
|
|
57149
|
+
}));
|
|
57150
|
+
}
|
|
57151
|
+
//#endregion
|
|
56148
57152
|
//#region src/flow/common/inputValue.ts
|
|
56149
57153
|
/** An explicit clear suppresses the default; absent mappings still inherit it. */
|
|
56150
57154
|
function inputValue(mapping, fallback) {
|
|
@@ -56176,6 +57180,167 @@ function dequal$1(foo, bar) {
|
|
|
56176
57180
|
return foo !== foo && bar !== bar;
|
|
56177
57181
|
}
|
|
56178
57182
|
//#endregion
|
|
57183
|
+
//#region src/http/common/headers.ts
|
|
57184
|
+
/** Header names are case-insensitive; never silently combine duplicate business fields. */
|
|
57185
|
+
function httpHeaderNameIssue(name, names) {
|
|
57186
|
+
if (!/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/.test(name)) return "invalid";
|
|
57187
|
+
if (names.some((candidate) => candidate.toLowerCase() === name.toLowerCase())) return "duplicate";
|
|
57188
|
+
}
|
|
57189
|
+
//#endregion
|
|
57190
|
+
//#region src/flow/common/requestParameters.ts
|
|
57191
|
+
var requestParameterSchema = strictObject({
|
|
57192
|
+
mode: _enum(["fields", "object"]).default("fields"),
|
|
57193
|
+
names: array(string$1()).default([])
|
|
57194
|
+
});
|
|
57195
|
+
function requestParameterHandle(group, name) {
|
|
57196
|
+
return `${group === "query" ? "query" : "header"}.${name}`;
|
|
57197
|
+
}
|
|
57198
|
+
function requestParameterPorts(config, querySchema, queryValueSchema, headerSchema) {
|
|
57199
|
+
return ["query", "headers"].flatMap((group) => config[group].mode === "object" ? [{
|
|
57200
|
+
handle: group,
|
|
57201
|
+
jsonSchema: group === "query" ? querySchema : headerSchema,
|
|
57202
|
+
nullable: true
|
|
57203
|
+
}] : config[group].names.filter((name) => name.trim()).map((name) => ({
|
|
57204
|
+
handle: requestParameterHandle(group, name),
|
|
57205
|
+
jsonSchema: group === "query" ? queryValueSchema : { type: "string" },
|
|
57206
|
+
nullable: true
|
|
57207
|
+
})));
|
|
57208
|
+
}
|
|
57209
|
+
function retainRequestPorts(ports, old = []) {
|
|
57210
|
+
const remaining = new Map(ports.map((port) => [port.handle, port]));
|
|
57211
|
+
return [...old.flatMap((item) => {
|
|
57212
|
+
if ("group" in item) return [item];
|
|
57213
|
+
const next = remaining.get(item.handle);
|
|
57214
|
+
if (next == null) return [];
|
|
57215
|
+
remaining.delete(item.handle);
|
|
57216
|
+
return [dequal$1(item.jsonSchema, next.jsonSchema) && item.nullable == next.nullable ? item : next];
|
|
57217
|
+
}), ...remaining.values()];
|
|
57218
|
+
}
|
|
57219
|
+
function requestParameterIssues(config) {
|
|
57220
|
+
const issues = [];
|
|
57221
|
+
for (const group of ["query", "headers"]) {
|
|
57222
|
+
if (config[group].mode !== "fields") continue;
|
|
57223
|
+
const seen = /* @__PURE__ */ new Set();
|
|
57224
|
+
for (const [index, name] of config[group].names.entries()) {
|
|
57225
|
+
const key = group === "headers" ? name.toLowerCase() : name;
|
|
57226
|
+
if (!name.trim() || seen.has(key)) issues.push({
|
|
57227
|
+
field: group,
|
|
57228
|
+
index,
|
|
57229
|
+
code: "parameterNamesInvalid",
|
|
57230
|
+
message: "Parameter names must be nonempty and unique."
|
|
57231
|
+
});
|
|
57232
|
+
seen.add(key);
|
|
57233
|
+
if (group === "headers" && httpHeaderNameIssue(name, []) === "invalid") issues.push({
|
|
57234
|
+
field: group,
|
|
57235
|
+
index,
|
|
57236
|
+
code: "headerNameInvalid",
|
|
57237
|
+
message: "Invalid HTTP header name."
|
|
57238
|
+
});
|
|
57239
|
+
}
|
|
57240
|
+
}
|
|
57241
|
+
return issues;
|
|
57242
|
+
}
|
|
57243
|
+
//#endregion
|
|
57244
|
+
//#region src/connector/common/proxy.ts
|
|
57245
|
+
var connectorProxyConfigSchema = strictObject({
|
|
57246
|
+
providerId: string$1().min(1),
|
|
57247
|
+
connectionId: string$1().optional(),
|
|
57248
|
+
method: _enum([
|
|
57249
|
+
"GET",
|
|
57250
|
+
"POST",
|
|
57251
|
+
"PUT",
|
|
57252
|
+
"PATCH",
|
|
57253
|
+
"DELETE"
|
|
57254
|
+
]).default("GET"),
|
|
57255
|
+
query: requestParameterSchema.default({
|
|
57256
|
+
mode: "fields",
|
|
57257
|
+
names: []
|
|
57258
|
+
}),
|
|
57259
|
+
headers: requestParameterSchema.default({
|
|
57260
|
+
mode: "fields",
|
|
57261
|
+
names: []
|
|
57262
|
+
}),
|
|
57263
|
+
bodyFormat: _enum(["none", "json"]).default("none")
|
|
57264
|
+
});
|
|
57265
|
+
var connectorProxyExecutorSchema = connectorProxyConfigSchema.extend({ kind: literal("connector-proxy") });
|
|
57266
|
+
var connectorProxyQueryValueSchema = { type: [
|
|
57267
|
+
"string",
|
|
57268
|
+
"number",
|
|
57269
|
+
"boolean",
|
|
57270
|
+
"null"
|
|
57271
|
+
] };
|
|
57272
|
+
var connectorProxyQuerySchema = {
|
|
57273
|
+
type: "object",
|
|
57274
|
+
additionalProperties: connectorProxyQueryValueSchema
|
|
57275
|
+
};
|
|
57276
|
+
var connectorProxyHeaderSchema = {
|
|
57277
|
+
type: "object",
|
|
57278
|
+
additionalProperties: { type: "string" }
|
|
57279
|
+
};
|
|
57280
|
+
var connectorProxyBodyInput = {
|
|
57281
|
+
handle: "body",
|
|
57282
|
+
jsonSchema: {},
|
|
57283
|
+
nullable: true
|
|
57284
|
+
};
|
|
57285
|
+
function connectorProxySupportsBody(method) {
|
|
57286
|
+
return method !== "GET";
|
|
57287
|
+
}
|
|
57288
|
+
function connectorProxyHasBody(mapping, defaultValue) {
|
|
57289
|
+
if (mapping?.kind === "unset") return false;
|
|
57290
|
+
return mapping == null ? defaultValue !== void 0 : mapping.kind === "value" || mapping.sources.length > 0;
|
|
57291
|
+
}
|
|
57292
|
+
function connectorProxyTask(config, name = "Custom API Request", previous) {
|
|
57293
|
+
const { connectionId, ...settings } = config;
|
|
57294
|
+
const inputs = [
|
|
57295
|
+
{
|
|
57296
|
+
handle: "endpoint",
|
|
57297
|
+
jsonSchema: { type: "string" },
|
|
57298
|
+
nullable: false
|
|
57299
|
+
},
|
|
57300
|
+
...requestParameterPorts(config, connectorProxyQuerySchema, connectorProxyQueryValueSchema, connectorProxyHeaderSchema),
|
|
57301
|
+
...config.bodyFormat === "none" ? [] : [connectorProxyBodyInput]
|
|
57302
|
+
];
|
|
57303
|
+
const outputs = [
|
|
57304
|
+
{
|
|
57305
|
+
handle: "body",
|
|
57306
|
+
jsonSchema: {},
|
|
57307
|
+
nullable: true
|
|
57308
|
+
},
|
|
57309
|
+
{
|
|
57310
|
+
handle: "statusCode",
|
|
57311
|
+
jsonSchema: { type: "integer" },
|
|
57312
|
+
nullable: false
|
|
57313
|
+
},
|
|
57314
|
+
{
|
|
57315
|
+
handle: "headers",
|
|
57316
|
+
jsonSchema: connectorProxyHeaderSchema,
|
|
57317
|
+
nullable: false
|
|
57318
|
+
},
|
|
57319
|
+
{
|
|
57320
|
+
handle: "bodyEncoding",
|
|
57321
|
+
jsonSchema: { const: "base64" },
|
|
57322
|
+
nullable: true
|
|
57323
|
+
}
|
|
57324
|
+
];
|
|
57325
|
+
return {
|
|
57326
|
+
name,
|
|
57327
|
+
executor: {
|
|
57328
|
+
...settings,
|
|
57329
|
+
...connectionId === void 0 ? {} : { connectionId },
|
|
57330
|
+
kind: "connector-proxy"
|
|
57331
|
+
},
|
|
57332
|
+
inputs: retainRequestPorts(inputs, previous?.inputs),
|
|
57333
|
+
outputs: retainRequestPorts(outputs, previous?.outputs)
|
|
57334
|
+
};
|
|
57335
|
+
}
|
|
57336
|
+
function connectorProxyIssues(config, hasBody = config.bodyFormat !== "none") {
|
|
57337
|
+
return [...requestParameterIssues(config), ...!connectorProxySupportsBody(config.method) && hasBody ? [{
|
|
57338
|
+
field: "bodyFormat",
|
|
57339
|
+
code: "bodyUnsupported",
|
|
57340
|
+
message: "GET does not support a request body."
|
|
57341
|
+
}] : []];
|
|
57342
|
+
}
|
|
57343
|
+
//#endregion
|
|
56179
57344
|
//#region ../../node_modules/.bun/@cfworker+json-schema@4.1.1/node_modules/@cfworker/json-schema/dist/esm/deep-compare-strict.js
|
|
56180
57345
|
function deepCompareStrict(a, b) {
|
|
56181
57346
|
const typeofa = typeof a;
|
|
@@ -60278,18 +61443,7 @@ function isHttpHost(value) {
|
|
|
60278
61443
|
return httpHostPattern.test(value) && (!value.startsWith("*.") || value.slice(2).includes("."));
|
|
60279
61444
|
}
|
|
60280
61445
|
//#endregion
|
|
60281
|
-
//#region src/http/common/headers.ts
|
|
60282
|
-
/** Header names are case-insensitive; never silently combine duplicate business fields. */
|
|
60283
|
-
function httpHeaderNameIssue(name, names) {
|
|
60284
|
-
if (!/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/.test(name)) return "invalid";
|
|
60285
|
-
if (names.some((candidate) => candidate.toLowerCase() === name.toLowerCase())) return "duplicate";
|
|
60286
|
-
}
|
|
60287
|
-
//#endregion
|
|
60288
61446
|
//#region src/http/common/httpRequest.ts
|
|
60289
|
-
var parameterSchema = strictObject({
|
|
60290
|
-
mode: _enum(["fields", "object"]).default("fields"),
|
|
60291
|
-
names: array(string$1()).default([])
|
|
60292
|
-
});
|
|
60293
61447
|
var httpRequestConfigSchema = strictObject({
|
|
60294
61448
|
method: _enum([
|
|
60295
61449
|
"GET",
|
|
@@ -60300,11 +61454,11 @@ var httpRequestConfigSchema = strictObject({
|
|
|
60300
61454
|
"HEAD",
|
|
60301
61455
|
"OPTIONS"
|
|
60302
61456
|
]).default("GET"),
|
|
60303
|
-
query:
|
|
61457
|
+
query: requestParameterSchema.default({
|
|
60304
61458
|
mode: "fields",
|
|
60305
61459
|
names: []
|
|
60306
61460
|
}),
|
|
60307
|
-
headers:
|
|
61461
|
+
headers: requestParameterSchema.default({
|
|
60308
61462
|
mode: "fields",
|
|
60309
61463
|
names: []
|
|
60310
61464
|
}),
|
|
@@ -60351,32 +61505,12 @@ var httpQuerySchema = {
|
|
|
60351
61505
|
function httpAuthHandles(config) {
|
|
60352
61506
|
return config.authentication.type == "none" ? [] : config.authentication.type == "basic" ? ["auth.username", "auth.password"] : ["auth.token"];
|
|
60353
61507
|
}
|
|
60354
|
-
function retain(ports, old) {
|
|
60355
|
-
const remaining = new Map(ports.map((port) => [port.handle, port]));
|
|
60356
|
-
return [...old.flatMap((item) => {
|
|
60357
|
-
if ("group" in item) return [item];
|
|
60358
|
-
const next = remaining.get(item.handle);
|
|
60359
|
-
if (next == null) return [];
|
|
60360
|
-
remaining.delete(item.handle);
|
|
60361
|
-
return [dequal$1(item.jsonSchema, next.jsonSchema) && item.nullable == next.nullable ? item : next];
|
|
60362
|
-
}), ...remaining.values()];
|
|
60363
|
-
}
|
|
60364
61508
|
function httpRequestTask(config = httpRequestConfigSchema.parse({}), name = "HTTP Request", previous) {
|
|
60365
61509
|
const inputs = [{
|
|
60366
61510
|
handle: "url",
|
|
60367
61511
|
jsonSchema: { type: "string" },
|
|
60368
61512
|
nullable: false
|
|
60369
|
-
}];
|
|
60370
|
-
for (const group of ["query", "headers"]) if (config[group].mode == "object") inputs.push({
|
|
60371
|
-
handle: group,
|
|
60372
|
-
jsonSchema: group == "query" ? httpQuerySchema : httpHeaderSchema,
|
|
60373
|
-
nullable: true
|
|
60374
|
-
});
|
|
60375
|
-
else for (const parameterName of config[group].names.filter((value) => value.trim())) inputs.push({
|
|
60376
|
-
handle: `${group == "query" ? "query" : "header"}.${parameterName}`,
|
|
60377
|
-
jsonSchema: group == "query" ? queryValueSchema : { type: "string" },
|
|
60378
|
-
nullable: true
|
|
60379
|
-
});
|
|
61513
|
+
}, ...requestParameterPorts(config, httpQuerySchema, queryValueSchema, httpHeaderSchema)];
|
|
60380
61514
|
if (config.bodyFormat != "none") inputs.push({
|
|
60381
61515
|
handle: "body",
|
|
60382
61516
|
jsonSchema: config.bodyFormat == "json" ? {} : config.bodyFormat == "text" ? { type: "string" } : httpQuerySchema,
|
|
@@ -60410,8 +61544,8 @@ function httpRequestTask(config = httpRequestConfigSchema.parse({}), name = "HTT
|
|
|
60410
61544
|
...config,
|
|
60411
61545
|
kind: "http-request"
|
|
60412
61546
|
},
|
|
60413
|
-
inputs:
|
|
60414
|
-
outputs:
|
|
61547
|
+
inputs: retainRequestPorts(inputs, previous?.inputs),
|
|
61548
|
+
outputs: retainRequestPorts(outputs, previous?.outputs)
|
|
60415
61549
|
};
|
|
60416
61550
|
}
|
|
60417
61551
|
function httpRequestIssues(config) {
|
|
@@ -60421,26 +61555,7 @@ function httpRequestIssues(config) {
|
|
|
60421
61555
|
code: "bodyUnsupported",
|
|
60422
61556
|
message: "GET and HEAD do not support a request body."
|
|
60423
61557
|
});
|
|
60424
|
-
|
|
60425
|
-
if (config[group].mode != "fields") continue;
|
|
60426
|
-
const seen = /* @__PURE__ */ new Set();
|
|
60427
|
-
for (const [index, name] of config[group].names.entries()) {
|
|
60428
|
-
const key = group == "headers" ? name.toLowerCase() : name;
|
|
60429
|
-
if (!name.trim() || seen.has(key)) issues.push({
|
|
60430
|
-
field: group,
|
|
60431
|
-
index,
|
|
60432
|
-
code: "parameterNamesInvalid",
|
|
60433
|
-
message: "Parameter names must be nonempty and unique."
|
|
60434
|
-
});
|
|
60435
|
-
seen.add(key);
|
|
60436
|
-
if (group == "headers" && httpHeaderNameIssue(name, []) === "invalid") issues.push({
|
|
60437
|
-
field: group,
|
|
60438
|
-
index,
|
|
60439
|
-
code: "headerNameInvalid",
|
|
60440
|
-
message: "Invalid HTTP header name."
|
|
60441
|
-
});
|
|
60442
|
-
}
|
|
60443
|
-
}
|
|
61558
|
+
issues.push(...requestParameterIssues(config));
|
|
60444
61559
|
const auth = config.authentication;
|
|
60445
61560
|
if (auth.type != "none") {
|
|
60446
61561
|
const group = auth.type == "apiKey" && auth.in == "query" ? "query" : "headers";
|
|
@@ -60866,7 +61981,8 @@ var managedFields = object$2({
|
|
|
60866
61981
|
revisionId: text
|
|
60867
61982
|
}),
|
|
60868
61983
|
httpRequestExecutorSchema,
|
|
60869
|
-
skipDuplicatesExecutorSchema
|
|
61984
|
+
skipDuplicatesExecutorSchema,
|
|
61985
|
+
connectorProxyExecutorSchema
|
|
60870
61986
|
])
|
|
60871
61987
|
});
|
|
60872
61988
|
var managed = managedFields.transform(limitDecisionTask);
|
|
@@ -61137,7 +62253,8 @@ var revision = object$2({
|
|
|
61137
62253
|
literal(10),
|
|
61138
62254
|
literal(11),
|
|
61139
62255
|
literal(12),
|
|
61140
|
-
literal(13)
|
|
62256
|
+
literal(13),
|
|
62257
|
+
literal(14)
|
|
61141
62258
|
]),
|
|
61142
62259
|
document: document$1,
|
|
61143
62260
|
modules: record$3(text, module$1)
|
|
@@ -61338,6 +62455,7 @@ array(union$1([...new Map(Object.entries(shapes).map(([kind, shape]) => [kind, s
|
|
|
61338
62455
|
...shape
|
|
61339
62456
|
})])).values()])).min(1);
|
|
61340
62457
|
function checkModelVersion(content) {
|
|
62458
|
+
if (content.modelVersion < 14 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind === "task" && "executor" in candidateNode.task && candidateNode.task.executor.kind === "connector-proxy")) throw new TypeError("Custom API Request requires Flow model v14.");
|
|
61341
62459
|
if (content.modelVersion < 13 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind === "task" && "executor" in candidateNode.task && candidateNode.task.executor.kind === "skip-duplicates")) throw new Error("Skip Duplicates requires Flow model v13.");
|
|
61342
62460
|
if (content.modelVersion < 12 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && "moduleId" in candidateNode.task && candidateNode.task.capabilities?.some((item) => item.kind == "http"))) throw new TypeError("Code HTTP access requires Flow model version 12.");
|
|
61343
62461
|
if (content.modelVersion < 11 && Object.values(content.document.graph.nodes).some((candidateNode) => candidateNode.kind == "task" && "executor" in candidateNode.task && candidateNode.task.executor.kind == "http-request")) throw new TypeError("HTTP Request requires Flow model version 11.");
|
|
@@ -61509,7 +62627,7 @@ var nodeErrorSchema = {
|
|
|
61509
62627
|
}
|
|
61510
62628
|
};
|
|
61511
62629
|
function supportsNodeErrorHandling(node) {
|
|
61512
|
-
return supportsNodeRetry(node) || node.kind === "task" && "executor" in node.task && node.task.executor.kind
|
|
62630
|
+
return supportsNodeRetry(node) || node.kind === "task" && "executor" in node.task && ["skip-duplicates", "connector-proxy"].includes(node.task.executor.kind);
|
|
61513
62631
|
}
|
|
61514
62632
|
function nodeSystemOutputPorts(node) {
|
|
61515
62633
|
return supportsNodeErrorHandling(node) && node.onError == "error" ? { error: {
|
|
@@ -61566,6 +62684,13 @@ function connectionUsage$7(document) {
|
|
|
61566
62684
|
name
|
|
61567
62685
|
});
|
|
61568
62686
|
if (task?.executor.kind == "connector") add("connector", task.executor.action, task.executor.connectionId);
|
|
62687
|
+
if (task?.executor.kind == "connector-proxy") uses.push({
|
|
62688
|
+
kind: "connector-proxy",
|
|
62689
|
+
providerId: task.executor.providerId,
|
|
62690
|
+
connectionId: task.executor.connectionId,
|
|
62691
|
+
nodeId,
|
|
62692
|
+
name
|
|
62693
|
+
});
|
|
61569
62694
|
if (node.kind == "task" && "moduleId" in node.task) {
|
|
61570
62695
|
for (const capability of node.task.capabilities ?? []) if ("mode" in capability && capability.mode == "independent") for (const action of capability.actions) add("code", action.action, action.connectionId);
|
|
61571
62696
|
}
|
|
@@ -61780,6 +62905,17 @@ function triggerOutputPorts(trigger) {
|
|
|
61780
62905
|
return Object.fromEntries(triggerOutputDefinitions(trigger).map(({ handle, ...port }) => [handle, port]));
|
|
61781
62906
|
}
|
|
61782
62907
|
//#endregion
|
|
62908
|
+
//#region src/base/common/jsonSchema.ts
|
|
62909
|
+
/** Keep local definition references usable when a property becomes a standalone schema. */
|
|
62910
|
+
function propertySchemaWithDefinitions(root, schema) {
|
|
62911
|
+
const property = toPlainObject(schema);
|
|
62912
|
+
if (property == null) return schema;
|
|
62913
|
+
const result = Object.assign({}, property);
|
|
62914
|
+
if (result.$defs == null && root.$defs != null) result.$defs = root.$defs;
|
|
62915
|
+
if (result.definitions == null && root.definitions != null) result.definitions = root.definitions;
|
|
62916
|
+
return result;
|
|
62917
|
+
}
|
|
62918
|
+
//#endregion
|
|
61783
62919
|
//#region src/flow/common/sourceField.ts
|
|
61784
62920
|
/** Only explicitly declared, first-level object properties are selectable. */
|
|
61785
62921
|
function sourceFields(output) {
|
|
@@ -61796,7 +62932,7 @@ function sourceFields(output) {
|
|
|
61796
62932
|
field,
|
|
61797
62933
|
port: {
|
|
61798
62934
|
...typeof description == "string" ? { description } : {},
|
|
61799
|
-
jsonSchema,
|
|
62935
|
+
jsonSchema: propertySchemaWithDefinitions(schema, jsonSchema),
|
|
61800
62936
|
nullable: missingParent || !required.includes(field)
|
|
61801
62937
|
}
|
|
61802
62938
|
};
|
|
@@ -62612,8 +63748,8 @@ function selectOperation(value, sourceUrl, path, method) {
|
|
|
62612
63748
|
}
|
|
62613
63749
|
//#endregion
|
|
62614
63750
|
//#region src/runtime/common/engineContract.ts
|
|
62615
|
-
/**
|
|
62616
|
-
var currentEngineContract = "open-flow-engine/
|
|
63751
|
+
/** v11 adds Provider API requests through Connector Proxy. */
|
|
63752
|
+
var currentEngineContract = "open-flow-engine/v11";
|
|
62617
63753
|
/** The published v8 Node compatibility contract, retained for existing Publications and Runs. */
|
|
62618
63754
|
var nodejsEngineContract = "open-flow-engine/v8/nodejs-compat-v1";
|
|
62619
63755
|
var platformSource = (contract) => `export const engineContract = ${JSON.stringify(contract)}
|
|
@@ -62663,13 +63799,19 @@ var v9Contract = {
|
|
|
62663
63799
|
codeFetch: true,
|
|
62664
63800
|
platformSource: platformSource("open-flow-engine/v9")
|
|
62665
63801
|
};
|
|
62666
|
-
var
|
|
63802
|
+
var v10Contract = {
|
|
62667
63803
|
...v9Contract,
|
|
62668
63804
|
flowState: true,
|
|
63805
|
+
platformSource: platformSource("open-flow-engine/v10")
|
|
63806
|
+
};
|
|
63807
|
+
var currentContract = {
|
|
63808
|
+
...v10Contract,
|
|
63809
|
+
connectorProxy: true,
|
|
62669
63810
|
platformSource: platformSource(currentEngineContract)
|
|
62670
63811
|
};
|
|
62671
63812
|
function findEngineContract(contract) {
|
|
62672
|
-
if (contract == "open-flow-engine/
|
|
63813
|
+
if (contract == "open-flow-engine/v11") return currentContract;
|
|
63814
|
+
if (contract == "open-flow-engine/v10") return v10Contract;
|
|
62673
63815
|
if (contract == "open-flow-engine/v9") return v9Contract;
|
|
62674
63816
|
if (contract == "open-flow-engine/v8") return v8Contract;
|
|
62675
63817
|
if (contract == "open-flow-engine/v8/nodejs-compat-v1") return nodejsContract;
|
|
@@ -63665,7 +64807,10 @@ var RevisionView = class {
|
|
|
63665
64807
|
const separator = actionId.indexOf(".");
|
|
63666
64808
|
if (separator > 0) connectorProviderIds.add(actionId.slice(0, separator));
|
|
63667
64809
|
}
|
|
63668
|
-
for (const node of Object.values(this.#document.graph.nodes))
|
|
64810
|
+
for (const node of Object.values(this.#document.graph.nodes)) {
|
|
64811
|
+
if (node.kind == "integration" || node.kind == "poll") connectorProviderIds.add(node.definition.provider);
|
|
64812
|
+
if (node.kind === "task" && "executor" in node.task && node.task.executor.kind === "connector-proxy") connectorProviderIds.add(node.task.executor.providerId);
|
|
64813
|
+
}
|
|
63669
64814
|
this.connectorProviderIds = connectorProviderIds;
|
|
63670
64815
|
}
|
|
63671
64816
|
inputMappings(node) {
|
|
@@ -64062,6 +65207,7 @@ var type$3 = _enum([
|
|
|
64062
65207
|
"integration",
|
|
64063
65208
|
"code",
|
|
64064
65209
|
"connector",
|
|
65210
|
+
"connector-proxy",
|
|
64065
65211
|
"agent",
|
|
64066
65212
|
"llm",
|
|
64067
65213
|
"decision",
|
|
@@ -64196,6 +65342,7 @@ var authoringConfigurations = {
|
|
|
64196
65342
|
capabilities: authoringCapabilities.optional()
|
|
64197
65343
|
}),
|
|
64198
65344
|
"connector": authoringDefinitionSchemas.connector.omit({ outputMode: true }).strict(),
|
|
65345
|
+
"connector-proxy": connectorProxyConfigSchema,
|
|
64199
65346
|
"openapi": authoringOpenApiSchema,
|
|
64200
65347
|
"http-request": httpRequestConfigSchema,
|
|
64201
65348
|
"skip-duplicates": skipDuplicatesConfigSchema,
|
|
@@ -64761,7 +65908,12 @@ function savedVerticalNodeWidths(value) {
|
|
|
64761
65908
|
//#region src/workbench/browser/runtime/workspace.ts
|
|
64762
65909
|
function semanticNodeIcon(node, connectorActions, providers = {}) {
|
|
64763
65910
|
if (node.node.icon != null) return node.node.icon;
|
|
64764
|
-
if (node.kind != "task" || node.definition == null || !("executor" in node.definition)
|
|
65911
|
+
if (node.kind != "task" || node.definition == null || !("executor" in node.definition)) return nodeIcon(node);
|
|
65912
|
+
if (node.definition.executor.kind === "connector-proxy") {
|
|
65913
|
+
const provider = providers[node.definition.executor.providerId];
|
|
65914
|
+
return provider == null ? nodeIcon(node) : providerIcon(provider);
|
|
65915
|
+
}
|
|
65916
|
+
if (node.definition.executor.kind !== "connector") return nodeIcon(node);
|
|
64765
65917
|
const actionId = node.definition.executor.action;
|
|
64766
65918
|
const provider = connectorActions[actionId] ?? providers[actionId.split(".")[0]];
|
|
64767
65919
|
return provider == null ? nodeIcon(node) : providerIcon(provider);
|
|
@@ -64805,7 +65957,7 @@ function nodeIcon(node) {
|
|
|
64805
65957
|
if (task.executor.kind == "http-request") return ":lucide-light:globe:";
|
|
64806
65958
|
if (task.executor.kind == "skip-duplicates") return ":lucide-light:list-filter:";
|
|
64807
65959
|
if (task.executor.kind == "openapi") return ":logos:openapi-icon:";
|
|
64808
|
-
return task.executor.kind == "connector" ? ":carbon:connection-signal:" : ":carbon:machine-learning-model:";
|
|
65960
|
+
return task.executor.kind == "connector" || task.executor.kind === "connector-proxy" ? ":carbon:connection-signal:" : ":carbon:machine-learning-model:";
|
|
64809
65961
|
}
|
|
64810
65962
|
}
|
|
64811
65963
|
}
|
|
@@ -65068,7 +66220,8 @@ function executorName(task, providerName, t) {
|
|
|
65068
66220
|
if (task.executor.kind == "openapi") return "OpenAPI";
|
|
65069
66221
|
if (task.executor.kind == "skip-duplicates") return t?.("flowState.nodeTitle") ?? "Skip Duplicates";
|
|
65070
66222
|
if (task.executor.kind == "llm") return t?.("designer.executorLlm") ?? "LLM";
|
|
65071
|
-
|
|
66223
|
+
const providerId = task.executor.kind === "connector-proxy" ? task.executor.providerId : task.executor.action.split(".")[0];
|
|
66224
|
+
return `${t?.("designer.executorConnector") ?? "Connector"} · ${providerName ?? providerId}`;
|
|
65072
66225
|
}
|
|
65073
66226
|
function triggerIcon(trigger) {
|
|
65074
66227
|
switch (trigger.kind) {
|
|
@@ -65275,13 +66428,14 @@ function semanticDesignerNode(nodeId, resolved, ports, position, context) {
|
|
|
65275
66428
|
const inputs = groupedInputs(resolved, designerInputs(nodeId, node, ports, context.revision));
|
|
65276
66429
|
const outputs = groupedOutputs(resolved, designerOutputs(ports));
|
|
65277
66430
|
const task = resolved.kind == "task" ? resolved.definition : void 0;
|
|
65278
|
-
const connector = task != null && "executor" in task && task.executor.kind == "connector" ? task.executor : void 0;
|
|
65279
|
-
const connectorAction = connector
|
|
65280
|
-
const
|
|
65281
|
-
const
|
|
66431
|
+
const connector = task != null && "executor" in task && (task.executor.kind == "connector" || task.executor.kind === "connector-proxy") ? task.executor : void 0;
|
|
66432
|
+
const connectorAction = connector?.kind !== "connector" ? void 0 : context.connectorActions[connector.action];
|
|
66433
|
+
const providerId = connector?.kind === "connector-proxy" ? connector.providerId : connector?.action.split(".")[0];
|
|
66434
|
+
const connectorProvider = providerId == null ? void 0 : context.providers[providerId];
|
|
66435
|
+
const connections = providerId == null ? void 0 : context.connectionCatalogs[providerId];
|
|
65282
66436
|
const connectionId = connector?.connectionId;
|
|
65283
66437
|
const selectedConnection = connectionId == null ? void 0 : connections?.byId.get(connectionId);
|
|
65284
|
-
const connectionRequired = connectionId !== "" && connectorAction?.authenticated == true && (connector?.connectionId == null || connections != null && selectedConnection?.status != "active") || nodeDiagnosticCount(resolved, context.diagnostics.filter((diagnostic) => diagnostic.code === "task.action-connection-required")) > 0;
|
|
66438
|
+
const connectionRequired = connectionId !== "" && (connector?.kind === "connector-proxy" ? connectorProvider != null && !connectorProvider.noSetup : connectorAction?.authenticated == true) && (connector?.connectionId == null || connections != null && selectedConnection?.status != "active") || nodeDiagnosticCount(resolved, context.diagnostics.filter((diagnostic) => diagnostic.code === "task.action-connection-required")) > 0;
|
|
65285
66439
|
const nodeRun = context.runNodes.get(nodeId);
|
|
65286
66440
|
const common = {
|
|
65287
66441
|
description: node.description,
|
|
@@ -66622,6 +67776,214 @@ function FlowNodeList({ nodes, onFocusNode, onSelect, groupTriggers = false }) {
|
|
|
66622
67776
|
})
|
|
66623
67777
|
});
|
|
66624
67778
|
}
|
|
67779
|
+
var fieldTable_module_default = {
|
|
67780
|
+
list: "fieldTable_list_14bfd",
|
|
67781
|
+
columns: "fieldTable_columns_14bfd",
|
|
67782
|
+
nameHeading: "fieldTable_nameHeading_14bfd",
|
|
67783
|
+
typeHeading: "fieldTable_typeHeading_14bfd",
|
|
67784
|
+
valueHeading: "fieldTable_valueHeading_14bfd",
|
|
67785
|
+
row: "fieldTable_row_14bfd",
|
|
67786
|
+
nullableControl: "fieldTable_nullableControl_14bfd",
|
|
67787
|
+
nullableHeading: "fieldTable_nullableHeading_14bfd"
|
|
67788
|
+
};
|
|
67789
|
+
var fieldBranch_module_default = { branch: "fieldBranch_branch_a5820" };
|
|
67790
|
+
var valueEditor_module_default = {
|
|
67791
|
+
root: "valueEditor_root_4a4f1",
|
|
67792
|
+
errorAnchor: "valueEditor_errorAnchor_4a4f1",
|
|
67793
|
+
body: "valueEditor_body_4a4f1",
|
|
67794
|
+
valueTools: "valueEditor_valueTools_4a4f1",
|
|
67795
|
+
options: "valueEditor_options_4a4f1",
|
|
67796
|
+
toolbar: "valueEditor_toolbar_4a4f1",
|
|
67797
|
+
presence: "valueEditor_presence_4a4f1",
|
|
67798
|
+
actions: "valueEditor_actions_4a4f1",
|
|
67799
|
+
collection: "valueEditor_collection_4a4f1",
|
|
67800
|
+
fieldName: "valueEditor_fieldName_4a4f1",
|
|
67801
|
+
fieldType: "valueEditor_fieldType_4a4f1",
|
|
67802
|
+
json: "valueEditor_json_4a4f1",
|
|
67803
|
+
description: "valueEditor_description_4a4f1",
|
|
67804
|
+
error: "valueEditor_error_4a4f1",
|
|
67805
|
+
summary: "valueEditor_summary_4a4f1",
|
|
67806
|
+
summaryError: "valueEditor_summaryError_4a4f1",
|
|
67807
|
+
srOnly: "valueEditor_srOnly_4a4f1",
|
|
67808
|
+
option: "valueEditor_option_4a4f1",
|
|
67809
|
+
header: "valueEditor_header_4a4f1",
|
|
67810
|
+
leadingControl: "valueEditor_leadingControl_4a4f1",
|
|
67811
|
+
toggleControl: "valueEditor_toggleControl_4a4f1",
|
|
67812
|
+
valueAddon: "valueEditor_valueAddon_4a4f1",
|
|
67813
|
+
summaryText: "valueEditor_summaryText_4a4f1",
|
|
67814
|
+
clearValue: "valueEditor_clearValue_4a4f1",
|
|
67815
|
+
resetValue: "valueEditor_resetValue_4a4f1",
|
|
67816
|
+
unsetValue: "valueEditor_unsetValue_4a4f1",
|
|
67817
|
+
arrayIndex: "valueEditor_arrayIndex_4a4f1",
|
|
67818
|
+
nullValue: "valueEditor_nullValue_4a4f1",
|
|
67819
|
+
nullChip: "valueEditor_nullChip_4a4f1",
|
|
67820
|
+
collectionActions: "valueEditor_collectionActions_4a4f1",
|
|
67821
|
+
emptyObjectContent: "valueEditor_emptyObjectContent_4a4f1",
|
|
67822
|
+
emptyObjectConstraint: "valueEditor_emptyObjectConstraint_4a4f1",
|
|
67823
|
+
jsonCode: "valueEditor_jsonCode_4a4f1",
|
|
67824
|
+
emptyString: "valueEditor_emptyString_4a4f1",
|
|
67825
|
+
booleanControl: "valueEditor_booleanControl_4a4f1",
|
|
67826
|
+
booleanIndicator: "valueEditor_booleanIndicator_4a4f1",
|
|
67827
|
+
objectNotice: "valueEditor_objectNotice_4a4f1",
|
|
67828
|
+
valuePrefix: "valueEditor_valuePrefix_4a4f1"
|
|
67829
|
+
};
|
|
67830
|
+
//#endregion
|
|
67831
|
+
//#region src/form/browser/fieldLayout.tsx
|
|
67832
|
+
var Geometry = createContext({
|
|
67833
|
+
depth: 0,
|
|
67834
|
+
layout: "values"
|
|
67835
|
+
});
|
|
67836
|
+
function FieldLayout({ children, depth = 0, layout = "values", columns, gap }) {
|
|
67837
|
+
return /* @__PURE__ */ jsx(Geometry.Provider, {
|
|
67838
|
+
value: {
|
|
67839
|
+
depth,
|
|
67840
|
+
layout,
|
|
67841
|
+
columns,
|
|
67842
|
+
gap
|
|
67843
|
+
},
|
|
67844
|
+
children
|
|
67845
|
+
});
|
|
67846
|
+
}
|
|
67847
|
+
var FieldRow = forwardRef(({ columns, gap, header, valueOnly, leadingControl, disclosureContent, trailingControl, actions, layout, depth, typeWidth, disclosure, label, sorting, disclosureInvalid, stacking = "editor", children, style, className, ...props }, ref) => {
|
|
67848
|
+
const geometry = useContext(Geometry);
|
|
67849
|
+
const level = depth ?? geometry.depth;
|
|
67850
|
+
const hasHeader = header != null || valueOnly === true;
|
|
67851
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
67852
|
+
...props,
|
|
67853
|
+
ref,
|
|
67854
|
+
className: [valueEditor_module_default.root, className].filter(Boolean).join(" "),
|
|
67855
|
+
"data-stacking": stacking,
|
|
67856
|
+
"data-layout": layout ?? geometry.layout,
|
|
67857
|
+
"data-header": hasHeader || void 0,
|
|
67858
|
+
"data-value-only": valueOnly || void 0,
|
|
67859
|
+
"data-nested-field": level > 0 || void 0,
|
|
67860
|
+
style: {
|
|
67861
|
+
"gridTemplateColumns": columns ?? geometry.columns,
|
|
67862
|
+
"columnGap": gap ?? geometry.gap,
|
|
67863
|
+
"--field-indent": `${level * 16}px`,
|
|
67864
|
+
...typeWidth === "fixed" ? { "--field-type-width": "32px" } : typeWidth === "editable" ? { "--field-type-width": "56px" } : {},
|
|
67865
|
+
...style
|
|
67866
|
+
},
|
|
67867
|
+
children: [
|
|
67868
|
+
hasHeader && /* @__PURE__ */ jsxs("div", {
|
|
67869
|
+
className: valueEditor_module_default.header,
|
|
67870
|
+
children: [
|
|
67871
|
+
leadingControl != null && /* @__PURE__ */ jsx("div", {
|
|
67872
|
+
className: valueEditor_module_default.leadingControl,
|
|
67873
|
+
children: leadingControl
|
|
67874
|
+
}),
|
|
67875
|
+
/* @__PURE__ */ jsxs("div", {
|
|
67876
|
+
className: valueEditor_module_default.toggleControl,
|
|
67877
|
+
children: [disclosure && (!sorting || leadingControl == null) && /* @__PURE__ */ jsx(Button$1, {
|
|
67878
|
+
type: "button",
|
|
67879
|
+
size: "icon-xs",
|
|
67880
|
+
className: "w-[var(--field-toggle-width,24px)]",
|
|
67881
|
+
variant: "disclosure",
|
|
67882
|
+
"aria-label": label,
|
|
67883
|
+
"aria-expanded": disclosure.expanded,
|
|
67884
|
+
"aria-invalid": disclosureInvalid || void 0,
|
|
67885
|
+
"aria-controls": disclosure.controls,
|
|
67886
|
+
onClick: disclosure.onToggle,
|
|
67887
|
+
children: disclosureContent ?? /* @__PURE__ */ jsx("i", {
|
|
67888
|
+
"aria-hidden": "true",
|
|
67889
|
+
className: disclosure.expanded ? "i-lucide-light:chevron-down" : "i-lucide-light:chevron-right"
|
|
67890
|
+
})
|
|
67891
|
+
}), !disclosure && leadingControl == null && disclosureContent]
|
|
67892
|
+
}),
|
|
67893
|
+
!valueOnly && (typeof header === "function" ? header(disclosure) : header)
|
|
67894
|
+
]
|
|
67895
|
+
}),
|
|
67896
|
+
children,
|
|
67897
|
+
trailingControl,
|
|
67898
|
+
actions != null && /* @__PURE__ */ jsx("div", {
|
|
67899
|
+
className: valueEditor_module_default.options,
|
|
67900
|
+
children: actions
|
|
67901
|
+
})
|
|
67902
|
+
]
|
|
67903
|
+
});
|
|
67904
|
+
});
|
|
67905
|
+
/** Expanded values stay in their cell; structural branches establish a child geometry and connector. */
|
|
67906
|
+
function FieldBody({ placement, endpoint = "control", depth, className, children, ...props }) {
|
|
67907
|
+
const geometry = useContext(Geometry);
|
|
67908
|
+
return /* @__PURE__ */ jsx("div", {
|
|
67909
|
+
...props,
|
|
67910
|
+
className: [className, placement === "branch" && fieldBranch_module_default.branch].filter(Boolean).join(" "),
|
|
67911
|
+
"data-field-branch": placement === "branch" || void 0,
|
|
67912
|
+
"data-branch-endpoint": placement === "branch" ? endpoint : void 0,
|
|
67913
|
+
children: /* @__PURE__ */ jsx(FieldLayout, {
|
|
67914
|
+
...geometry,
|
|
67915
|
+
depth: depth ?? geometry.depth + (placement === "branch" ? 1 : 0),
|
|
67916
|
+
children
|
|
67917
|
+
})
|
|
67918
|
+
});
|
|
67919
|
+
}
|
|
67920
|
+
//#endregion
|
|
67921
|
+
//#region src/form/browser/fieldTable.tsx
|
|
67922
|
+
/** Shared field geometry. Callers own definitions, values, actions and persistence. */
|
|
67923
|
+
var FieldTable = forwardRef(({ layout = "definition", fixedTypes, typeColumn = true, columnHeadings = true, output, nullable, empty, actionSlots = 1, standalone, className, children, ...props }, ref) => {
|
|
67924
|
+
const t = useTranslate();
|
|
67925
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
67926
|
+
...props,
|
|
67927
|
+
ref,
|
|
67928
|
+
className: [fieldTable_module_default.list, className].filter(Boolean).join(" "),
|
|
67929
|
+
"data-value-editor-scope": true,
|
|
67930
|
+
"data-layout": layout,
|
|
67931
|
+
"data-type-column": typeColumn || void 0,
|
|
67932
|
+
"data-output": output || void 0,
|
|
67933
|
+
"data-fixed-types": fixedTypes || void 0,
|
|
67934
|
+
"data-nullable": nullable || void 0,
|
|
67935
|
+
"data-empty": empty || void 0,
|
|
67936
|
+
"data-action-slots": actionSlots,
|
|
67937
|
+
"data-standalone": standalone || void 0,
|
|
67938
|
+
children: [columnHeadings && !empty && /* @__PURE__ */ jsxs("div", {
|
|
67939
|
+
className: fieldTable_module_default.columns,
|
|
67940
|
+
"data-layout": layout,
|
|
67941
|
+
"data-output": output || void 0,
|
|
67942
|
+
children: [
|
|
67943
|
+
/* @__PURE__ */ jsx("span", {
|
|
67944
|
+
className: fieldTable_module_default.nameHeading,
|
|
67945
|
+
children: t("valueEditor.columnName")
|
|
67946
|
+
}),
|
|
67947
|
+
typeColumn && /* @__PURE__ */ jsx("span", {
|
|
67948
|
+
className: fieldTable_module_default.typeHeading,
|
|
67949
|
+
children: t("valueEditor.columnType")
|
|
67950
|
+
}),
|
|
67951
|
+
!output && /* @__PURE__ */ jsx("span", {
|
|
67952
|
+
className: fieldTable_module_default.valueHeading,
|
|
67953
|
+
children: t("valueEditor.columnValue")
|
|
67954
|
+
}),
|
|
67955
|
+
nullable && /* @__PURE__ */ jsx("span", {
|
|
67956
|
+
className: fieldTable_module_default.nullableHeading,
|
|
67957
|
+
children: t("valueEditor.nullable")
|
|
67958
|
+
})
|
|
67959
|
+
]
|
|
67960
|
+
}), /* @__PURE__ */ jsx(FieldLayout, {
|
|
67961
|
+
layout,
|
|
67962
|
+
children
|
|
67963
|
+
})]
|
|
67964
|
+
});
|
|
67965
|
+
});
|
|
67966
|
+
function FieldTableRow({ className, ...props }) {
|
|
67967
|
+
return /* @__PURE__ */ jsx("div", {
|
|
67968
|
+
...props,
|
|
67969
|
+
className: [fieldTable_module_default.row, className].filter(Boolean).join(" ")
|
|
67970
|
+
});
|
|
67971
|
+
}
|
|
67972
|
+
function FieldNullable({ name, checked, onChange }) {
|
|
67973
|
+
const t = useTranslate();
|
|
67974
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
67975
|
+
render: /* @__PURE__ */ jsx("span", { className: fieldTable_module_default.nullableControl }),
|
|
67976
|
+
children: /* @__PURE__ */ jsx(Checkbox, {
|
|
67977
|
+
className: "not-data-disabled:cursor-pointer",
|
|
67978
|
+
"aria-label": `${name} ${t("valueEditor.nullable")}`,
|
|
67979
|
+
"aria-checked": checked,
|
|
67980
|
+
checked,
|
|
67981
|
+
indeterminate: !onChange && !checked,
|
|
67982
|
+
disabled: !onChange,
|
|
67983
|
+
onCheckedChange: (next) => onChange?.(next === true)
|
|
67984
|
+
})
|
|
67985
|
+
}), /* @__PURE__ */ jsx(TooltipContent, { children: t(checked ? "valueEditor.nullableDescription" : "valueEditor.notNullableDescription") })] });
|
|
67986
|
+
}
|
|
66625
67987
|
//#endregion
|
|
66626
67988
|
//#region src/ui/browser/label.tsx
|
|
66627
67989
|
function Label({ className, ...props }) {
|
|
@@ -66807,46 +68169,6 @@ var Input = m$4.forwardRef(function Input({ className, type, controlSize = "defa
|
|
|
66807
68169
|
...props
|
|
66808
68170
|
});
|
|
66809
68171
|
});
|
|
66810
|
-
var valueEditor_module_default = {
|
|
66811
|
-
root: "valueEditor_root_4a4f1",
|
|
66812
|
-
errorAnchor: "valueEditor_errorAnchor_4a4f1",
|
|
66813
|
-
body: "valueEditor_body_4a4f1",
|
|
66814
|
-
valueTools: "valueEditor_valueTools_4a4f1",
|
|
66815
|
-
options: "valueEditor_options_4a4f1",
|
|
66816
|
-
toolbar: "valueEditor_toolbar_4a4f1",
|
|
66817
|
-
presence: "valueEditor_presence_4a4f1",
|
|
66818
|
-
actions: "valueEditor_actions_4a4f1",
|
|
66819
|
-
collection: "valueEditor_collection_4a4f1",
|
|
66820
|
-
fieldName: "valueEditor_fieldName_4a4f1",
|
|
66821
|
-
fieldType: "valueEditor_fieldType_4a4f1",
|
|
66822
|
-
json: "valueEditor_json_4a4f1",
|
|
66823
|
-
description: "valueEditor_description_4a4f1",
|
|
66824
|
-
error: "valueEditor_error_4a4f1",
|
|
66825
|
-
summary: "valueEditor_summary_4a4f1",
|
|
66826
|
-
summaryError: "valueEditor_summaryError_4a4f1",
|
|
66827
|
-
srOnly: "valueEditor_srOnly_4a4f1",
|
|
66828
|
-
option: "valueEditor_option_4a4f1",
|
|
66829
|
-
header: "valueEditor_header_4a4f1",
|
|
66830
|
-
leadingControl: "valueEditor_leadingControl_4a4f1",
|
|
66831
|
-
toggleControl: "valueEditor_toggleControl_4a4f1",
|
|
66832
|
-
valueAddon: "valueEditor_valueAddon_4a4f1",
|
|
66833
|
-
summaryText: "valueEditor_summaryText_4a4f1",
|
|
66834
|
-
clearValue: "valueEditor_clearValue_4a4f1",
|
|
66835
|
-
resetValue: "valueEditor_resetValue_4a4f1",
|
|
66836
|
-
unsetValue: "valueEditor_unsetValue_4a4f1",
|
|
66837
|
-
arrayIndex: "valueEditor_arrayIndex_4a4f1",
|
|
66838
|
-
nullValue: "valueEditor_nullValue_4a4f1",
|
|
66839
|
-
nullChip: "valueEditor_nullChip_4a4f1",
|
|
66840
|
-
collectionActions: "valueEditor_collectionActions_4a4f1",
|
|
66841
|
-
emptyObjectContent: "valueEditor_emptyObjectContent_4a4f1",
|
|
66842
|
-
emptyObjectConstraint: "valueEditor_emptyObjectConstraint_4a4f1",
|
|
66843
|
-
jsonCode: "valueEditor_jsonCode_4a4f1",
|
|
66844
|
-
emptyString: "valueEditor_emptyString_4a4f1",
|
|
66845
|
-
booleanControl: "valueEditor_booleanControl_4a4f1",
|
|
66846
|
-
booleanIndicator: "valueEditor_booleanIndicator_4a4f1",
|
|
66847
|
-
objectNotice: "valueEditor_objectNotice_4a4f1",
|
|
66848
|
-
valuePrefix: "valueEditor_valuePrefix_4a4f1"
|
|
66849
|
-
};
|
|
66850
68172
|
//#endregion
|
|
66851
68173
|
//#region src/form/browser/fieldControl.tsx
|
|
66852
68174
|
/** Gives custom value controls the same attached validation feedback as built-in editors. */
|
|
@@ -78702,8 +80024,8 @@ function editorComponent(schema) {
|
|
|
78702
80024
|
}
|
|
78703
80025
|
return Object.values(editorGroups).some((group) => group.includes(type)) ? type : "json";
|
|
78704
80026
|
}
|
|
78705
|
-
/**
|
|
78706
|
-
function defaultValueEditorSchema(schema) {
|
|
80027
|
+
/** Prefer schema hints; an explicit fallback respects the stored value's type without converting it. */
|
|
80028
|
+
function defaultValueEditorSchema(schema, fallback) {
|
|
78707
80029
|
const hints = { ...objectValue(schema) };
|
|
78708
80030
|
if (hints["ui:widget"] === "any") delete hints["ui:widget"];
|
|
78709
80031
|
delete hints.anyOf;
|
|
@@ -78714,7 +80036,8 @@ function defaultValueEditorSchema(schema) {
|
|
|
78714
80036
|
if (hints.properties != null) hints.type = "object";
|
|
78715
80037
|
else if (hints.items != null) hints.type = "array";
|
|
78716
80038
|
}
|
|
78717
|
-
|
|
80039
|
+
const component = fallback == null ? "string" : fallback.value == null ? fallback.component : valueType({}, fallback.value);
|
|
80040
|
+
return editorComponent(hints) === "json" ? schemaForEditor(component, schema) : hints;
|
|
78718
80041
|
}
|
|
78719
80042
|
/** Changing the editor replaces incompatible constraints, retaining descriptive metadata. */
|
|
78720
80043
|
function schemaForEditor(component, previous) {
|
|
@@ -79007,14 +80330,14 @@ function AccountControlButton({ disabled, status, label, hint, onClick }) {
|
|
|
79007
80330
|
})]
|
|
79008
80331
|
}) }), /* @__PURE__ */ jsx(TooltipContent, { children: hint ?? label })] });
|
|
79009
80332
|
}
|
|
79010
|
-
function AccountSelect({ connections, disabled, loading = false, id, invalid, warning, addWhenEmpty, allowDeferred = false, label, selectedConnection, selectedId, onChange, onManage }) {
|
|
80333
|
+
function AccountSelect({ connections, disabled, readOnly = false, loading = false, id, invalid, warning, addWhenEmpty, allowDeferred = false, label, selectedConnection, selectedId, onChange, onManage }) {
|
|
79011
80334
|
const t = useTranslate();
|
|
79012
80335
|
const [container, setContainer] = useState(null);
|
|
79013
80336
|
const selected = selectedConnection ?? connections.find((candidate) => candidate.connectionId == selectedId);
|
|
79014
80337
|
const showLoading = loading && selected == null && selectedId !== "";
|
|
79015
80338
|
const builtInName = t("inspector.account.oomolBuiltIn");
|
|
79016
80339
|
const displayName = (connection) => accountDisplayName(connection, connection.displayName, builtInName);
|
|
79017
|
-
const selectedLabel = selectedId === "" ? t("inspector.account.deferred") : selected == null ? selectedId == null ? void 0 : `${selectedId} (${t("inspector.account.unavailable")})` : `${displayName(selected)}${selected.isDefault ? ` (${t("inspector.account.teamDefault")})` : ""}`;
|
|
80340
|
+
const selectedLabel = selectedId === "" ? t("inspector.account.deferred") : selected == null ? selectedId == null ? void 0 : readOnly ? selectedId : `${selectedId} (${t("inspector.account.unavailable")})` : `${displayName(selected)}${selected.isDefault ? ` (${t("inspector.account.teamDefault")})` : ""}`;
|
|
79018
80341
|
const missingSelected = selectedId != null && selectedId !== "" && !connections.some((candidate) => candidate.connectionId == selectedId);
|
|
79019
80342
|
const empty = !loading && connections.length == 0;
|
|
79020
80343
|
const items = [
|
|
@@ -79042,7 +80365,7 @@ function AccountSelect({ connections, disabled, loading = false, id, invalid, wa
|
|
|
79042
80365
|
label: t("inspector.account.addAccount")
|
|
79043
80366
|
}]
|
|
79044
80367
|
];
|
|
79045
|
-
if (!allowDeferred && !loading && addWhenEmpty && connections.length === 0 && selectedId == null) return /* @__PURE__ */ jsx(AccountControlButton, {
|
|
80368
|
+
if (!readOnly && !allowDeferred && !loading && addWhenEmpty && connections.length === 0 && selectedId == null) return /* @__PURE__ */ jsx(AccountControlButton, {
|
|
79046
80369
|
disabled,
|
|
79047
80370
|
status: "warning",
|
|
79048
80371
|
onClick: onManage,
|
|
@@ -79052,7 +80375,7 @@ function AccountSelect({ connections, disabled, loading = false, id, invalid, wa
|
|
|
79052
80375
|
ref: setContainer,
|
|
79053
80376
|
className: "account-select relative min-w-0",
|
|
79054
80377
|
children: [/* @__PURE__ */ jsxs(Select$1, {
|
|
79055
|
-
disabled: disabled || loading,
|
|
80378
|
+
disabled: readOnly || disabled || loading,
|
|
79056
80379
|
items,
|
|
79057
80380
|
value: selectedId ?? null,
|
|
79058
80381
|
onValueChange: (value) => {
|
|
@@ -79069,8 +80392,8 @@ function AccountSelect({ connections, disabled, loading = false, id, invalid, wa
|
|
|
79069
80392
|
"data-status": invalid ? "danger" : warning ? "warning" : void 0,
|
|
79070
80393
|
className: `${fieldSelectTriggerClass} account-control`,
|
|
79071
80394
|
children: /* @__PURE__ */ jsx(SelectValue, {
|
|
79072
|
-
className: !loading && selectedId != null ? "mr-5" : void 0,
|
|
79073
|
-
placeholder: t("inspector.account.chooseAccount"),
|
|
80395
|
+
className: !readOnly && !loading && selectedId != null ? "mr-5" : void 0,
|
|
80396
|
+
placeholder: t(readOnly ? "connectorAccess.noAccountSelected" : "inspector.account.chooseAccount"),
|
|
79074
80397
|
children: showLoading ? /* @__PURE__ */ jsxs("span", {
|
|
79075
80398
|
role: "status",
|
|
79076
80399
|
className: "flex min-w-0 items-center gap-2 text-muted-foreground",
|
|
@@ -79124,7 +80447,7 @@ function AccountSelect({ connections, disabled, loading = false, id, invalid, wa
|
|
|
79124
80447
|
})] })
|
|
79125
80448
|
]
|
|
79126
80449
|
})]
|
|
79127
|
-
}), !loading && selectedId != null && /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(Button$1, {
|
|
80450
|
+
}), !readOnly && !loading && selectedId != null && /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, { render: /* @__PURE__ */ jsx(Button$1, {
|
|
79128
80451
|
className: "account-select-clear absolute top-1/2 right-7 -translate-y-1/2 text-muted-foreground",
|
|
79129
80452
|
type: "button",
|
|
79130
80453
|
variant: "ghost",
|
|
@@ -79147,17 +80470,18 @@ function AccountSelect({ connections, disabled, loading = false, id, invalid, wa
|
|
|
79147
80470
|
})] })]
|
|
79148
80471
|
});
|
|
79149
80472
|
}
|
|
79150
|
-
function ConnectorAccount({ accessError, onConfigureAccess,
|
|
80473
|
+
function ConnectorAccount({ accessError, onConfigureAccess, resource, actionError, actionId, activeConnections, authorizationPending, connection, connectionError, connectionId, connectors, disabled, fieldIdPrefix, loading, nodeId }) {
|
|
79151
80474
|
const t = useTranslate();
|
|
79152
80475
|
const available = activeConnections ?? [];
|
|
80476
|
+
const authenticated = resource == null ? void 0 : "authenticated" in resource ? resource.authenticated : !resource.noSetup;
|
|
79153
80477
|
const accessIssue = accessError ?? (actionError?.code == "connector.access-required" || actionError?.code == "connector.access-invalid" ? actionError.message : void 0);
|
|
79154
|
-
const pending = loading || accessIssue == null && actionError == null && (
|
|
79155
|
-
const required = !pending && (accessIssue != null || connectionId !== "" &&
|
|
80478
|
+
const pending = loading || accessIssue == null && actionError == null && (resource == null || activeConnections == null && connectionError == null);
|
|
80479
|
+
const required = !pending && (accessIssue != null || connectionId !== "" && authenticated == true && (connectionId == null || activeConnections != null && connection?.status != "active"));
|
|
79156
80480
|
let onManage;
|
|
79157
80481
|
let content;
|
|
79158
80482
|
if (pending) content = /* @__PURE__ */ jsx("p", { children: t("inspector.account.loading") });
|
|
79159
80483
|
else if (accessIssue != null) content = /* @__PURE__ */ jsx("p", { children: accessIssue });
|
|
79160
|
-
else if (actionError != null ||
|
|
80484
|
+
else if (actionError != null || resource == null) {
|
|
79161
80485
|
const canRetry = actionError?.code != "authorization.denied" && actionError?.code != "connector.action-not-found";
|
|
79162
80486
|
content = /* @__PURE__ */ jsx(ConnectionAlert, {
|
|
79163
80487
|
disabled,
|
|
@@ -79275,19 +80599,26 @@ function TriggerConnection({ activeConnections, authorizationPending, connection
|
|
|
79275
80599
|
});
|
|
79276
80600
|
}
|
|
79277
80601
|
/** A persisted reference has no live account health or authorization state. */
|
|
79278
|
-
function SavedConnectionReference({
|
|
80602
|
+
function SavedConnectionReference({ noSetup, connectionId }) {
|
|
79279
80603
|
const t = useTranslate();
|
|
79280
|
-
|
|
80604
|
+
if (noSetup || connectionId?.startsWith("no_auth:")) return null;
|
|
80605
|
+
return /* @__PURE__ */ jsx(InspectorStatusSection, {
|
|
79281
80606
|
title: t("inspector.account.title"),
|
|
79282
80607
|
section: "account",
|
|
79283
|
-
children:
|
|
79284
|
-
className: "
|
|
79285
|
-
children:
|
|
79286
|
-
|
|
79287
|
-
|
|
79288
|
-
|
|
79289
|
-
|
|
79290
|
-
|
|
80608
|
+
children: /* @__PURE__ */ jsxs(Field, {
|
|
80609
|
+
className: "connection-field",
|
|
80610
|
+
children: [/* @__PURE__ */ jsx(FieldLabel, {
|
|
80611
|
+
className: "sr-only",
|
|
80612
|
+
children: t("inspector.account.connection")
|
|
80613
|
+
}), /* @__PURE__ */ jsx(AccountSelect, {
|
|
80614
|
+
readOnly: true,
|
|
80615
|
+
connections: [],
|
|
80616
|
+
selectedId: connectionId,
|
|
80617
|
+
disabled: true,
|
|
80618
|
+
onChange: () => {},
|
|
80619
|
+
onManage: void 0
|
|
80620
|
+
})]
|
|
80621
|
+
})
|
|
79291
80622
|
});
|
|
79292
80623
|
}
|
|
79293
80624
|
//#endregion
|
|
@@ -83236,6 +84567,7 @@ function childFields(props) {
|
|
|
83236
84567
|
hideValueTools: props.hideValueTools,
|
|
83237
84568
|
expansionPolicy: props.expansionPolicy,
|
|
83238
84569
|
schema: childSchema,
|
|
84570
|
+
nullable: isUnconstrainedSchema(childSchema),
|
|
83239
84571
|
value: childValue,
|
|
83240
84572
|
onChange: change,
|
|
83241
84573
|
valueEditable,
|
|
@@ -83717,97 +85049,6 @@ function EditableChoices({ options, labels, value, label, disabled, invalid, mul
|
|
|
83717
85049
|
})
|
|
83718
85050
|
});
|
|
83719
85051
|
}
|
|
83720
|
-
var fieldBranch_module_default = { branch: "fieldBranch_branch_a5820" };
|
|
83721
|
-
//#endregion
|
|
83722
|
-
//#region src/form/browser/fieldLayout.tsx
|
|
83723
|
-
var Geometry = createContext({
|
|
83724
|
-
depth: 0,
|
|
83725
|
-
layout: "values"
|
|
83726
|
-
});
|
|
83727
|
-
function FieldLayout({ children, depth = 0, layout = "values", columns, gap }) {
|
|
83728
|
-
return /* @__PURE__ */ jsx(Geometry.Provider, {
|
|
83729
|
-
value: {
|
|
83730
|
-
depth,
|
|
83731
|
-
layout,
|
|
83732
|
-
columns,
|
|
83733
|
-
gap
|
|
83734
|
-
},
|
|
83735
|
-
children
|
|
83736
|
-
});
|
|
83737
|
-
}
|
|
83738
|
-
var FieldRow = forwardRef(({ columns, gap, header, valueOnly, leadingControl, disclosureContent, trailingControl, actions, layout, depth, typeWidth, disclosure, label, sorting, disclosureInvalid, stacking = "editor", children, style, className, ...props }, ref) => {
|
|
83739
|
-
const geometry = useContext(Geometry);
|
|
83740
|
-
const level = depth ?? geometry.depth;
|
|
83741
|
-
const hasHeader = header != null || valueOnly === true;
|
|
83742
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
83743
|
-
...props,
|
|
83744
|
-
ref,
|
|
83745
|
-
className: [valueEditor_module_default.root, className].filter(Boolean).join(" "),
|
|
83746
|
-
"data-stacking": stacking,
|
|
83747
|
-
"data-layout": layout ?? geometry.layout,
|
|
83748
|
-
"data-header": hasHeader || void 0,
|
|
83749
|
-
"data-value-only": valueOnly || void 0,
|
|
83750
|
-
"data-nested-field": level > 0 || void 0,
|
|
83751
|
-
style: {
|
|
83752
|
-
"gridTemplateColumns": columns ?? geometry.columns,
|
|
83753
|
-
"columnGap": gap ?? geometry.gap,
|
|
83754
|
-
"--field-indent": `${level * 16}px`,
|
|
83755
|
-
...typeWidth === "fixed" ? { "--field-type-width": "32px" } : typeWidth === "editable" ? { "--field-type-width": "56px" } : {},
|
|
83756
|
-
...style
|
|
83757
|
-
},
|
|
83758
|
-
children: [
|
|
83759
|
-
hasHeader && /* @__PURE__ */ jsxs("div", {
|
|
83760
|
-
className: valueEditor_module_default.header,
|
|
83761
|
-
children: [
|
|
83762
|
-
leadingControl != null && /* @__PURE__ */ jsx("div", {
|
|
83763
|
-
className: valueEditor_module_default.leadingControl,
|
|
83764
|
-
children: leadingControl
|
|
83765
|
-
}),
|
|
83766
|
-
/* @__PURE__ */ jsxs("div", {
|
|
83767
|
-
className: valueEditor_module_default.toggleControl,
|
|
83768
|
-
children: [disclosure && (!sorting || leadingControl == null) && /* @__PURE__ */ jsx(Button$1, {
|
|
83769
|
-
type: "button",
|
|
83770
|
-
size: "icon-xs",
|
|
83771
|
-
className: "w-[var(--field-toggle-width,24px)]",
|
|
83772
|
-
variant: "disclosure",
|
|
83773
|
-
"aria-label": label,
|
|
83774
|
-
"aria-expanded": disclosure.expanded,
|
|
83775
|
-
"aria-invalid": disclosureInvalid || void 0,
|
|
83776
|
-
"aria-controls": disclosure.controls,
|
|
83777
|
-
onClick: disclosure.onToggle,
|
|
83778
|
-
children: disclosureContent ?? /* @__PURE__ */ jsx("i", {
|
|
83779
|
-
"aria-hidden": "true",
|
|
83780
|
-
className: disclosure.expanded ? "i-lucide-light:chevron-down" : "i-lucide-light:chevron-right"
|
|
83781
|
-
})
|
|
83782
|
-
}), !disclosure && leadingControl == null && disclosureContent]
|
|
83783
|
-
}),
|
|
83784
|
-
!valueOnly && (typeof header === "function" ? header(disclosure) : header)
|
|
83785
|
-
]
|
|
83786
|
-
}),
|
|
83787
|
-
children,
|
|
83788
|
-
trailingControl,
|
|
83789
|
-
actions != null && /* @__PURE__ */ jsx("div", {
|
|
83790
|
-
className: valueEditor_module_default.options,
|
|
83791
|
-
children: actions
|
|
83792
|
-
})
|
|
83793
|
-
]
|
|
83794
|
-
});
|
|
83795
|
-
});
|
|
83796
|
-
/** Expanded values stay in their cell; structural branches establish a child geometry and connector. */
|
|
83797
|
-
function FieldBody({ placement, endpoint = "control", depth, className, children, ...props }) {
|
|
83798
|
-
const geometry = useContext(Geometry);
|
|
83799
|
-
return /* @__PURE__ */ jsx("div", {
|
|
83800
|
-
...props,
|
|
83801
|
-
className: [className, placement === "branch" && fieldBranch_module_default.branch].filter(Boolean).join(" "),
|
|
83802
|
-
"data-field-branch": placement === "branch" || void 0,
|
|
83803
|
-
"data-branch-endpoint": placement === "branch" ? endpoint : void 0,
|
|
83804
|
-
children: /* @__PURE__ */ jsx(FieldLayout, {
|
|
83805
|
-
...geometry,
|
|
83806
|
-
depth: depth ?? geometry.depth + (placement === "branch" ? 1 : 0),
|
|
83807
|
-
children
|
|
83808
|
-
})
|
|
83809
|
-
});
|
|
83810
|
-
}
|
|
83811
85052
|
//#endregion
|
|
83812
85053
|
//#region src/form/browser/fieldTypeAddon.tsx
|
|
83813
85054
|
/** A compact definition control attached to a value, shared by Case and array items. */
|
|
@@ -96152,7 +97393,10 @@ function FieldValueEditor(suppliedProps) {
|
|
|
96152
97393
|
const definitionEditable = props.onDefinitionChange != null && !disabled;
|
|
96153
97394
|
const showDataType = editorComponent(schema) === "json" && !definitionEditable && valueEditable && props.valueSuffix == null && props.editor == null;
|
|
96154
97395
|
const [selectedEditorSchema, setSelectedEditorSchema] = useState();
|
|
96155
|
-
const editorSchema = showDataType ? selectedEditorSchema ?? defaultValueEditorSchema(schema
|
|
97396
|
+
const editorSchema = showDataType ? selectedEditorSchema ?? defaultValueEditorSchema(schema, props.defaultEditor == null ? void 0 : {
|
|
97397
|
+
component: props.defaultEditor,
|
|
97398
|
+
value
|
|
97399
|
+
}) : schema;
|
|
96156
97400
|
const editorProps = {
|
|
96157
97401
|
...props,
|
|
96158
97402
|
schema: editorSchema
|
|
@@ -96282,7 +97526,8 @@ function FieldValueEditor(suppliedProps) {
|
|
|
96282
97526
|
const inlineTools = !props.hideValueTools && (props.layout === "values" || props.layout === "ports") && valueEditable && !disabled && !sorting;
|
|
96283
97527
|
const nullControl = (state.display === "null" || presence === "null") && props.editor === void 0 && !choiceOptions && !enumeration;
|
|
96284
97528
|
const canReset = inlineTools && props.onReset != null && (showUnset || !!nullable && nullControl);
|
|
96285
|
-
const
|
|
97529
|
+
const clearable = state.canClear || props.unset != null && presence === "null";
|
|
97530
|
+
const canClear = inlineTools && clearable;
|
|
96286
97531
|
const canToggleJson = inlineTools && expanded && shape.collection && presence === "value";
|
|
96287
97532
|
const arrayDefinition = !showDataType && hasHeader && source.type === "array" && !Array.isArray(source.items) && !choiceOptions;
|
|
96288
97533
|
const changeValueEditor = (nextSchema) => {
|
|
@@ -96398,7 +97643,7 @@ function FieldValueEditor(suppliedProps) {
|
|
|
96398
97643
|
className: "i-lucide-light:circle-slash"
|
|
96399
97644
|
}), "null"]
|
|
96400
97645
|
}),
|
|
96401
|
-
|
|
97646
|
+
clearable && /* @__PURE__ */ jsxs(Button$1, {
|
|
96402
97647
|
type: "button",
|
|
96403
97648
|
size: "xs",
|
|
96404
97649
|
variant: "ghost",
|
|
@@ -96961,16 +98206,29 @@ function AgentTools(props) {
|
|
|
96961
98206
|
...props.editor
|
|
96962
98207
|
});
|
|
96963
98208
|
if (props.config.tools.length === 0) return null;
|
|
98209
|
+
const summary = actionSummary(props.config.tools, {}, Object.values(props.providers ?? {}));
|
|
96964
98210
|
return /* @__PURE__ */ jsx(ActionSelectionDialog, {
|
|
96965
98211
|
readOnly: true,
|
|
96966
98212
|
title: t("agent.tools"),
|
|
98213
|
+
triggerHint: summary.workflows > 0 ? t("toolPicker.summary", {
|
|
98214
|
+
tools: summary.count,
|
|
98215
|
+
workflows: summary.workflows
|
|
98216
|
+
}) : t("actionPicker.selectionSummary", {
|
|
98217
|
+
actions: summary.count,
|
|
98218
|
+
providers: summary.providers.length
|
|
98219
|
+
}),
|
|
96967
98220
|
entries: props.config.tools,
|
|
96968
98221
|
providers: props.providers,
|
|
96969
98222
|
trigger: /* @__PURE__ */ jsx(Button$1, {
|
|
96970
98223
|
type: "button",
|
|
96971
98224
|
variant: "ghost",
|
|
96972
98225
|
size: "sm",
|
|
96973
|
-
|
|
98226
|
+
className: "gap-1.5 font-normal text-muted-foreground",
|
|
98227
|
+
children: /* @__PURE__ */ jsx(IconStack, {
|
|
98228
|
+
icons: summary.providers,
|
|
98229
|
+
count: summary.count,
|
|
98230
|
+
size: "sm"
|
|
98231
|
+
})
|
|
96974
98232
|
}),
|
|
96975
98233
|
settings: {
|
|
96976
98234
|
title: t("agent.toolSettings"),
|
|
@@ -97202,7 +98460,7 @@ function EditableAgentSettingsProvider({ children, task, nodeId, store, connecto
|
|
|
97202
98460
|
return false;
|
|
97203
98461
|
}
|
|
97204
98462
|
const decoded = decodeRevisionContent({
|
|
97205
|
-
modelVersion:
|
|
98463
|
+
modelVersion: 14,
|
|
97206
98464
|
modules: {},
|
|
97207
98465
|
document: {
|
|
97208
98466
|
bindings: {},
|
|
@@ -97797,7 +99055,10 @@ function CodeEditor({ ariaDescribedBy, ariaLabel, diagnostics, disabled, errorLa
|
|
|
97797
99055
|
}
|
|
97798
99056
|
//#endregion
|
|
97799
99057
|
//#region src/workbench/browser/runtime/editor/codeHttpHosts.tsx
|
|
97800
|
-
function CodeHttpHosts(
|
|
99058
|
+
function CodeHttpHosts(props) {
|
|
99059
|
+
const { hosts } = props;
|
|
99060
|
+
const editor = props.readOnly ? void 0 : props;
|
|
99061
|
+
const disabled = editor?.disabled ?? false;
|
|
97801
99062
|
const t = useTranslate();
|
|
97802
99063
|
const id = useId();
|
|
97803
99064
|
const saved = hosts.join("\n");
|
|
@@ -97811,6 +99072,7 @@ function CodeHttpHosts({ disabled, hosts, onSave }) {
|
|
|
97811
99072
|
setContainer(element?.closest(".open-flow-workbench") ?? element?.closest(".open-flow-theme") ?? null);
|
|
97812
99073
|
}, []);
|
|
97813
99074
|
const commit = async () => {
|
|
99075
|
+
if (editor == null) return;
|
|
97814
99076
|
if (openedHosts !== saved) {
|
|
97815
99077
|
setOpenedHosts(saved);
|
|
97816
99078
|
setDraft(saved);
|
|
@@ -97824,7 +99086,7 @@ function CodeHttpHosts({ disabled, hosts, onSave }) {
|
|
|
97824
99086
|
setError(void 0);
|
|
97825
99087
|
setPending(true);
|
|
97826
99088
|
try {
|
|
97827
|
-
if (dequal(next, hosts) || await onSave(next)) setOpen(false);
|
|
99089
|
+
if (dequal(next, hosts) || await editor.onSave(next)) setOpen(false);
|
|
97828
99090
|
} finally {
|
|
97829
99091
|
setPending(false);
|
|
97830
99092
|
}
|
|
@@ -97868,25 +99130,26 @@ function CodeHttpHosts({ disabled, hosts, onSave }) {
|
|
|
97868
99130
|
/* @__PURE__ */ jsx(ValueEditorFeedback, {
|
|
97869
99131
|
error,
|
|
97870
99132
|
children: (errorId) => /* @__PURE__ */ jsx(Textarea, {
|
|
97871
|
-
"aria-describedby": [`${id}-hint`, errorId].filter(Boolean).join(" "),
|
|
99133
|
+
"aria-describedby": [editor == null ? void 0 : `${id}-hint`, errorId].filter(Boolean).join(" ") || void 0,
|
|
97872
99134
|
"aria-invalid": error != null || void 0,
|
|
97873
99135
|
className: "min-h-14 font-mono text-xs",
|
|
97874
99136
|
disabled: disabled || pending,
|
|
97875
99137
|
id: `${id}-hosts`,
|
|
97876
|
-
onChange: (event) => setDraft(event.target.value),
|
|
99138
|
+
onChange: editor == null ? void 0 : (event) => setDraft(event.target.value),
|
|
97877
99139
|
placeholder: "api.example.com",
|
|
99140
|
+
readOnly: props.readOnly,
|
|
97878
99141
|
rows: 2,
|
|
97879
99142
|
spellCheck: false,
|
|
97880
|
-
value: draft
|
|
99143
|
+
value: editor == null ? saved : draft
|
|
97881
99144
|
})
|
|
97882
99145
|
}),
|
|
97883
|
-
/* @__PURE__ */ jsx(FieldDescription, {
|
|
99146
|
+
editor != null && /* @__PURE__ */ jsx(FieldDescription, {
|
|
97884
99147
|
id: `${id}-hint`,
|
|
97885
99148
|
children: t("inspector.task.httpHostsHint")
|
|
97886
99149
|
})
|
|
97887
99150
|
]
|
|
97888
99151
|
}),
|
|
97889
|
-
/* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(Button$1, {
|
|
99152
|
+
editor != null && /* @__PURE__ */ jsxs(DialogFooter, { children: [/* @__PURE__ */ jsx(Button$1, {
|
|
97890
99153
|
type: "button",
|
|
97891
99154
|
variant: "outline",
|
|
97892
99155
|
disabled: pending,
|
|
@@ -98449,16 +99712,49 @@ function CodeTaskSection(props) {
|
|
|
98449
99712
|
const { selection, theme } = props;
|
|
98450
99713
|
const task = selection.definition;
|
|
98451
99714
|
if (task == null || !("moduleId" in task) || selection.module == null) return null;
|
|
98452
|
-
|
|
98453
|
-
|
|
98454
|
-
|
|
98455
|
-
|
|
98456
|
-
|
|
98457
|
-
|
|
98458
|
-
|
|
98459
|
-
|
|
98460
|
-
|
|
98461
|
-
|
|
99715
|
+
const permission = task.capabilities?.find((capability) => "mode" in capability);
|
|
99716
|
+
const tools = [...permission?.mode == "independent" ? permission.actions : [], ...(task.capabilities ?? []).filter((item) => item.kind == "workflow")];
|
|
99717
|
+
const summary = actionSummary(tools, {}, Object.values(props.providers ?? {}));
|
|
99718
|
+
const httpHosts = task.capabilities?.find((capability) => capability.kind == "http")?.hosts ?? [];
|
|
99719
|
+
return /* @__PURE__ */ jsx(CodeTaskFrame, {
|
|
99720
|
+
actions: /* @__PURE__ */ jsxs(Fragment$1, { children: [httpHosts.length > 0 && /* @__PURE__ */ jsx(CodeHttpHosts, {
|
|
99721
|
+
readOnly: true,
|
|
99722
|
+
hosts: httpHosts
|
|
99723
|
+
}), tools.length > 0 && /* @__PURE__ */ jsx(ActionSelectionDialog, {
|
|
99724
|
+
readOnly: true,
|
|
99725
|
+
title: t("actionPicker.configureActions"),
|
|
99726
|
+
triggerHint: summary.workflows > 0 ? t("toolPicker.summary", {
|
|
99727
|
+
tools: summary.count,
|
|
99728
|
+
workflows: summary.workflows
|
|
99729
|
+
}) : t("actionPicker.selectionSummary", {
|
|
99730
|
+
actions: summary.count,
|
|
99731
|
+
providers: summary.providers.length
|
|
99732
|
+
}),
|
|
99733
|
+
trigger: /* @__PURE__ */ jsx(Button$1, {
|
|
99734
|
+
type: "button",
|
|
99735
|
+
variant: "ghost",
|
|
99736
|
+
size: "sm",
|
|
99737
|
+
className: "gap-1.5 font-normal text-muted-foreground",
|
|
99738
|
+
children: /* @__PURE__ */ jsx(IconStack, {
|
|
99739
|
+
icons: summary.providers,
|
|
99740
|
+
count: summary.count,
|
|
99741
|
+
size: "sm"
|
|
99742
|
+
})
|
|
99743
|
+
}),
|
|
99744
|
+
entries: tools,
|
|
99745
|
+
providers: props.providers
|
|
99746
|
+
})] }),
|
|
99747
|
+
children: /* @__PURE__ */ jsx(CodeEditor, {
|
|
99748
|
+
ariaLabel: t("inspector.task.source"),
|
|
99749
|
+
disabled: true,
|
|
99750
|
+
theme,
|
|
99751
|
+
typing: codeTyping(task, task.capabilities),
|
|
99752
|
+
uri: `publication:modules/${task.moduleId}.js`,
|
|
99753
|
+
value: selection.module.source,
|
|
99754
|
+
loadingLabel: t("inspector.task.editorLoading"),
|
|
99755
|
+
errorLabel: t("inspector.task.editorUnavailable")
|
|
99756
|
+
})
|
|
99757
|
+
});
|
|
98462
99758
|
}
|
|
98463
99759
|
//#endregion
|
|
98464
99760
|
//#region src/workbench/browser/runtime/editor/fieldPanelAnchor.ts
|
|
@@ -99678,7 +100974,7 @@ function SourceValueEditor({ fixed = false, sourceOnly = false, editor: customEd
|
|
|
99678
100974
|
setSourceOpen(true);
|
|
99679
100975
|
if (variables.enabled) variables.onOpen?.();
|
|
99680
100976
|
}
|
|
99681
|
-
} :
|
|
100977
|
+
} : presentation?.unset,
|
|
99682
100978
|
label: fieldLabel,
|
|
99683
100979
|
path: `/${fieldLabel.replaceAll("~", "~0").replaceAll("/", "~1")}`,
|
|
99684
100980
|
disabled,
|
|
@@ -100403,82 +101699,130 @@ function presentConnectorInputs(inputs, t) {
|
|
|
100403
101699
|
...optional
|
|
100404
101700
|
];
|
|
100405
101701
|
}
|
|
100406
|
-
var fieldTable_module_default = {
|
|
100407
|
-
list: "fieldTable_list_14bfd",
|
|
100408
|
-
columns: "fieldTable_columns_14bfd",
|
|
100409
|
-
nameHeading: "fieldTable_nameHeading_14bfd",
|
|
100410
|
-
typeHeading: "fieldTable_typeHeading_14bfd",
|
|
100411
|
-
valueHeading: "fieldTable_valueHeading_14bfd",
|
|
100412
|
-
row: "fieldTable_row_14bfd",
|
|
100413
|
-
nullableControl: "fieldTable_nullableControl_14bfd",
|
|
100414
|
-
nullableHeading: "fieldTable_nullableHeading_14bfd"
|
|
100415
|
-
};
|
|
100416
101702
|
//#endregion
|
|
100417
|
-
//#region src/
|
|
100418
|
-
|
|
100419
|
-
|
|
100420
|
-
|
|
100421
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
101703
|
+
//#region src/workbench/browser/runtime/editor/inspectorSection.tsx
|
|
101704
|
+
function InspectorSection({ title, children, className, contentInset = true, ...props }) {
|
|
101705
|
+
return /* @__PURE__ */ jsxs("section", {
|
|
101706
|
+
className: cn$1("inspector-section inspector-titled-section", className),
|
|
100422
101707
|
...props,
|
|
100423
|
-
|
|
100424
|
-
|
|
100425
|
-
|
|
100426
|
-
"
|
|
100427
|
-
|
|
100428
|
-
|
|
100429
|
-
"data-fixed-types": fixedTypes || void 0,
|
|
100430
|
-
"data-nullable": nullable || void 0,
|
|
100431
|
-
"data-empty": empty || void 0,
|
|
100432
|
-
"data-action-slots": actionSlots,
|
|
100433
|
-
"data-standalone": standalone || void 0,
|
|
100434
|
-
children: [columnHeadings && !empty && /* @__PURE__ */ jsxs("div", {
|
|
100435
|
-
className: fieldTable_module_default.columns,
|
|
100436
|
-
"data-layout": layout,
|
|
100437
|
-
"data-output": output || void 0,
|
|
100438
|
-
children: [
|
|
100439
|
-
/* @__PURE__ */ jsx("span", {
|
|
100440
|
-
className: fieldTable_module_default.nameHeading,
|
|
100441
|
-
children: t("valueEditor.columnName")
|
|
100442
|
-
}),
|
|
100443
|
-
typeColumn && /* @__PURE__ */ jsx("span", {
|
|
100444
|
-
className: fieldTable_module_default.typeHeading,
|
|
100445
|
-
children: t("valueEditor.columnType")
|
|
100446
|
-
}),
|
|
100447
|
-
!output && /* @__PURE__ */ jsx("span", {
|
|
100448
|
-
className: fieldTable_module_default.valueHeading,
|
|
100449
|
-
children: t("valueEditor.columnValue")
|
|
100450
|
-
}),
|
|
100451
|
-
nullable && /* @__PURE__ */ jsx("span", {
|
|
100452
|
-
className: fieldTable_module_default.nullableHeading,
|
|
100453
|
-
children: t("valueEditor.nullable")
|
|
100454
|
-
})
|
|
100455
|
-
]
|
|
100456
|
-
}), /* @__PURE__ */ jsx(FieldLayout, {
|
|
100457
|
-
layout,
|
|
101708
|
+
children: [/* @__PURE__ */ jsx("h3", {
|
|
101709
|
+
className: "inspector-section-title",
|
|
101710
|
+
children: title
|
|
101711
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
101712
|
+
className: "inspector-section-content",
|
|
101713
|
+
"data-inset": contentInset || void 0,
|
|
100458
101714
|
children
|
|
100459
101715
|
})]
|
|
100460
101716
|
});
|
|
100461
|
-
});
|
|
100462
|
-
function FieldTableRow({ className, ...props }) {
|
|
100463
|
-
return /* @__PURE__ */ jsx("div", {
|
|
100464
|
-
...props,
|
|
100465
|
-
className: [fieldTable_module_default.row, className].filter(Boolean).join(" ")
|
|
100466
|
-
});
|
|
100467
101717
|
}
|
|
100468
|
-
|
|
101718
|
+
//#endregion
|
|
101719
|
+
//#region src/workbench/browser/runtime/editor/connectorProxySection.tsx
|
|
101720
|
+
function ConnectorProxySection({ task, disabled, readOnly = false, hasBody, parameters, input, onSave, onClearBody }) {
|
|
100469
101721
|
const t = useTranslate();
|
|
100470
|
-
|
|
100471
|
-
|
|
100472
|
-
|
|
100473
|
-
|
|
100474
|
-
|
|
100475
|
-
|
|
100476
|
-
|
|
100477
|
-
|
|
100478
|
-
|
|
100479
|
-
|
|
101722
|
+
const id = useId();
|
|
101723
|
+
const taskRef = useRef(task);
|
|
101724
|
+
const saveRef = useRef(onSave);
|
|
101725
|
+
useEffect(() => {
|
|
101726
|
+
taskRef.current = task;
|
|
101727
|
+
saveRef.current = onSave;
|
|
101728
|
+
}, [task, onSave]);
|
|
101729
|
+
const [changes] = useState(() => new TaskExecutorChanges(task.executor, (before, next) => {
|
|
101730
|
+
const current = taskRef.current;
|
|
101731
|
+
if (before.kind !== "connector-proxy" || next.kind !== "connector-proxy" || current.executor.kind !== "connector-proxy") return Promise.resolve(false);
|
|
101732
|
+
const merged = { ...current.executor };
|
|
101733
|
+
if (before.method !== next.method) merged.method = next.method;
|
|
101734
|
+
return saveRef.current(current, connectorProxyTask(merged, current.name, current));
|
|
101735
|
+
}));
|
|
101736
|
+
const [config, setConfig] = useState(changes.value);
|
|
101737
|
+
const [failed, setFailed] = useState(false);
|
|
101738
|
+
useEffect(() => {
|
|
101739
|
+
changes.sync(task.executor);
|
|
101740
|
+
setConfig(changes.value);
|
|
101741
|
+
}, [changes, task.executor]);
|
|
101742
|
+
if (config.kind !== "connector-proxy") return null;
|
|
101743
|
+
const supportsBody = connectorProxySupportsBody(config.method);
|
|
101744
|
+
const bodyError = task.executor.kind === "connector-proxy" && task.executor.method === config.method && connectorProxyIssues(config, hasBody).some((issue) => issue.code === "bodyUnsupported");
|
|
101745
|
+
async function save() {
|
|
101746
|
+
try {
|
|
101747
|
+
setFailed(!await changes.save());
|
|
101748
|
+
} catch {
|
|
101749
|
+
setFailed(true);
|
|
101750
|
+
}
|
|
101751
|
+
}
|
|
101752
|
+
function update(patch) {
|
|
101753
|
+
if (disabled || changes.value.kind !== "connector-proxy") return;
|
|
101754
|
+
changes.value = {
|
|
101755
|
+
...changes.value,
|
|
101756
|
+
...patch
|
|
101757
|
+
};
|
|
101758
|
+
setConfig(changes.value);
|
|
101759
|
+
save();
|
|
101760
|
+
}
|
|
101761
|
+
return /* @__PURE__ */ jsx(InspectorSection, {
|
|
101762
|
+
title: t("connectorProxy.title"),
|
|
101763
|
+
"data-inspector-section": "task",
|
|
101764
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
101765
|
+
className: "node-settings flex flex-col gap-3",
|
|
101766
|
+
"data-value-editor-scope": true,
|
|
101767
|
+
children: [
|
|
101768
|
+
input("endpoint", t("connectorProxy.endpoint")),
|
|
101769
|
+
/* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, {
|
|
101770
|
+
htmlFor: `${id}-method`,
|
|
101771
|
+
children: t("httpRequest.method")
|
|
101772
|
+
}), /* @__PURE__ */ jsx(NativeSelect, {
|
|
101773
|
+
id: `${id}-method`,
|
|
101774
|
+
value: config.method,
|
|
101775
|
+
disabled,
|
|
101776
|
+
className: "w-full",
|
|
101777
|
+
onChange: (event) => update({ method: event.target.value }),
|
|
101778
|
+
children: [
|
|
101779
|
+
"GET",
|
|
101780
|
+
"POST",
|
|
101781
|
+
"PUT",
|
|
101782
|
+
"PATCH",
|
|
101783
|
+
"DELETE"
|
|
101784
|
+
].map((method) => /* @__PURE__ */ jsx(NativeSelectOption, {
|
|
101785
|
+
value: method,
|
|
101786
|
+
children: method
|
|
101787
|
+
}, method))
|
|
101788
|
+
})] }),
|
|
101789
|
+
parameters,
|
|
101790
|
+
supportsBody && input("body", t("httpRequest.body")),
|
|
101791
|
+
bodyError && /* @__PURE__ */ jsxs("div", {
|
|
101792
|
+
className: "flex flex-col gap-2",
|
|
101793
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
101794
|
+
id: `${id}-body-error`,
|
|
101795
|
+
role: "alert",
|
|
101796
|
+
className: "text-xs text-destructive",
|
|
101797
|
+
children: t("connectorProxy.bodyUnsupported")
|
|
101798
|
+
}), !readOnly && /* @__PURE__ */ jsxs(Button$1, {
|
|
101799
|
+
variant: "outline",
|
|
101800
|
+
size: "field",
|
|
101801
|
+
disabled,
|
|
101802
|
+
"aria-describedby": `${id}-body-error`,
|
|
101803
|
+
onClick: () => void onClearBody(),
|
|
101804
|
+
children: [
|
|
101805
|
+
t("valueEditor.clear"),
|
|
101806
|
+
" ",
|
|
101807
|
+
t("httpRequest.body")
|
|
101808
|
+
]
|
|
101809
|
+
})]
|
|
101810
|
+
}),
|
|
101811
|
+
failed && /* @__PURE__ */ jsx(ValueEditorFeedback, {
|
|
101812
|
+
error: t("httpRequest.saveFailed"),
|
|
101813
|
+
children: (errorId) => /* @__PURE__ */ jsx(Button$1, {
|
|
101814
|
+
variant: "outline",
|
|
101815
|
+
size: "field",
|
|
101816
|
+
"aria-invalid": true,
|
|
101817
|
+
"aria-describedby": errorId,
|
|
101818
|
+
disabled,
|
|
101819
|
+
onClick: () => void save(),
|
|
101820
|
+
children: t("httpRequest.retry")
|
|
101821
|
+
})
|
|
101822
|
+
})
|
|
101823
|
+
]
|
|
100480
101824
|
})
|
|
100481
|
-
})
|
|
101825
|
+
});
|
|
100482
101826
|
}
|
|
100483
101827
|
//#endregion
|
|
100484
101828
|
//#region src/ui/browser/helpButton.tsx
|
|
@@ -100515,22 +101859,6 @@ function HelpButton({ label, children, container, size = 24 }) {
|
|
|
100515
101859
|
});
|
|
100516
101860
|
}
|
|
100517
101861
|
//#endregion
|
|
100518
|
-
//#region src/workbench/browser/runtime/editor/inspectorSection.tsx
|
|
100519
|
-
function InspectorSection({ title, children, className, contentInset = true, ...props }) {
|
|
100520
|
-
return /* @__PURE__ */ jsxs("section", {
|
|
100521
|
-
className: cn$1("inspector-section inspector-titled-section", className),
|
|
100522
|
-
...props,
|
|
100523
|
-
children: [/* @__PURE__ */ jsx("h3", {
|
|
100524
|
-
className: "inspector-section-title",
|
|
100525
|
-
children: title
|
|
100526
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
100527
|
-
className: "inspector-section-content",
|
|
100528
|
-
"data-inset": contentInset || void 0,
|
|
100529
|
-
children
|
|
100530
|
-
})]
|
|
100531
|
-
});
|
|
100532
|
-
}
|
|
100533
|
-
//#endregion
|
|
100534
101862
|
//#region src/workbench/browser/runtime/editor/decisionSection.tsx
|
|
100535
101863
|
var textSchema = {
|
|
100536
101864
|
type: "string",
|
|
@@ -101707,13 +103035,13 @@ var catalog = [
|
|
|
101707
103035
|
group: "contacts"
|
|
101708
103036
|
}
|
|
101709
103037
|
];
|
|
101710
|
-
function FeishuEventPicker({ value, onChange, disabled = false, allowedEvents }) {
|
|
103038
|
+
function FeishuEventPicker({ value, onChange, disabled = false, readOnly = false, allowedEvents }) {
|
|
101711
103039
|
const t = useTranslate();
|
|
101712
103040
|
const id = useId();
|
|
101713
103041
|
const [search, setSearch] = useState("");
|
|
101714
103042
|
const [custom, setCustom] = useState("");
|
|
101715
103043
|
const [invalid, setInvalid] = useState(false);
|
|
101716
|
-
const entries = [...catalog.filter((entry) => allowedEvents == null || allowedEvents.includes(entry.id)).map((entry) => ({
|
|
103044
|
+
const entries = [...catalog.filter((entry) => (allowedEvents == null || allowedEvents.includes(entry.id)) && (!readOnly || value.includes(entry.id))).map((entry) => ({
|
|
101717
103045
|
id: entry.id,
|
|
101718
103046
|
group: entry.group,
|
|
101719
103047
|
label: t(`eventSources.eventNames.${entry.id.replaceAll(".", "_")}`)
|
|
@@ -101742,7 +103070,7 @@ function FeishuEventPicker({ value, onChange, disabled = false, allowedEvents })
|
|
|
101742
103070
|
htmlFor: id,
|
|
101743
103071
|
children: t("eventSources.events")
|
|
101744
103072
|
}),
|
|
101745
|
-
value.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
103073
|
+
!readOnly && value.length > 0 && /* @__PURE__ */ jsx("div", {
|
|
101746
103074
|
className: "flex flex-wrap gap-1.5",
|
|
101747
103075
|
children: value.map((event) => /* @__PURE__ */ jsxs(Button$1, {
|
|
101748
103076
|
type: "button",
|
|
@@ -101765,7 +103093,7 @@ function FeishuEventPicker({ value, onChange, disabled = false, allowedEvents })
|
|
|
101765
103093
|
id,
|
|
101766
103094
|
type: "search",
|
|
101767
103095
|
value: search,
|
|
101768
|
-
disabled,
|
|
103096
|
+
disabled: disabled && !readOnly,
|
|
101769
103097
|
placeholder: t("eventSources.searchEvents"),
|
|
101770
103098
|
"aria-label": t("eventSources.searchEvents"),
|
|
101771
103099
|
onChange: (event) => setSearch(event.target.value)
|
|
@@ -101784,7 +103112,7 @@ function FeishuEventPicker({ value, onChange, disabled = false, allowedEvents })
|
|
|
101784
103112
|
children: [/* @__PURE__ */ jsx(Checkbox, {
|
|
101785
103113
|
className: "mt-0.5",
|
|
101786
103114
|
checked: value.includes(entry.id),
|
|
101787
|
-
disabled: disabled || !value.includes(entry.id) && value.length >= 200,
|
|
103115
|
+
disabled: readOnly || disabled || !value.includes(entry.id) && value.length >= 200,
|
|
101788
103116
|
onCheckedChange: (checked) => onChange(checked === true ? [...value, entry.id] : value.filter((event) => event != entry.id))
|
|
101789
103117
|
}), /* @__PURE__ */ jsxs("span", {
|
|
101790
103118
|
className: "flex min-w-0 flex-col gap-0.5",
|
|
@@ -101802,7 +103130,7 @@ function FeishuEventPicker({ value, onChange, disabled = false, allowedEvents })
|
|
|
101802
103130
|
children: t("eventSources.noEventMatches")
|
|
101803
103131
|
})]
|
|
101804
103132
|
}),
|
|
101805
|
-
value.length == 0 && /* @__PURE__ */ jsx("p", {
|
|
103133
|
+
!readOnly && value.length == 0 && /* @__PURE__ */ jsx("p", {
|
|
101806
103134
|
className: "m-0 text-xs text-muted-foreground",
|
|
101807
103135
|
children: t("eventSources.chooseEvents")
|
|
101808
103136
|
}),
|
|
@@ -101815,7 +103143,7 @@ function FeishuEventPicker({ value, onChange, disabled = false, allowedEvents })
|
|
|
101815
103143
|
unavailable.join(", ")
|
|
101816
103144
|
]
|
|
101817
103145
|
}),
|
|
101818
|
-
allowedEvents == null && /* @__PURE__ */ jsxs("details", { children: [
|
|
103146
|
+
!readOnly && allowedEvents == null && /* @__PURE__ */ jsxs("details", { children: [
|
|
101819
103147
|
/* @__PURE__ */ jsx("summary", {
|
|
101820
103148
|
className: "cursor-pointer text-xs text-muted-foreground",
|
|
101821
103149
|
children: t("eventSources.customEvent")
|
|
@@ -103607,6 +104935,7 @@ var resources = {
|
|
|
103607
104935
|
"missingStatuses": "Some selected statuses are no longer available. Remove or replace them."
|
|
103608
104936
|
},
|
|
103609
104937
|
nodePicker: {
|
|
104938
|
+
"custom": "Custom",
|
|
103610
104939
|
"actionGroups": {
|
|
103611
104940
|
"read": "Read actions",
|
|
103612
104941
|
"write": "Write actions",
|
|
@@ -103835,6 +105164,12 @@ var resources = {
|
|
|
103835
105164
|
"connector": "Connector",
|
|
103836
105165
|
"workflow": "Workflow"
|
|
103837
105166
|
},
|
|
105167
|
+
connectorProxy: {
|
|
105168
|
+
"bodyUnsupported": "GET requests do not support a request body.",
|
|
105169
|
+
"title": "Custom API Request",
|
|
105170
|
+
"description": "Call a Provider API using its connected account.",
|
|
105171
|
+
"endpoint": "Endpoint"
|
|
105172
|
+
},
|
|
103838
105173
|
httpRequest: {
|
|
103839
105174
|
"title": "HTTP Request",
|
|
103840
105175
|
"description": "Send an HTTP request and use its response in the workflow.",
|
|
@@ -104997,6 +106332,7 @@ var resources = {
|
|
|
104997
106332
|
"missingStatuses": "部分已选状态不再可用,请移除或重新选择。"
|
|
104998
106333
|
},
|
|
104999
106334
|
nodePicker: {
|
|
106335
|
+
"custom": "自定义",
|
|
105000
106336
|
"actionGroups": {
|
|
105001
106337
|
"read": "读取接口",
|
|
105002
106338
|
"write": "写入接口",
|
|
@@ -105225,6 +106561,12 @@ var resources = {
|
|
|
105225
106561
|
"connector": "连接器",
|
|
105226
106562
|
"workflow": "工作流"
|
|
105227
106563
|
},
|
|
106564
|
+
connectorProxy: {
|
|
106565
|
+
"bodyUnsupported": "GET 请求不支持请求体。",
|
|
106566
|
+
"title": "自定义 API 请求",
|
|
106567
|
+
"description": "使用已连接账号调用 Provider API。",
|
|
106568
|
+
"endpoint": "接口路径"
|
|
106569
|
+
},
|
|
105228
106570
|
httpRequest: {
|
|
105229
106571
|
"title": "HTTP 请求",
|
|
105230
106572
|
"description": "发送 HTTP 请求,在工作流中使用响应数据。",
|
|
@@ -106387,6 +107729,7 @@ var resources = {
|
|
|
106387
107729
|
"missingStatuses": "部分已選狀態不再可用,請移除或重新選擇。"
|
|
106388
107730
|
},
|
|
106389
107731
|
nodePicker: {
|
|
107732
|
+
"custom": "自訂",
|
|
106390
107733
|
"actionGroups": {
|
|
106391
107734
|
"read": "讀取介面",
|
|
106392
107735
|
"write": "寫入介面",
|
|
@@ -106615,6 +107958,12 @@ var resources = {
|
|
|
106615
107958
|
"connector": "連接器",
|
|
106616
107959
|
"workflow": "工作流程"
|
|
106617
107960
|
},
|
|
107961
|
+
connectorProxy: {
|
|
107962
|
+
"bodyUnsupported": "GET 請求不支援請求本文。",
|
|
107963
|
+
"title": "自訂 API 請求",
|
|
107964
|
+
"description": "使用已連線帳號呼叫 Provider API。",
|
|
107965
|
+
"endpoint": "介面路徑"
|
|
107966
|
+
},
|
|
106618
107967
|
httpRequest: {
|
|
106619
107968
|
"title": "HTTP 請求",
|
|
106620
107969
|
"description": "傳送 HTTP 請求,在工作流程中使用回應資料。",
|
|
@@ -107777,6 +109126,7 @@ var resources = {
|
|
|
107777
109126
|
"missingStatuses": "選択したステータスの一部は利用できません。削除するか選び直してください。"
|
|
107778
109127
|
},
|
|
107779
109128
|
nodePicker: {
|
|
109129
|
+
"custom": "カスタム",
|
|
107780
109130
|
"actionGroups": {
|
|
107781
109131
|
"read": "読み取り操作",
|
|
107782
109132
|
"write": "書き込み操作",
|
|
@@ -108005,6 +109355,12 @@ var resources = {
|
|
|
108005
109355
|
"connector": "コネクター",
|
|
108006
109356
|
"workflow": "ワークフロー"
|
|
108007
109357
|
},
|
|
109358
|
+
connectorProxy: {
|
|
109359
|
+
"bodyUnsupported": "GET リクエストはリクエストボディに対応していません。",
|
|
109360
|
+
"title": "カスタム API リクエスト",
|
|
109361
|
+
"description": "接続済みアカウントで Provider API を呼び出します。",
|
|
109362
|
+
"endpoint": "エンドポイント"
|
|
109363
|
+
},
|
|
108008
109364
|
httpRequest: {
|
|
108009
109365
|
"title": "HTTP リクエスト",
|
|
108010
109366
|
"description": "HTTP リクエストを送信し、ワークフローでレスポンスを使用します。",
|
|
@@ -109167,6 +110523,7 @@ var resources = {
|
|
|
109167
110523
|
"missingStatuses": "선택한 상태 중 일부를 사용할 수 없습니다. 삭제하거나 다시 선택하세요."
|
|
109168
110524
|
},
|
|
109169
110525
|
nodePicker: {
|
|
110526
|
+
"custom": "사용자 지정",
|
|
109170
110527
|
"actionGroups": {
|
|
109171
110528
|
"read": "읽기 작업",
|
|
109172
110529
|
"write": "쓰기 작업",
|
|
@@ -109395,6 +110752,12 @@ var resources = {
|
|
|
109395
110752
|
"connector": "커넥터",
|
|
109396
110753
|
"workflow": "워크플로"
|
|
109397
110754
|
},
|
|
110755
|
+
connectorProxy: {
|
|
110756
|
+
"bodyUnsupported": "GET 요청은 요청 본문을 지원하지 않습니다.",
|
|
110757
|
+
"title": "사용자 지정 API 요청",
|
|
110758
|
+
"description": "연결된 계정으로 Provider API를 호출합니다.",
|
|
110759
|
+
"endpoint": "엔드포인트"
|
|
110760
|
+
},
|
|
109398
110761
|
httpRequest: {
|
|
109399
110762
|
"title": "HTTP 요청",
|
|
109400
110763
|
"description": "HTTP 요청을 보내고 워크플로에서 응답을 사용합니다.",
|
|
@@ -110557,6 +111920,7 @@ var resources = {
|
|
|
110557
111920
|
"missingStatuses": "Некоторые выбранные статусы больше недоступны. Удалите или замените их."
|
|
110558
111921
|
},
|
|
110559
111922
|
nodePicker: {
|
|
111923
|
+
"custom": "Пользовательские",
|
|
110560
111924
|
"actionGroups": {
|
|
110561
111925
|
"read": "Операции чтения",
|
|
110562
111926
|
"write": "Операции записи",
|
|
@@ -110785,6 +112149,12 @@ var resources = {
|
|
|
110785
112149
|
"connector": "Коннектор",
|
|
110786
112150
|
"workflow": "Рабочий процесс"
|
|
110787
112151
|
},
|
|
112152
|
+
connectorProxy: {
|
|
112153
|
+
"bodyUnsupported": "GET-запросы не поддерживают тело запроса.",
|
|
112154
|
+
"title": "Пользовательский API-запрос",
|
|
112155
|
+
"description": "Вызов API провайдера через подключённый аккаунт.",
|
|
112156
|
+
"endpoint": "Путь запроса"
|
|
112157
|
+
},
|
|
110788
112158
|
httpRequest: {
|
|
110789
112159
|
"title": "HTTP-запрос",
|
|
110790
112160
|
"description": "Отправить HTTP-запрос и использовать ответ в рабочем процессе.",
|
|
@@ -111947,6 +113317,7 @@ var resources = {
|
|
|
111947
113317
|
"missingStatuses": "Certains statuts sélectionnés ne sont plus disponibles. Supprimez-les ou remplacez-les."
|
|
111948
113318
|
},
|
|
111949
113319
|
nodePicker: {
|
|
113320
|
+
"custom": "Personnalisé",
|
|
111950
113321
|
"actionGroups": {
|
|
111951
113322
|
"read": "Actions de lecture",
|
|
111952
113323
|
"write": "Actions d’écriture",
|
|
@@ -112175,6 +113546,12 @@ var resources = {
|
|
|
112175
113546
|
"connector": "Connecteur",
|
|
112176
113547
|
"workflow": "Workflow"
|
|
112177
113548
|
},
|
|
113549
|
+
connectorProxy: {
|
|
113550
|
+
"bodyUnsupported": "Les requêtes GET ne prennent pas en charge de corps.",
|
|
113551
|
+
"title": "Requête API personnalisée",
|
|
113552
|
+
"description": "Appeler une API du fournisseur avec le compte connecté.",
|
|
113553
|
+
"endpoint": "Point de terminaison"
|
|
113554
|
+
},
|
|
112178
113555
|
httpRequest: {
|
|
112179
113556
|
"title": "Requête HTTP",
|
|
112180
113557
|
"description": "Envoyer une requête HTTP et utiliser sa réponse dans le workflow.",
|
|
@@ -112936,30 +114313,33 @@ function CreateEventSourceDialog({ client, sourceKind, notify, teamId, existingN
|
|
|
112936
114313
|
}
|
|
112937
114314
|
//#endregion
|
|
112938
114315
|
//#region src/workbench/browser/runtime/editor/feishuEventFilters.tsx
|
|
112939
|
-
function FeishuEventFilters({ field, config, events, managed, disabled, onChange }) {
|
|
114316
|
+
function FeishuEventFilters({ field, config, events, managed, disabled, readOnly = false, onChange }) {
|
|
112940
114317
|
const t = useTranslate();
|
|
112941
114318
|
const resource = isJsonObject(config.resource) ? config.resource : void 0;
|
|
112942
114319
|
const kind = feishuResourceKind(events);
|
|
114320
|
+
const storedKind = resource?.kind;
|
|
114321
|
+
const displayKind = readOnly && (storedKind == "document" || storedKind == "calendar" || storedKind == "approval") ? storedKind : kind;
|
|
112943
114322
|
const chats = Array.isArray(config.chatIds) ? config.chatIds.filter((item) => typeof item == "string") : [];
|
|
112944
114323
|
const chatSupported = supportsFeishuChatFilter(events);
|
|
112945
|
-
return /* @__PURE__ */ jsxs(Fragment$1, { children: [field !== "resource" && (chatSupported || chats.length > 0) && /* @__PURE__ */
|
|
114324
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [field !== "resource" && (chatSupported || chats.length > 0) && /* @__PURE__ */ jsxs("div", {
|
|
112946
114325
|
className: "flex flex-col gap-2",
|
|
112947
|
-
children: chatSupported
|
|
114326
|
+
children: [(chatSupported || readOnly) && /* @__PURE__ */ jsx(ChatFilter, {
|
|
112948
114327
|
value: chats,
|
|
112949
114328
|
disabled,
|
|
114329
|
+
readOnly,
|
|
112950
114330
|
onChange: (value) => onChange("chatIds", value)
|
|
112951
|
-
}, JSON.stringify(chats))
|
|
114331
|
+
}, JSON.stringify(chats)), !chatSupported && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("p", {
|
|
112952
114332
|
role: "alert",
|
|
112953
114333
|
className: "m-0 text-sm text-destructive",
|
|
112954
114334
|
children: t("eventSources.incompatibleChats")
|
|
112955
|
-
}), /* @__PURE__ */ jsx(Button$1, {
|
|
114335
|
+
}), !readOnly && /* @__PURE__ */ jsx(Button$1, {
|
|
112956
114336
|
variant: "outline",
|
|
112957
114337
|
size: "sm",
|
|
112958
114338
|
className: "self-start",
|
|
112959
114339
|
disabled,
|
|
112960
114340
|
onClick: () => onChange("chatIds", void 0),
|
|
112961
114341
|
children: t("eventSources.removeFilter")
|
|
112962
|
-
})] })
|
|
114342
|
+
})] })]
|
|
112963
114343
|
}), field !== "chatIds" && (kind != null || resource != null) && /* @__PURE__ */ jsxs("div", {
|
|
112964
114344
|
className: "flex flex-col gap-3",
|
|
112965
114345
|
children: [
|
|
@@ -112967,7 +114347,7 @@ function FeishuEventFilters({ field, config, events, managed, disabled, onChange
|
|
|
112967
114347
|
className: "flex items-center gap-2",
|
|
112968
114348
|
children: [/* @__PURE__ */ jsx(Checkbox, {
|
|
112969
114349
|
checked: resource != null,
|
|
112970
|
-
disabled: disabled || resource == null && (!managed || kind == null),
|
|
114350
|
+
disabled: readOnly || disabled || resource == null && (!managed || kind == null),
|
|
112971
114351
|
onCheckedChange: (checked) => onChange("resource", checked ? {
|
|
112972
114352
|
kind,
|
|
112973
114353
|
id: "",
|
|
@@ -112979,7 +114359,7 @@ function FeishuEventFilters({ field, config, events, managed, disabled, onChange
|
|
|
112979
114359
|
className: "m-0 text-xs leading-5 text-muted-foreground",
|
|
112980
114360
|
children: t("eventSources.subscribeResourceHint")
|
|
112981
114361
|
}),
|
|
112982
|
-
!managed && /* @__PURE__ */ jsx("p", {
|
|
114362
|
+
!readOnly && !managed && /* @__PURE__ */ jsx("p", {
|
|
112983
114363
|
className: "m-0 text-xs leading-5 text-muted-foreground",
|
|
112984
114364
|
children: t("eventSources.managementRequired")
|
|
112985
114365
|
}),
|
|
@@ -112988,8 +114368,8 @@ function FeishuEventFilters({ field, config, events, managed, disabled, onChange
|
|
|
112988
114368
|
className: "m-0 text-sm text-destructive",
|
|
112989
114369
|
children: t("eventSources.incompatibleResource")
|
|
112990
114370
|
}),
|
|
112991
|
-
resource != null &&
|
|
112992
|
-
|
|
114371
|
+
resource != null && displayKind != null && resource.kind == displayKind && /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
114372
|
+
displayKind == "document" && /* @__PURE__ */ jsx(SourceSelect, {
|
|
112993
114373
|
label: t("eventSources.documentType"),
|
|
112994
114374
|
value: typeof resource.documentType == "string" ? resource.documentType : "",
|
|
112995
114375
|
options: [
|
|
@@ -113003,7 +114383,7 @@ function FeishuEventFilters({ field, config, events, managed, disabled, onChange
|
|
|
113003
114383
|
value,
|
|
113004
114384
|
label: t(`eventSources.documentTypes.${value}`)
|
|
113005
114385
|
})),
|
|
113006
|
-
disabled: disabled || !managed,
|
|
114386
|
+
disabled: readOnly || disabled || !managed,
|
|
113007
114387
|
onChange: (value) => onChange("resource", {
|
|
113008
114388
|
...resource,
|
|
113009
114389
|
documentType: value
|
|
@@ -113011,9 +114391,10 @@ function FeishuEventFilters({ field, config, events, managed, disabled, onChange
|
|
|
113011
114391
|
}),
|
|
113012
114392
|
/* @__PURE__ */ jsxs(Label, {
|
|
113013
114393
|
className: "flex flex-col items-stretch gap-2",
|
|
113014
|
-
children: [t(`eventSources.resourceIds.${
|
|
114394
|
+
children: [t(`eventSources.resourceIds.${displayKind}`), /* @__PURE__ */ jsx(Input, {
|
|
113015
114395
|
value: typeof resource.id == "string" ? resource.id : "",
|
|
113016
|
-
disabled: disabled || !managed,
|
|
114396
|
+
disabled: !readOnly && (disabled || !managed),
|
|
114397
|
+
readOnly,
|
|
113017
114398
|
required: true,
|
|
113018
114399
|
onChange: (event) => onChange("resource", {
|
|
113019
114400
|
...resource,
|
|
@@ -113023,23 +114404,25 @@ function FeishuEventFilters({ field, config, events, managed, disabled, onChange
|
|
|
113023
114404
|
}),
|
|
113024
114405
|
/* @__PURE__ */ jsx("p", {
|
|
113025
114406
|
className: "m-0 text-xs leading-5 text-muted-foreground",
|
|
113026
|
-
children: t(`eventSources.resourceHints.${
|
|
114407
|
+
children: t(`eventSources.resourceHints.${displayKind}`)
|
|
113027
114408
|
})
|
|
113028
114409
|
] })
|
|
113029
114410
|
]
|
|
113030
114411
|
})] });
|
|
113031
114412
|
}
|
|
113032
|
-
function ChatFilter({ value, disabled, onChange }) {
|
|
114413
|
+
function ChatFilter({ value, disabled, readOnly = false, onChange }) {
|
|
113033
114414
|
const t = useTranslate();
|
|
113034
114415
|
const [text, setText] = useState(value.join("\n"));
|
|
113035
114416
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs(Label, {
|
|
113036
114417
|
className: "flex flex-col items-stretch gap-2",
|
|
113037
114418
|
children: [t("eventSources.specifiedChats"), /* @__PURE__ */ jsx(Textarea, {
|
|
113038
114419
|
value: text,
|
|
113039
|
-
disabled,
|
|
114420
|
+
disabled: disabled && !readOnly,
|
|
114421
|
+
readOnly,
|
|
113040
114422
|
rows: 3,
|
|
113041
114423
|
onChange: (event) => setText(event.target.value),
|
|
113042
114424
|
onBlur: () => {
|
|
114425
|
+
if (readOnly || disabled) return;
|
|
113043
114426
|
const ids = [...new Set(text.split("\n").map((item) => item.trim()).filter(Boolean))];
|
|
113044
114427
|
if (JSON.stringify(ids) != JSON.stringify(value)) onChange(ids.length == 0 ? void 0 : ids);
|
|
113045
114428
|
}
|
|
@@ -114115,15 +115498,18 @@ function EventSourceSelect({ label, value, options, disabled, onChange, onOpen }
|
|
|
114115
115498
|
})
|
|
114116
115499
|
});
|
|
114117
115500
|
}
|
|
114118
|
-
function EventSourceTriggerConfig({ inputs, provider = "feishu_app_bot", fieldLabels, config: assignments, nodeId, connectionId, disabled, store }) {
|
|
115501
|
+
function EventSourceTriggerConfig({ inputs, provider = "feishu_app_bot", fieldLabels, config: assignments, nodeId, connectionId, disabled: temporarilyDisabled, readOnly = false, store }) {
|
|
115502
|
+
const disabled = temporarilyDisabled || readOnly;
|
|
115503
|
+
const editor = readOnly ? void 0 : store;
|
|
114119
115504
|
const config = triggerConfigValues(inputs, assignments);
|
|
114120
115505
|
const t = useTranslate();
|
|
114121
115506
|
const [attempt, setAttempt] = useState(0);
|
|
114122
115507
|
const sourceId = typeof config.sourceId == "string" ? config.sourceId : "";
|
|
114123
|
-
const flowId =
|
|
115508
|
+
const flowId = editor?.$.flowId.value;
|
|
114124
115509
|
const key = JSON.stringify([flowId, nodeId]);
|
|
114125
115510
|
const [state, setState] = useState();
|
|
114126
115511
|
useEffect(() => {
|
|
115512
|
+
if (editor == null) return;
|
|
114127
115513
|
const controller = new AbortController();
|
|
114128
115514
|
setState((current) => current?.key == key ? {
|
|
114129
115515
|
...current,
|
|
@@ -114133,7 +115519,7 @@ function EventSourceTriggerConfig({ inputs, provider = "feishu_app_bot", fieldLa
|
|
|
114133
115519
|
key,
|
|
114134
115520
|
loading: true
|
|
114135
115521
|
});
|
|
114136
|
-
|
|
115522
|
+
editor.loadEventSources(controller.signal).then((result) => {
|
|
114137
115523
|
if (!controller.signal.aborted) setState({
|
|
114138
115524
|
key,
|
|
114139
115525
|
...result,
|
|
@@ -114152,24 +115538,24 @@ function EventSourceTriggerConfig({ inputs, provider = "feishu_app_bot", fieldLa
|
|
|
114152
115538
|
});
|
|
114153
115539
|
return () => controller.abort();
|
|
114154
115540
|
}, [
|
|
114155
|
-
|
|
115541
|
+
editor,
|
|
114156
115542
|
key,
|
|
114157
115543
|
attempt
|
|
114158
115544
|
]);
|
|
114159
115545
|
const sources = state?.key == key ? state.sources : void 0;
|
|
114160
115546
|
const matchingSources = sources?.filter((source) => source.provider == provider && source.connectionId == connectionId);
|
|
114161
|
-
const options =
|
|
115547
|
+
const options = readOnly ? sourceId ? [{
|
|
115548
|
+
value: sourceId,
|
|
115549
|
+
label: sourceId
|
|
115550
|
+
}] : [] : matchingSources?.map((source) => ({
|
|
114162
115551
|
value: source.sourceId,
|
|
114163
115552
|
label: source.name
|
|
114164
115553
|
}));
|
|
114165
115554
|
const failed = state?.key == key && state.failed;
|
|
114166
115555
|
const loading = state?.key != key || state.loading == true;
|
|
114167
115556
|
const selectedSource = matchingSources?.find((source) => source.sourceId == sourceId);
|
|
114168
|
-
const eventOptions = selectedSource?.eventTypes.map((type) => ({
|
|
114169
|
-
value: type,
|
|
114170
|
-
label: type
|
|
114171
|
-
}));
|
|
114172
115557
|
const selectedEvents = Array.isArray(config.eventTypes) ? config.eventTypes.filter((value) => typeof value == "string") : [];
|
|
115558
|
+
const eventOptions = readOnly ? selectedEvents : selectedSource?.eventTypes;
|
|
114173
115559
|
const visibleInputs = inputs.filter((input) => {
|
|
114174
115560
|
if ("group" in input || input.handle === "sourceId" || input.handle === "eventTypes") return true;
|
|
114175
115561
|
if (!sourceId) return false;
|
|
@@ -114178,22 +115564,23 @@ function EventSourceTriggerConfig({ inputs, provider = "feishu_app_bot", fieldLa
|
|
|
114178
115564
|
return true;
|
|
114179
115565
|
});
|
|
114180
115566
|
return /* @__PURE__ */ jsx(TriggerConfigEditor, {
|
|
115567
|
+
readOnly,
|
|
114181
115568
|
onReset: () => {
|
|
114182
|
-
return
|
|
115569
|
+
return editor?.nodes.resetTriggerConfig(nodeId);
|
|
114183
115570
|
},
|
|
114184
|
-
onResetValue: (name) => void
|
|
115571
|
+
onResetValue: (name) => void editor?.nodes.resetTriggerConfig(nodeId, [name]),
|
|
114185
115572
|
inputs: visibleInputs,
|
|
114186
115573
|
fieldLabels,
|
|
114187
115574
|
config: assignments,
|
|
114188
115575
|
disabled,
|
|
114189
|
-
onChange: (name, value) => void
|
|
115576
|
+
onChange: (name, value) => void editor?.nodes.saveTriggerConfig(nodeId, name, value),
|
|
114190
115577
|
renderEditor: (input) => input.handle === "sourceId" ? /* @__PURE__ */ jsxs("div", {
|
|
114191
115578
|
className: "flex min-w-0 flex-col gap-2",
|
|
114192
115579
|
children: [
|
|
114193
115580
|
options == null ? /* @__PURE__ */ jsx("div", {
|
|
114194
115581
|
className: "flex h-[30px] w-full items-center rounded-[var(--ui-control-radius,var(--ui-radius))] border border-input bg-[var(--ui-control-background,var(--ui-muted))] px-2 text-xs text-muted-foreground",
|
|
114195
115582
|
children: t("eventSources.loading")
|
|
114196
|
-
}) : options.length > 0 ? /* @__PURE__ */ jsx(EventSourceSelect, {
|
|
115583
|
+
}) : readOnly || options.length > 0 ? /* @__PURE__ */ jsx(EventSourceSelect, {
|
|
114197
115584
|
label: fieldLabels?.sourceId ?? t("eventSources.source"),
|
|
114198
115585
|
value: sourceId,
|
|
114199
115586
|
options,
|
|
@@ -114201,12 +115588,12 @@ function EventSourceTriggerConfig({ inputs, provider = "feishu_app_bot", fieldLa
|
|
|
114201
115588
|
onOpen: () => setAttempt((value) => value + 1),
|
|
114202
115589
|
onChange: (value) => {
|
|
114203
115590
|
const source = matchingSources?.find((item) => item.sourceId == value);
|
|
114204
|
-
if (source != null)
|
|
115591
|
+
if (source != null) editor?.nodes.setTriggerEventSource(nodeId, source);
|
|
114205
115592
|
}
|
|
114206
|
-
}) : /* @__PURE__ */ jsxs("div", {
|
|
115593
|
+
}) : editor != null ? /* @__PURE__ */ jsxs("div", {
|
|
114207
115594
|
className: "flex h-[30px] w-full items-center overflow-hidden rounded-[var(--ui-control-radius,var(--ui-radius))] border border-input bg-[var(--ui-control-background,var(--ui-muted))]",
|
|
114208
115595
|
children: [/* @__PURE__ */ jsx(CreateEventSourceDialog, {
|
|
114209
|
-
notify:
|
|
115596
|
+
notify: editor.notify,
|
|
114210
115597
|
className: "min-w-0 flex-1",
|
|
114211
115598
|
trigger: /* @__PURE__ */ jsx(Button$1, {
|
|
114212
115599
|
type: "button",
|
|
@@ -114215,7 +115602,7 @@ function EventSourceTriggerConfig({ inputs, provider = "feishu_app_bot", fieldLa
|
|
|
114215
115602
|
className: "h-full w-full justify-start rounded-none border-0 bg-transparent px-2"
|
|
114216
115603
|
}),
|
|
114217
115604
|
sourceKind: eventSourceKind(provider),
|
|
114218
|
-
client:
|
|
115605
|
+
client: editor.eventSourceClient,
|
|
114219
115606
|
teamId: state?.key == key ? state.teamId ?? null : null,
|
|
114220
115607
|
existingNames: sources?.map((source) => source.name) ?? [],
|
|
114221
115608
|
disabled: disabled || state?.key != key || state.teamId === void 0,
|
|
@@ -114223,8 +115610,8 @@ function EventSourceTriggerConfig({ inputs, provider = "feishu_app_bot", fieldLa
|
|
|
114223
115610
|
...current,
|
|
114224
115611
|
sources: [...current.sources ?? [], source]
|
|
114225
115612
|
} : current),
|
|
114226
|
-
onSelect: async (source) =>
|
|
114227
|
-
}, JSON.stringify([
|
|
115613
|
+
onSelect: async (source) => editor.$.flowId.value == flowId && await editor.nodes.setTriggerEventSource(nodeId, source)
|
|
115614
|
+
}, JSON.stringify([editor.$.flowId.value, nodeId])), /* @__PURE__ */ jsx(Button$1, {
|
|
114228
115615
|
type: "button",
|
|
114229
115616
|
size: "icon-xs",
|
|
114230
115617
|
variant: "ghost",
|
|
@@ -114238,7 +115625,7 @@ function EventSourceTriggerConfig({ inputs, provider = "feishu_app_bot", fieldLa
|
|
|
114238
115625
|
className: `i-lucide-light:refresh-cw ${loading ? "animate-spin motion-reduce:animate-none" : ""}`
|
|
114239
115626
|
})
|
|
114240
115627
|
})]
|
|
114241
|
-
}),
|
|
115628
|
+
}) : null,
|
|
114242
115629
|
sourceId && options != null && !options.some((option) => option.value == sourceId) && /* @__PURE__ */ jsx("p", {
|
|
114243
115630
|
role: "alert",
|
|
114244
115631
|
className: "text-sm text-destructive",
|
|
@@ -114250,14 +115637,15 @@ function EventSourceTriggerConfig({ inputs, provider = "feishu_app_bot", fieldLa
|
|
|
114250
115637
|
children: t("eventSources.loadFailed")
|
|
114251
115638
|
})
|
|
114252
115639
|
]
|
|
114253
|
-
}) : input.handle === "eventTypes" && provider === "feishu_app_bot" ? sourceId ? /* @__PURE__ */ jsxs("div", {
|
|
115640
|
+
}) : input.handle === "eventTypes" && provider === "feishu_app_bot" ? sourceId || readOnly ? /* @__PURE__ */ jsxs("div", {
|
|
114254
115641
|
className: "flex flex-col gap-2",
|
|
114255
115642
|
children: [/* @__PURE__ */ jsx(FeishuEventPicker, {
|
|
115643
|
+
readOnly,
|
|
114256
115644
|
value: selectedEvents,
|
|
114257
|
-
allowedEvents:
|
|
115645
|
+
allowedEvents: eventOptions ?? [],
|
|
114258
115646
|
disabled: disabled || eventOptions == null,
|
|
114259
|
-
onChange: (value) => void
|
|
114260
|
-
}), /* @__PURE__ */ jsx("p", {
|
|
115647
|
+
onChange: (value) => void editor?.nodes.saveTriggerConfig(nodeId, "eventTypes", value)
|
|
115648
|
+
}), !readOnly && /* @__PURE__ */ jsx("p", {
|
|
114261
115649
|
className: "m-0 text-xs text-muted-foreground",
|
|
114262
115650
|
children: t("eventSources.sourceEventsHint")
|
|
114263
115651
|
})]
|
|
@@ -114265,12 +115653,13 @@ function EventSourceTriggerConfig({ inputs, provider = "feishu_app_bot", fieldLa
|
|
|
114265
115653
|
className: "flex h-[30px] items-center rounded-[var(--ui-control-radius,var(--ui-radius))] border border-input bg-[var(--ui-control-background,var(--ui-muted))] px-2 text-xs text-muted-foreground",
|
|
114266
115654
|
children: t("eventSources.selectSourceFirst")
|
|
114267
115655
|
}) : input.handle === "chatIds" || input.handle === "resource" ? /* @__PURE__ */ jsx(FeishuEventFilters, {
|
|
115656
|
+
readOnly,
|
|
114268
115657
|
field: input.handle,
|
|
114269
115658
|
config,
|
|
114270
115659
|
events: selectedEvents,
|
|
114271
115660
|
managed: selectedSource?.manageSubscriptions ?? false,
|
|
114272
115661
|
disabled: disabled || selectedSource == null,
|
|
114273
|
-
onChange: (name, value) => void
|
|
115662
|
+
onChange: (name, value) => void editor?.nodes.saveTriggerConfig(nodeId, name, value)
|
|
114274
115663
|
}) : void 0
|
|
114275
115664
|
});
|
|
114276
115665
|
}
|
|
@@ -115093,109 +116482,6 @@ function GeneralSettings({ title, children, disabled = false, readOnly = false,
|
|
|
115093
116482
|
}, nodeId);
|
|
115094
116483
|
}
|
|
115095
116484
|
//#endregion
|
|
115096
|
-
//#region src/workbench/browser/runtime/editor/httpParameterEditor.tsx
|
|
115097
|
-
var expanded$2 = () => true;
|
|
115098
|
-
var object = (value) => value != null && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
115099
|
-
function HttpParameterEditor({ group, task, entries, disabled, readOnly, variables, renderSource, onEdit }) {
|
|
115100
|
-
const t = useTranslate();
|
|
115101
|
-
if (task.executor.kind !== "http-request") return null;
|
|
115102
|
-
const parameters = task.executor[group];
|
|
115103
|
-
const root = parameters.mode === "object" ? entries[group] : void 0;
|
|
115104
|
-
const label = t(`httpRequest.${group}`);
|
|
115105
|
-
const schema = group === "query" ? httpQuerySchema : httpHeaderSchema;
|
|
115106
|
-
const handle = (name) => `${group === "query" ? "query" : "header"}.${name}`;
|
|
115107
|
-
const values = parameters.mode === "fields" ? Object.fromEntries(parameters.names.map((name) => {
|
|
115108
|
-
const value = entries[handle(name)]?.value;
|
|
115109
|
-
return [name, value === void 0 ? "" : value];
|
|
115110
|
-
})) : object(root?.value);
|
|
115111
|
-
const input = (port, entry, name) => {
|
|
115112
|
-
const upstream = renderSource(port.handle, port);
|
|
115113
|
-
return {
|
|
115114
|
-
embedded: true,
|
|
115115
|
-
definition: port,
|
|
115116
|
-
variables,
|
|
115117
|
-
disabled,
|
|
115118
|
-
readOnly,
|
|
115119
|
-
variableName: entry?.variableName,
|
|
115120
|
-
connected: entry?.connected ?? false,
|
|
115121
|
-
upstream: upstream == null ? void 0 : {
|
|
115122
|
-
...upstream,
|
|
115123
|
-
onChange: (source) => onEdit({
|
|
115124
|
-
kind: "source",
|
|
115125
|
-
source: {
|
|
115126
|
-
kind: "node",
|
|
115127
|
-
...source
|
|
115128
|
-
},
|
|
115129
|
-
field: name,
|
|
115130
|
-
fields: values
|
|
115131
|
-
})
|
|
115132
|
-
},
|
|
115133
|
-
onVariable: (next) => {
|
|
115134
|
-
if (next == null) onEdit({
|
|
115135
|
-
kind: "fields",
|
|
115136
|
-
value: name == null ? {} : {
|
|
115137
|
-
...values,
|
|
115138
|
-
[name]: ""
|
|
115139
|
-
},
|
|
115140
|
-
field: name
|
|
115141
|
-
});
|
|
115142
|
-
else onEdit({
|
|
115143
|
-
kind: "variable",
|
|
115144
|
-
name: next,
|
|
115145
|
-
field: name,
|
|
115146
|
-
fields: values
|
|
115147
|
-
});
|
|
115148
|
-
}
|
|
115149
|
-
};
|
|
115150
|
-
};
|
|
115151
|
-
return /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, { children: label }), /* @__PURE__ */ jsx(FieldTable, {
|
|
115152
|
-
standalone: true,
|
|
115153
|
-
layout: "values",
|
|
115154
|
-
typeColumn: false,
|
|
115155
|
-
columnHeadings: false,
|
|
115156
|
-
actionSlots: 2,
|
|
115157
|
-
children: /* @__PURE__ */ jsx(NodeInputValue, {
|
|
115158
|
-
...input({
|
|
115159
|
-
handle: group,
|
|
115160
|
-
jsonSchema: schema,
|
|
115161
|
-
nullable: true
|
|
115162
|
-
}, root),
|
|
115163
|
-
label,
|
|
115164
|
-
value: values,
|
|
115165
|
-
onValue: (next) => onEdit({
|
|
115166
|
-
kind: "fields",
|
|
115167
|
-
value: object(next)
|
|
115168
|
-
}),
|
|
115169
|
-
presentation: {
|
|
115170
|
-
valueOnly: true,
|
|
115171
|
-
hideOptions: true,
|
|
115172
|
-
hideValueTools: true,
|
|
115173
|
-
hideChildTypes: true,
|
|
115174
|
-
expansionPolicy: expanded$2,
|
|
115175
|
-
validateObjectFieldName: (name, current) => group === "query" ? !!name.trim() && (name === current || !Object.hasOwn(values, name)) : httpHeaderNameIssue(name, Object.keys(values).filter((key) => key !== current)) == null,
|
|
115176
|
-
renderObjectField: (name, props) => /* @__PURE__ */ jsx(NodeInputValue, {
|
|
115177
|
-
...input({
|
|
115178
|
-
handle: handle(name),
|
|
115179
|
-
jsonSchema: props.schema,
|
|
115180
|
-
nullable: true
|
|
115181
|
-
}, parameters.mode === "fields" ? entries[handle(name)] : void 0, name),
|
|
115182
|
-
label: props.label,
|
|
115183
|
-
value: parameters.mode === "fields" ? entries[handle(name)]?.value : values[name],
|
|
115184
|
-
presentation: props,
|
|
115185
|
-
onValue: (value) => onEdit({
|
|
115186
|
-
kind: "fields",
|
|
115187
|
-
value: {
|
|
115188
|
-
...values,
|
|
115189
|
-
[name]: value ?? null
|
|
115190
|
-
},
|
|
115191
|
-
field: name
|
|
115192
|
-
})
|
|
115193
|
-
})
|
|
115194
|
-
}
|
|
115195
|
-
})
|
|
115196
|
-
})] });
|
|
115197
|
-
}
|
|
115198
|
-
//#endregion
|
|
115199
116485
|
//#region src/workbench/browser/runtime/editor/httpRequestSection.tsx
|
|
115200
116486
|
function HttpRequestSection({ task, disabled, onSave, parameters, input }) {
|
|
115201
116487
|
const t = useTranslate();
|
|
@@ -115366,7 +116652,8 @@ function HttpRequestSection({ task, disabled, onSave, parameters, input }) {
|
|
|
115366
116652
|
}
|
|
115367
116653
|
//#endregion
|
|
115368
116654
|
//#region src/workbench/browser/runtime/editor/useTriggerConfigOptions.ts
|
|
115369
|
-
function useTriggerConfigOptions(store, nodeId, field, scope,
|
|
116655
|
+
function useTriggerConfigOptions(store, nodeId, field, scope, requested) {
|
|
116656
|
+
const enabled = store != null && requested;
|
|
115370
116657
|
const [attempt, setAttempt] = useState(0);
|
|
115371
116658
|
const key = JSON.stringify([
|
|
115372
116659
|
nodeId,
|
|
@@ -115375,7 +116662,7 @@ function useTriggerConfigOptions(store, nodeId, field, scope, enabled) {
|
|
|
115375
116662
|
]);
|
|
115376
116663
|
const [state, setState] = useState();
|
|
115377
116664
|
useEffect(() => {
|
|
115378
|
-
if (!enabled) return;
|
|
116665
|
+
if (!enabled || store == null) return;
|
|
115379
116666
|
const controller = new AbortController();
|
|
115380
116667
|
setState((current) => ({
|
|
115381
116668
|
failed: false,
|
|
@@ -115491,12 +116778,15 @@ function TeamSelect({ disabled, missing, options, value, onChange }) {
|
|
|
115491
116778
|
})]
|
|
115492
116779
|
});
|
|
115493
116780
|
}
|
|
115494
|
-
function StatusSelect({ disabled, missing, options, selected, teamSelected, onChange }) {
|
|
116781
|
+
function StatusSelect({ disabled, readOnly = false, missing, options, selected, teamSelected, onChange }) {
|
|
115495
116782
|
const t = useTranslate();
|
|
115496
116783
|
const descriptionId = useId();
|
|
115497
116784
|
const errorId = useId();
|
|
115498
116785
|
const [container, setContainer] = useState(null);
|
|
115499
|
-
const choices =
|
|
116786
|
+
const choices = readOnly ? selected.map((value) => options.options?.find((item) => item.value == value) ?? {
|
|
116787
|
+
label: value,
|
|
116788
|
+
value
|
|
116789
|
+
}) : [...options.options ?? [], ...missing.map((value) => ({
|
|
115500
116790
|
label: t("linearTrigger.unavailableStatus", { id: value }),
|
|
115501
116791
|
value
|
|
115502
116792
|
}))];
|
|
@@ -115518,7 +116808,7 @@ function StatusSelect({ disabled, missing, options, selected, teamSelected, onCh
|
|
|
115518
116808
|
}),
|
|
115519
116809
|
/* @__PURE__ */ jsxs(DropdownMenu, {
|
|
115520
116810
|
onOpenChange: (open) => {
|
|
115521
|
-
if (open) options.refresh();
|
|
116811
|
+
if (open && !readOnly) options.refresh();
|
|
115522
116812
|
},
|
|
115523
116813
|
children: [/* @__PURE__ */ jsxs(DropdownMenuTrigger, {
|
|
115524
116814
|
render: /* @__PURE__ */ jsx(Button$1, {
|
|
@@ -115528,7 +116818,7 @@ function StatusSelect({ disabled, missing, options, selected, teamSelected, onCh
|
|
|
115528
116818
|
className: "w-full min-w-0 justify-between",
|
|
115529
116819
|
"data-field-control": true,
|
|
115530
116820
|
"data-field-prompt": missing.length > 0 || void 0,
|
|
115531
|
-
disabled,
|
|
116821
|
+
disabled: disabled && !readOnly,
|
|
115532
116822
|
size: "field",
|
|
115533
116823
|
title: missing.length > 0 ? t("linearTrigger.missingStatuses") : t("linearTrigger.statusHint"),
|
|
115534
116824
|
type: "button",
|
|
@@ -115558,6 +116848,7 @@ function StatusSelect({ disabled, missing, options, selected, teamSelected, onCh
|
|
|
115558
116848
|
const unavailable = missing.includes(item.value);
|
|
115559
116849
|
return /* @__PURE__ */ jsxs(DropdownMenuCheckboxItem, {
|
|
115560
116850
|
checked,
|
|
116851
|
+
disabled: readOnly,
|
|
115561
116852
|
className: `mt-1 first-of-type:mt-0 min-h-7 rounded-[var(--ui-control-radius,var(--ui-radius))] py-1 text-xs leading-5 font-normal ${unavailable ? "text-destructive" : ""}`,
|
|
115562
116853
|
onCheckedChange: (next) => onChange(next ? [...selected, item.value] : selected.filter((value) => value != item.value)),
|
|
115563
116854
|
children: ["color" in item && item.color != null && /* @__PURE__ */ jsx("span", {
|
|
@@ -115596,33 +116887,37 @@ function StatusSelect({ disabled, missing, options, selected, teamSelected, onCh
|
|
|
115596
116887
|
]
|
|
115597
116888
|
});
|
|
115598
116889
|
}
|
|
115599
|
-
function LinearTriggerConfig({ inputs, fieldLabels, config: assignments, nodeId, connectionId, disabled, store }) {
|
|
116890
|
+
function LinearTriggerConfig({ inputs, fieldLabels, config: assignments, nodeId, connectionId, disabled: temporarilyDisabled, readOnly = false, store }) {
|
|
116891
|
+
const disabled = readOnly || temporarilyDisabled;
|
|
116892
|
+
const editor = readOnly ? void 0 : store;
|
|
115600
116893
|
const config = triggerConfigValues(inputs, assignments);
|
|
115601
116894
|
const teamId = typeof config.teamId == "string" ? config.teamId : void 0;
|
|
115602
116895
|
const selected = Array.isArray(config.stateIds) ? config.stateIds.filter((id) => typeof id == "string") : [];
|
|
115603
|
-
const scope = JSON.stringify([
|
|
115604
|
-
const teams = useTriggerConfigOptions(
|
|
115605
|
-
const states = useTriggerConfigOptions(
|
|
116896
|
+
const scope = JSON.stringify([editor?.$.flowId.value, connectionId]);
|
|
116897
|
+
const teams = useTriggerConfigOptions(editor, nodeId, "teamId", scope, connectionId != null);
|
|
116898
|
+
const states = useTriggerConfigOptions(editor, nodeId, "stateIds", JSON.stringify([scope, teamId]), connectionId != null && teamId != null);
|
|
115606
116899
|
const missingTeam = teamId != null && teams.options != null && !teams.options.some((item) => item.value == teamId);
|
|
115607
116900
|
const missingStates = states.options == null ? [] : selected.filter((id) => !states.options.some((item) => item.value == id));
|
|
115608
116901
|
return /* @__PURE__ */ jsx(TriggerConfigEditor, {
|
|
115609
|
-
|
|
115610
|
-
|
|
116902
|
+
readOnly,
|
|
116903
|
+
onReset: () => editor?.nodes.resetTriggerConfig(nodeId),
|
|
116904
|
+
onResetValue: (name) => void editor?.nodes.resetTriggerConfig(nodeId, [name]),
|
|
115611
116905
|
inputs,
|
|
115612
116906
|
fieldLabels,
|
|
115613
116907
|
config: assignments,
|
|
115614
116908
|
disabled,
|
|
115615
|
-
onChange: (name, value) => void
|
|
116909
|
+
onChange: (name, value) => void editor?.nodes.saveTriggerConfig(nodeId, name, value),
|
|
115616
116910
|
renderEditor: (input) => input.handle === "teamId" ? /* @__PURE__ */ jsx(TeamSelect, {
|
|
115617
116911
|
disabled: disabled || connectionId == null,
|
|
115618
116912
|
missing: missingTeam,
|
|
115619
|
-
onChange: (value) => void
|
|
116913
|
+
onChange: (value) => void editor?.nodes.saveTriggerConfig(nodeId, "teamId", value),
|
|
115620
116914
|
options: teams,
|
|
115621
116915
|
value: teamId
|
|
115622
116916
|
}) : input.handle === "stateIds" ? /* @__PURE__ */ jsx(StatusSelect, {
|
|
116917
|
+
readOnly,
|
|
115623
116918
|
disabled: disabled || connectionId == null || teamId == null || missingTeam,
|
|
115624
116919
|
missing: missingStates,
|
|
115625
|
-
onChange: (value) => void
|
|
116920
|
+
onChange: (value) => void editor?.nodes.saveTriggerConfig(nodeId, "stateIds", value),
|
|
115626
116921
|
options: states,
|
|
115627
116922
|
selected,
|
|
115628
116923
|
teamSelected: teamId != null
|
|
@@ -116243,6 +117538,106 @@ function presentProviderOutputDescription(node, output, description, display) {
|
|
|
116243
117538
|
return display?.outputs[output] ?? description;
|
|
116244
117539
|
}
|
|
116245
117540
|
//#endregion
|
|
117541
|
+
//#region src/workbench/browser/runtime/editor/requestParameterEditor.tsx
|
|
117542
|
+
var expanded$2 = () => true;
|
|
117543
|
+
var object = (value) => value != null && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
117544
|
+
function RequestParameterEditor({ group, parameters, schema, entries, disabled, readOnly, variables, renderSource, onEdit }) {
|
|
117545
|
+
const t = useTranslate();
|
|
117546
|
+
const root = parameters.mode === "object" ? entries[group] : void 0;
|
|
117547
|
+
const label = t(`httpRequest.${group}`);
|
|
117548
|
+
const handle = (name) => `${group === "query" ? "query" : "header"}.${name}`;
|
|
117549
|
+
const values = parameters.mode === "fields" ? Object.fromEntries(parameters.names.map((name) => {
|
|
117550
|
+
const value = entries[handle(name)]?.value;
|
|
117551
|
+
return [name, value === void 0 ? "" : value];
|
|
117552
|
+
})) : object(root?.value);
|
|
117553
|
+
const input = (port, entry, name) => {
|
|
117554
|
+
const upstream = renderSource(port.handle, port);
|
|
117555
|
+
return {
|
|
117556
|
+
embedded: true,
|
|
117557
|
+
definition: port,
|
|
117558
|
+
variables,
|
|
117559
|
+
disabled,
|
|
117560
|
+
readOnly,
|
|
117561
|
+
variableName: entry?.variableName,
|
|
117562
|
+
connected: entry?.connected ?? false,
|
|
117563
|
+
upstream: upstream == null ? void 0 : {
|
|
117564
|
+
...upstream,
|
|
117565
|
+
onChange: (source) => onEdit({
|
|
117566
|
+
kind: "source",
|
|
117567
|
+
source: {
|
|
117568
|
+
kind: "node",
|
|
117569
|
+
...source
|
|
117570
|
+
},
|
|
117571
|
+
field: name,
|
|
117572
|
+
fields: values
|
|
117573
|
+
})
|
|
117574
|
+
},
|
|
117575
|
+
onVariable: (next) => {
|
|
117576
|
+
if (next == null) onEdit({
|
|
117577
|
+
kind: "fields",
|
|
117578
|
+
value: name == null ? {} : {
|
|
117579
|
+
...values,
|
|
117580
|
+
[name]: ""
|
|
117581
|
+
},
|
|
117582
|
+
field: name
|
|
117583
|
+
});
|
|
117584
|
+
else onEdit({
|
|
117585
|
+
kind: "variable",
|
|
117586
|
+
name: next,
|
|
117587
|
+
field: name,
|
|
117588
|
+
fields: values
|
|
117589
|
+
});
|
|
117590
|
+
}
|
|
117591
|
+
};
|
|
117592
|
+
};
|
|
117593
|
+
return /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, { children: label }), /* @__PURE__ */ jsx(FieldTable, {
|
|
117594
|
+
standalone: true,
|
|
117595
|
+
layout: "values",
|
|
117596
|
+
typeColumn: false,
|
|
117597
|
+
columnHeadings: false,
|
|
117598
|
+
actionSlots: 2,
|
|
117599
|
+
children: /* @__PURE__ */ jsx(NodeInputValue, {
|
|
117600
|
+
...input({
|
|
117601
|
+
handle: group,
|
|
117602
|
+
jsonSchema: schema,
|
|
117603
|
+
nullable: true
|
|
117604
|
+
}, root),
|
|
117605
|
+
label,
|
|
117606
|
+
value: values,
|
|
117607
|
+
onValue: (next) => onEdit({
|
|
117608
|
+
kind: "fields",
|
|
117609
|
+
value: object(next)
|
|
117610
|
+
}),
|
|
117611
|
+
presentation: {
|
|
117612
|
+
valueOnly: true,
|
|
117613
|
+
hideOptions: true,
|
|
117614
|
+
hideValueTools: true,
|
|
117615
|
+
hideChildTypes: true,
|
|
117616
|
+
expansionPolicy: expanded$2,
|
|
117617
|
+
validateObjectFieldName: (name, current) => group === "query" ? !!name.trim() && (name === current || !Object.hasOwn(values, name)) : httpHeaderNameIssue(name, Object.keys(values).filter((key) => key !== current)) == null,
|
|
117618
|
+
renderObjectField: (name, props) => /* @__PURE__ */ jsx(NodeInputValue, {
|
|
117619
|
+
...input({
|
|
117620
|
+
handle: handle(name),
|
|
117621
|
+
jsonSchema: props.schema,
|
|
117622
|
+
nullable: true
|
|
117623
|
+
}, parameters.mode === "fields" ? entries[handle(name)] : void 0, name),
|
|
117624
|
+
label: props.label,
|
|
117625
|
+
value: parameters.mode === "fields" ? entries[handle(name)]?.value : values[name],
|
|
117626
|
+
presentation: props,
|
|
117627
|
+
onValue: (value) => onEdit({
|
|
117628
|
+
kind: "fields",
|
|
117629
|
+
value: {
|
|
117630
|
+
...values,
|
|
117631
|
+
[name]: value ?? null
|
|
117632
|
+
},
|
|
117633
|
+
field: name
|
|
117634
|
+
})
|
|
117635
|
+
})
|
|
117636
|
+
}
|
|
117637
|
+
})
|
|
117638
|
+
})] });
|
|
117639
|
+
}
|
|
117640
|
+
//#endregion
|
|
116246
117641
|
//#region src/workbench/browser/runtime/editor/timeZoneSelect.tsx
|
|
116247
117642
|
function TimeZoneSelect({ id, value, disabled, label, onChange, at = /* @__PURE__ */ new Date() }) {
|
|
116248
117643
|
const t = useTranslate();
|
|
@@ -116677,24 +118072,27 @@ function SkipDuplicatesSection({ task, disabled, onSave, history }) {
|
|
|
116677
118072
|
}
|
|
116678
118073
|
//#endregion
|
|
116679
118074
|
//#region src/workbench/browser/runtime/editor/tallyTriggerConfig.tsx
|
|
116680
|
-
function TallyTriggerConfig({ inputs, fieldLabels, config, nodeId, connectionId, disabled, store }) {
|
|
118075
|
+
function TallyTriggerConfig({ inputs, fieldLabels, config, nodeId, connectionId, disabled: temporarilyDisabled, readOnly = false, store }) {
|
|
118076
|
+
const disabled = readOnly || temporarilyDisabled;
|
|
118077
|
+
const editor = readOnly ? void 0 : store;
|
|
116681
118078
|
const t = useTranslate();
|
|
116682
118079
|
const values = triggerConfigValues(inputs, config);
|
|
116683
118080
|
const formId = typeof values.formId == "string" ? values.formId : void 0;
|
|
116684
|
-
const forms = useTriggerConfigOptions(
|
|
118081
|
+
const forms = useTriggerConfigOptions(editor, nodeId, "formId", JSON.stringify([editor?.$.flowId.value, connectionId]), connectionId != null);
|
|
116685
118082
|
const missing = formId != null && forms.options != null && !forms.options.some((item) => item.value == formId);
|
|
116686
118083
|
const items = [...forms.options ?? [], ...formId != null && !forms.options?.some((item) => item.value == formId) ? [{
|
|
116687
118084
|
value: formId,
|
|
116688
118085
|
label: formId
|
|
116689
118086
|
}] : []];
|
|
116690
118087
|
return /* @__PURE__ */ jsx(TriggerConfigEditor, {
|
|
118088
|
+
readOnly,
|
|
116691
118089
|
inputs,
|
|
116692
118090
|
fieldLabels,
|
|
116693
118091
|
config,
|
|
116694
118092
|
disabled,
|
|
116695
|
-
onChange: (name, value) => void
|
|
116696
|
-
onReset: () =>
|
|
116697
|
-
onResetValue: (name) => void
|
|
118093
|
+
onChange: (name, value) => void editor?.nodes.saveTriggerConfig(nodeId, name, value),
|
|
118094
|
+
onReset: () => editor?.nodes.resetTriggerConfig(nodeId),
|
|
118095
|
+
onResetValue: (name) => void editor?.nodes.resetTriggerConfig(nodeId, [name]),
|
|
116698
118096
|
renderEditor: (input) => input.handle == "formId" ? /* @__PURE__ */ jsxs("div", {
|
|
116699
118097
|
className: "min-w-0",
|
|
116700
118098
|
children: [
|
|
@@ -116706,7 +118104,7 @@ function TallyTriggerConfig({ inputs, fieldLabels, config, nodeId, connectionId,
|
|
|
116706
118104
|
if (open) forms.refresh();
|
|
116707
118105
|
},
|
|
116708
118106
|
onValueChange: (value) => {
|
|
116709
|
-
if (typeof value == "string")
|
|
118107
|
+
if (typeof value == "string") editor?.nodes.saveTriggerConfig(nodeId, "formId", value);
|
|
116710
118108
|
},
|
|
116711
118109
|
children: [/* @__PURE__ */ jsx(SelectTrigger, {
|
|
116712
118110
|
"aria-label": t("tallyTrigger.form"),
|
|
@@ -117928,7 +119326,7 @@ function inspectorIcon(node) {
|
|
|
117928
119326
|
if (node.definition.executor.kind == "decision") return "decision";
|
|
117929
119327
|
if (node.definition.executor.kind == "workflow") return "flow";
|
|
117930
119328
|
if (node.definition.executor.kind == "openapi" || node.definition.executor.kind == "http-request" || node.definition.executor.kind == "skip-duplicates") return "task";
|
|
117931
|
-
return node.definition.executor.kind == "connector" ? "connection" : "llm";
|
|
119329
|
+
return node.definition.executor.kind == "connector" || node.definition.executor.kind === "connector-proxy" ? "connection" : "llm";
|
|
117932
119330
|
}
|
|
117933
119331
|
return "task";
|
|
117934
119332
|
}
|
|
@@ -117962,6 +119360,7 @@ function nodePurposePlaceholder(selection, t, action, displays) {
|
|
|
117962
119360
|
case "workflow": return t("workflow.description");
|
|
117963
119361
|
case "skip-duplicates": return;
|
|
117964
119362
|
case "http-request": return t("httpRequest.description");
|
|
119363
|
+
case "connector-proxy": return t("connectorProxy.description");
|
|
117965
119364
|
case "openapi": return t("openapi.description");
|
|
117966
119365
|
case "connector": return action?.description;
|
|
117967
119366
|
case "llm": return t(definition.executor.mode == "json" ? "addNode.llmStructuredDescription" : "addNode.llmChatDescription");
|
|
@@ -118013,7 +119412,7 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118013
119412
|
loading: false,
|
|
118014
119413
|
names: [],
|
|
118015
119414
|
onOpen: void 0
|
|
118016
|
-
}, readOnly = false, connectorAction, connectorActionError, connectorAccessError, connectorAuthorizationPending = false, connectorConnection, connectorConnectionError, activeConnectorConnections, connectorProviders, connectors: liveConnectors, connectorAccess, connectorCandidates, onConfigureConnectorAccess, prepareConnectorAction, connectorLoading = false, disabled: temporarilyDisabled = false, diagnostics, focus, revision, selection, sourceNodeIcons, store: writableStore, theme, triggerActiveConnections, triggerAuthorizationPending = false, triggerConnection, triggerConnectionError, triggerConnectionLoading = false, triggerDisplays, triggers: liveTriggers }) {
|
|
119415
|
+
}, readOnly = false, connectorAction, connectorProvider, connectorActionError, connectorAccessError, connectorAuthorizationPending = false, connectorConnection, connectorConnectionError, activeConnectorConnections, connectorProviders, connectors: liveConnectors, connectorAccess, connectorCandidates, onConfigureConnectorAccess, prepareConnectorAction, connectorLoading = false, disabled: temporarilyDisabled = false, diagnostics, focus, revision, selection, sourceNodeIcons, store: writableStore, theme, triggerActiveConnections, triggerAuthorizationPending = false, triggerConnection, triggerConnectionError, triggerConnectionLoading = false, triggerDisplays, triggers: liveTriggers }) {
|
|
118017
119416
|
const store = readOnly ? void 0 : writableStore;
|
|
118018
119417
|
const connectors = readOnly ? void 0 : liveConnectors;
|
|
118019
119418
|
const triggers = readOnly ? void 0 : liveTriggers;
|
|
@@ -118035,6 +119434,8 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118035
119434
|
const isAgent = task != null && "executor" in task && task.executor.kind == "agent";
|
|
118036
119435
|
const isDecision = task != null && "executor" in task && task.executor.kind == "decision";
|
|
118037
119436
|
const isHttpRequest = task != null && "executor" in task && task.executor.kind == "http-request";
|
|
119437
|
+
const proxy = task != null && "executor" in task && task.executor.kind === "connector-proxy" ? task.executor : void 0;
|
|
119438
|
+
const proxyProvider = proxy == null ? void 0 : connectorProvider ?? connectorProviders?.[proxy.providerId];
|
|
118038
119439
|
const isOpenApi = task != null && "executor" in task && task.executor.kind == "openapi";
|
|
118039
119440
|
const unconfiguredWorkflow = task != null && "executor" in task && task.executor.kind == "workflow" && !task.executor.flowId;
|
|
118040
119441
|
const unconfiguredOpenApi = task != null && "executor" in task && task.executor.kind == "openapi" && !task.executor.path;
|
|
@@ -118077,6 +119478,98 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118077
119478
|
selection?.id,
|
|
118078
119479
|
selection?.kind
|
|
118079
119480
|
]);
|
|
119481
|
+
const requestInput = (handle, label) => {
|
|
119482
|
+
if (selection?.kind !== "task" || task == null) return null;
|
|
119483
|
+
const proxyBody = proxy != null && handle === "body";
|
|
119484
|
+
const definition = task.inputs.find((port) => "handle" in port && port.handle === handle) ?? (proxyBody ? connectorProxyBodyInput : void 0);
|
|
119485
|
+
if (definition == null) return null;
|
|
119486
|
+
const mapping = revision.inputMappings(selection.node)[handle];
|
|
119487
|
+
const source = mapping?.kind === "sources" ? mapping.sources.find((item) => item.kind === "binding") : void 0;
|
|
119488
|
+
const binding = source?.kind === "binding" ? revision.binding(source.bindingId) : void 0;
|
|
119489
|
+
const input = /* @__PURE__ */ jsx(NodeInputValue, {
|
|
119490
|
+
embedded: true,
|
|
119491
|
+
definition,
|
|
119492
|
+
label,
|
|
119493
|
+
presentation: {
|
|
119494
|
+
compact: !proxyBody,
|
|
119495
|
+
hideOptions: true,
|
|
119496
|
+
...proxyBody ? {
|
|
119497
|
+
layout: "values",
|
|
119498
|
+
valueOnly: true,
|
|
119499
|
+
hideChildTypes: true,
|
|
119500
|
+
defaultEditor: "object",
|
|
119501
|
+
expansionPolicy: () => true,
|
|
119502
|
+
unset: {
|
|
119503
|
+
label: t(readOnly ? "valueEditor.unset" : "valueEditor.setValue"),
|
|
119504
|
+
required: false
|
|
119505
|
+
}
|
|
119506
|
+
} : {}
|
|
119507
|
+
},
|
|
119508
|
+
sourceOnly: handle.startsWith("auth."),
|
|
119509
|
+
readOnly,
|
|
119510
|
+
disabled,
|
|
119511
|
+
value: inputValue(mapping, definition.value),
|
|
119512
|
+
connected: mapping?.kind === "sources" && binding?.kind !== "variable",
|
|
119513
|
+
variableName: binding?.kind === "variable" ? binding.target : void 0,
|
|
119514
|
+
upstream: inputUpstreamSources({
|
|
119515
|
+
revision,
|
|
119516
|
+
sourceNodeIcons,
|
|
119517
|
+
selection,
|
|
119518
|
+
store,
|
|
119519
|
+
handleName: handle,
|
|
119520
|
+
port: definition,
|
|
119521
|
+
t,
|
|
119522
|
+
triggerDisplays
|
|
119523
|
+
}),
|
|
119524
|
+
variables,
|
|
119525
|
+
onValue: (value, deletion) => {
|
|
119526
|
+
store?.nodes.setInputValue(selection.id, handle, value, deletion);
|
|
119527
|
+
},
|
|
119528
|
+
onVariable: (name) => {
|
|
119529
|
+
store?.nodes.setInputVariable(selection.id, handle, name);
|
|
119530
|
+
},
|
|
119531
|
+
onReset: proxyBody && definition.value !== void 0 ? () => void store?.nodes.resetInputs(selection.id, [handle]) : void 0
|
|
119532
|
+
});
|
|
119533
|
+
return /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, { children: label }), proxyBody ? /* @__PURE__ */ jsx(FieldTable, {
|
|
119534
|
+
standalone: true,
|
|
119535
|
+
layout: "values",
|
|
119536
|
+
typeColumn: false,
|
|
119537
|
+
columnHeadings: false,
|
|
119538
|
+
actionSlots: 2,
|
|
119539
|
+
children: input
|
|
119540
|
+
}) : input] }, handle);
|
|
119541
|
+
};
|
|
119542
|
+
const requestExecutor = task != null && "executor" in task && (task.executor.kind === "http-request" || task.executor.kind === "connector-proxy") ? task.executor : void 0;
|
|
119543
|
+
const requestParameters = requestExecutor != null && selection?.kind === "task" && ["query", "headers"].map((group) => /* @__PURE__ */ jsx(RequestParameterEditor, {
|
|
119544
|
+
group,
|
|
119545
|
+
parameters: requestExecutor[group],
|
|
119546
|
+
schema: proxy != null ? group === "query" ? connectorProxyQuerySchema : connectorProxyHeaderSchema : group === "query" ? httpQuerySchema : httpHeaderSchema,
|
|
119547
|
+
entries: Object.fromEntries(Object.entries(revision.inputMappings(selection.node)).map(([handle, mapping]) => {
|
|
119548
|
+
const source = mapping.kind === "sources" ? mapping.sources.find((item) => item.kind === "binding") : void 0;
|
|
119549
|
+
const binding = source?.kind === "binding" ? revision.binding(source.bindingId) : void 0;
|
|
119550
|
+
return [handle, {
|
|
119551
|
+
value: inputValue(mapping, void 0),
|
|
119552
|
+
connected: mapping.kind === "sources" && binding?.kind !== "variable",
|
|
119553
|
+
variableName: binding?.kind === "variable" ? binding.target : void 0
|
|
119554
|
+
}];
|
|
119555
|
+
})),
|
|
119556
|
+
variables,
|
|
119557
|
+
disabled,
|
|
119558
|
+
readOnly,
|
|
119559
|
+
renderSource: (handleName, port) => inputUpstreamSources({
|
|
119560
|
+
revision,
|
|
119561
|
+
sourceNodeIcons,
|
|
119562
|
+
selection,
|
|
119563
|
+
store,
|
|
119564
|
+
handleName,
|
|
119565
|
+
port,
|
|
119566
|
+
t,
|
|
119567
|
+
triggerDisplays
|
|
119568
|
+
}),
|
|
119569
|
+
onEdit: (edit) => {
|
|
119570
|
+
store?.nodes.saveRequestParameters(selection.id, group, edit);
|
|
119571
|
+
}
|
|
119572
|
+
}, group));
|
|
118080
119573
|
const panel = /* @__PURE__ */ jsx(ScrollArea, {
|
|
118081
119574
|
className: "inspector-scroll",
|
|
118082
119575
|
tabIndex: -1,
|
|
@@ -118086,13 +119579,14 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118086
119579
|
children: [
|
|
118087
119580
|
selection?.kind === "trigger" && selection.trigger.kind === "webhook" && webhookDeployment != null && /* @__PURE__ */ jsx(WebhookDeployment, { ...webhookDeployment }, selection.id),
|
|
118088
119581
|
readOnly && connector != null && /* @__PURE__ */ jsx(SavedConnectionReference, {
|
|
118089
|
-
|
|
118090
|
-
connectionId: connector
|
|
119582
|
+
noSetup: connectorAction?.authenticated === false || connectorProviders?.[connector.action.split(".")[0]]?.noSetup,
|
|
119583
|
+
connectionId: proxy?.connectionId ?? connector?.connectionId
|
|
118091
119584
|
}),
|
|
118092
|
-
readOnly &&
|
|
118093
|
-
|
|
118094
|
-
connectionId:
|
|
119585
|
+
readOnly && proxy != null && /* @__PURE__ */ jsx(SavedConnectionReference, {
|
|
119586
|
+
noSetup: proxyProvider?.noSetup,
|
|
119587
|
+
connectionId: proxy.connectionId
|
|
118095
119588
|
}),
|
|
119589
|
+
readOnly && selection?.kind === "trigger" && (selection.trigger.kind === "poll" || selection.trigger.kind === "integration") && /* @__PURE__ */ jsx(SavedConnectionReference, { connectionId: selection.trigger.connectionId }),
|
|
118096
119590
|
!readOnly && triggers != null && selection?.kind == "trigger" && /* @__PURE__ */ jsx(TriggerConnection, {
|
|
118097
119591
|
activeConnections: triggerActiveConnections,
|
|
118098
119592
|
authorizationPending: triggerAuthorizationPending,
|
|
@@ -118104,17 +119598,17 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118104
119598
|
triggers,
|
|
118105
119599
|
onConfigureAccess: (providerId) => void triggers.connect(providerId)
|
|
118106
119600
|
}),
|
|
118107
|
-
!readOnly && connectors != null && connector != null && nodeId != null && connectorAction?.authenticated !== false && /* @__PURE__ */ jsx(ConnectorAccount, {
|
|
118108
|
-
|
|
119601
|
+
!readOnly && connectors != null && (connector != null || proxy != null) && nodeId != null && (proxy != null ? proxyProvider?.noSetup !== true : connectorAction?.authenticated !== false) && /* @__PURE__ */ jsx(ConnectorAccount, {
|
|
119602
|
+
resource: proxy != null ? proxyProvider : connectorAction,
|
|
118109
119603
|
actionError: connectorActionError,
|
|
118110
119604
|
accessError: connectorAccessError,
|
|
118111
|
-
actionId: connector.action,
|
|
118112
|
-
onConfigureAccess: () => void connectors.connect(connectorAction?.serviceId ?? connector.action.split(".")[0]),
|
|
119605
|
+
actionId: proxy?.providerId ?? connector.action,
|
|
119606
|
+
onConfigureAccess: () => void connectors.connect(proxy?.providerId ?? connectorAction?.serviceId ?? connector.action.split(".")[0]),
|
|
118113
119607
|
activeConnections: activeConnectorConnections,
|
|
118114
119608
|
authorizationPending: connectorAuthorizationPending,
|
|
118115
119609
|
connection: connectorConnection,
|
|
118116
119610
|
connectionError: connectorConnectionError,
|
|
118117
|
-
connectionId: connector
|
|
119611
|
+
connectionId: proxy?.connectionId ?? connector?.connectionId,
|
|
118118
119612
|
connectors,
|
|
118119
119613
|
disabled,
|
|
118120
119614
|
fieldIdPrefix: `task-${selection?.id}`,
|
|
@@ -118139,6 +119633,7 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118139
119633
|
isAgent && /* @__PURE__ */ jsx(AgentPrompt, {}),
|
|
118140
119634
|
selection?.kind === "task" && selection.module != null && /* @__PURE__ */ jsx(CodeTaskSection, {
|
|
118141
119635
|
readOnly,
|
|
119636
|
+
providers: connectorProviders,
|
|
118142
119637
|
connectorAccess,
|
|
118143
119638
|
connectorCandidates,
|
|
118144
119639
|
onConfigureAccess: onConfigureConnectorAccess == null ? void 0 : () => onConfigureConnectorAccess(),
|
|
@@ -118151,7 +119646,7 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118151
119646
|
store,
|
|
118152
119647
|
theme
|
|
118153
119648
|
}),
|
|
118154
|
-
selection?.kind === "trigger" && (selection.trigger.kind === "integration" || selection.trigger.kind === "poll") && (
|
|
119649
|
+
selection?.kind === "trigger" && (selection.trigger.kind === "integration" || selection.trigger.kind === "poll") && ([
|
|
118155
119650
|
"feishu.on_event",
|
|
118156
119651
|
"feishu_app_bot.on_event",
|
|
118157
119652
|
"slackbot.on_event",
|
|
@@ -118161,6 +119656,7 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118161
119656
|
"fireflies.on_meeting_ready",
|
|
118162
119657
|
"jira.on_issue_event"
|
|
118163
119658
|
].includes(selection.trigger.definition.key) ? /* @__PURE__ */ jsx(EventSourceTriggerConfig, {
|
|
119659
|
+
readOnly,
|
|
118164
119660
|
provider: selection.trigger.definition.provider === "slackbot" ? "slackbot" : selection.trigger.definition.provider === "intercom" ? "intercom" : selection.trigger.definition.provider === "sentry" ? "sentry" : selection.trigger.definition.provider === "zoom" ? "zoom" : selection.trigger.definition.provider === "fireflies" ? "fireflies" : selection.trigger.definition.provider === "jira" ? "jira" : "feishu_app_bot",
|
|
118165
119661
|
inputs: providerConfigInputs,
|
|
118166
119662
|
fieldLabels: providerDisplay?.configInputLabels,
|
|
@@ -118169,7 +119665,8 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118169
119665
|
connectionId: selection.trigger.connectionId,
|
|
118170
119666
|
disabled,
|
|
118171
119667
|
store
|
|
118172
|
-
}) :
|
|
119668
|
+
}) : selection.trigger.definition.key === "linear.on_issue_changed" ? /* @__PURE__ */ jsx(LinearTriggerConfig, {
|
|
119669
|
+
readOnly,
|
|
118173
119670
|
inputs: providerConfigInputs,
|
|
118174
119671
|
fieldLabels: providerDisplay?.configInputLabels,
|
|
118175
119672
|
config: selection.trigger.config,
|
|
@@ -118177,7 +119674,8 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118177
119674
|
connectionId: selection.trigger.connectionId,
|
|
118178
119675
|
disabled,
|
|
118179
119676
|
store
|
|
118180
|
-
}) :
|
|
119677
|
+
}) : selection.trigger.definition.key === "tally.on_form_response" ? /* @__PURE__ */ jsx(TallyTriggerConfig, {
|
|
119678
|
+
readOnly,
|
|
118181
119679
|
inputs: providerConfigInputs,
|
|
118182
119680
|
fieldLabels: providerDisplay?.configInputLabels,
|
|
118183
119681
|
config: selection.trigger.config,
|
|
@@ -118312,74 +119810,8 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118312
119810
|
isHttpRequest && task != null && "executor" in task && /* @__PURE__ */ jsx(HttpRequestSection, {
|
|
118313
119811
|
task,
|
|
118314
119812
|
disabled,
|
|
118315
|
-
input:
|
|
118316
|
-
|
|
118317
|
-
const definition = task.inputs.find((port) => "handle" in port && port.handle === handle);
|
|
118318
|
-
if (definition == null) return null;
|
|
118319
|
-
const mapping = revision.inputMappings(selection.node)[handle];
|
|
118320
|
-
const source = mapping?.kind === "sources" ? mapping.sources.find((item) => item.kind === "binding") : void 0;
|
|
118321
|
-
const binding = source?.kind === "binding" ? revision.binding(source.bindingId) : void 0;
|
|
118322
|
-
return /* @__PURE__ */ jsxs(Field, { children: [/* @__PURE__ */ jsx(FieldLabel, { children: label }), /* @__PURE__ */ jsx(NodeInputValue, {
|
|
118323
|
-
embedded: true,
|
|
118324
|
-
definition,
|
|
118325
|
-
label,
|
|
118326
|
-
presentation: {
|
|
118327
|
-
compact: true,
|
|
118328
|
-
hideOptions: true
|
|
118329
|
-
},
|
|
118330
|
-
sourceOnly: handle.startsWith("auth."),
|
|
118331
|
-
readOnly,
|
|
118332
|
-
disabled,
|
|
118333
|
-
value: inputValue(mapping, definition.value),
|
|
118334
|
-
connected: mapping?.kind === "sources" && binding?.kind !== "variable",
|
|
118335
|
-
variableName: binding?.kind === "variable" ? binding.target : void 0,
|
|
118336
|
-
upstream: inputUpstreamSources({
|
|
118337
|
-
revision,
|
|
118338
|
-
sourceNodeIcons,
|
|
118339
|
-
selection,
|
|
118340
|
-
store,
|
|
118341
|
-
handleName: handle,
|
|
118342
|
-
t,
|
|
118343
|
-
triggerDisplays
|
|
118344
|
-
}),
|
|
118345
|
-
variables,
|
|
118346
|
-
onValue: (value, deletion) => {
|
|
118347
|
-
store?.nodes.setInputValue(selection.id, handle, value, deletion);
|
|
118348
|
-
},
|
|
118349
|
-
onVariable: (name) => {
|
|
118350
|
-
store?.nodes.setInputVariable(selection.id, handle, name);
|
|
118351
|
-
}
|
|
118352
|
-
})] }, handle);
|
|
118353
|
-
},
|
|
118354
|
-
parameters: selection?.kind === "task" && ["query", "headers"].map((group) => /* @__PURE__ */ jsx(HttpParameterEditor, {
|
|
118355
|
-
group,
|
|
118356
|
-
task,
|
|
118357
|
-
entries: Object.fromEntries(Object.entries(revision.inputMappings(selection.node)).map(([handle, mapping]) => {
|
|
118358
|
-
const source = mapping.kind === "sources" ? mapping.sources.find((item) => item.kind === "binding") : void 0;
|
|
118359
|
-
const binding = source?.kind === "binding" ? revision.binding(source.bindingId) : void 0;
|
|
118360
|
-
return [handle, {
|
|
118361
|
-
value: inputValue(mapping, void 0),
|
|
118362
|
-
connected: mapping.kind === "sources" && binding?.kind !== "variable",
|
|
118363
|
-
variableName: binding?.kind === "variable" ? binding.target : void 0
|
|
118364
|
-
}];
|
|
118365
|
-
})),
|
|
118366
|
-
variables,
|
|
118367
|
-
disabled,
|
|
118368
|
-
readOnly,
|
|
118369
|
-
renderSource: (handleName, port) => inputUpstreamSources({
|
|
118370
|
-
revision,
|
|
118371
|
-
sourceNodeIcons,
|
|
118372
|
-
selection,
|
|
118373
|
-
store,
|
|
118374
|
-
handleName,
|
|
118375
|
-
port,
|
|
118376
|
-
t,
|
|
118377
|
-
triggerDisplays
|
|
118378
|
-
}),
|
|
118379
|
-
onEdit: (edit) => {
|
|
118380
|
-
store?.nodes.saveHttpParameters(selection.id, group, edit);
|
|
118381
|
-
}
|
|
118382
|
-
}, group)),
|
|
119813
|
+
input: requestInput,
|
|
119814
|
+
parameters: requestParameters,
|
|
118383
119815
|
onSave: (before, value) => store?.nodes.saveTaskSettings(selection.id, {
|
|
118384
119816
|
kind: "http-request",
|
|
118385
119817
|
name: task.name,
|
|
@@ -118387,6 +119819,21 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118387
119819
|
task: value
|
|
118388
119820
|
}) ?? Promise.resolve(false)
|
|
118389
119821
|
}, `http:${selection?.id}`),
|
|
119822
|
+
proxy != null && task != null && "executor" in task && /* @__PURE__ */ jsx(ConnectorProxySection, {
|
|
119823
|
+
task,
|
|
119824
|
+
disabled,
|
|
119825
|
+
readOnly,
|
|
119826
|
+
hasBody: selection?.kind === "task" && connectorProxyHasBody(revision.inputMappings(selection.node).body, task.inputs.find((port) => "handle" in port && port.handle === "body")?.value),
|
|
119827
|
+
input: requestInput,
|
|
119828
|
+
parameters: requestParameters,
|
|
119829
|
+
onClearBody: () => store?.nodes.setInputValue(selection.id, "body", void 0) ?? Promise.resolve(false),
|
|
119830
|
+
onSave: (before, value) => store?.nodes.saveTaskSettings(selection.id, {
|
|
119831
|
+
kind: "connector-proxy",
|
|
119832
|
+
name: task.name,
|
|
119833
|
+
before,
|
|
119834
|
+
task: value
|
|
119835
|
+
}) ?? Promise.resolve(false)
|
|
119836
|
+
}, `proxy:${selection?.id}`),
|
|
118390
119837
|
isOpenApi && task != null && "executor" in task && /* @__PURE__ */ jsx(OpenApiSection, {
|
|
118391
119838
|
task,
|
|
118392
119839
|
credentials: (onInvalidChange) => selection?.kind === "task" && task.inputs.filter((port) => "handle" in port && port.handle.startsWith("auth.")).map((definition) => {
|
|
@@ -118435,7 +119882,7 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118435
119882
|
task: value
|
|
118436
119883
|
}) ?? Promise.resolve(false)
|
|
118437
119884
|
}, `openapi:${selection?.id}`),
|
|
118438
|
-
!isHttpRequest && !unconfiguredOpenApi && !unconfiguredWorkflow && (selection?.kind === "outputs" || selection?.kind === "approval" || selection?.kind === "wait" || selection?.kind === "task") && (() => {
|
|
119885
|
+
!isHttpRequest && proxy == null && !unconfiguredOpenApi && !unconfiguredWorkflow && (selection?.kind === "outputs" || selection?.kind === "approval" || selection?.kind === "wait" || selection?.kind === "task") && (() => {
|
|
118439
119886
|
const definitions = selection.kind === "outputs" ? [...selection.node.outputDefs] : selection.kind === "task" ? [...selection.definition?.inputs ?? []] : [...selection.node.inputDefinitions];
|
|
118440
119887
|
const handles = new Set(definitions.flatMap((definition) => "handle" in definition ? [definition.handle] : []));
|
|
118441
119888
|
for (const handle of Object.keys(revision.inputMappings(selection.node))) if (!handles.has(handle) && !(selection.kind === "task" && selection.node.additionalInputs?.some((port) => port.handle === handle))) definitions.push({
|
|
@@ -118600,7 +120047,7 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
118600
120047
|
readOnly,
|
|
118601
120048
|
groups: true,
|
|
118602
120049
|
layout: "ports",
|
|
118603
|
-
title: t(isHttpRequest ? "httpRequest.responseOutputs" : "inspector.ports.outputsTitle"),
|
|
120050
|
+
title: t(isHttpRequest || proxy != null ? "httpRequest.responseOutputs" : "inspector.ports.outputsTitle"),
|
|
118604
120051
|
output: true,
|
|
118605
120052
|
values: presentDecisionOutputs(selection.definition, t),
|
|
118606
120053
|
disabled: disabled || !("moduleId" in selection.node.task || isAgent),
|
|
@@ -118777,13 +120224,32 @@ function WorkbenchInspectorToggle({ label, open, disabled = false, onToggle }) {
|
|
|
118777
120224
|
function RevisionCanvas({ draft, presentation, theme, interactiveMode$, defaultInteractiveMode, defaultDirection, defaultMiniMapExpanded, defaultInspectorOpen = false, defaultSelectedNodeIds, nodesDraggable = true, layoutMotion, label, background = "striped", showHeader = true }) {
|
|
118778
120225
|
const root = useRef(null);
|
|
118779
120226
|
const t = useTranslate();
|
|
118780
|
-
const language = useLang();
|
|
120227
|
+
const language = resolveUiLanguage([useLang()]);
|
|
118781
120228
|
const revision = useMemo(() => revisionView(draft), [draft]);
|
|
118782
120229
|
const graphId = "flow";
|
|
118783
120230
|
const [sessions, setSessions] = useState({});
|
|
118784
120231
|
const [inspectorOpen, setInspectorOpen] = useState(defaultInspectorOpen);
|
|
118785
120232
|
const [focus, setFocus] = useState();
|
|
118786
120233
|
const [catalog, setCatalog] = useState();
|
|
120234
|
+
const [triggerCopy, setTriggerCopy] = useState();
|
|
120235
|
+
useEffect(() => {
|
|
120236
|
+
const definitions = Object.values(revision.graph().nodes).flatMap((node) => node.kind == "integration" || node.kind == "poll" ? [node.definition] : []);
|
|
120237
|
+
if (definitions.length === 0) return;
|
|
120238
|
+
let active = true;
|
|
120239
|
+
Promise.all(definitions.map(async (definition) => [definition.key, await localizeTrigger(definition, language)])).then((entries) => {
|
|
120240
|
+
if (active) setTriggerCopy({
|
|
120241
|
+
revision,
|
|
120242
|
+
language,
|
|
120243
|
+
display: Object.fromEntries(entries)
|
|
120244
|
+
});
|
|
120245
|
+
}, (error) => {
|
|
120246
|
+
if (active) console.warn("Could not load Preview Trigger translations.", error);
|
|
120247
|
+
});
|
|
120248
|
+
return () => {
|
|
120249
|
+
active = false;
|
|
120250
|
+
};
|
|
120251
|
+
}, [revision, language]);
|
|
120252
|
+
const triggerDisplays = triggerCopy?.revision === revision && triggerCopy.language === language ? triggerCopy.display : void 0;
|
|
118787
120253
|
const needsProviders = revision.connectorProviderIds.size > 0;
|
|
118788
120254
|
useEffect(() => {
|
|
118789
120255
|
if (!needsProviders) return;
|
|
@@ -118931,7 +120397,8 @@ function RevisionCanvas({ draft, presentation, theme, interactiveMode$, defaultI
|
|
|
118931
120397
|
revision,
|
|
118932
120398
|
selection,
|
|
118933
120399
|
theme,
|
|
118934
|
-
connectorProviders: providerMetadata
|
|
120400
|
+
connectorProviders: providerMetadata,
|
|
120401
|
+
triggerDisplays
|
|
118935
120402
|
}, `${graphId}:${selection.id}`) : comment?.kind === "comment" ? /* @__PURE__ */ jsx(CommentInspector, {
|
|
118936
120403
|
title: comment.title,
|
|
118937
120404
|
content: comment.content ?? "",
|