@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.
Files changed (55) hide show
  1. package/dist/browser/{createResourceDialog-DZgJsr3e.js → createResourceDialog-BAJXbzNH.js} +20 -7
  2. package/dist/browser/flow-authoring.js +8 -7
  3. package/dist/browser/flow-change-schema.d.ts +1 -0
  4. package/dist/browser/flow-change.d.ts +1 -0
  5. package/dist/browser/flow-change.js +8 -7
  6. package/dist/browser/flow-notifications.d.ts +6 -0
  7. package/dist/browser/{flowChanges-CzYIVevI.js → flowChanges-BAMkSaKF.js} +1771 -1331
  8. package/dist/browser/{flowRunInputEditorStore-Dsxyfwae.js → flowRunInputEditorStore-B2Rw4VsT.js} +1 -1
  9. package/dist/browser/{flowWorkspace-BgZaFKZm.js → flowWorkspace-DxLc1Ybv.js} +429 -205
  10. package/dist/browser/{icons-CajfDpy_.js → icons-Db2Jb2iX.js} +30 -10
  11. package/dist/browser/preview.css +40 -52
  12. package/dist/browser/preview.js +7752 -7452
  13. package/dist/browser/theme.css +4 -0
  14. package/dist/browser/{typeScriptSession-fXPMFGjW.js → typeScriptSession-D0bjYDeg.js} +1 -1
  15. package/dist/browser/ui.css +39 -51
  16. package/dist/browser/ui.js +5 -5
  17. package/dist/browser/{value-DL_poNiC.js → value-BADHeZ9I.js} +12 -1
  18. package/dist/browser/workbench-contract.d.ts +10 -0
  19. package/dist/browser/workbench.css +43 -59
  20. package/dist/browser/workbench.d.ts +5 -3
  21. package/dist/browser/workbench.js +255 -216
  22. package/dist/browser/{workbenchSelect-H9wzEFkH.js → workbenchSelect-C-jf6NIM.js} +1 -1
  23. package/dist/command/index.js +49 -48
  24. package/dist/common/authoringSchema.d.ts +1 -0
  25. package/dist/common/canvas-commands.d.ts +19 -0
  26. package/dist/common/connector-action.d.ts +1 -0
  27. package/dist/common/connector-action.js +15 -12
  28. package/dist/common/control-api-conformance.js +127 -8
  29. package/dist/common/control-api.d.ts +16 -0
  30. package/dist/common/control-api.js +67 -8
  31. package/dist/common/control-requests.d.ts +23 -0
  32. package/dist/common/control-requests.js +64 -19
  33. package/dist/common/decision.js +8 -7
  34. package/dist/common/flow-connectionUsage.d.ts +1 -0
  35. package/dist/common/flow-encoding.d.ts +1 -0
  36. package/dist/common/flow-encoding.js +202 -10
  37. package/dist/common/flow-notifications.d.ts +6 -0
  38. package/dist/common/flow-semantics.js +64 -46
  39. package/dist/common/flow-workflowFile.d.ts +23 -0
  40. package/dist/common/integration-trigger.js +8 -7
  41. package/dist/common/localization.d.ts +1 -0
  42. package/dist/common/localization.js +12 -1
  43. package/dist/common/mcp.d.ts +103 -0
  44. package/dist/common/mcp.js +135 -11
  45. package/dist/common/openapi.js +8 -7
  46. package/dist/common/poll-trigger.js +8 -7
  47. package/dist/common/runtime-contract.js +1 -1
  48. package/dist/common/scheduler.d.ts +22 -2
  49. package/dist/common/scheduler.js +354 -83
  50. package/dist/common/trigger-config.d.ts +2 -0
  51. package/dist/common/webhook-trigger.js +8 -7
  52. package/dist/index.d.ts +2 -2
  53. package/package.json +1 -1
  54. package/skills/open-flow/SKILL.md +1 -1
  55. 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 == null ? "enum" : "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) || capability.mode != "independent") return 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 [offset, other] of sources.slice(index + 1).entries()) {
12198
- const leftSource = mapping.sources[index];
12199
- const rightSource = mapping.sources[index + offset + 1];
12200
- if (target != null && leftSource.kind == "node" && rightSource.kind == "node" && leftSource.nodeId != rightSource.nodeId && !ancestors.get(leftSource.nodeId)?.has(rightSource.nodeId) && !ancestors.get(rightSource.nodeId)?.has(leftSource.nodeId)) continue;
12201
- for (const left of routes) for (const targetRoute of targetPaths) {
12202
- if (!routesCompatible(left, targetRoute)) continue;
12203
- const path = {
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 == null ? "enum" : "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 };
@@ -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: {