@oomol-lab/open-flow 0.1.0-beta.77 → 0.1.0-beta.79
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 +2 -0
- package/dist/browser/{ContentIcon-VZQO8VZU.js → ContentIcon-CMn0c-kl.js} +93 -3
- package/dist/browser/{FlowCanvas-BNGDMaWr.js → FlowCanvas-BQGBcfoL.js} +1675 -591
- package/dist/browser/{createResourceDialog-BmtakfVg.js → createResourceDialog-DkovGogv.js} +3 -3
- package/dist/browser/{dialog-BcFBfRB1.js → dialog-CFFuRM8s.js} +37 -86
- package/dist/browser/{exportSvg-CG8hEUNk.js → exportSvg-CYwyYiuH.js} +2 -2
- package/dist/browser/{flowChanges-BGo_4Ypo.js → flowChanges-CN2R-m1M.js} +1258 -422
- package/dist/browser/{flowWorkspace-BFHGev7s.js → flowWorkspace-CXVL1FNv.js} +634 -628
- package/dist/browser/licenses.md +1 -1
- package/dist/browser/preview.css +512 -462
- package/dist/browser/preview.js +8183 -6384
- package/dist/browser/{tooltip-BAWSUexx.js → tooltip-BDcVTNpu.js} +65 -2
- package/dist/browser/{typeScriptSession-CRoezJPN.js → typeScriptSession-CoEIptNC.js} +1 -1
- package/dist/browser/ui.css +5 -24
- package/dist/browser/workbench.css +512 -462
- package/dist/browser/workbench.d.ts +2 -3
- package/dist/browser/workbench.js +65 -690
- package/dist/browser/{workbenchSelect-CjK-xdm3.js → workbenchSelect-CkOS95gX.js} +2 -2
- package/dist/command/index.js +31 -31
- package/dist/common/authoring.d.ts +3 -3
- package/dist/common/authoringExamples.d.ts +3 -3
- package/dist/common/authoringSchema.d.ts +14 -22
- package/dist/common/control-api-conformance.js +91 -25
- package/dist/common/control-api.d.ts +8 -3
- package/dist/common/control-api.js +51 -25
- package/dist/common/control-requests.d.ts +9 -3
- package/dist/common/control-requests.js +54 -42
- package/dist/common/flow-authoring.js +32 -19
- package/dist/common/flow-change.d.ts +1 -1
- package/dist/common/flow-change.js +32 -19
- package/dist/common/flow-encoding.js +31 -18
- package/dist/common/flow-semantics.js +41 -26
- package/dist/common/flow-state.d.ts +49 -43
- package/dist/common/flow-state.js +95 -110
- package/dist/common/mcp.d.ts +35 -4
- package/dist/common/mcp.js +51 -26
- package/dist/common/run-events.js +19 -9
- package/dist/common/runtime-contract.d.ts +4 -1
- package/dist/common/runtime-contract.js +66 -17
- package/dist/common/runtime-nodejs-compat.js +11 -12
- package/dist/common/scheduler.d.ts +2 -1
- package/dist/common/scheduler.js +82 -55
- package/dist/common/state-conformance.d.ts +3 -3
- package/dist/index.d.ts +1 -0
- package/package.json +1 -1
- package/src/control/common/api.ts +36 -7
- package/src/control/common/authoring.ts +6 -5
- package/src/control/common/authoringExamples.ts +6 -5
- package/src/control/common/authoringSchema.ts +7 -7
- package/src/control/common/conformance.ts +31 -0
- package/src/control/common/mcp.ts +7 -2
- package/src/control/common/requests.ts +10 -1
- package/src/execution/common/events.ts +22 -10
- package/src/execution/common/node-execution.ts +1 -1
- package/src/execution/common/scheduler.ts +28 -14
- package/src/flow/common/change.ts +1 -1
- package/src/flow/common/changeSchema.ts +4 -4
- package/src/flow/common/errorHandling.ts +1 -1
- package/src/flow/common/semantics.ts +12 -6
- package/src/runtime/common/nodejsGuest.generated.json +11 -12
- package/src/runtime/common/runtime.ts +45 -12
- package/src/state/common/conformance.ts +32 -21
- package/src/state/common/state.ts +85 -80
- package/src/types/index.ts +1 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { o as __toESM, t as __commonJSMin } from "./rolldown-runtime-CEgmsyvS.js";
|
|
2
|
-
import { $ as
|
|
2
|
+
import { $ as zh_CN_default$2, A as DropdownMenuSeparator, E as DropdownMenuItem, P as DropdownMenuTrigger, Q as zh_TW_default$2, S as DropdownMenu, Y as uiLocales, Z as waitBranchLocales, _ as PopoverTrigger, a as spriteIcon, at as I18n, d as Popover, et as ru_default$2, f as PopoverContent, g as PopoverTitle, i as placeholderIcon, it as en_default$2, l as wrapLayout, nt as ja_default$2, ot as providerIconAppearance, r as imageIcon, rt as fr_default$2, st as Checkbox, tt as ko_default$2, u as canvasDirection, w as DropdownMenuContent } from "./ContentIcon-CMn0c-kl.js";
|
|
3
3
|
import { a as derive, i as compute, l as val, t as arrayShallowEqual } from "./dist-bO8nvHFH.js";
|
|
4
4
|
import { a as toPlainObject, l as useTranslate, o as I18nProvider, u as useVal } from "./dist-BFmpkX4P.js";
|
|
5
|
-
import { $n as
|
|
6
|
-
import { $t as
|
|
5
|
+
import { $n as inputClear, A as string$1, Bn as transitionStatusMapping, Br as useRefWithInit, C as literal, Cr as cn, Dn as getTarget, Dr as EMPTY_ARRAY, E as object$2, En as contains, Er as useRenderElement, Et as useFloatingRootContext, F as IndexGuessBehavior, Fr as formatErrorMessage, Ft as useDismiss, Gn as createGenericEventDetails, I as useCompositeListItem, In as useTransitionStatus, Ir as mergeProps, It as useClick, Jn as closePress, Kt as DROPDOWN_COLLISION_AVOIDANCE, Ln as useOpenChangeComplete, Lr as useIsoLayoutEffect, Lt as FloatingFocusManager, M as unknown, Mn as ownerDocument, Mr as useButton, Nn as useLabelableId, O as record$3, On as isAndroid, Or as EMPTY_OBJECT, Qn as inputChange, Qt as useStore, S as lazy$1, Sn as stopEvent, Sr as buttonVariants, T as number, Un as useValueChanged, Ur as isElement, Wn as createChangeEventDetails, Wt as FloatingPortal, Yn as escapeKey, Zt as Store, _ as array, _r as fieldValidityMapping, an as useOnFirstRender, at as useAnchorPositioning, b as int, br as useControlled, bt as useListNavigation, ct as CompositeList, dr as useFormContext, er as inputPress, et as useAnchoredPopupScrollLock, fr as useRegisterFieldControl, ft as popupStateMapping, g as _enum, gr as DEFAULT_FIELD_STATE_ATTRIBUTES, ht as useOpenInteractionType, i as TooltipTrigger, in as useValueAsRef, it as InternalBackdrop, j as union, jr as useMergedRefs, k as strictObject, kn as isFirefox, kr as NOOP, lt as inertValue, mr as useBaseUiId, n as TooltipContent, nr as listNavigation, nt as usePositioner, p as timeZoneOffsetMinutes, pr as useFieldRootContext, pt as pressableTriggerOpenStateMapping, rn as createSelector, rr as none, rt as getDisabledMountTransitionStyles, sn as useTimeout, st as useDirection, t as Tooltip, tr as itemPress, ur as useLabelableContext, ut as getPseudoElementBounds, v as boolean, vr as visuallyHidden, vt as useTypeahead, wn as isInteractiveElement, wr as cva, x as json$3, xr as Button, xt as useInteractions, y as discriminatedUnion, yr as visuallyHiddenInput, zr as useStableCallback } from "./tooltip-BDcVTNpu.js";
|
|
6
|
+
import { $t as findItemIndex, B as authoringDefinitionSchemas, Bt as SelectContent, D as nodeSystemOutputPorts, Dt as matchesSchema, Et as comparePorts, Ft as skipDuplicatesConfigSchema, G as workflowAgentToolSchema, Gt as SelectValue, H as connectorCapabilitySchema, Ht as SelectItem, I as otherwiseOutput, It as skipDuplicatesTask, J as webhookResponseAllowsBody, Jt as isGroupedItems, K as webhookHeaderValuePort, Kt as resolveAriaLabelledBy, Lt as dequal$1, Mt as format, N as nodeInputMappings, Nt as flowStateValuesSchema, Ot as portsAssignable, Pt as flowStateViewSchema, Q as workflowOutputsPort, Qt as defaultItemEquality, Rt as Select, S as resourceNameIssue, Tt as webhookSupportsBody, U as decodeRevisionContent, V as connectorAgentToolSchema, Vt as SelectGroup, W as httpCapabilitySchema, Wt as SelectTrigger, Xt as stringifyAsValue, Y as webhookResponseInputs, Yt as stringifyAsLabel, Z as webhookStatusCodePort, Zt as compareItemEquality, _ as applyFlowChanges$1, a as DialogFooter, ct as httpRequestInputs, d as Field, dt as withHttpParameterFields, en as removeItem, ft as withHttpParameterSource, gt as renamedPort, h as FieldLabel, ht as renameOutputMapping, i as DialogDescription, it as checkJsonDepth, j as conditionInputPorts, jt as isSchemaKeyword, k as clearConditionBindings, kt as schemaObject, mt as remapInputMappings, n as DialogClose, nn as Label, nt as retryConfigurationSchema, o as DialogHeader, p as FieldError, pt as httpHeaderNameIssue, q as webhookHeadersPort, qt as hasNullItemLabel, r as DialogContent, rn as Input, s as DialogTitle, st as httpRequestConfigSchema, t as Dialog, tn as selectedValueIncludes, ut as httpRequestTask, v as isTriggerNode, x as normalizeNodeName, xt as decisionTask, y as nextNodeName, z as agentToolFields } from "./dialog-CFFuRM8s.js";
|
|
7
7
|
import { a as uiLanguages, n as isUiLanguage, r as resolveUiLanguage } from "./languages-gYzoQqCi.js";
|
|
8
8
|
import "./lib-Dws05GHj.js";
|
|
9
9
|
import { i as objectValue, s as valueType, t as initialValue } from "./value-BbFQZZ_V.js";
|
|
@@ -209,7 +209,7 @@ var InvalidResponseError = class extends ApiError {
|
|
|
209
209
|
function invalidResponse(detail) {
|
|
210
210
|
throw new InvalidResponseError(detail);
|
|
211
211
|
}
|
|
212
|
-
function record$
|
|
212
|
+
function record$2(value) {
|
|
213
213
|
if (value == null || typeof value != "object" || Array.isArray(value)) return invalidResponse("Expected an object.");
|
|
214
214
|
return value;
|
|
215
215
|
}
|
|
@@ -235,7 +235,7 @@ function jsonValue(value) {
|
|
|
235
235
|
if (value === null || typeof value == "boolean" || typeof value == "string") return value;
|
|
236
236
|
if (typeof value == "number" && Number.isFinite(value)) return value;
|
|
237
237
|
if (Array.isArray(value)) return value.map(jsonValue);
|
|
238
|
-
const source = record$
|
|
238
|
+
const source = record$2(value);
|
|
239
239
|
return Object.fromEntries(Object.entries(source).map(([key, item]) => [key, jsonValue(item)]));
|
|
240
240
|
}
|
|
241
241
|
function optionalString(value) {
|
|
@@ -347,7 +347,7 @@ function nodeWorkflowReferences(node) {
|
|
|
347
347
|
}
|
|
348
348
|
//#endregion
|
|
349
349
|
//#region src/workflow/common/workflow.ts
|
|
350
|
-
var portSchema = object$
|
|
350
|
+
var portSchema = object$2({
|
|
351
351
|
handle: string$1().min(1),
|
|
352
352
|
jsonSchema: json$3(),
|
|
353
353
|
nullable: boolean(),
|
|
@@ -367,7 +367,7 @@ function comparablePorts(value) {
|
|
|
367
367
|
function sameWorkflowInterface(left, right) {
|
|
368
368
|
return dequal$1(comparablePorts(left.inputs), comparablePorts(right.inputs)) && dequal$1(comparablePorts(left.outputs), comparablePorts(right.outputs));
|
|
369
369
|
}
|
|
370
|
-
var workflowContractSchema = object$
|
|
370
|
+
var workflowContractSchema = object$2({
|
|
371
371
|
version: literal(1),
|
|
372
372
|
flowId: string$1().min(1),
|
|
373
373
|
name: string$1(),
|
|
@@ -423,17 +423,17 @@ function withWorkflowTask(node, task) {
|
|
|
423
423
|
inputs: Object.fromEntries(Object.entries(node.inputs).filter(([handle]) => task.inputs.some((port) => "handle" in port && port.handle == handle)))
|
|
424
424
|
};
|
|
425
425
|
}
|
|
426
|
-
var workflowReferencesSchema = object$
|
|
426
|
+
var workflowReferencesSchema = object$2({
|
|
427
427
|
version: literal(1),
|
|
428
428
|
direction: _enum(["incoming", "outgoing"]),
|
|
429
429
|
total: int().nonnegative(),
|
|
430
430
|
nextOffset: int().nonnegative().optional(),
|
|
431
|
-
references: array(object$
|
|
431
|
+
references: array(object$2({
|
|
432
432
|
flowId: string$1(),
|
|
433
433
|
name: string$1().nullable(),
|
|
434
434
|
available: boolean(),
|
|
435
435
|
draft: boolean(),
|
|
436
|
-
live: object$
|
|
436
|
+
live: object$2({
|
|
437
437
|
publicationId: string$1(),
|
|
438
438
|
enabled: boolean()
|
|
439
439
|
}).nullable()
|
|
@@ -480,7 +480,7 @@ var methods = [
|
|
|
480
480
|
"patch",
|
|
481
481
|
"trace"
|
|
482
482
|
];
|
|
483
|
-
function object(value) {
|
|
483
|
+
function object$1(value) {
|
|
484
484
|
if (value == null || typeof value != "object" || Array.isArray(value)) throw new Error("Expected an OpenAPI object.");
|
|
485
485
|
return value;
|
|
486
486
|
}
|
|
@@ -490,30 +490,30 @@ function httpUrl(value, base) {
|
|
|
490
490
|
return url.href;
|
|
491
491
|
}
|
|
492
492
|
function parseOpenApi(value) {
|
|
493
|
-
const doc = object(value);
|
|
493
|
+
const doc = object$1(value);
|
|
494
494
|
if (typeof doc.openapi != "string" || !/^3\.[01]\.\d+$/.test(doc.openapi)) throw new Error("Only OpenAPI 3.0 and 3.1 JSON documents are supported.");
|
|
495
|
-
object(doc.paths);
|
|
495
|
+
object$1(doc.paths);
|
|
496
496
|
return doc;
|
|
497
497
|
}
|
|
498
498
|
function pointer(doc, ref) {
|
|
499
499
|
if (!ref.startsWith("#/")) throw new Error("External OpenAPI references are not supported.");
|
|
500
500
|
let value = doc;
|
|
501
501
|
for (const key of decodeURIComponent(ref.slice(2)).split("/").map((part) => part.replace(/~1/g, "/").replace(/~0/g, "~"))) {
|
|
502
|
-
const source = object(value);
|
|
502
|
+
const source = object$1(value);
|
|
503
503
|
if (!Object.hasOwn(source, key)) throw new Error("An OpenAPI reference is missing.");
|
|
504
504
|
value = source[key];
|
|
505
505
|
}
|
|
506
506
|
return value;
|
|
507
507
|
}
|
|
508
508
|
function resolved(doc, value) {
|
|
509
|
-
let result = object(value);
|
|
509
|
+
let result = object$1(value);
|
|
510
510
|
const seen = /* @__PURE__ */ new Set();
|
|
511
511
|
while (typeof result.$ref == "string") {
|
|
512
512
|
if (seen.has(result.$ref)) throw new Error("Circular non-schema reference is unsupported.");
|
|
513
513
|
seen.add(result.$ref);
|
|
514
514
|
const { $ref, ...siblings } = result;
|
|
515
515
|
result = {
|
|
516
|
-
...object(pointer(doc, $ref)),
|
|
516
|
+
...object$1(pointer(doc, $ref)),
|
|
517
517
|
...siblings
|
|
518
518
|
};
|
|
519
519
|
}
|
|
@@ -521,10 +521,10 @@ function resolved(doc, value) {
|
|
|
521
521
|
}
|
|
522
522
|
function listOperations(documentValue) {
|
|
523
523
|
const doc = parseOpenApi(documentValue);
|
|
524
|
-
return Object.entries(object(doc.paths)).flatMap(([path, value]) => {
|
|
524
|
+
return Object.entries(object$1(doc.paths)).flatMap(([path, value]) => {
|
|
525
525
|
const item = resolved(doc, value);
|
|
526
526
|
return methods.filter((method) => item[method] != null).map((method) => {
|
|
527
|
-
const op = object(item[method]);
|
|
527
|
+
const op = object$1(item[method]);
|
|
528
528
|
return {
|
|
529
529
|
method,
|
|
530
530
|
path,
|
|
@@ -535,11 +535,11 @@ function listOperations(documentValue) {
|
|
|
535
535
|
});
|
|
536
536
|
}
|
|
537
537
|
function operation(doc, path, method) {
|
|
538
|
-
const item = resolved(doc, object(doc.paths)[path]);
|
|
538
|
+
const item = resolved(doc, object$1(doc.paths)[path]);
|
|
539
539
|
if (!methods.includes(method) || item[method] == null) throw new Error("The selected operation is no longer available.");
|
|
540
540
|
return {
|
|
541
541
|
item,
|
|
542
|
-
op: object(item[method])
|
|
542
|
+
op: object$1(item[method])
|
|
543
543
|
};
|
|
544
544
|
}
|
|
545
545
|
function servers(value, path, method) {
|
|
@@ -547,11 +547,11 @@ function servers(value, path, method) {
|
|
|
547
547
|
const { item, op } = operation(doc, path, method);
|
|
548
548
|
const entries = op.servers ?? item.servers ?? doc.servers;
|
|
549
549
|
if (!Array.isArray(entries) || entries.length == 0) return [{ url: "/" }];
|
|
550
|
-
return entries.map(object);
|
|
550
|
+
return entries.map(object$1);
|
|
551
551
|
}
|
|
552
552
|
function serverAddress(server, sourceUrl, variables = {}) {
|
|
553
553
|
return httpUrl(String(server.url).replace(/\{([^}]+)\}/g, (_, name) => {
|
|
554
|
-
const definition = object(object(server.variables)[name]);
|
|
554
|
+
const definition = object$1(object$1(server.variables)[name]);
|
|
555
555
|
const value = variables[name] ?? definition.default;
|
|
556
556
|
if (typeof value != "string" || Array.isArray(definition.enum) && !definition.enum.includes(value)) throw new Error("A server variable is invalid.");
|
|
557
557
|
return value;
|
|
@@ -567,14 +567,14 @@ function securityOptions(value, path, method) {
|
|
|
567
567
|
auth: []
|
|
568
568
|
}];
|
|
569
569
|
return requirements.map((entry) => {
|
|
570
|
-
const names = Object.keys(object(entry));
|
|
570
|
+
const names = Object.keys(object$1(entry));
|
|
571
571
|
const label = names.join(" + ") || "None";
|
|
572
572
|
try {
|
|
573
573
|
if (!names.length) return {
|
|
574
574
|
label,
|
|
575
575
|
auth: []
|
|
576
576
|
};
|
|
577
|
-
const schemes = object(object(doc.components).securitySchemes);
|
|
577
|
+
const schemes = object$1(object$1(doc.components).securitySchemes);
|
|
578
578
|
return {
|
|
579
579
|
label,
|
|
580
580
|
auth: names.map((id) => {
|
|
@@ -627,7 +627,7 @@ function snapshot$7(documentValue, path, method) {
|
|
|
627
627
|
let target = result;
|
|
628
628
|
for (const key of keys.slice(0, -1)) {
|
|
629
629
|
if (!Object.hasOwn(target, key)) target[key] = {};
|
|
630
|
-
target = object(target[key]);
|
|
630
|
+
target = object$1(target[key]);
|
|
631
631
|
}
|
|
632
632
|
target[keys.at(-1)] = structuredClone(value);
|
|
633
633
|
visit(value);
|
|
@@ -638,7 +638,7 @@ function snapshot$7(documentValue, path, method) {
|
|
|
638
638
|
value.forEach(visit);
|
|
639
639
|
return;
|
|
640
640
|
}
|
|
641
|
-
if (typeof object(value).$ref == "string") copy(object(value).$ref);
|
|
641
|
+
if (typeof object$1(value).$ref == "string") copy(object$1(value).$ref);
|
|
642
642
|
for (const [key, child] of Object.entries(value)) if (![
|
|
643
643
|
"example",
|
|
644
644
|
"examples",
|
|
@@ -646,7 +646,7 @@ function snapshot$7(documentValue, path, method) {
|
|
|
646
646
|
].includes(key)) visit(child);
|
|
647
647
|
}
|
|
648
648
|
visit(result);
|
|
649
|
-
for (const entry of security) for (const name of Object.keys(object(entry))) copy(`#/components/securitySchemes/${name.replace(/~/g, "~0").replace(/\//g, "~1")}`);
|
|
649
|
+
for (const entry of security) for (const name of Object.keys(object$1(entry))) copy(`#/components/securitySchemes/${name.replace(/~/g, "~0").replace(/\//g, "~1")}`);
|
|
650
650
|
return structuredClone(result);
|
|
651
651
|
}
|
|
652
652
|
function schema$1(doc, schemaValue) {
|
|
@@ -654,7 +654,7 @@ function schema$1(doc, schemaValue) {
|
|
|
654
654
|
const ids = /* @__PURE__ */ new Map();
|
|
655
655
|
function convert(value) {
|
|
656
656
|
if (typeof value == "boolean") return value;
|
|
657
|
-
const source = object(value);
|
|
657
|
+
const source = object$1(value);
|
|
658
658
|
if (source.format == "binary" || source.$dynamicRef != null || source.$id != null) throw new Error("Binary and dynamically scoped schemas are unsupported.");
|
|
659
659
|
const result = {};
|
|
660
660
|
for (const [key, child] of Object.entries(source)) {
|
|
@@ -680,7 +680,7 @@ function schema$1(doc, schemaValue) {
|
|
|
680
680
|
"$defs",
|
|
681
681
|
"definitions",
|
|
682
682
|
"dependentSchemas"
|
|
683
|
-
].includes(key)) result[key] = Object.fromEntries(Object.entries(object(child)).map(([name, childSchema]) => [name, convert(childSchema)]));
|
|
683
|
+
].includes(key)) result[key] = Object.fromEntries(Object.entries(object$1(child)).map(([name, childSchema]) => [name, convert(childSchema)]));
|
|
684
684
|
else if ([
|
|
685
685
|
"allOf",
|
|
686
686
|
"anyOf",
|
|
@@ -715,18 +715,18 @@ function schema$1(doc, schemaValue) {
|
|
|
715
715
|
return result;
|
|
716
716
|
}
|
|
717
717
|
let converted = convert(schemaValue);
|
|
718
|
-
if (typeof converted == "object" && converted != null && typeof object(converted).$ref == "string") {
|
|
719
|
-
const id = String(object(converted).$ref).slice(8);
|
|
720
|
-
const { $ref: _ref, ...siblings } = object(converted);
|
|
718
|
+
if (typeof converted == "object" && converted != null && typeof object$1(converted).$ref == "string") {
|
|
719
|
+
const id = String(object$1(converted).$ref).slice(8);
|
|
720
|
+
const { $ref: _ref, ...siblings } = object$1(converted);
|
|
721
721
|
converted = {
|
|
722
|
-
...object(defs[id]),
|
|
722
|
+
...object$1(defs[id]),
|
|
723
723
|
...siblings
|
|
724
724
|
};
|
|
725
725
|
}
|
|
726
726
|
if (typeof converted == "boolean") return converted;
|
|
727
727
|
return {
|
|
728
728
|
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
729
|
-
...object(converted),
|
|
729
|
+
...object$1(converted),
|
|
730
730
|
...Object.keys(defs).length ? { $defs: defs } : {}
|
|
731
731
|
};
|
|
732
732
|
}
|
|
@@ -752,12 +752,12 @@ function parameters(config) {
|
|
|
752
752
|
}
|
|
753
753
|
function jsonContent(doc, value) {
|
|
754
754
|
const content = resolved(doc, value);
|
|
755
|
-
const media = object(content.content);
|
|
755
|
+
const media = object$1(content.content);
|
|
756
756
|
const mediaType = media["application/json"] != null ? "application/json" : Object.keys(media).find((key) => /^application\/.+\+json$/.test(key));
|
|
757
757
|
const json = mediaType == null ? void 0 : media[mediaType];
|
|
758
758
|
if (json == null) throw new Error("Only JSON request and response bodies are supported.");
|
|
759
759
|
return {
|
|
760
|
-
schema: schema$1(doc, object(json).schema ?? {}),
|
|
760
|
+
schema: schema$1(doc, object$1(json).schema ?? {}),
|
|
761
761
|
required: content.required === true,
|
|
762
762
|
mediaType
|
|
763
763
|
};
|
|
@@ -777,7 +777,7 @@ function openApiTask(config, name = "OpenAPI") {
|
|
|
777
777
|
const params = parameters(config);
|
|
778
778
|
const inputs = params.map((p) => {
|
|
779
779
|
const jsonSchema = schema$1(doc, p.schema ?? {});
|
|
780
|
-
const defaultValue = typeof jsonSchema == "boolean" ? void 0 : object(jsonSchema).default;
|
|
780
|
+
const defaultValue = typeof jsonSchema == "boolean" ? void 0 : object$1(jsonSchema).default;
|
|
781
781
|
return {
|
|
782
782
|
handle: `${p.in}.${p.name}`,
|
|
783
783
|
jsonSchema,
|
|
@@ -807,14 +807,14 @@ function openApiTask(config, name = "OpenAPI") {
|
|
|
807
807
|
jsonSchema: { type: "string" },
|
|
808
808
|
nullable: false
|
|
809
809
|
})));
|
|
810
|
-
const responses = object(op.responses);
|
|
810
|
+
const responses = object$1(op.responses);
|
|
811
811
|
const schemas = [];
|
|
812
812
|
for (const [status, response] of Object.entries(responses)) if (/^2\d\d$|^2XX$/.test(status) || status == "default") {
|
|
813
813
|
const r = resolved(doc, response);
|
|
814
814
|
if (r.content == null) schemas.push({ type: "null" });
|
|
815
815
|
else {
|
|
816
816
|
jsonContent(doc, r);
|
|
817
|
-
for (const [mediaType, media] of Object.entries(object(r.content))) if (/^application\/(json|.+\+json)$/.test(mediaType)) schemas.push(schema$1(doc, object(media).schema ?? {}));
|
|
817
|
+
for (const [mediaType, media] of Object.entries(object$1(r.content))) if (/^application\/(json|.+\+json)$/.test(mediaType)) schemas.push(schema$1(doc, object$1(media).schema ?? {}));
|
|
818
818
|
}
|
|
819
819
|
}
|
|
820
820
|
if (!schemas.length) throw new Error("A successful JSON response definition is required.");
|
|
@@ -928,7 +928,7 @@ var authoringOpenApiSchema = strictObject({
|
|
|
928
928
|
//#region src/control/common/authoringSchema.ts
|
|
929
929
|
var id$2 = string$1().min(1);
|
|
930
930
|
var json$2 = json$3();
|
|
931
|
-
var patch = record$
|
|
931
|
+
var patch = record$3(id$2, json$2);
|
|
932
932
|
var type = _enum([
|
|
933
933
|
"start",
|
|
934
934
|
"outputs",
|
|
@@ -946,7 +946,7 @@ var type = _enum([
|
|
|
946
946
|
"decision",
|
|
947
947
|
"openapi",
|
|
948
948
|
"http-request",
|
|
949
|
-
"
|
|
949
|
+
"skip-duplicates",
|
|
950
950
|
"condition",
|
|
951
951
|
"value",
|
|
952
952
|
"wait",
|
|
@@ -998,7 +998,7 @@ var operand = union([
|
|
|
998
998
|
system,
|
|
999
999
|
variable$1
|
|
1000
1000
|
]);
|
|
1001
|
-
var toolSources = record$
|
|
1001
|
+
var toolSources = record$3(id$2, agentToolFields.inputs.element.shape.source).optional().describe("Tool input sources by name. The platform resolves types from the selected Action or workflow. New inputs default to model-provided; omitted existing sources are preserved.");
|
|
1002
1002
|
var agentTool$1 = union([workflowAgentToolSchema.omit({
|
|
1003
1003
|
id: true,
|
|
1004
1004
|
inputs: true,
|
|
@@ -1020,7 +1020,7 @@ var authoringCapabilities = array(union([
|
|
|
1020
1020
|
var notification = strictObject({
|
|
1021
1021
|
...authoringDefinitionSchemas.connector.shape,
|
|
1022
1022
|
messageHandle: id$2,
|
|
1023
|
-
inputs: record$
|
|
1023
|
+
inputs: record$3(id$2, union([strictObject({
|
|
1024
1024
|
kind: literal("value"),
|
|
1025
1025
|
value: json$2
|
|
1026
1026
|
}), strictObject({
|
|
@@ -1033,14 +1033,14 @@ var field = strictObject({
|
|
|
1033
1033
|
nullable: boolean().optional(),
|
|
1034
1034
|
description: string$1().optional()
|
|
1035
1035
|
});
|
|
1036
|
-
var inputFields = record$
|
|
1037
|
-
var flowInputFields = record$
|
|
1036
|
+
var inputFields = record$3(id$2, field.extend({ default: json$2.optional() })).describe("Optional business input constraints by name. A binding to a new Code, Agent, LLM, Wait or Approval input automatically declares an input accepting any JSON. Existing constraints are preserved. Omitted schema accepts any JSON; omitted nullable is true. Use default for inherited values; input.set supplies data.");
|
|
1037
|
+
var flowInputFields = record$3(id$2, field).describe("Workflow input definitions by name. Omitted schema accepts any JSON; omitted nullable is true. No defaults. Supply call values as trigger.outputs.");
|
|
1038
1038
|
var flowOutputFields = flowInputFields.describe("Workflow output definitions by name. Omitted schema accepts any JSON; omitted nullable is true. No defaults. Set values on the Outputs node with input.set or node.add.inputs.");
|
|
1039
|
-
var flowInputFieldsView = record$
|
|
1039
|
+
var flowInputFieldsView = record$3(id$2, field.extend({
|
|
1040
1040
|
schema: json$2,
|
|
1041
1041
|
nullable: boolean()
|
|
1042
1042
|
}));
|
|
1043
|
-
var outputFields = record$
|
|
1043
|
+
var outputFields = record$3(id$2, field).describe("Code return fields by name. Omitted schema accepts any JSON; omitted nullable is true.");
|
|
1044
1044
|
var expression = strictObject({
|
|
1045
1045
|
left: operand,
|
|
1046
1046
|
operator: authoringDefinitionSchemas.condition.shape.cases.element.shape.groups.element.shape.expressions.element.shape.operator,
|
|
@@ -1077,7 +1077,7 @@ var authoringConfigurations = {
|
|
|
1077
1077
|
"connector": authoringDefinitionSchemas.connector.omit({ outputMode: true }).strict(),
|
|
1078
1078
|
"openapi": authoringOpenApiSchema,
|
|
1079
1079
|
"http-request": httpRequestConfigSchema,
|
|
1080
|
-
"
|
|
1080
|
+
"skip-duplicates": skipDuplicatesConfigSchema,
|
|
1081
1081
|
"agent": authoringDefinitionSchemas.agent.omit({
|
|
1082
1082
|
prompt: true,
|
|
1083
1083
|
tools: true
|
|
@@ -1107,7 +1107,7 @@ var authoringConfigurations = {
|
|
|
1107
1107
|
}),
|
|
1108
1108
|
"approval": strictObject({ inputs: inputFields })
|
|
1109
1109
|
};
|
|
1110
|
-
var metadata$
|
|
1110
|
+
var metadata$2 = {
|
|
1111
1111
|
onError: _enum(["stop", "error"]).optional(),
|
|
1112
1112
|
name: id$2.optional(),
|
|
1113
1113
|
description: string$1().optional(),
|
|
@@ -1117,7 +1117,7 @@ var metadata$1 = {
|
|
|
1117
1117
|
retry: retryConfigurationSchema.partial().optional().describe("Node retry policy for Code, Connector, OpenAPI, LLM and AI Decision. Omitted update fields preserve the policy; use clear: [[\"retry\"]] to disable it. maxRetries counts additional attempts; intervalMs is 1000–60000 in whole seconds.")
|
|
1118
1118
|
};
|
|
1119
1119
|
var updates = strictObject({
|
|
1120
|
-
...metadata$
|
|
1120
|
+
...metadata$2,
|
|
1121
1121
|
config: patch.optional().describe("Recursively merge configuration; omitted fields remain unchanged and arrays replace as a whole. This includes schema objects: {} does not clear an existing schema. Use clear paths to remove fields, e.g. [\"config\",\"inputs\",\"amount\",\"schema\",\"type\"].")
|
|
1122
1122
|
});
|
|
1123
1123
|
var authoringEditSchema = discriminatedUnion("op", [
|
|
@@ -1129,7 +1129,7 @@ var authoringEditSchema = discriminatedUnion("op", [
|
|
|
1129
1129
|
onError: _enum(["stop", "error"]).optional(),
|
|
1130
1130
|
retry: retryConfigurationSchema.optional(),
|
|
1131
1131
|
config: patch.optional(),
|
|
1132
|
-
inputs: record$
|
|
1132
|
+
inputs: record$3(id$2, authoringSourceSchema).optional().describe("Input data sources, applied after creation, as input.set operations. Execution edges are separate."),
|
|
1133
1133
|
code: string$1().optional(),
|
|
1134
1134
|
prompt: string$1().optional()
|
|
1135
1135
|
}),
|
|
@@ -1205,7 +1205,7 @@ strictObject({
|
|
|
1205
1205
|
action: id$2.optional()
|
|
1206
1206
|
}).refine((v) => v.type == null || v.action == null, "Choose type or action.");
|
|
1207
1207
|
`${[...findEngineContract(currentEngineContract).builtinModules].filter((name) => !name.startsWith("node:")).join(", ")}`;
|
|
1208
|
-
var authoringDiagnosticSchema = object$
|
|
1208
|
+
var authoringDiagnosticSchema = object$2({
|
|
1209
1209
|
code: id$2,
|
|
1210
1210
|
message: string$1(),
|
|
1211
1211
|
nodes: array(id$2),
|
|
@@ -1213,24 +1213,24 @@ var authoringDiagnosticSchema = object$1({
|
|
|
1213
1213
|
line: number().optional(),
|
|
1214
1214
|
column: number().optional()
|
|
1215
1215
|
});
|
|
1216
|
-
var authoringCheckResponse = object$
|
|
1216
|
+
var authoringCheckResponse = object$2({
|
|
1217
1217
|
flowId: id$2,
|
|
1218
1218
|
revisionId: id$2,
|
|
1219
1219
|
valid: boolean(),
|
|
1220
1220
|
diagnostics: array(authoringDiagnosticSchema),
|
|
1221
1221
|
version: literal(1)
|
|
1222
1222
|
});
|
|
1223
|
-
var authoringEditResponse = object$
|
|
1223
|
+
var authoringEditResponse = object$2({
|
|
1224
1224
|
flowId: id$2,
|
|
1225
1225
|
saved: literal(true),
|
|
1226
1226
|
revision: id$2,
|
|
1227
|
-
nodes: record$
|
|
1228
|
-
changes: array(object$
|
|
1227
|
+
nodes: record$3(id$2, id$2),
|
|
1228
|
+
changes: array(object$2({
|
|
1229
1229
|
index: int(),
|
|
1230
1230
|
op: id$2,
|
|
1231
1231
|
node: id$2.optional()
|
|
1232
1232
|
})),
|
|
1233
|
-
validation: object$
|
|
1233
|
+
validation: object$2({
|
|
1234
1234
|
status: _enum([
|
|
1235
1235
|
"valid",
|
|
1236
1236
|
"invalid",
|
|
@@ -1240,21 +1240,21 @@ var authoringEditResponse = object$1({
|
|
|
1240
1240
|
}),
|
|
1241
1241
|
version: literal(1)
|
|
1242
1242
|
});
|
|
1243
|
-
var authoringReadResponse = object$
|
|
1243
|
+
var authoringReadResponse = object$2({
|
|
1244
1244
|
flowId: id$2,
|
|
1245
1245
|
revision: id$2,
|
|
1246
|
-
data: object$
|
|
1247
|
-
nodes: array(record$
|
|
1246
|
+
data: object$2({
|
|
1247
|
+
nodes: array(record$3(string$1(), json$2)).optional(),
|
|
1248
1248
|
edges: array(json$2).optional(),
|
|
1249
|
-
text: record$
|
|
1249
|
+
text: record$3(string$1(), json$2).optional()
|
|
1250
1250
|
}),
|
|
1251
1251
|
version: literal(1)
|
|
1252
1252
|
});
|
|
1253
|
-
var authoringSearchResponse = object$
|
|
1253
|
+
var authoringSearchResponse = object$2({
|
|
1254
1254
|
flowId: id$2,
|
|
1255
1255
|
revision: id$2,
|
|
1256
|
-
data: object$
|
|
1257
|
-
matches: array(object$
|
|
1256
|
+
data: object$2({
|
|
1257
|
+
matches: array(object$2({
|
|
1258
1258
|
node: id$2.optional(),
|
|
1259
1259
|
field: id$2,
|
|
1260
1260
|
line: int().optional(),
|
|
@@ -1268,8 +1268,8 @@ var authoringSearchResponse = object$1({
|
|
|
1268
1268
|
//#endregion
|
|
1269
1269
|
//#region src/control/common/publicationDecoders.ts
|
|
1270
1270
|
function publication$7(value) {
|
|
1271
|
-
const source = record$
|
|
1272
|
-
const liveEnd = source.liveEnd == null ? void 0 : record$
|
|
1271
|
+
const source = record$2(value);
|
|
1272
|
+
const liveEnd = source.liveEnd == null ? void 0 : record$2(source.liveEnd);
|
|
1273
1273
|
if (liveEnd != null && typeof liveEnd.enabled != "boolean") return invalidResponse();
|
|
1274
1274
|
const operation = source.operation;
|
|
1275
1275
|
const sourcePublicationId = source.sourcePublicationId;
|
|
@@ -1297,7 +1297,7 @@ function publication$7(value) {
|
|
|
1297
1297
|
};
|
|
1298
1298
|
}
|
|
1299
1299
|
function publishOperation(value) {
|
|
1300
|
-
const source = record$
|
|
1300
|
+
const source = record$2(value);
|
|
1301
1301
|
const status = source.status;
|
|
1302
1302
|
const common = {
|
|
1303
1303
|
createdAt: string(source.createdAt),
|
|
@@ -1350,7 +1350,7 @@ function publishOperation(value) {
|
|
|
1350
1350
|
"updatedAt",
|
|
1351
1351
|
"version"
|
|
1352
1352
|
]);
|
|
1353
|
-
const issue = record$
|
|
1353
|
+
const issue = record$2(source.issue);
|
|
1354
1354
|
const nodeId = issue.nodeId;
|
|
1355
1355
|
requiredFields(issue, [
|
|
1356
1356
|
"code",
|
|
@@ -1371,7 +1371,7 @@ function publishOperation(value) {
|
|
|
1371
1371
|
}
|
|
1372
1372
|
}
|
|
1373
1373
|
function live(value) {
|
|
1374
|
-
const source = record$
|
|
1374
|
+
const source = record$2(value);
|
|
1375
1375
|
const status = source.status;
|
|
1376
1376
|
const candidate = source.publication;
|
|
1377
1377
|
if (source.version != 1 || typeof source.hasUnpublishedChanges != "boolean") return invalidResponse();
|
|
@@ -1388,7 +1388,7 @@ function live(value) {
|
|
|
1388
1388
|
};
|
|
1389
1389
|
}
|
|
1390
1390
|
function publicationPage(value) {
|
|
1391
|
-
const source = record$
|
|
1391
|
+
const source = record$2(value);
|
|
1392
1392
|
const nextCursor = source.nextCursor;
|
|
1393
1393
|
const total = source.total;
|
|
1394
1394
|
if (source.version != 1 || !Array.isArray(source.publications)) return invalidResponse();
|
|
@@ -1416,7 +1416,7 @@ var configInputsSchema = array(union([strictObject({
|
|
|
1416
1416
|
//#endregion
|
|
1417
1417
|
//#region src/control/common/triggerDecoders.ts
|
|
1418
1418
|
function triggerKeySummary(value) {
|
|
1419
|
-
const source = record$
|
|
1419
|
+
const source = record$2(value);
|
|
1420
1420
|
const type = source.type;
|
|
1421
1421
|
if (type != "integration" && type != "poll") return invalidResponse();
|
|
1422
1422
|
return {
|
|
@@ -1429,7 +1429,7 @@ function triggerKeySummary(value) {
|
|
|
1429
1429
|
};
|
|
1430
1430
|
}
|
|
1431
1431
|
function triggerKey(value) {
|
|
1432
|
-
const source = record$
|
|
1432
|
+
const source = record$2(value);
|
|
1433
1433
|
const summary = triggerKeySummary(source);
|
|
1434
1434
|
const base = {
|
|
1435
1435
|
configInputs: configInputsSchema.parse(source.configInputs),
|
|
@@ -1439,7 +1439,7 @@ function triggerKey(value) {
|
|
|
1439
1439
|
key: summary.key,
|
|
1440
1440
|
name: summary.name,
|
|
1441
1441
|
outputs: (Array.isArray(source.outputs) ? source.outputs : invalidResponse()).map((entry) => {
|
|
1442
|
-
const port = record$
|
|
1442
|
+
const port = record$2(entry);
|
|
1443
1443
|
return Object.assign({
|
|
1444
1444
|
handle: string(port.handle),
|
|
1445
1445
|
jsonSchema: jsonValue(port.jsonSchema),
|
|
@@ -1452,8 +1452,8 @@ function triggerKey(value) {
|
|
|
1452
1452
|
...base,
|
|
1453
1453
|
type: "poll"
|
|
1454
1454
|
};
|
|
1455
|
-
const endpoint = record$
|
|
1456
|
-
const body = record$
|
|
1455
|
+
const endpoint = record$2(source.endpoint);
|
|
1456
|
+
const body = record$2(endpoint.body);
|
|
1457
1457
|
if (!Array.isArray(endpoint.methods) || !Array.isArray(body.formats) || typeof body.allowArray != "boolean" || typeof body.allowEmpty != "boolean") return invalidResponse();
|
|
1458
1458
|
const methods = endpoint.methods.map(string);
|
|
1459
1459
|
const formats = body.formats.map(string);
|
|
@@ -1509,9 +1509,9 @@ var triggerActivityKinds = /* @__PURE__ */ new Set([
|
|
|
1509
1509
|
"operator.resumed"
|
|
1510
1510
|
]);
|
|
1511
1511
|
function triggerBinding(value) {
|
|
1512
|
-
const source = record$
|
|
1512
|
+
const source = record$2(value);
|
|
1513
1513
|
const health = source.health;
|
|
1514
|
-
const listener = source.listener == null ? void 0 : record$
|
|
1514
|
+
const listener = source.listener == null ? void 0 : record$2(source.listener);
|
|
1515
1515
|
if (listener != null && listener.health != "healthy" && listener.health != "failed" && listener.health != "needs_reauth") return invalidResponse();
|
|
1516
1516
|
const kind = source.kind;
|
|
1517
1517
|
const runtimeVersion = integer(source.runtimeVersion);
|
|
@@ -1537,7 +1537,7 @@ function triggerBinding(value) {
|
|
|
1537
1537
|
};
|
|
1538
1538
|
}
|
|
1539
1539
|
function triggerBindingDetail(value) {
|
|
1540
|
-
const source = record$
|
|
1540
|
+
const source = record$2(value);
|
|
1541
1541
|
if (source.version != 1) return invalidResponse();
|
|
1542
1542
|
return {
|
|
1543
1543
|
binding: triggerBinding(source.binding),
|
|
@@ -1545,7 +1545,7 @@ function triggerBindingDetail(value) {
|
|
|
1545
1545
|
};
|
|
1546
1546
|
}
|
|
1547
1547
|
function triggerActivity(value) {
|
|
1548
|
-
const source = record$
|
|
1548
|
+
const source = record$2(value);
|
|
1549
1549
|
const kind = source.kind;
|
|
1550
1550
|
if (typeof kind != "string" || !triggerActivityKinds.has(kind)) return invalidResponse();
|
|
1551
1551
|
const errorCode = optionalString(source.errorCode);
|
|
@@ -1560,7 +1560,7 @@ function triggerActivity(value) {
|
|
|
1560
1560
|
};
|
|
1561
1561
|
}
|
|
1562
1562
|
function triggerActivityPage(value) {
|
|
1563
|
-
const source = record$
|
|
1563
|
+
const source = record$2(value);
|
|
1564
1564
|
const nextCursor = optionalString(source.nextCursor);
|
|
1565
1565
|
if (source.version != 1 || !Array.isArray(source.activities)) return invalidResponse();
|
|
1566
1566
|
return {
|
|
@@ -1570,12 +1570,12 @@ function triggerActivityPage(value) {
|
|
|
1570
1570
|
};
|
|
1571
1571
|
}
|
|
1572
1572
|
function pollTriggerTestResult(value) {
|
|
1573
|
-
const source = record$
|
|
1573
|
+
const source = record$2(value);
|
|
1574
1574
|
const filtered = integer(source.filtered);
|
|
1575
1575
|
if (source.version != 1 || !Array.isArray(source.events) || typeof source.hasMore != "boolean" || filtered < 0) return invalidResponse();
|
|
1576
1576
|
return {
|
|
1577
1577
|
events: source.events.map((event) => {
|
|
1578
|
-
const object = record$
|
|
1578
|
+
const object = record$2(event);
|
|
1579
1579
|
return Object.fromEntries(Object.entries(object).map(([key, item]) => [key, jsonValue(item)]));
|
|
1580
1580
|
}),
|
|
1581
1581
|
filtered,
|
|
@@ -1585,65 +1585,65 @@ function pollTriggerTestResult(value) {
|
|
|
1585
1585
|
}
|
|
1586
1586
|
//#endregion
|
|
1587
1587
|
//#region src/control/common/liveDetails.ts
|
|
1588
|
-
var metadata = {
|
|
1588
|
+
var metadata$1 = {
|
|
1589
1589
|
nodeId: string$1().min(1),
|
|
1590
1590
|
name: string$1(),
|
|
1591
1591
|
description: string$1().optional()
|
|
1592
1592
|
};
|
|
1593
1593
|
var binding = unknown().transform(triggerBinding);
|
|
1594
|
-
var provider = {
|
|
1594
|
+
var provider$1 = {
|
|
1595
1595
|
provider: string$1().min(1),
|
|
1596
|
-
inputs: record$
|
|
1596
|
+
inputs: record$3(string$1(), discriminatedUnion("kind", [object$2({
|
|
1597
1597
|
kind: literal("value"),
|
|
1598
1598
|
value: json$3()
|
|
1599
|
-
}), object$
|
|
1599
|
+
}), object$2({ kind: literal("unset") })]))
|
|
1600
1600
|
};
|
|
1601
1601
|
var entrySchema = discriminatedUnion("type", [
|
|
1602
|
-
object$
|
|
1603
|
-
...metadata,
|
|
1602
|
+
object$2({
|
|
1603
|
+
...metadata$1,
|
|
1604
1604
|
type: literal("start"),
|
|
1605
1605
|
config: authoringConfigurations.start
|
|
1606
1606
|
}),
|
|
1607
|
-
object$
|
|
1608
|
-
...metadata,
|
|
1607
|
+
object$2({
|
|
1608
|
+
...metadata$1,
|
|
1609
1609
|
type: literal("manual"),
|
|
1610
|
-
config: object$
|
|
1610
|
+
config: object$2({})
|
|
1611
1611
|
}),
|
|
1612
|
-
object$
|
|
1613
|
-
...metadata,
|
|
1612
|
+
object$2({
|
|
1613
|
+
...metadata$1,
|
|
1614
1614
|
type: literal("webhook"),
|
|
1615
1615
|
config: authoringConfigurations.webhook,
|
|
1616
1616
|
binding
|
|
1617
1617
|
}),
|
|
1618
|
-
object$
|
|
1619
|
-
...metadata,
|
|
1618
|
+
object$2({
|
|
1619
|
+
...metadata$1,
|
|
1620
1620
|
type: literal("cron"),
|
|
1621
1621
|
config: authoringConfigurations.cron,
|
|
1622
1622
|
binding
|
|
1623
1623
|
}),
|
|
1624
|
-
object$
|
|
1625
|
-
...metadata,
|
|
1624
|
+
object$2({
|
|
1625
|
+
...metadata$1,
|
|
1626
1626
|
type: literal("error"),
|
|
1627
1627
|
config: authoringConfigurations.error,
|
|
1628
1628
|
binding
|
|
1629
1629
|
}),
|
|
1630
|
-
object$
|
|
1631
|
-
...metadata,
|
|
1632
|
-
...provider,
|
|
1630
|
+
object$2({
|
|
1631
|
+
...metadata$1,
|
|
1632
|
+
...provider$1,
|
|
1633
1633
|
type: literal("poll"),
|
|
1634
1634
|
config: authoringConfigurations.poll,
|
|
1635
1635
|
binding
|
|
1636
1636
|
}),
|
|
1637
|
-
object$
|
|
1638
|
-
...metadata,
|
|
1639
|
-
...provider,
|
|
1637
|
+
object$2({
|
|
1638
|
+
...metadata$1,
|
|
1639
|
+
...provider$1,
|
|
1640
1640
|
type: literal("integration"),
|
|
1641
1641
|
config: authoringConfigurations.integration,
|
|
1642
1642
|
binding
|
|
1643
1643
|
})
|
|
1644
1644
|
]);
|
|
1645
1645
|
function decodeLiveDetails(value) {
|
|
1646
|
-
const source = record$
|
|
1646
|
+
const source = record$2(value);
|
|
1647
1647
|
const flowId = string(source.flowId);
|
|
1648
1648
|
if (source.version != 1 || !Array.isArray(source.entries)) return invalidResponse();
|
|
1649
1649
|
if (source.publication === null) {
|
|
@@ -1857,7 +1857,7 @@ var envelope = strictObject({
|
|
|
1857
1857
|
version: literal(1),
|
|
1858
1858
|
name: string$1().optional(),
|
|
1859
1859
|
content: unknown(),
|
|
1860
|
-
presentation: record$
|
|
1860
|
+
presentation: record$3(string$1(), json$3()).optional()
|
|
1861
1861
|
});
|
|
1862
1862
|
/** Structural decoding only: incomplete drafts are supported, repair is never attempted. */
|
|
1863
1863
|
function decodeWorkflowFile(value) {
|
|
@@ -1948,10 +1948,10 @@ function parseProviderAccessSource(value) {
|
|
|
1948
1948
|
//#endregion
|
|
1949
1949
|
//#region src/control/common/connectorDecoders.ts
|
|
1950
1950
|
function leinaBots(value) {
|
|
1951
|
-
const source = record$
|
|
1951
|
+
const source = record$2(value);
|
|
1952
1952
|
if (!Array.isArray(source.bots)) return invalidResponse("Leina bots: expected an array.");
|
|
1953
1953
|
const bots = source.bots.map((entry) => {
|
|
1954
|
-
const bot = record$
|
|
1954
|
+
const bot = record$2(entry);
|
|
1955
1955
|
if (!Array.isArray(bot.platforms)) return invalidResponse("Leina platforms: expected an array.");
|
|
1956
1956
|
return {
|
|
1957
1957
|
leinaId: string(bot.leinaId),
|
|
@@ -1964,7 +1964,7 @@ function leinaBots(value) {
|
|
|
1964
1964
|
return bots;
|
|
1965
1965
|
}
|
|
1966
1966
|
function accessPermissions(value) {
|
|
1967
|
-
const source = record$
|
|
1967
|
+
const source = record$2(value);
|
|
1968
1968
|
exact(source, [
|
|
1969
1969
|
"actionIds",
|
|
1970
1970
|
"allActions",
|
|
@@ -1996,7 +1996,7 @@ function accessPermissions(value) {
|
|
|
1996
1996
|
};
|
|
1997
1997
|
}
|
|
1998
1998
|
function accessBinding(value, candidate) {
|
|
1999
|
-
const source = record$
|
|
1999
|
+
const source = record$2(value);
|
|
2000
2000
|
const policyRevision = source.policyRevision;
|
|
2001
2001
|
const status = source.status;
|
|
2002
2002
|
const isDefault = source.isDefault;
|
|
@@ -2043,7 +2043,7 @@ function accessMode(value) {
|
|
|
2043
2043
|
return value;
|
|
2044
2044
|
}
|
|
2045
2045
|
function connectorAccess$7(value) {
|
|
2046
|
-
const source = record$
|
|
2046
|
+
const source = record$2(value);
|
|
2047
2047
|
exact(source, [
|
|
2048
2048
|
"accessRevision",
|
|
2049
2049
|
"bindings",
|
|
@@ -2090,7 +2090,7 @@ function connectorAccess$7(value) {
|
|
|
2090
2090
|
function accessGrants(value) {
|
|
2091
2091
|
if (!Array.isArray(value)) return invalidResponse();
|
|
2092
2092
|
const bindings = value.map((candidate) => {
|
|
2093
|
-
const entry = record$
|
|
2093
|
+
const entry = record$2(candidate);
|
|
2094
2094
|
exact(entry, [
|
|
2095
2095
|
"accessBindingId",
|
|
2096
2096
|
"connectionId",
|
|
@@ -2119,7 +2119,7 @@ function accessGrants(value) {
|
|
|
2119
2119
|
return bindings;
|
|
2120
2120
|
}
|
|
2121
2121
|
function connectorAccessSnapshot(value) {
|
|
2122
|
-
const source = record$
|
|
2122
|
+
const source = record$2(value);
|
|
2123
2123
|
exact(source, [
|
|
2124
2124
|
"mode",
|
|
2125
2125
|
"sharedAccessDigest",
|
|
@@ -2141,7 +2141,7 @@ function connectorAccessSnapshot(value) {
|
|
|
2141
2141
|
};
|
|
2142
2142
|
}
|
|
2143
2143
|
function connectorAccessCandidates(value, providerId) {
|
|
2144
|
-
const source = record$
|
|
2144
|
+
const source = record$2(value);
|
|
2145
2145
|
exact(source, [
|
|
2146
2146
|
"candidates",
|
|
2147
2147
|
"mode",
|
|
@@ -2162,18 +2162,18 @@ function connectorAccessCandidates(value, providerId) {
|
|
|
2162
2162
|
};
|
|
2163
2163
|
}
|
|
2164
2164
|
function connectorAccessCandidatesBatch(value, providerIds) {
|
|
2165
|
-
const source = record$
|
|
2165
|
+
const source = record$2(value);
|
|
2166
2166
|
exact(source, ["results", "version"]);
|
|
2167
2167
|
if (source.version != 1) return invalidResponse("version: expected 1.");
|
|
2168
2168
|
if (!Array.isArray(source.results)) return invalidResponse("results: expected an array.");
|
|
2169
2169
|
const remaining = new Set(providerIds);
|
|
2170
2170
|
const results = source.results.map((entry) => {
|
|
2171
|
-
const item = record$
|
|
2171
|
+
const item = record$2(entry);
|
|
2172
2172
|
const providerId = string(item.providerId);
|
|
2173
2173
|
if (!remaining.delete(providerId)) return invalidResponse("results[].providerId: duplicate or unrequested provider.");
|
|
2174
2174
|
if (!Object.hasOwn(item, "error")) return connectorAccessCandidates(item, providerId);
|
|
2175
2175
|
exact(item, ["providerId", "error"]);
|
|
2176
|
-
const error = record$
|
|
2176
|
+
const error = record$2(item.error);
|
|
2177
2177
|
exact(error, ["code", "message"]);
|
|
2178
2178
|
return {
|
|
2179
2179
|
providerId,
|
|
@@ -2190,7 +2190,7 @@ function connectorAccessCandidatesBatch(value, providerIds) {
|
|
|
2190
2190
|
};
|
|
2191
2191
|
}
|
|
2192
2192
|
function connection(value) {
|
|
2193
|
-
const source = record$
|
|
2193
|
+
const source = record$2(value);
|
|
2194
2194
|
requiredFields(source, [
|
|
2195
2195
|
...Object.hasOwn(source, "providerAccountId") ? ["providerAccountId"] : [],
|
|
2196
2196
|
...Object.hasOwn(source, "alias") ? ["alias"] : [],
|
|
@@ -2216,8 +2216,8 @@ function connection(value) {
|
|
|
2216
2216
|
status
|
|
2217
2217
|
};
|
|
2218
2218
|
}
|
|
2219
|
-
function port(value, input = false) {
|
|
2220
|
-
const source = record$
|
|
2219
|
+
function port$1(value, input = false) {
|
|
2220
|
+
const source = record$2(value);
|
|
2221
2221
|
const description = source.description;
|
|
2222
2222
|
const hasValue = input && Object.hasOwn(source, "value");
|
|
2223
2223
|
requiredFields(source, [
|
|
@@ -2236,13 +2236,13 @@ function port(value, input = false) {
|
|
|
2236
2236
|
};
|
|
2237
2237
|
}
|
|
2238
2238
|
function inputPort(value) {
|
|
2239
|
-
return port(value, true);
|
|
2239
|
+
return port$1(value, true);
|
|
2240
2240
|
}
|
|
2241
2241
|
function ports(value, decode) {
|
|
2242
|
-
return Object.fromEntries(Object.entries(record$
|
|
2242
|
+
return Object.fromEntries(Object.entries(record$2(value)).map(([handle, candidate]) => [handle, decode(candidate)]));
|
|
2243
2243
|
}
|
|
2244
2244
|
function connectorActionMetadata(value) {
|
|
2245
|
-
const source = record$
|
|
2245
|
+
const source = record$2(value);
|
|
2246
2246
|
const homepageUrl = source.homepageUrl;
|
|
2247
2247
|
const icon = source.icon;
|
|
2248
2248
|
requiredFields(source, [
|
|
@@ -2275,13 +2275,13 @@ function connectorActionMetadata(value) {
|
|
|
2275
2275
|
...providerIconAppearance(source.iconSprite, source.iconSpritePosition),
|
|
2276
2276
|
inputs: ports(source.inputs, inputPort),
|
|
2277
2277
|
name: string(source.name),
|
|
2278
|
-
outputs: ports(source.outputs, port),
|
|
2278
|
+
outputs: ports(source.outputs, port$1),
|
|
2279
2279
|
serviceId: string(source.serviceId),
|
|
2280
2280
|
serviceName: string(source.serviceName)
|
|
2281
2281
|
};
|
|
2282
2282
|
}
|
|
2283
2283
|
function connectorAction(value) {
|
|
2284
|
-
const { defaultConnection, ...metadata } = record$
|
|
2284
|
+
const { defaultConnection, ...metadata } = record$2(value);
|
|
2285
2285
|
const action = connectorActionMetadata(metadata);
|
|
2286
2286
|
if (defaultConnection == null) return action;
|
|
2287
2287
|
const preferred = connection(defaultConnection);
|
|
@@ -2292,7 +2292,7 @@ function connectorAction(value) {
|
|
|
2292
2292
|
};
|
|
2293
2293
|
}
|
|
2294
2294
|
function connectorProvider(value) {
|
|
2295
|
-
const source = record$
|
|
2295
|
+
const source = record$2(value);
|
|
2296
2296
|
const homepageUrl = source.homepageUrl;
|
|
2297
2297
|
const icon = source.icon;
|
|
2298
2298
|
if (source.noSetup !== void 0 && typeof source.noSetup != "boolean") return invalidResponse();
|
|
@@ -2940,7 +2940,7 @@ function inputSourceCandidates(graph, target, handle, inputPort) {
|
|
|
2940
2940
|
//#region src/event-source/common/view.ts
|
|
2941
2941
|
var id$1 = string$1().min(1).max(256);
|
|
2942
2942
|
/** Public projection of a source that Connector validates and Open Flow exposes unchanged. */
|
|
2943
|
-
var eventSourceViewSchema = object$
|
|
2943
|
+
var eventSourceViewSchema = object$2({
|
|
2944
2944
|
appId: id$1.nullable(),
|
|
2945
2945
|
workspaceId: id$1.optional(),
|
|
2946
2946
|
installationId: id$1.optional(),
|
|
@@ -2965,7 +2965,7 @@ var eventSourceViewSchema = object$1({
|
|
|
2965
2965
|
var id = string$1().min(1).max(256);
|
|
2966
2966
|
var eventType = string$1().regex(/^[a-z][a-z0-9_.:]{0,127}$/);
|
|
2967
2967
|
var name = string$1().trim().min(1).max(128);
|
|
2968
|
-
var eventSourceSchema = object$
|
|
2968
|
+
var eventSourceSchema = object$2({
|
|
2969
2969
|
version: literal(1),
|
|
2970
2970
|
sourceId: id,
|
|
2971
2971
|
revision: int().positive(),
|
|
@@ -2988,7 +2988,7 @@ var eventSourceSchema = object$1({
|
|
|
2988
2988
|
endpointUrl: string$1().nullable(),
|
|
2989
2989
|
lastReceivedAt: string$1().nullable(),
|
|
2990
2990
|
updatedAt: string$1(),
|
|
2991
|
-
consumers: array(object$
|
|
2991
|
+
consumers: array(object$2({
|
|
2992
2992
|
flowId: id,
|
|
2993
2993
|
flowName: string$1(),
|
|
2994
2994
|
triggerNodeId: id
|
|
@@ -2998,7 +2998,7 @@ function decodeEventSource(value) {
|
|
|
2998
2998
|
return eventSourceSchema.parse(value);
|
|
2999
2999
|
}
|
|
3000
3000
|
function decodeEventSources(value) {
|
|
3001
|
-
return object$
|
|
3001
|
+
return object$2({
|
|
3002
3002
|
version: literal(1),
|
|
3003
3003
|
sources: array(eventSourceSchema),
|
|
3004
3004
|
teamId: id.nullable().optional()
|
|
@@ -3007,7 +3007,7 @@ function decodeEventSources(value) {
|
|
|
3007
3007
|
//#endregion
|
|
3008
3008
|
//#region src/control/common/triggerCatalog.ts
|
|
3009
3009
|
function decodeTriggerCatalog(value) {
|
|
3010
|
-
const source = record$
|
|
3010
|
+
const source = record$2(value);
|
|
3011
3011
|
requiredFields(source, [
|
|
3012
3012
|
"version",
|
|
3013
3013
|
"locale",
|
|
@@ -3016,12 +3016,12 @@ function decodeTriggerCatalog(value) {
|
|
|
3016
3016
|
]);
|
|
3017
3017
|
if (source.version != 3 || !isUiLanguage(source.locale) || !Array.isArray(source.definitions)) return invalidResponse();
|
|
3018
3018
|
const definitions = source.definitions.map(triggerKey);
|
|
3019
|
-
const entries = record$
|
|
3019
|
+
const entries = record$2(source.display);
|
|
3020
3020
|
const keys = new Set(definitions.map((definition) => definition.key));
|
|
3021
3021
|
if (keys.size != definitions.length || Object.keys(entries).length != keys.size) return invalidResponse();
|
|
3022
3022
|
const display = Object.fromEntries(definitions.map((definition) => {
|
|
3023
3023
|
const { key } = definition;
|
|
3024
|
-
const copy = record$
|
|
3024
|
+
const copy = record$2(entries[key]);
|
|
3025
3025
|
requiredFields(copy, [
|
|
3026
3026
|
"configInputs",
|
|
3027
3027
|
"configInputLabels",
|
|
@@ -3045,12 +3045,12 @@ function decodeTriggerCatalog(value) {
|
|
|
3045
3045
|
};
|
|
3046
3046
|
}
|
|
3047
3047
|
function descriptions(value, handles) {
|
|
3048
|
-
const source = record$
|
|
3048
|
+
const source = record$2(value);
|
|
3049
3049
|
exact(source, handles);
|
|
3050
3050
|
return Object.fromEntries(Object.entries(source).map(([handle, description]) => [handle, string(description)]));
|
|
3051
3051
|
}
|
|
3052
3052
|
function labels(value, handles) {
|
|
3053
|
-
const source = record$
|
|
3053
|
+
const source = record$2(value);
|
|
3054
3054
|
if (Object.keys(source).some((handle) => !handles.includes(handle))) return invalidResponse();
|
|
3055
3055
|
return Object.fromEntries(Object.entries(source).map(([handle, label]) => {
|
|
3056
3056
|
const text = string(label);
|
|
@@ -3066,7 +3066,7 @@ strictObject({
|
|
|
3066
3066
|
//#endregion
|
|
3067
3067
|
//#region src/control/common/results.ts
|
|
3068
3068
|
var json$1 = json$3();
|
|
3069
|
-
var entry = object$
|
|
3069
|
+
var entry = object$2({
|
|
3070
3070
|
pointer: string$1(),
|
|
3071
3071
|
type: _enum([
|
|
3072
3072
|
"object",
|
|
@@ -3085,17 +3085,17 @@ var page = entry.extend({
|
|
|
3085
3085
|
nextOffset: number().int().positive().optional(),
|
|
3086
3086
|
entries: array(entry).optional()
|
|
3087
3087
|
});
|
|
3088
|
-
var result = object$
|
|
3088
|
+
var result = object$2({
|
|
3089
3089
|
resultId: string$1().min(1),
|
|
3090
3090
|
callId: string$1().min(1),
|
|
3091
3091
|
toolId: string$1().min(1),
|
|
3092
3092
|
source: discriminatedUnion("kind", [
|
|
3093
|
-
object$
|
|
3093
|
+
object$2({
|
|
3094
3094
|
kind: literal("connector"),
|
|
3095
3095
|
action: string$1().min(1)
|
|
3096
3096
|
}),
|
|
3097
|
-
object$
|
|
3098
|
-
object$
|
|
3097
|
+
object$2({ kind: literal("code") }),
|
|
3098
|
+
object$2({
|
|
3099
3099
|
kind: literal("workflow"),
|
|
3100
3100
|
flowId: string$1().min(1)
|
|
3101
3101
|
})
|
|
@@ -3104,13 +3104,13 @@ var result = object$1({
|
|
|
3104
3104
|
digest: string$1().regex(/^[a-f0-9]{64}$/),
|
|
3105
3105
|
createdAt: string$1().datetime()
|
|
3106
3106
|
});
|
|
3107
|
-
var listSchema = object$
|
|
3107
|
+
var listSchema = object$2({
|
|
3108
3108
|
version: literal(1),
|
|
3109
3109
|
runId: string$1(),
|
|
3110
3110
|
results: array(result),
|
|
3111
3111
|
nextAfter: string$1().optional()
|
|
3112
3112
|
});
|
|
3113
|
-
var readSchema = object$
|
|
3113
|
+
var readSchema = object$2({
|
|
3114
3114
|
version: literal(1),
|
|
3115
3115
|
runId: string$1(),
|
|
3116
3116
|
result,
|
|
@@ -3130,7 +3130,7 @@ function schemaPath$1(value) {
|
|
|
3130
3130
|
return value.map((part) => typeof part == "string" || Number.isSafeInteger(part) ? part : invalidResponse());
|
|
3131
3131
|
}
|
|
3132
3132
|
function schemaMismatch(value) {
|
|
3133
|
-
const source = record$
|
|
3133
|
+
const source = record$2(value);
|
|
3134
3134
|
const kind = string(source.kind);
|
|
3135
3135
|
if (kind == "artifact" || kind == "binary" || kind == "nullable") return { kind };
|
|
3136
3136
|
if (kind == "schema") return {
|
|
@@ -3147,8 +3147,8 @@ function schemaMismatch(value) {
|
|
|
3147
3147
|
};
|
|
3148
3148
|
}
|
|
3149
3149
|
function diagnostic(value) {
|
|
3150
|
-
const source = record$
|
|
3151
|
-
const values = source.values == null ? void 0 : record$
|
|
3150
|
+
const source = record$2(value);
|
|
3151
|
+
const values = source.values == null ? void 0 : record$2(source.values);
|
|
3152
3152
|
return {
|
|
3153
3153
|
code: string(source.code),
|
|
3154
3154
|
column: integer(source.column),
|
|
@@ -3161,7 +3161,7 @@ function diagnostic(value) {
|
|
|
3161
3161
|
};
|
|
3162
3162
|
}
|
|
3163
3163
|
function flowCheck(value) {
|
|
3164
|
-
const source = record$
|
|
3164
|
+
const source = record$2(value);
|
|
3165
3165
|
if (source.version != 1 || typeof source.valid != "boolean" || !Array.isArray(source.diagnostics)) return invalidResponse();
|
|
3166
3166
|
return {
|
|
3167
3167
|
closureDigest: string(source.closureDigest),
|
|
@@ -3177,7 +3177,7 @@ function flowCheck(value) {
|
|
|
3177
3177
|
}
|
|
3178
3178
|
//#endregion
|
|
3179
3179
|
//#region src/control/common/connectorQueries.ts
|
|
3180
|
-
var scope$
|
|
3180
|
+
var scope$2 = (flowId) => flowId == null ? "" : `?flowId=${encodeURIComponent(flowId)}`;
|
|
3181
3181
|
function connectorProvidersQuery(flowId, locale) {
|
|
3182
3182
|
const parameters = new URLSearchParams({
|
|
3183
3183
|
...flowId == null ? {} : { flowId },
|
|
@@ -3186,7 +3186,7 @@ function connectorProvidersQuery(flowId, locale) {
|
|
|
3186
3186
|
return {
|
|
3187
3187
|
path: `/v1/connector/providers${parameters ? `?${parameters}` : ""}`,
|
|
3188
3188
|
decode: (value) => {
|
|
3189
|
-
const source = record$
|
|
3189
|
+
const source = record$2(value);
|
|
3190
3190
|
requiredFields(source, ["providers", "version"]);
|
|
3191
3191
|
if (source.version != 1 || !Array.isArray(source.providers)) return invalidResponse();
|
|
3192
3192
|
return source.providers.map(connectorProvider);
|
|
@@ -3201,7 +3201,7 @@ function connectorActionQuery(actionId, flowId, locale) {
|
|
|
3201
3201
|
return {
|
|
3202
3202
|
path: `/v1/connector/actions/${encodeURIComponent(actionId)}${parameters ? `?${parameters}` : ""}`,
|
|
3203
3203
|
decode: (value) => {
|
|
3204
|
-
const source = record$
|
|
3204
|
+
const source = record$2(value);
|
|
3205
3205
|
requiredFields(source, ["action", "version"]);
|
|
3206
3206
|
if (source.version != 1) return invalidResponse();
|
|
3207
3207
|
return connectorAction(source.action);
|
|
@@ -3210,9 +3210,9 @@ function connectorActionQuery(actionId, flowId, locale) {
|
|
|
3210
3210
|
}
|
|
3211
3211
|
function allConnectorConnectionsQuery(flowId) {
|
|
3212
3212
|
return {
|
|
3213
|
-
path: `/v1/connector/connections${scope$
|
|
3213
|
+
path: `/v1/connector/connections${scope$2(flowId)}`,
|
|
3214
3214
|
decode: (value) => {
|
|
3215
|
-
const source = record$
|
|
3215
|
+
const source = record$2(value);
|
|
3216
3216
|
requiredFields(source, ["connections", "version"]);
|
|
3217
3217
|
if (source.version != 1 || !Array.isArray(source.connections)) return invalidResponse();
|
|
3218
3218
|
return source.connections.map(connection);
|
|
@@ -3221,9 +3221,9 @@ function allConnectorConnectionsQuery(flowId) {
|
|
|
3221
3221
|
}
|
|
3222
3222
|
function connectorConnectionsQuery(serviceId, flowId) {
|
|
3223
3223
|
return {
|
|
3224
|
-
path: `/v1/connector/connections/${encodeURIComponent(serviceId)}${scope$
|
|
3224
|
+
path: `/v1/connector/connections/${encodeURIComponent(serviceId)}${scope$2(flowId)}`,
|
|
3225
3225
|
decode: (value) => {
|
|
3226
|
-
const source = record$
|
|
3226
|
+
const source = record$2(value);
|
|
3227
3227
|
requiredFields(source, [
|
|
3228
3228
|
"connections",
|
|
3229
3229
|
"serviceId",
|
|
@@ -3240,9 +3240,9 @@ function strings(value) {
|
|
|
3240
3240
|
return Array.isArray(value) ? value.map(string) : invalidResponse();
|
|
3241
3241
|
}
|
|
3242
3242
|
function resourceReferences(input) {
|
|
3243
|
-
const source = record$
|
|
3244
|
-
const draft = source.draft === null ? null : record$
|
|
3245
|
-
const shared = record$
|
|
3243
|
+
const source = record$2(input);
|
|
3244
|
+
const draft = source.draft === null ? null : record$2(source.draft);
|
|
3245
|
+
const shared = record$2(source.sharedAccess);
|
|
3246
3246
|
if (draft != null && !Array.isArray(draft.connections)) return invalidResponse();
|
|
3247
3247
|
if (!Array.isArray(shared.bindings)) return invalidResponse();
|
|
3248
3248
|
const accessRevision = integer(shared.accessRevision);
|
|
@@ -3253,7 +3253,7 @@ function resourceReferences(input) {
|
|
|
3253
3253
|
variableNames: strings(draft.variableNames),
|
|
3254
3254
|
errorSourceFlowIds: strings(draft.errorSourceFlowIds),
|
|
3255
3255
|
connections: draft.connections.map((value) => {
|
|
3256
|
-
const connection = record$
|
|
3256
|
+
const connection = record$2(value);
|
|
3257
3257
|
return {
|
|
3258
3258
|
providerId: string(connection.providerId),
|
|
3259
3259
|
connectionId: string(connection.connectionId)
|
|
@@ -3264,7 +3264,7 @@ function resourceReferences(input) {
|
|
|
3264
3264
|
accessRevision,
|
|
3265
3265
|
providerIds: strings(shared.providerIds),
|
|
3266
3266
|
bindings: shared.bindings.map((value) => {
|
|
3267
|
-
const binding = record$
|
|
3267
|
+
const binding = record$2(value);
|
|
3268
3268
|
return {
|
|
3269
3269
|
providerId: string(binding.providerId),
|
|
3270
3270
|
connectionId: binding.connectionId === null ? null : string(binding.connectionId),
|
|
@@ -3275,11 +3275,11 @@ function resourceReferences(input) {
|
|
|
3275
3275
|
};
|
|
3276
3276
|
}
|
|
3277
3277
|
function flow(value) {
|
|
3278
|
-
const source = record$
|
|
3278
|
+
const source = record$2(value);
|
|
3279
3279
|
const status = source.status;
|
|
3280
3280
|
if (source.version != 1) return invalidResponse();
|
|
3281
3281
|
if (status != "active" && status != "retiring") return invalidResponse();
|
|
3282
|
-
const target = source.live == null ? void 0 : record$
|
|
3282
|
+
const target = source.live == null ? void 0 : record$2(source.live);
|
|
3283
3283
|
if (target != null && (typeof target.enabled != "boolean" || typeof target.hasStart != "boolean")) return invalidResponse();
|
|
3284
3284
|
return {
|
|
3285
3285
|
...target == null ? {} : { live: {
|
|
@@ -3301,7 +3301,7 @@ function flow(value) {
|
|
|
3301
3301
|
};
|
|
3302
3302
|
}
|
|
3303
3303
|
function flowListItem(value) {
|
|
3304
|
-
const source = record$
|
|
3304
|
+
const source = record$2(value);
|
|
3305
3305
|
const referenceCount = integer(source.referenceCount);
|
|
3306
3306
|
if (referenceCount < 0) return invalidResponse();
|
|
3307
3307
|
return {
|
|
@@ -3310,7 +3310,7 @@ function flowListItem(value) {
|
|
|
3310
3310
|
};
|
|
3311
3311
|
}
|
|
3312
3312
|
function flowPage(value) {
|
|
3313
|
-
const source = record$
|
|
3313
|
+
const source = record$2(value);
|
|
3314
3314
|
if (source.version != 1 || !Array.isArray(source.flows)) return invalidResponse();
|
|
3315
3315
|
const nextCursor = source.nextCursor;
|
|
3316
3316
|
const total = source.total;
|
|
@@ -3324,7 +3324,7 @@ function flowPage(value) {
|
|
|
3324
3324
|
};
|
|
3325
3325
|
}
|
|
3326
3326
|
function variable(value) {
|
|
3327
|
-
const source = record$
|
|
3327
|
+
const source = record$2(value);
|
|
3328
3328
|
requiredFields(source, [
|
|
3329
3329
|
"name",
|
|
3330
3330
|
"updatedAt",
|
|
@@ -3346,7 +3346,7 @@ function variable(value) {
|
|
|
3346
3346
|
};
|
|
3347
3347
|
}
|
|
3348
3348
|
function variableListItem(value) {
|
|
3349
|
-
const { referenceCount, ...fields } = record$
|
|
3349
|
+
const { referenceCount, ...fields } = record$2(value);
|
|
3350
3350
|
const count = integer(referenceCount);
|
|
3351
3351
|
if (count < 0) return invalidResponse();
|
|
3352
3352
|
return {
|
|
@@ -3355,7 +3355,7 @@ function variableListItem(value) {
|
|
|
3355
3355
|
};
|
|
3356
3356
|
}
|
|
3357
3357
|
function errorListener(value) {
|
|
3358
|
-
const source = record$
|
|
3358
|
+
const source = record$2(value);
|
|
3359
3359
|
if (typeof source.enabled != "boolean") return invalidResponse();
|
|
3360
3360
|
return {
|
|
3361
3361
|
flowId: string(source.flowId),
|
|
@@ -3366,13 +3366,13 @@ function errorListener(value) {
|
|
|
3366
3366
|
};
|
|
3367
3367
|
}
|
|
3368
3368
|
function variableReferences(input) {
|
|
3369
|
-
const source = record$
|
|
3369
|
+
const source = record$2(input);
|
|
3370
3370
|
requiredFields(source, ["version", "references"]);
|
|
3371
3371
|
if (source.version != 1 || !Array.isArray(source.references)) return invalidResponse();
|
|
3372
3372
|
return {
|
|
3373
3373
|
version: 1,
|
|
3374
3374
|
references: source.references.map((value) => {
|
|
3375
|
-
const item = record$
|
|
3375
|
+
const item = record$2(value);
|
|
3376
3376
|
requiredFields(item, [
|
|
3377
3377
|
"flowId",
|
|
3378
3378
|
"flowName",
|
|
@@ -3380,7 +3380,7 @@ function variableReferences(input) {
|
|
|
3380
3380
|
"live"
|
|
3381
3381
|
]);
|
|
3382
3382
|
if (typeof item.draft != "boolean") return invalidResponse();
|
|
3383
|
-
const live = item.live === null ? null : record$
|
|
3383
|
+
const live = item.live === null ? null : record$2(item.live);
|
|
3384
3384
|
if (live != null) {
|
|
3385
3385
|
requiredFields(live, ["publicationId", "enabled"]);
|
|
3386
3386
|
if (typeof live.enabled != "boolean") return invalidResponse();
|
|
@@ -3400,7 +3400,7 @@ function variableReferences(input) {
|
|
|
3400
3400
|
//#endregion
|
|
3401
3401
|
//#region src/control/common/revisionDecoders.ts
|
|
3402
3402
|
function revisionMetadata(value) {
|
|
3403
|
-
const source = record$
|
|
3403
|
+
const source = record$2(value);
|
|
3404
3404
|
const parentRevisionId = source.parentRevisionId;
|
|
3405
3405
|
if (source.version != 1 || parentRevisionId !== null && typeof parentRevisionId != "string") return invalidResponse();
|
|
3406
3406
|
return {
|
|
@@ -3415,7 +3415,7 @@ function revisionMetadata(value) {
|
|
|
3415
3415
|
};
|
|
3416
3416
|
}
|
|
3417
3417
|
function draft(value) {
|
|
3418
|
-
const source = record$
|
|
3418
|
+
const source = record$2(value);
|
|
3419
3419
|
try {
|
|
3420
3420
|
return {
|
|
3421
3421
|
...revisionMetadata(source),
|
|
@@ -3426,17 +3426,17 @@ function draft(value) {
|
|
|
3426
3426
|
}
|
|
3427
3427
|
}
|
|
3428
3428
|
function presentation(value) {
|
|
3429
|
-
const source = record$
|
|
3429
|
+
const source = record$2(value);
|
|
3430
3430
|
if (source.version != 1 || integer(source.revision) < 1) return invalidResponse();
|
|
3431
3431
|
return {
|
|
3432
3432
|
revision: integer(source.revision),
|
|
3433
3433
|
updatedAt: string(source.updatedAt),
|
|
3434
|
-
value: Object.fromEntries(Object.entries(record$
|
|
3434
|
+
value: Object.fromEntries(Object.entries(record$2(source.value)).map(([key, item]) => [key, jsonValue(item)])),
|
|
3435
3435
|
version: 1
|
|
3436
3436
|
};
|
|
3437
3437
|
}
|
|
3438
3438
|
function draftChange(value) {
|
|
3439
|
-
const source = record$
|
|
3439
|
+
const source = record$2(value);
|
|
3440
3440
|
if (source.version != 1) return invalidResponse();
|
|
3441
3441
|
return {
|
|
3442
3442
|
revision: revisionMetadata(source.revision),
|
|
@@ -3444,7 +3444,7 @@ function draftChange(value) {
|
|
|
3444
3444
|
};
|
|
3445
3445
|
}
|
|
3446
3446
|
function draftSync(value) {
|
|
3447
|
-
const source = record$
|
|
3447
|
+
const source = record$2(value);
|
|
3448
3448
|
if (source.version != 1 || source.kind != "snapshot") return invalidResponse();
|
|
3449
3449
|
return {
|
|
3450
3450
|
draft: draft(source.draft),
|
|
@@ -3474,7 +3474,7 @@ function runStatus(value) {
|
|
|
3474
3474
|
return typeof value == "string" && runStatusSet.has(value) ? value : invalidResponse();
|
|
3475
3475
|
}
|
|
3476
3476
|
function run$7(value) {
|
|
3477
|
-
const source = record$
|
|
3477
|
+
const source = record$2(value);
|
|
3478
3478
|
const kind = source.source;
|
|
3479
3479
|
const startedAt = source.startedAt;
|
|
3480
3480
|
const finishedAt = source.finishedAt;
|
|
@@ -3494,7 +3494,7 @@ function run$7(value) {
|
|
|
3494
3494
|
};
|
|
3495
3495
|
}
|
|
3496
3496
|
function runWaiting(value) {
|
|
3497
|
-
const source = record$
|
|
3497
|
+
const source = record$2(value);
|
|
3498
3498
|
requiredFields(source, [
|
|
3499
3499
|
"actions",
|
|
3500
3500
|
"expiresAt",
|
|
@@ -3516,7 +3516,7 @@ function runWaiting(value) {
|
|
|
3516
3516
|
};
|
|
3517
3517
|
}
|
|
3518
3518
|
function workflowIdentity(value) {
|
|
3519
|
-
const ref = record$
|
|
3519
|
+
const ref = record$2(value);
|
|
3520
3520
|
return {
|
|
3521
3521
|
flowId: string(ref.flowId),
|
|
3522
3522
|
runId: string(ref.runId),
|
|
@@ -3526,7 +3526,7 @@ function workflowIdentity(value) {
|
|
|
3526
3526
|
};
|
|
3527
3527
|
}
|
|
3528
3528
|
function runInitiator(value) {
|
|
3529
|
-
const source = record$
|
|
3529
|
+
const source = record$2(value);
|
|
3530
3530
|
if (![
|
|
3531
3531
|
"workbench",
|
|
3532
3532
|
"cli",
|
|
@@ -3541,7 +3541,7 @@ function runInitiator(value) {
|
|
|
3541
3541
|
};
|
|
3542
3542
|
}
|
|
3543
3543
|
function runDetails(value) {
|
|
3544
|
-
const source = record$
|
|
3544
|
+
const source = record$2(value);
|
|
3545
3545
|
const summary = run$7(source);
|
|
3546
3546
|
const eventsExpiresAt = source.eventsExpiresAt;
|
|
3547
3547
|
if (eventsExpiresAt != null && typeof eventsExpiresAt != "string") return invalidResponse();
|
|
@@ -3565,7 +3565,7 @@ function runDetails(value) {
|
|
|
3565
3565
|
...errorHandling(source),
|
|
3566
3566
|
...source.triggerNodeId === void 0 ? {} : { triggerNodeId: string(source.triggerNodeId) },
|
|
3567
3567
|
...source.caller === void 0 ? {} : { caller: workflowIdentity(source.caller) },
|
|
3568
|
-
...source.calls === void 0 ? {} : { calls: source.calls.map((item) => Object.assign(workflowIdentity(item), { status: record$
|
|
3568
|
+
...source.calls === void 0 ? {} : { calls: source.calls.map((item) => Object.assign(workflowIdentity(item), { status: record$2(item).status === null ? null : runStatus(record$2(item).status) })) },
|
|
3569
3569
|
closureDigest: string(source.closureDigest),
|
|
3570
3570
|
engineContract: string(source.engineContract),
|
|
3571
3571
|
engineDigest: string(source.engineDigest),
|
|
@@ -3592,7 +3592,7 @@ function runDetails(value) {
|
|
|
3592
3592
|
}
|
|
3593
3593
|
}
|
|
3594
3594
|
function runPage(value) {
|
|
3595
|
-
const source = record$
|
|
3595
|
+
const source = record$2(value);
|
|
3596
3596
|
const nextCursor = source.nextCursor;
|
|
3597
3597
|
if (source.version != 1 || !Array.isArray(source.runs)) return invalidResponse();
|
|
3598
3598
|
if (nextCursor != null && typeof nextCursor != "string") return invalidResponse();
|
|
@@ -3604,7 +3604,7 @@ function runPage(value) {
|
|
|
3604
3604
|
};
|
|
3605
3605
|
}
|
|
3606
3606
|
function runCancellation(value) {
|
|
3607
|
-
const source = record$
|
|
3607
|
+
const source = record$2(value);
|
|
3608
3608
|
const status = runStatus(source.status);
|
|
3609
3609
|
if (source.version != 1 || typeof source.cancelAccepted != "boolean" || status == "queued" || status == "starting" || status == "running" || status == "waiting") return invalidResponse();
|
|
3610
3610
|
return {
|
|
@@ -3615,7 +3615,7 @@ function runCancellation(value) {
|
|
|
3615
3615
|
};
|
|
3616
3616
|
}
|
|
3617
3617
|
function waitResolution(value) {
|
|
3618
|
-
const source = record$
|
|
3618
|
+
const source = record$2(value);
|
|
3619
3619
|
requiredFields(source, [
|
|
3620
3620
|
"action",
|
|
3621
3621
|
"comment",
|
|
@@ -3641,7 +3641,7 @@ function waitResolution(value) {
|
|
|
3641
3641
|
};
|
|
3642
3642
|
}
|
|
3643
3643
|
function runResult(value) {
|
|
3644
|
-
const source = record$
|
|
3644
|
+
const source = record$2(value);
|
|
3645
3645
|
const status = source.status;
|
|
3646
3646
|
if (source.version != 1) return invalidResponse();
|
|
3647
3647
|
const base = {
|
|
@@ -3662,7 +3662,7 @@ function runResult(value) {
|
|
|
3662
3662
|
status: "canceled"
|
|
3663
3663
|
};
|
|
3664
3664
|
if (status == "failed") {
|
|
3665
|
-
const error = record$
|
|
3665
|
+
const error = record$2(source.error);
|
|
3666
3666
|
return {
|
|
3667
3667
|
...base,
|
|
3668
3668
|
error: runFailure(error),
|
|
@@ -3670,7 +3670,7 @@ function runResult(value) {
|
|
|
3670
3670
|
};
|
|
3671
3671
|
}
|
|
3672
3672
|
if (status == "indeterminate") {
|
|
3673
|
-
const error = record$
|
|
3673
|
+
const error = record$2(source.error);
|
|
3674
3674
|
return {
|
|
3675
3675
|
...base,
|
|
3676
3676
|
error: runFailure(error),
|
|
@@ -3680,7 +3680,7 @@ function runResult(value) {
|
|
|
3680
3680
|
return invalidResponse();
|
|
3681
3681
|
}
|
|
3682
3682
|
function errorHandling(source) {
|
|
3683
|
-
const errorSource = source.errorSource == null ? void 0 : record$
|
|
3683
|
+
const errorSource = source.errorSource == null ? void 0 : record$2(source.errorSource);
|
|
3684
3684
|
if (source.errorDispatches != null && !Array.isArray(source.errorDispatches)) return invalidResponse();
|
|
3685
3685
|
return {
|
|
3686
3686
|
...errorSource == null ? {} : { errorSource: {
|
|
@@ -3688,7 +3688,7 @@ function errorHandling(source) {
|
|
|
3688
3688
|
runId: string(errorSource.runId)
|
|
3689
3689
|
} },
|
|
3690
3690
|
...source.errorDispatches == null ? {} : { errorDispatches: source.errorDispatches.map((value) => {
|
|
3691
|
-
const dispatch = record$
|
|
3691
|
+
const dispatch = record$2(value);
|
|
3692
3692
|
const flowId = string(dispatch.flowId);
|
|
3693
3693
|
switch (dispatch.status) {
|
|
3694
3694
|
case "pending": return {
|
|
@@ -3747,7 +3747,7 @@ function normalizeFlowQuery(query = {}) {
|
|
|
3747
3747
|
};
|
|
3748
3748
|
}
|
|
3749
3749
|
function decodeTag(value) {
|
|
3750
|
-
const source = record$
|
|
3750
|
+
const source = record$2(value);
|
|
3751
3751
|
if (source.version != 1) return invalidResponse();
|
|
3752
3752
|
return {
|
|
3753
3753
|
tagId: string(source.tagId),
|
|
@@ -3756,7 +3756,7 @@ function decodeTag(value) {
|
|
|
3756
3756
|
};
|
|
3757
3757
|
}
|
|
3758
3758
|
function decodeTagListItem(value) {
|
|
3759
|
-
const source = record$
|
|
3759
|
+
const source = record$2(value);
|
|
3760
3760
|
const referenceCount = integer(source.referenceCount);
|
|
3761
3761
|
if (referenceCount < 0) return invalidResponse();
|
|
3762
3762
|
return {
|
|
@@ -3770,14 +3770,14 @@ function isRunTerminalEvent(event) {
|
|
|
3770
3770
|
return event?.kind == "run.completed" || event?.kind == "run.failed" || event?.kind == "run.canceled" || event?.kind == "run.indeterminate";
|
|
3771
3771
|
}
|
|
3772
3772
|
function decodeRunEvent(value) {
|
|
3773
|
-
const source = record$
|
|
3773
|
+
const source = record$2(value);
|
|
3774
3774
|
const sequence = integer(source.sequence);
|
|
3775
3775
|
if (sequence < 0) return invalidResponse();
|
|
3776
3776
|
const base = {
|
|
3777
3777
|
createdAt: string(source.createdAt),
|
|
3778
3778
|
sequence
|
|
3779
3779
|
};
|
|
3780
|
-
const payload = record$
|
|
3780
|
+
const payload = record$2(source.payload);
|
|
3781
3781
|
const kind = source.kind;
|
|
3782
3782
|
switch (kind) {
|
|
3783
3783
|
case "run.queued": return {
|
|
@@ -3871,7 +3871,7 @@ function decodeRunEvent(value) {
|
|
|
3871
3871
|
switch (kind) {
|
|
3872
3872
|
case "node.started": {
|
|
3873
3873
|
const nodeKind = payload.nodeKind;
|
|
3874
|
-
if (nodeKind !== void 0 && nodeKind !== "approval" && nodeKind !== "condition" && nodeKind !== "connector" && nodeKind !== "javascript" && nodeKind !== "decision" && nodeKind !== "openapi" && nodeKind !== "http-request" && nodeKind !== "
|
|
3874
|
+
if (nodeKind !== void 0 && nodeKind !== "approval" && nodeKind !== "condition" && nodeKind !== "connector" && nodeKind !== "javascript" && nodeKind !== "decision" && nodeKind !== "openapi" && nodeKind !== "http-request" && nodeKind !== "skip-duplicates" && nodeKind !== "llm" && nodeKind !== "agent" && nodeKind !== "value" && nodeKind !== "outputs" && nodeKind !== "webhook-response" && nodeKind !== "workflow" && nodeKind !== "wait") return invalidResponse();
|
|
3875
3875
|
return {
|
|
3876
3876
|
...base,
|
|
3877
3877
|
kind,
|
|
@@ -3888,19 +3888,19 @@ function decodeRunEvent(value) {
|
|
|
3888
3888
|
kind,
|
|
3889
3889
|
payload: {
|
|
3890
3890
|
...node,
|
|
3891
|
-
...payload.systemOutputs === void 0 ? {} : { systemOutputs: Object.fromEntries(Object.entries(record$
|
|
3892
|
-
outputs: Object.fromEntries(Object.entries(record$
|
|
3891
|
+
...payload.systemOutputs === void 0 ? {} : { systemOutputs: Object.fromEntries(Object.entries(record$2(payload.systemOutputs)).map(([key, item]) => [key, jsonValue(item)])) },
|
|
3892
|
+
outputs: Object.fromEntries(Object.entries(record$2(payload.outputs)).map(([key, item]) => [key, jsonValue(item)]))
|
|
3893
3893
|
}
|
|
3894
3894
|
};
|
|
3895
3895
|
case "node.failed": {
|
|
3896
|
-
const error = record$
|
|
3896
|
+
const error = record$2(payload.error);
|
|
3897
3897
|
return {
|
|
3898
3898
|
...base,
|
|
3899
3899
|
kind,
|
|
3900
3900
|
payload: {
|
|
3901
3901
|
...node,
|
|
3902
3902
|
...payload.handled === true ? { handled: true } : {},
|
|
3903
|
-
...payload.systemOutputs === void 0 ? {} : { systemOutputs: Object.fromEntries(Object.entries(record$
|
|
3903
|
+
...payload.systemOutputs === void 0 ? {} : { systemOutputs: Object.fromEntries(Object.entries(record$2(payload.systemOutputs)).map(([key, item]) => [key, jsonValue(item)])) },
|
|
3904
3904
|
error: {
|
|
3905
3905
|
code: string(error.code),
|
|
3906
3906
|
message: string(error.message)
|
|
@@ -3930,7 +3930,7 @@ function decodeRunEvent(value) {
|
|
|
3930
3930
|
}
|
|
3931
3931
|
};
|
|
3932
3932
|
case "node.artifact": {
|
|
3933
|
-
const artifact = record$
|
|
3933
|
+
const artifact = record$2(payload.artifact);
|
|
3934
3934
|
const size = integer(artifact.size);
|
|
3935
3935
|
const digest = string(artifact.digest);
|
|
3936
3936
|
if (artifact.kind != "artifact" || size < 0 || !/^sha256:[0-9a-f]{64}$/.test(digest)) return invalidResponse();
|
|
@@ -3959,7 +3959,7 @@ function eventProgress(value) {
|
|
|
3959
3959
|
return typeof value == "number" && Number.isFinite(value) && value >= 0 && value <= 100 ? value : invalidResponse();
|
|
3960
3960
|
}
|
|
3961
3961
|
function runEvents(value) {
|
|
3962
|
-
const source = record$
|
|
3962
|
+
const source = record$2(value);
|
|
3963
3963
|
const eventsExpiresAt = source.eventsExpiresAt;
|
|
3964
3964
|
const nextAfter = integer(source.nextAfter);
|
|
3965
3965
|
if (source.version != 1 || !Array.isArray(source.events) || typeof source.done != "boolean" || typeof source.historyComplete != "boolean") return invalidResponse();
|
|
@@ -3985,7 +3985,7 @@ var ControlClient = class {
|
|
|
3985
3985
|
this.requestControl = requestControl;
|
|
3986
3986
|
}
|
|
3987
3987
|
async loadOpenApiDocument(url, signal) {
|
|
3988
|
-
const result = record$
|
|
3988
|
+
const result = record$2(await this.request("/v1/openapi/document", {
|
|
3989
3989
|
method: "POST",
|
|
3990
3990
|
body: JSON.stringify({
|
|
3991
3991
|
url,
|
|
@@ -4012,7 +4012,7 @@ var ControlClient = class {
|
|
|
4012
4012
|
return decodeEventSources(await this.request("/v1/event-sources" + (flowId == null ? "" : `?flowId=${segment$1(flowId)}`), { signal }));
|
|
4013
4013
|
}
|
|
4014
4014
|
async listEventSourceConnections(teamId, signal, kind = "feishu") {
|
|
4015
|
-
const source = record$
|
|
4015
|
+
const source = record$2(await this.request(`/v1/event-sources/connections?kind=${kind}${teamId == null ? "" : `&teamId=${segment$1(teamId)}`}`, { signal }));
|
|
4016
4016
|
requiredFields(source, ["version", "connections"]);
|
|
4017
4017
|
if (source.version != 1 || !Array.isArray(source.connections)) return invalidResponse();
|
|
4018
4018
|
return source.connections.map(connection);
|
|
@@ -4039,7 +4039,7 @@ var ControlClient = class {
|
|
|
4039
4039
|
});
|
|
4040
4040
|
}
|
|
4041
4041
|
async listVariables() {
|
|
4042
|
-
const source = record$
|
|
4042
|
+
const source = record$2(await this.request("/v1/variables"));
|
|
4043
4043
|
requiredFields(source, ["variables", "version"]);
|
|
4044
4044
|
if (source.version != 1 || !Array.isArray(source.variables)) return invalidResponse();
|
|
4045
4045
|
return {
|
|
@@ -4071,7 +4071,7 @@ var ControlClient = class {
|
|
|
4071
4071
|
}));
|
|
4072
4072
|
}
|
|
4073
4073
|
async deleteVariable(name) {
|
|
4074
|
-
const source = record$
|
|
4074
|
+
const source = record$2(await this.request(`/v1/variables/${segment$1(name)}`, { method: "DELETE" }));
|
|
4075
4075
|
requiredFields(source, ["version"]);
|
|
4076
4076
|
if (source.version != 1) return invalidResponse();
|
|
4077
4077
|
}
|
|
@@ -4096,12 +4096,13 @@ var ControlClient = class {
|
|
|
4096
4096
|
})
|
|
4097
4097
|
}));
|
|
4098
4098
|
}
|
|
4099
|
-
async createFlow(name, idempotencyKey = `flow-${randomId()}`, teamId, tagIds) {
|
|
4099
|
+
async createFlow(name, idempotencyKey = `flow-${randomId()}`, teamId, tagIds, initialPresentation) {
|
|
4100
4100
|
return flow(await this.request("/v1/flows", {
|
|
4101
4101
|
body: JSON.stringify({
|
|
4102
4102
|
name,
|
|
4103
4103
|
...teamId == null ? {} : { teamId },
|
|
4104
4104
|
...tagIds == null ? {} : { tagIds },
|
|
4105
|
+
...initialPresentation == null ? {} : { presentation: initialPresentation },
|
|
4105
4106
|
version: 1
|
|
4106
4107
|
}),
|
|
4107
4108
|
headers: { "idempotency-key": idempotencyKey },
|
|
@@ -4109,7 +4110,7 @@ var ControlClient = class {
|
|
|
4109
4110
|
}));
|
|
4110
4111
|
}
|
|
4111
4112
|
async broadcastCanvas(flowId, command) {
|
|
4112
|
-
const source = record$
|
|
4113
|
+
const source = record$2(await this.request(`/v1/flows/${segment$1(flowId)}/canvas`, {
|
|
4113
4114
|
method: "POST",
|
|
4114
4115
|
body: JSON.stringify({
|
|
4115
4116
|
version: 1,
|
|
@@ -4132,12 +4133,12 @@ var ControlClient = class {
|
|
|
4132
4133
|
return flow(await this.request(`/v1/flows/${segment$1(flowId)}`));
|
|
4133
4134
|
}
|
|
4134
4135
|
async getErrorListeners(flowId, signal) {
|
|
4135
|
-
const source = record$
|
|
4136
|
+
const source = record$2(await this.request(`/v1/flows/${segment$1(flowId)}/error-listeners`, { signal }));
|
|
4136
4137
|
if (source.version != 1 || !Array.isArray(source.listeners)) return invalidResponse();
|
|
4137
4138
|
return source.listeners.map(errorListener);
|
|
4138
4139
|
}
|
|
4139
4140
|
async listTags(signal) {
|
|
4140
|
-
const source = record$
|
|
4141
|
+
const source = record$2(await this.request("/v1/tags", { signal }));
|
|
4141
4142
|
if (source.version != 1 || !Array.isArray(source.tags)) return invalidResponse();
|
|
4142
4143
|
return {
|
|
4143
4144
|
tags: source.tags.map(decodeTagListItem),
|
|
@@ -4163,7 +4164,7 @@ var ControlClient = class {
|
|
|
4163
4164
|
}));
|
|
4164
4165
|
}
|
|
4165
4166
|
async deleteTag(tagId) {
|
|
4166
|
-
if (record$
|
|
4167
|
+
if (record$2(await this.request(`/v1/tags/${segment$1(tagId)}`, { method: "DELETE" })).version != 1) invalidResponse();
|
|
4167
4168
|
}
|
|
4168
4169
|
async setFlowTags(flowId, tagIds) {
|
|
4169
4170
|
return flow(await this.request(`/v1/flows/${segment$1(flowId)}/tags`, {
|
|
@@ -4183,16 +4184,28 @@ var ControlClient = class {
|
|
|
4183
4184
|
})
|
|
4184
4185
|
}));
|
|
4185
4186
|
}
|
|
4186
|
-
async getFlowState(flowId, scope
|
|
4187
|
-
const result = flowStateViewSchema.safeParse(await this.request(`/v1/flows/${segment$1(flowId)}/state?scope=${scope}
|
|
4187
|
+
async getFlowState(flowId, scope) {
|
|
4188
|
+
const result = flowStateViewSchema.safeParse(await this.request(`/v1/flows/${segment$1(flowId)}/state?scope=${scope}`));
|
|
4188
4189
|
return result.success && result.data.scope === scope ? result.data : invalidResponse();
|
|
4189
4190
|
}
|
|
4191
|
+
async getFlowStateValues(flowId, scope, keys, signal) {
|
|
4192
|
+
const result = flowStateValuesSchema.safeParse(await this.request(`/v1/flows/${segment$1(flowId)}/state/read`, {
|
|
4193
|
+
method: "POST",
|
|
4194
|
+
body: JSON.stringify({
|
|
4195
|
+
version: 1,
|
|
4196
|
+
scope,
|
|
4197
|
+
keys
|
|
4198
|
+
}),
|
|
4199
|
+
signal
|
|
4200
|
+
}));
|
|
4201
|
+
return result.success && result.data.scope === scope && result.data.values.length === keys.length && result.data.values.every((item, index) => item.key === keys[index]) ? result.data : invalidResponse();
|
|
4202
|
+
}
|
|
4190
4203
|
async clearFlowState(flowId, scope, key) {
|
|
4191
|
-
const source = record$
|
|
4204
|
+
const source = record$2(await this.request(`/v1/flows/${segment$1(flowId)}/state?scope=${scope}${key == null ? "" : `&key=${encodeURIComponent(key)}`}`, { method: "DELETE" }));
|
|
4192
4205
|
if (source.version !== 1 || source.cleared !== true) invalidResponse();
|
|
4193
4206
|
}
|
|
4194
4207
|
async clearFlowDedupe(flowId, scope, space) {
|
|
4195
|
-
const source = record$
|
|
4208
|
+
const source = record$2(await this.request(`/v1/flows/${segment$1(flowId)}/dedupe?scope=${scope}&space=${encodeURIComponent(space)}`, { method: "DELETE" }));
|
|
4196
4209
|
if (source.version !== 1 || source.cleared !== true) invalidResponse();
|
|
4197
4210
|
}
|
|
4198
4211
|
async renameFlow(flowId, name) {
|
|
@@ -4202,12 +4215,12 @@ var ControlClient = class {
|
|
|
4202
4215
|
return flow(await this.request(`/v1/flows/${segment$1(flowId)}`, { method: "DELETE" }));
|
|
4203
4216
|
}
|
|
4204
4217
|
async listTriggerKeys(signal, locale) {
|
|
4205
|
-
const source = record$
|
|
4218
|
+
const source = record$2(await this.request(`/v1/trigger-keys${locale == null ? "" : `?locale=${encodeURIComponent(locale)}`}`, { signal }));
|
|
4206
4219
|
if (source.version != 1 || !Array.isArray(source.keys)) return invalidResponse();
|
|
4207
4220
|
return source.keys.map(triggerKeySummary);
|
|
4208
4221
|
}
|
|
4209
4222
|
async listTriggerDefinitions(signal) {
|
|
4210
|
-
const source = record$
|
|
4223
|
+
const source = record$2(await this.request("/v1/trigger-keys/catalog", { signal }));
|
|
4211
4224
|
if (source.version != 2 || !Array.isArray(source.definitions)) return invalidResponse();
|
|
4212
4225
|
return source.definitions.map(triggerKey);
|
|
4213
4226
|
}
|
|
@@ -4249,12 +4262,12 @@ var ControlClient = class {
|
|
|
4249
4262
|
};
|
|
4250
4263
|
}
|
|
4251
4264
|
async getTriggerKey(key, signal) {
|
|
4252
|
-
const source = record$
|
|
4265
|
+
const source = record$2(await this.request(`/v1/trigger-keys/${segment$1(key)}`, { signal }));
|
|
4253
4266
|
if (source.version != 1) return invalidResponse();
|
|
4254
4267
|
return triggerKey(source.definition);
|
|
4255
4268
|
}
|
|
4256
4269
|
async listFlowTriggerBindings(flowId, signal) {
|
|
4257
|
-
const source = record$
|
|
4270
|
+
const source = record$2(await this.request(`/v1/flows/${segment$1(flowId)}/triggers`, { signal }));
|
|
4258
4271
|
if (source.version != 1 || string(source.flowId) != flowId || !Array.isArray(source.bindings)) return invalidResponse();
|
|
4259
4272
|
return source.bindings.map(triggerBinding);
|
|
4260
4273
|
}
|
|
@@ -4275,7 +4288,7 @@ var ControlClient = class {
|
|
|
4275
4288
|
}));
|
|
4276
4289
|
}
|
|
4277
4290
|
async getEditor(flowId) {
|
|
4278
|
-
const source = record$
|
|
4291
|
+
const source = record$2(await this.request(`/v1/flows/${segment$1(flowId)}/editor`));
|
|
4279
4292
|
if (source.version != 1) return invalidResponse();
|
|
4280
4293
|
const result = {
|
|
4281
4294
|
flow: flow(source.flow),
|
|
@@ -4288,7 +4301,7 @@ var ControlClient = class {
|
|
|
4288
4301
|
return result;
|
|
4289
4302
|
}
|
|
4290
4303
|
async getPublicationPresentation(flowId, publicationId, signal) {
|
|
4291
|
-
const source = record$
|
|
4304
|
+
const source = record$2(await this.request(`/v1/flows/${segment$1(flowId)}/publications/${segment$1(publicationId)}/presentation`, { signal }));
|
|
4292
4305
|
if (source.version != 1) return invalidResponse();
|
|
4293
4306
|
return {
|
|
4294
4307
|
version: 1,
|
|
@@ -4308,11 +4321,11 @@ var ControlClient = class {
|
|
|
4308
4321
|
return draft(await this.request(`/v1/flows/${segment$1(flowId)}/revisions/${segment$1(revisionId)}`, { signal }));
|
|
4309
4322
|
}
|
|
4310
4323
|
async listTriggerConfigOptions(flowId, nodeId, field, signal) {
|
|
4311
|
-
const source = record$
|
|
4324
|
+
const source = record$2(await this.request(`/v1/flows/${segment$1(flowId)}/triggers/${segment$1(nodeId)}/options/${segment$1(field)}`, { signal }));
|
|
4312
4325
|
requiredFields(source, ["options", "version"]);
|
|
4313
4326
|
if (source.version != 1 || !Array.isArray(source.options) || source.options.length > 1e3) return invalidResponse();
|
|
4314
4327
|
return source.options.map((value) => {
|
|
4315
|
-
const item = record$
|
|
4328
|
+
const item = record$2(value);
|
|
4316
4329
|
requiredFields(item, [
|
|
4317
4330
|
"value",
|
|
4318
4331
|
"label",
|
|
@@ -4331,7 +4344,7 @@ var ControlClient = class {
|
|
|
4331
4344
|
});
|
|
4332
4345
|
}
|
|
4333
4346
|
async listConnectorTeams(signal) {
|
|
4334
|
-
const source = record$
|
|
4347
|
+
const source = record$2(await this.request("/v1/connector/teams", { signal }));
|
|
4335
4348
|
requiredFields(source, [
|
|
4336
4349
|
"enabled",
|
|
4337
4350
|
"teams",
|
|
@@ -4341,7 +4354,7 @@ var ControlClient = class {
|
|
|
4341
4354
|
return {
|
|
4342
4355
|
enabled: source.enabled,
|
|
4343
4356
|
teams: source.teams.map((value) => {
|
|
4344
|
-
const team = record$
|
|
4357
|
+
const team = record$2(value);
|
|
4345
4358
|
requiredFields(team, [
|
|
4346
4359
|
"id",
|
|
4347
4360
|
"name",
|
|
@@ -4451,7 +4464,7 @@ var ControlClient = class {
|
|
|
4451
4464
|
const parameters = new URLSearchParams();
|
|
4452
4465
|
if (flowId != null) parameters.set("flowId", flowId);
|
|
4453
4466
|
if (teamId != null) parameters.set("teamId", teamId);
|
|
4454
|
-
const source = record$
|
|
4467
|
+
const source = record$2(await this.request(`/v1/connector/connections/${segment$1(serviceId)}/page${parameters.size == 0 ? "" : `?${parameters}`}`, {
|
|
4455
4468
|
body: JSON.stringify({ version: 1 }),
|
|
4456
4469
|
method: "POST"
|
|
4457
4470
|
}));
|
|
@@ -4478,7 +4491,7 @@ var ControlClient = class {
|
|
|
4478
4491
|
}));
|
|
4479
4492
|
}
|
|
4480
4493
|
async authoringSchema(flowId, query) {
|
|
4481
|
-
return record$
|
|
4494
|
+
return record$2(await this.request(`/v1/flows/${segment$1(flowId)}/authoring/schema`, {
|
|
4482
4495
|
method: "POST",
|
|
4483
4496
|
body: JSON.stringify(query)
|
|
4484
4497
|
}));
|
|
@@ -4674,7 +4687,7 @@ var ControlClient = class {
|
|
|
4674
4687
|
const query = Object.entries(parameters).map(([key, value]) => `${segment$1(key)}=${segment$1(value)}`).join("&");
|
|
4675
4688
|
const suffix = query == "" ? "" : `?${query}`;
|
|
4676
4689
|
return this.connectorRequest(`/v1/connector/actions${suffix}`, "actions", signal, (value) => {
|
|
4677
|
-
const source = record$
|
|
4690
|
+
const source = record$2(value);
|
|
4678
4691
|
requiredFields(source, ["actions", "version"]);
|
|
4679
4692
|
if (source.version != 1 || !Array.isArray(source.actions)) return invalidResponse();
|
|
4680
4693
|
return source.actions.map(connectorAction);
|
|
@@ -4697,9 +4710,9 @@ var ControlClient = class {
|
|
|
4697
4710
|
} catch {
|
|
4698
4711
|
return invalidResponse();
|
|
4699
4712
|
}
|
|
4700
|
-
const error = record$
|
|
4701
|
-
const source = error == null ? void 0 : record$
|
|
4702
|
-
throw new ApiError(response.status, typeof source?.code == "string" ? source.code : "request.failed", typeof source?.message == "string" ? source.message : `Request failed with status ${response.status}.`, source?.details == null ? void 0 : record$
|
|
4713
|
+
const error = record$2(value).error;
|
|
4714
|
+
const source = error == null ? void 0 : record$2(error);
|
|
4715
|
+
throw new ApiError(response.status, typeof source?.code == "string" ? source.code : "request.failed", typeof source?.message == "string" ? source.message : `Request failed with status ${response.status}.`, source?.details == null ? void 0 : record$2(source.details));
|
|
4703
4716
|
}
|
|
4704
4717
|
return response;
|
|
4705
4718
|
}
|
|
@@ -7281,26 +7294,20 @@ var resources = {
|
|
|
7281
7294
|
},
|
|
7282
7295
|
flowState: {
|
|
7283
7296
|
"title": "Persistent data",
|
|
7284
|
-
"nodeTitle": "
|
|
7285
|
-
"warning": "History is
|
|
7286
|
-
"field": "Identity
|
|
7287
|
-
"mode": "Mode",
|
|
7288
|
-
"new": "New identities",
|
|
7289
|
-
"increasing": "Increasing watermark",
|
|
7290
|
-
"space": "History scope",
|
|
7291
|
-
"nodeSpace": "This node",
|
|
7292
|
-
"flowSpace": "Shared Flow space",
|
|
7297
|
+
"nodeTitle": "Skip Duplicates",
|
|
7298
|
+
"warning": "History is saved after this Run succeeds. Failed or canceled Runs allow these items to be processed again.",
|
|
7299
|
+
"field": "Identity fields",
|
|
7293
7300
|
"values": "Saved data",
|
|
7294
7301
|
"spaces": "Deduplication records",
|
|
7295
7302
|
"clearAll": "Clear all",
|
|
7296
7303
|
"delete": "Delete",
|
|
7297
7304
|
"clear": "Clear",
|
|
7298
7305
|
"orphaned": "Orphaned in this view",
|
|
7299
|
-
"
|
|
7300
|
-
"nearLimit": "Flow deduplication history is at least 80% full. Clear history or use watermark mode.",
|
|
7306
|
+
"nearLimit": "Flow history is at least 80% full. Clear unused history.",
|
|
7301
7307
|
"history": "History",
|
|
7302
7308
|
"scope": "Scope",
|
|
7303
|
-
"
|
|
7309
|
+
"showValue": "View value",
|
|
7310
|
+
"hideValue": "Hide value",
|
|
7304
7311
|
"refresh": "Refresh",
|
|
7305
7312
|
"confirmLive": "This clears production state immediately. Future Live Runs may process these items again. Continue?",
|
|
7306
7313
|
"cancel": "Cancel",
|
|
@@ -7315,8 +7322,16 @@ var resources = {
|
|
|
7315
7322
|
"entries": "{{count}} / {{limit}} entries",
|
|
7316
7323
|
"records": "{{count}} records",
|
|
7317
7324
|
"valueLimit": "Each JSON value allows up to {{size}} UTF-8 bytes.",
|
|
7318
|
-
"sharedLimit": "All spaces share the
|
|
7319
|
-
"fieldPlaceholder": "Whole item"
|
|
7325
|
+
"sharedLimit": "All spaces share the identity limit. Spaces: {{count}} / {{limit}}. Pending records reserve capacity.",
|
|
7326
|
+
"fieldPlaceholder": "Whole item (string or number)",
|
|
7327
|
+
"addField": "Add field",
|
|
7328
|
+
"removeField": "Remove field {{index}}",
|
|
7329
|
+
"fieldIndex": "Identity field {{index}}",
|
|
7330
|
+
"invalidFields": "Use distinct, nonempty field paths such as id or record.id.",
|
|
7331
|
+
"pendingRecords": "{{count}} pending",
|
|
7332
|
+
"pathPlaceholder": "id or record.id",
|
|
7333
|
+
"saveFailed": "Unable to save identity fields.",
|
|
7334
|
+
"retry": "Retry"
|
|
7320
7335
|
}
|
|
7321
7336
|
},
|
|
7322
7337
|
"zh-CN": {
|
|
@@ -8634,26 +8649,20 @@ var resources = {
|
|
|
8634
8649
|
},
|
|
8635
8650
|
flowState: {
|
|
8636
8651
|
"title": "持久化数据",
|
|
8637
|
-
"nodeTitle": "
|
|
8638
|
-
"warning": "
|
|
8652
|
+
"nodeTitle": "跳过重复",
|
|
8653
|
+
"warning": "记录在本次 Run 成功后保存。失败或取消后,下次仍可处理这些条目。",
|
|
8639
8654
|
"field": "标识字段",
|
|
8640
|
-
"mode": "模式",
|
|
8641
|
-
"new": "新标识",
|
|
8642
|
-
"increasing": "递增水位",
|
|
8643
|
-
"space": "记录范围",
|
|
8644
|
-
"nodeSpace": "当前节点",
|
|
8645
|
-
"flowSpace": "Flow 共享空间",
|
|
8646
8655
|
"values": "保存的数据",
|
|
8647
8656
|
"spaces": "去重记录",
|
|
8648
8657
|
"clearAll": "清空",
|
|
8649
8658
|
"delete": "删除",
|
|
8650
8659
|
"clear": "清空",
|
|
8651
8660
|
"orphaned": "当前视图中的遗留空间",
|
|
8652
|
-
"
|
|
8653
|
-
"nearLimit": "该流程的去重记录已使用至少 80%。请清理历史记录或使用水位模式。",
|
|
8661
|
+
"nearLimit": "该流程的去重记录已使用至少 80%。请清理不再需要的记录。",
|
|
8654
8662
|
"history": "历史记录",
|
|
8655
8663
|
"scope": "作用域",
|
|
8656
|
-
"
|
|
8664
|
+
"showValue": "查看值",
|
|
8665
|
+
"hideValue": "收起值",
|
|
8657
8666
|
"refresh": "刷新",
|
|
8658
8667
|
"confirmLive": "这将立即清空生产状态,后续 Live Run 可能再次处理这些条目。是否继续?",
|
|
8659
8668
|
"cancel": "取消",
|
|
@@ -8668,8 +8677,16 @@ var resources = {
|
|
|
8668
8677
|
"entries": "{{count}} / {{limit}} 条",
|
|
8669
8678
|
"records": "{{count}} 条记录",
|
|
8670
8679
|
"valueLimit": "每条 JSON 值最多 {{size}} 个 UTF-8 字节。",
|
|
8671
|
-
"sharedLimit": "所有空间共享记录额度。空间:{{count}} / {{limit}}
|
|
8672
|
-
"fieldPlaceholder": "
|
|
8680
|
+
"sharedLimit": "所有空间共享记录额度。空间:{{count}} / {{limit}} 个。待提交记录会预占额度。",
|
|
8681
|
+
"fieldPlaceholder": "整个条目(字符串或数字)",
|
|
8682
|
+
"addField": "添加字段",
|
|
8683
|
+
"removeField": "删除第 {{index}} 个字段",
|
|
8684
|
+
"fieldIndex": "第 {{index}} 个标识字段",
|
|
8685
|
+
"invalidFields": "请填写不重复的字段路径,例如 id 或 record.id。",
|
|
8686
|
+
"pendingRecords": "{{count}} 条待提交",
|
|
8687
|
+
"pathPlaceholder": "id 或 record.id",
|
|
8688
|
+
"saveFailed": "无法保存标识字段。",
|
|
8689
|
+
"retry": "重试"
|
|
8673
8690
|
}
|
|
8674
8691
|
},
|
|
8675
8692
|
"zh-TW": {
|
|
@@ -9987,26 +10004,20 @@ var resources = {
|
|
|
9987
10004
|
},
|
|
9988
10005
|
flowState: {
|
|
9989
10006
|
"title": "持久化資料",
|
|
9990
|
-
"nodeTitle": "
|
|
9991
|
-
"warning": "
|
|
10007
|
+
"nodeTitle": "跳過重複",
|
|
10008
|
+
"warning": "記錄在本次 Run 成功後儲存。失敗或取消後,下次仍可處理這些項目。",
|
|
9992
10009
|
"field": "識別欄位",
|
|
9993
|
-
"mode": "模式",
|
|
9994
|
-
"new": "新識別值",
|
|
9995
|
-
"increasing": "遞增水位",
|
|
9996
|
-
"space": "記錄範圍",
|
|
9997
|
-
"nodeSpace": "目前節點",
|
|
9998
|
-
"flowSpace": "Flow 共用空間",
|
|
9999
10010
|
"values": "儲存的資料",
|
|
10000
10011
|
"spaces": "去重記錄",
|
|
10001
10012
|
"clearAll": "清空",
|
|
10002
10013
|
"delete": "刪除",
|
|
10003
10014
|
"clear": "清空",
|
|
10004
10015
|
"orphaned": "目前檢視中的遺留空間",
|
|
10005
|
-
"
|
|
10006
|
-
"nearLimit": "此流程的去重記錄已使用至少 80%。請清理歷史記錄或使用水位模式。",
|
|
10016
|
+
"nearLimit": "此流程的去重記錄已使用至少 80%。請清理不再需要的記錄。",
|
|
10007
10017
|
"history": "歷史記錄",
|
|
10008
10018
|
"scope": "範圍",
|
|
10009
|
-
"
|
|
10019
|
+
"showValue": "檢視值",
|
|
10020
|
+
"hideValue": "收合值",
|
|
10010
10021
|
"refresh": "重新整理",
|
|
10011
10022
|
"confirmLive": "這會立即清空正式環境狀態,後續 Live Run 可能再次處理這些項目。是否繼續?",
|
|
10012
10023
|
"cancel": "取消",
|
|
@@ -10021,8 +10032,16 @@ var resources = {
|
|
|
10021
10032
|
"entries": "{{count}} / {{limit}} 筆",
|
|
10022
10033
|
"records": "{{count}} 筆記錄",
|
|
10023
10034
|
"valueLimit": "每筆 JSON 值最多 {{size}} 個 UTF-8 位元組。",
|
|
10024
|
-
"sharedLimit": "所有空間共用記錄額度。空間:{{count}} / {{limit}}
|
|
10025
|
-
"fieldPlaceholder": "
|
|
10035
|
+
"sharedLimit": "所有空間共用記錄額度。空間:{{count}} / {{limit}} 個。待提交記錄會預占額度。",
|
|
10036
|
+
"fieldPlaceholder": "整個項目(字串或數字)",
|
|
10037
|
+
"addField": "新增欄位",
|
|
10038
|
+
"removeField": "刪除第 {{index}} 個欄位",
|
|
10039
|
+
"fieldIndex": "第 {{index}} 個識別欄位",
|
|
10040
|
+
"invalidFields": "請填寫不重複的欄位路徑,例如 id 或 record.id。",
|
|
10041
|
+
"pendingRecords": "{{count}} 筆待提交",
|
|
10042
|
+
"pathPlaceholder": "id 或 record.id",
|
|
10043
|
+
"saveFailed": "無法儲存識別欄位。",
|
|
10044
|
+
"retry": "重試"
|
|
10026
10045
|
}
|
|
10027
10046
|
},
|
|
10028
10047
|
"ja": {
|
|
@@ -11340,26 +11359,20 @@ var resources = {
|
|
|
11340
11359
|
},
|
|
11341
11360
|
flowState: {
|
|
11342
11361
|
"title": "永続データ",
|
|
11343
|
-
"nodeTitle": "
|
|
11344
|
-
"warning": "
|
|
11362
|
+
"nodeTitle": "重複をスキップ",
|
|
11363
|
+
"warning": "履歴は Run の成功後に保存されます。失敗またはキャンセル時は、次回もこれらの項目を処理できます。",
|
|
11345
11364
|
"field": "識別フィールド",
|
|
11346
|
-
"mode": "モード",
|
|
11347
|
-
"new": "新しい識別値",
|
|
11348
|
-
"increasing": "増加するウォーターマーク",
|
|
11349
|
-
"space": "履歴の範囲",
|
|
11350
|
-
"nodeSpace": "このノード",
|
|
11351
|
-
"flowSpace": "Flow の共有領域",
|
|
11352
11365
|
"values": "保存データ",
|
|
11353
11366
|
"spaces": "重複除去の記録",
|
|
11354
11367
|
"clearAll": "すべて消去",
|
|
11355
11368
|
"delete": "削除",
|
|
11356
11369
|
"clear": "消去",
|
|
11357
11370
|
"orphaned": "現在のビューに対応ノードなし",
|
|
11358
|
-
"
|
|
11359
|
-
"nearLimit": "フローの重複除去記録が 80% 以上使用されています。履歴を削除するかウォーターマークモードを使用してください。",
|
|
11371
|
+
"nearLimit": "フローの重複履歴が 80% 以上使用されています。不要な履歴を削除してください。",
|
|
11360
11372
|
"history": "履歴",
|
|
11361
11373
|
"scope": "スコープ",
|
|
11362
|
-
"
|
|
11374
|
+
"showValue": "値を表示",
|
|
11375
|
+
"hideValue": "値を隠す",
|
|
11363
11376
|
"refresh": "更新",
|
|
11364
11377
|
"confirmLive": "本番環境の状態が直ちに消去されます。以降の Live Run で同じ項目が再処理される場合があります。続行しますか?",
|
|
11365
11378
|
"cancel": "キャンセル",
|
|
@@ -11374,8 +11387,16 @@ var resources = {
|
|
|
11374
11387
|
"entries": "{{count}} / {{limit}} 件",
|
|
11375
11388
|
"records": "{{count}} 件",
|
|
11376
11389
|
"valueLimit": "JSON 値ごとに最大 {{size}} UTF-8 バイトです。",
|
|
11377
|
-
"sharedLimit": "
|
|
11378
|
-
"fieldPlaceholder": "
|
|
11390
|
+
"sharedLimit": "すべての領域で上限を共有します。領域:{{count}} / {{limit}}。確定待ちの記録も容量を予約します。",
|
|
11391
|
+
"fieldPlaceholder": "項目全体(文字列または数値)",
|
|
11392
|
+
"addField": "フィールドを追加",
|
|
11393
|
+
"removeField": "フィールド {{index}} を削除",
|
|
11394
|
+
"fieldIndex": "識別フィールド {{index}}",
|
|
11395
|
+
"invalidFields": "id や record.id のような空でない異なるパスを指定してください。",
|
|
11396
|
+
"pendingRecords": "{{count}} 件が確定待ち",
|
|
11397
|
+
"pathPlaceholder": "id または record.id",
|
|
11398
|
+
"saveFailed": "識別フィールドを保存できませんでした。",
|
|
11399
|
+
"retry": "再試行"
|
|
11379
11400
|
}
|
|
11380
11401
|
},
|
|
11381
11402
|
"ko": {
|
|
@@ -12693,26 +12714,20 @@ var resources = {
|
|
|
12693
12714
|
},
|
|
12694
12715
|
flowState: {
|
|
12695
12716
|
"title": "영구 데이터",
|
|
12696
|
-
"nodeTitle": "중복
|
|
12697
|
-
"warning": "기록은
|
|
12717
|
+
"nodeTitle": "중복 건너뛰기",
|
|
12718
|
+
"warning": "기록은 Run이 성공한 후 저장됩니다. 실패하거나 취소되면 다음 실행에서 다시 처리할 수 있습니다.",
|
|
12698
12719
|
"field": "식별 필드",
|
|
12699
|
-
"mode": "모드",
|
|
12700
|
-
"new": "새 식별값",
|
|
12701
|
-
"increasing": "증가 워터마크",
|
|
12702
|
-
"space": "기록 범위",
|
|
12703
|
-
"nodeSpace": "현재 노드",
|
|
12704
|
-
"flowSpace": "Flow 공유 공간",
|
|
12705
12720
|
"values": "저장된 데이터",
|
|
12706
12721
|
"spaces": "중복 제거 기록",
|
|
12707
12722
|
"clearAll": "모두 지우기",
|
|
12708
12723
|
"delete": "삭제",
|
|
12709
12724
|
"clear": "지우기",
|
|
12710
12725
|
"orphaned": "현재 보기에서 연결된 노드 없음",
|
|
12711
|
-
"
|
|
12712
|
-
"nearLimit": "Flow 중복 제거 기록이 80% 이상 찼습니다. 기록을 지우거나 워터마크 모드를 사용하세요.",
|
|
12726
|
+
"nearLimit": "Flow 중복 기록이 80% 이상 찼습니다. 필요 없는 기록을 지우세요.",
|
|
12713
12727
|
"history": "기록",
|
|
12714
12728
|
"scope": "범위",
|
|
12715
|
-
"
|
|
12729
|
+
"showValue": "값 보기",
|
|
12730
|
+
"hideValue": "값 숨기기",
|
|
12716
12731
|
"refresh": "새로 고침",
|
|
12717
12732
|
"confirmLive": "운영 상태가 즉시 지워집니다. 이후 Live Run에서 해당 항목을 다시 처리할 수 있습니다. 계속할까요?",
|
|
12718
12733
|
"cancel": "취소",
|
|
@@ -12727,8 +12742,16 @@ var resources = {
|
|
|
12727
12742
|
"entries": "{{count}} / {{limit}}개",
|
|
12728
12743
|
"records": "기록 {{count}}개",
|
|
12729
12744
|
"valueLimit": "JSON 값 하나당 최대 {{size}} UTF-8 바이트입니다.",
|
|
12730
|
-
"sharedLimit": "모든 공간이
|
|
12731
|
-
"fieldPlaceholder": "전체
|
|
12745
|
+
"sharedLimit": "모든 공간이 한도를 공유합니다. 공간: {{count}} / {{limit}}. 대기 중인 기록도 용량을 예약합니다.",
|
|
12746
|
+
"fieldPlaceholder": "항목 전체 (문자열 또는 숫자)",
|
|
12747
|
+
"addField": "필드 추가",
|
|
12748
|
+
"removeField": "필드 {{index}} 삭제",
|
|
12749
|
+
"fieldIndex": "식별 필드 {{index}}",
|
|
12750
|
+
"invalidFields": "id 또는 record.id처럼 비어 있지 않은 서로 다른 경로를 입력하세요.",
|
|
12751
|
+
"pendingRecords": "{{count}}개 커밋 대기",
|
|
12752
|
+
"pathPlaceholder": "id 또는 record.id",
|
|
12753
|
+
"saveFailed": "식별 필드를 저장할 수 없습니다.",
|
|
12754
|
+
"retry": "다시 시도"
|
|
12732
12755
|
}
|
|
12733
12756
|
},
|
|
12734
12757
|
"ru": {
|
|
@@ -14046,26 +14069,20 @@ var resources = {
|
|
|
14046
14069
|
},
|
|
14047
14070
|
flowState: {
|
|
14048
14071
|
"title": "Постоянные данные",
|
|
14049
|
-
"nodeTitle": "
|
|
14050
|
-
"warning": "История сохраняется
|
|
14051
|
-
"field": "
|
|
14052
|
-
"mode": "Режим",
|
|
14053
|
-
"new": "Новые идентификаторы",
|
|
14054
|
-
"increasing": "Возрастающая отметка",
|
|
14055
|
-
"space": "Область истории",
|
|
14056
|
-
"nodeSpace": "Этот узел",
|
|
14057
|
-
"flowSpace": "Общее пространство Flow",
|
|
14072
|
+
"nodeTitle": "Пропуск дубликатов",
|
|
14073
|
+
"warning": "История сохраняется после успешного Run. После ошибки или отмены элементы можно обработать повторно.",
|
|
14074
|
+
"field": "Поля идентификации",
|
|
14058
14075
|
"values": "Сохранённые данные",
|
|
14059
14076
|
"spaces": "Записи дедупликации",
|
|
14060
14077
|
"clearAll": "Очистить всё",
|
|
14061
14078
|
"delete": "Удалить",
|
|
14062
14079
|
"clear": "Очистить",
|
|
14063
14080
|
"orphaned": "Нет узла в текущем представлении",
|
|
14064
|
-
"
|
|
14065
|
-
"nearLimit": "История дедупликации Flow заполнена минимум на 80 %. Очистите историю или используйте режим водяной метки.",
|
|
14081
|
+
"nearLimit": "История Flow заполнена минимум на 80 %. Удалите ненужные записи.",
|
|
14066
14082
|
"history": "История",
|
|
14067
14083
|
"scope": "Область",
|
|
14068
|
-
"
|
|
14084
|
+
"showValue": "Показать значение",
|
|
14085
|
+
"hideValue": "Скрыть значение",
|
|
14069
14086
|
"refresh": "Обновить",
|
|
14070
14087
|
"confirmLive": "Рабочее состояние будет немедленно очищено. Последующие Live Run могут повторно обработать эти элементы. Продолжить?",
|
|
14071
14088
|
"cancel": "Отмена",
|
|
@@ -14080,8 +14097,16 @@ var resources = {
|
|
|
14080
14097
|
"entries": "{{count}} / {{limit}} записей",
|
|
14081
14098
|
"records": "{{count}} записей",
|
|
14082
14099
|
"valueLimit": "Каждое значение JSON — не более {{size}} байт UTF-8.",
|
|
14083
|
-
"sharedLimit": "
|
|
14084
|
-
"fieldPlaceholder": "Весь элемент"
|
|
14100
|
+
"sharedLimit": "Все пространства используют общий лимит. Пространства: {{count}} / {{limit}}. Ожидающие записи резервируют ёмкость.",
|
|
14101
|
+
"fieldPlaceholder": "Весь элемент (строка или число)",
|
|
14102
|
+
"addField": "Добавить поле",
|
|
14103
|
+
"removeField": "Удалить поле {{index}}",
|
|
14104
|
+
"fieldIndex": "Поле идентификации {{index}}",
|
|
14105
|
+
"invalidFields": "Укажите разные непустые пути, например id или record.id.",
|
|
14106
|
+
"pendingRecords": "{{count}} ожидают фиксации",
|
|
14107
|
+
"pathPlaceholder": "id или record.id",
|
|
14108
|
+
"saveFailed": "Не удалось сохранить поля идентификации.",
|
|
14109
|
+
"retry": "Повторить"
|
|
14085
14110
|
}
|
|
14086
14111
|
},
|
|
14087
14112
|
"fr": {
|
|
@@ -15399,26 +15424,20 @@ var resources = {
|
|
|
15399
15424
|
},
|
|
15400
15425
|
flowState: {
|
|
15401
15426
|
"title": "Données persistantes",
|
|
15402
|
-
"nodeTitle": "
|
|
15403
|
-
"warning": "L’historique est enregistré
|
|
15404
|
-
"field": "
|
|
15405
|
-
"mode": "Mode",
|
|
15406
|
-
"new": "Nouveaux identifiants",
|
|
15407
|
-
"increasing": "Seuil croissant",
|
|
15408
|
-
"space": "Portée de l’historique",
|
|
15409
|
-
"nodeSpace": "Ce nœud",
|
|
15410
|
-
"flowSpace": "Espace partagé du Flow",
|
|
15427
|
+
"nodeTitle": "Ignorer les doublons",
|
|
15428
|
+
"warning": "L’historique est enregistré après la réussite du Run. En cas d’échec ou d’annulation, ces éléments pourront être traités à nouveau.",
|
|
15429
|
+
"field": "Champs d’identification",
|
|
15411
15430
|
"values": "Données enregistrées",
|
|
15412
15431
|
"spaces": "Enregistrements de déduplication",
|
|
15413
15432
|
"clearAll": "Tout effacer",
|
|
15414
15433
|
"delete": "Supprimer",
|
|
15415
15434
|
"clear": "Effacer",
|
|
15416
15435
|
"orphaned": "Sans nœud dans cette vue",
|
|
15417
|
-
"
|
|
15418
|
-
"nearLimit": "L’historique de déduplication du Flow est rempli à au moins 80 %. Effacez-le ou utilisez le mode filigrane.",
|
|
15436
|
+
"nearLimit": "L’historique du Flow est rempli à au moins 80 %. Effacez les entrées inutiles.",
|
|
15419
15437
|
"history": "Historique",
|
|
15420
15438
|
"scope": "Portée",
|
|
15421
|
-
"
|
|
15439
|
+
"showValue": "Voir la valeur",
|
|
15440
|
+
"hideValue": "Masquer la valeur",
|
|
15422
15441
|
"refresh": "Actualiser",
|
|
15423
15442
|
"confirmLive": "L’état de production sera immédiatement effacé. Les prochains Runs Live pourront traiter à nouveau ces éléments. Continuer ?",
|
|
15424
15443
|
"cancel": "Annuler",
|
|
@@ -15433,8 +15452,16 @@ var resources = {
|
|
|
15433
15452
|
"entries": "{{count}} / {{limit}} entrées",
|
|
15434
15453
|
"records": "{{count}} enregistrements",
|
|
15435
15454
|
"valueLimit": "Chaque valeur JSON peut contenir au plus {{size}} octets UTF-8.",
|
|
15436
|
-
"sharedLimit": "Tous les espaces partagent la limite
|
|
15437
|
-
"fieldPlaceholder": "Élément entier"
|
|
15455
|
+
"sharedLimit": "Tous les espaces partagent la limite. Espaces : {{count}} / {{limit}}. Les entrées en attente réservent de la capacité.",
|
|
15456
|
+
"fieldPlaceholder": "Élément entier (texte ou nombre)",
|
|
15457
|
+
"addField": "Ajouter un champ",
|
|
15458
|
+
"removeField": "Supprimer le champ {{index}}",
|
|
15459
|
+
"fieldIndex": "Champ d’identification {{index}}",
|
|
15460
|
+
"invalidFields": "Utilisez des chemins distincts et non vides, comme id ou record.id.",
|
|
15461
|
+
"pendingRecords": "{{count}} en attente",
|
|
15462
|
+
"pathPlaceholder": "id ou record.id",
|
|
15463
|
+
"saveFailed": "Impossible d’enregistrer les champs d’identification.",
|
|
15464
|
+
"retry": "Réessayer"
|
|
15438
15465
|
}
|
|
15439
15466
|
}
|
|
15440
15467
|
};
|
|
@@ -18785,13 +18812,16 @@ function FlowTagChips({ ids, store, onFilter, container }) {
|
|
|
18785
18812
|
container,
|
|
18786
18813
|
align: "start",
|
|
18787
18814
|
className: "w-64 max-w-[calc(100vw-2rem)]",
|
|
18788
|
-
children: selected.slice(2).map((tag) => /* @__PURE__ */
|
|
18815
|
+
children: selected.slice(2).map((tag) => /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
18789
18816
|
"aria-label": t("tags.filterBy", { name: tag.name }),
|
|
18790
18817
|
onClick: () => onFilter(tag.tagId),
|
|
18791
|
-
children: /* @__PURE__ */ jsx("
|
|
18818
|
+
children: [/* @__PURE__ */ jsx("i", {
|
|
18819
|
+
"aria-hidden": "true",
|
|
18820
|
+
className: "i-lucide-light:tag size-4 shrink-0"
|
|
18821
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
18792
18822
|
className: "min-w-0 break-words",
|
|
18793
18823
|
children: tag.name
|
|
18794
|
-
})
|
|
18824
|
+
})]
|
|
18795
18825
|
}, tag.tagId))
|
|
18796
18826
|
})] })]
|
|
18797
18827
|
});
|
|
@@ -20255,7 +20285,7 @@ function renameFlowOutputSources(content, nodeIds, previous, next) {
|
|
|
20255
20285
|
}
|
|
20256
20286
|
//#endregion
|
|
20257
20287
|
//#region src/workbench/browser/runtime/canvasPresentation.ts
|
|
20258
|
-
function record(value) {
|
|
20288
|
+
function record$1(value) {
|
|
20259
20289
|
if (value == null || typeof value != "object" || Array.isArray(value)) return void 0;
|
|
20260
20290
|
return value;
|
|
20261
20291
|
}
|
|
@@ -20263,15 +20293,28 @@ function finite(value) {
|
|
|
20263
20293
|
return typeof value == "number" && Number.isFinite(value) ? value : void 0;
|
|
20264
20294
|
}
|
|
20265
20295
|
function flowPresentation(value) {
|
|
20266
|
-
const designer = record(value.designer);
|
|
20296
|
+
const designer = record$1(value.designer);
|
|
20267
20297
|
if (designer?.version != 1) return void 0;
|
|
20268
|
-
return record(designer.flow);
|
|
20298
|
+
return record$1(designer.flow);
|
|
20299
|
+
}
|
|
20300
|
+
function savedDirection(value) {
|
|
20301
|
+
return canvasDirection(flowPresentation(value)?.direction);
|
|
20302
|
+
}
|
|
20303
|
+
function setCanvasLayout(value, direction, positions = {}) {
|
|
20304
|
+
const positioned = setNodePositions(value, positions);
|
|
20305
|
+
return {
|
|
20306
|
+
...positioned,
|
|
20307
|
+
designer: replaceFlowPresentation(designerPresentation(positioned), {
|
|
20308
|
+
...normalizedFlow(positioned),
|
|
20309
|
+
direction
|
|
20310
|
+
})
|
|
20311
|
+
};
|
|
20269
20312
|
}
|
|
20270
20313
|
function savedPositions(value) {
|
|
20271
20314
|
const current = flowPresentation(value);
|
|
20272
20315
|
const positions = (source) => {
|
|
20273
|
-
return Object.fromEntries(Object.entries(record(source) ?? {}).flatMap(([nodeId, candidate]) => {
|
|
20274
|
-
const position = record(candidate);
|
|
20316
|
+
return Object.fromEntries(Object.entries(record$1(source) ?? {}).flatMap(([nodeId, candidate]) => {
|
|
20317
|
+
const position = record$1(candidate);
|
|
20275
20318
|
const x = finite(position?.x);
|
|
20276
20319
|
const y = finite(position?.y);
|
|
20277
20320
|
return x == null || y == null ? [] : [[nodeId, {
|
|
@@ -20289,7 +20332,7 @@ function savedOrder(value) {
|
|
|
20289
20332
|
return [.../* @__PURE__ */ new Set([...order, ...Object.keys(positions)])];
|
|
20290
20333
|
}
|
|
20291
20334
|
function optionalViewport(value) {
|
|
20292
|
-
const viewport = record(flowPresentation(value)?.viewport);
|
|
20335
|
+
const viewport = record$1(flowPresentation(value)?.viewport);
|
|
20293
20336
|
const x = finite(viewport?.x);
|
|
20294
20337
|
const y = finite(viewport?.y);
|
|
20295
20338
|
const zoom = finite(viewport?.zoom);
|
|
@@ -20307,9 +20350,9 @@ function savedViewport(value) {
|
|
|
20307
20350
|
};
|
|
20308
20351
|
}
|
|
20309
20352
|
function savedComments(value, positions) {
|
|
20310
|
-
const comments = record(flowPresentation(value)?.comments) ?? {};
|
|
20353
|
+
const comments = record$1(flowPresentation(value)?.comments) ?? {};
|
|
20311
20354
|
return Object.fromEntries(Object.entries(comments).flatMap(([nodeId, candidate]) => {
|
|
20312
|
-
const comment = record(candidate);
|
|
20355
|
+
const comment = record$1(candidate);
|
|
20313
20356
|
const title = typeof comment?.title == "string" ? comment.title : void 0;
|
|
20314
20357
|
const content = typeof comment?.content == "string" ? comment.content : void 0;
|
|
20315
20358
|
return title == null || content == null ? [] : [[nodeId, {
|
|
@@ -20323,7 +20366,7 @@ function savedComments(value, positions) {
|
|
|
20323
20366
|
}));
|
|
20324
20367
|
}
|
|
20325
20368
|
function designerPresentation(value) {
|
|
20326
|
-
const designer = record(value.designer);
|
|
20369
|
+
const designer = record$1(value.designer);
|
|
20327
20370
|
return designer?.version == 1 ? designer : { version: 1 };
|
|
20328
20371
|
}
|
|
20329
20372
|
function replaceFlowPresentation(designer, value) {
|
|
@@ -20346,7 +20389,7 @@ function normalizedFlow(value) {
|
|
|
20346
20389
|
function setNodePositions(value, positions) {
|
|
20347
20390
|
const designer = designerPresentation(value);
|
|
20348
20391
|
const current = normalizedFlow(value);
|
|
20349
|
-
const nodes = record(current.nodes) ?? {};
|
|
20392
|
+
const nodes = record$1(current.nodes) ?? {};
|
|
20350
20393
|
const order = [...savedOrder(value)];
|
|
20351
20394
|
for (const nodeId of Object.keys(positions)) if (!order.includes(nodeId)) order.push(nodeId);
|
|
20352
20395
|
const nextNodes = {
|
|
@@ -20366,9 +20409,9 @@ function setNodePositions(value, positions) {
|
|
|
20366
20409
|
};
|
|
20367
20410
|
}
|
|
20368
20411
|
function setNodeContentHidden(value, nodeId, hidden) {
|
|
20369
|
-
if (record(flowPresentation(value)?.hiddenNodeContent)?.[nodeId] === true === hidden) return value;
|
|
20412
|
+
if (record$1(flowPresentation(value)?.hiddenNodeContent)?.[nodeId] === true === hidden) return value;
|
|
20370
20413
|
const current = normalizedFlow(value);
|
|
20371
|
-
const hiddenNodeContent = { ...record(current.hiddenNodeContent) };
|
|
20414
|
+
const hiddenNodeContent = { ...record$1(current.hiddenNodeContent) };
|
|
20372
20415
|
if (hidden) hiddenNodeContent[nodeId] = true;
|
|
20373
20416
|
else delete hiddenNodeContent[nodeId];
|
|
20374
20417
|
return {
|
|
@@ -20382,8 +20425,8 @@ function setNodeContentHidden(value, nodeId, hidden) {
|
|
|
20382
20425
|
function setComment(value, nodeId, comment) {
|
|
20383
20426
|
const positioned = setNodePositions(value, { [nodeId]: comment.position });
|
|
20384
20427
|
const designer = designerPresentation(positioned);
|
|
20385
|
-
const current = record(designer.flow) ?? {};
|
|
20386
|
-
const comments = record(current.comments) ?? {};
|
|
20428
|
+
const current = record$1(designer.flow) ?? {};
|
|
20429
|
+
const comments = record$1(current.comments) ?? {};
|
|
20387
20430
|
return {
|
|
20388
20431
|
...positioned,
|
|
20389
20432
|
designer: replaceFlowPresentation(designer, {
|
|
@@ -20401,8 +20444,8 @@ function setComment(value, nodeId, comment) {
|
|
|
20401
20444
|
function removeComments(value, nodeIds) {
|
|
20402
20445
|
const designer = designerPresentation(value);
|
|
20403
20446
|
const current = normalizedFlow(value);
|
|
20404
|
-
const comments = { ...record(current.comments) };
|
|
20405
|
-
const nodes = { ...record(current.nodes) };
|
|
20447
|
+
const comments = { ...record$1(current.comments) };
|
|
20448
|
+
const nodes = { ...record$1(current.nodes) };
|
|
20406
20449
|
for (const nodeId of nodeIds) {
|
|
20407
20450
|
delete comments[nodeId];
|
|
20408
20451
|
delete nodes[nodeId];
|
|
@@ -20419,7 +20462,7 @@ function removeComments(value, nodeIds) {
|
|
|
20419
20462
|
};
|
|
20420
20463
|
}
|
|
20421
20464
|
function commentIds(value) {
|
|
20422
|
-
return new Set(Object.keys(record(flowPresentation(value)?.comments) ?? {}));
|
|
20465
|
+
return new Set(Object.keys(record$1(flowPresentation(value)?.comments) ?? {}));
|
|
20423
20466
|
}
|
|
20424
20467
|
function setFlowViewport(value, viewport) {
|
|
20425
20468
|
const currentViewport = optionalViewport(value);
|
|
@@ -20438,46 +20481,50 @@ function setFlowViewport(value, viewport) {
|
|
|
20438
20481
|
})
|
|
20439
20482
|
};
|
|
20440
20483
|
}
|
|
20484
|
+
var nodePresentationFields = [
|
|
20485
|
+
"nodes",
|
|
20486
|
+
"comments",
|
|
20487
|
+
"hiddenNodeContent",
|
|
20488
|
+
"verticalNodeWidths"
|
|
20489
|
+
];
|
|
20441
20490
|
function canvasPresentationChange(before, after) {
|
|
20442
20491
|
const first = normalizedFlow(before);
|
|
20443
20492
|
const last = normalizedFlow(after);
|
|
20493
|
+
const directionChanged = !dequal$1(first.direction, last.direction);
|
|
20444
20494
|
const nodeIds = /* @__PURE__ */ new Set();
|
|
20445
|
-
for (const field of
|
|
20446
|
-
|
|
20447
|
-
|
|
20448
|
-
"hiddenNodeContent"
|
|
20449
|
-
]) {
|
|
20450
|
-
const previous = record(first[field]) ?? {};
|
|
20451
|
-
const next = record(last[field]) ?? {};
|
|
20495
|
+
for (const field of nodePresentationFields) {
|
|
20496
|
+
const previous = record$1(first[field]) ?? {};
|
|
20497
|
+
const next = record$1(last[field]) ?? {};
|
|
20452
20498
|
for (const id of /* @__PURE__ */ new Set([...Object.keys(previous), ...Object.keys(next)])) if (!dequal$1(previous[id], next[id])) nodeIds.add(id);
|
|
20453
20499
|
}
|
|
20454
|
-
const select = (value) => Object.fromEntries([
|
|
20455
|
-
|
|
20456
|
-
|
|
20457
|
-
|
|
20458
|
-
|
|
20500
|
+
const select = (value) => Object.fromEntries(nodePresentationFields.map((field) => [field, Object.fromEntries(Object.entries(record$1(value[field]) ?? {}).filter(([id]) => nodeIds.has(id)))]));
|
|
20501
|
+
const snapshot = (value) => ({
|
|
20502
|
+
...select(value),
|
|
20503
|
+
...directionChanged && value.direction !== void 0 ? { direction: value.direction } : {}
|
|
20504
|
+
});
|
|
20459
20505
|
return {
|
|
20460
|
-
before:
|
|
20461
|
-
after:
|
|
20506
|
+
before: snapshot(first),
|
|
20507
|
+
after: snapshot(last),
|
|
20462
20508
|
nodeIds: [...nodeIds],
|
|
20509
|
+
directionChanged,
|
|
20463
20510
|
beforeOrder: savedOrder(before),
|
|
20464
20511
|
afterOrder: savedOrder(after)
|
|
20465
20512
|
};
|
|
20466
20513
|
}
|
|
20467
20514
|
function restoreCanvasPresentation(value, change, redo) {
|
|
20468
|
-
if (change.nodeIds.length == 0) return value;
|
|
20515
|
+
if (change.nodeIds.length == 0 && !change.directionChanged) return value;
|
|
20469
20516
|
const current = normalizedFlow(value);
|
|
20470
20517
|
const saved = redo ? change.after : change.before;
|
|
20471
|
-
for (const field of
|
|
20472
|
-
|
|
20473
|
-
|
|
20474
|
-
"hiddenNodeContent"
|
|
20475
|
-
]) {
|
|
20476
|
-
const next = { ...record(current[field]) };
|
|
20477
|
-
const source = record(saved[field]) ?? {};
|
|
20518
|
+
for (const field of nodePresentationFields) {
|
|
20519
|
+
const next = { ...record$1(current[field]) };
|
|
20520
|
+
const source = record$1(saved[field]) ?? {};
|
|
20478
20521
|
for (const id of change.nodeIds) if (source[id] == null) delete next[id];
|
|
20479
20522
|
else next[id] = source[id];
|
|
20480
|
-
current[field] = next;
|
|
20523
|
+
if (Object.keys(next).length > 0 || current[field] !== void 0) current[field] = next;
|
|
20524
|
+
}
|
|
20525
|
+
if (change.directionChanged) {
|
|
20526
|
+
if (saved.direction === void 0) delete current.direction;
|
|
20527
|
+
else current.direction = saved.direction;
|
|
20481
20528
|
}
|
|
20482
20529
|
current.order = [...redo ? change.afterOrder : change.beforeOrder];
|
|
20483
20530
|
return {
|
|
@@ -20486,7 +20533,28 @@ function restoreCanvasPresentation(value, change, redo) {
|
|
|
20486
20533
|
};
|
|
20487
20534
|
}
|
|
20488
20535
|
function savedHiddenNodeContent(value) {
|
|
20489
|
-
return record(flowPresentation(value)?.hiddenNodeContent);
|
|
20536
|
+
return record$1(flowPresentation(value)?.hiddenNodeContent);
|
|
20537
|
+
}
|
|
20538
|
+
function savedVerticalNodeWidths(value) {
|
|
20539
|
+
return Object.fromEntries(Object.entries(record$1(flowPresentation(value)?.verticalNodeWidths) ?? {}).flatMap(([nodeId, candidate]) => {
|
|
20540
|
+
const width = finite(candidate);
|
|
20541
|
+
return width == null || width <= 0 ? [] : [[nodeId, width]];
|
|
20542
|
+
}));
|
|
20543
|
+
}
|
|
20544
|
+
function setVerticalNodeWidth(value, nodeId, width) {
|
|
20545
|
+
if (width !== void 0 && (!Number.isFinite(width) || width <= 0)) throw new RangeError("Node width must be a positive finite number.");
|
|
20546
|
+
if (savedVerticalNodeWidths(value)[nodeId] === width) return value;
|
|
20547
|
+
const current = normalizedFlow(value);
|
|
20548
|
+
const verticalNodeWidths = { ...record$1(current.verticalNodeWidths) };
|
|
20549
|
+
if (width === void 0) delete verticalNodeWidths[nodeId];
|
|
20550
|
+
else verticalNodeWidths[nodeId] = width;
|
|
20551
|
+
return {
|
|
20552
|
+
...value,
|
|
20553
|
+
designer: replaceFlowPresentation(designerPresentation(value), {
|
|
20554
|
+
...current,
|
|
20555
|
+
verticalNodeWidths
|
|
20556
|
+
})
|
|
20557
|
+
};
|
|
20490
20558
|
}
|
|
20491
20559
|
//#endregion
|
|
20492
20560
|
//#region src/workbench/browser/runtime/connectionCatalog.ts
|
|
@@ -20626,7 +20694,7 @@ function deriveInspectorDiagnostics(revision, diagnostics, selection) {
|
|
|
20626
20694
|
const nodePath = "/document/graph/nodes/";
|
|
20627
20695
|
return diagnostics.diagnostics.filter((diagnostic) => within(targetPath, diagnostic.path) && !diagnostic.path.startsWith(nodePath));
|
|
20628
20696
|
}
|
|
20629
|
-
function scope(path) {
|
|
20697
|
+
function scope$1(path) {
|
|
20630
20698
|
if (path.startsWith("/modules/")) return "code";
|
|
20631
20699
|
if (/\/graph\/nodes\/[^/]+\/task(?:\/|$)/.test(path)) return "task";
|
|
20632
20700
|
if (path.includes("/graph/nodes/")) return "node";
|
|
@@ -20670,7 +20738,7 @@ function diagnosticItems(revision, check) {
|
|
|
20670
20738
|
return check?.diagnostics.map((diagnostic) => ({
|
|
20671
20739
|
diagnostic,
|
|
20672
20740
|
location: location(revision, diagnostic),
|
|
20673
|
-
scope: scope(diagnostic.path)
|
|
20741
|
+
scope: scope$1(diagnostic.path)
|
|
20674
20742
|
})) ?? [];
|
|
20675
20743
|
}
|
|
20676
20744
|
function diagnosticsForNode(node, diagnostics) {
|
|
@@ -20741,8 +20809,8 @@ var schema = lazy$1(() => union([boolean(), strictObject({
|
|
|
20741
20809
|
"https://json-schema.org/draft/2019-09/schema",
|
|
20742
20810
|
"https://json-schema.org/draft/2020-12/schema"
|
|
20743
20811
|
]).optional(),
|
|
20744
|
-
$defs: record$
|
|
20745
|
-
definitions: record$
|
|
20812
|
+
$defs: record$3(string$1(), schema).optional(),
|
|
20813
|
+
definitions: record$3(string$1(), schema).optional(),
|
|
20746
20814
|
pattern: string$1().refine((value) => {
|
|
20747
20815
|
try {
|
|
20748
20816
|
return new RegExp(value, "u").source.length > 0;
|
|
@@ -20759,16 +20827,16 @@ var schema = lazy$1(() => union([boolean(), strictObject({
|
|
|
20759
20827
|
minProperties: number().int().nonnegative().optional(),
|
|
20760
20828
|
maxProperties: number().int().nonnegative().optional(),
|
|
20761
20829
|
propertyNames: schema.optional(),
|
|
20762
|
-
patternProperties: record$
|
|
20830
|
+
patternProperties: record$3(string$1().refine((value) => {
|
|
20763
20831
|
try {
|
|
20764
20832
|
return new RegExp(value, "u").source.length > 0;
|
|
20765
20833
|
} catch {
|
|
20766
20834
|
return false;
|
|
20767
20835
|
}
|
|
20768
20836
|
}, "Invalid regular expression."), schema).optional(),
|
|
20769
|
-
dependentRequired: record$
|
|
20770
|
-
dependentSchemas: record$
|
|
20771
|
-
dependencies: record$
|
|
20837
|
+
dependentRequired: record$3(string$1(), array(string$1())).optional(),
|
|
20838
|
+
dependentSchemas: record$3(string$1(), schema).optional(),
|
|
20839
|
+
dependencies: record$3(string$1(), union([schema, array(string$1())])).optional(),
|
|
20772
20840
|
prefixItems: array(schema).optional(),
|
|
20773
20841
|
additionalItems: schema.optional(),
|
|
20774
20842
|
unevaluatedItems: schema.optional(),
|
|
@@ -20782,7 +20850,7 @@ var schema = lazy$1(() => union([boolean(), strictObject({
|
|
|
20782
20850
|
deprecated: boolean().optional(),
|
|
20783
20851
|
$comment: string$1().optional(),
|
|
20784
20852
|
enum: array(json$3()).min(1).optional(),
|
|
20785
|
-
properties: record$
|
|
20853
|
+
properties: record$3(string$1(), schema).optional(),
|
|
20786
20854
|
required: array(string$1()).optional(),
|
|
20787
20855
|
additionalProperties: schema.optional(),
|
|
20788
20856
|
items: union([schema, array(schema)]).optional(),
|
|
@@ -21696,15 +21764,16 @@ function actionSummary(entries, actions, providers) {
|
|
|
21696
21764
|
}
|
|
21697
21765
|
//#endregion
|
|
21698
21766
|
//#region src/workbench/browser/runtime/workspace.ts
|
|
21699
|
-
function semanticNodeIcon(node, connectorActions) {
|
|
21767
|
+
function semanticNodeIcon(node, connectorActions, providers = {}) {
|
|
21700
21768
|
if (node.node.icon != null) return node.node.icon;
|
|
21701
21769
|
if (node.kind != "task" || node.definition == null || !("executor" in node.definition) || node.definition.executor.kind != "connector") return nodeIcon(node);
|
|
21702
|
-
const
|
|
21703
|
-
|
|
21770
|
+
const actionId = node.definition.executor.action;
|
|
21771
|
+
const provider = connectorActions[actionId] ?? providers[actionId.split(".")[0]];
|
|
21772
|
+
return provider == null ? nodeIcon(node) : providerIcon(provider);
|
|
21704
21773
|
}
|
|
21705
21774
|
function sourceNodePresentation(node, context) {
|
|
21706
21775
|
if (node.kind != "trigger") return {
|
|
21707
|
-
icon: semanticNodeIcon(node, context.connectorActions),
|
|
21776
|
+
icon: semanticNodeIcon(node, context.connectorActions, context.providers),
|
|
21708
21777
|
title: nodeTitle(node, context.t)
|
|
21709
21778
|
};
|
|
21710
21779
|
return {
|
|
@@ -21739,7 +21808,7 @@ function nodeIcon(node) {
|
|
|
21739
21808
|
if (task.executor.kind == "decision") return ":carbon:ml-model-reference:";
|
|
21740
21809
|
if (task.executor.kind == "workflow") return ":lucide-light:workflow:";
|
|
21741
21810
|
if (task.executor.kind == "http-request") return ":lucide-light:globe:";
|
|
21742
|
-
if (task.executor.kind == "
|
|
21811
|
+
if (task.executor.kind == "skip-duplicates") return ":lucide-light:list-filter:";
|
|
21743
21812
|
if (task.executor.kind == "openapi") return ":logos:openapi-icon:";
|
|
21744
21813
|
return task.executor.kind == "connector" ? ":carbon:connection-signal:" : ":carbon:machine-learning-model:";
|
|
21745
21814
|
}
|
|
@@ -22002,7 +22071,7 @@ function executorName(task, providerName, t) {
|
|
|
22002
22071
|
if (task.executor.kind == "workflow") return t?.("addNode.workflow") ?? "Call Workflow";
|
|
22003
22072
|
if (task.executor.kind == "http-request") return `${t?.("httpRequest.title") ?? "HTTP Request"} · ${task.executor.method}`;
|
|
22004
22073
|
if (task.executor.kind == "openapi") return "OpenAPI";
|
|
22005
|
-
if (task.executor.kind == "
|
|
22074
|
+
if (task.executor.kind == "skip-duplicates") return t?.("flowState.nodeTitle") ?? "Skip Duplicates";
|
|
22006
22075
|
if (task.executor.kind == "llm") return t?.("designer.executorLlm") ?? "LLM";
|
|
22007
22076
|
return `${t?.("designer.executorConnector") ?? "Connector"} · ${providerName ?? task.executor.action.split(".")[0]}`;
|
|
22008
22077
|
}
|
|
@@ -22213,6 +22282,7 @@ function semanticDesignerNode(nodeId, resolved, ports, position, context) {
|
|
|
22213
22282
|
const task = resolved.kind == "task" ? resolved.definition : void 0;
|
|
22214
22283
|
const connector = task != null && "executor" in task && task.executor.kind == "connector" ? task.executor : void 0;
|
|
22215
22284
|
const connectorAction = connector == null ? void 0 : context.connectorActions[connector.action];
|
|
22285
|
+
const connectorProvider = connector == null ? void 0 : context.providers[connector.action.split(".")[0]];
|
|
22216
22286
|
const connections = connectorAction == null ? void 0 : context.connectionCatalogs[connectorAction.serviceId];
|
|
22217
22287
|
const connectionId = connector?.connectionId;
|
|
22218
22288
|
const selectedConnection = connectionId == null ? void 0 : connections?.byId.get(connectionId);
|
|
@@ -22222,7 +22292,7 @@ function semanticDesignerNode(nodeId, resolved, ports, position, context) {
|
|
|
22222
22292
|
description: node.description,
|
|
22223
22293
|
diagnostics: nodeDiagnosticCount(resolved, context.diagnostics),
|
|
22224
22294
|
fallbackIcon: nodeIcon(resolved),
|
|
22225
|
-
icon: semanticNodeIcon(resolved, context.connectorActions),
|
|
22295
|
+
icon: semanticNodeIcon(resolved, context.connectorActions, context.providers),
|
|
22226
22296
|
id: nodeId,
|
|
22227
22297
|
inputs,
|
|
22228
22298
|
outputs,
|
|
@@ -22253,7 +22323,7 @@ function semanticDesignerNode(nodeId, resolved, ports, position, context) {
|
|
|
22253
22323
|
return input == null || "group" in input ? [] : [input];
|
|
22254
22324
|
}),
|
|
22255
22325
|
kind: node.kind,
|
|
22256
|
-
executorName: executorName(task, connectorAction?.serviceName, context.t),
|
|
22326
|
+
executorName: executorName(task, connectorAction?.serviceName ?? connectorProvider?.serviceName, context.t),
|
|
22257
22327
|
...task != null && "moduleId" in task ? { actionSummary: actionSummary((task.capabilities ?? []).flatMap((capability) => capability.kind == "workflow" ? [capability] : "mode" in capability && capability.mode === "independent" ? capability.actions : []), context.connectorActions, Object.values(context.providers)) } : {},
|
|
22258
22328
|
...task != null && "executor" in task && task.executor.kind == "agent" ? { actionSummary: actionSummary(task.executor.tools, context.connectorActions, Object.values(context.providers)) } : {},
|
|
22259
22329
|
connectionRequired,
|
|
@@ -22293,8 +22363,10 @@ function designerGraph(draft, presentation = {}, diagnostics = [], connectorActi
|
|
|
22293
22363
|
const ports = new Map([...definitions].map(([nodeId, node]) => [nodeId, nodePorts(node, revision)]));
|
|
22294
22364
|
const edgeProjection = projectEdges(graph, nodeIds);
|
|
22295
22365
|
const layout = layoutNodes(nodeIds, edgeProjection.dependencies, edgeProjection.dependents);
|
|
22366
|
+
const direction = savedDirection(presentation);
|
|
22296
22367
|
const positions = savedPositions(presentation);
|
|
22297
22368
|
const hiddenNodeContent = savedHiddenNodeContent(presentation);
|
|
22369
|
+
const verticalNodeWidths = savedVerticalNodeWidths(presentation);
|
|
22298
22370
|
const context = {
|
|
22299
22371
|
connectionCatalogs,
|
|
22300
22372
|
connectorActions,
|
|
@@ -22306,11 +22378,18 @@ function designerGraph(draft, presentation = {}, diagnostics = [], connectorActi
|
|
|
22306
22378
|
t
|
|
22307
22379
|
};
|
|
22308
22380
|
const rows = /* @__PURE__ */ new Map();
|
|
22309
|
-
const
|
|
22381
|
+
const defaultNodes = layout.ordered.map((nodeId) => {
|
|
22310
22382
|
const column = layout.depth.get(nodeId) ?? 0;
|
|
22311
22383
|
const row = rows.get(column) ?? 0;
|
|
22312
22384
|
rows.set(column, row + 1);
|
|
22313
|
-
return {
|
|
22385
|
+
return direction === "vertical" ? {
|
|
22386
|
+
id: nodeId,
|
|
22387
|
+
column,
|
|
22388
|
+
x: 80 + row * 400,
|
|
22389
|
+
y: 80 + column * 240,
|
|
22390
|
+
width: 320,
|
|
22391
|
+
height: 160
|
|
22392
|
+
} : {
|
|
22314
22393
|
id: nodeId,
|
|
22315
22394
|
column,
|
|
22316
22395
|
x: 80 + column * 500,
|
|
@@ -22318,7 +22397,11 @@ function designerGraph(draft, presentation = {}, diagnostics = [], connectorActi
|
|
|
22318
22397
|
width: 420,
|
|
22319
22398
|
height: 240
|
|
22320
22399
|
};
|
|
22321
|
-
})
|
|
22400
|
+
});
|
|
22401
|
+
const automaticPositions = direction === "horizontal" ? wrapLayout(defaultNodes) : Object.fromEntries(defaultNodes.map(({ id, x, y }) => [id, {
|
|
22402
|
+
x,
|
|
22403
|
+
y
|
|
22404
|
+
}]));
|
|
22322
22405
|
const nodes = [];
|
|
22323
22406
|
for (const nodeId of layout.ordered) {
|
|
22324
22407
|
const position = positions[nodeId] ?? automaticPositions[nodeId];
|
|
@@ -22333,7 +22416,8 @@ function designerGraph(draft, presentation = {}, diagnostics = [], connectorActi
|
|
|
22333
22416
|
const node = semanticDesignerNode(nodeId, resolved, ports.get(nodeId), position, context);
|
|
22334
22417
|
nodes.push({
|
|
22335
22418
|
...node,
|
|
22336
|
-
contentHidden: hiddenNodeContent?.[nodeId] === true
|
|
22419
|
+
contentHidden: hiddenNodeContent?.[nodeId] === true,
|
|
22420
|
+
...node.kind === "condition" ? { verticalWidth: verticalNodeWidths[nodeId] } : {}
|
|
22337
22421
|
});
|
|
22338
22422
|
}
|
|
22339
22423
|
for (const [nodeId, comment] of Object.entries(savedComments(presentation, positions)).toSorted(([left], [right]) => left.localeCompare(right))) nodes.push({
|
|
@@ -22345,6 +22429,7 @@ function designerGraph(draft, presentation = {}, diagnostics = [], connectorActi
|
|
|
22345
22429
|
const order = new Map(savedOrder(presentation).map((nodeId, index) => [nodeId, index]));
|
|
22346
22430
|
nodes.sort((left, right) => (order.get(left.id) ?? -1) - (order.get(right.id) ?? -1));
|
|
22347
22431
|
return {
|
|
22432
|
+
direction,
|
|
22348
22433
|
edges: edgeProjection.edges,
|
|
22349
22434
|
nodes,
|
|
22350
22435
|
...projectedRun.status == null ? {} : { runStatus: projectedRun.status },
|
|
@@ -22352,6 +22437,695 @@ function designerGraph(draft, presentation = {}, diagnostics = [], connectorActi
|
|
|
22352
22437
|
};
|
|
22353
22438
|
}
|
|
22354
22439
|
//#endregion
|
|
22440
|
+
//#region ../../node_modules/.bun/idb-keyval@6.3.0/node_modules/idb-keyval/dist/index.js
|
|
22441
|
+
function promisifyRequest(request) {
|
|
22442
|
+
return new Promise((resolve, reject) => {
|
|
22443
|
+
request.oncomplete = request.onsuccess = () => resolve(request.result);
|
|
22444
|
+
request.onabort = request.onerror = () => reject(request.error);
|
|
22445
|
+
});
|
|
22446
|
+
}
|
|
22447
|
+
function createStore(dbName, storeName) {
|
|
22448
|
+
let dbp;
|
|
22449
|
+
const getDB = () => {
|
|
22450
|
+
if (dbp) return dbp;
|
|
22451
|
+
const request = indexedDB.open(dbName);
|
|
22452
|
+
request.onupgradeneeded = () => request.result.createObjectStore(storeName);
|
|
22453
|
+
dbp = promisifyRequest(request);
|
|
22454
|
+
dbp.then((db) => {
|
|
22455
|
+
db.onclose = () => dbp = void 0;
|
|
22456
|
+
}, () => {
|
|
22457
|
+
dbp = void 0;
|
|
22458
|
+
});
|
|
22459
|
+
return dbp;
|
|
22460
|
+
};
|
|
22461
|
+
return (txMode, callback) => getDB().then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName)));
|
|
22462
|
+
}
|
|
22463
|
+
//#endregion
|
|
22464
|
+
//#region ../../node_modules/.bun/@oomol-lab+resource-cache@0.1.6/node_modules/@oomol-lab/resource-cache/dist/src-D2zZfRsq.mjs
|
|
22465
|
+
function abortError() {
|
|
22466
|
+
return new DOMException("Cache operation aborted", "AbortError");
|
|
22467
|
+
}
|
|
22468
|
+
function wait(promise, lifetime, caller) {
|
|
22469
|
+
const signals = caller ? [lifetime, caller] : [lifetime];
|
|
22470
|
+
return new Promise((resolve, reject) => {
|
|
22471
|
+
const cleanup = () => {
|
|
22472
|
+
for (const signal of signals) signal.removeEventListener("abort", abort);
|
|
22473
|
+
};
|
|
22474
|
+
const abort = () => {
|
|
22475
|
+
cleanup();
|
|
22476
|
+
reject(abortError());
|
|
22477
|
+
};
|
|
22478
|
+
for (const signal of signals) signal.addEventListener("abort", abort, { once: true });
|
|
22479
|
+
promise.then((value) => {
|
|
22480
|
+
cleanup();
|
|
22481
|
+
resolve(value);
|
|
22482
|
+
}, (error) => {
|
|
22483
|
+
cleanup();
|
|
22484
|
+
reject(error);
|
|
22485
|
+
});
|
|
22486
|
+
});
|
|
22487
|
+
}
|
|
22488
|
+
/** @internal */
|
|
22489
|
+
function validateOptions(options) {
|
|
22490
|
+
if (typeof options.namespace !== "string" || !options.namespace.trim()) throw new TypeError("namespace must be nonempty");
|
|
22491
|
+
if (!Number.isSafeInteger(options.schemaVersion) || options.schemaVersion <= 0) throw new TypeError("schemaVersion must be a positive safe integer");
|
|
22492
|
+
if (!Number.isFinite(options.maxAge) || options.maxAge < 0) throw new TypeError("maxAge must be finite and nonnegative");
|
|
22493
|
+
for (const name of [
|
|
22494
|
+
"key",
|
|
22495
|
+
"decode",
|
|
22496
|
+
"load"
|
|
22497
|
+
]) if (typeof options[name] !== "function") throw new TypeError(`${name} must be a function`);
|
|
22498
|
+
}
|
|
22499
|
+
/** @internal */
|
|
22500
|
+
function createCache(options, backend, session) {
|
|
22501
|
+
const states = /* @__PURE__ */ new Map();
|
|
22502
|
+
let disposed = false;
|
|
22503
|
+
let scopeBlocked = false;
|
|
22504
|
+
let disposal;
|
|
22505
|
+
let io = Promise.resolve();
|
|
22506
|
+
function storage(action) {
|
|
22507
|
+
const result = io.then(action);
|
|
22508
|
+
io = result.catch(() => {});
|
|
22509
|
+
return result;
|
|
22510
|
+
}
|
|
22511
|
+
function checkOpen() {
|
|
22512
|
+
if (disposed) throw new Error("Cache is disposed");
|
|
22513
|
+
}
|
|
22514
|
+
function identity(query) {
|
|
22515
|
+
checkOpen();
|
|
22516
|
+
const key = options.key(query);
|
|
22517
|
+
if (typeof key !== "string") throw new TypeError("key must return a string");
|
|
22518
|
+
return key;
|
|
22519
|
+
}
|
|
22520
|
+
function stateFor(key) {
|
|
22521
|
+
let state = states.get(key);
|
|
22522
|
+
if (!state) {
|
|
22523
|
+
state = {
|
|
22524
|
+
controller: new AbortController(),
|
|
22525
|
+
blocked: scopeBlocked
|
|
22526
|
+
};
|
|
22527
|
+
states.set(key, state);
|
|
22528
|
+
}
|
|
22529
|
+
return state;
|
|
22530
|
+
}
|
|
22531
|
+
function checkState(state) {
|
|
22532
|
+
if (state.controller.signal.aborted) throw abortError();
|
|
22533
|
+
}
|
|
22534
|
+
function fresh(entry) {
|
|
22535
|
+
const now = Date.now();
|
|
22536
|
+
return !entry.invalidated && entry.validatedAt <= now && now - entry.validatedAt < options.maxAge;
|
|
22537
|
+
}
|
|
22538
|
+
function restore(value, previous) {
|
|
22539
|
+
return {
|
|
22540
|
+
...value.meta,
|
|
22541
|
+
data: value.body ? options.decode(value.body.data) : previous.data
|
|
22542
|
+
};
|
|
22543
|
+
}
|
|
22544
|
+
async function read(key, state) {
|
|
22545
|
+
if (state.entry && fresh(state.entry)) return state.entry;
|
|
22546
|
+
const entry = await storage(async () => {
|
|
22547
|
+
checkState(state);
|
|
22548
|
+
if (state.blocked) return state.entry;
|
|
22549
|
+
try {
|
|
22550
|
+
const value = await backend.read(key, state.entry?.version);
|
|
22551
|
+
return value ? restore(value, state.entry) : state.entry;
|
|
22552
|
+
} catch {
|
|
22553
|
+
return state.entry;
|
|
22554
|
+
}
|
|
22555
|
+
});
|
|
22556
|
+
checkState(state);
|
|
22557
|
+
state.entry = entry;
|
|
22558
|
+
return entry;
|
|
22559
|
+
}
|
|
22560
|
+
function schedule(key, query, state, force) {
|
|
22561
|
+
const job = {
|
|
22562
|
+
started: false,
|
|
22563
|
+
force
|
|
22564
|
+
};
|
|
22565
|
+
job.promise = (async () => {
|
|
22566
|
+
const previous = await read(key, state);
|
|
22567
|
+
checkState(state);
|
|
22568
|
+
if (!job.force && previous && fresh(previous)) return previous.data;
|
|
22569
|
+
job.started = true;
|
|
22570
|
+
const result = await options.load(query, {
|
|
22571
|
+
etag: previous?.etag ?? null,
|
|
22572
|
+
signal: state.controller.signal
|
|
22573
|
+
});
|
|
22574
|
+
checkState(state);
|
|
22575
|
+
let entry;
|
|
22576
|
+
if (result.modified) entry = {
|
|
22577
|
+
data: result.data,
|
|
22578
|
+
etag: result.etag,
|
|
22579
|
+
version: crypto.getRandomValues(/* @__PURE__ */ new Uint32Array(4)).join("-"),
|
|
22580
|
+
validatedAt: Date.now(),
|
|
22581
|
+
invalidated: false
|
|
22582
|
+
};
|
|
22583
|
+
else {
|
|
22584
|
+
if (!previous) throw new Error("Load protocol error: unmodified response without cached data");
|
|
22585
|
+
entry = {
|
|
22586
|
+
...previous,
|
|
22587
|
+
etag: result.etag === void 0 ? previous.etag : result.etag,
|
|
22588
|
+
validatedAt: Date.now(),
|
|
22589
|
+
invalidated: false
|
|
22590
|
+
};
|
|
22591
|
+
}
|
|
22592
|
+
await storage(async () => {
|
|
22593
|
+
checkState(state);
|
|
22594
|
+
try {
|
|
22595
|
+
if (await backend.write(key, entry, result.modified)) state.blocked = false;
|
|
22596
|
+
} catch {
|
|
22597
|
+
state.blocked = true;
|
|
22598
|
+
}
|
|
22599
|
+
checkState(state);
|
|
22600
|
+
state.entry = entry;
|
|
22601
|
+
});
|
|
22602
|
+
checkState(state);
|
|
22603
|
+
return entry.data;
|
|
22604
|
+
})();
|
|
22605
|
+
state.job = job;
|
|
22606
|
+
const release = () => {
|
|
22607
|
+
state.job = void 0;
|
|
22608
|
+
};
|
|
22609
|
+
job.promise.then(release, release);
|
|
22610
|
+
return job;
|
|
22611
|
+
}
|
|
22612
|
+
function refresh(key, query, state, force) {
|
|
22613
|
+
const active = state.job;
|
|
22614
|
+
if (!active) return schedule(key, query, state, force).promise;
|
|
22615
|
+
if (!force) return active.promise;
|
|
22616
|
+
if (!active.started) {
|
|
22617
|
+
active.force = true;
|
|
22618
|
+
return active.promise;
|
|
22619
|
+
}
|
|
22620
|
+
if (!state.queued) {
|
|
22621
|
+
const start = () => {
|
|
22622
|
+
checkState(state);
|
|
22623
|
+
state.queued = void 0;
|
|
22624
|
+
return schedule(key, query, state, true).promise;
|
|
22625
|
+
};
|
|
22626
|
+
state.queued = active.promise.then(start, start);
|
|
22627
|
+
}
|
|
22628
|
+
return state.queued;
|
|
22629
|
+
}
|
|
22630
|
+
function reset(key, keep) {
|
|
22631
|
+
const old = states.get(key);
|
|
22632
|
+
const state = {
|
|
22633
|
+
controller: new AbortController(),
|
|
22634
|
+
blocked: true
|
|
22635
|
+
};
|
|
22636
|
+
if (keep && old?.entry) state.entry = {
|
|
22637
|
+
...old.entry,
|
|
22638
|
+
invalidated: true
|
|
22639
|
+
};
|
|
22640
|
+
states.set(key, state);
|
|
22641
|
+
return {
|
|
22642
|
+
state,
|
|
22643
|
+
cancel: () => old?.controller.abort()
|
|
22644
|
+
};
|
|
22645
|
+
}
|
|
22646
|
+
function resetAll() {
|
|
22647
|
+
const old = [...states.values()];
|
|
22648
|
+
states.clear();
|
|
22649
|
+
const barrier = {};
|
|
22650
|
+
scopeBlocked = barrier;
|
|
22651
|
+
return {
|
|
22652
|
+
barrier,
|
|
22653
|
+
cancel() {
|
|
22654
|
+
for (const state of old) state.controller.abort();
|
|
22655
|
+
}
|
|
22656
|
+
};
|
|
22657
|
+
}
|
|
22658
|
+
return {
|
|
22659
|
+
async get(query, getOptions = {}) {
|
|
22660
|
+
const key = identity(query);
|
|
22661
|
+
if (getOptions.signal?.aborted) throw abortError();
|
|
22662
|
+
const state = stateFor(key);
|
|
22663
|
+
if (!getOptions.revalidate && state.entry && fresh(state.entry)) return state.entry.data;
|
|
22664
|
+
return wait(refresh(key, query, state, getOptions.revalidate === true), state.controller.signal, getOptions.signal);
|
|
22665
|
+
},
|
|
22666
|
+
async peek(query) {
|
|
22667
|
+
const key = identity(query);
|
|
22668
|
+
const state = stateFor(key);
|
|
22669
|
+
const entry = await wait(read(key, state), state.controller.signal);
|
|
22670
|
+
return entry ? {
|
|
22671
|
+
data: entry.data,
|
|
22672
|
+
etag: entry.etag,
|
|
22673
|
+
validatedAt: entry.validatedAt,
|
|
22674
|
+
fresh: fresh(entry)
|
|
22675
|
+
} : void 0;
|
|
22676
|
+
},
|
|
22677
|
+
async invalidate(query) {
|
|
22678
|
+
const key = identity(query);
|
|
22679
|
+
const canRestore = !(states.get(key)?.blocked ?? scopeBlocked);
|
|
22680
|
+
const { state, cancel } = reset(key, true);
|
|
22681
|
+
const cleanup = storage(async () => {
|
|
22682
|
+
const value = await backend.invalidate(key);
|
|
22683
|
+
if (canRestore) state.blocked = false;
|
|
22684
|
+
if (canRestore && !state.controller.signal.aborted && !state.entry && value) try {
|
|
22685
|
+
state.entry = restore(value);
|
|
22686
|
+
} catch {}
|
|
22687
|
+
});
|
|
22688
|
+
cancel();
|
|
22689
|
+
await cleanup;
|
|
22690
|
+
},
|
|
22691
|
+
async remove(query) {
|
|
22692
|
+
const key = identity(query);
|
|
22693
|
+
const { state, cancel } = reset(key, false);
|
|
22694
|
+
const cleanup = storage(async () => {
|
|
22695
|
+
await backend.remove(key);
|
|
22696
|
+
state.blocked = false;
|
|
22697
|
+
});
|
|
22698
|
+
cancel();
|
|
22699
|
+
await cleanup;
|
|
22700
|
+
},
|
|
22701
|
+
async clear() {
|
|
22702
|
+
checkOpen();
|
|
22703
|
+
const { barrier, cancel } = resetAll();
|
|
22704
|
+
const cleanup = storage(async () => {
|
|
22705
|
+
await backend.clear(false);
|
|
22706
|
+
if (scopeBlocked === barrier) scopeBlocked = false;
|
|
22707
|
+
for (const state of states.values()) if (state.blocked === barrier) state.blocked = false;
|
|
22708
|
+
});
|
|
22709
|
+
cancel();
|
|
22710
|
+
await cleanup;
|
|
22711
|
+
},
|
|
22712
|
+
dispose() {
|
|
22713
|
+
if (!disposal) {
|
|
22714
|
+
disposed = true;
|
|
22715
|
+
const { cancel } = resetAll();
|
|
22716
|
+
disposal = storage(async () => {
|
|
22717
|
+
if (session) await backend.clear(true);
|
|
22718
|
+
});
|
|
22719
|
+
disposal = disposal.catch((error) => {
|
|
22720
|
+
disposal = void 0;
|
|
22721
|
+
throw error;
|
|
22722
|
+
});
|
|
22723
|
+
cancel();
|
|
22724
|
+
}
|
|
22725
|
+
return disposal;
|
|
22726
|
+
}
|
|
22727
|
+
};
|
|
22728
|
+
}
|
|
22729
|
+
function object(value) {
|
|
22730
|
+
return typeof value === "object" && value !== null;
|
|
22731
|
+
}
|
|
22732
|
+
function metadata(value) {
|
|
22733
|
+
if (!object(value) || typeof value.version !== "string" || !value.version || !(value.etag === null || typeof value.etag === "string") || typeof value.invalidated !== "boolean") return void 0;
|
|
22734
|
+
const validTime = typeof value.validatedAt === "number" && Number.isFinite(value.validatedAt) && value.validatedAt >= 0;
|
|
22735
|
+
return {
|
|
22736
|
+
version: value.version,
|
|
22737
|
+
etag: value.etag,
|
|
22738
|
+
validatedAt: validTime ? value.validatedAt : 0,
|
|
22739
|
+
invalidated: !validTime || value.invalidated === true
|
|
22740
|
+
};
|
|
22741
|
+
}
|
|
22742
|
+
function stored(meta, body) {
|
|
22743
|
+
if (!object(body) || body.version !== meta.version || !Object.hasOwn(body, "data")) return void 0;
|
|
22744
|
+
return {
|
|
22745
|
+
meta,
|
|
22746
|
+
body: { data: body.data }
|
|
22747
|
+
};
|
|
22748
|
+
}
|
|
22749
|
+
var storagePrefix = "@oomol-lab/resource-cache:";
|
|
22750
|
+
/** Delimit identity fields without ambiguous string concatenation. @internal */
|
|
22751
|
+
function scope(namespace) {
|
|
22752
|
+
return storagePrefix + JSON.stringify(namespace);
|
|
22753
|
+
}
|
|
22754
|
+
/** @internal */
|
|
22755
|
+
function sessionScope(namespace, sessionId) {
|
|
22756
|
+
return storagePrefix + JSON.stringify([namespace, sessionId]);
|
|
22757
|
+
}
|
|
22758
|
+
/** @internal */
|
|
22759
|
+
function persistentStorage(namespace, schemaVersion) {
|
|
22760
|
+
const useStore = createStore("@oomol-lab/resource-cache", "records");
|
|
22761
|
+
const prefix = `${scope(namespace)}:${schemaVersion}:`;
|
|
22762
|
+
const identity = (key, part) => prefix + JSON.stringify([key, part]);
|
|
22763
|
+
function transaction(mode, work) {
|
|
22764
|
+
return useStore(mode, (store) => new Promise((resolve, reject) => {
|
|
22765
|
+
const tx = store.transaction;
|
|
22766
|
+
let value;
|
|
22767
|
+
let failure;
|
|
22768
|
+
tx.oncomplete = () => resolve(value);
|
|
22769
|
+
tx.onabort = () => reject(failure ?? tx.error);
|
|
22770
|
+
const guard = (fn) => {
|
|
22771
|
+
try {
|
|
22772
|
+
fn();
|
|
22773
|
+
} catch (error) {
|
|
22774
|
+
failure = error;
|
|
22775
|
+
tx.abort();
|
|
22776
|
+
}
|
|
22777
|
+
};
|
|
22778
|
+
const read = (request, fn) => {
|
|
22779
|
+
request.onsuccess = () => guard(() => fn(request.result));
|
|
22780
|
+
};
|
|
22781
|
+
guard(() => work(store, read, (result) => {
|
|
22782
|
+
value = result;
|
|
22783
|
+
}));
|
|
22784
|
+
}));
|
|
22785
|
+
}
|
|
22786
|
+
return {
|
|
22787
|
+
read(key, version) {
|
|
22788
|
+
return transaction("readonly", (store, read, result) => {
|
|
22789
|
+
read(store.get(identity(key, "meta")), (raw) => {
|
|
22790
|
+
const meta = metadata(raw);
|
|
22791
|
+
if (!meta) return;
|
|
22792
|
+
if (meta.version === version) {
|
|
22793
|
+
result({ meta });
|
|
22794
|
+
return;
|
|
22795
|
+
}
|
|
22796
|
+
read(store.get(identity(key, "body")), (body) => result(stored(meta, body)));
|
|
22797
|
+
});
|
|
22798
|
+
});
|
|
22799
|
+
},
|
|
22800
|
+
write(key, entry, modified) {
|
|
22801
|
+
return transaction("readwrite", (store, read, result) => {
|
|
22802
|
+
const { data, ...meta } = entry;
|
|
22803
|
+
if (modified) {
|
|
22804
|
+
store.put(meta, identity(key, "meta"));
|
|
22805
|
+
store.put({
|
|
22806
|
+
version: meta.version,
|
|
22807
|
+
data
|
|
22808
|
+
}, identity(key, "body"));
|
|
22809
|
+
result(true);
|
|
22810
|
+
} else read(store.get(identity(key, "meta")), (raw) => {
|
|
22811
|
+
const matches = metadata(raw)?.version === meta.version;
|
|
22812
|
+
if (matches) store.put(meta, identity(key, "meta"));
|
|
22813
|
+
result(matches);
|
|
22814
|
+
});
|
|
22815
|
+
});
|
|
22816
|
+
},
|
|
22817
|
+
invalidate(key) {
|
|
22818
|
+
return transaction("readwrite", (store, read, result) => {
|
|
22819
|
+
read(store.get(identity(key, "meta")), (raw) => {
|
|
22820
|
+
const meta = metadata(raw);
|
|
22821
|
+
if (!meta) return;
|
|
22822
|
+
meta.invalidated = true;
|
|
22823
|
+
store.put(meta, identity(key, "meta"));
|
|
22824
|
+
read(store.get(identity(key, "body")), (body) => result(stored(meta, body)));
|
|
22825
|
+
});
|
|
22826
|
+
});
|
|
22827
|
+
},
|
|
22828
|
+
remove(key) {
|
|
22829
|
+
return transaction("readwrite", (store) => {
|
|
22830
|
+
store.delete(identity(key, "meta"));
|
|
22831
|
+
store.delete(identity(key, "body"));
|
|
22832
|
+
});
|
|
22833
|
+
},
|
|
22834
|
+
clear() {
|
|
22835
|
+
return transaction("readwrite", (store, read) => {
|
|
22836
|
+
read(store.getAllKeys(), (keys) => {
|
|
22837
|
+
for (const key of keys) if (typeof key === "string" && key.startsWith(prefix)) store.delete(key);
|
|
22838
|
+
});
|
|
22839
|
+
});
|
|
22840
|
+
}
|
|
22841
|
+
};
|
|
22842
|
+
}
|
|
22843
|
+
/** @internal */
|
|
22844
|
+
function sessionStorageBackend(namespace, schemaVersion, sessionId) {
|
|
22845
|
+
const base = `${sessionScope(namespace, sessionId)}:`;
|
|
22846
|
+
const prefix = `${base}${schemaVersion}:`;
|
|
22847
|
+
const identity = (key) => prefix + JSON.stringify(key);
|
|
22848
|
+
const record = (key) => {
|
|
22849
|
+
const text = globalThis.sessionStorage.getItem(identity(key));
|
|
22850
|
+
if (text === null) return void 0;
|
|
22851
|
+
const raw = JSON.parse(text);
|
|
22852
|
+
const meta = metadata(raw);
|
|
22853
|
+
return meta ? stored(meta, raw) : void 0;
|
|
22854
|
+
};
|
|
22855
|
+
return {
|
|
22856
|
+
async read(key, version) {
|
|
22857
|
+
const value = record(key);
|
|
22858
|
+
if (value && value.meta.version === version) return { meta: value.meta };
|
|
22859
|
+
return value;
|
|
22860
|
+
},
|
|
22861
|
+
async write(key, entry, modified) {
|
|
22862
|
+
if (modified) {
|
|
22863
|
+
globalThis.sessionStorage.setItem(identity(key), JSON.stringify(entry));
|
|
22864
|
+
return true;
|
|
22865
|
+
} else {
|
|
22866
|
+
const value = record(key);
|
|
22867
|
+
if (value?.meta.version === entry.version) {
|
|
22868
|
+
const { data: _data, ...meta } = entry;
|
|
22869
|
+
globalThis.sessionStorage.setItem(identity(key), JSON.stringify({
|
|
22870
|
+
...meta,
|
|
22871
|
+
data: value.body.data
|
|
22872
|
+
}));
|
|
22873
|
+
return true;
|
|
22874
|
+
}
|
|
22875
|
+
return false;
|
|
22876
|
+
}
|
|
22877
|
+
},
|
|
22878
|
+
async invalidate(key) {
|
|
22879
|
+
const value = record(key);
|
|
22880
|
+
if (value) {
|
|
22881
|
+
value.meta.invalidated = true;
|
|
22882
|
+
globalThis.sessionStorage.setItem(identity(key), JSON.stringify({
|
|
22883
|
+
...value.meta,
|
|
22884
|
+
...value.body
|
|
22885
|
+
}));
|
|
22886
|
+
}
|
|
22887
|
+
return value;
|
|
22888
|
+
},
|
|
22889
|
+
async remove(key) {
|
|
22890
|
+
globalThis.sessionStorage.removeItem(identity(key));
|
|
22891
|
+
},
|
|
22892
|
+
async clear(allVersions) {
|
|
22893
|
+
const storage = globalThis.sessionStorage;
|
|
22894
|
+
const matches = [];
|
|
22895
|
+
for (let i = 0; i < storage.length; i++) {
|
|
22896
|
+
const key = storage.key(i);
|
|
22897
|
+
if (key.startsWith(allVersions ? base : prefix)) matches.push(key);
|
|
22898
|
+
}
|
|
22899
|
+
for (const key of matches) storage.removeItem(key);
|
|
22900
|
+
}
|
|
22901
|
+
};
|
|
22902
|
+
}
|
|
22903
|
+
/** Conditional JSON GET. The caller owns the endpoint, credentials, timeout and response decoder. */
|
|
22904
|
+
async function loadJson(url, validation, decode, init) {
|
|
22905
|
+
const headers = new Headers(init?.headers);
|
|
22906
|
+
if (validation.etag !== null) headers.set("If-None-Match", validation.etag);
|
|
22907
|
+
else headers.delete("If-None-Match");
|
|
22908
|
+
const response = await fetch(url, {
|
|
22909
|
+
...init,
|
|
22910
|
+
method: "GET",
|
|
22911
|
+
headers,
|
|
22912
|
+
signal: init?.signal ? AbortSignal.any([validation.signal, init.signal]) : validation.signal
|
|
22913
|
+
});
|
|
22914
|
+
if (response.status === 304) return {
|
|
22915
|
+
modified: false,
|
|
22916
|
+
etag: response.headers.get("ETag") ?? void 0
|
|
22917
|
+
};
|
|
22918
|
+
if (!response.ok) throw new Error(`JSON request failed: ${response.status}`);
|
|
22919
|
+
return {
|
|
22920
|
+
modified: true,
|
|
22921
|
+
data: decode(await response.json()),
|
|
22922
|
+
etag: response.headers.get("ETag")
|
|
22923
|
+
};
|
|
22924
|
+
}
|
|
22925
|
+
/** Create an IndexedDB cache. Storage failures preserve successful network results. */
|
|
22926
|
+
function createPersistentCache(options) {
|
|
22927
|
+
validateOptions(options);
|
|
22928
|
+
return createCache({ ...options }, persistentStorage(options.namespace, options.schemaVersion), false);
|
|
22929
|
+
}
|
|
22930
|
+
/** Create a login-scoped sessionStorage cache. Data must survive JSON serialization and decoding. */
|
|
22931
|
+
function createSessionCache(options) {
|
|
22932
|
+
validateOptions(options);
|
|
22933
|
+
if (typeof options.sessionId !== "string" || !options.sessionId.trim()) throw new TypeError("sessionId must be nonempty");
|
|
22934
|
+
return createCache({ ...options }, sessionStorageBackend(options.namespace, options.schemaVersion, options.sessionId), true);
|
|
22935
|
+
}
|
|
22936
|
+
//#endregion
|
|
22937
|
+
//#region ../../node_modules/.bun/@oomol-lab+resource-cache@0.1.6/node_modules/@oomol-lab/resource-cache/dist/oomol.mjs
|
|
22938
|
+
function record(value) {
|
|
22939
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) throw new Error("Invalid public app response");
|
|
22940
|
+
return value;
|
|
22941
|
+
}
|
|
22942
|
+
function text(value) {
|
|
22943
|
+
if (typeof value !== "string") throw new Error("Invalid public app text");
|
|
22944
|
+
}
|
|
22945
|
+
function dimension(value) {
|
|
22946
|
+
if (typeof value !== "number" || !Number.isSafeInteger(value) || value <= 0) throw new Error("Invalid sprite dimensions");
|
|
22947
|
+
return value;
|
|
22948
|
+
}
|
|
22949
|
+
function decodeSprite(value) {
|
|
22950
|
+
if (value == null) return null;
|
|
22951
|
+
const sprite = record(value);
|
|
22952
|
+
const dimensions = {
|
|
22953
|
+
width: dimension(sprite.width),
|
|
22954
|
+
height: dimension(sprite.height),
|
|
22955
|
+
iconSize: dimension(sprite.iconSize)
|
|
22956
|
+
};
|
|
22957
|
+
for (const key of ["lightUrl", "darkUrl"]) {
|
|
22958
|
+
text(sprite[key]);
|
|
22959
|
+
if (new URL(sprite[key]).protocol !== "https:") throw new Error("Invalid sprite URL");
|
|
22960
|
+
}
|
|
22961
|
+
return dimensions;
|
|
22962
|
+
}
|
|
22963
|
+
/** Validate public catalog display fields and sprite coordinates, preserving the complete upstream response. */
|
|
22964
|
+
function decodeAppCatalogResponse(value) {
|
|
22965
|
+
const response = record(value);
|
|
22966
|
+
if (response.success !== true || !Array.isArray(response.data)) throw new Error("Invalid app catalog");
|
|
22967
|
+
const sprite = decodeSprite(record(response.meta).iconSprite);
|
|
22968
|
+
for (const item of response.data) {
|
|
22969
|
+
const app = record(item);
|
|
22970
|
+
text(app.service);
|
|
22971
|
+
text(app.displayName);
|
|
22972
|
+
if (!Array.isArray(app.categories)) throw new Error("Invalid app categories");
|
|
22973
|
+
for (const category of app.categories) {
|
|
22974
|
+
const item = record(category);
|
|
22975
|
+
text(item.id);
|
|
22976
|
+
text(item.displayName);
|
|
22977
|
+
}
|
|
22978
|
+
if (!Array.isArray(app.searchAliases) || !app.searchAliases.every((alias) => typeof alias === "string")) throw new Error("Invalid app aliases");
|
|
22979
|
+
if (app.iconSpritePosition != null) {
|
|
22980
|
+
if (!sprite) throw new Error("Sprite position requires sprite metadata");
|
|
22981
|
+
const position = record(app.iconSpritePosition);
|
|
22982
|
+
for (const [coordinate, size] of [[position.x, sprite.width], [position.y, sprite.height]]) if (typeof coordinate !== "number" || !Number.isSafeInteger(coordinate) || coordinate < 0 || coordinate + sprite.iconSize > size) throw new Error("Invalid sprite position");
|
|
22983
|
+
}
|
|
22984
|
+
}
|
|
22985
|
+
return value;
|
|
22986
|
+
}
|
|
22987
|
+
/** Namespaces reserved for the OOMOL response factories. */
|
|
22988
|
+
var oomolNamespaces = {
|
|
22989
|
+
providers: "oomol:providers",
|
|
22990
|
+
actions: "oomol:actions",
|
|
22991
|
+
appCatalog: "oomol:app-catalog",
|
|
22992
|
+
appMarketing: "oomol:app-marketing",
|
|
22993
|
+
connections: "oomol:connections"
|
|
22994
|
+
};
|
|
22995
|
+
/** Join identity fields without nesting JSON in the storage key. */
|
|
22996
|
+
function readableKey(...parts) {
|
|
22997
|
+
return parts.map((part) => encodeURIComponent(String(part)).replaceAll("%3A", ":")).join("/");
|
|
22998
|
+
}
|
|
22999
|
+
var singletonRegistrySymbol = Symbol.for("oomol-lab.resource-cache.oomol-singletons");
|
|
23000
|
+
var singletonCaches = Reflect.get(globalThis, singletonRegistrySymbol) ?? (() => {
|
|
23001
|
+
const registry = /* @__PURE__ */ new Map();
|
|
23002
|
+
Reflect.set(globalThis, singletonRegistrySymbol, registry);
|
|
23003
|
+
return registry;
|
|
23004
|
+
})();
|
|
23005
|
+
function createOomolCache(resource, options, query) {
|
|
23006
|
+
const environment = validateOomolOptions(options);
|
|
23007
|
+
const { load } = options;
|
|
23008
|
+
const key = readableKey(query.locale);
|
|
23009
|
+
return createPersistentCache({
|
|
23010
|
+
namespace: readableKey(resource, environment),
|
|
23011
|
+
schemaVersion: options.schemaVersion,
|
|
23012
|
+
maxAge: options.maxAge,
|
|
23013
|
+
key: () => key,
|
|
23014
|
+
decode: options.decode,
|
|
23015
|
+
load: (_query, validation) => load({ ...query }, validation)
|
|
23016
|
+
});
|
|
23017
|
+
}
|
|
23018
|
+
function createConnectionsCacheInternal(options, validated) {
|
|
23019
|
+
const { environment, ownerId } = validated;
|
|
23020
|
+
const { load } = options;
|
|
23021
|
+
const key = readableKey(ownerId);
|
|
23022
|
+
return createSessionCache({
|
|
23023
|
+
namespace: readableKey(oomolNamespaces.connections, environment),
|
|
23024
|
+
schemaVersion: options.schemaVersion,
|
|
23025
|
+
maxAge: options.maxAge,
|
|
23026
|
+
sessionId: options.sessionId,
|
|
23027
|
+
key: () => key,
|
|
23028
|
+
decode: options.decode,
|
|
23029
|
+
load: (_query, validation) => load({ ownerId }, validation)
|
|
23030
|
+
});
|
|
23031
|
+
}
|
|
23032
|
+
function validateOomolOptions(options) {
|
|
23033
|
+
const environment = normalizeEnvironment(options.environment);
|
|
23034
|
+
if (typeof options.locale !== "string" || !options.locale.trim()) throw new TypeError("locale must be nonempty");
|
|
23035
|
+
if (typeof options.load !== "function") throw new TypeError("load must be a function");
|
|
23036
|
+
return environment;
|
|
23037
|
+
}
|
|
23038
|
+
function normalizeEnvironment(value) {
|
|
23039
|
+
const environment = value === void 0 ? "production" : value;
|
|
23040
|
+
if (typeof environment !== "string" || !environment.trim()) throw new TypeError("environment must be nonempty");
|
|
23041
|
+
return environment;
|
|
23042
|
+
}
|
|
23043
|
+
function normalizeOwnerId(value) {
|
|
23044
|
+
if (typeof value !== "string" || !value.trim()) throw new TypeError("ownerId must be nonempty");
|
|
23045
|
+
return value;
|
|
23046
|
+
}
|
|
23047
|
+
function validateConnectionsOptions(options) {
|
|
23048
|
+
const environment = normalizeEnvironment(options.environment);
|
|
23049
|
+
if (typeof options.sessionId !== "string" || !options.sessionId.trim()) throw new TypeError("sessionId must be nonempty");
|
|
23050
|
+
const ownerId = normalizeOwnerId(options.ownerId);
|
|
23051
|
+
if (typeof options.load !== "function") throw new TypeError("load must be a function");
|
|
23052
|
+
return {
|
|
23053
|
+
environment,
|
|
23054
|
+
ownerId
|
|
23055
|
+
};
|
|
23056
|
+
}
|
|
23057
|
+
/** Create an IndexedDB cache for the account-independent GET /v1/providers response, keyed by environment and locale. */
|
|
23058
|
+
function createProvidersCacheInternal(options) {
|
|
23059
|
+
return createOomolCache(oomolNamespaces.providers, options, { locale: options.locale });
|
|
23060
|
+
}
|
|
23061
|
+
/** Create an account-independent cache keyed by environment, locale and service. */
|
|
23062
|
+
function createServiceCache(resource, options) {
|
|
23063
|
+
const environment = validateOomolOptions(options);
|
|
23064
|
+
const { locale, load } = options;
|
|
23065
|
+
return createPersistentCache({
|
|
23066
|
+
namespace: readableKey(resource, environment),
|
|
23067
|
+
schemaVersion: options.schemaVersion,
|
|
23068
|
+
maxAge: options.maxAge,
|
|
23069
|
+
key: (service) => {
|
|
23070
|
+
if (typeof service !== "string" || !service.trim()) throw new TypeError("service must be nonempty");
|
|
23071
|
+
return readableKey(locale, service);
|
|
23072
|
+
},
|
|
23073
|
+
decode: options.decode,
|
|
23074
|
+
load: (service, validation) => load({
|
|
23075
|
+
locale,
|
|
23076
|
+
service
|
|
23077
|
+
}, validation)
|
|
23078
|
+
});
|
|
23079
|
+
}
|
|
23080
|
+
/** Create an IndexedDB cache for the account-independent GET /public/v1/apps response, keyed by environment and locale. */
|
|
23081
|
+
function createAppCatalogCacheInternal(options) {
|
|
23082
|
+
return createOomolCache(oomolNamespaces.appCatalog, options, { locale: options.locale });
|
|
23083
|
+
}
|
|
23084
|
+
function singletonKey(resource, options, query, sessionId) {
|
|
23085
|
+
const environment = normalizeEnvironment(options.environment);
|
|
23086
|
+
return sessionId === void 0 ? readableKey(resource, environment, options.schemaVersion, ...query) : readableKey(resource, environment, options.schemaVersion, sessionId, ...query);
|
|
23087
|
+
}
|
|
23088
|
+
function getSingleton(key, create) {
|
|
23089
|
+
const existing = singletonCaches.get(key);
|
|
23090
|
+
if (existing) return existing;
|
|
23091
|
+
const cache = create();
|
|
23092
|
+
let disposal;
|
|
23093
|
+
const singleton = {
|
|
23094
|
+
...cache,
|
|
23095
|
+
dispose() {
|
|
23096
|
+
if (!disposal) disposal = cache.dispose().then(() => {
|
|
23097
|
+
singletonCaches.delete(key);
|
|
23098
|
+
}, (error) => {
|
|
23099
|
+
disposal = void 0;
|
|
23100
|
+
throw error;
|
|
23101
|
+
});
|
|
23102
|
+
return disposal;
|
|
23103
|
+
}
|
|
23104
|
+
};
|
|
23105
|
+
singletonCaches.set(key, singleton);
|
|
23106
|
+
return singleton;
|
|
23107
|
+
}
|
|
23108
|
+
/** Return the shared Providers cache for one environment, locale and schema version. */
|
|
23109
|
+
function getProvidersCache(options) {
|
|
23110
|
+
const query = { locale: options.locale };
|
|
23111
|
+
return getSingleton(singletonKey(oomolNamespaces.providers, options, [query.locale]), () => createProvidersCacheInternal(options));
|
|
23112
|
+
}
|
|
23113
|
+
/** Return the shared GET /v1/actions?service=… cache for one environment, locale and schema version. */
|
|
23114
|
+
function getActionsCache(options) {
|
|
23115
|
+
return getSingleton(singletonKey(oomolNamespaces.actions, options, [options.locale]), () => createServiceCache(oomolNamespaces.actions, options));
|
|
23116
|
+
}
|
|
23117
|
+
/** Return the shared App Catalog cache for one environment, locale and schema version. */
|
|
23118
|
+
function getAppCatalogCache(options) {
|
|
23119
|
+
const query = { locale: options.locale };
|
|
23120
|
+
return getSingleton(singletonKey(oomolNamespaces.appCatalog, options, [query.locale]), () => createAppCatalogCacheInternal(options));
|
|
23121
|
+
}
|
|
23122
|
+
/** Return the shared sessionStorage cache for one login session and owner scope. */
|
|
23123
|
+
function getConnectionsCache(options) {
|
|
23124
|
+
const validated = validateConnectionsOptions(options);
|
|
23125
|
+
const query = { ownerId: validated.ownerId };
|
|
23126
|
+
return getSingleton(singletonKey(oomolNamespaces.connections, options, [query.ownerId], options.sessionId), () => createConnectionsCacheInternal(options, validated));
|
|
23127
|
+
}
|
|
23128
|
+
//#endregion
|
|
22355
23129
|
//#region src/connector/common/actionSchema.ts
|
|
22356
23130
|
function connectorActionPorts(inputSchema, outputSchema) {
|
|
22357
23131
|
const inputs = inputPorts(inputSchema);
|
|
@@ -22465,6 +23239,68 @@ function resolveLocalReference(root, reference) {
|
|
|
22465
23239
|
return current;
|
|
22466
23240
|
}
|
|
22467
23241
|
//#endregion
|
|
23242
|
+
//#region src/workbench/browser/runtime/stores/proxyCatalog.ts
|
|
23243
|
+
/** Validate the fields we consume without discarding upstream representation fields. */
|
|
23244
|
+
function proxyResponse(value, validate) {
|
|
23245
|
+
const source = record$2(value);
|
|
23246
|
+
if (source.success === false) throw new ApiError(502, typeof source.errorCode == "string" ? source.errorCode : "connector.unavailable", typeof source.message == "string" ? source.message : "Connector request failed.");
|
|
23247
|
+
if (source.success !== true || !Array.isArray(source.data)) return invalidResponse();
|
|
23248
|
+
if (validate != null) for (const item of source.data) validate(record$2(item));
|
|
23249
|
+
return source;
|
|
23250
|
+
}
|
|
23251
|
+
function provider(value, metadata) {
|
|
23252
|
+
const source = record$2(value);
|
|
23253
|
+
if (!Array.isArray(source.authTypes) || source.authTypes.some((item) => typeof item != "string")) return invalidResponse();
|
|
23254
|
+
return {
|
|
23255
|
+
...providerIconAppearance(metadata, source.iconSpritePosition),
|
|
23256
|
+
serviceId: string(source.service),
|
|
23257
|
+
serviceName: string(source.displayName),
|
|
23258
|
+
noSetup: source.authTypes.length == 1 && source.authTypes[0] == "no_auth",
|
|
23259
|
+
...source.iconUrl == null || source.iconUrl === "" ? {} : { icon: string(source.iconUrl) },
|
|
23260
|
+
...source.homepageUrl == null || source.homepageUrl === "" ? {} : { homepageUrl: string(source.homepageUrl) }
|
|
23261
|
+
};
|
|
23262
|
+
}
|
|
23263
|
+
function validateAction(source) {
|
|
23264
|
+
string(source.id);
|
|
23265
|
+
string(source.service);
|
|
23266
|
+
string(source.name);
|
|
23267
|
+
if (typeof source.description != "string") return invalidResponse();
|
|
23268
|
+
connectorActionPorts(source.inputSchema, source.outputSchema);
|
|
23269
|
+
}
|
|
23270
|
+
function port(item) {
|
|
23271
|
+
return {
|
|
23272
|
+
nullable: item.nullable,
|
|
23273
|
+
jsonSchema: jsonValue(item.json_schema),
|
|
23274
|
+
...item.description == null ? {} : { description: item.description },
|
|
23275
|
+
...item.value === void 0 ? {} : { value: jsonValue(item.value) }
|
|
23276
|
+
};
|
|
23277
|
+
}
|
|
23278
|
+
function action(source, providers) {
|
|
23279
|
+
const owner = providers.data.find((item) => item.service == source.service);
|
|
23280
|
+
if (owner == null) return invalidResponse();
|
|
23281
|
+
const display = provider(owner, providers.meta?.iconSprite);
|
|
23282
|
+
const ports = connectorActionPorts(source.inputSchema, source.outputSchema);
|
|
23283
|
+
return {
|
|
23284
|
+
...display.iconSprite == null ? {} : {
|
|
23285
|
+
iconSprite: display.iconSprite,
|
|
23286
|
+
iconSpritePosition: display.iconSpritePosition
|
|
23287
|
+
},
|
|
23288
|
+
serviceId: display.serviceId,
|
|
23289
|
+
serviceName: display.serviceName,
|
|
23290
|
+
...display.icon == null ? {} : { icon: display.icon },
|
|
23291
|
+
...display.homepageUrl == null ? {} : { homepageUrl: display.homepageUrl },
|
|
23292
|
+
actionId: string(source.id),
|
|
23293
|
+
...source.operationType == null ? {} : { operationType: string(source.operationType) },
|
|
23294
|
+
name: string(source.name),
|
|
23295
|
+
description: source.description,
|
|
23296
|
+
authenticated: !owner.authTypes.includes("no_auth"),
|
|
23297
|
+
inputSchema: jsonValue(source.inputSchema),
|
|
23298
|
+
outputSchema: jsonValue(source.outputSchema),
|
|
23299
|
+
inputs: Object.fromEntries(ports.inputs.map((item) => [item.handle, port(item)])),
|
|
23300
|
+
outputs: Object.fromEntries(ports.outputs.map((item) => [item.handle, port(item)]))
|
|
23301
|
+
};
|
|
23302
|
+
}
|
|
23303
|
+
//#endregion
|
|
22468
23304
|
//#region src/workbench/browser/runtime/stores/resource.ts
|
|
22469
23305
|
var dataSources = /* @__PURE__ */ new WeakMap();
|
|
22470
23306
|
/** Keep data-only consumers independent from refresh and error notifications. */
|
|
@@ -22725,21 +23561,15 @@ function builtinOptions(_draft, t) {
|
|
|
22725
23561
|
}]
|
|
22726
23562
|
},
|
|
22727
23563
|
{
|
|
22728
|
-
description: t("addNode.
|
|
23564
|
+
description: t("addNode.valueDescription"),
|
|
22729
23565
|
group,
|
|
22730
|
-
id: "
|
|
22731
|
-
icon: ":
|
|
22732
|
-
inputs: [
|
|
22733
|
-
|
|
22734
|
-
|
|
22735
|
-
}],
|
|
22736
|
-
kind: "condition",
|
|
22737
|
-
label: t("addNode.condition"),
|
|
23566
|
+
id: "value",
|
|
23567
|
+
icon: ":oomol:value:",
|
|
23568
|
+
inputs: [],
|
|
23569
|
+
kind: "value",
|
|
23570
|
+
label: t("addNode.value"),
|
|
22738
23571
|
outputs: [{
|
|
22739
|
-
handle: "
|
|
22740
|
-
jsonSchema: {}
|
|
22741
|
-
}, {
|
|
22742
|
-
handle: "true",
|
|
23572
|
+
handle: "value",
|
|
22743
23573
|
jsonSchema: {}
|
|
22744
23574
|
}]
|
|
22745
23575
|
},
|
|
@@ -22779,16 +23609,6 @@ function builtinOptions(_draft, t) {
|
|
|
22779
23609
|
kind: "http-request",
|
|
22780
23610
|
label: t("httpRequest.title")
|
|
22781
23611
|
},
|
|
22782
|
-
{
|
|
22783
|
-
description: t("flowState.warning"),
|
|
22784
|
-
group,
|
|
22785
|
-
icon: ":lucide-light:list-filter:",
|
|
22786
|
-
id: "dedupe",
|
|
22787
|
-
inputs: dedupeTask().inputs.filter((port) => "handle" in port),
|
|
22788
|
-
outputs: dedupeTask().outputs.filter((port) => "handle" in port),
|
|
22789
|
-
kind: "dedupe",
|
|
22790
|
-
label: t("flowState.nodeTitle")
|
|
22791
|
-
},
|
|
22792
23612
|
{
|
|
22793
23613
|
description: t("openapi.description"),
|
|
22794
23614
|
group,
|
|
@@ -22800,18 +23620,34 @@ function builtinOptions(_draft, t) {
|
|
|
22800
23620
|
label: "OpenAPI"
|
|
22801
23621
|
},
|
|
22802
23622
|
{
|
|
22803
|
-
description: t("addNode.
|
|
23623
|
+
description: t("addNode.conditionDescription"),
|
|
22804
23624
|
group,
|
|
22805
|
-
id: "
|
|
22806
|
-
icon: ":
|
|
22807
|
-
inputs: [
|
|
22808
|
-
kind: "value",
|
|
22809
|
-
label: t("addNode.value"),
|
|
22810
|
-
outputs: [{
|
|
23625
|
+
id: "condition",
|
|
23626
|
+
icon: ":carbon:child-node:",
|
|
23627
|
+
inputs: [{
|
|
22811
23628
|
handle: "value",
|
|
22812
23629
|
jsonSchema: {}
|
|
23630
|
+
}],
|
|
23631
|
+
kind: "condition",
|
|
23632
|
+
label: t("addNode.condition"),
|
|
23633
|
+
outputs: [{
|
|
23634
|
+
handle: "false",
|
|
23635
|
+
jsonSchema: {}
|
|
23636
|
+
}, {
|
|
23637
|
+
handle: "true",
|
|
23638
|
+
jsonSchema: {}
|
|
22813
23639
|
}]
|
|
22814
23640
|
},
|
|
23641
|
+
{
|
|
23642
|
+
description: t("flowState.warning"),
|
|
23643
|
+
group,
|
|
23644
|
+
icon: ":lucide-light:list-filter:",
|
|
23645
|
+
id: "skip-duplicates",
|
|
23646
|
+
inputs: skipDuplicatesTask().inputs.filter((port) => "handle" in port),
|
|
23647
|
+
outputs: skipDuplicatesTask().outputs.filter((port) => "handle" in port),
|
|
23648
|
+
kind: "skip-duplicates",
|
|
23649
|
+
label: t("flowState.nodeTitle")
|
|
23650
|
+
},
|
|
22815
23651
|
{
|
|
22816
23652
|
description: t("workflow.description"),
|
|
22817
23653
|
group,
|
|
@@ -22983,8 +23819,8 @@ function addNodeIntent(option, revision, t) {
|
|
|
22983
23819
|
kind: "decision",
|
|
22984
23820
|
name: t("addNode.decision")
|
|
22985
23821
|
};
|
|
22986
|
-
case "
|
|
22987
|
-
kind: "
|
|
23822
|
+
case "skip-duplicates": return {
|
|
23823
|
+
kind: "skip-duplicates",
|
|
22988
23824
|
name: t("flowState.nodeTitle")
|
|
22989
23825
|
};
|
|
22990
23826
|
case "http-request": return {
|
|
@@ -23829,8 +24665,8 @@ function addNode(revision, nodeId, intent) {
|
|
|
23829
24665
|
case "decision":
|
|
23830
24666
|
changes = createDecisionTask({ nodeId }, intent.name);
|
|
23831
24667
|
break;
|
|
23832
|
-
case "
|
|
23833
|
-
changes = createManagedTask({ nodeId },
|
|
24668
|
+
case "skip-duplicates":
|
|
24669
|
+
changes = createManagedTask({ nodeId }, skipDuplicatesTask(void 0, intent.name));
|
|
23834
24670
|
break;
|
|
23835
24671
|
case "http-request":
|
|
23836
24672
|
changes = createManagedTask({ nodeId }, httpRequestTask(void 0, intent.name));
|
|
@@ -24100,7 +24936,7 @@ function updateTask(revision, nodeId, settings) {
|
|
|
24100
24936
|
}];
|
|
24101
24937
|
}
|
|
24102
24938
|
case "decision":
|
|
24103
|
-
case "
|
|
24939
|
+
case "skip-duplicates":
|
|
24104
24940
|
case "http-request":
|
|
24105
24941
|
case "openapi":
|
|
24106
24942
|
case "agent":
|
|
@@ -24412,4 +25248,4 @@ function updateHttpParameters(revision, nodeId, group, edit, bindingId) {
|
|
|
24412
25248
|
return cleanVariableBindings(content, [...operations, ...binding]);
|
|
24413
25249
|
}
|
|
24414
25250
|
//#endregion
|
|
24415
|
-
export {
|
|
25251
|
+
export { action as $, triggerOutputDefinitions as $n, FlowTagChips as $t, schemaForEditor as A, EmptyTitle as An, commentIds as At, datePickerValue as B, normalizeFlowQuery as Bn, repairNodeNames as Bt, updateValue as C, InputGroupAddon as Cn, workflowSelectionTask as Cr, diagnosticItems as Ct, defaultValueEditorSchema as D, EmptyDescription as Dn, controlErrorCode as Dr, actionWithConnections as Dt, supportsFeishuChatFilter as E, EmptyContent as En, ApiError as Er, schemaMismatchMessage as Et, calendarChange as F, createI18n as Fn, setComment as Ft, indexAddNodeOptions as G, executionReachableNodes as Gn, setServiceConnections as Gt, isDateFormat as H, allConnectorConnectionsQuery as Hn, setCodeActions as Ht, calendarDate as I, FeishuEventPicker as In, setFlowViewport as It, scopedValue as J, webhookResponseDiagnostics as Jn, dequal as Jt, combineSources as K, inputSourceCandidates as Kn, updateStartInputDefs as Kt, dateFromTimeZone as L, EventSourceSetup as Ln, setNodeContentHidden as Lt, getDefaultValue as M, EventSourcesPage as Mn, removeComments as Mt, isUnconstrainedSchema as N, SourceForm as Nn, restoreCanvasPresentation as Nt, editorComponent as O, EmptyHeader as On, eventSourceKind as Or, connectionCatalog as Ot, typeOfSchema as P, SourceSelect as Pn, setCanvasLayout as Pt, resourceValue as Q, sampleErrorOutputs as Qn, FlowSettingsDialog as Qt, dateInTimeZone as R, errorNotice as Rn, setNodePositions as Rt, updateTriggerConfig as S, InputGroup as Sn, workflowCapability as Sr, deriveInspectorDiagnostics as St, feishuResourceKind as T, Empty as Tn, record$2 as Tr, diagnosticNodeId as Tt, addNodeIntent as U, decodeResultList as Un, setConnectorConnection as Ut, dateTimeWall as V, randomId as Vn, resetInputValues as Vt, deriveAddNodeOptions as W, decodeTriggerCatalog as Wn, setInputSources as Wt, observeResource as X, sourcePort as Xn, IdTooltip as Xt, CacheResource as Y, sourceOutputLabel as Yn, WorkflowExportMenuItem as Yt, resourceData as Z, normalizeTriggerOutputs as Zn, FlowSettingsButton as Zt, updateOutputPorts as _, selectors as _n, servers as _r, canCancelRun as _t, nameCreatedNodes as a, valueEditor_module_default as an, workflowFileName as ar, getAppCatalogCache as at, updateTaskAdditionalInputs as b, useFlowQuery as bn, workflowCandidate as br, flowResourceReferences as bt, setInputVariable as c, ComboboxPopup as cn, triggerConfigValues as cr, createPersistentCache as ct, updateCondition as d, ComboboxList as dn, object$1 as dr, designerGraph as dt, TagPicker as en, isJsonObject as er, provider as et, updateHttpParameters as f, GroupCollectionProvider as fn, openApiFieldIssues as fr, semanticNodeIcon as ft, updateNodeSettings as g, ComboboxRoot as gn, serverAddress as gr, RunStore as gt, updateNodeName as h, ComboboxInput as hn, selectOperation as hr, providerIcon as ht, deleteSelection as i, ValueEditorFeedback as in, parseWorkflowFile as ir, getActionsCache as it, valueForEditor as j, Badge as jn, flowPresentation as jt, editorGroups as k, EmptyMedia as kn, canvasPresentationChange as kt, setTriggerConnection as l, ComboboxPositioner as ln, inputValue as lr, createSessionCache as lt, updateNodeIcon as m, ComboboxInputGroup as mn, securityOptions as mr, actionSummary as mt, agentTool as n, selectionMenuItemClass as nn, connectorActionMetadata as nr, validateAction as nt, selectWebhookResponse as o, ComboboxItemIndicator as on, workflowNameFromFile as or, getConnectionsCache as ot, updateNodeDescription as p, ComboboxTrigger as pn, openApiTask as pr, triggerNodeIcon as pt, mapSource as q, resolutionOutputPorts as qn, updateTriggerSchedule as qt, applyFlowChanges as r, ValueControl as rn, encodeWorkflowFile as rr, decodeAppCatalogResponse as rt, setInputValue as s, ComboboxItem as sn, triggerConfigValue as sr, getProvidersCache as st, addNode as t, selectionMenuContentClass as tn, connection as tr, proxyResponse as tt, setTriggerEventSource as u, ComboboxPortal as un, listOperations as ur, loadJson as ut, updateResolution as v, useComboboxInputValueContext as vn, sameWorkflowInterface as vr, hasRunFilter as vt, updateWebhook as w, InputGroupInput as wn, invalidResponse as wr, diagnosticMessage as wt, updateTaskPorts as x, followWorkbenchLink as xn, workflowCandidateGroup as xr, Latest as xt, updateTask as y, useComboboxRootContext as yn, workflowAgentTool as yr, revisionView as yt, datePickerChange as z, WorkbenchClient as zn, setVerticalNodeWidth as zt };
|