@oomol-lab/open-flow 0.1.0-beta.80 → 0.1.0-beta.82
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/README.md +35 -0
- package/dist/browser/{FlowCanvas-CrsiDHK8.js → FlowCanvas-Dew2fmoT.js} +55 -274
- package/dist/browser/{createResourceDialog-CS3u9ga9.js → createResourceDialog-bdOJa5Zk.js} +2 -1
- package/dist/browser/{exportPng-BOPfjeEi.js → exportPng-Cjdb6COo.js} +2 -2
- package/dist/browser/{flowChanges-pFjPHU5k.js → flowChanges-URBEd4DI.js} +2719 -78
- package/dist/browser/{flowWorkspace-CRlqc403.js → flowWorkspace-BlXx-yAn.js} +445 -2699
- package/dist/browser/{markdownContent-CAG_CQfH.js → markdownContent-D8G_oNOe.js} +18 -41
- package/dist/browser/{markdownContent-frwDfQQU.js → markdownContent-IS8xXDoc.js} +18 -40
- package/dist/browser/preview.css +88 -80
- package/dist/browser/preview.js +291 -188
- package/dist/browser/ui.css +8 -0
- package/dist/browser/{dist-CHwj9BhV.js → videoLink-NAWDmBtf.js} +35 -1
- package/dist/browser/workbench-contract.d.ts +6 -0
- package/dist/browser/workbench.css +259 -251
- package/dist/browser/workbench.d.ts +2 -0
- package/dist/browser/workbench.js +311 -143
- package/dist/browser/{ContentIcon-CMn0c-kl.js → wrapLayout-DZvW9dBs.js} +4397 -4152
- package/dist/command/index.js +43 -41
- package/dist/common/authoring.d.ts +1 -1
- package/dist/common/control-api-conformance.js +306 -2
- package/dist/common/control-api.d.ts +20 -0
- package/dist/common/control-api.js +306 -4
- package/dist/common/control-requests.d.ts +3 -5
- package/dist/common/control-requests.js +24 -10
- package/dist/common/flow-authoring.js +19 -3
- package/dist/common/flow-encoding.d.ts +1 -0
- package/dist/common/flow-encoding.js +167 -1
- package/dist/common/flow-semantics.js +44 -7
- package/dist/common/flow-workflowBundle.d.ts +27 -0
- package/dist/common/flow-workflowFile.d.ts +2 -0
- package/dist/common/flow-workflowReferences.d.ts +4 -0
- package/dist/common/mcp.d.ts +2 -0
- package/dist/common/mcp.js +312 -4
- package/dist/render/browser/licenses.md +4047 -0
- package/dist/render/browser/runtime.css +14877 -0
- package/dist/render/browser/runtime.js +266765 -0
- package/dist/render/common/png.d.ts +24 -0
- package/dist/render/node/index.d.ts +11 -0
- package/dist/render/node/index.js +9491 -0
- package/dist/render/node/licenses.md +75 -0
- package/package.json +12 -2
- package/src/connector/common/actionContract.ts +26 -0
- package/src/control/common/api.ts +50 -0
- package/src/control/common/flowDecoders.ts +2 -0
- package/src/control/common/mcp.ts +4 -4
- package/src/control/common/requests.ts +12 -1
- package/src/flow/common/edgeChanges.ts +9 -6
- package/src/flow/common/encoding.ts +1 -0
- package/src/flow/common/semantics.ts +11 -8
- package/src/flow/common/workflowBundle.ts +117 -0
- package/src/flow/common/workflowFile.ts +4 -0
- package/src/flow/common/workflowReferences.ts +20 -0
package/dist/browser/preview.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as __toCommonJS, n as __esmMin, o as __toESM, r as __exportAll, t as __commonJSMin } from "./rolldown-runtime-CEgmsyvS.js";
|
|
2
|
-
import { _ as
|
|
2
|
+
import { _ as readonlyVal, a as isPlainObject$2, c as I18nProvider, d as useTranslate, f as useVal, g as derive, h as compute, i as isBoolean$1, l as useI18n, m as combine, n as pasteVideoLink, o as isString$1, p as attachSetter, r as isArray$2, s as toPlainObject, u as useLang, v as strictEqual, y as val } from "./videoLink-NAWDmBtf.js";
|
|
3
3
|
import * as m$4 from "react";
|
|
4
4
|
import reactExports, { Children, Fragment, Suspense, createContext, createElement, forwardRef, isValidElement, lazy, memo, useCallback, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore } from "react";
|
|
5
5
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -12644,7 +12644,7 @@ var CanvasStore = class {
|
|
|
12644
12644
|
this.$$.changingDirection.set(false);
|
|
12645
12645
|
}
|
|
12646
12646
|
allLayoutNodes() {
|
|
12647
|
-
return [...this.$.nodes.values()];
|
|
12647
|
+
return [...this.$.nodes.values(), ...this.$.commentNodes?.values() ?? []];
|
|
12648
12648
|
}
|
|
12649
12649
|
/** Deletes nodes programmatically, such as from a menu action. */
|
|
12650
12650
|
async deleteNodes(nodes, skipConfirm) {
|
|
@@ -12669,7 +12669,7 @@ var CanvasStore = class {
|
|
|
12669
12669
|
}
|
|
12670
12670
|
doRelayout(availableWidth) {
|
|
12671
12671
|
const selected = this.$.selectedNodes.value.length > 1 ? this.$.selectedNodes.value : [];
|
|
12672
|
-
const nodes = selected.length > 0 ? selected
|
|
12672
|
+
const nodes = selected.length > 0 ? selected : this.allLayoutNodes();
|
|
12673
12673
|
if (nodes.length === 0) return;
|
|
12674
12674
|
let positions = this.layoutPositions(nodes, availableWidth);
|
|
12675
12675
|
if (selected.length > 0) {
|
|
@@ -12691,9 +12691,10 @@ var CanvasStore = class {
|
|
|
12691
12691
|
}
|
|
12692
12692
|
layoutPositions(nodes, availableWidth) {
|
|
12693
12693
|
const g = new ie.Graph().setDefaultEdgeLabel(() => ({}));
|
|
12694
|
+
const vertical = this.$.direction.value === "vertical";
|
|
12694
12695
|
g.setGraph({
|
|
12695
|
-
rankdir:
|
|
12696
|
-
ranksep: 80
|
|
12696
|
+
rankdir: vertical ? "TB" : "LR",
|
|
12697
|
+
ranksep: vertical ? 48 : 80
|
|
12697
12698
|
});
|
|
12698
12699
|
const singles = /* @__PURE__ */ new Set();
|
|
12699
12700
|
for (const node of nodes) {
|
|
@@ -12714,6 +12715,7 @@ var CanvasStore = class {
|
|
|
12714
12715
|
const constraints = [];
|
|
12715
12716
|
const ordering = new ie.Graph();
|
|
12716
12717
|
for (const node of nodes) {
|
|
12718
|
+
if (!NodeStore.is(node)) continue;
|
|
12717
12719
|
const content = node.content$.value;
|
|
12718
12720
|
if (content.kind !== "condition" && content.kind !== "approval" && content.kind !== "wait") continue;
|
|
12719
12721
|
const targets = [...new Set(content.outputs.flatMap((port) => "handle" in port ? this.#connections.value.filter((edge) => edge.source === node.nodeId && edge.sourceHandle === `$branch:${port.handle}`).flatMap((edge) => {
|
|
@@ -43337,12 +43339,12 @@ function CommentNodeActions({ canvasStore, nodeStore }) {
|
|
|
43337
43339
|
});
|
|
43338
43340
|
}
|
|
43339
43341
|
var CommentNodeContent_module_default = {
|
|
43340
|
-
body: "
|
|
43341
|
-
container: "
|
|
43342
|
-
resizeButton: "
|
|
43343
|
-
sourceCode: "
|
|
43344
|
-
markdown: "
|
|
43345
|
-
taskCheckbox: "
|
|
43342
|
+
body: "CommentNodeContent_body_7c741",
|
|
43343
|
+
container: "CommentNodeContent_container_7c741",
|
|
43344
|
+
resizeButton: "CommentNodeContent_resizeButton_7c741",
|
|
43345
|
+
sourceCode: "CommentNodeContent_sourceCode_7c741",
|
|
43346
|
+
markdown: "CommentNodeContent_markdown_7c741",
|
|
43347
|
+
taskCheckbox: "CommentNodeContent_taskCheckbox_7c741"
|
|
43346
43348
|
};
|
|
43347
43349
|
//#endregion
|
|
43348
43350
|
//#region ../../node_modules/.bun/@base-ui+utils@0.2.8+b87d06724be9db7a/node_modules/@base-ui/utils/esm/useControlled.js
|
|
@@ -43972,13 +43974,13 @@ var Textarea = m$4.forwardRef(function Textarea({ className, ...props }, ref) {
|
|
|
43972
43974
|
});
|
|
43973
43975
|
});
|
|
43974
43976
|
var markdownPreview_module_default = {
|
|
43975
|
-
container: "
|
|
43976
|
-
body: "
|
|
43977
|
-
draggable: "
|
|
43977
|
+
container: "markdownPreview_container_2a1d9",
|
|
43978
|
+
body: "markdownPreview_body_2a1d9",
|
|
43979
|
+
draggable: "markdownPreview_draggable_2a1d9"
|
|
43978
43980
|
};
|
|
43979
43981
|
//#endregion
|
|
43980
43982
|
//#region src/canvas/browser/preview/markdownPreview.tsx
|
|
43981
|
-
var MarkdownContent$1 = lazy(() => import("./markdownContent-
|
|
43983
|
+
var MarkdownContent$1 = lazy(() => import("./markdownContent-D8G_oNOe.js"));
|
|
43982
43984
|
var MarkdownPreview = /* @__PURE__ */ memo(({ dark, unstyled, components, contentClassName, content, draggable, onDoubleClick }) => {
|
|
43983
43985
|
const [focus, setFocus] = useState(false);
|
|
43984
43986
|
return /* @__PURE__ */ jsx("div", {
|
|
@@ -43987,8 +43989,9 @@ var MarkdownPreview = /* @__PURE__ */ memo(({ dark, unstyled, components, conten
|
|
|
43987
43989
|
onFocus: () => setFocus(true),
|
|
43988
43990
|
onBlur: () => setFocus(false),
|
|
43989
43991
|
onDoubleClick,
|
|
43990
|
-
children: /* @__PURE__ */ jsx(
|
|
43992
|
+
children: /* @__PURE__ */ jsx(ScrollArea, {
|
|
43991
43993
|
className: `${markdownPreview_module_default.body} markdown-body`,
|
|
43994
|
+
autoHide: "leave",
|
|
43992
43995
|
children: /* @__PURE__ */ jsx(Suspense, {
|
|
43993
43996
|
fallback: /* @__PURE__ */ jsx("span", {
|
|
43994
43997
|
hidden: true,
|
|
@@ -44166,6 +44169,7 @@ function CommentNodeContent({ store }) {
|
|
|
44166
44169
|
setComposing(false);
|
|
44167
44170
|
},
|
|
44168
44171
|
onChange: (event) => store.$$.content.set(event.target.value),
|
|
44172
|
+
onPaste: (event) => pasteVideoLink(event, t),
|
|
44169
44173
|
onBlur: (event) => {
|
|
44170
44174
|
setFocused(false);
|
|
44171
44175
|
if (editable && !composing) store.saveContent(event.target.value);
|
|
@@ -46620,9 +46624,6 @@ function DropdownMenuSeparator({ className, ...props }) {
|
|
|
46620
46624
|
});
|
|
46621
46625
|
}
|
|
46622
46626
|
//#endregion
|
|
46623
|
-
//#region src/canvas/browser/nodeActions.tsx
|
|
46624
|
-
var NodeHistoryContext = createContext(void 0);
|
|
46625
|
-
//#endregion
|
|
46626
46627
|
//#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/context-menu/root/ContextMenuRoot.js
|
|
46627
46628
|
/**
|
|
46628
46629
|
* A component that creates a context menu activated by right clicking or long pressing.
|
|
@@ -46889,16 +46890,7 @@ function NodeHeadContextMenu({ canvasStore, children }) {
|
|
|
46889
46890
|
function useNodeMenuItems({ t, nodeStore, onDelete, editable }) {
|
|
46890
46891
|
const skip = useVal(NodeStore.to(nodeStore)?.ignore);
|
|
46891
46892
|
const { duplicateNode } = nodeStore;
|
|
46892
|
-
const history = useContext(NodeHistoryContext)?.(nodeStore.nodeId);
|
|
46893
46893
|
return coalesce([
|
|
46894
|
-
history && {
|
|
46895
|
-
...history,
|
|
46896
|
-
key: "$history",
|
|
46897
|
-
icon: /* @__PURE__ */ jsx("i", {
|
|
46898
|
-
"aria-hidden": "true",
|
|
46899
|
-
className: "i-lucide-light:database"
|
|
46900
|
-
})
|
|
46901
|
-
},
|
|
46902
46894
|
editable && duplicateNode && {
|
|
46903
46895
|
label: t("nodeActions.duplicate"),
|
|
46904
46896
|
key: "$duplicate",
|
|
@@ -62228,9 +62220,29 @@ strictObject({
|
|
|
62228
62220
|
kind: literal("open-flow-workflow"),
|
|
62229
62221
|
version: literal(1),
|
|
62230
62222
|
name: string$1().optional(),
|
|
62223
|
+
icon: string$1().optional(),
|
|
62224
|
+
description: string$1().optional(),
|
|
62231
62225
|
content: unknown(),
|
|
62232
62226
|
presentation: record$3(string$1(), json$4()).optional()
|
|
62233
62227
|
});
|
|
62228
|
+
//#endregion
|
|
62229
|
+
//#region src/flow/common/workflowBundle.ts
|
|
62230
|
+
var entries = array(strictObject({
|
|
62231
|
+
flowId: string$1().min(1),
|
|
62232
|
+
file: unknown()
|
|
62233
|
+
})).min(1);
|
|
62234
|
+
strictObject({
|
|
62235
|
+
kind: literal("open-flow-workflow-bundle"),
|
|
62236
|
+
version: literal(1),
|
|
62237
|
+
entryFlowId: string$1().min(1),
|
|
62238
|
+
workflows: entries
|
|
62239
|
+
});
|
|
62240
|
+
strictObject({
|
|
62241
|
+
version: literal(1),
|
|
62242
|
+
entryFlowId: string$1().min(1),
|
|
62243
|
+
workflows: entries,
|
|
62244
|
+
unavailableFlowIds: array(string$1().min(1))
|
|
62245
|
+
});
|
|
62234
62246
|
new TextEncoder();
|
|
62235
62247
|
//#endregion
|
|
62236
62248
|
//#region ../../node_modules/.bun/@babel+parser@8.0.4/node_modules/@babel/parser/lib/index.js
|
|
@@ -63247,11 +63259,10 @@ var RevisionView = class {
|
|
|
63247
63259
|
}
|
|
63248
63260
|
};
|
|
63249
63261
|
function revisionView(revision) {
|
|
63250
|
-
|
|
63251
|
-
if (
|
|
63252
|
-
|
|
63253
|
-
|
|
63254
|
-
}
|
|
63262
|
+
const cached = views.get(revision);
|
|
63263
|
+
if (cached) return cached;
|
|
63264
|
+
const view = new RevisionView(revision);
|
|
63265
|
+
views.set(revision, view);
|
|
63255
63266
|
return view;
|
|
63256
63267
|
}
|
|
63257
63268
|
function connectorAccessReferences(document) {
|
|
@@ -64373,7 +64384,7 @@ function nodeDiagnosticCount(node, diagnostics) {
|
|
|
64373
64384
|
return diagnostics.filter((diagnostic) => paths.some((path) => diagnostic.path.startsWith(path))).length;
|
|
64374
64385
|
}
|
|
64375
64386
|
function runProjection(revision, run, events) {
|
|
64376
|
-
if (run
|
|
64387
|
+
if (run == null || revision.revision.flowId == null || revision.revision.revisionId == null || run.flowId != revision.revision.flowId || run.revisionId != revision.revision.revisionId) return { nodes: /* @__PURE__ */ new Map() };
|
|
64377
64388
|
const active = run.status == "queued" || run.status == "starting" || run.status == "running" || run.status == "waiting";
|
|
64378
64389
|
const nodes = /* @__PURE__ */ new Map();
|
|
64379
64390
|
if ("waits" in run) for (const wait of run.waits) nodes.set(wait.nodeId, {
|
|
@@ -65468,7 +65479,7 @@ function TabsContent({ className, ...props }) {
|
|
|
65468
65479
|
}
|
|
65469
65480
|
//#endregion
|
|
65470
65481
|
//#region src/workbench/browser/runtime/editor/commentInspector.tsx
|
|
65471
|
-
var MarkdownContent = lazy(() => import("./markdownContent-
|
|
65482
|
+
var MarkdownContent = lazy(() => import("./markdownContent-D8G_oNOe.js"));
|
|
65472
65483
|
/** A comment is presentation data; editing it does not require the canvas store. */
|
|
65473
65484
|
function CommentInspector({ title, content, disabled = false, readOnly, dark, onSave }) {
|
|
65474
65485
|
const t = useTranslate();
|
|
@@ -65510,14 +65521,16 @@ function CommentInspector({ title, content, disabled = false, readOnly, dark, on
|
|
|
65510
65521
|
readOnly,
|
|
65511
65522
|
value: draftContent,
|
|
65512
65523
|
onChange: (event) => setDraftContent(event.target.value),
|
|
65524
|
+
onPaste: (event) => pasteVideoLink(event, t),
|
|
65513
65525
|
onBlur: save
|
|
65514
65526
|
})
|
|
65515
65527
|
}),
|
|
65516
65528
|
/* @__PURE__ */ jsx(TabsContent, {
|
|
65517
65529
|
value: "preview",
|
|
65518
65530
|
className: "flex min-h-0 flex-1 flex-col rounded-[var(--ui-control-radius,calc(var(--ui-radius)_+_2px))] border border-[var(--_open-flow-comment-border)] bg-[var(--_open-flow-comment-surface)] p-2",
|
|
65519
|
-
children: /* @__PURE__ */ jsx(
|
|
65520
|
-
|
|
65531
|
+
children: /* @__PURE__ */ jsx(ScrollArea, {
|
|
65532
|
+
autoHide: "leave",
|
|
65533
|
+
className: "min-h-0 flex-1 rounded-[var(--ui-control-radius,calc(var(--ui-radius)_+_2px))] border border-[color-mix(in_srgb,var(--_open-flow-comment-border)_45%,transparent)] bg-[var(--_open-flow-comment-content)] p-3",
|
|
65521
65534
|
children: /* @__PURE__ */ jsx("div", {
|
|
65522
65535
|
className: "markdown-body min-w-0",
|
|
65523
65536
|
onDoubleClick: () => setSource(true),
|
|
@@ -99680,6 +99693,135 @@ function ConditionBranchesEditor({ value: configuration, disabled, readOnly, onC
|
|
|
99680
99693
|
});
|
|
99681
99694
|
}
|
|
99682
99695
|
//#endregion
|
|
99696
|
+
//#region src/workbench/browser/runtime/editor/leinaBotSelect.tsx
|
|
99697
|
+
function LeinaBotSelect({ source, flowId, value, disabled, onChange }) {
|
|
99698
|
+
const t = useTranslate();
|
|
99699
|
+
const [attempt, setAttempt] = useState(0);
|
|
99700
|
+
const [state, setState] = useState();
|
|
99701
|
+
useEffect(() => {
|
|
99702
|
+
const controller = new AbortController();
|
|
99703
|
+
setState((previous) => ({
|
|
99704
|
+
flowId,
|
|
99705
|
+
source,
|
|
99706
|
+
loading: true,
|
|
99707
|
+
bots: previous?.flowId == flowId && previous.source == source ? previous.bots : void 0
|
|
99708
|
+
}));
|
|
99709
|
+
source.listLeinaBots(flowId, controller.signal).then((bots) => {
|
|
99710
|
+
if (!controller.signal.aborted) setState({
|
|
99711
|
+
flowId,
|
|
99712
|
+
source,
|
|
99713
|
+
bots,
|
|
99714
|
+
loading: false
|
|
99715
|
+
});
|
|
99716
|
+
}, (error) => {
|
|
99717
|
+
if (!controller.signal.aborted) setState((previous) => ({
|
|
99718
|
+
flowId,
|
|
99719
|
+
source,
|
|
99720
|
+
bots: previous?.flowId == flowId && previous.source == source ? previous.bots : void 0,
|
|
99721
|
+
loading: false,
|
|
99722
|
+
error: error instanceof Error ? error.message : t("contextPanel.loadFailed")
|
|
99723
|
+
}));
|
|
99724
|
+
});
|
|
99725
|
+
return () => controller.abort();
|
|
99726
|
+
}, [
|
|
99727
|
+
source,
|
|
99728
|
+
flowId,
|
|
99729
|
+
attempt,
|
|
99730
|
+
t
|
|
99731
|
+
]);
|
|
99732
|
+
const current = state?.flowId == flowId && state.source == source ? state : void 0;
|
|
99733
|
+
const bots = current?.bots;
|
|
99734
|
+
const selected = typeof value == "string" && value.trim().length > 0 ? value : void 0;
|
|
99735
|
+
const missing = selected != null && bots != null && !bots.some((bot) => bot.leinaId == selected);
|
|
99736
|
+
const error = selected == null ? t("leina.select") : missing ? t("leina.unavailable", { id: selected }) : void 0;
|
|
99737
|
+
const selectedLabel = bots?.find((bot) => bot.leinaId == selected)?.name ?? (missing ? t("leina.unavailable", { id: selected }) : current?.error != null ? t("leina.loadFailed") : t("leina.loading"));
|
|
99738
|
+
const items = [...(bots ?? []).map((bot) => ({
|
|
99739
|
+
value: bot.leinaId,
|
|
99740
|
+
label: bot.name
|
|
99741
|
+
})), ...selected != null && !bots?.some((bot) => bot.leinaId == selected) ? [{
|
|
99742
|
+
value: selected,
|
|
99743
|
+
label: selectedLabel
|
|
99744
|
+
}] : []];
|
|
99745
|
+
return /* @__PURE__ */ jsx(ValueEditorFeedback, {
|
|
99746
|
+
error,
|
|
99747
|
+
children: (errorId) => /* @__PURE__ */ jsxs(Select$1, {
|
|
99748
|
+
items,
|
|
99749
|
+
value: selected ?? null,
|
|
99750
|
+
disabled,
|
|
99751
|
+
onOpenChange: (open) => {
|
|
99752
|
+
if (open) setAttempt((previous) => previous + 1);
|
|
99753
|
+
},
|
|
99754
|
+
onValueChange: (next) => {
|
|
99755
|
+
if (typeof next == "string" && bots?.some((bot) => bot.leinaId == next)) onChange(next);
|
|
99756
|
+
},
|
|
99757
|
+
children: [/* @__PURE__ */ jsx(SelectTrigger, {
|
|
99758
|
+
size: "field",
|
|
99759
|
+
className: "w-full",
|
|
99760
|
+
"data-field-control": true,
|
|
99761
|
+
"aria-label": t("leina.robot"),
|
|
99762
|
+
"aria-invalid": error != null || void 0,
|
|
99763
|
+
"aria-describedby": errorId,
|
|
99764
|
+
children: /* @__PURE__ */ jsx(SelectValue, {
|
|
99765
|
+
placeholder: t("leina.select"),
|
|
99766
|
+
children: selected == null ? void 0 : selectedLabel
|
|
99767
|
+
})
|
|
99768
|
+
}), /* @__PURE__ */ jsxs(SelectContent, {
|
|
99769
|
+
align: "start",
|
|
99770
|
+
alignItemWithTrigger: false,
|
|
99771
|
+
className: selectionMenuContentClass,
|
|
99772
|
+
children: [
|
|
99773
|
+
(current?.loading ?? true) && /* @__PURE__ */ jsx("span", {
|
|
99774
|
+
role: "status",
|
|
99775
|
+
className: "block px-1.5 py-1 text-xs leading-5 text-muted-foreground",
|
|
99776
|
+
children: t("leina.loading")
|
|
99777
|
+
}),
|
|
99778
|
+
bots?.map((bot) => /* @__PURE__ */ jsx(SelectItem, {
|
|
99779
|
+
value: bot.leinaId,
|
|
99780
|
+
className: selectionMenuItemClass,
|
|
99781
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
99782
|
+
className: "truncate",
|
|
99783
|
+
children: bot.name
|
|
99784
|
+
})
|
|
99785
|
+
}, bot.leinaId)),
|
|
99786
|
+
missing && selected != null && /* @__PURE__ */ jsx(SelectItem, {
|
|
99787
|
+
value: selected,
|
|
99788
|
+
disabled: true,
|
|
99789
|
+
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 text-destructive`,
|
|
99790
|
+
children: t("leina.unavailable", { id: selected })
|
|
99791
|
+
}),
|
|
99792
|
+
current?.error != null && /* @__PURE__ */ jsxs("span", {
|
|
99793
|
+
role: "alert",
|
|
99794
|
+
className: "block px-1.5 py-1 text-xs leading-5 whitespace-normal break-words text-destructive",
|
|
99795
|
+
children: [
|
|
99796
|
+
t("leina.loadFailed"),
|
|
99797
|
+
" ",
|
|
99798
|
+
current.error
|
|
99799
|
+
]
|
|
99800
|
+
}),
|
|
99801
|
+
bots?.length == 0 && !current?.loading && /* @__PURE__ */ jsx("span", {
|
|
99802
|
+
className: "block px-1.5 py-1 text-xs leading-5 whitespace-normal text-muted-foreground",
|
|
99803
|
+
children: t("leina.empty")
|
|
99804
|
+
})
|
|
99805
|
+
]
|
|
99806
|
+
})]
|
|
99807
|
+
})
|
|
99808
|
+
});
|
|
99809
|
+
}
|
|
99810
|
+
//#endregion
|
|
99811
|
+
//#region src/workbench/browser/runtime/editor/connectorActionPresentation.tsx
|
|
99812
|
+
function connectorActionPresentation(actionId, t) {
|
|
99813
|
+
if (actionId != "leina.send_notification") return void 0;
|
|
99814
|
+
return {
|
|
99815
|
+
name: t("leina.notification"),
|
|
99816
|
+
fieldLabels: {
|
|
99817
|
+
leinaId: t("leina.robot"),
|
|
99818
|
+
message: t("leina.message"),
|
|
99819
|
+
subscription: t("leina.subscription")
|
|
99820
|
+
},
|
|
99821
|
+
renderInput: ({ handle, ...props }) => handle == "leinaId" ? /* @__PURE__ */ jsx(LeinaBotSelect, { ...props }, props.flowId) : void 0
|
|
99822
|
+
};
|
|
99823
|
+
}
|
|
99824
|
+
//#endregion
|
|
99683
99825
|
//#region src/workbench/browser/runtime/editor/connectorInputPresentation.ts
|
|
99684
99826
|
/** Groups Provider inputs for display without changing their saved definitions. */
|
|
99685
99827
|
function presentConnectorInputs(inputs, t) {
|
|
@@ -103054,7 +103196,7 @@ var resources = {
|
|
|
103054
103196
|
},
|
|
103055
103197
|
leina: {
|
|
103056
103198
|
"notification": "Leina notification",
|
|
103057
|
-
"
|
|
103199
|
+
"subscription": "Notification subscription",
|
|
103058
103200
|
"message": "Notification content",
|
|
103059
103201
|
"loading": "Loading robots…",
|
|
103060
103202
|
"robot": "Robot",
|
|
@@ -103186,7 +103328,10 @@ var resources = {
|
|
|
103186
103328
|
"discardTitle": "Discard changes?",
|
|
103187
103329
|
"discardDescription": "Your Flow settings have not been saved.",
|
|
103188
103330
|
"continueEditing": "Continue editing",
|
|
103189
|
-
"discardChanges": "Discard changes"
|
|
103331
|
+
"discardChanges": "Discard changes",
|
|
103332
|
+
"icon": "Icon",
|
|
103333
|
+
"resetIcon": "Reset icon",
|
|
103334
|
+
"description": "Description"
|
|
103190
103335
|
},
|
|
103191
103336
|
flowState: {
|
|
103192
103337
|
"title": "Persistent data",
|
|
@@ -103200,7 +103345,7 @@ var resources = {
|
|
|
103200
103345
|
"clear": "Clear",
|
|
103201
103346
|
"orphaned": "Outside the current view",
|
|
103202
103347
|
"nearLimit": "Flow history is at least 80% full. Clear unused history.",
|
|
103203
|
-
"
|
|
103348
|
+
"usage": "Usage",
|
|
103204
103349
|
"scope": "Scope",
|
|
103205
103350
|
"refresh": "Refresh",
|
|
103206
103351
|
"cancel": "Cancel",
|
|
@@ -103228,7 +103373,7 @@ var resources = {
|
|
|
103228
103373
|
"pendingClear": "{{count}} pending; finish or cancel their Runs before clearing.",
|
|
103229
103374
|
"clearBlocked": "This history has pending records. Finish or cancel their Runs, then refresh.",
|
|
103230
103375
|
"clearSource": "Clear {{name}}",
|
|
103231
|
-
"
|
|
103376
|
+
"sourceUsage": "{{name}} usage",
|
|
103232
103377
|
"confirmTitle": "Clear {{name}}?",
|
|
103233
103378
|
"confirmValues": "This will clear {{count}} saved entries in {{scope}}. Subsequent Runs will no longer be able to read these values.",
|
|
103234
103379
|
"confirmHistory": "This will clear {{count}} deduplication records in {{scope}}. These items may be processed again.",
|
|
@@ -103239,6 +103384,14 @@ var resources = {
|
|
|
103239
103384
|
"loadFailed": "Unable to load",
|
|
103240
103385
|
"valuesHelp": "{{name}}: Content explicitly saved by the workflow, available to later runs.",
|
|
103241
103386
|
"historyHelp": "{{name}}: Item identifiers used to avoid processing duplicates."
|
|
103387
|
+
},
|
|
103388
|
+
workflowTransfer: {
|
|
103389
|
+
"includeDependencies": "Include referenced workflows",
|
|
103390
|
+
"workflowCount": "Workflows ({{count}})",
|
|
103391
|
+
"unavailable": "Unavailable workflows: {{count}}.",
|
|
103392
|
+
"export": "Export",
|
|
103393
|
+
"hostUnsupported": "This host does not support workflow bundle imports yet.",
|
|
103394
|
+
"unnamed": "Untitled workflow"
|
|
103242
103395
|
}
|
|
103243
103396
|
},
|
|
103244
103397
|
"zh-CN": {
|
|
@@ -104423,7 +104576,7 @@ var resources = {
|
|
|
104423
104576
|
},
|
|
104424
104577
|
leina: {
|
|
104425
104578
|
"notification": "Leina 通知",
|
|
104426
|
-
"
|
|
104579
|
+
"subscription": "通知订阅",
|
|
104427
104580
|
"message": "通知内容",
|
|
104428
104581
|
"loading": "正在加载机器人…",
|
|
104429
104582
|
"robot": "机器人",
|
|
@@ -104555,7 +104708,10 @@ var resources = {
|
|
|
104555
104708
|
"discardTitle": "放弃修改?",
|
|
104556
104709
|
"discardDescription": "工作流设置的修改尚未保存。",
|
|
104557
104710
|
"continueEditing": "继续编辑",
|
|
104558
|
-
"discardChanges": "放弃修改"
|
|
104711
|
+
"discardChanges": "放弃修改",
|
|
104712
|
+
"icon": "图标",
|
|
104713
|
+
"resetIcon": "重置图标",
|
|
104714
|
+
"description": "描述"
|
|
104559
104715
|
},
|
|
104560
104716
|
flowState: {
|
|
104561
104717
|
"title": "持久化数据",
|
|
@@ -104569,7 +104725,7 @@ var resources = {
|
|
|
104569
104725
|
"clear": "清空",
|
|
104570
104726
|
"orphaned": "当前视图外",
|
|
104571
104727
|
"nearLimit": "该工作流的去重记录已使用至少 80%。请清理不再需要的记录。",
|
|
104572
|
-
"
|
|
104728
|
+
"usage": "用量",
|
|
104573
104729
|
"scope": "作用域",
|
|
104574
104730
|
"refresh": "刷新",
|
|
104575
104731
|
"cancel": "取消",
|
|
@@ -104597,7 +104753,7 @@ var resources = {
|
|
|
104597
104753
|
"pendingClear": "{{count}} 条待提交,相关运行结束或取消后可清理。",
|
|
104598
104754
|
"clearBlocked": "这些记录尚待提交。请等待相关运行结束或取消后再刷新。",
|
|
104599
104755
|
"clearSource": "清空{{name}}",
|
|
104600
|
-
"
|
|
104756
|
+
"sourceUsage": "{{name}}用量",
|
|
104601
104757
|
"confirmTitle": "清空「{{name}}」?",
|
|
104602
104758
|
"confirmValues": "将清空{{scope}}环境保存的 {{count}} 条数据,后续运行将无法读取这些值。",
|
|
104603
104759
|
"confirmHistory": "将清空{{scope}}环境的 {{count}} 条去重记录,这些条目之后可能再次被处理。",
|
|
@@ -104608,6 +104764,14 @@ var resources = {
|
|
|
104608
104764
|
"loadFailed": "加载失败",
|
|
104609
104765
|
"valuesHelp": "{{name}}:工作流主动保存的内容,后续运行可以继续读取。",
|
|
104610
104766
|
"historyHelp": "{{name}}:条目的识别标记,用来避免重复处理。"
|
|
104767
|
+
},
|
|
104768
|
+
workflowTransfer: {
|
|
104769
|
+
"includeDependencies": "包含引用的工作流",
|
|
104770
|
+
"workflowCount": "{{count}} 个工作流",
|
|
104771
|
+
"unavailable": "{{count}} 个引用的工作流不可用。",
|
|
104772
|
+
"export": "导出",
|
|
104773
|
+
"hostUnsupported": "当前宿主尚不支持导入工作流包。",
|
|
104774
|
+
"unnamed": "未命名工作流"
|
|
104611
104775
|
}
|
|
104612
104776
|
},
|
|
104613
104777
|
"zh-TW": {
|
|
@@ -105792,7 +105956,7 @@ var resources = {
|
|
|
105792
105956
|
},
|
|
105793
105957
|
leina: {
|
|
105794
105958
|
"notification": "Leina 通知",
|
|
105795
|
-
"
|
|
105959
|
+
"subscription": "通知訂閱",
|
|
105796
105960
|
"message": "通知內容",
|
|
105797
105961
|
"loading": "正在載入機器人…",
|
|
105798
105962
|
"robot": "機器人",
|
|
@@ -105924,7 +106088,10 @@ var resources = {
|
|
|
105924
106088
|
"discardTitle": "放棄變更?",
|
|
105925
106089
|
"discardDescription": "工作流程設定的變更尚未儲存。",
|
|
105926
106090
|
"continueEditing": "繼續編輯",
|
|
105927
|
-
"discardChanges": "放棄變更"
|
|
106091
|
+
"discardChanges": "放棄變更",
|
|
106092
|
+
"icon": "圖示",
|
|
106093
|
+
"resetIcon": "重設圖示",
|
|
106094
|
+
"description": "說明"
|
|
105928
106095
|
},
|
|
105929
106096
|
flowState: {
|
|
105930
106097
|
"title": "持久化資料",
|
|
@@ -105938,7 +106105,7 @@ var resources = {
|
|
|
105938
106105
|
"clear": "清空",
|
|
105939
106106
|
"orphaned": "目前檢視之外",
|
|
105940
106107
|
"nearLimit": "此工作流的去重記錄已使用至少 80%。請清理不再需要的記錄。",
|
|
105941
|
-
"
|
|
106108
|
+
"usage": "用量",
|
|
105942
106109
|
"scope": "範圍",
|
|
105943
106110
|
"refresh": "重新整理",
|
|
105944
106111
|
"cancel": "取消",
|
|
@@ -105966,7 +106133,7 @@ var resources = {
|
|
|
105966
106133
|
"pendingClear": "{{count}} 筆待提交,相關執行結束或取消後可清理。",
|
|
105967
106134
|
"clearBlocked": "這些記錄尚待提交。請等待相關執行結束或取消後再重新整理。",
|
|
105968
106135
|
"clearSource": "清空{{name}}",
|
|
105969
|
-
"
|
|
106136
|
+
"sourceUsage": "{{name}}用量",
|
|
105970
106137
|
"confirmTitle": "清空「{{name}}」?",
|
|
105971
106138
|
"confirmValues": "將清空{{scope}}環境儲存的 {{count}} 筆資料,後續執行將無法讀取這些值。",
|
|
105972
106139
|
"confirmHistory": "將清空{{scope}}環境的 {{count}} 筆去重記錄,這些項目之後可能再次被處理。",
|
|
@@ -105977,6 +106144,14 @@ var resources = {
|
|
|
105977
106144
|
"loadFailed": "載入失敗",
|
|
105978
106145
|
"valuesHelp": "{{name}}:工作流主動儲存的內容,後續執行可以繼續讀取。",
|
|
105979
106146
|
"historyHelp": "{{name}}:項目的識別標記,用來避免重複處理。"
|
|
106147
|
+
},
|
|
106148
|
+
workflowTransfer: {
|
|
106149
|
+
"includeDependencies": "包含參照的工作流程",
|
|
106150
|
+
"workflowCount": "{{count}} 個工作流程",
|
|
106151
|
+
"unavailable": "{{count}} 個參照的工作流程無法使用。",
|
|
106152
|
+
"export": "匯出",
|
|
106153
|
+
"hostUnsupported": "目前的宿主尚未支援匯入工作流程套件。",
|
|
106154
|
+
"unnamed": "未命名工作流程"
|
|
105980
106155
|
}
|
|
105981
106156
|
},
|
|
105982
106157
|
"ja": {
|
|
@@ -107161,7 +107336,7 @@ var resources = {
|
|
|
107161
107336
|
},
|
|
107162
107337
|
leina: {
|
|
107163
107338
|
"notification": "Leina 通知",
|
|
107164
|
-
"
|
|
107339
|
+
"subscription": "通知サブスクリプション",
|
|
107165
107340
|
"message": "通知内容",
|
|
107166
107341
|
"loading": "ロボットを読み込み中…",
|
|
107167
107342
|
"robot": "ロボット",
|
|
@@ -107293,7 +107468,10 @@ var resources = {
|
|
|
107293
107468
|
"discardTitle": "変更を破棄しますか?",
|
|
107294
107469
|
"discardDescription": "ワークフロー設定の変更は保存されていません。",
|
|
107295
107470
|
"continueEditing": "編集を続ける",
|
|
107296
|
-
"discardChanges": "変更を破棄"
|
|
107471
|
+
"discardChanges": "変更を破棄",
|
|
107472
|
+
"icon": "アイコン",
|
|
107473
|
+
"resetIcon": "アイコンをリセット",
|
|
107474
|
+
"description": "説明"
|
|
107297
107475
|
},
|
|
107298
107476
|
flowState: {
|
|
107299
107477
|
"title": "永続データ",
|
|
@@ -107307,7 +107485,7 @@ var resources = {
|
|
|
107307
107485
|
"clear": "消去",
|
|
107308
107486
|
"orphaned": "現在のビューの外",
|
|
107309
107487
|
"nearLimit": "フローの重複履歴が 80% 以上使用されています。不要な履歴を削除してください。",
|
|
107310
|
-
"
|
|
107488
|
+
"usage": "使用量",
|
|
107311
107489
|
"scope": "スコープ",
|
|
107312
107490
|
"refresh": "更新",
|
|
107313
107491
|
"cancel": "キャンセル",
|
|
@@ -107335,7 +107513,7 @@ var resources = {
|
|
|
107335
107513
|
"pendingClear": "{{count}} 件が確定待ちです。関連する実行の完了またはキャンセル後に消去できます。",
|
|
107336
107514
|
"clearBlocked": "確定待ちの記録があります。関連する実行の完了またはキャンセル後に更新してください。",
|
|
107337
107515
|
"clearSource": "{{name}}を消去",
|
|
107338
|
-
"
|
|
107516
|
+
"sourceUsage": "{{name}}の使用量",
|
|
107339
107517
|
"confirmTitle": "「{{name}}」を消去しますか?",
|
|
107340
107518
|
"confirmValues": "{{scope}}環境の保存データ {{count}} 件を消去します。以降の実行ではこれらの値を読み取れなくなります。",
|
|
107341
107519
|
"confirmHistory": "{{scope}}環境の重複排除記録 {{count}} 件を消去します。これらの項目が再処理される場合があります。",
|
|
@@ -107346,6 +107524,14 @@ var resources = {
|
|
|
107346
107524
|
"loadFailed": "読み込みに失敗しました",
|
|
107347
107525
|
"valuesHelp": "{{name}}:フローが明示的に保存し、後続の実行で読み取れる内容です。",
|
|
107348
107526
|
"historyHelp": "{{name}}:同じ項目を繰り返し処理しないための識別情報です。"
|
|
107527
|
+
},
|
|
107528
|
+
workflowTransfer: {
|
|
107529
|
+
"includeDependencies": "参照先のワークフローを含める",
|
|
107530
|
+
"workflowCount": "ワークフロー({{count}} 件)",
|
|
107531
|
+
"unavailable": "参照先のワークフロー {{count}} 件を利用できません。",
|
|
107532
|
+
"export": "エクスポート",
|
|
107533
|
+
"hostUnsupported": "このホストはワークフローバンドルのインポートにまだ対応していません。",
|
|
107534
|
+
"unnamed": "無題のワークフロー"
|
|
107349
107535
|
}
|
|
107350
107536
|
},
|
|
107351
107537
|
"ko": {
|
|
@@ -108530,7 +108716,7 @@ var resources = {
|
|
|
108530
108716
|
},
|
|
108531
108717
|
leina: {
|
|
108532
108718
|
"notification": "Leina 알림",
|
|
108533
|
-
"
|
|
108719
|
+
"subscription": "알림 구독",
|
|
108534
108720
|
"message": "알림 내용",
|
|
108535
108721
|
"loading": "로봇 불러오는 중…",
|
|
108536
108722
|
"robot": "로봇",
|
|
@@ -108662,7 +108848,10 @@ var resources = {
|
|
|
108662
108848
|
"discardTitle": "변경 사항을 버릴까요?",
|
|
108663
108849
|
"discardDescription": "워크플로 설정의 변경 사항이 저장되지 않았습니다.",
|
|
108664
108850
|
"continueEditing": "계속 편집",
|
|
108665
|
-
"discardChanges": "변경 사항 버리기"
|
|
108851
|
+
"discardChanges": "변경 사항 버리기",
|
|
108852
|
+
"icon": "아이콘",
|
|
108853
|
+
"resetIcon": "아이콘 초기화",
|
|
108854
|
+
"description": "설명"
|
|
108666
108855
|
},
|
|
108667
108856
|
flowState: {
|
|
108668
108857
|
"title": "영구 데이터",
|
|
@@ -108676,7 +108865,7 @@ var resources = {
|
|
|
108676
108865
|
"clear": "지우기",
|
|
108677
108866
|
"orphaned": "현재 보기 외부",
|
|
108678
108867
|
"nearLimit": "Flow 중복 기록이 80% 이상 찼습니다. 필요 없는 기록을 지우세요.",
|
|
108679
|
-
"
|
|
108868
|
+
"usage": "사용량",
|
|
108680
108869
|
"scope": "범위",
|
|
108681
108870
|
"refresh": "새로 고침",
|
|
108682
108871
|
"cancel": "취소",
|
|
@@ -108704,7 +108893,7 @@ var resources = {
|
|
|
108704
108893
|
"pendingClear": "{{count}}개 확정 대기 중. 관련 실행이 완료되거나 취소된 후 지울 수 있습니다.",
|
|
108705
108894
|
"clearBlocked": "확정 대기 중인 기록이 있습니다. 관련 실행을 완료하거나 취소한 후 새로 고침하세요.",
|
|
108706
108895
|
"clearSource": "{{name}} 지우기",
|
|
108707
|
-
"
|
|
108896
|
+
"sourceUsage": "{{name}} 사용량",
|
|
108708
108897
|
"confirmTitle": "{{name}}을(를) 지울까요?",
|
|
108709
108898
|
"confirmValues": "{{scope}} 환경에 저장된 데이터 {{count}}개를 지웁니다. 이후 실행에서 이 값을 읽을 수 없습니다.",
|
|
108710
108899
|
"confirmHistory": "{{scope}} 환경의 중복 제거 기록 {{count}}개를 지웁니다. 해당 항목이 다시 처리될 수 있습니다.",
|
|
@@ -108715,6 +108904,14 @@ var resources = {
|
|
|
108715
108904
|
"loadFailed": "불러오기 실패",
|
|
108716
108905
|
"valuesHelp": "{{name}}: 워크플로가 직접 저장하여 이후 실행에서 읽을 수 있는 내용입니다.",
|
|
108717
108906
|
"historyHelp": "{{name}}: 같은 항목을 반복 처리하지 않기 위한 식별 정보입니다."
|
|
108907
|
+
},
|
|
108908
|
+
workflowTransfer: {
|
|
108909
|
+
"includeDependencies": "참조된 워크플로 포함",
|
|
108910
|
+
"workflowCount": "워크플로 {{count}}개",
|
|
108911
|
+
"unavailable": "참조된 워크플로 {{count}}개를 사용할 수 없습니다.",
|
|
108912
|
+
"export": "내보내기",
|
|
108913
|
+
"hostUnsupported": "이 호스트는 아직 워크플로 번들 가져오기를 지원하지 않습니다.",
|
|
108914
|
+
"unnamed": "이름 없는 워크플로"
|
|
108718
108915
|
}
|
|
108719
108916
|
},
|
|
108720
108917
|
"ru": {
|
|
@@ -109899,7 +110096,7 @@ var resources = {
|
|
|
109899
110096
|
},
|
|
109900
110097
|
leina: {
|
|
109901
110098
|
"notification": "Уведомление Leina",
|
|
109902
|
-
"
|
|
110099
|
+
"subscription": "Подписка на уведомления",
|
|
109903
110100
|
"message": "Текст уведомления",
|
|
109904
110101
|
"loading": "Загрузка роботов…",
|
|
109905
110102
|
"robot": "Робот",
|
|
@@ -110031,7 +110228,10 @@ var resources = {
|
|
|
110031
110228
|
"discardTitle": "Отменить изменения?",
|
|
110032
110229
|
"discardDescription": "Изменения настроек процесса не сохранены.",
|
|
110033
110230
|
"continueEditing": "Продолжить редактирование",
|
|
110034
|
-
"discardChanges": "Отменить изменения"
|
|
110231
|
+
"discardChanges": "Отменить изменения",
|
|
110232
|
+
"icon": "Значок",
|
|
110233
|
+
"resetIcon": "Сбросить значок",
|
|
110234
|
+
"description": "Описание"
|
|
110035
110235
|
},
|
|
110036
110236
|
flowState: {
|
|
110037
110237
|
"title": "Постоянные данные",
|
|
@@ -110045,7 +110245,7 @@ var resources = {
|
|
|
110045
110245
|
"clear": "Очистить",
|
|
110046
110246
|
"orphaned": "Вне текущего представления",
|
|
110047
110247
|
"nearLimit": "История Flow заполнена минимум на 80 %. Удалите ненужные записи.",
|
|
110048
|
-
"
|
|
110248
|
+
"usage": "Использование",
|
|
110049
110249
|
"scope": "Область",
|
|
110050
110250
|
"refresh": "Обновить",
|
|
110051
110251
|
"cancel": "Отмена",
|
|
@@ -110073,7 +110273,7 @@ var resources = {
|
|
|
110073
110273
|
"pendingClear": "Ожидают фиксации: {{count}}. Завершите или отмените связанные запуски перед очисткой.",
|
|
110074
110274
|
"clearBlocked": "Есть записи, ожидающие фиксации. Завершите или отмените связанные запуски и обновите данные.",
|
|
110075
110275
|
"clearSource": "Очистить {{name}}",
|
|
110076
|
-
"
|
|
110276
|
+
"sourceUsage": "Использование: {{name}}",
|
|
110077
110277
|
"confirmTitle": "Очистить «{{name}}»?",
|
|
110078
110278
|
"confirmValues": "Будут удалены сохранённые записи ({{count}}) в среде «{{scope}}». Последующие запуски не смогут прочитать эти значения.",
|
|
110079
110279
|
"confirmHistory": "Будут удалены записи дедупликации ({{count}}) в среде «{{scope}}». Эти элементы могут быть обработаны повторно.",
|
|
@@ -110084,6 +110284,14 @@ var resources = {
|
|
|
110084
110284
|
"loadFailed": "Не удалось загрузить",
|
|
110085
110285
|
"valuesHelp": "{{name}}: данные, явно сохранённые процессом для чтения в следующих запусках.",
|
|
110086
110286
|
"historyHelp": "{{name}}: идентификаторы элементов, предотвращающие повторную обработку."
|
|
110287
|
+
},
|
|
110288
|
+
workflowTransfer: {
|
|
110289
|
+
"includeDependencies": "Включить связанные процессы",
|
|
110290
|
+
"workflowCount": "Процессы ({{count}})",
|
|
110291
|
+
"unavailable": "Связанные процессы недоступны: {{count}}.",
|
|
110292
|
+
"export": "Экспортировать",
|
|
110293
|
+
"hostUnsupported": "Этот хост пока не поддерживает импорт пакетов процессов.",
|
|
110294
|
+
"unnamed": "Процесс без названия"
|
|
110087
110295
|
}
|
|
110088
110296
|
},
|
|
110089
110297
|
"fr": {
|
|
@@ -111268,7 +111476,7 @@ var resources = {
|
|
|
111268
111476
|
},
|
|
111269
111477
|
leina: {
|
|
111270
111478
|
"notification": "Notification Leina",
|
|
111271
|
-
"
|
|
111479
|
+
"subscription": "Abonnement aux notifications",
|
|
111272
111480
|
"message": "Contenu de la notification",
|
|
111273
111481
|
"loading": "Chargement des robots…",
|
|
111274
111482
|
"robot": "Robot",
|
|
@@ -111400,7 +111608,10 @@ var resources = {
|
|
|
111400
111608
|
"discardTitle": "Ignorer les modifications ?",
|
|
111401
111609
|
"discardDescription": "Les modifications des paramètres du workflow n’ont pas été enregistrées.",
|
|
111402
111610
|
"continueEditing": "Continuer à modifier",
|
|
111403
|
-
"discardChanges": "Ignorer les modifications"
|
|
111611
|
+
"discardChanges": "Ignorer les modifications",
|
|
111612
|
+
"icon": "Icône",
|
|
111613
|
+
"resetIcon": "Réinitialiser l’icône",
|
|
111614
|
+
"description": "Description"
|
|
111404
111615
|
},
|
|
111405
111616
|
flowState: {
|
|
111406
111617
|
"title": "Données persistantes",
|
|
@@ -111414,7 +111625,7 @@ var resources = {
|
|
|
111414
111625
|
"clear": "Effacer",
|
|
111415
111626
|
"orphaned": "Hors de la vue actuelle",
|
|
111416
111627
|
"nearLimit": "L’historique du Flow est rempli à au moins 80 %. Effacez les entrées inutiles.",
|
|
111417
|
-
"
|
|
111628
|
+
"usage": "Utilisation",
|
|
111418
111629
|
"scope": "Portée",
|
|
111419
111630
|
"refresh": "Actualiser",
|
|
111420
111631
|
"cancel": "Annuler",
|
|
@@ -111442,7 +111653,7 @@ var resources = {
|
|
|
111442
111653
|
"pendingClear": "{{count}} en attente de validation. Terminez ou annulez les exécutions concernées avant de vider.",
|
|
111443
111654
|
"clearBlocked": "Des entrées sont en attente de validation. Terminez ou annulez les exécutions concernées, puis actualisez.",
|
|
111444
111655
|
"clearSource": "Vider {{name}}",
|
|
111445
|
-
"
|
|
111656
|
+
"sourceUsage": "Utilisation de {{name}}",
|
|
111446
111657
|
"confirmTitle": "Vider « {{name}} » ?",
|
|
111447
111658
|
"confirmValues": "Cela supprimera {{count}} entrées enregistrées en environnement {{scope}}. Les exécutions suivantes ne pourront plus lire ces valeurs.",
|
|
111448
111659
|
"confirmHistory": "Cela supprimera {{count}} entrées de déduplication en environnement {{scope}}. Ces éléments pourront être traités à nouveau.",
|
|
@@ -111453,6 +111664,14 @@ var resources = {
|
|
|
111453
111664
|
"loadFailed": "Chargement impossible",
|
|
111454
111665
|
"valuesHelp": "{{name}} : contenu enregistré explicitement par le workflow, accessible aux exécutions suivantes.",
|
|
111455
111666
|
"historyHelp": "{{name}} : identifiants des éléments utilisés pour éviter les traitements en double."
|
|
111667
|
+
},
|
|
111668
|
+
workflowTransfer: {
|
|
111669
|
+
"includeDependencies": "Inclure les workflows référencés",
|
|
111670
|
+
"workflowCount": "Workflows ({{count}})",
|
|
111671
|
+
"unavailable": "Workflows référencés indisponibles : {{count}}.",
|
|
111672
|
+
"export": "Exporter",
|
|
111673
|
+
"hostUnsupported": "Cet hôte ne prend pas encore en charge l’import de lots de workflows.",
|
|
111674
|
+
"unnamed": "Workflow sans nom"
|
|
111456
111675
|
}
|
|
111457
111676
|
}
|
|
111458
111677
|
};
|
|
@@ -113813,7 +114032,7 @@ function FlowStateButton({ client, flowId, nodes, history, notify, onClose }) {
|
|
|
113813
114032
|
children: [/* @__PURE__ */ jsx("i", {
|
|
113814
114033
|
"aria-hidden": "true",
|
|
113815
114034
|
className: "i-lucide-light:database"
|
|
113816
|
-
}), t(space == null ? "flowState.title" : "flowState.
|
|
114035
|
+
}), t(space == null ? "flowState.title" : "flowState.usage")]
|
|
113817
114036
|
}), /* @__PURE__ */ jsxs(DialogContent, {
|
|
113818
114037
|
ref: dialogRoot,
|
|
113819
114038
|
container,
|
|
@@ -113822,7 +114041,7 @@ function FlowStateButton({ client, flowId, nodes, history, notify, onClose }) {
|
|
|
113822
114041
|
children: [
|
|
113823
114042
|
/* @__PURE__ */ jsx(DialogTitle, {
|
|
113824
114043
|
className: "break-words pr-8",
|
|
113825
|
-
children: space == null ? t("flowState.title") : t("flowState.
|
|
114044
|
+
children: space == null ? t("flowState.title") : t("flowState.sourceUsage", { name: sourceName(space, nodes, t) })
|
|
113826
114045
|
}),
|
|
113827
114046
|
/* @__PURE__ */ jsxs(Tabs, {
|
|
113828
114047
|
value: scope,
|
|
@@ -114515,121 +114734,6 @@ function HttpRequestSection({ task, disabled, onSave, parameters, input }) {
|
|
|
114515
114734
|
] });
|
|
114516
114735
|
}
|
|
114517
114736
|
//#endregion
|
|
114518
|
-
//#region src/workbench/browser/runtime/editor/leinaBotSelect.tsx
|
|
114519
|
-
function LeinaBotSelect({ source, flowId, value, disabled, onChange }) {
|
|
114520
|
-
const t = useTranslate();
|
|
114521
|
-
const [attempt, setAttempt] = useState(0);
|
|
114522
|
-
const [state, setState] = useState();
|
|
114523
|
-
useEffect(() => {
|
|
114524
|
-
const controller = new AbortController();
|
|
114525
|
-
setState((previous) => ({
|
|
114526
|
-
flowId,
|
|
114527
|
-
source,
|
|
114528
|
-
loading: true,
|
|
114529
|
-
bots: previous?.flowId == flowId && previous.source == source ? previous.bots : void 0
|
|
114530
|
-
}));
|
|
114531
|
-
source.listLeinaBots(flowId, controller.signal).then((bots) => {
|
|
114532
|
-
if (!controller.signal.aborted) setState({
|
|
114533
|
-
flowId,
|
|
114534
|
-
source,
|
|
114535
|
-
bots,
|
|
114536
|
-
loading: false
|
|
114537
|
-
});
|
|
114538
|
-
}, (error) => {
|
|
114539
|
-
if (!controller.signal.aborted) setState((previous) => ({
|
|
114540
|
-
flowId,
|
|
114541
|
-
source,
|
|
114542
|
-
bots: previous?.flowId == flowId && previous.source == source ? previous.bots : void 0,
|
|
114543
|
-
loading: false,
|
|
114544
|
-
error: error instanceof Error ? error.message : t("contextPanel.loadFailed")
|
|
114545
|
-
}));
|
|
114546
|
-
});
|
|
114547
|
-
return () => controller.abort();
|
|
114548
|
-
}, [
|
|
114549
|
-
source,
|
|
114550
|
-
flowId,
|
|
114551
|
-
attempt,
|
|
114552
|
-
t
|
|
114553
|
-
]);
|
|
114554
|
-
const current = state?.flowId == flowId && state.source == source ? state : void 0;
|
|
114555
|
-
const bots = current?.bots;
|
|
114556
|
-
const selected = typeof value == "string" && value.trim().length > 0 ? value : void 0;
|
|
114557
|
-
const missing = selected != null && bots != null && !bots.some((bot) => bot.leinaId == selected);
|
|
114558
|
-
const error = selected == null ? t("leina.select") : missing ? t("leina.unavailable", { id: selected }) : void 0;
|
|
114559
|
-
const selectedLabel = bots?.find((bot) => bot.leinaId == selected)?.name ?? (missing ? t("leina.unavailable", { id: selected }) : current?.error != null ? t("leina.loadFailed") : t("leina.loading"));
|
|
114560
|
-
const items = [...(bots ?? []).map((bot) => ({
|
|
114561
|
-
value: bot.leinaId,
|
|
114562
|
-
label: bot.name
|
|
114563
|
-
})), ...selected != null && !bots?.some((bot) => bot.leinaId == selected) ? [{
|
|
114564
|
-
value: selected,
|
|
114565
|
-
label: selectedLabel
|
|
114566
|
-
}] : []];
|
|
114567
|
-
return /* @__PURE__ */ jsx(ValueEditorFeedback, {
|
|
114568
|
-
error,
|
|
114569
|
-
children: (errorId) => /* @__PURE__ */ jsxs(Select$1, {
|
|
114570
|
-
items,
|
|
114571
|
-
value: selected ?? null,
|
|
114572
|
-
disabled,
|
|
114573
|
-
onOpenChange: (open) => {
|
|
114574
|
-
if (open) setAttempt((previous) => previous + 1);
|
|
114575
|
-
},
|
|
114576
|
-
onValueChange: (next) => {
|
|
114577
|
-
if (typeof next == "string" && bots?.some((bot) => bot.leinaId == next)) onChange(next);
|
|
114578
|
-
},
|
|
114579
|
-
children: [/* @__PURE__ */ jsx(SelectTrigger, {
|
|
114580
|
-
size: "field",
|
|
114581
|
-
className: "w-full",
|
|
114582
|
-
"data-field-control": true,
|
|
114583
|
-
"aria-label": t("leina.robot"),
|
|
114584
|
-
"aria-invalid": error != null || void 0,
|
|
114585
|
-
"aria-describedby": errorId,
|
|
114586
|
-
children: /* @__PURE__ */ jsx(SelectValue, {
|
|
114587
|
-
placeholder: t("leina.select"),
|
|
114588
|
-
children: selected == null ? void 0 : selectedLabel
|
|
114589
|
-
})
|
|
114590
|
-
}), /* @__PURE__ */ jsxs(SelectContent, {
|
|
114591
|
-
align: "start",
|
|
114592
|
-
alignItemWithTrigger: false,
|
|
114593
|
-
className: selectionMenuContentClass,
|
|
114594
|
-
children: [
|
|
114595
|
-
(current?.loading ?? true) && /* @__PURE__ */ jsx("span", {
|
|
114596
|
-
role: "status",
|
|
114597
|
-
className: "block px-1.5 py-1 text-xs leading-5 text-muted-foreground",
|
|
114598
|
-
children: t("leina.loading")
|
|
114599
|
-
}),
|
|
114600
|
-
bots?.map((bot) => /* @__PURE__ */ jsx(SelectItem, {
|
|
114601
|
-
value: bot.leinaId,
|
|
114602
|
-
className: selectionMenuItemClass,
|
|
114603
|
-
children: /* @__PURE__ */ jsx("span", {
|
|
114604
|
-
className: "truncate",
|
|
114605
|
-
children: bot.name
|
|
114606
|
-
})
|
|
114607
|
-
}, bot.leinaId)),
|
|
114608
|
-
missing && selected != null && /* @__PURE__ */ jsx(SelectItem, {
|
|
114609
|
-
value: selected,
|
|
114610
|
-
disabled: true,
|
|
114611
|
-
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 text-destructive`,
|
|
114612
|
-
children: t("leina.unavailable", { id: selected })
|
|
114613
|
-
}),
|
|
114614
|
-
current?.error != null && /* @__PURE__ */ jsxs("span", {
|
|
114615
|
-
role: "alert",
|
|
114616
|
-
className: "block px-1.5 py-1 text-xs leading-5 whitespace-normal break-words text-destructive",
|
|
114617
|
-
children: [
|
|
114618
|
-
t("leina.loadFailed"),
|
|
114619
|
-
" ",
|
|
114620
|
-
current.error
|
|
114621
|
-
]
|
|
114622
|
-
}),
|
|
114623
|
-
bots?.length == 0 && !current?.loading && /* @__PURE__ */ jsx("span", {
|
|
114624
|
-
className: "block px-1.5 py-1 text-xs leading-5 whitespace-normal text-muted-foreground",
|
|
114625
|
-
children: t("leina.empty")
|
|
114626
|
-
})
|
|
114627
|
-
]
|
|
114628
|
-
})]
|
|
114629
|
-
})
|
|
114630
|
-
});
|
|
114631
|
-
}
|
|
114632
|
-
//#endregion
|
|
114633
114737
|
//#region src/workbench/browser/runtime/editor/useTriggerConfigOptions.ts
|
|
114634
114738
|
function useTriggerConfigOptions(store, nodeId, field, scope, enabled) {
|
|
114635
114739
|
const [attempt, setAttempt] = useState(0);
|
|
@@ -117305,6 +117409,7 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
117305
117409
|
const unconfiguredOpenApi = task != null && "executor" in task && task.executor.kind == "openapi" && !task.executor.path;
|
|
117306
117410
|
const isLlm = task != null && "executor" in task && task.executor.kind == "llm";
|
|
117307
117411
|
const connector = task != null && "executor" in task && task.executor.kind == "connector" ? task.executor : void 0;
|
|
117412
|
+
const connectorPresentation = connector == null ? void 0 : connectorActionPresentation(connector.action, t);
|
|
117308
117413
|
const nodeId = selection?.kind == "task" ? selection.id : void 0;
|
|
117309
117414
|
const workflowSettings = task != null && "executor" in task && task.executor.kind == "workflow" && selection != null ? {
|
|
117310
117415
|
task,
|
|
@@ -117719,7 +117824,8 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
117719
117824
|
return {
|
|
117720
117825
|
definition,
|
|
117721
117826
|
sourceOnly: isHttpRequest && definition.handle.startsWith("auth."),
|
|
117722
|
-
editor: !readOnly && connectors != null &&
|
|
117827
|
+
editor: !readOnly && connectors != null && mapping?.kind != "sources" ? connectorPresentation?.renderInput({
|
|
117828
|
+
handle: definition.handle,
|
|
117723
117829
|
source: connectors,
|
|
117724
117830
|
flowId: revision.revision.flowId,
|
|
117725
117831
|
value: inputValue(mapping, definition.value),
|
|
@@ -117727,7 +117833,7 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
117727
117833
|
onChange: (value) => {
|
|
117728
117834
|
store?.nodes.setInputValue(selection.id, definition.handle, value);
|
|
117729
117835
|
}
|
|
117730
|
-
}
|
|
117836
|
+
}) : void 0,
|
|
117731
117837
|
value: inputValue(mapping, definition.value),
|
|
117732
117838
|
onReset: definition.value !== void 0 && mapping != null ? () => void store?.nodes.resetInputs(selection.id, [definition.handle]) : void 0,
|
|
117733
117839
|
connected: mapping?.kind === "sources" && binding?.kind !== "variable",
|
|
@@ -117740,10 +117846,7 @@ function NodeInspector({ onAddWorkflowOutputs, onAddResponseNode, webhookDeploym
|
|
|
117740
117846
|
title: t(selection.kind === "outputs" ? "inspector.ports.outputsTitle" : "inspector.ports.inputsTitle"),
|
|
117741
117847
|
titleIcon: selection.kind === "outputs" ? "output" : "input",
|
|
117742
117848
|
entries,
|
|
117743
|
-
fieldLabels:
|
|
117744
|
-
leinaId: t("leina.robot"),
|
|
117745
|
-
message: t("leina.message")
|
|
117746
|
-
} : void 0,
|
|
117849
|
+
fieldLabels: connectorPresentation?.fieldLabels,
|
|
117747
117850
|
onReset: () => {
|
|
117748
117851
|
return store?.nodes.resetInputs(selection.id, entries.flatMap((entry) => "group" in entry ? [] : [entry.definition.handle]));
|
|
117749
117852
|
},
|