@oomol-lab/open-flow 0.1.0-beta.62 → 0.1.0-beta.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/{createResourceDialog-DZgJsr3e.js → createResourceDialog-BAJXbzNH.js} +20 -7
- package/dist/browser/flow-authoring.js +8 -7
- package/dist/browser/flow-change-schema.d.ts +1 -0
- package/dist/browser/flow-change.d.ts +1 -0
- package/dist/browser/flow-change.js +8 -7
- package/dist/browser/flow-notifications.d.ts +6 -0
- package/dist/browser/{flowChanges-CzYIVevI.js → flowChanges-BAMkSaKF.js} +1771 -1331
- package/dist/browser/{flowRunInputEditorStore-Dsxyfwae.js → flowRunInputEditorStore-B2Rw4VsT.js} +1 -1
- package/dist/browser/{flowWorkspace-BgZaFKZm.js → flowWorkspace-DxLc1Ybv.js} +429 -205
- package/dist/browser/{icons-CajfDpy_.js → icons-Db2Jb2iX.js} +30 -10
- package/dist/browser/preview.css +40 -52
- package/dist/browser/preview.js +7752 -7452
- package/dist/browser/theme.css +4 -0
- package/dist/browser/{typeScriptSession-fXPMFGjW.js → typeScriptSession-D0bjYDeg.js} +1 -1
- package/dist/browser/ui.css +39 -51
- package/dist/browser/ui.js +5 -5
- package/dist/browser/{value-DL_poNiC.js → value-BADHeZ9I.js} +12 -1
- package/dist/browser/workbench-contract.d.ts +10 -0
- package/dist/browser/workbench.css +43 -59
- package/dist/browser/workbench.d.ts +5 -3
- package/dist/browser/workbench.js +255 -216
- package/dist/browser/{workbenchSelect-H9wzEFkH.js → workbenchSelect-C-jf6NIM.js} +1 -1
- package/dist/command/index.js +49 -48
- package/dist/common/authoringSchema.d.ts +1 -0
- package/dist/common/canvas-commands.d.ts +19 -0
- package/dist/common/connector-action.d.ts +1 -0
- package/dist/common/connector-action.js +15 -12
- package/dist/common/control-api-conformance.js +127 -8
- package/dist/common/control-api.d.ts +16 -0
- package/dist/common/control-api.js +67 -8
- package/dist/common/control-requests.d.ts +23 -0
- package/dist/common/control-requests.js +64 -19
- package/dist/common/decision.js +8 -7
- package/dist/common/flow-connectionUsage.d.ts +1 -0
- package/dist/common/flow-encoding.d.ts +1 -0
- package/dist/common/flow-encoding.js +202 -10
- package/dist/common/flow-notifications.d.ts +6 -0
- package/dist/common/flow-semantics.js +64 -46
- package/dist/common/flow-workflowFile.d.ts +23 -0
- package/dist/common/integration-trigger.js +8 -7
- package/dist/common/localization.d.ts +1 -0
- package/dist/common/localization.js +12 -1
- package/dist/common/mcp.d.ts +103 -0
- package/dist/common/mcp.js +135 -11
- package/dist/common/openapi.js +8 -7
- package/dist/common/poll-trigger.js +8 -7
- package/dist/common/runtime-contract.js +1 -1
- package/dist/common/scheduler.d.ts +22 -2
- package/dist/common/scheduler.js +354 -83
- package/dist/common/trigger-config.d.ts +2 -0
- package/dist/common/webhook-trigger.js +8 -7
- package/dist/index.d.ts +2 -2
- package/package.json +1 -1
- package/skills/open-flow/SKILL.md +1 -1
- package/skills/open-flow/references/flow-authoring.md +49 -0
|
@@ -6725,7 +6725,8 @@ var managedFields = object$1({
|
|
|
6725
6725
|
object$1({
|
|
6726
6726
|
kind: literal("connector"),
|
|
6727
6727
|
action: text,
|
|
6728
|
-
connectionId: text.optional()
|
|
6728
|
+
connectionId: text.optional(),
|
|
6729
|
+
outputMode: literal("value").optional()
|
|
6729
6730
|
}),
|
|
6730
6731
|
object$1({
|
|
6731
6732
|
kind: literal("openapi"),
|
|
@@ -8382,10 +8383,10 @@ function compileEnumAndConst(context, enumList, constValue, schema) {
|
|
|
8382
8383
|
}
|
|
8383
8384
|
if (compiledEnum.length === 0) recordWarn(context, "all of elements from list is rejected by currently schema object", "enum");
|
|
8384
8385
|
}
|
|
8385
|
-
if (constValue && valid(schema, constValue) === ValidResult.Invalid) isNever = true;
|
|
8386
|
+
if (constValue !== void 0 && valid(schema, constValue) === ValidResult.Invalid) isNever = true;
|
|
8386
8387
|
if (compiledEnum) {
|
|
8387
8388
|
if (compiledEnum.length === 0) isNever = true;
|
|
8388
|
-
else if (constValue) {
|
|
8389
|
+
else if (constValue !== void 0) {
|
|
8389
8390
|
let foundEquals = false;
|
|
8390
8391
|
for (const enumValue of compiledEnum) if (isDeepEquals(enumValue, constValue)) {
|
|
8391
8392
|
foundEquals = true;
|
|
@@ -8398,7 +8399,7 @@ function compileEnumAndConst(context, enumList, constValue, schema) {
|
|
|
8398
8399
|
const compiledSchema = {};
|
|
8399
8400
|
if (schema.type) compiledSchema.type = schema.type;
|
|
8400
8401
|
if (compiledEnum) compiledSchema.enum = compiledEnum;
|
|
8401
|
-
if (constValue) compiledSchema.const = wrapCompiledValue(deepCopy(constValue));
|
|
8402
|
+
if (constValue !== void 0) compiledSchema.const = wrapCompiledValue(deepCopy(constValue));
|
|
8402
8403
|
return wrapCompiledSchema(kind, compiledSchema, context.delegate, context.path);
|
|
8403
8404
|
}
|
|
8404
8405
|
//#endregion
|
|
@@ -8793,7 +8794,7 @@ function compileSchema(context, schema) {
|
|
|
8793
8794
|
let targetSchema = schema;
|
|
8794
8795
|
let shouldHandleEnumAndConst = false;
|
|
8795
8796
|
const { enum: enumList, const: constValue } = schema;
|
|
8796
|
-
if (enumList || constValue) {
|
|
8797
|
+
if (enumList || constValue !== void 0) {
|
|
8797
8798
|
const { enum: _0, const: _1, ...rest } = schema;
|
|
8798
8799
|
targetSchema = rest;
|
|
8799
8800
|
shouldHandleEnumAndConst = true;
|
|
@@ -9383,7 +9384,7 @@ function schemaEqualsChecker(extendsContext) {
|
|
|
9383
9384
|
}
|
|
9384
9385
|
function isValueEquals(value1, value2) {
|
|
9385
9386
|
if (value1 === value2) return true;
|
|
9386
|
-
if (value1 === null) return false;
|
|
9387
|
+
if (value1 === null || value2 === null) return false;
|
|
9387
9388
|
if (typeof value1 !== "object") return false;
|
|
9388
9389
|
if (typeof value1 !== typeof value2) return false;
|
|
9389
9390
|
if (isCompiledSchema(value1) && isCompiledSchema(value2)) return isCompiledSchemaEquals(value1, value2);
|
|
@@ -9949,7 +9950,7 @@ function findMismatchPath(source, target) {
|
|
|
9949
9950
|
if ((sourceSchema.maxProperties ?? Number.POSITIVE_INFINITY) > (targetSchema.maxProperties ?? Number.POSITIVE_INFINITY)) return [...targetPath, "maxProperties"];
|
|
9950
9951
|
break;
|
|
9951
9952
|
}
|
|
9952
|
-
case CompiledKind.EnumOrConst: return [...targetPath, targetSchema.const
|
|
9953
|
+
case CompiledKind.EnumOrConst: return [...targetPath, targetSchema.const === void 0 ? "enum" : "const"];
|
|
9953
9954
|
}
|
|
9954
9955
|
return targetPath;
|
|
9955
9956
|
}
|
|
@@ -11051,7 +11052,7 @@ function clearNodeConnections(graph, connectionId) {
|
|
|
11051
11052
|
return {
|
|
11052
11053
|
...graph,
|
|
11053
11054
|
nodes: Object.fromEntries(Object.entries(graph.nodes).map(([id, node]) => {
|
|
11054
|
-
if ((node.kind == "poll" || node.kind == "integration") && node.connectionId == connectionId) {
|
|
11055
|
+
if ((node.kind == "poll" || node.kind == "integration") && (connectionId == null || node.connectionId == connectionId)) {
|
|
11055
11056
|
const { connectionId: _, ...remaining } = node;
|
|
11056
11057
|
return [id, remaining];
|
|
11057
11058
|
}
|
|
@@ -11059,7 +11060,7 @@ function clearNodeConnections(graph, connectionId) {
|
|
|
11059
11060
|
if ("executor" in node.task) {
|
|
11060
11061
|
const executor = node.task.executor;
|
|
11061
11062
|
const clear = (value) => {
|
|
11062
|
-
if (value.connectionId != connectionId) return value;
|
|
11063
|
+
if (connectionId != null && value.connectionId != connectionId) return value;
|
|
11063
11064
|
const { connectionId: _, ...rest } = value;
|
|
11064
11065
|
return rest;
|
|
11065
11066
|
};
|
|
@@ -11084,11 +11085,26 @@ function clearNodeConnections(graph, connectionId) {
|
|
|
11084
11085
|
return [id, node];
|
|
11085
11086
|
}
|
|
11086
11087
|
const capabilities = node.task.capabilities?.map((capability) => {
|
|
11087
|
-
if (!("mode" in capability)
|
|
11088
|
+
if (!("mode" in capability)) {
|
|
11089
|
+
if ("action" in capability) {
|
|
11090
|
+
const { connectionId: selected, ...rest } = capability;
|
|
11091
|
+
return {
|
|
11092
|
+
...rest,
|
|
11093
|
+
connections: capability.connections.filter((item) => connectionId != null && item.connectionId != connectionId),
|
|
11094
|
+
...selected != null && connectionId != null && selected != connectionId ? { connectionId: selected } : {}
|
|
11095
|
+
};
|
|
11096
|
+
}
|
|
11097
|
+
return {
|
|
11098
|
+
...capability,
|
|
11099
|
+
...connectionId == null && (capability.connectionHints?.length ?? 0) > 0 ? { actionHints: [.../* @__PURE__ */ new Set([...capability.actionHints ?? [], ...capability.connectionHints.map((hint) => hint.action)])] } : {},
|
|
11100
|
+
...capability.connectionHints == null ? {} : { connectionHints: capability.connectionHints.filter((item) => connectionId != null && item.connectionId != connectionId) }
|
|
11101
|
+
};
|
|
11102
|
+
}
|
|
11103
|
+
if (capability.mode != "independent") return capability;
|
|
11088
11104
|
return {
|
|
11089
11105
|
...capability,
|
|
11090
11106
|
actions: capability.actions.map((action) => {
|
|
11091
|
-
if (action.connectionId != connectionId) return action;
|
|
11107
|
+
if (connectionId != null && action.connectionId != connectionId) return action;
|
|
11092
11108
|
const { connectionId: _, ...remaining } = action;
|
|
11093
11109
|
return remaining;
|
|
11094
11110
|
})
|
|
@@ -11603,6 +11619,36 @@ function agentToolInput(tool, input, argumentsValue) {
|
|
|
11603
11619
|
}));
|
|
11604
11620
|
}
|
|
11605
11621
|
//#endregion
|
|
11622
|
+
//#region src/trigger/common/config.ts
|
|
11623
|
+
function triggerConfigValue(input, config) {
|
|
11624
|
+
return inputValue(config[input.handle], input.value);
|
|
11625
|
+
}
|
|
11626
|
+
function missingTriggerConfig(inputs, config) {
|
|
11627
|
+
return inputs.flatMap((input) => "handle" in input && !input.nullable && triggerConfigValue(input, config) === void 0 ? [input.handle] : []);
|
|
11628
|
+
}
|
|
11629
|
+
/** Resolves fixed inputs before a Provider sees them, using the same defaults/null semantics as node inputs. */
|
|
11630
|
+
function resolveTriggerConfig(inputs, config) {
|
|
11631
|
+
const fields = inputs.filter((input) => "handle" in input);
|
|
11632
|
+
const handles = new Set(fields.map((input) => input.handle));
|
|
11633
|
+
if (handles.size !== fields.length) throw new TypeError("Trigger config has duplicate input handles.");
|
|
11634
|
+
const unknown = Object.keys(config).find((handle) => !handles.has(handle));
|
|
11635
|
+
if (unknown != null) throw new TypeError(`Unknown Trigger config input "${unknown}".`);
|
|
11636
|
+
const resolved = Object.fromEntries(fields.map((input) => {
|
|
11637
|
+
const value = triggerConfigValue(input, config) ?? null;
|
|
11638
|
+
if (!(value === null && input.nullable) && !matchesSchema(value, input.jsonSchema)) throw new TypeError(`Trigger config input "${input.handle}" does not match its declared schema.`);
|
|
11639
|
+
return [input.handle, value];
|
|
11640
|
+
}));
|
|
11641
|
+
if (new TextEncoder().encode(JSON.stringify(resolved)).byteLength > 65536) throw new TypeError("Trigger config exceeds the 65536-byte limit.");
|
|
11642
|
+
return resolved;
|
|
11643
|
+
}
|
|
11644
|
+
strictObject({
|
|
11645
|
+
kind: literal("open-flow-workflow"),
|
|
11646
|
+
version: literal(1),
|
|
11647
|
+
name: string().optional(),
|
|
11648
|
+
content: unknown(),
|
|
11649
|
+
presentation: record$1(string(), json$1()).optional()
|
|
11650
|
+
});
|
|
11651
|
+
//#endregion
|
|
11606
11652
|
//#region src/flow/common/encoding.ts
|
|
11607
11653
|
var encoder = new TextEncoder();
|
|
11608
11654
|
function canonicalText(value) {
|
|
@@ -11890,29 +11936,6 @@ function canonicalModule(module) {
|
|
|
11890
11936
|
};
|
|
11891
11937
|
}
|
|
11892
11938
|
//#endregion
|
|
11893
|
-
//#region src/trigger/common/config.ts
|
|
11894
|
-
function triggerConfigValue(input, config) {
|
|
11895
|
-
return inputValue(config[input.handle], input.value);
|
|
11896
|
-
}
|
|
11897
|
-
function missingTriggerConfig(inputs, config) {
|
|
11898
|
-
return inputs.flatMap((input) => "handle" in input && !input.nullable && triggerConfigValue(input, config) === void 0 ? [input.handle] : []);
|
|
11899
|
-
}
|
|
11900
|
-
/** Resolves fixed inputs before a Provider sees them, using the same defaults/null semantics as node inputs. */
|
|
11901
|
-
function resolveTriggerConfig(inputs, config) {
|
|
11902
|
-
const fields = inputs.filter((input) => "handle" in input);
|
|
11903
|
-
const handles = new Set(fields.map((input) => input.handle));
|
|
11904
|
-
if (handles.size !== fields.length) throw new TypeError("Trigger config has duplicate input handles.");
|
|
11905
|
-
const unknown = Object.keys(config).find((handle) => !handles.has(handle));
|
|
11906
|
-
if (unknown != null) throw new TypeError(`Unknown Trigger config input "${unknown}".`);
|
|
11907
|
-
const resolved = Object.fromEntries(fields.map((input) => {
|
|
11908
|
-
const value = triggerConfigValue(input, config) ?? null;
|
|
11909
|
-
if (!(value === null && input.nullable) && !matchesSchema(value, input.jsonSchema)) throw new TypeError(`Trigger config input "${input.handle}" does not match its declared schema.`);
|
|
11910
|
-
return [input.handle, value];
|
|
11911
|
-
}));
|
|
11912
|
-
if (new TextEncoder().encode(JSON.stringify(resolved)).byteLength > 65536) throw new TypeError("Trigger config exceeds the 65536-byte limit.");
|
|
11913
|
-
return resolved;
|
|
11914
|
-
}
|
|
11915
|
-
//#endregion
|
|
11916
11939
|
//#region src/flow/common/sourceField.ts
|
|
11917
11940
|
/** Only explicitly declared, first-level object properties are selectable. */
|
|
11918
11941
|
function sourceFields(output) {
|
|
@@ -12194,18 +12217,13 @@ function mappingAvailable(graph, target, mapping, analysis) {
|
|
|
12194
12217
|
if (target != null && mapping.sources.some((source) => source.kind == "node" && isResolutionNode(graph.nodes[source.nodeId]) && !analysis.resolutionOutputs.get(target)?.has(resolutionOutputKey(source.nodeId, source.output)))) return false;
|
|
12195
12218
|
const sources = mapping.sources.map((source) => sourcePaths(graph, paths, source));
|
|
12196
12219
|
const targetPaths = target == null ? [{}] : paths.get(target) ?? [];
|
|
12197
|
-
for (const [index, routes] of sources.entries()) for (const
|
|
12198
|
-
|
|
12199
|
-
const
|
|
12200
|
-
|
|
12201
|
-
|
|
12202
|
-
|
|
12203
|
-
|
|
12204
|
-
...targetRoute,
|
|
12205
|
-
...left
|
|
12206
|
-
};
|
|
12207
|
-
if (other.some((right) => routesCompatible(right, path))) return false;
|
|
12208
|
-
}
|
|
12220
|
+
for (const [index, routes] of sources.entries()) for (const other of sources.slice(index + 1)) for (const left of routes) for (const targetRoute of targetPaths) {
|
|
12221
|
+
if (!routesCompatible(left, targetRoute)) continue;
|
|
12222
|
+
const path = {
|
|
12223
|
+
...targetRoute,
|
|
12224
|
+
...left
|
|
12225
|
+
};
|
|
12226
|
+
if (other.some((right) => routesCompatible(right, path))) return false;
|
|
12209
12227
|
}
|
|
12210
12228
|
return true;
|
|
12211
12229
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { JsonValue, RevisionContent } from '../browser/flow-change.js';
|
|
2
|
+
export interface WorkflowFile {
|
|
3
|
+
readonly kind: 'open-flow-workflow';
|
|
4
|
+
readonly version: 1;
|
|
5
|
+
readonly name?: string;
|
|
6
|
+
readonly content: RevisionContent;
|
|
7
|
+
readonly presentation?: Readonly<Record<string, JsonValue>>;
|
|
8
|
+
}
|
|
9
|
+
export interface WorkflowCleanupSummary {
|
|
10
|
+
readonly changedNodeIds: readonly string[];
|
|
11
|
+
readonly removedBindings: number;
|
|
12
|
+
}
|
|
13
|
+
/** Structural decoding only: incomplete drafts are supported, repair is never attempted. */
|
|
14
|
+
export declare function decodeWorkflowFile(value: unknown): WorkflowFile;
|
|
15
|
+
export declare function parseWorkflowFile(text: string): WorkflowFile;
|
|
16
|
+
/** Clear only owned structured references, never strings in code or business values. */
|
|
17
|
+
export declare function cleanWorkflowFile(value: unknown): {
|
|
18
|
+
readonly file: WorkflowFile;
|
|
19
|
+
readonly summary: WorkflowCleanupSummary;
|
|
20
|
+
};
|
|
21
|
+
export declare function encodeWorkflowFile(file: WorkflowFile): string;
|
|
22
|
+
export declare function workflowFileName(name: string): string;
|
|
23
|
+
export declare function workflowNameFromFile(name: string): string;
|
|
@@ -6808,7 +6808,8 @@ var managedFields = object({
|
|
|
6808
6808
|
object({
|
|
6809
6809
|
kind: literal("connector"),
|
|
6810
6810
|
action: text,
|
|
6811
|
-
connectionId: text.optional()
|
|
6811
|
+
connectionId: text.optional(),
|
|
6812
|
+
outputMode: literal("value").optional()
|
|
6812
6813
|
}),
|
|
6813
6814
|
object({
|
|
6814
6815
|
kind: literal("openapi"),
|
|
@@ -8193,10 +8194,10 @@ function compileEnumAndConst(context, enumList, constValue, schema) {
|
|
|
8193
8194
|
}
|
|
8194
8195
|
if (compiledEnum.length === 0) recordWarn(context, "all of elements from list is rejected by currently schema object", "enum");
|
|
8195
8196
|
}
|
|
8196
|
-
if (constValue && valid(schema, constValue) === ValidResult.Invalid) isNever = true;
|
|
8197
|
+
if (constValue !== void 0 && valid(schema, constValue) === ValidResult.Invalid) isNever = true;
|
|
8197
8198
|
if (compiledEnum) {
|
|
8198
8199
|
if (compiledEnum.length === 0) isNever = true;
|
|
8199
|
-
else if (constValue) {
|
|
8200
|
+
else if (constValue !== void 0) {
|
|
8200
8201
|
let foundEquals = false;
|
|
8201
8202
|
for (const enumValue of compiledEnum) if (isDeepEquals(enumValue, constValue)) {
|
|
8202
8203
|
foundEquals = true;
|
|
@@ -8209,7 +8210,7 @@ function compileEnumAndConst(context, enumList, constValue, schema) {
|
|
|
8209
8210
|
const compiledSchema = {};
|
|
8210
8211
|
if (schema.type) compiledSchema.type = schema.type;
|
|
8211
8212
|
if (compiledEnum) compiledSchema.enum = compiledEnum;
|
|
8212
|
-
if (constValue) compiledSchema.const = wrapCompiledValue(deepCopy(constValue));
|
|
8213
|
+
if (constValue !== void 0) compiledSchema.const = wrapCompiledValue(deepCopy(constValue));
|
|
8213
8214
|
return wrapCompiledSchema(kind, compiledSchema, context.delegate, context.path);
|
|
8214
8215
|
}
|
|
8215
8216
|
//#endregion
|
|
@@ -8604,7 +8605,7 @@ function compileSchema(context, schema) {
|
|
|
8604
8605
|
let targetSchema = schema;
|
|
8605
8606
|
let shouldHandleEnumAndConst = false;
|
|
8606
8607
|
const { enum: enumList, const: constValue } = schema;
|
|
8607
|
-
if (enumList || constValue) {
|
|
8608
|
+
if (enumList || constValue !== void 0) {
|
|
8608
8609
|
const { enum: _0, const: _1, ...rest } = schema;
|
|
8609
8610
|
targetSchema = rest;
|
|
8610
8611
|
shouldHandleEnumAndConst = true;
|
|
@@ -9194,7 +9195,7 @@ function schemaEqualsChecker(extendsContext) {
|
|
|
9194
9195
|
}
|
|
9195
9196
|
function isValueEquals(value1, value2) {
|
|
9196
9197
|
if (value1 === value2) return true;
|
|
9197
|
-
if (value1 === null) return false;
|
|
9198
|
+
if (value1 === null || value2 === null) return false;
|
|
9198
9199
|
if (typeof value1 !== "object") return false;
|
|
9199
9200
|
if (typeof value1 !== typeof value2) return false;
|
|
9200
9201
|
if (isCompiledSchema(value1) && isCompiledSchema(value2)) return isCompiledSchemaEquals(value1, value2);
|
|
@@ -9760,7 +9761,7 @@ function findMismatchPath(source, target) {
|
|
|
9760
9761
|
if ((sourceSchema.maxProperties ?? Number.POSITIVE_INFINITY) > (targetSchema.maxProperties ?? Number.POSITIVE_INFINITY)) return [...targetPath, "maxProperties"];
|
|
9761
9762
|
break;
|
|
9762
9763
|
}
|
|
9763
|
-
case CompiledKind.EnumOrConst: return [...targetPath, targetSchema.const
|
|
9764
|
+
case CompiledKind.EnumOrConst: return [...targetPath, targetSchema.const === void 0 ? "enum" : "const"];
|
|
9764
9765
|
}
|
|
9765
9766
|
return targetPath;
|
|
9766
9767
|
}
|
|
@@ -21,3 +21,4 @@ export declare function isCjkLanguage(language: string): boolean;
|
|
|
21
21
|
export declare function userLocaleFallbackChain(language: string): readonly string[];
|
|
22
22
|
/** Resolve metadata query/header preferences using the same language mapping as the UI. */
|
|
23
23
|
export declare function resolveMetadataLanguage(query: string | undefined, acceptLanguage?: string): UiLanguage;
|
|
24
|
+
export declare function importedWorkflowName(language: UiLanguage): string;
|
|
@@ -124,5 +124,16 @@ function resolveMetadataLanguage(query, acceptLanguage) {
|
|
|
124
124
|
}];
|
|
125
125
|
}).toSorted((a, b) => b.q - a.q || a.order - b.order)[0]?.language ?? "en";
|
|
126
126
|
}
|
|
127
|
+
function importedWorkflowName(language) {
|
|
128
|
+
return {
|
|
129
|
+
"en": "Imported workflow",
|
|
130
|
+
"zh-CN": "导入的工作流",
|
|
131
|
+
"zh-TW": "匯入的工作流",
|
|
132
|
+
"ja": "インポートしたワークフロー",
|
|
133
|
+
"ko": "가져온 워크플로",
|
|
134
|
+
"fr": "Workflow importé",
|
|
135
|
+
"ru": "Импортированный процесс"
|
|
136
|
+
}[language];
|
|
137
|
+
}
|
|
127
138
|
//#endregion
|
|
128
|
-
export { defaultUiLanguage, isCjkLanguage, isUiLanguage, resolveMetadataLanguage, resolveUiLanguage, uiLanguageNames, uiLanguages, userLocaleFallbackChain };
|
|
139
|
+
export { defaultUiLanguage, importedWorkflowName, isCjkLanguage, isUiLanguage, resolveMetadataLanguage, resolveUiLanguage, uiLanguageNames, uiLanguages, userLocaleFallbackChain };
|
package/dist/common/mcp.d.ts
CHANGED
|
@@ -3,6 +3,48 @@ import { z } from 'zod';
|
|
|
3
3
|
export declare const mcpProtocolVersion = "2026-07-28";
|
|
4
4
|
export declare const mcpInstructions: string;
|
|
5
5
|
export declare const mcpTools: {
|
|
6
|
+
flow_canvas: {
|
|
7
|
+
description: string;
|
|
8
|
+
annotations: {
|
|
9
|
+
readOnlyHint: boolean;
|
|
10
|
+
destructiveHint: boolean;
|
|
11
|
+
idempotentHint: boolean;
|
|
12
|
+
openWorldHint: boolean;
|
|
13
|
+
};
|
|
14
|
+
inputSchema: {
|
|
15
|
+
'~standard': {
|
|
16
|
+
version: 1;
|
|
17
|
+
vendor: string;
|
|
18
|
+
jsonSchema: {
|
|
19
|
+
input: () => Record<string, unknown>;
|
|
20
|
+
output: () => Record<string, unknown>;
|
|
21
|
+
};
|
|
22
|
+
validate(value: unknown): {
|
|
23
|
+
value: {
|
|
24
|
+
flowId: string;
|
|
25
|
+
command: {
|
|
26
|
+
type: "focus";
|
|
27
|
+
nodeId: string;
|
|
28
|
+
} | {
|
|
29
|
+
type: "zoom";
|
|
30
|
+
zoom: number;
|
|
31
|
+
} | {
|
|
32
|
+
type: "pan";
|
|
33
|
+
dx: number;
|
|
34
|
+
dy: number;
|
|
35
|
+
} | {
|
|
36
|
+
type: "fit";
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
} | {
|
|
40
|
+
issues: {
|
|
41
|
+
message: string;
|
|
42
|
+
path: string[];
|
|
43
|
+
}[];
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
};
|
|
6
48
|
flow_live: {
|
|
7
49
|
description: string;
|
|
8
50
|
annotations: {
|
|
@@ -164,6 +206,67 @@ export declare const mcpTools: {
|
|
|
164
206
|
};
|
|
165
207
|
};
|
|
166
208
|
};
|
|
209
|
+
flow_export: {
|
|
210
|
+
description: string;
|
|
211
|
+
annotations: {
|
|
212
|
+
readOnlyHint: boolean;
|
|
213
|
+
destructiveHint: boolean;
|
|
214
|
+
idempotentHint: boolean;
|
|
215
|
+
openWorldHint: boolean;
|
|
216
|
+
};
|
|
217
|
+
inputSchema: {
|
|
218
|
+
'~standard': {
|
|
219
|
+
version: 1;
|
|
220
|
+
vendor: string;
|
|
221
|
+
jsonSchema: {
|
|
222
|
+
input: () => Record<string, unknown>;
|
|
223
|
+
output: () => Record<string, unknown>;
|
|
224
|
+
};
|
|
225
|
+
validate(value: unknown): {
|
|
226
|
+
value: {
|
|
227
|
+
flowId: string;
|
|
228
|
+
};
|
|
229
|
+
} | {
|
|
230
|
+
issues: {
|
|
231
|
+
message: string;
|
|
232
|
+
path: string[];
|
|
233
|
+
}[];
|
|
234
|
+
};
|
|
235
|
+
};
|
|
236
|
+
};
|
|
237
|
+
};
|
|
238
|
+
flow_import: {
|
|
239
|
+
description: string;
|
|
240
|
+
annotations: {
|
|
241
|
+
readOnlyHint: boolean;
|
|
242
|
+
destructiveHint: boolean;
|
|
243
|
+
idempotentHint: boolean;
|
|
244
|
+
openWorldHint: boolean;
|
|
245
|
+
};
|
|
246
|
+
inputSchema: {
|
|
247
|
+
'~standard': {
|
|
248
|
+
version: 1;
|
|
249
|
+
vendor: string;
|
|
250
|
+
jsonSchema: {
|
|
251
|
+
input: () => Record<string, unknown>;
|
|
252
|
+
output: () => Record<string, unknown>;
|
|
253
|
+
};
|
|
254
|
+
validate(value: unknown): {
|
|
255
|
+
value: {
|
|
256
|
+
file: JsonValue;
|
|
257
|
+
name?: string | undefined;
|
|
258
|
+
teamId?: string | undefined;
|
|
259
|
+
idempotencyKey: string;
|
|
260
|
+
};
|
|
261
|
+
} | {
|
|
262
|
+
issues: {
|
|
263
|
+
message: string;
|
|
264
|
+
path: string[];
|
|
265
|
+
}[];
|
|
266
|
+
};
|
|
267
|
+
};
|
|
268
|
+
};
|
|
269
|
+
};
|
|
167
270
|
flow_create: {
|
|
168
271
|
description: string;
|
|
169
272
|
annotations: {
|