@fluidgrids/workflows 2026.1027.0 → 2026.1027.1

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 (52) hide show
  1. package/README.md +26 -5
  2. package/dist/{assemble-DMOuaxRI.d.ts → assemble-CrpUyd_3.d.ts} +20 -2
  3. package/dist/{assemble-BJo9TECS.d.cts → assemble-DEf3znGD.d.cts} +20 -2
  4. package/dist/chunk-3M34AUIY.cjs +27 -0
  5. package/dist/chunk-5AW745OG.js +25 -0
  6. package/dist/{chunk-RRQ5HOBF.cjs → chunk-6AIAC2FP.cjs} +4 -4
  7. package/dist/{chunk-GO34UHSY.js → chunk-6BEW4QD6.js} +3 -3
  8. package/dist/{chunk-SS4LT2IP.js → chunk-6U446SKY.js} +5 -10
  9. package/dist/{chunk-AU3YW7FZ.cjs → chunk-7YR7DI7B.cjs} +46 -51
  10. package/dist/{chunk-27HASETB.cjs → chunk-CSYBNN3V.cjs} +3 -1
  11. package/dist/{chunk-LRM6JXJA.cjs → chunk-E3APHA6O.cjs} +19 -1
  12. package/dist/{chunk-BWSLWF2E.js → chunk-EEAIM35V.js} +38 -12
  13. package/dist/{chunk-X4HKU3MX.js → chunk-IHKXLG6I.js} +3 -1
  14. package/dist/chunk-MBBKGD7K.js +440 -0
  15. package/dist/{chunk-LSKSBVL4.cjs → chunk-OSPTJCDI.cjs} +6 -6
  16. package/dist/{chunk-KUTMY2IO.cjs → chunk-TQF7MYEN.cjs} +101 -75
  17. package/dist/{chunk-BYJ7QTLY.cjs → chunk-TWOYB4Y7.cjs} +13 -13
  18. package/dist/{chunk-PL73GJR4.js → chunk-UB2BHU2M.js} +1 -1
  19. package/dist/{chunk-REV7ZOA4.js → chunk-UJNHTS6D.js} +13 -2
  20. package/dist/{chunk-IZQNUNSU.cjs → chunk-UWQWD7BP.cjs} +17 -17
  21. package/dist/{chunk-4DPEGDPW.js → chunk-W32BSO3M.js} +4 -4
  22. package/dist/{chunk-LMX35GNQ.js → chunk-XBIID5DY.js} +4 -4
  23. package/dist/chunk-Y7NWR3WH.cjs +450 -0
  24. package/dist/codegen/index.cjs +7 -7
  25. package/dist/codegen/index.js +5 -5
  26. package/dist/index.cjs +30 -30
  27. package/dist/index.d.cts +3 -3
  28. package/dist/index.d.ts +3 -3
  29. package/dist/index.js +3 -3
  30. package/dist/ir/index.cjs +118 -116
  31. package/dist/ir/index.d.cts +18 -8
  32. package/dist/ir/index.d.ts +18 -8
  33. package/dist/ir/index.js +21 -19
  34. package/dist/{lower-Dw5grNrI.d.ts → lower-CXggJTIo.d.ts} +20 -2
  35. package/dist/{lower-DcOY8ux0.d.cts → lower-DAzvsJCo.d.cts} +20 -2
  36. package/dist/node-evaluator-CH3XCJND.cjs +17 -0
  37. package/dist/node-evaluator-TULXA3WE.js +8 -0
  38. package/dist/quickjs/index.cjs +32 -78
  39. package/dist/quickjs/index.d.cts +4 -4
  40. package/dist/quickjs/index.d.ts +4 -4
  41. package/dist/quickjs/index.js +32 -78
  42. package/dist/roundtrip/index.cjs +201 -128
  43. package/dist/roundtrip/index.d.cts +7 -4
  44. package/dist/roundtrip/index.d.ts +7 -4
  45. package/dist/roundtrip/index.js +87 -18
  46. package/package.json +44 -18
  47. package/dist/chunk-265J2FCH.cjs +0 -33
  48. package/dist/chunk-LUXCXFOE.cjs +0 -269
  49. package/dist/chunk-S34NJE3A.js +0 -262
  50. package/dist/chunk-SRQRLWOS.js +0 -31
  51. package/dist/node-evaluator-2GTUZVPK.cjs +0 -17
  52. package/dist/node-evaluator-RMYEWCXZ.js +0 -8
package/dist/ir/index.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkBYJ7QTLY_cjs = require('../chunk-BYJ7QTLY.cjs');
4
- var chunkLSKSBVL4_cjs = require('../chunk-LSKSBVL4.cjs');
5
- var chunkAU3YW7FZ_cjs = require('../chunk-AU3YW7FZ.cjs');
3
+ var chunkTWOYB4Y7_cjs = require('../chunk-TWOYB4Y7.cjs');
4
+ var chunkOSPTJCDI_cjs = require('../chunk-OSPTJCDI.cjs');
5
+ var chunk7YR7DI7B_cjs = require('../chunk-7YR7DI7B.cjs');
6
6
  var chunkG4UEPUGO_cjs = require('../chunk-G4UEPUGO.cjs');
7
- var chunk27HASETB_cjs = require('../chunk-27HASETB.cjs');
8
- var chunkLRM6JXJA_cjs = require('../chunk-LRM6JXJA.cjs');
7
+ var chunkCSYBNN3V_cjs = require('../chunk-CSYBNN3V.cjs');
8
+ var chunkE3APHA6O_cjs = require('../chunk-E3APHA6O.cjs');
9
9
  var _2020_js = require('ajv/dist/2020.js');
10
10
  var cronParser = require('cron-parser');
11
11
 
@@ -335,17 +335,17 @@ function stringOrEmpty(value) {
335
335
  return typeof value === "string" && value ? value : "";
336
336
  }
337
337
  function executorNodeView(node) {
338
- const record = chunkLRM6JXJA_cjs.isRecord(node) ? node : {};
339
- const data = chunkLRM6JXJA_cjs.isRecord(record["data"]) ? record["data"] : void 0;
340
- const args = chunkLRM6JXJA_cjs.isRecord(record["args"]) ? record["args"] : void 0;
341
- const dataArgs = chunkLRM6JXJA_cjs.isRecord(data?.["args"]) ? data["args"] : void 0;
338
+ const record = chunkE3APHA6O_cjs.isRecord(node) ? node : {};
339
+ const data = chunkE3APHA6O_cjs.isRecord(record["data"]) ? record["data"] : void 0;
340
+ const args = chunkE3APHA6O_cjs.isRecord(record["args"]) ? record["args"] : void 0;
341
+ const dataArgs = chunkE3APHA6O_cjs.isRecord(data?.["args"]) ? data["args"] : void 0;
342
342
  const type = typeof record["type"] === "string" ? record["type"] : "";
343
- const merged = chunkAU3YW7FZ_cjs.usesMergedParameters(type);
343
+ const merged = chunk7YR7DI7B_cjs.usesMergedParameters(type);
344
344
  let parameters;
345
345
  if (merged) {
346
- const config = chunkLRM6JXJA_cjs.isRecord(record["config"]) ? record["config"] : {};
347
- const dataState2 = chunkLRM6JXJA_cjs.isRecord(dataArgs?.["state"]) ? dataArgs["state"] : {};
348
- const rootState = chunkLRM6JXJA_cjs.isRecord(args?.["state"]) ? args["state"] : {};
346
+ const config = chunkE3APHA6O_cjs.isRecord(record["config"]) ? record["config"] : {};
347
+ const dataState2 = chunkE3APHA6O_cjs.isRecord(dataArgs?.["state"]) ? dataArgs["state"] : {};
348
+ const rootState = chunkE3APHA6O_cjs.isRecord(args?.["state"]) ? args["state"] : {};
349
349
  const all = { ...data, ...config, ...dataState2, ...rootState };
350
350
  for (const key of UNREAD_INTERNAL_PARAMETER_KEYS) {
351
351
  if (!Object.hasOwn(config, key) && !Object.hasOwn(dataState2, key) && !Object.hasOwn(rootState, key)) {
@@ -356,12 +356,14 @@ function executorNodeView(node) {
356
356
  } else {
357
357
  parameters = args?.["state"] || dataArgs?.["state"] || data?.["state"];
358
358
  }
359
- const rootSettings = chunkLRM6JXJA_cjs.isRecord(record["executionSettings"]) ? record["executionSettings"] : void 0;
360
- const dataSettings = chunkLRM6JXJA_cjs.isRecord(data?.["executionSettings"]) ? data["executionSettings"] : void 0;
361
- const dataState = chunkLRM6JXJA_cjs.isRecord(dataArgs?.["state"]) ? dataArgs["state"] : void 0;
362
- const nodeData = chunkLRM6JXJA_cjs.isRecord(data?.["nodeData"]) ? data["nodeData"] : void 0;
363
- const argsContext = chunkLRM6JXJA_cjs.isRecord(args?.["context"]) ? args["context"] : void 0;
364
- const contextNode = chunkLRM6JXJA_cjs.isRecord(argsContext?.["node"]) ? argsContext["node"] : void 0;
359
+ const rootSettings = chunkE3APHA6O_cjs.isRecord(record["executionSettings"]) ? record["executionSettings"] : void 0;
360
+ const dataSettings = chunkE3APHA6O_cjs.isRecord(data?.["executionSettings"]) ? data["executionSettings"] : void 0;
361
+ const dataState = chunkE3APHA6O_cjs.isRecord(dataArgs?.["state"]) ? dataArgs["state"] : void 0;
362
+ const nodeData = chunkE3APHA6O_cjs.isRecord(data?.["nodeData"]) ? data["nodeData"] : void 0;
363
+ const argsContext = chunkE3APHA6O_cjs.isRecord(args?.["context"]) ? args["context"] : void 0;
364
+ const contextNode = chunkE3APHA6O_cjs.isRecord(argsContext?.["node"]) ? argsContext["node"] : void 0;
365
+ const subNodeState = merged ? void 0 : args?.["state"] || dataArgs?.["state"] || {};
366
+ const toolOperation = merged ? void 0 : (chunkE3APHA6O_cjs.isRecord(subNodeState) ? subNodeState["operation"] : void 0) || data?.["operation_name"];
365
367
  return {
366
368
  id: record["id"],
367
369
  type: record["type"],
@@ -376,11 +378,15 @@ function executorNodeView(node) {
376
378
  runOn: dataSettings?.["runOn"],
377
379
  disabled: record["disabled"] === true || data?.["disabled"] === true,
378
380
  nodeDataNodeType: nodeData?.["nodeType"],
379
- argsContextNodeType: contextNode?.["type"]
381
+ argsContextNodeType: contextNode?.["type"],
382
+ dataOperationName: data?.["operation_name"],
383
+ nodeStateVersion: data?.["version"] || "1.0.0",
384
+ subNodeState,
385
+ toolOperation
380
386
  };
381
387
  }
382
388
  function executorView(definition) {
383
- if (!chunkLRM6JXJA_cjs.isRecord(definition) || !chunkLRM6JXJA_cjs.isRecord(definition["data"])) return [];
389
+ if (!chunkE3APHA6O_cjs.isRecord(definition) || !chunkE3APHA6O_cjs.isRecord(definition["data"])) return [];
384
390
  const nodes = definition["data"]["nodes"];
385
391
  return Array.isArray(nodes) ? nodes.map(executorNodeView) : [];
386
392
  }
@@ -443,7 +449,7 @@ function rangeValues(value, min, max, field) {
443
449
  values.push(entry);
444
450
  continue;
445
451
  }
446
- if (!chunkLRM6JXJA_cjs.isRecord(entry) || typeof entry["start"] !== "number") {
452
+ if (!chunkE3APHA6O_cjs.isRecord(entry) || typeof entry["start"] !== "number") {
447
453
  throw new Error(`${field} entries must be numbers or { start, end, step }`);
448
454
  }
449
455
  const start = entry["start"];
@@ -493,7 +499,7 @@ function localParts(date, tz) {
493
499
  function calendarTimes(entries, now, tz) {
494
500
  const all = [];
495
501
  for (const entry of entries) {
496
- if (!chunkLRM6JXJA_cjs.isRecord(entry)) throw new Error("each calendar entry must be an object");
502
+ if (!chunkE3APHA6O_cjs.isRecord(entry)) throw new Error("each calendar entry must be an object");
497
503
  const expression = CALENDAR_FIELDS.map((field) => cronField(entry[field.name], field)).join(
498
504
  " "
499
505
  );
@@ -512,7 +518,7 @@ function calendarTimes(entries, now, tz) {
512
518
  function intervalTimes(entries, now) {
513
519
  const all = [];
514
520
  for (const entry of entries) {
515
- if (!chunkLRM6JXJA_cjs.isRecord(entry)) throw new Error("each interval entry must be an object");
521
+ if (!chunkE3APHA6O_cjs.isRecord(entry)) throw new Error("each interval entry must be an object");
516
522
  const every = durationMs(entry["every"], "s");
517
523
  const offset = entry["offset"] === void 0 ? 0 : durationMs(entry["offset"], "s");
518
524
  if (every === void 0 || every <= 0)
@@ -527,7 +533,7 @@ function intervalTimes(entries, now) {
527
533
  }
528
534
  function checkScheduleSpec(spec, options = {}) {
529
535
  const now = options.now ?? /* @__PURE__ */ new Date();
530
- if (!chunkLRM6JXJA_cjs.isRecord(spec)) return { ok: false, problem: "spec must be an object", nextFireTimes: [] };
536
+ if (!chunkE3APHA6O_cjs.isRecord(spec)) return { ok: false, problem: "spec must be an object", nextFireTimes: [] };
531
537
  const kinds = ["cron", "calendar", "interval"].filter((kind) => spec[kind] !== void 0);
532
538
  if (kinds.length !== 1) {
533
539
  return {
@@ -580,7 +586,7 @@ function schemaTools() {
580
586
  return compiled;
581
587
  }
582
588
  function isValidJsonSchema(schema) {
583
- if (!chunkLRM6JXJA_cjs.isRecord(schema) && typeof schema !== "boolean") return false;
589
+ if (!chunkE3APHA6O_cjs.isRecord(schema) && typeof schema !== "boolean") return false;
584
590
  const { ajv } = schemaTools();
585
591
  return ajv.validateSchema(schema) === true;
586
592
  }
@@ -592,7 +598,7 @@ function findSecretKeys(value, path, parentKey, out) {
592
598
  value.forEach((item, index) => findSecretKeys(item, `${path}[${index}]`, parentKey, out));
593
599
  return;
594
600
  }
595
- if (!chunkLRM6JXJA_cjs.isRecord(value)) return;
601
+ if (!chunkE3APHA6O_cjs.isRecord(value)) return;
596
602
  for (const [key, child] of Object.entries(value)) {
597
603
  if (isSecretKey(parentKey, key)) out.push(`${path}.${key}`);
598
604
  findSecretKeys(child, `${path}.${key}`, key, out);
@@ -600,14 +606,14 @@ function findSecretKeys(value, path, parentKey, out) {
600
606
  }
601
607
  function findLegacyTemplates(value, path, out) {
602
608
  if (typeof value === "string") {
603
- if (chunkLRM6JXJA_cjs.hasLegacyTemplate(value)) out.push(path);
609
+ if (chunkE3APHA6O_cjs.hasLegacyTemplate(value)) out.push(path);
604
610
  return;
605
611
  }
606
612
  if (Array.isArray(value)) {
607
613
  value.forEach((item, index) => findLegacyTemplates(item, `${path}[${index}]`, out));
608
614
  return;
609
615
  }
610
- if (chunkLRM6JXJA_cjs.isRecord(value)) {
616
+ if (chunkE3APHA6O_cjs.isRecord(value)) {
611
617
  for (const [key, child] of Object.entries(value))
612
618
  findLegacyTemplates(child, `${path}.${key}`, out);
613
619
  }
@@ -633,35 +639,31 @@ function isHardSchemaError(error) {
633
639
  function legacyMirrors(node) {
634
640
  const found = [];
635
641
  const type = typeof node["type"] === "string" ? node["type"] : "";
636
- const merged = chunkAU3YW7FZ_cjs.usesMergedParameters(type);
637
- const data = chunkLRM6JXJA_cjs.isRecord(node["data"]) ? node["data"] : void 0;
638
- const dataArgs = chunkLRM6JXJA_cjs.isRecord(data?.["args"]) ? data["args"] : void 0;
642
+ const merged = chunk7YR7DI7B_cjs.usesMergedParameters(type);
643
+ const data = chunkE3APHA6O_cjs.isRecord(node["data"]) ? node["data"] : void 0;
644
+ const dataArgs = chunkE3APHA6O_cjs.isRecord(data?.["args"]) ? data["args"] : void 0;
639
645
  if (data) {
640
- for (const key of [
641
- "label",
642
- "operation_name",
643
- "errorConfig",
644
- "disabled",
645
- "state",
646
- "nodeVersion"
647
- ]) {
646
+ for (const key of ["label", "errorConfig", "disabled", "state", "nodeVersion"]) {
648
647
  if (data[key] !== void 0) found.push(`data.${key}`);
649
648
  }
650
- if (!merged && data["version"] !== void 0) found.push("data.version");
649
+ if (data["operation_name"] !== void 0 && !chunkE3APHA6O_cjs.deepEqual(data["operation_name"], node["operation_name"]))
650
+ found.push("data.operation_name");
651
+ if (!merged && data["version"] !== void 0 && !chunkE3APHA6O_cjs.deepEqual(data["version"], node["version"]))
652
+ found.push("data.version");
651
653
  for (const key of ["state", "connections", "credentials", "context"]) {
652
654
  if (dataArgs?.[key] !== void 0) found.push(`data.args.${key}`);
653
655
  }
654
- const settings2 = chunkLRM6JXJA_cjs.isRecord(data["executionSettings"]) ? data["executionSettings"] : void 0;
656
+ const settings2 = chunkE3APHA6O_cjs.isRecord(data["executionSettings"]) ? data["executionSettings"] : void 0;
655
657
  if (settings2) {
656
- const onlyRunOnMirror = Object.keys(settings2).length === 1 && settings2["runOn"] !== void 0 && chunkLRM6JXJA_cjs.isRecord(node["executionSettings"]) && JSON.stringify(node["executionSettings"]["runOn"]) === JSON.stringify(settings2["runOn"]);
658
+ const onlyRunOnMirror = Object.keys(settings2).length === 1 && settings2["runOn"] !== void 0 && chunkE3APHA6O_cjs.isRecord(node["executionSettings"]) && JSON.stringify(node["executionSettings"]["runOn"]) === JSON.stringify(settings2["runOn"]);
657
659
  if (!onlyRunOnMirror) found.push("data.executionSettings");
658
660
  }
659
661
  }
660
662
  if (merged && node["config"] !== void 0) found.push("config");
661
- const args = chunkLRM6JXJA_cjs.isRecord(node["args"]) ? node["args"] : void 0;
663
+ const args = chunkE3APHA6O_cjs.isRecord(node["args"]) ? node["args"] : void 0;
662
664
  if (args?.["credentials"] !== void 0) found.push("args.credentials");
663
- const settings = chunkLRM6JXJA_cjs.isRecord(node["executionSettings"]) ? node["executionSettings"] : void 0;
664
- if (settings?.["runOn"] !== void 0 && !chunkLRM6JXJA_cjs.isRecord(data?.["executionSettings"]))
665
+ const settings = chunkE3APHA6O_cjs.isRecord(node["executionSettings"]) ? node["executionSettings"] : void 0;
666
+ if (settings?.["runOn"] !== void 0 && !chunkE3APHA6O_cjs.isRecord(data?.["executionSettings"]))
665
667
  found.push("executionSettings.runOn");
666
668
  return found;
667
669
  }
@@ -676,7 +678,7 @@ function validate(definition, options = {}) {
676
678
  const warnOrFail = (issue) => {
677
679
  (strict ? errors : warnings).push(issue);
678
680
  };
679
- if (!chunkLRM6JXJA_cjs.isRecord(definition)) {
681
+ if (!chunkE3APHA6O_cjs.isRecord(definition)) {
680
682
  return {
681
683
  valid: false,
682
684
  errors: [{ code: "definition.required", message: "A workflow definition must be an object" }],
@@ -684,7 +686,7 @@ function validate(definition, options = {}) {
684
686
  taskQueues: []
685
687
  };
686
688
  }
687
- const data = chunkLRM6JXJA_cjs.isRecord(definition["data"]) ? definition["data"] : void 0;
689
+ const data = chunkE3APHA6O_cjs.isRecord(definition["data"]) ? definition["data"] : void 0;
688
690
  if (!data)
689
691
  fail({ code: "definition.dataRequired", message: "The definition needs a data object" });
690
692
  const rawNodes = data?.["nodes"];
@@ -714,8 +716,8 @@ function validate(definition, options = {}) {
714
716
  else warnOrFail(issue);
715
717
  }
716
718
  }
717
- const nodes = rawNodes.map((node) => chunkLRM6JXJA_cjs.isRecord(node) ? node : {});
718
- const edges = rawEdges.map((edge) => chunkLRM6JXJA_cjs.isRecord(edge) ? edge : {});
719
+ const nodes = rawNodes.map((node) => chunkE3APHA6O_cjs.isRecord(node) ? node : {});
720
+ const edges = rawEdges.map((edge) => chunkE3APHA6O_cjs.isRecord(edge) ? edge : {});
719
721
  if (nodes.length === 0 && !options.allowEmpty)
720
722
  fail({ code: "node.atLeastOne", message: "Add at least one node" });
721
723
  const ids = /* @__PURE__ */ new Set();
@@ -762,10 +764,10 @@ function validate(definition, options = {}) {
762
764
  pairs.add(pair);
763
765
  if (target) incoming.set(target, (incoming.get(target) ?? 0) + 1);
764
766
  });
765
- const code = chunkLRM6JXJA_cjs.isRecord(definition["code"]) ? definition["code"] : void 0;
766
- const exportsBlock = chunkLRM6JXJA_cjs.isRecord(code?.["exports"]) ? code["exports"] : void 0;
767
- const workflowExports = chunkLRM6JXJA_cjs.isRecord(exportsBlock?.["workflows"]) ? exportsBlock["workflows"] : {};
768
- const activityExports = chunkLRM6JXJA_cjs.isRecord(exportsBlock?.["activities"]) ? exportsBlock["activities"] : {};
767
+ const code = chunkE3APHA6O_cjs.isRecord(definition["code"]) ? definition["code"] : void 0;
768
+ const exportsBlock = chunkE3APHA6O_cjs.isRecord(code?.["exports"]) ? code["exports"] : void 0;
769
+ const workflowExports = chunkE3APHA6O_cjs.isRecord(exportsBlock?.["workflows"]) ? exportsBlock["workflows"] : {};
770
+ const activityExports = chunkE3APHA6O_cjs.isRecord(exportsBlock?.["activities"]) ? exportsBlock["activities"] : {};
769
771
  if (code?.["determinism"] === "isolate" && Object.keys(activityExports).length > 0) {
770
772
  fail({
771
773
  code: "code.isolateActivities",
@@ -777,13 +779,13 @@ function validate(definition, options = {}) {
777
779
  ...Object.entries(workflowExports),
778
780
  ...Object.entries(activityExports)
779
781
  ]) {
780
- if (chunkLRM6JXJA_cjs.isRecord(exported) && typeof exported["taskQueue"] === "string")
782
+ if (chunkE3APHA6O_cjs.isRecord(exported) && typeof exported["taskQueue"] === "string")
781
783
  taskQueues.add(exported["taskQueue"]);
782
- if (chunkLRM6JXJA_cjs.isRecord(exported) && chunkLRM6JXJA_cjs.isRecord(exported["interface"])) {
784
+ if (chunkE3APHA6O_cjs.isRecord(exported) && chunkE3APHA6O_cjs.isRecord(exported["interface"])) {
783
785
  checkInterface(exported["interface"], `code.exports.*.${name}.interface`, fail);
784
786
  }
785
787
  }
786
- if (chunkLRM6JXJA_cjs.isRecord(definition["interface"])) checkInterface(definition["interface"], "interface", fail);
788
+ if (chunkE3APHA6O_cjs.isRecord(definition["interface"])) checkInterface(definition["interface"], "interface", fail);
787
789
  for (const block of ["code", "interface"]) {
788
790
  const found = [];
789
791
  findSecretKeys(definition[block], block, void 0, found);
@@ -799,9 +801,9 @@ function validate(definition, options = {}) {
799
801
  const id = typeof node["id"] === "string" ? node["id"] : void 0;
800
802
  const at = id ? { nodeId: id } : {};
801
803
  const type = typeof node["type"] === "string" ? node["type"] : "";
802
- const args = chunkLRM6JXJA_cjs.isRecord(node["args"]) ? node["args"] : void 0;
803
- const state = chunkLRM6JXJA_cjs.isRecord(args?.["state"]) ? args["state"] : void 0;
804
- if (type === chunkAU3YW7FZ_cjs.CODE_WORKFLOW_NODE_TYPE) {
804
+ const args = chunkE3APHA6O_cjs.isRecord(node["args"]) ? node["args"] : void 0;
805
+ const state = chunkE3APHA6O_cjs.isRecord(args?.["state"]) ? args["state"] : void 0;
806
+ if (type === chunk7YR7DI7B_cjs.CODE_WORKFLOW_NODE_TYPE) {
805
807
  const workflowFn = state?.["workflowFn"];
806
808
  if (!code) {
807
809
  fail({
@@ -819,7 +821,7 @@ function validate(definition, options = {}) {
819
821
  }
820
822
  if (typeof state?.["taskQueue"] === "string") taskQueues.add(state["taskQueue"]);
821
823
  }
822
- const isTrigger = chunkAU3YW7FZ_cjs.INTERNAL_TRIGGER_TYPES.has(type) || id !== void 0 && (incoming.get(id) ?? 0) === 0;
824
+ const isTrigger = chunk7YR7DI7B_cjs.INTERNAL_TRIGGER_TYPES.has(type) || id !== void 0 && (incoming.get(id) ?? 0) === 0;
823
825
  if (isTrigger && state?.["startDelay"] !== void 0) {
824
826
  const delay = durationMs(state["startDelay"], "s");
825
827
  if (delay === void 0) {
@@ -869,8 +871,8 @@ function validate(definition, options = {}) {
869
871
  });
870
872
  }
871
873
  const templates = [];
872
- const args2 = chunkLRM6JXJA_cjs.isRecord(node["args"]) ? node["args"] : void 0;
873
- const scanned = type === "internal:code" && args2 && chunkLRM6JXJA_cjs.isRecord(args2["state"]) ? {
874
+ const args2 = chunkE3APHA6O_cjs.isRecord(node["args"]) ? node["args"] : void 0;
875
+ const scanned = type === "internal:code" && args2 && chunkE3APHA6O_cjs.isRecord(args2["state"]) ? {
874
876
  ...args2,
875
877
  state: Object.fromEntries(
876
878
  Object.entries(args2["state"]).filter(([key]) => key !== "code")
@@ -902,7 +904,7 @@ function validate(definition, options = {}) {
902
904
  }
903
905
  });
904
906
  }
905
- const config = chunkLRM6JXJA_cjs.isRecord(definition["config"]) ? definition["config"] : void 0;
907
+ const config = chunkE3APHA6O_cjs.isRecord(definition["config"]) ? definition["config"] : void 0;
906
908
  if (config) {
907
909
  const timeout = config["timeout"] === void 0 ? void 0 : durationMs(config["timeout"], "s");
908
910
  for (const key of ["executionTimeout", "workflowTaskTimeout"]) {
@@ -949,9 +951,9 @@ function checkInterface(block, path, fail) {
949
951
  if (block["input"] !== void 0) schemas.push([`${path}.input`, block["input"]]);
950
952
  if (block["output"] !== void 0) schemas.push([`${path}.output`, block["output"]]);
951
953
  for (const group of ["signals", "queries", "updates"]) {
952
- const members = chunkLRM6JXJA_cjs.isRecord(block[group]) ? block[group] : {};
954
+ const members = chunkE3APHA6O_cjs.isRecord(block[group]) ? block[group] : {};
953
955
  for (const [name, member] of Object.entries(members)) {
954
- if (!chunkLRM6JXJA_cjs.isRecord(member)) continue;
956
+ if (!chunkE3APHA6O_cjs.isRecord(member)) continue;
955
957
  for (const part of ["payload", "args", "result"]) {
956
958
  if (member[part] !== void 0)
957
959
  schemas.push([`${path}.${group}.${name}.${part}`, member[part]]);
@@ -971,15 +973,15 @@ function checkInterface(block, path, fail) {
971
973
  function shadowedInputs(nodes) {
972
974
  const warnings = [];
973
975
  for (const node of nodes) {
974
- const data = chunkLRM6JXJA_cjs.isRecord(node["data"]) ? node["data"] : void 0;
975
- const declared = chunkLRM6JXJA_cjs.isRecord(data?.["inputs"]) ? data["inputs"] : void 0;
976
+ const data = chunkE3APHA6O_cjs.isRecord(node["data"]) ? node["data"] : void 0;
977
+ const declared = chunkE3APHA6O_cjs.isRecord(data?.["inputs"]) ? data["inputs"] : void 0;
976
978
  if (!declared) continue;
977
- const dataArgs = chunkLRM6JXJA_cjs.isRecord(data?.["args"]) ? data["args"] : void 0;
978
- const args = chunkLRM6JXJA_cjs.isRecord(node["args"]) ? node["args"] : void 0;
979
+ const dataArgs = chunkE3APHA6O_cjs.isRecord(data?.["args"]) ? data["args"] : void 0;
980
+ const args = chunkE3APHA6O_cjs.isRecord(node["args"]) ? node["args"] : void 0;
979
981
  const staticParams = {
980
- ...chunkLRM6JXJA_cjs.isRecord(node["config"]) ? node["config"] : {},
981
- ...chunkLRM6JXJA_cjs.isRecord(dataArgs?.["state"]) ? dataArgs["state"] : {},
982
- ...chunkLRM6JXJA_cjs.isRecord(args?.["state"]) ? args["state"] : {}
982
+ ...chunkE3APHA6O_cjs.isRecord(node["config"]) ? node["config"] : {},
983
+ ...chunkE3APHA6O_cjs.isRecord(dataArgs?.["state"]) ? dataArgs["state"] : {},
984
+ ...chunkE3APHA6O_cjs.isRecord(args?.["state"]) ? args["state"] : {}
983
985
  };
984
986
  for (const key of Object.keys(declared)) {
985
987
  if (!Object.hasOwn(staticParams, key)) continue;
@@ -997,26 +999,26 @@ function shadowedInputs(nodes) {
997
999
  var WORKFLOW_DOCUMENT_FORMAT = "fluidgrids.workflow";
998
1000
  var V2_CONFIG_KEYS = ["executionTimeout", "workflowTaskTimeout", "versioningBehavior"];
999
1001
  function isV2Definition(definition) {
1000
- if (!chunkLRM6JXJA_cjs.isRecord(definition)) return false;
1002
+ if (!chunkE3APHA6O_cjs.isRecord(definition)) return false;
1001
1003
  if (definition["schemaVersion"] === 2) return true;
1002
1004
  for (const key of ["interface", "code", "authoring"]) {
1003
1005
  if (definition[key] !== void 0) return true;
1004
1006
  }
1005
1007
  const meta = definition["meta"];
1006
- if (chunkLRM6JXJA_cjs.isRecord(meta) && meta["layout"] !== void 0) return true;
1008
+ if (chunkE3APHA6O_cjs.isRecord(meta) && meta["layout"] !== void 0) return true;
1007
1009
  const config = definition["config"];
1008
- if (chunkLRM6JXJA_cjs.isRecord(config) && V2_CONFIG_KEYS.some((key) => config[key] !== void 0)) return true;
1010
+ if (chunkE3APHA6O_cjs.isRecord(config) && V2_CONFIG_KEYS.some((key) => config[key] !== void 0)) return true;
1009
1011
  const data = definition["data"];
1010
- const nodes = chunkLRM6JXJA_cjs.isRecord(data) && Array.isArray(data["nodes"]) ? data["nodes"] : [];
1012
+ const nodes = chunkE3APHA6O_cjs.isRecord(data) && Array.isArray(data["nodes"]) ? data["nodes"] : [];
1011
1013
  return nodes.some(
1012
- (node) => chunkLRM6JXJA_cjs.isRecord(node) && typeof node["type"] === "string" && chunkAU3YW7FZ_cjs.V2_NODE_TYPES.has(node["type"])
1014
+ (node) => chunkE3APHA6O_cjs.isRecord(node) && typeof node["type"] === "string" && chunk7YR7DI7B_cjs.V2_NODE_TYPES.has(node["type"])
1013
1015
  );
1014
1016
  }
1015
1017
  function envelopeSchemaVersion(definition) {
1016
1018
  return isV2Definition(definition) ? 2 : 1;
1017
1019
  }
1018
1020
  function exportDefinition(definition) {
1019
- return isV2Definition(definition) ? chunkAU3YW7FZ_cjs.normalizeDefinition(definition) : definition;
1021
+ return isV2Definition(definition) ? chunk7YR7DI7B_cjs.normalizeDefinition(definition) : definition;
1020
1022
  }
1021
1023
  function buildExportDocument(input) {
1022
1024
  return {
@@ -1041,10 +1043,10 @@ function serializeWorkflowDocument(document, versionCreatedAt) {
1041
1043
  `;
1042
1044
  }
1043
1045
  function readWorkflowDocument(value) {
1044
- if (!chunkLRM6JXJA_cjs.isRecord(value)) return null;
1046
+ if (!chunkE3APHA6O_cjs.isRecord(value)) return null;
1045
1047
  if (value["format"] === WORKFLOW_DOCUMENT_FORMAT || "definitionJson" in value) {
1046
1048
  const definitionJson = value["definitionJson"];
1047
- if (!chunkLRM6JXJA_cjs.isRecord(definitionJson)) return null;
1049
+ if (!chunkE3APHA6O_cjs.isRecord(definitionJson)) return null;
1048
1050
  const schemaVersion = value["schemaVersion"];
1049
1051
  return {
1050
1052
  definitionJson,
@@ -1075,7 +1077,7 @@ function workflowInputsSchema(workflowInputs) {
1075
1077
  const name = (rawName ?? "").trim();
1076
1078
  if (!name) continue;
1077
1079
  const type = (rawType ?? "").trim().toLowerCase();
1078
- properties[name] = FIELD_TYPES.has(type) ? { type } : {};
1080
+ chunkE3APHA6O_cjs.setOwn(properties, name, FIELD_TYPES.has(type) ? { type } : {});
1079
1081
  required.push(name);
1080
1082
  }
1081
1083
  return {
@@ -1086,15 +1088,15 @@ function workflowInputsSchema(workflowInputs) {
1086
1088
  };
1087
1089
  }
1088
1090
  function deriveInterface(definition, options = {}) {
1089
- if (!chunkLRM6JXJA_cjs.isRecord(definition)) return {};
1090
- if (chunkLRM6JXJA_cjs.isRecord(definition["interface"])) return definition["interface"];
1091
- const data = chunkLRM6JXJA_cjs.isRecord(definition["data"]) ? definition["data"] : {};
1092
- const nodes = Array.isArray(data["nodes"]) ? data["nodes"].filter(chunkLRM6JXJA_cjs.isRecord) : [];
1093
- const edges = Array.isArray(data["edges"]) ? data["edges"].filter(chunkLRM6JXJA_cjs.isRecord) : [];
1091
+ if (!chunkE3APHA6O_cjs.isRecord(definition)) return {};
1092
+ if (chunkE3APHA6O_cjs.isRecord(definition["interface"])) return definition["interface"];
1093
+ const data = chunkE3APHA6O_cjs.isRecord(definition["data"]) ? definition["data"] : {};
1094
+ const nodes = Array.isArray(data["nodes"]) ? data["nodes"].filter(chunkE3APHA6O_cjs.isRecord) : [];
1095
+ const edges = Array.isArray(data["edges"]) ? data["edges"].filter(chunkE3APHA6O_cjs.isRecord) : [];
1094
1096
  const derived = {};
1095
1097
  const call = nodes.find((node) => node["type"] === "internal:workflow-call");
1096
- const callArgs = chunkLRM6JXJA_cjs.isRecord(call?.["args"]) ? call["args"] : void 0;
1097
- const callState = chunkLRM6JXJA_cjs.isRecord(callArgs?.["state"]) ? callArgs["state"] : void 0;
1098
+ const callArgs = chunkE3APHA6O_cjs.isRecord(call?.["args"]) ? call["args"] : void 0;
1099
+ const callState = chunkE3APHA6O_cjs.isRecord(callArgs?.["state"]) ? callArgs["state"] : void 0;
1098
1100
  if (callState?.["inputSource"] === "fields" && typeof callState["workflowInputs"] === "string") {
1099
1101
  derived.input = workflowInputsSchema(callState["workflowInputs"]);
1100
1102
  }
@@ -1102,14 +1104,14 @@ function deriveInterface(definition, options = {}) {
1102
1104
  const terminals = nodes.filter((node) => !sources.has(node["id"]));
1103
1105
  const terminal = terminals.length === 1 ? terminals[0] : void 0;
1104
1106
  if (terminal && options.manifests && typeof terminal["type"] === "string") {
1105
- const manifest = chunkLSKSBVL4_cjs.findManifest(options.manifests, terminal["type"]);
1107
+ const manifest = chunkOSPTJCDI_cjs.findManifest(options.manifests, terminal["type"]);
1106
1108
  const operationName = typeof terminal["operation_name"] === "string" ? terminal["operation_name"] : void 0;
1107
- const operations = manifest ? chunkLSKSBVL4_cjs.operationsOf(manifest) : [];
1109
+ const operations = manifest ? chunkOSPTJCDI_cjs.operationsOf(manifest) : [];
1108
1110
  const operation = operationName ? operations.find((candidate) => candidate.name === operationName) : operations[0];
1109
1111
  if (operation?.output_fields) {
1110
1112
  derived.output = {
1111
1113
  $schema: "https://json-schema.org/draft/2020-12/schema",
1112
- ...chunkLSKSBVL4_cjs.fieldsSchema(operation.output_fields)
1114
+ ...chunkOSPTJCDI_cjs.fieldsSchema(operation.output_fields)
1113
1115
  };
1114
1116
  }
1115
1117
  }
@@ -1118,63 +1120,63 @@ function deriveInterface(definition, options = {}) {
1118
1120
 
1119
1121
  Object.defineProperty(exports, "diffDefinitions", {
1120
1122
  enumerable: true,
1121
- get: function () { return chunkBYJ7QTLY_cjs.diffDefinitions; }
1123
+ get: function () { return chunkTWOYB4Y7_cjs.diffDefinitions; }
1122
1124
  });
1123
1125
  Object.defineProperty(exports, "fieldSchema", {
1124
1126
  enumerable: true,
1125
- get: function () { return chunkLSKSBVL4_cjs.fieldSchema; }
1127
+ get: function () { return chunkOSPTJCDI_cjs.fieldSchema; }
1126
1128
  });
1127
1129
  Object.defineProperty(exports, "fieldsSchema", {
1128
1130
  enumerable: true,
1129
- get: function () { return chunkLSKSBVL4_cjs.fieldsSchema; }
1131
+ get: function () { return chunkOSPTJCDI_cjs.fieldsSchema; }
1130
1132
  });
1131
1133
  Object.defineProperty(exports, "findManifest", {
1132
1134
  enumerable: true,
1133
- get: function () { return chunkLSKSBVL4_cjs.findManifest; }
1135
+ get: function () { return chunkOSPTJCDI_cjs.findManifest; }
1134
1136
  });
1135
1137
  Object.defineProperty(exports, "isTriggerOperation", {
1136
1138
  enumerable: true,
1137
- get: function () { return chunkLSKSBVL4_cjs.isTriggerOperation; }
1139
+ get: function () { return chunkOSPTJCDI_cjs.isTriggerOperation; }
1138
1140
  });
1139
1141
  Object.defineProperty(exports, "operationsOf", {
1140
1142
  enumerable: true,
1141
- get: function () { return chunkLSKSBVL4_cjs.operationsOf; }
1143
+ get: function () { return chunkOSPTJCDI_cjs.operationsOf; }
1142
1144
  });
1143
1145
  Object.defineProperty(exports, "CODE_WORKFLOW_NODE_TYPE", {
1144
1146
  enumerable: true,
1145
- get: function () { return chunkAU3YW7FZ_cjs.CODE_WORKFLOW_NODE_TYPE; }
1147
+ get: function () { return chunk7YR7DI7B_cjs.CODE_WORKFLOW_NODE_TYPE; }
1146
1148
  });
1147
1149
  Object.defineProperty(exports, "INTERNAL_TRIGGER_TYPES", {
1148
1150
  enumerable: true,
1149
- get: function () { return chunkAU3YW7FZ_cjs.INTERNAL_TRIGGER_TYPES; }
1151
+ get: function () { return chunk7YR7DI7B_cjs.INTERNAL_TRIGGER_TYPES; }
1150
1152
  });
1151
1153
  Object.defineProperty(exports, "WAIT_FOR_SIGNAL_NODE_TYPE", {
1152
1154
  enumerable: true,
1153
- get: function () { return chunkAU3YW7FZ_cjs.WAIT_FOR_SIGNAL_NODE_TYPE; }
1155
+ get: function () { return chunk7YR7DI7B_cjs.WAIT_FOR_SIGNAL_NODE_TYPE; }
1154
1156
  });
1155
1157
  Object.defineProperty(exports, "buildIdOf", {
1156
1158
  enumerable: true,
1157
- get: function () { return chunkAU3YW7FZ_cjs.buildIdOf; }
1159
+ get: function () { return chunk7YR7DI7B_cjs.buildIdOf; }
1158
1160
  });
1159
1161
  Object.defineProperty(exports, "hashedProjection", {
1160
1162
  enumerable: true,
1161
- get: function () { return chunkAU3YW7FZ_cjs.hashedProjection; }
1163
+ get: function () { return chunk7YR7DI7B_cjs.hashedProjection; }
1162
1164
  });
1163
1165
  Object.defineProperty(exports, "irHash", {
1164
1166
  enumerable: true,
1165
- get: function () { return chunkAU3YW7FZ_cjs.irHash; }
1167
+ get: function () { return chunk7YR7DI7B_cjs.irHash; }
1166
1168
  });
1167
1169
  Object.defineProperty(exports, "normalizeDefinition", {
1168
1170
  enumerable: true,
1169
- get: function () { return chunkAU3YW7FZ_cjs.normalizeDefinition; }
1171
+ get: function () { return chunk7YR7DI7B_cjs.normalizeDefinition; }
1170
1172
  });
1171
1173
  Object.defineProperty(exports, "sourceHash", {
1172
1174
  enumerable: true,
1173
- get: function () { return chunkAU3YW7FZ_cjs.sourceHash; }
1175
+ get: function () { return chunk7YR7DI7B_cjs.sourceHash; }
1174
1176
  });
1175
1177
  Object.defineProperty(exports, "usesMergedParameters", {
1176
1178
  enumerable: true,
1177
- get: function () { return chunkAU3YW7FZ_cjs.usesMergedParameters; }
1179
+ get: function () { return chunk7YR7DI7B_cjs.usesMergedParameters; }
1178
1180
  });
1179
1181
  Object.defineProperty(exports, "LAYOUT_COLUMN_WIDTH", {
1180
1182
  enumerable: true,
@@ -1190,39 +1192,39 @@ Object.defineProperty(exports, "autoLayout", {
1190
1192
  });
1191
1193
  Object.defineProperty(exports, "CanonicalJsonError", {
1192
1194
  enumerable: true,
1193
- get: function () { return chunk27HASETB_cjs.CanonicalJsonError; }
1195
+ get: function () { return chunkCSYBNN3V_cjs.CanonicalJsonError; }
1194
1196
  });
1195
1197
  Object.defineProperty(exports, "canonicalJson", {
1196
1198
  enumerable: true,
1197
- get: function () { return chunk27HASETB_cjs.canonicalJson; }
1199
+ get: function () { return chunkCSYBNN3V_cjs.canonicalJson; }
1198
1200
  });
1199
1201
  Object.defineProperty(exports, "sha256Hex", {
1200
1202
  enumerable: true,
1201
- get: function () { return chunk27HASETB_cjs.sha256Hex; }
1203
+ get: function () { return chunkCSYBNN3V_cjs.sha256Hex; }
1202
1204
  });
1203
1205
  Object.defineProperty(exports, "sha256Tagged", {
1204
1206
  enumerable: true,
1205
- get: function () { return chunk27HASETB_cjs.sha256Tagged; }
1207
+ get: function () { return chunkCSYBNN3V_cjs.sha256Tagged; }
1206
1208
  });
1207
1209
  Object.defineProperty(exports, "stableStringify", {
1208
1210
  enumerable: true,
1209
- get: function () { return chunk27HASETB_cjs.stableStringify; }
1211
+ get: function () { return chunkCSYBNN3V_cjs.stableStringify; }
1210
1212
  });
1211
1213
  Object.defineProperty(exports, "formatRefExpression", {
1212
1214
  enumerable: true,
1213
- get: function () { return chunkLRM6JXJA_cjs.formatRefExpression; }
1215
+ get: function () { return chunkE3APHA6O_cjs.formatRefExpression; }
1214
1216
  });
1215
1217
  Object.defineProperty(exports, "formatRefTemplate", {
1216
1218
  enumerable: true,
1217
- get: function () { return chunkLRM6JXJA_cjs.formatRefTemplate; }
1219
+ get: function () { return chunkE3APHA6O_cjs.formatRefTemplate; }
1218
1220
  });
1219
1221
  Object.defineProperty(exports, "parseRefExpression", {
1220
1222
  enumerable: true,
1221
- get: function () { return chunkLRM6JXJA_cjs.parseRefExpression; }
1223
+ get: function () { return chunkE3APHA6O_cjs.parseRefExpression; }
1222
1224
  });
1223
1225
  Object.defineProperty(exports, "parseTemplate", {
1224
1226
  enumerable: true,
1225
- get: function () { return chunkLRM6JXJA_cjs.parseTemplate; }
1227
+ get: function () { return chunkE3APHA6O_cjs.parseTemplate; }
1226
1228
  });
1227
1229
  exports.IR_V2_SCHEMA = IR_V2_SCHEMA;
1228
1230
  exports.IR_V2_SCHEMA_ID = IR_V2_SCHEMA_ID;
@@ -610,6 +610,24 @@ interface ExecutorNodeView {
610
610
  disabled: boolean;
611
611
  nodeDataNodeType: unknown;
612
612
  argsContextNodeType: unknown;
613
+ /**
614
+ * `data.operation_name` as the run-context node data carries it
615
+ * (`workflow-executor.service.ts:1823`).
616
+ */
617
+ dataOperationName: unknown;
618
+ /** The node-state row version: `data.version || '1.0.0'` (`:3955`, `:4205`, `:4292`). */
619
+ nodeStateVersion: unknown;
620
+ /**
621
+ * The state an adapter or tool sub-node sees: `args.state || data.args.state || {}`
622
+ * (`:5539`, `:6486`). Sub-nodes resolve a registered store endpoint, so this is
623
+ * `undefined` for internal node types.
624
+ */
625
+ subNodeState: unknown;
626
+ /**
627
+ * The operation a tool sub-node binds: `state.operation || data.operation_name`
628
+ * (`buildToolConfigLocally`, `:6491`). `undefined` for internal node types.
629
+ */
630
+ toolOperation: unknown;
613
631
  }
614
632
  /** The executor-visible values of one node. */
615
633
  declare function executorNodeView(node: unknown): ExecutorNodeView;
@@ -645,14 +663,6 @@ declare function isValidJsonSchema(schema: unknown): boolean;
645
663
  /** Validate a workflow definition. */
646
664
  declare function validate(definition: unknown, options?: ValidateOptions): ValidationResult;
647
665
 
648
- /**
649
- * Canonical JSON (RFC 8785, JSON Canonicalization Scheme).
650
- *
651
- * Object keys are sorted by UTF-16 code units, numbers use the ECMAScript
652
- * shortest round-trip form, strings use the ECMAScript escaping, and there is
653
- * no insignificant whitespace. The Python SDK implements the same scheme, so a
654
- * graph lowered by either SDK hashes to the same `irHash`.
655
- */
656
666
  declare class CanonicalJsonError extends Error {
657
667
  constructor(message: string);
658
668
  }
@@ -610,6 +610,24 @@ interface ExecutorNodeView {
610
610
  disabled: boolean;
611
611
  nodeDataNodeType: unknown;
612
612
  argsContextNodeType: unknown;
613
+ /**
614
+ * `data.operation_name` as the run-context node data carries it
615
+ * (`workflow-executor.service.ts:1823`).
616
+ */
617
+ dataOperationName: unknown;
618
+ /** The node-state row version: `data.version || '1.0.0'` (`:3955`, `:4205`, `:4292`). */
619
+ nodeStateVersion: unknown;
620
+ /**
621
+ * The state an adapter or tool sub-node sees: `args.state || data.args.state || {}`
622
+ * (`:5539`, `:6486`). Sub-nodes resolve a registered store endpoint, so this is
623
+ * `undefined` for internal node types.
624
+ */
625
+ subNodeState: unknown;
626
+ /**
627
+ * The operation a tool sub-node binds: `state.operation || data.operation_name`
628
+ * (`buildToolConfigLocally`, `:6491`). `undefined` for internal node types.
629
+ */
630
+ toolOperation: unknown;
613
631
  }
614
632
  /** The executor-visible values of one node. */
615
633
  declare function executorNodeView(node: unknown): ExecutorNodeView;
@@ -645,14 +663,6 @@ declare function isValidJsonSchema(schema: unknown): boolean;
645
663
  /** Validate a workflow definition. */
646
664
  declare function validate(definition: unknown, options?: ValidateOptions): ValidationResult;
647
665
 
648
- /**
649
- * Canonical JSON (RFC 8785, JSON Canonicalization Scheme).
650
- *
651
- * Object keys are sorted by UTF-16 code units, numbers use the ECMAScript
652
- * shortest round-trip form, strings use the ECMAScript escaping, and there is
653
- * no insignificant whitespace. The Python SDK implements the same scheme, so a
654
- * graph lowered by either SDK hashes to the same `irHash`.
655
- */
656
666
  declare class CanonicalJsonError extends Error {
657
667
  constructor(message: string);
658
668
  }